Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

ocrHandle.ts 5.4KB

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