|
@@ -56,7 +56,7 @@
|
|
|
<template scope="scope">
|
|
<template scope="scope">
|
|
|
<!--会议状态,0待开始,1进行中,2已结束-->
|
|
<!--会议状态,0待开始,1进行中,2已结束-->
|
|
|
<div v-if="scope.row.status===0" style="color: green">待开始</div>
|
|
<div v-if="scope.row.status===0" style="color: green">待开始</div>
|
|
|
- <div v-else-if="scope.row.status===1">进行中</div>
|
|
|
|
|
|
|
+ <div v-else-if="scope.row.status===1" style="color: #3A71A8">进行中</div>
|
|
|
<div v-else>已结束</div>
|
|
<div v-else>已结束</div>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
@@ -80,8 +80,11 @@
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
<el-table-column label="操作" prop="op" width="150">
|
|
<el-table-column label="操作" prop="op" width="150">
|
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
|
- <el-button size="mini" type="primary" @click="handleEdit(scope.row)">编辑</el-button>
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <el-button v-if="scope.row.status===0" size="mini" type="primary" @click="handleEdit(scope.row)">编辑</el-button>
|
|
|
<el-button v-if="scope.row.status===0" size="mini" type="danger" @click="deleteMeeting( scope.row)">删除</el-button>
|
|
<el-button v-if="scope.row.status===0" size="mini" type="danger" @click="deleteMeeting( scope.row)">删除</el-button>
|
|
|
|
|
+ <el-button v-if="scope.row.status===2" type="primary" size="mini" @click="confirmMeeting(scope.row)">结果确认</el-button>
|
|
|
|
|
+ <el-button v-if="scope.row.status===1" type="primary" size="mini" @click="meetingDetail(scope.row)">会议详情</el-button>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
</el-table>
|
|
</el-table>
|
|
@@ -192,6 +195,76 @@
|
|
|
</div>
|
|
</div>
|
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
|
|
|
|
|
|
+ <el-dialog :visible.sync="projectMeetingDetailVisble" width="95%" @click="closeProjectMeetingDailog" >
|
|
|
|
|
+ <el-descriptions title="会议记录详情" border :column="2">
|
|
|
|
|
+ <el-descriptions-item label="会议主题">
|
|
|
|
|
+ {{pro.meetingName}}
|
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
|
+ <el-descriptions-item label="会议类别">
|
|
|
|
|
+ {{pro.external}}
|
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
|
+ <el-descriptions-item label="会议类型">
|
|
|
|
|
+ {{pro.meetingType}}
|
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
|
+ <el-descriptions-item label="会议地点">
|
|
|
|
|
+ {{pro.meetingPlace}}
|
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
|
+ <el-descriptions-item label="会议时间">
|
|
|
|
|
+ {{pro.times}}
|
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
|
+ <el-descriptions-item label="外部参会人员" v-if="pro.outAttendees!=''">
|
|
|
|
|
+ {{pro.outAttendees}}
|
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
|
+ <el-descriptions-item label="记录人员" :span="2">
|
|
|
|
|
+ {{pro.recorder}}
|
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
|
+ <el-descriptions-item label="内部参会人员">
|
|
|
|
|
+ {{pro.innerAttendees}}
|
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
|
+
|
|
|
|
|
+ </el-descriptions>
|
|
|
|
|
+
|
|
|
|
|
+ <el-table style="width: 100%;margin: 0" border stripe :data="pro.meetingContents">
|
|
|
|
|
+ <el-table-column label="序号" width="60" type="index"></el-table-column>
|
|
|
|
|
+ <el-table-column label="会议内容" prop="content"></el-table-column>
|
|
|
|
|
+ <el-table-column label="会议问题" prop="question">
|
|
|
|
|
+ <template scope="scope">
|
|
|
|
|
+ <el-input size="mini" v-model="scope.row.question"></el-input>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="会议方案" prop="optionss">
|
|
|
|
|
+ <template scope="scope">
|
|
|
|
|
+ <el-input size="mini" v-model="scope.row.optionss"></el-input>
|
|
|
|
|
+ </template>
|
|
|
|
|
+
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="执行人" width="180">
|
|
|
|
|
+ <template scope="scope">
|
|
|
|
|
+ <el-input size="mini" v-model="scope.row.executorName" readonly @keyup.enter.native="openUsers1('executorName',scope.row)">
|
|
|
|
|
+ <el-button @click="openUsers1('executorName',scope.row)" icon="el-icon-search" slot="append"></el-button>
|
|
|
|
|
+ </el-input>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="周期时间" width="420">
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
|
+ <el-date-picker size="mini"
|
|
|
|
|
+ v-model="scope.row.times"
|
|
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
|
|
+ format="yyyy-MM-dd"
|
|
|
|
|
+ type="datetimerange"
|
|
|
|
|
+ range-separator="至"
|
|
|
|
|
+ start-placeholder="开始日期"
|
|
|
|
|
+ end-placeholder="结束日期">
|
|
|
|
|
+ </el-date-picker>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table>
|
|
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
|
|
+ <el-button size="mini" @click="closeProjectMeetingDailog">取消</el-button>
|
|
|
|
|
+ <el-button size="mini" type="primary" class="title" @click="submitMeetingOptionsForm('editForm')">确定</el-button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-dialog>
|
|
|
|
|
+
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
@@ -202,13 +275,14 @@ import {
|
|
|
getMeetingsByPage,
|
|
getMeetingsByPage,
|
|
|
deleteMeeting,
|
|
deleteMeeting,
|
|
|
getMeetingDetailsById,
|
|
getMeetingDetailsById,
|
|
|
- deleteMeetingContentById
|
|
|
|
|
|
|
+ deleteMeetingContentById, saveMeetingOptionss, confirmMeetings
|
|
|
} from '@/api/meeting/meeting'
|
|
} from '@/api/meeting/meeting'
|
|
|
import { getDeptUserTree } from '@/api/system/user'
|
|
import { getDeptUserTree } from '@/api/system/user'
|
|
|
export default {
|
|
export default {
|
|
|
name: 'Meeting',
|
|
name: 'Meeting',
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
|
|
+ projectMeetingDetailVisble:false,
|
|
|
tableData: [],
|
|
tableData: [],
|
|
|
pageparm: {
|
|
pageparm: {
|
|
|
current: 1,
|
|
current: 1,
|
|
@@ -247,7 +321,32 @@ export default {
|
|
|
usersVisble:false,
|
|
usersVisble:false,
|
|
|
userList:[],
|
|
userList:[],
|
|
|
users1Visble:false,
|
|
users1Visble:false,
|
|
|
- users1Flag:''
|
|
|
|
|
|
|
+ users1Flag:'',
|
|
|
|
|
+ pro:{
|
|
|
|
|
+ id:'',
|
|
|
|
|
+ meetingName:'',
|
|
|
|
|
+ meetingType:'',
|
|
|
|
|
+ external:null,
|
|
|
|
|
+ meetingPlace:'',
|
|
|
|
|
+ times:'',
|
|
|
|
|
+ outAttendees:'',
|
|
|
|
|
+ innerAttendees:'',
|
|
|
|
|
+ emcee:'',
|
|
|
|
|
+ recorder:'',
|
|
|
|
|
+ meetingContents:[{
|
|
|
|
|
+ id:null,
|
|
|
|
|
+ meetingId:null,
|
|
|
|
|
+ content:'',
|
|
|
|
|
+ question:'',
|
|
|
|
|
+ optionss:'',
|
|
|
|
|
+ executorName:'',
|
|
|
|
|
+ executorId:null,
|
|
|
|
|
+ beginTime:null,
|
|
|
|
|
+ endTime:null,
|
|
|
|
|
+ times:[]
|
|
|
|
|
+ }],
|
|
|
|
|
+ row:null,
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
// 注册组件
|
|
// 注册组件
|
|
@@ -337,6 +436,61 @@ export default {
|
|
|
this.getData(this.formInline);
|
|
this.getData(this.formInline);
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
|
|
|
+ confirmMeeting(row){
|
|
|
|
|
+ let id=row.id;
|
|
|
|
|
+ confirmMeetings(id).then(res=>{
|
|
|
|
|
+ this.$message({
|
|
|
|
|
+ message: '操作成功!',
|
|
|
|
|
+ type: 'success'
|
|
|
|
|
+ });
|
|
|
|
|
+ this.getData(this.formInline);
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ },
|
|
|
|
|
+ meetingDetail(row){
|
|
|
|
|
+ let meetingType=row.meetingType
|
|
|
|
|
+ if(meetingType===2){
|
|
|
|
|
+ this.projectMeetingDetailVisble=true
|
|
|
|
|
+ this.pro.meetingName=row.meetingName
|
|
|
|
|
+ this.pro.outAttendees=row.outAttendees
|
|
|
|
|
+ this.pro.innerAttendees=row.innerAttendees
|
|
|
|
|
+ this.pro.recorder=row.recorder
|
|
|
|
|
+ this.pro.times=row.beginTime+'至'+row.endTime
|
|
|
|
|
+ this.pro.meetingPlace=row.meetingPlace
|
|
|
|
|
+ let meetingType=row.meetingType
|
|
|
|
|
+ //1-周例会,2-项目会议,3-实施会议,4-其他会议
|
|
|
|
|
+ let meetingTypeNames='';
|
|
|
|
|
+ if(meetingType===1){
|
|
|
|
|
+ meetingTypeNames='周例会'
|
|
|
|
|
+ }else if(meetingType===2){
|
|
|
|
|
+ meetingTypeNames='项目会议'
|
|
|
|
|
+ }else if(meetingType===3){
|
|
|
|
|
+ meetingTypeNames='实施会议'
|
|
|
|
|
+ }else{
|
|
|
|
|
+ meetingTypeNames='其他会议'
|
|
|
|
|
+ }
|
|
|
|
|
+ this.pro.meetingType=meetingTypeNames
|
|
|
|
|
+ let external=row.external
|
|
|
|
|
+ if(external===0){
|
|
|
|
|
+ this.pro.external='内部会议'
|
|
|
|
|
+ }else{
|
|
|
|
|
+ this.pro.external='外部会议'
|
|
|
|
|
+ }
|
|
|
|
|
+ let innerAttendees=JSON.parse(row.innerAttendees);
|
|
|
|
|
+ let innerPeople='';
|
|
|
|
|
+ for(let i=0;i<innerAttendees.length;i++){
|
|
|
|
|
+ innerPeople+=innerAttendees[i].name+'、'
|
|
|
|
|
+ }
|
|
|
|
|
+ innerPeople=innerPeople.substring(0,innerPeople.length-1);
|
|
|
|
|
+ this.pro.innerAttendees=innerPeople
|
|
|
|
|
+ let meetingId=row.id
|
|
|
|
|
+ getMeetingDetailsById(meetingId).then(res => {
|
|
|
|
|
+ let data=res.data.meetingContents
|
|
|
|
|
+ this.pro.meetingContents=data
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
openUsers(){
|
|
openUsers(){
|
|
|
this.usersVisble=true
|
|
this.usersVisble=true
|
|
|
},
|
|
},
|
|
@@ -382,9 +536,11 @@ export default {
|
|
|
closeUser1Dialog(){
|
|
closeUser1Dialog(){
|
|
|
this.users1Visble=false
|
|
this.users1Visble=false
|
|
|
},
|
|
},
|
|
|
- openUsers1(data){
|
|
|
|
|
|
|
+ openUsers1(data,row){
|
|
|
this.users1Visble=true
|
|
this.users1Visble=true
|
|
|
this.users1Flag=data
|
|
this.users1Flag=data
|
|
|
|
|
+ this.pro.row=row
|
|
|
|
|
+
|
|
|
},
|
|
},
|
|
|
submitUser1Form(){
|
|
submitUser1Form(){
|
|
|
let node=this.$refs.dept1.getCurrentNode();
|
|
let node=this.$refs.dept1.getCurrentNode();
|
|
@@ -405,7 +561,15 @@ export default {
|
|
|
let user1Flag=this.users1Flag;
|
|
let user1Flag=this.users1Flag;
|
|
|
if(user1Flag==='emcee'){
|
|
if(user1Flag==='emcee'){
|
|
|
this.editForm.emcee=node.name
|
|
this.editForm.emcee=node.name
|
|
|
- }else{
|
|
|
|
|
|
|
+ }else if(user1Flag==='executorName'){
|
|
|
|
|
+ let row=this.pro.row
|
|
|
|
|
+ row.executorName=node.name
|
|
|
|
|
+ row.executorId=node.id
|
|
|
|
|
+ this.pro.meetingContents.executorName=node.name
|
|
|
|
|
+ this.pro.meetingContents.executorId=node.id
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ else{
|
|
|
this.editForm.recorder=node.name
|
|
this.editForm.recorder=node.name
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -417,7 +581,7 @@ export default {
|
|
|
this.editForm=data
|
|
this.editForm=data
|
|
|
let users=JSON.parse(data.innerAttendees)
|
|
let users=JSON.parse(data.innerAttendees)
|
|
|
this.editForm.innerAttendees=''
|
|
this.editForm.innerAttendees=''
|
|
|
- for(var i=0;i<users.length;i++){
|
|
|
|
|
|
|
+ for(let i=0;i<users.length;i++){
|
|
|
this.editForm.innerAttendees+=users[i].name+','
|
|
this.editForm.innerAttendees+=users[i].name+','
|
|
|
}
|
|
}
|
|
|
this.editForm.innerAttendees= this.editForm.innerAttendees.substring(0,this.editForm.innerAttendees.length-1)
|
|
this.editForm.innerAttendees= this.editForm.innerAttendees.substring(0,this.editForm.innerAttendees.length-1)
|
|
@@ -437,7 +601,19 @@ export default {
|
|
|
let search=this.formInline
|
|
let search=this.formInline
|
|
|
search.meetingEternal=val;
|
|
search.meetingEternal=val;
|
|
|
this.getData(search)
|
|
this.getData(search)
|
|
|
-
|
|
|
|
|
|
|
+ },
|
|
|
|
|
+ closeProjectMeetingDailog(){
|
|
|
|
|
+ this.projectMeetingDetailVisble=false;
|
|
|
|
|
+ },
|
|
|
|
|
+ submitMeetingOptionsForm(){
|
|
|
|
|
+ let data=this.pro.meetingContents;
|
|
|
|
|
+ saveMeetingOptionss(data).then(res =>{
|
|
|
|
|
+ this.$message({
|
|
|
|
|
+ message: '操作成功!',
|
|
|
|
|
+ type: 'info'
|
|
|
|
|
+ });
|
|
|
|
|
+ this.closeProjectMeetingDailog();
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|