qualifications_logic.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. import { submitAudit, uploadFile } from '@/api/fulfiller'
  2. export default {
  3. data() {
  4. return {
  5. serviceTypes: [], // 从上一页传递过来的服务类型列表
  6. qualifications: {}, // 存储本地预览路径 { '宠物接送': ['path1', ...], ... }
  7. qualOssIds: {}, // 存储OSS ID { '宠物接送': ['id1', ...], ... }
  8. }
  9. },
  10. onLoad(options) {
  11. if (options.services) {
  12. try {
  13. this.serviceTypes = JSON.parse(decodeURIComponent(options.services));
  14. // 初始化 qualifications 对象(以服务名称为key)
  15. this.serviceTypes.forEach(item => {
  16. this.qualifications[item.name] = [];
  17. this.qualOssIds[item.name] = [];
  18. });
  19. } catch (e) {
  20. console.error('Parse services failed', e);
  21. }
  22. }
  23. },
  24. methods: {
  25. chooseImage(serviceName) {
  26. uni.chooseImage({
  27. count: 9,
  28. sizeType: ['compressed'],
  29. sourceType: ['album', 'camera'],
  30. success: async (res) => {
  31. if (!this.qualifications[serviceName]) {
  32. this.qualifications[serviceName] = [];
  33. this.qualOssIds[serviceName] = [];
  34. }
  35. // 逐个上传到OSS
  36. for (const tempPath of res.tempFilePaths) {
  37. this.qualifications[serviceName].push(tempPath);
  38. this.$forceUpdate();
  39. try {
  40. const uploadRes = await uploadFile(tempPath);
  41. this.qualOssIds[serviceName].push(uploadRes.data.ossId);
  42. } catch (err) {
  43. console.error('上传资质图片失败:', err);
  44. }
  45. }
  46. }
  47. });
  48. },
  49. deleteImage(serviceName, index) {
  50. this.qualifications[serviceName].splice(index, 1);
  51. if (this.qualOssIds[serviceName]) {
  52. this.qualOssIds[serviceName].splice(index, 1);
  53. }
  54. this.$forceUpdate();
  55. },
  56. goBackToForm() {
  57. // 尝试返回填写页
  58. const pages = getCurrentPages();
  59. if (pages.length > 2) {
  60. uni.navigateBack({
  61. delta: 2
  62. });
  63. } else {
  64. // 如果页面栈不够(比如直接进入该页),则重定向
  65. uni.reLaunch({
  66. url: '/pages/recruit/form'
  67. });
  68. }
  69. },
  70. async submit() {
  71. // 收集前面页面暂存在本地的表单数据
  72. let recruitData = {}
  73. try {
  74. const stored = uni.getStorageSync('recruit_form_data')
  75. if (stored) {
  76. recruitData = JSON.parse(stored)
  77. }
  78. } catch (e) {
  79. console.error('读取招募表单数据失败', e)
  80. }
  81. // 收集所有资质图片OSS ID
  82. const allQualOssIds = [];
  83. Object.values(this.qualOssIds).forEach(ids => {
  84. allQualOssIds.push(...ids);
  85. });
  86. // 组装提交数据(匹配 FlfAuditBo 字段)
  87. const auditData = {
  88. name: recruitData.name || '',
  89. phone: recruitData.mobile || '',
  90. password: recruitData.password || '',
  91. gender: recruitData.gender === 1 ? '0' : '1',
  92. birthday: recruitData.birthday || '',
  93. serviceTypes: (recruitData.serviceType || []).join(','), // 逗号分隔的服务类型ID
  94. city: recruitData.city || '',
  95. stationId: recruitData.stationId || null,
  96. realName: recruitData.realName || '',
  97. idCard: recruitData.idNumber || '',
  98. idValidDate: recruitData.expiryDate || '',
  99. idCardFront: recruitData.idCardFrontOssId || null,
  100. idCardBack: recruitData.idCardBackOssId || null,
  101. qualifications: allQualOssIds.join(',') // 逗号分隔的资质图片OSS ID
  102. }
  103. uni.showLoading({ title: '提交中...' })
  104. try {
  105. await submitAudit(auditData)
  106. uni.hideLoading()
  107. uni.reLaunch({
  108. url: '/pages/recruit/success'
  109. })
  110. } catch (err) {
  111. uni.hideLoading()
  112. console.error('提交申请失败:', err)
  113. }
  114. }
  115. }
  116. }