From 2260b47026088827f177bec0931ded0fd73d97ba Mon Sep 17 00:00:00 2001 From: zuozhengqing <a13193816592@163.com> Date: 星期二, 26 三月 2024 10:48:43 +0800 Subject: [PATCH] 销售明细单发货弹窗样式优化 --- src/components/makepager/CommonFormTableView.vue | 235 +++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 159 insertions(+), 76 deletions(-) diff --git a/src/components/makepager/CommonFormTableView.vue b/src/components/makepager/CommonFormTableView.vue index d8ecea7..0fb598e 100644 --- a/src/components/makepager/CommonFormTableView.vue +++ b/src/components/makepager/CommonFormTableView.vue @@ -3,6 +3,7 @@ <el-form ref="form" :model="tableList" :show-message="false" label-position="right"> <el-table ref="fromTable" + :border="isBorder" :data="tableList.tableData" :show-summary="showSummary.show" :summary-method="getSummaries" @@ -44,7 +45,7 @@ :disabled="!isOperate" @change=" (val) => { - commonInputChange(val, item.prop, scope.row,scope) + commonInputChange(val, item.prop, scope.row, scope) } " ></el-input> @@ -67,15 +68,23 @@ } " ></el-autocomplete> - <div class="common-select-btn" v-if="isOperate" @click="selClientClick(scope.row, item.prop)"> - <i class="el-icon-circle-plus-outline" title="閫夋嫨"></i> + + <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" + v-if="scope.row[item.prop] && scope.row[item.prop].length > 0 && isOperate" class="common-select-btn" - @click="clearupClient(scope.row)" + @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> </el-form-item> @@ -86,7 +95,13 @@ :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 + :disabled="!isOperate" + v-model="scope.row[item.prop]" + type="date" + size="mini" + style="width: 110px" + > </el-date-picker> </el-form-item> <el-form-item @@ -105,7 +120,7 @@ style="width: 100%; margin-right: 5px" @change=" (val) => { - commonInputChange(val, item.prop, scope.row,scope) + commonInputChange(val, item.prop, scope.row, scope) } " ></el-input-number> @@ -127,23 +142,39 @@ style="width: 100%; margin-right: 5px" @change=" (val) => { - commonInputChange(val, item.prop, scope.row,scope) + commonInputChange(val, item.prop, scope.row, scope) } " ></el-input-number> </el-form-item> <span v-else> - <template v-if="pageName=='quotation'&&item.prop=='profit'"> - {{ (scope.row.price&&scope.row.cost)?Number(scope.row.price)-Number(scope.row.cost):'' }} - </template> - <template v-if="pageName=='quotation'&&item.prop=='margin'"> - {{ (scope.row.price&&scope.row.cost)?((Number(scope.row.price)-Number(scope.row.cost))*100/Number(scope.row.cost)).toFixed(2):'' }} - </template> - <template v-else> + <template> {{ scope.row[item.prop] }} </template> </span> </template> + <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 && selectBox" label=" " @@ -160,7 +191,7 @@ style="width: 100%; margin-right: 5px" @change=" (val) => { - commonInputChange(val, item.prop, scope.row,scope) + commonInputChange(val, item.prop, scope.row, scope) } " ></el-input-number> @@ -168,14 +199,9 @@ <span v-else style="text-align: right">{{ scope.row[item.prop] }}</span> </template> </el-table-column> - <el-table-column label="鎿嶄綔" width="40" align="center"> + <el-table-column label="鎿嶄綔" width="40" v-if="!detailEnter" align="center"> <template slot-scope="scope"> - <el-button - type="text" - size="small" - :disabled="!isOperate" - @click="deleteClick(scope)" - >鍒犻櫎</el-button> + <el-button type="text" size="small" :disabled="!isOperate" @click="deleteClick(scope)">鍒犻櫎</el-button> </template> </el-table-column> <slot name="tableButton" /> @@ -185,7 +211,7 @@ <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 size="small" type="primary" @click="recalculate" :disabled="isRecalculate && !isOperate ? false : true" >閲嶇畻</el-button > </div> @@ -205,8 +231,10 @@ <SelectCommonDialog v-if="editSelCommonConfig.editVisible" :edit-common-config="editSelCommonConfig" + :selectBoxList="tableList.tableData" :quotationNumber="quotationNumber" @selClient="selClient" + @getSelectArray="getSelectArray" /> </div> </template> @@ -227,19 +255,28 @@ default: false }, // 閭d釜椤甸潰 鐢ㄦ潵鍒ゆ柇璁$畻鏂瑰紡 - pageName:{ - type:String, - default:'' + pageName: { + type: String, + default: "" + }, + // 鍒楄〃鏂板鏄惁澶氶�� + addTypeIdMultiple: { + type: Boolean, + default: false }, // 鏍规嵁鎶ヤ环鍗曟煡璇骇鍝� - quotationNumber:{ - type:[String,Number], - default:'' + quotationNumber: { + type: [String, Number], + default: "" }, - // 鏄惁鍙互鎿嶄綔 娣诲姞绛� - isOperate:{ - type:Boolean, - default:true, + // 鏄惁鍙互鎿嶄綔 娣诲姞绛� + isOperate: { + type: Boolean, + default: true + }, + isBorder:{ + type: Boolean, + default: false }, productTableList: { type: Object, @@ -274,6 +311,7 @@ tableList: [], editSelCommonConfig: { editVisible: false, + isSelectBox: false, title: "", infomation: {} }, @@ -285,15 +323,26 @@ if (!this.selectBox) { this.getProductList() } - this.tableList = this.productTableList - if (this.tableList.tableData.length === 1 && this.tableList.tableData[0].name === "") { - this.isRecalculate = false - } else { - this.isRecalculate = true + this.getTableInfo() + }, + watch:{ + "productTableList": { + handler() { + this.getTableInfo() + }, + immediate: true } }, computed: {}, methods: { + 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() { await getProductList({ @@ -343,13 +392,13 @@ sums[index] = "灏忚:" return } - const title = ["#", "浜у搧鍚嶇О",'浜у搧缂栧彿','鍗曚綅','閿�鍞崟浠�','鎴愭湰鍗曚环'] + const title = ["#", "浜у搧鍚嶇О", "浜у搧缂栧彿", "鍗曚綅", "閿�鍞崟浠�", "鎴愭湰鍗曚环"] // 鍘婚櫎鏌愪簺涓嶉渶瑕佽绠楃殑鏁版嵁 if (title.includes(column.label)) { sums[index] = "" return } - if(this.pageName=='quotation'&&column.label=='姣涘埄'){ + if (this.pageName == "quotation" && column.label == "姣涘埄") { sums[index] = "" return } @@ -405,9 +454,16 @@ }, // 鏂板 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,scope) { + commonInputChange(val, prop, row, scope) { if (prop === "amount") { this.tableList.tableData.map((ite) => { if (ite.name === row.name) { @@ -415,16 +471,28 @@ } }) } - 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浣嶅皬鏁帮紒") - } + 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() } - this.$emit("inputContent", val, prop, row) + 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() { @@ -432,11 +500,11 @@ this.$emit("emptyProductClick") }, // 鍒犻櫎 - deleteClick(scope){ - this.tableList.tableData.splice(scope.$index,1) - this.$forceUpdate(); - this.$message.success('鍒犻櫎闄ゆ垚鍔燂紒') - this.$emit("deleteClick",scope) + deleteClick(scope) { + this.tableList.tableData.splice(scope.$index, 1) + this.$forceUpdate() + this.$message.success("鍒犻櫎鎴愬姛锛�") + this.$emit("deleteClick", scope) }, // 閲嶇畻 recalculate() { @@ -478,31 +546,47 @@ } }) }, - selClientClick(row, prop) { - console.log(row, prop) - this.productIndex = row.productId - 1 + // 鏂板 + 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) - 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.amount = item.amount || 1 - ite.number = item.number - ite.price = item.price - ite.total = item.amount ? item.amount * item.price : 1 * item.price - ite.unit = item.unit - } - }) + 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.amount = item.amount || 1 + ite.number = item.number + ite.price = item.price + ite.total = item.amount ? item.amount * item.price : 1 * item.price + ite.unit = item.unit + } + }) + } else { + this.$message.error("涓嶈兘閫夋嫨閲嶅鐨勪骇鍝侊紝 璇烽噸鏂伴�夋嫨") + } + }, + getSelectArray(val) { + this.$emit("getSelectArray", val, this.productIndex) }, // 娓呴櫎宸查�夋嫨鐢ㄦ埛 - clearupClient(row) { - this.productIndex = row.productId - 1 + clearupClient(scope) { + this.productIndex = scope.$index this.tableList.tableData.map((ite, index) => { if (index === this.productIndex) { ite.name = "" @@ -533,7 +617,6 @@ <!-- Add "scoped" attribute to limit CSS to this component only --> <style lang="scss" scoped> .page-view { - .el-form-item { margin-bottom: 0; .custom-name { -- Gitblit v1.8.0