order.vue 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. <template>
  2. <view class="ezy-order-page">
  3. <view class="icon-title-navBar-box">
  4. <view @click="goBack" class="nav-bar-icon"></view>
  5. <text class="nav-bar-title">我的订单</text>
  6. </view>
  7. <view class="ezy-tab-border">
  8. <uni-segmented-control :current="dingdanData.current" :values="dingdanData.items" active-color="#3A7FE9"
  9. @clickItem="onChangeTab" class="ezy-tab-box" />
  10. <view>
  11. <view v-if="dingdanData.current === 0">
  12. <scroll-view scroll-y="true" refresher-enabled="true"
  13. :refresher-triggered="dingdanData.quanbu.loading" :refresher-threshold="50"
  14. refresher-background="transparent" @refresherrefresh="onRefresh" class="order-scroll-view">
  15. <!--数学-->
  16. <uni-list>
  17. <uni-list-item v-for="item in dingdanData.quanbu.list" class="order-list-item">
  18. <template v-slot:body>
  19. <view class="order-item-head">
  20. <view class="order-name-box">
  21. <icon></icon><text>鹅状元自营</text>
  22. </view>
  23. <view>
  24. <text>不支持退订</text>
  25. <text v-if="item.status ==2" class="pay-status">已付款</text>
  26. <text v-if="item.status ==3" class="pay-status">已关闭</text>
  27. <text v-if="item.status ==1" class="pay-status">待付款</text>
  28. </view>
  29. </view>
  30. <view class="order-content-box">
  31. <!-- 需要改成从接口获取的 wgy-->
  32. <img class="content-img" src="https://ezy-app.oss-cn-beijing.aliyuncs.com/test/resource/uploadFile02dcefaa15894a99afa5cb95a1f02e89.png">
  33. <view class="content-body-box">
  34. <view class="content-name">数学暑假进阶L1</view>
  35. <view class="content-text">适用于L1和学前,介绍介绍,适用于L1和学前,介绍介绍适用于L1和学前,介绍介绍</view>
  36. <!-- 未付款数据对一下 是否有课程包明细 wgy-->
  37. <view class="content-money-box" v-if="item.status ==1">
  38. <view class="order-kcb-btn" @click="detailBtn">课程包明细<icon></icon></view>
  39. <text class="content-yuanjia">¥{{item.money}}</text>
  40. </view>
  41. <!-- 已付款数据对一下 是否有课程包明细 wgy-->
  42. <view class="content-money-box" v-if="item.status ==2">
  43. <view class="order-kcb-btn" @click="detailBtn">课程包明细<icon></icon></view>
  44. <text class="content-yuanjia">¥{{item.money}}</text>
  45. </view>
  46. </view>
  47. </view>
  48. <!-- 未付款显示付款按钮 wgy-->
  49. <view class="order-bottom-box" v-if="item.status ==1">
  50. <!-- 微信 -->
  51. <view class="pay-status-box" v-if="showPayWay" @click="switchPayWay"><icon class="wx-icon"></icon>微信</view>
  52. <!-- 支付宝 -->
  53. <view class="pay-status-box" v-if="!showPayWay" @click="switchPayWay"><icon class="zfb-icon"></icon>支付宝</view>
  54. <!-- 苹果 -->
  55. <view class="pay-status-box apple-status-box" v-if="false"><icon class="apple-icon"></icon>apple</view>
  56. <view class="pay-btn" @click="handlePay(item)">立即支付</view>
  57. </view>
  58. </template>
  59. </uni-list-item>
  60. <uni-load-more :status="dingdanData.quanbu.state" @click="getMore(0)"
  61. :contentText="dingdanData.quanbu.contentText">
  62. </uni-load-more>
  63. </uni-list>
  64. </scroll-view>
  65. </view>
  66. <view v-if="dingdanData.current === 1">
  67. <scroll-view scroll-y="true" refresher-enabled="true"
  68. :refresher-triggered="dingdanData.daiFukuan.loading" :refresher-threshold="50" class="order-scroll-view"
  69. refresher-background="transparent" @refresherrefresh="onRefresh">
  70. <uni-list>
  71. <uni-list-item v-for="item in dingdanData.daiFukuan.list" class="order-list-item">
  72. <template v-slot:body>
  73. <view class="order-item-head">
  74. <view class="order-name-box">
  75. <icon></icon><text>鹅状元自营</text>
  76. </view>
  77. <view>
  78. <text>不支持退订</text>
  79. <text v-if="item.status ==2" class="pay-status">已付款</text>
  80. <text v-if="item.status ==3" class="pay-status">已关闭</text>
  81. <text v-if="item.status ==1" class="pay-status">待付款</text>
  82. </view>
  83. </view>
  84. <view class="order-content-box">
  85. <!-- 需要改成从接口获取的 -->
  86. <img class="content-img" src="https://ezy-app.oss-cn-beijing.aliyuncs.com/test/resource/uploadFile02dcefaa15894a99afa5cb95a1f02e89.png">
  87. <view class="content-body-box">
  88. <view class="content-name">数学暑假进阶L1</view>
  89. <view class="content-text">适用于L1和学前,介绍介绍,适用于L1和学前,介绍介绍适用于L1和学前,介绍介绍</view>
  90. <view class="content-money-box">
  91. <view class="order-kcb-btn">课程包明细<icon></icon></view>
  92. <text class="content-yuanjia">¥{{item.money}}</text>
  93. </view>
  94. </view>
  95. </view>
  96. <view class="order-bottom-box" v-if="item.status ==1">
  97. <!-- 微信 -->
  98. <view class="pay-status-box" v-if="showPayWay" @click="switchPayWay"><icon class="wx-icon"></icon>微信</view>
  99. <!-- 支付宝 -->
  100. <view class="pay-status-box" v-if="!showPayWay" @click="switchPayWay"><icon class="zfb-icon"></icon>支付宝</view>
  101. <!-- 苹果 -->
  102. <view class="pay-status-box apple-status-box" v-if="false"><icon class="apple-icon"></icon>apple</view>
  103. <view class="pay-btn" @click="handlePay(item)">立即支付</view>
  104. </view>
  105. </template>
  106. </uni-list-item>
  107. <uni-load-more :status="dingdanData.daiFukuan.state" @click="getMore(1)"
  108. :contentText="dingdanData.daiFukuan.contentText">
  109. </uni-load-more>
  110. </uni-list>
  111. </scroll-view>
  112. </view>
  113. <view v-if="dingdanData.current === 2">
  114. <scroll-view scroll-y="true" refresher-enabled="true"
  115. :refresher-triggered="dingdanData.yiFukuan.loading" :refresher-threshold="50" class="order-scroll-view"
  116. refresher-background="transparent" @refresherrefresh="onRefresh">
  117. <uni-list>
  118. <uni-list-item v-for="item in dingdanData.yiFukuan.list" class="order-list-item">
  119. <template v-slot:body>
  120. <view class="order-item-head">
  121. <view class="order-name-box">
  122. <icon></icon><text>鹅状元自营</text>
  123. </view>
  124. <view>
  125. <text>不支持退订</text>
  126. <text v-if="item.status ==2" class="pay-status">已付款</text>
  127. <text v-if="item.status ==3" class="pay-status">已关闭</text>
  128. <text v-if="item.status ==1" class="pay-status">待付款</text>
  129. </view>
  130. </view>
  131. <view class="order-content-box">
  132. <!-- 需要改成从接口获取的 -->
  133. <img class="content-img" src="https://ezy-app.oss-cn-beijing.aliyuncs.com/test/resource/uploadFile02dcefaa15894a99afa5cb95a1f02e89.png">
  134. <view class="content-body-box">
  135. <view class="content-name">数学暑假进阶L1</view>
  136. <view class="content-text">适用于L1和学前,介绍介绍,适用于L1和学前,介绍介绍适用于L1和学前,介绍介绍</view>
  137. <view class="content-money-box">
  138. <text class="content-yuanjia">¥{{item.money}}</text>
  139. <view class="order-kcb-btn">课程包明细<icon></icon></view>
  140. </view>
  141. </view>
  142. </view>
  143. </template>
  144. </uni-list-item>
  145. <uni-load-more :status="dingdanData.yiFukuan.state" @click="getMore(2)"
  146. :contentText="dingdanData.yiFukuan.contentText">
  147. </uni-load-more>
  148. </uni-list>
  149. </scroll-view>
  150. </view>
  151. </view>
  152. </view>
  153. <product-dialog ref="mallProductPopup" @payBtn="payBtn"></product-dialog>
  154. <CustomTabBar></CustomTabBar>
  155. </view>
  156. </template>
  157. <script setup>
  158. import {
  159. reactive,
  160. ref
  161. } from "vue";
  162. import {
  163. getOrderList,
  164. orderAdd
  165. } from "@/api/order";
  166. import {
  167. onLoad
  168. } from "@dcloudio/uni-app";
  169. import {
  170. toast,
  171. getUserIdentity
  172. } from "@/utils/common";
  173. import cacheManager from '@/utils/cacheManager.js';
  174. import CustomTabBar from '@/components/custom-tabbar/custom-tabbar.vue';
  175. import productDialog from '../mall/productDialog.vue'
  176. const mallProductPopup = ref(null);
  177. const showPayWay = ref(true)
  178. function switchPayWay(){
  179. showPayWay.value = !showPayWay.value
  180. }
  181. function detailBtn(){
  182. mallProductPopup.value.detailShow();
  183. }
  184. const dingdanData = reactive({
  185. items: ['全部', '待付款', '已付款'],
  186. current: 0,
  187. quanbu: {
  188. page: 0,
  189. list: [],
  190. loading: false,
  191. state: 'more',
  192. contentText: {
  193. contentdown: '查看更多',
  194. contentrefresh: '加载中',
  195. contentnomore: '没有更多'
  196. }
  197. },
  198. daiFukuan: {
  199. page: 0,
  200. list: [],
  201. loading: false,
  202. state: 'more',
  203. contentText: {
  204. contentdown: '查看更多',
  205. contentrefresh: '加载中',
  206. contentnomore: '没有更多'
  207. }
  208. },
  209. yiFukuan: {
  210. page: 0,
  211. list: [],
  212. loading: false,
  213. state: 'more',
  214. contentText: {
  215. contentdown: '查看更多',
  216. contentrefresh: '加载中',
  217. contentnomore: '没有更多'
  218. }
  219. },
  220. })
  221. function handlePay(item) {
  222. uni.redirectTo({
  223. url: `/pages/pay/svip?cardId=${item.cardId}&formPage=my&orderId=${item.id}`
  224. })
  225. // uni.redirectTo({
  226. // url: `/pages/pay/orderPay?id=${item.id}`
  227. // })
  228. }
  229. function onChangeTab(e) {
  230. if (dingdanData.current !== e.currentIndex) {
  231. dingdanData.current = e.currentIndex;
  232. if (dingdanData.current == 0) {
  233. dingdanData.quanbu.page = 0
  234. } else if (dingdanData.current == 1) {
  235. dingdanData.daiFukuan.page = 0
  236. } else if (dingdanData.current == 2) {
  237. dingdanData.yiFukuan.page = 0
  238. }
  239. refreshData(dingdanData.current);
  240. }
  241. }
  242. function refreshData(code) {
  243. const opt = {
  244. page: 1,
  245. size: 10, // 固定查询10条
  246. status: code
  247. }
  248. if (code == 0) {
  249. dingdanData.quanbu.list = [];
  250. // 数学
  251. dingdanData.quanbu.state = 'loading';
  252. dingdanData.quanbu.page++;
  253. opt.page = dingdanData.quanbu.page;
  254. } else if (code == 1) {
  255. dingdanData.daiFukuan.list = [];
  256. // 英语
  257. dingdanData.daiFukuan.state = 'loading';
  258. dingdanData.daiFukuan.page++;
  259. opt.page = dingdanData.daiFukuan.page;
  260. } else if (code == 2) {
  261. dingdanData.yiFukuan.list = [];
  262. // 英语
  263. dingdanData.yiFukuan.state = 'loading';
  264. dingdanData.yiFukuan.page++;
  265. opt.page = dingdanData.yiFukuan.page;
  266. }
  267. getOrderList(opt).then(res => {
  268. if (code == 0) {
  269. dingdanData.quanbu.list = dingdanData.quanbu.list.concat(res.data.data);
  270. dingdanData.quanbu.loading = false;
  271. } else if (code == 1) {
  272. dingdanData.daiFukuan.list = dingdanData.daiFukuan.list.concat(res.data.data);
  273. dingdanData.daiFukuan.loading = false;
  274. } else if (code == 2) {
  275. dingdanData.yiFukuan.list = dingdanData.yiFukuan.list.concat(res.data.data);
  276. dingdanData.yiFukuan.loading = false;
  277. }
  278. if (code == 0) {
  279. if (res.data.total > dingdanData.quanbu.list.length) {
  280. // 数学
  281. dingdanData.quanbu.state = 'more';
  282. dingdanData.quanbu.loading = false;
  283. } else {
  284. // 数学
  285. dingdanData.quanbu.state = 'no-more';
  286. dingdanData.quanbu.loading = false;
  287. }
  288. } else if (code == 1) {
  289. if (res.data.total > dingdanData.daiFukuan.list.length) {
  290. // 英语
  291. dingdanData.daiFukuan.state = 'more';
  292. dingdanData.daiFukuan.loading = false;
  293. } else {
  294. // 英语
  295. dingdanData.daiFukuan.state = 'no-more';
  296. dingdanData.daiFukuan.loading = false;
  297. }
  298. } else if (code == 2) {
  299. if (res.data.total > dingdanData.yiFukuan.list.length) {
  300. // 英语
  301. dingdanData.yiFukuan.state = 'more';
  302. dingdanData.yiFukuan.loading = false;
  303. } else {
  304. // 英语
  305. dingdanData.yiFukuan.state = 'no-more';
  306. dingdanData.yiFukuan.loading = false;
  307. }
  308. }
  309. }).catch(err => {
  310. if (code == 0) {
  311. // 数学
  312. dingdanData.quanbu.state = 'more';
  313. dingdanData.quanbu.loading = false;
  314. } else if (code == 1) {
  315. // 英语
  316. dingdanData.daiFukuan.state = 'more';
  317. dingdanData.daiFukuan.loading = false;
  318. } else if (code == 2) {
  319. // 英语
  320. dingdanData.yiFukuan.state = 'more';
  321. dingdanData.yiFukuan.loading = false;
  322. }
  323. })
  324. }
  325. function onRefresh() {
  326. if (dingdanData.current == 0) {
  327. dingdanData.quanbu.page = 0;
  328. dingdanData.quanbu.list = [];
  329. dingdanData.quanbu.loading = true;
  330. } else if (dingdanData.current == 1) {
  331. dingdanData.daiFukuan.page = 0;
  332. dingdanData.daiFukuan.list = [];
  333. dingdanData.daiFukuan.loading = true;
  334. } else if (dingdanData.current == 2) {
  335. dingdanData.yiFukuan.page = 0;
  336. dingdanData.yiFukuan.list = [];
  337. dingdanData.yiFukuan.loading = true;
  338. }
  339. refreshData(dingdanData.current);
  340. }
  341. function getMore(code) {
  342. const opt = {
  343. page: 1,
  344. size: 10, // 固定查询10条
  345. status: code // 前台索引加1为学科cardId
  346. }
  347. if (code == 0) {
  348. if (dingdanData.quanbu.state == 'no-more') {
  349. return;
  350. }
  351. // 数学
  352. dingdanData.quanbu.state = 'loading';
  353. dingdanData.quanbu.page++;
  354. opt.page = dingdanData.quanbu.page;
  355. } else if (code == 1) {
  356. if (dingdanData.daiFukuan.state == 'no-more') {
  357. return;
  358. }
  359. dingdanData.daiFukuan.state = 'loading';
  360. dingdanData.daiFukuan.page++;
  361. opt.page = dingdanData.daiFukuan.page;
  362. } else if (code == 2) {
  363. if (dingdanData.yiFukuan.state == 'no-more') {
  364. return;
  365. }
  366. dingdanData.yiFukuan.state = 'loading';
  367. dingdanData.yiFukuan.page++;
  368. opt.page = dingdanData.yiFukuan.page;
  369. }
  370. getOrderList(opt).then(res => {
  371. if (code == 0) {
  372. dingdanData.quanbu.list = dingdanData.quanbu.list.concat(res.data.data);
  373. dingdanData.quanbu.loading = false;
  374. } else if (code == 1) {
  375. dingdanData.daiFukuan.list = dingdanData.daiFukuan.list.concat(res.data.data);
  376. dingdanData.daiFukuan.loading = false;
  377. } else if (code == 2) {
  378. dingdanData.yiFukuan.list = dingdanData.yiFukuan.list.concat(res.data.data);
  379. dingdanData.yiFukuan.loading = false;
  380. }
  381. if (code == 0) {
  382. if (res.data.total > dingdanData.quanbu.list.length) {
  383. // 数学
  384. dingdanData.quanbu.state = 'more';
  385. dingdanData.quanbu.state_text = '加载更多';
  386. dingdanData.quanbu.loading = false;
  387. } else {
  388. // 数学
  389. dingdanData.quanbu.state = 'no-more';
  390. dingdanData.quanbu.state_text = '没有更多啦';
  391. dingdanData.quanbu.loading = false;
  392. }
  393. } else if (code == 1) {
  394. if (res.data.total > dingdanData.daiFukuan.list.length) {
  395. // 英语
  396. dingdanData.daiFukuan.state = 'more';
  397. dingdanData.daiFukuan.state_text = '加载更多';
  398. dingdanData.daiFukuan.loading = false;
  399. } else {
  400. // 英语
  401. dingdanData.daiFukuan.state = 'no-more';
  402. dingdanData.daiFukuan.state_text = '没有更多啦';
  403. dingdanData.daiFukuan.loading = false;
  404. }
  405. } else if (code == 2) {
  406. if (res.data.total > dingdanData.yiFukuan.list.length) {
  407. // 英语
  408. dingdanData.yiFukuan.state = 'more';
  409. dingdanData.yiFukuan.state_text = '加载更多';
  410. dingdanData.yiFukuan.loading = false;
  411. } else {
  412. // 英语
  413. dingdanData.yiFukuan.state = 'no-more';
  414. dingdanData.yiFukuan.state_text = '没有更多啦';
  415. dingdanData.yiFukuan.loading = false;
  416. }
  417. }
  418. }).catch(err => {
  419. if (code == 0) {
  420. // 数学
  421. dingdanData.quanbu.state = 'more';
  422. dingdanData.quanbu.state_text = '加载更多';
  423. dingdanData.quanbu.loading = false;
  424. } else if (code == 1) {
  425. // 英语
  426. dingdanData.daiFukuan.state = 'more';
  427. dingdanData.daiFukuan.state_text = '加载更多';
  428. dingdanData.daiFukuan.loading = false;
  429. } else if (code == 2) {
  430. // 英语
  431. dingdanData.yiFukuan.state = 'more';
  432. dingdanData.yiFukuan.state_text = '加载更多';
  433. dingdanData.yiFukuan.loading = false;
  434. }
  435. })
  436. }
  437. function goBack() {
  438. uni.redirectTo({
  439. url: '/pages/my/index'
  440. })
  441. }
  442. onLoad(() => {
  443. getMore(dingdanData.current);
  444. })
  445. </script>
  446. <style>
  447. </style>