提交 15e2a878 编写于 作者: chengxiang.li's avatar chengxiang.li

update

上级 6dcfe169
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
"iscroll": "^5.2.0", "iscroll": "^5.2.0",
"js-cookie": "^2.2.0", "js-cookie": "^2.2.0",
"js-md5": "^0.7.3", "js-md5": "^0.7.3",
"qrcode": "^1.3.3",
"showdown": "^1.6.4", "showdown": "^1.6.4",
"vue": "^2.1.0", "vue": "^2.1.0",
"vue-infinite-scroll": "^2.0.2", "vue-infinite-scroll": "^2.0.2",
......
...@@ -74,17 +74,35 @@ export const getDiseasesList = (params) => { ...@@ -74,17 +74,35 @@ export const getDiseasesList = (params) => {
}; };
// 新增居民 // 新增居民
export const getQRCode = data => {
return fetch({
headers,
url: getBaseUrl(`healths/qrcodes/get`),
method: 'post',
data: data,
description: '获取二维码',
})
}
export const getUploadHistory = params => { // 获取上传历史记录 export const getUploadHistory = params => {
return fetch({ return fetch({
headers, headers,
url: getBaseUrl(`/healths/docImpPat/import/records`), url: getBaseUrl(`healths/docImpPat/import/records`),
method: 'get', method: 'get',
params: params, params: params,
description: '获取上传历史记录', description: '获取上传历史记录',
}) })
} }
export const refreshCode = data => {
return fetch({
headers,
url: getBaseUrl(`healths/qrcodes/refresh`),
method: 'post',
data: data,
description: '刷新二维码有效期',
})
}
// 分组管理 // 分组管理
export const getLabelList = (params) => { export const getLabelList = (params) => {
......
...@@ -72,6 +72,7 @@ ...@@ -72,6 +72,7 @@
</div> </div>
</el-table> </el-table>
<el-pagination <el-pagination
v-if="searchData.tableData && searchData.tableData.length > 0"
class="pagination-style" class="pagination-style"
@size-change="handleSizeChange" @size-change="handleSizeChange"
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
...@@ -201,7 +202,7 @@ ...@@ -201,7 +202,7 @@
}, },
// 挂载到Dom完成时 // 挂载到Dom完成时
mounted() { mounted() {
commonUtil.resizeHeight(); // commonUtil.resizeHeight();
}, },
methods: { methods: {
getDetail() { getDetail() {
...@@ -284,6 +285,7 @@ ...@@ -284,6 +285,7 @@
}, },
handleChangeLabelName(){ handleChangeLabelName(){
this.showChangeLabelNameDialog = true; this.showChangeLabelNameDialog = true;
this.ruleForm.newLabelName = this.$route.query.labelName;
}, },
cancelChangeName(){ cancelChangeName(){
this.isChangeNameError = false; this.isChangeNameError = false;
...@@ -417,8 +419,30 @@ ...@@ -417,8 +419,30 @@
} }
</script> </script>
<style lang="less">
.label-detail-wrap{
.err-text{
height: 12px;
// display: none;
visibility: hidden;
}
.special-error-tips{
.el-textarea__inner{
border: 1px solid red;
outline: none;
}
.err-text{
color: red;
visibility: visible;
}
}
}
</style>
<style lang="less" scoped> <style lang="less" scoped>
.label-detail-wrap{ .label-detail-wrap{
.screenSet{ .screenSet{
background: #fff; background: #fff;
padding: 30px; padding: 30px;
...@@ -470,11 +494,13 @@ ...@@ -470,11 +494,13 @@
} }
.pagination-style{ .pagination-style{
text-align: right; text-align: right;
margin: 20px 0;
} }
.table-empty{ .table-empty{
width: 100%; width: 100%;
height: auto; height: auto;
text-align: center; text-align: center;
margin-top: 20%;
.empty-pic{ .empty-pic{
width: 100px; width: 100px;
height: 100px; height: 100px;
...@@ -486,6 +512,7 @@ ...@@ -486,6 +512,7 @@
font-size: 14px; font-size: 14px;
color: #909399; color: #909399;
line-height: 14px; line-height: 14px;
padding-bottom: 200px;
} }
} }
} }
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
</el-button> </el-button>
</el-col> </el-col>
</el-row> </el-row>
<p class="total-label">共:{{labelNameList.length}}个分组</p> <p class="total-label">共:{{totalListCount}}个分组</p>
<div class="label-list" v-if="labelNameList && labelNameList.length > 0"> <div class="label-list" v-if="labelNameList && labelNameList.length > 0">
<el-tag class="each-label" @click="goToDetail(item)" v-for="(item, index) in labelNameList" :key="index">{{item.labelName}}({{item.labelPatientNums}}人)</el-tag> <el-tag class="each-label" @click="goToDetail(item)" v-for="(item, index) in labelNameList" :key="index">{{item.labelName}}({{item.labelPatientNums}}人)</el-tag>
</div> </div>
...@@ -70,6 +70,7 @@ ...@@ -70,6 +70,7 @@
curmbSecond: "分组管理", curmbSecond: "分组管理",
labelName: '', labelName: '',
labelNameList: [], labelNameList: [],
totalListCount: 0,
centerDialogVisible: false, centerDialogVisible: false,
ruleForm: { ruleForm: {
newLabelName: '', // 新建分组名 newLabelName: '', // 新建分组名
...@@ -98,17 +99,23 @@ ...@@ -98,17 +99,23 @@
// 获取分组列表 // 获取分组列表
let params = { let params = {
type: 1, type: 1,
token : localStorage.getItem("token"),
}; };
if(this.labelName){ if(this.labelName){
params.labelName = this.labelName; params.labelName = this.labelName;
} }
commonUtil.openLoading(this); // commonUtil.openLoading(this);
getLabelList(params).then(data => { getLabelList(params).then(data => {
commonUtil.closeLoading(this); // commonUtil.closeLoading(this);
// console.log('获取分组列表>> ', data) // console.log('获取分组列表>> ', data)
if(data.data && data.data.labelNameList){ if(data.data && data.data.labelNameList){
this.labelNameList = data.data.labelNameList; this.labelNameList = data.data.labelNameList;
for(let i=0; i<this.labelNameList.length; i++){
if(this.labelNameList[i].labelId == 0){
this.totalListCount = this.labelNameList.length - 1;
}else{
this.totalListCount = this.labelNameList.length;
}
}
} }
}).catch(err => { }).catch(err => {
console.log('error: ', err) console.log('error: ', err)
......
...@@ -18,28 +18,98 @@ ...@@ -18,28 +18,98 @@
</el-alert> </el-alert>
<div class="qr-group"> <div class="qr-group">
<p class="label-name">二维码分组:</p> <p class="label-name">二维码分组:</p>
<el-tag size="small">糖尿病高危分组</el-tag> <template v-for="labelItem in currentLabelList">
<el-tag size="small">高血压分组</el-tag> <el-tag size="small" :key="labelItem">{{labelItem}}</el-tag>
<el-tag size="small" class="choose-group">+ 选择分组</el-tag> </template>
<el-tag size="small" class="choose-group" @click="handleChooseGroup">+ 选择分组</el-tag>
</div> </div>
<div class="qr-pic-wrap"> <div class="qr-pic-wrap">
<div class="qr-box"> <div class="qr-box">
<div class="pic"> <div class="pic">
<div class="img" style="width: 200px; height: 200px;"></div> <!-- <vue-qr :text="qrCodeInfo.qrcodeUrl" class="qr-code-img"></vue-qr> -->
<el-button icon="el-icon-download" class="qr-download-btn">下载二维码</el-button> <canvas id="msg"></canvas>
<el-button icon="el-icon-download" class="qr-download-btn" @click="handleQRDownloadModal">下载二维码</el-button>
</div> </div>
<p class="time-limit">有效期:2019.5.1-2019.5.30 </p> <p class="time-limit">有效期:{{qrCodeInfo.beginTime}}-{{qrCodeInfo.endTime}} </p>
<el-button icon="el-icon-refresh" class="refresh-btn" size="small">刷新有效期</el-button> <el-button icon="el-icon-refresh" class="refresh-btn" size="small" @click="handleRefreshCode">刷新有效期</el-button>
</div> </div>
</div> </div>
<div class="border-space"></div> <div class="border-space"></div>
<div class="increased-steps-wrap"> <div class="increased-steps-wrap">
<div class="label-title">居民添加流程</div> <div class="label-title">居民添加流程</div>
<ul> <img src="../../../assets/image/patient-add-flow-path.png" alt="" class="flow-path">
<li></li>
</ul>
</div> </div>
</div> </div>
<!-- 选择分组 弹窗 -->
<el-dialog
class="choose-label-wrap"
title="选择分组"
:visible.sync="showChooseLabelModal"
width="680px"
:close-on-click-modal="false"
center>
<p class="under-title-tips">选择分组后,会自动生成相应的分组二维码,居民扫码后直接进入该分组</p>
<el-row class="row-in-line">
<el-button size="small" class="clear-select" :disabled="choosedLabelList.length<1" @click="handleClearSelect">清空选择</el-button>
<el-button type="primary" class="right" size="small" @click="handleGoToLabelManage">分组管理</el-button>
<p class="tips">未找到分组可去分组管理新建分组</p>
</el-row>
<div class="list-wrap">
<el-checkbox-group v-model="choosedLabelList">
<template v-for="item in labelNameList" >
<el-checkbox v-if="item.labelId != 0" :label="item.labelId" border :key="item.labelId">
{{item.labelName}}
</el-checkbox>
</template>
</el-checkbox-group>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="showChooseLabelModal = false" size="small">取 消</el-button>
<el-button type="primary" @click="handleAfterChooseLabel" size="small">确 定</el-button>
</span>
</el-dialog>
<!-- 重新加载当前分组列表 -->
<el-dialog
class="reload-label-modal"
:visible.sync="showReloadLabelModal"
width="320px"
:show-close="false"
:close-on-click-modal="false"
center>
<p class="tips">您刚才跳转到分组管理页面进行新建分组,请点击下方按钮刷新数据</p>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleReloadLabel">重新加载</el-button>
</span>
</el-dialog>
<!-- 下载二维码 弹窗 -->
<el-dialog
class="download-qr-modal"
title="下载二维码"
:visible.sync="showDownloadQRModal"
width="500px"
:show-close="false"
:close-on-click-modal="false"
center>
<div class="qr-pic"></div>
<p class="exp-date">有效期:2019.5.1-2019.5.30</p>
<div class="choose-group">
<p class="title">分组:</p>
<el-select v-model="currentQRDownloadGroup" placeholder="选择分组">
<el-option
v-for="item in qrDownloadGroups"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<p class="under-tips">选择分组后,会自动生成相应的分组二维码,居民扫码后直接进入该分组</p>
<p class="under-tips">(若未选择分组,则自动生成未分组二维码,居民扫码后进入默认未分组)</p>
<span slot="footer" class="dialog-footer">
<el-button @click="showDownloadQRModal = false">取 消</el-button>
<el-button type="primary" @click="handleGoToDownloadQR">确定下载</el-button>
</span>
</el-dialog>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="批量导入" name="third"> <el-tab-pane label="批量导入" name="third">
<div class="step-guide"> <div class="step-guide">
...@@ -184,10 +254,13 @@ ...@@ -184,10 +254,13 @@
import BreadCrumb from "@/components/breadcrumb.vue"; import BreadCrumb from "@/components/breadcrumb.vue";
import * as commonUtil from "@/utils/utils"; import * as commonUtil from "@/utils/utils";
import { import {
getUploadHistory getQRCode,
getUploadHistory,
getLabelList,
refreshCode,
} from "@/utils/patients/patientsapi"; } from "@/utils/patients/patientsapi";
import { getSaasDomain } from '@/utils/index'; import { getSaasDomain } from '@/utils/index';
import QRCode from 'qrcode';
export default { export default {
data() { data() {
...@@ -207,14 +280,47 @@ import { getSaasDomain } from '@/utils/index'; ...@@ -207,14 +280,47 @@ import { getSaasDomain } from '@/utils/index';
token: localStorage.getItem('token') token: localStorage.getItem('token')
}, },
files: [], files: [],
showChooseLabelModal: false,
showReloadLabelModal: false,
showDownloadQRModal: false,
currentQRDownloadGroup: '',
qrCodeInfo: {
qrcodeUrl: '',
beginTime: '',
endTime: '',
id: '',
labelIds: '',
},
currentLabelList: [],
labelNameList: [],
choosedLabelList: [],
qrDownloadGroups: [{
value: '选项1',
label: '黄金糕'
}, {
value: '选项2',
label: '双皮奶'
}, {
value: '选项3',
label: '蚵仔煎'
}, {
value: '选项4',
label: '龙须面'
}, {
value: '选项5',
label: '北京烤鸭'
}]
} }
}, },
components: { components: {
BreadCrumb, BreadCrumb,
}, },
created() { created() {
this.goToGetQRCode({
labelIds: '',
id: '',
first: true,
});
this.goToGetUploadHistory(); this.goToGetUploadHistory();
}, },
// 挂载到Dom完成时 // 挂载到Dom完成时
...@@ -222,6 +328,100 @@ import { getSaasDomain } from '@/utils/index'; ...@@ -222,6 +328,100 @@ import { getSaasDomain } from '@/utils/index';
// commonUtil.resizeHeight(); // commonUtil.resizeHeight();
}, },
methods: { methods: {
// 二维码录入
goToGetQRCode(params){
getQRCode(params).then(res => {
if(res.code == '000000'){
let data = res.data;
this.qrCodeInfo = data;
if(data.labelIds != ''){
this.currentLabelList = data.labelIds.split(',');
}
this.calculateQRCode(data.qrcodeUrl);
}else{
this.$message({
message: '获取二维码失败,请重新再试',
type: 'warning'
});
}
})
},
calculateQRCode(val){
// 获取页面的canvas
var msg= document.getElementById('msg')
// 将获取到的数据(val)画到msg(canvas)上
QRCode.toCanvas(msg, val, function (error) {
console.log(error)
})
},
handleChooseGroup() {
this.showChooseLabelModal = true;
this.goToGetGroupList();
},
handleRefreshCode() {
let params = {
labelIds: this.qrCodeInfo.labelIds,
id: this.qrCodeInfo.id,
first: false,
}
refreshCode(params).then(res => {
if(res.code == '000000'){
let data = res.data;
this.qrCodeInfo = data;
if(data.labelIds != ''){
this.currentLabelList = data.labelIds.split(',');
}
}else{
this.$message({
message: '获取二维码失败,请重新再试',
type: 'warning'
});
}
})
},
handleQRDownloadModal() {
this.showDownloadQRModal = true;
},
handleGoToDownloadQR() {
alert('待接口OK')
},
handleAfterChooseLabel() {
if(this.choosedLabelList.length < 1){
this.$message({
message: '请选择分组',
type: 'warning'
});
return;
}
this.showChooseLabelModal = false;
this.goToGetQRCode({
labelIds: this.choosedLabelList.join(','),
id: '',
first: false,
});
this.choosedLabelList = [];
},
handleClearSelect() {
this.choosedLabelList = [];
},
goToGetGroupList() {
// 获取分组列表
let params = {
type: 1,
};
if(this.labelName){
params.labelName = this.labelName;
}
getLabelList(params).then(data => {
// console.log('获取分组列表>> ', data)
if(data.data && data.data.labelNameList){
this.labelNameList = data.data.labelNameList;
}
}).catch(err => {
console.log('error: ', err)
});
},
goToGetUploadHistory(){ goToGetUploadHistory(){
console.log('go get upload history>>>>>>') console.log('go get upload history>>>>>>')
let params = { let params = {
...@@ -256,7 +456,7 @@ import { getSaasDomain } from '@/utils/index'; ...@@ -256,7 +456,7 @@ import { getSaasDomain } from '@/utils/index';
this.goToGetUploadHistory(); this.goToGetUploadHistory();
}, },
handleDownloadDemo(){ handleDownloadDemo(){
window.open('https://file.yunqueyi.com/File/template/居民导入模板.xlsx'); window.location.href = 'https://file.yunqueyi.com/File/template/居民导入模板.xlsx';
}, },
changeFile(file, fileList) { changeFile(file, fileList) {
const name = file.name; const name = file.name;
...@@ -300,6 +500,17 @@ import { getSaasDomain } from '@/utils/index'; ...@@ -300,6 +500,17 @@ import { getSaasDomain } from '@/utils/index';
this.error = response.message; this.error = response.message;
} }
}, },
handleGoToLabelManage(){
let routeUrl = this.$router.resolve({
path: '/patients-manage/labels-manage/labels-list',
});
window.open(routeUrl.href, '_blank');
this.showReloadLabelModal = true;
},
handleReloadLabel() {
this.showReloadLabelModal = false;
this.goToGetGroupList();
}
} }
} }
...@@ -307,6 +518,7 @@ import { getSaasDomain } from '@/utils/index'; ...@@ -307,6 +518,7 @@ import { getSaasDomain } from '@/utils/index';
<style lang="less" scoped> <style lang="less" scoped>
.newly-increased-wrap{ .newly-increased-wrap{
.screenSet{ .screenSet{
background: #fff; background: #fff;
padding: 30px; padding: 30px;
...@@ -338,6 +550,10 @@ import { getSaasDomain } from '@/utils/index'; ...@@ -338,6 +550,10 @@ import { getSaasDomain } from '@/utils/index';
<style lang="less"> <style lang="less">
.newly-increased-wrap{ .newly-increased-wrap{
#msg{
width:200px !important;
height:200px !important;
}
.top-title{ .top-title{
border: 0 !important; border: 0 !important;
} }
...@@ -357,6 +573,93 @@ import { getSaasDomain } from '@/utils/index'; ...@@ -357,6 +573,93 @@ import { getSaasDomain } from '@/utils/index';
flex: 1; flex: 1;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
.choose-label-wrap{
.el-dialog__body{
padding: 0 25px 30px;
}
.under-title-tips{
font-size: 12px;
color: #595959;
text-align: center;
}
.row-in-line{
overflow: hidden;
margin-top: 35px;
.el-button, .tips{
display: inline-block;
}
.clear-select{
color: #449284;
border: 1px solid #449284;
&.is-disabled{
color: #c0c4cc !important;
background: #fff !important;
border: 1px solid #dcdfe6 !important;
opacity: 1;
}
}
.tips, .right{
float: right;
}
.tips{
line-height: 32px;
}
}
.list-wrap{
width: 100%;
height: 300px;
border: 1px solid #E4E7ED;
margin-top: 10px;
padding: 10px;
border-radius: 4px;
.el-checkbox{
margin-right: 10px;
margin-left: 0;
margin-bottom: 10px;
}
}
}
.reload-label-modal{
text-align: center;
.el-dialog__body{
padding: 0 25px 8px;
.tips{
text-align: center;
}
}
}
.download-qr-modal{
.qr-pic{
width: 200px;
height: 200px;
background: pink;
margin: 0 auto;
}
.exp-date{
line-height: 36px;
text-align: center;
color: #606060;
padding-bottom: 10px;
}
.choose-group{
text-align: center;
padding-bottom: 10px;
.title{
display: inline-block;
}
.el-select{
width: 350px;
}
}
.under-tips{
color: #a3a5aa;
font-size: 12px;
line-height: 20px;
text-align: center;
}
}
.el-tabs__item{ .el-tabs__item{
color: #303133; color: #303133;
font-weight: 600; font-weight: 600;
...@@ -531,6 +834,13 @@ import { getSaasDomain } from '@/utils/index'; ...@@ -531,6 +834,13 @@ import { getSaasDomain } from '@/utils/index';
background:rgba(240,242,245,1); background:rgba(240,242,245,1);
width: 200px; height: auto; width: 200px; height: auto;
border: 0; border: 0;
.qr-code-img{
width: 200px;
height: 200px;
overflow: hidden;
border: 0;
display: block;
}
.qr-download-btn{ .qr-download-btn{
color: #fff; color: #fff;
background: #449284; background: #449284;
...@@ -560,12 +870,20 @@ import { getSaasDomain } from '@/utils/index'; ...@@ -560,12 +870,20 @@ import { getSaasDomain } from '@/utils/index';
margin-top: 30px; margin-top: 30px;
} }
.increased-steps-wrap{ .increased-steps-wrap{
overflow: hidden;
.label-title{ .label-title{
font-size: 20px; font-size: 20px;
color: #1E2F3D; color: #1E2F3D;
line-height: 28px; line-height: 28px;
margin: 30px 0 24px; margin: 30px 0 24px;
} }
.flow-path{
// width: 100%;
height: 441px;
display: block;
border: 0;
margin-left: -20px;
}
} }
} }
} }
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册