first commit

This commit is contained in:
2026-09-09 09:14:28 +08:00
commit 5343198112
5199 changed files with 1052895 additions and 0 deletions
@@ -0,0 +1,226 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-form .el-select {
width: 100% !important;
}
.wp-upload .wp-upload-button-select-file {
margin: 0 !important;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select placeholder="查询" slot="prepend" style="width: 100px;"
v-model="pageForm.searchName">
<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 filterable placeholder="请选择教代会" style="width:180px;" v-model="pageForm.teacherMeetId">
<el-option :key="item.id" :label="item.jdhallname" :value="item.id"
v-for="item in teacherMeets"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select @change="unionChange" clearable filterable placeholder="请选择工会"
v-model="pageForm.unionId">
<el-option :label="item.unionname" :value="item.id"
v-for="item in unionList">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select clearable filterable placeholder="请选择单位" v-model="pageForm.unitId">
<el-option
:label="item.name"
:value="item.id"
v-for="item in unitList">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button @click="doSearch" icon="el-icon-search" type="primary"></el-button>
</div>
<div class="pull-right offscreen-right">
<el-button @click="doAuditMany" icon="el-icon-check" size="medium" type="primary">批量通过</el-button>
</div>
<div class="pull-right offscreen-right mr25">
<el-radio-group @change="doSearch" size="medium" v-model="pageForm.isAudit">
<el-radio-button label="all">全部</el-radio-button>
<el-radio-button label="true">已审查</el-radio-button>
<el-radio-button label="false">待审查</el-radio-button>
</el-radio-group>
</div>
</el-card>
<el-card class="mt20" shadow="never">
<el-table :data="tableData" :row-key="(row)=>row.id" @selection-change="(val)=>{selections = val}"
@sort-change='pageOrder'>
<el-table-column reserve-selection type="selection" width="55"></el-table-column>
<el-table-column align="center" header-align="center" label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column align="center" label="姓名" prop="userName" width="80"></el-table-column>
<el-table-column align="center" label="工号" prop="loginName"></el-table-column>
<el-table-column align="center" label="性别" prop="sex" width="50"></el-table-column>
<el-table-column align="center" label="民族" prop="nation"></el-table-column>
<el-table-column align="center" label="政治面貌" prop="politicalOutlook"
show-overflow-tooltip></el-table-column>
<el-table-column align="center" label="学历" prop="education"></el-table-column>
<el-table-column align="center" label="技术职称" prop="technicalTitle"></el-table-column>
<el-table-column align="center" label="年龄" prop="age" width="50"></el-table-column>
<el-table-column align="center" label="教学科研及双肩挑人员" prop="twoWork">
<template scope="{row}">
<el-checkbox :style="{'pointer-events':row.stateCode===0?'auto':'none'}"
v-model="row.twoWork"></el-checkbox>
</template>
</el-table-column>
<el-table-column align="center" label="教代会代表" prop="isJdh">
<template scope="{row}">
<el-checkbox :style="{'pointer-events':row.stateCode===0?'auto':'none'}"
v-model="row.isJdh"></el-checkbox>
</template>
</el-table-column>
<el-table-column align="center" label="工代会代表" prop="isGdh">
<template scope="{row}">
<el-checkbox :style="{'pointer-events':row.stateCode===0?'auto':'none'}"
v-model="row.isGdh"></el-checkbox>
</template>
</el-table-column>
<el-table-column label="备注" prop="bz" show-overflow-tooltip></el-table-column>
<el-table-column label="分工会" prop="unionname" show-overflow-tooltip></el-table-column>
<el-table-column label="状态" prop="stateName" sortable></el-table-column>
<el-table-column align="center" label="操作" v-if="pageForm.isAudit!=='true'" width="150">
<template slot-scope="{row}">
<el-button @click="doAudit(row.id,true)" size="mini" type="success"
v-if="row.stateCode===100">通过
</el-button>
<el-button @click="doAudit(row.id,false)" size="mini" type="danger"
v-if="row.stateCode===100">拒绝
</el-button>
<!-- <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 v-if="row.stateCode===100"-->
<!-- :command="{type:'doAudit',id:row.id,result:true}">-->
<!-- 通过-->
<!-- </el-dropdown-item>-->
<!-- <el-dropdown-item v-if="row.stateCode===100"-->
<!-- :command="{type:'doAudit',id:row.id,result:false}">-->
<!-- 拒绝-->
<!-- </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="delegateInfo"></db-info>
</template>
</guava>
</div>
<script>
let vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'db-info': httpVueLoader('/components/jdh/dbinfo.vue')
},
data() {
return {
teacherMeets: [],
tableData: [],
unionList: [],
unitList: [],
pageForm: {
isAudit: false
},
selections: []
}
},
methods: {
dropdownCommand(command) {
const {type, id, result} = command
switch (type) {
case 'view': {
this.$refs.guava.view()
this.$refs.delegateInfo.openView('00mtsco13mgitql1pdblo7v5li')
break
}
case 'doAudit': {
this.doAudit([id], result)
break
}
}
},
async doAudit(id, result) {
let ids = [].concat(id)
console.log(ids)
const resp = await $.post('/platform/teacherMeet/delegate/audit/doAudit', {ids, result})
if (resp.code === 0) {
this.$notify.success(resp.msg)
this.doSearch()
} else {
this.$notify.error(resp.msg)
}
},
doAuditMany() {
if (this.selections.length === 0) {
this.$notify.warning('请先勾选需要批量审核的数据')
return
}
const ids = this.selections.map(v => v.id)
this.doAudit(ids, true)
this.selections = []
},
async unionChange(val) {
this.$set(this.pageForm, 'unitId', null)
this.unitList = await getUnit(val)
}
},
async created() {
this.teacherMeets = await teacherMeet.getOpenJdh()
if (this.teacherMeets.length > 0) {
this.pageForm.teacherMeetId = this.teacherMeets[0].id
}
this.unionList = await getUnion()
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,609 @@
<!--#
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 clearable placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select placeholder="查询" slot="prepend" style="width: 100px;"
v-model="pageForm.searchName">
<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 @change="jdhChange" clearable filterable placeholder="请选择教代会"
v-model="pageForm.jdhid">
<el-option
:key="item.id"
:label="item.jdhallname"
:value="item.id"
v-for="item in allTeacherMeets">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select @change="delegationChange" clearable filterable placeholder="请选择代表团"
v-model="pageForm.dbtid">
<el-option
:key="item.id"
:label="item.dbtname"
:value="item.id"
v-for="item in delegations">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select
@change="unitList = allUnitList.filter(v => pageForm.unionid?v.unionid === pageForm.unionid:true)"
clearable filterable placeholder="请选择工会"
v-model="pageForm.unionid">
<el-option
:key="item.id"
:label="item.unionname"
:value="item.id"
v-for="item in unionList">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select clearable filterable placeholder="请选择单位" v-model="pageForm.unitid">
<el-option
:key="item.id"
:label="item.name"
:value="item.id"
v-for="item in unitList">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select clearable placeholder="请选择代表身份" v-model="pageForm.dbsf">
<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 @click="doSearch" icon="el-icon-search" type="primary"></el-button>
</div>
<el-row class="mt20">
<div class="btn-group tool-button">
<el-button @click="doDeleteMany" icon="el-icon-delete" size="medium" type="danger">批量删除
</el-button>
</div>
<div class="btn-group tool-button">
<el-button @click="openAddDb" icon="el-icon-plus" size="medium" type="success">新增代表
</el-button>
</div>
<div class="btn-group tool-button">
<el-button @click="openSetXld" size="medium" type="warning">
<i class="el-icon-sort" style="transform: rotate(90deg);"></i>
代表调整
</el-button>
</div>
<div class="btn-group tool-button">
<el-button @click="dofpdbt" size="medium" type="warning">
一键分配代表团
</el-button>
</div>
</el-row>
</el-card>
<el-card class="mt20" shadow="never">
<el-table :data="tableData" @selection-change="handleSelectionChange" @sort-change='pageOrder'
row-key="id">
<el-table-column reserve-selection type="selection" width="55"></el-table-column>
<el-table-column align="center" header-align="center" label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column align="center" label="工号" prop="loginname"></el-table-column>
<el-table-column align="center" label="姓名" prop="username" sortable></el-table-column>
<el-table-column align="center" label="性别" prop="sex" sortable></el-table-column>
<el-table-column align="center" label="联系方式" prop="mobile"></el-table-column>
<el-table-column align="center" label="代表团" prop="dbtname" show-overflow-tooltip
sortable></el-table-column>
<el-table-column align="center" label="所属工会" prop="dbfghname" show-overflow-tooltip
sortable></el-table-column>
<el-table-column align="center" label="所属单位" prop="dbunitname" show-overflow-tooltip sortable>
<template scope="scope">
{{scope.row.dbunitname}}({{scope.row.dbunitid}})
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="届次" prop="jdhallname"
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="代表身份"
prop="rolename"></el-table-column>
<el-table-column align="center" header-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 :visible.sync="dbAddDialogVisible" @close="formData.role=''" title="新增教代会代表">
<el-form :model="formData" :rules="rules" label-width="80px" ref="AddForm">
<el-form-item label="届次" prop="jdhid">
<el-select @change="jdhChange" filterable placeholder="代表所属教代会" v-model="formData.jdhid">
<el-option :key="item.id" :label="item.jdhallname" :value="item.id"
v-for="item in allTeacherMeets"></el-option>
</el-select>
</el-form-item>
<el-form-item label="代表团" prop="dbtid">
<el-select @change="dbtChange" filterable v-model="formData.dbtid">
<el-option :key="i.id" :label="i.dbtname" :value="i.id"
v-for="i in delegations"></el-option>
</el-select>
</el-form-item>
<el-form-item label="代表类型" prop="role">
<el-select v-model="formData.role">
<el-option :key="i.value" :label="i.label" :value="i.value"
v-for="i in representativeRoleOptions"></el-option>
</el-select>
</el-form-item>
<el-form-item label="用户" prop="user">
<el-select
:remote-method="queryNotDbUser"
@change="$refs.secondedSelect.$children[1].clear()"
filterable
multiple
placeholder="请输入工号或者姓名"
ref="secondedSelect"
remote
reserve-keyword
v-model="formData.user"
value-key="id">
<el-option
:key="item.id"
:label="item.username+'-'+item.loginname+'-'+item.dwname"
:value="item"
v-for="item in notDbUserList">
</el-option>
</el-select>
</el-form-item>
</el-form>
<span class="dialog-footer" slot="footer">
<el-button @click="dbAddDialogVisible = false">取 消</el-button>
<el-button @click="doAddDb" type="primary">确 定</el-button>
</span>
</el-dialog>
<el-dialog :visible.sync="xldDialogVisible" title="代表名单调整">
<el-select @change="xldJdhChange" v-model="xldFormData.jdhid">
<el-option :label="item.jdhallname" :value="item.id" v-for="item in allTeacherMeets"></el-option>
</el-select>
<div class="pull-right offscreen-right">
<el-select :remote-method="remotexldMethod" filterable
placeholder="请输入工号和姓名" remote
reserve-keyword v-model="xldFormData.userid">
<el-option :label="u.username+'-'+u.loginname" :value="u.id"
v-for="u in xldUserList"></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 clearable filterable v-model="scope.row.dbtid">
<el-option :label="d.dbtname" :value="d.id" v-for="d in delegations"></el-option>
</el-select>
</template>
</el-table-column>
</el-table>
<span class="dialog-footer" slot="footer">
<el-button @click="xldDialogVisible = false">取 消</el-button>
<el-button @click="doSetxlddbt" type="primary">确 定</el-button>
</span>
</el-dialog>
<el-dialog :visible.sync="modifyDialogVisible" title="编辑教代会代表" width="50%">
<el-form :model="formData" :rules="formRules" label-width="80px" ref="form">
<el-row>
<el-col :span="12">
<el-form-item label="姓名" prop="username">
<el-input :value="representativeInfo.username" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工号" prop="loginname">
<el-input :value="representativeInfo.loginname" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="届次" prop="jdhid">
<el-select @change="jdhChange" filterable placeholder="届次"
v-model="representativeInfo.jdhid">
<el-option :key="item.id" :label="item.jdhallname" :value="item.id"
v-for="item in allTeacherMeets"></el-option>
</el-select>
</el-form-item>
<el-form-item label="代表团" prop="dbtid">
<el-select filterable v-model="representativeInfo.dbtid">
<el-option :key="i.id" :label="i.dbtname" :value="i.id"
v-for="i in delegationList"></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 label="代表类型" prop="roleid">
<el-select v-model="representativeInfo.roleid">
<el-option :key="i.value" :label="i.label" :value="i.value"
v-for="i in representativeRoleOptions"></el-option>
</el-select>
</el-form-item>
</el-form>
<span class="dialog-footer" slot="footer">
<el-button @click="modifyDialogVisible = false">取 消</el-button>
<el-button @click="modifying" type="primary">确 定</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: [],
}
},
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(row) {
const resp = await $.get(loc() + '/representativeInfo/' + row.id)
AssertResponseMessage2({
response: resp,
success: ({data}) => {
this.modifyUnitList = this.allUnitList;
this.representativeInfo = data
this.modifyDialogVisible = true
},
})
this.delegationList = await getDbt(row.jdhid)
},
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)
}
},
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.$message.info('请先选择')
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.pageForm.dbtid
this.formData.user = []
this.notDbUserList = []
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.delegations = await getDbt(lastTeacherMeeting)
this.delegationList = await getDbt(lastTeacherMeeting)
this.unionList = await getUnion()
this.allUnitList = await getUnit()
this.unitList = clone(this.allUnitList)
this.pageData()
}
await this.getRepresentativeRoleOptions()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,239 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-form .el-select {
width: 100%;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<transition name="el-zoom-in-center">
<div v-show="tabShow">
<el-card shadow="never">
<div class="btn-group tool-button">
<el-input clearable placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select placeholder="查询" slot="prepend" style="width: 100px;"
v-model="pageForm.searchName">
<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 @change="jdhChange" clearable filterable placeholder="请选择届次"
v-model="pageForm.jdhid">
<el-option
:key="item.id"
:label="item.jdhallname"
:value="item.id"
v-for="item in jdhList">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select @change="delegationChange" clearable filterable placeholder="请选择代表团"
v-model="pageForm.dbtid">
<el-option
:key="item.id"
:label="item.dbtname"
:value="item.id"
v-for="item in delegations">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select
@change="unitList = allUnitList.filter(v => pageForm.unionid?v.unionid === pageForm.unionid:true)"
clearable filterable placeholder="请选择工会"
v-model="pageForm.unionid">
<el-option
:key="item.id"
:label="item.unionname"
:value="item.id"
v-for="item in unionList">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select clearable filterable placeholder="请选择单位" v-model="pageForm.unitid">
<el-option
:key="item.id"
:label="item.name"
:value="item.id"
v-for="item in unitList">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select clearable placeholder="请选择代表身份" v-model="pageForm.dbsf">
<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 @click="doSearch" icon="el-icon-search" type="primary"></el-button>
</div>
<el-row class="mt5 mb5">
<template
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('tamange')}">
<div class="btn-group tool-button">
<el-button @click="exportList" icon="el-icon-download" size="medium">导出Excel</el-button>
<el-button @click="downloadCommand({id:pageForm.jdhid})" icon="el-icon-download">
导出名单
</el-button>
<!-- <el-dropdown @command="downloadCommand">-->
<!-- <el-button icon="el-icon-download">导出名单 <i class="el-icon-arrow-down el-icon&#45;&#45;right"></i>-->
<!-- </el-button>-->
<!-- <el-dropdown-menu slot="dropdown">-->
<!-- <el-dropdown-item v-for="item in jdhList" :command="{id:item.id}">{{item.jdhallname}}-->
<!-- </el-dropdown-item>-->
<!-- </el-dropdown-menu>-->
<!-- </el-dropdown>-->
</div>
</template>
</el-row>
</el-card>
<el-card class="mt20" shadow="never">
<el-table :data="tableData" @sort-change='pageOrder'>
<el-table-column align="center" header-align="center" label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="工号"
prop="loginname"></el-table-column>
<el-table-column align="center" header-align="center" label="姓名" prop="username"
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="性别" prop="sex"
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="联系方式"
prop="mobile"></el-table-column>
<el-table-column align="center" header-align="center" label="代表团" prop="dbtname"
show-overflow-tooltip></el-table-column>
<el-table-column align="center" header-align="center" label="所属工会" prop="dbunitname"
show-overflow-tooltip sortable>
<template scope="scope">
{{scope.row.unionname}}({{scope.row.unioncode}})
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="所属单位" prop="dbunitname"
show-overflow-tooltip
sortable>
<template scope="scope">
{{scope.row.dbunitname}}({{scope.row.dbunitid}})
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="届次" prop="jdhallname"
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="代表身份"
prop="rolename"></el-table-column>
<el-table-column align="center" header-align="center" label="操作" width="100">
<template slot-scope="{row}">
<el-button @click="openView(row)" size="mini">查看</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</div>
</transition>
<template #view>
<db-info :active="'1'" ref="DbInfo"></db-info>
</template>
</guava>
</div>
<script>
let vue = new Vue({
el: '#app',
data() {
return {
tabShow: true,
dbtList: [],
jdhList: [],
unitList: [],
allUnitList: [],
unionList: [],
tableData: [],
delegations: [],
pageForm: {
...getPageForm(),
jdhid: '',
unitid: '',
searchName: 'u.username',
dbtid: '',
dbsf: ''
},
dbModal: false,
uid: ''
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'db-info': httpVueLoader('/components/jdh/dbinfo.vue')
},
methods: {
async delegationChange(val) {
this.pageForm.unionid = ''
this.pageForm.unitid = ''
this.unionList = await getUnions(val)
},
exportList() {
if (!this.pageForm.jdhid) {
this.$notify({
title: '警告',
message: '请选择教代会',
type: 'warning'
});
return
}
location.href = '/platform/jdh/db/dbyl/exportList?jdhid=' + this.pageForm.jdhid + '&dbtid=' + this.pageForm.dbtid
},
downloadCommand(command) {
const {id} = command
location.href = '/platform/jdh/db/dbyl/downloadDbList?jdh_id=' + 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
},
...pageSomeThing
},
async created() {
this.jdhList = await getAllJdh()
if (this.jdhList.length > 0) {
this.pageForm.jdhid = this.jdhList[0].id
this.delegations = await getDbt(this.jdhList[0].id)
this.pageData()
}
this.unionList = await getUnion();
this.allUnitList = await getUnit();
this.unitList = clone(this.allUnitList);
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,245 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
input[type="file"] {
display: none
}
.el-input-number input {
text-align: left !important;
}
.el-loading-mask {
z-index: 30000 !important;
}
</style>
<div id="app" style="padding: 20px 40px" v-cloak>
<el-card class="box-card">
<div class="clearfix" slot="header">
<span style="color: #409EFF;font-size: 18px">预选代表填报</span>
</div>
<div>
<el-form label-width="100px">
<el-form-item class="view-header" label="填写申请信息&emsp;" label-width="135px">
</el-form-item>
</el-form>
<el-form :model="formData" :rules="formRules" label-position="right" label-suffix="" label-width="120px"
ref="form">
<el-row gutter="60">
<el-col :span="12">
<el-form-item label="姓名" prop="manager_name">
<el-input disabled type="text" v-model="formData.username"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工号" prop="apply_time">
<el-input disabled type="text" v-model="formData.loginname"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="60">
<el-col :span="12">
<el-form-item label="联系方式" prop="mobile">
<el-input maxlength="30" type="text"
v-model="formData.mobile"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="申请届次" prop="jdhid">
<el-select @change="jdhChange" clearable filterable placeholder="请选择教代会"
v-model="formData.jdhid">
<el-option
:key="item.id"
:label="item.jdhallname"
:value="item.id"
v-for="item in jdhList">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="代表团" prop="dbtid">
<el-select clearable filterable placeholder="请选择代表团" v-model="formData.dbtid">
<el-option
:key="item.id"
:label="item.dbtname"
:value="item.id"
v-for="item in delegations">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="60">
<el-col :span="12">
<el-form-item label="填报时间" prop="apply_time">
<el-input disabled type="text" v-model="formData.apply_time"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="民族" prop="nation">
<el-input maxlength="30" type="text"
v-model="formData.nation"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="60">
<el-col :span="12">
<el-form-item label="职称" prop="jobTitle">
<el-input maxlength="30" type="text"
v-model="formData.jobTitle"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="职务" prop="position">
<el-input maxlength="30" type="text"
v-model="formData.position"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-divider class="dia" content-position="left"><span style="color: #3ea1ec;">近几年奖惩情况</span>
</el-divider>
<el-form-item class="is-required" label="" prop="vita">
<div id="vita"></div>
</el-form-item>
<el-form-item label="附&emsp;&emsp;件" prop="files">
<file-upload :files.sync="formData.files" card></file-upload>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button @click="doAdd()" type="primary">确 定</el-button>
</div>
</div>
</el-card>
</div>
<script>
let E = window.wangEditor
let vita = null
const vue = new Vue({
el: '#app',
data() {
let validAc = (rule, value, callback) => {
if (!this.formData.vita || !dd3s.html2txt(this.formData.vita)) {
callback(new Error('请填写近几年奖惩情况'));
} else {
callback();
}
};
return {
jdhList: [],
delegations: [],
userIsExist: "",
dbtList: [],
formData: {},
formRules: {
jdhid: [{required: true, message: '必填', trigger: ['blur', 'change']}],
dbtid: [{required: true, message: '必填', trigger: ['blur', 'change']}],
files: [{required: true, message: '必填', trigger: ['blur', 'change']}],
vita: [{validator: validAc, trigger: ['blur', 'change']}],
}
}
},
components: {
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
},
methods: {
doAdd() {
this.$refs["form"].validate(async (valid) => {
const flag = await this.getdb()
console.log(flag)
if (!flag) {
this.$notify({
title: '警告',
message: '您已填报,请勿重复提交!',
type: 'warning'
});
return
}
if (valid) {
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
});
const resp = await $.post(loc() + "/doAdd", {
jdh_db: JSON.stringify(this.formData),
user: JSON.stringify(this.formData)
})
closeLoadingFunc(loading, resp, async () => {
window.location.href = '/platform/jdh/db/preselection'
}, (data, msg) => {
this.$message.error(msg);
})
}
})
},
async jdhChange(val) {
this.formData.dbtid = ''
this.delegations = await getDbt(val)
},
async getdb() {
const jdhid = this.formData.jdhid
const {code, data} = await $.post(base + '/platform/jdh/db/preselection/getdb', {jdhid})
return code ? false : data == 0
},
flush() {
this.formData = {
jdhid: '',
dbtid: '',
files: [],
id: '${@shiro.getPrincipalProperty("id")}',
username: '${@shiro.getPrincipalProperty("username")}',
apply_time: moment().format('YYYY-MM-DD'),
loginname: '${@shiro.getPrincipalProperty("loginname")}',
nation: '${@shiro.getPrincipalProperty("nation")}',
jobTitle: '${@shiro.getPrincipalProperty("jobTitle")}',
position: '${@shiro.getPrincipalProperty("position")}',
mobile: '${@shiro.getPrincipalProperty("mobile")}',
}
this.$nextTick(() => {
$("#vita").html("")
vita = new E("#vita")
vita.config.onchange = (html) => {
this.formData.vita = html
}
vita.create()
vita.txt.html('${@shiro.getPrincipalProperty("vita")}')
})
},
},
async created() {
this.jdhList = await getOpenJdh()
if (this.jdhList.length > 0) {
this.formData.jdhid = this.jdhList[0].id
this.delegations = await getDbt(this.jdhList[0].id)
}
this.flush()
// console.log()
// if(!await this.getdb()){
// alert(1)
// }
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,364 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-form .el-select {
width: 100% !important;
}
.wp-upload .wp-upload-button-select-file {
margin: 0 !important;
}
.el-transfer {
display: flex;
align-items: center;
}
.el-transfer-panel {
flex: 2.5;
}
.el-transfer__buttons {
flex: 1;
text-align: center;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select placeholder="查询" slot="prepend" style="width: 100px;"
v-model="pageForm.searchName">
<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 filterable placeholder="请选择教代会" style="width:180px;" v-model="pageForm.teacherMeetId">
<el-option :key="item.id" :label="item.jdhallname" :value="item.id"
v-for="item in teacherMeets"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button @click="doSearch" icon="el-icon-search" type="primary"></el-button>
</div>
<div class="btn-group tool-button pull-right offscreen-right">
<el-button @click="openPreselectionDialog" icon="el-icon-plus" size="medium" type="primary">预选
</el-button>
<el-button @click="doConfirmMany" icon="el-icon-plus" size="medium" type="primary">批量上报</el-button>
<el-button @click="doExport" icon="el-icon-download" size="medium" type="primary">导出</el-button>
</div>
</el-card>
<el-card class="mt20" shadow="never">
<el-table :data="tableData" @selection-change="(val)=>{tableSelections=val}" @sort-change='pageOrder'
ref="multipleTable">
<el-table-column
:selectable="(row)=>{return row.stateCode===0}"
type="selection"
width="55">
</el-table-column>
<el-table-column align="center" header-align="center" label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="姓名" prop="userName"
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="工号" prop="loginName"></el-table-column>
<el-table-column align="center" header-align="center" label="性别" prop="sex"
sortable>
<template scope="{row}">
<el-select v-if="row.stateCode===0" v-model="row.sex">
<el-option value="男"></el-option>
<el-option value="女"></el-option>
</el-select>
<span v-else>{{row.sex}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="民族" prop="nation" width="100">
<template scope="{row}">
<el-select filterable v-if="row.stateCode===0" v-model="row.nation">
<el-option :key="n" :label="n" :value="n" v-for="n in nation"></el-option>
</el-select>
<span v-else>{{row.stateCode}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="政治面貌"
prop="politicalOutlook" show-overflow-tooltip>
<template scope="{row}">
<el-input maxlength="20" v-if="row.stateCode===0" v-model="row.politicalOutlook"></el-input>
<span v-else>{{row.politicalOutlook}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="学历" prop="education"
show-overflow-tooltip
width="150px">
<template scope="{row}">
<dict-select code="Education" v-if="row.stateCode===0"
v-model="row.education"></dict-select>
<span v-else>{{row.education}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="行政职务" prop="administrativeTitle"
width="100">
<template scope="{row}">
<el-input v-if="row.stateCode===0" v-model="row.administrativeTitle"></el-input>
<span v-else>{{row.administrativeTitle}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="技术职务" prop="technicalTitle"
width="100">
<template scope="{row}">
<el-input v-if="row.stateCode===0" v-model="row.technicalTitle"></el-input>
<span v-else>{{row.technicalTitle}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="年龄<=40" prop="age" width="80px">
<template scope="{row}">
<el-input v-if="row.stateCode===0" v-model="row.age"></el-input>
<span v-else>{{row.age}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="教学科研及双肩挑人员" prop="twoWork">
<template scope="{row}">
<el-checkbox :style="{'pointer-events':row.stateCode===0?'auto':'none'}"
v-model="row.twoWork"></el-checkbox>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="教代会代表"
prop="isJdh">
<template scope="{row}">
<el-checkbox :style="{'pointer-events':row.stateCode===0?'auto':'none'}"
v-model="row.isJdh"></el-checkbox>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="工代会代表" prop="isGdh">
<template scope="{row}">
<el-checkbox :style="{'pointer-events':row.stateCode===0?'auto':'none'}"
v-model="row.isGdh"></el-checkbox>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="备注" prop="bz"
width="100">
<template scope="{row}">
<el-input v-if="row.stateCode===0" v-model="row.bz"></el-input>
<span v-else>{{row.bz}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="状态" prop="dbzt" sortable>
<template scope="{row}">
{{row.stateName}}
</template>
</el-table-column>
<el-table-column align="center" label="操作" width="200">
<template slot-scope="{row}">
<el-button @click="doConfirm(row)" size="mini" type="primary" v-if="row.stateCode===0">上报
</el-button>
<el-button @click="doRevoke(row)" size="mini" type="warning" v-if="row.stateCode===100">撤回
</el-button>
<el-button @click="doDelete(row)" size="mini" type="danger" v-if="row.stateCode===0">删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</template>
</guava>
<el-dialog
:close-on-click-modal="false"
:visible.sync="dialogVisible"
title="添加人员"
width="45%"
>
<el-transfer
:data="userData"
:filter-method="filterMethod"
:props="{key: 'id',label: 'name'}"
:right-default-checked="rightChecked"
:titles="['可报人员名单', '当前选择']"
@change="rightChange"
@right-check-change="rightCheckChange"
filterable
ref="transfer"
v-model="userValue">
</el-transfer>
<span class="dialog-footer" slot="footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button @click="addPreselectionDb" type="primary">确 定</el-button>
</span>
</el-dialog>
</div>
<script>
let vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
pageForm: {
searchName: "u.username",
teacherMeetId: null
},
userValue: [],
userData: [],
rightChecked: [],
dialogVisible: false,
teacherMeets: [],
tableData: [],
tableSelections: []
}
},
methods: {
async doConfirmMany() {
if (this.tableSelections.length === 0) {
this.$notify.warning('请先勾选需要上报的代表!')
return
}
const keys = ['sex', 'nation', 'politicalOutlook', 'education', 'administrativeTitle', 'technicalTitle',
'age']
const flag = this.tableSelections.some(row => {
if (keys.some(v => row[v] === '' || row[v] == null)) {
this.$notify.warning('推选代表的信息不完整,请完善!')
return true
}
if (!row.isJdh && !row.isGdh) {
this.$notify.warning('请确认是教代会还是工代会代表!')
return true
}
return false
})
if (flag) {
return
}
const resp = await $.post(loc() + '/doCofirmMany', {data: JSON.stringify(this.tableSelections)})
this.doSearch()
this.$notify.success(resp.msg)
},
async doConfirm(row) {
const keys = ['sex', 'nation', 'politicalOutlook', 'education', 'administrativeTitle', 'technicalTitle',
'age']
if (keys.some(v => row[v] === '' || row[v] == null)) {
this.$notify.warning('推选代表的信息不完整,请完善!')
return
}
if (!row.isJdh && !row.isGdh) {
this.$notify.warning('请确认是教代会还是工代会代表!')
return;
}
const resp = await $.post(loc() + '/doUpdate', row)
this.doSearch()
this.$notify.success(resp.msg)
},
async doRevoke(row) {
const resp = await $.post(loc() + '/doRevoke', {id: row.id})
this.doSearch()
this.$notify.success(resp.msg)
},
async doDelete(row) {
const resp = await $.post(loc() + '/doDelete', {id: row.id})
this.doSearch()
this.$notify.success(resp.msg)
},
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'delete') {
this.doDelete(data.id)
}
},
handleSelectionChange(val) {
this.multipleSelection = val;
},
rightCheckChange(v, v2) {
this.rightChecked = v
},
filterMethod(query, item) {
return item.name.indexOf(query) > -1;
},
async openPreselectionDialog() {
this.userValue = []
this.userData = []
const {data} = await $.get(loc() + "/getUnionUser", {teacherMeetId: this.pageForm.teacherMeetId})
data.userData.forEach(v => {
this.userData.push({id: v.id, name: v.username + "-" + v.loginname})
})
/* data.userValue.forEach(v => {
this.userValue.push(v.userId)
})*/
this.dialogVisible = true
},
async addPreselectionDb() {
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
});
const resp = await $.get(loc() + "/addPreselectionDb", {
userValue: JSON.stringify(this.userValue),
teacherMeetId: this.pageForm.teacherMeetId
})
closeLoadingFunc(loading, resp, async () => {
this.pageData()
this.dialogVisible = false
}, (data, msg) => {
})
},
async pageData() {
const {data} = await $.get(loc() + '/pageData', this.pageForm)
data.forEach(v => {
v.jdhdb = v.dbzt === 2
})
this.tableData = data
},
rightChange(v) {
},
doExport() {
if (!this.pageForm.teacherMeetId) {
this.$notify({
title: '警告',
message: '请选择教代会',
type: 'warning'
});
return
}
location.href = '/platform/jdh/db/dbyl/doExport?jdhid=' + this.pageForm.teacherMeetId
},
},
components: {
'db-info': httpVueLoader('/components/jdh/dbinfo.vue'),
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue'),
},
async created() {
this.teacherMeets = await teacherMeet.getOpenJdh()
if (this.teacherMeets && this.teacherMeets.length > 0) this.$set(this.pageForm, "teacherMeetId", this.teacherMeets[0].id)
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,251 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava ref="guava">
<transition name="el-zoom-in-center">
<div v-show="tabShow">
<el-card shadow="never">
<div class="btn-group tool-button">
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select placeholder="查询" slot="prepend" style="width: 100px;"
v-model="pageForm.searchName">
<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 @change="jdhChange" clearable filterable placeholder="请选择教代会"
v-model="pageForm.jdhid">
<el-option :key="item.id" :label="item.jdhallname" :value="item.id"
v-for="item in jdhList"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select @change="getChange" clearable filterable placeholder="请选择工会"
v-model="pageForm.unionId">
<el-option :label="item.unionname" :value="item.id"
v-for="item in unionList">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select clearable filterable placeholder="请选择单位" v-model="pageForm.unitId">
<el-option
:label="item.name"
:value="item.id"
v-for="item in unitList">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button @click="pageFormUrl='/platform/jdh/db/qrmd/pageData';doSearch();"
icon="el-icon-search" type="primary"></el-button>
</div>
<!-- <div class="btn-group tool-button">-->
<!-- <el-button size="medium" class="text-primary" @click="pageFormUrl='/platform/jdh/db/qrmd/pageData';doSearch();">待确认</el-button>-->
<!-- </div>-->
<!-- <div class="btn-group tool-button">-->
<!-- <el-button size="medium" class="text-success" @click="confirmPageData">已确认</el-button>-->
<!-- </div>-->
<div class="pull-right offscreen-right">
<el-button @click="doConfirmMany" icon="el-icon-check" size="medium">批量审核</el-button>
</div>
<div class="pull-right offscreen-right mr25">
<el-radio-group @change="radioChange" size="medium" v-model="pageFormUrl">
<el-radio-button label="/platform/jdh/db/dbyl/pageData">已确认</el-radio-button>
<el-radio-button label="/platform/jdh/db/qrmd/pageData">待确认</el-radio-button>
</el-radio-group>
</div>
</el-card>
<el-card class="mt20" shadow="never">
<el-table :data="tableData" @selection-change="handleSelectionChange" @sort-change='pageOrder'
row-key="id">
<el-table-column reserve-selection type="selection"
v-if="pageFormUrl=='/platform/jdh/db/qrmd/pageData'"
width="55"></el-table-column>
<el-table-column align="center" header-align="center" label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column label="工号" prop="loginname"></el-table-column>
<el-table-column label="姓名" prop="username" sortable></el-table-column>
<el-table-column label="性别" prop="sex" sortable></el-table-column>
<el-table-column label="联系方式" prop="mobile"></el-table-column>
<el-table-column label="所属工会" prop="dbfghname" show-overflow-tooltip sortable>
<template scope="scope">
{{scope.row.dbfghname}}
</template>
</el-table-column>
<el-table-column label="所属单位" prop="dbunitname" show-overflow-tooltip sortable>
<template scope="scope">
{{scope.row.dbunitname}}({{scope.row.dbunitid}})
</template>
</el-table-column>
<el-table-column label="上报状态" prop="dbzt" sortable>
<template slot-scope="scope">
<span class="text-primary" v-if="scope.row.dbzt===1">待校工会确认</span>
<span class="text-success" v-if="scope.row.dbzt===2">校工会已确认</span>
</template>
</el-table-column>
<el-table-column label="操作" width="200">
<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:'doConfirm',data:row}"
v-if="pageFormUrl=='/platform/jdh/db/qrmd/pageData'">
确认
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</div>
</transition>
<template #view>
<db-info :active="'1'" ref="DbInfo"></db-info>
</template>
</guava>
</div>
<script>
let vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
jdhList: [],
unionList: [],
unitList: [],
dbShow: false,
tabShow: true,
uid: '',
pageForm: {
//...getPageForm(),
jdhid: '',
unionId: '',
unitId: '',
searchName: 'u.username',
searchType: 0
},
tableData: [],
selection: [],
dbtList: [],
pageFormUrl: '/platform/jdh/db/qrmd/pageData'
}
},
methods: {
radioChange(val) {
this.pageFormUrl = val
this.pageData(val)
},
confirmPageData() {
this.pageForm.searchType = 1
this.pageFormUrl = '/platform/jdh/db/dbyl/pageData'
this.pageData(this.pageFormUrl)
},
openView(row) {
const {dbid} = row
this.$refs.DbInfo.openView(dbid)
this.$refs.guava.view()
},
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'doConfirm') {
this.doConfirm(data.id)
}
},
async jdhChange(jdhid) {
this.pageForm.dbtid = ''
this.dbtList = await getDbtList(jdhid)
},
async getChange(unionId) {
this.pageForm.unitId = ''
this.unitList = await getUnit(unionId)
},
handleSelectionChange(val) {
console.log(val)
this.selection = val
},
doConfirm(id) {
const ids = []
ids.push(id)
$.post(base + '/platform/jdh/db/qrmd/doConfirm', {ids: [id]}).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.doSearch()
}
})
},
doConfirmMany() {
if (this.pageFormUrl === '/platform/jdh/db/dbyl/pageData') {
this.$message.info('请切换到待确认名单列表')
return
}
if (this.selection.length === 0) {
this.$message.info('请先选择')
return
}
let ids = []
for (let o of this.selection) {
ids.push(o.id)
}
$.post(base + '/platform/jdh/db/qrmd/doConfirm', {ids: ids}).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.doSearch()
}
})
},
//...pageSomeThing
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'db-info': httpVueLoader('/components/jdh/dbinfo.vue')
},
async created() {
this.unionList = await getUnion()
this.jdhList = await getOpenJdh()
if (this.jdhList.length > 0) {
this.pageForm.jdhid = this.jdhList[0].id
this.pageData()
}
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,467 @@
<!--#
layout("/layouts/platform.html"){
#-->
<link href="${base!}/assets/platform/plugins/wp-upload-vue/css/wpupload.css" rel="stylesheet">
<link href="${base!}/assets/platform/plugins/wp-upload-vue/font/iconfont.css" rel="stylesheet">
<script src="${base!}/assets/platform/plugins/wp-upload-vue/font/iconfont.js" type="text/javascript"></script>
<script src="${base!}/assets/platform/plugins/wp-upload-vue/js/wpupload.js" type="text/javascript"></script>
<style>
.el-form .el-select {
width: 100% !important;
}
.wp-upload .wp-upload-button-select-file {
margin: 0 !important;
}
</style>
<div :style="{padding:(tabShow?'0':'10px')}" id="app" v-cloak>
<guava ref="guava">
<transition name="el-zoom-in-center">
<div v-show="tabShow">
<el-card shadow="never">
<div class="btn-group tool-button">
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select placeholder="查询" slot="prepend" style="width: 100px;"
v-model="pageForm.searchName">
<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 filterable placeholder="请选择教代会" style="width:180px;" v-model="pageForm.jdhid">
<el-option :key="item.id" :label="item.jdhallname" :value="item.id"
v-for="item in searchJdhList"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button @click="doSearch" icon="el-icon-search" type="primary"></el-button>
</div>
<div class="pull-right offscreen-right">
<el-button @click="openExport" size="medium"><i class="el-icon-upload2"></i> 导入</el-button>
<el-button @click="openAdd" size="medium"><i class="ti-plus"></i> 添加</el-button>
</div>
</el-card>
<el-dialog :visible.sync="addDialogVisible" title="上传名单">
<el-form :model="formData" :rules="rules" label-width="80px" ref="AddForm">
<el-form-item label="教代会" prop="jdhid">
<el-select @change="jdhChange" filterable placeholder="代表所属教代会" style="width:180px;"
v-model="formData.jdhid">
<el-option :key="item.id" :label="item.jdhallname" :value="item.id"
v-for="item in searchJdhList"></el-option>
</el-select>
</el-form-item>
<el-form-item label="代表团" prop="dbtid">
<el-select @change="dbtChange" filterable v-model="formData.dbtid">
<el-option :key="i.id" :label="i.dbtname" :value="i.id"
v-for="i in dbtList"></el-option>
</el-select>
</el-form-item>
<el-form-item label="代表类型" prop="role">
<el-select v-model="formData.role">
<el-option :key="i.value" :label="i.label" :value="i.value"
v-for="i in representativeRoleOptions"></el-option>
</el-select>
</el-form-item>
<el-form-item label="人员" prop="user">
<el-select
:remote-method="queryNotDbUser"
filterable
multiple
placeholder="请输入工号或者姓名"
remote
reserve-keyword
v-model="formData.user"
value-key="id">
<el-option
:key="item.id"
:label="item.username+'-'+item.loginname+'-'+item.dwname"
:value="item"
v-for="item in notDbUserList">
</el-option>
</el-select>
</el-form-item>
</el-form>
<span class="dialog-footer" slot="footer">
<el-button @click="addDialogVisible = false">取 消</el-button>
<el-button @click="doAdd" type="primary">确 定</el-button>
</span>
</el-dialog>
<el-card class="mt20" shadow="never">
<el-table :data="tableData" @sort-change='pageOrder'>
<el-table-column align="center" header-align="center" label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column label="工号" prop="loginname"></el-table-column>
<el-table-column label="姓名" prop="username" sortable></el-table-column>
<el-table-column label="性别" prop="sex" sortable></el-table-column>
<el-table-column label="联系方式" prop="mobile"></el-table-column>
<el-table-column label="所属单位" prop="dbunitname" show-overflow-tooltip
sortable>
<template scope="{row}">
{{isDisPlayCode?''+row.dbunitid+'':null}}{{row.dbunitname}}
</template>
</el-table-column>
<el-table-column label="代表身份" prop="rolename"></el-table-column>
<el-table-column label="代表团" prop="dbtname" show-overflow-tooltip>
<template scope="{row}">
{{isDisPlayCode?''+row.delegationCode+'':null}}{{row.dbtname}}
</template>
</el-table-column>
<el-table-column label="状态" prop="dbzt" sortable>
<template slot-scope="scope">
<span class="text-primary" v-if="scope.row.dbzt===1">待校工会确认</span>
<span class="text-success" v-if="scope.row.dbzt===2">校工会已确认</span>
</template>
</el-table-column>
<el-table-column label="操作" width="200">
<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:'delete',data:row}" v-if="row.dbzt===1">
撤回
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</div>
</transition>
<template #view>
<db-info :active="'1'" ref="DbInfo"></db-info>
</template>
<transition name="el-zoom-in-center">
<div v-show="exportShow">
<el-card>
<div @click="tabShow=true;exportShow=false" class="text-primary pointer" style="font-size: 20px;">
<i class="el-icon-arrow-left"></i>
返回
</div>
<el-select placeholder="请选择教代会" style="width: 50%" v-model="exportjdhid">
<el-option :key="item.id" :label="item.jdhallname" :value="item.id"
v-for="item in jdhList"></el-option>
</el-select>
<div style="padding: 10px 0">
<wp-upload
:allow-files="['xls','xlsx']"
:max-file-number="1"
:upload-auto="false"
@on-select="selectFile"
ref="upload"></wp-upload>
</div>
<el-button @click="downLoadTemp" size="medium" type="primary">模板下载</el-button>
<el-button @click="readExcel" size="medium" type="primary">读取数据</el-button>
<el-button @click="doSubmitExcel" size="medium" type="primary">提交</el-button>
<el-table :data="scexcelTable" max-height="500px">
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column label="工号" prop="loginname"></el-table-column>
<el-table-column label="姓名" prop="username"></el-table-column>
<el-table-column label="单位" prop="dwname" show-overflow-tooltip></el-table-column>
<el-table-column label="代表团" prop="dbtname" show-overflow-tooltip></el-table-column>
<el-table-column label="代表类型" prop="role" show-overflow-tooltip></el-table-column>
<el-table-column label="校验结果" prop="isok">
<template slot-scope="{row}">
<i class="el-icon-circle-check text-success" v-if="row.isok"></i>
<i class="el-icon-circle-close text-danger" v-else></i>
</template>
</el-table-column>
<el-table-column label="提示" prop="info" show-overflow-tooltip width="250">
<template slot-scope="{row}">
<span :style="{color:(row.isok?'':'red')}">{{row.info}}</span>
</template>
</el-table-column>
<el-table-column label="操作" show-overflow-tooltip width="100">
<template slot-scope="{$index}">
<el-button @click="scexcelTable.splice($index,1)" circle icon="el-icon-delete"
size="mini"
type="danger"></el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</div>
</transition>
</guava>
</div>
<script>
let vue = new Vue({
el: '#app',
data() {
return {
representativeRoleOptions: [],
scexcelTable: [],
exportShow: false,
dbShow: false,
tabShow: true,
addDialogVisible: false,
rules: {},
formData: {
jdhid: '',
dbtid: '',
user: []
},
jdhList: [],
dbtList: [],
notDbUserList: [],
pageForm: {
...getPageForm(),
jdhid: '',
unitid: '',
searchName: 'u.username',
},
searchJdhList: [],
tableData: [],
dbModal: false,
uid: '',
exportjdhid: '',
readingjdhid: ''
}
},
methods: {
async getRepresentativeRoleOptions() {
const {code, data} = await $.get('/platform/jdh/db/dbgl/representativeRoleOptions')
if (!code) {
this.representativeRoleOptions = data
}
},
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'delete') {
this.doDelete(data.id)
}
},
openExport() {
this.tabShow = false
this.exportShow = true
},
selectFile() {
},
downLoadTemp() {
window.location.href = '/platform/basics/downloadTemplate?filePath=jdh/dbImportTemplate.xls&fileName=代表导入模板.xlsx';
},
readExcel() {
if (this.$refs.upload.fileShowArray.length === 0) {
this.$notify.warning('请先上传文件')
return
}
if (this.exportjdhid === '') {
this.$notify.warning('请选择教代会进行数据对比')
return
}
const loading = this.$loading({
lock: true,
text: '读取文件中',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
this.readingjdhid = this.exportjdhid
let fd = new FormData()
fd.append("jdhid", this.exportjdhid)
fd.append("file", this.$refs.upload.fileShowArray[0].file)
$.ajax({
url: base + '/platform/jdh/db/scmd/readScmdExecl',
type: "post",
data: fd,
processData: false,
contentType: false
}).then(({data}) => {
setTimeout(() => {
loading.close()
this.scexcelTable = data
}, 1000)
}).error(() => {
loading.close()
this.$message.error('系统异常')
})
},
async doSubmitExcel() {
if (this.exportjdhid === '') {
this.$notify.warning('请先选择教代会!')
return
}
if (this.exportjdhid !== this.readingjdhid) {
this.$notify.warning('提交的教代会和数据校验的教代会届次不同!')
return
}
if (this.scexcelTable.length === 0) {
this.$notify.warning('没有数据!')
return
}
const obj = this.scexcelTable.some(o => {
return !o.isok
})
if (obj) {
this.$notify.error('请先处理错误数据!')
return
}
const loading = this.$loading({
lock: true,
text: '提交中',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
const {data} = await POST('/platform/jdh/db/scmd/doAddExcel', {
data: JSON.stringify(this.scexcelTable),
jdhid: this.exportjdhid
})
loading.text = '提交成功'
loading.spinner = 'el-icon-circle-check'
setTimeout(() => {
loading.close()
this.scexcelTable = []
this.exportjdhid = ''
this.exportShow = false
this.tabShow = true
this.doSearch()
}, 1000)
},
openView(row) {
const {dbid} = row
this.$refs.DbInfo.openView(dbid)
this.$refs.guava.view()
},
openAdd() {
this.formData = {
jdhid: '',
dbtid: '',
user: []
}
if (this.jdhList.length > 0) {
this.formData.jdhid = this.jdhList[0].id
this.getDbtList(this.formData.jdhid)
}
this.notDbUserList = []
this.addDialogVisible = true
},
getJdhList() {
$.post(base + '/platform/jdh/db/scmd/getJdhList', {jdhkqzt: 1}).then(res => {
if (res.code === 0) {
this.jdhList = res.data.filter(f => {
return f.jdhkqzt === 1
})
this.searchJdhList = res.data
if (this.searchJdhList.length > 0) {
this.pageForm.jdhid = this.searchJdhList[0].id
this.pageData()
}
}
})
},
getDbtList(jdhid) {
$.post(base + '/platform/jdh/db/scmd/getDbtList', {jdhid: jdhid}).then(res => {
if (res.code === 0) {
this.dbtList = res.data
if ("${@shiro.hasRole('sysadmin')}" !== 'true') {
this.formData.dbtid = this.dbtList[0].id
}
}
})
},
jdhChange(jdhid) {
this.formData.dbtid = ''
this.dbtList = []
this.formData.user = []
this.notDbUserList = []
this.getDbtList(jdhid)
},
dbtChange() {
this.formData.user = []
this.notDbUserList = []
},
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 = res.data.list
this.notDbUserList = QC(this.formData.user, res.data.list, 'id')
//this.notDbUserList = QC(this.notDbUserList,res.data.list,'id')
}
})
},
doAdd() {
$.post(base + '/platform/jdh/db/scmd/doAdd', this.formData).then(res => {
if (res.code === 0) {
this.addDialogVisible = false
this.doSearch()
}
})
},
doDelete(id) {
this.$confirm('撤回后将删除这条记录, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
$.post(base + '/platform/jdh/db/scmd/doDelete', {id: id}).then(res => {
if (res.code === 0) {
this.doSearch()
this.$message.success(res.msg)
}
})
}).catch(() => {
})
},
...pageSomeThing
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'db-info': httpVueLoader('/components/jdh/dbinfo.vue')
},
async created() {
this.getRepresentativeRoleOptions()
this.getJdhList()
this.searchJdhList = await getOpenJdh()
if (this.searchJdhList.length > 0) {
this.pageForm.jdhid = this.searchJdhList[0].id
this.pageData()
}
}
})
</script>
<!--#
}
#-->