红河州第一人民医院、蒙自市人民医院病案复印整合修改

debug
zdnpc 2 years ago
parent 4682e95c58
commit 5062616d8a
  1. 22
      medical-record-pay.html
  2. 2
      medical-record.html
  3. 50
      src/models/medical-record-pay.vue
  4. 93
      src/models/medical-record.vue
  5. 901
      src/views/medical-record/hh/medical-record-apply.vue
  6. 224
      src/views/medical-record/hh/medical-record-history.vue
  7. 317
      src/views/medical-record/hh/pay.vue
  8. 743
      src/views/medical-record/medical-record-apply-copy.vue
  9. 201
      src/views/medical-record/medical-record-history-copy.vue
  10. 0
      src/views/medical-record/mz/medical-record-apply.vue
  11. 0
      src/views/medical-record/mz/medical-record-history.vue

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1" >
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<title>支付</title>
<script type="text/javascript">
document.write('<script type="text/javascript" src="src/utils/import-util.js?t=' + new Date().getTime() + '"><\/script>')
</script>
</head>
<body>
<script>
VueConfig.createApp('@/models/medical-record-pay.vue')
</script>
</body>
</html>

@ -7,7 +7,7 @@
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<title>病案翻拍</title>
<title>病案复印</title>
<script type="text/javascript">
document.write('<script type="text/javascript" src="src/utils/import-util.js?t=' + new Date().getTime() + '"><\/script>')
console.log('print')

@ -0,0 +1,50 @@
<!-- -->
<template>
<div v-if="show">
<div style="margin: 0 5px;">
<!-- 扫码 -->
<pay-info :way="1"></pay-info>
</div>
</div>
</template>
<script>
import { ref } from 'vue'
import { axios } from 'axios'
export default {
components: {
'pay-info': VueConfig.vueLoader('@/views/medical-record/hh/pay.vue'),
},
setup() {
const show = ref(false)
axios.verify(false).then(resp => {
show.value = true
})
return {
show
}
}
}
</script>
<style scoped>
.pay-qr__header {
box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.15);
background: #fff;
padding: 4px 8px;
margin: 4px;
border-radius: 4px;
display: flex;
margin-bottom: 12px;
line-height: 1.5em;
color: var(--text-b);
}
.pay-qr-tip {
color: var(--color-danger);
margin: 0 2px;
}
</style>

@ -1,15 +1,15 @@
<template>
<div v-if="show">
<transition mode="out-in">
<tab-router v-if="showRouter"></tab-router>
</transition>
<div v-if="show">
<transition mode="out-in">
<tab-router v-if="showRouter"></tab-router>
</transition>
<router-view v-slot="{ Component }">
<transition mode="out-in">
<component :is="Component"></component>
</transition>
</router-view>
</div>
<router-view v-slot="{ Component }">
<transition mode="out-in">
<component :is="Component"></component>
</transition>
</router-view>
</div>
</template>
<script>
@ -17,49 +17,50 @@ import { addRoutes, route } from 'vue-helper'
import { axios } from 'axios'
import { ref, watch } from 'vue'
export default {
components: {
TabRouter: VueConfig.vueLoader('@/components/tab-router.vue')
},
props: {
path: {
type: String,
default: '/medical-record-apply',
}
},
setup(props) {
const show = ref(false)
const showRouter = ref(true)
components: {
TabRouter: VueConfig.vueLoader('@/components/tab-router.vue')
},
props: {
path: {
type: String,
default: '/medical-record-apply',
}
},
setup(props) {
const show = ref(false)
const showRouter = ref(true)
axios.verify().then(resp => {
const routes = [
{
meta: '翻拍申请',
name: 'medical-record-apply',
path: '/medical-record-apply',
component: '@/views/medical-record/medical-record-apply'
},
{
meta: "翻拍历史",
path: '/medical-record-history',
name: 'medical-record-history',
component: '@/views/medical-record/medical-record-history'
}
]
axios.verify().then(resp => {
let dir = 'mz'
if (WxConfig.micro.hospital.includes('红河州第一人民医院')) dir = 'hh'
const routes = [
{
meta: '打印申请',
name: 'medical-record-apply',
path: '/medical-record-apply',
component: `@/views/medical-record/${dir}/medical-record-apply`
},
{
meta: "申请记录",
path: '/medical-record-history',
name: 'medical-record-history',
component: `@/views/medical-record/${dir}/medical-record-history`
}
]
addRoutes(props.path, routes)
addRoutes(props.path, routes)
show.value = true
})
show.value = true
})
return {
show,
showRouter
}
}
return {
show,
showRouter
}
}
}
</script>

@ -0,0 +1,901 @@
<!-- 红河州人民医院 -->
<template>
<div class="ptint-reserve">
<select-patient-date :show-code="false"
:days="0"
:show-navbar="false"
:show-date="false"></select-patient-date>
<div style="margin: 5px;">
<van-form ref="formRef"
error-message-align="right">
<van-cell-group title=""
insert>
<van-field v-model="form.ipsID"
label="住&ensp;院&ensp;号"
is-link
readonly
required
placeholder="点击选择住院记录"
@click="state.treatShow = true"
:rules="[{required: true, message: '请选择住院记录', trigger: 'onSubmit'}]"></van-field>
<van-field v-model="form.ptName"
label="病人姓名"
readonly
required
placeholder="选择住院记录"></van-field>
<van-field v-model="form.deptName"
label="入院科室"
required
placeholder="选择住院记录"></van-field>
<van-field v-model="form.showCardNo"
required
readonly
label="身份证号"
placeholder="身份证号"
:rules="[{required: true, message: '请输入身份证号', trigger: 'onSubmit'}]"></van-field>
<van-field v-model="form.phone"
type="tel"
required
label="联系电话"
placeholder="联系电话"
:rules="[{required: true, message: '请输入联系电话', trigger: 'onSubmit'}]"></van-field>
<van-field v-model="formLabel.getWayLabel"
is-link
readonly
required
label="获取方式"
placeholder="点击选择获取方式"
@click="state.getWayShow = true"></van-field>
<van-field v-if="form.getWay === '2'"
v-model="form.address"
label="邮寄地址"
type="textarea"
rows="2"
autosize
required
placeholder="邮寄地址"
:rules="[{required: true, message: '请输入邮寄地址', trigger: 'onSubmit'}]"></van-field>
<van-field v-model="form.useWay"
readonly
required
is-link
label="用&emsp;&emsp;途"
placeholder="点击选择翻拍用途"
@click="state.templateShow = true"></van-field>
</van-cell-group>
<van-cell-group title=""
insert
style="margin-top: 5px;">
<div class="img_item">
<div class="img_item_label">
<section>
<span style="color: red;">*</span>本人身份证正面照片
</section>
</div>
<div class="img_item_upload">
<van-uploader v-model="image.selfIdCardFront"
style="width: 100%;height: 100%;"
:max-count="1"
:before-read="onBeforeRead">
<div style="height: 100%;display: flex;flex-direction: column;align-items: center;justify-content: center;">
<svg t="1685244688694"
class="icon"
viewBox="0 0 1507 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="5693"
width="64"
height="64">
<path d="M1404.827485 1023.962307v-19.562798h83.245546v-82.77438H1507.730061v102.337178h-102.902576zM1488.073031 19.638184H1404.827485V0.075387H1507.730061V102.337178h-19.65703V19.638184z m-73.363632 61.86719a55.829988 55.829988 0 0 1 16.597595 39.841767v768.533988c-0.012564 31.084368-25.361276 56.288589-56.640393 56.313718H123.483092c-31.272834-0.043975-56.608982-25.235632-56.640393-56.313718V121.347141c0.043975-31.071804 25.380123-56.244613 56.640393-56.282307h1251.208638c15.071018 0 29.281374 5.82989 40.017669 16.44054z m-39.986258 8.4747H123.483092v0.018846c-17.426847 0.018847-31.549252 14.053301-31.568098 31.37335v768.533988c0 17.288638 14.16638 31.398479 31.568098 31.398478h1251.183509c17.401718 0 31.593227-14.084712 31.593227-31.398478V121.347141c0-8.374184-3.285595-16.27092-9.247411-22.201325a32.026699 32.026699 0 0 0-22.289276-9.165742z m-462.326577 647.431852c1.030282-49.158282 10.133202-133.050896 59.354307-175.73222l67.766184 0.615656 63.462871 104.058503 11.961326-77.811436-8.650602-14.10984 0.647068-14.499337a280.846135 280.846135 0 0 1 37.712098 0.050257l0.703607 14.499338-8.625472 14.103558 12.011583 78.439656 49.290208-105.226994 74.965595-2.538012c38.74238 36.405399 63.588515 122.188957 57.494773 178.150871h-418.093546z m315.216099-288.680049c-5.163975 18.337767-11.201178 35.331141-19.85178 49.57919-9.881914 16.446822-22.948908 29.09919-41.418601 35.909105-8.254822 2.965202-29.337914 4.384982-49.623165 4.033178-19.556515-0.245006-39.213546-2.186209-47.034896-5.779632-16.798626-7.65173-28.609178-20.580515-37.511068-36.650405-7.670577-13.732908-13.110969-29.727411-17.904294-46.62027-7.846479-4.083436-13.73919-11.03784-17.728393-20.530258-4.334724-10.315387-6.31362-23.872393-6.062331-39.942282l0.075386-5.484368 4.586013-3.040589c1.155926-0.772712 2.330699-1.520294 3.511754-2.186209-5.163975-63.142479-3.210209-86.487166 20.385767-113.173987 46.004613-37.429399 151.464049-36.103853 198.046626-2.173644 31.744 29.802798 33.949055 63.192736 24.199067 114.719411 1.526577 0.873227 3.028025 1.796712 4.560884 2.814429l4.586012 3.065718 0.05654 5.459239c0.270135 15.743215-1.633374 29.080344-5.792196 39.370601-3.838429 9.391902-9.479853 16.396564-17.081325 20.630773z m-0.571681-54.718037a14.329718 14.329718 0 0 0-5.440393-0.822969l-9.354209 0.59681-1.727607-9.146896a119.035288 119.035288 0 0 0-9.706012-29.652024c-29.834209 5.811043-74.186601 10.89335-109.241325-8.738552-13.513031-7.551215-33.25173 7.921865-49.440982 6.326184a121.623558 121.623558 0 0 0-10.931043 32.064392l-1.809276 9.492417-9.580368-0.917202a14.612417 14.612417 0 0 0-5.584884 0.672196 26.385276 26.385276 0 0 0-2.58827 1.024c0.22616 10.510135 1.702479 19.204712 4.466651 25.738209 2.406086 5.729374 5.741939 9.44216 10.108073 10.811681l5.610013 1.746454 1.551705 5.60373c4.717939 17.269791 9.932172 33.641227 17.357743 46.915534 6.866454 12.313129 15.667828 22.151067 27.773644 27.685693 5.12 2.336982 21.416049 3.637399 38.440834 3.888687 18.099043 0.251288 36.128982-0.672196 42.09708-2.870969 13.412515-4.906405 23.093399-14.44908 30.588073-26.9067 8.02238-13.381104 13.764319-30.374479 18.802651-49.013791l1.457472-5.352442 5.314749-1.846969c4.20908-1.470037 7.494675-5.308466 9.875632-11.088098 2.607117-6.426699 4.03946-15.001914 4.315877-25.28589a16.06989 16.06989 0 0 0-2.355828-0.923485zM332.642945 457.049521h288.887362v49.309056H332.642945v-49.309056z m0-122.741791h288.887362v49.315337H332.642945v-49.315337z m0-122.735509h288.887362v49.309055H332.642945v-49.309055zM201.41389 457.049521h95.929325v49.309056h-95.929325v-49.309056z m0-122.741791h95.929325v49.315337h-95.929325v-49.315337z m0-122.735509h95.929325v49.309055h-95.929325v-49.309055z m254.712147 615.863754H201.41389v-49.334184h254.712147v49.334184z m464.248932 0H485.909988v-49.334184h434.464981v49.334184zM19.68216 102.337178H0V0.075387h102.927706v19.562797H19.68216V102.337178z m0 902.062331h83.245546v19.562798H0v-102.337178h19.68216v82.77438z"
p-id="5694"
fill="#dcdfe6"></path>
</svg>
<span>点击选择照片或拍照</span>
</div>
</van-uploader>
</div>
<div v-if="image.selfIdCardFrontError"
class="img__blank_error">请上传本人身份证正面照片</div>
</div>
<div class="img_item">
<div class="img_item_label">
<section>
<span style="color: red;">*</span>本人身份证背面照片
</section>
</div>
<div class="img_item_upload">
<van-uploader v-model="image.selfIdCardBack"
style="width: 100%;height: 100%;"
:max-count="1"
:before-read="onBeforeRead">
<div style="height: 100%;display: flex;flex-direction: column;align-items: center;justify-content: center;">
<svg t="1685244916978"
class="icon"
viewBox="0 0 1499 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="9485"
width="64"
height="64">
<path d="M1396.224 1024v-19.456h82.432V921.6h19.456v102.4h-101.888zM1479.168 19.456h-82.432V0h102.4v102.4H1479.68V19.456zM1405.952 81.92c10.24 10.24 16.384 24.576 16.384 39.424v769.024c0 30.72-25.088 55.808-55.808 55.808H122.88c-30.72 0-55.808-25.088-55.808-55.808V121.344c0-30.72 25.088-55.808 55.808-55.808h1243.648c14.336 0 28.672 5.632 39.424 16.384z m-39.424 7.168H122.88c-17.408 0-31.744 14.336-31.744 31.744v768.512c0 17.408 14.336 31.744 31.744 31.744h1243.648c16.384 0 30.208-12.8 31.744-29.184V121.344c0-8.192-3.584-16.384-9.216-22.528-6.144-6.144-14.336-9.728-22.528-9.728zM465.92 677.888h737.28v49.152H465.92v-49.152z m143.36-253.952h593.408v49.152H609.28v-49.152z m0-122.88h593.408v49.152H609.28v-49.152z m0-123.904h593.408v49.152H609.28v-49.152zM485.376 423.936h95.232v49.152H485.376v-49.152z m0-122.88h95.232v49.152H485.376v-49.152z m0-122.88h95.232v49.152H485.376v-49.152zM384 409.6l20.48 38.4c-9.216-6.656-20.992-8.192-31.232-3.584-10.752 7.168-18.944 17.92-23.04 30.72l-16.384-25.088v12.8h-107.52v-12.8l-14.848 25.088c-4.096-12.288-12.288-23.04-23.04-30.72-15.36-8.192-31.744 6.656-31.744 6.656l22.016-41.472c-49.152-54.784-46.08-138.752 7.168-189.44 53.248-51.2 137.216-51.2 190.464 0 53.248 51.2 56.32 134.656 7.168 189.44 0-1.024 0.512 0 0.512 0zM216.064 282.624l-3.584-9.728-5.12 8.704h-8.192l7.68 6.656v9.728l8.192-5.12 8.192 5.12-4.608-8.704 7.68-6.656h-10.24z m-2.048 117.76h140.8l-14.336-22.528h-112.64c0 0.512-13.824 22.528-13.824 22.528z m93.696-22.528l-4.608-14.848h-39.424l-5.12 14.848h49.152zM238.592 308.224l7.68 6.656v9.728l8.192-5.12 8.192 5.12-4.608-8.704 8.192-6.656h-10.752l-3.584-11.264-3.584 10.24h-9.728z m51.2-53.248L281.6 233.984l-8.192 20.992H250.88l16.896 14.848-5.12 22.528 18.944-12.288 18.944 12.288-5.12-22.528 16.896-14.848h-22.528z m35.328 54.784l-4.096-11.264-3.584 10.24h-10.24l7.68 6.656v9.728l8.192-5.12 8.192 5.12-6.656-8.704 7.68-6.656h-7.168z m31.744-32.256l-3.584-10.24-3.584 9.728h-10.24l7.68 6.656v9.728l8.192-5.12 8.192 5.12-4.608-9.728 7.68-6.656c0.512 0.512-9.728 0.512-9.728 0.512zM417.28 727.04H200.192v-49.152h217.088v49.152z m0 96.768H200.192v-49.152h217.088v49.152z m785.408 0H465.92v-49.152h736.768v49.152zM19.456 102.4H0V0h102.4v19.456H19.456V102.4z m0 902.144H102.4v19.456H0v-102.4h19.456v82.944z"
p-id="9486"
fill="#dcdfe6"></path>
</svg>
<span>点击选择照片或拍照</span>
</div>
</van-uploader>
</div>
<div v-if="image.selfIdCardBackError"
class="img__blank_error">请上传本人身份证背面照片</div>
</div>
</van-cell-group>
<van-cell-group v-if="form.getWay !== '3'"
title=""
insert
style="margin-top: 5px;">
<van-field v-model="trust.value"
class="my_filed_title"
readonly
required
is-link
label="是否委托他人代领"
placeholder=""
@click="trust.popupShow = true"></van-field>
<van-field v-if="trust.value === ''"
class="my_filed_title"
v-model="trust.relation"
readonly
required
is-link
label="本人与委托人关系"
placeholder=""
@click="trust.relationShow = true"></van-field>
<template v-if="trust.value === '是'">
<div class="img_item">
<div class="img_item_label">
<section>
<span style="color: red;">*</span>委托人身份证正面照片
</section>
<div></div>
</div>
<div class="img_item_upload">
<van-uploader v-model="image.trustIdCardFront"
style="width: 100%;height: 100%;"
:max-count="1"
:before-read="onBeforeRead">
<div style="height: 100%;display: flex;flex-direction: column;align-items: center;justify-content: center;">
<svg t="1685244688694"
class="icon"
viewBox="0 0 1507 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="5693"
width="64"
height="64">
<path d="M1404.827485 1023.962307v-19.562798h83.245546v-82.77438H1507.730061v102.337178h-102.902576zM1488.073031 19.638184H1404.827485V0.075387H1507.730061V102.337178h-19.65703V19.638184z m-73.363632 61.86719a55.829988 55.829988 0 0 1 16.597595 39.841767v768.533988c-0.012564 31.084368-25.361276 56.288589-56.640393 56.313718H123.483092c-31.272834-0.043975-56.608982-25.235632-56.640393-56.313718V121.347141c0.043975-31.071804 25.380123-56.244613 56.640393-56.282307h1251.208638c15.071018 0 29.281374 5.82989 40.017669 16.44054z m-39.986258 8.4747H123.483092v0.018846c-17.426847 0.018847-31.549252 14.053301-31.568098 31.37335v768.533988c0 17.288638 14.16638 31.398479 31.568098 31.398478h1251.183509c17.401718 0 31.593227-14.084712 31.593227-31.398478V121.347141c0-8.374184-3.285595-16.27092-9.247411-22.201325a32.026699 32.026699 0 0 0-22.289276-9.165742z m-462.326577 647.431852c1.030282-49.158282 10.133202-133.050896 59.354307-175.73222l67.766184 0.615656 63.462871 104.058503 11.961326-77.811436-8.650602-14.10984 0.647068-14.499337a280.846135 280.846135 0 0 1 37.712098 0.050257l0.703607 14.499338-8.625472 14.103558 12.011583 78.439656 49.290208-105.226994 74.965595-2.538012c38.74238 36.405399 63.588515 122.188957 57.494773 178.150871h-418.093546z m315.216099-288.680049c-5.163975 18.337767-11.201178 35.331141-19.85178 49.57919-9.881914 16.446822-22.948908 29.09919-41.418601 35.909105-8.254822 2.965202-29.337914 4.384982-49.623165 4.033178-19.556515-0.245006-39.213546-2.186209-47.034896-5.779632-16.798626-7.65173-28.609178-20.580515-37.511068-36.650405-7.670577-13.732908-13.110969-29.727411-17.904294-46.62027-7.846479-4.083436-13.73919-11.03784-17.728393-20.530258-4.334724-10.315387-6.31362-23.872393-6.062331-39.942282l0.075386-5.484368 4.586013-3.040589c1.155926-0.772712 2.330699-1.520294 3.511754-2.186209-5.163975-63.142479-3.210209-86.487166 20.385767-113.173987 46.004613-37.429399 151.464049-36.103853 198.046626-2.173644 31.744 29.802798 33.949055 63.192736 24.199067 114.719411 1.526577 0.873227 3.028025 1.796712 4.560884 2.814429l4.586012 3.065718 0.05654 5.459239c0.270135 15.743215-1.633374 29.080344-5.792196 39.370601-3.838429 9.391902-9.479853 16.396564-17.081325 20.630773z m-0.571681-54.718037a14.329718 14.329718 0 0 0-5.440393-0.822969l-9.354209 0.59681-1.727607-9.146896a119.035288 119.035288 0 0 0-9.706012-29.652024c-29.834209 5.811043-74.186601 10.89335-109.241325-8.738552-13.513031-7.551215-33.25173 7.921865-49.440982 6.326184a121.623558 121.623558 0 0 0-10.931043 32.064392l-1.809276 9.492417-9.580368-0.917202a14.612417 14.612417 0 0 0-5.584884 0.672196 26.385276 26.385276 0 0 0-2.58827 1.024c0.22616 10.510135 1.702479 19.204712 4.466651 25.738209 2.406086 5.729374 5.741939 9.44216 10.108073 10.811681l5.610013 1.746454 1.551705 5.60373c4.717939 17.269791 9.932172 33.641227 17.357743 46.915534 6.866454 12.313129 15.667828 22.151067 27.773644 27.685693 5.12 2.336982 21.416049 3.637399 38.440834 3.888687 18.099043 0.251288 36.128982-0.672196 42.09708-2.870969 13.412515-4.906405 23.093399-14.44908 30.588073-26.9067 8.02238-13.381104 13.764319-30.374479 18.802651-49.013791l1.457472-5.352442 5.314749-1.846969c4.20908-1.470037 7.494675-5.308466 9.875632-11.088098 2.607117-6.426699 4.03946-15.001914 4.315877-25.28589a16.06989 16.06989 0 0 0-2.355828-0.923485zM332.642945 457.049521h288.887362v49.309056H332.642945v-49.309056z m0-122.741791h288.887362v49.315337H332.642945v-49.315337z m0-122.735509h288.887362v49.309055H332.642945v-49.309055zM201.41389 457.049521h95.929325v49.309056h-95.929325v-49.309056z m0-122.741791h95.929325v49.315337h-95.929325v-49.315337z m0-122.735509h95.929325v49.309055h-95.929325v-49.309055z m254.712147 615.863754H201.41389v-49.334184h254.712147v49.334184z m464.248932 0H485.909988v-49.334184h434.464981v49.334184zM19.68216 102.337178H0V0.075387h102.927706v19.562797H19.68216V102.337178z m0 902.062331h83.245546v19.562798H0v-102.337178h19.68216v82.77438z"
p-id="5694"
fill="#dcdfe6"></path>
</svg>
<span>点击选择照片或拍照</span>
</div>
</van-uploader>
</div>
<div v-if="image.trustIdCardFrontError"
class="img__blank_error">请上传委托人身份证正面照片</div>
</div>
<div class="img_item">
<div class="img_item_label">
<section>
<span style="color: red;">*</span>委托人身份证背面照片
</section>
<div></div>
</div>
<div class="img_item_upload">
<van-uploader v-model="image.trustIdCardBack"
style="width: 100%;height: 100%;"
:max-count="1"
:before-read="onBeforeRead">
<div style="height: 100%; display: flex;flex-direction: column;align-items: center;justify-content: center;">
<svg t="1685244916978"
class="icon"
viewBox="0 0 1499 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="9485"
width="64"
height="64">
<path d="M1396.224 1024v-19.456h82.432V921.6h19.456v102.4h-101.888zM1479.168 19.456h-82.432V0h102.4v102.4H1479.68V19.456zM1405.952 81.92c10.24 10.24 16.384 24.576 16.384 39.424v769.024c0 30.72-25.088 55.808-55.808 55.808H122.88c-30.72 0-55.808-25.088-55.808-55.808V121.344c0-30.72 25.088-55.808 55.808-55.808h1243.648c14.336 0 28.672 5.632 39.424 16.384z m-39.424 7.168H122.88c-17.408 0-31.744 14.336-31.744 31.744v768.512c0 17.408 14.336 31.744 31.744 31.744h1243.648c16.384 0 30.208-12.8 31.744-29.184V121.344c0-8.192-3.584-16.384-9.216-22.528-6.144-6.144-14.336-9.728-22.528-9.728zM465.92 677.888h737.28v49.152H465.92v-49.152z m143.36-253.952h593.408v49.152H609.28v-49.152z m0-122.88h593.408v49.152H609.28v-49.152z m0-123.904h593.408v49.152H609.28v-49.152zM485.376 423.936h95.232v49.152H485.376v-49.152z m0-122.88h95.232v49.152H485.376v-49.152z m0-122.88h95.232v49.152H485.376v-49.152zM384 409.6l20.48 38.4c-9.216-6.656-20.992-8.192-31.232-3.584-10.752 7.168-18.944 17.92-23.04 30.72l-16.384-25.088v12.8h-107.52v-12.8l-14.848 25.088c-4.096-12.288-12.288-23.04-23.04-30.72-15.36-8.192-31.744 6.656-31.744 6.656l22.016-41.472c-49.152-54.784-46.08-138.752 7.168-189.44 53.248-51.2 137.216-51.2 190.464 0 53.248 51.2 56.32 134.656 7.168 189.44 0-1.024 0.512 0 0.512 0zM216.064 282.624l-3.584-9.728-5.12 8.704h-8.192l7.68 6.656v9.728l8.192-5.12 8.192 5.12-4.608-8.704 7.68-6.656h-10.24z m-2.048 117.76h140.8l-14.336-22.528h-112.64c0 0.512-13.824 22.528-13.824 22.528z m93.696-22.528l-4.608-14.848h-39.424l-5.12 14.848h49.152zM238.592 308.224l7.68 6.656v9.728l8.192-5.12 8.192 5.12-4.608-8.704 8.192-6.656h-10.752l-3.584-11.264-3.584 10.24h-9.728z m51.2-53.248L281.6 233.984l-8.192 20.992H250.88l16.896 14.848-5.12 22.528 18.944-12.288 18.944 12.288-5.12-22.528 16.896-14.848h-22.528z m35.328 54.784l-4.096-11.264-3.584 10.24h-10.24l7.68 6.656v9.728l8.192-5.12 8.192 5.12-6.656-8.704 7.68-6.656h-7.168z m31.744-32.256l-3.584-10.24-3.584 9.728h-10.24l7.68 6.656v9.728l8.192-5.12 8.192 5.12-4.608-9.728 7.68-6.656c0.512 0.512-9.728 0.512-9.728 0.512zM417.28 727.04H200.192v-49.152h217.088v49.152z m0 96.768H200.192v-49.152h217.088v49.152z m785.408 0H465.92v-49.152h736.768v49.152zM19.456 102.4H0V0h102.4v19.456H19.456V102.4z m0 902.144H102.4v19.456H0v-102.4h19.456v82.944z"
p-id="9486"
fill="#dcdfe6"></path>
</svg>
<span>点击选择照片或拍照</span>
</div>
</van-uploader>
</div>
<div v-if="image.trustIdCardBackError"
class="img__blank_error">请上传委托人身份证背面照片</div>
</div>
<div class="img_item">
<div class="img_item_label">
<section>
<span style="color: red;">*</span>委托书
</section>
<div style="width: calc(100% - 80px);display: flex;flex-direction: row;justify-content: flex-end;flex-wrap: nowrap;font-size: 13px;">
<div style="margin-right: 10px;">
<!-- <a href=""
style="color: var(--color-primary);border-bottom: 1px solid var(--color-primary);">下载模板</a> -->
</div>
<!-- <div style="background-color: var(--color-primary);width: 45px;line-height: 24px;text-align: center;border-radius: 4px;color: #fff;"
@click.stop="onExample">示例</div> -->
</div>
</div>
<div class="img_item_upload">
<van-uploader v-model="image.trustCertify"
style="width: 100%;height: 100%;"
:max-count="1"
:before-read="onBeforeRead">
<div style="height: 100%; display: flex;flex-direction: column;align-items: center;justify-content: center;">
<svg t="1685250803648"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="15083"
width="64"
height="64">
<path d="M608.20558965 898.406c18.504 0 12.996-1.728 12.996 15.696s5.508 31.554-12.996 31.554H153.14758964c-55.494 0-82.368-42.39-82.368-94.68V156.68C70.77958964 104.39 97.67158965 71.198 153.14758964 71.198h569.304c83.664 0 91.224 43.902 91.224 85.482 0 17.424-9.486 31.554-27.99 31.554S755.94958964 174.104 755.94958964 156.68s-4.788-31.554-33.47999999-31.554H153.14758964c-24.246 0-33.48 14.13-33.48 31.554v710.172c0 17.424 14.994 31.554 33.48 31.554h455.058z m230.88599999-343.71v153.486c0 44.64-45 44.64-45 0v-153.486c0-31.932 45-33.336 45 0z"
p-id="15084"
fill="#dcdfe6"></path>
<path d="M246.78358965 253.934c-18.504 0-26.658-10.08-26.65800001-22.5s8.154-22.5 26.658-22.5h247.03200001c18.504 0 27.702 10.08 27.702 22.5s-9.216 22.5-27.702 22.5H246.78358965z m1.51199999 167.436c-18.504 0-28.17-10.08-28.17-22.5s9.684-22.5 28.17-22.5h142.75800001c18.504 0 30.006 10.08 30.006 22.5s-11.52 22.5-30.006 22.5H248.29558965z m353.44800001 489.348c0 18.504-5.166 28.242-23.67 28.242s-23.652-9.756-23.652-28.242l0.594-132.48a100.44 100.44 0 0 1 100.458-100.458l133.686 1.206c12.33 0 20.682 6.75 25.074 20.232-4.374 17.118-12.744 25.668-25.074 25.668l-133.686-1.206c-48.51 0-53.136 36.072-53.136 54.558l-0.594 132.48z"
p-id="15085"
fill="#dcdfe6"></path>
<path d="M601.34758965 944.54c-3.762-2.358-4.266-7.146-5.74200001-9.54-1.476-2.376 0.702-23.886 9.342-32.166l188.76600001-181.044c8.568-8.622 21.132-11.916 32.832-8.622 11.7 3.294 12.474-4.482 12.474-3.906-0.216 19.98-3.924 34.596-12.474 42.408l-188.748 181.08c-8.622 8.28-24.948 15.138-36.45 11.79z m290.736-619.218a32.85 32.85 0 0 0 3.47399999-46.476c-12.492-14.382-33.444-15.966-47.412-4.05L419.56558964 637.64l-15.91199999 54.252 61.056-4.752 427.374-361.818z m32.65199999 39.366L503.94958965 724.22c-4.482 3.816-10.062 6.12-15.948 6.57l-100.458 7.776a27.972 27.972 0 0 1-28.99800001-35.784l27.03600001-92.178c1.53-5.238 4.572-9.9 8.73-13.428L814.88158965 237.86a83.898 83.898 0 0 1 117.72 8.838c30.528 35.172 26.856 87.786-7.866 117.99z"
p-id="15086"
fill="#dcdfe6"></path>
</svg>
<span>点击选择照片或拍照</span>
</div>
</van-uploader>
</div>
<div v-if="image.trustCertifyError"
class="img__blank_error">请上传委托书照片</div>
</div>
</template>
</van-cell-group>
<div class="footer">
<van-button type="primary"
:loading="state.loading"
loading-text="提交中..."
block
icon="sign"
round
@click="onSubmit">&emsp;</van-button>
</div>
</van-form>
</div>
<!-- 获取方式 -->
<van-popup v-model:show="state.getWayShow"
round
lock-scroll
position="bottom">
<van-picker title="获取方式"
:columns="state.getWayColumns"
:columns-field-names="state.getWayColumnFieldName"
@confirm="onGetWayConfirm"
@cancel="state.getWayShow = false" />
</van-popup>
<!-- 住院记录 -->
<van-popup v-model:show="state.treatShow"
position="bottom">
<div class="treat">
<div class="head">
<div class="head_cancel"
@click="state.treatShow = false"> </div>
<div class="head_title">选择住院记录</div>
<div class="head_confirm"
@click="onIspConfirm"> </div>
</div>
<div class="treat_cont">
<template v-if="state.treatRecord.length > 0">
<section v-for="item in state.treatRecord"
:key="item.ipsId">
<div class="cont_item"
:class="[state.currTreat.ipsId === item.ipsId ? 'border_click' : 'border_default']"
@click="state.currTreat = item">
<div><span>患者姓名</span><span>{{ item.ptName }}&emsp;&emsp;{{ item.ptId }}</span></div>
<div><span>住院编号</span><span>{{ item.ipsId }}</span></div>
<div><span>入院科室</span><span>{{ item.inHospDeptName }}</span></div>
<div><span>入院时间</span><span>{{ format(item.inHospTime, 'yyyy-MM-dd') }}</span></div>
<div class="item_checked"
v-if="state.currTreat.ipsId === item.ipsId">
<van-icon name="passed"
color="var(--color-primary)"
size="20" />
</div>
</div>
</section>
</template>
<van-empty v-else
image-size="100"
description="暂无住院记录" />
</div>
</div>
</van-popup>
<!-- 模板 -->
<van-popup v-model:show="state.templateShow"
round
lock-scroll
position="bottom">
<!-- :columns-field-names="{text: 'templatename'}" -->
<van-picker title="用 途"
:columns="state.templateList"
value-key="templateno"
@confirm="onTemplateConfirm"
@cancel="state.templateShow = false">
<template #option="option">
<div style="margin: 5px 0;overflow: hidden">
<div style="text-align: center;padding:8px 0 0;">{{ option.Borrow_UseTo_Name }}</div>
</div>
</template>
</van-picker>
</van-popup>
<!-- 是否委托他人 -->
<van-popup v-model:show="trust.popupShow"
round
lock-scroll
position="bottom">
<van-picker title="是否委托他人代领"
:columns="['否', '是']"
@confirm="confirmTrust"
@cancel="trust.popupShow = false">
</van-picker>
</van-popup>
<!-- 本人与委托人关系 -->
<van-popup v-model:show="trust.relationShow"
round
lock-scroll
position="bottom">
<van-picker title="本人与委托人关系"
:columns="trust.relations"
@confirm="confirmRelation"
@cancel="trust.relationShow = false">
</van-picker>
</van-popup>
</div>
</template>
<script>
import { reactive, ref, watch } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import { axios } from 'axios'
import { store } from 'vue-helper'
import ImageUtil from '@/utils/image-util.mjs'
import { format } from '@/utils/date-util.mjs'
import { getQueryVar } from '@/utils/url-util.mjs'
import { Back, GoBind } from '@/utils/common-util.mjs'
export default {
name: 'ptint-reserve',
components: {
'select-patient-date': VueConfig.vueLoader('@/components/patient/select-patient-date.vue')
},
setup(props, context) {
const route = useRoute();
const router = useRouter();
const formRef = ref(null)
const cacheKey = "medical-record-treat-record"
console.log(encodeURI(`532624199901202110_张丁_http://127.0.0.1:5500/medical-record.html#/medical-record-apply`))
const state = reactive({
getWayShow: false, //
getWayColumns: [ //
{
code: '1',
label: '现场自取'
}, {
code: '2',
label: '邮寄'
}
// , {
// code: '3',
// label: ''
// }
],
getWayColumnFieldName: { //
text: 'label'
},
treatShow: false, //
treatRecord: [], //
currTreat: '', //
templateShow: false, //
templateList: [], //
loading: false
})
const creatForm = () => ({
ipsID: '', //
ptId: '', // ID
ptName: '', //
deptID: '', // ID
deptName: '', //
ptIdcID: '', //
phone: '', //
useWay: '', // (templateName)
useWayId: '', // id (templateNo)
getWay: '', // :1. 2. 3.
address: '', //
showCardNo: '', //
})
const form = reactive(creatForm())
const formLabel = reactive({
getWayLabel: ''
})
//
const user = store.getters.getPatient
setTimeout(() => {
if (!user || !user.patientId) {
vant.Dialog.alert({
title: '提示',
message: '您还未绑定就诊人,请前往绑定!',
showCancelButton: true,
confirmButtonText: '前往绑定',
cancelButtonText: '退出'
}).then(() => {
GoBind()
}).catch(() => {
Back(false)
})
}
}, 100);
//
const orderId = getQueryVar("orderId", null)
const registerOrderId = getQueryVar("registerOrderId", null)
const isChecked = ref(false) //
if (orderId && registerOrderId) {
axios.RGet('/wx/healthCode/checkUniformVerifyResult.do', {
orderId: orderId,
registerOrderId: registerOrderId
}).then(response => {
if (response.code === 200) {
try {
state.currTreat = JSON.parse(sessionStorage.getItem(cacheKey))
} catch (error) {
console.log(error)
}
if (state.currTreat.ipsId) {
isChecked.value = true
setTimeout(() => {
onIspConfirm()
}, 200);
} else {
vant.Toast.fail('数据丢失,请重新选择住院记录验证!')
}
} else {
vant.Toast.fail('验证未通过,请重新选择住院记录验证!')
}
})
} else {
if (sessionStorage.getItem(cacheKey)) {
sessionStorage.removeItem(cacheKey)
}
}
/**
* 判断照片是否上传
*/
const selfImage = [{
imgVar: 'selfIdCardFront',
errVar: 'selfIdCardFrontError'
}, {
imgVar: 'selfIdCardBack',
errVar: 'selfIdCardBackError'
}]
const trustImage = [{
imgVar: 'trustIdCardFront',
errVar: 'trustIdCardFrontError'
}, {
imgVar: 'trustIdCardBack',
errVar: 'trustIdCardBackError'
}, {
imgVar: 'trustCertify',
errVar: 'trustCertifyError'
}]
function isImgBlank() {
let checked = 0
let images = []
if (trust.value === '否') {
images = selfImage
} else {
images = [...selfImage, ...trustImage]
}
images.forEach(item => {
console.log('trust[item.imgVar]', image[item.imgVar])
if (image[item.imgVar].length === 0) {
checked++
image[item.errVar] = true
} else {
if (image[item.imgVar][0].content) {
image[item.errVar] = false
} else {
checked++
image[item.errVar] = true
}
}
})
return checked !== 0
}
/**
* 提交预约
*/
function onSubmit() {
patient.value = store.getters.getPatient
if (!patient.value || (patient.value && !patient.value.patientId)) return vant.Toast.fail('参数缺失,无法查询住院记录!')
state.loading = true
formRef.value.validate().then(() => {
if (isImgBlank()) {
state.loading = false
return
}
vant.Dialog.confirm({
title: '提示',
message: '确定提交打印预约申请?'
}).then(() => {
const params = {
openId: patient.value.openid,
patientId: patient.value.patientId,
zyNum: form.ipsID,
applyName: patient.value.name,
useToNo: form.useWayId,
useToName: form.useWay,
getWay: form.getWay,
address: form.address,
phone: form.phone,
ptImg1: image.selfIdCardFront.length > 0 ? image.selfIdCardFront[0].content : '', //
ptImg2: image.selfIdCardBack.length > 0 ? image.selfIdCardBack[0].content : '', //
relationship: trust.relation,
applyPtImg1: image.trustIdCardFront.length > 0 ? image.trustIdCardFront[0].content : '', //
applyPtImg2: image.trustIdCardBack.length > 0 ? image.trustIdCardBack[0].content : '', //
applicationImg: image.trustCertify.length > 0 ? image.trustCertify[0].content : '', //
}
axios.post('/wx/xbd/addMRReserve', params).then(response => {
if (response.code === 200) {
vant.Toast.success('预约成功')
router.push({ path: '/medical-record-history' })
} else {
vant.Toast.fail(response.message)
}
state.loading = false
})
}).catch(() => {
state.loading = false
})
}).catch(error => {
console.log('error', error)
state.loading = false
vant.Toast.fail('提交内容出现错误,请检查!')
})
}
/**
* 选择获取方式
* @param {Object} value 获取方式
*/
function onGetWayConfirm(value) {
form.getWay = value.code
formLabel.getWayLabel = value.label
state.getWayShow = false
trust.value = '否'
trust.reactive = ''
}
/**
* 选择住院记录
* @param {Object} value 住院记录
*/
function onIspConfirm() {
state.treatShow = false
if (state.currTreat) {
form.ipsID = state.currTreat.ipsId.trim()
form.ptId = state.currTreat.ptId.trim()
form.ptName = patient.value.name
form.deptID = state.currTreat.inHospDeptCode
form.deptName = state.currTreat.inHospDeptName.trim()
form.phone = patient.value.tel
form.ptIdcID = patient.value.idCardNo
form.showCardNo = patient.value.showCardNo
if (!(orderId && registerOrderId) || !isChecked.value) {
vant.Dialog.alert({
title: '提示',
message: '请先前往人脸识别认证,不认证将无法进行申请!',
showCancelButton: true,
confirmButtonText: '前往识别',
cancelButtonText: '退出'
}).then(() => {
sessionStorage.setItem(cacheKey, JSON.stringify(state.currTreat))
const verifyInfo = encodeURI(`${form.ptIdcID}_${form.ptName}_http://wx.hhzyy.com/wx/web/medical-record.html#/medical-record-apply`)
window.location.href = `health-auth.html?verifyInfo=${verifyInfo}`
}).catch(() => {
Back(false)
})
}
}
}
const patient = ref(null)
/**
* 获取住院记录
*/
function getMedicalRecordList() {
patient.value = store.getters.getPatient
const idCard = patient.value.idCardNo
patient.value.showCardNo = idCard.length === 18 ? idCard.substring(0, 3) + '********' + idCard.substring(idCard.length - 4) : idCard
if (!patient.value || (patient.value && !patient.value.patientId)) return vant.Toast.fail('患者参数缺失,无法查询住院记录!')
axios.RGet('/wx/xbd/getMedicalRecordList', {
patientId: patient.value.patientId,
flagSh: 0
}).then(response => {
if (response.code === 200) {
state.treatRecord = response.data ? response.data : []
}
})
}
getMedicalRecordList()
watch(() => state.treatShow, () => {
if (state.treatShow && state.treatRecord.length === 0) {
getMedicalRecordList()
}
})
watch(() => state.treatShow, (newVal) => {
if (newVal && !form.ipsID) {
state.currTreat = ''
}
})
watch(() => store.getters.getPatient, () => {
getMedicalRecordList()
Object.assign(form, creatForm())
})
/**
* 获取模板
*/
function getTemplates() {
axios.RGet('/wx/xbd/getMRTemplateList').then(response => {
if (response.code === 200) {
state.templateList = response.data ? response.data : []
}
})
}
getTemplates()
function onTemplateConfirm(value) {
state.templateShow = false
form.useWayId = value.Borrow_UseTo_No
form.useWay = value.Borrow_UseTo_Name
}
function onExample() {
console.log('look example')
}
//
const trust = reactive({
popupShow: false, //
value: '否', //
relation: '', //
relationShow: false, //
relations: ['本人', '配偶', '亲属', '朋友', '公检法', '保险', '其他'], //
})
//
const image = reactive({
selfIdCardFront: [], //
selfIdCardFrontError: false, //
selfIdCardBack: [], //
selfIdCardBackError: false, //
trustIdCardFront: [], //
trustIdCardFrontError: false, //
trustIdCardBack: [], //
trustIdCardBackError: false, //
trustCertify: [], //
trustCertifyError: false, //
})
function confirmTrust(val) {
trust.value = val
trust.popupShow = false
}
/**
* 图片压缩
* @param {*} file
*/
function onBeforeRead(file) {
return ImageUtil.compressImage(file)
}
function confirmRelation(value) {
trust.relation = value
trust.relationShow = false
}
return {
state,
formRef,
form,
formLabel,
trust,
image,
onSubmit,
onGetWayConfirm,
onIspConfirm,
onTemplateConfirm,
onExample,
confirmTrust,
onBeforeRead,
confirmRelation,
format
}
},
}
</script>
<style scoped>
.ptint-reserve {
}
.img_item {
border-bottom: 1px solid var(--border-c);
}
.img_item_label {
line-height: 25px;
padding: 5px 16px;
color: #646566;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.img_item_upload {
height: 150px;
margin: 5px;
border: 1px solid var(--border-d);
border-radius: 5px;
}
.img_item_upload span {
line-height: 30px;
color: var(--text-c);
}
.img_item_upload >>> .van-uploader__wrapper,
.img_item_upload >>> .van-uploader__input-wrapper {
width: 100%;
height: 100%;
}
.img_item_upload >>> .van-uploader__preview,
.img_item_upload >>> .van-uploader__preview-image {
width: 100%;
height: 100%;
margin: auto;
}
.img_item_upload >>> .van-uploader__preview-image img {
object-fit: contain !important;
}
.img__blank_error {
color: red;
font-size: 12px;
text-align: right;
padding: 0px 10px 5px;
}
.ptint-reserve >>> .van-field__control {
text-align: right;
}
.print-reserve >>> .van-field__value .van-field__error-message {
text-align: right;
}
.footer {
margin: 10px 5px;
}
.treat {
width: 100%;
height: 65vh;
box-sizing: border-box;
background-color: #fff;
border-radius: 8px 8px 0 0;
padding: 8px 5px;
}
.treat .head {
display: flex;
flex-direction: row;
justify-content: space-between;
padding: 5px 10px;
}
.head_cancel {
color: var(--text-c);
}
.head_title {
text-align: center;
}
.head_confirm {
color: var(--color-primary);
}
.treat_cont {
height: calc(100% - 40px);
overflow: auto;
padding: 8px;
}
.cont_item {
padding: 8px 5px 5px;
margin-bottom: 5px;
border-radius: 5px;
font-size: 13px;
line-height: 20px;
position: relative;
overflow: hidden;
}
.cont_item div {
padding: 3px 0px;
}
.cont_item div span:nth-child(1) {
color: var(--text-c);
}
.cont_item div span:nth-child(2) {
color: var(--text-a);
}
.border_default {
border: #e2e2e2 solid 1px;
}
.border_click {
border: var(--color-primary) solid 1px;
}
.item_checked {
position: absolute;
top: 8px;
right: 10px;
width: 20px;
height: 20px;
}
.treat_filed >>> .van-field__control {
text-align: right;
}
.ptint-reserve >>> .van-popup .van-picker .van-picker-column__item {
/* height: 50px !important; */
}
.ptint-reserve .my_filed_title >>> .van-field__label {
width: 10em;
}
</style>

@ -0,0 +1,224 @@
<!-- 红河州人民医院 -->
<template>
<div class="history">
<select-patient-date :show-code="false"
:days="0"
:show-navbar="false"
:show-date="false"></select-patient-date>
<section v-if="state.recordList.length > 0">
<section v-for="(item, k) in state.recordList"
:key="k"
:i="item.setup = getSetup(item)">
<div class="record_item">
<div style="height: 50px;margin-right: 40px;padding: 8px 8px 0px;">
<div style="margin: 5px 0;">
<span style="color: var(--text-c);">申请时间</span>{{ item.baBorrowOperDate }}
</div>
<div style="margin: 5px 0;">
<span style="color: var(--text-c);">&ensp;&ensp;</span>{{ item.baBorrowApplyName }}
</div>
</div>
<div style="padding: 0 8px 8px;">
<div><span style="color: var(--text-c);line-height: 20px;">联系电话</span>{{ item.baBorrowPhone}}</div>
<div><span style="color: var(--text-c);line-height: 20px;">&ensp;&ensp;</span>{{ item.zyNum }}</div>
<div><span style="color: var(--text-c);line-height: 20px;">&emsp;&emsp;</span>{{ item.baBorrowUsetoName }}</div>
<!-- <div><span style="color: var(--text-c);line-height: 20px;">住院科室</span>{{ item.deptName }}</div> -->
<div>
<span style="color: var(--text-c);line-height: 20px;">获取方式</span>
<span>{{ item.baBorrowGetway === 1 ? '现场自取': item.baBorrowGetway === 2 ? '邮寄' : '电子版' }}</span>
<span v-if="item.baBorrowGetway === 2 && item.baBorrowPrintMoney"
style="color: red;">&ensp;打印费用{{ item.baBorrowPrintMoney }}</span>
</div>
<div v-if="item.baBorrowGetway === 2"><span style="color: var(--text-c);line-height: 20px;">邮寄地址</span>{{ item.baBorrowAddress }}</div>
<div><span style="color: var(--text-c);line-height: 20px;">&emsp;&emsp;</span>{{ item.baBorrowNote }}</div>
<!-- <div><span style="color: var(--text-c);line-height: 20px;">&emsp;&emsp;</span>{{ item.pages }}</div> -->
<!-- <van-steps :active="item.setup">
<van-step>申请</van-step>
<van-step>审核</van-step>
<van-step>复印成功</van-step>
<van-step>完成</van-step>
</van-steps> -->
</div>
<div style="display: flex;flex-direction: row;justify-content: space-between;align-items: center;">
<div v-if="item.baBorrowIsApproved && item.baBorrowGetway === 2 && item.baBorrowPrintMoney && !item.baBorrowIsPay"
style="flex: 1;text-align: center;line-height: 35px;background-color: var(--color-success);color: #fdfdfd;padding: 0 5px 5px;"
@click="toPay(item)">
&emsp;
</div>
<!-- <div style="flex: 1;text-align: center;line-height: 35px;background-color: var(--color-primary);color: #fdfdfd;padding: 0 5px 5px;"
@click="onOpenDetail(item)">
&emsp;
</div> -->
</div>
<div v-if="item.baBorrowIsApproved === null || item.baBorrowIsApproved === undefined"
class="recipe_tag">待审核</div>
<section v-else-if="item.baBorrowIsApproved">
<div v-if="item.baBorrowGetway === 2 && item.baBorrowPrintMoney && item.baBorrowIsPay"
class="recipe_tag"
style="background-color: var(--color-success);color: #fff;">已支付</div>
<div v-else
class="recipe_tag"
style="background-color: var(--color-primary);color: #fff;">已审核</div>
</section>
<div v-else-if="!item.baBorrowIsApproved"
class="recipe_tag"
style="background-color: var(--color-danger);color: #fff;"> </div>
</div>
</section>
</section>
<section v-else>
<van-empty image="error"
description="您还没有申请过病案复印">
<template #image>
<div>
<svg t="1693447354505"
class="icon"
viewBox="0 0 1567 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="8381"
width="120"
height="120">
<path d="M156.662278 699.758173h21.097186A10.444152 10.444152 0 0 1 187.994733 710.202325c0 5.765172-4.490985 10.444152-10.235269 10.444152H156.662278v21.097186A10.444152 10.444152 0 0 1 146.218126 751.978932a10.277045 10.277045 0 0 1-10.444152-10.235269V720.646477H114.676787A10.444152 10.444152 0 0 1 104.441518 710.202325c0-5.765172 4.490985-10.444152 10.235269-10.444152H135.773974v-21.097187A10.444152 10.444152 0 0 1 146.218126 668.425717c5.765172 0 10.444152 4.490985 10.444152 10.235269v21.097187z m1378.628042-83.553215v-21.097186A10.277045 10.277045 0 0 0 1524.846168 584.872503a10.444152 10.444152 0 0 0-10.444152 10.235269v21.097186h-21.097186a10.277045 10.277045 0 0 0-10.235269 10.444152c0 5.598065 4.595427 10.444152 10.235269 10.444152h21.097186v21.097187c0 5.744284 4.67898 10.235269 10.444152 10.235268a10.444152 10.444152 0 0 0 10.444152-10.235268V637.093262h21.097187c5.744284 0 10.235269-4.67898 10.235268-10.444152a10.444152 10.444152 0 0 0-10.235268-10.444152H1535.29032zM776.460024 960.861969H250.596979A20.80475 20.80475 0 0 1 229.77134 939.973665c0-11.530344 9.462402-20.888304 20.825639-20.888303h94.728457A83.010119 83.010119 0 0 1 334.212859 877.413196v-605.96969A83.49055 83.49055 0 0 1 417.849627 187.994733H480.430984V167.001988A83.49055 83.49055 0 0 1 564.067752 83.553215h501.152182A83.448773 83.448773 0 0 1 1148.856702 167.001988v605.969689c0 15.185797-4.052331 29.410732-11.133466 41.672166h115.554096c11.551232 0 20.909192 9.274407 20.909192 20.888304 0 11.530344-9.295295 20.888304-20.888304 20.888304H1002.638576v20.992745c0 15.185797-4.052331 29.410732-11.133466 41.672166h11.196131c11.488567 0 20.825639 9.274407 20.825639 20.888303 0 11.530344-9.462402 20.888304-20.825639 20.888304h-109.893365c9.545955 16.000441 7.478013 36.972297-6.41271 50.863019a41.672166 41.672166 0 0 1-59.072122 0L776.460024 960.861969z m76.367638-41.776607h66.424806c22.977134 0 41.609501-18.59059 41.609501-41.881049V270.461756c0-22.559368-18.047494-40.690416-40.314426-40.690416H416.303892c-22.266932 0-40.314426 18.214601-40.314426 40.690416v606.742557c0 23.123352 18.799473 41.881049 41.588613 41.881049h317.084449l-10.736588-10.757477a41.693054 41.693054 0 0 1-10.861918-40.377091l-19.718558-19.739447A146.259902 146.259902 0 0 1 502.363703 627.693525a146.218126 146.218126 0 0 1 220.517822 190.981761l19.739447 19.739447a41.630389 41.630389 0 0 1 40.377091 10.841029L852.827662 919.085362zM1002.638576 814.643843h62.852906A41.797496 41.797496 0 0 0 1107.080095 772.867236V167.106429c0-23.14424-18.632367-41.776607-41.588613-41.776607H563.775316A41.797496 41.797496 0 0 0 522.207592 167.106429v20.888304h396.794216A83.448773 83.448773 0 0 1 1002.638576 271.443506V814.643843zM266.325872 46.998683h31.123572c8.773088 0 15.875111 6.955805 15.875111 15.666228 0 8.647758-7.102023 15.666228-15.875111 15.666228h-31.123572v31.123572c0 8.773088-6.955805 15.875111-15.666228 15.875111a15.770669 15.770669 0 0 1-15.666228-15.875111V78.331139H203.869844A15.728893 15.728893 0 0 1 187.994733 62.664911c0-8.647758 7.102023-15.666228 15.875111-15.666228h31.123572V15.875111c0-8.773088 6.955805-15.875111 15.666228-15.875111 8.647758 0 15.666228 7.102023 15.666228 15.875111v31.123572zM20.888304 939.973665c0-11.530344 9.462402-20.888304 20.825638-20.888303h125.455152c11.488567 0 20.825639 9.274407 20.825639 20.888303 0 11.530344-9.462402 20.888304-20.825639 20.888304H41.713942A20.80475 20.80475 0 0 1 20.888304 939.973665z m658.733544-135.021995a104.441518 104.441518 0 1 0-147.722083-147.722083 104.441518 104.441518 0 0 0 147.722083 147.722083zM459.542681 313.324555a20.888304 20.888304 0 0 1 20.867415-20.888304H710.202325a20.888304 20.888304 0 1 1 0 41.776608H480.430984A20.825639 20.825639 0 0 1 459.542681 313.324555z m0 104.441518c0-11.530344 9.295295-20.888304 20.742085-20.888303h334.505295c11.44679 0 20.742086 9.274407 20.742086 20.888303 0 11.530344-9.295295 20.888304-20.742086 20.888304H480.284766A20.762974 20.762974 0 0 1 459.542681 417.766073z m0 104.441519c0-11.530344 9.316183-20.888304 20.846527-20.888304h146.301679c11.509455 0 20.846527 9.274407 20.846527 20.888304 0 11.530344-9.316183 20.888304-20.846527 20.888303h-146.301679A20.80475 20.80475 0 0 1 459.542681 522.207592zM62.664911 396.87777a62.664911 62.664911 0 1 1 0-125.329822 62.664911 62.664911 0 0 1 0 125.329822z m0-31.332456a31.332456 31.332456 0 1 0 0-62.664911 31.332456 31.332456 0 0 0 0 62.664911zM1357.739739 271.547948a62.664911 62.664911 0 1 1 0-125.329822 62.664911 62.664911 0 0 1 0 125.329822z m0-31.332456a31.332456 31.332456 0 1 0 0-62.664911 31.332456 31.332456 0 0 0 0 62.664911z"
fill="#8A96A3"
p-id="8382"></path>
</svg>
</div>
</template>
</van-empty>
</section>
<van-popup v-model:show="state.show">
<div style="width: 82vw;max-height: 80vh;min-height: 300px;background-color: #fff;padding: 5px;">
<div style="padding: 5px 10px 8px;font-size: 15px;color: var(--text-a);text-align: center;">病案打印详情</div>
<div>
<van-steps :active="state.setup">
<van-step>申请</van-step>
<van-step>审核</van-step>
<van-step>复印成功</van-step>
<van-step>完成</van-step>
</van-steps>
</div>
</div>
</van-popup>
</div>
</template>
<script>
import { reactive, ref, watch } from 'vue'
import { useRoute, useRouter } from 'vue-helper'
import { axios } from 'axios'
import { store } from 'vue-helper'
export default {
name: 'history',
components: {
'select-patient-date': VueConfig.vueLoader('@/components/patient/select-patient-date.vue')
},
setup(props) {
const cacheKey = 'medical-record-pay-info'
const state = reactive({
recordList: [], //
show: false, //
setup: 0
})
/**
* 获取历史申请记录
*/
const patient = ref(null)
function getHistory() {
patient.value = store.getters.getPatient
if (!patient.value || (patient.value && !patient.value.patientId)) return vant.Toast.fail('患者参数缺失,无法查询翻拍记录!')
axios.RGet('/wx/xbd/getMRHistory', {
patientId: patient.value.patientId,
}).then(response => {
if (response.code === 200) {
state.recordList = response.data ? response.data : []
if (state.recordList.length > 0) state.recordList.reverse()
}
})
}
getHistory()
function onOpenDetail(item) {
// state.show = true
}
/**
* 前往支付
* @param {*} item
*/
function toPay(item) {
const payInfo = {
zyNum: item.zyNum,
bano: item.bano,
baBorrowNo: item.baBorrowNo,
inHospTime: item.inHospTime,
outHospTime: item.outHospTime,
payMoney: item.baBorrowPrintMoney,
baBorrowOperDate: item.baBorrowOperDate,
baBorrowApplyName: item.baBorrowApplyName,
baBrorrowPhone: item.baBrorrowPhone,
useName: item.baBorrowUsetoName,
getWay: item.baBorrowGetway
}
sessionStorage.setItem(cacheKey, JSON.stringify(payInfo))
window.location.href = `medical-record-pay.html?id=${item.bano}_${item.baBorrowNo}#/`
}
function getSetup(item) {
if (!item.baBorrowOperDate) return 0
if (item.baBorrowIsApproved) return 1
if (item.baBorrowIsPrint) return 2
if (item.baBorrowIsPay) return 4
}
watch(() => store.getters.getPatient, () => {
getHistory()
})
return {
state,
onOpenDetail,
toPay,
getSetup
}
}
}
</script>
<style scoped>
.history {
}
.record_item {
margin: 5px;
border: 1px solid var(--border-a);
border-radius: 5px;
font-size: 13px;
position: relative;
overflow: hidden;
background-color: #fff;
}
.recipe_tag {
text-align: center;
position: absolute;
background-color: grey;
color: #fff;
width: 100px;
height: 20px;
line-height: 20px;
top: 12px;
right: -30px;
transform: rotate(45deg);
font-size: 13px;
}
.history >>> .van-popup--center {
border-radius: 5px;
}
</style>

@ -0,0 +1,317 @@
<template>
<div class="medical-record-pay">
<transition mode="out-in">
<div class="footer__box"
v-show="true">
<div style="display:flex;align-items:center;">
<div class="btn-cancel"
@click="onCancel">
<svg t="1618975131673"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="3215"
width="14"
height="14">
<path d="M778.671 926.323a56.811 56.811 0 1 1-80.33 80.331L243.85 552.165a56.811 56.811 0 0 1 0-80.33l454.49-454.49a56.811 56.811 0 1 1 80.33 80.331L364.348 512 778.67 926.323z"
p-id="3216"
fill="#ffffff"></path>
</svg>
</div>
<div style="color:var(--text-b);font-size:14px;">您需支付<span style="font-size:16px;color:var(--color-primary);">{{ state.payInfo.payMoney }}</span></div>
</div>
<van-button type="primary"
class="btn-confirm-pay"
@click="onPay">确认支付</van-button>
</div>
</transition>
<section>
<div class="info__box-row"
style="margin-top:10px;border:none;">
<span>项目</span>
<span>病案复印支付</span>
</div>
<div class="recipe__box">
<div class="info__box-row">
<span style="display:flex;align-items:center;">
<van-icon name="manager"
size="17"
color="var(--color-primary)"
style="margin-right:7px;" />
<span>&ensp;&ensp;</span>
</span>
<span>{{ state.payInfo.baBorrowApplyName }}</span>
</div>
<div class="info__box-row"
style="border:none;">
<span style="margin-left:24px;">&ensp;&ensp;ID</span>
<span>{{ state.patient.patientId }}</span>
</div>
<div class="info__box-row"
style="border:none;">
<span style="margin-left:24px;">&ensp;&ensp;</span>
<span>{{ state.payInfo.zyNum }}</span>
</div>
<div class="info__box-row"
style="border:none;">
<span style="margin-left:24px;">入院日期</span>
<span>{{ state.payInfo.inHospTime? state.payInfo.inHospTime.substring(0, 10) : '' }}</span>
</div>
<div class="info__box-row"
style="border:none;">
<span style="margin-left:24px;">出院日期</span>
<span>{{ state.payInfo.outHospTime? state.payInfo.outHospTime.substring(0, 10) : '' }}</span>
</div>
<div class="info__box-row"
style="border:none;">
<span style="margin-left:24px;">获取方式</span>
<span>{{ state.payInfo.getWay === 1 ? '现场自取' : state.payInfo.getWay === 2 ? '邮寄' : state.payInfo.getWay === 3 ? '电子版' : '' }}</span>
</div>
<div class="info__box-row"
style="border:none;">
<span style="margin-left:24px;">&emsp;&emsp;</span>
<span>{{ state.payInfo.useName }}</span>
</div>
</div>
<section class="pay-type__box">
<div style="color:var(--text-b);">支付方式</div>
<van-radio-group v-model="state.payType"
@change="onChangePayType($event, item)"
checked-color="var(--color-primary)"
icon-size="18px"
style="border: 1px solid var(--border-c);border-radius:5px;margin-top:9px;">
<van-cell-group inset>
<van-cell clickable
@click="state.payType = 'wx'">
<template #title>
<section class="pay-type-item">
<div class="pay-type-item--icon">
<svg t="1651409624730"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="2526"
width="30"
height="30">
<path d="M395.846 603.585c-3.921 1.98-7.936 2.925-12.81 2.925-10.9 0-19.791-5.85-24.764-14.625l-2.006-3.864-78.106-167.913c-0.956-1.98-0.956-3.865-0.956-5.845 0-7.83 5.928-13.68 13.863-13.68 2.965 0 5.928 0.944 8.893 2.924l91.965 64.43c6.884 3.864 14.82 6.79 23.708 6.79 4.972 0 9.85-0.945 14.822-2.926L861.71 282.479c-77.149-89.804-204.684-148.384-349.135-148.384-235.371 0-427.242 157.158-427.242 351.294 0 105.368 57.361 201.017 147.323 265.447 6.88 4.905 11.852 13.68 11.852 22.45 0 2.925-0.957 5.85-2.006 8.775-6.881 26.318-18.831 69.334-18.831 71.223-0.958 2.92-2.013 6.79-2.013 10.75 0 7.83 5.929 13.68 13.865 13.68 2.963 0 5.928-0.944 7.935-2.925l92.922-53.674c6.885-3.87 14.82-6.794 22.756-6.794 3.916 0 8.889 0.944 12.81 1.98 43.496 12.644 91.012 19.53 139.48 19.53 235.372 0 427.24-157.158 427.24-351.294 0-58.58-17.78-114.143-48.467-163.003l-491.39 280.07-2.963 1.98z"
fill="#09BB07"
p-id="2527"></path>
</svg>
</div>
<span style="color:var(--text-b);font-size: 13px;">微信支付</span>
</section>
</template>
<template #right-icon>
<van-radio name="wx"></van-radio>
</template>
</van-cell>
</van-cell-group>
</van-radio-group>
</section>
</section>
</div>
</template>
<script>
import { reactive, ref, onUnmounted } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import { getQueryVar } from '@/utils/url-util.mjs'
import { GoBind, Go, OnBack } from '@/utils/common-util.mjs'
import { axios } from 'axios'
import { store } from 'vue-helper'
import PayUtil from '@/utils/pay-util.mjs';
export default {
name: 'medical-record-pay',
setup(props, context) {
const route = useRoute();
const router = useRouter();
const cacheKey = 'medical-record-pay-info'
const state = reactive({
payInfo: {},
payType: 'wx',
patient: store.getters.getPatient
})
//
const id = getQueryVar('id', null)
let payInfo = null
if (id && sessionStorage.getItem(cacheKey)) {
try {
payInfo = JSON.parse(sessionStorage.getItem(cacheKey))
} catch (error) {
console.log('error', error)
}
if (Object.keys(payInfo).length > 0) {
if ((payInfo.bano + '_' + payInfo.baBorrowNo) === (id + '')) {
state.payInfo = payInfo
} else {
console.log("payInfo and id are not equal")
removeDataAndBack()
}
} else {
console.log("JSON.parse() of sessionStorage.getItem(cacheKey) is fail")
removeDataAndBack()
}
} else {
if (sessionStorage.getItem(cacheKey)) {
console.log("id or sessionStorage.getItem(cacheKey) is null")
removeDataAndBack()
}
}
// 退
function removeDataAndBack({ message = '数据缺失,即将退出,请重新进入!' }) {
sessionStorage.removeItem(cacheKey)
vant.Toast.fail({
duration: 1000,
message: message,
onClose: () => {
onCancel()
}
})
}
//
onUnmounted(() => {
sessionStorage.removeItem(cacheKey)
})
/**
* 退出支付
*/
function onCancel() {
OnBack('medical-record.html#/medical-record-history')
}
/**
* 唤起支付
* @param {*} item
*/
function onPay() {
if (!state.patient || (state.patient && !state.patient.patientId)) return vant.Toast.fail('参数缺失,无法支付!')
axios.post('/wx/xbd/caseBookPay', {
payCode: state.payType,
openid: state.patient.openid,
patientId: state.patient.patientId,
treatNum: state.payInfo.zyNum,
totalFee: state.payInfo.payMoney,
applyId: state.payInfo.baBorrowNo,
getWay: state.payInfo.getWay,
useToName: state.payInfo.useName
}).then(response => {
if (response.code === 200) {
console.log('response.data', response.data)
PayUtil.wxPay(response.data).then(() => onCancel())
} else {
vant.Toast.fail(response.message)
}
})
}
return {
state,
onCancel,
onPay
}
},
}
</script>
<style scoped>
.medical-record-pay {
width: 100%;
box-sizing: border-box;
}
.info__box-row {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 12px;
background-color: #fff;
border-bottom: 1px dashed var(--border-c);
border-radius: 5px;
height: 38px;
box-sizing: border-box;
color: var(--text-b);
font-size: 14px;
}
.info__box-row span:first-child {
color: var(--text-b);
}
.recipe__box {
margin: 10px 0;
background-color: #fff;
border-radius: 5px;
box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.15);
}
.pay-type__box {
padding: 8px 10px;
margin: 10px 0;
border-radius: 5px;
background: #fff;
box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.1);
color: var(--text-b);
}
.pay-type__box .van-cell-group {
margin: 0;
}
.pay-type-item {
display: flex;
align-items: center;
}
.pay-type-item--icon {
height: 30px;
width: 80px;
display: flex;
align-items: center;
}
.pay-type__box .van-cell {
padding: 5px 8px;
}
.footer__box {
display: flex;
justify-content: center;
align-items: center;
position: fixed;
bottom: 0;
left: 0;
right: 0;
margin: 0 auto;
max-width: 767px;
padding: 16px 10px;
background: #fff;
display: flex;
align-items: center;
justify-content: space-between;
box-shadow: 2px 2px 2px 2px rgba(0, 0, 0, 0.15);
z-index: 50;
}
.btn-cancel {
width: 20px;
height: 20px;
display: flex;
justify-content: center;
align-items: center;
padding: 4px;
border-radius: 9px;
background: rgba(0, 0, 0, 0.1);
margin: 0 10px 0 4px;
}
.btn-confirm-pay {
height: 40px;
font-size: 14px;
border-radius: 20px;
}
</style>

@ -1,743 +0,0 @@
<template>
<div class="ptint-reserve">
<select-patient-date :show-code="false"
:days="0"
:show-navbar="false"
:show-date="false"></select-patient-date>
<div style="margin: 5px;">
<van-form ref="formRef"
error-message-align="right">
<van-cell-group title=""
insert>
<van-field v-model="form.ipsID"
label="住院号"
is-link
readonly
required
placeholder="点击选择住院记录"
@click="state.ispShow = true"
:rules="[{required: true, message: '请选择住院记录', trigger: 'onSubmit'}]"></van-field>
<van-field v-model="form.dx"
label="诊断内容"
readonly
required
placeholder="选择住院记录"></van-field>
<van-field v-model="form.ptName"
label="病人姓名"
readonly
required
placeholder="选择住院记录"></van-field>
<van-field v-model="form.deptName"
label="出院科室"
required
placeholder="选择住院记录"></van-field>
<van-field v-model="form.showCardNo"
required
readonly
label="身份证"
placeholder="身份证号"
:rules="[{required: true, message: '请输入身份证号', trigger: 'onSubmit'}]"></van-field>
<van-field v-model="form.phone"
type="tel"
required
label="联系电话"
placeholder="联系电话"
:rules="[{required: true, message: '请输入联系电话', trigger: 'onSubmit'}]"></van-field>
<!-- <van-field v-model="form.applicantName"
required
label="委托代理人姓名"
placeholder="委托代理人姓名"
:rules="[{required: true, message: '请输入委托代理人姓名', trigger: 'onSubmit'}]"></van-field>
<van-field v-model="form.applicantRel"
required
label="申请人与病人关系"
placeholder="申请人与病人关系"
:rules="[{required: true, message: '请输入申请人与病人关系', trigger: 'onSubmit'}]"></van-field> -->
<van-field v-model="formLabel.getWayLabel"
is-link
readonly
required
label="获取方式"
placeholder="点击选择获取方式"
@click="state.getWayShow = true"></van-field>
<van-field v-model="form.address"
label="邮寄地址"
type="textarea"
rows="2"
autosize
required
placeholder="邮寄地址"
:rules="[{required: true, message: '请输入邮寄地址', trigger: 'onSubmit'}]"></van-field>
<van-field v-model="form.useWay"
readonly
required
is-link
label="用途"
placeholder="点击选择翻拍用途"
@click="state.templateShow = true"></van-field>
</van-cell-group>
<van-cell-group title=""
insert
style="margin-top: 5px;">
<div class="img_item">
<div class="img_item_label">
<section>
<span style="color: red;">*</span>本人身份证正面照片
</section>
</div>
<div class="img_item_upload">
<van-uploader v-model="state.img.ptImg1"
style="width: 100%;height: 100%;"
:max-count="1"
:after-read="(file) => afterRead(file, 'ptImg1')">
<div style="height: 100%;display: flex;flex-direction: column;align-items: center;justify-content: center;">
<svg t="1685244688694"
class="icon"
viewBox="0 0 1507 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="5693"
width="64"
height="64">
<path d="M1404.827485 1023.962307v-19.562798h83.245546v-82.77438H1507.730061v102.337178h-102.902576zM1488.073031 19.638184H1404.827485V0.075387H1507.730061V102.337178h-19.65703V19.638184z m-73.363632 61.86719a55.829988 55.829988 0 0 1 16.597595 39.841767v768.533988c-0.012564 31.084368-25.361276 56.288589-56.640393 56.313718H123.483092c-31.272834-0.043975-56.608982-25.235632-56.640393-56.313718V121.347141c0.043975-31.071804 25.380123-56.244613 56.640393-56.282307h1251.208638c15.071018 0 29.281374 5.82989 40.017669 16.44054z m-39.986258 8.4747H123.483092v0.018846c-17.426847 0.018847-31.549252 14.053301-31.568098 31.37335v768.533988c0 17.288638 14.16638 31.398479 31.568098 31.398478h1251.183509c17.401718 0 31.593227-14.084712 31.593227-31.398478V121.347141c0-8.374184-3.285595-16.27092-9.247411-22.201325a32.026699 32.026699 0 0 0-22.289276-9.165742z m-462.326577 647.431852c1.030282-49.158282 10.133202-133.050896 59.354307-175.73222l67.766184 0.615656 63.462871 104.058503 11.961326-77.811436-8.650602-14.10984 0.647068-14.499337a280.846135 280.846135 0 0 1 37.712098 0.050257l0.703607 14.499338-8.625472 14.103558 12.011583 78.439656 49.290208-105.226994 74.965595-2.538012c38.74238 36.405399 63.588515 122.188957 57.494773 178.150871h-418.093546z m315.216099-288.680049c-5.163975 18.337767-11.201178 35.331141-19.85178 49.57919-9.881914 16.446822-22.948908 29.09919-41.418601 35.909105-8.254822 2.965202-29.337914 4.384982-49.623165 4.033178-19.556515-0.245006-39.213546-2.186209-47.034896-5.779632-16.798626-7.65173-28.609178-20.580515-37.511068-36.650405-7.670577-13.732908-13.110969-29.727411-17.904294-46.62027-7.846479-4.083436-13.73919-11.03784-17.728393-20.530258-4.334724-10.315387-6.31362-23.872393-6.062331-39.942282l0.075386-5.484368 4.586013-3.040589c1.155926-0.772712 2.330699-1.520294 3.511754-2.186209-5.163975-63.142479-3.210209-86.487166 20.385767-113.173987 46.004613-37.429399 151.464049-36.103853 198.046626-2.173644 31.744 29.802798 33.949055 63.192736 24.199067 114.719411 1.526577 0.873227 3.028025 1.796712 4.560884 2.814429l4.586012 3.065718 0.05654 5.459239c0.270135 15.743215-1.633374 29.080344-5.792196 39.370601-3.838429 9.391902-9.479853 16.396564-17.081325 20.630773z m-0.571681-54.718037a14.329718 14.329718 0 0 0-5.440393-0.822969l-9.354209 0.59681-1.727607-9.146896a119.035288 119.035288 0 0 0-9.706012-29.652024c-29.834209 5.811043-74.186601 10.89335-109.241325-8.738552-13.513031-7.551215-33.25173 7.921865-49.440982 6.326184a121.623558 121.623558 0 0 0-10.931043 32.064392l-1.809276 9.492417-9.580368-0.917202a14.612417 14.612417 0 0 0-5.584884 0.672196 26.385276 26.385276 0 0 0-2.58827 1.024c0.22616 10.510135 1.702479 19.204712 4.466651 25.738209 2.406086 5.729374 5.741939 9.44216 10.108073 10.811681l5.610013 1.746454 1.551705 5.60373c4.717939 17.269791 9.932172 33.641227 17.357743 46.915534 6.866454 12.313129 15.667828 22.151067 27.773644 27.685693 5.12 2.336982 21.416049 3.637399 38.440834 3.888687 18.099043 0.251288 36.128982-0.672196 42.09708-2.870969 13.412515-4.906405 23.093399-14.44908 30.588073-26.9067 8.02238-13.381104 13.764319-30.374479 18.802651-49.013791l1.457472-5.352442 5.314749-1.846969c4.20908-1.470037 7.494675-5.308466 9.875632-11.088098 2.607117-6.426699 4.03946-15.001914 4.315877-25.28589a16.06989 16.06989 0 0 0-2.355828-0.923485zM332.642945 457.049521h288.887362v49.309056H332.642945v-49.309056z m0-122.741791h288.887362v49.315337H332.642945v-49.315337z m0-122.735509h288.887362v49.309055H332.642945v-49.309055zM201.41389 457.049521h95.929325v49.309056h-95.929325v-49.309056z m0-122.741791h95.929325v49.315337h-95.929325v-49.315337z m0-122.735509h95.929325v49.309055h-95.929325v-49.309055z m254.712147 615.863754H201.41389v-49.334184h254.712147v49.334184z m464.248932 0H485.909988v-49.334184h434.464981v49.334184zM19.68216 102.337178H0V0.075387h102.927706v19.562797H19.68216V102.337178z m0 902.062331h83.245546v19.562798H0v-102.337178h19.68216v82.77438z"
p-id="5694"
fill="#dcdfe6"></path>
</svg>
<span>点击选择照片或拍照</span>
</div>
</van-uploader>
</div>
<div v-if="state.imgBlankError.ptImg1"
class="img__blank_error">请上传本人身份证正面照片</div>
</div>
<div class="img_item">
<div class="img_item_label">
<section>
<span style="color: red;">*</span>本人身份证背面照片
</section>
</div>
<div class="img_item_upload">
<van-uploader v-model="state.img.ptImg2"
style="width: 100%;height: 100%;"
:max-count="1"
:after-read="(file) => afterRead(file, 'ptImg2')">
<div style="height: 100%;display: flex;flex-direction: column;align-items: center;justify-content: center;">
<svg t="1685244916978"
class="icon"
viewBox="0 0 1499 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="9485"
width="64"
height="64">
<path d="M1396.224 1024v-19.456h82.432V921.6h19.456v102.4h-101.888zM1479.168 19.456h-82.432V0h102.4v102.4H1479.68V19.456zM1405.952 81.92c10.24 10.24 16.384 24.576 16.384 39.424v769.024c0 30.72-25.088 55.808-55.808 55.808H122.88c-30.72 0-55.808-25.088-55.808-55.808V121.344c0-30.72 25.088-55.808 55.808-55.808h1243.648c14.336 0 28.672 5.632 39.424 16.384z m-39.424 7.168H122.88c-17.408 0-31.744 14.336-31.744 31.744v768.512c0 17.408 14.336 31.744 31.744 31.744h1243.648c16.384 0 30.208-12.8 31.744-29.184V121.344c0-8.192-3.584-16.384-9.216-22.528-6.144-6.144-14.336-9.728-22.528-9.728zM465.92 677.888h737.28v49.152H465.92v-49.152z m143.36-253.952h593.408v49.152H609.28v-49.152z m0-122.88h593.408v49.152H609.28v-49.152z m0-123.904h593.408v49.152H609.28v-49.152zM485.376 423.936h95.232v49.152H485.376v-49.152z m0-122.88h95.232v49.152H485.376v-49.152z m0-122.88h95.232v49.152H485.376v-49.152zM384 409.6l20.48 38.4c-9.216-6.656-20.992-8.192-31.232-3.584-10.752 7.168-18.944 17.92-23.04 30.72l-16.384-25.088v12.8h-107.52v-12.8l-14.848 25.088c-4.096-12.288-12.288-23.04-23.04-30.72-15.36-8.192-31.744 6.656-31.744 6.656l22.016-41.472c-49.152-54.784-46.08-138.752 7.168-189.44 53.248-51.2 137.216-51.2 190.464 0 53.248 51.2 56.32 134.656 7.168 189.44 0-1.024 0.512 0 0.512 0zM216.064 282.624l-3.584-9.728-5.12 8.704h-8.192l7.68 6.656v9.728l8.192-5.12 8.192 5.12-4.608-8.704 7.68-6.656h-10.24z m-2.048 117.76h140.8l-14.336-22.528h-112.64c0 0.512-13.824 22.528-13.824 22.528z m93.696-22.528l-4.608-14.848h-39.424l-5.12 14.848h49.152zM238.592 308.224l7.68 6.656v9.728l8.192-5.12 8.192 5.12-4.608-8.704 8.192-6.656h-10.752l-3.584-11.264-3.584 10.24h-9.728z m51.2-53.248L281.6 233.984l-8.192 20.992H250.88l16.896 14.848-5.12 22.528 18.944-12.288 18.944 12.288-5.12-22.528 16.896-14.848h-22.528z m35.328 54.784l-4.096-11.264-3.584 10.24h-10.24l7.68 6.656v9.728l8.192-5.12 8.192 5.12-6.656-8.704 7.68-6.656h-7.168z m31.744-32.256l-3.584-10.24-3.584 9.728h-10.24l7.68 6.656v9.728l8.192-5.12 8.192 5.12-4.608-9.728 7.68-6.656c0.512 0.512-9.728 0.512-9.728 0.512zM417.28 727.04H200.192v-49.152h217.088v49.152z m0 96.768H200.192v-49.152h217.088v49.152z m785.408 0H465.92v-49.152h736.768v49.152zM19.456 102.4H0V0h102.4v19.456H19.456V102.4z m0 902.144H102.4v19.456H0v-102.4h19.456v82.944z"
p-id="9486"
fill="#dcdfe6"></path>
</svg>
<span>点击选择照片或拍照</span>
</div>
</van-uploader>
</div>
<div v-if="state.imgBlankError.ptImg2"
class="img__blank_error">请上传本人身份证背面照片</div>
</div>
<!-- <div class="img_item">
<div class="img_item_label"><span style="color: red;">*</span>申请人身份证正面照片</div>
<div class="img_item_upload">
<van-uploader v-model="state.img.applicantIdcImg1"
style="width: 100%;height: 100%;"
:max-count="1"
:after-read="(file) => afterRead(file, 'applicantIdcImg1')">
<div style="height: 100%;display: flex;flex-direction: column;align-items: center;justify-content: center;">
<svg t="1685244688694"
class="icon"
viewBox="0 0 1507 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="5693"
width="64"
height="64">
<path d="M1404.827485 1023.962307v-19.562798h83.245546v-82.77438H1507.730061v102.337178h-102.902576zM1488.073031 19.638184H1404.827485V0.075387H1507.730061V102.337178h-19.65703V19.638184z m-73.363632 61.86719a55.829988 55.829988 0 0 1 16.597595 39.841767v768.533988c-0.012564 31.084368-25.361276 56.288589-56.640393 56.313718H123.483092c-31.272834-0.043975-56.608982-25.235632-56.640393-56.313718V121.347141c0.043975-31.071804 25.380123-56.244613 56.640393-56.282307h1251.208638c15.071018 0 29.281374 5.82989 40.017669 16.44054z m-39.986258 8.4747H123.483092v0.018846c-17.426847 0.018847-31.549252 14.053301-31.568098 31.37335v768.533988c0 17.288638 14.16638 31.398479 31.568098 31.398478h1251.183509c17.401718 0 31.593227-14.084712 31.593227-31.398478V121.347141c0-8.374184-3.285595-16.27092-9.247411-22.201325a32.026699 32.026699 0 0 0-22.289276-9.165742z m-462.326577 647.431852c1.030282-49.158282 10.133202-133.050896 59.354307-175.73222l67.766184 0.615656 63.462871 104.058503 11.961326-77.811436-8.650602-14.10984 0.647068-14.499337a280.846135 280.846135 0 0 1 37.712098 0.050257l0.703607 14.499338-8.625472 14.103558 12.011583 78.439656 49.290208-105.226994 74.965595-2.538012c38.74238 36.405399 63.588515 122.188957 57.494773 178.150871h-418.093546z m315.216099-288.680049c-5.163975 18.337767-11.201178 35.331141-19.85178 49.57919-9.881914 16.446822-22.948908 29.09919-41.418601 35.909105-8.254822 2.965202-29.337914 4.384982-49.623165 4.033178-19.556515-0.245006-39.213546-2.186209-47.034896-5.779632-16.798626-7.65173-28.609178-20.580515-37.511068-36.650405-7.670577-13.732908-13.110969-29.727411-17.904294-46.62027-7.846479-4.083436-13.73919-11.03784-17.728393-20.530258-4.334724-10.315387-6.31362-23.872393-6.062331-39.942282l0.075386-5.484368 4.586013-3.040589c1.155926-0.772712 2.330699-1.520294 3.511754-2.186209-5.163975-63.142479-3.210209-86.487166 20.385767-113.173987 46.004613-37.429399 151.464049-36.103853 198.046626-2.173644 31.744 29.802798 33.949055 63.192736 24.199067 114.719411 1.526577 0.873227 3.028025 1.796712 4.560884 2.814429l4.586012 3.065718 0.05654 5.459239c0.270135 15.743215-1.633374 29.080344-5.792196 39.370601-3.838429 9.391902-9.479853 16.396564-17.081325 20.630773z m-0.571681-54.718037a14.329718 14.329718 0 0 0-5.440393-0.822969l-9.354209 0.59681-1.727607-9.146896a119.035288 119.035288 0 0 0-9.706012-29.652024c-29.834209 5.811043-74.186601 10.89335-109.241325-8.738552-13.513031-7.551215-33.25173 7.921865-49.440982 6.326184a121.623558 121.623558 0 0 0-10.931043 32.064392l-1.809276 9.492417-9.580368-0.917202a14.612417 14.612417 0 0 0-5.584884 0.672196 26.385276 26.385276 0 0 0-2.58827 1.024c0.22616 10.510135 1.702479 19.204712 4.466651 25.738209 2.406086 5.729374 5.741939 9.44216 10.108073 10.811681l5.610013 1.746454 1.551705 5.60373c4.717939 17.269791 9.932172 33.641227 17.357743 46.915534 6.866454 12.313129 15.667828 22.151067 27.773644 27.685693 5.12 2.336982 21.416049 3.637399 38.440834 3.888687 18.099043 0.251288 36.128982-0.672196 42.09708-2.870969 13.412515-4.906405 23.093399-14.44908 30.588073-26.9067 8.02238-13.381104 13.764319-30.374479 18.802651-49.013791l1.457472-5.352442 5.314749-1.846969c4.20908-1.470037 7.494675-5.308466 9.875632-11.088098 2.607117-6.426699 4.03946-15.001914 4.315877-25.28589a16.06989 16.06989 0 0 0-2.355828-0.923485zM332.642945 457.049521h288.887362v49.309056H332.642945v-49.309056z m0-122.741791h288.887362v49.315337H332.642945v-49.315337z m0-122.735509h288.887362v49.309055H332.642945v-49.309055zM201.41389 457.049521h95.929325v49.309056h-95.929325v-49.309056z m0-122.741791h95.929325v49.315337h-95.929325v-49.315337z m0-122.735509h95.929325v49.309055h-95.929325v-49.309055z m254.712147 615.863754H201.41389v-49.334184h254.712147v49.334184z m464.248932 0H485.909988v-49.334184h434.464981v49.334184zM19.68216 102.337178H0V0.075387h102.927706v19.562797H19.68216V102.337178z m0 902.062331h83.245546v19.562798H0v-102.337178h19.68216v82.77438z"
p-id="5694"
fill="#dcdfe6"></path>
</svg>
<span>点击选择照片或拍照</span>
</div>
</van-uploader>
</div>
<div v-if="state.imgBlankError.applicantIdcImg1"
class="img__blank_error">请上传申请人身份证正面照片</div>
</div>
<div class="img_item">
<div class="img_item_label"><span style="color: red;">*</span>申请人身份证背面照片</div>
<div class="img_item_upload">
<van-uploader v-model="state.img.applicantIdcImg2"
style="width: 100%;height: 100%;"
:max-count="1"
:after-read="(file) => afterRead(file, 'applicantIdcImg2')">
<div style="height: 100%; display: flex;flex-direction: column;align-items: center;justify-content: center;">
<svg t="1685244916978"
class="icon"
viewBox="0 0 1499 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="9485"
width="64"
height="64">
<path d="M1396.224 1024v-19.456h82.432V921.6h19.456v102.4h-101.888zM1479.168 19.456h-82.432V0h102.4v102.4H1479.68V19.456zM1405.952 81.92c10.24 10.24 16.384 24.576 16.384 39.424v769.024c0 30.72-25.088 55.808-55.808 55.808H122.88c-30.72 0-55.808-25.088-55.808-55.808V121.344c0-30.72 25.088-55.808 55.808-55.808h1243.648c14.336 0 28.672 5.632 39.424 16.384z m-39.424 7.168H122.88c-17.408 0-31.744 14.336-31.744 31.744v768.512c0 17.408 14.336 31.744 31.744 31.744h1243.648c16.384 0 30.208-12.8 31.744-29.184V121.344c0-8.192-3.584-16.384-9.216-22.528-6.144-6.144-14.336-9.728-22.528-9.728zM465.92 677.888h737.28v49.152H465.92v-49.152z m143.36-253.952h593.408v49.152H609.28v-49.152z m0-122.88h593.408v49.152H609.28v-49.152z m0-123.904h593.408v49.152H609.28v-49.152zM485.376 423.936h95.232v49.152H485.376v-49.152z m0-122.88h95.232v49.152H485.376v-49.152z m0-122.88h95.232v49.152H485.376v-49.152zM384 409.6l20.48 38.4c-9.216-6.656-20.992-8.192-31.232-3.584-10.752 7.168-18.944 17.92-23.04 30.72l-16.384-25.088v12.8h-107.52v-12.8l-14.848 25.088c-4.096-12.288-12.288-23.04-23.04-30.72-15.36-8.192-31.744 6.656-31.744 6.656l22.016-41.472c-49.152-54.784-46.08-138.752 7.168-189.44 53.248-51.2 137.216-51.2 190.464 0 53.248 51.2 56.32 134.656 7.168 189.44 0-1.024 0.512 0 0.512 0zM216.064 282.624l-3.584-9.728-5.12 8.704h-8.192l7.68 6.656v9.728l8.192-5.12 8.192 5.12-4.608-8.704 7.68-6.656h-10.24z m-2.048 117.76h140.8l-14.336-22.528h-112.64c0 0.512-13.824 22.528-13.824 22.528z m93.696-22.528l-4.608-14.848h-39.424l-5.12 14.848h49.152zM238.592 308.224l7.68 6.656v9.728l8.192-5.12 8.192 5.12-4.608-8.704 8.192-6.656h-10.752l-3.584-11.264-3.584 10.24h-9.728z m51.2-53.248L281.6 233.984l-8.192 20.992H250.88l16.896 14.848-5.12 22.528 18.944-12.288 18.944 12.288-5.12-22.528 16.896-14.848h-22.528z m35.328 54.784l-4.096-11.264-3.584 10.24h-10.24l7.68 6.656v9.728l8.192-5.12 8.192 5.12-6.656-8.704 7.68-6.656h-7.168z m31.744-32.256l-3.584-10.24-3.584 9.728h-10.24l7.68 6.656v9.728l8.192-5.12 8.192 5.12-4.608-9.728 7.68-6.656c0.512 0.512-9.728 0.512-9.728 0.512zM417.28 727.04H200.192v-49.152h217.088v49.152z m0 96.768H200.192v-49.152h217.088v49.152z m785.408 0H465.92v-49.152h736.768v49.152zM19.456 102.4H0V0h102.4v19.456H19.456V102.4z m0 902.144H102.4v19.456H0v-102.4h19.456v82.944z"
p-id="9486"
fill="#dcdfe6"></path>
</svg>
<span>点击选择照片或拍照</span>
</div>
</van-uploader>
</div>
<div v-if="state.imgBlankError.applicantIdcImg2"
class="img__blank_error">请上传申请人身份证背面照片</div>
</div> -->
<!-- <div class="img_item">
<div class="img_item_label">
<section style="width: 60px;">
<span style="color: red;">*</span>住院证
</section>
</div>
<div class="img_item_upload">
<van-uploader v-model="state.img.applyImg"
style="width: 100%;height: 100%;"
:max-count="1"
:after-read="(file) => afterRead(file, 'applyImg')">
<div style="height: 100%; display: flex;flex-direction: column;align-items: center;justify-content: center;">
<svg t="1686896283841"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="4962"
width="64"
height="64">
<path d="M230.4 364.8z m38.4-32c22.4 0 41.6-19.2 41.6-41.6V179.2c0-22.4-19.2-41.6-41.6-41.6-22.4 0-41.6 19.2-41.6 41.6v112c3.2 22.4 19.2 41.6 41.6 41.6zM928 265.6c-3.2-57.6-48-48-48-48h-32v96s-6.4 48-48 48h-80c-41.6 0-48-48-48-48v-96h-310.4v96s-6.4 48-48 48H230.4c-41.6 0-48-48-48-48v-96h-32s-44.8-9.6-48 48v560c0 57.6 57.6 57.6 57.6 57.6h713.6s57.6 0 57.6-57.6V268.8s-3.2 0-3.2-3.2zM515.2 764.8c0 44.8-83.2 54.4-160 54.4S192 809.6 192 764.8v-12.8c0-32 57.6-64 105.6-83.2 3.2 0 19.2-9.6 9.6-35.2-25.6-25.6-41.6-64-41.6-105.6 0-60.8 38.4-92.8 86.4-92.8s86.4 32 86.4 92.8c0 38.4-19.2 80-41.6 105.6-9.6 28.8 6.4 35.2 6.4 35.2 51.2 16 108.8 48 108.8 83.2 3.2 3.2 3.2 12.8 3.2 12.8z m291.2-12.8h-163.2c-22.4 0-41.6-19.2-41.6-41.6 0-22.4 19.2-41.6 41.6-41.6h163.2c22.4 0 41.6 19.2 41.6 41.6 0 25.6-19.2 41.6-41.6 41.6z m0-160h-163.2c-22.4 0-41.6-19.2-41.6-41.6 0-22.4 19.2-41.6 41.6-41.6h163.2c22.4 0 41.6 19.2 41.6 41.6s-19.2 41.6-41.6 41.6z m-6.4-227.2z m-41.6-32c22.4 0 41.6-19.2 41.6-41.6V179.2c0-22.4-19.2-41.6-41.6-41.6-22.4 0-41.6 19.2-41.6 41.6v112c0 22.4 19.2 41.6 41.6 41.6z"
fill="#dbdbdb"
p-id="4963"></path>
</svg>
<span>点击选择照片或拍照</span>
</div>
</van-uploader>
</div>
<div v-if="state.imgBlankError.applyImg"
class="img__blank_error">请上传住院证照片</div>
</div> -->
<div class="img_item">
<div class="img_item_label">
<section>
<span style="color: red;">*</span>委托书照片
</section>
<div style="width: calc(100% - 80px);display: flex;flex-direction: row;justify-content: flex-end;flex-wrap: nowrap;font-size: 13px;">
<div style="margin-right: 10px;">
<!-- <a href=""
style="color: var(--color-primary);border-bottom: 1px solid var(--color-primary);">下载模板</a> -->
</div>
<div style="background-color: var(--color-primary);width: 45px;line-height: 24px;text-align: center;border-radius: 4px;color: #fff;"
@click.stop="onExample">示例</div>
</div>
</div>
<div class="img_item_upload">
<van-uploader v-model="state.img.agreementLetterImg"
style="width: 100%;height: 100%;"
:max-count="1"
:after-read="(file) => afterRead(file, 'agreementLetterImg')">
<div style="height: 100%; display: flex;flex-direction: column;align-items: center;justify-content: center;">
<svg t="1685250803648"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="15083"
width="64"
height="64">
<path d="M608.20558965 898.406c18.504 0 12.996-1.728 12.996 15.696s5.508 31.554-12.996 31.554H153.14758964c-55.494 0-82.368-42.39-82.368-94.68V156.68C70.77958964 104.39 97.67158965 71.198 153.14758964 71.198h569.304c83.664 0 91.224 43.902 91.224 85.482 0 17.424-9.486 31.554-27.99 31.554S755.94958964 174.104 755.94958964 156.68s-4.788-31.554-33.47999999-31.554H153.14758964c-24.246 0-33.48 14.13-33.48 31.554v710.172c0 17.424 14.994 31.554 33.48 31.554h455.058z m230.88599999-343.71v153.486c0 44.64-45 44.64-45 0v-153.486c0-31.932 45-33.336 45 0z"
p-id="15084"
fill="#dcdfe6"></path>
<path d="M246.78358965 253.934c-18.504 0-26.658-10.08-26.65800001-22.5s8.154-22.5 26.658-22.5h247.03200001c18.504 0 27.702 10.08 27.702 22.5s-9.216 22.5-27.702 22.5H246.78358965z m1.51199999 167.436c-18.504 0-28.17-10.08-28.17-22.5s9.684-22.5 28.17-22.5h142.75800001c18.504 0 30.006 10.08 30.006 22.5s-11.52 22.5-30.006 22.5H248.29558965z m353.44800001 489.348c0 18.504-5.166 28.242-23.67 28.242s-23.652-9.756-23.652-28.242l0.594-132.48a100.44 100.44 0 0 1 100.458-100.458l133.686 1.206c12.33 0 20.682 6.75 25.074 20.232-4.374 17.118-12.744 25.668-25.074 25.668l-133.686-1.206c-48.51 0-53.136 36.072-53.136 54.558l-0.594 132.48z"
p-id="15085"
fill="#dcdfe6"></path>
<path d="M601.34758965 944.54c-3.762-2.358-4.266-7.146-5.74200001-9.54-1.476-2.376 0.702-23.886 9.342-32.166l188.76600001-181.044c8.568-8.622 21.132-11.916 32.832-8.622 11.7 3.294 12.474-4.482 12.474-3.906-0.216 19.98-3.924 34.596-12.474 42.408l-188.748 181.08c-8.622 8.28-24.948 15.138-36.45 11.79z m290.736-619.218a32.85 32.85 0 0 0 3.47399999-46.476c-12.492-14.382-33.444-15.966-47.412-4.05L419.56558964 637.64l-15.91199999 54.252 61.056-4.752 427.374-361.818z m32.65199999 39.366L503.94958965 724.22c-4.482 3.816-10.062 6.12-15.948 6.57l-100.458 7.776a27.972 27.972 0 0 1-28.99800001-35.784l27.03600001-92.178c1.53-5.238 4.572-9.9 8.73-13.428L814.88158965 237.86a83.898 83.898 0 0 1 117.72 8.838c30.528 35.172 26.856 87.786-7.866 117.99z"
p-id="15086"
fill="#dcdfe6"></path>
</svg>
<span>点击选择照片或拍照</span>
</div>
</van-uploader>
</div>
<div v-if="state.imgBlankError.agreementLetterImg"
class="img__blank_error">请上传申请书照片</div>
</div>
</van-cell-group>
<div class="footer">
<van-button type="primary"
block
icon="sign"
round
@click="onSubmit">&emsp;</van-button>
</div>
</van-form>
</div>
<!-- 获取方式 -->
<van-popup v-model:show="state.getWayShow"
round
lock-scroll
position="bottom">
<van-picker title="获取方式"
:columns="state.getWayColumns"
:columns-field-names="state.getWayColumnFieldName"
@confirm="onGetWayConfirm"
@cancel="state.getWayShow = false" />
</van-popup>
<!-- 住院记录 -->
<van-popup v-model:show="state.ispShow"
position="bottom">
<div class="treat">
<div class="head">
<div class="head_cancel"
@click="state.ispShow = false"> </div>
<div class="head_title">选择住院记录</div>
<div class="head_confirm"
@click="onIspConfirm"> </div>
</div>
<div class="treat_cont">
<template v-if="state.treatRecord.length > 0">
<section v-for="item in state.treatRecord"
:key="item.ipsId">
<div class="cont_item"
:class="[state.currTreat.ipsId === item.ipsId ? 'border_click' : 'border_default']"
@click="state.currTreat = item">
<div><span>患者姓名</span><span>{{ item.ptName }}&emsp;&emsp;{{ item.ptId }}</span></div>
<div><span>住院编号</span><span>{{ item.ipsId }}</span></div>
<div><span>出院科室</span><span>{{ item.deptName }}</span></div>
<div><span>&emsp;&emsp;</span><span>{{ item.dx }}</span></div>
<div class="item_checked"
v-if="state.currTreat.ipsId === item.ipsId">
<van-icon name="passed"
color="var(--color-primary)"
size="20" />
</div>
</div>
</section>
</template>
<van-empty v-else
image-size="100"
description="暂无住院记录" />
</div>
</div>
</van-popup>
<!-- 模板 -->
<van-popup v-model:show="state.templateShow"
round
lock-scroll
position="bottom">
<!-- :columns-field-names="{text: 'templatename'}" -->
<van-picker title="用 途"
:columns="state.templateList"
value-key="templateno"
@confirm="onTemplateConfirm"
@cancel="state.templateShow = false">
<template #option="option">
<div style="margin: 5px 0;overflow: hidden">
<div style="text-align: center;padding:8px 0 0;">{{ option.Borrow_UseTo_Name }}</div>
</div>
</template>
</van-picker>
</van-popup>
</div>
</template>
<script>
import { reactive, ref, watch } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import { axios } from 'axios'
import { store } from 'vue-helper'
import ImageUtil from '@/utils/image-util.mjs'
export default {
name: 'ptint-reserve',
components: {
'select-patient-date': VueConfig.vueLoader('@/components/patient/select-patient-date.vue')
},
setup(props, context) {
const route = useRoute();
const router = useRouter();
const formRef = ref(null)
const state = reactive({
getWayShow: false, //
getWayColumns: [ //
{
code: '0',
label: '自提'
}, {
code: '1',
label: '邮寄'
}
],
getWayColumnFieldName: { //
text: 'label'
},
ispShow: false, //
treatRecord: [], //
currTreat: '', //
imgBlankError: { //
ptImg1: false,
ptImg2: false,
// applicantIdcImg1: false,
// applicantIdcImg2: false,
agreementLetterImg: false,
applyImg: false
},
img: {
ptImg1: [], //
ptImg2: [], //
applicantIdcImg1: [], //
applicantIdcImg2: [], //
agreementLetterImg: [], //
applyImg: [], //
},
templateShow: false, //
templateList: [], //
})
const creatForm = () => ({
ipsID: '', //
dx: '', //
ptId: '', // ID
ptName: '', //
deptID: '', // ID
deptName: '', //
ptIdcID: '', //
phone: '', //
applicantName: '', //
applicantRel: '', //
applicantRelId: '', //
ptImg1: '', //
ptImg2: '', //
applicantIdcImg1: '', //
applicantIdcImg2: '', //
agreementLetterImg: '', //
useWay: '', // (templateName)
useWayId: '', // id (templateNo)
getWay: '', // :0. 1. 2.
address: '', //
applyImg: '', //
showCardNo: '', //
})
const form = reactive(creatForm())
const formLabel = reactive({
getWayLabel: ''
})
/**
* 判断照片是否上传
*/
function isImgBlank() {
let checked = 0
Object.keys(state.imgBlankError).forEach(key => {
if (form[key] === '') {
checked++
state.imgBlankError[key] = true
} else if (form[key] !== '' && state.imgBlankError[key]) {
state.imgBlankError[key] = false
}
})
return checked !== 0
}
/**
* 提交预约
*/
function onSubmit() {
patient.value = store.getters.getPatient
if (!patient.value || (patient.value && !patient.value.patientId)) return vant.Toast.fail('参数缺失,无法查询住院记录!')
formRef.value.validate().then(() => {
if (isImgBlank()) {
return vant.Toast.fail('提交内容出现错误,请检查!')
}
vant.Dialog.confirm({
title: '提示',
message: '确定提交打印预约申请?'
}).then(() => {
const params = {
openId: patient.value.openid,
patientId: patient.value.patientId,
zyNum: form.ipsID,
applyName: form.ptName,
useToNo: form.useWayId,
useToName: form.useWay,
getWay: form.getWay,
address: form.address,
phone: form.phone,
ptImg1: form.ptImg1,
ptImg2: form.ptImg2,
applyImg: form.applyImg
}
axios.post('/wx/xbd/addMRReserve', params).then(response => {
if (response.code === 200) {
vant.Toast.success('预约成功')
}
})
}).catch(() => { })
}).catch(error => {
console.log('error', error)
vant.Toast.fail('提交内容出现错误,请检查!')
})
}
/**
* 选择获取方式
* @param {Object} value 获取方式
*/
function onGetWayConfirm(value) {
form.getWay = value.code
formLabel.getWayLabel = value.label
state.getWayShow = false
}
/**
* 选择住院记录
* @param {Object} value 住院记录
*/
function onIspConfirm() {
state.ispShow = false
if (state.currTreat) {
form.ipsID = state.currTreat.ipsId
form.ipsID = state.currTreat.ipsId
form.dx = state.currTreat.dx
form.ptId = state.currTreat.ptId
form.ptName = state.currTreat.ptName
form.deptID = state.currTreat.deptId
form.deptName = state.currTreat.deptName
form.ptIdcID = patient.value.idCardNo
form.showCardNo = patient.value.showCardNo
}
}
const patient = ref(null)
/**
* 获取住院记录
*/
function getMedicalRecordList() {
patient.value = store.getters.getPatient
const idCard = patient.value.idCardNo
patient.value.showCardNo = idCard.length === 18 ? idCard.substring(0, 3) + '********' + idCard.substring(idCard.length - 4) : idCard
if (!patient.value || (patient.value && !patient.value.patientId)) return vant.Toast.fail('患者参数缺失,无法查询住院记录!')
axios.RGet('wx/xbd/getMedicalRecordList', {
patientId: patient.value.patientId
}).then(response => {
if (response.code === 200) {
state.treatRecord = response.data
}
})
}
getMedicalRecordList()
/**
* 图片压缩赋值
* @param {File} file 图片
* @param {*} state 参数名
*/
function afterRead(file, state) {
ImageUtil.compressBySize(file.file, { isQuality: true }).then(res => {
form[state] = res.base64.includes(',') ? res.base64.split(',')[1] : ''
}).catch(error => {
console.log('error', error)
})
}
watch(() => state.ispShow, (newVal) => {
if (newVal && !form.ipsID) {
state.currTreat = ''
}
})
watch(() => store.getters.getPatient, () => {
getMedicalRecordList()
Object.assign(form, creatForm())
})
/**
* 获取模板
*/
function getTemplates() {
axios.RGet('wx/xbd/getMRTemplateList').then(response => {
if (response.code === 200) {
state.templateList = response.data
}
})
}
getTemplates()
function onTemplateConfirm(value) {
state.templateShow = false
form.useWayId = value.Borrow_UseTo_No
form.useWay = value.Borrow_UseTo_Name
}
function onExample() {
console.log('look example')
}
return {
state,
formRef,
form,
formLabel,
onSubmit,
onGetWayConfirm,
onIspConfirm,
afterRead,
onTemplateConfirm,
onExample
}
},
}
</script>
<style scoped>
.ptint-reserve {
}
.img_item {
border-bottom: 1px solid var(--border-c);
}
.img_item_label {
line-height: 25px;
padding: 5px 16px;
color: #646566;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.img_item_upload {
height: 150px;
margin: 5px;
border: 1px solid var(--border-d);
border-radius: 5px;
}
.img_item_upload span {
line-height: 30px;
color: var(--text-c);
}
.img_item_upload >>> .van-uploader__wrapper,
.img_item_upload >>> .van-uploader__input-wrapper {
width: 100%;
height: 100%;
}
.img_item_upload >>> .van-uploader__preview,
.img_item_upload >>> .van-uploader__preview-image {
width: 100%;
height: 100%;
margin: auto;
}
.img_item_upload >>> .van-uploader__preview-image img {
object-fit: contain !important;
}
.img__blank_error {
color: red;
font-size: 12px;
text-align: right;
padding: 0px 10px 5px;
}
.ptint-reserve >>> .van-field__control {
text-align: right;
}
.print-reserve >>> .van-field__value .van-field__error-message {
text-align: right;
}
.footer {
margin: 10px 5px;
}
.treat {
width: 100%;
height: 65vh;
box-sizing: border-box;
background-color: #fff;
border-radius: 8px 8px 0 0;
padding: 8px 5px;
}
.treat .head {
display: flex;
flex-direction: row;
justify-content: space-between;
padding: 5px 10px;
}
.head_cancel {
color: var(--text-c);
}
.head_title {
text-align: center;
}
.head_confirm {
color: var(--color-primary);
}
.treat_cont {
height: calc(100% - 40px);
overflow: auto;
padding: 8px;
}
.cont_item {
padding: 8px 5px 5px;
margin-bottom: 5px;
border-radius: 5px;
font-size: 13px;
line-height: 20px;
position: relative;
overflow: hidden;
}
.cont_item div {
padding: 3px 0px;
}
.cont_item div span:nth-child(1) {
color: var(--text-c);
}
.cont_item div span:nth-child(2) {
color: var(--text-a);
}
.border_default {
border: #e2e2e2 solid 1px;
}
.border_click {
border: var(--color-primary) solid 1px;
}
.item_checked {
position: absolute;
top: 8px;
right: 10px;
width: 20px;
height: 20px;
}
.treat_filed >>> .van-field__control {
text-align: right;
}
.ptint-reserve >>> .van-popup .van-picker .van-picker-column__item {
/* height: 50px !important; */
}
</style>

@ -1,201 +0,0 @@
<template>
<div class="history">
<select-patient-date :show-code="false"
:days="0"
:show-navbar="false"
:show-date="false"></select-patient-date>
<section>
<section v-for="(item, k) in state.recordList"
:key="k"
:i="item.setup = getSetup(item)">
<div class="record_item">
<div style="height: 50px;margin-right: 40px;padding: 8px 8px 0px;">
<div style="margin: 5px 0;">
<span style="color: var(--text-c);">申请时间</span>{{ item.baBorrowOperDate }}
</div>
<div style="margin: 5px 0;">
<span style="color: var(--text-c);"> </span>{{ item.baBorrowApplyName }}
</div>
</div>
<div style="padding: 0 8px 8px;">
<div><span style="color: var(--text-c);line-height: 20px;"> </span>{{ item.zyNum }}</div>
<div><span style="color: var(--text-c);line-height: 20px;">&emsp;&emsp;</span>{{ item.baBorrowUsetoName }}</div>
<!-- <div><span style="color: var(--text-c);line-height: 20px;">住院科室</span>{{ item.deptName }}</div> -->
<div><span style="color: var(--text-c);line-height: 20px;">获取方式</span>{{ item.baBorrowGetway === 0?'自提': item.baBorrowGetway === 1?'邮寄': ''}}</div>
<div><span style="color: var(--text-c);line-height: 20px;">联系电话</span>{{ item.baBorrowPhone}}</div>
<div><span style="color: var(--text-c);line-height: 20px;">&emsp;&emsp;</span>{{ item.baBorrowAddress }}</div>
<div><span style="color: var(--text-c);line-height: 20px;">&emsp;&emsp;</span>{{ item.baBorrowNote }}</div>
<!-- <div><span style="color: var(--text-c);line-height: 20px;">&emsp;&emsp;</span>{{ item.pages }}</div> -->
<!-- <van-steps :active="item.setup">
<van-step>申请</van-step>
<van-step>审核</van-step>
<van-step>复印成功</van-step>
<van-step>完成</van-step>
</van-steps> -->
</div>
<div style="display: flex;flex-direction: row;justify-content: space-between;align-items: center;">
<!-- <div v-if="item.baBorrowIsApproved"
style="flex: 1;text-align: center;line-height: 35px;background-color: var(--color-success);color: #fdfdfd;padding: 0 5px 5px;margin-right: 2px;"
@click="toPay(item)">
&emsp;
</div> -->
<!-- <div style="flex: 1;text-align: center;line-height: 35px;background-color: var(--color-primary);color: #fdfdfd;padding: 0 5px 5px;"
@click="onOpenDetail(item)">
&emsp;
</div> -->
</div>
<div v-if="item.baBorrowIsApproved === null || item.baBorrowIsApproved === undefined"
class="recipe_tag">待审核</div>
<div v-else-if="item.baBorrowIsApproved"
class="recipe_tag"
style="background-color: var(--color-primary);color: #fff;">已审核</div>
<div v-else-if="!item.baBorrowIsApproved"
class="recipe_tag"
style="background-color: var(--color-danger);color: #fff;"> </div>
</div>
</section>
</section>
<van-popup v-model:show="state.show">
<div style="width: 82vw;max-height: 80vh;min-height: 300px;background-color: #fff;padding: 5px;">
<div style="padding: 5px 10px 8px;font-size: 15px;color: var(--text-a);text-align: center;">病案打印详情</div>
<div>
<van-steps :active="state.setup">
<van-step>申请</van-step>
<van-step>审核</van-step>
<van-step>复印成功</van-step>
<van-step>完成</van-step>
</van-steps>
</div>
</div>
</van-popup>
</div>
</template>
<script>
import { reactive, ref, watch } from 'vue'
import { useRoute, useRouter } from 'vue-helper'
import { axios } from 'axios'
import { store } from 'vue-helper'
export default {
name: 'history',
components: {
'select-patient-date': VueConfig.vueLoader('@/components/patient/select-patient-date.vue')
},
setup(props) {
const state = reactive({
recordList: [], //
show: false, //
setup: 0
})
const mockData = [
{
id: 1,
ipsId: '123456789',
dx: '高血压',
ptId: '11111111',
ptName: '张三',
deptId: '0032',
deptName: '心血管医学中心',
ptIdcId: '111111111111111111',
phone: '15977775551',
applyerName: '',
applyerRel: '',
applyerRelId: '',
ptIdcImg1: '',
ptIdcImg2: '',
applyerIdcImg1: '',
applyerIdcImg2: '',
agreementLetterImg: '',
applyTime: '2023-06-01 12:12:00',
useway: '自用留存',
usewayId: 123,
getWay: '邮寄',
address: '云南省昆明市五华区荷塘月色8栋2单元102室',
expressInfo: '',
stateId: null,
noReviewNote: '',
pages: 15,
isPay: 0,
isPrint: 0,
statusId: null,
statusDate: null,
statusNote: ''
}
]
const patient = ref(null)
function getHistory() {
patient.value = store.getters.getPatient
if (!patient.value || (patient.value && !patient.value.patientId)) return vant.Toast.fail('患者参数缺失,无法查询翻拍记录!')
axios.RGet('wx/xbd/getMRHistory', {
patientId: patient.value.patientId,
}).then(response => {
if (response.code === 200) {
state.recordList = response.data
}
})
}
getHistory()
function onOpenDetail(item) {
// state.show = true
}
function toPay(item) {
}
function getSetup(item) {
if (!item.baBorrowOperDate) return 0
if (item.baBorrowIsApproved) return 1
if (item.baBorrowIsPrint) return 2
if (item.baBorrowIsPay) return 4
}
watch(() => store.getters.getPatient, () => {
getHistory()
})
return {
state,
onOpenDetail,
toPay,
getSetup
}
}
}
</script>
<style scoped>
.history {
}
.record_item {
margin: 5px;
border: 1px solid var(--border-a);
border-radius: 5px;
font-size: 13px;
position: relative;
overflow: hidden;
background-color: #fff;
}
.recipe_tag {
text-align: center;
position: absolute;
background-color: grey;
color: #fff;
width: 100px;
height: 18px;
line-height: 18px;
top: 10px;
right: -30px;
transform: rotate(45deg);
font-size: 13px;
}
.history >>> .van-popup--center {
border-radius: 5px;
}
</style>
Loading…
Cancel
Save