Sfoglia il codice sorgente

设备登记页面调整

jingyuanchao 1 anno fa
parent
commit
4ad39b3ba7
2 ha cambiato i file con 190 aggiunte e 111 eliminazioni
  1. 12 1
      src/api/system/device.js
  2. 178 110
      src/views/system/device/index.vue

+ 12 - 1
src/api/system/device.js

@@ -65,10 +65,21 @@ export function delDevice(id) {
   })
 }
 
-// 查询主机
+// 查询资产字典
 export function getDictTree() {
   return request({
     url: '/system/dictionary/list',
     method: 'get'
   })
 }
+
+// 查询资产字典
+export function getDictTreeByParentId(parentId) {
+  return request({
+    url: '/system/dictionary/getDictTreeByParentId',
+    method: 'get',
+    params: {parentId: parentId}
+  })
+}
+
+

+ 178 - 110
src/views/system/device/index.vue

@@ -22,15 +22,15 @@
               <el-form-item label="资产类别" prop="assetType" label-width="80">
 
                 <el-select style="width: 100%;" v-model="queryParams.assetType" placeholder="请选择资产类别"
-                           @change="searchChangeSelectDevice" clearable>
-                  <el-option v-for="item in getDictDataByParentId('AssetDeviceType',-1)" :key="item.id" :label="item.name"
+                           @change="assetSelectChange" @clear="clearAsset" clearable>
+                  <el-option v-for="item in getAssetDict('AssetDeviceType',-1)" :key="item.id" :label="item.name"
                              :value="item.id"></el-option>
                 </el-select>
               </el-form-item>
 
               <el-form-item label="设备分类" prop="deviceType" label-width="80">
-                <el-select style="width: 100%;" clearable v-model="queryParams.deviceType" placeholder="请选择设备类">
-                  <el-option v-for="item in childrenDictList" :key="item.id" :label="item.name"
+                <el-select style="width: 100%;" clearable v-model="queryParams.deviceType" placeholder="请选择设备类">
+                  <el-option v-for="item in assetChildrenDictList" :key="item.id" :label="item.name"
                              :value="item.id"></el-option>
                 </el-select>
               </el-form-item>
@@ -44,20 +44,27 @@
               </el-col>
 
               <el-col :span="1.5">
-                <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['system:device:add']" >新增设备</el-button>
+                <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"
+                           v-hasPermi="['system:device:add']">新增设备
+                </el-button>
               </el-col>
 
               <el-col :span="1.5">
-                <el-button type="primary" icon="el-icon-upload" size="mini" @click="handleImport" v-hasPermi="['system:device:importData']">导入设备</el-button>
+                <el-button type="primary" icon="el-icon-upload" size="mini" @click="handleImport"
+                           v-hasPermi="['system:device:importData']">导入设备
+                </el-button>
               </el-col>
 
               <el-col :span="1.5">
-                <el-button type="primary" icon="el-icon-download" size="mini" @click="handleOut" v-hasPermi="['system:device:export']">导出模版</el-button>
+                <el-button type="primary" icon="el-icon-download" size="mini" @click="handleOut"
+                           v-hasPermi="['system:device:export']">导出模版
+                </el-button>
               </el-col>
               <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
             </el-row>
           </div>
-          <el-table border height="646" size="small" v-loading="loading" :data="deviceList" @selection-change="handleSelectionChange">
+          <el-table border height="646" size="small" v-loading="loading" :data="deviceList"
+                    @selection-change="handleSelectionChange">
             <el-table-column label="序号" align="center" min-width="50">
               <template v-slot:default="scope">
                 <span v-text="getPageIndex(scope.$index)"> </span>
@@ -81,12 +88,17 @@
             <el-table-column label="设备名称" align="center" prop="deviceName"/>
             <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
               <template slot-scope="scope">
-                <el-button size="mini" type="text" icon="el-icon-edit-outline" @click="handleUpdate(scope.row)" v-hasPermi="['system:device:edit']">编辑</el-button>
-                <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:device:remove']">删除</el-button>
+                <el-button size="mini" type="text" icon="el-icon-edit-outline" @click="handleUpdate(scope.row)"
+                           v-hasPermi="['system:device:edit']">编辑
+                </el-button>
+                <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
+                           v-hasPermi="['system:device:remove']">删除
+                </el-button>
               </template>
             </el-table-column>
           </el-table>
-          <pagination :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList"/>
+          <pagination :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
+                      @pagination="getList"/>
         </div>
       </el-col>
     </el-row>
@@ -100,6 +112,7 @@
       append-to-body
     >
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+
         <el-row>
           <el-col :span="24">
             <el-form-item label="所属机构" prop="orgId">
@@ -119,47 +132,17 @@
             </el-form-item>
           </el-col>
         </el-row>
+
         <el-row>
           <el-col :span="12">
-            <el-form-item label="设备类别" prop="assetType">
-              <el-select
-                style="width: 100%"
-                v-model="form.assetType"
-                :popper-append-to-body="false"
-                placeholder="请选择设备类别"
-                @change="changeSelectDevice"
-              >
-                <el-option
-                  v-for="dict in dict.type.sys_asset_type"
-                  :key="dict.value"
-                  :label="dict.label"
-                  :value="`${dict.value}`"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="设备分类" prop="deviceType">
-              <el-select
-                style="width: 100%"
-                :popper-append-to-body="false"
-                v-model="form.deviceType"
-                placeholder="请选择设备分类"
-              >
-                <el-option
-                  v-for="item in devices"
-                  :key="item.dictValue"
-                  :label="item.dictLabel"
-                  :value="item.dictValue"
-                ></el-option>
-              </el-select>
+            <el-form-item label="资产编号" prop="assetNo">
+              <el-input
+                v-model="form.assetNo"
+                placeholder="请输入设备名称"
+                maxlength="50"
+              />
             </el-form-item>
           </el-col>
-
-
-        </el-row>
-        <el-row>
-
           <el-col :span="12">
             <el-form-item label="设备名称" prop="deviceName">
               <el-input
@@ -169,40 +152,74 @@
               />
             </el-form-item>
           </el-col>
+        </el-row>
+
+        <el-row>
           <el-col :span="12">
-            <el-form-item  label="设备品牌" prop="deviceBrand">
-              <el-select style="width: 100%" v-model="form.deviceBrand" placeholder="请选择设备品牌">
-                <el-option v-for="item in getDictData('BrandType',1)" :key="item.id" :label="item.name"
+            <el-form-item label="资产分类" prop="assetType">
+              <el-select style="width: 100%" v-model="form.assetType" :popper-append-to-body="false"
+                         placeholder="请选择资产分类" @change="assetSelectChange">
+                <el-option v-for="item in getAssetDict('AssetDeviceType',-1)" :key="item.id" :label="item.name"
                            :value="item.id"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
-        </el-row>
-        <el-row>
           <el-col :span="12">
-            <el-form-item v-if="form.deviceType == 2" label="硬盘录像机" prop="hostId">
-              <el-select style="width: 100%" v-model="form.hostId" placeholder="请选择关联主机">
-                <el-option v-for="item in hostList" :key="item.id" :label="item.deviceName"
+            <el-form-item label="设备分类" prop="deviceType">
+              <el-select style="width: 100%" :popper-append-to-body="false" clearable v-model="form.deviceType"
+                         placeholder="请选择设备分类">
+                <el-option v-for="item in assetChildrenDictList" :key="item.id" :label="item.name"
                            :value="item.id"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
+        </el-row>
 
+
+        <el-row>
           <el-col :span="12">
-            <el-form-item v-if="form.deviceType == 2" label="通道号" prop="channel">
-              <el-input type="number" max="64" min="0"
-                        oninput="if(value<=0)value=null;if(value>=64)value=64;value=parseInt(value)"
-                        v-model="form.channel" placeholder="请输入关联通道号"/>
+            <el-form-item label="设备品牌" prop="deviceBrand">
+              <el-select style="width: 100%" v-model="form.deviceBrand" placeholder="请选择设备品牌"
+                         @change="brandSelectChange">
+                <el-option v-for="item in getAssetDict('BrandType',-1)" :key="item.id" :label="item.name"
+                           :value="item.id"></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
-        </el-row>
+          <!--        <el-row>
+                    <el-col :span="12">
+                      <el-form-item v-if="form.deviceType == 2" label="硬盘录像机" prop="hostId">
+                        <el-select style="width: 100%" v-model="form.hostId" placeholder="请选择关联主机">
+                          <el-option v-for="item in hostList" :key="item.id" :label="item.deviceName"
+                                     :value="item.id"></el-option>
+                        </el-select>
+                      </el-form-item>
+                    </el-col>
 
-        <el-row>
+                    <el-col :span="12">
+                      <el-form-item v-if="form.deviceType == 2" label="通道号" prop="channel">
+                        <el-input type="number" max="64" min="0"
+                                  oninput="if(value<=0)value=null;if(value>=64)value=64;value=parseInt(value)"
+                                  v-model="form.channel" placeholder="请输入关联通道号"/>
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
+
+                  <el-row>
+                    <el-col :span="12">
+                      <el-form-item v-if="form.assetType == 0" label="有效期至" prop="checkTime">
+                        <el-date-picker style="width: 100%" clearable v-model="form.checkTime" type="date"
+                                        value-format="yyyy-MM-dd" placeholder="请选择到期时间">
+                        </el-date-picker>
+                      </el-form-item>
+                    </el-col>
+                  </el-row>-->
           <el-col :span="12">
-            <el-form-item v-if="form.assetType == 0" label="有效期至" prop="checkTime">
-              <el-date-picker style="width: 100%" clearable v-model="form.checkTime" type="date"
-                              value-format="yyyy-MM-dd" placeholder="请选择到期时间">
-              </el-date-picker>
+            <el-form-item label="设备型号" prop="deviceModel">
+              <el-select style="width: 100%" v-model="form.deviceModel" placeholder="请选择设备型号">
+                <el-option v-for="item in brandChildrenDictList" :key="item.id" :label="item.name"
+                           :value="item.id"></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
         </el-row>
@@ -215,6 +232,7 @@
               </el-date-picker>
             </el-form-item>
           </el-col>
+
           <el-col :span="12">
             <el-form-item label="安装位置" prop="address">
               <el-input v-model="form.address" placeholder="请输入安装位置" maxlength="50"/>
@@ -224,18 +242,61 @@
 
         <el-row>
           <el-col :span="12">
-            <el-form-item label="关联登记簿" v-if="form.deviceType == 1" prop="inBook">
-              <el-switch v-model="form.inBook" :active-value="1" :inactive-value="0"></el-switch>
+            <el-form-item label="消防类有效期" prop="checkTime">
+              <el-date-picker style="width: 100%" clearable v-model="form.checkTime" type="date"
+                              value-format="yyyy-MM-dd" placeholder="请选择消防类有效期">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="保修期限" prop="maintenanceTerm">
+              <el-date-picker style="width: 100%" clearable v-model="form.maintenanceTerm" type="date"
+                              value-format="yyyy-MM-dd" placeholder="请选择保修期限">
+              </el-date-picker>
             </el-form-item>
           </el-col>
         </el-row>
+
         <el-row>
           <el-col :span="12">
-            <el-form-item label="是否高清" v-if="form.deviceType == 2">
-              <el-switch v-model="form.definition" active-value="1" inactive-value="0"></el-switch>
+            <el-form-item label="投入使用时间" prop="useTime">
+              <el-date-picker style="width: 100%" clearable v-model="form.useTime" type="date"
+                              value-format="yyyy-MM-dd" placeholder="请选择投入使用时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="资产状态" prop="deviceStatus">
+              <el-select
+                v-model="form.deviceStatus"
+                clearable
+                placeholder="请选择机构类型"
+                style="width: 100%;">
+                <el-option
+                  v-for="dict in dict.type.asset_status"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="`${dict.value}`"
+                ></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
         </el-row>
+
+        <!--        <el-row>
+                  <el-col :span="12">
+                    <el-form-item label="关联登记簿" v-if="form.deviceType == 1" prop="inBook">
+                      <el-switch v-model="form.inBook" :active-value="1" :inactive-value="0"></el-switch>
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+                <el-row>
+                  <el-col :span="12">
+                    <el-form-item label="是否高清" v-if="form.deviceType == 2">
+                      <el-switch v-model="form.definition" active-value="1" inactive-value="0"></el-switch>
+                    </el-form-item>
+                  </el-col>
+                </el-row>-->
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -284,7 +345,7 @@ import {
   addDevice,
   delDevice,
   getDevice,
-  getDictTree,
+  getDictTree, getDictTreeByParentId,
   getHostByOrgId,
   listDevice,
   updateDevice,
@@ -293,7 +354,7 @@ import {
 export default {
   /** 引入基础minxins*/
   mixins: [tableList],
-  dicts: ["sys_asset_type", "sys_device_type"],
+  dicts: ["sys_asset_type", "sys_device_type",'asset_status'],
   name: "Device",
   components: {OrgTree, orgDropDown},
   data() {
@@ -308,21 +369,14 @@ export default {
         label: "name",
       },
       rules: {
-        deviceName: [
-          {required: true, message: "请输入设备名称", trigger: "change"},
-        ],
+        assetNo: [{required: true, message: "请输入资产编号", trigger: "change"}],
+        deviceName: [{required: true, message: "请输入设备名称", trigger: "change"}],
         orgId: [{required: true, message: "请选择所属机构", trigger: "blur"}],
-        assetType: [
-          {required: true, message: '请选择资产类别', trigger: 'change'},
-        ],
-        hostId: [{required: true, message: '请选择主机', trigger: 'change'}],
-        channel: [{required: true, message: '请输入通道号', trigger: 'change'}],
-        deviceType: [
-          {required: true, message: "请选择设备分类", trigger: "change"},
-        ],
-        checkTime: [
-          {required: true, message: "请选择有效期", trigger: "blur"},
-        ],
+        assetType: [{required: true, message: '请选择资产类别', trigger: 'change'}],
+      /*  hostId: [{required: true, message: '请选择主机', trigger: 'change'}],
+        channel: [{required: true, message: '请输入通道号', trigger: 'change'}],*/
+        deviceType: [{required: true, message: "请选择设备分类", trigger: "change"}],
+        deviceStatus: [{required: true, message: "请选择资产状态", trigger: "blur"}],
       },
       // 遮罩层
       loading: true,
@@ -346,7 +400,8 @@ export default {
       //主机集合
       hostList: [],
       dictionaryTreeList: [],
-      childrenDictList: [],
+      assetChildrenDictList: [],
+      brandChildrenDictList: [],
       deviceType: 0,
 
       // 弹出层标题
@@ -396,13 +451,17 @@ export default {
         assetType: null,
         deviceType: null,
         deviceBrand: null,
+        deviceModel: null,
         checkTime: null,
         maintenanceTerm: null,
         hostId: null,
         channel: null,
-        definition: "1",
+        address: null,
+        definition: null,
         inBook: 0,
         purchasingTime: null,
+        assetNo: null,
+        deviceStatus: null,
       },
       // 表单校验
 
@@ -414,7 +473,7 @@ export default {
   created() {
     this.getDeptTree();
     //this.getList();
-    this.searchChangeSelectDevice(1);
+    this.assetSelectChange(1);
     this.initDictionaryTreeList();
   },
 
@@ -439,24 +498,6 @@ export default {
       this.upload.title = "设备导入";
       this.upload.open = true;
     },
-    //获取字典数据
-    initDictionaryTreeList(){
-      getDictTree().then((response) => {
-        this.dictionaryTreeList = response.data;
-      });
-    },
-    getDictData(type,level){
-       //找到dictionaryTreeList中 type等于type的
-      let  arr=[]
-      this.dictionaryTreeList.filter(item => item.type === type&& item.level==level).map(item => {arr.push(item);});
-      return arr;
-    },
-    getDictDataByParentId(type,parentId){
-      if (!parentId) return ;
-      let  arr=[]
-      this.dictionaryTreeList.filter(item => item.type === type && item.parentId==parentId).map(item => {arr.push(item);});
-      return arr;
-    },
     // 文件上传成功处理
     handleFileSuccess(response, file, fileList) {
       this.upload.open = false;
@@ -632,11 +673,38 @@ export default {
         });
       }
     },
-    searchChangeSelectDevice(val) {
+    //获取字典数据
+    initDictionaryTreeList() {
+      getDictTree().then((response) => {
+        this.dictionaryTreeList = response.data;
+      });
+    },
+    //从基础数据中获取资产分类
+    getAssetDict(type, parentId) {
+      let arr = []
+      this.dictionaryTreeList.filter(item => item.type === type && item.parentId == parentId).map(item => {
+        arr.push(item);
+      });
+      return arr;
+    },
+    assetSelectChange(val) {
       //改成数据库查询, children里面
       if (!val) return;
-      this.dictionaryTreeList.filter((item) => item.parentId == val).map((item) => {this.childrenDictList.push(item)});
-      console.log("123",this.childrenDictList)
+      this.form.deviceType = null;
+      getDictTreeByParentId(val).then((response) => {
+        this.assetChildrenDictList = response.data;
+      });
+    },
+    brandSelectChange(val) {
+      //改成数据库查询, children里面
+      if (!val) return;
+      this.form.deviceModel = null;
+      getDictTreeByParentId(val).then((response) => {
+        this.brandChildrenDictList = response.data;
+      });
+    },
+    clearAsset() {
+      this.queryParams.deviceType = null;
     },
     /** 修改按钮操作 */
     handleUpdate(row) {