mirror of https://gitee.com/cf-fz/WebCAD.git
!1001 修复:根据板名改板件信息问题
parent
cf69cd0a0d
commit
b062b9135a
@ -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<ISelectBrConfigNameProps> {
|
||||
@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 (
|
||||
<>
|
||||
<Checkbox
|
||||
label="使用板件名配置"
|
||||
inline
|
||||
checked={store.m_Option.useBrName}
|
||||
onChange={() => store.m_Option.useBrName = !store.m_Option.useBrName}
|
||||
/>
|
||||
<select
|
||||
className={Classes.SELECT}
|
||||
value={store.m_Option.configName}
|
||||
onChange={this.handleChange}
|
||||
style={{ maxWidth: 80 }}
|
||||
>
|
||||
{
|
||||
this.configNames.map(n =>
|
||||
{
|
||||
return <option value={n} key={n} >{n}</option>;
|
||||
})
|
||||
}
|
||||
</select>
|
||||
</>
|
||||
);
|
||||
}
|
||||
private handleChange = (e: React.ChangeEvent<HTMLSelectElement>) =>
|
||||
{
|
||||
const option = this.props.store.m_Option;
|
||||
option.configName = e.target.value;
|
||||
if (e.target.value !== "")
|
||||
arrayRemove(this.configNames, "");
|
||||
};
|
||||
}
|
@ -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<IR2BProcessComponentProps> {
|
||||
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 (
|
||||
<Card>
|
||||
<H5>材料信息</H5>
|
||||
<div>
|
||||
<SetBoardDataBlock
|
||||
type={CheckObjectType.R2B}
|
||||
pars={this.m_ScaleParameter}
|
||||
option={store.m_Option.grooveOption}
|
||||
uiOption={store.UIOption.grooveOption}
|
||||
className="flexWrap"
|
||||
/>
|
||||
<div className="flex br-mat">
|
||||
<div>
|
||||
<SetBoardDataItem
|
||||
type={CheckObjectType.R2B}
|
||||
optKey="roomName"
|
||||
option={store.m_Option}
|
||||
uiOption={store.UIOption}
|
||||
title="房间名"
|
||||
placeHolder="输入房间名"
|
||||
/>
|
||||
</div>
|
||||
<button
|
||||
style={{
|
||||
minHeight: 18,
|
||||
height: 18,
|
||||
padding: 0,
|
||||
fontSize: 8
|
||||
}}
|
||||
className="bp3-button bp3-intent-success"
|
||||
onClick={() => this.props.getOption(GetOptionState.GetBoard)}
|
||||
>拾取</button>
|
||||
</div>
|
||||
<div className="flex br-mat">
|
||||
<SetBoardDataBlock
|
||||
type={CheckObjectType.R2B}
|
||||
pars={this.matPars}
|
||||
option={store.m_Option}
|
||||
uiOption={store.UIOption}
|
||||
isInline={true}
|
||||
/>
|
||||
<button
|
||||
style={{ width: "2rem" }}
|
||||
className="bp3-button bp3-intent-success"
|
||||
onClick={() => this.showShops.set(true)}
|
||||
>选择</button>
|
||||
{
|
||||
this.showShops.get() && <GoodsList
|
||||
open={this.showShops}
|
||||
select={this.selectGoods}
|
||||
/>
|
||||
}
|
||||
</div>
|
||||
<label className="bp3-label bp3-inline .modifier">
|
||||
<span>排钻</span>
|
||||
<HTMLSelect
|
||||
className="select-drillType"
|
||||
value={store.m_Option.drillType}
|
||||
style={{
|
||||
padding: "0 5px",
|
||||
width: "100%",
|
||||
// outline: this.state.isDanger && "1px red solid"
|
||||
}}
|
||||
options={selectOptions}
|
||||
onChange={(e) =>
|
||||
{
|
||||
store.m_Option.drillType = e.target.value;
|
||||
store.UIOption.drillType = store.m_Option.drillType;
|
||||
}}
|
||||
// onFocus={() => { if (this.props.onFocus) this.props.onFocus(); }}
|
||||
/>
|
||||
</label>
|
||||
</div>
|
||||
<H5>封边</H5>
|
||||
<div>
|
||||
{
|
||||
<Input5Or4Component
|
||||
type={CheckObjectType.R2B}
|
||||
showDirectionIcon={true}
|
||||
hasCenter={false}
|
||||
optKey=""
|
||||
upKey="sealedUp"
|
||||
downKey="sealedDown"
|
||||
leftKey="sealedLeft"
|
||||
rightKey="sealedRight"
|
||||
option={store.m_Option}
|
||||
uiOption={store.UIOption}
|
||||
/>
|
||||
}
|
||||
</div>
|
||||
<H5>备注</H5>
|
||||
<div className={Classes.CARD + " note-card"} style={{ height: 250, overflow: "auto", marginBottom: 10 }}>
|
||||
<Notes remarks={store.m_Option.remarks} />
|
||||
</div>
|
||||
<SelectBrConfigName store={store} />
|
||||
<div>
|
||||
<div style={{ display: "flex", flexDirection: "row", justifyContent: "space-between", paddingTop: 10 }}>
|
||||
<Checkbox
|
||||
checked={store.m_Option.backBrUseTemplate}
|
||||
label={"背板使用模板"}
|
||||
onChange={() =>
|
||||
{
|
||||
store.m_Option.backBrUseTemplate = !store.m_Option.backBrUseTemplate;
|
||||
store.UIOption.backBrUseTemplate = store.m_Option.backBrUseTemplate;
|
||||
}}
|
||||
/>
|
||||
<button
|
||||
style={{
|
||||
minHeight: 18,
|
||||
height: 18,
|
||||
padding: 0,
|
||||
fontSize: 8,
|
||||
width: "8rem"
|
||||
}}
|
||||
className="bp3-button bp3-intent-success"
|
||||
onClick={() => this.props.getOption(GetOptionState.GetTemplate)}
|
||||
>选择模板</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</Card>
|
||||
);
|
||||
}
|
||||
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);
|
||||
};
|
||||
}
|
@ -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<IR2BConfigComponentProps>
|
||||
{
|
||||
render()
|
||||
{
|
||||
const store = this.props.store;
|
||||
|
||||
return (
|
||||
<Card>
|
||||
<H5>柜体参数</H5>
|
||||
<div>
|
||||
<div className="flex br-mat">
|
||||
<div>
|
||||
<SetBoardDataItem
|
||||
type={CheckObjectType.R2B}
|
||||
optKey="cabinetDeep"
|
||||
option={store.m_Option}
|
||||
uiOption={store.UIOption}//style={{ display: "inline-flex", width: "65%" }}
|
||||
title="柜深"
|
||||
/>
|
||||
</div>
|
||||
<button
|
||||
style={{
|
||||
minHeight: 18,
|
||||
height: 18,
|
||||
padding: 0,
|
||||
fontSize: 8
|
||||
}}
|
||||
className="bp3-button bp3-intent-success"
|
||||
onClick={() => this.props.getOption(GetOptionState.GetDistance)}
|
||||
>拾取</button>
|
||||
</div>
|
||||
<SetBoardDataItem
|
||||
type={CheckObjectType.R2B}
|
||||
optKey="cabinetCurtail"
|
||||
option={store.m_Option}
|
||||
uiOption={store.UIOption}
|
||||
title="柜体内缩"
|
||||
/>
|
||||
<SetBoardDataItem
|
||||
type={CheckObjectType.R2B}
|
||||
optKey="maxThickness"
|
||||
option={store.m_Option}
|
||||
uiOption={store.UIOption}
|
||||
title="最大板厚"
|
||||
/>
|
||||
</div>
|
||||
<H5>背板规则</H5>
|
||||
<div className="flex" style={{ flexDirection: "column" }}>
|
||||
<SetBoardDataBlock
|
||||
type={CheckObjectType.R2B}
|
||||
className="flexWrap"
|
||||
pars={[["backBrThick", "板厚"]]}
|
||||
option={store.m_Option}
|
||||
uiOption={store.UIOption}
|
||||
/>
|
||||
<SetBoardDataBlock
|
||||
type={CheckObjectType.R2B}
|
||||
className="flexWrap"
|
||||
pars={[["backBrBiggerThanHeight", "大于高"], ["backBrBiggerThanWidth", "大于宽"]]}
|
||||
option={store.m_Option}
|
||||
uiOption={store.UIOption}
|
||||
/>
|
||||
<SetBoardDataItem
|
||||
type={CheckObjectType.R2B}
|
||||
optKey="backBrFrontMove"
|
||||
option={store.m_Option}
|
||||
uiOption={store.UIOption}
|
||||
title="背板前移"
|
||||
/>
|
||||
<SetBoardDataBlock
|
||||
type={CheckObjectType.R2B}
|
||||
className="flexWrap"
|
||||
pars={[["backBrLeftExtend", "左延伸"], ["backBrRightExtend", "右延伸"], ["backBrUpExtend", "上延伸"], ["backBrDownExtend", "下延伸"]]}
|
||||
option={store.m_Option}
|
||||
uiOption={store.UIOption}
|
||||
/>
|
||||
</div>
|
||||
<H5>前缩</H5>
|
||||
<div className="flex" style={{}}>
|
||||
<SetBoardDataBlock
|
||||
type={CheckObjectType.R2B}
|
||||
className="flexWrap"
|
||||
pars={[["verticalBrShrink", "立板"], ["layerBrShrink", "层板"], ["topBrShrink", "顶板"], ["bottomBrShrink", "底板"], ["groundLineBrShrink", "地脚"]]}
|
||||
option={store.m_Option}
|
||||
uiOption={store.UIOption}
|
||||
/>
|
||||
</div>
|
||||
<H5>解析板件名称与板件内缩</H5>
|
||||
<div className="flex" style={{ flexDirection: "column" }}>
|
||||
<div style={{ display: "flex", flexDirection: "row", justifyContent: "space-between" }}>
|
||||
<Checkbox
|
||||
checked={store.m_Option.isfarLeftVerticalBrName}
|
||||
label={"最左侧立板"}
|
||||
onChange={() =>
|
||||
{
|
||||
store.m_Option.isfarLeftVerticalBrName = !store.m_Option.isfarLeftVerticalBrName;
|
||||
store.UIOption.isfarLeftVerticalBrName = store.m_Option.isfarLeftVerticalBrName;
|
||||
}}
|
||||
/>
|
||||
<ToasterInput
|
||||
type={CheckObjectType.R2B}
|
||||
optKey="farLeftVerticalBrName"
|
||||
option={store.m_Option}
|
||||
uiOption={store.UIOption}
|
||||
inline={true}
|
||||
/>
|
||||
</div>
|
||||
<div style={{ display: "flex", flexDirection: "row", justifyContent: "space-between" }}>
|
||||
<Checkbox
|
||||
checked={store.m_Option.isfarRightVerticalBrName}
|
||||
label={"最右侧立板"}
|
||||
onChange={() =>
|
||||
{
|
||||
store.m_Option.isfarRightVerticalBrName = !store.m_Option.isfarRightVerticalBrName;
|
||||
store.UIOption.isfarRightVerticalBrName = store.m_Option.isfarRightVerticalBrName;
|
||||
}}
|
||||
/>
|
||||
<ToasterInput
|
||||
type={CheckObjectType.R2B}
|
||||
optKey="farRightVerticalBrName"
|
||||
option={store.m_Option}
|
||||
uiOption={store.UIOption}
|
||||
inline={true}
|
||||
/>
|
||||
</div>
|
||||
<div style={{ display: "flex", flexDirection: "row", justifyContent: "space-between" }}>
|
||||
<Checkbox
|
||||
checked={store.m_Option.istopMostLayerBrName}
|
||||
label={"最顶层板"}
|
||||
onChange={() =>
|
||||
{
|
||||
store.m_Option.istopMostLayerBrName = !store.m_Option.istopMostLayerBrName;
|
||||
store.UIOption.istopMostLayerBrName = store.m_Option.istopMostLayerBrName;
|
||||
}}
|
||||
/>
|
||||
<ToasterInput
|
||||
type={CheckObjectType.R2B}
|
||||
optKey="topMostLayerBrName"
|
||||
option={store.m_Option}
|
||||
uiOption={store.UIOption}
|
||||
inline={true}
|
||||
/>
|
||||
</div>
|
||||
<div style={{ display: "flex", flexDirection: "row", justifyContent: "space-between" }}>
|
||||
<Checkbox
|
||||
checked={store.m_Option.isbottomMostLayerBrName}
|
||||
label={"最底层板"}
|
||||
onChange={() =>
|
||||
{
|
||||
store.m_Option.isbottomMostLayerBrName = !store.m_Option.isbottomMostLayerBrName;
|
||||
store.UIOption.isbottomMostLayerBrName = store.m_Option.isbottomMostLayerBrName;
|
||||
}}
|
||||
/>
|
||||
<ToasterInput
|
||||
type={CheckObjectType.R2B}
|
||||
optKey="bottomMostLayerBrName"
|
||||
option={store.m_Option}
|
||||
uiOption={store.UIOption}
|
||||
inline={true}
|
||||
/>
|
||||
</div>
|
||||
<div style={{ display: "flex", flexDirection: "row", justifyContent: "space-between" }}>
|
||||
<Checkbox
|
||||
checked={store.m_Option.isbottomMostBackBrName}
|
||||
label={"最底背板"}
|
||||
onChange={() =>
|
||||
{
|
||||
store.m_Option.isbottomMostBackBrName = !store.m_Option.isbottomMostBackBrName;
|
||||
store.UIOption.isbottomMostBackBrName = store.m_Option.isbottomMostBackBrName;
|
||||
}}
|
||||
/>
|
||||
<ToasterInput
|
||||
type={CheckObjectType.R2B}
|
||||
optKey="bottomMostBackBrName"
|
||||
option={store.m_Option}
|
||||
uiOption={store.UIOption}
|
||||
inline={true}
|
||||
/>
|
||||
</div>
|
||||
<div style={{ display: "flex", flexDirection: "row", justifyContent: "space-between" }}>
|
||||
<Checkbox
|
||||
checked={store.m_Option.isstripeBrName}
|
||||
label={"收口条"}
|
||||
onChange={() =>
|
||||
{
|
||||
store.m_Option.isstripeBrName = !store.m_Option.isstripeBrName;
|
||||
store.UIOption.isstripeBrName = store.m_Option.isstripeBrName;
|
||||
}}
|
||||
/>
|
||||
<ToasterInput
|
||||
type={CheckObjectType.R2B}
|
||||
optKey="stripeBrName"
|
||||
option={store.m_Option}
|
||||
uiOption={store.UIOption}
|
||||
inline={true}
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<div>
|
||||
根据背板区分柜体
|
||||
</div>
|
||||
<RadioGroup
|
||||
inline
|
||||
selectedValue={store.m_Option.isMultiBackBr ? "1" : "0"}
|
||||
onChange={(e) =>
|
||||
{
|
||||
store.m_Option.isMultiBackBr = e.currentTarget.value === "1";
|
||||
store.UIOption.isMultiBackBr = store.m_Option.isMultiBackBr;
|
||||
}}
|
||||
>
|
||||
|
||||
<Radio label="多背板" value={"1"} />
|
||||
<Radio label="单背板" value={"0"} />
|
||||
</RadioGroup>
|
||||
</div>
|
||||
<div style={{ display: "flex", flexDirection: "row", justifyContent: "space-between" }}>
|
||||
<Checkbox
|
||||
checked={store.m_Option.iscabinetName}
|
||||
label={"修改柜名"}
|
||||
onChange={() =>
|
||||
{
|
||||
store.m_Option.iscabinetName = !store.m_Option.iscabinetName;
|
||||
store.UIOption.iscabinetName = store.m_Option.iscabinetName;
|
||||
}}
|
||||
/>
|
||||
<ToasterInput
|
||||
type={CheckObjectType.R2B}
|
||||
optKey="cabinetName"
|
||||
option={store.m_Option}
|
||||
uiOption={store.UIOption}
|
||||
inline={true}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in new issue