Browse Source

问题修改

V1.0
张若晨 2 years ago
parent
commit
26d67d7a00
  1. BIN
      src/assets/images/shuju/main/back1.png
  2. 34
      src/assets/scss/dataBoardMain.scss
  3. 136
      src/views/dataBoard/satisfactionEval/components/EventList/index.vue
  4. 6
      src/views/dataBoard/satisfactionEval/dissatisfied/detail.vue
  5. 143
      src/views/dataBoard/satisfactionEval/modules/RiskStatistics/index.vue
  6. 146
      src/views/dataBoardMain/main-navbar.vue

BIN
src/assets/images/shuju/main/back1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

34
src/assets/scss/dataBoardMain.scss

@ -66,29 +66,33 @@
left: 60px;
right: 0;
top: 0;
line-height: 82px;
font-family: PingFang SC;
font-weight: bold;
color: #FFFFFF;
font-size: 34px;
// text-shadow: 0px 4px 3px rgba(18, 27, 70, 0.51);
background: linear-gradient(0deg, #8FD4FF 0%, #FFFFFF 64.0380859375%);
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
display: flex;
&-txt {
line-height: 82px;
font-family: PingFang SC;
font-weight: bold;
color: #FFFFFF;
font-size: 34px;
// text-shadow: 0px 4px 3px rgba(18, 27, 70, 0.51);
background: linear-gradient(0deg, #8FD4FF 0%, #FFFFFF 64.0380859375%);
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
}
.selectArea {
position: absolute;
left: 680px;
// position: absolute;
// left: 680px;
width: 120px;
right: 0;
top: 20px;
padding-left: 15px;
margin-top: 26px;
::v-deep .el-input__inner {
height: 32px !important;
border-radius: 16px !important;
border: none !important;
border: 1px solid #125AAA !important;
color: #fff !important;
background: linear-gradient(180deg, #05326E 0%, #032A5D 100%) !important;
}

136
src/views/dataBoard/satisfactionEval/components/EventList/index.vue

@ -1,86 +1,71 @@
<template>
<div>
<el-dialog
class="dissatisfied-detail"
title=""
:visible.sync="dialogVisible"
width="1118px"
:modal="false"
:before-close="handleClose"
class="dissatisfied-detail"
title=""
:visible.sync="dialogVisible"
width="1118px"
:modal="false"
:before-close="handleClose"
>
<div class="main-title">
<Title :text="month+'份12345政务热线事件列表'"/>
<Title :text="month + '份12345政务热线事件列表'" />
</div>
<div class="content">
<div class="table">
<el-table :data="list">
<el-table-column
label="序号"
type="index"
width="80"/>
<el-table-column label="序号" type="index" width="80" />
<el-table-column
prop="monthTime"
label="月度"/>
<el-table-column prop="monthTime" label="月度" />
<el-table-column
prop="agencyName"
label="所属社区">
<el-table-column prop="agencyName" label="所属社区">
</el-table-column>
<el-table-column
prop="categoryName"
label="事项类型"/>
<el-table-column prop="categoryName" label="事项类型" />
<el-table-column
prop="eventContent"
width="200"
show-overflow-tooltip
label="事项描述"/>
<el-table-column
prop="receiveTime"
width="200"
label="接收时间"/>
prop="eventContent"
width="200"
show-overflow-tooltip
label="事项描述"
/>
<el-table-column prop="receiveTime" width="200" label="接收时间" />
<el-table-column
prop="statusName"
label="状态"/>
<el-table-column prop="statusName" label="状态" />
<el-table-column label="详情" width="90" align="center">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
<el-button type="text" @click="handleView(data.row)"
>查看</el-button
>
</template>
</el-table-column>
</el-table>
</div>
<Pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="getList"
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</el-dialog>
<EventDetails :showDialog="showDialog" :id="this.rowId" @close="close"/>
<EventDetails :showDialog="showDialog" :id="this.rowId" @close="close" />
</div>
</template>
<script>
import Breadcrumb from '@/views/dataBoard/satisfactionEval/components/Breadcrumb'
import Pagination from '@/views/dataBoard/satisfactionEval/components/Pagination'
import Title from "@/views/dataBoard/satisfactionEval/components/Title"
import EventDetails from "@/views/dataBoard/cpts/event-details.vue"
import Breadcrumb from "@/views/dataBoard/satisfactionEval/components/Breadcrumb";
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Title from "@/views/dataBoard/satisfactionEval/components/Title";
import EventDetails from "@/views/dataBoard/cpts/event-details.vue";
export default {
name: "EventList",
components: {Breadcrumb, Pagination, Title, EventDetails},
components: { Breadcrumb, Pagination, Title, EventDetails },
data() {
return {
queryParams: {
@ -89,57 +74,58 @@ export default {
},
total: 0,
list: [],
month: '',
month: "",
dialogVisible: false,
showDialog: false,
rowId: ''
}
},
activated() {
rowId: "",
};
},
activated() {},
methods: {
handleClose(done) {
this.dialogVisible = false
this.dialogVisible = false;
},
open(searchParams) {
this.dialogVisible = true
this.month = this.$moment(searchParams.monthTime).format('YYYY年M月')
this.dialogVisible = true;
this.month = this.$moment(searchParams.monthTime).format("YYYY年M月");
this.queryParams = {
...this.queryParams,
...searchParams
}
this.getList()
...searchParams,
};
this.getList();
},
getList() {
this.$http.get('/governance/satisfactionOverview/event12345List?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => {
this.list = data.list
this.total = data.total
})
this.$http
.get(
"/governance/satisfactionOverview/event12345List?" +
this.$paramsFormat(this.queryParams)
)
.then(({ data: { data } }) => {
this.list = data.list;
this.total = data.total;
});
},
handleView({id}) {
this.showDialog = true
this.rowId = id
handleView({ id }) {
this.showDialog = true;
this.rowId = id;
},
close() {
this.showDialog = false
}
}
}
this.showDialog = false;
},
},
};
</script>
<style scoped lang="scss">
@import "@/assets/scss/dataBoard/table.scss";
@import "@/assets/scss/dataBoard/dialog.scss";
/deep/ .el-dialog__wrapper {
background: rgba(0,0,0,.5);
z-index: 9999999999!important;
background: rgba(0, 0, 0, 0.85);
z-index: 9999999999 !important;
}
.dissatisfied-detail {
.main-title {
margin-bottom: 20px;
}
}
</style>
</style>

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

@ -16,7 +16,7 @@
<div class="detail">
<p>
{{unsatisfiedMattersModel.reason}}
</p>a
</p>
<ul>
<li><span>事项来源</span>{{satisfactionSourceOptions[unsatisfiedMattersModel.satisfactionSource]}}</li>
<li><span>事项类型</span>{{unsatisfiedMattersModel.satisfactionCategoryName}}</li>
@ -145,7 +145,7 @@ export default {
color: #FFFFFF;
line-height: 22px;
padding-left: 26px;
margin-bottom: 20px;
margin-bottom: 15px;
}
.detail {
@ -165,7 +165,7 @@ export default {
li {
color: #FFFFFF;
line-height: 28px;
line-height: 32px;
span {
color: #9CB4D3

143
src/views/dataBoard/satisfactionEval/modules/RiskStatistics/index.vue

@ -1,79 +1,101 @@
<template>
<div v-loading="loading"
element-loading-text="加载中..."
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0,0,0,0.5)">
<div
v-loading="loading"
element-loading-text="加载中..."
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0,0,0,0.5)"
>
<div class="number-list">
<div class="number-item">
<div class="img">
<img src="@/assets/images/manyidu/hf_ts.png" alt="">
<img src="@/assets/images/manyidu/hf_ts.png" alt="" />
</div>
<div>
<div class="txt">
12345热线 <br>
12345热线 <br />
投诉人数
</div>
<div class="num"><span>{{ event12345Num ? event12345Num : 0 }}</span> </div>
<div class="num">
<span>{{ event12345Num ? event12345Num : 0 }}</span>
</div>
</div>
</div>
<div class="number-item">
<div class="img">
<img src="@/assets/images/manyidu/hf_bmy.png" alt="">
<img src="@/assets/images/manyidu/hf_bmy.png" alt="" />
</div>
<div>
<div class="txt">
省满意度调查 <br>
省满意度调查 <br />
不满意人数
</div>
<div class="num"><span>{{ provinceSatisfactionNum ? provinceSatisfactionNum : 0 }}</span> </div>
<div class="num">
<span>{{
provinceSatisfactionNum ? provinceSatisfactionNum : 0
}}</span>
</div>
</div>
</div>
<div class="number-item">
<div class="img">
<img src="@/assets/images/manyidu/hf_zpbmy.png" alt="">
<img src="@/assets/images/manyidu/hf_zpbmy.png" alt="" />
</div>
<div>
<div class="txt">
社区满意度自评 <br>
社区满意度自评 <br />
不满意人数
</div>
<div class="num"><span>{{ selfInspectNum ? selfInspectNum : 0 }}</span> </div>
<div class="num">
<span>{{ selfInspectNum ? selfInspectNum : 0 }}</span>
</div>
</div>
</div>
</div>
<div class="number-list2">
<div class="number-item">
<div class="txt">
本月回访 <br>
本月回访 <br />
次数
</div>
<div class="num"><span class="grey">{{ followMonthNum ? followMonthNum : 0 }}</span> </div>
<div class="num">
<span class="grey">{{ followMonthNum ? followMonthNum : 0 }}</span>
</div>
</div>
<div class="number-item">
<div class="txt">
本月回访消除 <br>
本月回访消除 <br />
风险人员数
</div>
<div class="num"><span class="green">{{ followMonthNotRiskyNum ? followMonthNotRiskyNum : 0 }}</span> </div>
<div class="num">
<span class="green">{{
followMonthNotRiskyNum ? followMonthNotRiskyNum : 0
}}</span>
</div>
</div>
<div class="number-item">
<div class="txt">
累计回访 <br>
累计回访 <br />
次数
</div>
<div class="num"><span class="purple">{{ followSumNum ? followSumNum : 0 }}</span> </div>
<div class="num">
<span class="purple">{{ followSumNum ? followSumNum : 0 }}</span>
</div>
</div>
<div class="number-item">
<div class="txt">
累计回访消除 <br>
累计回访消除 <br />
风险人员数
</div>
<div class="num"><span class="blue">{{ followNotRiskyNum ? followNotRiskyNum : 0 }}</span> </div>
<div class="num">
<span class="blue">{{
followNotRiskyNum ? followNotRiskyNum : 0
}}</span>
</div>
</div>
</div>
</div>
</template>
@ -89,15 +111,14 @@ export default {
followSumNum: 0,
provinceSatisfactionNum: 0,
selfInspectNum: 0,
loading: true
}
loading: true,
};
},
props: {
date: {
type: Object,
default: () => {
}
}
default: () => {},
},
},
watch: {
"$store.state.chooseArea.chooseName"(val) {
@ -107,7 +128,7 @@ export default {
},
date() {
this.getData();
}
},
},
mounted() {
if (this.$store.state.chooseArea.chooseName.orgId) {
@ -116,25 +137,30 @@ export default {
},
methods: {
getData() {
this.loading = true
this.loading = true;
let params = {
level: this.$store.state.chooseArea.chooseName.level,
orgId: this.$store.state.chooseArea.chooseName.orgId,
...this.date
}
this.$http.get('/governance/satisfactionOverview/satisfactionFollowGroup?' + this.$paramsFormat(params)).then(({data: {data}}) => {
this.event12345Num = data.event12345Num;
this.followMonthNotRiskyNum = data.followMonthNotRiskyNum;
this.followMonthNum = data.followMonthNum;
this.followNotRiskyNum = data.followNotRiskyNum;
this.followSumNum = data.followSumNum;
this.provinceSatisfactionNum = data.provinceSatisfactionNum;
this.selfInspectNum = data.selfInspectNum;
this.loading = false
})
}
}
}
...this.date,
};
this.$http
.get(
"/governance/satisfactionOverview/satisfactionFollowGroup?" +
this.$paramsFormat(params)
)
.then(({ data: { data } }) => {
this.event12345Num = data.event12345Num;
this.followMonthNotRiskyNum = data.followMonthNotRiskyNum;
this.followMonthNum = data.followMonthNum;
this.followNotRiskyNum = data.followNotRiskyNum;
this.followSumNum = data.followSumNum;
this.provinceSatisfactionNum = data.provinceSatisfactionNum;
this.selfInspectNum = data.selfInspectNum;
this.loading = false;
});
},
},
};
</script>
<style scoped lang="scss">
@ -152,10 +178,11 @@ export default {
}
.txt {
font-size: 16px;
font-size: 15px;
margin-left: -6px;
font-weight: 400;
color: #FFFFFF;
line-height: 24px;
color: #ffffff;
line-height: 26px;
margin-bottom: 22px;
white-space: nowrap;
}
@ -163,13 +190,13 @@ export default {
.num {
font-size: 14px;
font-weight: 500;
color: #A3B9DA;
color: #a3b9da;
white-space: nowrap;
span {
font-size: 32px;
font-weight: bold;
font-style: italic;
color: #3AB7FF;
color: #3ab7ff;
}
}
}
@ -184,7 +211,7 @@ export default {
.txt {
font-size: 14px;
font-weight: 400;
color: #A3B9DA;
color: #a3b9da;
line-height: 24px;
margin-bottom: 16px;
}
@ -192,7 +219,7 @@ export default {
.num {
font-size: 14px;
font-weight: 500;
color: #A3B9DA;
color: #a3b9da;
span {
font-size: 32px;
@ -204,18 +231,18 @@ export default {
}
.grey {
color: #78C4F3;
color: #78c4f3;
}
.green {
color: #08EBAE;
color: #08ebae;
}
.purple {
color: #A761FD;
color: #a761fd;
}
.blue {
color: #356EFF;
color: #356eff;
}
</style>
</style>

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

@ -1,13 +1,33 @@
<template>
<div class="m-topnav">
<div class="back" style="cursor: pointer" @click="goBack()">
<img src="~@/assets/images/shuju/main/back.png" alt="/" />
<img
width="22px"
height="22px"
src="~@/assets/images/shuju/main/back1.png"
alt="/"
/>
</div>
<div class="title">{{ customerName }}数据智能分析平台</div>
<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" v-if="item.agencyLevel !== 'grid'" :key="item.value" :label="item.label" :value="item.value"/>
</el-select>
<div class="title">
<div class="title-txt">{{ customerName }}数据智能分析平台</div>
<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"
v-if="item.agencyLevel !== 'grid'"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
</div>
<!-- <div class="btn-back" @click="toPage('/')">
<img class="z-default" src="~@/assets/images/shuju/main/back.png" />
@ -26,16 +46,32 @@
</div>
</div>-->
<div class="nav-list">
<div class="nav-item" :class="{ 'z-on': $route.path.indexOf('/dataBoard/overview') != -1 }" @click="toPage('/dataBoard/overview/index')">
<div
class="nav-item"
:class="{ 'z-on': $route.path.indexOf('/dataBoard/overview') != -1 }"
@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.includes('/satisfactionEval') }" @click="toPage('/dataBoard/satisfactionEval/index')">
<div
class="nav-item"
:class="{ 'z-on': $route.path.includes('/satisfactionEval') }"
@click="toPage('/dataBoard/satisfactionEval/index')"
>
<span>满意度评价</span>
</div>
</div>
@ -184,10 +220,15 @@ export default {
const customerId = localStorage.getItem("customerId");
let siteconfigElement = window.SITE_CONFIG["menuShujuList"];
// 亿 -
if ("04c0d396e298f13e57aa5904a657eaa6" != customerId && "3fdd0380deff5b30f45376cdf995d1c1" != customerId) {
if (
"04c0d396e298f13e57aa5904a657eaa6" != customerId &&
"3fdd0380deff5b30f45376cdf995d1c1" != customerId
) {
for (let index in siteconfigElement) {
if (siteconfigElement[index].id == "6") {
let newMenuArr = siteconfigElement[index].children.filter((item) => item.id !== "duoyuanfuwufenxi");
let newMenuArr = siteconfigElement[index].children.filter(
(item) => item.id !== "duoyuanfuwufenxi"
);
siteconfigElement[index].children = newMenuArr;
}
}
@ -217,46 +258,51 @@ export default {
params = { orgId: this.value, level: this.getChooseLabel(this.value) };
}
console.log(params);
this.$http.post(`/gov/org/agency/maporg`, params).then(async ({ data: { data } }) => {
console.log(data);
this.value = data.id;
this.$store.dispatch("chooseArea/chooseName", {
orgId: data.id,
level: data.level,
this.$http
.post(`/gov/org/agency/maporg`, params)
.then(async ({ data: { data } }) => {
console.log(data);
this.value = data.id;
this.$store.dispatch("chooseArea/chooseName", {
orgId: data.id,
level: data.level,
});
let children = await this.dealTreeData(data.children);
if (data.parentId) {
this.options = [
{
...data,
value: data.parentId,
label: data.parentName,
},
{
...data,
value: data.id,
label: data.name,
},
...children,
];
} else {
this.options = [
{
...data,
value: data.id,
label: data.name,
},
...children,
];
}
});
let children = await this.dealTreeData(data.children);
if (data.parentId) {
this.options = [
{
...data,
value: data.parentId,
label: data.parentName,
},
{
...data,
value: data.id,
label: data.name,
},
...children,
];
} else {
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;
},
@ -290,7 +336,9 @@ export default {
},
// menuId()
gotoRouteHandle(menuId, idx) {
var route = window.SITE_CONFIG["dynamicMenuRoutesShuju"].filter((item) => item.meta.menuId === menuId)[0];
var route = window.SITE_CONFIG["dynamicMenuRoutesShuju"].filter(
(item) => item.meta.menuId === menuId
)[0];
if (route) {
this.$router.push({
name: route.name,
@ -299,10 +347,12 @@ export default {
}
},
changeCustomerName() {
this.customerName = localStorage.getItem("customerNameDataBoard") || "数据分析可视化平台";
this.customerName =
localStorage.getItem("customerNameDataBoard") || "数据分析可视化平台";
},
async getWeatherData() {
const url = "https://restapi.amap.com/v3/weather/weatherInfo?key=8c87678f34ce9e8e23245c5161991c4e";
const url =
"https://restapi.amap.com/v3/weather/weatherInfo?key=8c87678f34ce9e8e23245c5161991c4e";
const { data, code, msg } = await requestGet(url, {
city: this.$store.state.user.areaCode,
});

Loading…
Cancel
Save