From ef433f446de6f3ec19b524dda5a103ea9a406d8b Mon Sep 17 00:00:00 2001 From: Sakura-RanChen <1908198662@qq.com> Date: Wed, 14 May 2025 14:43:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BE=9B=E5=BA=94=E5=99=A8?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=A0=B7=E5=BC=8F=E5=92=8C=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/manager-web/src/components/HeaderBar.vue | 57 +- .../src/components/ProviderDialog.vue | 418 ++++++++ main/manager-web/src/components/TtsModel.vue | 14 + main/manager-web/src/router/index.js | 9 +- .../src/views/ProviderManagement.vue | 936 ++++++++++++++++++ 5 files changed, 1421 insertions(+), 13 deletions(-) create mode 100644 main/manager-web/src/components/ProviderDialog.vue create mode 100644 main/manager-web/src/views/ProviderManagement.vue diff --git a/main/manager-web/src/components/HeaderBar.vue b/main/manager-web/src/components/HeaderBar.vue index 3d6a62f0..39075462 100644 --- a/main/manager-web/src/components/HeaderBar.vue +++ b/main/manager-web/src/components/HeaderBar.vue @@ -35,12 +35,12 @@ OTA管理 + :class="{ 'active-tab': $route.path === '/dict-management' || $route.path === '/params-management' || $route.path === '/provider-management' }" @visible-change="handleParamDropdownVisibleChange"> + :style="{ filter: $route.path === '/dict-management' || $route.path === '/params-management' || $route.path === '/provider-management' ? 'brightness(0) invert(1)' : 'None' }" /> 参数字典 - + @@ -49,6 +49,9 @@ 字典管理 + + 供应器管理 + @@ -62,9 +65,10 @@ - + - {{ userInfo.username || '加载中...' }} + {{ userInfo.username || '加载中...' }} + 修改密码 @@ -84,7 +88,6 @@ import userApi from '@/apis/module/user'; import { mapActions, mapGetters } from 'vuex'; import ChangePasswordDialog from './ChangePasswordDialog.vue'; // 引入修改密码弹窗组件 - export default { name: 'HeaderBar', components: { @@ -98,7 +101,9 @@ export default { username: '', mobile: '' }, - isChangePasswordDialogVisible: false // 控制修改密码弹窗的显示 + isChangePasswordDialogVisible: false, // 控制修改密码弹窗的显示 + userDropdownVisible: false, + paramDropdownVisible: false } }, computed: { @@ -130,6 +135,9 @@ export default { goDictManagement() { this.$router.push('/dict-management') }, + goProviderManagement() { + this.$router.push('/provider-management') + }, // 获取用户信息 fetchUserInfo() { userApi.getUserInfo(({ data }) => { @@ -184,6 +192,13 @@ export default { }); } }, + handleUserDropdownVisibleChange(visible) { + this.userDropdownVisible = visible; + }, + // 监听第二个下拉菜单的可见状态变化 + handleParamDropdownVisibleChange(visible) { + this.paramDropdownVisible = visible; + }, // 使用 mapActions 引入 Vuex 的 logout action ...mapActions(['logout']) @@ -191,7 +206,7 @@ export default { } - \ No newline at end of file diff --git a/main/manager-web/src/components/TtsModel.vue b/main/manager-web/src/components/TtsModel.vue index 7e8eb3a1..87356523 100644 --- a/main/manager-web/src/components/TtsModel.vue +++ b/main/manager-web/src/components/TtsModel.vue @@ -336,6 +336,14 @@ export default { }, saveEdit(row) { + if (!row.voiceCode || !row.voiceName || !row.languageType) { + this.$message.error({ + message: '音色编码、音色名称和语言类型不能为空', + showClose: true + }); + return; + } + try { const params = { id: row.id, @@ -408,6 +416,12 @@ export default { }, addNew() { + const hasEditing = this.ttsModels.some(row => row.editing); + if (hasEditing) { + this.$message.warning('请先完成当前编辑再新增'); + return; + } + const maxSort = this.ttsModels.length > 0 ? Math.max(...this.ttsModels.map(item => Number(item.sort) || 0)) : 0; diff --git a/main/manager-web/src/router/index.js b/main/manager-web/src/router/index.js index 57b3c7e7..a19b4ec6 100644 --- a/main/manager-web/src/router/index.js +++ b/main/manager-web/src/router/index.js @@ -90,7 +90,14 @@ const routes = [ component: function () { return import('../views/DictManagement.vue') } - } + }, + { + path: '/provider-management', + name: 'ProviderManagement', + component: function () { + return import('../views/ProviderManagement.vue') + } + }, ] const router = new VueRouter({ base: process.env.VUE_APP_PUBLIC_PATH || '/', diff --git a/main/manager-web/src/views/ProviderManagement.vue b/main/manager-web/src/views/ProviderManagement.vue new file mode 100644 index 00000000..f047f482 --- /dev/null +++ b/main/manager-web/src/views/ProviderManagement.vue @@ -0,0 +1,936 @@ + + + + + + 供应器管理 + + + + 类别筛选 {{ selectedModelTypeLabel }} + + + 全部 + + {{ item.label }} + + + + + 搜索 + + + + + + + + + + + + + + + + + + 类别{{ selectedModelTypeLabel }} + + + 全部 + + {{ item.label }} + + + + + + + {{ getModelTypeLabel(scope.row.model_type) }} + + + + + + + + + + {{ field.label }}: + {{ field.type }} + 敏感 + + 查看字段 + + + + + + + 编辑 + 删除 + + + + + + + + {{ isAllSelected ? '取消全选' : '全选' }} + + 新增 + 删除 + + + + + + + + + 首页 + + + 上一页 + + + {{ page }} + + + 下一页 + + 共{{ total }}条记录 + + + + + + + + + + + + + + + + + + + \ No newline at end of file