classify.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <template>
  2. <view>
  3. <!-- 志愿者 -->
  4. <view class="classify-main" v-if="userType == '2'">
  5. <up-tabs :list="column" :scrollable="false" @change="onChange" :activeStyle="{
  6. color: 'rgba(255, 87, 4, 1)',
  7. fontWeight: 'bold',
  8. transform: 'scale(1.05)'
  9. }" lineColor="rgba(255, 87, 4, 1)" v-model:current="tabKey">
  10. </up-tabs>
  11. <view class="list">
  12. <List :data="data" v-if="data.length > 0" />
  13. <view v-else class="empty-null">
  14. <img src="/static/empty/订单为空.png" alt="">
  15. </view>
  16. </view>
  17. </view>
  18. <!-- 用户 -->
  19. <OrderList :dataList="dataList" @fetchData="getListData" v-else />
  20. </view>
  21. </template>
  22. <script setup>
  23. import {
  24. ref
  25. } from 'vue';
  26. import List from '@/pages_classify/components/orderList/index.vue';
  27. import {
  28. provide
  29. } from 'vue';
  30. import {
  31. getVolunteerOrderList
  32. } from '@/api/volunteer.js'
  33. import {
  34. onMounted
  35. } from 'vue';
  36. import {
  37. useDict
  38. } from '@/utils/dict.js';
  39. import {
  40. onLoad,
  41. onShow
  42. } from '@dcloudio/uni-app';
  43. import OrderList from '@/components/pages/classify/orderlist.vue'
  44. import {
  45. userMainOrderList
  46. } from "@/api/userList.js"
  47. const {
  48. order_status,
  49. lrr_service_status
  50. } = useDict('order_status', 'lrr_service_status');
  51. provide('order_status', order_status); //订单/服务状态
  52. provide('lrr_service_status', lrr_service_status); //订单/服务状态
  53. const userType = uni.getStorageSync('userType') //读取本地存储
  54. // 用户/志愿者 识别标识
  55. const userOrWorker = uni.getStorageSync('storage_data').vuex_userOrWorker //读取本地存储
  56. const tab = ref('');
  57. const tabKey = ref(0);
  58. const dataList = ref([]) //用户
  59. const data = ref([]); //志愿者
  60. /**
  61. * 0待支付 1已支付 2支付超时或取消 3进行中 4已完成 5申请退款中 6已退款 7部分退款 8 待确认
  62. */
  63. const column = [{
  64. name: "全部",
  65. value: "",
  66. },
  67. {
  68. name: "待服务",
  69. value: "0",
  70. },
  71. {
  72. name: "进行中",
  73. value: "1",
  74. },
  75. {
  76. name: "已完成",
  77. value: "2",
  78. },
  79. {
  80. name: "已取消",
  81. value: "3",
  82. }
  83. ]
  84. const column2 = [{
  85. name: "全部",
  86. value: "",
  87. },
  88. {
  89. name: "待支付",
  90. value: "1",
  91. },
  92. {
  93. name: "待服务",
  94. value: "2",
  95. },
  96. {
  97. name: "进行中",
  98. value: "3",
  99. },
  100. {
  101. name: "已完成",
  102. value: "4",
  103. },
  104. {
  105. name: "已取消",
  106. value: "5",
  107. }
  108. ]
  109. async function getList() {
  110. console.log(userType, '>>>>>>userType');
  111. try {
  112. uni.hideLoading();
  113. uni.showLoading({
  114. title: '数据加载中...'
  115. });
  116. // 判断 userType 来决定调用哪个接口
  117. let res;
  118. if (userType === 1) {
  119. // 如果 userType 是 1,调用 userMainOrderList 接口
  120. res = await getListData();
  121. } else if (userType === 2) {
  122. // 如果 userType 是 2,调用 getVolunteerOrderList 接口
  123. res = await getVolunteerOrderList({
  124. orderStatus: tab.value
  125. });
  126. data.value = res.data;
  127. }
  128. } catch (error) {
  129. console.log('error', error);
  130. uni.showToast({
  131. title: error.msg,
  132. icon: 'error',
  133. });
  134. } finally {
  135. uni.hideLoading();
  136. }
  137. }
  138. const getListData = async (orderStatus = tab.value) => {
  139. const res = await userMainOrderList({
  140. orderStatus: orderStatus
  141. });
  142. dataList.value = res.data
  143. }
  144. /**
  145. * 1: 查看
  146. * 2:沟通
  147. * 3:上传照片
  148. */
  149. function btnClick(row, type) {
  150. console.log('btnClick', type, row, row.orderStatus);
  151. if (type === 1 && row.orderStatus === 2) {
  152. uni.navigateTo({
  153. url: `/pages_classify/pages/order/index?orderId=${row.secondOrderId}`
  154. });
  155. return;
  156. }
  157. if (type === 1) {
  158. uni.navigateTo({
  159. url: `/pages_classify/pages/handle/index?orderId=${row.secondOrderId}`
  160. });
  161. return
  162. }
  163. //前往沟通
  164. uni.navigateTo({
  165. url: `/pages_orderuser/pages/talk/pages/index/index?orderId=${row.secondOrderId}`
  166. });
  167. }
  168. provide('onClick', btnClick);
  169. function onChange(tabItem) {
  170. console.log('onChange called with tabItem:', tabItem); // 确认是否进入 onChange
  171. tab.value = tabItem.value;
  172. getList();
  173. console.log('change', tabItem, tab.value);
  174. }
  175. onMounted(() => {
  176. getList()
  177. getListData()
  178. })
  179. onShow(() => {
  180. const params = getApp().globalData.switchTabParams || {};
  181. tabKey.value = params.tabKey || 0;
  182. console.log('cc', params, tabKey.value);
  183. onChange(column[tabKey.value])
  184. // 使用后建议清除参数,避免重复读取
  185. getApp().globalData.switchTabParams = null;
  186. })
  187. </script>
  188. <style lang="scss" scoped>
  189. .classify-main {
  190. height: 100vh;
  191. .list {
  192. position: fixed;
  193. top: 50px;
  194. bottom: 0px;
  195. left: 0px;
  196. right: 0px;
  197. }
  198. }
  199. </style>