kts-component-invoice-operate 3.2.235 → 3.2.236

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,200 @@ 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
+ return Promise.reject("请输入正确的证件号码");
18655
+ }
18656
+ } else if (idtype === "237") {
18657
+ //当“自然人证件类型”选择“237:中华人民共和国港澳居民居住证”时,校验证件号码必须以810000或820000开头,如果“证件号码”以810000开头,必须为“344:中国香国籍(或地区))港”;如果“证件号码”以820000开头,国籍(或地区)必须为“446:中国澳门”
18658
+ if (value.startsWith("810000")) {
18659
+ if (nationality !== '344') {
18660
+ setNationStatue('error');
18661
+ setNation('请选择正确的国籍');
18662
+ } else {
18663
+ setNationStatue('');
18664
+ setNation('');
18665
+ }
18666
+ } else if (value.startsWith("820000")) {
18667
+ if (nationality !== '446') {
18668
+ setNationStatue('error');
18669
+ setNation('请选择正确的国籍');
18670
+ } else {
18671
+ setNationStatue('');
18672
+ setNation('');
18673
+ }
18674
+ } else {
18675
+ setStatus('error');
18676
+ setInfo('请输入正确的证件号码');
18677
+ return Promise.reject("请输入正确的证件号码");
18678
+ }
18679
+ } // 当“销售方自然人证件类型”填写“201:居民身份证”,“销售方纳税人识别号”必须与“销售方自然人证件号码”完全一致
18680
+
18681
+
18682
+ if (idtype === "201") {
18683
+ var supplierTaxId = form === null || form === void 0 ? void 0 : form.getFieldValue("supplierTaxId");
18684
+
18685
+ if (value !== supplierTaxId) {
18686
+ setStatus('error');
18687
+ setInfo('证件号码应与销方税号保持一致');
18688
+ return Promise.reject("证件号码应与销方税号保持一致");
18689
+ } else if (value === supplierTaxId) {
18690
+ setStatus('');
18691
+ setInfo('');
18692
+ }
18693
+ }
18694
+
18695
+ setStatus('');
18696
+ setInfo('');
18697
+ return Promise.resolve();
18698
+ }, [form]);
18699
+ var validateIDCode2 = useCallback(function (e) {
18700
+ var value = e.target.value; // if (!value) {
18701
+ // setStatus('');
18702
+ // setInfo('')
18703
+ // }
18704
+
18705
+ var idtype = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateType"); // // 当“销售方自然人证件类型”填写“201:居民身份证”,“销售方纳税人识别号”必须与“销售方自然人证件号码”完全一致
18706
+
18707
+ if (idtype === "201") {
18708
+ var certificateNumber = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateNumber");
18709
+ console.log(value, certificateNumber);
18710
+
18711
+ if (value !== certificateNumber) {
18712
+ setStatus('error');
18713
+ setInfo('证件号码应与销方税号保持一致');
18714
+ } else {
18715
+ setStatus('');
18716
+ setInfo('');
18717
+ }
18718
+ }
18719
+ }, [form]);
18720
+ var validateNationality = useCallback(function (_, value) {
18721
+ if (!value) {
18722
+ return Promise.resolve();
18723
+ }
18724
+
18725
+ var idtype = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateType");
18726
+ var idcode = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateNumber");
18727
+ console.log(value, idtype, idcode);
18728
+
18729
+ if (idtype === "201" || idtype === "227") {
18730
+ // 当“自然人证件类型”选择“201:居民身份证”时,校验是否为“156:中国’
18731
+ // 当“自然人证件类型”选择“227:中华人民共和国护照”时,校验是否为“156:中国
18732
+ if (value !== "156") {
18733
+ setNationStatue('error');
18734
+ setNation('请选择正确的国籍');
18735
+ return Promise.reject("请选择正确的国籍");
18736
+ }
18737
+ } else if (idtype === "213" || idtype === "238") {
18738
+ // 当“自然人证件类型”选择“213:台湾居民来往大陆通行证”时,校验是否为”158:中国台湾”
18739
+ // 当“自然人证件类型”选择“238:中华人民共和国台湾居民居住证”时,校验是否为“ 158:中国台湾”
18740
+ if (value !== "158") {
18741
+ setNationStatue('error');
18742
+ setNation('请选择正确的国籍');
18743
+ return Promise.reject("请选择正确的国籍");
18744
+ }
18745
+ } else if (idtype === "210") {
18746
+ //当“自然人证件类型”选择“210:港澳居民来往内地通行证”时,如果“证件号码”以H开国籍(或地区)”必须为“344:中国香港”;如果“证件号码”以M开头,"国籍(或地区头,)”必须为“446:中国澳门”;
18747
+ var r = false;
18748
+
18749
+ if (idcode) {
18750
+ if (idcode.startsWith("M") && value === "446") {
18751
+ r = true;
18752
+ } else if (idcode.startsWith("H") && value === "344") {
18753
+ r = true;
18754
+ }
18755
+ } else if (value === "344" || value === "446") {
18756
+ r = true;
18757
+ }
18758
+
18759
+ if (!r) {
18760
+ setNationStatue('error');
18761
+ setNation('请选择正确的国籍');
18762
+ return Promise.reject("请选择正确的国籍");
18763
+ }
18764
+ } else if (idtype === "237") {
18765
+ //当“自然人证件类型”选择“237:中华人民共和国港澳居民居住证”时,校验证件号码必须以810000或820000开头,如果“证件号码”以810000开头,必须为“344:中国香国籍(或地区))港”;如果“证件号码”以820000开头,国籍(或地区)必须为“446:中国澳门”
18766
+ var _r = false;
18767
+
18768
+ if (idcode) {
18769
+ if (idcode.startsWith("820000") && value === "446") {
18770
+ _r = true;
18771
+ } else if (idcode.startsWith("810000") && value === "344") {
18772
+ _r = true;
18773
+ }
18774
+ } else if (value === "344" || value === "446") {
18775
+ _r = true;
18776
+ }
18777
+
18778
+ if (!_r) {
18779
+ setNationStatue('error');
18780
+ setNation('请选择正确的国籍');
18781
+ return Promise.reject("请选择正确的国籍");
18782
+ }
18783
+ }
18784
+
18785
+ setNationStatue('');
18786
+ setNation('');
18787
+ return Promise.resolve();
18788
+ }, [form]);
18574
18789
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
18575
18790
  className: classnames("kts-invoice-operate-invoice-digtal-stakeholder", {
18576
18791
  readOnly: readOnly
@@ -18633,6 +18848,7 @@ var StakeFarmerholder = decorator(Form.create())(function (props) {
18633
18848
  message: '销售方纳税人识别号必填'
18634
18849
  }].concat(_toConsumableArray(RULES$1.taxId('销售方纳税人识别号'))))
18635
18850
  })( /*#__PURE__*/React.createElement(BuyerNameInput$2, {
18851
+ onChange: validateIDCode2,
18636
18852
  myform: form,
18637
18853
  fieldName: 'supplierTaxId',
18638
18854
  readOnly: isReadOnly('supplierTaxId'),
@@ -18907,6 +19123,7 @@ var StakeFarmerholder = decorator(Form.create())(function (props) {
18907
19123
  message: '数据必填'
18908
19124
  }]
18909
19125
  })( /*#__PURE__*/React.createElement(CardSelect, {
19126
+ onChange: onChangeType,
18910
19127
  readOnly: isReadOnly('certificateType'),
18911
19128
  placeholder: "\u6570\u636E\u5FC5\u586B",
18912
19129
  autoComplete: "off"
@@ -18914,7 +19131,9 @@ var StakeFarmerholder = decorator(Form.create())(function (props) {
18914
19131
  span: 7
18915
19132
  }, /*#__PURE__*/React.createElement(Form.Item, {
18916
19133
  label: "\u8BC1\u4EF6\u53F7\u7801",
18917
- colon: false
19134
+ colon: false,
19135
+ validateStatus: validateStatus,
19136
+ help: errorInfo
18918
19137
  }, getFieldDecorator('certificateNumber', {
18919
19138
  rules: [{
18920
19139
  required: true,
@@ -18922,6 +19141,8 @@ var StakeFarmerholder = decorator(Form.create())(function (props) {
18922
19141
  }, {
18923
19142
  max: 30,
18924
19143
  message: "\u5185\u5BB9\u8D85\u957F"
19144
+ }, {
19145
+ validator: validateIDCode
18925
19146
  }]
18926
19147
  })( /*#__PURE__*/React.createElement(MyInput$2, {
18927
19148
  readOnly: isReadOnly('certificateNumber'),
@@ -18931,13 +19152,28 @@ var StakeFarmerholder = decorator(Form.create())(function (props) {
18931
19152
  span: 6
18932
19153
  }, /*#__PURE__*/React.createElement(Form.Item, {
18933
19154
  label: "\u56FD\u7C4D(\u6216\u5730\u533A)",
18934
- colon: false
19155
+ colon: false,
19156
+ validateStatus: nation,
19157
+ help: nationInfo
18935
19158
  }, getFieldDecorator('nationality', {
18936
19159
  rules: [{
18937
19160
  required: true,
18938
19161
  message: '数据必填'
19162
+ }, {
19163
+ validator: validateNationality
18939
19164
  }]
18940
19165
  })( /*#__PURE__*/React.createElement(NationalSelect, {
19166
+ showSearch: true,
19167
+ optionFilterProp: "children",
19168
+ filterOption: function filterOption(input, option) {
19169
+ if (option) {
19170
+ var _option$label;
19171
+
19172
+ return ((_option$label = option.label) === null || _option$label === void 0 ? void 0 : _option$label.indexOf(input)) >= 0;
19173
+ }
19174
+
19175
+ return false;
19176
+ },
18941
19177
  readOnly: isReadOnly('nationality'),
18942
19178
  placeholder: "\u6570\u636E\u5FC5\u586B",
18943
19179
  autoComplete: "off"
@@ -18945,10 +19181,10 @@ var StakeFarmerholder = decorator(Form.create())(function (props) {
18945
19181
  });
18946
19182
 
18947
19183
  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];
19184
+ var _React$useState11 = React.useState(props.value || 'COMPANY'),
19185
+ _React$useState12 = _slicedToArray(_React$useState11, 2),
19186
+ value = _React$useState12[0],
19187
+ setValue = _React$useState12[1];
18952
19188
 
18953
19189
  var onChange = React.useCallback(function (e) {
18954
19190
  if (props.readOnly) return;
@@ -18976,10 +19212,10 @@ function BuyerNameInput$2(props) {
18976
19212
  return s.autoComplete;
18977
19213
  }, []);
18978
19214
 
18979
- var _React$useState5 = React.useState([]),
18980
- _React$useState6 = _slicedToArray(_React$useState5, 2),
18981
- options = _React$useState6[0],
18982
- setOptions = _React$useState6[1];
19215
+ var _React$useState13 = React.useState([]),
19216
+ _React$useState14 = _slicedToArray(_React$useState13, 2),
19217
+ options = _React$useState14[0],
19218
+ setOptions = _React$useState14[1];
18983
19219
 
18984
19220
  var onChangeAutoComplete = React.useCallback(function (value) {
18985
19221
  var record = options.filter(function (e) {
@@ -19178,65 +19414,13 @@ var CardSelect = /*#__PURE__*/function (_React$Component2) {
19178
19414
  _createClass(CardSelect, [{
19179
19415
  key: "render",
19180
19416
  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
-
19417
+ var props = this.props;
19231
19418
  var option = [{
19232
19419
  label: "居民身份证",
19233
19420
  value: "201"
19234
19421
  }, {
19235
19422
  label: "外国护照",
19236
19423
  value: "208"
19237
- }, {
19238
- label: "港澳同胞回乡证",
19239
- value: "209"
19240
19424
  }, {
19241
19425
  label: "港澳居民来往内地通行证",
19242
19426
  value: "210"
@@ -19301,6 +19485,15 @@ var NationalSelect = /*#__PURE__*/function (_React$Component3) {
19301
19485
  var option = [{
19302
19486
  value: "156",
19303
19487
  label: "中国"
19488
+ }, {
19489
+ value: "344",
19490
+ label: "中国香港"
19491
+ }, {
19492
+ value: "158",
19493
+ label: "中国台湾"
19494
+ }, {
19495
+ value: "446",
19496
+ label: "中国澳门"
19304
19497
  }, {
19305
19498
  value: "004",
19306
19499
  label: "阿富汗"
@@ -19430,9 +19623,6 @@ var NationalSelect = /*#__PURE__*/function (_React$Component3) {
19430
19623
  }, {
19431
19624
  value: "152",
19432
19625
  label: "智利"
19433
- }, {
19434
- value: "158",
19435
- label: "中国台湾"
19436
19626
  }, {
19437
19627
  value: "162",
19438
19628
  label: "圣诞岛"
@@ -19592,9 +19782,6 @@ var NationalSelect = /*#__PURE__*/function (_React$Component3) {
19592
19782
  }, {
19593
19783
  value: "340",
19594
19784
  label: "洪都拉斯"
19595
- }, {
19596
- value: "344",
19597
- label: "中国香港"
19598
19785
  }, {
19599
19786
  value: "348",
19600
19787
  label: "匈牙利"
@@ -19679,9 +19866,6 @@ var NationalSelect = /*#__PURE__*/function (_React$Component3) {
19679
19866
  }, {
19680
19867
  value: "442",
19681
19868
  label: "卢森堡"
19682
- }, {
19683
- value: "446",
19684
- label: "中国澳门"
19685
19869
  }, {
19686
19870
  value: "450",
19687
19871
  label: "马达加斯加"
@@ -28440,7 +28624,7 @@ var useColumns$3 = (function (form) {
28440
28624
  message: '请输入'
28441
28625
  }]
28442
28626
  })( /*#__PURE__*/React.createElement(MyInput$5, {
28443
- maxLength: 200,
28627
+ maxLength: 40,
28444
28628
  onChange: function () {
28445
28629
  var _onChange2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(e) {
28446
28630
  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,200 @@ 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
+ return Promise.reject("请输入正确的证件号码");
18665
+ }
18666
+ } else if (idtype === "237") {
18667
+ //当“自然人证件类型”选择“237:中华人民共和国港澳居民居住证”时,校验证件号码必须以810000或820000开头,如果“证件号码”以810000开头,必须为“344:中国香国籍(或地区))港”;如果“证件号码”以820000开头,国籍(或地区)必须为“446:中国澳门”
18668
+ if (value.startsWith("810000")) {
18669
+ if (nationality !== '344') {
18670
+ setNationStatue('error');
18671
+ setNation('请选择正确的国籍');
18672
+ } else {
18673
+ setNationStatue('');
18674
+ setNation('');
18675
+ }
18676
+ } else if (value.startsWith("820000")) {
18677
+ if (nationality !== '446') {
18678
+ setNationStatue('error');
18679
+ setNation('请选择正确的国籍');
18680
+ } else {
18681
+ setNationStatue('');
18682
+ setNation('');
18683
+ }
18684
+ } else {
18685
+ setStatus('error');
18686
+ setInfo('请输入正确的证件号码');
18687
+ return Promise.reject("请输入正确的证件号码");
18688
+ }
18689
+ } // 当“销售方自然人证件类型”填写“201:居民身份证”,“销售方纳税人识别号”必须与“销售方自然人证件号码”完全一致
18690
+
18691
+
18692
+ if (idtype === "201") {
18693
+ var supplierTaxId = form === null || form === void 0 ? void 0 : form.getFieldValue("supplierTaxId");
18694
+
18695
+ if (value !== supplierTaxId) {
18696
+ setStatus('error');
18697
+ setInfo('证件号码应与销方税号保持一致');
18698
+ return Promise.reject("证件号码应与销方税号保持一致");
18699
+ } else if (value === supplierTaxId) {
18700
+ setStatus('');
18701
+ setInfo('');
18702
+ }
18703
+ }
18704
+
18705
+ setStatus('');
18706
+ setInfo('');
18707
+ return Promise.resolve();
18708
+ }, [form]);
18709
+ var validateIDCode2 = React.useCallback(function (e) {
18710
+ var value = e.target.value; // if (!value) {
18711
+ // setStatus('');
18712
+ // setInfo('')
18713
+ // }
18714
+
18715
+ var idtype = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateType"); // // 当“销售方自然人证件类型”填写“201:居民身份证”,“销售方纳税人识别号”必须与“销售方自然人证件号码”完全一致
18716
+
18717
+ if (idtype === "201") {
18718
+ var certificateNumber = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateNumber");
18719
+ console.log(value, certificateNumber);
18720
+
18721
+ if (value !== certificateNumber) {
18722
+ setStatus('error');
18723
+ setInfo('证件号码应与销方税号保持一致');
18724
+ } else {
18725
+ setStatus('');
18726
+ setInfo('');
18727
+ }
18728
+ }
18729
+ }, [form]);
18730
+ var validateNationality = React.useCallback(function (_, value) {
18731
+ if (!value) {
18732
+ return Promise.resolve();
18733
+ }
18734
+
18735
+ var idtype = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateType");
18736
+ var idcode = form === null || form === void 0 ? void 0 : form.getFieldValue("certificateNumber");
18737
+ console.log(value, idtype, idcode);
18738
+
18739
+ if (idtype === "201" || idtype === "227") {
18740
+ // 当“自然人证件类型”选择“201:居民身份证”时,校验是否为“156:中国’
18741
+ // 当“自然人证件类型”选择“227:中华人民共和国护照”时,校验是否为“156:中国
18742
+ if (value !== "156") {
18743
+ setNationStatue('error');
18744
+ setNation('请选择正确的国籍');
18745
+ return Promise.reject("请选择正确的国籍");
18746
+ }
18747
+ } else if (idtype === "213" || idtype === "238") {
18748
+ // 当“自然人证件类型”选择“213:台湾居民来往大陆通行证”时,校验是否为”158:中国台湾”
18749
+ // 当“自然人证件类型”选择“238:中华人民共和国台湾居民居住证”时,校验是否为“ 158:中国台湾”
18750
+ if (value !== "158") {
18751
+ setNationStatue('error');
18752
+ setNation('请选择正确的国籍');
18753
+ return Promise.reject("请选择正确的国籍");
18754
+ }
18755
+ } else if (idtype === "210") {
18756
+ //当“自然人证件类型”选择“210:港澳居民来往内地通行证”时,如果“证件号码”以H开国籍(或地区)”必须为“344:中国香港”;如果“证件号码”以M开头,"国籍(或地区头,)”必须为“446:中国澳门”;
18757
+ var r = false;
18758
+
18759
+ if (idcode) {
18760
+ if (idcode.startsWith("M") && value === "446") {
18761
+ r = true;
18762
+ } else if (idcode.startsWith("H") && value === "344") {
18763
+ r = true;
18764
+ }
18765
+ } else if (value === "344" || value === "446") {
18766
+ r = true;
18767
+ }
18768
+
18769
+ if (!r) {
18770
+ setNationStatue('error');
18771
+ setNation('请选择正确的国籍');
18772
+ return Promise.reject("请选择正确的国籍");
18773
+ }
18774
+ } else if (idtype === "237") {
18775
+ //当“自然人证件类型”选择“237:中华人民共和国港澳居民居住证”时,校验证件号码必须以810000或820000开头,如果“证件号码”以810000开头,必须为“344:中国香国籍(或地区))港”;如果“证件号码”以820000开头,国籍(或地区)必须为“446:中国澳门”
18776
+ var _r = false;
18777
+
18778
+ if (idcode) {
18779
+ if (idcode.startsWith("820000") && value === "446") {
18780
+ _r = true;
18781
+ } else if (idcode.startsWith("810000") && value === "344") {
18782
+ _r = true;
18783
+ }
18784
+ } else if (value === "344" || value === "446") {
18785
+ _r = true;
18786
+ }
18787
+
18788
+ if (!_r) {
18789
+ setNationStatue('error');
18790
+ setNation('请选择正确的国籍');
18791
+ return Promise.reject("请选择正确的国籍");
18792
+ }
18793
+ }
18794
+
18795
+ setNationStatue('');
18796
+ setNation('');
18797
+ return Promise.resolve();
18798
+ }, [form]);
18584
18799
  return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement("div", {
18585
18800
  className: classnames__default['default']("kts-invoice-operate-invoice-digtal-stakeholder", {
18586
18801
  readOnly: readOnly
@@ -18643,6 +18858,7 @@ var StakeFarmerholder = GreyReactBox.decorator(ktsComponentsAntdX3.Form.create()
18643
18858
  message: '销售方纳税人识别号必填'
18644
18859
  }].concat(_toConsumableArray(RULES$1.taxId('销售方纳税人识别号'))))
18645
18860
  })( /*#__PURE__*/React__default['default'].createElement(BuyerNameInput$2, {
18861
+ onChange: validateIDCode2,
18646
18862
  myform: form,
18647
18863
  fieldName: 'supplierTaxId',
18648
18864
  readOnly: isReadOnly('supplierTaxId'),
@@ -18917,6 +19133,7 @@ var StakeFarmerholder = GreyReactBox.decorator(ktsComponentsAntdX3.Form.create()
18917
19133
  message: '数据必填'
18918
19134
  }]
18919
19135
  })( /*#__PURE__*/React__default['default'].createElement(CardSelect, {
19136
+ onChange: onChangeType,
18920
19137
  readOnly: isReadOnly('certificateType'),
18921
19138
  placeholder: "\u6570\u636E\u5FC5\u586B",
18922
19139
  autoComplete: "off"
@@ -18924,7 +19141,9 @@ var StakeFarmerholder = GreyReactBox.decorator(ktsComponentsAntdX3.Form.create()
18924
19141
  span: 7
18925
19142
  }, /*#__PURE__*/React__default['default'].createElement(ktsComponentsAntdX3.Form.Item, {
18926
19143
  label: "\u8BC1\u4EF6\u53F7\u7801",
18927
- colon: false
19144
+ colon: false,
19145
+ validateStatus: validateStatus,
19146
+ help: errorInfo
18928
19147
  }, getFieldDecorator('certificateNumber', {
18929
19148
  rules: [{
18930
19149
  required: true,
@@ -18932,6 +19151,8 @@ var StakeFarmerholder = GreyReactBox.decorator(ktsComponentsAntdX3.Form.create()
18932
19151
  }, {
18933
19152
  max: 30,
18934
19153
  message: "\u5185\u5BB9\u8D85\u957F"
19154
+ }, {
19155
+ validator: validateIDCode
18935
19156
  }]
18936
19157
  })( /*#__PURE__*/React__default['default'].createElement(MyInput$2, {
18937
19158
  readOnly: isReadOnly('certificateNumber'),
@@ -18941,13 +19162,28 @@ var StakeFarmerholder = GreyReactBox.decorator(ktsComponentsAntdX3.Form.create()
18941
19162
  span: 6
18942
19163
  }, /*#__PURE__*/React__default['default'].createElement(ktsComponentsAntdX3.Form.Item, {
18943
19164
  label: "\u56FD\u7C4D(\u6216\u5730\u533A)",
18944
- colon: false
19165
+ colon: false,
19166
+ validateStatus: nation,
19167
+ help: nationInfo
18945
19168
  }, getFieldDecorator('nationality', {
18946
19169
  rules: [{
18947
19170
  required: true,
18948
19171
  message: '数据必填'
19172
+ }, {
19173
+ validator: validateNationality
18949
19174
  }]
18950
19175
  })( /*#__PURE__*/React__default['default'].createElement(NationalSelect, {
19176
+ showSearch: true,
19177
+ optionFilterProp: "children",
19178
+ filterOption: function filterOption(input, option) {
19179
+ if (option) {
19180
+ var _option$label;
19181
+
19182
+ return ((_option$label = option.label) === null || _option$label === void 0 ? void 0 : _option$label.indexOf(input)) >= 0;
19183
+ }
19184
+
19185
+ return false;
19186
+ },
18951
19187
  readOnly: isReadOnly('nationality'),
18952
19188
  placeholder: "\u6570\u636E\u5FC5\u586B",
18953
19189
  autoComplete: "off"
@@ -18955,10 +19191,10 @@ var StakeFarmerholder = GreyReactBox.decorator(ktsComponentsAntdX3.Form.create()
18955
19191
  });
18956
19192
 
18957
19193
  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];
19194
+ var _React$useState11 = React__default['default'].useState(props.value || 'COMPANY'),
19195
+ _React$useState12 = _slicedToArray(_React$useState11, 2),
19196
+ value = _React$useState12[0],
19197
+ setValue = _React$useState12[1];
18962
19198
 
18963
19199
  var onChange = React__default['default'].useCallback(function (e) {
18964
19200
  if (props.readOnly) return;
@@ -18986,10 +19222,10 @@ function BuyerNameInput$2(props) {
18986
19222
  return s.autoComplete;
18987
19223
  }, []);
18988
19224
 
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];
19225
+ var _React$useState13 = React__default['default'].useState([]),
19226
+ _React$useState14 = _slicedToArray(_React$useState13, 2),
19227
+ options = _React$useState14[0],
19228
+ setOptions = _React$useState14[1];
18993
19229
 
18994
19230
  var onChangeAutoComplete = React__default['default'].useCallback(function (value) {
18995
19231
  var record = options.filter(function (e) {
@@ -19188,65 +19424,13 @@ var CardSelect = /*#__PURE__*/function (_React$Component2) {
19188
19424
  _createClass(CardSelect, [{
19189
19425
  key: "render",
19190
19426
  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
-
19427
+ var props = this.props;
19241
19428
  var option = [{
19242
19429
  label: "居民身份证",
19243
19430
  value: "201"
19244
19431
  }, {
19245
19432
  label: "外国护照",
19246
19433
  value: "208"
19247
- }, {
19248
- label: "港澳同胞回乡证",
19249
- value: "209"
19250
19434
  }, {
19251
19435
  label: "港澳居民来往内地通行证",
19252
19436
  value: "210"
@@ -19311,6 +19495,15 @@ var NationalSelect = /*#__PURE__*/function (_React$Component3) {
19311
19495
  var option = [{
19312
19496
  value: "156",
19313
19497
  label: "中国"
19498
+ }, {
19499
+ value: "344",
19500
+ label: "中国香港"
19501
+ }, {
19502
+ value: "158",
19503
+ label: "中国台湾"
19504
+ }, {
19505
+ value: "446",
19506
+ label: "中国澳门"
19314
19507
  }, {
19315
19508
  value: "004",
19316
19509
  label: "阿富汗"
@@ -19440,9 +19633,6 @@ var NationalSelect = /*#__PURE__*/function (_React$Component3) {
19440
19633
  }, {
19441
19634
  value: "152",
19442
19635
  label: "智利"
19443
- }, {
19444
- value: "158",
19445
- label: "中国台湾"
19446
19636
  }, {
19447
19637
  value: "162",
19448
19638
  label: "圣诞岛"
@@ -19602,9 +19792,6 @@ var NationalSelect = /*#__PURE__*/function (_React$Component3) {
19602
19792
  }, {
19603
19793
  value: "340",
19604
19794
  label: "洪都拉斯"
19605
- }, {
19606
- value: "344",
19607
- label: "中国香港"
19608
19795
  }, {
19609
19796
  value: "348",
19610
19797
  label: "匈牙利"
@@ -19689,9 +19876,6 @@ var NationalSelect = /*#__PURE__*/function (_React$Component3) {
19689
19876
  }, {
19690
19877
  value: "442",
19691
19878
  label: "卢森堡"
19692
- }, {
19693
- value: "446",
19694
- label: "中国澳门"
19695
19879
  }, {
19696
19880
  value: "450",
19697
19881
  label: "马达加斯加"
@@ -28450,7 +28634,7 @@ var useColumns$3 = (function (form) {
28450
28634
  message: '请输入'
28451
28635
  }]
28452
28636
  })( /*#__PURE__*/React__default['default'].createElement(MyInput$5, {
28453
- maxLength: 200,
28637
+ maxLength: 40,
28454
28638
  onChange: function () {
28455
28639
  var _onChange2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(e) {
28456
28640
  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.236",
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,202 @@ 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
+ return Promise.reject("请输入正确的证件号码");
203
+ }
204
+ } else if (idtype === "237") {
205
+ //当“自然人证件类型”选择“237:中华人民共和国港澳居民居住证”时,校验证件号码必须以810000或820000开头,如果“证件号码”以810000开头,必须为“344:中国香国籍(或地区))港”;如果“证件号码”以820000开头,国籍(或地区)必须为“446:中国澳门”
206
+ if (value.startsWith("810000")) {
207
+ if (nationality !== '344') {
208
+ setNationStatue('error');
209
+ setNation('请选择正确的国籍');
210
+ } else {
211
+ setNationStatue('');
212
+ setNation('');
213
+ }
214
+
215
+ } else if (value.startsWith("820000")) {
216
+ if (nationality !== '446') {
217
+ setNationStatue('error');
218
+ setNation('请选择正确的国籍');
219
+ } else {
220
+ setNationStatue('');
221
+ setNation('');
222
+ }
223
+
224
+
225
+ } else {
226
+ setStatus('error');
227
+ setInfo('请输入正确的证件号码')
228
+ return Promise.reject("请输入正确的证件号码");
229
+ }
230
+ }
231
+ // 当“销售方自然人证件类型”填写“201:居民身份证”,“销售方纳税人识别号”必须与“销售方自然人证件号码”完全一致
232
+ if (idtype === "201") {
233
+ const supplierTaxId = form?.getFieldValue("supplierTaxId");
234
+ if (value !== supplierTaxId) {
235
+ setStatus('error');
236
+ setInfo('证件号码应与销方税号保持一致')
237
+ return Promise.reject("证件号码应与销方税号保持一致");
238
+ } else if (value === supplierTaxId) {
239
+ setStatus('');
240
+ setInfo('')
241
+ }
242
+ }
243
+ setStatus('');
244
+ setInfo('')
245
+ return Promise.resolve();
246
+ },
247
+ [form]
248
+ );
249
+ const validateIDCode2 = useCallback(
250
+ (e: any) => {
251
+ const value = e.target.value;
252
+ // if (!value) {
253
+ // setStatus('');
254
+ // setInfo('')
255
+ // }
256
+
257
+ const idtype = form?.getFieldValue("certificateType");
258
+
259
+ // // 当“销售方自然人证件类型”填写“201:居民身份证”,“销售方纳税人识别号”必须与“销售方自然人证件号码”完全一致
260
+ if (idtype === "201") {
261
+ const certificateNumber = form?.getFieldValue("certificateNumber");
262
+ console.log(value, certificateNumber)
263
+ if (value !== certificateNumber) {
264
+ setStatus('error');
265
+ setInfo('证件号码应与销方税号保持一致')
266
+ } else {
267
+ setStatus('');
268
+ setInfo('')
269
+ }
270
+ }
271
+ },
272
+ [form]
273
+ );
274
+ const validateNationality = useCallback(
275
+ (_: any, value: string) => {
276
+ if (!value) {
277
+ return Promise.resolve();
278
+ }
279
+ const idtype = form?.getFieldValue("certificateType");
280
+ const idcode = form?.getFieldValue("certificateNumber");
281
+ console.log(value, idtype, idcode)
282
+ if (idtype === "201" || idtype === "227") {
283
+ // 当“自然人证件类型”选择“201:居民身份证”时,校验是否为“156:中国’
284
+ // 当“自然人证件类型”选择“227:中华人民共和国护照”时,校验是否为“156:中国
285
+ if (value !== "156") {
286
+ setNationStatue('error');
287
+ setNation('请选择正确的国籍');
288
+ return Promise.reject("请选择正确的国籍");
289
+ }
290
+ } else if (idtype === "213" || idtype === "238") {
291
+ // 当“自然人证件类型”选择“213:台湾居民来往大陆通行证”时,校验是否为”158:中国台湾”
292
+ // 当“自然人证件类型”选择“238:中华人民共和国台湾居民居住证”时,校验是否为“ 158:中国台湾”
293
+ if (value !== "158") {
294
+ setNationStatue('error');
295
+ setNation('请选择正确的国籍');
296
+ return Promise.reject("请选择正确的国籍");
297
+ }
298
+ } else if (idtype === "210") {
299
+ //当“自然人证件类型”选择“210:港澳居民来往内地通行证”时,如果“证件号码”以H开国籍(或地区)”必须为“344:中国香港”;如果“证件号码”以M开头,"国籍(或地区头,)”必须为“446:中国澳门”;
300
+ let r = false;
301
+ if (idcode) {
302
+ if (idcode.startsWith("M") && value === "446") {
303
+ r = true;
304
+ } else if (idcode.startsWith("H") && value === "344") {
305
+ r = true;
306
+ }
307
+ } else if (value === "344" || value === "446") {
308
+ r = true;
309
+ }
310
+ if (!r) {
311
+ setNationStatue('error');
312
+ setNation('请选择正确的国籍');
313
+ return Promise.reject("请选择正确的国籍");
314
+ }
315
+ } else if (idtype === "237") {
316
+ //当“自然人证件类型”选择“237:中华人民共和国港澳居民居住证”时,校验证件号码必须以810000或820000开头,如果“证件号码”以810000开头,必须为“344:中国香国籍(或地区))港”;如果“证件号码”以820000开头,国籍(或地区)必须为“446:中国澳门”
317
+ let r = false;
318
+ if (idcode) {
319
+ if (idcode.startsWith("820000") && value === "446") {
320
+ r = true;
321
+ } else if (idcode.startsWith("810000") && value === "344") {
322
+ r = true;
323
+ }
324
+ } else if (value === "344" || value === "446") {
325
+ r = true;
326
+ }
327
+ if (!r) {
328
+ setNationStatue('error');
329
+ setNation('请选择正确的国籍');
330
+ return Promise.reject("请选择正确的国籍");
331
+ }
332
+ }
333
+ setNationStatue('');
334
+ setNation('');
335
+ return Promise.resolve();
336
+ },
337
+ [form]
338
+ );
141
339
  return (
142
340
  <>
143
341
  <div className={classNames("kts-invoice-operate-invoice-digtal-stakeholder", { readOnly: readOnly })} >
@@ -202,6 +400,7 @@ export default decorator<IStakeholder, IStakeholder & FormComponentProps>(Form.c
202
400
  })
203
401
  // (<MyInput readOnly={isReadOnly('supplierTaxId')} placeholder="请输入统一社会信用代码/纳税人识别号" autoComplete="off" />)
204
402
  (<BuyerNameInput
403
+ onChange={validateIDCode2}
205
404
  myform={form}
206
405
  fieldName='supplierTaxId'
207
406
  readOnly={isReadOnly('supplierTaxId')}
@@ -391,21 +590,28 @@ export default decorator<IStakeholder, IStakeholder & FormComponentProps>(Form.c
391
590
  <Form.Item label='证件类型' colon={false} >
392
591
  {getFieldDecorator('certificateType', {
393
592
  rules: [{ required: true, message: '数据必填' }]
394
- })(<CardSelect readOnly={isReadOnly('certificateType')} placeholder="数据必填" autoComplete="off" />)}
593
+ })(<CardSelect onChange={onChangeType} readOnly={isReadOnly('certificateType')} placeholder="数据必填" autoComplete="off" />)}
395
594
  </Form.Item>
396
595
  </Col>
397
596
  <Col span={7} >
398
- <Form.Item label='证件号码' colon={false} >
597
+ <Form.Item label='证件号码' colon={false} validateStatus={validateStatus} help={errorInfo}>
399
598
  {getFieldDecorator('certificateNumber', {
400
- rules: [{ required: true, message: '数据必填' }, { max: 30, message: `内容超长` }]
599
+ rules: [{ required: true, message: '数据必填' }, { max: 30, message: `内容超长` }, { validator: validateIDCode },]
401
600
  })(<MyInput readOnly={isReadOnly('certificateNumber')} placeholder="数据必填" autoComplete="off" />)}
402
601
  </Form.Item>
403
602
  </Col>
404
603
  <Col span={6} >
405
- <Form.Item label='国籍(或地区)' colon={false} >
604
+ <Form.Item label='国籍(或地区)' colon={false} validateStatus={nation} help={nationInfo}>
406
605
  {getFieldDecorator('nationality', {
407
- rules: [{ required: true, message: '数据必填' }]
408
- })(<NationalSelect readOnly={isReadOnly('nationality')} placeholder="数据必填" autoComplete="off" />)}
606
+ rules: [{ required: true, message: '数据必填' }, { validator: validateNationality }]
607
+ })(<NationalSelect showSearch={true}
608
+ optionFilterProp="children"
609
+ filterOption={(input: any, option: any) => {
610
+ if (option) {
611
+ return option.label?.indexOf(input) >= 0;
612
+ }
613
+ return false;
614
+ }} readOnly={isReadOnly('nationality')} placeholder="数据必填" autoComplete="off" />)}
409
615
  </Form.Item>
410
616
  </Col>
411
617
  </Row>
@@ -523,60 +729,10 @@ class CardSelect extends React.Component<any> {
523
729
 
524
730
  render() {
525
731
  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
732
  const option = [
576
733
 
577
734
  { label: "居民身份证", value: "201" },
578
735
  { label: "外国护照", value: "208" },
579
- { label: "港澳同胞回乡证", value: "209" },
580
736
  { label: "港澳居民来往内地通行证", value: "210" },
581
737
 
582
738
  { label: "台湾居民来往大陆通行证", value: "213" },
@@ -589,10 +745,10 @@ class CardSelect extends React.Component<any> {
589
745
  { label: "中华人民共和国台湾居民居住证", value: "238" },
590
746
 
591
747
  ];
592
- function getLable (value?: string) {
593
-
748
+ function getLable(value?: string) {
749
+
594
750
  return option.find(e => e.value === value)?.label || '';
595
-
751
+
596
752
  }
597
753
  if (props.readOnly) {
598
754
  return <span className='digtal-stakeholder-form-text'>{getLable(props.value)}</span>
@@ -607,6 +763,10 @@ class NationalSelect extends React.Component<any> {
607
763
  const props = this.props;
608
764
  const option = [
609
765
  { value: "156", label: "中国" },
766
+ { value: "344", label: "中国香港" },
767
+ { value: "158", label: "中国台湾" },
768
+ { value: "446", label: "中国澳门" },
769
+
610
770
  { value: "004", label: "阿富汗" },
611
771
  { value: "008", label: "阿尔巴尼亚" },
612
772
  { value: "010", label: "南极洲" },
@@ -651,7 +811,6 @@ class NationalSelect extends React.Component<any> {
651
811
  { value: "148", label: "乍得" },
652
812
  { value: "152", label: "智利" },
653
813
 
654
- { value: "158", label: "中国台湾" },
655
814
  { value: "162", label: "圣诞岛" },
656
815
  { value: "166", label: "科科斯(基林)群岛" },
657
816
  { value: "170", label: "哥伦比亚" },
@@ -705,7 +864,7 @@ class NationalSelect extends React.Component<any> {
705
864
  { value: "334", label: "赫德岛和麦克唐纳岛" },
706
865
  { value: "336", label: "梵蒂冈" },
707
866
  { value: "340", label: "洪都拉斯" },
708
- { value: "344", label: "中国香港" },
867
+
709
868
  { value: "348", label: "匈牙利" },
710
869
  { value: "352", label: "冰岛" },
711
870
  { value: "356", label: "印度" },
@@ -734,7 +893,7 @@ class NationalSelect extends React.Component<any> {
734
893
  { value: "438", label: "列支敦士登" },
735
894
  { value: "440", label: "立陶宛" },
736
895
  { value: "442", label: "卢森堡" },
737
- { value: "446", label: "中国澳门" },
896
+
738
897
  { value: "450", label: "马达加斯加" },
739
898
  { value: "454", label: "马拉维" },
740
899
  { value: "458", label: "马来西亚" },
@@ -855,10 +1014,10 @@ class NationalSelect extends React.Component<any> {
855
1014
  { value: "A00", label: "科索沃" }
856
1015
  ];
857
1016
 
858
- function getLable (value?: string) {
859
-
1017
+ function getLable(value?: string) {
1018
+
860
1019
  return option.find(e => e.value === value)?.label || '';
861
-
1020
+
862
1021
  }
863
1022
  if (props.readOnly) {
864
1023
  return <span className='digtal-stakeholder-form-text'>{getLable(props.value)}</span>