提交 808198c8 编写于 作者: yi.li's avatar yi.li

Merge branch 'dev-patients-20190513' of...

Merge branch 'dev-patients-20190513' of 192.168.110.53:com.pica.cloud.education.frontend/pica.cloud.web-education-admin into dev-patients-20190513
<template>
<div>
<v-header :userName="userName" :portrait="portrait" :idType="idType"></v-header>
<v-slidebar :authList="authList" :tokenValue="token"></v-slidebar>
<v-slidebar :authList="authList" :tokenValue="token" :notCompleteCount="redNum"></v-slidebar>
<el-container>
<div class="content" id="body-content">
<transition name="router-fade" mode="out-in">
......@@ -25,6 +25,7 @@ import VFooter from './views/layout/footer.vue'
import { base64decode, isNotEmptyUtils, getUrlParamsMap } from "./utils/utils.js"
import { mapActions, mapGetters } from 'vuex'
import { getLoginUrl } from './utils/index.js'
import { getRedNum } from './utils/patients/patientsapi'
let vm = null
export default {
components:{
......@@ -38,7 +39,8 @@ export default {
token: '',
userName: '',
portrait: '',
authList: {}
authList: {},
redNum: 0,
}
},
computed:{
......@@ -51,7 +53,7 @@ export default {
vm.getToken()
},
mounted() {
vm.getRedData()
},
methods: {
// 解密token
......@@ -107,6 +109,27 @@ export default {
vm.$message.info(res.message)
}
})
},
getRedData() {
getRedNum({
openTime: (new Date()).getTime()
}).then((data) => {
if(data.code == '000000') {
vm.redNum = data.data
}
}).catch(error => {
vm.$message.error(error)
})
}
},
watch: {
$route:{
deep:true,
handler:function(newVal){
if(vm.$route.path == '/patients-manage/not-complete/uncompleted-list'){ //避免重复请求
vm.redNum = 0
}
}
}
}
}
......
......@@ -117,8 +117,8 @@
}
},
created(){
this.token = 'D34A213A354849A0B08A241771F7A675';
// this.token = localStorage.getItem('storageToken');
// this.token = 'D34A213A354849A0B08A241771F7A675';
this.token = localStorage.getItem('storageToken');
this.headers.token = this.token
},
computed: {
......
......@@ -115,10 +115,10 @@ const patientsRouters = {
path: 'not-complete',
component: notCompleteManage,
name: 'notCompleteManage',
redirect: 'not-complete/not-complete',
redirect: 'not-complete/uncompleted-list',
children: [
{
path: 'not-complete',
path: 'uncompleted-list',
component: notCompleteList,
name: 'notCompleteList',
meta: {
......
......@@ -21,8 +21,8 @@ service.interceptors.request.use(config => {
if( config.headers['sysCode']==undefined) {
config.headers['sysCode'] = 12
}
config.headers['token'] = 'D34A213A354849A0B08A241771F7A675'
// config.headers['token'] = localStorage.getItem('storageToken')
// config.headers['token'] = 'D34A213A354849A0B08A241771F7A675'
config.headers['token'] = localStorage.getItem('storageToken')
config.headers['deviceInfo'] = JSON.stringify({ "app_channel": "", "app_mac": "", "app_uuid": "", "app_version": "", "device_brand": "", "device_ip": "", "device_model": "", "device_net": "", "device_ops": "", "resolution_wh": "", "system_level": "", "device_type": '10' })
}
// if (config.data && config.data.setEntry) {
......
......@@ -5,7 +5,29 @@ import { getBaseUrl, getSaasDomain, getSaasApiDomain } from '@/utils/index'
const headers = {
sysCode: 9
}
/*常量API*/
export const getConstants = (params) => {
return fetch({
headers,
url: getBaseUrl(`basic-data/constants/`),
method: 'get',
params: params,
description: '获取常量',
})
};
/*居民管理*/
export const getPatientList = (data) => {
return fetch({
headers,
url: getBaseUrl(`healths/patients/infolist`),
method: 'post',
data: data,
description: '获取居民列表',
})
};
export const getDiseasesList = (params) => {
return fetch({
headers,
......@@ -16,6 +38,16 @@ export const getDiseasesList = (params) => {
})
};
export const getLabelList = (params) => {
return fetch({
headers,
url: getBaseUrl(`healths/labels/`),
method: 'get',
params: params,
description: '获取分组列表',
})
}
// 获取七牛上传token
export const getQiniuToken = (params) => {
return fetch({
......@@ -48,25 +80,42 @@ export const getNotCompleteList = (params) => {
description: '获取资料不全居民列表',
})
};
export const sendCompleteMessage = (params) => {
export const sendCompleteMessage = (data) => {
return fetch({
headers,
url: getBaseUrl(`healths/patients/remind`),
method: 'post',
data: params,
data: data,
description: '提醒居民完善信息',
})
};
export const sendCompleteMessageList = (data) => {
return fetch({
headers,
url: getBaseUrl(`healths/patients/list/remind`),
method: 'post',
data: data,
description: '批量提醒居民完善信息',
})
};
export const getNotCompleteCount = (params) => {
return fetch({
headers,
url: getBaseUrl(`healths/patients/uncomplate/counts`),
method: 'get',
data: params,
params: params,
description: '获取未完善居民人数',
})
};
export const getRedNum = (params) => {
return fetch({
headers,
url: getBaseUrl(`healths/patients/uncompleted/last/counts`),
method: 'get',
params: params,
description: '获取小红点数据',
})
};
export const getPatientDetail = (patientId) => {
return fetch({
headers,
......
......@@ -8,6 +8,14 @@
<el-menu-item v-for="(subItem,i) in item.subs" :key="i" :index="'/'+subItem.index">
<i class="sub-icon" :class="subItem.icon"></i>
{{subItem.title}}
<p class="redNum"
v-if="subItem.title == '资料不全居民'
&&notCompleteCount
&&$route.path!='/patients-manage/not-complete/uncompleted-list'"
>
<span v-if="notCompleteCount>999">+999</span>
<span v-else>{{notCompleteCount}}</span>
</p>
</el-menu-item>
</el-submenu>
</template>
......@@ -33,6 +41,9 @@ export default {
authList: {
type: Object,
default: () => {}
},
notCompleteCount: {
type: Number,
}
},
data() {
......@@ -92,7 +103,7 @@ export default {
{
title: '资料不全居民',
icon: 'el-icon-setting',
index: 'patients-manage/not-complete/not-complete'
index: 'patients-manage/not-complete/uncompleted-list'
}
]
}
......@@ -158,6 +169,19 @@ export default {
// background: #06232C !important;
// }
}
.redNum {
display: inline-block;
border-radius: 10px;
margin-left: 15px;
background: #EE263E;
color: #fff;
font-size: 12px;
line-height: 12px;
padding: 5px 10px;
span {
display: block;
}
}
}
</style>
......
......@@ -53,8 +53,9 @@
</el-table-column>
<el-table-column
prop="name"
width="120">
操作
width="120"
label="操作"
>
</el-table-column>
</el-table>
</div>
......
......@@ -8,23 +8,16 @@
<el-input v-model="labelName" placeholder="请输入分组名称" size="small"></el-input>
</el-col>
<el-col :span="6">
<el-button type="primary" size="small" class="create-new-label">查询</el-button>
<el-button type="default" size="small" class="create-new-label">重置</el-button>
<el-button type="primary" size="small" class="create-new-label" @click="getList">查询</el-button>
<el-button type="default" size="small" class="create-new-label" @click="resetLabelName">重置</el-button>
</el-col>
<el-col :span="6" class="right">
<el-button type="primary" size="small" class="create-new-label">新建分组</el-button>
<el-button type="primary" size="small" class="create-new-label" :disabled="labelNameList.length >= 999">新建分组</el-button>
</el-col>
</el-row>
<p class="total-label">共:75个分组</p>
<div class="label-list">
<el-tag class="each-label" @click="goToDetail">高新区(34人)</el-tag>
<el-tag class="each-label">高血压(64人)</el-tag>
<el-tag class="each-label">权力的游戏(34人)</el-tag>
<el-tag class="each-label">端到端(34人)</el-tag>
<el-tag class="each-label">高新区(34人)</el-tag>
<el-tag class="each-label">高血压(64人)</el-tag>
<el-tag class="each-label">权力的游戏(34人)</el-tag>
<el-tag class="each-label">端到端(34人)</el-tag>
<p class="total-label">共:{{labelNameList.length}}个分组</p>
<div class="label-list" v-if="labelNameList && labelNameList.length>0">
<el-tag class="each-label" @click="goToDetail" v-for="(item, index) in labelNameList" :key="index">{{item.labelName}}({{item.labelPatientNums}}人)</el-tag>
</div>
</div>
</div>
......@@ -32,6 +25,8 @@
<script>
import BreadCrumb from "@/components/breadcrumb.vue";
import * as commonUtil from "@/utils/utils";
import { getLabelList } from '@/utils/patients/patientsapi'
export default {
......@@ -40,22 +35,42 @@
curmbFirst: "居民管理",
curmbSecond: "分组管理",
labelName: '',
labelNameList: [],
}
},
components: {
BreadCrumb,
},
created(){
// 获取分组列表
this.getLabelList();
this.getList();
},
// 挂载到Dom完成时
mounted: function() {
commonUtil.resizeHeight();
},
methods: {
getLabelList(){
console.log('获取分组列表...');
getList(){
// 获取分组列表
let num = {
type: 1,
token : localStorage.getItem("token"),
};
if(this.labelName){
num.labelName = this.labelName;
}
commonUtil.openLoading(this);
getLabelList(num).then(data => {
commonUtil.closeLoading(this);
// console.log('获取分组列表>> ', data)
if(data.data && data.data.labelNameList){
this.labelNameList = data.data.labelNameList;
}
}).catch(err => {
console.log('error: ', err)
});
},
resetLabelName(){
this.labelName = '';
},
goToDetail(){
this.$router.push({path: '/patients-manage/labels-manage/labels-detail'})
......@@ -119,8 +134,9 @@
/*定义滚动条轨道 内阴影+圆角*/
&::-webkit-scrollbar-track
{
border-radius: 10px;
background-color: rgb(241, 239, 239);
// border-radius: 10px;
// background-color: rgb(241, 239, 239);
// background: #fff;
}
/*定义滑块 内阴影+圆角*/
&::-webkit-scrollbar-thumb
......
<template>
<p>居民管理</p>
<section class="not-complete-wrap">
<bread-crumb
:curmbFirst="curmbFirst"
:curmbSecond="curmbSecond">
</bread-crumb>
<section class="not-complete-content screenSet">
<h1 class="page-title">我的居民:共{{pagination.totalRows}}</h1>
<div class="search-div">
<div class="search-input">
<el-form :model="searchData" ref="searchData" :inline="true">
<el-form-item label="性别:" prop="patientName">
<el-select v-model="searchData.sex" size="small" clearable :popper-append-to-body="false">
<el-option
v-for="item in sexList"
:key="item.no"
:label="item.value"
:value="item.no">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="年龄段:" prop="mobile">
<el-select v-model="searchData.age" size="small" clearable :popper-append-to-body="false">
<el-option
v-for="item in agesList"
:key="item.value"
:label="item.value"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="诊断:" prop="startDate" size="small">
<el-select v-model="searchData.diseaseId" size="small" clearable :popper-append-to-body="false">
<el-option
v-for="item in diseaseList"
:key="item.diseaseId"
:label="item.diseaseName"
:value="item.diseaseId">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="分组:" prop="labelId">
<el-select v-model="searchData.labelId" size="small" clearable :popper-append-to-body="false">
<el-option label="全部" value=""></el-option>
<el-option
v-for="item in groupList"
:key="item.labelId"
:label="item.labelName"
:value="item.labelId">
</el-option>
</el-select>
</el-form-item>
</el-form>
</div>
<div class="search-btn">
<el-button class="button-green" type="primary" size="small" @click="searchPatientList">查询</el-button>
<el-button class="button-white" plain size="small" @click="resetSearchData('searchData')">重置</el-button>
</div>
</div>
<el-table
:data="patientList"
style="width: 100%;">
<el-table-column
prop="nickname"
width="150"
label="姓名"
lign="center">
</el-table-column>
<el-table-column
prop="sex"
width="80"
label="性别"
align="center">
<template slot-scope="scope">
<span v-if="scope.row.sex==1"></span>
<span v-if="scope.row.sex==2"></span>
</template>
</el-table-column>
<el-table-column
prop="age"
label="年龄"
width="80"
align="center">
</el-table-column>
<el-table-column
prop="showLabelName"
:show-overflow-tooltip="true"
label="分组"
align="center">
</el-table-column>
<el-table-column
prop="showDiseaseNames"
:show-overflow-tooltip="true"
label="诊断"
align="center">
</el-table-column>
<el-table-column
width="120"
label="操作"
align="center">
<template slot-scope="scope">
<el-button type="text" @click="goToDetails(scope.row)">查看详情</el-button>
</template>
</el-table-column>
<div slot="empty">
<div class="table-empty">
<img src="../../../assets/image/no-content1.png">
<p>没有查询到相关结果</p>
</div>
</div>
</el-table>
<div class="pagination" v-if="patientList">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="pagination.pageNo"
:page-sizes="[15, 30, 50, 100]"
:page-size="pagination.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="pagination.totalRows">
</el-pagination>
</div>
</section>
</section>
</template>
<script>
import BreadCrumb from '../../../components/breadcrumb.vue'
import { getConstants,
getDiseasesList,
getLabelList,
getPatientList} from '../../../utils/patients/patientsapi'
export default {
name: "not-complete",
components: {
BreadCrumb
},
data() {
return {
curmbFirst: '居民管理',
curmbSecond: '我的居民',
pagination: {
pageNo: 1,
pageSize: 15,
totalRows: 0,
},
searchData: {},
selectList: [],
sexList: [], //性别
agesList: [], //年龄
diseaseList: [],
groupList: [],
patientList: []
}
},
mounted() {
this.getConstantData(); //获取性别、年龄段常量
this.getDiseaseData(); //获取疾病种类
this.getGroupList(); //获取分组
this.getPatients({
...this.searchData
}); //获取居民列表
},
methods: {
getConstantData() {
getConstants({
numList: 'P006,P057',
}).then((data) => {
if(data.code == "000000") {
this.sexList = data.data.P006;
this.agesList = data.data.P057;
}
}).catch((error) => {
this.$message({
message: error,
type: 'error'
});
});
},
getDiseaseData() {
getDiseasesList().then((data) => {
if(data.code == "000000") {
this.diseaseList = data.data;
}
}).catch((error) => {
this.$message({
message: error,
type: 'error'
});
});
},
getGroupList() {
getLabelList({
type: 1,
token : localStorage.getItem("token")
}).then((data) => {
if(data.code == "000000") {
this.groupList = data.data.labelNameList;
}
}).catch((error) => {
this.$message({
message: error,
type: 'error'
});
});
},
getPatients(payload) {
const { pageNo, pageSize} = this.pagination;
let searchParams = {}
if(this.searchData.age) {
let ageBegin = '';
let ageEnd = '';
if(this.searchData.age == '84+') {
ageBegin = '84';
ageEnd = '200';
} else {
const ageItem = this.searchData.age.split('-');
ageBegin = ageItem[0];
ageEnd = ageItem[1];
}
searchParams = {
...payload,
ageBegin,
ageEnd
}
} else {
searchParams = payload
}
getPatientList({
pageNo,
pageSize,
...searchParams
}).then((data) => {
if(data.code == "000000") {
this.patientList = data.data.patientList;
this.pagination.totalRows = data.data.totalRows
if(this.patientList) {
this.patientList.forEach((item)=> {
item.disableNum = 1;
let diseaseNames = [];
let groupNames = []
//转化分组
if (item.labelModels) {
item.labelModels.forEach(item => {
groupNames.push(item.label)
});
item.showLabelName = groupNames.join('、');
} else {
item.showLabelName = '-';
}
//转化疾病
if (item.patientTypeModels) {
item.patientTypeModels.forEach(item => {
diseaseNames.push(item.name)
})
item.showDiseaseNames = diseaseNames.join('、');
} else {
item.showDiseaseNames = '-';
}
})
}
}
}).catch((error) => {
this.$message({
message: error,
type: 'error'
});
});
},
handleSizeChange(val) {
this.pagination.pageSize = val
this.getPatients({
...this.searchData
})
},
handleCurrentChange(val) {
this.pagination.pageNo = val
this.getPatients({
...this.searchData
})
},
searchPatientList() {
this.getPatients({
...this.searchData
})
},
resetSearchData() {
this.searchData = {}
this.getPatients({
...this.searchData
})
},
goToDetails(item) {
this.$router.push({path: '/patients-manage/mypatients-manage/patient-detail', query: {patientId:item.patientId}})
}
},
}
</script>
<style scoped>
<style lang="scss">
.not-complete-wrap {
.not-complete-content {
padding: 30px;
background: #ffffff;
.tip {
font-size: 12px;
padding: 30px 0;
line-height: 32px;
}
.page-title {
font-size: 20px;
color: #F1E2F3D;
padding-bottom: 20px;
border-bottom: 1px solid #efefef;
}
.search-div {
display: flex;
flex-direction: row;
justify-content: space-between;
padding: 30px 0 10px 0;
border-bottom: 1px solid #efefef;
.search-btn {
min-width: 127px;
}
}
.blank-wrap {
@media screen and (min-width:1240px) and (max-width:1545px){
height: 300px;
}
@media screen and (min-width:1545px) and (max-width:1600px){
height: 500px;
}
@media screen and (min-width:1600px){
height: 600px;
}
.blank-content {
text-align: center;
img {
width: 100px;
}
p {
font-size: 20px;
color: #999;
}
}
}
.user-photo {
border-radius: 50%;
width: 40px;
}
.table-empty {
img {
width: 100px;
}
p {
margin-top: -50px;
}
}
}
/*重置表格选择框*/
.el-checkbox__input.is-checked .el-checkbox__inner, .el-checkbox__input.is-indeterminate .el-checkbox__inner {
border-color: #449284;
background-color: #449284;
}
.el-checkbox__inner {
border-color: #DCDFE6!important;
}
.el-checkbox__input.is-focus,.el-checkbox__inner:hover,.el-checkbox__inner.is-focus {
border-color: #449284!important;
}
.el-button--text {
color: #449284;
}
.fontGreen {
color: #449284;
}
.el-pagination.is-background .el-pager li:not(.disabled).active {
background: #449284 !important;
}
}
</style>
......@@ -78,7 +78,10 @@
<script>
import BreadCrumb from '../../../components/breadcrumb.vue'
import { getNotCompleteList, sendCompleteMessage, getNotCompleteCount } from '../../../utils/patients/patientsapi'
import { getNotCompleteList,
sendCompleteMessage,
getNotCompleteCount,
sendCompleteMessageList} from '../../../utils/patients/patientsapi'
export default {
name: "not-complete",
components: {
......@@ -99,9 +102,6 @@
selectList: []
}
},
created() {
//const vm = this;
},
mounted() {
this.getNotComplete()
this.getNotCompleteNum()
......@@ -125,15 +125,14 @@
pageSize,
}).then((data) => {
if(data.code == "000000") {
this.notCompleteList = data.data
console.log('1212',this.notCompleteList)
this.notCompleteList = data.data;
}
}).catch(function (error) {
}).catch((error) => {
this.$message({
message: error,
type: 'error'
});
});
})
},
sendMessageSingle(item) { //发送单个提醒
sendCompleteMessage({
......@@ -151,33 +150,59 @@
type: 'error'
});
}
}).catch(function (error) {
}).catch((error) => {
this.$message({
message: error,
type: 'error'
});
});
})
},
sendCompleteMessageMultiple(item) {
sendCompleteMessageMultiple() {
if(!this.selectList.length) {
this.$message({
message: '请选择居民',
type: 'warning'
});
return;
}
let patientIdList = []
this.selectList.forEach(item => {
patientIdList.push(item.patientId)
})
sendCompleteMessageList({
qrcodeType: 1,
patientIds: patientIdList,
}).then((data) => {
if(data.code == "000000") {
this.$message({
message: '已向居民发送提醒',
type: 'success'
});
}else {
this.$message({
message: data.message,
type: 'error'
});
}
}).catch((error) => {
this.$message({
message: error,
type: 'error'
});
})
},
getNotCompleteNum() {
getNotCompleteCount().then((data) => {
if(data.code == "000000") {
this.pagination.totalRows = data.data;
}
}).catch(function (error) {
}).catch((error) => {
this.$message({
message: error,
type: 'error'
});
});
})
}
}
}
......@@ -245,6 +270,7 @@
.el-pagination.is-background .el-pager li:not(.disabled).active {
background: #449284 !important;
}
}
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册