Browse Source

将项目会议统一确认逻辑修改为单人确认会议

humingbo 1 year ago
parent
commit
792ea00310
1 changed files with 105 additions and 33 deletions
  1. 105 33
      src/views/meeting/meeting.vue

+ 105 - 33
src/views/meeting/meeting.vue

@@ -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'">
           &nbsp;&nbsp;&nbsp; {{ 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'">
+          &nbsp;&nbsp;&nbsp; {{ item.name }}
+            </el-badge>
+             <el-badge is-dot v-else type="danger">
             &nbsp;&nbsp;&nbsp; {{ 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);
     }
   }