user-recharge.vue 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690
  1. <template>
  2. <view>
  3. <!-- 导航 -->
  4. <view class="nav-base bg-white">
  5. <block v-for="(item, index) in nav_status_list" :key="index">
  6. <view :class="'item fl tc cr-gray ' + (nav_status_index == index ? 'cr-main' : '')" :data-index="index" @tap="nav_event">{{item.name}}</view>
  7. </block>
  8. </view>
  9. <!-- 列表 -->
  10. <scroll-view :scroll-y="true" class="scroll-box scroll-box-ece-nav" @scrolltolower="scroll_lower" lower-threshold="60">
  11. <view v-if="data_list.length > 0" class="data-list padding-horizontal-main padding-top-main">
  12. <view v-for="(item, index) in data_list" :key="index" class="item padding-main border-radius-main oh bg-white spacing-mb">
  13. <view class="base oh br-b padding-bottom-main">
  14. <text class="cr-base">{{item.add_time_time}}</text>
  15. <text class="fr cr-main">{{item.status_name}}</text>
  16. </view>
  17. <view class="content margin-top">
  18. <navigator :url="'/pages/plugins/wallet/user-recharge-detail/user-recharge-detail?id=' + item.id" hover-class="none">
  19. <block v-for="(fv,fi) in content_list">
  20. <view class="single-text margin-top-xs">
  21. <text class="cr-gray margin-right-xl">{{fv.name}}</text>
  22. <text class="cr-base">{{item[fv.field]}}</text>
  23. <text v-if="(fv.unit || null) != null" class="cr-gray">{{fv.unit}}</text>
  24. </view>
  25. </block>
  26. </navigator>
  27. </view>
  28. <view v-if="item.status == 0" class="item-operation tr br-t padding-top-main margin-top-main">
  29. <button class="round bg-white cr-green br-green" type="default" size="mini" @tap="pay_event" :data-value="item.id" :data-index="index" hover-class="none">支付</button>
  30. <button class="round bg-white cr-red br-red" type="default" size="mini" @tap="delete_event" :data-value="item.id" :data-index="index" hover-class="none">删除</button>
  31. </view>
  32. </view>
  33. </view>
  34. <view v-else>
  35. <!-- 提示信息 -->
  36. <component-no-data :propStatus="data_list_loding_status"></component-no-data>
  37. </view>
  38. <!-- 结尾 -->
  39. <component-bottom-line :propStatus="data_bottom_line_status"></component-bottom-line>
  40. </scroll-view>
  41. <!-- 支付二维码展示 -->
  42. <component-popup :propShow="popup_view_pay_qrcode_is_show" propPosition="bottom" @onclose="popup_view_pay_qrcode_event_close">
  43. <view class="padding-top-xxxl padding-bottom-xxxl padding-left-xxxl padding-right-xxxl tc">
  44. <block v-if="(popup_view_pay_data || null) == null || (popup_view_pay_data.qrcode_url || null) == null || (popup_view_pay_data.name || null) == null || (popup_view_pay_data.check_url || null) == null || (popup_view_pay_data.order_no || null) == null">
  45. <text class="cr-gray">无支付信息</text>
  46. </block>
  47. <block v-else>
  48. <view class="fw-b text-size cr-base margin-bottom-sm">{{popup_view_pay_data.name}}</view>
  49. <image :src="popup_view_pay_data.qrcode_url" mode="aspectFit" class="dis-block auto max-w"></image>
  50. <view v-if="(popup_view_pay_data.msg || null) != null" class="cr-yellow margin-top-sm">{{popup_view_pay_data.msg}}</view>
  51. <!-- #ifdef H5 -->
  52. <view v-if="(popup_view_pay_data.pay_url) != null" class="margin-top-xl">
  53. <a :href="popup_view_pay_data.pay_url" target="_blank" class="dis-inline-block cr-green">尝试点击去支付</a>
  54. </view>
  55. <!-- #endif -->
  56. </block>
  57. </view>
  58. </component-popup>
  59. <!-- 支付方式 popup -->
  60. <component-popup :propShow="is_show_payment_popup" propPosition="bottom" @onclose="payment_popup_event_close">
  61. <view v-if="payment_list.length > 0" class="payment-list oh bg-base padding-main">
  62. <view class="padding-top-main padding-left-main">
  63. <view v-for="(item, index) in payment_list" :key="index" class="item tc fl">
  64. <view class="item-content bg-white border-radius-main margin-right-main margin-bottom-main" :data-value="item.id" @tap="popup_payment_event">
  65. <image v-if="(item.logo || null) != null" class="icon va-m margin-right-sm" :src="item.logo" mode="widthFix"></image>
  66. <text class="va-m">{{item.name}}</text>
  67. </view>
  68. </view>
  69. </view>
  70. </view>
  71. <view v-else class="padding-top-xxxl padding-bottom-xxxl oh bg-white tc cr-gray">没有支付方式</view>
  72. </component-popup>
  73. </view>
  74. </template>
  75. <script>
  76. const app = getApp();
  77. import base64 from '../../../../common/js/lib/base64.js';
  78. import componentPopup from "../../../../components/popup/popup";
  79. import componentNoData from "../../../../components/no-data/no-data";
  80. import componentBottomLine from "../../../../components/bottom-line/bottom-line";
  81. export default {
  82. data() {
  83. return {
  84. data_list: [],
  85. data_total: 0,
  86. data_page_total: 0,
  87. data_page: 1,
  88. data_list_loding_status: 1,
  89. data_bottom_line_status: false,
  90. params: null,
  91. load_status: 0,
  92. is_show_payment_popup: false,
  93. payment_list: [],
  94. payment_id: 0,
  95. temp_pay_value: 0,
  96. temp_pay_index: 0,
  97. nav_status_list: [
  98. { name: "全部", value: "-1" },
  99. { name: "待支付", value: "0" },
  100. { name: "已支付", value: "1" },
  101. ],
  102. nav_status_index: 0,
  103. content_list: [
  104. {name: "充值单号", field: "recharge_no"},
  105. {name: "充值金额", field: "money", unit: "元"},
  106. {name: "支付金额", field: "pay_money", unit: "元"}
  107. ],
  108. // 支付信息
  109. popup_view_pay_qrcode_is_show: false,
  110. popup_view_pay_data: null,
  111. popup_view_pay_timer: null
  112. };
  113. },
  114. components: {
  115. componentPopup,
  116. componentNoData,
  117. componentBottomLine
  118. },
  119. props: {},
  120. onLoad(params) {
  121. // 是否指定状态
  122. var nav_status_index = 0;
  123. if ((params.status || null) != null) {
  124. for (var i in this.nav_status_list) {
  125. if (this.nav_status_list[i]['value'] == params.status) {
  126. nav_status_index = i;
  127. break;
  128. }
  129. }
  130. }
  131. this.setData({
  132. params: params,
  133. nav_status_index: nav_status_index
  134. });
  135. this.init();
  136. },
  137. onShow() {
  138. // 分享菜单处理
  139. app.globalData.page_share_handle();
  140. },
  141. // 下拉刷新
  142. onPullDownRefresh() {
  143. this.setData({
  144. data_page: 1
  145. });
  146. this.get_data_list(1);
  147. },
  148. methods: {
  149. init() {
  150. var user = app.globalData.get_user_info(this, 'init');
  151. if (user != false) {
  152. // 用户未绑定用户则转到登录页面
  153. if (app.globalData.user_is_need_login(user)) {
  154. uni.redirectTo({
  155. url: "/pages/login/login?event_callback=init"
  156. });
  157. return false;
  158. } else {
  159. // 获取数据
  160. this.get_data_list();
  161. }
  162. } else {
  163. this.setData({
  164. data_list_loding_status: 0,
  165. data_bottom_line_status: false
  166. });
  167. }
  168. },
  169. // 获取数据
  170. get_data_list(is_mandatory) {
  171. // 分页是否还有数据
  172. if ((is_mandatory || 0) == 0) {
  173. if (this.data_bottom_line_status == true) {
  174. uni.stopPullDownRefresh();
  175. return false;
  176. }
  177. }
  178. // 加载loding
  179. uni.showLoading({
  180. title: '加载中...'
  181. });
  182. this.setData({
  183. data_list_loding_status: 1
  184. });
  185. // 参数
  186. var order_status = (this.nav_status_list[this.nav_status_index] || null) == null ? -1 : this.nav_status_list[this.nav_status_index]['value'];
  187. // 获取数据
  188. uni.request({
  189. url: app.globalData.get_request_url("index", "recharge", "wallet"),
  190. method: 'POST',
  191. data: {
  192. page: this.data_page,
  193. status: order_status,
  194. is_more: 1
  195. },
  196. dataType: 'json',
  197. success: res => {
  198. uni.hideLoading();
  199. uni.stopPullDownRefresh();
  200. if (res.data.code == 0) {
  201. if (res.data.data.data.length > 0) {
  202. if (this.data_page <= 1) {
  203. var temp_data_list = res.data.data.data;
  204. // 下订单支付处理
  205. if (this.load_status == 0) {
  206. var ck = app.globalData.data.cache_page_pay_key;
  207. var pay_data = uni.getStorageSync(ck) || null;
  208. if (pay_data != null) {
  209. uni.removeStorageSync(ck);
  210. this.setData({payment_id: parseInt(pay_data.payment_id || 0)});
  211. for (var i in temp_data_list) {
  212. if (pay_data.order_ids == temp_data_list[i]['id']) {
  213. if(this.payment_id == 0) {
  214. this.setData({
  215. is_show_payment_popup: true,
  216. temp_pay_value: temp_data_list[i]['id'],
  217. temp_pay_index: i
  218. });
  219. } else {
  220. this.pay_handle(pay_data.order_ids, i);
  221. }
  222. break;
  223. }
  224. }
  225. }
  226. }
  227. } else {
  228. var temp_data_list = this.data_list || [];
  229. var temp_data = res.data.data.data;
  230. for (var i in temp_data) {
  231. temp_data_list.push(temp_data[i]);
  232. }
  233. }
  234. this.setData({
  235. data_list: temp_data_list,
  236. data_total: res.data.data.total,
  237. data_page_total: res.data.data.page_total,
  238. data_list_loding_status: 3,
  239. data_page: this.data_page + 1,
  240. load_status: 1,
  241. payment_list: res.data.data.payment_list || []
  242. });
  243. // 是否还有数据
  244. this.setData({
  245. data_bottom_line_status: (this.data_page > 1 && this.data_page > this.data_page_total)
  246. });
  247. } else {
  248. this.setData({
  249. data_list_loding_status: 0,
  250. load_status: 1,
  251. data_list: [],
  252. data_bottom_line_status: false
  253. });
  254. }
  255. } else {
  256. this.setData({
  257. data_list_loding_status: 0,
  258. load_status: 1
  259. });
  260. if (app.globalData.is_login_check(res.data, this, 'get_data_list')) {
  261. app.globalData.showToast(res.data.msg);
  262. }
  263. }
  264. },
  265. fail: () => {
  266. uni.hideLoading();
  267. uni.stopPullDownRefresh();
  268. this.setData({
  269. data_list_loding_status: 2,
  270. load_status: 1
  271. });
  272. app.globalData.showToast('服务器请求出错');
  273. }
  274. });
  275. },
  276. // 滚动加载
  277. scroll_lower(e) {
  278. this.get_data_list();
  279. },
  280. // 支付
  281. pay_event(e) {
  282. this.setData({
  283. is_show_payment_popup: true,
  284. temp_pay_value: e.currentTarget.dataset.value,
  285. temp_pay_index: e.currentTarget.dataset.index
  286. });
  287. },
  288. // 支付弹窗关闭
  289. payment_popup_event_close(e) {
  290. this.setData({
  291. is_show_payment_popup: false
  292. });
  293. },
  294. // 支付弹窗发起支付
  295. popup_payment_event(e) {
  296. var payment_id = e.currentTarget.dataset.value || 0;
  297. this.setData({
  298. payment_id: payment_id
  299. });
  300. this.payment_popup_event_close();
  301. this.pay_handle(this.temp_pay_value, this.temp_pay_index);
  302. },
  303. // 支付方法
  304. pay_handle(recharge_id, index) {
  305. // #ifdef H5
  306. // 微信环境判断是否已有web_openid、不存在则不继续执行跳转到插件进行授权
  307. if(!app.globalData.is_user_weixin_web_openid(recharge_id, this.payment_id)) {
  308. return false;
  309. }
  310. // #endif
  311. // 支付方式
  312. var payment = null;
  313. for(var i in this.payment_list) {
  314. if(this.payment_list[i]['id'] == this.payment_id) {
  315. payment = this.payment_list[i];
  316. }
  317. }
  318. if(payment == null) {
  319. app.globalData.showToast('支付方式有误');
  320. return false;
  321. }
  322. // 请求数据
  323. var post_data = {
  324. recharge_id: recharge_id,
  325. payment_id: this.payment_id
  326. };
  327. // h5自定义重定向地址
  328. // #ifdef H5
  329. post_data['redirect_url'] = encodeURIComponent(base64.encode(app.globalData.get_page_url(false)+(this.nav_status_index > 0 ? '?status='+this.nav_status_index : '')));
  330. // paypal支付方式使用respond_url返回地址、移除重定向地址
  331. if(payment.payment == 'PayPal') {
  332. post_data['respond_url'] = post_data['redirect_url'];
  333. delete post_data['redirect_url'];
  334. }
  335. // #endif
  336. // 请求支付接口
  337. uni.showLoading({
  338. title: "请求中..."
  339. });
  340. uni.request({
  341. url: app.globalData.get_request_url("pay", "recharge", "wallet"),
  342. method: 'POST',
  343. data: post_data,
  344. dataType: 'json',
  345. success: res => {
  346. uni.hideLoading();
  347. if (res.data.code == 0) {
  348. var data = res.data.data;
  349. // #ifdef MP-WEIXIN || MP-ALIPAY || MP-BAIDU || MP-TOUTIAO
  350. this.common_pay_handle(this, data, index);
  351. // #endif
  352. // #ifdef MP-KUAISHOU
  353. this.kuaishou_pay_handle(this, data, index);
  354. // #endif
  355. // #ifdef MP-QQ
  356. this.qq_pay_handle(this, data, index);
  357. // #endif
  358. // #ifdef H5
  359. this.h5_pay_handle(this, data, index);
  360. // #endif
  361. } else {
  362. app.globalData.showToast(res.data.msg);
  363. }
  364. },
  365. fail: () => {
  366. uni.hideLoading();
  367. app.globalData.showToast('服务器请求出错');
  368. }
  369. });
  370. },
  371. // 快手小程序
  372. kuaishou_pay_handle(self, data, index) {
  373. uni.pay({
  374. orderInfo: data.data,
  375. serviceId: '1',
  376. success: res => {
  377. // 数据设置
  378. self.order_item_pay_success_handle(index);
  379. // 跳转支付页面
  380. uni.navigateTo({
  381. url: "/pages/paytips/paytips?code=9000"
  382. });
  383. },
  384. fail: res => {
  385. app.globalData.showToast('支付失败');
  386. }
  387. });
  388. },
  389. // 微信、支付宝、百度、头条、QQ
  390. common_pay_handle(self, data, index) {
  391. uni.requestPayment({
  392. // #ifdef MP-ALIPAY || MP-BAIDU || MP-TOUTIAO
  393. orderInfo: data.data,
  394. // #endif
  395. // #ifdef MP-QQ
  396. package: data.data,
  397. // #endif
  398. // #ifdef MP-WEIXIN
  399. timeStamp: data.data.timeStamp,
  400. nonceStr: data.data.nonceStr,
  401. package: data.data.package,
  402. signType: data.data.signType,
  403. paySign: data.data.paySign,
  404. // #endif
  405. // #ifdef MP-TOUTIAO
  406. service: 5,
  407. // #endif
  408. success: res => {
  409. // #ifdef MP-ALIPAY
  410. if (res.resultCode != 9000) {
  411. app.globalData.showToast(res.memo || '支付失败');
  412. return false;
  413. }
  414. // #endif
  415. // #ifdef MP-TOUTIAO
  416. if (res.code != 0) {
  417. app.globalData.showToast('支付失败');
  418. return false;
  419. }
  420. // #endif
  421. // 数据设置
  422. self.order_item_pay_success_handle(index);
  423. // 跳转支付页面
  424. uni.navigateTo({
  425. url: "/pages/paytips/paytips?code=9000"
  426. });
  427. },
  428. fail: res => {
  429. app.globalData.showToast('支付失败');
  430. }
  431. });
  432. },
  433. // QQ支付处理
  434. qq_pay_handle(self, data, index) {
  435. // 是否微信支付
  436. if(data.payment.payment == 'Weixin') {
  437. uni.requestWxPayment({
  438. url: data.data,
  439. referer: app.globalData.data.request_url,
  440. success: function(res) {
  441. app.globalData.alert({msg: '支付成功后、请不要重复支付、如果订单状态未成功请联系客服处理', is_show_cancel: 0});
  442. self.get_data_list();
  443. },
  444. fail: function (res) {
  445. app.globalData.showToast('支付失败');
  446. }
  447. });
  448. } else {
  449. self.common_pay_handle(self, data, index);
  450. }
  451. },
  452. // h5支付处理
  453. h5_pay_handle(self, data, index) {
  454. // 字符串则为跳转地址直接进入
  455. if(typeof data.data == 'string') {
  456. window.location.href = data.data;
  457. } else {
  458. var status = false;
  459. // 微信jsapi
  460. if(data.payment.payment == 'Weixin' && (data.data.appId || null) != null && (data.data.timeStamp || null) != null && (data.data.nonceStr || null) != null && (data.data.package || null) != null && (data.data.signType || null) != null && (data.data.paySign || null) != null) {
  461. status = true;
  462. function onBridgeReady() {
  463. WeixinJSBridge.invoke("getBrandWCPayRequest", {
  464. appId: data.data.appId,
  465. timeStamp: data.data.timeStamp,
  466. nonceStr: data.data.nonceStr,
  467. package: data.data.package,
  468. signType: data.data.signType,
  469. paySign: data.data.paySign
  470. },
  471. function(res) {
  472. if(res.err_msg == "get_brand_wcpay_request:ok") {
  473. // 数据设置
  474. self.order_item_pay_success_handle(index);
  475. // 跳转支付页面
  476. uni.navigateTo({
  477. url: "/pages/paytips/paytips?code=9000"
  478. });
  479. }
  480. });
  481. }
  482. if(typeof WeixinJSBridge == "undefined") {
  483. if(document.addEventListener) {
  484. document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
  485. } else if (document.attachEvent) {
  486. document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
  487. document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
  488. }
  489. } else {
  490. onBridgeReady();
  491. }
  492. }
  493. // 二维码展示
  494. if((data.data.qrcode_url || null) != null && (data.data.name || null) != null && (data.data.check_url || null) != null && (data.data.order_no || null) != null) {
  495. status = true;
  496. // 显示支付窗口
  497. this.setData({
  498. popup_view_pay_data: data.data,
  499. popup_view_pay_qrcode_is_show: true
  500. });
  501. // 定时校验支付状态
  502. var timer = setInterval(function() {
  503. uni.request({
  504. url: app.globalData.get_request_url("paycheck", "recharge", "wallet"),
  505. method: 'POST',
  506. data: {
  507. order_no: self.popup_view_pay_data.order_no,
  508. },
  509. dataType: 'json',
  510. success: res => {
  511. uni.hideLoading();
  512. if (res.data.code == 0) {
  513. // 清除定时和支付数据
  514. clearInterval(self.popup_view_pay_timer);
  515. self.setData({
  516. popup_view_pay_data: null,
  517. popup_view_pay_qrcode_is_show: false
  518. });
  519. // 数据设置
  520. self.order_item_pay_success_handle(index);
  521. // 跳转支付页面
  522. uni.navigateTo({
  523. url: "/pages/paytips/paytips?code=9000"
  524. });
  525. } else {
  526. // -300支付中、其它状态则提示错误
  527. if(res.data.code != -300) {
  528. clearInterval(self.popup_view_pay_timer);
  529. app.globalData.showToast(res.data.msg);
  530. }
  531. }
  532. },
  533. fail: () => {
  534. clearInterval(self.popup_view_pay_timer);
  535. app.globalData.showToast('服务器请求出错');
  536. }
  537. });
  538. }, 3000);
  539. self.setData({
  540. popup_view_pay_timer: timer
  541. });
  542. }
  543. // 返回html表单
  544. if((data.data.html || null) != null) {
  545. status = true;
  546. var div = document.createElement('paydivform');
  547. div.innerHTML= data.data.html;
  548. document.body.appendChild(div);
  549. var fm = document.forms;
  550. if(fm.length > 0) {
  551. fm[0].submit();
  552. }
  553. }
  554. // 未匹配到的支付处理方式
  555. if(!status) {
  556. app.globalData.showToast(data.payment.name+'支付方式还未适配');
  557. }
  558. }
  559. },
  560. // 支付成功数据设置
  561. order_item_pay_success_handle(index) {
  562. // 数据设置
  563. var temp_data_list = this.data_list;
  564. temp_data_list[index]['pay_money'] = temp_data_list[index]['money'];
  565. temp_data_list[index]['status'] = 1;
  566. temp_data_list[index]['status_name'] = '已支付';
  567. this.setData({
  568. data_list: temp_data_list
  569. });
  570. },
  571. // 删除
  572. delete_event(e) {
  573. uni.showModal({
  574. title: '温馨提示',
  575. content: '删除后不可恢复,确定继续吗?',
  576. confirmText: '确认',
  577. cancelText: '不了',
  578. success: result => {
  579. if (result.confirm) {
  580. // 参数
  581. var id = e.currentTarget.dataset.value;
  582. var index = e.currentTarget.dataset.index;
  583. // 加载loding
  584. uni.showLoading({
  585. title: '处理中...'
  586. });
  587. uni.request({
  588. url: app.globalData.get_request_url("delete", "recharge", "wallet"),
  589. method: 'POST',
  590. data: {
  591. id: id
  592. },
  593. dataType: 'json',
  594. success: res => {
  595. uni.hideLoading();
  596. if (res.data.code == 0) {
  597. var temp_data_list = this.data_list;
  598. temp_data_list.splice(index, 1);
  599. this.setData({
  600. data_list: temp_data_list
  601. });
  602. if (temp_data_list.length == 0) {
  603. this.setData({
  604. data_list_loding_status: 0,
  605. data_bottom_line_status: false
  606. });
  607. }
  608. app.globalData.showToast(res.data.msg, 'success');
  609. } else {
  610. app.globalData.showToast(res.data.msg);
  611. }
  612. },
  613. fail: () => {
  614. uni.hideLoading();
  615. app.globalData.showToast('服务器请求出错');
  616. }
  617. });
  618. }
  619. }
  620. });
  621. },
  622. // 导航事件
  623. nav_event(e) {
  624. this.setData({
  625. nav_status_index: e.currentTarget.dataset.index || 0,
  626. data_page: 1
  627. });
  628. this.get_data_list(1);
  629. },
  630. // 支付二维码展示窗口事件
  631. popup_view_pay_qrcode_event_close(e) {
  632. this.setData({
  633. popup_view_pay_qrcode_is_show: false
  634. });
  635. clearInterval(this.popup_view_pay_timer);
  636. },
  637. // 页面卸载
  638. onUnload(e) {
  639. clearInterval(this.popup_view_pay_timer);
  640. }
  641. }
  642. };
  643. </script>
  644. <style>
  645. @import './user-recharge.css';
  646. </style>