diff --git a/src/api/storeManage/deviceManage/device.js b/src/api/storeManage/deviceManage/device.js index cb6ad3f..4e6cef1 100644 --- a/src/api/storeManage/deviceManage/device.js +++ b/src/api/storeManage/deviceManage/device.js @@ -8,8 +8,20 @@ export function getSupplier() { } export function add(data) { + let url = 'api/desecabinet/create' + if (data.deviceTypeId.name === '密集架') { + url = 'api/desecabinet/create' + } else if (data.deviceTypeId.name === '回转柜') { + url = 'api/desecabinet/create' + } else if (data.deviceTypeId.name === '摄像头') { + url = 'api/camera/create' + } else if (data.deviceTypeId.name === '空调' || data.deviceTypeId.name === '桌面式RFID读写器' || data.deviceTypeId.name === '盘点机' || data.deviceTypeId.name === '恒湿机' || data.deviceTypeId.name === '漏水传感器' || data.deviceTypeId.name === '温湿度感应器' || data.deviceTypeId.name === '空气质监测' || data.deviceTypeId.name === '漏水传感器') { + url = 'api/insidedevices/create' + } else if (data.deviceTypeId.name === '通道门' || data.deviceTypeId.name === '手持式RFID读写器') { + url = 'api/outsidedevices/create' + } return request({ - url: 'api/desecabinet/create', + url: url, method: 'post', data }) diff --git a/src/views/storeManage/deviceManage/module/deviceDetail.vue b/src/views/storeManage/deviceManage/module/deviceDetail.vue index 56e1b6c..e33625e 100644 --- a/src/views/storeManage/deviceManage/module/deviceDetail.vue +++ b/src/views/storeManage/deviceManage/module/deviceDetail.vue @@ -8,14 +8,14 @@ @@ -25,51 +25,77 @@
- - + + - - + + - - + + - - + + - + + + + + - + + - - + + + + + + + + + + + + - - + + - - + + + - - + + + - + + + + + + + + + + 借出 归还 入库 出库 - + 借出 归还 入库 出库 - + 通知 @@ -97,7 +123,7 @@ - + @@ -137,7 +163,7 @@ import crudDevice from '@/api/storeManage/deviceManage/device' import CRUD, { presenter, header, form } from '@crud/crud' import crudOperation from '@crud/CRUD.operation' import pagination from '@crud/Pagination' -const defaultForm = { deviceInfo: { supplierId: null }, id: 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 } +const defaultForm = { supplier: null, id: null, deviceId: null, deviceName: null, deviceIp: null, devicePort: null, rowNo: null, areaNo: null, sumColumnNo: null, firstColumnNo: null, partNo: null, storeroomCode: null, columnRowNo: null, deviceAccount: null, devicePassword: null, cupboardNo: null, videoRoute: 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 } export default { components: { crudOperation, pagination }, @@ -170,34 +196,25 @@ export default { } }, data() { - var 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格式错误')) - } - } return { storeroomId: null, deviceType: null, // 设备列表筛选项目(设备类型) needRefreshTree: false, - rules: { - // deviceInfo. - deviceInfo: { - supplier: [ - { required: true, message: '请选择设备产商', trigger: 'blur' } - ], - deviceName: [ - { required: true, message: '请输入设备名称', trigger: 'blur' } - ], - deviceIp: [ - { required: true, message: '请输入设备IP', trigger: 'blur' }, - { validator: checkDeviceIp, trigger: 'blur' } - ] - } - // deviceInfo.deviceName - }, + // rules: { + // // deviceInfo. + // supplier: [ + // { required: true, message: '请选择设备产商', trigger: 'blur' } + // ], + // deviceName: [ + // { required: true, message: '请输入设备名称', trigger: 'blur' } + // ] + // // , + // // deviceIp: [ + // // { required: true, message: '请输入设备IP', trigger: 'blur' }, + // // { validator: checkDeviceIp, trigger: 'blur' } + // // ] + // // deviceInfo.deviceName + // }, permission: { add: ['admin', 'dict:add'], edit: ['admin', 'dict:edit'], @@ -237,7 +254,7 @@ export default { }, { id: '7882487E0C15304A3758AF', - name: '温湿度传感器' + name: '温湿度感应器' }, { id: 'E58C8D7C896BCB9A408A78', @@ -252,18 +269,116 @@ export default { name: '手持式RFID读写器' } ], - selectedDeviceType: 'DD656054BE3D1DF1E2F1FC', // 选择添加的设备种类 + selectedDeviceType: '密集架', // 选择添加的设备种类 supplierOptions: [] // 厂商 } }, computed: { addTypeStr() { - const addType = this.deviceTypeOptions.find(deviceType => deviceType.id === this.selectedDeviceType) + const addType = this.deviceTypeOptions.find(deviceType => deviceType.name === this.selectedDeviceType) if (addType) { return '新增' + addType.name } else { return '新增' } + }, + isInsidedevices() { + if (this.selectedDeviceType === '空调' || this.selectedDeviceType === '桌面式RFID读写器' || this.selectedDeviceType === '盘点机' || this.selectedDeviceType === '恒湿机' || this.selectedDeviceType === '漏水传感器' || this.selectedDeviceType === '温湿度感应器' || this.selectedDeviceType === '空气质监测' || this.selectedDeviceType === '漏水传感器') { + 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 = { + // deviceInfo. + supplier: [ + { required: true, message: '请选择设备产商', trigger: 'blur' } + ], + deviceName: [ + { 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 === '摄像头' || this.isInsidedevices) { + this.$set(validateRule, 'deviceIp', [ + { required: true, message: '请输入接口IP', trigger: 'blur' }, + { validator: checkDeviceIp, trigger: 'blur' } + ]) + this.$set(validateRule, 'devicePort', [ + { 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 { + // 回转柜 || 摄像头 + 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 { + // 摄像头 + this.$set(validateRule, 'videoRoute', [ + { required: true, message: '请输入频道', trigger: 'blur' } + ]) + } + } + } + return validateRule } }, methods: { @@ -274,9 +389,9 @@ export default { // this.needRefreshTree = true // }, [CRUD.HOOK.beforeSubmit]() { - this.crud.form.deviceInfo.storeroomId = this.storeroomId - this.crud.form.deviceInfo.supplierId = this.supplierOptions.find(item => item.id === this.crud.form.deviceInfo.supplier) - this.crud.form.deviceTypeId = this.deviceTypeOptions.find(item => item.id === this.selectedDeviceType) + this.crud.form.storeroomId = this.storeroomId + this.crud.form.supplierId = this.supplierOptions.find(item => item.id === this.crud.form.supplier) + this.crud.form.deviceTypeId = this.deviceTypeOptions.find(item => item.name === this.selectedDeviceType) this.crud.form.sequence = 2 // if (!this.crud.form.isSequence) { // this.crud.form.isSequence = this.crud.data.reduce((prev, cur) => { return { isSequence: Math.max(prev.isSequence, cur.isSequence) } }).isSequence + 1