kts-component-invoice-operate 3.2.233 → 3.2.235-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.
- package/README.md +0 -4
- package/dist/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/IGood/index.d.ts +0 -1
- package/dist/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/ImportGoods/index.d.ts +0 -2
- package/dist/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/index.d.ts +0 -2
- package/dist/Invoice/ui/default/GoodsList/index.d.ts +0 -1
- package/dist/Invoice/ui/default/GoodsList/ui/AddRowButton/index.d.ts +1 -1
- package/dist/Invoice/ui/digtal/GoodsList/index.d.ts +0 -1
- package/dist/Invoice/ui/digtal/GoodsList/ui/TaxIncludedSwitch/index.d.ts +1 -4
- package/dist/index.esm.js +266 -706
- package/dist/index.js +265 -705
- package/package.json +1 -1
- package/src/Invoice/Invoice-digtal/_test/easiest/index.tsx +1 -1
- package/src/Invoice/Invoice-digtal/_test/realEstateInfo/index.tsx +7 -69
- package/src/Invoice/Invoice-digtal/index.md +9 -2
- package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/IGood/index.ts +0 -2
- package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/ImportGoods/index.ts +0 -3
- package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/index.ts +0 -3
- package/src/Invoice/InvoiceController/fns/saveEditGood.ts +2 -2
- package/src/Invoice/_test/deduction/index.tsx +6 -28
- package/src/Invoice/index.md +4 -4
- package/src/Invoice/ui/default/GoodsList/index.tsx +1 -3
- package/src/Invoice/ui/default/GoodsList/ui/AddRowButton/index.tsx +1 -8
- package/src/Invoice/ui/default/ImportGoodsDrawer/index.tsx +1 -4
- package/src/Invoice/ui/digtal/Architecture/index.tsx +1 -1
- package/src/Invoice/ui/digtal/FreightList/index.tsx +1 -1
- package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/index.tsx +23 -37
- package/src/Invoice/ui/digtal/GoodsList/index.tsx +1 -3
- package/src/Invoice/ui/digtal/GoodsList/ui/AddRowButton/index.tsx +10 -20
- package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual/index.tsx +6 -11
- package/src/Invoice/ui/digtal/GoodsList/ui/TaxIncludedSwitch/index.tsx +2 -5
- package/src/Invoice/ui/digtal/RealEstateInfo/index.less +0 -7
- package/src/Invoice/ui/digtal/RealEstateInfo/index.tsx +104 -363
- package/src/Invoice/ui/digtal/StakeFarmerholder/index.tsx +26 -17
- package/src/Invoice/ui/digtal/Stakeholder/index.tsx +4 -22
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
|
|
2
|
-
import React
|
|
2
|
+
import React from "react";
|
|
3
3
|
import { decorator } from 'grey-react-box';
|
|
4
|
-
import { Form
|
|
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 {
|
|
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'
|
|
250
|
-
{
|
|
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[
|
|
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
|
],
|
|
@@ -469,19 +469,19 @@ function BuyerNameInput(props: InputProps & { fieldName: string; myform: Wrapped
|
|
|
469
469
|
const onSearch = React.useCallback(async (searchText: string) => {
|
|
470
470
|
await Discontinue.start();
|
|
471
471
|
try {
|
|
472
|
-
if (fieldName === 'buyerName') {
|
|
472
|
+
if (fieldName === 'buyerName' ) {
|
|
473
473
|
if (autoComplete.onBuyerNameSearch) {
|
|
474
474
|
setOptions(await autoComplete.onBuyerNameSearch(searchText));
|
|
475
475
|
}
|
|
476
|
-
} else if (fieldName === 'buyerTaxId') {
|
|
476
|
+
} else if (fieldName === 'buyerTaxId' ) {
|
|
477
477
|
if (autoComplete.onBuyerTaxIdSearch) {
|
|
478
478
|
setOptions(await autoComplete.onBuyerTaxIdSearch(searchText));
|
|
479
479
|
}
|
|
480
|
-
}
|
|
480
|
+
}else if(fieldName === 'supplierName'){
|
|
481
481
|
if (autoComplete.onSupplierNameSearch) {
|
|
482
482
|
setOptions(await autoComplete.onSupplierNameSearch(searchText));
|
|
483
483
|
}
|
|
484
|
-
}
|
|
484
|
+
}else if(fieldName === 'supplierTaxId'){
|
|
485
485
|
if (autoComplete.onSupplierTaxIdSearch) {
|
|
486
486
|
setOptions(await autoComplete.onSupplierTaxIdSearch(searchText));
|
|
487
487
|
}
|
|
@@ -572,27 +572,32 @@ class CardSelect extends React.Component<any> {
|
|
|
572
572
|
// { label: '出生医学证明', value: '291', },
|
|
573
573
|
// { label: '其他个人证件', value: '299', },
|
|
574
574
|
// ]
|
|
575
|
-
const option= [
|
|
576
|
-
|
|
575
|
+
const option = [
|
|
576
|
+
|
|
577
577
|
{ label: "居民身份证", value: "201" },
|
|
578
578
|
{ label: "外国护照", value: "208" },
|
|
579
579
|
{ label: "港澳同胞回乡证", value: "209" },
|
|
580
580
|
{ label: "港澳居民来往内地通行证", value: "210" },
|
|
581
|
-
|
|
581
|
+
|
|
582
582
|
{ label: "台湾居民来往大陆通行证", value: "213" },
|
|
583
|
-
|
|
583
|
+
|
|
584
584
|
{ label: "中国护照", value: "227" },
|
|
585
|
-
|
|
585
|
+
|
|
586
586
|
{ label: "外国人永久居留身份证", value: "233" },
|
|
587
|
-
|
|
587
|
+
|
|
588
588
|
{ label: "中华人民共和国港澳居民居住证", value: "237" },
|
|
589
589
|
{ label: "中华人民共和国台湾居民居住证", value: "238" },
|
|
590
|
-
|
|
591
|
-
|
|
590
|
+
|
|
591
|
+
];
|
|
592
|
+
function getLable (value?: string) {
|
|
593
|
+
|
|
594
|
+
return option.find(e => e.value === value)?.label || '';
|
|
595
|
+
|
|
596
|
+
}
|
|
592
597
|
if (props.readOnly) {
|
|
593
|
-
return <span className='digtal-stakeholder-form-text'>{props.value}</span>
|
|
598
|
+
return <span className='digtal-stakeholder-form-text'>{getLable(props.value)}</span>
|
|
594
599
|
} else {
|
|
595
|
-
return <Select style={{width:200}} options={option} {...props} />
|
|
600
|
+
return <Select style={{ width: 200 }} options={option} {...props} />
|
|
596
601
|
}
|
|
597
602
|
}
|
|
598
603
|
}
|
|
@@ -850,9 +855,13 @@ class NationalSelect extends React.Component<any> {
|
|
|
850
855
|
{ value: "A00", label: "科索沃" }
|
|
851
856
|
];
|
|
852
857
|
|
|
853
|
-
|
|
858
|
+
function getLable (value?: string) {
|
|
859
|
+
|
|
860
|
+
return option.find(e => e.value === value)?.label || '';
|
|
861
|
+
|
|
862
|
+
}
|
|
854
863
|
if (props.readOnly) {
|
|
855
|
-
return <span className='digtal-stakeholder-form-text'>{props.value}</span>
|
|
864
|
+
return <span className='digtal-stakeholder-form-text'>{getLable(props.value)}</span>
|
|
856
865
|
} else {
|
|
857
866
|
return <Select options={option} {...props} />
|
|
858
867
|
}
|
|
@@ -200,7 +200,7 @@ export default decorator<IStakeholder, IStakeholder & FormComponentProps>(Form.c
|
|
|
200
200
|
</Form.Item>
|
|
201
201
|
</Col>
|
|
202
202
|
|
|
203
|
-
<Col span={10+
|
|
203
|
+
<Col span={10+riskspanW} style={{ display: isExpand ? undefined : 'none' }} >
|
|
204
204
|
<Form.Item label='购买方地址' colon={false}>
|
|
205
205
|
{getFieldDecorator('buyerAddress', {
|
|
206
206
|
rules: getRules('buyerAddress', [{ max: 100, message: '购买方地址内容超长' }])
|
|
@@ -208,22 +208,13 @@ export default decorator<IStakeholder, IStakeholder & FormComponentProps>(Form.c
|
|
|
208
208
|
</Form.Item>
|
|
209
209
|
</Col>
|
|
210
210
|
|
|
211
|
-
<Col span={10+
|
|
211
|
+
<Col span={10+riskspanW} style={{ display: isExpand ? undefined : 'none' }} >
|
|
212
212
|
<Form.Item label='电话' colon={false} className='telephone'>
|
|
213
213
|
{getFieldDecorator('buyerPhone', {
|
|
214
214
|
rules: getRules('buyerPhone', RULES.buyerTelPhone('购买方电话'))
|
|
215
215
|
})(<MyInput readOnly={isReadOnly('buyerPhone')} placeholder="请输入电话" autoComplete="off" />)}
|
|
216
216
|
</Form.Item>
|
|
217
217
|
</Col>
|
|
218
|
-
{(props.leqi) &&
|
|
219
|
-
<Col span={4} style={{ display: isExpand ? undefined : 'none' }}>
|
|
220
|
-
<Form.Item colon={false}>
|
|
221
|
-
{getFieldDecorator('buyerAddressPhoneFlag', {
|
|
222
|
-
valuePropName: 'checked',
|
|
223
|
-
})(<Checkbox onChange={props?.invoiceMarkCallback} disabled={isReadOnly('buyerAddressPhoneFlag')} style={{whiteSpace:'nowrap'}}>是否展示</Checkbox>)}
|
|
224
|
-
</Form.Item>
|
|
225
|
-
</Col>
|
|
226
|
-
}
|
|
227
218
|
<Col span={10 + leqispanW} style={{ display: isExpand ? undefined : 'none' }} >
|
|
228
219
|
<Form.Item label='购买方开户银行' colon={false}>
|
|
229
220
|
{getFieldDecorator('buyerBank', {
|
|
@@ -290,7 +281,7 @@ export default decorator<IStakeholder, IStakeholder & FormComponentProps>(Form.c
|
|
|
290
281
|
</Form.Item>
|
|
291
282
|
</Col>
|
|
292
283
|
|
|
293
|
-
<Col span={10+
|
|
284
|
+
<Col span={10+riskspanW} style={{ display: isExpand ? undefined : 'none' }} >
|
|
294
285
|
<Form.Item label='销售方地址' colon={false}>
|
|
295
286
|
{getFieldDecorator('sellerAddress', {
|
|
296
287
|
rules: getRules('sellerAddress', [{ max: 300, message: '销售方地址内容超长' }])
|
|
@@ -298,22 +289,13 @@ export default decorator<IStakeholder, IStakeholder & FormComponentProps>(Form.c
|
|
|
298
289
|
</Form.Item>
|
|
299
290
|
</Col>
|
|
300
291
|
|
|
301
|
-
<Col span={10+
|
|
292
|
+
<Col span={10+riskspanW} style={{ display: isExpand ? undefined : 'none' }} >
|
|
302
293
|
<Form.Item label='电话' colon={false} className='telephone' >
|
|
303
294
|
{getFieldDecorator('sellerPhone', {
|
|
304
295
|
rules: getRules('sellerPhone', RULES.sellerTelPhone('销售方电话'))
|
|
305
296
|
})(<MyInput readOnly={isReadOnly('sellerPhone')} placeholder="请输入电话" autoComplete="off" />)}
|
|
306
297
|
</Form.Item>
|
|
307
298
|
</Col>
|
|
308
|
-
{(props.leqi) &&
|
|
309
|
-
<Col span={4} style={{ display: isExpand ? undefined : 'none' }}>
|
|
310
|
-
<Form.Item colon={false}>
|
|
311
|
-
{getFieldDecorator('sellerAddressPhoneFlag', {
|
|
312
|
-
valuePropName: 'checked',
|
|
313
|
-
})(<Checkbox onChange={props?.invoiceMarkCallback} disabled={isReadOnly('sellerAddressPhoneFlag')} style={{whiteSpace:'nowrap'}}>是否展示</Checkbox>)}
|
|
314
|
-
</Form.Item>
|
|
315
|
-
</Col>
|
|
316
|
-
}
|
|
317
299
|
<Col span={10 + leqispanW} style={{ display: isExpand ? undefined : 'none' }} >
|
|
318
300
|
<Form.Item label='销售方开户银行' colon={false}>
|
|
319
301
|
{getFieldDecorator('sellerBank', {
|