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 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>
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