|
|
@@ -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) {
|