Эх сурвалжийг харах

资产设备新增页面修改

jingyuanchao 1 жил өмнө
parent
commit
592925aaa7

+ 8 - 0
src/api/system/device.js

@@ -64,3 +64,11 @@ export function delDevice(id) {
     method: 'delete'
   })
 }
+
+// 查询主机
+export function getDictTree() {
+  return request({
+    url: '/system/dictionary/list',
+    method: 'get'
+  })
+}

+ 3 - 3
src/views/iot/server/index.vue

@@ -42,11 +42,11 @@
                   />
                 </el-select>
               </el-form-item>
-              <el-form-item label="主机注册码" prop="registerCode">
+              <el-form-item label="主机激活码" prop="registerCode">
                 <el-input
                   v-model="queryParams.registerCode"
                   clearable
-                  placeholder="请输入关键字"
+                  placeholder="请输入主机激活码"
                   @keyup.enter.native="handleQuery"/>
               </el-form-item>
             </el-form>
@@ -118,7 +118,7 @@
             <el-table-column label="所属机构" align="center" prop="orgName" width="150"/>
             <el-table-column label="主机名称" align="center" prop="iotName" width="150"/>
             <el-table-column label="主机编码" align="center" prop="iotCode" width="220" :show-overflow-tooltip="true"/>
-            <el-table-column label="主机注册码" align="center" prop="registerCode" width="220"/>
+            <el-table-column label="主机激活码" align="center" prop="registerCode" width="220"/>
             <el-table-column label="主机服务IP" align="center" prop="iotIp" width="150"/>
             <el-table-column label="链接状态" align="center" prop="iotStatus" width="150">
               <template slot-scope="r"

+ 148 - 235
src/views/system/device/index.vue

@@ -14,174 +14,79 @@
       <el-col :span="20" :xs="24">
         <div class="main-right-box">
           <div class="main-search-box">
-              <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
-                <el-form-item label="设备名称" prop="deviceName">
-                  <el-input clearable v-model="queryParams.deviceName" placeholder="请输入关键字" maxlength="50"
-                            @keyup.enter.native="handleQuery" />
-                </el-form-item>
-                <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="dict in dict.type.sys_asset_type" :key="dict.value" :label="dict.label"
-                               :value="`${dict.value}`"></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 searchDevices" :key="item.dictValue" :label="item.dictLabel"
-                               :value="item.dictValue"></el-option>
-                  </el-select>
-                </el-form-item>
-              </el-form>
-              <el-row :gutter="10">
-                <el-col :span="1.5">
-                  <el-button
-                    type="primary"
-                    icon="el-icon-search"
-                    size="mini"
-                    @click="handleQuery"
-                  >搜索</el-button
-                  >
-                </el-col>
-                <el-col :span="1.5">
-                  <el-button
-                    type="primary"
-                    icon="el-icon-refresh"
-                    size="mini"
-                    @click="resetQuery"
-
-                  >重置</el-button
-                  >
-                </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-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-col>
+            <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
+              <el-form-item label="设备名称" prop="deviceName">
+                <el-input clearable v-model="queryParams.deviceName" placeholder="请输入关键字" maxlength="50"
+                          @keyup.enter.native="handleQuery"/>
+              </el-form-item>
+              <el-form-item label="资产类别" prop="assetType" label-width="80">
 
-                <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-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-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"
+                             :value="item.id"></el-option>
+                </el-select>
+              </el-form-item>
 
-          >
-          <!-- :header-cell-style="{backgroundColor:'#CCE8F7'}" -->
-            <!--<el-table-column type="selection" width="55" align="center" />-->
+              <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"
+                             :value="item.id"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-form>
+            <el-row :gutter="10">
+              <el-col :span="1.5">
+                <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+              </el-col>
+              <el-col :span="1.5">
+                <el-button type="primary" icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+              </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-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-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-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-column label="序号" align="center" min-width="50">
               <template v-slot:default="scope">
                 <span v-text="getPageIndex(scope.$index)"> </span>
               </template>
             </el-table-column>
-            <el-table-column label="地区" align="left" prop="affiliatedArea" />
-            <el-table-column label="行社" align="left" prop="affiliatedBank" />
-            <el-table-column label="所属机构" align="left" prop="orgName" />
+            <el-table-column label="地区" align="left" prop="affiliatedArea"/>
+            <el-table-column label="行社" align="left" prop="affiliatedBank"/>
+            <el-table-column label="所属机构" align="left" prop="orgName"/>
 
-            <el-table-column
-              label="设备类别"
-              align="center"
-              key="assetType"
-              prop="assetType"
-            >
+            <el-table-column label="设备类别" align="center" key="assetType" prop="assetType">
               <template slot-scope="scope">
-                <dict-tag
-                  :options="dict.type.sys_asset_type"
-                  :value="scope.row.assetType"
-                />
+                <dict-tag :options="dict.type.sys_asset_type" :value="scope.row.assetType"/>
               </template>
             </el-table-column>
 
-            <el-table-column
-              label="设备分类"
-              align="center"
-              key="deviceType"
-              prop="deviceType"
-            >
+            <el-table-column label="设备分类" align="center" key="deviceType" prop="deviceType">
               <template slot-scope="scope">
-                <dict-tag
-                  :options="dict.type.sys_device_type"
-                  :value="scope.row.deviceType"
-                />
+                <dict-tag :options="dict.type.sys_device_type" :value="scope.row.deviceType"/>
               </template>
             </el-table-column>
-            <el-table-column label="设备名称" align="center" prop="deviceName"  />
-            <!-- <el-table-column label="设备品牌" align="center" prop="deviceBrand" />
-            <el-table-column
-              label="有效期至"
-              align="center"
-              prop="checkTime"
-              width="160"
-            >
-            </el-table-column> -->
-            <!--    <el-table-column label="保修期限" align="center" prop="maintenanceTerm" /> -->
-            <el-table-column
-              label="操作"
-              align="center"
-              class-name="small-padding fixed-width"
-            >
+            <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>
@@ -252,8 +157,6 @@
           </el-col>
 
 
-
-
         </el-row>
         <el-row>
 
@@ -267,82 +170,72 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="设备品牌" prop="deviceBrand">
-              <el-input v-model="form.deviceBrand" placeholder="请输入设备品牌" maxlength="50" />
+            <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"
+                           :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-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-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 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 label="是否高清"   v-if="form.deviceType == 2" >
-                <el-switch v-model="form.definition" active-value="1" inactive-value="0"></el-switch>
-              </el-form-item>
+            <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-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-form-item label="采购日期" prop="purchasingTime">
+              <el-date-picker style="width: 100%" clearable v-model="form.purchasingTime" 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="address">
+              <el-input v-model="form.address" placeholder="请输入安装位置" maxlength="50"/>
+            </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-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>
@@ -381,28 +274,28 @@
 </template>
 
 <script>
-import { getToken } from "@/utils/auth";
+import {getToken} from "@/utils/auth";
 import orgDropDown from "../../../components/orgTree/orgDropDown.vue";
 import OrgTree from "@/components/orgTree";
 import tableList from "@/mixins/tableList";
-import { deptTreeSelect } from "@/api/system/public";
-import { getDeviceType } from "@/api/system/dict/data";
+import {deptTreeSelect} from "@/api/system/public";
+import {getDeviceType} from "@/api/system/dict/data";
 import {
-  listDevice,
-  getDevice,
-  delDevice,
   addDevice,
-  updateDevice,
+  delDevice,
+  getDevice,
+  getDictTree,
   getHostByOrgId,
-  getDeviceByHost,
-  downInCharge,
+  listDevice,
+  updateDevice,
 } from "@/api/system/device";
+
 export default {
   /** 引入基础minxins*/
   mixins: [tableList],
   dicts: ["sys_asset_type", "sys_device_type"],
   name: "Device",
-  components: { OrgTree, orgDropDown },
+  components: {OrgTree, orgDropDown},
   data() {
     return {
       checkList: [],
@@ -416,19 +309,19 @@ export default {
       },
       rules: {
         deviceName: [
-          { required: true, message: "请输入设备名称", trigger: "change" },
+          {required: true, message: "请输入设备名称", trigger: "change"},
         ],
-        orgId: [{ required: true, message: "请选择所属机构", trigger: "blur" }],
+        orgId: [{required: true, message: "请选择所属机构", trigger: "blur"}],
         assetType: [
-          { required: true, message: '请选择资产类别', trigger: 'change' },
+          {required: true, message: '请选择资产类别', trigger: 'change'},
         ],
-        hostId: [{ required: true, message: '请选择主机', trigger: 'change' }],
-        channel: [{ required: true, message: '请输入通道号', trigger: 'change' }],
+        hostId: [{required: true, message: '请选择主机', trigger: 'change'}],
+        channel: [{required: true, message: '请输入通道号', trigger: 'change'}],
         deviceType: [
-          { required: true, message: "请选择设备分类", trigger: "change" },
+          {required: true, message: "请选择设备分类", trigger: "change"},
         ],
         checkTime: [
-          { required: true, message: "请选择有效期", trigger: "blur" },
+          {required: true, message: "请选择有效期", trigger: "blur"},
         ],
       },
       // 遮罩层
@@ -449,9 +342,11 @@ export default {
       // 【请填写功能名称】表格数据
       deviceList: [],
       devices: null,
-      searchDevices:null,
+      searchDevices: null,
       //主机集合
       hostList: [],
+      dictionaryTreeList: [],
+      childrenDictList: [],
       deviceType: 0,
 
       // 弹出层标题
@@ -487,7 +382,7 @@ export default {
         isUploading: false,
 
         // 设置上传的请求头部
-        headers: { Authorization: "Bearer " + getToken() },
+        headers: {Authorization: "Bearer " + getToken()},
         // 上传的地址
         url:
           process.env.NODE_ENV === "development"
@@ -505,8 +400,9 @@ export default {
         maintenanceTerm: null,
         hostId: null,
         channel: null,
-        definition:"1",
+        definition: "1",
         inBook: 0,
+        purchasingTime: null,
       },
       // 表单校验
 
@@ -519,8 +415,10 @@ export default {
     this.getDeptTree();
     //this.getList();
     this.searchChangeSelectDevice(1);
+    this.initDictionaryTreeList();
   },
 
+
   watch: {
     // 根据名称筛选部门树
     deptName(val) {
@@ -541,7 +439,24 @@ 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;
@@ -549,10 +464,10 @@ export default {
       this.$refs.upload.clearFiles();
       this.$alert(
         "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
-          response.msg +
-          "</div>",
+        response.msg +
+        "</div>",
         "导入结果",
-        { dangerouslyUseHTMLString: true }
+        {dangerouslyUseHTMLString: true}
       );
       this.getList();
     },
@@ -594,7 +509,7 @@ export default {
       this.handleQuery();
     },
     changeSelect(val) {
-      if(!val || !val.id) return;
+      if (!val || !val.id) return;
       getHostByOrgId(val).then((response) => {
         this.form.hostId = null;
         this.hostList = response.data;
@@ -676,7 +591,7 @@ export default {
         delFlag: null,
         hostId: null,
         channel: null,
-        definition:"1",
+        definition: "1",
       };
       this.resetForm("form");
     },
@@ -688,7 +603,7 @@ export default {
     /** 重置按钮操作 */
     resetQuery() {
       this.devices = null;
-      this.searchDevices=null;
+      this.searchDevices = null;
       this.resetForm("queryForm");
       this.handleQuery();
     },
@@ -718,13 +633,10 @@ export default {
       }
     },
     searchChangeSelectDevice(val) {
-      if (val) {
-        getDeviceType(val).then(response => {
-          this.searchDevices = response.data;
-          this.form.deviceType = null;
-          this.queryParams.deviceType = null;
-        })
-      }
+      //改成数据库查询, children里面
+      if (!val) return;
+      this.dictionaryTreeList.filter((item) => item.parentId == val).map((item) => {this.childrenDictList.push(item)});
+      console.log("123",this.childrenDictList)
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -732,7 +644,7 @@ export default {
       const id = row.id || this.ids;
       getDevice(id).then((response) => {
         this.form = response.data;
-       // this.form.inBook=response.data.inBook.toString();
+        // this.form.inBook=response.data.inBook.toString();
         this.devices = response.devices;
         this.hostList = response.hostList;
         this.open = true;
@@ -772,7 +684,8 @@ export default {
           this.getList();
           this.$modal.msgSuccess("删除成功");
         })
-        .catch(() => {});
+        .catch(() => {
+        });
     },
     // 提交上传文件
     submitFileForm() {