From 96f5e06ffbc743dae63db27064140832d752a3f9 Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期一, 24 二月 2025 19:48:58 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 src/views/business/reportPreparation/index.vue |  953 +++++++++++++++++++++++------------------------------------
 1 files changed, 374 insertions(+), 579 deletions(-)

diff --git a/src/views/business/reportPreparation/index.vue b/src/views/business/reportPreparation/index.vue
index 3d9209a..60a78b9 100644
--- a/src/views/business/reportPreparation/index.vue
+++ b/src/views/business/reportPreparation/index.vue
@@ -1,138 +1,67 @@
 <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" @click="refresh()">閲嶇疆</el-button>
+          <el-button size="mini" type="primary" @click="refreshTable()">鏌ヨ</el-button>
+          <el-button :loading="outLoading" size="mini" type="primary" @click="handleDowns">鎵归噺涓嬭浇</el-button>
+        </el-form-item>
+      </el-form>
+    </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 || userName !== scope.row.writeUserName">涓婁紶</el-button>
+          </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" 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">
@@ -229,17 +158,8 @@
         <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">
@@ -251,33 +171,22 @@
         <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;">
+      <div style="margin-bottom: 10px">
         <el-upload ref='upload'
                    :action="fileAction"
                    :auto-upload="true"
                    :before-upload="fileBeforeUpload" :data="{orderId: filesLookInfo.insOrderId}"
-                   :headers="headers" :on-error="onError"
+                   :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" @pagination="paginationFile" height="500px"
+                  key="tableDataFile" :page="pageFile" :tableLoading="tableLoadingFile"></lims-table>
     </el-dialog>
   </div>
 </template>
@@ -286,206 +195,33 @@
 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
+} 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},
+  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,
       },
       page: {
         current: 1,
         size: 20,
+        total: 0
       },
-      total: null,
-      entityCopy: {},
       upIndex: 0,
       statusList: [],
       claimVisible: false,
@@ -542,78 +278,214 @@
       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);
+              }
+            },
+          ]
+        }
+      ],
+      pageFile: {
+        total: 0,
+        size: 10,
+        current: 1
       },
       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 {
+              return "閫氳繃";
+            }
+          },
+          formatType: (params) => {
+            if (params == 0) {
+              return "danger";
+            } else {
+              return "success";
+            }
+          },
+        },
+        { label: "瀹℃牳澶囨敞", prop: "examineTell" },
+        { label: "鎵瑰噯浜�", prop: "ratifyUser" },
+        { label: "鎵瑰噯鏃堕棿", prop: "ratifyTime" },
+        {
+          label: "鎵瑰噯鐘舵��",
+          prop: "isRatify",
+          width: "100px",
+          dataType: "tag",
+          formatData: (params) => {
+            if (params == 0) {
+              return "涓嶆壒鍑�";
+            } else {
+              return "鎵瑰噯";
+            }
+          },
+          formatType: (params) => {
+            if (params == 0) {
+              return "danger";
+            } else {
+              return "success";
+            }
+          },
+        },
+        { 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 + '/unqualifiedHandler/uploadFileByUnqualified'
     },
     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: {
+    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
     },
@@ -624,27 +496,40 @@
       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
+      inspectorList.push(this.nickName)
+      this.$router.push({
+        path: "/inspectionTask/inspection",
+        query: {
+          sonLaboratory: row.sonLaboratory,
+          state: 3,
+          typeSource: row.typeSource,
+          orderId: row.insOrderId,
+          inspectorList: inspectorList,
+        },
+      })
     },
-    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()
+      this.getFileList()
+    },
+    // 鏌ヨ闄勪欢鏌ョ湅鍒楄〃鍥炶皟
+    getFileList() {
+      this.tableLoadingFile = true
+      getFileList({insOrderId: this.filesLookInfo.insOrderId}).then(res => {
+        this.tableLoadingFile = false
+        if (res.code === 200) {
+          this.tableDataFile = res.data.records
+          this.pageFile.total = res.data.total
+        }
+      }).catch(err => {
+        this.tableLoadingFile = false
       })
+    },
+    paginationFile(page) {
+      this.pageFile.size = page.limit
+      this.getFileList()
     },
     closeFilesLook () {
       this.filesDialogVisible = false
@@ -653,7 +538,7 @@
       this.upLoading = false;
       if (response.code == 200) {
         this.$message.success('涓婁紶鎴愬姛');
-        this.$refs.fileList.selectList()
+        this.getFileList()
       }
     },
     handleSuccessUp1(response, ) {
@@ -661,8 +546,9 @@
         this.$message.success('涓婁紶鎴愬姛');
       }
     },
+    // 涓嬭浇闄勪欢鐨勬枃浠�
     handleDown(row){
-      this.$axios.post(this.$api.insOrderPlan.downFile, {
+      downFile({
         id: row.id,
       }).then(res => {
         if (res.code === 200) {
@@ -682,9 +568,23 @@
 
       })
     },
-    // 鍒锋柊椤甸潰
-    refreshView () {
-      this.InspectionKey++
+    // 鍒犻櫎闄勪欢鏂囦欢
+    delete(row) {
+      this.$confirm('鏄惁鍒犻櫎褰撳墠鏁版嵁?', "璀﹀憡", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning"
+      }).then(() => {
+        delfile({ id: row.id }).then(res => {
+          if (res.code === 500) {
+            return
+          }
+          this.$message.success('鍒犻櫎鎴愬姛')
+          this.getList()
+        }).catch(e => {
+          this.$message.error('鍒犻櫎澶辫触')
+        })
+      }).catch(() => { })
     },
     // 鏌ョ湅浜т笟閾句俊鎭�
     openInfoDialog (row) {
@@ -700,7 +600,7 @@
       }
       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' });
@@ -765,118 +665,48 @@
       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/customsInspection", query: {
+              customsInspection: row,
+              active: this.activeFace,
+              currentId: row.insOrderId,
+              isReport: this.isReport
+            }
+          });
+          break;
+        case null:
+          // 鎴愬搧
+          this.$router.push({
+            path: "/productOrder/add", query: {
+              examine: this.examine,
+              active: this.activeFace,
+              currentId: row.insOrderId
+            }
+          });
+          break;
+        case 1:
+          // 閾滄潗
+          this.$router.push({
+            path: "/materialOrder/copperOrder", 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) {
@@ -907,7 +737,7 @@
         fileType = "pdf"
       }
       fileName = fileName.replace('/word/','')
-      const userName = JSON.parse(localStorage.getItem("user")).name;
+      const userName = this.nickName
       this.option = {
         url: this.javaApi + "/word/" + fileName,
         isEdit: false,
@@ -921,19 +751,6 @@
       }
       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) {
       this.currentInfo = row;
@@ -944,7 +761,7 @@
         fileType = "pdf"
       }
       fileName = fileName.replace('/word/','')
-      const userName = JSON.parse(localStorage.getItem("user")).name;
+      const userName = this.nickName
       this.option = {
         url: this.javaApi + "/word/" + fileName,
         isEdit: false,
@@ -966,11 +783,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 => {
@@ -990,15 +804,12 @@
         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;
@@ -1020,18 +831,15 @@
     },
     // 鑾峰彇浜哄憳鍒楄〃
     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: 0 }).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;
       })
     },
     // 鎵瑰噯鎸夐挳
@@ -1044,7 +852,7 @@
         fileType = "pdf"
       }
       fileName = fileName.replace('/word/','')
-      const userName = JSON.parse(localStorage.getItem("user")).name;
+      const userName = this.nickName
       this.option = {
         url: this.javaApi + "/word/" + fileName,
         isEdit: false,
@@ -1061,15 +869,11 @@
     // 鎵瑰噯閫氳繃
     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;
@@ -1084,14 +888,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')
@@ -1110,15 +911,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 +934,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