| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- import WorkOrderInfo from '../viewmodel/WorkOrderInfo';
- import OperationInfo from '../viewmodel/process/OperationInfo';
- import promptAction from '@ohos.promptAction';
- import { ProcessStatus } from '../viewmodel/process/EnumerationType';
- interface Tmp {
- index: number;
- item: OperationInfo
- }
- @Component
- export struct OperationList {
- // 必需属性
- @Link @Watch('onWorkOrderChange') selectWorkOder: WorkOrderInfo;
- @Link selectOperationId: string ;
- @Link stationId: string;
- @Link isStationProcess:boolean;
- @Link currentProcessStatus: ProcessStatus
- // 新增:监听selectWorkOder变化的回调
- onWorkOrderChange() {
- this.findAndSelectMatchingOperation();
- }
- findAndSelectMatchingOperation(): void {
- // 如果已经有选中的工序,且该工序匹配当前工位,则保持选中
- if (this.selectOperationId) {
- const currentSelected = this.selectWorkOder.ops?.find(op => op.operationId === this.selectOperationId);
- if (currentSelected && currentSelected.stationId === this.stationId) {
- return; // 当前选中的工序仍然匹配,不需要更改
- }
- }
- // 查找第一个匹配当前工位且未完成的工序
- const matchingOperation = this.selectWorkOder.ops?.find(op =>
- op.stationId === this.stationId && !op.isEnd
- );
- if (matchingOperation) {
- this.selectOperationId = matchingOperation.operationId!;
- this.isStationProcess = true;
- } else {
- promptAction.showToast({
- message: `当前没有该工位未完成工序`,
- duration: 1500,
- });
- this.isStationProcess = false;
- }
- }
- build() {
- List() {
- ForEach(this.selectWorkOder.ops!, (item: OperationInfo, index: number) => {
- ListItem() {
- this.OperationListItem({ item: item, index: index })
- }
- })
- }
- .width('83.4%')
- .height('88.6%')
- .alignListItem(ListItemAlign.Center)
- }
- @Builder
- OperationListItem(params: Tmp) {
- Column() {
- // 工序项
- Row() {
- // 序号
- Row() {
- Text((params.index + 1).toString())
- .fontSize($r('app.float.fontSize_16'))
- .fontColor(this.selectOperationId === params.item.operationId ? $r('app.color.90000000') : $r('app.color.FFFFFF'))
- .fontWeight(FontWeight.Bold)
- }
- .width('14.6%')
- .height('80%')
- .justifyContent(FlexAlign.Center)
- // 工序名称
- Row() {
- Text(params.item.operationName)
- .fontSize($r('app.float.fontSize_16'))
- .fontColor(this.selectOperationId === params.item.operationId ? $r('app.color.90000000') : $r('app.color.FFFFFF'))
- .fontWeight(FontWeight.Regular)
- .padding({ left: 5 })
- }
- .width('70.8%')
- .height('100%')
- .alignItems(VerticalAlign.Center)
- .justifyContent(FlexAlign.Start)
- // 状态图标
- Row() {
- Image(this.selectOperationId === params.item.operationId ?
- $r('app.media.process_current_operation') :
- (params.item.isEnd! ? $r('app.media.process_complete') : ''))
- .width($r('app.float.virtualSize_24'))
- .height($r('app.float.virtualSize_24'))
- .fillColor(this.selectOperationId === params.item.operationId ? $r('app.color.90000000') : $r('app.color.FFFFFF'))
- .opacity(!(this.selectOperationId === params.item.operationId) && !params.item.isEnd! ? 0 : 1)
- }
- .width('14.6%')
- .height('100%')
- .justifyContent(FlexAlign.Center)
- }
- .width('100%')
- .height('70%')
- .borderRadius($r('app.float.virtualSize_40'))
- .backgroundImage(this.selectOperationId === params.item.operationId ?
- $r('app.media.process_select_operation') :
- $r('app.media.process_no_select_operation'))
- .backgroundImageSize(ImageSize.Cover)
- .onClick(async () => {
- if(this.selectOperationId == params.item.operationId!) return
- this.isStationProcess = false;
- this.currentProcessStatus = ProcessStatus.INITIAL
- this.selectOperationId = params.item.operationId!;
- if (this.stationId != params.item.stationId!) {
- promptAction.showToast({
- message: `${params.item.operationName}需要在${params.item.stationId}工位上生产`,
- duration: 1500,
- });
- return;
- }
- if (params.item.isEnd!) {
- promptAction.showToast({
- message: `${params.item.operationName}已经完成`,
- duration: 1500,
- });
- return;
- }
- this.isStationProcess = true;
- })
- // 分隔线(非最后一项显示)
- if (params.index < (this.selectWorkOder?.ops?.length ? this.selectWorkOder.ops!.length - 1 : 0)) {
- Row() {
- Divider()
- .vertical(true)
- .color($r('app.color.60FFFFFF'))
- .padding({ right: '15%' })
- }
- .justifyContent(FlexAlign.Center)
- .width('20%')
- .layoutWeight(1)
- }
- }
- .width('100%')
- .height('10.6%')
- .alignItems(HorizontalAlign.Start)
- }
- }
|