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

597 lines
26 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!--#
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 ref="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" @click="openView(row.id)">查看</el-button>
<el-button v-if="moment().format('YYYY-MM-DD')<row.jssj" size="mini" @click="openCy(row.id)">
人员设置
</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>
<template #edit>
<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="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="addwp"
:upload-auto="false"
:file-list="fileList"
@on-delete="onDeleteFile"
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>
<el-row type="flex" justify="end">
<el-button @click="$refs.guava.index()">取 消</el-button>
<el-button type="primary" @click="doHandle">确 定</el-button>
</el-row>
</template>
</guava>
<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-form label-suffix=":" label-position="left" style="padding: 20px 0">
<el-row gutter="20">
<vi-title title="基础信息"></vi-title>
<el-col :span="12">
<el-form-item label="教代会">
{{ viewData.data.jdhallname }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="类型">
{{viewData.data.lx===1?'会议':'活动'}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="开始时间">
{{viewData.data.kssj}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="结束时间">
{{viewData.data.jssj}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="发布人">
{{viewData.data.username}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="经费预算">
{{viewData.data.jfys}}元
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="内容">
{{viewData.data.nr}}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="纪要">
{{viewData.data.jy}}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item 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>
<td v-else class="content" colspan="4">
<div class="text-center">暂无</div>
</td>
</el-form-item>
</el-col>
<el-col :span="24">
<vi-title title="附件"></vi-title>
<el-form-item label="附件">
<el-link v-for="f in viewData.fileList" type="primary" @click="dd3s.preview(f.filepath,f.id)"
v-if="viewData.fileList.length>0">
{{f.filename}}
</el-link>
<td v-else class="content" colspan="4">
<div class="text-center">暂无</div>
</td>
</el-form-item>
</el-col>
</el-row>
</el-form>
</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: false, message: '请填写经费预算', trigger: ['blur', 'change']}],
cd: [{required: false, message: '请填写场地名称', trigger: ['blur', 'change']}],
nr: [{required: false, message: '请填写内容', trigger: ['blur', 'change']}],
jy: [{required: false, message: '请填写纪要', trigger: ['blur', 'change']}],
}
let vue = new Vue({
el: '#app',
data() {
return {
pageForm: {
pageNumber: 1,
pageSize: 10,
totalCount: 0,
name: '',
lx: null
},
jdhList: [],
addDialogVisible: false,
formData: {},
rules: rules,
tableData: [],
fileList: [],
editDialogVisible: false,
delFile: [],
userDialogVisible: false,
userFormData: {},
userTableData: [],
userList: [],
viewData: {
data: {},
fileList: [],
userList: []
},
viewDialogVisible: false
}
},
methods: {
doHandle() {
if (this.formData.id) {
this.doEdit()
} else {
this.doAdd()
}
},
onDeleteFile(file) {
this.delFile.push({fileid: file.fileDes.id, filepath: file.fileDes.filepath})
},
openAdd() {
this.$refs.guava.edit()
this.formData = {}
if (this.$refs.addwp) {
this.$refs.addwp.clean()
}
},
async doAdd() {
const valid = await this.$refs['AddForm'].validate()
if (!valid) return
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))
if (this.$refs.addwp.fileShowArray.length > 0) {
formData.append("file", this.$refs.addwp.fileShowArray[0].file)
}
const resp = await $.ajax({
url: base + '/platform/jdh/hyjhd/doAdd',
type: "post",
data: formData,
processData: false,
contentType: false
})
if (resp.code === 0) {
this.$refs.guava.index()
this.pageData()
this.$message.success(resp.msg)
}
/*this.$refs['AddForm'].validate(valid => {
if (valid) {
$.ajax({
url: base + '/platform/jdh/hyjhd/doAdd',
type: "post",
data: formData,
processData: false,
contentType: false
}).then(res => {
if (res.code === 0) {
this.$refs.guava.index()
// 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()
},
async openEdit(row) {
this.$refs.guava.edit()
const resp = await $.get(base + '/platform/jdh/hyjhd/findOne', {id: row.id})
if (resp.code === 0) {
this.formData = resp.data.data
this.formData.sj = [resp.data.data.kssj, resp.data.data.jssj]
this.formData.lx = this.formData.lx.toString()
for (let f of resp.data.fileList) {
f.name = f.filename
f.url = '${AppFileDomain!}' + f.filepath
}
this.fileList = resp.data.fileList
this.$nextTick(() => {
this.$refs.addwp.refreshFileList()
})
}
/*$.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.addwp.refreshFileList()
})
}
})*/
},
async doEdit() {
const valid = await this.$refs['AddForm'].validate()
if (!valid) return
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.addwp.fileShowArray.length > 0) {
if (this.$refs.addwp.fileShowArray[0].status === 0) {
formData.append("file", this.$refs.addwp.fileShowArray[0].file)
}
}
const resp = await $.ajax({
url: base + '/platform/jdh/hyjhd/doEdit',
type: "post",
data: formData,
processData: false,
contentType: false
})
if (resp.code === 0) {
this.$refs.guava.index()
this.pageData()
this.$message.success(resp.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.viewData.userList = []
$.get(base + '/platform/jdh/hyjhd/userData', {id: id}).then(res => {
if (res.code === 0) {
this.viewData.userList = res.data
}
})
}
})
}
},
async created() {
this.jdhList = await getOpenJdh()
if (this.jdhList.length > 0) {
this.pageForm.jdhid = this.jdhList[0].id
this.pageData()
}
}
})
</script>
<!--#
}
#-->