From c054516a38a2613a4e7399ba62694fbd99a606fe Mon Sep 17 00:00:00 2001
From: loulijun2021 <1694218219@qq.com>
Date: 星期五, 06 一月 2023 09:10:09 +0800
Subject: [PATCH] 1.组织架构表格拖动实现demo

---
 src/views/scgl/gd.vue | 1978 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 1,717 insertions(+), 261 deletions(-)

diff --git a/src/views/scgl/gd.vue b/src/views/scgl/gd.vue
index 8e70301..aea5140 100644
--- a/src/views/scgl/gd.vue
+++ b/src/views/scgl/gd.vue
@@ -1,13 +1,23 @@
 <template>
   <div>
     <div class="body" :style="{height:mainHeight+'px'}">
-      <div style="padding: 10px 5px 0 0">
+
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <div style="display: flex">
+          <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+          <el-button type="primary" icon="el-icon-connection" @click="send('send')">娲惧彂</el-button>
+        </div>
+
+        <el-button icon="el-icon-switch-button" @click="orderClose">鍏抽棴宸ュ崟</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
         <el-form
           ref="form"
           :model="form"
-          label-width="80px"
+          label-width="100px"
           inline
-          style="display: flex;justify-content: space-between"
+          style="display: flex;"
         >
           <div class="elForm">
             <el-form-item label="璁㈠崟鐘舵��" style=" display: flex;">
@@ -30,27 +40,38 @@
             <el-form-item label="璁㈠崟缂栧彿" style=" display: flex;">
               <el-input v-model="form.mesordercode" placeholder="璇疯緭鍏�" style="width: 200px" />
             </el-form-item>
-            <el-form-item label="浜у搧缂栫爜" style=" display: flex;">
-              <!--              <el-select v-model="form.partcode" :popper-append-to-body="false" style="width: 200px" placeholder="璇烽�夋嫨">-->
-              <!--                <el-option-->
-              <!--                  v-for="item in OrgTypeArr"-->
-              <!--                  :key="item.code"-->
-              <!--                  :label="item.name"-->
-              <!--                  :value="item.code"-->
-              <!--                />-->
-              <!--              </el-select>-->
+            <el-form-item label="婧愬崟鍗曞彿" style="display: flex;">
+              <el-input v-model="form.sourceorder" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item label="鍗曟嵁绫诲瀷" style=" display: flex;">
+              <el-select
+                v-model="form.ordertype"
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+              >
+                <!--            @change="mesordertypeChange"-->
+                <el-option
+                  v-for="item in ordertypeArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="浜у搧缂栫爜" style=" display: flex;">
               <el-input v-model="form.partcode" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
-            <el-form-item label="浜у搧鍚嶇О" style=" display: flex;">
+            <el-form-item v-show="isExpandForm" label="浜у搧鍚嶇О" style=" display: flex;">
               <el-input v-model="form.partname" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
-            <el-form-item label="浜у搧瑙勬牸" style=" display: flex;">
+            <el-form-item v-show="isExpandForm" label="浜у搧瑙勬牸" style=" display: flex;">
               <el-input v-model="form.partspec" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
-            <el-form-item label="鍒涘缓浜哄憳" style=" display: flex;">
+            <el-form-item v-show="isExpandForm" label="鍒涘缓浜哄憳" style=" display: flex;">
               <el-input v-model="form.creatuser" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
-            <el-form-item label="鍒涘缓鏃堕棿" style=" display: flex;">
+            <el-form-item v-show="isExpandForm" label="鍒涘缓鏃堕棿" style=" display: flex;">
               <!--              <el-date-picker-->
               <!--                v-model="form.createdate"-->
               <!--                type="daterange"-->
@@ -65,51 +86,52 @@
                 type="date"
                 size="mini"
                 :clearable="false"
-                style="width: 200px;"
+                class="dateMini"
                 format="yyyy-MM-dd"
                 placeholder="閫夋嫨鏃ユ湡"
               />
             </el-form-item>
           </div>
-          <div style="min-height: 100px">
-            <div style="display: flex;align-items: start;justify-content:end;margin-top: 5px;z-index: 2">
-              <el-button type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
-              <el-button type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
-            </div>
-            <!--            <div v-if="!isFullscreen" style="display: flex;align-items: start; margin-top: 15px;z-index: 2">-->
-            <!--              <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>-->
-            <!--              <el-button type="primary" icon="el-icon-connection" @click="send('send')">娲惧彂</el-button>-->
-            <!--              <el-button type="primary" icon="el-icon-switch-button">璁㈠崟鍏抽棴</el-button>-->
-            <!--            </div>-->
-            <!--            <div v-if="isFullscreen" style="display: flex;flex-direction: column;align-items: end">-->
-            <!--              <div style="display: flex;margin: 10px 0">-->
-            <!--                <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>-->
-            <!--                <el-button type="primary" icon="el-icon-connection" @click="send('send')">娲惧彂</el-button>-->
-            <!--              </div>-->
-            <!--              <el-button type="primary" icon="el-icon-switch-button">璁㈠崟鍏抽棴</el-button>-->
-            <!--            </div>-->
 
+          <div class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}">
+            <el-button type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
           </div>
+
         </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
       </div>
-      <el-divider />
-      <div style="margin-left: 10px;display: flex">
-        <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
-        <el-button type="primary" icon="el-icon-connection" @click="send('send')">娲惧彂</el-button>
-        <el-button type="primary" icon="el-icon-switch-button" @click="orderClose">宸ュ崟鍏抽棴</el-button>
-      </div>
-      <el-divider />
+
       <div class="elTableDiv">
         <el-table
+          ref="tableDataRef"
+          class="tableFixed"
           :data="tableData"
-          :height="tableHeight+'px'"
+          :height="isExpandForm?tableHeight:(tableHeight+80)+'px'"
           border
-          stripe
-          :style="{width: 100+'%',height:tableHeight+'px',}"
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+80)+'px'}"
           highlight-current-row
           :header-cell-style="this.$headerCellStyle"
           :cell-style="this.$cellStyle"
           @sort-change="sortChange"
+          @row-click="rowClick"
         >
           <!--          <el-table-column-->
           <!--            type="selection"-->
@@ -123,9 +145,9 @@
               <el-radio
                 v-model="radioSelected"
                 :label="row.wo_code"
-                style="color: #fff;padding-left: 10px; margin-right: -25px;"
-                @change.native="getCurrentRow(row.wo_code)"
+                style="color: transparent;padding-left: 10px;"
               />
+              <!--              @change.native="getCurrentRow(row.wo_code)"-->
             </template>
           </el-table-column>
           <el-table-column
@@ -139,6 +161,7 @@
             label="璁㈠崟鐘舵��"
             sortable="custom"
             width="110"
+            show-tooltip-when-overflow
           >
             <template slot-scope="{row}">
               <div v-if="row.status==='NEW'">鏂板伐鍗�</div>
@@ -147,17 +170,46 @@
               <div v-if="row.status==='ALLO'">宸叉淳鍙�</div>
               <div v-if="row.status==='START'">寮�宸�</div>
               <div v-if="row.status==='CLOSED'">瀹屽伐</div>
+              <div v-if="row.status==='NOSCHED'">寰呮帓绋�</div>
+              <div v-if="row.status==='SCHED'">宸叉帓绋�</div>
             </template>
           </el-table-column>
           <el-table-column
             prop="wo_code"
             label="宸ュ崟缂栧彿"
+            show-tooltip-when-overflow
             sortable="custom"
             min-width="160"
           />
           <el-table-column
+            prop="m_po"
+            label="婧愬崟鍗曞彿"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="160"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.m_po">{{ row.m_po }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wotype"
+            label="鍗曟嵁绫诲瀷"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="120"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.wotype==='PO'">鏍囧噯宸ュ崟</div>
+              <div v-else-if="row.wotype==='FO'">鎶ュ簾琛ュ崟</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
             prop="partcode"
             label="浜у搧缂栫爜"
+            show-tooltip-when-overflow
             sortable="custom"
             min-width="120"
           />
@@ -165,6 +217,7 @@
             prop="partname"
             min-width="150"
             label="浜у搧鍚嶇О"
+            show-tooltip-when-overflow
             sortable="custom"
           />
           <el-table-column
@@ -172,41 +225,82 @@
             label="浜у搧瑙勬牸"
             sortable="custom"
             width="110"
-          />
+            show-tooltip-when-overflow
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.partspec">{{ row.partspec }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
           <el-table-column
             prop="plan_qty"
             label="宸ュ崟鏁�"
             sortable="custom"
+            show-tooltip-when-overflow
             width="100"
           />
           <el-table-column
             prop="wkshp_name"
             label="鐢熶骇杞﹂棿"
+            show-tooltip-when-overflow
             sortable="custom"
             width="120"
-          />
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.wkshp_name">{{ row.wkshp_name }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
           <el-table-column
             prop="route_name"
             label="宸ヨ壓璺嚎"
+            show-tooltip-when-overflow
             sortable="custom"
-            min-width="130"
-          />
-
+            width="180"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.route_name">{{ row.route_name }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <!--          <el-table-column-->
+          <!--            prop="route_name"-->
+          <!--            label="鍏宠仈宸ヨ壓璺嚎"-->
+          <!--            min-width="110"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <i v-if="row.route_name" class="el-icon-share" @click="routeClick(row)" />-->
+          <!--              <i v-else style="color:rgb(180 ,181, 185)" class="el-icon-share" @click="routeClick(row)" />-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
           <el-table-column
             prop="plan_startdate"
             label="璁″垝寮�濮嬫椂闂�"
+            show-tooltip-when-overflow
             sortable="custom"
             width="160"
-          />
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.plan_startdate">{{ row.plan_startdate }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
           <el-table-column
             prop="plan_enddate"
             label="璁″垝缁撴潫鏃堕棿"
             sortable="custom"
             width="160"
-          />
+            show-tooltip-when-overflow
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.plan_enddate">{{ row.plan_enddate }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
           <el-table-column
             prop="piroque"
             label="宸ュ崟绛夌骇"
+            show-tooltip-when-overflow
             sortable="custom"
             width="120"
           >
@@ -214,10 +308,12 @@
               <div v-if="row.piroque==='1'">鐗圭骇</div>
               <div v-if="row.piroque==='2'">绱ф��</div>
               <div v-if="row.piroque==='3'">姝e父</div>
+              <div v-else>/</div>
             </template>
           </el-table-column>
           <el-table-column
             prop="lm_user"
+            show-tooltip-when-overflow
             label="鍒涘缓浜哄憳"
             sortable="custom"
             width="120"
@@ -225,6 +321,7 @@
           <el-table-column
             prop="lm_date"
             label="鍒涘缓鏃堕棿"
+            show-tooltip-when-overflow
             width="160"
             sortable="custom"
           />
@@ -235,8 +332,22 @@
           >
             <template slot-scope="{row}">
               <div class="operationClass">
-                <el-button type="text" @click="check(row)">宸ュ簭浠诲姟</el-button>
-                <el-button type="text" @click="del(row)">鍒犻櫎</el-button>
+                <el-tooltip class="item" effect="dark" content="鎵撳嵃宸ュ崟" placement="top">
+                  <!--                  <i-->
+                  <!--                    class="el-icon-tickets"-->
+                  <!--                    style="cursor: pointer;color: #42b983;margin-right: 15px"-->
+                  <!--                    @click="check(row)"-->
+                  <!--                  />-->
+                  <i
+                    :style="{color:$store.state.settings.theme}"
+                    class="el-icon-tickets"
+                    style="cursor: pointer;margin-right: 15px"
+                    @click="handlePrint(row.wo_code)"
+                  />
+                </el-tooltip>
+                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
+                  <i class="el-icon-delete" :style="{color:$store.state.settings.theme}" @click="del(row)" />
+                </el-tooltip>
               </div>
             </template>
           </el-table-column>
@@ -244,15 +355,104 @@
       </div>
       <!--鍒嗛〉-->
       <pagination
-        v-show="total>0"
         :total="total"
         :page.sync="form.page"
         :limit.sync="form.rows"
         align="right"
-        layout="prev, pager, next,sizes"
+        layout="total,prev, pager, next,sizes"
         popper-class="select_bottom"
         @pagination="getMesOrderSearch"
       />
+
+      <div class="elTableDiv">
+        <el-table
+          :data="tableDataDetail"
+          border
+          height="210px"
+          :row-class-name="tableRowClassName"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+        >
+          <!--          <el-table-column-->
+          <!--            width="50"-->
+          <!--            type="index"-->
+          <!--            prop="搴忓彿"-->
+          <!--            fixed-->
+          <!--          />   -->
+          <el-table-column
+            width="50"
+            prop="seq"
+            label="搴忓彿"
+            fixed
+          />
+          <el-table-column
+            prop="wo_code"
+            show-tooltip-when-overflow
+            label="宸ュ崟缂栧彿"
+            width="160"
+          />
+
+          <el-table-column
+            prop="partcode"
+            label="浜у搧缂栫爜"
+            width="150"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="partname"
+            label="浜у搧鍚嶇О"
+            width="200"
+            show-tooltip-when-overflow
+          />
+
+          <el-table-column
+            label="宸ュ簭缂栫爜"
+            prop="stepcode"
+            show-tooltip-when-overflow
+            width="150"
+          />
+          <el-table-column
+            label="宸ュ簭鍚嶇О"
+            show-tooltip-when-overflow
+            prop="stepname"
+            width="150"
+          />
+          <el-table-column
+            label="浠诲姟鏁伴噺"
+            show-tooltip-when-overflow
+            prop="plan_qty"
+          />
+          <el-table-column
+            label="鍚堟牸鏁伴噺"
+            show-tooltip-when-overflow
+            prop="good_qty"
+          />
+          <el-table-column
+            label="涓嶈壇鏁伴噺"
+            show-tooltip-when-overflow
+            prop="ng_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
+                    class="el-icon-tickets"
+                    :style="{color:$store.state.settings.theme}"
+                    style="cursor: pointer;margin-right: 15px"
+                    @click="supplementSmallClick(row)"
+                  />
+                </el-tooltip>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
     </div>
     <!--鏂板娲惧彂瀵硅瘽妗�-->
     <el-dialog
@@ -295,6 +495,42 @@
         <el-form-item label="宸ュ崟缂栧彿" prop="mesordercode">
           <el-input v-model="dialogForm.mesordercode" :disabled="operation!=='add'" style="width: 200px" />
         </el-form-item>
+        <div style="display: flex">
+          <el-form-item label="宸ュ崟绫诲瀷" prop="mesorderstus">
+            <el-select
+              v-model="dialogForm.ordertype"
+              :popper-append-to-body="false"
+              style="width: 200px"
+              :disabled="operation!=='add'"
+              placeholder="璇烽�夋嫨"
+              @change="mesordertypeChange"
+            >
+
+              <el-option
+                v-for="item in ordertypeArr"
+                :key="item.code"
+                :label="item.name"
+                :value="item.code"
+              />
+            </el-select>
+          </el-form-item>
+          <div style="display: flex;flex-wrap: nowrap">
+            <el-form-item label="婧愬崟鍗曞彿">
+              <el-input
+                v-model="dialogForm.sourceorder"
+                :disabled="dialogForm.ordertype==='PO'"
+                style="width: 172px"
+              />
+            </el-form-item>
+            <el-button
+              type="primary"
+              style="padding: 0 10px;margin-left: -8px;margin-top: 3px"
+              class="el-icon-search"
+              :disabled="operation!=='add'||dialogForm.ordertype==='PO'"
+              @click="mesordertsourcesearchclick"
+            />
+          </div>
+        </div>
         <el-form-item label="宸ュ崟鏁伴噺" prop="mesqty">
           <el-input
             v-model="dialogForm.mesqty"
@@ -328,7 +564,7 @@
         <el-form-item v-if="operation!=='add'" label="浜у搧鍚嶇О" prop="partname">
           <el-input v-model="dialogForm.partname" disabled style="width: 200px" />
         </el-form-item>
-        <el-form-item label="浜у搧缂栫爜" prop="partcode">
+        <el-form-item label="浜у搧缂栫爜">
           <el-input v-model="dialogForm.partcode" disabled style="width: 200px" />
         </el-form-item>
         <el-form-item label="浜у搧瑙勬牸" prop="partspec">
@@ -356,7 +592,7 @@
             </el-form-item>
             <el-button
               type="primary"
-              style="padding: 0 10px;margin-left: -8px;margin-top: 5px"
+              style="padding: 0 10px;margin-left: -8px;margin-top:3px"
               class="el-icon-search"
               @click="searchClick"
             />
@@ -381,12 +617,36 @@
             </el-select>
           </el-form-item>
         </div>
+        <el-form-item label="鏄惁鎺掔▼" prop="isAps">
+          <el-radio-group v-model="dialogForm.isAps" style="width:200px" @change="changeIsAps">
+            <el-radio key="Y" label="Y" value="Y">鏄�</el-radio>
+            <el-radio key="N" label="N" value="N">鍚�</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="鐗╂枡娓呭崟" :prop="dialogForm.isAps==='Y'?'bomId':''">
+          <el-select
+            v-model="dialogForm.bomId"
+            filterable
+            :disabled="dialogForm.isAps==='N'"
+            :popper-append-to-body="false"
+            style="width: 200px;"
+            placeholder="璇烽�夋嫨"
+          >
+            <el-option
+              v-for="item in bomIdArr"
+              :key="item.id"
+              :label="item.version"
+              :value="item.id"
+            />
+          </el-select>
+        </el-form-item>
         <el-form-item label="璁″垝寮�濮嬫椂闂�" prop="planstartdate">
           <el-date-picker
             v-model="dialogForm.planstartdate"
             type="date"
             :clearable="false"
             value-format="yyyy-MM-dd"
+            :picker-options="pickerOptions"
             style="width: 200px"
             placeholder="閫夋嫨鏃ユ湡"
           />
@@ -399,6 +659,7 @@
             value-format="yyyy-MM-dd"
             style="width: 200px"
             placeholder="閫夋嫨鏃ユ湡"
+            :picker-options="pickerOptions"
           />
         </el-form-item>
         <el-form-item label="宸ュ崟绛夌骇" prop="orderlev">
@@ -417,6 +678,7 @@
             />
           </el-select>
         </el-form-item>
+
       </el-form>
 
       <!--        宸ヨ壓璺嚎鏀惧ぇ闀滃璇濇-->
@@ -432,7 +694,7 @@
         <el-table
           :data="searchTableData"
           border
-          stripe
+          :row-class-name="tableRowClassName"
           height="300"
           style="width: 100%;"
           highlight-current-row
@@ -443,18 +705,22 @@
             prop="seq"
             label="搴忓彿"
             width="50"
+            fixed
           />
           <el-table-column
             prop="stepcode"
+            show-tooltip-when-overflow
             label="宸ュ簭缂栫爜"
           />
           <el-table-column
             prop="stepname"
             label="宸ュ簭鍚嶇О"
+            show-tooltip-when-overflow
           />
           <el-table-column
             prop="flwtype"
             label="宸ュ簭绫诲瀷"
+            show-tooltip-when-overflow
           >
             <template slot-scope="{row}">
               <div v-if="row.flwtype==='W'">澶栧崗</div>
@@ -464,6 +730,8 @@
           <el-table-column
             prop="descr"
             label="宸ュ簭鎻忚堪"
+            show-tooltip-when-overflow
+            fixed="right"
           />
         </el-table>
       </el-dialog>
@@ -472,12 +740,17 @@
         <div class="footerButton">
           <el-button @click="dialogVisibleCancel">鍙� 娑�</el-button>
           <!--          <el-button v-if="operation==='add'" type="primary" @click="dialogVisibleConfirmPreview('add')">棰勮</el-button>-->
-          <el-button type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>
+          <el-button
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
         </div>
       </span>
     </el-dialog>
 
-    <!--    宸ュ簭浠诲姟瀵硅瘽妗�-->
+    <!-- 宸ュ簭浠诲姟瀵硅瘽妗�-->
     <el-dialog
       title="宸ュ簭浠诲姟"
       :visible.sync="dialogVisibleTask"
@@ -491,11 +764,12 @@
         style="margin-bottom: 15px"
         type="primary"
         @click="supplementClick"
-      >琛ユ墦</el-button>
+      >琛ユ墦
+      </el-button>
       <el-table
         :data="taskTableData"
         border
-        stripe
+        :row-class-name="tableRowClassName"
         height="300"
         style="width: 100%;"
         highlight-current-row
@@ -506,18 +780,22 @@
           prop="seq"
           width="50"
           label="搴忓彿"
+          fixed
         />
         <el-table-column
           prop="wo_code"
+          show-tooltip-when-overflow
           label="宸ュ崟缂栧彿"
           width="200"
         />
         <el-table-column
           prop="stepcode"
           label="宸ュ簭缂栫爜"
+          show-tooltip-when-overflow
         />
         <el-table-column
           prop="stepname"
+          show-tooltip-when-overflow
           label="宸ュ簭鍚嶇О"
         />
         <!--        <el-table-column-->
@@ -535,16 +813,27 @@
         <!--        />-->
         <el-table-column
           prop="plan_qty"
+          show-tooltip-when-overflow
           label="浠诲姟鏁伴噺"
         />
         <el-table-column
           prop="good_qty"
+          show-tooltip-when-overflow
           label="鍚堟牸鏁伴噺"
         />
         <el-table-column
           prop="ng_qty"
+          show-tooltip-when-overflow
           label="涓嶈壇鏁伴噺"
         />
+        <el-table-column
+          label="鎿嶄綔"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" style="padding: 0;" @click="supplementSmallClick(row)">琛ユ墦</el-button>
+          </template>
+        </el-table-column>
       </el-table>
 
       <span slot="footer" class="dialog-footer">
@@ -555,7 +844,317 @@
       </span>
     </el-dialog>
 
-    <!--        鎵撳嵃棰勮瀵硅瘽妗�-->
+    <!-- 婧愬崟鍗曞彿瀵硅瘽妗�-->
+    <el-dialog
+      title="婧愬崟鍗曞彿"
+      :visible.sync="dialogVisibleSource"
+      width="1200px"
+      top="10vh"
+      class="dialogVisibleSearch"
+      :close-on-click-modal="false"
+      @close="dialogVisibleSourceClose"
+    >
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="sourceForm"
+          :model="sourceForm"
+          label-width="100px"
+          inline
+          style="display: flex;justify-content: space-between"
+        >
+          <div class="elForm" style="justify-content: flex-start">
+            <el-form-item
+              label="棰勮寮�宸ユ椂闂�"
+              label-width="100px"
+              style=" display: flex;font-size: 14px;margin-top: 3px"
+            >
+              <el-date-picker
+                v-model="sourceForm.paystartdate"
+                type="daterange"
+                range-separator="~"
+                class="timeMini"
+                size="mini"
+                style="width: 200px;display: flex;line-height: 34px;height: 34px;font-size: 14px!important;"
+                :clearable="false"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+              />
+              <!--              :picker-options="expireTimeOption"-->
+
+            </el-form-item>
+            <el-form-item
+              label="棰勮瀹屽伐鏃堕棿"
+              label-width="100px"
+              style=" display: flex;font-size: 14px;margin-top: 3px"
+            >
+              <el-date-picker
+                v-model="sourceForm.payenddate"
+                type="daterange"
+                :clearable="false"
+                class="timeMini"
+                range-separator="~"
+                start-placeholder="寮�濮嬫棩鏈�"
+                style="width: 200px;display: flex;line-height: 34px ;height: 34px ;font-size: 14px !important;"
+                end-placeholder="缁撴潫鏃ユ湡"
+                size="mini"
+              />
+            </el-form-item>
+            <el-form-item label="璁㈠崟鐘舵��" style=" display: flex;">
+              <el-select
+                v-model="sourceForm.erporderstus"
+                filterable
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in erporderstusArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item v-show="isExpandDialog" label="璁㈠崟缂栧彿" style=" display: flex;">
+              <el-input v-model="sourceForm.erpordercode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandDialog" label="浜у搧缂栫爜" style=" display: flex;">
+              <el-input v-model="sourceForm.partcode" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+
+            <el-form-item v-show="isExpandDialog" label="浜у搧鍚嶇О" style=" display: flex;">
+              <el-input v-model="sourceForm.partname" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandDialog" label="浜у搧瑙勬牸" style=" display: flex;">
+              <el-input v-model="sourceForm.partspec" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandDialog" label="鍒涘缓浜哄憳" style=" display: flex;">
+              <el-input v-model="sourceForm.creatuser" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+
+          </div>
+
+          <div style="display: flex;align-items: start;margin-top: 3px;z-index: 2;justify-content: end">
+            <el-button type="primary" icon="el-icon-search" @click="sourceSearch">鏌ヨ</el-button>
+            <el-button type="info" icon="el-icon-refresh" @click="sourceReset">閲嶇疆</el-button>
+          </div>
+
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverTypeDialog==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandDialog?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverTypeDialog=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverTypeDialog==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandDialog?'doubleDown':'doubleUp'"
+            @click="isExpandDialog=!isExpandDialog"
+            @mouseout="mouseHoverTypeDialog=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          :data="sourceTableData"
+          :height="isExpandDialog?(tableHeight+60)+'px':(tableHeight+140)+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:isExpandDialog?(tableHeight+60)+'px':(tableHeight+140)+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sourceSortChange"
+          @row-click="getCurrentRowSource"
+        >
+          <!--          <el-table-column-->
+          <!--            type="selection"-->
+          <!--            width="50"-->
+          <!--          />-->
+          <el-table-column
+            width="50"
+            fixed
+          >
+            <template slot-scope="{row}">
+              <el-radio
+                v-model="radioSelectedId"
+                :label="row.id"
+                style="color: transparent;padding-left: 10px;"
+              />
+              <!--              @change.native="getCurrentRowSource(row.id)"-->
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="RowNum"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="status"
+            label="璁㈠崟鐘舵��"
+            show-tooltip-when-overflow
+            sortable="custom"
+            width="110"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.status==='NEW'">鏂拌鍗�</div>
+              <div v-if="row.status==='CREATING'">閮ㄥ垎涓嬭揪</div>
+              <div v-if="row.status==='CREATED'">鍏ㄩ儴涓嬭揪</div>
+              <div v-if="row.status==='CLOSED'">宸插叧闂�</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wo"
+            label="璁㈠崟缂栧彿"
+            show-tooltip-when-overflow
+            sortable="custom"
+            min-width="150"
+          />
+          <el-table-column
+            prop="partcode"
+            label="浜у搧缂栫爜"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="150"
+          />
+          <el-table-column
+            prop="partname"
+            label="浜у搧鍚嶇О"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="150"
+          />
+          <el-table-column
+            prop="partspec"
+            label="浜у搧瑙勬牸"
+            show-tooltip-when-overflow
+            sortable="custom"
+            min-width="110"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.partspec">{{ row.partspec }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="qty"
+            label="璁㈠崟鏁伴噺"
+            width="150"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="relse_qty"
+            show-tooltip-when-overflow
+            label="宸蹭笅鍗曟暟閲�"
+            width="150"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="wkshp_name"
+            label="鐢熶骇杞﹂棿"
+            show-tooltip-when-overflow
+            sortable="custom"
+            width="150"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.wkshp_name">{{ row.wkshp_name }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="planstartdate"
+            label="棰勮寮�宸ユ椂闂�"
+            show-tooltip-when-overflow
+            sortable="custom"
+            width="130"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.planstartdate">{{ row.planstartdate.substring(0, 11) }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="planenddate"
+            label="棰勮瀹屽伐鏃堕棿"
+            show-tooltip-when-overflow
+            sortable="custom"
+            width="130"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.planenddate">{{ row.planenddate.substring(0, 11) }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="createuser"
+            label="鍒涘缓浜哄憳"
+            show-tooltip-when-overflow
+            sortable="custom"
+            width="150"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.createuser">{{ row.createuser }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="createdate"
+            label="鍒涘缓鏃堕棿"
+            show-tooltip-when-overflow
+            width="130"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.createdate">{{ row.createdate.substring(0, 11) }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <!--          <el-table-column-->
+          <!--            label="鎿嶄綔"-->
+          <!--            fixed="right"-->
+          <!--            width="80"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <div class="operationClass">-->
+          <!--                <el-tooltip class="item" effect="dark" content="涓嬭揪" placement="top">-->
+          <!--                  &lt;!&ndash;                <el-button type="text" @click="edit('edit',row)">涓嬭揪</el-button>&ndash;&gt;-->
+          <!--                  <i-->
+          <!--                    class="el-icon-bottom"-->
+          <!--                    style="color:#42b983;cursor: pointer;margin-left: 5px"-->
+          <!--                    @click="edit('edit',row)"-->
+          <!--                  />-->
+          <!--                </el-tooltip>-->
+          <!--              </div>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+        </el-table>
+      </div>
+      <!--鍒嗛〉-->
+      <pagination
+        :total="sourceFormTotal"
+        :page.sync="sourceForm.page"
+        :limit.sync="sourceForm.rows"
+        align="right"
+        layout="total,prev, pager, next,sizes"
+        popper-class="select_bottom"
+        @pagination="getErpOrderSearch"
+      />
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button @click="dialogVisibleSourceBack">杩� 鍥�</el-button>
+          <el-button type="primary" @click="dialogVisibleSourceConfirm">纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--鎵撳嵃棰勮瀵硅瘽妗�  澶ф爣绛�-->
     <el-dialog
       title=""
       :visible.sync="dialogVisibleApprove"
@@ -574,33 +1173,36 @@
             <el-form
               ref="formApprove"
               :model="formApprove"
-              label-width="100px"
+              label-width="80px"
               inline
               style="display: flex;justify-content: space-between"
             >
               <div class="elForm">
-                <el-form-item label="宸ュ崟缂栧彿锛�" class="formContent">
+                <el-form-item label="宸ュ崟缂栧彿:" class="formContent">
                   {{ formApprove.mesordercode }}
                 </el-form-item>
-                <el-form-item label="浜у搧缂栫爜锛�" class="formContent">
+                <el-form-item label="婧愬崟鍗曞彿:" class="formContent">
+                  {{ formApprove.m_po }}
+                </el-form-item>
+                <el-form-item label="浜у搧缂栫爜:" class="formContent">
                   {{ formApprove.partcode }}
                 </el-form-item>
-                <el-form-item label="浜у搧鍚嶇О锛�" class="formContent">
+                <el-form-item label="浜у搧鍚嶇О:" class="formContent">
                   {{ formApprove.partname }}
                 </el-form-item>
-                <el-form-item label="浜у搧瑙勬牸锛�" class="formContent">
+                <el-form-item label="浜у搧瑙勬牸:" class="formContent">
                   {{ formApprove.partspec }}
                 </el-form-item>
-                <el-form-item label="宸ュ崟鏁伴噺锛�" class="formContent">
+                <el-form-item label="宸ュ崟鏁伴噺:" class="formContent">
                   {{ formApprove.plan_qty }}
                 </el-form-item>
-                <el-form-item label="宸ヨ壓璺嚎锛�" class="formContent">
+                <el-form-item label="宸ヨ壓璺嚎:" class="formContent">
                   {{ formApprove.routename }}
                 </el-form-item>
-                <el-form-item label="鎵撳嵃浜哄憳锛�" class="formContent">
+                <el-form-item label="鎵撳嵃浜哄憳:" class="formContent">
                   {{ username }}
                 </el-form-item>
-                <el-form-item label="鎵撳嵃鏃堕棿锛�" class="formContent">
+                <el-form-item label="鎵撳嵃鏃堕棿:" class="formContent">
                   {{ formApprove.lm_date }}
                 </el-form-item>
               </div>
@@ -610,14 +1212,16 @@
             id="qrCode"
             style="width: 22%;height:97px;
             margin-top: 20px;
-            overflow-x: scroll;display: flex;
+            overflow-y: scroll;display: flex;
             justify-content: center;
             position: relative;"
           >
             <!--            <div id="qrCode0" ref="qrCodeDiv0" />-->
           </div>
           <div style="background-color: #fff;width: 20px;height:120px; position: absolute;right: 0" />
-          <div style="z-index: 10;background-color:transparent;width: 120px;height:120px; position: absolute;right: 21px" />
+          <div
+            style="z-index: 10;background-color:transparent;width: 120px;height:120px; position: absolute;right: 21px"
+          />
         </div>
 
         <!--          <div style="width:100%;height: 30px;border-bottom: 1px solid #eee;margin-bottom: 20px" />-->
@@ -694,6 +1298,350 @@
         </div>
       </span>
     </el-dialog>
+
+    <!--鎵撳嵃棰勮椤甸潰  灏忔爣绛�-->
+    <el-dialog
+      title="棰勮"
+      :visible.sync="dialogVisible2"
+      width="1140"
+      top="10vh"
+      :close-on-click-modal="false"
+      @close="dialogVisible2Close"
+    >
+      <div style="height: 300px">
+        <!--      涓嬫媺妗嗛�夋嫨鎵撳嵃灏哄-->
+        <div style="display: flex;align-items: center;margin: 0 0 20px 0">
+          <div>閫夋嫨鎵撳嵃灏哄锛�</div>
+          <el-select
+            v-model="printSize"
+            :popper-append-to-body="false"
+            style="width: 200px"
+            placeholder="璇烽�夋嫨"
+            @change="printSizeChange"
+          >
+
+            <el-option
+              v-for="item in printSizeSelectArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </div>
+        <!-- 瑕佹墦鍗扮殑鍖哄煙 -->
+        <!--      <div id="printMe2" :style="{paddingLeft:'10px',paddingTop: '5px'}">-->
+        <div id="printMe2" :style="printMe2StylePadding(printSize)">
+          <div
+            v-if="printSize===0"
+            style="display: flex;width: 280px;height: 160px;border: 1px solid #000;text-align: center;font-size: 10px;"
+          >
+
+            <div style="width: 90px;display: flex;flex-direction: column;border-right: 1px solid #000">
+              <div
+                style="display: flex;height: 96px;border-bottom:1px solid #000;
+              justify-content: center;align-items: center;position: relative"
+              >
+                <div
+                  id="qrCode2"
+                  ref="qrCodeDiv2"
+                  style="overflow-y: hidden;height:60px;position: absolute;left: 14px;"
+                />
+              </div>
+              <div
+                style="display: flex;height: 32px;justify-content: flex-start;border-bottom:1px solid #000;align-items: center"
+              >
+                <div style="margin-left: 5px;width: 28px">鏁伴噺:</div>
+                {{ qrForm.startqty }}
+              </div>
+              <div style="display: flex;height: 32px;justify-content: flex-start;align-items: center">
+                <div style="margin-left: 5px;width: 42px">澶勭悊浜�:</div>
+                {{ qrForm.operator }}
+              </div>
+            </div>
+
+            <div style="width:190px;display: flex;flex-direction: column">
+              <div
+                style="display: flex;height: 20%;border-bottom:1px solid #000;justify-content: flex-start;align-items: center;text-align: left"
+              >
+                <div style="width: 60px;margin-left: 5px;">宸ュ崟缂栧彿:</div>
+                <div>{{ qrForm.wo_code }}</div>
+              </div>
+              <div
+                style="display: flex;height: 20%;border-bottom:1px solid #000;justify-content: flex-start;align-items: center ;text-align: left"
+              >
+                <div style="width: 60px;margin-left: 5px;">浜у搧缂栫爜:</div>
+                <div>{{ qrForm.partcode }}</div>
+              </div>
+              <div
+                style="display: flex;height: 20%;border-bottom:1px solid #000 ;justify-content: flex-start;align-items: center;text-align: left"
+              >
+                <div style="width:60px;margin-left: 5px;">浜у搧鍚嶇О:</div>
+                <div>{{ qrForm.partname }}</div>
+              </div>
+              <div
+                style="display: flex;height: 20%;border-bottom:1px solid #000 ;justify-content: flex-start;align-items: center;text-align: left"
+              >
+                <div style="width:60px;margin-left: 5px;">涓嬮亾宸ュ簭:</div>
+                <div>{{ qrForm.nextstepname }}</div>
+              </div>
+              <div style="display: flex;height: 20%;justify-content: flex-start;align-items: center;text-align: left">
+                <div style="width: 60px;margin-left: 5px;">澶勭悊鏃堕棿:</div>
+                <div>{{ qrForm.operatorTime }}</div>
+              </div>
+
+            </div>
+
+          </div>
+          <div
+            v-if="printSize===1"
+            style="display: flex;width: 280px;height: 160px;border: 1px solid #000;text-align: center;font-size: 10px;"
+          >
+
+            <div style="width: 90px;display: flex;flex-direction: column;border-right: 1px solid #000">
+              <div
+                style="display: flex;height: 96px;border-bottom:1px solid #000;
+              justify-content: center;align-items: center;position: relative"
+              >
+                <div
+                  id="qrCode2"
+                  ref="qrCodeDiv2"
+                  style="overflow-y: hidden;height:60px;position: absolute;left: 14px;"
+                />
+              </div>
+              <div
+                style="display: flex;height: 32px;justify-content: flex-start;border-bottom:1px solid #000;align-items: center"
+              >
+                <div style="margin-left: 5px;width: 28px">鏁伴噺:</div>
+                {{ qrForm.startqty }}
+              </div>
+              <div style="display: flex;height: 32px;justify-content: flex-start;align-items: center">
+                <div style="margin-left: 5px;width: 42px">澶勭悊浜�:</div>
+                {{ qrForm.operator }}
+              </div>
+            </div>
+
+            <div style="width:190px;display: flex;flex-direction: column">
+              <div
+                style="display: flex;height: 20%;border-bottom:1px solid #000;justify-content: flex-start;align-items: center;text-align: left"
+              >
+                <div style="width: 60px;margin-left: 5px;">宸ュ崟缂栧彿:</div>
+                <div>{{ qrForm.wo_code }}</div>
+              </div>
+              <div
+                style="display: flex;height: 20%;border-bottom:1px solid #000;justify-content: flex-start;align-items: center ;text-align: left"
+              >
+                <div style="width: 60px;margin-left: 5px;">浜у搧缂栫爜:</div>
+                <div>{{ qrForm.partcode }}</div>
+              </div>
+              <div
+                style="display: flex;height: 20%;border-bottom:1px solid #000 ;justify-content: flex-start;align-items: center;text-align: left"
+              >
+                <div style="width:60px;margin-left: 5px;">浜у搧鍚嶇О:</div>
+                <div>{{ qrForm.partname }}</div>
+              </div>
+              <div
+                style="display: flex;height: 20%;border-bottom:1px solid #000 ;justify-content: flex-start;align-items: center;text-align: left"
+              >
+                <div style="width:60px;margin-left: 5px;">涓嬮亾宸ュ簭:</div>
+                <div>{{ qrForm.nextstepname }}</div>
+              </div>
+              <div style="display: flex;height: 20%;justify-content: flex-start;align-items: center;text-align: left">
+                <div style="width: 60px;margin-left: 5px;">澶勭悊鏃堕棿:</div>
+                <div>{{ qrForm.operatorTime }}</div>
+              </div>
+
+            </div>
+
+          </div>
+          <div
+            v-if="printSize===5"
+            style="display: flex;width: 140px;height: 80px;border: 1px solid #000;text-align: center;font-size: 10px;"
+          >
+
+            <div v-if="false" style="width: 45px;display: flex;flex-direction: column;border-right: 1px solid #000">
+              <div
+                style="display: flex;height: 60px;border-bottom:1px solid #000;
+              justify-content: center;align-items: center;position: relative"
+              >
+                <div
+                  id="qrCode2"
+                  ref="qrCodeDiv2"
+                  style="overflow-y: hidden;height:60px;position: absolute;left: 14px;"
+                />
+              </div>
+              <div
+                style="display: flex;height: 20px;justify-content: flex-start;border-bottom:1px solid #000;align-items: center"
+              >
+                <div style="margin-left: 5px;width: 28px">鏁伴噺:</div>
+                {{ qrForm.startqty }}
+              </div>
+              <div style="display: flex;height: 20px;justify-content: flex-start;align-items: center">
+                <div style="margin-left: 5px;width: 42px">澶勭悊浜�:</div>
+                {{ qrForm.operator }}
+              </div>
+            </div>
+
+            <div style="width:100%;display: flex;flex-direction: column;">
+              <div
+                style="display: flex;height: 20%;border-bottom:1px solid #000;justify-content: center;align-items: center;text-align: left"
+              >
+                <!--              <div style="width: 60px;margin-left: 5px;">宸ュ崟缂栧彿:</div>-->
+                <div>{{ qrForm.wo_code }}</div>
+              </div>
+              <div
+                style="display: flex;height: 20%;border-bottom:1px solid #000;justify-content: center;align-items: center ;text-align: left"
+              >
+                <!--              <div style="width: 60px;margin-left: 5px;">浜у搧缂栫爜:</div>-->
+                <div>{{ qrForm.partcode }}</div>
+              </div>
+              <div
+                style="display: flex;height: 20%;border-bottom:1px solid #000 ;justify-content: center;align-items: center;text-align: left"
+              >
+                <!--              <div style="width:60px;margin-left: 5px;">浜у搧鍚嶇О:</div>-->
+                <div>{{ qrForm.partname }}</div>
+              </div>
+              <div
+                style="display: flex;height: 20%;border-bottom:1px solid #000 ;justify-content: center;align-items: center;text-align: left"
+              >
+                <!--              <div style="width:60px;margin-left: 5px;">涓嬮亾宸ュ簭:</div>-->
+                <div>{{ qrForm.nextstepname }}</div>
+              </div>
+              <div style="display: flex;height: 20%;justify-content: center;align-items: center;text-align: left">
+                <!--              <div style="width: 60px;margin-left: 5px;">澶勭悊鏃堕棿:</div>-->
+                <div>{{ qrForm.operatorTime }}</div>
+              </div>
+
+            </div>
+
+          </div>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button @click="dialogVisible2 = false">鍙� 娑�</el-button>
+          <el-button v-print="printObj2" type="primary">鎵� 鍗�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--    宸ヨ壓璺嚎瀵硅瘽妗�-->
+    <el-dialog
+      :close-on-click-modal="false"
+      title="鍏宠仈宸ヨ壓璺嚎"
+      :visible.sync="dialogVisibleRoute"
+      width="800px"
+      top="10vh"
+      :fullscreen="isIpad"
+      class="dialogVisibleRoute"
+      @closed="handleCloseRoute"
+      @close="handleCloseRoute"
+    >
+      <div>
+        <i class="el-icon-s-comment" style="color:#42b983;" /> 浜у搧鍚嶇О锛歿{ dialogFormRoute.projectName }}
+      </div>
+      <el-divider />
+      <div style="margin-bottom: 10px">
+        <i class="el-icon-s-operation" style="color:#42b983;" /> 宸ヨ壓璺嚎闆嗗悎
+      </div>
+
+      <div class="myCheckboxGroup">
+        <div
+          v-for="item in dialogFormRoute.routeOperationArr"
+          :key="item.code"
+          :style="{border:item.isSelected1?'1px solid #42b983':'1px solid #eee'}"
+          class="myCheckbox"
+          @click="myCheckboxClick(item)"
+        >
+          <input
+            class="myCheckboxInput"
+            type="checkbox"
+            :value="item.code"
+            :name="item.name"
+            :style="{color:item.isSelected2?'#42b983':'#fff'}"
+            @click="myCheckboxInputClick(item)"
+          >{{ item.name }}
+          <!--            鐖跺瓙鐐瑰嚮浜嬩欢涓嶅奖鍝�-->
+          <!--            onClick="event.cancelBubble = true"-->
+        </div>
+      </div>
+
+      <el-divider />
+      <div>
+        <i class="el-icon-s-operation" style="color:#42b983;" /> 榛樿宸ヨ壓璺嚎
+      </div>
+      <div style="margin-top: 20px">
+        <el-select
+          v-model="defaultroute_code"
+          filterable
+          style="width: 200px;"
+          placeholder="璇烽�夋嫨"
+          class="defaultroute_code"
+        >
+          <el-option
+            v-for="item in defaultroute_codeArr"
+            :key="item.code"
+            :label="item.name"
+            :value="item.code"
+          />
+        </el-select>
+      </div>
+      <el-divider />
+      <div style="margin-bottom: 10px">
+        <i class="el-icon-s-operation" style="color:#42b983;" /> 宸ュ簭鍒楄〃
+      </div>
+      <div style="overflow-y: scroll">
+        <el-table
+          ref="projectTableData"
+          :data="projectTableData"
+          border
+          height="280"
+          :row-class-name="tableRowClassName"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+        >
+          <el-table-column
+            prop="seq"
+            width="100"
+            label="宸ュ簭搴忓彿"
+            fixed
+          />
+          <el-table-column
+            prop="stepcode"
+            label="宸ュ簭缂栫爜"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="stepname"
+            label="宸ュ簭鍚嶇О"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="enable"
+            label="鍚敤鐘舵��"
+            fixed="right"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.enable==='Y'">
+                <svg-icon icon-class="circleYes" style="margin-right: 2px" />
+                鏄�
+              </div>
+              <div v-if="row.enable==='N'">
+                <svg-icon icon-class="circleNo" style="margin-right: 2px" />
+                鍚�
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button @click="routeDialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button type="primary" @click="routeDialogVisibleConfirm">纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
   </div>
 </template>
 
@@ -702,37 +1650,29 @@
 import {
   AddUpdateMesOrder,
   ClosedMesOrder,
-  DeleteMesOrder,
+  DeleteMesOrder, ErpOrderSearch, JobCreationSonAddVison,
   MesOrderSearch, PartSelectRoute, RouteSelectWkshop, SearchWorkStep,
   SelectRouteStep
 } from '@/api/scgl'
-import { PartSelect } from '@/api/zzmx'
-import { handleDatetime } from '@/utils/global'
+import { InventoryFileAssociationRoute, PartSelect, SaveInventoryFile } from '@/api/zzmx'
+import { handleDatetime, handleDatetime2, validateCode } from '@/utils/global'
 import { getCookie } from '@/utils/auth'
 import { MesOrderPrintSearch1, PrintOrder } from '@/api/utils'
 import { urlAddRandomNo, webapp_ws_ajax_run, webapp_ws_autoupdate } from '@/utils/grwebapp'
 import QRCode from 'qrcodejs2'
+import $ from 'jquery'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'GD',
   components: {
     Pagination
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
     return {
-      isFullscreen: false,
+      mouseHoverType: 'mouseout',
+      mouseHoverTypeDialog: 'mouseout',
+      isExpandForm: false,
+      isIpad: false,
       mainHeight: 0,
       tableHeight: 0,
       username: '',
@@ -740,6 +1680,8 @@
         mesorderstus: '', // 宸ュ崟鐘舵�佺爜
         mesordercode: '', // 宸ュ崟缂栧彿
         partcode: '', // 浜у搧缂栫爜
+        ordertype: '', // ordertype
+        sourceorder: '', // 婧愬崟鍗曞彿
         partname: '', // 浜у搧鍚嶇О
         partspec: '', // 浜у搧瑙勬牸
         creatuser: '', // 鍒涘缓浜哄憳
@@ -755,7 +1697,9 @@
         // { code: 'CREATED', name: '宸插叧闂�' }
         { code: 'ALLO', name: '宸叉淳鍙�' },
         { code: 'START', name: '寮�宸�' },
-        { code: 'CLOSED', name: '瀹屽伐' }
+        { code: 'CLOSED', name: '瀹屽伐' },
+        { code: 'NOSCHED', name: '寰呮帓绋�' },
+        { code: 'SCHED', name: '宸叉帓绋�' }
       ],
       total: 10,
       radioSelected: '',
@@ -770,6 +1714,9 @@
         mesorderstus: 'NEW', // 宸ュ崟鐘舵�佺爜
         mesordercode: '', // 宸ュ崟缂栧彿
         partcode: '', // 浜у搧缂栫爜
+
+        ordertype: 'PO', // 宸ュ崟绫诲瀷
+        sourceorder: '', // 婧愬崟鍗曞彿
         mesqty: '', // 宸ュ崟鏁伴噺
 
         routecode: '', // 宸ヨ壓璺嚎缂栫爜
@@ -777,9 +1724,15 @@
         planstartdate: '', // 璁″垝寮�濮嬫椂闂�
         planenddate: '', // 璁″垝瀹屾垚鏃堕棿
         orderlev: '', // 宸ュ崟绛夌骇
-
+        isAps: 'N', // 鏄惁鎺掔▼
+        bomId: '', // 鐗╂枡娓呭崟id
         OperType: '' // 鎿嶄綔绫诲瀷
       },
+      bomIdArr: [], // 鐗╂枡娓呭崟涓嬫媺
+      ordertypeArr: [// 宸ュ崟绫诲瀷
+        { code: 'PO', name: '鏍囧噯宸ュ崟' },
+        { code: 'FO', name: '鎶ュ簾琛ュ崟' }
+      ],
       partArr: [], // 浜у搧淇℃伅
       wkshopArr: [], // 鐢熶骇杞﹂棿鏁扮粍
       routeArr: [], // 宸ヨ壓璺嚎鏁扮粍
@@ -797,7 +1750,7 @@
           { required: true, message: '璇烽�夋嫨浜у搧淇℃伅', trigger: ['blur', 'change'] }
         ],
         mesordercode: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         mesqty: [
           { required: true, message: '璇疯緭鍏ュ伐鍗曟暟閲�', trigger: ['blur', 'change'] }
@@ -816,6 +1769,12 @@
         ],
         orderlev: [
           { required: true, message: '璇烽�夋嫨宸ュ崟绛夌骇', trigger: ['blur', 'change'] }
+        ],
+        isAps: [
+          { required: true, message: '璇烽�夋嫨鏄惁鎺掔▼', trigger: ['blur', 'change'] }
+        ],
+        bomId: [
+          { required: true, message: '璇烽�夋嫨鐗╂枡娓呭崟', trigger: ['blur', 'change'] }
         ]
 
       },
@@ -848,6 +1807,7 @@
       },
 
       formApprove: {
+        m_po: '', // 婧愬崟鍗曞彿
         mesordercode: '',
         partcode: '',
         partname: '',
@@ -856,12 +1816,88 @@
         routename: '',
         lm_date: ''
       },
-      number: ''
+      number: '',
+      dialogVisible2: false,
+      printObj2: {
+        id: 'printMe2',
+        popTitle: '鎵撳嵃妯℃澘',
+        preview: false,
+        extraHead: '<meta http-equiv="Content-Language" content="zh-cn"/>',
+        closeCallback(vue) { // 鍏抽棴鎵撳嵃鐨勫洖璋冧簨浠讹紙鏃犳硶纭畾鐐瑰嚮鐨勬槸纭杩樻槸鍙栨秷锛�
+          console.log('11212', vue)
+          // vue.dialogVisible = false
+          // vue.dialogVisible2 = false
+          // vue.dialogVisible = false
+        },
+        beforeOpenCallback(vue) {
+          vue.printLoading = true
+          console.log('鎵撳紑涔嬪墠')
+          console.log()
+        },
+        openCallback(vue) {
+          vue.printLoading = false
+          console.log('鎵ц浜嗘墦鍗�')
+        }
+      },
+      qrForm: {
+        qrvalue: '',
+        startqty: '',
+        wo_code: '',
+        partcode: '',
+        partname: '',
+        nextstepname: '',
+        operator: '', // 鎿嶄綔浜�
+        operatorTime: ''// 鎿嶄綔鏃堕棿
+      },
+      dialogVisibleSource: false,
+      sourceTableData: [],
+      sourceForm: {
+        erporderstus: '', // 璁㈠崟鐘舵�佺爜
+        erpordercode: '', // 璁㈠崟缂栧彿
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+        creatuser: '', // 鍒涘缓浜哄憳
+        // paystartdate: '', // 浜や粯鏃堕棿
+        paystartdate: '', // 棰勮寮�宸ユ椂闂�
+        payenddate: '', // 棰勮瀹屽伐鏃堕棿
+        createdate: '', // 鍒涘缓鏃堕棿
+        prop: 'createdate', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      sourceFormTotal: 10,
+      radioSelectedId: '',
+      isExpandDialog: false, // 瀵硅瘽妗嗚〃鍗曟槸鍚﹀睍寮�锛岄粯璁や笉灞曞紑
+      dialogVisibleRoute: false,
+      dialogFormRoute: {
+        projectName: '', // 浜у搧鍚嶇О
+        projectCode: '', // 浜у搧浠g爜
+        routeOperationArr: [] // 宸ヨ壓璺嚎闆嗗悎
+      },
+      defaultroute_code: '', // 榛樿宸ヨ壓璺嚎閫変腑鍊�
+      defaultroute_codeArr: '', // 榛樿宸ヨ壓璺嚎鏁扮粍
+      projectTableData: [], // 璁惧鍒楄〃
+      tableDataDetail: [], // 鐐瑰嚮宸ュ崟琛ㄧ殑琛� 鏄剧ず璇︾粏淇℃伅
+      printSize: 1,
+      printSizeSelectArr: [// 瀹�*楂�
+        { code: 0, name: '80*50' },
+        { code: 1, name: '78*60' }
+        // { code: 2, name: '50*60' },
+        // { code: 3, name: '50*40' },
+        // { code: 4, name: '50*80' },
+        // { code: 5, name: '40*30' }
+      ],
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < Date.now() - 8.64e7
+        }
+      }
     }
   },
   created() {
-    this.getMesOrderSearch()
-    this.getSelect()
+    this.handleRequest()
   },
   mounted() {
     window.addEventListener('resize', this.getHeight)
@@ -871,6 +1907,16 @@
     this.username = getCookie('username')
   },
   methods: {
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    },
+    handleRequest() {
+      this.getMesOrderSearch().then(res => {
+        if (res.code === '200') {
+          this.getSelect()
+        }
+      })
+    },
     async getMesOrderSearch() {
       // let tempDate = this.form.createdate
       // if (tempDate.length > 0) {
@@ -884,6 +1930,8 @@
         partname: this.form.partname, // 浜у搧鍚嶇О
         partspec: this.form.partspec, // 浜у搧瑙勬牸
         creatuser: this.form.creatuser, // 鍒涘缓浜哄憳
+        sourceorder: this.form.sourceorder, // 婧愬崟鍗曞彿
+        ordertype: this.form.ordertype, // 鍗曟嵁绫诲瀷
         createdate: this.form.createdate.toString().length > 0 ? handleDatetime(this.form.createdate) : '', // 鍒涘缓鏃堕棿
         prop: this.form.prop, // 鎺掑簭瀛楁
         order: this.form.order, // 鎺掑簭瀛楁
@@ -895,6 +1943,7 @@
       this.total = res.count
 
       // this.form.createdate = tempDate
+      return { code: res.code }
     },
     async getSelect() {
       // 鑾峰彇浜у搧淇℃伅
@@ -918,6 +1967,18 @@
       this.form.prop = prop
       this.getMesOrderSearch()
     },
+    sourceSortChange({ column, prop, order }) {
+      if (order === 'descending') {
+        order = 'desc'
+      } else if (order === 'ascending') {
+        order = 'asc'
+      } else {
+        order = 'desc'
+      }
+      this.sourceForm.order = order
+      this.sourceForm.prop = prop
+      this.getErpOrderSearch()
+    },
     // 鏌ヨ
     search() {
       this.getMesOrderSearch()
@@ -932,7 +1993,9 @@
       this.form.partspec = ''
       this.form.paydate = ''
       this.form.creatuser = ''
-      this.form.createdate = ''
+      this.form.sourceorder = ''
+      this.form.creatuser = ''
+      this.form.ordertype = ''
       this.getMesOrderSearch()
     },
     // 鍗曢�夋閫変腑鑾峰彇褰撳墠琛屼俊鎭�
@@ -947,10 +2010,8 @@
       this.dialogForm.planenddate = handleDatetime(new Date())
       this.dialogForm.orderlev = 3
     },
-
     // 浜у搧淇℃伅鍊兼敼鍙�
     async partcodeChange(val) {
-      console.log(val, 22)
       const { data: res } = await PartSelectRoute({ partcode: val })
       this.routeArr = res
 
@@ -979,12 +2040,28 @@
       this.wkshopArr = res2
       this.dialogForm.wkshopcode = ''
     },
+    // 鏄惁鎺掔▼鍊兼敼鍙樻椂
+    changeIsAps(val) {
+      if (val === 'N') {
+        this.dialogForm.bomId = ''
+      }
+      if (val === 'Y') {
+        JobCreationSonAddVison({ partnumber: this.dialogForm.partcode }).then(res => {
+          this.bomIdArr = res.data
+          this.dialogForm.bomId = this.bomIdArr[0].id
+        })
+      }
+    },
     // 宸ュ簭浠诲姟
     async check(row) {
-      this.dialogVisibleTask = true
       const { data: res } = await SearchWorkStep({ wo_code: row.wo_code })
       this.taskTableData = res
+
+      if (this.taskTableData.length === 0) {
+        return this.$message.info('鏃犵敓浜т换鍔℃暟鎹紒')
+      }
       this.dialogForm.mesordercode = res[0].wo_code
+      this.dialogVisibleTask = true
     },
     dialogVisibleBack() {
       this.dialogVisibleTask = false
@@ -1010,6 +2087,9 @@
         this.dialogForm.partname = row.partname
         this.dialogForm.mesqty = row.plan_qty
         this.dialogForm.partspec = row.partspec
+        this.dialogForm.sourceorder = row.m_po
+        this.dialogForm.ordertype = row.wotype
+
         // this.routecodeChange(this.dialogForm.routecode)
 
         this.dialogForm.planstartdate = row.plan_startdate !== null ? row.plan_startdate : handleDatetime(new Date())
@@ -1019,8 +2099,7 @@
     },
     // 鍒犻櫎鎸夐挳
     async del(row) {
-      console.log(row.status)
-      if (row.status === 'START' || row.status === 'CLOSED') {
+      if (row.status === 'START' || row.status === 'CLOSED' || row.status === 'SCHED') {
         return this.$message.info('姝ゅ伐鍗曚笉鍙垹闄わ紒')
       }
       this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
@@ -1030,14 +2109,17 @@
       }).then(() => {
         console.log(row, 1)
         const data = {
+          souceid: row.sourceid ? row.sourceid : '',
           wocode: row.wo_code,
           m_po: row.m_po,
           orderqty: row.plan_qty
         }
-        console.log(data, 2)
         DeleteMesOrder(data).then(res => {
           if (res.code === '200') {
             this.$message.success('鍒犻櫎鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
             this.getMesOrderSearch()
           }
         })
@@ -1090,6 +2172,8 @@
       // const { data: res } = await PartSelectRpute({ partcode: val })
       // this.routeArr = res
       // this.dialogForm.routecode = ''
+      this.dialogForm.isAps = 'N'
+      this.dialogForm.bomId = ''
       this.partcodeChange(val)
     },
     // 瀵硅瘽妗嗗叧闂簨浠�
@@ -1104,12 +2188,18 @@
       this.dialogForm.partcode = '' // 浜у搧缂栫爜
       this.dialogForm.mesqty = '' // 宸ュ崟鏁伴噺
 
+      this.dialogForm.ordertype = 'PO' // 宸ュ崟绫诲瀷
+      this.dialogForm.sourceorder = '' // 婧愬崟鍗曞彿
+
       this.dialogForm.routecode = '' // 宸ヨ壓璺嚎缂栫爜
       this.dialogForm.wkshopcode = '' // 鐢熶骇杞﹂棿缂栫爜
       this.dialogForm.planstartdate = '' // 璁″垝寮�濮嬫椂闂�
       this.dialogForm.planenddate = '' // 璁″垝瀹屾垚鏃堕棿
       this.dialogForm.orderlev = '' // 宸ュ崟绛夌骇
+      this.dialogForm.isAps = 'N' // 鏄惁鎺掔▼
+      this.dialogForm.bomId = ''
 
+      this.bomIdArr = []
       this.$refs.dialogForm.clearValidate()
     },
     // 瀵硅瘽妗嗗彇娑�
@@ -1120,6 +2210,10 @@
     dialogVisibleConfirm() {
       this.$refs.dialogForm.validate(valid => {
         if (valid) {
+          if (this.dialogForm.ordertype === 'FO' && this.dialogForm.sourceorder.toString().trim().length <= 0) {
+            return this.$message.info('婧愬崟鍗曞彿涓嶈兘涓虹┖锛�')
+          }
+
           const data = {
             // partname: this.dialogForm.partname, // 浜у搧鍚嶇О
             // partspec: this.dialogForm.partspec, // 浜у搧瑙勬牸
@@ -1130,15 +2224,18 @@
             mesordercode: this.dialogForm.mesordercode, // 宸ュ崟缂栧彿
             partcode: this.dialogForm.partcode, // 浜у搧缂栫爜
             mesqty: this.dialogForm.mesqty, // 宸ュ崟鏁伴噺
-
+            ordertype: this.dialogForm.ordertype, // 鍗曟嵁绫诲瀷
+            sourceorder: this.dialogForm.sourceorder, // 婧愬崟鍗曞彿
             routecode: this.dialogForm.routecode, // 宸ヨ壓璺嚎缂栫爜
             wkshopcode: this.dialogForm.wkshopcode, // 鐢熶骇杞﹂棿缂栫爜
             planstartdate: this.dialogForm.planstartdate, // 璁″垝寮�濮嬫椂闂�
             planenddate: this.dialogForm.planenddate, // 璁″垝瀹屾垚鏃堕棿
             orderlev: this.dialogForm.orderlev, // 宸ュ崟绛夌骇
+            is_aps: this.dialogForm.isAps, // 鏄惁鎺掔▼
+            bom_id: this.dialogForm.bomId, // 鐗╂枡娓呭崟id
             OperType: this.operation === 'add' ? 'Add' : 'Update'
           }
-
+          this.$store.state.app.buttonIsDisabled = true
           AddUpdateMesOrder(data).then(res => {
             if (res.code === '200') {
               this.dialogVisible = false
@@ -1148,6 +2245,7 @@
               this.$message.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '娲惧彂鎴愬姛锛�')
               // this.dialogVisible = false
               this.getMesOrderSearch()
+              this.$store.state.app.buttonIsDisabled = false
             } else {
               this.$message.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '娲惧彂澶辫触锛�')
             }
@@ -1179,12 +2277,14 @@
     // 鑾峰彇椤甸潰楂樺害
     getHeight() {
       this.$nextTick(() => {
-        this.mainHeight = window.innerHeight - 250
-        this.tableHeight = this.mainHeight - 100
-        // this.isFullscreen = window.innerHeight < 800
-        if (this.isFullscreen) {
-          this.tableHeight = this.tableHeight - 50
+        this.mainHeight = window.innerHeight - 85
+        // this.tableHeight = this.mainHeight - 250
+        this.tableHeight = this.mainHeight - 515
+        if (window.innerHeight < 769) {
+          this.tableHeight = this.tableHeight - 20
         }
+        this.isIpad = window.innerHeight < 769 && window.innerWidth < 1367
+        this.$refs.tableDataRef.doLayout()
       })
     },
     // 宸ヨ壓璺嚎鏀惧ぇ闀滅偣鍑�
@@ -1200,14 +2300,14 @@
       this.dialogVisibleSearch = false
     },
     // 澶勭悊鎵撳嵃
-    handlePrint() {
+    handlePrint(wo_code) {
       // const number = Math.random() * Math.random()
       // this.number = number === 0 ? (10 + Math.random()) : number
       // console.log(number)
-      this.dialogVisibleApprove = true
+
       const data2 = {
         username: getCookie('admin'),
-        mesordercode: this.dialogForm.mesordercode
+        mesordercode: wo_code || this.dialogForm.mesordercode
       }
       MesOrderPrintSearch1(data2).then(res2 => {
         if (res2.code === '200') {
@@ -1215,6 +2315,7 @@
 
           this.tableDataPrint = res3
           this.formApprove.mesordercode = res3[0].wo_code
+          this.formApprove.m_po = res3[0].m_po
           this.formApprove.partcode = res3[0].partcode
           this.formApprove.partname = res3[0].partname
           this.formApprove.partspec = res3[0].partspec
@@ -1233,6 +2334,7 @@
             // div.scrollTop = div.scrollHeight // 婊氬姩鏉′綅浜庢渶搴曢儴
             div.scrollTop = 0 // 婊氬姩鏉′綅浜庢渶椤堕儴
           })
+          this.dialogVisibleApprove = true
         }
       })
     },
@@ -1262,7 +2364,7 @@
     //     }
     //   })
     // },
-    // 鐢熸垚浜岀淮鐮�
+    // 鐢熸垚浜岀淮鐮�    宸ュ崟鎶ヨ〃浜岀淮鐮�
     bindQRCode(seq, text, size) {
       if (size === 'big') {
         console.log(text, 1)
@@ -1291,6 +2393,7 @@
     dialogVisibleConfirmClose() {
       // this.dialogForm.mesordercode = ''
       this.formApprove.mesordercode = ''
+      this.formApprove.m_po = ''
       this.formApprove.partcode = ''
       this.formApprove.partname = ''
       this.formApprove.partspec = ''
@@ -1300,78 +2403,360 @@
 
       // this.$refs.qrCodeDiv0.title = ''
 
-      // this.$refs.qrCodeDiv1 = ''
-      // this.$refs.qrCodeDiv2 = ''
-      // this.$refs.qrCodeDiv3 = ''
-
-      // this.$ref['qrCodeDiv'].clearable()
-      // this.tableDataPrint.forEach((item, index) => {
-      // this.$refs['qrCodeDiv' + item.seq] = ''
-      //   this.$refs[('qrCodeDiv' + index).toString()] = ''
-      // //   this.bindQRCode(item.seq, '', 'small')//姝ゆ柟娉曟病鐢�
-      // })
-      // this.bindQRCode(this.tableDataPrint.length, '', 'big')//姝ゆ柟娉曟病鐢�
-      // this.$refs[('qrCodeDiv' + this.tableDataPrint.length).toString()] = ''
-
       this.tableDataPrint = []
     },
     // 琛ユ墦鎸夐挳
     supplementClick() {
       this.dialogVisibleTask = false
       this.handlePrint()
-    }
+    },
+    // 琛ユ墦灏忔爣绛�
+    supplementSmallClick(row) {
+      // let obj = {}
+      console.log(row, 21)
+      // this.taskTableData.forEach((item, index) => {
+      this.tableDataDetail.forEach((item, index) => {
+        if (item.seq === row.seq) {
+          console.log(item)
+          this.qrForm = {
+            // qrvalue: item.seq === this.taskTableData.length ? item.wo_code + ';' + item.stepcode : item.wo_code + ';' + this.taskTableData[item.seq].stepcode,
+            qrvalue: item.seq === this.tableDataDetail.length ? item.wo_code + ';' + item.stepcode : item.wo_code + ';' + this.tableDataDetail[item.seq].stepcode,
+            // startqty: item.seq === this.taskTableData.length ? item.plan_qty : this.taskTableData[item.seq].plan_qty,
+            startqty: item.seq === this.tableDataDetail.length ? item.plan_qty : this.tableDataDetail[item.seq].plan_qty,
+            wo_code: item.wo_code,
+            partcode: item.partcode,
+            partname: item.partname,
+            // nextstepname: item.seq === this.taskTableData.length ? item.stepname : this.taskTableData[item.seq].stepname,
+            nextstepname: item.seq === this.tableDataDetail.length ? item.stepname : this.tableDataDetail[item.seq].stepname,
+            operator: getCookie('username'),
+            operatorTime: handleDatetime2(new Date())
+          }
+          this.$nextTick(() => {
+            console.log(this.qrForm.qrvalue, 3333)
+            this.bindQRCode2(this.qrForm.qrvalue)
+          })
+        }
+      })
 
+      // this.dialogVisibleTask = false
+      this.dialogVisible2 = true
+      console.log(this.qrForm, 1111)
+    },
+    dialogVisible2Close() {
+      this.qrForm.qrvalue = ''
+      this.qrForm.startqty = ''
+      this.qrForm.wo_code = ''
+      this.qrForm.partcode = ''
+      this.qrForm.partname = ''
+      this.qrForm.nextstepname = ''
+      this.qrForm.operator = ''
+      this.qrForm.operatorTime = ''
+      // this.$refs.qrCodeDiv2 = ''
+    },
+    // 鐢熸垚浜岀淮鐮�    宸ュ簭鏍囩浜岀淮鐮�
+    bindQRCode2(text) {
+      new QRCode(this.$refs.qrCodeDiv2, {
+        text: text,
+        width: 60,
+        height: 60,
+        colorDark: '#000', // 浜岀淮鐮侀鑹�
+        colorLight: '#ffffff', // 浜岀淮鐮佽儗鏅壊
+        correctLevel: QRCode.CorrectLevel.L// 瀹归敊鐜囷紝L/M/H
+      })
+    },
+    // 鎶ュ簾琛ュ崟鎯呭喌涓嬪彲鐐瑰嚮閫夋嫨
+    mesordertsourcesearchclick() {
+      if (this.dialogForm.ordertype === 'PO') {
+        return this.$message.info('宸ュ崟绫诲瀷涓烘姤搴熻ˉ鍗曟儏鍐典笅鍙�夋嫨锛�')
+      }
+
+      this.getErpOrderSearch()
+
+      this.dialogVisibleSource = true
+    },
+    async getErpOrderSearch() {
+      let tempDate2 = this.sourceForm.paystartdate
+      if (tempDate2.length > 0) {
+        tempDate2 = handleDatetime(tempDate2[0]) + '~' + handleDatetime(tempDate2[1])
+      }
+
+      let tempDate = this.sourceForm.payenddate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        erporderstus: this.sourceForm.erporderstus, // 璁㈠崟鐘舵�佺爜
+        erpordercode: this.sourceForm.erpordercode, // 璁㈠崟缂栧彿
+        partcode: this.sourceForm.partcode, // 浜у搧缂栫爜
+        partname: this.sourceForm.partname, // 浜у搧鍚嶇О
+        partspec: this.sourceForm.partspec, // 浜у搧瑙勬牸
+        paystartdate: tempDate2, // 浜や粯鏃堕棿
+        payenddate: tempDate, // 浜や粯鏃堕棿
+        creatuser: this.sourceForm.creatuser, // 鍒涘缓浜哄憳
+
+        prop: this.sourceForm.prop, // 鎺掑簭瀛楁
+        order: this.sourceForm.order, // 鎺掑簭瀛楁
+        page: this.sourceForm.page, // 绗嚑椤�
+        rows: this.sourceForm.rows // 姣忛〉澶氬皯鏉�
+
+      }
+
+      const res = await ErpOrderSearch(data)
+      this.sourceTableData = res.data.filter(item => item.status !== 'NEW')
+      this.sourceFormTotal = res.count
+    },
+    // 鍗曢�夋閫変腑鑾峰彇褰撳墠琛屼俊鎭�
+    // getCurrentRowSource2(id) {
+    //   this.radioSelectedId = id
+    // },
+    // 鍗曢�夋閫変腑鑾峰彇褰撳墠琛屼俊鎭�
+    getCurrentRowSource(row, event, column) {
+      this.radioSelectedId = row.id
+    },
+    sourceSearch() {
+      this.getErpOrderSearch()
+    },
+    sourceReset() {
+      this.sourceForm.erporderstus = ''
+      this.sourceForm.erpordercode = ''
+      this.sourceForm.partcode = ''
+      this.sourceForm.partname = ''
+      this.sourceForm.partspec = ''
+      this.sourceForm.paystartdate = ''
+      this.sourceForm.payenddate = ''
+      this.sourceForm.creatuser = ''
+      this.sourceForm.createdate = ''
+      this.getErpOrderSearch()
+    },
+    dialogVisibleSourceClose() {
+      this.radioSelectedId = ''
+
+      this.sourceForm.erporderstus = ''
+      this.sourceForm.erpordercode = ''
+      this.sourceForm.partcode = ''
+      this.sourceForm.partname = ''
+      this.sourceForm.partspec = ''
+      this.sourceForm.paystartdate = ''
+      this.sourceForm.payenddate = ''
+      this.sourceForm.creatuser = ''
+      this.sourceForm.createdate = ''
+
+      this.isExpandDialog = false
+      this.sourceTableData = []
+    },
+    dialogVisibleSourceBack() {
+      this.dialogVisibleSource = false
+    },
+    dialogVisibleSourceConfirm() {
+      console.log(this.radioSelectedId)
+      this.sourceTableData.forEach(item => {
+        if (item.id === this.radioSelectedId) {
+          this.dialogForm.sourceorder = item.wo
+          this.dialogForm.partcode = item.partcode
+          this.dialogForm.partspec = item.partspec
+        }
+      })
+      this.dialogVisibleSource = false
+      this.partcodeChange(this.dialogForm.partcode)
+    },
+    mesordertypeChange(val) {
+      if (val === 'PO') {
+        this.dialogForm.sourceorder = ''
+        this.dialogForm.partcode = ''
+        this.dialogForm.partspec = ''
+      }
+    },
+    /* 鍏宠仈宸ヨ壓璺嚎妯″潡*/
+    // 鍏宠仈宸ヨ壓璺嚎
+    async routeClick(row) {
+      console.log(row)
+      // this.defaultroute_code = row.default_route
+      this.dialogFormRoute.projectCode = row.partcode
+      this.dialogFormRoute.projectName = row.partname
+      this.dialogVisibleRoute = true
+      const { data: res } = await InventoryFileAssociationRoute({ partcode: this.dialogFormRoute.projectCode })
+      this.dialogFormRoute.routeOperationArr = res
+
+      this.dialogFormRoute.routeOperationArr.forEach((item, index) => {
+        item.isSelected1 = false
+        item.isSelected2 = false
+        if (index === 0) {
+          item.isSelected1 = true
+          this.projectTableData = item.Data
+        }
+        if (item.flag === 'Y') {
+          item.isSelected2 = true
+          this.$nextTick(() => {
+            $('input:checkbox').eq(index).prop('checked', true)
+          })
+        }
+      })
+
+      this.defaultroute_codeArr = this.dialogFormRoute.routeOperationArr.filter(item => item.flag === 'Y')
+    },
+    // 瀵硅瘽妗嗗叧闂�
+    handleCloseRoute() {
+      this.dialogFormRoute.routeOperationArr = []
+      this.defaultroute_codeArr = []
+      this.defaultroute_code = ''
+      this.projectTableData = []
+    },
+    // 鍙栨秷
+    routeDialogVisibleCancel() {
+      this.dialogVisibleRoute = false
+    },
+    // 纭畾
+    async routeDialogVisibleConfirm() {
+      const temp = this.dialogFormRoute.routeOperationArr.filter(item => item.isSelected2)
+      if (this.defaultroute_code === '' && temp.length > 0) {
+        return this.$message.info('榛樿宸ヨ壓璺嚎涓嶈兘涓虹┖锛�')
+      }
+
+      // 鎻愪氦鏍煎紡
+      const data = []
+      this.dialogFormRoute.routeOperationArr.forEach(item => {
+        if (item.isSelected2) {
+          data.push({ code: item.code, name: item.name })
+        }
+      })
+
+      const res = await SaveInventoryFile(this.dialogFormRoute.projectCode, this.defaultroute_code, data)
+      if (res.code === '200') {
+        this.$message.success('淇濆瓨鎴愬姛锛�')
+        await this.getMesOrderSearch()
+        this.dialogVisibleRoute = false
+      }
+    },
+    // 澶х洅瀛愮偣鍑讳簨浠�
+    myCheckboxClick(val) {
+      console.log(val, 1)
+      this.dialogFormRoute.routeOperationArr.forEach(item => {
+        item.isSelected1 = val.code === item.code
+      })
+
+      this.projectTableData = val.Data
+    },
+    // 灏忕洅瀛愮偣鍑讳簨浠�
+    myCheckboxInputClick(val) {
+      console.log(val, 2)
+      val.isSelected2 = !val.isSelected2
+
+      this.dialogFormRoute.routeOperationArr.forEach((item, index) => {
+        if (val.code === item.code) {
+          item.flag = !item.flag
+        }
+      })
+      if (val.code === this.defaultroute_code) {
+        this.defaultroute_code = ''
+      }
+      this.defaultroute_codeArr = this.dialogFormRoute.routeOperationArr.filter(item => item.isSelected2)
+    },
+    //  琛岀偣鍑讳簨浠�
+    async rowClick(row, event, column) {
+      this.radioSelected = row.wo_code
+      const { data: res } = await SearchWorkStep({ wo_code: row.wo_code })
+      this.tableDataDetail = res
+    },
+    // 鎵撳嵃宸ュ崟
+    printOrder() {
+
+    },
+    //  閫夋嫨鎵撳嵃灏哄鐨勫ぇ灏忓�兼敼鍙�
+    printSizeChange(val) {
+      this.$nextTick(() => {
+        this.bindQRCode2(this.qrForm.qrvalue)
+      })
+    },
+    printMe2StylePadding(val) {
+      if (val === 0) {
+        return { paddingLeft: '10px', paddingTop: '5px' }
+      }
+      if (val === 5) {
+        return { paddingLeft: '15px', paddingTop: '7px' }
+      }
+    }
   }
 }
 </script>
 
 <style lang="scss" scoped>
 $main_color: #42b983;
-::v-deep .el-button--primary {
-  background-color: $main_color !important;
-  height: 30px;
+.dialogVisibleRoute {
+  .myCheckboxGroup {
+    display: flex;
+    flex-wrap: wrap;
+
+    .myCheckbox {
+      //border: 1px solid $main_color;
+      border: 1px solid #eee;
+      display: flex;
+      min-width: 100px;
+      padding: 10px;
+      margin: 10px 30px 0 0;
+      border-radius: 5px;
+      cursor: default;
+
+      .myCheckboxInput {
+        margin: 1px 5px 0 0;
+        cursor: pointer;
+      }
+
+    }
+
+    //.myCheckbox{
+    //  border: 1px solid $main_color;
+    //}
+
+    input[type=checkbox] {
+      cursor: pointer;
+      position: relative;
+      width: 14px;
+      height: 14px;
+      font-size: 14px;
+    }
+
+    input[type=checkbox]::after {
+      position: absolute;
+      top: 0;
+      //color: rgb(130, 35, 35);
+      color: $main_color;
+      width: 14px;
+      height: 14px;
+      display: inline-block;
+      visibility: visible;
+      padding-left: 0px;
+      text-align: center;
+      content: ' ';
+      border-radius: 3px
+    }
+
+    input[type=checkbox]:checked::after {
+      //content: "鉁�";
+      content: "鈭�";
+      color: #fff;
+      font-size: 12px;
+      font-weight: bold;
+      background-color: $main_color;
+    }
+  }
+}
+
+.dialogVisibleRoute {
+  ::v-deep .el-dialog__body {
+    padding: 20px 20px !important;
+  }
+}
+
+.defaultroute_code ::v-deep .el-input__suffix-inner {
   display: flex;
   align-items: center;
-  //border: 1px solid $main_color;
-  border: none;
-  padding: 0 20px;
+  justify-content: center;
+  margin-top: -3px;
 }
 
-::v-deep .el-button--primary:hover {
-  border: none;
-}
-
-::v-deep .el-button--info {
-  height: 30px;
-  display: flex;
-  align-items: center;
-  padding: 0 20px;
-}
-
-::v-deep .el-pagination.is-background .el-pager li:not(.disabled).active {
-  background-color: $main_color !important;
-}
-
-::v-deep .el-dialog__footer {
-  display: flex;
-  justify-content: flex-end;
-}
-
-.footerButton {
-  display: flex;
-  justify-content: end;
-}
-
-::v-deep .el-button--default {
-  background-color: #ffffff !important;
-  height: 30px;
-  display: flex;
-  align-items: center;
-  padding: 0 20px;
-}
-
-::v-deep .el-button--default:hover {
-  color: #606266;
+.el-date-editor {
+  font-size: 14px;
 }
 
 ::v-deep .el-dialog__body {
@@ -1386,37 +2771,8 @@
   padding: 20px 20px !important;
 }
 
-::v-deep .el-radio__input.is-checked .el-radio__inner {
-  background-color: $main_color;
-  border-color: $main_color;
-}
-
-::v-deep .el-radio__input.is-checked + .el-radio__label {
-  color: $main_color !important;
-}
-
-::v-deep .el-checkbox__input.is-checked .el-checkbox__inner {
-  border-color: $main_color;
-  background-color: $main_color;
-}
-
-::v-deep .el-input__inner {
-  height: 30px;
-  line-height: 30px;
-}
-
-::v-deep .el-input__inner:focus {
-  border-color: $main_color;
-}
-
 ::v-deep .el-table .caret-wrapper {
   transform: scale(0.8);
-}
-
-::v-deep .cell {
-  display: flex !important;
-  align-items: center !important;
-  justify-content: space-between !important;
 }
 
 ::v-deep .el-button--text {
@@ -1432,45 +2788,8 @@
   align-items: center;
 }
 
-.el-icon-share {
-  color: $main_color;
-  cursor: pointer;
-}
-
-.el-checkbox.is-bordered.is-checked {
-  border-color: $main_color;
-}
-
-::v-deep .el-radio__input.is-checked .el-radio__inner {
-  border-color: $main_color;
-  background: $main_color;
-}
-
-::v-deep .el-checkbox__input.is-indeterminate .el-checkbox__inner {
-  border-color: $main_color;
-  background: $main_color;
-}
-
-::v-deep .el-checkbox__input.is-checked + .el-checkbox__label {
-  color: $main_color !important;
-}
-
-::v-deep .el-checkbox.is-bordered + .el-checkbox.is-bordered {
-  margin: 10px 30px 0px 0;
-}
-
-::v-deep .el-radio__input.is-checked + .el-radio__label {
-  color: $main_color;
-}
-
 ::v-deep .el-radio.is-bordered + .el-radio.is-bordered {
   margin: 10px 30px 0px 0;
-}
-
-.body ::v-deep .el-divider {
-  border: 1px solid #eee;
-  width: 99%;
-  margin: 10px auto;
 }
 
 .body ::v-deep .el-form-item {
@@ -1481,30 +2800,11 @@
   margin-bottom: 0;
 }
 
-::v-deep .el-input__inner:focus {
-  border-color: $main_color;
-}
-
-::v-deep .el-select .el-input__inner:focus {
-  border-color: $main_color;
-}
-
-::v-deep .el-select-dropdown__item.selected {
-  color: $main_color;
-}
-
-::v-deep .el-checkbox__inner:hover {
-  border-color: $main_color;
-}
-
-::v-deep .el-textarea__inner:focus {
-  border-color: $main_color;
-}
-
 .elTableDiv {
   ::v-deep .el-radio__label {
     display: none;
   }
+
 }
 
 .el-table::before {
@@ -1516,12 +2816,13 @@
 //  //outline: #000 solid 2px !important;
 //}
 
-.tableDataPrint ::v-deep div.cell{
+.tableDataPrint ::v-deep div.cell {
   display: flex !important;
   align-items: center !important;
   justify-content: center !important;
 }
-.formContent{
+
+.formContent {
   width: 240px;
 }
 
@@ -1536,7 +2837,162 @@
 
 </style>
 <style>
-.formContent .el-form-item__label{
-color: #000 !important;
+.formContent .el-form-item__label {
+  color: #000 !important;
+}
+</style>
+<!--鍏叡椤甸潰鏍峰紡-->
+<style lang="scss" scoped>
+$main_color: #42b983;
+
+::v-deep .el-range-input {
+  font-size: 14px !important;
+}
+
+::v-deep .el-range__icon {
+  line-height: 28px !important;
+}
+
+::v-deep .el-range-separator {
+  line-height: 28px !important;
+}
+
+::v-deep .el-range-input {
+  font-size: 14px;
+}
+
+::v-deep .el-range-separator {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.el-icon-share, .el-icon-delete, .el-icon-edit-outline {
+  color: $main_color;
+  cursor: pointer;
+}
+
+.el-icon-edit-outline {
+  margin-right: 15px;
+}
+
+::v-deep .el-button--primary, .el-button--default, .el-button--info {
+  height: 34px;
+  display: flex;
+  align-items: center;
+  padding: 0 15px;
+}
+
+::v-deep .el-button--primary {
+  //background-color: $main_color !important;
+}
+
+::v-deep .el-button--default {
+  background-color: #f8f8fa;
+  border: none;
+}
+
+::v-deep .el-input__inner {
+  height: 34px;
+  line-height: 34px;
+  //color: #a7a7a7;
+}
+
+::v-deep .el-dialog__body {
+  padding: 20px 100px !important;
+}
+
+::v-deep .dialogVisibleRoles .el-dialog__body {
+  padding: 20px 20px !important;
+}
+
+::v-deep .importPickerClass .el-dialog__body {
+  padding: 20px 20px !important;
+}
+
+::v-deep .el-dialog__footer {
+  display: flex;
+  justify-content: flex-end;
+}
+
+::v-deep .el-table .caret-wrapper {
+  transform: scale(0.8);
+}
+
+::v-deep .cell {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+
+::v-deep .el-table::before {
+  height: 0;
+}
+
+::v-deep .el-table__body-wrapper {
+  background-color: #f8f8fa;
+}
+
+::v-deep .el-table__body .el-table__row.hover-row td {
+  background-color: #eaecef;
+}
+
+::v-deep .el-form--inline .el-form-item__label {
+  color: #a7a7a7;
+}
+
+.body ::v-deep .el-divider {
+  border: 1px solid #eee;
+  width: 99%;
+  margin: 10px auto;
+}
+
+.body ::v-deep .el-form-item {
+  margin-bottom: 0;
+}
+
+.userDialogVisible ::v-deep .el-form-item {
+  margin-bottom: 0;
+}
+
+.dateMini {
+  ::v-deep .el-input__inner {
+    line-height: 34px;
+    height: 34px;
+    width: 200px;
+    display: flex;
+    font-size: 14px !important;
+    align-items: center !important;
+  }
+
+  ::v-deep .el-input__prefix {
+    margin-top: -3px;
+  }
+
+  //::v-deep .el-range__icon{
+  //  line-height: 28px;
+  //}
+}
+
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.tableFixed {
+  ::v-deep .el-table__fixed-right {
+    height: 100% !important;
+  }
+
+  ::v-deep .el-table__fixed {
+    height: 100% !important;
+  }
+}
+</style>
+<style>
+
+.el-table .custom-row {
+  background: #f8f8fa;
 }
 </style>

--
Gitblit v1.9.3