Преглед на файлове

Merge branch 'leb-web-dev' of http://192.168.1.43:3000/v3/v3-lab-web into leb-web-dev

dedsudiyu преди 8 месеца
родител
ревизия
3892ef169e

+ 16 - 0
src/api/integratedManagement/index.js

@@ -492,6 +492,22 @@ export function laboratoryInfoBrandGetClassifyBySubId(query) {
     params: query
   })
 }
+//安全信息配置-详情
+export function laboratoryBrandDetailDetail(query) {
+  return request({
+    url: '/laboratory/brandDetail/detail',
+    method: 'get',
+    params: query
+  })
+}
+// 安全信息类目-信息配置-危险源列表
+export function laboratoryBrandDetailGetDetailHazardConfig(query) {
+  return request({
+    url: '/laboratory/brandDetail/getDetailHazardConfig',
+    method: 'get',
+    params: query
+  })
+}
 /******************* 布局管理 *********************/
 
 //根据楼层获取房间列表

+ 91 - 32
src/views/integratedManagement/laboratoryManagement/safetyInfoCategory/addSafetyInfoConfig.vue

@@ -46,15 +46,16 @@
           <p class="danger-tip">实验室危险源满足以下分类配置,会在信息牌中自动显示此安全信息。</p>
         </el-form-item>
         <div class="danger-table">
-          <el-table class="table-box" v-loading="loading" border :data="dataList"  ref="table-box">
+          <el-table class="table-box" v-loading="loading" border :data="form.listHazardModel"  ref="table-box">
             <el-table-column label="序号" type="index" align="center" width="50"/>
-            <el-table-column label="危险源主分类"  align="left" prop="applyUserName" show-overflow-tooltip/>
-            <el-table-column label="危险源子分类"  align="left" prop="subName" show-overflow-tooltip/>
+            <el-table-column label="危险源主分类"  align="left" prop="hazardName" show-overflow-tooltip/>
+            <el-table-column label="危险源子分类"  align="left" prop="hazardCodeName" show-overflow-tooltip/>
             <el-table-column label="操作" width="120" align="left">
               <template slot-scope="scope">
                 <div class="table-button-box">
                   <p class="table-button-null"></p>
                   <p class="table-button-p"
+                   @click="delHazard(scope.row)"
                   >删除</p>
                   <p class="table-button-null"></p>
                 </div>
@@ -69,12 +70,12 @@
       <div class="classify-name"><i>*</i>选择危险源分类:</div>
       <div class="classify">
         <div class="classify-li" v-for="(item,index) in conditionList">
-          <div class="classify-li-l">{{item.bigClassName}}</div>
+          <div class="classify-li-l">{{item.hazardName}}</div>
           <div class="classify-li-r">
             <p><el-checkbox v-model="item.checkAll" @change="handleCheckAllChange($event,item)">{{item.allName}}</el-checkbox></p>
             <p>
               <el-checkbox-group v-model="item.checkedCities" @change="handleCheckedCitiesChange($event,item)">
-                <el-checkbox v-for="item2 in item.smallClassList" :label="item2.smallClassName" :key="item2.smallClassValue">{{item2.smallClassName}}</el-checkbox>
+                <el-checkbox v-for="item2 in item.dictItemModels" :label="item2.label" :key="item2.value">{{item2.label}}</el-checkbox>
               </el-checkbox-group>
             </p>
           </div>
@@ -83,7 +84,7 @@
       <div slot="footer" class="dialog-footer dialog-footer-box">
         <p class="dialog-footer-button-null"></p>
         <p class="dialog-footer-button-info" @click="cancel">取消</p>
-        <p class="dialog-footer-button-primary" @click="submitForm">提交</p>
+        <p class="dialog-footer-button-primary" @click="conditionSubmitForm">保存</p>
         <p class="dialog-footer-button-null"></p>
       </div>
     </el-dialog>
@@ -91,11 +92,11 @@
 </template>
 
 <script>
-  import {
-    laboratoryBrandDetailAdd,
-    laboratoryBrandDetailUpdate,
-    laboratoryInfoBrandList
-  } from '@/api/integratedManagement'
+import {
+  laboratoryBrandDetailAdd, laboratoryBrandDetailGetDetailHazardConfig,
+  laboratoryBrandDetailUpdate,
+  laboratoryInfoBrandList
+} from '@/api/integratedManagement'
   import { getToken } from '@/utils/auth'
   export default {
     name: 'addPage',
@@ -118,23 +119,12 @@
           infoType:'',
           infoContent:'',
           isCollective:'',
+          listHazardModel:[],
         },
         dataList:[],
         dialogVisible:false,
-        conditionList:[
-          {
-            bigClassName:'化学品',
-            allName:'全选',
-            checkAll:true,
-            smallClassList:[
-              {
-                smallClassName:'剧毒',
-                smallClassValue:'剧毒',
-              }
-            ]
+        conditionList:[],
 
-          }
-        ],
         // 表单校验
         rules: {
           infoName: [
@@ -150,10 +140,12 @@
       }
     },
     created(){
-      this.form = this.propsData
+      this.form = this.propsData;
+
     },
     mounted(){
       this.getCategoryList();
+      this.laboratoryBrandDetailGetDetailHazardConfig();
     },
     methods:{
       dangerAdd(){
@@ -162,17 +154,15 @@
       //全选按钮
       handleCheckAllChange(val,item) {
         let name=[];
-        for (let i=0;i<item.smallClassList.length;i++){
-          name.push(item.smallClassList[i].smallClassName)
+        for (let i=0;i<item.dictItemModels.length;i++){
+          name.push(item.dictItemModels[i].label)
         }
         item.checkedCities = val ? name : [];
       },
       //单个选择按钮
       handleCheckedCitiesChange(value,item) {
-        console.log(value)
-        console.log(item)
         let checkedCount = value.length;
-        item.checkAll = checkedCount === item.smallClassList.length;
+        item.checkAll = checkedCount === item.dictItemModels.length;
       },
       // 取消按钮
       cancel() {
@@ -187,6 +177,75 @@
           }
         })
 
+      },
+      //获取危险源列表
+      laboratoryBrandDetailGetDetailHazardConfig(){
+        let self=this;
+        laboratoryBrandDetailGetDetailHazardConfig({dictCode:'lab_dangerous_source'}).then( response => {
+
+          if (this.propsData.detailId){//编辑
+            response.data.forEach(function(item){
+              item.allName='全选';
+              item.checkAll=false;
+              item.checkedCities=[];
+            })
+
+            response.data.forEach(function(item){
+              let list=[];
+              //详情返回的数组
+              self.form.listHazardModel.forEach(function(item2) {
+                let hazardCodeName=item2.hazardCodeName.split(',')
+                if (item.hazardKey==item2.hazardKey){
+                  if (item.dictItemModels.length ==hazardCodeName.length){
+                    item.checkAll=true;
+                  }
+                  item.checkedCities=hazardCodeName;
+                }
+              })
+
+            })
+          }else{//新增
+            response.data.forEach(function(item){
+              item.allName='全选';
+              item.checkAll=false;
+              item.checkedCities=['1'];
+            })
+          }
+          this.$set(this,'conditionList',response.data)
+
+        });
+      },
+      //删除危险源
+      delHazard(row){
+        this.form.listHazardModel = this.form.listHazardModel.filter(item => item !== row);
+      },
+      //危险源保存
+      conditionSubmitForm(){
+        //分类认定条件数据筛选
+        let list=[];
+        this.conditionList.forEach(function(item) {
+          let list2=[];
+          let list3=[];
+          if (item.checkedCities.length>0){
+            item.dictItemModels.forEach(function(item2) {
+              item.checkedCities.forEach(function(item3) {
+                if (item3==item2.label){
+                  list2.push(item2.value)
+                  list3.push(item2.label)
+                }
+              })
+            })
+            list.push({hazardKey:item.hazardKey,hazardName:item.hazardName,hazardCode:list2.join(','),hazardCodeName:list3.join(',')})
+          }
+        })
+        if(!list[0]){
+          this.msgError('请勾选危险源分类')
+          return
+        }
+        this.$set(this.form, 'listHazardModel',list)
+        this.$set(this, 'dialogVisible',false)
+
+
       },
       //查询信息类目列表
       getCategoryList(){
@@ -214,13 +273,13 @@
               laboratoryBrandDetailUpdate(this.form).then( response => {
                 this.msgSuccess(response.message);
                 this.open = false;
-                this.getList();
+                this.$parent.handleClick('','','back');
               });
             } else {
               laboratoryBrandDetailAdd(this.form).then( response => {
                 this.msgSuccess(response.message);
                 this.open = false;
-                this.getList();
+                this.$parent.handleClick('','','back');
               });
             }
           }

+ 28 - 142
src/views/integratedManagement/laboratoryManagement/safetyInfoCategory/safetyInfoConfig.vue

@@ -97,58 +97,20 @@
       </div>
     </div>
     <add-safety-info-config :propsData="propsData" v-if="pageType==2"></add-safety-info-config>
-    <!-- 添加或修改安全分级对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body :before-close="closeDialog" :close-on-click-modal="false">
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px" >
-        <el-form-item label="信息名称" prop="infoName">
-          <el-input v-model="form.infoName" maxlength="100" placeholder="请输入名称" style="width:320px;"/>
-        </el-form-item>
-        <el-form-item label="信息类目"  prop="brandId" class="form-item">
-          <el-select placeholder="请选择类目" v-model="form.brandId" style="width:320px;" @change="categoryClick()">
-            <el-option
-              v-for="dict in categoryList"
-              :key="dict.brandId"
-              :label="dict.brandName"
-              :value="dict.brandId"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="信息类型">
-          <el-input v-model="form.infoType==1?'文字':'图片'"   placeholder="" disabled style="width:320px;"/>
-        </el-form-item>
-        <el-form-item label="信息内容" prop="infoContent" v-if="form.infoType==1">
-          <el-input type="textarea" v-model="form.infoContent"  maxlength="200" placeholder="请输入内容" style="width:320px;"/>
-        </el-form-item>
-        <el-form-item label="信息内容" prop="infoContent" v-if="form.infoType==2">
-          <el-upload
-            class="certificate-avatar-uploader"
-            :action="uploadImgUrl"
-            :show-file-list="false"
-            :on-success="handleAvatarSuccess"
-            :headers="headers"
-            :before-upload="beforeAvatarUpload">
-            <div style="display: flex;">
-              <img v-if="form.infoContent" :src="form.infoContent" style="width: 80px;height: 80px;margin-right: 10px">
-              <i v-if="!form.infoContent" class="el-icon-plus avatar-uploader-icon"></i>
-            </div>
-          </el-upload>
-        </el-form-item>
-        <P v-if="form.infoType==2" style="margin-left: 80px">图片最大上传630*78,建议尺寸58*78</P>
-      </el-form>
-      <div slot="footer" class="dialog-footer dialog-footer-box">
-        <p class="dialog-footer-button-null"></p>
-        <p class="dialog-footer-button-info" @click="cancel">取消</p>
-        <p class="dialog-footer-button-primary" @click="submitForm">提交</p>
-        <p class="dialog-footer-button-null"></p>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
 import addSafetyInfoConfig from "./addSafetyInfoConfig";
 import { getToken } from "@/utils/auth";
-import { laboratoryInfoBrandList , laboratoryBrandDetailAdd, laboratoryBrandDetailList, laboratoryBrandDetailUpdate, laboratoryBrandDetailDelete } from '@/api/integratedManagement/index'
+import {
+  laboratoryInfoBrandList,
+  laboratoryBrandDetailAdd,
+  laboratoryBrandDetailList,
+  laboratoryBrandDetailUpdate,
+  laboratoryBrandDetailDelete,
+  laboratoryBrandDetailDetail, laboratoryClassTypeUpdate
+} from '@/api/integratedManagement/index'
 export default {
   name: "Approval",
   components: {
@@ -158,11 +120,6 @@ export default {
     return {
       tableButtonType:this.hasPermiDom(['lab:infoBrand:edit','lab:infoBrand:del',]),
       uploadImgUrl: this.uploadUrl(), // 上传的图片服务器地址
-      activeName: '',
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
       //页面状态
       pageType:1,
       loading:false,
@@ -185,26 +142,9 @@ export default {
       propsData:{},
       // 表单参数
       infoType:null,
-      form: {
-        brandId:'',
-        infoName:'',
-        infoType:'',
-        infoContent:'',
-        isCollective:'',
-      },
+
       currentIndex:0,
-      // 表单校验
-      rules: {
-        infoName: [
-          { required: true, message: "请输入名称", trigger: "blur" },
-        ],
-        brandId: [
-          { required: true, message: "请选择类目", trigger: "blur" },
-        ],
-        infoContent: [
-          { required: true, message: "请添加信息内容", trigger: "blur" },
-        ],
-      }
+
     };
 
 
@@ -213,11 +153,6 @@ export default {
       titleClick(type){
         this.$parent.titleClick(type);
       },
-
-      closeDialog(){
-        this.$refs['form'].clearValidate()
-        this.open=false
-      },
       handleTabClick(item,index){
         this.currentIndex = index
         this.queryParams.brandId=item.brandId;
@@ -230,29 +165,29 @@ export default {
           let obj={
             brandId:this.queryParams.brandId,
             infoType:this.infoType,
+            listHazardModel:[],
           }
-         /*  this.title='新增安全信息';
-          this.$set(this,'form',{
-            brandId:this.queryParams.brandId,
-            infoType:this.infoType,
-            infoName:'',
-            infoContent:'',
-          });
-          this.open = true; */
           this.$set(this,'propsData',obj)
           this.$set(this,'pageType',2)
         }else if(doType=='edit'){//编辑
-          this.title='编辑安全信息';
-          this.$set(this,'form',{
-            detailId:row.detailId,
-            brandId:row.brandId,
-            infoName:row.infoName,
-            infoType:row.infoType,
-            infoContent:row.infoContent,
-            isCollective:row.isCollective,
-            orderNum:row.orderNum,
+
+          laboratoryBrandDetailDetail({detailId:row.detailId}).then( response => {
+             if (response.code==200){
+               let obj={
+                 detailId:response.data.detailId,
+                 brandId:response.data.brandId,
+                 infoName:response.data.infoName,
+                 infoType:response.data.infoType,
+                 infoContent:response.data.infoContent,
+                 isCollective:response.data.isCollective,
+                 orderNum:response.data.orderNum,
+                 listHazardModel:response.data.listHazardModel,
+               }
+               this.$set(this,'propsData',obj)
+               this.$set(this,'pageType',2)
+             }
           });
-          this.open = true;
+
         }else if(doType=='deploy'){//信息牌配置
           //self.pageType=2;
         }else if(doType=='delete'){//删除
@@ -337,55 +272,6 @@ export default {
         this.$refs['form'].clearValidate()
         this.open = false;
       },
-      /** 提交按钮 */
-      submitForm() {
-        this.$refs["form"].validate(valid => {
-          if (valid) {
-            if (this.form.detailId) {
-              laboratoryBrandDetailUpdate(this.form).then( response => {
-                this.msgSuccess(response.message);
-                this.open = false;
-                this.getList();
-              });
-            } else {
-              laboratoryBrandDetailAdd(this.form).then( response => {
-                this.msgSuccess(response.message);
-                this.open = false;
-                this.getList();
-              });
-            }
-          }
-        });
-      },
-      //上传
-      handleAvatarSuccess(res, file) {
-        this.form.infoContent = res.data.url;
-        this.$forceUpdate()
-      },
-      beforeAvatarUpload(file) {
-        return new Promise((resolve, reject) => {
-          if (file.type == 'image/png') {
-            let reader = new FileReader()
-            reader.readAsDataURL(file) // 必须用file.raw
-            reader.onload = e => { // 让页面中的img标签的src指向读取的路径
-              let img = e.target.result;
-              const image = new Image()
-              image.src=img
-              image.onload = _=>{
-                if(image.width <= 630 && image.height <= 78){
-                  resolve()
-                }else{
-                  this.msgError('尺寸限制为最大630*78px,支持PNG格式')
-                  reject();
-                }
-              }
-            }
-          }else{
-            this.msgError('请上传PNG格式');
-            reject();
-          }
-        })
-      },
       //查询信息类目列表
       getCategoryList(){
         let obj={

+ 3 - 0
src/views/integratedManagement/laboratoryManagement/subject/addSubject.vue

@@ -765,6 +765,9 @@ import { chemicalMsdsEdit } from '@/api/chemicalManage'
           let self=this;
           laboratoryTypeConfigGetList().then(response => {
             if (this.subjectData.typeId){
+              response.data.forEach(function(item) {
+                item.selected=false;
+              })
               response.data.forEach(function(item) {
                 if (item.typeId==self.subjectData.typeId){
                   item.selected=true;