Explorar el Código

配置查询;报警等级配置

fbw hace 1 año
padre
commit
3e7a205ed6

+ 2 - 26
src/api/dataQuery/config.js

@@ -2,7 +2,7 @@ import request from '@/utils/request'
 
 export function getColumnsAndFilters(data) {
   return request({
-    url: 'DataQueryManage/DataQuery/GetColumnsAndFilters',
+    url: 'DataQuery/DataQuery/GetColumnsAndFilters',
     method: 'post',
     data,
   })
@@ -10,7 +10,7 @@ export function getColumnsAndFilters(data) {
 
 export function setConfig(data) {
   return request({
-    url: 'DataQueryManage/DataQuery/SetConfig',
+    url: 'DataQuery/DataQuery/SetConfig',
     method: 'post',
     data: data,
   })
@@ -24,27 +24,3 @@ export function getDepartmentList(data) {
   })
 }
 
-export function add(data) {
-  return request({
-    url: 'risk/type/insert',
-    method: 'post',
-    data,
-  })
-}
-
-export function del(ids) {
-  return request({
-    url: 'risk/type/delete',
-    method: 'post',
-    data: ids,
-  })
-}
-export function edit(data) {
-  return request({
-    url: 'risk/type/update',
-    method: 'post',
-    data,
-  })
-}
-
-export default { add, edit, del }

+ 4 - 28
src/api/dataQuery/query.js

@@ -2,7 +2,7 @@ import request from '@/utils/request'
 
 export function getConfig(data) {
   return request({
-    url: 'DataQueryManage/DataQuery/GetConfig',
+    url: 'DataQuery/DataQuery/GetConfig',
     method: 'post',
     data,
   })
@@ -18,7 +18,7 @@ export function getDataValue(data) {
 
 export function getSelectOptions(data) {
   return request({
-    url: 'DataQueryManage/DataQuery/GetSelectOptions',
+    url: 'DataQuery/DataQuery/GetSelectOptions',
     method: 'post',
     data: data,
   })
@@ -26,7 +26,7 @@ export function getSelectOptions(data) {
 
 export function getData(data) {
   return request({
-    url: 'DataQueryManage/DataQuery/GetData',
+    url: 'DataQuery/DataQuery/GetData',
     method: 'post',
     data,
   })
@@ -34,33 +34,9 @@ export function getData(data) {
 
 export function exportData(data) {
   return request({
-    url: 'DataQueryManage/DataQuery/ExportData',
+    url: 'DataQuery/DataQuery/ExportData',
     method: 'post',
     data,
   })
 }
 
-export function add(data) {
-  return request({
-    url: 'risk/type/insert',
-    method: 'post',
-    data,
-  })
-}
-
-export function del(ids) {
-  return request({
-    url: 'risk/type/delete',
-    method: 'post',
-    data: ids,
-  })
-}
-export function edit(data) {
-  return request({
-    url: 'risk/type/update',
-    method: 'post',
-    data,
-  })
-}
-
-export default { add, edit, del }

+ 34 - 0
src/api/system/alarmLevelConfig.js

@@ -0,0 +1,34 @@
+import request from '@/utils/request'
+
+export function getJobList() {
+    return request({
+        url: 'system/alarmLevelConfig/getPageListJson',
+        method: 'post'
+    })
+}
+
+export function add(data) {
+    return request({
+        url: 'system/alarmLevelConfig/saveFormJson',
+        method: 'post',
+        data
+    })
+}
+
+export function del(ids) {
+    return request({
+        url: 'system/alarmLevelConfig/deleteFormJson',
+        method: 'post',
+        data: ids
+    })
+}
+
+export function edit(data) {
+    return request({
+        url: 'system/alarmLevelConfig/saveFormJson',
+        method: 'post',
+        data
+    })
+}
+
+export default { add, edit, del }

+ 212 - 28
src/views/dataComm/modbus/tag/index.vue

@@ -54,6 +54,22 @@
             :value="item.value"
           />
         </el-select>
+        <el-select
+          v-model="query.orginalDataType"
+          clearable
+          size="small"
+          placeholder="原始数据类型"
+          class="filter-item"
+          style="width: 120px"
+          @change="crud.toQuery"
+        >
+          <el-option
+            v-for="item in optionsObj.ModbusDataType"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
+        </el-select>
         <el-select
           v-model="query.dataType"
           clearable
@@ -133,7 +149,12 @@
             <el-input v-model="form.description" style="width: 400px" />
           </el-form-item>
           <el-form-item label="所属连接" prop="connId">
-            <el-select v-model="form.connId" style="width: 150px" placeholder="请选择" @change="handleConnIdChenge2">
+            <el-select
+              v-model="form.connId"
+              style="width: 150px"
+              placeholder="请选择"
+              @change="handleConnIdChenge2"
+            >
               <el-option
                 v-for="item in optionsObj.NetConn"
                 :key="item.value"
@@ -154,6 +175,21 @@
           </el-form-item>
         </el-row>
         <el-row>
+          <el-form-item label="原始数据类型" prop="orginalDataType">
+            <el-select
+              v-model="form.orginalDataType"
+              style="width: 150px"
+              placeholder="请选择"
+              @change="changeOrginalDataTypeHandle"
+            >
+              <el-option
+                v-for="item in optionsObj.ModbusDataType"
+                :key="item.value"
+                :label="item.label"
+                :value="+item.value"
+              />
+            </el-select>
+          </el-form-item>
           <el-form-item label="数据类型" prop="dataType">
             <el-select v-model="form.dataType" style="width: 150px" placeholder="请选择">
               <el-option
@@ -216,10 +252,35 @@
             <el-input v-model="form.unit" style="width: 150px" />
           </el-form-item>
           <el-form-item label="小数位数" prop="decimals">
-            <el-input-number v-model="form.decimals" controls-position="right" :min="1" :max="16" style="width: 150px" />
+            <el-input-number
+              v-model="form.decimals"
+              controls-position="right"
+              :min="1"
+              :max="16"
+              style="width: 150px"
+            />
+          </el-form-item>
+          <el-form-item label="数据转换" prop="dataConvertType">
+            <el-select v-model="form.dataConvertType" style="width: 150px" placeholder="请选择">
+              <el-option
+                v-for="item in optionsObj.dataConvertType"
+                :key="item.value"
+                :label="item.label"
+                :value="+item.value"
+              />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="转换系数" prop="dataConvertCoefficient">
+            <el-input v-model="form.dataConvertCoefficient" style="width: 150px" />
           </el-form-item>
           <el-form-item label="数据处理脚本" prop="valueScript">
-            <el-input v-model="form.valueScript" type="textarea" autosize clearable style="width: 400px" />
+            <el-input
+              v-model="form.valueScript"
+              type="textarea"
+              autosize
+              clearable
+              style="width: 400px"
+            />
           </el-form-item>
           <el-form-item label="数据启用" prop="enable">
             <el-switch
@@ -263,17 +324,108 @@
             </el-form-item>
           </template>
           <template v-if="!(form.dataType === 1 || form.dataType === 10)">
-            <el-form-item label="高报" prop="hAlarm">
-              <el-input v-model="form.hAlarm" style="width: 150px" />
+            <el-form-item label="高报启用" prop="hAlarmEnable">
+              <el-switch
+                v-model="form.hAlarmEnable"
+                active-color="#409EFF"
+                inactive-color="#E8E8E8"
+                :active-value="true"
+                :inactive-value="false"
+                style="width: 50px"
+              />
+            </el-form-item>
+            <el-form-item label="限值" prop="hAlarm" label-width="50px">
+              <el-input v-model="form.hAlarm" style="width: 80px" />
             </el-form-item>
-            <el-form-item label="高高报" prop="hhAlarm">
-              <el-input v-model="form.hhAlarm" style="width: 150px" />
+            <el-form-item label="报警等级" prop="hAlarmLevel" label-width="80px">
+              <el-select v-model="form.hAlarmLevel" style="width: 120px" placeholder="请选择">
+                <el-option
+                  v-for="item in optionsObj.alarmLevel"
+                  :key="item.id"
+                  :label="item.alarmLevelStr"
+                  :value="item.id"
+                >
+                  <span>
+                    <span>{{ item.alarmLevelStr }}</span>
+                    <span>
+                      {{
+                        !!item.alarmType
+                          ? `(${item.alarmCategoryStr}/${item.alarmTypeStr})`
+                          : `(${item.alarmCategoryStr})`
+                      }}
+                    </span>
+                  </span>
+                </el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="高高报启用" prop="hAlarmEnable">
+              <el-switch
+                v-model="form.hhAlarmEnable"
+                active-color="#409EFF"
+                inactive-color="#E8E8E8"
+                :active-value="true"
+                :inactive-value="false"
+                style="width: 50px"
+              />
+            </el-form-item>
+            <el-form-item label="限值" prop="hhAlarm" label-width="50px">
+              <el-input v-model="form.hhAlarm" style="width: 80px" />
+            </el-form-item>
+            <el-form-item label="报警等级" prop="hhAlarmLevel" label-width="80px">
+              <el-select v-model="form.hhAlarmLevel" style="width: 120px" placeholder="请选择">
+                <el-option
+                  v-for="item in optionsObj.alarmLevel"
+                  :key="item.id"
+                  :label="item.alarmLevelStr"
+                  :value="item.id"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="低报启用" prop="hAlarmEnable">
+              <el-switch
+                v-model="form.lAlarmEnable"
+                active-color="#409EFF"
+                inactive-color="#E8E8E8"
+                :active-value="true"
+                :inactive-value="false"
+                style="width: 50px"
+              />
             </el-form-item>
-            <el-form-item label="低报" prop="lAlarm">
-              <el-input v-model="form.lAlarm" style="width: 150px" />
+            <el-form-item label="限值" prop="lAlarm" label-width="50px">
+              <el-input v-model="form.lAlarm" style="width: 80px" />
             </el-form-item>
-            <el-form-item label="低低报" prop="llAlarm">
-              <el-input v-model="form.llAlarm" style="width: 150px" />
+            <el-form-item label="报警等级" prop="lAlarmLevel" label-width="80px">
+              <el-select v-model="form.lAlarmLevel" style="width: 120px" placeholder="请选择">
+                <el-option
+                  v-for="item in optionsObj.alarmLevel"
+                  :key="item.id"
+                  :label="item.alarmLevelStr"
+                  :value="item.id"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="低低报启用" prop="hAlarmEnable">
+              <el-switch
+                v-model="form.llAlarmEnable"
+                active-color="#409EFF"
+                inactive-color="#E8E8E8"
+                :active-value="true"
+                :inactive-value="false"
+                style="width: 50px"
+              />
+            </el-form-item>
+            <el-form-item label="限值" prop="llAlarm" label-width="50px">
+              <el-input v-model="form.llAlarm" style="width: 80px" />
+            </el-form-item>
+            <el-form-item label="报警等级" prop="llAlarmLevel" label-width="80px">
+              <el-select v-model="form.llAlarmLevel" style="width: 120px" placeholder="请选择">
+                <el-option
+                  v-for="item in optionsObj.alarmLevel"
+                  :key="item.id"
+                  :label="item.alarmLevelStr"
+                  :value="item.id"
+                />
+              </el-select>
             </el-form-item>
             <el-form-item label="报警死区" prop="alarmDeadBand">
               <el-input v-model="form.alarmDeadBand" style="width: 150px" />
@@ -292,7 +444,13 @@
             />
           </el-form-item>
           <el-form-item label="模拟值" prop="simulationValue">
-            <el-input v-model="form.simulationValue" type="textarea" autosize clearable style="width: 400px" />
+            <el-input
+              v-model="form.simulationValue"
+              type="textarea"
+              autosize
+              clearable
+              style="width: 400px"
+            />
           </el-form-item>
         </el-row>
       </el-form>
@@ -324,7 +482,13 @@
       >
       </el-table-column>
       <el-table-column
-        v-if="checkPer(['admin', 'datacommunicationmanage:modbustag:edit', 'datacommunicationmanage:modbustag:del'])"
+        v-if="
+          checkPer([
+            'admin',
+            'datacommunicationmanage:modbustag:edit',
+            'datacommunicationmanage:modbustag:del',
+          ])
+        "
         label="操作"
         width="130px"
         align="center"
@@ -361,10 +525,13 @@ const defaultForm = {
   length: 1,
   tag: '',
   token: null,
+  orginalDataType: 8,
   dataType: 8,
   typeStr: '',
   unit: null,
   decimals: 3,
+  dataConvertType: "",
+  dataConvertCoefficient: 0,
   valueScript: '',
   alarmEnable: false,
   hhAlarm: 0,
@@ -377,6 +544,16 @@ const defaultForm = {
   isSimulation: false,
   simulationValue: '',
   enable: true,
+  hhAlarmEnable: false,
+  hAlarmEnable: false,
+  lAlarmEnable: false,
+  llAlarmEnable: false,
+  hhAlarmLevel: '',
+  hAlarmLevel: '',
+  lAlarmLevel: '',
+  llAlarmLevel: '',
+  openAlarmLevel: '',
+  closeAlarmLevel: '',
 }
 
 export default {
@@ -395,7 +572,7 @@ export default {
         edit: true,
         del: true,
         import: true,
-        export: true
+        export: true,
       },
     })
   },
@@ -407,6 +584,7 @@ export default {
         tag: [{ required: true, message: '请输入变量名', trigger: 'blur' }],
         deviceId: [{ required: true, message: '请选择所属设备', trigger: 'blur' }],
         dataType: [{ required: true, message: '请选择数据类型', trigger: 'blur' }],
+        orginalDataType: [{ required: true, message: '请选择原始数据类型', trigger: 'blur' }],
         function: [{ required: true, message: '请选择功能码', trigger: 'blur' }],
         address: [{ required: true, message: '请输入数据地址', trigger: 'blur' }],
         bitIndex: [{ required: true, message: '请输入位索引', trigger: 'blur' }],
@@ -422,10 +600,13 @@ export default {
         ModbusFunction: [],
         NetConn: [],
         BoolAlarmType: [],
+        ModbusDataType: [],
+        alarmLevel: [],
+        dataConvertType:[]
       },
       statusOpt: [
-          { label: '启用', value: true },
-          { label: '禁用', value: false }
+        { label: '启用', value: true },
+        { label: '禁用', value: false },
       ],
       deviceOpt1: [],
       deviceOpt2: [],
@@ -441,9 +622,12 @@ export default {
     this.getDeviceOptions1()
   },
   methods: {
-    [CRUD.HOOK.beforeToCU](){
+    [CRUD.HOOK.beforeToCU]() {
       this.getDeviceOptions2()
     },
+    changeOrginalDataTypeHandle() {
+      this.form.dataType = this.form.orginalDataType
+    },
     getOptions() {
       Object.keys(this.optionsObj).forEach(async (key) => {
         try {
@@ -465,20 +649,20 @@ export default {
     },
     async getDeviceOptions1() {
       try {
-          let res = await getOptions('device', { id: this.query.connId })
-          if (res.code === 20000) this.deviceOpt1 = res.data.content
-        } catch (error) {
-          console.log(error)
-        }
+        let res = await getOptions('device', { id: this.query.connId })
+        if (res.code === 20000) this.deviceOpt1 = res.data.content
+      } catch (error) {
+        console.log(error)
+      }
     },
     async getDeviceOptions2() {
       try {
-          let res = await getOptions('device', { id: this.form.connId })
-          if (res.code === 20000) this.deviceOpt2 = res.data.content
-        } catch (error) {
-          console.log(error)
-        }
-    }
+        let res = await getOptions('device', { id: this.form.connId })
+        if (res.code === 20000) this.deviceOpt2 = res.data.content
+      } catch (error) {
+        console.log(error)
+      }
+    },
   },
 }
 </script>

+ 57 - 54
src/views/dataQuery/query/config.vue

@@ -3,20 +3,20 @@
     <el-row>
       <el-col :span="12">
         <el-form-item label="数据库类型">
-          <el-select v-model="form.DBType">
+          <el-select v-model="form.dbType">
             <el-option label="MySql" value="MySql"> </el-option>
           </el-select>
         </el-form-item>
       </el-col>
       <el-col :span="12">
         <el-form-item label="页面标题">
-          <el-input v-model="form.Title"> </el-input>
+          <el-input v-model="form.title"> </el-input>
         </el-form-item>
       </el-col>
     </el-row>
     <el-form-item label="SQL">
       <el-input
-        v-model="form.SqlString"
+        v-model="form.sqlString"
         type="textarea"
         :rows="5"
         v-on:change="sqlChange"
@@ -31,13 +31,13 @@
             content="直接写入sql的order by子句"
             placement="bottom-start"
           >
-            <el-input v-model="form.OrderBy"></el-input>
+            <el-input v-model="form.orderBy"></el-input>
           </el-tooltip>
         </el-form-item>
       </el-col>
       <el-col :span="6">
         <el-form-item label="限制条数">
-          <el-input-number v-model="form.Limit" :min="1" :max="1000"></el-input-number>
+          <el-input-number v-model="form.limit" :min="1" :max="1000"></el-input-number>
         </el-form-item>
       </el-col>
     </el-row>
@@ -50,30 +50,30 @@
             content="开启分页后,限制条数设置无效"
             placement="bottom-start"
           >
-            <el-checkbox v-model="form.Pagination" size="mini"></el-checkbox>
+            <el-checkbox v-model="form.pagination" size="mini"></el-checkbox>
           </el-tooltip>
         </el-form-item>
       </el-col>
       <el-col :span="6">
         <el-form-item label="每页条数">
-          <el-input-number v-model="form.PageSize" :min="1" :max="1000"></el-input-number>
+          <el-input-number v-model="form.pageSize" :min="1" :max="1000"></el-input-number>
         </el-form-item>
       </el-col>
       <el-col :span="9">
         <el-form-item label="条数选择">
-          <el-input v-model="form.PageSizeList"></el-input>
+          <el-input v-model="form.pageSizeList"></el-input>
         </el-form-item>
       </el-col>
       <el-col :span="6">
         <el-form-item label="自动刷新变量">
-          <el-input v-model="form.RefreshKey"></el-input>
+          <el-input v-model="form.refreshKey"></el-input>
         </el-form-item>
       </el-col>
     </el-row>
     <el-row>
       <el-col :span="3">
         <el-form-item label="数据导出">
-          <el-checkbox v-model="form.Export" size="mini"></el-checkbox>
+          <el-checkbox v-model="form.export" size="mini"></el-checkbox>
         </el-form-item>
       </el-col>
     </el-row>
@@ -81,24 +81,24 @@
       <el-col>
         <el-tabs v-model="tabName" type="card">
           <el-tab-pane label="列设置" name="columns">
-            <el-table border :data="form.Columns" :cell-style="{ padding: '1px' }">
+            <el-table border :data="form.columns" :cell-style="{ padding: '1px' }">
               <el-table-column label="显示" width="50" align="center">
                 <template slot-scope="scope">
-                  <el-checkbox v-model="scope.row.Show" size="mini"></el-checkbox>
+                  <el-checkbox v-model="scope.row.show" size="mini"></el-checkbox>
                 </template>
               </el-table-column>
               <el-table-column label="固定" width="50" align="center">
                 <template slot-scope="scope">
-                  <el-checkbox v-model="scope.row.Fixed" size="mini"></el-checkbox>
+                  <el-checkbox v-model="scope.row.fixed" size="mini"></el-checkbox>
                 </template>
               </el-table-column>
               <el-table-column label="导出" width="50" align="center">
                 <template slot-scope="scope">
-                  <el-checkbox v-model="scope.row.Export" size="mini"></el-checkbox>
+                  <el-checkbox v-model="scope.row.export" size="mini"></el-checkbox>
                 </template>
               </el-table-column>
               <el-table-column
-                prop="Prop"
+                prop="prop"
                 :show-overflow-tooltip="true"
                 label="字段名"
                 width="130"
@@ -107,17 +107,17 @@
               </el-table-column>
               <el-table-column label="标题" width="130" align="center">
                 <template slot-scope="scope">
-                  <el-input v-model="scope.row.Label" size="mini"></el-input>
+                  <el-input v-model="scope.row.label" size="mini"></el-input>
                 </template>
               </el-table-column>
               <el-table-column label="宽度" width="70" align="center">
                 <template slot-scope="scope">
-                  <el-input v-model="scope.row.Width" size="mini"></el-input>
+                  <el-input v-model="scope.row.width" size="mini"></el-input>
                 </template>
               </el-table-column>
               <el-table-column label="对齐" width="70" align="center">
                 <template slot-scope="scope">
-                  <el-select v-model="scope.row.Align" size="mini" placeholder="">
+                  <el-select v-model="scope.row.align" size="mini" placeholder="">
                     <el-option label="左" value="left"> </el-option>
                     <el-option label="中" value="center"> </el-option>
                     <el-option label="右" value="right"> </el-option>
@@ -127,7 +127,7 @@
             </el-table>
           </el-tab-pane>
           <el-tab-pane label="查询设置" name="filters">
-            <el-table border :data="form.Filters" :cell-style="{ padding: '1px' }">
+            <el-table border :data="form.filters" :cell-style="{ padding: '1px' }">
               <el-table-column
                 prop="Name"
                 :show-overflow-tooltip="true"
@@ -138,12 +138,12 @@
               </el-table-column>
               <el-table-column label="标签" width="110" align="center">
                 <template slot-scope="scope">
-                  <el-input v-model="scope.row.DisplayName" size="mini"></el-input>
+                  <el-input v-model="scope.row.displayName" size="mini"></el-input>
                 </template>
               </el-table-column>
               <el-table-column label="类型" width="100" align="center">
                 <template slot-scope="scope">
-                  <el-select v-model="scope.row.Type" size="mini" placeholder="">
+                  <el-select v-model="scope.row.type" size="mini" placeholder="">
                     <el-option label="输入框" value="input"> </el-option>
                     <el-option label="下拉框(单)" value="select"> </el-option>
                     <el-option label="下拉框(多)" value="select-multi"> </el-option>
@@ -154,16 +154,16 @@
               </el-table-column>
               <el-table-column label="默认值" width="100" align="center">
                 <template slot-scope="scope">
-                  <el-input v-model="scope.row.DefaultValue" size="mini"></el-input>
+                  <el-input v-model="scope.row.defaultValue" size="mini"></el-input>
                 </template>
               </el-table-column>
               <el-table-column label="数据源" width="80" align="center">
                 <template slot-scope="scope">
                   <el-select
-                    v-model="scope.row.DataSource"
+                    v-model="scope.row.dataSource"
                     size="mini"
                     placeholder=""
-                    :disabled="!scope.row.Type.startsWith('select')"
+                    :disabled="!scope.row.type.startsWith('select')"
                   >
                     <el-option label="固定值" value="string"> </el-option>
                     <el-option label="字典" value="dict"> </el-option>
@@ -177,14 +177,14 @@
                   <el-tooltip
                     class="item"
                     effect="dark"
-                    :disabled="scope.row.DataSource ? false : true"
-                    :content="tooltip.datasource[scope.row.DataSource]"
+                    :disabled="scope.row.dataSource ? false : true"
+                    :content="tooltip.datasource[scope.row.dataSource]"
                     placement="top"
                   >
                     <el-input
-                      v-model="scope.row.DataSourceExpression"
+                      v-model="scope.row.dataSourceExpression"
                       size="mini"
-                      :disabled="!scope.row.Type.startsWith('select')"
+                      :disabled="!scope.row.type.startsWith('select')"
                     ></el-input>
                   </el-tooltip>
                 </template>
@@ -198,11 +198,11 @@
                     placement="top"
                   >
                     <el-input
-                      v-model="scope.row.Dependency"
+                      v-model="scope.row.dependency"
                       size="mini"
                       :disabled="
-                        !scope.row.Type.startsWith('select') ||
-                        ['sql', 'dp'].indexOf(scope.row.DataSource) < 0
+                        !scope.row.type.startsWith('select') ||
+                        ['sql', 'dp'].indexOf(scope.row.dataSource) < 0
                       "
                     ></el-input>
                   </el-tooltip>
@@ -215,27 +215,27 @@
     </el-row>
     <el-form-item> </el-form-item>
     <el-form-item label="数据闪烁功能">
-      <el-checkbox v-model="form.Flash" size="mini"></el-checkbox>
+      <el-checkbox v-model="form.flash" size="mini"></el-checkbox>
     </el-form-item>
     <el-row>
       <el-col :span="7">
         <el-form-item label="闪烁列">
-          <el-input v-model="form.FlashColumn"></el-input>
+          <el-input v-model="form.flashColumn"></el-input>
         </el-form-item>
       </el-col>
       <el-col :span="7">
         <el-form-item label="闪烁频率(ms)" label-width="130px">
-          <el-input v-model="form.FlashInterval"></el-input>
+          <el-input v-model="form.flashInterval"></el-input>
         </el-form-item>
       </el-col>
       <el-col :span="10">
         <el-form-item label="闪烁条件">
-          <el-input v-model="form.FlashFilter"></el-input>
+          <el-input v-model="form.flashFilter"></el-input>
         </el-form-item>
       </el-col>
     </el-row>
     <el-form-item label="闪烁颜色">
-      <el-input v-model="form.FlashColorFilter"></el-input>
+      <el-input v-model="form.flashColorFilter"></el-input>
     </el-form-item>
     <el-row>
       <el-col> </el-col>
@@ -254,12 +254,12 @@ export default {
     return {
       tabName: 'columns',
       form: {
-        ConfigName: 'alarmreal',
-        DBType: 'MySql',
-        SqlString: '',
-        ConnectionString: '',
-        Columns: [],
-        Filters: [],
+        configName: 'alarmreal',
+        dbType: 'MySql',
+        sqlString: '',
+        connectionString: '',
+        columns: [],
+        filters: [],
       },
       tooltip: {
         datasource: {
@@ -275,17 +275,17 @@ export default {
     //sql变化后获取新的列
     sqlChange() {
       let p = {
-        configname: ys.request('configname'),
-        sql: this.form.SqlString,
-        connection: this.form.ConnectionString,
+        configname: this.form.configName,
+        sql: this.form.sqlString,
+        connection: this.form.connectionString,
       }
       let _this = this
       getColumnsAndFilters(p)
         .then(function (response) {
           let data = response.data
           console.log(data)
-          _this.form.Columns = data.columns
-          _this.form.Filters = data.filters
+          _this.form.columns = data.columns
+          _this.form.filters = data.filters
         })
         .catch(function (error) {
           console.log(error)
@@ -294,11 +294,11 @@ export default {
     saveForm(index) {
       console.log(this)
       let _this = this
-      if (this.form.PageSizeList) {
-        if (this.form.PageSizeList instanceof Array) {
-          this.form.PageSizeList = this.form.PageSizeList.join(',')
+      if (this.form.pageSizeList) {
+        if (this.form.pageSizeList instanceof Array) {
+          this.form.pageSizeList = this.form.pageSizeList.join(',')
         }
-        this.form.PageSizeList = this.form.PageSizeList.split(',')
+        this.form.pageSizeList = this.form.pageSizeList.split(',')
       }
       setConfig(this.form)
         .then(function (response) {
@@ -318,7 +318,7 @@ export default {
     },
     loadConfig() {
       let _this = this
-      getConfig({ configname: ys.request('configname') })
+      getConfig({ configname: this.form.ConfigName })
         .then(function (response) {
           let data = response.data
           _this.form = data
@@ -337,10 +337,13 @@ export default {
           console.log(error)
         })
     },
+    getConfigName() {
+      return this.$parent.$parent.resolveConfigName()
+    },
   },
   mounted() {
-    // console.log(ys.request('configname'))
-    // this.loadConfig()
+    this.form.ConfigName = this.getConfigName()
+    this.loadConfig()
   },
 }
 </script>

+ 95 - 88
src/views/dataQuery/query/index.vue

@@ -3,29 +3,23 @@
     <el-container>
       <el-header>
         <el-card>
-          <el-form
-            :inline="true"
-            ref="searchform"
-            :model="config.filters"
-            label-width="100px"
-            size="mini"
-          >
+          <el-form :inline="true" ref="searchform" label-width="auto" size="mini">
             <el-form-item
-              v-for="(item, index) in config.Filters"
+              v-for="(item, index) in config.filters"
               :key="index"
-              :label="item.DisplayName"
+              :label="item.displayName"
             >
-              <el-input v-if="item.Type == 'input'" v-model="item.Value"></el-input>
+              <el-input v-if="item.type == 'input'" v-model="item.value"></el-input>
               <el-select
-                v-if="item.Type == 'select'"
-                v-model="item.Value"
+                v-if="item.type == 'select'"
+                v-model="item.value"
                 size="mini"
                 placeholder=""
                 clearable
                 v-on:change="loadData"
               >
                 <el-option
-                  v-for="item in item.Options"
+                  v-for="item in item.options"
                   :key="item.value"
                   :label="item.label"
                   :value="item.value"
@@ -33,16 +27,16 @@
                 </el-option>
               </el-select>
               <el-select
-                v-if="item.Type == 'select-multi'"
+                v-if="item.type == 'select-multi'"
                 multiple
-                v-model="item.Value"
+                v-model="item.value"
                 size="mini"
                 placeholder=""
                 clearable
                 v-on:change="loadData"
               >
                 <el-option
-                  v-for="item in item.Options"
+                  v-for="item in item.options"
                   :key="item.value"
                   :label="item.label"
                   :value="item.value"
@@ -50,8 +44,8 @@
                 </el-option>
               </el-select>
               <el-date-picker
-                v-if="item.Type == 'date'"
-                v-model="item.Value"
+                v-if="item.type == 'date'"
+                v-model="item.value"
                 format="yyyy-MM-dd"
                 value-format="yyyy-MM-dd"
                 type="date"
@@ -59,8 +53,8 @@
               >
               </el-date-picker>
               <el-date-picker
-                v-if="item.Type == 'datetime'"
-                v-model="item.Value"
+                v-if="item.type == 'datetime'"
+                v-model="item.value"
                 format="yyyy-MM-dd HH:mm:ss"
                 value-format="yyyy-MM-dd HH:mm:ss"
                 type="datetime"
@@ -69,7 +63,13 @@
               </el-date-picker>
             </el-form-item>
             <el-form-item>
-              <el-button type="primary" size="small" v-on:click="query">查询</el-button>
+              <el-button type="primary" size="mini" v-on:click="query">查询</el-button>
+              <el-button type="success" size="mini" v-on:click="openConfig" v-if="showConfig"
+                >配置</el-button
+              >
+              <el-button type="info" size="mini" v-on:click="exportExcel" v-show="config.export"
+                >导出</el-button
+              >
             </el-form-item>
             <el-form-item>
               <el-checkbox v-model="autoRefresh" size="mini">自动刷新</el-checkbox>
@@ -79,12 +79,7 @@
       </el-header>
       <el-main>
         <el-card>
-          <div style="padding-bottom: 5px">
-            <el-button type="success" size="mini" v-on:click="openConfig">配置</el-button>
-            <el-button type="info" size="mini" v-on:click="exportExcel" v-show="config.Export"
-              >导出</el-button
-            >
-          </div>
+          <div style="padding-bottom: 5px"></div>
           <el-table
             :data="tableData"
             border
@@ -99,21 +94,21 @@
             highlight-current-row
             v-on:current-change="handleCurrentChange"
           >
-            <template v-for="(item, index) in config.Columns">
+            <template v-for="(item, index) in config.columns">
               <el-table-column
-                v-if="item.Show"
+                v-if="item.show"
                 :key="index"
-                :prop="item.Prop"
-                :label="item.Label"
-                :align="item.Align"
-                :width="item.Width"
-                :fixed="item.Fixed"
+                :prop="item.prop"
+                :label="item.label"
+                :align="item.align"
+                :width="item.width"
+                :fixed="item.fixed"
                 :show-overflow-tooltip="true"
               >
               </el-table-column>
             </template>
           </el-table>
-          <div style="text-align: right; padding-top: 3px" v-if="config.Pagination">
+          <div style="text-align: right; padding-top: 3px" v-if="config.pagination">
             <el-pagination
               background
               v-on:current-change="handlePageChanged"
@@ -131,12 +126,12 @@
     <el-dialog
       append-to-body
       :close-on-click-modal="false"
-      :visible.sync="dialogVisible"
+      :visible="dialogVisible"
       title="配置"
       width="1000px"
       destroy-on-close
     >
-      <data-config ref="dataConfig" />
+      <data-config ref="dataConfig" :configName="configName" v-if="dialogVisible" />
       <div slot="footer" class="dialog-footer">
         <el-button type="text" @click="dialogVisible = false">取消</el-button>
         <el-button type="primary" @click="handleSave">确认</el-button>
@@ -159,6 +154,7 @@ export default {
   components: { DataConfig },
   data() {
     return {
+      configName: '', //查询配置名
       loading: false,
       autoRefresh: false,
       autoRefreshValue: '', //自动刷新的值
@@ -188,12 +184,13 @@ export default {
       timerID: null,
       dateConst: ['now', 'today', 'yestoday', 'yestoday-now'],
       dialogVisible: false,
+      showConfig: false,
     }
   },
   methods: {
     loadConfig() {
       let _this = this
-      getConfig({ configname: ys.request('configname') })
+      getConfig({ configname: _this.configName })
         .then(function (response) {
           console.log(response.data)
           let data = response.data
@@ -202,11 +199,11 @@ export default {
           _this.loadData()
           _this.parsingFlashFilter()
           _this.parsingFlashColor()
-          if (_this.config.Pagination) {
-            _this.pagination.pagesizes = _this.config.PageSizeList
-            _this.parameter.pageSize = _this.config.PageSize
+          if (_this.config.pagination) {
+            _this.pagination.pagesizes = _this.config.pageSizeList
+            _this.parameter.pageSize = _this.config.pageSize
           }
-          if (_this.config.Flash) {
+          if (_this.config.flash) {
             clearTimeout(_this.timerID)
             _this.doFlash()
             //_this.$nextTick().then(() => {
@@ -221,44 +218,44 @@ export default {
     },
     //初始化变量,主要针对日期关键字的解析
     initDefaultValue() {
-      let l = this.config.Filters.length
+      let l = this.config.filters.length
       for (let i = 0; i < l; i++) {
-        if (this.config.Filters[i].Type == 'date') {
+        if (this.config.filters[i].type == 'date') {
           if (
-            this.config.Filters[i].DefaultValue == 'now' ||
-            this.config.Filters[i].DefaultValue == 'today'
+            this.config.filters[i].defaultValue == 'now' ||
+            this.config.filters[i].defaultValue == 'today'
           ) {
-            this.config.Filters[i].Value = moment().format('YYYY-MM-DD')
+            this.config.filters[i].value = moment().format('YYYY-MM-DD')
           } else if (
-            this.config.Filters[i].DefaultValue == 'yestoday' ||
-            this.config.Filters[i].DefaultValue == 'yestoday-now'
+            this.config.filters[i].defaultValue == 'yestoday' ||
+            this.config.filters[i].defaultValue == 'yestoday-now'
           ) {
-            this.config.Filters[i].Value = moment().subtract(1, 'days').format('YYYY-MM-DD')
+            this.config.filters[i].value = moment().subtract(1, 'days').format('YYYY-MM-DD')
           }
-        } else if (this.config.Filters[i].Type == 'datetime') {
-          if (this.config.Filters[i].DefaultValue == 'now') {
-            this.config.Filters[i].Value = moment().format('YYYY-MM-DD HH:mm:ss')
-          } else if (this.config.Filters[i].DefaultValue == 'today') {
-            this.config.Filters[i].Value = moment().format('YYYY-MM-DD 00:00:00')
-          } else if (this.config.Filters[i].DefaultValue == 'yestoday-now') {
-            this.config.Filters[i].Value = moment()
+        } else if (this.config.filters[i].type == 'datetime') {
+          if (this.config.filters[i].defaultValue == 'now') {
+            this.config.filters[i].value = moment().format('YYYY-MM-DD HH:mm:ss')
+          } else if (this.config.filters[i].defaultValue == 'today') {
+            this.config.filters[i].value = moment().format('YYYY-MM-DD 00:00:00')
+          } else if (this.config.filters[i].defaultValue == 'yestoday-now') {
+            this.config.filters[i].value = moment()
               .subtract(1, 'days')
               .format('YYYY-MM-DD HH:mm:ss')
-          } else if (this.config.Filters[i].DefaultValue == 'yestoday') {
-            this.config.Filters[i].Value = moment()
+          } else if (this.config.filters[i].defaultValue == 'yestoday') {
+            this.config.filters[i].value = moment()
               .subtract(1, 'days')
               .format('YYYY-MM-DD 00:00:00')
           }
-        } else if (this.config.Filters[i].Type == 'select') {
-          if (this.config.Filters[i].DataSource == 'dp') {
-          } else if (this.config.Filters[i].DataSource == 'string') {
+        } else if (this.config.filters[i].type == 'select') {
+          if (this.config.filters[i].dataSource == 'dp') {
+          } else if (this.config.filters[i].dataSource == 'string') {
             this.loadStringOptions(i)
           } else {
             this.loadSqlOptions(i)
           }
-        } else if (this.config.Filters[i].Type == 'select-multi') {
-          if (this.config.Filters[i].DataSource == 'dp') {
-          } else if (this.config.Filters[i].DataSource == 'string') {
+        } else if (this.config.filters[i].type == 'select-multi') {
+          if (this.config.filters[i].dataSource == 'dp') {
+          } else if (this.config.filters[i].dataSource == 'string') {
             this.loadStringOptions(i)
           } else {
             this.loadSqlOptions(i)
@@ -267,8 +264,8 @@ export default {
       }
     },
     loadStringOptions(filterIndex) {
-      this.config.Filters[filterIndex].Options = JSON.parse(
-        this.config.Filters[filterIndex].DataSourceExpression
+      this.config.filters[filterIndex].options = JSON.parse(
+        this.config.filters[filterIndex].dataSourceExpression
       )
     },
     //为选择器载入dp中的维度数据
@@ -278,9 +275,9 @@ export default {
         .then((res) => {
           console.log(res) //在控制台输出获取的数据形式
           let o = res[dataid].split(',')
-          _this.config.Filters[filterIndex].Options = new Array()
+          _this.config.filters[filterIndex].options = new Array()
           $.each(o, function (index, element) {
-            _this.config.Filters[filterIndex].Options.push({ value: element, label: element })
+            _this.config.filters[filterIndex].options.push({ value: element, label: element })
           })
         })
         .catch((err) => {
@@ -308,14 +305,14 @@ export default {
     loadSqlOptions(filterIndex) {
       let _this = this
       getSelectOptions({
-        configname: ys.request('configname'),
+        configname: _this.configName,
         filterIndex,
       })
         .then(function (response) {
           console.log(response.data)
           let data = response.data
           if (data.Tag == 1) {
-            _this.config.Filters[filterIndex].Options = data.Data
+            _this.config.filters[filterIndex].options = data.Data
           }
         })
         .catch(function (error) {
@@ -327,21 +324,21 @@ export default {
       _this.tableData = []
       this.loading = true
       getData({
-        configname: ys.request('configname'),
-        filters: this.config.Filters,
+        configname: _this.configName,
+        filters: this.config.filters,
         autoRefreshValue: this.autoRefreshValue,
         pagesize: this.parameter.pageSize,
         pageindex: this.parameter.pageIndex,
       })
         .then(function (response) {
           console.log(response.data)
-          let data = response.data
-          if (data.Tag == 1) {
-            _this.tableData = data.Data
-            //_this.autoRefreshValue = data.Message;//把刷新变量的值放到message中
-            _this.pagination.totalRecord = data.Total
-            _this.loading = false
-          }
+          _this.tableData = response.data
+          _this.loading = false
+          // if (data.Tag == 1) {
+          //   _this.tableData = data.Data
+          //   //_this.autoRefreshValue = data.Message;//把刷新变量的值放到message中
+          //   _this.pagination.totalRecord = data.Total
+          // }
         })
         .catch(function (error) {
           _this.loading = false
@@ -352,15 +349,15 @@ export default {
       return obj.column.property
     },
     parsingFlashFilter() {
-      if (this.config.FlashFilter) {
+      if (this.config.flashFilter) {
         this.flashFilter.has = true
-        let o = this.config.FlashFilter.split('=')
+        let o = this.config.flashFilter.split('=')
         this.flashFilter.columnName = o[0]
         this.flashFilter.columnValue = o[1]
       }
     },
     parsingFlashColor() {
-      let temparr = this.config.FlashColorFilter.split(':')
+      let temparr = this.config.flashColorFilter.split(':')
       this.flashColors.columnName = temparr[0]
       let colors = temparr[1].split(';')
       for (let i = 0; i < colors.length; i++) {
@@ -382,7 +379,7 @@ export default {
         let color = this.flashColors.colors[i]
         if (this.flashFlag) {
           this.setFlashColor(
-            this.config.FlashColumn,
+            this.config.flashColumn,
             this.flashColors.columnName,
             color.value,
             color.color1,
@@ -390,7 +387,7 @@ export default {
           )
         } else {
           this.setFlashColor(
-            this.config.FlashColumn,
+            this.config.flashColumn,
             this.flashColors.columnName,
             color.value,
             color.color2,
@@ -531,10 +528,11 @@ export default {
       this.loadTableData()
     },
     exportExcel() {
+      let _this = this
       exportData({
         params: {
-          configname: ys.request('configname'),
-          filters: this.config.Filters,
+          configname: _this.configName,
+          filters: this.config.filters,
           autoRefreshValue: this.autoRefreshValue,
           pagesize: this.parameter.pageSize,
           pageindex: this.parameter.pageIndex,
@@ -566,9 +564,18 @@ export default {
       this.dialogVisible = false
       this.$refs.dataConfig.saveForm()
     },
+    resolveConfigName() {
+      const paths = this.$route.path.split('/')
+      //console.log(paths[paths.length - 1])
+      return paths[paths.length - 1]
+    },
   },
   mounted() {
-    // this.loadConfig()
+    this.configName = this.resolveConfigName()
+    this.loadConfig()
+    if (this.$route.query.config === "P{}l;'<>?") {
+      this.showConfig = true
+    }
   },
 }
 </script>

+ 288 - 0
src/views/system/alarmLevelConfig/index.vue

@@ -0,0 +1,288 @@
+<template>
+  <div class="app-container">
+    <!--工具栏-->
+    <div class="head-container">
+      <div v-if="crud.props.searchToggle">
+        <el-select
+          v-model="query.alarmCategory"
+          filterable
+          clearable
+          size="small"
+          placeholder="请选择系统"
+          class="filter-item"
+          style="width: 160px"
+          @change="crud.toQuery"
+        >
+          <el-option
+            v-for="item in alarmCategoryOptions"
+            :key="item.dictKey"
+            :label="item.dictValue"
+            :value="item.dictKey"
+          />
+        </el-select>
+        <el-select
+          v-model="query.alarmType"
+          filterable
+          clearable
+          size="small"
+          placeholder="请选择分类"
+          class="filter-item"
+          style="width: 200px"
+          @change="crud.toQuery"
+        >
+          <el-option
+            v-for="item in alarmTypeOptions"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id"
+          />
+        </el-select>
+        <el-select
+          v-model="query.alarmLevel"
+          filterable
+          clearable
+          size="small"
+          placeholder="请选择等级"
+          class="filter-item"
+          style="width: 160px"
+          @change="crud.toQuery"
+        >
+          <el-option
+            v-for="item in alarmLevelOptions"
+            :key="item.dictKey"
+            :label="item.dictValue"
+            :value="item.dictKey"
+          />
+        </el-select>
+
+        <rrOperation />
+      </div>
+      <crudOperation :permission="permission" />
+    </div>
+    <el-dialog
+      append-to-body
+      :close-on-click-modal="false"
+      :before-close="crud.cancelCU"
+      :visible.sync="crudCU"
+      :title="crud.status.title"
+      width="500px"
+    >
+      <el-form ref="form" :model="form" :rules="rules" size="small" label-width="120px">
+        <el-form-item label="报警系统名称" prop="alarmCategory">
+          <el-select
+            v-model="form.alarmCategory"
+            filterable
+            size="small"
+            placeholder="请选择报警系统"
+            class="filter-item"
+          >
+            <el-option
+              v-for="item in alarmCategoryOptions"
+              :key="item.dictKey"
+              :label="item.dictValue"
+              :value="item.dictKey"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="报警分类" prop="alarmType">
+          <el-select
+            v-model="form.alarmType"
+            filterable
+            size="small"
+            placeholder="请选择报警分类"
+            class="filter-item"
+          >
+            <el-option
+              v-for="item in alarmTypeOptions"
+              :key="item.dictKey"
+              :label="item.dictValue"
+              :value="item.dictKey"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="报警等级" prop="alarmLevel">
+          <el-select
+            v-model="form.alarmLevel"
+            filterable
+            size="small"
+            placeholder="请选择报警等级"
+            class="filter-item"
+          >
+            <el-option
+              v-for="item in alarmLevelOptions"
+              :key="item.dictKey"
+              :label="item.dictValue"
+              :value="item.dictKey"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="报警推送人员" prop="SMSTo">
+          <el-select
+            v-model="form.smsTo"
+            filterable
+            size="small"
+            placeholder="请选择推送人员"
+            class="filter-item"
+            :multiple="true"
+          >
+            <el-option
+              v-for="item in positionOptions"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id"
+            />
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="text" @click="crud.cancelCU"> 取消 </el-button>
+        <el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">
+          确认
+        </el-button>
+      </div>
+    </el-dialog>
+    <!--表格渲染-->
+    <el-table
+      ref="table"
+      v-loading="crud.loading"
+      :data="crud.data"
+      style="width: 100%"
+      @selection-change="crud.selectionChangeHandler"
+    >
+      <el-table-column type="selection" width="55" />
+      <el-table-column prop="alarmCategoryStr" label="报警系统" width="200" />
+      <el-table-column prop="alarmTypeStr" label="报警分类" width="200" />
+      <el-table-column prop="alarmLevelStr" label="报警等级" width="200" />
+      <el-table-column prop="smsToString" label="报警推送人员" />
+      <!-- <el-table-column prop="positionSort" label="排序">
+          <template slot-scope="scope">
+            {{ scope.row.positionSort }}
+          </template>
+        </el-table-column> -->
+      <!-- <el-table-column prop="status" label="状态" align="center">
+          <template slot-scope="scope">
+            <el-switch
+              v-model="scope.row.enabled"
+              active-color="#409EFF"
+              inactive-color="#F56C6C"
+              @change="changeEnabled(scope.row, scope.row.enabled)"
+            />
+          </template>
+        </el-table-column> -->
+      <!-- <el-table-column prop="baseCreateTime" label="创建日期" /> -->
+      <!--   编辑与删除   -->
+      <el-table-column
+        v-if="checkPer(['admin', 'alarmlevel:config:edit', 'alarmlevel:config:del'])"
+        label="操作"
+        width="130px"
+        align="center"
+        fixed="right"
+      >
+        <template slot-scope="scope">
+          <udOperation :data="scope.row" :permission="permission" />
+        </template>
+      </el-table-column>
+    </el-table>
+    <!--分页组件-->
+    <pagination />
+  </div>
+</template>
+
+<script>
+import permission from '@/directive/permission'
+import crudJob from '@/api/system/alarmLevelConfig'
+import CRUD, { presenter, header, form, crud } from '@crud/crud'
+// import { crudOperation, rrOperation, udOperation, pagination } from '@crud'
+import crudComps from '@crud'
+import DateRangePicker from '@/components/DateRangePicker'
+import { initData } from '@/api/data'
+
+const defaultForm = {
+  id: '',
+  alarmCategory: '',
+  alarmType: '',
+  alarmLevel: '',
+  smsTo: [],
+  description: '',
+}
+export default {
+  name: 'alarmLevelConfig',
+  directives: { permission },
+  mixins: [presenter(), header(), form(defaultForm), crud()],
+  components: { ...crudComps, DateRangePicker },
+  cruds() {
+    return CRUD({
+      title: '报警等级配置',
+      url: 'system/alarmLevelConfig/getPageListJson',
+      listOrder: ['id,desc'],
+      crudMethod: { ...crudJob },
+      optShow: { add: true, edit: true, del: true, reset: true, import: true, export: true },
+    })
+  },
+  data() {
+    return {
+      permission: {
+        add: ['admin', 'alarmlevel:config:add'],
+        edit: ['admin', 'alarmlevel:config:edit'],
+        del: ['admin', 'alarmlevel:config:del'],
+      },
+      rules: {
+        positionName: [{ required: true, message: '请输入名称', trigger: 'blur' }],
+        positionSort: [{ required: true, message: '请输入序号', trigger: 'blur', type: 'number' }],
+      },
+      alarmCategoryOptions: [],
+      alarmTypeOptions: [],
+      alarmLevelOptions: [],
+      positionOptions: [],
+    }
+  },
+
+  computed: {
+    crudCU() {
+      return this.crud.status.cu > 0
+    },
+  },
+  created() {
+    this.getDictDOptions('024')
+    this.getDictDOptions('100')
+    this.getPositionOptions()
+  },
+  methods: {
+    async getDictDOptions(type) {
+      try {
+        let res = await initData('system/dataDictDetail/getTypeListJson', {
+          dictType: type,
+        })
+        if (res.code === 20000) {
+          if (type == '100') {
+            this.alarmCategoryOptions = res.data.content
+          }
+          if (type == '024') {
+            this.alarmLevelOptions = res.data.content
+          }
+        }
+      } catch (error) {
+        console.log(error)
+      }
+    },
+    async getPositionOptions(type) {
+      try {
+        let res = await initData('System/Position/GetJobList', {
+          dictType: type,
+        })
+        if (res.code === 20000) {
+          this.positionOptions = res.data.content
+        }
+      } catch (error) {
+        console.log(error)
+      }
+    },
+  },
+}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+::v-deep .el-input-number .el-input__inner {
+  text-align: left;
+}
+</style>