unify-external-plugin-platform 0.0.2-37 → 0.0.2-39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -81799,6 +81799,359 @@ var index = (function () {
81799
81799
  /* harmony default export */ __webpack_exports__["default"] = (index);
81800
81800
 
81801
81801
 
81802
+ /***/ }),
81803
+
81804
+ /***/ 3144:
81805
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
81806
+
81807
+ "use strict";
81808
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
81809
+ /* harmony export */ "g$": function() { return /* binding */ tsToJs; },
81810
+ /* harmony export */ "oK": function() { return /* binding */ GetIDCardOnly; },
81811
+ /* harmony export */ "xj": function() { return /* binding */ loadCamera; }
81812
+ /* harmony export */ });
81813
+ /* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7658);
81814
+ /* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);
81815
+
81816
+ var tsToJs = {
81817
+ /**
81818
+ * @return {any}
81819
+ */
81820
+ getElement: function Stirng(flag, photoId) {
81821
+ var plugin;
81822
+ if (flag == 1) {
81823
+ // 中正人脸识别,但是用不起来,换websocket形式调用了,此处弃用,害!
81824
+ debugger;
81825
+ // if (location.href.indexOf('TakePhoto') == -1) {
81826
+ console.log("人脸识别开始-----");
81827
+ var plugin = document.getElementById("facePlugin");
81828
+ console.log("plugin-----", plugin);
81829
+ var data = "$=Action";
81830
+ var temp = plugin.SendDataToADB("127.0.0.1", 1352, 15000, data, data.length);
81831
+ console.log(temp + "-----====");
81832
+ //处理返回的结果,获取相应的属性
81833
+ if (typeof temp === "undefined") {
81834
+ return null;
81835
+ }
81836
+ var str = temp.split("$");
81837
+ var result = str[1].split("=#=")[1];
81838
+ console.log("result:" + result + "-----++++");
81839
+ var name = str[2].split("=#=")[1];
81840
+ var sex = str[3].split("=#=")[1];
81841
+ var cardNo = str[4].split("=#=")[1];
81842
+ console.log("cardNo:" + cardNo + "-----++++");
81843
+ var address = str[5].split("=#=")[1];
81844
+ var birthday = str[6].split("=#=")[1];
81845
+ var cardImg = str[8].split("=#=")[1];
81846
+ var faceImg = str[9].split("=#=")[1];
81847
+ var race = str[10].split("=#=")[1];
81848
+ var regOrg = str[11].split("=#=")[1];
81849
+ var validTime = str[12].split("=#=")[1];
81850
+ var validTimeStart = validTime.split("-")[0];
81851
+ var validTimeEnd = validTime.split("-")[1];
81852
+ //处理身份证信息并赋值
81853
+ var objSfz = {
81854
+ "idCard": {
81855
+ "info": {
81856
+ "name": name.toString(),
81857
+ "sex": sex.toString(),
81858
+ "nation": race.toString(),
81859
+ "birthday": birthday.toString(),
81860
+ "address": address.toString(),
81861
+ "cardId": cardNo.toString(),
81862
+ "police": regOrg.toString(),
81863
+ "validStart": validTimeStart.toString(),
81864
+ "validEnd": validTimeEnd.toString(),
81865
+ "sexCode": "",
81866
+ "nationCode": ""
81867
+ },
81868
+ "headImage": cardImg.toString()
81869
+ },
81870
+ "faceimg": faceImg.toString(),
81871
+ "zt": ""
81872
+ };
81873
+ // objSfz = {
81874
+ // "zjh": cardNo.toString(),
81875
+ // "xm": name.toString(),
81876
+ // "xb": sex.toString(),
81877
+ // "sr": birthday.toString(),
81878
+ // "mz": race.toString(),
81879
+ // "zz": address.toString(),
81880
+ // "qfjg": regOrg.toString(),
81881
+ // "yxqx": validTime.toString(),
81882
+ // "yxqx1": validTimeStart.toString(),
81883
+ // "yxqx2": validTimeEnd.toString(),
81884
+ // "zpString": cardImg.toString(),
81885
+ // "faceImg": faceImg.toString()
81886
+ // };
81887
+ console.log('-------------------objSfz成功返回数据---------------------');
81888
+ console.log('人脸识别结果===>', objSfz);
81889
+ return objSfz;
81890
+ // }
81891
+ } else if (flag == 2) {
81892
+ // console.log("idcard");
81893
+ plugin = document.getElementById('plugin');
81894
+ var temp2 = plugin.On_OpenDevice(1001);
81895
+ var obj = eval('(' + temp2 + ')');
81896
+ if (typeof obj['照片'] != "undefined") {
81897
+ if (photoId && document.getElementById(photoId)) {
81898
+ document.getElementById(photoId).src = "data:image/jpeg;base64," + obj['照片'];
81899
+ }
81900
+ console.log(obj['身份证号2'] + '._____.');
81901
+ console.log(obj['照片2'] + '._____.-----------');
81902
+ }
81903
+ return obj;
81904
+ } else if (flag == 3) {
81905
+ console.log("-----开始读取身份证信息-----");
81906
+ var plugin = document.getElementById('plugin');
81907
+ var temp2 = plugin.On_OpenDevice(1001);
81908
+ var obj = eval('(' + temp2 + ')');
81909
+ var result = {
81910
+ "info": {
81911
+ "name": obj['姓名'],
81912
+ "sex": obj['性别'],
81913
+ "nation": obj['名族'],
81914
+ "birthday": obj['出生日期'],
81915
+ "address": obj['地址'],
81916
+ "cardId": obj['身份证号'],
81917
+ "police": obj['发证机关'],
81918
+ "validStart": obj['有效期开始'],
81919
+ "validEnd": obj['有效期结束'],
81920
+ "sexCode": "",
81921
+ "nationCode": ""
81922
+ },
81923
+ "headImage": obj['照片']
81924
+ };
81925
+ console.log("-----身份证信息读取结果-----");
81926
+ console.log(result);
81927
+ return result;
81928
+ } else if (flag == 4) {
81929
+ return GetIDCardAndMatchImage();
81930
+ }
81931
+ },
81932
+ getExportInfo: function Stirng() {
81933
+ var columNameStr = '';
81934
+ var captionNameStr = '';
81935
+ $.ajaxSettings.async = false;
81936
+ $.get("assets/xml/Export.xml", false, function (d) {
81937
+ var columNameArray = [];
81938
+ var captionNameArray = [];
81939
+ $(d).find('ElementTable').each(function () {
81940
+ var $book = $(this);
81941
+ var ColumnName = $book.attr("ColumnName");
81942
+ var CaptionName = $book.attr("CaptionName");
81943
+ columNameArray.push(ColumnName);
81944
+ captionNameArray.push(CaptionName);
81945
+ // console.log(ColumnName + 'nei');
81946
+ // console.log(CaptionName + 'nei');
81947
+ });
81948
+
81949
+ columNameStr = columNameArray.join(",");
81950
+ captionNameStr = captionNameArray.join(",");
81951
+ xmlxx = {
81952
+ "columNameStr": columNameStr,
81953
+ "captionNameStr": captionNameStr
81954
+ };
81955
+ // var url = commonPath+"/blacklist/exportExcel?1=1"+queryConfig;
81956
+ // var iframe = document.createElement('IFRAME');
81957
+ // iframe.setAttribute("id","testIframe");
81958
+ // iframe.setAttribute('style', 'position:absolute;width:0px;height:0px;left:-500px;top:-500px;');
81959
+ // document.body.appendChild(iframe);
81960
+ // iframe.src = url;
81961
+
81962
+ // console.log(columNameStr+"&&"+captionNameStr);
81963
+ });
81964
+
81965
+ $.ajaxSettings.async = true;
81966
+ return xmlxx;
81967
+ },
81968
+ getAreaData: function Stirng() {
81969
+ $.ajaxSettings.async = false;
81970
+ var nameArray = [];
81971
+ var dataBaseLinkArray = [];
81972
+ $.get('assets/xml/AreaData.xml', function (d) {
81973
+ $(d).find('ElementTable').each(function () {
81974
+ var $book = $(this);
81975
+ var value = $book.attr("tableName");
81976
+ var dataBaseLink = $book.children("DataBaseLink").attr("Name");
81977
+ nameArray.push(value);
81978
+ dataBaseLinkArray.push(dataBaseLink);
81979
+ });
81980
+ // loadTableList(1,true);
81981
+ });
81982
+
81983
+ $.ajaxSettings.async = true;
81984
+ xmlxx = {
81985
+ "nameArray": nameArray,
81986
+ "dataBaseLinkArray": dataBaseLinkArray
81987
+ };
81988
+ return xmlxx;
81989
+ },
81990
+ getAreaTable: function () {
81991
+ $.ajaxSettings.async = false;
81992
+ var areaTable = [];
81993
+ $.get('assets/xml/AreaData.xml', function (d) {
81994
+ $(d).find('ElementTable').each(function () {
81995
+ var $book = $(this);
81996
+ var value = $book.attr("tableName");
81997
+ var dataBaseLink = $book.children("DataBaseLink").attr("Name");
81998
+ xmlxx = {
81999
+ "tableName": value,
82000
+ "dataBaseLink": dataBaseLink
82001
+ };
82002
+ areaTable.push(xmlxx);
82003
+ });
82004
+ // loadTableList(1,true);
82005
+ });
82006
+
82007
+ $.ajaxSettings.async = true;
82008
+ return areaTable;
82009
+ },
82010
+ getPhoto: function (imgBase64, photoId) {
82011
+ document.getElementById(photoId).src = "data:image/jpeg;base64," + imgBase64;
82012
+ },
82013
+ printImg: function (domId) {
82014
+ $('#' + domId).jqprint();
82015
+ }
82016
+ };
82017
+ (function ($) {
82018
+ var opt;
82019
+ $.fn.jqprint = function (options) {
82020
+ opt = $.extend({}, $.fn.jqprint.defaults, options);
82021
+ var $element = this instanceof jQuery ? this : $(this);
82022
+ var $iframe = $("<iframe />");
82023
+ if (!opt.debug) {
82024
+ $iframe.css({
82025
+ position: "absolute",
82026
+ width: "0px",
82027
+ height: "0px",
82028
+ left: "-600px",
82029
+ top: "-600px"
82030
+ });
82031
+ }
82032
+ $iframe.appendTo("body");
82033
+ var doc = $iframe[0].contentWindow.document;
82034
+ if (opt.importCSS) {
82035
+ if ($("link[media=print]").length > 0) {
82036
+ $("link[media=print]").each(function () {
82037
+ doc.write("<link type='text/css' rel='stylesheet' href='" + $(this).attr("href") + "' media='print' />");
82038
+ });
82039
+ } else {
82040
+ $("link").each(function () {
82041
+ doc.write("<link type='text/css' rel='stylesheet' href='" + $(this).attr("href") + "' />");
82042
+ });
82043
+ }
82044
+ }
82045
+ if (opt.printContainer) {
82046
+ doc.write($element.outer());
82047
+ } else {
82048
+ $element.each(function () {
82049
+ doc.write($(this).html());
82050
+ });
82051
+ }
82052
+ doc.close();
82053
+ $iframe[0].contentWindow.focus();
82054
+ setTimeout(function () {
82055
+ $iframe[0].contentWindow.print();
82056
+ }, 1000);
82057
+ };
82058
+ $.fn.jqprint.defaults = {
82059
+ debug: false,
82060
+ importCSS: true,
82061
+ printContainer: true,
82062
+ operaSupport: true
82063
+ };
82064
+
82065
+ // Thanks to 9__, found at http://users.livejournal.com/9__/380664.html
82066
+ jQuery.fn.outer = function () {
82067
+ return $($('<div></div>').html(this.clone())).html();
82068
+ };
82069
+ }); //(jQuery);
82070
+
82071
+ function loadCamera() {
82072
+ // var IDCard = document.getElementById("IDCard_chrome");
82073
+ // var cameraRow = document.getElementById("camera_row")
82074
+ // cameraRow.innerHTML = '<embed clsid="{23D85CA3-E783-431E-A229-18BB6BEB9AD9}" type="application/x-itst-activex" width=300 height=180 name="FaceObj" />'
82075
+ // ;
82076
+ var IDCard = document.getElementById("IDCard_chrome");
82077
+ var cameraRow = document.getElementById("camera_row");
82078
+ cameraRow.innerHTML = '<object clsid="{23D85CA3-E783-431E-A229-18BB6BEB9AD9}" type="application/x-itst-activex" width=320 height=240 name="FaceObj"></object>';
82079
+ }
82080
+ function GetIDCardOnly() {
82081
+ var IDCard = document.getElementById("IDCard_chrome");
82082
+ var ret = IDCard.OpenDevice();
82083
+ if (ret != 0) {
82084
+ debug("一体机启动失败");
82085
+ return;
82086
+ }
82087
+ ret = IDCard.ReadIDCardInfo();
82088
+ //处理身份证信息并赋值
82089
+ var objSfz = {
82090
+ "info": {
82091
+ "name": IDCard.IDName,
82092
+ "sex": IDCard.IDSex,
82093
+ "nation": IDCard.IDFolk,
82094
+ "birthday": IDCard.IDBirth,
82095
+ "address": IDCard.IDAddress,
82096
+ "cardId": IDCard.IDNumber,
82097
+ "police": IDCard.IDOrgan,
82098
+ "validStart": IDCard.IDTermBegin.substring(0, 4) + '.' + IDCard.IDTermBegin.substring(4, 6) + '.' + IDCard.IDTermBegin.substring(6, 8),
82099
+ "validEnd": IDCard.IDTermEnd.substring(0, 4) + '.' + IDCard.IDTermEnd.substring(4, 6) + '.' + IDCard.IDTermEnd.substring(6, 8),
82100
+ "sexCode": "",
82101
+ "nationCode": ""
82102
+ },
82103
+ "headImage": IDCard.IDPhoto64
82104
+ };
82105
+ return objSfz;
82106
+ }
82107
+
82108
+ // 一体机插件 (丽水)
82109
+ function GetIDCardAndMatchImage() {
82110
+ console.log("-----开启一体机功能-----");
82111
+ var IDCard = document.getElementById("IDCard_chrome");
82112
+ // var cameraRow = document.getElementById("camera_row")
82113
+ // cameraRow.innerHTML = '<object clsid="{23D85CA3-E783-431E-A229-18BB6BEB9AD9}" type="application/x-itst-activex" width=320 height=240 name="FaceObj"></object>'
82114
+ // cameraRow.innerHTML = '<embed clsid="{23D85CA3-E783-431E-A229-18BB6BEB9AD9}" type="application/x-itst-activex" width=300 height=180 name="FaceObj" id="FaceObj" />'
82115
+ var ret = IDCard.OpenDevice();
82116
+ if (ret != 0) {
82117
+ debug("一体机启动失败");
82118
+ return;
82119
+ }
82120
+ ret = IDCard.ReadIDCardInfo();
82121
+ //处理身份证信息并赋值
82122
+ var objSfz = {
82123
+ "idCard": {
82124
+ "info": {
82125
+ "name": IDCard.IDName,
82126
+ "sex": IDCard.IDSex,
82127
+ "nation": IDCard.IDFolk,
82128
+ "birthday": IDCard.IDBirth,
82129
+ "address": IDCard.IDAddress,
82130
+ "cardId": IDCard.IDNumber,
82131
+ "police": IDCard.IDOrgan,
82132
+ "validStart": IDCard.IDTermBegin.substring(0, 4) + '.' + IDCard.IDTermBegin.substring(4, 6) + '.' + IDCard.IDTermBegin.substring(6, 8),
82133
+ "validEnd": IDCard.IDTermEnd.substring(0, 4) + '.' + IDCard.IDTermEnd.substring(4, 6) + '.' + IDCard.IDTermEnd.substring(6, 8),
82134
+ "sexCode": "",
82135
+ "nationCode": ""
82136
+ },
82137
+ "headImage": IDCard.IDPhoto64
82138
+ },
82139
+ "faceimg": "",
82140
+ "zt": ""
82141
+ };
82142
+ return MatchImage(objSfz);
82143
+ }
82144
+ function MatchImage(objSfz) {
82145
+ debugger;
82146
+ // var FaceObj = document.getElementById("FaceObj");
82147
+ var ret = FaceObj.MatchFace(objSfz.idCard.headImage);
82148
+ var obj = JSON.parse(ret);
82149
+ objSfz.faceimg = obj.image;
82150
+ objSfz.zt = obj.retinfo;
82151
+ console.log(objSfz);
82152
+ return objSfz;
82153
+ }
82154
+
81802
82155
  /***/ }),
81803
82156
 
81804
82157
  /***/ 2823:
@@ -81939,6 +82292,22 @@ module.exports = function ( delay, noTrailing, callback, debounceMode ) {
81939
82292
  };
81940
82293
 
81941
82294
 
82295
+ /***/ }),
82296
+
82297
+ /***/ 2234:
82298
+ /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
82299
+
82300
+ "use strict";
82301
+ module.exports = __webpack_require__.p + "img/idcardbg1.1f8e1fc6.gif";
82302
+
82303
+ /***/ }),
82304
+
82305
+ /***/ 4923:
82306
+ /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
82307
+
82308
+ "use strict";
82309
+ module.exports = __webpack_require__.p + "img/idcardbg2.2e47b05f.gif";
82310
+
81942
82311
  /***/ }),
81943
82312
 
81944
82313
  /***/ 5053:
@@ -83315,7 +83684,7 @@ class ELoamPassService {
83315
83684
  validStart,
83316
83685
  validEnd
83317
83686
  },
83318
- headImage: `data:image/jpg;base64,${photoBase64}`
83687
+ headImage: photoBase64
83319
83688
  };
83320
83689
  return IDCardData;
83321
83690
  }
@@ -83549,19 +83918,23 @@ scanner_eloam.install = Vue => {
83549
83918
  Vue.component(scanner_eloam.name, scanner_eloam);
83550
83919
  };
83551
83920
  /* harmony default export */ var scanner_scanner_eloam = (scanner_eloam);
83552
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[4]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/id-card-reader/id-card-reader-eloam/src/id-card-reader-eloam.vue?vue&type=template&id=5b7ce781&scoped=true&
83553
- var id_card_reader_eloamvue_type_template_id_5b7ce781_scoped_true_render = function render() {
83921
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[4]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/scanner/scanner-camera/src/scanner-camera.vue?vue&type=template&id=00e9072f&scoped=true&
83922
+ var scanner_cameravue_type_template_id_00e9072f_scoped_true_render = function render() {
83554
83923
  var _vm = this,
83555
83924
  _c = _vm._self._c;
83556
- return _vm.tip ? _c('el-tooltip', {
83557
- staticClass: "id-card-reader-eloam",
83925
+ return _c('div', {
83926
+ staticClass: "scanner-camera-container"
83927
+ }, [_vm.openMode === 'dialog' ? _c('div', {
83928
+ staticClass: "scanner-camera-button"
83929
+ }, [_vm.tip ? _c('el-tooltip', {
83930
+ staticClass: "id-card-reader-demo",
83558
83931
  attrs: {
83559
83932
  "content": _vm.tip,
83560
83933
  "placement": "top"
83561
83934
  }
83562
83935
  }, [_c('el-button', _vm._b({
83563
83936
  on: {
83564
- "click": _vm.handleClick
83937
+ "click": _vm.openScanDialog
83565
83938
  }
83566
83939
  }, 'el-button', {
83567
83940
  disabled: _vm.disabled,
@@ -83576,7 +83949,7 @@ var id_card_reader_eloamvue_type_template_id_5b7ce781_scoped_true_render = funct
83576
83949
  return [_vm._v(_vm._s(_vm.label))];
83577
83950
  })], 2)], 1) : _c('el-button', _vm._b({
83578
83951
  on: {
83579
- "click": _vm.handleClick
83952
+ "click": _vm.openScanDialog
83580
83953
  }
83581
83954
  }, 'el-button', {
83582
83955
  disabled: _vm.disabled,
@@ -83589,86 +83962,2461 @@ var id_card_reader_eloamvue_type_template_id_5b7ce781_scoped_true_render = funct
83589
83962
  class: _vm._className
83590
83963
  }, false), [_vm._t("default", function () {
83591
83964
  return [_vm._v(_vm._s(_vm.label))];
83592
- })], 2);
83593
- };
83594
- var id_card_reader_eloamvue_type_template_id_5b7ce781_scoped_true_staticRenderFns = [];
83595
-
83596
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/id-card-reader/id-card-reader-eloam/src/id-card-reader-eloam.vue?vue&type=script&lang=js&
83597
-
83598
-
83599
- /* harmony default export */ var id_card_reader_eloamvue_type_script_lang_js_ = ({
83600
- name: 'id-card-reader-eloam',
83601
- props: {
83602
- label: {
83603
- default: '',
83604
- type: String
83965
+ })], 2), _c('el-dialog', {
83966
+ staticClass: "scanner-camera-dialog",
83967
+ attrs: {
83968
+ "title": "影像扫描",
83969
+ "visible": _vm.dialogVisible,
83970
+ "width": "60%"
83605
83971
  },
83606
- tip: {
83607
- default: '',
83608
- type: String
83972
+ on: {
83973
+ "update:visible": function ($event) {
83974
+ _vm.dialogVisible = $event;
83975
+ }
83976
+ }
83977
+ }, [_vm.dialogVisible ? _c('scanner-camera-component', {
83978
+ attrs: {
83979
+ "machine-type": _vm.machineType
83609
83980
  },
83610
- className: {
83611
- default: '',
83612
- type: String
83981
+ on: {
83982
+ "send-scanner-result": _vm.setScannerResult
83613
83983
  },
83614
- size: {
83615
- default: 'mini',
83616
- type: String
83984
+ scopedSlots: _vm._u([{
83985
+ key: "action",
83986
+ fn: function () {
83987
+ return [_vm._t("right-action")];
83988
+ },
83989
+ proxy: true
83990
+ }], null, true)
83991
+ }) : _vm._e(), _c('span', {
83992
+ staticClass: "dialog-footer",
83993
+ attrs: {
83994
+ "slot": "footer"
83617
83995
  },
83618
- type: {
83619
- default: 'primary',
83620
- type: String
83996
+ slot: "footer"
83997
+ }, [_c('el-button', {
83998
+ attrs: {
83999
+ "size": "small"
83621
84000
  },
83622
- plain: {
83623
- default: false,
83624
- type: Boolean
84001
+ on: {
84002
+ "click": function ($event) {
84003
+ _vm.dialogVisible = false;
84004
+ }
84005
+ }
84006
+ }, [_vm._v("取 消")]), _c('el-button', {
84007
+ attrs: {
84008
+ "size": "small",
84009
+ "type": "primary"
83625
84010
  },
83626
- /** Determine whether it's a round button */
83627
- round: {
83628
- default: false,
83629
- type: Boolean
84011
+ on: {
84012
+ "click": _vm.sendScannerResult
84013
+ }
84014
+ }, [_vm._v("确 定")])], 1)], 1)], 1) : _c('scanner-camera-component', {
84015
+ attrs: {
84016
+ "machine-type": _vm.machineType
83630
84017
  },
83631
- /** Determine whether it's loading */
83632
- loading: {
83633
- default: false,
83634
- type: Boolean
84018
+ on: {
84019
+ "send-scanner-result": _vm.setScannerResult
83635
84020
  },
83636
- /** Button icon, accepts an icon name of Element icon component */
83637
- icon: {
83638
- default: 'el-icon-postcard',
83639
- type: String
84021
+ scopedSlots: _vm._u([{
84022
+ key: "action",
84023
+ fn: function () {
84024
+ return [_vm._t("right-action")];
84025
+ },
84026
+ proxy: true
84027
+ }], null, true)
84028
+ })], 1);
84029
+ };
84030
+ var scanner_cameravue_type_template_id_00e9072f_scoped_true_staticRenderFns = [];
84031
+
84032
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[4]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/scanner/scanner-camera/src/component/scanner-camera-component.vue?vue&type=template&id=5be6f09e&scoped=true&
84033
+ var scanner_camera_componentvue_type_template_id_5be6f09e_scoped_true_render = function render() {
84034
+ var _vm = this,
84035
+ _c = _vm._self._c;
84036
+ return _c('div', {
84037
+ staticClass: "scanner-high-camera-component"
84038
+ }, [_c('div', {
84039
+ staticClass: "scanner-result-content"
84040
+ }, [_c('div', {
84041
+ staticClass: "content-main flex-1"
84042
+ }, [_vm.loadSuccess ? _c('div', {
84043
+ staticClass: "load-success"
84044
+ }, [_c('img', {
84045
+ staticStyle: {
84046
+ "width": "800px",
84047
+ "height": "600px"
83640
84048
  },
83641
- disabled: {
83642
- default: false,
83643
- type: Boolean
84049
+ attrs: {
84050
+ "id": "photo",
84051
+ "src": _vm.scannerVideoSrc
83644
84052
  }
83645
- },
83646
- computed: {
83647
- _className() {
83648
- const classBase = ['z-button'];
83649
- if (this.type === 'text') {
83650
- classBase.push('i-font-size');
84053
+ })]) : _c('div', {
84054
+ staticClass: "load-error"
84055
+ }, [_c('i', {
84056
+ staticClass: "el-icon-s-cooperation"
84057
+ }), _c('p', [_vm._v("请先安装插件")])])]), _c('div', {
84058
+ staticClass: "handle-action"
84059
+ }, [_c('el-select', {
84060
+ staticClass: "select",
84061
+ attrs: {
84062
+ "size": "small"
84063
+ },
84064
+ on: {
84065
+ "change": _vm.selectChange
84066
+ },
84067
+ model: {
84068
+ value: _vm.camera,
84069
+ callback: function ($$v) {
84070
+ _vm.camera = $$v;
84071
+ },
84072
+ expression: "camera"
84073
+ }
84074
+ }, _vm._l(_vm.cameras, function (item) {
84075
+ return _c('el-option', {
84076
+ key: item.value,
84077
+ attrs: {
84078
+ "label": item.name,
84079
+ "value": item.value
83651
84080
  }
83652
- if (!this.className) {
83653
- return classBase;
83654
- } else if (typeof this.className === 'string') {
83655
- classBase.push(this.className);
83656
- } else {
83657
- classBase.push(...this.className);
84081
+ });
84082
+ }), 1), _vm._l(_vm.buttonList, function (item) {
84083
+ return [_c('el-button', {
84084
+ key: item.name,
84085
+ attrs: {
84086
+ "type": "primary",
84087
+ "size": "small"
84088
+ },
84089
+ on: {
84090
+ "click": function ($event) {
84091
+ return _vm.handleAction(item.name);
84092
+ }
83658
84093
  }
83659
- return classBase;
83660
- }
83661
- },
83662
- methods: {
83663
- async handleClick() {
83664
- let res = await ELoamPassService.idCardRead();
84094
+ }, [_vm._v(_vm._s(item.label))]), _vm._t("action")];
84095
+ })], 2)])]);
84096
+ };
84097
+ var scanner_camera_componentvue_type_template_id_5be6f09e_scoped_true_staticRenderFns = [];
84098
+
84099
+ ;// CONCATENATED MODULE: ./packages/utils/custom-axios.ts
84100
+ /**
84101
+ * @author: lvcy
84102
+ * @date: 2023-06-21
84103
+ * @description:custom-axios
84104
+ */
84105
+ class custom_axios_CustomAxios {
84106
+ static startConnect(method, url, data = {}) {
84107
+ return new Promise((resolve, reject) => {
84108
+ let xhr = new XMLHttpRequest();
84109
+ method = method.toUpperCase();
84110
+ if (method == 'GET') {
84111
+ let param = ''; //数据拼接字符串
84112
+ Object.keys(data).forEach(key => {
84113
+ param += `${key}=${data[key]}&`;
84114
+ });
84115
+ param = param.substring(0, param.lastIndexOf('&'));
84116
+ url = url + '?' + param;
84117
+ } else if (method == 'POST') {} else {
84118
+ reject('error method: Currently only supported GET or POST method!');
84119
+ }
84120
+ xhr.open(method, url, true);
84121
+ xhr.setRequestHeader('Accept', 'application/json');
84122
+ if (method === 'GET') {
84123
+ xhr.send();
84124
+ } else {
84125
+ xhr.send(JSON.stringify(data));
84126
+ }
84127
+ xhr.onreadystatechange = function () {
84128
+ if (this.readyState !== 4) {
84129
+ return;
84130
+ }
84131
+ if (this.status === 200) {
84132
+ let obj = this.response;
84133
+ if (typeof obj !== 'object') {
84134
+ obj = JSON.parse(obj);
84135
+ }
84136
+ resolve(obj);
84137
+ } else {
84138
+ reject(xhr);
84139
+ }
84140
+ };
84141
+ });
84142
+ }
84143
+ static async get(url) {
84144
+ let res = await custom_axios_CustomAxios.startConnect('GET', url);
84145
+ return res;
84146
+ }
84147
+ static async post(url, data) {
84148
+ let res = await custom_axios_CustomAxios.startConnect('POST', url, data);
84149
+ return res;
84150
+ }
84151
+ }
84152
+ ;// CONCATENATED MODULE: ./packages/service/external-plugins/eloam-plugin.service.ts
84153
+
84154
+ /**
84155
+ * @author: lvcy
84156
+ * @date: 2023-06-21
84157
+ * @description:良田高拍仪
84158
+ */
84159
+
84160
+ var eloam_plugin_service_ELoamMethodCode;
84161
+ (function (ELoamMethodCode) {
84162
+ /** 扫描-主摄像头 */
84163
+ ELoamMethodCode["ScannerMainCamera_Base64"] = "ScannerMainCamera_Base64";
84164
+ /** 扫描-副摄像头 */
84165
+ ELoamMethodCode["ScannerSecondaryCamera_Base64"] = "ScannerSecondaryCamera_Base64";
84166
+ /** 读取二代身份证 */
84167
+ ELoamMethodCode["ReadIDCard_Base64"] = "ReadIDCard_Base64";
84168
+ })(eloam_plugin_service_ELoamMethodCode || (eloam_plugin_service_ELoamMethodCode = {}));
84169
+ const eloam_plugin_service_ELoamMethodDesc = {
84170
+ [eloam_plugin_service_ELoamMethodCode.ScannerMainCamera_Base64]: '扫描',
84171
+ [eloam_plugin_service_ELoamMethodCode.ScannerSecondaryCamera_Base64]: '拍照',
84172
+ [eloam_plugin_service_ELoamMethodCode.ReadIDCard_Base64]: '读取二代身份证'
84173
+ };
84174
+ class eloam_plugin_service_ELoamPassService {
84175
+ /** 主摄像头地址 */
84176
+ static get mainCameraUrl() {
84177
+ return this.baseServiceUrl + '/video=stream&camidx=0';
84178
+ }
84179
+ /** 副摄像头地址 */
84180
+ static get secondaryCameraUrl() {
84181
+ return this.baseServiceUrl + '/video=stream&camidx=1';
84182
+ }
84183
+ static async read(method) {
84184
+ let param = {},
84185
+ url = '';
84186
+ switch (method) {
84187
+ case eloam_plugin_service_ELoamMethodCode.ScannerMainCamera_Base64:
84188
+ // rotate: 旋转角度;deskew:纠偏,主摄像头1,副摄像头0 camidx:主摄像头0,副摄像头1;ColorMode:quality
84189
+ url = this.baseServiceUrl + '/video=grabimage';
84190
+ param = {
84191
+ filepath: "base64",
84192
+ rotate: "0",
84193
+ deskew: "1",
84194
+ camidx: "0",
84195
+ ColorMode: "0",
84196
+ quality: "0"
84197
+ };
84198
+ break;
84199
+ case eloam_plugin_service_ELoamMethodCode.ScannerSecondaryCamera_Base64:
84200
+ // rotate: 旋转角度,;deskew:纠偏,主摄像头1,副摄像头0 camidx:主摄像头0,副摄像头1;ColorMode:quality
84201
+ url = this.baseServiceUrl + '/video=grabimage';
84202
+ param = {
84203
+ filepath: "base64",
84204
+ rotate: "0",
84205
+ deskew: "0",
84206
+ camidx: "1",
84207
+ ColorMode: "0",
84208
+ quality: "0"
84209
+ };
84210
+ break;
84211
+ case eloam_plugin_service_ELoamMethodCode.ReadIDCard_Base64:
84212
+ url = this.baseServiceUrl + '/card=idcard';
84213
+ break;
84214
+ }
84215
+ let res = await custom_axios_CustomAxios.post(url, param);
84216
+ return res;
84217
+ }
84218
+ /** 主摄像头拍照 */
84219
+ static async scanByMainCamera() {
84220
+ const res = await eloam_plugin_service_ELoamPassService.read(eloam_plugin_service_ELoamMethodCode.ScannerMainCamera_Base64);
84221
+ return res.photoBase64;
84222
+ }
84223
+ /** 副摄像头拍照 */
84224
+ static async scanBySecondaryCamera() {
84225
+ const res = await eloam_plugin_service_ELoamPassService.read(eloam_plugin_service_ELoamMethodCode.ScannerSecondaryCamera_Base64);
84226
+ return res.photoBase64;
84227
+ }
84228
+ static async scanByCamera(type) {
84229
+ switch (type) {
84230
+ case "main":
84231
+ return this.scanByMainCamera();
84232
+ case 'vice':
84233
+ return this.scanBySecondaryCamera();
84234
+ }
84235
+ }
84236
+ /** 读取身份证 */
84237
+ static async idCardRead() {
84238
+ const res = await eloam_plugin_service_ELoamPassService.read(eloam_plugin_service_ELoamMethodCode.ReadIDCard_Base64);
84239
+ let {
84240
+ name,
84241
+ sex,
84242
+ birthday,
84243
+ address,
84244
+ cardID,
84245
+ nationCode,
84246
+ photoBase64,
84247
+ issueOrgan,
84248
+ validStart,
84249
+ validEnd
84250
+ } = res.IDCardInfo;
84251
+ const IDCardData = {
84252
+ info: {
84253
+ name,
84254
+ sex,
84255
+ birthday: birthday.replace('-', '').replace('-', ''),
84256
+ address,
84257
+ cardId: cardID,
84258
+ nation: nationCode,
84259
+ police: issueOrgan,
84260
+ validStart,
84261
+ validEnd
84262
+ },
84263
+ headImage: photoBase64
84264
+ };
84265
+ return IDCardData;
84266
+ }
84267
+ }
84268
+ _defineProperty(eloam_plugin_service_ELoamPassService, "baseServiceUrl", 'http://127.0.0.1:38088');
84269
+ ;// CONCATENATED MODULE: ./packages/model/common-message.ts
84270
+
84271
+ /**
84272
+ * @author: lvcy
84273
+ * @date: 2023-07-25
84274
+ * @description:common-message
84275
+ */
84276
+ const SCANNER_CAMERA_REFRESH_PHOTO_EVENT = 'scanner-camera-refresh-photo-event';
84277
+ class ScannerCameraRefreshPhotoEvent extends Event {
84278
+ constructor(url) {
84279
+ super(SCANNER_CAMERA_REFRESH_PHOTO_EVENT);
84280
+ _defineProperty(this, "scannerResultUrl", '');
84281
+ this.scannerResultUrl = url;
84282
+ }
84283
+ }
84284
+ ;// CONCATENATED MODULE: ./packages/service/external-plugins/jie-yu-plugin.service.ts
84285
+
84286
+
84287
+
84288
+ /**
84289
+ * @author: lvcy
84290
+ * @date: 2023-07-24
84291
+ * @description:捷宇高拍仪
84292
+ */
84293
+ var JieYuMethodCode;
84294
+ (function (JieYuMethodCode) {
84295
+ /** 扫描-主摄像头 */
84296
+ JieYuMethodCode["ScannerMainCamera_Base64"] = "vSetResolution(8)";
84297
+ /** 扫描-副摄像头 */
84298
+ JieYuMethodCode["ScannerSecondaryCamera_Base64"] = "bStartPlay2";
84299
+ JieYuMethodCode["TakePhoto_Base64"] = "bSaveJPG(D:\\,Photo)";
84300
+ })(JieYuMethodCode || (JieYuMethodCode = {}));
84301
+ const JieYuMethodDesc = {
84302
+ [JieYuMethodCode.ScannerMainCamera_Base64]: '扫描',
84303
+ [JieYuMethodCode.ScannerSecondaryCamera_Base64]: '拍照'
84304
+ };
84305
+ class JieYueService {
84306
+ static startConnect() {
84307
+ if (this.ws && this.ws.readyState === WebSocket.CONNECTING) {
84308
+ return this;
84309
+ }
84310
+ const ws = new WebSocket(this.scannerCameraUrl);
84311
+ let resolved;
84312
+ const onConnect = new Promise(resolve => {
84313
+ resolved = resolve;
84314
+ });
84315
+ ws.onopen = () => {
84316
+ resolved(true);
84317
+ };
84318
+ ws.onmessage = event => {
84319
+ this.handleMessage(event);
84320
+ };
84321
+ ws.onclose = () => this.handleClose();
84322
+ ws.onerror = () => this.handleError();
84323
+ this.ws = ws;
84324
+ return onConnect;
84325
+ }
84326
+ static handleError() {
84327
+ for (const type in this.requestStore) {
84328
+ this.requestStore.forEach(({
84329
+ reject
84330
+ }) => {
84331
+ reject('handleError');
84332
+ });
84333
+ }
84334
+ throw Error('捷宇高拍仪设备功能加载失败');
84335
+ }
84336
+ static handleClose() {
84337
+ for (const type in this.requestStore) {
84338
+ this.requestStore.forEach(({
84339
+ reject
84340
+ }) => {
84341
+ reject('close');
84342
+ });
84343
+ }
84344
+ }
84345
+ static handleMessage(msg) {
84346
+ let data = msg.data;
84347
+ if (!data.startsWith('BarCode') && !data.startsWith('Begin')) {
84348
+ const event = new ScannerCameraRefreshPhotoEvent(data);
84349
+ return window.dispatchEvent(event);
84350
+ }
84351
+ //
84352
+ //
84353
+ // this.requestStore.forEach(({ resolve }: PromiseStore) => {
84354
+ // resolve(data)
84355
+ // });
84356
+ // this.requestStore = [];
84357
+ }
84358
+ /**
84359
+ * 发送请求
84360
+ */
84361
+ static async read(type) {
84362
+ await this.startConnect();
84363
+ if (this.ws.readyState === 1) {
84364
+ let method = '';
84365
+ switch (type) {
84366
+ case 'main':
84367
+ this.ws.send('bStartPlay()');
84368
+ method = JieYuMethodCode.ScannerMainCamera_Base64;
84369
+ break;
84370
+ case 'vice':
84371
+ method = JieYuMethodCode.ScannerSecondaryCamera_Base64;
84372
+ break;
84373
+ case 'takePhoto':
84374
+ method = JieYuMethodCode.TakePhoto_Base64;
84375
+ }
84376
+ this.ws.send(method);
84377
+ return new Promise((resolve, reject) => {
84378
+ if (!this.requestStore) {
84379
+ this.requestStore = [];
84380
+ }
84381
+ this.requestStore.push({
84382
+ resolve,
84383
+ reject
84384
+ });
84385
+ });
84386
+ } else {
84387
+ throw Error('设备未准备完成');
84388
+ }
84389
+ }
84390
+ static async turnOnTheCamera(type) {
84391
+ if (this.ws) this.ws.close();
84392
+ await JieYueService.read(type);
84393
+ }
84394
+ static async scanByCamera() {
84395
+ console.log(this.ws);
84396
+ if (this.ws) this.ws.close();
84397
+ await JieYueService.read('takePhoto');
84398
+ }
84399
+ }
84400
+ _defineProperty(JieYueService, "scannerCameraUrl", 'ws://127.0.0.1:1818');
84401
+ _defineProperty(JieYueService, "ws", void 0);
84402
+ _defineProperty(JieYueService, "requestStore", []);
84403
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/scanner/scanner-camera/src/component/scanner-camera-component.vue?vue&type=script&lang=js&
84404
+
84405
+
84406
+
84407
+ const scanner_camera_componentvue_type_script_lang_js_BEGIN_DATA = 'data:image/jpg;base64,';
84408
+ /* harmony default export */ var scanner_camera_componentvue_type_script_lang_js_ = ({
84409
+ name: "scanner-camera-component",
84410
+ props: {
84411
+ /**
84412
+ * 0-捷宇;5-良田
84413
+ */
84414
+ machineType: {
84415
+ //
84416
+ default: 0,
84417
+ type: Number
84418
+ }
84419
+ },
84420
+ data: () => {
84421
+ return {
84422
+ scannerVideoSrc: '',
84423
+ scannerResultSrc: '',
84424
+ loadSuccess: true,
84425
+ camera: 0,
84426
+ cameras: [{
84427
+ name: '文档',
84428
+ value: 0
84429
+ }, {
84430
+ name: '照片',
84431
+ value: 1
84432
+ }],
84433
+ buttonList: [{
84434
+ label: '拍照',
84435
+ name: 'take-pictures'
84436
+ }]
84437
+ };
84438
+ },
84439
+ watch: {
84440
+ 'machineType': function () {
84441
+ let handleName = this.camera === 1 ? 'start-vice' : 'start-main';
84442
+ this.handleAction(handleName);
84443
+ }
84444
+ },
84445
+ created() {
84446
+ this.handleAction('start-main');
84447
+ window.addEventListener(SCANNER_CAMERA_REFRESH_PHOTO_EVENT, message => {
84448
+ if (message.type === SCANNER_CAMERA_REFRESH_PHOTO_EVENT) {
84449
+ this.scannerVideoSrc = `${scanner_camera_componentvue_type_script_lang_js_BEGIN_DATA}${message.scannerResultUrl}`;
84450
+ }
84451
+ });
84452
+ },
84453
+ methods: {
84454
+ /**
84455
+ * 切换扫描、拍照
84456
+ * @param val
84457
+ */
84458
+ selectChange(val) {
84459
+ let handleName = val === 1 ? 'start-vice' : 'start-main';
84460
+ this.handleAction(handleName);
84461
+ },
84462
+ /**
84463
+ * 拍照
84464
+ */
84465
+ async takePictures() {
84466
+ switch (this.machineType) {
84467
+ case 0:
84468
+ {
84469
+ await JieYueService.scanByCamera();
84470
+ console.log('拍照');
84471
+ this.$emit('send-scanner-result', this.scannerVideoSrc);
84472
+ }
84473
+ break;
84474
+ case 5:
84475
+ {
84476
+ let type = this.camera === 0 ? 'main' : 'vice';
84477
+ const res = await eloam_plugin_service_ELoamPassService.scanByCamera(type);
84478
+ this.$emit('send-scanner-result', `${scanner_camera_componentvue_type_script_lang_js_BEGIN_DATA}${res}`);
84479
+ }
84480
+ }
84481
+ },
84482
+ /**
84483
+ * 主摄像头
84484
+ */
84485
+ async handleStartMain() {
84486
+ switch (this.machineType) {
84487
+ case 0:
84488
+ await JieYueService.turnOnTheCamera('main');
84489
+ break;
84490
+ case 5:
84491
+ // 良田
84492
+ this.scannerVideoSrc = eloam_plugin_service_ELoamPassService.mainCameraUrl;
84493
+ break;
84494
+ }
84495
+ },
84496
+ /**
84497
+ * 副摄像头
84498
+ */
84499
+ async handleStartVice() {
84500
+ switch (this.machineType) {
84501
+ case 0:
84502
+ await JieYueService.turnOnTheCamera('vice');
84503
+ break;
84504
+ case 5:
84505
+ // 良田
84506
+ this.scannerVideoSrc = eloam_plugin_service_ELoamPassService.secondaryCameraUrl;
84507
+ break;
84508
+ }
84509
+ },
84510
+ handleAction(name) {
84511
+ switch (name) {
84512
+ case 'start-main':
84513
+ // 主摄像头
84514
+ this.handleStartMain();
84515
+ break;
84516
+ case 'start-vice':
84517
+ // 副摄像头
84518
+ this.handleStartVice();
84519
+ break;
84520
+ case 'take-pictures':
84521
+ // 拍照
84522
+ this.takePictures();
84523
+ break;
84524
+ }
84525
+ }
84526
+ }
84527
+ });
84528
+ ;// CONCATENATED MODULE: ./packages/scanner/scanner-camera/src/component/scanner-camera-component.vue?vue&type=script&lang=js&
84529
+ /* harmony default export */ var component_scanner_camera_componentvue_type_script_lang_js_ = (scanner_camera_componentvue_type_script_lang_js_);
84530
+ ;// CONCATENATED MODULE: ./packages/scanner/scanner-camera/src/component/scanner-camera-component.vue
84531
+
84532
+
84533
+
84534
+
84535
+
84536
+ /* normalize component */
84537
+ ;
84538
+ var scanner_camera_component_component = normalizeComponent(
84539
+ component_scanner_camera_componentvue_type_script_lang_js_,
84540
+ scanner_camera_componentvue_type_template_id_5be6f09e_scoped_true_render,
84541
+ scanner_camera_componentvue_type_template_id_5be6f09e_scoped_true_staticRenderFns,
84542
+ false,
84543
+ null,
84544
+ "5be6f09e",
84545
+ null
84546
+
84547
+ )
84548
+
84549
+ /* harmony default export */ var scanner_camera_component = (scanner_camera_component_component.exports);
84550
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/scanner/scanner-camera/src/scanner-camera.vue?vue&type=script&lang=js&
84551
+
84552
+
84553
+ /* harmony default export */ var scanner_cameravue_type_script_lang_js_ = ({
84554
+ name: "scanner-camera",
84555
+ components: {
84556
+ ScannerCameraComponent: scanner_camera_component
84557
+ },
84558
+ props: {
84559
+ /**
84560
+ * 0-捷宇;5-良田
84561
+ */
84562
+ machineType: {
84563
+ //
84564
+ default: 0,
84565
+ type: Number
84566
+ },
84567
+ openMode: {
84568
+ default: '',
84569
+ type: String
84570
+ },
84571
+ label: {
84572
+ default: '',
84573
+ type: String
84574
+ },
84575
+ tip: {
84576
+ default: '',
84577
+ type: String
84578
+ },
84579
+ className: {
84580
+ default: '',
84581
+ type: String
84582
+ },
84583
+ size: {
84584
+ default: '',
84585
+ type: String
84586
+ },
84587
+ type: {
84588
+ default: '',
84589
+ type: String
84590
+ },
84591
+ plain: {
84592
+ default: false,
84593
+ type: Boolean
84594
+ },
84595
+ round: {
84596
+ default: false,
84597
+ type: Boolean
84598
+ },
84599
+ loading: {
84600
+ default: false,
84601
+ type: Boolean
84602
+ },
84603
+ icon: {
84604
+ default: '',
84605
+ type: String
84606
+ },
84607
+ disabled: {
84608
+ default: false,
84609
+ type: Boolean
84610
+ }
84611
+ },
84612
+ data: () => {
84613
+ return {
84614
+ dialogVisible: false,
84615
+ scannerResult: ''
84616
+ };
84617
+ },
84618
+ computed: {
84619
+ _className() {
84620
+ const classBase = ['z-button'];
84621
+ if (this.type === 'text') {
84622
+ classBase.push('i-font-size');
84623
+ }
84624
+ if (!this.className) {
84625
+ return classBase;
84626
+ } else if (typeof this.className === 'string') {
84627
+ classBase.push(this.className);
84628
+ } else {
84629
+ classBase.push(...this.className);
84630
+ }
84631
+ return classBase;
84632
+ }
84633
+ },
84634
+ methods: {
84635
+ openScanDialog() {
84636
+ this.dialogVisible = true;
84637
+ },
84638
+ setScannerResult(src) {
84639
+ this.scannerResult = src;
84640
+ if (this.openMode !== 'dialog') {
84641
+ this.$emit('send-scanner-result', this.scannerResult);
84642
+ }
84643
+ },
84644
+ sendScannerResult() {
84645
+ if (this.scannerResult) {
84646
+ this.$emit('send-scanner-result', this.scannerResult);
84647
+ this.dialogVisible = false;
84648
+ }
84649
+ }
84650
+ }
84651
+ });
84652
+ ;// CONCATENATED MODULE: ./packages/scanner/scanner-camera/src/scanner-camera.vue?vue&type=script&lang=js&
84653
+ /* harmony default export */ var src_scanner_cameravue_type_script_lang_js_ = (scanner_cameravue_type_script_lang_js_);
84654
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-67.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-67.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-67.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-67.use[3]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/scanner/scanner-camera/src/scanner-camera.vue?vue&type=style&index=0&id=00e9072f&prod&scoped=true&lang=scss&
84655
+ // extracted by mini-css-extract-plugin
84656
+
84657
+ ;// CONCATENATED MODULE: ./packages/scanner/scanner-camera/src/scanner-camera.vue?vue&type=style&index=0&id=00e9072f&prod&scoped=true&lang=scss&
84658
+
84659
+ ;// CONCATENATED MODULE: ./packages/scanner/scanner-camera/src/scanner-camera.vue
84660
+
84661
+
84662
+
84663
+ ;
84664
+
84665
+
84666
+ /* normalize component */
84667
+
84668
+ var src_scanner_camera_component = normalizeComponent(
84669
+ src_scanner_cameravue_type_script_lang_js_,
84670
+ scanner_cameravue_type_template_id_00e9072f_scoped_true_render,
84671
+ scanner_cameravue_type_template_id_00e9072f_scoped_true_staticRenderFns,
84672
+ false,
84673
+ null,
84674
+ "00e9072f",
84675
+ null
84676
+
84677
+ )
84678
+
84679
+ /* harmony default export */ var scanner_camera = (src_scanner_camera_component.exports);
84680
+ ;// CONCATENATED MODULE: ./packages/scanner/scanner-camera/index.js
84681
+ /**
84682
+ * @author: lvcy
84683
+ * @date: 2023-07-24
84684
+ * @description:index
84685
+ */
84686
+
84687
+ scanner_camera.install = Vue => {
84688
+ Vue.component(scanner_camera.name, scanner_camera);
84689
+ };
84690
+ /* harmony default export */ var scanner_scanner_camera = (scanner_camera);
84691
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[4]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/id-card-reader/id-card-reader-eloam/src/id-card-reader-eloam.vue?vue&type=template&id=5b7ce781&scoped=true&
84692
+ var id_card_reader_eloamvue_type_template_id_5b7ce781_scoped_true_render = function render() {
84693
+ var _vm = this,
84694
+ _c = _vm._self._c;
84695
+ return _vm.tip ? _c('el-tooltip', {
84696
+ staticClass: "id-card-reader-eloam",
84697
+ attrs: {
84698
+ "content": _vm.tip,
84699
+ "placement": "top"
84700
+ }
84701
+ }, [_c('el-button', _vm._b({
84702
+ on: {
84703
+ "click": _vm.handleClick
84704
+ }
84705
+ }, 'el-button', {
84706
+ disabled: _vm.disabled,
84707
+ icon: _vm.icon,
84708
+ loading: _vm.loading,
84709
+ plain: _vm.plain,
84710
+ round: _vm.round,
84711
+ size: _vm.size,
84712
+ type: _vm.type,
84713
+ class: _vm._className
84714
+ }, false), [_vm._t("default", function () {
84715
+ return [_vm._v(_vm._s(_vm.label))];
84716
+ })], 2)], 1) : _c('el-button', _vm._b({
84717
+ on: {
84718
+ "click": _vm.handleClick
84719
+ }
84720
+ }, 'el-button', {
84721
+ disabled: _vm.disabled,
84722
+ icon: _vm.icon,
84723
+ loading: _vm.loading,
84724
+ plain: _vm.plain,
84725
+ round: _vm.round,
84726
+ size: _vm.size,
84727
+ type: _vm.type,
84728
+ class: _vm._className
84729
+ }, false), [_vm._t("default", function () {
84730
+ return [_vm._v(_vm._s(_vm.label))];
84731
+ })], 2);
84732
+ };
84733
+ var id_card_reader_eloamvue_type_template_id_5b7ce781_scoped_true_staticRenderFns = [];
84734
+
84735
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/id-card-reader/id-card-reader-eloam/src/id-card-reader-eloam.vue?vue&type=script&lang=js&
84736
+
84737
+
84738
+ /* harmony default export */ var id_card_reader_eloamvue_type_script_lang_js_ = ({
84739
+ name: 'id-card-reader-eloam',
84740
+ props: {
84741
+ label: {
84742
+ default: '',
84743
+ type: String
84744
+ },
84745
+ tip: {
84746
+ default: '',
84747
+ type: String
84748
+ },
84749
+ className: {
84750
+ default: '',
84751
+ type: String
84752
+ },
84753
+ size: {
84754
+ default: 'mini',
84755
+ type: String
84756
+ },
84757
+ type: {
84758
+ default: 'primary',
84759
+ type: String
84760
+ },
84761
+ plain: {
84762
+ default: false,
84763
+ type: Boolean
84764
+ },
84765
+ /** Determine whether it's a round button */
84766
+ round: {
84767
+ default: false,
84768
+ type: Boolean
84769
+ },
84770
+ /** Determine whether it's loading */
84771
+ loading: {
84772
+ default: false,
84773
+ type: Boolean
84774
+ },
84775
+ /** Button icon, accepts an icon name of Element icon component */
84776
+ icon: {
84777
+ default: 'el-icon-postcard',
84778
+ type: String
84779
+ },
84780
+ disabled: {
84781
+ default: false,
84782
+ type: Boolean
84783
+ }
84784
+ },
84785
+ computed: {
84786
+ _className() {
84787
+ const classBase = ['z-button'];
84788
+ if (this.type === 'text') {
84789
+ classBase.push('i-font-size');
84790
+ }
84791
+ if (!this.className) {
84792
+ return classBase;
84793
+ } else if (typeof this.className === 'string') {
84794
+ classBase.push(this.className);
84795
+ } else {
84796
+ classBase.push(...this.className);
84797
+ }
84798
+ return classBase;
84799
+ }
84800
+ },
84801
+ methods: {
84802
+ async handleClick() {
84803
+ let res = await ELoamPassService.idCardRead();
83665
84804
  this.$emit('click', res);
83666
84805
  }
83667
84806
  }
83668
84807
  });
83669
- ;// CONCATENATED MODULE: ./packages/id-card-reader/id-card-reader-eloam/src/id-card-reader-eloam.vue?vue&type=script&lang=js&
83670
- /* harmony default export */ var src_id_card_reader_eloamvue_type_script_lang_js_ = (id_card_reader_eloamvue_type_script_lang_js_);
83671
- ;// CONCATENATED MODULE: ./packages/id-card-reader/id-card-reader-eloam/src/id-card-reader-eloam.vue
84808
+ ;// CONCATENATED MODULE: ./packages/id-card-reader/id-card-reader-eloam/src/id-card-reader-eloam.vue?vue&type=script&lang=js&
84809
+ /* harmony default export */ var src_id_card_reader_eloamvue_type_script_lang_js_ = (id_card_reader_eloamvue_type_script_lang_js_);
84810
+ ;// CONCATENATED MODULE: ./packages/id-card-reader/id-card-reader-eloam/src/id-card-reader-eloam.vue
84811
+
84812
+
84813
+
84814
+
84815
+
84816
+ /* normalize component */
84817
+ ;
84818
+ var id_card_reader_eloam_component = normalizeComponent(
84819
+ src_id_card_reader_eloamvue_type_script_lang_js_,
84820
+ id_card_reader_eloamvue_type_template_id_5b7ce781_scoped_true_render,
84821
+ id_card_reader_eloamvue_type_template_id_5b7ce781_scoped_true_staticRenderFns,
84822
+ false,
84823
+ null,
84824
+ "5b7ce781",
84825
+ null
84826
+
84827
+ )
84828
+
84829
+ /* harmony default export */ var id_card_reader_eloam = (id_card_reader_eloam_component.exports);
84830
+ ;// CONCATENATED MODULE: ./packages/id-card-reader/id-card-reader-eloam/index.js
84831
+
84832
+
84833
+ // 组件的install方法用于按需引入
84834
+ // @ts-ignore
84835
+ id_card_reader_eloam.install = Vue => {
84836
+ Vue.component(id_card_reader_eloam.name, id_card_reader_eloam);
84837
+ };
84838
+ /* harmony default export */ var id_card_reader_id_card_reader_eloam = (id_card_reader_eloam);
84839
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[4]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/id-card-reader/id-card-reader-button/src/id-card-reader-button.vue?vue&type=template&id=6bdb0354&scoped=true&
84840
+ var id_card_reader_buttonvue_type_template_id_6bdb0354_scoped_true_render = function render() {
84841
+ var _vm = this,
84842
+ _c = _vm._self._c;
84843
+ return _vm.tip ? _c('el-tooltip', {
84844
+ staticClass: "id-card-reader-button",
84845
+ attrs: {
84846
+ "content": _vm.tip,
84847
+ "placement": "top"
84848
+ }
84849
+ }, [_vm.showIDCardChrome ? _c('embed', {
84850
+ attrs: {
84851
+ "clsid": "{E6B50A65-EDFB-4394-B092-A8C6E966C0E6}",
84852
+ "type": "application/x-itst-activex",
84853
+ "width": "0",
84854
+ "height": "0",
84855
+ "name": "IDCard_chrome",
84856
+ "id": "IDCard_chrome"
84857
+ }
84858
+ }) : _vm._e(), _c('el-button', _vm._b({
84859
+ on: {
84860
+ "click": _vm.handleClick
84861
+ }
84862
+ }, 'el-button', {
84863
+ disabled: _vm.disabled,
84864
+ icon: _vm.icon,
84865
+ loading: _vm.loading,
84866
+ plain: _vm.plain,
84867
+ round: _vm.round,
84868
+ size: _vm.size,
84869
+ type: _vm.type,
84870
+ class: _vm._className
84871
+ }, false), [_vm._t("default", function () {
84872
+ return [_vm._v(_vm._s(_vm.label))];
84873
+ })], 2)], 1) : _c('el-button', _vm._b({
84874
+ on: {
84875
+ "click": _vm.handleClick
84876
+ }
84877
+ }, 'el-button', {
84878
+ disabled: _vm.disabled,
84879
+ icon: _vm.icon,
84880
+ loading: _vm.loading,
84881
+ plain: _vm.plain,
84882
+ round: _vm.round,
84883
+ size: _vm.size,
84884
+ type: _vm.type,
84885
+ class: _vm._className
84886
+ }, false), [_vm.showIDCardChrome ? _c('embed', {
84887
+ attrs: {
84888
+ "clsid": "{E6B50A65-EDFB-4394-B092-A8C6E966C0E6}",
84889
+ "type": "application/x-itst-activex",
84890
+ "width": "0",
84891
+ "height": "0",
84892
+ "name": "IDCard_chrome",
84893
+ "id": "IDCard_chrome"
84894
+ }
84895
+ }) : _vm._e(), _vm._t("default", function () {
84896
+ return [_vm._v(_vm._s(_vm.label))];
84897
+ })], 2);
84898
+ };
84899
+ var id_card_reader_buttonvue_type_template_id_6bdb0354_scoped_true_staticRenderFns = [];
84900
+
84901
+ ;// CONCATENATED MODULE: ./packages/service/external-plugins/default-plugin-socket.service.ts
84902
+
84903
+
84904
+ /**
84905
+ * 默认设备
84906
+ * 读卡器:普天、精伦
84907
+ * 签字版:有为签字、汉王签字
84908
+ * */
84909
+ var PluginApiType;
84910
+ (function (PluginApiType) {
84911
+ /**读取二代身份证信息 */
84912
+ PluginApiType["idcard"] = "sfz";
84913
+ /**精伦身份证*/
84914
+ PluginApiType["jlsfz"] = "jlsfz";
84915
+ /**读取人脸识别信息 */
84916
+ PluginApiType["camera"] = "sxt";
84917
+ /**有为签字 */
84918
+ PluginApiType["ywSign"] = "yw";
84919
+ /**汉王签字 */
84920
+ PluginApiType["hwSign"] = "hwsign";
84921
+ })(PluginApiType || (PluginApiType = {}));
84922
+ class IdCardReadService {
84923
+ // 精伦身份证 JLSFZManage
84924
+ // 之前 SFZManage
84925
+
84926
+ static startConnect(type = PluginApiType.idcard) {
84927
+ if (this.ws && this.ws.readyState === WebSocket.CONNECTING) {
84928
+ return this;
84929
+ }
84930
+ let webSocketUrl = this.idcardWebSocketUrl;
84931
+ switch (type) {
84932
+ case PluginApiType.idcard:
84933
+ webSocketUrl = this.idcardWebSocketUrl;
84934
+ break;
84935
+ case PluginApiType.jlsfz:
84936
+ webSocketUrl = this.jlsfzWebSocketUrl;
84937
+ }
84938
+ const ws = new WebSocket(webSocketUrl);
84939
+ let resolved;
84940
+ const onConnect = new Promise(resolve => {
84941
+ resolved = resolve;
84942
+ });
84943
+ ws.onopen = () => {
84944
+ resolved(true);
84945
+ };
84946
+ ws.onmessage = event => this.handleMessage(event);
84947
+ ws.onclose = () => this.handleClose();
84948
+ ws.onerror = () => this.handleError();
84949
+ this.ws = ws;
84950
+ return onConnect;
84951
+ }
84952
+ static handleError() {
84953
+ for (const type in this.requestStore) {
84954
+ this.requestStore.forEach(({
84955
+ reject
84956
+ }) => {
84957
+ reject('handleError');
84958
+ });
84959
+ }
84960
+ throw Error('读取身份证功能加载失败');
84961
+ }
84962
+ static handleClose() {
84963
+ for (const type in this.requestStore) {
84964
+ this.requestStore.forEach(({
84965
+ reject
84966
+ }) => {
84967
+ reject('close');
84968
+ });
84969
+ }
84970
+ }
84971
+ static handleMessage(msg) {
84972
+ let data = '';
84973
+ try {
84974
+ data = JSON.parse(msg.data);
84975
+ } catch (e) {
84976
+ data = '';
84977
+ }
84978
+ this.requestStore.forEach(({
84979
+ resolve
84980
+ }) => {
84981
+ resolve(data);
84982
+ });
84983
+ this.requestStore = [];
84984
+ this.ws.close();
84985
+ }
84986
+ static async read(type = PluginApiType.idcard) {
84987
+ await this.startConnect(type);
84988
+ if (this.ws.readyState === 1) {
84989
+ this.ws.send(type);
84990
+ return new Promise((resolve, reject) => {
84991
+ if (!this.requestStore) {
84992
+ this.requestStore = [];
84993
+ }
84994
+ this.requestStore.push({
84995
+ resolve,
84996
+ reject
84997
+ });
84998
+ });
84999
+ } else {
85000
+ throw Error('读取身份证未准备完成');
85001
+ }
85002
+ }
85003
+ static async idCardCommonRead() {
85004
+ let idcardInfo;
85005
+ // 顺序不要调整,先连接精伦读卡器,最后连接普通读卡器(也就是PluginApiType.idcard,因为该项读卡失败不会返回消息)
85006
+ for (const t of [PluginApiType.jlsfz, PluginApiType.idcard]) {
85007
+ const readData = await IdCardReadService.read(t);
85008
+ if (readData && readData.hasOwnProperty('info')) {
85009
+ idcardInfo = readData;
85010
+ break;
85011
+ }
85012
+ }
85013
+ if (idcardInfo) {
85014
+ return idcardInfo;
85015
+ } else {
85016
+ throw Error('未匹配可用的读卡器');
85017
+ }
85018
+ }
85019
+ }
85020
+ _defineProperty(IdCardReadService, "idcardWebSocketUrl", 'ws://127.0.0.1:8152/SFZManage');
85021
+ _defineProperty(IdCardReadService, "jlsfzWebSocketUrl", 'ws://127.0.0.1:8152/JLSFZManage');
85022
+ _defineProperty(IdCardReadService, "ws", void 0);
85023
+ _defineProperty(IdCardReadService, "requestStore", []);
85024
+ class default_plugin_socket_service_CameraReadService {
85025
+ static startConnect() {
85026
+ if (this.ws && this.ws.readyState === WebSocket.CONNECTING) {
85027
+ return this;
85028
+ }
85029
+ let webSocketUrl = this.cameraWebSocketUrl;
85030
+ const ws = new WebSocket(webSocketUrl);
85031
+ let resolved;
85032
+ const onConnect = new Promise(resolve => {
85033
+ resolved = resolve;
85034
+ });
85035
+ ws.onopen = () => {
85036
+ resolved(true);
85037
+ };
85038
+ ws.onmessage = event => this.handleMessage(event);
85039
+ ws.onclose = () => this.handleClose();
85040
+ ws.onerror = () => this.handleError();
85041
+ this.ws = ws;
85042
+ return onConnect;
85043
+ }
85044
+ static handleError() {
85045
+ for (const type in this.requestStore) {
85046
+ this.requestStore.forEach(({
85047
+ reject
85048
+ }) => {
85049
+ reject('handleError');
85050
+ });
85051
+ }
85052
+ throw Error('读取拍照功能加载失败');
85053
+ }
85054
+ static handleClose() {
85055
+ for (const type in this.requestStore) {
85056
+ this.requestStore.forEach(({
85057
+ reject
85058
+ }) => {
85059
+ reject('close');
85060
+ });
85061
+ }
85062
+ }
85063
+ static handleMessage(msg) {
85064
+ let data = msg.data;
85065
+ this.requestStore.forEach(({
85066
+ resolve
85067
+ }) => {
85068
+ resolve(data);
85069
+ });
85070
+ this.requestStore = [];
85071
+ this.ws.close();
85072
+ // this.ws = null;
85073
+ }
85074
+
85075
+ static async read() {
85076
+ await this.startConnect();
85077
+ if (this.ws.readyState === 1) {
85078
+ this.ws.send(PluginApiType.camera);
85079
+ return new Promise((resolve, reject) => {
85080
+ if (!this.requestStore) {
85081
+ this.requestStore = [];
85082
+ }
85083
+ this.requestStore.push({
85084
+ resolve,
85085
+ reject
85086
+ });
85087
+ });
85088
+ } else {
85089
+ throw Error('读取拍照未准备完成');
85090
+ }
85091
+ }
85092
+ }
85093
+ _defineProperty(default_plugin_socket_service_CameraReadService, "cameraWebSocketUrl", 'ws://127.0.0.1:8152/SXTManage');
85094
+ _defineProperty(default_plugin_socket_service_CameraReadService, "ws", void 0);
85095
+ _defineProperty(default_plugin_socket_service_CameraReadService, "requestStore", []);
85096
+ class SignReadService {
85097
+ static startConnect(signMode) {
85098
+ if (this.ws && this.ws.readyState === WebSocket.CONNECTING) {
85099
+ return this;
85100
+ }
85101
+ let webSocketUrl = this.signWebSocketUrl;
85102
+ if (signMode === PluginApiType.hwSign) {
85103
+ webSocketUrl = this.hwSignWebSocketUrl;
85104
+ }
85105
+ const ws = new WebSocket(webSocketUrl);
85106
+ let resolved;
85107
+ const onConnect = new Promise(resolve => {
85108
+ resolved = resolve;
85109
+ });
85110
+ ws.onopen = () => {
85111
+ resolved(true);
85112
+ };
85113
+ ws.onmessage = event => this.handleMessage(event);
85114
+ ws.onclose = () => this.handleClose();
85115
+ ws.onerror = () => this.handleError();
85116
+ this.ws = ws;
85117
+ return onConnect;
85118
+ }
85119
+ static handleError() {
85120
+ for (const type in this.requestStore) {
85121
+ this.requestStore.forEach(({
85122
+ reject
85123
+ }) => {
85124
+ reject('handleError');
85125
+ });
85126
+ }
85127
+ throw Error('签字板加载失败');
85128
+ }
85129
+ static handleClose() {
85130
+ for (const type in this.requestStore) {
85131
+ this.requestStore.forEach(({
85132
+ reject
85133
+ }) => {
85134
+ reject('close');
85135
+ });
85136
+ }
85137
+ }
85138
+ static handleMessage(msg) {
85139
+ let data = msg.data;
85140
+ this.requestStore.forEach(({
85141
+ resolve
85142
+ }) => {
85143
+ resolve(data);
85144
+ });
85145
+ this.requestStore = [];
85146
+ this.ws.close();
85147
+ }
85148
+ static async read(signMode = PluginApiType.ywSign) {
85149
+ await this.startConnect(signMode);
85150
+ if (this.ws.readyState === 1) {
85151
+ console.log('签字板连接成功');
85152
+ this.ws.send(signMode);
85153
+ return new Promise((resolve, reject) => {
85154
+ if (!this.requestStore) {
85155
+ this.requestStore = [];
85156
+ }
85157
+ this.requestStore.push({
85158
+ resolve,
85159
+ reject
85160
+ });
85161
+ });
85162
+ } else {
85163
+ throw Error('签字板未准备完成');
85164
+ }
85165
+ }
85166
+ }
85167
+ _defineProperty(SignReadService, "signWebSocketUrl", 'ws://127.0.0.1:8152/chromeManage');
85168
+ _defineProperty(SignReadService, "hwSignWebSocketUrl", 'ws://127.0.0.1:8152/HWSIGNManage');
85169
+ _defineProperty(SignReadService, "ws", void 0);
85170
+ _defineProperty(SignReadService, "requestStore", []);
85171
+ ;// CONCATENATED MODULE: ./packages/utils/idCard-common-utils.ts
85172
+ /**
85173
+ * 根据身份证号码获取指定数据
85174
+ */
85175
+ class IdCardCommonUtils {
85176
+ /**
85177
+ * 按身份证号码获取性别
85178
+ * @param idNumber 身份证号码
85179
+ * @returns 男;女;异常(身份证号码为空或长度、格式错误)
85180
+ */
85181
+ static getGenderByIdNumber(idNumber) {
85182
+ if (idNumber) {
85183
+ let genderCode; // 性别代码
85184
+ if (idNumber.length == 18) {
85185
+ // 二代身份证号码长度为18位(第17位为性别代码)
85186
+ genderCode = idNumber.charAt(16);
85187
+ } else if (idNumber.length == 15) {
85188
+ // 一代身份证号码长度为15位(第15位为性别代码)
85189
+ genderCode = idNumber.charAt(14);
85190
+ }
85191
+ if (genderCode && !isNaN(genderCode)) {
85192
+ // 两代身份证号码的性别代码都为男奇女偶
85193
+ if (parseInt(genderCode) % 2 == 0) {
85194
+ return '女';
85195
+ }
85196
+ return '男';
85197
+ }
85198
+ }
85199
+ return '';
85200
+ }
85201
+ /**
85202
+ * 按身份证号码获取出生年月
85203
+ * @param idNumber
85204
+ * @returns
85205
+ */
85206
+ static getBirthdayByIdNumber(idNumber) {
85207
+ if (idNumber && idNumber && idNumber.length > 13) {
85208
+ const year = idNumber.substring(6, 10);
85209
+ const month = idNumber.substring(10, 12);
85210
+ const day = idNumber.substring(12, 14);
85211
+ return year + '-' + month + '-' + day;
85212
+ }
85213
+ return '';
85214
+ }
85215
+ /**
85216
+ * 按身份证号码获取年龄
85217
+ * @param idNumber
85218
+ * @returns
85219
+ */
85220
+ static getAgeByIdNumber(idNumber) {
85221
+ if (idNumber) {
85222
+ const ageDate = new Date();
85223
+ const month = ageDate.getMonth() + 1;
85224
+ const day = ageDate.getDate();
85225
+ let age = ageDate.getFullYear() - idNumber.substring(6, 10) - 1;
85226
+ if (idNumber.substring(10, 12) < month || idNumber.substring(10, 12) === month && idNumber.substring(12, 14) <= day) {
85227
+ age++;
85228
+ }
85229
+ if (age <= 0) {
85230
+ age = 1;
85231
+ }
85232
+ return age;
85233
+ }
85234
+ return '';
85235
+ }
85236
+ }
85237
+ ;// CONCATENATED MODULE: ./packages/service/external-plugins/ewp-plugin-socket.service.ts
85238
+
85239
+
85240
+ /**
85241
+ * 沃斯德人证交互终端
85242
+ * E窗通WEBSOCKET服务
85243
+ *
85244
+ * */
85245
+
85246
+ var EWindowPassMethodCode;
85247
+ (function (EWindowPassMethodCode) {
85248
+ /** 读取社保卡 */
85249
+ EWindowPassMethodCode["iReadCardBas"] = "iReadCardBas";
85250
+ /** 获取签名*/
85251
+ EWindowPassMethodCode["GetSignName_Base64"] = "GetSignName_Base64";
85252
+ /** 读取二代身份证 */
85253
+ EWindowPassMethodCode["ReadIDCard_Base64"] = "ReadIDCard_Base64";
85254
+ /** 人证比对 */
85255
+ EWindowPassMethodCode["FaceValidateWithIdCard_Base64"] = "FaceValidateWithIdCard_Base64";
85256
+ /** 获取指纹 */
85257
+ EWindowPassMethodCode["FingerPrint_Base64"] = "FingerPrint_Base64";
85258
+ })(EWindowPassMethodCode || (EWindowPassMethodCode = {}));
85259
+ const EWindowPassMethodDesc = {
85260
+ [EWindowPassMethodCode.iReadCardBas]: '读取社保卡',
85261
+ [EWindowPassMethodCode.GetSignName_Base64]: '获取签名',
85262
+ [EWindowPassMethodCode.ReadIDCard_Base64]: '读取二代身份证',
85263
+ [EWindowPassMethodCode.FaceValidateWithIdCard_Base64]: '人证比对',
85264
+ [EWindowPassMethodCode.FingerPrint_Base64]: '获取指纹'
85265
+ };
85266
+ class EWindowPassService {
85267
+ static startConnect(method) {
85268
+ if (this.ws && this.ws.readyState === WebSocket.CONNECTING) {
85269
+ return this;
85270
+ }
85271
+ let webSocketUrl = '';
85272
+ switch (method) {
85273
+ case EWindowPassMethodCode.FingerPrint_Base64:
85274
+ webSocketUrl = this.fingerPrintBasWebSocketUrl;
85275
+ break;
85276
+ default:
85277
+ webSocketUrl = this.iReadCardBasWebSocketUrl;
85278
+ break;
85279
+ }
85280
+ const ws = new WebSocket(webSocketUrl);
85281
+ let resolved;
85282
+ const onConnect = new Promise(resolve => {
85283
+ resolved = resolve;
85284
+ });
85285
+ ws.onopen = () => {
85286
+ resolved(true);
85287
+ };
85288
+ ws.onmessage = event => {
85289
+ if (method === EWindowPassMethodCode.FingerPrint_Base64) {
85290
+ // 指纹后端返回的是string
85291
+ event = {
85292
+ ...event,
85293
+ data: JSON.stringify({
85294
+ fingerPrintInfo: event.data
85295
+ })
85296
+ };
85297
+ }
85298
+ this.handleMessage(event);
85299
+ };
85300
+ ws.onclose = () => this.handleClose();
85301
+ ws.onerror = () => this.handleError();
85302
+ this.ws = ws;
85303
+ return onConnect;
85304
+ }
85305
+ static handleError() {
85306
+ for (const type in this.requestStore) {
85307
+ this.requestStore.forEach(({
85308
+ reject
85309
+ }) => {
85310
+ reject('handleError');
85311
+ });
85312
+ }
85313
+ throw Error('E窗通设备功能加载失败');
85314
+ }
85315
+ static handleClose() {
85316
+ for (const type in this.requestStore) {
85317
+ this.requestStore.forEach(({
85318
+ reject
85319
+ }) => {
85320
+ reject('close');
85321
+ });
85322
+ }
85323
+ }
85324
+ static handleMessage(msg) {
85325
+ let data = '';
85326
+ try {
85327
+ data = JSON.parse(msg.data);
85328
+ } catch (e) {
85329
+ data = '';
85330
+ }
85331
+ this.requestStore.forEach(({
85332
+ resolve
85333
+ }) => {
85334
+ resolve(data);
85335
+ });
85336
+ this.requestStore = [];
85337
+ this.ws.close();
85338
+ }
85339
+ static async read(method) {
85340
+ await this.startConnect(method);
85341
+ const methodDesc = EWindowPassMethodDesc[method];
85342
+ if (this.ws.readyState === 1) {
85343
+ if (method !== EWindowPassMethodCode.FingerPrint_Base64) console.log(methodDesc + '连接成功');
85344
+ let jsonString;
85345
+ // outTimes:超时时间(秒)
85346
+ switch (method) {
85347
+ case EWindowPassMethodCode.ReadIDCard_Base64:
85348
+ // cardReader:0 读卡器-USB;1 读卡器-COM
85349
+ jsonString = JSON.stringify({
85350
+ method,
85351
+ args: {
85352
+ outTimes: 30,
85353
+ cardReader: 1
85354
+ }
85355
+ });
85356
+ break;
85357
+ case EWindowPassMethodCode.FaceValidateWithIdCard_Base64:
85358
+ // cardReader:0 读卡器-USB;1 读卡器-COM
85359
+ jsonString = JSON.stringify({
85360
+ method,
85361
+ args: {
85362
+ outTimes: 30,
85363
+ cardReader: 1,
85364
+ cameraType: 0
85365
+ }
85366
+ });
85367
+ break;
85368
+ case EWindowPassMethodCode.iReadCardBas:
85369
+ // icType:1接触卡;2非接触卡;3自动(接触优先);4自动(非接优先)
85370
+ jsonString = JSON.stringify({
85371
+ method,
85372
+ args: {
85373
+ icType: '1'
85374
+ }
85375
+ });
85376
+ break;
85377
+ case EWindowPassMethodCode.FingerPrint_Base64:
85378
+ // 获取指纹:getimgae,颜色(0黑色 1红色), 质量(默认0), 图像大小(288,360),类型(0民用,1公安)
85379
+ jsonString = 'getimgae,1,0,288,0';
85380
+ break;
85381
+ default:
85382
+ jsonString = JSON.stringify({
85383
+ method,
85384
+ args: {
85385
+ outTimes: 30
85386
+ }
85387
+ });
85388
+ break;
85389
+ }
85390
+ this.ws.send(jsonString);
85391
+ return new Promise((resolve, reject) => {
85392
+ if (!this.requestStore) {
85393
+ this.requestStore = [];
85394
+ }
85395
+ this.requestStore.push({
85396
+ resolve,
85397
+ reject
85398
+ });
85399
+ });
85400
+ } else {
85401
+ throw Error(methodDesc + '未准备完成');
85402
+ }
85403
+ }
85404
+ /**
85405
+ * 读取二代身份证
85406
+ * */
85407
+ static async idCardRead(method = EWindowPassMethodCode.ReadIDCard_Base64) {
85408
+ const readData = await EWindowPassService.read(EWindowPassMethodCode.ReadIDCard_Base64);
85409
+ console.log('读取二代身份证==>', readData);
85410
+ if (!readData) {
85411
+ throw Error('未匹配可用的E窗通读取设备');
85412
+ }
85413
+ if (readData.retVal !== 0) {
85414
+ throw Error("读取二代身份证失败,返回值:" + readData.retVal + ",错误信息:" + readData.errMsg);
85415
+ }
85416
+ const idInfo = readData.idInfo.data;
85417
+ const {
85418
+ name,
85419
+ sex,
85420
+ birthday,
85421
+ address,
85422
+ id_num,
85423
+ nations
85424
+ } = idInfo;
85425
+ const IDCardData = {
85426
+ info: {
85427
+ name,
85428
+ sex,
85429
+ birthday: birthday.replace('-', '').replace('-', ''),
85430
+ address,
85431
+ cardId: id_num,
85432
+ nation: nations
85433
+ },
85434
+ headImage: readData.idPhotoPicBase64
85435
+ };
85436
+ console.log('读取二代身份证结果==>', IDCardData);
85437
+ return IDCardData;
85438
+ }
85439
+ /**
85440
+ * 人证比对
85441
+ */
85442
+ static async faceValidateWithIdCardRead() {
85443
+ const readData = await EWindowPassService.read(EWindowPassMethodCode.FaceValidateWithIdCard_Base64);
85444
+ console.log('人证比对==>', readData);
85445
+ if (!readData) {
85446
+ throw Error('未匹配可用的E窗通读取设备');
85447
+ }
85448
+ if (readData.retVal !== 0) {
85449
+ throw Error("人证比对失败,返回值:" + readData.retVal + ",错误信息:" + readData.errMsg);
85450
+ }
85451
+ const idInfo = readData.idInfo.data;
85452
+ const {
85453
+ name,
85454
+ sex,
85455
+ birth,
85456
+ address,
85457
+ idNo,
85458
+ nation
85459
+ } = idInfo;
85460
+ const IDCardData = {
85461
+ idCard: {
85462
+ info: {
85463
+ name,
85464
+ sex,
85465
+ birthday: birth.replace('-', '').replace('-', ''),
85466
+ address,
85467
+ cardId: idNo,
85468
+ nation
85469
+ },
85470
+ headImage: readData.idPhotoBase64
85471
+ },
85472
+ faceimg: readData.scenceBase64
85473
+ };
85474
+ console.log('人证比对结果==>', IDCardData);
85475
+ return IDCardData;
85476
+ }
85477
+ /** 读取社保卡 */
85478
+ static async socialSecurityCardRead() {
85479
+ const readData = await EWindowPassService.read(EWindowPassMethodCode.iReadCardBas);
85480
+ if (!readData) {
85481
+ throw Error('未匹配可用的E窗通读取设备');
85482
+ }
85483
+ if (readData.retVal !== 0) {
85484
+ throw Error("读取社保卡基本信息失败,返回值:" + readData.retVal + ",错误信息:" + readData.outInfo);
85485
+ }
85486
+ // 返回数据:330100|350781196403072943|W57681892|331100D10600000300657BCF88899F8E|张三|3B6D000000815444368660330100286BCF|1.00|2020-08-12|2030-08-12|1|SN00000000|(邮编|身份证号|卡号|社会保障号码|姓名|...不知道是什么信息了)
85487
+ const outInfo = readData.outInfo;
85488
+ const outInfoArray = outInfo.split('|');
85489
+ const cardId = outInfoArray[1];
85490
+ const birthday = IdCardCommonUtils.getBirthdayByIdNumber(cardId).replace('-', '').replace('-', '');
85491
+ const sex = IdCardCommonUtils.getGenderByIdNumber(cardId);
85492
+ const IDCardData = {
85493
+ info: {
85494
+ name: outInfoArray[4],
85495
+ sex,
85496
+ birthday,
85497
+ address: '',
85498
+ cardId
85499
+ },
85500
+ headImage: ''
85501
+ };
85502
+ console.log('读取社保卡==>', readData);
85503
+ return IDCardData;
85504
+ }
85505
+ /** 获取签名-base64 */
85506
+ static async signNameRead() {
85507
+ const readData = await EWindowPassService.read(EWindowPassMethodCode.GetSignName_Base64);
85508
+ if (!readData) {
85509
+ throw Error('未匹配可用的E窗通读取设备');
85510
+ }
85511
+ if (readData.retVal !== 0) {
85512
+ throw Error("读取签名失败,返回值:" + readData.retVal + ",错误信息:" + readData.errMsg);
85513
+ }
85514
+ console.log('获取签名==>', readData);
85515
+ return readData.signPicBase64;
85516
+ }
85517
+ /** 获取指纹*/
85518
+ static async fingerPrintRead() {
85519
+ let timeOver = 30;
85520
+ async function readFingerPrint() {
85521
+ const readData = await EWindowPassService.read(EWindowPassMethodCode.FingerPrint_Base64);
85522
+ if (!readData) {
85523
+ throw Error('未匹配可用的E窗通读取设备');
85524
+ }
85525
+ let list = readData.fingerPrintInfo.split("|");
85526
+ console.log(list);
85527
+ let ret = Number(list[1]);
85528
+ if (ret > 1) {
85529
+ if (timeOver > 0) {
85530
+ timeOver--;
85531
+ return await readFingerPrint();
85532
+ } else {
85533
+ return {
85534
+ status: 'error',
85535
+ data: '已超时,请重新操作,按压指纹'
85536
+ };
85537
+ }
85538
+ } else {
85539
+ return {
85540
+ status: 'success',
85541
+ data: readData.fingerPrintInfo
85542
+ };
85543
+ }
85544
+ }
85545
+ let {
85546
+ status,
85547
+ data
85548
+ } = await readFingerPrint();
85549
+ if (status === 'error') {
85550
+ throw Error(data);
85551
+ } else {
85552
+ let [method, result, quality, image, featureCode] = data.split('|');
85553
+ // getimgae|1|68|......|......
85554
+ // method:方法,result:返回的状态,quality:指纹图片质量,image:图片base64,featureCode:指纹特征码
85555
+ return {
85556
+ method,
85557
+ result,
85558
+ quality,
85559
+ image,
85560
+ featureCode
85561
+ };
85562
+ }
85563
+ }
85564
+ }
85565
+ _defineProperty(EWindowPassService, "iReadCardBasWebSocketUrl", 'ws://127.0.0.1:5847');
85566
+ _defineProperty(EWindowPassService, "fingerPrintBasWebSocketUrl", 'ws://127.0.0.1:9000');
85567
+ _defineProperty(EWindowPassService, "ws", void 0);
85568
+ _defineProperty(EWindowPassService, "requestStore", []);
85569
+ ;// CONCATENATED MODULE: ./packages/service/external-plugins/huada-plugin-socket.service.ts
85570
+
85571
+
85572
+ /**
85573
+ * 华大读卡器
85574
+ *
85575
+ * */
85576
+
85577
+ var HuaDaCardReadMode;
85578
+ (function (HuaDaCardReadMode) {
85579
+ /** 读取社保卡 */
85580
+ HuaDaCardReadMode[HuaDaCardReadMode["ReadSocialSecurityCard"] = 1002] = "ReadSocialSecurityCard";
85581
+ /** 读取二代身份证 */
85582
+ HuaDaCardReadMode[HuaDaCardReadMode["ReadIDCard"] = 1003] = "ReadIDCard";
85583
+ })(HuaDaCardReadMode || (HuaDaCardReadMode = {}));
85584
+ /**
85585
+ * 广东华大读卡器
85586
+ */
85587
+ class HuzReadService {
85588
+ /**
85589
+ * 开启连接
85590
+ */
85591
+ static startConnect() {
85592
+ if (this.ws && this.ws.readyState === WebSocket.CONNECTING) {
85593
+ return this;
85594
+ }
85595
+ const webSocketUrl = this.HaDWebSocketUrl;
85596
+ const ws = new WebSocket(webSocketUrl);
85597
+ let resolved;
85598
+ const onConnect = new Promise(resolve => {
85599
+ resolved = resolve;
85600
+ });
85601
+ ws.onopen = () => {
85602
+ resolved(true);
85603
+ };
85604
+ ws.onmessage = event => this.handleMessage(event);
85605
+ ws.onclose = () => this.handleClose();
85606
+ ws.onerror = () => this.handleError();
85607
+ this.ws = ws;
85608
+ return onConnect;
85609
+ }
85610
+ /**
85611
+ * 错误回调
85612
+ */
85613
+ static handleError() {
85614
+ for (const type in this.requestStore) {
85615
+ this.requestStore.forEach(({
85616
+ reject
85617
+ }) => {
85618
+ reject('handleError');
85619
+ });
85620
+ }
85621
+ }
85622
+ /**
85623
+ * 关闭请求
85624
+ */
85625
+ static handleClose() {
85626
+ for (const type in this.requestStore) {
85627
+ this.requestStore.forEach(({
85628
+ reject
85629
+ }) => {
85630
+ reject('close');
85631
+ });
85632
+ }
85633
+ }
85634
+ /**
85635
+ * 回调数据
85636
+ * @param msg
85637
+ */
85638
+ static handleMessage(msg) {
85639
+ debugger;
85640
+ // 返回参数格式
85641
+ // tsCode 入参返回数据码
85642
+ // code 状态码
85643
+ // message 返回信息
85644
+ // cardInfo 身份证信息
85645
+ // base64_ID 人像照片
85646
+ // base64_IDPDF ""
85647
+ // base64_PhotoPDF ""
85648
+ // birth 生日,格式:1996年06月10日
85649
+ // depart 签发机关
85650
+ // id_num 身份证号码
85651
+ // name 姓名
85652
+ // nation 民族
85653
+ // passFlag 是否成功,true,false(type=5的额外参数)
85654
+ // score 成绩,90.0(type=5的额外参数)
85655
+ // sex 性别:男,女
85656
+ // time 认证耗时,ms(type=5的额外参数)
85657
+ // type 接口类型
85658
+ // validityTime 有限期限,格式:2014.06.09-2024.06.09
85659
+ const data = JSON.parse(msg.data);
85660
+ this.requestStore.forEach(({
85661
+ resolve
85662
+ }) => {
85663
+ resolve(data);
85664
+ });
85665
+ this.requestStore = [];
85666
+ this.ws.close();
85667
+ }
85668
+ /**
85669
+ * 发送请求,开启签字版
85670
+ * @param type 接口类型,3:指定位置签名或点击电子签名;54:关键字签名(对接时未返回数据,不建议用)4:读取身份证信息;5:人脸识别; 2:关闭设备
85671
+ * @param pdf pdf或图片的base64,不能带地址前缀
85672
+ * @param location 捷宇签字版签字时坐标(必传,不然接口调用会失败),非指定位置时该坐标也需要传,但不会起作用
85673
+ * @param timeout 签字版签字超时时间,秒
85674
+ * @param retain 是否按传入坐标签名,传入任意字符【如test】时签名会展示在传入的坐标上,
85675
+ * 传入空字符则在屏幕点击的位置上签名---接口类型3依据此字段区分是否为指定位置签名
85676
+ */
85677
+ static async read(tsCode) {
85678
+ await this.startConnect();
85679
+ if (this.ws.readyState === 1) {
85680
+ debugger;
85681
+ let jsonPattern;
85682
+ // 签名和指纹
85683
+ if (tsCode === 1003 || tsCode === 1002) {
85684
+ jsonPattern = {
85685
+ 'tsCode': tsCode.toString(),
85686
+ 'picFilePath': 'd:\\zp.bmp'
85687
+ };
85688
+ }
85689
+ const jsonStr = JSON.stringify(jsonPattern);
85690
+ this.ws.send(jsonStr);
85691
+ return new Promise((resolve, reject) => {
85692
+ if (!this.requestStore) {
85693
+ this.requestStore = [];
85694
+ }
85695
+ this.requestStore.push({
85696
+ resolve,
85697
+ reject
85698
+ });
85699
+ });
85700
+ } else {
85701
+ throw Error('设备未准备完成');
85702
+ }
85703
+ }
85704
+ /**
85705
+ * 读取二代身份证
85706
+ * */
85707
+ static async idCardRead() {
85708
+ const readData = await HuzReadService.read(HuaDaCardReadMode.ReadIDCard);
85709
+ console.log('读取二代身份证==>', readData);
85710
+ if (!readData) {
85711
+ throw Error('未匹配可用的读取设备');
85712
+ }
85713
+ const name = readData.cardInfo.split('|')[1];
85714
+ const sex = readData.cardInfo.split('|')[2];
85715
+ const nation = readData.cardInfo.split('|')[3];
85716
+ const birthday = readData.cardInfo.split('|')[4];
85717
+ const address = readData.cardInfo.split('|')[5];
85718
+ const cardId = readData.cardInfo.split('|')[6];
85719
+ const police = readData.cardInfo.split('|')[7];
85720
+ const yxqx1 = readData.cardInfo.split('|')[8];
85721
+ const yxqx2 = readData.cardInfo.split('|')[9];
85722
+ const zpString = readData.cardInfo.split('|')[10];
85723
+ const IDCardData = {
85724
+ info: {
85725
+ name,
85726
+ sex,
85727
+ birthday,
85728
+ address,
85729
+ cardId,
85730
+ nation
85731
+ },
85732
+ headImage: zpString
85733
+ };
85734
+ console.log('读取二代身份证结果==>', IDCardData);
85735
+ return IDCardData;
85736
+ }
85737
+ /** 读取社保卡 */
85738
+ static async socialSecurityCardRead() {
85739
+ const readData = await HuzReadService.read(HuaDaCardReadMode.ReadSocialSecurityCard);
85740
+ if (!readData) {
85741
+ throw Error('未匹配可用的读取设备');
85742
+ }
85743
+ const cardId = readData.cardInfo.split('|')[1];
85744
+ const name = readData.cardInfo.split('|')[2];
85745
+ const birthday = IdCardCommonUtils.getBirthdayByIdNumber(cardId).replace('-', '').replace('-', '');
85746
+ const sex = IdCardCommonUtils.getGenderByIdNumber(cardId);
85747
+ const IDCardData = {
85748
+ info: {
85749
+ name,
85750
+ sex,
85751
+ birthday,
85752
+ address: '',
85753
+ cardId
85754
+ },
85755
+ headImage: ''
85756
+ };
85757
+ console.log('读取社保卡==>', readData);
85758
+ return IDCardData;
85759
+ }
85760
+ }
85761
+ _defineProperty(HuzReadService, "HaDWebSocketUrl", 'ws://127.0.0.1:36669/');
85762
+ _defineProperty(HuzReadService, "ws", void 0);
85763
+ _defineProperty(HuzReadService, "requestStore", []);
85764
+ ;// CONCATENATED MODULE: ./packages/utils/js/BASE64.js
85765
+ var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
85766
+ var base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
85767
+ //������
85768
+ function base64encode(str) {
85769
+ var out, i, len;
85770
+ var c1, c2, c3;
85771
+ len = str.length;
85772
+ i = 0;
85773
+ out = "";
85774
+ while (i < len) {
85775
+ c1 = str.charCodeAt(i++) & 0xff;
85776
+ if (i == len) {
85777
+ out += base64EncodeChars.charAt(c1 >> 2);
85778
+ out += base64EncodeChars.charAt((c1 & 0x3) << 4);
85779
+ out += "==";
85780
+ break;
85781
+ }
85782
+ c2 = str.charCodeAt(i++);
85783
+ if (i == len) {
85784
+ out += base64EncodeChars.charAt(c1 >> 2);
85785
+ out += base64EncodeChars.charAt((c1 & 0x3) << 4 | (c2 & 0xF0) >> 4);
85786
+ out += base64EncodeChars.charAt((c2 & 0xF) << 2);
85787
+ out += "=";
85788
+ break;
85789
+ }
85790
+ c3 = str.charCodeAt(i++);
85791
+ out += base64EncodeChars.charAt(c1 >> 2);
85792
+ out += base64EncodeChars.charAt((c1 & 0x3) << 4 | (c2 & 0xF0) >> 4);
85793
+ out += base64EncodeChars.charAt((c2 & 0xF) << 2 | (c3 & 0xC0) >> 6);
85794
+ out += base64EncodeChars.charAt(c3 & 0x3F);
85795
+ }
85796
+ return out;
85797
+ }
85798
+ //������
85799
+ function base64decode(str) {
85800
+ var c1, c2, c3, c4;
85801
+ var i, len, out;
85802
+ len = str.length;
85803
+ i = 0;
85804
+ out = "";
85805
+ while (i < len) {
85806
+ do {
85807
+ c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
85808
+ } while (i < len && c1 == -1);
85809
+ if (c1 == -1) break;
85810
+ do {
85811
+ c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
85812
+ } while (i < len && c2 == -1);
85813
+ if (c2 == -1) break;
85814
+ out += String.fromCharCode(c1 << 2 | (c2 & 0x30) >> 4);
85815
+ do {
85816
+ c3 = str.charCodeAt(i++) & 0xff;
85817
+ if (c3 == 61) return out;
85818
+ c3 = base64DecodeChars[c3];
85819
+ } while (i < len && c3 == -1);
85820
+ if (c3 == -1) break;
85821
+ out += String.fromCharCode((c2 & 0XF) << 4 | (c3 & 0x3C) >> 2);
85822
+ do {
85823
+ c4 = str.charCodeAt(i++) & 0xff;
85824
+ if (c4 == 61) return out;
85825
+ c4 = base64DecodeChars[c4];
85826
+ } while (i < len && c4 == -1);
85827
+ if (c4 == -1) break;
85828
+ out += String.fromCharCode((c3 & 0x03) << 6 | c4);
85829
+ }
85830
+ return out;
85831
+ }
85832
+ function utf16to8(str) {
85833
+ var out, i, len, c;
85834
+ out = "";
85835
+ len = str.length;
85836
+ for (i = 0; i < len; i++) {
85837
+ c = str.charCodeAt(i);
85838
+ if (c >= 0x0001 && c <= 0x007F) {
85839
+ out += str.charAt(i);
85840
+ } else if (c > 0x07FF) {
85841
+ out += String.fromCharCode(0xE0 | c >> 12 & 0x0F);
85842
+ out += String.fromCharCode(0x80 | c >> 6 & 0x3F);
85843
+ out += String.fromCharCode(0x80 | c >> 0 & 0x3F);
85844
+ } else {
85845
+ out += String.fromCharCode(0xC0 | c >> 6 & 0x1F);
85846
+ out += String.fromCharCode(0x80 | c >> 0 & 0x3F);
85847
+ }
85848
+ }
85849
+ return out;
85850
+ }
85851
+ function utf8to16(str) {
85852
+ var out, i, len, c;
85853
+ var char2, char3;
85854
+ out = "";
85855
+ len = str.length;
85856
+ i = 0;
85857
+ while (i < len) {
85858
+ c = str.charCodeAt(i++);
85859
+ switch (c >> 4) {
85860
+ case 0:
85861
+ case 1:
85862
+ case 2:
85863
+ case 3:
85864
+ case 4:
85865
+ case 5:
85866
+ case 6:
85867
+ case 7:
85868
+ // 0xxxxxxx
85869
+ out += str.charAt(i - 1);
85870
+ break;
85871
+ case 12:
85872
+ case 13:
85873
+ // 110x xxxx 10xx xxxx
85874
+ char2 = str.charCodeAt(i++);
85875
+ out += String.fromCharCode((c & 0x1F) << 6 | char2 & 0x3F);
85876
+ break;
85877
+ case 14:
85878
+ // 1110 xxxx 10xx xxxx 10xx xxxx
85879
+ char2 = str.charCodeAt(i++);
85880
+ char3 = str.charCodeAt(i++);
85881
+ out += String.fromCharCode((c & 0x0F) << 12 | (char2 & 0x3F) << 6 | (char3 & 0x3F) << 0);
85882
+ break;
85883
+ }
85884
+ }
85885
+ return out;
85886
+ }
85887
+ ;// CONCATENATED MODULE: ./packages/service/external-plugins/mr-adb-plugin-socket.service.ts
85888
+
85889
+
85890
+ /**
85891
+ * 中正智能人证核验一体机 MR860 Websocket v1.0.2
85892
+ *
85893
+ * */
85894
+
85895
+ var MRAdbReadMode;
85896
+ (function (MRAdbReadMode) {
85897
+ /** 人证核验:读取二代身份证、人脸识别 */
85898
+ MRAdbReadMode["ReadIDCard"] = "$=Action|127.0.0.1|1352";
85899
+ })(MRAdbReadMode || (MRAdbReadMode = {}));
85900
+ /**
85901
+ * 中正智能人证核验一体机
85902
+ */
85903
+ class MRAdbReadService {
85904
+ /**
85905
+ * 开启连接
85906
+ */
85907
+ static startConnect(command) {
85908
+ if (this.ws && this.ws.readyState === WebSocket.CONNECTING) {
85909
+ return this;
85910
+ }
85911
+ const webSocketUrl = this.MRAdbWebSocketUrl;
85912
+ const ws = new WebSocket(webSocketUrl);
85913
+ let resolved;
85914
+ const onConnect = new Promise(resolve => {
85915
+ resolved = resolve;
85916
+ });
85917
+ ws.onopen = () => {
85918
+ ws.send(command);
85919
+ resolved(true);
85920
+ };
85921
+ ws.onmessage = event => this.handleMessage(event);
85922
+ ws.onclose = () => this.handleClose();
85923
+ ws.onerror = () => this.handleError();
85924
+ this.ws = ws;
85925
+ return onConnect;
85926
+ }
85927
+ /**
85928
+ * 错误回调
85929
+ */
85930
+ static handleError() {
85931
+ for (const type in this.requestStore) {
85932
+ this.requestStore.forEach(({
85933
+ reject
85934
+ }) => {
85935
+ reject('handleError');
85936
+ });
85937
+ }
85938
+ }
85939
+ /**
85940
+ * 关闭请求
85941
+ */
85942
+ static handleClose() {
85943
+ for (const type in this.requestStore) {
85944
+ this.requestStore.forEach(({
85945
+ reject
85946
+ }) => {
85947
+ reject('close');
85948
+ });
85949
+ }
85950
+ }
85951
+ /**
85952
+ * 回调数据
85953
+ * @param msg
85954
+ */
85955
+ static handleMessage(msg) {
85956
+ const data = JSON.parse(msg.data);
85957
+ this.requestStore.forEach(({
85958
+ resolve
85959
+ }) => {
85960
+ resolve(data);
85961
+ });
85962
+ this.requestStore = [];
85963
+ this.ws.close();
85964
+ }
85965
+ static async read(command) {
85966
+ await this.startConnect(command);
85967
+ return new Promise((resolve, reject) => {
85968
+ if (!this.requestStore) {
85969
+ this.requestStore = [];
85970
+ }
85971
+ this.requestStore.push({
85972
+ resolve,
85973
+ reject
85974
+ });
85975
+ });
85976
+ }
85977
+ /**
85978
+ * 人证核验
85979
+ * */
85980
+ static async idCardRead() {
85981
+ const returnData = await MRAdbReadService.read(MRAdbReadMode.ReadIDCard);
85982
+ console.log('中正智能人证核验返回==>', returnData);
85983
+ if (!returnData) {
85984
+ throw Error('未匹配可用的读取设备');
85985
+ }
85986
+ // result: 0 - 成功;其他 - 失败
85987
+ // data: if(result==0) 返回值Base64字符串格式,进行base64解码,再进行数据解析
85988
+ const {
85989
+ result,
85990
+ data
85991
+ } = returnData;
85992
+ switch (result) {
85993
+ case -1:
85994
+ throw Error('服务器IP地址或者服务端口错误');
85995
+ case -2:
85996
+ throw Error('输入的发送数据参数非法');
85997
+ case -3:
85998
+ throw Error('连接服务器失败');
85999
+ case -4:
86000
+ throw Error('发送数据失败');
86001
+ case -5:
86002
+ throw Error('接收应答数据超时');
86003
+ case -6:
86004
+ throw Error('接收应答数据失败');
86005
+ case -7:
86006
+ throw Error('输出应答数据参数非法');
86007
+ case -8:
86008
+ throw Error('Websocket无法识别命令字');
86009
+ case -9:
86010
+ throw Error('Websocket解析命令字错误');
86011
+ case -10:
86012
+ throw Error('Websocket base64编码失败');
86013
+ case -11:
86014
+ throw Error('指纹驱动未安装或者未启动');
86015
+ case 0:
86016
+ {
86017
+ const deData = utf8to16(base64decode(data));
86018
+ console.log('中正智能人证核验结果==>', deData);
86019
+ const reStrs = deData.split("\$");
86020
+ const name = reStrs[2].split("=#=")[1];
86021
+ const sex = reStrs[3].split("=#=")[1];
86022
+ const nation = reStrs[10].split("=#=")[1];
86023
+ const birthday = reStrs[6].split("=#=")[1];
86024
+ const address = reStrs[5].split("=#=")[1];
86025
+ const cardId = reStrs[4].split("=#=")[1];
86026
+ const police = reStrs[11].split("=#=")[1];
86027
+ const headImage = reStrs[8].split("=#=")[1];
86028
+ const faceimg = reStrs[9].split("=#=")[1];
86029
+ const IDCardData = {
86030
+ idCard: {
86031
+ info: {
86032
+ name,
86033
+ sex,
86034
+ birthday,
86035
+ address,
86036
+ cardId,
86037
+ nation
86038
+ },
86039
+ headImage
86040
+ },
86041
+ faceimg
86042
+ };
86043
+ console.log('中正智能人证核验结果转换==>', {
86044
+ name,
86045
+ sex,
86046
+ birthday,
86047
+ address,
86048
+ cardId,
86049
+ nation
86050
+ });
86051
+ return IDCardData;
86052
+ }
86053
+ }
86054
+ return '';
86055
+ }
86056
+ }
86057
+ _defineProperty(MRAdbReadService, "MRAdbWebSocketUrl", 'ws://127.0.0.1:8003/finger');
86058
+ _defineProperty(MRAdbReadService, "ws", void 0);
86059
+ _defineProperty(MRAdbReadService, "requestStore", []);
86060
+ // EXTERNAL MODULE: ./packages/utils/js/tsToJs.js
86061
+ var tsToJs = __webpack_require__(3144);
86062
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[4]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/id-card-reader/id-card-reader-button/src/dialog/face-auth-dialog.vue?vue&type=template&id=370e03c8&
86063
+ var face_auth_dialogvue_type_template_id_370e03c8_render = function render() {
86064
+ var _vm = this,
86065
+ _c = _vm._self._c;
86066
+ return _vm.visibility ? _c('el-dialog', {
86067
+ staticClass: "face-auth-dialog",
86068
+ attrs: {
86069
+ "title": "人脸识别",
86070
+ "top": '5vh',
86071
+ "width": "1280px",
86072
+ "visible": _vm.visibility,
86073
+ "close-on-click-modal": false
86074
+ },
86075
+ on: {
86076
+ "update:visible": function ($event) {
86077
+ _vm.visibility = $event;
86078
+ }
86079
+ }
86080
+ }, [_c('el-container', [_c('el-aside', {
86081
+ attrs: {
86082
+ "width": "900px"
86083
+ }
86084
+ }, [_c('zs-card', {
86085
+ attrs: {
86086
+ "title": "身份证信息读取"
86087
+ }
86088
+ }, [_c('div', {
86089
+ staticClass: "idcard-photo"
86090
+ }, [_c('div', {
86091
+ staticClass: "flex-1"
86092
+ }, [_c('img', {
86093
+ staticStyle: {
86094
+ "width": "433px",
86095
+ "height": "278px"
86096
+ },
86097
+ attrs: {
86098
+ "src": __webpack_require__(2234)
86099
+ }
86100
+ }), _c('span', {
86101
+ staticClass: "idcard-info name"
86102
+ }, [_vm._v(_vm._s(_vm.IDInfo.name))]), _c('span', {
86103
+ staticClass: "idcard-info sex"
86104
+ }, [_vm._v(_vm._s(_vm.IDInfo.sex))]), _c('span', {
86105
+ staticClass: "idcard-info nation"
86106
+ }, [_vm._v(_vm._s(_vm.IDInfo.nation))]), _c('span', {
86107
+ staticClass: "idcard-info year"
86108
+ }, [_vm._v(_vm._s(_vm.birthYear))]), _c('span', {
86109
+ staticClass: "idcard-info month"
86110
+ }, [_vm._v(_vm._s(_vm.birthMonth))]), _c('span', {
86111
+ staticClass: "idcard-info day"
86112
+ }, [_vm._v(_vm._s(_vm.birthDay))]), _c('span', {
86113
+ staticClass: "idcard-info address"
86114
+ }, [_vm._v(_vm._s(_vm.IDInfo.address))]), _c('span', {
86115
+ staticClass: "idcard-info idnumber"
86116
+ }, [_vm._v(_vm._s(_vm.IDInfo.cardId))])]), _c('div', [_c('img', {
86117
+ staticStyle: {
86118
+ "width": "433px",
86119
+ "height": "278px"
86120
+ },
86121
+ attrs: {
86122
+ "src": __webpack_require__(4923)
86123
+ }
86124
+ }), _c('span', {
86125
+ staticClass: "idcard-info qfjg"
86126
+ }, [_vm._v(_vm._s(_vm.IDInfo.police))]), _c('span', {
86127
+ staticClass: "idcard-info yxrq"
86128
+ }, [_vm._v(_vm._s(_vm.validDate))])])])])], 1), _c('el-main', [_c('zs-card', {
86129
+ staticClass: "camera",
86130
+ attrs: {
86131
+ "title": "摄像头"
86132
+ },
86133
+ scopedSlots: _vm._u([{
86134
+ key: "extra",
86135
+ fn: function () {
86136
+ return [_c('el-button', {
86137
+ attrs: {
86138
+ "type": "primary",
86139
+ "size": "mini"
86140
+ },
86141
+ on: {
86142
+ "click": _vm.veriface
86143
+ }
86144
+ }, [_vm._v("开始识别")])];
86145
+ },
86146
+ proxy: true
86147
+ }], null, false, 3429989024)
86148
+ }, [_c('div', {
86149
+ staticStyle: {
86150
+ "width": "320px",
86151
+ "height": "240px"
86152
+ },
86153
+ attrs: {
86154
+ "id": "camera_row"
86155
+ }
86156
+ })])], 1)], 1), _c('span', {
86157
+ staticClass: "dialog-footer",
86158
+ attrs: {
86159
+ "slot": "footer"
86160
+ },
86161
+ slot: "footer"
86162
+ }, _vm._l(_vm.buttonList, function (button) {
86163
+ return _c('el-button', _vm._b({
86164
+ key: button.name,
86165
+ on: {
86166
+ "click": function ($event) {
86167
+ return _vm.buttonClickEvent(button.name);
86168
+ }
86169
+ }
86170
+ }, 'el-button', button, false), [_vm._v(_vm._s(button.label) + " ")]);
86171
+ }), 1)], 1) : _vm._e();
86172
+ };
86173
+ var face_auth_dialogvue_type_template_id_370e03c8_staticRenderFns = [];
86174
+
86175
+ ;// CONCATENATED MODULE: ./packages/id-card-reader/id-card-reader-button/src/dialog/face-auth-dialog.vue?vue&type=template&id=370e03c8&
86176
+
86177
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/id-card-reader/id-card-reader-button/src/dialog/face-auth-dialog.vue?vue&type=script&lang=js&
86178
+
86179
+ /* harmony default export */ var face_auth_dialogvue_type_script_lang_js_ = ({
86180
+ name: 'face-auth-dialog',
86181
+ data: () => {
86182
+ return {
86183
+ visibility: true,
86184
+ buttonList: [{
86185
+ name: 'cancel',
86186
+ label: '取消',
86187
+ size: 'small'
86188
+ }, {
86189
+ name: 'sure',
86190
+ label: '确定',
86191
+ type: 'primary',
86192
+ size: 'small',
86193
+ icon: 'el-icon-success'
86194
+ }],
86195
+ idCardInfo: {
86196
+ info: {
86197
+ name: '',
86198
+ sex: '',
86199
+ nation: '',
86200
+ birthday: '',
86201
+ address: '',
86202
+ cardId: '',
86203
+ police: '',
86204
+ validStart: '',
86205
+ validEnd: '',
86206
+ sexCode: '',
86207
+ nationCode: ''
86208
+ },
86209
+ headImage: undefined
86210
+ },
86211
+ verifaceData
86212
+ };
86213
+ },
86214
+ computed: {
86215
+ IDInfo() {
86216
+ return this.idCardInfo.info;
86217
+ },
86218
+ birthYear() {
86219
+ return this.idCardInfo.info.birthday ? this.idCardInfo.info.birthday.slice(0, 4) : '';
86220
+ },
86221
+ birthMonth() {
86222
+ return this.idCardInfo.info.birthday ? this.idCardInfo.info.birthday.slice(4, 6) : '';
86223
+ },
86224
+ birthDay() {
86225
+ return this.idCardInfo.info.birthday ? this.idCardInfo.info.birthday.slice(6, 8) : '';
86226
+ },
86227
+ validDate() {
86228
+ return this.idCardInfo.info.validStart && this.idCardInfo.info.validEnd ? this.idCardInfo.info.validStart + '-' + this.idCardInfo.info.validEnd : '';
86229
+ }
86230
+ },
86231
+ mounted() {
86232
+ this.$nextTick(() => {
86233
+ (0,tsToJs/* loadCamera */.xj)();
86234
+ });
86235
+ },
86236
+ methods: {
86237
+ async veriface() {
86238
+ const data = await tsToJs/* tsToJs.getElement */.g$.getElement(4);
86239
+ this.idCardInfo = data.idCard;
86240
+ this.verifaceData = data;
86241
+ },
86242
+ buttonClickEvent(name) {
86243
+ switch (name) {
86244
+ case 'cancel':
86245
+ this.visibility = false;
86246
+ break;
86247
+ case 'sure':
86248
+ this.$emit('close', this.verifaceData);
86249
+ this.visibility = false;
86250
+ break;
86251
+ }
86252
+ }
86253
+ }
86254
+ });
86255
+ ;// CONCATENATED MODULE: ./packages/id-card-reader/id-card-reader-button/src/dialog/face-auth-dialog.vue?vue&type=script&lang=js&
86256
+ /* harmony default export */ var dialog_face_auth_dialogvue_type_script_lang_js_ = (face_auth_dialogvue_type_script_lang_js_);
86257
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-67.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-67.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-67.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-67.use[3]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/id-card-reader/id-card-reader-button/src/dialog/face-auth-dialog.vue?vue&type=style&index=0&id=370e03c8&prod&lang=scss&
86258
+ // extracted by mini-css-extract-plugin
86259
+
86260
+ ;// CONCATENATED MODULE: ./packages/id-card-reader/id-card-reader-button/src/dialog/face-auth-dialog.vue?vue&type=style&index=0&id=370e03c8&prod&lang=scss&
86261
+
86262
+ ;// CONCATENATED MODULE: ./packages/id-card-reader/id-card-reader-button/src/dialog/face-auth-dialog.vue
86263
+
86264
+
86265
+
86266
+ ;
86267
+
86268
+
86269
+ /* normalize component */
86270
+
86271
+ var face_auth_dialog_component = normalizeComponent(
86272
+ dialog_face_auth_dialogvue_type_script_lang_js_,
86273
+ face_auth_dialogvue_type_template_id_370e03c8_render,
86274
+ face_auth_dialogvue_type_template_id_370e03c8_staticRenderFns,
86275
+ false,
86276
+ null,
86277
+ null,
86278
+ null
86279
+
86280
+ )
86281
+
86282
+ /* harmony default export */ var face_auth_dialog = (face_auth_dialog_component.exports);
86283
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[4]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/id-card-reader/id-card-reader-button/src/dialog/eloam-take-photo-dialog.vue?vue&type=template&id=6e18b4de&scoped=true&
86284
+ var eloam_take_photo_dialogvue_type_template_id_6e18b4de_scoped_true_render = function render() {
86285
+ var _vm = this,
86286
+ _c = _vm._self._c;
86287
+ return _vm.visibility ? _c('el-dialog', {
86288
+ staticClass: "face-auth-dialog",
86289
+ attrs: {
86290
+ "title": "拍照",
86291
+ "top": '5vh',
86292
+ "width": '620px',
86293
+ "visible": _vm.visibility,
86294
+ "close-on-click-modal": false
86295
+ },
86296
+ on: {
86297
+ "update:visible": function ($event) {
86298
+ _vm.visibility = $event;
86299
+ }
86300
+ }
86301
+ }, [_c('div', {
86302
+ staticClass: "image-container"
86303
+ }, [_c('img', {
86304
+ directives: [{
86305
+ name: "show",
86306
+ rawName: "v-show",
86307
+ value: !_vm.scannerPhotoSrc,
86308
+ expression: "!scannerPhotoSrc"
86309
+ }],
86310
+ staticStyle: {
86311
+ "width": "600px",
86312
+ "height": "450px"
86313
+ },
86314
+ attrs: {
86315
+ "id": "photo",
86316
+ "src": _vm.scannerVideoSrc
86317
+ }
86318
+ }), _c('img', {
86319
+ directives: [{
86320
+ name: "show",
86321
+ rawName: "v-show",
86322
+ value: _vm.scannerPhotoSrc,
86323
+ expression: "scannerPhotoSrc"
86324
+ }],
86325
+ staticStyle: {
86326
+ "width": "600px",
86327
+ "height": "450px"
86328
+ },
86329
+ attrs: {
86330
+ "id": "photo",
86331
+ "src": 'data:image/jpg;base64,' + _vm.scannerPhotoSrc
86332
+ }
86333
+ })]), _c('span', {
86334
+ staticClass: "dialog-footer",
86335
+ attrs: {
86336
+ "slot": "footer"
86337
+ },
86338
+ slot: "footer"
86339
+ }, [_vm._l(_vm.buttonList, function (button) {
86340
+ return [_vm.isShowButton(button.name) ? _c('el-button', _vm._b({
86341
+ key: button.name,
86342
+ on: {
86343
+ "click": function ($event) {
86344
+ return _vm.buttonClickEvent(button.name);
86345
+ }
86346
+ }
86347
+ }, 'el-button', button, false), [_vm._v(_vm._s(button.label) + " ")]) : _vm._e()];
86348
+ })], 2)]) : _vm._e();
86349
+ };
86350
+ var eloam_take_photo_dialogvue_type_template_id_6e18b4de_scoped_true_staticRenderFns = [];
86351
+
86352
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/id-card-reader/id-card-reader-button/src/dialog/eloam-take-photo-dialog.vue?vue&type=script&lang=js&
86353
+
86354
+ /* harmony default export */ var eloam_take_photo_dialogvue_type_script_lang_js_ = ({
86355
+ name: 'eloam-take-photo-dialog',
86356
+ data: () => {
86357
+ return {
86358
+ visibility: true,
86359
+ scannerVideoSrc: ELoamPassService.secondaryCameraUrl,
86360
+ scannerPhotoSrc: '',
86361
+ buttonList: [{
86362
+ name: 'cancel',
86363
+ label: '取消',
86364
+ size: 'small'
86365
+ }, {
86366
+ name: 'take-photo',
86367
+ label: '拍照',
86368
+ type: 'primary',
86369
+ size: 'small'
86370
+ }, {
86371
+ name: 'retake-photo',
86372
+ label: '重拍',
86373
+ type: 'primary',
86374
+ size: 'small'
86375
+ }, {
86376
+ name: 'sure',
86377
+ label: '确定',
86378
+ type: 'primary',
86379
+ size: 'small'
86380
+ }]
86381
+ };
86382
+ },
86383
+ methods: {
86384
+ isShowButton(name) {
86385
+ switch (name) {
86386
+ case 'take-photo':
86387
+ return !this.scannerPhotoSrc;
86388
+ case 'retake-photo':
86389
+ return this.scannerPhotoSrc;
86390
+ default:
86391
+ return true;
86392
+ }
86393
+ },
86394
+ async buttonClickEvent(name) {
86395
+ switch (name) {
86396
+ case 'cancel':
86397
+ this.visibility = false;
86398
+ break;
86399
+ case 'take-photo':
86400
+ const res = await ELoamPassService.scanBySecondaryCamera();
86401
+ this.scannerPhotoSrc = res;
86402
+ break;
86403
+ case 'retake-photo':
86404
+ this.scannerPhotoSrc = '';
86405
+ break;
86406
+ case 'sure':
86407
+ let data = {
86408
+ faceimg: this.scannerPhotoSrc
86409
+ };
86410
+ this.$emit('close', data);
86411
+ this.visibility = false;
86412
+ break;
86413
+ }
86414
+ }
86415
+ }
86416
+ });
86417
+ ;// CONCATENATED MODULE: ./packages/id-card-reader/id-card-reader-button/src/dialog/eloam-take-photo-dialog.vue?vue&type=script&lang=js&
86418
+ /* harmony default export */ var dialog_eloam_take_photo_dialogvue_type_script_lang_js_ = (eloam_take_photo_dialogvue_type_script_lang_js_);
86419
+ ;// CONCATENATED MODULE: ./packages/id-card-reader/id-card-reader-button/src/dialog/eloam-take-photo-dialog.vue
83672
86420
 
83673
86421
 
83674
86422
 
@@ -83676,27 +86424,323 @@ var id_card_reader_eloamvue_type_template_id_5b7ce781_scoped_true_staticRenderFn
83676
86424
 
83677
86425
  /* normalize component */
83678
86426
  ;
83679
- var id_card_reader_eloam_component = normalizeComponent(
83680
- src_id_card_reader_eloamvue_type_script_lang_js_,
83681
- id_card_reader_eloamvue_type_template_id_5b7ce781_scoped_true_render,
83682
- id_card_reader_eloamvue_type_template_id_5b7ce781_scoped_true_staticRenderFns,
86427
+ var eloam_take_photo_dialog_component = normalizeComponent(
86428
+ dialog_eloam_take_photo_dialogvue_type_script_lang_js_,
86429
+ eloam_take_photo_dialogvue_type_template_id_6e18b4de_scoped_true_render,
86430
+ eloam_take_photo_dialogvue_type_template_id_6e18b4de_scoped_true_staticRenderFns,
83683
86431
  false,
83684
86432
  null,
83685
- "5b7ce781",
86433
+ "6e18b4de",
83686
86434
  null
83687
86435
 
83688
86436
  )
83689
86437
 
83690
- /* harmony default export */ var id_card_reader_eloam = (id_card_reader_eloam_component.exports);
83691
- ;// CONCATENATED MODULE: ./packages/id-card-reader/id-card-reader-eloam/index.js
86438
+ /* harmony default export */ var eloam_take_photo_dialog = (eloam_take_photo_dialog_component.exports);
86439
+ // EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
86440
+ var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__(7203);
86441
+ var external_commonjs_vue_commonjs2_vue_root_Vue_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_vue_commonjs2_vue_root_Vue_);
86442
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/id-card-reader/id-card-reader-button/src/id-card-reader-button.vue?vue&type=script&lang=js&
86443
+
86444
+
86445
+
86446
+
86447
+
86448
+
86449
+
86450
+
86451
+
86452
+
86453
+ /* harmony default export */ var id_card_reader_buttonvue_type_script_lang_js_ = ({
86454
+ name: 'id-card-reader-button',
86455
+ props: {
86456
+ label: {
86457
+ default: '',
86458
+ type: String
86459
+ },
86460
+ tip: {
86461
+ default: '',
86462
+ type: String
86463
+ },
86464
+ className: {
86465
+ default: '',
86466
+ type: String
86467
+ },
86468
+ size: {
86469
+ default: 'mini',
86470
+ type: String
86471
+ },
86472
+ type: {
86473
+ default: 'primary',
86474
+ type: String
86475
+ },
86476
+ plain: {
86477
+ default: false,
86478
+ type: Boolean
86479
+ },
86480
+ /** Determine whether it's a round button */
86481
+ round: {
86482
+ default: false,
86483
+ type: Boolean
86484
+ },
86485
+ /** Determine whether it's loading */
86486
+ loading: {
86487
+ default: false,
86488
+ type: Boolean
86489
+ },
86490
+ /** Button icon, accepts an icon name of Element icon component */
86491
+ icon: {
86492
+ default: 'el-icon-postcard',
86493
+ type: String
86494
+ },
86495
+ disabled: {
86496
+ default: false,
86497
+ type: Boolean
86498
+ },
86499
+ /**
86500
+ * 读卡器:0-默认读卡器及精伦读卡器;1-丽水一体机;2-沃斯德人证交互终端;3-中正人脸识别;4-华大读卡器;5-良田
86501
+ * 人脸识别:0-默认人脸识别(拍照);1-丽水一体机 2-沃斯德人证交互终端;3-中正人脸识别;5-良田
86502
+ * 读取社保卡:2-沃斯德人证交互终端;4-华大读卡器
86503
+ * 签字版:0-有为签字版;1-汉王签字版;2-沃斯德人证交互终端签字
86504
+ */
86505
+ readMachineType: {
86506
+ default: 0,
86507
+ type: Number
86508
+ },
86509
+ /**
86510
+ * 读取模式:idCard-读取二代身份证;veriface-人证核验;socialSecurityCard-读取社保卡;sign-签字
86511
+ */
86512
+ readerMode: {
86513
+ default: 'idCard',
86514
+ type: String
86515
+ }
86516
+ },
86517
+ data: () => {
86518
+ return {
86519
+ showIDCardChrome: false
86520
+ };
86521
+ },
86522
+ computed: {
86523
+ _className() {
86524
+ const classBase = ['z-button'];
86525
+ if (this.type === 'text') {
86526
+ classBase.push('i-font-size');
86527
+ }
86528
+ if (!this.className) {
86529
+ return classBase;
86530
+ } else if (typeof this.className === 'string') {
86531
+ classBase.push(this.className);
86532
+ } else {
86533
+ classBase.push(...this.className);
86534
+ }
86535
+ return classBase;
86536
+ }
86537
+ },
86538
+ methods: {
86539
+ handleClick() {
86540
+ switch (this.readerMode) {
86541
+ case 'idCard':
86542
+ return this.idCardRReaderEvent();
86543
+ case 'veriface':
86544
+ return this.faceReaderEvent();
86545
+ }
86546
+ },
86547
+ /**
86548
+ * 读取二代身份证
86549
+ */
86550
+ async idCardRReaderEvent() {
86551
+ let idcardInfo;
86552
+ switch (this.readMachineType) {
86553
+ case 0:
86554
+ idcardInfo = await IdCardReadService.idCardCommonRead();
86555
+ this.$emit('click', idcardInfo);
86556
+ break;
86557
+ case 2:
86558
+ idcardInfo = await EWindowPassService.idCardRead();
86559
+ this.$emit('click', idcardInfo);
86560
+ break;
86561
+ case 3:
86562
+ const data = await MRAdbReadService.idCardRead();
86563
+ if (data) idcardInfo = data.idCard;
86564
+ this.$emit('click', idcardInfo);
86565
+ break;
86566
+ case 4:
86567
+ idcardInfo = await HuzReadService.idCardRead();
86568
+ this.$emit('click', idcardInfo);
86569
+ break;
86570
+ case 1:
86571
+ return this.readLSIDCard();
86572
+ case 5:
86573
+ idcardInfo = await ELoamPassService.idCardRead();
86574
+ this.$emit('click', idcardInfo);
86575
+ break;
86576
+ }
86577
+ },
86578
+ /**
86579
+ * 人证核验
86580
+ */
86581
+ async faceReaderEvent() {
86582
+ switch (this.readMachineType) {
86583
+ case 0:
86584
+ {
86585
+ const realPicture = await CameraReadService.read();
86586
+ this.$emit('click', {
86587
+ faceimg: realPicture
86588
+ });
86589
+ break;
86590
+ }
86591
+ case 1:
86592
+ this.readLSIDCardAndMatchFace();
86593
+ break;
86594
+ case 2:
86595
+ {
86596
+ const data = await EWindowPassService.faceValidateWithIdCardRead();
86597
+ this.$emit('click', data);
86598
+ break;
86599
+ }
86600
+ case 3:
86601
+ {
86602
+ const data = await MRAdbReadService.idCardRead();
86603
+ this.$emit('click', data);
86604
+ break;
86605
+ }
86606
+ case 5:
86607
+ this.readFacePhotoByELoam();
86608
+ }
86609
+ },
86610
+ /**
86611
+ * 读取社保卡
86612
+ */
86613
+ async socialSecurityCardReaderEvent() {
86614
+ try {
86615
+ let idcardInfo;
86616
+ switch (this.readMachineType) {
86617
+ case 2:
86618
+ idcardInfo = await EWindowPassService.socialSecurityCardRead();
86619
+ break;
86620
+ case 4:
86621
+ idcardInfo = await HuzReadService.socialSecurityCardRead();
86622
+ break;
86623
+ }
86624
+ this.$emit('click', idcardInfo);
86625
+ } catch (e) {
86626
+ throw Error('读取社保卡失败');
86627
+ }
86628
+ },
86629
+ /**
86630
+ * 签字
86631
+ */
86632
+ async signEvent() {
86633
+ let userSignature = '';
86634
+ switch (this.readMachineType) {
86635
+ case 0:
86636
+ userSignature = await SignReadService.read();
86637
+ break;
86638
+ case 1:
86639
+ userSignature = await SignReadService.read(PluginApiType.hwSign);
86640
+ break;
86641
+ case 2:
86642
+ userSignature = await EWindowPassService.signNameRead();
86643
+ break;
86644
+ }
86645
+ // 返回base64编码内容,无前缀
86646
+ this.$emit('click', userSignature);
86647
+ },
86648
+ async readLSIDCardAndMatchFace() {
86649
+ this.showIDCardChrome = true;
86650
+ debugger;
86651
+ const modalNode = document.createElement('div');
86652
+ document.body.appendChild(modalNode);
86653
+ const vm = new (external_commonjs_vue_commonjs2_vue_root_Vue_default())({
86654
+ render: h => {
86655
+ return h(face_auth_dialog, {
86656
+ props: {},
86657
+ on: {
86658
+ close: data => {
86659
+ console.log('destroy data=>', data);
86660
+ if (data.zt !== '比对成功') {
86661
+ throw Error('认证失败');
86662
+ } else {
86663
+ this.$message.success('认证成功');
86664
+ this.$emit('click', data);
86665
+ }
86666
+ this.showIDCardChrome = false;
86667
+ vm.$destroy();
86668
+ vm.$el.remove();
86669
+ }
86670
+ }
86671
+ });
86672
+ },
86673
+ parent: this
86674
+ }).$mount(modalNode);
86675
+ },
86676
+ /** 良田拍照*/
86677
+ readFacePhotoByELoam() {
86678
+ const modalNode = document.createElement('div');
86679
+ document.body.appendChild(modalNode);
86680
+ const vm = new (external_commonjs_vue_commonjs2_vue_root_Vue_default())({
86681
+ render: h => {
86682
+ return h(eloam_take_photo_dialog, {
86683
+ props: {},
86684
+ on: {
86685
+ close: data => {
86686
+ this.$emit('photo-change', data);
86687
+ vm.$destroy();
86688
+ vm.$el.remove();
86689
+ }
86690
+ }
86691
+ });
86692
+ },
86693
+ parent: this
86694
+ }).$mount(modalNode);
86695
+ },
86696
+ readLSIDCard() {
86697
+ this.showIDCardChrome = true;
86698
+ this.$nextTick(async () => {
86699
+ try {
86700
+ debugger;
86701
+ const idcardInfo = await (0,tsToJs/* GetIDCardOnly */.oK)();
86702
+ console.log('丽水一体机读取身份证信息=>', idcardInfo);
86703
+ this.$emit('click', idcardInfo);
86704
+ } catch (e) {
86705
+ throw Error('读取身份证信息失败');
86706
+ } finally {
86707
+ this.showIDCardChrome = false;
86708
+ }
86709
+ });
86710
+ }
86711
+ }
86712
+ });
86713
+ ;// CONCATENATED MODULE: ./packages/id-card-reader/id-card-reader-button/src/id-card-reader-button.vue?vue&type=script&lang=js&
86714
+ /* harmony default export */ var src_id_card_reader_buttonvue_type_script_lang_js_ = (id_card_reader_buttonvue_type_script_lang_js_);
86715
+ ;// CONCATENATED MODULE: ./packages/id-card-reader/id-card-reader-button/src/id-card-reader-button.vue
86716
+
86717
+
86718
+
86719
+
86720
+
86721
+ /* normalize component */
86722
+ ;
86723
+ var id_card_reader_button_component = normalizeComponent(
86724
+ src_id_card_reader_buttonvue_type_script_lang_js_,
86725
+ id_card_reader_buttonvue_type_template_id_6bdb0354_scoped_true_render,
86726
+ id_card_reader_buttonvue_type_template_id_6bdb0354_scoped_true_staticRenderFns,
86727
+ false,
86728
+ null,
86729
+ "6bdb0354",
86730
+ null
86731
+
86732
+ )
86733
+
86734
+ /* harmony default export */ var id_card_reader_button = (id_card_reader_button_component.exports);
86735
+ ;// CONCATENATED MODULE: ./packages/id-card-reader/id-card-reader-button/index.js
83692
86736
 
83693
86737
 
83694
86738
  // 组件的install方法用于按需引入
83695
86739
  // @ts-ignore
83696
- id_card_reader_eloam.install = Vue => {
83697
- Vue.component(id_card_reader_eloam.name, id_card_reader_eloam);
86740
+ id_card_reader_button.install = Vue => {
86741
+ Vue.component(id_card_reader_button.name, id_card_reader_button);
83698
86742
  };
83699
- /* harmony default export */ var id_card_reader_id_card_reader_eloam = (id_card_reader_eloam);
86743
+ /* harmony default export */ var id_card_reader_id_card_reader_button = (id_card_reader_button);
83700
86744
  ;// CONCATENATED MODULE: ./packages/index.js
83701
86745
 
83702
86746
 
@@ -83705,6 +86749,8 @@ id_card_reader_eloam.install = Vue => {
83705
86749
 
83706
86750
 
83707
86751
 
86752
+
86753
+
83708
86754
  // import {
83709
86755
  // Button,
83710
86756
  // Tooltip,
@@ -83720,7 +86766,7 @@ id_card_reader_eloam.install = Vue => {
83720
86766
  // Dialog
83721
86767
  // ]
83722
86768
  // 组件列表
83723
- const components = [packages_zs_empty, id_card_reader_id_card_reader_demo, scanner_scanner_high_camera_jieyu, scanner_scanner_eloam, id_card_reader_id_card_reader_eloam];
86769
+ const components = [packages_zs_empty, id_card_reader_id_card_reader_demo, id_card_reader_id_card_reader_eloam, id_card_reader_id_card_reader_button, scanner_scanner_high_camera_jieyu, scanner_scanner_eloam, scanner_scanner_camera];
83724
86770
 
83725
86771
  // 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,那么所有的组件都会被注册
83726
86772
  const install = Vue => {