order.vue 16 KB

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