fix: 修改录单的维修赔偿级联点击能显示名称,修改级联组价查看显示标题 (#958)
Reviewed-on: daoyoucloud/tachybase#958 Reviewed-by: sealday <zhanglin@daoyoucloud.com> Co-authored-by: wjh <wwwjh0710@163.com> Co-committed-by: wjh <wwwjh0710@163.com>
This commit is contained in:
parent
12a2f7c1bb
commit
2b0e1fa573
@ -32,7 +32,7 @@ export const AssociationFieldProvider = observer(
|
||||
const currentMode = useMemo(
|
||||
() =>
|
||||
fieldSchema['x-component-props']?.mode ||
|
||||
(isTreeCollection ? 'Cascader' : isFileCollection ? 'FileManager' : 'Select'),
|
||||
(isFileCollection ? 'FileManager' : isTreeCollection ? 'Cascader' : 'Select'),
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
[fieldSchema['x-component-props']?.mode],
|
||||
);
|
||||
|
@ -15,7 +15,7 @@ import { Input, Space } from 'antd';
|
||||
import React, { useEffect, useMemo, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { CustomCascader, SchemaComponent } from '../..';
|
||||
import { css, useAPIClient } from '../../..';
|
||||
import { css, useAPIClient, useCollection, useRequest } from '../../..';
|
||||
import { mergeFilter } from '../../../filter-provider/utils';
|
||||
import useServiceOptions, { useAssociationFieldContext } from './hooks';
|
||||
|
||||
@ -43,22 +43,47 @@ const Cascade = connect((props) => {
|
||||
const field: any = useField();
|
||||
const [selectedOptions, setSelectedOptions] = useState([]);
|
||||
const [chang, setChang] = useState(false);
|
||||
const [dataList, setDataList] = useState({});
|
||||
useEffect(() => {
|
||||
const propsValue = props.value || fieldSchema['x-component-props'].value;
|
||||
if (!chang) {
|
||||
const values = Array.isArray(propsValue)
|
||||
? extractLastNonNullValueObjects(
|
||||
propsValue?.filter((v) => v.value),
|
||||
true,
|
||||
)
|
||||
: transformNestedData(propsValue);
|
||||
const defaultData = values?.map?.((v) => {
|
||||
return v.id;
|
||||
});
|
||||
setSelectedOptions(defaultData);
|
||||
onDropdownVisibleChange(true);
|
||||
if (!chang && propsValue) {
|
||||
if (!propsValue.parent && !Object.keys(dataList).length) {
|
||||
resource
|
||||
.list({
|
||||
pageSize: 9999,
|
||||
filter: { id: { $eq: propsValue.id } },
|
||||
sort,
|
||||
tree: true,
|
||||
})
|
||||
.then((res) => {
|
||||
setDataList(res.data?.data[0]);
|
||||
})
|
||||
.catch(() => {});
|
||||
} else {
|
||||
const values = [];
|
||||
if (!propsValue.parent && Object.keys(dataList).length) {
|
||||
const defValue = transformChildrenData(dataList, [], propsValue.id);
|
||||
values.push(...defValue);
|
||||
} else {
|
||||
const defValue = Array.isArray(propsValue)
|
||||
? extractLastNonNullValueObjects(
|
||||
propsValue?.filter((v) => v.value),
|
||||
true,
|
||||
)
|
||||
: transformNestedData(propsValue);
|
||||
values.push(...defValue);
|
||||
}
|
||||
const defaultData = values?.map?.((v) => {
|
||||
return v.id;
|
||||
});
|
||||
onDropdownVisibleChange(true);
|
||||
setSelectedOptions(defaultData);
|
||||
}
|
||||
}
|
||||
}, [fieldSchema['x-component-props'].value, fieldSchema['x-component-props']?.changOnSelect]);
|
||||
}, [fieldSchema['x-component-props'].value, fieldSchema['x-component-props']?.changOnSelect, dataList]);
|
||||
useEffect(() => {
|
||||
onDropdownVisibleChange(true);
|
||||
}, [fieldFilter]);
|
||||
const handleGetOptions = async () => {
|
||||
const response = await resource.list({
|
||||
pageSize: 9999,
|
||||
@ -328,3 +353,14 @@ export function transformNestedData(inputData) {
|
||||
}
|
||||
return resultArray;
|
||||
}
|
||||
|
||||
export const transformChildrenData = (inputData, result, itemId) => {
|
||||
const { children, ...other } = inputData;
|
||||
result.push(other);
|
||||
if (children && inputData?.id !== itemId && children.length) {
|
||||
const { children } = inputData;
|
||||
return transformChildrenData(children[0], result, itemId);
|
||||
} else {
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
@ -13,7 +13,9 @@ const ReadPrettyAssociationField = observer(
|
||||
const { currentMode } = useAssociationFieldContext();
|
||||
return (
|
||||
<>
|
||||
{['Select', 'Picker', 'CascadeSelect'].includes(currentMode) && <ReadPrettyInternalViewer {...props} />}
|
||||
{['Select', 'Picker', 'CascadeSelect', 'Cascader'].includes(currentMode) && (
|
||||
<ReadPrettyInternalViewer {...props} />
|
||||
)}
|
||||
{currentMode === 'Tag' && <ReadPrettyInternalTag {...props} />}
|
||||
{currentMode === 'Nester' && <InternalNester {...props} />}
|
||||
{currentMode === 'SubTable' && <InternalSubTable {...props} />}
|
||||
|
@ -43,7 +43,7 @@ export const RecordDetails: CustomFunctionComponent = () => {
|
||||
|
||||
const feeItems = {};
|
||||
// 根据关联产品名称来合并赔偿
|
||||
if (reqRecordItemFeeItems.data) {
|
||||
if (reqRecordItemFeeItems.data && products) {
|
||||
reqRecordItemFeeItems.data.data?.forEach((contract, index) => {
|
||||
if (!contract.fees.length) return;
|
||||
const movement = contract.movement === '-1' ? '出库合同' : '入库合同';
|
||||
|
Loading…
Reference in New Issue
Block a user