diff --git a/src/assets/images/overview/green.png b/src/assets/images/overview/green.png new file mode 100644 index 000000000..0b2b30e40 Binary files /dev/null and b/src/assets/images/overview/green.png differ diff --git a/src/assets/images/overview/icon_fw.png b/src/assets/images/overview/icon_fw.png new file mode 100644 index 000000000..529bd968a Binary files /dev/null and b/src/assets/images/overview/icon_fw.png differ diff --git a/src/assets/images/overview/icon_jm.png b/src/assets/images/overview/icon_jm.png new file mode 100644 index 000000000..f44e8b087 Binary files /dev/null and b/src/assets/images/overview/icon_jm.png differ diff --git a/src/assets/images/overview/icon_ld.png b/src/assets/images/overview/icon_ld.png new file mode 100644 index 000000000..0eb77cedc Binary files /dev/null and b/src/assets/images/overview/icon_ld.png differ diff --git a/src/assets/images/overview/icon_wg.png b/src/assets/images/overview/icon_wg.png new file mode 100644 index 000000000..de1620aff Binary files /dev/null and b/src/assets/images/overview/icon_wg.png differ diff --git a/src/assets/images/overview/map-pop-img.png b/src/assets/images/overview/map-pop-img.png new file mode 100644 index 000000000..0090c3b9a Binary files /dev/null and b/src/assets/images/overview/map-pop-img.png differ diff --git a/src/assets/images/overview/red.png b/src/assets/images/overview/red.png new file mode 100644 index 000000000..17279eede Binary files /dev/null and b/src/assets/images/overview/red.png differ diff --git a/src/assets/images/overview/select.png b/src/assets/images/overview/select.png new file mode 100644 index 000000000..6cc8c1ce2 Binary files /dev/null and b/src/assets/images/overview/select.png differ diff --git a/src/assets/images/overview/yellow.png b/src/assets/images/overview/yellow.png new file mode 100644 index 000000000..d79fb6198 Binary files /dev/null and b/src/assets/images/overview/yellow.png differ diff --git a/src/assets/scss/dataBoard/overview/index.scss b/src/assets/scss/dataBoard/overview/index.scss index fff69aaa1..1878a00e1 100644 --- a/src/assets/scss/dataBoard/overview/index.scss +++ b/src/assets/scss/dataBoard/overview/index.scss @@ -389,10 +389,9 @@ display: flex; width: 140px; height: 90px; - background: url(../../../../assets/images/shuju/overview/top-bg.png); + background: url(../../../../assets/images/shuju/overview/top-bg.png) no-repeat; background-size: 140px 70px; padding: 8px 16px; - background-repeat: no-repeat; .item-info { height: 14px; diff --git a/src/components/GridTree/nodeWrap.vue b/src/components/GridTree/nodeWrap.vue index cb7aacc44..72864caae 100644 --- a/src/components/GridTree/nodeWrap.vue +++ b/src/components/GridTree/nodeWrap.vue @@ -27,8 +27,9 @@
-
- {{ spliceNameFun(item.name, 3) }} +
+ + {{ item.organizationName }}
@@ -97,7 +98,7 @@ export default { }, gotoPersonnel(item) { const grandPid = this.findParentParentId(this.nodeConfig, item.pid); - const name = item.name ? item.name : "四号楼二单元302"; + const name = item.organizationName ? item.organizationName : "四号楼二单元302"; this.$router.push(`/organizational/microgrid/${item.id}/${grandPid}/${name}`); }, }, diff --git a/src/main.js b/src/main.js index afc7bd227..06a255397 100644 --- a/src/main.js +++ b/src/main.js @@ -24,6 +24,7 @@ import http from "@/utils/request"; import cloneDeep from "lodash/cloneDeep"; // 引入工具类 import "./utils/jwTool"; +import desensitization from "./utils/desensitization"; // axios封装 import ajax from "@/js/ajax"; // service @@ -95,6 +96,7 @@ Vue.directive("fixed", { // 挂载全局 Vue.prototype.$http = http; +Vue.prototype.$sensitive = desensitization; // el-uploader的header配置 Vue.prototype.$getElUploadHeaders = () => ({ diff --git a/src/router/index.js b/src/router/index.js index 591a1d3a1..0e004ad3c 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -258,6 +258,16 @@ export const dataBoardRoutes = { title: "居民画像", isTab: false, }, + },, + { + path: "overview/familyPortrait", + props: true, + component: () => import("@/views/dataBoard/overview/familyPortrait/index"), + name: "dataBoard-overview-familyPortrait", + meta: { + title: "家庭画像", + isTab: false, + }, }, { path: "renfang/warn-building", diff --git a/src/utils/desensitization.js b/src/utils/desensitization.js new file mode 100644 index 000000000..fcb4cbde2 --- /dev/null +++ b/src/utils/desensitization.js @@ -0,0 +1,5 @@ +export default function desensitizeSubstring(inputString, start, end) { + // 保留部分非敏感信息,将敏感信息部分截取掉 + let desensitizedString = inputString.substring(0, start) + "*".repeat(end - start) + inputString.substring(end); + return desensitizedString; +} diff --git a/src/views/dataBoard/cpts/details/jmxq.vue b/src/views/dataBoard/cpts/details/jmxq.vue new file mode 100644 index 000000000..ad679d208 --- /dev/null +++ b/src/views/dataBoard/cpts/details/jmxq.vue @@ -0,0 +1,378 @@ + + + + + + + diff --git a/src/views/dataBoard/cpts/details/smyd.vue b/src/views/dataBoard/cpts/details/smyd.vue new file mode 100644 index 000000000..c72b67410 --- /dev/null +++ b/src/views/dataBoard/cpts/details/smyd.vue @@ -0,0 +1,393 @@ + + + + + + + diff --git a/src/views/dataBoard/cpts/details/xqwmz.vue b/src/views/dataBoard/cpts/details/xqwmz.vue new file mode 100644 index 000000000..9bf9bce5a --- /dev/null +++ b/src/views/dataBoard/cpts/details/xqwmz.vue @@ -0,0 +1,407 @@ + + + + + + + diff --git a/src/views/dataBoard/cpts/details/yxwxfw.vue b/src/views/dataBoard/cpts/details/yxwxfw.vue new file mode 100644 index 000000000..ab6d59f7d --- /dev/null +++ b/src/views/dataBoard/cpts/details/yxwxfw.vue @@ -0,0 +1,320 @@ + + + + + + + diff --git a/src/views/dataBoard/cpts/family/modules/MatterDetails.vue b/src/views/dataBoard/cpts/family/modules/MatterDetails.vue index 8f99c4eba..b1314b416 100644 --- a/src/views/dataBoard/cpts/family/modules/MatterDetails.vue +++ b/src/views/dataBoard/cpts/family/modules/MatterDetails.vue @@ -15,7 +15,7 @@ {{ item.tagName }} -
四季景园1号楼1单元101
+ diff --git a/src/views/dataBoard/cpts/family/modules/businessTables/community.vue b/src/views/dataBoard/cpts/family/modules/businessTables/community.vue index b4d3c4ad3..9df3a7c64 100644 --- a/src/views/dataBoard/cpts/family/modules/businessTables/community.vue +++ b/src/views/dataBoard/cpts/family/modules/businessTables/community.vue @@ -8,16 +8,21 @@ + diff --git a/src/views/dataBoard/cpts/personnel/modules/businessTables/complaint.vue b/src/views/dataBoard/cpts/personnel/modules/businessTables/complaint.vue index 9ea8a89d5..ddcd373ef 100644 --- a/src/views/dataBoard/cpts/personnel/modules/businessTables/complaint.vue +++ b/src/views/dataBoard/cpts/personnel/modules/businessTables/complaint.vue @@ -9,7 +9,7 @@ diff --git a/src/views/dataBoard/cpts/personnel/modules/businessTables/economize.vue b/src/views/dataBoard/cpts/personnel/modules/businessTables/economize.vue index b43a87b55..c52a55d1d 100644 --- a/src/views/dataBoard/cpts/personnel/modules/businessTables/economize.vue +++ b/src/views/dataBoard/cpts/personnel/modules/businessTables/economize.vue @@ -8,16 +8,21 @@ + diff --git a/src/views/dataBoard/cpts/personnel/modules/businessTables/reporting-events.vue b/src/views/dataBoard/cpts/personnel/modules/businessTables/reporting-events.vue index 683bf25b0..7a226d869 100644 --- a/src/views/dataBoard/cpts/personnel/modules/businessTables/reporting-events.vue +++ b/src/views/dataBoard/cpts/personnel/modules/businessTables/reporting-events.vue @@ -8,7 +8,7 @@ diff --git a/src/views/dataBoard/cpts/personnel/modules/businessTables/resident.vue b/src/views/dataBoard/cpts/personnel/modules/businessTables/resident.vue index e41d3d87f..c619a31e3 100644 --- a/src/views/dataBoard/cpts/personnel/modules/businessTables/resident.vue +++ b/src/views/dataBoard/cpts/personnel/modules/businessTables/resident.vue @@ -8,16 +8,21 @@ + \ No newline at end of file diff --git a/src/views/dataBoard/overview/index.vue b/src/views/dataBoard/overview/index.vue index 8d2151491..5f10ab95b 100644 --- a/src/views/dataBoard/overview/index.vue +++ b/src/views/dataBoard/overview/index.vue @@ -9,7 +9,7 @@
- +
- +
- +
- +
- +
- - + +
- + - +
- + - +
- +
- +
- +
- +
- + @@ -179,8 +193,8 @@ import RankingGridData from "@/views/dataBoard/overview/components/RankingGridDa import FollowUp from "@/views/dataBoard/overview/components/FollowUp.vue"; import Tabs from "@/views/dataBoard/satisfactionEval/components/Tabs/index.vue"; -import { requestPostBi } from "@/js/dai/request-bipass"; -import { requestPost } from "@/js/dai/request"; +import {requestPostBi} from "@/js/dai/request-bipass"; +import {requestPost} from "@/js/dai/request"; export default { name: "renfang", @@ -223,7 +237,7 @@ export default { currentLevelData: { orgId: this.$store.state.chooseArea.chooseName.orgId, orgLevel: this.$store.state.chooseArea.chooseName.level, - meta: { title: "人房总览" }, + meta: {title: "人房总览"}, }, breadList: [ { @@ -231,7 +245,7 @@ export default { orgLevel: "", id: "", level: "", - meta: { title: "人房总览" }, + meta: {title: "人房总览"}, }, ], peopleList: { @@ -299,7 +313,7 @@ export default { methods: { changeCustomerName() { this.customerName = - localStorage.getItem("customerNameDataBoard") || "数据分析可视化平台"; + localStorage.getItem("customerNameDataBoard") || "数据分析可视化平台"; }, changeType(e) { this.peopleType = e; @@ -337,11 +351,12 @@ export default { } }, - clickBreadItem({ item }) { + clickBreadItem({item}) { this.toBread(item); }, clickAgencyItem(item) { + this.$refs.map.clearMarkert() if (item.id) { this.customerName = item.name || item.meta.title; this.currentLevelData = { @@ -350,7 +365,7 @@ export default { }; } else { this.customerName = - localStorage.getItem("customerNameDataBoard") || "数据分析可视化平台"; + localStorage.getItem("customerNameDataBoard") || "数据分析可视化平台"; this.currentLevelData = { ...this.$store.state.chooseArea.chooseName, orgLevel: this.$store.state.chooseArea.chooseName.level, @@ -359,7 +374,7 @@ export default { this.toBread({ orgId: item.id, orgLevel: item.level, - meta: { title: item.name }, + meta: {title: item.name}, }); }, goBackMap() { @@ -367,13 +382,13 @@ export default { this.clickAgencyItem(item); }, toBread(item) { - const { orgId } = item; - const { breadList } = this; + const {orgId} = item; + const {breadList} = this; let index = breadList.findIndex((val) => val.orgId === orgId); if (index >= 0) { this.breadList = breadList.slice(0, index + 1); } else { - breadList.push({ ...item, id: item.orgId, level: item.orgLevel }); + breadList.push({...item, id: item.orgId, level: item.orgLevel}); this.breadList = breadList; } this.getMapData(item.orgId, item.orgLevel); @@ -386,18 +401,49 @@ export default { } this.$refs.map.setDotMarker(item, [parseFloat(item.longitude), parseFloat(item.latitude)]); }, - + setNum(data) { + console.log(this.orgData,data,'111') + // data + let params = [] + let org = this.orgData.children + org.forEach(item => { + data.forEach(item2 => { + if (item2.orgId === item.id && item.coordinates) { + params.push({ + ...item2, + peopleType: this.peopleList[this.peopleType], + latitude: item.latitude, + longitude: item.longitude + }) + } + }) + }) + if (params.length) { + this.$refs.map.setNum(params) + } + }, + setPoint(data) { + if (data) { + this.$refs.map.setPoint(data) + } + }, //获取地图上显示的组织数据 async getMapData( - orgId = this.$store.state.chooseArea.chooseName.orgId, - level = this.$store.state.chooseArea.chooseName.level + orgId = this.$store.state.chooseArea.chooseName.orgId, + level = this.$store.state.chooseArea.chooseName.level ) { const url = "org_map"; - this.$http.post(`/gov/org/agency/maporg`, { orgId, level }).then(({ data: { data } }) => { + this.$http.post(`/gov/org/agency/maporg`, {orgId, level}).then(({data: {data}}) => { this.orgData = data; - this.orgId = this.orgData.org_id; + this.orgId = this.orgData.id; + console.log(this.orgId) this.orgLevel = this.orgData.level; this.currentLevel = this.orgData.agencyLevel; + this.currentLevelData = { + orgId: this.orgId, + orgLevel: this.currentLevel, + }; + this.peopleType = this.currentLevel === 'grid'?'unit':'staffAgency'; }); }, @@ -405,20 +451,20 @@ export default { async getSubMapData() { const url = "sub_org_map"; - const { data, code, msg } = await requestPostBi( - url, - { - queryParam: { - org_id: this.orgId, + const {data, code, msg} = await requestPostBi( + url, + { + queryParam: { + org_id: this.orgId, + }, }, - }, - { - // mockId: 61831860, - } + { + // mockId: 61831860, + } ); if (code === 0) { - const { orgData } = this; + const {orgData} = this; orgData.children = data.map((item) => { return { ...item, @@ -429,7 +475,7 @@ export default { coordinates: item.coordinates || "", }; }); - this.orgData = { ...orgData }; + this.orgData = {...orgData}; } else { this.$message.error(msg); } @@ -443,7 +489,7 @@ export default { level: this.orgLevel, }; - const { data, code, msg } = await requestPost(url, params); + const {data, code, msg} = await requestPost(url, params); if (code === 0) { this.orgData = data; this.orgId = this.orgId; @@ -465,10 +511,12 @@ export default { top: 100px; left: 16px; right: 0; + img { height: 36px; width: 36px; } + img:hover { cursor: pointer; } diff --git a/src/views/dataBoard/renfang/index.vue b/src/views/dataBoard/renfang/index.vue index 855554c22..6bc85b7fc 100644 --- a/src/views/dataBoard/renfang/index.vue +++ b/src/views/dataBoard/renfang/index.vue @@ -549,7 +549,7 @@ export default { }, toResiClassPage(pageType, type_id = "", type_name) { this.$router.push({ - path: "/dataBoard/renfang/resi-class-new", + path: "/dataBoard/renfang/resi-class", query: { org_id: this.orgId, type_id, diff --git a/src/views/dataBoard/satisfactionEval/index.vue b/src/views/dataBoard/satisfactionEval/index.vue index 8b39b68f4..eb27ce685 100644 --- a/src/views/dataBoard/satisfactionEval/index.vue +++ b/src/views/dataBoard/satisfactionEval/index.vue @@ -23,7 +23,7 @@
- + <Title text="下级组织不满意事项统计"/> <EventStatistics/> </div> </el-col> diff --git a/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue b/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue index df1d6f384..eb4dac218 100644 --- a/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue +++ b/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue @@ -1,6 +1,6 @@ <template> <div class="personnel-portrait"> - <Tabs v-model="resultType" :list="resultTypeList" @changeVal="resultTypeChange"/> + <Tabs v-model="resultType" :list="resultTypeList" @changeVal="resultTypeChange" /> <div class="screen"> <div class="txt">不满意人员画像</div> <!-- <el-select v-model="typeCondition" @change="getData" placeholder="请选择" class="select" popper-class="selectPopClass"> @@ -26,19 +26,24 @@ <div class="tag light" v-if="monthIncomeLevel"> <div class="text">{{ monthIncomeLevel }}</div> </div> - <div class="tag green" v-if="cultureLevel"> - <div class="text">{{ cultureLevel }}</div> + <div class="tag green" v-if="cultureName"> + <div class="text">{{ cultureName }}</div> </div> <div class="tag orange" v-if="marriageName"> <div class="text">{{ marriageName }}</div> </div> <div class="tag purple" v-if="gender"> - <div class="text">{{ gender === '1' ? '男' : gender === '2' ? '女' : gender === '0' ? '未知' : '' }}</div> + <div class="text">{{ gender === "1" ? "男" : gender === "2" ? "女" : gender === "0" ? "未知" : "" }}</div> </div> </div> <div class="btn" @click="gotopage"> - <div>按画像匹配到同类:<span> <b>{{ matchPeopleNum ? matchPeopleNum : 0 }}</b>人</span></div> + <div> + 按画像匹配到同类:<span> + <b>{{ matchPeopleNum ? matchPeopleNum : 0 }}</b + >人</span + > + </div> <i class="el-icon-arrow-right"></i> </div> </div> @@ -49,30 +54,32 @@ import Tabs from "@/views/dataBoard/satisfactionEval/components/Tabs/index.vue"; export default { name: "PersonnelPortrait", - components: {Tabs}, + components: { Tabs }, data() { return { - resultType: 'provinceAndSelf', - resultTypeList: [{ - label: '按省调查/社区自查结果', - value: 'provinceAndSelf' - - }, { - label: '按12345热线投诉结果', - value: '12345' - }], - typeCondition: '', + resultType: "provinceAndSelf", + resultTypeList: [ + { + label: "按省调查/社区自查结果", + value: "provinceAndSelf", + }, + { + label: "按12345热线投诉结果", + value: "12345", + }, + ], + typeCondition: "", typeConditionList: [], gender: "", marriageName: "", ageClassification: "", - cultureLevel: "", + cultureName: "", gridName: "", monthIncomeLevel: "", residentTagName: "", matchPeopleNum: 0, - searchParams: '' - } + searchParams: "", + }; }, watch: { "$store.state.chooseArea.chooseName"(val) { @@ -80,7 +87,7 @@ export default { // this.getDisKey() this.getData(); } - } + }, }, mounted() { if (this.$store.state.chooseArea.chooseName.orgId) { @@ -90,17 +97,17 @@ export default { }, methods: { resultTypeChange(val) { - this.resultType = val - this.getData() + this.resultType = val; + this.getData(); }, gotopage() { - this.$router.push('/dataBoard/satisfactionEval/dissatisfiedPersonnel?searchParams=' + this.searchParams) + this.$router.push("/dataBoard/satisfactionEval/dissatisfiedPersonnel?searchParams=" + this.searchParams); }, getDisKey() { - this.$http.post('/sys/dict/data/dictlist', {'dictType': 'satisfaction_category'}).then(({data: {data}}) => { - this.typeCondition = data[0].value - this.typeConditionList = data - }) + this.$http.post("/sys/dict/data/dictlist", { dictType: "satisfaction_category" }).then(({ data: { data } }) => { + this.typeCondition = data[0].value; + this.typeConditionList = data; + }); }, getData() { let params = { @@ -108,22 +115,22 @@ export default { orgId: this.$store.state.chooseArea.chooseName.orgId, queryType: this.resultType, category: this.typeCondition, - } - this.$http.get('/governance/satisfactionOverview/satisfactionCrowdPortrait?' + this.$paramsFormat(params)).then(({data: {data}}) => { + }; + this.$http.get("/governance/satisfactionOverview/satisfactionCrowdPortrait?" + this.$paramsFormat(params)).then(({ data: { data } }) => { this.gender = data.gender; this.marriageName = data.marriageName; this.ageClassification = data.ageClassification; - this.cultureLevel = data.cultureLevel; + this.cultureName = data.cultureName; this.gridName = data.gridName; this.monthIncomeLevel = data.monthIncomeLevel; this.residentTagName = data.residentTagName; this.matchPeopleNum = data.matchPeopleNum; - this.searchParams = JSON.stringify({...data, ...params}) - }) - } - } -} + this.searchParams = JSON.stringify({ ...data, ...params }); + }); + }, + }, +}; </script> <style scoped lang="scss"> @@ -146,7 +153,7 @@ $purple: #6642fd; .txt { font-size: 16px; font-weight: 500; - color: #FFFFFF; + color: #ffffff; line-height: 22px; margin-right: 25px; } @@ -154,15 +161,15 @@ $purple: #6642fd; /deep/ .el-input__inner { width: 110px !important; height: 24px !important; - background: #021C49 !important; - border: 1px solid #125AAA !important; + background: #021c49 !important; + border: 1px solid #125aaa !important; border-radius: 12px !important; - color: #A0CDFF; + color: #a0cdff; } /deep/ .el-input__icon { line-height: 24px !important; - color: #A0CDFF; + color: #a0cdff; } } @@ -196,13 +203,12 @@ $purple: #6642fd; &:after { content: ""; - opacity: .3; + opacity: 0.3; display: block; width: 76px; height: 76px; position: absolute; border-radius: 50%; - } &:nth-of-type(1) { @@ -315,11 +321,11 @@ $purple: #6642fd; .btn { width: 240px; height: 46px; - border: 1px solid #125AAA; + border: 1px solid #125aaa; border-radius: 23px; font-size: 14px; font-weight: 400; - color: #FFFFFF; + color: #ffffff; line-height: 46px; display: flex; align-items: center; @@ -332,5 +338,4 @@ $purple: #6642fd; font-size: 18px; } } - -</style> \ No newline at end of file +</style>