From f0fe273eb5567002615a79ab82557593b3a8dd03 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 14 Jul 2026 09:10:04 +0800 Subject: [PATCH 01/16] =?UTF-8?q?fix:=E5=AE=A2=E6=88=B7=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=8E=A5=E5=8F=A3=E8=B0=83=E7=94=A8=E9=94=99?= =?UTF-8?q?=E8=AF=AF=EF=BC=8C=E8=AF=AF=E7=94=A8=E9=87=87=E8=B4=AD=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=88=A0=E9=99=A4=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=88=A0=E9=99=A4=E5=90=8E=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- src/views/sam/customer.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/views/sam/customer.vue b/src/views/sam/customer.vue index 2340760c..3b4c6bcb 100644 --- a/src/views/sam/customer.vue +++ b/src/views/sam/customer.vue @@ -121,8 +121,9 @@ this.$confirm(`确定删除吗?`, "提示", { type: "warning", }).then(() => { - this.$API.pum.order.delete.req(row.id).then((res) => { + this.$API.sam.customer.delete.req(row.id).then((res) => { this.$message.success("删除成功"); + this.$refs.table.refresh(); return res; }).catch((err) => { return err; From 0c73337a9a8f5a7b6a9da53e978d9f4e87b51d22 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 14 Jul 2026 10:24:08 +0800 Subject: [PATCH 02/16] =?UTF-8?q?fix:=E5=87=BA=E5=85=A5=E5=BA=93=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E9=A1=B5=E5=8D=95=E4=BB=B7/=E9=87=91=E9=A2=9D/?= =?UTF-8?q?=E5=90=88=E8=AE=A1=E6=94=B9=E7=94=A8=E5=90=8E=E7=AB=AF=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E7=9A=84unit=5Fprice=E3=80=81price=E3=80=81total=5Fpr?= =?UTF-8?q?ice,=E4=BF=AE=E5=A4=8D=E5=89=8D=E7=AB=AF=E6=B5=AE=E7=82=B9?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E8=AF=AF=E5=B7=AE;=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E6=80=BB=E9=87=91=E9=A2=9D=E4=BF=9D=E7=95=99?= =?UTF-8?q?=E4=B8=A4=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- src/views/inm/helpso.vue | 2 +- src/views/inm/mioitem.vue | 18 ++++-------------- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/src/views/inm/helpso.vue b/src/views/inm/helpso.vue index 8c7ddb97..9660d897 100644 --- a/src/views/inm/helpso.vue +++ b/src/views/inm/helpso.vue @@ -214,7 +214,7 @@ export default { that.$API.inm.warehouse.batch.req({ page: 0, count__gte: 1, material__type__in: "40" }).then((res) => { res.forEach(item => { let data0 = []; - let total = Number(item.material_.unit_price)*Number(item.count); + let total = Math.round(Number(item.material_.unit_price)*Number(item.count)*100)/100; data0.push(item.update_time); data0.push(item.material_.number); data0.push(item.material_.name); diff --git a/src/views/inm/mioitem.vue b/src/views/inm/mioitem.vue index 0e51f43f..a7a7c71b 100644 --- a/src/views/inm/mioitem.vue +++ b/src/views/inm/mioitem.vue @@ -104,15 +104,9 @@ {{scope.row.count}} - - + - @@ -721,13 +715,9 @@ that.$API.wpm.prints.req(printer_ip, obj).then((response) => { } } if(index==7&&this.cate == 'helpso'&&this.project_code=='gx'){ - let sumsss = 0; - data.forEach((item)=>{ - if(item.count&&item.material_.unit_price&&item.material_.unit_price!==null){ - sumsss += Number(item.count)*Number(item.material_.unit_price); - } - }) - sums[index] =sumsss; + // 直接用后端汇总的单据总金额 + const total = this.mioObj ? this.mioObj.total_price : null; + sums[index] = total !== null && total !== undefined ? total : ''; } }); From 33366baef7b7ae30f30acef2c8da4992587f65bd Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 14 Jul 2026 12:24:15 +0800 Subject: [PATCH 03/16] =?UTF-8?q?feat:=E6=96=B0=E5=A2=9E=E5=A4=A7=E6=89=B9?= =?UTF-8?q?=E7=9B=B4=E9=80=9A=E8=89=AF=E7=8E=87=E7=BB=9F=E8=AE=A1=E9=A1=B5?= =?UTF-8?q?zt=5Fbatch=5Fgx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 按大批展示直通_白料数/总合格数/良率/口径/子批次, 行展开平铺整份 统计data; 支持大批号/子批号反查/口径/日期过滤, 合计行与导出; 动态路由不注册router Co-Authored-By: Claude Fable 5 --- src/views/statistics/zt_batch_gx.vue | 234 +++++++++++++++++++++++++++ 1 file changed, 234 insertions(+) create mode 100644 src/views/statistics/zt_batch_gx.vue diff --git a/src/views/statistics/zt_batch_gx.vue b/src/views/statistics/zt_batch_gx.vue new file mode 100644 index 00000000..7ca9c99b --- /dev/null +++ b/src/views/statistics/zt_batch_gx.vue @@ -0,0 +1,234 @@ + + + + + From 0a3f7d7292fdb64eda329718e632c3a2ff4f81e9 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 14 Jul 2026 12:39:08 +0800 Subject: [PATCH 04/16] =?UTF-8?q?fix:zt=5Fbatch=5Fgx=E5=B1=95=E5=BC=80?= =?UTF-8?q?=E8=A1=8Ccount=5F*=E5=AD=97=E6=AE=B5=E5=90=8E=E7=BC=80=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E4=B8=BA=E4=B8=AD=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- src/views/statistics/zt_batch_gx.vue | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/views/statistics/zt_batch_gx.vue b/src/views/statistics/zt_batch_gx.vue index 7ca9c99b..6687d05f 100644 --- a/src/views/statistics/zt_batch_gx.vue +++ b/src/views/statistics/zt_batch_gx.vue @@ -64,7 +64,7 @@ @@ -148,6 +148,29 @@ export default { let s = row.data.直通_子批次; return s ? s.split(";").length : 0; }, + displayData(data) { + // count_* 字段后缀翻译为中文展示(注意 _count_ok_full 须在 _count_ok 之前替换) + const map = [ + ["_count_ok_full", "_完全合格数"], + ["_count_notok", "_不合格数"], + ["_count_ok", "_合格数"], + ["_count_use", "_领用数"], + ["_count_real", "_生产数"], + ["_count_pn_jgqbl", "_加工前不良"], + ]; + const out = {}; + for (const k in data) { + let nk = k; + for (const [en, cn] of map) { + if (nk.includes(en)) { + nk = nk.replace(en, cn); + break; + } + } + out[nk] = data[k]; + } + return out; + }, getList(val) { let that = this; that.params.page = val ? val : 1; From 94859d431d4dc587a433aa10faaca7f522e856f0 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 14 Jul 2026 14:23:34 +0800 Subject: [PATCH 05/16] =?UTF-8?q?fix:=E4=B8=8A=E7=9B=98=E5=B9=B3=E7=A3=A8?= =?UTF-8?q?=E5=90=88=E6=89=B9=E5=BC=B9=E7=AA=97=E6=80=BB=E8=AE=A1=E4=B8=8D?= =?UTF-8?q?=E5=88=B7=E6=96=B0,=E4=BA=A4=E6=8E=A5=E6=95=B0=E9=87=8F@change?= =?UTF-8?q?=E7=9A=84countChanges=E6=96=B9=E6=B3=95=E6=9C=AA=E5=A3=B0?= =?UTF-8?q?=E6=98=8E=E5=8F=98=E9=87=8F=E6=8A=A5=E9=94=99;=E6=80=BB?= =?UTF-8?q?=E8=AE=A1=E6=94=B9=E4=B8=BAcomputed=E8=AE=A1=E7=AE=97=E5=B1=9E?= =?UTF-8?q?=E6=80=A7,=E9=9A=8Fhandoverb=E8=87=AA=E5=8A=A8=E6=B1=87?= =?UTF-8?q?=E6=80=BB,=E5=B9=B6=E7=A7=BB=E9=99=A4=E5=88=86=E6=95=A3?= =?UTF-8?q?=E7=9A=84=E6=89=8B=E5=8A=A8=E7=B4=AF=E5=8A=A0=E4=B8=8E500ms?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E9=87=8D=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- src/views/wpm_bx/handover_form.vue | 47 ++++-------------------------- 1 file changed, 6 insertions(+), 41 deletions(-) diff --git a/src/views/wpm_bx/handover_form.vue b/src/views/wpm_bx/handover_form.vue index 181057d6..5895118d 100644 --- a/src/views/wpm_bx/handover_form.vue +++ b/src/views/wpm_bx/handover_form.vue @@ -101,7 +101,6 @@ :step-strictly="true" style="width: 100%" placeholder="交接数量" - @change="countChanges($index)" > @@ -383,7 +382,6 @@ export default { route_code: "", project_code:'', materials:[], - totalCount: 0, deptID:'', bwIndex:0, checkedStatus:[], @@ -466,6 +464,11 @@ export default { that.getMgroupOptions(); }, computed: { + // 总计:始终等于各批次交接数量之和,随 handoverb 自动刷新 + totalCount() { + if (!this.form.handoverb || this.form.handoverb.length === 0) return 0; + return this.form.handoverb.reduce((sum, item) => sum + Number(item.count || 0), 0); + }, // 合批时源批次 state 均为 OK(10) 且 defect 不一致,才显示"清除缺陷"勾选 defectMismatch() { if (this.mtype !== 30) return false; @@ -490,11 +493,6 @@ export default { that.checkedStatus.splice(index,1); this.form.handoverb[this.bwIndex].handoverbw.splice(index,1); this.form.handoverb[this.bwIndex].count--; - let totalCount = 0; - that.form.handoverb.forEach((item)=>{ - totalCount += item.count; - }) - that.totalCount = totalCount; }, showbw(index){ let that = this; @@ -680,7 +678,6 @@ export default { delMaterial(index){ this.selectItems.splice(index,1); this.form.handoverb.splice(index,1); - this.countChange(); }, codeTextChange(text){ this.wm_in = text; @@ -701,12 +698,10 @@ export default { } that.form.handoverb = data?data:[]; if(data&&data!==''&&data.length>0){ - that.totalCount = 0; data.forEach((item,index)=>{ item.wm = item.id; that.checkedStatus.push(true) that.selectItems.push(item.id) - that.totalCount += Number(item.count); that.getWprList(item.wm,index); }) if(that.isFeiPinku){ @@ -720,7 +715,6 @@ export default { }, clearSelect(){ let that = this; - that.totalCount = 0; that.form.handoverb = []; }, materialChange() { @@ -735,7 +729,7 @@ export default { }); } that.form.new_batch = that.route_code=='shangpaipingmo'?that.form.new_batch:""; - let totalCount = 0,data = []; + let data = []; if(that.selectItems.length>0){ console.log('that.selectItems',that.selectItems) data = that.materialOptions.filter((item) => { @@ -783,10 +777,8 @@ export default { // 保留已扫板段的 handoverbw 和数量 item.handoverbw = scanned.handoverbw; item.count = scanned.count; - totalCount += Number(scanned.count); } else { item.count = item.count_canhandover; - totalCount += Number(item.count_canhandover); item.handoverbw = []; that.getWprList(item.id,index); } @@ -800,7 +792,6 @@ export default { return true; }); } - that.totalCount = totalCount; that.form.handoverb = data; }, getWprList(id,index){ @@ -830,28 +821,6 @@ export default { }else{ this.checkedStatus[index] = false; } - this.countChange(); - }, - countChange(){ - let that = this; - let totalCount = 0; - if(this.form.handoverb&&this.form.handoverb.length&&this.form.handoverb.length>0){ - this.form.handoverb.forEach(item=>{ - totalCount += Number(item.count); - }) - that.totalCount = totalCount; - }else{ - that.totalCount = 0; - } - }, - countChanges(index){ - if(this.form.handoverb[index]){}else{} - if(this.form.handoverb.length>0){ - this.form.handoverb.forEach(item=>{ - totalCount += item.count; - }) - that.totalCount = totalCount; - } }, //提交 submit() { @@ -910,7 +879,6 @@ export default { //表单注入数据 setData(data) { let that = this; - this.totalCount = data.count?data.count:data.handoverb.count; Object.assign(this.form, data); this.$API.system.user.list.req({ depts: data.send_dept, page: 0 }).then((res) => { that.userList = res; @@ -1154,9 +1122,6 @@ export default { } } } - setTimeout(() => { - this.countChange(); - }, 500); }, new_batch(){ let that = this; From cc69fa8cca430818626dd1097ed6773d98586f5e Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 14 Jul 2026 15:21:32 +0800 Subject: [PATCH 06/16] =?UTF-8?q?feat:=E7=89=A9=E6=96=99=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AE=89=E5=85=A8=E5=BA=93=E5=AD=98=E4=B8=8A?= =?UTF-8?q?=E9=99=90,=20=E6=96=B0=E5=A2=9E=E4=BB=93=E5=BA=93=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E6=B1=87=E6=80=BB=E6=8A=A5=E8=A1=A8=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- src/views/bi/material_wh_summary.vue | 155 +++++++++++++++++++++++++++ src/views/mtm/materials_form.vue | 10 +- src/views/mtm/materials_form_gx.vue | 11 +- 3 files changed, 174 insertions(+), 2 deletions(-) create mode 100644 src/views/bi/material_wh_summary.vue diff --git a/src/views/bi/material_wh_summary.vue b/src/views/bi/material_wh_summary.vue new file mode 100644 index 00000000..26666d11 --- /dev/null +++ b/src/views/bi/material_wh_summary.vue @@ -0,0 +1,155 @@ + + + + + + diff --git a/src/views/mtm/materials_form.vue b/src/views/mtm/materials_form.vue index 1dae8d0d..1f379f34 100644 --- a/src/views/mtm/materials_form.vue +++ b/src/views/mtm/materials_form.vue @@ -133,13 +133,21 @@ - + + + + + + diff --git a/src/views/mtm/materials_form_gx.vue b/src/views/mtm/materials_form_gx.vue index 4b5b1463..d2aac6d5 100644 --- a/src/views/mtm/materials_form_gx.vue +++ b/src/views/mtm/materials_form_gx.vue @@ -122,13 +122,21 @@ - + + + + + + @@ -346,6 +354,7 @@ export default { that.form.process = data.process; that.form.tracking = data.tracking; that.form.count_safe = data.count_safe; + that.form.count_safe_upper = data.count_safe_upper; that.form.is_hidden = data.is_hidden; that.form.unit_price = data.unit_price; that.form.photo = data.photo; From ee40da346127c475c3e4e7eae61ec21c981ef17f Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 14 Jul 2026 15:44:02 +0800 Subject: [PATCH 07/16] =?UTF-8?q?refactor:=E4=BB=93=E5=BA=93=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E6=B1=87=E6=80=BB=E6=8A=A5=E8=A1=A8=E9=A1=B5=E7=A7=BB?= =?UTF-8?q?=E8=87=B3=20statistics=20=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- src/views/{bi => statistics}/material_wh_summary.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/views/{bi => statistics}/material_wh_summary.vue (98%) diff --git a/src/views/bi/material_wh_summary.vue b/src/views/statistics/material_wh_summary.vue similarity index 98% rename from src/views/bi/material_wh_summary.vue rename to src/views/statistics/material_wh_summary.vue index 26666d11..1637c82d 100644 --- a/src/views/bi/material_wh_summary.vue +++ b/src/views/statistics/material_wh_summary.vue @@ -2,7 +2,7 @@ 物料保障车间-仓库数量汇总表 数据来源: BI 数据集 code=wh_material_summary (POST api/bi/dataset/{code}/exec) 返回 res.data2.ds0~ds3, 分组维度为 material.model(型号) - 菜单/路由由后端下发, component 填 bi/material_wh_summary + 菜单/路由由后端下发, component 填 statistics/material_wh_summary --> From 2e22f851a064f1ceb2d5c81f079a8a921080ca8d Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 15 Jul 2026 08:18:31 +0800 Subject: [PATCH 09/16] =?UTF-8?q?feat:=E4=BB=93=E5=BA=93=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E6=B1=87=E6=80=BB=E6=8A=A5=E8=A1=A8=E6=94=AF=E6=8C=81=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E7=8A=B6=E6=80=81=E8=AE=BE=E5=AE=9A=E5=AE=89=E5=85=A8?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E4=B8=8A=E4=B8=8B=E9=99=90=E5=B9=B6=E6=97=A5?= =?UTF-8?q?=E6=9C=9F=E8=87=AA=E5=8A=A8=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- src/api/model/mtm.js | 9 +++ src/views/statistics/material_wh_summary.vue | 80 +++++++++++++++++++- 2 files changed, 87 insertions(+), 2 deletions(-) diff --git a/src/api/model/mtm.js b/src/api/model/mtm.js index f040f893..9cabf4f2 100644 --- a/src/api/model/mtm.js +++ b/src/api/model/mtm.js @@ -94,6 +94,15 @@ export default { ); }, }, + setSafe: { + name: "设置安全库存上下限", + req: async function (id, data) { + return await http.put( + `${config.API_URL}/mtm/material/${id}/set_safe/`, + data + ); + }, + }, update: { name: "更新", req: async function (id, data) { diff --git a/src/views/statistics/material_wh_summary.vue b/src/views/statistics/material_wh_summary.vue index c40ddc58..53c10e8a 100644 --- a/src/views/statistics/material_wh_summary.vue +++ b/src/views/statistics/material_wh_summary.vue @@ -17,6 +17,7 @@ end-placeholder="截止时间(当周周末)" :clearable="false" style="margin-right: 12px;" + @change="fetchData" /> 查询 分组维度: 物料型号(model) @@ -52,9 +53,12 @@ - + @@ -100,6 +104,28 @@ + + + + + + {{ safeDialog.block }} / {{ safeDialog.model }} + + + {{ fmtNum(safeDialog.stock) }} + + + + + + + + + + @@ -125,6 +151,16 @@ export default { ds1: [], ds2: [], ds3: [], + safeDialog: { + visible: false, + saving: false, + material_id: null, + block: "", + model: "", + stock: 0, + count_safe: undefined, + count_safe_upper: undefined, + }, }; }, computed: { @@ -236,6 +272,46 @@ export default { this.loading = false; }); }, + // 打开设定弹窗(按型号代表物料 material_id 设置) + openSafe(row) { + if (!row.material_id) { + this.$message.warning("该型号暂无可设定的物料"); + return; + } + const lo = row["安全库存下限"]; + const hi = row["安全库存上限"]; + this.safeDialog = { + visible: true, + saving: false, + material_id: row.material_id, + block: row["区块"], + model: row["型号"], + stock: row["库存量"], + count_safe: lo === null || lo === undefined || lo === "" ? undefined : this.num(lo), + count_safe_upper: hi === null || hi === undefined || hi === "" ? undefined : this.num(hi), + }; + }, + saveSafe() { + const d = this.safeDialog; + if (d.count_safe != null && d.count_safe_upper != null && Number(d.count_safe) > Number(d.count_safe_upper)) { + this.$message.warning("下限不能大于上限"); + return; + } + d.saving = true; + this.$API.mtm.material.setSafe + .req(d.material_id, { + count_safe: d.count_safe === undefined ? null : d.count_safe, + count_safe_upper: d.count_safe_upper === undefined ? null : d.count_safe_upper, + }) + .then(() => { + this.$message.success("设置成功"); + d.visible = false; + this.fetchData(); + }) + .finally(() => { + d.saving = false; + }); + }, mergeFirstCol(rows, key, rowIndex, columnIndex) { if (columnIndex !== 0) return; const cur = rows[rowIndex] && rows[rowIndex][key]; From 4c2caee8f621d7b84683a8e248fc039acc6f1670 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 15 Jul 2026 16:31:23 +0800 Subject: [PATCH 10/16] =?UTF-8?q?perf:=E9=94=80=E5=94=AE=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E8=A1=A8=E5=8D=95=E6=94=B9=E4=B8=BA=E6=8C=89?= =?UTF-8?q?=E4=BB=93=E5=BA=93=E6=89=B9=E6=AC=A1=E9=80=89=E6=8B=A9=E5=B9=B6?= =?UTF-8?q?=E7=B2=BE=E7=AE=80=E5=86=97=E4=BD=99=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bxerp销售发货:第一个下拉"物料"改名"仓库批次",下拉表格增加物料名/批次号/ 仓库/可发数量列,新增只读批次信息摘要,隐藏重复的批次号编辑框、仓库已有批次、 自动锁定的仓库框。仅影响sale_out&&bxerp分支,不影响gz/gx及其他出入库类型。 Co-Authored-By: Claude Opus 4.8 (1M context) --- src/views/inm/mioitem_form.vue | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/views/inm/mioitem_form.vue b/src/views/inm/mioitem_form.vue index 1f52f301..20c1c9dd 100644 --- a/src/views/inm/mioitem_form.vue +++ b/src/views/inm/mioitem_form.vue @@ -19,28 +19,39 @@ - + - + + + + + + + + 批次号:{{ form.batch }} | 仓库:{{ selectObj&&selectObj.warehouse_name?selectObj.warehouse_name:'' }} | 可发数量:{{ batchcount }} + + + - - + - + - + Date: Wed, 15 Jul 2026 21:16:28 +0800 Subject: [PATCH 11/16] =?UTF-8?q?perf:=E7=94=9F=E4=BA=A7=E9=A2=86=E6=96=99?= =?UTF-8?q?/=E5=85=B6=E4=BB=96=E5=87=BA=E5=BA=93(bxerp+gz)=E6=94=B9?= =?UTF-8?q?=E6=8C=89=E4=BB=93=E5=BA=93=E6=89=B9=E6=AC=A1=E9=80=89=E6=8B=A9?= =?UTF-8?q?,=E7=94=9F=E4=BA=A7=E5=85=A5=E5=BA=93=E6=89=B9=E6=AC=A1?= =?UTF-8?q?=E4=B8=8B=E6=8B=89=E6=98=BE=E7=A4=BA=E5=B7=A5=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 抽isBatchPick统一bxerp/gz出库(do_out/other_out)为选仓库批次:下拉带 物料名/批次号/仓库/可发量、只读批次摘要、隐藏冗余框,选中自动回填并按 物料类型限定可领范围;销售发货仍仅bxerp,gx出库靠扫码保持原样不变。 生产入库批次下拉每项加显示工段(mgroup_name)。 Co-Authored-By: Claude Opus 4.8 (1M context) --- src/views/inm/mioitem_form.vue | 49 ++++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/src/views/inm/mioitem_form.vue b/src/views/inm/mioitem_form.vue index 20c1c9dd..7f5d72f3 100644 --- a/src/views/inm/mioitem_form.vue +++ b/src/views/inm/mioitem_form.vue @@ -19,13 +19,13 @@ - + {{ scope.row.material_name }} - - - + + + - + 批次号:{{ form.batch }} | 仓库:{{ selectObj&&selectObj.warehouse_name?selectObj.warehouse_name:'' }} | 可发数量:{{ batchcount }} @@ -50,7 +50,7 @@ - + {{ item.count }}{{ item.count }} @@ -95,7 +95,7 @@ /> - + - + Date: Thu, 16 Jul 2026 07:56:43 +0800 Subject: [PATCH 12/16] =?UTF-8?q?feat:scScanner=E6=94=AF=E6=8C=81=E6=89=AB?= =?UTF-8?q?=E7=A0=81=E6=9E=AA(=E8=93=9D=E7=89=99/USB)=E8=BE=93=E5=85=A5,?= =?UTF-8?q?=E5=A5=97=E5=A3=B3=E7=8E=AF=E5=A2=83=E4=BF=9D=E7=95=99=E5=8E=9F?= =?UTF-8?q?=E7=94=9F=E6=89=AB=E7=A0=81=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 增强公共扫码组件:常驻扫码枪输入框(HID键盘,聚焦后扫码回车触发), 检测到window.Android时额外显示原生扫码按钮;统一emit scanResult事件, 28个引用页面向后兼容。含中文输入法检测提示。平板蓝牙枪、PC USB枪均可用。 Co-Authored-By: Claude Opus 4.8 (1M context) --- src/components/scScanner.vue | 62 +++++++++++++++++++++++++----------- 1 file changed, 44 insertions(+), 18 deletions(-) diff --git a/src/components/scScanner.vue b/src/components/scScanner.vue index ada5fa4e..2f03bc60 100644 --- a/src/components/scScanner.vue +++ b/src/components/scScanner.vue @@ -1,39 +1,65 @@ From 3d75e89e1ef24ec7e7af400da824d1dc2681bfb1 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 16 Jul 2026 08:53:27 +0800 Subject: [PATCH 13/16] release: 3.1.2026071608 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 前端版本统一到3.1体系:改update_changelog.sh写死的2.7为3.1,APP_VER同步, changelog收录2026-07-14~07-16这批(仓库汇总报表/安全库存/直通良率/合批与 单价修复/销售发货及出库改选批次/扫码枪支持)。 Co-Authored-By: Claude Opus 4.8 (1M context) --- changelog.md | 17 +++++++++++++++++ src/config/index.js | 2 +- update_changelog.sh | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/changelog.md b/changelog.md index 99349560..81fa05e5 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,20 @@ +## 3.1.2026071608 + +- feat: 新增功能 + - scScanner支持扫码枪(蓝牙/USB)输入,套壳环境保留原生扫码按钮 [caoqianming] + - 仓库数量汇总报表支持点击状态设定安全库存上下限并日期自动查询 [caoqianming] + - 物料档案增加安全库存上限, 新增仓库数量汇总报表页 [caoqianming] + - 新增大批直通良率统计页zt_batch_gx [caoqianming] +- fix: 问题修复 + - 上盘平磨合批弹窗总计不刷新,交接数量@change的countChanges方法未声明变量报错;总计改为computed计算属性,随handoverb自动汇总,并移除分散的手动累加与500ms定时重算 [caoqianming] + - zt_batch_gx展开行count_*字段后缀翻译为中文 [caoqianming] + - 出入库明细页单价/金额/合计改用后端返回的unit_price、price、total_price,修复前端浮点计算误差;库存导出总金额保留两位 [caoqianming] + - 客户页面删除接口调用错误,误用采购订单删除接口,并补充删除后刷新列表 [caoqianming] +- other: 其他变更 + - perf:生产领料/其他出库(bxerp+gz)改按仓库批次选择,生产入库批次下拉显示工段 [caoqianming] + - perf:销售发货明细表单改为按仓库批次选择并精简冗余字段 [caoqianming] + - style:仓库数量汇总报表页优化显示(KPI概览/对比图/网格/合计/安全库存预警) [caoqianming] + - refactor:仓库数量汇总报表页移至 statistics 目录 [caoqianming] ## 2.6.2025041413 - fix: 问题修复 - fmlog日志添加时,物料只展示来料未完成 [shijing] diff --git a/src/config/index.js b/src/config/index.js index cb121a62..cc04592b 100644 --- a/src/config/index.js +++ b/src/config/index.js @@ -6,7 +6,7 @@ const DEFAULT_CONFIG = { DASHBOARD_URL: "/dashboard", //版本号 - APP_VER: "3.1.2026031316", + APP_VER: "3.1.2026071608", //内核版本号 CORE_VER: "1.6.9", diff --git a/update_changelog.sh b/update_changelog.sh index acd9a958..28a8f9c9 100644 --- a/update_changelog.sh +++ b/update_changelog.sh @@ -1,7 +1,7 @@ #!/bin/bash # 设置默认版本号 (格式: 2.6.YYYYMMDDHH) -DEFAULT_VERSION="2.7.$(date '+%Y%m%d%H')" +DEFAULT_VERSION="3.1.$(date '+%Y%m%d%H')" # 获取参数 (起始tag) TARGET_TAG="$1" From 27060f7c540e0f67608d0c27ead55941c75393b3 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 16 Jul 2026 09:54:36 +0800 Subject: [PATCH 14/16] =?UTF-8?q?fix:=E5=87=BA=E5=85=A5=E5=BA=93=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=8F=8A=E6=98=8E=E7=BB=86=E8=A1=A8=E5=8D=95=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=97=B6=E6=B8=85=E7=A9=BA,=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E4=B8=8A=E6=AC=A1=E4=BF=9D=E5=AD=98=E6=95=B0=E6=8D=AE=E6=AE=8B?= =?UTF-8?q?=E7=95=99=E5=AF=BC=E8=87=B4"=E7=89=A9=E6=96=99=E6=89=BE?= =?UTF-8?q?=E4=B8=8D=E5=88=B0"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mio_form/mioitem_form的open()原只设type、不重置form,saveDialog虽用 v-if="dialog.save"+@closed重建,但关闭动画未结束就再点新增时dialog.save 仍为true、组件被复用,导致上次的material/mb/batch/selectObj等残留。 新增resetForm(),add模式打开时强制清空,不依赖v-if重建时序。 Co-Authored-By: Claude Opus 4.8 (1M context) --- src/views/inm/mio_form.vue | 7 +++++++ src/views/inm/mioitem_form.vue | 24 ++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/views/inm/mio_form.vue b/src/views/inm/mio_form.vue index 03b23ae0..446f46f0 100644 --- a/src/views/inm/mio_form.vue +++ b/src/views/inm/mio_form.vue @@ -326,10 +326,17 @@ export default { // console.log('userOption',userOption); }); }, + //新增时清空表单,避免上次保存的数据残留(与mioitem_form一致,防v-if未及时重建时复用旧实例) + resetForm() { + this.form = { state: 10, inout_date: this.$TOOL.dateFormat2(new Date()) }; + }, //显示 open(mode = "add", type = "",htype="") { this.mode = mode; this.htype = htype; + if (mode == "add") { + this.resetForm(); + } this.form.type = type; this.init(); this.visible = true; diff --git a/src/views/inm/mioitem_form.vue b/src/views/inm/mioitem_form.vue index 7f5d72f3..e36202e5 100644 --- a/src/views/inm/mioitem_form.vue +++ b/src/views/inm/mioitem_form.vue @@ -735,11 +735,35 @@ export default { this.form.warehouse = ""; this.inputBatchDisable = false; }, + //新增时清空表单,避免上次保存的数据残留导致"物料找不到"等错误 + resetForm() { + this.form = { count: 1, note: '', pack_index: 1 }; + this.selectObj = null; + this.selectBatch = null; + this.mioitems = ['']; + this.mioitemw = []; + this.wprList = []; + this.wbatchOptions = []; + this.batchOptions = []; + this.batchOptions_o = []; + this.components = []; + this.assembShow = false; + this.batchcount = null; + this.mTracking = 10; + this.prefix = ''; + this.halfgoodprefix = ''; + this.digitNum = null; + this.count_send_yp = 0; + this.inputBatchDisable = false; + }, //显示 open(mode = "add", type = "",mtype) { let that = this; this.mode = mode; this.mtype = mtype?mtype:null; + if (mode == "add") { + this.resetForm(); + } this.form.type = this.type = type; if (mode == "add") { this.init(); From c8f38e54b62ad1cd8c3d77998b1d4d0ebebfb4cf Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 16 Jul 2026 10:21:10 +0800 Subject: [PATCH 15/16] =?UTF-8?q?feat:=E5=90=88=E6=A0=BCB=E7=B1=BB?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E6=96=87=E6=A1=88=E6=94=B9=E4=B8=BA=E8=AE=B0?= =?UTF-8?q?=E4=B8=BA=E5=90=88=E6=A0=BC=E6=9B=B4=E5=87=86=E7=A1=AE=E8=A1=A8?= =?UTF-8?q?=E8=BE=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 工序/日志提交处 clear_defect 开关文案由不拆批/合批清除缺陷统一改为合格B类记为合格,与后端同步。 Co-Authored-By: Claude Opus 4.8 (1M context) --- src/views/mtm/process_form.vue | 2 +- src/views/wpm_bx/mlog_detail.vue | 2 +- src/views/wpm_gx/mlog_detail.vue | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/views/mtm/process_form.vue b/src/views/mtm/process_form.vue index 7d4fd8f4..405d00d0 100644 --- a/src/views/mtm/process_form.vue +++ b/src/views/mtm/process_form.vue @@ -98,7 +98,7 @@ - + diff --git a/src/views/wpm_bx/mlog_detail.vue b/src/views/wpm_bx/mlog_detail.vue index 3b64422b..5224b448 100644 --- a/src/views/wpm_bx/mlog_detail.vue +++ b/src/views/wpm_bx/mlog_detail.vue @@ -60,7 +60,7 @@
- 合格B类不拆批 + 合格B类记为合格
- 合格B类不拆批 + 合格B类记为合格
Date: Thu, 16 Jul 2026 12:06:41 +0800 Subject: [PATCH 16/16] =?UTF-8?q?feat:=E9=94=80=E5=94=AE=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=E6=89=B9=E6=AC=A1=E9=80=89=E6=8B=A9=E9=9A=90=E8=97=8F=E5=8F=AF?= =?UTF-8?q?=E5=8F=91=E6=95=B0=E9=87=8F=E4=B8=BA0=E7=9A=84=E6=89=B9?= =?UTF-8?q?=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 批次查询改用后端 count_canmio__gt=0 过滤(存量-在途出入库), 只展示可实际发货的批次 Co-Authored-By: Claude Opus 4.8 (1M context) --- src/views/inm/mioitem_form.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/views/inm/mioitem_form.vue b/src/views/inm/mioitem_form.vue index e36202e5..be5d19ae 100644 --- a/src/views/inm/mioitem_form.vue +++ b/src/views/inm/mioitem_form.vue @@ -507,7 +507,8 @@ export default { // orderitem_material__order: this.mioObj.order, type:10, // material__type: 10 - count__gte: 1, + // 只展示可发数量(存量-在途出入库)大于0的批次 + count_canmio__gt: 0, }; this.inputBatchDisable = true;