diff --git a/src/components/Common/CommonCostomTabBill.js b/src/components/Common/CommonCostomTabBill.js index 76c89d9..157a80b 100644 --- a/src/components/Common/CommonCostomTabBill.js +++ b/src/components/Common/CommonCostomTabBill.js @@ -6965,7 +6965,6 @@ const handleBtnParamPage = (props, comparedTableId, type) =>{ filterData = slave0Data.filter(item => item.sControlId === controlRow.sId); } - console.log('tableDataRow', slave0Data, controlRow, filterData); let tableDataRow = {}; if( commonUtils.isNotEmptyArr(filterData)) { const iIndex = filterData.findIndex(item => item.sId === processRow.sId); diff --git a/src/mobile/components/SelectInput.jsx b/src/mobile/components/SelectInput.jsx index 6ad425f..7056995 100644 --- a/src/mobile/components/SelectInput.jsx +++ b/src/mobile/components/SelectInput.jsx @@ -48,7 +48,7 @@ const SelectInput = props => { pageSize: 20, }; commonServices.postValueService(props.app.token, body, url).then(res => { - if (res.data.code === 1) { + if (res.data.code === 1 && res.data.dataset) { const list = res.data.dataset.rows?.map((item, i) => ({ label: item.sCustomerName || item.sName || item.sProcessName || item.sColorName || item.sMaterialsName, value: item.sId || item.sSlaveId, @@ -101,15 +101,39 @@ const SelectInput = props => { let { sDropDownType, sVisColumnName } = itemDetail; if (sVisColumnName && sVisColumnName === "sProcessName") { if (sDropDownType === "sql") { - const list = JSON.parse(itemDetail.sChineseDropDown).map(x => { - return { - label: x.sProcessName, - value: x.sId, - ...x, - }; - }); - setColumns(list); - setCopyColumns(list); + if (itemDetail.sParamDropDown) { + const { sParamDropDown = "", sName0, sName } = itemDetail; + const dropDownData = sParamDropDown.split(","); + if (dropDownData?.length) { + const list = { + dropDownData: dropDownData.map(item => ({ + sId: commonUtils.createSid(), + value: commonUtils.createSid(), + sParam: itemDetail.sParam, + [sName]: item, + sParamKey: sName0, + sParamKeyNew: sName, + label:item + })), + totalPageCount: 1, + currentPageNo: 1, + conditonValues: {}, + }; + setColumns(list.dropDownData); + setCopyColumns(list.dropDownData); + } + } else { + const list = JSON.parse(itemDetail.sChineseDropDown).map(x => { + return { + label: x.sProcessName, + value: x.sId, + ...x, + }; + }); + setColumns(list); + setCopyColumns(list); + } + // getSqlDropDownData(searchValue); } else if ((sDropDownType = "const")) { if (!itemDetail.showDropDown) return; @@ -164,9 +188,13 @@ const SelectInput = props => { setValue(val); props.onDataChange(tableName, itemDetail.sName, { [itemDetail.sName]: val }, null, coplyColumns); }} + onClick={() => { + if (!props.onCostomClick) return; + props.onCostomClick(itemDetail); + }} readOnly={bReadonly} /> - {!bCanInput ? ( + {itemDetail.sDropDownType === 'sql'? (
diff --git a/src/mobile/quotation/detailNew.jsx b/src/mobile/quotation/detailNew.jsx index b206a22..d1e2dff 100644 --- a/src/mobile/quotation/detailNew.jsx +++ b/src/mobile/quotation/detailNew.jsx @@ -13,7 +13,7 @@ import Typesetting from "@/components/Common/Typesetting/typesetting"; import DynamicSVG from "@/components/Common/BoxDesignCompontent/svg"; import ShowImgM from "@/components/Common/BoxShowImgMaterial/indexNew"; import CommonBase from "@/components/Common/CommonBase"; -import { cloneDeep } from "lodash"; +import { cloneDeep, isEqual } from "lodash"; import moment from "moment"; const QuickQuoteEvent = props => { const { location, selectedNode, sModelsId } = props; @@ -196,6 +196,28 @@ const QuickQuoteEvent = props => { // if (dropDownDataSelected.sProcessName === "胶印") { // extraRowData.sPrintProcessId = dropDownDataSelected.sId; // } + if (dropDownDataSelected !== undefined) { + dropDownDataSelected[sFieldName] = dropDownDataSelected.sProcessName; + // 后道参数额外配置 + const { sParamConfig: sParamConfigStr } = dropDownDataSelected || {}; + const sParamConfig = commonUtils.convertStrToObj(sParamConfigStr, []); + extraState.backendParamsConfig = sParamConfig; + extraState.backendConfig = { sParentFieldsName: sFieldName, sBoxModel: boxModel }; + const sBackendParams = sParamConfig + .map((item, index) => { + const { sParamDefault, sParam } = item; + return !sParamDefault + ? "" + : { + sId: commonUtils.createSid(), + value: sParamDefault, + sParam: sParam, + [`sParams${index}`]: sParamDefault, + }; + }) + .filter(item => item !== ""); + dropDownDataSelected.sBackendParams = sBackendParams; + } if (iIndex === -1) { slaveData.push({ sId: commonUtils.createSid(), @@ -876,7 +898,7 @@ const QuickQuoteEvent = props => { manyqtysData: state.manyData, }, })); - + const result = await props.handleCalculation( false, { ...masterProps, ...newState, manyqtysConfig: state.manyConfig, manyqtysData: state.manyData }, @@ -1307,6 +1329,7 @@ const BoxComponent = props => { slaveData, } = state || {}; const slaveRowData = slaveData.find(item => item.sTreeNodeName === selectedNode.showName && item.sBoxModel === boxModel) || {}; + const { sModelsId } = props; const [selectList, setSelectList] = useState([]); const [boxTypeList, setBoxTypeList] = useState([]); @@ -1314,6 +1337,7 @@ const BoxComponent = props => { const [boxPopup, setBoxPopup] = useState(false); const [boxsList, setBoxsList] = useState([]); const [selected, setSelected] = useState(null); + // 获取盒型信息 useEffect(() => { const sId = "17428091410008594700322758474000"; @@ -1512,33 +1536,39 @@ const BoxComponent = props => { // 后道参数 const { sBackProcessData } = slaveRowData || []; const [downAbleConfigsNew, setDownAbleConfigsNew] = useState([]); + // const downAbleConfigsNew = downAbleConfigs.reduce((pre, cur) => { // const childConfigs = downAbleExtraConfigs.filter(item => item.sParentName === cur.showName); // pre.push(cur, ...childConfigs); // return pre; // }, []); - useEffect(() => { - // setDownAbleConfigsNew(downAbleConfigs); - const data = downAbleConfigs.reduce((pre, cur) => { + // useEffect(() => { + // // setDownAbleConfigsNew(downAbleConfigs); + // const data = downAbleConfigs.reduce((pre, cur) => { + // const childConfigs = downAbleExtraConfigs.filter(item => item.sParentName === cur.showName); + // pre.push(cur, ...childConfigs); + // return pre; + // }, []); + // setDownAbleConfigsNew(data); + // }, [downAbleConfigs, downAbleExtraConfigs]); + + // 使用 useMemo 缓存 downAbleConfigsNew 的计算结果 + const computedDownAbleConfigsNew = useMemo(() => { + return downAbleConfigs.reduce((pre, cur) => { const childConfigs = downAbleExtraConfigs.filter(item => item.sParentName === cur.showName); - pre.push(cur, ...childConfigs); - return pre; + return [...pre, cur, ...childConfigs]; }, []); - setDownAbleConfigsNew(data); }, [downAbleConfigs, downAbleExtraConfigs]); - // 初始化状态,存储每个 Switch 的状态 - const [switchStates, setSwitchStates] = useState(null); + + // 使用 useEffect 设置 downAbleConfigsNew 状态 useEffect(() => { - if (!sBackProcessData) return; - // const newSwitchStates = downAbleConfigsNew - // .filter(item => item.sPartsName === boxModel || !item.sPartsName) - // .reduce((acc, item, index) => { - // acc[item.sName] = sBackProcessData && sBackProcessData[index]? sBackProcessData[index][item.sName] !== "" : false; - // return acc; - // }, {}); + if (!isEqual(downAbleConfigsNew, computedDownAbleConfigsNew)) { + setDownAbleConfigsNew(computedDownAbleConfigsNew); + } + }, [computedDownAbleConfigsNew, downAbleConfigsNew]); - // setSwitchStates(newSwitchStates); - }, [downAbleConfigsNew, boxModel]); // 依赖数组 + // 初始化状态,存储每个 Switch 的状态 + const [switchStates, setSwitchStates] = useState(null); // 处理 Switch 变化的函数 const handleSwitchChange = (item, val) => { @@ -1784,6 +1814,19 @@ const BoxComponent = props => { value: item.sCode, label: item.showName, })); + + const onCostomClick = showConfig => { + // const className = target.getAttribute("class"); + // const nodeName = target.nodeName; + // if (className?.includes("select") && nodeName === "DIV") return; + if (!sBackProcessData) return; + props.setState(pre => ({ + ...pre, + backendParamsConfig: commonUtils.convertStrToObj(sBackProcessData.find(item => item[showConfig.sName0 || showConfig.sName])?.sParamConfig, []), + backendConfig: { sParentFieldsName: showConfig.sName, sBoxModel: boxModel }, + })); + }; + return (
{ {switchStates && switchStates[x.sName] ? ( // 这里需要数组遍历 多个工序
- +
{!x.sParentName ? (
+
@@ -2368,4 +2417,117 @@ const ManyComponent = props => {
); }; +// 后道参数额外配置 +const BackendParamsExtraComponent = props => { + const { state, slaveConfig, boxModel } = props; + const { backendParamsConfig = [], backendConfig = {}, slaveData, selectedNode } = state; + const { sParentFieldsName, sBoxModel } = backendConfig; + + // 使用 useMemo 缓存计算结果 + const slaveRowData = useMemo(() => { + return slaveData.find(item => item.sTreeNodeName === selectedNode.showName && item.sBoxModel === sBoxModel) || {}; + }, [slaveData, selectedNode, sBoxModel]); + + const { sBackProcessData = [] } = slaveRowData; + + const viewConfigs = backendParamsConfig.map((item, index) => ({ + ...item, + sName0: `sParam${index + 1}`, + sName: item.sFieldName || `sParam${index + 1}`, + showName: item.sParam, + sDropDownType: item.sParamDropDown ? "sql" : "", + iColValue: 4, + sVisColumnName: "sProcessName", + })); + + const viewProps = { + ...props, + viewConfigs: viewConfigs.map(item => ({ + ...item, + costomStyle: styles.sParamConfig, + })), + tableConfig: { ...slaveConfig, gdsconfigformslave: viewConfigs }, + iColValueView: 24, + getViewRow: config => { + return sBackProcessData.find(item => item[sParentFieldsName])?.sBackendParams?.find(item => item.sParam === config.showName) || {}; + }, + tableName: `sBackendParams${boxModel}`, + getSqlDropDownData: (...args) => { + const showConfig = args[2]; + const { sParamDropDown = "", sName0, sName } = showConfig; + const dropDownData = sParamDropDown.split(","); + if (dropDownData?.length) { + return { + dropDownData: dropDownData.map(item => ({ + sId: commonUtils.createSid(), + value: item, + sParam: showConfig.sParam, + [sName]: item, + sParamKey: sName0, + sParamKeyNew: sName, + })), + totalPageCount: 1, + currentPageNo: 1, + conditonValues: {}, + }; + } + + return props.getSqlDropDownData(...args); + }, + onDataChange: (name, sFieldName, changeValue, sId, dropDownData, isWait) => { + const iIndex = slaveData.findIndex(item => item.sId === slaveRowData.sId); + const iIndex1 = slaveData[iIndex].sBackProcessData.findIndex(item => item[sParentFieldsName]); + const showConfig = viewConfigs.find(item => item.sName === sFieldName); + const dropDownDataSelected = dropDownData?.length + ? dropDownData.find(item => item.sId === changeValue[sFieldName]) + : { + sId: commonUtils.createSid(), + value: changeValue[sFieldName], + sParam: showConfig.sParam, + [sFieldName]: changeValue[sFieldName], + sParamKey: showConfig.sName0, + sParamKeyNew: sFieldName, + }; + const { sParam } = dropDownDataSelected; + const { sBackendParams = [] } = slaveData[iIndex].sBackProcessData[iIndex1]; + const iIndex2 = sBackendParams.findIndex(item => item.sParam === sParam); + if (iIndex2 !== -1) { + sBackendParams[iIndex2] = dropDownDataSelected; + } else { + sBackendParams.push(dropDownDataSelected); + } + slaveData[iIndex].sBackProcessData[iIndex1].sBackendParams = sBackendParams; + if (!showConfig.sName?.startsWith("sParams")) { + slaveData[iIndex].sBackProcessData[iIndex1][showConfig.sName] = dropDownDataSelected[showConfig.sName]; + const { dManualLength, dManualWidth } = slaveData[iIndex].sBackProcessData[iIndex1]; + if (dManualLength !== undefined && dManualWidth !== undefined) { + slaveData[iIndex].sBackProcessData[iIndex1].dManualValue = dManualLength * dManualWidth; + } + } + props.setState(pre => ({ ...pre, slaveData })); + }, + }; + + const onCostomClick = () => {}; + return ( +
+
+ 后道参数额外配置 + +
+
+ + {viewProps.viewConfigs.map(x => ( + +
+
{x.showName}
+ +
+
+ ))} +
+
+
+ ); +}; export default QuotationAllprogressDetail;