This commit is contained in:
2026-09-09 16:16:22 +08:00
parent ebffbab428
commit ba3a985c40
3749 changed files with 29 additions and 608551 deletions
@@ -1,418 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
</style>
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-input style="width: 250px;" placeholder="请输入关键字查询" v-model="pageForm.zlname">
</el-input>
</div>
<div class="btn-group tool-button">
<el-select clearable v-model="pageForm.jdhid" filterable placeholder="请选择教代会">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select clearable v-model="pageForm.zllx" filterable placeholder="请选择工作资料类型">
<el-option
v-for="item in filelxList"
:key="item.id"
:label="item.lxname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></el-button>
</div>
<div class="pull-right offscreen-right">
<el-button type="primary" size="medium" @click="openAdd"><i class="ti-plus"></i> 新建筹备文件</el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-table :data="tableData" @sort-change='pageOrder'>
<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 prop="zlname" label="资料名称">
</el-table-column>
<el-table-column sortable prop="jdhallname" label="所属教代会">
</el-table-column>
<el-table-column sortable prop="lxname" label="资料类型">
</el-table-column>
<el-table-column sortable prop="username" label="上传人">
</el-table-column>
<el-table-column sortable prop="time" label="上传时间">
</el-table-column>
<el-table-column sortable prop="ispass" label="是否通过">
<template slot-scope="scope">
<i v-if="scope.row.ispass === 0" class="fa fa-circle text-danger ml5"> 未通过</i>
<i v-if="scope.row.ispass === 1" class="fa fa-circle text-success ml5"> 通过</i>
</template>
</el-table-column>
<el-table-column label="操作" width="100">
<template slot-scope="scope">
<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:'preview',data:scope.row}">
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'Edit',data:scope.row}">
编辑
</el-dropdown-item>
<el-dropdown-item :command="{type:'Delete',data:scope.row}">
删除
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
@size-change="pageSizeChange"
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
:page-sizes="[10, 20, 30, 50]"
:page-size="pageForm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</el-card>
</guava>
<el-dialog title="新建筹备文件" :visible.sync="addDialogVisible">
<el-form :model="formData" ref="addForm" :rules="rules" label-width="100px">
<el-form-item label="上传人">
<el-input readonly value="${@shiro.getPrincipalProperty('username')}"></el-input>
</el-form-item>
<el-form-item prop="jdhid" label="所属教代会">
<el-select v-model="formData.jdhid" placeholder="选择教代会" style="width: 100%">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="zlname" label="资料名称">
<el-input placeholder="请填写工作资料名称" v-model="formData.zlname"></el-input>
</el-form-item>
<el-form-item prop="zllx" label="资料类型">
<el-select v-model="formData.zllx" placeholder="选择资料类型" style="width: 100%">
<el-option
v-for="item in filelxList"
:key="item.id"
:label="item.lxname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="ispass" label="是否通过">
<template>
<el-switch
v-model="formData.ispass"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
</template>
</el-form-item>
<el-form-item prop="files" label="附件上传">
<file-upload :files.sync="formData.files"></file-upload>
</el-form-item>
</el-form>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doAdd">确 定</el-button>
</span>
</el-dialog>
<el-dialog title="编辑筹备文件" :visible.sync="editDialogVisible">
<el-form :model="formData" ref="editForm" :rules="rules" label-width="100px">
<el-form-item label="上传人">
<el-input readonly v-model="formData.username"></el-input>
</el-form-item>
<el-form-item prop="jdhid" label="所属教代会">
<el-select v-model="formData.jdhid" placeholder="选择教代会" style="width: 100%">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhjs+'届'+item.jdhcs+'次教代会'"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="zlname" label="资料名称">
<el-input placeholder="请填写工作资料名称" v-model="formData.zlname"></el-input>
</el-form-item>
<el-form-item prop="zllx" label="资料类型">
<el-select v-model="formData.zllx" placeholder="选择资料类型" style="width: 100%">
<el-option
v-for="item in filelxList"
:key="item.id"
:label="item.lxname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="ispass" label="是否通过">
<template>
<el-switch
v-model="formData.ispass"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
</template>
</el-form-item>
<el-form-item prop="files" label="附件上传">
<file-upload :files.sync="formData.files"></file-upload>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="editDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doEdit">确 定</el-button>
</span>
</el-dialog>
<el-dialog title="阅览筹备文件" :visible.sync="viewDialogVisible">
<el-form label-width="100px" label-suffix="">
<vi-title title="基本信息"></vi-title>
<el-row>
<el-col :span="12">
<el-form-item label="上传人">
{{formData.username}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="教代会">
{{formData.jdhallname}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="zlname" label="资料名称">
{{formData.zlname}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="zllx" label="资料类型">
{{formData.lxname}}
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="ispass" label="是否通过">
{{formData.ispass?'通过':'不通过'}}
</el-form-item>
<vi-title title="附件"></vi-title>
<el-form-item prop="files" label="附&emsp;&emsp;件">
<file-upload :files.sync="formData.files" view></file-upload>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="viewDialogVisible = false">关 闭</el-button>
</span>
</el-dialog>
</div>
<script>
let vue = new Vue({
el: "#app",
components: {
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
},
data() {
return {
addDialogVisible: false,
editDialogVisible: false,
viewDialogVisible: false,
tableData: [],
jdhList: [],
filelxList: [],
fileList: [],
pageForm: {
zlname: "",
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: "",
pageOrderBy: ""
},
formData: {},
rules: {
jdhid: [{required: true, message: '请填写所属教代会', trigger: ['blur', 'change']}],
zlname: [{required: true, message: '请填写所属教代会', trigger: ['blur', 'change']}],
zllx: [{required: true, message: '请填写资料类型', trigger: ['blur', 'change']}],
},
delFiles: []
}
},
methods: {
openView(row) {
const formData = clone(row)
formData.files = JSON.parse(formData.files || "[]")
this.formData = formData
this.viewDialogVisible = true
},
dropdownCommand(command) {
const {type, data} = command
if (type == 'preview') {
this.openView(data)
} else if (type == 'Edit') {
this.openEdit(data)
} else if (type == 'Delete') {
this.doDelete(data.id, data.filepath)
}
},
handleChange: function (file, filelist) {
this.fileList = filelist;
},
handleRemove(file, filelist) {
if (file.status === 'success') {
this.fileList = filelist;
this.delFiles.push({fileid: file.id, filepath: file.url})
}
},
onDeleteFile(file) {
if (file.status === 2) {
console.log(file)
this.delFiles.push({fileid: file.fileDes.id, filepath: file.fileDes.filepath})
}
},
doDelete(id, filepath) {
this.$confirm('确定要删除吗', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
$.post(base + '/platform/jdh/cb/cbwj/doDelete', {id: id, filepath: filepath}).then(res => {
if (res.code === 0) {
this.doSearch()
this.$message.success(res.msg)
}
})
}).catch(() => {
})
},
doEdit() {
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
});
this.$refs['editForm'].validate(async (valid) => {
if (valid) {
const formData = clone(this.formData)
formData.files = JSON.stringify(formData.files)
const resp = await $.post(loc() + '/doEdit', formData)
if (resp.code===0){
this.editDialogVisible = false
this.pageData()
loading.close()
}
}
})
},
doSearch() {
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() {
sublime.showLoadingbar()
$.post(base + '/platform/jdh/cb/cbwj/pageData', this.pageForm).then(res => {
sublime.closeLoadingbar()
if (res.code === 0) {
this.tableData = res.data.list
this.pageForm.totalCount = res.data.totalCount
}
})
},
openEdit(obj) {
if (this.$refs["editForm"])
this.$refs["editForm"].resetFields()
const formData = clone(obj)
formData.files = JSON.parse(formData.files || "[]")
formData.ispass = formData.ispass === 1
this.formData = formData
this.editDialogVisible = true
},
openAdd() {
if (this.$refs["addForm"])
this.$refs["addForm"].resetFields()
this.formData = {files: []}
this.addDialogVisible = true
},
doAdd() {
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
});
this.$refs['addForm'].validate(async valid => {
if (valid) {
const formData = clone(this.formData)
formData.files = JSON.stringify(formData.files)
const resp = await $.post(loc() + '/doAdd', formData)
if (resp.code===0){
this.addDialogVisible = false
this.pageData()
loading.close()
}
}
})
}
},
async created() {
this.pageData()
this.jdhList = await proposal.getOpenMeeting()
this.filelxList = await getGzzllx()
}
})
</script>
<!--#
}
#-->
@@ -1,484 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-loading-spinner {
font-size: 30px !important;
}
.el-checkbox__label {
padding-left: 20px;
}
.el-checkbox__input {
position: absolute;
/*line-height: unset!important;*/
}
</style>
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-date-picker
:clearable="false"
v-model="pageForm.searchYear"
value-format="yyyy"
formData="yyyy"
type="year"
placeholder="选择年份">
</el-date-picker>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.jdhjs" placeholder="请选择届数" clearable>
<el-option
v-for="item in jsOptions"
:key="item.id"
:label="item.name"
:value="item.code">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.jdhcs" placeholder="请选择次数" clearable>
<el-option
v-for="item in csOptions"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></el-button>
</div>
<div class="pull-right offscreen-right">
<el-button type="primary" size="medium" @click="openAdd"><i class="ti-plus"></i> 新建届次</el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-table :data="tableData" @sort-change='pageOrder'>
<el-table-column align="center" header-align="center" label="教代会年份" prop="jdhnf"
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="教代会届数" prop="jdhjs"
sortable>
<template slot-scope="scope">
第{{scope.row.jdhjs}}届
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="次数" prop="jdhcs"
sortable>
<template slot-scope="scope">
第{{scope.row.jdhcs}}次
</template>
</el-table-column>
<el-table-column prop="jdhms" label="描述"></el-table-column>
<el-table-column prop="jdhkqsj" label="创建时间" :formatter="dateFormat"></el-table-column>
<el-table-column prop="jdhkqzt" label="开启状态">
<template slot-scope="scope">
<el-switch active-color="#13ce66"
inactive-color="#ff4949"
:value="scope.row.jdhkqzt===1"
@change="jdhztChange(scope.row.jdhkqzt,scope.row.id)">
</el-switch>
</template>
</el-table-column>
<el-table-column label="操作" width="200">
<template slot-scope="scope">
<el-button :disabled="scope.row.jdhkqzt===0" size="mini" type="primary"
@click="openEdit(scope)">
编辑
</el-button>
<el-button :disabled="scope.row.jdhkqzt===0" size="mini" type="danger"
@click="doDelete(scope.row.id)">删除
</el-button>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
layout="total, prev, pager, next, jumper"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</el-card>
</guava>
<el-dialog
title="新建届次"
:visible.sync="addDialogVisible"
width="45%">
<el-form :model="formData" ref="addForm" :rules="rules" label-width="120px">
<el-form-item prop="jdhnf" label="教代会年份">
<el-date-picker style="width:100%;" :clearable="false"
v-model="formData.jdhnf"
value-format="yyyy"
formData="yyyy"
type="year"
placeholder="选择年">
</el-date-picker>
</el-form-item>
<el-form-item prop="jdhjs" label="教代会届数">
<el-select v-model="formData.jdhjs" filterable placeholder="请选择届数" style="width:100%;">
<el-option v-for="i in jsList" :label="i.name" :key="i.id" :value="i.code"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="jdhcs" label="教代会次数">
<el-select v-model="formData.jdhcs" @change="csChange" filterable placeholder="请选择次数"
style="width:100%;">
<el-option v-for="item in csOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="jdhms" label="教代会描述">
<el-input type="textarea"
:rows="2" style="width:100%;"
placeholder="请输入教代会描述"
v-model="formData.jdhms">
</el-input>
</el-form-item>
<el-form-item prop="sfjc" class="is-required" label="" label-width="30px" style="margin-top: 20px;">
<el-checkbox v-model="formData.isExtend"
:disabled="formData.jdhcs=='一' || formData.jdhcs==''"
style="font-size: 14px;color: #ff6a00;width: 100%">
<span style="text-overflow: clip;white-space: normal;">
延用上一次教代会的组织机构及代表信息,包含【筹备领导小组;资格审查小组;主席团;执行委员会;专门委员会;代表团;教代会代表】。
</span>
</el-checkbox>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doAdd">确 定</el-button>
</span>
</el-dialog>
<el-dialog
title="编辑教代会信息"
:visible.sync="editDialogVisible"
custom-class="ViewDialogClass"
:close-on-click-modal="false"
width="45%">
<el-form :model="formData" ref="editForm" :rules="rules" label-width="120px">
<el-form-item prop="jdhnf" label="教代会年份">
<div class="block">
<el-date-picker style="width:100%;"
v-model="formData.jdhnf"
value-format="yyyy"
formData="yyyy"
type="year"
placeholder="选择年">
</el-date-picker>
</div>
</el-form-item>
<el-form-item prop="jdhjs" label="教代会届数">
<el-select v-model="formData.jdhjs" filterable placeholder="请选择届数" style="width:100%;">
<el-option v-for="i in jsList" :label="i.name" :key="i.id" :value="i.code"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="jdhcs" label="教代会次数">
<el-select v-model="formData.jdhcs" filterable placeholder="请选择次数" style="width:100%;">
<el-option v-for="item in csOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="jdhms" label="教代会描述">
<el-input style="width:100%;"
type="textarea"
:rows="2"
placeholder="请输入教代会主题描述"
auto-complete="off"
v-model="formData.jdhms">
</el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="editDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doEdit">确 定</el-button>
</span>
</el-dialog>
</div>
<script>
const rules = {
jdhnf: [
{required: true, message: '请选择教代会年份', trigger: ['blur', 'change']}
],
jdhjs: [
{required: true, message: '请输入教代会届数', trigger: ['blur', 'change']}
],
jdhcs: [
{required: true, message: '请输入教代会次数', trigger: ['blur', 'change']}
]
}
let vue = new Vue({
el: "#app",
data() {
return {
addDialogVisible: false,
editDialogVisible: false,
tableData: [],
pageForm: {
searchYear: '',
jdhjs: '',
jdhcs: '',
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: '',
pageOrderBy: ''
},
formData: {
jdhid: "",
jdhnf: "",
jdhjs: "",
jdhcs: "",
jdhms: "",
jdhkqzt: "",
sfjc: "",
isExtend: false
},
rules: rules,
jsList: [],
cslist: ['一', '二', '三', '四', '五'],
jsOptions: [],
csOptions: [
{id: "一", name: "第一次"},
{id: "二", name: "第二次"},
{id: "三", name: "第三次"},
{id: "四", name: "第四次"},
{id: "五", name: "第五次"},
{id: "六", name: "第六次"}
]
}
},
methods: {
dateFormat(row, column) {
let date = row[column.property];
if (date) {
return moment(date).format("YYYY-MM-DD")
}
},
doDelete(id) {
this.$confirm('删除此次教代会将会删除该教代会下面所有的数据(包括提案数据)', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then((res) => {
const loading = this.$loading({
lock: true,
text: '删除中',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
$.post(base + '/platform/jdh/cb/jcgl/doDelete', {id: id}).then(res => {
if (res.code === 0) {
setTimeout(() => {
loading.spinner = 'el-icon-circle-check'
loading.text = '删除成功'
setTimeout(() => {
loading.close()
this.doSearch()
}, 1000)
}, 1000)
} else {
setTimeout(() => {
loading.spinner = 'el-icon-circle-close'
loading.text = '删除失败'
setTimeout(() => {
loading.close()
this.doSearch()
}, 1000)
}, 1000)
}
})
}).catch(() => {
})
},
jsChange(val) {
$.post(base + "/platform/jdh/cb/jcgl/getcs", {jdhjs: val}).then(res => {
if (res.code == 0) {
this.cslist = res.data;
} else {
this.$message.error(res.msg)
}
})
},
csChange(val) {
if (val === '一') {
this.$set(this.formData, 'isExtend', false)
}
},
pageOrder(column) {
this.pageForm.pageOrderName = column.prop
this.pageForm.pageOrderBy = column.order
this.pageData()
},
pageNumberChange(val) {
this.pageForm.pageNumber = val
this.pageData()
},
pageData() {
sublime.showLoadingbar()
$.post(base + "/platform/jdh/cb/jcgl/pageData", this.pageForm).then(res => {
sublime.closeLoadingbar()
if (res.code == 0) {
this.tableData = res.data.list;
this.pageForm.totalCount = res.data.totalCount;
} else {
this.$message.error(res.msg)
}
})
},
doSearch() {
this.pageForm.pageNumber = 1
this.pageData()
},
openAdd() {
this.formData = {
jdhid: "",
jdhnf: (new Date()).getFullYear() + '',
jdhjs: "",
jdhcs: "",
jdhms: "",
jdhkqzt: "",
sfjc: "",
isExtend: false
},
this.addDialogVisible = true
if (this.$refs["addForm"])
this.$refs["addForm"].resetFields()
},
doAdd() {
if (!this.formData.isExtend && this.formData.jdhcs !== '一') {
this.$confirm('确定不延用上一次教代会的组织及人员数据吗?这将导致此次教代会的组织及人员都将为空必须重新组建!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$refs["addForm"].validate(valid => {
if (valid) {
const loading = this.$loading({
lock: true,
text: '提交中',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
$.post(base + '/platform/jdh/cb/jcgl/doAdd', this.formData).then(res => {
if (res.code === 0) {
setTimeout(() => {
loading.close()
this.$message.success(res.msg)
this.doSearch()
this.addDialogVisible = false
}, 1500)
} else {
loading.close()
this.$message.error(res.msg)
}
})
}
})
}).catch(() => {
})
} else {
this.$refs["addForm"].validate(valid => {
if (valid) {
const loading = this.$loading({
lock: true,
text: '提交中',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
$.post(base + "/platform/jdh/cb/jcgl/doAdd", this.formData).then(res => {
if (res.code == 0) {
setTimeout(() => {
loading.close()
this.$message.success(res.msg)
this.doSearch()
this.addDialogVisible = false
}, 1500)
} else {
loading.close()
this.$message.error(res.msg)
}
})
}
})
}
},
openEdit(scope) {
this.formData = JSON.parse(JSON.stringify(scope.row))
this.editDialogVisible = true
},
doEdit() {
this.$refs["editForm"].validate(valid => {
if (valid) {
$.post(base + "/platform/jdh/cb/jcgl/editDo", this.formData).then(res => {
if (res.code == 0) {
this.$message.success(res.msg)
this.doSearch()
this.editDialogVisible = false
} else {
this.$message.error(res.msg)
}
})
}
})
},
jdhztChange(status, id) {
let cz = status === 1 ? '关闭' : '开启'
this.$confirm('此操作将' + cz + '此次教代会!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
$.post(base + "/platform/jdh/cb/jcgl/jdhztChange", {id: id, status: status}).then(res => {
if (res.code == 0) {
this.doSearch()
}
})
}).catch(() => {
})
}
},
async created() {
this.pageData()
this.jsList = await getJc()
this.jsOptions = await getJc()
}
})
</script>
<!--#
}
#-->
@@ -1,331 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-select v-model="pageForm.jdhid" @change="jdhChange" placeholder="请选择教代会">
<el-option
v-for="item in openJdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select clearable v-model="pageForm.union_id" filterable placeholder="请选择工会">
<el-option
v-for="item in unionOptions"
:key="item.id"
:label="item.unionname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-table :data="tableData" :row-style="showRow">
<el-table-column type="index" label="序号" align="center" width="80"></el-table-column>
<el-table-column prop="dbtname" align="center" label="代表团名称"></el-table-column>
<el-table-column sortable prop="ghzrs" align="center" label="代表团总人数(人)"></el-table-column>
<el-table-column sortable prop="fps" align="center" label="名额分配数(人)"></el-table-column>
<el-table-column sortable prop="dbzrs" align="center" label="代表人数"></el-table-column>
<el-table-column sortable prop="dbrsb" align="center" label="代表占比"></el-table-column>
<el-table-column prop="lxty" align="center" label="列席/特邀代表">
</el-table-column>
<el-table-column label="操作" width="100">
<template slot-scope="scope">
<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:'editFps',data:scope.row}">
修改分配数
</el-dropdown-item>
<el-dropdown-item :command="{type:'openDb',data:scope.row}">
查看列席/特邀代表
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
</el-card>
</guava>
<el-dialog title="修改名额分配数" :visible.sync="fpsDialogVisible" width="30%">
<el-form :model="formData" ref="mefpsForm" :rules="mefpsRules" label-width="100px">
<el-form-item prop="unionname" label="院级工会">
<el-input disabled
v-model="formData.unionname">
</el-input>
</el-form-item>
<el-form-item prop="ghzrs" label="总人数">
<el-input disabled
v-model="formData.ghzrs">
</el-input>
</el-form-item>
<el-form-item prop="fps" label="名额分配数">
<el-input placeholder="请输入名额分配数"
v-model="formData.fps">
</el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="fpsDialogVisible=false">取 消</el-button>
<el-button type="primary" @click="doFp">确 定</el-button>
</span>
</el-dialog>
<el-dialog title="列席/特邀代表" :visible.sync="dbDialogVisible">
<el-alert show-icon :closable="false" type="info" title="不占代表团名额"></el-alert>
<el-row>
<div class="btn-group tool-button">
<el-select
size="mini"
style="width: 300px"
v-model="lxtydbFormData.userid"
filterable
remote
:remote-method="queryNolxtyDb"
placeholder="请输入工号或姓名关键字">
<el-option
v-for="item in lxtyUserList"
:key="item.id"
:label="item.loginname+' '+item.username+' '+item.dwname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-dropdown placement="bottom">
<el-button type="primary" size="mini">
设置身份<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="doAddLxtyDb(2)">列席代表
</el-dropdown-item>
<el-dropdown-item @click.native="doAddLxtyDb(1)">特邀代表
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<!-- <el-button type="primary" size="mini" @click="doAddLxtyDb">-->
<!-- 添加-->
<!-- </el-button>-->
</div>
</el-row>
<el-row style="margin-top: 15px">
<el-table :data="lxtydbTableData" height="450px">
<el-table-column sortable prop="loginname" label="工号"></el-table-column>
<el-table-column sortable prop="username" label="姓名"></el-table-column>
<el-table-column sortable prop="dbunitname" label="单位"></el-table-column>
<el-table-column prop="mobile" label="电话"></el-table-column>
<el-table-column prop="sex" label="性别"></el-table-column>
<el-table-column prop="rolename" label="身份"></el-table-column>
<el-table-column label="操作" width="100">
<template slot-scope="{row}">
<el-button size="mini" type="danger" icon="el-icon-delete" @click="delLxtyDb(row)"></el-button>
</template>
</el-table-column>
</el-table>
</el-row>
</el-dialog>
</div>
<script>
let vue = new Vue({
el: '#app',
data() {
return {
pageForm: {
jdhid: '',
pageOrderName: '',
pageOrderBy: ''
},
unionOptions: [],
openJdhList: [],
tableData: [],
fpsDialogVisible: false,
mefpsRules: {
fps: [{required: true, message: '请输入', trigger: ['change', 'blur']}]
},
formData: {
dbtid: '',
fps: ''
},
dbDialogVisible: false,
lxtydbTableData: [],
lxtyUserList: [],
lxtydbFormData: {
dbtid: '',
userid: ''
}
}
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'editFps') {
this.editFps(data)
} else if (type == 'openDb') {
this.openDb(data)
}
},
doSearch() {
this.tabKey = new Date().getTime()
this.pageForm.pageNumber = 1
this.data()
},
jdhChange(jdhid) {
this.pageForm.jdhid = jdhid
this.data()
},
pageOrder(column) {
this.pageForm.pageOrderName = column.prop
this.pageForm.pageOrderBy = column.order
this.data()
},
data() {
sublime.showLoadingbar()
$.post(base + '/platform/jdh/cb/mefp/data', this.pageForm).then(res => {
console.log(res.data)
sublime.closeLoadingbar()
if (res.code === 0) {
this.tableData = res.data
for (let o of this.tableData) {
if (o.fps == null) {
o.fps = Math.round(o.ghzrs * 0.1)
}
o.dbrsb = o.dbzrs != 0 ? ((o.dbzrs / o.ghzrs) * 100).toFixed(2) + '%' : 0 + '%'
}
}
})
},
editFps(obj) {
// this.formData.dbtid = obj.id
this.formData.fghid = obj.id
this.formData.ghzrs = obj.ghzrs
this.formData.unionname = obj.unionname
if (obj.fps == null) {
this.formData.fps = Math.round(obj.ghzrs * 0.1)
} else {
this.formData.fps = obj.fps
}
this.fpsDialogVisible = true
},
doFp() {
this.$refs['mefpsForm'].validate(valid => {
if (valid) {
if (parseInt(this.formData.fps) > this.formData.ghzrs) {
this.$message.info('名额分配数不得大于分工会总人数')
return
}
this.formData.jdhid = this.pageForm.jdhid
$.post(base + '/platform/jdh/cb/mefp/doMefp', this.formData).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.fpsDialogVisible = false
this.data()
}
})
}
})
},
openDb(row) {
this.lxtydbFormData = {
fghid: row.id,
userid: ''
}
this.lxtyUserList = []
this.dbDialogVisible = true
this.lxtyPageData(row.id)
},
lxtyPageData(fghid) {
$.get('/platform/jdh/cb/mefp/lxtydbPgaeData', {fghid: fghid, jdhid: this.pageForm.jdhid}).then(res => {
if (res.code === 0) {
this.lxtydbTableData = res.data
}
})
},
queryNolxtyDb(keyword) {
if (keyword !== '') {
$.get('/platform/jdh/cb/mefp/queryNolxtyDb', {
keyword: keyword,
jdhid: this.pageForm.jdhid,
fghid: this.lxtydbFormData.fghid
}).then(res => {
if (res.code === 0) {
this.lxtyUserList = res.data
}
})
} else {
this.lxtyUserList = []
this.lxtydbFormData.userid = ''
}
},
doAddLxtyDb(val) {
if (this.lxtydbFormData.userid === '') {
this.$message.info('请先查询并选择用户后再添加!')
return
}
let o = this.lxtyUserList.find(u => {
return u.id === this.lxtydbFormData.userid
})
let u = JSON.parse(JSON.stringify(o))
u.jdhid = this.pageForm.jdhid
u.dbtid = this.lxtydbFormData.dbtid
u.dbid = u.id
u.id = undefined
u.lx = val
$.post('/platform/jdh/cb/mefp/doAddLxTyDb', u).then(res => {
if (res.code === 0) {
this.lxtydbFormData.userid = ''
this.lxtyUserList = []
this.$message.success(res.msg)
this.lxtyPageData(this.lxtydbFormData.dbtid)
this.data()
}
})
},
delLxtyDb(row) {
$.post('/platform/jdh/cb/mefp/delLxtyDb', {dbid: row.dbid, jdhid: row.jdhid}).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.lxtyPageData(this.lxtydbFormData.dbtid)
this.data()
}
})
},
showRow({row}) {
if (row.dbzrs == 0 || (((row.dbzrs / row.ghzrs) * 100).toFixed(2)) < 10) {
return {color: 'red'}
}
}
},
async created() {
this.unionOptions = await getUnions(null)
this.openJdhList = await proposal.getOpenMeeting()
if (this.openJdhList.length > 0) {
this.pageForm.jdhid = this.openJdhList[0].id
this.data()
}
}
})
</script>
<!--#
}
#-->
@@ -1,103 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.header > div, .header > div .el-select {
width: 100%;
}
</style>
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-select v-model="pageForm.jdhid" @change="jdhChange" placeholder="请选择教代会">
<el-option
v-for="item in openJdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-table :data="tableData" show-summary>
<el-table-column label="序号" type="index" width="80"></el-table-column>
<el-table-column label="代表团名称" prop="dbtname"></el-table-column>
<el-table-column label="正式代表人数" prop="dbzrs" sortable></el-table-column>
<el-table-column label="高级职称" prop="seniorProTitleCount" sortable></el-table-column>
<el-table-column label="青年代表(<40岁)" prop="youthCount" sortable></el-table-column>
<el-table-column label="男代表人数" prop="manCount" sortable></el-table-column>
<el-table-column label="女代表人数" prop="womanCount" sortable></el-table-column>
<el-table-column label="总计" prop="totalCount" sortable></el-table-column>
</el-table>
</el-card>
</guava>
</el-dialog>
</div>
<script>
let vue = new Vue({
el: '#app',
data() {
return {
pageForm: {
jdhid: '',
pageOrderName: '',
pageOrderBy: ''
},
openJdhList: [],
tableData: [],
fpsDialogVisible: false,
mefpsRules: {
fps: [{required: true, message: '请输入', trigger: ['change', 'blur']}]
},
formData: {
dbtid: '',
fps: ''
},
dbDialogVisible: false
}
},
methods: {
jdhChange(jdhid) {
this.pageForm.jdhid = jdhid
this.data()
},
pageOrder(column) {
this.pageForm.pageOrderName = column.prop
this.pageForm.pageOrderBy = column.order
this.pageData()
},
data() {
sublime.showLoadingbar()
$.post(loc()+'/data', this.pageForm).then(res => {
sublime.closeLoadingbar()
if (res.code === 0) {
res.data.forEach(v => {
v.totalCount = v.dbzrs
})
this.tableData = res.data
}
})
},
openDb() {
this.dbDialogVisible = true
}
},
async created() {
this.openJdhList = await proposal.getAllMeeting()
if (this.openJdhList.length > 0) {
this.pageForm.jdhid = this.openJdhList[0].id
this.data()
}
}
})
</script>
<!--#
}
#-->
@@ -1,199 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.header>div,.header>div .el-select{
width: 100%;
}
.flex{
padding: 30px;
display: flex;
}
.flex>div{
width: 33.3%;
text-align: left;
padding: 0 20px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-select v-model="pageForm.jdhid" @change="jdhChange" placeholder="请选择教代会">
<el-option
v-for="item in JdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-tabs v-model="tabindex" class="m20" @tab-click="tabClick">
<el-tab-pane label="教代会" name="1">
<div class="flex">
<div>年份&nbsp;&nbsp;{{jdhData.jdhxx.jdhnf}}</div>
<div>届数&nbsp;&nbsp;{{jdhData.jdhxx.jdhjs}}</div>
<div>次数&nbsp;&nbsp;{{jdhData.jdhxx.jdhcs}}</div>
</div>
<div class="flex">
<div>创建时间&nbsp;&nbsp;{{jdhData.jdhxx.jdhkqsj}}</div>
<div>状态&nbsp;&nbsp;{{jdhData.jdhxx.jdhkqzt===1?'开启':'关闭'}}</div>
<div>描述&nbsp;&nbsp;{{jdhData.jdhxx.jdhms}}</div>
</div>
<el-divider></el-divider>
<div class="flex">
<div>筹备领导小组人数&nbsp;&nbsp;{{jdhData.cbldxz}}</div>
<div>主席团人数&nbsp;&nbsp;{{jdhData.zxt}}</div>
<div>资格审查小组人数&nbsp;&nbsp;{{jdhData.zgscxz}}</div>
</div>
<div class="flex">
<div>执行委员会人数&nbsp;&nbsp;{{jdhData.zxwyh}}</div>
<div>代表数&nbsp;&nbsp;{{jdhData.db}}</div>
<div>代表团数&nbsp;&nbsp;{{jdhData.dbt}}</div>
</div>
<div class="flex">
<div>专门委员会人数&nbsp;&nbsp;{{jdhData.zmwyh}}</div>
</div>
</el-tab-pane>
<el-tab-pane label="筹备领导小组" name="2">
<my-tab :data="tableData" :pf="pageForm" name="2"/>
</el-tab-pane>
<el-tab-pane label="资格审查小组" name="3">
<my-tab :data="tableData" :pf="pageForm" name="3"/>
</el-tab-pane>
<el-tab-pane label="主席团" name="4">
<my-tab :data="tableData" :pf="pageForm" name="4" />
</el-tab-pane>
<el-tab-pane label="执行委员会" name="5">
<my-tab :data="tableData" :pf="pageForm" name="5"/>
</el-tab-pane>
<el-tab-pane label="专门委员会" name="6">
<el-table :data="tableData">
<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 prop="wyhname" label="委员会名称"></el-table-column>
<el-table-column prop="zrmobile" label="主任及联系方式"></el-table-column>
<el-table-column prop="gzzz" label="工作职责" width="400" show-overflow-tooltip></el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="代表团" name="7">
<el-table :data="tableData">
<el-table-column label="序号" type="index">
<template scope="scope"><span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span></template>
</el-table-column>
<el-table-column prop="dbtname" label="代表团名称"></el-table-column>
<el-table-column prop="cjsj" label="创建时间"></el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="代表" name="8">
<my-tab :data="tableData" :pf="pageForm" name="8" />
</el-tab-pane>
</el-tabs>
<el-row class="el-pagination-container" v-show="tabindex>1">
<el-pagination
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
:page-size="pageForm.pageSize"
layout="total, prev, pager, next, jumper"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</el-card>
</guava>
</div>
<script>
let vue = new Vue({
el:'#app',
data(){
return{
pageForm:{
jdhid:'',
pageNumber:1,
pageSize:10,
totalCount:0
},
JdhList:[],
tableData:[],
jdhData:{
jdhxx:{}
},
tabindex:'1',
}
},
components:{
'my-tab':httpVueLoader('/components/jdh/mytab.vue')
},
methods:{
jdhChange(id){
this.pageForm.jdhid = id
this.pageForm.pageNumber=1
this.tabClick()
},
tabClick(val){
this.pageForm.pageNumber=1
this.getData()
},
async getData(){
let res = null
const index = parseInt(this.tabindex)
switch (index) {
case 1:
res = await $.post('/platform/jdh/cxtj/sjzl/data',this.pageForm,true)
this.jdhData = res.data
break
case 2:
res = await $.post('/platform/jdh/zzjg/cbldxz/pageData',this.pageForm,true)
break
case 3:
res = await $.post('/platform/jdh/zzjg/zgscxz/pageData',this.pageForm,true)
break
case 4:
res = await $.post('/platform/jdh/zzjg/zxt/pageData',this.pageForm,true)
break
case 5:
res = await $.post('/platform/jdh/zzjg/zxwyh/pageData',this.pageForm,true)
break
case 6:
res = await $.post('/platform/jdh/zzjg/zmwyh/pageData',this.pageForm,true)
break
case 7:
res = await $.post('/platform/jdh/zzjg/dbt/pageData',this.pageForm,true)
break
case 8:
res = await $.post('/platform/jdh/db/dbyl/pageData',this.pageForm,true)
break
}
if(this.tabindex!==1){
this.pageForm.totalCount = res.data.totalCount
this.tableData = res.data.list
}
},
pageNumberChange(val){
this.pageForm.pageNumber=val
this.getData()
}
},
async created(){
this.JdhList = await proposal.getAllMeeting()
if(this.JdhList.length>0){
this.pageForm.jdhid = this.JdhList[0].id
this.tabClick()
}
}
})
</script>
<!--#
}
#-->
@@ -1,359 +0,0 @@
<!--#
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 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 placeholder="请选择教代会" v-model="pageForm.teacherMeetId" filterable style="width:180px;">
<el-option v-for="item in teacherMeets" :label="item.jdhallname" :value="item.id"
:key="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.unionId" @change="unionChange" filterable clearable
placeholder="请选择工会">
<el-option v-for="item in unionList" :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"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
</div>
<div class="pull-right offscreen-right">
<el-button size="medium" type="primary" @click="doAuditMany" icon="el-icon-check">批量通过</el-button>
</div>
<div class="pull-right offscreen-right mr25">
<el-radio-group v-model="pageForm.isAudit" @change="doSearch" size="medium">
<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 shadow="never" class="mt20">
<el-table :data="tableData" @selection-change="(val)=>{selections = val}" @sort-change='pageOrder'
:row-key="(row)=>row.id">
<el-table-column type="selection" reserve-selection width="55"></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 label="姓名" prop="userName" width="80" align="center"></el-table-column>
<el-table-column label="工号" prop="loginName" align="center"></el-table-column>
<el-table-column label="性别" prop="sex" width="50" align="center"></el-table-column>
<el-table-column label="民族" prop="nation" align="center"></el-table-column>
<el-table-column label="政治面貌" prop="politicalOutlook" show-overflow-tooltip
align="center"></el-table-column>
<el-table-column label="学历" prop="education" align="center"></el-table-column>
<el-table-column label="专业技术职称" prop="technicalTitle" align="center"></el-table-column>
<el-table-column label="年龄" prop="age" align="center" width="50"></el-table-column>
<el-table-column label="教学科研及双肩挑人员" prop="twoWork" align="center">
<template scope="{row}">
<el-checkbox v-model="row.twoWork"
:style="{'pointer-events':row.stateCode===0?'auto':'none'}"></el-checkbox>
</template>
</el-table-column>
<el-table-column label="教代会代表" prop="isJdh" align="center">
<template scope="{row}">
<el-checkbox v-model="row.isJdh"
:style="{'pointer-events':row.stateCode===0?'auto':'none'}"></el-checkbox>
</template>
</el-table-column>
<el-table-column label="工代会代表" prop="isGdh" align="center">
<template scope="{row}">
<el-checkbox v-model="row.isGdh"
:style="{'pointer-events':row.stateCode===0?'auto':'none'}"></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 sortable label="状态" prop="stateName"></el-table-column>
<el-table-column label="操作" width="250" align="center" v-if="pageForm.isAudit!=='true'">
<template slot-scope="{row}">
<el-button size="mini" v-if="row.stateCode===100" @click="openEdit(row)"
type="primary">编辑
</el-button>
<el-button size="mini" v-if="row.stateCode===100" @click="doAudit(row.id,true)"
type="success">通过
</el-button>
<el-button size="mini" v-if="row.stateCode===100" @click="doAudit(row.id,false)"
type="danger">拒绝
</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>
<el-dialog title="编辑" :visible.sync="editDialogVisible" :close-on-click-modal="false">
<el-form :model="formData" ref="form" :rules="rules" label-width="160px">
<el-row>
<el-col :span="12">
<el-form-item prop="userName" label="姓名">
<el-input v-model="formData.userName" readonly></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="loginName" label="工号">
<el-input v-model="formData.loginName" readonly></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop="sex" label="性别">
<el-input v-model="formData.sex" readonly></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="age" label="年龄">
<el-input v-model="formData.age"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop="nation" label="民族">
<el-select filterable v-model="formData.nation">
<el-option v-for="n in nation" :key="n" :value="n" :label="n"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="education" label="学历">
<dict-select v-model="formData.education" code="Education"></dict-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop="politicalOutlook" label="政治面貌">
<el-input maxlength="20" v-model="formData.politicalOutlook"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="administrativeTitle" label="行政职务">
<el-input v-model="formData.administrativeTitle"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="technicalTitle" label="专业技术职务">
<el-select v-model="formData.technicalTitle" placeholder="请选择专业技术职务">
<el-option-group
v-for="group in technicalTitleOptions"
:key="group.label"
:label="group.label">
<el-option
v-for="item in group.options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-option-group>
</el-select>
</el-form-item>
<el-form-item prop="twoWork" label="教学科研及双肩挑人员">
<el-checkbox v-model="formData.twoWork"></el-checkbox>
</el-form-item>
<el-form-item prop="isJdh" label="教代会代表">
<el-checkbox v-model="formData.isJdh"></el-checkbox>
</el-form-item>
<el-form-item prop="isGdh" label="工代会代表">
<el-checkbox v-model="formData.isGdh"></el-checkbox>
</el-form-item>
<el-form-item prop="bz" label="备注">
<el-input v-model="formData.bz"></el-input>
</el-form-item>
</el-form>
<el-row type="flex" justify="end">
<el-button @click="editDialogVisible=false">取消</el-button>
<el-button type="primary" @click="doEdit">确定</el-button>
</el-row>
</el-dialog>
</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: [],
editDialogVisible: false,
rules: {
nation: [{required: true, message: '请选择民族', trigger: ['change', 'blur']}],
age: [{required: true, message: '请输入年龄', trigger: ['change', 'blur']}],
education: [{required: true, message: '请选择学历', trigger: ['change', 'blur']}],
politicalOutlook: [{required: true, message: '请输入政治面貌', trigger: ['change', 'blur']}],
administrativeTitle: [{required: true, message: '请输入行政职务', trigger: ['change', 'blur']}],
technicalTitle: [{required: true, message: '请选择专业技术职务', trigger: ['change', 'blur']}]
},
technicalTitleOptions: []
}
},
methods: {
openEdit(row) {
this.editDialogVisible = true
this.formData = row
console.log(row)
},
async doEdit() {
const valid = await this.$refs['form'].validate()
if (!valid) return
const resp = await $.post(loc() + '/doEditTeacher', this.formData)
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.editDialogVisible = false
this.pageData()
} else {
this.notifyWarning(resp.msg)
}
},
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 getUnits(val)
},
async getTechnicalTitleOptions() {
const resp = await $.get('/platform/teacherMeet/push/getTechnicalTitleOptions')
if (resp.code === 0) {
this.technicalTitleOptions = resp.data
}
}
},
async created() {
await this.getTechnicalTitleOptions()
this.teacherMeets = await getAllMeeting()
if (this.teacherMeets.length > 0) {
this.pageForm.teacherMeetId = this.teacherMeets[0].id
}
this.unionList = await getUnions(null)
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -1,620 +0,0 @@
<!--#
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">
<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" 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 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="role" label="代表类型">
<el-select v-model="formData.role">
<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-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>
<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>
const QC = (arr1, arr2, key) => {
let json = arr1.concat(arr2)
let newArr = []
for (let item1 of json) {
let flag = true
for (let item2 of newArr) {
if (item1[key] === item2[key]) {
flag = false
}
}
if (flag) {
newArr.push(item1)
}
}
return newArr
}
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)
if (response.code===0){
this.modifyDialogVisible = false
this.pageData()
}
},
async modify(id) {
const resp = await $.get(loc() + '/representativeInfo/' + id)
if (resp.code===0){
this.modifyUnitList = this.allUnitList;
this.representativeInfo = resp.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)
this.delegationList = 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.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 getAllMeeting()
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 getUnions(null)
this.allUnitList = await getUnits()
this.unitList = clone(this.allUnitList)
this.pageData()
}
await this.getRepresentativeRoleOptions()
}
})
</script>
<!--#
}
#-->
@@ -1,236 +0,0 @@
<!--#
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 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" filterable clearable placeholder="请选择届次" @change="jdhChange">
<el-option
v-for="item in jdhList"
: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 delegations"
: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="mt5 mb5">
<template
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('tamange')}">
<div class="btn-group tool-button">
<el-button size="medium" icon="el-icon-download" @click="exportList">导出Excel</el-button>
<el-button icon="el-icon-download" @click="downloadCommand({id:pageForm.jdhid})">
导出word名单
</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 shadow="never" class="mt20">
<el-table :data="tableData" @sort-change='pageOrder'>
<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" 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" sortable label="年龄" prop="age"></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 header-align="center" align="center" label="操作" width="100">
<template slot-scope="{row}">
<el-button size="mini" @click="openView(row)">查看</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',
mixins: [initTableMixins],
data() {
return {
tabShow: true,
dbtList: [],
jdhList: [],
unitList: [],
allUnitList: [],
unionList: [],
tableData: [],
delegations: [],
pageForm: {
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
}
},
async created() {
this.jdhList = await getAllMeeting()
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 getUnions(null);
this.allUnitList = await getUnits();
this.unitList = clone(this.allUnitList);
}
})
</script>
<!--#
}
#-->
@@ -1,245 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-input-number input {
text-align: left !important;
}
.el-loading-mask {
z-index: 30000 !important;
}
</style>
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<template #header>
<h3 style="color: rgb(24, 103, 176);">预选代表填报</h3>
</template>
<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>
</guava>
</div>
<script>
let E = window.wangEditor
let vita = null
var 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)
})
loading.close()
if(resp.code===0){
window.location.href = '/platform/jdh/db/preselection'
}else{
this.notifyWarning(resp.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 proposal.getOpenMeeting()
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>
<!--#
}
#-->
@@ -1,390 +0,0 @@
<!--#
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 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 placeholder="请选择教代会" v-model="pageForm.teacherMeetId" filterable style="width:180px;">
<el-option v-for="item in teacherMeets" :label="item.jdhallname" :value="item.id"
:key="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
</div>
<div class="btn-group tool-button pull-right offscreen-right">
<el-button type="primary" size="medium" icon="el-icon-plus" @click="openPreselectionDialog">预选
</el-button>
<el-button type="primary" size="medium" icon="el-icon-plus" @click="doConfirmMany">批量上报</el-button>
<el-button type="primary" size="medium" icon="el-icon-download" @click="doExport">导出</el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-table :data="tableData" @sort-change='pageOrder' @selection-change="(val)=>{tableSelections=val}"
ref="multipleTable">
<el-table-column
:selectable="(row)=>{return row.stateCode===0}"
type="selection"
width="55">
</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 sortable label="姓名" prop="userName" header-align="center"
align="center"></el-table-column>
<el-table-column label="工号" prop="loginName" header-align="center" align="center"></el-table-column>
<el-table-column sortable label="性别" prop="sex" header-align="center"
align="center">
<template scope="{row}">
<el-select v-model="row.sex" v-if="row.stateCode===0">
<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 label="民族" prop="nation" header-align="center" align="center" width="100">
<template scope="{row}">
<el-select filterable v-model="row.nation" v-if="row.stateCode===0">
<el-option v-for="n in nation" :key="n" :value="n" :label="n"></el-option>
</el-select>
<span v-else>{{row.nation}}</span>
</template>
</el-table-column>
<el-table-column label="政治面貌" prop="politicalOutlook" header-align="center"
align="center" show-overflow-tooltip>
<template scope="{row}">
<el-input maxlength="20" v-model="row.politicalOutlook" v-if="row.stateCode===0"></el-input>
<span v-else>{{row.politicalOutlook}}</span>
</template>
</el-table-column>
<el-table-column label="学历" prop="education" header-align="center" align="center"
width="150px"
show-overflow-tooltip>
<template scope="{row}">
<dict-select v-model="row.education" code="Education"
v-if="row.stateCode===0"></dict-select>
<span v-else>{{row.education}}</span>
</template>
</el-table-column>
<el-table-column label="行政职务" prop="administrativeTitle" header-align="center" align="center"
width="100">
<template scope="{row}">
<el-input v-model="row.administrativeTitle" v-if="row.stateCode===0"></el-input>
<span v-else>{{row.administrativeTitle}}</span>
</template>
</el-table-column>
<el-table-column label="专业技术职务" prop="technicalTitle" header-align="center" align="center"
width="200" show-overflow-tooltip>
<template scope="{row}">
<el-select v-model="row.technicalTitle" placeholder="请选择专业技术职务" v-if="row.stateCode===0">
<el-option-group
v-for="group in technicalTitleOptions"
:key="group.label"
:label="group.label">
<el-option
v-for="item in group.options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-option-group>
</el-select>
<!-- <dict-select v-model="row.technicalTitle" code="technical_position"-->
<!-- v-if="row.stateCode===0"></dict-select>-->
<!-- <el-input v-model="row.technicalTitle" v-if="row.stateCode===0"></el-input>-->
<span v-else>{{row.technicalTitle}}</span>
</template>
</el-table-column>
<el-table-column label="年龄<=40" prop="age" header-align="center" align="center" width="80px">
<template scope="{row}">
<el-input v-model="row.age" v-if="row.stateCode===0"></el-input>
<span v-else>{{row.age}}</span>
</template>
</el-table-column>
<el-table-column label="教学科研及双肩挑人员" prop="twoWork" header-align="center" align="center">
<template scope="{row}">
<el-checkbox v-model="row.twoWork"
:style="{'pointer-events':row.stateCode===0?'auto':'none'}"></el-checkbox>
</template>
</el-table-column>
<el-table-column label="教代会代表" prop="isJdh" header-align="center"
align="center">
<template scope="{row}">
<el-checkbox v-model="row.isJdh"
:style="{'pointer-events':row.stateCode===0?'auto':'none'}"></el-checkbox>
</template>
</el-table-column>
<el-table-column label="工代会代表" prop="isGdh" header-align="center" align="center">
<template scope="{row}">
<el-checkbox v-model="row.isGdh"
:style="{'pointer-events':row.stateCode===0?'auto':'none'}"></el-checkbox>
</template>
</el-table-column>
<el-table-column label="备注" prop="bz" header-align="center" align="center"
width="100">
<template scope="{row}">
<el-input v-model="row.bz" v-if="row.stateCode===0"></el-input>
<span v-else>{{row.bz}}</span>
</template>
</el-table-column>
<el-table-column sortable label="状态" prop="dbzt" header-align="center" align="center">
<template scope="{row}">
{{row.stateName}}
</template>
</el-table-column>
<el-table-column label="操作" width="200" align="center" fixed="right">
<template slot-scope="{row}">
<el-button v-if="row.stateCode===0" size="mini" @click="doConfirm(row)" type="primary">上报
</el-button>
<el-button v-if="row.stateCode===100" size="mini" @click="doRevoke(row)" type="warning">撤回
</el-button>
<el-button v-if="row.stateCode===0" size="mini" @click="doDelete(row)" type="danger">删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</template>
</guava>
<el-dialog
title="添加人员"
:visible.sync="dialogVisible"
width="45%"
:close-on-click-modal="false"
>
<el-transfer
@right-check-change="rightCheckChange"
@change="rightChange"
ref="transfer"
:titles="['可报人员名单', '当前选择']"
filterable
:props="{key: 'id',label: 'name'}"
:filter-method="filterMethod"
:right-default-checked="rightChecked"
v-model="userValue"
:data="userData">
</el-transfer>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="addPreselectionDb">确 定</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: [],
technicalTitleOptions: []
}
},
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
})
loading.close()
if(resp.code===0){
this.pageData()
this.dialogVisible = false
}else{
this.notifyWarning(resp.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
},
async getTechnicalTitleOptions() {
const resp = await $.get(loc() + '/getTechnicalTitleOptions')
if (resp.code === 0) {
this.technicalTitleOptions = resp.data
}
}
},
components: {
'db-info': httpVueLoader('/components/jdh/dbinfo.vue'),
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue'),
},
async created() {
await this.getTechnicalTitleOptions()
this.teacherMeets = await getAllMeeting()
if (this.teacherMeets && this.teacherMeets.length > 0) this.$set(this.pageForm, "teacherMeetId", this.teacherMeets[0].id)
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -1,409 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
</style>
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-input style="width: 250px;" placeholder="请输入关键字查询" v-model="pageForm.zlname">
</el-input>
</div>
<div class="btn-group tool-button">
<el-select clearable v-model="pageForm.jdhid" filterable placeholder="请选择教代会">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button" v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}">
<el-select clearable v-model="pageForm.union_id" filterable placeholder="请选择工会">
<el-option
v-for="item in unionOptions"
:key="item.id"
:label="item.unionname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select clearable v-model="pageForm.zllx" filterable placeholder="请选择工作资料类型">
<el-option
v-for="item in filelxList"
:key="item.id"
:label="item.lxname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></el-button>
</div>
<div class="pull-right offscreen-right">
<el-button type="primary" size="medium" @click="openAdd"><i class="ti-plus"></i> 新建工作资料</el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-table :data="tableData" @sort-change='pageOrder'>
<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 prop="zlname" label="资料名称">
</el-table-column>
<el-table-column sortable prop="jdhallname" label="所属教代会">
</el-table-column>
<el-table-column sortable prop="lxname" label="资料类型">
</el-table-column>
<el-table-column sortable prop="username" label="上传人">
</el-table-column>
<el-table-column sortable prop="unionname" label="工会">
</el-table-column>
<el-table-column sortable prop="time" label="上传时间">
</el-table-column>
<el-table-column sortable prop="ispass" label="是否通过">
<template slot-scope="scope">
<i v-if="scope.row.ispass === 0" class="fa fa-circle text-danger ml5"> 未通过</i>
<i v-if="scope.row.ispass === 1" class="fa fa-circle text-success ml5"> 通过</i>
</template>
</el-table-column>
<el-table-column prop="userOnline" label="操作" width="100px">
<template slot-scope="scope">
<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:scope.row}">
预览
</el-dropdown-item>
<el-dropdown-item :command="{type:'edit',data:scope.row}">
编辑
</el-dropdown-item>
<el-dropdown-item :command="{type:'delete',data:scope.row}">
删除
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
@size-change="pageSizeChange"
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
:page-sizes="[10, 20, 30, 50]"
:page-size="pageForm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</el-card>
</guava>
<el-dialog title="新建工作资料" :visible.sync="addDialogVisible">
<el-form :model="formData" ref="addForm" :rules="rules" label-width="100px">
<el-form-item label="上传人">
<el-input readonly value="${@shiro.getPrincipalProperty('username')}"></el-input>
</el-form-item>
<el-form-item prop="jdhid" label="所属教代会">
<el-select v-model="formData.jdhid" placeholder="选择教代会" style="width: 100%">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="zlname" label="资料名称">
<el-input placeholder="请填写工作资料名称" v-model="formData.zlname"></el-input>
</el-form-item>
<el-form-item prop="zllx" label="资料类型">
<el-select v-model="formData.zllx" placeholder="选择资料类型" style="width: 100%">
<el-option
v-for="item in filelxList"
:key="item.id"
:label="item.lxname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="ispass" label="是否通过">
<template>
<el-switch
v-model="formData.ispass"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
</template>
</el-form-item>
<el-form-item prop="files" label="附件上传">
<file-upload :files.sync="formData.files"></file-upload>
</el-form-item>
</el-form>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doAdd">确 定</el-button>
</span>
</el-dialog>
<el-dialog title="编辑筹备文件" :visible.sync="editDialogVisible">
<el-form :model="formData" ref="editForm" :rules="rules" label-width="100px">
<el-form-item label="上传人">
<el-input readonly v-model="formData.username"></el-input>
</el-form-item>
<el-form-item prop="jdhid" label="所属教代会">
<el-select v-model="formData.jdhid" placeholder="选择教代会" style="width: 100%">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhjs+'届'+item.jdhcs+'次教代会'"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="zlname" label="资料名称">
<el-input placeholder="请填写工作资料名称" v-model="formData.zlname"></el-input>
</el-form-item>
<el-form-item prop="zllx" label="资料类型">
<el-select v-model="formData.zllx" placeholder="选择资料类型" style="width: 100%">
<el-option
v-for="item in filelxList"
:key="item.id"
:label="item.lxname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="ispass" label="是否通过">
<template>
<el-switch
v-model="formData.ispass"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
</template>
</el-form-item>
<el-form-item prop="files" label="附件上传">
<file-upload :files.sync="formData.files"></file-upload>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="editDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doEdit">确 定</el-button>
</span>
</el-dialog>
<el-dialog title="阅览筹备文件" :visible.sync="viewDialogVisible">
<el-descriptions :column="2" border class="table_fixed">
<el-descriptions-item :span="2" label="资料名称">
{{formData.zlname}}
</el-descriptions-item>
<el-descriptions-item label="上传人">
{{formData.username}}
</el-descriptions-item>
<el-descriptions-item label="教代会">
{{formData.jdhallname}}
</el-descriptions-item>
<el-descriptions-item label="资料类型">
{{formData.lxname}}
</el-descriptions-item>
<el-descriptions-item label="是否通过">
{{formData.ispass?'通过':'不通过'}}
</el-descriptions-item>
<el-descriptions-item :span="2" label="附件">
<file-upload :files.sync="formData.files" view></file-upload>
</el-descriptions-item>
</el-descriptions>
<span slot="footer" class="dialog-footer">
<el-button @click="viewDialogVisible = false">关 闭</el-button>
</span>
</el-dialog>
</div>
<script>
let vue = new Vue({
el: "#app",
components: {
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
},
data() {
return {
addDialogVisible: false,
editDialogVisible: false,
viewDialogVisible: false,
tableData: [],
jdhList: [],
filelxList: [],
fileList: [],
pageForm: {
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: "",
pageOrderBy: "",
zlname: "",
union_id: ""
},
formData: {},
rules: {
jdhid: [{required: true, message: '请填写所属教代会', trigger: ['blur', 'change']}],
zlname: [{required: true, message: '请填写所属教代会', trigger: ['blur', 'change']}],
zllx: [{required: true, message: '请填写资料类型', trigger: ['blur', 'change']}],
},
delFiles: [],
unionOptions: []
}
},
methods: {
openView(row) {
const formData = clone(row)
formData.files = JSON.parse(formData.files || "[]")
this.formData = formData
this.viewDialogVisible = true
},
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'edit') {
this.openEdit(data)
} else if (type == 'delete') {
this.doDelete(data.id, data.filepath)
}
},
handleChange: function (file, filelist) {
this.fileList = filelist;
},
handleRemove(file, filelist) {
if (file.status === 'success') {
this.fileList = filelist;
this.delFiles.push({fileid: file.id, filepath: file.url})
}
},
onDeleteFile(file) {
if (file.status === 2) {
console.log(file)
this.delFiles.push({fileid: file.fileDes.id, filepath: file.fileDes.filepath})
}
},
doDelete(id, filepath) {
this.$confirm('确定要删除吗', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
$.post(base + '/platform/jdh/cb/cbwj/doDelete', {id: id, filepath: filepath}).then(res => {
if (res.code === 0) {
this.doSearch()
this.$message.success(res.msg)
}
})
}).catch(() => {
})
},
doEdit() {
this.$refs['editForm'].validate(async (valid) => {
if (valid) {
const formData = clone(this.formData)
formData.files = JSON.stringify(formData.files)
const resp = await $.post('/platform/jdh/cb/cbwj/doEdit', formData)
if (resp.code===0){
this.editDialogVisible = false
this.pageData()
}
}
})
},
doSearch() {
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() {
sublime.showLoadingbar()
$.post(base + '/platform/jdh/cb/cbwj/pageData', this.pageForm).then(res => {
sublime.closeLoadingbar()
if (res.code === 0) {
this.tableData = res.data.list
this.pageForm.totalCount = res.data.totalCount
}
})
},
openEdit(obj) {
if (this.$refs["editForm"])
this.$refs["editForm"].resetFields()
const formData = clone(obj)
formData.files = JSON.parse(formData.files || "[]")
formData.ispass = formData.ispass === 1
this.formData = formData
this.editDialogVisible = true
},
openAdd() {
if (this.$refs["addForm"])
this.$refs["addForm"].resetFields()
this.formData = {files: []}
this.addDialogVisible = true
},
doAdd() {
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
});
this.$refs['addForm'].validate(async valid => {
if (valid) {
const formData = clone(this.formData)
formData.files = JSON.stringify(formData.files)
const resp = await $.post('/platform/jdh/cb/cbwj/doAdd', formData)
if (resp.code===0){
this.addDialogVisible = false
this.pageData()
loading.close()
}
}
})
}
},
async created() {
this.jdhList = await proposal.getAllMeeting()
this.filelxList = await getGzzllx()
this.unionOptions = await getUnions()
if (this.jdhList.length > 0) {
this.$set(this.pageForm, "jdhid", this.jdhList[0].id)
this.pageData()
}
}
})
</script>
<!--#
}
#-->
@@ -1,217 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-input style="width: 350px;" clearable placeholder="请输入工作资料类型名称" v-model="pageForm.lxname"></el-input>
</div>
<div class="btn-group tool-button">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></el-button>
</div>
<div class="pull-right offscreen-right">
<el-button type="primary" size="medium" @click="openAdd"><i class="ti-plus"></i> 新增工作资料类型</el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-table :data="tableData">
<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="code"></el-table-column>
<el-table-column align="center" header-align="center" label="工作资料类型名称" prop="lxname"></el-table-column>
<el-table-column align="center" header-align="center" label="操作" width="150px">
<template scope="scope">
<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:'top',data:scope.row}" v-if="scope.row.xh!==1">
上移
</el-dropdown-item>
<el-dropdown-item :command="{type:'edit',data:scope.row}">
编辑
</el-dropdown-item>
<el-dropdown-item :command="{type:'delete',data:scope.row}">
删除
</el-dropdown-item>
<el-dropdown-item :command="{type:'bottom',data:scope.row}"
v-if="scope.row.xh!==pageForm.totalCount">
下移
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
layout="total, prev, pager, next, jumper"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</el-card>
</guava>
<el-dialog title="新增工作资料类型" :visible.sync="addDialogVisible" width="30%">
<el-form :model="formData" ref="addForm" :rules="rules">
<el-form-item prop="code" label="类型编码">
<el-input v-model="formData.code" placeholder="请输入工作资料类型编码"></el-input>
</el-form-item>
<el-form-item prop="lxname" label="类型名称">
<el-input v-model="formData.lxname" placeholder="请输入工作资料类型名称"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doAdd">确 定</el-button>
</span>
</el-dialog>
<el-dialog title="编辑工作资料类型" :visible.sync="editDialogVisible" width="30%">
<el-form :model="formData" ref="editForm" :rules="rules">
<el-form-item prop="code" label="类型编码">
<el-input v-model="formData.code" placeholder="请输入工作资料类型编码"></el-input>
</el-form-item>
<el-form-item prop="lxname" label="类型名称">
<el-input v-model="formData.lxname" placeholder="请输入工作资料类型名称"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="editDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doEdit">确 定</el-button>
</span>
</el-dialog>
</div>
<script>
new Vue({
el: '#app',
data() {
return {
pageForm: {
pageNumber: 1,
pageSize: 10,
totalCount: 0,
lxname: ''
},
addDialogVisible: false,
editDialogVisible: false,
formData: {},
rules: {
lxname: [{required: true, message: '请输入工作资料类型名称', trigger: ['change', 'blur']}],
code: [{required: true, message: '请输入工作资料类型编码', trigger: ['change', 'blur']}]
},
tableData: []
}
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'top') {
this.rowChange(data, false)
} else if (type == 'edit') {
this.openEdit(data)
} else if (type == 'delete') {
this.doDelete(data.id)
} else if (type == 'bottom') {
this.rowChange(data, true)
}
},
rowChange(row, toDown) {
$.post(base + '/platform/jdh/gzzllx/xhChange', {id: row.id, xh: row.xh, toDown}).then(res => {
if (res.code === 0) {
this.doSearch()
}
})
},
openAdd() {
this.formData = {}
this.addDialogVisible = true
if (this.$refs["addForm"])
this.$refs["addForm"].resetFields()
},
doAdd() {
this.$refs['addForm'].validate(valid => {
if (valid) {
$.post(base + '/platform/jdh/gzzllx/doAdd', this.formData).then(res => {
if (res.code === 0) {
this.addDialogVisible = false
this.pageData()
this.$message.success(res.msg)
} else {
this.$message.error(res.msg)
}
})
}
})
},
pageData() {
sublime.showLoadingbar()
$.post(base + '/platform/jdh/gzzllx/pageData', this.pageForm).then(res => {
sublime.closeLoadingbar()
if (res.code === 0) {
this.tableData = res.data.list
this.pageForm.totalCount = res.data.totalCount
}
})
},
doSearch() {
this.pageForm.pageNumber = 1
this.pageData()
},
pageNumberChange(val) {
this.pageForm.pageNumber = val
this.pageData()
},
openEdit(obj) {
this.formData = JSON.parse(JSON.stringify(obj))
this.editDialogVisible = true
},
doEdit() {
this.$refs['editForm'].validate(valid => {
if (valid) {
$.post(base + '/platform/jdh/gzzllx/doEdit', this.formData).then(res => {
if (res.code === 0) {
this.editDialogVisible = false
this.pageData()
this.$message.success(res.msg)
} else {
this.$message.error(res.msg)
}
})
}
})
},
doDelete(id) {
this.$confirm('此操作将删除工作资料类型,确认删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
$.post(base + '/platform/jdh/gzzllx/doDelete', {id: id}).then(res => {
if (res.code === 0) {
this.doSearch()
this.$message.success(res.msg)
}
})
}).catch(() => {
})
}
},
created() {
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -1,620 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.flex {
display: flex;
}
.flex > .el-form-item {
width: 50% !important;
}
.el-form-item .el-select {
width: 100% !important;
}
</style>
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-input style="width: 250px;" clearable placeholder="请输入名称查询" v-model="pageForm.name"></el-input>
</div>
<div class="btn-group tool-button">
<el-select clearable v-model="pageForm.jdhid" filterable placeholder="请选择教代会">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select clearable v-model="pageForm.lx" placeholder="类型" style="width: 100px;">
<el-option label="会议" value="1"></el-option>
<el-option label="活动" value="2"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></el-button>
</div>
<div class="pull-right offscreen-right">
<el-button type="primary" size="medium" @click="openAdd"><i class="ti-plus"></i> 新增会议及活动</el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-table :data="tableData" @sort-change='pageOrder'>
<el-table-column align="center" header-align="center" 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" header-align="center" label="会议或活动名称" prop="name"></el-table-column>
<el-table-column align="center" header-align="center" label="教代会" prop="jdhallname"></el-table-column>
<el-table-column align="center" header-align="center" label="开始时间" prop="kssj"></el-table-column>
<el-table-column align="center" header-align="center" label="结束时间" prop="jssj"></el-table-column>
<el-table-column align="center" header-align="center" label="场地" prop="cd"></el-table-column>
<el-table-column align="center" header-align="center" label="类型" prop="lx">
<template slot-scope="scope">
<span class="text-primary" v-if="scope.row.lx===1">会议</span>
<span class="text-primary" v-if="scope.row.lx===2">活动</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="状态">
<template slot-scope="{row}">
<span class="text-warning" v-if="moment().format('YYYY-MM-DD HH:mm:ss')<row.kssj">准备中</span>
<span class="text-primary"
v-if="row.kssj<moment().format('YYYY-MM-DD HH:mm:ss') && moment().format('YYYY-MM-DD HH:mm:ss')<row.jssj">进行中</span>
<span class="text-danger" v-if="moment().format('YYYY-MM-DD HH:mm:ss')>row.jssj">已结束</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="操作" width="350">
<template slot-scope="{row}">
<el-button size="mini" type="primary" @click="openView(row.id)">查看</el-button>
<el-button @click="openCy(row.id)" size="mini" type="primary"
v-if="moment().format('YYYY-MM-DD')<row.jssj">
人员设置
</el-button>
<el-button size="mini" type="primary" @click="openEdit(row)">编辑</el-button>
<el-button size="mini" type="danger" @click="doDelete(row.id)">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</guava>
<el-dialog title="新增会议及活动" :visible.sync="addDialogVisible">
<el-form ref="AddForm" :model="formData" :rules="rules" label-width="100px">
<el-form-item label="发布人">
<el-input value="${@shiro.getPrincipalProperty('username')}"></el-input>
</el-form-item>
<el-form-item label="名称" prop="name">
<el-input v-model="formData.name" maxlength="30"></el-input>
</el-form-item>
<div class="flex">
<el-form-item label="类型" prop="lx">
<el-select v-model="formData.lx">
<el-option label="会议" value="1"></el-option>
<el-option label="活动" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="教代会" prop="jdhid">
<el-select v-model="formData.jdhid">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</div>
<div class="flex">
<el-form-item label="时间" prop="sj">
<el-date-picker
style="width: 100%"
v-model="formData.sj"
type="datetimerange"
value-format="yyyy-MM-dd HH:mm:ss"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="['12:00:00', '08:00:00']">
</el-date-picker>
</el-form-item>
<el-form-item label="经费预算" prop="jfys">
<el-input placeholder="请输入内容" v-model="formData.jfys" oninput="value=value.replace(/[^\d.]/g,'')">
<template slot="append"></template>
</el-input>
</el-form-item>
</div>
<el-form-item label="场地" prop="cd">
<el-input placeholder="请输入场地地点" v-model="formData.cd" maxlength="100">
</el-input>
</el-form-item>
<el-form-item label="内容" prop="nr">
<el-input v-model="formData.nr" type="textarea" rows="5" maxlength="500" show-word-limit>
</el-input>
</el-form-item>
<el-form-item label="纪要" prop="jy">
<el-input v-model="formData.jy" type="textarea" rows="5" maxlength="500" show-word-limit>
</el-input>
</el-form-item>
<el-form-item label="附件">
<wp-upload ref="addwp"
:upload-auto="false"
max-file-number="1"
allow-files="['doc','docx']"></wp-upload>
<div>只能上传doc、docx类型的文件</div>
</el-form-item>
<!-- <el-form-item label="附件上传">-->
<!-- <el-upload-->
<!-- name="file"-->
<!-- multiple="false"-->
<!-- :auto-upload="false"-->
<!-- limit="1"-->
<!-- action="#"-->
<!-- :on-change="handleChange"-->
<!-- :file-list="fileList">-->
<!-- <el-button size="small" type="primary">选取文件</el-button>-->
<!-- </el-upload>-->
<!-- </el-form-item>-->
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doAdd">确 定</el-button>
</span>
</el-dialog>
<el-dialog title="编辑会议及活动" :visible.sync="editDialogVisible">
<el-form ref="EditForm" :model="formData" :rules="rules" label-width="100px">
<el-form-item label="发布人">
<el-input v-model="formData.username"></el-input>
</el-form-item>
<el-form-item label="名称" prop="name">
<el-input v-model="formData.name" maxlength="30"></el-input>
</el-form-item>
<div class="flex">
<el-form-item label="类型" prop="lx">
<el-select v-model="formData.lx">
<el-option label="会议" value="1"></el-option>
<el-option label="活动" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="教代会" prop="jdhid">
<el-select v-model="formData.jdhid">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</div>
<div class="flex">
<el-form-item label="时间" prop="sj">
<el-date-picker
style="width: 100%"
v-model="formData.sj"
type="datetimerange"
value-format="yyyy-MM-dd HH:mm:ss"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="['12:00:00', '08:00:00']">
</el-date-picker>
</el-form-item>
<el-form-item label="经费预算" prop="jfys">
<el-input placeholder="请输入内容" v-model="formData.jfys" oninput="value=value.replace(/[^\d.]/g,'')">
<template slot="append"></template>
</el-input>
</el-form-item>
</div>
<el-form-item label="场地" prop="cd">
<el-input placeholder="请输入场地地点" v-model="formData.cd" maxlength="100">
</el-input>
</el-form-item>
<el-form-item label="内容" prop="nr">
<el-input v-model="formData.nr" type="textarea" rows="5" maxlength="200">
</el-input>
</el-form-item>
<el-form-item label="纪要" prop="jy">
<el-input v-model="formData.jy" type="textarea" rows="5" maxlength="200">
</el-input>
</el-form-item>
<el-form-item label="附件">
<wp-upload ref="editwp"
@on-delete="onDeleteFile"
:file-list="fileList"
:upload-auto="false"
max-file-number="1"
allow-files="['doc','docx']"></wp-upload>
<div>只能上传doc、docx类型的文件</div>
</el-form-item>
<!-- <el-form-item label="附件上传">
<el-upload
name="file"
multiple="false"
:auto-upload="false"
limit="1"
action="#"
:on-change="handleChange"
:on-remove="handleRemove"
:file-list="fileList">
<el-button size="small" type="primary">选取文件</el-button>
<div slot="tip" class="el-upload__tip">只能上传doc/docx文件</div>
</el-upload>
</el-form-item>-->
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="editDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doEdit">确 定</el-button>
</span>
</el-dialog>
<el-dialog title="参与人员设置" :visible.sync="userDialogVisible">
<el-row>
<div class="btn-group tool-button">
<div>
<el-select
size="mini"
style="width: 400px"
v-model="userFormData.userid"
filterable
remote
reserve-keyword
placeholder="请输入工号或姓名关键字"
:remote-method="queryUser"
>
<el-option
v-for="item in userList"
:key="item.id"
:label="item.loginname+' '+item.username+' '+item.dwname"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
<div class="btn-group tool-button">
<el-button size="mini" type="primary" @click="doAddUser" icon="el-icon-circle-plus">添加</el-button>
</div>
</el-row>
<el-row style="margin-top: 15px">
<el-table :data="userTableData" height="350">
<el-table-column align="center" header-align="center" sortable prop="loginname"
label="工号"></el-table-column>
<el-table-column align="center" header-align="center" sortable prop="username"
label="姓名"></el-table-column>
<el-table-column align="center" header-align="center" sortable prop="sex" label="性别"></el-table-column>
<el-table-column align="center" header-align="center" sortable prop="dwname"
label="所属单位"></el-table-column>
<el-table-column align="center" header-align="center" sortable prop="mobile"
label="手机号码"></el-table-column>
<el-table-column align="center" header-align="center" label="操作" width="150">
<template slot-scope="scope">
<el-button @click="doDeleteUser(scope.row.id)" size="mini" type="danger"
icon="el-icon-delete"></el-button>
</template>
</el-table-column>
</el-table>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button type="danger" @click="userDialogVisible = false">关 闭</el-button>
</span>
</el-dialog>
<el-dialog title="查看" :visible.sync="viewDialogVisible">
<el-descriptions :column="2" border class="table_fixed">
<el-descriptions-item label="教代会">
{{ viewData.data.jdhallname }}
</el-descriptions-item>
<el-descriptions-item label="类型">
{{viewData.data.lx===1?'会议':'活动'}}
</el-descriptions-item>
<el-descriptions-item label="开始时间">
{{viewData.data.kssj}}
</el-descriptions-item>
<el-descriptions-item label="结束时间">
{{viewData.data.jssj}}
</el-descriptions-item>
<el-descriptions-item label="发布人">
{{viewData.data.username}}
</el-descriptions-item>
<el-descriptions-item label="经费预算">
{{viewData.data.jfys}}元
</el-descriptions-item>
<el-descriptions-item :span="2" label="内容">
{{viewData.data.nr}}
</el-descriptions-item>
<el-descriptions-item :span="2" label="纪要">
{{viewData.data.jy}}
</el-descriptions-item>
<el-descriptions-item :span="2" label="参与人员">
<el-tag v-for="u in viewData.userList" v-if="viewData.userList.length>0"
effect="light" type="info" class="mr5">
{{u.username}}
</el-tag>
<div v-else class="text-center">暂无</div>
</el-descriptions-item>
<el-descriptions-item :span="2" label="附件">
<el-link @click="dd3s.preview(f.filepath,f.id)" type="primary" v-for="f in viewData.fileList"
v-if="viewData.fileList.length>0">
{{f.filename}}
</el-link>
<div v-else class="text-center">暂无</div>
</el-descriptions-item>
</el-descriptions>
</el-dialog>
</div>
<script>
const rules = {
name: [{required: true, message: '请填写名称', trigger: ['blur', 'change']}],
lx: [{required: true, message: '请选择类型', trigger: ['blur', 'change']}],
jdhid: [{required: true, message: '请选择教代会', trigger: ['blur', 'change']}],
sj: [{required: true, message: '请选择时间', trigger: ['blur', 'change']}],
jfys: [{required: true, message: '请填写经费预算', trigger: ['blur', 'change']}],
cd: [{required: true, message: '请填写场地名称', trigger: ['blur', 'change']}],
nr: [{required: true, message: '请填写内容', trigger: ['blur', 'change']}],
jy: [{required: true, message: '请填写纪要', trigger: ['blur', 'change']}],
}
let vue = new Vue({
el: '#app',
data() {
return {
pageForm: {
pageNumber: 1,
pageSize: 10,
totalCount: 0,
name: '',
lx: null,
jdhid: ''
},
jdhList: [],
addDialogVisible: false,
formData: {},
rules: rules,
tableData: [],
fileList: [],
editDialogVisible: false,
delFile: [],
userDialogVisible: false,
userFormData: {},
userTableData: [],
userList: [],
viewData: {
data: {},
fileList: [],
userList: []
},
viewDialogVisible: false
}
},
methods: {
onDeleteFile(file) {
this.delFile.push({fileid: file.fileDes.id, filepath: file.fileDes.filepath})
},
openAdd() {
this.formData = {}
if (this.$refs.addwp) {
this.$refs.addwp.clean()
}
this.addDialogVisible = true
},
doAdd() {
this.$refs['AddForm'].validate(valid => {
if (valid) {
this.formData.kssj = this.formData.sj[0]
this.formData.jssj = this.formData.sj[1]
let formData = new FormData()
formData.append("data", JSON.stringify(this.formData))
// this.fileList.forEach(val=>{
// formData.append("file",val.raw)
// })
if (this.$refs.addwp.fileShowArray.length > 0) {
formData.append("file", this.$refs.addwp.fileShowArray[0].file)
}
$.ajax({
url: base + '/platform/jdh/hyjhd/doAdd',
type: "post",
data: formData,
processData: false,
contentType: false
}).then(res => {
if (res.code === 0) {
this.addDialogVisible = false
this.pageData()
this.$message.success(res.msg)
}
})
}
})
},
pageData() {
sublime.showLoadingbar()
$.post(base + '/platform/jdh/hyjhd/pageData', this.pageForm).then(res => {
sublime.closeLoadingbar()
if (res.code === 0) {
this.tableData = res.data.list
this.pageForm.totalCount = res.data.totalCount
}
})
},
doSearch() {
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()
},
openEdit(row) {
this.editDialogVisible = true
$.get(base + '/platform/jdh/hyjhd/findOne', {id: row.id}).then(res => {
if (res.code === 0) {
this.formData = res.data.data
this.formData.sj = [res.data.data.kssj, res.data.data.jssj]
this.formData.lx = this.formData.lx.toString()
for (let f of res.data.fileList) {
f.name = f.filename
f.url = '${AppFileDomain!}' + f.filepath
}
this.fileList = res.data.fileList
this.$nextTick(() => {
this.$refs.editwp.refreshFileList()
})
}
})
},
doEdit() {
this.$refs['EditForm'].validate(valid => {
if (valid) {
this.formData.kssj = this.formData.sj[0]
this.formData.jssj = this.formData.sj[1]
let formData = new FormData()
formData.append("data", JSON.stringify(this.formData))
formData.append("delFile", JSON.stringify(this.delFile))
if (this.$refs.editwp.fileShowArray.length > 0) {
if (this.$refs.editwp.fileShowArray[0].status === 0) {
formData.append("file", this.$refs.editwp.fileShowArray[0].file)
}
}
$.ajax({
url: base + '/platform/jdh/hyjhd/doEdit',
type: "post",
data: formData,
processData: false,
contentType: false
}).then(res => {
if (res.code === 0) {
this.editDialogVisible = false
this.pageData()
this.$message.success(res.msg)
}
})
}
})
},
doDelete(id) {
this.$confirm('确认删除吗,是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
$.post(base + '/platform/jdh/hyjhd/doDelete', {id: id}).then(res => {
if (res.code === 0) {
console.log(res)
this.$message.success(res.msg)
this.pageData()
}
})
}).catch(() => {
})
},
openCy(id) {
this.userFormData.id = id
this.userData()
this.userDialogVisible = true
},
userData(id) {
$.get(base + '/platform/jdh/hyjhd/userData', {id: this.userFormData.id}).then(res => {
if (res.code === 0) {
this.userTableData = res.data
}
})
},
queryUser(query) {
if (query !== '') {
$.get(base + '/platform/jdh/hyjhd/queryUser', {
query: query,
id: this.userFormData.id
}).then(res => {
if (res.code === 0) {
this.userList = res.data
}
})
}
},
doAddUser() {
if (this.userFormData.userid === '') {
this.$message.info('请先选择用户!')
return
}
$.post(base + '/platform/jdh/hyjhd/doAddUser', this.userFormData).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.userFormData.userid = ''
this.userList = []
this.userData()
}
})
},
doDeleteUser(userid) {
$.post(base + '/platform/jdh/hyjhd/doDeleteUser', {
id: this.userFormData.id,
userid: userid
}).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.userFormData.userid = ''
this.userList = []
this.userData()
}
})
},
openView(id) {
this.viewDialogVisible = true
$.get(base + '/platform/jdh/hyjhd/findOne', {id: id}).then(res => {
if (res.code === 0) {
this.viewData = res.data
this.$set(this.viewData, "userList", [])
$.get(base + '/platform/jdh/hyjhd/userData', {id: id}).then(res => {
if (res.code === 0) {
this.$set(this.viewData, "userList", res.data)
}
})
}
})
}
},
async created() {
this.jdhList = await proposal.getOpenMeeting()
if (this.jdhList.length > 0) {
this.pageForm.jdhid = this.jdhList[0].id
this.pageData()
}
}
})
</script>
<!--#
}
#-->
-161
View File
@@ -1,161 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-select {
width: 100%;
}
</style>
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<el-select v-model="pageForm.jdhid" @change="jdhChange" placeholder="请选择教代会">
<el-option
v-for="item in JdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</el-card>
<el-row type="flex" class="mt20" :gutter="10">
<el-col :span="18">
<el-card shadow="never">
<vi-title title="代表结构"></vi-title>
<div id="db_plot_box" ref="db_box" :style="{height:db_box_height+'px'}"></div>
</el-card>
</el-col>
<el-col :span="6">
<el-card shadow="never" style="height: 100%">
<vi-title title="代表团"></vi-title>
<el-table ref="dbtTable" :data="dbt" :height="dbtTableHeight" show-summary>
<el-table-column label="代表团" prop="dbtname" show-overflow-tooltip>
<template scope="{row}">
{{row.delegationName}}{{isDisPlayCode?''+row.delegationCode+'':null}}
</template>
</el-table-column>
<el-table-column label="代表人数" prop="num"></el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</guava>
</div>
<script>
let dbPlot = null
let vue = new Vue({
el: '#app',
data() {
return {
pageForm: {
jdhid: '',
},
JdhList: [],
dbt: [],
hyhdTableData: [],
dbOptions: {
xAxis: {
type: 'category',
data: [],
axisLabel: {
interval: 0
}
},
yAxis: {
type: 'value'
},
series: [{
label: {
normal: {
show: true,
position: 'top'
}
},
data: [],
type: 'bar',
showBackground: true,
itemStyle: {
//通常情况下:
normal: {
//每个柱子的颜色即为colorList数组里的每一项,如果柱子数目多于colorList的长度,则柱子颜色循环使用该数组
color: function (params) {
var colorList = ['#CE0000', 'rgb(42,170,227)', 'rgb(42,170,227)', 'rgb(42,170,227)', '#FFDCB9', '#FFDCB9', '#FFDCB9', '#FFDCB9', '#FFDCB9', '#FFDCB9'];
return colorList[params.dataIndex];
}
},
}
}]
},
dbtTableHeight: null,
db_box_height: null
}
},
methods: {
async jdhChange(jdhid) {
const resp_data = await $.get(base + '/platform/jdh/sjkb/getData', {jdhid})
this.dbt = resp_data.data.dbt
this.hyhdTableData = resp_data.data.hyhd
const keys = Object.keys(resp_data.data.db)
let dbData = []
keys.map(v => {
dbData.push({name: v, num: resp_data.data.db[v]})
})
if (dbPlot) {
dbPlot.destroy()
}
dbPlot = new G2Plot.Column('db_plot_box', {
data: dbData,
xField: 'name',
yField: 'num',
label: {
position: 'middle',
style: {
fill: '#FFFFFF',
opacity: 0.6,
},
},
xAxis: {
label: {
autoHide: true,
autoRotate: false,
},
},
meta: {
name: {
alias: '类别',
},
num: {
alias: '人数',
}
},
})
dbPlot.render()
}
},
mounted() {
setTimeout(() => {
this.db_box_height = (window.innerHeight - 10) - this.$refs.db_box.getBoundingClientRect().top - 20
this.dbtTableHeight = (window.innerHeight - 20 - 20) - this.$refs.dbtTable.$el.getBoundingClientRect().top
window.onresize = () => {
this.db_box_height = (window.innerHeight - 10) - this.$refs.db_box.getBoundingClientRect().top - 20
this.dbtTableHeight = (window.innerHeight - 20 - 20) - this.$refs.dbtTable.$el.getBoundingClientRect().top
}
}, 100)
},
async created() {
this.JdhList = await proposal.getOpenMeeting()
if (this.JdhList.length > 0) {
this.pageForm.jdhid = this.JdhList[0].id
this.jdhChange(this.pageForm.jdhid)
}
}
})
</script>
<!--#
}
#-->
@@ -1,404 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.box-card {
border-radius: 16px;
padding-right: 80px;
}
.el-divider {
background-color: #409EFF;
}
.el-divider__text.is-left {
color: #409EFF;
font-weight: 600;
font-size: 15px;
}
.el-date-editor.el-input, .el-date-editor.el-input__inner, .el-select {
width: 100%;
}
.item-button {
text-align: center;
}
.item-button .el-button {
padding: 12px 100px;
}
.el-select-dropdown, .el-picker-panel, .el-loading-mask {
z-index: 99999 !important;
}
</style>
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<template #header>
<h3 style="color:#1867b0">双代会请示</h3>
</template>
<el-form ref="addForm" :model="formData" :rules="formRules" label-width="120px">
<el-row :gutter="40">
<el-col :span="12">
<el-form-item prop="jdhjs" label="届数">
<el-select @change="jdhjsChange" v-model="formData.jdhjs" filterable clearable style="width: 100%"
placeholder="届数">
<el-option v-for="item in jsList" :key="item.id" :label="item.name"
:value="item.code">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="jdhcs" label="次数">
<el-select @change="jdhcsChange" v-model="formData.jdhcs" filterable clearable
style="width: 100%"
placeholder="次数">
<el-option v-for="item in csOptions" :key="item.id" :label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="40">
<el-col :span="12">
<el-form-item label="会议名称" prop="meeting_name">
<el-input
placeholder="请填写会议名称"
v-model="formData.meeting_name"
clearable
maxlength="100">
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<!--<el-form-item label="有无选举事项" prop="have_elect">
<el-radio-group v-model="formData.have_elect">
<el-radio-button :label="true">有</el-radio-button>
<el-radio-button :label="false">无</el-radio-button>
</el-radio-group>
</el-form-item>-->
<el-form-item label="类型" prop="type">
<el-radio-group v-model="formData.type">
<el-radio-button label="换届会">换届会</el-radio-button>
<el-radio-button label="届中会">届中会</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="40">
<el-col :span="12">
<el-form-item label="申请单位" prop="unit_name">
<el-input placeholder="申请单位"
:clearable="false"
readonly
v-model="formData.unit_name">
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所在工会" prop="union_name">
<el-input placeholder="所在工会"
:clearable="false"
readonly
v-model="formData.union_name">
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="40">
<el-col :span="12">
<el-form-item label="会议时间" prop="meeting_time">
<el-date-picker
v-model="formData.meeting_time"
type="datetime"
format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm"
:clearable="false"
placeholder="选择会议时间">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="申请时间" prop="create_time">
<el-input placeholder="申请时间"
:clearable="false"
readonly
v-model="formData.create_time">
</el-input>
</el-form-item>
</el-col>
<!--<el-col :span="12">
<el-form-item label="上一次会议时间" prop="before_meeting_time">
<el-date-picker
v-model="formData.before_meeting_time"
type="datetime"
format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm"
:clearable="false"
placeholder="选择上一次会议时间">
</el-date-picker>
</el-form-item>
</el-col>-->
</el-row>
<!--<el-row :gutter="40">
<el-col :span="12">
<el-form-item label="正式代表人数" prop="official_delegate">
<el-input v-model="formData.official_delegate"
oninput="value=value.replace(/[^\d]/g,'')"
placeholder="请输入正式代表人数"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="其中教师" prop="teacher_delegate">
<el-input v-model="formData.teacher_delegate" oninput="value=value.replace(/[^\d]/g,'')"
placeholder="请输入教师代表人数"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="40">
<el-col :span="12">
<el-form-item label="列席代表人数" prop="attend_delegate">
<el-input v-model="formData.attend_delegate" oninput="value=value.replace(/[^\d]/g,'')"
placeholder="请输入列席代表人数"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="其中特邀" prop="special_delegate">
<el-input v-model="formData.special_delegate" oninput="value=value.replace(/[^\d]/g,'')"
placeholder="请输入特邀代表人数"></el-input>
</el-form-item>
</el-col>
</el-row>-->
<el-form-item label="会议议程" prop="meeting_topic" class="is-required">
<div id="meetingTopicRich"></div>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input maxlength="500" type="textarea" :rows="4" placeholder="请输入备注"
v-model="formData.remark"></el-input>
</el-form-item>
<el-form-item prop="files" label="请示附件" class="is-required">
<file-upload :max="1" :files.sync="formData.files">
<template #el-upload__tip>
<div class="el-upload__tip" slot="tip">图片类请上传jpg/png/jpeg等格式,文档类请上传doc/docx/xls/xlsx/pdf等格式,上传数量为1个</div>
</template>
</file-upload>
</el-form-item>
<el-form-item style="text-align: right">
<el-button type="danger" @click="resetForm">重 置
</el-button>
<el-button type="primary" @click="operation" :loading="subLoading">提 交</el-button>
</el-form-item>
</el-form>
</el-card>
</guava>
</div>
<script>
function getQueryVariable(variable) {
let query = window.location.search.substring(1);
let vars = query.split("&");
for (let i = 0; i < vars.length; i++) {
let pair = vars[i].split("=");
if (pair[0] == variable) {
return pair[1];
}
}
return '';
}
let E = window.wangEditor
let meetingTopicRich = null
var vue = new Vue({
el: '#app',
data() {
const meetingTopicValid = (rule, value, callback) => {
if (!this.formData.meeting_topic || !dd3s.html2txt(this.formData.meeting_topic)) {
callback(new Error('请填写会议议题'));
} else {
callback();
}
};
const filesValid = (rule, value, callback) => {
if (!this.formData.files || this.formData.files.length === 0) {
callback(new Error('请上传请示附件'));
} else {
callback();
}
};
return {
jsList: [],
csOptions: [
{id: "一", name: "一次"},
{id: "二", name: "二次"},
{id: "三", name: "三次"},
{id: "四", name: "四次"},
{id: "五", name: "五次"},
{id: "六", name: "六次"},
],
subLoading: false,
sessionOptions: [],
formData: {
meeting_name: '',
have_elect: false,
unit_name: '${@shiro.getPrincipalProperty("unit").getName()}',
union_name: '${@shiro.getPrincipalProperty("union").getUnionname()}',
create_time: moment(new Date()).format("YYYY-MM-DD"),
meeting_time: '',
before_meeting_time: '',
session_num: '',
frequency: '',
official_delegate: '',
teacher_delegate: '',
attend_delegate: '',
special_delegate: '',
meeting_topic: '',
remark: '',
files: [],
type: '届中会'
},
formRules: {
meeting_name: [{required: true, message: '请填写会议标题', trigger: ['blur', 'change']}],
session_id: [{required: true, message: '请选择届次', trigger: ['blur', 'change']}],
jdhjs: [{required: true, message: '请选择届数', trigger: ['blur', 'change']}],
type: [{required: true, message: '请选择类型', trigger: ['blur', 'change']}],
have_elect: [{required: true, message: '请选择有无选举事项', trigger: ['blur', 'change']}],
unit_name: [{required: true, message: '请选择填表单位', trigger: ['blur', 'change']}],
create_time: [{required: true, message: '请选择填表日期', trigger: ['blur', 'change']}],
meeting_time: [{required: true, message: '请选择会议时间', trigger: ['blur', 'change']}],
session_num: [{required: true, message: '请选择届数', trigger: ['blur', 'change']}],
frequency: [{required: true, message: '请选择次数', trigger: ['blur', 'change']}],
official_delegate: [{required: true, message: '请填写正式代表人数', trigger: ['blur', 'change']}],
meeting_topic: [{validator: meetingTopicValid, trigger: ['blur', 'change']}],
files: [{validator: filesValid, trigger: ['blur', 'change']}],
}
}
},
components: {
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue')
},
methods: {
jdhjsChange(o) {
const j = this.formData.jdhjs ? ('第' + this.formData.jdhjs + '届') : ''
const c = this.formData.jdhcs ? ('第' + this.formData.jdhcs + '次') : ''
const str = '关于召开' + this.formData.unit_name + j + c + '教职工代表大会、工会会员代表大会的请示'
this.formData.meeting_name = str
},
jdhcsChange(o) {
const j = this.formData.jdhjs ? ('第' + this.formData.jdhjs + '届') : ''
const c = this.formData.jdhcs ? ('第' + this.formData.jdhcs + '次') : ''
const str = '关于召开' + this.formData.unit_name + j + c + '教职工代表大会、工会会员代表大会的请示'
this.formData.meeting_name = str
},
resetForm() {
this.$refs["addForm"].resetFields();
meetingTopicRich.txt.html('')
meetingTopicRich.create()
},
async openEdit(id) {
const resp = await $.get(loc() + "/findOne", {id})
if(resp.code===0){
const data = resp.data
data.files = JSON.parse(data.files)
this.formData = data
this.$nextTick(() => {
meetingTopicRich = new E('#meetingTopicRich')
meetingTopicRich.config.onchange = (html) => {
this.formData.meeting_topic = html
}
setTimeout(() => {
meetingTopicRich.create()
meetingTopicRich.txt.html(data.meeting_topic)
}, 100)
})
}else{
this.notifyWarning(resp.msg)
}
},
initPage() {
this.$nextTick(() => {
meetingTopicRich = new E('#meetingTopicRich')
meetingTopicRich.config.onchange = (html) => {
this.formData.meeting_topic = html
}
setTimeout(() => {
meetingTopicRich.create()
}, 100)
})
},
async operation() {
if (!this.formData.files || this.formData.files.length === 0) {
this.$notify.warning({title: '提示', message: '请上传请示附件!'});
return
}
let method = this.formData.id ? "/doEdit" : "/doAdd"
this.$refs["addForm"].validate(async (valid) => {
if (valid) {
/*this.subLoading = true
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
});*/
this.formData.jdhallname = this.formData.jdhjs + '届'
if(this.formData.jdhcs) {
this.formData.jdhallname += this.formData.jdhcs + '次'
}
const data = clone(this.formData)
data.files = JSON.stringify(data.files)
const resp = await $.post(loc() + method, {jdhLevel2: JSON.stringify(data)})
if (resp.code === 0) {
this.$notify({
title: '成功',
message: resp.msg,
type: 'success',
duration: 1000,
onClose: () => {
sublime.jumpPagePjax('/platform/jdh/level2/reading')
}
});
}
/*requestLaterFun(resp, () => {
window.location.href = '/platform/jdh/level2/reading'
}, () => {
this.$notify.error({title: '失败', message: resp.msg});
}, () => {
loading.close()
this.subLoading = false
})*/
}
});
}
},
async created() {
this.sessionOptions = await getOpenJdhByDb()
let id = getQueryVariable("id")
id ? this.openEdit(id) : this.initPage()
this.jsList = await getJc()
}
})
</script>
<!--#
}
#-->
@@ -1,221 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.item-button {
text-align: center;
}
.item-button .el-button {
padding: 12px 100px;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<jdh-two-search :page="pageForm" @search="doSearch" :isadmin="isAdmin" :unionid="unionId"></jdh-two-search>
<jdh-two-table :page="pageForm" :table="tableData" :loading="tableLoading">
<template #column>
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="150px">
<template scope="scope">
<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:scope.row}">
查看
</el-dropdown-item>
<el-dropdown-item v-if="![100,300,500].includes(scope.row.audit_state)" :command="{type:'rollback',data:scope.row}">
撤回
</el-dropdown-item>
<el-dropdown-item v-if="[100,300].includes(scope.row.audit_state)"
:command="{type:'audit',data:scope.row}">
审核
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</template>
<template #pagination>
<!--#include("/layouts/pagination.html"){}#-->
</template>
</jdh-two-table>
</template>
<template #edit>
<jdh-two-info ref="audit" :label="title" handle>
<template #handle>
<el-form :model="formData" ref="auditForm" :rules="formRules" label-position="right"
label-width="120px">
<vi-title title="批复信息"></vi-title>
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="reply_username" label="批复人">
<el-input value="${@shiro.getPrincipalProperty('username')}" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="reply_time" label="批复时间">
<el-input v-model="formData.auditTime" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="opinion" label="批复意见">
<el-input type="textarea" v-model="formData.opinion" rows="4" maxlength="500"
placeholder="请填写您的批复意见"></el-input>
</el-form-item>
<el-form-item prop="files" label="批复附件" class="is-required">
<file-upload :max="1" :files.sync="formData.files">
<template #el-upload__tip>
<div class="el-upload__tip" slot="tip">图片类请上传jpg/png/jpeg等格式,文档类请上传doc/docx/xls/xlsx/pdf等格式,上传数量为1个</div>
</template>
</file-upload>
</el-form-item>
<el-form-item class="item-button">
<el-button type="danger" @click="doAudit(false)" style="margin-right: 20px">退&emsp;&emsp;
</el-button>
<el-button type="primary" @click="doAudit(true)">&emsp;&emsp;</el-button>
</el-form-item>
</el-form>
</template>
</jdh-two-info>
</template>
<template #view>
<jdh-two-info ref="view"></jdh-two-info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
'jdh-two-search': httpVueLoader('/components/jdh/JdhTwoSearch.vue'),
'jdh-two-table': httpVueLoader('/components/jdh/JdhTwoTable.vue?v=1.0.0'),
'jdh-two-info': httpVueLoader('/components/jdh/JdhTwoInfo.vue?v=1.0.0')
},
data() {
const filesValid = (rule, value, callback) => {
if (!this.formData.files || this.formData.files.length === 0) {
callback(new Error('请上传批复附件'));
} else {
callback();
}
};
return {
title: '审核',
pageForm: {
searchName: "meeting_name",
isAudit: false
},
formData: {
auditTime: moment().format('YYYY-MM-DD')
},
formRules: {
opinion: [{required: true, message: '请填写审核意见', trigger: ['blur', 'change']}],
files: [{validator: filesValid, trigger: ['blur', 'change']}],
},
isAdmin: "${@shiro.hasAnyRoles('sysadmin', 'A06')}" === 'true',
unionId: "${@shiro.getPrincipalProperty('union').getId()}",
}
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'audit') {
this.openReview(data)
} else if (type == 'rollback') {
this.rollback(data)
}
},
rollback(data) {
this.$confirm('您确定要撤回吗!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: (a, b) => {
if ("confirm" == a) {//确认后再执行
$.post(loc() + "/callback", {id: data.id}, (data) => {
if (data.code === 0) {
this.$message({message: data.msg, type: 'success'});
this.pageData();
} else {
this.$message({message: data.msg, type: 'warning'});
}
}, "json");
}
}
});
},
openView(data) {
this.$refs.guava.view()
this.$refs.view.openView(data.id)
},
openReview(data) {
this.title = data.audit_state == 100 ? "院级党委审核" : "校工会审核"
this.formData.id = data.id
this.$refs.guava.edit()
this.$refs.audit.openView(data.id)
},
doAudit(flag) {
if (!this.formData.files || this.formData.files.length === 0) {
this.$notify.warning({title: '提示', message: '请上传批复附件!'});
return
}
this.$refs["auditForm"].validate(async (valid) => {
if (valid) {
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
});
const resp = await $.post(loc() + "/doAudit", {
id: this.formData.id,
opinion: this.formData.opinion,
flag: flag,
files: JSON.stringify(this.formData.files)
})
loading.close()
if(resp.code===0){
this.pageData()
this.$refs.guava.index()
this.notifySuccess(resp.msg)
}else{
this.notifyWarning(resp.msg)
}
}
})
}
},
async created() {
this.pageData();
}
})
</script>
<!--#
}
#-->
@@ -1,234 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava ref="guava">
<el-card shadow="never">
<div class="btn-group tool-button mt5">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 100px;">
<el-option label="姓名" value="u.username"></el-option>
<el-option label="工号" value="u.loginname"></el-option>
</el-select>
</el-input>
</div>
<div class="btn-group tool-button">
<el-select clearable v-model="pageForm.unionid" placeholder="请选择分工会" @change="getJdhList">
<el-option v-for="i in fghList" :label="i.unionname" :value="i.id" :key="i.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.jdhid" placeholder="请选择教代会">
<el-option v-for="i in jdhList" :label="i.jdhallname" :value="i.id" :key="i.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></el-button>
</div>
<div class="pull-right offscreen-right mt5">
<el-button type="primary" @click="openAdd">添加代表</el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-table
:data="tableData"
@sort-change='pageOrder'>
<el-table-column label="序号" type="index" width="50"></el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
show-overflow-tooltip></el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center" label="操作"
width="150px">
<template scope="{row}">
<el-button size="mini" type="danger" :loading="row.loading" @click="doDelete(row)">删除
</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</guava>
<el-dialog :title="dbTitle" :visible.sync="addDialogVisible" width="40%">
<el-form :model="formData" ref="AddForm" :rules="rules" label-width="80px">
<el-form-item prop="unionid" label="分工会:">
<el-select clearable v-model="formData.unionid" placeholder="请选择分工会" @change="getJdhList2"
style="width: 100%">
<el-option v-for="i in fghList" :label="i.unionname" :value="i.id" :key="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="jdhid" label="教代会:">
<el-select v-model="formData.jdhid" placeholder="请选择教代会" style="width: 100%">
<el-option v-for="i in jdhList2" :label="i.jdhallname" :value="i.id" :key="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="userList" label="用户">
<el-select
v-model="formData.userList"
value-key="id"
filterable
remote
multiple
reserve-keyword
placeholder="请输入工号或者姓名"
:remote-method="queryNotDbUser" style="width: 100%">
<el-option
v-for="item in notUserList"
:key="item.id"
:label="item.username+'-'+item.loginname+'-'+item.unitname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doAdd">确 定</el-button>
</span>
</el-dialog>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
dbTitle: "新增代表",
addDialogVisible: false,
pageForm: {
searchName: "u.username",
jdhid: ""
},
fghList: [],
jdhList: [],
jdhList2: [],
notUserList: [],
tableColumns: [
{prop: 'loginname', label: '工号', sortable: true},
{prop: 'username', label: '姓名', sortable: true},
{prop: 'sex', label: '性别', sortable: true},
{prop: 'mobile', label: '联系方式', sortable: true},
{prop: 'unitname', label: '所属单位', sortable: true},
{prop: 'unionname', label: '所属工会', sortable: true},
{prop: 'jdhallname', label: '教代会', sortable: true},
],
formData: {
jdhid: "",
userList: ""
},
rules: {
unionid: [{required: true, trigger: ['blur', 'change'], message: '请选择工会'}],
userList: [{required: true, trigger: ['blur', 'change'], message: '请选择代表'}],
},
}
},
methods: {
doDelete(row) {
const {id, userid, jdhid} = row
this.$confirm('确定要删除该代表吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a, b) => {
if ("confirm" === a) {//确认后再执行
this.$set(row, "loading", true)
const resp = await $.post(loc() + "/doDelete", {id: id, userid: userid, jdhid: jdhid});
this.$set(row, "loading", false)
this.pageData()
}
}
})
},
doAdd() {
this.$refs['AddForm'].validate(async valid => {
if (valid) {
const loading = this.$loading({
lock: true,
text: '正在添加中,请稍后...',
spinner: 'el-icon-loading',
background: "rgba(0,0,0,.45)"
});
this.formData.userList = JSON.stringify(this.formData.userList)
const {data} = await $.post(loc() + "/doAdd", this.formData)
this.pageData()
this.addDialogVisible = false
loading.close()
}
})
},
async openAdd() {
this.fghList = await getUnion()
if ("${@shiro.hasRole('H04')}" === 'true') {
this.formData.unionid = this.fghList[0].id
await this.getJdhList2()
}
this.addDialogVisible = true
if (this.$refs["AddForm"]) this.$refs["AddForm"].resetFields()
},
async queryNotDbUser(key) {
if (this.formData.unionid === '') {
this.$message.info('请先选择分工会')
return
}
this.formData.keyword = key
const {data} = await $.post(loc() + "/queryNotUser", this.formData)
this.notUserList = data.list
},
async getJdhList() {
this.jdhList = []
this.pageForm.jdhid = ""
const resp = await $.post(loc() + "/getJdhList", {unionid: this.pageForm.unionid})
if (resp.length > 0 && this.pageForm.unionid) {
this.jdhList = resp
this.pageForm.jdhid = resp[0].id
} else {
this.jdhList = []
}
},
async getJdhList2() {
this.jdhList2 = []
this.formData.jdhid = ""
const resp = await $.post(loc() + "/getJdhList", {unionid: this.formData.unionid})
if (resp.length > 0 && this.formData.unionid) {
this.jdhList2 = resp
this.formData.jdhid = resp[0].id
} else {
this.jdhList2 = []
}
},
},
async created() {
this.fghList = await getUnions()
if ("${@shiro.hasRole('H04')}" === 'true') {
this.pageForm.unionid = this.fghList[0].id
await this.getJdhList()
}
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -1,510 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<!-- 教代会管理-->
<style>
.el-loading-spinner {
font-size: 30px !important;
}
.el-checkbox__label {
padding-left: 20px;
}
.el-checkbox__input {
position: absolute;
/*line-height: unset!important;*/
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<el-card shadow="never">
<div class="btn-group tool-button">
<el-date-picker
v-model="pageForm.searchYear"
value-format="yyyy"
formData="yyyy"
type="year"
placeholder="选择年度">
</el-date-picker>
</div>
<div class="btn-group tool-button">
<el-input placeholder="输入届数" v-model="pageForm.jdhjs" style="width: 200px" clearable
@keyup.enter.native="doSearch">
<template slot="prepend">届数</template>
</el-input>
</div>
<div class="btn-group tool-button">
<el-input placeholder="输入次数" v-model="pageForm.jdhcs" style="width: 200px" clearable
@keyup.enter.native="doSearch">
<template slot="prepend">次数</template>
</el-input>
</div>
<div class="btn-group tool-button">
<el-select clearable v-model="pageForm.unionid" placeholder="请选择分工会">
<el-option v-for="i in fghList" :label="i.unionname" :value="i.id" :key="i.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></el-button>
</div>
<div class="pull-right offscreen-right">
<el-button size="medium" @click="openAdd"><i class="ti-plus"></i> 新建届次</el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-table
:data="tableData"
@sort-change='pageOrder'>
<el-table-column
label="序号"
type="index"
width="50">
</el-table-column>
<el-table-column
sortable
prop="jdhnf"
label="年度">
</el-table-column>
<el-table-column
sortable
prop="jdhjs"
label="届数">
<template slot-scope="scope">
{{scope.row.jdhjs}}届
</template>
</el-table-column>
<el-table-column
sortable
prop="jdhcs"
label="次数">
<template slot-scope="scope">
{{scope.row.jdhcs}}次
</template>
</el-table-column>
<el-table-column
sortable
prop="unionname"
label="所属工会">
</el-table-column>
<el-table-column
prop="jdhallname"
label="届次全称">
</el-table-column>
<el-table-column
prop="jdhms"
label="描述">
</el-table-column>
<el-table-column
prop="jdhcjsj"
label="创建时间">
</el-table-column>
<el-table-column
prop="jdhkqzt"
label="开启状态">
<template slot-scope="scope">
<el-switch active-color="#13ce66"
inactive-color="#ff4949"
:value="scope.row.jdhkqzt===1"
@change="jdhztChange(scope.row.jdhkqzt,scope.row.id)">
</el-switch>
</template>
</el-table-column>
<el-table-column
label="操作"
width="200">
<template slot-scope="scope">
<el-button size="mini" type="primary" @click="openEdit(scope)">编辑</el-button>
<el-button size="mini" type="danger" @click="doDelete(scope.row.id)">删除</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<el-dialog
title="新建届次"
:visible.sync="addDialogVisible"
width="45%">
<el-form :model="formData" ref="addForm" :rules="rules" label-width="120px">
<el-form-item prop="jdhnf" label="教代会年份">
<el-date-picker style="width:250px;"
v-model="formData.jdhnf"
value-format="yyyy"
formData="yyyy"
type="year"
placeholder="选择年">
</el-date-picker>
</el-form-item>
<el-form-item prop="jdhjs" label="教代会届数">
<el-select v-model="formData.jdhjs" filterable placeholder="请选择届数" style="width:250px;">
<el-option v-for="i in jsList" :label="i.name" :key="i.id" :value="i.code"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="jdhcs" label="教代会次数">
<el-select v-model="formData.jdhcs" @change="csChange" filterable placeholder="请选择次数"
style="width:250px;">
<el-option v-for="i in cslist" :key="i" :label="i+'次'" :value="i"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="unionid" label="所属工会">
<el-select clearable v-model="formData.unionid" placeholder="请选择分工会">
<el-option v-for="i in fghList" :label="i.unionname" :value="i.id" :key="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="jdhms" label="教代会描述">
<el-input type="textarea"
:rows="2"
placeholder="请输入教代会主题描述"
v-model="formData.jdhms">
</el-input>
</el-form-item>
<el-form-item prop="sfjc" class="is-required" label="" label-width="30px" style="margin-top: 20px;">
<el-checkbox v-model="formData.isExtend"
:disabled="formData.jdhcs=='一' || formData.jdhcs==''"
style="font-size: 14px;color: #ff6a00;width: 98%">
<span>
延用上一次教代会的代表信息。
</span>
</el-checkbox>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doAdd">确 定</el-button>
</span>
</el-dialog>
<el-dialog
title="编辑教代会信息"
:visible.sync="editDialogVisible"
custom-class="ViewDialogClass"
:close-on-click-modal="false"
width="45%">
<el-form :model="formData" ref="editForm" :rules="rules" label-width="120px">
<el-form-item prop="jdhnf" label="教代会年份">
<div class="block">
<el-date-picker style="width:250px;"
v-model="formData.jdhnf"
value-format="yyyy"
formData="yyyy"
type="year"
placeholder="选择年">
</el-date-picker>
</div>
</el-form-item>
<el-form-item prop="jdhjs" label="教代会届数">
<el-select v-model="formData.jdhjs" filterable placeholder="请选择届数" style="width:250px;">
<el-option v-for="i in 30" :label="i+'届'" :key="i" :value="i"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="jdhcs" label="教代会次数">
<el-select v-model="formData.jdhcs" filterable placeholder="请选择次数" style="width:250px;">
<el-option v-for="i in cslist" :key="i" :label="i+'次'" :value="i"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="unionid" label="所属工会">
<el-select clearable v-model="formData.unionid" placeholder="请选择分工会" disabled>
<el-option v-for="i in fghList" :label="i.unionname" :value="i.id" :key="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="jdhms" label="教代会描述">
<el-input style="width:450px;"
type="textarea"
:rows="2"
placeholder="请输入教代会主题描述"
auto-complete="off"
v-model="formData.jdhms">
</el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="editDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doEdit">确 定</el-button>
</span>
</el-dialog>
</guava>
</div>
<script>
const rules = {
jdhnf: [
{required: true, message: '请选择教代会年份', trigger: ['blur', 'change']}
],
jdhjs: [
{required: true, message: '请输入教代会届数', trigger: ['blur', 'change']}
],
jdhcs: [
{required: true, message: '请输入教代会次数', trigger: ['blur', 'change']}
]
}
let vue = new Vue({
el: "#app",
mixins: [initTableMixins],
data() {
return {
addDialogVisible: false,
editDialogVisible: false,
tableData: [],
fghList: [],
pageForm: {
searchYear: '',
jdhjs: '',
jdhcs: '',
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: '',
pageOrderBy: ''
},
formData: {
jdhid: "",
jdhnf: "",
jdhjs: "",
jdhcs: "",
jdhms: "",
jdhkqzt: "",
sfjc: "",
isExtend: false
},
rules: rules,
jsList: [],
cslist: ['一', '二', '三', '四', '五']
}
},
methods: {
doDelete(id) {
this.$confirm('删除此次教代会将会删除该教代会下面所有的数据(包括代表)', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then((res) => {
const loading = this.$loading({
lock: true,
text: '删除中',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
$.post(base + '/platform/jdh2/cb/jcgl/doDelete', {id: id}).then(res => {
if (res.code === 0) {
setTimeout(() => {
loading.spinner = 'el-icon-circle-check'
loading.text = '删除成功'
setTimeout(() => {
loading.close()
this.doSearch()
}, 1500)
}, 1000)
} else {
setTimeout(() => {
loading.spinner = 'el-icon-circle-close'
loading.text = '删除失败'
setTimeout(() => {
loading.close()
this.doSearch()
}, 1500)
}, 1000)
}
})
}).catch(() => {
})
},
jsChange(val) {
console.log(val)
$.post(base + "/platform/jdh/cb/jcgl/getcs", {jdhjs: val}).then(res => {
if (res.code == 0) {
this.cslist = res.data;
} else {
this.$message.error(res.msg)
}
})
},
csChange(val) {
if (val === '一') {
this.$set(this.formData, 'isExtend', false)
}
},
pageOrder(column) {
this.pageForm.pageOrderName = column.prop
this.pageForm.pageOrderBy = column.order
this.pageData()
},
pageNumberChange(val) {
this.pageForm.pageNumber = val
this.pageData()
},
pageData() {
sublime.showLoadingbar()
$.post(base + "/platform/jdh2/cb/jcgl/pageData", this.pageForm).then(res => {
sublime.closeLoadingbar()
if (res.code == 0) {
this.tableData = res.data.list;
this.pageForm.totalCount = res.data.totalCount;
} else {
this.$message.error(res.msg)
}
})
},
formatAt(val) {
if (val > 0)
return moment(val * 1000).format("YYYY-MM-DD HH:mm")
return ""
},
doSearch() {
this.pageForm.pageNumber = 1
this.pageData()
},
openAdd() {
if ("${@shiro.hasRole('H04')}" === 'true') {
this.formData.unionid = this.fghList[0].id
}
this.addDialogVisible = true
if (this.$refs["addForm"])
this.$refs["addForm"].resetFields()
},
doAdd() {
if (!this.formData.isExtend && this.formData.jdhcs !== '一') {
this.$confirm('确定不延用上一次教代会的组织及人员数据吗?这将导致此次教代会的组织及人员都将为空必须重新组建!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$refs["addForm"].validate(valid => {
if (valid) {
const loading = this.$loading({
lock: true,
text: '提交中',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
$.post(base + '/platform/jdh2/cb/jcgl/doAdd', this.formData).then(res => {
if (res.code === 0) {
setTimeout(() => {
loading.close()
this.$message.success(res.msg)
this.doSearch()
this.addDialogVisible = false
}, 1500)
} else {
loading.close()
this.$message.error(res.msg)
}
})
}
})
}).catch(() => {
})
} else {
this.$refs["addForm"].validate(valid => {
if (valid) {
const loading = this.$loading({
lock: true,
text: '提交中',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
$.post(base + "/platform/jdh2/cb/jcgl/doAdd", this.formData).then(res => {
if (res.code == 0) {
setTimeout(() => {
loading.close()
this.$message.success(res.msg)
this.doSearch()
this.addDialogVisible = false
}, 1500)
} else {
loading.close()
this.$message.error(res.msg)
}
})
}
})
}
},
openEdit(scope) {
this.formData = JSON.parse(JSON.stringify(scope.row))
console.log(this.formData)
this.editDialogVisible = true
},
doEdit() {
this.$refs["editForm"].validate(valid => {
if (valid) {
$.post(base + "/platform/jdh2/cb/jcgl/editDo", this.formData).then(res => {
if (res.code == 0) {
this.$message.success(res.msg)
this.doSearch()
this.editDialogVisible = false
} else {
this.$message.error(res.msg)
}
})
}
})
},
jdhztChange(status, id) {
let cz = status === 1 ? '关闭' : '开启'
this.$confirm('此操作将' + cz + '此次教代会!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
$.post(base + "/platform/jdh2/cb/jcgl/jdhztChange", {id: id, status: status}).then(res => {
if (res.code == 0) {
this.doSearch()
}
})
}).catch(() => {
})
}
},
async created() {
this.jsList = await getJc()
this.fghList = await getUnions()
if ("${@shiro.hasRole('H04')}" === 'true') {
this.pageForm.unionid = this.fghList[0].id
}
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -1,134 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
</style>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<jdh-two-search :page="pageForm" @search="doSearch" :audit="false" :isadmin="isAdmin" :unionid="unionId"></jdh-two-search>
<div class="mt20">
<jdh-two-table :page="pageForm" :table="tableData" :loading="tableLoading">
<template #column>
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="150px">
<template scope="scope">
<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:scope.row}">
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'edit',data:scope.row}"
v-if="[100].includes(scope.row.audit_state)">
编辑
</el-dropdown-item>
<el-dropdown-item :command="{type:'delete',data:scope.row}"
:loading="scope.row.delLoading">
删除
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</template>
<template #pagination>
<!--#include("/layouts/pagination.html"){}#-->
</template>
</jdh-two-table>
</div>
</template>
<template #view>
<jdh-two-info ref="twoInfo"></jdh-two-info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
'jdh-two-search': httpVueLoader('/components/jdh/JdhTwoSearch.vue'),
'jdh-two-table': httpVueLoader('/components/jdh/JdhTwoTable.vue'),
'jdh-two-info': httpVueLoader('/components/jdh/JdhTwoInfo.vue')
},
data() {
return {
viewData: {},
pageForm: {
searchName: "meeting_name",
isAudit: false,
},
isAdmin: "${@shiro.hasAnyRoles('sysadmin', 'A06')}" === 'true',
unionId: "${@shiro.getPrincipalProperty('union').getId()}",
}
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'delete') {
this.doDelete(data)
} else if (type == 'edit') {
this.openEdit(data.id)
}
},
openView(row) {
const {id} = row
this.$refs.twoInfo.openView(id)
this.$refs.guava.view()
},
async pageData() {
const {data} = await $.post('/platform/jdh/level2/info/pageData', this.pageForm, true)
this.tableData = data.list
this.pageForm.totalCount = data.totalCount
},
openEdit(id) {
window.location.href = '/platform/jdh/level2/info?id=' + id
},
async doDelete(row) {
const {id} = row
this.$confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a, b) => {
if ("confirm" == a) {//确认后再执行
this.$set(row, "delLoading", true)
const resp = await $.get('/platform/jdh/level2/info/doDelete', {id: id})
this.$set(row, "delLoading", false)
if(resp.code===0){
this.pageData()
}else{
this.notifyWarning(resp.msg)
}
}
}
});
}
},
async created() {
this.pageData();
}
})
</script>
<!--#
}
#-->
File diff suppressed because it is too large Load Diff
@@ -1,570 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-descriptions__table {
table-layout: fixed !important;
}
.el-descriptions-item__cell {
text-align: center !important;
}
</style>
<div id="app" v-cloak>
<guava>
<tree-layout style="height: calc(100vh - 50px)">
<template #tree>
<div style="padding: 20px;">
<el-input
placeholder="输入关键字进行查找"
v-model="filterText">
</el-input>
</div>
<el-tree ref="tree" :data="treeData" class="v-tree" node-key="id"
:props="defaultProps"
default-expand-all :expand-on-click-node="false"
@node-click="handleNodeClick" accordion
highlight-current :filter-node-method="filterNode">
<div class="custom-tree-node" slot-scope="{ node, data }">
<div v-if="node.level==1" style="font-size: 16px;" class="v-node"><i
class="el-icon-s-home"></i>&nbsp;
{{ data.unionname }}
</div>
<div v-if="node.level==2"
style="font-size: 15px" :title="data.name" class="v-node">
<i class="el-icon-star-on" v-if="checkData.name==data.name"></i>
<i class="el-icon-star-off" v-else></i>
&nbsp; {{ data.unionname }}
<span style="color: #f76c6c">{{ '' + data.zlCount + ''}}</span>
</div>
</div>
</el-tree>
</template>
<template>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-date-picker
placeholder="选择年度" style="width: 100%"
type="year"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
</div>
<!--<div class="btn-group tool-button">
<el-input style="width: 250px;" placeholder="请输入关键字查询" v-model="pageForm.zlname">
</el-input>
</div>-->
<div class="btn-group tool-button">
<el-select v-model="pageForm.jdhid" filterable placeholder="请选择教代会"
@change="addButtonIsDisabled">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.jdhallname">
</el-option>
</el-select>
</div>
<!--<div class="btn-group tool-button" v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}">
<el-select clearable v-model="pageForm.union_id" filterable placeholder="请选择工会" @change="unionChange">
<el-option
v-for="item in unionOptions"
:key="item.id"
:label="item.unionname"
:value="item.id">
</el-option>
</el-select>
</div>-->
<div class="btn-group tool-button">
<el-select clearable v-model="pageForm.zllx" filterable placeholder="请选择工作资料类型">
<el-option
v-for="item in filelxList"
:key="item.id"
:label="item.lxname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></el-button>
</div>
<div class="pull-right offscreen-right">
<el-button type="primary" size="medium" :disabled="addDisabled" @click="openAdd"><i
class="ti-plus"></i> 添加工作资料
</el-button>
</div>
</el-card>
<el-card shadow="never" class="mt10">
<vi-title2 title="资料列表">
<template #func>
<el-button v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}" type="primary"
size="small" @click="oneAudit">一键审核
</el-button>
</template>
</vi-title2>
<el-table :data="tableData" @sort-change='pageOrder'>
<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 prop="zlname" label="资料名称">
</el-table-column>
<el-table-column sortable prop="jdhid" label="所属教代会">
</el-table-column>
<el-table-column sortable prop="lxname" label="资料类型">
</el-table-column>
<el-table-column sortable prop="username" label="上传人">
</el-table-column>
<el-table-column sortable prop="unionname" label="工会">
</el-table-column>
<el-table-column sortable prop="time" label="上传时间">
</el-table-column>
<!--<el-table-column sortable prop="ispass" label="是否通过">
<template slot-scope="scope">
<i v-if="scope.row.ispass === 0" class="fa fa-circle text-danger ml5"> 未通过</i>
<i v-if="scope.row.ispass === 1" class="fa fa-circle text-success ml5"> 通过</i>
</template>
</el-table-column>-->
<el-table-column sortable prop="state" label="状态">
<template slot-scope="scope">
<span v-if="scope.row.state === 0" class="text-primary">待审核</span>
<span v-if="scope.row.state === 1" class="text-danger">审核拒绝</span>
<span v-if="scope.row.state === 2" class="text-success">审核通过</span>
</template>
</el-table-column>
<el-table-column prop="userOnline" label="操作" width="100px">
<template slot-scope="scope">
<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:scope.row}">
预览
</el-dropdown-item>
<el-dropdown-item
v-if="(${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}) || scope.row.state == 0"
:command="{type:'edit',data:scope.row}">
编辑
</el-dropdown-item>
<el-dropdown-item
v-if="(${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}) || scope.row.state == 0"
:command="{type:'delete',data:scope.row}">
删除
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
@size-change="pageSizeChange"
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
:page-sizes="[10, 20, 30, 50]"
:page-size="pageForm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</el-card>
</template>
</tree-layout>
</guava>
<el-dialog title="新建工作资料" :visible.sync="addDialogVisible">
<el-form :model="formData" ref="addForm" :rules="rules" label-width="100px">
<el-form-item label="上传人">
<el-input readonly value="${@shiro.getPrincipalProperty('username')}"></el-input>
</el-form-item>
<el-form-item prop="jdhid" label="所属教代会">
<el-select v-model="formData.jdhid" placeholder="选择教代会" style="width: 100%">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.jdhallname">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="zlname" label="资料名称">
<el-input placeholder="请填写工作资料名称" v-model="formData.zlname"></el-input>
</el-form-item>
<el-form-item prop="zllx" label="资料类型">
<el-select v-model="formData.zllx" placeholder="选择资料类型" style="width: 100%">
<el-option
v-for="item in filelxList"
:key="item.id"
:label="item.lxname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<!--<el-form-item prop="ispass" label="是否通过">
<template>
<el-switch
v-model="formData.ispass"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
</template>
</el-form-item>-->
<el-form-item prop="files" label="附件上传">
<file-upload :files.sync="formData.files"></file-upload>
</el-form-item>
</el-form>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doAdd">确 定</el-button>
</span>
</el-dialog>
<el-dialog title="编辑工作资料" :visible.sync="editDialogVisible">
<el-form :model="formData" ref="editForm" :rules="rules" label-width="100px">
<el-form-item label="上传人">
<el-input readonly v-model="formData.username"></el-input>
</el-form-item>
<el-form-item prop="jdhid" label="所属教代会">
<el-select v-model="formData.jdhid" placeholder="选择教代会" style="width: 100%">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.jdhallname">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="zlname" label="资料名称">
<el-input placeholder="请填写工作资料名称" v-model="formData.zlname"></el-input>
</el-form-item>
<el-form-item prop="zllx" label="资料类型">
<el-select v-model="formData.zllx" placeholder="选择资料类型" style="width: 100%">
<el-option
v-for="item in filelxList"
:key="item.id"
:label="item.lxname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<!--<el-form-item prop="ispass" label="是否通过">
<template>
<el-switch
v-model="formData.ispass"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
</template>
</el-form-item>-->
<el-form-item prop="files" label="附件上传">
<file-upload :files.sync="formData.files"></file-upload>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="editDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doEdit">确 定</el-button>
</span>
</el-dialog>
<el-dialog title="阅览工作资料" :visible.sync="viewDialogVisible">
<el-descriptions class="margin-top" title="" :column="2" border>
<el-descriptions-item span="2">
<template slot="label">资料名称</template>
<div v-html="formData.zlname"></div>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">上传人</template>
<div v-html="formData.username"></div>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">上传时间</template>
<div v-html="formData.time"></div>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">所属工会</template>
<div v-html="formData.unionname"></div>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">教代会届次</template>
<div v-html="formData.jdhid"></div>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">资料类型</template>
<div v-html="formData.lxname"></div>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">是否通过</template>
<div>{{formData.ispass?'通过':'不通过'}}</div>
</el-descriptions-item>
<el-descriptions-item span="2">
<template slot="label">附件</template>
<div>
<file-upload :files.sync="formData.files" view></file-upload>
</div>
</el-descriptions-item>
</el-descriptions>
<span slot="footer" class="dialog-footer">
<el-button @click="viewDialogVisible = false">关 闭</el-button>
</span>
</el-dialog>
</div>
<script>
let vue = new Vue({
el: "#app",
components: {
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
'tree-layout': httpVueLoader('/components/plugins/TreeLayout.vue'),
},
watch: {
filterText(val) {
this.$refs.tree.filter(val);
},
},
data() {
return {
filterText: '',
treeData: [],
defaultProps: {
children: 'child',
label: 'unionname',
},
addDialogVisible: false,
editDialogVisible: false,
viewDialogVisible: false,
tableData: [],
jdhList: [],
filelxList: [],
fileList: [],
pageForm: {
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: "",
pageOrderBy: "",
zlname: "",
union_id: ""
},
formData: {},
rules: {
jdhid: [{required: true, message: '请填写所属教代会', trigger: ['blur', 'change']}],
zlname: [{required: true, message: '请填写所属教代会', trigger: ['blur', 'change']}],
zllx: [{required: true, message: '请填写资料类型', trigger: ['blur', 'change']}],
},
delFiles: [],
unionOptions: [],
checkData: {},
checkNode: {},
addDisabled: false,
}
},
methods: {
addButtonIsDisabled(val) {
const obj = this.jdhList.find(o => o.jdhallname === val)
this.addDisabled = obj.audit_state === 500
},
async oneAudit() {
this.$confirm('您确定要一键审核吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(async () => {
const ids = this.tableData.map(o => o.id)
const resp = await $.post('/platform/jdh2/gzzlgl/oneAudit', {
ids: JSON.stringify(ids),
jdhid: this.pageForm.jdhid
})
if (resp.code === 0) {
this.doSearch()
this.$message.success(resp.msg)
}
}).catch(() => {
})
},
async handleNodeClick(data, node) {
this.checkData = data
this.checkNode = node
this.pageData()
},
filterNode(value, data, node) {
if (!value) return true;
return data.unionname.indexOf(value) !== -1
},
openView(row) {
const formData = clone(row)
formData.files = JSON.parse(formData.files || "[]")
this.formData = formData
this.viewDialogVisible = true
},
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'edit') {
this.openEdit(data)
} else if (type == 'delete') {
this.doDelete(data.id)
}
},
handleChange: function (file, filelist) {
this.fileList = filelist;
},
handleRemove(file, filelist) {
if (file.status === 'success') {
this.fileList = filelist;
this.delFiles.push({fileid: file.id, filepath: file.url})
}
},
onDeleteFile(file) {
if (file.status === 2) {
console.log(file)
this.delFiles.push({fileid: file.fileDes.id, filepath: file.fileDes.filepath})
}
},
doDelete(id) {
this.$confirm('确定要删除吗', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
$.post(base + '/platform/jdh2/gzzlgl/doDelete', {id: id}).then(res => {
if (res.code === 0) {
this.doSearch()
this.$message.success(res.msg)
}
})
}).catch(() => {
})
},
doEdit() {
this.$refs['editForm'].validate(async (valid) => {
if (valid) {
const formData = clone(this.formData)
formData.files = JSON.stringify(formData.files)
const resp = await $.post('/platform/jdh2/gzzlgl/doEdit', formData)
if (resp.code===0){
this.editDialogVisible = false
this.doSearch()
}
}
})
},
doSearch() {
this.pageForm.pageNumber = 1
this.loadTree()
},
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() {
sublime.showLoadingbar()
this.pageForm.unionId = this.checkData.id
$.post(base + '/platform/jdh2/gzzlgl/pageData', this.pageForm).then(res => {
sublime.closeLoadingbar()
if (res.code === 0) {
this.tableData = res.data.list
this.pageForm.totalCount = res.data.totalCount
}
})
},
openEdit(obj) {
if (this.$refs["editForm"])
this.$refs["editForm"].resetFields()
const formData = clone(obj)
formData.files = JSON.parse(formData.files || "[]")
formData.ispass = formData.ispass === 1
this.formData = formData
this.editDialogVisible = true
},
openAdd() {
if (this.$refs["addForm"])
this.$refs["addForm"].resetFields()
this.formData = {ispass: true, files: []}
this.addDialogVisible = true
},
doAdd() {
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
});
this.$refs['addForm'].validate(async valid => {
if (valid) {
const formData = clone(this.formData)
formData.files = JSON.stringify(formData.files)
const resp = await $.post('/platform/jdh2/gzzlgl/doAdd', formData)
if (resp.code===0){
this.addDialogVisible = false
this.doSearch()
loading.close()
}
}
})
},
async getJdh2(val) {
const {data} = await $.post('/platform/jdh2/gzzlgl/getJdh2', {unionId: val})
return data
},
async unionChange(val) {
this.jdhList = await this.getJdh2(val)
},
async loadTree() {
const res = await $.post('/platform/jdh2/gzzlgl/getTreeData', this.pageForm)
if (res.code === 0) {
this.treeData = res.data
const isAdmin = "${@shiro.hasAnyRoles('sysadmin', 'A06')}" === 'true'
if (isAdmin) {
const data = res.data[0].children && res.data[0].children.length > 0 ? {id: res.data[0].children[0].id} : {id: ''}
await this.handleNodeClick({data}, {level: 2})
} else {
const data = res.data[0].children && res.data[0].children.length > 0 ? {id: res.data[0].children[0].id} : {id: ''}
await this.handleNodeClick(data, {level: 2})
}
}
},
},
async created() {
this.jdhList = await this.getJdh2(null)
if (this.jdhList && this.jdhList.length > 0) {
this.pageForm.jdhid = this.jdhList[0].jdhallname
this.addButtonIsDisabled(this.pageForm.jdhid)
}
this.filelxList = await getJdh2Gzzllx()
this.unionOptions = await getUnions()
const isAdmin = "${@shiro.hasAnyRoles('sysadmin', 'A06')}" === 'true'
if (!isAdmin) {
const selfUnion = "${@shiro.getPrincipalProperty('union').getId()}";
this.unionOptions = this.unionOptions.find(x => x.id === selfUnion)
}
this.loadTree()
}
})
</script>
<!--#
}
#-->
@@ -1,217 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-input style="width: 350px;" clearable placeholder="请输入工作资料类型名称" v-model="pageForm.lxname"></el-input>
</div>
<div class="btn-group tool-button">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></el-button>
</div>
<div class="pull-right offscreen-right">
<el-button type="primary" size="medium" @click="openAdd"><i class="ti-plus"></i> 新增工作资料类型</el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-table :data="tableData">
<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="code"></el-table-column>
<el-table-column align="center" header-align="center" label="工作资料类型名称" prop="lxname"></el-table-column>
<el-table-column align="center" header-align="center" label="操作" width="150px">
<template scope="scope">
<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:'top',data:scope.row}" v-if="scope.row.xh!==1">
上移
</el-dropdown-item>
<el-dropdown-item :command="{type:'edit',data:scope.row}">
编辑
</el-dropdown-item>
<el-dropdown-item :command="{type:'delete',data:scope.row}">
删除
</el-dropdown-item>
<el-dropdown-item :command="{type:'bottom',data:scope.row}"
v-if="scope.row.xh!==pageForm.totalCount">
下移
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
layout="total, prev, pager, next, jumper"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</el-card>
</guava>
<el-dialog title="新增工作资料类型" :visible.sync="addDialogVisible" width="30%">
<el-form :model="formData" ref="addForm" :rules="rules">
<el-form-item prop="code" label="类型编码">
<el-input v-model="formData.code" placeholder="请输入工作资料类型编码"></el-input>
</el-form-item>
<el-form-item prop="lxname" label="类型名称">
<el-input v-model="formData.lxname" placeholder="请输入工作资料类型名称"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doAdd">确 定</el-button>
</span>
</el-dialog>
<el-dialog title="编辑工作资料类型" :visible.sync="editDialogVisible" width="30%">
<el-form :model="formData" ref="editForm" :rules="rules">
<el-form-item prop="code" label="类型编码">
<el-input v-model="formData.code" placeholder="请输入工作资料类型编码"></el-input>
</el-form-item>
<el-form-item prop="lxname" label="类型名称">
<el-input v-model="formData.lxname" placeholder="请输入工作资料类型名称"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="editDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doEdit">确 定</el-button>
</span>
</el-dialog>
</div>
<script>
new Vue({
el: '#app',
data() {
return {
pageForm: {
pageNumber: 1,
pageSize: 10,
totalCount: 0,
lxname: ''
},
addDialogVisible: false,
editDialogVisible: false,
formData: {},
rules: {
lxname: [{required: true, message: '请输入工作资料类型名称', trigger: ['change', 'blur']}],
code: [{required: true, message: '请输入工作资料类型编码', trigger: ['change', 'blur']}]
},
tableData: []
}
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'top') {
this.rowChange(data, false)
} else if (type == 'edit') {
this.openEdit(data)
} else if (type == 'delete') {
this.doDelete(data.id)
} else if (type == 'bottom') {
this.rowChange(data, true)
}
},
rowChange(row, toDown) {
$.post(base + '/platform/jdh2/gzzllx/xhChange', {id: row.id, xh: row.xh, toDown}).then(res => {
if (res.code === 0) {
this.doSearch()
}
})
},
openAdd() {
this.formData = {}
this.addDialogVisible = true
if (this.$refs["addForm"])
this.$refs["addForm"].resetFields()
},
doAdd() {
this.$refs['addForm'].validate(valid => {
if (valid) {
$.post(base + '/platform/jdh2/gzzllx/doAdd', this.formData).then(res => {
if (res.code === 0) {
this.addDialogVisible = false
this.pageData()
this.$message.success(res.msg)
} else {
this.$message.error(res.msg)
}
})
}
})
},
pageData() {
sublime.showLoadingbar()
$.post(base + '/platform/jdh2/gzzllx/pageData', this.pageForm).then(res => {
sublime.closeLoadingbar()
if (res.code === 0) {
this.tableData = res.data.list
this.pageForm.totalCount = res.data.totalCount
}
})
},
doSearch() {
this.pageForm.pageNumber = 1
this.pageData()
},
pageNumberChange(val) {
this.pageForm.pageNumber = val
this.pageData()
},
openEdit(obj) {
this.formData = JSON.parse(JSON.stringify(obj))
this.editDialogVisible = true
},
doEdit() {
this.$refs['editForm'].validate(valid => {
if (valid) {
$.post(base + '/platform/jdh2/gzzllx/doEdit', this.formData).then(res => {
if (res.code === 0) {
this.editDialogVisible = false
this.pageData()
this.$message.success(res.msg)
} else {
this.$message.error(res.msg)
}
})
}
})
},
doDelete(id) {
this.$confirm('此操作将删除工作资料类型,确认删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
$.post(base + '/platform/jdh2/gzzllx/doDelete', {id: id}).then(res => {
if (res.code === 0) {
this.doSearch()
this.$message.success(res.msg)
}
})
}).catch(() => {
})
}
},
created() {
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -1,518 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<el-row class="header navbar bg-white shadow">
<div class="btn-group tool-button mt5">
<el-select v-model="pageForm.jdhid" filterable placeholder="请选择教代会" @change="jdhChange">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<el-select v-model="pageForm.dbtid" filterable clearable placeholder="请选择代表团"
@change="dbtChange(pageForm.dbtid)">
<el-option
v-for="item in delegations"
:key="item.id"
:label="item.dbtname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<el-select clearable v-model="pageForm.union_id" filterable placeholder="请选择工会">
<el-option
v-for="item in unionOptions"
:key="item.id"
:label="item.unionname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></el-button>
</div>
<div class="pull-right offscreen-right mt5">
<el-button @click="openAdd"><i class="ti-plus"></i> 新建代表团</el-button>
</div>
</el-row>
<el-dialog title="新建代表团" :visible.sync="addDialogVisible">
<el-form :model="formData" ref="addForm" :rules="rules" label-width="100px">
<el-form-item prop="jdhid" label="所属教代会">
<el-select v-model="formData.jdhid" @change="addJdhChange" placeholder="选择教代会" style="width: 100%">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="dbtname" label="代表团名称">
<el-select multiple v-model="formData.dbtname" filterable placeholder="请选中代表团名称" style="width: 100%">
<el-option
v-for="item in dbtList"
:key="item.id"
:label="item.name"
:value="item.name">
</el-option>
</el-select>
</el-form-item>
</el-form>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doAdd">确 定</el-button>
</span>
</el-dialog>
<el-row class="el-table-container">
<el-table :data="tableData">
<el-table-column label="序号" type="index">
<template scope="scope"><span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column prop="code" label="代表团编码"></el-table-column>
<el-table-column prop="dbtname" label="代表团名称"></el-table-column>
<el-table-column prop="jdhallname" label="所属教代会"></el-table-column>
<el-table-column prop="cjsj" label="创建时间"></el-table-column>
<el-table-column label="操作" width="200">
<template slot-scope="scope">
<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:'fgh',data:scope.row}">
设置组成分工会
</el-dropdown-item>
<el-dropdown-item :command="{type:'tz',data:scope.row}">
设置团长/副团长
</el-dropdown-item>
<el-dropdown-item :command="{type:'delete',data:scope.row}">
&emsp;&emsp;&emsp;&emsp;&emsp;
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
</el-row>
<!--#include("/layouts/pagination.html"){}#-->
<el-dialog :title="'设置'+setzcfghdbtname+'组成工会'" :visible.sync="fghDialogVisible">
<template>
<div class="btn-group tool-button mt5">
<el-select size="mini" v-model="readySetFghId" filterable>
<el-option v-for="i in fghList" :label="i.unionname" :value="i.id" :key="i.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<el-button size="mini" type="primary" @click="fghdoAdd" icon="el-icon-circle-plus">
添加
</el-button>
</div>
</template>
</el-row>
<el-row style="margin-top: 15px">
<el-table :data="fghTableData" size="mini" height="300">
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column sortable prop="unionname" label="分工会名称"></el-table-column>
<el-table-column label="操作" width="100">
<template slot-scope="scope">
<el-button icon="el-icon-delete" @click="fghdoDelete(scope.row.id)" size="mini"
type="danger"></el-button>
</template>
</el-table-column>
</el-table>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button type="danger" @click="fghDialogVisible = false">关 闭</el-button>
</span>
</el-dialog>
<el-dialog title="设置团长/副团长" :visible.sync="TzDialogVisible">
<el-row>
<div class="btn-group tool-button mt5">
<el-select
size="mini"
style="width: 300px"
v-model="TzFormData.userid"
filterable
placeholder="请输入工号或姓名关键字">
<el-option
v-for="item in readyTzList"
:key="item.id"
:label="item.loginname+' '+item.username+' '+item.dwname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<el-dropdown placement="bottom">
<el-button type="primary" size="mini">
设置身份<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="doAddTz(2)">&emsp;
</el-dropdown-item>
<el-dropdown-item @click.native="doAddTz(1)">副团长
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</el-row>
<el-row style="margin-top: 15px">
<el-table :data="TzTableData" size="mini" height="300">
<el-table-column sortable prop="loginname" label="工号"></el-table-column>
<el-table-column sortable prop="username" label="姓名"></el-table-column>
<el-table-column sortable prop="dwname" label="单位"></el-table-column>
<el-table-column prop="mobile" label="电话"></el-table-column>
<el-table-column prop="sex" label="性别"></el-table-column>
<el-table-column prop="rolename" label="身份">
<template slot-scope="scope">
<span v-if="scope.row.rolename==='代表团团长'" class="text-primary">设置团长</span>
<span v-if="scope.row.rolename==='代表团副团长'" class="text-info">设置副团长</span>
</template>
</el-table-column>
<el-table-column label="操作" width="100">
<template slot-scope="scope">
<el-button size="mini" type="danger" icon="el-icon-delete"
@click="delUser(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
</el-row>
<span slot="footer" class="dialog-footer" style="margin-top: 0">
<el-button type="danger" @click="TzDialogVisible = false">关 闭</el-button>
</span>
</el-dialog>
<el-dialog title="设置操作员" :visible.sync="CzyDialogVisible">
<el-row>
<div class="btn-group tool-button mt5">
<el-select size="mini" style="width: 300px"
remote reserve-keyword :remote-method="queryCzyList"
v-model="readyCzyUser" filterable placeholder="请输入工号或姓名关键字">
<el-option
v-for="item in readyCzyList"
:key="item.id"
:label="item.loginname+' '+item.username"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<el-button size="mini" type="primary" @click="czydoAdd" icon="el-icon-circle-plus">
添加
</el-button>
</div>
</el-row>
<el-row style="margin-top: 15px">
<el-table :data="CzyTableData" size="mini" height="300">
<el-table-column prop="loginname" label="工号"></el-table-column>
<el-table-column prop="username" label="姓名"></el-table-column>
<el-table-column prop="dwname" label="单位"></el-table-column>
<el-table-column prop="mobile" label="电话"></el-table-column>
<el-table-column prop="sex" label="性别"></el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button icon="el-icon-delete" @click="czydoDelete(scope.row.id)" size="mini"
type="danger"></el-button>
</template>
</el-table-column>
</el-table>
</el-row>
<span slot="footer" class="dialog-footer" style="margin-top: 0">
<el-button type="danger" @click="CzyDialogVisible = false">关 闭</el-button>
</span>
</el-dialog>
</div>
<script>
let vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
setzcfghdbtname: '',
tableData: [],
pageForm: {
dbtname: '',
jdhid: '',
union_id: ""
},
jdhList: [],
delegations: [],
dbtList: [],
addDialogVisible: false,
formData: {},
fghDialogVisible: false,
fghFormData: {},
fghList: [],
readySetFghId: '',
fghTableData: [],
TzDialogVisible: false,
TzFormData: {},
readyTzUser: [],
readyTzList: [],
TzTableData: [],
czyFormData: {},
CzyDialogVisible: false,
readyCzyUser: '',
readyCzyList: [],
CzyTableData: [],
rules: {
jdhid: [{required: true, message: '请选择教代会', trigger: ['change', 'blur']}],
dbtname: [{required: true, message: '请选择代表团', trigger: ['change', 'blur']}]
},
unionOptions: []
}
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'fgh') {
this.openFgh(data.id, data.jdhid, data.dbtname)
} else if (type == 'tz') {
this.openTz(data.id, data.jdhid)
} else if (type == 'delete') {
this.doDelete(data.id)
}
},
async dbtChange(dbtId) {
this.pageForm.union_id = ''
this.unionOptions = await getUnions(dbtId)
},
openAdd() {
this.formData = {}
if (this.jdhList.length > 0) {
this.formData.jdhid = this.jdhList[0].id
this.getDbtList(this.formData.jdhid)
}
this.addDialogVisible = true
if (this.$refs['addForm']) {
this.$refs['addForm'].resetFields()
}
},
async doAdd() {
this.$refs['addForm'].validate(async (valid) => {
if (valid) {
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
});
const resp = await $.post(base + '/platform/jdh/zzjg/dbt/doAdd', this.formData)
loading.close()
if(resp.code===0){
this.pageData()
this.addDialogVisible = false
}else{
this.notifyWarning(resp.msg)
}
}
})
},
async jdhChange(val) {
this.pageForm.dbtid = ''
this.delegations = await getDbt(val)
},
addJdhChange(val) {
this.getDbtList(val)
},
getDbtList(jdhid) {
$.post(base + '/platform/jdh/zzjg/dbt/queryKyDbtMc', {jdhid: jdhid}).then(res => {
if (res.code === 0) {
this.dbtList = res.data
}
})
},
openFgh(id, jdhid, dbtname) {
this.setzcfghdbtname = dbtname
this.fghFormData = {id, jdhid}
this.getNoSetFgh(jdhid)
this.getDbtFghData(id)
this.fghDialogVisible = true
},
//查询没有被代表团设置的组成分工会
getNoSetFgh(jdhid) {
$.post(base + '/platform/jdh/zzjg/dbt/queryNoSetFgh', {jdhid: jdhid}).then(res => {
this.fghList = res.data
})
},
//该代表团下的组成分工会
getDbtFghData(id) {
$.post(base + '/platform/jdh/zzjg/dbt/getDbtFghData', {id: id}).then(res => {
if (res.code === 0) {
this.fghTableData = res.data
}
})
},
fghdoAdd() {
if (this.readySetFghId === '') {
this.$message.info('请先选择分工会')
return
}
this.fghFormData.fghid = this.readySetFghId
$.post(base + '/platform/jdh/zzjg/dbt/fghdoAdd', this.fghFormData).then(res => {
if (res.code === 0) {
this.readySetFghId = ''
this.getNoSetFgh(this.fghFormData.jdhid)
this.getDbtFghData(this.fghFormData.id)
}
})
},
fghdoDelete(id) {
$.post(base + '/platform/jdh/zzjg/dbt/fghdoDelete', {id: id}).then(res => {
if (res.code === 0) {
this.getNoSetFgh(this.fghFormData.jdhid)
this.getDbtFghData(this.fghFormData.id)
}
})
},
//团长副团长
openTz(id, jdhid) {
this.TzFormData = {
id: id,
jdhid: jdhid
}
this.getNotTzList()
this.getTzList()
this.TzDialogVisible = true
},
//获取没被设置为团长副团长的代表
getNotTzList() {
$.get(base + '/platform/jdh/zzjg/dbt/queryUser', {id: this.TzFormData.id}).then(res => {
this.readyTzList = res.data
})
},
//获取团长副团长
getTzList() {
$.get(base + '/platform/jdh/zzjg/dbt/getTzList', {id: this.TzFormData.id}).then(res => {
this.TzTableData = res.data
})
},
delUser(obj) {
let data = {
userid: obj.id,
dbtid: this.TzFormData.id,
jdhid: this.TzFormData.jdhid,
roleid: obj.roleid
}
$.post(base + '/platform/jdh/zzjg/dbt/delUser', data).then(res => {
if (res.code === 0) {
this.getTzList()
this.getNotTzList()
}
})
},
doAddTz(num) {
this.TzFormData.num = num
$.post(base + '/platform/jdh/zzjg/dbt/doAddTz', this.TzFormData).then(res => {
if (res.code === 0) {
this.getTzList()
this.getNotTzList()
this.TzFormData.userid = ''
this.readyTzList = []
} else {
this.$message.info(res.msg)
}
})
},
//操作员
openCzy(id, jdhid) {
this.czyFormData = {id, jdhid}
this.getCzyTableData()
this.CzyDialogVisible = true
},
getCzyTableData() {
$.post(base + '/platform/jdh/zzjg/dbt/getCzyTableData', {dbtid: this.czyFormData.id}).then(res => {
if (res.code === 0) {
this.CzyTableData = res.data
}
})
},
czydoAdd() {
$.post(base + '/platform/jdh/zzjg/dbt/czydoAdd', {
userid: this.readyCzyUser,
dbtid: this.czyFormData.id,
jdhid: this.czyFormData.jdhid
}).then(res => {
if (res.code === 0) {
this.readyCzyUser = ''
this.readyCzyList = []
this.getCzyTableData()
}
})
},
czydoDelete(userid) {
$.post(base + '/platform/jdh/zzjg/dbt/czydoDelete', {
userid: userid,
dbtid: this.czyFormData.id
}).then(res => {
if (res.code === 0) {
this.getCzyTableData()
}
})
},
queryCzyList(keyword) {
$.get(base + '/platform/jdh/zzjg/dbt/getReadyCzyList', {
dbtid: this.czyFormData.id,
keyword: keyword
}).then(res => {
if (res.code === 0) {
this.readyCzyList = res.data.list
}
})
},
doDelete(id) {
$.post(base + '/platform/jdh/zzjg/dbt/doDelete', {id: id}).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.doSearch()
}
})
},
},
async created() {
this.unionOptions = await getUnions()
this.jdhList = await proposal.getOpenMeeting()
if (this.jdhList.length > 0) {
this.pageForm.jdhid = this.jdhList[0].id
this.delegations = await getDbt(this.jdhList[0].id)
this.pageData()
}
if (this.$refs['addForm']) {
this.$refs['addForm'].resetFields()
}
}
})
</script>
<!--#
}
#-->
@@ -1,958 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-tabs__nav {
background-color: #FFFFFF;
}
.dialog-footer .el-button {
padding: 12px 30px;
}
.el-transfer {
text-align: center;
}
.el-transfer-panel {
text-align: left;
width: 35%;
height: 400px;
}
.el-transfer-panel__list.is-filterable {
height: 300px;
}
.v-box .el-card__header {
padding: 5px 15px;
}
.v-tree-layout-left .v-tree {
width: 100%;
}
.v-tree-layout-left .custom-tree-node {
width: 90%;
position: relative;
}
.v-tree-layout-left .v-tree .v-node {
width: 100%;
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
<div id="app" v-cloak>
<guava>
<tree-layout style="height: calc(100vh - 70px)">
<template #tree>
<div style="padding: 15px;">
<el-select v-model="pageForm.jdhid" filterable placeholder="请选择教代会"
@change="jdhChange">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</div>
<el-tree class="filter-tree" :data="treeData" :props="defaultProps"
default-expand-all ref="tree"
highlight-current accordion @node-click="handleNodeClick">
<div class="custom-tree-node" slot-scope="{ node, data }">
<div v-if="node.level==1" style="font-size: 16px;" class="v-node">
<i class="el-icon-office-building"></i>&nbsp;{{ data.dbtname }}
</div>
<div v-if="node.level==2" style="font-size: 14px" class="v-node">
<i class="el-icon-s-help" v-if="checkData.dbtname==data.dbtname"></i>
<i class="el-icon-help" v-else></i>
&emsp;{{ data.dbtname }}
</div>
</div>
</el-tree>
</template>
<template>
<div v-if="node.level==1" class="pl10 pr10">
<el-card shadow="never">
<div class="btn-group tool-button">
<el-select v-model="pageForm.dbtid" filterable clearable
placeholder="请选择代表团">
<el-option
v-for="item in delegations"
:key="item.id"
:label="item.dbtname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button type="primary" icon="el-icon-search"
@click="doSearch"></el-button>
</div>
<div class="pull-right offscreen-right">
<el-button type="primary" @click="openAdd"><i class="ti-plus"></i> 添加代表团
</el-button>
</div>
</el-card>
<el-dialog title="添加代表团" :visible.sync="addDialogVisible" width="40%">
<el-form :model="formData" ref="addForm" :rules="rules" label-width="100px">
<el-form-item prop="jdhid" label="所属教代会">
<el-select v-model="formData.jdhid" @change="addJdhChange"
placeholder="选择教代会"
style="width: 100%">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<!-- <el-form-item prop="dbt" label="代表团名称">-->
<!-- <el-select multiple v-model="formData.dbt" filterable-->
<!-- placeholder="请选中代表团名称"-->
<!-- style="width: 100%">-->
<!-- <el-option-->
<!-- v-for="item in dbtList"-->
<!-- :key="item.id"-->
<!-- :label="item.name"-->
<!-- :value="item.id">-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item prop="dbtName" label="代表团名称">
<el-input v-model="formData.dbtName" placeholder="请输入代表团名称" maxlength="50"></el-input>
</el-form-item>
<el-form-item prop="code" label="代表团编码">
<el-input v-model="formData.code" placeholder="请输入代表团编码"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doAdd">确 定</el-button>
</span>
</el-dialog>
<el-card shadow="never" class="mt20">
<el-table :data="tableData">
<el-table-column 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" prop="dbtname"
label="代表团名称"></el-table-column>
<el-table-column align="center" header-align="center" prop="dictcode"
label="代表团编码"></el-table-column>
<el-table-column align="center" header-align="center" prop="jdhallname"
label="所属教代会"></el-table-column>
<el-table-column align="center" header-align="center" prop="cjsj"
label="创建时间">
<template slot-scope="{row:{cjsj}}">
{{moment(cjsj).format('YYYY-MM-DD')}}
</template>
</el-table-column>
<el-table-column label="操作" width="100">
<template slot-scope="scope">
<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">
<template>
<el-dropdown-item
:command="{type:'dw',data:scope.row}"
v-if="dbtzc==='unit'">
设置组成单位
</el-dropdown-item>
<el-dropdown-item
:command="{type:'fgh',data:scope.row}"
v-else>
设置组成基层工会
</el-dropdown-item>
</template>
<el-dropdown-item :command="{type:'tz',data:scope.row}">
设置团长/副团长
</el-dropdown-item>
<el-dropdown-item
:command="{type:'editName',data:scope.row}">
编辑代表团名称
</el-dropdown-item>
<el-dropdown-item
:command="{type:'delete',data:scope.row}">
删除
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</div>
<div v-if="node.level==2" class="pl10 pr10">
<el-tabs v-model="activeName" type="card" @tab-click="handleTabClick">
<el-tab-pane label="代表" name="one">
<el-card shadow="never">
<div class="btn-group tool-button">
<el-input placeholder="请输入内容" clearable
v-model="dbPageForm.searchKeyword">
<el-select v-model="dbPageForm.searchName" slot="prepend"
placeholder="查询类型"
style="width: 120px;">
<el-option label="姓名" value="username"></el-option>
<el-option label="工号" value="loginname"></el-option>
</el-select>
</el-input>
</div>
<div class="btn-group tool-button">
<el-select v-model="dbPageForm.unionid" filterable clearable
@change="getUnits"
placeholder="请选择工会">
<el-option
v-for="item in unionList"
:label="item.unionname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select v-model="dbPageForm.unitid" filterable clearable
placeholder="请选择单位">
<el-option
v-for="item in unitList"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button type="primary" icon="el-icon-search"
@click="dbDoSearch"></el-button>
</div>
</el-card>
<el-table class="mt20" :data="dbTableData">
<el-table-column label="序号" width="60px">
<template scope="scope"><span>{{scope.$index+1}}</span>
</template>
</el-table-column>
<el-table-column label="姓名" prop="username"></el-table-column>
<el-table-column label="工号" prop="loginname"></el-table-column>
<el-table-column sortable prop="unionname"
label="工会"></el-table-column>
<el-table-column sortable prop="unitname"
label="单位"></el-table-column>
<el-table-column sortable prop="rolename"
label="代表身份"></el-table-column>
</el-table>
</el-tab-pane>
<template>
<el-tab-pane label="设置组成单位" name="two" v-if="dbtzc==='unit'">
<el-card shadow="never" class="text-right">
<el-button type="primary" @click="dwdoAdd(adminPageForm.dbtid)">
{{butTitle}}
</el-button>
</el-card>
<el-table class="mt20" :data="unitTableData">
<el-table-column label="序号" width="60px">
<template scope="scope"><span>{{scope.$index+1}}</span>
</template>
</el-table-column>
<el-table-column label="单位名称" prop="unitname"></el-table-column>
<el-table-column label="操作">
<template scope="{row}">
<el-button plain type="danger" size="mini"
icon="el-icon-delete" circle
@click="dwdoDelete(row)">
</el-button>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="设置组成基层工会" name="two" v-else>
<el-card shadow="never" class="text-right">
<el-button type="primary"
@click="fghdoAdd(adminPageForm.dbtid)">
{{butTitle}}
</el-button>
</el-card>
<el-table class="mt20" :data="adminTableData">
<el-table-column label="序号" width="60px">
<template scope="scope"><span>{{scope.$index+1}}</span>
</template>
</el-table-column>
<el-table-column label="基层工会名称"
prop="unionname"></el-table-column>
<el-table-column label="操作">
<template scope="{row}">
<el-button plain type="danger" size="mini"
icon="el-icon-delete" circle
@click="fghdoDelete(row)">
</el-button>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
</template>
<el-tab-pane label="设置团长/副团长" name="three">
<el-card shadow="never" class="text-right">
<el-button type="primary" @click="openUser(adminPageForm.dbtid)">
{{butTitle}}
</el-button>
</el-card>
<el-table class="mt20" :data="TzTableData" height="300">
<el-table-column sortable prop="loginname"
label="工号"></el-table-column>
<el-table-column sortable prop="username"
label="姓名"></el-table-column>
<el-table-column sortable prop="dwname"
label="单位"></el-table-column>
<el-table-column prop="mobile" label="电话"></el-table-column>
<el-table-column prop="sex" label="性别"></el-table-column>
<el-table-column prop="rolename" label="身份">
<template slot-scope="scope">
<span v-if="scope.row.rolename==='代表团团长'"
class="text-primary">团长</span>
<span v-if="scope.row.rolename==='代表团副团长'"
class="text-info">副团长</span>
</template>
</el-table-column>
<el-table-column label="操作" width="100">
<template scope="{row}">
<el-button plain type="danger" size="mini"
icon="el-icon-delete" circle
@click="delUser(row)">
</el-button>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
</div>
</template>
</tree-layout>
</guava>
<el-dialog :title="title" :visible.sync="fghDialogVisible" width="55%">
<div style="width: 100%;">
<el-transfer :titles="['剩余分工会', '代表团分工会']" filterable
:props="{key: 'id',label: 'unionname'}"
:filter-method="adminFilterMethod"
v-model="fghFormData.fghValue"
:data="fghData">
</el-transfer>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="fghDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="dofgh" :loading="fghSubLoading">确 定</el-button>
</span>
</el-dialog>
<el-dialog :title="title" :visible.sync="dwDialogVisible" width="55%">
<div style="width: 100%;">
<el-transfer :titles="['剩余单位', '代表团单位']" filterable
:props="{key: 'id',label: 'unitname'}"
:filter-method="unitFilterMethod"
v-model="dwFormData.dwValue"
:data="dwData">
</el-transfer>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="dwDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="dodw" :loading="dwSubLoading">确 定</el-button>
</span>
</el-dialog>
<el-dialog title="设置团长副团长" :visible.sync="userDialogVisible" width="40%">
<el-form label-width="100px">
<el-form-item prop="jdhallname" label="届次">
<el-select v-model="pageForm.jdhid" disabled style="width: 100%">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="userid" label="工号或姓名">
<el-select v-model="userFormData.userid" filterable placeholder="请输入工号或姓名关键字"
style="width: 100%" @change="userChange">
<el-option
v-for="item in userList"
:key="item.id"
:label="item.username+'('+item.loginname+')'"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="mobile" label="联系方式">
<el-input v-model="leaderInfo.mobile" readonly></el-input>
</el-form-item>
<el-form-item prop="dwname" label="所属单位">
<el-input v-model="leaderInfo.dwname" readonly></el-input>
</el-form-item>
<el-form-item prop="sf" label="身份">
<el-radio-group v-model="leaderInfo.sf">
<el-radio-button label="2">&emsp;</el-radio-button>
<el-radio-button label="1">副团长</el-radio-button>
</el-radio-group>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button :disabled="userSubLoading" @click="doAddTz" type="primary">确 定</el-button>
</span>
</el-dialog>
<el-dialog title="编辑代表团名称" :visible.sync="deleDialogVisible" width="30%">
<el-form :model="editForm" label-width="100px" ref="editForm">
<el-form-item prop="dbtName" label="代表团名称" ref="aa"
:rules="{required: true, message: '请填写代表团名称', trigger: 'blur'}">
<el-input v-model="editForm.dbtName"></el-input>
</el-form-item>
<el-form-item prop="code" label="代表团编号"
:rules="{required: true, message: '请填写代表团编号', trigger: 'blur'}">
<el-input v-model="editForm.code"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="deleDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="deleDo">确 定</el-button>
</span>
</el-dialog>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'tree-layout': httpVueLoader('/components/plugins/TreeLayout.vue')
},
data() {
return {
editForm: {dbtName: ''},
deleDialogVisible: false,
node: {
level: 1
},
pageForm: {
jdhid: ""
},
title: '',
checkData: {},
activeName: 'one',
jdhList: [],
dbtList: [],
unitList: [],
unionList: [],
delegations: [],
treeData: [],
adminTableData: [],
unitTableData: [],
dwData: [],
dwFormData: {
dwValue: []
},
dwDialogVisible: false,
dwSubLoading: false,
dbTableData: [],
adminPageForm: {},
dbPageForm: {
unitid: "",
unionid: "",
searchName: 'username',
},
TzTableData: [],
addDialogVisible: false,
fghDialogVisible: false,
fghDialog: false,
userDialogVisible: false,
fghData: [],
fghFormData: {
fghValue: []
},
leaderInfo: {
sf: '2'
},
userList: [],
userFormData: {},
fghSubLoading: false,
userSubLoading: false,
setzcfghdbtname: '',
setFghId: '',
butTitle: '设置组成基层工会',
defaultProps: {
children: 'childrens',
label: 'dbtname',
disabled: 'disabled'
},
rules: {
jdhid: [{required: true, message: '请选择教代会', trigger: ['change', 'blur']}],
dbtName: [{required: true, message: '请填写代表团名称', trigger: ['change', 'blur']}],
code: [{required: true, message: '请填写代表团编号', trigger: ['change', 'blur']}]
},
deleData: {},
dbtzc: "${config.dbtzc!}"
}
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'fgh') {
this.openFgh(data)
} else if (type == 'dw') {
this.openDw(data)
} else if (type == 'tz') {
this.openTz(data)
} else if (type == 'delete') {
this.doDelete(data.id)
} else if (type === 'editName') {
this.editName(data)
}
},
editName(data) {
this.deleData = data
this.editForm = {
dbtName: data.dbtname,
code: data.dictcode
}
this.deleDialogVisible = true
if (this.$refs['editForm']) {
this.$refs['editForm'].resetFields()
}
},
async deleDo() {
this.$refs['editForm'].validate(async (valid) => {
if (valid) {
const resp = await $.post(loc() + '/updateDelegation', {
id: this.deleData.id,
delegationName: this.editForm.dbtName,
code: this.editForm.code
})
if (resp.code === 0) {
this.$notify.success({title: '成功', message: resp.msg});
await this.undertakeUnitTree()
this.pageData()
this.deleDialogVisible = false
} else {
this.$notify.error({title: '失败', message: resp.msg});
}
}
})
},
async dbData() {
this.dbPageForm.jdhid = this.pageForm.jdhid
const resp = await $.get(loc() + '/dbTableData', this.dbPageForm)
if (resp.code === 0) {
this.dbTableData = resp.data
} else {
this.notifyWarning(resp.msg)
}
},
async dbDoSearch() {
await this.dbData()
},
openAdd() {
this.formData = {
dbtName: '',
code: ''
}
if (this.jdhList.length > 0) {
this.formData.jdhid = this.jdhList[0].id
}
this.addDialogVisible = true
if (this.$refs['addForm']) {
this.$refs['addForm'].resetFields()
}
},
addJdhChange(val) {
this.getDbtList(val)
},
async getDbtList(jdhid) {
const resp = await $.post(loc() + "/queryKyDbtMc", {jdhid: jdhid})
if (resp.code === 0) {
this.dbtList = resp.data
} else {
this.notifyWarning(resp.msg)
}
},
async doAdd() {
this.$refs['addForm'].validate(async (valid) => {
if (valid) {
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
});
// 构建提交数据
const data = {
jdhid: this.formData.jdhid,
dbtName: this.formData.dbtName,
code: this.formData.code
}
const resp = await $.post(loc() + '/doAdd', data)
loading.close()
if (resp.code === 0) {
await this.undertakeUnitTree()
this.pageData()
this.addDialogVisible = false
} else {
this.notifyWarning(resp.msg)
}
}
})
},
doDelete(id) {
this.$confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a, b) => {
if ("confirm" == a) {
const resp = await $.post(loc() + "/doDelete", {id})
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.undertakeUnitTree()
} else {
this.notifyWarning(resp.msg)
}
}
}
});
},
fghdoDelete(row) {
const {id} = row
this.$confirm('确定要移除该分工会吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a, b) => {
if ("confirm" == a) {
const resp = await $.post(loc() + "/fghdoDelete", {id: id})
if (resp.code === 0) {
this.notifySuccess(resp.msg)
await this.adminPageData()
} else {
this.notifyWarning(resp.msg)
}
}
}
});
},
dwdoDelete(row) {
const {id} = row
this.$confirm('确定要移除该单位吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a, b) => {
if ("confirm" == a) {
const resp = await $.post(loc() + "/dwdoDelete", {id: id})
if (resp.code === 0) {
this.notifySuccess(resp.msg)
await this.unitPageData()
} else {
this.notifyWarning(resp.msg)
}
}
}
});
},
delUser(row) {
let data = {
userid: row.id,
dbtid: this.adminPageForm.dbtid,
jdhid: this.pageForm.jdhid,
roleid: row.roleid
}
this.$confirm('确定要移除该团长或副团长吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a, b) => {
if ("confirm" == a) {
const resp = await $.post(loc() + "/userDoDelete", data)
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.getTzList()
} else {
this.notifyWarning(resp.msg)
}
}
}
});
},
async jdhChange(id) {
this.pageForm.dbtid = ''
this.delegations = await getDbt(id)
await this.undertakeUnitTree()
this.pageData()
},
handleNodeClick(data, node) {
this.node = node
this.checkData = data
this.dbPageForm.dbtid = data.id
this.adminPageForm.dbtid = data.id
this.adminPageForm.flag = this.activeName === 'one'
this.dbtzc === "unit" ? this.unitPageData() : this.adminPageData()
this.getTzList()
this.dbData()
},
handleTabClick(tab) {
if (tab.name === 'one') {
this.butTitle = this.dbtzc === "unit" ? '设置组成单位' : "设置组成工会"
this.adminPageForm.flag = tab.name === 'one'
this.dbData()
} else if (tab.name === 'two') {
this.butTitle = this.dbtzc === "unit" ? '设置组成单位' : "设置组成工会"
this.adminPageForm.flag = tab.name === 'two'
this.dbtzc === "unit" ? this.unitPageData() : this.adminPageData()
} else {
this.butTitle = '设置团长/副团长'
this.adminPageForm.flag = tab.name === 'three'
this.getTzList()
}
},
adminFilterMethod(query, item) {
return item.unionname.indexOf(query) > -1;
},
unitFilterMethod(query, item) {
return item.unitname.indexOf(query) > -1;
},
//查询没有被代表团设置的组成基层工会
async fghdoAdd(dbtid) {
const jdhid = this.pageForm.jdhid
this.fghFormData.jdhid = jdhid
this.fghFormData.dbtid = dbtid
const {data} = await $.get(loc() + "/findfgh", {jdhid, dbtid})
if (data) {
this.fghData = data.data
this.fghFormData.fghValue = data.value.map(v => {
return v.fghid
})
}
this.fghDialogVisible = true
},
//查询没有被代表团设置的组成单位
async dwdoAdd(dbtid) {
const jdhid = this.pageForm.jdhid
this.dwFormData.jdhid = jdhid
this.dwFormData.dbtid = dbtid
const {data} = await $.get(loc() + "/finddw", {jdhid, dbtid})
if (data) {
this.dwData = data.data
this.dwFormData.dwValue = data.value.map(v => {
return v.dwid
})
}
this.dwDialogVisible = true
},
//查询该代表团下的没有被设为团长副团长的代表
async openUser(dbtid) {
this.userFormData = {}
this.userFormData.dbtid = dbtid
this.userFormData.jdhid = this.pageForm.jdhid
const {data} = await $.get(loc() + "/queryUser", {
dbtid: dbtid,
jdhid: this.pageForm.jdhid
})
if (data) {
this.userList = data
}
this.userDialogVisible = true
},
//添加分工会
async dofgh() {
this.fghSubLoading = true
const data = clone(this.fghFormData)
data.fghValue = JSON.stringify(data.fghValue)
const resp = await $.post(loc() + "/fghdoAdd", data)
this.fghSubLoading = false
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.fghDialogVisible = false
this.pageData()
await this.adminPageData()
} else {
this.notifyWarning(resp.msg)
}
},
//添加单位
async dodw() {
this.dwSubLoading = true
const data = clone(this.dwFormData)
data.dwValue = JSON.stringify(data.dwValue)
const resp = await $.post(loc() + "/dwdoAdd", data)
this.dwSubLoading = false
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.dwDialogVisible = false
this.pageData()
await this.unitPageData()
} else {
this.notifyWarning(resp.msg)
}
},
async undertakeUnitTree() {
const {data} = await $.get(loc() + "/undertakeUnionTree", {jdhid: this.pageForm.jdhid})
this.treeData = [data]
this.pageData()
},
//该代表团下的组成基层工会
async adminPageData() {
const resp = await $.post(loc() + "/adminPageData", this.adminPageForm)
if (resp.code === 0) {
this.adminTableData = resp.data
} else {
this.notifyWarning(resp.msg)
}
},
//该代表团下的组成单位
async unitPageData() {
const resp = await $.post(loc() + "/unitPageData", this.adminPageForm)
if (resp.code === 0) {
this.unitTableData = resp.data
} else {
this.notifyWarning(resp.msg)
}
},
//获取团长副团长
async getTzList() {
const resp = await $.get(loc() + '/getTzList', this.adminPageForm)
if (resp.code === 0) {
this.TzTableData = resp.data
} else {
this.notifyWarning(resp.msg)
}
},
//添加团长或者副团长
doAddTz: throttle(async function () {
if (this.userFormData.userid == null) {
this.$notify({
title: '警告',
message: '请先选择团长或副团长',
type: 'warning'
});
return
}
this.userFormData.num = this.leaderInfo.sf
const resp = await $.post(loc() + "/doAddTz", this.userFormData)
if (resp.code === 0) {
this.getTzList()
this.notifySuccess(resp.msg)
} else {
this.notifyWarning(resp.msg)
}
this.userList = []
this.userFormData.userid = ''
this.userDialogVisible = false
}, 2000),
openFgh(row) {
const {dbtname} = row
const dbtid = row.id
this.setzcfghdbtname = dbtname
this.fghdoAdd(dbtid)
},
openDw(row) {
const {dbtname} = row
const dbtid = row.id
this.setzcfghdbtname = dbtname
this.dwdoAdd(dbtid)
},
userChange(val) {
const sf = this.leaderInfo.sf
this.leaderInfo = this.userList.find(v => {
if (v.id === val) {
return v
}
})
this.$set(this.leaderInfo, 'sf', sf)
},
openTz(row) {
this.leaderInfo = {
mobile: '',
dwname: '',
sf: '2'
}
const dbtid = row.id
this.openUser(dbtid)
},
async getUnits() {
this.unitList = await getUnits(this.dbPageForm.unionid)
}
},
async created() {
this.jdhList = await getAllMeeting()
if (this.jdhList.length > 0) {
this.pageForm.jdhid = this.jdhList[0].id
this.delegations = await getDbt(this.jdhList[0].id)
this.pageData()
}
await this.getUnits()
this.unionList = await getUnions(null)
await this.undertakeUnitTree()
}
})
</script>
<!--#
}
#-->
File diff suppressed because it is too large Load Diff
@@ -1,746 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.dialog-footer .el-button {
padding: 12px 30px;
}
.el-transfer {
text-align: center;
}
.el-transfer-panel {
text-align: left;
width: 35%;
height: 400px;
}
.el-transfer-panel__list.is-filterable {
height: 300px;
}
.v-box .el-card__header {
padding: 5px 15px;
}
.v-tree-layout-left .v-tree {
width: 100%;
}
.v-tree-layout-left .custom-tree-node {
width: 90%;
position: relative;
}
.v-tree-layout-left .v-tree .v-node {
width: 100%;
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.v-tree-layout-left .v-tree {
width: 100%;
}
.v-tree-layout-left .custom-tree-node {
width: 90%;
position: relative;
}
.v-tree-layout-left .v-tree .v-node {
width: 100%;
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<tree-layout id="treeLayout" style="height: calc(100vh - 70px)">
<template #tree>
<div style="border-right: 2px solid rgb(240,240,240);padding: 20px;">
<el-input
placeholder="输入关键字进行查找"
v-model="filterText">
</el-input>
</div>
<el-tree ref="tree" :data="treeData" class="v-tree" v-loading="treeLoading" node-key="id"
:props="defaultProps"
default-expand-all :expand-on-click-node="false"
@node-click="handleNodeClick" accordion
highlight-current :filter-node-method="filterNode">
<div class="custom-tree-node" slot-scope="{ node, data }">
<div v-if="node.level==1" style="font-size: 16px;" class="v-node"><i
class="el-icon-s-home"></i>&nbsp;
{{ data.name }}
</div>
<div v-if="node.level==2"
style="font-size: 15px" :title="data.name" class="v-node">
<i class="el-icon-star-on" v-if="checkData.name==data.name"></i>
<i class="el-icon-star-off" v-else></i>
&nbsp; {{ data.name }}
</div>
<div v-if="node.level==3"
style="font-size: 14px" :title="data.name" class="v-node">
<i class="fa fa-dot-circle-o" v-if="checkData.name==data.name"></i>
<i class="fa fa-circle-o" v-else></i>
&nbsp; {{ data.name }}
</div>
<div v-if="node.level>3"
style="font-size: 14px" :title="data.name" class="v-node">
<i class="fa fa-dot-circle-o" v-if="checkData.name==data.name"></i>
<i class="fa fa-circle-o" v-else></i>
&nbsp; {{ data.name }}
</div>
</div>
</el-tree>
</template>
<template>
<div v-if="node.level==1" class="pl10 pr10">
<div v-if="hasChildren">
<el-card shadow="never">
<el-row type="flex" justify="end">
<el-button type="primary" icon="el-icon-plus"
@click="openAdd()">
新建机构
</el-button>
</el-row>
<!-- <div class="btn-group tool-button">
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword" clearable>
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询"
style="width: 100px;">
<el-option label="机构名称" value="name"></el-option>
<el-option label="机构编码" value="mechanismcode"></el-option>
</el-select>
</el-input>
</div>
<div class="btn-group tool-button">
<el-button type="primary" icon="el-icon-search" @click="pageData"></el-button>
</div>-->
<!-- <div class="pull-right offscreen-right">-->
<!-- </div>-->
</el-card>
<el-card shadow="never" class="mt10">
<el-table key="1" :data="tableData" ref="table1">
<el-table-column label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column prop="name" align="center" label="机构名称"></el-table-column>
<el-table-column prop="mechanismcode" align="center" label="机构编码"></el-table-column>
<el-table-column prop="mechanismName" show-overflow-tooltip align="center"
label="备注"></el-table-column>
<el-table-column align="center" label="操作" width="100px">
<template 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:'edit',data:row}">
编辑
</el-dropdown-item>
<el-dropdown-item :command="{type:'delete',data:row}">
删除
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
</el-card>
</div>
<div v-if="!hasChildren">
<el-card shadow="never" shadow="never">
<div class="btn-group tool-button">
<el-select v-model="pageForm.jdhid" filterable placeholder="请选择教代会"
@change="jdhChange">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword" clearable>
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询"
style="width: 100px;">
<el-option label="工号" value="us.loginname"></el-option>
<el-option label="姓名" value="us.username"></el-option>
</el-select>
</el-input>
</div>
<div class="btn-group tool-button">
<el-button type="primary" icon="el-icon-search" @click="cyPageData"></el-button>
</div>
<div class="offscreen-right pull-right">
<el-button size="medium" type="primary"
icon="el-icon-plus"
@click="openCy()">
设置委员
</el-button>
</div>
</el-card>
<el-card shadow="never" class="mt10">
<el-table key="2" :data="cyTableData" ref="table2">
<el-table-column label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column prop="loginname" align="center" label="工号"></el-table-column>
<el-table-column prop="username" align="center" label="姓名"></el-table-column>
<el-table-column prop="sex" align="center" label="性别"></el-table-column>
<el-table-column prop="mobile" align="center" label="手机"></el-table-column>
<el-table-column prop="unitname" align="center" label="单位" show-overflow-tooltip>
<template slot-scope="{row}">
({{row.unitcode}}){{row.unitname}}
</template>
</el-table-column>
<el-table-column prop="jdhallname" align="center" label="届次"></el-table-column>
<el-table-column sortable prop="sf" label="身份">
<template slot-scope="{row}">
<span class="text-primary" v-if="row.sf===1">委员</span>
<span v-if="row.sf===2" class="text-primary">副主任</span>
<span v-if="row.sf===3" class="text-primary">主任</span>
</template>
</el-table-column>
<el-table-column align="center" label="操作" width="100px">
<template scope="{row}">
<el-dropdown>
<el-button size="mini">
<i class="ti-settings"></i>
<span class="ti-angle-down"></span>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item
@click.native="doDeleteCy(row)">删除
</el-dropdown-item>
<el-dropdown-item v-if="row.sf!==3"
@click.native="updateSf(row,3)"
class="text-primary">设置主任
</el-dropdown-item>
<el-dropdown-item v-if="row.sf!==2"
@click.native="updateSf(row,2)"
class="text-primary">设置副主任
</el-dropdown-item>
<el-dropdown-item v-if="row.sf!==1"
@click.native="updateSf(row,1)"
class="text-primary">设置委员
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
@size-change="cyPageSizeChange"
@current-change="cyPageNumberChange"
:current-page="cyPageForm.pageNumber"
:page-sizes="[5,10, 20, 30, 50]"
:page-size="cyPageForm.pageSize"
layout="total, sizes, prev, pager, next"
:total="cyPageForm.totalCount">
</el-pagination>
</el-row>
</el-card>
</div>
</div>
</template>
</tree-layout>
</template>
<template #edit>
<el-divider content-position="left"><span style="color: rgb(121, 187, 255)">请填写以下机构信息</span>
</el-divider>
<el-form :model="formData" ref="addForm" :rules="rules" label-width="100px">
<el-row gutter="30">
<el-col :span="24">
<el-form-item prop="name" label="上级机构">
<el-input maxlength="100" disabled :value="checkData.name"
type="text"></el-input>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item prop="jdhid" label="所属教代会">
<el-select v-model="formData.jdhid" placeholder="选择教代会" @change="ssChange"
:disabled="!nodeZm"
style="width: 100%">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>-->
<el-col :span="12">
<el-form-item label="机构名称" prop="name" v-if="!nodeZm">
<el-input maxlength="100" placeholder="请输入机构名称" :disabled="formData.id!=null"
v-model="formData.name"
type="text"></el-input>
</el-form-item>
<el-form-item prop="name" label="机构名称" v-else>
<el-select v-model="formData.wyh" value-key="id" style="width: 100%"
@change="wyhChange"
:disabled="formData.id!=null">
<el-option v-for="i in wyhList" :label="i.name" :value="i" :key="i.id"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="机构代码" prop="unitcode">
<el-input maxlength="100" placeholder="请输入机构编码"
v-model="formData.mechanismcode"
type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注" prop="unitcode">
<el-input maxlength="100" placeholder="请输入备注"
v-model="formData.mechanismName"
:autosize="{ minRows: 4, maxRows: 8}"
type="textarea"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div style="display: flex;justify-content:flex-end;margin-top: 30px">
<el-button type="primary" :loading="loading" @click="!formData.id?doAdd():doEdit()">提 交
</el-button>
</div>
</template>
</guava>
<el-dialog :visible.sync="cyDialogVisible" title="设置委员" width="40%">
<el-form label-width="100px">
<el-form-item prop="jdhallname" label="届次">
<el-select v-model="pageForm.jdhid" disabled style="width: 100%">
<el-option
v-for="item in jdhList"
:key="item.id"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="userid" label="工号或姓名">
<el-select v-model="cyFormData.userid" filterable placeholder="请输入工号或姓名关键字"
remote reserve-keyword :remote-method="queryUser" style="width: 100%" @change="userChange">
<el-option
v-for="item in userList"
:key="item.userid"
:label="item.username+'('+item.loginname+')'"
:value="item.userid">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="mobile" label="联系方式">
<el-input v-model="cyFormData.mobile" readonly></el-input>
</el-form-item>
<el-form-item prop="dwname" label="所属单位">
<el-input v-model="cyFormData.dwname" readonly></el-input>
</el-form-item>
<el-form-item prop="sf" label="身份">
<el-radio-group v-model="cyFormData.sf">
<el-radio-button label="1">&emsp;</el-radio-button>
<el-radio-button label="2">副主任</el-radio-button>
<el-radio-button label="3">&emsp;</el-radio-button>
</el-radio-group>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="doCy" :loading="cySubLoading">确 定</el-button>
</span>
</el-dialog>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
userList: [],
nodeZm: false,
wyhList: [],
title: '',
hasChildren: true,
TableData: [],
loading: false,
checkData: {},
jdhList: [],
treeData: [],
cyTableData: [],
cyPageForm: {
searchName: "",
searchKeyword: "",
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: "",
pageOrderBy: ""
},
filterText: '',
treeLoading: true,
cyDialogVisible: false,
cySubLoading: false,
defaultProps: {
children: 'child',
label: 'name',
},
cyData: [],
cyFormData: {
userid: "",
},
node: {
level: 1
},
rules: {
jdhid: [{required: true, message: '请选择教代会', trigger: ['change', 'blur']}],
},
tableHeight: null
}
},
components: {
'tree-layout': httpVueLoader('/components/plugins/TreeLayout.vue')
},
watch: {
filterText(val) {
this.$refs.tree.filter(val);
},
},
methods: {
wyhChange(val) {
this.$set(this.formData, 'mechanismcode', val.code)
},
userChange(val) {
this.cyFormData = this.userList.find(v => {
if (v.userid === val) {
return v
}
})
this.$set(this.cyFormData, 'sf', '1')
},
async queryUser(query) {
const {data} = await $.get(loc() + "/queryUser", {
jdhid: this.pageForm.jdhid,
jgid: this.checkData.id,
query: query
})
if (data) {
this.userList = data
}
},
queryKyWyhMc(jdhid) {
if (jdhid !== '') {
$.get(loc() + '/queryKyWyhMc', {jdhid: jdhid}).then(res => {
if (res.code === 0) {
this.wyhList = res.data
}
})
}
},
adminFilterMethod(query, item) {
return item.username.indexOf(query) > -1;
},
async jdhChange(jdhid) {
await this.cyPageData()
await this.pageData()
this.queryKyWyhMc(jdhid)
},
async ssChange(jdhid) {
this.queryKyWyhMc(jdhid)
},
dropdownCommand: function (command) {
const {type, data} = command
if (type == 'view') {
} else if (type == 'edit') {
this.openEdit(data)
} else if (type == 'delete') {
this.doDelete(data.id)
}
},
filterNode(value, data, node) {
if (!value) return true;
return data.name.indexOf(value) !== -1
return false
},
async handleNodeClick(data, node) {
this.nodeZm = node.label === "专门委员会"
this.pageForm.mcid = data.mcid
this.pageForm.jgid = data.id
this.hasChildren = data.hasChildren
this.checkData = data
this.checkNode = node
this.pageForm.parentId = this.checkData.id
if (!this.hasChildren) {
await this.cyPageData()
} else {
this.pageData()
}
},
async loadTree(flush) {
this.treeLoading = true
const {
code,
data,
msg
} = await $.get("/platform/jdh/zzjg/mechanism/getJgszTreeData", {jdhid: this.pageForm.jdhid})
this.treeLoading = false
if (code == 0) {
this.treeData = data
} else {
this.$message({
message: msg,
type: 'error'
});
}
if (flush && code == 0) {
this.checkData = data[0]
this.pageData();
}
},
openAdd() {
const id = this.checkData
this.formData = {
parentId: id.id,
jdhid: id.jdhid,
}
this.ssChange()
this.$refs.guava.edit()
if (this.$refs['addForm']) {
this.$refs['addForm'].resetFields()
}
},
doAdd() {
this.$refs["addForm"].validate(async (valid) => {
if (valid) {
this.loading = true
console.log(this.formData)
// this.formData.mcid = this.formData.wyh.id
// this.formData.name = this.formData.wyh.name
const resp = await $.post(loc() + "/doAdd", this.formData)
this.loading = false
if(resp.code===0){
await this.loadTree(false)
this.pageData();
this.$refs.guava.index()
}else{
this.notifyWarning(resp.msg)
}
}
});
},
async openCy() {
this.cyFormData = {
userid: '',
mobile: '',
dwname: '',
sf: '1'
}
this.cyDialogVisible = true
},
cyPageNumberChange(val) {
this.pageForm.pageNumber = val;
this.cyPageData();
},
cyPageSizeChange(val) {
this.pageForm.pageSize = val;
this.cyPageData();
},
async cyPageData() {
const jgid = this.pageForm.jgid
const jdhid = this.pageForm.jdhid
const data = await $.post(loc() + "/cyPageData", this.pageForm)
this.tableLoading = false
if (data.code == 0) {
this.cyTableData = data.data.list;
this.cyPageForm.totalCount = data.data.totalCount;
} else {
this.$message.error(data.msg);
}
},
async doCy() {
this.cyDialogVisible = true
if (this.cyFormData.userid === '') {
this.$message.info('请先选择用户!')
return
}
this.cySubLoading = true
this.cyFormData.jgid = this.pageForm.jgid
this.cyFormData.jdhid = this.pageForm.jdhid
this.cyFormData.mcid = this.pageForm.mcid
const resp = await $.post(loc() + "/cydoAdd", this.cyFormData)
if(resp.code===0){
this.cyDialogVisible = false
this.cyPageData();
this.notifySuccess(resp.msg)
}else{
this.notifyWarning(resp.msg)
}
this.cyPageData()
this.cyFormData.userid = ''
this.userList = []
this.cyDialogVisible = false
this.cySubLoading = false
},
async openEdit(row) {
this.wyhList = this.queryKyWyhMc(row.jdhid)
this.formData = {
id: row.id,
wyh: row.name,
name: row.name,
jdhid: row.jdhid,
mechanismName: row.mechanismName,
mechanismcode: row.mechanismcode
}
this.$refs.guava.edit()
},
doEdit() {
this.$refs["addForm"].validate(async (valid) => {
if (valid) {
this.loading = true
this.formData.mcid = this.formData.wyh.id
this.formData.name = this.formData.wyh.name
const resp = await $.post(loc() + "/doEdit", this.formData)
this.loading = false
if(resp.code===0){
this.loadTree(false)
this.pageData();
this.$refs.guava.index()
}else{
this.notifyWarning(resp.msg)
}
}
});
},
doDelete(id) {
this.$confirm('确定要删除该机构吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a, b) => {
if ("confirm" == a) {
const resp = await $.post(loc() + "/doDelete", {id: id})
if(resp.code===0){
this.notifySuccess(resp.msg)
this.pageData()
this.loadTree(true)
}else{
this.notifyWarning(resp.msg)
}
}
}
});
},
doDeleteCy(row) {
this.$confirm('确定要删除该委员吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a, b) => {
if ("confirm" == a) {
const resp = await $.post(loc() + "/doDeleteCy", row)
if(resp.code===0){
this.notifySuccess(resp.msg)
this.pageData()
this.cyPageData()
this.loadTree(true)
}else{
this.notifyWarning(resp.msg)
}
}
}
});
},
updateSf(row, sf) {
$.post(loc() + '/updateSf',
{
userid: row.userid,
jgid: row.jgid,
sf: sf,
jdhid: row.jdhid
}).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.cyPageData()
this.pageData()
}
})
},
},
async created() {
this.jdhList = await getAllMeeting()
if (this.jdhList.length > 0) {
this.pageForm.jdhid = this.jdhList[0].id
}
this.loadTree(true)
},
mounted() {
// setTimeout(() => {
// this.tableHeight = window.innerHeight - 88 - this.$refs.table1.$el.getBoundingClientRect().top
// this.tableHeight = window.innerHeight - 88 - this.$refs.table2.$el.getBoundingClientRect().top
// window.onresize = () => {
// this.tableHeight = window.innerHeight - 88 - this.$refs.table1.$el.getBoundingClientRect().top
// this.tableHeight = window.innerHeight - 88 - this.$refs.table2.$el.getBoundingClientRect().top
// }
// }, 100)
}
})
</script>
<!--#
}
#-->