diff --git a/src/Add-on/DrawDrilling/DrawDrillingTool.ts b/src/Add-on/DrawDrilling/DrawDrillingTool.ts index 2c38a4cc7..51f310681 100644 --- a/src/Add-on/DrawDrilling/DrawDrillingTool.ts +++ b/src/Add-on/DrawDrilling/DrawDrillingTool.ts @@ -45,7 +45,6 @@ export class DrawDrillingTool extends Singleton private m_MoveDistList: number[] = []; private m_Face: Face; private m_Option: DrillingOption; - private backupOption: DrillingOption; /**备选配置 */ private woodPins: CylinderHole[] = []; private drillEnts: Hole[] = []; //缓存相同碰撞面的配置 @@ -117,12 +116,19 @@ export class DrawDrillingTool extends Singleton let ljgDepth = this.m_Option.wdepth; //大孔半径 let bigRad = this.m_Option.wbHoleRad; + + let goodsId = this.m_Option.woodGoodsId; + let goodsSn = this.m_Option.woodGoodsSn; + let pxlEnt: CylinderHole; if (bigRad) { pxlEnt = CylinderHole.CreateCylHole(bigRad, pxlDepth, GangDrillType.WoodPXL); pxlEnt.AllowPxl = this.m_Option.allowPxl; pxlEnt.ColorIndex = 6; + pxlEnt.GoodsId = goodsId; + pxlEnt.GoodsSn = goodsSn; + this.woodPins.push(pxlEnt); //将三个实体移动到相应的位置 pxlEnt.ApplyMatrix(new Matrix4().makeRotationX(Math.PI / 2)); @@ -130,6 +136,9 @@ export class DrawDrillingTool extends Singleton let ljgEnt = CylinderHole.CreateCylHole(ljgRad, ljgLength + ljgDepth, GangDrillType.Wood); ljgEnt.ColorIndex = 6; + ljgEnt.GoodsId = goodsId; + ljgEnt.GoodsSn = goodsSn; + this.woodPins.push(ljgEnt); //如果都是侧面,不要预埋件,多个偏心轮 @@ -211,6 +220,9 @@ export class DrawDrillingTool extends Singleton let ljgLength = safeEval(this.m_Option.ljgLengthExpr, EvalParam); let ymjDepth = safeEval(this.m_Option.ymjDepthExpr, EvalParam); + let goodsId = this.m_Option.goodsId; + let goodsSn = this.m_Option.goodsSn; + let pxlEnt: CylinderHole; if (this.m_Option.pxlRad && pxlDepth) { @@ -218,6 +230,8 @@ export class DrawDrillingTool extends Singleton pxlEnt.AllowPxl = this.m_Option.allowPxl; this.drillEnts.push(pxlEnt); + pxlEnt.GoodsId = goodsId; + pxlEnt.GoodsSn = goodsSn; //将三个实体移动到相应的位置 pxlEnt.ApplyMatrix(new Matrix4().makeRotationX(Math.PI / 2)); } @@ -226,6 +240,8 @@ export class DrawDrillingTool extends Singleton if (ljgRad && ljgLength) { ljgEnt = CylinderHole.CreateCylHole(ljgRad, ljgLength, GangDrillType.Ljg); + ljgEnt.GoodsId = goodsId; + ljgEnt.GoodsSn = goodsSn; this.drillEnts.push(ljgEnt); } @@ -236,6 +252,8 @@ export class DrawDrillingTool extends Singleton { let ymjEnt = CylinderHole.CreateCylHole(this.m_Option.ymjRad, ymjDepth, GangDrillType.Ymj); ymjEnt.ApplyMatrix(new Matrix4().setPosition(new Vector3(0, 0, ljgLength))); + ymjEnt.GoodsId = goodsId; + ymjEnt.GoodsSn = goodsSn; if (this.m_Face.isEqualType) { @@ -291,6 +309,9 @@ export class DrawDrillingTool extends Singleton { let key = StoreageKeys.DrillTemp + suitableOption.tempId; let ens: ExtrudeHole[] = []; + let goodsId = this.m_Option.goodsId; + let goodsSn = this.m_Option.goodsSn; + if (appCache.has(key)) { ens = appCache.get(key); @@ -326,6 +347,9 @@ export class DrawDrillingTool extends Singleton if (!isNaN(posHeight)) d.ApplyMatrix(MoveMatrix(new Vector3(0, isPostive ? this.m_Face.Width - posHeight : posHeight))); } + + (d as ExtrudeHole).GoodsId = goodsId; + (d as ExtrudeHole).GoodsSn = goodsSn; } return true; } diff --git a/src/Add-on/Erp/Models/CadObject.ts b/src/Add-on/Erp/Models/CadObject.ts index badec8198..8a7fe4a10 100644 --- a/src/Add-on/Erp/Models/CadObject.ts +++ b/src/Add-on/Erp/Models/CadObject.ts @@ -33,6 +33,7 @@ export class OrderDataObject GroupData: object; Size: { L: number, W: number, H: number; }; RemarkList: [string, string][]; + GoodsID: number; //商品编号 } export class ProcessGroupObject { diff --git a/src/Add-on/Erp/ParseData.ts b/src/Add-on/Erp/ParseData.ts index e24b171ec..e394b955b 100644 --- a/src/Add-on/Erp/ParseData.ts +++ b/src/Add-on/Erp/ParseData.ts @@ -222,6 +222,7 @@ export class ErpParseData baseposition.YVec = `${yVec.x},${yVec.y},${yVec.z}`; baseposition.ZVec = `${zVec.x},${zVec.y},${zVec.z}`; let boardData = Production.GetBoardSplitOrderData(entity); + if (!boardData) return;//返回空数据,提示用户修改,结束拆单 this.UpdateBoardDrillRemark(boardData); @@ -761,6 +762,7 @@ export class ErpParseData { let parts = new OrderDataObject(); parts.Name = t.name || '未命名'; + parts.GoodsID = Number(t.goodsId ?? 0); parts.RoomName = RoomName; parts.BoxName = BoxName; parts.Num = t.count; @@ -788,6 +790,7 @@ export class ErpParseData price = price || 0; let parts = new OrderDataObject(); parts.ID = id; + parts.GoodsID = Number(option.goodsId ?? 0); //商品ID parts.Name = option.name || '未命名'; parts.RoomName = option.roomName || '未命名'; parts.BoxName = option.cabinetName || '未命名'; @@ -859,10 +862,8 @@ export class ErpParseData let holes = holeList.filter(t => t.GroupId.Index == g.key); let mx = holes.find(t => t.Type == GangDrillType.Wood); if (mx) - { spec += `D2:${mx.Radius * 2} L:${mx.Height}`; - - } else + else { let pxl = holes.find(t => t.Type == GangDrillType.Pxl); if (pxl) @@ -870,14 +871,10 @@ export class ErpParseData spec += `D1:${pxl.Radius * 2}`; let ymj = holes.find(t => t.Type == GangDrillType.Ymj); if (ymj) - { spec += ` D2:${ymj.Radius * 2}`; - } let ljg = holes.find(t => t.Type == GangDrillType.Ljg); if (ljg && ymj) - { spec += ` L:${ljg.Height + ymj.Height}`; - } } else { @@ -887,9 +884,7 @@ export class ErpParseData spec += `D2:${ljg.Radius * 2}`; let ymj = holes.find(t => t.Type == GangDrillType.Ymj); if (ymj) - { spec += ` L:${ljg.Height + ymj.Height}`; - } } } } @@ -901,13 +896,13 @@ export class ErpParseData }; for (const g of groupList) { - let getCount = lookOverBoardInfosTool.GetCount(g.value.map(t => t.board), options); + let info = lookOverBoardInfosTool.GetCount(g.value.map(t => t.board), options); let splitList = g.keyList; let roomName = splitList[0] || '未命名'; let boxName = splitList[1] || '未命名'; - objectList.push(...this.GetSealObjects(getCount.sealCount, roomName, boxName, sealMap)); + objectList.push(...this.GetSealObjects(info.sealCount, roomName, boxName, sealMap)); sealMap.clear(); - objectList.push(...this.GetDrillObjects(getCount.drillCount, roomName, boxName, getSpec)); + objectList.push(...this.GetDrillObjects(info.drillCount, roomName, boxName, getSpec)); holeMap.clear(); } return objectList; diff --git a/src/Add-on/Erp/ParseParts.ts b/src/Add-on/Erp/ParseParts.ts index 1e68f32ec..730fcfb07 100644 --- a/src/Add-on/Erp/ParseParts.ts +++ b/src/Add-on/Erp/ParseParts.ts @@ -7,6 +7,7 @@ export function parseParts(entity: Entity, spliteData: ISpliteHardwareData, list let info = spliteData.metalsOption as ICompHardwareOption; let parts = new OrderDataObject(); parts.ID = list.length + 1; + parts.GoodsID = Number(info.goodsId ?? 0); //商品ID parts.RoomName = info.roomName || '未命名'; parts.BoxName = info.cabinetName || '未命名'; parts.Brand = info.brand || ''; diff --git a/src/Add-on/LookOverBoardInfos/LookOverBoardInfosTool.ts b/src/Add-on/LookOverBoardInfos/LookOverBoardInfosTool.ts index ac27b6b3e..c32113d5b 100644 --- a/src/Add-on/LookOverBoardInfos/LookOverBoardInfosTool.ts +++ b/src/Add-on/LookOverBoardInfos/LookOverBoardInfosTool.ts @@ -28,6 +28,8 @@ export interface ICountType count2?: number | string; unit?: string; length?: number; + goodsId?: string; + goodsSn?: string; } export type GetCountOption = { sealGruopKey: (key: string, block: Board, size: number) => void; getHoles?: (name: string, hole: CylinderHole) => void; }; class LookOverBoardInfosTool @@ -51,11 +53,31 @@ class LookOverBoardInfosTool { if (v[0] instanceof Hole) if (k === "木销") - drillCount.push({ name: k, count: v.length }); + { + for (let drill of v) + { + let goodsSn = (drill as CylinderHole).GoodsSn; + let drillGroup = drillCount.find(d => d.name === k && d.goodsSn === goodsSn); //区分排钻商品ID + if (drillGroup) + drillGroup.count += 1; + else + drillCount.push({ name: k, count: 1, goodsSn, goodsId: (drill as CylinderHole).GoodsId }); + } + } else if (k === "层板钉") drillCount.push({ name: k, count: v.length }); else - drillCount.push({ name: k, count: v.length }); + { + for (let drill of v) + { + let goodsSn = (drill as CylinderHole).GoodsSn; + let drillGroup = drillCount.find(d => d.name === k && d.goodsSn === goodsSn); //区分排钻商品ID + if (drillGroup) + drillGroup.count += 1; + else + drillCount.push({ name: k, count: 1, goodsSn, goodsId: (drill as CylinderHole).GoodsId }); + } + } else { this.ParseHardwareCount(k, v as IHardwareType[], hardwareCount); @@ -107,10 +129,10 @@ class LookOverBoardInfosTool } for (let h of hardwares) { - let { name, unit, factory, spec, model, brand } = h.HardwareOption; + let { name, unit, factory, spec, model, brand, goodsSn } = h.HardwareOption; let tags = this.ParseProcessingGroupTags(h); // :230行 代码对关联复合实体又进行一遍分析 需同步修改 - addDrillToMap(`${name},${unit},${this.ParseSpec(h, factory)},${this.ParseSpec(h, spec)},${this.ParseSpec(h, model)},${this.ParseSpec(h, brand)},${tags.join(",")}`, h); + addDrillToMap(`${name},${unit},${this.ParseSpec(h, factory)},${this.ParseSpec(h, spec)},${this.ParseSpec(h, model)},${this.ParseSpec(h, brand)},${goodsSn},${tags.join(",")}`, h); } this.UpdateBoardMap(brsProps); @@ -226,10 +248,10 @@ class LookOverBoardInfosTool let metal = mId?.Object as IHardwareType; if (metal && !metal.IsErase && metal.HardwareOption) { - let { name, unit, factory, spec, model, brand } = metal.HardwareOption; + let { name, unit, factory, spec, model, brand, goodsSn } = metal.HardwareOption; let tags = this.ParseProcessingGroupTags(metal); // :113行 代码对关联复合实体又进行一遍分析 需同步修改 - addDrillToMap(`${name},${unit},${this.ParseSpec(metal, factory)},${this.ParseSpec(metal, spec)},${this.ParseSpec(metal, model)},${this.ParseSpec(metal, brand)},${tags.join(",")}`, metal); + addDrillToMap(`${name},${unit},${this.ParseSpec(metal, factory)},${this.ParseSpec(metal, spec)},${this.ParseSpec(metal, model)},${this.ParseSpec(metal, brand)},${tags.join(",")},${goodsSn}`, metal); } } diff --git a/src/Common/CheckoutVaildValue.ts b/src/Common/CheckoutVaildValue.ts index 326ac67ba..1325b84ee 100644 --- a/src/Common/CheckoutVaildValue.ts +++ b/src/Common/CheckoutVaildValue.ts @@ -330,6 +330,10 @@ export namespace CheckoutValid case "tempId": case "tempDirId": case "tempName": + case "goodsId": + case "goodsSn": + case "woodGoodsId": + case "woodGoodsSn": return ""; case "pxlOffset": case "collsionDist": diff --git a/src/DatabaseServices/3DSolid/CylinderHole.ts b/src/DatabaseServices/3DSolid/CylinderHole.ts index 56e7463b0..2ed3494fc 100644 --- a/src/DatabaseServices/3DSolid/CylinderHole.ts +++ b/src/DatabaseServices/3DSolid/CylinderHole.ts @@ -36,6 +36,9 @@ export class CylinderHole extends Hole private _Radius: number = 1; //同侧面 常规单头连杆、偏心轮、预埋件三合一排钻(原先是)是双头三合一 private _SameSideHole: boolean = false; + private _GoodsId: string = ""; + private _GoodsSn: string = ""; + constructor() { super(); @@ -50,7 +53,6 @@ export class CylinderHole extends Hole return drill; } - set Radius(r: number) { if (r !== this._Radius) @@ -99,6 +101,32 @@ export class CylinderHole extends Hole return this.BoundingBoxInOCS.applyMatrix4(this._Matrix); } + get GoodsId(): string + { + return this._GoodsId; + } + set GoodsId(value: string) + { + if (this._GoodsId !== value) + { + this.WriteAllObjectRecord(); + this._GoodsId = value; + } + } + + get GoodsSn(): string + { + return this._GoodsSn; + } + set GoodsSn(value: string) + { + if (this._GoodsSn !== value) + { + this.WriteAllObjectRecord(); + this._GoodsSn = value; + } + } + /** * 返回对象在自身坐标系下的Box */ @@ -235,20 +263,26 @@ export class CylinderHole extends Hole this.type = file.Read(); } - if (ver < 6) - this.SameSideHole = false; - else + if (ver > 5) this.SameSideHole = file.Read(); + + if (ver > 6) + { + this.GoodsId = file.Read(); + this.GoodsSn = file.Read(); + } } WriteFile(file: CADFiler) { super.WriteFile(file); - file.Write(6);//ver + file.Write(7);//ver file.Write(this._Radius); file.Write(this.type); file.Write(this.SameSideHole); + file.Write(this.GoodsId); + file.Write(this.GoodsSn); } } diff --git a/src/DatabaseServices/3DSolid/ExtrudeHole.ts b/src/DatabaseServices/3DSolid/ExtrudeHole.ts index 255797d35..600ae8a6e 100644 --- a/src/DatabaseServices/3DSolid/ExtrudeHole.ts +++ b/src/DatabaseServices/3DSolid/ExtrudeHole.ts @@ -33,6 +33,8 @@ export class ExtrudeHole extends Hole private _contourCurve: ExtrudeContourCurve = new Polyline(); private _EdgeGeometry: BufferGeometry; protected _knifeRadius: number = 3; + private _GoodsId: string = ""; + private _GoodsSn: string = ""; @AutoRecord isHole = true; @AutoRecord isThrough = false; @@ -48,6 +50,33 @@ export class ExtrudeHole extends Hole this._knifeRadius = v; } } + + get GoodsId(): string + { + return this._GoodsId; + } + set GoodsId(value: string) + { + if (this._GoodsId !== value) + { + this.WriteAllObjectRecord(); + this._GoodsId = value; + } + } + + get GoodsSn(): string + { + return this._GoodsSn; + } + set GoodsSn(value: string) + { + if (this._GoodsSn !== value) + { + this.WriteAllObjectRecord(); + this._GoodsSn = value; + } + } + Explode() { return [this.ContourCurve.Clone().ApplyMatrix(this.OCS)]; @@ -498,20 +527,30 @@ export class ExtrudeHole extends Hole file.ReadSoftObjectId(); } + if (ver > 5) + { + this._GoodsId = file.Read(); + this._GoodsSn = file.Read(); + } + this.Update(); } //对象将自身数据写入到文件. WriteFile(file: CADFiler) { super.WriteFile(file); - file.Write(5); + file.Write(6); file.WriteObject(this._contourCurve); file.Write(this._knifeRadius); file.Write(this.isHole); file.Write(this.isThrough); file.Write(this.type); - //ver= 5 弃用 + //ver = 5 弃用 file.Write(0); + + //ver = 6 + file.Write(this._GoodsId); + file.Write(this._GoodsSn); } } diff --git a/src/DatabaseServices/Hardware/HardwareCompositeEntity.ts b/src/DatabaseServices/Hardware/HardwareCompositeEntity.ts index 4a905f700..c401ec4d6 100644 --- a/src/DatabaseServices/Hardware/HardwareCompositeEntity.ts +++ b/src/DatabaseServices/Hardware/HardwareCompositeEntity.ts @@ -122,13 +122,19 @@ export class HardwareCompositeEntity extends CompositeEntity this.RelevanceHandle.push(objId); } } + + if (v > 5) + { + this.HardwareOption.goodsId = file.Read(); + this.HardwareOption.goodsSn = file.Read(); + } } //对象将自身数据写入到文件. WriteFile(file: CADFiler) { super.WriteFile(file); - file.Write(5); + file.Write(6); file.Write(this.HardwareOption.type); file.Write(this.HardwareOption.isSplite); @@ -167,5 +173,8 @@ export class HardwareCompositeEntity extends CompositeEntity file.Write(this.RelevanceHandle.length); for (let id of this.RelevanceHandle) file.WriteSoftObjectId(id); + + file.Write(this.HardwareOption.goodsId); + file.Write(this.HardwareOption.goodsSn); } } diff --git a/src/DatabaseServices/Hardware/HardwareTopline.ts b/src/DatabaseServices/Hardware/HardwareTopline.ts index ed5af45d5..d58b962e9 100644 --- a/src/DatabaseServices/Hardware/HardwareTopline.ts +++ b/src/DatabaseServices/Hardware/HardwareTopline.ts @@ -173,11 +173,17 @@ export class HardwareTopline extends SweepSolid d[1] = file.Read(); this.DataList.push(d); } + + if (ver > 1) + { + this.HardwareOption.goodsId = file.Read(); + this.HardwareOption.goodsSn = file.Read(); + } } WriteFile(file: CADFiler) { super.WriteFile(file); - file.Write(1);//ver + file.Write(2);//ver file.Write(this._contourRotation); @@ -199,5 +205,8 @@ export class HardwareTopline extends SweepSolid file.Write(data[0]); file.Write(data[1]); } + + file.Write(this.HardwareOption.goodsId); + file.Write(this.HardwareOption.goodsSn); } } diff --git a/src/Editor/DefaultConfig.ts b/src/Editor/DefaultConfig.ts index 438270e2c..854af2ffc 100644 --- a/src/Editor/DefaultConfig.ts +++ b/src/Editor/DefaultConfig.ts @@ -703,7 +703,7 @@ export const DefaultExtruderMetalsOption: IExtMetalsOption = { }; Object.freeze(DefaultExtruderMetalsOption); export const DefaultCompositeMetalsOption: ICompHardwareOption = { - version: 2, + version: 3, type: EMetalsType.Metals, isSplite: false, isSplitePrice: false, @@ -722,6 +722,8 @@ export const DefaultCompositeMetalsOption: ICompHardwareOption = { material: "", comments: "", isHole: true, + goodsId: "", + goodsSn: "" }; Object.freeze(DefaultCompositeMetalsOption); export const DefaultToplineMetalsOption: IToplineOption = { @@ -739,6 +741,8 @@ export const DefaultToplineMetalsOption: IToplineOption = { comments: "", addLen: "0", isHole: false, + goodsId: "", + goodsSn: "" }; Object.freeze(DefaultToplineMetalsOption); diff --git a/src/Production/Product.ts b/src/Production/Product.ts index 0afd1931c..e676df27c 100644 --- a/src/Production/Product.ts +++ b/src/Production/Product.ts @@ -62,6 +62,7 @@ export interface IDrillingOption endPt?: Vector3; angle?: number; name: string; + goodsId?: string; } export interface IBoardHoleInfo @@ -980,7 +981,8 @@ export namespace Production depth,//排钻的插入深度 face,//板在哪个边上 angle, - name: GetGroupName(cyHole) + name: GetGroupName(cyHole), + goodsId: cyHole.GoodsId, //商品编号 }); } } diff --git a/src/UI/Components/BBS/BBSCommon.tsx b/src/UI/Components/BBS/BBSCommon.tsx index e08febab3..534bba2d3 100644 --- a/src/UI/Components/BBS/BBSCommon.tsx +++ b/src/UI/Components/BBS/BBSCommon.tsx @@ -314,6 +314,7 @@ export class PartsTable extends React.Component {data.name === "" ? `[ 空 ]` : data.name} {data.unit === "米" ? FixedNotZero(data.count, 2) : data.count} {data.unit ?? `个`} + {data.goodsSn || `无`} ); }); @@ -334,6 +335,7 @@ export class PartsTable extends React.Component {entity.HardwareOption.factory ? lookOverBoardInfosTool.ParseSpec(entity, entity.HardwareOption.factory, data.length) : "无"} {entity.HardwareOption.brand ? lookOverBoardInfosTool.ParseSpec(entity, entity.HardwareOption.brand, data.length) : "无"} {tags.length ? tags.join(',') : "无"} + {entity.HardwareOption.goodsSn ? lookOverBoardInfosTool.ParseSpec(entity, entity.HardwareOption.goodsSn, data.length) : "无"} ; }); case PartsType.Area: diff --git a/src/UI/Components/BBS/LookOverBoardInfos.tsx b/src/UI/Components/BBS/LookOverBoardInfos.tsx index 507f41502..e19005668 100644 --- a/src/UI/Components/BBS/LookOverBoardInfos.tsx +++ b/src/UI/Components/BBS/LookOverBoardInfos.tsx @@ -78,7 +78,7 @@ interface LookOverBoardInfosModalState } export const ListItemSelectEventEmitter = new ListItemSelectEvent; -const HardwareTitles = ["配件名称", "个数", "数量", "单位", "型号", "规格", "材质", "颜色", "厂家", "品牌", "加工组"]; +const HardwareTitles = ["配件名称", "个数", "数量", "单位", "型号", "规格", "材质", "颜色", "厂家", "品牌", "加工组", "商品编号"]; const AreaTitle = ["板厚", "材料", "颜色", "板材", "个数", "面积"]; @@ -916,11 +916,12 @@ export class LookOverBoardInfosModal extends React.Component
{/* 配件信息 */} - + diff --git a/src/UI/Components/Board/BoardCommon.tsx b/src/UI/Components/Board/BoardCommon.tsx index 72bb57c9d..4d8cc957c 100644 --- a/src/UI/Components/Board/BoardCommon.tsx +++ b/src/UI/Components/Board/BoardCommon.tsx @@ -34,6 +34,7 @@ export interface ISetItemOption /**不传将默认属性允许为字符串类型 */ uiOption?: IUiOption; isDisabled?: boolean; + isReadOnly?: boolean; placeHolder?: string; onChange?: (e, ...arg) => void; inline?: boolean; @@ -58,6 +59,7 @@ interface ISetBlockOption isInline?: boolean; onChange?: (e, ...arg) => void; disabled?: boolean; + readonly?: boolean; children?: React.ReactNode; } interface TBProps @@ -112,6 +114,7 @@ export const SetBoardDataBlock = observer( optKey={k} title={v} isDisabled={props.disabled} + isReadOnly={props.readonly} {...props} className="" /> diff --git a/src/UI/Components/Board/GangDrillModal.tsx b/src/UI/Components/Board/GangDrillModal.tsx index 041a42a76..b99459e06 100644 --- a/src/UI/Components/Board/GangDrillModal.tsx +++ b/src/UI/Components/Board/GangDrillModal.tsx @@ -1,4 +1,5 @@ -import { Button, Checkbox, Classes, Radio, RadioGroup } from '@blueprintjs/core'; +import { Button, Checkbox, Classes, Intent, Radio, RadioGroup } from '@blueprintjs/core'; +import { observable } from 'mobx'; import { inject, observer } from 'mobx-react'; import * as React from 'react'; import * as xaop from 'xaop'; @@ -8,6 +9,8 @@ import { CommandNames } from '../../../Common/CommandNames'; import { KeyBoard } from '../../../Common/KeyEnum'; import { safeEval } from '../../../Common/eval'; import { commandMachine } from '../../../Editor/CommandMachine'; +import { GoodsType, IGoodInfo } from '../../MaterialEditor/GoodsList'; +import { GoodsListDiv } from '../../MaterialEditor/GoodsListDiv'; import { DrillStore } from '../../Store/DrillStore'; import { userConfigStore } from '../../Store/UserConfigStore'; import { SpacingType } from '../../Store/drillInterface'; @@ -24,6 +27,9 @@ import { Config_ModalType } from './UserConfigComponent'; @inject('store') @observer export class DrillModal extends React.Component<{ store?: DrillStore; }, {}> { + private _ShowShops = observable.box(false); + private _ShopsKey = observable.box(""); + private posPars = [["originDist", "起始距离"], ["retDist", "剩余距离"]]; private posPars2 = [ ["pxlOffset", "偏心轮下偏距离"], ["collsionDist", "排钻碰撞偏移距离"], @@ -166,10 +172,46 @@ export class DrillModal extends React.Component<{ store?: DrillStore; }, {}> {
+
商品参数
+
+
+ +
+
位置参数
- + { store.m_Option.isDrawWood = !store.m_Option.isDrawWood; }} /> +
+
+ +
+
{ this.holePars.map(([k, v]) => @@ -426,6 +503,32 @@ export class DrillModal extends React.Component<{ store?: DrillStore; }, {}> {
+ { + this._ShowShops.get() && + { + if (this._ShopsKey.get() === "wood") + { + store.m_Option.woodGoodsId = info.goods_id; + store.m_Option.woodGoodsSn = info.goods_sn; + //@ts-ignore + store.UIOption.woodGoodsSn = info.goods_sn; + } + else + { + store.m_Option.goodsId = info.goods_id; + store.m_Option.goodsSn = info.goods_sn; + //@ts-ignore + store.UIOption.goodsSn = info.goods_sn; + } + + this._ShopsKey.set(""); + this._ShowShops.set(false); + }} + /> + }
); diff --git a/src/UI/Components/Modal/ModalStyle/DrillModal.less b/src/UI/Components/Modal/ModalStyle/DrillModal.less index 2184e813e..d68497505 100644 --- a/src/UI/Components/Modal/ModalStyle/DrillModal.less +++ b/src/UI/Components/Modal/ModalStyle/DrillModal.less @@ -3,7 +3,7 @@ } #drillModal .small-name { - width : 4.55rem; + width : 5rem; margin : 0; padding : 0; padding-left: 5px; @@ -179,3 +179,9 @@ background-color: #1a83ad; } } + +#drillModal .goodsId { + input{ + width: 10rem; + } +} \ No newline at end of file diff --git a/src/UI/Components/RightPanel/CommonMetalPanel.tsx b/src/UI/Components/RightPanel/CommonMetalPanel.tsx index 488b13931..d64293f06 100644 --- a/src/UI/Components/RightPanel/CommonMetalPanel.tsx +++ b/src/UI/Components/RightPanel/CommonMetalPanel.tsx @@ -1,4 +1,4 @@ -import { Alert, Button, Classes, Label, Tag } from '@blueprintjs/core'; +import { Alert, Button, Classes, Intent, Label, Tag } from '@blueprintjs/core'; import { observable } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; @@ -6,7 +6,6 @@ import { Vector3 } from 'three'; import { app } from '../../../ApplicationServices/Application'; import { arrayRemove } from '../../../Common/ArrayExt'; import { EBoardKeyList } from '../../../Common/BoardKeyList'; -import { CheckObjectType } from '../../../Common/CheckoutVaildValue'; import { CommandNames } from '../../../Common/CommandNames'; import { FixedNotZero } from '../../../Common/Utils'; import { Board } from '../../../DatabaseServices/Entity/Board'; @@ -15,12 +14,15 @@ import { HardwareTopline } from '../../../DatabaseServices/Hardware/HardwareTopl import { ProcessingGroupRecord } from '../../../DatabaseServices/ProcessingGroup/ProcessingGroupRecord'; import { CommandWrap } from '../../../Editor/CommandMachine'; import { PromptStatus } from '../../../Editor/PromptResult'; +import { GoodsType, IGoodInfo } from '../../MaterialEditor/GoodsList'; +import { GoodsListDiv } from '../../MaterialEditor/GoodsListDiv'; import { BaseHardwareStore } from '../../Store/RightPanelStore/HardwareStore'; -import { ToasterInput } from '../Toaster'; +import { EMetalsType } from './RightPanelInterface'; export interface ICommonMetalPanelProps { store: BaseHardwareStore; + compositeType?: EMetalsType; isTopline?: boolean; entity?: Entity;//五金类实体(包括顶线) } @@ -33,6 +35,7 @@ export class CommonMetalPanel extends React.Component private showAlert = observable.box(false); @observable private tags: string[] = []; + private _ShowShops = observable.box(false); private updateTags = () => { @@ -99,6 +102,11 @@ export class CommonMetalPanel extends React.Component app.Editor.ModalManage.ToggleShow(); }; + private handleOpenShopList = () => + { + this._ShowShops.set(true); + }; + componentDidMount(): void { this.updateTags(); @@ -156,7 +164,7 @@ export class CommonMetalPanel extends React.Component return ( <>