//叫料通知 import WorkOrderInfo from '../../viewmodel/wms/WorkOrderInfo' import {OrderParams,DemandMaterial} from "../../params/OrderMaterialsStorageParams" import WmsRequest from '../../common/util/request/WmsRequest' import RequestParamModel from '../../viewmodel/wms/RequestParamModel' import { NotificationInfo} from '../../viewmodel/wms/NotificationInfo' @Component struct MaterialNotificationItem{ @Prop item:WorkOrderInfo @Prop index:number @State scaleValue:number = 1 @Link workOrders: WorkOrderInfo[] searchRequestMaterial: () => void = () => {} build() { Row(){ Column() { // 订单标题(带订单号) Text(`${this.item.orderName}${this.item.orderCode}`) .fontSize($r('app.float.fontSize_30')) .fontColor(this.item.workOrderState=="完成"?$r('app.color.FFFFFF'):$r('app.color.30FFFFFF')) .width('100%') .textAlign(TextAlign.Start) // 订单详情 Column({ space: 3 }) { Text(`工位: ${this.item.workOrderCode}`) .fontColor(this.item.workOrderState=="完成"?$r('app.color.FFFFFF'):$r('app.color.30FFFFFF')) .fontSize($r('app.float.fontSize_16')) .fontWeight(FontWeight.Lighter) Text(`工序: ${this.item.orderCode}`) .fontColor(this.item.workOrderState=="完成"?$r('app.color.FFFFFF'):$r('app.color.30FFFFFF')) .fontSize($r('app.float.fontSize_16')) .fontWeight(FontWeight.Lighter) Row() { Text('通知时间:') .fontColor(this.item.workOrderState=="完成"?$r('app.color.FFFFFF'):$r('app.color.30FFFFFF')) .fontSize($r('app.float.fontSize_16')) .fontWeight(FontWeight.Lighter) Text(this.item.planStartWhen) .fontColor(this.item.workOrderState=="完成"?$r('app.color.FFFFFF'):$r('app.color.30FFFFFF')) .fontSize($r('app.float.fontSize_16')) .margin({ left: 4 }) .fontWeight(FontWeight.Lighter) } .width('100%') .justifyContent(FlexAlign.Start) } .margin({ top: 6 }) .alignItems(HorizontalAlign.Start) }.width('85%') Row(){ //Text(index === this.selectedIndex ?item.workOrderState:item.workOrderState) Text(this.item.workOrderState) .fontSize($r('app.float.fontSize_30')) .fontColor(this.item.workOrderState=="完成"?$r('app.color.30D158'):$r('app.color.30FFFFFF')) }.width('15%') } .backgroundColor(this.scaleValue===0.9 ? $r('app.color.2030D158') : $r('app.color.20FFFFFF')) // 选中状态加深 .borderRadius($r('app.float.virtualSize_24')) .padding(10) .scale({ x: this.scaleValue, y: this.scaleValue }) .animation({ duration: 200, curve: Curve.Linear // 弹性曲线更生动 }) //.border({width:2,color:this.scaleValue===0.9 ? $r('app.color.2030D158'):$r('app.color.20FFFFFF')}) .onClick(() => { this.scaleValue = 0.9; // 点击时缩小 setTimeout(() => { this.searchRequestMaterial() this.scaleValue = 1; // 0.2秒后恢复 const changed = this.workOrders[this.index].workOrderState !== "已完成"; this.workOrders[this.index].workOrderState = "已完成"; // 只有状态确实变化时才重新排序 if (changed) { this.workOrders = this.workOrders.slice().sort((a) => a.workOrderState === "已完成" ? 1 : -1 ); } }, 200); }) } } @CustomDialog export struct MaterialNotificationDialog { private scrollerForList: Scroller = new Scroller() @Link selectWorkOrder:WorkOrderInfo @Link workOrders: WorkOrderInfo[] @State notificationList :NotificationInfo[]=[] //@Link selectWorkOrder: WorkOrderInfo // 选中回调函数 controller: CustomDialogController searchRequestMaterial: () => void = () => {} loadNotificationList=async()=>{ this.notificationList = await WmsRequest.post('/api/v1/sys/message/list', { type:2 } as RequestParamModel) as NotificationInfo[] console.info("testtag1+"+JSON.stringify(this.notificationList)) } async aboutToAppear() { console.info("testtag1+11111") this.workOrders = this.workOrders .slice() .sort((a) => a.workOrderState === "已完成" ? 1 : -1); } build() { Column() { Column(){ Text('叫料通知') .fontColor($r('app.color.FFFFFF')) .fontSize($r('app.float.fontSize_38')) }.height('6%') .justifyContent(FlexAlign.Center) Column() { // 订单列表 List({ space: 8,scroller:this.scrollerForList }) { ForEach(this.workOrders, (item: WorkOrderInfo, index) => { ListItem() { MaterialNotificationItem({ item:item, index:index, workOrders:this.workOrders, searchRequestMaterial:this.searchRequestMaterial }) } }) } .width('90%') .flexGrow(1) } .width('100%') .height('80%') .margin({bottom:'2%',top:'1%'}) Divider() .vertical(false) .strokeWidth(1) .color($r('app.color.15FFFFFF')) Column(){ Text('关闭') .fontColor($r('app.color.60FFFFFF')) .fontSize($r('app.float.fontSize_30')) } .height('8%') .justifyContent(FlexAlign.Center) .width('100%') .onClick( () => this.controller.close() ) } .height('80%') .width('60%') .backgroundColor($r('app.color.2A2A2A')) .justifyContent(FlexAlign.End) .borderColor($r('app.color.000000')) .borderWidth(1) .borderRadius($r('app.float.virtualSize_16')) } } @CustomDialog export struct MaterialRequestDialog { private scrollerForList: Scroller = new Scroller() @State materialData: DemandMaterial[] = [ {materialName: 'PCBA电路板-SADD1231241142324233231233234', materialType: '12322221232321222332211233', inBoundNum: 11, planNum: 20 }, {materialName: 'PCBA电路板-SADD1231241142324233231233234', materialType: '12322221232321222332211233', inBoundNum: 11, planNum: 20 }, {materialName: 'PCBA电路板-SADD1231241142324233231233234', materialType: '12322221232321222332211233', inBoundNum: 11, planNum: 20 }, {materialName: 'PCBA电路板-SADD1231241142324233231233234', materialType: '12322221232321222332211233', inBoundNum: 11, planNum: 20 }, {materialName: 'PCBA电路板-SADD1231241142324233231233234', materialType: '12322221232321222332211233', inBoundNum: 11, planNum: 20 }, {materialName: 'PCBA电路板-SADD1231241142324233231233234', materialType: '12322221232321222332211233', inBoundNum: 11, planNum: 20 }, {materialName: 'PCBA电路板-SADD1231241142324233231233234', materialType: '12322221232321222332211233', inBoundNum: 11, planNum: 20 }, {materialName: 'PCBA电路板-SADD1231241142324233231233234', materialType: '12322221232321222332211233', inBoundNum: 11, planNum: 20 }, {materialName: 'PCBA电路板-SADD1231241142324233231233234', materialType: '12322221232321222332211233', inBoundNum: 11, planNum: 20 }, {materialName: 'PCBA电路板-SADD1231241142324233231233234', materialType: '12322221232321222332211233', inBoundNum: 11, planNum: 20 }, {materialName: 'PCBA电路板-SADD1231241142324233231233234', materialType: '12322221232321222332211233', inBoundNum: 11, planNum: 20 }, ]; //@Link selectWorkOrder: WorkOrderInfo @State selectedIndex: number = -1 // 添加选中索引状态 // 选中回调函数 private onSelect(index: number): void { this.selectedIndex = index //this.selectWorkOrder = this.workOrders[index] } controller: CustomDialogController onConfirm: () => void = () => {} build() { Column() { Column(){ Text('物料需求') .fontColor($r('app.color.FFFFFF')) .fontSize($r('app.float.fontSize_38')) }.height('6%') .justifyContent(FlexAlign.Center) Column() { List({scroller:this.scrollerForList}) { ForEach(this.materialData, (item:DemandMaterial) => { ListItem() { Row() { Column(){ Text(item.materialName) .fontSize($r('app.float.fontSize_16')) .fontColor($r('app.color.FFFFFF')) .width('90%') .textAlign(TextAlign.Start) Text(`型号: ${item.materialType}`) .fontSize($r('app.float.fontSize_16')) .fontColor($r('app.color.FFFFFF')) .width('90%') .textAlign(TextAlign.Start) .margin({top:'1%'}) .fontWeight(FontWeight.Lighter) } Row(){ Text(`${item.planNum}`) .fontSize($r('app.float.fontSize_38')) .fontColor($r('app.color.FFFFFF')) .width('10%') .textAlign(TextAlign.Start) } }.width('100%').justifyContent(FlexAlign.SpaceEvenly).height('12%') } }) } .width('90%') .height('100%') .divider({ strokeWidth: 1, color: $r('app.color.20FFFFFF') }) } .width('100%') .height('80%') .margin({bottom:'2%',top:'1%'}) Divider() .vertical(false) .strokeWidth(1) .color($r('app.color.15FFFFFF')) Column(){ Text('关闭') .fontColor($r('app.color.60FFFFFF')) .fontSize($r('app.float.fontSize_30')) } .width('100%') .height('8%') .justifyContent(FlexAlign.Center) .onClick( () => this.controller.close() ) } .height('80%') .width('30%') .backgroundColor($r('app.color.2A2A2A')) .justifyContent(FlexAlign.End) .borderColor($r('app.color.000000')) .borderWidth(1) .borderRadius($r('app.float.virtualSize_16')) } }