From 9da0675fa67f1f03f48881b2664da4c01356d1b5 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期三, 23 七月 2025 15:01:08 +0800
Subject: [PATCH] 插回损--功能修改
---
src/views/common/ztt-table.vue | 136 ++++++++++++++++++++++++++++++++++-----------
1 files changed, 103 insertions(+), 33 deletions(-)
diff --git a/src/views/common/ztt-table.vue b/src/views/common/ztt-table.vue
index 5750421..3eaa9ef 100644
--- a/src/views/common/ztt-table.vue
+++ b/src/views/common/ztt-table.vue
@@ -149,11 +149,8 @@
v-bind="$attrs"
v-on="$listeners"
:highlight-current-row="true"
- :row-key="
- (row) => {
- return row.id
- }
- "
+ :row-key="rowKey"
+ :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
@row-dblclick="dbClickRow"
@row-contextmenu="contextMenu"
@header-click="headClick"
@@ -168,7 +165,7 @@
:span-method="objectSpanMethod"
:header-cell-style="tableHeaderStyle"
v-adaptive="{ bottomOffset: bottomOffset, fixedHeight: fixedHeight }"
- height="100px"
+ height="300px"
:class="[
'commonTable',
isGeneralSearch && !isEdit
@@ -178,14 +175,17 @@
v-loading="dataListLoading"
element-loading-text="鍔犺浇涓�..."
element-loading-spinner="el-icon-loading"
+ @expand-change="expandChange"
>
<!--澶氶�夋嫨妗�-->
<el-table-column
align="center"
type="selection"
+ :reserve-selection="options.reserveSelection"
v-if="options.multiSelect && !isEdit"
style="width: 55px;"
:selectable="selectHandle"
+
>
</el-table-column>
<!--鍗曢�夋-->
@@ -249,6 +249,7 @@
:show-overflow-tooltip="!item.noShowTip"
:width="inMemoryColWidth[item.prop] || item.width"
:prop="item.prop"
+ align="center"
>
<template slot="header" slot-scope="scope">
<template v-if="item.isSearch">
@@ -327,8 +328,13 @@
<template v-else>
<template v-if="!item.render">
<template v-if="item.formatter">
- <span v-if="item.isTag" style="text-align: center;">
- <el-tag style="width:50px;margin: 3px;" :type="scope.row[item.prop] == 0 ? 'success' : 'info'">
+ <span v-if="item.isTag&&scope.row[item.prop]!=null" style="text-align: center;">
+ <el-tag style="width:60px;margin: 3px;" :type="scope.row[item.prop] == 0 ? 'success' : 'info'">
+ <span v-html="item.formatter(scope.row, item, scope.row[item.prop])"></span>
+ </el-tag>
+ </span>
+ <span v-if="item.isTags&&scope.row[item.prop]!=null" style="text-align: center;">
+ <el-tag style="width:60px;margin: 3px;" :type="scope.row[item.prop] == '姝e父' ? 'success' : (scope.row[item.prop] == '寮傚父'?'warning':(scope.row[item.prop] == '杩斾慨'?'danger':'info'))">
<span v-html="item.formatter(scope.row, item, scope.row[item.prop])"></span>
</el-tag>
</span>
@@ -401,6 +407,7 @@
@size-change="sizeChangeHandle"
:page-sizes="[10, 20, 50, 100]"
:page-size="pagination.pageSize"
+ :page-count="pagination.size"
:layout="
size
? 'total, prev, pager, next'
@@ -507,11 +514,12 @@
>
<i class="el-icon-upload"></i>
<div class="el-upload__text"><em>鐐瑰嚮瀵煎叆鏁版嵁</em></div>
- <div class="el-upload__tip" slot="tip">
+ <div class="el-upload__tip" slot="tip" >
鍙兘涓婁紶xlsx/xls鏂囦欢锛屼笖涓嶈秴杩�10M<el-button
type="text"
- style="font-size:12px;"
- @click="downDataTemplate"
+ style="font-size:14px;text-decoration: underline;"
+ @click="downDataTemplate(uploadInfo.fileName)"
+ v-if="uploadInfo.download"
>涓嬭浇妯℃澘</el-button
>
</div>
@@ -548,7 +556,7 @@
column: {
type: Object,
default: null
- }
+ },
},
render: (h, data) => {
const params = {
@@ -563,6 +571,23 @@
name: 'TTable',
components: { exSlot, advancedSearchDialog, zttdraggable },
props: {
+ rowKey: {
+ type: String,
+ default: ()=>{
+ return 'id'
+ }
+ },
+ //闇�瑕佸悎骞剁殑瀛楁闆嗗悎
+ mergeSpanArr: {
+ type: Array,
+ default: ()=>{
+ return []
+ }
+ },
+ toolbarMaxLength: {
+ type: Number,
+ default: 5,
+ },
// 琛ㄦ牸鍨嬪彿锛歮ini,medium,small
tableSize: { type: String, default: 'small' },
// 鏁版嵁璇锋眰鏂规硶
@@ -642,7 +667,8 @@
tableCellMerge: false,
cancelRunCreated: false, // 鏄惁鎵цcreated()鍐呭
isGenerateId: false,
- isGenerateField: 'id'
+ isGenerateField: 'id',
+ reserveSelection: false,
}
},
// table鑷�傚簲楂樺害搴曢儴楂樺害
@@ -683,6 +709,7 @@
},
data() {
return {
+ currentExpand:null,
dataListLoading: false,
tableKey: 0,
// jipf 瀵煎嚭鎵�鐢ㄥ彉閲�
@@ -716,6 +743,7 @@
currentPage:
this.table.currentPage == null ? 1 : this.table.currentPage,
pageSize: this.table.pageSize == null ? 20 : this.table.pageSize,
+ size: this.table.size == null ? 7 : this.table.size,
total: this.table.total == null ? 0 : this.table.total
}, // 鍒嗛〉淇℃伅
inMemoryColWidth: {}, // 璁板繂涓垪瀹斤紝榛樿鍒楀
@@ -749,11 +777,11 @@
return colList
},
getToolBarBtn() {
- return this.table.toolbar ? this.table.toolbar.slice(0, 5) : []
+ return this.table.toolbar ? this.table.toolbar.slice(0, this.toolbarMaxLength) : []
},
getToolbarDown() {
- return this.getToolBarBtn.length === 5
- ? this.table.toolbar.slice(5, this.table.toolbar.length)
+ return this.getToolBarBtn.length == this.toolbarMaxLength
+ ? this.table.toolbar.slice(this.toolbarMaxLength, this.table.toolbar.length)
: []
},
isRefreshBtn() {
@@ -819,6 +847,7 @@
this.isCleanInfo = true
}
}
+ this.$emit("queryParam",this.queryParam)
},
deep: true
},
@@ -917,22 +946,41 @@
},
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (this.options.tableCellMerge) {
- let result = ''
- this.$emit(
- 'objectSpanMethod',
- row,
- column,
- rowIndex,
- columnIndex,
- (val) => {
- if (val) {
- result = val
+ const propName = column.property
+ if (propName) {
+ if(this.mergeSpanArr.includes(propName)){
+ if (rowIndex > 0 && row[propName] === this.tableData[rowIndex - 1][propName]) {
+ return { rowspan: 0, colspan: 0 };
+ } else {
+ let rowspan = 1;
+ for (let i = rowIndex + 1; i < this.tableData.length; i++) {
+ if (this.tableData[i][propName] === row[propName]) {
+ rowspan++;
+ } else {
+ break;
+ }
+ }
+ return { rowspan: rowspan, colspan: 1 };
+ }
}
- }
- )
- if (result) {
- return result
}
+ // let result = ''
+ // this.$emit(
+ // 'objectSpanMethod',
+ // row,
+ // column,
+ // rowIndex,
+ // columnIndex,
+ // (val) => {
+ // console.log(val);
+ // if (val) {
+ // result = val
+ // }
+ // }
+ // )
+ // if (result) {
+ // return result
+ // }
}
},
getDataList(selectedId) {
@@ -962,6 +1010,7 @@
return this.doCallback(this.ajaxFun, arr, selectedId)
},
doCallback(fn, args, selectedId) {
+ this.tableData=[]
return fn
.apply(this, args)
.then((response) => {
@@ -1332,6 +1381,7 @@
this.multipleSelection = selection
this.$emit('handleSelectionChange', selection)
} */
+ this.$emit('shoudonggouxuan',row)
},
handleSelectionChange(val) {
this.multipleSelection = val
@@ -1397,7 +1447,6 @@
}
}
}
- console.log(this.multipleSelection)
this.$emit('handleSelectionChange', this.multipleSelection)
} else {
this.multipleSelection = val
@@ -1532,7 +1581,6 @@
}
}
}
- console.log(this.columnList);
this.tableKey = Math.random()
// this.$forceUpdate();
const currPathColumnOrder = this.currPath + '_column'
@@ -1574,10 +1622,19 @@
if (response.code != '0') {
this.$message.warning(response.msg)
} else {
+ if(response.data!=""&&response.data!=[]&&response.data!=null){
+ this.$message({
+ message: response.data,
+ type: 'success',
+ dangerouslyUseHTMLString: true,
+ })
+ }else{
this.$message({
message: '涓婁紶鎴愬姛',
type: 'success'
})
+ }
+ this.importDialogVisible=false
this.getDataList()
}
this.$refs.uploadScan.clearFiles()
@@ -1601,7 +1658,11 @@
const blob = new Blob([response.data], {
type: 'application/force-download'
})
- const filename = decodeURI('妯℃澘鏂囦欢.xlsx')
+ let fileName="妯℃澘鏂囦欢";
+ if(this.uploadInfo.fileName!=undefined&&this.uploadInfo.fileName!=''&&this.uploadInfo.fileName!=null){
+ fileName=this.uploadInfo.fileName
+ }
+ const filename = decodeURI(fileName+'.xlsx')
// 鍒涘缓涓�涓秴閾炬帴锛屽皢鏂囦欢娴佽祴杩涘幓锛岀劧鍚庡疄鐜拌繖涓秴閾炬帴鐨勫崟鍑讳簨浠�
const elink = document.createElement('a')
elink.download = filename
@@ -1672,6 +1733,15 @@
// 璁剧疆楂樼骇鎼滅储鏌ヨ鏉′欢
setMultiSearchFilter(filters) {
this.multiSearchFilter = filters
+ },
+ expandChange(e){
+ this.currentExpand = e;
+ },
+ toggleRowExpansion(){
+ this.tableData.forEach((ele) => {
+ this.$refs.lmesTable.toggleRowExpansion(ele,false)
+ })
+ this.$refs.lmesTable.toggleRowExpansion(this.currentExpand,true)
}
}
}
--
Gitblit v1.9.3