From 03cfba0f636b42417070fc8caef44bcdd792a085 Mon Sep 17 00:00:00 2001 From: haoxuan <haoxuan> Date: 星期二, 07 五月 2024 17:34:37 +0800 Subject: [PATCH] 概述 出库模块 编辑的时候循环处理对应产品调用接口获取在库数量的逻辑处理 --- src/views/warehouseManage/position/AddDialog.vue | 412 ++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 244 insertions(+), 168 deletions(-) diff --git a/src/views/warehouseManage/position/AddDialog.vue b/src/views/warehouseManage/position/AddDialog.vue index 8eb8bc8..b7f7ca6 100644 --- a/src/views/warehouseManage/position/AddDialog.vue +++ b/src/views/warehouseManage/position/AddDialog.vue @@ -17,8 +17,16 @@ <span class="btn" style="margin-left: 15px"> <i class="el-icon-s-tools"></i> <span>鍔ㄤ綔</span> + <!-- <el-button plain size="mini" style="margin-left: 15px" @click="deleteClick">鍒犻櫎</el-button> --> </span> - <el-button v-if="showEdit" plain size="mini" style="margin-left: 15px" @click="editClick">缂栬緫</el-button> + <el-button + v-if="showEdit && editConfig.infomation.type == 3" + plain + size="mini" + style="margin-left: 15px" + @click="editClick" + >缂栬緫</el-button + > </div> </div> <!-- 鍐呭 --> @@ -26,47 +34,126 @@ ref="form" :model="editConfig.infomation" :rules="rules" - label-position="left" - label-width="110px" + label-position="right" + label-width="130px" size="mini" - style="height: 60vh; overflow-x: hidden" > - <div> - <!-- <div>aaa</div> --> - <FormBtnsView :showPosition="true" :showWarehouse=false @productClick="productClick" /> + <div class="content-number-bg"> + <FormBtnsView :showPosition="true" :showPositionCursor="this.editConfig.title != '鏂板缓'?true:false" @positionReport="positionReport" :showWarehouse="false" @productClick="productClick" /> </div> <div class="basic-info"> <div class="basic-info-view"> - <el-row> - <el-col :span="24" class="line_height_30px"> - <el-form-item label="浣嶇疆鍚嶇О" prop="client_name"> + <el-col :span="12" class="line_height_30px"> + <el-form-item label="浣嶇疆鍚嶇О" prop="name"> <el-input - :disabled="showEdit" - v-model="editConfig.infomation.inspectionScale" + :disabled="!showFooter" + v-model="editConfig.infomation.name" placeholder="璇疯緭鍏�" + style="width: 90%" ></el-input> </el-form-item> </el-col> - <el-col :span="24"> - <el-form-item label="涓婄骇浣嶇疆" prop="client_name"> - <el-input - :disabled="showEdit" - v-model="editConfig.infomation.inspectionScale" - placeholder="璇疯緭鍏�" - ></el-input> + <el-col :span="12"> + <el-form-item label="涓婄骇浣嶇疆" prop="parentId"> + <el-select + v-model="editConfig.infomation.parentId" + placeholder="璇烽�夋嫨" + size="mini" + :disabled="editCommonConfig.title != '鏂板缓'" + style="width: 90%" + > + <el-option v-for="item in positionList" :key="item.id" :label="item.jointName" :value="item.id"> + </el-option> + </el-select> </el-form-item> </el-col> </el-row> - </div> - <div class="bottom"> + <div class="purchase-view"> <div class="left"> - <div class="second-label">鍏朵粬淇℃伅</div> - <el-form-item label="浣嶇疆绫诲瀷" prop="desc"> + <el-form-item label="浣嶇疆绫诲瀷" prop="type"> + <el-select + v-model="editConfig.infomation.type" + filterable + :disabled="editCommonConfig.title != '鏂板缓'" + placeholder="璇烽�夋嫨" + style="width: 90%" + no-data-text="鏆傛棤鏁版嵁" + > + <el-option v-for="item in positionTypeList" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + <el-form-item + label="鏄竴涓姤搴熶綅缃�" + v-if="editConfig.infomation.type == 3 || editConfig.infomation.type == 5" + prop="isScrapLocation" + > + <el-checkbox :disabled="!showFooter" v-model="editConfig.infomation.isScrapLocation"> </el-checkbox> + </el-form-item> + <el-form-item label="鏄竴涓��鍥炰綅缃�" prop="isReturnLocation"> + <el-checkbox :disabled="!showFooter" v-model="editConfig.infomation.isReturnLocation"> </el-checkbox> + </el-form-item> + <el-form-item label="琛ュ厖浣嶇疆" v-if="editConfig.infomation.type == 3" prop="replenishLocation"> + <el-checkbox :disabled="!showFooter" v-model="editConfig.infomation.replenishLocation"> </el-checkbox> + </el-form-item> + </div> + <div class="right" v-if="editConfig.infomation.type == 3 || editConfig.infomation.type == 7"> + <!-- <div class="second-label">寰幆璁℃暟</div> --> + <el-form-item label="鐩樼偣棰戠巼锛堝ぉ锛�" prop="countFrequency"> + <el-input + :disabled="!showFooter" + v-model="editConfig.infomation.countFrequency" + placeholder="璇疯緭鍏�" + style="width: 90%" + ></el-input> + </el-form-item> + <el-form-item label="鏈�杩戞湁鏁堢洏鐐�" prop="recentlyCount"> + <el-date-picker + :disabled="!showFooter" + v-model="editConfig.infomation.recentlyCount" + type="date" + placeholder="閫夋嫨鏃ユ湡" + value-format="yyyy-MM-dd" + style="width: 90%" + > + </el-date-picker> + </el-form-item> + <el-form-item label="棰勮涓嬩竴娆$洏鐐�" prop="nextCount"> + <el-date-picker + :disabled="!showFooter" + v-model="editConfig.infomation.nextCount" + type="date" + placeholder="閫夋嫨鏃ユ湡" + value-format="yyyy-MM-dd" + style="width: 90%" + > + </el-date-picker> + </el-form-item> + </div> + </div> + <el-form-item label="澶囨敞" prop="notes"> + <el-input + :disabled="!showFooter" + type="textarea" + placeholder="澶栭儴澶囨敞" + :autosize="{ minRows: 3, maxRows: 4 }" + maxlength="500" + clearable + v-model="editConfig.infomation.notes" + style="width: 96%" + ></el-input> + </el-form-item> + </div> + + <div class="bottom"> + <!-- <div class="left"> --> + <!-- <div class="second-label">鐗╂祦</div> --> + <!-- <el-form-item label="涓嬭浇绛栫暐" prop="desc"> <el-select v-model="editConfig.value1" filterable - :disabled="showEdit" + :disabled="!showFooter" clearable placeholder="璇烽�夋嫨" style="width: 100%" @@ -80,100 +167,23 @@ > </el-option> </el-select> - </el-form-item> - <el-form-item label="鏄竴涓姤搴熶綅缃�" prop="desc"> - <el-checkbox - :disabled="showEdit" - v-model="editConfig.value2" - > - </el-checkbox> - </el-form-item> - <el-form-item label="鏄竴涓��鍥炰綅缃�" prop="desc"> - <el-checkbox - :disabled="showEdit" - v-model="editConfig.value2" - > - </el-checkbox> - </el-form-item> - <el-form-item label="琛ュ厖浣嶇疆" prop="desc"> - <el-checkbox - :disabled="showEdit" - v-model="editConfig.value2" - > - </el-checkbox> - </el-form-item> - </div> - <div class="left"> - <div class="second-label">寰幆璁℃暟</div> - <el-form-item label="鐩樼偣棰戠巼锛堝ぉ锛�" prop="desc"> - <el-input - :disabled="showEdit" - v-model="editConfig.infomation.inspectionScale" - placeholder="璇疯緭鍏�" - ></el-input> - </el-form-item> - <el-form-item label="鏈�杩戞湁鏁堢洏鐐�" prop="desc"> - <el-input - :disabled="showEdit" - v-model="editConfig.infomation.inspectionScale" - placeholder="璇疯緭鍏�" - ></el-input> - </el-form-item> - <el-form-item label="棰勮涓嬩竴娆$洏鐐�" prop="desc"> - <el-input - :disabled="showEdit" - v-model="editConfig.infomation.inspectionScale" - placeholder="璇疯緭鍏�" - ></el-input> - </el-form-item> - </div> - </div> - <div class="bottom"> - <div class="left"> - <div class="second-label">鐗╂祦</div> - <el-form-item label="涓嬭浇绛栫暐" prop="desc"> - <el-select - v-model="editConfig.value1" - filterable - :disabled="showEdit" - clearable - placeholder="璇烽�夋嫨" - style="width: 100%" - no-data-text="鏆傛棤鏁版嵁" - > - <el-option - v-for="item in wareList" - :key="item.id" - :label="item.name" - :value="item.id" - > - </el-option> - </el-select> - </el-form-item> - <el-form-item label="澶栭儴澶囨敞" prop="desc"> - <el-input - :disabled="showEdit" - type="textarea" - :autosize="{ minRows: 3, maxRows: 4 }" - maxlength="500" - clearable - v-model="editConfig.value1" - ></el-input> - </el-form-item> - </div> + </el-form-item> --> + <!-- </div> --> </div> </div> </el-form> <!-- 灏� --> - <div v-if="showFooter" slot="footer" class="dialog-footer"> + <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> - <el-button type="primary" size="small" @click="saveClick('form')">淇濆瓨</el-button> </div> </el-dialog> </div> </template> <script> +import { addLocation, updateLocation, deleteLocation } from "@/api/warehouseManage/warehouse" +import { getDataByType } from "@/api/data" export default { name: "AddScrapDialog", props: { @@ -186,6 +196,9 @@ infomation: {} } } + }, + positionList: { + type: [Array] } }, components: {}, @@ -195,64 +208,63 @@ dialogWidth: "50%", editConfig: this.editCommonConfig, rules: { - - number: [{ required: true, message: "璇疯緭鍏ラ��娆惧崟缂栧彿", trigger: "blur" }], - refundDate: [{ required: true, message: "璇烽�夋嫨閫�娆炬棩鏈�", trigger: "change" }], - memberId: [{ required: true, message: "璇烽�夋嫨閿�鍞礋璐d汉", trigger: "change" }], - sale_return_nunber: [{ required: true, message: "璇烽�夋嫨閿�鍞��璐у崟", trigger: "change" }] + name: [{ required: true, message: "璇疯緭鍏�", trigger: "change" }], + // parentId: [{ required: true, message: "璇烽�夋嫨浣嶇疆绫诲瀷", trigger: "change" }], + type: [{ required: true, message: "璇烽�夋嫨涓婄骇浣嶇疆", trigger: "change" }], + countFrequency: [ + { + required: false, + message: "璇峰~鍐欎笉灏忎簬0鐨勬暟瀛�", + trigger: "change" + }, + { + validator: this.validatorNum, + trigger: "blur" + } + ] }, - memberOptions: [], - paymentTypeListOptions: [], showEdit: false, // 鏄惁鏄剧ず缂栬緫鎸夐挳 showFooter: false, // 鏄惁鏄剧ず鍙栨秷淇濆瓨 - currentState: "todo", // 褰撳墠鐘舵�� - wareList:[ - { - name:'鐩存帴鎺ユ敹浜у搧锛�1姝ユ敹璐э級', - id:1, - disabled:false, - }, - { - name:'鎺ュ埌浜у搧鍒版敹鏂欏尯锛屽啀鍏ュ簱锛�2姝ユ敹璐э級', - id:2, - disabled:true, - }, - { - name:'鎺ユ敹浜у搧鍒版敹鏂欏尯锛屾楠岋紝鐒跺悗鍏ュ簱锛�3姝ユ敹璐э級', - id:3, - disabled:true, - } - ], - wareoutList:[ - { - name:'鐩存帴鍑哄簱锛�1姝ワ級', - id:1, - disabled:false, - }, - { - name:'閫佸埌寰呭嚭搴撳尯锛屽啀閫佽揣锛�2姝ュ彂璐э級', - id:2, - disabled:true, - }, - { - name:'鍖呰浜у搧锛屽彂閫佸埌寰呭嚭搴撳尯锛屽啀閫佽揣锛�3姝ュ彂璐э級', - id:3, - disabled:true, - } - ], + positionTypeList: getDataByType("positionType") } }, created() { + console.log(this.editConfig.infomation) this.setBottonView() }, methods: { - // 璺嚎 - productClick() { - + validatorNum(rule, value, callback) { + if (value) { + if (value == undefined || value == null) { + callback(new Error("璇疯緭鍏ユ湁鏁堟暟瀛�")) + } else { + var reg = /^\+?[0-9]\d*$/ + if (!reg.test(value)) { + callback(new Error("璇峰~鍐欎笉灏忎簬0鐨勬暟瀛�")) + } else { + callback() + } + } + } else { + callback() + } }, + // 褰撳墠搴撳瓨 + positionReport(){ + if(this.editConfig.title != '鏂板缓'){ + this.$router.push({ + name: "locationReport", + params: { + locationId: this.editConfig.infomation.id + } + }) + } + }, + // 璺嚎 + productClick() {}, // 璁剧疆鍒犻櫎/鎵撳嵃/缂栬緫鏄惁鏄剧ず setBottonView() { - if (this.editConfig.title === "鏂板缓") { + if (this.editConfig.title === "鏂板缓" || this.editConfig.title === "缂栬緫") { this.showEdit = false this.showFooter = true } else if (this.editConfig.infomation.status === "瀹屾垚") { @@ -267,13 +279,77 @@ handleClose() { this.editConfig.visible = false }, + // 鍒櫎 + deleteClick() { + let data = JSON.parse(JSON.stringify(this.editConfig.infomation)) + deleteLocation({ id: data.id }).then((res) => { + if (res.code == 200) { + this.editConfig.visible = false + this.$message.success("鍒櫎鎴愬姛!") + this.$emit("refresh") + } else { + this.$message.warning(res.msg ? res.msg : "鍒犻櫎澶辫触!") + } + }) + }, // 缂栬緫 editClick() { this.showEdit = false this.showFooter = true }, + saveParams() { + let data = JSON.parse(JSON.stringify(this.editConfig.infomation)) + + let params = { + name: data.name, + parentId: data.parentId, + type: data.type, + isScrapLocation: data.isScrapLocation, + isReturnLocation: data.isReturnLocation, + replenishLocation: data.replenishLocation, + countFrequency: data.countFrequency ? Number(data.countFrequency) : 0, + recentlyCount: data.recentlyCount, + nextCount: data.nextCount, + notes: data.notes + } + if (data.id) { + params.id = data.id + params.jointName = data.jointName + } + return params + }, // 淇濆瓨 - saveClick() {} + saveClick(formName) { + this.$refs[formName].validate((valid) => { + if (valid) { + const params = this.saveParams() + if (this.editConfig.title === "鏂板缓") { + addLocation(params).then((res) => { + if (res.code == 200) { + this.editConfig.visible = false + this.$message.success("娣诲姞鎴愬姛!") + this.$emit("refresh") + } else { + this.$message.warning(res.msg ? res.msg : "娣诲姞澶辫触!") + } + }) + } else { + updateLocation(params).then((res) => { + if (res.code == 200) { + this.editConfig.visible = false + this.$message.success("缂栬緫鎴愬姛!") + this.$emit("refresh") + } else { + this.$message.warning(res.msg ? res.msg : "缂栬緫澶辫触!") + } + }) + } + } else { + console.log("error submit") + return false + } + }) + } } } </script> @@ -296,39 +372,39 @@ .content-status { display: flex; } +.content-number-bg { + margin-top: 10px; +} .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; - .basic-info-view { - margin-top: 20px; - padding:0 20px; - - } - .bottom{ + // 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; + // .basic-info-view { + // margin-top: 20px; + // padding: 0 20px; + // } + .bottom { display: flex; margin-left: 20px; .left { width: calc(50% - 10px); - margin-right:20px; + margin-right: 20px; } .right { width: calc(50% - 10px); } .second-label { - border-bottom: 1px solid #d9d9d9; margin-bottom: 10px; } - ::v-deep .el-tabs__content{ + ::v-deep .el-tabs__content { padding: 0 20px; } } - } .purchase-view { display: flex; -- Gitblit v1.8.0