|
@@ -1,7 +1,7 @@
|
|
|
<template>
|
|
<template>
|
|
|
<div class="page-container">
|
|
<div class="page-container">
|
|
|
<el-row type="flex" justify="space-between" :gutter="10">
|
|
<el-row type="flex" justify="space-between" :gutter="10">
|
|
|
- <el-col :span="17">
|
|
|
|
|
|
|
+ <el-col :span="18">
|
|
|
<div class="evaluate">
|
|
<div class="evaluate">
|
|
|
<div class="title">
|
|
<div class="title">
|
|
|
<div class="name">年满意度评价</div>
|
|
<div class="name">年满意度评价</div>
|
|
@@ -19,7 +19,7 @@
|
|
|
<div class="statistics">
|
|
<div class="statistics">
|
|
|
<div class="number">
|
|
<div class="number">
|
|
|
<div class="total">
|
|
<div class="total">
|
|
|
- <span>总评分</span>
|
|
|
|
|
|
|
+ <span>评分</span>
|
|
|
<span class="score">{{ yearOverview.score }}</span>
|
|
<span class="score">{{ yearOverview.score }}</span>
|
|
|
<span class="unit">分</span>
|
|
<span class="unit">分</span>
|
|
|
</div>
|
|
</div>
|
|
@@ -43,6 +43,7 @@
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+
|
|
|
<div class="evaluate month">
|
|
<div class="evaluate month">
|
|
|
<div class="title">
|
|
<div class="title">
|
|
|
<div class="name">月满意度评价</div>
|
|
<div class="name">月满意度评价</div>
|
|
@@ -68,7 +69,7 @@
|
|
|
<div class="statistics">
|
|
<div class="statistics">
|
|
|
<div class="number">
|
|
<div class="number">
|
|
|
<div class="total">
|
|
<div class="total">
|
|
|
- <span>总评分</span>
|
|
|
|
|
|
|
+ <span>评分</span>
|
|
|
<span class="score">{{ yearOverview.score }}</span>
|
|
<span class="score">{{ yearOverview.score }}</span>
|
|
|
<span class="unit">分</span>
|
|
<span class="unit">分</span>
|
|
|
</div>
|
|
</div>
|
|
@@ -92,6 +93,7 @@
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+
|
|
|
<el-row v-if="false" style="margin-top:10px">
|
|
<el-row v-if="false" style="margin-top:10px">
|
|
|
<el-col class="group-box-month">
|
|
<el-col class="group-box-month">
|
|
|
<div class="group-box-head-container"><div class="group-box-head">月满意度评价</div></div>
|
|
<div class="group-box-head-container"><div class="group-box-head">月满意度评价</div></div>
|
|
@@ -104,7 +106,7 @@
|
|
|
<div class="panorama-scoreIcon-container">
|
|
<div class="panorama-scoreIcon-container">
|
|
|
<div class="item">
|
|
<div class="item">
|
|
|
<div class="score small">{{ checklist.score }}</div>
|
|
<div class="score small">{{ checklist.score }}</div>
|
|
|
- <div class="name">得分</div>
|
|
|
|
|
|
|
+ <div class="name">评分</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="item">
|
|
<div class="item">
|
|
|
<div class="score small">{{ checklist.targetQty }}</div>
|
|
<div class="score small">{{ checklist.targetQty }}</div>
|
|
@@ -129,6 +131,7 @@
|
|
|
</div>
|
|
</div>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
|
|
+
|
|
|
<el-row style="margin-top:10px" type="flex" justify="space-between" :gutter="10">
|
|
<el-row style="margin-top:10px" type="flex" justify="space-between" :gutter="10">
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
<div class="rank-list">
|
|
<div class="rank-list">
|
|
@@ -158,29 +161,39 @@
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
- <el-col :span="7">
|
|
|
|
|
|
|
+ <el-col :span="6">
|
|
|
<div class="todayNews">
|
|
<div class="todayNews">
|
|
|
<div class="head">
|
|
<div class="head">
|
|
|
<div class="item-title">
|
|
<div class="item-title">
|
|
|
<div class="name">今日动态</div>
|
|
<div class="name">今日动态</div>
|
|
|
- <div class="more" @click="linkTo('/hos/satisfy/news/index')">更多</div>
|
|
|
|
|
|
|
+ <div class="more" @click="handleMoreAssess('/hos/satisfy/data')">更多</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="statistics">
|
|
<div class="statistics">
|
|
|
<div class="item">
|
|
<div class="item">
|
|
|
<img class="icon" src="./images/notice.png" alt="总次数">
|
|
<img class="icon" src="./images/notice.png" alt="总次数">
|
|
|
<div class="cont">
|
|
<div class="cont">
|
|
|
<div class="top">
|
|
<div class="top">
|
|
|
- <span class="number">12</span>
|
|
|
|
|
|
|
+ <span class="number">{{ todayOverview.recordQty }}</span>
|
|
|
<span class="unit">次</span>
|
|
<span class="unit">次</span>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="name">总次数</div>
|
|
<div class="name">总次数</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="item">
|
|
<div class="item">
|
|
|
|
|
+ <img class="icon" src="./images/notice.png" alt="评分">
|
|
|
|
|
+ <div class="cont">
|
|
|
|
|
+ <div class="top">
|
|
|
|
|
+ <span class="number">{{ todayOverview.score }}</span>
|
|
|
|
|
+ <span class="unit">分</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="name">评分</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="item clearfix">
|
|
|
<img class="icon" src="./images/doctor.png" alt="医生">
|
|
<img class="icon" src="./images/doctor.png" alt="医生">
|
|
|
<div class="cont">
|
|
<div class="cont">
|
|
|
<div class="top">
|
|
<div class="top">
|
|
|
- <span class="number">12</span>
|
|
|
|
|
|
|
+ <span class="number">{{ todayOverview.doctorQty }}</span>
|
|
|
<span class="unit">人</span>
|
|
<span class="unit">人</span>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="name">医生</div>
|
|
<div class="name">医生</div>
|
|
@@ -190,7 +203,7 @@
|
|
|
<img class="icon" src="./images/office.png" alt="科室">
|
|
<img class="icon" src="./images/office.png" alt="科室">
|
|
|
<div class="cont">
|
|
<div class="cont">
|
|
|
<div class="top">
|
|
<div class="top">
|
|
|
- <span class="number">12</span>
|
|
|
|
|
|
|
+ <span class="number">{{ todayOverview.gridQty }}</span>
|
|
|
<span class="unit">个</span>
|
|
<span class="unit">个</span>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="name">科室</div>
|
|
<div class="name">科室</div>
|
|
@@ -244,12 +257,19 @@ export default {
|
|
|
conditions: {},
|
|
conditions: {},
|
|
|
todayOverview: {
|
|
todayOverview: {
|
|
|
data: [],
|
|
data: [],
|
|
|
|
|
+ day: undefined,
|
|
|
|
|
+ targetQty: 0,
|
|
|
|
|
+ recordQty: 0,
|
|
|
|
|
+ score: 0,
|
|
|
|
|
+ doctorQty: 0,
|
|
|
doctorRank: [],
|
|
doctorRank: [],
|
|
|
|
|
+ doctorRecordQty: 0,
|
|
|
|
|
+ doctorScore: 0,
|
|
|
|
|
+ gridQty: 0,
|
|
|
|
|
+ gridRecordQty: 0,
|
|
|
|
|
+ gridScore: 0,
|
|
|
gridRank: [],
|
|
gridRank: [],
|
|
|
- groupName: '',
|
|
|
|
|
- groupRank: [],
|
|
|
|
|
- recordQty: 0,
|
|
|
|
|
- score: 0
|
|
|
|
|
|
|
+ groupRank: []
|
|
|
},
|
|
},
|
|
|
yearOverview: {
|
|
yearOverview: {
|
|
|
doctorQty: 0,
|
|
doctorQty: 0,
|
|
@@ -270,6 +290,7 @@ export default {
|
|
|
this.init()
|
|
this.init()
|
|
|
},
|
|
},
|
|
|
destroyed() {
|
|
destroyed() {
|
|
|
|
|
+ /*
|
|
|
if (this.client.connected) {
|
|
if (this.client.connected) {
|
|
|
try {
|
|
try {
|
|
|
this.client.end(false, () => {
|
|
this.client.end(false, () => {
|
|
@@ -278,18 +299,20 @@ export default {
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
console.log('Disconnect failed', error.toString())
|
|
console.log('Disconnect failed', error.toString())
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
|
|
+ } */
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
|
|
|
+
|
|
|
init() {
|
|
init() {
|
|
|
const d = new Date()
|
|
const d = new Date()
|
|
|
this.year = d.getFullYear()
|
|
this.year = d.getFullYear()
|
|
|
this.month = d.getMonth() + 1
|
|
this.month = d.getMonth() + 1
|
|
|
this.initYearList()
|
|
this.initYearList()
|
|
|
- this.monthScoreKeys = this.getmonthScoreKeys()
|
|
|
|
|
|
|
+ this.monthScoreKeys = this.getMonthScoreKeys()
|
|
|
this.getData()
|
|
this.getData()
|
|
|
// this.initMqtt()
|
|
// this.initMqtt()
|
|
|
},
|
|
},
|
|
|
|
|
+
|
|
|
initYearList() {
|
|
initYearList() {
|
|
|
const d = new Date()
|
|
const d = new Date()
|
|
|
const yearList = []
|
|
const yearList = []
|
|
@@ -298,6 +321,7 @@ export default {
|
|
|
}
|
|
}
|
|
|
this.yearList = yearList
|
|
this.yearList = yearList
|
|
|
},
|
|
},
|
|
|
|
|
+
|
|
|
initMqtt() {
|
|
initMqtt() {
|
|
|
const self = this
|
|
const self = this
|
|
|
const options = {
|
|
const options = {
|
|
@@ -322,17 +346,20 @@ export default {
|
|
|
})
|
|
})
|
|
|
this.client = client
|
|
this.client = client
|
|
|
},
|
|
},
|
|
|
|
|
+
|
|
|
handleAssessDetail(row) {},
|
|
handleAssessDetail(row) {},
|
|
|
viewIndexScoreDetail(data) {},
|
|
viewIndexScoreDetail(data) {},
|
|
|
|
|
+
|
|
|
// Get Data
|
|
// Get Data
|
|
|
getData() {
|
|
getData() {
|
|
|
- this.getyearOverview()
|
|
|
|
|
|
|
+ this.getYearOverview()
|
|
|
this.getMonthOverview()
|
|
this.getMonthOverview()
|
|
|
this.getTodayOverview()
|
|
this.getTodayOverview()
|
|
|
this.getGridByList()
|
|
this.getGridByList()
|
|
|
this.getDoctorByList()
|
|
this.getDoctorByList()
|
|
|
this.getGroupByList()
|
|
this.getGroupByList()
|
|
|
},
|
|
},
|
|
|
|
|
+
|
|
|
getTodayOverview() {
|
|
getTodayOverview() {
|
|
|
todayOverview().then((resp) => {
|
|
todayOverview().then((resp) => {
|
|
|
const { data } = resp
|
|
const { data } = resp
|
|
@@ -343,7 +370,8 @@ export default {
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
|
- getyearOverview() {
|
|
|
|
|
|
|
+
|
|
|
|
|
+ getYearOverview() {
|
|
|
yearOverview(this.year).then((resp) => {
|
|
yearOverview(this.year).then((resp) => {
|
|
|
const { data } = resp
|
|
const { data } = resp
|
|
|
if (data) {
|
|
if (data) {
|
|
@@ -353,6 +381,7 @@ export default {
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
|
|
|
+
|
|
|
getMonthOverview() {
|
|
getMonthOverview() {
|
|
|
monthOverview(this.year, this.month).then((resp) => {
|
|
monthOverview(this.year, this.month).then((resp) => {
|
|
|
const { data } = resp
|
|
const { data } = resp
|
|
@@ -365,35 +394,26 @@ export default {
|
|
|
},
|
|
},
|
|
|
getGridByList() {
|
|
getGridByList() {
|
|
|
gridByList(this.conditions).then((resp) => {
|
|
gridByList(this.conditions).then((resp) => {
|
|
|
- const { code, msg, data } = resp
|
|
|
|
|
- if (code === 200) {
|
|
|
|
|
- this.gridDataList = data
|
|
|
|
|
- } else {
|
|
|
|
|
- this.$message.error(msg)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ const { data } = resp
|
|
|
|
|
+ this.gridDataList = data
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
|
|
|
+
|
|
|
getGroupByList() {
|
|
getGroupByList() {
|
|
|
groupByList(this.conditions).then((resp) => {
|
|
groupByList(this.conditions).then((resp) => {
|
|
|
- const { code, msg, data } = resp
|
|
|
|
|
- if (code === 200) {
|
|
|
|
|
- this.groupDataList = data
|
|
|
|
|
- } else {
|
|
|
|
|
- this.$message.error(msg)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ const { data } = resp
|
|
|
|
|
+ this.groupDataList = data
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
|
|
|
+
|
|
|
getDoctorByList() {
|
|
getDoctorByList() {
|
|
|
doctorByList(this.conditions).then((resp) => {
|
|
doctorByList(this.conditions).then((resp) => {
|
|
|
- const { code, msg, data } = resp
|
|
|
|
|
- if (code === 200) {
|
|
|
|
|
- this.doctorDataList = data
|
|
|
|
|
- } else {
|
|
|
|
|
- this.$message.error(msg)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ const { data } = resp
|
|
|
|
|
+ this.doctorDataList = data
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
|
- getmonthScoreKeys(date = (new Date()), unit = '') {
|
|
|
|
|
|
|
+
|
|
|
|
|
+ getMonthScoreKeys(date = (new Date()), unit = '') {
|
|
|
var days = []
|
|
var days = []
|
|
|
if (typeof (date) === 'string') { // 2022/09
|
|
if (typeof (date) === 'string') { // 2022/09
|
|
|
date = new Date(date)
|
|
date = new Date(date)
|
|
@@ -406,6 +426,7 @@ export default {
|
|
|
}
|
|
}
|
|
|
return days
|
|
return days
|
|
|
},
|
|
},
|
|
|
|
|
+
|
|
|
showYearScore(data) {
|
|
showYearScore(data) {
|
|
|
if (Array.isArray(data)) return data
|
|
if (Array.isArray(data)) return data
|
|
|
var arr = []
|
|
var arr = []
|
|
@@ -414,15 +435,17 @@ export default {
|
|
|
}
|
|
}
|
|
|
return arr
|
|
return arr
|
|
|
},
|
|
},
|
|
|
|
|
+
|
|
|
handleMoreAssess(url) {
|
|
handleMoreAssess(url) {
|
|
|
this.$router.push({
|
|
this.$router.push({
|
|
|
path: url
|
|
path: url
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
|
|
|
+
|
|
|
formatCheckListValues(data) {
|
|
formatCheckListValues(data) {
|
|
|
if (!data) return []
|
|
if (!data) return []
|
|
|
const enums = {}
|
|
const enums = {}
|
|
|
- const len = (this.getmonthScoreKeys(`${this.year}/${this.month}`)).length
|
|
|
|
|
|
|
+ const len = (this.getMonthScoreKeys(`${this.year}/${this.month}`)).length
|
|
|
const months = []
|
|
const months = []
|
|
|
data.forEach(item => { enums[item.day] = item })
|
|
data.forEach(item => { enums[item.day] = item })
|
|
|
for (let i = 1; i <= len; i++) {
|
|
for (let i = 1; i <= len; i++) {
|
|
@@ -430,17 +453,21 @@ export default {
|
|
|
}
|
|
}
|
|
|
return months
|
|
return months
|
|
|
},
|
|
},
|
|
|
|
|
+
|
|
|
mqttResponse(message) {
|
|
mqttResponse(message) {
|
|
|
// console.log('message', message.toString())
|
|
// console.log('message', message.toString())
|
|
|
this.getData()
|
|
this.getData()
|
|
|
},
|
|
},
|
|
|
|
|
+
|
|
|
changeYear(params) {
|
|
changeYear(params) {
|
|
|
- this.getyearOverview()
|
|
|
|
|
|
|
+ this.getYearOverview()
|
|
|
},
|
|
},
|
|
|
|
|
+
|
|
|
changeMonth() {
|
|
changeMonth() {
|
|
|
- this.monthScoreKeys = this.getmonthScoreKeys(`${this.year}/${this.month}`)
|
|
|
|
|
|
|
+ this.monthScoreKeys = this.getMonthScoreKeys(`${this.year}/${this.month}`)
|
|
|
this.getMonthOverview()
|
|
this.getMonthOverview()
|
|
|
},
|
|
},
|
|
|
|
|
+
|
|
|
linkTo(url) {
|
|
linkTo(url) {
|
|
|
if (url) {
|
|
if (url) {
|
|
|
this.$router.push(url)
|
|
this.$router.push(url)
|
|
@@ -459,7 +486,7 @@ export default {
|
|
|
height: 242px;
|
|
height: 242px;
|
|
|
padding: 20px;
|
|
padding: 20px;
|
|
|
background-color: #1F3C51;
|
|
background-color: #1F3C51;
|
|
|
- border: 5px 0 0 0;
|
|
|
|
|
|
|
+ border: 5px;
|
|
|
border-top: 5px solid rgba(31, 60, 81, 1);
|
|
border-top: 5px solid rgba(31, 60, 81, 1);
|
|
|
background: linear-gradient(0deg, #1B3144, #1B3144),linear-gradient(0deg, #1F3C51, #1F3C51);
|
|
background: linear-gradient(0deg, #1B3144, #1B3144),linear-gradient(0deg, #1F3C51, #1F3C51);
|
|
|
&.month{
|
|
&.month{
|
|
@@ -472,7 +499,6 @@ export default {
|
|
|
position: relative;
|
|
position: relative;
|
|
|
margin-top: -8px;
|
|
margin-top: -8px;
|
|
|
.name{
|
|
.name{
|
|
|
- font-family: Microsoft YaHei UI;
|
|
|
|
|
font-size: 16px;
|
|
font-size: 16px;
|
|
|
font-weight: 700;
|
|
font-weight: 700;
|
|
|
line-height: 16px;
|
|
line-height: 16px;
|
|
@@ -536,7 +562,6 @@ export default {
|
|
|
width: 342px;
|
|
width: 342px;
|
|
|
.total{
|
|
.total{
|
|
|
height: 68px;
|
|
height: 68px;
|
|
|
- font-family: Be Vietnam;
|
|
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
font-weight: 400;
|
|
font-weight: 400;
|
|
|
line-height: 14px;
|
|
line-height: 14px;
|