Browse Source

设备管理 以及bug

master
z_yu 3 years ago
parent
commit
3197b7146c
  1. 23
      src/api/storeManage/deviceManage/device.js
  2. 78
      src/api/storeManage/deviceManage/deviceDetail.js
  3. 30
      src/api/storeManage/deviceManage/storeroom.js
  4. 17
      src/views/components/category/SettingForm.vue
  5. 6
      src/views/storeManage/deviceManage/index.vue
  6. 159
      src/views/storeManage/deviceManage/module/deviceDetail.vue

23
src/api/storeManage/deviceManage/device.js

@ -1,30 +1,37 @@
import request from '@/utils/request' import request from '@/utils/request'
export function getSupplier() {
return request({
url: 'api/supplier/dropdown-list',
method: 'get'
})
}
export function add(data) { export function add(data) {
return request({ return request({
url: 'api/storeroom/create',
url: 'api/dictrionary/edit',
method: 'post', method: 'post',
data data
}) })
} }
export function del(ids) { export function del(ids) {
const params = {
const data = {
id: ids[0] id: ids[0]
} }
return request({ return request({
url: 'api/storeroom/delete',
method: 'delete',
params
url: 'api/dictrionary/delete',
method: 'post',
data
}) })
} }
export function edit(data) { export function edit(data) {
return request({ return request({
url: 'api/storeroom/update',
method: 'put',
url: 'api/dictrionary/edit',
method: 'post',
data data
}) })
} }
export default { add, edit, del }
export default { add, edit, del, getSupplier }

78
src/api/storeManage/deviceManage/deviceDetail.js

@ -1,78 +0,0 @@
import request from '@/utils/request'
export function get(dictName) {
const params = {
dictName,
page: 0,
size: 9999
}
return request({
url: 'api/dictDetail',
method: 'get',
params
})
}
export function findSubsetById(id) {
const params = {
id,
page: 0,
size: 9999
}
return request({
url: 'api/dictrionary/findSubsetById',
method: 'get',
params
})
}
// 根据字典id查询子集
export function FetchFindAllSubsetById(parameter) {
return request({
url: 'api/dictrionary/findAllSubsetById',
method: 'get',
params: parameter
})
}
export function getDictMap(dictName) {
const params = {
dictName,
page: 0,
size: 9999
}
return request({
url: 'api/dictDetail/map',
method: 'get',
params
})
}
export function add(data) {
return request({
url: 'api/dictrionary/edit',
method: 'post',
data
})
}
export function del(ids) {
const data = {
id: ids[0]
}
return request({
url: 'api/dictrionary/delete',
method: 'post',
data
})
}
export function edit(data) {
return request({
url: 'api/dictrionary/edit',
method: 'post',
data
})
}
export default { add, edit, del }

30
src/api/storeManage/deviceManage/storeroom.js

@ -0,0 +1,30 @@
import request from '@/utils/request'
export function add(data) {
return request({
url: 'api/storeroom/create',
method: 'post',
data
})
}
export function del(ids) {
const params = {
id: ids[0]
}
return request({
url: 'api/storeroom/delete',
method: 'delete',
params
})
}
export function edit(data) {
return request({
url: 'api/storeroom/update',
method: 'put',
data
})
}
export default { add, edit, del }

17
src/views/components/category/SettingForm.vue

@ -39,6 +39,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="显示长度" prop="editLength"> <el-form-item label="显示长度" prop="editLength">
<!-- :min="46" :max="510" -->
<el-input v-model="form.editLength" type="number" :readonly="isDisabled" @keyup.enter.native="changEditLength" @blur="changEditLength" /> <el-input v-model="form.editLength" type="number" :readonly="isDisabled" @keyup.enter.native="changEditLength" @blur="changEditLength" />
</el-form-item> </el-form-item>
<el-form-item label="默认值" prop="isDefaultValue"> <el-form-item label="默认值" prop="isDefaultValue">
@ -129,6 +130,8 @@ export default {
var checkEditLength = (rule, value, callback) => { var checkEditLength = (rule, value, callback) => {
if (this.form.editLength && this.form.editLength > 510) { if (this.form.editLength && this.form.editLength > 510) {
callback(new Error('显示长度最大510')) callback(new Error('显示长度最大510'))
} else if (this.form.editLength && this.form.editLength < 46) {
callback(new Error('显示长度最小46'))
} else { } else {
callback() callback()
} }
@ -294,15 +297,17 @@ export default {
// input.value>200, // input.value>200,
changEditLength(e) { changEditLength(e) {
const value = e.target.value const value = e.target.value
if (value < 46) {
this.$message.error('显示长度最小46')
}
// if (value < 46) {
// this.$message.error('46')
// this.form.editLength = 46
// }
if (value > 200) { if (value > 200) {
this.form.isLine = true this.form.isLine = true
} }
if (value > 510) {
this.$message.error('显示长度最大510')
}
// if (value > 510) {
// this.$message.error('510')
// this.form.editLength = 510
// }
}, },
changeIsLine() { changeIsLine() {
if (!this.form.isLine) { if (!this.form.isLine) {

6
src/views/storeManage/deviceManage/index.vue

@ -63,7 +63,7 @@
<script> <script>
import deviceDetail from './module/deviceDetail' import deviceDetail from './module/deviceDetail'
import crudDevice from '@/api/storeManage/deviceManage/device'
import crudMethod from '@/api/storeManage/deviceManage/storeroom'
import CRUD, { presenter, form } from '@crud/crud' import CRUD, { presenter, form } from '@crud/crud'
import Vue from 'vue' import Vue from 'vue'
@ -76,7 +76,7 @@ export default {
return [ return [
CRUD({ CRUD({
title: '区域', url: 'api/storeroom/tree', title: '区域', url: 'api/storeroom/tree',
crudMethod: { ...crudDevice },
crudMethod: { ...crudMethod },
sort: ['sort,asc'] sort: ['sort,asc']
}) })
] ]
@ -123,7 +123,7 @@ export default {
if (val) { if (val) {
this.crud.selectionChangeHandler([val]) this.crud.selectionChangeHandler([val])
this.$refs.deviceDetail.query.id = val.id this.$refs.deviceDetail.query.id = val.id
this.$refs.deviceDetail.dicPid = val.id
this.$refs.deviceDetail.storeroomId = val.id
this.$refs.deviceDetail.crud.toQuery() this.$refs.deviceDetail.crud.toQuery()
this.activeRightBtn = true this.activeRightBtn = true
} }

159
src/views/storeManage/deviceManage/module/deviceDetail.vue

@ -12,22 +12,51 @@
</crudOperation> </crudOperation>
</div> </div>
<!--表单组件--> <!--表单组件-->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="crud.cancelCU" :visible="crud.status.cu > 0" :title="crud.status.title">
<el-dialog ref="dialog" append-to-body :close-on-click-modal="false" :before-close="crud.cancelCU" :visible="crud.status.cu > 0" :title="addTypeStr" @open="open">
<span class="dialog-right-top" /> <span class="dialog-right-top" />
<span class="dialog-left-bottom" /> <span class="dialog-left-bottom" />
<div class="setting-dialog"> <div class="setting-dialog">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="字典名称" prop="dicName">
<el-input v-model="form.dicName" style="width: 370px;" />
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="设备厂商" prop="deviceInfo.supplierId">
<!-- deviceInfo. -->
<el-select v-model="form.deviceInfo.supplierId" style="width: 370px;">
<el-option v-for="item in supplierOptions" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="设备名称" prop="deviceInfo.deviceName">
<el-input v-model="form.deviceInfo.deviceName" style="width: 370px;" />
</el-form-item>
<el-form-item label="接口IP" prop="deviceInfo.deviceIp">
<el-input v-model="form.deviceInfo.deviceIp" style="width: 370px;" />
</el-form-item>
<el-form-item label="端口" prop="deviceInfo.devicePort">
<el-input v-model="form.deviceInfo.devicePort" style="width: 370px;" />
</el-form-item>
<el-form-item label="库房代码" prop="storeroomCode">
<el-input v-model="form.storeroomCode" style="width: 370px;" />
</el-form-item> </el-form-item>
<el-form-item label="字典名称" prop="dicName">
<el-input v-model="form.dicName" style="width: 370px;" />
<el-form-item label="区号" prop="areaNo">
<el-input v-model="form.areaNo" style="width: 370px;" />
</el-form-item> </el-form-item>
<el-form-item label="字典代码" prop="dicCode">
<el-input v-model="form.dicCode" style="width: 370px;" />
<el-form-item label="起始列号" prop="firstColumnNo">
<el-input v-model="form.firstColumnNo" style="width: 150px;" />
</el-form-item> </el-form-item>
<el-form-item label="内容说明" prop="dicExplain">
<el-input v-model="form.dicExplain" style="width: 370px;" type="textarea" :rows="4" />
<el-form-item label="总列数" prop="sumColumnNo">
<el-input v-model="form.sumColumnNo" style="width: 150px;" />
</el-form-item>
<el-form-item label="节数" prop="partNo">
<el-input v-model="form.partNo" style="width: 150px;" />
</el-form-item>
<el-form-item label="层数" prop="rowNo">
<el-input v-model="form.rowNo" style="width: 150px;" />
</el-form-item>
<el-form-item label="联动操作" prop="isLinkage">
<el-checkbox-group v-model="form.isLinkage">
<el-checkbox label="1">借出</el-checkbox>
<el-checkbox label="2">归还</el-checkbox>
<el-checkbox label="3">入库</el-checkbox>
<el-checkbox label="4">出库</el-checkbox>
</el-checkbox-group>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -48,6 +77,24 @@
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :close-on-click-modal="false" :visible.sync="selectDeviceTypeVisible" title="新增设备">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="设备类型">
<el-select v-model="selectedDeviceType" style="width: 370px;">
<el-option v-for="item in deviceTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="nextStep()">
下一步
</el-button>
</div>
</div>
</el-dialog>
<div class="container-right" style="min-height: calc(100vh - 242px);"> <div class="container-right" style="min-height: calc(100vh - 242px);">
<span class="right-top-line" /> <span class="right-top-line" />
<span class="left-bottom-line" /> <span class="left-bottom-line" />
@ -73,12 +120,12 @@
</template> </template>
<script> <script>
import crudDeviceDetail from '@/api/storeManage/deviceManage/deviceDetail'
import crudDevice from '@/api/storeManage/deviceManage/device'
import CRUD, { presenter, header, form } from '@crud/crud' import CRUD, { presenter, header, form } from '@crud/crud'
import crudOperation from '@crud/CRUD.operation' import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination' import pagination from '@crud/Pagination'
const defaultForm = { id: null, dicName: null, dicCode: null, dicExplain: null, dicType: false }
const defaultForm = { deviceInfo: { supplierId: null }, id: null, supplierId: null, dicExplain: null, dicType: false }
export default { export default {
components: { crudOperation, pagination }, components: { crudOperation, pagination },
@ -86,7 +133,7 @@ export default {
return [ return [
CRUD({ CRUD({
title: '设备', url: 'api/dictrionary/findSubsetById', query: { id: '' }, title: '设备', url: 'api/dictrionary/findSubsetById', query: { id: '' },
crudMethod: { ...crudDeviceDetail },
crudMethod: { ...crudDevice },
optShow: { optShow: {
add: false, add: false,
edit: true, edit: true,
@ -104,7 +151,7 @@ export default {
presenter(), presenter(),
header(), header(),
form(function() { form(function() {
return Object.assign({ dicPid: this.dicPid }, defaultForm)
return Object.assign({ storeroomId: this.storeroomId }, defaultForm)
}) })
], ],
props: { props: {
@ -114,15 +161,15 @@ export default {
}, },
data() { data() {
return { return {
dicPid: null,
storeroomId: null,
needRefreshTree: false, needRefreshTree: false,
rules: { rules: {
dicName: [
{ required: true, message: '请输入字典名称', trigger: 'blur' }
],
dicCode: [
{ required: true, message: '请输入字典代码', trigger: 'blur' }
]
// deviceInfo.
deviceInfo: {
supplierId: [
{ required: true, message: '请选择设备产商', trigger: 'blur' }
]
}
}, },
permission: { permission: {
add: ['admin', 'dict:add'], add: ['admin', 'dict:add'],
@ -131,7 +178,63 @@ export default {
}, },
deleteVisible: false, deleteVisible: false,
deleteData: {}, deleteData: {},
selectDeviceTypeVisible: false
selectDeviceTypeVisible: false,
deviceTypeOptions: [
{
value: '选项1',
label: '空调'
},
{
value: 'denseCabinet',
label: '密集架'
},
{
value: 'rotaryCabinet',
label: '回转柜'
},
{
value: '选项3',
label: '通道门'
},
{
value: '选项4',
label: '摄像头'
},
{
value: '选项5',
label: '恒湿机'
},
{
value: '选项6',
label: '漏水传感器'
},
{
value: '选项7',
label: '温湿度传感器'
},
{
value: '选项8',
label: '空气质量检测设备'
},
{
value: '选项9',
label: '桌面式RFID读写器'
},
{
value: '选项10',
label: '手持式RFID读写器'
}
],
selectedDeviceType: 'denseCabinet', //
supplierOptions: [] //
}
},
computed: {
addTypeStr() {
const addType = this.deviceTypeOptions.find(deviceType => deviceType.value === this.selectedDeviceType).label
return '新增' + addType
// console.log('123')
// return this.deviceTypeOptions.find(deviceType => deviceType.value === this.selectedDeviceType) ? this.deviceTypeOptions.filter(deviceType => deviceType.value === this.selectedDeviceType).label : ''
} }
}, },
methods: { methods: {
@ -143,7 +246,7 @@ export default {
}, },
// //
[CRUD.HOOK.beforeRefresh]() { [CRUD.HOOK.beforeRefresh]() {
this.crud.query.id = this.dicPid
this.crud.query.id = this.storeroomId
}, },
[CRUD.HOOK.afterRefresh](crud) { [CRUD.HOOK.afterRefresh](crud) {
if (this.needRefreshTree) { if (this.needRefreshTree) {
@ -183,6 +286,16 @@ export default {
}, },
selectDeviceType() { selectDeviceType() {
this.selectDeviceTypeVisible = true this.selectDeviceTypeVisible = true
},
nextStep() {
this.selectDeviceTypeVisible = false
this.crud.toAdd()
},
open() {
this.supplierOptions.splice(0, this.supplierOptions.length)
crudDevice.getSupplier().then((data) => {
this.supplierOptions.splice(0, 0, ...data)
})
} }
} }
} }

Loading…
Cancel
Save