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 @@ + + + + + \ No newline at end of file