提交 f9f64de2 编写于 作者: 张磊's avatar 张磊

Merge branch 'feature/zl2' into 'develop'

auto commit

See merge request !12
......@@ -88,3 +88,21 @@ export const sampleCodeValidate = (data) => {
withCredentials: true,
});
};
// 获取检测人信息
export const detectionRecordInfo = (id) => {
return request({
method: 'get',
url: `/trade/detection/record/record/info?detectionRecordId=${id}`,
withCredentials: true,
});
};
// 绑定条码
export const bindingSampleCode = (data) => {
return request({
url: '/trade/detection/applet/record/record/bindingSampleCode',
method: 'POST',
data: data,
});
};
import Vue from 'vue';
import picaGuideApp from '@pica-kit/pica-ui-component/lib/pica-guide-app';
import PageModel from '@pica-kit/page-model';
import { Dialog, Field, Overlay, Button} from 'vant';
import { Dialog, Field, Overlay, Button, Popup, Icon} from 'vant';
import Loading from '@/components/loading/loading';
......@@ -13,3 +13,5 @@ Vue.use(Dialog);
Vue.use(Field);
Vue.use(Overlay);
Vue.use(Button);
Vue.use(Popup);
Vue.use(Icon);
import { router } from '@pica-cli/vue-cli-plugin-pica-cli-plugin/auto';
import insuranceBindCode from '@/views/insurance-bind-code/insurance-bind-code';
import insuranceDetectionDetail from '@/views/insurance-detection-detail/insurance-detection-detail';
import insuranceBindCodeSuccess from '@/views/insurance-bindCode-success/insurance-bindCode-success';
import handleAllRouter from '../public_uat';
const routerConfig = [
......@@ -9,6 +10,11 @@ const routerConfig = [
name: 'insuranceBindCode',
component: insuranceBindCode
},
{
path: '/insuranceBindCodeSuccess',
name: 'insuranceBindCodeSuccess',
component: insuranceBindCodeSuccess
},
{
path: '/insuranceDetectionDetail',
name: 'insuranceDetectionDetail',
......
......@@ -135,11 +135,64 @@
</van-button>
</div>
</van-overlay>
<van-dialog
v-model="showBindingInfo"
confirm-button-color="#00BDA5"
cancel-button-color="#00BDA5"
show-cancel-button="true"
confirm-button-text="确认提交"
cancel-button-text="返回修改"
>
<div class="binding-code-showInfo">
<div class="title">
确认提交
</div>
<div class="code">
<div class="name">
条形码
</div>
<div class="code-info">
{{ barCode }}
</div>
</div>
<div class="user">
<div class="name">
检测项目
</div>
<div class="user-info check-name">
{{ recordInfo.checkName }}
</div>
</div>
<div class="user">
<div class="name">
受检人
</div>
<div class="user-info">
<span> {{ recordInfo.name }}</span>
<span class="space">
{{ recordInfo.sex }}
</span>
<span class="space">
{{ recordInfo.date }}
</span>
</div>
</div>
<div class="tips">
<van-icon
name="warning-o"
class="tips-icon"
color="#FF720C"
size="14"
/>
<span>请确认信息是否正确,若出现问题,将无法正常出报告</span>
</div>
</div>
</van-dialog>
</div>
</template>
<script>
import { signDetection, getProtocolContent, getProtocolName, sampleCodeValidate} from '@/api/detection.js';
import { signDetection, getProtocolContent, getProtocolName, sampleCodeValidate, detectionRecordInfo, bindingSampleCode} from '@/api/detection.js';
export default {
data() {
return {
......@@ -147,13 +200,13 @@ export default {
title: '绑定条码',
isBlack: true,
backMethod: 'web',
style: 'backgroundColor:#ffffff',
style: 'backgroundColor:#ffffff;zIndex:100;',
background: '',
},
showBindingInfo: false,
showBindingInfo: true,
showEditModal: false,
isCheck: false,
barCode: '',
barCode: '123213123123123',
protocolName: '',
prototypeId: '',
prototypeLogId: '',
......@@ -163,7 +216,13 @@ export default {
detectionRecordId: '',
showProtocol: false,
agreeText: '',
detectionData:{}
detectionData:{},
recordInfo: {
name: '',
sex: '',
date: '',
checkName: ''
},
};
},
computed: {
......@@ -186,6 +245,7 @@ export default {
};
this.detectionData = mock;
this.getProtocolName();
this.getRecordInfo();
},
methods: {
triggerEditModal() {
......@@ -214,22 +274,25 @@ export default {
if(!this.isCheck && this.detectionData.pprotocolType) {
this.goProtocol();
}else{
const o = {
projectId: this.detectionData.projectId,
sampleCode: this.barCode,
hospitalId:this.detectionData.hospitalId
};
this.$loading.show();
sampleCodeValidate(o).then(res => {
const {code, message} = res.data;
if (code !== '000000') {
this.errorMessage = message;
return;
}
this.errorMessage = '';
}).finally(() => {
this.$loading.hide();
});
if(this.isCheck && this.barCode) {
const o = {
projectId: this.detectionData.projectId,
sampleCode: this.barCode,
hospitalId:this.detectionData.hospitalId
};
this.$loading.show();
sampleCodeValidate(o).then(res => {
const {code, message} = res;
if (code !== '000000') {
this.errorMessage = message;
}else {
this.errorMessage = '';
this.showBindingInfo = true;
}
}).finally(() => {
this.$loading.hide();
});
}
}
},
setSignDetection() {
......@@ -257,12 +320,6 @@ export default {
this.showProtocol = true;
const protoData = res.data;
this.agreeText = protoData;
this.agreeText = this.agreeText.replace('【', '[');
this.agreeText = this.agreeText.replace('】', ']');
this.agreeText = this.agreeText.substr(
this.agreeText.indexOf('<p'),
this.agreeText.lastIndexOf('</p>') - this.agreeText.indexOf('<p')
);
});
},
getProtocolName() {
......@@ -290,7 +347,38 @@ export default {
this.showProtocol = false;
this.toggleBindingInfo();
});
}
},
getRecordInfo(id) {
const i = id || 11074;
detectionRecordInfo(i).then(res => {
console.log('--res', res);
if (res.code === '000000') {
this.recordInfo.name = res.data.patientName;
this.recordInfo.sex = res.data.sex === 1 ? '男' : '女';
this.recordInfo.date = res.data.birthday;
this.recordInfo.checkName = res.data.checkName;
// this.status = res.data.data.status;
// this.goodsId = res.data.data.goodsId;
}
});
},
// 绑定条形码
bindingCode() {
const obj = {
barCode: this.barCode,
id: this.recordID,
prototypeId: this.detectionData.pprotocolType ? this.detectionData.pprotocolType : 0,
prototypeLogId: this.prototypeLogId ? this.prototypeLogId : 0,
};
bindingSampleCode(obj).then(res => {
if (res.code !== '000000') {
return this.$toast(res.message);
} else {
this.$toast('提交成功');
}
});
},
}
};
......@@ -527,6 +615,86 @@ export default {
margin-top: 10px;
}
}
.binding-code-showInfo{
padding: 24px 24px 0 24px;
.title{
height: 27px;
font-size: 18px;
line-height: 27px;
text-align: center;
font-weight: 700;
color: #000000;
margin-bottom: 12px;
}
.code,.user{
display: flex;
.name{
font-weight: 400;
color: #999999;
margin-right: 9px;
}
}
.code{
padding-left: 12px;
height: 50px;
background: #F7FFFE;
border-radius: 6px;
border: 1px solid #ADE9E1;
.name{
width: 45px;
min-width: 45px;
height: 50px;
line-height: 50px;
font-size: 15px;
}
.code-info{
flex: 1;
height: 50px;
font-size: 18px;
font-weight: 500;
line-height: 50px;
letter-spacing: 3px;
color: #00BDA5;
}
}
.user{
margin-top: 22px;
.name{
width: 60px;
font-size: 15px;
}
.user-info{
font-weight: 700;
font-size: 15px;
}
.check-name{
max-width: 180px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.space{
margin-left: 10px;
}
}
.tips{
position: relative;
margin-top: 24px;
margin-bottom: 24px;
padding-left: 18px;
font-size: 13px;
font-weight: 400;
color: #FF720C;
line-height: 18px;
.tips-icon{
position: absolute;
left: 0px;
top:2px;
}
}
}
}
</style>
.insurance-bindCode-success {
background-color: #ffffff;
min-height: 100vh;
width: 100%;
position: relative;
.detail-box {
background: linear-gradient(180deg, #00bda5 0%, #20c5b0 52%, #ffffff 100%);
padding: 0 12px;
height: auto;
padding-bottom: 5px;
position: relative;
z-index: 1;
.status {
padding: 16px 0;
display: flex;
align-items: center;
img {
width: 27px;
}
div {
padding-left: 9px;
width: 120px;
height: 20px;
font-size: 20px;
font-weight: 500;
color: #ffffff;
line-height: 20px;
}
}
.content {
height: auto;
.info {
width: 100%;
height: auto;
background: #ffffff;
border-radius: 10px;
margin-bottom: 10px;
padding-top: 20px;
padding-bottom: 40px;
.success-title{
font-size: 16px;
font-weight: 700;
color: #212121;
text-align: center;
padding-bottom: 14px;
}
.blue-wrap{
width: 321px;
background: #F7FFFE;
border-radius: 22px;
border: 1px solid #ADE9E1;
margin: 0 auto;
padding-top: 15px;
}
.list {
padding: 0px 15px 12px 15px;
display: flex;
justify-content: flex-start;
align-items: center;
.l-left {
width: 62px;
height: 14px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #999999;
line-height: 14px;
}
.l-right {
padding-left: 2px;
width: auto;
height: auto;
font-size: 14px;
font-weight: 500;
color: #212121;
flex: 1;
line-height: 20px;
text-align: right;
span {
display: inline-block;
padding-left: 15px;
}
}
}
.list-bottom {
.l-b-code {
.l-b-list {
display: flex;
justify-content: flex-start;
align-items: center;
padding-bottom: 13px;
.l-left {
width: auto;
height: 15px;
font-size: 15px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #212121;
line-height: 15px;
}
.l-right {
padding-left: 6px;
height: 15px;
font-size: 15px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #00bda5;
line-height: 15px;
}
}
}
}
}
}
.l-copy {
text-align: center;
border-radius: 10px;
font-size: 12px;
font-weight: 500;
color: #1677FE;
line-height: 22px;
margin-left: 6px;
margin-top: -2px;
display: inline-block;
}
}
.sumbit-container {
box-sizing: border-box;
width: 100%;
padding: 5px 12px;
background: #ffffff;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.sumbit-button {
width: 352px;
height: 40px;
border-radius: 20px;
font-weight: 700;
color: #ffffff;
font-size: 16px;
display: flex;
align-items: center;
background: #00bda5;
justify-content: center;
}
}
}
<template>
<div class="insurance-bindCode-success">
<page-model
ref="PageModel"
:header-info="headerInfo"
/>
<div class="detail-box">
<div class="status">
<img
src="https://files.yunqueyi.com/image/png/common/20220816135250298.png"
alt="success"
>
<div>提交成功</div>
</div>
<div class="content">
<div class="info">
<div class="success-title">
请将以下信息展示给采样医生
</div>
<div class="blue-wrap">
<div class="list">
<p class="l-left">
受检人:
</p>
<p class="l-right">
<span>{{ dataDetail.patientName || '--' }}</span><span>{{ dataDetail.sex | sexFilter }}</span><span class="font">{{
dataDetail.ageMonth
? dataDetail.ageMonth + '月'
: dataDetail.patientAge + '岁'
}}</span>
</p>
</div>
<div class="list">
<p class="l-left">
检测项目:
</p>
<p class="l-right">
{{ dataDetail.checkName || '--' }}
</p>
</div>
<div class="list">
<p class="l-left">
检测编号:
</p>
<p class="l-right">
{{ dataDetail.recordNo || '--' }}
</p>
</div>
<div class="list">
<div class="l-left">
条形码:
</div>
<div class="l-right">
{{ dataDetail.sampleCode || '--' }}
<div
class="l-copy"
@click="copyText(dataDetail.sampleCode)"
>
复制
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class="sumbit-container"
>
<div
class="sumbit-button"
@click="bottomBtnFun"
>
查看我的检测
</div>
</div>
</div>
</template>
<script>
import { getDetectionDetail, getDetectionDetailProces } from '@/api/detection';
export default {
filters: {
sexFilter(val) {
const str = val == 2 ? '女' : '男';
return str;
},
},
data() {
return {
status: '',
headerInfo: {
title: '检测服务',
isBlack: true,
backMethod: 'web',
style: 'backgroundColor:#ffffff;zIndex:100;',
background: '',
},
id: '',
dataDetail: {},
};
},
created() {
this.id = this.$route.query.id || 11073;
this.init();
},
mounted() {
},
methods: {
init() {
getDetectionDetail(this.id).then((res) => {
if (res.code === '000000') {
this.dataDetail = res.data;
this.getDetailProces();
console.log(res, 'eeeeeeeeeee', this.dataDetail);
} else {
this.$toast(res.message);
}
});
},
sampleDetection() {
// 样本送检测sale-mall-crm/sample-inspection?hospitalId=58436
this.$router.push({
name: 'SampleInspection',
query: {
hospitalId: this.dataDetail.hospitalId,
},
});
},
// 检测详情
getDetailProces() {
getDetectionDetailProces(this.id).then((res) => {
if (res.code === '000000') {
var flag = false;
const data = res.data || [];
console.log(this.dataDetail);
data.forEach((item) => {
if (item.status == this.dataDetail.status) {
item.complate = false;
flag = true;
} else {
console.log(flag, 'flag');
if (!flag) {
item.complate = true;
} else {
item.complate = false;
}
}
});
this.dataList = data;
console.log(this.dataList, 'res111111');
} else {
this.$toast(res.message);
}
});
},
bottomBtnFun() {
},
},
};
</script>
<style lang="scss" scoped>
@import './index.scss';
</style>
......@@ -15,7 +15,7 @@
.detail-box {
padding: 0 12px;
height: auto;
padding-bottom: 60px;
padding-bottom: 10px;
position: relative;
z-index: 1;
.status {
......@@ -30,7 +30,6 @@
width: 120px;
height: 20px;
font-size: 20px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 20px;
......@@ -64,26 +63,19 @@
width: auto;
height: auto;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #212121;
flex: 1;
line-height: 20px;
text-align: right;
span {
display: inline-block;
padding-right: 15px;
padding-left: 15px;
}
}
}
.list-bottom {
padding: 0px 15px 15px 15px;
.l-b-code {
padding: 16px 14px;
padding-bottom: 3px;
height: auto;
background: #f7fffe;
border-radius: 11px;
border: 0.5px solid #ade9e1;
.l-b-list {
display: flex;
justify-content: flex-start;
......@@ -107,20 +99,6 @@
color: #00bda5;
line-height: 15px;
}
.l-copy {
text-align: center;
width: 41px;
height: 20px;
border-radius: 10px;
border: 0.5px solid #00bda5;
font-size: 12px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #00bda5;
line-height: 22px;
margin-left: 6px;
margin-top: -2px;
}
}
}
}
......@@ -157,31 +135,20 @@
}
}
.express-step-msg {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
.step-title {
height: 18px;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 700;
color: #999999;
line-height: 18px;
}
.step-m {
width: 300px;
word-break:break-all;
margin-top: 4px;
font-size: 13px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #999999;
line-height: 19px;
}
.step-unusual {
color: #ff4b33;
}
.step-time {
margin-top: 5px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #999999;
line-height: 12px;
......@@ -193,13 +160,15 @@
&::before {
content: '';
position: absolute;
top: 5px;
left: 0;
top: 0;
left: -5px;
display: block;
width: 6px;
height: 6px;
width: 15px;
height: 15px;
border-radius: 50%;
background: #e7e7e7;
border:1px solid #e7e7e7;
background-color: #ffffff;
z-index: 1;
}
&::after {
content: '';
......@@ -249,7 +218,40 @@
}
}
}
.tips{
color: #FF4B33;
font-size: 12px;
font-weight: lighter;
margin-top: 5px;
}
}
.flex-wrap{
display: flex;
font-size: 16px;
}
.fc-blue{
color: #00BDA5;
}
.p30{
padding: 15px;
background-color: #ffffff;
border-radius: 10px;
margin-bottom: 10px;
}
.l-copy {
text-align: center;
border-radius: 10px;
font-size: 12px;
font-weight: 500;
color: #1677FE;
line-height: 22px;
margin-left: 6px;
margin-top: -2px;
display: inline-block;
}
}
.pb60{
padding-bottom: 60px;
}
.sumbit-container {
box-sizing: border-box;
......
......@@ -24,89 +24,35 @@
>
<div>{{ dataDetail.status | statusFilter }}</div>
</div>
<div class="content">
<div class="info">
<div class="list">
<p class="l-left">
受检人:
</p>
<p class="l-right">
<span>{{ dataDetail.patientName || '--' }}</span><span>{{ dataDetail.sex | sexFilter }}</span><span class="font">{{
dataDetail.ageMonth
? dataDetail.ageMonth + '月'
: dataDetail.patientAge + '岁'
}}</span>
</p>
</div>
<div class="list">
<p class="l-left">
检测项目:
</p>
<p class="l-right">
{{ dataDetail.checkName || '--' }}
</p>
</div>
<div class="list">
<p class="l-left">
开单医生:
</p>
<p class="l-right">
{{ dataDetail.doctorName || '--' }}
</p>
</div>
<div class="list">
<p class="l-left">
检测编号:
</p>
<p class="l-right">
{{ dataDetail.recordNo || '--' }}
</p>
<div
v-if="dataDetail.status != 0 && dataDetail.status != 1"
class="content"
>
<div class="p30">
<div
v-if="[2, 21, 22, 25].includes(Number(dataDetail.status|| 0))"
class="flex-wrap"
>
<div>
预期报告生成时间:
</div>
<div class=" fc-blue">
{{
dataDetail.detectChargeType == 10
? dataDetail.reportExpectDate
: dataDetail.reportExpectDateHigh
}}
</div>
</div>
<div
v-if="dataDetail.status != 0 && dataDetail.status != 1"
class="list-bottom"
v-if="dataDetail.status == 3"
class="flex-wrap"
>
<div class="l-b-code">
<div class="l-b-list">
<div class="l-left">
条形码:
</div>
<div class="l-right">
{{ dataDetail.sampleCode || '--' }}
</div>
<div
class="l-copy"
@click="copyText(dataDetail.sampleCode)"
>
复制
</div>
</div>
<div
v-if="[2, 21, 22, 25].includes(Number(dataDetail.status|| 0))"
class="l-b-list"
>
<div class="l-left">
预期报告生成时间:
</div>
<div class="l-right">
{{
dataDetail.detectChargeType == 10
? dataDetail.reportExpectDate
: dataDetail.reportExpectDateHigh
}}
</div>
</div>
<div
v-if="dataDetail.status == 3"
class="l-b-list"
>
<div class="l-left">
报告生成时间
</div>
<div class="l-right">
{{ dataDetail.reportDate }}
</div>
</div>
<div>
报告生成时间
</div>
<div class="fc-blue">
{{ dataDetail.reportDate }}
</div>
</div>
</div>
......@@ -119,60 +65,31 @@
:class="{
hideCircle: item.status == dataDetail.status,
last: index == dataList.length - 1,
isComplate: item.complate,
}"
>
<div
v-if="item.status == dataDetail.status"
v-if="item.status == dataDetail.status || item.complate"
class="express-step-icon"
>
<!-- 等待 -->
<img
v-if="waitIcon.indexOf(item.status) != -1"
class="step-pg"
src="https://files.yunqueyi.com/image/png/common/20220816120131913.png"
mode="aspectFill"
>
<!-- 成功 -->
<img
v-else
class="step-pg"
src="https://files.yunqueyi.com/image/png/common/2022081612011851.png"
mode="aspectFill"
>
</div>
<div v-else class="express-step-icon"></div>
<div
class="express-step-msg"
:class="{ noButton: item.status != dataDetail.status }"
>
<div class="step-title">
{{ item.nodeName }}
</div>
<div
v-if="item.exceptionDetail && item.exceptionDetail.exceptionTypeStr"
class="step-m step-unusual"
>
<span
class="fb"
>{{ item.exceptionDetail.exceptionTypeStr }}:
</span>
<span
v-if="item.exceptionDetail.exceptionDesc"
class="text-abnormal"
>{{ item.exceptionDetail.exceptionDesc }}</span>
<p>
{{ item.nodeName }}
</p>
<p v-if="dataDetail.status == 6" class="tips">温馨提示:可联系医生重新采样</p>
</div>
<div
v-else
class="step-m"
:class="{ 'step-unusual': item.status == 5 }"
>
{{ item.nodeDesc }}
</div>
<div
v-if="item.nodeTime"
class="step-time"
>
{{ item.nodeTime }}
{{ item.nodeTime || '未开始' }}
</div>
</div>
</div>
......@@ -195,6 +112,55 @@
{{ dataDetail.status | showBtnTextFilter }}
</div>
</div>
<div class="detail-box pb60">
<div class="content">
<div class="info">
<div class="list">
<p class="l-left">
受检人:
</p>
<p class="l-right">
<span>{{ dataDetail.patientName || '--' }}</span><span>{{ dataDetail.sex | sexFilter }}</span><span class="font">{{
dataDetail.ageMonth
? dataDetail.ageMonth + '月'
: dataDetail.patientAge + '岁'
}}</span>
</p>
</div>
<div class="list">
<p class="l-left">
检测项目:
</p>
<p class="l-right">
{{ dataDetail.checkName || '--' }}
</p>
</div>
<div class="list">
<p class="l-left">
检测编号:
</p>
<p class="l-right">
{{ dataDetail.recordNo || '--' }}
</p>
</div>
<div class="list">
<div class="l-left">
条形码:
</div>
<div class="l-right">
{{ dataDetail.sampleCode || '--' }}
<div
class="l-copy"
@click="copyText(dataDetail.sampleCode)"
>
复制
</div>
</div>
</div>
</div>
</div>
</div>
<!-- howBtn == 0 针对诺辉的走单独送检流程 不显示去送检按钮 -->
<div
v-if="dataDetail.status == 2 && dataDetail.showSendBtn == 1"
......@@ -265,12 +231,11 @@ export default {
status: '',
headerInfo: {
title: '检测详情',
isBlack: false,
isBlack: true,
backMethod: 'web',
style: 'zIndex:100;',
style: 'backgroundColor:#ffffff;zIndex:100;',
background: '',
},
id: '',
dataDetail: {},
canClick: true,
......@@ -284,7 +249,7 @@ export default {
};
},
created() {
this.id = this.$route.query.id || 123;
this.id = this.$route.query.id || 11073;
this.init();
},
mounted() {
......
......@@ -35,7 +35,7 @@ module.exports = {
port: 8083,
proxy: {
'/proxy': {
target: 'https://dev-sc.yunqueyi.com/',
target: 'https://test1-sc.yunqueyi.com/',
// target: 'https://test1-sc.yunqueyi.com/',
// target: 'https://uat-sc.yunqueyi.com/',
// http://10.241.65.90:3000/mock/1071/cs/route/removeUser
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册