|
|
|
|
@ -147,9 +147,17 @@ export default {
|
|
|
|
|
return { width: "100%", marginBottom: "20px" };
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
btnToMore: {
|
|
|
|
|
type: Boolean,
|
|
|
|
|
default: false
|
|
|
|
|
},
|
|
|
|
|
moreAuths: {
|
|
|
|
|
type: Array,
|
|
|
|
|
default: () => ['edit','delete']
|
|
|
|
|
},
|
|
|
|
|
btnWidth: {
|
|
|
|
|
type: Number,
|
|
|
|
|
default: 140,
|
|
|
|
|
default: 220,
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 分页相关
|
|
|
|
|
@ -204,10 +212,9 @@ export default {
|
|
|
|
|
return metrics.width;
|
|
|
|
|
},
|
|
|
|
|
initLoad() {
|
|
|
|
|
if (this.height) return;
|
|
|
|
|
let clientHeight = document.documentElement.clientHeight;
|
|
|
|
|
let lxheader = document
|
|
|
|
|
.querySelector(".v-header")
|
|
|
|
|
.getBoundingClientRect();
|
|
|
|
|
let lxheader = document.querySelector(".v-header")?.getBoundingClientRect();
|
|
|
|
|
let lxHeader_height = lxheader.height + 25; //查询 头部
|
|
|
|
|
let paginationHeight = 37; //分页的高度
|
|
|
|
|
let topHeight = 50; //页面 头部
|
|
|
|
|
@ -242,6 +249,7 @@ export default {
|
|
|
|
|
.then((res) => {
|
|
|
|
|
this.listData = this.getByStrkey(res.data, this.resProp);
|
|
|
|
|
this.totalData = res.data.total;
|
|
|
|
|
this.$emit('loaded')
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
this.loading = false;
|
|
|
|
|
|
|
|
|
|
@ -261,6 +269,7 @@ export default {
|
|
|
|
|
.then((res) => {
|
|
|
|
|
this.listData = this.getByStrkey(res, this.resProp);
|
|
|
|
|
this.totalData = res.total;
|
|
|
|
|
this.$emit('loaded')
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
this.loading = false;
|
|
|
|
|
|
|
|
|
|
@ -368,7 +377,7 @@ export default {
|
|
|
|
|
this.$refs.table.toggleRowExpansion(row, expanded);
|
|
|
|
|
},
|
|
|
|
|
setCurrentRow(row) {
|
|
|
|
|
this.$refs.table.toggleRowExpansion(row);
|
|
|
|
|
this.$refs.table.setCurrentRow(row);
|
|
|
|
|
},
|
|
|
|
|
clearSort() {
|
|
|
|
|
this.$refs.table.clearSort();
|
|
|
|
|
@ -385,6 +394,9 @@ export default {
|
|
|
|
|
getSelection(){
|
|
|
|
|
return this.$refs.table?.store?.states?.selection ?? []
|
|
|
|
|
},
|
|
|
|
|
getListData () {
|
|
|
|
|
return this.listData
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
//table通讯事件
|
|
|
|
|
delete(row, type) {
|
|
|
|
|
@ -444,6 +456,7 @@ export default {
|
|
|
|
|
expandChange(row, expanded) {
|
|
|
|
|
this.$emit("expand-change", row, expanded);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
deleteClick(row) {
|
|
|
|
|
this.$emit("delete", row);
|
|
|
|
|
if (this.destroyAction) {
|
|
|
|
|
@ -571,12 +584,68 @@ export default {
|
|
|
|
|
let _this = this;
|
|
|
|
|
if (_this.auths?.length > 0) {
|
|
|
|
|
let btns = new Map();
|
|
|
|
|
btns.set(
|
|
|
|
|
"more",
|
|
|
|
|
<el-dropdown size="small" type="primary" placement="bottom" on={{
|
|
|
|
|
['command']:command => {
|
|
|
|
|
if (command === 'edit') {
|
|
|
|
|
this.editorClick(scope.row)
|
|
|
|
|
}
|
|
|
|
|
else if (command === 'delete') {
|
|
|
|
|
let that = this
|
|
|
|
|
this.$confirm("确认删除吗?",{
|
|
|
|
|
beforeClose(action,instance,done){
|
|
|
|
|
if (action === 'confirm') {
|
|
|
|
|
that.deleteClick(scope.row);
|
|
|
|
|
done();
|
|
|
|
|
} else {
|
|
|
|
|
done();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}).then(res => {
|
|
|
|
|
this.$message({
|
|
|
|
|
type: 'success',
|
|
|
|
|
message: '删除成功'
|
|
|
|
|
})
|
|
|
|
|
this.load()
|
|
|
|
|
})
|
|
|
|
|
} else {
|
|
|
|
|
this.$emit(command, scope.row)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}}>
|
|
|
|
|
<i-button
|
|
|
|
|
type="default"
|
|
|
|
|
size="small"
|
|
|
|
|
style="margin-left: 6px;"
|
|
|
|
|
>
|
|
|
|
|
更多
|
|
|
|
|
</i-button>
|
|
|
|
|
|
|
|
|
|
<el-dropdown-menu slot="dropdown">
|
|
|
|
|
{
|
|
|
|
|
(() => {
|
|
|
|
|
let dom = [];
|
|
|
|
|
|
|
|
|
|
this.moreAuths.forEach(i => {
|
|
|
|
|
this.$scopedSlots[i] ? dom.push((<el-dropdown-item command={i}>{ this.$scopedSlots[i](scope) }</el-dropdown-item>)) : ''
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
if (this.auths.indexOf('edit') !== -1) {
|
|
|
|
|
dom.push(<el-dropdown-item divided command="edit">编辑</el-dropdown-item>)
|
|
|
|
|
}
|
|
|
|
|
if (this.auths.indexOf('delete') !== -1) {
|
|
|
|
|
dom.push(<el-dropdown-item command="delete"><span style="color: red;">删除</span></el-dropdown-item>)
|
|
|
|
|
}
|
|
|
|
|
return dom;
|
|
|
|
|
})()
|
|
|
|
|
}
|
|
|
|
|
</el-dropdown-menu>
|
|
|
|
|
</el-dropdown>
|
|
|
|
|
)
|
|
|
|
|
btns.set(
|
|
|
|
|
"detail",
|
|
|
|
|
<i-button
|
|
|
|
|
style={{
|
|
|
|
|
"margin-right": "6px",
|
|
|
|
|
}}
|
|
|
|
|
type="primary"
|
|
|
|
|
size="small"
|
|
|
|
|
ghost={true}
|
|
|
|
|
@ -588,9 +657,6 @@ export default {
|
|
|
|
|
btns.set(
|
|
|
|
|
"edit",
|
|
|
|
|
<i-button
|
|
|
|
|
style={{
|
|
|
|
|
"margin-right": "6px",
|
|
|
|
|
}}
|
|
|
|
|
type="primary"
|
|
|
|
|
size="small"
|
|
|
|
|
onClick={() => _this.editorClick(scope.row, "edit")}
|
|
|
|
|
@ -673,17 +739,25 @@ export default {
|
|
|
|
|
"flex-wrap": "wrap",
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{_this.auths.map((item, index) => {
|
|
|
|
|
if (_this.$scopedSlots[item]) {
|
|
|
|
|
flag = index;
|
|
|
|
|
return _this.$scopedSlots[item](scope, item, index);
|
|
|
|
|
} else {
|
|
|
|
|
if (btns.get(item)) {
|
|
|
|
|
{ (() => {
|
|
|
|
|
let dom = [];
|
|
|
|
|
_this.auths.forEach((item, index) => {
|
|
|
|
|
if (this.btnToMore && _this.moreAuths.find(j => j === item)) return
|
|
|
|
|
if (_this.$scopedSlots[item]) {
|
|
|
|
|
flag = index;
|
|
|
|
|
return btns.get(item);
|
|
|
|
|
dom.push(_this.$scopedSlots[item](scope, item, index));
|
|
|
|
|
} else {
|
|
|
|
|
if (btns.get(item)) {
|
|
|
|
|
flag = index;
|
|
|
|
|
dom.push(btns.get(item));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
this.btnToMore? dom.push(btns.get('more')) : ''
|
|
|
|
|
|
|
|
|
|
return dom;
|
|
|
|
|
})() }
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
return { dom, flag };
|
|
|
|
|
@ -711,7 +785,7 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
},{
|
|
|
|
|
deep: true,
|
|
|
|
|
immediate: false
|
|
|
|
|
immediate: true
|
|
|
|
|
})
|
|
|
|
|
} else {
|
|
|
|
|
if(this.action) this.getTableData();
|
|
|
|
|
@ -829,68 +903,68 @@ export default {
|
|
|
|
|
scopedSlots={
|
|
|
|
|
item.customFn || item.type === "expand"
|
|
|
|
|
? {
|
|
|
|
|
default(scope) {
|
|
|
|
|
if (item.type === "expand") {
|
|
|
|
|
return item.expandFn(scope);
|
|
|
|
|
}
|
|
|
|
|
if (item.customFn) {
|
|
|
|
|
return item.customFn(scope.row, scope);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
default(scope) {
|
|
|
|
|
if (item.type === "expand") {
|
|
|
|
|
return item.expandFn(scope);
|
|
|
|
|
}
|
|
|
|
|
if (item.customFn) {
|
|
|
|
|
return item.customFn(scope.row, scope);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
: ""
|
|
|
|
|
}
|
|
|
|
|
>
|
|
|
|
|
{item.multiHd
|
|
|
|
|
? item.multiHd.map((item1, index1) => {
|
|
|
|
|
return (
|
|
|
|
|
<af-table-column
|
|
|
|
|
//key={`xy-table-col-multi-${item1.prop}`}
|
|
|
|
|
key={String(Math.random()) + index1}
|
|
|
|
|
prop={`${item.pProp ? item.pProp + "." : ""}${
|
|
|
|
|
item1.prop
|
|
|
|
|
}`}
|
|
|
|
|
type={item1.type}
|
|
|
|
|
index={item1.index}
|
|
|
|
|
column-key={String(Math.random() + index1)}
|
|
|
|
|
label={item1.label}
|
|
|
|
|
prop={item1.prop}
|
|
|
|
|
width={item1.width ?? "auto"}
|
|
|
|
|
min-width={item1.minWidth}
|
|
|
|
|
fixed={item1.fixed}
|
|
|
|
|
render-header={item1.renderHeader}
|
|
|
|
|
sortable={item1.sortable ?? false}
|
|
|
|
|
sort-method={item1.sortMethod}
|
|
|
|
|
sort-by={item1.sortBy}
|
|
|
|
|
sort-orders={item1.sortOrders}
|
|
|
|
|
resizale={item1.resizale ?? false}
|
|
|
|
|
formatter={item1.formatter}
|
|
|
|
|
show-overflow-tooltip={
|
|
|
|
|
item1.showOverflowTooltip ?? true
|
|
|
|
|
}
|
|
|
|
|
align={item1.align ?? "center"}
|
|
|
|
|
header-align={item1.headerAlign ?? "center"}
|
|
|
|
|
class-name={`xy-table__row-fade ${item1.className}`}
|
|
|
|
|
label-class-name={`xy-table__title-fade ${item1.labelClassName}`}
|
|
|
|
|
selectable={item1.selectable}
|
|
|
|
|
reserve-selection={item1.reserveSelection}
|
|
|
|
|
filters={item1.filters}
|
|
|
|
|
filter-placement={item1.filterPlacement}
|
|
|
|
|
filter-multiple={item1.filterMultiple}
|
|
|
|
|
filter-method={item1.filterMethod}
|
|
|
|
|
filtered-value={item1.filteredValue}
|
|
|
|
|
scopedSlots={
|
|
|
|
|
item1.customFn
|
|
|
|
|
? {
|
|
|
|
|
default(scope1) {
|
|
|
|
|
return item1.customFn(scope1);
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
: ""
|
|
|
|
|
}
|
|
|
|
|
></af-table-column>
|
|
|
|
|
);
|
|
|
|
|
})
|
|
|
|
|
return (
|
|
|
|
|
<af-table-column
|
|
|
|
|
//key={`xy-table-col-multi-${item1.prop}`}
|
|
|
|
|
key={String(Math.random()) + index1}
|
|
|
|
|
prop={`${item.pProp ? item.pProp + "." : ""}${
|
|
|
|
|
item1.prop
|
|
|
|
|
}`}
|
|
|
|
|
type={item1.type}
|
|
|
|
|
index={item1.index}
|
|
|
|
|
column-key={String(Math.random() + index1)}
|
|
|
|
|
label={item1.label}
|
|
|
|
|
prop={item1.prop}
|
|
|
|
|
width={item1.width ?? "auto"}
|
|
|
|
|
min-width={item1.minWidth}
|
|
|
|
|
fixed={item1.fixed}
|
|
|
|
|
render-header={item1.renderHeader}
|
|
|
|
|
sortable={item1.sortable ?? false}
|
|
|
|
|
sort-method={item1.sortMethod}
|
|
|
|
|
sort-by={item1.sortBy}
|
|
|
|
|
sort-orders={item1.sortOrders}
|
|
|
|
|
resizale={item1.resizale ?? false}
|
|
|
|
|
formatter={item1.formatter}
|
|
|
|
|
show-overflow-tooltip={
|
|
|
|
|
item1.showOverflowTooltip ?? true
|
|
|
|
|
}
|
|
|
|
|
align={item1.align ?? "center"}
|
|
|
|
|
header-align={item1.headerAlign ?? "center"}
|
|
|
|
|
class-name={`xy-table__row-fade ${item1.className}`}
|
|
|
|
|
label-class-name={`xy-table__title-fade ${item1.labelClassName}`}
|
|
|
|
|
selectable={item1.selectable}
|
|
|
|
|
reserve-selection={item1.reserveSelection}
|
|
|
|
|
filters={item1.filters}
|
|
|
|
|
filter-placement={item1.filterPlacement}
|
|
|
|
|
filter-multiple={item1.filterMultiple}
|
|
|
|
|
filter-method={item1.filterMethod}
|
|
|
|
|
filtered-value={item1.filteredValue}
|
|
|
|
|
scopedSlots={
|
|
|
|
|
item1.customFn
|
|
|
|
|
? {
|
|
|
|
|
default(scope1) {
|
|
|
|
|
return item1.customFn(scope1);
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
: ""
|
|
|
|
|
}
|
|
|
|
|
></af-table-column>
|
|
|
|
|
);
|
|
|
|
|
})
|
|
|
|
|
: ""}
|
|
|
|
|
</af-table-column>
|
|
|
|
|
);
|
|
|
|
|
@ -921,6 +995,7 @@ export default {
|
|
|
|
|
|
|
|
|
|
::v-deep .el-table {
|
|
|
|
|
margin-bottom: 0 !important;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
.xy-table__setting {
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
@ -933,6 +1008,7 @@ export default {
|
|
|
|
|
.xy-table__page {
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: right;
|
|
|
|
|
align-items: center;
|
|
|
|
|
border-bottom-right-radius: 4px;
|
|
|
|
|
border-bottom-left-radius: 4px;
|
|
|
|
|
background: rgba(140, 140, 140, 0.6);
|
|
|
|
|
@ -1013,7 +1089,7 @@ export default {
|
|
|
|
|
clip-path: polygon(0 30%, 100% 30%, 100% 100%, 0 100%);
|
|
|
|
|
background: rgba(140, 140, 140, 0.7);
|
|
|
|
|
transform: scale(0.8, 0.8) translateX(-22px) translateY(-10px)
|
|
|
|
|
rotate(-90deg);
|
|
|
|
|
rotate(-90deg);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -1055,4 +1131,8 @@ export default {
|
|
|
|
|
opacity: 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Button + Button {
|
|
|
|
|
margin-left: 6px;
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|
|