first commit

This commit is contained in:
2026-09-08 19:49:21 +08:00
commit ebffbab428
7320 changed files with 1477614 additions and 0 deletions
@@ -0,0 +1,418 @@
<!--#
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>
<!--#
}
#-->
@@ -0,0 +1,484 @@
<!--#
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>
<!--#
}
#-->
@@ -0,0 +1,331 @@
<!--#
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>
<!--#
}
#-->