From 1be1b02ce28638c92076e4d40afec70a3f4c2249 Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期二, 07 五月 2024 14:37:02 +0800
Subject: [PATCH] 产品模块 启用多单位点击取消关闭复选框+点击确定的时候增加至少填写一项的校验
---
src/views/warehouseManage/listingRules/index.vue | 229 +++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 159 insertions(+), 70 deletions(-)
diff --git a/src/views/warehouseManage/listingRules/index.vue b/src/views/warehouseManage/listingRules/index.vue
index b84d797..32b3b4c 100644
--- a/src/views/warehouseManage/listingRules/index.vue
+++ b/src/views/warehouseManage/listingRules/index.vue
@@ -4,30 +4,38 @@
<SearchCommonView
:add-title="addTitle"
:show-discard="showDiscard"
- :placeholder="'璇疯緭鍏ヤ綅缃�/浜у搧'"
+ :placeholder="'璇疯緭鍏ヤ骇鍝�/浜у搧绫诲埆'"
:amount-view="false"
+ :search-task-map="searchTaskMap"
@addCommonClick="addProductClick"
@searchClick="getList"
@discardBtnClick="discardBtnClick"
@applyBtnClick="applyBtnClick"
+ @delSelectClick="delSelectClick"
/>
</div>
<div class="list-view">
<div class="table">
<CommonFormTableView
+ ref="tableRef"
:islistingrules="true"
:product-table-list="tableList"
@inputContent="inputContent"
@tableRowClick="tableRowClick"
@selLocationClick="selLocationClick"
+ @selSonLocationClick="selSonLocationClick"
+ @querySearchData="querySearchData"
@selProductClick="selProductClick"
>
+ <!--
+ @selProductTypeClick="selProductTypeClick"
+ -->
<template slot="tableButton">
- <el-table-column label="鎿嶄綔" width="90" fixed="right" align="center">
+ <el-table-column label="鎿嶄綔" width="90" align="center">
<template slot-scope="scope">
- <el-button v-if="scope.row.isEdit" @click.stop="delClick(scope)" type="text" size="small"
- >鍒犻櫎</el-button
- >
+ <span v-if="scope.row.isEdit" @click.stop="delClick(scope)" class="yes-cursor">
+ <span style="color: #2a78fb">鍒犻櫎</span>
+ </span>
</template>
</el-table-column>
</template>
@@ -60,60 +68,62 @@
addTitle: "鏂板缓",
showDiscard: false,
tableList: {},
- tableData: [
- {
- location: "HC/閿�鍞尯",
- productName: "澶忓鐪熶笣鍚婂甫瑁�",
- amount: "0.00",
- unit: "浠�",
- count: "0.00",
- date: "2023-12-31",
- user: "绠$悊鍛�",
- isSet: true,
- isEdit: true
- },
- {
- location: "HM/閿�鍞尯",
- productName: "澶忓鐪熶笣鍚婂甫瑁�",
- productCategory: "",
- subLocation: "A鍖�",
- companyName: "璐濇�濈",
- isSet: true,
- isEdit: true
- }
- ],
searchOptions: [],
countId: 0,
isNoProduct: true, // 娣诲姞鏄庣粏琛屾椂鏄惁鏈変骇鍝佹湭閫夋嫨
isRowClick: false,
areaId: 0,
productId: 0,
+ productCategoryId: 0,
subLocationId: 0,
- currentRowId: 0
+ currentRowId: 0,
+ rowIndex: -1,
+ RuleType: 0,
+ queryProductId: null,
+ categoryId: null,
+ searchTaskMap: [],
+ isCreate: false,
+ thatRow: {}
}
},
created() {
this.setTable()
+ let query = this.$route.query
+ if (query) {
+ this.queryProductId = query.productId?.length ? query.productId : null
+ this.categoryId = query.id ? Number(query.id) : null
+ this.pagerOptions.currPage = 1
+ this.searchTaskMap =
+ query?.id > 0
+ ? [{ categoryId: this.categoryId, title: query.categoryName }]
+ : query.productId?.length > 0
+ ? [{ productId: this.queryProductId, title: query.productName }]
+ : []
+ console.log(this.searchTaskMap)
+ }
this.getData()
},
methods: {
setTable() {
this.tableList = {
tableData: [],
- selectBox: true,
+ selectBox: false,
+ selectIndex: true,
tableColumn: [
- { label: "褰撲骇鍝佸埌杈�", prop: "areaName", location: true },
+ { label: "褰撲骇鍝佸埌杈�", prop: "areaName", toLocation: true },
{ label: "浜у搧", prop: "productName", product: true },
- { label: "浜у搧绫诲埆", prop: "productCategory" },
- { label: "瀛樺偍鍒板瓙浣嶇疆", prop: "subLocation", location: true }
+ { label: "浜у搧绫诲埆", prop: "productCategory", productType: true },
+ { label: "瀛樺偍鍒板瓙浣嶇疆", prop: "subLocation", sonLocation: true }
// { label: "鍏徃", prop: "companyName", company: true }
- ]
+ ],
+ rowClickIndex: -1
}
},
// 璇锋眰鏁版嵁
async getData() {
await getListingRulesList({
- // keyword: this.keyword,
+ productId: this.queryProductId ? this.queryProductId : null,
+ productCategoryId: this.categoryId ? this.categoryId : null,
page: this.pagerOptions.currPage,
pageSize: this.pagerOptions.pageSize
}).then((res) => {
@@ -121,8 +131,8 @@
const list = res.data.map((item) => {
return {
...item,
- areaName: item.area.jointName,
- subLocation: item.location.jointName,
+ areaName: { label: item.area.jointName, value: item.area.id },
+ subLocation: { label: item.location.jointName, value: item.location.id },
productName: item.product.name,
productCategory: item.productCategory.name,
isSet: false,
@@ -146,6 +156,9 @@
},
// 鏂板
addProductClick() {
+ this.isCreate = true
+ this.tableList.tableColumn[1].product = true
+ this.tableList.tableColumn[2].productType = true
console.log(this.tableData)
this.isSel()
if (this.isNoProduct && this.addTitle === "鏂板缓") {
@@ -154,7 +167,7 @@
this.isRowClick = false
this.currentRowId = 0
this.countId++
- this.tableData.push({
+ this.tableData.unshift({
countId: this.countId,
areaId: 0,
areaName: "",
@@ -163,8 +176,10 @@
subLocation: "",
productName: "",
companyName: "",
+ productCategory: "",
isSet: true,
- isEdit: false
+ isEdit: false,
+ isOrder: true
})
this.areaId = 0
this.subLocationId = 0
@@ -173,8 +188,8 @@
} else {
if (this.areaId === 0) {
this.$message.error("璇烽�夋嫨褰撳墠浜у搧鍒拌揪浣嶇疆")
- } else if (this.productId === 0) {
- this.$message.error("璇烽�夋嫨浜у搧")
+ } else if (this.productId === 0 && this.productCategoryId === 0) {
+ this.$message.error("璇烽�夋嫨浜у搧鎴栦骇鍝佺被鍒�")
} else if (this.subLocationId === 0) {
this.$message.error("璇烽�夋嫨瀛樺偍鍒板瓙浣嶇疆")
} else {
@@ -192,6 +207,7 @@
})
let requestUrl = this.currentRowId === 0 ? addListingRules : updateListingRules
requestUrl({
+ RuleType: this.RuleType,
id: this.currentRowId,
areaId: this.areaId,
locationId: this.subLocationId,
@@ -200,9 +216,10 @@
}).then((res) => {
console.log(res)
if (res.code === 200) {
+ this.getData()
let tipStr = this.currentRowId === 0 ? "娣诲姞鎴愬姛" : "淇敼鎴愬姛"
this.$message.success(tipStr)
- this.getData()
+ this.isCreate = false
}
})
}
@@ -212,7 +229,7 @@
isSel() {
for (let i = 0; i < this.tableData.length; i++) {
if (this.tableData[i].productName.length === 0) {
- this.isNoProduct = false
+ this.isNoProduct = true // 鏆傛椂淇敼涓簍rue锛屽鏋滀骇鍝佷互鍚庢槸蹇呭~锛屾敼涓篺alse灏辫
break
} else {
this.isNoProduct = true
@@ -221,13 +238,10 @@
},
// 鍙栨秷
discardBtnClick() {
- if (this.isRowClick) {
- this.tableData.map((item) => {
- item.isEdit = true
- })
- } else {
- this.tableData.splice(this.tableData.length - 1, 1)
- }
+ this.getData()
+ this.isCreate = false
+ this.tableList.tableColumn[1].product = true
+ this.tableList.tableColumn[2].productType = true
this.addTitle = "鏂板缓"
this.showDiscard = false
},
@@ -264,29 +278,56 @@
},
// 琛岀偣鍑�
tableRowClick(row, rowIndex) {
- console.log("11111")
+ this.thatRow = row
+ this.tableList.rowClickIndex = rowIndex
+ this.rowIndex = rowIndex
this.isSel()
if (!this.isNoProduct && this.currentRowId === 0) {
this.$message.error("璇峰畬鎴愬綋鍓嶆柊寤烘垨鍙栨秷鏂板缓")
} else {
- this.currentRowId = row.id
+ this.currentRowId = row.id || 0
this.addTitle = "淇濆瓨"
this.showDiscard = true
this.isRowClick = true
- if (!this.isNoProduct) {
- this.tableData.splice(this.tableData.length - 1, 1)
+ if (this.isNoProduct) {
+ // this.tableData.splice(this.tableData.length - 1, 1)
+ this.tableData.map((item, index) => {
+ if (index === rowIndex) {
+ item.isEdit = false
+ item.isOrder = true
+ } else {
+ item.isEdit = true
+ }
+ })
+ this.areaId = row.areaId
+ this.subLocationId = row.locationId
+ this.productCategoryId = row.productCategoryId
+ this.productId = row.productId
}
- this.tableData.map((item, index) => {
- if (index === rowIndex) {
- item.isEdit = false
- } else {
- item.isEdit = true
+ }
+ },
+ querySearchData(queryString, results, value) {
+ if (this.isCreate) {
+ if (queryString === "") {
+ this.tableList.tableColumn[1].product = true
+ this.tableList.tableColumn[2].productType = true
+ } else {
+ if (value === "product") {
+ this.tableList.tableColumn[2].productType = false
+ if (results.length !== 0) {
+ this.productId = results[0].id
+ } else {
+ this.productId = 0
+ }
+ } else if (value === "productType") {
+ this.tableList.tableColumn[1].product = false
+ if (results.length !== 0) {
+ this.productCategoryId = results[0].id
+ } else {
+ this.productCategoryId = 0
+ }
}
- })
- this.areaId = row.areaId
- this.subLocationId = row.locationId
- this.productCategoryId = row.productCategoryId
- this.productId = row.productId
+ }
}
},
// 鎼滅储
@@ -312,20 +353,31 @@
this.editConfig.visible = true
this.editConfig.title = "鏂板缓"
},
- // 閫夋嫨浣嶇疆鏂规硶
+ // 閫夋嫨璧峰浣嶇疆鏂规硶
selLocationClick(item, prop) {
- console.log(item, prop)
if (prop === "areaName") {
this.areaId = item.value
} else if (prop === "subLocation") {
this.subLocationId = item.value
}
},
+ // 閫夋嫨瀛愪綅缃柟娉�
+ selSonLocationClick(item) {
+ this.subLocationId = item.value
+ },
// 閫変腑浜у搧鏂规硶
- selProductClick(item) {
- console.log(item)
- this.productId = item.value
- this.productCategoryId = item.categoryId
+ selProductClick(value, item) {
+ console.log(value, item)
+ if (value === "product") {
+ this.RuleType = 1
+ this.tableList.tableColumn[2].productType = false
+ this.productId = item.productId
+ this.productCategoryId = item.categoryId
+ } else if (value === "productType") {
+ this.productCategoryId = item.id
+ this.RuleType = 2
+ this.tableList.tableColumn[1].product = false
+ }
},
// 鍒犻櫎
async delClick(scope) {
@@ -336,10 +388,47 @@
this.getData()
}
})
+ },
+ // 鍒犻櫎浜у搧绫诲瀷
+ delSelectClick() {
+ this.categoryId = 0
+ this.queryProductId = ""
+ this.getData()
+ }
+ },
+ watch: {
+ rowIndex(newVal) {
+ if (this.isCreate) {
+ if (newVal === 0) {
+ this.tableList.tableColumn[1].product = true
+ this.tableList.tableColumn[2].productType = true
+ } else {
+ this.$message.error("璇峰畬鎴愬綋鍓嶆柊寤烘垨鍙栨秷鏂板缓")
+ this.tableList.tableColumn[1].product = false
+ this.tableList.tableColumn[2].productType = false
+ }
+ } else {
+ if (this.tableList.tableData[newVal].productName === "") {
+ this.tableList.tableColumn[1].product = false
+ this.tableList.tableColumn[2].productType = true
+ } else {
+ this.tableList.tableColumn[1].product = true
+ this.tableList.tableColumn[2].productType = false
+ }
+ }
+ this.$refs.tableRef.getProductCategoryList()
}
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+::v-deep {
+ .el-table {
+ border-top-left-radius: 12px;
+ border-top-right-radius: 12px;
+ overflow: auto;
+ }
+}
+</style>
--
Gitblit v1.8.0