first commit
This commit is contained in:
@@ -0,0 +1,263 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava>
|
||||
<el-card shadow="never">
|
||||
<template #header>
|
||||
<el-row type="flex">
|
||||
<el-col :span="12" v-if="id">
|
||||
<el-button @click="location.replace('/platform/meeting/manage')"
|
||||
icon="el-icon-back"
|
||||
style="font-size: 16px" type="text">返回
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="12" class="text-right">
|
||||
<h3 style="color: rgb(24, 103, 176);">{{h3Title}}</h3>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
<!--<template #header>
|
||||
<h3 style="color: #1867b0">发起会议</h3>
|
||||
</template>-->
|
||||
|
||||
<el-form :model="formData" :rules="formRules" label-width="120px" ref="addForm">
|
||||
<vi-title title="会议基础信息"></vi-title>
|
||||
|
||||
<el-row :gutter="20" type="flex">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会议名称" prop="meetingName">
|
||||
<el-input :disabled="hold" @input="meetingNameInput"
|
||||
placeholder="请填写会议名称" type="text"
|
||||
v-model.trim="formData.meetingName"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会议地点" prop="location">
|
||||
<el-input :disabled="hold" placeholder="请填写会议地点"
|
||||
type="text" v-model.trim="formData.location"></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 :disabled="hold" 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 HH:mm:ss"
|
||||
range-separator="至" start-placeholder="开始日期"
|
||||
style="width: 100%"
|
||||
:disabled="hold"
|
||||
type="datetimerange"
|
||||
v-model="formData.meetingTime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss">
|
||||
</el-date-picker>
|
||||
</el-form-item>-->
|
||||
<el-form-item label="会议时间" prop="meetTime">
|
||||
<el-date-picker :disabled="hold"
|
||||
format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="请选择会议时间"
|
||||
style="width: 100%"
|
||||
type="datetime"
|
||||
v-model="formData.meetTime"
|
||||
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="8">
|
||||
<el-form-item label="是否可以请假" prop="isCanLeave">
|
||||
<el-radio :disabled="hold" :label="true" border size="medium" v-model="formData.isCanLeave">
|
||||
允许
|
||||
</el-radio>
|
||||
<el-radio :disabled="hold" :label="false" border size="medium"
|
||||
v-model="formData.isCanLeave">不允许
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="是否多次签到">
|
||||
<el-checkbox v-model="formData.manySign"></el-checkbox>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" v-if="formData.isCanLeave">
|
||||
<el-form-item label="请假截止时间" prop="leaveDeadline">
|
||||
<el-date-picker :disabled="hold" format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="请选择日期" style="width: 100%"
|
||||
type="datetime"
|
||||
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">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="会议描述" prop="meetingDescription">
|
||||
<el-input :disabled="hold" :rows="4" maxlength="400" placeholder="请输入会议描述"
|
||||
type="textarea" v-model="formData.meetingDescription"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20" type="flex" v-show="formData.manySign">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="场次">
|
||||
<!--# include("/platform/meeting/manage/add_time_period.html"){} #-->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!--# include("/platform/meeting/manage/add_users.html"){} #-->
|
||||
|
||||
</el-form>
|
||||
|
||||
<el-row justify="end" style="margin-top: 20px" type="flex" v-if="!hold">
|
||||
<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],
|
||||
components: {
|
||||
'msg-notify': httpVueLoader('/components/msgNotify/msgNotify.vue'),
|
||||
},
|
||||
data() {
|
||||
const that = this
|
||||
return {
|
||||
h3Title: "发起会议",
|
||||
id: "",
|
||||
notify_id: "",
|
||||
hold: false,
|
||||
meetingTypeList: [],
|
||||
formData: {
|
||||
isCanLeave: false,
|
||||
meetingTimePeriods: [{timePeriodName: '', startTime: '', endTime: ''}],
|
||||
sendTypes: [],
|
||||
meetingTime: [],
|
||||
meetTime: '',
|
||||
},
|
||||
pickerOptions: {
|
||||
disabledDate(time) {
|
||||
return (
|
||||
moment(time.getTime()).format("YYYY-MM-DD HH:mm:ss") > that.formData.meetingTime[1] || moment(time.getTime()).format("YYYY-MM-DD HH:mm:ss") < that.formData.meetingTime[0]
|
||||
);
|
||||
}
|
||||
},
|
||||
formRules: {
|
||||
meetingName: [{required: true, message: '请填写会议名称', trigger: ['blur', 'change']}],
|
||||
location: [{required: true, message: '请填写会议地点', trigger: ['blur', 'change']}],
|
||||
typeId: [{required: true, message: '请选择会议类型', trigger: ['blur', 'change']}],
|
||||
meetingTime: [{required: true, message: '请选择会议时间', trigger: ['blur', 'change']}],
|
||||
meetTime: [{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']}],
|
||||
isCanLeave: [{required: true, message: '请选择', trigger: ['blur', 'change']}],
|
||||
},
|
||||
msgData: {
|
||||
type: "",
|
||||
sendTypes: []
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
meetingNameInput(val) {
|
||||
this.$set(this.msgData, "title", val)
|
||||
this.formData.meetingTimePeriods[0].timePeriodName = val
|
||||
},
|
||||
async doSubmit() {
|
||||
|
||||
const valid = await this.$refs["addForm"].validate()
|
||||
if (valid) {
|
||||
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] : ''
|
||||
|
||||
if (this.msgData.sendTypes.length > 0) {
|
||||
const confirm = await this.$confirm('下一步需要到消息管理系统中择机发送短信通知', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
showCancelButton: false,
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
const resp = await $.post("/platform/meeting/manage" + (this.formData.id ? "/doEdit" : "/doAdd"), {
|
||||
meetingInfo: JSON.stringify(submitFormData),
|
||||
msgNotify: JSON.stringify(this.msgData),
|
||||
users: JSON.stringify(this.msgData.users.length > 0 ? this.msgData.users.map(v => v.id) : this.msgData.users),
|
||||
})
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
sublime.jumpPagePjax('/platform/meeting/manage')
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
async findOne(id) {
|
||||
const {data} = await $.post("/platform/meeting/manage/findOne", {id})
|
||||
data.meetingTime = [data.startTime, data.endTime]
|
||||
data.meetTime = data.startTime
|
||||
this.formData = data
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.meetingTypeList = await meetUtil.getAllMeetingType()
|
||||
this.id = GetQueryString("id")
|
||||
|
||||
this.notify_id = GetQueryString("notifyId")
|
||||
if (this.id) {
|
||||
this.hold = GetQueryString("hold")
|
||||
this.findOne(this.id)
|
||||
this.h3Title = this.hold === "true" ? "查看会议" : "编辑会议"
|
||||
this.hold = this.hold !== 'false'
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'formData.meetingTime'(val) {
|
||||
if (val) {
|
||||
this.formData.meetingTimePeriods[0].startTime = val[0]
|
||||
this.formData.meetingTimePeriods[0].endTime = val[1]
|
||||
}
|
||||
},
|
||||
'formData.meetTime'(val) {
|
||||
if (val) {
|
||||
//结束时间往后加30分钟
|
||||
const endTime = moment(val).add(30, 'm').format('YYYY-MM-DD HH:mm:ss')
|
||||
this.formData.meetingTime = [val, endTime]
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,49 @@
|
||||
<!-- 会议时间段 -->
|
||||
|
||||
<el-table :data="formData.meetingTimePeriods" border style="width: 100%">
|
||||
<el-table-column label="名称" prop="timePeriodName">
|
||||
<template slot-scope="scope">
|
||||
<el-input :disabled="hold" maxlength="20" v-model="scope.row.timePeriodName"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="开始时间" prop="startTime" sortable>
|
||||
<template slot-scope="scope">
|
||||
<el-date-picker
|
||||
:disabled="hold"
|
||||
:picker-options="pickerOptions"
|
||||
placeholder="选择开始时间"
|
||||
type="datetime"
|
||||
v-model="scope.row.startTime"
|
||||
value-format="yyyy-MM-dd HH:mm">
|
||||
</el-date-picker>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="结束时间" prop="endTime">
|
||||
<template slot-scope="scope">
|
||||
<el-date-picker
|
||||
:disabled="hold"
|
||||
:picker-options="pickerOptions"
|
||||
placeholder="选择结束时间"
|
||||
type="datetime"
|
||||
v-model="scope.row.endTime"
|
||||
value-format="yyyy-MM-dd HH:mm">
|
||||
</el-date-picker>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="100px">
|
||||
<template scope="scope" slot="header">
|
||||
<el-button :disabled="hold"
|
||||
@click="formData.meetingTimePeriods.push({timePeriodName:null,startTime:null,endTime:null})"
|
||||
icon="el-icon-circle-plus-outline"
|
||||
size="small"
|
||||
type="primary"></el-button>
|
||||
</template>
|
||||
<template scope="scope">
|
||||
<el-button :disabled="hold"
|
||||
@click="formData.meetingTimePeriods.splice(scope.$index, 1)"
|
||||
icon="el-icon-delete"
|
||||
size="small"
|
||||
type="danger"></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -0,0 +1,3 @@
|
||||
<vi-title title="参与人员信息"></vi-title>
|
||||
|
||||
<msg-notify :hold="hold" :notify_id="notify_id" :title_disabled="true" v-model="msgData"></msg-notify>
|
||||
@@ -0,0 +1,128 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava>
|
||||
<el-card shadow="never">
|
||||
<div class="search">
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">年度:</div>
|
||||
<div class="search-item-option">
|
||||
<el-date-picker
|
||||
placeholder="选择年份"
|
||||
type="year"
|
||||
v-model="pageForm.year"
|
||||
value-format="yyyy">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">会议名称:</div>
|
||||
<div class="search-item-option">
|
||||
<el-input clearable
|
||||
placeholder="可输入会议名称、地点进行查询"
|
||||
v-model="pageForm.searchKeyword"></el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-query">
|
||||
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-card class="mt10" shadow="never">
|
||||
<table-tool :app="this" label="会议信息">
|
||||
<template #func>
|
||||
</template>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
|
||||
align="center" header-align="center">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index" width="80">
|
||||
<template scope="scope">
|
||||
<span>{{ scope.$index + (pageForm.pageNumber - 1) * pageForm.pageSize + 1 }} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
:width="column.width"
|
||||
align="center"
|
||||
header-align="center"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
>
|
||||
<template scope="{row}" v-if="column.prop=='isCanLeave'">
|
||||
<span class="text-muted" v-if="row.isCanLeave==null">未设置</span>
|
||||
<span class="text-success" v-if="row.isCanLeave==true">能</span>
|
||||
<span class="text-danger" v-if="row.isCanLeave==false">否</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" width="200px">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" type="primary">编辑</el-button>
|
||||
<el-button @click="doDelete(row.id)" size="mini" type="danger">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
</el-card>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--# include("/platform/meeting/includeJs/meetingUtil.js"){} #-->
|
||||
const meetUtil = new meetingUtil()
|
||||
window['vue'] = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
tableColumns: [
|
||||
{prop: 'meetingName', label: '会议名称', sortable: true},
|
||||
{prop: 'meetingTypeName', label: '会议类型', sortable: true},
|
||||
{prop: 'startTime', label: '开始时间', sortable: true},
|
||||
{prop: 'endTime', label: '结束时间', sortable: true},
|
||||
{prop: 'location', label: '会议地点', sortable: true},
|
||||
{prop: 'isCanLeave', label: '能否请假', sortable: true},
|
||||
],
|
||||
pageForm: {
|
||||
year: new Date().getFullYear().toString()
|
||||
},
|
||||
meetingTypeList: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async doDelete(id) {
|
||||
try {
|
||||
const confirm = await this.$confirm('您确定要删除吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (confirm === 'confirm') {
|
||||
const resp = await $.post(loc() + '/doDelete', {id: id})
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.meetingTypeList = await meetUtil.getAllMeetingType()
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
Reference in New Issue
Block a user