Commit 1b568fce by lihu541

家庭医生签约服务费项目

parents
> 1%
last 2 versions
not dead
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# expense
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Run your tests
```
npm run test
```
### Lints and fixes files
```
npm run lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"name": "expense",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build"
},
"dependencies": {
"axios": "^0.19.2",
"core-js": "^3.6.5",
"echarts": "^4.8.0",
"element-ui": "^2.13.2",
"file-saver": "^2.0.2",
"vue": "^2.6.11",
"vue-router": "^3.2.0",
"vuex": "^3.4.0",
"xlsx": "^0.16.4"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^4.4.0",
"@vue/cli-service": "^4.4.0",
"vue-template-compiler": "^2.6.11"
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
<template>
<div id="app">
<router-view/>
</div>
</template>
<style>
@import "assets/css/base.css";
#app{
max-width: 1200px;
max-height: 600px;
}
</style>
import originAxios from 'axios'
export default function axios(option) {
return new Promise((resolve, reject) => {
// 1.创建axios的实例
const instance = originAxios.create({
baseURL: 'https://www.shsjtysygl.xyz:8001/familyDoctor/',
timeout: 5000
});
// 配置请求和响应拦截
instance.interceptors.request.use(config => {
// console.log('来到了request拦截success中');
// 1.当发送网络请求时, 在页面中添加一个loading组件, 作为动画
// 2.某些请求要求用户必须登录, 判断用户是否有token, 如果没有token跳转到login页面
// 3.对请求的参数进行序列化(看服务器是否需要序列化)
// config.data = qs.stringify(config.data)
// console.log(config);
// 4.等等
return config
}, err => {
// console.log('来到了request拦截failure中');
return err
})
instance.interceptors.response.use(response => {
// console.log('来到了response拦截success中');
return response.data
}, err => {
console.log('来到了response拦截failure中');
console.log(err);
if (err && err.response) {
switch (err.response.status) {
case 400:
err.message = '请求错误'
break
case 401:
err.message = '未授权的访问'
break
}
}
return err
})
// 2.传入对象进行网络请求
instance(option).then(res => {
resolve(res)
}).catch(err => {
reject(err)
})
})
}
import axios from 'api/axios'
/*******************签约管理 相关接口***********************/
export function getPageData(token,param) {
return axios({
url:'/dws_sqlgl/getJson',
method:'post',
headers:{
'content-type':'application/json',
"Authorization":token,
"Accept": "*/*"
},
data:JSON.stringify(param),
})
}
export function dosave(token,param) {
return axios({
url:'/dws_sqlgl/save',
method:'post',
headers:{
'content-type':'application/json',
"Authorization":token,
"Accept": "*/*"
},
data:JSON.stringify(param),
})
}
/*******************获取标准值***********************/
export function getBzzData(token,_year) {
return axios({
url:'/dws_sqlgl/getJson',
method:'post',
headers:{
'content-type':'application/json',
"Authorization":token,
"Accept": "*/*"
},
data:{
"key":"bzz-zd",
"tjsj":_year
}
})
}
import axios from 'api/axios'
//登录
export function login(param) {
return axios({
url:'/login',
method:'post',
headers:{
'Content-Type':'application/json; charset=UTF-8',
"Accept": "*/*"
},
data:JSON.stringify(param)
})
}
//修改密码
export function updatapsd(token,param) {
return axios({
url:'/password',
method:'post',
headers:{
'Content-Type':'application/json; charset=UTF-8',
"Accept": "*/*"
},
data:JSON.stringify(param)
})
}
//更新员工信息
export function update(token,updatemsg) {
return axios({
url:'/update',
method:'post',
headers:{
'Content-Type':'application/json; charset=UTF-8',
"Authorization":token,
"Accept": "*/*"
},
data:JSON.stringify(updatemsg)
})
}
//登录目录页
export function loginhome(token,menuslist) {
return axios({
url:'/menus',
method:'post',
headers:{
'Content-Type':'application/json; charset=UTF-8',
"Authorization":token,
"Accept": "*/*"
},
data:JSON.stringify(menuslist)
})
}
//登录目录页弹窗信息
export function quota(token,quotalist) {
return axios({
url:'/dws_sqlgl/getJson',
method:'post',
headers:{
'Content-Type':'application/json; charset=UTF-8',
"Authorization":token,
"Accept": "*/*"
},
data:JSON.stringify(quotalist)
})
}
@import "./normalize.css";
@font-face {
font-family:DINPro;
src:url('../font/DINPro-CondBold.otf');
}
* {
margin: 0;
padding: 0;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
html,
body,
#app,
.outer {
width: 100%;
height: 100%;
background: #272E52;
display: flex;
overflow: hidden;
align-items: center; /* 垂直居中 */justify-content: center; /* 水平居中 */
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: #2c3e50;
margin: 0;
position: relative;
}
body {
font-family: 'PingFang SC', "Helvetica Neue", Helvetica, "microsoft yahei", arial, STHeiTi, sans-serif;
}
body, ul, ol, li, p, h1, h2, h3, h4, h5, h6, form, label, table, tbody, tr, td, img, div, dl, dt, dd, pre, input, select, textarea, fieldset, iframe,hr{ margin:0; padding:0; font-family:PingFang SC;}
body{color:#fff; font-size:12px; line-height:normal; font-weight:normal;font-family:PingFang SC;}
ul{ list-style-type:none;}
a{color:#231815; text-decoration:none;}
a:hover{text-decoration:underline;}
em {font-style:normal;}
table {border-collapse:collapse;border-spacing:0;}
caption,th{text-align:left;}
button{background:none; border:none; cursor:pointer;}
ul{list-style-type:none;}
ol{list-style-type:none;}
*{margin:0px;padding:0px;}
img{ border:0px;}
.container {
background: -webkit-linear-gradient(top,#272e52,#171c30);
height: 100%;
}
.header {
height: 56px;
background: #2e375c;
margin-bottom: 20px;
}
.card .title{
height: 31px;
line-height: 31px;
text-align: left;
padding-left: 15px;
font-size: 13px;
color: #a6aed6;
background: #3f4d79;
border-radius: 3px 3px 0 0;
}
.card .card-content{
padding: 15px;
background: -webkit-gradient(linear,left top,left bottom,from(#36436f),color-stop(14%,#36436f),to(#30385a));
background: linear-gradient(180deg,#36436f,#36436f 14%,#30385a);
}
.head-card-content{
color: #AAB1D2;
font-size: 12px;
}
.icon-vertical{
background:rgba(38,128,255,1);
display: inline-block;
}
\ No newline at end of file
/* 签约 */
.qycontent{float: left; height: 145px; padding-left: 10px;}
.qycontent .qycontentline{height: 22px; position: relative; color: #334b84; font-size: 8px;text-align: left; clear: both;}
.qycontent .qycontentline i.i01{ height: 12px; width: 2px; color: #2680FF; background: #2680FF; position: absolute; left: 0; top: 3px;}
.qycontent .qycontentline i.i02{ height: 12px; width: 2px; color: #55FFE8; background: #55FFE8; position: absolute; left: 0; top: 3px;}
.qycontent .qycontentline span{ color: #AAB1D2; font-size: 12px; padding: 0 10px;}
.qycontent .qycontentline span.clk{ text-decoration: underline;}
.fl002{ float: left; width: 40%; margin-left:1.5%;}
.fr001{ float: right; width: 33%;}
.qycontent .qytexttop{ height: 50px; line-height: 50px; text-align: left;padding-left:5px; clear: both;}
.qycontent .qytexttop span{ color: #fff; font-size: 22px; padding: 0 2px; font-family:DINPro}
.qycontent .qytexttop span.span01{ color: #fff; font-size: 16px;padding: 0 6px 0 2px;}
.qycontent .qytexttop span.span02{ color: #2680FF; font-size: 14px; padding: 0 2px;}
.qycontent .qytexttop span.span03{ color: #8891BE; font-size: 10px;}
.qycontent .qytexttop span.span04{padding-left: 40px;}
.qycontent .qytextdown{height: 28px; line-height: 28px; text-align: left;padding-left:5px; clear: both;position: relative;}
.qycontent .qytextdown span{ color: #fff; font-size: 16px; padding: 0 2px; font-family:DINPro}
.qycontent .qytextdown span.spanfont{font-size:11px;font-weight:500;color:#AAB1D2;}
.qycontent .qytextdown .spandata{position: absolute;left: 55px;top:0px;}
.qycontent .qytextdown span.span01{ color: #fff; font-size: 16px;}
.qycontent .qytextdown span.span02{ color: #2680FF; font-size: 14px; padding: 0 2px;}
.qycontent .qytextdown span.span03{ color: #fff; font-size: 14px;}
.qycontent .qytextmodel{width:100%; height: 34px; line-height: 34px; text-align: left;padding-left:5px; clear: both;position: relative;}
.qycontent .qytextmodel span{ color: #fff; font-size: 16px;font-family:DINPro}
.qycontent .qytextmodel span.spanfont{font-size:11px;font-weight:500;color:#AAB1D2;}
.qycontent .qytextmodel .spandata{position: absolute;left: 100px;top:0px;width:98%;}
.qycontent .qytextmodel span.span01{ color: #fff; font-size: 16px;padding: 0 2px;}
.qycontent .qytextmodel span.span02{ color: #2680FF; font-size: 14px;padding: 0 2px}
.qycontent .qytextmodel span.span03{ color: #fff; font-size: 14px;padding: 0 2px}
.qycontent .qytextmodel .spanline{text-decoration: underline}
.spanline{text-decoration: underline}
.qycontent .qytextright{width:100%; height: 34px; line-height: 34px; text-align: left;padding-left:5px; clear: both;position: relative;}
.qycontent .qytextright span{ color: #fff; font-size: 16px; font-family:DINPro}
.qycontent .qytextright span.spanfont{font-size:11px;font-weight:500;color:#AAB1D2;}
.qycontent .qytextright .spandata{position: absolute;left: 110px;top:0px;width:130%;}
.qycontent .qytextright span.span01{ color: #fff; font-size: 16px;padding: 0 2px;}
.qycontent .qytextright span.span02{ color: #2680FF; font-size: 14px;padding: 0 2px}
.qycontent .qytextright span.span03{ color: #fff; font-size: 14px;padding: 0 2px}
.qycontent .qytextright .spanline{text-decoration: underline}
.header{ height: 56px; background: #2e375c; margin-bottom: 20px;}
.con-main{ height: 500px;}
.nav{ width: 70px; float: left; height: 36px; background: #35406b; text-align: center; padding-top: 20px;}
.nav img{ width: 16px; height: 16px;}
.headeright{ float: right; width: 90.625%;}
.headeright2{ float: right; width: 90.625%; height: 56px;}
.headeright .title{ float:left; width:44%;font-weight:500;color:rgba(255,255,255,1);line-height:56px;font-size:16px; height: 56px; overflow: hidden; text-align: left;}
.headeright .title span{font-size:12px;font-weight:500;color:rgba(136,145,190,1);line-height:56px;}
.headeright .search{ float: left; width: 25%; height: 30px; padding-top: 10px;}
.headeright .search input{}
.headeright .headertxt{ float: left; width: 30%; color: rgba(136,145,190,1); text-align: right; height: 20px; position: relative; line-height: 20px; padding-top: 20px;}
.headeright .headertxt img{ vertical-align: middle; margin: 0 5px;}
\ No newline at end of file
/* 登录 */
.logincontainer{width:100%; height:600px; position:relative;}
.titlebg{width:100%; height:51.5px; background:url('~assets/img/login/titlebg.png') no-repeat;background-size: 100% 100%;}
.leftPopup{position: absolute;top:50%;left:15px;transform: translate(-50%,-50%);}
.leftPopup img{width: 30px;height: 90px;background-size: 100% 100%;}
.leftappcode{position: absolute;top:50%;left:74px;transform: translate(-50%,-50%);width: 75px; height: 75px; border: 1px solid #2C7CEC; border-radius:5px}
.leftappcode img{max-width: 65px;max-height: 65px;padding: 5px;}
.loginmessage{width: 640px; padding: 0 40px; height: 350px;margin: 80px auto 0;background:linear-gradient(180deg,rgba(75,95,153,0.5) 0%,rgba(63,74,113,0.5) 100%);box-shadow:0px 1px 10px 0px rgba(47,138,255,0.5);}
.loginmessageleft{float:left;width: 260px;height: 350px;}
.loginmessageleft img{width: 230px; height: 250px;margin-top: 40px;}
.loginmessageright{float:right;width: 270px;height: 350px;}
.loginmessageright h2{margin-top:30px;color:#479fe5;text-align: left;font-weight:400; font-size: 14px; line-height: 25px;}
.loginmessageright h1{color:#4DBBFF; font-size: 22px; font-weight: 400;text-align: left; line-height: 30px;}
.chart20{width: 240px;height: 15px;border-bottom :1px solid #3e4d7d;}
.loginmessageinput{padding-top: 10px;width: 240px;}
.loginmessageinput .macip input{ padding-left: 12px;}
.logincontainer .el-input{margin: 5px 0 5px; border: 0;}
.logincontainer .el-input::placeholder{color: #FFFFFF !important;}
.logincontainer .el-input__inner{background-color:#3E4975 !important; border: 0;color: #DCDFE6 !important;}
.logincontainer .el-button{width: 240px; height: 40px;}
.logincontainer .el-button.el-button--primary{margin-top: 10px; background:linear-gradient(135deg,rgba(77,187,255,1) 0%,rgba(43,131,255,1) 100%);}
.logincontainer .loginPassAbout{width: 240px;margin-top: 5px;}
.logincontainer .loginMemoryPass{float: left;color: white;width: 120px;height: 20px;}
.logincontainer .el-checkbox{float: left !important;}
.logincontainer .el-checkbox__label{font-size: 12px !important;color: #FFFFFF;}
.loginChangePass{float: right;color:#2C7CEC;width: 120px;height: 20px;line-height: 20px;}
.loginChangePass a{ font-size: 12px; color: #2C7CEC;float: right;}
.loginfooter{margin: 0 auto;height: 30px;line-height: 30px;}
.footermessge{font-size: 10px;color: #2B83FF;position: absolute;bottom: 20px;left:50%;transform: translate(-50%,-50%);}
.footerbeian{margin: 0 auto;height: 18px;line-height: 18px;font-size: 10px;color: #FFFFFF;position: absolute;bottom: 10px;left:50%;transform: translate(-50%,-50%);}
.footerbanben{margin: 0 auto;height: 18px;line-height: 18px; font-size: 10px;color: #FFFFFF;position: absolute;bottom: 10px;right: -50px;transform: translate(-50%,-30%);}
.loginperson{width: 388px; height: 422px;border-radius: 8px; position: absolute;top:55%;left:50%;transform: translate(-50%,-50%);background:rgba(52,66,110,1);z-index:9999}
.tipimg{width: 45px; height: 45px;line-height: 45px;margin: 25px auto 0;}
.tipimg img{max-width: 45px; max-height: 45px;}
.tipmsg{padding-top:15px;}
.tipmsg h3{font-weight:400;color:rgba(214,218,236,1);font-family:PingFangSC-Regular,PingFang SC;letter-spacing: 1px;}
.tippersonmsg{padding-top:10px;width: 280px;margin: 0 auto;}
.tippersonmsg .el-input__inner{background-color:#2E3A62 !important; border: 0;color: #DCDFE6 !important;}
.tippreservation{padding-top:5px;}
.tippreservation .el-button{width: 280px; height: 40px;}
/* 修改密码 */
.updatebox{width: 640px; padding: 0 40px; height: 350px;margin: 80px auto 0;background:linear-gradient(180deg,rgba(75,95,153,0.5) 0%,rgba(63,74,113,0.5) 100%);box-shadow:0px 1px 10px 0px rgba(47,138,255,0.5);}
.updateboxtitle{height: 40px;width: 300px; padding-top: 20px; margin: 0px auto;}
.updateboxtitle h1{font-weight:500;color:#AAB1D2;}
.updateboxmassage{height: 300px; width: 300px;margin: 0 auto;padding-top: 10px;}
.updateboxmassage .el-button{width: 140px;}
.updateboxfix{float: left;}
.updateboxcancel{float: right;}
/* 菜单页面 */
.qycls01{ background: url('~assets/img/login/lh1.png') no-repeat; height: 50px; width: 50px; margin: 0 auto; max-height: 50px; max-width: 50px; background-size: 100% 100%;}
.qycls02{ background: url('~assets/img/login/lh2.png') no-repeat; height: 50px; width: 50px; margin: 0 auto; max-height: 50px; max-width: 50px; background-size: 100% 100%;}
.qycls03{ background: url('~assets/img/login/lh3.png') no-repeat; height: 50px; width: 50px; margin: 0 auto; max-height: 50px; max-width: 50px; background-size: 100% 100%;}
.qycls04{ background: url('~assets/img/login/lh4.png') no-repeat; height: 50px; width: 50px; margin: 0 auto; max-height: 50px; max-width: 50px; background-size: 100% 100%;}
.qycls05{ background: url('~assets/img/login/lh5.png') no-repeat; height: 50px; width: 50px; margin: 0 auto; max-height: 50px; max-width: 50px; background-size: 100% 100%;}
.qycls06{ background: url('~assets/img/login/lh6.png') no-repeat; height: 50px; width: 50px; margin: 0 auto; max-height: 50px; max-width: 50px; background-size: 100% 100%;}
.jnlogbtn{background:#3FA5FF;border-radius: 3px;float: right;margin: 8px 10px 0 0;height: 32px;width: 72px;color: #fff;line-height: 30px;overflow: hidden;font-size: 13px;}
.jnlogbtn img{width: 14px;height: 14px;display: inline-block;position: relative;top: 3px;}
.jnlogh2{color:#4CBAFF;font-size: 30px;font-weight: 500;margin: 50px 0; text-align: center;}
.jnlogmiddlebox{width: 810px;margin: 20px auto 0;height:310px;overflow: hidden;box-sizing: border-box;}
.jnlogmiboxTop{width: 100%;height: 45px;}
.jnlogmiboxBottom{width: 100%;height: 200px;text-align: center;}
.jnlogmibox-leftbrand{width: 123px;margin-right: 11px;height: 43px;background: url('~assets/img/login/jnlogmibox-leftbrand.png');background-size: cover;color: #308BFC;font-size: 17px;line-height: 43px;text-align: center;float: left;}
.threebrand{background: url('~assets/img/login/jnlogthreebrand.png');width:392px;background-size: 100% 100%;}
.twobrand{background: url('~assets/img/login/jnlogthreebrand.png');width:255px;background-size: 100% 100%;float: left;}
.jnlogmibox-item:nth-child(even){width: 123px;margin-right: 11px;height: 170px;float: left;color: #fff; background: url('~assets/img/login/Card1.png') no-repeat; display: flex;justify-content: center;align-items: center;background-size: 100% 100%; position: relative;}
.jnlogmibox-item:nth-child(odd){width: 123px;margin-right: 11px;height: 170px;float: left;color: #fff; background: url('~assets/img/login/Card1.png') no-repeat; display: flex;justify-content: center;align-items: center;background-size: 100% 100%; position: relative;}
.jnlogmibox-item>div{width: 90px;height: 100px;background-size: 100% 100%;}
.jnlogmibox-item img{width: 50px;height: 50px;display: block;margin: 0 auto;}
.jnlogmibox-item p{margin: 20px auto 0;width: 100%;height: 20px;font-size: 13px;color: #ddd;}
#wktimg{ position: absolute; top: 12px; right:0px; text-align: right; width: 62px;}
#wktimg img{ width: 62px; height: 62px;}
.bottomBox{position:fixed;right: 10px;bottom: 10px;height: 168px;width: 300px;padding:10px;background: #0C2F63;background: url('~assets/img/login/bg.png');background-size: 100% 100%;z-index:999}
.topArrow{width: 100%;height: 30px;margin-bottom: 10px;}
.Arrowitem{width: 25px;height: 25px;float: left;}
.Arrowl1{background: url('~assets/img/login/left.png');background-size: 100% 100%;margin-right:5px ;}
.Arrowl2{background: url('~assets/img/login/right.png');background-size: 100% 100%;}
.Arrowr1{background: url('~assets/img/login/close.png');float: right;background-size: 100% 100%;transform: scale(0.9);}
.bottomLine{height: 30px;width: 100%;}
.bottomLine:nth-child(even){ background: #092651;}
.botwords{width: 160px;height: 30px;line-height: 30px;font-size: 13px;color: #ebebeb;text-align: left;padding-left: 5px;float: left;}
.rightIcons{float: right;width: 130px;height: 30px;}
.botspan{width: 30px;height: 30px;display: inline-block;float: left;display: flex;justify-content: center;align-items: center;font-size: 12px;color: #ebebeb;}
.botspan img{width: 10px;height: 10px;}{float: right;}
\ No newline at end of file
/*****下半部分******/
.lefter{ float: left; width: 70px; height: 500px; background: #191e38;}
.lefter ul{}
.lefter ul li{width: 70px; height: 72px; padding-top: 8px; border-bottom: 1px solid #242c4a;-webkit-border-top-right-radius: 4px; }
.lefter ul li p{ line-height: 35px; color: #596698;}
.righter{ float: right; width: 88.625%; padding-right: 2%;}
.lefter ul li.er{width: 70px; height: 39px; padding-top: 0; line-height: 39px; border-bottom: 1px solid #242c4a; color: #A6AED6;}
.lefter ul li.san{width: 70px; height: 39px; padding-top: 0; line-height: 39px; border-bottom: 1px solid #242c4a; color: #A6AED6;}
.lefter ul li.clk{ background-color: #2E88FF; color: #fff; background:-webkit-linear-gradient(top,#4CBBFF,#2E88FF);}
.lefter ul li p.clk{ color: #fff; font-size: 14px;}
.lefter ul li.clk2{ background-color: #34406A; color: #fff;}
.lefter ul li p.clk2{ color: #fff; font-size: 14px;}
.fl{ float: left;}
.fr{ float: right;}
\ No newline at end of file
/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */
/* Document
========================================================================== */
/**
* 1. Correct the line height in all browsers.
* 2. Prevent adjustments of font size after orientation changes in iOS.
*/
html {
line-height: 1.15; /* 1 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/* Sections
========================================================================== */
/**
* Remove the margin in all browsers.
*/
body {
margin: 0;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
========================================================================== */
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
pre {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/* Text-level semantics
========================================================================== */
/**
* Remove the gray background on active links in IE 10.
*/
a {
background-color: transparent;
}
/**
* 1. Remove the bottom border in Chrome 57-
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Remove the border on images inside links in IE 10.
*/
img {
border-style: none;
}
/* Forms
========================================================================== */
/**
* 1. Change the font styles in all browsers.
* 2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 1 */
line-height: 1.15; /* 1 */
margin: 0; /* 2 */
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input { /* 1 */
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select { /* 1 */
text-transform: none;
}
/**
* Correct the inability to style clickable types in iOS and Safari.
*/
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Correct the padding in Firefox.
*/
fieldset {
padding: 0.35em 0.75em 0.625em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
}
/**
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
vertical-align: baseline;
}
/**
* Remove the default vertical scrollbar in IE 10+.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10.
* 2. Remove the padding in IE 10.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
* Remove the inner padding in Chrome and Safari on macOS.
*/
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/* Interactive
========================================================================== */
/*
* Add the correct display in Edge, IE 10+, and Firefox.
*/
details {
display: block;
}
/*
* Add the correct display in all browsers.
*/
summary {
display: list-item;
}
/* Misc
========================================================================== */
/**
* Add the correct display in IE 10+.
*/
template {
display: none;
}
/**
* Add the correct display in IE 10.
*/
[hidden] {
display: none;
}
/**
* 时间格式化批处理
* //例1
String Time = dateFormat("yyyy-MM-dd hh:mm:ss",new Date());
//返回字符串:"2018-7-24 21:13:28"
//例2
String Time = dateFormat("yyyy-MM-dd",new Date());
//返回:"2018-7-24"
}
*/
export function dateFormat(dateValue,fmt){
fmt = fmt || 'yyyyMM';
let date = new Date(dateValue)
var o = {
"M+" : date.getMonth()+1, //月份
"d+" : date.getDate(), //日
"h+" : date.getHours(), //小时
"m+" : date.getMinutes(), //分
"s+" : date.getSeconds(), //秒
"q+" : Math.floor((date.getMonth()+3)/3), //季度
"S" : date.getMilliseconds() //毫秒
};
if(/(y+)/.test(fmt))
fmt=fmt.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)
if(new RegExp("("+ k +")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
return fmt;
}
/**
* 检查传来的参数是否为空
* @param val
* @returns {Boolean}
*/
export function checkIsNull(val) {
if ("undefined" !== val && undefined !== val && "" !== val && "null" !== val && null !== val) {
return false;
} else {
return true;
}
}
/**
* @param {string} str
* @returns {string}
*/
export function getActiveNum(str) {
//转化float,后面全是四舍五入
if (checkIsNull(str) || str == "NaN" || str == "Infinity" || str == "-" || isNaN(str)) {
return "-";
} else {
var num = parseFloat(str);
// if (Math.abs(num) < 0.004) { //处理绝对值小于0.01的
// num = num.toPrecision(1);
// } else
if (Math.abs(num) < 0.1) { //处理绝对值小于0.1的
num = num.toFixed(2);
} else if ((Math.abs(num) >= 0.1) && (Math.abs(num) <= 0.995)) { //处理绝对值大于等于0.1小于等于0.995的
num = num.toPrecision(2);
} else if (Math.abs(num) >= 999.5) { //处理绝对值大于等于999.5的
num = num.toFixed(0);
} else {
num = num.toPrecision(3);
}
return num;
}
}
<template>
<div id="search">
<el-autocomplete class="inline-input" v-model="state" :fetch-suggestions="querySearch" placeholder="请输入内容"
:trigger-on-focus="true" @select="handleSelect">
<i slot="prefix" class="el-input__icon el-icon-search"></i>
</el-autocomplete>
</div>
</template>
<script>
import {home, getPageData} from 'api/home'
export default {
props: ['visible'],
name: 'search',
data() {
return {
state: '',
uname: '',
token: '',
loginMsg: {},
restaurants: [],
cxsj: ''
}
},
methods: {
init() {
let that = this
},
handleSelect(item) {
console.log(item)
this.$router.push('/Member?sfz=' + item.sfzh);
},
querySearch(queryString, cb) {
console.log(queryString)
this.uname = queryString
let token = sessionStorage.getItem('token');
let menuslist = {
"key": "qygl-zdrqfx",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode,
"parameter": {
"orderField": 'XM',
"orderType": "desc",
"pageSize": 1500,
"pageIndex": 1,
"zdrqfldm": '',//重点人群分类代码(非必填,默认查询所有)
"hzxm": this.uname,//患者姓名(非必填,默认查询所有)
"jzzt": '',//就诊状态(0=未就诊/1=已就诊,非必填,默认查询所有)
"jzcs": ''//就诊次数(非必填,默认查询所有)
}
}
this.restaurants = []
getPageData(token, menuslist).then(res => {
res.data.listData.forEach((item, index) => {
let ulist = {"value": '', "usex": '', "sfzh": ''}
ulist.value = item.XM + ''
ulist.usex = item.XB
ulist.sfzh = item.SFZH
this.restaurants.push(ulist)
})
var restaurants = this.restaurants;
var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
cb(results);
});
},
querySearchAsync(queryString, cb) {
console.log(queryString)
},
createFilter(queryString) {
return (restaurant) => {
return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
}
}
},
mounted() {
this.token = sessionStorage.getItem('token')
this.loginMsg = JSON.parse(sessionStorage.getItem('userinfo'))
this.cxsj = sessionStorage.getItem("cxsj")
this.init()
}
}
</script>
<style>
#search .el-input__inner {
width: 150px;
height: 22px;
border: none;
background: rgba(62, 73, 117, 1);
border-radius: 3px;
font-size: 10px;
font-weight: 500;
color: rgba(110, 119, 167, 1);
line-height: 28px;
}
#search .el-input__icon {
line-height: 25px;
}
#search .el-input__prefix, .el-input__suffix {
left: 3px;
top: 2px;
color: rgba(110, 119, 167, 1);
}
#search input::-webkit-input-placeholder {
font-size: 10px;
font-weight: 500;
color: rgba(110, 119, 167, 1);
}
</style>
<template>
<div id="header">
<div class="nav" @click="goMenu"><img src="~assets/img/header/iconmainnav.png"></div>
<div><span class="title">上海市社区家庭医生签约服务费云管理</span><span class="subtitle">(<span>{{subtitle}}</span>)</span></div>
<div class="header-right">
<div class="search">
<searchCell/>
</div>
<div>
<img src="~assets/img/header/icon-main-user.png">{{userName}},截止于{{$store.getters.getCxsj}}
<img @click="openCame()" src="~assets/img/header/icon-mainsaoma.png">
<img src="~assets/img/header/icon-mainfilter.png">
<div class="el-date-editor">
<el-date-picker v-model="cxsj" @change="cxsjChange" type="month" placeholder=""></el-date-picker>
</div>
</div>
</div>
</div>
</template>
<script>
import searchCell from 'components/common/Search'
export default {
components: { searchCell },
name: "Header",
data() {
return {
cxsj: '',
userName: '',
subtitle:''
}
},
created(){
this.getHeadRightInfo()
},
mounted(){
},
computed:{
},
methods:{
goMenu(){
this.$router.push('/menu');
},
cxsjChange(){
},
getHeadRightInfo(){
this.userName = JSON.parse(sessionStorage.getItem('userinfo')).userName;
this.cxsj = this.$store.getters.getCxsj;
const orgShortName = JSON.parse(sessionStorage.getItem('userinfo')).orgShortName;
const roleCode = JSON.parse(sessionStorage.getItem('userinfo')).roleCode;
let role = '';
if('hcms.APP_JTYS' === roleCode){
role = '-家医版'
}else{
role = '-院长版'
}
this.subtitle = orgShortName + role;
}
},
}
</script>
<style scoped>
#header{
background:rgba(46,55,92,1);
position: relative;
box-sizing: border-box;
width: 100%;
height: 55px;
font-size: 22px;
color: #fff;
display: flex;
}
#header .nav{
width: 70px;
height: 55px;
background:rgba(53,64,107,1);
line-height: 50px;
text-align: center;
}
#header .nav img{
width: 11px;
height: 11px;
vertical-align: middle;
}
#header .title{
font-size:17px;
font-weight:500;
color:rgba(255,255,255,1);
line-height:48px;
margin-left: 20px;
}
#header .subtitle{
font-size:11px;
font-weight:500;
margin-left: 10px;
color:rgba(136,145,190,1);
line-height:30px;
}
#header .search{
margin-right: 10px;
line-height:40px;
}
#header .header-right{
position: absolute;
top:5px;
right:10px;
font-size:11px;
font-weight:500;
color:rgba(136,145,190,1);
line-height:40px;
display: flex;
}
#header .header-right .el-date-editor {
background:none !important;
display: none;
}
#header .header-right img {
width: 15px;
height: 14px;
margin: 0 8px;
vertical-align: middle;
}
</style>
\ No newline at end of file
<template>
<div id="mainSideNavbar">
<side-navbar>
<side-navbar-item link="/gpHome/gpContract">
<img slot="icon" src="~assets/img/navSide/icon-memu1.png" alt="">
<img slot="active-icon" src="~assets/img/navSide/icon-memu1-selected.png" alt="">
<div slot="text">签约管理</div>
</side-navbar-item>
<side-navbar-item link="/gpHome/gpEexpense">
<img slot="icon" src="~assets/img/navSide/icon-memu2.png" alt="">
<img slot="active-icon" src="~assets/img/navSide/icon-memu2-selected.png" alt="">
<div slot="text">费用管理</div>
</side-navbar-item>
<side-navbar-item link="/gpHome/gpPerformance">
<img slot="icon" src="~assets/img/navSide/icon-memu3.png" alt="">
<img slot="active-icon" src="~assets/img/navSide/icon-memu3-selected.png" alt="">
<div slot="text">绩效考核</div>
</side-navbar-item>
<side-navbar-item link="/gpHome/gpDefect">
<img slot="icon" src="~assets/img/navSide/icon-memu4.png" alt="">
<img slot="active-icon" src="~assets/img/navSide/icon-memu4-selected.png" alt="">
<div slot="text">缺陷管理</div>
</side-navbar-item>
</side-navbar>
</div>
</template>
<script>
import SideNavbar from 'components/common/sideNavbar/SideNavbar.vue'
import SideNavbarItem from 'components/common/sideNavbar/SideNavbarItem.vue'
export default {
name: "mainSideNavbar",
components:{
SideNavbar,
SideNavbarItem
},
}
</script>
<style scoped>
#mainSideNavbar {
width:71px;
height:500px;
text-align: center;
background:linear-gradient(180deg,rgba(30,36,67,1) 0%,rgba(19,24,44,1) 100%)
}
</style>
\ No newline at end of file
<template>
<div id="sideNavbar">
<slot></slot>
</div>
</template>
<script>
export default {
name: "sideNavbar",
}
</script>
<style scoped>
</style>
\ No newline at end of file
<template>
<!--<div id="tab-bar-item" @click="itemClick">-->
<!--<div class="item-icon" v-show="!isActive"><slot name="icon"></slot></div>-->
<!--<div class="item-active-icon" v-show="isActive"><slot name="active-icon"></slot></div>-->
<!--<div class="item-text" :style="activeStyle"><slot name="text"></slot></div>-->
<!--</div>-->
<div id="sideNavbarItem" @click="navItemClick" :class="activeClass">
<div class="item-icon" v-show="!isActive"><slot name="icon"></slot></div>
<div class="item-active-icon" v-show="isActive"><slot name="active-icon"></slot></div>
<div class="item-text" :style="activeStyle"><slot name="text"></slot></div>
</div>
</template>
<script>
export default {
name: "sideNavbarItem",
props: {
link: {
type: String,
required: true
}
},
computed: {
isActive() {
return this.$route.path.indexOf(this.link) !== -1
},
activeClass() {
return this.isActive ? 'activeClass' : {}
},
activeStyle() {
return this.isActive ? {'color': '#FFFFFF'} : {}
}
},
methods: {
navItemClick() {
this.$router.replace(this.link)
}
}
}
</script>
<style scoped>
#sideNavbarItem {
height: 80px;
font-size:12px;
font-weight:500;
color:rgba(89,102,152,1);
border-top: 1px solid #2A3353;
border-bottom: 1px solid #2A3353;
}
#sideNavbarItem img{
width: 17px;
height: 19px;
margin: 22px 27px 5px 25px;
}
.activeClass{
background:linear-gradient(180deg,rgba(76,187,255,1) 0%,rgba(46,136,255,1) 100%)
}
</style>
\ No newline at end of file
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import * as ConmonJs from 'assets/js/common.js';
import echarts from 'echarts'
Vue.config.productionTip = false
Vue.prototype.commonJs = ConmonJs
Vue.prototype.$echarts = echarts;
Vue.use(ElementUI);
new Vue({
components:{
},
router,
store,
render: h => h(App)
}).$mount('#app')
import Vue from 'vue'
import Router from 'vue-router'
//import imgUpLoad from '@/components/imgUpLoad'
Vue.use(Router)
export default new Router({
mode: 'history',
base: '/gpContractServiceExpense/',
routes: [
{ // 默认登陆页
path: '/',
name: 'default',
component: () => import('views/login/Login.vue'),
},
{ // 登陆页
path: '/login',
name: 'login',
component: () => import('views/login/Login.vue'),
},
{ // 修改密码页
path: '/changePassword',
name: 'changePassword',
component: () => import('views/login/ChangePassword.vue'),
},
{ // 目录
path: '/menu',
name: 'menu',
component: () => import('views/login/Menu.vue'),
},
{ // 家医版主页
path: '/gpHome',
name: 'gpHome',
component: () => import('views/gp/GpHome.vue'),
children: [
{ // 家医签约管理
path: 'gpContract',
name: 'gpContract',
component: () => import('views/gp/contract/GpContract.vue'),
},
{ //费用管理主页
path: 'gpEexpense',
name: 'gpEexpense',
component: () => import('views/gp/expense/GpExpenseHome.vue'),
},
{ //绩效考核
path: 'gpPerformance',
name: 'gpPerformance',
component: () => import('views/gp/performance/GpPerformance.vue'),
},
{ //缺陷管理主页
path: 'gpDefect',
name: 'gpDefect',
component: () => import('views/gp/defect/GpDefectHome.vue'),
},
]
},
]
})
const actions = {
setCxsj({commit}, platform) {
commit('setStateCxsj', platform);
},
}
export default actions
const getters = {
getCxsj(state){
return state.cxsj
},
}
export default getters
import Vue from 'vue'
import Vuex from 'vuex'
import mutations from './mutations'
import actions from './actions'
import getters from './getters'
Vue.use(Vuex)
const state = {
cxsj:''
}
const store = new Vuex.Store({
state,
mutations,
actions,
getters
})
export default store
const mutations = {
setStateCxsj (state, platform) {
state.cxsj = platform;
},
}
export default mutations
<template>
<div id="gpHome" class="outer">
<el-container class="container">
<el-header height="55px">
<page-header/>
</el-header>
<el-container>
<el-aside width="71px">
<div style="margin-top: 20px;">
<main-side-navbar />
</div>
</el-aside>
<el-main>
<router-view/>
</el-main>
</el-container>
</el-container>
</div>
</template>
<script>
import PageHeader from 'components/common/header/PageHeader'
import MainSideNavbar from 'components/common/sideNavbar/MainSideNavbar'
export default {
name: "Home",
components:{
PageHeader,
MainSideNavbar
}
}
</script>
<style>
#gpHome .el-header {
padding: 0;
}
</style>
\ No newline at end of file
<template>
<div>
<el-row :gutter="20">
<el-col :span="12">
<div class="card">
<div class="title">辖区居民·人数</div>
<div class="card-content" style="height: 157px;">
<!--<div class="cttxt">-->
<!--<div class="ctline"><span style="width:2.5px;height:10px;background:rgba(38,128,255,1);-->
<!--display: inline-block;margin-right: 4px;"></span><span>实际数</span>|<span>同比数</span>|<span>管辖数</span></div>-->
<!--<div class="ctp">-->
<!--<span>{{nullreturn(para01)}}</span>-->
<!--<span class="span02">/</span>-->
<!--<span class="span01">{{nullreturn(para02)}}</span>-->
<!--<span class="span02">/</span><span>{{nullreturn(para03)}}</span>-->
<!--<code class="tong"></code><span class="span03">{{nullreturn(para04)=='-'?'-':Math.abs(nullreturn(para04))}}%</span>-->
<!--<i :class="para04<0?'el-icon-my-down':'el-icon-my-up'"></i>-->
<!--</div>-->
<!--<div class="ctline">-->
<!--<i class="i02"></i>-->
<!--<span>签约率</span>-->
<!--<i :class="para06<0?'el-icon-my-mainred':'el-icon-my-green'"></i>-->
<!--</div>-->
<!--<div class="ctp">-->
<!--<span>{{nullreturn(para05)}}</span>-->
<!--<span class="span01">%</span>-->
<!--<code class="pian"></code>-->
<!--<span class="span03">{{nullreturn(para06)=='-'?'-':Math.abs(nullreturn(para06))}}%</span>-->
<!--<i :class="para06<0?'el-icon-my-down':'el-icon-my-up'"></i>-->
<!--</div>-->
<!--</div>-->
<div class="head-card-content">
<div>
<i class="icon-vertical" style="width:2.5px;height:10px;"></i>
<span style="margin-left: 7px;">实际数</span><i class="icon-vertical" style="width:1px;height:5px;margin: 0 7px;"></i>
<span>同比数</span><i class="icon-vertical" style="width:1px;height:5px;margin: 0 7px;"></i>
<span>管辖数</span>
</div>
<div>
<span>{{commonJs.getActiveNum(para01)}}</span>
<span class="span02">/</span>
<span class="span01">{{nullreturn(para02)}}</span>
<span class="span02">/</span><span>{{nullreturn(para03)}}</span>
<code class="tong"></code><span class="span03">{{commonJs.getActiveNum(para04)}}%</span>
<i :class="para04<0?'el-icon-my-down':'el-icon-my-up'"></i>
</div>
</div>
<div id="ctpie1" class="ctpie"></div>
<div class="pieline">
<span class="span01"></span>
<span class="span02"></span>
<span class="span03"></span>
<span class="span04"></span>
<span class="span05"></span>
</div>
</div>
</div>
</el-col>
<el-col :span="12">
<div class="card">
<div class="title">重点人群·人数</div>
<div class="card-content" style="height: 157px;">
<div class="cttxt">
<div class="ctline"><i class="i01"></i><span>实际数</span>|<span>同比数</span>|<span>管辖数</span></div>
<div class="ctp">
<span>{{nullreturn(para13)}}</span>
<span class="span02">/</span>
<span class="span01">{{nullreturn(para14)}}</span>
<span class="span02">/</span><span>{{nullreturn(para15)}}</span>
<code class="tong"></code><span class="span03">{{nullreturn(para16)=='-'?'-':Math.abs(nullreturn(para16))}}%</span>
<i :class="para16<0?'el-icon-my-down':'el-icon-my-up'"></i>
</div>
<div class="ctline">
<i class="i02"></i>
<span>签约率</span>
<i :class="para18<0?'el-icon-my-mainred':'el-icon-my-green'"></i>
</div>
<div class="ctp">
<span>{{nullreturn(para17)}}</span>
<span class="span01">%</span>
<code class="pian"></code>
<span class="span03">{{nullreturn(para18)=='-'?'-':Math.abs(nullreturn(para18))}}%</span>
<i :class="para18<0?'el-icon-my-down':'el-icon-my-up'"></i>
</div>
</div>
<div id="ctpie2" class="ctpie"></div>
<div class="pieline">
<span class="span01"></span>
<span class="span02"></span>
<span class="span03"></span>
<span class="span04"></span>
<span class="span05"></span>
</div>
</div>
</div>
</el-col>
</el-row>
<el-row style="margin-top: 15px;">
<el-col :span="15">
<div class="card">
<div class="title">签约分析</div>
<div class="card-content" style="height: 267px;">
<div class="div-model-b">
<div class="div-model-echarts">
<div id="echats1"></div>
</div>
<div class="div-model-table">
</div>
</div>
</div>
</div>
</el-col>
<el-col :span="9">
<div class="card">
<div class="title"><div class="tabletitle">
<span @click="changeAll(1)" :class="isall==1?'clk':''">总览</span>
<span :class="isall==2?'clk':''" @click="changeAll(2)">缺陷</span>
<img @click="yyshow()" v-show="isall==1" src="~assets/img/common/icon-mainwen.png">
</div></div>
<div class="card-content" style="height: 267px;">
<el-table v-show="isall==1" :header-cell-style="headerStyle" :fit="true" :cell-style="cellStyle"
height="220" :row-class-name="tableRowClassName" :data="tableData">
<el-table-column label="序列" type="index" width="45"></el-table-column>
<el-table-column prop="MANAGE_NAME" :show-overflow-tooltip="true" width="80" label="人群">
<template slot-scope="scope">
<span @click="AnalyFn(1,scope.row.MANAGE_TYPE)" :class="lbnamei(scope.$index)">{{returnIco(scope.row.MANAGE_TYPE)}}</span>
<span @click="AnalyFn(1,scope.row.MANAGE_TYPE)" class="lbname">{{scope.row.MANAGE_NAME}}</span>
</template>
</el-table-column>
<el-table-column prop="QYRS" :formatter="stateFormat" width="65"
:render-header="renderHeader"></el-table-column>
<el-table-column prop="QYRS_TBZ" :formatter="stateFormat" width="65" label="去年·人">
<template slot-scope="scope">
{{scope.row.QYRS_TBZ}}
</template>
</el-table-column>
<el-table-column prop="QYL" :formatter="stateFormat" label="签约率·%">
<template slot-scope="scope">
{{nullreturn(scope.row.QYL)}}
</template>
</el-table-column>
</el-table>
<el-table v-show="isall==2" :header-cell-style="headerStyle" :fit="true" :cell-style="cellStyle"
height="220" :row-class-name="tableRowClassName" :data="tableData">
<el-table-column label="序列" type="index" width="45"></el-table-column>
<el-table-column prop="MANAGE_NAME" :show-overflow-tooltip="true" width="80" label="人群">
<template slot-scope="scope">
<p @click="AnalyFn(2,scope.row.MANAGE_TYPE)" :class="lbnamei(scope.$index)">
{{returnIco(scope.row.MANAGE_TYPE)}}</p>
<p @click="AnalyFn(2,scope.row.MANAGE_TYPE)" class="lbname">{{scope.row.MANAGE_NAME}}</p>
</template>
</el-table-column>
<el-table-column prop="W_QY" :formatter="stateFormat" :render-header="renderHeaderw">
<template slot-scope="scope">
{{scope.row.W_QY}}
</template>
</el-table-column>
<el-table-column prop="W_QYL" :formatter="stateFormat" label="未签约率·%">
<template slot-scope="scope">
{{nullreturn(scope.row.W_QYL)}}
</template>
</el-table-column>
</el-table>
<div v-show="isyy" class="yytable">
<h3>签约率说明</h3>
<div class="pline">
<div class="pl01">| 60岁以上</div>
<div class="pl02">60以上老人签约人数/60岁以上老人管辖人数,60岁以上老人管辖人数根据上海市老龄化率23.7%进行估算,计算结果仅供参考。</div>
</div>
<div class="pline">
<div class="pl01">| 高血压</div>
<div class="pl02">高血压患者签约人数/高血压患者管辖人数,高血压患者管辖人数按照高血压发病率28.36%进行估算,计算结果仅供参考。</div>
</div>
<div class="pline">
<div class="pl01">| 糖尿病</div>
<div class="pl02">糖尿病患者签约人数/糖尿病患者管辖人数,糖尿病患者管辖人数按照糖尿病发病率17.57%进行估算,计算结果仅供参考。</div>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
<!-----------底部内容---------->
</div>
</template>
<script>
import {home, getPageData} from 'api/home'
export default {
components: {},
name: 'gpContract',
data() {
return {
path: '',
token: '',
loginMsg: {},
yzback: false,
para01: 1,
para02: 2,
para03: 3,
para04: 4,
para05: 5,
para06: 6,
para07: 7,
para08: 8,
para09: 9,
para10: 10,
para11: 11,
uname: '',
para12: 12,
yname: '',
para13: 13,
para14: 14,
para15: 15,
para16: 16,
para17: 17,
para18: 18,
jctxt: '150',
loginID: '',
isall: 1,
loading: false,
isyy: false,
detelist: {},
hzpoints: [],
cxsj: "",
selectTime: '2020-05',
numbers: "01",
option: {
tooltip: {
position: [50, 50],
padding: 10,
trigger: 'axis',
formatter: function (params) {
for (var ab in params) {
if (!params[ab].data.value) {
params[ab].data.value = '-'
}
if (!params[ab].data.val) {
params[ab].data.val = '-'
}
}
var res = "<div class='ectabletitle'>";
res += params[0].axisValue + "(实值/同期)</div>";
res += "<ul class='ectable01'>";
res += "<li class='li01'>管辖数:<li>";
res += "<li class='li03'>" + params[0].data.value + " / " + params[0].data.val + "人</li>";
res += "<li><span class='tong'>同</span></li>";
res += "<li>" + params[1].data.value + "%";
if (params[1].data.val2 < 0) {
res += " <i class='el-icon-my-down'></i> ";
} else {
res += " <i class='el-icon-my-up'></i> ";
}
res += "</li></ul>";
res += "<ul class='ectable01'>";
res += "<li class='li01'>签约数:<li>";
res += "<li class='li03'>" + params[1].data.val + " / " + params[2].data.value + "人</li>";
res += "<li><span class='tong'>同</span></li>";
res += "<li>" + params[2].data.val + "%";
if (params[2].data.val2 < 0) {
res += " <i class='el-icon-my-down'></i> ";
} else {
res += " <i class='el-icon-my-up'></i> ";
}
res += "</li></ul>";
res += "<ul class='ectable01'>";
res += "<li class='li01'>签约率:</li>";
res += "<li class='li03'>" + params[3].data.value + " %/" + params[3].data.val + " %</li>";
res += "<li><span class='tong'>同</span></li>";
res += "<li>" + params[4].data.value + "%";
if (params[4].data.val2 < 0) {
res += " <i class='el-icon-my-down'></i> ";
} else {
res += " <i class='el-icon-my-up'></i> ";
}
res += "</li></ul>";
res += "<ul class='ectable01'>";
res += "<li class='li02'>签约率偏离度:</li>";
res += "<li class='li03'>" + params[4].data.val + "%";
if (params[4].data.val < 0) {
res += " <i class='el-icon-my-down'></i> ";
} else {
res += " <i class='el-icon-my-up'></i> ";
}
res += ' / ';
res += params[5].data.value + "% ";
if (params[5].data.val2 < 0) {
res += " <i class='el-icon-my-down'></i> ";
} else {
res += " <i class='el-icon-my-up'></i> ";
}
res += "</li><li></li>";
res += "<li></li>";
res += "</ul>";
return res
}
},
legend: {
textStyle: {
color: '#8393A9',
fontSize: 10
},
left: 25,
top: '5',
itemHeight: 10,
itemWidth: 10,
itemGap: 5,
data: ['已签约', '管辖数', '重点签约人数', '重点管辖数', '签约率偏离度', '重点签约率偏离度'],
align: 'left',
selectedMode: false
},
grid: {
top: 70,
bottom: 45,
left: 50
},
xAxis: [{
type: 'category',
data: [],
axisLine: {
lineStyle: {
color: '#8393A9',
type: 'solid'
}
},
axisLabel: {
interval: 0,
rotate: 30,
textStyle: {
fontSize: 10,
color: function (value, index) {
return '#8393A9';
}
}
},
splitLine: {
show: false,
onZero: false
},
axisTick: {
show: false
},
}],
yAxis: [{
type: 'value',
name: '千',
min: 0,
axisLabel: {
textStyle: {
color: '#8393A9',
type: 'solid'
},
},
axisLine: {
show: true,
lineStyle: {
color: '#8393A9',
type: 'solid'
}
},
splitLine: {
show: false
},
axisTick: {
show: true
}
},
{
type: 'value',
name: '%',
max: 100,
min: 0,
splitNumber: 5,
axisLabel: {
textStyle: {
color: function (value, index) {
return '#747d8d';
},
type: 'solid'
}
},
axisLine: {
show: true,
lineStyle: {
color: '#8393A9',
type: 'solid'
}
},
splitLine: {
show: false
},
axisTick: {
show: true
},
}
],
series: [
{
name: '已签约',
type: 'bar',
barWidth: null,
itemStyle: {
normal: {
color: '#2680ff'
}
},
data: []
},
{
name: '管辖数',
type: 'bar',
stack: "1",
barWidth: null,
itemStyle: {
normal: {
color: '#2e4f8b'
}
},
data: []
},
{
name: '重点签约人数',
type: 'bar',
barWidth: null,
itemStyle: {
normal: {
color: '#36f2d8'
}
},
data: []
},
{
name: '重点管辖数',
type: 'bar',
smooth: true,
yAxisIndex: 1,
symbol: 'circle',
symbolSize: 6,
itemStyle: {
normal: {
color: '#336b84'
}
},
z: 11,
data: []
},
{
name: '签约率偏离度',
type: 'line',
smooth: true,
yAxisIndex: 1,
symbol: 'circle',
symbolSize: 6,
z: 11,
itemStyle: {
normal: {
color: '#fda739'
}
},
data: []
},
{
name: '重点签约率偏离度',
type: 'line',
smooth: true,
yAxisIndex: 1,
symbol: 'circle',
symbolSize: 6,
z: 11,
itemStyle: {
normal: {
color: '#f8d065'
}
},
data: []
}
]
},
pieoption1: {
color: ["#1467FF", "#84B3FF", "#0447C3", "#2A71F2", "#5291FF", "#97BFFF"],
tooltip: {
trigger: 'item',
position: [-130, 0],
formatter: function (params) {
var res = "<div style='height:95px;width:250px;padding:0 10px;font-size: 12px;'>";
res += "<div>人群分析</div>";
res += "<table class='rqfx_table1' >";
res += "<thead>";
res += "<tr>";
res += "<td width='80'></td>";
res += "<td width='80' class='tc'><span style='color:#B3BFD2;'>合计·人</span></td>";
res += "<td width='80' class='tc'><span style='color:#B3BFD2;'>重点·人</span></td>";
res += "<td width='80' class='tc'><span style='color:#B3BFD2;'>非重点·人</span></td>";
res += "</tr>";
res += "</thead>";
res += "<tbody>";
res += "<tr>";
res += "<td align='left'><span style='width:12px;height:9px;background:#3B91B3;border-radius:2px;display: inline-block;'></span> <span style='font-size: 12px;'>签约</span></td>";
res += "<td class='tc'><span>" + params.data.val1 + "</span></td>";
res += "<td class='tc'><span>" + params.data.val2 + "</span></td>";
res += "<td class='tc'><span>" + params.data.val3 + "</span></td>";
res += "</tr>";
res += "<tr>";
res += "<td align='left'><span style='width:12px;height:9px;background:#235293;border-radius:2px;display: inline-block;'></span> <span style='font-size: 12px;'>未签约</span></td>";
res += "<td class='tc'><span>" + params.data.val4 + "</span></td>";
res += "<td class='tc'><span>" + params.data.val5 + "</span></td>";
res += "<td class='tc'><span>" + params.data.val6 + "</span></td>";
res += "</tr>";
res += "</tbody>";
res += "</table>";
res += "</div>";
return res
}
},
calculable: false,
series: [
{
hoverAnimation: false,
name: '',
type: 'pie',
radius: [0, 34],
x: '36%',
width: '36%',
funnelAlign: 'right',
label: {
normal: {show: false}
},
labelLine: {
normal: {show: false}
},
data: []
},
{
hoverAnimation: true,
hoverOffset: 3,
name: '',
type: 'pie',
radius: [44, 52],
x: '36%',
width: '36%',
funnelAlign: 'left',
label: {
normal: {show: false}
},
labelLine: {
normal: {show: false}
},
data: []
}
]
},
pieoption2: {
color: ["#1467FF", "#84B3FF", "#0447C3", "#2A71F2", "#5291FF", "#97BFFF"],
tooltip: {
trigger: 'item',
position: [-130, 0],
formatter: function (params) {
var res = "<div style='height:65px;width:220px;padding:10px 5px; text-align:left;font-size: 12px;'>";
res += "<table class='rqfx_table1' >";
res += "<thead>";
res += "<tr>";
res += "<td width='28'><span style='width:12px;height:9px;background:#5492FF;border-radius:2px;display: inline-block;'></span></td>";
res += "<td width='120''>重点人群签约</td></td>";
res += "</tr>";
res += "</thead>";
res += "<tbody>";
res += "<tr>";
res += "<td align='left'></td>";
res += "<td width='120'>签约数:" + params.data.val1 + "人</td>";
res += "</tr>";
res += "<tr>";
res += "<td align='left'></td>";
res += "<td width='120'>签约率:" + params.data.val2 + "% <span class='pian'>偏</span> " + params.data.val3;
if (params.data.val3 >= 0) {
res += "% <i class='el-icon-my-up'></i>";
} else {
res += "% <i class='el-icon-my-down'></i>";
}
res += "</td>";
res += "</tr>";
res += "</tbody>";
res += "</table>";
res += "</div>";
return res
}
},
calculable: false,
series: [
{
hoverAnimation: true,
hoverOffset: 3,
name: '',
type: 'pie',
radius: [44, 52],
x: '36%',
width: '36%',
funnelAlign: 'left',
label: {
normal: {show: false}
},
labelLine: {
normal: {show: false}
},
data: [{value: 3, name: 'A'}, {value: 4, name: 'B'}]
}
]
},
tableData: []
}
},
computed: {},
created() {
},
mounted: function () {
this.token = sessionStorage.getItem('token')
this.loginMsg = JSON.parse(sessionStorage.getItem('userinfo'))
if (this.loginMsg.roleCode == 'hcms.APP_SQYZ') {
this.yzback = true
}
this.yname = this.loginMsg.userName
if (this.loginMsg.roleCode == 'hcms.APP_SQYZ') {
console.log('家医数据信息:')
console.log(this.loginMsg)
this.loginMsg.gpNumber = sessionStorage.getItem('ygh')
this.yname = sessionStorage.getItem('yname')
}
this.cxsj = sessionStorage.getItem("cxsj")
this.initHome()
const obj = setInterval(() => {
if (document.getElementById("echats1")) {
const dom = document.getElementById("echats1")
const myChart = this.$echarts.init(dom)
if (this.option && typeof this.option === "object") {
myChart.setOption(this.option, true)
}
clearInterval(obj)
}
}, 200)
const obj2 = setInterval(() => {
if (document.getElementById("ctpie1")) {
const dom = document.getElementById("ctpie1")
const myChart = this.$echarts.init(dom)
if (this.option && typeof this.option === "object") {
myChart.setOption(this.pieoption1, true)
}
clearInterval(obj2)
}
}, 200)
const obj3 = setInterval(() => {
if (document.getElementById("ctpie2")) {
const dom = document.getElementById("ctpie2")
const myChart = this.$echarts.init(dom)
if (this.option && typeof this.option === "object") {
myChart.setOption(this.pieoption2, true)
}
clearInterval(obj3)
}
}, 200)
},
methods: {
initHome() {
let that = this
//默认调用上半部分
let param = {
"key": "qygl-xqjm-zdrq",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode,
"zdrqfldm": this.numbers,
}
getPageData(that.token, param).then(res => {
// console.log('打印默认数据上半部分:');console.log(res);
let pieOne1 = []
let pieOne2 = []
let pieTwo1 = []
let pieTwo2 = []
let pieOne3 = []
this.para01 = 0
this.para02 = 0
this.para03 = 0
this.para04 = 0
this.para05 = 0
this.para06 = 0
this.para07 = 0
this.para08 = 0
this.para09 = 0
this.para10 = 0
this.para11 = 0
this.para12 = 0
this.para13 = 0
this.para14 = 0
this.para15 = 0
this.para16 = 0
this.para17 = 0
this.para18 = 0
if (res.code == 1 && res.data.length > 0) {
let obj = {value: 1, val1: 0, val2: 0, val3: 0, val4: 0, val5: 0, val6: 0}
this.para01 = res.data[0].QYRS
this.para02 = res.data[0].QYRS_TBZ
this.para03 = res.data[0].GXS
this.para04 = res.data[0].QYRS_TBL
this.para05 = res.data[0].QYL
this.para06 = res.data[0].PLD
this.para07 = res.data[0].QYRS
this.para08 = res.data[0].ZDRQ
this.para09 = res.data[0].F_ZDRQ
this.para10 = res.data[0].W_QY
this.para11 = res.data[0].W_QYZDRQ
this.para12 = res.data[0].W_QYFZDRQ
this.para13 = res.data[0].ZDRQ
this.para14 = res.data[0].ZDRQ_TBZ
this.para15 = res.data[0].ZDRQ_GXS
this.para16 = res.data[0].ZDRQ_TBL
this.para17 = res.data[0].ZDRQ_QYL
this.para18 = res.data[0].ZDRQ_PLD
//第一个饼图复制
obj.value = res.data[0].QYRS
obj.val1 = res.data[0].QYRS
obj.val2 = res.data[0].ZDRQ
obj.val3 = res.data[0].F_ZDRQ
obj.val4 = res.data[0].W_QY
obj.val5 = res.data[0].W_QYZDRQ
obj.val6 = res.data[0].W_QYFZDRQ
pieOne1.push(obj)
obj.value = res.data[0].ZDRQ
pieOne1.push(obj)
obj.value = res.data[0].F_ZDRQ
pieOne2.push(obj)
obj.value = res.data[0].W_QY
pieOne2.push(obj)
obj.value = res.data[0].W_QYZDRQ
pieOne2.push(obj)
obj.value = res.data[0].W_QYFZDRQ
pieOne2.push(obj)
this.pieoption1.series[0].data = pieOne1
this.pieoption1.series[1].data = pieOne2
this.$echarts.init(document.getElementById("ctpie1")).setOption(this.pieoption1, true)
let obj2 = {value: 1, val1: 0, val2: 0, val3: 0}
obj2.value = res.data[0].ZDRQ
obj2.val1 = res.data[0].ZDRQ
obj2.val2 = this.commonJs.getActiveNum(res.data[0].ZDRQ_TBL)
obj2.val3 = this.commonJs.getActiveNum(res.data[0].ZDRQ_PLD)
pieOne3.push(obj2)
let obj3 = {value: 1, val1: 0, val2: 0, val3: 0}
obj3.value = res.data[0].W_QYZDRQ
obj3.val1 = res.data[0].ZDRQ
obj3.val2 = this.commonJs.getActiveNum(res.data[0].ZDRQ_TBL)
obj3.val3 = this.commonJs.getActiveNum(res.data[0].ZDRQ_PLD)
pieOne3.push(obj3)
this.pieoption2.series[0].data = pieOne3
this.$echarts.init(document.getElementById("ctpie2")).setOption(this.pieoption2, true)
}
})
//默认调用下半部分
let param2 = {
"key": "qygl-xqjm-qyfx",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode,
"zdrqfldm": this.numbers,
}
getPageData(that.token, param2).then(res => {
console.log('打印默认数据下半部分:');
console.log(res);
this.tableData = res.data
let xdata = []
let ydata01 = []
let ydata02 = []
let ydata03 = []
let ydata04 = []
let ydata05 = []
let ydata06 = []
res.data.forEach((item, index) => {
let obj2 = {value: 0, val: 0, val2: 0}
xdata.push(item.MANAGE_NAME)
obj2.value = item.GXS
obj2.val = item.GXS_TBZ
obj2.val2 =
ydata01.push(obj2)
let obj3 = {value: 0, val: 0, val2: 0}
obj3.value = this.commonJs.getActiveNum(item.GXS_TBL)
obj3.val = item.QYRS
obj3.val2 = item.GXS_TBL
ydata02.push(obj3)
let obj4 = {value: 0, val: 0, val2: 0}
obj4.value = item.QYRS_TBZ
obj4.val2 = item.QYRS_TBZ
obj4.val = this.commonJs.getActiveNum(item.QYRS_TBL)
ydata03.push(obj4)
let obj5 = {value: 0, val: 0, val2: 0}
obj5.value = this.commonJs.getActiveNum(item.QYL)
obj5.val = this.commonJs.getActiveNum(item.GXS_TBL)
obj5.val2 = item.QYL
ydata04.push(obj5)
let obj6 = {value: 0, val: 0, val2: 0}
obj6.value = this.commonJs.getActiveNum(item.QYL_PLD)
obj6.val = this.commonJs.getActiveNum(item.QYL)
obj6.val2 = item.QYL_PLD
ydata05.push(obj6)
let obj7 = {value: 0, val: 0, val2: 0}
obj7.value = this.commonJs.getActiveNum(item.QYL_PLD_TBZ)
obj7.val = 0
obj7.val2 = item.QYL_PLD_TBZ
ydata06.push(obj7)
})
this.option.xAxis[0].data = xdata
this.option.series[0].data = ydata01
this.option.series[1].data = ydata02
this.option.series[2].data = ydata03
this.option.series[3].data = ydata04
this.option.series[4].data = ydata05
this.option.series[5].data = ydata06
this.$echarts.init(document.getElementById("echats1")).setOption(this.option, true)
})
},
yyshow() {
this.isyy = !this.isyy;
},
changeAll(param) {
this.isall = param
},
tableRowClassName({row, rowIndex}) {
if (rowIndex % 2 == 1) {
return 'warning-row';
} else {
return 'success-row';
}
},
stateFormat(row, column) {
if (row.QYRS) {
return row.QYRS
} else if (row.QYRS_TBZ) {
return row.QYRS_TBZ
} else if (row.W_QY) {
return row.W_QY
} else if (row.W_QYL) {
return row.W_QYL
} else {
return '-'
}
},
returnIco(para) {
if (para == 'A') {
return '60'
} else if (para == 'B') {
return '高'
} else if (para == 'C') {
return '糖'
} else if (para == 'D') {
return '孕'
} else if (para == 'E') {
return '小'
} else if (para == 'F') {
return '残'
} else if (para == 'G') {
return '结'
} else if (para == 'H') {
return '计'
} else if (para == 'I') {
return '精'
} else if (para == 'J') {
return '贫'
} else if (para == 'K') {
return '非'
} else {
return '-'
}
},
headerStyle() {
return 'background:none; border:0; margin:0; padding:0; line-height:24px; color:#6D779A; font-size:12px; text-align:center'
},
cellStyle() {
return 'background:none;color:#fff;border:0; margin:0; padding:0; line-height:25px; color:#AAB1D2; font-size:12px; text-align:center'
},
yzbackto() {
this.$router.push('/YSigning');
},
goExit() {
this.$router.push('/menu');
},
renderHeader() {
return ( <div style = "text-decoration: underline;line-height: 20px;"
on-click = {() => this.AnalyFn(1, '')
}>
签约·人 < /div> )
},
renderHeaderw() {
return ( < div
style = "text-decoration: underline;line-height: 20px;"
on-click = {() => this.AnalyFn(0, '')
}>
未签约·人 < /div> )
},
toPath(path) {
this.path = path;
this.$router.push('/' + path);
},
dataSearch(value) {
console.log(famartTime2(value));
let val = famartTime2(value)
this.cxsj = val
this.initHome()
},
AnalyFn(type, param) {
this.$router.push('/AnalySign?type=' + type + '&param=' + param);
},
openCame() {
if (false) {
} else {
this.$message.error('移动APP打开扫一扫');
}
},
lbnamei(param) {
if (param < 2) {
return 'lbnamei'
} else if (param >= 2 && param < 4) {
return 'lbnamei1'
} else if (param >= 4 && param < 6) {
return 'lbnamei2'
} else if (param >= 6 && param < 8) {
return 'lbnamei3'
} else if (param >= 8 && param < 10) {
return 'lbnamei4'
} else if (param >= 10 && param < 12) {
return 'lbnamei5'
} else if (param >= 12 && param < 14) {
return 'lbnamei6'
}
},
nullreturn(param) {
if (param == null || param == "NaN") {
return '-'
} else {
var num = parseFloat(param);
if (Math.abs(num) < 0.1) { //处理绝对值小于0.1的
num = num.toFixed(2);
} else if ((Math.abs(num) >= 0.1) && (Math.abs(num) <= 0.995)) { //处理绝对值大于等于0.1小于等于0.995的
num = num.toPrecision(2);
} else if (Math.abs(num) >= 999.5) { //处理绝对值大于等于999.5的
num = num.toFixed(0);
} else {
num = num.toPrecision(3);
}
return num
}
},
}
}
</script>
<style>
</style>
<template>
<div class="outer" style="position: relative;">
<el-container id="gpDefect">
<el-header height="55px">
<page-header/>
</el-header>
<el-container>
<el-aside width="71px">
<div style="margin-top: 20px;">
<side-navbar @toPath="toPath" :path="path"/>
</div>
</el-aside>
<el-main>
<div class="div-model fl06">
<div class="title">费用缺陷</div>
<div class="content">
<div class="detitle">
<span>{{base.ZLS}}</span>
</div>
<div id="echats8"></div>
<div class="pieline pieline2">
<span class="span01"></span>
<span class="span02"></span>
<span class="span03"></span>
<span class="span04"></span>
<span class="span05"></span>
</div>
</div>
</div>
<div class="div-model fl07">
<div class="title5">
<span @click="fyqxChange(1)" :class="fyqx==1?'clk':''">门诊费用缺陷</span>
<span @click="fyqxChange(2)" :class="fyqx==2?'clk':''">门诊次数缺陷</span>
</div>
<div class="content">
<div class="ecleft">
<div class="ctlinep1">
{{param02}}
<span></span>
</div>
<div class="ctlinep2">{{param03}} %</div>
<div class="cttxt cttxt3">
<div class="ctline">
<i class="i01"></i>
<span>异常管理率</span>
</div>
</div>
<div class="ctlinep">
{{param04}}
<span></span>
</div>
<div class="cttxt cttxt3">
<div class="ctline">
<i class="i02"></i>
<span>疑似次数异常例数</span>
<span class="zanbi"></span>
<span class="zbbfb">{{param05=='-'?"-":Math.abs(getActiveNum(param05))}}</span>
<span class="zbbfbh">%</span>
<i :class="param05<0?'el-icon-my-down':'el-icon-my-up'"></i>
</div>
</div>
</div>
<div id="echats1"></div>
</div>
</div>
<div class="div-model fr02">
<div class="title5">
<span @click="fyqxChange(3)" :class="fyqx==3?'clk':''">住院缺陷</span>
</div>
<div class="content">
<div class="ecleft">
<div class="ctlinep1">
{{base.ZYLS}}
<span></span>
</div>
<div class="ctlinep2">{{getActiveNum(base.ZYYC_GLL)}} %</div>
<div class="cttxt cttxt3">
<div class="ctline">
<i class="i01"></i>
<span>异常管理率</span>
</div>
</div>
<div class="ctlinep">&nbsp;</div>
<div class="cttxt cttxt3">
<div class="ctline">
<i class="i02"></i>
<span>指单·偏≥{{base.ZDDJ_PL40}}%</span>
<i class="i02"></i>
<span>{{base.ZDDJ_PL100}}%≤指单·偏<100%</span>
</div>
</div>
</div>
<div id="echats2"></div>
</div>
</div>
<div class="div-model-b">
<div class="div-model-table div-model-table4">
<div class="tabletitle4">
<span @click="tabChange(1)" :class="istable==1?'clk':''">异常清单</span>
<span @click="tabChange(2)" :class="istable==2?'clk':''">管理明细</span>
<div class="sxdiv2" @click="searchFn" v-show="istable==1">
筛选条件
<i class="el-icon-arrow-down"></i>
<font>{{sxname}}</font>
</div>
<div @click="download" class="doexport">
导出
<i class="el-icon-download"></i>
</div>
<div class="docode">
清单
<i class="el-icon-tickets"></i>
</div>
<div class="sbtitle" v-show="istable==2">
<code @click="gysbChange(1)" :class="gysbclk==1?'clk':''">上报统计</code> |
<code @click="gysbChange(2)" :class="gysbclk==2?'clk':''">干预统计</code>
</div>
</div>
<el-table
v-show="istable==1"
:header-cell-style="headerStyle"
:fit="true"
id="rebateSetTable"
:cell-style="cellStyle"
height="254"
:row-class-name="tableRowClassName"
:data="tableData"
>
<el-table-column fixed label="序号" type="index" width="65"></el-table-column>
<el-table-column fixed prop="XM" width="110" label="姓名">
<template slot-scope="scope">
<p @click="toMember(scope.row.SFZH)" class="jntemname">{{scope.row.XM}}</p>
<div v-html="iconshow(scope.row.ZDRQ)"></div>
</template>
</el-table-column>
<el-table-column prop="MZFY" width="145" label="累计就诊费用·千/偏·%" sortable>
<template slot-scope="scope">
<span
class="ycqd_lf"
>{{getActiveNum(scope.row.MZFY/1000)}}/{{getActiveNum(scope.row.MZFY_TBZ)}}</span>
<span class="sp13">
<i :class="scope.row.MZFY_TBZ<0?'el-icon-my-down':'el-icon-my-up'"></i>
</span>
</template>
</el-table-column>
<el-table-column prop="MZFY_TBL" width="60" sortable label="同·%">
<template slot-scope="scope">
<span class="ycqd_t">{{getActiveNum(scope.row.MZFY_TBL)}}</span>
<span class="sp13">
<i :class="scope.row.MZFY_TBL<0?'el-icon-my-down':'el-icon-my-up'"></i>
</span>
</template>
</el-table-column>
<el-table-column prop="MZYF" width="145" sortable label="累计就诊药费·千/同·%">
<template slot-scope="scope">
<span
class="ycqd_lf"
>{{getActiveNum(scope.row.MZYF/1000)}}/{{getActiveNum(scope.row.MZYF_TBL)}}</span>
<span class="sp13">
<i :class="scope.row.MZYF_TBL<0?'el-icon-my-down':'el-icon-my-up'"></i>
</span>
</template>
</el-table-column>
<el-table-column prop="JZCS" width="120" sortable label="累计就诊·次/偏·%">
<template slot-scope="scope">
<span class="ycqd_lf">{{scope.row.JZCS}} / {{getActiveNum(scope.row.JZCS_TBZ)}}</span>
<span class="sp13">
<i :class="scope.row.JZCS_TBZ<0?'el-icon-my-down':'el-icon-my-up'"></i>
</span>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBL" width="60" sortable label="同·%">
<template slot-scope="scope">
<span class="ycqd_t">{{getActiveNum(scope.row.JZCS_TBL)}}</span>
<span class="sp13">
<i :class="scope.row.JZCS_TBL<0?'el-icon-my-down':'el-icon-my-up'"></i>
</span>
</template>
</el-table-column>
<el-table-column prop="ZHNJZL" width="135" sortable label="组合就诊率·%/偏·%">
<template slot-scope="scope">
<span
class="ycqd_lf"
>{{getActiveNum(scope.row.ZHNJZL)}}/{{getActiveNum(scope.row.ZHNJZL_PLD)}}</span>
<span class="sp13">
<i :class="scope.row.ZHNJZL_PLD<0?'el-icon-my-down':'el-icon-my-up'"></i>
</span>
</template>
</el-table-column>
<el-table-column prop="QYSQJZL" width="155" sortable label="签约社区就诊率·%/偏·%">
<template slot-scope="scope">
<span
class="ycqd_lf"
>{{getActiveNum(scope.row.QYSQJZL)}}/{{getActiveNum(scope.row.QYSQJZL_PLD)}}</span>
<span class="sp13">
<i :class="scope.row.QYSQJZL_PLD<0?'el-icon-my-down':'el-icon-my-up'"></i>
</span>
</template>
</el-table-column>
<el-table-column prop="QYRS_TBZ" width="105" label="社区就诊·次(组内)">
<template
slot-scope="scope"
>{{getActiveNum(scope.row.JZCS_YJ)}} ({{getActiveNum(scope.row.ZHNJZCS_YJ)}})
</template>
</el-table-column>
<el-table-column prop="QYRS_TBZ" width="105" label="二级就诊·次(组内)">
<template
slot-scope="scope"
>{{getActiveNum(scope.row.JZCS_EJ)}} ({{getActiveNum(scope.row.ZHNJZCS_EJ)}})
</template>
</el-table-column>
<el-table-column prop="QYRS_NAME" width="105" label="二级就诊·次(组内)">
<template
slot-scope="scope"
>{{getActiveNum(scope.row.JZCS_SJ)}} ({{getActiveNum(scope.row.ZHNJZCS_SJ)}})
</template>
</el-table-column>
<el-table-column prop="GLFS" width="60" label="管理方式">
<template slot-scope="scope">
<font v-if="scope.row.GLFS==1">上报</font>
<font v-else-if="scope.row.GLFS==2">干预</font>
<font v-else-if="scope.row.GLFS==3">无需处理</font>
<font v-else-if="scope.row.GLFS==4">未处理</font>
</template>
</el-table-column>
</el-table>
<el-table
v-show="(istable==2 && gysbclk==1)"
:header-cell-style="headerStyle"
id="rebateSetTable1"
:fit="true"
:cell-style="cellStyle"
height="254"
:row-class-name="tableRowClassName"
:data="Reportdetaildatalist"
>
<el-table-column fixed label="序号" type="index" width="65"></el-table-column>
<el-table-column fixed prop="SERIAL_NUMBER" width="135" label="流水号">
<template slot-scope="scope">
<p @click="opensb(scope.row)" class="plsh">{{scope.row.SERIAL_NUMBER}}</p>
</template>
</el-table-column>
<el-table-column prop="SBSJ" width="120" label="上报时间">
<template slot-scope="scope">
<p class="cell">{{getActiveDataAll1(scope.row.SBSJ)}}</p>
</template>
</el-table-column>
<el-table-column prop="XM" width="55" label="姓名">
<template slot-scope="scope">
<p class="cell">{{scope.row.XM}}</p>
</template>
</el-table-column>
<el-table-column prop="NL" width="45" label="年龄">
<template slot-scope="scope">
<p class="cell">{{scope.row.NL}}</p>
</template>
</el-table-column>
<el-table-column prop="JZCS" width="125" label="累计次数(本次)·次">
<template slot-scope="scope">
<p class="cell">{{scope.row.JZCS}}</p>
</template>
</el-table-column>
<el-table-column prop="MZFY" width="125" label="累计费用(本次)·千元">
<template slot-scope="scope">
<p class="cell">{{TwoCount(scope.row.MZFY/1000)}}</p>
</template>
</el-table-column>
<el-table-column prop="MZYF" width="125" label="累计药费(本次)·千元">
<template slot-scope="scope">
<p class="cell">{{TwoCount(scope.row.MZYF/1000)}}</p>
</template>
</el-table-column>
<el-table-column prop="SJSHYS" label="反馈意见">
<template slot-scope="scope">
<p class="cell">{{getActiveFkyj1(scope.row.SJSHYS)}}</p>
</template>
</el-table-column>
<el-table-column prop="SBZT" label="市级审核意见">
<template slot-scope="scope">
<font v-if="scope.row.SBZT==1">上报</font>
<font v-else-if="scope.row.SBZT==2">干预</font>
<font v-else-if="scope.row.SBZT==3">无需处理</font>
<font v-else-if="scope.row.SBZT==4">未处理</font>
</template>
</el-table-column>
</el-table>
<el-table
v-show="(istable==2&&gysbclk==2)"
:header-cell-style="headerStyle"
id="rebateSetTable2"
:fit="true"
:cell-style="cellStyle"
height="254"
:row-class-name="tableRowClassName"
:data="Meddledetaildatalist"
>
<el-table-column fixed label="序号" type="index" width="65"></el-table-column>
<el-table-column fixed prop="SERIAL_NUMBER" width="135" label="流水号">
<template slot-scope="scope">
<p @click="opengy(scope.row)" class="plsh">{{scope.row.SERIAL_NUMBER}}</p>
</template>
</el-table-column>
<el-table-column prop="GYSJ" width="120" label="干预时间">
<template slot-scope="scope">
<p class="cell">{{getActiveDataAll1(scope.row.GYSJ)}}</p>
</template>
</el-table-column>
<el-table-column prop="XM" width="55" label="姓名"></el-table-column>
<el-table-column prop="NL" width="45" label="年龄"></el-table-column>
<el-table-column prop="GYCS" width="110" label="累计次数·次"></el-table-column>
<el-table-column prop="LJFY_BZZ" width="110" label="累计费用·千元">
<template slot-scope="scope">
<p class="cell">{{getActiveNum(scope.row.LJFY_BZZ/1000)}}</p>
</template>
</el-table-column>
<el-table-column prop="LJYF_BZZ" width="110" label="累计药费·千元">
<template slot-scope="scope">
<p class="cell">{{getActiveNum(scope.row.LJYF_BZZ/1000)}}</p>
</template>
</el-table-column>
<el-table-column prop="GYCS" label="干预措施">
<template slot-scope="scope">{{returnGy(scope.row.GYCS,scope.row.GYCS_QT)}}</template>
</el-table-column>
<el-table-column prop="GYZT" label="干预结果">
<template slot-scope="scope">{{returnSt(scope.row.GYZT)}}</template>
</el-table-column>
</el-table>
</div>
<div v-show="issx" class="yctcdiv">
<h3>筛选条件</h3>
<div class="tccline">
<div class="tccleft">人群类型</div>
<div class="tccright">
<span @click="changeAll(0)" :class="para01===0?'clk':''">全部</span>
<span @click="changeAll(1)" :class="para01===1?'clk':''">上报</span>
<span @click="changeAll(2)" :class="para01===2?'clk':''">干预</span>
<span @click="changeAll(3)" :class="para01===3?'clk':''">无需处理</span>
<span @click="changeAll(4)" :class="para01===4?'clk':''">未处理</span>
</div>
</div>
<div class="tccline3">
<el-button class="ebtn" @click="okSub" size="mini" type="primary">确定</el-button>
</div>
</div>
</div>
<section v-show="gysb==2" class="tccyy">
<div class="tcymain tcymain2">
<h5>
<span @click="gysbFun(3)">×</span>上报明细
</h5>
<div class="tcycont tcycont2">
<table class="tctable">
<tr>
<td>上报单位:{{sblist.SBYY}}</td>
<td>上报时间:{{sblist.SBSJ}}</td>
</tr>
<tr>
<td>上报人:{{sblist.YSXM}}</td>
<td>上报流水号:{{sblist.SERIAL_NUMBER}}</td>
</tr>
</table>
<h1>干预情况</h1>
<table class="tctable">
<tr>
<th>签约居民</th>
<th>医保卡号</th>
<th>身份证号</th>
<th>签约家庭医生</th>
<th>定点医疗机构(二级/三级)</th>
</tr>
<tr>
<td>{{sblist.XM}}</td>
<td>{{userdesc.YBKH}}</td>
<td>{{sblist.SFZH}}</td>
<td>{{userdesc.YSXM}}</td>
<td>{{userdesc.SJJGMC}}</td>
</tr>
</table>
<h1>干预情况</h1>
<div class="gymsg">{{sblist.SJSHYS}}</div>
<h1>诊疗明细</h1>
<table class="tctable">
<tr>
<th></th>
<th>就诊时间</th>
<th>就诊机构</th>
<th>诊断</th>
<th>就诊号</th>
<th>费用明细</th>
</tr>
<tr v-for="(item,index) in sbdatalist" :key="index">
<td>{{index+1}}</td>
<td>{{timeChange(item.QYSJ)}}</td>
<td>{{item.JZJGMC}}</td>
<td></td>
<td>{{item.JZLSH}}</td>
<td>{{item.JZFY?item.JZFY:0}}元; 药费{{item.MZYF?item.MZYF:0}}元</td>
</tr>
</table>
<div class="gymsg gymsg2">
<span class="ggspan">
合计门诊就诊次数:
<font>{{nowsbnum}}</font>
<code></code>
{{sbzb01}}%
</span>
<span class="ggspan">
合计门诊费用:
<font>{{nowsbfee}}</font>
<code></code>
{{sbzb02}}%
</span>
<span class="ggspan">
合计门诊药费:
<font>{{sbtotal}}</font>
<code></code>
{{sbzb03}}%
</span>
</div>
</div>
</div>
</section>
<section v-show="gysb==1" class="tccyy">
<div class="tcymain">
<h5>
<span @click="gysbFun(3)">×</span>干预
</h5>
<div class="tcycont">
<h6>流水号:{{gylist.SERIAL_NUMBER}} 干预时间:{{gylist.GYSJ}}</h6>
<h1>居民信息</h1>
<table class="tctable">
<tr>
<th>签约居民</th>
<th>医保卡号</th>
<th>身份证号</th>
<th>签约家庭医生</th>
<th>定点医疗机构(二级/三级)</th>
</tr>
<tr>
<td>{{gylist.XM}}</td>
<td>{{userdesc.YBKH}}</td>
<td>{{gylist.SFZH}}</td>
<td>{{userdesc.YSXM}}</td>
<td>{{userdesc.SJJGMC}}</td>
</tr>
</table>
<table class="tctable">
<tr>
<th>异常项目</th>
<th>标准值/实值</th>
<th>说明</th>
</tr>
<tr>
<td>未签约</td>
<td>-</td>
<td>辖区内居民未签约</td>
</tr>
<tr>
<td>就诊次数</td>
<td>4次 / {{tcgycs}}次</td>
<td>
就诊次数超过时标
<font color="#ff2200">{{tcgybs}}</font>
</td>
</tr>
<tr>
<td>累计费用</td>
<td>5011元 / 8928.5元</td>
<td>
累计费用超过标准值 {{tcgyfy}} 元,偏离度为
<font color="#ff2200">{{tcgypld}}%</font>
</td>
</tr>
<tr>
<td>指单·偏</td>
<td>< 100% / {{tcgybl}}%</td>
<td>
总费用
<font color="#ff2200">18672.17</font>
</td>
</tr>
</table>
<h1>干预情况</h1>
<table class="tctable tctable2">
<tr>
<td>干预措施:</td>
<td>
<el-radio disabled v-model="gycs" :label="0">电话随访</el-radio>
</td>
<td>
<el-radio disabled v-model="gycs" :label="1">社区随访</el-radio>
</td>
<td>
<el-radio disabled v-model="gycs" :label="2">上门随访</el-radio>
</td>
<td>
<el-radio disabled v-model="gycs" :label="3">康复指导</el-radio>
</td>
<td>
<el-radio disabled v-model="gycs" :label="4">转诊</el-radio>
</td>
<td>
<el-radio disabled v-model="gycs" :label="5">其他</el-radio>
</td>
<td>
<input disabled :value="gylist.GYCS_QT=='null'?'':gylist.GYCS_QT" class="input01"/>
</td>
</tr>
</table>
</div>
</div>
</section>
</el-main>
</el-container>
</el-container>
</div>
</template>
<script>
import {home, getPageData} from 'api/home'
import PageHeader from "components/common/header/PageHeader";
import SideNavbar from "components/common/sideNavbar/SideNavbar";
import FileSaver from "file-saver";
import XLSX from "xlsx";
export default {
components: {
PageHeader,
SideNavbar
},
name: "Defect",
data() {
return {
gycs: 0,
token: "",
loginMsg: {},
gysbclk: 1,
tcgycs: 0,
yname: "",
tcgybs: 0,
tcgyfy: 0,
tcgypld: 0,
sbdatalist: [],
tcgybl: 0,
gysb: 0,
para01: "",
param02: "",
param03: "",
param04: "",
param05: "",
istable: 1,
isxx: 1,
isdm: false,
fyqx: 1,
nowsbnum: 0,
sbzb01: 0,
sbzb02: 0,
sbzb03: 0,
jctxt: "150",
selectTime: "2020-05",
issx: false,
loading: false,
cxsj: "",
sxname: "全部",
sxarr: ["全部", "上报", "干预", "无需处理", "未处理"],
detelist: {},
option: {
color: ["#1467FF", "#84B3FF"],
tooltip: {
trigger: "item",
// formatter: "费用次数缺陷:{b} 例,占比:{c}",
formatter: function (params) {
var res =
"<div class='ectabletitle'>疑似异常次数人数:" +
params.data.val1 +
"人,占比:" +
params.data.val2 +
"%";
res += "</div>";
return res;
}
},
series: [
{
name: "门诊费用缺陷",
type: "pie",
radius: "59%",
center: ["50%", "50%"],
label: {
show: false,
position: "center"
},
itemStyle: {
borderWidth: 2, //边框的宽度
borderColor: "rgba(48,56,90,1)" //边框的颜色
},
data: [11, 22]
}
]
},
option1: {
color: ["#1467FF", "#84B3FF"],
tooltip: {
trigger: "item",
formatter: function (params) {
var res =
"<div class='ectabletitle'>异常管理率:" + params.data + "%";
res += "</div>";
return res;
}
},
series: [
{
name: "门诊费用缺陷",
type: "pie",
radius: "59%",
center: ["50%", "50%"],
label: {
show: false,
position: "center"
},
itemStyle: {
borderWidth: 2, //边框的宽度
borderColor: "rgba(48,56,90,1)" //边框的颜色
},
data: [
{
value: 24,
name: "直接访问",
itemStyle: {
normal: {
color: "#84B3FF"
}
}
},
{
value: 310,
name: "邮件营销",
itemStyle: {
normal: {
color: "#2A71F2"
}
}
}
]
}
]
},
pieoption1: {
color: ["#1467FF", "#84B3FF"],
tooltip: {
trigger: "item",
position: [0, 0],
formatter: "{a}{b}:{c} 例"
},
series: [
{
name: "门诊",
type: "pie",
radius: [0, 38],
x: "34%",
width: "34%",
funnelAlign: "right",
label: {
normal: {show: false}
},
labelLine: {
normal: {show: false}
},
itemStyle: {
borderWidth: 2, //边框的宽度
borderColor: "rgba(48,56,90,1)" //边框的颜色
},
data: [
{value: 11, name: "费用缺陷"},
{value: 22, name: "次数缺陷"}
]
}
]
},
tableData: [],
tableData2: [],
base: [],
piedata01: [],
piedata02: [],
piedata03: [],
Reportdetaildatalist: [],
Meddledetaildatalist: [],
gysbkey: "qygl-zmjzfx-zlmx-sb-list",
sblist: [],
gylist: [],
nowsbfee: 0,
sbtotal: 0,
userdesc: []
};
},
mounted: function () {
this.token = sessionStorage.getItem("token");
this.loginMsg = JSON.parse(sessionStorage.getItem("userinfo"));
this.yname = this.loginMsg.userName;
if (this.loginMsg.roleCode == "hcms.APP_SQYZ") {
console.log("家医数据信息:");
console.log(this.loginMsg);
this.loginMsg.gpNumber = sessionStorage.getItem("ygh");
this.yname = sessionStorage.getItem("yname");
}
this.cxsj = sessionStorage.getItem("cxsj");
this.homeinti();
this.baseInfo();
this.sbInit();
this.gyInit();
const obj = setInterval(() => {
if (document.getElementById("echats1")) {
const dom = document.getElementById("echats1");
const myChart = this.$echarts.init(dom);
if (this.option && typeof this.option === "object") {
myChart.setOption(this.option, true);
}
clearInterval(obj);
}
}, 200);
const obj1 = setInterval(() => {
if (document.getElementById("echats2")) {
const dom = document.getElementById("echats2");
const myChart = this.$echarts.init(dom);
if (this.option && typeof this.option === "object") {
myChart.setOption(this.option1, true);
}
clearInterval(obj1);
}
}, 200);
const obj2 = setInterval(() => {
if (document.getElementById("echats8")) {
const dom = document.getElementById("echats8");
const myChart = this.$echarts.init(dom);
if (this.option && typeof this.option === "object") {
myChart.setOption(this.pieoption1, true);
}
clearInterval(obj2);
}
}, 200);
},
methods: {
homeinti() {
let that = this;
//列表
that.token = sessionStorage.getItem("token");
let param = {
key: "qxgl-fy-ycqd",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
orderField: "XM", //--排序字段
orderType: "desc", //--排序类型 desc=倒序/asc=正序
pageSize: 10,
pageIndex: 1,
glfs: this.para01
}
};
getPageData(that.token, param).then(res => {
console.log("测试接口数据")
console.log(res)
that.tableData = [];
if (res.data.listData.length > 0) {
this.isdm = true;
for (let item of res.data.listData) {
if (item.GLFS == this.para01) {
that.tableData = res.data.listData;
} else if (this.para01 == "") {
that.tableData = res.data.listData;
}
}
}
})
.catch(err => {
console.log(err);
});
},
userinfo(sfz) {
let that = this;
// 居民就诊分析-居民基本信息
let param = {
key: "qygl-zmjzfx-jmjbxx",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
sfzh: sfz
}
};
getPageData(that.token, param).then(res => {
// console.log("居民基本信息:");
// console.log(res);
this.userdesc = res.data[0];
});
},
baseInfo() {
let that = this;
//列表
that.token = sessionStorage.getItem("token");
let param2 = {
key: "qxgl-jbxx",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode
};
getPageData(that.token, param2)
.then(res => {
// console.log("bbbbbb");
// console.log(res);
that.base = [];
that.piedata01 = [];
that.piedata02 = [];
that.piedata03 = [];
var pieone = new Object();
var pieone1 = new Object();
if (res.data.length > 0) {
that.base = res.data[0];
}
this.param02 = that.base.FYLS;
this.param03 = getActiveNumer(that.base.FYYC_GLL);
this.param04 = that.base.FYYC_CSYC;
this.param05 = getActiveNumer(that.base.FYYC_CSZB);
//第一个图
pieone.value = res.data[0].FYLS;
pieone.name = "费用缺陷";
pieone1.value = res.data[0].ZYLS;
pieone1.name = "次数缺陷";
that.piedata01.push(pieone);
that.piedata01.push(pieone1);
that.pieoption1.series[0].data = this.piedata01;
that.$echarts
.init(document.getElementById("echats8"))
.setOption(that.pieoption1, true);
//第er个图
let obj = {value: 0, val1: 0, val2: 0};
obj.value = res.data[0].FYYC_CSYC
? getActiveNumer(res.data[0].FYYC_CSYC)
: 0;
obj.val1 = res.data[0].FYYC_CSYC
? getActiveNumer(res.data[0].FYYC_CSYC)
: 0;
obj.val2 = res.data[0].FYYC_CSZB
? getActiveNumer(res.data[0].FYYC_CSZB * 100)
: 0;
that.piedata02.push(obj);
obj = {value: 0, val1: 0, val2: 0};
obj.value = res.data[0].FYYC_CSZB
? getActiveNumer(res.data[0].FYYC_CSZB * 100)
: 0;
obj.val1 = res.data[0].FYYC_CSYC
? getActiveNumer(res.data[0].FYYC_CSYC)
: 0;
obj.val2 = res.data[0].FYYC_CSZB
? getActiveNumer(res.data[0].FYYC_CSZB * 100)
: 0;
that.piedata02.push(obj);
that.option.series[0].data = that.piedata02;
console.log("that.piedata02that.piedata02");
console.log(that.piedata02);
that.$echarts
.init(document.getElementById("echats1"))
.setOption(that.option, true);
//第3个图
that.piedata03.push(
res.data[0].ZDDJ_PL40 ? res.data[0].ZDDJ_PL40 : 0
);
that.piedata03.push(
res.data[0].ZDDJ_PL100 ? res.data[0].ZDDJ_PL100 : 0
);
that.option1.series[0].data = that.piedata03;
that.$echarts
.init(document.getElementById("echats2"))
.setOption(that.option1, true);
})
.catch(err => {
console.log(err);
});
},
sbInit() {
//上报列表
let that = this;
let param = {
key: "qygl-zmjzfx-zlmx-sb-list",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
orderField: "SBSJ", //--排序字段
orderType: "desc", //--排序类型 desc=倒序/asc=正序
sfzh: "",
pageSize: 10,
pageIndex: 1,
sb_type: 0 //0=门诊/1=住院
}
};
getPageData(that.token, param).then(res => {
// console.log("打印上报明细列表:");
// console.log(res);
if (res.code == 1 && res.data.listData.length > 0) {
res.data.listData.forEach((item, index) => {
res.data.listData[index].MZFY = getActiveNum(item.MZFY / 1000);
this.Reportdetaildatalist = res.data.listData;
});
}
});
},
gyInit() {
//干预列表
let that = this;
let param = {
key: "qygl-zmjzfx-zlmx-gy-list",
tjsj: this.cxsj,
gpgh: this.loginMsg.gpNumber,
yljgdm: this.loginMsg.orgCode,
parameter: {
orderField: "GYSJ", //--排序字段
orderType: "desc", //--排序类型 desc=倒序/asc=正序
sfzh: "", //--身份证号码
pageSize: 10,
pageIndex: 1,
gy_type: 0 //--明细类型,0=门诊费用/1=门诊次数/2=住院费用
}
};
getPageData(that.token, param).then(res => {
// console.log("打印干预明细列表:");
// console.log(res);
if (res.code == 1 && res.data.listData.length > 0) {
res.data.listData.forEach((item, index) => {
res.data.listData[index].MZFY = getActiveNum(item.MZFY / 1000);
this.Meddledetaildatalist = res.data.listData;
});
}
});
},
tabChange(i) {
this.istable = i;
},
timeChange(param) {
return famartTime(param);
},
fyqxChange(i) {
let that = this;
this.fyqx = i;
if (i == 1) {
this.param02 = that.base.FYLS;
this.param03 = getActiveNumer(that.base.FYYC_GLL);
this.param04 = that.base.FYYC_CSYC;
this.param05 = getActiveNumer(that.base.FYYC_CSZB);
this.$router.push({
name: "Defect",
query: {
name: this.name
}
});
} else if (i == 2) {
this.param02 = that.base.CSLS;
this.param03 = getActiveNumer(that.base.CSYC_GLL);
this.param04 = that.base.CSYC_FYYC;
this.param05 = getActiveNumer(that.base.CSYC_FYZB);
this.$router.push({
name: "count",
query: {
name: this.name
}
});
} else if (i == 3) {
this.$router.push({
name: "zDefect",
query: {
name: this.name
}
});
}
},
tableRowClassName({row, rowIndex}) {
if (rowIndex % 2 == 1) {
return "warning-row";
} else {
return "success-row";
}
},
toMember(param) {
sessionStorage.setItem("backUrl", "Defect");
this.$router.push("/Member?sfz=" + param);
},
headerStyle() {
return "background:rgba(54,67,111,1); border:0; margin:0; padding:0; line-height:35px; color:#fff; font-size:12px; text-align:center;font-weight:500;height:35px";
},
cellStyle() {
return "background:none;color:#fff;border:0; margin:0; padding:0; line-height:50px; color:#AAB1D2; font-size:12px; text-align:center;font-weight:500";
},
headerStyle2() {
return "background:rgba(10,10,10,0.9); border:0; margin:0; padding:0; line-height:35px; color:#8b8c91; font-size:12px; text-align:center;font-weight:500;height:35px";
},
cellStyle2() {
return "background:rgba(10,10,10,0.9);color:#585f6c;border:0; border-bottom:1px dotted #262b36; margin:0; padding:0; line-height:50px; color:#AAB1D2; font-size:12px; text-align:center;font-weight:500";
},
gysbChange(param) {
this.gysbclk = param;
},
dataSearch(value) {
console.log(famartTime2(value));
let val = famartTime2(value);
this.cxsj = val;
this.homeinti();
this.baseInfo();
},
okSub() {
this.issx = false;
this.homeinti();
},
searchFn() {
this.issx = !this.issx;
},
gysbFun(param) {
this.gysb = param;
},
opensb(param) {
//打开上报
let that = this;
this.sblist = param;
this.gysb = 2;
this.userinfo(param.SFZH);
// console.log("打开上报:");
// console.log(param);
let param5 = {
key: "zd-mx",
tjsj: this.cxsj,
parameter: {
mxType: "1",
lsh: param.SERIAL_NUMBER
}
};
that.sbdatalist = [];
this.nowsbnum = 0;
getPageData(that.token, param5).then(res => {
// console.log("返回上报列表:");
// console.log(res);
res.data.forEach((item, index) => {
item.JZFY = item.JZFY ? item.JZFY : 0;
item.JZYF = item.JZYF ? item.JZYF : 0;
this.nowsbfee += parseInt(item.JZFY);
this.sbtotal += parseInt(item.JZYF);
that.sbdatalist.push(item);
this.nowsbnum++;
});
this.sbzb01 = ((this.nowsbnum / 24) * 100).toFixed(2);
this.sbzb02 = ((this.nowsbfee / 4564) * 100).toFixed(2);
this.sbzb03 = ((this.sbtotal / 4553) * 100).toFixed(2);
});
},
opengy(param) {
//打开干预
this.gysb = 1;
this.gylist = param;
this.userinfo(param.SFZH);
// console.log("打开干预:");
// console.log(param);
this.gycs = param.GYCS;
this.tcgybl = param.GYCS;
this.tcgybs = param.GYCS;
this.tcgycs = param.JZCS_SZ;
this.tcgyfy = param.LJFY_SZ;
this.tcgypld = param.GYCS;
},
changeAll(num) {
this.para01 = num;
this.sxname = this.sxarr[num];
},
getActiveNum(param) {
return getActiveNumer(param);
},
goback() {
//this.$router.go(-1);
if (this.loginMsg.roleCode == "hcms.APP_SQYZ") {
this.$router.push("/" + sessionStorage.getItem("ybackUrl"));
} else {
this.$router.push("/Signing");
}
},
hideLoading() {
this.loading = false;
},
iconshow(param) {
return returnIco2(param);
},
download() {
if (this.istable == 1) {
let wb = XLSX.utils.table_to_book(
document.querySelector("#rebateSetTable")
);
let wbout = XLSX.write(wb, {
bookType: "xlsx",
bookSST: true,
type: "array"
});
try {
FileSaver.saveAs(
new Blob([wbout], {type: "application/octet-stream"}),
"费用缺陷异常清单.xlsx"
);
} catch (e) {
if (typeof console !== "undefined") console.log(e, wbout);
}
return wbout;
} else {
if (this.gysbclk == 1) {
let wb = XLSX.utils.table_to_book(
document.querySelector("#rebateSetTable1")
);
let wbout = XLSX.write(wb, {
bookType: "xlsx",
bookSST: true,
type: "array"
});
try {
FileSaver.saveAs(
new Blob([wbout], {type: "application/octet-stream"}),
"费用上报统计.xlsx"
);
} catch (e) {
if (typeof console !== "undefined") console.log(e, wbout);
}
return wbout;
} else {
let wb = XLSX.utils.table_to_book(
document.querySelector("#rebateSetTable2")
);
let wbout = XLSX.write(wb, {
bookType: "xlsx",
bookSST: true,
type: "array"
});
try {
FileSaver.saveAs(
new Blob([wbout], {type: "application/octet-stream"}),
"费用干预统计.xlsx"
);
} catch (e) {
if (typeof console !== "undefined") console.log(e, wbout);
}
return wbout;
}
}
},
goExit() {
this.$router.push("/Home");
},
showLoading() {
this.loading = true;
},
returnSt(idx) {
// 0=未干预/1=已干预/2=审核通过/3=未通过审核/4=无需处理
let sta = ["未干预", "已干预", "审核通过", "未通过审核", "无需处理"];
return sta[idx];
},
returnGy(idx, other) {
let sta = ["电话随访", "社区随访", "上门随访", "康复指导", "转诊"];
if (idx < 5) {
return sta[idx];
} else {
return other;
}
},
//缺陷下门费用、门次数、住费用、未签约、诊断
goOther(i) {
// if (i == 1) {
// this.$router.push({
// name: "count",
// query: {
// name: this.name
// }
// });
// } else
if (i == 2) {
this.$router.push({
name: "count"
});
} else if (i == 3) {
this.$router.push({
name: "zDefect"
});
} else if (i == 4) {
this.$router.push({
name: "Nosign"
});
} else if (i == 5) {
this.$router.push({
name: "Diagnose"
});
}
},
getActiveDataAll1(data) {
return getActiveData1(data);
},
getActiveFkyj1(data) {
return getActiveFkyj(data);
},
TwoCount(num) {
return TwoCount(num);
}
}
};
</script>
<style scoped>
.ecleft {
float: left;
}
#echats1 {
width: 150px;
height: 150px;
position: absolute;
right: 0;
top: 10px;
}
#echats2 {
width: 150px;
height: 150px;
position: absolute;
right: 0;
top: 10px;
}
#echats8 {
width: 100%;
height: 110px;
}
/deep/ el-table {
background: none;
}
/deep/ .el-table__expanded-cell {
background: none;
}
/deep/ .el-table th,
.el-table tr {
background: none;
}
/deep/ .el-table .warning-row {
background: rgba(48, 56, 90, 1);
}
/deep/ .el-table .success-row {
background: #2a3557;
}
/deep/ .el-table th > .cell {
padding: 0;
}
/deep/ .el-table .cell {
padding: 0;
line-height: 12px;
}
.el-table::before {
background: none;
}
/deep/ .el-table,
.el-table__expanded-cell {
background: none;
}
/deep/ .el-table__fixed::before {
background-color: #293054;
}
.input01 {
width: 80px;
border: 0;
color: #f1f1f1;
border-bottom: 1px solid #979797;
background: none;
}
.elbtndiv {
height: 50px;
clear: both;
text-align: right;
}
.sbbtn {
background: rgba(0, 151, 254, 1);
width: 65px;
height: 32px;
border: 0;
border-radius: 4px;
}
.tccline {
clear: both;
overflow: hidden;
}
.tccleft {
float: left;
line-height: 35px;
padding-top: 1px;
width: 55px;
color: rgba(166, 174, 214, 1);
font-size: 12px;
text-align: left;
}
.tccright {
float: left;
line-height: 35px;
width: 340px;
padding-top: 6px;
}
.tccright span {
display: inline-block;
margin-left: 10px;
margin-bottom: 10px;
float: left;
width: 55px;
height: 24px;
line-height: 24px;
background: rgba(51, 62, 95, 1);
color: #ffffff;
border-radius: 4px;
border: 1px solid rgba(84, 97, 139, 1);
}
.tccright span.clk {
background: rgba(33, 76, 126, 1);
color: #42ccff;
}
.tccline3 {
text-align: right;
}
.tccline3 /deep/ .ebtn {
width: 80px;
height: 30px;
}
.plsh {
color: #2680ff;
text-decoration: underline;
}
.el-date-editor {
width: 61px;
position: absolute;
right: 5px;
top: 3px;
}
/deep/ .el-date-editor .el-date-editor--month input {
width: 0px;
border: 0;
padding-right: 61px;
padding-left: 0px;
}
/deep/ .el-date-editor .el-input__inner {
background: none !important;
}
/deep/ .el-date-editor .el-input__prefix {
display: none;
}
/deep/ .el-date-editor .el-input__suffix {
display: none;
}
/deep/ .el-table__row {
height: 31px;
}
.el-tag {
background: none;
border: 0;
}
/deep/ .el-badge__content {
border: 0;
font-size: 12px;
}
.yctcdiv {
height: 135px;
z-index: 20;
}
.defectM {
position: absolute;
bottom: 10px;
right: 10px;
width: 390px;
height: 142px;
background: rgba(10, 10, 10, 0.9);
}
.tctable2 {
}
.tctable2 td {
padding: 0 6px;
color: #d6daec;
}
/deep/ .el-radio__label {
color: #d6daec;
font-size: 12px;
padding-left: 5px;
}
/deep/
.tctable2
.el-radio__input.is-disabled.is-checked
.el-radio__inner::after {
background-color: #606266;
width: 8px;
height: 8px;
}
.tcymain2 {
height: 500px;
}
.tcycont2 {
height: 455px;
}
</style>
<template>
<div>
<div class="div-model fl01">
<div class="title">累计签约人均费用</div>
<div class="content">
<div class="qycontent">
<div class="qycontentline"><i class="i01"></i><span class="">实际值</span>|<span>同期</span></div>
<div class="qytexttop">
<el-tooltip content="签约居民年总费用 / 签约居民数" placement="bottom-start">
<span>{{nullreturn(para01)}}</span>
</el-tooltip>
<span class="span02">/</span>
<span class="span01">{{nullreturn(para02)}}</span>
<code class="tong"></code>
<span class="span03">{{nullreturn(para03)=='-'?'-':Math.abs(nullreturn(para03))}}%</span>
<i :class="para03<0?'el-icon-my-down':'el-icon-my-up'"></i>
</div>
<div class="qycontentline"><i class="i02"></i><span class="">签约数·人</span>|<span>同期</span></div>
<div class="qytextdown">
<span class="spanfont"></span>
<div class="spandata">
<span>{{nullreturn(para04)}}</span>
<span class="span02">/</span>
<span class="span01">{{nullreturn(para05)}}</span>
</div>
</div>
<div class="qytextdown">
<span class="spanfont">住院</span>
<div class="spandata">
<span>{{nullreturn(para06)}}</span>
<span class="span02">/</span>
<span class="span01">{{nullreturn(para07)}}</span>
</div>
</div>
</div>
</div>
</div>
<div class="div-model fl002">
<div class="title">其中累计签约人均门诊费用
<img @click="question()" width="16" style="vertical-align: middle;" height="16"
src="~assets/img/common/icon-mainwen.png">
</div>
<div class="content">
<div class="qycontent">
<div class="qytexttop">
<el-tooltip content="签约居民年门诊总费用 / 签约居民数" placement="bottom-start">
<span>{{nullreturn(para08)}}</span>
</el-tooltip>
<span class="span02">/</span>
<span class="span01">{{nullreturn(para09)}}</span>
<code class="tong"></code>
<span class="span03">{{nullreturn(para10)=='-'?'-':Math.abs(nullreturn(para10))}}%</span>
<i :class="para10<0?'el-icon-my-down':'el-icon-my-up'"></i>
<span class="span04"></span>
<code class="pian"></code>
<span class="span03">{{nullreturn(para11)=='-'?'-':Math.abs(nullreturn(para11))}}%</span>
<i :class="para11<0?'el-icon-my-down':'el-icon-my-up'"></i>
</div>
<div class="qytextmodel">
<span class="spanfont">累计就诊·千人</span>
<div class="spandata">
<span>{{nullreturn(para12 / 1000)}}</span>
<span class="span02">/</span>
<span class="span03">{{nullreturn(para13 / 1000)}}</span>
<span class="span01"></span>
<code class="tong"></code>
<span class="span01"></span>
<span class="span03">{{nullreturn(para14)=='-'?'-':Math.abs(nullreturn(para14))}}%</span>
<i :class="para14<0?'el-icon-my-down':'el-icon-my-up'"></i>
</div>
</div>
<div class="qytextmodel">
<span class="spanfont">累计就诊·千次</span>
<div class="spandata">
<span>{{nullreturn(para15 / 1000)}}</span>
<span class="span02">/</span>
<span class="span03">{{nullreturn(para16 / 1000)}}</span>
<span class="span01"></span>
<code class="tong"></code>
<span class="span01"></span>
<span class="span03">{{nullreturn(para17)=='-'?'-':Math.abs(nullreturn(para17))}}%</span>
<i :class="para17<0?'el-icon-my-down':'el-icon-my-up'"></i>
</div>
</div>
<div class="qytextmodel">
<span class="spanfont spanline" @click="showBox(1)">累计人均就诊·次</span>
<div class="spandata">
<span>{{nullreturn(para18)}}</span>
<span class="span02">/</span>
<span class="span03">{{nullreturn(para19)}}</span>
<span class="span01"></span>
<code class="tong"></code>
<span class="span01"></span>
<span class="span03">{{nullreturn(para20)=='-'?'-':Math.abs(nullreturn(para20))}}%</span>
<i :class="para20<0?'el-icon-my-down':'el-icon-my-up'"></i>
<span class="span01"></span>
<code class="pian"></code>
<span class="span01"></span>
<span class="span03">{{nullreturn(para21)=='-'?'-':Math.abs(nullreturn(para21))}}%</span>
<i :class="para21<0?'el-icon-my-down':'el-icon-my-up'"></i>
</div>
</div>
</div>
</div>
</div>
<div class="div-model fr001">
<div class="title">其中累计签约人均住院费用</div>
<div class="content">
<div class="qycontent">
<div class="qytexttop">
<el-tooltip content="签约居民年住院总费用 / 签约居民数" placement="bottom-start">
<span>{{nullreturn(para22)}}</span>
</el-tooltip>
<span class="span02">/</span>
<span class="span01">{{nullreturn(para23)}}</span>
<code class="tong"></code>
<span class="span03">{{nullreturn(para24)=='-'?'-':Math.abs(nullreturn(para24))}}%</span>
<i :class="para24<0?'el-icon-my-down':'el-icon-my-up'"></i>
</div>
<div class="qytextright">
<span class="spanfont">社区床日·元(实/同)</span>
<div class="spandata">
<span>{{nullreturn(para25)}}</span>
<span class="span02">/</span>
<span class="span03">{{nullreturn(para26)}}</span>
<span class="span01"></span>
<code class="tong"></code>
<span class="span01"></span>
<span class="span03">{{nullreturn(para27)=='-'?'-':Math.abs(nullreturn(para27))}}%</span>
<i :class="para27<0?'el-icon-my-down':'el-icon-my-up'"></i>
</div>
</div>
<div class="qytextright">
<span class="spanfont spanline" @click="showBox(2)">二级指标·万(实/标)</span>
<div class="spandata">
<span>{{nullreturn(para28 / 10000)}}</span>
<span class="span02">/</span>
<span class="span03">{{nullreturn(para29 / 10000)}}</span>
<span class="span01"></span>
<code class="tong"></code>
<span class="span01"></span>
<span class="span03">{{nullreturn(para30)=='-'?"-":Math.abs(nullreturn(para30))}}%</span>
<i :class="para30<0?'el-icon-my-down':'el-icon-my-up'"></i>
</div>
</div>
<div class="qytextright">
<span class="spanfont spanline" @click="showBox(3)">三级指标·万(实/标)</span>
<div class="spandata">
<span>{{nullreturn(para31 / 10000)}}</span>
<span class="span02">/</span>
<span class="span03">{{nullreturn(para32 / 10000)}}</span>
<span class="span01"></span>
<code class="tong"></code>
<span class="span01"></span>
<span class="span03">{{nullreturn(para33)=='-'?"-":Math.abs(nullreturn(para33))}}%</span>
<i :class="para33<0?'el-icon-my-down':'el-icon-my-up'"></i>
</div>
</div>
</div>
</div>
</div>
<!-----------底部内容---------->
<div class="div-model-b">
<div class="title">门诊</div>
<div class="div-model-echarts div-model-echarts2">
<div class="etitle1 spanline" @click="AnalyFn()">累计费用分析</div>
<div class="ecp01" @click="changeTabName(1)" :class="isgy==1?'clk':''">社区</div>
<div class="ecp02" @click="changeTabName(2)" :class="isgy==2?'clk':''">二级</div>
<div class="ecp03" @click="changeTabName(3)" :class="isgy==3?'clk':''">三级</div>
<div class="etitle2">累计人均就诊分析</div>
<div class="etotal01">合计</div>
<div class="etotal02 spanline" @click="AnalyFn()">组合内</div>
<div class="etotal03 spanline" @click="AnalyFn()">签约社区</div>
<el-table :header-cell-style="headerStyle2" :fit="true" :cell-style="cellStyle2" height="125"
:row-class-name="tableRowClassName2" :data="outpatientuplist">
<el-table-column prop="name" label="就诊·人/同·%">
<template slot-scope="scope">
{{scope.row.JZRS}}/{{scope.row.JZRS_TBL=='-'?"-":Math.abs(nullreturn(scope.row.JZRS_TBL))}}
<i :class="scope.row.JZRS_TBL<0?'el-icon-my-down':'el-icon-my-up'"></i>
</template>
</el-table-column>
<el-table-column prop="province" label="人均·次/同·%">
<template slot-scope="scope">
{{scope.row.JZCS}}/{{scope.row.JZCS_TBL=='-'?"-":Math.abs(nullreturn(scope.row.JZCS_TBL))}}
<i :class="scope.row.JZCS_TBL<0?'el-icon-my-down':'el-icon-my-up'"></i>
</template>
</el-table-column>
<el-table-column prop="pepole" label="人均·元/同·%">
<template slot-scope="scope">
{{scope.row.JZFY}}/{{scope.row.JZFY_TBL=='-'?"-":Math.abs(nullreturn(scope.row.JZFY_TBL))}}
<i :class="scope.row.JZFY_TBL<0?'el-icon-my-down':'el-icon-my-up'"></i>
</template>
</el-table-column>
<el-table-column prop="city" label="人均药·元/同·%">
<template slot-scope="scope">
{{scope.row.JZYF}}/{{scope.row.JZYF_TBL=='-'?"-":Math.abs(nullreturn(scope.row.JZYF_TBL))}}
<i :class="scope.row.JZYF_TBL<0?'el-icon-my-down':'el-icon-my-up'"></i>
</template>
</el-table-column>
</el-table>
<el-table :header-cell-style="headerStyle2" :fit="true" :cell-style="cellStyle2" height="125"
:row-class-name="tableRowClassName2" :data="outpatientdownlist">
<el-table-column prop="name" label="目标/时值·%">
<template slot-scope="scope">
{{scope.row.MBL}}/{{scope.row.SJL}}
</template>
</el-table-column>
<el-table-column prop="province" label="目标/去年·次">
<template slot-scope="scope">
{{scope.row.MBZ}}/{{scope.row.QNZ}}
</template>
</el-table-column>
<el-table-column prop="pepole" label="时值/时标·次">
<template slot-scope="scope">
{{scope.row.ZXZ}}/{{scope.row.BZZ}}
</template>
</el-table-column>
<el-table-column prop="city" label="时值同比·%">
<template slot-scope="scope">
{{scope.row.TBZ=='-'?"-":Math.abs(nullreturn(scope.row.TBZ))}}
<i :class="scope.row.TBZ<0?'el-icon-my-down':'el-icon-my-up'"></i>
</template>
</el-table-column>
</el-table>
</div>
<div class="div-model-table div-model-table2">
<div class="tabletitle">
<span @click="changeAll(1)" :class="isall==1?'clk':''">{{TableName}}</span>
<span @click="changeAll(2)" :class="isall==2?'clk':''">缺陷</span>
</div>
<el-table v-show="isall==1" :header-cell-style="headerStyle" :fit="true" :cell-style="cellStyle"
height="230"
:row-class-name="tableRowClassName" :data="hospotallist">
<el-table-column prop="name" width="45" label="序列">
<template slot-scope="scope">{{scope.$index + 1}}</template>
</el-table-column>
<el-table-column prop="province" :show-overflow-tooltip="true" min-width="64">
<template slot="header" slot-scope="scope" class="Movearrow">
<div class="spanline spanleft" @click="showMzHospital()">医院</div>
</template>
<template slot-scope="scope">
<span class="spanline spanleft" @click="AnalyFn()">{{scope.row.JZJGJC}}</span>
</template>
</el-table-column>
<el-table-column prop="pepole" width="100" label="总费用·万/同·%">
<template slot-scope="scope">
<span class="ycqd_lf testright">
{{scope.row.MZFY}}/{{scope.row.MZFY_TBL=='-'?"-":Math.abs(nullreturn(scope.row.MZFY_TBL))}}
</span>
<span class="sp13"><i :class="scope.row.MZFY_TBL<0?'el-icon-my-down':'el-icon-my-up'"></i></span>
</template>
</el-table-column>
<el-table-column prop="city" width="74" label="总费用占比·%">
<template slot-scope="scope">{{scope.row.MZFY_ZB}}</template>
</el-table-column>
<el-table-column prop="address" width="100" label="药费·万/同·%">
<template slot-scope="scope">
<span class="ycqd_lf testright">
{{scope.row.MZYF}}/{{scope.row.MZYF_TBL=='-'?"-":Math.abs(nullreturn(scope.row.MZYF_TBL))}}
</span>
<span class="sp13"><i :class="scope.row.MZYF_TBL<0?'el-icon-my-down':'el-icon-my-up'"></i></span>
</template>
</el-table-column>
</el-table>
<el-table v-show="isall==2" :header-cell-style="headerStyle" :fit="true" :cell-style="cellStyle"
height="230"
:row-class-name="tableRowClassName" :data="defectlist">
<el-table-column prop="name" width="45" label="序列">
<template slot-scope="scope">{{scope.$index + 1}}</template>
</el-table-column>
<el-table-column prop="XM" width="90" label="姓名" class="spanline">
<template slot-scope="scope">
<span class="spanline" @click="toMember(scope.row.SFZH)">{{scope.row.XM}}</span>
</template>
</el-table-column>
<el-table-column prop="NL" label="年龄"></el-table-column>
<el-table-column prop="MZFY" :render-header="renderHeader"></el-table-column>
<el-table-column prop="JZCS" label="就诊·次"></el-table-column>
</el-table>
</div>
</div>
<!-- 累计人均就诊·次弹出层 -->
<div class="outService1" v-show="showouser1">
<p class="pservice1">累计人均门诊</p>
<div class="rightbox rightbox2">
<div class="rbiteml rbitem2">
<div class="rbitemlinner">就诊·次</div>
<div class="rbitemlinner">累计费用·元</div>
<div class="rbitemlinner">累计药费·元</div>
</div>
<div class="rbitemr">
<div class="rrline">
<div class="rrmodel">
<p>社区</p>
<p>实值/占·%同·%</p>
</div>
<div class="rrmodel">
<p>二级</p>
<p>实值/占·%同·%</p>
</div>
<div class="rrmodel">
<p>三级</p>
<p>实值/占·%同·%</p>
</div>
</div>
<div v-for="item in cumpercapvisdatalist" :key="item.index" class="rrmodelbot">
<p>{{item.JZCS}} / {{item.JZCS_ZB}} / {{item.JZCS_TBL=='-'?"-":Math.abs(nullreturn(item.JZCS_TBL))}}
<i :class="item.JZCS_TBL<0?'el-icon-my-down':'el-icon-my-up'"></i>
</p>
<p>{{item.JZFY}} / {{item.JZFY_ZB}} / {{item.JZFY_TBL=='-'?"-":Math.abs(nullreturn(item.JZFY_TBL))}}
<i :class="item.JZFY_TBL<0?'el-icon-my-down':'el-icon-my-up'"></i>
</p>
<p>{{item.JZYF}} / {{item.JZYF_ZB}} / {{item.JZYF_TBL=='-'?"-":Math.abs(nullreturn(item.JZYF_TBL))}}
<i :class="item.JZYF_TBL<0?'el-icon-my-down':'el-icon-my-up'"></i>
</p>
</div>
</div>
</div>
<div style="clear: both;"></div>
<div class="outServicewords">占比 = 当前医院级别累计人均门诊费用(次数)/累计人均门诊总费用(次数)*100%</div>
</div>
<!-- 门诊费用二级指标弹出层 -->
<div class="outService2" v-show="showouser2">
<p class="pservice2">二级指数单价Top4</p>
<el-table :header-cell-style="headerStyle3" :fit="true" :cell-style="cellStyle2" height="125"
:row-class-name="tableRowClassName"
:data="twoleveldatalist">
<el-table-column fixed label="序号" width="45">
<template slot-scope="scope">
<span>{{scope.$index + 1}} </span>
</template>
</el-table-column>
<el-table-column prop="XM" label="姓名" width="70"></el-table-column>
<el-table-column prop="JZJGMC" label="住院机构" width="120"></el-table-column>
<el-table-column prop="ZSDJ_PLD" label="单·/偏·%">
<template slot-scope="scope">
{{scope.row.ZSDJ_PLD=='-'?"-":Math.abs(nullreturn(scope.row.ZSDJ_PLD))}}
<i :class="scope.row.ZSDJ_PLD<0?'el-icon-my-down':'el-icon-my-up'"></i>
</template>
</el-table-column>
<el-table-column prop="YPZSDJ_PLD" label="药·/偏·%">
<template slot-scope="scope">
{{scope.row.YPZSDJ_PLD=='-'?"-":Math.abs(nullreturn(scope.row.YPZSDJ_PLD))}}
<i :class="scope.row.YPZSDJ_PLD<0?'el-icon-my-down':'el-icon-my-up'"></i>
</template>
</el-table-column>
<el-table-column prop="HCZSDJ_PLD" label="耗·/偏·%">
<template slot-scope="scope">
{{scope.row.HCZSDJ_PLD=='-'?"-":Math.abs(nullreturn(scope.row.HCZSDJ_PLD))}}
<i :class="scope.row.HCZSDJ_PLD<0?'el-icon-my-down':'el-icon-my-up'"></i>
</template>
</el-table-column>
</el-table>
</div>
<div v-show="isyy" @click="yyshow" class="yydiv"></div>
<!-- 门诊费用三级指标弹出层 -->
<div class="outService3" v-show="showouser3">
<p class="pservice3">三级指数单价Top4</p>
<el-table :header-cell-style="headerStyle3" :fit="true" :cell-style="cellStyle2" height="125"
:row-class-name="tableRowClassName"
:data="threeleveldatalist">
<el-table-column fixed label="序号" width="60">
<template slot-scope="scope">
<span>{{scope.$index + 1}} </span>
</template>
</el-table-column>
<el-table-column prop="XM" label="姓名" width="70"></el-table-column>
<el-table-column prop="JZJGMC" label="住院机构" width="120"></el-table-column>
<el-table-column prop="ZSDJ_PLD" label="单·/偏·%">
<template slot-scope="scope">
{{scope.row.ZSDJ_PLD=='-'?"-":Math.abs(nullreturn(scope.row.ZSDJ_PLD))}}
<i :class="scope.row.ZSDJ_PLD<0?'el-icon-my-down':'el-icon-my-up'"></i>
</template>
</el-table-column>
<el-table-column prop="YPZSDJ_PLD" label="药·/偏·%">
<template slot-scope="scope">
{{scope.row.ZSDJ_PLD=='-'?"-":Math.abs(nullreturn(scope.row.ZSDJ_PLD))}}
<i :class="scope.row.YPZSDJ_PLD<0?'el-icon-my-down':'el-icon-my-up'"></i>
</template>
</el-table-column>
<el-table-column prop="HCZSDJ_PLD" label="耗·/偏·%">
<template slot-scope="scope">
{{scope.row.ZSDJ_PLD=='-'?"-":Math.abs(nullreturn(scope.row.ZSDJ_PLD))}}
<i :class="scope.row.HCZSDJ_PLD<0?'el-icon-my-down':'el-icon-my-up'"></i>
</template>
</el-table-column>
</el-table>
</div>
<!-- 点击问号弹出层 -->
<div class="explainbox" v-if="explain">
<div class="explainboxtitle"><span>累计就诊人均门诊费用标准</span></div>
<div class="explainboxtcontent">
<div class="explainboxtcontentleft">
<i class="icls"></i>说明
</div>
<div class="explainboxtcontentright">
<span>全年人均累计就诊费用为4839元,4月份 时标为 1613元,计算公式=(4839/12)*4</span>
</div>
</div>
</div>
</div>
</template>
<script>
import {home, getPageData} from 'api/home'
import PageHeader from "components/common/header/PageHeader";
import SideNavbar from "components/common/sideNavbar/SideNavbar";
export default {
components: {
PageHeader,
SideNavbar
},
name: 'gpExpenseHome',
data() {
return {
token: '',
loginMsg: {},
para01: 1,
para02: 2,
yname: '',
yzback: false,
para03: 3,
para04: 4,
para05: 5,
para06: 6,
para07: 7,
para08: 8,
para09: 9,
para10: 10,
para11: 11,
para12: 12,
para13: 13,
para14: 14,
para15: 15,
para16: 16,
para17: 17,
para18: 18,
para19: 19,
para20: 20,
para21: 21,
para22: 22,
para23: 23,
para24: 24,
para25: 25,
para26: 26,
para27: 27,
para28: 28,
para29: 29,
para30: 30,
para31: 31,
para32: 32,
para33: 33,
selectTime: '2020-05',
jctxt: '150',
isgy: 1,
loginID: '',
isall: 1,
loading: false,
isyy: false,
TableName: '社区', // 用于切换右侧的表头名字
explain: false, // 用于显示或隐藏问号弹出层
showouser1: false, // 用于显示或隐藏累计人均就诊·次弹出层
showouser2: false, // 用于显示或隐藏二级指标弹出层
showouser3: false, // 用于显示或隐藏三级指标弹出层
detelist: {},
hzpoints: [],
cxsj: "",
numbers: "01",
topvaluelist: [{}],
hospotallist: [],
defectlist: [],
outpatientuplist: [],
outpatientdownlist: [],
twoleveldatalist: [],
threeleveldatalist: [],
cumpercapvisdatalist: [],
option: {
tooltip: {
position: [50, 50],
padding: 10,
trigger: 'axis',
formatter: function (params) {
var res = "<div class='ectabletitle'>";
res += "60以上(实值/同期)</div>";
res += "<ul class='ectable01'>";
res += "<li class='li01'>管辖数:<li>";
res += "<li class='li03'>2 / 3人</li>";
res += "<li><span class='tag-circle'>同</span></li>";
res += "<li>2 <span class='el-icon-bottom'>&nbsp;</span></li>";
res += "</ul>";
res += "<ul class='ectable01'>";
res += "<li class='li01'>签约数:<li>";
res += "<li class='li03'>2 / 3人</li>";
res += "<li><span class='tag-circle'>同</span></li>";
res += "<li>54 <span class='el-icon-bottom'>&nbsp;</span></li>";
res += "</ul>";
res += "<ul class='ectable01'>";
res += "<li class='li01'>签约率:</li>";
res += "<li class='li03'>43 %/53 %</li>";
res += "<li><span class='tag-circle'>同</span></li>";
res += "<li>12 <span class='el-icon-bottom'>&nbsp;</span></li>";
res += "</ul>";
res += "<ul class='ectable01'>";
res += "<li class='li02'>签约率偏离度:</li>";
res +=
"<li class='li03'>43% <span class='el-icon-bottom'>&nbsp;</span> / 65% <span class='el-icon-bottom'>&nbsp;</span></li>";
res += "<li></li>";
res += "<li></li>";
res += "</ul>";
return res
}
},
legend: {
textStyle: {
color: '#8393A9',
fontSize: 10
},
left: 25,
top: '5',
itemHeight: 10,
itemWidth: 10,
itemGap: 5,
data: ['已签约', '管辖数', '重点签约人数', '重点管辖数', '签约率偏离度', '重点签约率偏离度'],
align: 'left',
selectedMode: false
},
grid: {
top: 80,
bottom: 45,
left: 50
},
xAxis: [{
type: 'category',
data: ['静安', '黄埔', '闵行', '宝山', '松江', '青浦', '浦东', '奉贤'],
axisLine: {
lineStyle: {
color: '#8393A9',
type: 'solid'
}
},
axisLabel: {
interval: 0,
rotate: 60,
textStyle: {
fontSize: 10,
color: function (value, index) {
return '#8393A9';
}
}
},
splitLine: {
show: false,
onZero: false
},
axisTick: {
show: false
},
}],
yAxis: [{
type: 'value',
name: '千',
min: 0,
axisLabel: {
textStyle: {
color: '#8393A9',
type: 'solid'
},
},
axisLine: {
show: true,
lineStyle: {
color: '#8393A9',
type: 'solid'
}
},
splitLine: {
show: false
},
axisTick: {
show: true
}
},
{
type: 'value',
name: '%',
max: 100,
min: 0,
splitNumber: 5,
axisLabel: {
textStyle: {
color: function (value, index) {
return '#747d8d';
},
type: 'solid'
}
},
axisLine: {
show: true,
lineStyle: {
color: '#8393A9',
type: 'solid'
}
},
splitLine: {
show: false
},
axisTick: {
show: true
},
}
],
series: [{
name: '已签约',
type: 'bar',
barWidth: null,
itemStyle: {
normal: {
color: '#2680ff'
}
},
data: [12, 23, 4, 5, 6, 21, 5, 2],
},
{
name: '管辖数',
type: 'bar',
stack: "1",
barWidth: null,
itemStyle: {
normal: {
color: '#2e4f8b'
}
},
data: [12, 3, 4, 5, 6, 21, 5, 2]
},
{
name: '重点签约人数',
type: 'bar',
barWidth: null,
itemStyle: {
normal: {
color: '#36f2d8'
}
},
data: [12, 3, 4, 5, 6, 12, 5, 2]
},
{
name: '重点管辖数',
type: 'bar',
smooth: true,
yAxisIndex: 1,
symbol: 'circle',
symbolSize: 6,
itemStyle: {
normal: {
color: '#336b84'
}
},
z: 11,
data: [12, 3, 4, 5, 6, 11, 5, 12],
},
{
name: '签约率偏离度',
type: 'line',
smooth: true,
yAxisIndex: 1,
symbol: 'circle',
symbolSize: 6,
z: 11,
itemStyle: {
normal: {
color: '#fda739'
}
},
data: [12, 3, 14, 5, 6, 12, 5, 21],
},
{
name: '重点签约率偏离度',
type: 'line',
smooth: true,
yAxisIndex: 1,
symbol: 'circle',
symbolSize: 6,
z: 11,
itemStyle: {
normal: {
color: '#f8d065'
}
},
data: [12, 3, 4, 5, 6, 11, 5, 21],
}
]
},
pieoption1: {
color: ["#1467FF", "#84B3FF", "#0447C3", "#2A71F2", "#5291FF", "#97BFFF"],
tooltip: {
trigger: 'item',
position: [-130, 0],
formatter: function (params) {
var res = "<div style='height:95px;width:250px;padding:0 10px;font-size: 12px;'>";
res += "<div>人群分析</div>";
res += "<table class='rqfx_table1' >";
res += "<thead>";
res += "<tr>";
res += "<td width='80'></td>";
res += "<td width='80' class='tc'><span style='color:#B3BFD2;'>合计·人</span></td>";
res += "<td width='80' class='tc'><span style='color:#B3BFD2;'>重点·人</span></td>";
res += "<td width='80' class='tc'><span style='color:#B3BFD2;'>非重点·人</span></td>";
res += "</tr>";
res += "</thead>";
res += "<tbody>";
res += "<tr>";
res +=
"<td align='left'><span style='width:12px;height:9px;background:#3B91B3;border-radius:2px;display: inline-block;'></span> <span style='font-size: 12px;'>签约</span></td>";
res += "<td class='tc'><span>1</span></td>";
res += "<td class='tc'><span>2</span></td>";
res += "<td class='tc'><span>3</span></td>";
res += "</tr>";
res += "<tr>";
res +=
"<td align='left'><span style='width:12px;height:9px;background:#235293;border-radius:2px;display: inline-block;'></span> <span style='font-size: 12px;'>未签约</span></td>";
res += "<td class='tc'><span>4</span></td>";
res += "<td class='tc'><span>5</span></td>";
res += "<td class='tc'><span>6</span></td>";
res += "</tr>";
res += "</tbody>";
res += "</table>";
res += "</div>";
return res
}
},
calculable: false,
series: [{
hoverAnimation: false,
name: '',
type: 'pie',
radius: [0, 34],
x: '36%',
width: '36%',
funnelAlign: 'right',
label: {
normal: {
show: false
}
},
labelLine: {
normal: {
show: false
}
},
data: [{
value: 1,
name: ''
},
{
value: 2,
name: ''
},
]
},
{
hoverAnimation: true,
hoverOffset: 3,
name: '',
type: 'pie',
radius: [44, 52],
x: '36%',
width: '36%',
funnelAlign: 'left',
label: {
normal: {
show: false
}
},
labelLine: {
normal: {
show: false
}
},
data: [{
value: 3,
name: 'A'
},
{
value: 4,
name: 'B'
},
{
value: 5,
name: 'C'
},
{
value: 6,
name: 'D'
},
]
}
]
},
pieoption2: {
color: ["#1467FF", "#84B3FF", "#0447C3", "#2A71F2", "#5291FF", "#97BFFF"],
tooltip: {
trigger: 'item',
position: [-130, 0],
formatter: function (params) {
var res = "<div style='height:95px;width:250px;padding:0 10px;font-size: 12px;'>";
res += "<div>人群分析</div>";
res += "<table class='rqfx_table1' >";
res += "<thead>";
res += "<tr>";
res += "<td width='80'></td>";
res += "<td width='80' class='tc'><span style='color:#B3BFD2;'>合计·人</span></td>";
res += "<td width='80' class='tc'><span style='color:#B3BFD2;'>重点·人</span></td>";
res += "<td width='80' class='tc'><span style='color:#B3BFD2;'>非重点·人</span></td>";
res += "</tr>";
res += "</thead>";
res += "<tbody>";
res += "<tr>";
res +=
"<td align='left'><span style='width:12px;height:9px;background:#3B91B3;border-radius:2px;display: inline-block;'></span> <span style='font-size: 12px;'>签约</span></td>";
res += "<td class='tc'><span>1</span></td>";
res += "<td class='tc'><span>2</span></td>";
res += "<td class='tc'><span>3</span></td>";
res += "</tr>";
res += "<tr>";
res +=
"<td align='left'><span style='width:12px;height:9px;background:#235293;border-radius:2px;display: inline-block;'></span> <span style='font-size: 12px;'>未签约</span></td>";
res += "<td class='tc'><span>4</span></td>";
res += "<td class='tc'><span>5</span></td>";
res += "<td class='tc'><span>6</span></td>";
res += "</tr>";
res += "</tbody>";
res += "</table>";
res += "</div>";
return res
}
},
calculable: false,
series: [{
hoverAnimation: false,
name: '',
type: 'pie',
radius: [0, 34],
x: '36%',
width: '36%',
funnelAlign: 'right',
label: {
normal: {
show: false
}
},
labelLine: {
normal: {
show: false
}
},
data: [{
value: 1,
name: ''
},
{
value: 2,
name: ''
},
]
},
{
hoverAnimation: true,
hoverOffset: 3,
name: '',
type: 'pie',
radius: [44, 52],
x: '36%',
width: '36%',
funnelAlign: 'left',
label: {
normal: {
show: false
}
},
labelLine: {
normal: {
show: false
}
},
data: [{
value: 3,
name: 'A'
},
{
value: 4,
name: 'B'
},
{
value: 5,
name: 'C'
},
{
value: 6,
name: 'D'
},
]
}
]
},
tableData2: [{
name: '1',
province: '60以上',
city: '-',
pepole: '11',
address: '-',
}, {
name: '2',
province: '高血压',
city: '-',
pepole: '11',
address: '-',
}, {
name: '3',
province: '糖尿病',
city: '-',
pepole: '11',
address: '-',
}],
tableData: [{
name: '1',
province: '60以上',
city: '-',
pepole: '11',
address: '-',
}, {
name: '2',
province: '高血压',
city: '-',
pepole: '11',
address: '-',
}, {
name: '3',
province: '糖尿病',
city: '-',
pepole: '11',
address: '-',
}, {
name: '4',
province: '0-6岁',
city: '-',
pepole: '11',
address: '-',
}, {
name: '5',
province: '孕产妇',
city: '-',
pepole: '11',
address: '-',
}, {
name: '6',
province: '残疾人',
city: '-',
pepole: '11',
address: '-',
}, {
name: '7',
province: '结核病',
city: '-',
pepole: '11',
address: '-',
}, {
name: '8',
province: '特殊家庭',
city: '-',
pepole: '11',
address: '-',
}, {
name: '9',
province: '贫困人口',
city: '-',
pepole: '11',
address: '-',
}, {
name: '10',
province: '精神病',
city: '-',
pepole: '11',
address: '-',
}]
}
},
methods: {
//累计签约人均费用数据接口
initsign() {
let token = sessionStorage.getItem('token')
let param = {
"key": "fygl-qy-ljfy",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode
}
getPageData(token, param).then(res => {
//console.log(res)
this.para01 = 0
this.para02 = 0
this.para03 = 0
this.para04 = 0
this.para05 = 0
this.para06 = 0
this.para07 = 0
this.para08 = 0
this.para09 = 0
this.para10 = 0
this.para11 = 0
this.para12 = 0
this.para13 = 0
this.para14 = 0
this.para15 = 0
this.para16 = 0
this.para17 = 0
this.para18 = 0
this.para19 = 0
this.para20 = 0
this.para21 = 0
this.para22 = 0
this.para23 = 0
this.para24 = 0
this.para25 = 0
this.para26 = 0
this.para27 = 0
this.para28 = 0
this.para29 = 0
this.para30 = 0
this.para31 = 0
this.para32 = 0
this.para33 = 0
if (res.code == 1 && res.data.length > 0) {
this.para01 = res.data[0].RJFY
this.para02 = res.data[0].RJFY_TBZ
this.para03 = res.data[0].RJFY_TBL
this.para04 = res.data[0].QYRS
this.para05 = res.data[0].QYRS_TBZ
this.para06 = res.data[0].ZYRS
this.para07 = res.data[0].ZYRS_TBZ
this.para08 = res.data[0].RJMZFY
this.para09 = res.data[0].RJMZFY_TBZ
this.para10 = res.data[0].RJMZFY_TBL
this.para11 = res.data[0].RJMZFY_PLD
this.para12 = res.data[0].JZRS
this.para13 = res.data[0].JZRS_TBZ
this.para14 = res.data[0].JZRS_TBL
this.para15 = res.data[0].JZCS
this.para16 = res.data[0].JZCS_TBZ
this.para17 = res.data[0].JZCS_TBL
this.para18 = res.data[0].RJJZCS
this.para19 = res.data[0].RJJZCS_TBZ
this.para20 = res.data[0].RJJZCS_TBL
this.para21 = res.data[0].RJJZCS_PLD
this.para22 = res.data[0].RJZYFY
this.para23 = res.data[0].RJZYFY_TBZ
this.para24 = res.data[0].RJZYFY_TBL
this.para25 = res.data[0].CRF
this.para26 = res.data[0].CRF_BZZ
this.para27 = res.data[0].CRF_PLD
this.para28 = res.data[0].EJZSDJ
this.para29 = res.data[0].EJZSDJ_BZZ
this.para30 = res.data[0].EJZSDJ_PLD
this.para31 = res.data[0].SJZSDJ
this.para32 = res.data[0].SJZSDJ_BZZ
this.para33 = res.data[0].SJZSDJ_PLD
this.topvaluelist = res.data[0]
}
})
},
//左侧门诊上面接口
initsignleftup() {
let token = sessionStorage.getItem('token')
let param = {
"key": "fygl-qy-ljfyfx",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode,
"parameter": {
"jglx": "",
}
}
this.outpatientuplist = []
getPageData(token, param).then(res => {
// console.log('左侧门诊上面接口:');
// console.log(res);
if (res.code == 1 && res.data.length > 0) {
res.data.forEach((item, index) => {
res.data[index].JZRS = this.commonJs.getActiveNum(item.JZRS)
res.data[index].JZRS_TBL = this.commonJs.getActiveNum(item.JZRS_TBL)
res.data[index].JZCS = this.commonJs.getActiveNum(item.JZCS)
res.data[index].JZCS_TBL = this.commonJs.getActiveNum(item.JZCS_TBL)
res.data[index].JZFY = this.commonJs.getActiveNum(item.JZFY)
res.data[index].JZFY_TBL = this.commonJs.getActiveNum(item.JZFY_TBL)
res.data[index].JZYF = this.commonJs.getActiveNum(item.JZYF)
res.data[index].JZYF_TBL = this.commonJs.getActiveNum(item.JZYF_TBL)
this.outpatientuplist = res.data
})
}
})
},
// 左侧门诊下面接口
initsignleftdown() {
let token = sessionStorage.getItem('token')
let param = {
"key": "fygl-qy-ljrjjzfx",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode,
"parameter": {
"jzlx": "",
}
}
this.outpatientdownlist = []
getPageData(token, param).then(res => {
if (res.code == 1 && res.data.length > 0) {
// console.log(res)
// console.log("打印数据”")
res.data.forEach((item, index) => {
res.data[index].MBL = this.commonJs.getActiveNum(item.MBL)
res.data[index].SJL = this.commonJs.getActiveNum(item.SJL)
res.data[index].MBZ = this.commonJs.getActiveNum(item.MBZ)
res.data[index].QNZ = this.commonJs.getActiveNum(item.QNZ)
res.data[index].ZXZ = this.commonJs.getActiveNum(item.ZXZ)
res.data[index].BZZ = this.commonJs.getActiveNum(item.BZZ)
res.data[index].TBZ = this.commonJs.getActiveNum(item.TBZ)
this.outpatientdownlist = res.data
})
}
})
},
//右侧列表社区接口
initsignrightcom() {
let token = sessionStorage.getItem('token')
let param = {
"key": "fygl-qy-ljfyfx-list",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode,
"parameter": {
"jglx": this.isgy,
"pageIndex": 1,
"pageSize": 10,
}
}
this.hospotallist = []
getPageData(token, param).then(res => {
// console.log(res)
if (res.code == 1 && res.data.listData.length > 0) {
res.data.listData.forEach((item, index) => {
res.data.listData[index].MZFY = this.commonJs.getActiveNum(item.MZFY / 10000)
res.data.listData[index].MZFY_TBL = this.commonJs.getActiveNum(item.MZFY_TBL)
res.data.listData[index].MZFY_ZB = this.commonJs.getActiveNum(item.MZFY_ZB)
res.data.listData[index].MZYF = this.commonJs.getActiveNum(item.MZYF / 10000)
res.data.listData[index].MZYF_TBL = this.commonJs.getActiveNum(item.MZYF_TBL)
this.hospotallist = res.data.listData
})
}
})
},
//右侧列表缺陷接口
initsignrightdef() {
let token = sessionStorage.getItem('token')
let param = {
"key": "fygl-qy-mzfyqx",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode,
"parameter": {
"pageIndex": 1,
"pageSize": 10,
}
}
this.defectlist = []
getPageData(token, param).then(res => {
if (res.code == 1 && res.data.listData.length > 0) {
res.data.listData.forEach((item, index) => {
res.data.listData[index].MZFY = this.commonJs.getActiveNum(item.MZFY)
this.defectlist = res.data.listData
})
}
})
},
//二级指标单价TOP4
initsignlevel() {
let token = sessionStorage.getItem('token')
let param = {
"key": "fygl-qy-ljfyfx-jg-zd",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode,
}
this.twolevel = []
this.threelevel = []
getPageData(token, param).then(res => {
if (res.code == 1 && res.data.length > 0) {
res.data.forEach((item, index) => {
res.data[index].ZSDJ_PLD = this.commonJs.getActiveNum(item.ZSDJ_PLD)
res.data[index].YPZSDJ_PLD = this.commonJs.getActiveNum(item.YPZSDJ_PLD)
res.data[index].HCZSDJ_PLD = this.commonJs.getActiveNum(item.HCZSDJ_PLD)
if (res.data[index].JZJGDJ == 2) {
this.twolevel.push(res.data[index]);
this.twoleveldatalist = this.twolevel
}
if (res.data[index].JZJGDJ == 3) {
this.threelevel.push(res.data[index]);
this.threeleveldatalist = this.threelevel
}
})
}
})
},
// 费用-就诊-累计人均弹窗接口
cumpercapvis() {
let token = sessionStorage.getItem('token')
let param = {
"key": "fygl-qy-ljfy-jg",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode,
"parameter": {
"jglx": ""
}
}
this.cumpercapvisdatalist = []
getPageData(token, param).then(res => {
// console.log('费用-就诊-累计人均弹窗接口');
if (res.code == 1 && res.data.length > 0) {
res.data.forEach((item, index) => {
res.data[index].JZCS = this.commonJs.getActiveNum(item.JZCS)
res.data[index].JZCS_ZB = this.commonJs.getActiveNum(item.JZCS_ZB)
res.data[index].JZCS_TBL = this.commonJs.getActiveNum(item.JZCS_TBL)
res.data[index].JZFY = this.commonJs.getActiveNum(item.JZFY)
res.data[index].JZFY_ZB = this.commonJs.getActiveNum(item.JZFY_ZB)
res.data[index].JZFY_TBL = this.commonJs.getActiveNum(item.JZFY_TBL)
res.data[index].JZYF = this.commonJs.getActiveNum(item.JZYF)
res.data[index].JZYF_ZB = this.commonJs.getActiveNum(item.JZYF_ZB)
res.data[index].JZYF_TBL = this.commonJs.getActiveNum(item.JZYF)
this.cumpercapvisdatalist = res.data
})
}
})
},
dataSearch(value) {
console.log(famartTime2(value));
let val = famartTime2(value)
this.cxsj = val
this.initsign()
this.initsignleftup()
this.initsignleftdown()
this.initsignrightcom()
this.initsignrightdef()
this.initsignlevel()
this.cumpercapvis()
},
yyshow() {
this.isyy = !this.isyy
this.showouser1 = false
this.showouser2 = false
this.showouser3 = false
},
goExit() {
this.$router.push('/Home');
},
headerStyle() {
return 'background:rgba(48,56,90,1); border:0; margin:0; padding:0; line-height:29px; color:#6D779A; font-size:12px; text-align:center;font-weight:500;'
},
cellStyle() {
return 'background:none;color:#fff;border:0; margin:0; padding:0; line-height:29px; color:#AAB1D2; font-size:12px; text-align:center;font-weight:500'
},
changeAll(param) {
this.isall = param
},
AnalyFn() {
this.$router.push('/AnalySign');
},
tableRowClassName({
row,
rowIndex
}) {
if (rowIndex % 2 == 1) {
return 'warning-row';
} else {
return 'success-row';
}
},
tableRowClassName2({
row,
rowIndex
}) {
if (rowIndex % 2 == 1) {
return 'warning-row2';
} else {
return 'success-row2';
}
},
headerStyle2() {
return 'background:rgba(48,56,90,1); border:0; margin:0; padding:0; line-height:29px; color:#6D779A; font-size:12px; text-align:center;font-weight:500;'
},
headerStyle3() {
return 'background:rgba(48,56,90,1);border:0; margin:0; padding:0; line-height:29px; color:#8891BE; font-size:12px; text-align:center;font-weight:500;'
},
headerStyle4() {
return 'background:#35426E; border:0; margin:0; padding:0; line-height:50px; color:#6D779A; font-size:12px; text-align:center;font-weight:500;'
},
cellStyle2() {
return 'background:none;color:#fff;border:0; margin:0; padding:0; line-height:29px; color:#AAB1D2; font-size:12px; text-align:center;font-weight:500'
},
cellStyle4() {
return 'background:#35426E;color:#fff;border:0; margin:0; padding:0; line-height:29px; color:#AAB1D2; font-size:12px; text-align:center;font-weight:500'
},
hideLoading() {
this.loading = false
},
showLoading() {
this.loading = true
},
exitHome() {
this.$router.push('/Login');
},
question() {
this.explain = !this.explain
},
linkTo(param) {
if (param == 1) {
this.$router.push('/Signing');
} else if (param == 2) {
this.$router.push('/Cost');
} else if (param == 3) {
this.$router.push('/Achievements');
} else if (param == 4) {
this.$router.push('/Defect');
} else if (param == 5) {
this.$router.push('/Doctor');
} else if (param == 6) {
this.$router.push('/Logs');
} else if (param == 21) {
this.$router.push('/Cost');
} else if (param == 22) {
this.$router.push('/Sign');
}
},
toMember(param) {
// console.log('sss')
sessionStorage.setItem('backUrl', 'Cost');
this.$router.push('/Member?sfz=' + param);
//this.$router.push({Member: '/login?url=' + this.$route.path});
},
nullreturn(param) {
if (param == null || param == "NaN") {
return '-'
} else {
var num = parseFloat(param)
if (Math.abs(num) < 0.1) { //处理绝对值小于0.1的
num = num.toFixed(2);
} else if ((Math.abs(num) >= 0.1) && (Math.abs(num) <= 0.995)) { //处理绝对值大于等于0.1小于等于0.995的
num = num.toPrecision(2);
} else if (Math.abs(num) >= 999.5) { //处理绝对值大于等于999.5的
num = num.toFixed(0);
} else {
num = num.toPrecision(3)
}
return num
}
},
// 用于左侧的点击切换右侧表头内部的文字
changeTabName(num) {
if (num == 1) {
this.TableName = "社区"
this.isgy = num
this.isall = 1
} else if (num == 2) {
this.TableName = "二级"
this.isgy = num
this.isall = 1
} else {
this.TableName = "三级"
this.isgy = num
this.isall = 1
}
this.initsignrightcom()
},
showBox(num) {
if (num == 1) {
this.isyy = true
this.showouser1 = true
} else if (num == 2) {
this.isyy = true
this.showouser2 = true
} else if (num == 3) {
this.isyy = true
this.showouser3 = true
}
},
yzbackto() {
this.$router.push('/YSigning');
},
openCame() {
if (false) {
} else {
this.$message.error('移动APP打开扫一扫');
}
},
showMzHospital() {
this.$router.push('/MzHospitalList');
},
gotoDefect() {
this.$router.push('/Defect');
},
renderHeader() {
return ( <div
style = "text-decoration: underline;"
on-click = {() => this.gotoDefect() }>
门诊总费用·元 < /div>)
},
},
mounted: function () {
this.token = sessionStorage.getItem('token')
this.loginMsg = JSON.parse(sessionStorage.getItem('userinfo'))
if (this.loginMsg.roleCode == 'hcms.APP_SQYZ') {
this.yzback = true
}
this.yname = this.loginMsg.userName
if (this.loginMsg.roleCode == 'hcms.APP_SQYZ') {
console.log('家医数据信息:')
console.log(this.loginMsg)
this.loginMsg.gpNumber = sessionStorage.getItem('ygh')
this.yname = sessionStorage.getItem('yname')
}
this.cxsj = sessionStorage.getItem("cxsj")
this.initsign()
this.initsignleftup()
this.initsignleftdown()
this.initsignrightcom()
this.initsignrightdef()
this.initsignlevel()
this.cumpercapvis()
const obj = setInterval(() => {
if (document.getElementById("echats1")) {
const dom = document.getElementById("echats1")
const myChart = this.$echarts.init(dom)
if (this.option && typeof this.option === "object") {
myChart.setOption(this.option, true)
}
clearInterval(obj)
}
}, 200)
const obj2 = setInterval(() => {
if (document.getElementById("ctpie1")) {
const dom = document.getElementById("ctpie1")
const myChart = this.$echarts.init(dom)
if (this.option && typeof this.option === "object") {
myChart.setOption(this.pieoption1, true)
}
clearInterval(obj2)
}
}, 200)
const obj3 = setInterval(() => {
if (document.getElementById("ctpie2")) {
const dom = document.getElementById("ctpie2")
const myChart = this.$echarts.init(dom)
if (this.option && typeof this.option === "object") {
myChart.setOption(this.pieoption2, true)
}
clearInterval(obj3)
}
}, 200)
},
}
</script>
<style scoped>
.el-table th.gutter {
display: table-cell !important;
}
.search /deep/ input {
border: 0;
margin: 0;
height: 30px;
}
.jntemblu {
width: 17px;
height: 17px;
margin-top: 7px;
font-size: 12px;
}
#echats1 {
width: 100%;
margin: 0 auto;
height: 260px;
}
.outService1 {
width: 550px;
z-index: 99;
position: fixed;
top: 265px;
left: 22%;
border-radius: 5px;
background: linear-gradient(180deg, rgba(53, 66, 110, 1) 0%, rgba(54, 66, 109, 1) 100%);
}
.pservice1 {
height: 35px;
line-height: 35px;
text-align: left;
padding-left: 18px;
color: #A6AED6;
font-size: 15px;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
background: #3F4E7D;
}
.rightbox {
width: 49%;
height: 115px;
float: left;
}
.rightbox2 {
width: 530px;
padding: 9px;
height: 150px;
}
.rbiteml {
width: 60px;
height: 99px;
float: left;
padding-top: 31px;
box-sizing: border-box;
}
.rbitem2 {
margin-right: 5px;
height: 120px;
padding-top: 55px;
width: 85px;
}
.rbitemlinner {
width: 100%;
height: 32px;
color: #AAB1D2;
margin-top: 0px;
line-height: 32px;
font-size: 13px;
}
.rightbox2 .tablename4,
.tablename5 {
background: #3C5490;
color: rgb(170, 177, 210);
}
.rbitemr {
width: 430px;
height: 150px;
float: right;
color: #fff;
box-sizing: border-box;
}
.rrline {
height: 50px;
padding-top: 10px;
}
.rrline .rrmodel {
float: left;
width: 33.333%;
color: #AAB1D2;
line-height: 25px;
height: 50px;
}
.rrmodelbot {
height: 100px;
float: left;
width: 33.33%;
}
.rrmodelbot p {
line-height: 30px;
}
.rrmodelbot p:nth-child(odd) {
background: #303b62;
}
.outServicewords {
font-size: 14px;
color: #AAB1D2;
line-height: 45px;
height: 45px;
text-align: left;
padding-left: 15px;
}
.outService2 {
width: 480px;
z-index: 99;
position: fixed;
top: 230px;
right: 30px;
border-radius: 5px;
background: linear-gradient(180deg, rgba(53, 66, 110, 1) 0%, rgba(54, 66, 109, 1) 100%);
}
.pservice2 {
height: 35px;
line-height: 35px;
text-align: left;
padding-left: 18px;
color: #A6AED6;
font-size: 15px;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
background: #3F4E7D;
}
.outService3 {
width: 480px;
z-index: 99;
position: fixed;
top: 260px;
right: 30px;
border-radius: 5px;
background: linear-gradient(180deg, rgba(53, 66, 110, 1) 0%, rgba(54, 66, 109, 1) 100%);
}
.pservice3 {
height: 35px;
line-height: 35px;
text-align: left;
padding-left: 18px;
color: #A6AED6;
font-size: 15px;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
background: #3F4E7D;
}
/deep/ .el-input__icon {
line-height: 30px;
}
.clk {
color: #42CCFF;
}
.explainbox {
width: 330px;
border-radius: 5px;
z-index: 99;
position: fixed;
top: 110px;
left: 312px;
padding-bottom: 5px;
background: rgba(1, 1, 1, 0.8);
}
.explainboxtitle {
width: 90%;
margin: 0 auto;
text-align: left;
border-bottom: 1px solid #ccc;
}
.explainboxtitle span {
font-size: 14px;
font-weight: 500;
color: #FFFFFF;
line-height: 33px;
}
.explainboxtcontent {
width: 90%;
height: 40px;
margin: 0 auto;
text-align: left;
padding-top: 10px;
}
.explainboxtcontentleft {
width: 15%;
float: left;
font-size: 12px;
font-weight: 500;
color: #FFFFFF;
line-height: 16px;
text-align: center;
position: relative;
}
.explainboxtcontentleft i.icls {
position: absolute;
height: 10px;
width: 3px;
color: #0097FD;
background: #0097FD;
left: 0;
top: 4px;
}
.yydiv {
background: rgba(1, 1, 1, 0.7);
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
}
.explainboxtcontentright {
width: 85%;
float: right;
}
.explainboxtcontentright span {
font-size: 12px;
font-weight: 500;
color: #FFFFFF;
line-height: 16px;
}
.spanleft {
float: left;
}
.testright {
text-align: right;
}
/deep/ .el-table {
background: none;
}
/deep/ .el-table__expanded-cell {
background: none;
}
/deep/ .el-table th,
.el-table tr {
background: none;
}
/deep/ .el-table .warning-row {
background: rgba(48, 56, 90, 1);
height: 30px;
}
/deep/ .el-table .success-row {
background: #2a3557;
height: 30px;
}
/deep/ .el-table .warning-row2 {
background: rgba(48, 56, 90, 1);
height: 29px;
}
/deep/ .el-table .success-row2 {
background: #2a3557;
height: 29px;
}
/deep/ .el-table th > .cell {
padding: 0;
}
/deep/ .el-table .cell {
padding: 0;
line-height: 26px;
}
.el-table::before {
background: none
}
/deep/ .el-table,
.el-table__expanded-cell {
background: none;
}
/deep/ .el-table__fixed::before {
background-color: #293054;
}
.el-date-editor {
width: 30px;
position: absolute;
right: 0px;
top: 0px;
}
/deep/ .el-date-editor .el-date-editor--month input {
width: 30px;
border: 0;
padding-left: 0px;
}
/deep/ .el-date-editor .el-input__inner {
background: none !important;
}
/deep/ .el-date-editor .el-input__prefix {
display: none;
}
/deep/ .el-date-editor .el-input__suffix {
display: none;
}
</style>
<template>
<div>
<div class="div-model fl11">
<div class="title">签约人数</div>
<div class="content">
<div class="cttxt cttxt2">
<div class="ctline">
<i class="i01"></i>
<span>实际数</span>|<span>同期数</span>
</div>
</div>
<div class="cttxtwo">
<span class="span1001">{{costperdatalist.QYRS}}</span>
<span class="span02">/</span>
<span class="span1002">{{costperdatalist.QYRS_TBZ}}</span>
<span class="i"><i class="tong"></i></span>
<span class="i2">{{costperdatalist.QYRS_TBL}}</span>
<span class="i3">%</span>
<i :class="costperdatalist.QYRS_TBL<0?'el-icon-my-down':'el-icon-my-up'" style="border:none"></i>
</div>
<div class="cttxthr">
<code @click="showBox(1)">社区排名</code>
<span class="span1003">{{costperdatalist.SQ_RANK}}/{{costperdatalist.SQ_RANK_FM}}</span>
</div>
</div>
</div>
<div class="div-model fl12">
<div class="title">预期考核得分趋势分析</div>
<div class="content">
<div id="echats2"></div>
</div>
</div>
<!-----------底部内容---------->
<div class="div-model-b dmbleft">
<div class="title">12月考核分析</div>
<div id="echats1" class="div-model-echarts"></div>
</div>
<div class="div-model-b dmbright">
<div class="title checkspan">
<span @click="showBox(2)">考核指标</span>
</div>
<el-table :header-cell-style="headerStyle" :fit="true" :cell-style="cellStyle" height="250"
:row-class-name="tableRowClassName" :data="assmentdatalist">
<el-table-column label="序号" align="center" type="index" width="45"></el-table-column>
<el-table-column prop="ZBMC" align="left" :show-overflow-tooltip="true" label="指标名称">
<template slot-scope="scope">
<span @click="showDesc(scope.row.ZBMC,scope.row.PFBZ)">{{scope.row.ZBMC}}</span>
</template>
</el-table-column>
<el-table-column prop="KHDF" align="center" :formatter="stateFormat" width="90" label="得分">
<template slot-scope="scope">
<span>{{scope.row.KHDF}}</span>
</template>
</el-table-column>
<el-table-column prop="RANK" align="center" :formatter="stateFormat" width="100" label="社区排名">
<template slot-scope="scope">
<span>{{scope.row.RANK}}</span>
</template>
</el-table-column>
</el-table>
<div v-show="analysis" class="yytable yytable1">
<h3><span @click="closeDesc">×</span>{{titles}}</h3>
<div class="yyqtdiv">
<div class="pline" v-for="item in tablelist" :key="item.index">
<div class="pl01">| {{item.name}}</div>
<div class="pl02">{{item.val}}</div>
</div>
</div>
</div>
</div>
<div v-show="isyy" @click="yyshow" class="yydiv"></div>
<!-----------社区排名弹出层---------->
<div class="rankbox" v-show="rank">
<p class="pservice">社区排名</p>
<div class="rankmodel">
<el-table :header-cell-style="headerStyle1" :fit="true" :cell-style="cellStyle1" height="338"
:row-class-name="tableRowClassName2" :data="rankfamdocdatalist1">
<el-table-column label="序号" align="center" width="45">
<template slot-scope="scope">
<span>{{scope.$index + 1}} </span>
</template>
</el-table-column>
<el-table-column prop="JYXM" align="center" width="65" label="家医"></el-table-column>
<el-table-column prop="KHDF" align="center" width="50" label="得分"></el-table-column>
</el-table>
</div>
<div class="rankmodel">
<el-table :header-cell-style="headerStyle1" :fit="true" :cell-style="cellStyle1" height="338"
:row-class-name="tableRowClassName2" :data="rankfamdocdatalist2">
<el-table-column label="序号" align="center" width="45">
<template slot-scope="scope">
<span>{{scope.$index + 11}} </span>
</template>
</el-table-column>
<el-table-column prop="JYXM" align="center" width="65" label="家医"></el-table-column>
<el-table-column prop="KHDF" align="center" width="50" label="得分"></el-table-column>
</el-table>
</div>
</div>
<!-----------考核指标弹出层---------->
<div class="assmentbox" v-show="assment">
<div class="pservice">
<span class="spanfl">考核指标</span>
<span class="spanfr">8月份</span>
</div>
<div class="pservicemain">
<el-table :header-cell-style="headerStyle1" :fit="true" :cell-style="cellStyle1" width="180" height="385"
:row-class-name="tableRowClassName2" :data="assmentdatalist" show-summary
:summary-method="getSummaries">
<el-table-column label="序号" align="center" width="45">
<template slot-scope="scope">
<span>{{scope.$index + 1}} </span>
</template>
</el-table-column>
<el-table-column prop="ZBMC" width="200" label="项目"></el-table-column>
<el-table-column prop="ZXZ" align="center" width="65" label="实际">
<template slot-scope="scope">
<span>{{scope.row.ZXZ}}</span>
</template>
</el-table-column>
<el-table-column prop="PLD" align="center" width="65" label="偏离">
<template slot-scope="scope">
<span>{{scope.row.PLD}} %</span>
</template>
</el-table-column>
<el-table-column width="55" align="center" prop="KHDF" label="得分"></el-table-column>
<el-table-column width="50" align="center" prop="RANK" label="权重"></el-table-column>
</el-table>
</div>
</div>
</div>
</template>
<script>
import {home, getPageData} from 'api/home'
import PageHeader from "components/common/header/PageHeader";
import SideNavbar from "components/common/sideNavbar/SideNavbar";
export default {
components: {
PageHeader,
SideNavbar
},
name: 'gpPerformance',
data() {
return {
ygh: '',
token: '',
loginMsg: {},
para01: 1,
jctxt: '150',
loginID: '',
isall: 1,
titles: '',
yname: '',
loading: false,
yzback: false,
isyy: false,
rank: false, // 用于显示或隐藏社区排名弹出层
assment: false, // 用于显示或隐藏考核指标弹出层
analysis: false, // 用于显示或隐藏考核指标列表弹出层
TableName: '社区', // 用于切换右侧的表头名字
showouser: false, // 用于显示或隐藏门诊费用弹出层
detelist: {},
hzpoints: [],
selectTime: '2020-05',
costperdatalist: [],
rankfamdocdatalist: [],
rankfamdocdatalist1: [],
rankfamdocdatalist2: [],
assmentdatalist: [],
cxsj: "",
numbers: "01",
tablelist: [],
tableData: [],
option: {
tooltip: {
position: [50, 50],
padding: 10,
trigger: 'axis',
formatter: function (params) {
var res = "";
res += "<div style='padding:0 10px; text-align: left;'>";
res += "<p>";
res += params[0].data.name + "(<span style='color:#15C436;'>标</span>/<span style='color:#15C436;'>实</span>):";
res += params[0].data.val1 + "&nbsp;/&nbsp;" + params[0].data.val2;
res += "</p>";
res += "<p>权重:" + params[0].value + "分</p>";
res += "<p>预期得分:" + params[1].value + "分</p>";
res += "</div>";
return res;
}
},
legend: {
textStyle: {
color: '#8393A9',
fontSize: 10
},
top: '5',
itemHeight: 10,
itemWidth: 10,
itemGap: 5,
data: ['权重', '预期得分'],
align: 'left',
selectedMode: true
},
grid: {
top: 80,
bottom: 35,
left: 50,
right: 30
},
xAxis: [{
type: 'category',
data: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
axisLine: {
lineStyle: {
color: '#8393A9',
type: 'solid'
}
},
axisLabel: {
interval: 0,
textStyle: {
fontSize: 12,
color: function (value, index) {
return '#8393A9';
}
}
},
splitLine: {
show: false,
onZero: false
},
axisTick: {
show: false
},
}],
yAxis: [{
type: 'value',
min: 0,
axisLabel: {
textStyle: {
color: '#8393A9',
type: 'solid'
},
},
axisLine: {
show: true,
lineStyle: {
color: '#8393A9',
type: 'solid'
}
},
splitLine: {
show: false
},
axisTick: {
show: true
}
}],
series: [{
name: '权重',
type: 'line',
smooth: true,
yAxisIndex: 0,
symbol: 'circle',
symbolSize: 6,
z: 11,
itemStyle: {
normal: {
color: '#36F2D8'
}
},
data: [12, 3, 14, 5, 6, 3, 14, 5, 6, 12, 5, 21],
},
{
name: '预期得分',
type: 'line',
smooth: true,
yAxisIndex: 0,
symbol: 'circle',
symbolSize: 6,
z: 11,
itemStyle: {
normal: {
color: '#4693FF'
}
},
data: [12, 3, 4, 5, 6, 11, 5, 21, 3, 14, 5, 6],
}
]
},
option2: {
color: '#2680FF',
legend: {
textStyle: {
color: '#8393A9',
fontSize: 10
},
top: '0',
itemHeight: 10,
itemWidth: 10,
itemGap: 5,
left: '40',
data: ['考核得分'],
align: 'left',
selectedMode: true
},
tooltip: {
position: ['110', '10'],
trigger: 'axis',
formatter: function (params) {
if (params[0].value == 99.99) {
return ''
}
var res = "<div style='padding-left:10px; text-align: left;'>";
res += params[0].axisValue + "月份</div>";
res += "<ul style='display:flex;padding-left:10px; text-align: left;'>";
res += "<li>";
res += "<span> 预期考核得分 : " + params[0].value + "</span>";
res += "</li>";
res += "</ul>";
return res;
}
},
grid: {
top: 40,
bottom: 20,
left: 50,
right: 30
},
xAxis: [{
type: 'category',
data: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
axisLine: {
lineStyle: {
color: '#8393A9',
type: 'solid'
}
},
axisLabel: {
interval: 0,
textStyle: {
fontSize: 12,
color: function (value, index) {
return '#8393A9';
}
}
},
splitLine: {
show: false,
onZero: false
},
axisTick: {
show: false
},
}],
yAxis: [{
type: 'value',
min: 0,
axisLabel: {
textStyle: {
color: '#8393A9',
type: 'solid'
},
},
axisLine: {
show: true,
lineStyle: {
color: '#8393A9',
type: 'solid'
}
},
splitLine: {
show: false
},
axisTick: {
show: true
}
}],
series: [
{
name: '考核得分',
type: 'bar',
smooth: true,
barWidth: 8,
symbol: 'circle',
itemStyle: {
normal: {
color: '#2680FF'
}
},
itemStyle: {
normal: {
color: function (params) {
var colorList = ['#2680FF', '#3F4D79'];
if (params.value == 99.99) {
return colorList[1];
} else {
return colorList[0]
}
}
}
},
data: [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]
}
]
},
}
},
methods: {
//绩效考核-基础信息接口
initBase() {
let token = sessionStorage.getItem('token')
let param = {
"key": "jxkh-jbxx",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode
}
let datay101 = []
let datay102 = []
let datam = []
this.costperdatalist = []
getPageData(token, param).then(res => {
// console.log("绩效考核基本信息接口数据111111111111")
// console.log(res)
if (res.code == 1 && res.data.length > 0) {
res.data.forEach((item, index) => {
res.data[index].QYRS_TBL = getActiveNum(item.QYRS_TBL)
res.data[index].KHDF = getActiveNum(item.KHDF)
this.costperdatalist = res.data[index]
let vals = parseInt(item.KHDF) > 0 ? item.KHDF : 99.99
datam.push(vals)
})
this.costperdatalist = res.data[0]
}
// console.log('打印基本信息')
// console.log(this.costperdatalist)
this.option2.series[0].data = datam
this.$echarts.init(document.getElementById("echats2")).setOption(this.option2, true)
})
},
//绩效考核-社区排名接口
initRank() {
let token = sessionStorage.getItem('token')
let param = {
"key": "jxkh-jypm",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode
}
getPageData(token, param).then(res => {
// console.log(res)
if (res.code == 1 && res.data.length > 0) {
res.data.forEach((item, index) => {
res.data[index].KHDF = getActiveNum(item.KHDF)
this.rankfamdocdatalist = res.data
if (index < 10) {
this.rankfamdocdatalist1.push(item)
} else {
this.rankfamdocdatalist2.push(item)
}
})
}
})
},
//绩效考核-考核指标接口
initAssment() {
let token = sessionStorage.getItem('token')
let param = {
"key": "jxkh-khfx",
"tjsj": this.cxsj,
"gpgh": this.loginMsg.gpNumber,
"yljgdm": this.loginMsg.orgCode
}
let datax = []
let datay101 = []
let datay102 = []
let datam = []
getPageData(token, param).then(res => {
if (res.code == 1 && res.data.length > 0) {
res.data.forEach((item, index) => {
res.data[index].PLD = getActiveNum(item.PLD)
res.data[index].ZXZ = getActiveNum(item.ZXZ)
res.data[index].KHDF = getActiveNum(item.KHDF)
this.assmentdatalist = res.data
// console.log(this.assmentdatalist)
datax.push(index + 1)
let obj = {value: 0, name: '', val1: 0, val2: 0}
obj.value = item.QZ
obj.name = item.ZBMC
obj.val1 = item.ZXZ
obj.val2 = item.PLD
datay101.push(obj)
datay102.push(item.KHDF)
})
}
this.option.xAxis[0].data = datax
this.option.series[0].data = datay101
this.option.series[1].data = datay102
this.$echarts.init(document.getElementById("echats1")).setOption(this.option, true)
})
},
ranklist() {
this.rank = !this.rank;
},
yyshow() {
this.isyy = !this.isyy
this.rank = false
this.assment = false
},
goExit() {
this.$router.push('/Home');
},
headerStyle() {
return 'background:rgba(48,56,90,1); border:0; margin:0; padding:0; line-height:50px; color:#AAB1D2; font-size:12px;font-weight:500;height:30px'
},
headerStyle1() {
return 'background:#36426E; border:0; margin:0; padding:0; line-height:38px; color:#AAB1D2; font-size:12px;font-weight:500;'
},
cellStyle() {
return 'background:none;color:#fff;border:0; margin:0; padding:0; line-height:50px; font-size:12px;font-weight:500'
},
cellStyle1() {
return 'background:none;color:#fff;border:0; margin:0; padding:0; line-height:30px; font-size:12px;font-weight:500'
},
stateFormat(row, column) {
if (row.QYRS) {
return row.QYRS
} else if (row.QYRS_TBZ) {
return row.QYRS_TBZ
} else if (row.W_QY) {
return row.W_QY
} else if (row.W_QYL) {
return row.W_QYL
} else {
return '-'
}
},
changeAll(param) {
this.isall = param
},
tableRowClassName({
row,
rowIndex
}) {
if (rowIndex % 2 == 1) {
return 'warning-row';
} else {
return 'success-row';
}
},
tableRowClassName2({
row,
rowIndex
}) {
if (rowIndex % 2 == 1) {
return 'warning-row2';
} else {
return 'success-row2';
}
},
headerStyle2() {
return 'background:rgba(54,66,110,1); border:0; margin:0; padding:0; line-height:29px; color:#6D779A; font-size:12px; text-align:center;font-weight:500;'
},
cellStyle2() {
return 'background:none;color:#fff;border:0; margin:0; padding:0; line-height:29px; color:#AAB1D2; font-size:12px; text-align:center;font-weight:500'
},
yzbackto() {
this.$router.push('/' + sessionStorage.getItem('ybackUrl'))
},
hideLoading() {
this.loading = false
},
showLoading() {
this.loading = true
},
exitHome() {
this.$router.push('/Login');
},
linkTo(param) {
if (param == 1) {
this.$router.push('/Signing');
} else if (param == 2) {
this.$router.push('/Cost');
} else if (param == 3) {
this.$router.push('/Achievements');
} else if (param == 4) {
this.$router.push('/Defect');
} else if (param == 5) {
this.$router.push('/Doctor');
} else if (param == 6) {
this.$router.push('/Logs');
} else if (param == 21) {
this.$router.push('/Cost');
} else if (param == 22) {
this.$router.push('/Sign');
}
},
dataSearch(value) {
let val = famartTime2(value)
this.cxsj = val
this.initBase()
this.initRank()
this.initAssment()
},
nullreturn(param) {
if (param == null) {
return '-'
} else {
return param
}
},
// 用于左侧的点击切换右侧表头内部的文字
changeTabName(num) {
if (num == 0) {
this.TableName = "社区"
} else if (num == 1) {
this.TableName = "二级"
} else {
this.TableName = "三级"
}
},
closeDesc() {
this.analysis = false
},
showDesc(param1, param2) {
this.titles = param1
this.analysis = true
let desc = param2.split(';')
this.tablelist = []
for (let a in desc) {
let desc2 = desc[a].split(':')
// console.log(desc2)
let obj = {name: '', val: ''}
obj.name = desc2[0]
obj.val = desc2[1]
this.tablelist.push(obj)
}
// console.log(this.tablelist)
},
showBox(num) {
var e = window.event || arguments.callee.caller.arguments[0];
if (e && e.stopPropagation) {
e.stopPropagation();
if (num == 1) {
this.isyy = true;
this.rank = true
this.assment = false
} else if (num == 2) {
this.isyy = true;
this.rank = false
this.assment = true
} else if (num == 3) {
this.isyy = true;
this.rank = false
this.assment = false
}
} else {
window.event.cancelBubble = true; // 取消冒泡事件
}
},
openCame() {
if (false) {
} else {
this.$message.error('移动APP打开扫一扫');
}
},
getSummaries(param) {
const {columns, data} = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 1) {
sums[index] = '小计';
return;
} else if (index === 4 || index === 5) {
const values = data.map(item => Number(item[column.property]));
if (!values.every(value => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
sums[index] += '';
} else {
sums[index] = 'N/A';
}
}
});
return sums;
}
},
mounted: function () {
this.token = sessionStorage.getItem('token')
this.loginMsg = JSON.parse(sessionStorage.getItem('userinfo'))
this.yname = this.loginMsg.userName
if (this.loginMsg.roleCode == 'hcms.APP_SQYZ') {
this.yzback = true
this.loginMsg.gpNumber = sessionStorage.getItem('ygh')
this.yname = sessionStorage.getItem('yname')
}
this.initBase()
this.initRank()
this.initAssment()
const obj = setInterval(() => {
if (document.getElementById("echats1")) {
const dom = document.getElementById("echats1")
const myChart = this.$echarts.init(dom)
if (this.option && typeof this.option === "object") {
myChart.setOption(this.option, true)
}
clearInterval(obj)
}
}, 200)
const obj2 = setInterval(() => {
if (document.getElementById("echats2")) {
const dom = document.getElementById("echats2")
const myChart = this.$echarts.init(dom)
if (this.option && typeof this.option === "object") {
myChart.setOption(this.option2, true)
}
clearInterval(obj2)
}
}, 200)
}
}
</script>
<style scoped>
.outer {
position: relative;
}
.span1001 {
color: #fff;
font-size: 24px;
padding: 0 4px;
}
.span1002 {
font-size: 18px;
padding: 0 4px;
}
.span1003 {
font-size: 14px;
}
.checkspan {
text-decoration: underline;
color: #2680FF;
}
.el-table th.gutter {
display: table-cell !important;
}
.search /deep/ input {
border: 0;
margin: 0;
height: 30px;
}
.jntemblu {
width: 17px;
height: 17px;
margin-top: 7px;
font-size: 12px;
}
#echats1 {
width: 100%;
margin: 0 auto;
height: 260px;
}
#echats2 {
width: 100%;
height: 150px;
}
.rankbox {
width: 360px;
z-index: 99;
position: fixed;
top: 50%;
margin-top: -150px;
left: 50%;
margin-left: -300px;
border-radius: 3px;
}
.rankmodel {
float: left;
width: 160px;
padding: 0 10px;
height: 355px;
background: rgba(54, 66, 110, 1);
}
.pservice {
background: #3F4E7D;
height: 35px;
line-height: 35px;
text-align: left;
padding-left: 18px;
color: #A6AED6;
font-size: 15px;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.pservicemain {
padding: 0 10px;
background: #36426e;
}
.yytable1 {
position: absolute;
left: -300px;
top: 38px;
}
.spanfl {
float: left;
}
.spanfr {
float: right;
padding-right: 22px;
}
.assmentbox {
width: 500px;
z-index: 99;
height: 370px;
position: absolute;
top: 50%;
margin-top: -180px;
margin-left: -325px;
left: 50%;
border-radius: 3px;
}
.analysisbox {
width: 400px;
height: 300px;
z-index: 99;
position: fixed;
left: 250px;
top: 270px;
border-radius: 3px;
background: #171A28;
opacity: 0.8;
}
.analysistitle {
height: 35px;
line-height: 35px;
text-align: left;
margin: 0 18px;
color: #FFFFFF;
font-size: 15px;
border-bottom: 1px solid #424966;
}
.div-model-b {
position: relative;
}
/deep/ el-table {
background: none;
}
/deep/ .el-table__expanded-cell {
background: none;
}
/deep/ .el-table th, .el-table tr {
background: none;
}
/deep/ .el-table .warning-row {
background: rgba(48, 56, 90, 1);
}
/deep/ .el-table .success-row {
background: rgba(41, 51, 85, 1);
}
/deep/ .el-table .warning-row2 {
background: none;
height: 32px;
}
/deep/ .el-table .success-row2 {
background: rgba(48, 59, 98, 1);
height: 32px;
}
/deep/ .el-table th > .cell {
padding: 0;
}
/deep/ .el-table .cell {
padding: 0;
line-height: 29px;
}
/deep/ .el-table__row {
height: 24px;
}
/deep/ .rankmodel .el-table__row {
height: 30px;
}
.el-table::before {
background: none
}
/deep/ .el-table--enable-row-hover .el-table__body tr:hover > td {
color: #2680FF !important;
}
/deep/ .el-table, .el-table__expanded-cell {
background: none;
}
/deep/ .el-table__fixed::before {
background-color: #293054;
}
/deep/ .el-table__footer-wrapper tbody td, .el-table__header-wrapper tbody td {
background-color: #3F4E7D;
color: #B3BAD8;
}
/deep/ .el-table__footer-wrapper td {
border-top: 1px solid #3F4E7D
}
/deep/ .el-table td, .el-table th.is-leaf {
border-bottom: 1px solid #3F4E7D;
}
.yyqtdiv {
height: 180px;
padding-top: 5px;
overflow-y: scroll
}
.yydiv {
background: rgba(1, 1, 1, 0.7);
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
}
.el-date-editor {
width: 30px;
position: absolute;
right: 0px;
top: 0px;
}
/deep/ .el-date-editor .el-date-editor--month input {
width: 30px;
border: 0;
padding-left: 0px;
}
/deep/ .el-date-editor .el-input__inner {
background: none !important;
}
/deep/ .el-date-editor .el-input__prefix {
display: none;
}
/deep/ .el-date-editor .el-input__suffix {
display: none;
}
.el-date-editor {
width: 30px;
position: absolute;
right: 0px;
top: 0px;
}
/deep/ .el-date-editor .el-date-editor--month input {
width: 30px;
border: 0;
padding-left: 0px;
}
/deep/ .el-date-editor .el-input__inner {
background: none !important;
}
/deep/ .el-date-editor .el-input__prefix {
display: none;
}
/deep/ .el-date-editor .el-input__suffix {
display: none;
}
/deep/ .el-table__footer-wrapper tbody td {
background: #36426e;
}
/deep/ .el-input__icon {
line-height: 30px;
}
</style>
<template>
<div class="outer">
<div class="logincontainer">
<div class="titlebg"></div>
<div class="leftPopup" @click="leftcode()"><img src="~assets/img/login/leftcode.png"></div>
<div class="leftappcode" v-show="logincode"><img src="~assets/img/login/login_code.png"></div>
<div class="updatebox">
<div class="updateboxtitle">
<h1>修改密码</h1>
</div>
<div class="updateboxmassage">
<el-input v-model="loginName" placeholder="请输入用户名" clearable></el-input>
<el-input v-model="oldPassword" placeholder="请输入原密码" show-password></el-input>
<el-input v-model="newPassword" placeholder="请输入新密码" show-password></el-input>
<el-input v-model="againPassword" placeholder="请再次输入新密码" show-password></el-input>
<div class="updateboxfix">
<el-button type="primary" @click="updatamsgpsd()">确定</el-button>
</div>
<div class="updateboxcancel">
<el-button @click="backHome()" type="primary">取消</el-button>
</div>
</div>
</div>
<div class="loginfooter">
<div class="footermessge">工业和信息化部备案管理系统</div>
<div class="footerbeian">沪ICP备20000576</div>
<div class="footerbanben">版本:@2020V1.01.10</div>
</div>
</div>
</div>
</template>
<script>
import {updatapsd} from '@/api/login.js'
export default {
data() {
return {
loginName: '',
oldPassword: '',
newPassword: '',
againPassword: '',
logincode: false,
}
},
methods: {
leftcode() {
this.logincode = !this.logincode
},
backHome() {
this.$router.push('/');
},
updatamsgpsd() {
if (!this.loginName) {
this.$message.error('用户名不可为空');
return false;
}
if (!this.oldPassword) {
this.$message.error('原密码不可为空');
return false;
}
if (!this.newPassword) {
this.$message.error('新密码不可为空');
return false;
}
if (!this.againPassword) {
this.$message.error('再次输入密码不可为空');
return false;
}
if (this.againPassword != this.newPassword) {
this.$message.error('两遍密码输入不一致');
this.newPassword ="";
this.againPassword ="";
return false;
}
let token = this.token;
let param = {"loginName":this.loginName,"oldPassword":this.oldPassword,"newPassword":this.newPassword,};
updatapsd(token,param).then(res=>{
if(res.code == 1){
this.$message.success('密码修改成功!');
this.$router.push({
path: '/'
});
}else{
this.$message.error('原密码错误,请重新输入!');
this.newPassword ="";
this.againPassword ="";
}
})
}
},
mounted() {
if (sessionStorage.getItem('loginName') && sessionStorage.getItem('password')) {
this.loginName = sessionStorage.getItem('loginName');
this.oldPassword = sessionStorage.getItem('password');
}
}
}
</script>
<style scoped>
@import "~assets/css/login.css";
.outer {
background: url('~assets/img/login/loginbg.png') no-repeat;
background-size: 100% 100%;
}
/deep/ input {
border: 0;
}
</style>
<template>
<div class="outer">
<div class="logincontainer">
<div class="titlebg"></div>
<div class="leftPopup" @click="leftcode()"><img src="~assets/img/login/leftcode.png"/></div>
<div class="leftappcode" v-show="logincode"><img src="~assets/img/login/login_code.png"/></div>
<div class="loginmessage">
<div class="loginmessageleft"><img src="~assets/img/login/loginlogo.png" /></div>
<div class="loginmessageright">
<div class="loginmessagetitle">
<h2>上海市社区家庭医生</h2>
<h1>签约服务费用管理平台</h1>
<div class="chart20"></div>
<div class="loginmessageinput">
<el-input v-model="loginName" placeholder="账 号" clearable size="small"><i slot="prefix"
class="el-input__icon el-icon-user"></i>
</el-input>
<el-input v-model="password" placeholder="密 码" show-password size="small"><i slot="prefix"
class="el-input__icon el-icon-lock"></i>
</el-input>
<el-input v-model="MACIP" value="MAC:35:38:33:33:31:30" class="macip" :disabled="true" size="small"><i
slot="prefix"></i></el-input>
<el-button @click="Login()" type="primary">登录</el-button>
</div>
<div class="loginPassAbout">
<div class="loginMemoryPass">
<el-checkbox :checked="ischecked" :v-model='ischecked' @change="ischecked?false:true">记住密码</el-checkbox>
</div>
<div class="loginChangePass">
<a @click="Updatepsd()">修改密码 <i slot="prefix" class="el-icon-question"></i></a>
</div>
</div>
</div>
</div>
</div>
<div class="loginfooter">
<div class="footermessge">工业和信息化部备案管理系统</div>
<div class="footerbeian">沪ICP备20000576</div>
<div class="footerbanben">版本:@2020V1.01.10</div>
</div>
<div class="loginperson" v-if="personmsg">
<div class="tipimg"><img src="~assets/img/login/tipsmsg.png"></div>
<div class="tipmsg">
<h3>温馨提示</h3>
<h3>请完善您的基本信息!</h3>
</div>
<div class="tippersonmsg">
<el-input v-model="PersonName" placeholder="姓 名:" disabled size="small"></el-input>
<el-input v-model="PersonJobNo" placeholder="工 号:" disabled size="small"></el-input>
<el-input v-model="PersonID" placeholder="身份证号:" size="small"></el-input>
<el-input v-model="DoctorLicenseNo" placeholder="医师执业证号:" size="small"></el-input>
<el-input v-model="DoctorCertificateNo" placeholder="医师资格证号:" size="small"></el-input>
</div>
<div class="tippreservation">
<el-button type="primary" @click="update()">保存</el-button>
</div>
</div>
</div>
</div>
</template>
<script>
import {login, update} from '@/api/login.js';
export default {
data() {
return {
loginName: '',
password: '',
errormsg: '',
MACIP: 'MAC:35:38:33:33:31:30',
ischecked: true,
logincode: false,
personmsg: false,
PersonName: '',
PersonJobNo: '',
PersonID: '',
token: '',
DoctorLicenseNo: '',
DoctorCertificateNo: '',
}
},
methods: {
leftcode() {
this.logincode = !this.logincode
},
Updatepsd() {
this.$router.push({path: './changePassword'});
},
Login() {
if (!this.loginName) {
this.$message.error('账号不可为空');
return;
}
if (!this.password) {
this.$message.error('密码不可为空');
return;
}
let _this = this;
let param = {"loginName": this.loginName, "password": this.password};
// 用户登录
login(param).then(res => {
// console.log(res);
if (res.code === 1) {
if (this.ischecked) {
sessionStorage.setItem('loginName', this.loginName);
sessionStorage.setItem('password', this.password);
}
sessionStorage.setItem('cxsj', this.commonJs.dateFormat(res.data.user.dataTime));
this.$store.dispatch("setCxsj", this.commonJs.dateFormat(res.data.user.dataTime));
if (res.data.user.roleCode === 'hcms.APP_SQYZ') {
//this.$message.error('开发中');
sessionStorage.setItem('ytoken', res.data.token);
res.data.user.gpNumber = null;
sessionStorage.setItem('yuserinfo', JSON.stringify(res.data.user));
this.$router.push({path: './YSigning'});
return false;
} else {
sessionStorage.setItem('token', res.data.token);
sessionStorage.setItem('userinfo', JSON.stringify(res.data.user));
}
this.token = res.data.token;
let user = res.data.user;
this.PersonName = user.userName;
this.PersonJobNo = user.gpNumber;
if ((!user.userName) || (!user.gpNumber) || (!user.idcard) || (!user.licenseNumber) || (!user.qualificationNumber)) {
this.personmsg = !this.personmsg;
} else {
this.$router.push({path: './menu'});
}
} else {
_this.$message.error(res.msg);
}
}).catch(err => {
console.log("登录报错!");
})
},
update() {
if (!this.PersonID) {
this.$message.error('身份证不可为空');
return false;
}
if (!this.DoctorLicenseNo) {
this.$message.error('医师执业证号不可为空');
return false;
}
if (!this.DoctorCertificateNo) {
this.$message.error('医师资格证号不可为空');
return false;
}
let token = this.token;
let updatemsg = {
"userName": this.PersonName,
"gpNumber": this.PersonJobNo,
"idCard": this.PersonID,
"licenseNumber": this.DoctorLicenseNo,
"qualificationNumber": this.DoctorCertificateNo,
};
update(token, updatemsg).then(res => {
this.$router.push({
path: './menu'
});
})
},
},
mounted() {
if (sessionStorage.getItem('loginName') && sessionStorage.getItem('password')) {
this.loginName = sessionStorage.getItem('loginName');
this.password = sessionStorage.getItem('password');
this.ischecked = true;
}
}
}
</script>
<style scoped>
@import "~assets/css/login.css";
.outer {
width:100%;height:100%;
background: url('~assets/img/login/loginbg.png') no-repeat;
background-size: 100% 100%;
}
/deep/ input {
border: 0;
}
</style>
<template>
<div class="outer">
<div class="logincontainer">
<div class="titlebg">
<el-button class="logout" @click="backHome()" type="primary" icon="el-icon-switch-button">退出</el-button>
</div>
<h2 class="jnlogh2">上海市社区家庭医生签约服务费用管理平台</h2>
<div class="jnlogmiddlebox">
<div class="jnlogmiboxTop">
<div v-show="isqy" class="jnlogmibox-leftbrand">有效签约</div>
<div v-show="isfw" class="jnlogmibox-leftbrand threebrand">有效服务</div>
<div v-show="iskf" class="jnlogmibox-leftbrand twobrand">有效控费</div>
</div>
<div class="jnlogmiboxBottom">
<div class="jnlogmibox-item" v-for="(item, index) in DataList1" :key="item.id">
<div @click="goto(item.id)">
<div :class="item.menuImage"></div>
<p>{{item.menuName}}</p>
</div>
</div>
<div class="jnlogmibox-item" v-for="(item, index) in DataList2" :key="item.id">
<div>
<div :class="item.menuImage"></div>
<p>{{item.menuName}}</p>
</div>
<div v-show="index<2" id="wktimg"><img src="~assets/img/login/not-opened.png" alt=""></div>
</div>
<div class="jnlogmibox-item" v-for="(item, index) in DataList3" :key="item.id">
<div @click="goto(item.id)">
<div :class="item.menuImage"></div>
<p>{{item.menuName}}</p>
</div>
</div>
</div>
</div>
<div class="bottomBox" v-if="showbox">
<div class="topArrow">
<div class="Arrowitem Arrowl1" @click="DateBack()"></div>
<div class="Arrowitem Arrowl2" @click="DateBack()"></div>
<div class="Arrowitem Arrowr1" @click="showbottombox()"></div>
</div>
<div class="bottomLine" v-for="(item, index) in quotadatalist" :key="index">
<div class="botwords">{{item.ZB_MC}}</div>
<div class="rightIcons">
<span class="botspan">{{item.ZXZ}}%</span>
<span class="botspan"><code class="pian"></code></span>
<span class="botspan">{{item.PLD}}%</span>
<span class="botspan"><i :class="item.PLD<0?'el-icon-my-down':'el-icon-my-up'"></i></span>
</div>
</div>
</div>
<div class="loginfooter">
<div class="footerbanben">版本:@2020V1.01.10</div>
</div>
</div>
</div>
</template>
<script>
import {loginhome,quota} from 'api/login.js'
export default {
data() {
return {
token:'',
loginMsg:{},
showbox:false,
isqy:false,
isfw:false,
iskf:false,
cxsj:'',
bottomliststarve:[], // 用于展示切换数据的starve数组
datanum:0,
quotadatalist:[], //存放指标数组
DataList1:[],
DataList2:[],
DataList3:[],
bottomlist:[
{words:'签约覆盖率',num1:'75',num2:'41'},
{words:'签约居民高血压管理率',num1:'48',num2:'55'},
{words:'签约居民糖尿病管理率',num1:'98',num2:'19'},
{words:'签约医疗机构签约就诊率',num1:'46',num2:'14'},
{words:'签约覆盖率2',num1:'45',num2:'75'},
{words:'签约居民高血压管理率2',num1:'68',num2:'52'},
{words:'签约居民糖尿病管理率2',num1:'28',num2:'41'},
{words:'签约医疗机构签约就诊率2',num1:'27',num2:'65'},
]
}
},
methods: {
backHome(){
this.$router.push('/');
},
showbottombox(){
this.showbox = false
},
//登录目录页
Loginhome(){
let token = sessionStorage.getItem('token')
let menuslist = []
loginhome(token,menuslist).then(res=>{
// console.log(res)
res.data.forEach((item,index) => {
if(item.id==8){
this.isqy = true
this.DataList1 = item.sysMenuList
}
if(item.id==9){
this.isfw = true
this.DataList2 = item.sysMenuList
}
if(item.id==10){
this.iskf = true
this.DataList3 = item.sysMenuList
}
})
})
},
//目录页指标弹窗
Loginhomequota(){
let token = sessionStorage.getItem('token')
let quotalist = {
"key":"jxkh-ykh",
"tjsj":this.cxsj,
"gpgh":this.loginMsg.gpNumber,
"yljgdm":this.loginMsg.orgCode
}
quota(token,quotalist).then(res=>{
res.data.forEach((item,index) => {
res.data[index].ZXZ = this.commonJs.getActiveNum(item.ZXZ)
res.data[index].PLD = this.commonJs.getActiveNum(item.PLD)
this.quotadatalist = res.data
this.showbox = true
})
})
},
DateBack(){
this.bottomliststarve = []
console.log(this.datanum);
if(this.datanum % 2 == 0){
// 取前四个
// console.log(11);
this.bottomlist.forEach( (item, index) =>{
if(index<4){
this.bottomliststarve.push(item)
}
})
this.datanum -=1
}else{
// 取后四个
// console.log(22);
this.bottomlist.forEach( (item, index) =>{
if(3<index){
this.bottomliststarve.push(item)
}
})
this.datanum +=1
}
},
goto(idx){
if(idx==11){
this.$router.push('/gpHome/gpContract');
}else if(idx==15){
this.$router.push('/gpHome/Sign?jz=true');
}else if(idx==16){
this.$router.push('/gpHome/Sign');
}
}
},
mounted() {
this.token = sessionStorage.getItem('token')
this.loginMsg = JSON.parse(sessionStorage.getItem('userinfo'))
console.log('家医数据信息:')
console.log(this.loginMsg)
this.loginMsg.gpNumber = sessionStorage.getItem('ygh')
this.cxsj = sessionStorage.getItem("cxsj")
this.Loginhome()
this.Loginhomequota()
this.bottomlist.forEach( (item, index) =>{
if(index<4){
this.bottomliststarve.push(item)
}
})
}
}
</script>
<style scoped>
@import "~assets/css/login.css";
html,body{ height:99.6%;}
.outer{background:url('~assets/img/login/loginbg.png') no-repeat;background-size: 100% 100%;}
.pian{
color: #FF5C5C;
background:rgba(99,61,87,1);
border-radius:2px;
line-height: 12px;
border:1px solid;
border-image:linear-gradient(180deg, rgba(255,116,116,1), rgba(255,64,64,1)) 2 2;
}
.titlebg{height: 50px;}
.footerbanben{padding-right: 15px;position: fixed;bottom: 5px;right: -60px;}
.logout{
height: 25px;
width: 60px;
background:linear-gradient(135deg,rgba(77,187,255,1) 0%,rgba(43,131,255,1) 100%);
border-radius:6px;
color: #FFFFFF;
font-size: 10px;
vertical-align: middle;
padding: 0;
float: right;
margin-right: 20px;
}
.logout img{
width: 10px;
height: 11px;
margin-top: 2px;
}
</style>
<template>
<div class="login-wrap">
<el-container style="height: 100%">
<el-header class="login-head"></el-header>
<el-main class="login-main">
<div class="card">
<el-row>
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
<div class="card-left">
<img src="~assets/img/login/loginlogo.png"/>
</div>
</el-col>
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
<div class="card-right">
<div style="padding-bottom: 15px;border-bottom: 0.5px solid #FFFFFF;">
<p class="title titleTop">上海市社区家庭医生</p>
<p class="title titleBot">签约服务费用管理平台</p>
</div>
<div class="loginForm">
<el-input v-model="loginName" placeholder="账 号" clearable size="small"><i slot="prefix"
class="el-input__icon el-icon-user"></i>
</el-input>
<el-input v-model="password" placeholder="密 码" show-password size="small"><i slot="prefix"
class="el-input__icon el-icon-lock"></i>
</el-input>
<el-input v-model="MACIP" value="MAC:35:38:33:33:31:30" class="macip" :disabled="true" size="small"><i
slot="prefix"></i></el-input>
<el-button class="loginButton" @click="Login()" type="primary">登录</el-button>
</div>
<div class="loginPassAbout">
<div class="left">
<el-checkbox :checked="ischecked" :v-model='ischecked' @change="ischecked?false:true">
<span style="font-size: 9px;">记住密码</span>
</el-checkbox>
</div>
<div class="right">
<a @click="Updatepsd()"><span class="title">修改密码</span> <i slot="prefix" class="title el-icon-question"></i></a>
</div>
</div>
</div>
</el-col>
</el-row>
</div>
</el-main>
<el-footer style="height: 30px;">
333
</el-footer>
</el-container>
</div>
<!--<div class="outer">-->
<!--<div class="logincontainer">-->
<!--<div class="titlebg"></div>-->
<!--<div class="leftPopup" @click="leftcode()"><img src="~assets/img/login/leftcode.png"></div>-->
<!--<div class="leftappcode" v-show="logincode"><img src="~assets/img/login/login_code.png"></div>-->
<!--<div class="loginmessage">-->
<!--<div class="loginmessageleft"><img src="~assets/img/login/loginlogo.png"></div>-->
<!--<div class="loginmessageright">-->
<!--<div class="loginmessagetitle">-->
<!--<h2>上海市社区家庭医生</h2>-->
<!--<h1>签约服务费用管理平台</h1>-->
<!--<div class="chart20"></div>-->
<!--<div class="loginmessageinput">-->
<!--<el-input v-model="loginName" placeholder="账 号" clearable size="small"><i slot="prefix"-->
<!--class="el-input__icon el-icon-user"></i>-->
<!--</el-input>-->
<!--<el-input v-model="password" placeholder="密 码" show-password size="small"><i slot="prefix"-->
<!--class="el-input__icon el-icon-lock"></i>-->
<!--</el-input>-->
<!--<el-input v-model="MACIP" value="MAC:35:38:33:33:31:30" class="macip" :disabled="true" size="small"><i-->
<!--slot="prefix"></i></el-input>-->
<!--<el-button @click="Login()" type="primary">登录</el-button>-->
<!--</div>-->
<!--<div class="loginPassAbout">-->
<!--<div class="loginMemoryPass">-->
<!--<el-checkbox :checked="ischecked" :v-model='ischecked' @change="ischecked?false:true">记住密码</el-checkbox>-->
<!--</div>-->
<!--<div class="loginChangePass">-->
<!--<a @click="Updatepsd()">修改密码 <i slot="prefix" class="el-icon-question"></i></a>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--<div class="loginfooter">-->
<!--<div class="footermessge">工业和信息化部备案管理系统</div>-->
<!--<div class="footerbeian">沪ICP备20000576</div>-->
<!--<div class="footerbanben">版本:@2020V1.01.10</div>-->
<!--</div>-->
<!--<div class="loginperson" v-if="personmsg">-->
<!--<div class="tipimg"><img src="~assets/img/login/tipsmsg.png"></div>-->
<!--<div class="tipmsg">-->
<!--<h3>温馨提示</h3>-->
<!--<h3>请完善您的基本信息!</h3>-->
<!--</div>-->
<!--<div class="tippersonmsg">-->
<!--<el-input v-model="PersonName" placeholder="姓 名:" disabled size="small"></el-input>-->
<!--<el-input v-model="PersonJobNo" placeholder="工 号:" disabled size="small"></el-input>-->
<!--<el-input v-model="PersonID" placeholder="身份证号:" size="small"></el-input>-->
<!--<el-input v-model="DoctorLicenseNo" placeholder="医师执业证号:" size="small"></el-input>-->
<!--<el-input v-model="DoctorCertificateNo" placeholder="医师资格证号:" size="small"></el-input>-->
<!--</div>-->
<!--<div class="tippreservation">-->
<!--<el-button type="primary" @click="update()">保存</el-button>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
</template>
<script>
import {login, update} from 'api/login.js';
export default {
data() {
return {
loginName: '',
password: '',
errormsg: '',
MACIP: 'MAC:35:38:33:33:31:30',
ischecked: true,
logincode: false,
personmsg: false,
PersonName: '',
PersonJobNo: '',
PersonID: '',
token: '',
DoctorLicenseNo: '',
DoctorCertificateNo: '',
}
},
methods: {
leftcode() {
this.logincode = !this.logincode
},
Updatepsd() {
this.$router.push({path: './ChangePassword'});
},
Login() {
if (!this.loginName) {
this.$message.error('账号不可为空');
return;
}
if (!this.password) {
this.$message.error('密码不可为空');
return;
}
let _this = this;
let param = {"loginName": this.loginName, "password": this.password};
// 用户登录
login(param).then(res => {
// console.log(res);
if (res.code === 1) {
if (this.ischecked) {
sessionStorage.setItem('loginName', this.loginName);
sessionStorage.setItem('password', this.password);
}
sessionStorage.setItem('cxsj', this.commonJs.dateFormat(res.data.user.dataTime));
if (res.data.user.roleCode === 'hcms.APP_SQYZ') {
//this.$message.error('开发中');
sessionStorage.setItem('ytoken', res.data.token);
res.data.user.gpNumber = null;
sessionStorage.setItem('yuserinfo', JSON.stringify(res.data.user));
this.$router.push({path: './YSigning'});
return false;
} else {
sessionStorage.setItem('token', res.data.token);
sessionStorage.setItem('userinfo', JSON.stringify(res.data.user));
}
this.token = res.data.token;
let user = res.data.user;
this.PersonName = user.userName;
this.PersonJobNo = user.gpNumber;
if ((!user.userName) || (!user.gpNumber) || (!user.idcard) || (!user.licenseNumber) || (!user.qualificationNumber)) {
this.personmsg = !this.personmsg;
} else {
this.$router.push({path: './Home'});
}
} else {
_this.$message.error(res.msg);
}
}).catch(err => {
console.log("登录报错!");
})
},
update() {
if (!this.PersonID) {
this.$message.error('身份证不可为空');
return false;
}
if (!this.DoctorLicenseNo) {
this.$message.error('医师执业证号不可为空');
return false;
}
if (!this.DoctorCertificateNo) {
this.$message.error('医师资格证号不可为空');
return false;
}
let token = this.token;
let updatemsg = {
"userName": this.PersonName,
"gpNumber": this.PersonJobNo,
"idCard": this.PersonID,
"licenseNumber": this.DoctorLicenseNo,
"qualificationNumber": this.DoctorCertificateNo,
};
update(token, updatemsg).then(res => {
this.$router.push({
path: './Home'
});
})
},
},
mounted() {
if (sessionStorage.getItem('loginName') && sessionStorage.getItem('password')) {
this.loginName = sessionStorage.getItem('loginName');
this.password = sessionStorage.getItem('password');
this.ischecked = true;
}
}
}
</script>
<style >
.login-wrap{
width:100%;height:100%;
background:url('~@/assets/img/login/loginbg.png') center center no-repeat;
background-size: 100%, 100%;
}
.login-head{
height: 50px;
background:linear-gradient(180deg,rgba(75,95,153,1) 0%,rgba(63,74,113,1) 100%),
linear-gradient(135deg,rgba(77,187,255,1) 0%,rgba(43,131,255,1) 100%);
box-shadow:0px 1px 20px 0px rgba(47,138,255,0.5);
opacity:0.2;
}
.card{
margin: 25px auto;
width: 740px;
height: 366px;
background:linear-gradient(180deg,rgba(75,95,153,1) 0%,rgba(63,74,113,1) 100%),
linear-gradient(135deg,rgba(77,187,255,1) 0%,rgba(43,131,255,1) 100%);
box-shadow:0px 1px 20px 0px rgba(47,138,255,0.5);
opacity:0.48;
}
.card-left{
margin: 48px 0px 48px 65px;
}
.card-right{
margin: 49px 90px 48px 65px;
}
.card-left img{
width: 277px;
height: 269px;
vertical-align: middle;
}
.title{
font-size: 9px;
color: transparent;
background:linear-gradient(135deg, rgba(77,187,255,1) 0%, rgba(43,131,255,1) 100%);
-webkit-background-clip:text;
-webkit-text-fill-color:transparent;
}
.titleTop{
font-weight:400;
font-family:PingFangSC-Regular,PingFang SC;
font-size: 14px;height: 20px;line-height: 20px;
}
.titleBot{
font-family:PingFangSC-Bold,PingFang SC;
font-size: 21px;font-weight:bold;height: 30px;line-height: 30px;
}
.loginForm{
margin-top: 10px;
}
.login-wrap .el-input{
margin-top: 10px;
width: 209px;
height: 30px;
color: #FFFFFF;
background:rgba(255,255,255,1);
border-radius:6px;
opacity:0.1;
}
.loginButton{
margin-top: 20px;
width:209px;
height:30px;
line-height:5px;
background:linear-gradient(135deg,rgba(77,187,255,1) 0%,rgba(43,131,255,1) 100%);
border-radius:6px;
}
.loginPassAbout{
margin-top: 10px;
}
.login-wrap .el-checkbox__label {
font-size: 9px;
}
.login-wrap .el-checkbox {
color: #FFFFFF;
}
.login-wrap .el-checkbox__inner {
width: 10px;
height: 10px;
}
.login-wrap .el-checkbox__inner::after{
height: 6px;
left: 2px;
position: absolute;
top: 0px;
}
</style>
module.exports = {
configureWebpack: {
resolve: {
alias: {
'components': '@/components',
'assets': '@/assets',
'views': '@/views',
'api': '@/api',
}
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment