Browse Source

修改首页名称

hh 1 week ago
parent
commit
faffb63b06

+ 15 - 2
entry/src/main/ets/common/constants/CommonConstants.ets

@@ -11,13 +11,13 @@ export default class CommonConstants {
   static PICTURE_URL_PREFIX: string = 'http://192.168.1.3:20001'
 
   // 当前登录用户相关信息
-  static USER_ID?: number
+  static USER_ID?: number = 1
   static USER_NAME: string = ''
   static USER_AVATAR: string = ''
   static STATION_NANE: string = ''
   static DEPARTMENT_NANE: string = ''
   static PRODUCT_NANE: string = ''
-  static STATION_ID: number
+  static STATION_ID: number = 1
   static STATION_CODE: string = ''
   static STATION_IP: string = ''
   static stationDictValue: string = ''
@@ -49,5 +49,18 @@ export default class CommonConstants {
     '6': '关机',
   };
 
+  static OPERATION_COMPONENT_TYPE: Map<string, string> = new Map<string, string>([
+    ['wuliaocaiji', '1'],
+    ['jiluxiang', '2'],
+    ['duomeiticaiji', '3'],
+    ['ESOP', '4'],
+    // ['dianjian', '5'],
+    ['shebeijilu', '6'],
+    ['jingu', '7'],
+    // ['tiaoshipipei', '8'],
+    ['mingpaibangding', '9'],
+    ['waiguanjianche', '10'],
+  ]);
+
   static DICT_DATA: HashMap<string, DictValue[]> = new HashMap<string, DictValue[]>()
 }

+ 254 - 91
entry/src/main/ets/pages/ProcessIndex.ets

@@ -6,13 +6,14 @@ import ProcessRequest from '../common/util/request/ProcessRequest';
 import RequestParamModel from '../viewmodel/RequestParamModel';
 import OperationInfo from '../viewmodel/process/OperationInfo';
 import { SelectOrderDialog } from '../view/SelectOrderDialog';
-import image from '@ohos.multimedia.image';
 import { SwitchingProductDialog, taskSeqItem } from '../view/SwitchingProductDialog';
 import TaskSeqVO from '../viewmodel/process/TaskSeqInfo';
 import promptAction from '@ohos.promptAction';
 import { StationInfoDialog } from '../view/StationInfoDialog';
 import { SwitchingDeptDialog, SwitchingProductLineDialog, SwitchingStationDialog } from '../view/SwitchingStationViews';
 import { SwitchingUserDialog } from '../view/SwitchingUserDialog';
+import OperationComponent from '../viewmodel/process/OperationComponent';
+import ProcessInfo from '../viewmodel/process/ProcessInfo';
 
 @Entry
 @Component
@@ -26,13 +27,90 @@ struct ProcessIndex {
   // 扫描或手动输入的流水/序列/铭牌号
   @State scanCode: string = ''
   // 当前流转卡号
-  @State seqNo: string = ''
+  @State seqNo: string = '1'
   // 选中工序id
-  @State selectOperationId: string = ''
+  @State selectOperationId: string = '1'
   //选择的按钮索引(默认加载全部)
   @State selectedButtonIndex: number = 0
   // 流转卡号信息集合
   @State taskSeqArray: TaskSeqVO[] = []
+  // 工序组件(工步)
+  @State opComponents: OperationComponent[] = [
+    {
+      compentName:'物料采集',
+      compentType: '1',
+      deleted:0,
+      id:2415,
+      operationId:'679',
+      processRouteId:'0',
+      remark:'',
+      sortNum:0
+    },
+    {
+      compentName:'ESOP',
+      compentType:'4',
+      deleted:0,
+      id:2416,
+      operationId:'679',
+      processRouteId:'0',
+      remark:'',
+      sortNum:1
+    },
+    {
+      compentName:'多媒体采集',
+      compentType:'3',
+      deleted:0,
+      id:2417,
+      operationId:'679',
+      processRouteId:'0',
+      remark:'',
+      sortNum:2,
+    },
+    {
+      compentName:'记录项',
+      compentType:'2',
+      deleted:0,
+      id:2418,
+      operationId:'679',
+      processRouteId:'0',
+      remark:'',
+      sortNum:3,
+    },
+    {
+      compentName:'设备记录',
+      compentType:'6',
+      deleted:0,
+      id:2420,
+      operationId:'679',
+      processRouteId:'0',
+      remark:'',
+      sortNum:5
+    },
+  ]
+  // 选中的工序组件类型
+  @State selectComponentType: string = ''
+  // 工序组件状态数组(0:未完成)
+  @State componentStates: number[] = []
+  // 工序组件对应的图标
+  componentResMap: Map<string, Resource> = new Map([
+    ['1', $r('app.media.process_component_material_collect')],
+    ['2', $r('app.media.process_component_record_item')],
+    ['3', $r('app.media.process_component_multi_media_collect')],
+    ['4', $r('app.media.process_component_esop')],
+    ['6', $r('app.media.process_component_device_record')],
+    ['7', $r('app.media.process_component_fastening')],
+    ['9', $r('app.media.process_component_label_bind')],
+    ['10', $r('app.media.process_component_visual_inspect')],
+  ])
+  @State selectOpComponent: number = 0
+  // 扫码开工后的生产过程信息
+  @State process: ProcessInfo = {}
+  // 扫码开工状态(0:未开工 1:已开工)
+  scanState: number = 0
+
+
+  private scrollerList: Scroller = new Scroller()
+
   @State currentDept:string = ''
   @State currentProductLine:string = ''
   @State currentStation:string = ''
@@ -48,10 +126,6 @@ struct ProcessIndex {
     maskColor: 'rgba(0,0,0,0.8)',  // 黑色遮罩
   })
 
-  private scrollerList: Scroller = new Scroller()
-  pageNo: number = 1
-  pageSize: number = 9
-
   StationInfoController: CustomDialogController = new CustomDialogController({
     builder: StationInfoDialog({
       currentDept:this.currentDept,
@@ -366,100 +440,155 @@ struct ProcessIndex {
         .width('19.8%')
         .justifyContent(FlexAlign.SpaceBetween)
         // 右侧生产操作栏
-        Column() {
-          Row() {
-            Text('录入流水号')
-              .fontSize($r('app.float.fontSize_30'))
-              .fontWeight(FontWeight.Medium)
-              .fontColor($r('app.color.FFFFFF'))
-          }
-          .height('10%')
-          .width('97.2%')
-          .justifyContent(FlexAlign.Start)
-          Row() {
-            Column({space: 8}) {
-              Row() {
-                this.buildButton(0, '全部', () => this.handleAllClick())
-                this.buildButton(1, '已报工', () => this.handleReportedClick())
-                this.buildButton(2, '未报工', () => this.handleUnreportedClick())
-              }
-              .width('72%')
-              .height('5.3%')
-              .justifyContent(FlexAlign.Start)
+        if (this.opComponents.length <= 0) {
+          // 没有工序组件则展示扫码页面
+          Column() {
+            Row() {
+              Text('录入流水号')
+                .fontSize($r('app.float.fontSize_30'))
+                .fontWeight(FontWeight.Medium)
+                .fontColor($r('app.color.FFFFFF'))
+            }
+            .height('10%')
+            .width('97.2%')
+            .justifyContent(FlexAlign.Start)
+            Row() {
+              Column({space: 8}) {
+                Row() {
+                  this.buildButton(0, '全部', () => this.handleAllClick())
+                  this.buildButton(1, '已报工', () => this.handleReportedClick())
+                  this.buildButton(2, '未报工', () => this.handleUnreportedClick())
+                }
+                .width('72%')
+                .height('5.3%')
+                .justifyContent(FlexAlign.Start)
 
-              List({space: 4, scroller: this.scrollerList}) {
-                ForEach(this.taskSeqArray, (item:TaskSeqVO) => {
-                  ListItem() {
-                    taskSeqItem({
-                      item:item,
-                      scanSeqValue: this.scanCode,
-                      selectedButtonIndex: this.selectedButtonIndex
+                List({space: 4, scroller: this.scrollerList}) {
+                  ForEach(this.taskSeqArray, (item:TaskSeqVO) => {
+                    ListItem() {
+                      taskSeqItem({
+                        item:item,
+                        scanSeqValue: this.scanCode,
+                        selectedButtonIndex: this.selectedButtonIndex
+                      })
+                    }
+                  })
+                }
+                .width('72%')
+                .height('94.7%')
+              }
+              .width('52.9%')
+              .height('100%')
+              .alignItems(HorizontalAlign.End)
+              .padding({right: '2.6%'})
+              Divider()
+                .vertical(true)
+                .color($r('app.color.15FFFFFF'))
+                .height('100%')
+              Column({space: 5}) {
+                Row().height('37%')
+                Row() {
+                  Text('扫描流水/序列/铭牌号')
+                    .fontSize($r('app.float.fontSize_16'))
+                    .fontWeight(FontWeight.Regular)
+                    .fontColor($r('app.color.FFFFFF'))
+                }
+                .width('62%')
+                Row() {
+                  Row().width('3.4%')
+                  // 左侧二维码图标
+                  Image($r('app.media.material_qr_code')) // 请替换为您的二维码图片资源
+                    .width($r('app.float.virtualSize_24'))
+                    .height($r('app.float.virtualSize_24'))
+                    .fillColor($r('app.color.FFFFFF'))
+                  // 扫码输入框
+                  TextInput({ placeholder: '请扫描物料编码', text: this.scanCode })
+                    .type(InputType.Normal)
+                    .placeholderFont({ size: $r('app.float.fontSize_16')})
+                    .placeholderColor($r('app.color.30FFFFFF'))
+                    .fontSize($r('app.float.fontSize_16'))
+                    .fontColor($r('app.color.FFFFFF'))
+                    .enableKeyboardOnFocus(false)
+                    .onChange((value: string) => {
+                      this.scanCode = value
+                    })
+                    .onSubmit(async () => {
+                      this.opComponents = await ProcessRequest.get('/api/v1/op/compent/get/' + this.selectOperationId)
                     })
+                }
+                .width('65%')
+                .height('6.5%')
+                .borderRadius($r('app.float.virtualSize_16'))
+                .backgroundColor($r('app.color.000000'))
+                .justifyContent(FlexAlign.Start)
+              }
+              .width('52.9%')
+              .height('100%')
+            }
+            .width('100%')
+            .height('87.7%')
+            .justifyContent(FlexAlign.Center)
+          }
+          .width('79.1%')
+          .height('100%')
+          .justifyContent(FlexAlign.Center)
+          .backgroundColor($r('app.color.20FFFFFF'))
+          .borderRadius($r('app.float.fontSize_16'))
+          .opacity(!this.seqNo || !CommonConstants.USER_ID || !CommonConstants.STATION_ID ? 0.3 : 1)
+        } else {
+          Column() {
+            Row() {
+              List ({space: 4}) {
+                ForEach(this.opComponents, (item: OperationComponent, index: number) => {
+                  ListItem() {
+                    Column() {
+                      Stack() {
+                        Image(this.selectComponentType === item.compentType! ? $r('app.media.process_component_state_select') : (this.componentStates.length >= (index + 1) && this.componentStates[index] === 1 ? $r('app.media.process_component_state_finish') : $r('app.media.process_component_state_no_select')))
+                          .height(this.selectComponentType === item.compentType! ? '100%' : '90%')
+                          .width('100%')
+                          .objectFit(ImageFit.Fill)
+                          .borderRadius($r('app.float.fontSize_16'))
+                        Column({space: 2}) {
+                          Image(this.componentResMap.get(item.compentType!))
+                            .height($r('app.float.virtualSize_24'))
+                            .width($r('app.float.virtualSize_24'))
+                          Text(item.compentName!)
+                            .fontSize($r('app.float.fontSize_16'))
+                            .fontWeight(FontWeight.Regular)
+                            .fontColor($r('app.color.90000000'))
+                        }
+                        .width('100%')
+                        .height('90%')
+                        .justifyContent(FlexAlign.Center)
+                      }
+                      .width('100%')
+                      .height('100%')
+                      .alignContent(Alignment.Top)
+                      .onClick(()=>{
+                        this.selectComponentType = item.compentType!
+                      })
+                    }
+                    .height('100%')
+                    .width('12.5%')
                   }
                 })
               }
-              .width('72%')
-              .height('94.7%')
-            }
-            .width('52.9%')
-            .height('100%')
-            .alignItems(HorizontalAlign.End)
-            .padding({right: '2.6%'})
-            Divider()
-              .vertical(true)
-              .color($r('app.color.15FFFFFF'))
+              .listDirection(Axis.Horizontal)
+              .width('100%')
               .height('100%')
+            }
+            .height('9.3%')
+            .width('79.1%')
+            Column() {
 
-            Column({space: 5}) {
-              Row().height('37%')
-              Row() {
-                Text('扫描流水/序列/铭牌号')
-                  .fontSize($r('app.float.fontSize_16'))
-                  .fontWeight(FontWeight.Regular)
-                  .fontColor($r('app.color.FFFFFF'))
-              }
-              .width('62%')
-              Row() {
-                Row().width('3.4%')
-                // 左侧二维码图标
-                Image($r('app.media.material_qr_code')) // 请替换为您的二维码图片资源
-                  .width($r('app.float.virtualSize_24'))
-                  .height($r('app.float.virtualSize_24'))
-                  .fillColor($r('app.color.FFFFFF'))
-                // 扫码输入框
-                TextInput({ placeholder: '请扫描物料编码', text: this.scanCode })
-                  .type(InputType.Normal)
-                  .placeholderFont({ size: $r('app.float.fontSize_16')})
-                  .placeholderColor($r('app.color.30FFFFFF'))
-                  .fontSize($r('app.float.fontSize_16'))
-                  .fontColor($r('app.color.FFFFFF'))
-                  .enableKeyboardOnFocus(false)
-                  .onChange((value: string) => {
-                    this.scanCode = value
-                  })
-                  .onSubmit(async () => {
-
-                  })
-              }
-              .width('65%')
-              .height('6.5%')
-              .borderRadius($r('app.float.virtualSize_16'))
-              .backgroundColor($r('app.color.000000'))
-              .justifyContent(FlexAlign.Start)
             }
-            .width('52.9%')
-            .height('100%')
+            .width('79.1%')
+            .height('90.7%')
+            .backgroundColor($r('app.color.20FFFFFF'))
+            .borderRadius($r('app.float.fontSize_16'))
           }
-          .width('100%')
-          .height('87.7%')
-          .justifyContent(FlexAlign.Center)
+
         }
-        .width('79.1%')
-        .height('100%')
-        .justifyContent(FlexAlign.Center)
-        .backgroundColor($r('app.color.20FFFFFF'))
-        .borderRadius($r('app.float.fontSize_16'))
-        .opacity(!this.seqNo || !CommonConstants.USER_ID || !CommonConstants.STATION_ID ? 0.3 : 1)
       }
       .height('80%')
       .width('94.8%')
@@ -586,6 +715,40 @@ struct ProcessIndex {
           .justifyContent(FlexAlign.Center)
           .backgroundColor($r('app.color.0A84FF'))
           .borderRadius($r('app.float.fontSize_16'))
+          .onClick(async ()=>{
+            if (!this.scanCode || this.scanCode.length <= 0) {
+              promptAction.showToast({
+                message: `请先扫描流水/序列/铭牌号`,
+                duration: 1500,
+                bottom: 100
+              })
+              return
+            }
+            if (!this.selectOperationId || this.selectOperationId.length <= 0) {
+              promptAction.showToast({
+                message: `请先选择工序`,
+                duration: 1500,
+                bottom: 100
+              })
+              return
+            }
+            this.process = await ProcessRequest.post('/api/v1/process/info/scan', {
+              operationId: this.selectOperationId,
+              qrCode: this.scanCode,
+              workOrderCode: this.selectWorkOder.workOrderCode!
+            } as RequestParamModel)
+            if (this.process && this.process.id) {
+              this.scanState = 1
+              this.opComponents = await ProcessRequest.get(`/api/v1/process/opCompent/get/${this.selectOperationId!}/${this.process?.id!}`)
+              if (this.opComponents) {
+                for (const element of this.opComponents) {
+                  if (CommonConstants.OPERATION_COMPONENT_TYPE.has(element.compentType)) {
+                    element.compentType = CommonConstants.OPERATION_COMPONENT_TYPE.get(element.compentType)
+                  }
+                }
+              }
+            }
+          })
         }
         .height('90.6%')
         .width('100%')

+ 1 - 1
entry/src/main/ets/view/StationInfoDialog.ets

@@ -1,6 +1,6 @@
 import ProcessRequest from '../common/util/request/ProcessRequest'
 import { MessageInfo, MessagePage } from '../viewmodel/MessageInfo'
-import { WorkstationInfo } from '../viewmodel/process/UserInfo'
+import { WorkstationInfo } from '../viewmodel/UserInfo'
 import RequestParamModel from '../viewmodel/RequestParamModel'
 import { SwitchingStationDialog } from './SwitchingStationViews'
 

+ 1 - 1
entry/src/main/ets/view/SwitchingStationViews.ets

@@ -1,7 +1,7 @@
 import ProcessRequest from '../common/util/request/ProcessRequest'
 import { MessageInfo, MessagePage } from '../viewmodel/MessageInfo'
 import TaskSeqVO from '../viewmodel/process/TaskSeqInfo'
-import { DeptInfo, ProductionLine, WorkstationInfo } from '../viewmodel/process/UserInfo'
+import { DeptInfo, ProductionLine, WorkstationInfo } from '../viewmodel/UserInfo'
 import RequestParamModel from '../viewmodel/RequestParamModel'
 
 @CustomDialog

entry/src/main/ets/viewmodel/process/UserInfo.ets → entry/src/main/ets/viewmodel/UserInfo.ets


+ 19 - 0
entry/src/main/ets/viewmodel/process/OperationComponent.ets

@@ -0,0 +1,19 @@
+// 工序组件
+export default class OperationComponent {
+  // 组件id
+  id?: number | string
+  // 工艺路线id
+  processRouteId?: string
+  // 工序id
+  operationId?: string
+  // 删除标识
+  deleted?: number
+  // 备注
+  remark?: string
+  // 组件名称
+  compentName?: string
+  // 组件类型 1:物料采集 2:记录项 3:多媒体采集 4:ESOP 5:点检 6:设备记录 7:紧固 8:调试配对 9:铭牌绑定)
+  compentType?: string
+  // 排序标识
+  sortNum?: number
+}

+ 1 - 1
entry/src/main/ets/viewmodel/process/OperationInfo.ets

@@ -1,5 +1,5 @@
 import TaskSeqInfo from './TaskSeqInfo'
-
+// 工序信息
 export default class OperationInfo {
   // 工单编码
   workOrderCode?: string

+ 53 - 0
entry/src/main/ets/viewmodel/process/ProcessInfo.ets

@@ -0,0 +1,53 @@
+// 生产过程信息
+export default class ProcessInfo {
+  // 过程id
+  id?: string
+  // 序列号
+  seqNo?: string
+  // 工序id
+  operationId?: number
+  // 工序名称
+  operationName?: string
+  // 当前状态-字典process_state
+  currentState?: string
+  // 实际开始时间
+  realStartWhen?: string
+  // 实际结束时间
+  realEndWhen?: string
+  // 状态更改时间
+  changeWhen?: string
+  // 总共用时
+  totalTime?: string
+  // 操作人
+  operator?: string
+  // 工单id
+  workOrderId?: string
+  // 订单id
+  orderId?: string
+  // 工位id
+  stanId?: string
+  // 是否委外 0否  1是
+  outsource?: number
+  // 是否下线0 否 1是
+  offLine?: number
+  // 返工id
+  reworkId?: string
+  // 维修id
+  repairId?: string
+  batchReport?: number
+  // 订单编码
+  orderCode?: string
+  // 工单编码
+  workOrderCode?: string
+  // 物料编号
+  materialCode?: string
+  // 物料名称
+  materialName?: string
+  // 物料型号
+  materialModel?: string
+  // 下一个工位
+  nextStation?: string
+  // 超期原因
+  outTimeReason?: string
+  outTime?: boolean
+}

File diff suppressed because it is too large
+ 5 - 0
entry/src/main/resources/base/media/process_component_device_record.svg


File diff suppressed because it is too large
+ 4 - 0
entry/src/main/resources/base/media/process_component_esop.svg


File diff suppressed because it is too large
+ 6 - 0
entry/src/main/resources/base/media/process_component_fastening.svg


File diff suppressed because it is too large
+ 10 - 0
entry/src/main/resources/base/media/process_component_label_bind.svg


+ 5 - 0
entry/src/main/resources/base/media/process_component_material_collect.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" viewBox="0 0 24 24">
+  <path fill-rule="evenodd" d="M9.47 7.47a.75.75 0 0 1 1.06 0L12 8.94l1.47-1.47a.75.75 0 0 1 1.06 1.06l-2 2a.75.75 0 0 1-1.06 0l-2-2a.75.75 0 0 1 0-1.06Zm6 6.5a.75.75 0 0 1 1.06 0L18 15.438l1.47-1.47a.75.75 0 0 1 1.06 1.06l-2 2a.75.75 0 0 1-1.06 0l-2-2a.75.75 0 0 1 0-1.06Zm-12 0a.75.75 0 0 1 1.06 0L6 15.438l1.47-1.47a.75.75 0 0 1 1.06 1.06l-2 2a.75.75 0 0 1-1.06 0l-2-2a.75.75 0 0 1 0-1.06Z" clip-rule="evenodd"/>
+  <path fill-rule="evenodd" d="M12 1.25a.75.75 0 0 1 .75.75v8a.75.75 0 0 1-1.5 0V2a.75.75 0 0 1 .75-.75Zm8 7.318c-.69 0-1.25.56-1.25 1.25v6.615a.75.75 0 0 1-1.5 0V9.818A2.75 2.75 0 0 1 20 7.068h2a.75.75 0 0 1 0 1.5h-2Zm-18.75-.75a.75.75 0 0 1 .75-.75h2a2.75 2.75 0 0 1 2.75 2.75v6.615a.75.75 0 0 1-1.5 0V9.818c0-.69-.56-1.25-1.25-1.25H2a.75.75 0 0 1-.75-.75Z" clip-rule="evenodd"/>
+  <path fill-rule="evenodd" d="M2 17.25a.75.75 0 0 1 .75.75v2c0 .69.56 1.25 1.25 1.25h16c.69 0 1.25-.56 1.25-1.25v-2a.75.75 0 1 1 1.5 0v2A2.75 2.75 0 0 1 20 22.75H4A2.75 2.75 0 0 1 1.25 20v-2a.75.75 0 0 1 .75-.75Z" clip-rule="evenodd"/>
+</svg>

File diff suppressed because it is too large
+ 3 - 0
entry/src/main/resources/base/media/process_component_multi_media_collect.svg


+ 5 - 0
entry/src/main/resources/base/media/process_component_record_item.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" viewBox="0 0 24 24">
+  <path d="M13.5 2h6"/>
+  <path fill-rule="evenodd" d="M6 2.75a.25.25 0 0 0-.25.25v18c0 .138.112.25.25.25h14a.25.25 0 0 0 .25-.25V3a.25.25 0 0 0-.25-.25H6ZM4.25 3c0-.966.784-1.75 1.75-1.75h14c.967 0 1.75.784 1.75 1.75v18A1.75 1.75 0 0 1 20 22.75H6A1.75 1.75 0 0 1 4.25 21V3Z" clip-rule="evenodd"/>
+  <path fill-rule="evenodd" d="M17 2.25a.75.75 0 0 1 .75.75v18a.75.75 0 1 1-1.5 0V3a.75.75 0 0 1 .75-.75ZM2.25 7A.75.75 0 0 1 3 6.25h4a.75.75 0 0 1 0 1.5H3A.75.75 0 0 1 2.25 7Zm0 5a.75.75 0 0 1 .75-.75h4a.75.75 0 1 1 0 1.5H3a.75.75 0 0 1-.75-.75Zm0 5a.75.75 0 0 1 .75-.75h4a.75.75 0 0 1 0 1.5H3a.75.75 0 0 1-.75-.75Z" clip-rule="evenodd"/>
+</svg>

+ 3 - 0
entry/src/main/resources/base/media/process_component_state_finish.svg

@@ -0,0 +1,3 @@
+<svg width="180" height="70" viewBox="0 0 180 70" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect width="180" height="70" rx="16" fill="#30D158" fill-opacity="0.2"/>
+</svg>

+ 3 - 0
entry/src/main/resources/base/media/process_component_state_no_select.svg

@@ -0,0 +1,3 @@
+<svg width="180" height="70" viewBox="0 0 180 70" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect width="180" height="70" rx="16" fill="white" fill-opacity="0.2"/>
+</svg>

+ 3 - 0
entry/src/main/resources/base/media/process_component_state_select.svg

@@ -0,0 +1,3 @@
+<svg width="180" height="80" viewBox="0 0 180 80" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M0 16C0 7.16344 8.05888 0 18 0H162C171.941 0 180 7.16344 180 16V54C180 62.8366 171.941 70 162 70H100L90 80L80 70H18C8.05888 70 0 62.8366 0 54V16Z" fill="#E5E5E5"/>
+</svg>

+ 3 - 0
entry/src/main/resources/base/media/process_component_visual_inspect.svg

@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" viewBox="0 0 24 24">
+  <path d="m17.456 16.52 3.358 3.358a.75.75 0 0 1-1.06 1.06l-3.369-3.367a9.429 9.429 0 0 0 1.07-1.05ZM10.376 2a8.375 8.375 0 0 1 6.371 13.81l-.022.026a8.379 8.379 0 0 1-.204.23l.226-.256a8.251 8.251 0 0 1-1.072 1.05A8.375 8.375 0 1 1 10.375 2Zm0 1.5a6.875 6.875 0 1 0 0 13.75 6.875 6.875 0 0 0 0-13.75Z"/>
+</svg>