Files
UNION_NSI/target/classes/static/components/plugins/UserTableSelect.vue
T
2026-09-08 19:49:21 +08:00

184 lines
5.0 KiB
Vue

<template>
<el-timeline>
<el-timeline-item timestamp="" placement="top">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch" style="width: 300px">
<el-select v-model="pageForm.searchName" slot="prepend" style="width: 80px;">
<el-option label="姓名" value="username"></el-option>
<el-option label="工号" value="loginname"></el-option>
</el-select>
</el-input>
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
</el-timeline-item>
<el-timeline-item timestamp="" placement="top" v-if="is_ghxzzz">
<el-col :span="12">
<el-select v-model="pageForm.threeUnitId" clearable filterable
placeholder="请选择新科室"
style="width: 100%">
<el-option
v-for="item in threeUnits2"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-col>
</el-timeline-item>
<el-timeline-item timestamp="" placement="top">
<el-table :data="tableData" style="width: 100%" row-key="id"
v-loading="tableLoading" ref="table" class="vi-table"
@selection-change="handleSelectionChange">
<el-table-column type="selection" :reserve-selection="true"></el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in columns"
show-overflow-tooltip
:sortable="column.sortable"
:label="column.label"
:prop="column.prop" :width="column.width">
</el-table-column>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
@size-change="pageSizeChange"
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
:page-size="pageForm.pageSize"
layout="total, prev, pager, next"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</el-timeline-item>
</el-timeline>
</template>
<script>
module.exports = {
props: {
value: {type: Array},
columns: {
type: Array,
default: [{
prop: 'loginname',
label: '工号',
}, {
prop: 'username',
label: '姓名',
}, {
prop: 'sex',
label: '性别',
}, {
prop: 'mobile',
label: '电话',
}, {
prop: 'unitname',
label: '单位',
}, {
prop: 'unionname',
label: '工会',
}]
},
union: {type: String},
is_ghxzzz: {type: Boolean},
page_size: {type: Number, default: 5},
sql_cnd: {
type: Array
}
},
model: {
prop: 'value',
event: 'change'
},
data() {
return {
unitMoveUnits: [],
threeUnits2: [],
tableData: [],
tableLoading: false,
selectUser: [],
pageForm: {
unionId: this.union,
sqlCnd: JSON.stringify(this.sql_cnd),
searchName: "username",
searchKeyword: "",
pageNumber: 1,
pageSize: this.page_size,
totalCount: 0,
pageOrderName: "",
pageOrderBy: "",
unitId: "",
threeUnitId: "",
}
}
},
watch: {
value(val) {
}
},
methods: {
handleSelectionChange(val) {
this.selectUser = val
this.$emit("change", val.map(v => v.id))
},
doSearch() {
this.tableKey = new Date().getTime()
this.pageForm.pageNumber = 1
this.pageData()
},
pageOrder(column) {
this.pageForm.pageOrderName = column.prop;
this.pageForm.pageOrderBy = column.order;
this.pageData();
},
pageNumberChange(val) {
this.pageForm.pageNumber = val;
this.pageData();
},
pageSizeChange(val) {
this.pageForm.pageSize = val;
this.pageData();
},
pageData() {
this.tableLoading = true
$.post("/platform/welfare/member/mange/userPageData", this.pageForm, (data) => {
this.tableLoading = false
if (data.code == 0) {
this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount;
this.tableData.filter(v => this.value.includes(v.id) && !this.selectUser.some(x => x.id == v.id)).forEach(v => {
this.$refs.table.toggleRowSelection(v, true);
})
} else {
this.$message.error(data.msg);
}
}, "json");
},
async init() {
this.doSearch()
this.pageForm.threeUnitId = null
this.unitMoveUnits = await getUnits()
if (this.unitMoveUnits && this.unitMoveUnits.length > 0) {
this.pageForm.unitId = this.unitMoveUnits[0].id
this.threeUnits2 = await threeUnitsByUnionGroupOrUnitId(this.pageForm.unitId, null)
}
this.selectUser = []
this.$refs.table.clearSelection();
},
},
created() {
}
}
</script>
<style>
</style>