From 5bd1494d82c575e623f106016a558a431e9ba997 Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期五, 25 七月 2025 11:17:14 +0800
Subject: [PATCH] 真空热处理炉三保功能及流程

---
 /dev/null                                                                                                   |  345 ---------------
 src/views/eam/maintenance/modules/EamThirdMaintenanceFurnaceModal.vue                                       |  121 +++++
 src/views/flowable/workflow/FlowCompleted.vue                                                               |   21 
 src/views/flowable/workflow/TechnicalStatusEvaluation/TechnicalStatusEvaluationOrderChangeApprovalModal.vue |    4 
 src/views/flowable/workflow/FlowTodo.vue                                                                    |   21 
 src/views/eam/maintenance/EamThirdMaintenanceFurnaceList.vue                                                |  396 ++++++++++++++++++
 src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceFurnaceApprovalModal.vue                       |  354 ++++++++++++++++
 7 files changed, 915 insertions(+), 347 deletions(-)

diff --git a/src/views/eam/maintenance/EamThirdMaintenanceFurnaceList.vue b/src/views/eam/maintenance/EamThirdMaintenanceFurnaceList.vue
new file mode 100644
index 0000000..90e6b31
--- /dev/null
+++ b/src/views/eam/maintenance/EamThirdMaintenanceFurnaceList.vue
@@ -0,0 +1,396 @@
+<template>
+  <a-card :bordered="false">
+
+    <!-- 鏌ヨ鍖哄煙 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="searchQuery">
+        <a-row :gutter="24">
+          <a-col :xl="5" :lg="6" :md="8" :sm="12">
+            <a-form-item label="缁熶竴缂栫爜">
+              <lx-search-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="queryParam.equipmentId"/>
+            </a-form-item>
+          </a-col>
+          <a-col :xl="4" :lg="6" :md="8" :sm="12">
+            <a-form-item label="宸ュ崟鍙�">
+              <a-input placeholder="璇疯緭鍏ュ伐鍗曞彿" v-model="queryParam.orderNum"/>
+            </a-form-item>
+          </a-col>
+          <a-col :xl="5" :lg="6" :md="8" :sm="12">
+            <a-form-item label="璁″垝淇濆吇鏃ユ湡">
+              <a-range-picker v-model="queryParam.maintenanceDate" value-format="YYYY-MM-DD"
+                              @change="handleDateRangeChange"/>
+            </a-form-item>
+          </a-col>
+          <a-col :xl="5" :lg="6" :md="8" :sm="12">
+            <a-form-item label="淇濆吇鐘舵��">
+              <j-dict-select-tag placeholder="璇烽�夋嫨淇濆吇鐘舵��" v-model="queryParam.maintenanceStatus"
+                                 dict-code="third_maintenance_furnace_status"/>
+            </a-form-item>
+          </a-col>
+          <a-col :xl="4" :lg="6" :md="8" :sm="12">
+            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
+              <a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
+            </span>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+
+    <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="handleBatchCollect">
+            <a-icon type="form"/>
+            棰嗗彇
+          </a-menu-item>
+          <a-menu-item key="1" @click="handleBatchAbolish">
+            <a-icon type="delete"/>
+            浣滃簾
+          </a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔
+          <a-icon type="down"/>
+        </a-button>
+      </a-dropdown>
+    </div>
+
+    <!-- table鍖哄煙-begin -->
+    <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 宸查�夋嫨 <a style="font-weight: 600">{{
+        selectedRowKeys.length }}</a>椤�
+        <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a>
+      </div>
+
+      <a-table ref="table" size="middle" bordered rowKey="id" :columns="columns" :dataSource="dataSource"
+               :pagination="ipagination" :loading="loading" :scroll="{x:'max-content'}"
+               :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" @change="handleTableChange">
+
+        <!--鑳藉惁婊¤冻鍔犲伐闇�姹�-->
+        <template slot="processingRequirementsFlag" slot-scope="text">
+          <a-switch v-if="text" checked-children="鏄�" un-checked-children="鍚�" :checked="Boolean(+text)" disabled/>
+        </template>
+
+        <span slot="action" slot-scope="text, record">
+          <template v-if="record.maintenanceStatus==='WAIT_MAINTENANCE'">
+             <a @click="handleEdit(record)">缂栬緫</a>
+
+             <a-divider type="vertical"/>
+
+              <a-popconfirm title="纭畾棰嗗彇鍚�?" @confirm="() => handleCollect(record.id)">
+               <a>棰嗗彇</a>
+              </a-popconfirm>
+
+             <a-divider type="vertical"/>
+
+            <a-popconfirm title="纭畾浣滃簾鍚�?" @confirm="() => handleAbolish(record.id)">
+              <a>浣滃簾</a>
+            </a-popconfirm>
+          </template>
+
+          <a v-else @click="handleDetail(record)">璇︽儏</a>
+        </span>
+
+      </a-table>
+    </div>
+    <!-- table鍖哄煙-end -->
+
+    <!-- 琛ㄥ崟鍖哄煙 -->
+    <eamThirdMaintenanceFurnace-modal ref="modalForm" @ok="modalFormOk"/>
+
+    <!--瀹℃壒绐楀彛-->
+    <third-maintenance-furnace-approval-modal ref="thirdMaintenanceFurnaceApprovalModal"
+                                              :selectShenpiData="selectedRowData"/>
+  </a-card>
+</template>
+
+<script>
+  import EamThirdMaintenanceFurnaceModal from './modules/EamThirdMaintenanceFurnaceModal'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import LxSearchEquipmentSelect from '../equipment/modules/LxSearchEquipmentSelect'
+  import { getAction, deleteAction } from '@/api/manage'
+  import ThirdMaintenanceFurnaceApprovalModal
+    from '../../flowable/workflow/thirdMaintenance/ThirdMaintenanceFurnaceApprovalModal'
+
+  export default {
+    name: 'EamThirdMaintenanceFurnaceList',
+    mixins: [JeecgListMixin],
+    components: {
+      ThirdMaintenanceFurnaceApprovalModal,
+      LxSearchEquipmentSelect,
+      EamThirdMaintenanceFurnaceModal
+    },
+    data() {
+      return {
+        description: '鐪熺┖鐑鐞嗙倝涓変繚绠$悊椤甸潰',
+        selectedRowData: {},
+        // 琛ㄥご
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key: 'rowIndex',
+            width: 60,
+            align: 'center',
+            customRender: function(t, r, index) {
+              return parseInt(index) + 1
+            },
+            fixed: 'left'
+          },
+          {
+            title: '缁熶竴缂栫爜',
+            align: 'center',
+            dataIndex: 'equipmentCode',
+            fixed: 'left'
+          },
+          {
+            title: '璁惧鍚嶇О',
+            align: 'center',
+            dataIndex: 'equipmentName',
+            fixed: 'left'
+          },
+          {
+            title: '璁惧鍨嬪彿',
+            align: 'center',
+            dataIndex: 'equipmentModel',
+            fixed: 'left'
+          },
+          {
+            title: '淇濆吇鐘舵��',
+            align: 'center',
+            dataIndex: 'maintenanceStatus_dictText',
+            fixed: 'left'
+          },
+          {
+            title: '宸ュ崟鍙�',
+            align: 'center',
+            dataIndex: 'orderNum'
+          },
+          {
+            title: '璁″垝淇濆吇鏃ユ湡',
+            align: 'center',
+            dataIndex: 'maintenanceDate'
+          },
+          {
+            title: '淇濆吇浜�',
+            align: 'center',
+            dataIndex: 'operator_dictText'
+          },
+          {
+            title: '淇濆吇鏃堕棿',
+            align: 'center',
+            dataIndex: 'operateTime'
+          },
+          {
+            title: '鍘嬬缉绌烘皵鍘嬪姏(MPa)',
+            align: 'center',
+            dataIndex: 'compressedAirPressureValue'
+          },
+          {
+            title: '鏋侀檺鐪熺┖(Pa)',
+            align: 'center',
+            dataIndex: 'ultimateVacuumValue'
+          },
+          {
+            title: '娉勬紡鐜�(Pa/h)',
+            align: 'center',
+            dataIndex: 'leakRate'
+          },
+          {
+            title: '鍑�鍖栧鐞�',
+            align: 'center',
+            dataIndex: 'purificationTreatment'
+          },
+          {
+            title: '鐐夋俯鍧囧寑鎬ф娴�',
+            align: 'center',
+            dataIndex: 'furnaceTemperatureUniformityTesting'
+          },
+          {
+            title: '鍔犵儹鍔熺巼娴嬭瘯',
+            align: 'center',
+            dataIndex: 'heatingPowerTest'
+          },
+          {
+            title: '鑳藉惁婊¤冻鍔犲伐闇�姹�',
+            align: 'center',
+            dataIndex: 'processingRequirementsFlag',
+            scopedSlots: { customRender: 'processingRequirementsFlag' }
+          },
+          {
+            title: '纭浜�',
+            align: 'center',
+            dataIndex: 'confirmUser_dictText'
+          },
+          {
+            title: '纭鏃ユ湡',
+            align: 'center',
+            dataIndex: 'confirmTime'
+          },
+          {
+            title: 'HF缂栫爜',
+            align: 'center',
+            dataIndex: 'hfCode'
+          },
+          {
+            title: '鎿嶄綔',
+            dataIndex: 'action',
+            align: 'center',
+            scopedSlots: { customRender: 'action' },
+            fixed: 'right',
+            width: 200
+          }
+        ],
+        url: {
+          list: '/eam/eamThirdMaintenanceFurnace/list',
+          collect: '/eam/eamThirdMaintenanceFurnace/collect',
+          collectBatch: '/eam/eamThirdMaintenanceFurnace/collectBatch',
+          abolish: '/eam/eamThirdMaintenanceFurnace/abolish',
+          abolishBatch: '/eam/eamThirdMaintenanceFurnace/abolishBatch'
+        }
+      }
+    },
+    methods: {
+      /**
+       * 淇濆吇鏃ユ湡鍙戠敓鏀瑰彉鏃惰Е鍙�
+       * @param dateStringArray
+       */
+      handleDateRangeChange(dateStringArray) {
+        this.queryParam.maintenanceDateBegin = dateStringArray[0]
+        this.queryParam.maintenanceDateEnd = dateStringArray[1]
+      },
+
+      /**
+       * 鐐瑰嚮棰嗗彇鏃惰Е鍙�
+       * @param id 琛岃褰昳d
+       */
+      handleCollect(id) {
+        let that = this
+        this.loading = true
+        getAction(that.url.collect, { id })
+          .then((res) => {
+            if (res.success) {
+              that.$notification.success({
+                message: '娑堟伅',
+                description: res.message
+              })
+              that.loadData()
+            } else {
+              that.$notification.warning({
+                message: '娑堟伅',
+                description: res.message
+              })
+              this.loading = false
+            }
+          })
+      },
+
+      // 鎵归噺棰嗗彇
+      handleBatchCollect() {
+        var ids = ''
+        for (var a = 0; a < this.selectedRowKeys.length; a++) {
+          ids += this.selectedRowKeys[a] + ','
+        }
+        var that = this
+        this.$confirm({
+          title: '纭棰嗗彇',
+          content: '鏄惁棰嗗彇閫変腑鏁版嵁锛屽彧鏈夊緟淇濆吇鐘舵�佺殑鏁版嵁鎵嶅彲棰嗗彇鎴愬姛?',
+          onOk: function() {
+            that.loading = true
+            deleteAction(that.url.collectBatch, { ids })
+              .then((res) => {
+                if (res.success) {
+                  //閲嶆柊璁$畻鍒嗛〉闂
+                  that.$notification.success({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                  that.loadData()
+                  that.onClearSelected()
+                } else {
+                  that.$notification.warning({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                  that.loading = false
+                }
+              })
+          }
+        })
+      },
+
+      /**
+       * 鐐瑰嚮浣滃簾鏃惰Е鍙�
+       * @param id 琛岃褰昳d
+       */
+      handleAbolish(id) {
+        var that = this
+        this.loading = true
+        getAction(that.url.abolish, { id })
+          .then((res) => {
+            if (res.success) {
+              that.$notification.success({
+                message: '娑堟伅',
+                description: res.message
+              })
+              that.loadData()
+            } else {
+              that.$notification.warning({
+                message: '娑堟伅',
+                description: res.message
+              })
+              this.loading = false
+            }
+          })
+      },
+
+      // 鎵归噺浣滃簾
+      handleBatchAbolish() {
+        var ids = ''
+        for (var a = 0; a < this.selectedRowKeys.length; a++) {
+          ids += this.selectedRowKeys[a] + ','
+        }
+        var that = this
+        this.$confirm({
+          title: '纭浣滃簾',
+          content: '鏄惁浣滃簾閫変腑鏁版嵁锛屽彧鏈夊緟淇濆吇鐘舵�佺殑鏁版嵁鎵嶅彲浣滃簾鎴愬姛?',
+          onOk: function() {
+            that.loading = true
+            deleteAction(that.url.abolishBatch, { ids })
+              .then((res) => {
+                if (res.success) {
+                  that.$notification.success({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                  that.loadData()
+                  that.onClearSelected()
+                } else {
+                  that.$notification.warning({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                  that.loading = false
+                }
+              })
+          }
+        })
+      },
+
+      /**
+       * 鐐瑰嚮璇︽儏鏃惰Е鍙戞椂瑙﹀彂
+       * @param record
+       */
+      handleDetail(record) {
+        this.selectedRowData = Object.assign({}, record)
+        this.$refs.thirdMaintenanceFurnaceApprovalModal.title = '璇︽儏'
+        this.$refs.thirdMaintenanceFurnaceApprovalModal.disableSubmit = true
+        this.$refs.thirdMaintenanceFurnaceApprovalModal.visible = true
+        this.$refs.thirdMaintenanceFurnaceApprovalModal.handleDetail(record)
+      }
+    }
+  }
+</script>
\ No newline at end of file
diff --git a/src/views/eam/maintenance/modules/EamThirdMaintenanceFurnaceModal.vue b/src/views/eam/maintenance/modules/EamThirdMaintenanceFurnaceModal.vue
new file mode 100644
index 0000000..12cd683
--- /dev/null
+++ b/src/views/eam/maintenance/modules/EamThirdMaintenanceFurnaceModal.vue
@@ -0,0 +1,121 @@
+<template>
+  <j-modal :title="title" :width="800" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen
+           @ok="handleOk" @cancel="handleCancel" cancelText="鍏抽棴">
+    <a-spin :spinning="confirmLoading">
+      <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
+        <a-form-model-item label="宸ュ崟鍙�">
+          <a-input placeholder="宸ュ崟鍙疯嚜鍔ㄧ敓鎴�" v-model="model.orderNum" disabled/>
+        </a-form-model-item>
+        <a-form-model-item prop="equipmentId" label="缁熶竴缂栫爜">
+          <lx-search-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="model.equipmentId" :allowClear="false"
+                                      :disabled="!editable"/>
+        </a-form-model-item>
+        <a-form-model-item prop="maintenanceDate" label="璁″垝淇濆吇鏃ユ湡">
+          <a-date-picker v-model="model.maintenanceDate" value-format="YYYY-MM-DD" :allowClear="false"
+                         style="width: 100%"/>
+        </a-form-model-item>
+        <a-form-model-item label="澶囨敞">
+          <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.remark"/>
+        </a-form-model-item>
+      </a-form-model>
+    </a-spin>
+  </j-modal>
+</template>
+
+<script>
+  import { httpAction } from '@/api/manage'
+  import LxSearchEquipmentSelect from '../../equipment/modules/LxSearchEquipmentSelect'
+
+  export default {
+    name: 'EamThirdMaintenanceFurnaceModal',
+    components: { LxSearchEquipmentSelect },
+    data() {
+      return {
+        title: '鎿嶄綔',
+        visible: false,
+        editable: true,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 }
+        },
+        confirmLoading: false,
+        validatorRules: {
+          equipmentId: [{ required: true, message: '璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�', trigger: 'change' }],
+          maintenanceDate: [{ required: true, message: '璇烽�夋嫨淇濆吇鏃ユ湡', trigger: 'change' }]
+        },
+        url: {
+          add: '/eam/eamThirdMaintenanceFurnace/add',
+          edit: '/eam/eamThirdMaintenanceFurnace/edit'
+        }
+      }
+    },
+    methods: {
+      add() {
+        this.model = {}
+        this.visible = true
+        this.editable = true
+      },
+
+      edit(record) {
+        this.model = Object.assign({}, record)
+        this.visible = true
+        this.editable = false
+      },
+
+      handleOk() {
+        const that = this
+        // 瑙﹀彂琛ㄥ崟楠岃瘉
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            that.confirmLoading = true
+            let httpurl = ''
+            let method = ''
+            if (!this.model.id) {
+              httpurl += this.url.add
+              method = 'post'
+            } else {
+              httpurl += this.url.edit
+              method = 'put'
+            }
+            httpAction(httpurl, that.model, method)
+              .then((res) => {
+                if (res.success) {
+                  that.$notification.success({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                  that.$emit('ok')
+                  that.close()
+                } else {
+                  that.$notification.warning({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                }
+              })
+              .finally(() => {
+                that.confirmLoading = that.spinning = false
+              })
+          } else {
+            return false
+          }
+        })
+      },
+
+      handleCancel() {
+        this.close()
+      },
+
+      close() {
+        this.$emit('close')
+        this.visible = false
+        if (this.$refs.form) this.$refs.form.clearValidate()
+      }
+    }
+  }
+</script>
\ No newline at end of file
diff --git a/src/views/eam/maintenance/modules/EamWeekMaintenanceOrderModal.vue b/src/views/eam/maintenance/modules/EamWeekMaintenanceOrderModal.vue
deleted file mode 100644
index 4a77dba..0000000
--- a/src/views/eam/maintenance/modules/EamWeekMaintenanceOrderModal.vue
+++ /dev/null
@@ -1,345 +0,0 @@
-<template>
-  <j-modal
-    :title="title"
-    :width="1200"
-    :visible="visible"
-    :confirmLoading="confirmLoading"
-    switchFullscreen
-    :mask-closable="false"
-    @ok="handleOk"
-    @cancel="handleCancel"
-    cancelText="鍏抽棴">
-    <a-spin :spinning="spinning">
-      <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
-        <a-row :gutter="24">
-          <a-col :span="8">
-            <a-form-model-item prop="orderNum" label="宸ュ崟鍙�">
-              <a-input placeholder="宸ュ崟鍙风郴缁熻嚜鍔ㄧ敓鎴�" v-model="model.orderNum" disabled/>
-            </a-form-model-item>
-          </a-col>
-          <a-col :span="8">
-            <a-form-model-item prop="equipmentId" label="璁惧缂栫爜">
-              <maintenance-equipment-select placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" v-model="model.equipmentId"
-                                            :maintenanceCategory="maintenanceCategory"
-                                            @autocompleteForm="autocompleteForm"
-                                            :disabled="editable"></maintenance-equipment-select>
-            </a-form-model-item>
-          </a-col>
-          <a-col :span="8">
-            <a-form-model-item prop="standardName" label="鏍囧噯鍚嶇О">
-              <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.standardName" disabled/>
-            </a-form-model-item>
-          </a-col>
-        </a-row>
-        <a-row :gutter="24">
-          <a-col :span="8">
-            <a-form-model-item prop="maintenanceDate" label="淇濆吇鏃ユ湡">
-              <a-date-picker placeholder="璇烽�夋嫨璁″垝淇濆吇鏃ユ湡" v-model="model.maintenanceDate" format="YYYY-MM-DD"
-                             style="width: 100%"/>
-            </a-form-model-item>
-          </a-col>
-          <a-col :span="8">
-            <a-form-model-item prop="operator" label="淇濆吇浜�">
-              <j-search-select-tag v-model="model.operator" placeholder="璇烽�夋嫨淇濆吇浜�" :disabled="!model.equipmentId"
-                                   :dictOptions="maintenanceOperatorOptions"/>
-            </a-form-model-item>
-          </a-col>
-          <a-col :span="8">
-            <a-form-model-item prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡">
-              <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.maintenancePeriod" disabled/>
-            </a-form-model-item>
-          </a-col>
-        </a-row>
-        <a-row :gutter="24">
-          <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="remark" label="澶囨敞">
-            <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.remark"/>
-          </a-form-model-item>
-        </a-row>
-        <a-row :gutter="24">
-          <a-spin :spinning="detail.loading">
-            <j-vxe-table
-              ref="editableDetailTable"
-              :rowNumber="true"
-              :rowSelection="true"
-              :bordered="true"
-              :alwaysEdit="true"
-              :toolbar="true"
-              :toolbarConfig="detail.toolbarConfig"
-              keep-source
-              :height="300"
-              :dataSource="detail.dataSource"
-              :columns="detail.columns"
-              style="margin-top: 8px;"/>
-          </a-spin>
-        </a-row>
-      </a-form-model>
-    </a-spin>
-  </j-modal>
-</template>
-
-<script>
-  import { getAction, httpAction } from '@/api/manage'
-  import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js'
-  import { JVXETypes } from '@comp/jeecg/JVxeTable'
-  import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect'
-
-  export default {
-    name: 'EamWeekMaintenanceOrderModal',
-    mixins: [JVxeTableModelMixin],
-    components: {
-      MaintenanceEquipmentSelect
-    },
-    data() {
-      return {
-        title: '鎿嶄綔',
-        visible: false,
-        editable: false,
-        model: {},
-        maintenanceCategory: 'WEEK_MAINTENANCE',
-        maintenanceOperatorOptions: [],
-        labelCol: {
-          xs: { span: 24 },
-          sm: { span: 6 }
-        },
-        wrapperCol: {
-          xs: { span: 24 },
-          sm: { span: 16 }
-        },
-        labelColLong: {
-          xs: { span: 24 },
-          sm: { span: 2 }
-        },
-        wrapperColLong: {
-          xs: { span: 24 },
-          sm: { span: 21 }
-        },
-        confirmLoading: false,
-        spinning: false,
-        validatorRules: {
-          equipmentId: [
-            { required: true, message: '璇烽�夋嫨璁惧!' }
-          ],
-          maintenanceDate: [
-            { required: true, message: '璇烽�夋嫨璁″垝淇濆吇鏃ユ湡!' }
-          ]
-        },
-        url: {
-          add: '/eam/weekMaintenanceOrder/add',
-          edit: '/eam/weekMaintenanceOrder/edit',
-          standardDetail: '/eam/eamMaintenanceStandardDetail/queryList',
-          detail: '/eam/weekMaintenanceOrderDetail/queryList',
-          userSelect: '/eam/user_select/list'
-        },
-        detail: {
-          loading: false,
-          dataSource: [],
-          columns: [
-            {
-              title: 'ID',
-              key: 'id',
-              type: JVXETypes.hidden
-            },
-            {
-              title: 'orderId',
-              key: 'orderId',
-              type: JVXETypes.hidden
-            },
-            {
-              title: '搴忓彿',
-              key: 'itemCode',
-              type: JVXETypes.inputNumber,
-              width: '10%',
-              align: 'center',
-              validateRules: [
-                { required: true, unique: true, message: '搴忓彿涓嶈兘閲嶅' }
-              ]
-            },
-            {
-              title: '淇濆吇椤�',
-              key: 'itemName',
-              type: JVXETypes.textarea,
-              width: '20%',
-              align: 'center',
-              validateRules: [
-                { required: true, message: '淇濆吇椤逛笉鑳戒负绌猴紒' }
-              ]
-            },
-            {
-              title: '瀛愪繚鍏婚」',
-              key: 'subItemName',
-              type: JVXETypes.textarea,
-              width: '25%',
-              align: 'center'
-            },
-            {
-              title: '淇濆吇瑕佹眰',
-              key: 'itemDemand',
-              type: JVXETypes.textarea,
-              width: '30%',
-              align: 'center',
-              validateRules: [
-                { required: true, message: '淇濆吇瑕佹眰涓嶈兘涓虹┖锛�' }
-              ]
-            }
-          ],
-          toolbarConfig: {
-            // prefix 鍓嶇紑锛泂uffix 鍚庣紑
-            slot: ['prefix', 'suffix'],
-            // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳
-            btn: ['add', 'remove', 'clearSelection']
-          }
-        }
-      }
-    },
-    created() {
-    },
-    methods: {
-      add() {
-        //鍒濆鍖栭粯璁ゅ��
-        this.model = {}
-        this.visible = true
-        this.editable = false
-        this.detail.dataSource = []
-      },
-      edit(record) {
-        this.model = Object.assign({}, record)
-        this.visible = true
-        this.editable = true
-        this.detail.dataSource = []
-        this.loadDetail(record.id)
-      },
-      close() {
-        this.$emit('close')
-        this.visible = false
-        this.$refs.form.clearValidate()
-      },
-      async handleOk() {
-        const that = this
-        let errMap = await that.$refs.editableDetailTable.validateTable()
-        if (errMap) {
-          this.$message.warning('鏁版嵁鏍¢獙澶辫触锛�')
-          return
-        }
-        // 瑙﹀彂琛ㄥ崟楠岃瘉
-        this.$refs.form.validate(valid => {
-          if (valid) {
-            let tableData = that.$refs.editableDetailTable.getTableData()
-            let removeData = that.$refs.editableDetailTable.getDeleteData()
-            that.model.tableDetailList = [...tableData]
-            that.model.removeDetailList = [...removeData]
-
-            that.confirmLoading = true
-            let httpurl = ''
-            let method = ''
-            if (!this.model.id) {
-              httpurl += this.url.add
-              method = 'post'
-            } else {
-              httpurl += this.url.edit
-              method = 'put'
-            }
-            httpAction(httpurl, this.model, method).then((res) => {
-              if (res.success) {
-                that.$message.success(res.message)
-                that.$emit('ok')
-                that.close()
-              } else {
-                that.$message.warning(res.message)
-              }
-            }).finally(() => {
-              that.confirmLoading = false
-            })
-          } else {
-            return false
-          }
-        })
-      },
-      handleCancel() {
-        this.close()
-      },
-      autocompleteForm(selectObj) {
-        //鏍囧噯鍚嶇О锛屼繚鍏诲懆鏈熶笉鍒锋柊瑙e喅鍔炴硶
-        //鍔炴硶涓�  validatorRules equipmentId 杩樻槸鏈夐棶棰�
-        // const newObj = {
-        //   standardName: selectObj.standardName,
-        //   maintenancePeriod: selectObj.maintenancePeriod,
-        //   standardId : selectObj.id,
-        //   equipmentId: selectObj.equipmentId,
-        // };
-        // this.model = Object.assign({}, newObj, this.model)
-        //鍔炴硶浜�
-        this.$set(this.model, 'standardName', selectObj.standardName)
-        this.$set(this.model, 'maintenancePeriod', selectObj.maintenancePeriod)
-        this.$set(this.model, 'standardId', selectObj.id)
-        this.$set(this.model, 'equipmentId', selectObj.equipmentId)
-        // console.log('model', this.model)
-        if (!this.model.equipmentId) delete this.model.operator
-        if (!this.model.id) {
-          this.loadStandardDetail(selectObj.id)
-        }
-        this.loadMaintenanceOperatorList(this.model.equipmentId)
-      },
-      //鍔犺浇璇︽儏鏁版嵁
-      loadStandardDetail(standardId) {
-        this.detail.dataSource = []
-        if (standardId) {
-          this.spinning = true
-          getAction(this.url.standardDetail, { standardId: standardId })
-            .then(res => {
-              if (res.success) {
-                this.detail.dataSource = res.result.map(item => ({
-                  itemCode: item.itemCode,
-                  itemName: item.itemName,
-                  subItemName: item.subItemName,
-                  itemDemand: item.itemDemand
-                }))
-              }
-            })
-            .finally(() => {
-              this.spinning = false
-            })
-        }
-      },
-      //鏍囧噯閫夋嫨鍙樺寲
-      loadDetail(orderId) {
-        if (orderId) {
-          getAction(this.url.detail, { orderId: orderId }).then(res => {
-            if (res.success) {
-              this.detail.dataSource = [...res.result]
-            }
-          })
-        }
-      },
-      loadMaintenanceOperatorList(equipmentId) {
-        this.maintenanceOperatorOptions = []
-        let params = { positionCode: 'PCR0001' }
-        if (equipmentId) {
-          params.equipmentId = equipmentId
-        }
-        else return
-        const that = this
-        getAction(this.url.userSelect, params)
-          .then(res => {
-            if (res.success) {
-              that.maintenanceOperatorOptions = res.result.map(item => ({
-                key: item.id,
-                value: item.username,
-                text: item.realname
-              }))
-              if (!that.maintenanceOperatorOptions.find(item => item.value === that.model.operator)) delete that.model.operator
-            } else {
-              if (that.model.operator) delete that.model.operator
-            }
-          })
-          .catch(err => {
-            if (that.model.operator) delete that.model.operator
-          })
-      }
-
-    }
-  }
-</script>
-
-<style lang="less" scoped>
-
-</style>
\ No newline at end of file
diff --git a/src/views/flowable/workflow/FlowCompleted.vue b/src/views/flowable/workflow/FlowCompleted.vue
index 3206395..19fafab 100644
--- a/src/views/flowable/workflow/FlowCompleted.vue
+++ b/src/views/flowable/workflow/FlowCompleted.vue
@@ -76,6 +76,10 @@
     <!--涓変繚鍙樻洿-->
     <third-maintenance-order-change-approval-modal ref="thirdMaintenanceOrderChangeApprovalModal"
                                                    :selectShenpiData="selectedRowData"/>
+
+    <!--鐪熺┖鐑鐞嗙倝涓変繚-->
+    <third-maintenance-furnace-approval-modal ref="thirdMaintenanceFurnaceApprovalModal"
+                                              :selectShenpiData="selectedRowData"/>
   </a-card>
 </template>
 
@@ -95,11 +99,13 @@
   import RepairOrderApprovalModal from './repairOrder/RepairOrderApprovalModal'
   import MaintenanceStandardApprovalModal from './MaintenanceStandard/MaintenanceStandardApprovalModal'
   import ThirdMaintenanceOrderChangeApprovalModal from './thirdMaintenance/ThirdMaintenanceOrderChangeApprovalModal'
+  import ThirdMaintenanceFurnaceApprovalModal from './thirdMaintenance/ThirdMaintenanceFurnaceApprovalModal'
 
   export default {
     name: 'FlowCompleted',
     mixins: [JeecgListMixin],
     components: {
+      ThirdMaintenanceFurnaceApprovalModal,
       ThirdMaintenanceOrderChangeApprovalModal,
       MaintenanceStandardApprovalModal,
       RepairOrderApprovalModal,
@@ -210,6 +216,9 @@
             break
           case 'third_maintenance_change':
             this.handleThirdMaintenanceOrderChange(record)
+            break
+          case 'third_maintenance_furnace_process':
+            this.handleThirdMaintenanceFurnace(record)
             break
           default:
             alert('娌℃壘鍒拌娴佺▼')
@@ -348,6 +357,18 @@
         this.$refs.thirdMaintenanceOrderChangeApprovalModal.handleApprove(record)
       },
 
+      /**
+       * 鐐瑰嚮鐪熺┖鐑鐞嗙倝涓変繚宸ュ崟娴佺▼鎵ц瀹℃壒鏃惰Е鍙�
+       * @param record
+       */
+      handleThirdMaintenanceFurnace(record) {
+        this.selectedRowData = Object.assign({}, record)
+        this.$refs.thirdMaintenanceFurnaceApprovalModal.visible = true
+        this.$refs.thirdMaintenanceFurnaceApprovalModal.title = record.name
+        this.$refs.thirdMaintenanceFurnaceApprovalModal.disableSubmit = true
+        this.$refs.thirdMaintenanceFurnaceApprovalModal.handleApprove(record)
+      },
+
       splitProcessType(title) {
         let parts = title.split('锛�') // 娉ㄦ剰鍐掑彿鏄叏瑙掑瓧绗︼紝浣跨敤瀵瑰簲鐨勫瓧杩涜鍒嗗壊
         let result = parts[0]
diff --git a/src/views/flowable/workflow/FlowTodo.vue b/src/views/flowable/workflow/FlowTodo.vue
index 9ecfc00..89f1065 100644
--- a/src/views/flowable/workflow/FlowTodo.vue
+++ b/src/views/flowable/workflow/FlowTodo.vue
@@ -125,6 +125,11 @@
     <third-maintenance-order-change-approval-modal ref="thirdMaintenanceOrderChangeApprovalModal"
                                                    :selectShenpiData="selectedRowData"
                                                    @modalFormOk="modalFormOk"/>
+
+    <!--鐪熺┖鐑鐞嗙倝涓変繚-->
+    <third-maintenance-furnace-approval-modal ref="thirdMaintenanceFurnaceApprovalModal"
+                                              :selectShenpiData="selectedRowData"
+                                              @modalFormOk="modalFormOk"/>
   </a-card>
 </template>
 
@@ -145,11 +150,13 @@
     from './TechnicalStatusEvaluation/TechnicalStatusEvaluationApplicationApprovalModal'
   import TechnicalStatusDeactivateApprovalModal from './TechnicalStatus/TechnicalStatusDeactivateApprovalModal'
   import ThirdMaintenanceOrderChangeApprovalModal from './thirdMaintenance/ThirdMaintenanceOrderChangeApprovalModal'
+  import ThirdMaintenanceFurnaceApprovalModal from './thirdMaintenance/ThirdMaintenanceFurnaceApprovalModal'
 
   export default {
     name: 'FlowTodo',
     mixins: [JeecgListMixin],
     components: {
+      ThirdMaintenanceFurnaceApprovalModal,
       ThirdMaintenanceOrderChangeApprovalModal,
       TechnicalStatusDeactivateApprovalModal,
       TechnicalStatusEvaluationApplicationApprovalModal,
@@ -276,6 +283,9 @@
           case 'third_maintenance_change':
             this.handleThirdMaintenanceOrderChange(record)
             break
+          case 'third_maintenance_furnace_process':
+            this.handleThirdMaintenanceFurnace(record)
+            break
           default:
             alert('娌℃壘鍒拌娴佺▼')
         }
@@ -402,6 +412,17 @@
         this.$refs.thirdMaintenanceOrderChangeApprovalModal.handleApprove(record)
       },
 
+      /**
+       * 鐐瑰嚮鐪熺┖鐑鐞嗙倝涓変繚宸ュ崟娴佺▼鎵ц瀹℃壒鏃惰Е鍙�
+       * @param record
+       */
+      handleThirdMaintenanceFurnace(record) {
+        this.selectedRowData = Object.assign({}, record)
+        this.$refs.thirdMaintenanceFurnaceApprovalModal.visible = true
+        this.$refs.thirdMaintenanceFurnaceApprovalModal.title = record.name
+        this.$refs.thirdMaintenanceFurnaceApprovalModal.handleApprove(record)
+      },
+
       batchHandle() {
         const categorySet = new Set(this.selectionRows.map(item => item.category))
         const nameSet = new Set(this.selectionRows.map(item => item.name))
diff --git a/src/views/flowable/workflow/TechnicalStatusEvaluation/TechnicalStatusEvaluationOrderChangeApprovalModal.vue b/src/views/flowable/workflow/TechnicalStatusEvaluation/TechnicalStatusEvaluationOrderChangeApprovalModal.vue
index 0808fe0..5e568f9 100644
--- a/src/views/flowable/workflow/TechnicalStatusEvaluation/TechnicalStatusEvaluationOrderChangeApprovalModal.vue
+++ b/src/views/flowable/workflow/TechnicalStatusEvaluation/TechnicalStatusEvaluationOrderChangeApprovalModal.vue
@@ -6,7 +6,7 @@
       <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
         <a-row id="outer-row" :gutter="24">
           <!--宸︿晶鍩虹淇℃伅鍒�-->
-          <a-col :span="!disableSubmit?8:14" class="scroll-col">
+          <a-col :span="selectShenpiData.procInstId?8:14" class="scroll-col">
             <a-tabs>
               <a-tab-pane tab="鍩虹淇℃伅">
                 <a-row>
@@ -78,7 +78,7 @@
           </a-col>
 
           <!--鍙充晶瀹℃壒鍒�-->
-          <a-col :span="!disableSubmit?6:10" class="scroll-col">
+          <a-col :span="selectShenpiData.procInstId?6:10" class="scroll-col">
             <a-tabs v-if="displayEquipmentManagerFlag">
               <a-tab-pane tab="浣跨敤鍗曚綅瀹ょ骇棰嗗纭">
                 <a-row>
diff --git a/src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceFurnaceApprovalModal.vue b/src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceFurnaceApprovalModal.vue
new file mode 100644
index 0000000..4a345d1
--- /dev/null
+++ b/src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceFurnaceApprovalModal.vue
@@ -0,0 +1,354 @@
+<template>
+  <j-modal :title="title" :width="1300" :fullscreen="fullScreen" :visible="visible" :confirmLoading="confirmLoading"
+           :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" @ok="handleOk" centered
+           @cancel="handleCancel" cancelText="鍏抽棴">
+    <a-spin :spinning="spinning">
+      <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
+        <a-row id="outer-row" :gutter="24">
+          <!--宸︿晶鍩虹淇℃伅鍒�-->
+          <a-col :span="selectShenpiData.procInstId?8:14" class="scroll-col">
+            <a-tabs>
+              <a-tab-pane tab="鍩虹淇℃伅">
+                <a-row>
+                  <a-col :span="12">
+                    <a-form-model-item label="宸ュ崟鍙�">
+                      <a-input v-model="model.orderNum" readOnly/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :span="12">
+                    <a-form-model-item label="缁熶竴缂栫爜">
+                      <lx-search-equipment-select v-model="model.equipmentId" disabled/>
+                    </a-form-model-item>
+                  </a-col>
+                </a-row>
+                <a-row>
+                  <a-col :span="12">
+                    <a-form-model-item label="璁″垝淇濆吇鏃ユ湡">
+                      <a-input v-model="model.maintenanceDate" readOnly/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :span="12">
+                    <a-form-model-item label="淇濆吇浜�">
+                      <a-input v-model="model.operator_dictText" readOnly/>
+                    </a-form-model-item>
+                  </a-col>
+                </a-row>
+                <a-row>
+                  <a-col :span="24">
+                    <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" label="澶囨敞">
+                      <a-textarea v-model="model.remark" readOnly/>
+                    </a-form-model-item>
+                  </a-col>
+                </a-row>
+              </a-tab-pane>
+            </a-tabs>
+          </a-col>
+
+          <!-- 涓棿鏄庣粏椤瑰垪-->
+          <a-col v-if="selectShenpiData.procInstId" :span="10" class="scroll-col">
+            <a-tabs>
+              <a-tab-pane key='1' tab='娴佺▼鍥�'>
+                <img :src="imageSrc" alt="Fetched Image" style="width: 100%" v-if="imageSrc"/>
+              </a-tab-pane>
+            </a-tabs>
+          </a-col>
+
+          <!--鍙充晶瀹℃壒鍒�-->
+          <a-col :span="selectShenpiData.procInstId?6:10" class="scroll-col">
+            <a-tabs v-if="displayRepairConfirmFlag">
+              <a-tab-pane tab="缁翠慨宸ョ‘璁�">
+                <a-row>
+                  <a-col :span="24">
+                    <a-form-model-item prop="compressedAirPressureValue" label="鍘嬬缉绌烘皵鍘嬪姏(MPa)"
+                                       :labelCol="rightColLabelCol"
+                                       :wrapperCol="rightColWrapperCol">
+                      <a-input v-model='model.compressedAirPressureValue' placeholder="璇疯緭鍏ュ帇缂╃┖姘斿帇鍔�(MPa)"
+                               :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :span="24">
+                    <a-form-model-item prop="ultimateVacuumValue" label="鏋侀檺鐪熺┖(Pa)"
+                                       :labelCol="rightColLabelCol"
+                                       :wrapperCol="rightColWrapperCol">
+                      <a-input v-model='model.ultimateVacuumValue' placeholder="璇疯緭鍏ユ瀬闄愮湡绌�(Pa)"
+                               :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :span="24">
+                    <a-form-model-item prop="leakRate" label="娉勬紡鐜�(Pa/h)"
+                                       :labelCol="rightColLabelCol"
+                                       :wrapperCol="rightColWrapperCol">
+                      <a-input v-model='model.leakRate' placeholder="璇疯緭鍏ユ硠婕忕巼(Pa/h)"
+                               :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :span="24">
+                    <a-form-model-item prop="purificationTreatment" label="鍑�鍖栧鐞�"
+                                       :labelCol="rightColLabelCol"
+                                       :wrapperCol="rightColWrapperCol">
+                      <a-input v-model='model.purificationTreatment' placeholder="璇疯緭鍏ュ噣鍖栧鐞�"
+                               :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :span="24">
+                    <a-form-model-item prop="furnaceTemperatureUniformityTesting" label="鐐夋俯鍧囧寑鎬ф娴�"
+                                       :labelCol="rightColLabelCol"
+                                       :wrapperCol="rightColWrapperCol">
+                      <a-input v-model='model.furnaceTemperatureUniformityTesting' placeholder="璇疯緭鍏ョ倝娓╁潎鍖�鎬ф娴�"
+                               :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :span="24">
+                    <a-form-model-item prop="heatingPowerTest" label="鍔犵儹鍔熺巼娴嬭瘯"
+                                       :labelCol="rightColLabelCol"
+                                       :wrapperCol="rightColWrapperCol">
+                      <a-input v-model='model.heatingPowerTest' placeholder="璇疯緭鍏ュ姞鐑姛鐜囨祴璇�"
+                               :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :span="24">
+                    <a-form-model-item prop="processingRequirementsFlag" label="鑳藉惁婊¤冻鍔犲伐闇�姹�"
+                                       :labelCol="rightColLabelCol"
+                                       :wrapperCol="rightColWrapperCol">
+                      <j-dict-select-tag type="radio" dict-code="yn" v-model='model.processingRequirementsFlag'
+                                         :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"/>
+                    </a-form-model-item>
+                  </a-col>
+                </a-row>
+              </a-tab-pane>
+            </a-tabs>
+
+            <a-tabs v-if="displayRepairLeaderConfirmFlag">
+              <a-tab-pane tab="缁翠慨瀹や富浠荤‘璁�">
+                <a-row>
+                  <a-col :span="24">
+                    <a-form-model-item prop="confirmDealType" label="纭绫诲瀷" :labelCol="rightColLabelCol"
+                                       :wrapperCol="rightColWrapperCol">
+                      <j-dict-select-tag type='radio' v-model='model.confirmDealType' dictCode='approved_rejected'
+                                         disabled/>
+                    </a-form-model-item>
+                  </a-col>
+                </a-row>
+              </a-tab-pane>
+            </a-tabs>
+          </a-col>
+        </a-row>
+      </a-form-model>
+    </a-spin>
+  </j-modal>
+</template>
+
+<script>
+  import { downFile, getAction, putAction } from '@/api/manage'
+  import LxSearchEquipmentSelect from '../../../eam/equipment/modules/LxSearchEquipmentSelect'
+
+  export default {
+    name: 'ThirdMaintenanceFurnaceApprovalModal',
+    components: {
+      LxSearchEquipmentSelect
+    },
+    props: {
+      selectShenpiData: {
+        type: Object
+      }
+    },
+    data() {
+      return {
+        title: '鎿嶄綔',
+        visible: false,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 8 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 }
+        },
+        labelColLong: {
+          xs: { span: 24 },
+          sm: { span: 4 }
+        },
+        wrapperColLong: {
+          xs: { span: 24 },
+          sm: { span: 20 }
+        },
+        rightColLabelCol: {
+          xs: { span: 24 },
+          sm: { span: 10 }
+        },
+        rightColWrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 12 }
+        },
+        confirmLoading: false,
+        spinning: false,
+        imageSrc: null,
+        fullScreen: true,
+        validatorRules: {
+          compressedAirPressureValue: [{ required: true, message: '璇疯緭鍏ュ帇缂╃┖姘斿帇鍔�(MPa)', trigger: 'change' }],
+          ultimateVacuumValue: [{ required: true, message: '璇疯緭鍏ユ瀬闄愮湡绌�(Pa)', trigger: 'change' }],
+          leakRate: [{ required: true, message: '璇疯緭鍏ユ硠婕忕巼(Pa/h)', trigger: 'change' }],
+          purificationTreatment: [{ required: true, message: '璇疯緭鍏ュ噣鍖栧鐞�', trigger: 'change' }],
+          furnaceTemperatureUniformityTesting: [{ required: true, message: '璇疯緭鍏ョ倝娓╁潎鍖�鎬ф娴�', trigger: 'change' }],
+          heatingPowerTest: [{ required: true, message: '璇疯緭鍏ュ姞鐑姛鐜囨祴璇�', trigger: 'change' }],
+          processingRequirementsFlag: [{ required: true, message: '璇烽�夋嫨鑳藉惁婊¤冻鍔犲伐闇�姹�' }],
+          confirmDealType: [{ required: true, message: '璇烽�夋嫨纭绫诲瀷' }]
+        },
+        url: {
+          queryById: '/eam/eamThirdMaintenanceFurnace/queryById',
+          approval: '/eam/eamThirdMaintenanceFurnace/approval',
+          diagramView: '/assign/flow/diagramView'
+        },
+        disableSubmit: false,
+        selectedRowKeys: []
+      }
+    },
+    computed: {
+      displayRepairConfirmFlag() {
+        return this.model.maintenanceStatus && ['UNDER_MAINTENANCE', 'WAIT_CONFIRM', 'COMPLETE'].includes(this.model.maintenanceStatus)
+      },
+      displayRepairLeaderConfirmFlag() {
+        return this.model.maintenanceStatus && ['WAIT_CONFIRM', 'COMPLETE'].includes(this.model.maintenanceStatus)
+      }
+    },
+    methods: {
+      /**
+       * 涓婚〉闈㈢偣鍑绘墽琛屽鎵规椂瑙﹀彂
+       * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍
+       */
+      handleApprove(record) {
+        this.fullScreen = true
+        this.model = {}
+        this.getBasicInformationByApi(record)
+        this.getFlowChartImageByApi(record)
+      },
+
+      /**
+       * 涓婚〉闈㈢偣鍑昏鎯呮椂瑙﹀彂
+       * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍
+       */
+      handleDetail(record) {
+        this.fullScreen = false
+        this.model = Object.assign({}, record)
+      },
+
+      /**
+       * 鑾峰彇鍩虹淇℃伅
+       * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍
+       */
+      getBasicInformationByApi(record) {
+        this.spinning = true
+        const that = this
+        getAction(this.url.queryById, { id: record.dataId })
+          .then(res => {
+            if (res.success) {
+              that.model = Object.assign({ confirmDealType: '1' }, res.result)
+              that.model.dataId = record.dataId
+              that.model.taskId = record.id
+              that.model.userId = record.assignee
+              that.model.instanceId = record.procInstId
+            }
+            else {
+              that.$notification.warning({
+                message: '娑堟伅',
+                description: res.message
+              })
+            }
+          })
+          .finally(() => {
+            that.spinning = false
+          })
+      },
+
+      /**
+       * 鑾峰彇娴佺▼鍥�
+       * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍
+       */
+      getFlowChartImageByApi(record) {
+        const { processDefinitionId, processInstanceId, processDefinitionKey } = record
+        this.imageSrc = null
+        downFile(this.url.diagramView, {
+          processDefinitionId,
+          processInstanceId,
+          TaskDefinitionKey: processDefinitionKey
+        }, 'get')
+          .then((res => {
+            this.imageSrc = window.URL.createObjectURL(new Blob([res]))
+          }))
+          .catch(err => {
+            this.$notification.error({
+              message: '娑堟伅',
+              description: err.message
+            })
+          })
+      },
+
+      async handleOk() {
+        const that = this
+
+        // 瑙﹀彂琛ㄥ崟楠岃瘉
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            that.confirmLoading = that.spinning = true
+
+            putAction(this.url.approval, this.model)
+              .then((res) => {
+                if (res.success) {
+                  that.$notification.success({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                  that.$emit('modalFormOk')
+                  that.close()
+                } else {
+                  that.$notification.warning({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                }
+              })
+              .finally(() => {
+                that.confirmLoading = that.spinning = false
+              })
+          } else {
+            return false
+          }
+        })
+      },
+
+      handleCancel() {
+        this.close()
+      },
+
+      close() {
+        this.$emit('close')
+        this.visible = false
+        this.$refs.form.clearValidate()
+      }
+    }
+  }
+</script>
+
+<style scoped lang="less">
+  /deep/ .ant-spin-nested-loading {
+    height: 100%;
+
+    .ant-spin-container {
+      height: 100%;
+
+      .ant-form {
+        height: 100%;
+
+        #outer-row {
+          height: 100%;
+
+          .scroll-col {
+            height: 100%;
+            overflow: auto;
+          }
+        }
+      }
+    }
+  }
+</style>
\ No newline at end of file

--
Gitblit v1.9.3