【HarmonyOS4.0】第七篇-ArkUI系统组件(二)

news2025/1/12 9:51:00

鸿蒙开发系统组件详细剖析

五、进度条组件

进度条也是UI开发最常用的组件之一,ArkUI开发框架提供了两种类型的进度条: ProgressLoadingProgress ,前者可以精准指定进度,后者表示正在加载的状态,我们接下来对它们分别做下介绍。

5.1.Progress

5.1.1.Progress定义介绍

Progress 组件可以精确的设置当前进度条的进度,它主要用在有加载进度的场景。

Progress(options: {value: number, total?: number, type?: ProgressType})

创建进度组件,用于显示内容加载或操作处理进度。说明如下:

options:进度条参数配置项,ProgressOptions 参数说明如下:

  • value:表示当前进度,取值范围[0, 100],当超过 100 时无效。
  • total:表示进度条总进度,默认值为100。
  • type、style:设置进度条的样式, style 从 API 8 起使用 type 代替, ProgressType 定义了以下 2 种样式:
    • Linear:进度条样式为条形进度条
    • Eclipse:进度条样式为圆形进度条
    • Ring:环形进度条
    • ScaleRing:环形刻度进度条
    • Capsule:胶囊样式进度条

案例如下:

@Entry
@Component
struct ProgressPage {
  build() {
    Column(){
      Progress({
        value:70,                       //设置当前进度
        type: ProgressType.ScaleRing     //设置进度条的样式为环形刻度样式
      })
        .size({width:150, height:150})

      Progress({
        value:45,                       //设置当前进度
        total:100,                      //设置进度总量
        type: ProgressType.Capsule     //设置进度条的样式为胶囊样式
      })
        .size({width:150, height:60})
        .margin({top:20})

      Progress({
        value:50,                       //设置当前进度
        total:100,                      //设置进度总量
        type: ProgressType.Eclipse     //设置进度条的样式为圆形样式
      })
        .size({width:120, height:120})
        .margin({top:20})

      Progress({
        value:45,                       //设置当前进度
        total:100,                      //设置进度总量
        type: ProgressType.Linear       //设置进度条的样式为条形样式
      })
        .size({width:"90%", height:60})
        .margin({top:20})

      Progress({
        value:45,                       //设置当前进度
        total:100,                      //设置进度总量
        type: ProgressType.Ring         //设置进度条的样式为环形样式
      })
        .size({width:150, height:150})
        .margin({top:20})
    }
    .width("100%")
    .padding(20)
  }
}

执行如下:

img

5.1.2.Progress属性介绍

value:设置当前进度值。

style:设置进度条的样式,样式说明如下:

  • strokeWidth:设置进度条宽度。
  • scaleCount:设置环形进度条总刻度数。
  • scaleWidth:设置环形进度条刻度粗细。

color:设置进度条的颜色,默认为蓝色。

样式设置案例如下:

@Entry
@Component
struct ProgressPage {
  build() {
    Column(){
      Progress({
        value:70,                       //设置当前进度
        type: ProgressType.ScaleRing     //设置进度条的样式为环形刻度样式
      })
        .size({width:150, height:150})
        .style({
          scaleCount:20,  //设置环形进度条刻度梳理
          scaleWidth:10   //设置环形进度条刻度粗细
        })
        .color(Color.Red) //设置颜色

      Progress({
        value:45,                       //设置当前进度
        total:100,                      //设置进度总量
        type: ProgressType.Capsule     //设置进度条的样式为胶囊样式
      })
        .size({width:150, height:60})
        .margin({top:20})
        .color("#6495ED") //设置颜色

      Progress({
        value:50,                       //设置当前进度
        total:100,                      //设置进度总量
        type: ProgressType.Eclipse     //设置进度条的样式为圆形样式
      })
        .size({width:120, height:120})
        .margin({top:20})



      Progress({
        value:45,                       //设置当前进度
        total:100,                      //设置进度总量
        type: ProgressType.Linear       //设置进度条的样式为条形样式
      })
        .size({width:"90%", height:60})
        .margin({top:20})
        .style({strokeWidth:30})  //设置进度条线条宽度

      Progress({
        value:45,                       //设置当前进度
        total:100,                      //设置进度总量
        type: ProgressType.Ring         //设置进度条的样式为环形样式
      })
        .size({width:150, height:150})
        .margin({top:20})
        .style({strokeWidth:20})     //设置进度条线条宽度
    }
    .width("100%")
    .padding(20)
  }
}

预览效果如下:

img

5.2.LoadingProgress

LoadingProgressProgress 的区别是不能精确指定进度条的进度,它是一个一直加载的动画,主要是向用户提示任务正在运行中。

5.2.1:LoadingProgress定义

LoadingProgress()

创建加载进展组件。LoadingProgress 没有定义任何参数。案例如下:

LoadingProgress().width(180).height(180)

预览后结果如下:

img

5.2.2.LoadingProgress属性介绍

只有一个属性:

名称参数类型描述
colorResourceColor设置加载进度条前景色。从API version 9开始,该接口支持在ArkTS卡片中使用。

案例如下:

@Entry
@Component
struct ProgressPage02 {
  @State intervalID:number = 0;
  @State value:number = 0;

  build() {
    Column(){

      LoadingProgress()
        .width(180)
        .height(180)
        .color("#4B0082") //设置进度条的前景颜色

    }
    .width("100%")
    .padding(20)
  }
}

预览后效果如下:

img

六、选择器组件

ArkUI开发框架提供了一系列比较常用的选择器,比如文本选择器 TextPicker 、时间选择器 TimePicker 以及日期选择器 DatePicker

6.1.TimePicker

TimePicker 是选择时间的滑动选择器组件,默认以 00:00 至 23:59 的时间区创建滑动选择器。

6.1.1:TimePicker定义

接口:默认以24小时的时间区间创建滑动选择器

TimePicker(options?: {selected?: Date})

options:创建时间选择器的可选配置参数, TimePickerOptions 说明如下:

  • selected:设置选择器的默认选中时间。

参数:

参数名参数类型必填参数描述
selectedDate设置选中项的时间。默认值:当前系统时间

案例如下所示:

@Entry
@Component
struct TimePickerPage{
  build() {
    Column(){
      TimePicker({selected: new Date()}) //设置默认当前事件
        .width(200)
        .height(150)
        .backgroundColor("#40E0D0")
    }
    .width("100%")
    .padding(20)
  }
}

预览结果如下:

img

6.1.2.TimePicker属性介绍

除支持通用属性外,还支持以下属性:

名称参数类型描述
useMilitaryTimeboolean展示时间是否为24小时制,不支持动态修改。默认值:false

除支持通用事件外,还支持以下事件:

名称功能描述
onChange(callback: (value: TimePickerResult ) => void)选择时间时触发该事件。

案例如下:

@Entry
@Component
struct TimePickerPage{
  @State isMilitaryTime:boolean = true //默认状态为true
  @State selectedTime:Date = new Date('1998-07-27T08:00:00')

  build() {
    Column(){  // 创建一个垂直布局的列
      Button('切换:12小时制/24小时制')  // 创建一个按钮,显示文本为“切换:12小时制/24小时制”
        .margin({top:30,bottom:30})  // 设置按钮的上下外边距为30
        .onClick(()=>{  // 监听按钮的点击事件
          //点击一次就取反,以此来控制切换
          this.isMilitaryTime = !this.isMilitaryTime;  // 点击按钮时切换 isMilitaryTime 状态变量的值
        })

      TimePicker({selected:this.selectedTime})  // 创建一个时间选择器,设置默认选中时间为 this.selectedTime
        .useMilitaryTime(this.isMilitaryTime)  // 根据 isMilitaryTime 状态变量切换时间制(12小时制或24小时制)
        .onChange((value:TimePickerResult)=>{  // 监听时间选择器数值变化事件
          //设置小时,单位:分钟
          this.selectedTime.setHours(value.hour, value.minute);  // 根据选择的时间设置 this.selectedTime 的小时和分钟
          console.info('select current date is:'+JSON.stringify(value));  // 在控制台输出选择的时间信息
        })
    }
    .width("100%")
    .padding(20)
  }
}

预览效果如下:

img

6.2.DatePicker

DatePicker 是选择日期的滑动选择器组件,默认以 1970-1-1 至 2100-12-31 的日期区间创建滑动选择器。

6.2.1.DatePicker定义

接口:

DatePicker(options?: {start?: Date, end?: Date, selected?: Date})

上面的接口可以根据指定范围的Date创建可以选择日期的滑动选择器,参数:

参数名参数类型必填参数描述
startDate指定选择器的起始日期。默认值:Date(‘1970-1-1’)
endDate指定选择器的结束日期。默认值:Date(‘2100-12-31’)
selectedDate设置选中项的日期。默认值:当前系统日期

案例如下:

@Entry
@Component
struct DatePickPage{
  @State isMilitaryTime:boolean = true //默认状态为true
  @State selectedTime:Date = new Date('1998-07-27T08:00:00')

  build() {
    Column(){  // 创建一个垂直布局的列
      DatePicker({
        start:new Date("2012-1-1"), // 设置开始时间
        end:new Date("2032-1-1")    // 设置结束时间
      })
        .width(255)
        .height(120)
        .backgroundColor("#AFEEEE")
    }
    .width("100%")
    .padding(20)
  }
}

执行后效果如下:

img

6.2.2:DatePicker属性介绍

除支持通用属性外,还支持以下属性:

名称参数类型描述
lunarboolean日期是否显示农历。- true:展示农历。- false:不展示农历。默认值:false

案例如下所示:

@Entry
@Component
struct DatePickPage{
  build() {
    Column(){  // 创建一个垂直布局的列
      DatePicker({
        start:new Date("2012-1-1"), // 设置开始时间
        end:new Date("2032-1-1")    // 设置结束时间
      })
        .lunar(true)    //设置显示农历
        .width(255)
        .height(120)
        .backgroundColor("#AFEEEE")
    }
    .width("100%")
    .padding(20)
  }
}

预览效果如下:

img

6.2.3:DatePicker事件介绍

除支持通用事件外,还支持以下事件:

名称功能描述
onChange(callback: (value: DatePickerResult) => void)选择日期时触发该事件。

DatePickerResult对象说明:

名称参数类型描述
yearnumber选中日期的年。
monthnumber选中日期的月(0~11),0表示1月,11表示12月。
daynumber选中日期的日

案例如下:点击按钮可以切换农历和公历

@Entry
@Component
struct DatePickPage02{
  @State isLunar:boolean = false //默认状态为true
  @State selectedDate:Date = new Date('1998-07-27T08:00:00')

  build() {
    Column(){  // 创建一个垂直布局的列
      Button("切换公历/农历")  // 创建一个按钮,显示文本为“切换公历/农历”
        .margin({top:30,bottom:30})  // 设置按钮的上下外边距为30
        .onClick(()=>{  // 监听按钮的点击事件
          this.isLunar = !this.isLunar;  // 点击按钮时切换 isLunar 状态变量的值
        })

      DatePicker({  // 创建一个日期选择器
        start: new Date('1970-1-1'),  // 设置起始日期为1970年1月1日
        end: new Date('2099-1-1'),  // 设置结束日期为2099年1月1日
        selected: this.selectedDate  // 设置默认选中日期为 this.selectedDate
      })
        .lunar(this.isLunar)  // 根据 isLunar 状态变量切换日期显示为公历或农历
        .onChange((value:DatePickerResult)=>{  // 监听日期选择器数值变化事件
          this.selectedDate.setFullYear(value.year, value.month, value.day);  // 根据选择的日期设置 this.selectedDate 的年、月、日,切换过去就是之前选择的时间
          console.info('select current date is: '+JSON.stringify(value));  // 在控制台输出选择的日期信息
        })
    }
    .width("100%")
    .padding(20)
  }
}

预览效果如下:

img

七、二维码组件

二维码的使用场景,比如扫码添加好友,扫码骑车,扫码支付等等,ArkUI开发框架提供了 RQCode 组件生成一个二维码。

接口:

QRCode(value: string)

参数:

参数名参数类型必填参数描述
valuestring二维码内容字符串。最大支持256个字符,若超出,则截取前256个字符。说明:该字符串内容确保有效,不支持null、undefined以及空内容。

属性

除支持通用属性外,还支持以下属性。

名称参数类型描述
colorResourceColor设置二维码颜色。默认值:Color.Black从API version 9开始,该接口支持在ArkTS卡片中使用。
backgroundColorResourceColor设置二维码背景颜色。默认值:Color.White从API version 9开始,该接口支持在ArkTS卡片中使用。

案例如下:

@Entry
@Component
struct QRCodePage {
  @State value: string = "念去去,千里烟波暮霭程程楚天阔";

  build() {
    Column({space:5}){
      Text("不带颜色")
        .fontSize(25)
        .width("90%")
        .fontColor("#696969")
        .fontWeight(FontWeight.Bold)
        .textAlign(TextAlign.Center)
      QRCode(this.value).width(200).height(200)

      Text("设置二维码颜色")
        .fontSize(25)
        .width("90%")
        .fontColor("#696969")
        .fontWeight(FontWeight.Bold)
        .textAlign(TextAlign.Center)
      QRCode(this.value).width(200).height(200).color("#F08080")

      Text("设置二维码颜色和背景颜色")
        .fontSize(25)
        .width("90%")
        .fontColor("#696969")
        .fontWeight(FontWeight.Bold)
        .textAlign(TextAlign.Center)
      QRCode(this.value).width(200).height(200).color("#F08080").backgroundColor("#D3D3D3")

    }.width("100%").margin({top:10})
  }
}

设置后如下:

img

八、开关组件

ArkUI开发框架 Toggle组件提供勾选框样式、状态按钮样式及开关样式。

子组件:仅当ToggleType为Button时可包含子组件。

8.1.Toggle定义

接口

Toggle(options: { type: ToggleType, isOn?: boolean })

参数:

参数名参数类型必填参数描述
typeToggleType开关的样式。
isOnboolean开关是否打开,true:打开,false:关闭。默认值:false

ToggleType枚举说明,从API version 9开始,该接口支持在ArkTS卡片中使用。

名称描述
Checkbox提供单选框样式。说明:通用属性margin的默认值为:{top: 12 vp,right: 12 vp,bottom: 12 vp,left: 12 vp}
Button提供状态按钮样式,如果子组件有文本设置,则相应的文本内容会显示在按钮内部。
Switch提供开关样式。说明:通用属性margin的默认值为:{top: 14 vp,right: 6 vp,bottom: 6 vp,left: 14 vp}

按钮样式案例如下:

@Entry
@Component
struct TogglePage {
  build() {
    Column({space:20}){
      Row(){
        Text("开关样式:").fontWeight(FontWeight.Bold).fontSize(25)
        Toggle({type:ToggleType.Switch}).width(30)
      }
      .width("100%")
      .justifyContent(FlexAlign.Center)

      Row(){
        Text("单选框样式:").fontWeight(FontWeight.Bold).fontSize(25)
        Toggle({type:ToggleType.Checkbox}).width(30)
      }
      .width("100%")
      .justifyContent(FlexAlign.Center)

      //按钮样式
      Row(){
        Toggle({type:ToggleType.Button}){
          Text("注册").fontSize(30)
        }.width("80%").height(50)
      }
      .width("100%")
      .justifyContent(FlexAlign.Center)
    }
    .width("100%")
    .padding({top:20})
  }
}

执行后如下:

img

8.2.Toggle属性介绍

除支持通用属性外,还支持以下属性:

名称参数参数描述
selectedColorResourceColor设置组件打开状态的背景颜色。从API version 9开始,该接口支持在ArkTS卡片中使用。
switchPointColorResourceColor设置Switch类型的圆形滑块颜色。说明:仅对type为ToggleType.Switch生效。从API version 9开始,该接口支持在ArkTS卡片中使用。

修改之前的代码,设置按钮的颜色如下:

@Entry
@Component
struct TogglePage {
  build() {
    Column({space:20}){
      Row(){
        Text("开关样式:").fontWeight(FontWeight.Bold).fontSize(25)
        Toggle({type:ToggleType.Switch})
          .selectedColor("#6495ED") //设置组件打开状态的背景颜色为蓝色
          .switchPointColor("#A9A9A9") //设置type是Switch的圆形滑块颜色为灰色
      }
      .width("100%")
      .justifyContent(FlexAlign.Center)

      Row(){
        Text("单选框样式:").fontWeight(FontWeight.Bold).fontSize(25)
        Toggle({type:ToggleType.Checkbox})
          .width(30)
          .selectedColor("#6495ED") //设置组件打开状态的背景颜色为蓝色
          .switchPointColor("#A9A9A9") //设置type是Switch的圆形滑块颜色为灰色
      }
      .width("100%")
      .justifyContent(FlexAlign.Center)

      //按钮样式
      Row(){
        Toggle({type:ToggleType.Button}){
          Text("注册").fontSize(30)
        }
        .width("80%")
        .height(50)
        .selectedColor("#6495ED") //设置组件打开状态的背景颜色为蓝色
        .switchPointColor("#A9A9A9") //设置type是Switch的圆形滑块颜色为灰色
      }
      .width("100%")
      .justifyContent(FlexAlign.Center)
    }
    .width("100%")
    .padding({top:20})
  }
}

执行后如下:

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1374726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅析NVMe key per IO加密技术-3

三、Key per IO行业规范支持情况 Key Per I/O功能在行业规范中的支持情况: NVMe标准已经批准并采纳了NVMe TP4055提案,明确支持并定义了如何使用每个I/O操作独立的加密密钥技术。这意味着NVMe设备可以实现对每一个数据传输请求进行单独加密,…

6.2 声音编辑工具GoldWave5简介(1)

不管你的MP3歌曲的简单剪接或者音频格式的转换,还是更加高级的后期加工 GoldWave5都可以令你轻松胜,甚至你自己录一首卡拉OK,也可以经过GoldWave5的修饰成为像歌星一样水晶般的动人声音!除了附有许多的效果处理功能外,它还能将编辑好的文件存成WAV、AU、SND、RAW、A…

Rust类型之字符串

字符串 Rust 中的字符串类型是String。虽然字符串只是比字符多了一个“串”字,但是在Rust中这两者的存储方式完全不一样,字符串不是字符的数组,String内部存储的是Unicode字符串的UTF8编码,而char直接存的是Unicode Scalar Value…

QT问题 ui提升部件时No such file or directory

问题: qt使用ui对部件提升在编译时找不到对应的头文件 出错原因: 因为将部件提升为自定义部件后,在编译时会去默认的路径下去找头文件,而自定义的头文件并不在默认路径文件下,而是在当前目录下,所以这个时候需要自己指定出自…

python opencv怎么安装

1、安装python 注意:windows10 安装时强烈建议不用使用 Windows Store 安装。避免后期python运行时牵扯权限相关问题。 具体步骤: 1、前往python官网下载windows python 安装包 2、双击运行安装(强力建议自定义安装,勾选pip&#…

【随笔】程序员必备的面试技巧,如何成为那个令HR们心动的程序猿!

大家好,我是全栈小5,欢迎阅读文章! 此篇是【话题达人】序列文章,这一次的话题是《程序员必备的面试技巧》 文章将以博主的角度讲讲C#开发语言类面试的经验和技巧。 祝大家面试都能顺利拿到理想的Offer。 目录 背景面试方向信息分析…

outlook邮件群发单显技巧?群发怎么单显?

outlook邮件群发单显如何设置?QQ邮箱怎么群发单显? 在群发邮件时,如何让每个收件人只看到自己的名字,而不是其他人的名字,这就涉及到所谓的“单显”技巧。下面蜂邮EDM就为大家揭秘Outlook邮件群发单显的奥秘。 outlo…

c语言:知识点、易错题

c程序的特点; 简洁紧凑、灵活方便运算符丰富数据结构丰富C语言是结构式语言语法限制不太严格、程序设计自由度大允许直接访问物理地址、直接对硬件操作生成代码质量高、程序执行效率高使用范围大、可移植性好介于高级语言与低级语言之间自检机制比较弱缺乏代码重用…

RabbitMQ安装和快速入门

文章目录 1. RabbitMQ2. 安装RabbitMQ2.1 创建shell文件2.2 编写shell文件2.3 检查rabbitmq状态2.4 设置开机自启动2.5 启动插件2.6 开放端口号2.7 创建用户2.8 登入管理页面 3. SpringBoot中集成RabbitMQ3.1 依赖安装3.2 SpringBoot配置3.3 RabbitMQ的配置类3.4 定义消费者和生…

【论文阅读】Deep Graph Infomax

目录 0、基本信息1、研究动机2、创新点2.1、核心思想:2.2、思想推导: 3、准备3.1、符号3.2、互信息3.3、JS散度3.4、Deep InfoMax方法3.5、判别器:f-GAN估计散度 4、具体实现4.1、局部-全局互信息最大化4.2、理论动机 5、实验设置5.1、直推式…

ubuntu 挂载新硬盘

1、检测新硬盘 新增加硬盘,检测硬盘识别情况。 命令检查:sudo fdisk -l 3、格式化磁盘 格式化:sudo mkfs.ext4 /dev/sdb 其中,/dev/sdb是新分区的设备文件名,ext4是要使用的文件系统类型。 4、挂载新分区 sudo mk…

uni-app中实现音乐播放器

uni-app中实现音乐播放器 1、主要利用的是uni-app中提供的uni.createInnerAudioContext()来进行实现&#xff1b; 2、代码示例 &#xff08;1&#xff09;主页面代码展示 <template><view class"music-layout"><view class"tn-flex">…

nvm管理多版本Node.js

nvm管理多版本Node.js 可能大家都曾苦恼于Node环境问题&#xff0c;某个项目需要升版本&#xff0c;某项目又需要降&#xff0c;甚至还出现npm版本与Node对不上的情况。 通过nvm进行版本管理&#xff0c;即可解决。 卸载Node 通过命令行输入node -v命令查看是否已安装Node&…

Realm Management Extension领域管理扩展之颗粒保护检查

本节描述了RME引入的颗粒保护检查。颗粒保护检查使得能够在不同的物理地址空间之间动态分配内存区域。 本节将向您介绍以下功能: 颗粒保护表的结构用于颗粒保护检查的故障报告区域在物理地址空间之间的过渡正如在物理地址一节中所述,RME提供了四个物理地址空间。以下图表显示…

金额用Long还是BigDecimal?

问题 今天在网上看到一个有意思的问题&#xff0c;金额的数据类型用Long还是BigDecimal&#xff1f; 具体问题大概是这样的&#xff1a;关于金额的数据类型&#xff0c;组长认为使用BigDecimal比较稳妥&#xff0c;总监认为使用Long才不会出问题&#xff0c;然后开发认为Long…

85.乐理基础-记号篇-速度记号

内容来源于&#xff1a;三分钟音乐社 上一个内容&#xff1a;85.乐理基础-记号篇-力度记号-CSDN博客 速度记号在下方两个里面已经写过一部分了&#xff0c;这些标记总体上是属于 不变速度 的标记&#xff0c;比如一首乐谱就记了 每分钟60拍&#xff0c;那整首速度就都是不变的…

软件测试|如何在Linux中下载和安装软件包

简介 在Linux操作系统中&#xff0c;下载和安装软件包是一项基本任务。不同的Linux发行版可能有不同的包管理工具和方式&#xff0c;但总体流程是类似的。以下是在Linux中下载和安装软件包的详细步骤。 步骤1&#xff1a;选择适当的包管理工具 因为Linux有不同的发行版本&am…

【Kafka-3.x-教程】-【四】Kafka-消费者-Consumer

【Kafka-3.x-教程】专栏&#xff1a; 【Kafka-3.x-教程】-【一】Kafka 概述、Kafka 快速入门 【Kafka-3.x-教程】-【二】Kafka-生产者-Producer 【Kafka-3.x-教程】-【三】Kafka-Broker、Kafka-Kraft 【Kafka-3.x-教程】-【四】Kafka-消费者-Consumer 【Kafka-3.x-教程】-【五…

JDBC初体验(二)——增、删、改、查

本课目标 理解SQL注入的概念 掌握 PreparedStatement 接口的使用 熟练使用JDBC完成数据库的增、删、改、查操作 SQL注入 注入原理&#xff1a;利用现有应用程序&#xff0c;将&#xff08;恶意的&#xff09;SQL命令注入到后台数据库引擎执行能力&#xff0c;它可以通过在…

芯片命名大全:完整的器件型号包括主体型号、前缀、后缀等!

不少公司的采购会发现&#xff0c;拿到工程师提供的BOM中的器件去采购物料时&#xff0c;经常供应商还会问得更仔细&#xff0c;否则就不知道供给你哪种物料&#xff0c;严重时&#xff0c;采购回来的物料用不了。为什么会有这种情况呢&#xff1f;问题就在于&#xff0c;很多经…