diff --git a/src/api/system/menu/index.ts b/src/api/system/menu/index.ts
index 5148dd03..804082d7 100644
--- a/src/api/system/menu/index.ts
+++ b/src/api/system/menu/index.ts
@@ -17,6 +17,7 @@ export interface MenuVO {
keepAlive: boolean
alwaysShow?: boolean
clientType?: number
+ terminalType?: number
createTime: Date
}
diff --git a/src/locales/en.ts b/src/locales/en.ts
index 725e7847..fd6e19ff 100644
--- a/src/locales/en.ts
+++ b/src/locales/en.ts
@@ -1146,6 +1146,9 @@ export default {
updateCacheTitle: 'Refresh Menu Cache',
clientTypeWeb: 'Web Menu',
clientTypeApp: 'APP Menu',
+ terminalType: 'Terminal Type',
+ terminalTypeMobile: 'Phone',
+ terminalTypeScanner: 'Scanner',
visibleShow: 'Show',
visibleHide: 'Hide',
always: 'Always',
@@ -1156,6 +1159,7 @@ export default {
nameRequired: 'Menu name is required',
sortRequired: 'Menu order is required',
pathRequired: 'Route path is required',
+ terminalTypeRequired: 'Terminal type is required',
statusRequired: 'Status is required',
pathMustStartWithSlash: 'Path must start with /',
pathMustNotStartWithSlash: 'Path must not start with /',
diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts
index 276de481..b08e55d5 100644
--- a/src/locales/zh-CN.ts
+++ b/src/locales/zh-CN.ts
@@ -1147,6 +1147,9 @@ export default {
updateCacheTitle: '刷新菜单缓存',
clientTypeWeb: 'Web端菜单',
clientTypeApp: 'APP端菜单',
+ terminalType: '终端类型',
+ terminalTypeMobile: '手机',
+ terminalTypeScanner: '扫码器',
visibleShow: '显示',
visibleHide: '隐藏',
always: '总是',
@@ -1157,6 +1160,7 @@ export default {
nameRequired: '菜单名称不能为空',
sortRequired: '菜单顺序不能为空',
pathRequired: '路由地址不能为空',
+ terminalTypeRequired: '终端类型不能为空',
statusRequired: '状态不能为空',
pathMustStartWithSlash: '路径必须以 / 开头',
pathMustNotStartWithSlash: '路径不能以 / 开头',
diff --git a/src/views/system/menu/MenuForm.vue b/src/views/system/menu/MenuForm.vue
index dd281540..c747e594 100644
--- a/src/views/system/menu/MenuForm.vue
+++ b/src/views/system/menu/MenuForm.vue
@@ -66,6 +66,12 @@
+
+
+ {{ t('SystemManagement.Menu.terminalTypeMobile') }}
+ {{ t('SystemManagement.Menu.terminalTypeScanner') }}
+
+
({
name: [{ required: true, message: t('SystemManagement.Menu.nameRequired'), trigger: 'blur' }],
sort: [{ required: true, message: t('SystemManagement.Menu.sortRequired'), trigger: 'blur' }],
path: [{ required: clientType.value === 1, message: t('SystemManagement.Menu.pathRequired'), trigger: 'blur' }],
- status: [{ required: true, message: t('SystemManagement.Menu.statusRequired'), trigger: 'blur' }]
+ status: [{ required: true, message: t('SystemManagement.Menu.statusRequired'), trigger: 'blur' }],
+ terminalType: [{ required: clientType.value === 2, message: t('SystemManagement.Menu.terminalTypeRequired'), trigger: 'change' }]
}))
const formRef = ref() // 表单 Ref
@@ -210,8 +218,9 @@ const submitForm = async () => {
}
}
}
- const data = formData.value as unknown as MenuApi.MenuVO
+ const data = formData.value as unknown as MenuApi.MenuVO & { terminalType?: number }
data.clientType = clientType.value
+ data.terminalType = clientType.value === 2 ? formData.value.terminalType : undefined
if (formType.value === 'create') {
await MenuApi.createMenu(data)
message.success(t('common.createSuccess'))
@@ -257,7 +266,8 @@ const resetForm = () => {
visible: true,
keepAlive: true,
alwaysShow: true,
- clientType: 1
+ clientType: 1,
+ terminalType: 1
}
formRef.value?.resetFields()
}
diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue
index 40ac32d7..b157633d 100644
--- a/src/views/system/menu/index.vue
+++ b/src/views/system/menu/index.vue
@@ -79,19 +79,29 @@
:default-expand-all="isExpandAll"
row-key="id"
>
-
-
+
+
{{ scope.row.icon }}
-
+
+
+
+ {{ getTerminalTypeLabel(scope.row.terminalType) }}
+
+
-
+
{
getList()
}
+const getTerminalTypeLabel = (value?: number) => {
+ if (Number(value) === 2) return t('SystemManagement.Menu.terminalTypeScanner')
+ return t('SystemManagement.Menu.terminalTypeMobile')
+}
+
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()