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.

ocrHandle.ts 4.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  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. };
  62. request(etcCarOcrCard, {
  63. data: data
  64. }).then(res => {
  65. let data: any = JSON.parse(res.bizContent);
  66. const itemData = formData.value[Index(item.title, formData.value)];
  67. itemData[itemData.value] = data.imageUrl;
  68. console.log(data);
  69. // item[item.value] = data.imageUrl
  70. if (imageType == "1") {
  71. // 需要处理展示的页面
  72. // 正面
  73. if (!data.plate_a || !data.engine) {
  74. uni.showModal({
  75. title: "提示",
  76. content: "识别错误,请上传正确的图片",
  77. success: function(res) {}
  78. });
  79. return;
  80. }
  81. const ocrData = [
  82. {
  83. title: "车牌号",
  84. key: "plate_a"
  85. },
  86. {
  87. title: "车辆类型",
  88. key: "vehicle"
  89. },
  90. {
  91. title: "使用性质",
  92. key: "character"
  93. },
  94. {
  95. title: "发动机号码",
  96. key: "engine"
  97. },
  98. {
  99. title: "品牌型号",
  100. key: "model"
  101. },
  102. {
  103. title: "车辆识别代码",
  104. key: "vin"
  105. },
  106. {
  107. title: "所有人",
  108. key: "man"
  109. },
  110. {
  111. title: "发证日期",
  112. key: "issue"
  113. },
  114. {
  115. title: "注册日期",
  116. key: "register"
  117. }
  118. ];
  119. // 处理数据展示
  120. handleDataList(ocrData, data, formData);
  121. } else {
  122. if (!data.gross || !data.apc) {
  123. uni.showModal({
  124. title: "提示",
  125. content: "识别错误,请上传正确的图片",
  126. success: function(res) {}
  127. });
  128. return;
  129. }
  130. const ocrData = [
  131. {
  132. title: "准牵引总质量(kg)",
  133. key: "towing",
  134. isNumber: true
  135. },
  136. {
  137. title: "核定载人数",
  138. key: "apc",
  139. isNumber: true
  140. },
  141. {
  142. title: "核定载质量(kg)",
  143. isNumber: true,
  144. key: "alc"
  145. },
  146. {
  147. title: "总质量(kg)",
  148. isNumber: true,
  149. key: "gross"
  150. },
  151. {
  152. title: "整备质量(kg)",
  153. isNumber: true,
  154. key: "unladen"
  155. },
  156. {
  157. title: "外廓尺寸",
  158. key: "overall",
  159. substring: 2 //截取最后两位
  160. }
  161. ];
  162. // 处理数据展示
  163. handleDataList(ocrData, data, formData);
  164. }
  165. });
  166. };
  167. // 车身照上传
  168. const cardFileImageUpdate = (fileList, item, formData) => {
  169. var data = {
  170. fileBase64: fileList.path
  171. };
  172. request(fileUpload, {
  173. data: data
  174. }).then(res => {
  175. let data: any = JSON.parse(res.bizContent);
  176. const dataItem = formData.value[Index(item.title, formData.value)];
  177. dataItem[dataItem.value] = data.data.url;
  178. });
  179. };
  180. //图像文件上传
  181. const uploadImgHandle = (fileList, item, formData) => {
  182. if (item.title == "行驶证主页" || item.title == "行驶证副页") {
  183. cardImageOcr(fileList, item, formData);
  184. } else {
  185. cardFileImageUpdate(fileList, item, formData);
  186. }
  187. }
  188. return {
  189. uploadImgHandle,
  190. submitQuery
  191. };
  192. }