From f2cf3c86f4c76ac5471c4c8bccb0c6dab5e0b280 Mon Sep 17 00:00:00 2001
From: 小小儁爺 <1694218219@qq.com>
Date: 星期三, 19 六月 2024 14:28:41 +0800
Subject: [PATCH] 1.工单 工序 设备sop 查看开发

---
 src/views/systemSetting/processSetting.vue |    1 
 src/api/WorkOrder.js                       |   18 ++
 src/api/DeviceManager.js                   |   33 ++++
 src/views/sopManager/sopRoute.vue          |    8 +
 src/views/sopManager/sopWorkOrder.vue      |    6 
 src/views/workOrder/workOrderList.vue      |  192 +++++++++++++++++++++++----
 src/views/deviceManager/deviceList.vue     |  119 ++++++++++++++++
 src/views/sopManager/sopDevice.vue         |   11 +
 8 files changed, 350 insertions(+), 38 deletions(-)

diff --git a/src/api/DeviceManager.js b/src/api/DeviceManager.js
index bf3f061..30ed5ab 100644
--- a/src/api/DeviceManager.js
+++ b/src/api/DeviceManager.js
@@ -26,6 +26,7 @@
     params: data
   })
 }
+
 // 璁惧鍒楄〃鏌ヨ
 export function DeviceMangerSearch(data) {
   return request({
@@ -34,6 +35,16 @@
     params: data
   })
 }
+
+// 璁惧淇℃伅鏌ョ湅SOP
+export function DeviceSopSearch(data) {
+  return request({
+    url: 'DeviceManager/DeviceSopSearch',
+    method: 'get',
+    params: data
+  })
+}
+
 // 璁惧娓呭崟鏂板缂栬緫
 export function AddUpdateDeviceManger(data) {
   return request({
@@ -42,6 +53,7 @@
     data
   })
 }
+
 // 璁惧淇℃伅鍒犻櫎
 export function DeleteDeviceManger(data) {
   return request({
@@ -68,6 +80,7 @@
     data
   })
 }
+
 // 璁惧鐐规椤瑰垹闄�
 export function DeleteDeviceCheckItem(data) {
   return request({
@@ -76,6 +89,7 @@
     params: data
   })
 }
+
 // 璁惧淇濆吇椤瑰垪琛ㄦ煡璇�
 export function DeviceMaiItemSearch(data) {
   return request({
@@ -84,6 +98,7 @@
     params: data
   })
 }
+
 // 璁惧淇濆吇椤规柊澧炵紪杈�
 export function AddUpdateDeviceMaiItem(data) {
   return request({
@@ -92,6 +107,7 @@
     data
   })
 }
+
 // 璁惧淇濆吇椤瑰垹闄�
 export function DeleteDeviceMaiItem(data) {
   return request({
@@ -100,6 +116,7 @@
     params: data
   })
 }
+
 // 璁惧鐐规鏍囧噯鍒楄〃鏌ヨ
 export function DeviceCheckStandArdSearch(data) {
   return request({
@@ -108,6 +125,7 @@
     params: data
   })
 }
+
 // 璁惧鐐规鏍囧噯鏂板銆佺紪杈戣幏鍙栨楠岄」鐩笅鎷夊垪琛�
 export function DeviceCheckItemSelect() {
   return request({
@@ -115,6 +133,7 @@
     method: 'get'
   })
 }
+
 // 璁惧鐐规鏍囧噯缂栬緫/鏌ョ湅鑾峰彇鏁版嵁
 export function ViewDeviceCheckStanedSearch(data) {
   return request({
@@ -123,6 +142,7 @@
     params: data
   })
 }
+
 // 璁惧鐐规鏍囧噯鏂板缂栬緫
 export function AddUpdateDeviceCheckStandArd(data, opertype) {
   return request({
@@ -131,6 +151,7 @@
     data
   })
 }
+
 // 璁惧鐐规鏍囧噯鍒犻櫎
 export function DeleteDeviceCheckStaned(data) {
   return request({
@@ -139,6 +160,7 @@
     params: data
   })
 }
+
 // 璁惧鐐规鏍囧噯鍏宠仈宸ヤ綔绔欐煡璇�
 export function DeviceCheckStanedAssociationEqp(data) {
   return request({
@@ -147,6 +169,7 @@
     params: data
   })
 }
+
 // 璁惧鐐规鏍囧噯鍏宠仈宸ヤ綔绔欐彁浜�
 export function SaveDeviceCheckStanedAssociationEqp(data, checkstand_code) {
   return request({
@@ -155,6 +178,7 @@
     data
   })
 }
+
 // 璁惧淇濆吇鏍囧噯鍒楄〃鏌ヨ
 export function DeviceRepairStandArdSearch(data) {
   return request({
@@ -163,6 +187,7 @@
     params: data
   })
 }
+
 // 璁惧淇濆吇鏍囧噯鏂板銆佺紪杈戣幏鍙栦繚鍏婚」鐩笅鎷夊垪琛�
 export function DeviceRepairItemSelect() {
   return request({
@@ -170,6 +195,7 @@
     method: 'get'
   })
 }
+
 // 璁惧淇濆吇鏍囧噯缂栬緫/鏌ョ湅鑾峰彇鏁版嵁
 export function ViewDeviceRepairStanedSearch(data) {
   return request({
@@ -178,6 +204,7 @@
     params: data
   })
 }
+
 // 璁惧淇濆吇鏍囧噯鏂板缂栬緫
 export function AddUpdateDeviceRepairStandArd(data, opertype) {
   return request({
@@ -186,6 +213,7 @@
     data
   })
 }
+
 // 璁惧淇濆吇鏍囧噯鍒犻櫎
 export function DeleteDeviceRepairStaned(data) {
   return request({
@@ -194,6 +222,7 @@
     params: data
   })
 }
+
 // 璁惧淇濆吇鏍囧噯鍏宠仈宸ヤ綔绔欐煡璇�
 export function DeviceRepairStanedAssociationEqp(data) {
   return request({
@@ -202,6 +231,7 @@
     params: data
   })
 }
+
 // 璁惧淇濆吇鏍囧噯鍏宠仈宸ヤ綔绔欐彁浜�
 export function SaveDeviceRepairStanedAssociationEqp(data, repairstand_code) {
   return request({
@@ -264,6 +294,7 @@
     params: data
   })
 }
+
 // 璁惧缁翠慨璁板綍鏌ヨ
 export function DeviceUpdateSearch(data) {
   return request({
@@ -272,6 +303,7 @@
     params: data
   })
 }
+
 // 璁惧缁翠慨璁板綍鏄庣粏鏌ヨ
 export function DeviceUpdateSubSearch(data) {
   return request({
@@ -280,6 +312,7 @@
     params: data
   })
 }
+
 // 璁惧缁翠慨璁板綍涓嬭浇
 export function DeviceUpdateOutExcel(data) {
   return request({
diff --git a/src/api/WorkOrder.js b/src/api/WorkOrder.js
index 955d2a6..85ae1eb 100644
--- a/src/api/WorkOrder.js
+++ b/src/api/WorkOrder.js
@@ -97,6 +97,24 @@
   })
 }
 
+// MES宸ュ崟鏌ョ湅宸ュ崟SOP
+export function MesOrderSopSearch(data) {
+  return request({
+    url: 'WorkOrder/MesOrderSopSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// MES宸ュ崟鏌ョ湅宸ヨ壓SOP
+export function MesOrderProcessSopSearch(data) {
+  return request({
+    url: 'WorkOrder/MesOrderProcessSopSearch',
+    method: 'get',
+    params: data
+  })
+}
+
 // 宸ュ崟娲惧彂
 export function MesOrderDistribution(data) {
   return request({
diff --git a/src/views/deviceManager/deviceList.vue b/src/views/deviceManager/deviceList.vue
index b65696f..1cc07cb 100644
--- a/src/views/deviceManager/deviceList.vue
+++ b/src/views/deviceManager/deviceList.vue
@@ -63,7 +63,13 @@
         >
           <div class="bodyTopButtonGroup" style="justify-content: space-between">
             <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
-            <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=9')">瀵煎叆</el-button>
+            <el-button
+              v-waves
+              type="success"
+              icon="el-icon-download"
+              @click="$router.push('./../systemSetting/dataImport?fileCode=9')"
+            >瀵煎叆
+            </el-button>
           </div>
 
           <div class="bodyTopFormGroup">
@@ -128,7 +134,13 @@
                 class="bodySearchReset"
                 :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
               >
-                <el-button v-waves type="primary" icon="el-icon-search" @click="getDeviceMangerSearch($refs.treeLeftRef.getCurrentNode())">鏌ヨ</el-button>
+                <el-button
+                  v-waves
+                  type="primary"
+                  icon="el-icon-search"
+                  @click="getDeviceMangerSearch($refs.treeLeftRef.getCurrentNode())"
+                >鏌ヨ
+                </el-button>
                 <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
               </div>
             </el-form>
@@ -225,6 +237,15 @@
               >
                 <template slot-scope="{row}">
                   <div class="operationClass">
+                    <el-tooltip v-del-tab-index class="item" effect="dark" content="SOP棰勮" placement="top">
+                      <i
+                        v-if="mesSetting.device"
+                        class="el-icon-files"
+                        style="cursor: pointer;color:#42b983;margin-right: 15px"
+                        @click="pre(row)"
+                      />
+                    </el-tooltip>
+
                     <el-tooltip class="item" effect="dark" content="缂栬緫" placement="top">
                       <i
                         class="el-icon-edit-outline"
@@ -361,6 +382,63 @@
       </span>
     </el-dialog>
 
+    <!--    sop棰勮-->
+    <el-dialog
+      v-el-drag-dialog
+      title="璁惧SOP棰勮"
+      :visible.sync="SopDialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleSopClose"
+      @close="handleSopClose"
+    >
+
+      <el-form ref="dialogClassForm" inline :rules="dialogClassFormRules" :model="dialogClassForm" label-width="110px">
+        <el-form-item label="璁惧SOP">
+          <el-select
+            v-model="dialogSopForm.sop"
+            style="width:200px"
+            placeholder="璇烽�夋嫨"
+            filterable
+            :popper-append-to-body="false"
+            @change="sopChange"
+          >
+            <el-option
+              v-for="item in sopArr"
+              :key="item.filepath"
+              :label="item.filename"
+              :value="item.filepath"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="Sop鐗堟湰">
+          <el-input v-model="dialogSopForm.v" disabled style="width: 200px" />
+        </el-form-item>
+      </el-form>
+
+      <el-button
+        v-waves
+        type="primary"
+        style="margin-left: 37px"
+        @click="view"
+      >棰� 瑙�/涓� 杞�</el-button>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="handleSopClose">鍙� 娑�</el-button>
+          <!--          <el-button-->
+          <!--            v-waves-->
+          <!--            type="primary"-->
+          <!--            :loading="$store.state.app.buttonIsDisabled"-->
+          <!--            :disabled="$store.state.app.buttonIsDisabled"-->
+          <!--            @click="handleSopConfirm"-->
+          <!--          >纭� 瀹�</el-button>-->
+        </div>
+      </span>
+    </el-dialog>
+
   </div>
 </template>
 
@@ -375,7 +453,7 @@
   AddUpdateDeviceManger,
   AddUpdateDeviceType, DeleteDeviceManger,
   DeleteDeviceType,
-  DeviceMangerSearch,
+  DeviceMangerSearch, DeviceSopSearch,
   DeviceTypeSearch
 } from '@/api/DeviceManager'
 
@@ -387,6 +465,7 @@
   },
   data() {
     return {
+      mesSetting: JSON.parse(localStorage.getItem('mesSetting')),
       mouseHoverType: 'mouseout',
       isExpandForm: false,
       mainHeight: 0,
@@ -469,8 +548,14 @@
         storgcode: [
           { required: true, message: '璇烽�夋嫨鎵�灞炵粍缁�', trigger: ['blur', 'change'] }
         ]
+      },
 
-      }
+      SopDialogVisible: false,
+      dialogSopForm: { // 璁惧SOP琛ㄥ崟
+        sop: '',
+        v: ''
+      },
+      sopArr: []
 
     }
   },
@@ -486,6 +571,32 @@
     this.getPrentOrganization()
   },
   methods: {
+    // 寮瑰嚭妗嗗叧闂�
+    handleSopClose() {
+      this.SopDialogVisible = false
+      this.dialogSopForm = { // 璁惧SOP琛ㄥ崟
+        sop: '',
+        v: ''
+      }
+    },
+    // 棰勮
+    view() {
+      window.open(process.env.VUE_APP_BASE_API_FILE + this.dialogSopForm.sop)
+    },
+    // sop棰勮
+    async pre(row) {
+      const data = {
+        eqptypecode: row.eqptype_code,
+        eqpcode: row.code
+      }
+      const { data: res } = await DeviceSopSearch(data)
+      this.sopArr = res
+
+      this.SopDialogVisible = true
+    },
+    sopChange(val) {
+      this.dialogSopForm.v = this.sopArr.find(i => i.filepath === val).version
+    },
     async getDeviceTypeSearch() {
       const res = await DeviceTypeSearch()
       res.data.forEach(i => {
diff --git a/src/views/sopManager/sopDevice.vue b/src/views/sopManager/sopDevice.vue
index 37d2c24..2ff0331 100644
--- a/src/views/sopManager/sopDevice.vue
+++ b/src/views/sopManager/sopDevice.vue
@@ -228,8 +228,8 @@
               :on-exceed="handleExceed"
               :auto-upload="false"
               :multiple="false"
+              accept=".mp4,.pdf,.png,.jpeg,.svg,.txt,.xlsx,.xls"
             >
-              <!--              accept=".mp4,.pdf"-->
               <el-button
                 v-waves
                 type="primary"
@@ -368,6 +368,7 @@
     handleExceed() {
       this.$message.info('鏆備笉鏀寔澶氭枃浠朵笂浼狅紒')
     },
+
     async devicetypecodeChange(eqptypecode) {
       const { data: res } = await EqpTypecodeSeachEqpPermissions({ eqptypecode })
       this.deviceArr = res
@@ -432,8 +433,14 @@
     // 瀵硅瘽妗嗙‘璁�
     dialogVisibleConfirm() {
       console.log(this.$refs.uploadFileRef.uploadFiles[0])
+
       if (!this.$refs.uploadFileRef.uploadFiles[0]) {
-        this.$message.info('璇烽�夋嫨鏂囦欢涓婁紶锛�')
+        return this.$message.info('璇烽�夋嫨鏂囦欢涓婁紶锛�')
+      }
+
+      const isLt100M = this.$refs.uploadFileRef.uploadFiles[0].size / 1024 / 1024 <= 1024
+      if (!isLt100M) {
+        return this.$message.info('璇锋鏌ワ紝涓婁紶鏂囦欢澶у皬涓嶈兘瓒呰繃1024MB!')
       }
 
       this.$refs.dialogForm.validate(valid => {
diff --git a/src/views/sopManager/sopRoute.vue b/src/views/sopManager/sopRoute.vue
index 07345d7..1cbc4df 100644
--- a/src/views/sopManager/sopRoute.vue
+++ b/src/views/sopManager/sopRoute.vue
@@ -203,7 +203,7 @@
             <el-option
               v-for="item in partcodeArr"
               :key="item.partcode"
-              :label="item.partname"
+              :label="item.partname+' / '+item.partcode"
               :value="item.partcode"
             />
           </el-select>
@@ -279,6 +279,7 @@
               :on-exceed="handleExceed"
               :auto-upload="false"
               :multiple="false"
+              accept=".mp4,.pdf,.png,.jpeg,.svg,.txt,.xlsx,.xls"
             >
               <!--              accept=".mp4,.pdf"-->
               <el-button
@@ -525,6 +526,11 @@
         this.$message.info('璇烽�夋嫨鏂囦欢涓婁紶锛�')
       }
 
+      const isLt100M = this.$refs.uploadFileRef.uploadFiles[0].size / 1024 / 1024 <= 1024
+      if (!isLt100M) {
+        return this.$message.info('璇锋鏌ワ紝涓婁紶鏂囦欢澶у皬涓嶈兘瓒呰繃1024MB!')
+      }
+
       this.$refs.dialogForm.validate(valid => {
         if (valid) {
           const formData = new FormData()
diff --git a/src/views/sopManager/sopWorkOrder.vue b/src/views/sopManager/sopWorkOrder.vue
index 72b17dd..629483d 100644
--- a/src/views/sopManager/sopWorkOrder.vue
+++ b/src/views/sopManager/sopWorkOrder.vue
@@ -236,6 +236,7 @@
               :on-exceed="handleExceed"
               :auto-upload="false"
               :multiple="false"
+              accept=".mp4,.pdf,.png,.jpeg,.svg,.txt,.xlsx,.xls"
             >
               <!--              accept=".mp4,.pdf"-->
               <el-button
@@ -463,6 +464,11 @@
         this.$message.info('璇烽�夋嫨鏂囦欢涓婁紶锛�')
       }
 
+      const isLt100M = this.$refs.uploadFileRef.uploadFiles[0].size / 1024 / 1024 <= 1024
+      if (!isLt100M) {
+        return this.$message.info('璇锋鏌ワ紝涓婁紶鏂囦欢澶у皬涓嶈兘瓒呰繃1024MB!')
+      }
+
       this.$refs.dialogForm.validate(valid => {
         if (valid) {
           const formData = new FormData()
diff --git a/src/views/systemSetting/processSetting.vue b/src/views/systemSetting/processSetting.vue
index ddfcad7..3f62e1e 100644
--- a/src/views/systemSetting/processSetting.vue
+++ b/src/views/systemSetting/processSetting.vue
@@ -138,6 +138,7 @@
         this.route = mesSetting.route
 
         this.isOrder = mesSetting.isOrder
+        this.device = mesSetting.device
         this.tech = mesSetting.tech
         this.workOrder = mesSetting.workOrder
         this.every = mesSetting.every
diff --git a/src/views/workOrder/workOrderList.vue b/src/views/workOrder/workOrderList.vue
index 4bde2c9..2d963b1 100644
--- a/src/views/workOrder/workOrderList.vue
+++ b/src/views/workOrder/workOrderList.vue
@@ -351,6 +351,16 @@
           >
             <template slot-scope="{row}">
               <div class="operationClass">
+
+                <el-tooltip v-del-tab-index class="item" effect="dark" content="SOP棰勮" placement="top">
+                  <i
+                    v-if="mesSetting.workOrder"
+                    class="el-icon-files"
+                    style="cursor: pointer;color:#42b983;margin-right: 15px"
+                    @click="pre(row,1)"
+                  />
+                </el-tooltip>
+
                 <el-tooltip class="item" effect="dark" content="淇敼" placement="top">
                   <i
                     class="el-icon-edit-outline"
@@ -491,34 +501,42 @@
             show-tooltip-when-overflow
             prop="delive_qty"
           />
-          <!--          <el-table-column-->
-          <!--            label="鎿嶄綔"-->
-          <!--            width="120"-->
-          <!--            fixed="right"-->
-          <!--          >-->
-          <!--            <template slot-scope="{row}">-->
-          <!--              <div class="operationClass">-->
-          <!--                <el-tooltip class="item" effect="dark" content="鎵撳嵃宸ュ簭" placement="top">-->
-          <!--                  <i-->
-          <!--                    v-if="tableDataDetail.length!==row.seq"-->
-          <!--                    class="el-icon-printer"-->
-          <!--                    :style="{color:$store.state.settings.theme}"-->
-          <!--                    style="cursor: pointer;margin-right: 15px"-->
-          <!--                    @click="supplementSmallClick(row)"-->
-          <!--                  />-->
-          <!--                </el-tooltip>-->
-          <!--                <el-tooltip class="item" effect="dark" content="琛ユ墦鐢熶骇鍏ュ簱鏉$爜" placement="top">-->
-          <!--                  <i-->
-          <!--                    v-if="tableDataDetail.length===row.seq"-->
-          <!--                    class="  el-icon-camera"-->
-          <!--                    :style="{color:$store.state.settings.theme}"-->
-          <!--                    style="cursor: pointer;margin-right: 15px"-->
-          <!--                    @click="getProductInHouseLabCode(row.wo_code)"-->
-          <!--                  />-->
-          <!--                </el-tooltip>-->
-          <!--              </div>-->
-          <!--            </template>-->
-          <!--          </el-table-column>-->
+          <el-table-column
+            label="鎿嶄綔"
+            width="120"
+            fixed="right"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <el-tooltip v-del-tab-index class="item" effect="dark" content="SOP棰勮" placement="top">
+                  <i
+                    v-if="mesSetting.tech"
+                    class="el-icon-files"
+                    style="cursor: pointer;color:#42b983;margin-right: 15px"
+                    @click="pre(row,2)"
+                  />
+                </el-tooltip>
+                <!--                          <el-tooltip class="item" effect="dark" content="鎵撳嵃宸ュ簭" placement="top">-->
+                <!--                            <i-->
+                <!--                              v-if="tableDataDetail.length!==row.seq"-->
+                <!--                              class="el-icon-printer"-->
+                <!--                              :style="{color:$store.state.settings.theme}"-->
+                <!--                              style="cursor: pointer;margin-right: 15px"-->
+                <!--                              @click="supplementSmallClick(row)"-->
+                <!--                            />-->
+                <!--                          </el-tooltip>-->
+                <!--                          <el-tooltip class="item" effect="dark" content="琛ユ墦鐢熶骇鍏ュ簱鏉$爜" placement="top">-->
+                <!--                            <i-->
+                <!--                              v-if="tableDataDetail.length===row.seq"-->
+                <!--                              class="  el-icon-camera"-->
+                <!--                              :style="{color:$store.state.settings.theme}"-->
+                <!--                              style="cursor: pointer;margin-right: 15px"-->
+                <!--                              @click="getProductInHouseLabCode(row.wo_code)"-->
+                <!--                            />-->
+                <!--                          </el-tooltip>-->
+              </div>
+            </template>
+          </el-table-column>
         </el-table>
       </div>
     </div>
@@ -2024,6 +2042,64 @@
       </span>
     </el-dialog>
 
+    <!--    宸ュ崟sop/宸ュ簭sop-->
+    <el-dialog
+      v-el-drag-dialog
+      class="sop"
+      title="璁惧SOP棰勮"
+      :visible.sync="SopDialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleSopClose"
+      @close="handleSopClose"
+    >
+
+      <el-form inline label-width="110px" style="display:flex">
+        <el-form-item label="宸ュ崟SOP">
+          <el-select
+            v-model="dialogSopForm.sop"
+            style="width:200px"
+            placeholder="璇烽�夋嫨"
+            filterable
+            :popper-append-to-body="false"
+            @change="sopChange"
+          >
+            <el-option
+              v-for="item in sopArr"
+              :key="item.filepath"
+              :label="item.filename"
+              :value="item.filepath"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="Sop鐗堟湰">
+          <el-input v-model="dialogSopForm.v" disabled style="width: 200px" />
+        </el-form-item>
+      </el-form>
+
+      <el-button
+        v-waves
+        type="primary"
+        style="margin-left: 37px"
+        @click="view"
+      >棰� 瑙�/涓� 杞�</el-button>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="handleSopClose">鍙� 娑�</el-button>
+          <!--          <el-button-->
+          <!--            v-waves-->
+          <!--            type="primary"-->
+          <!--            :loading="$store.state.app.buttonIsDisabled"-->
+          <!--            :disabled="$store.state.app.buttonIsDisabled"-->
+          <!--            @click="handleSopConfirm"-->
+          <!--          >纭� 瀹�</el-button>-->
+        </div>
+      </span>
+    </el-dialog>
+
   </div>
 </template>
 
@@ -2038,8 +2114,8 @@
 import {
   AddMesOrderCodeSearch,
   AddUpdateMesOrder, DeleteMesOrder,
-  MesBadOrderSearch, MesOrderDistribution, MesOrderNewStepContent,
-  MesOrderSearch,
+  MesBadOrderSearch, MesOrderDistribution, MesOrderNewStepContent, MesOrderProcessSopSearch,
+  MesOrderSearch, MesOrderSopSearch,
   UpdateMesOrderStepSearch
 } from '@/api/WorkOrder'
 import { PartSelect } from '@/api/ProductModel'
@@ -2049,6 +2125,7 @@
 import { MesOrderPrintSearch } from '@/api/GridReport' // base on element-ui
 import DateType from '@/components/DateType'
 import { PartSelectRpute, RouteSelectStep } from '@/api/basicSettings'
+import { DeviceSopSearch } from '@/api/DeviceManager'
 export default {
   name: 'WorkOrderList',
   components: {
@@ -2316,8 +2393,16 @@
 
       sourceType: false, // 宸ュ簭鐨勬暟鎹潵婧�
 
-      mesSetting: JSON.parse(localStorage.getItem('mesSetting'))
+      mesSetting: JSON.parse(localStorage.getItem('mesSetting')),
 
+      SopDialogVisible: false,
+      dialogSopForm: { // 璁惧SOP琛ㄥ崟
+        sop: '',
+        v: ''
+      },
+      sopArr: [],
+      routeCode: '', // 宸ヨ壓璺嚎code
+      partCode: ''
     }
   },
   watch: {
@@ -2353,6 +2438,43 @@
     // })
   },
   methods: {
+    // 寮瑰嚭妗嗗叧闂�
+    handleSopClose() {
+      this.SopDialogVisible = false
+      this.dialogSopForm = { // 璁惧SOP琛ㄥ崟
+        sop: '',
+        v: ''
+      }
+    },
+    // 棰勮
+    view() {
+      window.open(process.env.VUE_APP_BASE_API_FILE + this.dialogSopForm.sop)
+    },
+    sopChange(val) {
+      this.dialogSopForm.v = this.sopArr.find(i => i.filepath === val).version
+    },
+    async pre(row, type) {
+      if (type === 1) {
+        const data = {
+          wocode: row.wo_code,
+          materielcode: row.partcode
+        }
+        const { data: res } = await MesOrderSopSearch(data)
+        this.sopArr = res
+      }
+
+      if (type === 2) {
+        const data = {
+          materielcode: this.partCode,
+          routecode: this.routeCode ? this.routeCode : '',
+          stepcode: row.step_code
+        }
+        const { data: res } = await MesOrderProcessSopSearch(data)
+        this.sopArr = res
+      }
+
+      this.SopDialogVisible = true
+    },
     // 宸ュ簭鏉ユ簮鍒囨崲
     sourceTypeChange(val) {
       this.stepTableData = []
@@ -3316,6 +3438,8 @@
     },
     //  琛岀偣鍑讳簨浠�
     async rowClick(row, event, column) {
+      this.routeCode = row.route_code ? row.route_code : ''
+      this.partCode = row.partcode ? row.partcode : ''
       const data = {
         sourceid: row.sourceid,
         sourcewo: row.m_po,
@@ -3475,6 +3599,12 @@
   padding: 20px 100px !important;
 }
 
+.sop {
+  ::v-deep .el-dialog__body {
+    padding: 50px 80px !important;
+  }
+}
+
 .dialogVisibleSearch ::v-deep .el-dialog__body {
   padding: 20px 20px !important;
 }

--
Gitblit v1.9.3