From b062b9135af659adb171776c0255119e40459b5d Mon Sep 17 00:00:00 2001 From: ZoeLeeFZ Date: Mon, 18 May 2020 10:30:49 +0800 Subject: [PATCH] =?UTF-8?q?!1001=20=E4=BF=AE=E5=A4=8D:=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E6=9D=BF=E5=90=8D=E6=94=B9=E6=9D=BF=E4=BB=B6=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Add-on/BoardEditor/UpdateBoardInfos.ts | 25 +- src/Add-on/twoD2threeD/Modals/Rec2Br.tsx | 389 +----------------- src/Add-on/twoD2threeD/Polyline2Board.ts | 77 +++- src/Add-on/twoD2threeD/R2BCommon.tsx | 65 +++ .../twoD2threeD/R2BProcessComponent.tsx | 164 ++++++++ src/Add-on/twoD2threeD/R2bConfigComponent.tsx | 262 ++++++++++++ src/Add-on/twoD2threeD/Rec2BrStore.ts | 12 +- src/Editor/DefaultConfig.ts | 37 +- src/UI/Components/Board/BoardFindCommon.tsx | 90 +++- src/UI/Components/Board/BoardFindModify.tsx | 55 +-- .../Board/UpdateBoardInfointerface.ts | 15 +- src/UI/Components/Board/UpdateBoardInfos.tsx | 82 +++- .../Modal/ModalStyle/UpdateBoardInfo.less | 22 + src/UI/Css/common.less | 2 + src/UI/Store/UpdateBoardInfoStore.ts | 27 +- src/UI/Store/UserConfigStore.ts | 2 +- 16 files changed, 837 insertions(+), 489 deletions(-) create mode 100644 src/Add-on/twoD2threeD/R2BCommon.tsx create mode 100644 src/Add-on/twoD2threeD/R2BProcessComponent.tsx create mode 100644 src/Add-on/twoD2threeD/R2bConfigComponent.tsx diff --git a/src/Add-on/BoardEditor/UpdateBoardInfos.ts b/src/Add-on/BoardEditor/UpdateBoardInfos.ts index 0a5aac683..4f34f6a6e 100644 --- a/src/Add-on/BoardEditor/UpdateBoardInfos.ts +++ b/src/Add-on/BoardEditor/UpdateBoardInfos.ts @@ -7,6 +7,7 @@ import { PromptStatus } from "../../Editor/PromptResult"; import { IUpdateBoardInfosOption } from "../../UI/Components/Board/UpdateBoardInfointerface"; import { EBoardKeyList } from "../../Common/BoardKeyList"; import { DRILL_KEYS } from "../../UI/Store/BoardFindInterface"; +import { toJS } from "mobx"; export class UpdateBoardInfos implements Command { @@ -25,7 +26,7 @@ export class UpdateBoardInfos implements Command let brs = brRes.SelectSet.SelectEntityList as Board[]; - const nameOptionMap = updateBoardInfoStore.nameOptionMap; + const nameOptionMap = toJS(updateBoardInfoStore.nameOptionMap, { exportMapsAsObjects: false }); const currentOption = nameOptionMap.get(updateBoardInfoStore.currentBoardName); for (let br of brs) @@ -38,7 +39,7 @@ export class UpdateBoardInfos implements Command } else { - if (br.Name === updateBoardInfoStore.currentBoardName) + if (currentOption && br.Name === updateBoardInfoStore.currentBoardName) this.ModifyBr(br, currentOption); } } @@ -74,13 +75,10 @@ export class UpdateBoardInfos implements Command if (option[i]) br.BoardProcessOption[i] = option[i]; break; - case "upDrill": - case "downDrill": - case "leftDrill": - case "rightDrill": - let index = DRILL_KEYS.indexOf(i); - if (!br.IsSpecialShape) - br.BoardProcessOption.highDrill[index] = option.highDrill[index]; + case EBoardKeyList.Mat: + br.BoardProcessOption[EBoardKeyList.BrMat] = option[EBoardKeyList.BrMat]; + br.BoardProcessOption[EBoardKeyList.Mat] = option[EBoardKeyList.Mat]; + br.BoardProcessOption[EBoardKeyList.Color] = option[EBoardKeyList.Color]; break; case "useZhengFanDrill": br.BoardProcessOption.frontDrill = option.upDownDrill[0]; @@ -91,6 +89,15 @@ export class UpdateBoardInfos implements Command break; case EBoardKeyList.KnifeRad: br.KnifeRadius = parseFloat(option[EBoardKeyList.KnifeRad]); + break; + case "grooveAddDepth": + br.GroovesAddDepth = parseFloat(option[i]) || 0; + break; + case "grooveAddLength": + br.GroovesAddLength = parseFloat(option[i]) || 0; + break; + case "grooveAddWidth": + br.GroovesAddWidth = parseFloat(option[i]) || 0; default: break; } diff --git a/src/Add-on/twoD2threeD/Modals/Rec2Br.tsx b/src/Add-on/twoD2threeD/Modals/Rec2Br.tsx index 6c2c3510b..8f72187d2 100644 --- a/src/Add-on/twoD2threeD/Modals/Rec2Br.tsx +++ b/src/Add-on/twoD2threeD/Modals/Rec2Br.tsx @@ -1,45 +1,29 @@ -import { Button, Card, Checkbox, Classes, H5, HTMLSelect, Radio, RadioGroup } from '@blueprintjs/core'; -import { observable } from 'mobx'; +import { Button, Classes } from '@blueprintjs/core'; import { observer } from 'mobx-react'; import React from 'react'; import { Vector3 } from 'three'; import { begin } from 'xaop'; import { app } from '../../../ApplicationServices/Application'; import { EBoardKeyList } from '../../../Common/BoardKeyList'; -import { CheckObjectType } from '../../../Common/CheckoutVaildValue'; import { KeyBoard } from '../../../Common/KeyEnum'; import { ToFixed } from '../../../Common/Utils'; import { Board } from '../../../DatabaseServices/Entity/Board'; import { TemplateRecord } from '../../../DatabaseServices/Template/TemplateRecord'; import { PromptStatus } from '../../../Editor/PromptResult'; import { userConfig } from '../../../Editor/UserConfig'; -import { Input5Or4Component, Notes, SetBoardDataBlock, SetBoardDataItem } from '../../../UI/Components/Board/BoardCommon'; import { BoardModalType } from '../../../UI/Components/Board/BoardModal'; import { ModalFooter, ModalHeader } from '../../../UI/Components/Modal/ModalContainer'; import { ModalState } from '../../../UI/Components/Modal/ModalInterface'; -import { ToasterInput } from '../../../UI/Components/Toaster'; -import { GoodsList, IGoodInfo } from '../../../UI/MaterialEditor/GoodsList'; import '../Modals/Rec2Br.less'; +import { GetOptionState, R2BConfigComponent } from '../R2bConfigComponent'; +import { R2BProcessComponent } from '../R2BProcessComponent'; import { Rec2BrStore } from '../Rec2BrStore'; -enum GetOptionState -{ - GetDistance = 0, - GetBoard = 1, - GetTemplate = 2, -} + @observer export class Rec2BrModal extends React.Component<{ store: Rec2BrStore; }, {}> { - private showShops = observable.box(false); - private startSelect = observable.box(false); - private m_ScaleParameter = [ - ["knifeRadius", "刀半径"], - ["grooveAddLength", "槽加长"], ["grooveAddWidth", "槽加宽"], ["grooveAddDepth", "槽加深"] - ]; - private matPars = [ - ["boardMatName", "板材名"], ["material", "材料"], ["color", "颜色"] - ]; private removeFuncs: Function[] = []; //移除注入 + componentDidMount() { this.removeFuncs.push( @@ -114,17 +98,6 @@ export class Rec2BrModal extends React.Component<{ store: Rec2BrStore; }, {}> app.Editor.MaskManage.ShowMask(); app.Editor.ModalManage.ToggleShow(); }; - private startSelectTemplate = () => - { - this.startSelect.set(true); - }; - private selectGoods = (good: IGoodInfo) => - { - this.props.store.m_Option.boardMatName = good.name;//是否需要更新UIOption - this.props.store.m_Option.material = good.material; - this.props.store.m_Option.color = good.color; - this.showShops.set(false); - }; render() { const store = this.props.store; @@ -144,356 +117,8 @@ export class Rec2BrModal extends React.Component<{ store: Rec2BrStore; }, {}> className={Classes.DIALOG_BODY + " rec2br"} >
- -
柜体参数
-
-
-
- -
- -
- - -
-
背板规则
-
- - - - -
-
前缩
-
- -
-
解析板件名称与板件内缩
-
-
- - { - store.m_Option.isfarLeftVerticalBrName = !store.m_Option.isfarLeftVerticalBrName; - store.UIOption.isfarLeftVerticalBrName = store.m_Option.isfarLeftVerticalBrName; - }} - /> - -
-
- - { - store.m_Option.isfarRightVerticalBrName = !store.m_Option.isfarRightVerticalBrName; - store.UIOption.isfarRightVerticalBrName = store.m_Option.isfarRightVerticalBrName; - }} - /> - -
-
- - { - store.m_Option.istopMostLayerBrName = !store.m_Option.istopMostLayerBrName; - store.UIOption.istopMostLayerBrName = store.m_Option.istopMostLayerBrName; - }} - /> - -
-
- - { - store.m_Option.isbottomMostLayerBrName = !store.m_Option.isbottomMostLayerBrName; - store.UIOption.isbottomMostLayerBrName = store.m_Option.isbottomMostLayerBrName; - }} - /> - -
-
- - { - store.m_Option.isbottomMostBackBrName = !store.m_Option.isbottomMostBackBrName; - store.UIOption.isbottomMostBackBrName = store.m_Option.isbottomMostBackBrName; - }} - /> - -
-
- - { - store.m_Option.isstripeBrName = !store.m_Option.isstripeBrName; - store.UIOption.isstripeBrName = store.m_Option.isstripeBrName; - }} - /> - -
-
-
- 根据背板区分柜体 -
- - { - store.m_Option.isMultiBackBr = e.currentTarget.value === "1"; - store.UIOption.isMultiBackBr = store.m_Option.isMultiBackBr; - }} - > - - - - -
-
- - { - store.m_Option.iscabinetName = !store.m_Option.iscabinetName; - store.UIOption.iscabinetName = store.m_Option.iscabinetName; - }} - /> - -
-
-
- -
材料信息
-
- -
-
- -
- -
-
- - - { - this.showShops.get() && - } -
- -
-
封边
-
- { - - } -
-
备注
-
- -
-
-
- - { - store.m_Option.backBrUseTemplate = !store.m_Option.backBrUseTemplate; - store.UIOption.backBrUseTemplate = store.m_Option.backBrUseTemplate; - }} - /> - -
-
- -
- {/* - - */} + +
diff --git a/src/Add-on/twoD2threeD/Polyline2Board.ts b/src/Add-on/twoD2threeD/Polyline2Board.ts index bcc443e1d..2f3764a30 100644 --- a/src/Add-on/twoD2threeD/Polyline2Board.ts +++ b/src/Add-on/twoD2threeD/Polyline2Board.ts @@ -19,6 +19,10 @@ import { Rec2BrStore } from "./Rec2BrStore"; import { TopPanelStore } from "../../UI/Store/TopPanelStore"; import { AppConfirm } from "../../UI/Components/Common/Confirm"; import { Buy2To3 } from "../../Common/HostUrl"; +import { IUpdateBoardInfosOption } from "../../UI/Components/Board/UpdateBoardInfointerface"; +import { userConfigStore } from "../../UI/Store/UserConfigStore"; +import { BoardModalType } from "../../UI/Components/Board/BoardModal"; +import { EBoardKeyList } from "../../Common/BoardKeyList"; const MaxBoardDistance = 200;//左右侧板,顶底板距离边缘的最大距离 @@ -59,7 +63,7 @@ export class Polyline2Board implements Command if (ss.Status === PromptStatus.Cancel) return; let ens = ss.SelectSet.SelectEntityList as Polyline[]; - this.Doit(ens); + await this.Doit(ens); }); }; boardThick: number; //板件厚度. @@ -118,7 +122,7 @@ export class Polyline2Board implements Command this.maxThickness = option.maxThickness; } //绘制 传入曲线id表 - Doit(pls: Polyline[]) + async Doit(pls: Polyline[]) { //默认认为用户传进来的pls都平行,都在一个平面内 if (!pls || pls.length === 0) return; @@ -199,13 +203,6 @@ export class Polyline2Board implements Command br.ApplyMatrix(m); }; - //切割 - for (let br of layerVerBoards) - { - br.Subtract(backBoards); - //柜体内缩 - CurtailFunc(br, this.fontDis); - } for (let br of tzdj) { CurtailFunc(br, this.fontDis, false); @@ -213,7 +210,8 @@ export class Polyline2Board implements Command //修改材料数据,封边数据,备注数据 let storeOption = this.store.m_Option; - allBoards.forEach((b) => + + for (let b of allBoards) { b.KnifeRadius = this.knifeRadius; b.GroovesAddDepth = this.grooveDepth; @@ -222,12 +220,15 @@ export class Polyline2Board implements Command b.BoardProcessOption.material = storeOption.material; b.BoardProcessOption.color = storeOption.color; b.BoardProcessOption.boardName = storeOption.boardMatName; + b.BoardProcessOption.roomName = storeOption.roomName; b.BoardProcessOption.drillType = storeOption.drillType; + b.BoardProcessOption.highDrill.fill(storeOption.drillType); b.BoardProcessOption.sealedUp = storeOption.sealedUp; b.BoardProcessOption.sealedDown = storeOption.sealedDown; b.BoardProcessOption.sealedLeft = storeOption.sealedLeft; b.BoardProcessOption.sealedRight = storeOption.sealedRight; + let remarks: [string, string][] = []; for (let d of storeOption.remarks) { @@ -235,7 +236,7 @@ export class Polyline2Board implements Command remarks.push([d[0], d[1]]); } b.BoardProcessOption.remarks = remarks; - }); + } let cabGroup: Board[][] = []; @@ -517,6 +518,60 @@ export class Polyline2Board implements Command } } //#endregion + + //根据板名修改属性 + let nameOption: IUpdateBoardInfosOption; + let config: { [key: string]: IUpdateBoardInfosOption; }; + if (storeOption.useBrName) + { + let configs = await userConfigStore.GetAllConfigs(BoardModalType.UpdateBoardInfo); + config = configs[storeOption.configName]; + } + + if (config) + for (let b of allBoards) + { + nameOption = config.option[b.Name]; + + if (!nameOption) continue; + b.GroovesAddDepth = parseFloat(nameOption.grooveAddDepth) || 0; + b.GroovesAddLength = parseFloat(nameOption.grooveAddLength) || 0; + b.GroovesAddWidth = parseFloat(nameOption.grooveAddWidth) || 0; + + b.BoardProcessOption[EBoardKeyList.BrMat] = nameOption[EBoardKeyList.BrMat]; + b.BoardProcessOption[EBoardKeyList.Mat] = nameOption[EBoardKeyList.Mat]; + b.BoardProcessOption[EBoardKeyList.Color] = nameOption[EBoardKeyList.Color]; + + b.BoardProcessOption[EBoardKeyList.Lines] = nameOption[EBoardKeyList.Lines]; + b.BoardProcessOption[EBoardKeyList.CabinetName] = nameOption[EBoardKeyList.CabinetName]; + b.BoardProcessOption[EBoardKeyList.BigHole] = nameOption[EBoardKeyList.BigHole]; + b.BoardProcessOption[EBoardKeyList.ComposingFace] = nameOption[EBoardKeyList.ComposingFace]; + b.BoardProcessOption.frontDrill = nameOption.upDownDrill[0]; + b.BoardProcessOption.backDrill = nameOption.upDownDrill[1]; + b.KnifeRadius = parseFloat(nameOption.knifeRadius); + b.BoardProcessOption.roomName = nameOption.roomName; + b.BoardProcessOption.drillType = nameOption.drillType; + b.BoardProcessOption.highDrill.fill(nameOption.drillType); + b.BoardProcessOption.sealedUp = nameOption.sealedUp; + b.BoardProcessOption.sealedDown = nameOption.sealedDown; + b.BoardProcessOption.sealedLeft = nameOption.sealedLeft; + b.BoardProcessOption.sealedRight = nameOption.sealedRight; + + let remarks: [string, string][] = []; + for (let d of nameOption.remarks) + { + if (d[0] && d[1]) + remarks.push([d[0], d[1]]); + } + b.BoardProcessOption.remarks = remarks; + } + + for (let br of layerVerBoards) + { + br.Subtract(backBoards); + //柜体内缩 + CurtailFunc(br, this.fontDis); + } } DrawBoard(pls: Polyline[], isBack = false, color?: number): Board[] diff --git a/src/Add-on/twoD2threeD/R2BCommon.tsx b/src/Add-on/twoD2threeD/R2BCommon.tsx new file mode 100644 index 000000000..d51e76574 --- /dev/null +++ b/src/Add-on/twoD2threeD/R2BCommon.tsx @@ -0,0 +1,65 @@ +import * as React from 'react'; +import { Checkbox, Classes } from '@blueprintjs/core'; +import { Rec2BrStore } from './Rec2BrStore'; +import { observable } from 'mobx'; +import { observer } from 'mobx-react'; +import { userConfigStore } from '../../UI/Store/UserConfigStore'; +import { BoardModalType } from '../../UI/Components/Board/BoardModal'; +import { arrayRemove } from '../../Common/ArrayExt'; + + + + +export interface ISelectBrConfigNameProps +{ + store: Rec2BrStore; +} + +@observer +export class SelectBrConfigName extends React.Component { + @observable private configNames: string[] = []; + async componentDidMount() + { + let configs = await userConfigStore.GetAllConfigs(BoardModalType.UpdateBoardInfo); + if (!configs) + return; + let names = [...Object.keys(configs)]; + this.configNames.push(...names); + if (!names.includes(this.props.store.m_Option.configName)) + this.configNames.unshift(""); + } + public render() + { + const store = this.props.store; + return ( + <> + store.m_Option.useBrName = !store.m_Option.useBrName} + /> + + + ); + } + private handleChange = (e: React.ChangeEvent) => + { + const option = this.props.store.m_Option; + option.configName = e.target.value; + if (e.target.value !== "") + arrayRemove(this.configNames, ""); + }; +} diff --git a/src/Add-on/twoD2threeD/R2BProcessComponent.tsx b/src/Add-on/twoD2threeD/R2BProcessComponent.tsx new file mode 100644 index 000000000..7cce9cac0 --- /dev/null +++ b/src/Add-on/twoD2threeD/R2BProcessComponent.tsx @@ -0,0 +1,164 @@ +import { Card, Checkbox, Classes, H5, HTMLSelect } from "@blueprintjs/core"; +import { observable } from 'mobx'; +import { observer } from 'mobx-react'; +import * as React from 'react'; +import { CheckObjectType } from "../../Common/CheckoutVaildValue"; +import { userConfig } from '../../Editor/UserConfig'; +import { Input5Or4Component, Notes, SetBoardDataBlock, SetBoardDataItem } from "../../UI/Components/Board/BoardCommon"; +import { GoodsList, IGoodInfo } from '../../UI/MaterialEditor/GoodsList'; +import { SelectBrConfigName } from './R2BCommon'; +import { GetOptionState } from './R2bConfigComponent'; +import { Rec2BrStore } from './Rec2BrStore'; + +export interface IR2BProcessComponentProps +{ + store: Rec2BrStore; + getOption: (state: GetOptionState) => void; +} + +@observer +export class R2BProcessComponent extends React.Component { + private showShops = observable.box(false); + private m_ScaleParameter = [ + ["knifeRadius", "刀半径"], + ["grooveAddLength", "槽加长"], ["grooveAddWidth", "槽加宽"], ["grooveAddDepth", "槽加深"] + ]; + private matPars = [ + ["boardMatName", "板材名"], ["material", "材料"], ["color", "颜色"] + ]; + public render() + { + const store = this.props.store; + const selectOptions = userConfig.DrillConfigs.size > 0 ? [...userConfig.DrillConfigs.keys(), "不排"] : []; + + return ( + +
材料信息
+
+ +
+
+ +
+ +
+
+ + + { + this.showShops.get() && + } +
+ +
+
封边
+
+ { + + } +
+
备注
+
+ +
+ +
+
+ + { + store.m_Option.backBrUseTemplate = !store.m_Option.backBrUseTemplate; + store.UIOption.backBrUseTemplate = store.m_Option.backBrUseTemplate; + }} + /> + +
+
+ +
+ ); + } + private selectGoods = (good: IGoodInfo) => + { + this.props.store.m_Option.boardMatName = good.name;//是否需要更新UIOption + this.props.store.m_Option.material = good.material; + this.props.store.m_Option.color = good.color; + this.showShops.set(false); + }; +} diff --git a/src/Add-on/twoD2threeD/R2bConfigComponent.tsx b/src/Add-on/twoD2threeD/R2bConfigComponent.tsx new file mode 100644 index 000000000..4176207f2 --- /dev/null +++ b/src/Add-on/twoD2threeD/R2bConfigComponent.tsx @@ -0,0 +1,262 @@ +import { Rec2BrStore } from "./Rec2BrStore"; +import { observer } from "mobx-react"; +import React from 'react'; +import { SetBoardDataItem, SetBoardDataBlock } from "../../UI/Components/Board/BoardCommon"; +import { CheckObjectType } from "../../Common/CheckoutVaildValue"; +import { Card, H5, Checkbox, RadioGroup, Radio } from "@blueprintjs/core"; +import { ToasterInput } from "../../UI/Components/Toaster"; + + +export enum GetOptionState +{ + GetDistance = 0, + GetBoard = 1, + GetTemplate = 2, +} + +interface IR2BConfigComponentProps +{ + store: Rec2BrStore; + getOption: (state: GetOptionState) => void; +} + + +@observer +export class R2BConfigComponent extends React.Component +{ + render() + { + const store = this.props.store; + + return ( + +
柜体参数
+
+
+
+ +
+ +
+ + +
+
背板规则
+
+ + + + +
+
前缩
+
+ +
+
解析板件名称与板件内缩
+
+
+ + { + store.m_Option.isfarLeftVerticalBrName = !store.m_Option.isfarLeftVerticalBrName; + store.UIOption.isfarLeftVerticalBrName = store.m_Option.isfarLeftVerticalBrName; + }} + /> + +
+
+ + { + store.m_Option.isfarRightVerticalBrName = !store.m_Option.isfarRightVerticalBrName; + store.UIOption.isfarRightVerticalBrName = store.m_Option.isfarRightVerticalBrName; + }} + /> + +
+
+ + { + store.m_Option.istopMostLayerBrName = !store.m_Option.istopMostLayerBrName; + store.UIOption.istopMostLayerBrName = store.m_Option.istopMostLayerBrName; + }} + /> + +
+
+ + { + store.m_Option.isbottomMostLayerBrName = !store.m_Option.isbottomMostLayerBrName; + store.UIOption.isbottomMostLayerBrName = store.m_Option.isbottomMostLayerBrName; + }} + /> + +
+
+ + { + store.m_Option.isbottomMostBackBrName = !store.m_Option.isbottomMostBackBrName; + store.UIOption.isbottomMostBackBrName = store.m_Option.isbottomMostBackBrName; + }} + /> + +
+
+ + { + store.m_Option.isstripeBrName = !store.m_Option.isstripeBrName; + store.UIOption.isstripeBrName = store.m_Option.isstripeBrName; + }} + /> + +
+
+
+ 根据背板区分柜体 +
+ + { + store.m_Option.isMultiBackBr = e.currentTarget.value === "1"; + store.UIOption.isMultiBackBr = store.m_Option.isMultiBackBr; + }} + > + + + + +
+
+ + { + store.m_Option.iscabinetName = !store.m_Option.iscabinetName; + store.UIOption.iscabinetName = store.m_Option.iscabinetName; + }} + /> + +
+
+
+ ); + } +} diff --git a/src/Add-on/twoD2threeD/Rec2BrStore.ts b/src/Add-on/twoD2threeD/Rec2BrStore.ts index bf7ec6ae9..6492ee1b8 100644 --- a/src/Add-on/twoD2threeD/Rec2BrStore.ts +++ b/src/Add-on/twoD2threeD/Rec2BrStore.ts @@ -1,14 +1,15 @@ import { BoardStore } from "../../UI/Store/BoardStore"; -import { IBaseOption, IGrooveOption } from "../../UI/Store/BoardInterface"; +import { IBaseOption, IGrooveOption, IUiOption } from "../../UI/Store/BoardInterface"; import { CheckoutValid, CheckObjectType } from "../../Common/CheckoutVaildValue"; import { DataAdapter } from "../../Common/DataAdapter"; import { TemplateRecord } from "../../DatabaseServices/Template/TemplateRecord"; import { observable } from "mobx"; +import { EBoardKeyList } from "../../Common/BoardKeyList"; export class Rec2BrStore extends BoardStore { @observable m_Option: IRec2BrOption; - protected m_UiOption; + protected m_UiOption: IUiOption; constructor() { super(); @@ -17,6 +18,7 @@ export class Rec2BrStore extends BoardStore private GetDefaultOption() { let originOption: IRec2BrOption = { + version: 1, cabinetDeep: 400, cabinetBrThick: 18, cabinetCurtail: 0, @@ -67,6 +69,8 @@ export class Rec2BrStore extends BoardStore backBrTemplate: null, remarks: Array.from({ length: 12 }, () => ["", ""]), maxThickness: 20, + useBrName: false, + configName: "" }; return originOption; } @@ -134,7 +138,7 @@ interface IRec2BrOption extends IBaseOption //槽加深 //槽加宽 grooveOption: IGrooveOption; - roomName: string;//房间名 + [EBoardKeyList.RoomName]: string;//房间名 boardMatName: string;//板材名 material: string;//材料 color: string;//颜色 @@ -147,4 +151,6 @@ interface IRec2BrOption extends IBaseOption //备注 remarks: [string, string][]; maxThickness: number; + useBrName: boolean; //使用板件名配置 + configName: string; } diff --git a/src/Editor/DefaultConfig.ts b/src/Editor/DefaultConfig.ts index 0a3fce3db..2d3ba279d 100644 --- a/src/Editor/DefaultConfig.ts +++ b/src/Editor/DefaultConfig.ts @@ -540,7 +540,6 @@ export const DefaultUpdateInfoOption: IUpdateBoardInfosOption = { [EBoardKeyList.BigHole]: FaceDirection.Front, [EBoardKeyList.DrillType]: "", [EBoardKeyList.ComposingFace]: ComposingType.Positive, - highDrill: [], upDownDrill: [true, true], [EBoardKeyList.UpSealed]: "1",//封边上下左右 [EBoardKeyList.DownSealed]: "1", @@ -548,24 +547,30 @@ export const DefaultUpdateInfoOption: IUpdateBoardInfosOption = { [EBoardKeyList.RightSealed]: "1", [EBoardKeyList.KnifeRad]: "3", remarks: Array.from({ length: 10 }, () => ["", ""]), + [EBoardKeyList.BrMat]: "", + [EBoardKeyList.Mat]: "", + [EBoardKeyList.Color]: "", + grooveAddDepth: "0", + grooveAddLength: "0", + grooveAddWidth: "0", condition: { [EBoardKeyList.RoomName]: false, [EBoardKeyList.CabinetName]: false, - [EBoardKeyList.Lines]: false, - [EBoardKeyList.BigHole]: false, - [EBoardKeyList.DrillType]: false, - [EBoardKeyList.ComposingFace]: false, - [EBoardKeyList.UpSealed]: false, - [EBoardKeyList.DownSealed]: false, - [EBoardKeyList.LeftSealed]: false, - [EBoardKeyList.RightSealed]: false, - upDrill: false, - downDrill: false, - leftDrill: false, - rightDrill: false, - useZhengFanDrill: false, - remarks: false, - [EBoardKeyList.KnifeRad]: false, + [EBoardKeyList.Lines]: true, + [EBoardKeyList.BigHole]: true, + [EBoardKeyList.DrillType]: true, + [EBoardKeyList.ComposingFace]: true, + [EBoardKeyList.UpSealed]: true, + [EBoardKeyList.DownSealed]: true, + [EBoardKeyList.LeftSealed]: true, + [EBoardKeyList.RightSealed]: true, + useZhengFanDrill: true, + remarks: true, + [EBoardKeyList.KnifeRad]: true, + [EBoardKeyList.Mat]: true, + grooveAddDepth: true, + grooveAddLength: true, + grooveAddWidth: true, } }; diff --git a/src/UI/Components/Board/BoardFindCommon.tsx b/src/UI/Components/Board/BoardFindCommon.tsx index 6d2040a83..f2e236d46 100644 --- a/src/UI/Components/Board/BoardFindCommon.tsx +++ b/src/UI/Components/Board/BoardFindCommon.tsx @@ -1,8 +1,12 @@ -import { Button, Checkbox, Classes, HTMLSelect } from '@blueprintjs/core'; +import { Button, Checkbox, Classes, HTMLSelect, Intent } from '@blueprintjs/core'; import { observer } from 'mobx-react'; import * as React from 'react'; import { safeEval } from '../../../Common/eval'; import { IBoardFindOption } from '../../Store/BoardFindInterface'; +import { EBoardKeyList } from '../../../Common/BoardKeyList'; +import { IUpdateBoardInfosOption } from './UpdateBoardInfointerface'; +import { observable } from 'mobx'; +import { GoodsList, IGoodInfo } from '../../MaterialEditor/GoodsList'; export interface IBoardProps { @@ -122,3 +126,87 @@ export class BoardFindSelectItem extends React.Component { ); } } + + +interface IMatColorComProps +{ + option: IBoardFindOption | IUpdateBoardInfosOption; + getBoardOption: () => void; + change?: () => void; + hasCompare: boolean; +} + +@observer +export class MatColorCom extends React.Component +{ + showShops = observable.box(false); + render() + { + const { option, hasCompare } = this.props; + return ( +
+
+
+ 板材 + { + hasCompare && + { + option.condition.material = !option.condition.material; + if (this.props.change) + this.props.change(); + }} + /> + { + hasCompare && + + +
+ { + this.showShops.get() && + } +
+ ); + } + private handleSelectGoods = (good: IGoodInfo) => + { + const option = this.props.option; + option[EBoardKeyList.BrMat] = good.name; + option[EBoardKeyList.Mat] = good.material; + option[EBoardKeyList.Color] = good.color; + this.showShops.set(false); + }; +} diff --git a/src/UI/Components/Board/BoardFindModify.tsx b/src/UI/Components/Board/BoardFindModify.tsx index b681020bb..87070fb92 100644 --- a/src/UI/Components/Board/BoardFindModify.tsx +++ b/src/UI/Components/Board/BoardFindModify.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { Classes, Button, H5, Checkbox, HTMLSelect, Popover, Card, Intent, Position } from '@blueprintjs/core'; import { inject, observer } from 'mobx-react'; import { BoardFindStore } from '../../Store/BoardFindModifyStore'; -import { BoardFindItem, BoardFindSelectItem } from './BoardFindCommon'; +import { BoardFindItem, BoardFindSelectItem, MatColorCom } from './BoardFindCommon'; import { BoardModalType } from './BoardModal'; import { ModalState } from '../Modal/ModalInterface'; import { EFindType, ECompareType, DRILL_KEYS } from '../../Store/BoardFindInterface'; @@ -520,53 +520,12 @@ export default class BoardFindModifyModal extends React.Component<{ store?: Boar />
-
-
-
- 板材 - - { - option.condition.material = !option.condition.material; - this.handleIsSelectAll(); - }} - /> - - - -
- { - this.showShops.get() && - } -
+ this.getBoardOption(EBoardKeyList.Mat, "选择板件获取板材信息")} + change={() => this.handleIsSelectAll()} + /> store.UpdateBoardName(e.target.value)} + onChange={(e) => store.currentBoardName = e.target.value} onSelect={val => store.UpdateBoardName(val)} />
); }) } + this.getBoardOption(undefined)} + hasCompare={false} + />
+ { + [["grooveAddLength", "槽加长"], ["grooveAddWidth", "槽加宽"], ["grooveAddDepth", "槽加深"]].map(([k, v]) => + { + return ( +
+ condition[k] = !condition[k]} + /> + +
+ ); + }) + } +
@@ -214,7 +246,7 @@ export class UpdateBoardInfoModal extends React.Component) => { let isAll = !!(e.currentTarget as HTMLButtonElement).getAttribute('data-isAll'); - this.props.store.SaveConfig(); + this.props.store.UpdateCurrentOption(); app.Editor.ModalManage.DestoryAndExec({ Status: ModalState.Ok, Data: { isAll } }); }; private addName = () => @@ -252,7 +284,35 @@ export class UpdateBoardInfoModal extends React.Component { - let brRes = await app.Editor.GetEntity({ Msg: "选择板件", Filter: { filterTypes: [Board] } }); + let brRes = await app.Editor.GetEntity({ Msg: "选择板件", NotNone: true, Filter: { filterTypes: [Board] } }); if (brRes.Status === PromptStatus.Cancel) return; let br = brRes.Entity as Board; - store.m_Option[key] = br.BoardProcessOption[key]; + if (key) + store.m_Option[key] = br.BoardProcessOption[key]; + else + { + //选取材质 + store.m_Option[EBoardKeyList.BrMat] = br.BoardProcessOption[EBoardKeyList.BrMat]; + store.m_Option[EBoardKeyList.Mat] = br.BoardProcessOption[EBoardKeyList.Mat]; + store.m_Option[EBoardKeyList.Color] = br.BoardProcessOption[EBoardKeyList.Color]; + } }); app.Editor.ModalManage.ToggleShow(); app.Editor.MaskManage.ShowMask(); diff --git a/src/UI/Components/Modal/ModalStyle/UpdateBoardInfo.less b/src/UI/Components/Modal/ModalStyle/UpdateBoardInfo.less index f88677610..1d55b4de6 100644 --- a/src/UI/Components/Modal/ModalStyle/UpdateBoardInfo.less +++ b/src/UI/Components/Modal/ModalStyle/UpdateBoardInfo.less @@ -83,4 +83,26 @@ .notes { width: 22vmin; } + + .mat-color { + &>div:first-child>div { + display: flex; + + &>span { + padding-left: 27px; + width: 70px; + } + } + + .bp3-control { + margin-bottom: 0; + } + + button { + width: 40px; + height: 54px; + padding: 0; + text-align: center; + } + } } diff --git a/src/UI/Css/common.less b/src/UI/Css/common.less index 0e48c52ec..1a121c0a4 100644 --- a/src/UI/Css/common.less +++ b/src/UI/Css/common.less @@ -30,6 +30,8 @@ li { padding: 2px 0; + overflow: hidden; + text-overflow: ellipsis; } li:hover { diff --git a/src/UI/Store/UpdateBoardInfoStore.ts b/src/UI/Store/UpdateBoardInfoStore.ts index 0490f9713..02ba02a5c 100644 --- a/src/UI/Store/UpdateBoardInfoStore.ts +++ b/src/UI/Store/UpdateBoardInfoStore.ts @@ -32,17 +32,32 @@ export class UpdateBoardInfosStore extends BoardStore for (let bn of BNS) { const option = this.GetDefaultOption(); - if (bn === "地脚线") + + switch (bn) { - option.lines = LinesType.Reverse; - option.bigHoleDir = FaceDirection.Back; + case "地脚线": + option.lines = LinesType.Reverse; + option.bigHoleDir = FaceDirection.Back; + break; + case "右侧板": + option.bigHoleDir = FaceDirection.Back; + break; + case "底板": + case "背板": + option.bigHoleDir = FaceDirection.Back; + default: + break; } - else if (bn === "右侧板") - option.bigHoleDir = FaceDirection.Back; + this.nameOptionMap.set(bn, option); } this.UpdateBoardName("左侧板"); } + UpdateCurrentOption() + { + if (this.nameOptionMap.has(this.currentBoardName)) + Object.assign(this.nameOptionMap.get(this.currentBoardName), this.m_Option); + } UpdateBoardName(name?: string) { if (!name) name = this.currentBoardName; @@ -52,7 +67,7 @@ export class UpdateBoardInfosStore extends BoardStore SaveConfig() { const cof: IConfigOption = {}; - Object.assign(this.nameOptionMap.get(this.currentBoardName), this.m_Option); + this.UpdateCurrentOption(); cof.option = toJS(this.nameOptionMap, { exportMapsAsObjects: true }); return cof; } diff --git a/src/UI/Store/UserConfigStore.ts b/src/UI/Store/UserConfigStore.ts index e31db2d4b..ec8f0f22c 100644 --- a/src/UI/Store/UserConfigStore.ts +++ b/src/UI/Store/UserConfigStore.ts @@ -204,7 +204,7 @@ export class UserConfigStore extends Singleton } } } - async GetAllConfigs(key: BoardModalType | string, isChangeRuleMap = true): Promise + async GetAllConfigs(key: BoardModalType | string, isChangeRuleMap = true): Promise | undefined> { let configs: IConfigOption = appCache.get(key); if (!configs)