pagereceivecenter.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <script>
  2. import orderCard from "./compounts/orderCard.vue";
  3. export default {
  4. components: {
  5. orderCard,
  6. },
  7. data() {
  8. return {
  9. orderList: [],
  10. page: {
  11. pageSize: 10,
  12. pageNum: 1,
  13. total: 0
  14. },
  15. }
  16. },
  17. onLoad() {
  18. //初始调用
  19. // this.getOrderList();
  20. uni.navigateTo({
  21. url: `/pages/orderDetailNew/index?orderId=5464&item=测试发单&type=undefined&clueId=1973381744953516033`,
  22. })
  23. },
  24. methods: {
  25. //获取列表数据
  26. async getOrderList() {
  27. try {
  28. const result = await uni.$u.api.selectClueOrderFormList({
  29. pageSize: this.page.pageSize,
  30. pageNum: this.page.pageNum,
  31. });
  32. console.log('接单列表', result);
  33. // 把数组按照status的大小排序,从小到大
  34. result.rows.sort((a, b) => {
  35. return a.status - b.status;
  36. })
  37. this.orderList.push(...result.rows);
  38. this.page.total = result.total;
  39. } catch (error) {
  40. console.error('接单列表接口调用失败:', error);
  41. // 添加用户友好的错误提示
  42. uni.$u.toast('获取订单列表失败,请稍后重试');
  43. }
  44. },
  45. // 处理按钮点击事件
  46. handleBtnClick(btnType, order) {
  47. if (btnType == 'acceptOrder') {
  48. //去接单
  49. console.log('去接单', order)
  50. //跳转接单form
  51. uni.navigateTo({
  52. url: `/pages/orderDetailNew/index?orderId=${order.id}&item=${order.item}&type=${this.type}&clueId=${order.clueId}`,
  53. })
  54. } else if (btnType == 'isBusy') {
  55. //在忙
  56. console.log('在忙', order)
  57. //当前订单移动到末尾
  58. this.orderList.push(this.orderList.splice(this.orderList.indexOf(order), 1)[0]);
  59. } else if (btnType == 'willFollow') {
  60. //待跟进
  61. console.log('待跟进', order)
  62. } else if (btnType == 'tag') {
  63. //打标签
  64. console.log('打标签', order)
  65. } else if (btnType == 'share') {
  66. //一键分享
  67. console.log('一键分享', order)
  68. } else if (btnType == 'oneFollow') {
  69. //待跟进
  70. console.log('待跟进', order)
  71. }
  72. },
  73. //滑动加载
  74. scrolltolower() {
  75. console.log('到底了');
  76. if (this.orderList.length >= this.page.total) {
  77. return uni.$u.toast('没有更多了');
  78. }
  79. this.page.pageNum++;
  80. this.getOrderList();
  81. },
  82. }
  83. }
  84. </script>
  85. <template>
  86. <view class="container">
  87. <u-navbar title="接单中心" :autoBack="true" :placeholder="true" v-hideNav></u-navbar>
  88. <view class="scrollViewContainer">
  89. <scroll-view class="scrollView" scroll-y @scrolltolower="scrolltolower">
  90. <transition-group name="order-move" tag="div">
  91. <orderCard v-for="item in orderList" :key="item.receiptId + item.id" :order="item"
  92. @handleBtnClick="handleBtnClick">
  93. </orderCard>
  94. </transition-group>
  95. <view class="hasMore">
  96. {{ orderList.length >= page.total ? '没有更多了~' : '向下滑动加载更多~' }}
  97. </view>
  98. </scroll-view>
  99. </view>
  100. </view>
  101. </template>
  102. <style scoped lang="scss">
  103. .hasMore {
  104. text-align: center;
  105. padding: 20rpx 0;
  106. font-size: 24rpx;
  107. color: #999;
  108. }
  109. .scrollViewContainer {
  110. height: calc(100vh - 44px);
  111. }
  112. .scrollView {
  113. height: 100%;
  114. }
  115. /* 订单移动动画 */
  116. .order-move-enter-active,
  117. .order-move-leave-active {
  118. transition: all 0.5s ease;
  119. }
  120. .order-move-enter-from,
  121. .order-move-leave-to {
  122. opacity: 0;
  123. transform: translateY(30px);
  124. }
  125. .order-move-move {
  126. transition: transform 0.5s ease;
  127. }
  128. </style>