This commit is contained in:
2025-10-29 16:24:34 +08:00
parent c247c9a4d1
commit 291f307f04
2 changed files with 93 additions and 47 deletions
@@ -38,6 +38,13 @@ public class Teacher_congress_meeting extends BaseModel {
@Size(max = 32) @Size(max = 32)
private String type; private String type;
@Column
@Comment("会议活动所属类型(delegation:代表团/union:分工会)")
@ColDefine(type = ColType.VARCHAR)
@NotBlank(message = "会议活动所属类型不能为空")
@Size(max = 32)
private String meetingType;
@Column @Column
@Comment("名称") @Comment("名称")
@ColDefine(type = ColType.VARCHAR, width = 100) @ColDefine(type = ColType.VARCHAR, width = 100)
@@ -7,16 +7,17 @@ layout("/layouts/platform.html"){
<search @search="doSearch"> <search @search="doSearch">
<search-item label="教代会"> <search-item label="教代会">
<el-select v-model="pageForm.sessionId" style="width: 100%"> <el-select v-model="pageForm.sessionId" style="width: 100%">
<el-option v-for="item in sessionOptions" :label="item.fullName" :value="item.id" :key="item.id"></el-option> <el-option v-for="item in sessionOptions" :label="item.fullName" :value="item.id"
:key="item.id"></el-option>
</el-select> </el-select>
</search-item> </search-item>
<search-item label="类型"> <search-item label="类型">
<el-select v-model="pageForm.type" clearable filterable placeholder="请选择类型"> <el-select v-model="pageForm.type" clearable filterable placeholder="请选择类型">
<el-option <el-option
v-for="item in dict.type.TEACHER_CONGRESS_MEETING_TYPE" v-for="item in dict.type.TEACHER_CONGRESS_MEETING_TYPE"
:label="item.name" :label="item.name"
:value="item.code" :value="item.code"
:key="item.id" :key="item.id"
></el-option> ></el-option>
</el-select> </el-select>
</search-item> </search-item>
@@ -35,7 +36,8 @@ layout("/layouts/platform.html"){
<el-table-column prop="name" label="名称"></el-table-column> <el-table-column prop="name" label="名称"></el-table-column>
<el-table-column prop="sessionName" label="教代会"> <el-table-column prop="sessionName" label="教代会">
<template scope="scope"> <template scope="scope">
<dict-tag :options="sessionOptions" :value="scope.row.sessionId" option_value="id" option_label="fullName"></dict-tag> <dict-tag :options="sessionOptions" :value="scope.row.sessionId" option_value="id"
option_label="fullName"></dict-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="name" label="名称"></el-table-column> <el-table-column prop="name" label="名称"></el-table-column>
@@ -58,49 +60,86 @@ layout("/layouts/platform.html"){
<!--#include("/layouts/pagination.html"){}#--> <!--#include("/layouts/pagination.html"){}#-->
</el-card> </el-card>
<el-dialog :title="formData.id ? '编辑':'新增'" :visible.sync="dialogFormVisible" width="60%" :close-on-click-modal="false"> <el-dialog :title="formData.id ? '编辑':'新增'" :visible.sync="dialogFormVisible" width="60%"
<el-form :model="formData" ref="formRef" size="small" label-width="120px" :rules="formRules"> :close-on-click-modal="false">
<el-form-item label="发布人"> <el-form :model="formData" ref="formRef" size="small" label-width="140px" :rules="formRules">
<el-input :value="$store.state.user.username"></el-input> <el-row :gutter="20">
</el-form-item> <el-col :span="12">
<el-form-item prop="sessionId" label="教代会"> <el-form-item label="发布人">
<el-select v-model="formData.sessionId"> <el-input :value="$store.state.user.username" disabled></el-input>
<el-option v-for="item in sessionOptions" :label="item.fullName" :value="item.id" :key="item.id"></el-option> </el-form-item>
</el-select> </el-col>
</el-form-item> <el-col :span="12">
<el-form-item label="名称" prop="name"> <el-form-item label="工号">
<el-input v-model="formData.name" maxlength="100" placeholder="请输入名称"></el-input> <el-input :value="$store.state.user.loginname" disabled></el-input>
</el-form-item> </el-form-item>
<el-form-item label="类型" prop="type"> </el-col>
<dict-select v-model="formData.type" code="TEACHER_CONGRESS_MEETING_TYPE" placeholder="请选择类型"></dict-select> <el-col :span="12">
</el-form-item> <el-form-item prop="sessionId" label="教代会">
<div class="flex"> <el-select v-model="formData.sessionId" style="width: 100%;" placeholder="请选择教代会">
<el-form-item label="时间" prop="times"> <el-option v-for="item in sessionOptions" :label="item.fullName" :value="item.id"
<el-date-picker :key="item.id"></el-option>
style="width: 100%" </el-select>
v-model="formData.times" </el-form-item>
type="datetimerange" </el-col>
value-format="yyyy-MM-dd HH:mm:ss" <el-col :span="12">
start-placeholder="开始日期" <el-form-item prop="meetingType" label="会议活动所属类型">
end-placeholder="结束日期" <el-select v-model="formData.meetingType" style="width: 100%;" placeholder="请选择会议活动所属类型">
:default-time="['12:00:00', '08:00:00']" <el-option label="代表团会议活动" value="delegation"
></el-date-picker> v-if="$auth.hasRole('SYSADMIN')
</el-form-item> || $auth.hasRole('SCHOOL_UNION_ADMIN')
<el-form-item label="经费预算" prop="budget"> || $auth.hasRole('TEACHER_CONGRESS_DELEGATION_HEAD')"></el-option>
<el-input placeholder="请输入经费预算" v-model="formData.budget" maxlength="2000"></el-input> <el-option label="分工会会议活动" value="union"
</el-form-item> v-if="$auth.hasRole('SYSADMIN')
</div> || $auth.hasRole('SCHOOL_UNION_ADMIN')
|| $auth.hasRole('BRANCH_UNION_CHAIRMAN')"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="会议活动名称" prop="name">
<el-input v-model="formData.name" maxlength="100" placeholder="请输入名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="会议活动类型" prop="type">
<dict-select v-model="formData.type" code="TEACHER_CONGRESS_MEETING_TYPE"
placeholder="请选择类型"></dict-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="会议活动时间" prop="times">
<el-date-picker
style="width: 100%"
v-model="formData.times"
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-col>
<el-col :span="12">
<el-form-item label="经费预算" prop="budget">
<el-input placeholder="请输入经费预算" v-model="formData.budget" maxlength="2000"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="场地" prop="site"> <el-form-item label="场地" prop="site">
<el-input placeholder="请输入场地地点" v-model="formData.site" maxlength="50"></el-input> <el-input placeholder="请输入场地地点" v-model="formData.site" maxlength="50"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="内容" prop="content"> <el-form-item label="内容" prop="content">
<el-input v-model="formData.content" type="textarea" rows="5" maxlength="2000" show-word-limit></el-input> <el-input v-model="formData.content" type="textarea" rows="5" maxlength="2000"
show-word-limit></el-input>
</el-form-item> </el-form-item>
<el-form-item label="纪要" prop="summary"> <el-form-item label="纪要" prop="summary">
<el-input v-model="formData.summary" type="textarea" rows="5" maxlength="1000" show-word-limit></el-input> <el-input v-model="formData.summary" type="textarea" rows="5" maxlength="1000"
show-word-limit></el-input>
</el-form-item> </el-form-item>
<el-form-item label="附件" prop="files"> <el-form-item label="附件" prop="files">
<file-upload :value.sync="formData.files" :upload_number="5" upload_result_category="array" complete_result></file-upload> <file-upload :value.sync="formData.files" :upload_number="5" upload_result_category="array"
complete_result></file-upload>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@@ -141,9 +180,9 @@ layout("/layouts/platform.html"){
dialogFormVisible: false, dialogFormVisible: false,
formRules: { formRules: {
sessionId: [{ required: true, message: "必填", trigger: ["change", "blur"] }], sessionId: [{required: true, message: "必填", trigger: ["change", "blur"]}],
name: [{ required: true, message: "必填", trigger: ["change", "blur"] }], name: [{required: true, message: "必填", trigger: ["change", "blur"]}],
code: [{ required: true, message: "必填", trigger: ["change", "blur"] }] code: [{required: true, message: "必填", trigger: ["change", "blur"]}]
}, },
sessionOptions: [], sessionOptions: [],
typeOptions: [], typeOptions: [],
@@ -169,7 +208,7 @@ layout("/layouts/platform.html"){
}, },
openEdit(id) { openEdit(id) {
this.dialogFormVisible = true this.dialogFormVisible = true
this.$axios.post(loc() + "/findOne", { id }).then((res) => { this.$axios.post(loc() + "/findOne", {id}).then((res) => {
if (res.code === 0) { if (res.code === 0) {
res.data.times = [res.data.startDateTime, res.data.endDateTime] res.data.times = [res.data.startDateTime, res.data.endDateTime]
if (res.data.files) { if (res.data.files) {
@@ -189,7 +228,7 @@ layout("/layouts/platform.html"){
const formData = this.formData const formData = this.formData
formData.startDateTime = this.formData.times[0] formData.startDateTime = this.formData.times[0]
formData.endDateTime = this.formData.times[1] formData.endDateTime = this.formData.times[1]
this.$axios.post(loc() + (this.formData.id ? "/update" : "/insert"), { data: JSON.stringify(formData) }).then((res) => { this.$axios.post(loc() + (this.formData.id ? "/update" : "/insert"), {data: JSON.stringify(formData)}).then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.dialogFormVisible = false this.dialogFormVisible = false
this.$message.success(res.msg) this.$message.success(res.msg)
@@ -201,7 +240,7 @@ layout("/layouts/platform.html"){
}, },
openView(id) { openView(id) {
this.viewDialogVisible = true this.viewDialogVisible = true
this.$axios.post(loc() + "/findOne", { id }).then((res) => { this.$axios.post(loc() + "/findOne", {id}).then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.viewData = res.data this.viewData = res.data
} }