Browse Source

Merge remote-tracking branch 'origin/dev' into dev

V1.0
wxz 2 years ago
parent
commit
8f47565cb5
  1. BIN
      src/assets/images/home/dangerHome.png
  2. BIN
      src/assets/images/home/dangerHomeBg.png
  3. BIN
      src/assets/images/home/dangerPeople.png
  4. BIN
      src/assets/images/home/freeHome.png
  5. BIN
      src/assets/images/home/hasPeople.png
  6. BIN
      src/assets/images/home/homeBottom.png
  7. BIN
      src/assets/images/home/homeTop.png
  8. 7
      src/js/store/modules/chooseArea.js
  9. 128
      src/views/dataBoard/cpts/details/xqwmz.vue
  10. 2
      src/views/dataBoard/cpts/family/modules/businessTables/complaint.vue
  11. 1
      src/views/dataBoard/cpts/family/modules/businessTables/economize.vue
  12. 59
      src/views/dataBoard/cpts/homeDetails/PeopleMount/index.vue
  13. 284
      src/views/dataBoard/cpts/homeDetails/index.vue
  14. 2
      src/views/dataBoard/cpts/personnel/modules/businessTables/complaint.vue
  15. 24
      src/views/dataBoard/cpts/personnel/modules/businessTables/economize.vue
  16. 79
      src/views/dataBoard/cpts/resi-details.vue
  17. 2
      src/views/dataBoard/overview/components/jdwgy.vue
  18. 1
      src/views/dataBoard/renfang/cpts/fwgl.vue
  19. 30
      src/views/dataBoard/renfang/cpts/jmgl.vue
  20. 5
      src/views/dataBoard/renfang/index.vue
  21. 2
      src/views/dataBoard/satisfactionEval/dissatisfied/index.vue
  22. 16
      src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/index.vue
  23. 24
      src/views/dataBoard/satisfactionEval/modules/PotentialPeople/index.vue
  24. 2
      src/views/dataBoardMain/main-content.vue
  25. 101
      src/views/modules/base/organization/organization.vue
  26. 188
      src/views/modules/home/index.vue

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 622 B

After

Width:  |  Height:  |  Size: 584 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 B

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 646 B

After

Width:  |  Height:  |  Size: 575 B

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 736 B

After

Width:  |  Height:  |  Size: 530 B

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 869 B

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

7
src/js/store/modules/chooseArea.js

@ -3,6 +3,7 @@ const state = {
orgId: "", orgId: "",
level: "", level: "",
}, },
commonLoading: false,
realScale: null, realScale: null,
}; };
@ -13,6 +14,9 @@ const mutations = {
CHOOSE_REAL_SCALE: (state, name) => { CHOOSE_REAL_SCALE: (state, name) => {
state.realScale = name; state.realScale = name;
}, },
COMMON_LOADING: (state, flag) => {
state.commonLoading = flag;
},
}; };
const actions = { const actions = {
@ -22,6 +26,9 @@ const actions = {
chooseScale({ commit }, name) { chooseScale({ commit }, name) {
commit("CHOOSE_REAL_SCALE", name); commit("CHOOSE_REAL_SCALE", name);
}, },
chooseLoading({ commit }, flag) {
commit("COMMON_LOADING", flag);
},
}; };
export default { export default {

128
src/views/dataBoard/cpts/details/xqwmz.vue

@ -28,27 +28,27 @@
src="@/assets/images/manyidu/tc-title-icon.png" src="@/assets/images/manyidu/tc-title-icon.png"
/> />
</div> </div>
<div class="eventItem"> <!-- <div class="eventItem">
<span>所属组织</span> <span>所属组织</span>
<span>{{ item.agencyName }}</span> <span>{{ item.agencyName }}</span>
</div> </div> -->
<div class="eventItem"> <div class="eventItem">
<span>不满意事项来源</span> <span>不满意事项来源</span>
<span>社区意度自查</span> <span>社区意度自查</span>
</div> </div>
<div class="eventItem"> <div class="eventItem">
<span>不满意事项类型</span> <span>不满意事项类型</span>
<span>{{ item.scopeId && getSxType(item.scopeId) }}</span> <span>{{ getSxType(item) }}</span>
</div> </div>
<div class="eventItem"> <!-- <div class="eventItem">
<span>所属月份</span> <span>所属月份</span>
<span>{{ <span>{{
item.createdTime && getMonthData(item.createdTime) item.createdTime && getMonthData(item.createdTime)
}}</span> }}</span>
</div> </div> -->
<div class="eventItem"> <div class="eventItem">
<div>不满意事项描述</div> <div>不满意事项描述</div>
<div style="margin-top: 20px">{{ item.problemDesc }}</div> <div style="margin-top: 20px">{{ getSxReason(item) }}</div>
</div> </div>
<div class="eventItem"> <div class="eventItem">
<span>提交人姓名</span> <span>提交人姓名</span>
@ -58,10 +58,10 @@
<span>提交人电话</span> <span>提交人电话</span>
<span> {{ $sensitive(item.reporterMobile, 3, 7) }}</span> <span> {{ $sensitive(item.reporterMobile, 3, 7) }}</span>
</div> </div>
<div class="eventItem"> <!-- <div class="eventItem">
<span>完成时限</span> <span>完成时限</span>
<span>{{ item.completeTime }}</span> <span>{{ item.completeTime }}</span>
</div> </div> -->
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
@ -94,10 +94,51 @@ export default {
logList: [], logList: [],
}, },
loading: false, loading: false,
loading1: false,
activities: [],
// //
satisfactionCategoryOptions: [], satisfactionCategoryOptions: [
{
key: "evaCulturalFacility",
value: "文化设施",
},
{
key: "evaSportsFacility",
value: "体育设施",
},
{
key: "evaEcologicalEnv",
value: "生态环境",
},
{
key: "evaSocialSecurity",
value: "社会治安",
},
{
key: "evaocialAssistance",
value: "社会救助",
},
{
key: "evaOldPeopleProvide",
value: "老有所养",
},
{
key: "evaBasicEducation",
value: "基础教育",
},
{
key: "evaMedical",
value: "病有所医",
},
],
reason: [
"basicEducationReason",
"culturalFacilityReason",
"ecologicalEnvReason",
"medicalReason",
"oldPeopleProvideReason",
"socialAssistanceReason",
"socialSecurityReason",
"sportsFacilityReason",
],
}; };
}, },
@ -128,13 +169,41 @@ export default {
return this.$moment(time * 1000).format("YYYY-MM-DD hh:mm"); return this.$moment(time * 1000).format("YYYY-MM-DD hh:mm");
}, },
getSxType(value) { getSxType(row) {
if (this.satisfactionCategoryOptions.length > 0 && value) { let arr = [];
return this.satisfactionCategoryOptions.filter( let text = "";
(item) => item.value == value for (let k in row) {
)[0].label; if (row[k] == "bad") {
arr.push(k);
} }
return ""; }
this.satisfactionCategoryOptions.forEach((item) => {
arr.forEach((item1) => {
if (item1 == item.key) {
if (text == "") {
text = item.value;
} else {
text = text + ", " + item.value;
}
}
});
});
return text;
},
getSxReason(row) {
let text = "";
this.reason.forEach((item) => {
for (let key in row) {
if (item == key && row[key]) {
if (text == "") {
text = row[key];
} else {
text = text + ";" + row[key];
}
}
}
});
return text;
}, },
getMonthData(time) { getMonthData(time) {
if (time) { if (time) {
@ -168,18 +237,19 @@ export default {
// this.$message.error(msg); // this.$message.error(msg);
// } // }
// }); // });
this.$http // this.$http
.get( // .get(
"/governance/satisfactionDetailList/getUnsatisfiedCategory?satisfactionSource=" // "/governance/satisfactionDetailList/getUnsatisfiedCategory?satisfactionSource="
) // )
.then(({ data: { data } }) => { // .then(({ data: { data } }) => {
this.satisfactionCategoryOptions = data.map((item) => { // console.log('data::', data);
return { // this.satisfactionCategoryOptions = data.map((item) => {
label: item.categoryName, // return {
value: item.categoryCode, // label: item.categoryName,
}; // value: item.categoryCode,
}); // };
}); // });
// });
}, },
}, },
}; };

2
src/views/dataBoard/cpts/family/modules/businessTables/complaint.vue

@ -18,7 +18,7 @@
<div style="color: #fff">暂无数据</div> <div style="color: #fff">暂无数据</div>
</div> </div>
<Pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" /> <Pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" />
<eventDetails :showDialog="showDialog" :resiId="this.rowId" @close="close" /> <eventDetails :showDialog="showDialog" :resiId="rowId" @close="close" />
</div> </div>
</template> </template>

1
src/views/dataBoard/cpts/family/modules/businessTables/economize.vue

@ -16,6 +16,7 @@
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" /> <img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div> <div style="color: #fff">暂无数据</div>
</div> </div>
<smyd :showDialog="showDialog" :id="rowId" @close="close" />
</div> </div>
</template> </template>

59
src/views/dataBoard/cpts/homeDetails/PeopleMount/index.vue

@ -0,0 +1,59 @@
<template>
<div class="peopleMount">
<div v-for="item in peopleList" :key="item.name" class="content">
<span class="fontStyleLable">{{ item.name }}</span>
<span class="fontStyle" :style="{ color: item.color }">{{ item.value }}</span>
</div>
</div>
</template>
<script>
export default {
name: "PeopleMount",
props: {},
data() {
return {
peopleList: [
{
name: "老年人数",
value: "42",
color: "#3CF5FF",
},
{
name: "残疾人数",
value: "28",
color: "#08EBAE",
},
{
name: "满意度风险家庭",
value: "13",
color: "#FFC100",
},
],
};
},
};
</script>
<style scoped lang="scss">
.peopleMount {
display: flex;
.content {
&:not(:last-child) {
margin-right: 40px;
}
.fontStyleLable {
font-size: 16px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
margin-right: 10px;
}
.fontStyle {
font-size: 24px;
font-family: DIN Alternate;
font-weight: bold;
}
}
}
</style>

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

@ -22,54 +22,102 @@
<span v-if="homeMsg && homeMsg.type" :class="[homeMsg.type === 'red' ? 'miniGrid_red' : homeMsg.type === 'yellow' ? 'miniGrid_yellow' : 'miniGrid_green']">{{ homeMsg.type === "red" ? "" : homeMsg.type === "yellow" ? "" : "绿" }}色微网格</span> <span v-if="homeMsg && homeMsg.type" :class="[homeMsg.type === 'red' ? 'miniGrid_red' : homeMsg.type === 'yellow' ? 'miniGrid_yellow' : 'miniGrid_green']">{{ homeMsg.type === "red" ? "" : homeMsg.type === "yellow" ? "" : "绿" }}色微网格</span>
</Title> </Title>
</div> </div>
<!-- <div class="mount">
<people-mount />
</div> -->
<div class="apartment"> <div class="apartment">
<div class="apar_comtent"> <div class="apar_comtent">
<div class="apar_top"> <div class="apar_top">
<img src="@/assets/images/home/homeTop.png" alt="/" /> <img src="@/assets/images/home/homeTop.png" alt="/" />
</div> </div>
<div style="min-width: 284px; max-width: 488px; padding: 0 20px">
<div class="apar_center"> <div class="apar_center">
<div class="apar_center_flex" :style="{ width: flexWidth + 'px' }"> <div class="apar_center_flex" :style="{ width: flexWidth + 'px' }">
<div v-for="(item, index) in houseMountArr" :key="index" class="floor"> <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 v-for="itm in item" :key="itm.id" :class="[itm.riskyNum === 0 && itm.importanceNum === 0 ? 'households' : '', itm.riskyNum > 0 ? 'dangerHome' : '', itm.importanceNum > 0 ? 'dangerPeople' : '', itm.rentFlag === '2' ? 'freeHome' : '']">
<div v-if="itm.riskyNum === 0 && itm.importanceNum === 0 && itm.rentFlag != '2'">{{ itm.doorName }}</div>
<div v-if="itm.riskyNum > 0" class="dangerClass">
<div>{{ itm.doorName }}</div>
<img :src="require('@/assets/images/home/dangerHome.png')" alt="" />
</div>
<div v-if="itm.importanceNum > 0" class="dangerClass">
<div>{{ itm.doorName }}</div>
<img :src="require('@/assets/images/home/dangerPeople.png')" alt="" />
</div>
<div v-if="itm.rentFlag === '2'" class="dangerClass">
<div>闲置</div>
</div>
</div> </div>
</div> </div>
</div> </div>
<!-- <div class="apar_bottom"> </div>
</div>
<div class="apar_bottom">
<img src="@/assets/images/home/homeBottom.png" alt="/" /> <img src="@/assets/images/home/homeBottom.png" alt="/" />
</div> -->
</div> </div>
<div class="apar_right">
<img src="@/assets/images/home/homeRight.png" alt="" />
</div> </div>
<!-- <div class="apar_right">
<img src="@/assets/images/home/homeRight.png" alt="" />
</div> -->
</div> </div>
</el-col> </el-col>
<el-col :span="16"> <el-col :span="16">
<div class="screen">
<el-form :model="queryParams" inline>
<el-input v-model.trim="queryParams.ownerName" size="small" placeholder="按房主姓名"></el-input>
<el-input v-model.trim="queryParams.ownerPhone" size="small" placeholder="按房主电话"></el-input>
<el-input v-model.trim="queryParams.ownerIdCard" size="small" placeholder="按房主身份证号"></el-input>
<el-select popper-class="selectPopClass" clearable v-model="queryParams.residentTag" size="small" placeholder="居民类型">
<el-option v-for="item in peopleTypeList" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
<el-select popper-class="selectPopClass" clearable v-model="queryParams.riskyFlag" size="small" placeholder="满意度风险家庭">
<el-option v-for="item in riskHomeList" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
<el-button size="small" class="btn" type="primary" @click="search">查询</el-button>
</el-form>
</div>
<div class="table"> <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 :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 label="序号" type="index" width="80" />
<el-table-column prop="doorName" label="门牌号" /> <el-table-column prop="doorName" width="100" label="门牌号" />
<el-table-column prop="fullName" show-overflow-tooltip label="所属小区" /> <el-table-column prop="quartersName" width="120" show-overflow-tooltip label="所属小区" />
<el-table-column prop="buildingId" show-overflow-tooltip label="所属楼栋" /> <el-table-column prop="buildingName" width="120" show-overflow-tooltip label="所属楼栋" />
<el-table-column prop="buildingUnitId" show-overflow-tooltip label="所属单元" /> <el-table-column prop="buildingUnitName" width="120" show-overflow-tooltip label="所属单元" />
<el-table-column prop="houseCode" label="房屋编码" /> <el-table-column prop="houseCode" width="120" label="房屋编码" />
<el-table-column prop="rentFlag" label="房屋状态"> <el-table-column prop="rentFlag" width="120" label="房屋状态">
<template slot-scope="scope"> <template slot-scope="scope">
<!-- 1出租 0自住 2闲置 3未售出 --> <!-- 1出租 0自住 2闲置 3未售出 -->
<span>{{ getRentFlag(scope.row.rentFlag) }}</span> <span>{{ getRentFlag(scope.row.rentFlag) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="houseType" label="房屋类型"> <!-- <el-table-column prop="houseType" width="120" label="房屋类型">
<template slot-scope="scope"> <template slot-scope="scope"> -->
<!-- 1楼房2平房3别墅 --> <!-- 1楼房2平房3别墅 -->
<span>{{ getHouseType(scope.row.houseType) }}</span> <!-- <span>{{ getHouseType(scope.row.houseType) }}</span>
</template> </template>
</el-table-column> </el-table-column> -->
<el-table-column prop="ownerName" label="房主姓名" /> <el-table-column prop="ownerName" width="120" label="房主姓名" />
<el-table-column prop="ownerPhone" label="房主电话"> <el-table-column prop="ownerPhone" width="120" show-overflow-tooltip label="房主电话">
<template slot-scope="scope"> <template slot-scope="scope">
{{ $sensitive(scope.row.ownerPhone, 3, 7) }} {{ $sensitive(scope.row.ownerPhone, 3, 7) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="riskyNum" width="170" label="满意度风险家庭">
<template slot="header"> <img :src="require('@/assets/images/home/dangerHome.png')" alt="" /> 满意度风险家庭 </template>
<template slot-scope="scope">
<span style="color: #f95619" v-if="+scope.row.riskyNum > 0"></span>
<span style="color: #3cf5ff" v-else></span>
</template>
</el-table-column>
<el-table-column prop="importanceNum" width="140" label="重点人员">
<template slot="header"> <img :src="require('@/assets/images/home/dangerPeople.png')" alt="" /> 重点人员 </template>
<template slot-scope="scope">
<span style="color: #f95619" v-if="+scope.row.importanceNum > 0"></span>
<span style="color: #3cf5ff" v-else></span>
</template>
</el-table-column>
<el-table-column label="操作" width="90" align="center"> <el-table-column label="操作" width="90" align="center">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<el-button type="text" @click="$router.push(`/dataBoard/overview/familyPortrait/?name=${row.doorName}&houseId=${row.id}&id=${row.buildingId}&buId=${row.buildingUnitId}&type=${$route.query.typeB}&name2=${row.houseName}`)">查看</el-button> <el-button type="text" @click="$router.push(`/dataBoard/overview/familyPortrait/?name=${row.doorName}&houseId=${row.id}&id=${row.buildingId}&buId=${row.buildingUnitId}&type=${$route.query.typeB}&name2=${row.houseName}`)">查看</el-button>
@ -77,9 +125,9 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<!-- <div> <div>
<Pagination v-show="total > 0" :total="total" :page.sync="pageNum" :limit.sync="pageSize" @pagination="getList" /> <Pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getTableData" />
</div> --> </div>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
@ -89,6 +137,7 @@
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination"; import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Title from "./Title/index.vue"; import Title from "./Title/index.vue";
import BreadCrumb from "@/views/dataBoard/cpts/personnel/components/Breadcrumb/index.vue"; import BreadCrumb from "@/views/dataBoard/cpts/personnel/components/Breadcrumb/index.vue";
import PeopleMount from "./PeopleMount/index.vue";
export default { export default {
name: "homeDetails", name: "homeDetails",
@ -96,43 +145,55 @@ export default {
Pagination, Pagination,
Title, Title,
BreadCrumb, BreadCrumb,
PeopleMount,
}, },
data() { data() {
return { return {
// total: 0, total: 0,
// pageNum: 1, queryParams: {
// pageSize: 10, pageNo: 1,
pageSize: 10,
unitId: "",
ownerName: "",
ownerPhone: "",
ownerIdCard: "",
riskyFlag: "",
residentTag: "",
},
orgOptions: [],
peopleTypeList: [],
riskHomeList: [
{
label: "风险",
value: "1",
},
{
label: "无风险",
value: "0",
},
],
flexWidth: 0, flexWidth: 0,
loading: false, loading: false,
homeMsg: {}, homeMsg: {},
list: [], list: [],
homeText: "", homeText: "",
buildingList: [], buildingList: [],
houseMountArr: [], houseMountArr: [
// [
// { doorName: 101, riskyNum: 0, importanceNum: 0, rentFlag: "0" },
// { doorName: 102, riskyNum: 1, importanceNum: 0, rentFlag: "0" },
// { doorName: 103, riskyNum: 0, importanceNum: 1, rentFlag: "0" },
// { doorName: 104, riskyNum: 0, importanceNum: 0, rentFlag: "2" },
// ],
],
}; };
}, },
watch: { watch: {},
// "$route.query.buIding": {
// handler(val) {
// if (val) {
// this.getList(val);
// }
// },
// immediate: true,
// },
// "$route.query.typeB": {
// handler(val) {
// console.log("jhjkbhkjhkjhkjhkjhkj");
// if (val) {
// this.getList();
// }
// },
// immediate: true,
// },
},
mounted() { mounted() {
const buId = this.$route.query.buId || null; const buId = this.$route.query.buId || null;
this.getList(buId); this.getList(buId);
// this.getTableData(this.$route.query.id);
this.getPeopleTypeList();
}, },
methods: { methods: {
getDoorNameList(list) { getDoorNameList(list) {
@ -166,8 +227,20 @@ export default {
return doorNameList; return doorNameList;
}, },
getPeopleTypeList() {
this.$http
.post("sys/dict/data/dictlist", {
dictType: "resident_category",
})
.then((res) => {
const { code, data } = res.data;
if (code === 0) {
this.peopleTypeList = data;
}
});
},
getUnitList(id) { getUnitList(id) {
this.loading = true;
this.$http.get(`/actual/base/streetOverview/getUnitHouseList?unitId=` + id).then((res) => { this.$http.get(`/actual/base/streetOverview/getUnitHouseList?unitId=` + id).then((res) => {
const { const {
code, code,
@ -175,13 +248,27 @@ export default {
} = res.data; } = res.data;
if (code === 0) { if (code === 0) {
let unitInfos = unitInfo || {}; let unitInfos = unitInfo || {};
this.list = houseList;
this.homeMsg = unitInfos; this.homeMsg = unitInfos;
this.homeText = (unitInfos.quartersName ? unitInfos.quartersName : "") + (unitInfos.buildingName ? unitInfos.buildingName : "") + (unitInfos.unitNum ? unitInfos.unitNum + "单元" : ""); this.homeText = (unitInfos.quartersName ? unitInfos.quartersName : "") + (unitInfos.buildingName ? unitInfos.buildingName : "") + (unitInfos.unitNum ? unitInfos.unitNum + "单元" : "");
this.houseMountArr = this.getDoorNameList(this.list); this.houseMountArr = this.getDoorNameList(houseList);
if (this.houseMountArr.length > 0) { if (this.houseMountArr.length > 0) {
this.flexWidth = this.houseMountArr[0].length * 58; this.flexWidth = this.houseMountArr[0].length * 58;
} }
}
});
},
getTableData(id) {
this.queryParams.unitId = id;
this.loading = true;
this.$http.get("/actual/base/streetOverview/getUnitHouseOverviewList?" + this.$paramsFormat(this.queryParams)).then((res) => {
const {
code,
data: { list, total },
} = res.data;
if (code === 0) {
this.list = list;
this.total = total;
this.loading = false; this.loading = false;
} else { } else {
this.loading = false; this.loading = false;
@ -189,6 +276,11 @@ export default {
}); });
}, },
search() {
this.queryParams.pageNo = 1;
this.getTableData();
},
getList(buid) { getList(buid) {
const homeType = this.$route.query.typeB; const homeType = this.$route.query.typeB;
if (homeType === "building") { if (homeType === "building") {
@ -201,10 +293,10 @@ export default {
if (this.buildingList && this.buildingList.length > 0) { if (this.buildingList && this.buildingList.length > 0) {
if (buid) { if (buid) {
this.buildingList.forEach((item, i) => { this.buildingList.forEach((item, i) => {
console.log(item);
if (item.id === buid) { if (item.id === buid) {
item.ifActive = true; item.ifActive = true;
this.getUnitList(item.id); this.getUnitList(item.id);
this.getTableData(item.id);
} else { } else {
item.ifActive = false; item.ifActive = false;
} }
@ -214,6 +306,7 @@ export default {
if (i === 0) { if (i === 0) {
item.ifActive = true; item.ifActive = true;
this.getUnitList(item.id); this.getUnitList(item.id);
this.getTableData(item.id);
} else { } else {
item.ifActive = false; item.ifActive = false;
} }
@ -227,6 +320,7 @@ export default {
}); });
} else { } else {
this.getUnitList(this.$route.query.id); this.getUnitList(this.$route.query.id);
this.getTableData(this.$route.query.id);
} }
}, },
@ -256,6 +350,7 @@ export default {
if (item.id === d.id) { if (item.id === d.id) {
d.ifActive = true; d.ifActive = true;
this.getUnitList(item.id); this.getUnitList(item.id);
this.getTableData(item.id);
} else { } else {
d.ifActive = false; d.ifActive = false;
} }
@ -295,6 +390,22 @@ export default {
cursor: pointer; cursor: pointer;
} }
@mixin homeCommon {
height: 58px;
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: #fff;
&:not(:last-child) {
margin-right: 10px;
}
}
.top-nav-list { .top-nav-list {
display: flex; display: flex;
margin-bottom: 16px; margin-bottom: 16px;
@ -327,7 +438,7 @@ export default {
display: flex; display: flex;
align-items: flex-end; align-items: flex-end;
justify-content: center; justify-content: center;
margin-top: 100px; margin-top: 60px;
.apar_comtent { .apar_comtent {
display: flex; display: flex;
@ -338,10 +449,9 @@ export default {
.apar_center { .apar_center {
min-width: 244px; min-width: 244px;
max-width: 488px; max-width: 488px;
height: 584px; height: 578px;
overflow: auto; overflow: auto;
background: url("@/assets/images/home/homeCenter.png") no-repeat; background: #caab93;
background-size: 100% 100%;
padding: 30px 30px 10px 30px; padding: 30px 30px 10px 30px;
display: flex; display: flex;
// align-items: flex-end; // align-items: flex-end;
@ -362,26 +472,34 @@ export default {
margin-bottom: 20px; margin-bottom: 20px;
.households { .households {
height: 58px; @include homeCommon;
background: url("@/assets/images/home/hasPeople.png") no-repeat; background: url("@/assets/images/home/hasPeople.png") no-repeat;
background-size: 100% 100%; }
.dangerHome,
.dangerPeople {
@include homeCommon;
background: url("@/assets/images/home/dangerHomeBg.png") no-repeat;
}
.freeHome {
@include homeCommon;
background: url("@/assets/images/home/freeHome.png") no-repeat;
}
}
}
.dangerClass {
display: flex; display: flex;
flex: 0 0 48px; flex-direction: column;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
font-size: 14px; div:first-child {
font-family: PingFang SC; margin-bottom: 5px;
font-weight: 500; font-weight: bold;
color: #7fceff;
&:not(:last-child) {
margin-right: 10px;
}
}
} }
} }
.apar_bottom { .apar_bottom {
width: 244px; width: 100%;
margin-top: -1px; margin-top: -1px;
img { img {
@ -390,9 +508,9 @@ export default {
} }
} }
.apar_right { // .apar_right {
margin-left: -3px; // margin-left: -3px;
} // }
} }
.more { .more {
@ -427,5 +545,39 @@ export default {
color: yellow; color: yellow;
} }
} }
.mount {
margin-top: 25px;
}
.screen {
margin: 5px 0 40px;
.el-select,
.el-input {
width: 150px;
margin-right: 4px;
border: 1px solid #126ac5;
border-radius: 2px;
/deep/ .el-input__inner {
background: none;
border: none;
color: #fff;
}
}
.searchSelect {
width: 200px;
/deep/ .el-select__tags {
width: 200px !important;
max-width: 200px !important;
}
}
.btn {
margin-left: 46px;
height: 32px;
}
}
} }
</style> </style>

2
src/views/dataBoard/cpts/personnel/modules/businessTables/complaint.vue

@ -17,7 +17,7 @@
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" /> <img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div> <div style="color: #fff">暂无数据</div>
</div> </div>
<eventDetails :showDialog="showDialog" :id="this.rowId" @close="close" /> <eventDetails :showDialog="showDialog" :id="rowId" @close="close" />
<Pagination <Pagination
v-show="total > 0" v-show="total > 0"
:total="total" :total="total"

24
src/views/dataBoard/cpts/personnel/modules/businessTables/economize.vue

@ -1,6 +1,11 @@
<template> <template>
<div class="table"> <div class="table">
<el-table v-if="list.length > 0" :data="list" max-height="363px" height="363px"> <el-table
v-if="list.length > 0"
:data="list"
max-height="363px"
height="363px"
>
<el-table-column label="序号" type="index" width="80" /> <el-table-column label="序号" type="index" width="80" />
<el-table-column label="不满意事项类型" prop="scope" width="190" /> <el-table-column label="不满意事项类型" prop="scope" width="190" />
<el-table-column label="不满意事项描述" prop="problemDesc" width="" /> <el-table-column label="不满意事项描述" prop="problemDesc" width="" />
@ -12,20 +17,27 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px"> <div
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" /> v-else
style="width: 100%; height: 100%; text-align: center; padding-top: 120px"
>
<img
width="268px"
height="128px"
src="~@/assets/images/overview/zanwu.png"
/>
<div style="color: #fff">暂无数据</div> <div style="color: #fff">暂无数据</div>
</div> </div>
<smyd :showDialog="showDialog" :id="rowId" @close="close" /> <Smyd :showDialog="showDialog" :id="rowId" @close="close" />
</div> </div>
</template> </template>
<script> <script>
import smyd from "@/views/dataBoard/cpts/details/smyd.vue"; import Smyd from "@/views/dataBoard/cpts/details/smyd.vue";
export default { export default {
name: "economize", name: "economize",
components: { components: {
smyd, Smyd,
}, },
data() { data() {
return { return {

79
src/views/dataBoard/cpts/resi-details.vue

@ -11,9 +11,7 @@
<div class="item"> <div class="item">
<div class="field">所属网格</div> <div class="field">所属网格</div>
<div class="value"> <div class="value">
<span v-if="info.community">{{ <span v-if="info.community">{{ info.community }}</span>
info.community
}}</span>
<span v-if="info.grid"> - {{ info.grid }}</span> <span v-if="info.grid"> - {{ info.grid }}</span>
</div> </div>
</div> </div>
@ -21,9 +19,7 @@
<div class="field">所属房屋</div> <div class="field">所属房屋</div>
<div class="value"> <div class="value">
<span v-if="info.village">{{ info.village }}</span> <span v-if="info.village">{{ info.village }}</span>
<span v-if="info.building"> <span v-if="info.building"> - {{ info.building }}</span>
- {{ info.building }}</span
>
<span v-if="info.unit"> - {{ info.unit }}</span> <span v-if="info.unit"> - {{ info.unit }}</span>
<span v-if="info.room"> - {{ info.room }}</span> <span v-if="info.room"> - {{ info.room }}</span>
</div> </div>
@ -110,19 +106,14 @@
<div <div
class="tab-btn" class="tab-btn"
@click="subStartTabIndex" @click="subStartTabIndex"
v-if="tabList.length > 7" > v-if="tabList.length > 7"
<img >
src="@/assets/img/shuju/people/arrow-double-left.png"/> </div> <img src="@/assets/img/shuju/people/arrow-double-left.png" />
</div>
<div <div
v-show=" v-show="index >= startTabIndex && index < startTabIndex + 7"
index >= startTabIndex && index < startTabIndex + 7
"
class="tab" class="tab"
:class=" :class="currentTabIndex % tabList.length == index ? 'z-on' : ''"
currentTabIndex % tabList.length == index
? 'z-on'
: ''
"
:key="'tab' + index" :key="'tab' + index"
@click="currentTabIndex = index" @click="currentTabIndex = index"
v-for="(item, index) in tabList" v-for="(item, index) in tabList"
@ -134,9 +125,7 @@
@click="addStartTabIndex" @click="addStartTabIndex"
v-if="tabList.length > 7" v-if="tabList.length > 7"
> >
<img <img src="@/assets/img/shuju/people/arrow-double-right.png" />
src="@/assets/img/shuju/people/arrow-double-right.png"
/>
</div> </div>
</div> </div>
@ -847,7 +836,13 @@ export default {
tabList: [], tabList: [],
}; };
}, },
watch: {
resiId(val) {
if (val) {
this.getApiData();
}
},
},
computed: { computed: {
currentTab() { currentTab() {
return this.tabList[this.currentTabIndex]; return this.tabList[this.currentTabIndex];
@ -884,7 +879,6 @@ export default {
this.getInfo(); this.getInfo();
}, },
// id // id
async getInfo() { async getInfo() {
const url = "resident_info"; const url = "resident_info";
@ -930,7 +924,7 @@ export default {
}, },
handleSizeChange(page_size) { handleSizeChange(page_size) {
localStorage.setItem('dataBoard_page_size', page_size); localStorage.setItem("dataBoard_page_size", page_size);
this.page_size = page_size; this.page_size = page_size;
this.getList(); this.getList();
}, },
@ -942,7 +936,7 @@ export default {
let peop_type = this.type2; let peop_type = this.type2;
this.loading = true; this.loading = true;
const url = 'person_resour_list'; const url = "person_resour_list";
const { data, code, msg } = await requestPostBi( const { data, code, msg } = await requestPostBi(
url, url,
{ {
@ -952,8 +946,8 @@ export default {
start_date, start_date,
end_date, end_date,
org_id, org_id,
peop_type peop_type,
} },
}, },
{ {
// mockId: 60068051, // mockId: 60068051,
@ -969,31 +963,30 @@ export default {
this.list = data.map((item, index) => { this.list = data.map((item, index) => {
return [ return [
index + 1, index + 1,
item.peop_name ? item.peop_name : '--', item.peop_name ? item.peop_name : "--",
// item.peop_id ? item.peop_id : '--', // item.peop_id ? item.peop_id : '--',
item.peop_child_type ? item.peop_child_type : '--', item.peop_child_type ? item.peop_child_type : "--",
item.service_num ? item.service_num : '--', item.service_num ? item.service_num : "--",
item.service_ratio ? item.service_ratio : '--', item.service_ratio ? item.service_ratio : "--",
item.avg_satisfaction ? item.avg_satisfaction : '--', item.avg_satisfaction ? item.avg_satisfaction : "--",
item.sum_point ? item.sum_point : '--', item.sum_point ? item.sum_point : "--",
{ type: 'operate', list: ['查看'] } { type: "operate", list: ["查看"] },
]; ];
}); });
} else { } else {
this.$message.error(msg); this.$message.error(msg);
} }
this.list = [ this.list = [
{ {
index: 1, index: 1,
peop_name: '置南于可', peop_name: "置南于可",
peop_child_type: 'in nostrud commodo dolore', peop_child_type: "in nostrud commodo dolore",
service_num: 57, service_num: 57,
service_ratio: 94, service_ratio: 94,
avg_satisfaction: 65, avg_satisfaction: 65,
sum_point: 63, sum_point: 63,
'': { type: 'operate', list: ['查看'] } "": { type: "operate", list: ["查看"] },
} },
]; ];
}, },
// async getInfo() { // async getInfo() {
@ -1021,7 +1014,7 @@ export default {
const { org_id, listType, page_num, page_size, searchDate } = this; const { org_id, listType, page_num, page_size, searchDate } = this;
const start_date = searchDate[0]; const start_date = searchDate[0];
const end_date = searchDate[1]; const end_date = searchDate[1];
const url = 'person_resour_list_num'; const url = "person_resour_list_num";
let peop_type = this.type2; let peop_type = this.type2;
const { data, code, msg } = await requestPostBi( const { data, code, msg } = await requestPostBi(
url, url,
@ -1030,8 +1023,8 @@ export default {
org_id, org_id,
start_date, start_date,
end_date, end_date,
peop_type peop_type,
} },
}, },
{ {
// mockId: 63070189, // mockId: 63070189,
@ -1043,7 +1036,7 @@ export default {
} else { } else {
this.$message.error(msg); this.$message.error(msg);
} }
} },
}, },
}; };
</script> </script>
@ -1056,8 +1049,6 @@ export default {
.u-categorys { .u-categorys {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
} }
.u-categorys span { .u-categorys span {
display: block; display: block;

2
src/views/dataBoard/overview/components/jdwgy.vue

@ -126,9 +126,11 @@ export default {
getData() { getData() {
this.loading = true; this.loading = true;
if (this.currentLevelData.orgLevel == "grid") { if (this.currentLevelData.orgLevel == "grid") {
this.$store.dispatch("chooseArea/chooseLoading", true);
const personType = this.ifUnit && this.peopleType === "unit" ? "unit" : this.peopleType; const personType = this.ifUnit && this.peopleType === "unit" ? "unit" : this.peopleType;
this.$http.get("/actual/base/streetOverview/queryPersonnelGridGroup?personnelType=" + personType + "&level=" + this.currentLevelData.orgLevel + "&orgId=" + this.currentLevelData.orgId).then(({ data: { data } }) => { this.$http.get("/actual/base/streetOverview/queryPersonnelGridGroup?personnelType=" + personType + "&level=" + this.currentLevelData.orgLevel + "&orgId=" + this.currentLevelData.orgId).then(({ data: { data } }) => {
this.loading = false; this.loading = false;
this.$store.dispatch("chooseArea/chooseLoading", false);
this.wglist = data; this.wglist = data;
this.$emit( this.$emit(
"setPoint", "setPoint",

1
src/views/dataBoard/renfang/cpts/fwgl.vue

@ -261,7 +261,6 @@ export default {
// pieChart // pieChart
this.pieOption = pieOption(); this.pieOption = pieOption();
const {pandectData} = this const {pandectData} = this
console.log(pandectData);
// //
this.pieOption.title.text = this.pieOption.title.text =
(pandectData.homeCount != 0 (pandectData.homeCount != 0

30
src/views/dataBoard/renfang/cpts/jmgl.vue

@ -7,6 +7,7 @@
class="" class=""
@myChartMethod="pieInitOk" @myChartMethod="pieInitOk"
ref="pieChart" ref="pieChart"
v-if="pandectData.totalResidents"
></screen-echarts-frame> ></screen-echarts-frame>
</div> </div>
<div class="pie-legend"> <div class="pie-legend">
@ -31,7 +32,7 @@
<div class="title">居民总数</div> <div class="title">居民总数</div>
</div> </div>
<div class="item-two"> <div class="item-two">
<div class="num">{{ info.resident_count }}</div> <div class="num">{{ pandectData.totalResidents }}</div>
<div class="unit"></div> <div class="unit"></div>
</div> </div>
</div> </div>
@ -50,7 +51,7 @@
</div> </div>
<div class="item-two"> <div class="item-two">
<div class="num"> <div class="num">
{{ info.inhabitant_count }} {{ pandectData.permanentResiCount }}
</div> </div>
<div class="unit"></div> <div class="unit"></div>
</div> </div>
@ -70,7 +71,7 @@
<div class="title">流动人口</div> <div class="title">流动人口</div>
</div> </div>
<div class="item-two"> <div class="item-two">
<div class="num">{{ info.floating_count }}</div> <div class="num">{{ pandectData.floatingResiCount }}</div>
<div class="unit"></div> <div class="unit"></div>
</div> </div>
</div> </div>
@ -145,6 +146,7 @@ export default {
inhabitant_count: 0, inhabitant_count: 0,
floating_count: 0, floating_count: 0,
}, },
pandectData:{}
}; };
}, },
watch: { watch: {
@ -153,7 +155,9 @@ export default {
}, },
}, },
mounted() { mounted() {
this.$nextTick(()=>{
this.getData(); this.getData();
})
}, },
methods: { methods: {
toListPage(type = "", type_name = "") { toListPage(type = "", type_name = "") {
@ -233,21 +237,19 @@ export default {
async iniPieChart() { async iniPieChart() {
this.$refs.pieChart.clear(); this.$refs.pieChart.clear();
// this.$refs.pieChart.showLoading() // this.$refs.pieChart.showLoading()
// pieChart // pieChart
this.pieOption = pieOption(); this.pieOption = pieOption();
const { pandectData } = this;
const { info } = this;
// //
this.pieOption.title.text = this.pieOption.title.text =
(info.resident_count != 0 (pandectData.totalResidents != 0
? parseInt( ? parseInt(
(100 * info.inhabitant_count) / info.resident_count (100 * pandectData.permanentResiCount) / pandectData.totalResidents
) )
: "--") + "%"; : "--") + "%";
this.pieData = [ this.pieData = [
{ value: info.inhabitant_count, name: "常住人口" }, { value: pandectData.permanentResiCount, name: "常住人口" },
{ value: info.floating_count, name: "流动人口" }, { value: pandectData.floatingResiCount, name: "流动人口" },
]; ];
this.pieOption.series[0].data = this.pieData; this.pieOption.series[0].data = this.pieData;
this.$refs.pieChart.setOption(this.pieOption); this.$refs.pieChart.setOption(this.pieOption);
@ -260,14 +262,14 @@ export default {
fromActionPayload: { dataIndexInside }, fromActionPayload: { dataIndexInside },
} = params; } = params;
this.pieOption.title.text = this.pieOption.title.text =
(info.resident_count != 0 (pandectData.totalResidents != 0
? parseInt( ? parseInt(
(100 * (100 *
[ [
info.inhabitant_count, pandectData.permanentResiCount,
info.floating_count, pandectData.floatingResiCount,
][dataIndexInside]) / ][dataIndexInside]) /
info.resident_count pandectData.totalResidents
) )
: "--") + "%"; : "--") + "%";
this.$refs.pieChart.myChart.setOption(this.pieOption); this.$refs.pieChart.myChart.setOption(this.pieOption);

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

@ -17,7 +17,7 @@
</div> </div>
<div class="m-subbox"> <div class="m-subbox">
<fwgl ref="fwgl" :orgId="orgData.org_id" :pandectData="pandectData"></fwgl> <fwgl ref="fwgl" :orgId="orgData.org_id"></fwgl>
</div> </div>
</div> </div>
@ -31,7 +31,7 @@
</div> </div>
<div class="m-subbox"> <div class="m-subbox">
<jmgl :orgId="orgData.org_id" :pandectData="pandectData"></jmgl> <jmgl :orgId="orgData.org_id" ref="jmgl"></jmgl>
</div> </div>
</div> </div>
</div> </div>
@ -553,6 +553,7 @@ export default {
if (data) { if (data) {
this.$nextTick(()=>{ this.$nextTick(()=>{
this.$refs['fwgl'].pandectData = data this.$refs['fwgl'].pandectData = data
this.$refs['jmgl'].pandectData = data
} }
) )
} }

2
src/views/dataBoard/satisfactionEval/dissatisfied/index.vue

@ -91,7 +91,7 @@ import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination
import DissatisfiedDetail from "./detail.vue"; import DissatisfiedDetail from "./detail.vue";
export default { export default {
name: "dissatisfied", name: "dissatisfiedPage",
components: { Breadcrumb, DissatisfiedDetail, Pagination }, components: { Breadcrumb, DissatisfiedDetail, Pagination },
data() { data() {
return { return {

16
src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/index.vue

@ -5,12 +5,7 @@
<Title :text="`“${title}”画像匹配同类潜在不满意人员 `" noBg/> <Title :text="`“${title}”画像匹配同类潜在不满意人员 `" noBg/>
</div>--> </div>-->
<div class="table"> <div class="table">
<el-table :data="list" <el-table :data="list" v-loading="loading" element-loading-text="加载中..." element-loading-spinner="el-icon-loading" element-loading-background="rgba(0,0,0,0.5)">
v-loading="loading"
element-loading-text="加载中..."
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0,0,0,0.5)"
>
<el-table-column label="序号" type="index" width="80" /> <el-table-column label="序号" type="index" width="80" />
<el-table-column prop="gridName" width="118" label="所属组织" /> <el-table-column prop="gridName" width="118" label="所属组织" />
@ -47,8 +42,7 @@
</el-table> </el-table>
</div> </div>
<Pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" <Pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" />
@pagination="getList"/>
</div> </div>
</template> </template>
@ -82,7 +76,7 @@ export default {
}), }),
list: [], list: [],
title: "", title: "",
loading: true loading: true,
}; };
}, },
activated() { activated() {
@ -97,11 +91,11 @@ export default {
}, },
methods: { methods: {
getList() { getList() {
this.loading = true this.loading = true;
this.$http.get("/governance/satisfactionOverview/satisfactionCrowdList?" + this.$paramsFormat(this.queryParams)).then(({ data: { data } }) => { this.$http.get("/governance/satisfactionOverview/satisfactionCrowdList?" + this.$paramsFormat(this.queryParams)).then(({ data: { data } }) => {
this.list = data.list; this.list = data.list;
this.total = data.total; this.total = data.total;
this.loading = false this.loading = false;
}); });
}, },
handleView({ restName, restId }) { handleView({ restName, restId }) {

24
src/views/dataBoard/satisfactionEval/modules/PotentialPeople/index.vue

@ -26,7 +26,12 @@
事件未解决 <br /> 事件未解决 <br />
上报人数 上报人数
</div> </div>
<div class="num"><span style="margin-right: 4px;" class="orange">{{ unSolvedNum ? unSolvedNum : 0 }}</span></div> <div class="num">
<span style="margin-right: 4px" class="orange">{{
unSolvedNum ? unSolvedNum : 0
}}</span
>
</div>
</div> </div>
<div <div
class="potential-people-item" class="potential-people-item"
@ -48,7 +53,12 @@
需求未满足 <br /> 需求未满足 <br />
人数 人数
</div> </div>
<div class="num"><span style="margin-right: 4px" class="green">{{ unFinishNum ? unFinishNum : 0 }}</span></div> <div class="num">
<span style="margin-right: 4px" class="green">{{
unFinishNum ? unFinishNum : 0
}}</span
>
</div>
</div> </div>
<div <div
class="potential-people-item" class="potential-people-item"
@ -70,7 +80,12 @@
应享未享 <br /> 应享未享 <br />
服务人数 服务人数
</div> </div>
<div class="num"><span style="margin-right: 4px" class="light">{{ noServiceNum ? noServiceNum : 0 }}</span></div> <div class="num">
<span style="margin-right: 4px" class="light">{{
noServiceNum ? noServiceNum : 0
}}</span
>
</div>
</div> </div>
</div> </div>
</template> </template>
@ -174,7 +189,8 @@ export default {
.imgIcon { .imgIcon {
width: 30px; width: 30px;
height: 30px; height: 30px;
margin-top: -100px; position: relative;
top: -58px;
} }
.imgBg { .imgBg {
display: block; display: block;

2
src/views/dataBoardMain/main-content.vue

@ -5,7 +5,7 @@
<template v-if="tabIsIframe($router.currentRoute.meta.iframeURL)"> <template v-if="tabIsIframe($router.currentRoute.meta.iframeURL)">
<iframe :src="$router.currentRoute.meta.iframeURL + '?token=' + token + '&customerId=' + customerId" ref="iframe" class="m-iframe" id="iframe" width="100%" height="100%" frameborder="0" scrolling="yes" :style="{ height: $store.state.fixed1920.height - 100 + 'px' }" /> <iframe :src="$router.currentRoute.meta.iframeURL + '?token=' + token + '&customerId=' + customerId" ref="iframe" class="m-iframe" id="iframe" width="100%" height="100%" frameborder="0" scrolling="yes" :style="{ height: $store.state.fixed1920.height - 100 + 'px' }" />
</template> </template>
<keep-alive v-show="!tabIsIframe($router.currentRoute.meta.iframeURL)" :exclude="['homeDetails', 'dissatisfied']"> <keep-alive v-show="!tabIsIframe($router.currentRoute.meta.iframeURL)" :exclude="['homeDetails', 'dissatisfiedPage', 'Microgrid']">
<router-view ref="reloadPage" @changeCustomerName="changeCustomerName" /> <router-view ref="reloadPage" @changeCustomerName="changeCustomerName" />
</keep-alive> </keep-alive>
</template> </template>

101
src/views/modules/base/organization/organization.vue

@ -225,7 +225,8 @@
<el-table v-show="gridStaffTableFlag" <el-table v-show="gridStaffTableFlag"
:data="gridStaffTableListData" :data="gridStaffTableListData"
style="width: 100%" style="width: 100%"
height="350"> height="350"
>
<el-table-column prop="name" <el-table-column prop="name"
label="网格工作人员名字" label="网格工作人员名字"
width="260"></el-table-column> width="260"></el-table-column>
@ -245,10 +246,19 @@
class-name="small-padding fixed-width"> class-name="small-padding fixed-width">
<template slot="header" <template slot="header"
slot-scope="scope"> slot-scope="scope">
<el-button size="mini" <!-- <el-button size="mini"
type="primary" type="primary"
icon="el-icon-plus" icon="el-icon-plus"
@click="addGridPeo(scope.row)">新增</el-button> @click="addGridPeo(scope.row)">新增</el-button> -->
<el-dropdown @command="handleCommand">
<el-button type="primary" >
新增 <i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="newAdd" >新添加</el-dropdown-item>
<el-dropdown-item command="fromOrg">从组织添加</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" <el-button size="mini"
@ -488,7 +498,37 @@
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
<div v-if="dialogVisiblePeoAgency">
<el-dialog title="新增人员ccccc"
:visible.sync="dialogVisiblePeoAgency"
width="850"
>
<el-form :model="peoFormAgency"
label-width="120px"
ref="addPeoAgencyForm"
:rules="rulesAgencyPeo">
<el-form-item label="工作人员" prop="selectedList">
<el-select v-model="peoFormAgency.selectedList"
multiple
placeholder="请选择"
>
<el-option v-for="item in agencyStaffTableListData"
:key="item.staffId"
:value="item.staffId"
:label="item.name"
>
</el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer">
<el-button @click="cancelPeoAgency"> </el-button>
<el-button type="primary"
@click="submitPeoAgency"> </el-button>
</div>
</el-dialog>
</div>
<!-- 人员修改 --> <!-- 人员修改 -->
<el-dialog v-if="modifyPeo" <el-dialog v-if="modifyPeo"
title="人员修改" title="人员修改"
@ -1293,7 +1333,16 @@ export default {
label: 'agencyName', label: 'agencyName',
children: 'subAgencyList', children: 'subAgencyList',
checkStrictly: true checkStrictly: true
} },
dialogVisiblePeoAgency:false,//
peoFormAgency:{
gridId:"",
selectedList:[]
},
rulesAgencyPeo:{
selectedList:[{required:true,message:"请选择人员",trigger:"blur"}]
},
tableKey:""
}; };
}, },
created () { created () {
@ -1761,6 +1810,9 @@ export default {
disableFlag: "", disableFlag: "",
newRoles: [], newRoles: [],
}; };
this.peoFormAgency = {
selectedList:[]
}
}, },
// //
GridFormRest () { GridFormRest () {
@ -1978,11 +2030,16 @@ export default {
}, },
// //
async addGridPeo () { async addGridPeo (command) {
if (command === 'newAdd') {
this.dialogVisiblePeo = true; this.dialogVisiblePeo = true;
this.peoForm.orgType = "grid";
} else if (command === 'fromOrg') {
await this.getAgencyStaffListData() await this.getAgencyStaffListData()
console.log(this.agencyStaffTableListData); console.log(this.agencyStaffTableListData);
this.peoForm.orgType = "grid"; this.dialogVisiblePeoAgency = true;
}
}, },
// //
async xiuGridPeo (row) { async xiuGridPeo (row) {
@ -2625,7 +2682,6 @@ export default {
// id // id
async getGridDetailsById () { async getGridDetailsById () {
const url = "/gov/org/grid/griddetail"; const url = "/gov/org/grid/griddetail";
let params = { let params = {
gridId: this.judgeOrgInfoLevel.id, gridId: this.judgeOrgInfoLevel.id,
}; };
@ -2816,6 +2872,37 @@ export default {
this.longitude = lonlat[0]; this.longitude = lonlat[0];
// this.formData.address = selPosition.address + selPosition.name; // this.formData.address = selPosition.address + selPosition.name;
}, },
handleCommand(command) {
this.addGridPeo(command);
},
cancelPeoAgency(){
this.dialogVisiblePeoAgency = false
this.peoFormAgency.selectedList = []; //
},
submitPeoAgency(){
this.$refs["addPeoAgencyForm"].validate((valid, err) => {
if (valid) {
this.submitPeoAgencyDo();
} else {
app.util.validateRule(err);
return console.log("error submit!!", valid, err);
}
});
},
async submitPeoAgencyDo(){
let url = "/gov/org/grid/addgridstaffs"
this.peoFormAgency.gridId = this.currentGridOrgId
const {data,code,msg} = await requestPost(url,this.peoFormAgency)
if(code == 0){
this.$message.success('添加成功')
this.dialogVisiblePeoAgency = false
this.getGridStaffListData();
this.peoFormAgency.selectedList = []
} else{
this.$message.err(msg)
}
},
}, },
}; };
</script> </script>

188
src/views/modules/home/index.vue

@ -9,38 +9,22 @@
</div> </div>
<div class="tabs"> <div class="tabs">
<div :class="{ 'z-on': searchData.type == 'jumin' }" <div :class="{ 'z-on': searchData.type == 'jumin' }" @click="searchDataTab('jumin')">查居民</div>
@click="searchDataTab('jumin')"> <div :class="{ 'z-on': searchData.type == 'fangwu' }" @click="searchDataTab('fangwu')">查房屋</div>
查居民
</div>
<div :class="{ 'z-on': searchData.type == 'fangwu' }"
@click="searchDataTab('fangwu')">
查房屋
</div>
</div> </div>
<div class="search"> <div class="search">
<div class="search-input"> <div class="search-input">
<div class="input"> <div class="input">
<input type="text" <input type="text" :placeholder="typePlaceholder[searchData.type]" v-model="searchData.searchKey" @keyup.enter="handleClickSearchBtn" />
:placeholder="typePlaceholder[searchData.type]
" <div class="close-btn" v-if="searchData.searchKey != ''" @click="searchData.searchKey = ''">
v-model="searchData.searchKey"
@keyup.enter="handleClickSearchBtn"/>
<div class="close-btn"
v-if="searchData.searchKey != ''"
@click="searchData.searchKey = ''">
<img src="@/assets/img/shequ/close.png" /> <img src="@/assets/img/shequ/close.png" />
</div> </div>
</div> </div>
<div class="btn" <div class="btn" @click="handleClickSearchBtn">查一下</div>
@click="handleClickSearchBtn">
查一下
</div> </div>
</div> </div>
</div>
</div> </div>
</div> </div>
<div class="m-pan m-box"> <div class="m-pan m-box">
@ -78,47 +62,30 @@
<span>分析结果</span> <span>分析结果</span>
</div> </div>
<p class="hint" <p class="hint" v-if="resiCategory.list.length > 0">
v-if="resiCategory.list.length > 0">
根据数据分析结果建议重点关注 根据数据分析结果建议重点关注
<b>{{ resiCategory.list[0].name }}{{ <b>{{ resiCategory.list[0].name }}{{ resiCategory.list[1].name }}{{ resiCategory.list[2].name }}</b>
resiCategory.list[1].name
}}{{ resiCategory.list[2].name }}</b>
三类群体开展相关的社区服务和活动 三类群体开展相关的社区服务和活动
</p> </p>
</div> </div>
<el-tabs v-model="activeName" <el-tabs v-model="activeName" style="width: calc(100% - 240px - 40px); margin-left: auto">
style="width: calc(100% - 240px - 40px);margin-left: auto;"> <el-tab-pane label="居民分类统计" name="resi">
<el-tab-pane label="居民分类统计"
name="resi">
<div class="cnt-right"> <div class="cnt-right">
<div class="list"> <div class="list">
<div class="item" <div class="item" @click="handleClickCategory(item)" :key="item.code" v-for="(item, index) in resiCategory.list">
@click="handleClickCategory(item)" <div>{{ ("0" + (index + 1)).substr(-2) }}.</div>
:key="item.code"
v-for="(
item, index
) in resiCategory.list">
<div>
{{
("0" + (index + 1)).substr(-2)
}}.
</div>
<div class="item-name"> <div class="item-name">
{{ item.name }} {{ item.name }}
</div> </div>
<div class="item-div"></div> <div class="item-div"></div>
<div class="item-count"> <div class="item-count">{{ item.count }}</div>
{{ item.count }}
</div>
<div class="item-progress"> <div class="item-progress">
<b :style="{ <b
:style="{
width: item.per + '%', width: item.per + '%',
}"></b> }"></b>
</div> </div>
<div class="item-per"> <div class="item-per">{{ item.per }} %</div>
{{ item.per }} %
</div>
</div> </div>
</div> </div>
</div> </div>
@ -127,31 +94,20 @@
name="zhineng"> name="zhineng">
<div class="cnt-right"> <div class="cnt-right">
<div class="list"> <div class="list">
<div class="item" <div class="item" :key="item.code" v-for="(item, index) in znycCategory.list">
:key="item.code" <div>{{ ("0" + (index + 1)).substr(-2) }}.</div>
v-for="(
item, index
) in znycCategory.list">
<div>
{{
("0" + (index + 1)).substr(-2)
}}.
</div>
<div class="item-name"> <div class="item-name">
{{ item.name }} {{ item.name }}
</div> </div>
<div class="item-div"></div> <div class="item-div"></div>
<div class="item-count"> <div class="item-count">{{ item.count }}</div>
{{ item.count }}
</div>
<div class="item-progress"> <div class="item-progress">
<b :style="{ <b
:style="{
width: item.per + '%', width: item.per + '%',
}"></b> }"></b>
</div> </div>
<div class="item-per"> <div class="item-per">{{ item.per }} %</div>
{{ item.per }} %
</div>
</div> </div>
</div> </div>
</div> </div>
@ -167,20 +123,12 @@
<img src="@/assets/images/index/title-icon-zntx.png" /> <img src="@/assets/images/index/title-icon-zntx.png" />
<span>智能提醒</span> <span>智能提醒</span>
</div> </div>
<div class="more" <div class="more" @click="toNoticePage">更多></div>
@click="toNoticePage">更多> <div class="cnt" v-if="noticeData.length > 0">
</div> <div @click="handleClickNotice(item)" class="item" :key="'notice' + item.targetId + index" v-for="(item, index) in noticeData">
<div class="cnt"
v-if="noticeData.length > 0">
<div @click="handleClickNotice(item)"
class="item"
:key="'notice' + item.targetId + index"
v-for="(item, index) in noticeData">
<div class="item_left"> <div class="item_left">
<i class="i-tag" <i class="i-tag" v-if="item.readFlag == 1">已读</i>
v-if="item.readFlag == 1">已读</i> <i class="i-tag" v-else>未读</i>
<i class="i-tag"
v-else>未读</i>
</div> </div>
<div class="item_right"> <div class="item_right">
<div class="item-date"> <div class="item-date">
@ -193,8 +141,7 @@
</div> </div>
</div> </div>
<div class="cnt" <div class="cnt" v-else>
v-else>
<div class="empty"> <div class="empty">
<img src="~@/assets/images/shuju/renfang/index/empty.png" /> <img src="~@/assets/images/shuju/renfang/index/empty.png" />
<span>暂无提醒</span> <span>暂无提醒</span>
@ -210,8 +157,7 @@
</div> </div>
<!-- <div class="more">更多></div> --> <!-- <div class="more">更多></div> -->
<div class="cnt"> <div class="cnt">
<div id="my_chart" <div id="my_chart" style="width: 100%; height: 230px; position: relative; top: -10px"></div>
style="width: 100%;height: 230px; position: relative;top:-10px"></div>
</div> </div>
</div> </div>
</div> </div>
@ -225,7 +171,7 @@ import resiCategoryMap from "@/views/business/resi-category-map.js";
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import nextTick from "dai-js/tools/nextTick"; import nextTick from "dai-js/tools/nextTick";
import fastcall from "@/views/modules/cpts/fastcall"; import fastcall from "@/views/modules/cpts/fastcall";
import * as echarts from 'echarts'; import * as echarts from "echarts";
export default { export default {
components: { fastcall }, components: { fastcall },
@ -272,7 +218,7 @@ export default {
noticeData: [], noticeData: [],
activeName: 'resi', activeName: "resi",
myChart: {}, myChart: {},
agencyLevel:'', agencyLevel:'',
@ -314,31 +260,31 @@ export default {
}, },
methods: { methods: {
initChart() { initChart() {
this.$http.get('/governance/satisfactionOverview/notSatisfactionTrend').then(({data: {data}}) => { this.$http.get("/governance/satisfactionOverview/notSatisfactionTrend").then(({ data: { data } }) => {
this.myChart = echarts.init(document.getElementById('my_chart')); this.myChart = echarts.init(document.getElementById("my_chart"));
let series = data.series.map((item, index) => { let series = data.series.map((item, index) => {
return { return {
...item, ...item,
type: 'line', type: "line",
} };
}) });
let option = { let option = {
tooltip: { tooltip: {
trigger: 'axis' trigger: "axis",
}, },
legend: { legend: {
data: data.series.map(item => item.name), data: data.series.map((item) => item.name),
bottom: '10%', bottom: "10%",
icon: 'rect', icon: "rect",
itemWidth: 20, itemWidth: 20,
itemHeight: 5, itemHeight: 5,
itemGap: 20, itemGap: 20,
}, },
grid: { grid: {
left: '3%', left: "3%",
right: '4%', right: "4%",
bottom: '25%', bottom: "25%",
containLabel: true containLabel: true,
}, },
toolbox: { toolbox: {
// feature: { // feature: {
@ -346,19 +292,18 @@ export default {
// } // }
}, },
xAxis: { xAxis: {
type: 'category', type: "category",
boundaryGap: false, boundaryGap: false,
data: data.monthTimes.map(item => this.$moment(item).format('M') + '月') data: data.monthTimes.map((item) => this.$moment(item).format("M") + "月"),
}, },
yAxis: { yAxis: {
type: 'value' type: "value",
}, },
series series,
} };
this.myChart.setOption(option, true) this.myChart.setOption(option, true);
window.addEventListener('resize', this.handleWindowResize); window.addEventListener("resize", this.handleWindowResize);
}) });
}, },
handleWindowResize() { handleWindowResize() {
if (this.myChart) { if (this.myChart) {
@ -372,24 +317,23 @@ export default {
this.$router.push({ this.$router.push({
name: "base-resi", name: "base-resi",
params: { params: {
category: item.code category: item.code,
} },
}); });
}, },
async readClearOne(item) { async readClearOne(item) {
console.log("item", item) console.log("item", item);
const url = `/message/intelligentMessage/msg/clearOne/?msgId=${item.id}` const url = `/message/intelligentMessage/msg/clearOne/?msgId=${item.id}`;
const {data, code, msg} = await requestPost(url) const { data, code, msg } = await requestPost(url);
if (code == 0) { if (code == 0) {
this.getNoticeData() this.getNoticeData();
} else if (code >= 8000) { } else if (code >= 8000) {
this.$message.error(msg) this.$message.error(msg);
} }
}, },
handleClickNotice(item) { handleClickNotice(item) {
const { msgType, targetId } = item; const { msgType, targetId } = item;
this.readClearOne(item) this.readClearOne(item);
if (msgType == "community_house") { if (msgType == "community_house") {
this.$refs.fastcall.showHouseInfo(targetId); this.$refs.fastcall.showHouseInfo(targetId);
} else if (msgType == "resident_base_info") { } else if (msgType == "resident_base_info") {
@ -405,10 +349,10 @@ export default {
toSearchPage(type, searchKey) { toSearchPage(type, searchKey) {
this.$router.push({ this.$router.push({
path: "/main/shequ-chaxun" path: "/main/shequ-chaxun",
}); });
localStorage.setItem('homeSearchType', type) localStorage.setItem("homeSearchType", type);
localStorage.setItem('homeSearchKey', searchKey) localStorage.setItem("homeSearchKey", searchKey);
}, },
handleClickSearchBtn(str) { handleClickSearchBtn(str) {
@ -417,7 +361,7 @@ export default {
} = this; } = this;
if (str) { if (str) {
this.toSearchPage(type, searchKey); this.toSearchPage(type, searchKey);
return return;
} }
if (!searchKey) return this.$message.error("请输入搜索条件"); if (!searchKey) return this.$message.error("请输入搜索条件");
this.toSearchPage(type, searchKey); this.toSearchPage(type, searchKey);
@ -505,9 +449,7 @@ export default {
code: item.categoryName, code: item.categoryName,
name: resiCategoryMap[item.categoryName] || "", name: resiCategoryMap[item.categoryName] || "",
count: item.categoryCount, count: item.categoryCount,
per: parseInt( per: ((100 * item.categoryCount) / data.resiCount).toFixed(0),
(100 * item.categoryCount) / data.resiCount
),
const: "const", const: "const",
}; };
}); });

Loading…
Cancel
Save