You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
557 lines
25 KiB
557 lines
25 KiB
<template>
|
|
<div>
|
|
<!--工具栏-->
|
|
<div class="head-container" style="display: flex; justify-content: space-between; align-items: center;">
|
|
<div class="head-search" style="margin-bottom: 0;">
|
|
<el-select v-model="deviceType" class="filter-item" placeholder="设备类型选择" @change="crud.toQuery">
|
|
<el-option :key="0" label="全部" value="" />
|
|
<el-option v-for="item in deviceTypeOptions" :key="item.id" :label="item.name" :value="item.id" />
|
|
</el-select>
|
|
<el-input v-model="query.ruleName" clearable size="small" placeholder="输入设备编号或名称" prefix-icon="el-icon-search" style="width: 200px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
|
|
<rrOperation />
|
|
</div>
|
|
<crudOperation :permission="permission">
|
|
<template v-slot:left>
|
|
<el-button v-permission="permission.add" size="mini" @click="deviceSelectVisible = true">
|
|
<i class="iconfont icon-xinzeng" />
|
|
新增
|
|
</el-button>
|
|
</template>
|
|
<template v-slot:right>
|
|
<el-button slot="reference" v-permission="permission.del" size="mini" :loading="crud.delAllLoading" :disabled="crud.selections.length === 0" @click="toDelete(crud.selections)">
|
|
<i class="iconfont icon-shanchu" />
|
|
删除
|
|
</el-button>
|
|
</template>
|
|
</crudOperation>
|
|
</div>
|
|
<!--表单组件-->
|
|
<el-dialog
|
|
:close-on-click-modal="false"
|
|
:modal-append-to-body="false"
|
|
append-to-body
|
|
:before-close="handleCloseDialog"
|
|
:visible.sync="deviceSelectVisible"
|
|
title="新增设备-选择设备类型"
|
|
>
|
|
<div class="setting-dialog">
|
|
<el-form ref="deviceForm" inline :model="deviceForm" size="small" label-width="90px">
|
|
<el-form-item label="设备类型" prop="deviceType" :rules="[{ required:true, message:'请选择设备类型', trigger:'change'}]">
|
|
<el-select v-model="deviceForm.deviceType" class="filter-item" value-key="id" placeholder="设备类型" style="width: 550px;">
|
|
<el-option v-for="item in deviceTypeOptions" :key="item.id" :label="item.name" :value="item" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form>
|
|
<div slot="footer" class="dialog-footer">
|
|
<el-button type="text" @click="handleCloseDialog">取消</el-button>
|
|
<el-button :loading="crud.status.cu === 2" type="primary" @click="handleComfirmDevice">确定</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
|
|
<el-dialog
|
|
:close-on-click-modal="false"
|
|
:modal-append-to-body="false"
|
|
append-to-body
|
|
:before-close="crud.cancelCU"
|
|
:visible.sync="crud.status.cu > 0"
|
|
:title="addDeviceTitle"
|
|
>
|
|
<div class="setting-dialog">
|
|
<el-form ref="form" inline :model="form" :rules="rules" size="small" label-width="90px">
|
|
<el-form-item label="设备名称" prop="name">
|
|
<el-input v-model="form.name" />
|
|
</el-form-item>
|
|
<el-form-item label="设备编号" prop="code">
|
|
<el-input v-model="form.code" />
|
|
</el-form-item>
|
|
<el-row>
|
|
<el-form-item label="品牌厂商" prop="supplier">
|
|
<el-select v-model="form.supplier" class="filter-item" placeholder="请选择" style="width: 225px;">
|
|
<el-option v-for="item in supplierOptions" :key="item.id" :label="item.name" :value="item.id" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-row>
|
|
<el-form-item v-if="selectedDeviceType === '密集架' || selectedDeviceType === '回转柜' || selectedDeviceType === '网络视频录像机(NVR)' || selectedDeviceType ==='环境监控主机' || isInsidedevices" label="IPv4地址" prop="deviceIp">
|
|
<el-input v-model="form.deviceIp" />
|
|
</el-form-item>
|
|
<el-form-item v-if="selectedDeviceType === '密集架' || selectedDeviceType === '回转柜' || selectedDeviceType === '环境监控主机' || isInsidedevices" label="端口" prop="port" style="margin-right: 0; margin-left: 30px;">
|
|
<el-input v-model="form.port" />
|
|
</el-form-item>
|
|
<el-form-item v-if="selectedDeviceType === '网络视频录像机(NVR)'" label="RTSP端口" prop="port" style="margin-right: 0; margin-left: 30px;">
|
|
<el-input v-model="form.port" placeholder="RTSP端口一般均为554" />
|
|
</el-form-item>
|
|
|
|
<el-form-item v-if="selectedDeviceType === '回转柜' || selectedDeviceType === '网络视频录像机(NVR)'" label="账号" prop="deviceAccount">
|
|
<el-input v-model="form.deviceAccount" />
|
|
</el-form-item>
|
|
<el-form-item v-if="selectedDeviceType === '回转柜' || selectedDeviceType === '网络视频录像机(NVR)'" label="密码" prop="devicePassword" style="margin-right: 0; margin-left: 30px;">
|
|
<el-input v-model="form.devicePassword" />
|
|
</el-form-item>
|
|
|
|
<!-- 密集架 -->
|
|
<el-row>
|
|
<el-form-item v-if="selectedDeviceType === '密集架'" label="区号" prop="areaNo">
|
|
<el-input v-model="form.areaNo" :disabled="crud.status.edit === 1" />
|
|
</el-form-item>
|
|
</el-row>
|
|
<el-form-item v-if="selectedDeviceType === '密集架'" label="总列数" prop="sumColumnNo">
|
|
<el-input v-model.number="form.sumColumnNo" :disabled="crud.status.edit === 1" />
|
|
</el-form-item>
|
|
<el-form-item v-if="selectedDeviceType === '密集架'" label="起始列号" prop="firstColumnNo">
|
|
<el-input v-model.number="form.firstColumnNo" :disabled="crud.status.edit === 1" />
|
|
</el-form-item>
|
|
<el-form-item v-if="selectedDeviceType === '密集架'" label="节数" prop="partNo">
|
|
<el-input v-model.number="form.partNo" :disabled="crud.status.edit === 1" />
|
|
</el-form-item>
|
|
|
|
<!-- 密集架 || 回转柜 -->
|
|
<el-form-item v-if="selectedDeviceType === '密集架' || selectedDeviceType === '回转柜'" label="层数" prop="rowNo">
|
|
<el-input v-model.number="form.rowNo" :disabled="crud.status.edit === 1" />
|
|
</el-form-item>
|
|
<!-- 回转柜 -->
|
|
<el-form-item v-if="selectedDeviceType === '回转柜'" label="每层列数" prop="columnRowNo">
|
|
<el-input v-model.number="form.columnRowNo" :disabled="crud.status.edit === 1" />
|
|
</el-form-item>
|
|
<!-- 密集架 || 回转柜 -->
|
|
<el-row>
|
|
<el-form-item v-if="selectedDeviceType === '密集架' || selectedDeviceType === '回转柜'" class="checkbox-style" label="系统联动" prop="isLinkage">
|
|
<el-checkbox v-model="form.isLinkage.lend" @change="checked=>isLinkageChange(checked,'lend')">借出</el-checkbox>
|
|
<el-checkbox v-model="form.isLinkage.borrow" @change="checked=>isLinkageChange(checked,'borrow')">归还</el-checkbox>
|
|
<el-checkbox v-model="form.isLinkage.inBound" @change="checked=>isLinkageChange(checked,'inBound')">入库</el-checkbox>
|
|
<el-checkbox v-model="form.isLinkage.outBound" @change="checked=>isLinkageChange(checked,'outBound')">出库</el-checkbox>
|
|
</el-form-item>
|
|
</el-row>
|
|
<el-row>
|
|
<el-form-item v-if="selectedDeviceType === '密集架' || selectedDeviceType === '回转柜'" class="checkbox-style" label="设备回调" prop="isCallback">
|
|
<el-checkbox v-model="form.isCallback.lend" @change="checked=>isCallbackChange(checked,'lend')">借出</el-checkbox>
|
|
<el-checkbox v-model="form.isCallback.borrow" @change="checked=>isCallbackChange(checked,'lend')">归还</el-checkbox>
|
|
<el-checkbox v-model="form.isCallback.inBound" @change="checked=>isCallbackChange(checked,'lend')">入库</el-checkbox>
|
|
<el-checkbox v-model="form.isCallback.outBound" @change="checked=>isCallbackChange(checked,'lend')">出库</el-checkbox>
|
|
</el-form-item>
|
|
</el-row>
|
|
<el-form-item v-if="selectedDeviceType === '密集架' || selectedDeviceType === '回转柜'" label="下发通知" prop="isNotice" style="display: block;">
|
|
<el-checkbox v-model="form.isNotice">通知</el-checkbox>
|
|
</el-form-item>
|
|
|
|
<el-form-item label="备注" prop="remark">
|
|
<el-input v-model="form.remark" type="textarea" :rows="4" style="width: 585px;" />
|
|
</el-form-item>
|
|
</el-form>
|
|
<div slot="footer" class="dialog-footer">
|
|
<el-button v-if="crud.status.cu > 0 && ( selectedDeviceType === '网络视频录像机(NVR)' || selectedDeviceType ==='环境监控主机')" class="device-child-btn" @click="handleChildDevice"><i class="iconfont icon-zishebeiguanli" />子设备管理</el-button>
|
|
<el-button type="text" @click="handleCloseDialog">取消</el-button>
|
|
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确定</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
|
|
<!--表格渲染-->
|
|
<div class="container-right">
|
|
<span class="right-top-line" />
|
|
<span class="left-bottom-line" />
|
|
<el-table
|
|
ref="table"
|
|
v-loading="crud.loading"
|
|
:data="crud.data"
|
|
row-key="id"
|
|
highlight-current-row
|
|
style="min-width: 100%;"
|
|
@selection-change="crud.selectionChangeHandler"
|
|
@row-click="clickRowHandler"
|
|
@cell-dblclick="tableDoubleClick"
|
|
>
|
|
<el-table-column type="selection" align="center" width="55" />
|
|
<el-table-column label="子设备" prop="child" min-width="80" />
|
|
<el-table-column label="设备类型" prop="deviceTypeId.name" min-width="200" />
|
|
<el-table-column label="设备名称" prop="deviceName" min-width="140" />
|
|
<el-table-column label="设备编号" prop="deviceCode" min-width="85" />
|
|
<el-table-column label="接口IP" prop="deviceIp" min-width="120" show-overflow-tooltip>
|
|
<template slot-scope="scope">
|
|
<span v-if="scope.row.deviceIp"> {{ scope.row.deviceIp }} </span>
|
|
<span v-else>——</span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="端口" prop="devicePort" min-width="85">
|
|
<template slot-scope="scope">
|
|
<span v-if="scope.row.devicePort"> {{ scope.row.devicePort }} </span>
|
|
<span v-else>——</span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="状态" prop="categoryName" min-width="60" align="center">
|
|
<template slot-scope="scope">
|
|
<span :class="{ 'spk-a': scope.row.deviceState === 1, 'off-line': scope.row.deviceState !== 1 }" />
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="所属库房" prop="categoryName" min-width="120" />
|
|
<el-table-column label="所属区域" prop="storeroomId.name" min-width="120" />
|
|
<el-table-column label="设备厂商" prop="supplierId.name" min-width="120" show-overflow-tooltip />
|
|
<el-table-column prop="createTime" label="创建日期" min-width="180">
|
|
<template slot-scope="scope">
|
|
<div>{{ scope.row.createTime | parseTime }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="createTime" label="最后一次同步时间" min-width="180">
|
|
<template slot-scope="scope">
|
|
<div>{{ scope.row.createTime | parseTime }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<!--分页组件-->
|
|
<pagination v-if="crud.data.length!==0" />
|
|
</div>
|
|
<!-- 子设备管理 -->
|
|
<ChildDevice ref="childDevice" :selected-device-type="selectedDeviceType" />
|
|
<!-- 详情 -->
|
|
<DetailModule ref="detailModule" :selected-device-type="selectedDeviceType" @childDevice="handleChildDevice" />
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import typeJson from './type.json'
|
|
import crudDevice from '@/api/storeManage/deviceManage/device'
|
|
import CRUD, { presenter, header, form, crud } from '@crud/crud'
|
|
import rrOperation from '@crud/RR.operation'
|
|
import crudOperation from '@crud/CRUD.operation'
|
|
import pagination from '@crud/Pagination'
|
|
import ChildDevice from './module/childDevice'
|
|
import DetailModule from './module/detail'
|
|
import { mapGetters } from 'vuex'
|
|
|
|
const defaultForm = {
|
|
id: null,
|
|
name: null,
|
|
code: null,
|
|
deviceIp: null,
|
|
port: null,
|
|
remark: null,
|
|
deviceAccount: null,
|
|
devicePassword: null,
|
|
isLinkage: { stateType: 1, lend: false, borrow: false, inBound: false, outBound: false },
|
|
isCallback: { stateType: 2, lend: false, borrow: false, inBound: false, outBound: false },
|
|
isNotice: false,
|
|
rowNo: null,
|
|
columnRowNo: null,
|
|
areaNo: null, sumColumnNo: null, firstColumnNo: null, partNo: null
|
|
}
|
|
|
|
export default {
|
|
name: 'DeviceTableList',
|
|
components: { rrOperation, crudOperation, pagination, ChildDevice, DetailModule },
|
|
cruds() {
|
|
return CRUD({ title: '设备', url: 'api/device/list', crudMethod: { ...crudDevice }, optShow: {
|
|
add: false,
|
|
edit: true,
|
|
del: false,
|
|
reset: true,
|
|
download: false,
|
|
group: false
|
|
}})
|
|
},
|
|
mixins: [presenter(), header(), form(defaultForm), crud()],
|
|
props: {
|
|
selectedStore: {
|
|
type: Object,
|
|
default: function() {
|
|
return {}
|
|
}
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
deviceType: null,
|
|
deviceTypeOptions: [],
|
|
deviceSelectVisible: false,
|
|
deviceForm: {
|
|
deviceType: null
|
|
},
|
|
addDeviceTitle: '',
|
|
supplierOptions: [],
|
|
selectedDeviceType: '网络视频录像机(NVR)',
|
|
permission: {
|
|
add: ['admin', 'device:add'],
|
|
edit: ['admin', 'device:edit'],
|
|
del: ['admin', 'device:del']
|
|
}
|
|
}
|
|
},
|
|
computed: {
|
|
...mapGetters([
|
|
'baseApi'
|
|
]),
|
|
isInsidedevices() {
|
|
if (this.selectedDeviceType === '桌面式RFID读写器') {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
},
|
|
isOutsidedevices() {
|
|
if (this.selectedDeviceType === '通道门' || this.selectedDeviceType === '手持式RFID读写器') {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
},
|
|
rules() {
|
|
// const checkDeviceIp = (rule, value, callback) => {
|
|
// const reg = /^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$/
|
|
// if (reg.test(value)) {
|
|
// callback()
|
|
// } else {
|
|
// callback(new Error('设备IP格式错误'))
|
|
// }
|
|
// }
|
|
const checkDevicePort = (rule, value, callback) => {
|
|
const reg = /^([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/
|
|
if (reg.test(value)) {
|
|
callback()
|
|
} else {
|
|
callback(new Error('端口号输入错误'))
|
|
}
|
|
}
|
|
const validateRule = {
|
|
// supplier: [
|
|
// { required: true, message: '请选择设备产商', trigger: 'blur' }
|
|
// ]
|
|
code: [{ required: true, message: '设备编号不可为空', trigger: 'blur' }],
|
|
name: [{ required: true, message: '设备名称不可为空', trigger: 'blur' }]
|
|
}
|
|
// if (this.isInsidedevices || this.isOutsidedevices) {
|
|
// this.$set(validateRule, 'deviceId', [
|
|
// { required: true, message: '请输入设备ID', trigger: 'blur' }
|
|
// ])
|
|
// }
|
|
if (this.selectedDeviceType === '密集架' || this.selectedDeviceType === '回转柜' || this.selectedDeviceType === '网络视频录像机(NVR)' || this.selectedDeviceType === '环境监控主机' || this.isInsidedevices) {
|
|
this.$set(validateRule, 'deviceIp', [
|
|
{ required: true, message: '请输入接口IP', trigger: 'blur' }
|
|
// ,
|
|
// { validator: checkDeviceIp, trigger: 'blur' }
|
|
])
|
|
this.$set(validateRule, 'port', [
|
|
{ required: true, message: '请输入端口号', trigger: 'blur' },
|
|
{ validator: checkDevicePort, trigger: 'blur' }
|
|
])
|
|
if (this.selectedDeviceType === '密集架') {
|
|
this.$set(validateRule, 'areaNo', [
|
|
{ required: true, message: '请输入区号', trigger: 'blur' }
|
|
])
|
|
this.$set(validateRule, 'firstColumnNo', [
|
|
{ required: true, message: '请输入起始列号', trigger: 'blur' }
|
|
])
|
|
this.$set(validateRule, 'sumColumnNo', [
|
|
{ required: true, message: '请输入总列数', trigger: 'blur' }
|
|
])
|
|
this.$set(validateRule, 'partNo', [
|
|
{ required: true, message: '请输入节数', trigger: 'blur' }
|
|
])
|
|
this.$set(validateRule, 'rowNo', [
|
|
{ required: true, message: '请输入层数', trigger: 'blur' }
|
|
])
|
|
} else if (this.selectedDeviceType === '回转柜' || this.selectedDeviceType === '网络视频录像机(NVR)') {
|
|
// 回转柜 || 网络视频录像机(NVR)
|
|
this.$set(validateRule, 'deviceAccount', [
|
|
{ required: true, message: '请输入账号', trigger: 'blur' }
|
|
])
|
|
this.$set(validateRule, 'devicePassword', [
|
|
{ required: true, message: '请输入密码', trigger: 'blur' }
|
|
])
|
|
if (this.selectedDeviceType === '回转柜') {
|
|
this.$set(validateRule, 'cupboardNo', [
|
|
{ required: true, message: '请输入柜号', trigger: 'blur' }
|
|
])
|
|
this.$set(validateRule, 'rowNo', [
|
|
{ required: true, message: '请输入层数', trigger: 'blur' }
|
|
])
|
|
this.$set(validateRule, 'columnRowNo', [
|
|
{ required: true, message: '请输入每层列数', trigger: 'blur' }
|
|
])
|
|
} else {
|
|
// 网络视频录像机(NVR)
|
|
// this.$set(validateRule, 'videoRoute', [
|
|
// { required: true, message: '请输入频道', trigger: 'blur' }
|
|
// ])
|
|
}
|
|
}
|
|
}
|
|
return validateRule
|
|
}
|
|
},
|
|
watch: {
|
|
selectedStore: function(newValue, oldValue) {
|
|
this.crud.refresh()
|
|
}
|
|
},
|
|
created() {
|
|
this.deviceTypeOptions = typeJson.data
|
|
this.crud.data = [
|
|
{ id: '7305DE3D273B0CAC079538', deviceTypeId: { name: '网络视频录像机(NVR)' }},
|
|
{ id: 'C09A1946216E496BB3FA88', deviceTypeId: { name: '环境监控主机' }},
|
|
{ id: 'DD656054BE3D1DF1E2F1FC', deviceTypeId: { name: '密集架' }},
|
|
{ id: '65D1886B0F864291766421', deviceTypeId: { name: '通道门' }},
|
|
{ id: 'E2767FEACA9CE0E3B16B89', deviceTypeId: { name: '桌面式RFID读写器' }},
|
|
{ id: '3B85FA21FDAFBB618B5D40', deviceTypeId: { name: '手持式RFID读写器' }}
|
|
]
|
|
},
|
|
methods: {
|
|
// 获取数据前设置默认参数
|
|
[CRUD.HOOK.beforeRefresh]() {
|
|
},
|
|
[CRUD.HOOK.afterRefresh](crud) {
|
|
// this.crud.data = [
|
|
// { id: 1, deviceTypeId: { name: '网络视频录像机(NVR)' }},
|
|
// { id: 2, deviceTypeId: { name: '环境监控主机' }},
|
|
// { id: 3, deviceTypeId: { name: '密集架' }},
|
|
// { id: 4, deviceTypeId: { name: '通道门' }},
|
|
// { id: 5, deviceTypeId: { name: '桌面式RFID读写器' }},
|
|
// { id: 6, deviceTypeId: { name: '手持式RFID读写器' }}
|
|
// ]
|
|
},
|
|
[CRUD.HOOK.beforeToEdit](crud, form, btn) {
|
|
console.log(crud.selections[0])
|
|
console.log(form)
|
|
this.selectedDeviceType = form.deviceTypeId.name
|
|
|
|
this.addDeviceTitle = '编辑设备 - ' + form.deviceTypeId.name
|
|
},
|
|
// 提交前做的操作
|
|
async [CRUD.HOOK.afterValidateCU](crud) {
|
|
if (form.deviceTypeId.name === '密集架' || form.deviceTypeId.name === '回转柜') {
|
|
if (form.deviceTypeId.name === '密集架') {
|
|
// 获取密集架行号列号等信息
|
|
await crudDevice.getDesecabinetById({ deviceInfoId: this.crud.selections[0].id }).then((data) => {
|
|
form.rowNo = data.rowNo
|
|
form.areaNo = data.areaNo
|
|
form.sumColumnNo = data.sumColumnNo
|
|
form.firstColumnNo = data.firstColumnNo
|
|
form.partNo = data.partNo
|
|
form.storeroomCode = data.storeroomCode
|
|
})
|
|
} else if (form.deviceTypeId.name === '回转柜') {
|
|
// 获取回转柜行号列号等信息
|
|
await crudDevice.getRotarycabinetById({ deviceInfoId: this.crud.selections[0].id }).then((data) => {
|
|
form.columnRowNo = data.columnRowNo
|
|
form.cupboardNo = data.cupboardNo
|
|
form.rowNo = data.rowNo
|
|
form.storeroomCode = data.storeroomCode
|
|
})
|
|
}
|
|
// 获取联动和回调结果
|
|
await crudDevice.getDeviceById({ deviceInfoId: this.crud.selections[0].id }).then((data) => {
|
|
if (data.length === 3) {
|
|
form.isLinkage = data.find(element => element.stateType === 1)
|
|
form.isCallback = data.find(element => element.stateType === 2)
|
|
}
|
|
})
|
|
}
|
|
form.supplier = form.supplierId.id
|
|
crud.status.edit = CRUD.STATUS.PREPARED
|
|
crud.getDataStatus(this.crud.selections[0].id).edit = CRUD.STATUS.PREPARED
|
|
|
|
// this.deviceForm.deviceType = null
|
|
// this.$refs.deviceForm.resetFields()
|
|
return false
|
|
},
|
|
// 防止编辑时,isLinkage是null,isLinkage.lend报错
|
|
[CRUD.HOOK.afterRefresh](crud) {
|
|
crud.data.forEach(element => {
|
|
element.isLinkage = { stateType: 1, lend: null, borrow: null, inBound: null, outBound: null }
|
|
element.isCallback = { stateType: 2, lend: null, borrow: null, inBound: null, outBound: null }
|
|
})
|
|
},
|
|
// table - 双击查看详情
|
|
tableDoubleClick(row) {
|
|
this.selectedDeviceType = row.deviceTypeId.name
|
|
this.$refs.detailModule.detailTitle = '设备详情-' + row.deviceTypeId.name
|
|
this.$refs.detailModule.detailVisible = true
|
|
this.$refs.detailModule.activeIndex = 0
|
|
// this.$refs.archivesInfo.getDetial(row.id)
|
|
},
|
|
handleComfirmDevice() {
|
|
this.$refs.deviceForm.validate((valid) => {
|
|
if (valid) {
|
|
this.crud.toAdd()
|
|
this.deviceSelectVisible = false
|
|
this.selectedDeviceType = this.deviceForm.deviceType.name
|
|
this.addDeviceTitle = '新增设备 - ' + this.selectedDeviceType
|
|
this.$refs.form.resetFields()
|
|
} else {
|
|
console.log('error submit!!')
|
|
return false
|
|
}
|
|
})
|
|
},
|
|
isLinkageChange(value, type) {
|
|
if (!value && this.form.isCallback[type]) {
|
|
this.$message.error('取消对应回调选项后才能取消联动操作')
|
|
this.form.isLinkage[type] = true
|
|
}
|
|
},
|
|
isCallbackChange(value, type) {
|
|
if (value && !this.form.isLinkage[type]) {
|
|
this.$message.error('选中对应联动选项后才能勾选回调操作')
|
|
this.form.isCallback[type] = false
|
|
}
|
|
},
|
|
clickRowHandler(row) {
|
|
this.$refs.table.toggleRowSelection(row)
|
|
},
|
|
selectionChangeHandler(val) {
|
|
this.crud.selections = val
|
|
},
|
|
toDelete(datas) {
|
|
this.$confirm('此操作将删除当前所选' + this.crud.title + '<span>你是否还要继续?</span>', '提示', {
|
|
confirmButtonText: '继续',
|
|
cancelButtonText: '取消',
|
|
type: 'warning',
|
|
dangerouslyUseHTMLString: true
|
|
}).then(() => {
|
|
this.crud.delAllLoading = true
|
|
const ids = []
|
|
datas.forEach(val => {
|
|
ids.push(val.id)
|
|
})
|
|
crudDevice.del(ids).then(() => {
|
|
this.crud.notify('删除成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
|
this.crud.delAllLoading = false
|
|
this.crud.refresh()
|
|
}).catch(err => {
|
|
this.crud.delAllLoading = false
|
|
console.log(err)
|
|
})
|
|
}).catch(() => {
|
|
})
|
|
},
|
|
handleChildDevice() {
|
|
this.$refs.childDevice.childDeviceVisible = true
|
|
this.$refs.childDevice.childDeviceTitle = '子设备管理 - ' + this.selectedDeviceType
|
|
},
|
|
handleCloseDialog(done) {
|
|
// 重置表单数据
|
|
if (this.$refs.deviceForm) {
|
|
this.deviceSelectVisible = false
|
|
this.$refs.deviceForm.resetFields()
|
|
}
|
|
|
|
if (this.$refs.form) {
|
|
this.$refs.form.resetFields()
|
|
this.crud.cancelCU()
|
|
}
|
|
// 关闭弹框
|
|
// done()
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
::v-deep .el-dialog .el-dialog__body{
|
|
.checkbox-style.el-form-item{
|
|
.el-form-item__content{
|
|
width: 550px !important;
|
|
}
|
|
}
|
|
}
|
|
|
|
</style>
|