From 968f9503d8bf7311253f6b81315d034c453f0c28 Mon Sep 17 00:00:00 2001
From: yangfeng <wanwan926_4@163.com>
Date: 星期三, 15 十一月 2023 19:01:21 +0800
Subject: [PATCH] 上架规则产品到达位置修改
---
src/components/makepager/CommonFormTableView.vue | 534 +++++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 425 insertions(+), 109 deletions(-)
diff --git a/src/components/makepager/CommonFormTableView.vue b/src/components/makepager/CommonFormTableView.vue
index 1962ce1..554b5b7 100644
--- a/src/components/makepager/CommonFormTableView.vue
+++ b/src/components/makepager/CommonFormTableView.vue
@@ -1,18 +1,18 @@
<template>
- <div class="page-view" :class="{ setHeight: isinventory || islistingrules }">
+ <div class="page-view" :class="{ setHeight: isinventory || islistingrules || isReorder }">
<el-form
ref="form"
:model="tableList"
:show-message="false"
label-position="right"
- :class="{ setHeight: isinventory || islistingrules }"
+ :class="{ setHeight: isinventory || islistingrules || isReorder }"
>
<el-table
:data="tableList.tableData"
border
style="width: 100%"
:height="'calc(100% - 0px)'"
- :class="{ setHeight: isinventory || islistingrules }"
+ :class="{ setHeight: isinventory || islistingrules || isReorder }"
:header-cell-style="{ background: '#f1f3f8', color: '#000009' }"
:row-class-name="tableRowClassName"
@row-click="tableRowClick"
@@ -42,16 +42,18 @@
:prop="'tableData.' + scope.$index + '.' + item.prop"
:rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
>
- <el-input
- v-model.trim="scope.row[item.prop]"
- maxlength="50"
- size="mini"
- @change="
- (val) => {
- commonInputChange(val, item.prop, scope.row)
- }
- "
- ></el-input>
+ <div @click.stop="commoInput">
+ <el-input
+ v-model.trim="scope.row[item.prop]"
+ maxlength="50"
+ size="mini"
+ @change="
+ (val) => {
+ commonInputChange(val, item.prop, scope.row)
+ }
+ "
+ ></el-input>
+ </div>
</el-form-item>
<el-form-item
v-else-if="item.productName"
@@ -85,19 +87,21 @@
:prop="'tableData.' + scope.$index + '.' + item.prop"
:rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
>
- <el-input-number
- v-model="scope.row[item.prop]"
- placeholder=""
- :min="0"
- :controls="false"
- size="mini"
- style="width: 100%; margin-right: 5px"
- @change="
- (val) => {
- commonInputChange(val, item.prop, scope.row)
- }
- "
- ></el-input-number>
+ <div @click.stop="commoInput">
+ <el-input-number
+ v-model="scope.row[item.prop]"
+ placeholder=""
+ :min="0"
+ :controls="false"
+ size="mini"
+ style="width: 100%; margin-right: 5px"
+ @change="
+ (val) => {
+ commonInputChange(val, item.prop, scope.row)
+ }
+ "
+ ></el-input-number>
+ </div>
</el-form-item>
<el-form-item
v-else-if="item.inputFloat"
@@ -106,20 +110,21 @@
:rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
>
<span v-if="scope.row.isEdit">{{ scope.row[item.prop] }}</span>
- <el-input-number
- v-else
- v-model="scope.row[item.prop]"
- placeholder=""
- :precision="2"
- :controls="false"
- size="mini"
- style="width: 100%; margin-right: 5px"
- @change="
- (val) => {
- commonInputChange(val, item.prop, scope.row)
- }
- "
- ></el-input-number>
+ <div v-else @click.stop="commoInput">
+ <el-input-number
+ v-model="scope.row[item.prop]"
+ placeholder=""
+ :precision="2"
+ :controls="false"
+ size="mini"
+ style="width: 100%; margin-right: 5px"
+ @change="
+ (val) => {
+ commonInputChange(val, item.prop, scope.row)
+ }
+ "
+ ></el-input-number>
+ </div>
</el-form-item>
<el-form-item v-else-if="item.select" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
<div class="custom-name">
@@ -138,11 +143,15 @@
<!-- 浣嶇疆 -->
<el-form-item v-else-if="item.location" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
<div class="custom-name">
+ <span v-if="scope.row.isEdit || scope.row.editable">{{
+ scope.row[item.prop]?.label ?? scope.row[item.prop]
+ }}</span>
<el-select
- v-if="!scope.row.isEdit && scope.row.isOrder"
+ v-else
v-model="scope.row[item.prop]"
placeholder="璇烽�夋嫨"
size="mini"
+ filterable
style="width: 80%"
@change="
(val) => {
@@ -153,8 +162,99 @@
<el-option
v-for="(item, index) in selLocationOptions"
:key="index"
- :label="item.name"
- :value="{ value: item.id, label: item.name }"
+ :label="item.jointName"
+ :value="{ value: item.id, label: item.jointName }"
+ >
+ </el-option>
+ </el-select>
+ </div>
+ </el-form-item>
+ <!-- 浜у搧鍒拌揪浣嶇疆 -->
+ <el-form-item v-else-if="item.toLocation" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
+ <div class="custom-name">
+ <span v-if="scope.row.isEdit || scope.row.editable">{{
+ scope.row[item.prop]?.label ?? scope.row[item.prop]
+ }}</span>
+ <el-select
+ v-else
+ v-model="scope.row[item.prop]"
+ placeholder="璇烽�夋嫨"
+ size="mini"
+ filterable
+ style="width: 80%"
+ @change="
+ (val) => {
+ selLocationClick(val, item.prop)
+ }
+ "
+ >
+ <el-option
+ v-for="(item, index) in selToLocationOptions"
+ :key="index"
+ :label="item.jointName"
+ :value="{ value: item.id, label: item.jointName }"
+ >
+ </el-option>
+ </el-select>
+ </div>
+ </el-form-item>
+ <!-- 瀛愪綅缃� -->
+ <el-form-item
+ v-else-if="item.sonLocation"
+ label=" "
+ :prop="'tableData.' + scope.$index + '.' + item.prop"
+ >
+ <div class="custom-name">
+ <span v-if="scope.row.isEdit || scope.row.editable">{{
+ scope.row[item.prop]?.label ?? scope.row[item.prop]
+ }}</span>
+ <el-select
+ v-else
+ v-model="scope.row[item.prop]"
+ placeholder="璇烽�夋嫨"
+ size="mini"
+ style="width: 80%"
+ @change="
+ (val) => {
+ selSonLocationClick(val, item.prop)
+ }
+ "
+ >
+ <el-option
+ v-for="(item, index) in selSonLocationOptions"
+ :key="index"
+ :label="item.jointName"
+ :value="{ value: item.id, label: item.jointName }"
+ >
+ </el-option>
+ </el-select>
+ </div>
+ </el-form-item>
+ <!-- 閲嶈璐ц鍒�-浣嶇疆 -->
+ <el-form-item
+ v-else-if="item.defaultLocation"
+ label=" "
+ :prop="'tableData.' + scope.$index + '.' + item.prop"
+ >
+ <div class="custom-name">
+ <el-select
+ v-if="!scope.row.isEdit && scope.row.isOrder"
+ v-model="locacionName"
+ placeholder="璇烽�夋嫨"
+ size="mini"
+ filterable
+ style="width: 80%"
+ @change="
+ (val) => {
+ selLocationClick(val, item.prop, scope.row)
+ }
+ "
+ >
+ <el-option
+ v-for="(ite, index) in selLocationOptions"
+ :key="index"
+ :label="ite.name"
+ :value="{ value: ite.id, label: ite.name }"
>
</el-option>
</el-select>
@@ -166,13 +266,16 @@
<!-- 浜у搧 -->
<el-form-item v-else-if="item.product" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
<div class="custom-name">
- <span v-if="scope.row.isEdit || scope.row.editable">{{ scope.row[item.prop] }}</span>
- <el-select
+ <span v-if="scope.row.isEdit || scope.row.editable">{{ scope.row.productName }}</span>
+ <!-- <el-select
v-else
v-model="scope.row[item.prop]"
placeholder="璇烽�夋嫨"
size="mini"
+ filterable
style="width: 80%"
+ clearable
+ @clear="setValueNull(scope.row[item.prop])"
@change="
(val) => {
selProductClick(val)
@@ -193,14 +296,31 @@
}"
>
</el-option>
- </el-select>
+ </el-select> -->
+ <el-autocomplete
+ v-else
+ style="width: 100%"
+ v-model="scope.row.productName"
+ :fetch-suggestions="
+ (queryString, callback) => {
+ querySearchAsync(queryString, callback, 'product')
+ }
+ "
+ value-key="name"
+ @select="handleSelectClient('product', $event)"
+ ></el-autocomplete>
</div>
</el-form-item>
- <!-- 浜у搧绫诲瀷 -->
- <el-form-item v-else-if="item.productType" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
+ <!-- 浜у搧绫诲埆 -->
+ <el-form-item
+ v-else-if="item.productType"
+ label=" "
+ :prop="'tableData.' + scope.$index + '.' + item.prop"
+ >
<div class="custom-name">
- <span v-if="scope.row.isEdit || scope.row.editable">{{ scope.row[item.prop] }}</span>
- <el-select
+ <span v-if="scope.row.isEdit || scope.row.editable">{{ scope.row.productCategory }}</span>
+
+ <!-- <el-select
v-else
v-model="scope.row[item.prop]"
placeholder="璇烽�夋嫨"
@@ -218,11 +338,24 @@
:label="item.name"
:value="{
value: item.id,
- label: item.name,
+ label: item.name
}"
>
</el-option>
- </el-select>
+ </el-select> -->
+ <el-autocomplete
+ v-else
+ style="width: 100%"
+ v-model="scope.row.productCategory"
+ @focus="productTypeFocus"
+ :fetch-suggestions="
+ (queryString, callback) => {
+ querySearchAsync(queryString, callback, 'productType')
+ }
+ "
+ value-key="name"
+ @select="handleSelectClient('productType', $event)"
+ ></el-autocomplete>
</div>
</el-form-item>
<!-- 鐢ㄦ埛 -->
@@ -254,7 +387,7 @@
style="width: 80%"
@change="
(val) => {
- selRoteClick(val, item.prop)
+ selRouteClick(val, item.prop)
}
"
>
@@ -286,7 +419,7 @@
<slot name="tableButton" />
</el-table>
</el-form>
- <div v-if="!detailEnter && !isinventory && !islistingrules" style="margin: 10px">
+ <div v-if="!detailEnter && !isinventory && !islistingrules && !isReorder" style="margin: 10px">
<el-button size="small" type="primary" @click="add">娣诲姞鏄庣粏琛�</el-button>
<!-- <el-button size="small" type="primary" @click="empty">娓呯┖</el-button> -->
</div>
@@ -307,6 +440,7 @@
import { getRuleList } from "@/api/operate/inventoryAdjustment"
import { getProductCategoryList } from "@/api/product/productCategory"
import SimpleSearchInput from "@/components/makepager/SimpleSearchInput"
+import { getAmountAndPrediction } from "@/api/product/reorderRules"
// import SelectCommonDialog from "@/views/other/commonDialog/SelectCommonDialog"
export default {
name: "CommmonFormTableView",
@@ -341,6 +475,10 @@
islistingrules: {
type: Boolean,
default: false
+ },
+ isReorder: {
+ type: Boolean,
+ default: false
}
},
data() {
@@ -362,19 +500,29 @@
{ id: 2, name: "鎵�" }
],
selLocationOptions: [], // 浣嶇疆
+ selSonLocationOptions: [], //瀛愪綅缃�
+ selToLocationOptions: [], // 浜у搧鍒拌揪浣嶇疆
companyOptions: [], // 鍏徃
- selRouteOptions: [] // 璺嚎
+ selRouteOptions: [{ id: 1, name: "鍒堕��" }], // 璺嚎
+ locacionName: "",
+ locacionId: 0,
+ productName: "",
+ productId: "",
+ initialPosition: ""
}
},
created() {
if (this.isinventory) {
this.getRuleList()
+ } else if (this.isReorder) {
+ this.getProductList()
+ this.getLocationList()
} else {
this.getProductList()
this.getProductCategoryList()
}
if (this.islistingrules) {
- this.getLocationList()
+ this.getToLocationList()
// this.getCompanyList()
}
this.tableList = this.productTableList
@@ -400,6 +548,55 @@
}
})
},
+ async handleSelectClient(value, item) {
+ if (value === "product") {
+ if (item.categoryId === 0 || item.categoryName === "") {
+ this.productTypeNameOptions = []
+ this.tableList.tableData[this.tableList.rowClickIndex].productCategory = ""
+ } else {
+ await getProductCategoryList({
+ categoryId: item.categoryId,
+ keyWord: item.categoryName,
+ page: 1,
+ pageSize: 15
+ }).then((res) => {
+ if (res.code === 200) {
+ const list = res.data ? res.data : []
+ this.productTypeNameOptions = list
+ this.tableList.tableData[this.tableList.rowClickIndex].productCategory = list[0].name
+ }
+ })
+ }
+ } else if (value === "productType") {
+ console.log("浜у搧绫诲瀷閫変腑")
+ }
+ this.$emit("selProductClick", value, item)
+ },
+ querySearchAsync(queryString, cb, value) {
+ let restaurants = ""
+ if (value === "product") {
+ restaurants = this.productNameOptions
+ } else if (value === "productType") {
+ restaurants = this.productTypeNameOptions
+ }
+ var results = queryString ? restaurants.filter(this.createStateFilter(queryString, value)) : restaurants
+ cb(results)
+ if (results.length === 0) {
+ this.productTypeNameOptions = []
+ }
+ console.log(results, "results", value)
+ this.$emit("querySearchData", queryString, results, value)
+ },
+ createStateFilter(queryString) {
+ return (state) => {
+ return state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0
+ }
+ },
+ // 娓呴櫎閫変腑浜у搧
+ setValueNull(val) {
+ console.log(val, "鐪嬬湅val")
+ },
+
// 搴撳瓨璋冩暣鑾峰彇浣嶇疆鍜屼骇鍝�
async getRuleList() {
await getRuleList({
@@ -410,19 +607,19 @@
if (res.code === 200) {
const list = res.data ? res.data : []
this.selLocationOptions = list.locationList
+ this.selSonLocationOptions = list.locationList
this.productNameOptions = list.productList
}
})
},
// 鑾峰彇浜у搧绫诲瀷鍒楄〃
- async getProductCategoryList(){
+ async getProductCategoryList() {
await getProductCategoryList({
- categoryId:0,
- keyWord:"",
- page:1,
- pageSize:15
+ categoryId: 0,
+ keyWord: "",
+ page: 1,
+ pageSize: 15
}).then((res) => {
- console.log(res,"鐪嬬湅浜у搧绫诲瀷鍒楄〃")
if (res.code === 200) {
const list = res.data ? res.data : []
this.productTypeNameOptions = list
@@ -432,13 +629,66 @@
// 浣嶇疆
async getLocationList() {
await getLocationList({
- keyword: "",
+ // keyword: "",
+ jointName: this.initialPosition ? this.initialPosition : null,
+ productId: this.queryProductId ? this.queryProductId : null,
+ productCategoryId: this.categoryId ? this.categoryId : null,
page: 1,
pageSize: 100
}).then((res) => {
+ console.log(res, "newlocal")
if (res.code === 200) {
const list = res.data ? res.data : []
this.selLocationOptions = list
+ this.selSonLocationOptions = list
+ console.log(list, "999")
+ if (this.isReorder) {
+ this.locacionName = list[0]?.name
+ this.locacionId = list[0]?.id
+ this.$emit("selLocationClick", list[0], "locacionName")
+ }
+ }
+ })
+ },
+ // 浜у搧鍒拌揪浣嶇疆
+ async getToLocationList() {
+ await getLocationList({
+ // keyword: "",
+ type: 3,
+ page: 1,
+ pageSize: 100
+ }).then((res) => {
+ console.log(res, "newlocal")
+ if (res.code === 200) {
+ const list = res.data ? res.data : []
+ this.selToLocationOptions = list
+ this.selSonLocationOptions = list
+ console.log(list, "999")
+ if (this.isReorder) {
+ this.locacionName = list[0]?.name
+ this.locacionId = list[0]?.id
+ this.$emit("selLocationClick", list[0], "locacionName")
+ }
+ }
+ })
+ },
+ // 璁剧疆瀛愪綅缃�
+ async setLocationList(jointName) {
+ await getLocationList({
+ // keyword: "",
+ jointName: jointName,
+ page: 1,
+ pageSize: 100
+ }).then((res) => {
+ console.log(res, "newlocal")
+ if (res.code === 200) {
+ const list = res.data ? res.data : []
+ this.selSonLocationOptions = list
+ // if (this.isReorder) {
+ // this.locacionName = list[0]?.name
+ // this.locacionId = list[0]?.id
+ // this.$emit("selLocationClick", list[0], "locacionName")
+ // }
}
})
},
@@ -446,36 +696,42 @@
async getCompanyList() {
await getCompanyList().then((res) => {
console.log(res)
- if (res.data.code === 200) {
- this.companyOptions = res.data.data
+ if (res.code === 200) {
+ this.companyOptions = res.data
}
})
},
selProductNameClick(item) {
- console.log(item)
- this.tableList.tableData.map((ite) => {
+ this.productIndex = this.tableList.tableData.length - 1
+ this.tableList.tableData.map((ite, index) => {
console.log(ite)
- // if (ite.productName === item.name) {
- ite.productId = item.id
- ite.productName = item.name
- ite.amount = item.amount
- ite.unit = item.unit
- // }
- })
- console.log(this.tableList.tableData)
- },
- // 閫夋嫨浜у搧
- selProductClick(item) {
- this.tableList.tableData.map((ite) => {
- if (ite.productName.label === item.label) {
- ite.productId = item.value
- ite.productName = item.label
- ite.categoryId = item.categoryId
- ite.productCategory = item.categoryName
+ if (index === this.productIndex) {
+ ite.productId = item.id
+ ite.productName = item.name
ite.amount = item.amount
ite.unit = item.unit
}
})
+ },
+ // 閫夋嫨浜у搧
+ selProductClick(item) {
+ if (this.isReorder) {
+ this.productId = item.value
+ this.productName = item.label
+ this.getAmountAndPrediction(item, "product")
+ } else {
+ this.tableList.tableData.map((ite) => {
+ if (ite.productName.label === item.label) {
+ ite.productId = item.value
+ ite.productName = item.label
+ ite.categoryId = item.categoryId
+ ite.productCategory = item.categoryName
+ ite.amount = item.amount
+ ite.unit = item.unit
+ }
+ })
+ }
+
if (this.isinventory) {
getRuleList({
locationId: 0,
@@ -485,11 +741,12 @@
if (res.code === 200) {
const list = res.data ? res.data : []
this.selLocationOptions = list.locationList
+ this.selSonLocationOptions = list.locationList
}
})
}
console.log(this.tableList.tableData)
- this.$emit("selProductClick", item)
+ // this.$emit("selProductClick", item)
},
// 閫夋嫨浜у搧绫诲瀷
selProductTypeClick(item) {
@@ -502,13 +759,48 @@
if (this.isinventory) {
this.getProductCategoryList()
}
- console.log(this.tableList.tableData)
- this.$emit("selProductTypeClick", item)
+ // this.$emit("selProductTypeClick", item)
+ },
+ // 浜у搧绫诲瀷鑾峰彇鐒︾偣
+ productTypeFocus() {
+ getProductCategoryList({
+ categoryId: 0,
+ keyWord: "",
+ page: 1,
+ pageSize: 15
+ }).then((res) => {
+ if (res.code === 200) {
+ const list = res.data ? res.data : []
+ this.productTypeNameOptions = list
+ }
+ })
},
// 閫夋嫨浣嶇疆
- selLocationClick(item, prop) {
- console.log(item)
- console.log(this.tableList.tableData)
+ selLocationClick(item, prop, row) {
+ console.log(item, prop, row, "璧峰浣嶇疆")
+ if (prop === "areaName") {
+ // this.initialPosition=item.label
+ getLocationList({
+ jointName: item.label,
+ page: 1,
+ pageSize: 100
+ }).then((res) => {
+ if (res.code === 200) {
+ const list = res.data ? res.data : []
+ this.selSonLocationOptions = list
+ if (this.isReorder) {
+ this.locacionName = list[0]?.name
+ this.locacionId = list[0]?.id
+ this.$emit("selLocationClick", list[0], "locacionName")
+ }
+ }
+ })
+ }
+ if (this.isReorder) {
+ if (this.productId !== 0) {
+ this.getAmountAndPrediction(row, "location", item)
+ }
+ }
if (this.isinventory) {
getRuleList({
locationId: item.value,
@@ -517,31 +809,42 @@
console.log(res)
if (res.code === 200) {
const list = res.data ? res.data : []
- // this.selLocationOptions = list.locationList
this.productNameOptions = list.productList
}
})
}
this.$emit("selLocationClick", item, prop)
},
- // 閫夋嫨璺嚎
- selRoteClick(item, prop) {
- console.log(item, prop)
+ // 閫夋嫨瀛愪綅缃�
+ selSonLocationClick(item) {
+ this.$emit("selSonLocationClick", item)
+ },
+ // 鑾峰彇鍦ㄥ簱涓庨娴嬫暟閲�
+ getAmountAndPrediction(item, val, ite) {
+ console.log(item, val, ite)
+ console.log(this.productName)
console.log(this.tableList.tableData)
- // if (this.isinventory) {
- // getRuleList({
- // locationId: item.value,
- // productId: ""
- // }).then((res) => {
- // console.log(res)
- // if (res.code === 200) {
- // const list = res.data ? res.data : []
- // // this.selLocationOptions = list.locationList
- // this.productNameOptions = list.productList
- // }
- // })
- // }
- // this.$emit("selLocationClick", item, prop)
+ if (this.productName.length > 0) {
+ getAmountAndPrediction({
+ locationId: val === "product" ? this.locacionId : ite.value,
+ productId: val === "product" ? item.value : this.productId
+ }).then((res) => {
+ if (res.code === 200) {
+ this.tableList.tableData.map((ite) => {
+ if (ite.productName.label === this.productName) {
+ ite.amount = res.data.amount
+ ite.prediction = res.data.prediction
+ ite.unit = item.unit
+ }
+ })
+ }
+ })
+ }
+ },
+ // 閫夋嫨璺嚎
+ selRouteClick(item, prop) {
+ console.log("33333333333333")
+ this.$emit("selRouteClick", item, prop)
},
// 閫夋嫨鍗曚綅/鐢ㄦ埛
selCommonClick(item) {
@@ -639,7 +942,8 @@
},
setFormItem(val) {
console.log(val)
- }
+ },
+ commoInput() {}
}
}
</script>
@@ -669,6 +973,15 @@
}
}
::v-deep {
+ .el-autocomplete {
+ height: 28px;
+ .el-input {
+ height: 28px;
+ .el-input__inner {
+ height: 28px;
+ }
+ }
+ }
.el-form-item__label {
display: none;
}
@@ -706,4 +1019,7 @@
height: 35px;
text-align: center;
}
+::v-deep .el-table__body-wrapper {
+ height: unset !important;
+}
</style>
--
Gitblit v1.8.0