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]
}
}