浏览代码

仓储统计/通知/日志

chenjiabao 2 月之前
父节点
当前提交
428a4c52d8

+ 5 - 5
build-profile.json5

@@ -4,13 +4,13 @@
       {
         "name": "default",
         "material": {
-          "certpath": "C:/Users/cjb/.ohos/config/openharmony/default_HJ_openHarmony_wms_rQnzWoksJickD8RhCnzkUZTSF3iYKXeLwF00Sm7dv6A=.cer",
-          "storePassword": "0000001B6A9A1D67F230207CCC6D4DC1E6FC79E6F33AF532691BCD716FF4197BFB5C1C2222E1F08363BA64",
+          "certpath": "C:/Users/cjbll/.ohos/config/openharmony/default_HJ_openHarmony_wms_-apetLbuJoWfk5Jed4hr0SgMk-3INuZz6_sxpcqQUfg=.cer",
+          "storePassword": "0000001B5F1D2E56DA2F4E39EAE565FBE779724B60F9DFE5E070979A384CAF5B02AB092D2B62AD722640D4",
           "keyAlias": "debugKey",
-          "keyPassword": "0000001B6CF76A6E79831E0D2806322FFBC883E405FF7E8FBFBCFBFF7530C88AAD01B4C6799F194997688D",
-          "profile": "C:/Users/cjb/.ohos/config/openharmony/default_HJ_openHarmony_wms_rQnzWoksJickD8RhCnzkUZTSF3iYKXeLwF00Sm7dv6A=.p7b",
+          "keyPassword": "0000001B1499A8A383892F708FD0C1BE816B9ABE4610D607DA3284F7A1949294B87B82B4B5516F74761490",
+          "profile": "C:/Users/cjbll/.ohos/config/openharmony/default_HJ_openHarmony_wms_-apetLbuJoWfk5Jed4hr0SgMk-3INuZz6_sxpcqQUfg=.p7b",
           "signAlg": "SHA256withECDSA",
-          "storeFile": "C:/Users/cjb/.ohos/config/openharmony/default_HJ_openHarmony_wms_rQnzWoksJickD8RhCnzkUZTSF3iYKXeLwF00Sm7dv6A=.p12"
+          "storeFile": "C:/Users/cjbll/.ohos/config/openharmony/default_HJ_openHarmony_wms_-apetLbuJoWfk5Jed4hr0SgMk-3INuZz6_sxpcqQUfg=.p12"
         }
       }
     ],

+ 4 - 4
entry/src/main/ets/common/util/mqtt.ets

@@ -75,10 +75,10 @@ class MqttManager {
       const station2Set = valueJson?.d?.find(item => item.tag === 'Station2Set')?.value;
       const station2Weight = decodeWeight(valueJson?.d?.find(item => item.tag === 'Station2Weight')?.value);
       const rfidString = decodeRfidString(
-        valueJson?.d?.find(item => item.tag === 'RFID3Data1')?.value as number,
-        valueJson?.d?.find(item => item.tag === 'RFID3Data2')?.value as number,
-        valueJson?.d?.find(item => item.tag === 'RFID3Data3')?.value as number,
-        valueJson?.d?.find(item => item.tag === 'RFID3Data4')?.value as number
+        valueJson?.d?.find(item => item.tag === 'RFID2Data1')?.value as number,
+        valueJson?.d?.find(item => item.tag === 'RFID2Data2')?.value as number,
+        valueJson?.d?.find(item => item.tag === 'RFID2Data3')?.value as number,
+        valueJson?.d?.find(item => item.tag === 'RFID2Data4')?.value as number
       );
       console.info("sssssss"+rfidString)
       emitter.emit({

+ 7 - 3
entry/src/main/ets/component/InBoundView.ets

@@ -38,11 +38,9 @@ export struct InBoundView {
     emitter.on({
       eventId: EventId.MQTT_MESSAGE
       }, (eventData: emitter.EventData) => {
-      this.materialBoxID = eventData?.data?.['rfid1']
-      console.info("ssssa+"+this.materialBoxID)
+      this.materialBoxID = eventData?.data?.['rfid']
       this.drawerPositionStatus = Number(eventData?.data?.['station2Set'])
       this.materialBoxWeight = Number(eventData?.data?.['station2Weight'])
-      console.info(`ssssss${this.materialBoxID}`)
     })
   }
   //抽屉推出
@@ -73,6 +71,12 @@ export struct InBoundView {
   aboutToAppear(): void {
     this.refreshTag()
   }
+
+  aboutToDisappear(): void
+  {
+    emitter.off(EventId.MQTT_MESSAGE)
+  }
+
   build() {
     Column() {
       Text('出入库料口操作')

+ 102 - 2
entry/src/main/ets/component/NavigationBar.ets

@@ -1,7 +1,97 @@
 import router from '@ohos.router';
+import WorkOrderInfo from '../viewmodel/wms/WorkOrderInfo'
+import {MaterialNotificationDialog,MaterialRequestDialog} from '../view/wms/CallMaterialNotification'
+import {WarehousingLogDialog} from '../view/wms/WarehousingLog'
 @Component
 export struct NavigationBar {
-  @Prop notificationNumber: number = 0;
+  @Prop notificationNumber: number = 2;
+  @State selectWorkOrder:WorkOrderInfo = {}
+  @State rgvInfoInterval : number = 0
+  @State workOrders: WorkOrderInfo[] = [
+    {
+      orderName: "生产订单",
+      orderCode: "PO-20240501-001",
+      workOrderCode: "WC-001",
+      planStartWhen: "工序A",
+      inventoryNum: "50",
+      planNum: "100",
+      workOrderState:"完成"
+    },
+    {
+      orderName: "维修订单",
+      orderCode: "MO-20240501-002",
+      workOrderCode: "WC-002",
+      planStartWhen: "工序B",
+      inventoryNum: "30",
+      planNum: "60",
+      workOrderState:"完成"
+    },
+    {
+      orderName: "测试订单",
+      orderCode: "TO-20240501-003",
+      workOrderCode: "WC-003",
+      planStartWhen: "工序C",
+      inventoryNum: "80",
+      planNum: "120",
+      workOrderState:"完成"
+    },
+    {
+      orderName: "紧急订单",
+      orderCode: "EO-20240501-004",
+      workOrderCode: "WC-004",
+      planStartWhen: "工序D",
+      inventoryNum: "10",
+      planNum: "20",
+      workOrderState:"完成"
+    }
+  ];
+
+  getCompletedCount(): number {
+    return this.workOrders.filter(item =>
+    item.workOrderState === "完成" ).length;
+  }
+
+  aboutToAppear(): void {
+    this.rgvInfoInterval = setInterval(() => {
+      this.notificationNumber = this.getCompletedCount();
+    }, 1000);
+  }
+
+  aboutToDisappear(): void {
+    clearInterval(this.rgvInfoInterval);
+  }
+
+  MaterialRequestController: CustomDialogController = new CustomDialogController({
+    builder: MaterialRequestDialog(),
+    autoCancel: true, // 点击遮罩关闭
+    customStyle: true,
+    maskColor: 'rgba(0,0,0,0.8)',  // 黑色遮罩
+  })
+
+  WarehousingLogController: CustomDialogController = new CustomDialogController({
+    builder: WarehousingLogDialog(),
+    autoCancel: true, // 点击遮罩关闭
+    customStyle: true,
+    maskColor: 'rgba(0,0,0,0.8)',  // 黑色遮罩
+  })
+
+
+  searchRequestMaterial= () => {
+    this.MaterialRequestController.open()
+  }
+  NotificationDialogController: CustomDialogController = new CustomDialogController({
+    builder: MaterialNotificationDialog({
+      selectWorkOrder:this.selectWorkOrder,
+      searchRequestMaterial:()=>{ this.searchRequestMaterial()},
+      workOrders:this.workOrders
+    }),
+    autoCancel: true, // 点击遮罩关闭
+    customStyle: true,
+    maskColor: 'rgba(0,0,0,0.8)',  // 黑色遮罩
+  })
+
+
+
   build() {
     Row() {
       // 带数字标记的通知图标
@@ -9,6 +99,11 @@ export struct NavigationBar {
         .width($r('app.float.virtualSize_23'))
         .height($r('app.float.virtualSize_23'))
         .fillColor($r('app.color.FFFFFF'))
+        .onClick(()=>{
+          router.pushUrl({
+            url: 'pages/IntelligentWarehousingStatics'
+          })
+        })
       Badge({
         count: this.notificationNumber, // 动态传入的通知数量
         position: BadgePosition.RightTop, // 右上角显示
@@ -21,11 +116,16 @@ export struct NavigationBar {
           .width($r('app.float.virtualSize_23'))
           .height($r('app.float.virtualSize_23'))
           .fillColor($r('app.color.FFFFFF'))
-      }
+      }.onClick(()=>{
+        this.NotificationDialogController.open()
+      })
       Image($r('app.media.navigation_logs'))
         .width($r('app.float.virtualSize_23'))
         .height($r('app.float.virtualSize_23'))
         .fillColor($r('app.color.FFFFFF'))
+        .onClick(()=>{
+          this.WarehousingLogController.open()
+        })
       Image($r('app.media.navigation_rgv_control'))
         .width($r('app.float.virtualSize_23'))
         .height($r('app.float.virtualSize_23'))

+ 29 - 63
entry/src/main/ets/component/OrderMaterialsStorageView.ets

@@ -1,6 +1,6 @@
 import {DemandMaterial,OrderParams,MaterialItem,MaterialBox,EmptyBox} from "../params/OrderMaterialsStorageParams"
 import WorkOrderInfo from '../viewmodel/wms/WorkOrderInfo'
-import {MaterialListInformation,MaterialBoxInfo} from '../params/MaterialInformationParam'
+import {MaterialBoxInfo} from '../params/MaterialInformationParam'
 @Component
 export struct ProcessFlow {
   @Prop currentStep:number =0
@@ -119,20 +119,23 @@ export struct OrderListComponent {
                 Text(`工单编号: ${item.workOrderCode}`)
                   .fontColor($r('app.color.FFFFFF'))
                   .fontSize($r('app.float.fontSize_8'))
+                  .fontWeight(FontWeight.Lighter)
 
                 Text(`下发时间: ${item.planStartWhen}`)
                   .fontColor($r('app.color.FFFFFF'))
                   .fontSize($r('app.float.fontSize_8'))
+                  .fontWeight(FontWeight.Lighter)
 
                 Row() {
                   Text('入库比例:')
                     .fontColor($r('app.color.FFFFFF'))
                     .fontSize($r('app.float.fontSize_8'))
-
+                    .fontWeight(FontWeight.Lighter)
                   Text(`${(Number(item.inventoryNum) / Number(item.planNum) * 100).toFixed(0)}%`)
                     .fontColor($r('app.color.FFFFFF'))
                     .fontSize($r('app.float.fontSize_8'))
                     .margin({ left: 4 })
+                    .fontWeight(FontWeight.Lighter)
                 }
                 .width('100%')
                 .justifyContent(FlexAlign.Start)
@@ -158,67 +161,6 @@ export struct OrderListComponent {
 }
 
 @Component
-export struct MaterialGrid {
-  @Prop materials: MaterialItem[] = [];
-
-  build() {
-    Grid() {
-      ForEach(this.materials, (item:MaterialItem) => {
-        GridItem() {
-          Column() {
-            // 物料名称
-            Text(item.name)
-              .fontSize(16)
-              .fontWeight(FontWeight.Bold)
-              .margin({ bottom: 8 })
-              .width('100%')
-              .textAlign(TextAlign.Start)
-
-            // 产品型号
-            Text(item.model)
-              .fontSize(14)
-              .fontColor('#666666')
-              .margin({ bottom: 12 })
-              .width('100%')
-              .textAlign(TextAlign.Start)
-
-            // 数量进度
-            Row() {
-              Text(`已入库: ${item.completed}`)
-                .fontSize(14)
-
-              Text('/')
-                .margin({ left: 4, right: 4 })
-
-              Text(`计划: ${item.planned}`)
-                .fontSize(14)
-                .fontColor('#1890FF')
-            }
-            .width('100%')
-            .justifyContent(FlexAlign.SpaceBetween)
-          }
-          .padding(12)
-          .backgroundColor('#FFFFFF')
-          .borderRadius(4)
-          .border({
-            width: 1,
-            color: '#F0F0F0'
-          })
-        }
-      })
-    }
-    .columnsTemplate('1fr 1fr 1fr')
-    .columnsGap(10)  // 移除网格内部列间距
-    .rowsGap(0)     // 移除网格内部行间距
-
-    .width('100%')  // 确保填满父容器
-    .height('100%')
-    .padding(10)
-    .backgroundColor('#F5F5F5')     // 背景色与图片一致
-  }
-}
-
-@Component
 export struct SingleOrder {
 
   @Prop selectWorkOrder: WorkOrderInfo = {}
@@ -236,20 +178,25 @@ export struct SingleOrder {
         Text(`工单编号: ${this.selectWorkOrder.workOrderCode}`)
           .fontColor($r('app.color.FFFFFF'))
           .fontSize($r('app.float.fontSize_8'))
+          .fontWeight(FontWeight.Lighter)
+
 
         Text(`下发时间: ${this.selectWorkOrder.planStartWhen}`)
           .fontColor($r('app.color.FFFFFF'))
           .fontSize($r('app.float.fontSize_8'))
+          .fontWeight(FontWeight.Lighter)
 
         Row() {
           Text('入库比例:')
             .fontColor($r('app.color.FFFFFF'))
             .fontSize($r('app.float.fontSize_8'))
+            .fontWeight(FontWeight.Lighter)
 
           Text(`${(Number(this.selectWorkOrder.inventoryNum) / Number(this.selectWorkOrder.planNum) * 100).toFixed(0)}%`)
             .fontColor($r('app.color.FFFFFF'))
             .fontSize($r('app.float.fontSize_8'))
             .margin({ left: 4 })
+            .fontWeight(FontWeight.Lighter)
         }
         .width('100%')
         .justifyContent(FlexAlign.Start)
@@ -313,23 +260,28 @@ export struct BoxGrid {
                   Text(`料箱编号: ${box.id}`)
                     .fontColor($r('app.color.FFFFFF'))
                     .fontSize($r('app.float.fontSize_8'))
+                    .fontWeight(FontWeight.Lighter)
                     .textAlign(TextAlign.Start)
                   Text(`料箱类型: ${box.boxType}`)
                     .fontColor($r('app.color.FFFFFF'))
                     .fontSize($r('app.float.fontSize_8'))
+                    .fontWeight(FontWeight.Lighter)
                     .textAlign(TextAlign.Start)
                   Text(`所属订单: ${box.order}`)
                     .fontColor($r('app.color.FFFFFF'))
                     .fontSize($r('app.float.fontSize_8'))
+                    .fontWeight(FontWeight.Lighter)
                     .textAlign(TextAlign.Start)
                   Text(`数量: ${box.boxNumber}`)
                     .fontColor($r('app.color.FFFFFF'))
                     .fontSize($r('app.float.fontSize_8'))
+                    .fontWeight(FontWeight.Lighter)
                     .textAlign(TextAlign.Start)
                   Text(`位置: ${box.position}`)
                     .fontColor($r('app.color.FFFFFF'))
                     .fontSize($r('app.float.fontSize_8'))
                     .textAlign(TextAlign.Start)
+                    .fontWeight(FontWeight.Lighter)
                 }
                 .width('100%')
                 .margin({left:'2%'})
@@ -383,17 +335,20 @@ export struct BoxGrid {
                 Text(`料箱编号: ${box.vehicleCode}`)
                   .fontColor($r('app.color.FFFFFF'))
                   .fontSize($r('app.float.fontSize_8'))
+                  .fontWeight(FontWeight.Lighter)
                   .textAlign(TextAlign.Start)
                   .margin({ top: '40%',left:'2%' })
                 Text(`层数: ${box.position}`)
                   .fontColor($r('app.color.FFFFFF'))
                   .fontSize($r('app.float.fontSize_8'))
+                  .fontWeight(FontWeight.Lighter)
                   .textAlign(TextAlign.Start)
                   .margin({ left:'2%' })
                 Text(`坐标: ${box.coordinate}`)
                   .fontColor($r('app.color.FFFFFF'))
                   .fontSize($r('app.float.fontSize_8'))
                   .textAlign(TextAlign.Start)
+                  .fontWeight(FontWeight.Lighter)
                   .margin({ left:'2%' })
               }.width('40%').alignItems(HorizontalAlign.Start).justifyContent(FlexAlign.Start)
               Row(){
@@ -464,24 +419,29 @@ export struct MaterialBoxGrid {
               Column({ space: 3 }) {
                 Text(`料箱编号: ${box.id}`)
                   .fontColor($r('app.color.FFFFFF'))
+                  .fontWeight(FontWeight.Lighter)
                   .fontSize($r('app.float.fontSize_8'))
                   .textAlign(TextAlign.Start)
                 Text(`料箱类型: ${box.boxType}`)
                   .fontColor($r('app.color.FFFFFF'))
                   .fontSize($r('app.float.fontSize_8'))
+                  .fontWeight(FontWeight.Lighter)
                   .textAlign(TextAlign.Start)
                 Text(`所属订单: ${box.order}`)
                   .fontColor($r('app.color.FFFFFF'))
+                  .fontWeight(FontWeight.Lighter)
                   .fontSize($r('app.float.fontSize_8'))
                   .textAlign(TextAlign.Start)
                 Text(`数量: ${box.boxNumber}`)
                   .fontColor($r('app.color.FFFFFF'))
                   .fontSize($r('app.float.fontSize_8'))
+                  .fontWeight(FontWeight.Lighter)
                   .textAlign(TextAlign.Start)
                 Text(`位置: ${box.position}`)
                   .fontColor($r('app.color.FFFFFF'))
                   .fontSize($r('app.float.fontSize_8'))
                   .textAlign(TextAlign.Start)
+                  .fontWeight(FontWeight.Lighter)
               }
               .width('100%')
               .margin({left:'2%'})
@@ -544,12 +504,14 @@ export struct MaterialList {
                     .fontSize($r('app.float.fontSize_8'))
                     .fontColor($r('app.color.FFFFFF'))
                     .width('90%')
+                    .fontWeight(FontWeight.Lighter)
                     .textAlign(TextAlign.Start)
                   Text('入库/计划数量')
                     .fontSize($r('app.float.fontSize_7'))
                     .fontColor($r('app.color.60FFFFFF'))
                     .width('10%')
                     .textAlign(TextAlign.End)
+                    .fontWeight(FontWeight.Lighter)
                 }.margin({bottom:'1%'})
               }.width('100%').alignItems(HorizontalAlign.Start).justifyContent(FlexAlign.SpaceEvenly).height('12%')
           }
@@ -597,21 +559,25 @@ export struct MaterialListComponent {
                     .fontColor($r('app.color.FFFFFF'))
                     .fontSize($r('app.float.fontSize_8'))
                     .width('100%')
+                    .fontWeight(FontWeight.Lighter)
                     .textAlign(TextAlign.Start)
                   Text(`序列号: ${item.date}`)
                     .fontColor($r('app.color.FFFFFF'))
                     .fontSize($r('app.float.fontSize_8'))
                     .width('100%')
+                    .fontWeight(FontWeight.Lighter)
                     .textAlign(TextAlign.Start)
                   Text(`所属订单: ${item.date}`)
                     .fontColor($r('app.color.FFFFFF'))
                     .fontSize($r('app.float.fontSize_8'))
                     .width('100%')
+                    .fontWeight(FontWeight.Lighter)
                     .textAlign(TextAlign.Start)
                   Text(`数量: ${item.date}`)
                     .fontColor($r('app.color.FFFFFF'))
                     .fontSize($r('app.float.fontSize_8'))
                     .width('100%')
+                    .fontWeight(FontWeight.Lighter)
                     .textAlign(TextAlign.Start)
                 }
                 .margin({ top: 4 })

+ 816 - 0
entry/src/main/ets/component/WarehousingStaticsView.ets

@@ -0,0 +1,816 @@
+import WorkOrderInfo from '../viewmodel/wms/WorkOrderInfo'
+import {DemandMaterial,MaterialBox,EmptyBox} from "../params/OrderMaterialsStorageParams"
+@Component
+export struct StaticOrderList {
+  private scrollerForList: Scroller = new Scroller()
+  @Prop workOrders: WorkOrderInfo[] = []
+  @State selectedIndex: number = -1
+  @State scaleValue : number = 1
+  build() {
+    Column() { // 订单列表
+      List({ space: 8,scroller:this.scrollerForList }) {
+        ForEach(this.workOrders, (item: WorkOrderInfo, index) => {
+          ListItem() {
+            StaticOrderItem({
+              item: item,
+              index:index,
+              workOrders:this.workOrders
+            })
+          }
+        })
+      }
+      .width('100%')
+      .flexGrow(1)
+    }
+    .width('100%')
+    .height('100%')
+  }
+}
+
+@Component
+struct StaticOrderItem{
+  @Prop item: WorkOrderInfo
+  @Prop index: number
+  @Prop workOrders:WorkOrderInfo[]
+  @State scaleValue : number = 1
+  @State selectedOrder : WorkOrderInfo = {}
+  private onSelect(index: number): void {
+    this.selectedOrder = this.workOrders[index]
+  }
+  OrderMaterialController: CustomDialogController = new CustomDialogController({
+    builder: OrderMaterialDialog({
+      selectedOrder:this.selectedOrder
+    }),
+    autoCancel: true, // 点击遮罩关闭
+    customStyle: true,
+    maskColor: 'rgba(0,0,0,0.8)',  // 黑色遮罩
+  })
+  build() {
+    Column() {
+      // 订单标题(带订单号)
+      Text(`${this.item.orderName}${this.item.orderCode}`)
+        .fontSize($r('app.float.fontSize_12'))
+        .fontColor($r('app.color.FFFFFF'))
+        .width('100%')
+        .textAlign(TextAlign.Start)
+
+      // 订单详情
+      Column({ space: 3 }) {
+        Text(`工单编号: ${this.item.workOrderCode}`)
+          .fontColor($r('app.color.FFFFFF'))
+          .fontSize($r('app.float.fontSize_8'))
+          .fontWeight(FontWeight.Lighter)
+
+        Text(`下发时间: ${this.item.planStartWhen}`)
+          .fontColor($r('app.color.FFFFFF'))
+          .fontSize($r('app.float.fontSize_8'))
+          .fontWeight(FontWeight.Lighter)
+
+        Row() {
+          Text('齐套比例:')
+            .fontColor($r('app.color.FFFFFF'))
+            .fontSize($r('app.float.fontSize_8'))
+            .fontWeight(FontWeight.Lighter)
+
+          Text(`${this.item.inventoryNum}`)
+            .fontColor($r('app.color.FFFFFF'))
+            .fontSize($r('app.float.fontSize_8'))
+            .margin({ left: 4 })
+            .fontWeight(FontWeight.Lighter)
+        }
+        .width('100%')
+        .justifyContent(FlexAlign.Start)
+      }
+      .margin({ top: 6 })
+      .alignItems(HorizontalAlign.Start)
+    }.backgroundColor(this.scaleValue===0.9 ? $r('app.color.2030D158') : $r('app.color.20FFFFFF'))
+    .borderRadius($r('app.float.virtualSize_9_6'))
+    .padding(13)
+    //.border({width:2,color:$r('app.color.20FFFFFF')})
+    .scale({ x: this.scaleValue, y: this.scaleValue })
+    .animation({
+      duration: 200,
+      curve: Curve.Linear  // 弹性曲线更生动
+    })
+    .onClick(() => {
+      this.scaleValue = 0.9;  // 点击时缩小
+      setTimeout(() => {
+        this.scaleValue = 1; // 0.2秒后恢复
+        this.onSelect(this.index)
+        this.OrderMaterialController.open()
+      }, 200);
+    })
+
+  }
+}
+
+@CustomDialog
+struct OrderMaterialDialog {
+  private scrollerForList: Scroller = new Scroller()
+  @Prop workOrders:WorkOrderInfo[] = []
+  @Prop inBoundRation:number = 10
+  @Prop outBoundRation:number = 79
+  @Link selectedOrder: WorkOrderInfo
+  @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 },
+  ];
+
+  controller: CustomDialogController
+  searchRequestMaterial: () => void = () => {}
+
+  build() {
+    Column() {
+      Column(){
+        Text('订单物流状况详情')
+          .fontColor($r('app.color.FFFFFF'))
+          .fontSize($r('app.float.fontSize_15_2'))
+      }.height('8%')
+      .justifyContent(FlexAlign.Center)
+
+      Column() {
+        // 订单标题(带订单号)
+        Text(`${this.selectedOrder.orderName}${this.selectedOrder.orderCode}`)
+          .fontSize($r('app.float.fontSize_12'))
+          .fontColor($r('app.color.FFFFFF'))
+          .width('100%')
+          .textAlign(TextAlign.Start)
+
+
+        Row(){
+          Column({ space: 3 }) {
+            Text(`工单编号: ${this.selectedOrder.workOrderCode}`)
+              .fontColor($r('app.color.FFFFFF'))
+              .fontSize($r('app.float.fontSize_8'))
+            Text(`下发时间: ${this.selectedOrder.planStartWhen}`)
+              .fontColor($r('app.color.FFFFFF'))
+              .fontSize($r('app.float.fontSize_8'))
+            Text(`预计完成时间: ${this.selectedOrder.planStartWhen}`)
+              .fontColor($r('app.color.FFFFFF'))
+              .fontSize($r('app.float.fontSize_8'))
+            Text(`生产数量: ${this.selectedOrder.inventoryNum}`)
+              .fontColor($r('app.color.FFFFFF'))
+              .fontSize($r('app.float.fontSize_8'))
+          }
+          .margin({ top: 6 })
+          .alignItems(HorizontalAlign.Start)
+          .width('80%')
+          Column({ space: 3 }){
+            Row(){
+              Text('物料入库比例')
+                .width('80%')
+                .fontColor($r('app.color.60FFFFFF'))
+                .fontSize($r('app.float.fontSize_7'))
+              Text(`${this.inBoundRation}%`)
+                .width('20%')
+                .fontColor($r('app.color.FFFFFF'))
+                .fontSize($r('app.float.fontSize_8'))
+                .textAlign(TextAlign.End)
+            }
+            Row() {
+              Row()
+                .width(`${this.inBoundRation}%`)
+                .height('100%')
+                .borderRadius($r('app.float.virtualSize_9_6'))
+                .linearGradient({
+                  angle: 90,
+                  colors: [[$r('app.color.1050FF'), 0.0], [$r('app.color.73C3FF'), 1]]
+                })
+            }.height('10%').width('100%').backgroundColor($r('app.color.10FFFFFF'))
+            .borderRadius($r('app.float.virtualSize_9_6'))
+            Row(){
+              Text('物料出库比例')
+                .width('80%')
+                .fontColor($r('app.color.60FFFFFF'))
+                .fontSize($r('app.float.fontSize_7'))
+              Text(`${this.outBoundRation}%`)
+                .width('20%')
+                .fontColor($r('app.color.FFFFFF'))
+                .fontSize($r('app.float.fontSize_8'))
+                .textAlign(TextAlign.End)
+            }.margin({ top: '2%' })
+            Row() {
+              Row()
+                .width(`${this.outBoundRation}%`)
+                .height('100%')
+                .borderRadius($r('app.float.virtualSize_9_6'))
+                .linearGradient({
+                  angle: 90,
+                  colors: [[$r('app.color.1050FF'), 0.0], [$r('app.color.73C3FF'), 1]]
+                })
+            }
+            .height('10%')
+            .width('100%')
+            .backgroundColor($r('app.color.10FFFFFF'))
+            .borderRadius($r('app.float.virtualSize_9_6'))
+          }
+          .width('20%')
+          .alignItems(HorizontalAlign.Start)
+        }.width('100%')
+      }.backgroundColor( $r('app.color.20FFFFFF'))
+      .borderRadius($r('app.float.virtualSize_9_6'))
+      .padding({left:30,right:10,top:10,bottom:5})
+      .height('18%')
+      .width('95%')
+     Column(){
+       List({scroller:this.scrollerForList}) {
+         ForEach(this.materialData, (item:DemandMaterial) => {
+           ListItem() {
+             Column() {
+               Column(){
+                 Text(item.materialName)
+                   .fontSize($r('app.float.fontSize_8'))
+                   .fontColor($r('app.color.FFFFFF'))
+                   .width('100%')
+                   .textAlign(TextAlign.Start)
+                 Text(`型号: ${item.materialType}`)
+                   .fontSize($r('app.float.fontSize_8'))
+                   .fontColor($r('app.color.60FFFFFF'))
+                   .width('100%')
+                   .fontWeight(FontWeight.Lighter)
+                   .textAlign(TextAlign.Start)
+               }
+               Row(){
+                 Text(`入库数量:${item.planNum}`)
+                   .fontSize($r('app.float.fontSize_8'))
+                   .fontColor($r('app.color.FFFFFF'))
+                   .width('20%')
+                   .fontWeight(FontWeight.Lighter)
+                   .textAlign(TextAlign.Start)
+                 Text(`出库数量:${item.planNum}`)
+                   .fontSize($r('app.float.fontSize_8'))
+                   .fontColor($r('app.color.FFFFFF'))
+                   .fontWeight(FontWeight.Lighter)
+                   .width('20%')
+                   .textAlign(TextAlign.Start)
+                 Text(`缺料数量:${item.planNum}`)
+                   .fontSize($r('app.float.fontSize_8'))
+                   .fontColor($r('app.color.FFFFFF'))
+                   .fontWeight(FontWeight.Lighter)
+                   .width('20%')
+                   .textAlign(TextAlign.Start)
+                 Text(`需求数量:${item.planNum}`)
+                   .fontSize($r('app.float.fontSize_8'))
+                   .fontColor($r('app.color.FFFFFF'))
+                   .width('20%')
+                   .fontWeight(FontWeight.Lighter)
+                   .textAlign(TextAlign.Start)
+               }.justifyContent(FlexAlign.Start).width('100%').margin({top:'1%'})
+             }.width('100%').justifyContent(FlexAlign.SpaceEvenly).padding(10)
+           }
+         })
+       }
+       .width('100%')
+       .height('100%')
+       .divider({
+         strokeWidth: 1,
+         color: $r('app.color.20FFFFFF')
+       })
+     }.height('57%').width('95%').margin({top:'3%',bottom:'2%'})
+
+      Divider()
+        .vertical(false)
+        .strokeWidth(1)
+        .color($r('app.color.20FFFFFF'))
+      Column(){
+        Text('关闭')
+          .fontColor($r('app.color.60FFFFFF'))
+          .fontSize($r('app.float.fontSize_12'))
+      }
+      .height('8%')
+      .justifyContent(FlexAlign.Center)
+      .width('100%')
+      .onClick(
+        () => this.controller.close()
+      )
+    }
+    .height('90%')
+    .width('80%')
+    .backgroundColor($r('app.color.2A2A2A'))
+    .justifyContent(FlexAlign.End)
+    .borderColor($r('app.color.000000'))
+    .borderWidth(1)
+    .borderRadius($r('app.float.virtualSize_11_6'))
+  }
+}
+
+
+
+
+@Component
+export struct StaticMaterialList {
+  private scrollerForList: Scroller = new Scroller()
+  @Prop boundMaterial: DemandMaterial[] = [
+    {materialName: 'PCBA电路板SADD12312', 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 },
+  ]
+  @State scaleValue : number = 1
+  build() {
+    Column() { // 订单列表
+      List({ space: 8,scroller:this.scrollerForList }) {
+        ForEach(this.boundMaterial, (item: DemandMaterial, index) => {
+          ListItem() {
+            StaticMaterialItem({
+              item: item,
+              index:index,
+              boundMaterial:this.boundMaterial
+            })
+          }
+        })
+      }
+      .width('100%')
+      .flexGrow(1)
+    }
+    .width('100%')
+    .height('100%')
+  }
+}
+
+@Component
+struct StaticMaterialItem{
+  @Prop item: DemandMaterial
+  @Prop index: number
+  @Prop boundMaterial:DemandMaterial[]
+  @State scaleValue : number = 1
+  @State selectedMaterial :DemandMaterial={}
+  private onSelect(index: number): void {
+    this.selectedMaterial = this.boundMaterial[index]
+  }
+  MaterialBoxController: CustomDialogController = new CustomDialogController({
+    builder: MaterialBoxDialog({
+      selectedMaterial:this.selectedMaterial
+    }),
+    autoCancel: true, // 点击遮罩关闭
+    customStyle: true,
+    maskColor: 'rgba(0,0,0,0.8)',  // 黑色遮罩
+  })
+  build() {
+    Column() {
+      // 订单标题(带订单号)
+      Text(`${this.item.materialName}`)
+        .fontSize($r('app.float.fontSize_12'))
+        .fontColor($r('app.color.FFFFFF'))
+        .width('100%')
+        .textAlign(TextAlign.Start)
+        .maxLines(1) // 限制单行显示
+       // .textOverflow({ overflow: TextOverflow.Ellipsis }) // 超出显示...
+
+
+
+      // 订单详情
+      Column({ space: 3 }) {
+        Text(`型号: ${this.item.materialType}`)
+          .fontColor($r('app.color.FFFFFF'))
+          .textAlign(TextAlign.Start)
+          .width('100%')
+          .fontWeight(FontWeight.Lighter)
+          .fontSize($r('app.float.fontSize_8'))
+
+        Text(`总数量: ${this.item.inBoundNum}`)
+          .fontColor($r('app.color.FFFFFF'))
+          .width('100%')
+          .fontWeight(FontWeight.Lighter)
+          .fontSize($r('app.float.fontSize_8'))
+          .textAlign(TextAlign.Start)
+      }
+      .margin({ top: 6 })
+      .alignItems(HorizontalAlign.Start)
+    }.backgroundColor(this.scaleValue===0.9 ? $r('app.color.2030D158') : $r('app.color.20FFFFFF'))
+    .borderRadius($r('app.float.virtualSize_9_6'))
+    .padding(13)
+    //.border({width:2,color:$r('app.color.20FFFFFF')})
+    .scale({ x: this.scaleValue, y: this.scaleValue })
+    .animation({
+      duration: 200,
+      curve: Curve.Linear  // 弹性曲线更生动
+    })
+    .onClick(() => {
+      this.scaleValue = 0.9;  // 点击时缩小
+      setTimeout(() => {
+        this.scaleValue = 1; // 0.2秒后恢复
+        this.onSelect(this.index)
+        this.MaterialBoxController.open()
+      }, 200);
+    })
+
+  }
+}
+
+
+
+
+@CustomDialog
+struct MaterialBoxDialog {
+  @Prop workOrders:WorkOrderInfo[] = []
+  @Prop inBoundRation:number = 10
+  @Prop outBoundRation:number = 79
+  @Link selectedMaterial: DemandMaterial
+  private scrollerMaterial: Scroller = new Scroller()
+  @State selectedMaterialIndex: number = -1  // 物料箱选中索引
+  private onSelectMaterial(index: number) {
+    this.selectedMaterialIndex = index
+  }
+
+  @State materialBoxes: MaterialBox[] = [
+  // 第一行物料箱
+    {
+      id: '1',
+      type: 'material',
+      name: '物料名称XXXXX',
+      boxNumber: 'LX-12345',
+      boxType: '通用类型',
+      order: 'XXXXX订单',
+      quantity: 10,
+      position: 'X-1 Y-2'
+    },
+    // 其他2个物料箱...
+
+    // 第二行空箱
+    {
+      id: '4',
+      type: 'empty',
+      name: '空箱',
+      boxNumber: 'LX-67890',
+      boxType: '通用类型',
+      position: 'X-3 Y-1'
+    },
+    {
+      id: '1',
+      type: 'material',
+      name: '物料名称XXXXX',
+      boxNumber: 'LX-12345',
+      boxType: '通用类型',
+      order: 'XXXXX订单',
+      quantity: 10,
+      position: 'X-1 Y-2'
+    },
+    // 其他2个物料箱...
+
+    // 第二行空箱
+    {
+      id: '4',
+      type: 'empty',
+      name: '空箱',
+      boxNumber: 'LX-67890',
+      boxType: '通用类型',
+      position: 'X-3 Y-1'
+    },
+    {
+      id: '1',
+      type: 'material',
+      name: '物料名称XXXXX',
+      boxNumber: 'LX-12345',
+      boxType: '通用类型',
+      order: 'XXXXX订单',
+      quantity: 10,
+      position: 'X-1 Y-2'
+    },
+    // 其他2个物料箱...
+
+    // 第二行空箱
+    {
+      id: '4',
+      type: 'empty',
+      name: '空箱',
+      boxNumber: 'LX-67890',
+      boxType: '通用类型',
+      position: 'X-3 Y-1'
+    },
+    {
+      id: '1',
+      type: 'material',
+      name: '物料名称XXXXX',
+      boxNumber: 'LX-12345',
+      boxType: '通用类型',
+      order: 'XXXXX订单',
+      quantity: 10,
+      position: 'X-1 Y-2'
+    },
+    // 其他2个物料箱...
+
+    // 第二行空箱
+    {
+      id: '4',
+      type: 'empty',
+      name: '空箱',
+      boxNumber: 'LX-67890',
+      boxType: '通用类型',
+      position: 'X-3 Y-1'
+    },
+    {
+      id: '1',
+      type: 'material',
+      name: '物料名称XXXXX',
+      boxNumber: 'LX-12345',
+      boxType: '通用类型',
+      order: 'XXXXX订单',
+      quantity: 10,
+      position: 'X-1 Y-2'
+    },
+    // 其他2个物料箱...
+
+    // 第二行空箱
+    {
+      id: '4',
+      type: 'empty',
+      name: '空箱',
+      boxNumber: 'LX-67890',
+      boxType: '通用类型',
+      position: 'X-3 Y-1'
+    },
+    {
+      id: '1',
+      type: 'material',
+      name: '物料名称XXXXX',
+      boxNumber: 'LX-12345',
+      boxType: '通用类型',
+      order: 'XXXXX订单',
+      quantity: 10,
+      position: 'X-1 Y-2'
+    },
+    // 其他2个物料箱...
+    {
+      id: '1',
+      type: 'material',
+      name: '物料名称XXXXX',
+      boxNumber: 'LX-12345',
+      boxType: '通用类型',
+      order: 'XXXXX订单',
+      quantity: 10,
+      position: 'X-1 Y-2'
+    },
+    // 其他2个物料箱...
+
+    // 第二行空箱
+    {
+      id: '4',
+      type: 'empty',
+      name: '空箱',
+      boxNumber: 'LX-67890',
+      boxType: '通用类型',
+      position: 'X-3 Y-1'
+    }, {
+    id: '1',
+    type: 'material',
+    name: '物料名称XXXXX',
+    boxNumber: 'LX-12345',
+    boxType: '通用类型',
+    order: 'XXXXX订单',
+    quantity: 10,
+    position: 'X-1 Y-2'
+  },
+
+    // 其他2个物料箱...
+
+    // 第二行空箱
+    {
+      id: '4',
+      type: 'empty',
+      name: '空箱',
+      boxNumber: 'LX-67890',
+      boxType: '通用类型',
+      position: 'X-3 Y-1'
+    },
+    // 第二行空箱
+    {
+      id: '4',
+      type: 'empty',
+      name: '空箱',
+      boxNumber: 'LX-67890',
+      boxType: '通用类型',
+      position: 'X-3 Y-1'
+    },
+  // 其他2个空箱...
+  ];
+  @Prop emptyBoxes: EmptyBox[] = [];
+  controller: CustomDialogController
+  searchRequestMaterial: () => void = () => {}
+
+  build() {
+    Column() {
+      Column(){
+        Text('物料库存')
+          .fontColor($r('app.color.FFFFFF'))
+          .fontSize($r('app.float.fontSize_15_2'))
+      }.height('8%')
+      .justifyContent(FlexAlign.Center)
+
+      Column() {
+        Grid(this.scrollerMaterial) {
+          ForEach(this.materialBoxes, (box: MaterialBox, index) => {
+            GridItem() {
+              Column() {
+                // 订单标题(带订单号)
+                Text(`${box.name}`)
+                  .fontSize($r('app.float.fontSize_12'))
+                  .fontColor($r('app.color.FFFFFF'))
+                  .width('100%')
+                  .textAlign(TextAlign.Start)
+                  .margin({ bottom: '2%',left:'2%' })
+                // 订单详情
+                Column({ space: 3 }) {
+                  Text(`料箱编号: ${box.id}`)
+                    .fontColor($r('app.color.FFFFFF'))
+                    .fontSize($r('app.float.fontSize_8'))
+                    .fontWeight(FontWeight.Lighter)
+                    .textAlign(TextAlign.Start)
+                  Text(`料箱类型: ${box.boxType}`)
+                    .fontColor($r('app.color.FFFFFF'))
+                    .fontSize($r('app.float.fontSize_8'))
+                    .fontWeight(FontWeight.Lighter)
+                    .textAlign(TextAlign.Start)
+                  Text(`所属订单: ${box.order}`)
+                    .fontColor($r('app.color.FFFFFF'))
+                    .fontSize($r('app.float.fontSize_8'))
+                    .fontWeight(FontWeight.Lighter)
+                    .textAlign(TextAlign.Start)
+                  Text(`数量: ${box.boxNumber}`)
+                    .fontColor($r('app.color.FFFFFF'))
+                    .fontSize($r('app.float.fontSize_8'))
+                    .fontWeight(FontWeight.Lighter)
+                    .textAlign(TextAlign.Start)
+                  Text(`位置: ${box.position}`)
+                    .fontColor($r('app.color.FFFFFF'))
+                    .fontSize($r('app.float.fontSize_8'))
+                    .fontWeight(FontWeight.Lighter)
+                    .textAlign(TextAlign.Start)
+                }
+                .width('100%')
+                .margin({left:'2%'})
+                .justifyContent(FlexAlign.Start)
+                .alignItems(HorizontalAlign.Start)
+              }
+              //.margin({ top: 6 })
+              .alignItems(HorizontalAlign.Start)
+            }
+            .backgroundColor(index === this.selectedMaterialIndex ? $r('app.color.2030D158') : $r('app.color.20FFFFFF')) // 选中状态加深
+            .borderRadius($r('app.float.virtualSize_9_6'))
+            .padding(8)
+            .border({
+              width: 2,
+              color: index === this.selectedMaterialIndex ? $r('app.color.2030D158') : $r('app.color.20FFFFFF')
+            })
+            .onClick(() => {
+              this.onSelectMaterial(index)
+            })
+
+          })
+        }
+        .columnsTemplate('1fr 1fr 1fr')
+        // .rowsTemplate('1fr 1fr')
+        .columnsGap(10) // 移除网格内部列间距
+        .rowsGap(10) // 移除网格内部行间距
+        .width('100%') // 确保填满父容器
+        .height('97%')
+        .padding(10)
+      }.height('82%')
+
+      Divider()
+        .vertical(false)
+        .strokeWidth(1)
+        .color($r('app.color.20FFFFFF'))
+      Column(){
+        Text('关闭')
+          .fontColor($r('app.color.60FFFFFF'))
+          .fontSize($r('app.float.fontSize_12'))
+      }
+      .height('8%')
+      .justifyContent(FlexAlign.Center)
+      .width('100%')
+      .onClick(
+        () => this.controller.close()
+      )
+    }
+    .height('90%')
+    .width('80%')
+    .backgroundColor($r('app.color.2A2A2A'))
+    .justifyContent(FlexAlign.End)
+    .borderColor($r('app.color.000000'))
+    .borderWidth(1)
+    .borderRadius($r('app.float.virtualSize_11_6'))
+  }
+}
+@Component
+export struct LineChart {
+  private settings: RenderingContextSettings = new RenderingContextSettings(true)
+  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
+
+  // 图表数据
+  private readonly data: number[] = [400, 380, 400, 450, 430, 450, 440, 450, 430, 440, 420, 450]
+  private readonly months: string[] = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
+
+  // 图表尺寸和边距
+  private readonly chartWidth: number = 300
+  private readonly chartHeight: number = 200
+  private readonly chartPadding: number = 30
+
+  aboutToAppear() {
+    // 初始化设置
+  }
+
+  build() {
+    Column() {
+      Canvas(this.context)
+        .width(this.chartWidth)
+        .height(this.chartHeight)
+        .backgroundColor('#2c2c2c')
+        .onReady(() => this.drawChart())
+    }
+    .width('100%')
+    .height('100%')
+  }
+
+  private drawChart() {
+    // 清空画布
+    this.context.clearRect(0, 0, this.chartWidth, this.chartHeight)
+
+    // 绘制坐标轴
+    this.drawAxis()
+
+    // 绘制折线
+    this.drawLine()
+
+    // 绘制数据点
+    this.drawPoints()
+  }
+
+  private drawAxis() {
+    this.context.beginPath()
+    this.context.strokeStyle = '#666666'
+    this.context.lineWidth = 1
+
+    // Y轴
+    this.context.moveTo(this.chartPadding, this.chartPadding)
+    this.context.lineTo(this.chartPadding, this.chartHeight - this.chartPadding)
+
+    // X轴
+    this.context.moveTo(this.chartPadding, this.chartHeight - this.chartPadding)
+    this.context.lineTo(this.chartWidth - this.chartPadding, this.chartHeight - this.chartPadding)
+
+    // 绘制刻度和标签
+    this.drawLabels()
+
+    this.context.stroke()
+  }
+
+  private drawLabels() {
+    this.context.fillStyle = '#ffffff'
+    this.context.font = '14px sans-serif'
+
+    // Y轴刻度
+    for (let i = 0; i <= 5; i++) {
+      const y = this.chartHeight - this.chartPadding - (i * (this.chartHeight - 2 * this.chartPadding) / 5)
+      const value = i * 100
+      this.context.fillText(value.toString(), 5, y + 4)
+    }
+
+    // X轴标签
+    this.months.forEach((month, i) => {
+      const x = this.chartPadding + (i * (this.chartWidth - 2 * this.chartPadding) / (this.months.length - 1))
+      this.context.fillText(month, x - 15, this.chartHeight - 10)
+    })
+  }
+
+  private drawLine() {
+    this.context.beginPath()
+    this.context.strokeStyle = '#2196F3'
+    this.context.lineWidth = 2
+
+    this.data.forEach((value, i) => {
+      const x = this.chartPadding + (i * (this.chartWidth - 2 * this.chartPadding) / (this.data.length - 1))
+      const y = this.chartHeight - this.chartPadding - ((value / 500) * (this.chartHeight - 2 * this.chartPadding))
+
+      if (i === 0) {
+        this.context.moveTo(x, y)
+      } else {
+        this.context.lineTo(x, y)
+      }
+    })
+
+    this.context.stroke()
+  }
+
+  private drawPoints() {
+    this.data.forEach((value, i) => {
+      const x = this.chartPadding + (i * (this.chartWidth - 2 * this.chartPadding) / (this.data.length - 1))
+      const y = this.chartHeight - this.chartPadding - ((value / 500) * (this.chartHeight - 2 * this.chartPadding))
+
+      this.context.beginPath()
+      this.context.fillStyle = '#2196F3'
+      this.context.arc(x, y, 4, 0, Math.PI * 2)
+      this.context.fill()
+    })
+  }
+}

+ 203 - 0
entry/src/main/ets/pages/IntelligentWarehousingStatics.ets

@@ -0,0 +1,203 @@
+/*
+ * 智能仓储统计
+ * */
+import router from '@ohos.router';
+import WorkOrderInfo from '../viewmodel/wms/WorkOrderInfo'
+import {StaticOrderList,StaticMaterialList,LineChart} from '../component/WarehousingStaticsView'
+
+
+@Entry
+@Component
+struct IntelligentWarehousingStatics {
+  @State workOrderArray: WorkOrderInfo[] = [
+    { orderName: '订单名称1XXXXX', workOrderCode: '123123213', planStartWhen: '2025/11/11', inventoryNum: '50%' },
+    { orderName: '订单名称2XXXXX', workOrderCode: '123123213', planStartWhen: '2025/11/11', inventoryNum: '50%' },
+    { orderName: '订单名称3XXXXX', workOrderCode: '123123213', planStartWhen: '2025/11/11', inventoryNum: '50%' },
+    { orderName: '订单名称4XXXXX', workOrderCode: '123123213', planStartWhen: '2025/11/11', inventoryNum: '50%' },
+    { orderName: '订单名称5XXXXX', workOrderCode: '123123213', planStartWhen: '2025/11/11', inventoryNum: '50%' },
+  ]
+
+
+  build() {
+    Row() {
+      Column() {
+        Row() {
+
+        }.width('100%')
+        .height('3.4%')
+        Row(){
+          Row() {
+            Image($r('app.media.general_return'))
+              .height($r('app.float.virtualSize_22_4'))
+              .width($r('app.float.virtualSize_22_4'))
+              .fillColor($r('app.color.FFFFFF'))
+            Text('智能仓储统计')
+              .fontColor($r('app.color.FFFFFF'))
+              .fontSize($r('app.float.fontSize_15_2'))
+          }
+          .width('85%')
+          .justifyContent(FlexAlign.Start)
+          .margin({ left: '3%' })
+          .onClick(() => {
+            router.back()
+          })
+        } .height('4%').width('100%').justifyContent(FlexAlign.Start)
+
+        Row(){
+          Column(){
+              Row(){
+                Column(){
+                  Stack({ alignContent: Alignment.Center }) {
+                    Progress({
+                      value: 75,
+                      total: 100,
+                      type: ProgressType.Ring
+                    })
+                      .width('100%')
+                      .style({ strokeWidth: $r('app.float.virtualSize_9_6') })
+                      .backgroundColor($r('app.color.20FFFFFF'))
+
+                    Column() {
+                      Text("75%")
+                        .fontSize($r('app.float.fontSize_30')) // 大号数字
+                        .fontColor($r('app.color.FFFFFF'))
+                        //.margin({ bottom: $r('app.float.virtualSize_4_8') })
+                    }
+                    .alignItems(HorizontalAlign.Center)
+                  }
+                  .width('70%')
+                  .aspectRatio(1) // 保持圆形比例
+
+                  Text("仓储占用率")
+                    .fontColor($r('app.color.FFFFFF'))
+                     .fontSize($r('app.float.fontSize_10'))
+                     .fontWeight(FontWeight.Lighter)
+                     .margin({top:'4%'})
+                }
+                .width('65%')
+                .justifyContent(FlexAlign.Center)
+                Column(){
+                  Column(){
+                    Text("20")
+                      .fontColor($r('app.color.FFFFFF'))
+                      .fontSize($r('app.float.fontSize_19_2'))
+                    Text("空箱")
+                      .fontColor($r('app.color.FFFFFF'))
+                      .fontSize($r('app.float.fontSize_10'))
+                      .fontWeight(FontWeight.Lighter)
+                  }
+                  Column(){
+                    Text("100")
+                      .fontColor($r('app.color.FFFFFF'))
+                      .fontSize($r('app.float.fontSize_19_2'))
+                    Text("当前箱数")
+                      .fontColor($r('app.color.FFFFFF'))
+                      .fontSize($r('app.float.fontSize_10'))
+                      .fontWeight(FontWeight.Lighter)
+                  }
+                  Column(){
+                    Text("182")
+                      .fontColor($r('app.color.FFFFFF'))
+                      .fontSize($r('app.float.fontSize_19_2'))
+                    Text("总储位")
+                      .fontColor($r('app.color.FFFFFF'))
+                      .fontSize($r('app.float.fontSize_10'))
+                      .fontWeight(FontWeight.Lighter)
+                  }
+                }
+                .width('30%')
+                .height('90%')
+                .backgroundColor($r('app.color.20000000'))
+                .justifyContent(FlexAlign.SpaceAround)
+              }
+              .alignItems(VerticalAlign.Center)
+              .height('45%')
+              .width('90%')
+              .backgroundColor($r('app.color.10FFFFFF'))
+              .borderRadius($r('app.float.virtualSize_9_6'))
+              Column(){
+                Column(){
+                  Text("存取频率")
+                    .fontColor($r('app.color.FFFFFF'))
+                    .fontSize($r('app.float.fontSize_15_2'))
+                  }
+                .height('15%')
+                .justifyContent(FlexAlign.Center)
+
+                LineChart()
+                  .width('80%')
+                  .height('80%')
+
+              }
+              .height('45%')
+              .width('90%')
+              .backgroundColor($r('app.color.10FFFFFF'))
+              .borderRadius($r('app.float.virtualSize_9_6'))
+          }.justifyContent(FlexAlign.SpaceEvenly).margin({top:'5%'})
+          .height('100%')
+          .width('30%')
+          .backgroundColor($r('app.color.10FFFFFF'))
+
+          Column(){
+            Column(){
+              Text("订单物料状况")
+                .fontColor($r('app.color.FFFFFF'))
+                .fontSize($r('app.float.fontSize_15_2'))
+            }.height('10%').justifyContent(FlexAlign.Center)
+            StaticOrderList({
+              workOrders:this.workOrderArray,
+            }).width('90%').height('86%')
+          }.justifyContent(FlexAlign.Start).margin({top:'5%'})
+          .height('100%')
+          .width('30%')
+          .backgroundColor($r('app.color.10FFFFFF'))
+
+
+          Column(){
+            Column(){
+              Text("当前库存")
+                .fontColor($r('app.color.FFFFFF'))
+                .fontSize($r('app.float.fontSize_15_2'))
+            }.height('10%').justifyContent(FlexAlign.Center)
+
+            Row() {
+              // 左侧二维码图标
+              Image($r('app.media.material_qr_code'))// 请替换为您的二维码图片资源
+                .width($r('app.float.virtualSize_16_8'))
+                .height($r('app.float.virtualSize_16_8'))
+                .fillColor($r('app.color.FFFFFF'))
+                .margin({ left: '2%' })
+              // 扫码输入框
+              TextInput({ placeholder: '请扫描物料编码' })
+                .type(InputType.Normal)
+                .placeholderFont({ size: $r('app.float.fontSize_12') })
+                .placeholderColor($r('app.color.30FFFFFF'))
+                .fontSize($r('app.float.fontSize_12'))
+                .fontColor($r('app.color.FFFFFF'))
+                .enableKeyboardOnFocus(false)
+            }
+            .height('8%')
+            .width('80%')
+            .borderRadius($r('app.float.virtualSize_7_2'))
+            .backgroundColor($r('app.color.000000'))
+
+            StaticMaterialList().width('90%').height('76%').margin({top:'3%'})
+
+          }.justifyContent(FlexAlign.Start).margin({top:'5%'})
+          .height('100%')
+          .width('30%')
+          .backgroundColor($r('app.color.10FFFFFF'))
+
+        }.height('80%').width('100%').justifyContent(FlexAlign.SpaceAround)
+      }
+      .width('100%')
+      .height('100%')
+      .backgroundColor($r('app.color.000000'))
+    }
+    .height('100%')
+  }
+}
+
+
+
+

+ 2 - 3
entry/src/main/ets/pages/LittleMaterialsStorage.ets

@@ -104,6 +104,7 @@ struct LittleMaterialsStorage{
                       .placeholderColor($r('app.color.30FFFFFF'))
                       .fontSize($r('app.float.fontSize_12'))
                       .fontColor($r('app.color.FFFFFF'))
+                      .enableKeyboardOnFocus(false)
                   }
                   .margin({top:'3%'})
                   .height('8%')
@@ -251,9 +252,6 @@ struct LittleMaterialsStorage{
                     Text("扫码录入")
                       .fontColor($r('app.color.FFFFFF'))
                       .fontSize($r('app.float.fontSize_15_2'))
-                    Text('电机生产订单DWS123331223332(电路板-SDASDASFSADASD)')
-                      .fontColor($r('app.color.FFFFFF'))
-                      .fontSize($r('app.float.fontSize_8'))
                   }.height('100%').width('65%').alignItems(HorizontalAlign.Start).justifyContent(FlexAlign.Center)
                   Row() {
                     // 左侧二维码图标
@@ -269,6 +267,7 @@ struct LittleMaterialsStorage{
                       .placeholderColor($r('app.color.30FFFFFF'))
                       .fontSize($r('app.float.fontSize_12'))
                       .fontColor($r('app.color.FFFFFF'))
+                      .enableKeyboardOnFocus(false)
                   }.width('35%')
                   .borderRadius($r('app.float.virtualSize_7_2'))
                   .backgroundColor($r('app.color.000000'))

+ 3 - 6
entry/src/main/ets/pages/RgvControl.ets

@@ -30,7 +30,7 @@ struct RgvControl {
   @State rgvPosition : string = ""
   @State rgvBatteryLevel  : string = ""
   @State rgvCurrentStatus: string = ""
-  @State rgvInfoInterval: number | null = null;
+  @State rgvInfoInterval: number = 0;
 
   commonDialogController: CustomDialogController | null = null;
   // rgv开机
@@ -302,11 +302,8 @@ struct RgvControl {
     }, 1000);
   }
 
-  boutToDisappear(): void {
-    if (this.rgvInfoInterval) {
-      clearInterval(this.rgvInfoInterval);
-      this.rgvInfoInterval = null;
-    }
+  aboutToDisappear(): void {
+    clearInterval(this.rgvInfoInterval);
   }
 
   build() {

+ 6 - 0
entry/src/main/ets/params/LogParam.ets

@@ -0,0 +1,6 @@
+export  class LogInfo {
+  // 日志数据
+  logData?: string
+  // 日期
+  date?: string
+}

+ 5 - 5
entry/src/main/ets/params/OrderMaterialsStorageParams.ets

@@ -5,11 +5,11 @@ export interface OrderParams {
   progress: string
 }
 
-export interface DemandMaterial {
-  materialName: string,
-  materialType: string,
-  inBoundNum: number,
-  planNum: number
+export class DemandMaterial{
+  materialName?: string
+  materialType?: string
+  inBoundNum?: number
+  planNum?: number
 }
 
 export interface MaterialItem {

+ 263 - 0
entry/src/main/ets/view/wms/CallMaterialNotification.ets

@@ -0,0 +1,263 @@
+//叫料通知
+import WorkOrderInfo from '../../viewmodel/wms/WorkOrderInfo'
+import {OrderParams,DemandMaterial} from "../../params/OrderMaterialsStorageParams"
+
+@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_12'))
+          .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_8'))
+            .fontWeight(FontWeight.Lighter)
+
+          Text(`工序: ${this.item.planStartWhen}`)
+            .fontColor(this.item.workOrderState=="完成"?$r('app.color.FFFFFF'):$r('app.color.30FFFFFF'))
+            .fontSize($r('app.float.fontSize_8'))
+            .fontWeight(FontWeight.Lighter)
+
+          Row() {
+            Text('通知时间:')
+              .fontColor(this.item.workOrderState=="完成"?$r('app.color.FFFFFF'):$r('app.color.30FFFFFF'))
+              .fontSize($r('app.float.fontSize_8'))
+              .fontWeight(FontWeight.Lighter)
+
+            Text(`${(Number(this.item.inventoryNum) / Number(this.item.planNum) * 100).toFixed(0)}%`)
+              .fontColor(this.item.workOrderState=="完成"?$r('app.color.FFFFFF'):$r('app.color.30FFFFFF'))
+              .fontSize($r('app.float.fontSize_8'))
+              .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_12'))
+          .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_9_6'))
+    .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.scaleValue = 1; // 0.2秒后恢复
+        this.searchRequestMaterial()
+        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[]
+  //@Link selectWorkOrder: WorkOrderInfo
+  // 选中回调函数
+  controller: CustomDialogController
+  searchRequestMaterial: () => void = () => {}
+
+  aboutToAppear() {
+    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_15_2'))
+      }.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.20FFFFFF'))
+      Column(){
+        Text('关闭')
+          .fontColor($r('app.color.60FFFFFF'))
+          .fontSize($r('app.float.fontSize_12'))
+      }
+      .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_11_6'))
+  }
+}
+
+
+
+@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_15_2'))
+      }.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_8'))
+                    .fontColor($r('app.color.FFFFFF'))
+                    .width('90%')
+                    .textAlign(TextAlign.Start)
+                  Text(`型号: ${item.materialType}`)
+                    .fontSize($r('app.float.fontSize_8'))
+                    .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_15_2'))
+                    .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.20FFFFFF'))
+      Column(){
+        Text('关闭')
+          .fontColor($r('app.color.60FFFFFF'))
+          .fontSize($r('app.float.fontSize_12'))
+      }
+      .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_11_6'))
+  }
+}

+ 1 - 0
entry/src/main/ets/view/wms/OrderMaterialStorageSecondStep.ets

@@ -84,6 +84,7 @@ export struct OrderMaterialStorageSecondStep {
                 .placeholderColor($r('app.color.30FFFFFF'))
                 .fontSize($r('app.float.fontSize_12'))
                 .fontColor($r('app.color.FFFFFF'))
+                .enableKeyboardOnFocus(false)
             }
             .margin({top:'3%'})
             .height('8%')

+ 1 - 0
entry/src/main/ets/view/wms/OrderMaterialStorageThirdStep.ets

@@ -41,6 +41,7 @@ export struct OrderMaterialStorageThirdStep {
                 .placeholderColor($r('app.color.30FFFFFF'))
                 .fontSize($r('app.float.fontSize_12'))
                 .fontColor($r('app.color.FFFFFF'))
+                .enableKeyboardOnFocus(false)
             }.width('35%')
             .borderRadius($r('app.float.virtualSize_7_2'))
             .backgroundColor($r('app.color.000000'))

+ 79 - 0
entry/src/main/ets/view/wms/WarehousingLog.ets

@@ -0,0 +1,79 @@
+import {LogInfo} from '../../params/LogParam'
+@CustomDialog
+export struct WarehousingLogDialog {
+  private scrollerForList: Scroller = new Scroller()
+  @State warehousingLogs: LogInfo[] = [
+    {logData: '1#抽屉收回', date: '2025/11/11 11:11:1'},
+    {logData: '1#抽屉收回', date: '2025/11/11 11:11:1'},
+    {logData: '1#抽屉收回', date: '2025/11/11 11:11:1'},
+    {logData: '1#抽屉收回', date: '2025/11/11 11:11:1'},
+    {logData: '1#抽屉收回', date: '2025/11/11 11:11:1'},
+    {logData: '1#抽屉收回', date: '2025/11/11 11:11:1'},
+    {logData: '1#抽屉收回', date: '2025/11/11 11:11:1'},
+    {logData: '1#抽屉收回', date: '2025/11/11 11:11:1'},
+  ];
+
+  controller: CustomDialogController
+  onConfirm: () => void = () => {}
+
+  build() {
+    Column() {
+      Column(){
+        Text('仓储日志')
+          .fontColor($r('app.color.FFFFFF'))
+          .fontSize($r('app.float.fontSize_15_2'))
+      }.height('6%')
+      .justifyContent(FlexAlign.Center)
+
+      Column() {
+        List({scroller:this.scrollerForList}) {
+          ForEach(this.warehousingLogs, (item:LogInfo) => {
+            ListItem() {
+                Column(){
+                  Text(item.logData)
+                    .fontSize($r('app.float.fontSize_10'))
+                    .fontColor($r('app.color.FFFFFF'))
+                    .width('100%')
+                    .textAlign(TextAlign.Start)
+                  Text(`${item.date}`)
+                    .fontSize($r('app.float.fontSize_10'))
+                    .fontColor($r('app.color.60FFFFFF'))
+                    .width('100%')
+                    .textAlign(TextAlign.Start)
+              }.width('100%').justifyContent(FlexAlign.Center).height('10%')
+            }
+          })
+        }
+        .width('95%')
+        .height('100%')
+      }
+      .width('100%')
+      .height('80%')
+      .margin({bottom:'2%',top:'1%'})
+
+      Divider()
+        .vertical(false)
+        .strokeWidth(1)
+        .color($r('app.color.20FFFFFF'))
+      Column(){
+        Text('关闭')
+          .fontColor($r('app.color.60FFFFFF'))
+          .fontSize($r('app.float.fontSize_12'))
+      }
+      .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_11_6'))
+  }
+}

+ 4 - 0
entry/src/main/resources/base/element/color.json

@@ -33,6 +33,10 @@
       "value": "#66000000"
     },
     {
+      "name":"20000000",
+      "value": "#33000000"
+    },
+    {
       "name": "30D158",
       "value": "#30D158"
     },

+ 4 - 0
entry/src/main/resources/base/element/font_size.json

@@ -9,6 +9,10 @@
       "value": "21fp"
     },
     {
+      "name": "fontSize_30",
+      "value": "45fp"
+    },
+    {
       "name": "fontSize_12",
       "value": "18fp"
     },

+ 2 - 1
entry/src/main/resources/base/profile/main_pages.json

@@ -7,6 +7,7 @@
     "pages/Menu",
     "pages/LittleMaterialsStorage",
     "pages/LittleMaterialOutBound",
-    "pages/RgvControl"
+    "pages/RgvControl",
+    "pages/IntelligentWarehousingStatics"
   ]
 }