heyang 1 year ago
parent
commit
4e5b17f190

+ 104 - 0
src/api/chemicalManage/index.js

@@ -362,7 +362,111 @@ export function chemicalStockStockListBySubId(query) {
     params: query
   })
 }
+//预警通知-危险源预警-详情
+export function systemWarningConfigDetail(query) {
+  return request({
+    url: '/system/warningConfig/detail',
+    method: 'get',
+    params: query
+  })
+}
+//预警通知-危险源预警-修改
+export function systemWarningConfigUpdate(data) {
+  return request({
+    url: '/system/warningConfig/update',
+    method: 'post',
+    data: data
+  })
+}
+//预警通知-算法预警-详情
+export function systemConfigAlgorithmDetail(query) {
+  return request({
+    url: '/system/configAlgorithm/detail',
+    method: 'get',
+    params: query
+  })
+}
+//预警通知-算法预警-修改
+export function systemConfigAlgorithmUpdate(data) {
+  return request({
+    url: '/system/configAlgorithm/update',
+    method: 'post',
+    data: data
+  })
+}
 
+//预警通知-危险源预警-预警升级规则-新增
+export function systemConfigRuleAdd(data) {
+  return request({
+    url: '/system/configRule/add',
+    method: 'post',
+    data: data
+  })
+}
+//预警通知-危险源预警-预警升级规则-修改
+export function systemConfigRuleUpdate(data) {
+  return request({
+    url: '/system/configRule/update',
+    method: 'post',
+    data: data
+  })
+}
+//预警通知-危险源预警-预警升级规则-删除
+export function systemConfigRuleDelete(data) {
+  return request({
+    url: '/system/configRule/delete',
+    method: 'post',
+    data: data
+  })
+}
+//预警通知-危险源预警-预警升级规则-列表
+export function systemConfigRuleList(data) {
+  return request({
+    url: '/system/configRule/list',
+    method: 'post',
+    data: data
+  })
+}
+//预警通知-危险源预警-预警升级规则-详情
+export function systemConfigRuleDetail(query) {
+  return request({
+    url: '/system/configRule/detail',
+    method: 'get',
+    params: query
+  })
+}
+//预警通知-危险源预警-预警升级规则-启用停用
+export function systemConfigRuleEnableOrDisable(data) {
+  return request({
+    url: '/system/configRule/enableOrDisable',
+    method: 'post',
+    data: data
+  })
+}
+//使用台账-列表
+export function chemicalUserecordList(data) {
+  return request({
+    url: '/chemical/userecord/list',
+    method: 'post',
+    data: data
+  })
+}
+//使用台账-化学品柜列表
+export function chemicalCabinetSelect(data) {
+  return request({
+    url: '/chemical/cabinet/select',
+    method: 'post',
+    data: data
+  })
+}
+//使用台账-详情
+export function chemicalUserecordDetail(query) {
+  return request({
+    url: '/chemical/userecord/detail',
+    method: 'get',
+    params: query
+  })
+}
 
 
 

+ 1 - 1
src/views/chemicalManage/earlyWarningEvent/index.vue

@@ -105,7 +105,7 @@
       return {
         tableButtonType:this.hasPermiDom(['demo:demo:detail','demo:demo:edit','demo:demo:del',]),
         //页面状态
-        pageType:2,
+        pageType:1,
         //页面遮罩
         loading:false,
         //学院

+ 115 - 69
src/views/chemicalManage/useLedger/index.vue

@@ -17,19 +17,18 @@
             <el-form-item label="">
               <el-select style="width:180px;" v-model="queryParams.deptId" placeholder="请选择学院">
                 <el-option
-                  v-for="dict in deptList"
+                  v-for="dict in deptOptions"
                   :key="dict.deptId"
                   :label="dict.deptName"
                   :value="dict.deptId"
                 ></el-option>
               </el-select>
             </el-form-item>
-            <el-form-item label="">
+            <el-form-item label="" prop="floorId">
               <el-cascader
                 placeholder="请选择楼栋楼层"
-                style="width: 180px"
-                :props="{value: 'id', label: 'name',children:'buildFloorVoList'}"
-                v-model="queryParams.queryParamsData3"
+                :props="{value: 'id', label: 'name',children:'buildFloorVoList',checkStrictly: true}"
+                v-model="queryParams.buildIdAndfloorId"
                 :options="buildFloorOptions">
               </el-cascader>
             </el-form-item>
@@ -46,7 +45,7 @@
           </div>
           <div v-if="searchType">
             <el-form-item label="">
-              <el-select v-model="queryParams.state "  placeholder="请选择级别" style="width: 180px">
+              <el-select v-model="queryParams.chemicalLevel"  placeholder="请选择级别" style="width: 180px">
                 <el-option
                   v-for="dict in levelOptions"
                   :key="dict.value"
@@ -56,7 +55,7 @@
               </el-select>
             </el-form-item>
             <el-form-item label="">
-              <el-select v-model="queryParams.state "  placeholder="请选择类别" style="width: 180px">
+              <el-select v-model="queryParams.chemicalCategory"  placeholder="请选择类别" style="width: 180px">
                 <el-option
                   v-for="dict in categoryOptions"
                   :key="dict.value"
@@ -66,12 +65,12 @@
               </el-select>
             </el-form-item>
             <el-form-item label="">
-              <el-select v-model="queryParams.state "  placeholder="选择化学品柜" style="width: 180px">
+              <el-select v-model="queryParams.cabinetId"  placeholder="选择化学品柜" style="width: 180px">
                 <el-option
-                  v-for="dict in options"
-                  :key="dict.value"
-                  :label="dict.label"
-                  :value="dict.value"
+                  v-for="dict in cabinetOptions"
+                  :key="dict.cabinetId"
+                  :label="dict.cabinetName"
+                  :value="dict.cabinetId"
                 />
               </el-select>
             </el-form-item>
@@ -108,24 +107,40 @@
         <el-table class="table-box" v-loading="loading" border :data="dataList"
                   @selection-change="handleSelectionChange" ref="multipleTable" :row-key="getRowKeys">
           <el-table-column type="selection" width="50" fixed :reserve-selection="true" align="center"/>
-          <el-table-column label="化学品名称" align="left" fixed width="250" prop="name" />
-          <el-table-column label="编码" align="left" width="150" prop="name" />
-          <el-table-column label="CAS" align="left" width="150" prop="name" />
-          <el-table-column label="类别" align="left" width="160" prop="name" />
-          <el-table-column label="级别" align="left" width="100" prop="name" />
-          <el-table-column label="实验室" align="left" width="200" prop="name" />
-          <el-table-column label="安全员" align="left" width="150" prop="name" />
-          <el-table-column label="位置" align="left" width="230" prop="name" />
-          <el-table-column label="领用人" align="left" width="100" prop="name" />
+          <el-table-column label="化学品名称" align="left" fixed width="250" prop="chemicalName" />
+          <el-table-column label="编码" align="left" width="150" prop="tagCode" />
+          <el-table-column label="CAS" align="left" width="150" prop="casNum" />
+          <el-table-column label="类别" align="left" width="160" prop="chemicalCategory" />
+          <el-table-column label="级别" align="left" width="100" prop="chemicalLevel">
+            <template slot-scope="scope">
+              <span>{{scope.row.chemicalLevel?'管控':'非管控'}}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="实验室" align="left" width="200" prop="subName">
+            <template slot-scope="scope">
+              <span>{{scope.row.subName}}({{scope.row.subRoom}})</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="安全员" align="left" width="150" prop="safeInfo" />
+          <el-table-column label="位置" align="left" width="230" prop="name">
+            <template slot-scope="scope">
+              <span>{{scope.row.cabinetName}}-{{scope.row.doorName}}-{{scope.row.layers}}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="领用人" align="left" width="100" prop="useUserName" />
           <el-table-column label="领用时间" align="left" width="200" prop="createTime">
             <template slot-scope="scope">
-              <span>{{ parseTime(scope.row.createTime) }}</span>
+              <span>{{ parseTime(scope.row.collectTime) }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="领用量" align="left" width="100" prop="name">
+            <template slot-scope="scope">
+              <span>{{scope.row.collectStockNum}}{{scope.row.specUnit}}</span>
             </template>
           </el-table-column>
-          <el-table-column label="领用量" align="left" width="100" prop="name" />
           <el-table-column label="归还时间" align="left" width="200" prop="name">
             <template slot-scope="scope">
-              <span>{{ parseTime(scope.row.createTime) }}</span>
+              <span>{{ parseTime(scope.row.returnTime) }}</span>
             </template>
           </el-table-column>
           <el-table-column label="操作人" align="left" width="100" prop="name" />
@@ -156,9 +171,14 @@
 
 <script>
   import exportComponent from "@/components/exportComponent/exportComponent.vue";
-  import { iotTypeList,iotTypeDetail,iotTypeAdd,iotTypeUpdate,iotTypeDelete } from "@/api/iotDevice/index";
   import infoPage from "./infoPage.vue"
   import { getDeptDropList,systemBuildingGetTreeList,} from "@/api/commonality/permission";
+  import { getDicts } from '@/api/commonality/noPermission'
+  import {
+    chemicalCabinetSelect,
+    chemicalUserecordDetail,
+    chemicalUserecordList
+  } from '@/api/chemicalManage'
   export default {
     name: 'index',
     components: {
@@ -168,16 +188,16 @@
     data(){
       return{
         loading:false,
-        pageType:2,
+        pageType:1,
         //学院
-        deptList:[],
+        deptOptions:[],
         //楼栋楼层
         buildFloorOptions:[],
         //级别
-        levelOptions:[],
+        levelOptions:[{value:1,label:'管控'},{value:0,label:'非管控'}],
         //类别
         categoryOptions:[],
-        options:[],
+        cabinetOptions:[],
         dateRangeA:[],
         dateRangeB:[],
         //查询条件
@@ -186,17 +206,22 @@
           pageSize:20,
           searchValue :"",
           deptId:'',
-          state :'',
+          buildId :null,
+          floorId :null,
+          buildIdAndfloorId:[],
+          chemicalLevel:'',
+          cabinetId:'',
         },
-        dataList:[{}],
+        ids:'',
+        dataList:[],
         total:0,
         //组件传参
         propsData:{},
         //导出配置
         exportConfig:{
-          api:'system/user/student/export',             //导出接口地址
+          api:'chemical/userecord/export',             //导出接口地址
           ids:'',                                       //勾选导出,勾选的IDS
-          fileName:'导出文件名',                         //导出文件的命名
+          fileName:'使用台账导出',                         //导出文件的命名
         },
         //搜索状态开关
         searchType:false,
@@ -207,8 +232,10 @@
     },
     mounted(){
       this.getDeptDropList();
+      this.chemicalCabinetSelect();
+      this.getDicts();
       this.systemBuildingGetTreeList();
-      //this.getList();
+      this.getList();
     },
     methods:{
       //搜索切换状态
@@ -217,45 +244,39 @@
       },
       /** 搜索按钮操作 */
       handleQuery() {
-        this.queryParams.pageNum = 1;
+        if (this.queryParams.buildIdAndfloorId[0]){
+          if (this.queryParams.buildIdAndfloorId.length ==1){
+            this.$set(this.queryParams,'buildId',this.queryParams.buildIdAndfloorId[0]);
+          }else if (this.queryParams.buildIdAndfloorId.length ==2){
+            this.$set(this.queryParams,'buildId',this.queryParams.buildIdAndfloorId[0]);
+            this.$set(this.queryParams,'floorId',this.queryParams.buildIdAndfloorId[1]);
+          }
+        }
+        this.queryParams.page = 1;
         this.getList();
       },
       /** 重置按钮操作 */
       resetQuery() {
         this.$set(this,'dateRangeA',[]);
         this.$set(this,'dateRangeB',[]);
-        this.queryParams.searchValue = "";
+        this.$set(this,'queryParams',{
+          page:1,
+          pageSize:20,
+          searchValue:"",
+          deptId :null,
+          buildId :null,
+          floorId :null,
+          buildIdAndfloorId :[],
+          chemicalLevel:'',
+          cabinetId:'',
+        });
         this.handleQuery();
       },
-      /** 导出按钮操作 */
-      exportButton(item) {
-        let self = this;
-        let currentDate = this.getCurrentTime()
-        if(item.command == 1){
-          self.$confirm(`确认导出全部数据?`, "提示", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning"
-          }).then(async () => {
-            self.download('/airbottle/informationRecord/taskExport/', {...self.queryParamsData}, '申领记录导出-'+currentDate+'.xlsx')
-          }).catch(() => {})
-        }else if(item.command == 2){
-          if(self.ids.length>0) {
-            self.$confirm(`确认导出选中数据?`, "提示", {
-              confirmButtonText: "确定",
-              cancelButtonText: "取消",
-              type: "warning"
-            }).then(async () => {
-              let ids = self.ids.join(',');
-              let obj = {
-                ids :ids
-              }
-              self.download(`/airbottle/informationRecord/taskExport/`,obj, '申领记录导出-'+currentDate+'.xlsx')
-            }).catch(() => {})
-          }else {
-            this.msgError('请选择要导出的数据')
-          }
-        }
+      //获取化学品类别
+      getDicts(){
+        getDicts('chemicals_category').then(response => {
+          this.$set(this,'categoryOptions',response.data);
+        });
       },
       // 多选框选中数据
       handleSelectionChange(selection) {
@@ -263,11 +284,26 @@
         this.ids = selection.map(item => item.id);
         this.single = selection.length != 1;
         this.multiple = !selection.length;
+        this.exportConfig.ids=this.ids
       },
       //获取数据列表
       getList(){
         this.$set(this,'loading',true);
-        iotTypeList(this.queryParams).then(response => {
+        if(this.dateRangeA[0]){
+          this.queryParams.startTime = this.dateRangeA[0]+'T00:00:00'
+          this.queryParams.endTime = this.dateRangeA[1]+'T23:59:59'
+        }else{
+          this.queryParams.startTime = "";
+          this.queryParams.endTime = "";
+        }
+        if(this.dateRangeB[0]){
+          this.queryParams.returnStartTime = this.dateRangeB[0]+'T00:00:00'
+          this.queryParams.returnEndTime = this.dateRangeB[1]+'T23:59:59'
+        }else{
+          this.queryParams.returnStartTime = "";
+          this.queryParams.returnEndTime = "";
+        }
+        chemicalUserecordList(this.queryParams).then(response => {
           this.$set(this,'dataList',response.data.records);
           this.$set(this,'total',response.data.total);
           this.$set(this,'loading',false);
@@ -277,8 +313,12 @@
         let self = this;
         if(type == 2){
           //详情
-          this.$set(this,'propsData',JSON.parse(JSON.stringify(row)));
-          this.$set(this,'pageType',2);
+          chemicalUserecordDetail({stockId:row.stockId}).then(response => {
+            this.$set(this.propsData,'dataList',JSON.parse(JSON.stringify(response.data)));
+            this.$set(this.propsData,'chemicalDetail',row);
+            this.$set(this,'pageType',2);
+          });
+
         }else if(type =='out'){
           this.$set(this,'pageType',1);
         }
@@ -289,6 +329,12 @@
           this.$set(this, 'deptOptions', response.data)
         });
       },
+      //查询化学品柜列表
+      chemicalCabinetSelect(){
+        chemicalCabinetSelect({}).then(response => {
+          this.$set(this, 'cabinetOptions', response.data)
+        });
+      },
       //查询楼栋楼层
       systemBuildingGetTreeList(){
         systemBuildingGetTreeList({}).then(response => {
@@ -329,7 +375,7 @@
         需要在selection 添加 :reserve-selection="true"
       */
       getRowKeys(row) {
-        return row.id
+        return row.stockId
       },
     },
   }

+ 65 - 154
src/views/chemicalManage/useLedger/infoPage.vue

@@ -6,91 +6,94 @@
     </div>
     <div class="content-box">
         <div class="content-box-left scrollbar-box">
-            <li class="chemical-name">{{newData.data1}}<p class="chemical-state">{{newData.data2}}</p></li>
+            <li class="chemical-name">{{newData.chemicalDetail.chemicalName}}<p class="chemical-state">{{newData.chemicalDetail.status==1?'未出库':'出库'}}</p></li>
             <li>{{newData.data3}}</li>
-            <li>类别:{{newData.data4}}<p class="control-state">{{newData.data5}}</p></li>
-            <li>编码:{{newData.data6}}</li>
-            <li>RFID标签:{{newData.data7}}</li>
-            <li>规格:{{newData.data8}}</li>
-            <li>实时库存:{{newData.data9}}</li>
-            <li>过期时间:{{newData.data10}} | {{newData.data11}}天前提醒</li>
-            <li>领用时效:{{newData.data12}}小时</li>
-            <li>实验室:{{newData.data13}}</li>
-            <li>安全员:{{newData.data14}}</li>
-            <li>位置:{{newData.data15}}</li>
-            <li>归属人:{{newData.data16}}</li>
+            <li>类别:{{newData.chemicalDetail.chemicalCategory}}<p class="control-state">{{newData.chemicalDetail.chemicalLevel?'管控':'非管控'}}</p></li>
+            <li>编码:{{newData.chemicalDetail.tagCode}}</li>
+            <li>RFID标签:{{newData.chemicalDetail.rfidCode}}</li>
+            <li>规格:{{newData.chemicalDetail.specNum}}{{newData.chemicalDetail.specUnit}}{{newData.chemicalDetail.packUnit}}</li>
+            <li>实时库存:{{newData.chemicalDetail.surplus}}{{newData.chemicalDetail.specUnit}}</li>
+            <li>过期时间:{{newData.chemicalDetail.expireTime}} | {{newData.chemicalDetail.adventWarnDay}}天前提醒</li>
+            <li>领用时效:{{newData.chemicalDetail.duration}}小时</li>
+            <li>实验室:{{newData.chemicalDetail.subName}}({{newData.chemicalDetail.subRoom}})</li>
+            <li>安全员:{{newData.chemicalDetail.safeInfo}}</li>
+            <li>位置:{{newData.chemicalDetail.cabinetName}}-{{newData.chemicalDetail.doorName}}-{{newData.chemicalDetail.layers}}</li>
+            <li>归属人:{{newData.chemicalDetail.belongName}}</li>
         </div>
         <div class="lines"></div>
         <div class="content-box-right scrollbar-box">
             <div class="record" v-for="(item,index) in newData.dataList">
               <div class="record-li">
                   <div class="record-li-t">
-                      <div class="record-li-t-l">{{item.itemData1}}</div>
-                      <div class="record-li-t-r">
-                        <p v-if="item.itemData2" @click="lookVideo(item.videoA)">操作视频</p>
-                        <p v-if="item.itemData3" @click="lookVideo(item.videoB)">开门视频</p>
-                      </div>
+                      <div class="record-li-t-l">{{item.tagType}}</div>
+<!--                      <div class="record-li-t-r">-->
+<!--                        <p v-if="item.itemData2" @click="lookVideo(item.videoA)">操作视频</p>-->
+<!--                        <p v-if="item.itemData3" @click="lookVideo(item.videoB)">开门视频</p>-->
+<!--                      </div>-->
                   </div>
                   <div class="record-li-m">
                     <p>操作时间</p>
-                    <p>领用量</p>
-                    <p>使用量</p>
-                    <p>是否整瓶领用</p>
+                    <p v-if="item.tagCode==1 || item.tagCode==3">领用量</p>
+                    <p v-if="item.tagCode==0 || item.tagCode==3">使用量</p>
+                    <p v-if="item.tagCode==0">余量</p>
+                    <p v-if="item.tagCode==1 || item.tagCode==3">是否整瓶领用</p>
                     <p>称重方式</p>
                     <p>双人认证</p>
                     <p>操作人</p>
                   </div>
+                  <!-- tagCode 1领用,0是归还,3是空瓶出库-->
                   <div class="record-li-b">
-                      <p>{{item.itemData4}}</p>
-                      <p>{{item.itemData5}}</p>
-                      <p>{{item.itemData6}}</p>
-                      <p>{{item.itemData7}}</p>
-                      <p>{{item.itemData8}}</p>
-                      <p>{{item.itemData9}}</p>
-                      <p>{{item.itemData10}}</p>
-                    </div>
-              </div>
-              <div class="record-li">
-                <div class="record-li-t">
-                  <div class="record-li-t-l">{{item.itemData11}}</div>
-                  <div class="record-li-t-r">
-                    <p v-if="item.itemData12" @click="lookVideo(item.videoC)">操作视频</p>
-                    <p v-if="item.itemData12" @click="lookVideo(item.videoD)">开门视频</p>
+                      <p>{{parseTime(item.collectTime)}}</p>
+                      <p v-if="item.tagCode==1 || item.tagCode==3">{{item.collectNowNum}}</p>
+                      <p v-if="item.tagCode==0 || item.tagCode==3">{{item.useAmount}}</p>
+                      <p v-if="item.tagCode==0">{{item.returnStockNum}}</p>
+                      <p v-if="item.tagCode==1 || item.tagCode==3">{{item.isBottle?'是':'否'}}</p>
+                      <p>{{item.outType}}</p>
+                      <p>{{item.doubleAuthen}}</p>
+                      <p>{{item.userName}}</p>
                   </div>
-                </div>
-                <div class="record-li-m">
-                  <p>操作时间</p>
-                  <p>领用量</p>
-                  <p>使用量</p>
-                  <p>是否整瓶领用</p>
-                  <p>称重方式</p>
-                  <p>双人认证</p>
-                  <p>操作人</p>
-                </div>
-                <div class="record-li-b">
-                  <p>{{item.itemData14}}</p>
-                  <p>{{item.itemData15}}</p>
-                  <p>{{item.itemData16}}</p>
-                  <p>{{item.itemData17}}</p>
-                  <p>{{item.itemData18}}</p>
-                  <p>{{item.itemData19}}</p>
-                  <p>{{item.itemData20}}</p>
-                </div>
               </div>
+<!--              <div class="record-li">-->
+<!--                <div class="record-li-t">-->
+<!--                  <div class="record-li-t-l">{{item.itemData11}}</div>-->
+<!--                  <div class="record-li-t-r">-->
+<!--                    <p v-if="item.itemData12" @click="lookVideo(item.videoC)">操作视频</p>-->
+<!--                    <p v-if="item.itemData12" @click="lookVideo(item.videoD)">开门视频</p>-->
+<!--                  </div>-->
+<!--                </div>-->
+<!--                <div class="record-li-m">-->
+<!--                  <p>操作时间</p>-->
+<!--                  <p>领用量</p>-->
+<!--                  <p>使用量</p>-->
+<!--                  <p>是否整瓶领用</p>-->
+<!--                  <p>称重方式</p>-->
+<!--                  <p>双人认证</p>-->
+<!--                  <p>操作人</p>-->
+<!--                </div>-->
+<!--                <div class="record-li-b">-->
+<!--                  <p>{{item.itemData14}}</p>-->
+<!--                  <p>{{item.itemData15}}</p>-->
+<!--                  <p>{{item.itemData16}}</p>-->
+<!--                  <p>{{item.itemData17}}</p>-->
+<!--                  <p>{{item.itemData18}}</p>-->
+<!--                  <p>{{item.itemData19}}</p>-->
+<!--                  <p>{{item.itemData20}}</p>-->
+<!--                </div>-->
+<!--              </div>-->
             </div>
         </div>
     </div>
 
-    <full-screen-mpegts-video ref="fullScreenMpegtsVideo" :videoProps="videoProps"></full-screen-mpegts-video>
+<!--    <full-screen-mpegts-video ref="fullScreenMpegtsVideo" :videoProps="videoProps"></full-screen-mpegts-video>-->
   </div>
 </template>
 
 <script>
-  import fullScreenMpegtsVideo from '@/components/fullScreenMpegtsVideo/fullScreenMpegtsVideo.vue'
+  // import fullScreenMpegtsVideo from '@/components/fullScreenMpegtsVideo/fullScreenMpegtsVideo.vue'
   export default {
     name: 'infoPage',
     components: {
-      fullScreenMpegtsVideo,
+      // fullScreenMpegtsVideo,
     },
     props:{
       propsData:{},
@@ -107,102 +110,8 @@
         videoType:false,
         //数据
         newData:{
-          data1:'化学品名称',
-          data2:'已出库',
-          data3:'形态/纯度/CAS12-34-56',
-          data4:'易制毒',
-          data5:'管控',
-          data6:'123456789',
-          data7:'123456789',
-          data8:'500ml/瓶',
-          data9:'500ml',
-          data10:'2023-10-29',
-          data11:'30',
-          data12:'1',
-          data13:'实验室名称(房间号)',
-          data14:'曹秀康-13227872222',
-          data15:'化学品柜-柜门-层',
-          data16:'李砖头',
-          dataList:[
-            {
-              itemData1:'空瓶出库',
-              itemData2:false,
-              itemData3:false,
-              itemData4:'2023/09/15 16:39',
-              itemData5:'400ml',
-              itemData6:'400ml',
-              itemData7:'是',
-              itemData8:'手工录入',
-              itemData9:'张漂亮、李砖头',
-              itemData10:'李砖头',
-              itemData11:'空瓶出库',
-              itemData12:true,
-              itemData13:true,
-              itemData14:'2023/09/15 16:39',
-              itemData15:'400ml',
-              itemData16:'400ml',
-              itemData17:'是',
-              itemData18:'手工录入',
-              itemData19:'张漂亮、李砖头',
-              itemData20:'李砖头',
-              videoA:'http://192.168.1.43/labSystem/admin/statics/bigFile/2023051914/2dc29572-bac3-444c-bde9-b5b75988cc6b.mp4',
-              videoB:'http://192.168.1.43/labSystem/admin/statics/bigFile/2023051914/2dc29572-bac3-444c-bde9-b5b75988cc6b.mp4',
-              videoC:'http://192.168.1.43/labSystem/admin/statics/bigFile/2023051914/2dc29572-bac3-444c-bde9-b5b75988cc6b.mp4',
-              videoD:'http://192.168.1.43/labSystem/admin/statics/bigFile/2023051914/2dc29572-bac3-444c-bde9-b5b75988cc6b.mp4',
-            },
-            {
-              itemData1:'空瓶出库',
-              itemData2:false,
-              itemData3:false,
-              itemData4:'2023/09/15 16:39',
-              itemData5:'400ml',
-              itemData6:'400ml',
-              itemData7:'是',
-              itemData8:'手工录入',
-              itemData9:'张漂亮、李砖头',
-              itemData10:'李砖头',
-              itemData11:'空瓶出库',
-              itemData12:true,
-              itemData13:true,
-              itemData14:'2023/09/15 16:39',
-              itemData15:'400ml',
-              itemData16:'400ml',
-              itemData17:'是',
-              itemData18:'手工录入',
-              itemData19:'张漂亮、李砖头',
-              itemData20:'李砖头',
-              videoA:'http://192.168.1.43/labSystem/admin/statics/bigFile/2023051914/2dc29572-bac3-444c-bde9-b5b75988cc6b.mp4',
-              videoB:'http://192.168.1.43/labSystem/admin/statics/bigFile/2023051914/2dc29572-bac3-444c-bde9-b5b75988cc6b.mp4',
-              videoC:'http://192.168.1.43/labSystem/admin/statics/bigFile/2023051914/2dc29572-bac3-444c-bde9-b5b75988cc6b.mp4',
-              videoD:'http://192.168.1.43/labSystem/admin/statics/bigFile/2023051914/2dc29572-bac3-444c-bde9-b5b75988cc6b.mp4',
-            },
-            {
-              itemData1:'空瓶出库',
-              itemData2:false,
-              itemData3:false,
-              itemData4:'2023/09/15 16:39',
-              itemData5:'400ml',
-              itemData6:'400ml',
-              itemData7:'是',
-              itemData8:'手工录入',
-              itemData9:'张漂亮、李砖头',
-              itemData10:'李砖头',
-              itemData11:'空瓶出库',
-              itemData12:true,
-              itemData13:true,
-              itemData14:'2023/09/15 16:39',
-              itemData15:'400ml',
-              itemData16:'400ml',
-              itemData17:'是',
-              itemData18:'手工录入',
-              itemData19:'张漂亮、李砖头',
-              itemData20:'李砖头',
-              videoA:'http://192.168.1.43/labSystem/admin/statics/bigFile/2023051914/2dc29572-bac3-444c-bde9-b5b75988cc6b.mp4',
-              videoB:'http://192.168.1.43/labSystem/admin/statics/bigFile/2023051914/2dc29572-bac3-444c-bde9-b5b75988cc6b.mp4',
-              videoC:'http://192.168.1.43/labSystem/admin/statics/bigFile/2023051914/2dc29572-bac3-444c-bde9-b5b75988cc6b.mp4',
-              videoD:'http://192.168.1.43/labSystem/admin/statics/bigFile/2023051914/2dc29572-bac3-444c-bde9-b5b75988cc6b.mp4',
-            },
-          ],
+          chemicalDetail:{},
+          dataList:[],
         },
       }
     },
@@ -210,7 +119,9 @@
 
     },
     mounted(){
-
+      let self=this;
+      this.newData=this.propsData;
+      console.log(this.newData)
     },
     methods:{
       // 返回按钮

+ 325 - 186
src/views/integratedManagement/messageNotice/warningNotice/forewarningConfig.vue

@@ -12,38 +12,39 @@
       </div>
       <p class="null-p"></p>
       <p class="page-out-common-style-button out-p" @click="outButton">返回</p>
+      <p class="page-save-common-style-button out-p" @click="submitButton">保存</p>
     </div>
     <!--危险源预警-->
     <div class="page-max-big-box-a scrollbar-box" v-show="checkTypeA == 1">
       <!--选项卡-->
       <div class="tab-max-big-box">
         <div class="tab-title-box">
-          <p :class="checkTypeB == 1?'title-check':''" @click="checkTypeClickB(1)">化学品预警配置</p>
-          <p :class="checkTypeB == 2?'title-check':''" @click="checkTypeClickB(2)">气瓶预警配置</p>
+          <p :class="configType == 1?'title-check':''" @click="checkTypeClickB(1)">化学品预警配置</p>
+          <p :class="configType == 2?'title-check':''" @click="checkTypeClickB(2)">气瓶预警配置</p>
         </div>
-        <div class="tab-max-box-a" v-show="checkTypeB == 1">
+        <div class="tab-max-box-a" v-show="configType == 1">
           <el-form class="form-box" :model="chemicalsForm" ref="chemicalsForm"
                    :inline="true" :rules="chemicalsRules" label-width="140px">
             <div class="tab-box-left">
               <div>
-                <el-form-item label="临期预警:化学品过期 " prop="data1" label-width="210px">
-                  <el-input-number v-model="chemicalsForm.data1" style="width:100px;"
+                <el-form-item label="临期预警:化学品过期 " prop="adventWarnDay" label-width="210px">
+                  <el-input-number v-model="chemicalsForm.adventWarnDay" style="width:100px;"
                                    :controls="false" :min="1" :max="360">
                   </el-input-number>
                   <span style="margin-left:20px;">天前提醒通知</span>
                 </el-form-item>
               </div>
               <div>
-                <el-form-item label="过期报警:" prop="data2">
-                  <el-input-number v-model="chemicalsForm.data2" style="width:130px;"
+                <el-form-item label="过期报警:" prop="expireWarnNum">
+                  <el-input-number v-model="chemicalsForm.expireWarnNum" style="width:130px;"
                                    :min="1" :max="20">
                   </el-input-number>
                   <span style="margin-left:20px;">化学品过期后报警通知次数</span>
                 </el-form-item>
               </div>
               <div>
-                <el-form-item label="过期短信:" prop="data3">
-                  <el-time-select v-model="chemicalsForm.data3" placeholder="请选择" style="width:130px;"
+                <el-form-item label="过期短信:" prop="expireMessage">
+                  <el-time-select v-model="chemicalsForm.expireMessage" placeholder="请选择" style="width:130px;"
                     :picker-options="{
                       start: '00:00',
                       step: '00:15',
@@ -54,8 +55,8 @@
                 </el-form-item>
               </div>
               <div>
-                <el-form-item label="违规带离:" prop="data4">
-                  <el-select v-model="chemicalsForm.data4" multiple placeholder="请选择" style="width:500px;">
+                <el-form-item label="违规带离:" prop="violationTake">
+                  <el-select v-model="chemicalsForm.violationTake" multiple placeholder="请选择" style="width:500px;">
                     <el-option
                       v-for="item in chemicalsOptionsA"
                       :key="item.value"
@@ -66,10 +67,10 @@
                 </el-form-item>
               </div>
               <div>
-                <el-form-item label="超时未归还:" prop="data5">
-                  <el-select v-model="chemicalsForm.data5" multiple placeholder="请选择" style="width:500px;">
+                <el-form-item label="超时未归还:" prop="timeoutNoreturn">
+                  <el-select v-model="chemicalsForm.timeoutNoreturn" multiple placeholder="请选择" style="width:500px;">
                     <el-option
-                      v-for="item in chemicalsOptionsB"
+                      v-for="item in chemicalsOptionsA"
                       :key="item.value"
                       :label="item.label"
                       :value="item.value">
@@ -80,10 +81,10 @@
             </div>
             <div class="tab-box-right">
               <div>
-                <el-form-item label="即将过期:" prop="data6">
-                  <el-select v-model="chemicalsForm.data6" multiple placeholder="请选择" style="width:500px;">
+                <el-form-item label="即将过期:" prop="expireSoon">
+                  <el-select v-model="chemicalsForm.expireSoon" multiple placeholder="请选择" style="width:500px;">
                     <el-option
-                      v-for="item in chemicalsOptionsB"
+                      v-for="item in chemicalsOptionsA"
                       :key="item.value"
                       :label="item.label"
                       :value="item.value">
@@ -92,10 +93,10 @@
                 </el-form-item>
               </div>
               <div>
-                <el-form-item label="过期报警:" prop="data7">
-                  <el-select v-model="chemicalsForm.data7" multiple placeholder="请选择" style="width:500px;">
+                <el-form-item label="过期报警:" prop="expireWarn">
+                  <el-select v-model="chemicalsForm.expireWarn" multiple placeholder="请选择" style="width:500px;">
                     <el-option
-                      v-for="item in chemicalsOptionsB"
+                      v-for="item in chemicalsOptionsA"
                       :key="item.value"
                       :label="item.label"
                       :value="item.value">
@@ -104,10 +105,10 @@
                 </el-form-item>
               </div>
               <div>
-                <el-form-item label="超期未入库:" prop="data8">
-                  <el-select v-model="chemicalsForm.data8" multiple placeholder="请选择" style="width:500px;">
+                <el-form-item label="超期未入库:" prop="overdueStorage">
+                  <el-select v-model="chemicalsForm.overdueStorage" multiple placeholder="请选择" style="width:500px;">
                     <el-option
-                      v-for="item in chemicalsOptionsB"
+                      v-for="item in chemicalsOptionsA"
                       :key="item.value"
                       :label="item.label"
                       :value="item.value">
@@ -116,10 +117,10 @@
                 </el-form-item>
               </div>
               <div>
-                <el-form-item label="业务操作超时:" prop="data9">
-                  <el-select v-model="chemicalsForm.data9" multiple placeholder="请选择" style="width:500px;">
+                <el-form-item label="业务操作超时:" prop="businessTimeout">
+                  <el-select v-model="chemicalsForm.businessTimeout" multiple placeholder="请选择" style="width:500px;">
                     <el-option
-                      v-for="item in chemicalsOptionsB"
+                      v-for="item in chemicalsOptionsA"
                       :key="item.value"
                       :label="item.label"
                       :value="item.value">
@@ -130,7 +131,7 @@
             </div>
           </el-form>
         </div>
-        <div class="tab-max-box-b" v-show="checkTypeB == 2">
+        <div class="tab-max-box-b" v-show="configType == 2">
           <el-form class="form-box" :model="gasBottleForm" ref="gasBottleForm"
                    :inline="true" :rules="gasBottleRules" label-width="140px">
             <div class="tab-box">
@@ -160,30 +161,30 @@
         <div class="page-form-title-box">
           <el-form :model="queryParams" class="form-box" ref="queryForm"
                    :inline="true" style="width:100%;">
-            <el-form-item label="状态" prop="tabeleData1">
-              <el-select v-model="queryParams.tabeleData1" placeholder="请选择" style="width: 200px">
+            <el-form-item label="状态" prop="ruleStatus">
+              <el-select v-model="queryParams.ruleStatus" placeholder="请选择" style="width: 200px">
                 <el-option
                   v-for="item in typeOptions"
-                  :key="item.deptId"
-                  :label="item.deptName"
-                  :value="item.deptId"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
                 />
               </el-select>
             </el-form-item>
-            <el-form-item label="部门" prop="tabeleData2">
-              <el-select v-model="queryParams.tabeleData2" placeholder="请选择" style="width: 200px">
+            <el-form-item label="学院" prop="deptId">
+              <el-select v-model="queryParams.deptId" placeholder="请选择" style="width: 200px">
                 <el-option
-                  v-for="item in sectionOptions"
+                  v-for="item in deptOptions"
                   :key="item.deptId"
                   :label="item.deptName"
                   :value="item.deptId"
                 />
               </el-select>
             </el-form-item>
-            <el-form-item label="创建人" prop="tabeleData3">
+            <el-form-item label="创建人" prop="createName">
               <el-input
                 maxLength="30"
-                v-model="queryParams.tabeleData3"
+                v-model="queryParams.createName"
                 placeholder="创建人"
                 clearable
                 style="width: 200px"
@@ -200,10 +201,10 @@
         </div>
         <div class="page-content-box">
           <el-table class="table-box" border :data="dataList">
-            <el-table-column label="适用学院" prop="name" show-overflow-tooltip/>
-            <el-table-column label="报警层级" prop="content" width="180" show-overflow-tooltip/>
-            <el-table-column label="通知人数" prop="content" width="150" show-overflow-tooltip/>
-            <el-table-column label="状态" prop="content" width="150" show-overflow-tooltip>
+            <el-table-column label="适用学院" prop="deptName" show-overflow-tooltip/>
+            <el-table-column label="报警层级" prop="warningLevel" width="180" show-overflow-tooltip/>
+            <el-table-column label="通知人数" prop="noticeNum" width="150" show-overflow-tooltip/>
+            <el-table-column label="状态" prop="ruleStatus" width="150" show-overflow-tooltip>
               <template slot-scope="scope">
                 <el-switch
                   @click.native="tableButton(4,scope.row)"
@@ -212,19 +213,19 @@
                   :inactive-value="false"
                   active-color="#0183FA"
                   inactive-color="#999"
-                  v-model="scope.row.state"
+                  v-model="scope.row.ruleStatus"
                   active-text="启用"
                   inactive-text="停用"
                   disabled
                 ></el-switch>
               </template>
             </el-table-column>
-            <el-table-column label="创建时间" prop="content" width="200" show-overflow-tooltip>
+            <el-table-column label="创建时间" prop="createTime" width="200" show-overflow-tooltip>
               <template slot-scope="scope">
                 <span>{{ parseTime(scope.row.createTime) }}</span>
               </template>
             </el-table-column>
-            <el-table-column label="创建人" prop="content" width="150" show-overflow-tooltip/>
+            <el-table-column label="创建人" prop="createName" width="150" show-overflow-tooltip/>
             <el-table-column label="操作" width="180" show-overflow-tooltip v-if="tableButtonType">
               <template slot-scope="scope">
                 <div class="table-button-box">
@@ -257,26 +258,26 @@
       <el-form class="form-box" :model="algorithmForm" ref="algorithmForm"
                :inline="true" :rules="algorithmRules" label-width="140px">
         <div>
-          <el-form-item label="穿戴抓拍周期" prop="data11" label-width="170px">
-            <el-input-number v-model="algorithmForm.data11" style="width:320px;"
+          <el-form-item label="穿戴抓拍周期" prop="wearSnap" label-width="170px">
+            <el-input-number v-model="algorithmForm.wearSnap" style="width:320px;"
                               :min="1" :max="360">
             </el-input-number>
           </el-form-item>
-          <el-form-item label="异常再识别数" prop="data12" label-width="170px">
-            <el-input-number v-model="algorithmForm.data12" style="width:320px;"
+          <el-form-item label="异常再识别数" prop="abnormalIdentifyNum" label-width="170px">
+            <el-input-number v-model="algorithmForm.abnormalIdentifyNum" style="width:320px;"
                               :min="1" :max="100">
             </el-input-number>
           </el-form-item>
-          <el-form-item label="异常再识别数" prop="data13" label-width="170px">
-            <el-input-number v-model="algorithmForm.data13" style="width:320px;"
+          <el-form-item label="异常再识别数" prop="abnormalIdentifyRate" label-width="170px">
+            <el-input-number v-model="algorithmForm.abnormalIdentifyRate" style="width:320px;"
                               :min="1" :max="100">
             </el-input-number>
           </el-form-item>
         </div>
         <p class="text-p">穿戴识别</p>
         <div>
-          <el-form-item label="系统通知 监测异常" prop="data14" label-width="234px">
-            <el-select v-model="algorithmForm.data14" placeholder="请选择" style="width:90px;">
+          <el-form-item label="系统通知 监测异常" prop="sysNoticeNum" label-width="234px">
+            <el-select v-model="algorithmForm.sysNoticeNum" placeholder="请选择" style="width:90px;">
               <el-option
                 v-for="item in numOptions"
                 :key="item.value"
@@ -289,8 +290,8 @@
           </el-form-item>
         </div>
         <div>
-          <el-form-item label="短信通知 监测异常" prop="data15" label-width="234px">
-            <el-select v-model="algorithmForm.data15" placeholder="请选择" style="width:90px;">
+          <el-form-item label="短信通知 监测异常" prop="messageNoticeNum" label-width="234px">
+            <el-select v-model="algorithmForm.messageNoticeNum" placeholder="请选择" style="width:90px;">
               <el-option
                 v-for="item in numOptions"
                 :key="item.value"
@@ -303,8 +304,8 @@
           </el-form-item>
         </div>
         <div>
-          <el-form-item label="语音播报 监测异常" prop="data16" label-width="234px">
-            <el-select v-model="algorithmForm.data16" placeholder="请选择" style="width:90px;">
+          <el-form-item label="语音播报 监测异常" prop="voiceNum" label-width="234px">
+            <el-select v-model="algorithmForm.voiceNum" placeholder="请选择" style="width:90px;">
               <el-option
                 v-for="item in numOptions"
                 :key="item.value"
@@ -318,11 +319,6 @@
         </div>
       </el-form>
     </div>
-    <div class="button-bottom-box">
-      <p class="null-p"></p>
-      <p class="page-submit-common-style-button submit-p" @click="submitButton">保存</p>
-      <p class="null-p"></p>
-    </div>
     <el-dialog class="forewarningUp-dialog" title='预警升级配置' width="1300px" append-to-body
                :visible.sync="dialogType" v-if="dialogType" @close="dialogOff()"
                :close-on-click-modal="false" :close-on-press-escape="false">
@@ -366,50 +362,50 @@
         </div>
         <el-form :model="dialogForm" ref="dialogForm" :inline="true"
                  :rules="dialogRules" class="addCheckPage-min">
-          <el-form-item label="适合学院:" prop="dialogData1" label-width="100px">
-            <el-select v-model="dialogForm.dialogData1" placeholder="请选择" style="width: 435px">
+          <el-form-item label="适用学院:" prop="deptId" label-width="100px">
+            <el-select v-model="dialogForm.deptId" placeholder="请选择" @change="deptChange" style="width: 435px">
               <el-option
                 v-for="dict in deptOptions"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.value"
+                :key="dict.deptId"
+                :label="dict.deptName"
+                :value="dict.deptId"
               />
             </el-select>
           </el-form-item>
-          <div class="for-max-big-box" v-for="(item,index) in dialogForm.dialogData2" :key="index">
+          <div class="for-max-big-box" v-for="(item,index) in dialogForm.warningConfigRuleDetailDtoList" :key="index">
             <div class="for-max-big-title-box">
               <p class="position-index">{{index+1}}</p>
               <el-form-item label="处理时间:" class="time-form-item" label-width="142px"
-                            :prop="'dialogData2.' + index + '.dialogTime'" :rules="dialogRules.dialogTime">
-                <el-input-number v-model="item.dialogTime" style="width:435px;"
+                            :prop="'warningConfigRuleDetailDtoList.' + index + '.handleTime'" :rules="dialogRules.handleTime">
+                <el-input-number v-model="item.handleTime" style="width:435px;"
                                  :controls="false" :min="1" :max="1440">
                 </el-input-number>
               </el-form-item>
               <p class="time-p">分钟</p>
               <p class="null-p"></p>
-              <p class="page-submit-common-style-button for-del-button" v-if="dialogForm.dialogData2[1]" @click="delBigDialogData(index)">删除</p>
+              <p class="page-submit-common-style-button for-del-button" v-if="dialogForm.warningConfigRuleDetailDtoList[1]" @click="delBigDialogData(index)">删除</p>
               <p class="page-submit-common-style-button for-add-button" @click="addBigDialogData(index)">+  添加处理流程</p>
             </div>
             <div class="for-max-box">
               <div class="for-box" v-for="(minItem,minIndex) in item.dialogUserList" :key="minIndex">
                 <el-form-item label="通知对象:" label-width="142px"
-                              :prop="'dialogData2.'+ index +'.dialogUserList.'+ minIndex +'.dialogName'"
-                              :rules="dialogRules.dialogName">
+                              :prop="'warningConfigRuleDetailDtoList.'+ index +'.dialogUserList.'+ minIndex +'.userName'"
+                              :rules="dialogRules.userName">
                   <el-input
                     style="width:300px;"
                     maxlength="8"
-                    v-model="minItem.dialogName"
+                    v-model="minItem.userName"
                     placeholder="未填写"
                   />
                 </el-form-item>
                 <p class="el-icon-search look-min-button" @click="shadeOpen(index,minIndex)"></p>
                 <el-form-item label="手机号码:" label-width="120px"
-                              :prop="'dialogData2.'+ index +'.dialogUserList.'+ minIndex +'.dialogValue'"
-                              :rules="dialogRules.dialogValue">
+                              :prop="'warningConfigRuleDetailDtoList.'+ index +'.dialogUserList.'+ minIndex +'.mobile'"
+                              :rules="dialogRules.mobile">
                   <el-input
                     style="width:300px;"
                     maxlength="11"
-                    v-model="minItem.dialogValue"
+                    v-model="minItem.mobile"
                     placeholder="未填写"
                     onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')"
                   />
@@ -432,10 +428,17 @@
 </template>
 
 <script>
-  //import { getDicts } from "@/api/commonality/noPermission";
-  //import { systemUserSelect } from "@/api/commonality/permission";
-  //import { getInfo } from "@/api/basicsModules/index";
-  import { systemUserSelectUser } from "@/api/commonality/permission";
+  import { getDeptDropList, systemUserSelect } from '@/api/commonality/permission'
+  import { systemConfigAlgorithmDetail, systemConfigAlgorithmUpdate,
+    systemConfigRuleAdd,
+    systemConfigRuleDelete,
+    systemConfigRuleDetail,
+    systemConfigRuleEnableOrDisable,
+    systemConfigRuleList, systemConfigRuleUpdate,
+    systemWarningConfigDetail,
+    systemWarningConfigUpdate
+  } from '@/api/chemicalManage'
+  import { getDicts } from '@/api/commonality/noPermission'
   export default {
     name: 'addPage',
     props:{
@@ -446,53 +449,53 @@
         //大类型状态
         checkTypeA:1,
         //小类型状态
-        checkTypeB:1,
+        configType:1,
         //化学品预警数据
         chemicalsForm:{
-          data1:30,
-          data2:1,
-          data3:null,
-          data4:null,
-          data5:null,
-          data6:null,
-          data7:null,
-          data8:null,
-          data9:null,
+          adventWarnDay:30,
+          expireWarnNum:1,
+          expireMessage:null,
+          violationTake:null,
+          timeoutNoreturn:null,
+          expireSoon:null,
+          expireWarn:null,
+          overdueStorage:null,
+          businessTimeout:null,
         },
         chemicalsRules:{
-          data1: [
+          adventWarnDay: [
             { required: true, message: "请输入临期预警通知时间", trigger: "blur" },
             { required: true, message: "请输入临期预警通知时间", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data2: [
-            { required: true, message: "请选择过期报警时间", trigger: "blur" },
-            { required: true, message: "请选择过期报警时间", validator: this.spaceJudgment, trigger: "blur" }
+          expireWarnNum: [
+            { required: true, message: "请选择过期报警次数", trigger: "blur" },
+            { required: true, message: "请选择过期报警次数", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data3: [
+          expireMessage: [
             { required: true, message: "请选择过期短信通知时间", trigger: "blur" },
             { required: true, message: "请选择过期短信通知时间", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data4: [
+          violationTake: [
             { required: true, message: "请选择违规带离通知方式", trigger: "blur" },
             { required: true, message: "请选择违规带离通知方式", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data5: [
+          timeoutNoreturn: [
             { required: true, message: "请选择超时未归还通知方式", trigger: "blur" },
             { required: true, message: "请选择超时未归还通知方式", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data6: [
+          expireSoon: [
             { required: true, message: "请选择即将过期通知方式", trigger: "blur" },
             { required: true, message: "请选择即将过期通知方式", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data7: [
+          expireWarn: [
             { required: true, message: "请选择过期报警通知方式", trigger: "blur" },
             { required: true, message: "请选择过期报警通知方式", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data8: [
+          overdueStorage: [
             { required: true, message: "请选择超期未入库通知方式", trigger: "blur" },
             { required: true, message: "请选择超期未入库通知方式", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data9: [
+          businessTimeout: [
             { required: true, message: "请选择业务操作超时通知方式", trigger: "blur" },
             { required: true, message: "请选择业务操作超时通知方式", validator: this.spaceJudgment, trigger: "blur" }
           ],
@@ -509,46 +512,41 @@
         },
         //算法预警数据
         algorithmForm:{
-          data11:null,
-          data12:null,
-          data13:null,
-          data14:null,
-          data15:null,
-          data16:null,
+          wearSnap:null,
+          abnormalIdentifyNum:null,
+          abnormalIdentifyRate:null,
+          sysNoticeNum:null,
+          messageNoticeNum:null,
+          voiceNum:null,
         },
         algorithmRules:{
-          data11: [
+          wearSnap: [
             { required: true, message: "请输入穿戴抓拍周期", trigger: "blur" },
             { required: true, message: "请输入穿戴抓拍周期", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data12: [
+          abnormalIdentifyNum: [
             { required: true, message: "请输入异常再识别数", trigger: "blur" },
             { required: true, message: "请输入异常再识别数", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data13: [
+          abnormalIdentifyRate: [
             { required: true, message: "请输入异常再识别数", trigger: "blur" },
             { required: true, message: "请输入异常再识别数", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data14: [
+          sysNoticeNum: [
             { required: true, message: "请输入系统通知监测异常次数", trigger: "blur" },
             { required: true, message: "请输入系统通知监测异常次数", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data15: [
+          messageNoticeNum: [
             { required: true, message: "请输入短信通知监测异常次数", trigger: "blur" },
             { required: true, message: "请输入短信通知监测异常次数", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          data16: [
+          voiceNum: [
             { required: true, message: "请输入语音播报监测异常次数", trigger: "blur" },
             { required: true, message: "请输入语音播报监测异常次数", validator: this.spaceJudgment, trigger: "blur" }
           ],
         },
-        //违规带离
-        chemicalsOptionsA:[
-          {label:'短信通知',value:'1'},
-          {label:'报警电话',value:'2'},
-          {label:'企业微信',value:'3'},
-          {label:'声光报警',value:'4'},
-        ],
+        //通知类别
+        chemicalsOptionsA:[],
         //超时未归还
         chemicalsOptionsB:[
           {label:'短信通知',value:'1'},
@@ -570,48 +568,52 @@
         ],
         //预警升级规则
         queryParams:{
-          tabeleData1:'',
-          tabeleData2:'',
-          tabeleData3:'',
+          page:1,
+          pageSize:20,
+          ruleStatus:"",
+          deptId:"",
+          createName:"",
         },
         //状态列表
-        typeOptions:[],
+        typeOptions:[{label:'停用',value:0},{label:'启用',value:1}],
         //部门列表
         sectionOptions:[],
         //升级规则列表
-        dataList:[{}],
+        dataList:[],
         total:10,
         tableButtonType:this.hasPermiDom(['demo:demo:detail','demo:demo:edit','demo:demo:del',]),
         //dialog配置
         dialogType:false,
         dialogForm:{
-          dialogData1:null,
-          dialogData2:[
+          ruleId:null,
+          deptId:null,
+          warningConfigRuleDetailDtoList:[
             {
-              dialogTime:null,
+              handleTime:null,//处理时间
               dialogUserList:[
                 {
-                  dialogName:null,
-                  dialogValue:null,
+                  userName:null,
+                  mobile:null,
+                  userId:null,
                 }
               ],
             }
           ],
         },
         dialogRules:{
-          dialogData1: [
+          deptId: [
             { required: true, message: "请选择学院", trigger: "blur" },
             { required: true, message: "请选择学院", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          dialogTime: [
+          handleTime: [
             { required: true, message: "请输入处理时间", trigger: "blur" },
             { required: true, message: "请输入处理时间", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          dialogName: [
+          userName: [
             { required: true, message: "请输入通知对象", trigger: "blur" },
             { required: true, message: "请输入通知对象", validator: this.spaceJudgment, trigger: "blur" }
           ],
-          dialogValue: [
+          mobile: [
             { required: true, message: "请输入手机号码", trigger: "blur" },
             { validator: this.checkPhone, trigger: 'blur' },
             { required: true, message: "请输入手机号码", validator: this.spaceJudgment, trigger: "blur" }
@@ -632,38 +634,86 @@
             { required: true, message: "请选择人员", validator: this.spaceJudgment, trigger: "blur" }
           ],
         },
-        shadeName:"",
-        shadeMobile:"",
+        userName:"",
+        mobile:"",
+        userId:"",
         // 人员列表
         optionsUser:[],
       }
     },
     created(){
-
+        this.getDicts();
+        this.systemWarningConfigDetail();
+        this.getDeptDropList();
+        this.getList();
     },
     mounted(){
 
     },
     methods:{
+      //获取通知类别类别
+      getDicts(){
+        getDicts('sys_warning_type').then(response => {
+          this.$set(this,'chemicalsOptionsA',response.data);
+        });
+      },
+      //预警通知-危险源预警-详情
+      systemWarningConfigDetail(){
+        let self=this;
+        systemWarningConfigDetail({configType:this.configType}).then(response => {
+          this.$set(this,'chemicalsForm',response.data);
+
+          if (this.configType == 1){
+              self.chemicalsForm.businessTimeout=self.chemicalsForm.businessTimeout?self.chemicalsForm.businessTimeout.split(','):'',
+              self.chemicalsForm.expireSoon=self.chemicalsForm.expireSoon?self.chemicalsForm.expireSoon.split(','):'',
+              self.chemicalsForm.expireWarn=self.chemicalsForm.expireWarn?self.chemicalsForm.expireWarn.split(','):'',
+              self.chemicalsForm.overdueStorage=self.chemicalsForm.overdueStorage?self.chemicalsForm.overdueStorage.split(','):'',
+              self.chemicalsForm.timeoutNoreturn=self.chemicalsForm.timeoutNoreturn?self.chemicalsForm.timeoutNoreturn.split(','):'',
+              self.chemicalsForm.violationTake=self.chemicalsForm.violationTake?self.chemicalsForm.violationTake.split(','):''
+          }else if( this.configType == 2){
+            self.gasBottleForm.data10=self.chemicalsForm.violationTake?self.chemicalsForm.violationTake.split(','):''
+          }
+        });
+      },
+      //预警通知-算法预警-详情
+      systemConfigAlgorithmDetail(){
+        let self=this;
+        systemConfigAlgorithmDetail().then(response => {
+          this.$set(this,'algorithmForm',response.data);
+        });
+      },
+      //查询学院列表
+      getDeptDropList(){
+        getDeptDropList({deptName:"",level:2,deptType:1}).then(response => {
+          this.$set(this, 'deptOptions', response.data)
+        });
+      },
+
       // 大类切换
       checkTypeClickA(type){
         if(type != this.checkTypeA){
           this.$set(this,'checkTypeA',type);
           this.resetFields();
+          if (type==1){//危险源预警
+            this.systemWarningConfigDetail();
+          }else if (type ==2){//算法预警
+            this.systemConfigAlgorithmDetail();
+          }
         }
       },
       // 小类切换
       checkTypeClickB(type){
-        if(type != this.checkTypeB){
-          this.$set(this,'checkTypeB',type);
+        if(type != this.configType){
+          this.$set(this,'configType',type);
+          this.systemWarningConfigDetail()
           this.resetFields();
         }
       },
       //去除验证
       resetFields(){
-        if(this.checkTypeA == 1 && this.checkTypeB == 1){
+        if(this.checkTypeA == 1 && this.configType == 1){
           this.$refs.chemicalsForm.resetFields()
-        }else if(this.checkTypeA == 1 && this.checkTypeB == 2){
+        }else if(this.checkTypeA == 1 && this.configType == 2){
           this.$refs.gasBottleForm.resetFields()
         }else if(this.checkTypeA == 2){
           this.$refs.algorithmForm.resetFields()
@@ -673,39 +723,60 @@
       outButton(){
         this.$parent.tableButton(4);
       },
-      //提交
+      //提交-危险源预警
       submitButton(){
-        if(this.checkTypeA == 1 && this.checkTypeB == 1){
+        let self=this;
+        if(this.checkTypeA == 1 && this.configType == 1){//危险源化学品预警配置
           this.$refs["chemicalsForm"].validate(valid => {
             if (valid) {
-
+              self.chemicalsForm.businessTimeout=self.chemicalsForm.businessTimeout.join(',')
+              self.chemicalsForm.expireSoon=self.chemicalsForm.expireSoon.join(',')
+              self.chemicalsForm.expireWarn=self.chemicalsForm.expireWarn.join(',')
+              self.chemicalsForm.overdueStorage=self.chemicalsForm.overdueStorage.join(',')
+              self.chemicalsForm.timeoutNoreturn=self.chemicalsForm.timeoutNoreturn.join(',')
+              self.chemicalsForm.violationTake=self.chemicalsForm.violationTake.join(',')
+              systemWarningConfigUpdate(self.chemicalsForm).then( response => {
+                self.msgSuccess("成功")
+                self.systemWarningConfigDetail();
+              });
             }
           })
-        }else if(this.checkTypeA == 1 && this.checkTypeB == 2){
+        }else if(this.checkTypeA == 1 && this.configType == 2){
           this.$refs["gasBottleForm"].validate(valid => {
             if (valid) {
-
+              self.chemicalsForm.violationTake=self.gasBottleForm.data10.join(',')
+              systemWarningConfigUpdate(self.chemicalsForm).then( response => {
+                self.msgSuccess("成功")
+                self.systemWarningConfigDetail();
+              });
             }
           })
-        }else if(this.checkTypeA == 2){
+        }else if(this.checkTypeA == 2){//算法识别
           this.$refs["algorithmForm"].validate(valid => {
             if (valid) {
-
+              systemConfigAlgorithmUpdate(self.algorithmForm).then( response => {
+                self.msgSuccess("成功")
+                self.systemConfigAlgorithmDetail();
+              });
             }
           })
         }
       },
       //升级规则查询
       handleQuery(){
-
+        this.$set(this.queryParams,'page',1);
+        this.getList();
       },
       //升级规则重置
       resetQuery(){
-
-      },
-      //获取升级规则列表
-      getList(){
-
+        this.$set(this,'queryParams',{
+          page:1,
+          pageSize:20,
+          ruleStatus:"",
+          deptId:"",
+          createName:"",
+        });
+        this.getList();
       },
       //新增/编辑/删除升级规则
       tableButton(type,row){
@@ -713,14 +784,15 @@
         if(type == 1){
           //新增
           this.$set(this,'dialogForm',{
-            dialogData1:null,
-            dialogData2:[
+            deptId:null,
+            warningConfigRuleDetailDtoList:[
               {
-                dialogTime:null,
+                handleTime:null,
                 dialogUserList:[
                   {
-                    dialogName:null,
-                    dialogValue:null,
+                    userName:null,
+                    mobile:null,
+                    userId:null,
                   }
                 ],
               }
@@ -729,8 +801,24 @@
           this.$set(this,'dialogType',true);
         }else if(type == 2){
           //编辑
-          this.$set(this,'dialogForm',row);
-          this.$set(this,'dialogType',true);
+          let obj={}
+          systemConfigRuleDetail({ruleId:row.ruleId}).then(response => {
+            obj.deptId=response.data.deptId
+            obj.deptName=response.data.deptName
+            obj.ruleId=response.data.ruleId
+            let list=[]
+            response.data.warningConfigRuleDetailVoList.forEach(function(item) {
+              let list2=[];
+              item.warningConfigRuleUserVoList.forEach(function(item2) {
+                list2.push({userId:item2.userId,userName:item2.userName,mobile:item2.mobile})
+              })
+              list.push({handleTime:item.handleTime,dialogUserList:list2})
+            })
+            obj.warningConfigRuleDetailDtoList=list
+            this.$set(this,'dialogForm',obj);
+            this.$set(this,'dialogType',true);
+          })
+
         }else if(type == 3){
           //删除
           this.$confirm('是否确认删除?', "警告", {
@@ -739,21 +827,21 @@
             type: "warning"
           }).then(function() {
           }).then(() => {
-            deleteFunction({id:row.id}).then(response => {
+            systemConfigRuleDelete({ruleId:row.ruleId}).then(response => {
               self.msgSuccess(response.message)
               self.getList();
             });
           }).catch(() => {});
         }else if(type == 4){
           //启用&停用
-          let text = row.state  ? "停用" : "启用";
+          let text = row.ruleStatus  ? "停用" : "启用";
           this.$confirm('是否确认' + text + '?', "警告", {
             confirmButtonText: "确定",
             cancelButtonText: "取消",
             type: "warning"
           }).then(function() {
           }).then(() => {
-            stateFunction({id:row.id,state:!row.state,}).then(response => {
+            systemConfigRuleEnableOrDisable({ruleId:row.ruleId,ruleStatus:!row.ruleStatus,}).then(response => {
               self.msgSuccess(response.message)
               self.getList();
             });
@@ -766,15 +854,17 @@
       },
       //新增规则流程
       addBigDialogData(index){
-        if(this.dialogForm.dialogData2[4]){
+        console.log(this.dialogForm.warningConfigRuleDetailDtoList)
+        if(this.dialogForm.warningConfigRuleDetailDtoList[4]){
           this.msgError('最多添加5个流程')
         }else{
-          this.dialogForm.dialogData2.splice(index+1, 0, {
-            dialogTime:null,
+          this.dialogForm.warningConfigRuleDetailDtoList.splice(index+1, 0, {
+            handleTime:null,
             dialogUserList:[
               {
-                dialogName:null,
-                dialogValue:null,
+                userName:null,
+                mobile:null,
+                userId:null,
               }
             ],
           })
@@ -782,35 +872,66 @@
       },
       //删除规则流程
       delBigDialogData(index){
-        if(!this.dialogForm.dialogData2[1]){
+        if(!this.dialogForm.warningConfigRuleDetailDtoList[1]){
           this.msgError('至少保留一个流程')
         }else{
-          this.dialogForm.dialogData2.splice(index,1)
+          this.dialogForm.warningConfigRuleDetailDtoList.splice(index,1)
         }
       },
       //新增规则人员
       addMinDialogData(index,minIndex){
-        if(this.dialogForm.dialogData2[index].dialogUserList[4]){
+        if(this.dialogForm.warningConfigRuleDetailDtoList[index].dialogUserList[4]){
           this.msgError('最多添加5个成员')
         }else{
-          this.dialogForm.dialogData2[index].dialogUserList.splice(minIndex+1, 0, {
-            dialogName:null,
-            dialogValue:null,
+          this.dialogForm.warningConfigRuleDetailDtoList[index].dialogUserList.splice(minIndex+1, 0, {
+            userName:null,
+            mobile:null,
+            userId:null,
           })
         }
       },
       //删除规则人员
       delMinDialogData(index,minIndex){
-        if(!this.dialogForm.dialogData2[index].dialogUserList[1]){
+        if(!this.dialogForm.warningConfigRuleDetailDtoList[index].dialogUserList[1]){
           this.msgError('至少保留一个成员')
         }else{
-          this.dialogForm.dialogData2[index].dialogUserList.splice(minIndex,1)
+          this.dialogForm.warningConfigRuleDetailDtoList[index].dialogUserList.splice(minIndex,1)
+          this.dialogForm.warningConfigRuleDetailDtoList[index].userIds.splice(minIndex,1)
         }
       },
+      //获取数据列表
+      getList(){
+        systemConfigRuleList(this.queryParams).then(response => {
+          this.$set(this,'dataList',response.data.records);
+          this.$set(this,'total',response.data.total);
+        });
+      },
       //弹层提交
       dialogSubmit(){
+        let self=this;
         this.$refs["dialogForm"].validate(valid => {
           if (valid) {
+            self.dialogForm.warningConfigRuleDetailDtoList.forEach(function(item) {
+              let list=[];
+              item.dialogUserList.forEach(function(item2) {
+                list.push(item2.userId)
+              })
+              item.userIds=list.join(',')
+            })
+            if (self.dialogForm.ruleId){//编辑
+              systemConfigRuleUpdate(self.dialogForm).then(response => {
+                self.msgSuccess("提交成功")
+                self.$set(this,'dialogType',false);
+                self.getList()
+              });
+            }else{//新增
+              systemConfigRuleAdd(self.dialogForm).then(response => {
+                self.msgSuccess("提交成功")
+                self.$set(this,'dialogType',false);
+                self.getList()
+              });
+            }
+
 
           }
         })
@@ -829,26 +950,42 @@
         }
       },
       shadeOpen(index,minIndex){
+        if (!this.dialogForm.deptId){
+          this.msgError('请先选择适用学院!')
+          return
+        }
         this.$set(this,'shadeIndex',index);
         this.$set(this,'shadeMinIndex',minIndex);
-        this.$set(this,'shadeName','');
-        this.$set(this,'shadeMobile','');
+        this.$set(this,'userName','');
+        this.$set(this,'mobile','');
+        this.$set(this,'userId','');
         this.$set(this.shadeForm,'userId','');
         this.$set(this,'shadeType',true);
       },
       shadeOut(){
         this.$set(this,'shadeIndex',null);
         this.$set(this,'shadeMinIndex',null);
-        this.$set(this,'shadeName','');
-        this.$set(this,'shadeMobile','');
+        this.$set(this,'userName','');
+        this.$set(this,'mobile','');
+        this.$set(this,'userId','');
         this.$set(this.shadeForm,'userId','');
         this.$set(this,'shadeType',false);
       },
+      //学院选中
+      deptChange(){
+        for (let i=0;i<this.deptOptions.length;i++){
+          if (this.dialogForm.deptId==this.deptOptions[i].deptId){
+            this.$set(this.dialogForm, 'deptName', this.deptOptions[i].deptName)
+          }
+        }
+      },
       shadeUp(){
+        console.log(this.dialogForm.warningConfigRuleDetailDtoList)
         this.$refs["shadeForm"].validate(valid => {
           if (valid) {
-            this.$set(this.dialogForm.dialogData2[this.shadeIndex].dialogUserList[this.shadeMinIndex],'dialogName',this.shadeName);
-            this.$set(this.dialogForm.dialogData2[this.shadeIndex].dialogUserList[this.shadeMinIndex],'dialogValue',this.shadeMobile);
+            this.$set(this.dialogForm.warningConfigRuleDetailDtoList[this.shadeIndex].dialogUserList[this.shadeMinIndex],'userName',this.userName);
+            this.$set(this.dialogForm.warningConfigRuleDetailDtoList[this.shadeIndex].dialogUserList[this.shadeMinIndex],'mobile',this.mobile);
+            this.$set(this.dialogForm.warningConfigRuleDetailDtoList[this.shadeIndex].dialogUserList[this.shadeMinIndex],'userId',this.userId);
             this.$set(this,'shadeType',false);
           }
         })
@@ -857,14 +994,16 @@
         let self = this;
         for(let i=0;i<self.optionsUser.length;i++){
           if(self.optionsUser[i].userId == val){
-            this.$set(this,'shadeName',self.optionsUser[i].userName);
-            this.$set(this,'shadeMobile',self.optionsUser[i].mobile);
+            this.$set(this,'userName',self.optionsUser[i].userName);
+            this.$set(this,'mobile',self.optionsUser[i].mobile);
+            this.$set(this,'userId',self.optionsUser[i].userId);
           }
         }
       },
       userSelectList(query) {
+        let self=this;
         if (query !== '' && query.length>1) {
-          systemUserSelectUser({"userName":query,'userType':'1'}).then(response => {
+          systemUserSelect({"userName":query,'userType':'','deptId':self.dialogForm.deptId}).then(response => {
             this.$set(this,'optionsUser',response.data);
           });
         } else {

+ 1 - 0
src/views/integratedManagement/messageNotice/warningNotice/index.vue

@@ -116,6 +116,7 @@
   export default {
     name: 'index',
     components: {
+      forewarningConfig,
       infoPage
     },
     data () {