index.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  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 { getByDictType } from '../../../../../core/libs/requests'
  15. import { messages } from '../../../../../core/libs/messages'
  16. import BottomAppBar from '@/components/bottom-app-bar.vue'
  17. import DataForm from '@/components/data-form.vue'
  18. import { DataFormSchema } from '../../../../../components/data-form'
  19. import { DesignerBasicInfo } from '@designer-hub/app/src/core/libs/models'
  20. import { requestToast } from '@designer-hub/app/src/core/utils/common'
  21. import { omit } from 'radash'
  22. const tab = ref('basic')
  23. // 基础信息 家庭信息 奖项信息 销售信息 游学/活动信息
  24. const tabs = [
  25. { label: '基础信息', value: 'basic' },
  26. { label: '家庭信息', value: 'family' },
  27. { label: '奖项信息', value: 'award' },
  28. { label: '销售信息', value: 'sale' },
  29. { label: '游学/活动信息', value: 'activity' },
  30. { label: '其他活动信息', value: 'events' },
  31. ]
  32. const id = ref()
  33. const wish = ref()
  34. const { data: basicData, run: setBasicData } = useRequest(() => getDesignerBasicInfo(id.value))
  35. const formData = ref({})
  36. const schema = ref<
  37. DataFormSchema<
  38. Pick<
  39. DesignerBasicInfo,
  40. | 'companyAddress'
  41. | 'idCardNumber'
  42. | 'passportNumber'
  43. | 'householdAddress'
  44. | 'cooperationTime'
  45. | 'circle'
  46. | 'hobbies'
  47. | 'sharingIntent'
  48. | 'imageUrl'
  49. // | 'maritalStatus'
  50. | 'maritalStatusStr'
  51. >
  52. >
  53. >({
  54. employer: {
  55. type: 'TextField',
  56. label: messages.objects.designerBasiceInfo.employer,
  57. labelWidth: 120,
  58. props: undefined,
  59. },
  60. companyAddress: {
  61. type: 'TextField',
  62. label: messages.objects.designerBasiceInfo.companyAddress,
  63. labelWidth: 120,
  64. props: undefined,
  65. },
  66. idCardNumber: {
  67. type: 'TextField',
  68. label: messages.objects.designerBasiceInfo.idCardNumber,
  69. labelWidth: 120,
  70. },
  71. passportNumber: {
  72. type: 'TextField',
  73. label: messages.objects.designerBasiceInfo.passportNumber,
  74. labelWidth: 120,
  75. },
  76. householdAddress: {
  77. type: 'TextField',
  78. label: messages.objects.designerBasiceInfo.householdAddress,
  79. labelWidth: 120,
  80. },
  81. cooperationTime: {
  82. type: 'TimePick',
  83. label: messages.objects.designerBasiceInfo.cooperationTime,
  84. labelWidth: 120,
  85. props: {
  86. type: 'date',
  87. },
  88. },
  89. circle: {
  90. type: 'TextField',
  91. label: messages.objects.designerBasiceInfo.circle,
  92. labelWidth: 120,
  93. },
  94. hobbies: {
  95. type: 'TextField',
  96. label: messages.objects.designerBasiceInfo.hobbies,
  97. labelWidth: 120,
  98. },
  99. sharingIntent: {
  100. // type: 'TextField',
  101. // label: messages.objects.designerBasiceInfo.sharingIntent,
  102. // labelWidth: 120,
  103. type: 'Select',
  104. label: messages.objects.designerBasiceInfo.sharingIntent,
  105. labelWidth: 120,
  106. props: {
  107. // columns: [
  108. // { label: '不愿意', value: 3 },
  109. // { label: '一般', value: 1 },
  110. // { label: '愿意', value: 2 },
  111. // { label: '非常愿意', value: 4 },
  112. // ],
  113. columns: []
  114. },
  115. },
  116. // imageUrl: {
  117. // type: 'ImageUploader',
  118. // label: messages.objects.designerBasiceInfo.imageUrl,
  119. // },
  120. maritalStatus: {
  121. type: 'Select',
  122. label: messages.objects.designerBasiceInfo.maritalStatus,
  123. labelWidth: 120,
  124. props: {
  125. columns: [
  126. { label: '未婚', value: 1 },
  127. { label: '已婚', value: 2 },
  128. { label: '离婚', value: 3 },
  129. { label: '丧偶', value: 4 },
  130. ],
  131. },
  132. },
  133. })
  134. const eventsQuery = computed(() => ({ type: '3' }))
  135. const handleSubmit = async () => {
  136. console.log(formData.value)
  137. const { code } = await requestToast(
  138. () =>
  139. updateDesignerBasicInfo({
  140. ...formData.value,
  141. userId: id.value,
  142. }),
  143. {
  144. success: true,
  145. successTitle: '保存成功',
  146. },
  147. )
  148. if (code === 0) {
  149. await setBasicData()
  150. await uni.navigateBack()
  151. }
  152. }
  153. onLoad(async (query: { id: string }) => {
  154. id.value = query.id
  155. await setBasicData()
  156. formData.value = {
  157. ...omit(basicData.value, ['sex']),
  158. };
  159. let value1 = await getByDictType('sharing_intent_type')
  160. schema.value.sharingIntent!.props!.columns = value1.data
  161. // console.log(value1)
  162. console.log(schema.value.sharingIntent.props?.columns)
  163. })
  164. </script>
  165. <template>
  166. <div class="flex-grow bg-white p-4">
  167. <DataForm :schema="schema" v-model="formData" :direction="'horizontal'"></DataForm>
  168. <BottomAppBar fixed placeholder>
  169. <wd-button block :round="false" @click="handleSubmit">保存</wd-button>
  170. </BottomAppBar>
  171. </div>
  172. </template>