From 86503555ee54227435f7fb67ffe33adb4bf6e9e0 Mon Sep 17 00:00:00 2001 From: bb_pan Date: Thu, 18 Dec 2025 15:50:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../toolsManage/codeToolsLedger/index.vue | 70 ++-- .../toolsApplication/components/AddCode.vue | 366 ++++++++++++++++-- .../toolsApplication/components/AddNum.vue | 159 +++++++- src/views/toolsManage/toolsLedger/index.vue | 195 ++++++---- 4 files changed, 670 insertions(+), 120 deletions(-) diff --git a/src/views/toolsManage/codeToolsLedger/index.vue b/src/views/toolsManage/codeToolsLedger/index.vue index 886c364c..c26a7eff 100644 --- a/src/views/toolsManage/codeToolsLedger/index.vue +++ b/src/views/toolsManage/codeToolsLedger/index.vue @@ -146,7 +146,8 @@ - + - + - - - - - - - - - - - + + - + @@ -441,27 +442,27 @@ export default { { label: '计量单位', prop: 'unitName' }, { label: '工具编码', prop: 'toolCode' }, { - label: "工具状态", - prop: "status", + label: '工具状态', + prop: 'status', width: 120, render: (h, { row }) => { const statusOptions = { - 0: { text: "在库", type: "success" }, - 1: { text: "在用", type: "info" }, - 2: { text: "在修", type: "warning" }, - 3: { text: "已报废", type: "danger" }, - }; + 0: { text: '在库', type: 'success' }, + 1: { text: '在用', type: 'info' }, + 2: { text: '在修', type: 'warning' }, + 3: { text: '已报废', type: 'danger' }, + } const option = statusOptions[row.status] return h( - "el-tag", + 'el-tag', { props: { type: option.type, - size: "mini", + size: 'mini', }, }, - option.text - ); + option.text, + ) }, }, { label: '下次检验时间', prop: 'nextCheckDate' }, @@ -495,6 +496,15 @@ export default { inspectionList: '', purchaseInvoicesList: '', }, + dialogRules: { + supplierId: [{ required: true, message: '请选择生产厂家', trigger: 'blur' }], + productionDate: [{ required: true, message: '请选择出厂日期', trigger: 'change' }], + originCost: [{ required: true, message: '请输入资产原值', trigger: 'blur' }], + identifyCode: [{ required: true, message: '请输入原始编码', trigger: 'blur' }], + certificateList: [{ required: true, message: '请上传合格证', trigger: 'change' }], + inspectionList: [{ required: true, message: '请上传检测证书', trigger: 'change' }], + purchaseInvoicesList: [{ required: true, message: '请上传采购发票', trigger: 'change' }], + }, manufacturerSelect: [], // 上传相关配置(从FileUpload组件迁移) uploadFileUrl: process.env.VUE_APP_BASE_API + '/file/upload', // 上传文件服务器地址 @@ -778,6 +788,11 @@ export default { }, async submit() { console.log('🚀 ~ methods.submit:', this.dialogForm) + // 校验表单 + const valid = await this.$refs.dialogForm.validate() + if (!valid) { + return + } this.isLoading = true try { let certificates = [] // 合格证 @@ -938,4 +953,7 @@ export default { padding: 20px; } } +::v-deep .el-input-number.is-without-controls .el-input__inner { + text-align: left; +} diff --git a/src/views/toolsManage/toolsApplication/components/AddCode.vue b/src/views/toolsManage/toolsApplication/components/AddCode.vue index 3c9729ce..7c0cae72 100644 --- a/src/views/toolsManage/toolsApplication/components/AddCode.vue +++ b/src/views/toolsManage/toolsApplication/components/AddCode.vue @@ -10,7 +10,7 @@ size="small" inline @submit.native.prevent - style="height: 32px;" + style="height: 32px" > - - - +
+ + + + +
@@ -81,8 +88,19 @@ align="center" > - diff --git a/src/views/toolsManage/toolsApplication/components/AddNum.vue b/src/views/toolsManage/toolsApplication/components/AddNum.vue index fe79a2a8..210f0c46 100644 --- a/src/views/toolsManage/toolsApplication/components/AddNum.vue +++ b/src/views/toolsManage/toolsApplication/components/AddNum.vue @@ -2,7 +2,15 @@
- + + + 上传 + 查看 + + + 上传 + 查看 + + + 上传 + 查看 + {{ row[column.prop] }} @@ -63,20 +98,54 @@ + + + + + + + 关 闭 + + + + + + + + + + + + + + 关 闭 + +
diff --git a/src/views/toolsManage/toolsLedger/index.vue b/src/views/toolsManage/toolsLedger/index.vue index 373d313d..6c97f14e 100644 --- a/src/views/toolsManage/toolsLedger/index.vue +++ b/src/views/toolsManage/toolsLedger/index.vue @@ -3,7 +3,29 @@
- + + + + + + + + + + 导出数据 -->
工具台账列表
- + 导出数据 - + - + 查询 @@ -185,7 +200,6 @@ import { getToolLedgerListApi, getToolSelectApi, getToolByTypeIdApi, getToolByProApi } from '@/api/toolsManage' -import { formatTime } from '@/utils/bonus' +import { getTreeSelectApi } from '@/api/toolsManage/index.js' export default { name: 'ToolsLedger', @@ -212,7 +226,7 @@ export default { pickerOptions: { disabledDate(time) { return time.getTime() > Date.now() - } + }, }, queryParams: { pageNum: 1, @@ -223,8 +237,19 @@ export default { greatGrandparentId: null, // 施工类型 grandparentTypeId: null, // 工具类型 parentTypeId: null, // 工具名称 - typeName: null // 规格型号 + typeName: null, // 规格型号 + manageMode: '', + typeId: null, + typeIds: null, }, + toolCascaderProps: { + value: 'typeId', + label: 'typeName', + children: 'children', + checkStrictly: true, + expandTrigger: 'click' + }, + toolTreeData: [], // 工具分类树 fourthParentList: [], greatGrandparentList: [], grandparentTypeList: [], @@ -243,15 +268,15 @@ export default { render: (h, { row }) => { return row.manageMode == 0 && row.availableNum > 0 ? h( - 'span', - { - style: { color: '#409EFF', cursor: 'pointer' }, - on: { click: () => this.handleDialog(row, '0') } - }, - row.availableNum - ) + 'span', + { + style: { color: '#409EFF', cursor: 'pointer' }, + on: { click: () => this.handleDialog(row, '0') }, + }, + row.availableNum, + ) : h('span', {}, row.availableNum) - } + }, }, { label: '自用数量', @@ -259,15 +284,15 @@ export default { render: (h, { row }) => { return row.inNum > 0 ? h( - 'span', - { - style: { color: '#409EFF', cursor: 'pointer' }, - on: { click: () => this.handleDialog(row, '3') } - }, - row.inNum - ) + 'span', + { + style: { color: '#409EFF', cursor: 'pointer' }, + on: { click: () => this.handleDialog(row, '3') }, + }, + row.inNum, + ) : h('span', {}, row.inNum) - } + }, }, { label: '共享数量', @@ -275,15 +300,15 @@ export default { render: (h, { row }) => { return row.shareNum > 0 ? h( - 'span', - { - style: { color: '#409EFF', cursor: 'pointer' }, - on: { click: () => this.handleDialog(row, '1') } - }, - row.shareNum - ) + 'span', + { + style: { color: '#409EFF', cursor: 'pointer' }, + on: { click: () => this.handleDialog(row, '1') }, + }, + row.shareNum, + ) : h('span', {}, row.shareNum) - } + }, }, { label: '在修数量', @@ -291,18 +316,19 @@ export default { render: (h, { row }) => { return row.manageMode == 0 && row.repairNum > 0 ? h( - 'span', - { - style: { color: '#409EFF', cursor: 'pointer' }, - on: { click: () => this.handleDialog(row, '2') } - }, - row.repairNum - ) + 'span', + { + style: { color: '#409EFF', cursor: 'pointer' }, + on: { click: () => this.handleDialog(row, '2') }, + }, + row.repairNum, + ) : h('span', {}, row.repairNum) - } - }, { + }, + }, + { label: '退役数量', - prop: 'scrapNum' + prop: 'scrapNum', }, { label: '工具总数(不含退役数)', prop: 'totalNum' }, { @@ -310,8 +336,8 @@ export default { prop: 'manageMode', render: (h, { row }) => { return row.manageMode == '1' ? h('span', {}, '数量管理') : h('span', {}, '编码管理') - } - } + }, + }, ], // 表格数据 tableList: [], @@ -321,7 +347,7 @@ export default { dialogForm: { keyWord: '', pageNum: 1, - pageSize: 10 + pageSize: 10, }, dlgTotal: 0, // 弹框总条数 dialogColumns: [ @@ -332,23 +358,24 @@ export default { prop: 'toolCode', render: (h, { row }) => { return row.toolCode ? h('span', {}, row.toolCode) : h('span', {}, '-') - } + }, }, { label: '数量', prop: 'totalNum', render: (h, { row }) => { return row.totalNum ? h('span', {}, row.totalNum) : h('span', {}, '1') - } + }, }, - { label: '所在工程', prop: 'proName' } + { label: '所在工程', prop: 'proName' }, ], - dialogList: [] + dialogList: [], } }, created() { this.getList() this.getSelectList() + this.getToolTree() }, methods: { // 查询 @@ -496,12 +523,46 @@ export default { * 导出数据 */ handleExport() { - this.download('/material-mall/toolLedger/exportAll', { - ...this.queryParams - }, `工具台账_${new Date().getTime()}.xlsx`) - } - - } + this.download( + '/material-mall/toolLedger/exportAll', + { + ...this.queryParams, + }, + `工具台账_${new Date().getTime()}.xlsx`, + ) + }, + // 获取工具分类树数据(适配返回字段,限制最多6级) + async getToolTree() { + try { + const res = await getTreeSelectApi() + if (res.code === 200) { + let rawData = res.data || [] + this.toolTreeData = this.processToolTreeData(rawData) + } else { + this.$message.error(res.msg || '获取工具分类失败') + } + } catch (error) { + this.$message.error('获取工具分类数据失败:' + (error.message || '未知错误')) + } + }, + // 递归处理工具分类节点(限制六级) + processToolTreeData(data, currentLevel = 1) { + if (currentLevel > 6) return [] + return data.map(item => { + const processedItem = { ...item } + // 六级以下递归处理子节点 + if (item.children && item.children.length > 0 && currentLevel < 6) { + processedItem.children = this.processToolTreeData(item.children, currentLevel + 1) + } else { + delete processedItem.children // 超过六级移除子节点 + } + return processedItem + }) + }, + handleToolCategoryChange(val) { + this.queryParams.typeId = val[val.length - 1] || '' + }, + }, }