mk 2 years ago
parent
commit
64cb193c2a
  1. BIN
      src/assets/images/manyidu/hx_bg.png
  2. 4
      src/assets/scss/dataBoard/overview/index.scss
  3. 12
      src/views/dataBoard/cpts/map/index.vue
  4. 69
      src/views/dataBoard/overview/index.vue
  5. 194
      src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue
  6. 1
      src/views/dataBoardMain/main-navbar.vue

BIN
src/assets/images/manyidu/hx_bg.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 125 KiB

4
src/assets/scss/dataBoard/overview/index.scss

@ -242,10 +242,6 @@
margin-top: 6px; margin-top: 6px;
height: 232px; height: 232px;
&-xiaoqipao {}
&-line {}
&-content { &-content {
margin: 0 auto; margin: 0 auto;
width: 240px; width: 240px;

12
src/views/dataBoard/cpts/map/index.vue

@ -160,6 +160,7 @@ export default {
// level: item.level, // level: item.level,
center: [item.longitude, item.latitude], center: [item.longitude, item.latitude],
...item, ...item,
parentName: srcGridData.parentName,
}, },
geometry: { geometry: {
type: "Polygon", type: "Polygon",
@ -283,7 +284,7 @@ export default {
securityJsCode: "92ea2c965c6cf1ba7ee3a8fe01449ef2", securityJsCode: "92ea2c965c6cf1ba7ee3a8fe01449ef2",
}; };
const scale = this.$store.state.chooseArea.realScale; const scale = this.$store.state.chooseArea.realScale;
console.log(scale); // console.log(scale);
if (scale) { if (scale) {
this.setStartScale(scale); this.setStartScale(scale);
} }
@ -350,7 +351,7 @@ export default {
// //
iniMapBase(scene) { iniMapBase(scene) {
console.log("-----------------iniMapBase"); // console.log("-----------------iniMapBase");
// //
const baseLayer = new RasterLayer({ const baseLayer = new RasterLayer({
zIndex: 1, zIndex: 1,
@ -393,7 +394,7 @@ export default {
// //
iniMapBase2(scene) { iniMapBase2(scene) {
console.log("-----------------iniMapBase"); // console.log("-----------------iniMapBase");
// //
const baseLayer = new RasterLayer({ const baseLayer = new RasterLayer({
zIndex: 1, zIndex: 1,
@ -421,7 +422,7 @@ export default {
styleConfig = lightStyle; styleConfig = lightStyle;
} }
console.log("地图初始化数据", polygonData); // console.log("", polygonData);
// //
polygonLayer = new PolygonLayer({ polygonLayer = new PolygonLayer({
@ -502,7 +503,6 @@ export default {
offsets: [0, 0], offsets: [0, 0],
}); });
// scene.addLayer(posLayer); // scene.addLayer(posLayer);
console.log(this.level);
/* if (this.level === 'grid') { /* if (this.level === 'grid') {
posLayer.show() posLayer.show()
} else { } else {
@ -555,7 +555,6 @@ export default {
popup.remove(); popup.remove();
}); });
polygonLayer.on("click", (e) => { polygonLayer.on("click", (e) => {
console.log(this.level);
if (this.level === "grid") { if (this.level === "grid") {
return; return;
} }
@ -565,7 +564,6 @@ export default {
if (pointMarker) { if (pointMarker) {
scene.removeMarkerLayer(pointMarker); scene.removeMarkerLayer(pointMarker);
} }
console.log("e", e);
this.$emit("clickAgency", e.feature.properties); this.$emit("clickAgency", e.feature.properties);
}); });
posLayer.on("click", (e) => { posLayer.on("click", (e) => {

69
src/views/dataBoard/overview/index.vue

@ -43,15 +43,32 @@
</div> </div>
<div class="g-center"> <div class="g-center">
<div class="m-map" style="overflow: hidden"> <div class="m-map" style="overflow: hidden">
<map-top :currentLevelData="currentLevelData" @changeType="changeType" :level="currentLevel" /> <map-top
:currentLevelData="currentLevelData"
@changeType="changeType"
:level="currentLevel"
/>
<div v-if="breadList.length > 1" class="go-back" @click="goBackMap"> <div v-if="breadList.length > 1" class="go-back" @click="goBackMap">
<img src="~@/assets/images/shuju/overview/go-back.png" /> <img src="~@/assets/images/shuju/overview/go-back.png" />
</div> </div>
<grid-map ref="map" @clickAgency="clickAgencyItem" :srcGridData="orgData" @clickDotBtn="handleClickDotBtn" :level="currentLevel" :peopleType="peopleType" /> <grid-map
ref="map"
@clickAgency="clickAgencyItem"
:srcGridData="orgData"
@clickDotBtn="handleClickDotBtn"
:level="currentLevel"
:peopleType="peopleType"
/>
</div> </div>
<div class="m-box m-rybox"> <div class="m-box m-rybox">
<title-box :text="`${customerName}${peopleList[peopleType]}`" /> <title-box :text="`${customerName}${peopleList[peopleType]}`" />
<jdwgy :peopleType="peopleType" :currentLevelData="currentLevelData" :level="currentLevel" @setNum="setNum" @setPoint="setPoint" /> <jdwgy
:peopleType="peopleType"
:currentLevelData="currentLevelData"
:level="currentLevel"
@setNum="setNum"
@setPoint="setPoint"
/>
</div> </div>
</div> </div>
@ -384,7 +401,12 @@ export default {
clickAgencyItem(item) { clickAgencyItem(item) {
this.$refs.map.clearMarkert(); this.$refs.map.clearMarkert();
if (item.id) { if (item.id) {
this.customerName = item.name || item.meta.title; if (item.level == "grid") {
this.customerName =
item.parentName + "-" + item.name;
} else {
this.customerName = item.name || item.meta.title;
}
this.currentLevelData = { this.currentLevelData = {
orgId: item.id, orgId: item.id,
orgLevel: item.level, orgLevel: item.level,
@ -401,6 +423,8 @@ export default {
orgId: item.id, orgId: item.id,
orgLevel: item.level, orgLevel: item.level,
meta: { title: item.name }, meta: { title: item.name },
name: item.name,
parentName: item.parentName,
}); });
}, },
goBackMap() { goBackMap() {
@ -425,10 +449,12 @@ export default {
if (!item.longitude) { if (!item.longitude) {
return this.$message.error("请先设置坐标"); return this.$message.error("请先设置坐标");
} }
this.$refs.map.setDotMarker(item, [parseFloat(item.longitude), parseFloat(item.latitude)]); this.$refs.map.setDotMarker(item, [
parseFloat(item.longitude),
parseFloat(item.latitude),
]);
}, },
setNum(data) { setNum(data) {
console.log(this.orgData, data, "111");
// data // data
let params = []; let params = [];
let org = this.orgData.children; let org = this.orgData.children;
@ -457,20 +483,25 @@ export default {
// } // }
}, },
// //
async getMapData(orgId = this.$store.state.chooseArea.chooseName.orgId, level = this.$store.state.chooseArea.chooseName.level) { async getMapData(
orgId = this.$store.state.chooseArea.chooseName.orgId,
level = this.$store.state.chooseArea.chooseName.level
) {
const url = "org_map"; const url = "org_map";
this.$http.post(`/gov/org/agency/maporg`, { orgId, level }).then(({ data: { data } }) => { this.$http
this.orgData = data; .post(`/gov/org/agency/maporg`, { orgId, level })
this.orgId = this.orgData.id; .then(({ data: { data } }) => {
console.log(this.orgId); this.orgData = data;
this.orgLevel = this.orgData.level; this.orgId = this.orgData.id;
this.currentLevel = this.orgData.agencyLevel; this.orgLevel = this.orgData.level;
this.currentLevelData = { this.currentLevel = this.orgData.agencyLevel;
orgId: this.orgId, this.currentLevelData = {
orgLevel: this.currentLevel, orgId: this.orgId,
}; orgLevel: this.currentLevel,
this.peopleType = this.currentLevel === 'grid'?'unit':'staffAgency'; };
}); this.peopleType =
this.currentLevel === "grid" ? "unit" : "staffAgency";
});
}, },
// //

194
src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue

@ -1,38 +1,92 @@
<template> <template>
<div class="personnel-portrait" v-loading="loading" element-loading-text="加载中..." element-loading-spinner="el-icon-loading" element-loading-background="rgba(0,0,0,0.5)"> <div
<Tabs v-model="resultType" :list="resultTypeList" @changeVal="resultTypeChange" /> class="personnel-portrait"
v-loading="loading"
element-loading-text="加载中..."
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0,0,0,0.5)"
>
<Tabs
v-model="resultType"
:list="resultTypeList"
@changeVal="resultTypeChange"
/>
<div class="screen"> <div class="screen">
<div class="txt">不满意人员画像</div> <div class="txt">不满意人员画像</div>
<el-select v-if="resultType == 'provinceAndSelf'" v-model="typeCondition" @change="getData" placeholder="请选择" class="select" popper-class="selectPopClass"> <el-select
<el-option v-for="item in typeConditionList" :key="item.value" :label="item.label" :value="item.value"> </el-option> v-if="resultType == 'provinceAndSelf'"
v-model="typeCondition"
@change="getData"
placeholder="请选择"
class="select"
popper-class="selectPopClass"
>
<el-option
v-for="item in typeConditionList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select> </el-select>
</div> </div>
<div class="portrait"> <div class="portrait">
<div class="tag yellow" v-if="gridName"> <div class="tag yellow" v-if="gridName">
<div :class="[gridName.length > 5 ? 'smallSize' : '', 'text']">{{ gridName }}</div> <div :class="[gridName.length > 5 ? 'smallSize' : '', 'text']">
{{ gridName }}
</div>
</div> </div>
<div class="tag blue" v-if="ageClassification"> <div class="tag blue" v-if="ageClassification">
<div :class="[ageClassification.length > 5 ? 'smallSize' : '', 'text']">{{ ageClassification }}</div> <div :class="[ageClassification.length > 5 ? 'smallSize' : '', 'text']">
{{ ageClassification }}
</div>
</div> </div>
<div class="tag red" v-if="residentTagName"> <div class="tag red" v-if="residentTagName">
<div :class="[residentTagName.length > 5 ? 'smallSize' : '', 'text']">{{ residentTagName }}</div> <div :class="[residentTagName.length > 5 ? 'smallSize' : '', 'text']">
{{ residentTagName }}
</div>
</div> </div>
<div class="tag light" v-if="monthIncomeLevel"> <div class="tag light" v-if="monthIncomeLevel">
<div :class="[monthIncomeLevel.length > 5 ? 'smallSize' : '', 'text']">{{ monthIncomeLevel }}</div> <div :class="[monthIncomeLevel.length > 5 ? 'smallSize' : '', 'text']">
{{ monthIncomeLevel }}
</div>
</div> </div>
<div class="tag green" v-if="cultureName"> <div class="tag green" v-if="cultureName">
<div :class="[cultureName.length > 5 ? 'smallSize' : '', 'text']">{{ cultureName }}</div> <div :class="[cultureName.length > 5 ? 'smallSize' : '', 'text']">
{{ cultureName }}
</div>
</div> </div>
<div class="tag orange" v-if="marriageName"> <div class="tag orange" v-if="marriageName">
<div :class="[marriageName.length > 5 ? 'smallSize' : '', 'text']">{{ marriageName }}</div> <div :class="[marriageName.length > 5 ? 'smallSize' : '', 'text']">
{{ marriageName }}
</div>
</div> </div>
<div class="tag purple" v-if="gender"> <div class="tag purple" v-if="gender">
<div class="text"> <div class="text">
{{ gender === "1" ? "男" : gender === "2" ? "女" : gender === "0" ? "未知" : "" }} {{
gender === "1"
? "男"
: gender === "2"
? "女"
: gender === "0"
? "未知"
: ""
}}
</div> </div>
</div> </div>
</div> </div>
<div class="portrait1">
<img class="daqipao qipao1" src="@/assets/images/overview/qipao.png" />
<img class="xiaoqipao qipao2" src="@/assets/images/overview/qipao-xiao.png" />
<img class="daqipao qipao3" src="@/assets/images/overview/qipao.png" />
<img class="xiaoqipao qipao4" src="@/assets/images/overview/qipao-xiao.png" />
<img class="daqipao qipao5" src="@/assets/images/overview/qipao.png" />
<img class="xiaoqipao qipao6" src="@/assets/images/overview/qipao-xiao.png" />
<img class="daqipao qipao7" src="@/assets/images/overview/qipao.png" />
<img class="xiaoqipao qipao8" src="@/assets/images/overview/qipao-xiao.png" />
</div>
<div style="display: flex"> <div style="display: flex">
<div class="btn" @click="gotopage"> <div class="btn" @click="gotopage">
<div> <div>
@ -100,13 +154,18 @@ export default {
this.getData(); this.getData();
}, },
gotopage() { gotopage() {
this.$router.push("/dataBoard/satisfactionEval/dissatisfiedPersonnel?searchParams=" + this.searchParams); this.$router.push(
"/dataBoard/satisfactionEval/dissatisfiedPersonnel?searchParams=" +
this.searchParams
);
}, },
getDisKey() { getDisKey() {
this.$http.post("/sys/dict/data/dictlist", { dictType: "satisfaction_category" }).then(({ data: { data } }) => { this.$http
this.typeCondition = data[0].value; .post("/sys/dict/data/dictlist", { dictType: "satisfaction_category" })
this.typeConditionList = data; .then(({ data: { data } }) => {
}); this.typeCondition = data[0].value;
this.typeConditionList = data;
});
}, },
getData() { getData() {
this.loading = true; this.loading = true;
@ -114,20 +173,26 @@ export default {
level: this.$store.state.chooseArea.chooseName.level, level: this.$store.state.chooseArea.chooseName.level,
orgId: this.$store.state.chooseArea.chooseName.orgId, orgId: this.$store.state.chooseArea.chooseName.orgId,
queryType: this.resultType, queryType: this.resultType,
category: this.resultType == "provinceAndSelf" ? this.typeCondition : null, category:
this.resultType == "provinceAndSelf" ? this.typeCondition : null,
}; };
this.$http.get("/governance/satisfactionOverview/satisfactionCrowdPortrait?" + this.$paramsFormat(params)).then(({ data: { data } }) => { this.$http
this.gender = data.gender; .get(
this.marriageName = data.marriageName; "/governance/satisfactionOverview/satisfactionCrowdPortrait?" +
this.ageClassification = data.ageClassification; this.$paramsFormat(params)
this.cultureName = data.cultureName; )
this.gridName = data.gridName; .then(({ data: { data } }) => {
this.monthIncomeLevel = data.monthIncomeLevel; this.gender = data.gender;
this.residentTagName = data.residentTagName; this.marriageName = data.marriageName;
this.matchPeopleNum = data.matchPeopleNum; this.ageClassification = data.ageClassification;
this.loading = false; this.cultureName = data.cultureName;
this.searchParams = JSON.stringify({ ...data, ...params }); this.gridName = data.gridName;
}); this.monthIncomeLevel = data.monthIncomeLevel;
this.residentTagName = data.residentTagName;
this.matchPeopleNum = data.matchPeopleNum;
this.loading = false;
this.searchParams = JSON.stringify({ ...data, ...params });
});
}, },
}, },
}; };
@ -173,11 +238,82 @@ $purple: #6642fd;
} }
} }
.portrait1 {
width: 500px;
height: 345px;
margin-top: -345px;
padding-left: 80px;
overflow: hidden;
img {
margin: 30px;
}
.daqipao {
width: 8px;
height: 48px;
}
.xiaoqipao {
width: 8px;
height: 34px;
}
.qipao1 {
animation: scrollmyd 5s linear infinite;
}
.qipao2 {
animation: scrollmyd1 7s linear infinite;
}
.qipao3 {
animation: scrollmyd 6s linear infinite;
}
.qipao4 {
animation: scrollmyd1 8s linear infinite;
}
.qipao5 {
animation: scrollmyd 5s linear infinite;
}
.qipao6 {
animation: scrollmyd1 7s linear infinite;
}
.qipao7 {
animation: scrollmyd 4s linear infinite;
}
.qipao8 {
animation: scrollmyd1 6s linear infinite;
}
}
@keyframes scrollmyd {
0% {
transform: translatey(700%);
}
100% {
transform: translatey(-200%);
}
}
@keyframes scrollmyd1 {
0% {
transform: translatey(900%);
}
100% {
transform: translatey(-200%);
}
}
.portrait { .portrait {
width: 388px; width: 388px;
height: 345px; height: 345px;
position: relative; position: relative;
background: url("@/assets/images/manyidu/hx_bg.png") no-repeat center; background: url("@/assets/images/manyidu/hx_bg.png") no-repeat center;
background-size: 234px 186px;
margin: 0 auto; margin: 0 auto;
cursor: pointer; cursor: pointer;

1
src/views/dataBoardMain/main-navbar.vue

@ -257,7 +257,6 @@ export default {
if (this.options.length) { if (this.options.length) {
params = { orgId: this.value, level: this.getChooseLabel(this.value) }; params = { orgId: this.value, level: this.getChooseLabel(this.value) };
} }
console.log(params);
this.$http this.$http
.post(`/gov/org/agency/maporg`, params) .post(`/gov/org/agency/maporg`, params)
.then(async ({ data: { data } }) => { .then(async ({ data: { data } }) => {

Loading…
Cancel
Save