kts-component-invoice-operate 3.2.235 → 3.2.237

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.
package/dist/index.esm.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import 'kts-components-antd-x3/dist/kts-components-antd-x3.css';
2
- import React, { createElement, createContext, useContext, useEffect, forwardRef, Children, isValidElement } from 'react';
2
+ import React, { createElement, createContext, useContext, useEffect, forwardRef, Children, isValidElement, useCallback } from 'react';
3
3
  import GreyReactBox, { decorator } from 'grey-react-box';
4
4
  import { chain as chain$1, bignumber, format as format$1, create, all, equal } from 'mathjs';
5
5
  import { message, Form, Input, Icon as Icon$1, Tag as Tag$1, Select, Button, Tooltip, Switch as Switch$1, Typography, Menu, Dropdown, AutoComplete as AutoComplete$2, Spin, Checkbox, Drawer, Descriptions, Empty, Divider, Popover as Popover$1, Table as Table$1, Tree, Modal as Modal$1, Row as Row$2, Col as Col$2 } from 'kts-components-antd-x3';
@@ -18529,8 +18529,29 @@ var StakeFarmerholder = decorator(Form.create())(function (props) {
18529
18529
  var rulesMap = controller.useMemo(function (s) {
18530
18530
  return s.stakeholder.rulesMap || {};
18531
18531
  }, []);
18532
+
18533
+ var _React$useState3 = React.useState(''),
18534
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
18535
+ validateStatus = _React$useState4[0],
18536
+ setStatus = _React$useState4[1];
18537
+
18538
+ var _React$useState5 = React.useState(''),
18539
+ _React$useState6 = _slicedToArray(_React$useState5, 2),
18540
+ errorInfo = _React$useState6[0],
18541
+ setInfo = _React$useState6[1];
18542
+
18543
+ var _React$useState7 = React.useState(''),
18544
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
18545
+ nation = _React$useState8[0],
18546
+ setNationStatue = _React$useState8[1];
18547
+
18548
+ var _React$useState9 = React.useState(''),
18549
+ _React$useState10 = _slicedToArray(_React$useState9, 2),
18550
+ nationInfo = _React$useState10[0],
18551
+ setNation = _React$useState10[1];
18532
18552
  /** 乐企 */
18533
18553
 
18554
+
18534
18555
  var leqispanW = React.useMemo(function () {
18535
18556
  if (props.leqi) {
18536
18557
  return 0;
@@ -18571,6 +18592,202 @@ var StakeFarmerholder = decorator(Form.create())(function (props) {
18571
18592
  React.useEffect(function () {
18572
18593
  setExpand(typeof props.isExpand === 'boolean' ? props.isExpand : true);
18573
18594
  }, [props.isExpand]);
18595
+ var onChangeType = useCallback(function (value) {
18596
+ console.log(value);
18597
+
18598
+ if (value === "201") {
18599
+ // 当“自然人证件类型”选择“201:居民身份证”时,校验是否为“156:中国’
18600
+ form === null || form === void 0 ? void 0 : form.setFieldsValue({
18601
+ nationality: "156"
18602
+ });
18603
+ var supplierTaxId = form === null || form === void 0 ? void 0 : form.getFieldValue("supplierTaxId");
18604
+ var certificateNumber = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateNumber");
18605
+
18606
+ if (supplierTaxId !== certificateNumber) {
18607
+ setStatus('error');
18608
+ setInfo('证件号码应与销方税号保持一致');
18609
+ }
18610
+ } else if (value === "227") {
18611
+ // 当“自然人证件类型”选择“227:中华人民共和国护照”时,校验是否为“156:中国
18612
+ form === null || form === void 0 ? void 0 : form.setFieldsValue({
18613
+ nationality: "156"
18614
+ });
18615
+ } else if (value === "213" || value === "238") {
18616
+ // 当“自然人证件类型”选择“213:台湾居民来往大陆通行证”时,校验是否为”158:中国台湾”
18617
+ // 当“自然人证件类型”选择“238:中华人民共和国台湾居民居住证”时,校验是否为“ 158:中国台湾”
18618
+ form === null || form === void 0 ? void 0 : form.setFieldsValue({
18619
+ nationality: "158"
18620
+ });
18621
+ }
18622
+ }, [form]);
18623
+ /** 校验证件号码*/
18624
+
18625
+ var validateIDCode = useCallback(function (_, value) {
18626
+ if (!value) {
18627
+ return Promise.resolve();
18628
+ }
18629
+
18630
+ var idtype = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateType");
18631
+ var nationality = form === null || form === void 0 ? void 0 : form.getFieldValue("nationality");
18632
+
18633
+ if (idtype === "210") {
18634
+ // 当“自然人证件类型”选择“210:港澳居民来往内地通行证”时,
18635
+ if (value.startsWith("M")) {
18636
+ //如果“证件号码”以M开头,"国籍(或地区头,)”必须为“446:中国澳门”;校验证件号码必须以H或M开头
18637
+ if (nationality !== '446') {
18638
+ setNationStatue('error');
18639
+ setNation('请选择正确的国籍');
18640
+ } else {
18641
+ setNationStatue('');
18642
+ setNation('');
18643
+ }
18644
+ } else if (value.startsWith("H")) {
18645
+ //如果“证件号码”以H开国籍(或地区)”必须为“344:中国香港”;
18646
+ if (nationality !== '344') {
18647
+ setNationStatue('error');
18648
+ setNation('请选择正确的国籍');
18649
+ } else {
18650
+ setNationStatue('');
18651
+ setNation('');
18652
+ }
18653
+ } else {
18654
+ setStatus('error');
18655
+ setInfo('请输入正确的证件号码');
18656
+ return Promise.reject("请输入正确的证件号码");
18657
+ }
18658
+ } else if (idtype === "237") {
18659
+ //当“自然人证件类型”选择“237:中华人民共和国港澳居民居住证”时,校验证件号码必须以810000或820000开头,如果“证件号码”以810000开头,必须为“344:中国香国籍(或地区))港”;如果“证件号码”以820000开头,国籍(或地区)必须为“446:中国澳门”
18660
+ if (value.startsWith("810000")) {
18661
+ if (nationality !== '344') {
18662
+ setNationStatue('error');
18663
+ setNation('请选择正确的国籍');
18664
+ } else {
18665
+ setNationStatue('');
18666
+ setNation('');
18667
+ }
18668
+ } else if (value.startsWith("820000")) {
18669
+ if (nationality !== '446') {
18670
+ setNationStatue('error');
18671
+ setNation('请选择正确的国籍');
18672
+ } else {
18673
+ setNationStatue('');
18674
+ setNation('');
18675
+ }
18676
+ } else {
18677
+ setStatus('error');
18678
+ setInfo('请输入正确的证件号码');
18679
+ return Promise.reject("请输入正确的证件号码");
18680
+ }
18681
+ } // 当“销售方自然人证件类型”填写“201:居民身份证”,“销售方纳税人识别号”必须与“销售方自然人证件号码”完全一致
18682
+
18683
+
18684
+ if (idtype === "201") {
18685
+ var supplierTaxId = form === null || form === void 0 ? void 0 : form.getFieldValue("supplierTaxId");
18686
+
18687
+ if (value !== supplierTaxId) {
18688
+ setStatus('error');
18689
+ setInfo('证件号码应与销方税号保持一致');
18690
+ return Promise.reject("证件号码应与销方税号保持一致");
18691
+ } else if (value === supplierTaxId) {
18692
+ setStatus('');
18693
+ setInfo('');
18694
+ }
18695
+ }
18696
+
18697
+ setStatus('');
18698
+ setInfo('');
18699
+ return Promise.resolve();
18700
+ }, [form]);
18701
+ var validateIDCode2 = useCallback(function (e) {
18702
+ var value = e.target.value; // if (!value) {
18703
+ // setStatus('');
18704
+ // setInfo('')
18705
+ // }
18706
+
18707
+ var idtype = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateType"); // // 当“销售方自然人证件类型”填写“201:居民身份证”,“销售方纳税人识别号”必须与“销售方自然人证件号码”完全一致
18708
+
18709
+ if (idtype === "201") {
18710
+ var certificateNumber = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateNumber");
18711
+ console.log(value, certificateNumber);
18712
+
18713
+ if (value !== certificateNumber) {
18714
+ setStatus('error');
18715
+ setInfo('证件号码应与销方税号保持一致');
18716
+ } else {
18717
+ setStatus('');
18718
+ setInfo('');
18719
+ }
18720
+ }
18721
+ }, [form]);
18722
+ var validateNationality = useCallback(function (_, value) {
18723
+ if (!value) {
18724
+ return Promise.resolve();
18725
+ }
18726
+
18727
+ var idtype = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateType");
18728
+ var idcode = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateNumber");
18729
+ console.log(value, idtype, idcode);
18730
+
18731
+ if (idtype === "201" || idtype === "227") {
18732
+ // 当“自然人证件类型”选择“201:居民身份证”时,校验是否为“156:中国’
18733
+ // 当“自然人证件类型”选择“227:中华人民共和国护照”时,校验是否为“156:中国
18734
+ if (value !== "156") {
18735
+ setNationStatue('error');
18736
+ setNation('请选择正确的国籍');
18737
+ return Promise.reject("请选择正确的国籍");
18738
+ }
18739
+ } else if (idtype === "213" || idtype === "238") {
18740
+ // 当“自然人证件类型”选择“213:台湾居民来往大陆通行证”时,校验是否为”158:中国台湾”
18741
+ // 当“自然人证件类型”选择“238:中华人民共和国台湾居民居住证”时,校验是否为“ 158:中国台湾”
18742
+ if (value !== "158") {
18743
+ setNationStatue('error');
18744
+ setNation('请选择正确的国籍');
18745
+ return Promise.reject("请选择正确的国籍");
18746
+ }
18747
+ } else if (idtype === "210") {
18748
+ //当“自然人证件类型”选择“210:港澳居民来往内地通行证”时,如果“证件号码”以H开国籍(或地区)”必须为“344:中国香港”;如果“证件号码”以M开头,"国籍(或地区头,)”必须为“446:中国澳门”;
18749
+ var r = false;
18750
+
18751
+ if (idcode) {
18752
+ if (idcode.startsWith("M") && value === "446") {
18753
+ r = true;
18754
+ } else if (idcode.startsWith("H") && value === "344") {
18755
+ r = true;
18756
+ }
18757
+ } else if (value === "344" || value === "446") {
18758
+ r = true;
18759
+ }
18760
+
18761
+ if (!r) {
18762
+ setNationStatue('error');
18763
+ setNation('请选择正确的国籍');
18764
+ return Promise.reject("请选择正确的国籍");
18765
+ }
18766
+ } else if (idtype === "237") {
18767
+ //当“自然人证件类型”选择“237:中华人民共和国港澳居民居住证”时,校验证件号码必须以810000或820000开头,如果“证件号码”以810000开头,必须为“344:中国香国籍(或地区))港”;如果“证件号码”以820000开头,国籍(或地区)必须为“446:中国澳门”
18768
+ var _r = false;
18769
+
18770
+ if (idcode) {
18771
+ if (idcode.startsWith("820000") && value === "446") {
18772
+ _r = true;
18773
+ } else if (idcode.startsWith("810000") && value === "344") {
18774
+ _r = true;
18775
+ }
18776
+ } else if (value === "344" || value === "446") {
18777
+ _r = true;
18778
+ }
18779
+
18780
+ if (!_r) {
18781
+ setNationStatue('error');
18782
+ setNation('请选择正确的国籍');
18783
+ return Promise.reject("请选择正确的国籍");
18784
+ }
18785
+ }
18786
+
18787
+ setNationStatue('');
18788
+ setNation('');
18789
+ return Promise.resolve();
18790
+ }, [form]);
18574
18791
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
18575
18792
  className: classnames("kts-invoice-operate-invoice-digtal-stakeholder", {
18576
18793
  readOnly: readOnly
@@ -18633,6 +18850,7 @@ var StakeFarmerholder = decorator(Form.create())(function (props) {
18633
18850
  message: '销售方纳税人识别号必填'
18634
18851
  }].concat(_toConsumableArray(RULES$1.taxId('销售方纳税人识别号'))))
18635
18852
  })( /*#__PURE__*/React.createElement(BuyerNameInput$2, {
18853
+ onChange: validateIDCode2,
18636
18854
  myform: form,
18637
18855
  fieldName: 'supplierTaxId',
18638
18856
  readOnly: isReadOnly('supplierTaxId'),
@@ -18907,6 +19125,7 @@ var StakeFarmerholder = decorator(Form.create())(function (props) {
18907
19125
  message: '数据必填'
18908
19126
  }]
18909
19127
  })( /*#__PURE__*/React.createElement(CardSelect, {
19128
+ onChange: onChangeType,
18910
19129
  readOnly: isReadOnly('certificateType'),
18911
19130
  placeholder: "\u6570\u636E\u5FC5\u586B",
18912
19131
  autoComplete: "off"
@@ -18914,7 +19133,9 @@ var StakeFarmerholder = decorator(Form.create())(function (props) {
18914
19133
  span: 7
18915
19134
  }, /*#__PURE__*/React.createElement(Form.Item, {
18916
19135
  label: "\u8BC1\u4EF6\u53F7\u7801",
18917
- colon: false
19136
+ colon: false,
19137
+ validateStatus: validateStatus,
19138
+ help: errorInfo
18918
19139
  }, getFieldDecorator('certificateNumber', {
18919
19140
  rules: [{
18920
19141
  required: true,
@@ -18922,6 +19143,8 @@ var StakeFarmerholder = decorator(Form.create())(function (props) {
18922
19143
  }, {
18923
19144
  max: 30,
18924
19145
  message: "\u5185\u5BB9\u8D85\u957F"
19146
+ }, {
19147
+ validator: validateIDCode
18925
19148
  }]
18926
19149
  })( /*#__PURE__*/React.createElement(MyInput$2, {
18927
19150
  readOnly: isReadOnly('certificateNumber'),
@@ -18931,13 +19154,28 @@ var StakeFarmerholder = decorator(Form.create())(function (props) {
18931
19154
  span: 6
18932
19155
  }, /*#__PURE__*/React.createElement(Form.Item, {
18933
19156
  label: "\u56FD\u7C4D(\u6216\u5730\u533A)",
18934
- colon: false
19157
+ colon: false,
19158
+ validateStatus: nation,
19159
+ help: nationInfo
18935
19160
  }, getFieldDecorator('nationality', {
18936
19161
  rules: [{
18937
19162
  required: true,
18938
19163
  message: '数据必填'
19164
+ }, {
19165
+ validator: validateNationality
18939
19166
  }]
18940
19167
  })( /*#__PURE__*/React.createElement(NationalSelect, {
19168
+ showSearch: true,
19169
+ optionFilterProp: "children",
19170
+ filterOption: function filterOption(input, option) {
19171
+ if (option) {
19172
+ var _option$label;
19173
+
19174
+ return ((_option$label = option.label) === null || _option$label === void 0 ? void 0 : _option$label.indexOf(input)) >= 0;
19175
+ }
19176
+
19177
+ return false;
19178
+ },
18941
19179
  readOnly: isReadOnly('nationality'),
18942
19180
  placeholder: "\u6570\u636E\u5FC5\u586B",
18943
19181
  autoComplete: "off"
@@ -18945,10 +19183,10 @@ var StakeFarmerholder = decorator(Form.create())(function (props) {
18945
19183
  });
18946
19184
 
18947
19185
  function NaturalPersonFlag$1(props) {
18948
- var _React$useState3 = React.useState(props.value || 'COMPANY'),
18949
- _React$useState4 = _slicedToArray(_React$useState3, 2),
18950
- value = _React$useState4[0],
18951
- setValue = _React$useState4[1];
19186
+ var _React$useState11 = React.useState(props.value || 'COMPANY'),
19187
+ _React$useState12 = _slicedToArray(_React$useState11, 2),
19188
+ value = _React$useState12[0],
19189
+ setValue = _React$useState12[1];
18952
19190
 
18953
19191
  var onChange = React.useCallback(function (e) {
18954
19192
  if (props.readOnly) return;
@@ -18976,10 +19214,10 @@ function BuyerNameInput$2(props) {
18976
19214
  return s.autoComplete;
18977
19215
  }, []);
18978
19216
 
18979
- var _React$useState5 = React.useState([]),
18980
- _React$useState6 = _slicedToArray(_React$useState5, 2),
18981
- options = _React$useState6[0],
18982
- setOptions = _React$useState6[1];
19217
+ var _React$useState13 = React.useState([]),
19218
+ _React$useState14 = _slicedToArray(_React$useState13, 2),
19219
+ options = _React$useState14[0],
19220
+ setOptions = _React$useState14[1];
18983
19221
 
18984
19222
  var onChangeAutoComplete = React.useCallback(function (value) {
18985
19223
  var record = options.filter(function (e) {
@@ -19178,65 +19416,13 @@ var CardSelect = /*#__PURE__*/function (_React$Component2) {
19178
19416
  _createClass(CardSelect, [{
19179
19417
  key: "render",
19180
19418
  value: function render() {
19181
- var props = this.props; // const option = [
19182
- // { label: '组织机构代码证', value: '101' },
19183
- // { label: '营业执照', value: '102' },
19184
- // { label: '税务登记证', value: '103' },
19185
- // { label: '其他单位证件', value: '199' },
19186
- // { label: '居民身份证', value: '201' },
19187
- // { label: '军官证', value: '202' },
19188
- // { label: '武警警官证', value: '203' },
19189
- // { label: '士兵证', value: '204' },
19190
- // { label: '军队离退休干部证', value: '205' },
19191
- // { label: '残疾人证', value: '206' },
19192
- // { label: '残疾军人证(1-8级)', value: '207' },
19193
- // { label: '外国护照', value: '208', },
19194
- // { label: '港澳同胞回乡证', value: '209', },
19195
- // { label: '港澳居民来往内地通行证', value: '210', },
19196
- // { label: '台胞证', value: '211', },
19197
- // { label: '中华人民共和国往来港澳通行证', value: '212', },
19198
- // { label: '台湾居民来往大陆通行证', value: '213', },
19199
- // { label: '大陆居民往来台湾通行证', value: '214', },
19200
- // { label: '外国人居留证', value: '215', },
19201
- // { label: '外交官证', value: '216', },
19202
- // { label: '使(领事)馆证', value: '217', },
19203
- // { label: '海员证', value: '218', },
19204
- // { label: '香港永久性居民身份证', value: '219', },
19205
- // { label: '台湾身份证', value: '220', },
19206
- // { label: '澳门特别行政区永久性居民身份证', value: '221', },
19207
- // { label: '外国人身份证件', value: '222', },
19208
- // { label: '高校毕业生自主创业证', value: '223', },
19209
- // { label: '就业失业登记证', value: '224', },
19210
- // { label: '退休证', value: '225', },
19211
- // { label: '离休证', value: '226', },
19212
- // { label: '中国护照', value: '227', },
19213
- // { label: '城镇退役士兵自谋职业证', value: '228', },
19214
- // { label: '随军家属身份证明', value: '229', },
19215
- // { label: '中国护照', value: '230', },
19216
- // { label: '中国人民解放军义务兵退出现役证', value: '231', },
19217
- // { label: '中国人民解放军士官退出现役证', value: '232', },
19218
- // { label: '外国人永久居留身份证', value: '233', },
19219
- // { label: '就业创业证', value: '234', },
19220
- // { label: '香港特别行政区护照', value: '235', },
19221
- // { label: '澳门特别行政区护照', value: '236', },
19222
- // { label: '中华人民共和国港澳居民居住证', value: '237', },
19223
- // { label: '中华人民共和国台湾居民居住证', value: '238', },
19224
- // { label: '《中华人民共和国外国人工作许可证》(A类)', value: '239', },
19225
- // { label: '《中华人民共和国外国人工作许可证》(B类)', value: '240', },
19226
- // { label: '《中华人民共和国外国人工作许可证》(C类)', value: '241', },
19227
- // { label: '出生医学证明', value: '291', },
19228
- // { label: '其他个人证件', value: '299', },
19229
- // ]
19230
-
19419
+ var props = this.props;
19231
19420
  var option = [{
19232
19421
  label: "居民身份证",
19233
19422
  value: "201"
19234
19423
  }, {
19235
19424
  label: "外国护照",
19236
19425
  value: "208"
19237
- }, {
19238
- label: "港澳同胞回乡证",
19239
- value: "209"
19240
19426
  }, {
19241
19427
  label: "港澳居民来往内地通行证",
19242
19428
  value: "210"
@@ -19301,6 +19487,15 @@ var NationalSelect = /*#__PURE__*/function (_React$Component3) {
19301
19487
  var option = [{
19302
19488
  value: "156",
19303
19489
  label: "中国"
19490
+ }, {
19491
+ value: "344",
19492
+ label: "中国香港"
19493
+ }, {
19494
+ value: "158",
19495
+ label: "中国台湾"
19496
+ }, {
19497
+ value: "446",
19498
+ label: "中国澳门"
19304
19499
  }, {
19305
19500
  value: "004",
19306
19501
  label: "阿富汗"
@@ -19430,9 +19625,6 @@ var NationalSelect = /*#__PURE__*/function (_React$Component3) {
19430
19625
  }, {
19431
19626
  value: "152",
19432
19627
  label: "智利"
19433
- }, {
19434
- value: "158",
19435
- label: "中国台湾"
19436
19628
  }, {
19437
19629
  value: "162",
19438
19630
  label: "圣诞岛"
@@ -19592,9 +19784,6 @@ var NationalSelect = /*#__PURE__*/function (_React$Component3) {
19592
19784
  }, {
19593
19785
  value: "340",
19594
19786
  label: "洪都拉斯"
19595
- }, {
19596
- value: "344",
19597
- label: "中国香港"
19598
19787
  }, {
19599
19788
  value: "348",
19600
19789
  label: "匈牙利"
@@ -19679,9 +19868,6 @@ var NationalSelect = /*#__PURE__*/function (_React$Component3) {
19679
19868
  }, {
19680
19869
  value: "442",
19681
19870
  label: "卢森堡"
19682
- }, {
19683
- value: "446",
19684
- label: "中国澳门"
19685
19871
  }, {
19686
19872
  value: "450",
19687
19873
  label: "马达加斯加"
@@ -28440,7 +28626,7 @@ var useColumns$3 = (function (form) {
28440
28626
  message: '请输入'
28441
28627
  }]
28442
28628
  })( /*#__PURE__*/React.createElement(MyInput$5, {
28443
- maxLength: 200,
28629
+ maxLength: 40,
28444
28630
  onChange: function () {
28445
28631
  var _onChange2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(e) {
28446
28632
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
package/dist/index.js CHANGED
@@ -18539,8 +18539,29 @@ var StakeFarmerholder = GreyReactBox.decorator(ktsComponentsAntdX3.Form.create()
18539
18539
  var rulesMap = controller.useMemo(function (s) {
18540
18540
  return s.stakeholder.rulesMap || {};
18541
18541
  }, []);
18542
+
18543
+ var _React$useState3 = React__default['default'].useState(''),
18544
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
18545
+ validateStatus = _React$useState4[0],
18546
+ setStatus = _React$useState4[1];
18547
+
18548
+ var _React$useState5 = React__default['default'].useState(''),
18549
+ _React$useState6 = _slicedToArray(_React$useState5, 2),
18550
+ errorInfo = _React$useState6[0],
18551
+ setInfo = _React$useState6[1];
18552
+
18553
+ var _React$useState7 = React__default['default'].useState(''),
18554
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
18555
+ nation = _React$useState8[0],
18556
+ setNationStatue = _React$useState8[1];
18557
+
18558
+ var _React$useState9 = React__default['default'].useState(''),
18559
+ _React$useState10 = _slicedToArray(_React$useState9, 2),
18560
+ nationInfo = _React$useState10[0],
18561
+ setNation = _React$useState10[1];
18542
18562
  /** 乐企 */
18543
18563
 
18564
+
18544
18565
  var leqispanW = React__default['default'].useMemo(function () {
18545
18566
  if (props.leqi) {
18546
18567
  return 0;
@@ -18581,6 +18602,202 @@ var StakeFarmerholder = GreyReactBox.decorator(ktsComponentsAntdX3.Form.create()
18581
18602
  React__default['default'].useEffect(function () {
18582
18603
  setExpand(typeof props.isExpand === 'boolean' ? props.isExpand : true);
18583
18604
  }, [props.isExpand]);
18605
+ var onChangeType = React.useCallback(function (value) {
18606
+ console.log(value);
18607
+
18608
+ if (value === "201") {
18609
+ // 当“自然人证件类型”选择“201:居民身份证”时,校验是否为“156:中国’
18610
+ form === null || form === void 0 ? void 0 : form.setFieldsValue({
18611
+ nationality: "156"
18612
+ });
18613
+ var supplierTaxId = form === null || form === void 0 ? void 0 : form.getFieldValue("supplierTaxId");
18614
+ var certificateNumber = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateNumber");
18615
+
18616
+ if (supplierTaxId !== certificateNumber) {
18617
+ setStatus('error');
18618
+ setInfo('证件号码应与销方税号保持一致');
18619
+ }
18620
+ } else if (value === "227") {
18621
+ // 当“自然人证件类型”选择“227:中华人民共和国护照”时,校验是否为“156:中国
18622
+ form === null || form === void 0 ? void 0 : form.setFieldsValue({
18623
+ nationality: "156"
18624
+ });
18625
+ } else if (value === "213" || value === "238") {
18626
+ // 当“自然人证件类型”选择“213:台湾居民来往大陆通行证”时,校验是否为”158:中国台湾”
18627
+ // 当“自然人证件类型”选择“238:中华人民共和国台湾居民居住证”时,校验是否为“ 158:中国台湾”
18628
+ form === null || form === void 0 ? void 0 : form.setFieldsValue({
18629
+ nationality: "158"
18630
+ });
18631
+ }
18632
+ }, [form]);
18633
+ /** 校验证件号码*/
18634
+
18635
+ var validateIDCode = React.useCallback(function (_, value) {
18636
+ if (!value) {
18637
+ return Promise.resolve();
18638
+ }
18639
+
18640
+ var idtype = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateType");
18641
+ var nationality = form === null || form === void 0 ? void 0 : form.getFieldValue("nationality");
18642
+
18643
+ if (idtype === "210") {
18644
+ // 当“自然人证件类型”选择“210:港澳居民来往内地通行证”时,
18645
+ if (value.startsWith("M")) {
18646
+ //如果“证件号码”以M开头,"国籍(或地区头,)”必须为“446:中国澳门”;校验证件号码必须以H或M开头
18647
+ if (nationality !== '446') {
18648
+ setNationStatue('error');
18649
+ setNation('请选择正确的国籍');
18650
+ } else {
18651
+ setNationStatue('');
18652
+ setNation('');
18653
+ }
18654
+ } else if (value.startsWith("H")) {
18655
+ //如果“证件号码”以H开国籍(或地区)”必须为“344:中国香港”;
18656
+ if (nationality !== '344') {
18657
+ setNationStatue('error');
18658
+ setNation('请选择正确的国籍');
18659
+ } else {
18660
+ setNationStatue('');
18661
+ setNation('');
18662
+ }
18663
+ } else {
18664
+ setStatus('error');
18665
+ setInfo('请输入正确的证件号码');
18666
+ return Promise.reject("请输入正确的证件号码");
18667
+ }
18668
+ } else if (idtype === "237") {
18669
+ //当“自然人证件类型”选择“237:中华人民共和国港澳居民居住证”时,校验证件号码必须以810000或820000开头,如果“证件号码”以810000开头,必须为“344:中国香国籍(或地区))港”;如果“证件号码”以820000开头,国籍(或地区)必须为“446:中国澳门”
18670
+ if (value.startsWith("810000")) {
18671
+ if (nationality !== '344') {
18672
+ setNationStatue('error');
18673
+ setNation('请选择正确的国籍');
18674
+ } else {
18675
+ setNationStatue('');
18676
+ setNation('');
18677
+ }
18678
+ } else if (value.startsWith("820000")) {
18679
+ if (nationality !== '446') {
18680
+ setNationStatue('error');
18681
+ setNation('请选择正确的国籍');
18682
+ } else {
18683
+ setNationStatue('');
18684
+ setNation('');
18685
+ }
18686
+ } else {
18687
+ setStatus('error');
18688
+ setInfo('请输入正确的证件号码');
18689
+ return Promise.reject("请输入正确的证件号码");
18690
+ }
18691
+ } // 当“销售方自然人证件类型”填写“201:居民身份证”,“销售方纳税人识别号”必须与“销售方自然人证件号码”完全一致
18692
+
18693
+
18694
+ if (idtype === "201") {
18695
+ var supplierTaxId = form === null || form === void 0 ? void 0 : form.getFieldValue("supplierTaxId");
18696
+
18697
+ if (value !== supplierTaxId) {
18698
+ setStatus('error');
18699
+ setInfo('证件号码应与销方税号保持一致');
18700
+ return Promise.reject("证件号码应与销方税号保持一致");
18701
+ } else if (value === supplierTaxId) {
18702
+ setStatus('');
18703
+ setInfo('');
18704
+ }
18705
+ }
18706
+
18707
+ setStatus('');
18708
+ setInfo('');
18709
+ return Promise.resolve();
18710
+ }, [form]);
18711
+ var validateIDCode2 = React.useCallback(function (e) {
18712
+ var value = e.target.value; // if (!value) {
18713
+ // setStatus('');
18714
+ // setInfo('')
18715
+ // }
18716
+
18717
+ var idtype = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateType"); // // 当“销售方自然人证件类型”填写“201:居民身份证”,“销售方纳税人识别号”必须与“销售方自然人证件号码”完全一致
18718
+
18719
+ if (idtype === "201") {
18720
+ var certificateNumber = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateNumber");
18721
+ console.log(value, certificateNumber);
18722
+
18723
+ if (value !== certificateNumber) {
18724
+ setStatus('error');
18725
+ setInfo('证件号码应与销方税号保持一致');
18726
+ } else {
18727
+ setStatus('');
18728
+ setInfo('');
18729
+ }
18730
+ }
18731
+ }, [form]);
18732
+ var validateNationality = React.useCallback(function (_, value) {
18733
+ if (!value) {
18734
+ return Promise.resolve();
18735
+ }
18736
+
18737
+ var idtype = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateType");
18738
+ var idcode = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateNumber");
18739
+ console.log(value, idtype, idcode);
18740
+
18741
+ if (idtype === "201" || idtype === "227") {
18742
+ // 当“自然人证件类型”选择“201:居民身份证”时,校验是否为“156:中国’
18743
+ // 当“自然人证件类型”选择“227:中华人民共和国护照”时,校验是否为“156:中国
18744
+ if (value !== "156") {
18745
+ setNationStatue('error');
18746
+ setNation('请选择正确的国籍');
18747
+ return Promise.reject("请选择正确的国籍");
18748
+ }
18749
+ } else if (idtype === "213" || idtype === "238") {
18750
+ // 当“自然人证件类型”选择“213:台湾居民来往大陆通行证”时,校验是否为”158:中国台湾”
18751
+ // 当“自然人证件类型”选择“238:中华人民共和国台湾居民居住证”时,校验是否为“ 158:中国台湾”
18752
+ if (value !== "158") {
18753
+ setNationStatue('error');
18754
+ setNation('请选择正确的国籍');
18755
+ return Promise.reject("请选择正确的国籍");
18756
+ }
18757
+ } else if (idtype === "210") {
18758
+ //当“自然人证件类型”选择“210:港澳居民来往内地通行证”时,如果“证件号码”以H开国籍(或地区)”必须为“344:中国香港”;如果“证件号码”以M开头,"国籍(或地区头,)”必须为“446:中国澳门”;
18759
+ var r = false;
18760
+
18761
+ if (idcode) {
18762
+ if (idcode.startsWith("M") && value === "446") {
18763
+ r = true;
18764
+ } else if (idcode.startsWith("H") && value === "344") {
18765
+ r = true;
18766
+ }
18767
+ } else if (value === "344" || value === "446") {
18768
+ r = true;
18769
+ }
18770
+
18771
+ if (!r) {
18772
+ setNationStatue('error');
18773
+ setNation('请选择正确的国籍');
18774
+ return Promise.reject("请选择正确的国籍");
18775
+ }
18776
+ } else if (idtype === "237") {
18777
+ //当“自然人证件类型”选择“237:中华人民共和国港澳居民居住证”时,校验证件号码必须以810000或820000开头,如果“证件号码”以810000开头,必须为“344:中国香国籍(或地区))港”;如果“证件号码”以820000开头,国籍(或地区)必须为“446:中国澳门”
18778
+ var _r = false;
18779
+
18780
+ if (idcode) {
18781
+ if (idcode.startsWith("820000") && value === "446") {
18782
+ _r = true;
18783
+ } else if (idcode.startsWith("810000") && value === "344") {
18784
+ _r = true;
18785
+ }
18786
+ } else if (value === "344" || value === "446") {
18787
+ _r = true;
18788
+ }
18789
+
18790
+ if (!_r) {
18791
+ setNationStatue('error');
18792
+ setNation('请选择正确的国籍');
18793
+ return Promise.reject("请选择正确的国籍");
18794
+ }
18795
+ }
18796
+
18797
+ setNationStatue('');
18798
+ setNation('');
18799
+ return Promise.resolve();
18800
+ }, [form]);
18584
18801
  return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement("div", {
18585
18802
  className: classnames__default['default']("kts-invoice-operate-invoice-digtal-stakeholder", {
18586
18803
  readOnly: readOnly
@@ -18643,6 +18860,7 @@ var StakeFarmerholder = GreyReactBox.decorator(ktsComponentsAntdX3.Form.create()
18643
18860
  message: '销售方纳税人识别号必填'
18644
18861
  }].concat(_toConsumableArray(RULES$1.taxId('销售方纳税人识别号'))))
18645
18862
  })( /*#__PURE__*/React__default['default'].createElement(BuyerNameInput$2, {
18863
+ onChange: validateIDCode2,
18646
18864
  myform: form,
18647
18865
  fieldName: 'supplierTaxId',
18648
18866
  readOnly: isReadOnly('supplierTaxId'),
@@ -18917,6 +19135,7 @@ var StakeFarmerholder = GreyReactBox.decorator(ktsComponentsAntdX3.Form.create()
18917
19135
  message: '数据必填'
18918
19136
  }]
18919
19137
  })( /*#__PURE__*/React__default['default'].createElement(CardSelect, {
19138
+ onChange: onChangeType,
18920
19139
  readOnly: isReadOnly('certificateType'),
18921
19140
  placeholder: "\u6570\u636E\u5FC5\u586B",
18922
19141
  autoComplete: "off"
@@ -18924,7 +19143,9 @@ var StakeFarmerholder = GreyReactBox.decorator(ktsComponentsAntdX3.Form.create()
18924
19143
  span: 7
18925
19144
  }, /*#__PURE__*/React__default['default'].createElement(ktsComponentsAntdX3.Form.Item, {
18926
19145
  label: "\u8BC1\u4EF6\u53F7\u7801",
18927
- colon: false
19146
+ colon: false,
19147
+ validateStatus: validateStatus,
19148
+ help: errorInfo
18928
19149
  }, getFieldDecorator('certificateNumber', {
18929
19150
  rules: [{
18930
19151
  required: true,
@@ -18932,6 +19153,8 @@ var StakeFarmerholder = GreyReactBox.decorator(ktsComponentsAntdX3.Form.create()
18932
19153
  }, {
18933
19154
  max: 30,
18934
19155
  message: "\u5185\u5BB9\u8D85\u957F"
19156
+ }, {
19157
+ validator: validateIDCode
18935
19158
  }]
18936
19159
  })( /*#__PURE__*/React__default['default'].createElement(MyInput$2, {
18937
19160
  readOnly: isReadOnly('certificateNumber'),
@@ -18941,13 +19164,28 @@ var StakeFarmerholder = GreyReactBox.decorator(ktsComponentsAntdX3.Form.create()
18941
19164
  span: 6
18942
19165
  }, /*#__PURE__*/React__default['default'].createElement(ktsComponentsAntdX3.Form.Item, {
18943
19166
  label: "\u56FD\u7C4D(\u6216\u5730\u533A)",
18944
- colon: false
19167
+ colon: false,
19168
+ validateStatus: nation,
19169
+ help: nationInfo
18945
19170
  }, getFieldDecorator('nationality', {
18946
19171
  rules: [{
18947
19172
  required: true,
18948
19173
  message: '数据必填'
19174
+ }, {
19175
+ validator: validateNationality
18949
19176
  }]
18950
19177
  })( /*#__PURE__*/React__default['default'].createElement(NationalSelect, {
19178
+ showSearch: true,
19179
+ optionFilterProp: "children",
19180
+ filterOption: function filterOption(input, option) {
19181
+ if (option) {
19182
+ var _option$label;
19183
+
19184
+ return ((_option$label = option.label) === null || _option$label === void 0 ? void 0 : _option$label.indexOf(input)) >= 0;
19185
+ }
19186
+
19187
+ return false;
19188
+ },
18951
19189
  readOnly: isReadOnly('nationality'),
18952
19190
  placeholder: "\u6570\u636E\u5FC5\u586B",
18953
19191
  autoComplete: "off"
@@ -18955,10 +19193,10 @@ var StakeFarmerholder = GreyReactBox.decorator(ktsComponentsAntdX3.Form.create()
18955
19193
  });
18956
19194
 
18957
19195
  function NaturalPersonFlag$1(props) {
18958
- var _React$useState3 = React__default['default'].useState(props.value || 'COMPANY'),
18959
- _React$useState4 = _slicedToArray(_React$useState3, 2),
18960
- value = _React$useState4[0],
18961
- setValue = _React$useState4[1];
19196
+ var _React$useState11 = React__default['default'].useState(props.value || 'COMPANY'),
19197
+ _React$useState12 = _slicedToArray(_React$useState11, 2),
19198
+ value = _React$useState12[0],
19199
+ setValue = _React$useState12[1];
18962
19200
 
18963
19201
  var onChange = React__default['default'].useCallback(function (e) {
18964
19202
  if (props.readOnly) return;
@@ -18986,10 +19224,10 @@ function BuyerNameInput$2(props) {
18986
19224
  return s.autoComplete;
18987
19225
  }, []);
18988
19226
 
18989
- var _React$useState5 = React__default['default'].useState([]),
18990
- _React$useState6 = _slicedToArray(_React$useState5, 2),
18991
- options = _React$useState6[0],
18992
- setOptions = _React$useState6[1];
19227
+ var _React$useState13 = React__default['default'].useState([]),
19228
+ _React$useState14 = _slicedToArray(_React$useState13, 2),
19229
+ options = _React$useState14[0],
19230
+ setOptions = _React$useState14[1];
18993
19231
 
18994
19232
  var onChangeAutoComplete = React__default['default'].useCallback(function (value) {
18995
19233
  var record = options.filter(function (e) {
@@ -19188,65 +19426,13 @@ var CardSelect = /*#__PURE__*/function (_React$Component2) {
19188
19426
  _createClass(CardSelect, [{
19189
19427
  key: "render",
19190
19428
  value: function render() {
19191
- var props = this.props; // const option = [
19192
- // { label: '组织机构代码证', value: '101' },
19193
- // { label: '营业执照', value: '102' },
19194
- // { label: '税务登记证', value: '103' },
19195
- // { label: '其他单位证件', value: '199' },
19196
- // { label: '居民身份证', value: '201' },
19197
- // { label: '军官证', value: '202' },
19198
- // { label: '武警警官证', value: '203' },
19199
- // { label: '士兵证', value: '204' },
19200
- // { label: '军队离退休干部证', value: '205' },
19201
- // { label: '残疾人证', value: '206' },
19202
- // { label: '残疾军人证(1-8级)', value: '207' },
19203
- // { label: '外国护照', value: '208', },
19204
- // { label: '港澳同胞回乡证', value: '209', },
19205
- // { label: '港澳居民来往内地通行证', value: '210', },
19206
- // { label: '台胞证', value: '211', },
19207
- // { label: '中华人民共和国往来港澳通行证', value: '212', },
19208
- // { label: '台湾居民来往大陆通行证', value: '213', },
19209
- // { label: '大陆居民往来台湾通行证', value: '214', },
19210
- // { label: '外国人居留证', value: '215', },
19211
- // { label: '外交官证', value: '216', },
19212
- // { label: '使(领事)馆证', value: '217', },
19213
- // { label: '海员证', value: '218', },
19214
- // { label: '香港永久性居民身份证', value: '219', },
19215
- // { label: '台湾身份证', value: '220', },
19216
- // { label: '澳门特别行政区永久性居民身份证', value: '221', },
19217
- // { label: '外国人身份证件', value: '222', },
19218
- // { label: '高校毕业生自主创业证', value: '223', },
19219
- // { label: '就业失业登记证', value: '224', },
19220
- // { label: '退休证', value: '225', },
19221
- // { label: '离休证', value: '226', },
19222
- // { label: '中国护照', value: '227', },
19223
- // { label: '城镇退役士兵自谋职业证', value: '228', },
19224
- // { label: '随军家属身份证明', value: '229', },
19225
- // { label: '中国护照', value: '230', },
19226
- // { label: '中国人民解放军义务兵退出现役证', value: '231', },
19227
- // { label: '中国人民解放军士官退出现役证', value: '232', },
19228
- // { label: '外国人永久居留身份证', value: '233', },
19229
- // { label: '就业创业证', value: '234', },
19230
- // { label: '香港特别行政区护照', value: '235', },
19231
- // { label: '澳门特别行政区护照', value: '236', },
19232
- // { label: '中华人民共和国港澳居民居住证', value: '237', },
19233
- // { label: '中华人民共和国台湾居民居住证', value: '238', },
19234
- // { label: '《中华人民共和国外国人工作许可证》(A类)', value: '239', },
19235
- // { label: '《中华人民共和国外国人工作许可证》(B类)', value: '240', },
19236
- // { label: '《中华人民共和国外国人工作许可证》(C类)', value: '241', },
19237
- // { label: '出生医学证明', value: '291', },
19238
- // { label: '其他个人证件', value: '299', },
19239
- // ]
19240
-
19429
+ var props = this.props;
19241
19430
  var option = [{
19242
19431
  label: "居民身份证",
19243
19432
  value: "201"
19244
19433
  }, {
19245
19434
  label: "外国护照",
19246
19435
  value: "208"
19247
- }, {
19248
- label: "港澳同胞回乡证",
19249
- value: "209"
19250
19436
  }, {
19251
19437
  label: "港澳居民来往内地通行证",
19252
19438
  value: "210"
@@ -19311,6 +19497,15 @@ var NationalSelect = /*#__PURE__*/function (_React$Component3) {
19311
19497
  var option = [{
19312
19498
  value: "156",
19313
19499
  label: "中国"
19500
+ }, {
19501
+ value: "344",
19502
+ label: "中国香港"
19503
+ }, {
19504
+ value: "158",
19505
+ label: "中国台湾"
19506
+ }, {
19507
+ value: "446",
19508
+ label: "中国澳门"
19314
19509
  }, {
19315
19510
  value: "004",
19316
19511
  label: "阿富汗"
@@ -19440,9 +19635,6 @@ var NationalSelect = /*#__PURE__*/function (_React$Component3) {
19440
19635
  }, {
19441
19636
  value: "152",
19442
19637
  label: "智利"
19443
- }, {
19444
- value: "158",
19445
- label: "中国台湾"
19446
19638
  }, {
19447
19639
  value: "162",
19448
19640
  label: "圣诞岛"
@@ -19602,9 +19794,6 @@ var NationalSelect = /*#__PURE__*/function (_React$Component3) {
19602
19794
  }, {
19603
19795
  value: "340",
19604
19796
  label: "洪都拉斯"
19605
- }, {
19606
- value: "344",
19607
- label: "中国香港"
19608
19797
  }, {
19609
19798
  value: "348",
19610
19799
  label: "匈牙利"
@@ -19689,9 +19878,6 @@ var NationalSelect = /*#__PURE__*/function (_React$Component3) {
19689
19878
  }, {
19690
19879
  value: "442",
19691
19880
  label: "卢森堡"
19692
- }, {
19693
- value: "446",
19694
- label: "中国澳门"
19695
19881
  }, {
19696
19882
  value: "450",
19697
19883
  label: "马达加斯加"
@@ -28450,7 +28636,7 @@ var useColumns$3 = (function (form) {
28450
28636
  message: '请输入'
28451
28637
  }]
28452
28638
  })( /*#__PURE__*/React__default['default'].createElement(MyInput$5, {
28453
- maxLength: 200,
28639
+ maxLength: 40,
28454
28640
  onChange: function () {
28455
28641
  var _onChange2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(e) {
28456
28642
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kts-component-invoice-operate",
3
- "version": "3.2.235",
3
+ "version": "3.2.237",
4
4
  "scripts": {
5
5
  "dev": "dumi dev --max-old-space-size=6096",
6
6
  "start": "dumi dev",
@@ -116,7 +116,7 @@ export default (form: WrappedFormUtils) => {
116
116
  ],
117
117
  })(
118
118
  <MyInput
119
- maxLength={200}
119
+ maxLength={40}
120
120
  onChange={async (e) => {
121
121
  // onInputChange(e);
122
122
  await controller.wait()
@@ -1,5 +1,5 @@
1
1
 
2
- import React from 'react';
2
+ import React, { useCallback } from 'react';
3
3
  import Icon from '@ant-design/icons';
4
4
  import { decorator } from "grey-react-box";
5
5
  import { Form } from "kts-components-antd-x3";
@@ -98,7 +98,10 @@ export default decorator<IStakeholder, IStakeholder & FormComponentProps>(Form.c
98
98
  const disableds = controller.useMemo(s => s.stakeholder.disableds || [], []);
99
99
 
100
100
  const rulesMap = controller.useMemo(s => s.stakeholder.rulesMap || {}, []);
101
-
101
+ const [validateStatus, setStatus] = React.useState<any>('');
102
+ const [errorInfo, setInfo] = React.useState('');
103
+ const [nation, setNationStatue] = React.useState<any>('');
104
+ const [nationInfo, setNation] = React.useState('');
102
105
  /** 乐企 */
103
106
  const leqispanW = React.useMemo(() => {
104
107
  if (props.leqi) {
@@ -137,7 +140,204 @@ export default decorator<IStakeholder, IStakeholder & FormComponentProps>(Form.c
137
140
  React.useEffect(() => {
138
141
  setExpand(typeof props.isExpand === 'boolean' ? props.isExpand : true);
139
142
  }, [props.isExpand])
143
+ const onChangeType = useCallback(
144
+ (value: string) => {
145
+ console.log(value);
146
+ if (value === "201") {
147
+ // 当“自然人证件类型”选择“201:居民身份证”时,校验是否为“156:中国’
148
+ form?.setFieldsValue({ nationality: "156" });
149
+ const supplierTaxId = form?.getFieldValue("supplierTaxId");
150
+ const certificateNumber = form?.getFieldValue("certificateNumber");
151
+ if (supplierTaxId !== certificateNumber) {
152
+ setStatus('error');
153
+ setInfo('证件号码应与销方税号保持一致')
154
+ }
155
+ } else if (value === "227") {
156
+
157
+ // 当“自然人证件类型”选择“227:中华人民共和国护照”时,校验是否为“156:中国
158
+ form?.setFieldsValue({ nationality: "156" });
159
+
160
+ } else if (value === "213" || value === "238") {
161
+ // 当“自然人证件类型”选择“213:台湾居民来往大陆通行证”时,校验是否为”158:中国台湾”
162
+ // 当“自然人证件类型”选择“238:中华人民共和国台湾居民居住证”时,校验是否为“ 158:中国台湾”
163
+ form?.setFieldsValue({ nationality: "158" });
164
+ }
165
+ },
166
+ [form]
167
+ );
168
+ /** 校验证件号码*/
169
+ const validateIDCode = useCallback(
170
+ (_: any, value: string) => {
171
+ if (!value) {
172
+ return Promise.resolve();
173
+ }
174
+
175
+ const idtype = form?.getFieldValue("certificateType");
176
+ const nationality = form?.getFieldValue("nationality");
177
+ if (idtype === "210") {
178
+ // 当“自然人证件类型”选择“210:港澳居民来往内地通行证”时,
179
+
180
+
181
+ if (value.startsWith("M")) {
182
+ //如果“证件号码”以M开头,"国籍(或地区头,)”必须为“446:中国澳门”;校验证件号码必须以H或M开头
183
+ if (nationality !== '446') {
184
+ setNationStatue('error');
185
+ setNation('请选择正确的国籍');
186
+ } else {
187
+ setNationStatue('');
188
+ setNation('');
189
+ }
190
+
191
+ } else if (value.startsWith("H")) {
192
+ //如果“证件号码”以H开国籍(或地区)”必须为“344:中国香港”;
193
+ if (nationality !== '344') {
194
+ setNationStatue('error');
195
+ setNation('请选择正确的国籍');
196
+ } else {
197
+ setNationStatue('');
198
+ setNation('');
199
+ }
140
200
 
201
+ } else {
202
+ setStatus('error');
203
+ setInfo('请输入正确的证件号码')
204
+ return Promise.reject("请输入正确的证件号码");
205
+ }
206
+ } else if (idtype === "237") {
207
+ //当“自然人证件类型”选择“237:中华人民共和国港澳居民居住证”时,校验证件号码必须以810000或820000开头,如果“证件号码”以810000开头,必须为“344:中国香国籍(或地区))港”;如果“证件号码”以820000开头,国籍(或地区)必须为“446:中国澳门”
208
+ if (value.startsWith("810000")) {
209
+ if (nationality !== '344') {
210
+ setNationStatue('error');
211
+ setNation('请选择正确的国籍');
212
+ } else {
213
+ setNationStatue('');
214
+ setNation('');
215
+ }
216
+
217
+ } else if (value.startsWith("820000")) {
218
+ if (nationality !== '446') {
219
+ setNationStatue('error');
220
+ setNation('请选择正确的国籍');
221
+ } else {
222
+ setNationStatue('');
223
+ setNation('');
224
+ }
225
+
226
+
227
+ } else {
228
+ setStatus('error');
229
+ setInfo('请输入正确的证件号码')
230
+ return Promise.reject("请输入正确的证件号码");
231
+ }
232
+ }
233
+ // 当“销售方自然人证件类型”填写“201:居民身份证”,“销售方纳税人识别号”必须与“销售方自然人证件号码”完全一致
234
+ if (idtype === "201") {
235
+ const supplierTaxId = form?.getFieldValue("supplierTaxId");
236
+ if (value !== supplierTaxId) {
237
+ setStatus('error');
238
+ setInfo('证件号码应与销方税号保持一致')
239
+ return Promise.reject("证件号码应与销方税号保持一致");
240
+ } else if (value === supplierTaxId) {
241
+ setStatus('');
242
+ setInfo('')
243
+ }
244
+ }
245
+ setStatus('');
246
+ setInfo('')
247
+ return Promise.resolve();
248
+ },
249
+ [form]
250
+ );
251
+ const validateIDCode2 = useCallback(
252
+ (e: any) => {
253
+ const value = e.target.value;
254
+ // if (!value) {
255
+ // setStatus('');
256
+ // setInfo('')
257
+ // }
258
+
259
+ const idtype = form?.getFieldValue("certificateType");
260
+
261
+ // // 当“销售方自然人证件类型”填写“201:居民身份证”,“销售方纳税人识别号”必须与“销售方自然人证件号码”完全一致
262
+ if (idtype === "201") {
263
+ const certificateNumber = form?.getFieldValue("certificateNumber");
264
+ console.log(value, certificateNumber)
265
+ if (value !== certificateNumber) {
266
+ setStatus('error');
267
+ setInfo('证件号码应与销方税号保持一致')
268
+ } else {
269
+ setStatus('');
270
+ setInfo('')
271
+ }
272
+ }
273
+ },
274
+ [form]
275
+ );
276
+ const validateNationality = useCallback(
277
+ (_: any, value: string) => {
278
+ if (!value) {
279
+ return Promise.resolve();
280
+ }
281
+ const idtype = form?.getFieldValue("certificateType");
282
+ const idcode = form?.getFieldValue("certificateNumber");
283
+ console.log(value, idtype, idcode)
284
+ if (idtype === "201" || idtype === "227") {
285
+ // 当“自然人证件类型”选择“201:居民身份证”时,校验是否为“156:中国’
286
+ // 当“自然人证件类型”选择“227:中华人民共和国护照”时,校验是否为“156:中国
287
+ if (value !== "156") {
288
+ setNationStatue('error');
289
+ setNation('请选择正确的国籍');
290
+ return Promise.reject("请选择正确的国籍");
291
+ }
292
+ } else if (idtype === "213" || idtype === "238") {
293
+ // 当“自然人证件类型”选择“213:台湾居民来往大陆通行证”时,校验是否为”158:中国台湾”
294
+ // 当“自然人证件类型”选择“238:中华人民共和国台湾居民居住证”时,校验是否为“ 158:中国台湾”
295
+ if (value !== "158") {
296
+ setNationStatue('error');
297
+ setNation('请选择正确的国籍');
298
+ return Promise.reject("请选择正确的国籍");
299
+ }
300
+ } else if (idtype === "210") {
301
+ //当“自然人证件类型”选择“210:港澳居民来往内地通行证”时,如果“证件号码”以H开国籍(或地区)”必须为“344:中国香港”;如果“证件号码”以M开头,"国籍(或地区头,)”必须为“446:中国澳门”;
302
+ let r = false;
303
+ if (idcode) {
304
+ if (idcode.startsWith("M") && value === "446") {
305
+ r = true;
306
+ } else if (idcode.startsWith("H") && value === "344") {
307
+ r = true;
308
+ }
309
+ } else if (value === "344" || value === "446") {
310
+ r = true;
311
+ }
312
+ if (!r) {
313
+ setNationStatue('error');
314
+ setNation('请选择正确的国籍');
315
+ return Promise.reject("请选择正确的国籍");
316
+ }
317
+ } else if (idtype === "237") {
318
+ //当“自然人证件类型”选择“237:中华人民共和国港澳居民居住证”时,校验证件号码必须以810000或820000开头,如果“证件号码”以810000开头,必须为“344:中国香国籍(或地区))港”;如果“证件号码”以820000开头,国籍(或地区)必须为“446:中国澳门”
319
+ let r = false;
320
+ if (idcode) {
321
+ if (idcode.startsWith("820000") && value === "446") {
322
+ r = true;
323
+ } else if (idcode.startsWith("810000") && value === "344") {
324
+ r = true;
325
+ }
326
+ } else if (value === "344" || value === "446") {
327
+ r = true;
328
+ }
329
+ if (!r) {
330
+ setNationStatue('error');
331
+ setNation('请选择正确的国籍');
332
+ return Promise.reject("请选择正确的国籍");
333
+ }
334
+ }
335
+ setNationStatue('');
336
+ setNation('');
337
+ return Promise.resolve();
338
+ },
339
+ [form]
340
+ );
141
341
  return (
142
342
  <>
143
343
  <div className={classNames("kts-invoice-operate-invoice-digtal-stakeholder", { readOnly: readOnly })} >
@@ -202,6 +402,7 @@ export default decorator<IStakeholder, IStakeholder & FormComponentProps>(Form.c
202
402
  })
203
403
  // (<MyInput readOnly={isReadOnly('supplierTaxId')} placeholder="请输入统一社会信用代码/纳税人识别号" autoComplete="off" />)
204
404
  (<BuyerNameInput
405
+ onChange={validateIDCode2}
205
406
  myform={form}
206
407
  fieldName='supplierTaxId'
207
408
  readOnly={isReadOnly('supplierTaxId')}
@@ -391,21 +592,28 @@ export default decorator<IStakeholder, IStakeholder & FormComponentProps>(Form.c
391
592
  <Form.Item label='证件类型' colon={false} >
392
593
  {getFieldDecorator('certificateType', {
393
594
  rules: [{ required: true, message: '数据必填' }]
394
- })(<CardSelect readOnly={isReadOnly('certificateType')} placeholder="数据必填" autoComplete="off" />)}
595
+ })(<CardSelect onChange={onChangeType} readOnly={isReadOnly('certificateType')} placeholder="数据必填" autoComplete="off" />)}
395
596
  </Form.Item>
396
597
  </Col>
397
598
  <Col span={7} >
398
- <Form.Item label='证件号码' colon={false} >
599
+ <Form.Item label='证件号码' colon={false} validateStatus={validateStatus} help={errorInfo}>
399
600
  {getFieldDecorator('certificateNumber', {
400
- rules: [{ required: true, message: '数据必填' }, { max: 30, message: `内容超长` }]
601
+ rules: [{ required: true, message: '数据必填' }, { max: 30, message: `内容超长` }, { validator: validateIDCode },]
401
602
  })(<MyInput readOnly={isReadOnly('certificateNumber')} placeholder="数据必填" autoComplete="off" />)}
402
603
  </Form.Item>
403
604
  </Col>
404
605
  <Col span={6} >
405
- <Form.Item label='国籍(或地区)' colon={false} >
606
+ <Form.Item label='国籍(或地区)' colon={false} validateStatus={nation} help={nationInfo}>
406
607
  {getFieldDecorator('nationality', {
407
- rules: [{ required: true, message: '数据必填' }]
408
- })(<NationalSelect readOnly={isReadOnly('nationality')} placeholder="数据必填" autoComplete="off" />)}
608
+ rules: [{ required: true, message: '数据必填' }, { validator: validateNationality }]
609
+ })(<NationalSelect showSearch={true}
610
+ optionFilterProp="children"
611
+ filterOption={(input: any, option: any) => {
612
+ if (option) {
613
+ return option.label?.indexOf(input) >= 0;
614
+ }
615
+ return false;
616
+ }} readOnly={isReadOnly('nationality')} placeholder="数据必填" autoComplete="off" />)}
409
617
  </Form.Item>
410
618
  </Col>
411
619
  </Row>
@@ -523,60 +731,10 @@ class CardSelect extends React.Component<any> {
523
731
 
524
732
  render() {
525
733
  const props = this.props;
526
- // const option = [
527
- // { label: '组织机构代码证', value: '101' },
528
- // { label: '营业执照', value: '102' },
529
- // { label: '税务登记证', value: '103' },
530
- // { label: '其他单位证件', value: '199' },
531
- // { label: '居民身份证', value: '201' },
532
- // { label: '军官证', value: '202' },
533
- // { label: '武警警官证', value: '203' },
534
- // { label: '士兵证', value: '204' },
535
- // { label: '军队离退休干部证', value: '205' },
536
- // { label: '残疾人证', value: '206' },
537
- // { label: '残疾军人证(1-8级)', value: '207' },
538
- // { label: '外国护照', value: '208', },
539
- // { label: '港澳同胞回乡证', value: '209', },
540
- // { label: '港澳居民来往内地通行证', value: '210', },
541
- // { label: '台胞证', value: '211', },
542
- // { label: '中华人民共和国往来港澳通行证', value: '212', },
543
- // { label: '台湾居民来往大陆通行证', value: '213', },
544
- // { label: '大陆居民往来台湾通行证', value: '214', },
545
- // { label: '外国人居留证', value: '215', },
546
- // { label: '外交官证', value: '216', },
547
- // { label: '使(领事)馆证', value: '217', },
548
- // { label: '海员证', value: '218', },
549
- // { label: '香港永久性居民身份证', value: '219', },
550
- // { label: '台湾身份证', value: '220', },
551
- // { label: '澳门特别行政区永久性居民身份证', value: '221', },
552
- // { label: '外国人身份证件', value: '222', },
553
- // { label: '高校毕业生自主创业证', value: '223', },
554
- // { label: '就业失业登记证', value: '224', },
555
- // { label: '退休证', value: '225', },
556
- // { label: '离休证', value: '226', },
557
- // { label: '中国护照', value: '227', },
558
- // { label: '城镇退役士兵自谋职业证', value: '228', },
559
- // { label: '随军家属身份证明', value: '229', },
560
- // { label: '中国护照', value: '230', },
561
- // { label: '中国人民解放军义务兵退出现役证', value: '231', },
562
- // { label: '中国人民解放军士官退出现役证', value: '232', },
563
- // { label: '外国人永久居留身份证', value: '233', },
564
- // { label: '就业创业证', value: '234', },
565
- // { label: '香港特别行政区护照', value: '235', },
566
- // { label: '澳门特别行政区护照', value: '236', },
567
- // { label: '中华人民共和国港澳居民居住证', value: '237', },
568
- // { label: '中华人民共和国台湾居民居住证', value: '238', },
569
- // { label: '《中华人民共和国外国人工作许可证》(A类)', value: '239', },
570
- // { label: '《中华人民共和国外国人工作许可证》(B类)', value: '240', },
571
- // { label: '《中华人民共和国外国人工作许可证》(C类)', value: '241', },
572
- // { label: '出生医学证明', value: '291', },
573
- // { label: '其他个人证件', value: '299', },
574
- // ]
575
734
  const option = [
576
735
 
577
736
  { label: "居民身份证", value: "201" },
578
737
  { label: "外国护照", value: "208" },
579
- { label: "港澳同胞回乡证", value: "209" },
580
738
  { label: "港澳居民来往内地通行证", value: "210" },
581
739
 
582
740
  { label: "台湾居民来往大陆通行证", value: "213" },
@@ -589,10 +747,10 @@ class CardSelect extends React.Component<any> {
589
747
  { label: "中华人民共和国台湾居民居住证", value: "238" },
590
748
 
591
749
  ];
592
- function getLable (value?: string) {
593
-
750
+ function getLable(value?: string) {
751
+
594
752
  return option.find(e => e.value === value)?.label || '';
595
-
753
+
596
754
  }
597
755
  if (props.readOnly) {
598
756
  return <span className='digtal-stakeholder-form-text'>{getLable(props.value)}</span>
@@ -607,6 +765,10 @@ class NationalSelect extends React.Component<any> {
607
765
  const props = this.props;
608
766
  const option = [
609
767
  { value: "156", label: "中国" },
768
+ { value: "344", label: "中国香港" },
769
+ { value: "158", label: "中国台湾" },
770
+ { value: "446", label: "中国澳门" },
771
+
610
772
  { value: "004", label: "阿富汗" },
611
773
  { value: "008", label: "阿尔巴尼亚" },
612
774
  { value: "010", label: "南极洲" },
@@ -651,7 +813,6 @@ class NationalSelect extends React.Component<any> {
651
813
  { value: "148", label: "乍得" },
652
814
  { value: "152", label: "智利" },
653
815
 
654
- { value: "158", label: "中国台湾" },
655
816
  { value: "162", label: "圣诞岛" },
656
817
  { value: "166", label: "科科斯(基林)群岛" },
657
818
  { value: "170", label: "哥伦比亚" },
@@ -705,7 +866,7 @@ class NationalSelect extends React.Component<any> {
705
866
  { value: "334", label: "赫德岛和麦克唐纳岛" },
706
867
  { value: "336", label: "梵蒂冈" },
707
868
  { value: "340", label: "洪都拉斯" },
708
- { value: "344", label: "中国香港" },
869
+
709
870
  { value: "348", label: "匈牙利" },
710
871
  { value: "352", label: "冰岛" },
711
872
  { value: "356", label: "印度" },
@@ -734,7 +895,7 @@ class NationalSelect extends React.Component<any> {
734
895
  { value: "438", label: "列支敦士登" },
735
896
  { value: "440", label: "立陶宛" },
736
897
  { value: "442", label: "卢森堡" },
737
- { value: "446", label: "中国澳门" },
898
+
738
899
  { value: "450", label: "马达加斯加" },
739
900
  { value: "454", label: "马拉维" },
740
901
  { value: "458", label: "马来西亚" },
@@ -855,10 +1016,10 @@ class NationalSelect extends React.Component<any> {
855
1016
  { value: "A00", label: "科索沃" }
856
1017
  ];
857
1018
 
858
- function getLable (value?: string) {
859
-
1019
+ function getLable(value?: string) {
1020
+
860
1021
  return option.find(e => e.value === value)?.label || '';
861
-
1022
+
862
1023
  }
863
1024
  if (props.readOnly) {
864
1025
  return <span className='digtal-stakeholder-form-text'>{getLable(props.value)}</span>