Pay.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <template>
  2. <div>
  3. <common @asynCallBack="asynCallBack"></common>
  4. <top-header :pageTitle="pageTitle" ></top-header>
  5. <div class="mui-content vongi-qingjiadt margin60">
  6. <div class="vongi-cashier">
  7. <img :src="detail.goodsPic" alt="">
  8. <div class="vongi-cashier-text">
  9. <div class="vongi-text-tit">
  10. <h3 class="flew-sp ellipsis">
  11. {{detail.goodsName}}</h3>
  12. <p class="ellipsis">{{detail.goodsDesc}}</p>
  13. </div>
  14. <h3 class="flew-sp">¥{{detail.totalFee}}<p>×1</p></h3>
  15. </div>
  16. </div>
  17. <form class="mui-input-group">
  18. <div class="mui-input-row">
  19. <label>购买者姓名</label>
  20. <span>{{detail.name}}</span>
  21. </div>
  22. <div class="mui-input-row">
  23. <label>支付订单号</label>
  24. <span>{{detail.outOrderNo}}</span>
  25. </div>
  26. <div class="mui-input-row">
  27. <label>合计金额</label>
  28. <span style="color:#ED6A0C">¥{{detail.totalFee}}</span>
  29. </div>
  30. </form>
  31. <div class="mui-content-padded"><h5>支付方式</h5></div>
  32. <form class="mui-input-group margin10">
  33. <div class="mui-input-row mui-radio">
  34. <label>微信支付</label>
  35. <input name="radio1" type="radio" value="1" v-model="paytypeindex" >
  36. </div>
  37. <div class="mui-input-row mui-radio">
  38. <label>支付宝支付</label>
  39. <input name="radio1" type="radio" value="2" v-model="paytypeindex">
  40. </div>
  41. </form>
  42. <div class="vongi-qingjiadt vongi-editme">
  43. <form class="mui-input-group">
  44. <div class="mui-input-row">
  45. <label>推广人</label>
  46. <input type="number" class="mui-input-clear" placeholder="请输入推广人编号,没有可不填" v-model="paycode">
  47. </div>
  48. </form>
  49. </div>
  50. <div class="vongi-cashier-btn-row">
  51. <div class="vongi-cashier-btn-white">
  52. <span>合计:¥{{detail.totalFee}}</span>
  53. <div class="vongi-cashier-btn" @click="submit">支付</div>
  54. </div>
  55. </div>
  56. </div>
  57. <img id="qrcode">
  58. <loading :visible="isLoading"></loading>
  59. </div>
  60. </template>
  61. <script>
  62. import * as API_Pay from '$project/apis/payment'
  63. import Common from '$project/components/Common.vue'
  64. import Loading from '$project/components/Loading.vue'
  65. import TopHeader from '$project/components/TopHeader.vue'
  66. require('$project/assets/js/mui.picker.min.js');
  67. import QRCode from 'qrcodejs2'
  68. import {
  69. mapGetters,
  70. mapMutations
  71. } from 'vuex'
  72. import {
  73. wxPayJs
  74. } from '$project/utils/wxpay'
  75. import {
  76. convertCanvasToImage,
  77. currentTimeStamp,
  78. parseUnixTime
  79. } from '$project/utils'
  80. export default {
  81. name: 'MasterLivePay',
  82. components: {
  83. Common,
  84. Loading,
  85. TopHeader
  86. },
  87. data() {
  88. return {
  89. pageTitle: '收银台',
  90. paytypeindex:"1",
  91. paycode:'',
  92. paytype:"微信支付",
  93. qrCodeImg:"",
  94. isLoading: false,
  95. detail:{}
  96. }
  97. },
  98. created() {
  99. this.detail=this.$route.query;
  100. console.log(this.detail);
  101. if(this.detail.goodsPic=="null"){
  102. this.detail.goodsPic=null;
  103. } },
  104. methods: {
  105. selectPay() {
  106. var picker = new mui.PopPicker();
  107. picker.setData([{
  108. text: "微信支付",
  109. value: '1'
  110. }
  111. ,
  112. {
  113. text: "支付宝扫码",
  114. value: '2'
  115. }
  116. // ,
  117. // {
  118. // text: "现场支付",
  119. // value: '0'
  120. // }
  121. ]);
  122. picker.show((selectItems) => {
  123. this.paytypeindex=selectItems[0].value;
  124. this.paytype=selectItems[0].text;
  125. });
  126. },
  127. //提交表单
  128. submit() {
  129. this.isLoading=true;
  130. if(this.paytypeindex=="1"){
  131. API_Pay.wxJsapiPay(this.detail.id,this.paycode).then(data=>{
  132. //公共页面
  133. data.url=window.location.href.split("#")[0]+"/#/master/live/paySuccess";
  134. this.isLoading=false;
  135. wxPayJs(data)
  136. }).catch(error => {
  137. this.isLoading = false;
  138. mui.toast(error);
  139. })
  140. }else if(this.paytypeindex=="2"){
  141. API_Pay.tradePrecreatePay(this.detail.id,this.paycode).then(url=>{
  142. this.isLoading = false;
  143. let qrcode = new QRCode('qrcode', {
  144. width: 200,
  145. height: 200,
  146. text: url,
  147. correctLevel: QRCode.CorrectLevel.M,
  148. })
  149. var canvas = document.getElementsByTagName('canvas')[0];
  150. this.qrCodeImg = convertCanvasToImage(canvas);
  151. var btnArray = ['关闭',"支付成功?"];
  152. var _this=this
  153. mui.confirm('<img src="'+this.qrCodeImg+'" >',
  154. '请使用支付宝扫码', btnArray, function(e) {
  155. if (e.index == 1) {
  156. _this.$router.push({
  157. name: 'MasterLiveInfo',
  158. })
  159. }
  160. })
  161. }).catch(error => {
  162. this.isLoading = false;
  163. mui.toast(error);
  164. })
  165. }
  166. },asynCallBack(){},
  167. },
  168. mounted() {
  169. },
  170. destroyed() {
  171. },
  172. computed: {
  173. ...mapGetters({
  174. openId: 'wx_openid',
  175. token: 'token',
  176. person_data: 'person_data',
  177. person_popedom: 'person_popedom',
  178. })
  179. }
  180. }
  181. </script>
  182. <style scoped src="$project/assets/css/pension.css"></style>
  183. <style scoped src="$project/assets/css/xpwyfyy.css"></style>
  184. <style src="$project/assets/css/iconfont.css"></style>
  185. <style>
  186. </style>