Browse Source

合并songzhen分支代码

V1.0
SongZhen 2 years ago
parent
commit
4e06f498ff
  1. BIN
      src/assets/images/home/dangerHome.png
  2. BIN
      src/assets/images/home/freeHome.png
  3. BIN
      src/assets/images/home/hasPeople.png
  4. BIN
      src/assets/images/home/homeBottom.png
  5. BIN
      src/assets/images/home/homeCenter.png
  6. BIN
      src/assets/images/home/homeRight.png
  7. BIN
      src/assets/images/home/homeTop.png
  8. 10
      src/router/index.js
  9. 63
      src/views/dataBoard/cpts/homeDetails/Title/index.vue
  10. 393
      src/views/dataBoard/cpts/homeDetails/index.vue
  11. 5
      src/views/dataBoard/organizational/index.vue
  12. 162
      src/views/dataBoard/overview/index.vue

BIN
src/assets/images/home/dangerHome.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 622 B

BIN
src/assets/images/home/freeHome.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 646 B

BIN
src/assets/images/home/hasPeople.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 736 B

BIN
src/assets/images/home/homeBottom.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
src/assets/images/home/homeCenter.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
src/assets/images/home/homeRight.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

BIN
src/assets/images/home/homeTop.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

10
src/router/index.js

@ -431,6 +431,16 @@ export const dataBoardRoutes = {
},
],
},
{
path: "/homeDetails/index",
props: true,
component: () => import("@/views/dataBoard/cpts/homeDetails/index"),
name: "homeDetails",
meta: {
title: "单元",
isTab: false,
},
},
{
path: "/organizational/orgPersonnel/:name",
props: true,

63
src/views/dataBoard/cpts/homeDetails/Title/index.vue

@ -0,0 +1,63 @@
<template>
<div class="title" :class="noBg ? 'no-bg' : ''">
<span class="text">
<span class="txt">{{ text }}</span>
<span class="text-shadow">{{ text }}</span>
<slot></slot>
</span>
<!-- <slot></slot> -->
</div>
</template>
<script>
export default {
name: "Title",
props: {
text: {
type: String,
default: "",
},
noBg: {
type: Boolean,
default: false,
},
},
};
</script>
<style scoped lang="scss">
.title {
background: url(../../../../../assets/images/shuju/overview/title-bg.png) no-repeat 0 0 fixed;
padding: 8px 16px 8px 32px;
display: flex;
align-items: center;
// justify-content: space-between;
.text {
position: relative;
font-size: 22px;
font-family: HYShuYuanHeiJ;
font-weight: 400;
.txt {
color: #1f79ff;
background: linear-gradient(0deg, #2dc1ff 0%, #ffffff 58.5205078125%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
position: relative;
z-index: 2;
}
.text-shadow {
top: 4px;
left: 3px;
position: absolute;
color: #020f21;
white-space: nowrap;
}
}
}
.no-bg {
background: none;
}
</style>

393
src/views/dataBoard/cpts/homeDetails/index.vue

@ -0,0 +1,393 @@
<template>
<div class="homeWrap">
<div class="bread">
<bread-crumb :list="list" />
</div>
<el-row :gutter="48">
<el-col :span="8">
<div class="bg">
<Title :text="homeText">
<span :class="[homeMsg.type === 'red' ? 'miniGrid_red' : homeMsg.type === 'yellow' ? 'miniGrid_yellow' : 'miniGrid_green']">红色微网格</span>
</Title>
</div>
<div class="apartment">
<div class="apar_comtent">
<div class="apar_top">
<img src="@/assets/images/home/homeTop.png" alt="/" />
</div>
<div class="apar_center">
<div class="apar_center_flex">
<div v-for="(item, index) in houseMountArr" :key="index" class="floor">
<div class="households" v-for="itm in item" :key="itm.id">{{ itm.doorName }}</div>
</div>
</div>
</div>
<!-- <div class="apar_bottom">
<img src="@/assets/images/home/homeBottom.png" alt="/" />
</div> -->
</div>
<div class="apar_right">
<img src="@/assets/images/home/homeRight.png" alt="" />
</div>
</div>
</el-col>
<el-col :span="16">
<div class="table">
<el-table :data="list" v-loading="loading" height="500" element-loading-text="加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 21, 64, 0.3)">
<el-table-column label="序号" type="index" width="80" />
<el-table-column prop="doorName" label="门牌号" />
<el-table-column prop="fullName" label="所属小区" />
<el-table-column prop="buildingId" label="所属楼栋" />
<el-table-column prop="houseName" label="所属单元" />
<el-table-column prop="houseCode" label="房屋编码" />
<el-table-column prop="rentFlag" label="房屋状态">
<template slot-scope="scope">
<!-- 1出租 0自住 2闲置 3未售出 -->
<span>{{ getRentFlag(scope.row.rentFlag) }}</span>
</template>
</el-table-column>
<el-table-column prop="houseType" label="房屋类型">
<template slot-scope="scope">
<!-- 1楼房2平房3别墅 -->
<span>{{ getHouseType(scope.row.houseType) }}</span>
</template>
</el-table-column>
<el-table-column prop="ownerName" label="房主姓名" />
<el-table-column prop="ownerPhone" label="房主电话" />
<el-table-column label="操作" width="90" align="center">
<template slot-scope="scope">
<el-button type="text">查看</el-button>
</template>
</el-table-column>
</el-table>
</div>
<!-- <div>
<Pagination v-show="total > 0" :total="total" :page.sync="pageNum" :limit.sync="pageSize" @pagination="getList" />
</div> -->
</el-col>
</el-row>
</div>
</template>
<script>
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Title from "./Title/index.vue";
import BreadCrumb from "@/views/dataBoard/cpts/personnel/components/Breadcrumb/index.vue";
export default {
name: "homeDetails",
components: {
Pagination,
Title,
BreadCrumb,
},
data() {
return {
// total: 0,
// pageNum: 1,
// pageSize: 10,
loading: false,
homeMsg: {},
list: [],
homeText: "",
houseMountArr: [
// [
// { doorName: "101", id: 1 },
// { doorName: "102", id: 1 },
// { doorName: "103", id: 1 },
// { doorName: "104", id: 1 },
// { doorName: "105", id: 1 },
// ],
// [
// { doorName: "201", id: 1 },
// { doorName: "202", id: 1 },
// { doorName: "203", id: 1 },
// { doorName: "204", id: 1 },
// { doorName: "205", id: 1 },
// ],
// [
// { doorName: "301", id: 1 },
// { doorName: "302", id: 1 },
// { doorName: "303", id: 1 },
// { doorName: "304", id: 1 },
// { doorName: "305", id: 1 },
// ],
// [
// { doorName: "401", id: 1 },
// { doorName: "402", id: 1 },
// { doorName: "403", id: 1 },
// { doorName: "404", id: 1 },
// { doorName: "405", id: 1 },
// ],
// [
// { doorName: "501", id: 1 },
// { doorName: "502", id: 1 },
// { doorName: "503", id: 1 },
// { doorName: "504", id: 1 },
// { doorName: "505", id: 1 },
// ],
// [
// { doorName: "601", id: 1 },
// { doorName: "602", id: 1 },
// { doorName: "603", id: 1 },
// { doorName: "604", id: 1 },
// { doorName: "605", id: 1 },
// ],
// [
// { doorName: "701", id: 1 },
// { doorName: "702", id: 1 },
// { doorName: "703", id: 1 },
// { doorName: "704", id: 1 },
// { doorName: "705", id: 1 },
// ],
// [
// { doorName: "801", id: 1 },
// { doorName: "802", id: 1 },
// { doorName: "803", id: 1 },
// { doorName: "804", id: 1 },
// { doorName: "805", id: 1 },
// ],
// [
// { doorName: "901", id: 1 },
// { doorName: "902", id: 1 },
// { doorName: "903", id: 1 },
// { doorName: "904", id: 1 },
// { doorName: "905", id: 1 },
// ],
// [
// { doorName: "1001", id: 1 },
// { doorName: "1002", id: 1 },
// { doorName: "1003", id: 1 },
// { doorName: "1004", id: 1 },
// { doorName: "1005", id: 1 },
// ],
// [
// { doorName: "1101", id: 1 },
// { doorName: "1102", id: 1 },
// { doorName: "1103", id: 1 },
// { doorName: "1104", id: 1 },
// { doorName: "1105", id: 1 },
// ],
// [
// { doorName: "1201", id: 1 },
// { doorName: "1202", id: 1 },
// { doorName: "1203", id: 1 },
// { doorName: "1204", id: 1 },
// { doorName: "1205", id: 1 },
// ],
// [
// { doorName: "1301", id: 1 },
// { doorName: "1302", id: 1 },
// { doorName: "1303", id: 1 },
// { doorName: "1304", id: 1 },
// { doorName: "1305", id: 1 },
// ],
// [
// { doorName: "1401", id: 1 },
// { doorName: "1402", id: 1 },
// { doorName: "1403", id: 1 },
// { doorName: "1404", id: 1 },
// { doorName: "1405", id: 1 },
// ],
// [
// { doorName: "1501", id: 1 },
// { doorName: "1502", id: 1 },
// { doorName: "1503", id: 1 },
// { doorName: "1504", id: 1 },
// { doorName: "1505", id: 1 },
// ],
],
};
},
mounted() {
this.getList();
},
methods: {
getDoorNameList(list) {
const doorNameList = [];
const doorNameArr = [];
list.forEach((item) => {
const doorName = item.doorName;
if (doorName.length === 4) {
doorNameArr.push(doorName.slice(0, 2));
} else if (doorName.length === 3) {
doorNameArr.push(doorName.slice(0, 1));
}
});
const doorNameSet = new Set(doorNameArr);
doorNameSet.forEach((item) => {
const arr = [];
list.forEach((item2) => {
const doorName = item2.doorName;
if (doorName.length === 4) {
if (doorName.slice(0, 2) === item) {
arr.push(item2);
}
} else if (doorName.length === 3) {
if (doorName.slice(0, 1) === item) {
arr.push(item2);
}
}
});
doorNameList.push(arr);
});
return doorNameList;
},
getList() {
this.loading = true;
this.$http.get(`/actual/base/streetOverview/getUnitHouseList?unitId=1689829742860771329`).then((res) => {
const {
code,
data: { houseList, unitInfo },
} = res.data;
if (code === 0) {
this.list = houseList;
this.homeMsg = unitInfo;
this.homeText = unitInfo.quartersName + unitInfo.buildingName + unitInfo.unitNum + "单元";
this.houseMountArr = this.getDoorNameList(this.list);
this.loading = false;
} else {
this.loading = false;
}
});
},
getRentFlag(type) {
const rentFlag = new Map([
["0", "出租"],
["1", "自住"],
["2", "闲置"],
["3", "未售出"],
]);
return rentFlag.get(type);
},
getHouseType(type) {
const houseTypeMap = new Map([
["1", "楼房"],
["2", "平房"],
["3", "别墅"],
]);
return houseTypeMap.get(type);
},
},
};
</script>
<style scoped lang="scss">
@import "@/assets/scss/dataBoard/table.scss";
@mixin radio {
display: inline-block;
width: 90px;
height: 24px;
opacity: 0.8;
border-radius: 11px;
text-align: center;
line-height: 22px;
margin-left: 15px;
font-size: 14px;
font-family: PingFang SC;
font-weight: 500;
}
.homeWrap {
.bread {
margin-bottom: 25px;
}
.apar_top {
width: 100%;
img {
width: 100%;
}
}
.apartment {
display: flex;
align-items: flex-end;
justify-content: center;
.apar_comtent {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.apar_center {
min-width: 244px;
max-width: 488px;
height: 584px;
overflow: auto;
background: url("@/assets/images/home/homeCenter.png") no-repeat;
background-size: 100% 100%;
padding: 30px 30px 10px 30px;
display: flex;
align-items: flex-end;
flex-direction: column-reverse;
.apar_center_flex {
width: 100%;
display: flex;
flex-wrap: wrap-reverse;
justify-content: center;
}
.floor {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20px;
.households {
height: 58px;
background: url("@/assets/images/home/hasPeople.png") no-repeat;
background-size: 100% 100%;
display: flex;
flex: 0 0 48px;
align-items: center;
justify-content: center;
font-size: 14px;
font-family: PingFang SC;
font-weight: 500;
color: #7fceff;
margin-right: 10px;
}
}
}
.apar_bottom {
width: 244px;
margin-top: -1px;
img {
width: 100%;
}
}
}
.apar_right {
margin-left: -3px;
}
}
.more {
font-size: 14px;
font-weight: 400;
color: #a0cdff;
cursor: pointer;
}
.bg {
margin-bottom: 50px;
background: linear-gradient(144deg, rgba(46, 164, 255, 0.1) 0%, rgba(13, 143, 243, 0) 100%);
.miniGrid_red {
@include radio;
background: rgba(249, 86, 25, 0.2);
border: 1px solid #f95619;
color: #f95619;
}
.miniGrid_green {
@include radio;
background: rgba(249, 86, 25, 0.2);
border: 1px solid #f95619;
color: #f95619;
}
.miniGrid_yellow {
@include radio;
background: rgba(249, 86, 25, 0.2);
border: 1px solid #f95619;
color: #f95619;
}
}
}
</style>

5
src/views/dataBoard/organizational/index.vue

@ -1,6 +1,7 @@
<template>
<div class="organWrap">
<div class="top-nav">
<el-button @click="gotoHomeDetails">单元</el-button>
<div class="top-nav-list">
<div v-for="item in navList" :key="item.key" :class="[$route.path == item.path ? 'top-nav-itemAC' : 'top-nav-item']" @click="chooseNav(item)">
{{ item.name }}
@ -474,6 +475,10 @@ export default {
});
this.$router.push(item.path);
},
gotoHomeDetails() {
this.$router.push("/homeDetails/index");
},
},
};
</script>

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

@ -8,36 +8,12 @@
<div class="g-row">
<div class="g-left">
<div class="m-box">
<title-box
:text="`${
currentLevel === 'district'
? '区'
: currentLevel === 'street'
? '街道'
: currentLevel === 'community'
? '社区'
: currentLevel === 'grid'
? '网格'
: ''
}介绍`"
/>
<title-box :text="`${currentLevel === 'district' ? '区' : currentLevel === 'street' ? '街道' : currentLevel === 'community' ? '社区' : currentLevel === 'grid' ? '网格' : ''}介绍`" />
<jdjs />
</div>
<div class="m-box">
<title-box
:text="`${
currentLevel === 'district'
? '区'
: currentLevel === 'street'
? '街道'
: currentLevel === 'community'
? '社区'
: currentLevel === 'grid'
? '网格'
: ''
}图谱画像`"
/>
<title-box :text="`${currentLevel === 'district' ? '区' : currentLevel === 'street' ? '街道' : currentLevel === 'community' ? '社区' : currentLevel === 'grid' ? '网格' : ''}图谱画像`" />
<jdtphx :id="orgId" />
</div>
</div>
@ -48,12 +24,7 @@
<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"
/>
<grid-map ref="map" @clickAgency="clickAgencyItem" :srcGridData="orgData" @clickDotBtn="handleClickDotBtn" />
</div>
<div class="m-box m-rybox">
<title-box text="XX街道网格员" />
@ -67,40 +38,18 @@
<rfsjtj />
</div>
<!-- 街道概览 -->
<div
v-if="currentLevel === 'street' || currentLevel === 'district'"
class="m-box"
>
<div v-if="currentLevel === 'street' || currentLevel === 'district'" class="m-box">
<title-box text="各社区人房数据更新排行">
<span class="date-span">
<el-date-picker
v-model="rfphDate"
format="yyyy-MM"
value-format="yyyy-MM"
@change="changeDate"
type="month"
:clearable="false"
placeholder="选择月"
>
</el-date-picker>
<el-date-picker v-model="rfphDate" format="yyyy-MM" value-format="yyyy-MM" @change="changeDate" type="month" :clearable="false" placeholder="选择月"> </el-date-picker>
</span>
</title-box>
<sqrfph :date="rfphDate" />
</div>
<div
v-if="currentLevel === 'street' || currentLevel === 'district'"
class="m-box"
>
<div v-if="currentLevel === 'street' || currentLevel === 'district'" class="m-box">
<title-box text="各社区12345投诉事件统计">
<span class="date-span">
<el-date-picker
v-model="sq12345Date"
format="yyyy-MM"
value-format="yyyy-MM"
type="month"
:clearable="false"
placeholder="选择月"
/>
<el-date-picker v-model="sq12345Date" format="yyyy-MM" value-format="yyyy-MM" type="month" :clearable="false" placeholder="选择月" />
</span>
</title-box>
<sq12345 :date="sq12345Date" />
@ -108,28 +57,16 @@
<!-- 社区&网格-->
<div v-if="currentLevel === 'community' || currentLevel === 'grid'" class="m-box">
<title-box text="人房数据动态更新"/>
<Tabs
v-model="dynamicType"
:list="dynamicTypeList"
v-if="currentLevel === 'community'"
@changeVal="dynamicTypeChange"
/>
<DynamicHumanRoomData v-if="dynamicType === 1"/>
<GridUpdateRanking v-if="dynamicType === 2"/>
<title-box text="人房数据动态更新" />
<Tabs v-model="dynamicType" :list="dynamicTypeList" v-if="currentLevel === 'community'" @changeVal="dynamicTypeChange" />
<DynamicHumanRoomData v-if="dynamicType === 1" />
<GridUpdateRanking v-if="dynamicType === 2" />
</div>
<!-- 社区概览-->
<div v-if="currentLevel === 'community'" class="m-box">
<title-box text="社区满意度自查结果">
<span class="date-span">
<el-date-picker
v-model="sqzcDate"
format="yyyy-MM"
value-format="yyyy-MM"
type="month"
:clearable="false"
placeholder="选择月"
/>
<el-date-picker v-model="sqzcDate" format="yyyy-MM" value-format="yyyy-MM" type="month" :clearable="false" placeholder="选择月" />
</span>
</title-box>
<CommunityResult :date="sqzcDate" />
@ -137,34 +74,18 @@
<div v-if="currentLevel === 'community'" class="m-box">
<title-box text="事件&回访">
<span class="date-span">
<el-date-picker
v-model="sjhfDate"
format="yyyy-MM"
value-format="yyyy-MM"
@change="changeDate"
type="month"
:clearable="false"
placeholder="选择月"
/>
<el-date-picker v-model="sjhfDate" format="yyyy-MM" value-format="yyyy-MM" @change="changeDate" type="month" :clearable="false" placeholder="选择月" />
</span>
</title-box>
<Tabs v-model="eventType" :list="eventTypeList" @changeVal="eventTypeChange"/>
<EventAndFollowUp :date="sjhfDate" v-if="eventType === 1"/>
<FollowUp :date="sjhfDate" v-if="eventType === 2"/>
<Tabs v-model="eventType" :list="eventTypeList" @changeVal="eventTypeChange" />
<EventAndFollowUp :date="sjhfDate" v-if="eventType === 1" />
<FollowUp :date="sjhfDate" v-if="eventType === 2" />
</div>
<!-- 网格 -->
<div v-if="currentLevel === 'grid'" class="m-box">
<title-box text="社区网格数据更新情况排行">
<span class="date-span">
<el-date-picker
v-model="sqwggxDate"
format="yyyy-MM"
value-format="yyyy-MM"
@change="changeDate"
type="month"
:clearable="false"
placeholder="选择月"
/>
<el-date-picker v-model="sqwggxDate" format="yyyy-MM" value-format="yyyy-MM" @change="changeDate" type="month" :clearable="false" placeholder="选择月" />
</span>
</title-box>
<RankingGridData :date="sqwggxDate" />
@ -221,7 +142,7 @@ export default {
RankingGridData,
GridUpdateRanking,
FollowUp,
Tabs
Tabs,
},
data() {
@ -251,21 +172,27 @@ export default {
displayedResiId: "",
displayedHouseId: "",
dynamicType: 1,
dynamicTypeList: [{
dynamicTypeList: [
{
value: 1,
label: '更新动态'
}, {
label: "更新动态",
},
{
value: 2,
label: '网格更新排行'
}],
label: "网格更新排行",
},
],
eventType: 1,
eventTypeList: [{
eventTypeList: [
{
value: 1,
label: '12345事件'
}, {
label: "12345事件",
},
{
value: 2,
label: '事件回访'
}]
label: "事件回访",
},
],
};
},
@ -288,10 +215,10 @@ export default {
methods: {
dynamicTypeChange(val) {
this.dynamicType = val
this.dynamicType = val;
},
eventTypeChange(val) {
this.eventType = val
this.eventType = val;
},
async init(queryOrgId, queryOrgLevel) {
if (queryOrgId) {
@ -345,7 +272,7 @@ export default {
breadList.push({ ...item, id: item.orgId, level: item.orgLevel });
this.breadList = breadList;
}
this.getMapData(item.orgId, item.orgLevel)
this.getMapData(item.orgId, item.orgLevel);
},
//
@ -353,18 +280,13 @@ 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)]);
},
//
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.$http.post(`/gov/org/agency/maporg`, { orgId, level }).then(({ data: { data } }) => {
this.orgData = data;
this.orgId = this.orgData.org_id;
this.orgLevel = this.orgData.level;
@ -445,11 +367,7 @@ export default {
}
}
</style>
<style
lang="scss"
src="@/assets/scss/dataBoard/overview/index.scss"
scoped
></style>
<style lang="scss" src="@/assets/scss/dataBoard/overview/index.scss" scoped></style>
<style lang="scss" scoped>
.tabs {

Loading…
Cancel
Save