229 lines
12 KiB
HTML
229 lines
12 KiB
HTML
<!--#
|
|
layout("/layouts/platform.html"){
|
|
#-->
|
|
|
|
<style>
|
|
.cus_icon {
|
|
font-size: 34px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.el-icon-circle-plus {
|
|
color: #236eb4;
|
|
}
|
|
|
|
.el-icon-remove {
|
|
color: #f56c6c;
|
|
}
|
|
</style>
|
|
|
|
<div id="app" v-cloak>
|
|
<guava>
|
|
<el-card shadow="never">
|
|
|
|
<template #header>
|
|
<h3 style="color: #1867b0">发起会议</h3>
|
|
</template>
|
|
|
|
<el-tabs type="card" v-model="activeName">
|
|
|
|
<el-tab-pane label="会议基础信息" name="first">
|
|
<template>
|
|
<vi-title title="会议基础信息"></vi-title>
|
|
<el-form :model="formData" :rules="formRules" label-width="120px" ref="addForm">
|
|
<el-row :gutter="20" type="flex">
|
|
<el-col :span="12">
|
|
<el-form-item label="会议名称" prop="meetingName">
|
|
<el-input placeholder="请填写会议名称" type="text"
|
|
v-model.trim="formData.meetingName"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="会议地点" prop="meetingAddress">
|
|
<el-input placeholder="请填写会议地点" type="text"
|
|
v-model.trim="formData.meetingAddress"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
<el-row :gutter="20" type="flex">
|
|
<el-col :span="12">
|
|
<el-form-item label="会议类型" prop="typeId">
|
|
<el-select filterable placeholder="请选择会议类型" style="width: 100%"
|
|
v-model="formData.typeId">
|
|
<el-option :label="item.meetingTypeName" :value="item.id"
|
|
v-for="item in meetingTypeList"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="会议时间" prop="meetingTime">
|
|
<el-date-picker end-placeholder="结束日期"
|
|
format="yyyy-MM-dd"
|
|
range-separator="至" start-placeholder="开始日期" style="width: 100%"
|
|
type="daterange"
|
|
v-model="formData.meetingTime"
|
|
value-format="yyyy-MM-dd HH:mm:ss">
|
|
</el-date-picker>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
<el-row :gutter="20" type="flex">
|
|
<el-col :span="formData.isMsgNotify === '1' ? '6' : '12'">
|
|
<el-form-item label="是否消息通知" prop="isMsgNotify">
|
|
<el-radio border label="1" size="medium" v-model="formData.isMsgNotify">是
|
|
</el-radio>
|
|
<el-radio border label="2" size="medium" v-model="formData.isMsgNotify">否
|
|
</el-radio>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6" v-if="formData.isMsgNotify === '1'">
|
|
<el-form-item label="发送方式" prop="sendType">
|
|
<el-checkbox-group size="medium" v-model="formData.sendType">
|
|
<el-checkbox border label="msg">短信发送</el-checkbox>
|
|
<el-checkbox border label="WeChat">微信发送</el-checkbox>
|
|
</el-checkbox-group>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item label="是否可以请假" prop="isCanLeave">
|
|
<el-radio border label="yes" size="medium" v-model="formData.isCanLeave">允许
|
|
</el-radio>
|
|
<el-radio border label="no" size="medium" v-model="formData.isCanLeave">不允许
|
|
</el-radio>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6" v-if="formData.isCanLeave === 'yes'">
|
|
<el-form-item label="请假截止时间" prop="leaveDeadline">
|
|
<el-date-picker format="yyyy-MM-dd" placeholder="请选择日期" style="width: 100%"
|
|
type="date"
|
|
v-model="formData.leaveDeadline"
|
|
value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
<el-row :gutter="20" type="flex" v-if="formData.isMsgNotify === '1'">
|
|
<el-col :span="24">
|
|
<el-form-item label="消息内容" prop="msgContent">
|
|
<el-input :rows="4" placeholder="请输入消息内容" type="textarea"
|
|
v-model="formData.msgContent"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
<el-row :gutter="20" type="flex">
|
|
<el-col :span="24">
|
|
<el-form-item label="会议描述" prop="meetingDescribe">
|
|
<el-input :rows="4" placeholder="请输入会议描述" type="textarea"
|
|
v-model="formData.meetingDescribe"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
</el-form>
|
|
</template>
|
|
</el-tab-pane>
|
|
|
|
<el-tab-pane label="参与人员信息" name="second">
|
|
<template>
|
|
<vi-title title="参与人员信息"></vi-title>
|
|
<el-table :data="userTableData" style="width: 100%; margin-bottom: 20px">
|
|
<el-table-column label="用户名" prop="stateName"></el-table-column>
|
|
<el-table-column label="姓名" prop="reviewer"></el-table-column>
|
|
<el-table-column label="性别" prop="reviewer"></el-table-column>
|
|
<el-table-column label="所属单位" prop="reviewer"></el-table-column>
|
|
<el-table-column label="院级工会" prop="reviewer"></el-table-column>
|
|
</el-table>
|
|
</template>
|
|
</el-tab-pane>
|
|
|
|
</el-tabs>
|
|
|
|
<el-row justify="end" style="margin-top: 20px" type="flex">
|
|
<el-button @click="doSubmit" type="primary">提交</el-button>
|
|
</el-row>
|
|
|
|
</el-card>
|
|
</guava>
|
|
</div>
|
|
|
|
<script>
|
|
<!--# include("/platform/meeting/includeJs/meetingUtil.js"){} #-->
|
|
const meetUtil = new meetingUtil()
|
|
var vue = new Vue({
|
|
el: '#app',
|
|
mixins: [initTableMixins],
|
|
data() {
|
|
return {
|
|
meetingTypeList: [],
|
|
activeName: 'first',
|
|
formData: {isMsgNotify: '2', sendType: [], isCanLeave: 'no'},
|
|
userTableData: [],
|
|
tableData: [{stateName: '', auditStateUserList: []}],
|
|
formRules: {
|
|
meetingName: [{required: true, message: '请填写会议名称', trigger: ['blur', 'change']}],
|
|
meetingAddress: [{required: true, message: '请填写会议地点', trigger: ['blur', 'change']}],
|
|
typeId: [{required: true, message: '请选择会议类型', trigger: ['blur', 'change']}],
|
|
meetingTime: [{required: true, message: '请选择会议时间', trigger: ['blur', 'change']}],
|
|
sendType: [{required: true, message: '请选择发送方式', trigger: ['blur', 'change']}],
|
|
msgContent: [{required: true, message: '请填写消息内容', trigger: ['blur', 'change']}],
|
|
leaveDeadline: [{required: true, message: '请选择请假截止时间', trigger: ['blur', 'change']}],
|
|
},
|
|
userList: [],
|
|
}
|
|
},
|
|
methods: {
|
|
async doSubmit() {
|
|
const valid = await this.$refs["addForm"].validate()
|
|
if (valid) {
|
|
if (this.formData.isCanLeave === 'yes') {
|
|
for (const [index, item] of this.tableData.entries()) {
|
|
if (item.stateName === '' || item.stateName === undefined) {
|
|
this.$notify({title: '警告', message: '第' + (index + 1) + '条审核节点名称不能为空', type: 'warning'})
|
|
return
|
|
}
|
|
if (item.auditStateUserList.length === 0) {
|
|
console.log(item.auditStateUserList)
|
|
this.$notify({title: '警告', message: '第' + (index + 1) + '条审核人不能为空', type: 'warning'})
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
//开始提交
|
|
const submitFormData = clone(this.formData)
|
|
submitFormData.startTime = this.formData.meetingTime && this.formData.meetingTime.length > 0 ? this.formData.meetingTime[0] : ''
|
|
submitFormData.endTime = this.formData.meetingTime && this.formData.meetingTime.length > 1 ? this.formData.meetingTime[1] : ''
|
|
delete submitFormData.meetingTime
|
|
|
|
submitFormData.meetingUserList = this.userTableData
|
|
|
|
const {code} = await $.post(loc() + "/doAdd", {
|
|
meetingInfo: JSON.stringify(submitFormData)
|
|
})
|
|
if (code === 0) {
|
|
this.$notify({title: '成功', message: '提交成功', type: 'success'})
|
|
}
|
|
}
|
|
},
|
|
},
|
|
async created() {
|
|
this.meetingTypeList = await meetUtil.getAllMeetingType()
|
|
},
|
|
watch: {
|
|
'tableData': {
|
|
handler: function (newValue, oldValue) {
|
|
|
|
},
|
|
deep: true,
|
|
}
|
|
},
|
|
})
|
|
</script>
|
|
|
|
|
|
<!--#
|
|
}
|
|
#--> |