liuhj 1 week ago
parent
commit
f87d4e2b52
1 changed files with 130 additions and 10 deletions
  1. 130 10
      src/components/OP/GroupProgress.vue

+ 130 - 10
src/components/OP/GroupProgress.vue

@@ -1,5 +1,5 @@
 <template>
-    <div class="group-progress">
+    <div class="group-progress"  v-loading="progressloading">
         <div class="progress-hade">
             <el-form style="display: flex;justify-content: space-between;align-items: center;" :inline="true" :model="formInline" class="demo-form-inline">
                 <el-form-item>
@@ -33,7 +33,7 @@
                     <span style="font-size: 18px; font-weight: bold;">商邀报批流程</span>
                 </template>
                 <div class="process-diagram">
-                    <div slot="reference" @mouseenter="item.nodeName=='报批资料准备'?visible = true:''" @mouseleave="visible = false" :class="item.statusText=='已完成'?'process-diagram-lis':'process-diagram-li'" v-for="(item,index) in activities" :key="index">
+                    <div slot="reference" @click="confirmclick(item,'商邀')" @mouseenter="item.nodeName=='报批资料准备'?visible = true:''" @mouseleave="visible = false" :class="item.statusText=='已完成'?'process-diagram-lis':'process-diagram-li'" v-for="(item,index) in activities" :key="index">
                         <el-popover
                         v-if="item.nodeName=='报批资料准备'"
                         placement="top"
@@ -52,7 +52,12 @@
             </el-collapse-item>
             <el-collapse-item name="2">
                 <template #title>
-                    <span style="font-size: 18px; font-weight: bold;">签证流程</span>
+                    <div style="display: inline-block;width: 100%;">
+                        <div style="display: flex;justify-content: space-between;align-items: center;">
+                            <span style="font-size: 18px; font-weight: bold;">签证流程</span>
+                            <el-button @click.stop="Visaclick('签证')" style="margin-right: 20px;" size="mini" type="primary">签证流程保存</el-button>
+                        </div>
+                    </div>
                 </template>
                 <div class="progress-table">
                     <el-table :border="true" :header-cell-style="headerCellStyle" :data="tableData" style="width: 100%">
@@ -125,13 +130,13 @@
                             </template>
                         </el-table-column>
                         <el-table-column label="操作" width="100">
-                            <template>
-                                <el-button style="margin-top: 10px;" size="mini" type="danger">删除</el-button>
+                            <template slot-scope="scope">
+                                <el-button style="margin-top: 10px;" size="mini" @click.native.prevent="deleteRow(scope.$index, tableData,'签证')" type="danger">删除</el-button>
                             </template>
                         </el-table-column>
                     </el-table>
                     <div style="margin-top: 10px; text-align: center;">
-                        <el-button @click="addRow" size="mini" type="primary">添加一行</el-button>
+                        <el-button @click="addRow('签证')" size="mini" type="primary">添加一行</el-button>
                     </div>
                 </div>
             </el-collapse-item>
@@ -140,7 +145,7 @@
                     <span style="font-size: 18px; font-weight: bold;">机票流程</span>
                 </template>
                 <div class="process-diagram">
-                    <div :class="item.statusText=='已完成'?'process-diagram-twos':'process-diagram-two'" v-for="(item,index) in activitiesAir" :key="index">
+                    <div @click="confirmclick(item,'机票')" :class="item.statusText=='已完成'?'process-diagram-twos':'process-diagram-two'" v-for="(item,index) in activitiesAir" :key="index">
                         <div style="font-weight: 600;font-size: 15px;">{{item.nodeName}}</div>
                         <div>{{item.statusText}}</div>
                         <div>{{item.operator}}</div>
@@ -153,7 +158,7 @@
                     <span style="font-size: 18px; font-weight: bold;">酒店流程</span>
                 </template>
                 <div class="process-diagram">
-                    <div :class="item.statusText=='已完成'?'process-diagram-twos':'process-diagram-two'" v-for="(item,index) in activitiesHotel" :key="index">
+                    <div @click="confirmclick(item,'酒店')" :class="item.statusText=='已完成'?'process-diagram-twos':'process-diagram-two'" v-for="(item,index) in activitiesHotel" :key="index">
                         <div style="font-weight: 600;font-size: 15px;">{{item.nodeName}}</div>
                         <div>{{item.statusText}}</div>
                         <div>{{item.operator}}</div>
@@ -166,7 +171,7 @@
                     <span style="font-size: 18px; font-weight: bold;">地接流程</span>
                 </template>
                 <div class="process-diagram">
-                    <div :class="item.statusText=='已完成'?'process-diagram-sans':'process-diagram-san'" v-for="(item,index) in activitiesGuide" :key="index">
+                    <div @click="confirmclick(item,'OP')" :class="item.statusText=='已完成'?'process-diagram-sans':'process-diagram-san'" v-for="(item,index) in activitiesGuide" :key="index">
                         <div style="font-weight: 600;font-size: 15px;">{{item.nodeName}}</div>
                         <div>{{item.statusText}}</div>
                         <div>{{item.operator}}</div>
@@ -216,6 +221,9 @@ export default {
             },
             token:'',
             userId:'',
+            progressloading:false,
+            jobName:'',
+            visaclickid:'',
         }
     },
     methods: {
@@ -238,6 +246,8 @@ export default {
         },
         //获取团组id
         GetGroupNameList(){
+            this.progressloading=true;
+            this.AuditStatus=[];
             var url = "/api/Business/GetGroupNameList"
             var that = this
             this.$axios({
@@ -258,6 +268,7 @@ export default {
                     }
                     that.PostShareGroupInfo();
                 }else{
+                    that.progressloading=false;
                     that.$message.error(res.data.msg);
                 }
             })
@@ -288,6 +299,7 @@ export default {
                     that.GroupProcessDetails();
                 }else{
                     that.$message.error('获取数据源失败!');
+                    that.progressloading=false;
                 }
             })
         },
@@ -322,8 +334,10 @@ export default {
                         }
                         if (res.data.data[i].processName == '签证') {
                             that.tableData=res.data.data[i].nodes[0].visaSubNodes;
+                            that.visaclickid=res.data.data[i].nodes[0].id;
                         }
                     }
+                    that.progressloading=false;
                 } else {
                     that.activitiesCost=[];
                     that.activitiesGuide=[];
@@ -332,11 +346,19 @@ export default {
                     that.activities=[];
                     that.tableData=[];
                     that.$message.error(res.data.msg);
+                    that.progressloading=false;
                 }
             })
         },
         //签证添加一行
-        addRow() {
+        addRow(text) {
+            if (text!=this.jobName) {
+                this.$message({
+                    message: '该流程不在此账号的操作权限内!如有疑问联系该流程负责人!',
+                    type: 'warning'
+                });
+                return
+            }
             this.tableData.push({
                 countryName: '',
                 nodeName1: '收集资料',
@@ -360,10 +382,108 @@ export default {
                 returner: ''
             });
         },
+        //签证删除一行
+        deleteRow(index, rows,text) {
+            if (text!=this.jobName) {
+                this.$message({
+                    message: '该流程不在此账号的操作权限内!如有疑问联系该流程负责人!',
+                    type: 'warning'
+                });
+                return
+            }
+            this.$confirm('此操作将该数据移除并未保存,需要更新数据请点击本流程保存按钮, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                rows.splice(index, 1);
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: '操作已取消!'
+                });
+            });
+            
+        },
+        //点击确认
+        confirmclick(item,text){
+            if (text!=this.jobName) {
+                this.$message({
+                    message: '该流程不在此账号的操作权限内!如有疑问联系该流程负责人!',
+                    type: 'warning'
+                });
+                return
+            }
+            this.progressloading=true;
+            var url = "/api/Groups/GroupProcessUpdateNodeStatus"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer '
+                },
+                data:{
+                    nodeId:item.id,
+                    currUserId: that.userId
+                }
+            }).then(function (res) {
+                console.log(res)
+                if(res.data.code==200){
+                    that.$message({
+                        type: 'success',
+                        message: res.data.msg
+                    });
+                    that.GroupProcessDetails();
+                }else{
+                    that.$message.error(res.data.msg);
+                    that.progressloading=false;
+                }
+            })
+        },
+        //签证保存
+        Visaclick(text){
+            console.log(this.tableData);
+            
+            if (text!=this.jobName) {
+                this.$message({
+                    message: '该流程不在此账号的操作权限内!如有疑问联系该流程负责人!',
+                    type: 'warning'
+                });
+                return
+            }
+            this.progressloading=true;
+            var url = "/api/Groups/GroupProcessUpdateVisaNodeDetails"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer '
+                },
+                data:{
+                    nodeId:that.visaclickid,
+                    currUserId:that.userId,
+                    visaSubNodes:that.tableData,
+                }
+            }).then(function (res) {
+                if(res.data.code==200){
+                    that.$message({
+                        type: 'success',
+                        message: res.data.msg
+                    });
+                    that.GroupProcessDetails();
+                }else{
+                    that.$message.error(res.data.msg);
+                    that.progressloading=false;
+                }
+            })
+        }
     },
     mounted(){
         this.token = JSON.parse(localStorage.getItem('userinif')).token;
         this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
+        this.jobName = JSON.parse(localStorage.getItem('userinif')).userInfo.jobName;
         this.GetGroupNameList();
         // this.GroupProcessDetails();
     }