classify.vue 5.8 KB

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