From 8669f9f8959e29d4dea457cd88416d9b954b35af Mon Sep 17 00:00:00 2001 From: songshankun <songshankun@foxmail.com> Date: 星期五, 20 十月 2023 10:46:12 +0800 Subject: [PATCH] feat: 产品/产品类别编辑弹窗非必填项表单备选项删除请选择,重置接口返回字段式表单正常回显 --- src/views/productManage/product/index.vue | 4 +- src/views/productManage/productCategory/AddProductCategoryDialog.vue | 27 +++++++++++-- src/api/data.js | 12 ------ src/views/productManage/product/AddProductDialog.vue | 30 ++++++++++++--- 4 files changed, 49 insertions(+), 24 deletions(-) diff --git a/src/api/data.js b/src/api/data.js index ccf6bac..afa04cb 100644 --- a/src/api/data.js +++ b/src/api/data.js @@ -100,10 +100,6 @@ // 寮哄埗涓嬫灦绛栫暐 const forceRemovalStrategy = [ { - name: "璇烽�夋嫨", - id: 0 - }, - { name: "鍏堣繘鍏堝嚭", id: 1 }, @@ -119,10 +115,6 @@ //鎴愭湰鏂规硶 const costingMethod = [ { - name: "璇烽�夋嫨", - id: 0 - }, - { name: "鏍囧噯浠锋牸", id: 1 }, @@ -137,10 +129,6 @@ ] // 搴撳瓨璁′环 const inventoryValuation = [ - { - name: "璇烽�夋嫨", - id: 0 - }, { name: "鎵嬪姩", id: 1 diff --git a/src/views/productManage/product/AddProductDialog.vue b/src/views/productManage/product/AddProductDialog.vue index fe22e0f..e24ecd2 100644 --- a/src/views/productManage/product/AddProductDialog.vue +++ b/src/views/productManage/product/AddProductDialog.vue @@ -165,7 +165,7 @@ :disabled="!showFooter" > <el-option - v-for="item in productCategoryListWithDefault" + v-for="item in productCategoryOptions" :key="item.id" :label="item.name" :value="item.id" @@ -482,9 +482,6 @@ }, components: {}, computed: { - productCategoryListWithDefault() { - return [{ id: 0, name: "璇烽�夋嫨" }, ...(this.productCategoryOptions ?? [])] - }, modalTitle() { if (this.editConfig.title === "缂栬緫" && this.editConfig.autoEdit) { return "缂栬緫" @@ -508,7 +505,6 @@ memberOptions: [{ name: "绠$悊鍛�", id: 1 }], productCategoryOptions: [], // 浜у搧绫诲埆 productTypeOptions: [ - { name: "璇烽�夋嫨", id: 0 }, { name: "鑳芥秷鑰�", id: 1 }, { name: "鏈嶅姟", id: 2 }, { name: "鍙簱瀛樹骇鍝�", id: 3 } @@ -556,8 +552,29 @@ if (this.editConfig.autoEdit) { this.editClick() } + this.setOptionalFieldsToEmpty() }, methods: { + /** + * 闈炲繀濉」鍚庣杩斿洖鐨勬槸鏁板瓧 0,琛ㄥ崟闇�瑕佺┖涓叉墠鑳借涓烘湭閫夋嫨鍥炴樉 + */ + setOptionalFieldsToEmpty(){ + ['productType','categoryId'] + .filter(filed => this.editConfig.infomation[filed] === 0) + .forEach(filed => { + this.editConfig.infomation[filed] = '' + }) + }, + /** + * 鍚庣鍙帴鍙楁暟瀛楀舰寮�, 淇濆瓨鏃惰繕寰楀啀杞洖鍘� + */ + unsetFieldsToNumber(){ + ['productType','categoryId'] + .filter(filed => this.editConfig.infomation[filed] === '') + .forEach(filed => { + this.editConfig.infomation[filed] = 0 + }) + }, // 鑾峰彇浜у搧绫诲埆 async getProductCategoryList() { await getProductCategoryList({ @@ -618,6 +635,7 @@ this.$refs[formName].validate((valid) => { if (valid) { let requestUrl = this.editConfig.title === "鏂板缓" ? addProduct : updateProduct + this.unsetFieldsToNumber() requestUrl({ ...this.editConfig.infomation }).then((res) => { @@ -627,7 +645,7 @@ this.$message.success("娣诲姞鎴愬姛") this.$parent.getData() } - }) + },console.error) } }) }, diff --git a/src/views/productManage/product/index.vue b/src/views/productManage/product/index.vue index 0c79ece..0b32e39 100644 --- a/src/views/productManage/product/index.vue +++ b/src/views/productManage/product/index.vue @@ -259,17 +259,17 @@ }, // 鏂板缓 addBtnClick() { - this.editConfig.visible = true this.editConfig.title = "鏂板缓" this.editConfig.infomation = {} + this.editConfig.visible = true }, // 璇︽儏 showDetail(row) { console.log(row) - this.editConfig.visible = true this.editConfig.autoEdit = false this.editConfig.title = "缂栬緫" this.editConfig.infomation = { ...row } + this.editConfig.visible = true }, // 缂栬緫 editRow(row){ diff --git a/src/views/productManage/productCategory/AddProductCategoryDialog.vue b/src/views/productManage/productCategory/AddProductCategoryDialog.vue index 2f86a71..b8453ee 100644 --- a/src/views/productManage/productCategory/AddProductCategoryDialog.vue +++ b/src/views/productManage/productCategory/AddProductCategoryDialog.vue @@ -88,7 +88,7 @@ style="width: 85%" :disabled="!showFooter" > - <el-option v-for="item in productCategoryListWithDefault" :key="item.id" :label="item.name" :value="item.id"> + <el-option v-for="item in productCategoryList" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </el-form-item> @@ -197,9 +197,6 @@ }, components: {}, computed: { - productCategoryListWithDefault(){ - return [{id:0,name:'璇烽�夋嫨'},...(this.productCategoryList?? [])] - }, modalTitle(){ if (this.editConfig.title === '缂栬緫' && this.editConfig.autoEdit){ return '缂栬緫' @@ -239,8 +236,29 @@ if (this.editConfig.autoEdit){ this.editClick() } + this.setOptionalFieldsToEmpty() }, methods: { + /** + * 闈炲繀濉」鍚庣杩斿洖鐨勬槸鏁板瓧 0,琛ㄥ崟闇�瑕佺┖涓叉墠鑳借涓烘湭閫夋嫨鍥炴樉 + */ + setOptionalFieldsToEmpty(){ + ['parentId','costingMethod','inventoryValuation','forceRemovalStrategy'] + .filter(filed => this.editConfig.infomation[filed] === 0) + .forEach(filed => { + this.editConfig.infomation[filed] = '' + }) + }, + /** + * 鍚庣鍙帴鍙楁暟瀛楀舰寮�, 淇濆瓨鏃惰繕寰楀啀杞洖鍘� + */ + unsetFieldsToNumber(){ + ['parentId','costingMethod','inventoryValuation','forceRemovalStrategy'] + .filter(filed => this.editConfig.infomation[filed] === '') + .forEach(filed => { + this.editConfig.infomation[filed] = 0 + }) + }, // 鑾峰彇浜у搧鏁伴噺 getProductCount(){ getProductList({ @@ -294,6 +312,7 @@ this.showFooter = true }, saveParams() { + this.unsetFieldsToNumber() let data = JSON.parse(JSON.stringify(this.editConfig.infomation)) let params = { -- Gitblit v1.8.0