diff --git a/klp-ui/src/views/crm/components/CoilTable.vue b/klp-ui/src/views/crm/components/CoilTable.vue index 3739463ab..26d7b08d1 100644 --- a/klp-ui/src/views/crm/components/CoilTable.vue +++ b/klp-ui/src/views/crm/components/CoilTable.vue @@ -55,7 +55,7 @@ - + 已发货 未发货 @@ -72,7 +72,7 @@ 数字钢卷 - 追溯 + 钢卷追溯 @@ -282,4 +282,10 @@ export default { }, } } - \ No newline at end of file + + + \ No newline at end of file diff --git a/klp-ui/src/views/crm/contract/components/ProductContent.vue b/klp-ui/src/views/crm/contract/components/ProductContent.vue index 0525b001d..0f16f2a7f 100644 --- a/klp-ui/src/views/crm/contract/components/ProductContent.vue +++ b/klp-ui/src/views/crm/contract/components/ProductContent.vue @@ -39,49 +39,49 @@ - + {{ index + 1 }} - + - + - + - + - + - + - + - + - + - + @@ -397,6 +397,10 @@ export default { align-items: center; } +.edit-cell { + padding: 0px; +} + .table-cell:last-child { border-right: none; } diff --git a/klp-ui/src/views/erp/purchaseAudit/index.vue b/klp-ui/src/views/erp/purchaseAudit/index.vue index cec0e9d61..7d7e3ab8c 100644 --- a/klp-ui/src/views/erp/purchaseAudit/index.vue +++ b/klp-ui/src/views/erp/purchaseAudit/index.vue @@ -66,7 +66,7 @@ 从左侧选择一条采购合同进行审核 - + {{ current.planNo }} @@ -91,8 +91,9 @@ 采购要求共 {{ current.items.length }} 项 - - + + + 无采购要求 @@ -131,6 +132,7 @@ export default { return { loading: true, buttonLoading: false, + detailLoading: false, total: 0, pendingCount: 0, planList: [], @@ -175,10 +177,11 @@ export default { this.getList() }, selectPlan(row) { + this.detailLoading = true getPurchasePlan(row.planId).then(res => { this.current = res.data || {} this.auditOpinion = this.current.auditOpinion || '' - }) + }).finally(() => { this.detailLoading = false }) }, doAudit(status) { this.buttonLoading = true @@ -192,10 +195,11 @@ export default { this.getList(true) // 刷新列表但保留右侧当前计划 this.loadPendingCount() // 右侧停留在刚审核的计划:状态/历史即时更新,驳回后可直接重新审核 + this.detailLoading = true getPurchasePlan(pid).then(res => { this.current = res.data || {} this.auditOpinion = '' - }) + }).finally(() => { this.detailLoading = false }) }).finally(() => { this.buttonLoading = false }) }, auditText(s) { diff --git a/klp-ui/src/views/erp/purchaseDelivery/index.vue b/klp-ui/src/views/erp/purchaseDelivery/index.vue index 610554d87..c81bf2814 100644 --- a/klp-ui/src/views/erp/purchaseDelivery/index.vue +++ b/klp-ui/src/views/erp/purchaseDelivery/index.vue @@ -53,7 +53,7 @@ 从左侧选择一条采购合同 - + {{ current.planNo }} @@ -61,6 +61,7 @@ 刷新到货 + 下载模板 采购要求 - - - + + + + 无采购要求 @@ -162,6 +164,7 @@ import { refreshArrival } from '@/api/erp/purchasePlan' import { getToken } from '@/utils/auth' +import * as XLSX from 'xlsx' export default { name: 'ErpPurchaseDelivery', @@ -176,6 +179,7 @@ export default { deliveryList: [], deliveryLoading: false, refreshing: false, + detailLoading: false, upload: { headers: { Authorization: 'Bearer ' + getToken() } }, progressColor: '#5b8db8' } @@ -220,7 +224,8 @@ export default { refreshDetail() { const planId = this.current.planId if (!planId) return - getPurchasePlan(planId).then(res => { this.current = { ...this.current, ...(res.data || {}) } }) + this.detailLoading = true + getPurchasePlan(planId).then(res => { this.current = { ...this.current, ...(res.data || {}) } }).finally(() => { this.detailLoading = false }) this.deliveryLoading = true listDelivery(planId).then(res => { this.deliveryList = res.data || [] }).finally(() => { this.deliveryLoading = false }) }, @@ -269,6 +274,15 @@ export default { }, contractStatusText(v) { return { 0: '草稿', 1: '生效', 2: '作废', 3: '已完成' }[v] || '—' + }, + downloadTemplate() { + const headers = ['日期', '牌号', '规格', '卷号', '单卷重量', '车号', '数量', '件数', '销售', '钢厂到站'] + const sampleRow = ['2026-01-01', 'Q235B', '1.0*1250*C', 'COIL0001', '20.50', '辽A12345', '60.8', '3', 'XS001', '沈阳站'] + const wb = XLSX.utils.book_new() + const ws = XLSX.utils.aoa_to_sheet([headers, sampleRow]) + ws['!cols'] = headers.map(h => ({ wch: h.length > 4 ? 14 : 10 })) + XLSX.utils.book_append_sheet(wb, ws, '到货模板') + XLSX.writeFile(wb, '到货导入模板.xlsx') } } } diff --git a/klp-ui/src/views/erp/purchasePlan/index.vue b/klp-ui/src/views/erp/purchasePlan/index.vue index a79b336a0..48d9fa6db 100644 --- a/klp-ui/src/views/erp/purchasePlan/index.vue +++ b/klp-ui/src/views/erp/purchasePlan/index.vue @@ -124,10 +124,13 @@ - + - + + + + @@ -157,7 +160,7 @@ - + {{ current.planNo }} @@ -212,9 +215,10 @@ - - - + + + + 无采购要求 @@ -367,6 +371,7 @@ export default { }, buttonLoading: false, submitLoading: false, + detailLoading: false, selectedContracts: [], // 合同选择器 pickerOpen: false, @@ -419,7 +424,8 @@ export default { refreshDetail() { const planId = this.current.planId if (!planId) return - getPurchasePlan(planId).then(res => { this.current = { ...this.current, ...(res.data || {}) } }) + this.detailLoading = true + getPurchasePlan(planId).then(res => { this.current = { ...this.current, ...(res.data || {}) } }).finally(() => { this.detailLoading = false }) }, // ---- 新增 / 编辑 ---- resetForm() { @@ -431,6 +437,7 @@ export default { this.mode = 'edit' }, handleEdit() { + this.detailLoading = true getPurchasePlan(this.current.planId).then(res => { const d = res.data || {} this.form = { @@ -440,7 +447,7 @@ export default { } this.selectedContracts = [] this.mode = 'edit' - }) + }).finally(() => { this.detailLoading = false }) }, cancelEdit() { this.mode = this.planList.length ? 'view' : 'empty' @@ -520,7 +527,7 @@ export default { }).catch(() => cb([])) }, blankItem() { - return { spec: '', weight: '', manufacturer: '' } + return { spec: '', material: '', weight: '', manufacturer: '' } }, addItem() { // 新行继承上一行的厂商(同批多为同厂),规格/重量留空 diff --git a/klp-ui/src/views/wms/coil/do/trace.vue b/klp-ui/src/views/wms/coil/do/trace.vue index 613adcd49..69d7b90a0 100644 --- a/klp-ui/src/views/wms/coil/do/trace.vue +++ b/klp-ui/src/views/wms/coil/do/trace.vue @@ -1,7 +1,7 @@ - 综合钢卷修正 + 钢卷追踪
从左侧选择一条采购合同进行审核
从左侧选择一条采购合同