From 03cfba0f636b42417070fc8caef44bcdd792a085 Mon Sep 17 00:00:00 2001 From: haoxuan <haoxuan> Date: 星期二, 07 五月 2024 17:34:37 +0800 Subject: [PATCH] 概述 出库模块 编辑的时候循环处理对应产品调用接口获取在库数量的逻辑处理 --- src/components/makepager/TableCommonView.vue | 169 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 151 insertions(+), 18 deletions(-) diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue index 10a0bca..9169ad1 100644 --- a/src/components/makepager/TableCommonView.vue +++ b/src/components/makepager/TableCommonView.vue @@ -19,8 +19,10 @@ :default-expand-all="tableList.isDefaultExpandAll" :tree-props="{ children: 'child', hasChildren: 'hasChildren' }" :span-method="objectSpanMethod" + :summary-method="getSummaries" + :show-summary="showSummary" > - <el-table-column v-if="tableList.selectBox" type="selection" width="40"> </el-table-column> + <el-table-column v-if="tableList.selectBox" type="selection" width="40" :selectable="selectable"> </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" @@ -31,25 +33,24 @@ :min-width="item.min" show-overflow-tooltip :sortable="item.sortable" + :align="item.textAlign" v-if="item.isShowColumn" > <template slot-scope="scope"> <span v-if="item.price">{{ "锟�" + number_format(scope.row[item.prop], 2, ".", ",") }}</span> - <!-- 甯︾偣鐨勫姛鑳� --> + <!-- 鐘舵�佹樉绀� --> <div v-else-if="item.status"> - <!-- <span v-if="scope.row.status == '瀹屾垚'" class="Badge greenSlot"></span> - <span v-else-if="scope.row.status == '鑽夌'" class="Badge redSlot"></span> - <span v-else-if="scope.row.status == '灏辩华'" class="Badge redSlot"></span> - <span v-else-if="scope.row.status == '宸插彇娑�'" class="Badge yellowSlot"></span> --> <span class="Badge" :class="{ - greenSlot: scope.row.status == '瀹屾垚', - redSlot: scope.row.status == '宸插彇娑�', - blueSlot: scope.row.status == '灏辩华', - graySlot: scope.row.status == '鑽夌' + greenSlot: scope.row.status == '4' || scope.row.status == '瀹屾垚', + redSlot: scope.row.status == '5', + blueSlot: scope.row.status == '3' || scope.row.status == '灏辩华', + graySlot: scope.row.status == '1' }" - >{{ scope.row[item.prop] }}</span + >{{ + item.isCallMethod ? item.getCallMethod(scope.row[item.prop], scope.row) : scope.row[item.prop] + }}</span > </div> <!-- 璋冪敤鏂规硶鏄剧ず鏂囧瓧 --> @@ -59,15 +60,23 @@ <!-- 灏忎簬褰撳墠鏃堕棿鏄剧ず涓嶅悓棰滆壊 --> <span v-else-if="item.date" - :style="{ color: new Date().getTime() > new Date(scope.row[item.prop]).getTime() ? '#D23F3A' : '#606266' }" - >{{ timeAgo(scope.row[item.prop]) }}</span + :style="{ + color: new Date().getTime() > new Date(scope.row[item.prop]).getTime() ? '#D23F3A' : '#606266' + }" + >{{ scope.row[item.prop] }}</span > + <div v-else-if="item.conversion"> + <p class="exceed_width">{{ item.getStatus(scope.row[item.prop]) }}</p> + </div> <span v-else-if="item.isClick && scope.row[item.prop]" :class="item.className ? item.className : 'sel-name'" @click="selCommonClick(scope.row)" >{{ scope.row[item.prop] }}</span > + <span v-else-if="item.propType == 'mulitple'"> + {{ scope.row[item.prop][item.propTwo] ? scope.row[item.prop][item.propTwo] : "--" }} + </span> <span :class="item.className ? item.className : ''" v-else>{{ scope.row[item.prop] ? scope.row[item.prop] : scope.row[item.prop] === 0 ? scope.row[item.prop] : "--" }}</span> @@ -102,11 +111,12 @@ showStyle: true, tableInfomation: [], // 鎺ュ彛杩斿洖鏁版嵁 showcol: [], + countcol: [], allcol: [], highlight: false, tableColumn: [ // table琛ㄥ崟 - { label: "", prop: "", min: 200, tooltip: true } + { label: "", prop: "", min: 200, tooltip: true, textAlign: "center" } ] } }, @@ -137,6 +147,19 @@ showCheckcol: { type: Boolean, default: true + }, + showSummary: { + type: Boolean, + default: false + }, + // 鍒楄〃涓嶅彲閫夌殑鏁版嵁 + selectBoxList: { + type: Array, + default: () => [] + }, + name:{ + type:String, + default:'' } }, data() { @@ -205,6 +228,53 @@ }, timeAgo(val) { return timeago(val) + }, + //姹傚拰 + getSummaries(param) { + if (this.tableList.countcol && this.tableList.countcol.length > 0) { + const { columns, data } = param + const sums = [] + columns.forEach((column, index) => { + if (index === 0) { + sums[index] = " " + return + } + this.tableList.countcol.forEach((countcols) => { + if (column.label === countcols) { + const values = data.map((item) => Number(item[column.property])) + if (!values.every((value) => isNaN(value))) { + sums[index] = values.reduce((prev, curr) => { + const value = Number(curr) + if (!isNaN(value)) { + return prev + curr + } else { + return prev + } + }, 0) + let unitIndex = this.tableList.tableColumn.findIndex((obj) => obj.label === column.label) + sums[index] = this.tableList.tableColumn[unitIndex].unit + sums[index] + } else { + sums[index] = "" + } + } else { + return + } + }) + }) + return sums + } + }, + selectable(row) { + let prop='id' + if(this.name=='product'){ + prop='productId' + } + let list = this.selectBoxList.map((item) => item[prop]) + if (list.findIndex((v) => v == row.id) == -1) { + return true + } else { + return false + } } } } @@ -212,6 +282,12 @@ <!-- Add "scoped" attribute to limit CSS to this component only --> <style lang="scss" scoped> +.table_height { + height: 100%; +} +.el-table__body-wrapper { + height: 100%; +} .table-view { position: relative; height: 100%; @@ -245,16 +321,18 @@ .styleBtn { position: absolute; width: 30px; - height: 48px; + height: 35px; // line-height: 26px; - background: #f1f3f8; + background: transparent; border-top-right-radius: 8px; top: 0px; right: 2px; - // z-index: 9999; + display: flex; + align-items: center; + z-index: 9999; .label { position: absolute; - top: 12px; + top: 6px; font-size: 20px; cursor: pointer; color: #000; @@ -291,6 +369,61 @@ border-top-left-radius: 12px; border-top-right-radius: 12px; overflow: auto; + .exceed_width { + width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } } } + +::v-deep .el-table .cell { + font-size: 12px; + line-height: 17px; + font-family: PingFangSC; + color: rgba(0, 0, 0, 0.9); + .el-button--text { + width: auto; + height: auto; + font-family: PingFangSC-Medium, sans-serif; + } +} +::v-deep .el-table .el-table__cell { + padding: 6px 0 !important; + height: 35px; + text-align: center; +} + +::v-deep { + .el-table .cell .el-button--text.el-button--small { + padding: 4px 0; + } + .el-table .el-table__cell { + padding: 6px 0 !important; + height: 35px; + text-align: center; + } + .el-table__body-wrapper { + height: unset !important; + } + .el-table__cell.is-left { + text-align: left !important; + } + .el-table__cell.is-right { + text-align: right !important; + } +} +.overSpread1 { + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + background: rgba(0, 0, 0, 0); + z-index: 10; +} +.el-table__cell { + text-align: unset !important; +} </style> -- Gitblit v1.8.0