Browse Source

Merge branch 'jw_feature_dev' into dev

feature
mk 2 years ago
parent
commit
f1386e8d13
  1. 19233
      pnpm-lock.yaml
  2. 4
      src/App.vue
  3. BIN
      src/assets/images/manyidu/dn_bg3.png
  4. BIN
      src/assets/images/shuju/overview/go-back.png
  5. 6
      src/assets/scss/dataBoard/overview/index.scss
  6. 19
      src/components/JwTree/nodeWrap.vue
  7. 18
      src/components/Tree/nodeWrap.vue
  8. 35
      src/js/store/modules/chooseArea.js
  9. 12
      src/router/index.js
  10. 4
      src/utils/jwTool.js
  11. 1
      src/views/components/fixed1920.vue
  12. 41
      src/views/dataBoard/cpts/family/components/Breadcrumb/index.vue
  13. 138
      src/views/dataBoard/cpts/family/components/Pagination/index.vue
  14. 59
      src/views/dataBoard/cpts/family/components/Tabs/index.vue
  15. 63
      src/views/dataBoard/cpts/family/components/Title/index.vue
  16. 81
      src/views/dataBoard/cpts/family/index.vue
  17. 189
      src/views/dataBoard/cpts/family/modules/BusinessRecords.vue
  18. 120
      src/views/dataBoard/cpts/family/modules/EnjoyService.vue
  19. 161
      src/views/dataBoard/cpts/family/modules/Family.vue
  20. 148
      src/views/dataBoard/cpts/family/modules/MatterDetails.vue
  21. 67
      src/views/dataBoard/cpts/family/modules/PointsRecord.vue
  22. 130
      src/views/dataBoard/cpts/family/modules/businessTables/community.vue
  23. 137
      src/views/dataBoard/cpts/family/modules/businessTables/complaint.vue
  24. 115
      src/views/dataBoard/cpts/family/modules/businessTables/economize.vue
  25. 119
      src/views/dataBoard/cpts/family/modules/businessTables/give-service.vue
  26. 135
      src/views/dataBoard/cpts/family/modules/businessTables/reporting-events.vue
  27. 122
      src/views/dataBoard/cpts/family/modules/businessTables/resident.vue
  28. 59
      src/views/dataBoard/cpts/map/index.vue
  29. 93
      src/views/dataBoard/cpts/personnel/modules/Family.vue
  30. 15
      src/views/dataBoard/cpts/personnel/modules/MatterDetails.vue
  31. 19
      src/views/dataBoard/organizational/dangTree/index.vue
  32. 21
      src/views/dataBoard/organizational/gridTree/index.vue
  33. 22
      src/views/dataBoard/organizational/jwTree/index.vue
  34. 6
      src/views/dataBoard/organizational/microgrid/components/popDetails.vue
  35. 15
      src/views/dataBoard/organizational/microgrid/components/reportAnEvent.vue
  36. 8
      src/views/dataBoard/organizational/microgrid/index.vue
  37. 38
      src/views/dataBoard/organizational/personalPage/index.vue
  38. 4
      src/views/dataBoard/overview/components/DynamicHumanRoomData.vue
  39. 5
      src/views/dataBoard/overview/components/EventAndFollowUp.vue
  40. 166
      src/views/dataBoard/overview/components/FollowUp.vue
  41. 70
      src/views/dataBoard/overview/components/GridUpdateRanking.vue
  42. 4
      src/views/dataBoard/overview/components/jdtphx.vue
  43. 322
      src/views/dataBoard/overview/index.vue
  44. 1068
      src/views/dataBoard/renfang/resi/class.vue
  45. 747
      src/views/dataBoard/renfang/resi/classNew.vue
  46. 2
      src/views/dataBoard/renfang/resident/index.vue
  47. 4
      src/views/dataBoard/renfang/visualizing/components/dangyuan.vue
  48. 8
      src/views/dataBoard/renfang/visualizing/components/dibaorenyuan.vue
  49. 4
      src/views/dataBoard/renfang/visualizing/components/laonianren.vue
  50. 10
      src/views/dataBoard/renfang/visualizing/components/shiyerenyuan.vue
  51. 4
      src/views/dataBoard/renfang/visualizing/components/zhiyuanzhe.vue
  52. 18
      src/views/dataBoard/satisfactionEval/components/Title/index.vue
  53. 71
      src/views/dataBoard/satisfactionEval/dissatisfied/detail.vue
  54. 197
      src/views/dataBoard/satisfactionEval/dissatisfied/index.vue
  55. 40
      src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/detail.vue
  56. 110
      src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/index.vue
  57. 150
      src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/BusinessRecords.vue
  58. 188
      src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/EnjoyService.vue
  59. 76
      src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/Family.vue
  60. 93
      src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/MatterDetails.vue
  61. 51
      src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/PointsRecord.vue
  62. 4
      src/views/dataBoard/satisfactionEval/modules/EventSituation/index.vue
  63. 53
      src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue
  64. 6
      src/views/dataBoard/satisfactionEval/modules/PotentialPeople/index.vue
  65. 2
      src/views/dataBoard/satisfactionEval/modules/SelfTrend/index.vue
  66. 4
      src/views/dataBoard/satisfactionEval/modules/TypesOfDissatisfaction/index.vue
  67. 98
      src/views/dataBoard/satisfactionEval/potentialPeople/index.vue
  68. 101
      src/views/dataBoard/satisfactionEval/potentialPeople/sjwjj.vue
  69. 102
      src/views/dataBoard/satisfactionEval/potentialPeople/xqwmz.vue
  70. 104
      src/views/dataBoard/satisfactionEval/potentialPeople/yxwxfw.vue
  71. 63
      src/views/dataBoardMain/main-navbar.vue
  72. 15914
      yarn-error.log
  73. 291
      yarn.lock

19233
pnpm-lock.yaml

File diff suppressed because it is too large

4
src/App.vue

@ -42,7 +42,7 @@ export default {
},
computed: {},
mounted() {
console.log("开始::::" + localStorage.getItem("userType"));
// console.log("" + localStorage.getItem("userType"));
if (!localStorage.getItem("userType")) {
localStorage.setItem("userType", "oper");
}
@ -64,7 +64,7 @@ export default {
// eslint-disable-next-line
// debugger
that.setEnv(env);
console.log("屏幕宽度:" + document.documentElement.clientWidth);
// console.log(":" + document.documentElement.clientWidth);
// size
if (document.documentElement.clientHeight < 800) {
// medium

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

BIN
src/assets/images/shuju/overview/go-back.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

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

@ -569,7 +569,6 @@
height: 40px;
line-height: 40px;
font-size: 14px;
font-family: PingFang SC;
font-weight: 400;
color: #A3B9DA;
}
@ -583,11 +582,12 @@
height: 40px;
line-height: 40px;
width: 110px;
height: 14px;
font-size: 14px;
font-family: PingFang SC;
font-weight: 400;
color: #FFFFFF;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.tdbg1 {

19
src/components/JwTree/nodeWrap.vue

@ -5,7 +5,7 @@
<div class="node-box-after">
<div class="nodeBoxTop">
<div :title="getAllName(nodeConfig.organizationName)">{{ spliceNameFun(nodeConfig.organizationName, 8) }}</div>
<div @click="gotoPersonnel" :title="getAllName(nodeConfig.name)">{{ spliceNameFun(nodeConfig.name, 12) }}</div>
<div @click="gotoPersonnel(nodeConfig.resiId)" :title="getAllName(nodeConfig.name)">{{ spliceNameFun(nodeConfig.name, 12) }}</div>
</div>
</div>
</div>
@ -20,17 +20,17 @@
<div v-if="getOnerSixLevelFlag(item)">
<div class="wgdzb">
<div :title="getAllName(item.organizationName)">{{ spliceNameFun(item.organizationName, 8) }}</div>
<div @click="gotoPersonnel" :title="getAllName(item.name)">{{ spliceNameFun(item.name, 12) }}</div>
<div class="gotoDesc" @click="gotoPersonnel(item.resiId)" :title="getAllName(item.name)">{{ spliceNameFun(item.name, 12) }}</div>
</div>
</div>
<div v-if="item.level === 'building_chief'">
<div class="lydxz">
<div :title="getAllName(item.organizationName)">{{ spliceNameFun(item.organizationName, 8) }}</div>
<div @click="gotoPersonnel" :title="getAllName(item.name)">{{ spliceNameFun(item.name, 12) }}</div>
<div class="gotoDesc" @click="gotoPersonnel(item.resiId)" :title="getAllName(item.name)">{{ spliceNameFun(item.name, 12) }}</div>
</div>
</div>
<div v-if="item.level === 'unit_chief' || item.level === 'public_welfare_post'">
<div @click="gotoPersonnel" class="dyzxh" :title="item.name">
<div @click="gotoPersonnel(item.resiId)" class="dyzxh gotoDesc" :title="item.name">
{{ spliceNameFun(item.name, 3) }}
</div>
</div>
@ -79,8 +79,15 @@ export default {
return this.sixLevelArr.includes(item.level);
},
gotoPersonnel() {
this.$router.push("/organizational/orgPersonnel");
gotoPersonnel(id) {
if (id) {
this.$router.push("/organizational/orgPersonnel");
} else {
this.$message({
message: "无法跳转",
type: "error",
});
}
},
},
};

18
src/components/Tree/nodeWrap.vue

@ -6,7 +6,7 @@
<!-- {{ spliceNameFun(nodeConfig, 18) }} -->
<div class="nodeBoxTop">
<div :title="getAllName(nodeConfig.partyOrgName)">{{ spliceNameFun(nodeConfig.partyOrgName, 8) }}</div>
<div @click="gotoPersonnel" :title="getAllName(nodeConfig.principalName)">{{ spliceNameFun(nodeConfig.principalName, 12) }}</div>
<div @click="gotoPersonnel(nodeConfig.resiId)" :title="getAllName(nodeConfig.principalName)">{{ spliceNameFun(nodeConfig.principalName, 12) }}</div>
</div>
</div>
</div>
@ -21,19 +21,19 @@
<div v-if="item.laneLevel >= 2 && item.laneLevel <= 7 && item.partyOrgLevel < 8">
<div class="wgdzb">
<div :title="getAllName(item.partyOrgName)">{{ spliceNameFun(item.partyOrgName, 8) }}</div>
<div class="gotoDesc" @click="gotoPersonnel" :title="getAllName(item.principalName)">{{ spliceNameFun(item.principalName, 12) }}</div>
<div class="gotoDesc" @click="gotoPersonnel(item.resiId)" :title="getAllName(item.principalName)">{{ spliceNameFun(item.principalName, 12) }}</div>
</div>
</div>
<div v-if="item.partyOrgLevel === 8">
<div class="lydxz">
<div :title="getAllName(item.partyOrgName)">{{ spliceNameFun(item.partyOrgName, 8) }}</div>
<div class="gotoDesc" @click="gotoPersonnel" :title="getAllName(item.principalName)">{{ spliceNameFun(item.principalName, 12) }}</div>
<div class="gotoDesc" @click="gotoPersonnel(item.resiId)" :title="getAllName(item.principalName)">{{ spliceNameFun(item.principalName, 12) }}</div>
</div>
</div>
<div v-if="item.partyOrgLevel === 9">
<div class="dyzxh">
<!-- <div :title="getAllName(item.partyOrgName)">{{ spliceNameFun(item.partyOrgName, 3) }}</div> -->
<div class="gotoDesc" @click="gotoPersonnel" :title="getAllName(item.principalName)">{{ spliceNameFun(item.principalName, 3) }}</div>
<div class="gotoDesc" @click="gotoPersonnel(item.resiId)" :title="getAllName(item.principalName)">{{ spliceNameFun(item.principalName, 3) }}</div>
</div>
</div>
<div class="lxjtWrap" v-if="item.partyOrgLevel === 10">
@ -53,7 +53,7 @@
<span>空巢老人</span>
</div> -->
</div>
<div @click="gotoPersonnel" @mouseover="getHomeTypes(item.id)" slot="reference" class="lxjt gotoDesc" :title="item.principalName">
<div @click="gotoPersonnel(item.resiId)" @mouseover="getHomeTypes(item.id)" slot="reference" class="lxjt gotoDesc" :title="item.principalName">
{{ spliceNameFun(item.principalName, 3) }}
<img src="@/assets/images/home/cjr.png" alt="" />
</div>
@ -145,8 +145,12 @@ export default {
});
},
gotoPersonnel() {
this.$router.push("/organizational/orgPersonnel");
gotoPersonnel(id) {
if (id) {
this.$router.push({ path: "/organizational/orgPersonnel", query: { user_id: id } });
} else {
this.$message.error("无法跳转!");
}
},
},
};

35
src/js/store/modules/chooseArea.js

@ -1,25 +1,32 @@
const state = {
chooseName: {
orgId: '',
level: '',
},
chooseName: {
orgId: "",
level: "",
},
realScale: null,
};
const mutations = {
CHOOSE_NAME: (state, name) => {
state.chooseName = name;
},
CHOOSE_NAME: (state, name) => {
state.chooseName = name;
},
CHOOSE_REAL_SCALE: (state, name) => {
state.realScale = name;
},
};
const actions = {
chooseName({commit}, name) {
commit("CHOOSE_NAME", name);
},
chooseName({ commit }, name) {
commit("CHOOSE_NAME", name);
},
chooseScale({ commit }, name) {
commit("CHOOSE_REAL_SCALE", name);
},
};
export default {
namespaced: true,
state,
mutations,
actions,
namespaced: true,
state,
mutations,
actions,
};

12
src/router/index.js

@ -208,6 +208,16 @@ export const dataBoardRoutes = {
isTab: false,
},
},
{
path: "renfang/resi-class-new",
props: true,
component: () => import("@/views/dataBoard/renfang/resi/classNew"),
name: "dataBoard-renfang-resi-class",
meta: {
title: "居民分类列表",
isTab: false,
},
},
{
path: "renfang/resi-analyze",
props: true,
@ -424,7 +434,7 @@ export const dataBoardRoutes = {
{
path: "/organizational/orgPersonnel",
props: true,
component: () => import("@/views/dataBoard/cpts/personnel/index"),
component: () => import("@/views/dataBoard/organizational/personalPage/index"),
name: "OrgPersonnel",
meta: {
title: "居民画像",

4
src/utils/jwTool.js

@ -3,7 +3,9 @@ import Vue from "vue";
const paramsFormat = function (params) {
let strArray = []
for(let key in params) {
strArray.push(key+'='+params[key])
if(params[key]) {
strArray.push(key+'='+params[key])
}
}
return strArray.join('&')
}

1
src/views/components/fixed1920.vue

@ -24,6 +24,7 @@ export default {
const top = (clientHeight - height) / 2;
const left = (clientWidth - 1920) / 2;
this.$store.state.fixed1920.height = height;
this.$store.dispatch("chooseArea/chooseScale", scale);
return {
transform: `scale(${scale})`,
height: `${height}px`,

41
src/views/dataBoard/cpts/family/components/Breadcrumb/index.vue

@ -0,0 +1,41 @@
<template>
<div>
<div class="breadcrumb">
<el-breadcrumb separator="/">
<el-breadcrumb-item v-for="(item,index) in list" :to="item.path" :key="index">{{ item.name }}</el-breadcrumb-item>
</el-breadcrumb>
</div>
</div>
</template>
<script>
export default {
name: "Breadcrumb",
props: {
list: {
type: Array,
default: () => []
}
}
}
</script>
<style scoped lang="scss">
.breadcrumb {
background: url("@/assets/images/manyidu/breadcrumb_bg.png") no-repeat left top;
height: 50px;
color: #fff;
padding-left: 20px;
display: flex;
align-items: center;
/deep/ .el-breadcrumb__inner {
color: #fff!important;
&.is-link {
color: #A3B9DA!important;
}
}
}
</style>

138
src/views/dataBoard/cpts/family/components/Pagination/index.vue

@ -0,0 +1,138 @@
<template>
<div :class="{'hidden':hidden}" class="pagination-container">
<el-pagination
:background="background"
:current-page.sync="currentPage"
:page-size.sync="pageSize"
:layout="layout"
:page-sizes="pageSizes"
:pager-count="pagerCount"
:total="total"
v-bind="$attrs"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
</template>
<script>
export default {
name: 'Pagination',
props: {
total: {
required: true,
type: Number
},
page: {
type: Number,
default: 1
},
limit: {
type: Number,
default: 20
},
pageSizes: {
type: Array,
default() {
return [10, 20, 30, 50]
}
},
// 5
pagerCount: {
type: Number,
default: document.body.clientWidth < 992 ? 5 : 7
},
layout: {
type: String,
default: 'total, prev, pager, next, jumper, sizes'
},
background: {
type: Boolean,
default: true
},
autoScroll: {
type: Boolean,
default: true
},
hidden: {
type: Boolean,
default: false
}
},
data() {
return {
};
},
computed: {
currentPage: {
get() {
return this.page
},
set(val) {
this.$emit('update:page', val)
}
},
pageSize: {
get() {
return this.limit
},
set(val) {
this.$emit('update:limit', val)
}
}
},
methods: {
handleSizeChange(val) {
if (this.currentPage * val > this.total) {
this.currentPage = 1
}
this.$emit('pagination', { page: this.currentPage, limit: val })
},
handleCurrentChange(val) {
this.$emit('pagination', { page: val, limit: this.pageSize })
}
}
}
</script>
<style scoped lang="scss">
.pagination-container {
padding: 32px 16px;
display: flex;
justify-content: flex-end;
position: relative;
/deep/ .el-pagination__total {
position: absolute;
left: 16px;
top: 32px;
color: #A3B9DA;
}
/deep/ .el-pagination__jump {
color: #A3B9DA;
}
/deep/ .el-pagination.is-background .btn-next,
/deep/ .el-pagination.is-background .btn-prev,
/deep/ .el-pagination.is-background .el-pager li {
background: rgba(0,23,66,0.3);
border: 1px solid #126AC5;
border-radius: 2px;
color: #A3B9DA;
}
/deep/ .el-input__inner {
background: rgba(0,23,66,0.3);
border: 1px solid #126AC5;
border-radius: 2px;
color: #A3B9DA;
}
/deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
background: #1A95FF;
border-radius: 2px;
color: #FFFFFF!important;
}
}
.pagination-container.hidden {
display: none;
}
</style>

59
src/views/dataBoard/cpts/family/components/Tabs/index.vue

@ -0,0 +1,59 @@
<template>
<div class="tabs">
<div class="tab" :class="value2 === item.value?'cur':''" v-for="(item,index) in list" @click="tabClick(index)" :key="index">
{{item.label}}
</div>
</div>
</template>
<script>
export default {
name: "Tabs",
props: {
list:{
type: Array,
default: () => []
},
value:{
type: [String,Number],
default: ''
}
},
data() {
return {
value2: this.value,
}
},
mounted() {
this.value2 = this.value
},
methods: {
tabClick(index) {
this.value2 = this.list[index].value
this.$emit('changeVal',this.value)
this.$emit('changeLabel',this.list[index].label)
}
}
}
</script>
<style scoped lang="scss">
.tabs {
display: flex;
.tab {
cursor: pointer;
padding: 10px 11px;
font-size: 14px;
font-weight: 400;
color: #96B1CE;
min-width: 120px;
background: url("@/assets/images/manyidu/tab.png") repeat-x top left;
margin-right: 4px;
text-align: center;
&.cur {
color: #FFFFFF;
background: url("@/assets/images/manyidu/tab_cur.png") repeat-x top left;
}
}
}
</style>

63
src/views/dataBoard/cpts/family/components/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>
</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>

81
src/views/dataBoard/cpts/family/index.vue

@ -0,0 +1,81 @@
<template>
<div>
<el-row>
<el-col :span="10">
<data-title title="家庭标签">
</data-title>
<MatterDetails />
<data-title title="家庭关系" />
<Family @setJuminData="setJuminData" />
</el-col>
<el-col :span="13" :offset="1">
<data-title title="居民各项业务记录" />
<BusinessRecords :juminArr="juminArr" />
<data-title title="人口变化情况" />
<EnjoyService />
</el-col>
</el-row>
<resi-details
@close="popupShow = false"
:resi-id="resId"
v-if="popupShow"
/>
</div>
</template>
<script>
import dataTitle from "@/views/dataBoard/renfang/visualizing/components/dataTitle.vue";
import MatterDetails from "./modules/MatterDetails";
import Family from "./modules/Family";
import BusinessRecords from "./modules/BusinessRecords";
import EnjoyService from "./modules/EnjoyService";
import PointsRecord from "./modules/PointsRecord";
import resiDetails from "@/views/dataBoard/cpts/resi-details";
export default {
name: "OrgPersonnel",
components: {
MatterDetails,
Family,
BusinessRecords,
EnjoyService,
PointsRecord,
dataTitle,
resiDetails,
},
data() {
return {
popupShow: false,
resId: "",
juminArr: [],
};
},
mounted() {
const query = this.$route.query;
this.resId = query.user_id;
},
methods: {
setJuminData(arr) {
this.juminArr = arr;
},
},
};
</script>
<style scoped lang="scss">
.sub-title {
background: url("@/assets/images/manyidu/icon_fk.png") no-repeat left center;
font-size: 18px;
font-weight: 500;
color: #ffffff;
line-height: 22px;
padding-left: 26px;
margin-bottom: 20px;
}
.breadcrumb {
margin-bottom: 25px;
}
a:hover {
cursor: pointer;
}
</style>

189
src/views/dataBoard/cpts/family/modules/BusinessRecords.vue

@ -0,0 +1,189 @@
<template>
<div class="business-records">
<Tabs v-model="type" :list="typeList" @changeVal="typeChange" />
<complaint
@changeTotal="changeTotal"
:juminArr="juminArr"
v-show="type == 1"
/>
<economize
@changeTotal="changeTotal"
:juminArr="juminArr"
v-show="type == 2"
/>
<community
@changeTotal="changeTotal"
:juminArr="juminArr"
v-show="type == 3"
/>
<reporting-events
@changeTotal="changeTotal"
:juminArr="juminArr"
v-show="type == 4"
/>
<resident
@changeTotal="changeTotal"
:juminArr="juminArr"
v-show="type == 5"
/>
<giveService
@changeTotal="changeTotal"
:juminArr="juminArr"
v-show="type == 6"
/>
</div>
</template>
<script>
import Tabs from "@/views/dataBoard/satisfactionEval/components/Tabs/index.vue";
import complaint from "./businessTables/complaint.vue";
import economize from "./businessTables/economize.vue";
import community from "./businessTables/community.vue";
import reportingEvents from "./businessTables/reporting-events.vue";
import resident from "./businessTables/resident.vue";
import giveService from "./businessTables/give-service.vue";
export default {
name: "BusinessRecords",
props: {
juminArr: {
type: Array,
default: () => [],
},
},
components: {
Tabs,
complaint,
reportingEvents,
economize,
community,
resident,
giveService,
},
data() {
return {
type: 1,
typeList: [
{
label: "12345投诉",
value: 1,
},
{
label: "省满意度调查",
value: 2,
},
{
label: "社区满意度自查",
value: 3,
},
{
label: "上报事件",
value: 4,
},
{
label: "居民需求",
value: 5,
},
{
label: "社区服务",
value: 6,
},
],
typeLists: [
{
label: "12345投诉",
value: 1,
},
{
label: "省满意度调查",
value: 2,
},
{
label: "社区满意度自查",
value: 3,
},
{
label: "上报事件",
value: 4,
},
{
label: "居民需求",
value: 5,
},
{
label: "社区服务",
value: 6,
},
],
};
},
created() {},
methods: {
typeChange(e) {
this.type = e;
},
changeTotal(item) {
this.typeList[item.name].label = item.total
? `${this.typeLists[item.name].label}${item.total}`
: this.typeLists[item.name].label;
},
},
};
</script>
<style scoped lang="scss">
.business-records {
margin-top: 12px;
margin-bottom: 25px;
}
.table {
/deep/ .el-table td,
/deep/ .el-table th,
/deep/ .el-table tr {
padding: 14px !important;
border: none !important;
min-height: 52px;
}
/deep/ .el-table td,
/deep/ .el-table th {
background: none !important;
}
/deep/ .el-table td {
font-size: 14px;
font-weight: 400;
color: #ffffff;
text-shadow: 1px 2px 4px rgba(10, 32, 60, 0.51);
}
/deep/ .el-table tr {
background: none;
&:hover {
background-color: rgba(26, 149, 255, 0.3) !important;
}
}
/deep/ .el-table__body-wrapper tr:nth-of-type(odd) {
background: rgba(14, 56, 115, 0.4);
}
/deep/ .el-table {
background: none !important;
&:before {
background: none;
}
}
/deep/ .el-table__header-wrapper tr {
color: #a3b9da !important;
font-size: 14px;
font-weight: 400;
opacity: 0.76;
background: none;
&:hover {
background: none !important;
}
}
/deep/ .el-table__header-wrapper {
background: none !important;
}
}
</style>

120
src/views/dataBoard/cpts/family/modules/EnjoyService.vue

@ -0,0 +1,120 @@
<template>
<div class="table">
<el-table :data="list" max-height="390px" height="390px">
<el-table-column label="序号" type="index" width="80" />
<el-table-column label="变更人" prop="resiName" width="140" />
<el-table-column label="变更类型" prop="typeName" width="" />
<el-table-column label="变更前" prop="beforeChange" width="120" />
<el-table-column label="变更后" prop="afterChange" width="120" />
<el-table-column label="操作人" prop="operatorName" width="120" />
<el-table-column label="调整时间" prop="changeTime" width="190" />
</el-table>
</div>
</template>
<script>
export default {
name: "community",
props: {
juminArr: {
type: Array,
default: () => [],
},
},
data() {
return {
houseId: "",
list: [],
total: 0,
};
},
created() {
const query = this.$route.query;
this.houseId = query.houseId;
this.getList();
},
methods: {
getList() {
// (-2-1访0访/访1访)
const completeFlags = {
"-2": "未知",
"-1": "不接受回访",
0: "接受回访/待回访",
1: "已回访",
};
//
this.$http
.get(
"/actual/base/peopleRoomOverview/houseResidentChangeRecord?houseId=" +
this.houseId
)
.then(({ data: res }) => {
console.log('res::',res);
this.list = res.data.map((item) => {
return {
...item,
completeFlag: completeFlags[item.completeFlag],
};
});
this.total = res.data.length;
});
},
},
};
</script>
<style scoped lang="scss">
.business-records {
margin-bottom: 25px;
}
.table {
/deep/ .el-table td,
/deep/ .el-table th,
/deep/ .el-table tr {
padding: 14px !important;
border: none !important;
min-height: 52px;
}
/deep/ .el-table td,
/deep/ .el-table th {
background: none !important;
}
/deep/ .el-table td {
font-size: 14px;
font-weight: 400;
color: #ffffff;
text-shadow: 1px 2px 4px rgba(10, 32, 60, 0.51);
}
/deep/ .el-table tr {
background: none;
&:hover {
background-color: rgba(26, 149, 255, 0.3) !important;
}
}
/deep/ .el-table__body-wrapper tr:nth-of-type(odd) {
background: rgba(14, 56, 115, 0.4);
}
/deep/ .el-table {
background: none !important;
&:before {
background: none;
}
}
/deep/ .el-table__header-wrapper tr {
color: #a3b9da !important;
font-size: 14px;
font-weight: 400;
opacity: 0.76;
background: none;
&:hover {
background: none !important;
}
}
/deep/ .el-table__header-wrapper {
background: none !important;
}
}
</style>

161
src/views/dataBoard/cpts/family/modules/Family.vue

@ -0,0 +1,161 @@
<template>
<div class="family">
<div class="tag" v-for="item in data" :key="item.id">
<div>
{{ item.name }}
<span v-if="item.houseHolderRel"
>({{ item.houseHolderRel == "本人" ? "户主" : item.houseHolderRel }})
</span>
</div>
<div v-if="item.householdSituation">
入户状态{{ item.householdSituation }}
</div>
<div>居民分类{{ getType(item.classificationOfInhabitantsList) }}</div>
</div>
<div style="padding-top: 220px; margin-left: 148px">
<div class="user-name">{{ hzData.name }}</div>
<div class="user-gx">户主</div>
</div>
</div>
</template>
<script>
export default {
name: "Family",
data() {
return {
data: [],
queryParam: {
type: "1",
},
info: {},
};
},
computed: {
getType() {
return (arr) => {
if (arr.length > 0) {
let txt = "";
arr.forEach((item, index) => {
if (arr.length == index + 1) {
txt = txt + item;
} else {
txt = txt + item + ",";
}
});
return txt;
} else {
return "暂无";
}
};
},
},
created() {
const query = this.$route.query;
this.queryParam.resid = query.houseId;
this.getDatas();
},
methods: {
getDatas() {
this.$http
.post(
"/actual/base/peopleRoomOverview/getFamilyRelationshipList?type=1&resid=" +
this.queryParam.resid
)
.then(({ data: res }) => {
const data = res.data;
this.data = data;
this.hzData = data.filter((item) => item.houseHolderRel == "本人")[0];
this.$emit("setJuminData", data);
});
},
// getUserInfo() {
// this.$http
// .post(
// "/actual/base/peopleRoomOverview/getPersonalFile?resid=" +
// this.queryParam.resid,
// this.queryParam
// )
// .then(({ data: res }) => {
// this.info = res.data;
// });
// },
},
};
</script>
<style scoped lang="scss">
.family {
width: 464px;
height: 340px;
background: url("@/assets/images/manyidu/gx_bg.png") no-repeat center;
position: relative;
margin: 40px auto;
}
.tag {
font-size: 14px;
font-weight: 400;
color: #ffffff;
line-height: 22px;
padding: 18px 24px;
box-sizing: border-box;
position: absolute;
background: url("@/assets/images/manyidu/gx_big.png") no-repeat center;
background-size: 100% 100%;
width: 180px;
min-height: 80px;
&:nth-of-type(1) {
left: -24px;
top: -24px;
}
&:nth-of-type(2) {
right: -24px;
top: -24px;
}
&:nth-of-type(3) {
left: -24px;
bottom: -20px;
}
&:nth-of-type(4) {
right: -24px;
top: 274px;
}
&:nth-of-type(5) {
left: -94px;
top: 74px;
}
&:nth-of-type(6) {
right: -94px;
top: 74px;
}
&:nth-of-type(7) {
left: -124px;
top: 174px;
}
&:nth-of-type(8) {
right: -124px;
top: 174px;
}
}
.user-name {
width: 174px;
text-align: center;
height: 17px;
font-size: 18px;
font-family: PingFang SC;
font-weight: bold;
color: #ffffff;
line-height: 22px;
margin-top: -12px;
}
.user-gx {
width: 174px;
text-align: center;
height: 17px;
font-size: 16px;
font-family: PingFang SC;
font-weight: bold;
color: #ffffff;
line-height: 32px;
}
</style>

148
src/views/dataBoard/cpts/family/modules/MatterDetails.vue

@ -0,0 +1,148 @@
<template>
<div class="matter-details">
<div class="user-img">
<!-- <img src="@/assets/images/manyidu/dn_bg1.png" alt="" /> -->
<div class="user-name">{{ data.name }}</div>
</div>
<div class="tags">
<div
:class="`tag ${index % 2 == 0 ? 'small' : ''} ${
item.red == '0' ? '' : 'red'
}`"
v-for="(item, index) in data"
:key="item.tagName"
>
{{ item.tagName }}
</div>
</div>
<div class="jtxxdz">四季景园1号楼1单元101</div>
</div>
</template>
<script>
export default {
name: "MatterDetails",
data() {
return {
data: [],
queryParams: {},
genderArr: ["未知", "男", "女"],
};
},
created() {
const query = this.$route.query;
this.queryParams.houseId = query.houseId;
this.getDatas();
},
methods: {
getDatas() {
this.$http
.get(
"/actual/base/peopleRoomOverview/getHouseTag?houseId=" +
this.queryParams.houseId
)
.then(({ data: res }) => {
this.data = res.data;
});
},
},
};
</script>
<style scoped lang="scss">
.jtxxdz {
width: 100%;
text-align: center;
height: 14px;
font-size: 14px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff !important;
line-height: 32px;
position: absolute;
top:370px;
left: 0;
}
.matter-details {
width: 607px;
height: 372px;
background: url("@/assets/images/manyidu/dn_bg3.png") no-repeat center bottom;
background-size: 454px 230px;
position: relative;
margin: 12px auto 60px;
}
.user-img {
position: absolute;
left: calc(50% - 87px);
top: calc(50% - 37px);
}
.tag {
position: absolute;
background: url("@/assets/images/manyidu/dn_big.png") center no-repeat;
width: 108px;
height: 107px;
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
font-weight: 400;
color: #ffffff;
line-height: 16px;
box-sizing: border-box;
padding: 24px;
text-align: center;
word-break: break-all;
&.small {
width: 89px;
height: 89px;
background: url("@/assets/images/manyidu/dn_small.png") center no-repeat;
padding: 16px;
}
&.red {
background: url("@/assets/images/manyidu/dn_red.png") center no-repeat;
color: #fe0000;
}
&:nth-of-type(1) {
left: 0;
bottom: 15px;
}
&:nth-of-type(2) {
left: 42px;
bottom: 185px;
}
&:nth-of-type(3) {
left: 194px;
bottom: 245px;
}
&:nth-of-type(4) {
left: 384px;
bottom: 240px;
}
&:nth-of-type(5) {
left: 499px;
bottom: 157px;
}
&:nth-of-type(6) {
left: 453px;
bottom: 10px;
}
}
.user-name {
width: 174px;
text-align: center;
height: 17px;
font-size: 18px;
font-family: PingFang SC;
font-weight: bold;
color: #ffffff;
line-height: 22px;
margin-top: -12px;
}
</style>

67
src/views/dataBoard/cpts/family/modules/PointsRecord.vue

@ -0,0 +1,67 @@
<template>
<div>
<div class="enjoy-service">
<div class="enjoy-service-item" v-for="(item, index) in data">
<div class="num">+{{ item.classificationNum }}</div>
<div class="info">
<div class="title">{{ item.classification }}</div>
<div class="time">{{ item.recordTime }}</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: "PointsRecord",
data() {
return {
data:[],
};
},
created() {
this.getData();
},
methods: {
getData() {
this.$http
.get("/actual/base/peopleRoomOverview/recorHistory")
.then(({ data: res }) => {
this.data = res.data;
});
},
},
};
</script>
<style scoped lang="scss">
.enjoy-service {
padding-left: 26px;
margin-top: 12px;
}
.enjoy-service-item {
color: #ffffff;
display: flex;
padding: 14px 16px 14px;
margin-bottom: 8px;
background: #07266b;
.num {
font-size: 24px;
font-weight: 500;
line-height: 22px;
}
.info {
font-size: 14px;
margin-left: 40px;
.title {
font-weight: 500;
margin-bottom: 10px;
}
.time {
font-weight: 400;
color: #a3b9da;
}
}
}
</style>

130
src/views/dataBoard/cpts/family/modules/businessTables/community.vue

@ -0,0 +1,130 @@
<template>
<div class="table">
<el-table :data="list" max-height="363px" height="363px">
<el-table-column label="序号" type="index" width="80" />
<el-table-column label="不满意事项类型" prop="scope" width="190" />
<el-table-column label="不满意事项描述" prop="problemDesc" width="" />
<el-table-column label="办理状态" prop="completeFlag" width="120" />
<el-table-column label="是否回访" prop="isReturn" width="120" />
<el-table-column label="操作" width="90" align="center">
<template slot-scope="data">
<el-button type="text" @click="handleView">查看</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
export default {
name: "community",
props: {
juminArr: {
type: Array,
default: () => [],
},
},
data() {
return {
queryParams: {
residList: [],
},
list: [],
total: 0,
};
},
watch: {
juminArr(newVal, oldVal) {
if (newVal.length > 0) {
this.queryParams.residList = newVal.map((item) => {
return item.id;
});
this.getList();
}
},
},
methods: {
getList() {
// (-2-1访0访/访1访)
const completeFlags = {
"-2": "未知",
"-1": "不接受回访",
0: "接受回访/待回访",
1: "已回访",
};
//
this.$http
.post(
"/actual/base/peopleRoomOverview/communitySatisfactionPageList",
this.queryParams
)
.then(({ data: res }) => {
this.list = res.data.map((item) => {
return {
...item,
completeFlag: completeFlags[item.completeFlag],
};
});
this.total = res.data.length;
this.$emit("changeTotal", { name: 2, total: this.total });
});
},
},
};
</script>
<style scoped lang="scss">
.business-records {
margin-bottom: 25px;
}
.table {
/deep/ .el-table td,
/deep/ .el-table th,
/deep/ .el-table tr {
padding: 14px !important;
border: none !important;
min-height: 52px;
}
/deep/ .el-table td,
/deep/ .el-table th {
background: none !important;
}
/deep/ .el-table td {
font-size: 14px;
font-weight: 400;
color: #ffffff;
text-shadow: 1px 2px 4px rgba(10, 32, 60, 0.51);
}
/deep/ .el-table tr {
background: none;
&:hover {
background-color: rgba(26, 149, 255, 0.3) !important;
}
}
/deep/ .el-table__body-wrapper tr:nth-of-type(odd) {
background: rgba(14, 56, 115, 0.4);
}
/deep/ .el-table {
background: none !important;
&:before {
background: none;
}
}
/deep/ .el-table__header-wrapper tr {
color: #a3b9da !important;
font-size: 14px;
font-weight: 400;
opacity: 0.76;
background: none;
&:hover {
background: none !important;
}
}
/deep/ .el-table__header-wrapper {
background: none !important;
}
}
</style>

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

@ -0,0 +1,137 @@
<template>
<div class="table">
<el-table :data="list" max-height="363px" height="363px">
<el-table-column label="序号" type="index" width="80" />
<el-table-column label="事件类型" prop="categorycode" width="" />
<el-table-column label="事件描述" prop="eventcontent" width="" />
<el-table-column label="办理状态" prop="status" width="" />
<el-table-column label="接收时间" prop="happentime" width="180" />
<el-table-column label="标记" prop="marktype" width="" />
<el-table-column label="操作" width="90" align="center">
<template slot-scope="data">
<el-button type="text" @click="handleView">查看</el-button>
</template>
</el-table-column>
</el-table>
<Pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
export default {
name: "complaint",
props: {
juminArr: {
type: Array,
default: () => [],
},
},
data() {
return {
queryParams: {
pageNo: 1,
pageSize: 10,
eventType: "3",
residList: [],
},
list: [],
total: 0,
};
},
watch: {
juminArr(newVal, oldVal) {
if (newVal.length > 0) {
this.queryParams.residList = newVal.map((item) => {
return item.id;
});
this.getList();
}
},
},
methods: {
getList() {
//
const statusArr = {
processing: "处理中",
closed_case: "已办结",
};
const marktypes = ["普通事件", "难点读点", "矛盾纠纷", "自身问题"];
this.$http
.post("/actual/base/peopleRoomOverview/eventPageList", this.queryParams)
.then(({ data: res }) => {
this.list = res.data.list.map((item) => {
return {
...item,
status: item.status?statusArr[item.status]:null,
marktype: marktypes[item.marktype],
};
});
this.total = res.data.total;
this.$emit("changeTotal", { name: 0, total: this.total });
});
},
},
};
</script>
<style scoped lang="scss">
.business-records {
margin-bottom: 25px;
}
.table {
/deep/ .el-table td,
/deep/ .el-table th,
/deep/ .el-table tr {
padding: 14px !important;
border: none !important;
min-height: 52px;
}
/deep/ .el-table td,
/deep/ .el-table th {
background: none !important;
}
/deep/ .el-table td {
font-size: 14px;
font-weight: 400;
color: #ffffff;
text-shadow: 1px 2px 4px rgba(10, 32, 60, 0.51);
}
/deep/ .el-table tr {
background: none;
&:hover {
background-color: rgba(26, 149, 255, 0.3) !important;
}
}
/deep/ .el-table__body-wrapper tr:nth-of-type(odd) {
background: rgba(14, 56, 115, 0.4);
}
/deep/ .el-table {
background: none !important;
&:before {
background: none;
}
}
/deep/ .el-table__header-wrapper tr {
color: #a3b9da !important;
font-size: 14px;
font-weight: 400;
opacity: 0.76;
background: none;
&:hover {
background: none !important;
}
}
/deep/ .el-table__header-wrapper {
background: none !important;
}
}
</style>

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

@ -0,0 +1,115 @@
<template>
<div class="table">
<el-table :data="list" max-height="363px" height="363px">
<el-table-column label="序号" type="index" width="80" />
<el-table-column label="不满意事项类型" prop="scope" width="190" />
<el-table-column label="不满意事项描述" prop="problemDesc" width="" />
<el-table-column label="办理状态" prop="completeFlag" width="120" />
<el-table-column label="是否回访" prop="isReturn" width="120" />
<el-table-column label="操作" width="90" align="center">
<template slot-scope="data">
<el-button type="text" @click="handleView">查看</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
export default {
name: "economize",
props: {
juminArr: {
type: Array,
default: () => [],
},
},
data() {
return {
queryParams: {
residList: [],
},
list: [],
total: 0,
};
},
watch: {
juminArr(newVal, oldVal) {
if (newVal.length > 0) {
this.queryParams.residList = newVal.map((item) => {
return item.id;
});
this.getList();
}
},
},
methods: {
getList() {
//
this.$http
.post("/actual/base/peopleRoomOverview/provincialSatisfactionPageList", this.queryParams)
.then(({ data: res }) => {
this.list = res.data;
this.total = res.data.length;
this.$emit("changeTotal", { name: 1, total: this.total });
});
},
},
};
</script>
<style scoped lang="scss">
.business-records {
margin-bottom: 25px;
}
.table {
/deep/ .el-table td,
/deep/ .el-table th,
/deep/ .el-table tr {
padding: 14px !important;
border: none !important;
min-height: 52px;
}
/deep/ .el-table td,
/deep/ .el-table th {
background: none !important;
}
/deep/ .el-table td {
font-size: 14px;
font-weight: 400;
color: #ffffff;
text-shadow: 1px 2px 4px rgba(10, 32, 60, 0.51);
}
/deep/ .el-table tr {
background: none;
&:hover {
background-color: rgba(26, 149, 255, 0.3) !important;
}
}
/deep/ .el-table__body-wrapper tr:nth-of-type(odd) {
background: rgba(14, 56, 115, 0.4);
}
/deep/ .el-table {
background: none !important;
&:before {
background: none;
}
}
/deep/ .el-table__header-wrapper tr {
color: #a3b9da !important;
font-size: 14px;
font-weight: 400;
opacity: 0.76;
background: none;
&:hover {
background: none !important;
}
}
/deep/ .el-table__header-wrapper {
background: none !important;
}
}
</style>

119
src/views/dataBoard/cpts/family/modules/businessTables/give-service.vue

@ -0,0 +1,119 @@
<template>
<div class="table">
<el-table :data="list" max-height="363px" height="363px">
<el-table-column label="序号" type="index" width="80" />
<el-table-column label="需求类型" prop="serviceCategoryKey" width="" />
<el-table-column label="事件描述" prop="serviceName" width="" />
<el-table-column label="服务情况" prop="state" width="" />
<el-table-column label="创建时间" prop="serviceTimeStart" width="180" />
<el-table-column label="操作" width="90" align="center">
<template slot-scope="data">
<el-button type="text" @click="handleView">查看</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
export default {
name: "give-service",
props: {
juminArr: {
type: Array,
default: () => [],
},
},
data() {
return {
queryParams: {
residList: [],
},
list: [],
total: 0,
};
},
watch: {
juminArr(newVal, oldVal) {
if (newVal.length > 0) {
this.queryParams.residList = newVal.map((item) => {
return item.id;
});
this.getList();
}
},
},
methods: {
getList() {
//
this.$http
.post("/actual/base/peopleRoomOverview/communityServicePageList", this.queryParams)
.then(({ data: res }) => {
this.list = res.data.map((item) => {
return {
...item,
};
});
this.total = res.data.length;
this.$emit("changeTotal", { name: 5, total: this.total });
});
},
},
};
</script>
<style scoped lang="scss">
.business-records {
margin-bottom: 25px;
}
.table {
/deep/ .el-table td,
/deep/ .el-table th,
/deep/ .el-table tr {
padding: 14px !important;
border: none !important;
min-height: 52px;
}
/deep/ .el-table td,
/deep/ .el-table th {
background: none !important;
}
/deep/ .el-table td {
font-size: 14px;
font-weight: 400;
color: #ffffff;
text-shadow: 1px 2px 4px rgba(10, 32, 60, 0.51);
}
/deep/ .el-table tr {
background: none;
&:hover {
background-color: rgba(26, 149, 255, 0.3) !important;
}
}
/deep/ .el-table__body-wrapper tr:nth-of-type(odd) {
background: rgba(14, 56, 115, 0.4);
}
/deep/ .el-table {
background: none !important;
&:before {
background: none;
}
}
/deep/ .el-table__header-wrapper tr {
color: #a3b9da !important;
font-size: 14px;
font-weight: 400;
opacity: 0.76;
background: none;
&:hover {
background: none !important;
}
}
/deep/ .el-table__header-wrapper {
background: none !important;
}
}
</style>

135
src/views/dataBoard/cpts/family/modules/businessTables/reporting-events.vue

@ -0,0 +1,135 @@
<template>
<div class="table">
<el-table :data="list" max-height="363px" height="363px">
<el-table-column label="序号" type="index" width="80" />
<el-table-column label="事件类型" prop="categorycode" width="" />
<el-table-column label="事件描述" prop="eventcontent" width="" />
<el-table-column label="办理状态" prop="status" width="" />
<el-table-column label="接收时间" prop="happentime" width="180" />
<el-table-column label="操作" width="90" align="center">
<template slot-scope="data">
<el-button type="text" @click="handleView">查看</el-button>
</template>
</el-table-column>
</el-table>
<Pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
export default {
name: "reporting-events",
props: {
juminArr: {
type: Array,
default: () => [],
},
},
data() {
return {
queryParams: {
pageNo: 1,
pageSize: 10,
residList: [],
},
list: [],
total: 0,
};
},
watch: {
juminArr(newVal, oldVal) {
if (newVal.length > 0) {
this.queryParams.residList = newVal.map((item) => {
return item.id;
});
this.getList();
}
},
},
methods: {
getList() {
//
const statusArr = {
processing: "处理中",
closed_case: "已办结",
};
const marktypes = ["普通事件", "难点读点", "矛盾纠纷", "自身问题"];
this.$http
.post("/actual/base/peopleRoomOverview/eventPageList", this.queryParams)
.then(({ data: res }) => {
this.list = res.data.list.map((item) => {
return {
...item,
status: item.status?statusArr[item.status]:null,
marktype: marktypes[item.marktype],
};
});
this.total = res.data.total;
this.$emit("changeTotal", { name: 3, total: this.total });
});
},
},
};
</script>
<style scoped lang="scss">
.business-records {
margin-bottom: 25px;
}
.table {
/deep/ .el-table td,
/deep/ .el-table th,
/deep/ .el-table tr {
padding: 14px !important;
border: none !important;
min-height: 52px;
}
/deep/ .el-table td,
/deep/ .el-table th {
background: none !important;
}
/deep/ .el-table td {
font-size: 14px;
font-weight: 400;
color: #ffffff;
text-shadow: 1px 2px 4px rgba(10, 32, 60, 0.51);
}
/deep/ .el-table tr {
background: none;
&:hover {
background-color: rgba(26, 149, 255, 0.3) !important;
}
}
/deep/ .el-table__body-wrapper tr:nth-of-type(odd) {
background: rgba(14, 56, 115, 0.4);
}
/deep/ .el-table {
background: none !important;
&:before {
background: none;
}
}
/deep/ .el-table__header-wrapper tr {
color: #a3b9da !important;
font-size: 14px;
font-weight: 400;
opacity: 0.76;
background: none;
&:hover {
background: none !important;
}
}
/deep/ .el-table__header-wrapper {
background: none !important;
}
}
</style>

122
src/views/dataBoard/cpts/family/modules/businessTables/resident.vue

@ -0,0 +1,122 @@
<template>
<div class="table">
<el-table :data="list" max-height="363px" height="363px">
<el-table-column label="序号" type="index" width="80" />
<el-table-column label="需求类型" prop="categoryName" width="" />
<el-table-column label="需求描述" prop="content" width="" />
<el-table-column label="办理情况" prop="status" width="" />
<el-table-column label="上报时间" prop="reportTime" width="180" />
<el-table-column label="操作" width="90" align="center">
<template slot-scope="data">
<el-button type="text" @click="handleView">查看</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
export default {
name: "complaint",
props: {
juminArr: {
type: Array,
default: () => [],
},
},
data() {
return {
queryParams: {
residList: [],
},
list: [],
total: 0,
};
},
watch: {
juminArr(newVal, oldVal) {
if (newVal.length > 0) {
this.queryParams.residList = newVal.map((item) => {
return item.id;
});
this.getList();
}
},
},
methods: {
getList() {
//
this.$http
.post(
"/actual/base/peopleRoomOverview/demandOfResidentsPageList",
this.queryParams
)
.then(({ data: res }) => {
this.list = res.data.map((item) => {
return {
...item,
};
});
this.total = res.data.length;
this.$emit("changeTotal", { name: 4, total: this.total });
});
},
},
};
</script>
<style scoped lang="scss">
.business-records {
margin-bottom: 25px;
}
.table {
/deep/ .el-table td,
/deep/ .el-table th,
/deep/ .el-table tr {
padding: 14px !important;
border: none !important;
min-height: 52px;
}
/deep/ .el-table td,
/deep/ .el-table th {
background: none !important;
}
/deep/ .el-table td {
font-size: 14px;
font-weight: 400;
color: #ffffff;
text-shadow: 1px 2px 4px rgba(10, 32, 60, 0.51);
}
/deep/ .el-table tr {
background: none;
&:hover {
background-color: rgba(26, 149, 255, 0.3) !important;
}
}
/deep/ .el-table__body-wrapper tr:nth-of-type(odd) {
background: rgba(14, 56, 115, 0.4);
}
/deep/ .el-table {
background: none !important;
&:before {
background: none;
}
}
/deep/ .el-table__header-wrapper tr {
color: #a3b9da !important;
font-size: 14px;
font-weight: 400;
opacity: 0.76;
background: none;
&:hover {
background: none !important;
}
}
/deep/ .el-table__header-wrapper {
background: none !important;
}
}
</style>

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

@ -1,9 +1,9 @@
<template>
<div class="m-map" :class="{ 'z-td': mapType == 'td' }">
<div id="map"></div>
<div id="map" :style="{ transform: `scale(${zoom})` }"></div>
<div class="btn" v-if="mapStyleType == 'light'" v-show="false" @click="shiftMapStyle('dark')">切换深色模式</div>
<div class="btn" v-show="false" v-else @click="shiftMapStyle('light')">切换浅色模式</div>
<!-- :style="{ transform: `scale(${zoom})` }" -->
<cpt-popup ref="popup" @clickListItem="handleClickDotListItem" @operate="handleClickDotBtn" />
</div>
</template>
@ -39,7 +39,7 @@ export default {
data() {
return {
mapType,
zoom: 0,
mapStyleType: localStorage.getItem("mapStyle") || "dark",
// srcGridData: {},
darkStyle: {
@ -132,14 +132,6 @@ export default {
components: {
cptPopup,
},
async mounted() {
//
window._AMapSecurityConfig = {
securityJsCode: "92ea2c965c6cf1ba7ee3a8fe01449ef2",
};
this.iniMap();
},
computed: {
polygonData() {
@ -264,9 +256,30 @@ export default {
dotList2(val, oldValue) {
this.updateDot();
},
"$store.state.chooseArea.realScale"(n, v) {
this.setStartScale(n);
},
},
async mounted() {
//
window._AMapSecurityConfig = {
securityJsCode: "92ea2c965c6cf1ba7ee3a8fe01449ef2",
};
const scale = this.$store.state.chooseArea.realScale;
console.log(scale);
if (scale) {
this.setStartScale(scale);
}
this.iniMap();
},
methods: {
setStartScale(n) {
const scale = 1 / n;
this.zoom = scale;
},
iniMap() {
const { darkStyle, lightStyle, srcGridData } = this;
if (!srcGridData) return false;
@ -493,8 +506,8 @@ export default {
.active(true);
scene.addLayer(textLayer);
polygonLayer.on("mouseenter", (e) => {
console.log("e", e);
polygonLayer.on("mousemove", (e) => {
// console.log("e", e);
// const { lng, lat } = e.lngLat;
// const popup = new Popup({
// title: e.feature.properties.name,
@ -515,21 +528,21 @@ export default {
scene.addPopup(popup);
});
polygonLayer.on("mousemove", (e) => {
polygonLayer.style({
raisingHeight: 0,
});
});
// polygonLayer.on("mousemove", (e) => {
// polygonLayer.style({
// raisingHeight: 0,
// });
// });
polygonLayer.on("click", (e) => {
console.log("e", e);
this.$emit("clickAgency", e.feature.properties);
});
polygonLayer.on("unmousemove", (e) => {
polygonLayer.style({
raisingHeight: 0,
});
});
// polygonLayer.on("unmousemove", (e) => {
// polygonLayer.style({
// raisingHeight: 0,
// });
// });
},
iniMapDot(scene) {

93
src/views/dataBoard/cpts/personnel/modules/Family.vue

@ -12,6 +12,12 @@
</div>
<div>居民分类{{ getType(item.classificationOfInhabitantsList) }}</div>
</div>
<div style="padding-top: 220px; margin-left: 148px">
<div class="user-name">{{ info.name }}</div>
<div class="user-gx" v-if="info.houseHolderRel">
{{ info.houseHolderRel == "本人" ? "户主" : info.houseHolderRel }}
</div>
</div>
</div>
</template>
@ -22,8 +28,9 @@ export default {
return {
data: [],
queryParam: {
type: "0",
type: "1",
},
info: {},
};
},
computed: {
@ -45,6 +52,7 @@ export default {
const query = this.$route.query;
this.queryParam.resid = query.user_id;
this.getDatas();
this.getUserInfo();
},
methods: {
getDatas() {
@ -58,6 +66,17 @@ export default {
this.data = res.data;
});
},
getUserInfo() {
this.$http
.post(
"/actual/base/peopleRoomOverview/getPersonalFile?resid=" +
this.queryParam.resid,
this.queryParam
)
.then(({ data: res }) => {
this.info = res.data;
});
},
},
};
</script>
@ -78,36 +97,62 @@ export default {
padding: 18px 24px;
box-sizing: border-box;
position: absolute;
&:nth-of-type(1),
&:nth-of-type(2) {
background: url("@/assets/images/manyidu/gx_big.png") no-repeat center;
background-size: 100% 100%;
width: 180px;
min-height: 100px;
}
&:nth-of-type(3),
&:nth-of-type(4) {
background: url("@/assets/images/manyidu/gx_small.png") no-repeat center;
background-size: 100% 100%;
width: 180px;
min-height: 100px;
padding: 15px 24px;
}
background: url("@/assets/images/manyidu/gx_big.png") no-repeat center;
background-size: 100% 100%;
width: 180px;
min-height: 80px;
&:nth-of-type(1) {
left: -98px;
top: 34px;
left: -24px;
top: -24px;
}
&:nth-of-type(2) {
right: -68px;
top: 34px;
right: -24px;
top: -24px;
}
&:nth-of-type(3) {
left: -91px;
bottom: 41px;
left: -24px;
bottom: -20px;
}
&:nth-of-type(4) {
right: -44px;
bottom: 41px;
right: -24px;
top: 274px;
}
&:nth-of-type(5) {
left: -94px;
top: 74px;
}
&:nth-of-type(6) {
right: -94px;
top: 74px;
}
&:nth-of-type(7) {
left: -124px;
top: 174px;
}
&:nth-of-type(8) {
right: -124px;
top: 174px;
}
}
.user-name {
width: 174px;
text-align: center;
height: 17px;
font-size: 18px;
font-family: PingFang SC;
font-weight: bold;
color: #ffffff;
line-height: 22px;
margin-top: -12px;
}
.user-gx {
width: 174px;
text-align: center;
height: 17px;
font-size: 16px;
font-family: PingFang SC;
font-weight: bold;
color: #ffffff;
line-height: 32px;
}
</style>

15
src/views/dataBoard/cpts/personnel/modules/MatterDetails.vue

@ -2,9 +2,10 @@
<div class="matter-details">
<div class="user-img">
<img src="@/assets/images/manyidu/dn_bg1.png" alt="" />
<div class="user-name">{{ data.name }}</div>
</div>
<div class="tags">
<div class="tag" v-if="data.name">{{ data.name }}</div>
<!-- <div class="tag" v-if="data.name">{{ data.name }}</div> -->
<div class="tag red" v-if="data.riskyFlag == '1'">满意度风险人员</div>
<div class="tag small" v-if="data.gender">
{{ genderArr[data.gender] }}
@ -126,4 +127,16 @@ export default {
bottom: 10px;
}
}
.user-name {
width:174px;
text-align: center;
height: 17px;
font-size: 18px;
font-family: PingFang SC;
font-weight: bold;
color: #ffffff;
line-height: 22px;
margin-top: -12px;
}
</style>

19
src/views/dataBoard/organizational/dangTree/index.vue

@ -28,16 +28,24 @@ export default {
levelArr: [],
nowVal: 100,
nodeConfig: {},
zoom: 0,
};
},
watch: {
"$store.state.chooseArea.chooseName"(n, v) {
console.log(n);
if (n.orgId) {
this.levelArr = [];
this.nodeConfig = {};
this.getTreeData();
}
},
},
computed: {},
mounted() {
this.getTreeData();
const orgId = this.$store.state.chooseArea.chooseName.orgId;
if (orgId) {
this.getTreeData();
}
},
methods: {
getLevelArrNum(myArray) {
@ -58,7 +66,7 @@ export default {
getDataPLevel(data) {
data.forEach((item) => {
this.levelArr.push(item.partyOrgLevel);
if (item.children) {
if (item.children && item.children.length > 0) {
this.getDataPLevel(item.children);
}
});
@ -73,6 +81,11 @@ export default {
data: { code, msg, data },
} = res;
if (code === 0) {
if (data.length === 0) {
this.loading = false;
this.$message.error("暂无数据");
return;
}
this.nodeConfig = data[0];
this.getDataPLevel(data);
this.loading = false;

21
src/views/dataBoard/organizational/gridTree/index.vue

@ -31,8 +31,20 @@ export default {
};
},
computed: {},
watch: {
"$store.state.chooseArea.chooseName"(n, v) {
if (n.orgId) {
this.levelArr = [];
this.nodeConfig = {};
this.getTreeData();
}
},
},
mounted() {
this.getTreeData();
const orgId = this.$store.state.chooseArea.chooseName.orgId;
if (orgId) {
this.getTreeData();
}
},
methods: {
getLevelArrNum(myArray) {
@ -62,7 +74,7 @@ export default {
getDataPLevel(data) {
data.forEach((item) => {
this.levelArr.push(item.level);
if (item.children) {
if (item.children && item.children.length > 0) {
this.getDataPLevel(item.children);
}
});
@ -77,6 +89,11 @@ export default {
data: { code, msg, data },
} = res;
if (code === 0) {
if (data.length === 0) {
this.loading = false;
this.$message.error("暂无数据");
return;
}
this.nodeConfig = data[0];
this.getDataPLevel(data);
this.loading = false;

22
src/views/dataBoard/organizational/jwTree/index.vue

@ -31,8 +31,20 @@ export default {
};
},
computed: {},
watch: {
"$store.state.chooseArea.chooseName"(n, v) {
if (n.orgId) {
this.levelArr = [];
this.nodeConfig = {};
this.getTreeData();
}
},
},
mounted() {
this.getTreeData();
const orgId = this.$store.state.chooseArea.chooseName.orgId;
if (orgId) {
this.getTreeData();
}
},
methods: {
getLevelArrNum(myArray) {
@ -64,11 +76,12 @@ export default {
getDataPLevel(data) {
data.forEach((item) => {
this.levelArr.push(item.level);
if (item.children) {
if (item.children && item.children.length > 0) {
this.getDataPLevel(item.children);
}
});
const myArray = [...new Set(this.levelArr)];
console.log(myArray);
this.levelArr = this.getLevelArrNum(myArray);
},
//
@ -79,6 +92,11 @@ export default {
data: { code, msg, data },
} = res;
if (code === 0) {
if (data.length === 0) {
this.loading = false;
this.$message.error("暂无数据");
return;
}
this.nodeConfig = data[0];
this.getDataPLevel(data);
this.loading = false;

6
src/views/dataBoard/organizational/microgrid/components/popDetails.vue

@ -707,12 +707,13 @@ export default {
}
},
async getInfo() {
async getInfo(val) {
const url = "resident_info";
this.loading = true;
const { data, code, msg } = await requestPostBi(url, {
queryParam: {
resident_id: 1001001,
resident_id: val,
// 1001001
},
});
if (code === 0) {
@ -809,7 +810,6 @@ export default {
{ type: "operate", list: ["查看"] },
];
});
} else {
this.$message.error(msg);
}

15
src/views/dataBoard/organizational/microgrid/components/reportAnEvent.vue

@ -1,9 +1,9 @@
<template>
<Dialog title="事件详情" @close="handleClose">
<template>
<div class="eventWrap" v-loading="loading" element-loading-text="加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 21, 64, 0.3)">
<div class="eventWrap">
<el-row :gutter="32">
<el-col :span="13" style="padding-left: 40px">
<el-col :span="13" style="padding-left: 40px" v-loading="loading" element-loading-text="加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 21, 64, 0.3)">
<div class="leftEvent">
<div class="eventDetails">事件详情</div>
<div class="eventItem">
@ -54,7 +54,7 @@
</div>
</div>
</el-col>
<el-col :span="11">
<el-col :span="11" v-loading="loading1" element-loading-text="加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 21, 64, 0.3)">
<div class="rightEvent m-info">
<div class="eventDetails">办理进展</div>
<!-- <el-timeline class="timeline" :reverse="true">
@ -157,6 +157,7 @@ export default {
return {
item: {},
loading: false,
loading1: false,
activities: [],
};
},
@ -195,6 +196,7 @@ export default {
const { code, data, msg } = res.data;
if (code === 0) {
this.item = data;
this.loading = false;
} else {
this.loading = false;
this.$message.error(msg);
@ -207,16 +209,13 @@ export default {
const { code, data, msg } = res.data;
if (code === 0) {
this.activities = data;
this.loading = false;
this.loading1 = false;
} else {
this.loading = false;
this.loading1 = false;
this.$message.error(msg);
}
});
},
// /governance/icEvent/detail
// /governance/icEvent/process
},
};
</script>

8
src/views/dataBoard/organizational/microgrid/index.vue

@ -146,10 +146,10 @@ export default {
getList() {
this.loading = true;
const getUrl = new Map([
["sbsj", `/gov/org/organizational/neighborhood/getBuildingUnitLevelEvent?unitId=1634090229723381761`],
["jmxq", `/gov/org/organizational/neighborhood/getBuildingUnitLevelUserDemand?unitId=1565599676446027778`],
["tzrq", `/gov/org/organizational/neighborhood/getBuildingUnitLevelCtp?unitId=1483661223332417537`],
["aqyh", `/gov/org/organizational/neighborhood/getEnterprisePatrolRecord?unitId=f896b59f3cddf1f54280546d79803652`],
["sbsj", `/gov/org/organizational/neighborhood/getBuildingUnitLevelEvent?unitId=${this.paramsData.id}`],
["jmxq", `/gov/org/organizational/neighborhood/getBuildingUnitLevelUserDemand?unitId=${this.paramsData.id}`],
["tzrq", `/gov/org/organizational/neighborhood/getBuildingUnitLevelCtp?unitId=${this.paramsData.id}`],
["aqyh", `/gov/org/organizational/neighborhood/getEnterprisePatrolRecord?unitId=${this.paramsData.id}`],
]);
const url = getUrl.get(this.otherTabel);
// unitId=${this.paramsData.id}

38
src/views/dataBoard/organizational/personalPage/index.vue

@ -0,0 +1,38 @@
<template>
<div class="personalWrap">
<div class="bread">
<bread-crumb :list="list" />
</div>
<div class="wrap-content">
<personnel-person />
</div>
</div>
</template>
<script>
import BreadCrumb from "@/views/dataBoard/cpts/personnel/components/Breadcrumb/index.vue";
import PersonnelPerson from "@/views/dataBoard/cpts/personnel/index.vue";
export default {
name: "PersonalPage",
components: {
BreadCrumb,
PersonnelPerson,
},
data() {
return {
list: [
{
path: "/organizational/dangTree",
name: "党组织架构",
},
{
path: "",
name: "人员信息",
},
],
};
},
};
</script>
<style scope lang="scss"></style>

4
src/views/dataBoard/overview/components/DynamicHumanRoomData.vue

@ -57,10 +57,10 @@ export default {
<style scoped lang="scss">
@import "@/assets/scss/dataBoard/c/common.scss";
.dhrd {
padding: 20px 16px;
padding: 0 16px 20px;
}
.dhrd-list {
height: 200px;
height: 140px;
overflow-y: auto;
@include scrollBar
.dhrd-item {

5
src/views/dataBoard/overview/components/EventAndFollowUp.vue

@ -1,8 +1,8 @@
<template>
<div class="event">
<div class="tabs">
<!-- <div class="tabs">
<Tabs v-model="type" :list="typeList" @changeVal="typeChange"/>
</div>
</div>-->
<div class="content">
<div class="total">
<div class="tit">事件总数</div>
@ -55,6 +55,7 @@ export default {
lastSumNum: 0,
processNum: 0,
closedNum: 0,
closedRatio: 0,
}
},
watch: {

166
src/views/dataBoard/overview/components/FollowUp.vue

@ -0,0 +1,166 @@
<template>
<div class="follow-up">
<div class="content">
<div class="left">
<div class="total">
<div class="tit">回访总数</div>
<div class="num"><span>{{ sumNum ? sumNum : 0 }}</span></div>
</div>
<div class="left-item">
<div class="tit">电话回访</div>
<div class="num"><span>{{ mobileNum ? mobileNum : 0 }}</span></div>
</div>
<div class="left-item">
<div class="tit">上门回访</div>
<div class="num"><span>{{ visitNum ? visitNum : 0 }}</span></div>
</div>
</div>
<div class="xc">
<div class="tit">回访消除 <br/> 风险人数</div>
<div class="num blue">{{ notRiskyNum ? notRiskyNum : 0 }}</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: "FollowUp",
props: {
date: {
type: String,
default: ''
}
},
data() {
return {
org: this.$store.state.chooseArea.chooseName,
typeList: [{
label: '12345事件',
value: '12345'
}, {
label: '事件回访',
value: 'follow'
}],
type: 'follow',
sumNum: 0,
mobileNum: 0,
visitNum: 0,
notRiskyNum: 0,
}
},
watch: {
"$store.state.chooseArea.chooseName"(val) {
if (val.orgId) {
this.getData()
}
},
date() {
this.getData()
}
},
mounted() {
if (this.org.orgId) {
this.getData()
}
},
methods: {
getData() {
this.$http.get('/actual/base/streetOverview/eventAndFollowGroup?month=' + this.date + '&level=' + this.$store.state.chooseArea.chooseName.level + '&orgId=' + this.$store.state.chooseArea.chooseName.orgId + '&queryType=' + this.type).then(({data: {data}}) => {
this.sumNum = data.sumNum
this.mobileNum = data.mobileNum
this.visitNum = data.visitNum
this.notRiskyNum = data.notRiskyNum
})
},
typeChange(val) {
console.log(val,'val')
this.type = val
this.getData()
}
}
}
</script>
<style scoped lang="scss">
.follow-up {
padding: 10px 16px;
}
.content {
background: linear-gradient(90deg, rgba(1, 94, 234, 0.1) 0%, rgba(16, 50, 103, 0) 50%, rgba(1, 94, 234, 0.1) 100%);
padding: 40px 19px;
display: flex;
justify-content: space-between;
align-items: center;
}
.left {
border-right: 1px solid #96B1CE;
padding-right: 35px;
display: flex;
align-items: center;
justify-content: space-between;
.total {
.tit {
font-size: 16px;
font-weight: 400;
color: #FFFFFF;
margin-bottom: 20px;
}
.num {
font-size: 14px;
font-weight: 500;
color: #A3B9DA;
span {
font-size: 36px;
font-weight: bold;
font-style: italic;
color: #08EBAE;
}
}
}
.left-item {
margin-left: 24px;
.tit {
font-size: 14px;
font-weight: 400;
color: #A3B9DA;
line-height: 24px;
margin-bottom: 24px;
}
.num {
font-size: 14px;
font-weight: 500;
color: #A3B9DA;
span {
font-size: 30px;
font-weight: bold;
font-style: italic;
color: #78C4F3;
}
}
}
}
.xc {
.tit {
font-size: 16px;
font-weight: 400;
color: #FFFFFF;
line-height: 24px;
margin-bottom: 10px;
}
.num {
font-size: 32px;
font-weight: bold;
font-style: italic;
color: #FFB73C;
}
}
</style>

70
src/views/dataBoard/overview/components/GridUpdateRanking.vue

@ -0,0 +1,70 @@
<template>
<div class="m-subbox m-sqrfph">
<div class="table">
<div class="tr">
<div class="th">排名</div>
<div class="th">社区</div>
<div class="th">房屋更新数</div>
<div class="th">人口更新数</div>
<div class="th">人房更新总数</div>
</div>
<div class="tr" v-for="(item,index) in pmList" :key="index">
<div :class="index - 0 + 1 < 4 ? `td tdbg${index-0+1}` : 'td'">
{{ index - 0 + 1 }}
</div>
<div class="td">{{ item.orgName }}</div>
<div class="td">{{ item.houseNum }}</div>
<div class="td">{{ item.residentNum }}</div>
<div class="td">{{ item.sumNum }}</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: "GridUpdateRanking",
props: {
date: {
type: String,
default: ''
}
},
data() {
return {
org: this.$store.state.chooseArea.chooseName,
pmList: [],
};
},
watch: {
"$store.state.chooseArea.chooseName"(val) {
if (val.orgId) {
this.getList()
}
},
date() {
this.getList()
}
},
mounted() {
if (this.org.orgId) {
this.getList()
}
},
methods: {
getList() {
this.$http.get('/actual/base/streetOverview/residentHouseUpdateGroup?level=' + this.$store.state.chooseArea.chooseName.level + '&orgId=' + this.$store.state.chooseArea.chooseName.orgId).then(({data: {data}}) => {
this.pmList = data
})
}
}
};
</script>
<style lang="scss" src="@/assets/scss/dataBoard/overview/index.scss" scoped/>
<style lang="scss" scoped>
.m-sqrfph {
padding-top: 0 !important;
height: 160px !important;
}
</style>

4
src/views/dataBoard/overview/components/jdtphx.vue

@ -29,7 +29,7 @@
<div class="m-jdhx-card-content">
<div class="m-jdhx-card-content-item" v-for="(item,index) in houseList" :key="index">
<div class="m-jdhx-card-content-item-lable">{{item.name}}</div>
<div class="m-jdhx-card-content-item-value">{{item.num}}</div>
<div class="m-jdhx-card-content-item-value">{{item.ratio}}</div>
</div>
</div>
</div>
@ -105,7 +105,7 @@
<div class="m-jdhx-card-content">
<div class="m-jdhx-card-content-item" v-for="(item,index) in riskList" :key="index">
<div class="m-jdhx-card-content-item-lable">{{item.riskName}}</div>
<div class="m-jdhx-card-content-item-value">{{item.riskNum}}</div>
<div class="m-jdhx-card-content-item-value">{{item.riskNum}}</div>
</div>
</div>
</div>

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

@ -1,147 +1,178 @@
<template>
<div>
<cpt-bread
@tap="clickBreadItem"
v-if="breadList.length > 1"
:bread-list="breadList"
/>
<!-- <cpt-bread
@tap="clickBreadItem"
v-if="breadList.length > 1"
:bread-list="breadList"
/> -->
<div class="g-row">
<div class="g-left">
<div class="m-box">
<title-box :text="`${
currentLevel === 'district'?'区':
currentLevel === 'street'?'街道':
currentLevel === 'community'?'社区':
currentLevel === 'grid'?'网格':''
}介绍`"/>
<jdjs/>
<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'?'网格':''
}图谱画像`"/>
<jdtphx :id="orgId"/>
<title-box
:text="`${
currentLevel === 'district'
? '区'
: currentLevel === 'street'
? '街道'
: currentLevel === 'community'
? '社区'
: currentLevel === 'grid'
? '网格'
: ''
}图谱画像`"
/>
<jdtphx :id="orgId" />
</div>
</div>
<div class="g-center">
<div class="m-map">
<map-top/>
<div class="m-map" style="overflow: hidden">
<map-top />
<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"
ref="map"
@clickAgency="clickAgencyItem"
:srcGridData="orgData"
@clickDotBtn="handleClickDotBtn"
/>
</div>
<div class="m-box m-rybox">
<title-box text="XX街道网格员"/>
<jdwgy/>
<title-box text="XX街道网格员" />
<jdwgy />
</div>
</div>
<div class="g-right">
<div class="m-box">
<title-box text="人房数据统计"/>
<rfsjtj/>
<title-box text="人房数据统计" />
<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="选择月"
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"/>
<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="选择月"
v-model="sq12345Date"
format="yyyy-MM"
value-format="yyyy-MM"
type="month"
:clearable="false"
placeholder="选择月"
/>
</span>
</title-box>
<sq12345 :date="sq12345Date"/>
<sq12345 :date="sq12345Date" />
</div>
<!-- 社区&网格-->
<div v-if="currentLevel === 'community' || currentLevel === 'grid'" class="m-box">
<title-box text="人房数据动态更新"/>
<DynamicHumanRoomData/>
<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="选择月"
v-model="sqzcDate"
format="yyyy-MM"
value-format="yyyy-MM"
type="month"
:clearable="false"
placeholder="选择月"
/>
</span>
</title-box>
<CommunityResult :date="sqzcDate"/>
<CommunityResult :date="sqzcDate" />
</div>
<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="选择月"
v-model="sjhfDate"
format="yyyy-MM"
value-format="yyyy-MM"
@change="changeDate"
type="month"
:clearable="false"
placeholder="选择月"
/>
</span>
</title-box>
<EventAndFollowUp :date="sjhfDate"/>
<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="选择月"
v-model="sqwggxDate"
format="yyyy-MM"
value-format="yyyy-MM"
@change="changeDate"
type="month"
:clearable="false"
placeholder="选择月"
/>
</span>
</title-box>
<RankingGridData :date="sqwggxDate"/>
<RankingGridData :date="sqwggxDate" />
</div>
</div>
</div>
<cpt-loading v-show="false"/>
<cpt-loading v-show="false" />
</div>
</template>
@ -159,14 +190,15 @@ import sqrfph from "@/views/dataBoard/overview/components/sqrfph.vue";
import sq12345 from "@/views/dataBoard/overview/components/sq12345.vue";
import DynamicHumanRoomData from "@/views/dataBoard/overview/components/DynamicHumanRoomData.vue";
import GridUpdateRanking from "@/views/dataBoard/overview/components/GridUpdateRanking.vue";
import CommunityResult from "@/views/dataBoard/overview/components/CommunityResult.vue";
import EventAndFollowUp from "@/views/dataBoard/overview/components/EventAndFollowUp.vue";
import RankingGridData from "@/views/dataBoard/overview/components/RankingGridData.vue";
import FollowUp from "@/views/dataBoard/overview/components/FollowUp.vue";
import Tabs from "@/views/dataBoard/satisfactionEval/components/Tabs/index.vue";
import {requestPostBi} from "@/js/dai/request-bipass";
import {requestPost} from "@/js/dai/request";
import getQueryPara from "dai-js/modules/getQueryPara";
import { requestPostBi } from "@/js/dai/request-bipass";
import { requestPost } from "@/js/dai/request";
export default {
name: "renfang",
@ -186,17 +218,20 @@ export default {
DynamicHumanRoomData,
CommunityResult,
EventAndFollowUp,
RankingGridData
RankingGridData,
GridUpdateRanking,
FollowUp,
Tabs
},
data() {
return {
loading: false,
rfphDate: this.$moment().format('YYYY-MM'),
sq12345Date: this.$moment().format('YYYY-MM'),
sqzcDate: this.$moment().format('YYYY-MM'),
sjhfDate: this.$moment().format('YYYY-MM'),
sqwggxDate: this.$moment().format('YYYY-MM'),
rfphDate: this.$moment().format("YYYY-MM"),
sq12345Date: this.$moment().format("YYYY-MM"),
sqzcDate: this.$moment().format("YYYY-MM"),
sjhfDate: this.$moment().format("YYYY-MM"),
sqwggxDate: this.$moment().format("YYYY-MM"),
orgData: {
children: [],
}, //
@ -207,12 +242,30 @@ export default {
{
orgId: "",
orgLevel: "",
meta: {title: "人房总览"},
id: "",
level: "",
meta: { title: "人房总览" },
},
],
displayedResiId: "",
displayedHouseId: "",
dynamicType: 1,
dynamicTypeList: [{
value: 1,
label: '更新动态'
}, {
value: 2,
label: '网格更新排行'
}],
eventType: 1,
eventTypeList: [{
value: 1,
label: '12345事件'
}, {
value: 2,
label: '事件回访'
}]
};
},
@ -220,20 +273,26 @@ export default {
// const queryOrgId = getQueryPara("orgId");
// const queryOrgLevel = getQueryPara("orgLevel");
// this.init(queryOrgId, queryOrgLevel);
if(this.$store.state.chooseArea.chooseName.orgId) {
this.getMapData()
if (this.$store.state.chooseArea.chooseName.orgId) {
this.getMapData();
}
},
watch: {
"$store.state.chooseArea.chooseName"(val){
if(val.orgId) {
this.getMapData()
"$store.state.chooseArea.chooseName"(val) {
if (val.orgId) {
this.getMapData();
}
}
},
},
methods: {
dynamicTypeChange(val) {
this.dynamicType = val
},
eventTypeChange(val) {
this.eventType = val
},
async init(queryOrgId, queryOrgLevel) {
if (queryOrgId) {
this.orgId = queryOrgId;
@ -261,7 +320,7 @@ export default {
}
},
clickBreadItem({item}) {
clickBreadItem({ item }) {
this.toBread(item);
},
@ -269,22 +328,24 @@ export default {
this.toBread({
orgId: item.id,
orgLevel: item.level,
meta: {title: item.name},
meta: { title: item.name },
});
},
goBackMap() {
this.clickAgencyItem(this.breadList[this.breadList.length - 2]);
},
toBread(item) {
const {orgId} = item;
const {breadList} = this;
const { orgId } = item;
const { breadList } = this;
let index = breadList.findIndex((val) => val.orgId === orgId);
// return console.log(item, breadList, index);
if (index >= 0) {
this.breadList = breadList.slice(0, index + 1);
} else {
breadList.push(item);
breadList.push({ ...item, id: item.orgId, level: item.orgLevel });
this.breadList = breadList;
}
this.getMapData(item.orgId,item.orgLevel)
this.getMapData(item.orgId, item.orgLevel)
},
//
@ -299,34 +360,36 @@ 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.org_id;
this.orgLevel = this.orgData.level;
this.currentLevel = this.orgData.agencyLevel;
})
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;
this.currentLevel = this.orgData.agencyLevel;
});
},
//
async getSubMapData() {
const url = "sub_org_map";
const {data, code, msg} = await requestPostBi(
url,
{
queryParam: {
org_id: this.orgId,
},
const { data, code, msg } = await requestPostBi(
url,
{
queryParam: {
org_id: this.orgId,
},
{
// mockId: 61831860,
}
},
{
// mockId: 61831860,
}
);
if (code === 0) {
const {orgData} = this;
const { orgData } = this;
orgData.children = data.map((item) => {
return {
...item,
@ -337,7 +400,7 @@ export default {
coordinates: item.coordinates || "",
};
});
this.orgData = {...orgData};
this.orgData = { ...orgData };
} else {
this.$message.error(msg);
}
@ -351,7 +414,7 @@ export default {
level: this.orgLevel,
};
const {data, code, msg} = await requestPost(url, params);
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.orgData = data;
this.orgId = this.orgId;
@ -366,9 +429,30 @@ export default {
},
};
</script>
<style lang="scss" scoped>
.go-back {
position: absolute;
z-index: 100;
top: 100px;
left: 16px;
right: 0;
img {
height: 36px;
width: 36px;
}
img:hover {
cursor: pointer;
}
}
</style>
<style
lang="scss"
src="@/assets/scss/dataBoard/overview/index.scss"
scoped
lang="scss"
src="@/assets/scss/dataBoard/overview/index.scss"
scoped
></style>
<style lang="scss" scoped>
.tabs {
padding: 16px;
}
</style>

1068
src/views/dataBoard/renfang/resi/class.vue

File diff suppressed because it is too large

747
src/views/dataBoard/renfang/resi/classNew.vue

@ -0,0 +1,747 @@
<template>
<div class="g-pgi">
<!-- 组织路由 -->
<cpt-bread
:separator="'/'"
@tap="handleClickBreadItem"
:breadList="breadList"
></cpt-bread>
<div class="m-title">
<img class="title_img" src="@/assets/images/index/list-logo.png" alt />
<div class="tip_title">{{ tableTitle }}</div>
<div class="title_line"></div>
<div class="second-select" v-if="type == 'old'">
<el-select
v-model="oldVal"
:popper-append-to-body="false"
placeholder="请选择年龄"
>
<el-option
v-for="item in oldList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
&nbsp;
<el-select
v-model="searchParams.resideSituation"
:popper-append-to-body="false"
@change="changeSearch"
placeholder="请选择居住情况"
>
<el-option
v-for="item in resideArr"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="second-select" v-if="type == 'dibao'">
<el-select
v-model="searchParams.lowIncomeType"
:popper-append-to-body="false"
@change="changeSearch"
placeholder="请选择低保类型"
>
<el-option
v-for="item in lowIncomeTypeArr"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
&nbsp;
<el-select
v-model="searchParams.lowIncomeReason"
:popper-append-to-body="false"
@change="changeSearch"
placeholder="请选择低保原因"
>
<el-option
v-for="item in lowIncomeReasonArr"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="second-select" v-if="type == 'zhiyuanzhe'">
<el-select
v-model="oldVal"
:popper-append-to-body="false"
placeholder="请选择年龄"
>
<el-option
v-for="item in oldAllList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
&nbsp;
<el-select
v-model="searchParams.gategoryCode"
:popper-append-to-body="false"
@change="changeSearch"
placeholder="请选择志愿者类型"
>
<el-option
v-for="item in volunteerArr"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="second-select" v-if="type == 'dangyuan'">
<el-select
v-model="oldVal"
:popper-append-to-body="false"
placeholder="请选择年龄"
>
<el-option
v-for="item in oldAllList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
&nbsp;
<el-select
v-model="searchParams.cultureLevel"
:popper-append-to-body="false"
@change="changeSearch"
placeholder="请选择学历"
>
<el-option
v-for="item in PostDictonArr"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="second-select" v-if="type == 'shiye'">
<el-select
v-model="oldVal"
:popper-append-to-body="false"
@change="changeSearch"
placeholder="请选择年龄"
>
<el-option
v-for="item in oldAllList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
&nbsp;
<el-select
v-model="searchParams.employmentWish"
:popper-append-to-body="false"
@change="changeSearch"
placeholder="请选择就业愿望"
>
<el-option
v-for="item in careerArr"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
&nbsp;
<el-select
v-model="searchParams.unemploymentReason"
:popper-append-to-body="false"
@change="changeSearch"
placeholder="请选择失业原因"
>
<el-option
v-for="item in unemploymentArr"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div
class="second-select"
v-if="
type == 'fuwu' ||
type == 'wennuan' ||
type == 'jineng' ||
type == 'gangwei'
"
>
<el-input
type="text"
v-model="searchParams.serviceOrgName"
placeholder="请输入服务方名称"
@blur="changeFwfmc"
/>
</div>
</div>
<div class="g-listbox">
<cpt-tb
:col-list="colList"
:loading="loading"
:header="header"
:list="list"
:total="total"
@handleSizeChange="handleSizeChange"
@handlePageNoChange="handlePageNoChange"
@operate="jumpPage"
></cpt-tb>
</div>
</div>
</template>
<script>
import cptTb from "@/views/dataBoard/cpts/tb";
import cptBread from "@/views/dataBoard/renfang/cpts/bread";
import getQueryPara from "dai-js/modules/getQueryPara";
export default {
name: "resi-list",
components: {
cptTb,
cptBread,
},
data() {
return {
breadList: [
{
path: "/dataBoard/renfang/index",
meta: {
title: "人房总览",
},
},
{
path: "/dataBoard/renfang/visualizing",
meta: {
title: "",
},
},
{
meta: {
title: "居民列表",
},
},
],
tableTitle: "居民列表",
pageType: "",
orgLevel: "",
org_id: "",
type_id: "", //
type_name: "",
loading: true,
pageSize: parseInt(localStorage.getItem("dataBoard_PageSize")) || 20,
pageNo: 1,
total: 0,
srcTableData: [],
list: [],
listData: [],
oldList: [
{
label: "60-69岁",
value: ["60", "69"],
},
{
label: "70-79岁",
value: ["70", "79"],
},
{
label: "80-89岁",
value: ["80", "89"],
},
{
label: "90岁以上",
value: ["90", "139"],
},
],
oldAllList: [
{
label: "0-9岁",
value: ["0", "9"],
},
{
label: "10-19岁",
value: ["10", "19"],
},
{
label: "20-29岁",
value: ["20", "29"],
},
{
label: "30-39岁",
value: ["30", "39"],
},
{
label: "40-49岁",
value: ["40", "49"],
},
{
label: "50-59岁",
value: ["50", "59"],
},
{
label: "60-69岁",
value: ["60", "69"],
},
{
label: "70-79岁",
value: ["70", "79"],
},
{
label: "80-89岁",
value: ["80", "89"],
},
{
label: "90岁以上",
value: ["90", "139"],
},
],
jzList: [
{
label: "不知奥",
value: "90,120",
},
],
colList: [
{
align: "left",
width: "5%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "20%",
},
{
align: "left",
width: "20%",
},
{
align: "left",
width: "15%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "5%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "10%",
},
],
header: [
"序号",
"姓名",
"所属网格",
"所属房屋",
"联系电话",
"证件号",
"性别",
"出生日期",
"操作",
],
type: null,
typeList: [
{
type: "old",
name: "老年人",
url: "/actual/base/peopleRoomOverview/oldPeoplePageList",
},
{
type: "dibao",
name: "低保人员",
url: "/actual/base/peopleRoomOverview/lowIncomePageList",
},
{
type: "zhiyuanzhe",
name: "志愿者",
url: "/actual/base/peopleRoomOverview/volunteerPageList",
},
{
type: "dangyuan",
name: "党员",
url: "/actual/base/peopleRoomOverview/partyPageList",
},
{
type: "shiye",
name: "失业人员",
url: "/actual/base/peopleRoomOverview/unemployedPageList",
},
{
type: "fuwu",
name: "服务找人分页查询",
url: "/actual/base/peopleRoomOverview/servicePageList",
},
{
type: "wennuan",
name: "温暖找人查询",
url: "/actual/base/peopleRoomOverview/warmthPageList",
},
{
type: "jineng",
name: "技能找人查询",
url: "/actual/base/peopleRoomOverview/skillPageList",
},
{
type: "gangwei",
name: "岗位找人分页查询",
url: "/actual/base/peopleRoomOverview/postPageList",
},
],
oldVal: ["60", "69"],
jzVal: "",
searchParams: {},
unemploymentArr: [],
PostDictonArr: [],
resideArr: [],
careerArr: [],
lowIncomeReasonArr: [],
lowIncomeTypeArr: [],
};
},
activated() {
const query = this.$route.query;
this.org_id = query.org_id;
this.type = query.type;
this.type_id = query.type_id;
this.pageType = query.pageType;
this.type_name = query.type_name;
const type_name = query.type_name;
let title = type_name;
if (this.type == "jineng" || this.type == "gangwei") {
title = "失业人员";
}
if (this.type == "wennuan" || this.type == "fuwu") {
title = "低保人员";
}
this.type_name1 = title;
this.breadList[1].meta.title = title;
this.tableTitle = type_name + "居民列表";
this.pageNo = 1;
const type = this.type;
if (type == "dibao") {
this.searchParams = {
lowIncomeType: null, //
lowIncomeReason: null, //
};
}
if (type == "shiye") {
this.searchParams = {
employmentWish: null, //
unemploymentReason: null, //
startAge: null,
endAge: null,
};
}
if (type == "dangyuan") {
this.searchParams = {
cultureLevel: null, //
startAge: null,
endAge: null,
};
}
if (type == "zhiyuan") {
this.searchParams = {
gategoryCode: null, //
startAge: null,
endAge: null,
};
}
if (
type == "fuwu" ||
type == "wennuan" ||
type == "jineng" ||
type == "gangwei"
) {
this.searchParams = {
serviceOrgName: null, //
};
}
this.getList();
if (this.pageType != "normal") {
this.colList = [
{
align: "left",
width: "5%",
},
{
align: "left",
width: "15%",
},
{
align: "left",
width: "20%",
},
{
align: "left",
width: "15%",
},
{
align: "left",
width: "15%",
},
{
align: "left",
width: "15%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "10%",
},
];
this.header = [
"序号",
"服务类型",
"服务事项",
"来源",
"服务时间",
"服务方",
"服务人数",
"操作",
];
}
//
this.getResideNation();
this.getPostNation();
this.getUnemployment();
this.getCareer();
this.getVolunteer();
this.getLowIncomeReason();
this.getLowIncomeType();
},
created() {
this.pageNo = 1;
},
watch: {
$route(to, from) {
this.$router.go(0);
},
oldVal: {
handler(newVal, oldVal) {
this.pageNo = 1;
const searchParams = {
startAge: newVal[0],
endAge: newVal[1],
};
this.getList(searchParams);
},
},
searchParams(newVal, oldVal) {
this.getList();
},
},
methods: {
handleClickBreadItem({ item }) {
this.$router.push({
path: item.path,
query: {
org_id: this.org_id,
type_id: this.type_id,
type_name: item.meta.title,
pageType: this.pageType,
type: this.type,
pageType: this.pageType,
},
});
},
changeFwfmc(e) {
this.searchParams = {
serviceOrgName: e.target.value || null,
};
this.getList();
},
changeSearch() {
this.getList();
},
jumpPage(index) {
let item = this.listData[index];
this.$router.push({
path: "/dataBoard/renfang/resident",
query: {
org_id: this.org_id,
type_id: this.type_id,
user_id: item.id,
type: this.type,
pageType: this.pageType,
type_name: this.type_name,
},
});
},
handlePageNoChange(pageNo) {
this.pageNo = pageNo;
this.getList();
},
handleSizeChange(pageSize) {
localStorage.setItem("dataBoard_PageSize", pageSize);
this.pageSize = pageSize;
this.getList();
},
async getList(item) {
const { url } = this.typeList.filter((item) => item.type == this.type)[0];
const sourceType = ["公共服务", "共性需求", "政策找人", "服务找人"];
this.loading = true;
let queryParam = {
pageNo: this.pageNo,
pageSize: this.pageSize,
...this.searchParams,
...item,
};
this.$http.post(url, queryParam).then(({ data: res }) => {
this.loading = false;
const { data, code, msg } = res;
const { list, total } = data;
const gender = ["未知", "男", "女"];
if (code === 0) {
this.listData = list;
if (this.pageType == "normal") {
this.list = list.map((item, index) => {
return [
index + 1,
item.name ? item.name : "--",
item.gridName ? item.gridName : "--",
item.fullName ? item.fullName : "--",
item.mobile ? item.mobile : "--",
item.idNum ? item.idNum : "--",
item.gender ? gender[item.gender] : "--",
item.birthday ? item.birthday : "--",
{ type: "operate", list: ["查看"] },
];
});
} else {
this.list = list.map((item, index) => {
return [
index + 1,
item.serviceCategoryKey ? item.serviceCategoryKey : "--",
item.serviceName ? item.serviceName : "--",
item.awardPoint ? sourceType[item.awardPoint] : "--",
item.serviceTimeStart ? item.serviceTimeStart : "--",
item.serviceOrgName ? item.serviceOrgName : "--",
item.servedPersonQty ? item.servedPersonQty : "--",
{ type: "operate", list: ["查看"] },
];
});
}
this.total = total;
} else {
this.$message.error(msg);
}
});
},
async getResideNation() {
try {
const { data } = await this.$http.post("sys/dict/data/dictlist", {
dictType: "reside_situation",
});
this.resideArr = data.data;
} catch (error) {
console.log(error, "获取居住情况字典");
}
},
// async getPostNation() {
// try {
// let { data } = await this.$http.post("sys/dict/data/dictlist", {
// dictType: "welfare_post",
// });
// this.PostDictonArr = data.data;
// } catch (error) {
// console.log(error, "");
// }
// },
async getUnemployment() {
try {
const { data } = await this.$http.post("sys/dict/data/dictlist", {
dictType: "unemployment_cause",
});
this.unemploymentArr = data.data;
} catch (error) {
console.log(error, "获取失业原因字典");
}
},
async getCareer() {
try {
const { data } = await this.$http.post("sys/dict/data/dictlist", {
dictType: "career_goals",
});
this.careerArr = data.data;
} catch (error) {
console.log(error, "获取就业愿望字典");
}
},
async getVolunteer() {
try {
const { data } = await this.$http.post("sys/dict/data/dictlist", {
dictType: "VOLUNTEER_CATEGORY",
});
this.volunteerArr = data.data;
} catch (error) {
console.log(error, "获取志愿者类别字典");
}
},
async getLowIncomeReason() {
try {
const { data } = await this.$http.post("sys/dict/data/dictlist", {
dictType: "low_income_reason",
});
this.lowIncomeReasonArr = data.data;
} catch (error) {
console.log(error, "获取低保原因字典");
}
},
async getLowIncomeType() {
try {
const { data } = await this.$http.post("sys/dict/data/dictlist", {
dictType: "low_income_type",
});
this.lowIncomeTypeArr = data.data;
} catch (error) {
console.log(error, "获取低保类型字典");
}
},
async getPostNation() {
try {
let { data } = await this.$http.post("sys/dict/data/education", {
formCode: "resi_base_info",
});
this.PostDictonArr = data.data;
} catch (error) {
console.log(error, "获取学历字典");
}
},
},
destroyed() {
console.log("我已经离开了!");
},
};
</script>
<style lang="scss" src="@/assets/scss/dataBoard/listBox.scss" scoped></style>

2
src/views/dataBoard/renfang/resident/index.vue

@ -37,7 +37,7 @@ export default {
},
},
{
path: "/dataBoard/renfang/resi-class",
path: "/dataBoard/renfang/resi-class-new",
meta: {
title: "居民列表",
},

4
src/views/dataBoard/renfang/visualizing/components/dangyuan.vue

@ -157,7 +157,7 @@ export default {
this.myChart1.setOption(option);
this.myChart1.on("click", (a, b) => {
this.$router.push({
path: "/dataBoard/renfang/resi-class",
path: "/dataBoard/renfang/resi-class-new",
query: {
org_id: this.org_id,
type_id: "aged",
@ -247,7 +247,7 @@ export default {
};
this.myChart1.on("click", (a, b) => {
this.$router.push({
path: "/dataBoard/renfang/resi-class",
path: "/dataBoard/renfang/resi-class-new",
query: {
org_id: this.org_id,
type_id: "aged",

8
src/views/dataBoard/renfang/visualizing/components/dibaorenyuan.vue

@ -203,7 +203,7 @@ export default {
this.myChart1.setOption(option);
this.myChart1.on("click", (a, b) => {
this.$router.push({
path: "/dataBoard/renfang/resi-class",
path: "/dataBoard/renfang/resi-class-new",
query: {
org_id: this.org_id,
type_id: "mlsp",
@ -306,7 +306,7 @@ export default {
this.myChart2.setOption(option);
this.myChart2.on("click", (a, b) => {
this.$router.push({
path: "/dataBoard/renfang/resi-class",
path: "/dataBoard/renfang/resi-class-new",
query: {
org_id: this.org_id,
type_id: "mlsp",
@ -411,7 +411,7 @@ export default {
this.myChart3.setOption(option);
this.myChart3.on("click", (a, b) => {
this.$router.push({
path: "/dataBoard/renfang/resi-class",
path: "/dataBoard/renfang/resi-class-new",
query: {
org_id: this.org_id,
type_id: "mlsp",
@ -515,7 +515,7 @@ export default {
this.myChart4.setOption(option);
this.myChart4.on("click", (a, b) => {
this.$router.push({
path: "/dataBoard/renfang/resi-class",
path: "/dataBoard/renfang/resi-class-new",
query: {
org_id: this.org_id,
type_id: "mlsp",

4
src/views/dataBoard/renfang/visualizing/components/laonianren.vue

@ -167,7 +167,7 @@ export default {
this.myChart1.setOption(option);
this.myChart1.on("click", (a, b) => {
this.$router.push({
path: "/dataBoard/renfang/resi-class",
path: "/dataBoard/renfang/resi-class-new",
query: {
org_id: this.org_id,
type_id: "aged",
@ -259,7 +259,7 @@ export default {
};
this.myChart2.on("click", (a, b) => {
this.$router.push({
path: "/dataBoard/renfang/resi-class",
path: "/dataBoard/renfang/resi-class-new",
query: {
org_id: this.org_id,
type_id: "aged",

10
src/views/dataBoard/renfang/visualizing/components/shiyerenyuan.vue

@ -221,7 +221,7 @@ export default {
this.myChart1.setOption(option);
this.myChart1.on("click", (a, b) => {
this.$router.push({
path: "/dataBoard/renfang/resi-class",
path: "/dataBoard/renfang/resi-class-new",
query: {
org_id: this.org_id,
type_id: "aged",
@ -324,7 +324,7 @@ export default {
this.myChart2.setOption(option);
this.myChart2.on("click", (a, b) => {
this.$router.push({
path: "/dataBoard/renfang/resi-class",
path: "/dataBoard/renfang/resi-class-new",
query: {
org_id: this.org_id,
type_id: "aged",
@ -429,7 +429,7 @@ export default {
this.myChart3.setOption(option);
this.myChart3.on("click", (a, b) => {
this.$router.push({
path: "/dataBoard/renfang/resi-class",
path: "/dataBoard/renfang/resi-class-new",
query: {
org_id: this.org_id,
type_id: "aged",
@ -533,7 +533,7 @@ export default {
this.myChart4.setOption(option);
this.myChart4.on("click", (a, b) => {
this.$router.push({
path: "/dataBoard/renfang/resi-class",
path: "/dataBoard/renfang/resi-class-new",
query: {
org_id: this.org_id,
type_id: "aged",
@ -637,7 +637,7 @@ export default {
this.myChart5.setOption(option);
this.myChart5.on("click", (a, b) => {
this.$router.push({
path: "/dataBoard/renfang/resi-class",
path: "/dataBoard/renfang/resi-class-new",
query: {
org_id: this.org_id,
type_id: "aged",

4
src/views/dataBoard/renfang/visualizing/components/zhiyuanzhe.vue

@ -157,7 +157,7 @@ export default {
this.myChart1.setOption(option);
this.myChart1.on("click", (a, b) => {
this.$router.push({
path: "/dataBoard/renfang/resi-class",
path: "/dataBoard/renfang/resi-class-new",
query: {
org_id: this.org_id,
type_id: "aged",
@ -249,7 +249,7 @@ export default {
};
this.myChart2.on("click", (a, b) => {
this.$router.push({
path: "/dataBoard/renfang/resi-class",
path: "/dataBoard/renfang/resi-class-new",
query: {
org_id: this.org_id,
type_id: "aged",

18
src/views/dataBoard/satisfactionEval/components/Title/index.vue

@ -1,5 +1,5 @@
<template>
<div class="title" :class="noBg?'no-bg':''">
<div class="title" :class="noBg ? 'no-bg' : ''">
<span class="text">
<span class="txt">{{ text }}</span>
<span class="text-shadow">{{ text }}</span>
@ -14,20 +14,20 @@ export default {
props: {
text: {
type: String,
default: ''
default: "",
},
noBg: {
type: Boolean,
default: false
}
}
}
default: false,
},
},
};
</script>
<style scoped lang="scss">
.title {
// background: url(../../../../../assets/images/shuju/overview/title-bg.png)
// no-repeat 0 0 fixed;
background: url(../../../../../assets/images/shuju/overview/title-bg.png)
no-repeat 0 0 fixed;
padding: 8px 16px 8px 32px;
display: flex;
align-items: center;
@ -60,4 +60,4 @@ export default {
.no-bg {
background: none;
}
</style>
</style>

71
src/views/dataBoard/satisfactionEval/dissatisfied/detail.vue

@ -15,15 +15,15 @@
<div class="sub-title">事项详情</div>
<div class="detail">
<p>
小区垃圾急需要处理垃圾桶旁边垃圾堆积严重现在已经影响居民的日常生活和出行望有关部门能够重视
{{unsatisfiedMattersModel.reason}}
</p>
<ul>
<li><span>事项来源</span>省满意度调查</li>
<li><span>事项类型</span>生态环境</li>
<li><span>所属月份</span>2023-09</li>
<li><span>所属社区</span>XXX社区</li>
<li><span>提交人</span>**</li>
<li><span>提交人电话</span>133</li>
<li><span>事项来源</span>{{unsatisfiedMattersModel.satisfactionSource}}</li>
<li><span>事项类型</span>{{unsatisfiedMattersModel.satisfactionCategoryName}}</li>
<li><span>所属月份</span>{{unsatisfiedMattersModel.satisfactionCategoryName}}</li>
<li><span>所属社区</span>{{unsatisfiedMattersModel.organizationName}}</li>
<li><span>提交人</span>{{unsatisfiedMattersModel.name}}</li>
<li><span>提交人电话</span>{{unsatisfiedMattersModel.mobile}}</li>
</ul>
</div>
</el-col>
@ -33,31 +33,31 @@
<div class="number-item">
<div class="text">12345投诉</div>
<div class="num">
<span class="orange">39</span>
<span class="orange">{{unsatisfiedHisCount.satisfaction_12345}}</span>
</div>
</div>
<div class="number-item">
<div class="text">省满意度调查</div>
<div class="num">
<span class="green">102</span>
<span class="green">{{unsatisfiedHisCount.satisfaction_province}}</span>
</div>
</div>
<div class="number-item">
<div class="text">社区满意度自评</div>
<div class="num">
<span class="light">273</span>
<span class="light">{{unsatisfiedHisCount.satisfaction_community}}</span>
</div>
</div>
</div>
<div class="sub-title">回访记录</div>
<div class="log">
<div class="log-item" v-for="(item,index) in 3">
<div class="name">杨建国网格长</div>
<div>2023-08-17</div>
<div>上门回访 <i class="el-icon-arrow-right"></i></div>
<div class="log-item" v-for="(item,index) in followUpRecordDetails">
<div class="name">{{item.followUpUser}}{{item.roleName}}</div>
<div>{{item.followUpDate}}</div>
<div>{{item.followUpWay}} <i class="el-icon-arrow-right"></i></div>
</div>
</div>
@ -75,15 +75,42 @@ export default {
components: {Title},
data() {
return {
dialogVisible: false
dialogVisible: false,
unsatisfiedMattersModel: '',
unsatisfiedHisCount: '',
followUpRecordDetails: '',
satisfactionSourceOptions: [{
value: 'satisfaction_12345',
label: '12345投诉',
color: '#FFB73C',
}, {
value: 'satisfaction_province',
label: '省满意度调查',
color: '#64C1FF'
}, {
value: 'satisfaction_community',
label: '社区满意度自查',
color: '#08EBAE'
}]
};
},
methods: {
handleClose(done) {
this.dialogVisible = false
},
open() {
open(id) {
this.dialogVisible = true
this.getDetail(id)
},
getDetail(id) {
this.$http.post('/governance/satisfactionDetailList/getUnsatisfiedMattersDetailInfo', id).then(({data: {data}}) => {
this.unsatisfiedMattersModel = data.unsatisfiedMattersModel
this.unsatisfiedHisCount = data.unsatisfiedHisCount
this.followUpRecordDetails = data.followUpRecordDetails
if(this.unsatisfiedMattersModel.satisfactionSource) {
this.unsatisfiedMattersModel.satisfactionSource = satisfactionSourceOptions.filter(item => item.value === this.unsatisfiedMattersModel.satisfactionSource)[0].label
}
})
}
}
}
@ -137,14 +164,17 @@ export default {
line-height: 32px;
margin: 0 0 10px;
}
ul {
margin: 0;
padding: 0;
list-style-type: none;
}
li {
color: #FFFFFF;
line-height: 28px;
span {
color: #9CB4D3
}
@ -156,16 +186,19 @@ export default {
display: flex;
justify-content: space-between;
margin-bottom: 30px;
.text {
font-size: 14px;
font-weight: 400;
color: #A3B9DA;
margin-bottom: 17px;
}
.num {
font-size: 14px;
font-weight: 400;
color: #A3B9DA;
span {
font-size: 32px;
font-weight: bold;
@ -173,17 +206,22 @@ export default {
}
}
}
.orange {
color: #FFB73C;
}
.green {
color: #08EBAE;
}
.light {
color: #7FCEFF;
}
.log {
padding-left: 26px;
.log-item {
display: flex;
justify-content: space-between;
@ -191,6 +229,7 @@ export default {
color: #fff;
background: url("@/assets/images/manyidu/hf_line.png") bottom center no-repeat;
padding: 9px 0;
.name {
flex: 0 0 33.33333%;
}

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

@ -3,45 +3,57 @@
<Breadcrumb :list="breadcrumbList"/>
<div class="screen">
<el-form :model="queryParams" inline>
<el-date-picker
size="small"
popper-class="selectPopClass"
v-model="queryParams.month"
type="month"
value-format="yyyy-MM"
placeholder="按月度">
</el-date-picker>
<el-select popper-class="selectPopClass" v-model="queryParams.month" size="small" placeholder="按月度">
<el-select popper-class="selectPopClass" v-model="queryParams.agencyId" size="small" placeholder="按组织">
<el-option
v-for="item in monthOptions"
v-for="item in orgOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-select popper-class="selectPopClass" v-model="queryParams.org" size="small" placeholder="按组织">
<el-select
popper-class="selectPopClass"
clearable
v-model="queryParams.satisfactionSource"
size="small"
placeholder="按不满意事项来源"
@change="getSatisfactionCategoryOptions"
>
<el-option
v-for="item in monthOptions"
v-for="item in satisfactionSourceOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-select popper-class="selectPopClass" v-model="queryParams.matterSource" size="small" placeholder="按不满意事项来源">
<el-select
popper-class="selectPopClass"
clearable
v-model="queryParams.satisfactionCategory"
size="small"
placeholder="按不满意事项类型"
>
<el-option
v-for="item in monthOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-select popper-class="selectPopClass" v-model="queryParams.matterType" size="small" placeholder="按不满意事项类型">
<el-option
v-for="item in monthOptions"
v-for="item in satisfactionCategoryOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-input v-model="queryParams.name" size="small" placeholder="按人员姓名"></el-input>
<el-input v-model="queryParams.tel" size="small" placeholder="按人员电话"></el-input>
<el-button size="small" class="btn" type="primary">查询</el-button>
<el-input v-model="queryParams.mobile" size="small" placeholder="按人员电话"></el-input>
<el-button size="small" class="btn" type="primary" @click="search">查询</el-button>
</el-form>
</div>
@ -53,71 +65,90 @@
width="80"/>
<el-table-column
prop="name"
prop="month"
label="月度"
width="114"/>
<el-table-column
prop="address"
prop="organizationName"
width="118"
label="所属社区"/>
<el-table-column
prop="address"
prop="satisfactionSource"
width="168"
label="事项来源">
<template slot-scope="data"></template>
<template slot-scope="{row}">
<span :style="{color: satisfactionSourceFormat(row.satisfactionSource).color}">
{{ satisfactionSourceFormat(row.satisfactionSource).label }}
</span>
</template>
</el-table-column>
<el-table-column
prop="address"
width="118"
prop="satisfactionCategoryName"
width="150"
label="事项类型"/>
<el-table-column
prop="address"
prop="reason"
show-overflow-tooltip
label="事项描述"/>
<el-table-column
prop="address"
prop="createTime"
width="197"
label="提交时间"/>
<el-table-column
prop="address"
prop="name"
width="119"
label="姓名"/>
<el-table-column
prop="address"
prop="mobile"
width="153"
label="电话"/>
<el-table-column
prop="address"
prop="completeFlag"
width="118px"
label="是否完成">
<template slot-scope="data"></template>
<template slot-scope="{row}">
<span :class="row.completeFlag==='是'?'light':'red'">
{{ row.completeFlag }}
</span>
</template>
</el-table-column>
<el-table-column
prop="address"
prop="followUpStatus"
width="118px"
label="是否回访">
<template slot-scope="data"></template>
<template slot-scope="{row}">
<span :class="row.followUpStatus==='是'?'light':'red'">
{{ row.followUpStatus }}
</span>
</template>
</el-table-column>
<el-table-column
prop="address"
prop="dangerFlag"
width="118px"
label="消除风险">
<template slot-scope="data"></template>
<template slot-scope="{row}">
<span :class="row.dangerFlag==='是'?'light':'red'">
{{ row.dangerFlag }}
</span>
</template>
</el-table-column>
<el-table-column label="操作" width="90" align="center">
<template slot-scope="data">
<el-button type="text" @click="handleView">查看</el-button>
<el-button type="text" @click="handleView(data.row)">查看</el-button>
</template>
</el-table-column>
@ -127,11 +158,11 @@
<Pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<DissatisfiedDetail ref="detail"/>
<DissatisfiedDetail ref="detail" :id="id"/>
</div>
</template>
@ -146,15 +177,16 @@ export default {
data() {
return {
queryParams: {
month: '',
org: '',
matterSource: '',
matterType: '',
name: '',
tel: '',
pageNum: 1,
month: this.$moment().format('YYYY-MM'),
agencyId: "",
satisfactionSource: "",
satisfactionCategory: "",
name: "",
mobile: "",
pageNo: 1,
pageSize: 10,
},
id: {},
total: 0,
breadcrumbList: [{
path: '/dataBoard/satisfactionEval/index',
@ -163,18 +195,80 @@ export default {
path: '',
name: '不满意事项列表'
}],
monthOptions: new Array(12).fill(0).map((_, index) => {
return {label: (index - 0 + 1) + '月', value: (index - 0 + 1)}
}),
list: [{}, {}, {}]
orgOptions: [],
satisfactionCategoryOptions: [],
list: [],
satisfactionSourceOptions: [{
value: 'satisfaction_12345',
label: '12345投诉',
color: '#FFB73C',
}, {
value: 'satisfaction_province',
label: '省满意度调查',
color: '#64C1FF'
}, {
value: 'satisfaction_community',
label: '社区满意度自查',
color: '#08EBAE'
}]
}
},
mounted() {
this.getOrg()
},
methods: {
getSatisfactionCategoryOptions() {
this.queryParams.satisfactionCategory = ''
if(!this.queryParams.satisfactionSource) {
this.satisfactionCategoryOptions = []
return
}
this.$http.get('/governance/satisfactionDetailList/getUnsatisfiedCategory?satisfactionSource=' + this.queryParams.satisfactionSource).then(({data: {data}}) => {
this.satisfactionCategoryOptions = data.map(item => {
return {
label: item.categoryName,
value: item.categoryCode
}
})
})
},
satisfactionSourceFormat(val) {
let satisfactionSource = this.satisfactionSourceOptions.filter(item => item.value === val)[0]
return satisfactionSource ? satisfactionSource : ''
},
search() {
this.queryParams.pageNo = 1
this.getList();
},
getList() {
this.$http.get('/governance/satisfactionDetailList/getUnsatisfiedMattersList?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => {
this.total = data.total
this.list = data.list
})
},
getOrg() {
let params = {
orgId: this.$store.state.chooseArea.chooseName.orgId,
level: this.$store.state.chooseArea.chooseName.level
}
this.$http.post(`/gov/org/agency/maporg`, params).then(async ({data: {data}}) => {
this.queryParams.agencyId = this.$store.state.chooseArea.chooseName.orgId
let parent = {value: data.id, label: data.name}
this.orgOptions = [parent, ...data.children.map(item => {
return {
value: item.id,
label: item.name
}
})]
this.getList()
})
},
handleView() {
this.$refs.detail.open()
handleView(id) {
console.log(id)
this.id = id
this.$refs.detail.open(id)
}
}
}
@ -204,18 +298,23 @@ export default {
height: 32px;
}
}
.orange {
color: #FFB73C;
}
.blue {
color: #64C1FF;
}
.green {
color: #08EBAE;
}
.light {
color: #3CF5FF;
}
.red {
color: #F95619;
}

40
src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/detail.vue

@ -3,50 +3,18 @@
<div class="breadcrumb">
<Breadcrumb :list="breadcrumbList"/>
</div>
<el-row>
<el-col :span="10">
<div class="sub-title">事项详情</div>
<MatterDetails/>
<div class="sub-title">家庭关系</div>
<Family/>
</el-col>
<el-col :span="13" :offset="1">
<div class="sub-title">居民各项业务记录</div>
<BusinessRecords/>
<el-row>
<el-col :span="12">
<div class="sub-title">享受服务次数统计</div>
<EnjoyService/>
</el-col>
<el-col :span="11" :offset="1">
<div class="sub-title">积分记录</div>
<PointsRecord/>
</el-col>
</el-row>
</el-col>
</el-row>
<Personnel/>
</div>
</template>
<script>
import Breadcrumb from '@/views/dataBoard/satisfactionEval/components/Breadcrumb'
import MatterDetails from "./modules/MatterDetails"
import Family from "./modules/Family"
import BusinessRecords from "./modules/BusinessRecords"
import EnjoyService from "./modules/EnjoyService"
import PointsRecord from "./modules/PointsRecord"
import Personnel from '@/views/dataBoard/cpts/personnel'
export default {
name: "dissatisfiedPersonnelDetail",
components: {
Breadcrumb,
MatterDetails,
Family,
BusinessRecords,
EnjoyService,
PointsRecord
Personnel
},
data() {
return {
@ -63,8 +31,6 @@ export default {
}
},
mounted() {
console.log(this.breadcrumbList, this.$route)
this.$set(this.breadcrumbList[2], 'name', this.$route.query.name)
this.breadcrumbList[2].name = this.$route.query.name
}

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

@ -1,9 +1,9 @@
<template>
<div>
<Breadcrumb :list="breadcrumbList"/>
<div class="main-title">
<Title text="“基础教育”画像匹配同类不满意人员" noBg/>
</div>
<!-- <div class="main-title">
<Title :text="`“${title}”画像匹配同类不满意人员`" noBg/>
</div>-->
<div class="table">
<el-table :data="list">
<el-table-column
@ -12,71 +12,52 @@
width="80"/>
<el-table-column
prop="name"
label="月度"
width="114"/>
<el-table-column
prop="address"
prop="gridName"
width="118"
label="所属社区"/>
label="所属组织"/>
<el-table-column
prop="address"
width="168"
label="事项来源">
prop="restName"
label="姓名">
<template slot-scope="data"></template>
</el-table-column>
<el-table-column
prop="address"
width="118"
label="事项类型"/>
prop="mobile"
label="电话"/>
<el-table-column
prop="address"
show-overflow-tooltip
label="事项描述"/>
<el-table-column
prop="address"
width="197"
label="提交时间"/>
prop="categoryNames"
label="人员性质"/>
<el-table-column
prop="address"
width="119"
label="姓名"/>
prop="gender"
label="性别">
<template slot-scope="{row}">
{{row.gender === '1'?'男':row.gender === '2'?'女':row.gender === '0'?'未知':''}}
</template>
</el-table-column>
<el-table-column
prop="address"
width="153"
label="电话"/>
prop="age"
label="年龄"/>
<el-table-column
prop="address"
width="118px"
label="是否完成">
<template slot-scope="data"></template>
</el-table-column>
prop="cultureLevel"
label="学历"/>
<el-table-column
prop="address"
width="118px"
label="是否回访">
<template slot-scope="data"></template>
</el-table-column>
prop="marriageName"
label="婚姻"/>
<el-table-column
prop="address"
width="118px"
label="消除风险">
<template slot-scope="data"></template>
</el-table-column>
prop="monthIncomeLevel"
label="月收入"/>
<el-table-column label="操作" width="90" align="center">
<el-table-column label="详情" width="90" align="center">
<template slot-scope="data">
<el-button type="text" @click="handleView">查看</el-button>
<el-button type="text" @click="handleView(data.row)">查看</el-button>
</template>
</el-table-column>
@ -86,7 +67,7 @@
<Pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
@ -101,17 +82,11 @@ import Title from "@/views/dataBoard/satisfactionEval/components/Title"
export default {
name: "dissatisfied",
components: {Breadcrumb, Pagination,Title},
components: {Breadcrumb, Pagination, Title},
data() {
return {
queryParams: {
month: '',
org: '',
matterSource: '',
matterType: '',
name: '',
tel: '',
pageNum: 1,
pageNo: 1,
pageSize: 10,
},
total: 0,
@ -125,14 +100,29 @@ export default {
monthOptions: new Array(12).fill(0).map((_, index) => {
return {label: (index - 0 + 1) + '月', value: (index - 0 + 1)}
}),
list: [{}, {}, {}]
list: [],
title: ''
}
},
activated() {
this.title = this.$route.query.title
let searchParams = JSON.parse(this.$route.query.searchParams)
console.log(searchParams)
this.queryParams = {
...this.queryParams,
...searchParams
}
this.getList()
},
methods: {
getList() {
this.$http.get('/governance/satisfactionOverview/satisfactionCrowdList?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => {
this.list = data.list
this.total = data.total
})
},
handleView({name,id}) {
handleView({restName,restId}) {
this.$router.push('/dataBoard/satisfactionEval/dissatisfiedPersonnel/detail?name='+restName+'&user_id='+restId)
}
}
}
@ -162,7 +152,11 @@ export default {
height: 32px;
}
}
.main-title {
margin: 25px 0 32px;
}
.table {
margin-top: 32px;
}
</style>

150
src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/BusinessRecords.vue

@ -1,150 +0,0 @@
<template>
<div class="business-records">
<Tabs v-model="type" :list="typeList" @changeVal="typeChange"/>
<div class="table">
<el-table :data="list">
<el-table-column
label="序号"
type="index"
width="80"/>
<el-table-column
label="评价周期"
prop="key"
width=""/>
<el-table-column
label="姓名"
prop="key"
width=""/>
<el-table-column
label="电话"
prop="key"
width=""/>
<el-table-column
label="不满意类型"
prop="key"
width=""/>
<el-table-column
label="不满意原因"
prop="key"
width=""/>
<el-table-column label="操作" width="90" align="center">
<template slot-scope="data">
<el-button type="text" @click="handleView">查看</el-button>
</template>
</el-table-column>
</el-table>
<Pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</div>
</template>
<script>
import Tabs from "@/views/dataBoard/satisfactionEval/components/Tabs/index.vue";
export default {
name: "BusinessRecords",
components: {Tabs},
data() {
return {
total: 10,
queryParams: {
pageNum: 0,
pageSize: 10,
},
type: 1,
typeList: [{
label: ' 12345投诉',
value: 1
}, {
label: '省满意度调查',
value: 2
}, {
label: '社区满意度自查',
value: 3
}, {
label: '事件',
value: 4
}, {
label: '需求',
value: 5
}, {
label: '服务',
value: 6
}, {
label: '回访记录',
value: 7
}],
list: [{},{},{},{},{}]
}
},
methods: {
typeChange() {
},
getList() {
}
}
}
</script>
<style scoped lang="scss">
.business-records {
margin-bottom: 25px;
}
.table {
/deep/ .el-table td, /deep/ .el-table th, /deep/ .el-table tr {
padding: 14px !important;
border:none!important;
min-height: 52px;
}
/deep/ .el-table td, /deep/ .el-table th {
background: none!important;
}
/deep/ .el-table td {
font-size: 14px;
font-weight: 400;
color: #FFFFFF;
text-shadow: 1px 2px 4px rgba(10,32,60,0.51);
}
/deep/ .el-table tr {
background: none;
&:hover {
background-color: rgba(26, 149, 255, 0.3) !important;
}
}
/deep/ .el-table__body-wrapper tr:nth-of-type(odd) {
background: rgba(14, 56, 115, 0.4);
}
/deep/ .el-table {
background: none !important;
&:before {
background: none;
}
}
/deep/ .el-table__header-wrapper tr {
color: #A3B9DA !important;
font-size: 14px;
font-weight: 400;
opacity: 0.76;
background: none;
&:hover {
background: none!important;
}
}
/deep/ .el-table__header-wrapper {
background: none!important;
}
}
</style>

188
src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/EnjoyService.vue

@ -1,188 +0,0 @@
<template>
<div className="event-statistics">
<div id="enjoyServiceChart" style="height: 360px;"></div>
</div>
</template>
<script>
import * as echarts from "echarts";
export default {
name: "EnjoyService",
data() {
return {}
},
mounted() {
this.initCharts()
},
methods: {
initCharts() {
let div = document.getElementById('enjoyServiceChart');
this.myChart = echarts.init(div);
let xData = ['岗位找人', '技能找人', '温暖找人', '服务找人'];
let tq = [300, 90, 48, 39];
const max = Math.max(...tq)
let barArray = new Array(xData.length).fill((parseInt(max / 100) + 1) * 100)
var option = {
title: {
show: false,
text: '',
x: 'center',
top: '15px',
textStyle: {
color: '#333333',
fontWeight: 500,
fontSize: 18,
},
},
tooltip: {
trigger: 'axis',
backgroundColor: 'rgba(13, 64, 71, 0.50)',
borderColor: 'rgba(143, 225, 252, 0.60)',
padding: 8,
textStyle: {
color: '#fff',
},
formatter: function (params) {
console.log(params)
var res = ''
for (var i = 0; i < params.length; i++) {
if (params[i].seriesName != "") {
res += '<p>' + params[0].name + ':' + params[i].data + '</p>'
}
}
return res;
},
},
grid: {
top: '0',
left: '1%',
right: '2%',
bottom: '0',
containLabel: true
},
yAxis: [
{
type: 'category',
axisTick: {
show: false,
},
splitLine: {
show: false,
},
axisLine: {
lineStyle: {
color: '#323c41'
}
},
axisLabel: {
align: 'right',
textStyle: {
fontSize: 12,
color: '#A3B9DA'
}
},
boundaryGap: true,
data: xData,
}, {
type: 'category',
data: xData,
axisTick: {
show: false,
},
axisLine: {show: false},
axisLabel: {
show: false,
},
boundaryGap: true,
}
],
xAxis: [
{
type: 'value',
splitLine: {
show: true,
lineStyle: {
color: 'rgba(4,187,255,0.18)',
type: 'dashed'
},
},
nameTextStyle: {
color: '#A3B9DA',
textStyle: {
fontSize: 12
},
align: 'center'
},
axisLabel: {
show: true,
color: '#A3B9DA',
textStyle: {
fontSize: 12
}
},
axisTick: {
show: false
}
}
],
series: [
{
type: 'bar',
barWidth: 16,
itemStyle: {
// lenged
opacity: 1, //
color: new echarts.graphic.LinearGradient(
1,
0,
0,
0,
[
{
offset: 0,
color: '#6EDDFE' // 0%
},
{
offset: 1,
color: '#0B1F57' // 100%
}
],
false
)
},
data: tq, //data.values
},
{
name: '',
type: 'bar',
barWidth: 66,
barGap: '-60%',
data: barArray,
itemStyle: {
normal: {
color: 'rgba(89,130,194,0.12)'
}
},
zlevel: -1,
yAxisIndex: 1,
}
],
};
this.myChart.setOption(option);
window.addEventListener("resize", () => this.myChart.resize());
},
}
}
</script>
<style scoped lang="scss">
.event-statistics {
padding: 16px 16px;
}
</style>

76
src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/Family.vue

@ -1,76 +0,0 @@
<template>
<div class="family">
<div class="tag">
<div>张三(户主)</div>
<div>入户状态入户一致</div>
<div>居民分类老年人</div>
</div>
<div class="tag">
<div>张三(户主)</div>
<div>入户状态入户一致</div>
<div>居民分类老年人</div>
</div>
<div class="tag">
<div>张三(户主)</div>
<div>入户状态入户一致</div>
</div>
<div class="tag">
<div>张三(户主)</div>
<div>入户状态入户一致</div>
</div>
</div>
</template>
<script>
export default {
name: "Family"
}
</script>
<style scoped lang="scss">
.family {
width: 464px;
height: 340px;
background: url('@/assets/images/manyidu/gx_bg.png') no-repeat center;
position: relative;
margin: 40px auto;
}
.tag {
font-size: 14px;
font-weight: 400;
color: #FFFFFF;
line-height: 22px;
padding: 18px 24px;
box-sizing: border-box;
position: absolute;
&:nth-of-type(1),
&:nth-of-type(2) {
background: url("@/assets/images/manyidu/gx_big.png") no-repeat center;
width: 180px;
height: 100px;
}
&:nth-of-type(3),
&:nth-of-type(4) {
background: url("@/assets/images/manyidu/gx_small.png") no-repeat center;
width: 180px;
height: 70px;
padding: 15px 24px;
}
&:nth-of-type(1) {
left: -98px;
top: 34px;
}
&:nth-of-type(2) {
right: -68px;
top: 34px;
}
&:nth-of-type(3) {
left: -91px;
bottom: 41px;
}
&:nth-of-type(4) {
right: -44px;
bottom: 41px;
}
}
</style>

93
src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/MatterDetails.vue

@ -1,93 +0,0 @@
<template>
<div class="matter-details">
<div class="user-img">
<img src="@/assets/images/manyidu/dn_bg1.png" alt="">
</div>
<div class="tags">
<div class="tag red">满意度风险人员</div>
<div class="tag small">与子女同住</div>
<div class="tag">第三网格</div>
<div class="tag small">入户一致</div>
<div class="tag">13343999999</div>
<div class="tag">四季景园1号楼1单元101</div>
</div>
</div>
</template>
<script>
export default {
name: "MatterDetails"
}
</script>
<style scoped lang="scss">
.matter-details {
width: 607px;
height: 372px;
background: url("@/assets/images/manyidu/dn_bg2.png") no-repeat center bottom;
position: relative;
margin: 12px auto 60px;
}
.user-img {
position: absolute;
left: calc(50% - 87px);
top: calc(50% - 37px);
}
.tag {
position: absolute;
background: url("@/assets/images/manyidu/dn_big.png") center no-repeat;
width: 108px;
height: 107px;
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
font-weight: 400;
color: #FFFFFF;
line-height: 16px;
box-sizing: border-box;
padding: 24px;
text-align: center;
word-break: break-all;
&.small {
width: 89px;
height: 89px;
background: url("@/assets/images/manyidu/dn_small.png") center no-repeat;
padding: 16px;
}
&.red {
background: url("@/assets/images/manyidu/dn_red.png") center no-repeat;
color: #FE0000;
}
&:nth-of-type(1) {
left: 0;
bottom: 15px;
}
&:nth-of-type(2) {
left: 42px;
bottom: 185px;
}
&:nth-of-type(3) {
left: 194px;
bottom: 245px;
}
&:nth-of-type(4) {
left: 384px;
bottom: 240px;
}
&:nth-of-type(5) {
left: 499px;
bottom: 157px;
}
&:nth-of-type(6) {
left: 453px;
bottom: 10px;
}
}
</style>

51
src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/PointsRecord.vue

@ -1,51 +0,0 @@
<template>
<div>
<div class="enjoy-service">
<div class="enjoy-service-item" v-for="(item,index) in 5">
<div class="num">+10</div>
<div class="info">
<div class="title">便民服务-配餐服务</div>
<div class="time">2023-07-15 15:30:30</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: "PointsRecord"
}
</script>
<style scoped lang="scss">
.enjoy-service {
padding-left: 26px;
}
.enjoy-service-item {
color: #FFFFFF;
display: flex;
padding: 14px 16px 14px;
margin-bottom: 8px;
background: #07266B;
.num {
font-size: 24px;
font-weight: 500;
line-height: 22px;
}
.info {
font-size: 14px;
margin-left: 40px;
.title {
font-weight: 500;
margin-bottom: 10px;
}
.time {
font-weight: 400;
color: #A3B9DA;
}
}
}
</style>

4
src/views/dataBoard/satisfactionEval/modules/EventSituation/index.vue

@ -113,7 +113,6 @@ export default {
.cur-month-item {
margin-left: 71px;
.txt {
font-size: 16px;
font-weight: 400;
@ -150,7 +149,8 @@ export default {
.his-month-item {
flex: 1;
position: relative;
padding-left: 25px;
//padding-left: 25px;
text-align: center;
&:after {
content: '';

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

@ -3,42 +3,42 @@
<Tabs v-model="resultType" :list="resultTypeList" @changeVal="resultTypeChange"/>
<div class="screen">
<div class="txt">不满意人员画像</div>
<el-select v-model="typeCondition" @change="getData" placeholder="请选择" class="select" popper-class="selectPopClass">
<el-option
v-for="item in typeConditionList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<!-- <el-select 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">
<div class="tag yellow" v-if="gridName">
<div class="text">{{ gridName }}</div>
</div>
<div class="tag blue">
<div class="tag blue" v-if="ageClassification">
<div class="text">{{ ageClassification }}</div>
</div>
<div class="tag red">
<div class="tag red" v-if="residentTagName">
<div class="text">{{ residentTagName }}</div>
</div>
<div class="tag light">
<div class="tag light" v-if="monthIncomeLevel">
<div class="text">{{ monthIncomeLevel }}</div>
</div>
<div class="tag green">
<div class="tag green" v-if="cultureLevel">
<div class="text">{{ cultureLevel }}</div>
</div>
<div class="tag orange">
<div class="tag orange" v-if="marriageName">
<div class="text">{{ marriageName }}</div>
</div>
<div class="tag purple">
<div class="text">{{ gender==='1'?'男':gender==='2'?'女':gender==='0'?'未知':'' }}</div>
<div class="tag purple" v-if="gender">
<div class="text">{{ gender === '1' ? '男' : gender === '2' ? '女' : gender === '0' ? '未知' : '' }}</div>
</div>
</div>
<div class="btn" @click="$router.push('/dataBoard/satisfactionEval/dissatisfiedPersonnel')">
<div>按画像匹配到同类<span> <b>{{matchPeopleNum?matchPeopleNum:0}}</b></span></div>
<div class="btn" @click="gotopage">
<div>按画像匹配到同类<span> <b>{{ matchPeopleNum ? matchPeopleNum : 0 }}</b></span></div>
<i class="el-icon-arrow-right"></i>
</div>
</div>
@ -61,7 +61,7 @@ export default {
label: '按12345热线投诉结果',
value: '12345'
}],
typeCondition: 1,
typeCondition: '',
typeConditionList: [],
gender: "",
marriageName: "",
@ -70,19 +70,22 @@ export default {
gridName: "",
monthIncomeLevel: "",
residentTagName: "",
matchPeopleNum: 0
matchPeopleNum: 0,
searchParams: ''
}
},
watch: {
"$store.state.chooseArea.chooseName"(val) {
if (val.orgId) {
this.getDisKey()
// this.getDisKey()
this.getData();
}
}
},
mounted() {
if (this.$store.state.chooseArea.chooseName.orgId) {
this.getDisKey()
// this.getDisKey()
this.getData();
}
},
methods: {
@ -90,11 +93,13 @@ export default {
this.resultType = val
this.getData()
},
gotopage() {
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.getData();
})
},
getData() {
@ -113,6 +118,8 @@ export default {
this.monthIncomeLevel = data.monthIncomeLevel;
this.residentTagName = data.residentTagName;
this.matchPeopleNum = data.matchPeopleNum;
this.searchParams = JSON.stringify({...data, ...params})
})
}
}

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

@ -1,6 +1,6 @@
<template>
<div class="potential-people">
<div class="potential-people-item" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople/sjwjj')">
<div class="potential-people-item" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople')">
<div class="icon">
<img src="@/assets/images/manyidu/qz_wjj.png" alt="">
</div>
@ -10,7 +10,7 @@
</div>
<div class="num"><span class="orange">{{ unSolvedNum ? unSolvedNum : 0 }}</span></div>
</div>
<div class="potential-people-item" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople/xqwmz')">
<div class="potential-people-item" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople')">
<div class="icon">
<img src="@/assets/images/manyidu/qz_wmz.png" alt="">
</div>
@ -20,7 +20,7 @@
</div>
<div class="num"><span class="green">{{ unFinishNum ? unFinishNum : 0 }}</span></div>
</div>
<div class="potential-people-item" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople/yxwxfw')">
<div class="potential-people-item" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople')">
<div class="icon">
<img src="@/assets/images/manyidu/qz_wx.png" alt="">
</div>

2
src/views/dataBoard/satisfactionEval/modules/SelfTrend/index.vue

@ -187,7 +187,7 @@ export default {
yAxis: [
{
type: 'value',
name: '单位:人',
name: '单位:' + (this.trendType === 1 ? '人' : '得分'),
nameLocation: 'end',
splitLine: {
show: true,

4
src/views/dataBoard/satisfactionEval/modules/TypesOfDissatisfaction/index.vue

@ -138,7 +138,7 @@ export default {
}
let legendName = ['省满意度调查\n各项不满意人数', '社区满意度自查\n各项不满意人数']
let series = [{
name: "省满意度调查\n各项不满意人数",
name: this.resultType === 2?'12345热线\n事件上报人数':"省满意度调查\n各项不满意人数",
type: "radar",
symbol: "circle",
symbolSize: 7,
@ -161,7 +161,7 @@ export default {
data: [datavaule]
}]
if (this.resultType === 2) {
legendName = ['省满意度调查\n各项不满意人数']
legendName = ['12345热线\n事件上报人数']
} else {
series.push({
name: "社区满意度自查\n各项不满意人数",

98
src/views/dataBoard/satisfactionEval/potentialPeople/index.vue

@ -3,26 +3,17 @@
<Breadcrumb :list="breadcrumbList"/>
<div class="screen">
<el-form :model="queryParams" inline>
<el-select popper-class="selectPopClass" v-model="queryParams.org" size="small" placeholder="按组织">
<el-select popper-class="selectPopClass" v-model="queryParams.agencyId" size="small" placeholder="按组织">
<el-option
v-for="item in monthOptions"
v-for="item in orgOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-select popper-class="selectPopClass" v-model="queryParams.matterType" size="small" placeholder="按不满意类型">
<el-option
v-for="item in monthOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-input v-model="queryParams.name" size="small" placeholder="按姓名"></el-input>
<el-input v-model="queryParams.tel" size="small" placeholder="按电话"></el-input>
<el-button size="small" class="btn" type="primary">查询</el-button>
<el-input v-model="queryParams.name" clearable size="small" placeholder="按姓名"></el-input>
<el-input v-model="queryParams.mobile" clearable size="small" placeholder="按电话"></el-input>
<el-button size="small" class="btn" type="primary" @click="search">查询</el-button>
</el-form>
</div>
@ -38,41 +29,56 @@
label="上报人"/>
<el-table-column
prop="key"
prop="mobile"
label="上报人电话"/>
<el-table-column
prop="key"
prop="agencyName"
label="所属组织">
</el-table-column>
<el-table-column
prop="key"
prop="eventCount"
sortable
label="事件未解决数"/>
label="事件未解决数">
<template slot-scope="{row}">
<el-button type="text" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople/sjwjj?reportUserId='+row.reportUserId)">{{ row.eventCount }}</el-button>
</template>
</el-table-column>
<el-table-column
prop="key"
prop="demandCount"
sortable
label="需求未满足数"/>
label="需求未满足数">
<template slot-scope="{row}">
<el-button type="text" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople/xqwmz?reportUserId='+row.reportUserId)">{{ row.demandCount }}</el-button>
</template>
</el-table-column>
<el-table-column
prop="key"
prop="serviceCount"
sortable
label="应享未享数"/>
label="应享未享数">
<template slot-scope="{row}">
<el-button type="text" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople/yxwxfw?reportUserId='+row.reportUserId)">{{ row.serviceCount }}</el-button>
</template>
</el-table-column>
<el-table-column
prop="key"
prop="countAll"
sortable
label="总数"/>
label="总数">
<template slot-scope="{row}">{{ row.countAll }}
<!-- <el-button type="text"></el-button>-->
</template>
</el-table-column>
</el-table>
</div>
<Pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
@ -87,7 +93,7 @@ import Title from "@/views/dataBoard/satisfactionEval/components/Title"
export default {
name: "dissatisfied",
components: {Breadcrumb, Pagination,Title},
components: {Breadcrumb, Pagination, Title},
data() {
return {
queryParams: {
@ -97,9 +103,10 @@ export default {
matterType: '',
name: '',
tel: '',
pageNum: 1,
pageNo: 1,
pageSize: 10,
},
orgOptions: [],
total: 0,
breadcrumbList: [{
path: '/dataBoard/satisfactionEval/index',
@ -111,14 +118,43 @@ export default {
monthOptions: new Array(12).fill(0).map((_, index) => {
return {label: (index - 0 + 1) + '月', value: (index - 0 + 1)}
}),
list: [{}, {}, {}]
list: []
}
},
mounted() {
this.getOrg()
},
methods: {
search() {
this.queryParams.pageNo = 1
this.getList();
},
getOrg() {
let params = {
orgId: this.$store.state.chooseArea.chooseName.orgId,
level: this.$store.state.chooseArea.chooseName.level
}
this.$http.post(`/gov/org/agency/maporg`, params).then(async ({data: {data}}) => {
this.queryParams.agencyId = this.$store.state.chooseArea.chooseName.orgId
let parent = {value: data.id, label: data.name}
this.orgOptions = [parent, ...data.children.map(item => {
return {
value: item.id,
label: item.name
}
})]
this.getList()
})
},
getList() {
this.$http.get('/governance/satisfactionDetailList/getPotentialDissatisfiedCountDetail?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => {
this.list = data.list;
this.total = data.total;
})
},
handleView({name,id}) {
handleView(id) {
}
}
}

101
src/views/dataBoard/satisfactionEval/potentialPeople/sjwjj.vue

@ -1,32 +1,6 @@
<template>
<div>
<Breadcrumb :list="breadcrumbList"/>
<div class="screen">
<el-form :model="queryParams" inline>
<el-select popper-class="selectPopClass" v-model="queryParams.org" size="small" placeholder="按组织">
<el-option
v-for="item in monthOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-select popper-class="selectPopClass" v-model="queryParams.matterSource" size="small" placeholder="按事件类型">
<el-option
v-for="item in monthOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-input v-model="queryParams.name" size="small" placeholder="按上报人姓名"></el-input>
<el-input v-model="queryParams.tel" size="small" placeholder="按上报人电话"></el-input>
<el-input v-model="queryParams.tel" size="small" placeholder="按事件描述关键词"></el-input>
<el-button size="small" class="btn" type="primary">查询</el-button>
</el-form>
</div>
<div class="table">
<el-table :data="list">
<el-table-column
@ -39,40 +13,40 @@
label="上报人"/>
<el-table-column
prop="key"
prop="mobile"
label="上报人电话"/>
<el-table-column
prop="key"
prop="agencyName"
label="所属组织">
</el-table-column>
<el-table-column
prop="key"
prop="categoryName"
label="事件类型"/>
<el-table-column
prop="key"
prop="eventContent"
show-overflow-tooltip
label="事件描述"/>
<el-table-column
prop="key"
prop="latestProcessingStatus"
label="最新办理状态"/>
<el-table-column
prop="key"
prop="latestProcessingTime"
sortable
label="最近办理时间"/>
<el-table-column
prop="key"
prop="happenTime"
sortable
label="事件上报时间"/>
<el-table-column
sortable
label="详情">
<template>
<el-button type="text">查看</el-button>
<template slot-scope="{row}">
<el-button type="text" @click="handleView(row.id,row.name)">查看</el-button>
</template>
</el-table-column>
@ -82,7 +56,7 @@
<Pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
@ -101,32 +75,39 @@ export default {
data() {
return {
queryParams: {
month: '',
org: '',
matterSource: '',
matterType: '',
name: '',
tel: '',
pageNum: 1,
reportUserId: this.$route.query.reportUserId,
pageNo: 1,
pageSize: 10,
},
total: 0,
breadcrumbList: [{
path: '/dataBoard/satisfactionEval/index',
name: '满意度评价'
}, {
path: '/dataBoard/satisfactionEval/potentialPeople',
name: '潜在不满意数'
}, {
path: '',
name: '事件未解决人数'
name: '事件未解决数'
}],
monthOptions: new Array(12).fill(0).map((_, index) => {
return {label: (index - 0 + 1) + '月', value: (index - 0 + 1)}
}),
list: [{}, {}, {}]
list: []
}
},
activated() {
this.queryParams.reportUserId = this.$route.query.reportUserId
this.queryParams.pageNo = 1
this.getList();
},
methods: {
search() {
this.queryParams.pageNo = 1
this.getList();
},
getList() {
this.$http.get('/governance/satisfactionDetailList/getEventUnSolvedByUserId?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => {
this.list = data.list;
this.total = data.total;
})
},
handleView({name,id}) {
}
@ -137,25 +118,7 @@ export default {
<style scoped lang="scss">
@import "@/assets/scss/dataBoard/table.scss";
.screen {
margin: 25px 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;
}
}
.btn {
margin-left: 46px;
height: 32px;
}
.table {
margin-top: 40px;
}
</style>

102
src/views/dataBoard/satisfactionEval/potentialPeople/xqwmz.vue

@ -1,33 +1,6 @@
<template>
<div>
<Breadcrumb :list="breadcrumbList"/>
<div class="screen">
<el-form :model="queryParams" inline>
<el-select popper-class="selectPopClass" v-model="queryParams.org" size="small" placeholder="按组织">
<el-option
v-for="item in monthOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-select popper-class="selectPopClass" v-model="queryParams.matterSource" size="small" placeholder="按需求类型">
<el-option
v-for="item in monthOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-input v-model="queryParams.name" size="small" placeholder="按需求人姓名"></el-input>
<el-input v-model="queryParams.tel" size="small" placeholder="按需求人电话"></el-input>
<el-input v-model="queryParams.tel" size="small" placeholder="按需求描述关键词"></el-input>
<el-button size="small" class="btn" type="primary">查询</el-button>
</el-form>
</div>
<div class="table">
<el-table :data="list">
@ -37,41 +10,41 @@
width="80"/>
<el-table-column
prop="name"
prop="demandUserName"
label="需求人"/>
<el-table-column
prop="key"
prop="demandUserMobile"
label="需求人电话"/>
<el-table-column
prop="key"
prop="agencyName"
label="所属组织">
</el-table-column>
<el-table-column
prop="key"
prop="content"
show-overflow-tooltip
label="需求描述"/>
<el-table-column
prop="key"
prop="latestProcessingStatus"
label="最新办理状态"/>
<el-table-column
prop="key"
prop="latestProcessingTime"
sortable
label="最近办理时间"/>
<el-table-column
prop="key"
prop="reportTime"
sortable
label="需求提交时间"/>
<el-table-column
sortable
label="详情">
<template>
<el-button type="text">查看</el-button>
<template slot-scope="{row}">
<el-button type="text" @click="handleView(row.id,row.name)">查看</el-button>
</template>
</el-table-column>
@ -81,7 +54,7 @@
<Pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
@ -100,32 +73,39 @@ export default {
data() {
return {
queryParams: {
month: '',
org: '',
matterSource: '',
matterType: '',
name: '',
tel: '',
pageNum: 1,
reportUserId: this.$route.query.reportUserId,
pageNo: 1,
pageSize: 10,
},
total: 0,
breadcrumbList: [{
path: '/dataBoard/satisfactionEval/index',
name: '满意度评价'
}, {
path: '/dataBoard/satisfactionEval/potentialPeople',
name: '潜在不满意数'
}, {
path: '',
name: '需求未满足人数'
name: '需求未满足数'
}],
monthOptions: new Array(12).fill(0).map((_, index) => {
return {label: (index - 0 + 1) + '月', value: (index - 0 + 1)}
}),
list: [{}, {}, {}]
list: []
}
},
activated() {
this.queryParams.reportUserId = this.$route.query.reportUserId
this.queryParams.pageNo = 1
this.getList();
},
methods: {
search() {
this.queryParams.pageNo = 1
this.getList();
},
getList() {
this.$http.get('/governance/satisfactionDetailList/getUserDemandUnSolvedByUserId?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => {
this.list = data.list;
this.total = data.total;
})
},
handleView({name,id}) {
}
@ -136,25 +116,7 @@ export default {
<style scoped lang="scss">
@import "@/assets/scss/dataBoard/table.scss";
.screen {
margin: 25px 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;
}
}
.btn {
margin-left: 46px;
height: 32px;
}
.table {
margin-top: 40px;
}
</style>

104
src/views/dataBoard/satisfactionEval/potentialPeople/yxwxfw.vue

@ -1,32 +1,6 @@
<template>
<div>
<Breadcrumb :list="breadcrumbList"/>
<div class="screen">
<el-form :model="queryParams" inline>
<el-select popper-class="selectPopClass" v-model="queryParams.org" size="small" placeholder="按组织">
<el-option
v-for="item in monthOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-select popper-class="selectPopClass" v-model="queryParams.matterSource" size="small" placeholder="按服务类型">
<el-option
v-for="item in monthOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-input v-model="queryParams.name" size="small" placeholder="按服务对象姓名"></el-input>
<el-input v-model="queryParams.tel" size="small" placeholder="按服务对象电话"></el-input>
<el-input v-model="queryParams.tel" size="small" placeholder="按服务描述关键词"></el-input>
<el-button size="small" class="btn" type="primary">查询</el-button>
</el-form>
</div>
<div class="table">
<el-table :data="list">
<el-table-column
@ -39,40 +13,35 @@
label="服务对象姓名"/>
<el-table-column
prop="key"
prop="mobile"
label="服务对象电话"/>
<el-table-column
prop="key"
prop="organizationName"
label="所属组织">
</el-table-column>
<el-table-column
prop="key"
prop="serviceCategoryName"
label="服务类型"/>
<el-table-column
prop="key"
prop="remark"
show-overflow-tooltip
label="服务描述"/>
<el-table-column
prop="key"
label="是否符合政策条件"/>
<el-table-column
prop="key"
prop="serviceStatus"
sortable
label="是否已完成服务"/>
<el-table-column
prop="key"
prop="serviceTimeStart"
sortable
label="服务发起时间"/>
<el-table-column
sortable
label="详情">
<template>
<el-button type="text">查看</el-button>
<template slot-scope="{row}">
<el-button type="text" @click="handleView(row.id,row.name)">查看</el-button>
</template>
</el-table-column>
@ -82,7 +51,7 @@
<Pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
@ -101,32 +70,39 @@ export default {
data() {
return {
queryParams: {
month: '',
org: '',
matterSource: '',
matterType: '',
name: '',
tel: '',
pageNum: 1,
pageNo: 1,
pageSize: 10,
},
total: 0,
breadcrumbList: [{
path: '/dataBoard/satisfactionEval/index',
name: '满意度评价'
}, {
path: '/dataBoard/satisfactionEval/potentialPeople',
name: '潜在不满意数'
}, {
path: '',
name: '应享未享服务人数'
name: '应享未享服务数'
}],
monthOptions: new Array(12).fill(0).map((_, index) => {
return {label: (index - 0 + 1) + '月', value: (index - 0 + 1)}
}),
list: [{}, {}, {}]
list: []
}
},
activated() {
this.queryParams.reportUserId = this.$route.query.reportUserId
this.queryParams.pageNo = 1
this.getList();
},
methods: {
search() {
this.queryParams.pageNo = 1
this.getList();
},
getList() {
this.$http.get('/governance/satisfactionDetailList/getServiceNotEnjoyedByUserId?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => {
this.list = data.list;
this.total = data.total;
})
},
handleView({name,id}) {
}
@ -137,25 +113,7 @@ export default {
<style scoped lang="scss">
@import "@/assets/scss/dataBoard/table.scss";
.screen {
margin: 25px 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;
}
}
.btn {
margin-left: 46px;
height: 32px;
}
.table {
margin-top: 40px;
}
</style>

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

@ -1,12 +1,12 @@
<template>
<div class="m-topnav">
<div class="back" style="cursor: pointer" @click="goBack()">
<img src="~@/assets/images/shuju/main/back.png" alt="/"/>
<img src="~@/assets/images/shuju/main/back.png" alt="/" />
</div>
<div class="title">{{ customerName }}数据智能分析平台</div>
<div class="selectArea">
<div class="selectArea" v-if="$route.path == '/dataBoard/satisfactionEval/index'">
<el-select @change="setSelectName" v-model="value" popper-class="selectPopClass">
<el-option v-for="(item,index) in options" :key="item.value" :label="item.label" :value="index"></el-option>
<el-option v-for="(item, index) in options" :key="item.value" :label="item.label" :value="index"></el-option>
</el-select>
</div>
<!-- <div class="btn-back" @click="toPage('/')">
@ -26,20 +26,16 @@
</div>
</div>-->
<div class="nav-list">
<div class="nav-item" :class="{ 'z-on': $route.path == '/dataBoard/overview/index' }"
@click="toPage('/dataBoard/overview/index')">
<div class="nav-item" :class="{ 'z-on': $route.path == '/dataBoard/overview/index' }" @click="toPage('/dataBoard/overview/index')">
<span>概览</span>
</div>
<div class="nav-item" :class="{ 'z-on': $route.path.includes('/organizational') }"
@click="toPage('/organizational/dangTree')">
<div class="nav-item" :class="{ 'z-on': $route.path.includes('/organizational') }" @click="toPage('/organizational/dangTree')">
<span>组织架构</span>
</div>
<div class="nav-item" :class="{ 'z-on': $route.path.indexOf('/dataBoard/renfang') != -1 }"
@click="toPage('/dataBoard/renfang/index')">
<div class="nav-item" :class="{ 'z-on': $route.path.indexOf('/dataBoard/renfang') != -1 }" @click="toPage('/dataBoard/renfang/index')">
<span>人房数据</span>
</div>
<div class="nav-item" :class="{ 'z-on': $route.path == '/dataBoard/satisfactionEval/index' }"
@click="toPage('/dataBoard/satisfactionEval/index')">
<div class="nav-item" :class="{ 'z-on': $route.path == '/dataBoard/satisfactionEval/index' }" @click="toPage('/dataBoard/satisfactionEval/index')">
<span>满意度评价</span>
</div>
</div>
@ -155,11 +151,11 @@
</div>
</template>
<script>
import {messages} from "@/i18n";
import { messages } from "@/i18n";
import UpdatePasswordWork from "@/views/main-navbar-update-password-work";
import dateFormat from "dai-js/tools/dateFormat";
import nextTick from "dai-js/tools/nextTick";
import {requestGet} from "@/js/dai/request";
import { requestGet } from "@/js/dai/request";
export default {
inject: ["refresh"],
@ -207,37 +203,38 @@ export default {
},
computed: {},
mounted() {
this.getOrgList()
this.getOrgList();
},
methods: {
getOrgList() {
let params = {}
let params = {};
if (this.options.length) {
params = {orgId: this.options[this.value].id, level: this.options[this.value].level}
params = { orgId: this.options[this.value].id, level: this.options[this.value].level };
}
this.$http.post(`/gov/org/agency/maporg`, params).then(async ({data: {data}}) => {
console.log(data, 'data')
this.value = 0
this.$http.post(`/gov/org/agency/maporg`, params).then(async ({ data: { data } }) => {
console.log(data, "data");
this.value = 0;
this.$store.dispatch("chooseArea/chooseName", {
orgId: data.id,
level: data.level
level: data.level,
});
let children = await this.dealTreeData(data.children)
this.options = [{
...data,
value: data.id,
label: data.name,
}, ...children]
})
let children = await this.dealTreeData(data.children);
this.options = [
{
...data,
value: data.id,
label: data.name,
},
...children,
];
});
},
dealTreeData(treeData, level = 0) {
const data = treeData.map((item) => ({
...item,
value: item.id,
label: item.name,
children: (item.children && item.children.length)
? this.dealTreeData(item.children, level++)
: null,
children: item.children && item.children.length ? this.dealTreeData(item.children, level++) : null,
}));
return data;
},
@ -246,7 +243,7 @@ export default {
orgId: this.options[index].id,
level: this.options[index].level
});*/
this.getOrgList()
this.getOrgList();
},
computeCurrentTime() {
// let now = new Date();
@ -284,7 +281,7 @@ export default {
},
async getWeatherData() {
const url = "https://restapi.amap.com/v3/weather/weatherInfo?key=8c87678f34ce9e8e23245c5161991c4e";
const {data, code, msg} = await requestGet(url, {
const { data, code, msg } = await requestGet(url, {
city: this.$store.state.user.areaCode,
});
if (code === 0) {
@ -294,8 +291,6 @@ export default {
// return this.$message.error("");
}
},
},
};
</script>

15914
yarn-error.log

File diff suppressed because it is too large

291
yarn.lock

@ -268,25 +268,25 @@
chalk "^2.4.2"
"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9":
version "7.22.9"
resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730"
integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==
version "7.22.20"
resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.22.20.tgz#8df6e96661209623f1975d66c35ffca66f3306d0"
integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==
"@babel/core@^7.0.0":
version "7.22.17"
resolved "https://registry.npmmirror.com/@babel/core/-/core-7.22.17.tgz#2f9b0b395985967203514b24ee50f9fd0639c866"
integrity sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ==
version "7.22.20"
resolved "https://registry.npmmirror.com/@babel/core/-/core-7.22.20.tgz#e3d0eed84c049e2a2ae0a64d27b6a37edec385b7"
integrity sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==
dependencies:
"@ampproject/remapping" "^2.2.0"
"@babel/code-frame" "^7.22.13"
"@babel/generator" "^7.22.15"
"@babel/helper-compilation-targets" "^7.22.15"
"@babel/helper-module-transforms" "^7.22.17"
"@babel/helper-module-transforms" "^7.22.20"
"@babel/helpers" "^7.22.15"
"@babel/parser" "^7.22.16"
"@babel/template" "^7.22.15"
"@babel/traverse" "^7.22.17"
"@babel/types" "^7.22.17"
"@babel/traverse" "^7.22.20"
"@babel/types" "^7.22.19"
convert-source-map "^1.7.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
@ -374,10 +374,10 @@
lodash.debounce "^4.0.8"
resolve "^1.14.2"
"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.22.5":
version "7.22.5"
resolved "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98"
integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==
"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5":
version "7.22.20"
resolved "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167"
integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==
"@babel/helper-function-name@7.0.0-beta.44":
version "7.0.0-beta.44"
@ -410,7 +410,7 @@
dependencies:
"@babel/types" "^7.22.5"
"@babel/helper-member-expression-to-functions@^7.22.15", "@babel/helper-member-expression-to-functions@^7.22.5":
"@babel/helper-member-expression-to-functions@^7.22.15":
version "7.22.15"
resolved "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz#b95a144896f6d491ca7863576f820f3628818621"
integrity sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==
@ -432,16 +432,16 @@
dependencies:
"@babel/types" "^7.22.15"
"@babel/helper-module-transforms@^7.22.15", "@babel/helper-module-transforms@^7.22.17", "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9":
version "7.22.17"
resolved "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.17.tgz#7edf129097a51ccc12443adbc6320e90eab76693"
integrity sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==
"@babel/helper-module-transforms@^7.22.15", "@babel/helper-module-transforms@^7.22.20", "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9":
version "7.22.20"
resolved "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.20.tgz#da9edc14794babbe7386df438f3768067132f59e"
integrity sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==
dependencies:
"@babel/helper-environment-visitor" "^7.22.5"
"@babel/helper-environment-visitor" "^7.22.20"
"@babel/helper-module-imports" "^7.22.15"
"@babel/helper-simple-access" "^7.22.5"
"@babel/helper-split-export-declaration" "^7.22.6"
"@babel/helper-validator-identifier" "^7.22.15"
"@babel/helper-validator-identifier" "^7.22.20"
"@babel/helper-optimise-call-expression@^7.22.5":
version "7.22.5"
@ -456,21 +456,21 @@
integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==
"@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.22.5":
version "7.22.17"
resolved "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.17.tgz#dabaa50622b3b4670bd6546fc8db23eb12d89da0"
integrity sha512-bxH77R5gjH3Nkde6/LuncQoLaP16THYPscurp1S8z7S9ZgezCyV3G8Hc+TZiCmY8pz4fp8CvKSgtJMW0FkLAxA==
version "7.22.20"
resolved "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0"
integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==
dependencies:
"@babel/helper-annotate-as-pure" "^7.22.5"
"@babel/helper-environment-visitor" "^7.22.5"
"@babel/helper-wrap-function" "^7.22.17"
"@babel/helper-environment-visitor" "^7.22.20"
"@babel/helper-wrap-function" "^7.22.20"
"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9":
version "7.22.9"
resolved "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779"
integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==
version "7.22.20"
resolved "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793"
integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==
dependencies:
"@babel/helper-environment-visitor" "^7.22.5"
"@babel/helper-member-expression-to-functions" "^7.22.5"
"@babel/helper-environment-visitor" "^7.22.20"
"@babel/helper-member-expression-to-functions" "^7.22.15"
"@babel/helper-optimise-call-expression" "^7.22.5"
"@babel/helper-simple-access@^7.22.5":
@ -506,24 +506,24 @@
resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f"
integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==
"@babel/helper-validator-identifier@^7.22.15", "@babel/helper-validator-identifier@^7.22.5":
version "7.22.15"
resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz#601fa28e4cc06786c18912dca138cec73b882044"
integrity sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==
"@babel/helper-validator-identifier@^7.22.19", "@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.22.5":
version "7.22.20"
resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0"
integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==
"@babel/helper-validator-option@^7.22.15":
version "7.22.15"
resolved "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040"
integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==
"@babel/helper-wrap-function@^7.22.17":
version "7.22.17"
resolved "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.17.tgz#222ac3ff9cc8f9b617cc1e5db75c0b538e722801"
integrity sha512-nAhoheCMlrqU41tAojw9GpVEKDlTS8r3lzFmF0lP52LwblCPbuFSO7nGIZoIcoU5NIm1ABrna0cJExE4Ay6l2Q==
"@babel/helper-wrap-function@^7.22.20":
version "7.22.20"
resolved "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569"
integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==
dependencies:
"@babel/helper-function-name" "^7.22.5"
"@babel/template" "^7.22.15"
"@babel/types" "^7.22.17"
"@babel/types" "^7.22.19"
"@babel/helpers@^7.22.15":
version "7.22.15"
@ -544,11 +544,11 @@
js-tokens "^3.0.0"
"@babel/highlight@^7.22.13":
version "7.22.13"
resolved "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.22.13.tgz#9cda839e5d3be9ca9e8c26b6dd69e7548f0cbf16"
integrity sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==
version "7.22.20"
resolved "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54"
integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==
dependencies:
"@babel/helper-validator-identifier" "^7.22.5"
"@babel/helper-validator-identifier" "^7.22.20"
chalk "^2.4.2"
js-tokens "^4.0.0"
@ -1009,19 +1009,19 @@
invariant "^2.2.0"
lodash "^4.2.0"
"@babel/traverse@^7.22.15", "@babel/traverse@^7.22.17", "@babel/traverse@^7.7.0":
version "7.22.17"
resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.22.17.tgz#b23c203ab3707e3be816043081b4a994fcacec44"
integrity sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg==
"@babel/traverse@^7.22.15", "@babel/traverse@^7.22.20", "@babel/traverse@^7.7.0":
version "7.22.20"
resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.22.20.tgz#db572d9cb5c79e02d83e5618b82f6991c07584c9"
integrity sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw==
dependencies:
"@babel/code-frame" "^7.22.13"
"@babel/generator" "^7.22.15"
"@babel/helper-environment-visitor" "^7.22.5"
"@babel/helper-environment-visitor" "^7.22.20"
"@babel/helper-function-name" "^7.22.5"
"@babel/helper-hoist-variables" "^7.22.5"
"@babel/helper-split-export-declaration" "^7.22.6"
"@babel/parser" "^7.22.16"
"@babel/types" "^7.22.17"
"@babel/types" "^7.22.19"
debug "^4.1.0"
globals "^11.1.0"
@ -1043,13 +1043,13 @@
lodash "^4.2.0"
to-fast-properties "^2.0.0"
"@babel/types@^7.22.15", "@babel/types@^7.22.17", "@babel/types@^7.22.5", "@babel/types@^7.7.0":
version "7.22.17"
resolved "https://registry.npmmirror.com/@babel/types/-/types-7.22.17.tgz#f753352c4610ffddf9c8bc6823f9ff03e2303eee"
integrity sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==
"@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.7.0":
version "7.22.19"
resolved "https://registry.npmmirror.com/@babel/types/-/types-7.22.19.tgz#7425343253556916e440e662bb221a93ddb75684"
integrity sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==
dependencies:
"@babel/helper-string-parser" "^7.22.5"
"@babel/helper-validator-identifier" "^7.22.15"
"@babel/helper-validator-identifier" "^7.22.19"
to-fast-properties "^2.0.0"
"@hapi/address@2.x.x":
@ -1225,9 +1225,9 @@
integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
"@petamoriken/float16@^3.4.7":
version "3.8.3"
resolved "https://registry.npmmirror.com/@petamoriken/float16/-/float16-3.8.3.tgz#adf9dcb5d46b5976b347310f22ce247b8bb48ef9"
integrity sha512-an2OZ7/6er9Jja8EDUvU/tmtGIutdlb6LwXOwgjzoCjDRAsUd8sRZMBjoPEy78Xa9iOp+Kglk2CHgVwZuZbWbw==
version "3.8.4"
resolved "https://registry.npmmirror.com/@petamoriken/float16/-/float16-3.8.4.tgz#cd3c02a7fe39f10ae3dd24ed33bd082053aadd66"
integrity sha512-kB+NJ5Br56ZhElKsf0pM7/PQfrDdDVMRz8f0JM6eVOGE+L89z9hwcst9QvWBBnazzuqGTGtPsJNZoQ1JdNiGSQ==
"@popperjs/core@^2.9.0":
version "2.11.8"
@ -2423,9 +2423,9 @@
integrity sha512-rIAmXyJlqw4KEBO7+u9gxZZSQHaCNnIzYrnNmYVpgfJhxTqO0brCX0SYpqUTkVI5mwwUwzmtspLBGBKroMeynA==
"@types/geojson@*":
version "7946.0.10"
resolved "https://registry.npmmirror.com/@types/geojson/-/geojson-7946.0.10.tgz#6dfbf5ea17142f7f9a043809f1cd4c448cb68249"
integrity sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==
version "7946.0.11"
resolved "https://registry.npmmirror.com/@types/geojson/-/geojson-7946.0.11.tgz#012c17cb2256ad8de78560da851ab914a7b9b40e"
integrity sha512-L7A0AINMXQpVwxHJ4jxD6/XjZ4NDufaRlUJHjNIFKYUFBH1SvOW+neaqb0VTRSLW5suSrSu19ObFEFnfNcr+qg==
"@types/geojson@7946.0.8":
version "7946.0.8"
@ -2446,9 +2446,9 @@
integrity sha512-Xxk14BrwHnGi0xlURPRb+Y0UNn2w3cTkeFm7pKMsYOaNgH/kabbJLhcBoNIodwsbTz7Z8KcWjtDvlGH0nc0U9w==
"@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8":
version "7.0.12"
resolved "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb"
integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==
version "7.0.13"
resolved "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85"
integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==
"@types/json5@^0.0.29":
version "0.0.29"
@ -2468,9 +2468,9 @@
integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==
"@types/node@*":
version "20.6.0"
resolved "https://registry.npmmirror.com/@types/node/-/node-20.6.0.tgz#9d7daa855d33d4efec8aea88cd66db1c2f0ebe16"
integrity sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==
version "20.6.3"
resolved "https://registry.npmmirror.com/@types/node/-/node-20.6.3.tgz#5b763b321cd3b80f6b8dde7a37e1a77ff9358dd9"
integrity sha512-HksnYH4Ljr4VQgEy2lTStbCKv/P590tmPe5HqOnv9Gprffgv5WXAY+Y5Gqniu0GGqeTCUdBnzC3QSrzPkBkAMA==
"@types/normalize-package-data@^2.4.0":
version "2.4.1"
@ -3356,7 +3356,7 @@ array.prototype.reduce@^1.0.6:
es-array-method-boxes-properly "^1.0.0"
is-string "^1.0.7"
arraybuffer.prototype.slice@^1.0.1:
arraybuffer.prototype.slice@^1.0.2:
version "1.0.2"
resolved "https://registry.npmmirror.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12"
integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==
@ -3905,14 +3905,14 @@ browserslist@^2.11.3:
electron-to-chromium "^1.3.30"
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.21.10, browserslist@^4.21.9, browserslist@^4.3.4, browserslist@^4.5.4:
version "4.21.10"
resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0"
integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==
version "4.21.11"
resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.11.tgz#35f74a3e51adc4d193dcd76ea13858de7b8fecb8"
integrity sha512-xn1UXOKUz7DjdGlg9RrUr0GGiWzI97UQJnugHtH0OLDfJB7jMgoIkYvRIEO1l9EeEERVqeqLYOcFBW9ldjypbQ==
dependencies:
caniuse-lite "^1.0.30001517"
electron-to-chromium "^1.4.477"
caniuse-lite "^1.0.30001538"
electron-to-chromium "^1.4.526"
node-releases "^2.0.13"
update-browserslist-db "^1.0.11"
update-browserslist-db "^1.0.13"
buffer-crc32@^0.2.1, buffer-crc32@^0.2.13:
version "0.2.13"
@ -4112,10 +4112,10 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001517:
version "1.0.30001532"
resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001532.tgz#c6a4d5d2da6d2b967f0ee5e12e7f680db6ad2fca"
integrity sha512-FbDFnNat3nMnrROzqrsg314zhqN5LGQ1kyyMk2opcrwGbVGpHRhgCWtAgD5YJUqNAiQ+dklreil/c3Qf1dfCTw==
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001538:
version "1.0.30001538"
resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001538.tgz#9dbc6b9af1ff06b5eb12350c2012b3af56744f3f"
integrity sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==
cardinal@~0.4.2:
version "0.4.4"
@ -4352,9 +4352,9 @@ cli-spinners@^0.2.0:
integrity sha512-1sdlgy47mFLr4OfiKC/raeqJ4Jt6oZskLs51esqe/rFqcR23DNF++CbsDpv3hsvwGWHA/+lnxf4xdDtZZtkPBA==
cli-spinners@^2.0.0:
version "2.9.0"
resolved "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.0.tgz#5881d0ad96381e117bbe07ad91f2008fe6ffd8db"
integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==
version "2.9.1"
resolved "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.1.tgz#9c0b9dad69a6d47cbb4333c14319b060ed395a35"
integrity sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==
cli-width@^2.0.0:
version "2.2.1"
@ -5260,11 +5260,21 @@ defaults@^1.0.0, defaults@^1.0.3:
dependencies:
clone "^1.0.2"
define-data-property@^1.0.1:
version "1.1.0"
resolved "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.0.tgz#0db13540704e1d8d479a0656cf781267531b9451"
integrity sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==
dependencies:
get-intrinsic "^1.2.1"
gopd "^1.0.1"
has-property-descriptors "^1.0.0"
define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0:
version "1.2.0"
resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5"
integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==
version "1.2.1"
resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c"
integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
dependencies:
define-data-property "^1.0.1"
has-property-descriptors "^1.0.0"
object-keys "^1.1.1"
@ -5562,10 +5572,10 @@ ejs@^2.6.1:
resolved "https://registry.npmmirror.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba"
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
electron-to-chromium@^1.3.30, electron-to-chromium@^1.4.477:
version "1.4.513"
resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.513.tgz#41a50bf749aa7d8058ffbf7a131fc3327a7b1675"
integrity sha512-cOB0xcInjm+E5qIssHeXJ29BaUyWpMyFKT5RB3bsLENDheCja0wMkHJyiPl0NBE/VzDI7JDuNEQWhe6RitEUcw==
electron-to-chromium@^1.3.30, electron-to-chromium@^1.4.526:
version "1.4.527"
resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.527.tgz#5acf0bcc5bf015eb31dd2279989a3712e341a554"
integrity sha512-EafxEiEDzk2aLrdbtVczylHflHdHkNrpGNHIgDyA63sUQLQVS2ayj2hPw3RsVB42qkwURH+T2OxV7kGPUuYszA==
element-resize-event@^3.0.3:
version "3.0.6"
@ -5696,17 +5706,17 @@ error-stack-parser@^2.0.6:
stackframe "^1.3.4"
es-abstract@^1.17.2, es-abstract@^1.22.1:
version "1.22.1"
resolved "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc"
integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==
version "1.22.2"
resolved "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a"
integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==
dependencies:
array-buffer-byte-length "^1.0.0"
arraybuffer.prototype.slice "^1.0.1"
arraybuffer.prototype.slice "^1.0.2"
available-typed-arrays "^1.0.5"
call-bind "^1.0.2"
es-set-tostringtag "^2.0.1"
es-to-primitive "^1.2.1"
function.prototype.name "^1.1.5"
function.prototype.name "^1.1.6"
get-intrinsic "^1.2.1"
get-symbol-description "^1.0.0"
globalthis "^1.0.3"
@ -5722,23 +5732,23 @@ es-abstract@^1.17.2, es-abstract@^1.22.1:
is-regex "^1.1.4"
is-shared-array-buffer "^1.0.2"
is-string "^1.0.7"
is-typed-array "^1.1.10"
is-typed-array "^1.1.12"
is-weakref "^1.0.2"
object-inspect "^1.12.3"
object-keys "^1.1.1"
object.assign "^4.1.4"
regexp.prototype.flags "^1.5.0"
safe-array-concat "^1.0.0"
regexp.prototype.flags "^1.5.1"
safe-array-concat "^1.0.1"
safe-regex-test "^1.0.0"
string.prototype.trim "^1.2.7"
string.prototype.trimend "^1.0.6"
string.prototype.trimstart "^1.0.6"
string.prototype.trim "^1.2.8"
string.prototype.trimend "^1.0.7"
string.prototype.trimstart "^1.0.7"
typed-array-buffer "^1.0.0"
typed-array-byte-length "^1.0.0"
typed-array-byte-offset "^1.0.0"
typed-array-length "^1.0.4"
unbox-primitive "^1.0.2"
which-typed-array "^1.1.10"
which-typed-array "^1.1.11"
es-array-method-boxes-properly@^1.0.0:
version "1.0.0"
@ -6572,9 +6582,9 @@ follow-redirects@1.5.10:
debug "=3.1.0"
follow-redirects@^1.0.0:
version "1.15.2"
resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
version "1.15.3"
resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a"
integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==
for-each@^0.3.3:
version "0.3.3"
@ -6703,7 +6713,7 @@ function-bind@^1.1.1:
resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
function.prototype.name@^1.1.5:
function.prototype.name@^1.1.6:
version "1.1.6"
resolved "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd"
integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==
@ -8284,7 +8294,7 @@ is-symbol@^1.0.2, is-symbol@^1.0.3:
dependencies:
has-symbols "^1.0.2"
is-typed-array@^1.1.10, is-typed-array@^1.1.9:
is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9:
version "1.1.12"
resolved "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a"
integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==
@ -9628,9 +9638,9 @@ mz@^2.4.0:
thenify-all "^1.0.0"
nan@^2.12.1, nan@^2.13.2:
version "2.17.0"
resolved "https://registry.npmmirror.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb"
integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==
version "2.18.0"
resolved "https://registry.npmmirror.com/nan/-/nan-2.18.0.tgz#26a6faae7ffbeb293a39660e88a76b82e30b7554"
integrity sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==
nanoid@^3.3.6:
version "3.3.6"
@ -11010,9 +11020,9 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.2, postcss@^7.0.27, postcss@^7.0.32
source-map "^0.6.1"
postcss@^8.2.15, postcss@^8.4.14:
version "8.4.29"
resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.29.tgz#33bc121cf3b3688d4ddef50be869b2a54185a1dd"
integrity sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==
version "8.4.30"
resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.30.tgz#0e0648d551a606ef2192a26da4cabafcc09c1aa7"
integrity sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==
dependencies:
nanoid "^3.3.6"
picocolors "^1.0.0"
@ -11464,9 +11474,9 @@ reflect-metadata@^0.1.13:
integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==
regenerate-unicode-properties@^10.1.0:
version "10.1.0"
resolved "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c"
integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==
version "10.1.1"
resolved "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480"
integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==
dependencies:
regenerate "^1.4.2"
@ -11507,14 +11517,14 @@ regex-not@^1.0.0, regex-not@^1.0.2:
extend-shallow "^3.0.2"
safe-regex "^1.1.0"
regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.5.0:
version "1.5.0"
resolved "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb"
integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==
regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.5.1:
version "1.5.1"
resolved "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e"
integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==
dependencies:
call-bind "^1.0.2"
define-properties "^1.2.0"
functions-have-names "^1.2.3"
set-function-name "^2.0.0"
regexpp@^1.0.1:
version "1.1.0"
@ -11706,9 +11716,9 @@ resolve-url@^0.2.1:
integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==
resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.22.4, resolve@^1.4.0, resolve@^1.8.1:
version "1.22.4"
resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34"
integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==
version "1.22.6"
resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362"
integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==
dependencies:
is-core-module "^2.13.0"
path-parse "^1.0.7"
@ -11849,7 +11859,7 @@ rx-lite@*, rx-lite@^4.0.8:
resolved "https://registry.npmmirror.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
integrity sha512-Cun9QucwK6MIrp3mry/Y7hqD1oFqTYLQ4pGxaHTjIdaFDWRGGLikqp6u8LcWJnzpoALg9hap+JGk8sFIUuEGNA==
safe-array-concat@^1.0.0:
safe-array-concat@^1.0.0, safe-array-concat@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c"
integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==
@ -12066,6 +12076,15 @@ set-blocking@^2.0.0, set-blocking@~2.0.0:
resolved "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
set-function-name@^2.0.0:
version "2.0.1"
resolved "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a"
integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==
dependencies:
define-data-property "^1.0.1"
functions-have-names "^1.2.3"
has-property-descriptors "^1.0.0"
set-value@^2.0.0, set-value@^2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
@ -12368,9 +12387,9 @@ spdx-expression-parse@^3.0.0:
spdx-license-ids "^3.0.0"
spdx-license-ids@^3.0.0:
version "3.0.13"
resolved "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5"
integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==
version "3.0.15"
resolved "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz#142460aabaca062bc7cd4cc87b7d50725ed6a4ba"
integrity sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==
spdy-transport@^3.0.0:
version "3.0.0"
@ -12590,7 +12609,7 @@ string.prototype.padstart@^3.0.0:
define-properties "^1.2.0"
es-abstract "^1.22.1"
string.prototype.trim@^1.2.7:
string.prototype.trim@^1.2.8:
version "1.2.8"
resolved "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd"
integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==
@ -12599,7 +12618,7 @@ string.prototype.trim@^1.2.7:
define-properties "^1.2.0"
es-abstract "^1.22.1"
string.prototype.trimend@^1.0.6:
string.prototype.trimend@^1.0.7:
version "1.0.7"
resolved "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e"
integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==
@ -12608,7 +12627,7 @@ string.prototype.trimend@^1.0.6:
define-properties "^1.2.0"
es-abstract "^1.22.1"
string.prototype.trimstart@^1.0.6:
string.prototype.trimstart@^1.0.7:
version "1.0.7"
resolved "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298"
integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==
@ -13851,10 +13870,10 @@ upath@^1.1.1:
resolved "https://registry.npmmirror.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
update-browserslist-db@^1.0.11:
version "1.0.11"
resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940"
integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==
update-browserslist-db@^1.0.13:
version "1.0.13"
resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4"
integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==
dependencies:
escalade "^3.1.1"
picocolors "^1.0.0"
@ -13901,9 +13920,9 @@ url-slug@2.0.0:
unidecode "0.1.8"
url@^0.11.0:
version "0.11.2"
resolved "https://registry.npmmirror.com/url/-/url-0.11.2.tgz#02f250a6e0d992b781828cd456d44f49bf2e19dd"
integrity sha512-7yIgNnrST44S7PJ5+jXbdIupfU1nWUdQJBFBeJRclPXiWgCvrSq5Frw8lr/i//n5sqDfzoKmBymMS81l4U/7cg==
version "0.11.3"
resolved "https://registry.npmmirror.com/url/-/url-0.11.3.tgz#6f495f4b935de40ce4a0a52faee8954244f3d3ad"
integrity sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==
dependencies:
punycode "^1.4.1"
qs "^6.11.2"
@ -14390,7 +14409,7 @@ which-module@^2.0.0:
resolved "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409"
integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==
which-typed-array@^1.1.10, which-typed-array@^1.1.11:
which-typed-array@^1.1.11:
version "1.1.11"
resolved "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a"
integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==

Loading…
Cancel
Save