From f141e59f144aab85d9020ab7318870693708be42 Mon Sep 17 00:00:00 2001 From: zhongwenkai <3478244299@qq.com> Date: Tue, 16 Jun 2026 13:38:53 +0800 Subject: [PATCH] =?UTF-8?q?style:=20=E4=B8=8A=E6=A8=A1/=E4=B8=8B=E6=A8=A1?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E4=BA=BA=E8=87=AA=E5=8A=A8=E5=B8=A6=E5=87=BA?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E7=94=A8=E6=88=B7=20&=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/locales/zh-CN.js | 4 +- .../pages/moldoperate/deviceSelect.vue | 83 +++----- .../pages/moldoperate/dismount.vue | 182 +++++------------- .../pages/moldoperate/index.vue | 166 +++++----------- .../pages/moldoperate/moldSelect.vue | 8 +- src/utils/permissionMenu.js | 4 +- 6 files changed, 135 insertions(+), 312 deletions(-) diff --git a/src/locales/zh-CN.js b/src/locales/zh-CN.js index ef11324..3182ff6 100644 --- a/src/locales/zh-CN.js +++ b/src/locales/zh-CN.js @@ -355,8 +355,8 @@ export default { productionLine: '所属产线', currentMold: '当前在机模具', deviceStatus: '设备状态', - statusRunning: '运行中', - statusStop: '已停止', + statusRunning: '正常', + statusStop: '停用', statusFault: '故障', selectMountMold: '选择待上模模具', product: '产品', diff --git a/src/pages_function/pages/moldoperate/deviceSelect.vue b/src/pages_function/pages/moldoperate/deviceSelect.vue index 4bbf07c..8714cd9 100644 --- a/src/pages_function/pages/moldoperate/deviceSelect.vue +++ b/src/pages_function/pages/moldoperate/deviceSelect.vue @@ -69,6 +69,7 @@ import { useI18n } from 'vue-i18n' import NavBar from '@/components/common/NavBar.vue' import { getDeviceLedgerList } from '@/api/mes/moldoperate' import { getDeviceLineTree } from '@/api/mes/deviceLine' +import { getMoldBrandPage } from '@/api/mes/mold' const { t } = useI18n() @@ -105,65 +106,43 @@ function getStatusLabel(device) { return map[status] || textValue(device.deviceStatus) || '-' } -// 当前在机模具 - 优先从持久化存储读取(实时),否则 fallback 设备台账字段 -function getCurrentMold(device) { - const deviceId = device?.id - const deviceCode = device?.deviceCode +// 设备名 → 在机模具名 映射表 +const deviceMoldMap = ref(new Map()) - // 1. 优先读新版 _mountedMoldInfoMap(按 deviceId 索引,再用 deviceCode fallback) +async function loadDeviceMolds() { try { - const map = uni.getStorageSync('_mountedMoldInfoMap') || {} - // 先按 id 匹配 - const key = String(deviceId) - let info = deviceId != null ? map[key] : null - // 再按 deviceCode 匹配(兼容 id 可能不一致的情况) - if (!info && deviceCode) { - const found = Object.values(map).find((item) => item?.deviceCode === deviceCode) - if (found) info = found - } - - // 调试日志:只在首次加载时输出一次 - if (!getCurrentMold._logged) { - getCurrentMold._logged = true - console.log('[deviceSelect] === 调试信息 ===') - console.log('[deviceSelect] storage map keys:', Object.keys(map)) - console.log('[deviceSelect] storage map values:', map) - console.log('[deviceSelect] 当前设备 deviceId:', deviceId, 'type:', typeof deviceId, 'key:', key) - console.log('[deviceSelect] 当前设备 deviceCode:', deviceCode) - console.log('[deviceSelect] id匹配结果:', info ? '命中' : '未命中') - if (!info) { - console.log('[deviceSelect] 尝试 deviceCode fallback...') - for (const [k, v] of Object.entries(map)) { - console.log('[deviceSelect] storage[', k, '].deviceCode =', v?.deviceCode, 'vs 设备 code =', deviceCode, '匹配:', v?.deviceCode === deviceCode) - } + const res = await getMoldBrandPage({ pageSize: 100 }) + console.log('[deviceSelect] getMoldBrandPage 原始响应:', JSON.stringify(res)) + const root = res && res.data !== undefined ? res.data : res + console.log('[deviceSelect] root 类型:', typeof root, 'keys:', Object.keys(root || {})) + const pageData = root?.pageResult || root + const list = Array.isArray(pageData) ? pageData : (Array.isArray(pageData?.list) ? pageData.list : []) + console.log('[deviceSelect] 模具型号总数:', list.length, '前3条:', list.slice(0, 3).map(m => ({ name: m.name, deviceName: m.deviceName }))) + const map = new Map() + for (const mold of list) { + const deviceName = mold.deviceName + if (deviceName) { + if (!map.has(deviceName)) map.set(deviceName, []) + map.get(deviceName).push(mold.name || '') } - // fallback 检查 - const saved = uni.getStorageSync('_mountedMoldInfo') || null - console.log('[deviceSelect] 旧版 _mountedMoldInfo:', saved) - console.log('[deviceSelect] 设备台账字段 currentMold:', device?.currentMold, 'moldName:', device?.moldName, 'moldId:', device?.moldId) - } - - if (info?.mold) { - return info.mold.name || info.mold.moldName || '-' } + deviceMoldMap.value = map + console.log('[deviceSelect] 在机模具映射表:', map.size, '个设备, keys:', [...map.keys()]) } catch (e) { - console.warn('[deviceSelect] read _mountedMoldInfoMap error', e) + console.error('loadDeviceMolds error', e) } +} - // 2. 兼容旧版 _mountedMoldInfo - let saved = null - try { saved = uni.getStorageSync('_mountedMoldInfo') || null } catch {} - if (saved) { - const idMatch = deviceId != null && String(saved.deviceId) === String(deviceId) - const codeMatch = deviceCode && saved.deviceCode === deviceCode - if (idMatch || codeMatch) { - return saved.mold?.name || saved.mold?.moldName || '-' - } +// 当前在机模具 - 从模具型号接口获取 +function getCurrentMold(device) { + if (!device) return t('moldOperate.noMoldOnDevice') + const deviceName = device.deviceName + if (deviceName && deviceMoldMap.value.has(deviceName)) { + const names = deviceMoldMap.value.get(deviceName) || [] + return names.join(',') } - - // 3. fallback 设备台账静态字段 - const staticMold = textValue(device.currentMold || device.moldName || device.moldId) - return staticMold === '-' ? t('moldOperate.noMoldOnDevice') : staticMold + // fallback 设备台账静态字段 + return textValue(device.currentMold || device.moldName) || t('moldOperate.noMoldOnDevice') } function flattenLineTree(nodes, parentId) { @@ -269,7 +248,7 @@ function handleConfirm() { } onShow(async () => { - await Promise.allSettled([loadDevices(), loadLineTree()]) + await Promise.allSettled([loadDevices(), loadLineTree(), loadDeviceMolds()]) }) diff --git a/src/pages_function/pages/moldoperate/dismount.vue b/src/pages_function/pages/moldoperate/dismount.vue index ada878e..acd1683 100644 --- a/src/pages_function/pages/moldoperate/dismount.vue +++ b/src/pages_function/pages/moldoperate/dismount.vue @@ -80,16 +80,6 @@ {{ t('moldOperate.product') }} {{ textValue(selectedMold.productName) }} - - {{ t('moldOperate.mountTime') }} - {{ textValue(selectedMold.mountTime) }} - - - - - {{ t('moldOperate.useCount') }} - {{ formatUseCount(selectedMold.useCount) }} - @@ -117,40 +107,15 @@ {{ t('moldOperate.operator') + ' & ' + t('moldOperate.remark') }} - - - - *{{ t('moldOperate.operator') }} - - - - {{ selectedOperator ? selectedOperator.label : t('moldOperate.placeholderOperator') }} - - - - - - - {{ item.label }} - - - 暂无数据 - + + + + *{{ t('moldOperate.operator') }} + + {{ currentUserName }} - {{ t('moldOperate.remark') }} @@ -202,11 +167,17 @@ import { computed, reactive, ref } from 'vue' import { onShow } from '@dcloudio/uni-app' import { useI18n } from 'vue-i18n' import NavBar from '@/components/common/NavBar.vue' -import { getLowerMoldList, getDeviceLedgerList, createMoldOperate } from '@/api/mes/moldoperate' +import { getDeviceLedgerList, createMoldOperate } from '@/api/mes/moldoperate' +import { getMoldBrandPage } from '@/api/mes/mold' +import useUserStore from '@/store/modules/user' import { getDeviceLineTree } from '@/api/mes/deviceLine' -import { getSimpleUserList } from '@/api/system/user' const { t } = useI18n() +const userStore = useUserStore() + +// 当前登录用户 +const currentUserName = computed(() => userStore.name || '未知用户') +const currentUserId = computed(() => userStore.userId) const lineInfoMap = ref(new Map()) // deviceLine id → { name, parentId, parentChain } @@ -282,10 +253,7 @@ const tempSelectedMoldId = ref(null) // ---- 操作人与备注 ---- const remarkText = ref('') -const operatorOptions = ref([]) const selectedOperator = ref(null) -const operatorIndex = ref(-1) -const showOperatorDropdown = ref(false) // ---- 工具函数 ---- function textValue(v) { @@ -295,12 +263,7 @@ function textValue(v) { return s || '-' } -function formatUseCount(count) { - if (count == null) return '-' - const num = Number(count) - if (isNaN(num)) return String(count) - return num.toLocaleString() + ' ' + t('moldOperate.countUnit') -} + function formatTime(time) { if (!time) return '-' @@ -374,45 +337,20 @@ function findArr(obj, d = 0) { return [] } -async function loadLowerMolds(deviceId) { +async function loadLowerMolds(deviceName) { lowerMoldLoading.value = true try { - // ====== 策略1:优先从持久化存储读取(按设备ID索引,不会互覆盖)====== - let map = {} - try { map = uni.getStorageSync('_mountedMoldInfoMap') || {} } catch {} - const savedInfo = map[String(deviceId)] || null - - console.log('[下模] 持久化在机模具信息 =', savedInfo ? JSON.stringify(savedInfo) : 'null', 'deviceId=', deviceId) - - if (savedInfo && savedInfo.mold) { - console.log('[下模] 命中持久化数据, deviceId=', deviceId) - const m = savedInfo.mold - lowerMoldOptions.value = [{ - id: m.id, - moldId: m.id, - moldName: m.name || m.moldName || '-', - moldCode: m.code || m.moldCode || '-', - productName: m.productName || '-', - mountTime: formatTime(savedInfo.mountTime), - useCount: '-' - }] - console.log('[下模] 使用持久化数据 =', JSON.stringify(lowerMoldOptions.value[0])) - return - } - console.log('[下模] 未命中持久化数据,进入接口查询') - - // ====== 策略2:fallback - 调用在机模具接口 ====== - let list = [] - try { - const res = await getLowerMoldList(deviceId) - const root = (res && res.data !== undefined) ? res.data : res - list = findArr(root) - } catch (apiErr) { - console.warn('[下模] getLowerMoldList 接口异常', apiErr) - } - - lowerMoldOptions.value = list - console.log('[下模] loadLowerMolds 返回 list.length =', list.length) + const res = await getMoldBrandPage({ deviceName, pageSize: 100 }) + const root = (res && res.data !== undefined) ? res.data : res + const pageData = root?.pageResult || root + const list = Array.isArray(pageData) ? pageData : (Array.isArray(pageData?.list) ? pageData.list : []) + lowerMoldOptions.value = list.map(m => ({ + id: m.id, + moldId: m.id, + moldName: m.name || '-', + moldCode: m.code || '-', + productName: m.productName || '-' + })) } catch (e) { console.error('loadLowerMolds error', e) } finally { @@ -450,8 +388,8 @@ function selectDevice(device) { selectedDevice.value = device || {} moldsLoaded.value = false selectedMold.value = {} - if (device?.id) { - loadLowerMolds(device.id).then(() => { + if (device?.deviceName) { + loadLowerMolds(device.deviceName).then(() => { moldsLoaded.value = true if (lowerMoldOptions.value.length > 0) { const first = lowerMoldOptions.value[0] @@ -459,9 +397,7 @@ function selectDevice(device) { id: first.id || first.moldId, moldName: first.moldName || first.name, moldCode: first.moldCode || first.code, - productName: first.productName || '-', - mountTime: first.mountTime || '-', - useCount: first.useCount ?? '-' + productName: first.productName || '-' } } }) @@ -475,12 +411,12 @@ function openDevicePicker() { // ---- 在机模具选择(更换下模对象)---- function openLowerMoldPicker() { - if (!selectedDevice.value?.id) { + if (!selectedDevice.value?.deviceName) { uni.showToast({ title: t('moldOperate.validatorDeviceRequired'), icon: 'none' }) return } tempSelectedMoldId.value = selectedMold.value ? String(selectedMold.value.id || selectedMold.value.moldId) : null - loadLowerMolds(selectedDevice.value.id).then(() => { + loadLowerMolds(selectedDevice.value.deviceName).then(() => { lowerMoldPickerRef.value?.open() }) } @@ -494,9 +430,7 @@ function confirmLowerMoldSelection() { id: mold.id || mold.moldId, moldName: mold.moldName || mold.name, moldCode: mold.moldCode || mold.code, - productName: mold.productName || '-', - mountTime: mold.mountTime || '-', - useCount: mold.useCount ?? '-' + productName: mold.productName || '-' } } lowerMoldPickerRef.value?.close() @@ -504,34 +438,16 @@ function confirmLowerMoldSelection() { function closeLowerMoldPicker() { lowerMoldPickerRef.value?.close() } -// ---- 操作人列表加载 ---- -async function loadOperators() { - try { - const res = await getSimpleUserList() - const data = Array.isArray(res) ? res : (Array.isArray(res?.data) ? res.data : []) - operatorOptions.value = data.map((u) => ({ - value: u.id || u.userId, - label: u.nickname || u.userName || u.name || String(u.id || '') - })) - } catch (e) { - console.error('loadOperators error', e) +// ---- 操作人自动设置为当前登录用户 ---- +function autoSetOperator() { + if (currentUserId.value && currentUserName.value) { + selectedOperator.value = { + value: currentUserId.value, + label: currentUserName.value + } } } -function toggleOperatorDropdown() { - showOperatorDropdown.value = !showOperatorDropdown.value -} - -function closeOperatorDropdown() { - showOperatorDropdown.value = false -} - -function handleSelectOperator(item, idx) { - selectedOperator.value = item - operatorIndex.value = idx - closeOperatorDropdown() -} - function goToHistory() { uni.navigateTo({ url: '/pages_function/pages/moldoperate/history?type=down' }) } @@ -578,21 +494,11 @@ async function handleConfirm() { console.log('[下模] 提交参数 =', JSON.stringify(payload)) await createMoldOperate(payload) uni.showToast({ title: t('functionCommon.createSuccess'), icon: 'success' }) - // 下模成功后清除该设备的持久化数据 - if (selectedDevice.value?.id) { - try { - const map = uni.getStorageSync('_mountedMoldInfoMap') || {} - delete map[String(selectedDevice.value.id)] - uni.setStorageSync('_mountedMoldInfoMap', map) - } catch {} - } // 重置表单 selectedDevice.value = {} selectedMold.value = {} lowerMoldOptions.value = [] remarkText.value = '' - selectedOperator.value = null - operatorIndex.value = -1 } catch (e) { console.error('[下模] 保存失败 =', e) const errMsg = e?.msg || (typeof e === 'string' ? e : e?.message) || '系统异常' @@ -608,7 +514,8 @@ function handleCancel() { } onShow(async () => { - await Promise.allSettled([loadDevices(), loadLineTree(), loadOperators()]) + autoSetOperator() + await Promise.allSettled([loadDevices(), loadLineTree()]) // 从 globalData 读取设备选择页回传的设备 const device = getApp().globalData._deviceSelectResult if (device) { @@ -854,6 +761,11 @@ onShow(async () => { font-size: 27rpx; color: #333; background: #f9fafb; + + &.readonly-input { + background: #f8fafc; + border-color: #f0f0f0; + } } .dropdown-value { diff --git a/src/pages_function/pages/moldoperate/index.vue b/src/pages_function/pages/moldoperate/index.vue index 656b25d..be8e0ff 100644 --- a/src/pages_function/pages/moldoperate/index.vue +++ b/src/pages_function/pages/moldoperate/index.vue @@ -115,35 +115,8 @@ *{{ t('moldOperate.operator') }} - - - - - {{ selectedOperator ? selectedOperator.label : t('moldOperate.placeholderOperator') }} - - - - - - - - {{ item.label }} - - - 暂无数据 - - + + {{ currentUserName }} @@ -176,9 +149,15 @@ import { onShow } from '@dcloudio/uni-app' import { useI18n } from 'vue-i18n' import NavBar from '@/components/common/NavBar.vue' import { getDeviceLedgerList, createMoldOperate } from '@/api/mes/moldoperate' -import { getSimpleUserList } from '@/api/system/user' +import { getMoldBrandPage } from '@/api/mes/mold' +import useUserStore from '@/store/modules/user' const { t } = useI18n() +const userStore = useUserStore() + +// 当前登录用户 +const currentUserName = computed(() => userStore.name || '未知用户') +const currentUserId = computed(() => userStore.userId) // ---- 工具函数 ---- function textValue(v) { @@ -217,9 +196,7 @@ const selectedDevice = ref({}) const selectedMountMolds = ref([]) const tempSelectedDeviceId = ref(null) const remarkText = ref('') -const operatorOptions = ref([]) const selectedOperator = ref(null) -const operatorIndex = ref(-1) // 设备状态 - 上模 const deviceStatusClass = computed(() => { @@ -241,7 +218,7 @@ const deviceStatusLabel = computed(() => { return map[status] || textValue(selectedDevice.value?.deviceStatus) || '-' }) -const MOLD_STATUS_MAP = { 0: '在机', 1: '待用', 2: '维修', 3: '报废' } +const MOLD_STATUS_MAP = { 0: '在机', 1: '待用', 2: '维修', 3: '报废', 4: '在库' } function getMoldStatusText(s) { return MOLD_STATUS_MAP[s] || textValue(s) } function getMoldStatusClass(s) { if (s === 0) return 'inuse-tag' @@ -250,91 +227,54 @@ function getMoldStatusClass(s) { return 'standby-tag' } -// ---- 持久化在机模具信息(按设备ID索引,避免多设备覆盖)---- -const MOUNTED_MOLD_KEY = '_mountedMoldInfoMap' -function getMountedMoldMap() { - try { - const data = uni.getStorageSync(MOUNTED_MOLD_KEY) || {} - return data - } catch (e) { - console.warn('[上模] getMountedMoldMap 异常', e) - return {} +// 当前在机模具 - 通过模具分页接口查询(machineId = 当前设备ID) +const currentMoldList = ref([]) + +async function fetchCurrentMolds(deviceName) { + if (!deviceName) { + currentMoldList.value = [] + return } -} -function getMountedMoldByDevice(deviceId) { - if (!deviceId) return null - const map = getMountedMoldMap() - const key = String(deviceId) - return map[key] || null -} -function saveMountedMoldInfo(info) { - if (!info || !info.deviceId) return try { - const map = getMountedMoldMap() - map[String(info.deviceId)] = info - uni.setStorageSync(MOUNTED_MOLD_KEY, map) - console.log('[上模] saveMountedMoldInfo 写入成功, deviceId=', info.deviceId, 'map keys=', Object.keys(map)) + // 查模具型号表,按当前设备名称筛选 + const params = { deviceName, pageSize: 100 } + console.log('[上模] fetchCurrentMolds 请求参数:', JSON.stringify(params)) + const res = await getMoldBrandPage(params) + console.log('[上模] fetchCurrentMolds 原始响应:', JSON.stringify(res)) + const root = res && res.data !== undefined ? res.data : res + const pageData = root?.pageResult || root + const list = Array.isArray(pageData) ? pageData : (Array.isArray(pageData?.list) ? pageData.list : []) + console.log('[上模] fetchCurrentMolds 解析后:', list.length, '条数据', list.map(m => ({ id: m.id, name: m.name, currentDevice: m.currentDevice }))) + currentMoldList.value = list } catch (e) { - console.warn('[上模] saveMountedMoldInfo 异常', e) + console.error('fetchCurrentMolds error', e) + currentMoldList.value = [] } } -function clearMountedMoldInfo(deviceId) { - if (!deviceId) { - try { uni.removeStorageSync(MOUNTED_MOLD_KEY) } catch {} - return - } - try { - const map = getMountedMoldMap() - delete map[String(deviceId)] - uni.setStorageSync(MOUNTED_MOLD_KEY, map) - } catch {} -} -// 当前在机模具 - 优先从持久化存储获取(实时),否则用设备台账静态字段 const currentMoldDisplay = computed(() => { if (!selectedDevice.value?.id) return '-' - const saved = getMountedMoldByDevice(selectedDevice.value.id) - if (saved) { - console.log('[上模] currentMoldDisplay 命中持久化, deviceId=', selectedDevice.value.id, 'mold=', saved.mold?.name || saved.mold?.moldName) - return saved.mold?.name || saved.mold?.moldName || '-' + if (currentMoldList.value.length > 0) { + return currentMoldList.value.map(m => m.name || '').filter(Boolean).join(',') || '-' } - return textValue(selectedDevice.value.currentMold) + return t('moldOperate.noMoldOnDevice') }) -// ---- 操作人列表加载 ---- -async function loadOperators() { - try { - const res = await getSimpleUserList() - const data = Array.isArray(res) ? res : (Array.isArray(res?.data) ? res.data : []) - operatorOptions.value = data.map((u) => ({ - value: u.id || u.userId, - label: u.nickname || u.userName || u.name || String(u.id || '') - })) - } catch (e) { - console.error('loadOperators error', e) +// ---- 操作人自动设置为当前登录用户 ---- +function autoSetOperator() { + if (currentUserId.value && currentUserName.value) { + selectedOperator.value = { + value: currentUserId.value, + label: currentUserName.value + } } } -const showOperatorDropdown = ref(false) - -function toggleOperatorDropdown() { - showOperatorDropdown.value = !showOperatorDropdown.value -} - -function closeOperatorDropdown() { - showOperatorDropdown.value = false -} - -function handleSelectOperator(item, idx) { - selectedOperator.value = item - operatorIndex.value = idx - closeOperatorDropdown() -} - function selectDevice(device) { selectedDevice.value = device || {} tempSelectedDeviceId.value = device ? device.id : null selectedMountMolds.value = [] + if (device?.deviceName) fetchCurrentMolds(device.deviceName) } function openDevicePicker() { @@ -394,22 +334,6 @@ async function handleConfirmMount() { console.log('=== 上模返回 ===', JSON.stringify(res)) uni.showToast({ title: t('functionCommon.createSuccess'), icon: 'success' }) - // 上模成功后持久化保存,供下模/设备选择页读取 - if (selectedMountMolds.value.length > 0) { - const info = { - deviceId: selectedDevice.value.id, - deviceCode: selectedDevice.value.deviceCode, - deviceName: selectedDevice.value.deviceName, - mold: selectedMountMolds.value[0], - mountTime: new Date().toLocaleString() - } - saveMountedMoldInfo(info) - // 同步到 globalData(兼容旧逻辑) - getApp().globalData._mountedMoldInfo = info - getApp().globalData._mountedMoldInfoMap = getMountedMoldMap() - console.log('=== 已保存在机模具信息 ===', JSON.stringify(info)) - } - selectedDevice.value = {} selectedMountMolds.value = [] } catch (e) { @@ -449,8 +373,6 @@ function handleCancel() { selectedDevice.value = {} selectedMountMolds.value = [] remarkText.value = '' - selectedOperator.value = null - operatorIndex.value = -1 // 返回上一页(管理页面) uni.navigateBack({ fail: () => uni.switchTab({ url: '/pages/work' }) @@ -462,7 +384,8 @@ function goToHistory() { } onShow(async () => { - await Promise.allSettled([loadDevices(), loadOperators()]) + autoSetOperator() + await Promise.allSettled([loadDevices()]) // 从 globalData 读取设备选择页回传的设备 const device = getApp().globalData._deviceSelectResult if (device) { @@ -706,6 +629,11 @@ onShow(async () => { font-size: 27rpx; color: #333; background: #f9fafb; + + &.readonly-input { + background: #f8fafc; + border-color: #f0f0f0; + } } .dropdown-value { diff --git a/src/pages_function/pages/moldoperate/moldSelect.vue b/src/pages_function/pages/moldoperate/moldSelect.vue index cfe4b3d..f867c66 100644 --- a/src/pages_function/pages/moldoperate/moldSelect.vue +++ b/src/pages_function/pages/moldoperate/moldSelect.vue @@ -77,7 +77,7 @@ function textValue(v) { return s || '-' } -const STATUS_MAP = { 0: '在机', 1: '待用', 2: '维修', 3: '报废' } +const STATUS_MAP = { 0: '在机', 1: '待用', 2: '维修', 3: '报废', 4: '在库' } function getStatusText(s) { return STATUS_MAP[s] || textValue(s) } function getStatusClass(s) { if (s === 0) return 'in-use-tag' @@ -87,9 +87,11 @@ function getStatusClass(s) { } const filteredList = computed(() => { + // 排除在机状态的模具(status=0),不能重复上模 + const available = moldList.value.filter(m => Number(m.status) !== 0) const keyword = searchText.value.trim().toLowerCase() - if (!keyword) return moldList.value - return moldList.value.filter((m) => { + if (!keyword) return available + return available.filter((m) => { return (m.name || '').toLowerCase().includes(keyword) || (m.code || '').toLowerCase().includes(keyword) || (m.productName || '').toLowerCase().includes(keyword) diff --git a/src/utils/permissionMenu.js b/src/utils/permissionMenu.js index f431de9..f40c1ed 100644 --- a/src/utils/permissionMenu.js +++ b/src/utils/permissionMenu.js @@ -311,10 +311,12 @@ export function resolveMenuUrl(menu) { return directRoute } - const keys = [menu?.component, menu?.path, menu?.enName, menu?.name] + // 优先用 menu.name(中文,最不容易冲突),再用 component/path + const keys = [menu?.name, menu?.enName, menu?.component, menu?.path] for (const key of keys) { const normalizedKey = normalizeMenuKey(key) if (normalizedKey && MENU_ROUTE_MAP[normalizedKey]) { + console.log('[resolveMenuUrl] menu.name="', menu?.name, '" matched key="', normalizedKey, '" → route="', MENU_ROUTE_MAP[normalizedKey], '"') return MENU_ROUTE_MAP[normalizedKey] } }