index.vue 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <route lang="json">
  2. { "style": { "navigationBarTitleText": "其他活动信息", "navigationBarBackgroundColor": "#fff" } }
  3. </route>
  4. <script setup lang="ts">
  5. import {
  6. deleteOtherSales,
  7. deleteDesignerEvent,
  8. getDesignerEvents,
  9. createDesignerEvent,
  10. updateDesignerEvent,
  11. } from '@/core/libs/agent-requests'
  12. import Card from '@/components/card.vue'
  13. import PageHelperEvo from '@/components/page-helper-evo.vue'
  14. import BottomAppBar from '@/components/bottom-app-bar.vue'
  15. import DataForm from '@/components/data-form.vue'
  16. import { DataFormSchema } from '@/components/data-form'
  17. import { DesignerEvent, DesignerOrderSaleOther } from '@designer-hub/app/src/core/libs/models'
  18. import { ComponentExposed } from 'vue-component-type-helpers'
  19. import { requestToast } from '@designer-hub/app/src/core/utils/common'
  20. import { messages } from '@/core/libs/messages'
  21. import dayjs from 'dayjs'
  22. const id = ref()
  23. const actionSheetStatus = ref(false)
  24. const formData = ref({})
  25. const schema = ref<DataFormSchema<Omit<DesignerEvent, 'id' | 'createTime' | 'userId'>>>({
  26. applyTime: {
  27. type: 'TimePick',
  28. label: messages.objects.designerEvent.applyTime,
  29. required: true,
  30. props: {
  31. defaultValue: new Date(),
  32. type: 'date',
  33. },
  34. },
  35. name: {
  36. type: 'TextField',
  37. label: messages.objects.designerEvent.name,
  38. required: true,
  39. },
  40. })
  41. const rules = ref({
  42. applyTime: [
  43. {
  44. required: true,
  45. message: '请选择活动时间',
  46. },
  47. ],
  48. name: [{ required: true, message: '请输入活动名称' }],
  49. })
  50. const formRef = ref<ComponentExposed<typeof DataForm>>()
  51. const pageHelperRef = ref<ComponentExposed<typeof PageHelperEvo>>()
  52. const query = computed(() => ({ userId: id.value, type: 3 }))
  53. const handleSubmit = async () => {
  54. const { valid } = await formRef.value!.validate()
  55. if (!valid) return
  56. if (Object.keys(formData.value).includes('id')) {
  57. await requestToast(() => updateDesignerEvent(formData.value), {
  58. success: true,
  59. successTitle: '保存成功',
  60. })
  61. } else {
  62. await requestToast(
  63. () =>
  64. createDesignerEvent({
  65. ...formData.value,
  66. userId: Number(id.value),
  67. }),
  68. { success: true, successTitle: '保存成功' },
  69. )
  70. }
  71. actionSheetStatus.value = false
  72. formData.value = {}
  73. await pageHelperRef.value?.reload()
  74. }
  75. const handleEdit = (item: DesignerEvent) => {
  76. formData.value = item
  77. console.log(formData.value,"formData.value")
  78. actionSheetStatus.value = true
  79. }
  80. const handleDelete = async (item: DesignerEvent) => {
  81. await requestToast(() => deleteDesignerEvent(item.id), {
  82. success: true,
  83. successTitle: '删除成功',
  84. })
  85. await pageHelperRef.value?.reload()
  86. }
  87. onLoad((query?: Record<string | 'id', string>) => {
  88. id.value = query?.id
  89. })
  90. </script>
  91. <template>
  92. <div class="flex-grow flex flex-col">
  93. <div class="mt-4 bg-white flex-grow">
  94. <PageHelperEvo
  95. ref="pageHelperRef"
  96. :request="getDesignerEvents"
  97. :query="query"
  98. class="flex-grow"
  99. >
  100. <template #default="{ source }">
  101. <div class="flex flex-col gap-4 p-8.75">
  102. <template v-for="(it, index) in source?.list" :key="index">
  103. <div>
  104. <div
  105. class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-relaxed"
  106. >
  107. {{ it.name }}
  108. </div>
  109. <div class="flex items-center justify-between">
  110. <div
  111. class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-relaxed"
  112. >
  113. 参加日期:
  114. {{ dayjs(it.applyTime).format('YYYY/MM/DD') }}
  115. </div>
  116. <div class="flex gap-6">
  117. <wd-button type="text" :round="false" size="small" @click="handleEdit(it)">
  118. 编辑
  119. </wd-button>
  120. <wd-button type="text" :round="false" size="small" @click="handleDelete(it)">
  121. 删除
  122. </wd-button>
  123. </div>
  124. </div>
  125. </div>
  126. <!-- <div class="grid grid-cols-[90px_1fr] gap-2.5">-->
  127. <!-- <template-->
  128. <!-- v-for="(item, i) in [-->
  129. <!-- { label: '材料商', value: it.supplierName },-->
  130. <!-- { label: '品牌', value: it.brandName },-->
  131. <!-- { label: '项目名称', value: it.projectName },-->
  132. <!-- { label: '客户姓名', value: it.customerName },-->
  133. <!-- { label: '客户电话', value: it.customerPhone },-->
  134. <!-- { label: '订单金额', value: it.orderAmount + '元' },-->
  135. <!-- ]"-->
  136. <!-- :key="i"-->
  137. <!-- >-->
  138. <!-- <div class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-none">-->
  139. <!-- {{ item.label }}-->
  140. <!-- </div>-->
  141. <!-- <div class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-none">-->
  142. <!-- {{ item.value }}-->
  143. <!-- </div>-->
  144. <!-- </template>-->
  145. <!-- </div>-->
  146. <!-- <div class="bg-[#f4f4f4] h-.25 my-4"></div>-->
  147. <!-- <div class="flex justify-between">-->
  148. <!-- <div class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-normal">-->
  149. <!-- {{ dayjs(it.createTime).format('YYYY-MM-DD HH:mm') }}-->
  150. <!-- </div>-->
  151. <!-- </div>-->
  152. </template>
  153. </div>
  154. </template>
  155. </PageHelperEvo>
  156. </div>
  157. <div class="py-2 bg-[#f0f4ff]">
  158. <div
  159. class="text-center text-[#2357e9] text-xs font-normal font-['PingFang_SC'] leading-normal"
  160. >
  161. 其他活动不参与线上活动统计
  162. </div>
  163. </div>
  164. <BottomAppBar fixed placeholder>
  165. <div class="w-full">
  166. <wd-button block :round="false" @click="((actionSheetStatus = true), (formData = {}))">
  167. 添加
  168. </wd-button>
  169. </div>
  170. </BottomAppBar>
  171. <wd-action-sheet v-model="actionSheetStatus">
  172. <div class="p-4">
  173. <DataForm
  174. ref="formRef"
  175. :rules="rules"
  176. :schema="schema"
  177. :direction="'horizontal'"
  178. v-model="formData"
  179. ></DataForm>
  180. <wd-button :round="false" block @click="handleSubmit">保存</wd-button>
  181. </div>
  182. </wd-action-sheet>
  183. </div>
  184. </template>
  185. <style scoped lang="scss"></style>