From cf6a4b874aed82592eea78294715c7c688f9b248 Mon Sep 17 00:00:00 2001 From: songshankun <songshankun@foxmail.com> Date: 星期五, 03 十一月 2023 14:50:31 +0800 Subject: [PATCH] Merge branch 'dev' into songshankun/add-token --- src/views/productManage/product/AddProductDialog.vue | 280 +++++++++++++++++++++++++++++++++---------------------- 1 files changed, 166 insertions(+), 114 deletions(-) diff --git a/src/views/productManage/product/AddProductDialog.vue b/src/views/productManage/product/AddProductDialog.vue index 56214dd..5c63af6 100644 --- a/src/views/productManage/product/AddProductDialog.vue +++ b/src/views/productManage/product/AddProductDialog.vue @@ -1,14 +1,14 @@ <template> <div class="add-common"> <el-dialog - :title="editCommonConfig.title + '閲囪喘鍏ュ簱'" + :title="modalTitle + '浜у搧'" :visible.sync="editConfig.visible" :width="dialogWidth" :before-close="handleClose" > <!-- 澶� --> <div slot="title" class="dialog-header"> - <span>{{ editCommonConfig.title + "閲囪喘鍏ュ簱" }}</span> + <span>{{ modalTitle + "浜у搧" }}</span> <div class="header_btns"> <span class="btn"> <i class="el-icon-printer"></i> @@ -26,49 +26,26 @@ ref="form" :model="editConfig.infomation" :rules="rules" - label-position="left" + label-position="right" label-width="110px" size="mini" - style="height: 60vh; overflow-x: hidden" > - <div class="content-btn"> + <!-- <div class="content-btn"> <el-button plain size="mini" disabled>鏍囩鎵撳嵃</el-button> <el-button plain size="mini" disabled>鏇存柊鏁伴噺</el-button> <el-button plain size="mini" disabled>鎵ц琛ヨ揣</el-button> - </div> + </div> --> <div class="basic-info"> <FormBtnsView :add-product="addProduct" @inOutBoundClick="inOutBoundClick" + @inLibraryClick="inLibraryClick" :show-procure="showProcure" + :countObject="statisticsMap" :show-sale="showSale" + @listingRulesClick="listingRulesClick" + @reorderRulesClick="reorderRulesClick" /> - <div class="basic-info-view"> - <el-row> - <el-col :span="23"> - <div style="margin-left: 20px"><span style="color: #f56c6c">*</span>浜у搧鍚嶇О</div> - <el-form-item label="" prop="name" label-width="20px"> - <el-input v-model="editConfig.infomation.name" placeholder="" :disabled="!showFooter"></el-input> - </el-form-item> - </el-col> - <!-- <el-col :span="4"> - <div class="upload" @click="toGetImg"> - <img v-if="imageSrc" :src="imageSrc" style="height: 90px; width: 90px" /> - <div v-else class="upload-icon"><i class="el-icon-plus"></i></div> - </div> - </el-col> --> - <!-- <el-col :span="24"> - <div style="margin-left: 20px"> - <el-checkbox v-model="marketable" :disabled="!showFooter" @change="checkboxChange('閿�鍞�', $event)" - >鍙攢鍞�</el-checkbox - > - <el-checkbox v-model="procurable" :disabled="!showFooter" @change="checkboxChange('閲囪喘', $event)" - >鍙噰璐�</el-checkbox - > - </div> - </el-col> --> - </el-row> - </div> <div class="bottom"> <el-tabs v-model="activeName" type="card"> <el-tab-pane label="鍩烘湰淇℃伅" name="first"></el-tab-pane> @@ -81,7 +58,15 @@ <div v-if="activeName === 'first'"> <div class="purchase-view"> <div class="left"> - <el-form-item label="浜у搧绫诲瀷" prop="productType" style="margin-left: 20px"> + <el-form-item label="浜у搧鍚嶇О" prop="name"> + <el-input + v-model="editConfig.infomation.name" + placeholder="" + :disabled="!showFooter" + style="width: 85%" + ></el-input> + </el-form-item> + <el-form-item label="浜у搧绫诲瀷" prop="productType"> <el-select v-model="editConfig.infomation.productType" placeholder="璇烽�夋嫨" @@ -93,7 +78,7 @@ </el-option> </el-select> </el-form-item> - <el-form-item label="寮�绁ㄧ瓥鐣�" prop="invoicingStrategy" style="margin-left: 20px"> + <!-- <el-form-item label="寮�绁ㄧ瓥鐣�" prop="invoicingStrategy" > <el-select v-model="editConfig.infomation.invoicingStrategy" placeholder="璇烽�夋嫨" @@ -106,8 +91,8 @@ </el-select> <div class="font_size_13" style="color: gray">鍙偍瀛樼殑浜у搧鏄偍绠$悊搴撳瓨姘村钩鐨勫疄鐗╅」鐩��</div> <div class="font_size_13" style="color: gray">鎮ㄥ彲浠ュ湪鍙戣揣鍓嶄负鍏跺紑鍏风粨绠楀崟銆�</div> - </el-form-item> - <el-form-item label="鐗╂枡绫诲瀷" prop="model" style="margin-left: 20px"> + </el-form-item> --> + <el-form-item label="鐗╂枡绫诲瀷" prop="model"> <el-select v-model="editConfig.infomation.model" placeholder="璇烽�夋嫨" @@ -121,7 +106,7 @@ </el-option> </el-select> </el-form-item> - <el-form-item label="鍗曚綅" prop="unit" style="margin-left: 20px"> + <el-form-item label="鍗曚綅" prop="unit"> <el-input v-model="editConfig.infomation.unit" placeholder="璇疯緭鍏�" @@ -129,7 +114,7 @@ :disabled="!showFooter" ></el-input> </el-form-item> - <el-form-item label="浜у搧鏍囩" prop="productTagName" style="margin-left: 20px"> + <el-form-item label="浜у搧鏍囩" prop="productTagName"> <el-input v-model="editConfig.infomation.productTagName" placeholder="璇疯緭鍏�" @@ -139,8 +124,8 @@ </el-form-item> </div> <div class="right"> - <el-form-item label="閿�鍞环鏍�" prop="salePrice" style="margin-left: 20px"> - <span>锟�</span> + <el-form-item label="閿�鍞环鏍�" prop="salePrice"> + <!-- <span>锟�</span> --> <el-input-number v-model.trim="editConfig.infomation.salePrice" placeholder="璇疯緭鍏�" @@ -151,7 +136,7 @@ :disabled="!showFooter" ></el-input-number> </el-form-item> - <el-form-item label="閿�椤圭◣" prop="customerTaxes" style="margin-left: 20px"> + <!-- <el-form-item label="閿�椤圭◣" prop="customerTaxes" > <el-input-number v-model="editConfig.infomation.customerTaxes" placeholder="璇疯緭鍏�" @@ -160,9 +145,9 @@ style="width: 85%; margin-right: 5px" :disabled="!showFooter" ></el-input-number> - </el-form-item> - <el-form-item label="鎴愭湰" prop="cost" style="margin-left: 20px"> - <span>锟�</span> + </el-form-item> --> + <el-form-item label="鎴愭湰" prop="cost"> + <!-- <span>锟�</span> --> <el-input-number v-model.trim="editConfig.infomation.cost" placeholder="璇疯緭鍏�" @@ -173,7 +158,7 @@ :disabled="!showFooter" ></el-input-number> </el-form-item> - <el-form-item label="浜у搧绫诲埆" prop="categoryId" style="margin-left: 20px"> + <el-form-item label="浜у搧绫诲埆" prop="categoryId"> <el-select v-model="editConfig.infomation.categoryId" placeholder="璇烽�夋嫨" @@ -190,7 +175,7 @@ </el-option> </el-select> </el-form-item> - <el-form-item label="鍐呴儴鍙傝��" prop="internalReference" style="margin-left: 20px"> + <el-form-item label="鍐呴儴缂栫爜" prop="internalReference"> <el-input v-model.trim="editConfig.infomation.internalReference" placeholder="璇疯緭鍏�" @@ -199,7 +184,7 @@ :disabled="!showFooter" ></el-input> </el-form-item> - <el-form-item label="鏉$爜" prop="barcode" style="margin-left: 20px"> + <el-form-item label="鏉$爜" prop="barcode"> <el-input v-model.trim="editConfig.infomation.barcode" placeholder="璇疯緭鍏�" @@ -211,8 +196,8 @@ </div> </div> <div class="all"> - <div class="second-label">鍐呴儴璇存槑</div> - <el-form-item label="" prop="internalNotes" style="margin-left: 20px" label-width="0px"> + <!-- <div class="second-label">澶囨敞</div> --> + <el-form-item label="澶囨敞" prop="internalNotes"> <el-input v-model.trim="editConfig.infomation.internalNotes" placeholder="璇疯緭鍏�" @@ -235,7 +220,7 @@ <div class="purchase-view"> <!-- <div class="left"> <div class="second-label">鎿嶄綔</div> - <el-form-item label="璺嚎" prop="checkedRoute" style="margin-left: 20px"> + <el-form-item label="璺嚎" prop="checkedRoute" > <el-checkbox-group v-model="checkedRoute" :min="1" :max="2"> <el-checkbox v-for="city in route" :label="city" :key="city" class="list-item">{{ city.length > 20 ? city.substring(0, 20) + "..." : city @@ -244,7 +229,7 @@ </el-form-item> </div> --> <div class="left"> - <el-form-item label="璐熻矗浜�" prop="principal" style="margin-left: 20px" label-width="80px"> + <el-form-item label="璐熻矗浜�" prop="principal" label-width="80px"> <el-select v-model="editConfig.infomation.principal" placeholder="璇烽�夋嫨" @@ -256,7 +241,7 @@ </el-option> </el-select> </el-form-item> - <el-form-item label="閲嶉噺" prop="weight" style="margin-left: 20px" label-width="80px"> + <el-form-item label="閲嶉噺" prop="weight" label-width="80px"> <el-input-number v-model="editConfig.infomation.weight" placeholder="璇疯緭鍏�" @@ -268,7 +253,7 @@ ></el-input-number> <span> kg</span> </el-form-item> - <el-form-item label="浣撶Н" prop="volume" style="margin-left: 20px" label-width="80px"> + <el-form-item label="浣撶Н" prop="volume" label-width="80px"> <el-input-number v-model="editConfig.infomation.volume" placeholder="璇疯緭鍏�" @@ -282,12 +267,7 @@ </el-form-item> </div> <div class="right"> - <el-form-item - label="鍒堕�犲墠缃椂闂�" - prop="makeAdvanceTime" - style="margin-left: 20px" - label-width="130px" - > + <el-form-item label="鍒堕�犲墠缃椂闂�" prop="makeAdvanceTime" label-width="130px"> <el-input-number v-model="editConfig.infomation.makeAdvanceTime" placeholder="璇疯緭鍏�" @@ -299,12 +279,7 @@ ></el-input-number> <span> 澶╂暟</span> </el-form-item> - <el-form-item - label="鐢熶骇璁㈠崟鍑嗗澶╂暟" - prop="orderAdvanceTime" - style="margin-left: 20px" - label-width="130px" - > + <el-form-item label="鐢熶骇璁㈠崟鍑嗗澶╂暟" prop="orderAdvanceTime" label-width="130px"> <el-input-number v-model="editConfig.infomation.orderAdvanceTime" placeholder="璇疯緭鍏�" @@ -316,12 +291,7 @@ ></el-input-number> <span> 澶╂暟</span> </el-form-item> - <el-form-item - label="瀹㈡埛鍓嶇疆鏃堕棿" - prop="deliveryAdvanceTime" - style="margin-left: 20px" - label-width="130px" - > + <el-form-item label="瀹㈡埛鍓嶇疆鏃堕棿" prop="deliveryAdvanceTime" label-width="130px"> <el-input-number v-model="editConfig.infomation.deliveryAdvanceTime" placeholder="璇疯緭鍏�" @@ -335,10 +305,10 @@ </el-form-item> </div> </div> - <div class="purchase-view"> + <!-- <div class="purchase-view"> <div class="left"> <div class="second-label">鏀惰揣璇存槑</div> - <el-form-item label="" prop="inStorageExplain" style="margin-left: 20px" label-width="0px"> + <el-form-item label="" prop="inStorageExplain" label-width="0px"> <el-input v-model.trim="editConfig.infomation.inStorageExplain" placeholder="姝よ鏄庢坊鍔犲埌鏀惰揣璁㈠崟涓�(渚嬪锛屼骇鍝佸湪浠撳簱鐨勫瓨鍌ㄤ綅缃�)" @@ -352,7 +322,7 @@ </div> <div class="right"> <div class="second-label">鍑哄簱鍗曡鏄�</div> - <el-form-item label="" prop="outStorageExplain" style="margin-left: 20px" label-width="0px"> + <el-form-item label="" prop="outStorageExplain" label-width="0px"> <el-input v-model.trim="editConfig.infomation.outStorageExplain" placeholder="姝ら�氱煡宸叉坊鍔犲埌閫佽揣鍗曚腑" @@ -368,7 +338,7 @@ <div class="purchase-view"> <div class="left"> <div class="second-label">鍐呴儴璋冩嫧璇存槑</div> - <el-form-item label="" prop="internalTransferExplain" style="margin-left: 20px" label-width="0px"> + <el-form-item label="" prop="internalTransferExplain" label-width="0px"> <el-input v-model.trim="editConfig.infomation.internalTransferExplain" placeholder="姝よ鏄庢坊鍔犲埌鍐呴儴璋冩嫧璁㈠崟涓�(渚嬪锛屽湪浠撳簱涓綍澶勬彁鍙栦骇鍝�)" @@ -381,7 +351,7 @@ </el-form-item> </div> <div class="right"></div> - </div> + </div> --> </div> <!-- 涓嬮潰涓嶈鍒� 浜屾湡鎴栦笁鏈熶細鐢ㄥ埌 --> <!-- 閿�鍞� --> @@ -389,7 +359,7 @@ <div class="purchase-view"> <div class="left"> <div class="second-label">{{ "鍔犲敭&浜ゅ弶閿�鍞�" }}</div> - <el-form-item label="鍙�変骇鍝�" prop="selectProduct" style="margin-left: 20px"> + <el-form-item label="鍙�変骇鍝�" prop="selectProduct" > <el-select v-model="editConfig.infomation.selectProduct" multiple @@ -408,7 +378,7 @@ </el-select> </el-form-item> <div class="second-label">閿�鍞鏄�</div> - <el-form-item label="" prop="sellExplain" style="margin-left: 20px" label-width="20px"> + <el-form-item label="" prop="sellExplain" label-width="20px"> <el-input v-model.trim="editConfig.infomation.sellExplain" size="mini" @@ -443,7 +413,7 @@ <div class="purchase-view"> <div class="left"> <div class="second-label">渚涘簲鍟嗚处鍗�</div> - <el-form-item label="杩涢」绋�" prop="client_name" style="margin-left: 20px"> + <el-form-item label="杩涢」绋�" prop="client_name" > <el-select v-model="editConfig.infomation.memberId" multiple @@ -456,7 +426,7 @@ </el-option> </el-select> </el-form-item> - <el-form-item label="鎺у埗绛栫暐" prop="client_name" style="margin-left: 20px"> + <el-form-item label="鎺у埗绛栫暐" prop="client_name" > <el-radio-group v-model="editConfig.infomation.resource"> <el-radio label="璁㈠崟鏁伴噺"></el-radio> <el-radio label="鏀跺埌鏁伴噺"></el-radio> @@ -465,7 +435,7 @@ </div> <div class="right"> <div class="second-label">閲囪喘璇存槑</div> - <el-form-item label="" prop="name" style="margin-left: 20px" label-width="0px"> + <el-form-item label="" prop="name" label-width="0px"> <el-input v-model.trim="editConfig.infomation.desc" placeholder="鏈潯澶囨敞琚坊鍔犲埌閲囪喘璁㈠崟" @@ -483,8 +453,8 @@ </div> </el-form> <!-- 灏� --> - <div v-if="showFooter" slot="footer" class="dialog-footer"> - <el-button type="primary" size="small" @click="saveClick('form')">淇濆瓨</el-button> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" size="small" @click="saveClick('form')" :disabled="!showFooter">淇濆瓨</el-button> <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button> </div> </el-dialog> @@ -506,13 +476,24 @@ return { visible: false, title: "鏂板缓", - infomation: {} + infomation: {}, + autoEdit: false } } } }, components: {}, - computed: {}, + computed: { + modalTitle() { + if (this.editConfig.title === "缂栬緫" && this.editConfig.autoEdit) { + return "缂栬緫" + } else if (this.editConfig.title === "缂栬緫") { + return !this.showEdit ? "缂栬緫" : "鏌ョ湅" + } else { + return "鏂板缓" + } + } + }, data() { return { dialogWidth: "50%", @@ -520,7 +501,7 @@ rules: { name: [{ required: true, message: "璇疯緭鍏ヤ骇鍝佸悕绉�", trigger: "blur" }], model: [{ required: true, message: "璇烽�夋嫨鐗╂枡绫诲瀷", trigger: "change" }], - salePrice: [{ required: true, message: "璇疯緭鍏ラ攢鍞环鏍�", trigger: "blur" }], + // salePrice: [{ required: true, message: "璇疯緭鍏ラ攢鍞环鏍�", trigger: "blur" }], unit: [{ required: true, message: "璇疯緭鍏ュ崟浣�", trigger: "blur" }] }, memberOptions: [{ name: "绠$悊鍛�", id: 1 }], @@ -538,7 +519,7 @@ showButton: true, activeName: "first", productTableList: {}, - tableData: [{ name: "ssss" }], + tableData: [], isNoProduct: false, // 娣诲姞鏄庣粏琛屾椂鏄惁鏈変骇鍝佹湭閫夋嫨 showEdit: false, // 鏄惁鏄剧ず缂栬緫鎸夐挳 isDelClick: false, // 鍒犻櫎鎸夐挳鏄惁鍙偣鍑� @@ -558,7 +539,10 @@ { name: "杈呮枡", id: "杈呮枡" }, { name: "鑰楁潗", id: "鑰楁潗" }, { name: "鍏朵粬", id: "鍏朵粬" } - ] + ], + statisticsMap: { + inLibrary: 0 // 鍦ㄥ簱 + } } }, created() { @@ -566,8 +550,35 @@ this.getProductList() this.setTableForm() this.setBottonView() + this.statisticsMap.inLibrary = this.editConfig?.infomation?.amount ?? 0 + if (this.editConfig.autoEdit) { + this.editClick() + } + this.setOptionalFieldsToEmpty() }, methods: { + /** + * 闈炲繀濉」鍚庣杩斿洖鐨勬槸鏁板瓧 0,琛ㄥ崟闇�瑕佺┖涓叉墠鑳借涓烘湭閫夋嫨鍥炴樉 + */ + setOptionalFieldsToEmpty() { + let arr = ["productType", "categoryId"] + arr + .filter((filed) => this.editConfig.infomation[filed] === 0) + .forEach((filed) => { + this.editConfig.infomation[filed] = "" + }) + }, + /** + * 鍚庣鍙帴鍙楁暟瀛楀舰寮�, 淇濆瓨鏃惰繕寰楀啀杞洖鍘� + */ + unsetFieldsToNumber() { + let arr = ["productType", "categoryId"] + arr + .filter((filed) => this.editConfig.infomation[filed] === "") + .forEach((filed) => { + this.editConfig.infomation[filed] = 0 + }) + }, // 鑾峰彇浜у搧绫诲埆 async getProductCategoryList() { await getProductCategoryList({ @@ -628,6 +639,7 @@ this.$refs[formName].validate((valid) => { if (valid) { let requestUrl = this.editConfig.title === "鏂板缓" ? addProduct : updateProduct + this.unsetFieldsToNumber() requestUrl({ ...this.editConfig.infomation }).then((res) => { @@ -637,7 +649,7 @@ this.$message.success("娣诲姞鎴愬姛") this.$parent.getData() } - }) + }, console.error) } }) }, @@ -748,8 +760,56 @@ // 杩涘嚭鐐瑰嚮 inOutBoundClick() { if (this.editConfig.title !== "鏂板缓") { - this.$router.push({ path: "/reportForm/inOutboundDetail", query: { name: "浜у搧鍚嶇О/鍑哄叆搴撴槑缁�" } }) + console.log(this.editConfig.infomation) + this.$router.push({ + name: "inboundOutboundDetail", + params: { + name: this.editConfig.infomation.name, + id: this.editConfig.infomation.id + } + }) } + }, + // 鍦ㄥ簱鐐瑰嚮 + inLibraryClick() { + if (this.editConfig.title !== "鏂板缓") { + console.log(this.editConfig.infomation) + this.$router.push({ + name: "inventoryReport", + params: { + name: this.editConfig.infomation.name, + id: this.editConfig.infomation.id + } + }) + } + }, + // 涓婃灦瑙勫垯 + listingRulesClick() { + this.$refs.form.validate((valid) => { + if (valid) { + this.$router.push({ + path: "/warehouseManage/listingRules", + query: { + productName: this.editConfig.infomation.name, + productId: this.editConfig.title === "鏂板缓" ? "" : this.editConfig.infomation.id + } + }) + } + }) + }, + // 閲嶈璐鍒� + reorderRulesClick() { + this.$refs.form.validate((valid) => { + if (valid) { + this.$router.push({ + path: "/productManage/reorderRules", + query: { + productName: this.editConfig.infomation.name, + productId: this.editConfig.title === "鏂板缓" ? "" : this.editConfig.infomation.id + } + }) + } + }) }, // 鍙攢鍞�/鍙噰璐� checkboxChange(val, param) { @@ -787,16 +847,19 @@ .basic-info { height: calc(100% - 80px); overflow: auto; - margin: 20px; - border: 1px solid #dcdfe6; - box-shadow: inset 0 0 2px #dee2e6; - -moz-box-shadow: inset 0 0 2px #dee2e6; - -webkit-box-shadow: inset 0 0 2px #dee2e6; + margin: 10px; + // border: 1px solid #dcdfe6; + // box-shadow: inset 0 0 2px #dee2e6; + // -moz-box-shadow: inset 0 0 2px #dee2e6; + // -webkit-box-shadow: inset 0 0 2px #dee2e6; + .bottom { + margin-top: 10px; + } .content-number { display: flex; justify-content: right; height: 44px; - border-bottom: 1px solid #e9e9e9; + // border-bottom: 1px solid #e9e9e9; font-size: 13px; .sub-number { width: 12.5%; @@ -820,22 +883,6 @@ height: 38px; line-height: 38px; } - } - } - } - .basic-info-view { - margin-top: 20px; - .upload { - position: relative; - width: 90px; - height: 90px; - margin-left: 40px; - border: 1px dotted #d9d9d9; - border-radius: 4px; - .upload-icon { - position: absolute; - top: 40%; - right: 43%; } } } @@ -895,13 +942,18 @@ color: #333; } } - .el-tabs--card > .el-tabs__header .el-tabs__nav { - margin-left: 20px; + .el-tabs--card > .el-tabs__header { + border-bottom: none; + } + .el-tabs__item.is-active { + color: #fff; + background: #2a78fb; } .el-tabs__item { height: 30px; line-height: 30px; font-size: 13px; + background: #f3f3f3; } .el-input__inner { text-align: left; -- Gitblit v1.8.0