index.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <route lang="yaml">
  2. style:
  3. navigationBarTitleText: 全部任务
  4. navigationBarBackgroundColor: '#fff'
  5. </route>
  6. <script setup lang="ts">
  7. import Card from '@designer-hub/app/src/components/card.vue'
  8. import { getTaskList, taskReceive } from '@/core/libs/requests'
  9. import { useUserStore } from '@/store'
  10. import { storeToRefs } from 'pinia'
  11. const userStore = useUserStore()
  12. const { userInfo } = storeToRefs(userStore)
  13. // const tasks = ref([
  14. // {
  15. // status: 0,
  16. // type: 1,
  17. // name: 'imola',
  18. // brand: 'imola瓷砖',
  19. // start: '2024/06/07',
  20. // end: '2024/06/15',
  21. // targe: 30,
  22. // finished: 22,
  23. // },
  24. // {
  25. // status: 0,
  26. // type: 2,
  27. // name: 'imola',
  28. // brand: 'imola瓷砖',
  29. // start: '2024/06/07',
  30. // end: '2024/06/15',
  31. // targe: 30,
  32. // finished: 22,
  33. // },
  34. // {
  35. // status: 0,
  36. // type: 1,
  37. // name: 'imola',
  38. // brand: 'imola瓷砖',
  39. // start: '2024/06/07',
  40. // end: '2024/06/15',
  41. // targe: 30,
  42. // finished: 22,
  43. // },
  44. // ])
  45. const tasksList = ref([])
  46. const types = ref({
  47. 1: { title: '到店', bg: '', bgClass: 'bg-gradient-to-r from-[#cfe0ff] to-[#e1ecff]' },
  48. 2: { title: '订单', bg: '', bgClass: 'bg-gradient-to-r from-[#ffe8cf] to-[#fff3e1]' },
  49. })
  50. const toDetail = async () => {
  51. await uni.navigateTo({ url: '/pages/home/tasks/detail/index' })
  52. }
  53. const acceptingOrders = async () => {
  54. const res = await taskReceive({ brokerId: '', taskId: '' })
  55. }
  56. const initData = async () => {
  57. const res = await getTaskList({ brokerId: userInfo.value.userId })
  58. tasksList.value = res.data
  59. }
  60. onMounted(async () => {
  61. initData()
  62. })
  63. </script>
  64. <template>
  65. <div class="bg-white rounded-lg shadow flex m-[18px] p-[11px]">
  66. <div class="text-black/90 text-base font-normal font-['PingFang SC'] leading-relaxed">
  67. 任务积分
  68. </div>
  69. <div class="flex-1"></div>
  70. <div class="text-[#ff2e2e] text-[22px] font-medium font-['DIN'] leading-none">6153</div>
  71. <div class="w-6 h-6 relative"></div>
  72. </div>
  73. <div class="flex-grow flex flex-col gap-4 p-4">
  74. <template v-for="({ type }, i) of tasksList" :key="i">
  75. <div @click="toDetail()">
  76. <Card :custom-class="`${types[type].bgClass} p-0`" style="padding: 0">
  77. <div class="flex p-4 items-center">
  78. <div
  79. class="w-[47px] h-[23px] px-1 bg-[#2357e9] rounded border justify-center items-center gap-2.5 inline-flex"
  80. >
  81. <div
  82. class="text-right text-white text-xs font-normal font-['PingFang_SC'] leading-tight"
  83. >
  84. 进行中
  85. </div>
  86. </div>
  87. <div class="mx-2.5 text-black/90 text-lg font-normal font-['PingFang_SC'] leading-none">
  88. {{ types[type].title }}量
  89. </div>
  90. <div class="flex-1"></div>
  91. <div class="mx-1.5 text-black/40 text-xs font-normal font-['PingFang_SC'] leading-none">
  92. 奖励积分
  93. </div>
  94. <div class="text-[#ff2e2e] text-[22px] font-medium font-['DIN'] leading-none">2000</div>
  95. </div>
  96. <div class="flex flex-col gap-4 bg-white p-5 rounded-2xl">
  97. <div>
  98. <span class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-none">
  99. 材料商:
  100. </span>
  101. <span class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-none">
  102. imola
  103. </span>
  104. </div>
  105. <div>
  106. <span class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-none">
  107. 品牌:
  108. </span>
  109. <span class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-none">
  110. imola瓷砖
  111. </span>
  112. </div>
  113. <div>
  114. <span class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-none">
  115. 任务时间:
  116. </span>
  117. <span class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-none">
  118. 2024/06/07-2024/09/16
  119. </span>
  120. </div>
  121. <div class="flex items-center border-t border-t-solid border-t-[#efefef] pt-1.5">
  122. <div class="text-black/90 text-sm font-normal font-['PingFang SC']">目标 30</div>
  123. <div class="flex-1"></div>
  124. <div
  125. class="mr-[16px] w-[68px] h-7 px-2.5 py-[3px] rounded-[30px] border border-[#fe5053] justify-center items-center gap-2.5 inline-flex"
  126. style="border: 1px solid #fe5053"
  127. >
  128. <div class="w-9 text-[#ff2d2d] text-xs font-normal font-['PingFang SC']">
  129. 不接单
  130. </div>
  131. </div>
  132. <div
  133. @click="acceptingOrders()"
  134. class="w-[68px] h-7 px-2.5 py-[3px] bg-[#2357e9] rounded-[30px] justify-center items-center gap-2.5 inline-flex"
  135. >
  136. <div class="text-white text-xs font-normal font-['PingFang SC']">接单</div>
  137. </div>
  138. </div>
  139. </div>
  140. </Card>
  141. </div>
  142. </template>
  143. </div>
  144. </template>