From 5a53822c8983d4559eddb9d9af3d7710fb6321ef Mon Sep 17 00:00:00 2001 From: value <z1292839451@163.com> Date: 星期六, 06 四月 2024 13:10:00 +0800 Subject: [PATCH] 完成样品管理权限,完成仓库新增和查询,仓库变更赋予货架列表数据 --- src/components/tool/value-table.vue | 97 +++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 79 insertions(+), 18 deletions(-) diff --git a/src/components/tool/value-table.vue b/src/components/tool/value-table.vue index c8bce0f..f6674cc 100644 --- a/src/components/tool/value-table.vue +++ b/src/components/tool/value-table.vue @@ -36,30 +36,30 @@ } </style> <style> - .value-table .highlight-warning-row-border td { + /* .value-table .highlight-warning-row-border td { border-top: 2px solid #ffcd29; border-bottom: 2px solid #ffcd29; - } + } */ .value-table .highlight-warning-row-border td:first-child { - border-left: 2px solid #ffcd29; + border-left: 4px solid #ffcd29; } .value-table .highlight-warning-row-border td:last-child { - border-right: 2px solid #ffcd29; + border-right: 4px solid #ffcd29; } - .value-table .highlight-danger-row-border td { + /* .value-table .highlight-danger-row-border td { border-top: 2px solid red; border-bottom: 2px solid red; - } + } */ .value-table .highlight-danger-row-border td:first-child { - border-left: 2px solid red; + border-left: 4px solid #f56c6c; } .value-table .highlight-danger-row-border td:last-child { - border-right: 2px solid red; + border-right: 4px solid #f56c6c; } .value-table .el-upload { @@ -73,17 +73,21 @@ <template> <div class="value-table"> - <div class="table"> - <el-table ref="eltable" :data="tableData" style="width: 100%;" height="100%" tooltip-effect="dark" border + <div class="table" :style="data.isPage!=undefined&&data.isPage!=true?'height:100%':''"> + <el-table ref="eltable" :data="tableData" style="width: 100%;" height="100%" + tooltip-effect="dark" border @selection-change="selectChange" @select="select" v-loading="loading" @sort-change="sortChange" @row-click="rowClick" :show-summary="data.countFleid!=undefined && data.countFleid.length > 0" - :summary-method="getSummaries" :row-class-name="tableRowClassName"> + :summary-method="getSummaries" :row-class-name="tableRowClassName" + :row-key="record=>record.id" :current-row-key="data.currentId" + highlight-current-row + :span-method="spanMethod"> <el-table-column type="selection" width="65" v-if="data.showSelect" :key="Math.random()"> </el-table-column> - <el-table-column type="index" align="center" label="搴忓彿" width="70" v-if="data.isIndex" :key="Math.random()"> + <el-table-column type="index" align="center" label="搴忓彿" width="65" v-if="data.isIndex" :key="Math.random()"> </el-table-column> <el-table-column :prop="a.label" :label="a.value" :sortable="data.sort==false?false:'custom'" - v-for="(a, ai) in tableHead" :key="ai" show-overflow-tooltip min-width="160"> + v-for="(a, ai) in tableHead" :key="ai" show-overflow-tooltip min-width="155"> <template slot-scope="scope"> <div v-if="showType(a.label, data.tagField) != null"> <template v-if="typeof(scope.row[a.label]) == 'object'"> @@ -112,10 +116,10 @@ </el-table-column> </el-table> </div> - <div class="page"> + <div class="page" v-if="data.isPage==undefined||data.isPage"> <el-pagination @size-change="sizeChange" @current-change="currentChange" :current-page="page.current" :page-sizes="[10, 20, 30, 50, 100]" :page-size="page.size" layout="total, sizes, prev, pager, next, jumper" - :total="total"> + :total="total" > </el-pagination> </div> <el-dialog title="缂栬緫" :visible.sync="upDia" :width="data.row==1?'500px':500+data.row * 200 + 'px'"> @@ -231,6 +235,7 @@ import { Page } from 'iview'; +import { data } from 'jquery'; export default { props: { tableRowClassName: { @@ -311,12 +316,14 @@ showSelect: false, select: true, row: 1, + isPage:true,// do: [{ font: '鍒犻櫎', type: 'text' }], type: [], - uploadStr: "" + uploadStr: "", + currentId:'',//褰撳墠楂樹寒鐨処D }, tableHead: [], tableData: [], @@ -340,6 +347,9 @@ uploadDia: false, token: null, fileList: [], + init: true, + testArr: [], + testPosition: 0, } }, watch: { @@ -355,18 +365,58 @@ mounted() { this.data = this.componentData this.dataCopy = this.HaveJson(this.componentData) - this.selectList() + if(this.data.init===undefined||this.data.init===true){ + this.selectList() + } this.token = { 'token': sessionStorage.getItem('token') } }, methods: { + rowspan(spanArr, position, spanName) { + this.tableData.forEach((item, index) => { + if (index === 0) { + spanArr.push(1); + position = 0; + } else { + if ( + this.tableData[index][spanName] === + this.tableData[index - 1][spanName] + ) { + spanArr[position] += 1; + spanArr.push(0); + } else { + spanArr.push(1); + position = index; + } + } + }); + }, + spanMethod({ row, column, rowIndex, columnIndex }){ + if(this.data.spanConfig!=undefined&&this.data.spanConfig.rows){ + if (columnIndex === this.data.spanConfig.rows.index) { + const _row = this.testArr[rowIndex]; + const _col = _row > 0 ? 1 : 0; + return { + rowspan: _row, + colspan: _col, + }; + } + } + }, selectChange(val) { if (this.data.select) { this.multipleSelection = val; } else { this.multipleSelection = val[val.length - 1]; } + if(this.data.selectMethod!=undefined){ + if(this.$parent.$el.className.indexOf('el-')==0){ + this.$parent.$parent[this.data.selectMethod](val) + }else{ + this.$parent[this.data.selectMethod](val) + } + } }, select(val, row) { if (!this.data.select) { @@ -392,6 +442,12 @@ }, selectList() { this.loading = true + if(this.data.isPage!=undefined&&this.data.isPage!=true){ + this.page = { + current: -1, + size: -1, + } + } this.$axios.post(this.url, { page: this.page, entity: this.data.entity @@ -416,6 +472,11 @@ }) } } + if(this.data.spanConfig!=undefined&&this.data.spanConfig.rows){ + this.testArr = [] + this.testPosition = 0 + this.rowspan(this.testArr, this.testPosition, this.data.spanConfig.rows.name); + } this.loading = false }).catch(e => { this.loading = false @@ -583,7 +644,7 @@ } } val.field.forEach(a => { - if (JSON.stringify(this.upData[a]) == undefined) { + if (JSON.stringify(this.upData[a]) === undefined) { this.upHead.push({ value: a.split('=')[0], label: a.split('=')[1] -- Gitblit v1.9.3