From 6d5a9b68644735008e5fe5a70b2aa483ba3d9a7c Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期一, 22 四月 2024 10:50:37 +0800
Subject: [PATCH] 库存调整模块 添加点击自身报错位置id的问题修改
---
src/views/productManage/productCategory/AddProductCategoryDialog.vue | 308 ++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 254 insertions(+), 54 deletions(-)
diff --git a/src/views/productManage/productCategory/AddProductCategoryDialog.vue b/src/views/productManage/productCategory/AddProductCategoryDialog.vue
index 32c5b96..b4330aa 100644
--- a/src/views/productManage/productCategory/AddProductCategoryDialog.vue
+++ b/src/views/productManage/productCategory/AddProductCategoryDialog.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>
@@ -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,71 @@
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"
+ @listingRulesClick="listingRulesClick"
+ />
<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 productCategoryList" :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 +109,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 +165,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 +175,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: {
@@ -146,36 +188,106 @@
return {
visible: false,
title: "鏂板缓",
- infomation: { type: [] }
+ infomation: { type: [] },
+ autoEdit: false
}
+ }
+ },
+ productCategoryList: {
+ type: Array,
+ default: () => {
+ return []
}
}
},
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%",
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()
+ if (this.editConfig.autoEdit) {
+ this.editClick()
+ }
+ this.setOptionalFieldsToEmpty()
},
methods: {
+ /**
+ * 闈炲繀濉」鍚庣杩斿洖鐨勬槸鏁板瓧 0,琛ㄥ崟闇�瑕佺┖涓叉墠鑳借涓烘湭閫夋嫨鍥炴樉
+ */
+ setOptionalFieldsToEmpty() {
+ let arr = ["parentId", "costingMethod", "inventoryValuation", "forceRemovalStrategy"]
+ arr
+ .filter((filed) => this.editConfig.infomation[filed] === 0)
+ .forEach((filed) => {
+ this.editConfig.infomation[filed] = ""
+ })
+ },
+ /**
+ * 鍚庣鍙帴鍙楁暟瀛楀舰寮�, 淇濆瓨鏃惰繕寰楀啀杞洖鍘�
+ */
+ unsetFieldsToNumber() {
+ let arr = ["parentId", "costingMethod", "inventoryValuation", "forceRemovalStrategy"]
+ arr
+ .filter((filed) => this.editConfig.infomation[filed] === "")
+ .forEach((filed) => {
+ this.editConfig.infomation[filed] = 0
+ })
+ },
+ // 鑾峰彇浜у搧鏁伴噺
+ getProductCount() {
+ if (this.editConfig.title !== "鏂板缓") {
+ 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 +303,102 @@
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() {
+ this.unsetFieldsToNumber()
+ 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
+ }
+ })
+ }
+ })
+ },
+ // 涓婃灦瑙勫垯
+ listingRulesClick() {
+ this.$refs.form.validate((valid) => {
+ if (valid) {
+ this.$router.push({
+ path: "/warehouseManage/listingRules",
+ query: {
+ categoryName: this.editConfig.infomation.name,
+ id: this.editConfig.title === "鏂板缓" ? "" : this.editConfig.infomation.id
+ }
+ })
+ }
+ })
}
}
}
@@ -234,15 +429,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 +532,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