预警后台-部分模块搭建及调试-d3

This commit is contained in:
FrancisHu 2024-09-13 17:05:42 +08:00
parent 3aaa137b35
commit 0e7e3fae33
15 changed files with 971 additions and 41 deletions

View File

@ -10,14 +10,26 @@ export const queryCrewListApi = (data) => {
}) })
} }
/** 班组成员查询 */
export const queryCrewPersonApi = (data) => {
return request.get('/base/tbPeople/list', {
params: data
})
}
/** 新增班组 */ /** 新增班组 */
export const addCrewApi = (data) => { export const addCrewApi = (data) => {
return request.post('/base/tbTeam', data) return request.post('/base/tbTeam', data)
} }
/** 修改人员 */ /** 修改人员 */
export const editPersonApi = (data) => { export const editCrewApi = (data) => {
return request.put('/base/tbPeople', data) return request.put('/base/tbTeam', data)
}
/** 移出班组 */
export const removeCrewApi = (data) => {
return request.post('/base/tbTeam/remove', data)
} }
/** 删除班组 */ /** 删除班组 */
@ -25,9 +37,26 @@ export const deleteCrewApi = (id) => {
return request.delete(`/base/tbTeam/${id}`) return request.delete(`/base/tbTeam/${id}`)
} }
/** 人员信息查询 */ /** 安全帽查询 */
export const queryInfoApi = (id) => { export const queryHatApi = (data) => {
return request.get(`/base/tbPeople/${id}`) return request.get('/base/tbTeam/devList', {
params: data
})
}
/** 绑定安全帽 */
export const bindHatApi = (data) => {
return request.post('/base/tbTeam/bind', data)
}
/** 解绑安全帽 */
export const unbindHatApi = (data) => {
return request.post('/base/tbTeam/unbind', data)
}
/** 改版-班组长下拉查询 */
export const queryCrewSelApi = (id) => {
return request.get(`/base/tbTeam/${id}`)
} }
/** 班组长查询 isAll: 0 */ /** 班组长查询 isAll: 0 */

View File

@ -109,7 +109,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<!-- 按钮集群 --> <!-- 按钮集群 -->
<el-row class="btn-container" v-if="showRightTools"> <el-row class="btn-container" >
<div class="btn-handler"> <div class="btn-handler">
<slot name="btn" :queryParams="queryParams"></slot> <slot name="btn" :queryParams="queryParams"></slot>
</div> </div>
@ -120,6 +120,7 @@
:handleShow.sync="handleShow" :handleShow.sync="handleShow"
:columns="columCheckList" :columns="columCheckList"
@queryTable="getTableList" @queryTable="getTableList"
v-if="showRightTools"
/> />
</el-row> </el-row>
<!-- 表格 --> <!-- 表格 -->
@ -223,6 +224,10 @@ export default {
type: Object, type: Object,
default: () => null default: () => null
}, },
sendId: {
type: Number,
default: () => null
},
/** 是否显示查询按钮 */ /** 是否显示查询按钮 */
showSearchBtn: { showSearchBtn: {
type: Boolean, type: Boolean,
@ -253,6 +258,10 @@ export default {
default: () => { default: () => {
return true return true
} }
},
selSingle: {
type: Boolean,
default: false
} }
}, },
computed: { computed: {
@ -307,7 +316,6 @@ export default {
}, },
created() { created() {
console.log(this.sendParams, 'table')
this.columCheckList = this.columnsList.map(e => { this.columCheckList = this.columnsList.map(e => {
this.$set(e, 'checked', true) this.$set(e, 'checked', true)
return e return e
@ -333,6 +341,7 @@ export default {
this.$set(this.queryParams, key, this.sendParams[key]) this.$set(this.queryParams, key, this.sendParams[key])
} */ } */
} }
if(this.sendId !== null) this.queryParams.id = this.sendId
this.getTableList() this.getTableList()
}, },
updated() { updated() {
@ -381,6 +390,7 @@ export default {
} }
} }
} }
}, },
/** 查询按钮 */ /** 查询按钮 */
handleQuery() { handleQuery() {
@ -468,6 +478,7 @@ export default {
}, },
handleSelectionChange(e) { handleSelectionChange(e) {
console.log(e, 'e')
this.msgList = e this.msgList = e
this.$emit('transIdList', this.msgList) this.$emit('transIdList', this.msgList)
}, },

View File

@ -63,7 +63,13 @@
<TableModel <TableModel
:columnsList="columnsListCrew" :columnsList="columnsListCrew"
:request-api="queryIsAllApi" :request-api="() => {
if(!this.crewParams) {
return queryIsAllApi()
} else {
return queryCrewSelApi(this.crewParams.id)
}
}"
ref="tableRef" ref="tableRef"
@transIdList="getIdList" @transIdList="getIdList"
:show-btn-crews="false" :show-btn-crews="false"
@ -111,9 +117,11 @@ import { commonMixin } from '@/views/base/mixins/common'
import { columnsListCrew } from '../config-crew' import { columnsListCrew } from '../config-crew'
import { import {
addCrewApi, addCrewApi,
editCrewApi,
queryLeaderApi, queryLeaderApi,
queryIsAllApi, queryIsAllApi,
queryProjApi queryProjApi,
queryCrewSelApi
} from '@/api/base/crew' } from '@/api/base/crew'
export default { export default {
name: 'FormPerson', name: 'FormPerson',
@ -126,15 +134,18 @@ export default {
mixins: [commonMixin], mixins: [commonMixin],
components: { }, components: { },
created() { created() {
this.getRanges() // this.getRanges()
}, },
mounted() { mounted() {
if (this.crewParams) { if (this.crewParams) {
this.crewParams.proId = Number(this.crewParams.proId)
this.ableSelect = this.crewParams.relId
Object.assign(this.projectParams, this.crewParams) Object.assign(this.projectParams, this.crewParams)
this.subSort = 2 this.subSort = 2
} else { } else {
this.subSort = 1 this.subSort = 1
} }
this.getRanges()
}, },
data() { data() {
return { return {
@ -178,6 +189,7 @@ export default {
}, },
methods: { methods: {
queryIsAllApi, queryIsAllApi,
queryCrewSelApi,
getIdList(idList) { getIdList(idList) {
this.exportList = [] this.exportList = []
idList.forEach(item => { idList.forEach(item => {
@ -186,20 +198,35 @@ export default {
}, },
/** 获取各类下拉框 */ /** 获取各类下拉框 */
async getRanges() { async getRanges() {
// if(this.subSort === 1) {
let leaderRes = await queryLeaderApi({ //
isAll: 0 let leaderRes = await queryLeaderApi({
}) isAll: 0
this.leaderRange = leaderRes.data.map(item => { })
return { this.leaderRange = leaderRes.data.map(item => {
label: item.relName, return {
value: item.id, label: item.relName,
idCard: item.idCard, value: item.id,
relPhone: item.relPhone, idCard: item.idCard,
_idCard: this.idCardCrypto(item.idCard), relPhone: item.relPhone,
_relPhone: this.phoneCrypto(item.relPhone) _idCard: this.idCardCrypto(item.idCard),
} _relPhone: this.phoneCrypto(item.relPhone)
}) }
})
} else {
//
let _leaderRes = await queryCrewSelApi(this.crewParams.id)
this.leaderRange = _leaderRes.data.map(item => {
return {
label: item.relName,
value: item.id,
idCard: item.idCard,
relPhone: item.relPhone,
_idCard: this.idCardCrypto(item.idCard),
_relPhone: this.phoneCrypto(item.relPhone)
}
})
}
// //
let projRes = await queryProjApi({ let projRes = await queryProjApi({
isAll: 0 isAll: 0
@ -269,7 +296,7 @@ export default {
console.log(err) console.log(err)
}) })
} else if(this.subSort === 2) { } else if(this.subSort === 2) {
editPersonApi(this.projectParams).then(res => { editCrewApi(this.projectParams).then(res => {
this.$modal.msgSuccess('操作成功') this.$modal.msgSuccess('操作成功')
// 2. // 2.
this.$emit('closeDialog', true) this.$emit('closeDialog', true)

View File

@ -0,0 +1,220 @@
<template>
<!-- 工程管理 新增编辑 表单组件 -->
<div>
<TableModel
:formLabel="formLabelCrewTab"
:columnsList="columnsListCrewTab"
:request-api="queryCrewPersonApi"
ref="tableRef"
@transIdList="getIdList"
:show-right-tools="false"
:send-id="crewId"
:show-sel="false"
>
<template slot="btn" slot-scope="{ queryParams }">
<el-button type="primary" @click="handleAddMember()" icon="el-icon-plus" size="mini"
>添加成员</el-button
>
</template>
<template slot="handle" slot-scope="{ data }">
<!-- <el-button
type="primary"
size="mini"
@click="handleEditData(data)"
>编辑</el-button
>-->
<el-button
type="danger"
size="mini"
v-if="data.devName === null && data.teamId !== null"
@click="handleRemove(data.id)"
>移出班组</el-button
>
</template>
<template slot="sex" slot-scope="{ data }">
{{ data.sex === 1 ? '男' : '女' }}
</template>
<template slot="relName" slot-scope="{ data }">
{{ data.relName }}
<el-tag
style="margin-left: 3px"
v-if="data.teamId === null"
size="mini"
type="success"
>班组长</el-tag>
</template>
<template slot="devName" slot-scope="{ data }">
<div
style="width: 100%; display: flex; justify-content: space-around"
>
<span>{{ data.devName === null ? '未绑定' : data.devName }}</span>
<span
class="binding"
v-if="data.devName === null"
style="color: #11AB21"
@click="bindHat(data)"
>
<i class="el-icon-link"></i>
绑定
</span>
<span
class="unbind"
v-else
style="color: #FF0000"
@click="unbindHat(data.id)"
>
<i class="el-icon-link"></i>
解绑
</span>
</div>
</template>
</TableModel>
<DialogModel
:dialogConfig="dialogConfigHat"
@closeDialogOuter="closeDialogHatOuter"
>
<template slot="outerContent">
<!-- 新增以及修改数据的表单组件 -->
<TableHat
:hat-param="hatParam"
@closeHat="closeDialogHatOuter"
/>
</template>
</DialogModel>
<DialogModel
:dialogConfig="dialogConfigMember"
@closeDialogOuter="closeDialogMemberOuter"
>
<template slot="outerContent">
<!-- 新增以及修改数据的表单组件 -->
<TableMember
:member-param="memberParam"
@closeMember="closeDialogMemberOuter"
/>
</template>
</DialogModel>
</div>
</template>
<script>
import { formLabelCrewTab, columnsListCrewTab } from '../table-crew'
import { dialogConfigHat } from '../table-hat'
import { dialogConfigMember } from '../table-member'
import {
queryCrewPersonApi,
removeCrewApi,
unbindHatApi
} from '@/api/base/crew'
import { commonMixin } from '@/views/base/mixins/common'
import TableHat from './table-hat.vue'
import TableMember from './table-member.vue'
export default {
name: 'TableCrew',
props: {
tableCrewParams: {
type: Object,
default: null
}
},
mixins: [commonMixin],
components: {
TableHat,
TableMember
},
created() {
console.log(this.tableCrewParams)
this.crewId = this.tableCrewParams.id
this.crewLeaderId = this.tableCrewParams.relId
},
mounted() {
},
data() {
return {
formLabelCrewTab,
columnsListCrewTab,
dialogConfigHat,
dialogConfigMember,
queryCrewPersonApi,
crewId: undefined,
crewLeaderId: undefined,
hatParam: undefined,
memberParam: undefined
}
},
methods: {
getIdList(idList) {
this.exportList = []
idList.forEach(item => {
this.exportList.push(item.id)
})
},
handleRemove(id) {
this.$modal
.confirm('确定移出班组吗?')
.then(() => {
removeCrewApi({
id
}).then(res => {
this.$refs.tableRef.getTableList()
}).catch(err => {})
})
.catch(() => {})
},
bindHat(v) {
this.hatParam = v
this.dialogConfigHat.outerVisible = true
},
closeDialogHatOuter(type) {
this.dialogConfigHat.outerVisible = false
if(type) {
this.$refs.tableRef.getTableList()
}
},
closeDialogMemberOuter(type) {
this.dialogConfigMember.outerVisible = false
if(type) {
this.$refs.tableRef.getTableList()
}
},
unbindHat(id) {
this.$modal
.confirm('确定解绑安全帽吗?')
.then(() => {
unbindHatApi({
id
}).then(res => {
this.$modal.msgSuccess('解绑成功')
this.$refs.tableRef.getTableList()
}).catch(err => {})
})
.catch(() => {})
},
handleAddMember() {
this.memberParam = this.tableCrewParams
this.dialogConfigMember.outerVisible = true
}
},
}
</script>
<style scoped>
::v-deep .el-select {
width: 100%;
}
::v-deep .el-form-item__label{
font-weight: normal;
}
.binding, .unbind{
cursor: pointer;
}
.binding:hover{
border-bottom: 2px solid #11AB21;
}
.unbind:hover{
border-bottom: 2px solid #FF0000;
}
</style>

View File

@ -0,0 +1,109 @@
<template>
<!-- 工程管理 新增编辑 表单组件 -->
<div>
<TableModel
:formLabel="formLabelHat"
:columnsList="columnsListHat"
:request-api="queryHatApi"
ref="tableRef"
@transIdList="getIdList"
:show-right-tools="false"
:show-operation="false"
style="margin-bottom: 100px"
:sel-single="true"
>
</TableModel>
<div
style="display: flex; justify-content: right"
>
<el-button type="success" @click="onSubmit">绑定</el-button>
<el-button
@click="
() => {
this.$emit('closeHat', true)
}
"
>取消</el-button
>
</div>
</div>
</template>
<script>
import { formLabelHat, columnsListHat } from '../table-hat'
import {
queryHatApi,
bindHatApi,
} from '@/api/base/crew'
import { commonMixin } from '@/views/base/mixins/common'
export default {
name: 'TableCrew',
props: {
hatParam: {
type: Object,
default: null
}
},
mixins: [commonMixin],
components: { },
created() {
console.log(this.hatParam)
},
mounted() {
},
data() {
return {
formLabelHat,
columnsListHat,
}
},
methods: {
queryHatApi,
bindHatApi,
getIdList(idList) {
this.exportList = []
idList.forEach(item => {
this.exportList.push(item.devId)
})
},
async onSubmit() {
if(!this.exportList) {
this.$modal.msgError('未选中智能安全帽!')
} else if(this.exportList.length > 1) {
this.$modal.msgError('只能选择一种安全帽!')
} else {
console.log(this.exportList, this.hatParam)
let res = await bindHatApi({
id: this.hatParam.id,
devId: this.exportList[0]
})
if(res.code === 200) {
this.$modal.msgSuccess('绑定成功')
this.$emit('closeHat', true)
}
}
}
},
}
</script>
<style scoped>
::v-deep .el-select {
width: 100%;
}
::v-deep .el-form-item__label{
font-weight: normal;
}
.binding, .unbind{
cursor: pointer;
}
.binding:hover{
border-bottom: 2px solid #11AB21;
}
.unbind:hover{
border-bottom: 2px solid #FF0000;
}
</style>

View File

@ -0,0 +1,100 @@
<template>
<!-- 工程管理 新增编辑 表单组件 -->
<div>
<TableModel
:formLabel="formLabelMember"
:columnsList="columnsListMember"
:request-api="queryIsAllApi"
ref="tableRef"
@transIdList="getIdList"
:show-right-tools="false"
:show-operation="false"
style="margin-bottom: 100px"
>
</TableModel>
<div
style="display: flex; justify-content: right"
>
<el-button type="success" @click="onSubmit">绑定</el-button>
<el-button
@click="
() => {
this.$emit('closeHat', true)
}
"
>取消</el-button
>
</div>
</div>
</template>
<script>
import { formLabelMember, columnsListMember } from '../table-member'
import {
queryIsAllApi,
addCrewApi
} from '@/api/base/crew'
import { commonMixin } from '@/views/base/mixins/common'
export default {
name: 'TableMember',
props: {
memberParam: {
type: Object,
default: null
}
},
mixins: [commonMixin],
components: { },
created() {
console.log(this.memberParam)
},
mounted() {
},
data() {
return {
formLabelMember,
columnsListMember,
}
},
methods: {
queryIsAllApi,
getIdList(idList) {
this.exportList = []
idList.forEach(item => {
this.exportList.push(item.id)
})
},
async onSubmit() {
let res = await addCrewApi({
id: this.memberParam.id,
idList: this.exportList,
})
if(res.code === 200) {
this.$modal.msgSuccess('添加成功')
this.$emit('closeMember', true)
}
}
},
}
</script>
<style scoped>
::v-deep .el-select {
width: 100%;
}
::v-deep .el-form-item__label{
font-weight: normal;
}
.binding, .unbind{
cursor: pointer;
}
.binding:hover{
border-bottom: 2px solid #11AB21;
}
.unbind:hover{
border-bottom: 2px solid #FF0000;
}
</style>

View File

@ -30,18 +30,21 @@
type="primary" type="primary"
size="mini" size="mini"
@click="handleEditData(data)" @click="handleEditData(data)"
v-if="data.teamStatus === '正常'"
>编辑</el-button >编辑</el-button
> >
<el-button <el-button
type="danger" type="danger"
size="mini" size="mini"
@click="handleDeleteData(data.id, deleteCrewApi)" @click="handleDeleteData(data.id, deleteCrewApi)"
>删除</el-button v-if="data.teamStatus === '正常' && data.peopleCount === 1"
>解散</el-button
> >
<!-- <span v-else>-</span>-->
</template> </template>
<template slot="peopleCount" slot-scope="{ data }"> <template slot="peopleCount" slot-scope="{ data }">
<span <span
class="people-count" :class="[{ peopleCount: data.teamStatus === '正常' }]"
@click="handleCrew(data)" @click="handleCrew(data)"
> >
{{ data.peopleCount }} {{ data.peopleCount }}
@ -72,17 +75,32 @@
/> />
</template> </template>
</DialogModel> </DialogModel>
<DialogModel
:dialogConfig="dialogConfigCrewTab"
@closeDialogOuter="closeDialogCrewTabOuter"
>
<template slot="outerContent">
<!-- 新增以及修改数据的表单组件 -->
<TableCrew
:table-crew-params="tableCrewData"
/>
</template>
</DialogModel>
</div> </div>
</template> </template>
<script> <script>
import { formLabel, columnsList, dialogConfig } from './config' import { formLabel, columnsList, dialogConfig } from './config'
import { dialogConfigCrewTab } from './table-crew'
import { commonMixin } from '../mixins/common' import { commonMixin } from '../mixins/common'
import { import {
queryCrewListApi, queryCrewListApi,
deleteCrewApi deleteCrewApi
} from '@/api/base/crew' } from '@/api/base/crew'
import FormCrew from './components/form-crew.vue' import FormCrew from './components/form-crew.vue'
import TableCrew from './components/table-crew.vue'
export default { export default {
name: 'crew', name: 'crew',
methods: { methods: {
@ -94,13 +112,21 @@ export default {
this.exportList.push(item.id) this.exportList.push(item.id)
}) })
}, },
closeDialogCrewTabOuter() {
this.dialogConfigCrewTab.outerVisible = false
this.$refs.tableRef.getTableList()
},
handleCrew(v) { handleCrew(v) {
console.log(v) if(v.teamStatus === '正常') {
this.tableCrewData = v
this.dialogConfigCrewTab.outerVisible = true
}
} }
}, },
mixins: [commonMixin], mixins: [commonMixin],
components: { components: {
FormCrew FormCrew,
TableCrew
}, },
created() { created() {
@ -115,10 +141,12 @@ export default {
columnsList, columnsList,
// //
dialogConfig, dialogConfig,
dialogConfigCrewTab,
// //
addDialogTitle: '新增班组', addDialogTitle: '新增班组',
// //
editDialogTitle: '修改班组', editDialogTitle: '修改班组',
tableCrewData: undefined,
} }
}, },
} }
@ -126,7 +154,7 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.people-count{ .peopleCount{
cursor: pointer; cursor: pointer;
color: #11AB21; color: #11AB21;
@ -134,7 +162,7 @@ export default {
} }
.people-count:hover{ .peopleCount:hover{
border-bottom: 2px solid #11AB21; border-bottom: 2px solid #11AB21;

View File

@ -1,20 +1,20 @@
export const formLabelCrewTab = [ export const formLabelCrewTab = [
{ f_label: '姓名', f_model: 'name', f_type: 'ipt' }, { f_label: '姓名', f_model: 'relName', f_type: 'ipt' },
{ f_label: '性别', f_model: 'sex', f_type: 'sel', f_selList: [ { f_label: '性别', f_model: 'sex', f_type: 'sel', f_selList: [
{ label: '男', value: '1' }, { label: '男', value: '1' },
{ label: '女', value: '0' }, { label: '女', value: '0' },
] }, ] },
] ]
export const columnsListCrewTab = [ export const columnsListCrewTab = [
{ t_props: 'teamName', t_label: '姓名', }, { t_props: 'relName', t_label: '姓名', t_slot: 'relName' },
{ t_props: 'proName', t_label: '身份证', }, { t_props: 'idCard', t_label: '身份证', },
{ t_props: 'relName', t_label: '电话', }, { t_props: 'relPhone', t_label: '电话', },
{ t_props: 'peopleCount', t_label: '性别', t_slot: 'peopleCount' }, { t_props: 'sex', t_label: '性别', t_slot: 'sex' },
{ t_props: 'teamStatus', t_label: '智能安全帽', t_slot: 'teamStatus' }, { t_props: 'devName', t_label: '智能安全帽', t_slot: 'devName' },
] ]
export const dialogConfigCrewTab = { export const dialogConfigCrewTab = {
outerWidth: '60%', outerWidth: '80%',
outerTitle: '', outerTitle: '班组成员列表',
outerVisible: false, outerVisible: false,
} }

View File

@ -0,0 +1,13 @@
export const formLabelHat = [
{ f_label: '关键字', f_model: 'keyWord', f_type: 'ipt' },
]
export const columnsListHat = [
{ t_props: 'devName', t_label: '智能安全帽名称', },
{ t_props: 'devCode', t_label: '智能安全帽编码', },
]
export const dialogConfigHat = {
outerWidth: '50%',
outerTitle: '选择安全帽',
outerVisible: false,
}

View File

@ -0,0 +1,14 @@
export const formLabelMember = [
{ f_label: '姓名', f_model: 'relName', f_type: 'ipt' },
]
export const columnsListMember = [
{ t_props: 'relName', t_label: '姓名', },
{ t_props: 'idCard', t_label: '身份证号', },
{ t_props: 'relPhone', t_label: '手机号', },
]
export const dialogConfigMember = {
outerWidth: '50%',
outerTitle: '选择新成员',
outerVisible: false,
}

View File

@ -0,0 +1,251 @@
<template>
<!-- 工程管理 新增编辑 表单组件 -->
<div>
<el-form
label-width="100px"
size="medium"
ref="projectParamsRef"
:model="projectParams"
:rules="projectParamsRules"
>
<el-form-item label="项目部名称" prop="departName">
<el-select
v-model="projectParams.departName"
allow-create
clearable
filterable
placeholder="请选择"
@change="departNameChange"
>
<el-option
v-for="item in projRange"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="项目部类型" prop="departType">
<el-select
v-model="projectParams.departType"
clearable
filterable
placeholder="请选择"
>
<el-option
v-for="item in typeRange"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="地区" prop="areaId">
<el-select
v-model="projectParams.areaId"
clearable
filterable
placeholder="请选择"
>
<el-option
v-for="item in provinceRange"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</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-button type="success" @click="onSubmit">确认</el-button>
<el-button
@click="
() => {
this.$emit('closeDialog')
}
"
>取消</el-button
>
</el-form-item>
</el-form>
</div>
</template>
<script>
import {
queryProvincesApi,
queryProjDeptTypeApi,
queryProjDeptNameApi,
addProjDeptApi,
editProjDeptApi
} from '@/api/base/projDept'
export default {
name: 'FormDevice',
props: {
editParams: {
type: Object,
default: () => null,
},
},
components: { },
created() {
this.getRanges()
},
mounted() {
console.log(this.editParams)
if (this.editParams) {
Object.assign(this.projectParams, this.editParams)
this.subSort = 2
} else {
this.subSort = 1
}
},
data() {
return {
subSort: '', // 1 / 2
projectParams: {
departName: undefined, //
departType: undefined, //
areaId: undefined, //
headUser: undefined, //
headUserPhone: undefined, //
remarks: undefined, //
},
//
projectParamsRules: {
departName: [
{
required: true,
message: '请输入项目部名称',
trigger: 'blur',
},
],
departType: [
{
required: true,
message: '请输入项目部类型',
trigger: 'blur',
},
],
},
//
projRange: [],
provinceRange: [],
typeRange: [],
//
phoneReg: /^(?:(?:\+|00)86)?1[3-9]\d{9}$/
}
},
methods: {
/** 获取各类下拉框 */
async getRanges() {
//
let provinceRes = await queryProvincesApi()
this.provinceRange = provinceRes.data.map(item => {
return {
label: item.areaName,
value: item.areaId
}
})
//
let typeRes = await queryProjDeptTypeApi({
dictType: 'depar_type'
})
this.typeRange = typeRes.data.map(item => {
return {
label: item.dictLabel,
value: item.dictCode
}
})
//
let projRes = await queryProjDeptNameApi()
this.projRange = projRes.data.map(item => {
return {
label: item.departName,
value: item.departName,
departType: item.departType,
areaName: item.areaName,
headUser: item.headUser,
headUserPhone: item.headUserPhone,
remarks: item.remarks,
}
})
},
/** 改变树结构 */
changeTree(leaf) {
leaf.map(item => {
item.value = item.id
if(item.children) {
this.changeTree(item.children)
}
})
return leaf
},
/** 项目部名称改变 */
departNameChange(e) {
this.projRange.forEach(item => {
if(e === item.label) {
this.projectParams.departType = item.departType
this.projectParams.areaId = item.areaId
this.projectParams.headUser = item.headUser
this.projectParams.headUserPhone = item.headUserPhone
this.projectParams.remarks = item.remarks
}
})
},
/** 级联选择器改变 */
handleCas(e) {
this.projectParams.impUnit = e[e.length - 1]
},
/** 确认按钮 */
onSubmit() {
this.$refs.projectParamsRef.validate(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
if(this.subSort === 1) {
addProjDeptApi(this.projectParams).then(res => {
this.$modal.msgSuccess('操作成功')
// 2.
this.$emit('closeDialog', true)
}).catch(err => {
console.log(err)
})
} else if(this.subSort === 2) {
editProjDeptApi(this.projectParams).then(res => {
this.$modal.msgSuccess('操作成功')
// 2.
this.$emit('closeDialog', true)
}).catch(err => {
console.log(err)
})
}
}
})
},
},
}
</script>
<style scoped>
::v-deep .el-select {
width: 100%;
}
::v-deep .el-form-item__label{
font-weight: normal;
}
</style>

View File

@ -0,0 +1,20 @@
export const formLabel = [
{ f_label: '设备类型', f_model: 'areaId', f_type: 'ipt', },
{ f_label: '设备名称', f_model: 'departName', f_type: 'ipt' },
{ f_label: '设备编码', f_model: 'headUser', f_type: 'ipt' },
{ f_label: '状态', f_model: 'headUser', f_type: 'ipt' },
]
export const columnsList = [
{ t_props: 'departName', t_label: '设备类型', },
{ t_props: 'departType', t_label: '设备编码' },
{ t_props: 'areaName', t_label: '设备名称' },
{ t_props: 'headUser', t_label: '所属边代设备', },
{ t_props: 'headUserPhone', t_label: '预警配置', },
{ t_props: 'remarks', t_label: '设备状态', },
]
export const dialogConfig = {
outerWidth: '60%',
outerTitle: '',
outerVisible: false,
}

View File

@ -0,0 +1,107 @@
<template>
<!-- 工程管理页面 -->
<div class="app-container">
<!-- 表格 -->
<TableModel
:formLabel="formLabel"
:columnsList="columnsList"
:request-api="queryProjDeptListApi"
ref="tableRef"
@transIdList="getIdList"
>
<template slot="btn" slot-scope="{ queryParams }">
<el-button type="primary" @click="handleAddData()" icon="el-icon-plus" size="mini"
>新建项目部</el-button
>
<el-button
@click="handleExportData(
exportList,
'base/tbProDepart/export',
'项目部清单',
queryParams
)"
icon="el-icon-upload2"
size="mini"
>导出数据</el-button
>
</template>
<template slot="handle" slot-scope="{ data }">
<el-button
type="primary"
size="mini"
@click="handleEditData(data)"
>编辑</el-button
>
<el-button
type="danger"
size="mini"
@click="handleDeleteData(data.id, deleteProjDeptApi)"
>删除</el-button
>
</template>
<!-- <template slot="isMatch" slot-scope="{ data }">
{{ data.proId == null ? '不匹配' : '匹配' }}
</template>-->
</TableModel>
<!-- 新增以及修改时的弹框 -->
<DialogModel
:dialogConfig="dialogConfig"
@closeDialogOuter="closeDialogOuter"
>
<template slot="outerContent">
<!-- 新增以及修改数据的表单组件 -->
<FormDevice
:editParams="editParams"
@closeDialog="closeDialog"
/>
</template>
</DialogModel>
</div>
</template>
<script>
import { formLabel, columnsList, dialogConfig, queryProvinces } from './config'
import { commonMixin } from '../mixins/common'
import {
queryProjDeptListApi,
deleteProjDeptApi
} from '@/api/base/projDept'
import FormDevice from './components/form-device.vue'
export default {
name: 'ProjectDepart',
methods: {
queryProjDeptListApi,
deleteProjDeptApi,
getIdList(idList) {
this.exportList = []
idList.forEach(item => {
this.exportList.push(item.id)
})
}
},
mixins: [commonMixin],
components: {
FormDevice
},
created() {
queryProvinces()
},
data() {
return {
//
formLabel,
// id
exportList: [],
//
columnsList,
//
dialogConfig,
//
addDialogTitle: '新建项目部',
//
editDialogTitle: '修改项目部',
}
},
}
</script>

View File

@ -101,10 +101,10 @@ export default {
if (this.editParams) { if (this.editParams) {
Object.assign(this.projectParams, this.editParams) Object.assign(this.projectParams, this.editParams)
// //
queryInfoApi(this.editParams.id).then(res => { /* queryInfoApi(this.editParams.id).then(res => {
this.projectParams.idCard = res.data.idCard this.projectParams.idCard = res.data.idCard
this.projectParams.relPhone = res.data.relPhone this.projectParams.relPhone = res.data.relPhone
}).catch(err => {}) }).catch(err => {}) */
this.subSort = 2 this.subSort = 2
} else { } else {
this.subSort = 1 this.subSort = 1

View File

@ -36,6 +36,7 @@
type="danger" type="danger"
size="mini" size="mini"
@click="handleDeleteData(data.id, deleteProjApi)" @click="handleDeleteData(data.id, deleteProjApi)"
v-if="data.powerTotal === 0"
>删除</el-button >删除</el-button
> >
</template> </template>