From 95ac4377bfb735cfdc79eb16d07dd0eb8f673d33 Mon Sep 17 00:00:00 2001
From: hcong <1050828145@qq.com>
Date: 星期四, 21 十一月 2024 11:54:06 +0800
Subject: [PATCH] 1. 审核撤回的按钮显示逻辑修改 2. 通过改为审核通过 3. 审核驳回隐藏

---
 src/views/fysp/check/components/CompProblemCard.vue |  301 ++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 255 insertions(+), 46 deletions(-)

diff --git a/src/views/fysp/check/components/CompProblemCard.vue b/src/views/fysp/check/components/CompProblemCard.vue
index 7423ba5..8172030 100644
--- a/src/views/fysp/check/components/CompProblemCard.vue
+++ b/src/views/fysp/check/components/CompProblemCard.vue
@@ -1,6 +1,11 @@
 <template>
   <el-card class="layout" shadow="hover">
-    <el-steps :active="proStatus.index" finish-status="success" style="" align-center>
+    <el-steps
+      :active="proStatus.index"
+      finish-status="success"
+      style=""
+      align-center
+    >
       <el-step v-for="(s, i) in getSteps" :key="i" :title="s" />
     </el-steps>
 
@@ -30,12 +35,20 @@
     </el-descriptions>
 
     <el-scrollbar>
-      <el-descriptions title=" " :column="2" direction="vertical" size="small" border>
+      <el-descriptions
+        title=" "
+        :column="2"
+        direction="vertical"
+        size="small"
+        border
+      >
         <template v-for="(pic, t) in pics" :key="t">
           <template v-if="pic.path.length > 0">
             <el-descriptions-item
               :label="pic.title"
-              :label-class-name="t == 0 ? 'descriptions-label-1' : 'descriptions-label-2'"
+              :label-class-name="
+                t == 0 ? 'descriptions-label-1' : 'descriptions-label-2'
+              "
             >
               <el-space>
                 <el-image
@@ -59,45 +72,143 @@
     <el-row v-if="true" style="margin-top: 16px">
       <el-col :span="12">
         <el-row justify="start" class="btn-group">
-          <el-button type="success" size="small" @click="updatePro" plain>淇敼闂</el-button>
-          <el-button
-            type="primary"
-            size="small"
-            @click="updateChange"
-            plain
-            :disabled="!proStatus.changeable"
-            >淇敼鏁存敼</el-button
+          <el-button type="success" size="small" @click="updatePro" plain
+            >闂鏇存</el-button
+          >
+          <el-button type="primary" size="small" @click="updateChange" plain
+            >鏁存敼妫�楠�</el-button
+          >
+          <el-button type="info" size="small" @click="currProRecent" plain
+            >闂澶嶇幇</el-button
           >
         </el-row>
       </el-col>
       <el-col :span="12">
         <el-row justify="end" class="btn-group">
-          <el-button type="danger" size="small" @click="deletePro" :disabled="!proStatus.deletable"
+          <el-button
+            type="danger"
+            size="small"
+            @click="deletePro"
+            :disabled="!proStatus.deletable"
             >鍒犻櫎</el-button
           >
-          <el-button type="warning" size="small" @click="rejectPro" :disabled="!proStatus.checkable"
-            >椹冲洖</el-button
+          <!-- 瀹℃牳椹冲洖鎿嶄綔 -->
+          <!-- <el-button
+            v-if="
+              this.problem.extension3 == 'fail' ||
+              this.problem.extension3 == 'change_fail'
+            "
+            type="danger"
+            size="small"
+            @click="revokePro"
+            :disabled="proStatus.checkable"
+            >鎾ら攢椹冲洖</el-button
           >
-          <el-button type="success" size="small" @click="passPro" :disabled="!proStatus.checkable"
-            >閫氳繃</el-button
+          <el-button
+            v-else
+            type="warning"
+            size="small"
+            @click="rejectPro"
+            :disabled="!proStatus.checkable"
+            >瀹℃牳椹冲洖</el-button
+          > -->
+          <el-button
+            v-if="
+              this.problem.extension3 == 'pass' ||
+              this.problem.extension3 == 'change_pass'
+            "
+            type="danger"
+            size="small"
+            @click="revokePro"
+            :disabled="proStatus.checkable"
+            >鎾ら攢閫氳繃</el-button
+          >
+          <el-button
+            v-else
+            type="success"
+            size="small"
+            @click="passPro"
+            :disabled="!proStatus.checkable"
+            >瀹℃牳閫氳繃</el-button
           >
         </el-row>
       </el-col>
     </el-row>
   </el-card>
+  <CompProblemAddOrUpd
+    title="闂鏇存"
+    v-if="proAddOrUpdDialogVisible"
+    v-model:visible="proAddOrUpdDialogVisible"
+    :problem="deepCopyPro"
+    :subtask="subtask"
+    :topTask="topTask"
+    ref="compProblemAddOrUpdRef"
+    @cancel="onProCanceled"
+    @submit="onProSubmited"
+  />
+  <!-- 鏁存敼 -->
+  <ComChangeEdit
+    :title="changeType == 1 ? '鏁存敼妫�楠�' : '鏁存敼鎻愪氦'"
+    v-if="changeDialogVisible"
+    v-model:visible="changeDialogVisible"
+    :changeType="changeType"
+    :problemId="problem.guid"
+    :subtask="subtask"
+    :month="month"
+    :oldChangeFileList="problem.mediafileList"
+    @cancel="onChangeCanceled"
+    @submit="onChangeSubmited"
+  />
+  <!-- 闂澶嶇幇 -->
+  <CompProRecent
+    title="闂澶嶇幇"
+    v-if="proRecentDialogVisible"
+    v-model:visible="proRecentDialogVisible"
+    :subtask="subtask"
+    :topTask="topTask"
+    :problem="problem"
+  />
 </template>
 
 <script>
-import ProCheckProxy from '../ProCheckProxy'
-import problemApi from '@/api/fysp/problemApi'
-import { useMessageBoxTip } from '@/composables/messageBox'
-
+import ProCheckProxy from '../ProCheckProxy';
+import problemApi from '@/api/fysp/problemApi';
+import { useMessageBoxTip } from '@/composables/messageBox';
+import CompProblemAddOrUpd from './CompProblemAddOrUpd.vue';
+import ComChangeEdit from './ComChangeEdit.vue';
+import CompProRecent from './CompProRecent.vue';
+import { useCloned } from '@vueuse/core';
 export default {
+  emits: ['submmit', 'cancel'],
+  components: {
+    CompProblemAddOrUpd,
+    ComChangeEdit,
+    CompProRecent
+  },
   props: {
+    // 鍙閫夐」
+    readonly: {
+      type: Boolean,
+      default: () => {
+        return false;
+      }
+    },
+    topTask: {
+      type: Object,
+      default: () => {}
+    },
+    subtask: {
+      type: Object,
+      default: () => {}
+    },
+    insGuid: {
+      type: String,
+      default: () => ''
+    },
     problem: {
       type: Object,
       default: () => {
-        return {}
+        return {};
       }
     },
     index: {
@@ -105,9 +216,19 @@
       default: 1
     }
   },
-  emits:['submit'],
   data() {
     return {
+      changeDialogVisible: false,
+      changeType: -1,
+      addChangeDialogVisible: false,
+      // 杩戞湡鎯呭喌
+      proRecentDialogVisible: false,
+      month: -1,
+      deepCopyPro: {},
+      deepCopySubtask: {},
+      deepCopyTopTask: {},
+      proAddOrUpdDialogVisible: false,
+      changeEditDialogVisible: false,
       // 瀹℃牳姝ラ
       steps: [
         {
@@ -123,12 +244,13 @@
           aft: '鏁存敼宸插鏍�'
         }
       ]
-    }
+    };
   },
+  mounted() {},
   computed: {
     // 闂鍚嶇О
     title() {
-      return this.problem.problemname
+      return this.problem.problemname;
     },
     // 闂鎻忚堪
     descriptions() {
@@ -141,11 +263,11 @@
           name: '鎻愪氦鏃堕棿',
           value: this.problem.time.replace('T', ' ').split('.')[0]
         }
-      ]
+      ];
     },
     // 闂鍥剧墖
     pics() {
-      return ProCheckProxy.proPics(this.problem)
+      return ProCheckProxy.proPics(this.problem);
     },
     /**
      * 鑾峰彇褰撳墠闂瀹℃牳姝ラ
@@ -153,46 +275,133 @@
     getSteps() {
       return this.steps.map((v, i) => {
         if (i >= this.proStatus.index) {
-          return v.bef
+          return v.bef;
         } else {
-          return v.aft
+          return v.aft;
         }
-      })
+      });
     },
     // 闂鐘舵��
     proStatus() {
-      return ProCheckProxy.proStatusMap(this.problem.extension3)
+      return ProCheckProxy.proStatusMap(this.problem.extension3);
     }
   },
   methods: {
-    deletePro() {},
+    onProCanceled() {
+      this.proAddOrUpdDialogVisible = false;
+    },
+    onProSubmited(isOk) {
+      this.$emit('submit', isOk);
+      this.proAddOrUpdDialogVisible = false;
+    },
+    onChangeCanceled() {
+    },
+    onChangeSubmited(isOk) {
+      this.$emit('submit', isOk);
+      this.changeDialogVisible = false;
+    },
+    deletePro() {
+      useMessageBoxTip({
+        confirmMsg: '鏄惁鍒犻櫎闂',
+        confirmTitle: '纭畾',
+        onConfirm: () => {
+          return problemApi
+            .deleteProblem({
+              pid: this.problem.guid
+            })
+            .then((res) => {
+              if (res.success) {
+                this.$emit('submit');
+              }
+            });
+        }
+      });
+    },
     rejectPro() {
-      this.checkPro(false)
+      this.checkPro(false);
     },
     passPro() {
-      this.checkPro(true)
+      this.checkPro(true);
+    },
+    revokePro() {
+      const pro = this.problem;
+      let status = this.proStatus;
+      let doneMsg;
+      if (status.index <= 2) {
+        doneMsg = '闂鏈鏍�';
+      } else if (status.index <= 3) {
+        doneMsg = '鏁存敼鏈鏍�';
+      }
+      useMessageBoxTip({
+        confirmMsg: `纭鎾ゅ洖鍒�${doneMsg}锛焋,
+        confirmTitle: '瀹℃牳鎾ゅ洖',
+        onConfirm: () => {
+          const { status, action } = ProCheckProxy.proBeforeStatus(
+            pro.extension3
+          );
+          return problemApi
+            .checkProblem({ pId: pro.guid, action: action })
+            .then((res) => {
+              if (res.success) {
+                this.$emit('submit', false);
+              }
+            });
+        }
+      });
     },
     checkPro(pass) {
-      const pro = this.problem
-      let doneMsg = pass ? '閫氳繃' : '椹冲洖'
+      const pro = this.problem;
+      let doneMsg = pass ? '閫氳繃' : '椹冲洖';
       useMessageBoxTip({
         confirmMsg: `纭鏄惁${doneMsg}璇ラ棶棰橈紵`,
         confirmTitle: '闂瀹℃牳',
         onConfirm: () => {
-          const { status, action } = ProCheckProxy.proNextStatus(pro.extension3, pass)
-          return problemApi.checkProblem({ pId: pro.guid, action: action }).then((res) => {
-            if (res.success) {
-              pro.extension3 = status
-              this.$emit('submit')
-            }
-          })
+          const { status, action } = ProCheckProxy.proNextStatus(
+            pro.extension3,
+            pass
+          );
+          return problemApi
+            .checkProblem({ pId: pro.guid, action: action })
+            .then((res) => {
+              if (res.success) {
+                this.$emit('submit', false);
+              }
+            });
         }
-      })
+      });
     },
-    updatePro() {},
-    updateChange() {}
+    updatePro() {
+      this.deepCopyPro = useCloned(this.problem).cloned.value;
+      this.$nextTick(() => {
+        this.proAddOrUpdDialogVisible = true;
+      });
+    },
+    getCurrentMouth() {
+      // 浣跨敤Date瀵硅薄瑙f瀽鏃ユ湡瀛楃涓�
+      var date = new Date(this.subtask.subtask.planstarttime);
+      // 鑾峰彇鏈堜唤淇℃伅锛屾湀浠芥槸浠�0寮�濮嬬殑锛屾墍浠ラ渶瑕佸姞1
+      this.month = date.getMonth() + 1;
+      if (String(this.month).length == 1) {
+        this.month = `0${this.month}`;
+      }
+      // 鑾峰彇骞翠唤
+      var year = date.getFullYear();
+      this.month = `${year}-${this.month}`;
+    },
+    updateChange() {
+      this.getCurrentMouth();
+      if (!this.problem.ischanged) {
+        this.changeType = 0;
+      } else {
+        this.changeType = 1;
+      }
+      this.changeDialogVisible = true;
+    },
+    currProRecent() {
+      this.proRecentDialogVisible = true;
+    }
   }
-}
+};
 </script>
 <style scoped>
 .layout {

--
Gitblit v1.9.3