You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. import { reactive } from 'vue'
  2. import { requestNew } from '@/utils/network/request'
  3. import { Index, handleDataList } from '@/components/form-builder/tools'
  4. import { etcCarOcrCard, fileUpload } from '@/utils/network/api.js'
  5. import { useQdOrderStore } from '@/stores/qdOrder.js'
  6. // 配合formBuilderVue3模板使用
  7. export default function () {
  8. const ocrDataFu = [
  9. {
  10. title: '准牵引总质量(kg)',
  11. key: 'towing',
  12. isNumbers: true,
  13. sendKey: "permittedTowWeight"
  14. },
  15. {
  16. title: '核定载人数',
  17. key: 'apc',
  18. isNumbers: true,
  19. sendKey: "approvedCount"
  20. },
  21. {
  22. title: '核定载质量(kg)',
  23. isNumbers: true,
  24. key: 'alc',
  25. sendKey: "permittedWeight"
  26. },
  27. {
  28. title: '总质量(kg)',
  29. isNumbers: true,
  30. key: 'gross',
  31. sendKey: "totalMass"
  32. },
  33. {
  34. title: '整备质量(kg)',
  35. isNumbers: true,
  36. key: 'unladen',
  37. sendKey: "maintenaceMass"
  38. },
  39. {
  40. title: '外廓尺寸',
  41. key: 'overall',
  42. substring: 2, //截取最后两位
  43. sendKey: "vehicleDimensions"
  44. },
  45. ]
  46. let submitQuery = reactive<any>({
  47. orderId: '', //订单ID
  48. man: '', //所有人
  49. character: '', //使用性质
  50. register: '', //注册日期
  51. customerId: '', //用户编号
  52. vehicleId: '',
  53. vehicleIdNum: '', //车牌编号
  54. issueDate: '', //发证日期
  55. vehPosImgUrl: '', //行驶证正面
  56. vehNegImgUrl: '', //行驶证证反面
  57. type: '0', //0,客车 1.货车
  58. useUserType: 0, //车辆用户类型
  59. useUserTypeName: '普通车',
  60. vehicleSign: 2, //前/后装标识
  61. vin: '', //车辆识别代号
  62. engineNum: '', //发动机号码
  63. vehicleType: '', //车辆类型
  64. vehicleModel: '', //行驶证品牌型号
  65. approvedCount: "", //核定人数
  66. totalMass: "", //总质量
  67. maintenaceMass: "", //整备质量
  68. permittedWeight: '', //核定载质量
  69. vehicleDimensions: '', //车辆尺寸
  70. permittedTowWeight: '', //准牵引总质量
  71. axleCount: '', //车轴数
  72. ownerName: '', //车主姓名
  73. ownerIdType: '', //车主证件类型
  74. ownerIdNum: '', //车主证件号码
  75. ownPosImgUrl: '', //车主证件正面图片
  76. ownNegImgUrl: '', //车主证件反面图片
  77. agreementId: '', //签约编号
  78. channelId: '5201018892300000001', //编号渠道
  79. scenePayType: '', //
  80. transportIdNum: '', //道路运输证编号
  81. licenseIdNum: '', //经营许可证编号
  82. vehBodyUrl: '', //车身照片
  83. })
  84. const qdOrderStore = useQdOrderStore()
  85. // 行驶证主业或副业处理
  86. const cardImageOcr = (fileList, item, formData) => {
  87. let imageType : string
  88. if (item.title == '行驶证主页') {
  89. imageType = '1'
  90. } else if (item.title == '行驶证副页') {
  91. imageType = '2'
  92. }
  93. const params = {
  94. source: '1',
  95. agencyId: qdOrderStore.qdOrderVal.agencyId,
  96. imageType: imageType,
  97. fileName: fileList.fileName,
  98. // imageBase64: fileList.path
  99. imageUrl: fileList.url,
  100. }
  101. console.log('请求中etcCarOcrCard', params);
  102. requestNew('/iaw/ocr/vehicleLicenseOcr', {
  103. data: params,
  104. // showLoading: true
  105. }).then((res) => {
  106. if (res.code !== 0) return
  107. let data : any = res.data
  108. const itemData = formData.value[Index(item.title, formData.value)]
  109. // itemData[itemData.value] = data.imageUrl
  110. itemData[itemData.value] = fileList.pathDomain
  111. console.log(data, 'ocr返回数据')
  112. // item[item.value] = data.imageUrl
  113. if (imageType === '1') {
  114. // 需要处理展示的页面
  115. // 正面
  116. if (!data.plate_a || !data.engine) {
  117. uni.showModal({
  118. title: '提示',
  119. content: '识别错误,请上传正确的图片',
  120. success: function (res) { },
  121. })
  122. return
  123. }
  124. const ocrData = [
  125. {
  126. title: '车牌号',
  127. key: 'plate_a',
  128. },
  129. {
  130. title: '车辆类型',
  131. key: 'vehicle',
  132. },
  133. // {
  134. // title: '使用性质',
  135. // key: 'character',
  136. // },
  137. {
  138. title: '发动机号码',
  139. key: 'engine',
  140. },
  141. {
  142. title: '品牌型号',
  143. key: 'model',
  144. },
  145. {
  146. title: '车辆识别代码',
  147. key: 'vin',
  148. },
  149. {
  150. title: '所有人',
  151. key: 'man',
  152. },
  153. {
  154. title: '发证日期',
  155. key: 'issue',
  156. },
  157. {
  158. title: '注册日期',
  159. key: 'register',
  160. },
  161. ]
  162. // 处理数据展示
  163. handleDataList(ocrData, data, formData)
  164. } else {
  165. if (!data.gross || !data.apc) {
  166. uni.showModal({
  167. title: '提示',
  168. content: '识别错误,请上传正确的图片',
  169. success: function (res) { },
  170. })
  171. return
  172. }
  173. // 处理数据展示
  174. handleDataList(ocrDataFu, data, formData)
  175. console.log(formData, 'formData')
  176. }
  177. })
  178. }
  179. // 车身照上传
  180. const cardFileImageUpdate = (fileList, item, formData) => {
  181. const dataItem = formData.value[Index(item.title, formData.value)]
  182. dataItem[dataItem.value] = fileList.pathDomain
  183. }
  184. //图像文件上传
  185. const uploadImgHandle = (fileList, item, formData) => {
  186. if (item.title == '行驶证主页' || item.title == '行驶证副页') {
  187. cardImageOcr(fileList, item, formData)
  188. } else {
  189. cardFileImageUpdate(fileList, item, formData)
  190. }
  191. }
  192. return {
  193. uploadImgHandle,
  194. submitQuery,
  195. ocrDataFu
  196. }
  197. }