From fbe9459ed908eef6c25c3bcd244d0a7e74dfa792 Mon Sep 17 00:00:00 2001 From: songshankun <songshankun@foxmail.com> Date: 星期四, 19 十月 2023 13:45:08 +0800 Subject: [PATCH] feat: 产品列表添加查看编辑按钮;弹窗根据情况展示对应标题 --- src/views/productManage/productCategory/AddProductCategoryDialog.vue | 246 +++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 195 insertions(+), 51 deletions(-) diff --git a/src/views/productManage/productCategory/AddProductCategoryDialog.vue b/src/views/productManage/productCategory/AddProductCategoryDialog.vue index 32c5b96..31356cf 100644 --- a/src/views/productManage/productCategory/AddProductCategoryDialog.vue +++ b/src/views/productManage/productCategory/AddProductCategoryDialog.vue @@ -17,6 +17,13 @@ <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> </div> @@ -26,47 +33,66 @@ 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="basic-info"> - <FormBtnsView :showProduct="true" @productClick="productClick" /> + <FormBtnsView :showProduct="true" :countObject="statisticsMap" @productClick="productClick" /> <div class="basic-info-view"> - <el-row> - <el-col :span="24"> - <div style="margin-left: 20px">绫诲埆</div> - <el-form-item label="" prop="client_name" label-width="20px"> + <!-- <el-row> --> + <!-- <el-col :span="24"> + <div style="margin-left: 20px"><span class="color_F56C6C">*</span>绫诲埆</div> + <el-form-item label="" prop="name" label-width="20px"> <el-input - v-model="editConfig.infomation.client_name" + v-model="editConfig.infomation.name" placeholder="" :disabled="!showFooter" style="width: 85%" ></el-input> </el-form-item> - </el-col> - <el-col :span="24"> - <el-form-item label="涓婄骇鍝佺被" prop="client_name" style="margin-left: 20px"> + </el-col> --> + <!-- <el-col :span="24"> + <el-form-item label="涓婄骇鍝佺被" prop="parentId" style="margin-left: 20px"> <el-select - v-model="editConfig.infomation.memberId" + v-model="editConfig.infomation.parentId" placeholder="璇烽�夋嫨" size="mini" style="width: 45%" :disabled="!showFooter" > - <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :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> </el-col> - </el-row> + </el-row> --> </div> <div class="bottom"> <div class="purchase-view"> <div class="left"> - <div class="second-label">鐗╂祦</div> - <el-form-item label="璺嚎" prop="client_name" style="margin-left: 20px"> + <!-- <div class="second-label">鐗╂祦</div> --> + <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="parentId"> + <el-select + v-model="editConfig.infomation.parentId" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 85%" + :disabled="!showFooter" + > + <el-option v-for="item in productCategoryListWithDefault" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + <!-- <el-form-item label="璺嚎" prop="client_name" style="margin-left: 20px"> <el-select v-model="editConfig.infomation.memberId" multiple @@ -78,46 +104,53 @@ <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> </el-option> </el-select> - </el-form-item> - <el-form-item label="寮哄埗涓嬫灦绛栫暐" prop="client_name" style="margin-left: 20px"> + </el-form-item> --> + <el-form-item label="寮哄埗涓嬫灦绛栫暐" prop="forceRemovalStrategy"> <el-select - v-model="editConfig.infomation.memberId" - multiple + v-model="editConfig.infomation.forceRemovalStrategy" placeholder="璇烽�夋嫨" size="mini" - style="width: 63%" + style="width: 85%" :disabled="!showFooter" > - <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> + <el-option + v-for="item in forceRemovalStrategyList" + :key="item.id" + :label="item.name" + :value="item.id" + > </el-option> </el-select> </el-form-item> </div> <div class="right"> - <div class="second-label">搴撳瓨璁′环</div> - <el-form-item label="鎴愭湰鏂规硶" prop="client_name" style="margin-left: 20px"> + <!-- <div class="second-label">搴撳瓨璁′环</div> --> + <el-form-item label="鎴愭湰鏂规硶" prop="costingMethod"> <el-select - v-model="editConfig.infomation.memberId" - multiple + v-model="editConfig.infomation.costingMethod" placeholder="璇烽�夋嫨" size="mini" - style="width: 63%" + style="width: 85%" :disabled="!showFooter" > - <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> + <el-option v-for="item in costingMethodList" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </el-form-item> - <el-form-item label="搴撳瓨璁′环" prop="client_name" style="margin-left: 20px"> + <el-form-item label="搴撳瓨璁′环" prop="inventoryValuation"> <el-select - v-model="editConfig.infomation.memberId" - multiple + v-model="editConfig.infomation.inventoryValuation" placeholder="璇烽�夋嫨" size="mini" - style="width: 63%" + style="width: 85%" :disabled="!showFooter" > - <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> + <el-option + v-for="item in inventoryValuationList" + :key="item.id" + :label="item.name" + :value="item.id" + > </el-option> </el-select> </el-form-item> @@ -127,9 +160,9 @@ </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="editConfig.visible = false">淇濆苟鎻愪氦瀹℃壒</el-button> --> - <el-button type="primary" size="small" @click="saveClick('form')">淇濆瓨</el-button> + <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> @@ -137,6 +170,10 @@ </template> <script> +import { addProductCategory, updateProductCategory, deleteProductCategory } from "@/api/product/productCategory" + +import { getDataByType } from "@/api/data" +import {getProductList} from "@/api/product/product"; export default { name: "AddProductCategoryDialog", props: { @@ -149,33 +186,67 @@ infomation: { type: [] } } } + }, + productCategoryList: { + type: Array, + default: () => { + return [] + } } }, components: {}, - computed: {}, + computed: { + productCategoryListWithDefault(){ + console.log(this.productCategoryList) + return [{id:0,name:'璇烽�夋嫨'},...(this.productCategoryList?? [])] + } + }, data() { return { dialogWidth: "50%", editConfig: this.editCommonConfig, rules: { - client_name: [{ required: true, message: "璇烽�夋嫨瀹㈡埛鍚嶇О", trigger: "change" }], - 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" }] }, + forceRemovalStrategyList: getDataByType("forceRemovalStrategy"), + // 鎴愭湰鏂规硶 + costingMethodList: getDataByType("costingMethod"), + // 搴撳瓨璁′环 + inventoryValuationList: getDataByType("inventoryValuation"), memberOptions: [], paymentTypeListOptions: [], showButton: true, showEdit: false, // 鏄惁鏄剧ず缂栬緫鎸夐挳 isDelClick: false, // 鍒犻櫎鎸夐挳鏄惁鍙偣鍑� - showFooter: false // 鏄惁鏄剧ず鍙栨秷淇濆瓨 + showFooter: false, // 鏄惁鏄剧ず鍙栨秷淇濆瓨, + statisticsMap:{ + product: 0 // 浜у搧鏁伴噺 + } } }, created() { this.setBottonView() + this.getProductCount() }, methods: { + // 鑾峰彇浜у搧鏁伴噺 + getProductCount(){ + getProductList({ + keyWord: '', + categoryId: this.editConfig.title === "鏂板缓" ? null : this.editConfig.infomation.id, + page: 1, + pageSize: 1 + }).then((res) => { + if (res.code === 200) { + this.statisticsMap.product = res?.total ?? 0 + }else{ + this.statisticsMap.product = 0 + } + }).catch(err=>{ + console.error(err) + this.statisticsMap.product = 0 + }) + }, // 璁剧疆鍒犻櫎/鎵撳嵃/缂栬緫鏄惁鏄剧ず setBottonView() { if (this.editConfig.title === "鏂板缓") { @@ -191,19 +262,87 @@ handleClose() { this.editConfig.visible = false }, + // 鍒櫎 + deleteClick() { + let data = JSON.parse(JSON.stringify(this.editConfig.infomation)) + deleteProductCategory({ 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.showButton = false this.showFooter = true }, + saveParams() { + let data = JSON.parse(JSON.stringify(this.editConfig.infomation)) + + let params = { + costingMethod: data.costingMethod, + forceRemovalStrategy: data.forceRemovalStrategy, + inventoryValuation: data.inventoryValuation, + name: data.name, + parentId: data.parentId + } + if (data.id) { + params.id = data.id + } + return params + }, // 淇濆瓨 - saveClick() {}, + saveClick(formName) { + this.$refs[formName].validate((valid) => { + if (valid) { + const params = this.saveParams() + if (this.editConfig.title === "鏂板缓") { + addProductCategory(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 { + updateProductCategory(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 + } + }) + }, // 鍒犻櫎 delClick() {}, // 浜у搧 productClick() { - this.$router.push({ path: "/productManage/productList", query: { name: "浜у搧" } }) + this.$refs.form.validate((valid) => { + if (valid) { + this.$router.push({ + path: "/productManage/product", + query: { + categoryName: this.editConfig.infomation.name, + id: this.editConfig.title === "鏂板缓" ? "" : this.editConfig.infomation.id + } + }) + } + }) } } } @@ -234,15 +373,15 @@ 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; + // 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; .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%; @@ -337,13 +476,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; } } </style> -- Gitblit v1.8.0