|
@@ -115,11 +115,11 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="status" label="确认状态" width="80">
|
|
|
<template slot-scope="scope">
|
|
|
- <div style="color: red" v-if="scope.row.status!==0 && scope.row.meetingConfirmStatus===0 && (scope.row.meetingType===1 || scope.row.meetingType===2)">
|
|
|
+ <div style="color: red" v-if="scope.row.status!==0 && scope.row.meetingConfirmStatus===0">
|
|
|
未确认
|
|
|
</div>
|
|
|
<div style="color: green"
|
|
|
- v-else-if="scope.row.meetingConfirmStatus===1 && (scope.row.meetingType===1 || scope.row.meetingType===2)">
|
|
|
+ v-else-if="scope.row.meetingConfirmStatus===1">
|
|
|
已确认
|
|
|
</div>
|
|
|
<div v-else>无需确认</div>
|
|
@@ -309,8 +309,8 @@
|
|
|
<div style="display: flex;justify-content: space-between;margin-bottom: 8px">
|
|
|
<div style="font-size: 24px">{{ pro.meetingName }}</div>
|
|
|
<div>
|
|
|
- <el-button @click="projectMeetingDetailVisble = false" size="small">返回</el-button>
|
|
|
- <el-button v-if="pro.status===1 && pro.recorderOpFlag==='true'" size="mini" type="primary" @click="endMeetingClick(pro)">结束会议
|
|
|
+ <el-button @click="backBtnClick" size="small">返回</el-button>
|
|
|
+ <el-button v-if="pro.status===1 && pro.recorderOpFlag==='true'" size="mini" type="primary" @click="endProMeetingClick(pro)">结束会议
|
|
|
</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -332,11 +332,10 @@
|
|
|
</el-descriptions-item>
|
|
|
<el-descriptions-item label="项目名称" :span="2">
|
|
|
<el-tag type="success"> {{ pro.projectName }}</el-tag>
|
|
|
-
|
|
|
</el-descriptions-item>
|
|
|
<el-descriptions-item label="内部参会人员">
|
|
|
<span v-if="pro.innerAttendeesNew!==''" v-for="(item,index) in pro.innerAttendeesNew">
|
|
|
- <el-badge is-dot type="success" v-if="pro.meetingConfirmStatus===1">
|
|
|
+ <el-badge is-dot type="success" v-if="item.confirmFlag==='1'">
|
|
|
{{ item.name }}
|
|
|
</el-badge>
|
|
|
<el-badge is-dot v-else type="danger">
|
|
@@ -357,8 +356,9 @@
|
|
|
<div v-html="pro.remarks"></div>
|
|
|
</el-descriptions-item>
|
|
|
<el-descriptions-item label="参会情况" :span="3">
|
|
|
- <el-input size="mini" v-model="pro.remark" type="textarea"
|
|
|
+ <el-input size="mini" v-model="pro.remark" type="textarea" v-if="pro.status!=2"
|
|
|
:autosize="{ minRows: 4, maxRows: 10}" @input="editMeetings(pro)"></el-input>
|
|
|
+ <div v-else>{{pro.remark}}</div>
|
|
|
</el-descriptions-item>
|
|
|
</el-descriptions>
|
|
|
|
|
@@ -367,20 +367,22 @@
|
|
|
<el-table-column label="会议内容" prop="content"></el-table-column>
|
|
|
<el-table-column label="会议问题" prop="question">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-input size="mini" v-model="scope.row.question" type="textarea"
|
|
|
+ <el-input size="mini" v-model="scope.row.question" type="textarea" v-if="pro.status!=2"
|
|
|
:autosize="{ minRows: 4, maxRows: 10}" @input="editMeetingContents(scope.row)"></el-input>
|
|
|
+ <div v-else>{{scope.row.question}}</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="会议方案" prop="optionss">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-input size="mini" v-model="scope.row.optionss" type="textarea"
|
|
|
+ <el-input size="mini" v-model="scope.row.optionss" type="textarea" v-if="pro.status!=2"
|
|
|
:autosize="{ minRows: 4, maxRows: 10}" @input="editMeetingContents(scope.row)"></el-input>
|
|
|
+ <div v-else>{{scope.row.optionss}}</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="事项优先级" prop="priority" width="180">
|
|
|
<template slot-scope="scope">
|
|
|
<el-select
|
|
|
- v-model="scope.row.priority"
|
|
|
+ v-model="scope.row.priority" v-if="pro.status!=2"
|
|
|
placeholder="事项优先级" @change="editMeetingContents(scope.row)">
|
|
|
<el-option
|
|
|
v-for="dict in dict.type.task_priority"
|
|
@@ -390,43 +392,47 @@
|
|
|
{{ dict.label }}
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
+ <div v-else>{{scope.row.priority}}</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="执行人" width="180">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-input size="mini" v-model="scope.row.executorName" :readonly="true"
|
|
|
+ <el-input size="mini" v-model="scope.row.executorName" :readonly="true" v-if="pro.status!=2"
|
|
|
@keyup.enter.native="openUsers1('executorName',scope.row)"
|
|
|
@input="editMeetingContents(scope.row)">
|
|
|
<el-button @click="openUsers1('executorName',scope.row)" icon="el-icon-search" slot="append"></el-button>
|
|
|
</el-input>
|
|
|
+ <div v-else>{{scope.row.executorName}}</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="开始日期" width="180" prop="beginTime">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-date-picker size="mini"
|
|
|
+ <el-date-picker size="mini" v-if="pro.status!=2"
|
|
|
v-model="scope.row.beginTime" format="yyyy-MM-dd"
|
|
|
type="date" style="width: 150px"
|
|
|
placeholder="选择开始日期" @change="editMeetingContents(scope.row)">
|
|
|
</el-date-picker>
|
|
|
+ <div v-else>{{scope.row.beginTime.slice(0,10)}}</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="结束日期" width="180" prop="endTime">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-date-picker size="mini"
|
|
|
+ <el-date-picker size="mini" v-if="pro.status!=2"
|
|
|
v-model="scope.row.endTime" format="yyyy-MM-dd"
|
|
|
type="date" style="width: 150px"
|
|
|
placeholder="选择结束日期" @change="editMeetingContents(scope.row)">
|
|
|
</el-date-picker>
|
|
|
+ <div v-else>{{scope.row.endTime.slice(0,10)}}</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
|
|
|
</el-table>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
- <el-button v-if="pro.status===2 && pro.meetingConfirmStatus===0" type="success" size="mini"
|
|
|
+ <el-button v-if="pro.status===2 && otherMeetingConfirmBtnFlag===true " type="success" size="mini"
|
|
|
@click="confirmMeeting(pro)">会议结果确认
|
|
|
</el-button>
|
|
|
<el-button size="mini" @click="closeProjectMeetingDailog" v-show="false">取消</el-button>
|
|
|
- <el-button size="mini" v-if="pro.meetingConfirmStatus===0" type="primary" class="title"
|
|
|
+ <el-button size="mini" v-if="pro.status!==2" type="primary" class="title"
|
|
|
@click="submitMeetingOptionsForm(pro,'editForm')">保存
|
|
|
</el-button>
|
|
|
</div>
|
|
@@ -437,8 +443,10 @@
|
|
|
<div style="display: flex;justify-content: space-between;margin-bottom: 8px">
|
|
|
<div style="font-size: 24px">{{ pro.meetingName }}</div>
|
|
|
<div>
|
|
|
- <el-button @click="otherMeetingDetailVisble = false" size="small">返回</el-button>
|
|
|
-
|
|
|
+ <el-button @click="backBtnClick" size="small">返回</el-button>
|
|
|
+ <el-button v-if="pro.status===2 && otherMeetingConfirmBtnFlag===true" type="success" size="mini"
|
|
|
+ @click="confirmOtherMeeting(pro)">会议结果确认
|
|
|
+ </el-button>
|
|
|
<el-button v-if="pro.status===1 && pro.recorderOpFlag==='true' " size="mini" type="primary" @click="endMeetingClick(pro)">结束会议
|
|
|
</el-button>
|
|
|
|
|
@@ -462,7 +470,12 @@
|
|
|
</el-descriptions-item>
|
|
|
<el-descriptions-item label="内部参会人员">
|
|
|
<span v-if="pro.innerAttendeesNew!==''" v-for="(item,index) in pro.innerAttendeesNew">
|
|
|
+ <el-badge is-dot type="success" v-if="item.confirmFlag==='1'">
|
|
|
+ {{ item.name }}
|
|
|
+ </el-badge>
|
|
|
+ <el-badge is-dot v-else type="danger">
|
|
|
{{ item.name }}
|
|
|
+ </el-badge>
|
|
|
</span>
|
|
|
</el-descriptions-item>
|
|
|
<el-descriptions-item label="外部参会人员" v-if="pro.outAttendees!=''">
|
|
@@ -478,7 +491,7 @@
|
|
|
<div v-html="pro.remarks"></div>
|
|
|
</el-descriptions-item>
|
|
|
<el-descriptions-item label="参会情况" :span="3">
|
|
|
- <el-input size="mini" v-model="pro.remark" type="textarea"
|
|
|
+ <el-input size="mini" v-model="pro.remark" type="textarea" :readonly="otherMeetingContentReadOnly"
|
|
|
:autosize="{ minRows: 4, maxRows: 10}" @input="editMeetings(pro)"></el-input>
|
|
|
</el-descriptions-item>
|
|
|
</el-descriptions>
|
|
@@ -488,7 +501,7 @@
|
|
|
<el-table-column label="会议内容" prop="content"></el-table-column>
|
|
|
<el-table-column label="会议方案" prop="optionss">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-input size="mini" v-model="scope.row.optionss" type="textarea"
|
|
|
+ <el-input size="mini" v-model="scope.row.optionss" type="textarea" :readonly="otherMeetingContentReadOnly"
|
|
|
:autosize="{ minRows: 4, maxRows: 10}" @input="editMeetingContents(scope.row)"></el-input>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -517,7 +530,12 @@ import {
|
|
|
startMeetingById,
|
|
|
meetingAuthById,
|
|
|
meetingDeleteAuth,
|
|
|
- endMeeting, editMeetingContent, getMeetingContentsByMeetingId, exportOutMeetingNotice, editMeeting
|
|
|
+ endMeeting,
|
|
|
+ editMeetingContent,
|
|
|
+ getMeetingContentsByMeetingId,
|
|
|
+ exportOutMeetingNotice,
|
|
|
+ editMeeting,
|
|
|
+ confirmOthersMeeting, getMeetingConfirmBtnFlag
|
|
|
} from '@/api/meeting/meeting'
|
|
|
import {getDeptUserTree} from '@/api/system/user'
|
|
|
import {getProjectList} from "@/api/task/project";
|
|
@@ -620,12 +638,14 @@ export default {
|
|
|
beginTime: null,
|
|
|
endTime: null,
|
|
|
priority:'4',
|
|
|
- times: []
|
|
|
+ times: [],
|
|
|
}],
|
|
|
row: null
|
|
|
},
|
|
|
meetingContents:[],
|
|
|
- meetingTitle:''
|
|
|
+ meetingTitle:'',
|
|
|
+ otherMeetingContentReadOnly:false,
|
|
|
+ otherMeetingConfirmBtnFlag:true
|
|
|
}
|
|
|
},
|
|
|
// 注册组件
|
|
@@ -810,11 +830,6 @@ export default {
|
|
|
this.$message.warning("会议暂未结束,请会议结束后在确认!");
|
|
|
return
|
|
|
}
|
|
|
- let meetingConfirmStatus = row.meetingConfirmStatus
|
|
|
- if (meetingConfirmStatus === 1) {
|
|
|
- this.$message.warning("会议已经确认,请勿再次操作!")
|
|
|
- return
|
|
|
- }
|
|
|
let id = row.id;
|
|
|
//点击会议确认时候判断信息是否完整
|
|
|
let data = this.pro.meetingContents;
|
|
@@ -830,6 +845,14 @@ export default {
|
|
|
}
|
|
|
saveMeetingOptionss(data).then(res => {
|
|
|
confirmMeetings(id).then(res => {
|
|
|
+ this.getMeetingConfirmBtnFlags(res.data)
|
|
|
+ let innerAttendess = JSON.parse(res.data.innerAttendees)
|
|
|
+ let temp = [];
|
|
|
+ for (let i = 0; i < innerAttendess.length; i++) {
|
|
|
+ temp.push(innerAttendess[i])
|
|
|
+ }
|
|
|
+ this.pro.innerAttendeesNew=temp
|
|
|
+
|
|
|
this.$message({
|
|
|
message: '操作成功!',
|
|
|
type: 'success'
|
|
@@ -844,12 +867,6 @@ export default {
|
|
|
meetingDetail(row) {
|
|
|
let meetingType = row.meetingType
|
|
|
if (meetingType !== 1) {
|
|
|
- if (row.meetingType == 2) {
|
|
|
- //this.projectMeetingDetailVisble = true
|
|
|
- } else {
|
|
|
- this.otherMeetingDetailVisble = true
|
|
|
- }
|
|
|
-
|
|
|
this.pro.meetingName = row.meetingName
|
|
|
this.pro.outAttendees = row.outAttendees
|
|
|
this.pro.innerAttendees = row.innerAttendees
|
|
@@ -903,7 +920,16 @@ export default {
|
|
|
this.pro.meetingContents = data
|
|
|
this.pro.projectName=res.data.projectName
|
|
|
if (row.meetingType === 2) {
|
|
|
+ this.otherMeetingConfirmBtnFlag=res.data.otherMeetingConfirmBtnFlag
|
|
|
this.projectMeetingDetailVisble = true
|
|
|
+ }else{
|
|
|
+ if(row.status===2){
|
|
|
+ this.otherMeetingContentReadOnly=true
|
|
|
+ }else{
|
|
|
+ this.otherMeetingContentReadOnly=false
|
|
|
+ }
|
|
|
+ this.otherMeetingConfirmBtnFlag=res.data.otherMeetingConfirmBtnFlag
|
|
|
+ this.otherMeetingDetailVisble = true
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -931,8 +957,25 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
+ endProMeetingClick(row){
|
|
|
+ //点击会议确认时候判断信息是否完整
|
|
|
+ let data = this.pro.meetingContents;
|
|
|
+ // alert(JSON.stringify(data))
|
|
|
+ for (let i = 0; i < data.length; i++) {
|
|
|
+ let t = data[i];
|
|
|
+ if (t.question === '' || t.optionss === '' || t.executorName === '' || t.beginTime === null || t.endTime === null) {
|
|
|
+ this.$message({
|
|
|
+ message: '请将信息填写完整!',
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.endMeetingClick(row);
|
|
|
+ },
|
|
|
endMeetingClick(row) {
|
|
|
let id = row.id;
|
|
|
+
|
|
|
meetingAuthById(id).then(res => {
|
|
|
if (res.success === false) {
|
|
|
this.$message.error(res.data)
|
|
@@ -1231,6 +1274,35 @@ export default {
|
|
|
editMeeting(newData).then(res=>{
|
|
|
//this.$message.success("操作成功")
|
|
|
})
|
|
|
+ },
|
|
|
+ confirmOtherMeeting(m){
|
|
|
+ let data={
|
|
|
+ id:m.id
|
|
|
+ }
|
|
|
+ confirmOthersMeeting(data).then(res=>{
|
|
|
+ this.getMeetingConfirmBtnFlags(data);
|
|
|
+ let innerAttendess = JSON.parse(res.data.innerAttendees)
|
|
|
+ let temp = [];
|
|
|
+ for (let i = 0; i < innerAttendess.length; i++) {
|
|
|
+ temp.push(innerAttendess[i])
|
|
|
+ }
|
|
|
+ this.pro.innerAttendeesNew=temp
|
|
|
+ this.$message.success("操作成功")
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getMeetingConfirmBtnFlags(m){
|
|
|
+ let data={
|
|
|
+ id:m.id
|
|
|
+ }
|
|
|
+ getMeetingConfirmBtnFlag(data).then(res=>{
|
|
|
+ let d= res.data;
|
|
|
+ this.otherMeetingConfirmBtnFlag=d.otherMeetingConfirmBtnFlag;
|
|
|
+ })
|
|
|
+ },
|
|
|
+ backBtnClick(){
|
|
|
+ this.otherMeetingDetailVisble = false
|
|
|
+ this.projectMeetingDetailVisble=false
|
|
|
+ this.getData(this.formInline);
|
|
|
}
|
|
|
}
|
|
|
|