فهرست منبع

Merge branch 'V0.0.2' of http://10.87.10.227:4000/jzyd_yyds/soc_web into V0.0.2

zhulu 2 سال پیش
والد
کامیت
6a85904756

+ 14 - 1
src/api/safetycheck/register.js

@@ -5,13 +5,26 @@ export function info(id) {
   return request({
     url: "/core/safetycheck/register/" + id,
     method: "get",
+    showLoading:true
   });
 }
 
 // 登记信息
 export function submit(data) {
   return request({
-    url: "/core/safetycheck/register",
+    url: "/core/safetycheck/register/websubmit",
     method: "POST",
+    showLoading:true,
+    data
+  });
+}
+
+// 登记信息
+export function grant(data) {
+  return request({
+    url: "/core/safetycheck/register/grant",
+    method: "POST",
+    showLoading:true,
+    data
   });
 }

+ 5 - 1
src/components/orgTree/index.vue

@@ -56,7 +56,7 @@ export default {
       treeList: [],
       //默认选中节点
       defaultKeys: [],
-      checkSub: true,
+      checkSub: this.defuaultCheckSub,
       defaultKey: null,
     };
   },
@@ -93,6 +93,10 @@ export default {
       type: String,
       default: "请输入机构名称",
     },
+    defuaultCheckSub:{
+      type:Boolean,
+      default:true
+    }
   },
   watch: {
     // 根据名称筛选机构树

+ 2 - 1
src/components/userSelector/index.vue

@@ -17,6 +17,7 @@
             @defaultKey="getDefaultKey"
             @checkChange="checkChange"
             @click="clickTreeNode"
+            :defuaultCheckSub="search.checkSub"
           ></org-tree>
         </el-col>
         <el-col :span="18" :xs="24">
@@ -196,7 +197,7 @@ export default {
     emptySearch() {
       return {
         orgId: this.orgId,
-        checkSub: true,
+        checkSub: false,
         username: null,
         name: null,
       };

+ 1 - 1
src/router/index.js

@@ -209,7 +209,7 @@ export const dynamicRoutes = [
     path: '/core/safetycheck',
     component: Layout,
     hidden: true,
-    permissions: ['safetycheck:register:register'],
+    permissions: ['core:safetycheck:register'],
     children: [
       {
         path: 'register/:taskId(\\d+)',

+ 45 - 27
src/views/check/task/index.vue

@@ -88,36 +88,36 @@
               ></el-option>
             </el-select>
           </el-form-item>
-          <el-row  >
-          <el-form-item label="受检机构" prop="orgName">
-            <!-- <el-input
+          <el-row>
+            <el-form-item label="受检机构" prop="orgName">
+              <!-- <el-input
                 v-model="queryParams.orgName"
                 placeholder="请输入受检机构"
                 clearable
                 @keyup.enter.native="handleQuery"
                 :maxlength="50" @input="inputRestriction"
               /> -->
-            <org-tree-select
-              v-model="queryParams.checkOrgIds"
-              ref="checkorgTreeSelect"
-              :disable="true"
-              @change="getList"
-            >
-            </org-tree-select>
-          </el-form-item>
-          <el-form-item style="margin-left: 50px">
-            <el-button
-              type="primary"
-              icon="el-icon-search"
-              size="mini"
-              @click="getList"
-              >搜索</el-button
-            >
-            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
-              >重置</el-button
-            >
-          </el-form-item>
-        </el-row>
+              <org-tree-select
+                v-model="queryParams.checkOrgIds"
+                ref="checkorgTreeSelect"
+                :disable="true"
+                @change="getList"
+              >
+              </org-tree-select>
+            </el-form-item>
+            <el-form-item style="margin-left: 50px">
+              <el-button
+                type="primary"
+                icon="el-icon-search"
+                size="mini"
+                @click="getList"
+                >搜索</el-button
+              >
+              <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+                >重置</el-button
+              >
+            </el-form-item>
+          </el-row>
         </el-form>
         <!--    按纽    -->
         <el-row :gutter="10" class="mb8">
@@ -266,6 +266,13 @@
                 v-hasPermi="['resumption:taskManager:query']"
                 >扫描记录</el-button
               >
+              <el-button
+                type="text"
+                @click="showRegister(r.row)"
+                v-hasPermi="['resumption:taskManager:query']"
+                v-if="showRegisterBtn(r.row)"
+                >登记</el-button
+              >
             </template>
           </el-table-column>
         </el-table>
@@ -360,7 +367,7 @@ export default {
     // 0每日;1每周;2每月;3每季度;4每半年;5每年
   },
   computed: {
-    ...mapGetters(["orgName"]),
+    ...mapGetters(["orgName","userId","roleList","orgId"]),
   },
   methods: {
     updatePlanStartTime(value) {
@@ -384,11 +391,21 @@ 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){   
+      return true;   
+      //缺少检查角色列表,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+"?mode=register";
+      this.$router.push(path);
+    },
     getDefaultKey(key) {
       this.queryParams.orgId = key;
       this.selectedOrgName = this.orgName;
@@ -411,7 +428,7 @@ export default {
       this.getList();
     },
     resetQuery() {
-      this.queryParams.checkOrgIds=[];
+      this.queryParams.checkOrgIds = [];
       this.resetForm("queryParams");
       this.getList();
     },
@@ -451,6 +468,7 @@ export default {
     // },
 
     statusColor(status, isBackground) {
+      console.log(status,"ssss")
       let color = "";
       switch (status) {
         case "1":

+ 2 - 2
src/views/question/list/dialog.vue

@@ -386,7 +386,7 @@ export default {
 .question-dialog-body{
   max-height: 500px;
   overflow-y: auto;
-  padding-right: 15px;
+  padding-right: 20px;
 }
 
 .question-dialog-body>div{
@@ -401,7 +401,7 @@ export default {
 }
 
 .question-dialog-body>div:not(:first-child){
-  padding-top: 15px;
+  padding-top: 20px;
 }
 .question-dialog-body>div:last-child{
   border: none;

+ 1 - 1
src/views/question/list/index.vue

@@ -223,7 +223,7 @@
                 icon="el-icon-s-unfold"
                 @click="handleReform(scope.row)"
                 v-hasPermi="['question:list:reform']"
-                v-if="scope.row.orgId==orgId && scope.row.confirmStatus==2 && scope.row.reformStatus==10"
+                v-if="scope.row.orgId==orgId && scope.row.confirmStatus==2 && scope.row.reformStatus!=11"
                 >整改</el-button
               >
             </template>

+ 131 - 33
src/views/safetycheck/taskManager/components/register.vue

@@ -8,10 +8,12 @@
         info.checkOrgName
       }}</el-descriptions-item>
       <el-descriptions-item label="受检机构">{{
-        info.beCheckOrgName
+        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,12 +39,16 @@
     </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>
     <div class="content">
-      <div class="area_content" v-for="area in info.areaList">
+      <div class="area_content" v-for="area in info.checkList">
         <div>
           {{ area.areaName }}
         </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,12 +88,14 @@
                   :model="point"
                   :rules="exceptionRules"
                   label-width="100px"
+                  v-if="isRegister"
                 >
                   <el-form-item label="情况描述" prop="remark">
                     <el-input
                       v-model="point.remark"
                       style="width: 250px"
                       placeholder="请输入情况描述"
+                      maxlength="255"
                     ></el-input>
                   </el-form-item>
                   <el-form-item label="异常图片" prop="image">
@@ -104,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>
@@ -113,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() {
@@ -145,21 +192,60 @@ 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.roleId+'');
+      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 {
+        debugger
+        this.$message.warning("用户不能执行该任务");
+        this.mode='info'
+      }
     });
   },
   methods: {
     dayjs,
+    getLabel,
     onAddPoint() {
       this.pointIdsWhenAdd = [];
-      this.info.areaList.forEach((a) => {
+      this.info.checkList.forEach((a) => {
         a.itemList.forEach((i) => {
           i.pointList.forEach((p) => {
             this.pointIdsWhenAdd.push(p.pointId);
@@ -176,10 +262,10 @@ export default {
           continue;
         }
         let info = this.info;
-        let area = info.areaList.find((a) => a.areaId === p.areaId);
+        let area = info.checkList.find((a) => a.areaId === p.areaId);
         if (!area) {
           area = { areaId: p.areaId, areaName: p.areaName, itemList: [] };
-          info.areaList.push(area);
+          info.checkList.push(area);
         }
 
         let item = area.itemList.find((i) => i.itemId == p.itemId);
@@ -229,8 +315,8 @@ export default {
       }
 
       if (area.itemList.length === 0) {
-        index = this.info.areaList.indexOf(area);
-        this.info.areaList.splice(index, 1);
+        index = this.info.checkList.indexOf(area);
+        this.info.checkList.splice(index, 1);
       }
     },
     onImageChanged(point, value) {
@@ -238,20 +324,30 @@ 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;
+      }
 
-        debugger
-        //调用授权
+      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 = false;
+      this.info.isSubmit = 0;
       api.submit(this.info).then((r) => {
         this.$message.info("保存成功");
       });
@@ -270,8 +366,10 @@ export default {
         }
       }
       if (isOk) {
-        this.info.isSubmit = true;
-        api.submit(info);
+        this.info.isSubmit = 1;
+        api.submit(this.info).then((r) => {
+          this.$message.info("提交成功");
+        });
       }
     },
   },

+ 2 - 9
src/views/system/user/index.vue

@@ -244,16 +244,9 @@
                   type="text"
                   icon="el-icon-plus"
                   @click="handleExtend(scope.row)"
-                  v-hasPermi="['system:user:extend']"
-                  >补充信息</el-button
+                  v-hasPermi="['system:user:extend']" 
+                  v-if="check==true"   >补充信息</el-button
                 >
-                <!-- <el-button
-                  size="mini"
-                  type="text"
-                  icon="el-icon-plus"
-                  v-hasPermi="['system:user:extend']"
-                  >补充信息</el-button
-                > -->
                 <el-button
                   size="mini"
                   type="text"