classify.vue 4.6 KB

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