index.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <route lang="json">
  2. {
  3. "style": {
  4. "navigationBarTitleText": "编辑基本信息",
  5. "navigationBarBackgroundColor": "#ffffff"
  6. }
  7. }
  8. </route>
  9. <script setup lang="ts">
  10. import {
  11. getDesignerBasicInfo,
  12. updateDesignerBasicInfo,
  13. } from '../../../../../core/libs/agent-requests'
  14. import { messages } from '../../../../../core/libs/messages'
  15. import BottomAppBar from '@/components/bottom-app-bar.vue'
  16. import DataForm from '@/components/data-form.vue'
  17. import { DataFormSchema } from '../../../../../components/data-form'
  18. import { DesignerBasicInfo } from '@designer-hub/app/src/core/libs/models'
  19. import { requestToast } from '@designer-hub/app/src/core/utils/common'
  20. import { omit } from 'radash'
  21. const tab = ref('basic')
  22. // 基础信息 家庭信息 奖项信息 销售信息 游学/活动信息
  23. const tabs = [
  24. { label: '基础信息', value: 'basic' },
  25. { label: '家庭信息', value: 'family' },
  26. { label: '奖项信息', value: 'award' },
  27. { label: '销售信息', value: 'sale' },
  28. { label: '游学/活动信息', value: 'activity' },
  29. { label: '其他活动信息', value: 'events' },
  30. ]
  31. const id = ref()
  32. const { data: basicData, run: setBasicData } = useRequest(() => getDesignerBasicInfo(id.value))
  33. const formData = ref({})
  34. const schema = ref<
  35. DataFormSchema<
  36. Pick<
  37. DesignerBasicInfo,
  38. | 'companyAddress'
  39. | 'idCardNumber'
  40. | 'passportNumber'
  41. | 'householdAddress'
  42. | 'cooperationTime'
  43. | 'circle'
  44. | 'hobbies'
  45. | 'sharingIntent'
  46. // | 'imageUrl'
  47. | 'maritalStatus'
  48. >
  49. >
  50. >({
  51. companyAddress: {
  52. type: 'TextField',
  53. label: messages.objects.designerBasiceInfo.companyAddress,
  54. labelWidth: 0,
  55. props: undefined,
  56. },
  57. idCardNumber: {
  58. type: 'TextField',
  59. label: messages.objects.designerBasiceInfo.idCardNumber,
  60. },
  61. passportNumber: {
  62. type: 'TextField',
  63. label: messages.objects.designerBasiceInfo.passportNumber,
  64. },
  65. householdAddress: {
  66. type: 'TextField',
  67. label: messages.objects.designerBasiceInfo.householdAddress,
  68. },
  69. cooperationTime: {
  70. type: 'TimePick',
  71. label: messages.objects.designerBasiceInfo.cooperationTime,
  72. },
  73. circle: {
  74. type: 'TextField',
  75. label: messages.objects.designerBasiceInfo.circle,
  76. },
  77. hobbies: {
  78. type: 'TextField',
  79. label: messages.objects.designerBasiceInfo.hobbies,
  80. },
  81. sharingIntent: {
  82. type: 'TextField',
  83. label: messages.objects.designerBasiceInfo.sharingIntent,
  84. },
  85. // imageUrl: {
  86. // type: 'ImageUploader',
  87. // label: messages.objects.designerBasiceInfo.imageUrl,
  88. // },
  89. maritalStatus: {
  90. type: 'Radio',
  91. label: messages.objects.designerBasiceInfo.maritalStatus,
  92. props: {
  93. columns: [
  94. { label: '未婚', value: 1 },
  95. { label: '已婚', value: 2 },
  96. { label: '离婚', value: 3 },
  97. { label: '丧偶', value: 4 },
  98. ],
  99. },
  100. },
  101. })
  102. const eventsQuery = computed(() => ({ type: '3' }))
  103. // const {} = useRequest()
  104. const handleSubmit = async () => {
  105. const { code } = await requestToast(() => updateDesignerBasicInfo(formData.value), {
  106. success: true,
  107. successTitle: '保存成功',
  108. })
  109. if (code === 0) {
  110. await setBasicData()
  111. uni.navigateBack()
  112. }
  113. }
  114. onLoad(async (query: { id: string }) => {
  115. id.value = query.id
  116. await setBasicData()
  117. formData.value = {
  118. ...omit(basicData.value, ['sex']),
  119. }
  120. })
  121. </script>
  122. <template>
  123. <div class="flex-grow bg-white p-4">
  124. <DataForm :schema="schema" v-model="formData" :direction="'horizontal'"></DataForm>
  125. <BottomAppBar fixed placeholder>
  126. <wd-button block :round="false" @click="handleSubmit">保存</wd-button>
  127. </BottomAppBar>
  128. </div>
  129. </template>