From 5e9b4920000a4d02eef3b207218e3ce8d68935be Mon Sep 17 00:00:00 2001
From: charles <981744753@qq.com>
Date: 星期四, 11 七月 2024 17:47:05 +0800
Subject: [PATCH] feat:纤度登记表重构
---
src/components/makepager/CommonFormTableView.vue | 725 ++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 504 insertions(+), 221 deletions(-)
diff --git a/src/components/makepager/CommonFormTableView.vue b/src/components/makepager/CommonFormTableView.vue
index e3a49c1..87e1915 100644
--- a/src/components/makepager/CommonFormTableView.vue
+++ b/src/components/makepager/CommonFormTableView.vue
@@ -2,28 +2,33 @@
<div class="page-view">
<el-form ref="form" :model="tableList" :show-message="false" label-position="right">
<el-table
+ ref="fromTable"
+ :border="isBorder"
:data="tableList.tableData"
- style="width: 100%"
:show-summary="showSummary.show"
:summary-method="getSummaries"
:span-method="arraySpanMethod"
+ style="width: 100%"
+ :header-cell-style="{ background: '#f1f3f8', color: tableList.headerColor?tableList.headerColor:'#000009', 'font-size': '14px', 'font-family': 'PingFangSC' }"
+ @selection-change="handleSelectionChange"
+ :row-key="(row) => row.productId"
>
+ <el-table-column v-if="selectBox" type="selection" :reserve-selection="true" width="40" align="center">
+ </el-table-column>
+ <el-table-column v-if="tableList.isReturn" type="index" label="#" width="50" align="center"></el-table-column>
+
<el-table-column
- type="index"
- v-if="tableList.tableColumn && tableList.tableColumn.length > 0"
- label="缂栧彿"
- width="50"
align="center"
- ></el-table-column>
- <el-table-column
v-for="(item, i) in tableList.tableColumn"
:key="i"
:prop="item.prop"
:label="item.label"
:width="item.width"
:min-width="item.min"
- align="center"
- >
+ show-overflow-tooltip
+ :sortable="item.sortable"
+ >
+ <!-- 鎵�鏈夌殑琛ㄦ牸淇敼涓哄彲閰嶇疆琛ㄥご鐨勪箣鍚� v-if淇敼涓簐-if="item.isShowColumn" -->
<!-- 琛ㄥご鏍峰紡 -->
<template slot="header">
<span v-if="item.isRequird" style="color: #f56c6c">*</span>
@@ -31,59 +36,189 @@
</template>
<!-- column鏍峰紡 -->
<template slot-scope="scope">
- <!-- <template v-if="!detailEnter"> -->
- <el-form-item
- v-if="item.input"
- label=" "
- :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>
- </el-form-item>
- <el-form-item v-else-if="item.productName" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
- <div class="custom-name">
- <el-autocomplete
- v-model="scope.row[item.prop]"
- :fetch-suggestions="querySearchAsync"
- value-key="name"
- style="width: calc(100% - 70px)"
+ <template v-if="!detailEnter">
+ <el-form-item
+ v-if="item.input"
+ label=" "
+ :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"
- @select="
+ :disabled="!isOperate"
+ @change="
(val) => {
- handleSelectClient(val, item.prop, scope.row)
+ commonInputChange(val, item.prop, scope.row, scope)
}
"
- ></el-autocomplete>
- <div class="common-select-btn" @click="selClientClick(scope.row, item.prop, scope)">
- <i class="el-icon-circle-plus-outline" title="閫夋嫨"></i>
+ ></el-input>
+ </el-form-item>
+ <el-form-item
+ v-else-if="item.productName"
+ label=" "
+ :prop="'tableData.' + scope.$index + '.' + item.prop"
+ >
+ <div class="custom-name">
+ <el-autocomplete
+ v-model="scope.row[item.prop]"
+ :fetch-suggestions="querySearchAsync"
+ value-key="name"
+ :disabled="!isOperate"
+ size="mini"
+ @select="
+ (val) => {
+ handleSelectClient(val, item.prop, scope.row)
+ }
+ "
+ ></el-autocomplete>
+
+ <div
+ v-if="scope.row[item.prop] && scope.row[item.prop].length > 0 && isOperate"
+ class="common-select-btn"
+ @click="handleEditClient(scope, item.prop)"
+ >
+ <i class="el-icon-edit" title="缂栬緫"></i>
+ </div>
+ <div
+ v-if="scope.row[item.prop] && scope.row[item.prop].length > 0 && isOperate"
+ class="common-select-btn"
+ @click="clearupClient(scope)"
+ >
+ <i class="el-icon-remove-outline" title="娓呴櫎"></i>
+ </div>
+ <div class="common-select-btn" v-else @click="selClientClick(scope, item.prop)">
+ <i class="el-icon-circle-plus-outline" title="閫夋嫨"></i>
+ </div>
</div>
- <div class="common-select-btn" @click="clearupClient(scope.row, scope)">
- <i class="el-icon-remove-outline" title="娓呴櫎"></i>
- </div>
- <div class="common-select-btn" v-if="scope.$index != 0" @click="deleteClient(scope.row, scope)">
- <i class="el-icon-delete" title="鍒犻櫎"></i>
- </div>
- </div>
- </el-form-item>
+ </el-form-item>
+ <el-form-item
+ v-else-if="item.date"
+ label=" "
+ :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"></el-input> -->
+ <el-date-picker
+ :disabled="!isOperate"
+ v-model="scope.row[item.prop]"
+ type="date"
+ size="mini"
+ style="width: 110px"
+ >
+ </el-date-picker>
+ </el-form-item>
+ <el-form-item
+ v-else-if="item.inputNumber"
+ label=" "
+ :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"
+ :disabled="!isOperate"
+ size="mini"
+ style="width: 100%; margin-right: 5px"
+ @change="
+ (val) => {
+ commonInputChange(val, item.prop, scope.row, scope)
+ }
+ "
+ ></el-input-number>
+ </el-form-item>
+ <el-form-item
+ v-else-if="item.inputFloat"
+ label=" "
+ :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"
+ :precision="2"
+ :disabled="!isOperate"
+ :controls="false"
+ size="mini"
+ style="width: 100%; margin-right: 5px"
+ @change="
+ (val) => {
+ commonInputChange(val, item.prop, scope.row, scope)
+ }
+ "
+ ></el-input-number>
+
+ </el-form-item>
+ <el-form-item
+ v-else-if="item.inputInteger"
+ label=" "
+ :prop="'tableData.' + scope.$index + '.' + item.prop"
+ :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
+ >
+ <el-input
+ v-model.number="scope.row[item.prop]"
+ maxlength="50"
+ size="mini"
+ :disabled="!isOperate"
+ :controls="false"
+ style="width: 100%; margin-right: 5px"
+ @change="
+ (val) => {
+ commonInputChange(val, item.prop, scope.row, scope)
+ }
+ "
+ ></el-input>
+ </el-form-item>
+ <span v-else>
+ <template>
+ {{ scope.row[item.prop] }}
+ </template>
+ </span>
+ </template>
<el-form-item
- v-else-if="item.date"
- label=" "
- :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"></el-input> -->
- <el-date-picker v-model="scope.row[item.prop]" type="date" size="mini" style="width: 110px">
- </el-date-picker>
- </el-form-item>
+ v-else-if="item.input"
+ label=" "
+ :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"
+ :disabled="!isOperate"
+ @change="
+ (val) => {
+ commonInputChange(val, item.prop, scope.row, scope)
+ }
+ "
+ ></el-input>
+ </el-form-item>
+ <el-form-item
+ v-else-if="item.inputFloat"
+ label=" "
+ :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"
+ :precision="2"
+ :disabled="!isOperate"
+ :controls="false"
+ size="mini"
+ style="width: 100%; margin-right: 5px"
+ @change="
+ (val) => {
+ commonInputChange(val, item.prop, scope.row, scope)
+ }
+ "
+ ></el-input-number>
+ </el-form-item>
<el-form-item
v-else-if="item.inputNumber"
label=" "
@@ -95,96 +230,133 @@
placeholder=""
:min="0"
:controls="false"
+ :disabled="!isOperate"
size="mini"
style="width: 100%; margin-right: 5px"
@change="
(val) => {
- commonInputChange(val, item.prop, scope.row)
+ commonInputChange(val, item.prop, scope.row, scope)
}
"
></el-input-number>
</el-form-item>
<el-form-item
- v-else-if="item.inputFloat"
- label=" "
- :prop="'tableData.' + scope.$index + '.' + item.prop"
- :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
- >
- <template v-if="item.multiply">
- <el-input-number
- :value="scope.row[showSummary.multiply[0]] * scope.row[showSummary.multiply[1]]"
- placeholder=""
- :disabled="item.disabled"
- :min="0"
- :precision="2"
- :controls="false"
+ v-else-if="item.inputInteger"
+ label=" "
+ :prop="'tableData.' + scope.$index + '.' + item.prop"
+ :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
+ >
+ <el-input
+ v-model.number="scope.row[item.prop]"
+ maxlength="50"
size="mini"
- style="width: 100%; margin-right: 5px"
- @input="
- (val) => {
- commonInputChange(val, item.prop, scope.row)
- }
- "
- ></el-input-number>
- </template>
- <template v-else>
- <el-input-number
- v-model="scope.row[item.prop]"
- placeholder=""
- :min="0"
- :precision="2"
+ :disabled="!isOperate"
:controls="false"
- size="mini"
style="width: 100%; margin-right: 5px"
@change="
(val) => {
- commonInputChange(val, item.prop, scope.row)
+ commonInputChange(val, item.prop, scope.row, scope)
}
"
- ></el-input-number>
- </template>
- </el-form-item>
- <span v-else>{{ scope.row[item.prop] }}</span>
- <!-- </template> -->
- <!-- <span v-else>{{ scope.row[item.prop] }}</span> -->
+ ></el-input>
+ </el-form-item>
+ <span v-else style="text-align: right">{{ scope.row[item.prop] }}</span>
</template>
</el-table-column>
+ <el-table-column label="鎿嶄綔" width="70" v-if="!detailEnter" align="center" fixed='right'>
+ <template slot-scope="scope">
+
+ <el-button type="text" size="small" :disabled="!isOperate" @click="deleteClick(scope)">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ <slot name="tableButton" />
</el-table>
+ <div class="styleBtn" v-if="colOpenShow">
+ <i @click="checkCol()" class="label">...</i>
+ <el-checkbox-group v-model="showcol" v-show="iscolopen" class="checkbox-group" @change="selectCheckBoxList">
+ <el-checkbox v-for="item in tableList.allcol" :label="item" :key="item">{{ item }} </el-checkbox>
+ </el-checkbox-group>
+ </div>
</el-form>
- <div v-if="!detailEnter" style="margin: 10px">
- <el-button size="small" type="primary" @click="add">鏂板</el-button>
- <el-button size="small" type="primary" @click="empty">娓呯┖</el-button>
+ <el-button style="margin: 10px" size="small" type="primary" @click="add">鏂板</el-button>
+ <div v-if="!detailEnter" style="margin: 10px" >
+ <el-button size="small" type="primary" :disabled="!isOperate" @click="add">鏂板</el-button>
+ <!-- <el-button size="small" type="primary" disabled>瀵煎叆鏄庣粏</el-button> -->
+ <el-button size="small" type="primary" :disabled="!isOperate" @click="empty">娓呯┖</el-button>
+ <el-button size="small" type="primary" @click="recalculate" :disabled="isRecalculate && !isOperate ? false : true"
+ >閲嶇畻</el-button
+ >
</div>
- <!-- 浜у搧鍚嶇О -->
- <SelectCommonDialog
+ <div v-if="false && (showSummary.total || showSummary.refundable)" style="height: 42px; line-height: 42px">
+ <el-row :gutter="10">
+ <el-col v-if="showSummary.total" :span="3" :offset="21">
+ <span style="font-weight: bold">鍚堣</span>
+ <span style="margin-left: 10px">{{ total }}</span>
+ </el-col>
+ <el-col v-if="showSummary.refundable" :span="3" :offset="21">
+ <span style="font-weight: bold">搴旈��娆�</span>
+ <span style="margin-left: 10px">0.00</span>
+ </el-col>
+ </el-row>
+ </div>
+ <!-- 鍚堝悓璁㈠崟 -->
+ <!-- <SelectCommonDialog
v-if="editSelCommonConfig.editVisible"
:edit-common-config="editSelCommonConfig"
- :sign="sign"
+ :selectBoxList="tableList.tableData"
@selClient="selClient"
- />
+ @getSelectArray="getSelectArray"
+ /> -->
</div>
</template>
<script>
-import { getProductListFromGrpc, getProductList } from "@/api/productManage/product"
-import SelectCommonDialog from "@/views/other/commonDialog/SelectCommonDialog"
+// import { getProductList } from "@/api/common/other"
+// import SelectCommonDialog from "@/views/other/commonDialog/SelectCommonDialog"
export default {
name: "CommmonFormTableView",
- components: { SelectCommonDialog },
+ // components: { SelectCommonDialog },
props: {
detailEnter: {
type: Boolean,
default: false
},
- sign: {
+ // 鏄惁鍙互閰嶇疆鍒楄〃 琛ㄥご
+ colOpenShow: {
+ type: Boolean,
+ default: false,
+ },
+ selectBox: {
+ type: Boolean,
+ default: false
+ },
+ // 閭d釜椤甸潰 鐢ㄦ潵鍒ゆ柇璁$畻鏂瑰紡
+ pageName: {
type: String,
default: ""
+ },
+ // 鍒楄〃鏂板鏄惁澶氶��
+ addTypeIdMultiple: {
+ type: Boolean,
+ default: false
+ },
+ // 鏄惁鍙互鎿嶄綔 娣诲姞绛�
+ isOperate: {
+ type: Boolean,
+ default: true
+ },
+ isBorder:{
+ type: Boolean,
+ default: false
},
productTableList: {
type: Object,
default: () => {
return {
tableData: [], // 鎺ュ彛杩斿洖鏁版嵁
+ isReturn: false,
+ allcol: [],
+ showcol: [],
tableColumn: [
// table琛ㄥ崟
{ label: "", prop: "", min: 200, tooltip: true }
@@ -200,15 +372,9 @@
total: false,
refundable: false,
sumProp: [],
- multiply: [],
- titleProp: ["#", "浜у搧鍚嶇О"],
mergeNumber: 1
}
}
- },
- recalculateShow: {
- type: [Boolean],
- defalut: true
}
},
data() {
@@ -218,40 +384,88 @@
tableList: [],
editSelCommonConfig: {
editVisible: false,
+ isSelectBox: false,
title: "",
infomation: {}
},
- productIndex: 0
+ productIndex: 0,
+ isRecalculate: true,
+ iscolopen: false,
+ showcol: [],
+ mergeNumber:1
}
},
created() {
- this.getProductList()
- this.tableList = this.productTableList
+ if (!this.selectBox) {
+ this.getProductList()
+ }
+ this.getTableInfo()
+ },
+ watch:{
+ "productTableList": {
+ handler() {
+ this.showcol = this.productTableList.showcol
+ this.getTableInfo()
+ },
+ immediate: true
+ },
+ "productTableList.showcol": {
+ handler(newVal) {
+ this.showcol = newVal
+ this.getMergeNumber()
+ },
+ immediate: true
+ },
},
computed: {},
- watch: {
- productTableList() {
- this.tableList = this.productTableList
- }
- },
methods: {
+ getMergeNumber(){
+ let pattern=new RegExp("[0-9]+");
+ if(pattern.test(this.showSummary.mergeNumber)){
+ this.mergeNumber=this.showSummary.mergeNumber
+ }else{
+ for(let i in this.showcol){
+ if(this.showcol[i]==this.showSummary.mergeNumber){
+ this.mergeNumber=Number(i)+1;
+ }
+ }
+ }
+ },
+ checkCol() {
+ this.iscolopen = !this.iscolopen
+ },
+ selectCheckBoxList(val) {
+ this.getMergeNumber()
+ this.$emit("selTableCol", val)
+ },
+ getTableInfo(){
+ this.tableList = this.productTableList
+ if (this.tableList.tableData.length === 1 && this.tableList.tableData[0].name === "") {
+ this.isRecalculate = false
+ } else {
+ this.isRecalculate = true
+ }
+ },
// 浜у搧鍚嶇О
async getProductList() {
- let fn = this.sign == "purchase" ? getProductList : getProductListFromGrpc
- await fn({
- page: 1,
- pageSize: 100
- }).then((res) => {
- if (res.data.code === 200) {
- if (res.data.data.list && res.data.data.list.length > 0) {
- this.productList = res.data.data.list
- }
- }
- })
+ // await getProductList({
+ // productName: "",
+ // productNumber: "",
+ // page: 1,
+ // pageSize: 100
+ // }).then((res) => {
+ // console.log(res, "浜у搧鍚嶇О")
+ // if (res.code === 200) {
+ // if (res.data.data && res.data.data.length > 0) {
+ // this.productList = res.data.data
+ // }
+ // }
+ // })
},
handleReserve(row) {
return row._id ? row._id : row.id
},
+ // 澶氶��
handleSelectionChange(val) {
this.$emit("getSelectArray", val)
},
@@ -262,11 +476,11 @@
if (this.$refs.table) {
var current = this.$refs.table.querySelector(".el-table__footer-wrapper").querySelector(".el-table__footer")
var cell = current.rows[0].cells
- for (let i = 0; i < this.showSummary.mergeNumber; i++) {
+ for (let i = 0; i < this.mergeNumber; i++) {
cell[i].style.display = "none"
}
- cell[this.showSummary.mergeNumber].classList.remove("is-left")
- cell[this.showSummary.mergeNumber].colSpan = this.showSummary.mergeNumber.toString()
+ cell[this.mergeNumber].classList.remove("is-left")
+ cell[this.mergeNumber].colSpan = this.mergeNumber.toString()
}
})
}
@@ -277,13 +491,17 @@
const sums = []
columns.forEach((column, index) => {
// // 鏇存敼琛屽悕绉�
- if (index === this.showSummary.mergeNumber) {
- sums[index] = "灏忚:"
+ if (index === this.mergeNumber) {
+ sums[index] = this.showSummary.totalLabel?this.showSummary.totalLabel:"灏忚:"
return
}
- const title = this.showSummary.titleProp
+ const title = ["#", "浜у搧鍚嶇О", "浜у搧缂栧彿", "鍗曚綅", "閿�鍞崟浠�", "鎴愭湰鍗曚环"]
// 鍘婚櫎鏌愪簺涓嶉渶瑕佽绠楃殑鏁版嵁
if (title.includes(column.label)) {
+ sums[index] = ""
+ return
+ }
+ if (this.pageName == "quotation" && column.label == "姣涘埄") {
sums[index] = ""
return
}
@@ -305,12 +523,10 @@
}
if (column.property === "total") {
this.total = sums[index]
- this.$emit("getSummaries", this.total)
}
})
return sums
},
-
// 鏁板瓧鎹㈣涓洪噾棰濇樉绀烘牸寮�
number_format(number, decimals, dec_point, thousands_sep) {
decimals = 2 //杩欓噷榛樿璁剧疆淇濈暀涓や綅灏忔暟锛屼篃鍙互娉ㄩ噴杩欏彞閲囩敤浼犲叆鐨勫弬鏁�
@@ -341,16 +557,72 @@
},
// 鏂板
add() {
- this.$emit("addProductClick")
+ if (this.addTypeIdMultiple) {
+ this.productIndex = this.tableList.tableData.length
+ this.editSelCommonConfig.title = "浜у搧鍚嶇О"
+ this.editSelCommonConfig.isSelectBox = true
+ this.editSelCommonConfig.editVisible = true
+ } else {
+ this.$emit("addProductClick")
+ }
},
- commonInputChange(val, prop, row) {
- console.log(val, prop)
- console.log(row)
- this.$emit("inputContent", val, prop, row)
+ commonInputChange(val, prop, row, scope) {
+ if (prop === "amount") {
+ this.tableList.tableData.map((ite) => {
+ if (ite.name === row.name) {
+ ite.total = row.amount * row.price
+ }
+ })
+ }
+ if (this.pageName == "quotation" && prop == "cost" && scope.row.cost) {
+ let value = scope.row.cost
+ let reg2 = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/
+ if (!reg2.test(value) || value == 0) {
+ this.$message.error("鎴愭湰鍗曚环闇�瑕佸~鍐欏ぇ浜�0鐨�2浣嶅皬鏁帮紒")
+ return true
+ }
+ this.$forceUpdate()
+ }
+ if (this.pageName == "quotation") {
+ if (prop == "price" || prop == "cost") {
+ if (scope.row.price && scope.row.cost) {
+ let profit = Number(scope.row.price) - Number(scope.row.cost)
+ scope.row.profit = profit + ""
+ let margin = (((Number(scope.row.price) - Number(scope.row.cost)) * 100) / Number(scope.row.cost)).toFixed(
+ 2
+ )
+ scope.row.margin = margin + ""
+ }
+ }
+ }
+ this.$emit("inputContent", val, prop, row, scope)
},
// 娓呯┖
empty() {
+ this.isRecalculate = false
this.$emit("emptyProductClick")
+ },
+ // 鍒犻櫎
+ deleteClick(scope) {
+ this.tableList.tableData.splice(scope.$index, 1)
+ this.$forceUpdate()
+ this.$message.success("鍒犻櫎鎴愬姛锛�")
+ this.$emit("deleteClick", scope)
+ },
+ // 閲嶇畻
+ recalculate() {
+ this.$confirm("纭畾瑕侀噸绠楁槑缁嗘墍鏈夎?", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning"
+ })
+ .then(() => {
+ this.$emit("recalculateProductClick")
+ this.tableList.tableData.map((ite) => {
+ ite.total = ite.amount ? ite.amount * ite.price : 1 * ite.price
+ })
+ })
+ .catch(() => {})
},
// 閫夋嫨浜у搧鍚嶇О鐩稿叧鏂规硶
querySearchAsync(queryString, cb) {
@@ -365,116 +637,82 @@
},
handleSelectClient(item, prop, row) {
// this.clientId = item.id
+ this.isRecalculate = true
console.log(item, prop, row)
this.tableList.tableData.map((ite) => {
if (ite.name === item.name) {
- ite.ID = row.ID
ite.amount = item.amount || 1
ite.number = item.number
- ite.purchasePrice = item.purchasePrice
+ ite.price = item.price
+ ite.total = item.amount ? item.amount * item.price : 1 * item.price
ite.unit = item.unit
- ite.deliveryTime = item.deliveryTime
- ite.shippingDuration = item.shippingDuration
- ite.modelNumber = item.modelNumber
}
})
- if (this.detailEnter) {
- this.setEditName(item, row.ID)
- }
},
- setEditName(item, ID) {
- let selRow = {
- ID: ID,
- deliveryTime: item.deliveryTime,
- maximumStock: item.maximumStock,
- minimumStock: item.minimumStock,
- modelNumber: item.modelNumber,
- name: item.name,
- number: item.number,
- productType: item.productType,
- purchasePrice: item.purchasePrice,
- remark: item.remark,
- shippingDuration: item.shippingDuration,
- specifications: item.specifications,
- supplierId: item.supplierId,
- unit: item.unit
- }
- this.$emit("selCommonName", selRow)
- },
- selClientClick(row, prop, scope) {
- console.log(row, prop)
+ // 鏂板
+ selClientClick(scope, prop) {
+ console.log(scope, prop)
this.productIndex = scope.$index
this.editSelCommonConfig.title = "浜у搧鍚嶇О"
+ this.editSelCommonConfig.isSelectBox = true
+ this.editSelCommonConfig.editVisible = true
+ },
+ // 缂栬緫
+ handleEditClient(scope, prop) {
+ console.log(scope, prop)
+ this.productIndex = scope.$index
+ this.editSelCommonConfig.title = "浜у搧鍚嶇О"
+ this.editSelCommonConfig.isSelectBox = false
this.editSelCommonConfig.editVisible = true
},
selClient(item) {
- console.log(item)
- console.log(this.tableList.tableData)
- if (this.detailEnter) {
- this.tableList.tableData.map((ite) => {
- ite.ID
- ite.name = item.name
- ite.amount = item.amount || 1
- ite.number = item.number
- ite.purchasePrice = item.purchasePrice
- ite.unit = item.unit
- ite.deliveryTime = item.deliveryTime
- ite.shippingDuration = item.shippingDuration
- })
- this.setEditName(item, this.tableList.tableData[0].ID)
- } else {
+ let list = this.tableList.tableData.map((item) => item.number)
+ if (list.findIndex((v) => v == item.number) == -1) {
+ this.isRecalculate = true
+ // this.editConfig.infomation.client_name = row.name
this.tableList.tableData.map((ite, index) => {
if (index === this.productIndex) {
ite.name = item.name
- ite.productId = item.ID
ite.amount = item.amount || 1
ite.number = item.number
- ite.purchasePrice = item.purchasePrice
+ ite.price = item.price
+ ite.total = item.amount ? item.amount * item.price : 1 * item.price
ite.unit = item.unit
- ite.deliveryTime = item.deliveryTime
- ite.shippingDuration = item.shippingDuration
- this.$set(this.tableList.tableData, index, ite)
- this.$forceUpdate()
}
})
-
- console.log(this.tableList.tableData, "=====chanp")
+ } else {
+ this.$message.error("涓嶈兘閫夋嫨閲嶅鐨勪骇鍝侊紝 璇烽噸鏂伴�夋嫨")
}
},
+ getSelectArray(val) {
+ this.$emit("getSelectArray", val, this.productIndex)
+ },
// 娓呴櫎宸查�夋嫨鐢ㄦ埛
- clearupClient(row, scope) {
+ clearupClient(scope) {
this.productIndex = scope.$index
this.tableList.tableData.map((ite, index) => {
- console.log(scope.$index)
- if (scope.$index && scope.$index >= 0) {
- if (index === this.productIndex) {
- ite.name = ""
- ite.amount = 1
- ite.number = ""
- ite.purchasePrice = 0
- ite.unit = ""
- ite.deliveryTime = 0
- ite.shippingDuration = 0
- }
- } else {
+ if (index === this.productIndex) {
ite.name = ""
ite.amount = 1
ite.number = ""
- ite.purchasePrice = 0
+ ite.price = 0
+ ite.total = 0
ite.unit = ""
- ite.deliveryTime = 0
- ite.shippingDuration = 0
}
})
this.$emit("clearupProduct", this.tableList.tableData)
- },
- deleteClient(row, scope) {
- if (this.tableList.tableData.length == 1) {
- this.$message.error("鑷冲皯淇濈暀涓�鏉★紝涓嶈兘鍒櫎浜嗭紒")
- return true
- }
- this.tableList.tableData.splice(scope.$index, 1)
}
+ // 澶氶�夎缃凡閫変腑
+ // toggleSelection(rows) {
+ // console.log("88888888888888888888888888888888888888888")
+ // console.log(rows)
+ // if (rows) {
+ // rows.forEach((row) => {
+ // this.$refs.fromTable.toggleRowSelection(row, true)
+ // console.log(row)
+ // })
+ // }
+ // }
}
}
</script>
@@ -482,7 +720,10 @@
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="scss" scoped>
.page-view {
- min-width: 100px;
+ position: relative;
+ .el-form{
+ height:calc(100% - 120px);
+ }
.el-form-item {
margin-bottom: 0;
.custom-name {
@@ -507,12 +748,54 @@
.el-input--suffix .el-input__inner {
padding-right: 0px;
}
- .el-table .cell,
- .el-table th.el-table__cell > .cell {
- padding: 0 5px;
+ .el-table th.el-table__cell{
+ padding: 6px 0 !important;
+ height: 35px;
+ }
+ .el-table td.el-table__cell{
+ padding: 6px 0 !important;
+ }
+ .el-table__fixed-footer-wrapper tbody td.el-table__cell{
+ background:#fff;
}
.el-input__inner {
- text-align: left;
+ // text-align: left;
+ text-align: center !important;
+ }
+ .styleBtn {
+ position: absolute;
+ width: 30px;
+ height: 48px;
+ // line-height: 26px;
+ // background: #06c062;
+ top: 0;
+ right: -6px;
+ z-index: 11;
+ .label {
+ position: absolute;
+ top: 11px;
+ font-size: 20px;
+ // line-height: 5px;
+ cursor: pointer;
+ color: #000;
+ transform: rotate(-90deg);
+ }
+ .checkbox-group {
+ width: 160px;
+ height: 180px;
+ overflow: auto;
+ display: flex;
+ flex-direction: column;
+ line-height: 25px;
+ background: #ffffff;
+ border-radius: 16px;
+ padding: 12px;
+ position: absolute;
+ right: 0;
+ top: 30px;
+ z-index: 99;
+ box-shadow: 0 0 2px 2px #f8f8f8;
+ }
}
}
</style>
--
Gitblit v1.8.0