Files
zhgh_ncu/src/main/resources/static/components/module/activity/UserDataScope.vue
T
2025-09-25 14:32:23 +08:00

348 lines
12 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div>
<el-card shadow="never">
<div class="search">
<div class="search-item">
<div class="search-item-label">活动分组</div>
<div class="search-item-option">
<el-select
placeholder="活动分组"
v-model="pageForm.groupId"
style="width: 100%"
@change="
doSearch()
viewGroupName()
"
filterable
>
<el-option
v-for="item in activityGroupList"
:label="item.groupName"
:value="item.groupId"
:key="item.groupId"
></el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">姓名工号</div>
<div class="search-item-option">
<el-input
placeholder="请输入内容"
clearable
v-model="pageForm.searchKeyword"
style="width: 100%"
@keyup.enter.native="doSearch"
>
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型" style="width: 80px">
<el-option label="姓名" value="username"></el-option>
<el-option label="工号" value="loginname"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="search-item" v-if="is_sysadmin || is_A06">
<div class="search-item-label">所属工会</div>
<div class="search-item-option">
<el-select
placeholder="所属工会"
v-model="pageForm.unionId"
style="width: 100%"
clearable
@change="flushUnits"
@clear="flushUnits"
filterable
>
<el-option v-for="item in unions" :label="item.name" :value="item.id" :key="item.id"></el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">所属单位</div>
<div class="search-item-option">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%" clearable @change="doSearch"
filterable>
<el-option v-for="item in units" :label="item.name" :value="item.id" :key="item.id"></el-option>
</el-select>
</div>
</div>
<!--<div class="search-item"
v-if="${@shiro.hasRole('sysadmin')}">
<div class="search-item-label">活动工会</div>
<div class="search-item-option">
<el-select placeholder="所属工会" v-model="pageForm.activityUnionId"
style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
filterable="true">
<el-option v-for="item in ActivityUnions" :label="item.unionname"
:value="item.id"></el-option>
</el-select>
</div>
</div>
<div class="search-item" v-if="${@shiro.hasRole('sysadmin')}">
<div class="search-item-label">活动单位</div>
<div class="search-item-option">
<el-select placeholder="所属单位" v-model="pageForm.activityUnitId"
style="width: 100%;"
clearable="true"
@change="doSearch"
filterable="true">
<el-option v-for="item in ActivityUnits" :label="item.name"
:value="item.id"></el-option>
</el-select>
</div>
</div>-->
<div class="search-item">
<div class="search-item-label">教职工类别</div>
<div class="search-item-option">
<dict-select v-model="pageForm.personType" code="USER_PERSON_TYPE" @change="doSearch"
style="width: 100%"></dict-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">在职状态</div>
<div class="search-item-option">
<dict-select
v-model="pageForm.userState"
style="width: 100%"
clearable
placeholder="在职状态"
@change="doSearch"
code="USER_STATE"
></dict-select>
</div>
</div>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
</div>
</div>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool :label="currentGroupName">
<el-button v-if="is_sysadmin||is_A06"
type="primary" size="medium" icon="el-icon-printer" @click="importDialogVisible=true">
导入XLSX查询
</el-button>
<el-button @click="doExportUser" icon="el-icon-printer" size="small" type="primary"
:disabled="!pageForm.groupId">
导出活动分组人员xlsx
</el-button>
<el-button @click="doDelete(null)" type="danger" size="small" :disabled="tableData.length === 0">
删除{{ currentGroupName }}
</el-button>
</table-tool>
<el-table ref="userTable" :data="tableData" stripe border :size="tableSize" @sort-change="pageOrder">
<el-table-column label="序号" type="index" width="80">
<template slot-scope="scope">
<span>{{ scope.$index + (pageForm.pageNumber - 1) * pageForm.pageSize + 1 }}</span>
</template>
</el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:key="column.prop"
:sortable="column.sortable"
></el-table-column>
<el-table-column align="center" header-align="center" label="操作" width="100">
<template slot-scope="{ row }">
<el-button size="mini" type="danger" @click="doDelete(row.id)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container" style="margin-bottom: 0px">
<el-pagination
@size-change="pageSizeChange"
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
:page-sizes="[5, 10, 20, 30, 50]"
:page-size="pageForm.pageSize"
layout="total, sizes, prev, pager, next"
:total="pageForm.totalCount"
></el-pagination>
</el-row>
</el-card>
<el-dialog :visible.sync="importDialogVisible" title="人员导入" width="45%" :append-to-body="true"
:close-on-click-modal="false">
<activity-import-user ref="importUserRef"
@clear_import_dialog="clearImportDialog"
@flush="flush"
do_import_url="/platform/activity/basic/user/doImport"
:group_id="pageForm.groupId"
:exists_login_name_redis_key="pageForm.existsLoginNameRedisKey"></activity-import-user>
</el-dialog>
</div>
</template>
<script>
module.exports = {
props: {
group_id: {
type: String,
default: ""
}
},
computed: {
is_H10() {
return this.roleData.is_H10
},
is_A06() {
return this.roleData.is_A06
},
is_H04() {
return this.roleData.is_H04
},
is_H02() {
return this.roleData.is_H02
},
is_H03() {
return this.roleData.is_H03
},
is_sysadmin() {
return this.roleData.is_sysadmin
},
unionid() {
return this.roleData.unionid
}
},
data() {
return {
activityGroupList: [],
ActivityUnions: [],
ActivityUnits: [],
unions: [],
units: [],
pageForm: {
unionId: "",
unitId: "",
searchName: "username",
personTypes: [],
userStates: [],
memberStatus: [],
year: moment().format("YYYY")
},
tableColumns: [
{prop: "loginName", label: "工号"},
{prop: "userName", label: "姓名"},
{prop: "sex", label: "性别", sortable: true},
{prop: "birthday", label: "出生年月"},
{prop: "mobile", label: "联系电话"},
{prop: "personType", label: "教职工类别", sortable: true},
{prop: "userState", label: "在职状态", sortable: true},
{prop: "unitName", label: "所属单位", sortable: true},
{prop: "unionName", label: "所属工会", sortable: true},
{prop: "groupName", label: "所属分组", sortable: true}
],
roleData: {},
currentGroupName: null,
importDialogVisible: false,
}
},
mixins: [initTableMixins],
components: {
"activity-import-user": httpVueLoader("/components/module/activity/ActivityImportUser.vue?v=" + new Date().getTime())
},
methods: {
flush(exists_login_name_redis_key) {
this.pageForm.existsLoginNameRedisKey = exists_login_name_redis_key
this.doSearch()
},
clearImportDialog() {
this.importDialogVisible = false
},
viewGroupName() {
if (this.pageForm?.groupId) {
const group = this.activityGroupList.find((v) => v.groupId === this.pageForm.groupId)
this.currentGroupName = group.groupName + "人员"
return
}
this.currentGroupName = "全部人员"
},
doExportUser() {
window.open("/platform/activity/basic/user/doExportUser?groupId=" + this.pageForm.groupId)
},
doSearch2() {
this.getActivityGroup()
this.doSearch()
},
async doDelete(id, groupId) {
const confirm = await this.$confirm("您确定要删除吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
if (confirm === "confirm") {
let pageForm = clone(this.pageForm)
pageForm.id = id
const resp = await $.post("/platform/activity/basic/user/doDelete", pageForm)
if (resp.code === 0) {
this.$message.success(resp.msg)
await this.getActivityGroup(this.pageForm.groupId)
this.$emit("group_change")
} else {
}
}
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if (this.is_A06 || this.is_sysadmin) {
this.units = await this.$businessTool.listUnit(this.pageForm.unionId)
// this.ActivityUnits = await getActivityUnits(this.pageForm.activityUnionId)
} else {
this.units = await this.$businessTool.listUnit(this.unionid)
}
},
async getActivityGroup(id) {
const resp = await $.get("/platform/activity/basic/scope/getActivityUserScopeGroup")
this.activityGroupList = resp.data
if (resp.data && resp.data.length > 0) {
if (id) {
if (this.activityGroupList.some((v) => v.groupId === id)) {
this.$set(this.pageForm, "groupId", id)
} else {
this.$set(this.pageForm, "groupId", resp.data[0].groupId)
}
} else {
this.$set(this.pageForm, "groupId", resp.data[0].groupId)
}
}
await this.doSearch()
},
async getRolesAndUnion() {
const {data} = await $.post("/platform/activity/basic/scope/getRolesAndUnion")
this.roleData = data
},
async pageData() {
const resp = await $.post("/platform/activity/basic/user/pageData", this.pageForm)
if (resp.code === 0) {
this.tableData = resp.data.list
this.pageForm.totalCount = resp.data.totalCount
}
}
},
async created() {
this.unions = await this.$businessTool.listUnion()
// this.ActivityUnions = await getActivityUnions()
await this.flushUnits()
await this.getActivityGroup()
await this.getRolesAndUnion()
this.viewGroupName()
}
}
</script>