From e5454b769d44a34af423bf87ac8a740bf8c20341 Mon Sep 17 00:00:00 2001
From: Crunchy <3114200645@qq.com>
Date: 星期二, 29 四月 2025 13:25:29 +0800
Subject: [PATCH] Merge branch 'dev' into dev_tides

---
 src/views/business/reportPreparation/index.vue | 1184 ++++++++++++++++++++++++----------------------------------
 1 files changed, 491 insertions(+), 693 deletions(-)

diff --git a/src/views/business/reportPreparation/index.vue b/src/views/business/reportPreparation/index.vue
index 3d9209a..785e9f1 100644
--- a/src/views/business/reportPreparation/index.vue
+++ b/src/views/business/reportPreparation/index.vue
@@ -1,165 +1,100 @@
 <template>
-  <div class="inspection_order">
-    <div v-show="activeFace === 0 && state===0" style="width: 100%;height: 100%;">
-      <div>
-        <el-row class="title">
-          <el-col :span="12" style="padding-left: 20px;text-align: left;">鎶ュ憡缂栧埗</el-col>
-        </el-row>
-      </div>
-      <div class="search" style="position: relative;">
-        <div class="search_thing">
-          <div class="search_label">鎶ュ憡缂栧彿锛�</div>
-          <div class="search_input"><el-input v-model="componentData.entity.code" clearable placeholder="璇疯緭鍏�"
-                                              size="small" @keyup.enter.native="refreshTable()"></el-input></div>
+  <div class="app-container">
+    <div>
+      <el-form :model="entity" ref="entity" size="small" :inline="true">
+        <el-form-item label="鎶ュ憡缂栧彿" prop="code">
+          <el-input v-model="entity.code" clearable placeholder="璇疯緭鍏�" size="small"
+            @keyup.enter.native="refreshTable()"></el-input>
+        </el-form-item>
+        <el-form-item label="鐘舵��" prop="queryStatus">
+          <el-select v-model="entity.queryStatus" clearable size="small" @change="refreshTable()">
+            <el-option v-for="(a, i) in queryStatusList" :key="i" :label="a.label" :value="a.value"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="涓嬪崟绫诲埆" prop="typeSource">
+          <el-select v-model="entity.typeSource" clearable size="small" @change="refreshTable()">
+            <el-option v-for="(a, i) in typeSourceList" :key="i" :label="a.label" :value="a.value"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="妫�楠岀被鍒�" prop="orderType">
+          <el-select v-model="entity.orderType" clearable size="small" @change="refreshTable()">
+            <el-option v-for="(a, i) in orderTypeList" :key="i" :label="a.label" :value="a.value"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" type="primary" @click="refreshTable()">鏌ヨ</el-button>
+          <el-button size="mini" @click="refresh()">閲嶇疆</el-button>
+        </el-form-item>
+      </el-form>
+    </div>
+    <div style="text-align: right;margin-bottom: 10px">
+      <el-button :loading="outLoading" size="mini" type="primary" @click="handleDowns">鎵归噺涓嬭浇</el-button>
+      <el-button :loading="outExportLoading" size="mini" type="primary" @click="handleExport">鎶ヨ〃瀵煎嚭</el-button>
+    </div>
+    <div>
+      <lims-table :tableData="valueTableData" :column="column" :page="page" :tableLoading="tableLoading"
+        :isSelection="true" :handleSelectionChange="handleChange" :height="'calc(100vh - 290px)'"
+        @pagination="pagination" key="valueTableData">
+        <div slot="action" slot-scope="scope">
+          <el-button size="small" type="text" @click="viewIssued(scope.row)">鏌ョ湅鎶ュ憡</el-button>
+          <el-upload ref='upload1' style="display: inline;margin: 0 6px" :action="fileAction1 + '?id=' + scope.row.id"
+            :auto-upload="true" :before-upload="fileBeforeUpload1" :headers="uploadHeader" :on-error="onError1"
+            :on-success="handleSuccessUp1" :show-file-list="false" accept='.doc,.docx'>
+            <el-button size="small" type="text"
+              :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName">涓婁紶</el-button>
+          </el-upload>
+          <el-button type="text" size="small" :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName"
+            @click="handleRestore(scope.row)">杩樺師</el-button>
+          <el-button type="text" size="small" :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName"
+            @click="sendBackTask(scope.row)">閫�鍥炰换鍔�</el-button>
+          <el-button type="text" size="small" :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName"
+            @click="handle(scope.row)">鎻愪氦</el-button>
+          <el-button type="text" size="small"
+            :disabled="scope.row.state == null || scope.row.state == 0 || scope.row.isExamine == 1 || nickName !== scope.row.examineUser"
+            @click="handleIssued(scope.row)">瀹℃牳</el-button>
+          <el-button type="text" size="small"
+            :disabled="scope.row.state == null || scope.row.state == 0 || scope.row.isExamine == 0 || scope.row.isExamine == null || scope.row.isRatify == 1 || nickName !== scope.row.ratifyUser"
+            @click="handleApprove(scope.row)">鎵瑰噯</el-button>
+          <el-popover placement="bottom" trigger="hover" style="margin-left: 6px">
+            <template #reference>
+              <el-button link type="text" size="small">鏇村</el-button>
+            </template>
+            <div>
+              <el-button style="margin-left: 10px" type="text" size="small" @click="download(scope.row)">涓嬭浇</el-button>
+              <el-button type="text" size="small" @click="viewInspectInfo(scope.row)">鍘熷璁板綍</el-button>
+              <el-button type="text" size="small" @click="handleFileLook(scope.row)">闄勪欢涓婁紶</el-button>
+            </div>
+          </el-popover>
         </div>
-        <div class="search_thing">
-          <div class="search_label">鐘舵�侊細</div>
-          <div class="search_input">
-            <el-select v-model="componentData.entity.queryStatus" clearable size="small" style="width: 100%;" @change="refreshTable()">
-              <el-option v-for="(a, i) in queryStatusList" :key="i" :label="a.label" :value="a.value"></el-option>
-            </el-select>
-          </div>
-        </div>
-        <div class="search_thing">
-          <div class="search_label">涓嬪崟绫诲埆锛�</div>
-          <div class="search_input">
-            <el-select v-model="componentData.entity.typeSource" clearable size="small" style="width: 100%;" @change="refreshTable()">
-              <el-option v-for="(a, i) in typeSourceList" :key="i" :label="a.label" :value="a.value"></el-option>
-            </el-select>
-          </div>
-        </div>
-        <div class="search_thing">
-          <div class="search_label">妫�楠岀被鍒細</div>
-          <div class="search_input">
-            <el-select v-model="componentData.entity.orderType" clearable size="small" style="width: 100%;" @change="refreshTable()">
-              <el-option v-for="(a, i) in orderTypeList" :key="i" :label="a.label" :value="a.value"></el-option>
-            </el-select>
-          </div>
-        </div>
-        <div class="search_thing" style="padding-left: 30px;">
-          <el-button size="small" @click="refresh()">閲� 缃�</el-button>
-          <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
-          <el-button :loading="outLoading" size="small" style="margin-right: 16px;" type="primary" @click="handleDowns">鎵归噺涓嬭浇</el-button>
-        </div>
-      </div>
-      <!-- <input id="input" type="file" accept=".doc,.docx"></input> -->
-      <div class="table">
-        <el-table @selection-change="handleChange" :data="valueTableData" style="width: 100%" height="calc(100vh - 21em)" v-loading="tableLoading">
-          <!-- 琛ㄦ牸鍒� -->
-          <el-table-column type="selection" width="55"></el-table-column>
-          <el-table-column header-align="center" align="center" width="70" prop="prop" label="搴忓彿" type="index"></el-table-column>
-          <el-table-column prop="code" label="鎶ュ憡缂栧彿" min-width="180">
-            <template slot-scope="scope">
-              <el-button type="text" @click="selectAllByOne(scope.row)">{{scope.row.code}}</el-button>
-            </template>
-          </el-table-column>
-          <el-table-column prop="typeSource" label="涓嬪崟绫诲埆" min-width="120">
-            <template slot-scope="scope">
-              <el-tag type="info" v-if="scope.row.typeSource === 1" disable-transitions>鍘熸潗鏂欎笅鍗�</el-tag>
-              <el-tag type="info" v-if="scope.row.typeSource === 0" disable-transitions>鎴愬搧涓嬪崟</el-tag>
-            </template>
-          </el-table-column>
-          <el-table-column prop="orderType" label="妫�楠岀被鍒�" min-width="150">
-            <template slot-scope="scope">
-              <el-tag type="success" v-if="scope.row.orderType === 'Customer-ordered test'" disable-transitions>濮旀墭璇曢獙</el-tag>
-              <el-tag v-if="scope.row.orderType === '鎶芥'" disable-transitions>鎶芥</el-tag>
-              <el-tag type="info" v-if="scope.row.orderType === '杩涘巶妫�楠�'" disable-transitions>杩涘巶妫�楠�</el-tag>
-              <el-tag type="warning" v-if="scope.row.orderType === 'Quarterly inspection'" disable-transitions>瀛e害妫�楠�</el-tag>
-            </template>
-          </el-table-column>
-          <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="150"></el-table-column>
-          <el-table-column prop="writeUserName" label="鎻愪氦浜�" min-width="110"></el-table-column>
-          <el-table-column prop="writeTime" label="鎻愪氦鏃堕棿" min-width="150"></el-table-column>
-          <el-table-column prop="state" label="鎻愪氦鐘舵��" min-width="110">
-            <template slot-scope="scope">
-              <el-tag type="danger" v-if="scope.row.state === 0" disable-transitions>寰呮彁浜�</el-tag>
-              <el-tag type="success" v-if="scope.row.state === 1" disable-transitions>宸叉彁浜�</el-tag>
-            </template>
-          </el-table-column>
-          <el-table-column prop="examineUser" label="瀹℃牳浜�" width="110"></el-table-column>
-          <el-table-column prop="examineTime" label="瀹℃牳鏃堕棿" width="180"></el-table-column>
-          <el-table-column prop="isExamine" label="瀹℃牳鐘舵��" width="110">
-            <template slot-scope="scope">
-              <el-tag type="danger" v-if="scope.row.isExamine === 0" disable-transitions>涓嶉�氳繃</el-tag>
-              <el-tag type="success" v-if="scope.row.isExamine === 1" disable-transitions>閫氳繃</el-tag>
-            </template>
-          </el-table-column>
-          <el-table-column prop="examineTell" label="瀹℃牳澶囨敞" width="180"></el-table-column>
-          <el-table-column prop="ratifyUser" label="鎵瑰噯浜�" width="110"></el-table-column>
-          <el-table-column prop="ratifyTime" label="鎵瑰噯鏃堕棿" width="180"></el-table-column>
-          <el-table-column prop="isRatify" label="鎵瑰噯鐘舵��" width="110">
-            <template slot-scope="scope">
-              <el-tag type="danger" v-if="scope.row.isRatify === 0" disable-transitions>涓嶆壒鍑�</el-tag>
-              <el-tag type="success" v-if="scope.row.isRatify === 1" disable-transitions>鎵瑰噯</el-tag>
-            </template>
-          </el-table-column>
-          <el-table-column prop="ratifyTell" label="鎵瑰噯澶囨敞" width="180"></el-table-column>
-          <!-- 鎿嶄綔鎸夐挳 -->
-          <el-table-column label="鎿嶄綔" fixed="right" min-width="360" align="center">
-            <template slot-scope="scope">
-              <el-button size="small" type="text" @click="viewIssued(scope.row)">鏌ョ湅鎶ュ憡</el-button>
-              <el-upload ref='upload1'
-                         style="display: inline"
-                         :action="fileAction1 +'?id='+ scope.row.id"
-                         :auto-upload="true"
-                         :before-upload="fileBeforeUpload1"
-                         :headers="headers" :on-error="onError1"
-                         :on-success="handleSuccessUp1"
-                         :show-file-list="false"
-                         accept='.doc,.docx'>
-                <el-button size="small" type="text" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName">涓婁紶</el-button>
-                <!--                <span>涓婁紶</span>-->
-              </el-upload>
-              <el-button type="text" size="small" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName" @click="handleRestore(scope.row)">杩樺師</el-button>
-              <el-button type="text" size="small" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName" @click="sendBackTask(scope.row)">閫�鍥炰换鍔�</el-button>
-              <el-button type="text" size="small" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName" @click="handle(scope.row)">鎻愪氦</el-button>
-              <el-button type="text" size="small" :disabled="scope.row.state == null || scope.row.state == 0 ||scope.row.isExamine == 1 || userName !== scope.row.examineUser" @click="handleIssued(scope.row)">瀹℃牳</el-button>
-              <el-button type="text" size="small" :disabled="scope.row.state == null || scope.row.state == 0 || scope.row.isExamine == 0 || scope.row.isExamine == null || scope.row.isRatify == 1 || userName !== scope.row.ratifyUser" @click="handleApprove(scope.row)">鎵瑰噯</el-button>
-              <el-popover placement="bottom" :width="170" trigger="hover">
-                <template #reference>
-                  <el-button link type="text" size="small">鏇村</el-button>
-                </template>
-                <div>
-                  <el-button style="margin-left: 10px" type="text" size="small" @click="download(scope.row)">涓嬭浇</el-button>
-                  <el-button type="text" size="small" @click="viewInspectInfo(scope.row)">鍘熷璁板綍</el-button>
-                  <el-button type="text" size="small" @click="handleFileLook(scope.row)">闄勪欢涓婁紶</el-button>
-                </div>
-              </el-popover>
-            </template>
-          </el-table-column>
-        </el-table>
-        <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page.current"
-                       style="margin-right: 5%;" :page-sizes="[10, 20, 30, 50, 100]" :page-size="page.size"
-                       layout="->,total, sizes, prev, pager, next, jumper" :total="total">
-        </el-pagination>
-      </div>
+      </lims-table>
     </div>
     <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="claimVisible" title="鍦ㄧ嚎缂栧埗"
-               width="22cm">
+      width="22cm">
       <div class="full-screen">
         <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px"
-           @click="fullscreen=true;"></i>
-        <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;">
+          @click="fullscreen = true;"></i>
+        <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen = false;">
       </div>
-      <Word v-if="claimVisible" ref="Word" :class="{fullscreen:fullscreen}" :value="value" style="height:70vh" />
+      <Word v-if="claimVisible" ref="Word" :class="{ fullscreen: fullscreen }" :value="value" style="height:70vh" />
       <span slot="footer" class="dialog-footer">
         <el-button @click="claimVisible = false">鍙� 娑�</el-button>
         <el-button type="primary" @click="confirmClaim">纭� 瀹�</el-button>
       </span>
     </el-dialog>
     <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="issuedVisible" title="鎶ュ憡瀹℃牳"
-               width="80vw">
+      width="80vw">
       <div class="full-screen">
-        <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;"></i>
-        <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;" >
+        <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px"
+          @click="fullscreen = true;"></i>
+        <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen = false;">
       </div>
-      <div v-if="issuedVisible" style="height: 80vh;">
+      <div v-if="issuedVisible" style="height: 70vh;">
         <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" />
       </div>
       <span slot="footer" class="dialog-footer">
-				<el-button :disabled="loadingIssued" @click="issuedReasonVisible=true">涓嶉�氳繃</el-button>
-				<el-button type="primary" @click="subIssued">閫� 杩�</el-button>
-			</span>
+        <el-button :disabled="loadingIssued" @click="issuedReasonVisible = true">涓嶉�氳繃</el-button>
+        <el-button type="primary" @click="subIssued">閫� 杩�</el-button>
+      </span>
     </el-dialog>
     <el-dialog :modal-append-to-body="false" :visible.sync="issuedReasonVisible" title="涓嶉�氳繃鍘熷洜" width="400px">
       <div class="search_thing">
@@ -167,22 +102,24 @@
         <div class="search_input"><el-input v-model="reason" clearable placeholder="璇疯緭鍏�" size="small"></el-input></div>
       </div>
       <span slot="footer" class="dialog-footer">
-        <el-button :disabled="loadingIssuedReason" @click="issuedReasonVisible=false">鍙栨秷</el-button>
-				<el-button :loading="loadingIssuedReason" type="primary" @click="handleIssuedReason">纭畾</el-button>
-			</span>
+        <el-button :disabled="loadingIssuedReason" @click="issuedReasonVisible = false">鍙栨秷</el-button>
+        <el-button :loading="loadingIssuedReason" type="primary" @click="handleIssuedReason">纭畾</el-button>
+      </span>
     </el-dialog>
-    <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="approveVisible" title="鎶ュ憡鎵瑰噯" width="80vw">
+    <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="approveVisible" title="鎶ュ憡鎵瑰噯"
+      width="80vw">
       <div class="full-screen">
-        <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;"></i>
-        <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;" >
+        <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px"
+          @click="fullscreen = true;"></i>
+        <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen = false;">
       </div>
-      <div v-if="approveVisible" style="height: 80vh;">
+      <div v-if="approveVisible" style="height: 70vh;">
         <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" />
       </div>
       <span slot="footer" class="dialog-footer">
-				<el-button :disabled="loadingApprove" @click="approveReasonVisible=true">涓嶆壒鍑�</el-button>
-				<el-button :loading="loadingApprove" type="primary" @click="subApprove">鎵� 鍑�</el-button>
-			</span>
+        <el-button :disabled="loadingApprove" @click="approveReasonVisible = true">涓嶆壒鍑�</el-button>
+        <el-button :loading="loadingApprove" type="primary" @click="subApprove">鎵� 鍑�</el-button>
+      </span>
     </el-dialog>
     <el-dialog :modal-append-to-body="false" :visible.sync="approveReasonVisible" title="涓嶆壒鍑嗗師鍥�" width="400px">
       <div class="search_thing">
@@ -190,18 +127,17 @@
         <div class="search_input"><el-input v-model="reason" clearable placeholder="璇疯緭鍏�" size="small"></el-input></div>
       </div>
       <span slot="footer" class="dialog-footer">
-        <el-button :disabled="loadingApproveReason" @click="approveReasonVisible=false">鍙栨秷</el-button>
-				<el-button :loading="loadingApproveReason" type="primary" @click="handleApproveReason">纭畾</el-button>
-			</span>
+        <el-button :disabled="loadingApproveReason" @click="approveReasonVisible = false">鍙栨秷</el-button>
+        <el-button :loading="loadingApproveReason" type="primary" @click="handleApproveReason">纭畾</el-button>
+      </span>
     </el-dialog>
-    <el-dialog :close-on-click-modal="false" :visible.sync="addApproverDia" title="鎸囧畾鎵瑰噯浜哄憳"
-               width="400px"
-               @close="closeAddApproverDia">
+    <el-dialog :close-on-click-modal="false" :visible.sync="addApproverDia" title="鎸囧畾鎵瑰噯浜哄憳" width="400px"
+      @close="closeAddApproverDia">
       <div class="body" style="display: flex;padding: 10px;align-items: center;">
         <div class="search_label" style="width: 150px;"><span class="required-span">*</span>鎵瑰噯浜猴細</div>
         <div class="search_input" style="width: 100%;">
           <el-select v-model="approver" clearable filterable placeholder="璇烽�夋嫨" size="small" style="width: 100%;">
-            <el-option v-for="(item,i) in approverList" :key="i" :label="item.label" :value="item.value">
+            <el-option v-for="(item, i) in approverList" :key="i" :label="item.label" :value="item.value">
             </el-option>
           </el-select>
         </div>
@@ -211,15 +147,13 @@
         <el-button :loading="loadingIssued" type="primary" @click="submitAddApprover">纭� 瀹�</el-button>
       </span>
     </el-dialog>
-    <el-dialog :close-on-click-modal="false" :visible.sync="addVerifyDia"
-               title="鎸囧畾瀹℃牳浜哄憳"
-               width="400px"
-               @close="closeAddVerifyDia">
+    <el-dialog :close-on-click-modal="false" :visible.sync="addVerifyDia" title="鎸囧畾瀹℃牳浜哄憳" width="400px"
+      @close="closeAddVerifyDia">
       <div class="body" style="display: flex;padding: 10px;align-items: center;">
         <div class="search_label" style="width: 150px;"><span class="required-span">*</span>瀹℃牳浜猴細</div>
         <div class="search_input" style="width: 100%;">
           <el-select v-model="verifyUser" clearable filterable placeholder="璇烽�夋嫨" size="small" style="width: 100%;">
-            <el-option v-for="(item,i) in approverList" :key="i" :label="item.label" :value="item.value">
+            <el-option v-for="(item, i) in approverList" :key="i" :label="item.label" :value="item.value">
             </el-option>
           </el-select>
         </div>
@@ -229,55 +163,32 @@
         <el-button :loading="loadingVerify" type="primary" @click="handleSubmit">纭� 瀹�</el-button>
       </span>
     </el-dialog>
-    <div v-if="activeFace >0 && isCopper === null" style="width: 100%;height: 100%;">
-      <Add :active="activeFace" :currentId="currentId" :examine="examine"/>
-    </div>
-    <div v-if="activeFace >0 && isCopper === 0" style="width: 100%;height: 100%;">
-      <CustomsInspection :active="activeFace" :currentId="currentId" :customsInspection="customsInspection" :isReport="isReport"/>
-    </div>
-    <div v-if="activeFace >0 && isCopper === 1" style="width: 100%;height: 100%;">
-      <CopperOrder :active="activeFace" :currentId="currentId"></CopperOrder>
-    </div>
     <!--浜т笟閾句俊鎭煡鐪�-->
-    <ShowInfo v-if="showInfoDialog" ref="showInfoDialog" :showInfoDialog="showInfoDialog"></ShowInfo>
+    <!--    <ShowInfo v-if="showInfoDialog" ref="showInfoDialog" :showInfoDialog="showInfoDialog"></ShowInfo>-->
     <!--鎶ュ憡鏌ョ湅-->
     <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="viewIssuedVisible" title="鎶ュ憡鏌ョ湅"
-               width="80vw">
+      width="80vw">
       <div class="full-screen">
-        <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;"></i>
-        <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;" >
+        <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px"
+          @click="fullscreen = true;"></i>
+        <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen = false;">
       </div>
       <div v-if="viewIssuedVisible" style="height: 80vh;">
         <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" />
       </div>
     </el-dialog>
-    <!--妫�楠屼换鍔′俊鎭煡鐪�-->
-    <Inspection v-if="state>0" :key="InspectionKey" :inspectorList="inspectorList" :orderId="orderId"
-                :sonLaboratory="sonLaboratory" :state="state"
-                :typeSource="typeSource"
-                @goback="goback" @refreshView="refreshView"/>
     <!--闄勪欢鏌ョ湅-->
     <el-dialog :visible.sync="filesDialogVisible" title="闄勪欢鏌ョ湅" width="80%" @closed="closeFilesLook">
-      <div style="display: flex;justify-content: space-between;">
-        <el-upload ref='upload'
-                   :action="fileAction"
-                   :auto-upload="true"
-                   :before-upload="fileBeforeUpload" :data="{orderId: filesLookInfo.insOrderId}"
-                   :headers="headers" :on-error="onError"
-                   :on-success="handleSuccessUp"
-                   :show-file-list="false"
-                   accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' style="width: 80px !important;">
+      <div style="margin-bottom: 10px">
+        <el-upload ref='upload' :action="fileAction" :auto-upload="true" :before-upload="fileBeforeUpload"
+          :data="{ orderId: filesLookInfo.insOrderId }" :headers="uploadHeader" :on-error="onError"
+          :on-success="handleSuccessUp" :show-file-list="false"
+          accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' style="width: 80px !important;">
           <el-button size="small" style="height: 38px" type="primary">闄勪欢涓婁紶</el-button>
         </el-upload>
       </div>
-<!--      <div v-if="filesDialogVisible" style="height: 70vh;overflow-y: auto;">-->
-<!--        <ValueTable :key="upIndex"-->
-<!--                    ref="fileList"-->
-<!--                    :componentData="fileComponentData"-->
-<!--                    :delUrl="$api.insOrderPlan.delfile"-->
-<!--                    :url="$api.insOrderPlan.getFileList"-->
-<!--                    class="value-table"/>-->
-<!--      </div>-->
+      <lims-table :tableData="tableDataFile" :column="columnFile" height="600px"
+        key="tableDataFile" :tableLoading="tableLoadingFile"></lims-table>
     </el-dialog>
   </div>
 </template>
@@ -285,207 +196,36 @@
 <script>
 import onlyoffice from "@/components/Onlyoffice/onlyoffice.vue";
 // import ShowInfo from "../do/b1-material-ins-order/showInfo.vue";
-import file from "@/utils/file";
+import {
+  downAll,
+  examineReport,
+  pageInsReport,
+  ratifyReport,
+  sendBackTask,
+  upReportUrl,
+  writeReport,
+  reportAllExport
+} from "@/api/business/insReport";
+import { mapGetters } from "vuex";
+import { selectUserCondition } from "@/api/business/inspectionTask";
+import limsTable from "@/components/Table/lims-table.vue";
+import {delFile, downFile, getFileList} from "@/api/business/rawMaterialOrder";
 export default {
-  components: {onlyoffice},
+  name: 'ReportPreparation',
+  components: { limsTable, onlyoffice },
   data() {
     return {
-      componentData: {
-        entity: {
-          queryStatus: null,
-          code: null,
-          typeSource: null,
-          orderBy: {
-            field: 'id',
-            order: 'desc'
-          }
-        },
-        isIndex: true,
-        showSelect: true,
-        select: true,
-        selectMethod: 'handleChange',
-        do: [
-          {
-            id: '',
-            font: '鏌ョ湅鎶ュ憡',
-            type: 'text',
-            method: 'viewIssued',
-          },
-          {
-            id: 'download',
-            font: '涓嬭浇',
-            type: 'text',
-            method: 'download'
-          }, {
-            id: 'handleUpload',
-            font: '涓婁紶',
-            type: 'upload',
-            uploadConfig: {
-              url: this.$api.insReport.inReport,
-              accept: '.docx'
-            },
-            method: 'handleUpload',
-            disabFun: (row, index) => {
-              return row.state != 0 || userName != row.writeUserName
-            }
-          },
-          {
-            id: 'handleRestore',
-            font: '杩樺師',
-            type: 'text',
-            method: 'handleRestore',
-            disabFun: (row, index) => {
-              return row.state != 0 || JSON.parse(localStorage.getItem("user")).name != row.writeUserName
-            }
-          },
-          {
-            id: 'sendBackTask',
-            font: '閫�鍥炰换鍔�',
-            type: 'text',
-            method: 'sendBackTask',
-            disabFun: (row, index) => {
-              return row.state != 0 || JSON.parse(localStorage.getItem("user")).name != row.writeUserName
-            }
-          },
-          {
-            id: 'handle',
-            font: '鎻愪氦',
-            type: 'text',
-            method: 'handle',
-            disabFun: (row, index) => {
-              return row.state != 0 || JSON.parse(localStorage.getItem("user")).name != row.writeUserName
-            }
-          },
-          {
-            id: 'handleIssued',
-            font: '瀹℃牳',
-            type: 'text',
-            method: 'handleIssued',
-            disabFun: (row, index) => {
-              return row.state == null || row.state == 0 || row.isExamine == 1 || JSON.parse(localStorage.getItem("user")).name != row.examineUser
-            }
-          }, {
-            id: 'handleApprove',
-            font: '鎵瑰噯',
-            type: 'text',
-            method: 'handleApprove',
-            disabFun: (row, index) => {
-              return row.state == null || row.state == 0 || row.isExamine == 0 || row.isExamine == null || row.isRatify == 1 || JSON.parse(localStorage.getItem("user")).name != row.ratifyUser
-            }
-          },
-          {
-            id: '',
-            font: '鍘熷璁板綍',
-            type: 'text',
-            method: 'viewInspectInfo',
-          },
-          {
-            id: '',
-            font: '闄勪欢涓婁紶',
-            type: 'text',
-            method: 'handleFileLook',
-          }
-        ],
-        linkEvent: {
-          code: {
-            method: 'selectAllByOne'
-          }
-        },
-        tagField: {
-          isRatify: {
-            select: [{
-              value: 0,
-              type: 'danger',
-              label: '涓嶆壒鍑�'
-            }, {
-              value: 1,
-              type: 'success',
-              label: '鎵瑰噯'
-            }]
-          },
-          isExamine: {
-            select: [{
-              value: 0,
-              type: 'danger',
-              label: '涓嶉�氳繃'
-            }, {
-              value: 1,
-              type: 'success',
-              label: '閫氳繃'
-            }]
-          },
-          state: {
-            select: [{
-              value: 0,
-              type: 'danger',
-              label: '寰呮彁浜�'
-            }, {
-              value: 1,
-              type: 'success',
-              label: '宸叉彁浜�'
-            }]
-          },
-          typeSource: {
-            select: [{
-              value: 0,
-              label: '鎴愬搧涓嬪崟',
-              type: 'info'
-            },{
-              value: 1,
-              label: '鍘熸潗鏂欎笅鍗�',
-              type: 'info'
-            }]
-          },
-          queryStatus: {
-            select: [{
-              value: 0,
-              label: '寰呮彁浜�',
-              type: 'info'
-            },{
-              value: 1,
-              label: '寰呭鏍�',
-              type: 'info'
-            },{
-              value: 2,
-              label: '寰呮壒鍑�',
-              type: 'info'
-            }]
-          },
-          orderType: {
-            select: [{
-              value: 'Customer-ordered test',
-              label: '濮旀墭璇曢獙',
-              type: 'success',
-              effect: 'plain'
-            },{
-              value: '鎶芥',
-              label: '鎶芥',
-              type: '',
-              effect: 'plain'
-            },{
-              value: '杩涘巶妫�楠�',
-              label: '杩涘巶妫�楠�',
-              type: 'info',
-              effect: 'plain'
-            },{
-              value: 'Quarterly inspection',
-              label: '瀛e害妫�楠�',
-              type: 'warning',
-              effect: 'plain'
-            }]
-          }
-        },
-        selectField: {},
-        requiredAdd: [],
-        needSort: ['createTime', 'state', 'writeTime', 'isExamine', 'examineTime', 'ratifyTime'],
-        requiredUp: []
+      entity: {
+        queryStatus: null,
+        code: null,
+        typeSource: null,
+        orderType: null,
       },
       page: {
         current: 1,
         size: 20,
+        total: 0
       },
-      total: null,
-      entityCopy: {},
       upIndex: 0,
       statusList: [],
       claimVisible: false,
@@ -501,10 +241,11 @@
       value: ``,
       reason: '',
       currentInfo: null,
-      option:null,
-      mutiList:[],
-      outLoading:false,
-      inLoading:false,
+      option: null,
+      mutiList: [],
+      outLoading: false,
+      outExportLoading: false,
+      inLoading: false,
       addApproverDia: false, // 鎸囧畾瀹℃壒浜哄憳寮规
       approver: '', // 瀹℃壒浜哄憳
       approverId: '', // 瀹℃壒浜哄憳
@@ -513,14 +254,14 @@
       verifyUser: null, // 瀹℃牳浜哄憳
       loadingVerify: false, // 瀹℃牳浜哄憳
       typeSourceList: [
-        {label: '鎴愬搧涓嬪崟', value: 0},
-        {label: '鍘熸潗鏂欎笅鍗�', value: 1},
+        { label: '鎴愬搧涓嬪崟', value: 0 },
+        { label: '鍘熸潗鏂欎笅鍗�', value: 1 },
       ],
       orderTypeList: [
-        {label: '濮旀墭璇曢獙', value: 'Customer-ordered test'},
-        {label: '鎶芥', value: '鎶芥'},
-        {label: '杩涘巶妫�楠�', value: '杩涘巶妫�楠�'},
-        {label: '瀛e害妫�楠�', value: 'Quarterly inspection'},
+        { label: '濮旀墭璇曢獙', value: 'Customer-ordered test' },
+        { label: '鎶芥', value: '鎶芥' },
+        { label: '杩涘巶妫�楠�', value: '杩涘巶妫�楠�' },
+        { label: '瀛e害妫�楠�', value: 'Quarterly inspection' },
       ],
       showInfoDialog: false, // 浜т笟閾句俊鎭煡鐪�
       isReport: 1,
@@ -530,9 +271,9 @@
       examine: null,
       viewIssuedVisible: false,
       queryStatusList: [
-        {label: '寰呮彁浜�', value: 0},
-        {label: '寰呭鏍�', value: 1},
-        {label: '寰呮壒鍑�', value: 2},
+        { label: '寰呮彁浜�', value: 0 },
+        { label: '寰呭鏍�', value: 1 },
+        { label: '寰呮壒鍑�', value: 2 },
       ],
       state: 0,
       orderId: 0,
@@ -542,192 +283,351 @@
       sonLaboratory: '', // 璇曢獙瀹�
       filesDialogVisible: false,
       filesLookInfo: {},
-      fileComponentData: {
-        entity: {
-          insOrderId:''
-        },
-        isIndex: true,
-        showSelect: false,
-        select: false,
-        sort: false,
-        init:false,
-        do: [
-          {
-            id: 'parent',
-            font: '涓嬭浇',
-            type: 'text',
-            method: 'handleDown'
-          },{
-            id: 'delete',
-            font: '鍒犻櫎',
-            type: 'text',
-            method: 'doDiy',
+      tableDataFile: [],
+      tableLoadingFile: false,
+      columnFile: [
+        {
+          dataType: 'tag',
+          label: '绫诲瀷',
+          prop: 'type',
+          formatData: (params) => {
+            if (params == 1) {
+              return '鍥剧墖'
+            } else if (params == 2) {
+              return '鏂囦欢'
+            } else {
+              return ''
+            }
+          },
+          formatType: (params) => {
+            if (params == 1) {
+              return 'success'
+            } else if (params == 2) {
+              return 'warning'
+            } else {
+              return ''
+            }
           }
-        ],
-        isPage: false,
-        linkEvent: {},
-        tagField: {
-          type:{
-            select:[
-              {
-                value: 1,
-                label: '鍥剧墖'
-              },
-              {
-                value: 2,
-                label: '鏂囦欢'
+        },
+        { label: '闄勪欢鍚嶇О', prop: 'fileName' },
+        { label: '涓婁紶浜�', prop: 'name' },
+        { label: '涓婁紶鏃堕棿', prop: 'createTime' },
+        {
+          dataType: 'action',
+          fixed: 'right',
+          label: '鎿嶄綔',
+          width: '170px',
+          operation: [
+            {
+              name: '涓嬭浇',
+              type: 'text',
+              clickFun: (row) => {
+                this.handleDown(row);
               }
-            ]
-          }
-        },
-        currentId: '',
-        selectField: {},
-        requiredAdd: [],
-        requiredUp: []
-      },
+            },
+            {
+              name: '鍒犻櫎',
+              type: 'text',
+              clickFun: (row) => {
+                this.delete(row);
+              }
+            },
+          ]
+        }
+      ],
       isCopper: null,
       tableLoading: false,
       valueTableData: [],
-      userName: ''
+      column: [
+        {
+          label: "鎶ュ憡缂栧彿",
+          prop: "code",
+          width: "160px",
+          dataType: "link",
+          linkMethod: "selectAllByOne",
+        },
+        {
+          label: "涓嬪崟绫诲埆",
+          prop: "typeSource",
+          width: "100px",
+          dataType: "tag",
+          formatData: (params) => {
+            if (params == 0) {
+              return "鎴愬搧涓嬪崟";
+            } else {
+              return "鍘熸潗鏂欎笅鍗�";
+            }
+          },
+        },
+        {
+          label: "妫�楠岀被鍨�",
+          prop: "orderType",
+          width: "100px",
+          dataType: "tag",
+          formatData: (params) => {
+            return this.orderTypeList.find((m) => m.value == params).label;
+          },
+          formatType: (params) => {
+            return this.orderTypeList.find((m) => m.value == params).type;
+          },
+        },
+        { label: "鍒涘缓鏃堕棿", prop: "createTime" },
+        { label: "鎻愪氦浜�", prop: "writeUserName" },
+        { label: "鎻愪氦鏃堕棿", prop: "writeTime" },
+        {
+          label: "鎻愪氦鐘舵��",
+          prop: "state",
+          width: "100px",
+          dataType: "tag",
+          formatData: (params) => {
+            if (params == 0) {
+              return "寰呮彁浜�";
+            } else {
+              return "宸叉彁浜�";
+            }
+          },
+          formatType: (params) => {
+            if (params == 0) {
+              return "danger";
+            } else {
+              return "success";
+            }
+          },
+        },
+        { label: "瀹℃牳浜�", prop: "examineUser" },
+        { label: "瀹℃牳鏃堕棿", prop: "examineTime" },
+        {
+          label: "瀹℃牳鐘舵��",
+          prop: "isExamine",
+          width: "100px",
+          dataType: "tag",
+          formatData: (params) => {
+            if (params == 0) {
+              return "涓嶉�氳繃";
+            } else if (params == 1) {
+              return "閫氳繃";
+            } else {
+              return null
+            }
+          },
+          formatType: (params) => {
+            if (params == 0) {
+              return "danger";
+            } else if (params == 1) {
+              return "success";
+            } else {
+              return null
+            }
+          },
+        },
+        { label: "瀹℃牳澶囨敞", prop: "examineTell" },
+        { label: "鎵瑰噯浜�", prop: "ratifyUser" },
+        { label: "鎵瑰噯鏃堕棿", prop: "ratifyTime" },
+        {
+          label: "鎵瑰噯鐘舵��",
+          prop: "isRatify",
+          width: "100px",
+          dataType: "tag",
+          formatData: (params) => {
+            if (params == 0) {
+              return "涓嶆壒鍑�";
+            } else if (params == 1) {
+              return "鎵瑰噯";
+            } else {
+              return null
+            }
+          },
+          formatType: (params) => {
+            if (params == 0) {
+              return "danger";
+            } else if (params == 1) {
+              return "success";
+            } else {
+              return null
+            }
+          },
+        },
+        { label: "鎵瑰噯澶囨敞", prop: "ratifyTell" },
+        {
+          fixed: "right",
+          dataType: "slot",
+          slot: "action",
+          width: '360px',
+          label: "鎿嶄綔"
+        }
+      ],
+      userName: '',
     }
   },
   computed: {
-    headers() {
-      return {
-        'token': sessionStorage.getItem('token')
-      }
-    },
+    ...mapGetters(["nickName", "userId"]),
     action() {
-      return this.javaApi + this.$api.insReport.upAll
+      return this.javaApi + '/insReport/upAll'
     },
     fileAction() {
-      return this.javaApi + this.$api.insOrderPlan.uploadFile
+      return this.javaApi + '/insOrderPlan/uploadFile'
     },
     fileAction1() {
-      return this.javaApi + this.$api.insReport.inReport
+      return this.javaApi + '/insReport/inReport'
     }
   },
   mounted() {
-    this.entityCopy = this.HaveJson(this.componentData.entity)
-    this.userName = JSON.parse(localStorage.getItem("user")).name
-    this.getPower()
     this.refreshTable()
   },
   methods: {
-    handleChange(arr){
+    refreshTable() {
+      this.tableLoading = true
+      pageInsReport({
+        ...this.page, ...this.entity
+      }).then(res => {
+        this.tableLoading = false
+        this.page.total = res.data.body.total
+        this.valueTableData = res.data.body.records
+      })
+    },
+    pagination({ page, limit }) {
+      this.page.current = page;
+      this.page.size = limit;
+      this.refreshTable();
+    },
+    refresh() {
+      this.resetForm('entity')
+      this.refreshTable();
+    },
+    handleChange(arr) {
       this.mutiList = arr
     },
     // 鏌ョ湅妫�楠屾暟鎹�
-    viewInspectInfo (row) {
+    viewInspectInfo(row) {
       //褰撳墠妫�楠屼换鍔$殑妫�楠屼汉鍒楄〃
       let inspectorList = []
-      if(row.userName){
+      if (row.userName) {
         inspectorList = row.userName.split(',')
       }
-      let user = JSON.parse(localStorage.getItem('user'))
-      if(user){
-        inspectorList.push(user.name)
-      }
-      this.inspectorList = inspectorList
-      this.state = 3;
-      this.typeSource = row.typeSource
-      this.orderId = row.insOrderId
-      this.sonLaboratory = row.sonLaboratory
-    },
-    goback() {
-      this.state = 0
-      this.refreshTable('page')
-    },
-    handleFileLook (row) {
-      this.filesLookInfo = row
-      this.filesDialogVisible = true
-      this.fileComponentData.entity.insOrderId = row.insOrderId
-      this.$nextTick(() => {
-        this.$refs['fileList'].selectList()
+      inspectorList.push(this.nickName)
+      this.$router.push({
+        path: "/inspectionTask/inspection",
+        query: {
+          sonLaboratory: row.sonLaboratory,
+          state: 3,
+          typeSource: row.typeSource,
+          orderId: row.insOrderId,
+          inspectorList: inspectorList,
+        },
       })
     },
-    closeFilesLook () {
+    // 鎵撳紑鏌ョ湅闄勪欢寮规
+    handleFileLook(row) {
+      this.filesLookInfo = row
+      this.filesDialogVisible = true
+      this.getFileList()
+    },
+    // 鏌ヨ闄勪欢鏌ョ湅鍒楄〃鍥炶皟
+    getFileList() {
+      this.tableLoadingFile = true
+      getFileList({ insOrderId: this.filesLookInfo.insOrderId,current: -1, size: -1 }).then(res => {
+        this.tableLoadingFile = false
+        if (res.code === 200) {
+          this.tableDataFile = res.data.records
+        }
+      }).catch(err => {
+        this.tableLoadingFile = false
+      })
+    },
+    closeFilesLook() {
       this.filesDialogVisible = false
     },
-    handleSuccessUp(response, ) {
+    handleSuccessUp(response,) {
       this.upLoading = false;
       if (response.code == 200) {
         this.$message.success('涓婁紶鎴愬姛');
-        this.$refs.fileList.selectList()
+        this.getFileList()
       }
     },
-    handleSuccessUp1(response, ) {
+    handleSuccessUp1(response,) {
       if (response.code == 200) {
         this.$message.success('涓婁紶鎴愬姛');
       }
     },
-    handleDown(row){
-      this.$axios.post(this.$api.insOrderPlan.downFile, {
+    // 涓嬭浇闄勪欢鐨勬枃浠�
+    handleDown(row) {
+      downFile({
         id: row.id,
       }).then(res => {
-        if (res.code === 200) {
-          let url = '';
-          if(res.data.type==1){
-            url = this.javaApi+'/img/'+res.data.fileUrl
-            file.downloadIamge(url,row.fileName)
-          }else{
-            url = this.javaApi+'/word/'+res.data.fileUrl
-            const link = document.createElement('a');
-            link.href = url;
-            link.download = row.fileName;
-            link.click();
-          }
-        }
+        this.$download.saveAs(res.data.fileUrl, row.fileName);
       }).catch(error => {
 
       })
     },
-    // 鍒锋柊椤甸潰
-    refreshView () {
-      this.InspectionKey++
+    // 鍒犻櫎闄勪欢鏂囦欢
+    delete(row) {
+      this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        this.tableLoadingFile = true
+        delFile({ id: row.id }).then(res => {
+          this.tableLoadingFile = false
+          this.$message.success('鍒犻櫎鎴愬姛')
+          this.getFileList()
+        }).catch(err => {
+          this.tableLoadingFile = false
+          console.log('err---', err);
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '宸插彇娑堝垹闄�'
+        });
+      })
     },
     // 鏌ョ湅浜т笟閾句俊鎭�
-    openInfoDialog (row) {
+    openInfoDialog(row) {
       this.showInfoDialog = true
       this.$nextTick(() => {
         this.$refs.showInfoDialog.getInfo(row.ifsInventoryId)
       })
     },
-    handleDowns(){
-      if(this.mutiList.length==0){
+    handleDowns() {
+      if (this.mutiList.length == 0) {
         this.$message.error('璇烽�夋嫨鎶ュ憡')
         return
       }
-      let str = this.mutiList.map(m=>m.id).join(',')
+      let str = this.mutiList.map(m => m.id).join(',')
       this.outLoading = true
-      this.$axios.get(this.$api.insReport.downAll+'?ids='+str).then(res => {
+      downAll({ ids: str }).then(res => {
         this.outLoading = false
-        this.$message.success('瀵煎嚭鎴愬姛')
-        // const blob = new Blob([res],{ type: 'application/octet-stream' });
-        // const url = URL.createObjectURL(blob);
-        // const link = document.createElement('a');
-        // link.href = url;
-        // link.download = '鎶ュ憡.zip';
-        // link.click();
-        const link = document.createElement('a');
-        link.href = this.javaApi + res.message;
-        link.target = '_blank';
-        document.body.appendChild(link);
-        link.click();
+        this.$download.zip(res.data, '鎶ュ憡.zip');
+      }).catch(() => {
+        this.outLoading = false
+      })
+
+    },
+    // 鎶ヨ〃瀵煎嚭
+    handleExport() {
+      this.outExportLoading = true
+      reportAllExport({
+        ...this.entity
+      }).then(res => {
+        this.outExportLoading = false
+        const blob = new Blob([res], { type: 'application/octet-stream' });
+        this.$download.saveAs(blob, "鎶ュ憡鎶ヨ〃瀵煎嚭.xlsx");
       })
     },
-    beforeUpload(file){
+    beforeUpload(file) {
       const isZip = file.type === 'application/zip' || file.name.endsWith('.zip');
       if (!isZip) {
         this.$message.error('涓婁紶鏂囦欢鍙兘鏄� ZIP 鏍煎紡!');
       }
-      if(isZip){
+      if (isZip) {
         this.inLoading = true;
       }
       return isZip;
     },
     fileBeforeUpload(file) {
       let flag = true
+      console.log('file----', file)
       if (file.size > 1024 * 1024 * 10) {
         this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
         this.$refs.upload.clearFiles()
@@ -748,135 +648,65 @@
         return Promise.reject(flag); //姝g‘鐨勭粓姝�
       }
     },
-    handleSuccess(response,){
+    handleSuccess(response,) {
       this.inLoading = false;
       if (response.code == 200) {
         this.$message.success('瀵煎叆鎴愬姛')
         this.refreshTable()
-      }else{
+      } else {
         this.$message.error(response.message)
       }
     },
-    onError(err, file, fileList,type) {
+    onError(err, file, fileList, type) {
       this.$message.error('涓婁紶澶辫触')
       this.$refs.upload.clearFiles()
     },
-    onError1(err, file, fileList,type) {
+    onError1(err, file, fileList, type) {
       this.$message.error('涓婁紶澶辫触')
       this.$refs.upload1.clearFiles()
-    },
-    refreshTable(e) {
-      this.tableLoading = false
-      this.$axios.post(this.$api.insReport.pageInsReport, {
-        page: this.page,
-        entity: this.componentData.entity
-      }, {
-        headers: {
-          'Content-Type': 'application/json'
-        }
-      }).then(res => {
-        this.tableLoading = false
-        if (res.code === 201) {
-          return
-        }
-        this.total = res.data.body.total
-        this.valueTableData = res.data.body.records
-      })
-    },
-    handleSizeChange(val) {
-      this.page.size = val
-      this.refreshTable();
-    },
-    handleCurrentChange(val) {
-      this.page.current = val
-      this.refreshTable();
-    },
-    refresh() {
-      this.componentData.entity = this.HaveJson(this.entityCopy)
-      this.refreshTable();
-    },
-    async handleWeave(row) {
-      let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS
-      fileName = fileName.replace('/word/','')
-      const userName = JSON.parse(localStorage.getItem("user")).name;
-      //鍙傝�僾abOnlyOffice缁勪欢鍙傛暟閰嶇疆
-      const { href } = this.$router.resolve({
-        path: `/wordEdit`,
-        query: {
-          url: this.javaApi + "/word/" + fileName,
-          isEdit: true,
-          fileType: "docx",
-          title: fileName,
-          lang: 'zh-CN',
-          isPrint: true,
-          user_id: 1,
-          user_name: userName,
-          editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName
-        }
-      })
-      window.open(href, '_blank');
-    },
-    // 鏉冮檺鍒嗛厤
-    getPower(radio) {
-      let power = JSON.parse(sessionStorage.getItem('power'))
-      let edit = false
-      let up = false
-      let res = false
-      let sub = false
-      let issued = true
-      let approve = true
-      for (var i = 0; i < power.length; i++) {
-        if (power[i].menuMethod == 'upReportFile') {
-          edit = true
-        }
-        if (power[i].menuMethod == 'inReport') {
-          up = true
-        }
-        if (power[i].menuMethod == 'upReportUrl') {
-          res = true
-        }
-        if (power[i].menuMethod == 'writeReport') {
-          sub = true
-        }
-        if (power[i].menuMethod == 'ratifyReport') {
-          approve = true
-        }
-        if (power[i].menuMethod == 'examineReport') {
-          issued = true
-        }
-      }
-      if (!approve) {
-        this.componentData.do.splice(6, 1)
-      }
-      if (!issued) {
-        this.componentData.do.splice(5, 1)
-      }
-      if (!sub) {
-        this.componentData.do.splice(4, 1)
-      }
-      if (!res) {
-        this.componentData.do.splice(3, 1)
-      }
-      if (!up) {
-        this.componentData.do.splice(2, 1)
-      }
-      if (!edit) {
-        this.componentData.do.splice(0, 1)
-      }
     },
     confirmClaim() {
       // console.log(this.$refs.Word.getValue())
     },
-    playOrder(num) {
-      this.activeFace = num
-    },
-    async selectAllByOne(row) {
+    selectAllByOne(row) {
       this.isCopper = row.isCopper
       this.customsInspection = row
       this.activeFace = 2;
       this.examine = 1;
       this.isReport = 1
       this.currentId = parseInt(row.insOrderId)
+      switch (row.isCopper) {
+        case 0:
+          // 鍘熸潗鏂�
+          this.$router.push({
+            path: "/materialOrder/customsInspectionView", query: {
+              customsInspection: row,
+              active: this.activeFace,
+              currentId: row.insOrderId,
+              isReport: this.isReport
+            }
+          });
+          break;
+        case null:
+          // 鎴愬搧
+          this.$router.push({
+            path: "/productOrder/addView", query: {
+              examine: this.examine,
+              active: this.activeFace,
+              currentId: row.insOrderId
+            }
+          });
+          break;
+        case 1:
+          // 閾滄潗
+          this.$router.push({
+            path: "/materialOrder/CopperView", query: {
+              active: this.activeFace,
+              currentId: row.insOrderId
+            }
+          });
+          break;
+      }
     },
     download(row) {
       let url = row.urlS ? row.urlS : row.url;
@@ -888,7 +718,7 @@
     },
     // 杩樺師鎿嶄綔
     handleRestore(row) {
-      this.$axios.post(this.$api.insReport.upReportUrl, {
+      upReportUrl({
         id: row.id
       }).then(res => {
         if (res.code === 200) {
@@ -900,14 +730,14 @@
     // 瀹℃牳鎸夐挳
     handleIssued(row) {
       this.currentInfo = row;
-      let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS
+      let fileName = (row.urlS === null || row.urlS === '') ? row.url : row.urlS
       let fileType = "docx"
       if (row.tempUrlPdf != null || row.tempUrlPdf === '') {
         fileName = row.tempUrlPdf
         fileType = "pdf"
       }
-      fileName = fileName.replace('/word/','')
-      const userName = JSON.parse(localStorage.getItem("user")).name;
+      fileName = fileName.replace('/word/', '')
+      const userName = this.nickName
       this.option = {
         url: this.javaApi + "/word/" + fileName,
         isEdit: false,
@@ -921,30 +751,18 @@
       }
       this.issuedVisible = true;
     },
-    // 鏌ョ湅pdf鎶ュ憡
-    viewIssuedPdf(row) {
-      this.currentInfo = row;
-      let url = row.tempUrlPdf
-      if(url){
-        url = url.split('.')[0]+'.pdf'
-        const link = document.createElement('a');
-        link.href = this.javaApi + url;
-        link.target = '_blank';
-        document.body.appendChild(link);
-        link.click();
-      }
-    },
     // 鏌ョ湅鎶ュ憡
     viewIssued(row) {
+      console.log('this.javaApi', this.javaApi)
       this.currentInfo = row;
-      let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS
+      let fileName = (row.urlS === null || row.urlS === '') ? row.url : row.urlS
       let fileType = "docx"
       if (row.tempUrlPdf != null || row.tempUrlPdf === '') {
         fileName = row.tempUrlPdf
         fileType = "pdf"
       }
-      fileName = fileName.replace('/word/','')
-      const userName = JSON.parse(localStorage.getItem("user")).name;
+      fileName = fileName.replace('/word/', '')
+      const userName = this.nickName
       this.option = {
         url: this.javaApi + "/word/" + fileName,
         isEdit: false,
@@ -966,11 +784,8 @@
         type: 'warning'
       }).then(() => {
         this.upLoad = true
-        this.$axios.post(this.$api.insReport.sendBackTask+'?id='+row.id).then(res => {
+        sendBackTask({ id: row.id }).then(res => {
           this.upLoad = false
-          if (res.code === 201) {
-            return
-          }
           this.$message.success('閫�鍥炴垚鍔燂紒')
           this.refreshTable('page')
         }).catch(err => {
@@ -984,21 +799,18 @@
       });
     },
     // 瀹℃牳閫氳繃
-    submitAddApprover () {
+    submitAddApprover() {
       if (!this.approver) {
         this.$message.error('璇烽�夋嫨瀹℃壒浜�')
         return
       }
       this.loadingIssued = true;
-      this.$axios.post(this.$api.insReport.examineReport, {
+      examineReport({
         id: this.currentInfo.id,
         userId: this.approver,
         isExamine: 1
       }).then(res => {
         this.loadingIssued = false;
-        if (res.code === 201) {
-          return
-        }
         this.$message.success('鎻愪氦鎴愬姛')
         this.refreshTable('page')
         this.currentInfo = null;
@@ -1009,7 +821,7 @@
         this.loadingIssued = false;
       })
     },
-    closeAddApproverDia () {
+    closeAddApproverDia() {
       this.addApproverDia = false
       this.approver = ''
     },
@@ -1020,31 +832,28 @@
     },
     // 鑾峰彇浜哄憳鍒楄〃
     getAuthorizedPerson() {
-      this.$axios.get(this.$api.user.selectQualityUserList).then(res => {
-        let data = []
-        let userName = JSON.parse(localStorage.getItem("user")).name;
-        res.data.forEach(a => {
-          // if(a.name !== userName) {
+      selectUserCondition({ type: 1 }).then((res) => {
+        let data = [];
+        res.data.forEach((a) => {
           data.push({
             label: a.name,
-            value: a.id
-          })
-          // }
-        })
-        this.approverList = data
+            value: a.id,
+          });
+        });
+        this.approverList = data;
       })
     },
     // 鎵瑰噯鎸夐挳
     handleApprove(row) {
       this.currentInfo = row;
-      let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS
+      let fileName = (row.urlS === null || row.urlS === '') ? row.url : row.urlS
       let fileType = "docx"
       if (row.tempUrlPdf != null || row.tempUrlPdf === '') {
         fileName = row.tempUrlPdf
         fileType = "pdf"
       }
-      fileName = fileName.replace('/word/','')
-      const userName = JSON.parse(localStorage.getItem("user")).name;
+      fileName = fileName.replace('/word/', '')
+      const userName = this.nickName
       this.option = {
         url: this.javaApi + "/word/" + fileName,
         isEdit: false,
@@ -1061,22 +870,20 @@
     // 鎵瑰噯閫氳繃
     subApprove() {
       this.loadingApprove = true;
-      this.$axios.post(this.$api.insReport.ratifyReport, {
+      ratifyReport({
         id: this.currentInfo.id,
         isRatify: 1
       }).then(res => {
         this.loadingApprove = false;
-        if (res.code == 201) {
-          this.$message.error('鎵瑰噯澶辫触')
-          return
-        }
         this.$message.success('宸叉壒鍑�')
         this.refreshTable('page')
         this.currentInfo = null;
         this.approveVisible = false;
+      }).catch(() => {
+        this.loadingApprove = false;
       })
     },
-    handle (row) {
+    handle(row) {
       this.getAuthorizedPerson()
       this.currentInfo = row;
       this.addVerifyDia = true
@@ -1084,14 +891,11 @@
     // 鎻愪氦瀹℃牳浜烘搷浣�
     handleSubmit(row) {
       this.loadingVerify = true
-      this.$axios.post(this.$api.insReport.writeReport, {
+      writeReport({
         id: this.currentInfo.id,
         userId: this.verifyUser,
       }).then(res => {
         this.loadingVerify = false
-        if (res.code === 201) {
-          return
-        }
         this.addVerifyDia = false
         this.$message.success('鎻愪氦鎴愬姛')
         this.refreshTable('page')
@@ -1100,7 +904,7 @@
         this.$message.error('鎻愪氦澶辫触')
       })
     },
-    closeAddVerifyDia () {
+    closeAddVerifyDia() {
       this.addVerifyDia = false
       this.verifyUser = ''
     },
@@ -1110,15 +914,12 @@
         return this.$message.error('璇疯緭鍏ュ師鍥�')
       }
       this.loadingIssuedReason = true;
-      this.$axios.post(this.$api.insReport.examineReport, {
+      examineReport({
         id: this.currentInfo.id,
         isExamine: 0,
         examineTell: this.reason
       }).then(res => {
         this.loadingIssuedReason = false;
-        if (res.code === 201) {
-          return
-        }
         this.$message.success('鎿嶄綔鎴愬姛')
         this.refreshTable('page')
         this.currentInfo = null;
@@ -1136,15 +937,12 @@
         return this.$message.error('璇疯緭鍏ュ師鍥�')
       }
       this.loadingApproveReason = true
-      this.$axios.post(this.$api.insReport.ratifyReport, {
+      ratifyReport({
         id: this.currentInfo.id,
         isRatify: 0,
         examineTell: this.reason
       }).then(res => {
         this.loadingApproveReason = false
-        if (res.code === 201) {
-          return
-        }
         this.$message.success('鎿嶄綔鎴愬姛')
         this.refreshTable('page')
         this.currentInfo = null;

--
Gitblit v1.9.3