order.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  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 ==0||item.status ==1" class="pay-status">已付款</text>
  26. <text v-if="item.status ==2" class="pay-status">待付款</text>
  27. </view>
  28. </view>
  29. <view class="order-content-box">
  30. <icon :class="'content-img'+item.cardId"></icon>
  31. <view class="content-body-box">
  32. <view class="content-name">SVIP终身卡</view>
  33. <view class="content-tag">终身有效</view>
  34. <view class="content-yuanjia">¥{{item.cardYuanjia}}</view>
  35. </view>
  36. </view>
  37. <view class="order-bottom-box">
  38. <view class="bottom-money-box">
  39. <text class="bottom-data">{{item.ctime}}</text>
  40. <text class="bottom-money">实付款:¥{{item.money}}</text>
  41. </view>
  42. <!-- v-if="item.status ==1" -->
  43. <view class="bottom-btn">立即支付</view>
  44. </view>
  45. </template>
  46. </uni-list-item>
  47. <uni-load-more :status="dingdanData.quanbu.state" @click="getMore(0)"
  48. :contentText="dingdanData.quanbu.contentText">
  49. </uni-load-more>
  50. </uni-list>
  51. </scroll-view>
  52. </view>
  53. <view v-if="dingdanData.current === 1">
  54. <scroll-view style="height: 300px;" scroll-y="true" refresher-enabled="true"
  55. :refresher-triggered="dingdanData.daiFukuan.loading" :refresher-threshold="50"
  56. refresher-background="lightgreen" @refresherrefresh="onRefresh">
  57. </scroll-view>
  58. </view>
  59. <view v-if="dingdanData.current === 2">
  60. <scroll-view style="height: 300px;" scroll-y="true" refresher-enabled="true"
  61. :refresher-triggered="dingdanData.yifukuan.loading" :refresher-threshold="50"
  62. refresher-background="lightgreen" @refresherrefresh="onRefresh">
  63. </scroll-view>
  64. </view>
  65. </view>
  66. </view>
  67. <CustomTabBar></CustomTabBar>
  68. </view>
  69. </template>
  70. <script setup>
  71. import {
  72. reactive,
  73. ref
  74. } from "vue";
  75. import {
  76. getOrderList
  77. } from "@/api/order";
  78. import {
  79. onLoad
  80. } from "@dcloudio/uni-app";
  81. import {
  82. toast,
  83. getUserIdentity
  84. } from "@/utils/common";
  85. import cacheManager from '@/utils/cacheManager.js';
  86. import CustomTabBar from '@/components/custom-tabbar/custom-tabbar.vue';
  87. const dingdanData = reactive({
  88. items: ['全部', '待付款', '已付款'],
  89. current: 0,
  90. quanbu: {
  91. page: 0,
  92. list: [],
  93. loading: false,
  94. state: 'more',
  95. contentText: {
  96. contentdown: '查看更多',
  97. contentrefresh: '加载中',
  98. contentnomore: '没有更多'
  99. }
  100. },
  101. daiFukuan: {
  102. page: 0,
  103. list: [],
  104. loading: false,
  105. state: 'more',
  106. contentText: {
  107. contentdown: '查看更多',
  108. contentrefresh: '加载中',
  109. contentnomore: '没有更多'
  110. }
  111. },
  112. yiFukuan: {
  113. page: 0,
  114. list: [],
  115. loading: false,
  116. state: 'more',
  117. contentText: {
  118. contentdown: '查看更多',
  119. contentrefresh: '加载中',
  120. contentnomore: '没有更多'
  121. }
  122. },
  123. })
  124. function onChangeTab(e) {
  125. if (dingdanData.current !== e.currentIndex) {
  126. dingdanData.current = e.currentIndex;
  127. if (dingdanData.current == 0) {
  128. dingdanData.quanbu.page = 0
  129. } else if (dingdanData.current == 1) {
  130. dingdanData.daiFukuan.page = 0
  131. } else if (dingdanData.current == 2) {
  132. dingdanData.yiFukuan.page = 0
  133. }
  134. refreshData(dingdanData.current);
  135. }
  136. }
  137. function refreshData(code) {
  138. const opt = {
  139. page: 1,
  140. size: 10, // 固定查询10条
  141. status: code
  142. }
  143. if (code == 0) {
  144. dingdanData.quanbu.list = [];
  145. // 数学
  146. dingdanData.quanbu.state = 'loading';
  147. dingdanData.quanbu.page++;
  148. opt.page = dingdanData.quanbu.page;
  149. } else if (code == 1) {
  150. dingdanData.daiFukuan.list = [];
  151. // 英语
  152. dingdanData.daiFukuan.state = 'loading';
  153. dingdanData.daiFukuan.page++;
  154. opt.page = dingdanData.daiFukuan.page;
  155. } else if (code == 2) {
  156. dingdanData.yiFukuan.list = [];
  157. // 英语
  158. dingdanData.yiFukuan.state = 'loading';
  159. dingdanData.yiFukuan.page++;
  160. opt.page = dingdanData.yiFukuan.page;
  161. }
  162. getOrderList(opt).then(res => {
  163. if (code == 0) {
  164. dingdanData.quanbu.list = dingdanData.quanbu.list.concat(res.data.data);
  165. dingdanData.quanbu.loading = false;
  166. } else if (code == 1) {
  167. dingdanData.daiFukuan.list = dingdanData.daiFukuan.list.concat(res.data.data);
  168. dingdanData.daiFukuan.loading = false;
  169. } else if (code == 2) {
  170. dingdanData.yiFukuan.list = dingdanData.yiFukuan.list.concat(res.data.data);
  171. dingdanData.yiFukuan.loading = false;
  172. }
  173. if (code == 0) {
  174. if (res.data.total >= dingdanData.quanbu.list.length) {
  175. // 数学
  176. dingdanData.quanbu.state = 'no-more';
  177. dingdanData.quanbu.loading = false;
  178. } else {
  179. // 数学
  180. dingdanData.quanbu.state = 'more';
  181. dingdanData.quanbu.loading = false;
  182. }
  183. } else if (code == 1) {
  184. if (res.data.total >= dingdanData.daiFukuan.list.length) {
  185. // 英语
  186. dingdanData.daiFukuan.state = 'no-more';
  187. dingdanData.daiFukuan.loading = false;
  188. } else {
  189. // 英语
  190. dingdanData.daiFukuan.state = 'more';
  191. dingdanData.daiFukuan.loading = false;
  192. }
  193. } else if (code == 1) {
  194. if (res.data.total >= dingdanData.yiFukuan.list.length) {
  195. // 英语
  196. dingdanData.yiFukuan.state = 'no-more';
  197. dingdanData.yiFukuan.loading = false;
  198. } else {
  199. // 英语
  200. dingdanData.yiFukuan.state = 'more';
  201. dingdanData.yiFukuan.loading = false;
  202. }
  203. }
  204. }).catch(err => {
  205. if (code == 0) {
  206. // 数学
  207. dingdanData.quanbu.state = 'more';
  208. dingdanData.quanbu.loading = false;
  209. } else if (code == 1) {
  210. // 英语
  211. dingdanData.daiFukuan.state = 'more';
  212. dingdanData.daiFukuan.loading = false;
  213. } else if (code == 2) {
  214. // 英语
  215. dingdanData.yiFukuan.state = 'more';
  216. dingdanData.yiFukuan.loading = false;
  217. }
  218. })
  219. }
  220. function onRefresh() {
  221. if (dingdanData.current == 0) {
  222. dingdanData.quanbu.page = 0;
  223. dingdanData.quanbu.list = [];
  224. dingdanData.quanbu.loading = true;
  225. } else if (dingdanData.current == 1) {
  226. dingdanData.daiFukuan.page = 0;
  227. dingdanData.daiFukuan.list = [];
  228. dingdanData.daiFukuan.loading = true;
  229. } else if (dingdanData.current == 2) {
  230. dingdanData.yiFukuan.page = 0;
  231. dingdanData.yiFukuan.list = [];
  232. dingdanData.yiFukuan.loading = true;
  233. }
  234. refreshData(dingdanData.current);
  235. }
  236. function getMore(code) {
  237. const opt = {
  238. page: 1,
  239. size: 10, // 固定查询10条
  240. status: code // 前台索引加1为学科cardId
  241. }
  242. if (code == 0) {
  243. if (dingdanData.quanbu.state == 'no-more') {
  244. return;
  245. }
  246. // 数学
  247. dingdanData.quanbu.state = 'loading';
  248. dingdanData.quanbu.page++;
  249. opt.page = dingdanData.quanbu.page;
  250. } else if (code == 1) {
  251. if (dingdanData.daiFukuan.state == 'no-more') {
  252. return;
  253. }
  254. dingdanData.daiFukuan.state = 'loading';
  255. dingdanData.daiFukuan.page++;
  256. opt.page = dingdanData.daiFukuan.page;
  257. } else if (code == 2) {
  258. if (dingdanData.yiFukuan.state == 'no-more') {
  259. return;
  260. }
  261. dingdanData.yiFukuan.state = 'loading';
  262. dingdanData.yiFukuan.page++;
  263. opt.page = dingdanData.yiFukuan.page;
  264. }
  265. getOrderList(opt).then(res => {
  266. if (code == 0) {
  267. dingdanData.quanbu.list = dingdanData.quanbu.list.concat(res.data.data);
  268. dingdanData.quanbu.loading = false;
  269. } else if (code == 1) {
  270. dingdanData.daiFukuan.list = dingdanData.daiFukuan.list.concat(res.data.data);
  271. dingdanData.daiFukuan.loading = false;
  272. } else if (code == 2) {
  273. dingdanData.yiFukuan.list = dingdanData.yiFukuan.list.concat(res.data.data);
  274. dingdanData.yiFukuan.loading = false;
  275. }
  276. if (code == 0) {
  277. if (res.data.total >= dingdanData.quanbu.list.length) {
  278. // 数学
  279. dingdanData.quanbu.state = 'no-more';
  280. dingdanData.quanbu.state_text = '没有更多啦';
  281. dingdanData.quanbu.loading = false;
  282. } else {
  283. // 数学
  284. dingdanData.quanbu.state = 'more';
  285. dingdanData.quanbu.state_text = '加载更多';
  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 = 'no-more';
  292. dingdanData.daiFukuan.state_text = '没有更多啦';
  293. dingdanData.daiFukuan.loading = false;
  294. } else {
  295. // 英语
  296. dingdanData.daiFukuan.state = 'more';
  297. dingdanData.daiFukuan.state_text = '加载更多';
  298. dingdanData.daiFukuan.loading = false;
  299. }
  300. } else if (code == 2) {
  301. if (res.data.total >= dingdanData.yiFukuan.list.length) {
  302. // 英语
  303. dingdanData.yiFukuan.state = 'no-more';
  304. dingdanData.yiFukuan.state_text = '没有更多啦';
  305. dingdanData.yiFukuan.loading = false;
  306. } else {
  307. // 英语
  308. dingdanData.yiFukuan.state = 'more';
  309. dingdanData.yiFukuan.state_text = '加载更多';
  310. dingdanData.yiFukuan.loading = false;
  311. }
  312. }
  313. }).catch(err => {
  314. if (code == 0) {
  315. // 数学
  316. dingdanData.quanbu.state = 'more';
  317. dingdanData.quanbu.state_text = '加载更多';
  318. dingdanData.quanbu.loading = false;
  319. } else if (code == 1) {
  320. // 英语
  321. dingdanData.daiFukuan.state = 'more';
  322. dingdanData.daiFukuan.state_text = '加载更多';
  323. dingdanData.daiFukuan.loading = false;
  324. } else if (code == 2) {
  325. // 英语
  326. dingdanData.yiFukuan.state = 'more';
  327. dingdanData.yiFukuan.state_text = '加载更多';
  328. dingdanData.yiFukuan.loading = false;
  329. }
  330. })
  331. }
  332. function goBack() {
  333. uni.redirectTo({
  334. url: '/pages/my/index'
  335. })
  336. }
  337. onLoad(() => {
  338. getMore(dingdanData.current);
  339. })
  340. </script>
  341. <style>
  342. </style>