cyy пре 3 недеља
родитељ
комит
2b27c23d5e
2 измењених фајлова са 171 додато и 105 уклоњено
  1. 2 2
      src/views/platform/risk/riskDetail.vue
  2. 169 103
      src/views/platform/risk/riskV2.vue

+ 2 - 2
src/views/platform/risk/riskDetail.vue

@@ -535,7 +535,7 @@ export default {
       Ids: [],
       fengXianJiSuan: [],
       muban: '2',
-      leixing: '安全',
+      leixing: '质量',
       riskResponse: ['风险降低', '风险接受', '风险回避'],
       pzYishanIds: [],
       tableCloumns: {
@@ -857,7 +857,7 @@ export default {
             (this.muban === '2' && jianCeData.length === 0)
           ) {
             throw new Error(
-              `检测到风险类型为${this.leixing}且计算方式为'${
+              `检测到计算方式为'${
                 this.culWays[this.muban] || this.muban
               }'的配置数据不完整,建议配置完成后再使用!`
             )

+ 169 - 103
src/views/platform/risk/riskV2.vue

@@ -25,21 +25,24 @@
           :column="5"
           border
           size="mini"
+          class="risk-fx-form-desc"
         >
           <el-descriptions-item label="年度" class="aaaa">
-            <span class="required-star">*</span>
-            <el-date-picker
-              v-model="infoFxssbData.nian_du_"
-              type="year"
-              placeholder="选择年"
-              :disabled="readonly"
-              value-format="yyyy"
-              size="mini"
-            />
+            <div class="desc-field-cell">
+              <span class="required-star">*</span>
+              <el-date-picker
+                v-model="infoFxssbData.nian_du_"
+                type="year"
+                placeholder="选择年"
+                :disabled="readonly"
+                value-format="yyyy"
+                size="mini"
+              />
+            </div>
           </el-descriptions-item>
 
           <el-descriptions-item label="编制部门">
-            <div style="display: flex">
+            <div class="desc-field-cell">
               <span class="required-star">*</span>
               <ibps-user-selector
                 v-model="infoFxssbData.bian_zhi_bu_men_"
@@ -62,116 +65,118 @@
               :disabled="true"
               :multiple="true"
               size="mini"
+              style="width: 100%"
             />
           </el-descriptions-item>
           <el-descriptions-item label="编制时间">
-            <span class="required-star">*</span>
-            <el-date-picker
-              v-model="infoFxssbData.bian_zhi_shi_jian"
-              type="datetime"
-              placeholder="选择日期时间"
-              :disabled="readonly"
-              value-format="yyyy-MM-dd HH:mm:ss"
-              size="mini"
-            />
+            <div class="desc-field-cell">
+              <span class="required-star">*</span>
+              <el-date-picker
+                v-model="infoFxssbData.bian_zhi_shi_jian"
+                type="datetime"
+                placeholder="选择日期时间"
+                :disabled="readonly"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                size="mini"
+              />
+            </div>
           </el-descriptions-item>
           <el-descriptions-item label="评估编号">
             {{ infoFxssbData.ji_hua_bian_hao_ }}
           </el-descriptions-item>
-          <el-descriptions-item label="组长">
-            <ibps-user-selector
-              type="user"
-              :value="infoFxssbData.zu_chang_id_"
-              readonly-text="text"
-              :disabled="true"
-              :multiple="true"
-              size="mini"
-              :filter="filter"
-              filtrate
-            />
-          </el-descriptions-item>
           <el-descriptions-item label="评估开始时间">
-            <span class="required-star">*</span>
-            <el-date-picker
-              v-model="infoFxssbData.kai_shi_ri_qi_"
-              type="date"
-              placeholder="选择日期"
-              :disabled="readonly"
-              value-format="yyyy-MM-dd"
-              size="mini"
-            />
+            <div class="desc-field-cell">
+              <span class="required-star">*</span>
+              <el-date-picker
+                v-model="infoFxssbData.kai_shi_ri_qi_"
+                type="date"
+                placeholder="选择日期"
+                :disabled="readonly"
+                value-format="yyyy-MM-dd"
+                size="mini"
+              />
+            </div>
           </el-descriptions-item>
           <el-descriptions-item label="评估结束时间">
-            <span class="required-star">*</span>
-            <el-date-picker
-              v-model="infoFxssbData.jie_shu_ri_qi_"
-              type="date"
-              placeholder="选择日期"
-              :disabled="readonly"
-              value-format="yyyy-MM-dd"
-              size="mini"
-            />
+            <div class="desc-field-cell">
+              <span class="required-star">*</span>
+              <el-date-picker
+                v-model="infoFxssbData.jie_shu_ri_qi_"
+                type="date"
+                placeholder="选择日期"
+                :disabled="readonly"
+                value-format="yyyy-MM-dd"
+                size="mini"
+              />
+            </div>
           </el-descriptions-item>
 
           <el-descriptions-item label="报告完成时间">
-            <span class="required-star">*</span>
-            <el-date-picker
-              v-model="infoFxssbData.bao_gao_shi_jian_"
-              type="date"
-              placeholder="选择日期"
-              :disabled="readonly"
-              value-format="yyyy-MM-dd"
-              size="mini"
-            />
-          </el-descriptions-item>
-          <el-descriptions-item label="风险类型">
-            <div>
-              <el-radio
-                v-model="infoFxssbData.feng_xian_lei_xin"
-                label="质量"
-                size="mini"
-                :disabled="isEdit"
-                >质量</el-radio
-              >
-              <el-radio
-                v-model="infoFxssbData.feng_xian_lei_xin"
-                label="安全"
+            <div class="desc-field-cell">
+              <span class="required-star">*</span>
+              <el-date-picker
+                v-model="infoFxssbData.bao_gao_shi_jian_"
+                type="date"
+                placeholder="选择日期"
+                :disabled="readonly"
+                value-format="yyyy-MM-dd"
                 size="mini"
-                :disabled="isEdit"
-                >安全</el-radio
-              >
+              />
             </div>
           </el-descriptions-item>
-          <el-descriptions-item label="时机" :span="1">
+          <el-descriptions-item label="评估时机" :span="1">
             <el-select
               v-model="infoFxssbData.shi_ji_"
               :disabled="readonly"
               placeholder="请选择"
               size="mini"
+              style="width: 100%"
             >
               <el-option
-                v-for="item in [
-                  '定期评估',
-                  '新增活动',
-                  '不良事件',
-                  '程序变化',
-                  '业务变化'
-                ]"
+                v-for="item in shiJiOptions"
                 :key="item"
                 :label="item"
                 :value="item"
               />
             </el-select>
           </el-descriptions-item>
+          <el-descriptions-item label="其他">
+            <div class="desc-field-cell">
+              <span v-if="isShiJiQiTa" class="required-star">*</span>
+              <el-input
+                v-model="infoFxssbData.qi_ta_"
+                :disabled="readonly || !isShiJiQiTa"
+                size="mini"
+                :placeholder="
+                  isShiJiQiTa
+                    ? '请填写其他评估时机说明'
+                    : '请先选择评估时机为「其他」'
+                "
+              />
+            </div>
+          </el-descriptions-item>
 
-          <el-descriptions-item label="范围" :span="onlyoneWay ? 2 : 1">
+          <el-descriptions-item label="评估负责人">
+            <ibps-user-selector
+              type="user"
+              :value="infoFxssbData.zu_chang_id_"
+              readonly-text="text"
+              :disabled="true"
+              :multiple="true"
+              size="mini"
+              style="width: 100%"
+              :filter="filter"
+              filtrate
+            />
+          </el-descriptions-item>
+          <el-descriptions-item label="评估范围" :span="onlyoneWay ? 2 : 1">
             <el-input
               v-model="infoFxssbData.fan_wei_"
               :disabled="readonly"
               size="mini"
             />
           </el-descriptions-item>
-          <el-descriptions-item label="方法" :span="onlyoneWay ? 2 : 1">
+          <el-descriptions-item label="评估方法" :span="onlyoneWay ? 2 : 1">
             <el-select
               v-model="infoFxssbData.fang_fa_"
               size="mini"
@@ -180,7 +185,7 @@
               filterable
               allow-create
               clearable
-              placeholder="请选择方法"
+              placeholder="请选择评估方法"
             >
               <el-option
                 v-for="item in fangFaOptions"
@@ -207,14 +212,14 @@
             </el-radio>
           </el-descriptions-item>
 
-          <el-descriptions-item label="目的" :span="5">
+          <el-descriptions-item label="评估目的" :span="5">
             <el-input
               v-model="infoFxssbData.mu_di_"
               :disabled="readonly"
               size="mini"
             />
           </el-descriptions-item>
-          <el-descriptions-item label="依据文件" :span="5">
+          <el-descriptions-item label="评估依据文件" :span="5">
             <!-- 模版弹窗 -->
             <ibps-custom-dialog
               v-if="!readonly"
@@ -223,7 +228,7 @@
               multiple
               type="dialog"
               class="custom-dialog"
-              placeholder="请选择依据文件"
+              placeholder="请选择评估依据文件"
               size="mini"
               icon="el-icon-search"
             />
@@ -239,10 +244,11 @@
               :disabled="readonly"
               value-format="yyyy-MM-dd HH:mm"
               size="mini"
+              style="width: 100%"
             />
           </el-descriptions-item>
           <el-descriptions-item label="参会人员" :span="4">
-            <div style="display: flex">
+            <div class="desc-field-cell">
               <ibps-user-selector
                 v-model="infoFxssbData.can_hui_ren_yuan_"
                 style="width: 100%"
@@ -273,8 +279,8 @@
               :disabled="readonly"
               size="mini"
           /></el-descriptions-item>
-          <el-descriptions-item label="评估人员 " :span="5">
-            <div style="display: flex">
+          <el-descriptions-item label="评估小组成员" :span="5">
+            <div class="desc-field-cell">
               <span class="required-star">*</span>
               <ibps-user-selector
                 v-model="infoFxssbData.ping_gu_ren_yuan_"
@@ -293,7 +299,7 @@
 
         <div v-if="isEdit" style="margin-top: 20px">
           <el-alert
-            title="根据评估人员选定的风险识别项给每个措施制定人推送风险改进流程"
+            title="根据评估小组成员选定的风险识别项给每个措施制定人推送风险改进流程"
             type="success"
             :closable="false"
           />
@@ -427,7 +433,8 @@ export default {
         kai_shi_ri_qi_: '',
         jie_shu_ri_qi_: '',
         bao_gao_shi_jian_: '',
-        feng_xian_lei_xin: '',
+        feng_xian_lei_xin: '质量',
+        qi_ta_: '',
         shi_ji_: '',
         fan_wei_: '',
         fang_fa_: '',
@@ -450,6 +457,13 @@ export default {
       preParams: {},
       Ids: [],
       culWays: { 1: '风险矩阵法', 2: 'FMEA法' },
+      shiJiOptions: [
+        '定期评估',
+        '业务变化',
+        '主要仪器设备变化',
+        '设施环境变化',
+        '其他'
+      ],
       fangFaOptions: [
         { value: '定量风险评估法', label: '定量风险评估法' },
         { value: '风险矩阵', label: '风险矩阵' },
@@ -470,6 +484,9 @@ export default {
     onlyoneWay() {
       const keys = Object.keys(this.culWays)
       return keys.length === 1
+    },
+    isShiJiQiTa() {
+      return this.infoFxssbData.shi_ji_ === '其他'
     }
   },
   watch: {
@@ -513,10 +530,17 @@ export default {
           } else {
             this.infoFxssbData.fan_wei_ = `本实验室与${val}相关所有活动`
             this.infoFxssbData.mu_di_ = `通过对实验室(${val}活动)进行风险评估,识别实验室在(${val}活动)方面存在的潜在风险,评估风险影响程度,制定风险管理策略,减少不利后果发生的概率和影响程度。`
-            this.infoFxssbData.shi_wu_shuo_ming_ = `年度:${this.infoFxssbData.nian_du_};组长:${this.infoFxssbData.zu_chang_};评估开始日期:${this.infoFxssbData.kai_shi_ri_qi_};风险类型:${val}`
+            this.infoFxssbData.shi_wu_shuo_ming_ = `年度:${this.infoFxssbData.nian_du_};评估负责人:${this.infoFxssbData.zu_chang_};评估开始日期:${this.infoFxssbData.kai_shi_ri_qi_}`
           }
         }
       }
+    },
+    'infoFxssbData.shi_ji_': {
+      handler(val) {
+        if (val !== '其他') {
+          this.infoFxssbData.qi_ta_ = ''
+        }
+      }
     }
   },
 
@@ -669,7 +693,7 @@ export default {
                 console.log('无需推送')
               }
 
-              // 3.推送给组长 评估报告流程
+              // 3.推送给评估负责人 评估报告流程
               const addParams2 = {
                 tableName: 't_fxkzbg',
                 paramWhere: [
@@ -701,7 +725,7 @@ export default {
               this.$message.success('提交成功')
               // 提醒用户推送信息
               this.$alert(
-                `需要改进项${addParams.paramWhere.length}条,已向其中的每位措施制定人推送风险改进流程,同时向组长 ${this.infoFxssbData.zu_chang_} 推送风险报告流程!`,
+                `需要改进项${addParams.paramWhere.length}条,已向其中的每位措施制定人推送风险改进流程,同时向评估负责人 ${this.infoFxssbData.zu_chang_} 推送风险报告流程!`,
                 '提交成功',
                 {
                   confirmButtonText: '确定',
@@ -712,7 +736,7 @@ export default {
               )
             } else {
               this.$message.warning(
-                '存在未完成风险识别项的评估人员,无法提交!'
+                '存在未完成风险识别项的评估小组成员,无法提交!'
               )
               return
             }
@@ -814,7 +838,7 @@ export default {
             allRequests.push(
               this.$common.sendMsg({
                 subject: '风险识别项待填写提醒',
-                content: `您有一份风险识别项待填写,请前往-风险控制-风险评估与措施页面填写,计划编号:${this.infoFxssbData.ji_hua_bian_hao_},组长:${this.infoFxssbData.zu_chang_}。如已提交请忽略。`,
+                content: `您有一份风险识别项待填写,请前往-风险控制-风险评估与措施页面填写,计划编号:${this.infoFxssbData.ji_hua_bian_hao_},评估负责人:${this.infoFxssbData.zu_chang_}。如已提交请忽略。`,
                 receiverId: item,
                 canreplay: '0',
                 skipTypeMsg: JSON.stringify({
@@ -868,7 +892,7 @@ export default {
       //     throw new Error('请填写参会人员!')
       // }
       if (!this.infoFxssbData.ping_gu_ren_yuan_) {
-        throw new Error('请填写评估人员!')
+        throw new Error('请填写评估小组成员!')
       }
       if (!this.infoFxssbData.bian_zhi_shi_jian) {
         throw new Error('请选择编制时间!')
@@ -879,6 +903,12 @@ export default {
       if (!this.infoFxssbData.ji_suan_fang_shi_) {
         throw new Error('请选择风险系数计算方式!')
       }
+      if (
+        this.infoFxssbData.shi_ji_ === '其他' &&
+        !this.infoFxssbData.qi_ta_?.trim()
+      ) {
+        throw new Error('评估时机为「其他」时请填写其他说明!')
+      }
     },
     async goAdd() {
       try {
@@ -976,9 +1006,11 @@ export default {
           await this.goEdit(flag)
         } else {
           this.$confirm(
-            `风险类型${
-              this.onlyoneWay ? '' : '和风险系数计算公式'
-            }保存后不可再修改,是否继续?`,
+            `${
+              this.onlyoneWay
+                ? '是否继续保存?'
+                : '风险系数计算公式保存后不可再修改,是否继续?'
+            }`,
             '提示',
             {
               confirmButtonText: '继续',
@@ -1069,6 +1101,9 @@ export default {
       this.isEdit = !!(this.params && this.params.id_)
       if (this.isEdit) {
         this.infoFxssbData = this.params
+        if (!this.infoFxssbData.feng_xian_lei_xin) {
+          this.infoFxssbData.feng_xian_lei_xin = '质量'
+        }
         console.log('infoFxssbData', this.infoFxssbData)
         this.preParams = JSON.parse(JSON.stringify(this.params))
         this.isPingGuRen =
@@ -1109,7 +1144,7 @@ export default {
           '通过对实验室(质量活动)进行风险评估,识别实验室在(质量活动)方面存在的潜在风险,评估风险影响程度,制定风险管理策略,减少不利后果发生的概率和影响程度。'
         this.infoFxssbData.hui_yi_shi_jian_ = dayjs().format('YYYY-MM-DD HH:mm')
         this.$nextTick(() => {
-          this.infoFxssbData.shi_wu_shuo_ming_ = `年度:${this.infoFxssbData.nian_du_};组长:${this.infoFxssbData.zu_chang_};评估开始日期:${this.infoFxssbData.kai_shi_ri_qi_};风险类型:${this.infoFxssbData.feng_xian_lei_xin}`
+          this.infoFxssbData.shi_wu_shuo_ming_ = `年度:${this.infoFxssbData.nian_du_};评估负责人:${this.infoFxssbData.zu_chang_};评估开始日期:${this.infoFxssbData.kai_shi_ri_qi_}`
         })
         // this.onlyoneWay &&
         // (
@@ -1138,6 +1173,21 @@ export default {
       box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
       padding: 10px;
       overflow-y: auto;
+
+      ::v-deep .risk-fx-form-desc {
+        .el-descriptions__table {
+          table-layout: fixed;
+          width: 100%;
+        }
+        .el-descriptions-item__content {
+          width: 100%;
+        }
+        .el-date-editor.el-input,
+        .el-select,
+        .el-input {
+          width: 100%;
+        }
+      }
     }
     .right {
       height: calc(100vh - 100px);
@@ -1153,6 +1203,22 @@ export default {
 .required-star {
   color: red;
   margin-right: 4px;
+  flex-shrink: 0;
+}
+.desc-field-cell {
+  display: flex;
+  align-items: center;
+  width: 100%;
+  min-width: 0;
+
+  ::v-deep .el-date-editor,
+  ::v-deep .el-select,
+  ::v-deep .el-input,
+  ::v-deep .ibps-user-selector {
+    flex: 1;
+    width: 100%;
+    min-width: 0;
+  }
 }
 .dialog-title {
   display: flex;