Commit 85cae951f830af06f9abaf924779057df5d786f7
1 parent
db8fdbb6
快速报价app 多工序
Showing
7 changed files
with
118 additions
and
14 deletions
src/components/Common/Typesetting/typesetting.js
| @@ -607,6 +607,7 @@ const Typesetting = props => { | @@ -607,6 +607,7 @@ const Typesetting = props => { | ||
| 607 | 607 | ||
| 608 | const isShow = slaveRowData && slaveRowData.dMachineLength && slaveRowData.dMaxWidth && slaveRowData.dMaxLength && isMax && innerDivs.length; | 608 | const isShow = slaveRowData && slaveRowData.dMachineLength && slaveRowData.dMaxWidth && slaveRowData.dMaxLength && isMax && innerDivs.length; |
| 609 | if (isCustomized && !isShow) { | 609 | if (isCustomized && !isShow) { |
| 610 | + if (isMobile) return; | ||
| 610 | message.error("排版尺寸大于上机尺寸,请确认参数!"); | 611 | message.error("排版尺寸大于上机尺寸,请确认参数!"); |
| 611 | } | 612 | } |
| 612 | const onClick = () => { | 613 | const onClick = () => { |
src/mobile/components/SelectInput.jsx
| 1 | import React, { useState, useRef, useEffect, useCallback } from "react"; | 1 | import React, { useState, useRef, useEffect, useCallback } from "react"; |
| 2 | -import { Input, Popup, Button, Toast, PickerView, SearchBar,Checkbox } from "antd-mobile"; | 2 | +import { Input, Popup, Button, Toast, PickerView, SearchBar, Checkbox } from "antd-mobile"; |
| 3 | import { DownOutline } from "antd-mobile-icons"; | 3 | import { DownOutline } from "antd-mobile-icons"; |
| 4 | import commonConfig from "@/utils/config"; | 4 | import commonConfig from "@/utils/config"; |
| 5 | import * as commonServices from "@/services/services"; | 5 | import * as commonServices from "@/services/services"; |
| @@ -148,7 +148,12 @@ const SelectInput = props => { | @@ -148,7 +148,12 @@ const SelectInput = props => { | ||
| 148 | <div> | 148 | <div> |
| 149 | <div className={styles.inputBox}> | 149 | <div className={styles.inputBox}> |
| 150 | {propsType === "b" ? ( | 150 | {propsType === "b" ? ( |
| 151 | - <Checkbox style={{height:'3.125rem'}}/> | 151 | + <Checkbox |
| 152 | + style={{ height: "3.125rem" }} | ||
| 153 | + onChange={val => { | ||
| 154 | + props.onDataChange(tableName, itemDetail.sName, { [itemDetail.sName]: val }, null, coplyColumns); | ||
| 155 | + }} | ||
| 156 | + /> | ||
| 152 | ) : ( | 157 | ) : ( |
| 153 | <div> | 158 | <div> |
| 154 | {" "} | 159 | {" "} |
src/mobile/components/selectInput.css
src/mobile/components/selectInput.less
src/mobile/quotation/detailNew.jsx
| @@ -1467,6 +1467,10 @@ const BoxComponent = props => { | @@ -1467,6 +1467,10 @@ const BoxComponent = props => { | ||
| 1467 | if (item.sName === "dSumPQty" && selectedNode.sTypeKey !== "huace") { | 1467 | if (item.sName === "dSumPQty" && selectedNode.sTypeKey !== "huace") { |
| 1468 | return false; | 1468 | return false; |
| 1469 | } | 1469 | } |
| 1470 | + const { bAdvancedSetting } = slaveRowData; | ||
| 1471 | + if ((item.sName === "dPortrait" && !bAdvancedSetting) || (item.sName === "dHorizontal" && !bAdvancedSetting)) { | ||
| 1472 | + return false; | ||
| 1473 | + } | ||
| 1470 | 1474 | ||
| 1471 | return item.iTag === iTag; | 1475 | return item.iTag === iTag; |
| 1472 | }); | 1476 | }); |
| @@ -1515,20 +1519,26 @@ const BoxComponent = props => { | @@ -1515,20 +1519,26 @@ const BoxComponent = props => { | ||
| 1515 | // return pre; | 1519 | // return pre; |
| 1516 | // }, []); | 1520 | // }, []); |
| 1517 | useEffect(() => { | 1521 | useEffect(() => { |
| 1518 | - setDownAbleConfigsNew(downAbleConfigs); | ||
| 1519 | - }, [downAbleConfigs]); | 1522 | + // setDownAbleConfigsNew(downAbleConfigs); |
| 1523 | + const data = downAbleConfigs.reduce((pre, cur) => { | ||
| 1524 | + const childConfigs = downAbleExtraConfigs.filter(item => item.sParentName === cur.showName); | ||
| 1525 | + pre.push(cur, ...childConfigs); | ||
| 1526 | + return pre; | ||
| 1527 | + }, []); | ||
| 1528 | + setDownAbleConfigsNew(data); | ||
| 1529 | + }, [downAbleConfigs, downAbleExtraConfigs]); | ||
| 1520 | // 初始化状态,存储每个 Switch 的状态 | 1530 | // 初始化状态,存储每个 Switch 的状态 |
| 1521 | const [switchStates, setSwitchStates] = useState(null); | 1531 | const [switchStates, setSwitchStates] = useState(null); |
| 1522 | useEffect(() => { | 1532 | useEffect(() => { |
| 1523 | if (!sBackProcessData) return; | 1533 | if (!sBackProcessData) return; |
| 1524 | - const newSwitchStates = downAbleConfigsNew | ||
| 1525 | - .filter(item => item.sPartsName === boxModel || !item.sPartsName) | ||
| 1526 | - .reduce((acc, item, index) => { | ||
| 1527 | - acc[item.sName] = sBackProcessData ? sBackProcessData[index][item.sName] !== "" : false; | ||
| 1528 | - return acc; | ||
| 1529 | - }, {}); | ||
| 1530 | - | ||
| 1531 | - setSwitchStates(newSwitchStates); | 1534 | + // const newSwitchStates = downAbleConfigsNew |
| 1535 | + // .filter(item => item.sPartsName === boxModel || !item.sPartsName) | ||
| 1536 | + // .reduce((acc, item, index) => { | ||
| 1537 | + // acc[item.sName] = sBackProcessData && sBackProcessData[index]? sBackProcessData[index][item.sName] !== "" : false; | ||
| 1538 | + // return acc; | ||
| 1539 | + // }, {}); | ||
| 1540 | + | ||
| 1541 | + // setSwitchStates(newSwitchStates); | ||
| 1532 | }, [downAbleConfigsNew, boxModel]); // 依赖数组 | 1542 | }, [downAbleConfigsNew, boxModel]); // 依赖数组 |
| 1533 | 1543 | ||
| 1534 | // 处理 Switch 变化的函数 | 1544 | // 处理 Switch 变化的函数 |
| @@ -1544,7 +1554,7 @@ const BoxComponent = props => { | @@ -1544,7 +1554,7 @@ const BoxComponent = props => { | ||
| 1544 | .map((item, i) => ({ | 1554 | .map((item, i) => ({ |
| 1545 | ...item, | 1555 | ...item, |
| 1546 | isSelect: switchStates ? switchStates[item.sName] : false, | 1556 | isSelect: switchStates ? switchStates[item.sName] : false, |
| 1547 | - sName: "sParams" + i, | 1557 | + // sName: "sParams" + i, |
| 1548 | sProductClassifyId: item.sId, | 1558 | sProductClassifyId: item.sId, |
| 1549 | })); | 1559 | })); |
| 1550 | const downViewProps = { | 1560 | const downViewProps = { |
| @@ -1555,6 +1565,7 @@ const BoxComponent = props => { | @@ -1555,6 +1565,7 @@ const BoxComponent = props => { | ||
| 1555 | viewRow: slaveRowData, | 1565 | viewRow: slaveRowData, |
| 1556 | tableName: `slaveDown${boxModel}`, | 1566 | tableName: `slaveDown${boxModel}`, |
| 1557 | }; | 1567 | }; |
| 1568 | + | ||
| 1558 | // 获取sType为3的 | 1569 | // 获取sType为3的 |
| 1559 | const { productProcessInfo = [] } = masterData; | 1570 | const { productProcessInfo = [] } = masterData; |
| 1560 | const finishedViewProps = { | 1571 | const finishedViewProps = { |
| @@ -1891,7 +1902,75 @@ const BoxComponent = props => { | @@ -1891,7 +1902,75 @@ const BoxComponent = props => { | ||
| 1891 | <Switch checked={switchStates ? switchStates[x.sName] : ""} onChange={val => handleSwitchChange(x, val)} /> | 1902 | <Switch checked={switchStates ? switchStates[x.sName] : ""} onChange={val => handleSwitchChange(x, val)} /> |
| 1892 | <div className={styles.customer} style={{ marginTop: "0", marginLeft: "2rem", width: "40%" }}> | 1903 | <div className={styles.customer} style={{ marginTop: "0", marginLeft: "2rem", width: "40%" }}> |
| 1893 | {switchStates && switchStates[x.sName] ? ( | 1904 | {switchStates && switchStates[x.sName] ? ( |
| 1894 | - <SelectInput {...downViewProps} itemDetail={{ ...x, sVisColumnName: "sProcessName", sDropDownType: "sql" }} downIndex={i} /> | 1905 | + // 这里需要数组遍历 多个工序 |
| 1906 | + <div className={styles.processFlex}> | ||
| 1907 | + <SelectInput {...downViewProps} itemDetail={{ ...x, sVisColumnName: "sProcessName", sDropDownType: "sql" }} downIndex={i} /> | ||
| 1908 | + <div className={styles.processBtn}> | ||
| 1909 | + {!x.sParentName ? ( | ||
| 1910 | + <Button | ||
| 1911 | + color="primary" | ||
| 1912 | + fill="solid" | ||
| 1913 | + size="small" | ||
| 1914 | + style={{ | ||
| 1915 | + width: "1.93rem", | ||
| 1916 | + height: "1.93rem", | ||
| 1917 | + display: "flex", | ||
| 1918 | + justifyContent: "center", | ||
| 1919 | + alignItems: "center", | ||
| 1920 | + textAlign: "center", | ||
| 1921 | + }} | ||
| 1922 | + onClick={() => { | ||
| 1923 | + props.setState(pre => { | ||
| 1924 | + const newSId = commonUtils.createSid(); | ||
| 1925 | + const newConfig = { | ||
| 1926 | + ...x, | ||
| 1927 | + sId: newSId, | ||
| 1928 | + sParentName: x.showName, | ||
| 1929 | + sName: `${x.sName}_${newSId}`, | ||
| 1930 | + }; | ||
| 1931 | + return { | ||
| 1932 | + ...pre, | ||
| 1933 | + downAbleExtraConfigs: [...downAbleExtraConfigs, newConfig], | ||
| 1934 | + }; | ||
| 1935 | + }); | ||
| 1936 | + }} | ||
| 1937 | + > | ||
| 1938 | + <AddOutline /> | ||
| 1939 | + </Button> | ||
| 1940 | + ) : ( | ||
| 1941 | + <Button | ||
| 1942 | + color="danger" | ||
| 1943 | + fill="solid" | ||
| 1944 | + size="small" | ||
| 1945 | + style={{ | ||
| 1946 | + width: "1.93rem", | ||
| 1947 | + height: "1.93rem", | ||
| 1948 | + display: "flex", | ||
| 1949 | + justifyContent: "center", | ||
| 1950 | + alignItems: "center", | ||
| 1951 | + textAlign: "center", | ||
| 1952 | + }} | ||
| 1953 | + onClick={() => { | ||
| 1954 | + props.setState(pre => { | ||
| 1955 | + const iIndex = downAbleExtraConfigs.findIndex(item => item.sId === x.sId); | ||
| 1956 | + | ||
| 1957 | + const slaveRowIndex = slaveData.findIndex(item => item.sId === slaveRowData.sId); | ||
| 1958 | + const { sBackProcessData = [] } = slaveData[slaveRowIndex]; | ||
| 1959 | + const iIndex1 = sBackProcessData.findIndex(item => item[x.sName]); | ||
| 1960 | + slaveData[slaveRowIndex].sBackProcessData?.splice(iIndex1, 1); | ||
| 1961 | + return { | ||
| 1962 | + ...pre, | ||
| 1963 | + downAbleExtraConfigs: [...downAbleExtraConfigs.slice(0, iIndex), ...downAbleExtraConfigs.slice(iIndex + 1)], | ||
| 1964 | + slaveData, | ||
| 1965 | + }; | ||
| 1966 | + }); | ||
| 1967 | + }} | ||
| 1968 | + > | ||
| 1969 | + <MinusOutline /> | ||
| 1970 | + </Button> | ||
| 1971 | + )} | ||
| 1972 | + </div> | ||
| 1973 | + </div> | ||
| 1895 | ) : ( | 1974 | ) : ( |
| 1896 | "" | 1975 | "" |
| 1897 | )} | 1976 | )} |
src/mobile/quotation/quotationDetail.css
src/mobile/quotation/quotationDetail.less
| @@ -167,4 +167,12 @@ | @@ -167,4 +167,12 @@ | ||
| 167 | right: 5%; | 167 | right: 5%; |
| 168 | bottom: 10%; | 168 | bottom: 10%; |
| 169 | } | 169 | } |
| 170 | +} | ||
| 171 | +.processFlex{ | ||
| 172 | + display: flex; | ||
| 173 | + align-items: center; | ||
| 174 | + justify-content: space-between; | ||
| 175 | + .processBtn{ | ||
| 176 | + margin-left: 1rem; | ||
| 177 | + } | ||
| 170 | } | 178 | } |
| 171 | \ No newline at end of file | 179 | \ No newline at end of file |