Explorar el Código

SAI开项申请流程:登记人部门筛选条件调整、评估阶段可修改申请内容

wangggziwen hace 2 años
padre
commit
6ef1d6d6f4

+ 113 - 46
ui/src/views/approve/approveDetail/sai-apply-detail.vue

@@ -13,6 +13,7 @@
           <el-descriptions-item label="登记人部门">
             <el-form-item prop="applicantDept">
               <el-select
+                disabled
                 v-model="dataForm.applicantDept"
                 placeholder="请选择部门">
                 <el-option
@@ -27,6 +28,7 @@
           <el-descriptions-item label="登记人班组">
             <el-form-item prop="applicantTeam">
               <el-select
+                disabled
                 v-model="dataForm.applicantTeam"
                 placeholder="请选择班组">
                 <el-option
@@ -41,6 +43,7 @@
           <el-descriptions-item label="登记人">
             <el-form-item prop="applicant">
               <el-select
+                disabled
                 v-model="dataForm.applicant"
                 placeholder="请选择登记人">
                 <el-option
@@ -54,7 +57,7 @@
           </el-descriptions-item>
           <el-descriptions-item label="问题描述" :span="3">
             <el-form-item prop="description">
-              <el-input v-model="dataForm.description" placeholder="请输入问题描述" type="textarea" :rows="3"/>
+              <el-input :disabled="applyDisabled" v-model="dataForm.description" placeholder="请输入问题描述" type="textarea" :rows="3"/>
             </el-form-item>
           </el-descriptions-item>
           <el-descriptions-item label="附件" :span="3">
@@ -96,20 +99,14 @@
                     icon="el-icon-download"
                     @click="handleDownload(scope.row)"
                   >{{ $t('下载') }}</el-button>
-                  <el-button
-                    size="mini"
-                    type="text"
-                    icon="el-icon-delete"
-                    @click="handleDeleteDoc(scope.row)"
-                  >{{ $t('删除') }}</el-button>
                 </template>
               </el-table-column>
             </el-table>
           </el-descriptions-item>
           <el-descriptions-item label="隐患" :span="3">
-            <el-radio v-model="unsafeChoice" label="1" style="margin-right: 10px;">不安全状态</el-radio>
+            <el-radio v-model="unsafeChoice" label="1" style="margin-right: 10px;" :disabled="applyDisabled">不安全状态</el-radio>
             <el-form-item prop="unsafeStatus" style="display: inline-block;">
-              <el-select v-model="dataForm.unsafeStatus" placeholder="请选择不安全状态" style="margin-right: 20px;" :disabled="unsafeStatusDisabled">
+              <el-select :disabled="applyDisabled" v-model="dataForm.unsafeStatus" placeholder="请选择不安全状态" style="margin-right: 20px;">
                 <el-option
                   v-for="dict in unsafeStatusOptions"
                   :key="dict.dictValue"
@@ -118,9 +115,9 @@
                 ></el-option>
               </el-select>
             </el-form-item>
-            <el-radio v-model="unsafeChoice" label="2" style="margin-right: 10px;">不安全行为</el-radio>
+            <el-radio v-model="unsafeChoice" label="2" style="margin-right: 10px;" :disabled="applyDisabled">不安全行为</el-radio>
             <el-form-item prop="unsafeAction" style="display: inline-block;">
-              <el-select v-model="dataForm.unsafeAction" placeholder="请选择不安全行为" :disabled="unsafeActionDisabled">
+              <el-select :disabled="applyDisabled" v-model="dataForm.unsafeAction" placeholder="请选择不安全行为">
                 <el-option
                   v-for="dict in unsafeActionOptions"
                   :key="dict.dictValue"
@@ -133,6 +130,7 @@
           <el-descriptions-item label="登记时间">
             <el-form-item prop="applyDate">
               <el-date-picker
+                disabled
                 clearable
                 size="small"
                 style="width: 200px"
@@ -151,6 +149,7 @@
           <el-descriptions-item label="预计完成时间" :span="2">
             <el-form-item prop="estimateFinishDate">
               <el-date-picker
+                :disabled="assessDisabled"
                 clearable
                 size="small"
                 style="width: 200px"
@@ -163,8 +162,8 @@
           </el-descriptions-item>
           <el-descriptions-item label="是否录入开项系统">
             <el-form-item prop="isRecorded">
-              <el-radio v-model="dataForm.isRecorded" label="1" @change="handleIsRecordedChange">是</el-radio>
-              <el-radio v-model="dataForm.isRecorded" label="0" @change="handleIsRecordedChange">否</el-radio>
+              <el-radio :disabled="assessDisabled" v-model="dataForm.isRecorded" label="1" @change="handleIsRecordedChange">是</el-radio>
+              <el-radio :disabled="assessDisabled" v-model="dataForm.isRecorded" label="0" @change="handleIsRecordedChange">否</el-radio>
             </el-form-item>
           </el-descriptions-item>
           <el-descriptions-item label="开项编号">
@@ -174,12 +173,13 @@
           </el-descriptions-item>
           <el-descriptions-item label="采取的措施" :span="2">
             <el-form-item prop="reaction">
-              <el-input v-model="dataForm.reaction" placeholder="请输入采取的措施" type="textarea" :rows="3"/>
+              <el-input :disabled="assessDisabled" v-model="dataForm.reaction" placeholder="请输入采取的措施" type="textarea" :rows="3"/>
             </el-form-item>
           </el-descriptions-item>
           <el-descriptions-item label="整改负责人">
             <el-form-item prop="executor">
               <el-select
+                :disabled="assessDisabled"
                 clearable
                 v-model="dataForm.executor"
                 placeholder="请选择整改负责人">
@@ -195,6 +195,7 @@
           <el-descriptions-item label="验证人">
             <el-form-item prop="inspector1" style="display: inline-block;">
               <el-select
+                :disabled="assessDisabled"
                 clearable
                 v-model="inspector1"
                 placeholder="请选择验证人"
@@ -209,6 +210,7 @@
             </el-form-item>
             <el-form-item prop="inspector2" style="display: inline-block;">
               <el-select
+                :disabled="assessDisabled"
                 clearable
                 v-model="inspector2"
                 placeholder="请选择验证人">
@@ -223,8 +225,8 @@
           </el-descriptions-item>
           <el-descriptions-item label="是否需要VE验证" :span="2">
             <el-form-item prop="needVe">
-              <el-radio v-model="dataForm.needVe" label="1" @change="handleNeedVeChange">是</el-radio>
-              <el-radio v-model="dataForm.needVe" label="0" @change="handleNeedVeChange">否</el-radio>
+              <el-radio :disabled="assessDisabled" v-model="dataForm.needVe" label="1" @change="handleNeedVeChange">是</el-radio>
+              <el-radio :disabled="assessDisabled" v-model="dataForm.needVe" label="0" @change="handleNeedVeChange">否</el-radio>
             </el-form-item>
           </el-descriptions-item>
           <el-descriptions-item label="VE验证条款" :span="2">
@@ -248,23 +250,25 @@
         <h4>执行详情</h4>
         <el-descriptions title="" border>
           <el-descriptions-item label="附件">
-            <el-upload
-              ref="doc"
-              :limit="50"
-              :headers="doc.headers"
-              :action="doc.url + '?pType=saiExecute&pId=' + doc.pId"
-              :disabled="doc.isUploading"
-              :on-progress="handleFileDocProgress"
-              :on-success="handleFileDocSuccess"
-              :auto-upload="true"
-              drag
-            >
+            <span v-if="!executeDisabled">
+              <el-upload
+                ref="doc"
+                :limit="50"
+                :headers="doc.headers"
+                :action="doc.url + '?pType=saiExecute&pId=' + doc.pId"
+                :disabled="doc.isUploading"
+                :on-progress="handleFileDocProgress"
+                :on-success="handleFileDocSuccess"
+                :auto-upload="true"
+                drag
+              >
               <i class="el-icon-upload"></i>
               <div class="el-upload__text">
                 {{ $t('将文件拖到此处,或') }}
                 <em>{{ $t('点击上传') }}</em>
               </div>
             </el-upload>
+            </span>
             <el-table :data="doc.commonfileListExecute" border>
               <el-table-column :label="$t('文件名')" align="center" prop="fileName" :show-overflow-tooltip="true">
                 <template slot-scope="scope">
@@ -308,6 +312,7 @@
                     type="text"
                     icon="el-icon-delete"
                     @click="handleDeleteDoc(scope.row)"
+                    v-if="!executeDisabled"
                   >{{ $t('删除') }}</el-button>
                 </template>
               </el-table-column>
@@ -320,33 +325,35 @@
         <el-descriptions title="" :column="3" border>
           <el-descriptions-item label="VC/VE验证成果" :span="3">
             <el-form-item prop="veResult">
-              <el-radio v-model="dataForm.veResult" label="1">合格</el-radio>
-              <el-radio v-model="dataForm.veResult" label="0">不合格</el-radio>
+              <el-radio :disabled="inspectDisabled" v-model="dataForm.veResult" label="1">合格</el-radio>
+              <el-radio :disabled="inspectDisabled" v-model="dataForm.veResult" label="0">不合格</el-radio>
             </el-form-item>
           </el-descriptions-item>
           <el-descriptions-item label="备注" :span="3">
             <el-form-item prop="remarks">
-              <el-input v-model="dataForm.remarks" placeholder="请输入备注" type="textarea" :rows="3"/>
+              <el-input :disabled="inspectDisabled" v-model="dataForm.remarks" placeholder="请输入备注" type="textarea" :rows="3"/>
             </el-form-item>
           </el-descriptions-item>
           <el-descriptions-item label="附件" :span="3">
-            <el-upload
-              ref="doc"
-              :limit="50"
-              :headers="doc.headers"
-              :action="doc.url + '?pType=saiInspect&pId=' + doc.pId"
-              :disabled="doc.isUploading"
-              :on-progress="handleFileDocProgress"
-              :on-success="handleFileDocSuccess"
-              :auto-upload="true"
-              drag
-            >
+            <span v-if="!inspectDisabled">
+              <el-upload
+                ref="doc"
+                :limit="50"
+                :headers="doc.headers"
+                :action="doc.url + '?pType=saiInspect&pId=' + doc.pId"
+                :disabled="doc.isUploading"
+                :on-progress="handleFileDocProgress"
+                :on-success="handleFileDocSuccess"
+                :auto-upload="true"
+                drag
+              >
               <i class="el-icon-upload"></i>
               <div class="el-upload__text">
                 {{ $t('将文件拖到此处,或') }}
                 <em>{{ $t('点击上传') }}</em>
               </div>
             </el-upload>
+            </span>
             <el-table :data="doc.commonfileListInspect" border>
               <el-table-column :label="$t('文件名')" align="center" prop="fileName" :show-overflow-tooltip="true">
                 <template slot-scope="scope">
@@ -390,6 +397,7 @@
                     type="text"
                     icon="el-icon-delete"
                     @click="handleDeleteDoc(scope.row)"
+                    v-if="!inspectDisabled"
                   >{{ $t('删除') }}</el-button>
                 </template>
               </el-table-column>
@@ -404,18 +412,18 @@
       <el-table :data="historyList" border v-loading="historyLoading" style="width: 100%;">
         <el-table-column prop="taskName" header-align="center" align="center"
                          :label="$t('流程进度')"></el-table-column>
+        <el-table-column prop="comment" header-align="center" align="center"
+                         :label="$t('审批意见')"></el-table-column>
         <el-table-column prop="userName" header-align="center" align="center" :label="$t('姓名')"></el-table-column>
         <el-table-column prop="taskCreateTime" header-align="center" align="center"
                          :label="$t('开始时间')"></el-table-column>
         <el-table-column prop="taskEndTime" header-align="center" align="center"
                          :label="$t('结束时间')"></el-table-column>
-        <el-table-column prop="comment" header-align="center" align="center"
-                         :label="$t('审批意见')"></el-table-column>
       </el-table>
     </div>
     <!-- 流程操作 -->
     <div slot="footer" class="dialog-footer">
-      <el-button v-if="taskName != null && dataForm.veResult != '0'" @click="dataFormSave()">{{ $t('保存') }}</el-button>
+      <el-button v-if="taskName != null && dataForm.applyStatus != 4 && dataForm.applyStatus != 5" @click="dataFormSave()">{{ $t('保存') }}</el-button>
       <el-button type="success" v-if="taskName != null && dataForm.veResult != '0'" @click="dataFormSubmit(1)">{{ $t('通过') }}</el-button>
       <el-button type="danger" v-if="taskName == '验收' && dataForm.veResult == '0'" @click="dataFormSubmit(2)">{{ $t('驳回') }}</el-button>
       <el-button type="info" v-if="taskName == '评估'" @click="dataFormSubmit(0)">{{ $t('中止') }}</el-button>
@@ -632,6 +640,14 @@ export default {
       unsafeStatusDisabled: false,
       // 是否禁用不安全行为下拉框
       unsafeActionDisabled: true,
+      // 是否禁用申请
+      applyDisabled: false,
+      // 是否禁用评估
+      assessDisabled: false,
+      // 是否禁用执行
+      executeDisabled: false,
+      // 是否禁用验收
+      inspectDisabled: false,
     }
   },
   methods: {
@@ -689,28 +705,50 @@ export default {
           this.unsafeChoice = '2';
           this.dataForm.unsafeAction = this.dataForm.unsafeAction.toString();
         }
+        if (this.dataForm.veResult == null) {
+          this.dataForm.veResult = '1';
+        }
         let applyStatus = this.dataForm.applyStatus;
+        console.log(applyStatus);
         switch (applyStatus) {
           case 1:
             this.showAssess = true;
+            this.assessDisabled = false;
+            this.applyDisabled = false;
             break;
           case 2:
             this.showAssess = true;
             this.showExecute = true;
+            this.applyDisabled = true;
+            this.assessDisabled = true;
+            this.executeDisabled = false;
+            this.recordNoDisabled = true;
+            this.veItemsDisabled = true;
+            this.veItemOtherDisabled = true;
+            this.dataForm.veResult = '1';
             break;
           case 3:
             this.showAssess = true;
             this.showExecute = true;
             this.showInspect = true;
-            this.dataForm.veResult = '1';
+            this.applyDisabled = true;
+            this.assessDisabled = true;
+            this.executeDisabled = true;
+            this.veItemsDisabled = true;
+            this.veItemOtherDisabled = true;
             break;
           case 4:
             this.showAssess = true;
             this.showExecute = true;
             this.showInspect = true;
+            this.applyDisabled = true;
+            this.assessDisabled = true;
+            this.executeDisabled = true;
+            this.inspectDisabled = true;
             break;
           case 5:
             this.showAssess = true;
+            this.assessDisabled = true;
             break;
         }
       });
@@ -982,7 +1020,7 @@ export default {
         let deptList = response.data;
         this.applicantDeptOptions = [];
         for (let i = 0; i < deptList.length; i++) {
-          if (deptList[i].ancestors.indexOf("100") != -1 || deptList[i].id == 100) {
+          if (deptList[i].deptId == 103 || deptList[i].deptId == 10058 || deptList[i].deptId == 10042) {
             this.applicantDeptOptions.push({
               dictLabel: deptList[i].deptName,
               dictValue: deptList[i].deptId
@@ -1167,4 +1205,33 @@ export default {
     color: #606266;
     padding: 5px 0px;
   }
+  ::v-deep .el-input.is-disabled .el-input__inner {
+    color: #606266;
+    background-color: transparent;
+  }
+  ::v-deep .el-textarea.is-disabled .el-textarea__inner {
+    color: #606266;
+    background-color: transparent;
+  }
+  ::v-deep .el-radio__input.is-checked + .el-radio__label {
+    color: #4a7cf9;
+  }
+  ::v-deep .el-radio__input.is-disabled.is-checked .el-radio__inner {
+    background-color: #4a7cf9;
+    border-color: #4a7cf9;
+  }
+  ::v-deep .el-radio__input.is-disabled.is-checked .el-radio__inner::after {
+    background-color: #fff;
+  }
+  ::v-deep .el-checkbox__input.is-disabled + span.el-checkbox__label {
+    color: #606266;
+    cursor: not-allowed;
+  }
+  ::v-deep .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner {
+    background-color: #4a7cf9;
+    border-color: #4a7cf9;
+  }
+  ::v-deep .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after {
+    border-color: #fff;
+  }
 </style>

+ 18 - 2
ui/src/views/production/apply/all/index.vue

@@ -451,6 +451,17 @@ export default {
   name: "Apply",
   components: { Treeselect, SaiApplyDetail, ProcessImg },
   data() {
+    var validateApplicantTeam = (rule, value, callback) => {
+      if (this.form.applicantDept == '103') {
+        if (this.form.applicantTeam == null) {
+          return callback(new Error('登记人班组不能为空'));
+        } else {
+          return callback();
+        }
+      } else {
+        return callback();
+      }
+    };
     var validateUnsafeStatus = (rule, value, callback) => {
       if (this.unsafeChoice == '1') {
         if (this.form.unsafeStatus == null) {
@@ -474,6 +485,8 @@ export default {
       }
     };
     return {
+      // 当前登录员工
+      loginStaffInfo: {},
       //图片集合   打开关闭按钮 等等
       imgs:[],
       jpgList:[],
@@ -597,7 +610,7 @@ export default {
           { required: true, message: this.$t('登记人部门') + this.$t('不能为空'), trigger: "change" }
         ],
         applicantTeam: [
-          { required: true, message: this.$t('登记人班组') + this.$t('不能为空'), trigger: "change" }
+          { validator: validateApplicantTeam, trigger: 'change' }
         ],
         applicant: [
           { required: true, message: this.$t('登记人') + this.$t('不能为空'), trigger: "change" }
@@ -671,6 +684,8 @@ export default {
     this.getDicts("SAI_UNSAFE_ACTION").then(response => {
       this.unsafeActionOptions = response.data;
     });
+    // 加载当前登录员工信息
+    this.getLoginStaffInfo();
   },
   methods: {
     /** 文件下载处理 */
@@ -854,6 +869,7 @@ export default {
       getLoginStaffInfo().then(response => {
         let staff = response.data;
         if (staff != null) {
+          this.loginStaffInfo = response.data;
           this.form.applicantDept = staff.deptId;
           if (staff.deptId == '103') {
             this.form.applicantTeam = staff.team;
@@ -868,7 +884,7 @@ export default {
         let deptList = response.data;
         this.applicantDeptOptions = [];
         for (let i = 0; i < deptList.length; i++) {
-          if (deptList[i].ancestors.indexOf("100") != -1 || deptList[i].id == 100) {
+          if (deptList[i].deptId == 103 || deptList[i].deptId == 10058 || deptList[i].deptId == 10042) {
             this.applicantDeptOptions.push({
               dictLabel: deptList[i].deptName,
               dictValue: deptList[i].deptId