Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

ocrHandle.ts 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. import { reactive } from "vue";
  2. import { request } from "@/utils/network/request";
  3. import { Index, handleDataList } from "@/components/form-builder/tools";
  4. import { etcOcrCard, ocrAllQuery, 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. let registerQuery = reactive<any>({});
  10. const qdOrderStore = useQdOrderStore();
  11. // 社会信用代码ocr识别
  12. function cardImageOcrYY(fileList, item, formData) {
  13. const data = {
  14. type: "business_license",
  15. base64: fileList.path
  16. };
  17. request(ocrAllQuery, {
  18. data: data
  19. }).then(res => {
  20. let data : any = JSON.parse(res.bizContent);
  21. if (data.result) {
  22. submitQuery.address = "公司地址ocr获取不到,测试"; //公司地址ocr获取不到,手动填写
  23. submitQuery.userIdType = "203"; //203 公司信用代码
  24. const corporateName = formData.value[Index("公司名称", formData.value)];
  25. corporateName[corporateName.value] = JSON.parse(
  26. data.result.businessLicense
  27. )["名称"];
  28. const creditNum = formData.value[Index("社会信用代码", formData.value)];
  29. creditNum[creditNum.value] = JSON.parse(data.result.businessLicense)[
  30. "统一社会信用代码"
  31. ];
  32. // 将图片上传
  33. cardFileImageUpdate(fileList, item, formData);
  34. }
  35. });
  36. }
  37. // 委托书
  38. function cardFileImageUpdate(fileList, item, formData) {
  39. var data = {
  40. fileBase64: fileList.path
  41. };
  42. request(fileUpload, {
  43. showLoading: true,
  44. data: data
  45. }).then(res => {
  46. // let data: any = JSON.parse(res.bizContent);
  47. let data : any = JSON.parse(res.bizContent);
  48. const dataItem = formData.value[Index(item.title, formData.value)];
  49. dataItem[dataItem.value] = data.data.url;
  50. });
  51. }
  52. // 身份证类别识别
  53. function idCardOcr(fileList, item, formData) {
  54. let imageType;
  55. if (item.title == "人像面" || item.title == "经办人证件人像面") {
  56. imageType = "1";
  57. } else if (item.title == "国徽面" || item.title == "经办人证件国徽面") {
  58. imageType = "2";
  59. }
  60. const data = {
  61. source: "1",
  62. agencyId: qdOrderStore.qdOrderVal.promoterChannelNum,
  63. imageType: imageType,
  64. fileName: fileList.fileName,
  65. imageBase64: fileList.path
  66. };
  67. request(etcOcrCard, {
  68. data: data
  69. }).then(res => {
  70. let data: any = JSON.parse(res.bizContent);
  71. // let data: any
  72. // if(imageType === '1'){
  73. // data = JSON.parse(
  74. // "{\"birthday\":\"1995.04.14\",\"respMessage\":\"ocr识别成功\",\"address\":\"哈尔滨市道外区平安街4号\",\"code\":\"0\",\"statusDesc\":\"成功\",\"gender\":\"男\",\"nation\":\"汉\",\"idno\":\"23010519950414101X\",\"idtype\":\"1\",\"identityId\":\"02d072fbacf54e5cbcc79c7ea1a2897e\",\"imageUrl\":\"http://192.168.101.145:9000/default-bucket/20230810/a043e183c09f472eadbd16e4_1691663206363.jpeg\",\"name\":\"李德伟\",\"imageType\":1,\"respCode\":\"0000\",\"status\":\"000000\"}"
  75. // );
  76. // }else{
  77. // data = JSON.parse(res.bizContent);
  78. // }
  79. let ocrData = [
  80. {
  81. title: item.title,
  82. key: "imageUrl"
  83. }
  84. ];
  85. if (imageType == "1") {
  86. // 人像面
  87. if (!data.name || !data.idno) {
  88. uni.showModal({
  89. title: "提示",
  90. content: "识别错误,请上传正确的图片",
  91. success: function (res) { }
  92. });
  93. return;
  94. }
  95. if (item.title == "经办人证件人像面") {
  96. ocrData = ocrData.concat([
  97. {
  98. title: "经办人姓名",
  99. key: "name"
  100. },
  101. {
  102. title: "经办人证件号码",
  103. key: "idno"
  104. }
  105. ]);
  106. submitQuery.agentIdType = "101"; //身份证类型
  107. submitQuery.agentAddress = data.address; //经办人住址
  108. // registerQuery.agentGender = data.gender == '男' ? 'MALE' : 'FEMALE' //经办人性别
  109. } else {
  110. ocrData = ocrData.concat([
  111. {
  112. title: "姓名",
  113. key: "name"
  114. },
  115. {
  116. title: "证件号码",
  117. key: "idno"
  118. },
  119. {
  120. title: "住址",
  121. key: "address"
  122. }
  123. ]);
  124. submitQuery.userIdType = "101"; //身份证
  125. registerQuery.gender = data.gender == '男' ? 'MALE' : 'FEMALE' //用户性别
  126. }
  127. } else {
  128. if (!data.enddate) {
  129. uni.showModal({
  130. title: "提示",
  131. content: "识别错误,请上传正确的图片",
  132. success: function (res) { }
  133. });
  134. return;
  135. }
  136. if (item.title == "经办人证件国徽面") {
  137. submitQuery.agentIdVld = data.enddate; //经办人证件有效期
  138. } else {
  139. submitQuery.customerIdVld = data.enddate; //证件有效期
  140. }
  141. }
  142. // 处理数据展示
  143. handleDataList(ocrData, data, formData);
  144. });
  145. }
  146. //图像文件上传
  147. function uploadImgHandle(fileList, item, formData) {
  148. if (
  149. ["人像面", "国徽面", "经办人证件人像面", "经办人证件国徽面"].includes(
  150. item.title
  151. )
  152. ) {
  153. idCardOcr(fileList, item, formData);
  154. } else if (item.title == "营业执照") {
  155. cardImageOcrYY(fileList, item, formData);
  156. } else {
  157. cardFileImageUpdate(fileList, item, formData);
  158. }
  159. }
  160. return {
  161. uploadImgHandle,
  162. submitQuery
  163. };
  164. }