From f0c1691775b94f3f615cb170a69d51dfa0672a83 Mon Sep 17 00:00:00 2001 From: lb Date: Thu, 27 Jul 2023 16:41:02 +0800 Subject: [PATCH] update 0727 docs --- src/components/BaseListTable.vue | 7 + src/components/DialogJustForm.vue | 5 +- src/views/atomViews/ListViewWithHead.vue | 16 +- src/views/modules/pms/bom/config.js | 350 ++++++++++++--------- src/views/modules/pms/pressOrder/config.js | 4 +- 5 files changed, 227 insertions(+), 155 deletions(-) diff --git a/src/components/BaseListTable.vue b/src/components/BaseListTable.vue index 407bf63..7a14ffd 100644 --- a/src/components/BaseListTable.vue +++ b/src/components/BaseListTable.vue @@ -10,6 +10,7 @@ }" row-key="id" :cell-style="{ padding: 0 }" + @selection-change="handleSelectionChange" border > @@ -113,6 +114,7 @@ export default { data() { return { dataList: [], + selections: [] }; }, watch: { @@ -125,6 +127,11 @@ export default { console.log("[component] BaseListTable handleSubEmitData(): ", payload); this.$emit("operate-event", payload); }, + handleSelectionChange(val) { + // this.selections = val; + console.log('selections change: ', val) + this.$emit('select', val.map(item => item.id)) + } }, }; diff --git a/src/components/DialogJustForm.vue b/src/components/DialogJustForm.vue index 2aa42b9..13b98f3 100644 --- a/src/components/DialogJustForm.vue +++ b/src/components/DialogJustForm.vue @@ -520,7 +520,7 @@ export default { if (fields.indexOf(key) !== -1) { // console.log(`key ${key} in fields`) // this.dataForm[key] = null; - this.$set(this.dataForm, key, null) + this.$set(this.dataForm, key, null); } }); console.log("this.dataform", this.dataForm); @@ -743,6 +743,9 @@ export default { case "update": this.addOrUpdate(payload.name === "add" ? "POST" : "PUT"); break; + case "update-bom": + this.addOrUpdate("POST", this.urls.editUrl); + break; case "add-pos-manually": { this.addOrUpdate("POST", this.urls.posFormUrl); break; diff --git a/src/views/atomViews/ListViewWithHead.vue b/src/views/atomViews/ListViewWithHead.vue index f563cbe..e4b0c75 100644 --- a/src/views/atomViews/ListViewWithHead.vue +++ b/src/views/atomViews/ListViewWithHead.vue @@ -12,6 +12,7 @@ @operate-event="handleOperate" :current-page="page" :current-size="size" + @select="handleTableSelect" :refresh-layout-key="refreshLayoutKey" /> {}); } case "edit": { - console.log("[edit] ",data) + console.log("[edit] ", data); this.openDialog(data); /** data is ==> id */ break; } @@ -605,6 +611,14 @@ export default { handleBtnClick({ btnName, payload }) { console.log("[search] form handleBtnClick", btnName, payload); switch (btnName) { + case "批量同步": + this.overlayVisible = true; + this.$http.post(this.urls.syncUrl, this.tableSelectedIds).then(({ data: res }) => { + this.$message({ message: res.msg, type: res.code === 0 ? "success" : "error" }); + res.code == 0 && this.getList(); + this.overlayVisible = false; + }); + break; case "新增": this.openDialog(); break; diff --git a/src/views/modules/pms/bom/config.js b/src/views/modules/pms/bom/config.js index c0b6f9a..a18128b 100644 --- a/src/views/modules/pms/bom/config.js +++ b/src/views/modules/pms/bom/config.js @@ -7,10 +7,11 @@ import techBox from "@/components/noTemplateComponents/techBox"; export default function () { const tableProps = [ { type: "index", label: "序号" }, + { type: "selection" }, { width: 160, prop: "code", label: "配方号" }, { prop: "name", label: "牌号" }, { prop: "syncTime", label: "同步时间", filter: timeFilter }, - { width: 90, prop: "techCode", label: "烧制曲线", subcomponent: techBox }, + { width: 120, prop: "techCode", label: "烧制曲线", subcomponent: techBox }, { prop: "upweight", label: "建议混料上限" }, { prop: "downweight", label: "建议混料下限" }, // { prop: "externalCode", label: "版本号" }, @@ -38,9 +39,9 @@ export default function () { width: 120, subcomponent: TableOperaionComponent, options: [ - { name: "sync", label: "同步", icon: "refresh", emitFull: true, showOverlay: true } + // { name: "sync", label: "同步", icon: "refresh", emitFull: true, showOverlay: true } // { name: "copy", label: "复制", icon: "copy-document" }, - // { name: "edit", label: "编辑", icon: "edit-outline" }, + { name: "edit", label: "编辑", icon: "edit-outline" }, // { name: "delete", icon: "delete", label: "删除", emitFull: true, permission: "pms:bom:delete" }, ], }, @@ -83,169 +84,214 @@ export default function () { ]; const dictList = JSON.parse(localStorage.getItem("dictList") || {}); + // const dialogConfigs = { + // menu: [ + // { name: "配方", key: "info" }, + // { name: "配方详情", key: "attr", onlyEditMode: true }, + // // { + // // name: "附件", + // // key: "attachment", + // // onlyEditMode: true, + // // actionUrl: window.SITE_CONFIG["apiURL"] + "/pms/attachment/uploadFileFormData?typeCode=ProductAttachment", + // // }, + // ], + // form: { + // rows: [ + // [ + // { + // input: true, + // label: "牌号", + // prop: "name", + // rules: { required: true, message: "必填项不能为空", trigger: "blur" }, + // elparams: { placeholder: "请输入牌号" }, + // }, + // { + // input: true, + // label: "配方编码", + // prop: "code", + // rules: { required: true, message: "必填项不能为空", trigger: "blur" }, + // elparams: { placeholder: "请输入配方编码" }, + // }, + // // { input: true, label: '版本号', prop: 'version', elparams: { placeholder: '请输入版本号' } }, + // // { + // // select: true, + // // label: "产品类型", + // // prop: "typeDictValue", + // // options: "product_type" in dictList ? dictList["product_type"].map((item) => ({ value: item.dictValue, label: item.dictLabel })) : [], + // // elparams: { placeholder: "选择一个产品类型" }, + // // }, + // ], + // [ + // // { input: true, label: '单位平方数', prop: 'code', rules: { required: true, message: '必填项不能为空', trigger: 'blur' }, elparams: { placeholder: '请输入设备名称编码' } }, + // // { + // // select: true, + // // label: "单位", + // // prop: "unitDictValue", + // // options: "unit" in dictList ? dictList["unit"].map((item) => ({ value: item.dictValue, label: item.dictLabel })) : [], + // // elparams: { placeholder: "选择单位" }, + // // }, + // { + // input: true, + // label: "版本号", + // prop: "externalCode", + // rules: { required: true, message: "必填项不能为空", trigger: "blur" }, + // elparams: { placeholder: "请输入版本号" }, + // }, + // { input: true, label: "物料销售文本(短)", prop: "shortDesc", elparams: { placeholder: "物料销售文本" } }, + // ], + // [{ textarea: true, label: "物料销售文本", prop: "description", elparams: { placeholder: "物料销售文本" } }], + // [{ input: true, label: "备注", prop: "remark", elparams: { placeholder: "备注" } }], + // [ + // { + // // input: true, + // forceDisabled: true, + // label: "同步状态", + // prop: "sync", + // key: "sync", + // // rules: { required: true, message: "必填项不能为空", trigger: "blur" }, + // // elparams: { placeholder: "请输入同步状态" }, + // }, + // ], + // ], + // operations: [ + // { name: "add", label: "保存", type: "primary", permission: "pms:bom:save", showOnEdit: false }, + // { name: "update", label: "更新", type: "primary", permission: "pms:bom:update", showOnEdit: true }, + // { name: "reset", label: "重置", type: "warning", showAlways: true }, + // // { name: 'cancel', label: '取消', showAlways: true }, + // ], + // }, + // table: { + // // extraParams: ['stepId'], + // extraParams: "bomId", + // props: [ + // { type: "index", label: "序号" }, + // { prop: "material", label: "物料", isEditField: true }, + // { + // width: 130, + // prop: "qty", + // label: "配方物料重量", + // filter: (val) => (!!val ? val + " kg" : "-"), + // isEditField: true, + // }, + // { + // width: 130, + // prop: "sumqty", + // label: "配方总重量", + // filter: (val) => (!!val ? val + " kg" : "-"), + // isEditField: true, + // }, + // { prop: "percent", label: "配比 [%]", filter: (val) => (!!val ? val + " %" : "-"), isEditField: true }, + // { prop: "remark", label: "备注", isEditField: true }, + // { prop: "createTime", label: "添加时间", filter: timeFilter }, + // { + // prop: "operations", + // name: "操作", + // fixed: "right", + // width: 90, + // subcomponent: TableOperaionComponent, + // options: [ + // { name: "edit", label: "编辑", icon: "edit-outline", permission: "pms:bomMaterial:update" }, + // { name: "delete", icon: "delete", label: "删除", emitFull: true, permission: "pms:bomMaterial:delete" }, + // ], + // }, + // ], + // data: [ + // // TOOD 暂时用不到,但获取可以考虑把拉取接口数据的函数迁移到此文件(没有太大必要) + // ], + // }, + + // subDialog: { + // extraParam: "bomId", + // forceAttachCode: true, // 产品属性新增必填 code 字段...... + // rows: [ + // [ + // { + // select: true, + // label: "物料", + // prop: "materialId", + // rules: { required: true, message: "必填项不能为空", trigger: "blur" }, + // elparams: { placeholder: "请选择物料", filterable: true }, + // options: [], + // fetchData: () => this.$http.get("/pms/material/page", { params: { limit: 999, page: 1 } }), + // // fetchData: () => new Promise((resolve) => { + // // setTimeout(() => { + // // resolve({ + // // data: { + // // code: 0, + // // data: { + // // total: 0, + // // list: + // // [ + // // { id: 10001, name: 'mock物料1' }, + // // { id: 10002, name: 'mock物料2' }, + // // { id: 10003, name: 'mock物料3' }, + // // { id: 10004, name: 'mock物料4' }, + // // { id: 10005, name: 'mock物料5' }, + // // ] + // // } + // // } + // // }) + // // }, 800) + // // }) + // }, + // { + // input: true, + // label: "物料重量[kg]", + // prop: "qty", + // rules: { required: true, message: "必填项不能为空", trigger: "blur" }, + // elparams: { placeholder: "请输入物料重量" }, + // }, + // ], + // [{ textarea: true, label: "备注", prop: "remark", elparams: { placeholder: "添加备注" } }], + // ], + // operations: [ + // { name: "add", label: "保存", type: "primary", permission: "pms:bomMaterial:save", showOnEdit: false }, + // { name: "update", label: "更新", type: "primary", permission: "pms:bomMaterial:update", showOnEdit: true }, + // ], + // }, + // }; + const dialogConfigs = { - menu: [ - { name: "配方", key: "info" }, - { name: "配方详情", key: "attr", onlyEditMode: true }, - // { - // name: "附件", - // key: "attachment", - // onlyEditMode: true, - // actionUrl: window.SITE_CONFIG["apiURL"] + "/pms/attachment/uploadFileFormData?typeCode=ProductAttachment", - // }, - ], form: { rows: [ [ + { + input: true, + label: "配方号", + prop: "code", + rules: { required: true, message: "必填项不能为空", trigger: "blur" }, + // disabledOnEdit: true + elparams: { disabled: true }, + }, { input: true, label: "牌号", prop: "name", rules: { required: true, message: "必填项不能为空", trigger: "blur" }, - elparams: { placeholder: "请输入牌号" }, + elparams: { disabled: true }, + }, + ], + [ + { + input: true, + label: "建议混料下限", + prop: "downweight", + rules: [{ type: "number", trigger: "blur", message: "请输入数字类型", transform: (val) => Number(val) }], + elparams: { placeholder: "请输入建议混料下限" }, }, { input: true, - label: "配方编码", - prop: "code", - rules: { required: true, message: "必填项不能为空", trigger: "blur" }, - elparams: { placeholder: "请输入配方编码" }, + label: "建议混料上限", + prop: "upweight", + rules: [{ type: "number", trigger: "blur", message: "请输入数字类型", transform: (val) => Number(val) }], + elparams: { placeholder: "请输入建议混料上限" }, }, - // { input: true, label: '版本号', prop: 'version', elparams: { placeholder: '请输入版本号' } }, - // { - // select: true, - // label: "产品类型", - // prop: "typeDictValue", - // options: "product_type" in dictList ? dictList["product_type"].map((item) => ({ value: item.dictValue, label: item.dictLabel })) : [], - // elparams: { placeholder: "选择一个产品类型" }, - // }, - ], - [ - // { input: true, label: '单位平方数', prop: 'code', rules: { required: true, message: '必填项不能为空', trigger: 'blur' }, elparams: { placeholder: '请输入设备名称编码' } }, - // { - // select: true, - // label: "单位", - // prop: "unitDictValue", - // options: "unit" in dictList ? dictList["unit"].map((item) => ({ value: item.dictValue, label: item.dictLabel })) : [], - // elparams: { placeholder: "选择单位" }, - // }, - { - input: true, - label: "版本号", - prop: "externalCode", - rules: { required: true, message: "必填项不能为空", trigger: "blur" }, - elparams: { placeholder: "请输入版本号" }, - }, - { input: true, label: "物料销售文本(短)", prop: "shortDesc", elparams: { placeholder: "物料销售文本" } }, - ], - [{ textarea: true, label: "物料销售文本", prop: "description", elparams: { placeholder: "物料销售文本" } }], - [{ input: true, label: "备注", prop: "remark", elparams: { placeholder: "备注" } }], - [ - { - // input: true, - forceDisabled: true, - label: "同步状态", - prop: "sync", - key: "sync", - // rules: { required: true, message: "必填项不能为空", trigger: "blur" }, - // elparams: { placeholder: "请输入同步状态" }, - }, - ], + ] ], operations: [ - { name: "add", label: "保存", type: "primary", permission: "pms:bom:save", showOnEdit: false }, - { name: "update", label: "更新", type: "primary", permission: "pms:bom:update", showOnEdit: true }, + { name: "add-bom", label: "保存", type: "primary", permission: "", showOnEdit: false }, + { name: "update-bom", label: "更新", type: "primary", permission: "", showOnEdit: true }, { name: "reset", label: "重置", type: "warning", showAlways: true }, - // { name: 'cancel', label: '取消', showAlways: true }, - ], - }, - table: { - // extraParams: ['stepId'], - extraParams: "bomId", - props: [ - { type: "index", label: "序号" }, - { prop: "material", label: "物料", isEditField: true }, - { - width: 130, - prop: "qty", - label: "配方物料重量", - filter: (val) => (!!val ? val + " kg" : "-"), - isEditField: true, - }, - { - width: 130, - prop: "sumqty", - label: "配方总重量", - filter: (val) => (!!val ? val + " kg" : "-"), - isEditField: true, - }, - { prop: "percent", label: "配比 [%]", filter: (val) => (!!val ? val + " %" : "-"), isEditField: true }, - { prop: "remark", label: "备注", isEditField: true }, - { prop: "createTime", label: "添加时间", filter: timeFilter }, - { - prop: "operations", - name: "操作", - fixed: "right", - width: 90, - subcomponent: TableOperaionComponent, - options: [ - { name: "edit", label: "编辑", icon: "edit-outline", permission: "pms:bomMaterial:update" }, - { name: "delete", icon: "delete", label: "删除", emitFull: true, permission: "pms:bomMaterial:delete" }, - ], - }, - ], - data: [ - // TOOD 暂时用不到,但获取可以考虑把拉取接口数据的函数迁移到此文件(没有太大必要) - ], - }, - - subDialog: { - extraParam: "bomId", - forceAttachCode: true, // 产品属性新增必填 code 字段...... - rows: [ - [ - { - select: true, - label: "物料", - prop: "materialId", - rules: { required: true, message: "必填项不能为空", trigger: "blur" }, - elparams: { placeholder: "请选择物料", filterable: true }, - options: [], - fetchData: () => this.$http.get("/pms/material/page", { params: { limit: 999, page: 1 } }), - // fetchData: () => new Promise((resolve) => { - // setTimeout(() => { - // resolve({ - // data: { - // code: 0, - // data: { - // total: 0, - // list: - // [ - // { id: 10001, name: 'mock物料1' }, - // { id: 10002, name: 'mock物料2' }, - // { id: 10003, name: 'mock物料3' }, - // { id: 10004, name: 'mock物料4' }, - // { id: 10005, name: 'mock物料5' }, - // ] - // } - // } - // }) - // }, 800) - // }) - }, - { - input: true, - label: "物料重量[kg]", - prop: "qty", - rules: { required: true, message: "必填项不能为空", trigger: "blur" }, - elparams: { placeholder: "请输入物料重量" }, - }, - ], - [{ textarea: true, label: "备注", prop: "remark", elparams: { placeholder: "添加备注" } }], - ], - operations: [ - { name: "add", label: "保存", type: "primary", permission: "pms:bomMaterial:save", showOnEdit: false }, - { name: "update", label: "更新", type: "primary", permission: "pms:bomMaterial:update", showOnEdit: true }, ], }, }; @@ -262,8 +308,10 @@ export default function () { }, urls: { base: "/pms/bom", + editUrl: "/pms/bom/modify", page: "/pms/bom/page", - syncUrl: "/pms/bom/sync", + // syncUrl: "/pms/bom/sync", + syncUrl: "/pms/trans/batchBomSync", copyUrl: "/pms/bom/copy", subase: "/pms/bomMaterial", subpage: "/pms/bomMaterial/page", diff --git a/src/views/modules/pms/pressOrder/config.js b/src/views/modules/pms/pressOrder/config.js index 41ce0f2..7b1f39d 100644 --- a/src/views/modules/pms/pressOrder/config.js +++ b/src/views/modules/pms/pressOrder/config.js @@ -10,9 +10,9 @@ export default function () { { width: 160, prop: "orderCode", label: "主订单号" }, { width: 60, prop: "orderCate", label: "子号" }, { width: 160, prop: "code", label: "压制订单号" }, - { width: 60, prop: "percent", label: "进度", filter: (val) => (val !== null && val !== undefined ? val + " %" : "-") }, + { width: 90, prop: "percent", label: "进度", filter: (val) => (val !== null && val !== undefined ? val + " %" : "-") }, { prop: "statusDictValue", label: "订单状态", filter: (val) => (val !== null && val !== undefined ? ["等待", "确认", "生产", "暂停", "结束", "接受", "拒绝", "已下发"][val] : "-"), }, - { prop: "startTime", label: "开始时间" }, + { width: 160, prop: "startTime", label: "开始时间", filter: timeFilter }, { width: 100, prop: "shapeCode", label: "砖型" }, { prop: "pressCode", label: "压机" }, { width: 80, prop: "qty", label: "生产量" },