Browse Source

代码提交

master
juwei001 1 year ago
parent
commit
1e6ad815e1
  1. 16
      src/api/hsyf.js
  2. 128
      src/components/GridTree/nodeWrap.vue
  3. 23
      src/components/NameSplit/index.vue
  4. 82
      src/views/next/dialog-module/hsyf-left/organization/organization.vue
  5. 5
      src/views/next/dialog-module/hsyf-right/ylqdModal.vue
  6. 4
      src/views/next/dialog-module/hsyf-right/ywqsModal.vue
  7. 2
      src/views/next/screen-content-left/hsyf-left/index.vue

16
src/api/hsyf.js

@ -17,6 +17,22 @@ export function getSearchTreelist (params) {
params params
}) })
} }
// 党组织架构
export function partyOrgTree (params) {
return request({
url: '/api/resi/partymember/yifengScreen/partyOrgTree',
method: 'GET',
params
})
}
// 党员中心户列表
export function partyMemberCenListByOrg (params) {
return request({
url: '/api/resi/partymember/yifengScreen/partyMemberCenListByOrg',
method: 'GET',
params
})
}
// 各级党委组织架构领导班子 // 各级党委组织架构领导班子
export function partyOrgLeaderList (params) { export function partyOrgLeaderList (params) {

128
src/components/GridTree/nodeWrap.vue

@ -1,14 +1,10 @@
<template> <template>
<div> <div>
<div class="node-wrap" v-if="nodeConfig.laneLevel === 1"> <div class="node-wrap" v-if="nodeConfig.orgType == '3'">
<div class="node-wrap-box"> <div class="node-wrap-box">
<div class="node-box-after"> <div class="node-box-after">
<div class="nodeBoxTop"> <div class="nodeBoxTop">
<nameSplit <nameSplit :item="nodeConfig" areaName="name" peopleName="name" />
:item="nodeConfig"
areaName="organizationName"
peopleName="name"
/>
</div> </div>
</div> </div>
</div> </div>
@ -24,7 +20,7 @@
<div class="condition-node"> <div class="condition-node">
<div class="condition-node-box"> <div class="condition-node-box">
<div class="auto-judge"> <div class="auto-judge">
<div v-if="getOnerSixLevelFlag(item)"> <div v-if="item.orgType != '6' && item.orgType != '7'">
<div <div
:class="[ :class="[
item.children && item.children.length > 0 item.children && item.children.length > 0
@ -34,7 +30,7 @@
> >
<nameSplit <nameSplit
:item="item" :item="item"
areaName="organizationName" areaName="name"
peopleName="name" peopleName="name"
/> />
</div> </div>
@ -57,7 +53,7 @@
/> />
</div> </div>
</div> </div>
<div v-if="item.level === 'building_chief'"> <div v-if="item.orgType == '6'">
<div <div
:class="[ :class="[
item.children && item.children.length > 0 item.children && item.children.length > 0
@ -67,18 +63,19 @@
> >
<nameSplit <nameSplit
:item="item" :item="item"
areaName="organizationName" areaName="name"
peopleName="name" peopleName="name"
/> />
</div> </div>
<div <div
v-if="item._children"
style="text-align: center; cursor: pointer" style="text-align: center; cursor: pointer"
@click="getChildrenData(item, index, nodeConfig.children)" @click="
getChildrenDataPople(item, index, nodeConfig.children)
"
> >
<img <img
style="width: 16px; height: 16px; margin-left: 50px" style="width: 16px; height: 16px; margin-left: 50px"
v-if="item.children && item.children.length > 0" v-if="item.id == currentId"
:src="require('@/assets/images/home/sh-red.png')" :src="require('@/assets/images/home/sh-red.png')"
alt="" alt=""
/> />
@ -90,8 +87,7 @@
/> />
</div> </div>
</div> </div>
<div v-if="item.level === 'unit_chief'"> <div v-if="item.orgType == '7'">
<!-- @click="gotoPersonnel(item)" -->
<div <div
:class="[ :class="[
item.categoryWarn === 'red' item.categoryWarn === 'red'
@ -105,17 +101,16 @@
? 'dyzxhHover' ? 'dyzxhHover'
: 'dyzxh', : 'dyzxh',
]" ]"
:title="item.organizationName" :title="item.name"
> >
<!-- {{ spliceNameFun(item.organizationName, 3) }} -->
<div class="dyzxhDian" v-if="index === 0"></div> <div class="dyzxhDian" v-if="index === 0"></div>
<div class="dyzxhDian1" v-else></div> <div class="dyzxhDian1" v-else></div>
{{ item.organizationName }} {{ item.name }}
</div> </div>
<div <!-- <div
v-if="item._children" v-if="item._children"
style="text-align: center; cursor: pointer" style="text-align: center; cursor: pointer"
@click="getChildrenData(item, index, nodeConfig.children)" @click="getChildrenDataPople(item, index, nodeConfig.children)"
> >
<img <img
style="width: 16px; height: 16px; margin-left: 50px" style="width: 16px; height: 16px; margin-left: 50px"
@ -129,7 +124,7 @@
:src="require('@/assets/images/home/zk-red.png')" :src="require('@/assets/images/home/zk-red.png')"
alt="" alt=""
/> />
</div> </div> -->
</div> </div>
</div> </div>
</div> </div>
@ -152,57 +147,59 @@
</div> </div>
</template> </template>
<script> <script>
import { partyMemberCenListByOrg } from '@/api/hsyf'
export default { export default {
props: ["nodeConfig"], props: ['nodeConfig'],
data () { data () {
return { return {
homeTypeArr: [], homeTypeArr: [],
currentId: null,
sixLevelArr: [ sixLevelArr: [
"province", 'province',
"city", 'city',
"district", 'district',
"street", 'street',
"community", 'community',
"grid_manager", 'grid_manager'
], ]
}; }
}, },
mounted () {}, mounted () {},
computed: {}, computed: {},
watch: {}, watch: {},
methods: { methods: {
getAllName (item) { getAllName (item) {
return item; return item
}, },
getItemNameArr (str) { getItemNameArr (str) {
return str.split(",").slice(0, 2); return str.split(',').slice(0, 2)
}, },
spliceNameFun (row, num) { spliceNameFun (row, num) {
if (row && row.length > num) { if (row && row.length > num) {
return row.substring(0, num) + "..."; return row.substring(0, num) + '...'
} }
return row; return row
}, },
getOnerSixLevelFlag (item) { getOnerSixLevelFlag (item) {
return this.sixLevelArr.includes(item.level); return this.sixLevelArr.includes(item.level)
}, },
findParentParentId (nodeConfig, pid) { findParentParentId (nodeConfig, pid) {
let parentParentId = ""; let parentParentId = ''
if (nodeConfig.id === pid) { if (nodeConfig.id === pid) {
return nodeConfig.pid; return nodeConfig.pid
} else { } else {
if (nodeConfig.children && nodeConfig.children.length > 0) { if (nodeConfig.children && nodeConfig.children.length > 0) {
for (let i = 0; i < nodeConfig.children.length; i++) { for (let i = 0; i < nodeConfig.children.length; i++) {
parentParentId = this.findParentParentId( parentParentId = this.findParentParentId(
nodeConfig.children[i], nodeConfig.children[i],
pid pid
); )
if (parentParentId) { if (parentParentId) {
return parentParentId; return parentParentId
} }
} }
} }
@ -212,27 +209,44 @@ export default {
arr.forEach((element, index) => { arr.forEach((element, index) => {
if (index === idx) { if (index === idx) {
if (element.children) { if (element.children) {
element._children = element.children; element._children = element.children
element.children = null; element.children = null
} else {
element.children = element._children
}
} else { } else {
element.children = element._children; element.children = null
} }
})
},
getChildrenDataPople (item, idx, arr) {
partyMemberCenListByOrg({ orgId: item.id }).then((res) => {
arr.forEach((element, index) => {
if (element.children) {
element._children = element.children
element.children = null
this.currentId = null
} else { } else {
element.children = null; element.children = res.data.map(item => {
return {
...item,
orgType: 7
} }
}); })
this.currentId = item.id
}
})
})
}, },
gotoPersonnel (item) { gotoPersonnel (item) {
const grandPid = this.findParentParentId(this.nodeConfig, item.pid); const grandPid = this.findParentParentId(this.nodeConfig, item.pid)
const name = item.organizationName const name = item.name ? item.name : '四号楼二单元302'
? item.organizationName
: "四号楼二单元302";
this.$router.push( this.$router.push(
`/organizational/microgrid/${item.id}/${grandPid}/${name}` `/organizational/microgrid/${item.id}/${grandPid}/${name}`
); )
}, }
}, }
}; }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@import "~@/assets/css/workflow.scss"; @import "~@/assets/css/workflow.scss";
@ -325,10 +339,11 @@ export default {
text-align: center; text-align: center;
min-width: 120px; min-width: 120px;
height: 81px; height: 81px;
padding-top: 28px; margin-bottom: 12px;
padding-top: 42px;
background-image: url(~@/assets/images/home/lydxzTree-red.png); background-image: url(~@/assets/images/home/lydxzTree-red.png);
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center 28px;
} }
.lydxzHover { .lydxzHover {
@include spanLevel; @include spanLevel;
@ -336,10 +351,11 @@ export default {
text-align: center; text-align: center;
min-width: 120px; min-width: 120px;
height: 81px; height: 81px;
padding-top: 28px; margin-bottom: 12px;
padding-top: 42px;
background-image: url(~@/assets/images/home/lydxzTree-red.png); background-image: url(~@/assets/images/home/lydxzTree-red.png);
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center 28px;
} }
.dyzxh { .dyzxh {
@include lastLevel; @include lastLevel;

23
src/components/NameSplit/index.vue

@ -1,43 +1,42 @@
<template> <template>
<div class="node-com"> <div class="node-com">
<div <div
v-if="!flag" :class="item['orgType'] == '3' ? 'nodeTitle1' : 'nodeTitle'"
:class="item['level'] == 'street' ? 'nodeTitle1' : 'nodeTitle'"
:title="getAllName(item[areaName])" :title="getAllName(item[areaName])"
> >
{{ spliceNameFun(item[areaName], 7) }} {{ spliceNameFun(item[areaName], 7) }}
<div v-if="item['level'] == 'street'" class="nodeTitleStreet"> <div v-if="item['orgType'] == '3'" class="nodeTitleStreet">
<img src="@/assets/images/icon/danghui.png" /> <img src="@/assets/images/icon/danghui.png" />
</div> </div>
<div v-if="item['level'] == 'street'" class="nodeTitleStreet1"> <div v-if="item['orgType'] == '3'" class="nodeTitleStreet1">
<img src="@/assets/images/icon/downJt.png" /> <img src="@/assets/images/icon/downJt.png" />
</div> </div>
</div> </div>
<div <!-- <div
class="name_more peoName" class="name_more peoName"
v-if="item[peopleName] && !item[peopleName].includes(',')" v-if="item[peopleName] && !item[peopleName].includes(',')"
@click="gotoPersonnel(item.resiId)" @click="gotoPersonnel(item.id)"
:title="getAllName(item[peopleName])" :title="getAllName(item[peopleName])"
> >
{{ spliceNameFun(item[peopleName], 12) }} {{ spliceNameFun(item[peopleName], 12) }}
</div> </div> -->
<div <!-- <div
class="name_more" class="name_more"
v-if="item[peopleName] && item[peopleName].includes(',')" v-if="item[peopleName] && item[peopleName].includes(',')"
> >
<span <span
v-for="(i, k) in getItemNameArr(item[peopleName])" v-for="(i, k) in getItemNameArr(item[peopleName])"
:key="i" :key="i"
@click="gotoPersonnel(item.resiId.split(',')[k])" @click="gotoPersonnel(item.id.split(',')[k])"
:title="getAllName(i)" :title="getAllName(i)"
>{{ spliceNameFun(i, 12) >{{ spliceNameFun(i, 12)
}}{{ }}{{
k === getItemNameArr(item[peopleName]).length - 1 ? "" : "," k === getItemNameArr(item[peopleName]).length - 1 ? "" : ","
}}</span }}</span
> > -->
<!-- 多个人员展示 --> <!-- 多个人员展示 -->
<!-- <popTips :item="item" :pageName="pageName" /> --> <!-- <popTips :item="item" :pageName="pageName" /> -->
</div> <!-- </div> -->
<div v-if="item.partyOrgLevel < 9" class="peoPosition peoName"> <div v-if="item.partyOrgLevel < 9" class="peoPosition peoName">
({{ getPeopositionMap(item.partyOrgLevel) }}) ({{ getPeopositionMap(item.partyOrgLevel) }})
</div> </div>
@ -73,7 +72,6 @@ export default {
return {}; return {};
}, },
mounted() { mounted() {
// console.log("item:", this.item);
}, },
methods: { methods: {
getAllName(item) { getAllName(item) {
@ -81,6 +79,7 @@ export default {
}, },
getItemNameArr(str) { getItemNameArr(str) {
console.log('getItemNameArr::', str.split(",").slice(0, 1))
return str.split(",").slice(0, 1); return str.split(",").slice(0, 1);
}, },

82
src/views/next/dialog-module/hsyf-left/organization/organization.vue

@ -18,16 +18,12 @@
v-for="(item, index) in levelArr" v-for="(item, index) in levelArr"
:key="item" :key="item"
:class="[ :class="[
item === 'unit_chief' ? 'lastLevel' : '', index === 4 ? 'lastLevel' : '',
`flowLevel-${index + 1}`, `flowLevel-${index + 1}`,
]" ]"
:style="{
height: item === 'building_chief' ? '91px' : '',
lineHeight: item === 'building_chief' ? '91px' : '',
}"
> >
<div :class="[item === 'building_chief' ? 'otherTop' : '']"> <div :class="[index === 4 ? 'otherTop' : '']">
{{ getTitleNameMapFun(item) }} {{ getTitleNameMapFun(index) }}
</div> </div>
</div> </div>
<el-row> <el-row>
@ -60,6 +56,7 @@
<script> <script>
import { mapGetters, mapActions } from 'vuex' import { mapGetters, mapActions } from 'vuex'
import { partyOrgTree } from '@/api/hsyf'
import dataJson from './organization.json' import dataJson from './organization.json'
export default { export default {
name: '', name: '',
@ -88,10 +85,6 @@ export default {
} }
}, },
mounted () { mounted () {
// const orgId = this.$store.state.chooseArea.chooseName.orgId;
// if (orgId) {
// this.getTreeData();
// }
this.getTreeData() this.getTreeData()
}, },
created () {}, created () {},
@ -127,24 +120,24 @@ export default {
}, },
// datalevel // datalevel
getDataPLevel (data) { getDataPLevel (data) {
data.forEach((item) => { // data.forEach((item) => {
this.levelArr.push(item.level) // this.levelArr.push(item.level)
if (item.children && item.children.length > 0) { // if (item.children && item.children.length > 0) {
this.getDataPLevel(item.children) // this.getDataPLevel(item.children)
} // }
}) // })
this.levelArr = [1, 2, 3, 4, 5]
const myArray = [...new Set(this.levelArr)] const myArray = [...new Set(this.levelArr)]
this.treeHeight = myArray.length * 110 + 200 this.treeHeight = myArray.length * 110 + 200
this.levelArr = this.getLevelArrNum(myArray)
}, },
hideChildrenData (data) { hideChildrenData (data) {
const newData = [...data] const newData = [...data]
newData.forEach((item) => { newData.forEach((item) => {
if (item.laneLevel === 1) { if (item.orgType == 3) {
this.hideChildrenData(item.children) this.hideChildrenData(item.children)
} }
if (item.children && item.children.length > 0 && item.laneLevel >= 2) { if (item.children && item.children.length > 0 && item.orgType >= 4) {
item._children = item.children item._children = item.children
item.children = null item.children = null
this.hideChildrenData(item._children) this.hideChildrenData(item._children)
@ -156,13 +149,15 @@ export default {
// //
getTreeData () { getTreeData () {
this.loading = true this.loading = true
// partyOrgTree().then((res) => {
const res = this.dataJson const { code, msg } = res
// console.log(' this.dataJson::', this.dataJson); const data = [{
const { children: res.data.list,
data: { code, msg, data } orgType: 3,
} = res id: '1740292343513055234',
// console.log(data); pid: '0',
name: res.data.title
}]
if (code === 0) { if (code === 0) {
if (data.length === 0) { if (data.length === 0) {
this.loading = false this.loading = false
@ -177,20 +172,18 @@ export default {
this.loading = false this.loading = false
this.$message.error(msg) this.$message.error(msg)
} }
})
}, },
getTitleNameMapFun (i) { getTitleNameMapFun (i) {
const titleNameMap = new Map([ const titleNameMap = [
['province', '省委'], '镇党委',
['city', '市委'], '新村党委',
['district', '区委'], '自然村党组织',
['street', '镇党委'], '网格党小组',
['community', '新村党委'], '党员中心户'
['grid_manager', '自然村党组织'], ]
['building_chief', '网格党小组'], return titleNameMap[i]
['unit_chief', '党员中心户']
])
return titleNameMap.get(i)
}, },
zoomSize (e) { zoomSize (e) {
@ -486,7 +479,7 @@ export default {
.flowLevel-4 { .flowLevel-4 {
top: 474px; top: 474px;
line-height: 91px; line-height: 110px;
div { div {
padding-left: 80px; padding-left: 80px;
@ -504,19 +497,22 @@ export default {
} }
.flowLevel-5 { .flowLevel-5 {
top: 600px; top: 610px;
line-height: 110px; line-height: 120px;
height: 120px;
div { div {
padding-left: 80px; padding-left: 80px;
&::after { &::after {
@include flowLevelAfter; @include flowLevelAfter;
top: 24px; top: 44px;
left: 15px; left: 15px;
width: 180px; width: 180px;
height: 60px; height: 100px;
background-image: url(~@/assets/images/icon/dyzxhT-red.png); background-image: url(~@/assets/images/icon/dyzxhT-red.png);
background-repeat: no-repeat;
background-position: center 12px;
opacity: 0.6; opacity: 0.6;
} }
} }

5
src/views/next/dialog-module/hsyf-right/ylqdModal.vue

@ -298,7 +298,10 @@ export default {
&-title { &-title {
display: flex; display: flex;
&-left { &-left {
width: 220px; width: 210px;
overflow: hidden; /* 隐藏超出的内容 */
text-overflow: ellipsis; /* 显示省略号 */
white-space: nowrap;
} }
&-arrow { &-arrow {
transform: rotate(-90deg); transform: rotate(-90deg);

4
src/views/next/dialog-module/hsyf-right/ywqsModal.vue

@ -40,9 +40,9 @@
line-height: 22px; line-height: 22px;
" "
> >
{{ item.describe }} {{ item.introduce }}
</div> </div>
<div>{{ item.describe }}</div> <div>{{ item.introduce }}</div>
</el-tooltip> </el-tooltip>
</div> </div>
<div class="content-item-wish"> <div class="content-item-wish">

2
src/views/next/screen-content-left/hsyf-left/index.vue

@ -453,7 +453,7 @@ export default {
this.$set( this.$set(
i, i,
'c', 'c',
this.forArrayValue(['#00BABC', '#009FA4', '#00FFC0'], index) this.forArrayValue(['rgba(255,255,255,0.2)', 'rgba(255,255,255,0.4)', 'rgba(255,255,255,0.6)'], index)
) )
}) })
this.getData() this.getData()

Loading…
Cancel
Save