From 04489cc3864aa38fde8b539aee6c4c9eed6ab1d4 Mon Sep 17 00:00:00 2001
From: yangfeng <wanwan926_4@163.com>
Date: 星期四, 28 九月 2023 14:35:35 +0800
Subject: [PATCH] 解决产品列表报错
---
src/components/makepager/CommonFormTableView.vue | 239 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 229 insertions(+), 10 deletions(-)
diff --git a/src/components/makepager/CommonFormTableView.vue b/src/components/makepager/CommonFormTableView.vue
index 60108e2..e5a99d1 100644
--- a/src/components/makepager/CommonFormTableView.vue
+++ b/src/components/makepager/CommonFormTableView.vue
@@ -1,11 +1,22 @@
<template>
- <div class="page-view">
- <el-form ref="form" :model="tableList" :show-message="false" label-position="right">
+ <div class="page-view" :class="{ setHeight: isinventory || islistingrules }">
+ <el-form
+ ref="form"
+ :model="tableList"
+ :show-message="false"
+ label-position="right"
+ :class="{ setHeight: isinventory || islistingrules }"
+ >
<el-table
:data="tableList.tableData"
style="width: 100%"
+ :height="isinventory || islistingrules ? 'calc(100% - 0px)' : ''"
:header-cell-style="{ background: '#f1f3f8', color: '#000009' }"
+ :row-class-name="tableRowClassName"
+ @row-click="tableRowClick"
>
+ <el-table-column v-if="tableList.selectBox" type="selection" width="40" align="center"> </el-table-column>
+ <el-table-column v-if="tableList.selectIndex" type="index" label="搴忓彿" width="50"> </el-table-column>
<el-table-column
v-for="(item, i) in tableList.tableColumn"
:key="i"
@@ -53,7 +64,7 @@
style="width: 80%"
@change="
(val) => {
- selProductClick(val)
+ selProductNameClick(val)
}
"
>
@@ -73,7 +84,8 @@
:prop="'tableData.' + scope.$index + '.' + item.prop"
:rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
>
- <el-date-picker v-model="scope.row[item.prop]" type="date" size="mini" style="width: 110px">
+ <span v-if="scope.row.isEdit">{{ scope.row[item.prop] }}</span>
+ <el-date-picker v-else v-model="scope.row[item.prop]" type="date" size="mini" style="width: 100%">
</el-date-picker>
</el-form-item>
<el-form-item
@@ -102,7 +114,9 @@
:prop="'tableData.' + scope.$index + '.' + item.prop"
: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=""
:min="0"
@@ -130,6 +144,92 @@
</el-select>
</div>
</el-form-item>
+ <!-- 浣嶇疆 -->
+ <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] }}</span>
+ <el-select
+ v-else
+ v-model="scope.row[item.prop]"
+ placeholder="璇烽�夋嫨"
+ size="mini"
+ style="width: 80%"
+ @change="
+ (val) => {
+ selLocationClick(val, item.prop)
+ }
+ "
+ >
+ <el-option
+ v-for="(item, index) in selLocationOptions"
+ :key="index"
+ :label="item.name"
+ :value="{ value: item.id, label: item.name }"
+ >
+ </el-option>
+ </el-select>
+ </div>
+ </el-form-item>
+ <!-- 浜у搧 -->
+ <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
+ v-else
+ v-model="scope.row[item.prop]"
+ placeholder="璇烽�夋嫨"
+ size="mini"
+ style="width: 80%"
+ @change="
+ (val) => {
+ selProductClick(val)
+ }
+ "
+ >
+ <el-option
+ v-for="item in productNameOptions"
+ :key="item.id"
+ :label="item.name"
+ :value="{
+ value: item.id,
+ label: item.name,
+ amount: item.amount,
+ unit: item.unit,
+ categoryId: item.categoryId,
+ categoryName: item.categoryName
+ }"
+ >
+ </el-option>
+ </el-select>
+ </div>
+ </el-form-item>
+ <!-- 鐢ㄦ埛 -->
+ <el-form-item v-else-if="item.user" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
+ <div class="custom-name">
+ <span>{{ "绠$悊鍛�" }}</span>
+ <!-- <el-select
+ v-else
+ v-model="scope.row[item.prop]"
+ placeholder="璇烽�夋嫨"
+ size="mini"
+ style="width: 80%"
+ @change="selCommonClick"
+ >
+ <el-option v-for="item in memberOptions" :key="item.id" :label="item.name" :value="item.name">
+ </el-option>
+ </el-select> -->
+ </div>
+ </el-form-item>
+ <!-- 鍏徃 -->
+ <el-form-item v-else-if="item.company" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
+ <div class="custom-name">
+ <span v-if="scope.row.isEdit">{{ scope.row[item.prop] }}</span>
+ <el-select v-else v-model="scope.row[item.prop]" placeholder="璇烽�夋嫨" size="mini" style="width: 80%">
+ <el-option v-for="item in companyOptions" :key="item.id" :label="item.name" :value="item">
+ </el-option>
+ </el-select>
+ </div>
+ </el-form-item>
<span v-else>{{ scope.row[item.prop] }}</span>
</template>
<span v-else>{{ scope.row[item.prop] }}</span>
@@ -138,7 +238,7 @@
<slot name="tableButton" />
</el-table>
</el-form>
- <div v-if="!detailEnter" style="margin: 10px">
+ <div v-if="!detailEnter && !isinventory && !islistingrules" style="margin: 10px">
<el-button size="small" type="primary" @click="add">娣诲姞鏄庣粏琛�</el-button>
<!-- <el-button size="small" type="primary" @click="empty">娓呯┖</el-button> -->
</div>
@@ -154,6 +254,9 @@
<script>
import { getProductList } from "@/api/product/product"
+import { getLocationList } from "@/api/warehouseManage/warehouse"
+import { getCompanyList } from "@/api/common/other"
+import { getRuleList } from "@/api/operate/inventoryAdjustment"
// import SelectCommonDialog from "@/views/other/commonDialog/SelectCommonDialog"
export default {
name: "CommmonFormTableView",
@@ -171,6 +274,8 @@
type: Object,
default: () => {
return {
+ selectBox: false,
+ selectIndex: false,
tableData: [], // 鎺ュ彛杩斿洖鏁版嵁
tableColumn: [
// table琛ㄥ崟
@@ -178,6 +283,14 @@
]
}
}
+ },
+ isinventory: {
+ type: Boolean,
+ default: false
+ },
+ islistingrules: {
+ type: Boolean,
+ default: false
}
},
data() {
@@ -192,14 +305,25 @@
},
productIndex: 0,
productNameOptions: [],
+ memberOptions: [{ id: 1, name: "绠$悊鍛�" }],
selOptions: [
{ id: 1, name: "浠�" },
{ id: 2, name: "鎵�" }
- ]
+ ],
+ selLocationOptions: [], // 浣嶇疆
+ companyOptions: [] // 鍏徃
}
},
created() {
- this.getProductList()
+ if (this.isinventory) {
+ this.getRuleList()
+ } else {
+ this.getProductList()
+ }
+ if (this.islistingrules) {
+ this.getLocationList()
+ // this.getCompanyList()
+ }
this.tableList = this.productTableList
},
computed: {},
@@ -223,8 +347,43 @@
}
})
},
- // 閫夋嫨浜у搧
- selProductClick(item) {
+ // 搴撳瓨璋冩暣鑾峰彇浣嶇疆鍜屼骇鍝�
+ async getRuleList() {
+ await getRuleList({
+ locationId: 0,
+ productId: ""
+ }).then((res) => {
+ console.log(res)
+ if (res.code === 200) {
+ const list = res.data ? res.data : []
+ this.selLocationOptions = list.locationList
+ this.productNameOptions = list.productList
+ }
+ })
+ },
+ // 浣嶇疆
+ async getLocationList() {
+ await getLocationList({
+ keyword: "",
+ page: 1,
+ pageSize: 100
+ }).then((res) => {
+ if (res.code === 200) {
+ const list = res.data ? res.data : []
+ this.selLocationOptions = list
+ }
+ })
+ },
+ // 鑾峰彇鍏徃鍒楄〃
+ async getCompanyList() {
+ await getCompanyList().then((res) => {
+ console.log(res)
+ if (res.data.code === 200) {
+ this.companyOptions = res.data.data
+ }
+ })
+ },
+ selProductNameClick(item) {
this.tableList.tableData.map((ite) => {
if (ite.productName.label === item.label) {
ite.productId = item.value
@@ -235,7 +394,54 @@
})
console.log(this.tableList.tableData)
},
- // 閫夋嫨鍗曚綅
+ // 閫夋嫨浜у搧
+ selProductClick(item) {
+ console.log(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
+ ite.amount = item.amount
+ ite.unit = item.unit
+ }
+ })
+ if (this.isinventory) {
+ getRuleList({
+ locationId: 0,
+ productId: item.value
+ }).then((res) => {
+ console.log(res)
+ if (res.code === 200) {
+ const list = res.data ? res.data : []
+ this.selLocationOptions = list.locationList
+ }
+ })
+ }
+ console.log(this.tableList.tableData)
+ this.$emit("selProductClick", item)
+ },
+ // 閫夋嫨浣嶇疆
+ selLocationClick(item, prop) {
+ console.log(item)
+ 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)
+ },
+ // 閫夋嫨鍗曚綅/鐢ㄦ埛
selCommonClick(item) {
console.log(item)
},
@@ -320,6 +526,14 @@
return true
}
this.tableList.tableData.splice(scope.$index, 1)
+ },
+ // 琛岀偣鍑�
+ tableRowClick(row) {
+ this.$emit("tableRowClick", row, row.index)
+ },
+ // 鍗曢�夎鐩稿叧
+ tableRowClassName({ row, rowIndex }) {
+ row.index = rowIndex
}
}
}
@@ -327,12 +541,17 @@
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="scss" scoped>
+.setHeight {
+ height: 100%;
+}
.page-view {
min-width: 100px;
+
.el-form-item {
margin-bottom: 0;
.custom-name {
display: flex;
+ justify-content: center;
.common-select-btn {
margin-left: 5px;
font-size: 18px;
--
Gitblit v1.8.0