浏览代码

不良类型记录新增、修改

hh 5 天之前
父节点
当前提交
5a808f95a4

+ 36 - 22
entry/src/main/ets/pages/ProcessIndex.ets

@@ -106,13 +106,13 @@ struct ProcessIndex {
   @Provide('currentStationId') @Watch('refreshWorkOrder') currentStationId: string = ''
   @Provide('currentUserName') currentUserName: string =''
   @Provide('currentUserId') currentUserId: number = 0
-  @Provide('bindTaskSeq') bindTaskSeq: BindTaskSeqVO[]=[]
-  @State reportList: ReportInfo[]=[]
+  @Provide('bindTaskSeq') bindTaskSeq: BindTaskSeqVO[] = []
+  @State reportList: ReportInfo[] = []
   @State currentReporterIndex:number =0
   @State currentReportNumIndex:number =0
   @State currentUnqualifiedIndex:number =0
   // mqtt是否连接
-  @State isConnected:boolean=false
+  @State isConnected: boolean = false
   // 工位发生改变则可能需要重新选择工单
   async refreshWorkOrder() {
     if (!this.selectWorkOder || !this.selectWorkOder.workOrderCode) {
@@ -183,6 +183,28 @@ struct ProcessIndex {
     seqNos.push(this.seqNo)
     preferencesUtil.put(CommonConstants.PREFERENCE_INSTANCE_NAME, this.selectWorkOder.workOrderCode!, seqNos)
   }
+  // 未开工查询工序组件(工步)
+  async getComponentsForNotStartWork() {
+    this.opComponents = await ProcessRequest.get('/api/v1/op/compent/get/' + this.selectOperationId)
+    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!)
+        }
+      }
+    }
+    // 过滤掉点检工步
+    this.opComponents = this.opComponents.filter(item => item.compentType !== '5');
+    this.opComponents.unshift({
+      compentName: '自检',
+      compentType: '5',
+      deleted: 0,
+      operationId: this.selectOperationId,
+      processRouteId: '0',
+      remark: '',
+      sortNum: 0
+    })
+  }
 
   handleAllClick():void {
     if (!this.selectWorkOder.workOrderCode || !this.currentUserName || !this.currentStationId) {
@@ -501,6 +523,15 @@ struct ProcessIndex {
                             duration: 1500,
                             bottom: 100
                           })
+                          if (this.scanCode) {
+                            // 未开工查询工序组件
+                            this.getComponentsForNotStartWork()
+                          }
+                        } else if (this.scanState === 0 && this.scanCode) {
+                          // 未开工查询工序组件
+                          this.getComponentsForNotStartWork()
+                        } else if (this.scanState === 1) {
+                          this.scanCodeToStartWork()
                         }
                         if (!this.seqNo || this.seqNo.length <= 0) {
                           this.handleAllClick()
@@ -622,25 +653,8 @@ struct ProcessIndex {
                         if (!this.selectWorkOder.workOrderCode || !this.currentUserName || !this.currentStationId) {
                           return
                         }
-                        this.opComponents = await ProcessRequest.get('/api/v1/op/compent/get/' + this.selectOperationId)
-                        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)
-                            }
-                          }
-                        }
-                        // 过滤掉点检工步
-                        this.opComponents = this.opComponents.filter(item => item.compentType !== '5');
-                        this.opComponents.unshift({
-                          compentName: '自检',
-                          compentType: '5',
-                          deleted: 0,
-                          operationId: this.selectOperationId,
-                          processRouteId: '0',
-                          remark: '',
-                          sortNum: 0
-                        })
+                        // 查询工序组件
+                        this.getComponentsForNotStartWork()
                         this.seqNo = this.scanCode
                         // 保存此流转卡号到数据库中
                         let seqNos: string[] = []

+ 154 - 31
entry/src/main/ets/view/AddUnqualifiedRecordDialog.ets

@@ -4,6 +4,10 @@ import { BindTaskSeqVO } from '../viewmodel/BindTaskSeqVO';
 import TaskSeqVO from '../viewmodel/process/TaskSeqInfo';
 import RequestParamModel from '../viewmodel/RequestParamModel';
 import { Font } from '@ohos.arkui.UIContext';
+import DictValue from '../viewmodel/DictValue';
+import ProcessEscalationFault from '../viewmodel/process/ProcessEscalationFault';
+import ProcessBaseBug from '../viewmodel/process/ProcessBaseBug';
+import ProcessInfo from '../viewmodel/process/ProcessInfo';
 
 @CustomDialog
 export struct AddUnqualifiedRecordDialog{
@@ -13,30 +17,118 @@ export struct AddUnqualifiedRecordDialog{
   scroller: Scroller = new Scroller()
 
   //是否是编辑状态(需要传入的参数)
-  @Prop isEdit:Boolean = false
+  @Prop isEdit: boolean = false
   //选择不良类型索引(需要传入的参数)
-  @Prop selectedTypeIndex:number= -1
+  @Prop selectDefectType: number = -1
   //选择缺陷类型索引(需要传入的参数)
-  @Prop selectedDefectTypeIndex:number= -1
-
+  @Prop selectedDefectBug: number= -1
+  // 不良类型(数据字典)
+  @Prop defectTypes: DictValue[] = []
+  // 不良类型对应的缺陷
+  defectBugs: ProcessBaseBug[] = []
+  // 不良类型对应的缺陷map(key为不良类型字典值,value为对应的缺陷)
+  defectBugMap: Map<string, ProcessBaseBug[]> = new Map<string, ProcessBaseBug[]>()
   //不良类型
-  @State unqualifiedType:Array<SelectOption> = [
-    {value:"质量问题类型"},
-    {value:"操作问题类型"},
-    {value:"生产问题类型"},
-    {value:"其它问题类型"},]
+  @State defectTypeOptions: Array<SelectOption> = []
   //缺陷类型
-  @State defectType:Array<SelectOption> = [
-    {value:"PCBA缺陷"},
-    {value:"结构缺陷"},
-    {value:"外购材料缺陷"},
-    {value:"外观缺陷"},]
+  @State defectBugOptions: Array<SelectOption> = []
+  // 如果是修改需要从自检页面传过来
+  @State defectRecord: ProcessEscalationFault = {}
+  // 不良类型记录列表
+  @Link defectRecords: ProcessEscalationFault[]
+  // 备注
+  @State defectRemark: string = ''
+
+  @Consume('currentUserName') currentUserName: string
+  seqNo: string = ''
+  selectOperationId: string = ''
+  process: ProcessInfo = {}
+
+  // 刷新不良类型对应的缺陷
+  async refreshDefectBugs() {
+    let defectTypeValue: string = this.defectTypes[this.selectDefectType]?.dictValue!
+    this.defectBugOptions = []
+    if (this.defectBugMap.has(defectTypeValue)) {
+      this.defectBugs = this.defectBugMap.get(defectTypeValue)!
+    } else {
+      this.defectBugs = await ProcessRequest.post('/api/v1/op/baseBug/list', {
+        bugType: defectTypeValue
+      } as RequestParamModel)
+      this.defectBugMap.set(defectTypeValue, this.defectBugs)
+    }
+    // 遍历封装缺陷下拉选择框
+    for (let i = 0; i < this.defectBugs.length; i++) {
+      this.defectBugOptions.push({value: this.defectBugs[i].bugName!})
+    }
+    this.selectedDefectBug = 0;
+  }
+  // 刷新不良类型记录列表
+  async refreshDefectRecords() {
+    this.defectRecords = []
+    this.defectRecords = await ProcessRequest.post('/api/v1/process/escalationFault/list', {
+      seqNo: this.seqNo
+    } as RequestParamModel)
+    if (this.defectRecords && this.defectTypes) {
+      for (const element of this.defectRecords) {
+        if (element.defectList) {
+          for (const dict of this.defectTypes) {
+            if (element.defectList[0].bugType === dict.dictValue) {
+              element.defectList[0].bugTypeLabel = dict.dictLabel
+              break
+            }
+          }
+        }
+      }
+    }
+  }
 
+  async aboutToAppear() {
+    for (let i = 0; i < this.defectTypes.length; i++) {
+      this.defectTypeOptions.push({value: this.defectTypes[i].dictLabel!})
+    }
+    // 新增时,默认选中第一个不良类型及其第一种缺陷
+    if (!this.isEdit && this.defectTypes) {
+      this.selectDefectType = 0
+      this.defectBugs = await ProcessRequest.post('/api/v1/op/baseBug/list', {
+        bugType: this.defectTypes[0].dictValue!
+      } as RequestParamModel)
+      this.defectBugMap.set(this.defectTypes[0].dictValue!, this.defectBugs)
+      for (let i = 0; i < this.defectBugs.length; i++) {
+        this.defectBugOptions.push({value: this.defectBugs[i].bugName!})
+      }
+      this.selectedDefectBug = 0;
+    } else if (this.isEdit && this.defectRecord && this.defectRecord.defectList) {
+      this.defectRemark = this.defectRecord.remark ? this.defectRecord.remark : ''
+      // 修改时,不良类型、缺陷名称直接选中
+      let defectTypeValue: string = this.defectRecord.defectList[0].bugType!
+      // 不良类型选中
+      for (let i = 0; i < this.defectTypes.length; i++) {
+        if (defectTypeValue === this.defectTypes[i].dictValue!) {
+          this.selectDefectType = i;
+          break
+        }
+      }
+      // 查询不良类型下所有的缺陷
+      let defectBugCode: string = this.defectRecord.defectList[0].bugCode!
+      this.defectBugs = await ProcessRequest.post('/api/v1/op/baseBug/list', {
+        bugType: defectTypeValue
+      } as RequestParamModel)
+      this.defectBugMap.set(defectTypeValue, this.defectBugs)
+      // 缺陷名称选中
+      for (let i = 0; i < this.defectBugs.length; i++) {
+        this.defectBugOptions.push({value: this.defectBugs[i].bugName!})
+        if (defectBugCode === this.defectBugs[i].bugCode) {
+          this.selectedDefectBug = i;
+          break
+        }
+      }
+    }
+  }
 
   build() {
     Column(){
       Column() {
-        Text(this.isEdit?'不良类型记录':'添加不良类型记录')
+        Text(this.isEdit ? '不良类型记录' : '添加不良类型记录')
           .fontColor($r('app.color.FFFFFF'))
           .fontSize($r('app.float.fontSize_30'))
       }
@@ -47,49 +139,51 @@ export struct AddUnqualifiedRecordDialog{
         Text('不良类型')
           .fontSize($r('app.float.fontSize_16'))
           .fontColor($r('app.color.FFFFFF'))
-        Select(this.unqualifiedType)
+        Select(this.defectTypeOptions)
           .height('16%')
           .width('100%')
           .borderRadius($r('app.float.virtualSize_16'))
-          .selected(this.selectedTypeIndex === -1 ? 0 : this.selectedTypeIndex)
-          .value(this.selectedTypeIndex === -1 ? '请选择' : String(this.unqualifiedType[this.selectedTypeIndex].value))
+          .selected(this.selectDefectType === -1 ? 0 : this.selectDefectType)
+          .value(this.selectDefectType === -1 ? '请选择' : String(this.defectTypeOptions[this.selectDefectType].value))
           .backgroundColor($r('app.color.20FFFFFF'))
           .selectedOptionBgColor($r('app.color.20FFFFFF'))
-          .fontColor(this.selectedTypeIndex === -1?$r('app.color.30FFFFFF'):$r('app.color.FFFFFF'))
+          .fontColor(this.selectDefectType === -1 ? $r('app.color.30FFFFFF'):$r('app.color.FFFFFF'))
           .font({size:$r('app.float.fontSize_24')})
           .selectedOptionFont({
             size:$r('app.float.fontSize_24')
           })
           .onSelect((index: number) => {
-            this.selectedTypeIndex = index
-
+            if (this.selectDefectType === index) {
+              return
+            }
+            this.selectDefectType = index
+            this.refreshDefectBugs()
           })
           .margin({top:'3%',bottom:'3%'})
         Text('缺陷名称')
           .fontSize($r('app.float.fontSize_16'))
           .fontColor($r('app.color.FFFFFF'))
-        Select(this.defectType)
+        Select(this.defectBugOptions)
           .height('16%')
           .width('100%')
           .borderRadius($r('app.float.virtualSize_16'))
-          .selected(this.selectedDefectTypeIndex === -1 ? 0 : this.selectedDefectTypeIndex)
-          .value(this.selectedDefectTypeIndex === -1 ? '请选择' : String(this.defectType[this.selectedDefectTypeIndex].value))
+          .selected(this.selectedDefectBug === -1 ? 0 : this.selectedDefectBug)
+          .value(this.selectedDefectBug === -1 ? '请选择' : String(this.defectBugOptions[this.selectedDefectBug]?.value ? this.defectBugOptions[this.selectedDefectBug]?.value : ''))
           .backgroundColor($r('app.color.20FFFFFF'))
           .selectedOptionBgColor($r('app.color.20FFFFFF'))
-          .fontColor(this.selectedDefectTypeIndex === -1?$r('app.color.30FFFFFF'):$r('app.color.FFFFFF'))
+          .fontColor(this.selectedDefectBug === -1 ? $r('app.color.30FFFFFF'):$r('app.color.FFFFFF'))
           .font({size:$r('app.float.fontSize_24')})
           .selectedOptionFont({
             size:$r('app.float.fontSize_24')
           })
           .onSelect((index: number) => {
-            this.selectedDefectTypeIndex = index
-
+            this.selectedDefectBug = index
           })
           .margin({top:'3%',bottom:'3%'})
         Text('备注')
           .fontSize($r('app.float.fontSize_16'))
           .fontColor($r('app.color.FFFFFF'))
-        TextArea({placeholder:'请录入不良详情'})
+        TextArea({placeholder:'请录入不良详情', text: this.defectRemark})
           .backgroundColor($r('app.color.000000'))
           .height('40%')
           .width('100%')
@@ -101,7 +195,9 @@ export struct AddUnqualifiedRecordDialog{
           .maxLength(200)
           .margin({top:'3%',bottom:'3%'})
           .borderRadius($r('app.float.virtualSize_16'))
-
+          .onChange((value: string) => {
+            this.defectRemark = value
+          })
       }
       .width('70%')
       .height('80%')
@@ -147,7 +243,22 @@ export struct AddUnqualifiedRecordDialog{
             }
             .justifyContent(FlexAlign.Center)
             .width('33.3%')
-            .onClick(() => {
+            .onClick(async () => {
+              this.defectRecord.remark = this.defectRemark
+              if (this.defectRecord.defectList) {
+                this.defectRecord.defectList[0].bugType = this.defectBugs[this.selectedDefectBug].bugType!
+                this.defectRecord.defectList[0].bugCode = this.defectBugs[this.selectedDefectBug].bugCode!
+                this.defectRecord.defectList[0].bugName = this.defectBugs[this.selectedDefectBug].bugName!
+                this.defectRecord.reasonList = [...this.defectRecord.defectList]
+              }
+
+              console.log('hhtest', JSON.stringify(this.defectRecord))
+              await ProcessRequest.post('/api/v1/process/escalationFault/updateRemarkAndDefect', this.defectRecord)
+              // 重新刷新不良类型记录列表
+              this.refreshDefectRecords()
+              if (this.controller) {
+                this.controller.close()
+              }
             })
           }
         }
@@ -179,7 +290,19 @@ export struct AddUnqualifiedRecordDialog{
             }
             .justifyContent(FlexAlign.Center)
             .width('50%')
-            .onClick(() => {
+            .onClick(async () => {
+              this.defectRecord.processId = this.process.id!
+              this.defectRecord.seqNoList = [this.seqNo]
+              this.defectRecord.reasonList = [this.defectBugs[this.selectedDefectBug]]
+              this.defectRecord.processesList = [this.selectOperationId]
+              this.defectRecord.personResponsible = this.currentUserName
+              this.defectRecord.remark = this.defectRemark
+              await ProcessRequest.post('/api/v1/process/escalationFault/add', this.defectRecord)
+              // 重新刷新不良类型记录列表
+              this.refreshDefectRecords()
+              if (this.controller) {
+                this.controller.close()
+              }
             })
           }
         }

+ 82 - 7
entry/src/main/ets/view/process/SelfInspectView.ets

@@ -4,14 +4,19 @@ import ProcessInfo from '../../viewmodel/process/ProcessInfo'
 import RequestParamModel from '../../viewmodel/RequestParamModel'
 import promptAction from '@ohos.promptAction'
 import PageInfo from '../../viewmodel/PageInfo'
+import { AddUnqualifiedRecordDialog } from '../AddUnqualifiedRecordDialog'
+import DictValue from '../../viewmodel/DictValue'
+import ProcessEscalationFault from '../../viewmodel/process/ProcessEscalationFault'
 
 @Component
 export struct SelfInspectView {
   // 点检列表
   @State checkArray: ProcessCheck[] = []
   @State selectCheck: number = -1
-  // 不良类型列表
-  @State defectTypeArray: ProcessCheck[] = []
+  // 不良类型记录列表
+  @State defectRecords: ProcessEscalationFault[] = []
+  // 不良类型(数据字典)
+  @State defectTypes: DictValue[] = []
   // 扫码开工状态(0:未开工 1:已开工)
   @Link @Watch('queryByScanState') scanState: number
   // 当前流转卡号
@@ -20,6 +25,12 @@ export struct SelfInspectView {
   @Link selectOperationId: string
   // 扫码开工后的生产过程信息
   @Link process: ProcessInfo
+  // 是否是修改不良类型记录
+  editDefectRecord: boolean = false
+  // 修改时选中的不良类型记录
+  selectDefectRecord: ProcessEscalationFault = {}
+
+  defectTypeDictCode: string = 'defect_mana'
 
   // 根据开工状态查询 工序点检项/工序点检历史操作
   async queryByScanState() {
@@ -41,10 +52,27 @@ export struct SelfInspectView {
 
   async aboutToAppear() {
     this.queryByScanState()
+    this.defectTypes = await ProcessRequest.get(`/api/v1/sys/dictData/queryByType/${this.defectTypeDictCode}`)
+    this.defectRecords = await ProcessRequest.post('/api/v1/process/escalationFault/list', {
+      seqNo: this.seqNo
+    } as RequestParamModel)
+    if (this.defectRecords && this.defectTypes) {
+      for (const element of this.defectRecords) {
+        if (element.defectList) {
+          for (const dict of this.defectTypes) {
+            if (element.defectList[0].bugType === dict.dictValue) {
+              element.defectList[0].bugTypeLabel = dict.dictLabel
+              break
+            }
+          }
+        }
+      }
+    }
   }
 
   build() {
     Row() {
+      // 点检
       Column() {
         Row() {
           Text('点检列表')
@@ -135,6 +163,7 @@ export struct SelfInspectView {
         .color($r('app.color.15FFFFFF'))
         .height('100%')
         .padding({top: '5.3%', bottom: '2.2%'})
+      // 不良类型记录
       Column() {
         Row() {
           Text('不良类型记录')
@@ -144,7 +173,7 @@ export struct SelfInspectView {
         }
         .height('10.2%')
         .width('100%')
-
+        // 添加不良类型
         Row({space: 4}) {
           Image($r("app.media.general_create"))
             .width($r('app.float.virtualSize_24'))
@@ -161,14 +190,43 @@ export struct SelfInspectView {
         .backgroundColor($r('app.color.20FFFFFF'))
         .borderRadius($r('app.float.fontSize_16'))
         .onClick(()=>{
-
+          if(this.scanState === 0) {
+            promptAction.showToast({
+              message: '工序未开工,请先开工',
+              duration: 1500,
+              bottom: 100
+            })
+            return
+          }
+          this.addUnqualifiedRecordController.open()
         })
-
+        // 不良类型记录列表
         List({space: 6}) {
-          ForEach(this.defectTypeArray, (item: ProcessCheck, index: number) => {
+          ForEach(this.defectRecords, (item: ProcessEscalationFault, index: number) => {
             ListItem() {
-
+              Column() {
+                Text(item.defectList ? item.defectList[0].bugTypeLabel! + '(' + item.defectList[0].bugName! + ')' : '')
+                  .fontColor($r('app.color.FFFFFF'))
+                  .fontSize($r('app.float.fontSize_16'))
+                  .fontWeight(FontWeight.Bold)
+                  .height($r('app.float.virtualSize_48'))
+                Text('备注:' + (item.remark ? item.remark : ''))
+                  .fontColor($r('app.color.FFFFFF'))
+                  .fontSize($r('app.float.fontSize_16'))
+                  .fontWeight(FontWeight.Lighter)
+                  .padding({bottom: 10})
+              }
+              .width('92%')
+              .alignItems(HorizontalAlign.Start)
             }
+            .backgroundColor($r('app.color.20FFFFFF'))
+            .borderRadius($r('app.float.fontSize_16'))
+            .width('100%')
+            .onClick(()=>{
+              this.selectDefectRecord = item
+              this.editDefectRecord = true
+              this.addUnqualifiedRecordController.open()
+            })
           })
         }
         .width('100%')
@@ -185,4 +243,21 @@ export struct SelfInspectView {
     .justifyContent(FlexAlign.SpaceEvenly)
     .alignItems(VerticalAlign.Top)
   }
+
+  // 添加不良类型记录弹窗
+  addUnqualifiedRecordController: CustomDialogController = new CustomDialogController({
+    builder: AddUnqualifiedRecordDialog({
+      isEdit: this.editDefectRecord,
+      defectTypes: this.defectTypes,
+      defectRecord: this.selectDefectRecord,
+      seqNo: this.seqNo,
+      selectOperationId: this.selectOperationId,
+      process: this.process,
+      defectRecords: this.defectRecords,
+    }),
+    autoCancel: true, // 点击遮罩关闭
+    customStyle: true,
+    alignment:DialogAlignment.Center,
+    maskColor: 'rgba(0,0,0,0.8)',  // 黑色遮罩
+  })
 }

+ 2 - 0
entry/src/main/ets/viewmodel/RequestParamModel.ets

@@ -100,4 +100,6 @@ export default class RequestParamModel {
   drawingDictValue?:string
   //不查询的图纸资料类型
   notDrawingDictValue?:string
+  //缺陷类型(数据字典值)
+  bugType?:string
 }

+ 11 - 0
entry/src/main/ets/viewmodel/process/ProcessBaseBug.ets

@@ -0,0 +1,11 @@
+// 缺陷
+export default class ProcessBaseBug {
+  // id
+  id?: string
+  // 缺陷类型(数据字典:defect_mana)
+  bugType?: string
+  // 缺陷编码
+  bugCode?: string
+  // 缺陷名称
+  bugName?: string
+}

+ 15 - 0
entry/src/main/ets/viewmodel/process/ProcessEscalationDefect.ets

@@ -0,0 +1,15 @@
+// 不良类型具体缺陷(报故缺陷类型)
+export default class ProcessEscalationDefect {
+  // 主键id
+  id?: string
+  // 报故单id
+  escalationFaultId?: string
+  // 缺陷类型(大类) 字典
+  bugType?: string
+  // 缺陷类型(大类) 字典标签
+  bugTypeLabel?: string
+  // 缺陷编码(小类)
+  bugCode?: string
+  // 缺陷名称(小类)
+  bugName?: string
+}

+ 60 - 0
entry/src/main/ets/viewmodel/process/ProcessEscalationFault.ets

@@ -0,0 +1,60 @@
+// 不良类型记录(原一体机报故)
+import ProcessEscalationDefect from './ProcessEscalationDefect'
+
+export default class ProcessEscalationFault {
+  // 主键id
+  id?: string
+  // 不合格审理单号
+  trackingNumber?: string
+  // 当前报故状态 字典escalation_fault_state
+  state?: string
+  // 特征和程度(备注)
+  remark?: string
+  // 处置措施--字典值disposal_measures_type
+  disposalMeasures?: string
+  // 是否首检 0-否 1-是
+  firstInspection?: number
+  // 生产数量
+  planNum?: number
+  // (产品)型号
+  spec?: string
+  // 产品代号
+  materialCode?: string
+  // 产品名称
+  materialName?: string
+  // 阶段字典值---stage
+  stageDictValue?: string
+  // 不合格数量
+  unqualifiedNum?: number
+  // 责任人
+  personResponsible?: string
+  // 不合格工序,以逗号隔开
+  processes?: string
+  // 工位名称
+  stationName?: string
+  // 处置措施--字典字段fa_state
+  currentState?: string
+  // 订单编号
+  orderCode?: string
+  // 工单编号
+  workOrderCode?: string
+  // 序列号
+  seqNo?: string
+  // 线长审核意见
+  opinion?: string
+  // 处理结果
+  result?: string
+  // 缺陷类型集合
+  defectList?: ProcessEscalationDefect[]
+  /*
+   * 新增参数
+   * */
+  // 生产过程id
+  processId?: string
+  // 关联流水号
+  seqNoList?: string[]
+  // 缺陷类别
+  reasonList?: ProcessEscalationDefect[]
+  // 关联工序(目前只有当前工序)
+  processesList?: string[]
+}