Explorar el Código

检查任务详情

jiawuxian hace 2 años
padre
commit
16968fae9e

+ 9 - 3
src/views/check/task/index.vue

@@ -270,6 +270,7 @@
                 type="text"
                 @click="showRegister(r.row)"
                 v-hasPermi="['resumption:taskManager:query']"
+                v-if="showRegisterBtn(r.row)"
                 >登记</el-button
               >
             </template>
@@ -366,7 +367,7 @@ export default {
     // 0每日;1每周;2每月;3每季度;4每半年;5每年
   },
   computed: {
-    ...mapGetters(["orgName"]),
+    ...mapGetters(["orgName","userId","roleList","orgId"]),
   },
   methods: {
     updatePlanStartTime(value) {
@@ -390,13 +391,18 @@ export default {
     },
     getLabel,
     showDetail(row) {
-      this.$refs.detaildialog.show(row.id, row.name);
+      let path = "/core/safetycheck/register/" + row.id;
+      this.$router.push(path);
     },
     showscanRecord(row) {
       this.$refs.scanrecorddialog.show(row.id, row.orgId);
     },
+    showRegisterBtn(row){      
+      //缺少检查角色列表,grantUserId
+        return (row.checkOrgId==this.orgId && this.roleList.map(r=>r.id).find(id=>id==row.roleId)) || row.grantUserId===this.userId;
+    },
     showRegister(row) {
-      let path = "/core/safetycheck/register/" + row.id;
+      let path = "/core/safetycheck/register/" + row.id+"?mode=register";
       this.$router.push(path);
     },
     getDefaultKey(key) {

+ 117 - 31
src/views/safetycheck/taskManager/components/register.vue

@@ -11,7 +11,9 @@
         info.beCheckedOrgName
       }}</el-descriptions-item>
       <el-descriptions-item label="检查角色"
-        >{{ info.checkRoleNames }}
+        >{{
+          info.checkRoles ? info.checkRoles.map((r) => r.name).join(",") : ""
+        }}
       </el-descriptions-item>
       <el-descriptions-item label="开始日期"
         >{{ dayjs(info.planStartTime).format("YYYY-MM-DD") }}
@@ -27,7 +29,9 @@
           style="width: 80%; margin-top: -8px"
           placeHolder="请输入检查组成员"
           v-model="info.checkTeam"
+          v-if="isRegister"
         ></el-input>
+        <span>{{ info.checkTeam }}</span>
       </el-descriptions-item>
       <el-descriptions-item label="检查状态"
         >{{ dayjs(info.planStartTime).format("YYYY-MM-DD") }}
@@ -35,7 +39,11 @@
     </el-descriptions>
     <div>
       <span style="margin-right: 20px">巡检区域</span>
-      <el-button type="primary" size="mini" @click="onAddPoint()"
+      <el-button
+        type="primary"
+        size="mini"
+        @click="onAddPoint()"
+        v-if="isRegister"
         >新增检查内容</el-button
       >
     </div>
@@ -52,14 +60,23 @@
                 <span class="pointName"
                   ><i class="circle" /> {{ point.pointName }}</span
                 >
-                <el-radio-group v-model="point.status">
+                <el-radio-group v-model="point.status" v-if="isRegister">
                   <el-radio :label="0">正常</el-radio>
                   <el-radio :label="1">异常</el-radio>
                 </el-radio-group>
+                <span v-else>
+                  <span v-if="point.status === 0">
+                    <i class="circle" style="background-color: #1890ff" />
+                    <label style="color: #1890ff"> 正常</label> </span
+                  ><span v-else>
+                    <i class="circle" style="background-color: #f5222d" />
+                    <label style="color: #f5222d"> 异常</label>
+                  </span>
+                </span>
                 <el-button
                   type="danger"
                   size="mini"
-                  v-if="point.isAdd"
+                  v-if="point.isAdd && isRegister"
                   style="margin-left: 50px"
                   @click="onDeletePoint(area, item, point)"
                   >移除</el-button
@@ -71,6 +88,7 @@
                   :model="point"
                   :rules="exceptionRules"
                   label-width="100px"
+                  v-if="isRegister"
                 >
                   <el-form-item label="情况描述" prop="remark">
                     <el-input
@@ -105,6 +123,28 @@
                     </el-select>
                   </el-form-item>
                 </el-form>
+                <el-descriptions v-else :column="1">
+                  <el-descriptions-item label="情况描述">{{
+                    point.remark
+                  }}</el-descriptions-item>
+                  <el-descriptions-item label="整改期限">{{
+                    getLabel(
+                      dict.type.rectification_deadline,
+                      point.rectificationDeadline
+                    )
+                  }}</el-descriptions-item>
+                  <el-descriptions-item label="整改图片">
+                    <div class="imageList">
+                      <el-image
+                        style="width: 100px; height: 100px"
+                        v-if="point.imgData"
+                        v-for="url in point.imgData"
+                        :src="url"
+                        :preview-src-list="point.imgData.map((d) => d.imgPath)"
+                      >
+                      </el-image></div
+                  ></el-descriptions-item>
+                </el-descriptions>
               </div>
             </div>
           </div>
@@ -114,28 +154,34 @@
 
     <div class="dialog-footer">
       <el-button @click="dialogVisible = false">取消</el-button>
-      <el-button @click="onGrant">授权</el-button>
-      <el-button @click="onSave">保存</el-button>
-      <el-button type="primary" @click="onSubmit()">提交</el-button>
+      <el-button @click="onGrant" v-if="isRegister && info.status != 3"
+        >授权</el-button
+      >
+      <el-button @click="onSave" v-if="isRegister">保存</el-button>
+      <el-button type="primary" @click="onSubmit()" v-if="isRegister"
+        >提交</el-button
+      >
     </div>
     <SelectPoint
       ref="SelectPoint"
       :orgType="info.beCheckOrgType"
       @select="onSelectPoint"
     ></SelectPoint>
-    <UserSelector ref ="UserSelector"
-        @select="onUserSelect"
-        :selectLimit="1"
+    <UserSelector
+      ref="UserSelector"
+      @select="onUserSelect"
+      :selectLimit="1"
     ></UserSelector>
   </div>
 </template>
 <script>
+import { mapGetters } from "vuex";
 import * as api from "@/api/safetycheck/register.js";
 import dayjs from "dayjs";
 import SelectPoint from "../../ruleManager/dialog.select.point.vue";
 import imgUpload from "@/components/ImageUpload/index.vue";
-import UserSelector from "@/components/userSelector/index.vue"
-
+import UserSelector from "@/components/userSelector/index.vue";
+import { getLabel } from "@/views/commonOption.js";
 export default {
   name: "safetyCheckRegister",
   data() {
@@ -146,18 +192,55 @@ export default {
         rectificationDeadline: [{ required: true, message: "请选择整改期限" }],
       },
       pointIdsWhenAdd: [],
+      mode: null,
     };
   },
-  dicts: ["rectification_deadline","sys_user_is_lock"],
-  components: { SelectPoint, imgUpload,UserSelector },
+  dicts: ["rectification_deadline", "sys_user_is_lock"],
+  components: { SelectPoint, imgUpload, UserSelector },
+  computed: {
+    ...mapGetters(["orgId", "roleList", "userId"]),
+    isRegister() {
+      return this.mode === "register";
+    },
+  },
   mounted() {
     let id = this.$route.params.taskId;
+    let mode = this.$route.query.mode;
+    if (!mode) {
+      mode = "info";
+    }
+    this.mode = mode;
+
     api.info(id).then((r) => {
-      this.info = r.data;
+      if (this.mode != "register") {
+        this.info = r.data;
+        return;
+      }
+
+      if (r.data.status == 3) {
+        this.mode == "info";
+        this.info = r.data;
+        this.$message.info("任务已完成,将显示详情");
+        return;
+      }
+
+      let userRoleIds = this.roleList.map((r) => r.id);
+      let taskRoleIds = r.data.checkRoles.map((r) => r.id);
+
+      if (
+        (r.data.checkOrgId == this.orgId &&
+          userRoleIds.find((ur) => taskRoleIds.includes(ur))) ||
+        r.data.grantUserId == this.userId
+      ) {
+        this.info = r.data;
+      } else {
+        this.$message.warning("用户不能执行该任务");
+      }
     });
   },
   methods: {
     dayjs,
+    getLabel,
     onAddPoint() {
       this.pointIdsWhenAdd = [];
       this.info.checkList.forEach((a) => {
@@ -239,24 +322,27 @@ export default {
         .split(",")
         .map((img) => ({ id: null, imgPath: img }));
     },
-    onUserSelect(selected){
-        if(!selected || selected.length===0){
-            this.$message.warning("请选择要授权的人员")
-            return;
-        }
+    onUserSelect(selected) {
+      if (!selected || selected.length === 0) {
+        this.$message.warning("请选择要授权的人员");
+        return;
+      }
 
-        api.grant({planId:this.info.planId,
-            beCheckedOrgId:this.info.beCheckedOrgId,
-            taskId:this.info.id,
-            ymdDate:this.info.ymdDate,
-            userId:selected[0].id
-        }).then(r=>{
-            this.$message.info("授权成功")
+      api
+        .grant({
+          planId: this.info.planId,
+          beCheckedOrgId: this.info.beCheckedOrgId,
+          taskId: this.info.id,
+          ymdDate: this.info.ymdDate,
+          userId: selected[0].id,
         })
-        //调用授权
+        .then((r) => {
+          this.$message.info("授权成功");
+        });
+      //调用授权
     },
     onGrant() {
-        this.$refs.UserSelector.show();
+      this.$refs.UserSelector.show();
     },
     onSave() {
       this.info.isSubmit = 0;
@@ -279,8 +365,8 @@ export default {
       }
       if (isOk) {
         this.info.isSubmit = 1;
-        api.submit(this.info).then(r=>{
-            this.$message.info("提交成功");
+        api.submit(this.info).then((r) => {
+          this.$message.info("提交成功");
         });
       }
     },