show.vue 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. <template>
  2. <!-- header -->
  3. <div class="nav-container page-component">
  4. <!--左侧导航 #start -->
  5. <div class="nav left-nav">
  6. <div class="nav-item ">
  7. <span class="v-link clickable dark" onclick="javascript:window.location='/user'">实名认证 </span>
  8. </div>
  9. <div class="nav-item selected">
  10. <span class="v-link selected dark" onclick="javascript:window.location='/order'"> 挂号订单 </span>
  11. </div>
  12. <div class="nav-item ">
  13. <span class="v-link clickable dark" onclick="javascript:window.location='/patient'"> 就诊人管理 </span>
  14. </div>
  15. <div class="nav-item ">
  16. <span class="v-link clickable dark"> 修改账号信息 </span>
  17. </div>
  18. <div class="nav-item ">
  19. <span class="v-link clickable dark"> 意见反馈 </span>
  20. </div>
  21. </div>
  22. <!-- 左侧导航 #end -->
  23. <!-- 右侧内容 #start -->
  24. <div class="page-container">
  25. <div class="order-detail">
  26. <div class="title"> 挂号详情</div>
  27. <div class="status-bar">
  28. <div class="left-wrapper">
  29. <div class="status-wrapper BOOKING_SUCCESS">
  30. <span class="iconfont"></span> {{ orderInfo.param.orderStatusString }}
  31. </div>
  32. </div>
  33. <div class="right-wrapper">
  34. <img src="//img.114yygh.com/static/web/code_order_detail.png" class="code-img">
  35. <div class="content-wrapper">
  36. <div> 微信<span class="iconfont"></span>关注“北京114预约挂号”</div>
  37. <div class="watch-wrapper"> 快速挂号,轻松就医</div>
  38. </div>
  39. </div>
  40. </div>
  41. <div class="info-wrapper">
  42. <div class="title-wrapper">
  43. <div class="block"></div>
  44. <div>挂号信息</div>
  45. </div>
  46. <div class="info-form">
  47. <el-form ref="form" :model="form">
  48. <el-form-item label="就诊人信息:">
  49. <div class="content"><span>{{ orderInfo.patientName }}</span></div>
  50. </el-form-item>
  51. <el-form-item label="就诊日期:">
  52. <div class="content"><span>{{ orderInfo.reserveDate }} {{ orderInfo.reserveTime == 0 ? '上午' : '下午' }}</span></div>
  53. </el-form-item>
  54. <el-form-item label="就诊医院:">
  55. <div class="content"><span>{{ orderInfo.hosname }} </span></div>
  56. </el-form-item>
  57. <el-form-item label="就诊科室:">
  58. <div class="content"><span>{{ orderInfo.depname }} </span></div>
  59. </el-form-item>
  60. <el-form-item label="医生职称:">
  61. <div class="content"><span>{{ orderInfo.title }} </span></div>
  62. </el-form-item>
  63. <el-form-item label="医事服务费:">
  64. <div class="content">
  65. <div class="fee">{{ orderInfo.amount }}元
  66. </div>
  67. </div>
  68. </el-form-item>
  69. <el-form-item label="挂号单号:">
  70. <div class="content"><span>{{ orderInfo.outTradeNo }} </span></div>
  71. </el-form-item>
  72. <el-form-item label="挂号时间:">
  73. <div class="content"><span>{{ orderInfo.createTime }}</span></div>
  74. </el-form-item>
  75. </el-form>
  76. </div>
  77. </div>
  78. <div class="rule-wrapper mt40">
  79. <div class="rule-title"> 注意事项</div>
  80. <div>1、请确认就诊人信息是否准确,若填写错误将无法取号就诊,损失由本人承担;<br>
  81. <span style="color:red">2、【取号】就诊当天需在{{ orderInfo.fetchTime }}在医院取号,未取号视为爽约,该号不退不换;</span><br>
  82. 3、【退号】在{{ orderInfo.quitTime }}前可在线退号 ,逾期将不可办理退号退费;<br>
  83. 4、北京114预约挂号支持自费患者使用身份证预约,同时支持北京市医保患者使用北京社保卡在平台预约挂号。请于就诊当日,携带预约挂号所使用的有效身份证件到院取号;<br>
  84. 5、请注意北京市医保患者在住院期间不能使用社保卡在门诊取号。
  85. </div>
  86. </div>
  87. <div class="bottom-wrapper mt60" v-if="orderInfo.orderStatus == 0 || orderInfo.orderStatus == 1">
  88. <div class="button-wrapper">
  89. <div class="v-button white" @click="cancelOrder()">取消预约</div>
  90. </div>
  91. <div class="button-wrapper ml20" v-if="orderInfo.orderStatus == 0">
  92. <div class="v-button" @click="pay()">支付</div>
  93. </div>
  94. </div>
  95. </div>
  96. </div>
  97. <!-- 右侧内容 #end -->
  98. <!-- 微信支付弹出框 -->
  99. <el-dialog :visible.sync="dialogPayVisible" style="text-align: left" :append-to-body="true" width="500px" @close="closeDialog">
  100. <div class="container">
  101. <div class="operate-view" style="height: 350px;">
  102. <div class="wrapper wechat">
  103. <div>
  104. <!-- <img src="images/weixin.jpg" alt="">-->
  105. <qriously :value="payObj.codeUrl" :size="220"/>
  106. <div style="text-align: center;line-height: 25px;margin-bottom: 40px;">
  107. 请使用微信扫一扫<br/>
  108. 扫描二维码支付
  109. </div>
  110. </div>
  111. </div>
  112. </div>
  113. </div>
  114. </el-dialog>
  115. </div>
  116. <!-- footer -->
  117. </template>
  118. <script>
  119. import '~/assets/css/hospital_personal.css'
  120. import '~/assets/css/hospital.css'
  121. import orderInfoApi from '@/api/order/orderInfo'
  122. import weixinApi from '@/api/order/weixin'
  123. export default {
  124. data() {
  125. return {
  126. orderId: null,
  127. orderInfo: {
  128. param: {}
  129. },
  130. dialogPayVisible: false,
  131. payObj: {},
  132. timer: null // 定时器名称
  133. }
  134. },
  135. created() {
  136. this.orderId = this.$route.query.orderId
  137. this.init()
  138. },
  139. methods: {
  140. init() {
  141. orderInfoApi.getOrderInfo(this.orderId).then(response => {
  142. console.log(response.data);
  143. this.orderInfo = response.data
  144. })
  145. },
  146. cancelOrder() {
  147. this.$confirm('确定取消预约吗?', '提示', {
  148. confirmButtonText: '确定',
  149. cancelButtonText: '取消',
  150. type: 'warning'
  151. }).then(() => { // promise
  152. // 点击确定,远程调用
  153. return orderInfoApi.cancelOrder(this.orderId)
  154. }).then((response) => {
  155. this.$message.success('取消成功')
  156. this.init()
  157. }).catch(() => {
  158. this.$message.info('已取消取消预约')
  159. })
  160. },
  161. pay() {
  162. this.dialogPayVisible = true
  163. weixinApi.createNative(this.orderId).then(response => {
  164. this.payObj = response.data
  165. if(this.payObj.codeUrl == '') {
  166. this.dialogPayVisible = false
  167. this.$message.error("支付错误")
  168. } else {
  169. this.timer = setInterval(() => {
  170. this.queryPayStatus(this.orderId)
  171. }, 3000);
  172. }
  173. })
  174. },
  175. queryPayStatus(orderId) {
  176. weixinApi.queryPayStatus(orderId).then(response => {
  177. debugger
  178. if (response.message == '支付中') {
  179. return
  180. }
  181. clearInterval(this.timer);
  182. window.location.reload()
  183. })
  184. },
  185. closeDialog() {
  186. debugger
  187. if(this.timer) {
  188. clearInterval(this.timer);
  189. }
  190. }
  191. }
  192. }
  193. </script>
  194. <style>
  195. .info-wrapper {
  196. padding-left: 0;
  197. padding-top: 0;
  198. }
  199. .content-wrapper {
  200. color: #333;
  201. font-size: 14px;
  202. padding-bottom: 0;
  203. }
  204. .bottom-wrapper {
  205. width: 100%;
  206. }
  207. .button-wrapper {
  208. margin: 0;
  209. }
  210. .el-form-item {
  211. margin-bottom: 5px;
  212. }
  213. .bottom-wrapper .button-wrapper {
  214. margin-top: 0;
  215. }
  216. </style>