Ver Fonte

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

coys há 2 anos atrás
pai
commit
74aade7792

+ 9 - 0
src/api/core/accessPlan.js

@@ -25,6 +25,15 @@ export function distribute(id) {
     method: 'get'
   })
 }
+
+// 下发
+export function withdraw(id) {
+  return request({
+    url: '/core/accessPlan/withdraw/' + id,
+    showLoading:true,
+    method: 'get'
+  })
+}
 // 新增监控调阅计划
 export function addPlan(data) {
   return request({

+ 7 - 0
src/api/safetycheck/plan.js

@@ -75,3 +75,10 @@ export function delelte(id) {
   })
 }
 
+export function getDesignateHangshe(planId){
+  return request({
+    url: '/core/SafecheckPlanToExecOrg/designatehangshe/' + planId,
+    method: 'get'
+  })
+}
+

+ 3 - 3
src/components/orgTree/index.vue

@@ -51,7 +51,7 @@ export default {
       treeList: [],
       //默认选中节点
       defaultKeys: [],
-      checkSub: this.defuaultCheckSub,
+      checkSub: this.defaultCheckSub,
       defaultKey: null,
     };
   },
@@ -88,7 +88,7 @@ export default {
       type: String,
       default: "请输入机构名称",
     },
-    defuaultCheckSub:{
+    defaultCheckSub:{
       type:Boolean,
       default:true
     }
@@ -159,7 +159,7 @@ export default {
     // 筛选节点
     filterNode(value, data) {
       if (!value) return true;
-      return data.name.indexOf(value) !== -1;
+      return data.shortName.indexOf(value) !== -1;
     },
     // 节点单击事件
     handleNodeClick(data, node) {

+ 2 - 0
src/views/check/dialog.edit.vue

@@ -380,11 +380,13 @@ export default {
       this.execOrgIds = null;
       this.formData.execOrgList = [];
       this.formData.roleIds=[];
+      this.formData.execOrgIds=[];
       this.getRolesByOrg();
     },
     cleanCheckOrgList() {
       this.checkOrgIds = null;
       this.formData.checkOrgList = [];
+      this.formData.checkOrgIds=[];
     },
     tenantIdnormalizer(node, instanceId) {
       if (node.children && !node.children.length) {

+ 23 - 14
src/views/check/distribute.vue

@@ -25,7 +25,7 @@
             plain
             size="mini"
             @click="handleAllStatus('1')"
-            >全部用</el-button
+            >全部使用</el-button
           >
         </el-col>
         <el-col :span="1.5">
@@ -34,7 +34,7 @@
             plain
             size="mini"
             @click="handleAllStatus('0')"
-            >全部用</el-button
+            >全部用</el-button
           >
         </el-col>
       </el-row>
@@ -45,8 +45,8 @@
           <template slot-scope="r">
             <el-switch
               v-model="r.row.status"
-              active-text="用"
-              inactive-text="用"
+              active-text="使用"
+              inactive-text="用"
               active-value="1"
               inactive-value="0"
               active-color="#008CD6"
@@ -66,7 +66,7 @@
 </template>
 <script>
 import { listByTypes } from "@/api/system/org.js";
-
+import { getDesignateHangshe } from "@/api/safetycheck/plan.js";
 export default {
   components: {},
   data() {
@@ -89,16 +89,25 @@ export default {
   },
   methods: {
     show(plan) {
-      this.isShow = true;
       this.info.id = plan.id;
-      listByTypes({
-        orgId: plan.planCreateOrgId,
-        orgTypes: ["3"],
-      }).then((r) => {
-        this.info.orgAndStatus = r.data.map((d) => {
-          return { orgId: d.id, orgName: d.shortName, status: "1" };
-        });
-        this.tableData = this.info.orgAndStatus;
+      getDesignateHangshe(plan.id).then((r) => {
+        if (r.data && r.data.length > 0) {
+          this.info.orgAndStatus = r.data.map((d) => {
+            return { orgId: d.id, orgName: d.shortName, status: "1" };
+          });
+          this.$emit("select", this.info);
+        } else {
+          this.isShow = true;
+          listByTypes({
+            orgId: plan.planCreateOrgId,
+            orgTypes: ["3"],
+          }).then((r) => {
+            this.info.orgAndStatus = r.data.map((d) => {
+              return { orgId: d.id, orgName: d.shortName, status: "1" };
+            });
+            this.tableData = this.info.orgAndStatus;
+          });
+        }
       });
     },
     handleAllStatus(status) {

+ 3 - 2
src/views/check/index.vue

@@ -9,6 +9,7 @@
           @checkChange="checkChange"
           @click="clickTreeNode"
           hangsheTree
+          :defaultCheckSub="false"
         ></org-tree>
       </el-col>
 
@@ -337,7 +338,7 @@
 </template>
 
 <script>
-import DialogDistribute from "@/views/resumption/plan/distribute.vue";
+import DialogDistribute from "./distribute.vue";
 import OrgTree from "@/components/orgTree";
 import { mapState, mapMutations } from "vuex";
 import DialogEdit from "./dialog.edit";
@@ -383,7 +384,7 @@ export default {
         planStatus:null,
         pageSize:10,
         pageNum:1,
-        checkSub:true,
+        checkSub:false,
         orgId:null,
         ...query,
       },

+ 48 - 19
src/views/check/task/index.vue

@@ -165,21 +165,26 @@
           <el-table-column
             prop="checkOrgName"
             label="检查机构"
-            min-width="120"
+            min-width="140"
             v-if="columns[5].visible"
           >
           </el-table-column>
           <el-table-column
             prop="roleName"
             label="检查角色"
-            min-width="120"
+            min-width="150"
             v-if="columns[6].visible"
           >
+            <template slot-scope="r">
+              {{
+                r.row.roles ? r.row.roles.map((r) => r.roleName).join("||") : ""
+              }}
+            </template>
           </el-table-column>
           <el-table-column
             prop="orgName"
             label="受检机构"
-            min-width="120"
+            min-width="140"
             v-if="columns[4].visible"
           >
           </el-table-column>
@@ -187,15 +192,29 @@
           <el-table-column
             prop="planStartTime"
             label="开始日期"
-            min-width="140"
+            min-width="100"
             v-if="columns[2].visible"
-          />
+            ><template slot-scope="r">
+              {{
+                r.row.planStartTime
+                  ? dayjs(r.row.planStartTime).format("YYYY-MM-DD")
+                  : ""
+              }}
+            </template></el-table-column
+          >
           <el-table-column
             prop="planEndTime"
             label="截止日期"
-            min-width="140"
+            min-width="100"
             v-if="columns[3].visible"
-          />
+            ><template slot-scope="r">
+              {{
+                r.row.planEndTime
+                  ? dayjs(r.row.planEndTime).format("YYYY-MM-DD")
+                  : ""
+              }}
+            </template></el-table-column
+          >
 
           <el-table-column
             prop="status"
@@ -218,7 +237,7 @@
           <el-table-column
             prop="submitName"
             label="检查人"
-            min-width="120"
+            min-width="100"
             v-if="columns[7].visible"
           ></el-table-column>
           <el-table-column
@@ -301,6 +320,8 @@ import * as api from "@/api/safetycheck/task.js";
 import { getLabel } from "@/views/commonOption.js";
 import OrgTreeSelect from "@/components/orgTreeSelect";
 import { checkPermi } from "@/utils/permission.js";
+import dayjs from 'dayjs';
+
 export default {
   name: "checkTaskList",
   dicts: ["resumption_plan_cycle", "resumption_status", "safety_check_status"],
@@ -318,7 +339,7 @@ export default {
       total: 0,
       timeClearable: false,
       options: [],
-      roleList: [],
+      roleOptions: [],
       planList: [],
 
       queryParams: {
@@ -368,9 +389,10 @@ export default {
     // 0每日;1每周;2每月;3每季度;4每半年;5每年
   },
   computed: {
-    ...mapGetters(["orgName","userId","roleList","orgId"]),
+    ...mapGetters(["orgName", "userId", "roleList", "orgId"]),
   },
   methods: {
+    dayjs,
     updatePlanStartTime(value) {
       // console.log(this.queryParams.planStartTime,"前");
       this.queryParams.planStartTime = value;
@@ -398,16 +420,23 @@ export default {
     showscanRecord(row) {
       this.$refs.scanrecorddialog.show(row.id, row.orgId);
     },
-    showRegisterBtn(row){ 
-      let userRoleId= this.roleList.map(r=>r.id);
-      let taskRoleId=row.roles.map(r=>r.roleId) ;
-      
-       return row.status!=3 
-        && ((row.checkOrgId==this.orgId && userRoleId.find(ur=>taskRoleId.includes(ur)) && checkPermi(['core:safetycheck:register','core:safetycheck:grant']))
-        || row.grantUserId===this.userId);
+    showRegisterBtn(row) {
+      let userRoleId = this.roleList.map((r) => r.roleId);
+      let taskRoleId = row.roles.map((r) => r.roleId);
+ 
+      return (
+        row.status != 3 &&
+        ((row.checkOrgId == this.orgId &&
+          userRoleId.find((ur) => taskRoleId.includes(ur)) &&
+          checkPermi([
+            "core:safetycheck:register",
+            "core:safetycheck:grant",
+          ])) ||
+          row.grantUserId === this.userId)
+      );
     },
     showRegister(row) {
-      let path = "/core/safetycheck/register/" + row.id+"?mode=register";
+      let path = "/core/safetycheck/register/" + row.id + "?mode=register";
       this.$router.push(path);
     },
     getDefaultKey(key) {
@@ -457,7 +486,7 @@ export default {
           orgId: this.queryParams.orgId,
           planCycle: this.queryParams.executeCycle,
         })
-        .then((r) => (this.roleList = r.data));
+        .then((r) => (this.roleOptions = r.data));
     },
 
     // loadPlanList() {

+ 26 - 21
src/views/core/accessPlan/index.vue

@@ -37,7 +37,7 @@
           </el-form-item>
           <el-form-item label="计划状态" prop="planStatus">
             <el-select style="width: 100%;" v-model="queryParams.planStatus" placeholder="请选择计划状态">
-              <el-option v-for="dict in dict.type.plan_status" :key="dict.value" :label="dict.label"
+              <el-option v-for="dict in dict.type.edu_plan_status" :key="dict.value" :label="dict.label"
                          :value="`${dict.value}`"></el-option>
             </el-select>
           </el-form-item>
@@ -88,7 +88,7 @@
 
           <el-table-column label="计划状态" align="center" key="planStatus" prop="planStatus" width="80">
             <template slot-scope="scope">
-              <dict-tag :options="dict.type.plan_status" :value="scope.row.planStatus"/>
+              <dict-tag :options="dict.type.edu_plan_status" :value="scope.row.planStatus"/>
             </template>
           </el-table-column>
           <!-- <el-table-column label="修改人" align="center" prop="updateBy"/>
@@ -99,9 +99,12 @@
               <el-button size="mini" type="text" icon="el-icon-edit-outline" @click="handleUpdate(scope.row)" v-if="(scope.row.parentOrgId==isEdit||scope.row.orgId==isEdit)&&check==true"
                          v-hasPermi="['core:accessPlan:edit','core:accessPlan:query']">编辑
               </el-button>
-              <el-button size="mini" type="text" v-if="scope.row.orgId==isEdit&&(1==xf)&&scope.row.isDistribute == 0 && scope.row.planStatus==0" icon="el-icon-arrow-down"
+              <el-button size="mini" type="text" v-if="scope.row.orgId==isEdit&&scope.row.isDistribute == 0 && (scope.row.planStatus==0||scope.row.planStatus==2)" icon="el-icon-arrow-down"
                          @click="handDistribute(scope.row)" v-hasPermi="['core:accessPlan:add']">下发
               </el-button>
+              <el-button size="mini" type="text" v-if="scope.row.orgId==isEdit&&scope.row.isDistribute == 1 && scope.row.planStatus==1" icon="el-icon-arrow-down"
+                         @click="handWithdraw(scope.row)" >撤回
+              </el-button>
               <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-if="(scope.row.parentOrgId==isEdit)&&scope.row.parentId==null && check==true"
                          v-hasPermi="['core:accessPlan:remove']">删除
               </el-button>
@@ -109,9 +112,6 @@
           </el-table-column>
         </el-table>
 
-        <!-- <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
-                    :limit.sync="queryParams.pageSize"
-                    @pagination="getList"/> -->
                     <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
                     :limit.sync="queryParams.pageSize"
                     @pagination="getList"/>
@@ -154,31 +154,26 @@
             <el-option v-for="item in roleList" :key="item.id" :label="item.roleName" :value="item.id" :disabled="form.isEdit"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="调阅频次" prop="planFrequency">
+        <el-form-item label="调阅频次" prop="planFrequency" v-if="form.isEdit==true">
           <el-input type="number" @change="numChange"
                     v-model.number="form.planFrequency" placeholder="请输入调阅频次"/>
         </el-form-item>
-        <el-form-item label="计划状态" prop="planStatus">
-          <el-radio-group v-model="form.planStatus">
-            <el-radio v-for="dict in dict.type.plan_status" :key="dict.value" :label="dict.value" :disabled="form.isEdit">{{ dict.label
-              }}
-            </el-radio>
-          </el-radio-group>
+        <el-form-item label="调阅频次" prop="planFrequency" v-if="form.isEdit==false||form.isEdit==null">
+          <el-input type="number"  :min="1" oninput="if(value<0)value=1"
+                    v-model.number="form.planFrequency" placeholder="请输入调阅频次"/>
         </el-form-item>
-      <!-- <el-form-item label="立即生成任务" prop="immediately" v-if="form.planCycle!=0">
-          <el-radio-group v-model="form.immediately">
-            <el-radio v-for="dict in dict.type.is_full" :key="dict.value" :label="dict.value" :disabled="form.isEdit">{{ dict.label
+        <!-- <el-form-item label="计划状态" prop="planStatus">
+          <el-radio-group v-model="form.planStatus">
+            <el-radio v-for="dict in dict.type.edu_plan_status" :key="dict.value" :label="dict.value" :disabled="form.isEdit">{{ dict.label
               }}
             </el-radio>
           </el-radio-group>
-        </el-form-item>  -->
-
+        </el-form-item> -->
             <el-form-item label="立即生效" prop="immediately" v-if="form.planCycle!=0">
               <el-checkbox v-model="form.immediately">
               
                 <el-popover placement="top-start" title="" width="200" trigger="hover"
                             content="">
-                  <i class="el-icon-warning-outline change-icon" slot="reference"></i>
                 </el-popover>
               </el-checkbox>
             </el-form-item> 
@@ -197,7 +192,7 @@
 </template>
 
 <script>
-  import {listPlan, getPlan, delPlan, addPlan, updatePlan, distribute} from "@/api/core/accessPlan";
+  import {listPlan, getPlan, delPlan, addPlan, updatePlan, distribute,withdraw} from "@/api/core/accessPlan";
   import {listRole, findRoleByType, getRole, allRole} from "@/api/system/role";
   import tableList from "@/mixins/tableList";
   import orgTree from "@/components/orgTree";
@@ -206,7 +201,7 @@
 
   export default {
     name: "Plan",
-    dicts: ['sys_org_type', 'sys_access_cycle', 'sys_normal_disable', 'plan_status','is_full'],
+    dicts: ['sys_org_type', 'sys_access_cycle', 'sys_normal_disable', 'plan_status','is_full','edu_plan_status'],
     components: {
       orgTree
     },
@@ -484,6 +479,16 @@
         });
 
       },
+      handWithdraw(row){
+        this.$modal.confirm('是否确认撤回监控调阅计划"' + row.planName + '"的数据项?').then(function () {
+          return withdraw(row.id);
+        }).then(() => {
+          this.getList();
+          this.$modal.msgSuccess("撤回成功");
+        }).catch(() => {
+        });
+
+      },
       /** 导出按钮操作 */
       handleExport() {
         this.download('system/plan/export', {

+ 7 - 2
src/views/core/drill/plan/index.vue

@@ -4,7 +4,7 @@
       <!--机构数据-->
       <el-col :span="4" :xs="24">
         <org-tree v-model="queryParams.belongOrgId" @defaultKey="getDefaultKey" @checkChange="checkChange"
-                  @click="clickTreeNode" businessTree :defuaultCheckSub="false"></org-tree>
+                  @click="clickTreeNode" hangsheTree :defaultCheckSub="false"></org-tree>
       </el-col>
       <!--搜索栏-->
       <el-col :span="20" :xs="24">
@@ -115,7 +115,7 @@
       </el-col>
     </el-row>
     <!-- 添加或修改教育培训计划对话框 -->
-    <el-dialog :title="title" :visible.sync="open" :close="cancel" width="850px" height="800px" append-to-body>
+    <el-dialog :title="title" :visible.sync="open" :before-close="closeDialog"  :close="cancel" width="850px" height="800px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="110px">
         <el-row>
           <el-col :span="24">
@@ -429,8 +429,12 @@ export default {
     cancel() {
       this.open = false;
       this.reset();
+      this.$refs['orgTreeSelect'].clear();
       this.$refs["upload"].clearFiles();
     },
+    closeDialog(){
+     this.cancel();
+    },
     // 表单重置
     reset() {
       this.form = {
@@ -522,6 +526,7 @@ export default {
       this.$refs["form"].validate(valid => {
         if (valid) {
           let request = {...this.form};
+          console.log("request", request)
           if (this.form.planExecOrgIdList) {
             const list = Array.isArray(this.form.planExecOrgIdList) ? this.form.planExecOrgIdList : [this.form.planExecOrgIdList];
             request.planExecOrgIdList = list;

+ 5 - 3
src/views/core/edu/plan/index.vue

@@ -4,7 +4,7 @@
       <!--机构数据-->
       <el-col :span="4" :xs="24">
         <org-tree v-model="queryParams.belongOrgId" @defaultKey="getDefaultKey" @checkChange="checkChange"
-                  @click="clickTreeNode" hangsheTree :defuaultCheckSub="false"></org-tree>
+                  @click="clickTreeNode" hangsheTree :defaultCheckSub="false"></org-tree>
       </el-col>
       <!--搜索栏-->
       <el-col :span="20" :xs="24">
@@ -142,7 +142,7 @@
       </el-col>
     </el-row>
     <!-- 添加或修改教育培训计划对话框 -->
-    <DialogCom :title="title" :visible.sync="open" @close="cancel" width="850px" height="800px" append-to-body>
+    <DialogCom :title="title" :visible.sync="open" :before-close="closeDialog"  @close="cancel" width="850px" height="800px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="110px">
         <el-row>
           <el-col :span="24">
@@ -480,7 +480,9 @@ export default {
       this.reset();
       this.$refs['orgTreeSelect'].clear();
       this.$refs["upload"].clearFiles();
-      this
+    },
+    closeDialog(){
+     this.cancel();
     },
     // 表单重置
     reset() {

+ 8 - 4
src/views/resumption/plan/dialog.edit.vue

@@ -101,10 +101,10 @@
               <!-- </el-form-item> -->
             <!-- </el-col> -->
             <el-col :span="6" v-if="id ? false : true">
-              <el-form-item prop="buildTaskNow" label="立即生效:" >
+              <el-form-item prop="tempBuildTaskNow" label="立即生效:" >
                 <el-checkbox
                   
-                  v-model="formData.buildTaskNow"
+                  v-model="tempBuildTaskNow"
                   size="medium"
                   @change="handleCheckboxChange"
                   >默认从下个周期生成任务,<br>勾选后从当前周期立即生成任务</el-checkbox
@@ -284,6 +284,7 @@ export default {
       selectedValues: [],
       resumptionRoles: [],
       planName: null,
+      tempBuildTaskNow:false,
       planType: null,
       planCycle: null,
       planStatus: null,
@@ -584,10 +585,12 @@ export default {
         roleList: [],
         distributePlanStatus: null,
         planCreateOrgType: null,
-        buildTaskNow: false,
+        buildTaskNow: 0,
       };
     },
-    handleCheckboxChange() {},
+    handleCheckboxChange() {
+      this.formData.buildTaskNow=this.tempBuildTaskNow?1:0;
+    },
     getRolesByOrg() {
       if (this.formData.execOrgType != null) {
         let params = {
@@ -642,6 +645,7 @@ export default {
       this.getRolesByOrg();
     },
     async show(id, other = {}) {
+      this.tempBuildTaskNow=false;
       this.buildTime=null;
       this.id = id;
       this.tableData = null;

+ 2 - 1
src/views/resumption/plan/index.vue

@@ -8,6 +8,7 @@
           @defaultKey="getDefaultKey"
           @checkChange="checkChange"
           @click="clickTreeNode"
+          :defaultCheckSub="false"
           hangsheTree
         ></org-tree>
       </el-col>
@@ -386,7 +387,7 @@ export default {
         planName: null,
         pageNum: 1,
         pageSize: 10,
-        checkSub: true,
+        checkSub: false,
         roleList: [],
         ...query,
       },

+ 35 - 34
src/views/safetycheck/taskManager/components/register.vue

@@ -2,39 +2,39 @@
   <div class="app-container">
     <el-descriptions title="检查任务">
       <el-descriptions-item label="检查名称">{{
-        info.taskName
+        taskInfo.taskName
       }}</el-descriptions-item>
       <el-descriptions-item label="检查机构">{{
-        info.checkOrgName
+        taskInfo.checkOrgName
       }}</el-descriptions-item>
       <el-descriptions-item label="受检机构">{{
-        info.beCheckedOrgName
+        taskInfo.beCheckedOrgName
       }}</el-descriptions-item>
       <el-descriptions-item label="检查角色"
         >{{
-          info.checkRoles ? info.checkRoles.map((r) => r.name).join(",") : ""
+          taskInfo.checkRoles ? taskInfo.checkRoles.map((r) => r.name).join(",") : ""
         }}
       </el-descriptions-item>
       <el-descriptions-item label="开始日期"
-        >{{ dayjs(info.planStartTime).format("YYYY-MM-DD") }}
+        >{{ dayjs(taskInfo.planStartTime).format("YYYY-MM-DD") }}
       </el-descriptions-item>
       <el-descriptions-item label="截止日期"
-        >{{ dayjs(info.planEndTime).format("YYYY-MM-DD") }}
+        >{{ dayjs(taskInfo.planEndTime).format("YYYY-MM-DD") }}
       </el-descriptions-item>
       <el-descriptions-item label="创建时间"
-        >{{ dayjs(info.planStartTime).format("YYYY-MM-DD") }}
+        >{{ dayjs(taskInfo.planStartTime).format("YYYY-MM-DD") }}
       </el-descriptions-item>
       <el-descriptions-item label="检查组成员"
         ><el-input
           style="width: 80%; margin-top: -8px"
           placeHolder="请输入检查组成员"
-          v-model="info.checkTeam"
+          v-model="taskInfo.checkTeam"
           v-if="isRegister"
         ></el-input>
-        <span v-else>{{ info.checkTeam }}</span>
+        <span v-else>{{ taskInfo.checkTeam }}</span>
       </el-descriptions-item>
       <el-descriptions-item label="检查状态"
-        >{{ dayjs(info.planStartTime).format("YYYY-MM-DD") }}
+        >{{ dayjs(taskInfo.planStartTime).format("YYYY-MM-DD") }}
       </el-descriptions-item>
     </el-descriptions>
     <div>
@@ -48,7 +48,7 @@
       >
     </div>
     <div class="content">
-      <div class="area_content" v-for="area in info.checkList">
+      <div class="area_content" v-for="area in taskInfo.checkList">
         <div>
           {{ area.areaName }}
         </div>
@@ -133,10 +133,10 @@
                       point.rectificationDeadline
                     )
                   }}</el-descriptions-item>
-                  <el-descriptions-item label="整改图片">
+                  <el-descriptions-item label="异常图片">
                     <div class="imageList">
                       <el-image
-                        style="width: 100px; height: 100px"
+                        style="width: 100px; height: 100px;margin:10px;"
                         v-if="point.imgData"
                         v-for="url in point.imgData"
                         :src="url"
@@ -167,7 +167,7 @@
     </div>
     <SelectPoint
       ref="SelectPoint"
-      :orgType="info.beCheckOrgType"
+      :orgType="taskInfo.beCheckOrgType"
       @select="onSelectPoint"
     ></SelectPoint>
     <UserSelector
@@ -190,7 +190,7 @@ export default {
   name: "safetyCheckRegister",
   data() {
     return {
-      info: {},
+      taskInfo: {},
       exceptionRules: {
         remark: [{ required: true, message: "请输入情况描述" }],
         rectificationDeadline: [{ required: true, message: "请选择整改期限" }],
@@ -211,17 +211,17 @@ export default {
     showSaveBtn() {
       return (
         this.isRegister &&
-        this.info.status != 3 &&
+        this.taskInfo.status != 3 &&
         (checkPermi(["core:safetycheck:register"]) ||
-          this.info.grantUserId == this.userId)
+          this.taskInfo.grantUserId == this.userId)
       );
     },
     showGrantBtn() {
       let userRoleIds = this.roleList.map((r) => r.roleId);
-      let taskRoleIds = this.info.checkRoles.map((r) => r.id);
+      let taskRoleIds = this.taskInfo.checkRoles?this.taskInfo.checkRoles.map((r) => r.id):[];
       return (
         this.isRegister &&
-        this.info.status != 3 &&
+        this.taskInfo.status != 3 &&
         userRoleIds.find((ur) => taskRoleIds.includes(ur))
       );
     },
@@ -236,13 +236,13 @@ export default {
     api.info(id).then((r) => {
       this.mode = mode;
       if (mode != "register") {
-        this.info = r.data;
+        this.taskInfo = r.data;
         return;
       }
 
       if (r.data.status == 3) {
         this.mode = "info";
-        this.info = r.data;
+        this.taskInfo = r.data;
         this.$message.info("任务已完成,将显示详情");
         return;
       }
@@ -255,7 +255,7 @@ export default {
           userRoleIds.find((ur) => taskRoleIds.includes(ur))) ||
         r.data.grantUserId == this.userId
       ) {
-        this.info = r.data;
+        this.taskInfo = r.data;
       } else {
         this.$message.warning("用户不能执行该任务");
         this.mode = "info";
@@ -267,7 +267,7 @@ export default {
     getLabel,
     onAddPoint() {
       this.pointIdsWhenAdd = [];
-      this.info.checkList.forEach((a) => {
+      this.taskInfo.checkList.forEach((a) => {
         a.itemList.forEach((i) => {
           i.pointList.forEach((p) => {
             this.pointIdsWhenAdd.push(p.pointId);
@@ -283,7 +283,7 @@ export default {
         if (this.pointIdsWhenAdd.indexOf(p.id) >= 0) {
           continue;
         }
-        let info = this.info;
+        let info = this.taskInfo;
         let area = info.checkList.find((a) => a.areaId === p.areaId);
         if (!area) {
           area = { areaId: p.areaId, areaName: p.areaName, itemList: [] };
@@ -340,8 +340,8 @@ export default {
       }
 
       if (area.itemList.length === 0) {
-        index = this.info.checkList.indexOf(area);
-        this.info.checkList.splice(index, 1);
+        index = this.taskInfo.checkList.indexOf(area);
+        this.taskInfo.checkList.splice(index, 1);
       }
     },
     onImageChanged(point, value) {
@@ -357,10 +357,10 @@ export default {
 
       api
         .grant({
-          planId: this.info.planId,
-          beCheckedOrgId: this.info.beCheckedOrgId,
-          taskId: this.info.id,
-          ymdDate: this.info.ymdDate,
+          planId: this.taskInfo.planId,
+          beCheckedOrgId: this.taskInfo.beCheckedOrgId,
+          taskId: this.taskInfo.id,
+          ymdDate: this.taskInfo.ymdDate,
           userId: selected[0].id,
         })
         .then((r) => {
@@ -372,8 +372,8 @@ export default {
       this.$refs.UserSelector.show();
     },
     onSave() {
-      this.info.isSubmit = 0;
-      api.submit(this.info).then((r) => {
+      this.taskInfo.isSubmit = 0;
+      api.submit(this.taskInfo).then((r) => {
         this.$message.info("保存成功");
       });
     },
@@ -391,9 +391,10 @@ export default {
         }
       }
       if (isOk) {
-        this.info.isSubmit = 1;
-        api.submit(this.info).then((r) => {
+        this.taskInfo.isSubmit = 1;
+        api.submit(this.taskInfo).then((r) => {
           this.$message.info("提交成功");
+          this.$tab.closePageAndPushPrev();
         });
       }
     },