Files
UNION_NSI/target/classes/views/platform/jdh/hyhd/index.html
T
2026-09-08 19:49:21 +08:00

621 lines
28 KiB
HTML

<!--#
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>
<!--#
}
#-->