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;
height: 232px;
&-xiaoqipao {}
&-line {}
&-content {
margin: 0 auto;
width: 240px;

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

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

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

@ -43,15 +43,32 @@
</div>
<div class="g-center">
<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">
<img src="~@/assets/images/shuju/overview/go-back.png" />
</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 class="m-box m-rybox">
<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>
@ -384,7 +401,12 @@ export default {
clickAgencyItem(item) {
this.$refs.map.clearMarkert();
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 = {
orgId: item.id,
orgLevel: item.level,
@ -401,6 +423,8 @@ export default {
orgId: item.id,
orgLevel: item.level,
meta: { title: item.name },
name: item.name,
parentName: item.parentName,
});
},
goBackMap() {
@ -425,10 +449,12 @@ export default {
if (!item.longitude) {
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) {
console.log(this.orgData, data, "111");
// data
let params = [];
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";
this.$http.post(`/gov/org/agency/maporg`, { orgId, level }).then(({ data: { data } }) => {
this.orgData = data;
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';
});
this.$http
.post(`/gov/org/agency/maporg`, { orgId, level })
.then(({ data: { data } }) => {
this.orgData = data;
this.orgId = this.orgData.id;
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";
});
},
//

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

@ -1,38 +1,92 @@
<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)">
<Tabs v-model="resultType" :list="resultTypeList" @changeVal="resultTypeChange" />
<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)"
>
<Tabs
v-model="resultType"
:list="resultTypeList"
@changeVal="resultTypeChange"
/>
<div class="screen">
<div class="txt">不满意人员画像</div>
<el-select 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
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>
</div>
<div class="portrait">
<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 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 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 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 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 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 class="tag purple" v-if="gender">
<div class="text">
{{ gender === "1" ? "男" : gender === "2" ? "女" : gender === "0" ? "未知" : "" }}
{{
gender === "1"
? "男"
: gender === "2"
? "女"
: gender === "0"
? "未知"
: ""
}}
</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 class="btn" @click="gotopage">
<div>
@ -100,13 +154,18 @@ export default {
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() {
this.loading = true;
@ -114,20 +173,26 @@ export default {
level: this.$store.state.chooseArea.chooseName.level,
orgId: this.$store.state.chooseArea.chooseName.orgId,
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.gender = data.gender;
this.marriageName = data.marriageName;
this.ageClassification = data.ageClassification;
this.cultureName = data.cultureName;
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 });
});
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.cultureName = data.cultureName;
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 {
width: 388px;
height: 345px;
position: relative;
background: url("@/assets/images/manyidu/hx_bg.png") no-repeat center;
background-size: 234px 186px;
margin: 0 auto;
cursor: pointer;

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

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

Loading…
Cancel
Save