kts-component-invoice-operate 3.2.236 → 3.2.238-fuling

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.
Files changed (34) hide show
  1. package/README.md +0 -4
  2. package/dist/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/IGood/index.d.ts +0 -1
  3. package/dist/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/ImportGoods/index.d.ts +0 -2
  4. package/dist/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/index.d.ts +0 -2
  5. package/dist/Invoice/ui/default/GoodsList/index.d.ts +0 -1
  6. package/dist/Invoice/ui/default/GoodsList/ui/AddRowButton/index.d.ts +1 -1
  7. package/dist/Invoice/ui/digtal/GoodsList/index.d.ts +0 -1
  8. package/dist/Invoice/ui/digtal/GoodsList/ui/TaxIncludedSwitch/index.d.ts +1 -4
  9. package/dist/index.esm.js +307 -707
  10. package/dist/index.js +306 -706
  11. package/package.json +1 -1
  12. package/src/Invoice/Invoice-digtal/_test/easiest/index.tsx +1 -1
  13. package/src/Invoice/Invoice-digtal/_test/realEstateInfo/index.tsx +7 -69
  14. package/src/Invoice/Invoice-digtal/index.md +9 -2
  15. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/IGood/index.ts +0 -2
  16. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/ImportGoods/index.ts +0 -3
  17. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/index.ts +0 -3
  18. package/src/Invoice/InvoiceController/fns/saveEditGood.ts +2 -2
  19. package/src/Invoice/_test/deduction/index.tsx +6 -28
  20. package/src/Invoice/index.md +4 -4
  21. package/src/Invoice/ui/default/GoodsList/index.tsx +1 -3
  22. package/src/Invoice/ui/default/GoodsList/ui/AddRowButton/index.tsx +1 -8
  23. package/src/Invoice/ui/default/ImportGoodsDrawer/index.tsx +1 -4
  24. package/src/Invoice/ui/digtal/Architecture/index.tsx +1 -1
  25. package/src/Invoice/ui/digtal/FreightList/index.tsx +1 -1
  26. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/index.tsx +23 -37
  27. package/src/Invoice/ui/digtal/GoodsList/index.tsx +1 -3
  28. package/src/Invoice/ui/digtal/GoodsList/ui/AddRowButton/index.tsx +10 -20
  29. package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual/index.tsx +6 -11
  30. package/src/Invoice/ui/digtal/GoodsList/ui/TaxIncludedSwitch/index.tsx +2 -5
  31. package/src/Invoice/ui/digtal/RealEstateInfo/index.less +0 -7
  32. package/src/Invoice/ui/digtal/RealEstateInfo/index.tsx +104 -363
  33. package/src/Invoice/ui/digtal/StakeFarmerholder/index.tsx +67 -9
  34. package/src/Invoice/ui/digtal/Stakeholder/index.tsx +4 -22
@@ -1,11 +1,11 @@
1
1
 
2
- import React, { useEffect } from "react";
2
+ import React from "react";
3
3
  import { decorator } from 'grey-react-box';
4
- import { Form, message } from 'kts-components-antd-x3';
4
+ import { Form } from 'kts-components-antd-x3';
5
5
  import { FormComponentProps } from 'kts-components-antd-x3/lib/form';
6
6
  import Invoice from '../../..';
7
7
  import './index.less';
8
- import { Button, Cascader, Col, DatePicker, Input, Row, Select } from "kts-components-antd-x4";
8
+ import { Cascader, Col, DatePicker, Input, Row, Select } from "kts-components-antd-x4";
9
9
  import moment from "moment";
10
10
 
11
11
  const { RangePicker } = DatePicker;
@@ -36,219 +36,110 @@ export default decorator<RealEstateInfoProps, FormComponentProps & RealEstateInf
36
36
 
37
37
  const readOnly = React.useMemo(() => model === 'readOnly', [model]);
38
38
 
39
- const goodsList = controller.useMemo(s => s.goodsListState.goodsList, []);
40
- //outcome-104 任务 https://wiki.dev.kingxunlian.com/pages/viewpage.action?pageId=180355189
41
- //商品和服务税收分类合并编码为“3040502020200000000”时,视为停车费业务,针对停车费业务,蓝字发票增加以下判断:
42
- // 单位必须为“平方米”;
43
- // 项目名称必须为“车辆停放服务”;
44
- // 车牌号必填,最多支持填写3个车牌号;除该场景车牌号必须为空;
45
- // 租赁期起止格式必须为“yyyy-MM-dd HH:mm(租赁期起)”+“空格”+“yyyy-MM-dd HH:mm(租赁期止)。
46
- const isParkFee = React.useCallback((taxClassificationCode?: string) => {
47
- if (taxClassificationCode === '3040502020200000000') {
48
- return true
49
- } else {
50
- return false;
51
- }
52
- }, [])
53
-
54
- const indexRef = React.useRef<any>([]);
55
- useEffect(() => {
56
- const dd = goodsList?.reduce((acc: any, cur: any) => {
57
- if (cur.lineAttribute !== 1) {
58
- acc.push(cur.$index)
59
- }
60
- return acc
61
- }, [])
62
- indexRef.current = dd;
63
- }, [goodsList, indexRef])
64
39
  // 注册 form
65
-
66
40
  controller.useForm('realEstateInfo', form);
67
- const getList = () => {
68
- const decrease = indexRef.current.length > goodsList.length
69
- if (decrease) {
70
- //已删行列表
71
- const diff = indexRef.current.filter((item: any) => !goodsList.find(i => i.$index === item));
72
-
73
- const formData: any[] = form.getFieldValue('realEstateDataDto');
74
- if (Array.isArray(formData) && diff.length > 0) {
75
41
 
76
- const newForm = formData?.filter(item => !diff.find((i: any) => i === item.$index));
77
-
78
- form.setFieldsValue({
79
- realEstateDataDto: newForm
80
- });
81
- } else {
82
- form.setFieldsValue({
83
- realEstateDataDto: undefined
84
- });
85
- }
86
- }
87
- return goodsList.filter(item => item.lineAttribute !== 1).map((item, index) => {
88
- if (item.lineAttribute !== 1) {
89
- const isParkFeeItem = isParkFee(item.taxClassificationCode)
90
- return <Row gutter={[17, 0]} >
91
- <Col span={6} >
92
- <Form.Item style={{ display: 'none' }}>
93
- {getFieldDecorator(`realEstateDataDto[${index}].$index`, {
94
- initialValue: item.$index,
95
- })(
96
- <Input />
97
- )}
98
- </Form.Item>
99
- <Form.Item label='不动产地址'>
100
- {getFieldDecorator(`realEstateDataDto[${index}].realEstateAddress`, {
101
- rules: readOnly ? [] : [{ required: true, message: '请选择不动产地址' }]
102
- })(
103
- readOnly
104
- ? (<MyArrString />)
105
- : (<Cascader
106
- style={{ width: '100%' }}
107
- options={props.realEstateAddressOptions}
108
- fieldNames={props.realEstateAddressFieldNames}
109
- placeholder="请选择省市区县"
110
- />)
111
- )}
112
- </Form.Item>
113
- </Col>
114
- <Col span={6} >
115
- <Form.Item label='详细地址' >
116
- {getFieldDecorator(`realEstateDataDto[${index}].realEstateDetailedAddress`, {
117
- rules: readOnly ? [] : [
118
- { required: true, message: '请输入详细地址' },
119
- { max: 120, message: '详细地址最多120个字符' },
120
- {
121
- validator: async (_, value, callback) => {
122
- const pattern = /街|路|村|乡|镇|道|巷|号/;
123
- if (pattern.test(value)) {
124
- callback()
125
- } else {
126
- callback('地址必须包含“街”、“路”、“村”、“乡”、“镇”、“道”、“巷”、“号”等任意一个关键词')
127
- }
128
- }
129
- }
130
- ]
131
- })(
132
- readOnly
133
- ? <MyDiv />
134
- : <Input autoComplete='off' placeholder="请输入详细地址" />
135
- )}
136
- </Form.Item>
137
- </Col>
138
- {!isParkFeeItem &&
139
- <Col span={6} >
140
- <Form.Item label='租赁期起止' >
141
- {getFieldDecorator(`realEstateDataDto[${index}].leaseTerm`, {
142
- rules: readOnly ? [] : [{ required: true, message: '请输入租赁期' }]
143
- })(
144
- readOnly
145
- ? <MyArrMoment />
146
- : <RangePicker style={{ width: '100%' }} />
147
- )}
148
- </Form.Item>
149
- </Col>}
150
- {isParkFeeItem &&
151
- <Col span={6} >
152
- <Form.Item label='租赁期起止' >
153
- {getFieldDecorator(`realEstateDataDto[${index}].leaseTerm`, {
154
- rules: readOnly ? [] : [{ required: true, message: '请输入租赁期' }]
155
- })(
156
- readOnly
157
- ? <MyArrMomentTime />
158
- : <RangePicker style={{ width: '100%' }} showTime={{ format: 'HH:mm' }} format="YYYY-MM-DD HH:mm" />
159
- )}
160
- </Form.Item>
161
- </Col>
162
- }
163
- <Col span={6} >
164
- <Form.Item label='跨地(市)标志' >
165
- {getFieldDecorator(`realEstateDataDto[${index}].crossCitiesSign`, {
166
- rules: readOnly ? [] : [
167
- { required: true, message: '请选择跨地(市)标志' }
168
- ]
169
- })(
170
- readOnly
171
- ? <MyNY />
172
- : <Select placeholder='请选择' style={{ width: '100%' }} >
173
- <Select.Option value='Y'>是</Select.Option>
174
- <Select.Option value='N'>否</Select.Option>
175
- </Select>
176
- )}
177
- </Form.Item>
178
- </Col>
179
- <Col span={6} >
180
- <Form.Item label='产权证书/不动产权证号' >
181
- {getFieldDecorator(`realEstateDataDto[${index}].realEstateNumber`, {
182
- rules: readOnly ? [] : [
183
- { required: true, message: '请输入证书编号,若没有证书填写“无”' },
184
- { max: 40, message: '证书编号最多40个字符' },
185
- ]
186
- })(
187
- readOnly
188
- ? <MyDiv />
189
- : <Input autoComplete='off' placeholder="请输入证书编号,若没有证书填写“无”" />
190
- )}
191
- </Form.Item>
192
- </Col>
193
- {!isParkFeeItem &&
194
- <Col span={6} >
195
- <Form.Item label='面积单位' >
196
- {getFieldDecorator(`realEstateDataDto[${index}].realEstateUnit`, {
197
- rules: readOnly ? [] : [{ required: true, message: '请选择面积单位' }]
198
- })(
199
- readOnly
200
- ? <MyDiv />
201
- : <Select placeholder='请选择' style={{ width: '100%' }} >
202
- <Select.Option value="平方千米">平方千米</Select.Option>
203
- <Select.Option value="平方米">平方米</Select.Option>
204
- <Select.Option value="公顷">公顷</Select.Option>
205
- <Select.Option value="亩">亩</Select.Option>
206
- <Select.Option value="h㎡">h㎡</Select.Option>
207
- <Select.Option value="k㎡">k㎡</Select.Option>
208
- <Select.Option value="㎡">㎡</Select.Option>
209
- </Select>
210
- )}
211
- </Form.Item>
212
- </Col>
213
- }
214
- {isParkFeeItem &&
215
- <Col span={6} >
216
- <Form.Item label='面积单位' >
217
- {getFieldDecorator(`realEstateDataDto[${index}].realEstateUnit`, {
218
- rules: readOnly ? [] : [{ required: true, message: '请选择面积单位' }]
219
- })(
220
- readOnly
221
- ? <MyDiv />
222
- : <Select placeholder='请选择' style={{ width: '100%' }} >
223
- <Select.Option value="平方米">平方米</Select.Option>
224
- </Select>
225
- )}
226
- </Form.Item>
227
- </Col>
228
- }
229
- {isParkFeeItem &&
230
- <LicensePlateNumber form={form} index={index} cd={item.cd} readOnly={readOnly} />
231
- // <Col span={6} >
232
- // <Form.Item label='车牌号' >
233
- // {getFieldDecorator(`realEstateDataDto[${index}].licensePlateNumber`, {
234
- // rules: readOnly ? [] : [{ required: true, message: '请选择面积单位' }]
235
- // })(
236
- // readOnly
237
- // ? <MyDiv />
238
- // : <LicensePlateNumber form={form}/>
239
- // )}
240
- // </Form.Item>
241
- // </Col>
242
- }
243
- </Row>
244
- }
245
- })
246
- }
247
42
  return (
248
43
  <div className="kts-invoice-operate-real-estate-info-digtal">
249
- <div className='real-estate-info-digtal-label' >特定信息-不动产经营租赁服务</div>
250
- {getList()}
251
-
44
+ <div className='real-estate-info-digtal-label' >特殊信息-不动产经营租赁服务</div>
45
+ <Row gutter={[17, 0]}>
46
+ <Col span={6} >
47
+ <Form.Item label='不动产地址' >
48
+ {getFieldDecorator('realEstateAddress', {
49
+ rules: readOnly ? [] : [{ required: true, message: '请选择不动产地址' }]
50
+ })(
51
+ readOnly
52
+ ? (<MyArrString />)
53
+ : (<Cascader
54
+ style={{ width: '100%' }}
55
+ options={props.realEstateAddressOptions}
56
+ fieldNames={props.realEstateAddressFieldNames}
57
+ placeholder="请选择省市区县"
58
+ />)
59
+ )}
60
+ </Form.Item>
61
+ </Col>
62
+ <Col span={6} >
63
+ <Form.Item label='详细地址' >
64
+ {getFieldDecorator('realEstateDetailedAddress', {
65
+ rules: readOnly ? [] : [
66
+ { required: true, message: '请输入详细地址' },
67
+ { max: 120, message: '详细地址最多120个字符' },
68
+ {
69
+ validator: (_, value) => {
70
+ const pattern = /街|路|村|乡|镇|道|巷|号/;
71
+ return pattern.test(value) ? Promise.resolve() : Promise.reject('地址必须包含“街”、“路”、“村”、“乡”、“镇”、“道”、“巷”、“号”等任意一个关键词');
72
+ }
73
+ }
74
+ ]
75
+ })(
76
+ readOnly
77
+ ? <MyDiv />
78
+ : <Input autoComplete='off' placeholder="请输入详细地址" />
79
+ )}
80
+ </Form.Item>
81
+ </Col>
82
+ <Col span={6} >
83
+ <Form.Item label='租赁期起止' >
84
+ {getFieldDecorator('leaseTerm', {
85
+ rules: readOnly ? [] : [{ required: true, message: '请输入租赁期' }]
86
+ })(
87
+ readOnly
88
+ ? <MyArrMoment />
89
+ : <RangePicker style={{ width: '100%' }} />
90
+ )}
91
+ </Form.Item>
92
+ </Col>
93
+ <Col span={6} >
94
+ <Form.Item label='跨地(市)标志' >
95
+ {getFieldDecorator('crossCitiesSign', {
96
+ rules: readOnly ? [] : [
97
+ { required: true, message: '请选择跨地(市)标志' }
98
+ ]
99
+ })(
100
+ readOnly
101
+ ? <MyNY />
102
+ : <Select placeholder='请选择' style={{ width: '100%' }} >
103
+ <Select.Option value='Y'>是</Select.Option>
104
+ <Select.Option value='N'>否</Select.Option>
105
+ </Select>
106
+ )}
107
+ </Form.Item>
108
+ </Col>
109
+ <Col span={6} >
110
+ <Form.Item label='产权证书/不动产权证号' >
111
+ {getFieldDecorator('realEstateNumber', {
112
+ rules: readOnly ? [] : [
113
+ { required: true, message: '请输入证书编号,若没有证书填写“无”' },
114
+ { max: 40, message: '证书编号最多40个字符' },
115
+ ]
116
+ })(
117
+ readOnly
118
+ ? <MyDiv />
119
+ : <Input autoComplete='off' placeholder="请输入证书编号,若没有证书填写“无”" />
120
+ )}
121
+ </Form.Item>
122
+ </Col>
123
+ <Col span={6} >
124
+ <Form.Item label='面积单位' >
125
+ {getFieldDecorator('realEstateUnit', {
126
+ rules: readOnly ? [] : [{ required: true, message: '请选择面积单位' }]
127
+ })(
128
+ readOnly
129
+ ? <MyDiv />
130
+ : <Select placeholder='请选择' style={{ width: '100%' }} >
131
+ <Select.Option value="平方千米">平方千米</Select.Option>
132
+ <Select.Option value="平方米">平方米</Select.Option>
133
+ <Select.Option value="公顷">公顷</Select.Option>
134
+ <Select.Option value="亩">亩</Select.Option>
135
+ <Select.Option value="h㎡">h㎡</Select.Option>
136
+ <Select.Option value="k㎡">k㎡</Select.Option>
137
+ <Select.Option value="㎡">㎡</Select.Option>
138
+ </Select>
139
+ )}
140
+ </Form.Item>
141
+ </Col>
142
+ </Row>
252
143
  </div>
253
144
  )
254
145
  })
@@ -281,23 +172,12 @@ class MyArrMoment extends React.Component<{ value?: moment.Moment[], style?: Rea
281
172
  <div style={this.props.style}>
282
173
  <span>{moment.isMoment(value[0]) && value[0].format('YYYY-MM-DD')}</span>
283
174
  <span style={{ color: '#9F603D', fontWeight: 600 }} > - </span>
284
- <span>{moment.isMoment(value[1]) && value[1].format('YYYY-MM-DD')}</span>
285
- </div>
286
- )
287
- }
288
- }
289
- class MyArrMomentTime extends React.Component<{ value?: moment.Moment[], style?: React.CSSProperties }> {
290
- render(): React.ReactNode {
291
- const { value = [] } = this.props
292
- return (
293
- <div style={this.props.style}>
294
- <span>{moment.isMoment(value[0]) && value[0].format('YYYY-MM-DD HH:mm')}</span>
295
- <span style={{ color: '#9F603D', fontWeight: 600 }} > - </span>
296
- <span>{moment.isMoment(value[1]) && value[1].format('YYYY-MM-DD HH:mm')}</span>
175
+ <span>{moment.isMoment(value[1]) && value[0].format('YYYY-MM-DD')}</span>
297
176
  </div>
298
177
  )
299
178
  }
300
179
  }
180
+
301
181
  class MyNY extends React.Component<{ value?: 'Y' | 'N', style?: React.CSSProperties }> {
302
182
  render(): React.ReactNode {
303
183
  return (
@@ -309,143 +189,4 @@ class MyNY extends React.Component<{ value?: 'Y' | 'N', style?: React.CSSPropert
309
189
  )
310
190
  }
311
191
  }
312
- interface PriceInputProps {
313
- // value?: string[];
314
- // style?: React.CSSProperties
315
- // onChange?: (value: string[]) => void;
316
- form: any,
317
- index: number
318
- cd?: number
319
- readOnly: boolean
320
- }
321
- const LicensePlateNumber: React.FC<PriceInputProps> = (props) => {
322
-
323
- const { form, readOnly } = props;
324
-
325
- const { getFieldDecorator } = form;
326
- const licenceLimit = 3; // 最多支持填写3个车牌号
327
- const formData: any[] = form.getFieldValue('realEstateDataDto');
328
- const [value, setVal] = React.useState(new Array(props.cd || 1).fill(''));
329
- const cd = React.useMemo(() => formData[props.index]?.cd, [formData[props.index]?.cd])
330
- // useEffect(() => {
331
- // if (cd) {
332
- // const dd = value.concat(new Array(cd.length-1).fill(''))
333
- // setVal(dd);
334
- // }
335
- // }, [cd])
336
- const onAdd = () => {
337
- if (value.length < licenceLimit) {
338
- setVal([...value, '']);
339
- }else{
340
- message.warn('最多支持填写3个车牌号')
341
- }
342
- }
343
- // 删除车牌号
344
- const onDelete = () => {
345
- if (value.length > 0) {
346
- const dd = value.slice(0, -1)
347
- setVal(dd);
348
- }
349
- }
350
-
351
- return <>
352
- {
353
- value.length > 0 && value.map((item: string[], key: number) => {
354
-
355
- return <Col span={6} ><Form.Item label='车牌号' key={key}>
356
- {getFieldDecorator(`realEstateDataDto[${props.index}].cphList[${key}]`, {
357
- rules: readOnly ? [] : [{ required: true, message: '请输入车牌号,最多20位' }]
358
- })(
359
- readOnly
360
- ? <MyDiv /> :
361
- <Input style={{ width: '100%' }} maxLength={20} autoComplete='off' placeholder="请输入车牌号" />
362
- )}
363
- </Form.Item>
364
- </Col>
365
- })
366
-
367
-
368
- }
369
- {/* <Col span={6} style={{ display: 'none' }}><Form.Item label='长度' >
370
- {getFieldDecorator(`realEstateDataDto[${props.index}].cd`, {
371
-
372
- })(
373
- <Select />
374
- )}
375
- </Form.Item>
376
- </Col> */}
377
- {!readOnly &&
378
- <Col span={6} >
379
- <Form.Item >
380
- <div style={{ color: 'white' }}>1</div>
381
- <a style={{ marginRight: 10 }} onClick={onAdd}>添加车牌号</a>
382
- {value.length > 1 && <a onClick={onDelete}>删除</a>}
383
- </Form.Item>
384
- </Col>
385
- }
386
- </>
387
- }
388
-
389
-
390
- // const LicensePlateNumber: React.FC<PriceInputProps> = (props) => {
391
-
392
- // const { form } = props;
393
-
394
- // const { getFieldDecorator } = form;
395
- // const licenceLimit = 3; // 最多支持填写3个车牌号
396
- // // const { value = [] } = this.props;
397
- // const [value, setVal] = React.useState(props.value || ['']);
398
- // // const newArr = value.filter(e => !!e);
399
- // const newArrLength = value.length;
400
- // console.log(value, newArrLength)
401
- // // 新增车牌号
402
- // const onAdd = () => {
403
- // if (newArrLength < licenceLimit) {
404
- // setVal([...value, '']);
405
- // props.onChange?.([...value, ''])
406
- // }
407
- // }
408
- // // 删除车牌号
409
- // const onDelete = () => {
410
- // if (newArrLength > 0) {
411
- // const dd = value.slice(0, -1)
412
- // setVal(dd);
413
- // props.onChange?.(dd)
414
- // }
415
- // }
416
- // const onInputChange = (e: React.ChangeEvent<HTMLInputElement>, index: number) => {
417
- // console.log(e.target.value);
418
- // const dd = value.map((item, i) => {
419
- // if (i === index) {
420
- // return e.target.value
421
- // }
422
- // return item
423
- // })
424
- // setVal(dd);
425
- // props.onChange?.(dd)
426
-
427
-
428
- // }
429
- // return (
430
-
431
- // <>
432
- // {newArrLength > 0 && value.map((item, index) => {
433
- // return
434
- // <Form.Item label='车牌号' >
435
- // {getFieldDecorator(`realEstateDataDto[${index}].licensePlateNumber`, {
436
- // rules: [{ required: true, }]
437
- // })(
438
- // <Input onChange={(e) => { onInputChange(e, index) }} key={index} style={{ width: '100%' }} autoComplete='off' placeholder="请输入车牌号" />
439
- // )}
440
- // </Form.Item>
441
- // // <Col span={6} >
442
- // // <Input onChange={(e) => { onInputChange(e, index) }} key={index} style={{ width: '100%' }} autoComplete='off' placeholder="请输入车牌号" />
443
- // // </Col>
444
- // })}
445
-
446
- // <Button type="link" onClick={onAdd}>添加车牌号</Button>
447
- // {newArrLength > 1 && <Button type="link" onClick={onDelete}>删除</Button>}
448
- // </>
449
192
 
450
- // )
451
- // }
@@ -30,7 +30,7 @@ const RULES = {
30
30
  { pattern: /^[0-9\s\-\+]+$/g, message: `${label}仅能数字、空格、-、+` }
31
31
  ],
32
32
  sellerTelPhone: (label: string) => [
33
-
33
+
34
34
  { max: 100, message: `${label}内容超长` },
35
35
  { pattern: /^[0-9\s\-\+]+$/g, message: `${label}仅能数字、空格、-、+` }
36
36
  ],
@@ -142,16 +142,68 @@ export default decorator<IStakeholder, IStakeholder & FormComponentProps>(Form.c
142
142
  }, [props.isExpand])
143
143
  const onChangeType = useCallback(
144
144
  (value: string) => {
145
- console.log(value);
145
+ const supplierTaxId = form?.getFieldValue("supplierTaxId");
146
+ const certificateNumber = form?.getFieldValue("certificateNumber");
147
+ const nationality = form?.getFieldValue("nationality");
146
148
  if (value === "201") {
147
149
  // 当“自然人证件类型”选择“201:居民身份证”时,校验是否为“156:中国’
148
150
  form?.setFieldsValue({ nationality: "156" });
149
- const supplierTaxId = form?.getFieldValue("supplierTaxId");
150
- const certificateNumber = form?.getFieldValue("certificateNumber");
151
+ setNationStatue('');
152
+ setNation('');
151
153
  if (supplierTaxId !== certificateNumber) {
152
154
  setStatus('error');
153
155
  setInfo('证件号码应与销方税号保持一致')
154
156
  }
157
+ } else if (value === "210") {
158
+ if (value.startsWith("M")) {
159
+ //如果“证件号码”以M开头,"国籍(或地区头,)”必须为“446:中国澳门”;校验证件号码必须以H或M开头
160
+ if (nationality !== '446') {
161
+ setNationStatue('error');
162
+ setNation('请选择正确的国籍');
163
+ } else {
164
+ setNationStatue('');
165
+ setNation('');
166
+ }
167
+
168
+ } else if (value.startsWith("H")) {
169
+ //如果“证件号码”以H开国籍(或地区)”必须为“344:中国香港”;
170
+ if (nationality !== '344') {
171
+ setNationStatue('error');
172
+ setNation('请选择正确的国籍');
173
+ } else {
174
+ setNationStatue('');
175
+ setNation('');
176
+ }
177
+
178
+ } else {
179
+ setStatus('error');
180
+ setInfo('请输入正确的证件号码')
181
+ }
182
+ } else if (value === "237") {
183
+ if (value.startsWith("810000")) {
184
+ if (nationality !== '344') {
185
+ setNationStatue('error');
186
+ setNation('请选择正确的国籍');
187
+ } else {
188
+ setNationStatue('');
189
+ setNation('');
190
+ }
191
+
192
+ } else if (value.startsWith("820000")) {
193
+ if (nationality !== '446') {
194
+ setNationStatue('error');
195
+ setNation('请选择正确的国籍');
196
+ } else {
197
+ setNationStatue('');
198
+ setNation('');
199
+ }
200
+
201
+
202
+ } else {
203
+ setStatus('error');
204
+ setInfo('请输入正确的证件号码')
205
+ return Promise.reject("请输入正确的证件号码");
206
+ }
155
207
  } else if (value === "227") {
156
208
 
157
209
  // 当“自然人证件类型”选择“227:中华人民共和国护照”时,校验是否为“156:中国
@@ -169,6 +221,8 @@ export default decorator<IStakeholder, IStakeholder & FormComponentProps>(Form.c
169
221
  const validateIDCode = useCallback(
170
222
  (_: any, value: string) => {
171
223
  if (!value) {
224
+ setStatus('error');
225
+ setInfo('请输入正确的证件号码')
172
226
  return Promise.resolve();
173
227
  }
174
228
 
@@ -199,6 +253,8 @@ export default decorator<IStakeholder, IStakeholder & FormComponentProps>(Form.c
199
253
  }
200
254
 
201
255
  } else {
256
+ setStatus('error');
257
+ setInfo('请输入正确的证件号码')
202
258
  return Promise.reject("请输入正确的证件号码");
203
259
  }
204
260
  } else if (idtype === "237") {
@@ -274,6 +330,8 @@ export default decorator<IStakeholder, IStakeholder & FormComponentProps>(Form.c
274
330
  const validateNationality = useCallback(
275
331
  (_: any, value: string) => {
276
332
  if (!value) {
333
+ setNationStatue('error');
334
+ setNation('请选择正确的国籍');
277
335
  return Promise.resolve();
278
336
  }
279
337
  const idtype = form?.getFieldValue("certificateType");
@@ -675,19 +733,19 @@ function BuyerNameInput(props: InputProps & { fieldName: string; myform: Wrapped
675
733
  const onSearch = React.useCallback(async (searchText: string) => {
676
734
  await Discontinue.start();
677
735
  try {
678
- if (fieldName === 'buyerName') {
736
+ if (fieldName === 'buyerName' ) {
679
737
  if (autoComplete.onBuyerNameSearch) {
680
738
  setOptions(await autoComplete.onBuyerNameSearch(searchText));
681
739
  }
682
- } else if (fieldName === 'buyerTaxId') {
740
+ } else if (fieldName === 'buyerTaxId' ) {
683
741
  if (autoComplete.onBuyerTaxIdSearch) {
684
742
  setOptions(await autoComplete.onBuyerTaxIdSearch(searchText));
685
743
  }
686
- } else if (fieldName === 'supplierName') {
744
+ }else if(fieldName === 'supplierName'){
687
745
  if (autoComplete.onSupplierNameSearch) {
688
746
  setOptions(await autoComplete.onSupplierNameSearch(searchText));
689
747
  }
690
- } else if (fieldName === 'supplierTaxId') {
748
+ }else if(fieldName === 'supplierTaxId'){
691
749
  if (autoComplete.onSupplierTaxIdSearch) {
692
750
  setOptions(await autoComplete.onSupplierTaxIdSearch(searchText));
693
751
  }
@@ -1022,7 +1080,7 @@ class NationalSelect extends React.Component<any> {
1022
1080
  if (props.readOnly) {
1023
1081
  return <span className='digtal-stakeholder-form-text'>{getLable(props.value)}</span>
1024
1082
  } else {
1025
- return <Select options={option} {...props} />
1083
+ return <Select style={{ width: 100 }} options={option} {...props} />
1026
1084
  }
1027
1085
  }
1028
1086
  }