lu-lowcode-package-form 0.11.39 → 0.11.41
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.cjs.js +230 -230
- package/dist/index.es.js +14690 -14673
- package/package.json +1 -1
- package/src/App.jsx +2 -1
- package/src/components/field/select/search-select.jsx +7 -11
- package/src/components/field/table/index.jsx +27 -21
package/package.json
CHANGED
package/src/App.jsx
CHANGED
@@ -631,7 +631,8 @@ function App() {
|
|
631
631
|
<Field.DatePicker defaultNow={true} label="日期时间" prompt="" datetype="date" __id="datetime2" />
|
632
632
|
|
633
633
|
<Field.WithSingleSelect ref={testRef}
|
634
|
-
request={async (params) => {
|
634
|
+
request={async (params, ruleParams, fieldName) => {
|
635
|
+
console.log("request params", params, ruleParams, fieldName)
|
635
636
|
if (params?.ruleParams?.node_ocm009lpxt2 == 111)
|
636
637
|
return { code: 0, data: { list: [{ label: '选项1', value: '1', product_price11: "1111", product_price12: "2222", product_price1: 111 }, { label: '选项2', value: '2' }, { label: '选项3', value: '3' }] } }
|
637
638
|
else return { code: 0, data: { list: [{ label: '选项1', value: '1', product_price11: "1111", product_price12: "2222", product_price1: 111 }, { label: '选项2', value: '2' },] } }
|
@@ -19,10 +19,6 @@ const SearchSelect = forwardRef(({ addWrapper = true, form, fieldName, fieldsVal
|
|
19
19
|
}, []);
|
20
20
|
const callbackQueue = useRef([]);
|
21
21
|
|
22
|
-
useEffect(() => {
|
23
|
-
console.log("fieldName change props", fieldName)
|
24
|
-
}, [fieldName])
|
25
|
-
|
26
22
|
useEffect(() => {
|
27
23
|
// console.log("SearchSelect useEffect props", props)
|
28
24
|
if (value) {
|
@@ -109,8 +105,8 @@ const SearchSelect = forwardRef(({ addWrapper = true, form, fieldName, fieldsVal
|
|
109
105
|
await debounceFetchOptions(params)
|
110
106
|
}
|
111
107
|
|
112
|
-
const debounceFetchOptions = debounce((params, ruleParams) => {
|
113
|
-
fetchOptions(params, ruleParams).then(result => {
|
108
|
+
const debounceFetchOptions = useCallback(debounce((params, ruleParams) => {
|
109
|
+
fetchOptions(params, ruleParams, fieldName).then(result => {
|
114
110
|
// console.log(`[${props?.label}]debounceFetchOptions result`, result);
|
115
111
|
while (callbackQueue.current.length > 0) {
|
116
112
|
const callback = callbackQueue.current.shift();
|
@@ -119,13 +115,13 @@ const SearchSelect = forwardRef(({ addWrapper = true, form, fieldName, fieldsVal
|
|
119
115
|
}
|
120
116
|
}
|
121
117
|
});
|
122
|
-
}, 200)
|
118
|
+
}, 200), [fieldName]);
|
123
119
|
|
124
|
-
const fetchList = async (params, ruleParams) => {
|
120
|
+
const fetchList = async (params, ruleParams, newFieldName) => {
|
125
121
|
let list = []
|
126
122
|
if (!(ruleParams && Object.values(ruleParams).some(value => value === "##norequest##"))) {
|
127
123
|
setFetching(true)
|
128
|
-
const response = await request({ ...params, ruleParams }, form,
|
124
|
+
const response = await request({ ...params, ruleParams }, form, newFieldName);
|
129
125
|
setFetching(false)
|
130
126
|
if (response.code > 0) {
|
131
127
|
callError && typeof callError === 'function' && callError(response.message);
|
@@ -155,9 +151,9 @@ const SearchSelect = forwardRef(({ addWrapper = true, form, fieldName, fieldsVal
|
|
155
151
|
return list
|
156
152
|
}
|
157
153
|
|
158
|
-
const fetchOptions = async (params, ruleParams) => {
|
154
|
+
const fetchOptions = async (params, ruleParams, newFieldName) => {
|
159
155
|
try {
|
160
|
-
let list = await fetchList(params, ruleParams)
|
156
|
+
let list = await fetchList(params, ruleParams, newFieldName)
|
161
157
|
list = await handleOptions(list)
|
162
158
|
setNOptions(Array.isArray(list) ? list : [])
|
163
159
|
return list
|
@@ -4,6 +4,7 @@ import { CopyOutlined, DeleteOutlined } from "@ant-design/icons";
|
|
4
4
|
import { BaseWrapper } from "../base.jsx"
|
5
5
|
import { nanoid } from "nanoid";
|
6
6
|
import { eventEmitter } from '../../../utils/events'
|
7
|
+
import { useMemoizedFn } from 'ahooks';
|
7
8
|
|
8
9
|
const TableAction = ({ label, subTableIndex, children, subTableHead = false, ...props }) => {
|
9
10
|
//fsticky fright-0
|
@@ -83,7 +84,31 @@ const Table = ({ children, onTableAddRow, disabled, readonly, onTableRemoveRow,
|
|
83
84
|
}
|
84
85
|
return true
|
85
86
|
}
|
87
|
+
const handleCopy = useMemoizedFn((index)=>{
|
88
|
+
let tableValues = form.getFieldValue(fieldName)
|
89
|
+
const copyRow = {...tableValues[index],__id:nanoid()}
|
90
|
+
tableValues.splice(index + 1, 0, copyRow)
|
91
|
+
form?.setFieldValue(fieldName, tableValues)
|
86
92
|
|
93
|
+
let changedFields = {}
|
94
|
+
let tableName = fieldName;
|
95
|
+
for (let i = index + 1; i < tableValues.length; i++) {
|
96
|
+
let value = tableValues[i]
|
97
|
+
for (let key in value) {
|
98
|
+
let changedFieldName = [tableName,i,key]
|
99
|
+
changedFields[changedFieldName] = { name: changedFieldName, value: value[key] }
|
100
|
+
}
|
101
|
+
}
|
102
|
+
typeof recordFieldsChange == "function" && recordFieldsChange(changedFields,true)
|
103
|
+
})
|
104
|
+
|
105
|
+
const handleRemove = useMemoizedFn((index)=>{
|
106
|
+
let tableValues = form.getFieldValue(fieldName)
|
107
|
+
tableValues.splice(index, 1)
|
108
|
+
form?.setFieldValue(fieldName, tableValues)
|
109
|
+
typeof onTableRemoveRow === "function" && onTableRemoveRow(childrenIds);
|
110
|
+
typeof removeLastFieldsValues === "function" && removeLastFieldsValues(`${name},${index}`,true)
|
111
|
+
})
|
87
112
|
if (props.isRequired)
|
88
113
|
rules.push({ required: true, message: `子表[${props.label}]必须填写` });
|
89
114
|
return <Form.List name={name} rules={rules}>
|
@@ -200,31 +225,12 @@ const Table = ({ children, onTableAddRow, disabled, readonly, onTableRemoveRow,
|
|
200
225
|
</TableCol>
|
201
226
|
})}
|
202
227
|
{disabled != true && readonly != true && <TableAction subTableHead={index == 0} key={`row_${index}_action`} subTable={true} subTableIndex={index} label={"操作"}>
|
203
|
-
{isAllowCopy && <CopyOutlined className="fcursor-pointer" onClick={()
|
204
|
-
let tableValues = form.getFieldValue(fieldName)
|
205
|
-
const copyRow = {...tableValues[index],__id:nanoid()}
|
206
|
-
tableValues.splice(index + 1, 0, copyRow)
|
207
|
-
form?.setFieldValue(fieldName, tableValues)
|
208
|
-
|
209
|
-
let changedFields = {}
|
210
|
-
let tableName = fieldName;
|
211
|
-
for (let i = index + 1; i < tableValues.length; i++) {
|
212
|
-
let value = tableValues[i]
|
213
|
-
for (let key in value) {
|
214
|
-
let changedFieldName = [tableName,i,key]
|
215
|
-
changedFields[changedFieldName] = { name: changedFieldName, value: value[key] }
|
216
|
-
}
|
217
|
-
}
|
218
|
-
typeof recordFieldsChange == "function" && recordFieldsChange(changedFields,true)
|
219
|
-
}} />}
|
228
|
+
{isAllowCopy && <CopyOutlined className="fcursor-pointer" onClick={()=>handleCopy(index)} />}
|
220
229
|
<Popconfirm
|
221
230
|
title="删除确认"
|
222
231
|
description="确定要删除这一行吗?"
|
223
232
|
onConfirm={() => {
|
224
|
-
|
225
|
-
typeof onTableRemoveRow === "function" && onTableRemoveRow(childrenIds);
|
226
|
-
console.log("removeLastFieldsValues", typeof removeLastFieldsValues)
|
227
|
-
typeof removeLastFieldsValues === "function" && removeLastFieldsValues(`${name},${index}`,true)
|
233
|
+
handleRemove(index)
|
228
234
|
}}
|
229
235
|
okText="确定"
|
230
236
|
cancelText="取消"
|