设备管理

This commit is contained in:
jjLv 2024-09-19 10:03:52 +08:00
parent a85cba77ce
commit 480a92f43a
7 changed files with 234 additions and 106 deletions

View File

@ -10,35 +10,35 @@ export const queryDeviceListApi = (data) => {
}) })
} }
/** 项目部名称查询 */ /** 设备类型查询 */
export const queryProjDeptNameApi = (data) => { export const queryDeviceTypeApi = (data) => {
return request.get('/base/tbProDepart/getList', { return request.get('/base/tbDevice/getDeviceTypeList', {
params: data params: data
}) })
} }
/** 项目部类型查询 */ /** 所属边带查询 */
export const queryProjDeptTypeApi = (data) => { export const queryBdIdApi = (data) => {
return request.get('/base/tbProDepart/getDataList', { return request.get('/base/tbDevice/getBdIdList', {
params: data params: data
}) })
} }
/** 各省份查询 */ /** 预警配置查询 */
export const queryProvincesApi = (data) => { export const queryConfigApi = (data) => {
return request.get('/base/tbProDepart/getAreaList', { return request.get('/base/tbDevice/getConfigList', {
params: data params: data
}) })
} }
/** 新增项目部 */ /** 新增设备 */
export const addProjDeptApi = (data) => { export const addDeviceApi = (data) => {
return request.post('/base/tbProDepart', data) return request.post('/base/tbDevice', data)
} }
/** 修改项目部 */ /** 修改设备 */
export const editProjDeptApi = (data) => { export const editDeviceApi = (data) => {
return request.put('/base/tbProDepart', data) return request.put('/base/tbDevice', data)
} }
/** 删除设备 */ /** 删除设备 */

View File

@ -0,0 +1,12 @@
/**
* 边代设备管理页面 API
*/
import request from '@/utils/request'
/** 边代设备列表查询 */
export const queryEdgeDeviceListApiTwo = (data) => {
return request.get('/base/tbBdRecord/listTwo', {
params: data
})
}

View File

@ -4,66 +4,67 @@
<el-form <el-form
label-width="100px" label-width="100px"
size="medium" size="medium"
ref="projectParamsRef" ref="deviceParamsRef"
:model="projectParams" :model="deviceParams"
:rules="projectParamsRules" :rules="deviceParamsRules"
> >
<el-form-item label="项目部名称" prop="departName"> <el-form-item label="设备类型" prop="devType">
<el-select <el-select
v-model="projectParams.departName" v-model="deviceParams.devType"
allow-create allow-create
clearable clearable
filterable filterable
placeholder="请选择" placeholder="请选择设备类型"
@change="departNameChange"
> >
<el-option <el-option
v-for="item in projRange" v-for="item in deviceTypeRange"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="项目部类型" prop="departType"> <el-form-item label="设备名称" prop="devName">
<el-input v-model="deviceParams.devName" :maxlength="15" placeholder="请输入" />
</el-form-item>
<el-form-item label="设备编码" prop="devCode">
<el-input v-model="deviceParams.devCode" :maxlength="15" placeholder="请输入" />
</el-form-item>
<el-form-item label="所属边带" prop="bdId">
<el-select <el-select
v-model="projectParams.departType" v-model="deviceParams.bdId"
allow-create
clearable clearable
filterable filterable
placeholder="请选择" placeholder="请选择所属边带"
> >
<el-option <el-option
v-for="item in typeRange" v-for="item in bdIdRange"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="地区" prop="areaId">
<el-form-item label="预警配置" prop="configId">
<el-select <el-select
v-model="projectParams.areaId" v-model="deviceParams.configId"
allow-create
clearable clearable
filterable filterable
placeholder="请选择" placeholder="请选择预警配置"
> >
<el-option <el-option
v-for="item in provinceRange" v-for="item in configRange"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="负责人" prop="headUser">
<el-input v-model="projectParams.headUser" placeholder="请输入" />
</el-form-item>
<el-form-item label="负责人电话" prop="headUserPhone">
<el-input v-model="projectParams.headUserPhone" :maxlength="11" placeholder="请输入" />
</el-form-item>
<el-form-item label="备注" prop="remarks">
<el-input v-model="projectParams.remarks" placeholder="请输入" />
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="success" @click="onSubmit">确认</el-button> <el-button type="success" @click="onSubmit">确认</el-button>
<el-button <el-button
@ -81,12 +82,12 @@
<script> <script>
import { import {
queryProvincesApi, queryDeviceTypeApi,
queryProjDeptTypeApi, queryBdIdApi,
queryProjDeptNameApi, queryConfigApi,
addProjDeptApi, addDeviceApi,
editProjDeptApi editDeviceApi
} from '@/api/base/projDept' } from '@/api/base/device'
export default { export default {
name: 'FormDevice', name: 'FormDevice',
props: { props: {
@ -102,7 +103,7 @@ export default {
mounted() { mounted() {
console.log(this.editParams) console.log(this.editParams)
if (this.editParams) { if (this.editParams) {
Object.assign(this.projectParams, this.editParams) Object.assign(this.deviceParams, this.editParams)
this.subSort = 2 this.subSort = 2
} else { } else {
this.subSort = 1 this.subSort = 1
@ -111,20 +112,21 @@ export default {
data() { data() {
return { return {
subSort: '', // 1 / 2 subSort: '', // 1 / 2
projectParams: { deviceParams: {
// devId: undefined, // id
devType: undefined, // devType: undefined, //
devName: undefined, // devName: undefined, //
devCode: undefined, // devCode: undefined, //
bdId: undefined, // bdId: undefined, //
configId: undefined, // configId: undefined, //
}, },
// //
projectParamsRules: { deviceParamsRules: {
devType: [ devType: [
{ {
required: true, required: true,
message: '请选择设备类型', message: '请选择设备类型',
trigger: 'blur', trigger: 'change',
}, },
], ],
devName: [ devName: [
@ -144,15 +146,15 @@ export default {
bdId: [ bdId: [
{ {
required: true, required: true,
message: '请选择所属边', message: '请选择所属边',
trigger: 'blur', trigger: 'change',
}, },
], ],
configId: [ configId: [
{ {
required: true, required: true,
message: '请选择预警配置', message: '请选择预警配置',
trigger: 'blur', trigger: 'change',
}, },
], ],
}, },
@ -163,35 +165,28 @@ export default {
methods: { methods: {
/** 获取各类下拉框 */ /** 获取各类下拉框 */
async getRanges() { async getRanges() {
// //
let provinceRes = await queryProvincesApi() let deviceTypeRes = await queryDeviceTypeApi()
this.provinceRange = provinceRes.data.map(item => { this.deviceTypeRange = deviceTypeRes.data.map(item => {
return { return {
label: item.areaName, label: item.devName,
value: item.areaId value: item.devId
} }
}) })
// //
let typeRes = await queryProjDeptTypeApi({ let bdIdRes = await queryBdIdApi()
dictType: 'depar_type' this.bdIdRange = bdIdRes.data.map(item => {
})
this.typeRange = typeRes.data.map(item => {
return { return {
label: item.dictLabel, label: item.bdName,
value: item.dictCode value: item.bdId
} }
}) })
// //
let projRes = await queryProjDeptNameApi() let configRes = await queryConfigApi()
this.projRange = projRes.data.map(item => { this.configRange = configRes.data.map(item => {
return { return {
label: item.departName, label: item.configName,
value: item.departName, value: item.configId,
departType: item.departType,
areaName: item.areaName,
headUser: item.headUser,
headUserPhone: item.headUserPhone,
remarks: item.remarks,
} }
}) })
}, },
@ -205,36 +200,29 @@ export default {
}) })
return leaf return leaf
}, },
/** 项目部名称改变 */ // /** */
departNameChange(e) { // departNameChange(e) {
this.projRange.forEach(item => { // this.projRange.forEach(item => {
if(e === item.label) { // if(e === item.label) {
this.projectParams.departType = item.departType // this.deviceParams.departType = item.departType
this.projectParams.areaId = item.areaId // this.deviceParams.areaId = item.areaId
this.projectParams.headUser = item.headUser // this.deviceParams.headUser = item.headUser
this.projectParams.headUserPhone = item.headUserPhone // this.deviceParams.headUserPhone = item.headUserPhone
this.projectParams.remarks = item.remarks // this.deviceParams.remarks = item.remarks
} // }
}) // })
}, // },
/** 级联选择器改变 */ /** 级联选择器改变 */
handleCas(e) { handleCas(e) {
this.projectParams.impUnit = e[e.length - 1] this.deviceParams.impUnit = e[e.length - 1]
}, },
/** 确认按钮 */ /** 确认按钮 */
onSubmit() { onSubmit() {
this.$refs.projectParamsRef.validate(valid => { this.$refs.deviceParamsRef.validate(valid => {
if (valid) { if (valid) {
if(this.projectParams.headUserPhone !== undefined && this.projectParams.headUserPhone !== "" && this.projectParams.headUserPhone !== null) {
if(!this.phoneReg.test(this.projectParams.headUserPhone)) {
this.$modal.msgError('请填写正确的联系方式')
return false
}
}
console.log('校验通过', this.projectParams, this.subSort)
// 1. Api // 1. Api
if(this.subSort === 1) { if(this.subSort === 1) {
addProjDeptApi(this.projectParams).then(res => { addDeviceApi(this.deviceParams).then(res => {
this.$modal.msgSuccess('操作成功') this.$modal.msgSuccess('操作成功')
// 2. // 2.
this.$emit('closeDialog', true) this.$emit('closeDialog', true)
@ -242,7 +230,7 @@ export default {
console.log(err) console.log(err)
}) })
} else if(this.subSort === 2) { } else if(this.subSort === 2) {
editProjDeptApi(this.projectParams).then(res => { editDeviceApi(this.deviceParams).then(res => {
this.$modal.msgSuccess('操作成功') this.$modal.msgSuccess('操作成功')
// 2. // 2.
this.$emit('closeDialog', true) this.$emit('closeDialog', true)

View File

@ -1,8 +1,25 @@
import {
queryDeviceTypeApi
} from '@/api/base/device'
export const queryDeviceTypes = () => {
queryDeviceTypeApi().then(res => {
formLabel[0].f_selList = res.data.map(item => {
return {
label: item.deviceName,
value: item.deviceId
}
})
}).catch(err => {})
}
export const formLabel = [ export const formLabel = [
{ f_label: '设备类型', f_model: 'devType', f_type: 'ipt', }, { f_label: '设备类型', f_model: 'devType', f_type: 'sel',f_selList: [] },
{ f_label: '设备名称', f_model: 'devName', f_type: 'ipt' }, { f_label: '设备名称', f_model: 'devName', f_type: 'ipt' },
{ f_label: '设备编码', f_model: 'devCode', f_type: 'ipt' }, { f_label: '设备编码', f_model: 'devCode', f_type: 'ipt' },
{ f_label: '设备状态', f_model: 'devStatus', f_type: 'ipt' }, { f_label: '设备状态', f_model: 'devStatus', f_type: 'sel',f_selList: [
{ label: '在用', value: '0' },
{ label: '未用', value: '1' },
] },
] ]
export const columnsList = [ export const columnsList = [
@ -10,8 +27,8 @@ export const columnsList = [
{ t_props: 'devCode', t_label: '设备编码' }, { t_props: 'devCode', t_label: '设备编码' },
{ t_props: 'devName', t_label: '设备名称' }, { t_props: 'devName', t_label: '设备名称' },
{ t_props: 'bdId', t_label: '所属边代设备', }, { t_props: 'bdId', t_label: '所属边代设备', },
{ t_props: 'configId', t_label: '预警配置', }, { t_props: 'configId', t_label: '预警配置',t_slot: 'configId' },
{ t_props: 'devStatus', t_label: '设备状态', }, { t_props: 'devStatus', t_label: '设备状态', t_slot: 'devStatus'},
] ]
export const dialogConfig = { export const dialogConfig = {

View File

@ -42,6 +42,27 @@
<!-- <template slot="isMatch" slot-scope="{ data }"> <!-- <template slot="isMatch" slot-scope="{ data }">
{{ data.proId == null ? '不匹配' : '匹配' }} {{ data.proId == null ? '不匹配' : '匹配' }}
</template>--> </template>-->
<template slot="configId" slot-scope="{ data }">
<span
style="color:blue;"
>{{ data.configId }}</span>
</template>
<template slot="configId" slot-scope="{ data }">
<span
style="color:blue;"
>{{ data.configId }}</span>
</template>
<template slot="devStatus" slot-scope="{ data }">
<span
v-if="data.devStatus === '0'"
style="color:aquamarine;"
>{{ '在用' }}</span>
<span
v-else
style="color: darkgrey;"
>{{ '未用' }}</span>
</template>
</TableModel> </TableModel>
<!-- 新增以及修改时的弹框 --> <!-- 新增以及修改时的弹框 -->
@ -61,7 +82,7 @@
</template> </template>
<script> <script>
import { formLabel, columnsList, dialogConfig } from './config' import { formLabel, columnsList, dialogConfig, queryDeviceTypes } from './config'
import { commonMixin } from '../mixins/common' import { commonMixin } from '../mixins/common'
import { import {
queryDeviceListApi, queryDeviceListApi,
@ -78,14 +99,38 @@ export default {
idList.forEach(item => { idList.forEach(item => {
this.exportList.push(item.id) this.exportList.push(item.id)
}) })
}
}, },
// handleAddData() {
// this.editParams = {
// submitType: 'add',
// deviceId: this.deviceAddData.id
// }
// this.dialogConfig.outerTitle = ''
// this.dialogConfig.outerVisible = true
// },
// handleEditData(data) {
// data.submitType = 'edit'
// this.editParams = data
// this.dialogConfig.outerTitle = ''
// this.dialogConfig.outerVisible = true
// },
},
// closeDialog(type) {
// this.dialogConfig.outerVisible = false
// if(type) {
// this.$refs.tableRef.getTableList()
// }
// },
// closeDialogOuter() {
// this.dialogConfig.outerVisible = false
// },
mixins: [commonMixin], mixins: [commonMixin],
components: { components: {
FormDevice FormDevice
}, },
created() { created() {
queryDeviceTypes()
}, },
data() { data() {
return { return {
@ -101,6 +146,7 @@ export default {
addDialogTitle: '新增设备', addDialogTitle: '新增设备',
// //
editDialogTitle: '修改设备', editDialogTitle: '修改设备',
editParams: undefined,
} }
}, },
} }

View File

@ -0,0 +1,18 @@
export const formLabel = [
{ f_label: '工程名称', f_model: 'proName', f_type: 'ipt' },
{ f_label: '项目部名称', f_model: 'departName', f_type: 'ipt' },
{ f_label: '边带名称', f_model: 'edgeName', f_type: 'ipt' },
{ f_label: '边带编码', f_model: 'edgeCode', f_type: 'ipt' },
]
export const columnsList = [
{ t_props: 'proName', t_label: '工程名称', },
{ t_props: 'departName', t_label: '项目部名称' },
{ t_props: 'proNow', t_label: '在用工程' },
{ t_props: 'region', t_label: '所用区域', },
{ t_props: 'edgeName', t_label: '边带名称', },
{ t_props: 'edgeCode', t_label: '边带编码', },
{ t_props: 'edgeIp', t_label: '边带IP', },
{ t_props: 'head', t_label: '负责人', },
{ t_props: 'phone', t_label: '负责人电话', },
]

View File

@ -0,0 +1,47 @@
<template>
<!-- 工程管理页面 -->
<div class="app-container">
<!-- 表格 -->
<TableModel
:formLabel="formLabel"
:columnsList="columnsList"
:request-api="queryEdgeDeviceListApiTwo"
ref="tableRef"
>
</TableModel>
</div>
</template>
<script>
import { formLabel, columnsList, } from './config'
import { commonMixin } from '../mixins/common'
import {
queryEdgeDeviceListApiTwo
} from '@/api/base/edgeDevice'
export default {
name: 'EdgeDevice',
methods: {
queryEdgeDeviceListApiTwo
},
mixins: [commonMixin],
components: {
},
created() {
},
data() {
return {
//
formLabel,
// // id
// exportList: [],
//
columnsList,
//
}
},
}
</script>