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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lu-lowcode-package-form",
3
- "version": "0.11.39",
3
+ "version": "0.11.41",
4
4
  "dependencies": {
5
5
  "@ant-design/icons": "^4.8.1",
6
6
  "@dnd-kit/core": "^6.1.0",
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, fieldName);
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
- remove(index)
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="取消"