Browse Source

Merge remote-tracking branch 'origin/jw_feature_dev' into jw_feature_zhanlibiao

feature
战立标 2 years ago
parent
commit
01a347f825
  1. 1
      src/views/dataBoard/cpts/family/modules/BusinessRecords.vue
  2. 6
      src/views/dataBoard/cpts/family/modules/Family.vue
  3. 1
      src/views/dataBoard/cpts/personnel/index.vue
  4. 1
      src/views/dataBoard/cpts/personnel/modules/BusinessRecords.vue
  5. 6
      src/views/dataBoard/cpts/personnel/modules/Family.vue
  6. 2
      src/views/dataBoard/cpts/personnel/modules/businessTables/community.vue
  7. 2
      src/views/dataBoard/cpts/personnel/modules/businessTables/complaint.vue
  8. 2
      src/views/dataBoard/cpts/personnel/modules/businessTables/economize.vue
  9. 2
      src/views/dataBoard/cpts/personnel/modules/businessTables/give-service.vue
  10. 2
      src/views/dataBoard/cpts/personnel/modules/businessTables/reporting-events.vue
  11. 2
      src/views/dataBoard/cpts/personnel/modules/businessTables/resident.vue
  12. 10
      src/views/dataBoard/overview/components/DynamicHumanRoomData.vue
  13. 1
      src/views/dataBoard/overview/components/FollowUp.vue
  14. 32
      src/views/dataBoard/overview/components/GridUpdateRanking.vue
  15. 37
      src/views/dataBoard/overview/components/RankingGridData.vue
  16. 162
      src/views/dataBoard/overview/components/jdwgy.vue
  17. 87
      src/views/dataBoard/overview/components/sq12345.vue
  18. 39
      src/views/dataBoard/overview/components/sqrfph.vue
  19. 59
      src/views/modules/base/residentManagement/louzhang/addForm.vue
  20. 28
      src/views/modules/communityParty/partyOrg/orgTree.vue
  21. 159
      src/views/modules/satisfaction/communitySelfInsp/followUpDetail.vue
  22. 6
      src/views/modules/satisfaction/communitySelfInsp/index.vue

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

@ -135,6 +135,7 @@ export default {
.business-records {
margin-top: 12px;
margin-bottom: 25px;
height: 392px;
}
.table {
/deep/ .el-table td,

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

@ -10,9 +10,7 @@
{{ item.name }}
</div>
<div v-if="item.houseHolderRel">
关系{{
item.houseHolderRel == "本人" ? "户主" : item.houseHolderRel
}}
关系{{ item.houseHolderRel == "本人" ? "户主" : item.houseHolderRel }}
</div>
</div>
<div style="padding-top: 220px; margin-left: 148px">
@ -67,7 +65,7 @@ export default {
)
.then(({ data: res }) => {
const data = res.data;
this.data = data;
this.data = data.length > 12 ? data.slice(0, 12) : data;
const arr = data.filter((item) => item.houseHolderRel == "本人");
this.hzData = arr.length > 0 ? arr[0] : {};
this.$emit("setJuminData", data);

1
src/views/dataBoard/cpts/personnel/index.vue

@ -17,6 +17,7 @@
<el-row>
<el-col :span="12">
<data-title title="享受服务次数统计" />
<div style="height:12px"></div>
<EnjoyService />
</el-col>
<el-col :span="11" :offset="1">

1
src/views/dataBoard/cpts/personnel/modules/BusinessRecords.vue

@ -106,6 +106,7 @@ export default {
.business-records {
margin-top: 12px;
margin-bottom: 25px;
height: 392px;
}
.table {
/deep/ .el-table td,

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

@ -15,9 +15,7 @@
</div>
<div style="padding-top: 220px; margin-left: 148px">
<div class="user-name">{{ info.name }}</div>
<div class="user-gx" v-if="info.houseHolderRel">
户主
</div>
<div class="user-gx" v-if="info.houseHolderRel">户主</div>
</div>
</div>
</template>
@ -91,7 +89,7 @@ export default {
.then(({ data: res }) => {
if (res.code == 0) {
const data = res.data;
this.data = data;
this.data = data.length > 12 ? data.slice(0, 12) : data;
const arr = data.filter((item) => item.houseHolderRel == "本人");
this.info = arr.length > 0 ? arr[0] : {};
}

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

@ -12,7 +12,7 @@
</template>
</el-table-column>
</el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 20px">
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>

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

@ -13,7 +13,7 @@
</template>
</el-table-column>
</el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 20px">
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>

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

@ -12,7 +12,7 @@
</template>
</el-table-column>
</el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 20px">
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>

2
src/views/dataBoard/cpts/personnel/modules/businessTables/give-service.vue

@ -12,7 +12,7 @@
</template>
</el-table-column>
</el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 20px">
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>

2
src/views/dataBoard/cpts/personnel/modules/businessTables/reporting-events.vue

@ -12,7 +12,7 @@
</template>
</el-table-column>
</el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 20px">
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>

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

@ -12,7 +12,7 @@
</template>
</el-table-column>
</el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 20px">
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>

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

@ -12,7 +12,7 @@
</div>
</div>-->
<div style="overflow: hidden">
<div ref="animation">
<div ref="animation2">
<div class="dhrd-item" v-for="(item, index) in list" :key="index">
<div class="time">
{{ $moment(item.changeTime).format("HH:mm") }}
@ -86,14 +86,16 @@ export default {
if (this.list.length > 4) {
this.$nextTick(() => {
const aniHeight =
this.$refs.animation.querySelector(".tr").offsetHeight *
this.$refs.animation2.querySelector(".tr").offsetHeight *
this.pmList.length;
this.$refs.animation.style.animation = "move 10s linear infinite";
this.$refs.animation2.style.animation = `move1 ${this.pmList.length}s linear infinite`;
document.styleSheets[0].insertRule(
`@keyframes move{0% {transform: translateY(0px);}100% {transform: translateY(-${aniHeight}px);}`,
`@keyframes move2{0% {transform: translateY(0px);}100% {transform: translateY(-${aniHeight}px);}`,
0
);
});
} else {
this.$refs.animation2.style.animation = null;
}
});
},

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

@ -122,6 +122,7 @@ export default {
rgba(16, 50, 103, 0) 50%,
rgba(1, 94, 234, 0.1) 100%
);
height: 190px;
padding: 40px 19px;
display: flex;
justify-content: space-between;

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

@ -1,6 +1,6 @@
<template>
<div class="m-subbox m-sqrfph">
<div class="table">
<div class="table" v-if="pmList.length > 0">
<div class="tr">
<div class="th">排名</div>
<div class="th">社区</div>
@ -9,7 +9,7 @@
<div class="th">人房更新总数</div>
</div>
<div style="overflow: hidden">
<div ref="animation">
<div ref="animation1">
<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 }}
@ -36,6 +36,17 @@
</div>
</div>
</div>
<div
v-else
style="width: 100%; height: 100%; text-align: center; padding-top: 20px"
>
<img
width="268px"
height="128px"
src="~@/assets/images/overview/zanwu.png"
/>
<div class="zanwuText">近3日暂无更新</div>
</div>
</div>
</template>
<script>
@ -86,14 +97,16 @@ export default {
if (this.pmList.length > 3) {
this.$nextTick(() => {
const aniHeight =
this.$refs.animation.querySelector(".tr").offsetHeight *
this.$refs.animation1.querySelector(".tr").offsetHeight *
this.pmList.length;
this.$refs.animation.style.animation = "move 10s linear infinite";
this.$refs.animation1.style.animation = `move1 ${this.pmList.length}s linear infinite`;
document.styleSheets[0].insertRule(
`@keyframes move{0% {transform: translateY(0px);}100% {transform: translateY(-${aniHeight}px);}`,
`@keyframes move1{0% {transform: translateY(0px);}100% {transform: translateY(-${aniHeight}px);}`,
0
);
});
} else {
this.$refs.animation1.style.animation = null;
}
});
},
@ -105,6 +118,13 @@ export default {
<style lang="scss" scoped>
.m-sqrfph {
padding-top: 0 !important;
height: 160px !important;
height: 150px !important;
}
.zanwuText {
margin-top: -34px;
font-size: 14px;
font-family: PingFang SC;
font-weight: 500;
color: #a3b9da;
}
</style>

37
src/views/dataBoard/overview/components/RankingGridData.vue

@ -7,7 +7,7 @@
>
</div>
</div>
<div class="table">
<div v-if="pmList.length > 0" class="table">
<div class="tr">
<div class="th">排名</div>
<div class="th">网格</div>
@ -16,7 +16,7 @@
<div class="th">人房更新总数</div>
</div>
<div style="overflow: hidden">
<div ref="animation">
<div ref="animation3">
<div class="tr" v-for="item in pmList" :key="item.rank">
<div :class="item.rank < 4 ? `td tdbg${item.rank}` : 'td'">
{{ item.rank }}
@ -43,6 +43,23 @@
</div>
</div>
</div>
<div
v-else
style="
width: 100%;
height: 100%;
text-align: center;
padding-top: 100px;
color: #ffffff;
"
>
<img
width="268px"
height="128px"
src="~@/assets/images/overview/zanwu.png"
/>
<div class="zanwuText">暂无数据</div>
</div>
</div>
</template>
<script>
@ -101,15 +118,16 @@ export default {
if (this.pmList.length > 9) {
this.$nextTick(() => {
const aniHeight =
this.$refs.animation.querySelector(".tr").offsetHeight *
this.$refs.animation3.querySelector(".tr").offsetHeight *
this.pmList.length;
this.$refs.animation.style.animation =
"move 10s linear infinite";
this.$refs.animation3.style.animation = `move3 ${this.pmList.length}s linear infinite`;
document.styleSheets[0].insertRule(
`@keyframes move{0% {transform: translateY(0px);}100% {transform: translateY(-${aniHeight}px);}`,
`@keyframes move3{0% {transform: translateY(0px);}100% {transform: translateY(-${aniHeight}px);}`,
0
);
});
} else {
this.$refs.animation3.style.animation = null;
}
}
});
@ -143,4 +161,11 @@ export default {
}
}
}
.zanwuText {
margin-top: -34px;
font-size: 14px;
font-family: PingFang SC;
font-weight: 500;
color: #a3b9da;
}
</style>

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

@ -1,7 +1,16 @@
<template>
<div class="m-subbox m-jdwgy">
<div class="table">
<el-table :data="list" v-if="currentLevelData.orgLevel != 'grid' && peopleType != 'staffDepartment'" v-loading="loading" element-loading-background="rgba(0, 0, 0, 0.3)" max-height="190px" height="190px">
<el-table
:data="list"
v-if="
currentLevelData.orgLevel != 'grid' && peopleType != 'staffDepartment'
"
v-loading="loading"
element-loading-background="rgba(0, 0, 0, 0.3)"
max-height="190px"
height="190px"
>
<el-table-column label="序号" type="index" width="80" />
<el-table-column prop="orgName" width="120" label="组织名称" />
<el-table-column prop="name" width="120" label="姓名" />
@ -18,26 +27,82 @@
</el-table-column>
<el-table-column prop="operate" width="80" label="操作">
<template slot-scope="scope">
<el-button @click="handleClick(scope.row)" type="text" size="small"> 查看</el-button>
<el-button @click="handleClick(scope.row)" type="text" size="small">
查看</el-button
>
</template>
</el-table-column>
<template slot="empty">
<div
style="
width: 100%;
height: 100%;
text-align: center;
padding-top: 50px;
color: #ffffff;
"
>
<img
width="268px"
height="128px"
src="~@/assets/images/overview/zanwu.png"
/>
<div class="zanwuText">暂无数据</div>
</div>
</template>
</el-table>
<!-- 单位/组织 -->
<el-table :data="unitList" v-if="currentLevelData.orgLevel != 'grid' && peopleType === 'staffDepartment'" v-loading="loading" element-loading-background="rgba(0, 0, 0, 0.3)" max-height="190px" height="190px">
<el-table
:data="unitList"
v-if="
currentLevelData.orgLevel != 'grid' &&
peopleType === 'staffDepartment'
"
v-loading="loading"
element-loading-background="rgba(0, 0, 0, 0.3)"
max-height="190px"
height="190px"
>
<el-table-column label="序号" type="index" width="80" />
<el-table-column prop="departmentName" label="单位名称" />
<el-table-column prop="departmentDuty" label="职责" />
<el-table-column prop="deptType" label="单位类型" />
<el-table-column prop="totalUser" label="总人数" />
<template slot="empty">
<div
style="
width: 100%;
height: 100%;
text-align: center;
padding-top: 50px;
color: #ffffff;
"
>
<img
width="268px"
height="128px"
src="~@/assets/images/overview/zanwu.png"
/>
<div class="zanwuText">暂无数据</div>
</div>
</template>
</el-table>
<el-table v-if="currentLevelData.orgLevel == 'grid'" :data="wglist" v-loading="loading" max-height="190px" height="190px">
<el-table
v-if="currentLevelData.orgLevel == 'grid'"
:data="wglist"
v-loading="loading"
max-height="190px"
height="190px"
>
<el-table-column label="序号" type="index" width="50" />
<el-table-column prop="name" width="140" label="组织名称" />
<el-table-column prop="type" width="90" label="类型">
<template slot-scope="scope">
<span :style="'color:' + scope.row.type">{{ types[scope.row.type] }}</span>
<span :style="'color:' + scope.row.type">{{
types[scope.row.type]
}}</span>
</template>
</el-table-column>
<el-table-column prop="houseNum" width="90" label="户数" />
@ -47,9 +112,29 @@
<el-table-column prop="safetyNum" label="安全隐患" />
<el-table-column prop="operate" width="80" label="操作">
<template slot-scope="scope">
<el-button @click="handleClick(scope.row)" type="text" size="small"> 查看</el-button>
<el-button @click="handleClick(scope.row)" type="text" size="small">
查看</el-button
>
</template>
</el-table-column>
<template slot="empty">
<div
style="
width: 100%;
height: 100%;
text-align: center;
padding-top: 50px;
color: #ffffff;
"
>
<img
width="268px"
height="128px"
src="~@/assets/images/overview/zanwu.png"
/>
<div class="zanwuText">暂无数据</div>
</div>
</template>
</el-table>
</div>
</div>
@ -109,21 +194,41 @@ export default {
this.loading = true;
if (this.currentLevelData.orgLevel == "grid") {
const personType = this.ifUnit ? "unit" : this.peopleType;
this.$http.get("/actual/base/streetOverview/queryPersonnelGridGroup?personnelType=" + personType + "&level=" + this.currentLevelData.orgLevel + "&orgId=" + this.currentLevelData.orgId).then(({ data: { data } }) => {
this.loading = false;
this.wglist = data;
this.$emit(
"setPoint",
data.filter((item) => item.longitude && item.latitude)
);
});
this.$http
.get(
"/actual/base/streetOverview/queryPersonnelGridGroup?personnelType=" +
personType +
"&level=" +
this.currentLevelData.orgLevel +
"&orgId=" +
this.currentLevelData.orgId
)
.then(({ data: { data } }) => {
this.loading = false;
this.wglist = data;
this.$emit(
"setPoint",
data.filter((item) => item.longitude && item.latitude)
);
});
} else {
this.$http.get("/actual/base/streetOverview/queryPersonnelGroup?level=" + this.currentLevelData.orgLevel + "&orgId=" + this.currentLevelData.orgId + "&personnelType=" + this.peopleType).then(({ data: { data } }) => {
this.loading = false;
this.list = data.personnelInfoVOList;
this.unitList = data.departmentInfoVOList ? data.departmentInfoVOList : [];
this.$emit("setNum", data.orgPersonnelVOList);
});
this.$http
.get(
"/actual/base/streetOverview/queryPersonnelGroup?level=" +
this.currentLevelData.orgLevel +
"&orgId=" +
this.currentLevelData.orgId +
"&personnelType=" +
this.peopleType
)
.then(({ data: { data } }) => {
this.loading = false;
this.list = data.personnelInfoVOList;
this.unitList = data.departmentInfoVOList
? data.departmentInfoVOList
: [];
this.$emit("setNum", data.orgPersonnelVOList);
});
}
},
handleClick(item) {
@ -150,7 +255,11 @@ export default {
},
};
</script>
<style lang="scss" src="@/assets/scss/dataBoard/overview/index.scss" scoped></style>
<style
lang="scss"
src="@/assets/scss/dataBoard/overview/index.scss"
scoped
></style>
<style lang="scss" src="@/assets/scss/dataBoard/table.scss" scoped></style>
<style lang="scss" scoped>
/deep/ .table {
@ -158,14 +267,21 @@ export default {
&:before {
display: none !important;
}
td {
padding: 3px 14px !important;
}
// th {
// padding: 6px 0 4px !important;
// padding: 9px 14px !important;
// }
}
}
.zanwuText {
margin-top: -54px;
font-size: 14px;
font-family: PingFang SC;
font-weight: 500;
color: #a3b9da;
}
</style>

87
src/views/dataBoard/overview/components/sq12345.vue

@ -1,6 +1,6 @@
<template>
<div class="m-subbox m-sq12345">
<div class="table">
<div class="table" v-if="pmList.length > 0">
<div class="tr">
<div class="th">排名</div>
<div class="th">社区</div>
@ -9,7 +9,7 @@
<div class="th">已办结</div>
</div>
<div style="overflow: hidden">
<div ref="animation">
<div ref="animation4">
<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 }}
@ -22,7 +22,9 @@
<!-- 无缝滚动 -->
<div v-if="pmList.length > 7">
<div class="tr" v-for="(item, index) in pmList" :key="index">
<div :class="index - 0 + 1 < 4 ? `td tdbg${index - 0 + 1}` : 'td'">
<div
:class="index - 0 + 1 < 4 ? `td tdbg${index - 0 + 1}` : 'td'"
>
{{ index - 0 + 1 }}
</div>
<div class="td">{{ item.orgName }}</div>
@ -34,6 +36,23 @@
</div>
</div>
</div>
<div
v-else
style="
width: 100%;
height: 100%;
text-align: center;
padding-top: 100px;
color: #ffffff;
"
>
<img
width="268px"
height="128px"
src="~@/assets/images/overview/zanwu.png"
/>
<div class="zanwuText">暂无数据</div>
</div>
</div>
</template>
<script>
@ -72,29 +91,49 @@ export default {
},
methods: {
getList(item) {
this.$http.get("/actual/base/streetOverview/eventAgencyGroup?month=" + this.date + "&level=" + item.orgLevel + "&orgId=" + item.orgId).then(({ data: { data } }) => {
this.pmList = data;
if (this.pmList.length > 7) {
this.$nextTick(() => {
const aniHeight = this.$refs.animation.querySelector(".tr").offsetHeight * this.pmList.length;
console.log(aniHeight);
this.$refs.animation.style.animation = "move 10s linear infinite";
document.styleSheets[0].insertRule(
`@keyframes move{0% {
transform: translateY(0px);
}
100% {
transform: translateY(-${aniHeight}px);
}`,
0
);
});
}
});
this.$http
.get(
"/actual/base/streetOverview/eventAgencyGroup?month=" +
this.date +
"&level=" +
item.orgLevel +
"&orgId=" +
item.orgId
)
.then(({ data: { data } }) => {
this.pmList = data;
if (this.pmList.length > 7) {
this.$nextTick(() => {
const aniHeight =
this.$refs.animation4.querySelector(".tr").offsetHeight *
this.pmList.length;
console.log(aniHeight);
this.$refs.animation4.style.animation = `move4 ${this.pmList.length}s linear infinite`;
document.styleSheets[0].insertRule(
`@keyframes move4{0% {transform: translateY(0px);}100% {transform: translateY(-${aniHeight}px);}`,
0
);
});
} else {
this.$refs.animation4.style.animation = null;
}
});
},
},
};
</script>
<style lang="scss" src="@/assets/scss/dataBoard/overview/index.scss" scoped></style>
<style
lang="scss"
src="@/assets/scss/dataBoard/overview/index.scss"
scoped
></style>
<style lang="scss" scoped>
.zanwuText {
margin-top: -34px;
font-size: 14px;
font-family: PingFang SC;
font-weight: 500;
color: #a3b9da;
}
</style>

39
src/views/dataBoard/overview/components/sqrfph.vue

@ -1,6 +1,6 @@
<template>
<div class="m-subbox m-sqrfph">
<div class="table">
<div class="table" v-if="pmList.length > 0">
<div class="tr">
<div class="th">排名</div>
<div class="th">社区</div>
@ -9,7 +9,7 @@
<div class="th">人房更新总数</div>
</div>
<div style="overflow: hidden">
<div ref="animation">
<div ref="animation5">
<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 }}
@ -36,6 +36,23 @@
</div>
</div>
</div>
<div
v-else
style="
width: 100%;
height: 100%;
text-align: center;
padding-top: 100px;
color: #ffffff;
"
>
<img
width="268px"
height="128px"
src="~@/assets/images/overview/zanwu.png"
/>
<div class="zanwuText">暂无数据</div>
</div>
</div>
</template>
<script>
@ -88,14 +105,16 @@ export default {
if (this.pmList.length > 7) {
this.$nextTick(() => {
const aniHeight =
this.$refs.animation.querySelector(".tr").offsetHeight *
this.$refs.animation5.querySelector(".tr").offsetHeight *
this.pmList.length;
this.$refs.animation.style.animation = "move 10s linear infinite";
this.$refs.animation5.style.animation = `move5 ${this.pmList.length}s linear infinite`;
document.styleSheets[0].insertRule(
`@keyframes move{0% {transform: translateY(0px);}100% {transform: translateY(-${aniHeight}px);}`,
`@keyframes move5{0% {transform: translateY(0px);}100% {transform: translateY(-${aniHeight}px);}`,
0
);
});
} else {
this.$refs.animation5.style.animation = null;
}
});
},
@ -108,3 +127,13 @@ export default {
src="@/assets/scss/dataBoard/overview/index.scss"
scoped
></style>
<style lang="scss" scoped>
.zanwuText {
margin-top: -34px;
font-size: 14px;
font-family: PingFang SC;
font-weight: 500;
color: #a3b9da;
}
</style>

59
src/views/modules/base/residentManagement/louzhang/addForm.vue

@ -114,17 +114,17 @@
<span class="info-title-2">管理范围: </span>
<span>{{ formData.rangeName || "--" }}</span>
</div>
<el-form-item label-width="100px"
label="管理范围"
prop="rangeList"
v-else>
<el-cascader ref="cascaderUnit"
class="width-two"
v-model="formData.rangeList"
:options="optionsRange"
@change="handleChangeRange"
:props="rangeProps"
:props="{ multiple: true,checkStrictly: true, emitPath: true, children: 'subAgencyList', label: 'agencyName', value: 'agencyId'}"
:disabled="formType==='detail'"
clearable />
@ -176,7 +176,7 @@ export default {
rangeProps: {
multiple: true,
checkStrictly: true,
// emitPath: true,
emitPath: true,
children: 'subAgencyList',
label: 'agencyName',
value: 'agencyId'
@ -212,12 +212,10 @@ export default {
methods: {
async initForm (type, row) {
this.formType = type;
if (this.formType === 'add') {
} else {
this.startLoading();
this.categorizedResiId = row.categorizedResiId
await this.getDetail();
if (this.formData.agencyId) {
@ -225,11 +223,19 @@ export default {
}
this.endLoading();
}
},
filterByLevel(data, levels) {
let result = [];
for (let item of data) {
if (levels.includes(item.level)) {
result.push(item);
}
if (item.subAgencyList) {
result = result.concat(this.filterByLevel(item.subAgencyList, levels));
}
}
return result;
},
async getDetail () {
const url = `/actual/base/resiCategorized/buildingUnitChief/detail/${this.categorizedResiId}`;
@ -272,7 +278,6 @@ export default {
handleChangeRange (val) {
},
async getGridList () {
const { user } = this.$store.state
@ -318,13 +323,15 @@ export default {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
this.optionsRange = res.data
console.log(res.data);
this.optionsRange = this.filterByLevel(res.data, ['quarter', 'building', 'unit']);
this.processOptions(this.optionsRange);
}
})
.catch(() => {
this.dataListLoading = false
return this.$message.error('网络错误')
.catch((error) => {
this.dataListLoading = false;
console.error("Error details:", error); //
return this.$message.error('网络错误');
})
this.dataListLoading = false
},
@ -389,6 +396,28 @@ export default {
resetData () {
this.formData = {};
},
processOptions(options) {
options.forEach(item => {
if (item.level === "quarter") {
item.disabled = true; //
} else if (item.level === "building") {
item.disabled = false; //
} else if (item.level === "unit") {
item.disabled = false; //
//
if (item.subAgencyList) {
item.subAgencyList.forEach(fourthLevel => {
fourthLevel.disabled = true; //
});
}
}
if (item.subAgencyList) {
this.processOptions(item.subAgencyList);
}
});
},
//
startLoading () {
loading = Loading.service({

28
src/views/modules/communityParty/partyOrg/orgTree.vue

@ -41,8 +41,8 @@
:load="handleTreeNodeExpand"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
ref="table"
>
:row-class-name="rowClassName"
>
<el-table-column
prop="partyOrgName"
label="党组织名称"
@ -197,7 +197,15 @@ export default {
}
});
},
rowClassName(row, rowIndex) {
if (row.row.childrenQty == 0) {
return 'no-expand';
}
return '';
},
hasChildren(row){
console.log(row);
},
/**
* 点击"新增"
*/
@ -259,8 +267,14 @@ export default {
if (!data) {
return;
}
this.partyOrgTree=[]
this.partyOrgTree.push(data);
data.children.forEach(item=>{
if(item.childrenQty != 0){
item.hasChildren = true
}
})
this.tableKey = new Date().getTime();
// 2
console.log(">>>>", this.partyOrgTree)
@ -285,6 +299,11 @@ export default {
})
this.epmetResultResolver.success((data) => {
data.forEach(item=>{
if(item.childrenQty != 0){
item.hasChildren = true
}
})
row.children = data; //
resolve(row.children); //
// this.partyOrgTree.push(data);
@ -379,4 +398,7 @@ export default {
margin-top: 20px;
text-align: center;
}
::v-deep .no-expand>:nth-child(1) .cell .el-table__expand-icon{
display: none;
}
</style>

159
src/views/modules/satisfaction/communitySelfInsp/followUpDetail.vue

@ -1,8 +1,7 @@
<template>
<div class='g-main dialog-h-content'>
<h3>{{agencyName}}{{period.substr(5,2)}}月份满意度调查</h3>
<h3>{{ agencyName }}{{ period.substr(5, 2) }}月份满意度调查</h3>
<p>尊敬的居民朋友</p>
<p style="text-indent: 2em; ">为了更好地推进社区工作为您提供更全面优质的服务请您根据真实情况填写此表我们将认真对待您提出的问题并承诺对您提供的信息保密感谢您的配合</p>
<div class="card" v-for="(item, index) in formList" :key="index">
@ -12,40 +11,41 @@
<el-radio class="f-bot16" v-model.trim="form[item.pkey]" disabled label="good">基本满意</el-radio>
<el-radio class="f-bot16" v-model.trim="form[item.pkey]" disabled label="bad">不满意</el-radio>
</section>
<p v-if="form[item.pkey] == 'bad'">{{ index + 1 }}.1您具体对些方面不满意</p>
<p v-if="form[item.pkey] == 'bad'">{{ index + 1 }}.1您具体对些方面不满意</p>
<section class="f-hflex" v-for="(itemK, indexK) in item.children" v-if="form[item.pkey] == 'bad'">
<el-radio class="f-bot16" v-model.trim="form[item.value]" :label="itemK.value" disabled
>{{ itemK.label }}</el-radio>
<el-input v-if="indexK == item.children.length -1 && form[item.pkey] == 'bad'" disabled placeholder="请填写不满意原因" v-model.trim="form[item.reason]"></el-input>
<el-radio class="f-bot16" v-model.trim="form[item.value]" :label="itemK.value" disabled>{{ itemK.label
}}</el-radio>
<el-input v-if="indexK == item.children.length - 1 && form[item.pkey] == 'bad'" disabled placeholder="请填写不满意原因"
v-model.trim="form[item.reason]"></el-input>
</section>
</div>
<p>8姓名{{form.reporterName}}</p>
<p>9电话{{form.reporterMobile}}</p>
<p>8姓名{{ form.reporterName }}</p>
<p>9电话{{ form.reporterMobile }}</p>
<p>10您是否接受回访</p>
<section class="f-hflex">
<el-radio class="f-bot16" v-model="form.followUpStatus" disabled :label="-2">未知</el-radio>
<el-radio class="f-bot16" v-model="form.followUpStatus" disabled :label="-1">不接受回访</el-radio>
<el-radio class="f-bot16" v-model="form.followUpStatus" disabled :label="0">接受回访/待回访</el-radio>
<el-radio class="f-bot16" v-model="form.followUpStatus" disabled :label="1">已回访</el-radio>
</section>
<p v-if="form.followUpStatus === 0">11请选择合适您的回访方式</p>
<section class="f-hflex" v-if="form.followUpStatus === 0">
<el-radio class="f-bot16" v-model="form.expectFollowUpWay" disabled label="0">未知</el-radio>
<el-radio class="f-bot16" v-model="form.expectFollowUpWay" disabled label="1">电话回访</el-radio>
<el-radio class="f-bot16" v-model="form.expectFollowUpWay" disabled label="2">上门回访</el-radio>
</section>
<p >请填写您的家庭住址</p>
<el-input v-model="form.resideAddress" disabled></el-input>
<el-row type="flex" justify="end" class="f-top12">
<el-col :span="2">
<el-button @click="handleClose"> 取消</el-button>
</el-col>
</el-row>
<el-radio class="f-bot16" v-model="form.followUpStatus" disabled :label="-2">未知</el-radio>
<el-radio class="f-bot16" v-model="form.followUpStatus" disabled :label="-1">不接受回访</el-radio>
<el-radio class="f-bot16" v-model="form.followUpStatus" disabled :label="0">接受回访/待回访</el-radio>
<el-radio class="f-bot16" v-model="form.followUpStatus" disabled :label="1">已回访</el-radio>
</section>
<p v-if="form.followUpStatus === 0">11请选择合适您的回访方式</p>
<section class="f-hflex" v-if="form.followUpStatus === 0">
<el-radio class="f-bot16" v-model="form.expectFollowUpWay" disabled label="0">未知</el-radio>
<el-radio class="f-bot16" v-model="form.expectFollowUpWay" disabled label="1">电话回访</el-radio>
<el-radio class="f-bot16" v-model="form.expectFollowUpWay" disabled label="2">上门回访</el-radio>
</section>
<p>请填写您的家庭住址</p>
<el-input v-model="form.resideAddress" disabled></el-input>
<el-row type="flex" justify="end" class="f-top12">
<el-col :span="2">
<el-button @click="handleClose"> 取消</el-button>
</el-col>
</el-row>
</div>
</template>
<script>
import { requestGet } from "@/js/dai/request";
import { requestGet } from "@/js/dai/request";
export default {
//
data() {
@ -61,14 +61,14 @@ export default {
formList: [],
form: {
// veryGood,good,bad
evaCulturalFacility:'',
evaSportsFacility:'',
evaEcologicalEnv:'',
evaSocialSecurity:'',
evaSocialAssistance:'',
evaOldPeopleProvide:'',
evaBasicEducation:'',
evaMedical:'',
evaCulturalFacility: '',
evaSportsFacility: '',
evaEcologicalEnv: '',
evaSocialSecurity: '',
evaSocialAssistance: '',
evaOldPeopleProvide: '',
evaBasicEducation: '',
evaMedical: '',
// cultureFacilityAsp 01 02 03 09
cultureFacilityAsp: '',
@ -89,46 +89,52 @@ export default {
medicalReason: '',
//
reporterName:'',
reporterMobile:'',
reporterName: '',
reporterMobile: '',
followUpStatus: null,
expectFollowUpWay:'',
resideAddress:'',
expectFollowUpWay: '',
resideAddress: '',
},
agencyName:this.$store.state.user.agencyName,
agencyName: this.$store.state.user.agencyName,
};
},
//
async created() {
await this.getDicts()
await this.handleArr()
await this.transformInitialArray()
await this.getInspResult()
},
//
methods: {
handleArr() {
const transformArray = (initialArray) => {
const resultMap = new Map();
for (const item of initialArray) {
const baseValue = item.value.slice(0, -2);
const endValue = item.value.slice(-2);
const modifiedBaseValue = baseValue.charAt(0).toUpperCase() + baseValue.slice(1,-3);
const reasonValue = baseValue.charAt(0) + baseValue.slice(1,-3) + 'Reason';
if (!resultMap.has(baseValue)) {
resultMap.set(baseValue, { label: item.label, value: baseValue, children: [] ,pkey:`eva${modifiedBaseValue}`,reason:reasonValue});
}
if (["01", "02", "03", "09"].includes(endValue)) {
resultMap.get(baseValue).children.push(item);
}
}
transformInitialArray() {
const resultMap = new Map();
return [...resultMap.values()].filter(item => item.children.length > 0);
};
//
this.dicts.satisfaction_ns_aspect.forEach(item => {
const endValue = item.value.slice(-2);
if (isNaN(endValue)) {
resultMap.set(item.value, {
label: item.label,
value: item.value,
children: [],
pkey: `eva${item.value.charAt(0).toUpperCase() + item.value.slice(1, -3)}`,
reason: `${item.value.replace('Asp', '')}Reason` //
});
}
});
//
this.dicts.satisfaction_ns_aspect.forEach(item => {
const parentValue = item.value.slice(0, -2);
if (resultMap.has(parentValue)) {
resultMap.get(parentValue).children.push(item);
}
});
this.formList = [...resultMap.values()];
console.log(this.formList);
},
this.formList = transformArray(this.dicts.satisfaction_ns_aspect);
console.log(this.formList);
},
async getDicts() {
try {
const requests = [
@ -150,17 +156,17 @@ export default {
console.log("获取字典失败: ", error);
}
},
async getInspResult(){
async getInspResult() {
const url = `/governance/satisfaction/communitySelfInsp/inspResult/detail/${this.inspResultId}`
const {data,code,msg} = await requestGet(url)
if(code == 0){
this.form = {...data.reporter,...data.satisfaction}
const { data, code, msg } = await requestGet(url)
if (code == 0) {
this.form = { ...data.reporter, ...data.satisfaction }
console.log(this.form);
}else{
} else {
this.$message.error(msg)
}
},
handleClose(){
handleClose() {
this.$emit('handleClose')
}
},
@ -170,14 +176,14 @@ export default {
computed: {},
//
watch: {},
props:{
inspResultId:{
type:String,
default:''
props: {
inspResultId: {
type: String,
default: ''
},
period:{
type:String,
default:''
period: {
type: String,
default: ''
}
}
}
@ -205,4 +211,5 @@ h3 {
.f-font-color {
color: #000;
font-weight: 400;
}</style>
}
</style>

6
src/views/modules/satisfaction/communitySelfInsp/index.vue

@ -57,7 +57,7 @@
:close-on-press-escape="false" title="社区自查" :modal-append-to-body="false" width="820px" top="5vh"
class="dialog-h" @closed="showFormList = false">
<form-list ref="ref_add_form" @handleClose="handleClose" :satisfactionCategoryStr="satisfactionCategoryStr"
@handelDetail="handelDetail" @handelFollowUpList="handelFollowUpList" :period="formData.period" :seriesName="seriesName" :inspRecordId="formData.inspRecordId"></form-list>
@handelDetail="handelDetail" @handelFollowUpList="handelFollowUpList" :period="formData.period" :seriesName="seriesName" :inspRecordId="inspRecordId"></form-list>
<el-dialog width="920px" class="dialog-h" title="社区自查报告详情" :close-on-click-modal="false"
v-if="showFollowUpDetail" :visible.sync="showFollowUpDetail" append-to-body>
<follow-Detail :period="formData.period" :inspResultId="inspResultId" @handleClose="showFollowUpDetail = false"></follow-Detail>
@ -99,8 +99,8 @@ export default {
formData: {
period: "",//
inspRecordId: "",
},
inspRecordId: "",
multiSelection: [], //
@ -329,7 +329,7 @@ export default {
this.option.xAxis.data = []
this.tableData = data.categoryDatas || [];
this.satisfactionCategory = []
this.formData.inspRecordId = data.inspRecordId;
this.inspRecordId = data.inspRecordId;
this.synthesisScore = data.synthesisScore;
this.personQty = data.personQty
const allowedCategories = this.dicts.satisfaction_category.map(item => item.value)

Loading…
Cancel
Save