Files
dvcp_v2_webapp/packages/conv/AppPatrolReportSet/AppPatrolReportSet.vue

398 lines
14 KiB
Vue
Raw Normal View History

2023-11-02 14:55:23 +08:00
<template>
2023-11-03 15:59:19 +08:00
<ai-detail class="AppPatrolReportSet">
2023-11-02 14:55:23 +08:00
<ai-title slot="title" title="巡查上报设置" isShowBottomBorder>
<el-button size="small" type="primary" icon="iconfont iconAdd" slot="rightBtn" @click="add">添加节点</el-button>
</ai-title>
<template slot="content">
2023-11-03 15:59:19 +08:00
<div class="list" v-if="list.length">
<div class="item" v-for="(item, index) in list" :key="index">
<div class="btn">
<el-button type="text" @click="edit(index)">编辑</el-button>
<el-button type="text" @click="del(index)">删除</el-button>
2023-11-02 14:55:23 +08:00
</div>
2023-11-03 15:59:19 +08:00
<div class="index">{{index < 9 ? `0${index+1}` : `${index+1}`}}</div>
2023-11-02 14:55:23 +08:00
<div class="info">
2023-11-03 15:59:19 +08:00
<div class="label">节点类型</div>
<div class="value">{{item.nodeType == 0 ? '首节点' : $dict.getLabel('prfcNodeType', item.nodeType)}}</div>
2023-11-02 14:55:23 +08:00
</div>
<div class="info">
2023-11-03 15:59:19 +08:00
<div class="label">上级节点网络</div>
2023-11-08 11:48:40 +08:00
<div class="value">{{item.girdName}}<span class="span" v-if="item.nodeType == 2 && item.onlyCoordination == '1'">仅协同部门</span></div>
2023-11-02 14:55:23 +08:00
</div>
2023-11-03 15:59:19 +08:00
<div class="flex">
<div class="info">
<div class="label">生效功能</div>
<div class="value">
<span v-if="item.functionAdd == 1">添加</span>
<span v-if="item.functionHandle == 1">办理</span>
<span v-if="item.functionTransmit == 1">转交</span>
</div>
</div>
<div class="info">
<div class="label">生效身份</div>
<div class="value">
2023-11-08 11:33:28 +08:00
<span v-if="item.roleMember == 1">网格员</span>
<span v-if="item.roleAdmin == 1">网格长</span>
2023-11-03 15:59:19 +08:00
</div>
2023-11-02 14:55:23 +08:00
</div>
</div>
2023-11-03 15:59:19 +08:00
<div v-if="item.nodeType == 3">
<div class="info">
<div class="label">同级节点网络</div>
2023-11-08 11:48:40 +08:00
<div class="value">{{item.girdName2}}<span class="span" v-if="item.nodeType == 3 && item.onlyCoordination == '1'">仅协同部门</span></div>
2023-11-03 15:59:19 +08:00
</div>
<div class="flex">
<div class="info">
<div class="label">生效功能</div>
<div class="value">
2023-11-08 11:33:28 +08:00
<span v-if="item.functionAdd2 == 1">添加</span>
<span v-if="item.functionHandle2 == 1">办理</span>
<span v-if="item.functionTransmit2 == 1">转交</span>
2023-11-03 15:59:19 +08:00
</div>
</div>
<div class="info">
<div class="label">生效身份</div>
<div class="value">
2023-11-08 11:33:28 +08:00
<span v-if="item.roleMember2 == 1">网格员</span>
<span v-if="item.roleAdmin2 == 1">网格长</span>
2023-11-03 15:59:19 +08:00
</div>
</div>
<!-- <div class="info">
<div class="label">条件约束</div>
<div class="value">名称约束</div>
</div> -->
</div>
2023-11-02 14:55:23 +08:00
</div>
</div>
</div>
2023-11-03 15:59:19 +08:00
<ai-empty v-else>暂无数据</ai-empty>
2023-11-06 15:36:13 +08:00
<ai-dialog :visible.sync="dialog" :title="dialogTitle" @closed="$refs.form.resetFields()" @onConfirm="onConfirm" width="70%">
2023-11-02 14:55:23 +08:00
<el-form ref="form" :rules="rules" size="small" :model="form" label-width="110px">
2023-11-03 15:59:19 +08:00
<el-form-item label="节点类型" prop="nodeType" v-if="form.nodeType === '0'">
<ai-select disabled
v-model="form.nodeType"
2023-11-02 14:55:23 +08:00
clearable
placeholder="请选择..."
2023-11-03 15:59:19 +08:00
:selectList="nodeTypeDictList">
2023-11-02 14:55:23 +08:00
</ai-select>
</el-form-item>
2023-11-03 15:59:19 +08:00
<el-form-item label="节点类型" prop="nodeType" v-else>
2023-11-03 16:06:48 +08:00
<ai-select :disabled="getGirdList.length == 1 && form.nodeType == '1'"
2023-11-03 15:59:19 +08:00
v-model="form.nodeType"
2023-11-02 14:55:23 +08:00
clearable
placeholder="请选择..."
2023-11-03 15:59:19 +08:00
:selectList="dict.getDict('prfcNodeType')" @change="changeNodeType">
2023-11-02 14:55:23 +08:00
</ai-select>
</el-form-item>
2023-11-03 15:59:19 +08:00
<el-form-item label="选择节点网格" prop="girdId" >
<ai-picker v-if="form.nodeType === '0'"
:ops="{label: 'girdName'}"
dialogTitle="选择节点网格"
action="/app/appgirdinfo/girdList"
:instance="instance"
@pick="onGirdChange"
v-model="form.girdIdList">
<div class="userSelcet">
<span style="color: #606266;" v-if="form.girdIdList.length">{{ form.girdName }}</span>
<span v-else>选择节点网格</span>
<i class="el-icon-arrow-down"></i>
</div>
</ai-picker>
<el-input placeholder="节点网格" v-model="form.girdName" disabled v-else></el-input>
<el-checkbox v-model="sameLevelUsed" disabled>当前选中网格层级生效</el-checkbox>
2023-11-08 09:31:03 +08:00
<el-checkbox v-model="form.onlyCoordination" v-if="form.nodeType == '2'" true-label="1" false-label="0">仅协同部门</el-checkbox>
2023-11-02 14:55:23 +08:00
</el-form-item>
2023-11-03 15:59:19 +08:00
<el-form-item label="生效功能">
<el-checkbox v-model="form.functionAdd" true-label="1" false-label="0">添加</el-checkbox>
<el-checkbox v-model="form.functionHandle" true-label="1" false-label="0">办理</el-checkbox>
<el-checkbox v-model="form.functionTransmit" true-label="1" false-label="0">转交</el-checkbox>
2023-11-02 14:55:23 +08:00
</el-form-item>
2023-11-03 15:59:19 +08:00
<el-form-item label="生效身份">
2023-11-08 11:20:40 +08:00
<el-checkbox v-model="form.roleMember" true-label="1" false-label="0">网格员</el-checkbox>
<el-checkbox v-model="form.roleAdmin" true-label="1" false-label="0">网格长</el-checkbox>
2023-11-02 14:55:23 +08:00
</el-form-item>
2023-11-03 15:59:19 +08:00
<div v-if="form.nodeType == 3">
<el-form-item label="同级节点网格" prop="girdId2">
<el-input placeholder="节点网格" v-model="form.girdName2" disabled></el-input>
<el-checkbox v-model="sameLevelUsed" disabled>当前选中网格层级生效</el-checkbox>
2023-11-08 09:31:03 +08:00
<el-checkbox v-model="form.onlyCoordination" v-if="form.nodeType == '3'" true-label="1" false-label="0">仅协同部门</el-checkbox>
2023-11-03 15:59:19 +08:00
</el-form-item>
<el-form-item label="生效功能">
<el-checkbox v-model="form.functionAdd2" true-label="1" false-label="0">添加</el-checkbox>
<el-checkbox v-model="form.functionHandle2" true-label="1" false-label="0">办理</el-checkbox>
<el-checkbox v-model="form.functionTransmit2" true-label="1" false-label="0">转交</el-checkbox>
</el-form-item>
<el-form-item label="生效身份">
2023-11-08 11:33:28 +08:00
<el-checkbox v-model="form.roleMember2" true-label="1" false-label="0">网格员</el-checkbox>
<el-checkbox v-model="form.roleAdmin2" true-label="1" false-label="0">网格长</el-checkbox>
2023-11-03 15:59:19 +08:00
</el-form-item>
</div>
2023-11-02 14:55:23 +08:00
</el-form>
</ai-dialog>
</template>
2023-11-03 15:59:19 +08:00
<template slot="footer">
2023-11-03 16:06:48 +08:00
<el-button @click="getList">返回</el-button>
2023-11-03 15:59:19 +08:00
<el-button type="primary" @click="confirm">提交</el-button>
</template>
</ai-detail>
2023-11-02 14:55:23 +08:00
</template>
<script>
export default {
name: 'AppPatrolReportSet',
label: '巡查上报设置',
props: {
instance: Function,
dict: Object,
permissions: Function
},
data () {
return {
dialog: false,
dialogTitle: '',
form: {
2023-11-03 15:59:19 +08:00
nodeType: '', //0首节点、1上级、2同级、3混合
girdIdList: [],
girdId: '',
girdCode: '',
girdLevel: '',
girdName: '',
functionAdd: '1',
functionHandle: '1',
functionTransmit: '1',
roleAdmin: '1',
roleMember: '1',
girdId2: '',
girdCode2: '',
girdLevel2: '',
girdName2: '',
functionAdd2: '1',
functionHandle2: '1',
functionTransmit2: '1',
roleAdmin2: '1',
roleMember2: '1',
2023-11-08 09:31:03 +08:00
onlyCoordination: '1'
2023-11-02 14:55:23 +08:00
},
2023-11-03 15:59:19 +08:00
list: [],
nodeTypeDictList: [{dictName: '首节点', dictValue: '0'}],
sameLevelUsed: true,
getGirdList: [],
editIndex: ''
2023-11-02 14:55:23 +08:00
}
},
computed: {
rules() {
return {
2023-11-03 15:59:19 +08:00
nodeType: [{ required: true, message: '请选择节点类型', trigger: 'change'}],
girdId: [{ required: true, message: '请选择节点网络', trigger: 'change'}],
girdId2: [{ required: true, message: '请选择同级节点网格', trigger: 'change'}],
2023-11-02 14:55:23 +08:00
}
},
},
created() {
2023-11-03 15:59:19 +08:00
this.dict.load('prfcNodeType').then(() => {
this.getList()
2023-11-02 14:55:23 +08:00
})
},
methods: {
add() {
2023-11-03 15:59:19 +08:00
this.form = {
nodeType: '', //0首节点、1上级、2同级、3混合
girdIdList: [],
girdId: '',
girdCode: '',
girdLevel: '',
girdName: '',
functionAdd: '1',
functionHandle: '1',
functionTransmit: '1',
roleAdmin: '1',
roleMember: '1',
girdId2: '',
girdCode2: '',
girdLevel2: '',
girdName2: '',
functionAdd2: '1',
functionHandle2: '1',
functionTransmit2: '1',
roleAdmin2: '1',
roleMember2: '1',
2023-11-08 09:31:03 +08:00
onlyCoordination: '1'
2023-11-03 15:59:19 +08:00
}
if(this.list.length > 0) {
this.getGird(this.list.length-1)
}else { //首节点
this.form.nodeType = '0'
}
2023-11-02 14:55:23 +08:00
this.dialogTitle = '添加节点'
this.dialog = true
2023-11-03 15:59:19 +08:00
this.$refs.form.resetFields()
},
del(index) {
this.$confirm('确定删除该节点?').then(() => {
this.list.splice(index, 1)
})
},
edit(index) {
this.editIndex = index
this.form = {...this.list[index]}
if(this.form.nodeType != '0') {
2023-11-03 16:06:48 +08:00
this.getGird(index-1)
2023-11-03 15:59:19 +08:00
}
this.dialogTitle = '编辑节点'
this.dialog = true
2023-11-02 14:55:23 +08:00
},
onConfirm() {
2023-11-03 15:59:19 +08:00
this.$refs.form.validate((valid) => {
if (valid) {
if(this.dialogTitle == '添加节点') {
this.list.push(this.form)
}else {
this.list.splice(this.editIndex, 1, this.form)
}
this.dialog = false
}
})
},
getList() {
this.instance.post(`/app/apppatrolreportflowconfigv2/queryNew`).then(res => {
if (res.code == 0) {
this.list = res.data
}
})
},
onGirdChange(e) {
this.form.girdId = e[0].id
this.form.girdCode = e[0].girdCode
this.form.girdLevel = e[0].girdLevel
this.form.girdName = e[0].girdName
},
changeNodeType(e) { //1 上下级节点取数组02同级节点选择数组1; 3混合节点主取数组0同级选择数组1
console.log(e)
var arr = []
if(e == 1) {
arr.push(this.getGirdList[0])
}
if(e == 2) {
arr.push(this.getGirdList[1])
}
if(e == 3) {
arr.push(this.getGirdList[0])
this.form.girdId2 = this.getGirdList[1].id
this.form.girdCode2 = this.getGirdList[1].girdCode
this.form.girdLevel2 = this.getGirdList[1].girdLevel
this.form.girdName2 = this.getGirdList[1].girdName
}
this.onGirdChange(arr)
},
getGird(index) {
var girdCode = this.list[index].girdCode
this.instance.post(`app/apppatrolreportflowconfigv2/choiseGird?previousGirdCode=${girdCode}`).then(res => {
if (res.code == 0) {
this.getGirdList = res.data
if(res.data.length == 1 && this.dialogTitle == '添加节点') { //返回数据一条表示nodeType 1 上下级节点混合节点主去数组0同级选择数组1同级节点选择数组1
this.form.nodeType = '1'
this.onGirdChange(res.data)
}
}
})
},
confirm() {
this.instance.post(`/app/apppatrolreportflowconfigv2/addOrUpdate`, this.list).then(res => {
if (res.code == 0) {
this.$message.success('提交成功')
this.getList()
}
})
2023-11-02 14:55:23 +08:00
}
}
}
</script>
<style lang="scss" scoped>
.AppPatrolReportSet {
height: 100%;
2023-11-03 15:59:19 +08:00
.list {
padding: 0 16px 16px;
background-color: #fff;
}
2023-11-02 14:55:23 +08:00
.item {
2023-11-03 15:59:19 +08:00
padding: 16px 0 4px 26px;
2023-11-02 14:55:23 +08:00
position: relative;
border-bottom: 1px solid #F2F2F2;
.info {
height: 22px;
font-family: MicrosoftYaHei;
font-size: 14px;
color: #888;
line-height: 22px;
margin-bottom: 16px;
.label {
display: inline-block;
width: 112px;
color: #888;
}
.value {
display: inline-block;
width: calc(100% - 112px);
color: #222;
span {
display: inline-block;
margin-right: 24px;
}
2023-11-08 11:48:40 +08:00
.span {
margin-left: 16px;
}
2023-11-02 14:55:23 +08:00
}
}
.index {
position: absolute;
2023-11-03 15:59:19 +08:00
top: 16px;
2023-11-02 14:55:23 +08:00
left: 0;
height: 21px;
font-family: DINAlternate-Bold;
font-weight: 700;
font-size: 18px;
color: #666;
}
.btn {
position: absolute;
right: 0;
2023-11-03 15:59:19 +08:00
top: 16px;
2023-11-02 14:55:23 +08:00
}
.flex {
display: flex;
.info {
width: 33.3%;
}
}
}
2023-11-03 15:59:19 +08:00
:deep(.ai-select),
:deep(.el-input) {
2023-11-02 14:55:23 +08:00
display: inline-block;
2023-11-03 15:59:19 +08:00
width: 50%;
2023-11-02 14:55:23 +08:00
margin-right: 16px;
}
2023-11-03 15:59:19 +08:00
:deep(.AiPicker) {
display: inline-block;
width: 50%;
margin-right: 16px;
border: 1px solid #d0d4dc;
padding-left: 16px;
box-sizing: border-box;
border-radius: 4px;
position: relative;
.el-icon-arrow-down {
position: absolute;
top: 8px;
right: 8px;
}
}
2023-11-02 14:55:23 +08:00
}
</style>