diff --git a/ui-vue3/package.json b/ui-vue3/package.json
index 541c37655..2a3778d41 100644
--- a/ui-vue3/package.json
+++ b/ui-vue3/package.json
@@ -30,6 +30,7 @@
"mockjs": "^1.1.0",
"nprogress": "^0.2.0",
"pinia": "^2.1.7",
+ "pinyin-pro": "^3.19.3",
"ts-node": "^10.9.2",
"tslib": "^2.6.2",
"vue": "^3.3.10",
diff --git a/ui-vue3/src/App.vue b/ui-vue3/src/App.vue
index 5b0f5c3cb..2b0326426 100644
--- a/ui-vue3/src/App.vue
+++ b/ui-vue3/src/App.vue
@@ -19,13 +19,13 @@
import { RouterView } from 'vue-router'
import enUS from 'ant-design-vue/es/locale/en_US'
import zhCN from 'ant-design-vue/es/locale/zh_CN'
-import { provide, reactive, ref, watch } from 'vue'
+import { computed, provide, reactive, ref, watch } from 'vue'
import dayjs from 'dayjs'
import { QuestionCircleOutlined } from '@ant-design/icons-vue'
import { notification } from 'ant-design-vue'
import { PROVIDE_INJECT_KEY } from '@/base/enums/ProvideInject'
import { PRIMARY_COLOR } from '@/base/constants'
-import { localeConfig } from '@/base/i18n'
+import { changeLanguage, i18n, localeConfig } from '@/base/i18n'
import devTool from '@/utils/DevToolUtil'
dayjs.locale('en')
@@ -44,11 +44,13 @@ provide(PROVIDE_INJECT_KEY.LOCALE, i18nConfig)
function globalQuestion() {
devTool.todo('show Q&A tips')
}
+
+const localeGlobal = reactive(i18n.global.locale)
{
+ let total = Mock.mock('@integer(8, 1000)')
+ let list = []
+ for (let i = 0; i < total; i++) {
+ list.push({
+ appName: 'app_' + Mock.mock('@string(2,10)'),
+ instanceNum: Mock.mock('@integer(80, 200)'),
+ deployCluster: 'cluster_' + Mock.mock('@string(5)'),
+ 'registerClusters|1-3': ['cluster_' + Mock.mock('@string(5)')]
+ })
+ }
+ return {
+ code: 200,
+ message: 'success',
+ data: Mock.mock({
+ total: total,
+ curPage: 1,
+ pageSize: 10,
+ data: list
+ })
+ }
+})
diff --git a/ui-vue3/src/api/service/app.ts b/ui-vue3/src/api/service/app.ts
new file mode 100644
index 000000000..079f0e5ff
--- /dev/null
+++ b/ui-vue3/src/api/service/app.ts
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import request from '@/base/http/request'
+
+export const searchApplications = (params: any): Promise => {
+ return request({
+ url: '/application/search',
+ method: 'get',
+ params
+ })
+}
diff --git a/ui-vue3/src/base/enums/ProvideInject.ts b/ui-vue3/src/base/enums/ProvideInject.ts
index b737f6736..af7ee195a 100644
--- a/ui-vue3/src/base/enums/ProvideInject.ts
+++ b/ui-vue3/src/base/enums/ProvideInject.ts
@@ -19,5 +19,6 @@ const KEY_PREFIX = '__PROVIDE_INJECT_KEY_'
export const PROVIDE_INJECT_KEY = {
LOCALE: KEY_PREFIX + 'LOCALE',
+ SEARCH_DOMAIN: KEY_PREFIX + 'SEARCH_DOMAIN',
COLLAPSED: KEY_PREFIX + 'COLLAPSED'
}
diff --git a/ui-vue3/src/base/i18n/en.ts b/ui-vue3/src/base/i18n/en.ts
index 0d2248081..516882b47 100644
--- a/ui-vue3/src/base/i18n/en.ts
+++ b/ui-vue3/src/base/i18n/en.ts
@@ -262,7 +262,15 @@ const words: I18nType = {
serviceManagement: 'Dev & Test',
resources: 'Resources',
applications: 'Applications',
- instances: 'Instances'
+ instances: 'Instances',
+ applicationDomain: {
+ name: 'Application Name',
+ detail: 'Application Detail'
+ },
+ searchDomain: {
+ total: 'Total',
+ unit: 'items'
+ }
}
export default words
diff --git a/ui-vue3/src/base/i18n/index.ts b/ui-vue3/src/base/i18n/index.ts
index 1d94ba07b..66fb5efd8 100644
--- a/ui-vue3/src/base/i18n/index.ts
+++ b/ui-vue3/src/base/i18n/index.ts
@@ -18,8 +18,9 @@
import { createI18n } from 'vue-i18n'
import { LOCAL_STORAGE_LOCALE } from '@/base/constants'
import { messages } from '@/base/i18n/messages'
+import { reactive } from 'vue'
-export const localeConfig = {
+export const localeConfig = reactive({
// todo use system's locale
locale: localStorage.getItem(LOCAL_STORAGE_LOCALE) || 'cn',
opts: [
@@ -32,9 +33,9 @@ export const localeConfig = {
title: '中文'
}
]
-}
+})
-export const i18n = createI18n({
+export const i18n: any = createI18n({
locale: localeConfig.locale,
legacy: false,
globalInjection: true,
diff --git a/ui-vue3/src/base/i18n/zh.ts b/ui-vue3/src/base/i18n/zh.ts
index 5754e7bfa..4883f4047 100644
--- a/ui-vue3/src/base/i18n/zh.ts
+++ b/ui-vue3/src/base/i18n/zh.ts
@@ -260,7 +260,15 @@ const words: I18nType = {
versionInputPrompt: '请输入服务version(可选)',
resources: '资源详情',
applications: '应用',
- instances: '实例'
+ instances: '实例',
+ applicationDomain: {
+ name: '应用名',
+ detail: '应用详情'
+ },
+ searchDomain: {
+ total: '共计',
+ unit: '条'
+ }
}
export default words
diff --git a/ui-vue3/src/components/SearchTable.vue b/ui-vue3/src/components/SearchTable.vue
new file mode 100644
index 000000000..07a4ef787
--- /dev/null
+++ b/ui-vue3/src/components/SearchTable.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ index + 1 }}
+
+
+
+
+
+
+
+
+
+
diff --git a/ui-vue3/src/layout/breadcrumb/layout_bread.vue b/ui-vue3/src/layout/breadcrumb/layout_bread.vue
index d9dc64712..691b5c001 100644
--- a/ui-vue3/src/layout/breadcrumb/layout_bread.vue
+++ b/ui-vue3/src/layout/breadcrumb/layout_bread.vue
@@ -18,7 +18,7 @@
{{ $t(r.name) }}
- {{ pathId }}
+ {{ pathId }}
diff --git a/ui-vue3/src/layout/index.vue b/ui-vue3/src/layout/index.vue
index 523e0bf78..33593e034 100644
--- a/ui-vue3/src/layout/index.vue
+++ b/ui-vue3/src/layout/index.vue
@@ -16,7 +16,7 @@
-->
-
+
-
+
@@ -93,6 +91,13 @@ router.beforeEach((to, from, next) => {
margin-right: 5px;
}
}
+ .layout-content {
+ margin: 16px;
+ padding: 16px;
+ background: #fff;
+ overflow: auto;
+ max-height: 80vh;
+ }
}
+
diff --git a/ui-vue3/yarn.lock b/ui-vue3/yarn.lock
index 9cc6265b8..fbecaf69a 100644
--- a/ui-vue3/yarn.lock
+++ b/ui-vue3/yarn.lock
@@ -4480,6 +4480,11 @@ pinia@^2.1.7:
"@vue/devtools-api" "^6.5.0"
vue-demi ">=0.14.5"
+pinyin-pro@^3.19.3:
+ version "3.19.3"
+ resolved "https://registry.npmmirror.com/pinyin-pro/-/pinyin-pro-3.19.3.tgz#804ee7bf2266a927194a87764b4c3a2be06ddedc"
+ integrity sha512-tIBL4ibq3P+MFbSwOTTi42Xf6jau726swgKqEmSkkiZiE1iUMhQdguR9aavLt9nqnRDpcBSIanNV8tPuKPSmvw==
+
pkg-types@^1.0.3:
version "1.0.3"
resolved "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868"