Files
zhgh_hhu/target/classes/views/platform/jdh/db/dbgl.html
T
2026-09-20 15:46:34 +08:00

656 lines
30 KiB
HTML

<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-form .el-select {
width: 100%;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询"
style="width: 100px;">
<el-option label="工号" value="u.loginname"></el-option>
<el-option label="姓名" value="u.username"></el-option>
</el-select>
</el-input>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.jdhid" clearable filterable placeholder="请选择教代会"
@change="jdhChange">
<el-option
v-for="item in allTeacherMeets"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.dbtid" filterable clearable placeholder="请选择代表团"
@change="delegationChange">
<el-option
v-for="item in delegationList"
:key="item.id"
:label="item.dbtname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.unionid" filterable clearable placeholder="请选择工会"
@change="unitList = allUnitList.filter(v => pageForm.unionid?v.unionid === pageForm.unionid:true)">
<el-option
v-for="item in unionList"
:key="item.id"
:label="item.unionname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.unitid" filterable clearable placeholder="请选择单位">
<el-option
v-for="item in unitList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.dbsf" clearable placeholder="请选择代表身份">
<el-option label="正式代表" value="正式代表"></el-option>
<el-option label="列席代表" value="列席代表"></el-option>
<el-option label="特邀代表" value="特邀代表"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
</div>
<!-- <el-row class="mt20">
<div class="btn-group tool-button">
<el-button type="danger" size="medium" @click="doDeleteMany" icon="el-icon-delete">批量删除
</el-button>
</div>
<div class="btn-group tool-button">
<el-button type="success" size="medium" @click="openAddDb" icon="el-icon-plus">新增代表
</el-button>
</div>
<div class="btn-group tool-button">
<el-button type="warning" size="medium" @click="openSetXld">
<i class="el-icon-sort" style="transform: rotate(90deg);"></i>
代表调整
</el-button>
</div>
<div class="btn-group tool-button">
<el-button type="warning" size="medium" @click="dofpdbt">
一键分配代表团
</el-button>
</div>
</el-row>-->
</el-card>
<el-card shadow="never" class="mt20">
<table-tool label="代表列表" :app="this">
<template #func>
<el-button @click="doDeleteMany" plain size="small" type="danger"
icon="el-icon-delete"> 批量删除
</el-button>
<el-button @click="openAddDb" size="small" icon="ti-plus" type="success"
plain>
添加代表
</el-button>
<el-button @click="openSetXld" icon="el-icon-sort" size="small" plain
type="warning">代表调整
</el-button>
<el-button type="warning" @click="dofpdbt" size="small">
一键分配代表团
</el-button>
</template>
</table-tool>
<el-table :data="tableData" row-key="id" @selection-change="handleSelectionChange"
@sort-change='pageOrder'>
<el-table-column type="selection" width="55"
reserve-selection></el-table-column>
<el-table-column label="序号" type="index" header-align="center" align="center">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column
align="center"
show-overflow-tooltip
header-align="center"
v-for="column in tableColumns"
:label="column.label"
:prop="column.prop"
:sortable="column.sortable">
</el-table-column>
<!-- <el-table-column align="center" label="工号" prop="loginname"></el-table-column>
<el-table-column align="center" sortable label="姓名" prop="username"></el-table-column>
<el-table-column align="center" sortable label="性别" prop="sex"></el-table-column>
<el-table-column align="center" sortable label="年龄" prop="age"></el-table-column>
<el-table-column align="center" label="联系方式" prop="mobile"></el-table-column>
<el-table-column align="center" sortable label="代表团" prop="dbtname"
show-overflow-tooltip></el-table-column>
<el-table-column align="center" sortable label="所属工会" prop="dbfghname"
show-overflow-tooltip></el-table-column>
<el-table-column align="center" sortable label="所属单位" prop="dbunitname" show-overflow-tooltip>
<template scope="scope">
{{scope.row.dbunitname}}({{scope.row.dbunitid}})
</template>
</el-table-column>
<el-table-column header-align="center" align="center" sortable label="届次"
prop="jdhallname"></el-table-column>
<el-table-column header-align="center" align="center" label="代表身份"
prop="rolename"></el-table-column>
<el-table-column label="职称" prop="technicaltitle" align="center"></el-table-column>-->
<el-table-column header-align="center" align="center" label="操作" width="100">
<template slot-scope="{row}">
<el-dropdown @command="dropdownCommand">
<el-button plain size="mini">
<i class="ti-settings"></i>
<span class="ti-angle-down"></span>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'modify',data:row}">
编辑
</el-dropdown-item>
<el-dropdown-item :command="{type:'doDelete',data:row}">
删除
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #view>
<db-info :active="'1'" ref="DbInfo"></db-info>
</template>
<el-dialog title="新增教代会代表" :visible.sync="dbAddDialogVisible"
@close="delegations=[];formData.role=''">
<el-form :model="formData" ref="AddForm" :rules="rules" label-width="80px">
<el-form-item prop="jdhid" label="届次">
<el-select v-model="formData.jdhid" filterable placeholder="代表所属教代会"
@change="jdhChange">
<el-option v-for="item in allTeacherMeets" :key="item.id"
:label="item.jdhallname"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="dbtid" label="代表团">
<el-select v-model="formData.dbtid" filterable @change="dbtChange">
<el-option v-for="i in delegations" :label="i.dbtname" :key="i.id"
:value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="user" label="用户">
<el-select
v-model="formData.user"
value-key="id"
filterable
remote
multiple
reserve-keyword
@change="$refs.secondedSelect.$children[1].clear()"
ref="secondedSelect"
placeholder="请输入工号或者姓名"
:remote-method="queryNotDbUser">
<el-option
v-for="item in notDbUserList"
:key="item.id"
:label="item.username+'-'+item.loginname+'-'+item.dwname"
:value="item">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="role" label="代表类型">
<el-radio v-model="formData.role" :label="i.value" border v-for="i in representativeRoleOptions">{{i.label}}</el-radio>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dbAddDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doAddDb">确 定</el-button>
</span>
</el-dialog>
<el-dialog title="代表名单调整" :visible.sync="xldDialogVisible">
<el-select v-model="xldFormData.jdhid" @change="xldJdhChange">
<el-option v-for="item in allTeacherMeets" :label="item.jdhallname"
:value="item.id"></el-option>
</el-select>
<div class="pull-right offscreen-right">
<el-select filterable placeholder="请输入工号和姓名"
remote :remote-method="remotexldMethod"
reserve-keyword v-model="xldFormData.userid">
<el-option v-for="u in xldUserList" :label="u.username+'-'+u.loginname"
:value="u.id"></el-option>
</el-select>
<el-button @click="addXldUser">
添加人员
</el-button>
</div>
<el-table :data="xldTableData" height="350">
<el-table-column label="工号" prop="loginname"></el-table-column>
<el-table-column label="姓名" prop="username"></el-table-column>
<el-table-column label="性别" prop="sex"></el-table-column>
<el-table-column label="所属工会" prop="unionname"></el-table-column>
<el-table-column label="所属单位" prop="dwname"></el-table-column>
<el-table-column label="代表团">
<template slot-scope="scope">
<el-select v-model="scope.row.dbtid" clearable filterable>
<el-option v-for="d in delegations" :label="d.dbtname"
:value="d.id"></el-option>
</el-select>
</template>
</el-table-column>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button @click="xldDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doSetxlddbt">确 定</el-button>
</span>
</el-dialog>
<el-dialog title="编辑教代会代表" :visible.sync="modifyDialogVisible" width="50%">
<el-form :model="formData" ref="form" :rules="formRules" label-width="80px">
<el-row>
<el-col :span="12">
<el-form-item prop="username" label="姓名">
<el-input disabled :value="representativeInfo.username"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="loginname" label="工号">
<el-input disabled :value="representativeInfo.loginname"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="jdhid" label="届次">
<el-select v-model="representativeInfo.jdhid" filterable placeholder="届次"
@change="jdhChange">
<el-option v-for="item in allTeacherMeets" :key="item.id"
:label="item.jdhallname"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="dbtid" label="代表团">
<el-select v-model="representativeInfo.dbtid" filterable>
<el-option v-for="i in delegationList" :label="i.dbtname" :key="i.id"
:value="i.id"></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item prop="dbfghid" label="所属工会">-->
<!-- <el-select v-model="representativeInfo.dbfghid" filterable disabled-->
<!-- @change="representativeInfo.dbunitid = '';modifyUnitList = allUnitList.filter(v => representativeInfo.dbfghid?v.unionid === representativeInfo.dbfghid:true)">-->
<!-- <el-option v-for="i in unionList" :label="i.unionname" :key="i.id"-->
<!-- :value="i.id"></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item prop="dbunitid" label="所属单位">-->
<!-- <el-select v-model="representativeInfo.dbunitid" filterable disabled>-->
<!-- <el-option v-for="i in modifyUnitList" :label="i.name" :key="i.id"-->
<!-- :value="i.id"></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item prop="roleid" label="代表类型">
<el-select v-model="representativeInfo.roleid">
<el-option v-for="i in representativeRoleOptions" :label="i.label"
:key="i.value"
:value="i.value"></el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="modifyDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="modifying">确 定</el-button>
</span>
</el-dialog>
</guava>
</div>
<script>
let vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
unionList: [],
allUnitList: [],
unitList: [],
delegations: [],
allTeacherMeets: [],
tableData: [],
pageForm: {
jdhid: '',
dbtid: '',
unitid: '',
dbsf: '',
searchName: 'u.username',
},
selection: [],
dbAddDialogVisible: false,
formData: {
user: []
},
rules: {},
notDbUserList: [],
xldDialogVisible: false,
xldFormData: {
jdhid: '',
userid: ''
},
xldUserList: [],
xldTableData: [],
xldDbtList: [],
uid: '',
formRules: {
name: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
modifyDialogVisible: false,
representativeRoleOptions: [],
representativeInfo: {},
modifyUnitList: [],
/*new*/
allTeacherMeets: [],
delegationList: [],
tableColumns: [
{prop: 'loginname', label: '工号', sortable: true},
{prop: 'username', label: '姓名'},
{prop: 'sex', label: '性别', sortable: true},
{prop: 'age', label: '年龄', sortable: true},
{prop: 'mobile', label: '联系方式'},
{prop: 'dbtname', label: '代表团', sortable: true},
{prop: 'dbfghname', label: '所属工会', sortable: true},
{prop: 'dbunitname', label: '所属单位', sortable: true},
{prop: 'jdhallname', label: '届次', sortable: true},
{prop: 'rolename', label: '代表身份', sortable: true},
],
}
},
components: {
'db-info': httpVueLoader('/components/jdh/dbinfo.vue?v=1.0.0')
},
methods: {
dofpdbt() {
this.$confirm('确定要给当前教代会代表分配代表团吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
await $.post(loc() + '/dofpdbt', {jdhid: this.pageForm.jdhid})
this.$message.success("成功")
this.doSearch()
}).catch(() => {
});
},
/*代表团变化 工会列表也变化*/
async delegationChange(val) {
this.pageForm.unionid = ''
this.pageForm.unitid = ''
this.unionList = await getUnions(val)
},
async modifying() {
const response = await $.post(loc() + '/modifyRepresentativeInfo', this.representativeInfo)
AssertResponseMessage({
response,
success: () => {
this.modifyDialogVisible = false
this.pageData()
}
})
},
async modify(id) {
const resp = await $.get(loc() + '/representativeInfo/' + id)
AssertResponseMessage2({
response: resp,
success: ({data}) => {
this.modifyUnitList = this.allUnitList;
this.representativeInfo = data
this.modifyDialogVisible = true
},
})
},
dropdownCommand(command) {
const {type, data} = command
if (type === 'view') {
this.openView(data)
} else if (type === 'doDelete') {
this.doDelete(data)
} else if (type === 'modify') {
this.modify(data.id)
}
},
openView(row) {
const {dbid} = row
this.$refs.DbInfo.openView(dbid)
this.$refs.guava.view()
},
async jdhChange(val) {
this.delegations = await getDbt(val)
},
handleSelectionChange(val) {
this.selection = val
},
doDelete(obj) {
this.$confirm('此操作将删除用户' + obj.username + '的正式代表身份!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
let data = []
data.push({id: obj.id, dbid: obj.dbid, jdhid: obj.jdhid})
$.post(base + '/platform/jdh/db/dbgl/doDelete', {data: data}).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.pageData()
}
})
}).catch(() => {
})
},
doDeleteMany() {
if (this.selection.length === 0) {
this.$notify.warning({title: '警告', message: "请在左侧勾选需要删除的代表"});
return
}
this.$confirm('此操作将删除选中用户的正式代表身份!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
let data = []
for (let obj of this.selection) {
data.push({id: obj.id, dbid: obj.dbid, jdhid: obj.jdhid})
}
$.post(base + '/platform/jdh/db/dbgl/doDelete', {data: data}).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.doSearch()
}
})
}).catch(() => {
})
},
queryNotDbUser(key) {
if (this.formData.dbtid === '') {
this.$message.info('请先选择代表团')
return
}
let data = this.formData
data.keyword = key
$.post(base + '/platform/jdh/db/scmd/queryNotDbUser', data).then(res => {
if (res.code === 0) {
this.notDbUserList = QC(this.formData.user, res.data.list, 'id')
}
})
},
dbtChange() {
this.formData.user = []
this.notDbUserList = []
},
async openAddDb() {
if (this.allTeacherMeets) {
this.formData.jdhid = this.allTeacherMeets[0].id
this.delegations = await getDbt(this.allTeacherMeets[0].id)
}
this.formData.dbtid = ''
this.formData.user = []
this.notDbUserList = []
if (this.pageForm.dbtid !== "") {
this.$set(this.formData, "dbtid", this.pageForm.dbtid)
}
this.dbAddDialogVisible = true
},
async doAddDb() {
const data = await $.post("/platform/jdh/db/dbgl/doAdd", this.formData)
this.$message.success(data.msg)
/*this.delegations = await getDbt(this.formData.jdhid)*/
/* this.$set(this.pageForm, "jdhid", this.formData.jdhid)
await this.jdhChange()*/
this.pageData()
this.dbAddDialogVisible = false
},
async openSetXld() {
if (this.allTeacherMeets) {
this.xldFormData.jdhid = this.allTeacherMeets[0].id
// this.xldDbtList = await getDbtList(this.allTeacherMeets[0].id)
this.delegations = await getDbt(this.allTeacherMeets[0].id)
}
this.xldFormData.userid = ''
this.xldUserList = []
this.xldTableData = []
this.xldDialogVisible = true
},
remotexldMethod(key) {
if (this.xldFormData.jdhid === '') {
this.$message.info('请先选择教代会!')
return
}
if (key !== '') {
$.get(base + '/platform/jdh/db/dbgl/queryXldUser', {
query: key,
jdhid: this.xldFormData.jdhid
}).then(res => {
if (res.code === 0) {
this.xldUserList = res.data.list
}
})
}
},
addXldUser() {
if (this.xldFormData.userid === '') {
this.$message.info('请先选择用户!')
return
}
let u = this.xldTableData.find(u => {
return u.id === this.xldFormData.userid
})
if (u) {
this.$message.info('不要重复添加')
return
}
let user = this.xldUserList.find(u => {
return u.id === this.xldFormData.userid
})
this.xldTableData.push(user)
this.xldFormData.userid = ''
this.xldUserList = []
},
async xldJdhChange(jdhid) {
// this.xldDbtList = await getDbtList(jdhid)
this.delegations = await getDbt(jdhid)
},
doSetxlddbt() {
let flag = true
for (let o of this.xldTableData) {
if (!('dbtid' in o)) {
flag = false
break
}
}
if (!flag) {
this.$message.info('请先选择要分配的代表团!')
return
}
$.post(base + '/platform/jdh/db/dbgl/fpXldToDbt', {
user: this.xldTableData,
jdhid: this.xldFormData.jdhid
}).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.xldTableData = []
this.pageData()
}
})
},
async getRepresentativeRoleOptions() {
const {code, data} = await $.get(loc() + '/representativeRoleOptions')
if (!code) {
this.representativeRoleOptions = data
}
}
},
async created() {
this.allTeacherMeets = await getAllJdh()
if (this.allTeacherMeets && this.allTeacherMeets.length > 0) {
const lastTeacherMeeting = this.allTeacherMeets[0].id
this.pageForm.jdhid = lastTeacherMeeting
this.delegationList = await getDbt(lastTeacherMeeting)
this.delegations = await getDbt(lastTeacherMeeting)
this.unionList = await getUnion()
this.allUnitList = await getUnit()
this.unitList = clone(this.allUnitList)
this.pageData()
}
await this.getRepresentativeRoleOptions()
}
})
</script>
<!--#
}
#-->