From 904710d226d8dd5253937cbd572ca208be804ea5 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期三, 26 二月 2025 17:10:28 +0800
Subject: [PATCH] Merge branch 'dev' of http://114.132.189.42:9002/r/lims-ruoyi-before into dev

---
 src/views/CNAS/process/demand/index.vue |  878 ++++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 726 insertions(+), 152 deletions(-)

diff --git a/src/views/CNAS/process/demand/index.vue b/src/views/CNAS/process/demand/index.vue
index 137aba5..9667ffa 100644
--- a/src/views/CNAS/process/demand/index.vue
+++ b/src/views/CNAS/process/demand/index.vue
@@ -1,163 +1,737 @@
-<style lang="scss" scoped>
-.standard_method {
-    padding: 20px;
-}
-.search {
-  background-color: #fff;
-  height: 80px;
-  display: flex;
-  align-items: center;
-}
-
-.search_thing {
-//   width: 350px;
-  display: flex;
-  align-items: center;
-}
-
-.search_label {
-  width: 110px;
-  font-size: 14px;
-  text-align: right;
-}
-
-.search_input {
-  width: calc(100% - 110px);
-}
-
-.table {
-  margin-top: 10px;
-  background-color: #fff;
-  width: calc(100% - 40px);
-  height: calc(100% - 60px - 80px - 10px - 40px);
-  padding: 20px;
-}
-</style>
-
 <template>
-    <div class="standard_method">
-        <el-form :model="model" :inline="true" label-width="auto">
-            <el-form-item label="璇曟牱鍚嶇О锛�">
-                <el-input size="small"
-                    placeholder="璇疯緭鍏�" 
-                    clearable 
-                    @change="refreshTable()"
-                />
-            </el-form-item>
-            <el-form-item label="濮旀墭鍗曚綅锛�">
-                <el-input size="small"
-                    placeholder="璇疯緭鍏�" 
-                    clearable 
-                    @change="refreshTable()"
-                />
-            </el-form-item>
-            <el-form-item label="鐢熶骇鍗曚綅锛�">
-                <el-input size="small"
-                    placeholder="璇疯緭鍏�" 
-                    clearable 
-                    @change="refreshTable()"
-                />
-            </el-form-item>
-            <el-form-item label="濮旀墭浜猴細">
-                <el-input size="small"
-                    placeholder="璇疯緭鍏�" 
-                    clearable 
-                    @change="refreshTable()"
-                />
-            </el-form-item>
-            <el-form-item>
-                <el-button size="small">
-                    閲� 缃�
-                </el-button>
-                <el-button size="small" type="primary">
-                    鏌� 璇�
-                </el-button>
-            </el-form-item>
-        </el-form>
-        <div style="margin-bottom: 10px">
-            <el-button size="small" type="primary" icon="el-icon-plus" @click="openDialog('add')">
-                鏂� 澧�
-            </el-button>
-        </div>
-        <lims-table
-            :column="column"
-            :tableData="tableData"
-            :height="'calc(100vh - 250px)'"
-            :page="page"
-        />
-        <Edit ref="editRef" />
+  <div class="app-container">
+    <div style="display: flex;justify-content: space-between;">
+      <el-form :model="entitySearch" ref="entitySearch" size="small" :inline="true">
+        <el-form-item label="璇曟牱鍚嶇О" prop="sampleName">
+          <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="entitySearch.sampleName"
+                    @keyup.enter.native="refreshTable"></el-input>
+        </el-form-item>
+        <el-form-item label="濮旀墭鍗曚綅" prop="commissionUnit">
+          <el-input v-model="entitySearch.commissionUnit" clearable placeholder="璇疯緭鍏�" size="small"
+                    @keyup.enter.native="refreshTable()"></el-input>
+        </el-form-item>
+        <el-form-item label="鐢熶骇鍗曚綅" prop="production">
+          <el-input v-model="entitySearch.production" clearable placeholder="璇疯緭鍏�" size="small"
+                    @keyup.enter.native="refreshTable()"></el-input>
+        </el-form-item>
+        <el-form-item label="濮旀墭浜�" prop="commissionUser">
+          <el-input v-model="entitySearch.commissionUser" clearable placeholder="璇疯緭鍏�" size="small"
+                    @keyup.enter.native="refreshTable()"></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button icon="el-icon-refresh" size="mini" @click="refresh">閲� 缃�</el-button>
+          <el-button type="primary" icon="el-icon-search" size="mini" @click="refreshTable">鏌� 璇�</el-button>
+        </el-form-item>
+      </el-form>
     </div>
+    <div style="text-align: right; margin-bottom: 20px">
+      <el-button size="medium" type="primary" @click="goAdd">鏂板</el-button>
+    </div>
+    <div class="table">
+      <el-table v-loading="tableListLoading" :data="tableList" height="530" style="width: 100%">
+        <el-table-column align="center" label="搴忓彿" type="index" width="60"></el-table-column>
+        <el-table-column label="璇曟牱鍚嶇О" prop="sampleName" show-overflow-tooltip width="120"></el-table-column>
+        <el-table-column label="濮旀墭缂栧彿" prop="entrustCode" show-overflow-tooltip width="120"></el-table-column>
+        <el-table-column label="濮旀墭鏃堕棿" prop="commissionDate" width="120"></el-table-column>
+        <el-table-column label="鍨嬪彿" prop="modelNo"></el-table-column>
+        <el-table-column label="濮旀墭鍗曚綅" prop="commissionUnit" show-overflow-tooltip width="120"></el-table-column>
+        <el-table-column label="鐢熶骇鍗曚綅" prop="production" show-overflow-tooltip width="120"></el-table-column>
+        <el-table-column label="濮旀墭浜�" prop="commissionUser"></el-table-column>
+        <el-table-column label="鏍峰搧鏁伴噺" prop="quantity"></el-table-column>
+        <el-table-column label="鏍峰搧鐘舵��" prop="sampleStatus"></el-table-column>
+        <el-table-column label="鏄惁鐣欐牱" prop="isLeave">
+          <template slot-scope="scope">
+            <span v-if="scope.row.isLeave === 1">鏄�</span>
+            <span v-if="scope.row.isLeave === 0">鍚�</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="鏍峰搧澶勭悊鏂瑰紡" prop="processing">
+          <template slot-scope="scope">
+            <span v-if="scope.row.processing === 1">瀹為獙瀹ゅ鐞�</span>
+            <span v-if="scope.row.processing === 0">濮旀墭鍗曚綅鍙栧洖</span>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="鎿嶄綔" width="240" fixed="right">
+          <template slot-scope="scope">
+            <el-button size="mini" type="text" @click="goUpdate(scope.row)">缂栬緫</el-button>
+            <el-button size="mini" type="text" @click="handleLook(scope.row)">鏌ョ湅</el-button>
+            <el-button size="mini" style="color:#F56C6C" type="text" @click="deleteOrder(scope.row)">鍒犻櫎</el-button>
+            <el-button size="mini" type="text" @click="openDownloadDia(scope.row)">涓嬭浇</el-button>
+            <el-upload ref='upload'
+                       :action="action"
+                       :data="{inspectionOrderId: scope.row.inspectionOrderId}" :headers="uploadHeader"
+                       :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" accept='image/jpg,image/jpeg,image/png,application/pdf,.doc,.docx,.xlsx'
+                       name="file" style="background: transparent;display: inline;margin-left: 4px">
+              <span style="color: #409EFF">涓婁紶</span>
+            </el-upload>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination :current-page="1" :page-size="pages.size" :page-sizes="[10, 20, 30, 50, 100]"
+                     :total="total1" layout="->,total, sizes, prev, pager, next"
+                     style="margin-top: 10px" background
+                     @size-change="handleSizeChange1" @current-change="handleCurrentChange1">
+      </el-pagination>
+    </div>
+    <el-dialog
+      :close-on-click-modal="false" :close-on-press-escape="false"
+      :visible.sync="orderRowsVisible" title="鏂板妫�楠屼换鍔″崟" width="1000px">
+      <div style="display: flex; align-items: center;margin-bottom: 10px">
+        <span style="width: 80px">濮旀墭缂栧彿锛�</span>
+        <el-input v-model="entity.entrustCode" clearable size="small" style="width: 300px;margin-right: 10px"></el-input>
+        <el-button size="small" type="primary" @click="searchTableData">鏌ヨ</el-button>
+        <el-button size="small" @click="refreshTableData">閲� 缃�</el-button>
+      </div>
+      <el-table v-loading="tableLoading" :data="tableData" height="550" style="width: 100%">
+        <el-table-column align="center" label="搴忓彿" type="index" width="60"></el-table-column>
+        <el-table-column label="濮旀墭缂栧彿" prop="entrustCode"></el-table-column>
+        <el-table-column label="鏍峰搧鍚嶇О" prop="sample"></el-table-column>
+        <el-table-column align="center" label="鎿嶄綔">
+          <template slot-scope="scope">
+            <el-button align="center" size="mini" type="text" @click="goAddOrder(scope.row)">鏂板濮旀墭鍗�</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination :current-page="1" :page-size="tableSearch.size" :page-sizes="[10, 20, 30, 50, 100]"
+                     :total="total" layout="->,total, sizes, prev, pager, next"
+                     style="margin-top: 10px" background
+                     @size-change="handleSizeChange" @current-change="handleCurrentChange">
+      </el-pagination>
+    </el-dialog>
+    <el-dialog
+      :class="{downPdf:title=='涓嬭浇'}" :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      :modal="title!='涓嬭浇'" :title="title" :visible.sync="detailDialogVisible" top="20px" width="1200px">
+      <div style="max-height: 75vh;overflow-y: auto;">
+        <div id="dialogBody">
+          <table border="1" cellpadding="10" class="tables heads" style="border: 1px dashed black;">
+            <tr>
+              <td rowspan="2">
+                <img alt="" src="@/assets/logo/ZTTlogo.png" style="width: 80%;">
+              </td>
+              <td>
+                <p>璁板綍鍚嶇О锛氭楠屽鎵樺崟</p>
+              </td>
+              <td>
+                <p>淇濆瓨鏈熼檺锛�6骞�</p>
+              </td>
+            </tr>
+            <tr>
+              <td>
+                <p>璁板綍缂栧彿锛� ZTT/QR-16-04-a</p>
+              </td>
+              <td>
+                <p>褰掓。閮ㄩ棬锛氱患鍚堝</p>
+              </td>
+            </tr>
+          </table>
+          <h4 style="display: flex;align-items: center;flex-direction: column;justify-content: center;">
+            <span style="font-size: 28px;">妫� 楠� 濮� 鎵� 鍗�</span>
+          </h4>
+          <p v-if="operationType !== 'view'" style="margin-left: 560px;display: flex;align-items: center">
+            <span style="width: 100px">濮旀墭缂栧彿锛�</span>
+            <el-input v-model="currentInfo.entrustCode" clearable size="small"></el-input>
+          </p>
+          <p v-if="operationType === 'view'"  style="margin-top: 16px;margin-left: 600px;">濮旀墭缂栧彿锛歿{ currentInfo.entrustCode }}</p>
+          <table border="1" cellpadding="10" class="tables">
+            <tr>
+              <td colspan="2">
+                <p>璇曟牱鍚嶇О</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.sampleName" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ currentInfo.sampleName }}</td>
+              <td>
+                <p>濮旀墭鏃堕棿</p>
+              </td>
+              <td v-if="operationType !== 'view'">
+                <el-date-picker
+                  v-model="currentInfo.commissionDate"
+                  clearable
+                  format="yyyy-MM-dd"
+                  placeholder="閫夋嫨鏃ユ湡"
+                  size="small"
+                  style="width: 100%"
+                  type="date"
+                  value-format="yyyy-MM-dd">
+                </el-date-picker>
+              </td>
+              <td v-if="operationType === 'view'">{{ currentInfo.commissionDate }}</td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>鍨� 鍙�</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.modelNo" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ currentInfo.modelNo }}</td>
+              <td>
+                <p>濮旀墭鍗曚綅</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.commissionUnit" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ currentInfo.commissionUnit }}</td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>鐢熶骇鍗曚綅</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.production" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ currentInfo.production }}</td>
+              <td>
+                <p>濮旀墭浜�</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.commissionUser" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ currentInfo.commissionUser }}</td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>鏍峰搧鏁伴噺</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.quantity" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ currentInfo.quantity }}</td>
+              <td>
+                <p>鏍峰搧鐘舵��</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.sampleStatus" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ insStateList.find(m=>m.value==currentInfo.sampleStatus)?insStateList.find(m=>m.value==currentInfo.sampleStatus).label:'/' }}</td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>鏄惁鐣欐牱</p>
+              </td>
+              <td v-if="operationType !== 'view'">
+                <el-radio-group v-model="currentInfo.isLeave" v-removeAriaHidden>
+                  <el-radio :label="1">鏄�</el-radio>
+                  <el-radio :label="0">鍚�</el-radio>
+                </el-radio-group>
+              </td>
+              <td v-if="operationType === 'view'">
+                <span v-if="currentInfo.isLeave==1">鏄�</span>
+                <span v-else>鍚�</span>
+              </td>
+              <td>
+                <p>鏍峰搧澶勭悊鏂瑰紡</p>
+              </td>
+              <td v-if="operationType !== 'view'">
+                <el-radio-group v-model="currentInfo.processing" v-removeAriaHidden>
+                  <el-radio :label="0">濮旀墭鍗曚綅鍙栧洖</el-radio>
+                  <el-radio :label="1">瀹為獙瀹ゅ鐞�</el-radio>
+                </el-radio-group>
+              </td>
+              <td v-if="operationType === 'view'">
+                <span v-if="currentInfo.processing==0">濮旀墭鍗曚綅鍙栧洖</span>
+                <span v-else>瀹為獙瀹ゅ鐞�</span>
+              </td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>绾﹀畾瀹屾垚鏃堕棿(鎶ュ憡鏃ユ湡)</p>
+              </td>
+              <td v-if="operationType !== 'view'">
+                <el-date-picker
+                  v-model="currentInfo.appointed"
+                  clearable
+                  format="yyyy-MM-dd"
+                  placeholder="閫夋嫨鏃ユ湡"
+                  size="small"
+                  style="width: 100%"
+                  type="date"
+                  value-format="yyyy-MM-dd">
+                </el-date-picker>
+              </td>
+              <td v-if="operationType === 'view'">{{ currentInfo.appointed }}</td>
+              <td>
+                <p>鎶ュ憡鍙戦�佹柟寮�</p>
+              </td>
+              <td v-if="operationType !== 'view'">
+                <el-radio-group v-model="currentInfo.send" v-removeAriaHidden>
+                  <el-radio :label="1">鑷彇</el-radio>
+                  <el-radio :label="0">鍏朵粬</el-radio>
+                </el-radio-group>
+              </td>
+              <td v-if="operationType === 'view'">
+                <span v-if="currentInfo.send==1">鑷彇</span>
+                <span v-else>鍏朵粬</span>
+              </td>
+            </tr>
+            <el-button size="small" type="primary" @click="addOrderDetailList" v-if="operationType !== 'view'">娣诲姞</el-button>
+            <tr>
+              <td>
+                <p>搴忓彿</p>
+              </td>
+              <td>
+                <p>鏍峰搧缂栧彿</p>
+              </td>
+              <td>
+                <p>璇曢獙椤圭洰</p>
+              </td>
+              <td>
+                <p>妫�楠屼緷鎹�</p>
+              </td>
+              <td>
+                <p>澶囨敞</p>
+              </td>
+            </tr>
+            <tr v-for="(item,index) in currentInfo.orderDetailList" :key="index" >
+              <td>{{ index+1 }}</td>
+              <td v-if="operationType !== 'view'"><el-input v-model="item.sampleNumber" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ item.sampleNumber }}</td>
+              <td v-if="operationType !== 'view'"><el-input v-model="item.testItem" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ item.testItem }}</td>
+              <td v-if="operationType !== 'view'"><el-input v-model="item.testStandard" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ item.testStandard }}</td>
+              <td v-if="operationType !== 'view'"><el-input v-model="item.remark" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ item.remark }}</td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>鍒ゅ畾瑙勫垯</p>
+              </td>
+              <td v-if="operationType !== 'view'" colspan="3">
+                <el-radio-group v-model="currentInfo.criterionRule" v-removeAriaHidden>
+                  <el-radio :label="0">涓嶈�冭檻涓嶇‘瀹氬害</el-radio>
+                  <el-radio :label="1">鑰冭檻涓嶇‘瀹氬害</el-radio>
+                </el-radio-group>
+                <span v-if="currentInfo.criterionRule === 1"><el-input v-model="currentInfo.criterionRuleRemark" clearable size="small" style="width: 60px"></el-input>%</span>
+              </td>
+              <td v-if="operationType === 'view'" colspan="3">
+                <span v-if="currentInfo.criterionRule===0">涓嶈�冭檻涓嶇‘瀹氬害</span>
+                <span v-if="currentInfo.criterionRule===1">鑰冭檻涓嶇‘瀹氬害</span>
+                <span v-if="currentInfo.criterionRule===1">{{ currentInfo.criterionRuleRemark + '%' }}</span>
+              </td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>濮旀墭浜虹鍚�</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.commissionUser" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">
+                {{currentInfo.commissionUser}}
+              </td>
+              <td>
+                <p>濮旀墭鏃ユ湡</p>
+              </td>
+              <td v-if="operationType !== 'view'">
+                <el-date-picker
+                  v-model="currentInfo.commissionDate"
+                  clearable
+                  format="yyyy-MM-dd"
+                  placeholder="閫夋嫨鏃ユ湡"
+                  size="small"
+                  style="width: 100%"
+                  type="date"
+                  value-format="yyyy-MM-dd">
+                </el-date-picker>
+              </td>
+              <td v-if="operationType === 'view'">{{ currentInfo.commissionDate }}</td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>濮旀墭浜鸿仈绯荤數璇�</p>
+              </td>
+              <td v-if="operationType !== 'view'" colspan="3"><el-input v-model="currentInfo.commissionPhone" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'" colspan="3">{{ currentInfo.commissionPhone }}</td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>缁煎悎瀹ょ鍚�</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.generalOfficeUser" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{currentInfo.generalOfficeUser}}</td>
+              <td>
+                <p>鎺ユ敹鏃ユ湡</p>
+              </td>
+              <td v-if="operationType !== 'view'">
+                <el-date-picker
+                  v-model="currentInfo.receiptData"
+                  clearable
+                  format="yyyy-MM-dd"
+                  placeholder="閫夋嫨鏃ユ湡"
+                  size="small"
+                  style="width: 100%"
+                  type="date"
+                  value-format="yyyy-MM-dd">
+                </el-date-picker>
+              </td>
+              <td v-if="operationType === 'view'">{{ currentInfo.receiptData }}</td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>棰嗘牱鍛樼鍚�</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.sampleTakerUser" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ currentInfo.sampleTakerUser }}</td>
+              <td>
+                <p>棰嗘牱鏃ユ湡</p>
+              </td>
+              <td v-if="operationType !== 'view'">
+                <el-date-picker
+                  v-model="currentInfo.sampleData"
+                  clearable
+                  format="yyyy-MM-dd"
+                  placeholder="閫夋嫨鏃ユ湡"
+                  size="small"
+                  style="width: 100%"
+                  type="date"
+                  value-format="yyyy-MM-dd">
+                </el-date-picker>
+              </td>
+              <td v-if="operationType === 'view'">{{ currentInfo.sampleData }}</td>
+            </tr>
+            <tr>
+              <td colspan="2" rowspan="3">
+                <p>妫�娴嬫満鏋勪俊鎭�</p>
+              </td>
+              <td colspan="3">
+                <p>姹熻嫃涓ぉ绉戞妧鑲′唤鏈夐檺鍏徃妫�娴嬩腑蹇�</p>
+              </td>
+            </tr>
+            <tr>
+              <td colspan="3">
+                <p>鍦板潃锛氭睙鑻忕渷鍗楅�氬競缁忔祹鎶�鏈紑鍙戝尯鏂板紑鍗楄矾 19 鍙�</p>
+              </td>
+            </tr>
+            <tr>
+              <td colspan="3">
+                <p>鐢佃瘽锛�0513-89059043</p>
+              </td>
+            </tr>
+          </table>
+          <p style="margin-top: 10px;margin-left: 20px;">娉細鏈楠屽鎵樺崟涓�寮忎簩浠斤紝涓�浠界患鍚堝褰掓。锛屼竴浠藉鎵樺崟浣嶇暀瀛樸��</p>
+        </div>
+      </div>
+      <span v-if="operationType !== 'view'" slot="footer" class="dialog-footer">
+        <el-button @click="detailDialogVisible = false">鍙� 娑�</el-button>
+        <el-button v-if="operationType === 'add'" :loading="buttonLoading" type="primary" @click="handleAdd">纭� 瀹�</el-button>
+        <el-button v-if="operationType === 'edit'" :loading="buttonLoading" type="primary" @click="handleEdit">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog :visible.sync="downloadDialog" title="涓嬭浇" width="600px">
+      <span>
+        <el-button :loading="outLoading" plain type="primary" @click="orderReportDown">涓嬭浇濮旀墭鍗�</el-button>
+        <el-button :loading="outLoading" plain type="primary" @click="orderFormDown">涓嬭浇濮旀墭鎶ュ憡</el-button>
+      </span>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="downloadDialog = false">鍙� 娑�</el-button>
+      </span>
+    </el-dialog>
+  </div>
 </template>
 
 <script>
+import {
+  addInspectionOrder, delInspectionOrder, exportInspectionOrder,
+  getInsOrderOnInspection, getInspectionOrderByInsOderId, getInspectionOrderOne,
+  pageInspectionOrder,
+  updateInspectionOrder
+} from "@/api/cnas/process/demand/demand";
 import limsTable from "@/components/Table/lims-table.vue";
-import Edit from './Edit.vue'
-import { getInspectionOrder } from "@/api/cnas/process/demand/demand.js"
+import {selectUserCondition} from "@/api/business/inspectionTask";
 
 export default {
-    name: 'Demand',
-    components: {
-        limsTable,
-        Edit
-    },
-    data() {
-        return {
-            queryParams: {
-                code: ''
-            },
-            model: {},
-            column: [
-                { label: '搴忓彿', minWidth: '100px' },
-                { label: '璇曟牱鍚嶇О', minWidth: '100px' },
-                { label: '濮旀墭缂栧彿' },
-                { label: '濮旀墭鏃堕棿' },
-                { label: '鍨嬪彿' },
-                { label: '濮旀墭鍗曚綅' },
-                { label: '鐢熶骇鍗曚綅' },
-                { label: '濮旀墭浜�' },
-                { label: '鏍峰搧鏁伴噺' },
-                { label: '鏍峰搧鐘舵��' },
-                { label: '鏄惁鐣欐牱' },
-                { label: '鏍峰搧澶勭悊鏂瑰紡' },
-                {
-                    dataType: "action",
-                    fixed: "right",
-                    label: "鎿嶄綔",
-                    operation: [
-                        {
-                            name: "缂� 杈�",
-                            type: "text",
-                            clickFun: (row) => {
-                                this.$refs.editRef.openAddContracts(row)
-                            }
-                        }
-                    ],
-                },
-            ],
-            tableData: [], // 琛ㄦ牸鏁版嵁
-            page: {
-                total: 0,
-                size: 10,
-                current: 1,
-            },
-        }
-    },
-    mounted() {
-        this.refreshTable()
-    },
-    methods: {
-        /**
-         * @desc 鍒锋柊琛ㄦ牸
-         */
-        async refreshTable() {
-            await getInspectionOrder({ ...this.page })
+  name: "a7-Inspection-Order-Form",
+  components: {limsTable},
+  data() {
+    return {
+      title:'妫�楠屽鎵樺崟',
+      detailDialogVisible:false,
+      addLoading:false,
+      outLoading:false,
+      currentInfo:{
+        orderDetailList: []
+      },
+      personList:[],
+      insStateList:[
+        {
+          label: '寰呭鏍�',
+          value: 0
+        }, {
+          label: '寰呮楠�',
+          value: 1
         },
-        /**
-         * @desc 鎵撳紑妯℃�佹
-         */
-        openDialog(type) {
-            this.$refs.editRef.open(type)
-        }
+        {
+          label: '宸叉楠�',
+          value: 4
+        },
+        {
+          label: '閫�鍥�',
+          value: 2
+        },
+        {
+          label: '鎾ら攢',
+          value: 3
+        },
+      ],
+      operationType: '',
+      orderRowsVisible: false,
+      tableList: [],
+      tableListLoading: false,
+      pages: {
+        current: 1,
+        size: 20,
+      },
+      tableData: [],
+      tableLoading: false,
+      tableSearch: {
+        current: 1,
+        size: 20,
+      },
+      total: 0,
+      total1: 0,
+      entity: {
+        entrustCode: ''
+      },
+      entitySearch: {
+        sampleName: '',
+        commissionUnit: '',
+        production: '',
+        commissionUser: '',
+      },
+      buttonLoading: false,
+      downloadDialog: false,
+      download: {},
+    };
+  },
+  mounted() {
+    // this.getPower()
+    this.getAuthorizedPerson()
+    this.refreshTable()
+  },
+  computed: {
+    action() {
+      return this.javaApi + '/inspectionOrder/uploadInspectionOrderFile'
     }
+  },
+  methods: {
+    addOrderDetailList () {
+      if (this.currentInfo.orderDetailList == null) {
+        this.currentInfo.orderDetailList = []
+      }
+      this.currentInfo.orderDetailList.push({
+        sampleNumber: '',
+        testItem: '',
+        testStandard: '',
+        standardMethodList: '',
+        remark: '',
+      })
+    },
+    // 鏌ヨ鍒楄〃
+    refreshTable() {
+      this.tableListLoading = true
+      pageInspectionOrder({
+        ...this.pages,
+        ...this.entitySearch
+      }).then(res => {
+        this.tableListLoading = false
+        this.tableList = res.data.records
+        this.total1 = res.data.total
+      }).catch(err => {
+        this.tableListLoading = false
+      })
+    },
+    // 閲嶇疆
+    refresh() {
+      this.entitySearch = {
+        sampleName: '',
+        commissionUnit: '',
+        production: '',
+        commissionUser: '',
+      }
+      this.pages = {
+        current: 1,
+        size: 20,
+      }
+      this.refreshTable()
+    },
+    // 鎵撳紑鏂板寮规
+    goAdd () {
+      this.operationType = 'add'
+      this.title = '鏂板妫�楠屽鎵樺崟';
+      this.orderRowsVisible = true
+      this.searchTableData()
+    },
+    // 鏌ヨ鍙柊澧炵殑妫�楠屽崟
+    searchTableData () {
+      this.tableLoading = true
+      getInsOrderOnInspection({
+        ...this.tableSearch,
+        ...this.entity
+      }).then(res => {
+        this.tableLoading = false
+        this.tableData = res.data.records
+        this.total = res.data.total
+      }).catch(err => {
+        this.tableLoading = false
+      })
+    },
+    // 閲嶇疆妫�楠屽崟鍒楄〃
+    refreshTableData () {
+      this.entity = {
+        entrustCode: ''
+      }
+      this.tableSearch = {
+        current: 1,
+        size: 20,
+      }
+      this.searchTableData()
+    },
+    // 妫�楠屽崟鍒楄〃鍒嗛〉
+    handleSizeChange(val) {
+      this.tableSearch.size = val
+      this.searchTableData();
+    },
+    handleCurrentChange(val) {
+      this.tableSearch.current = val
+      this.searchTableData();
+    },
+    // 鍒楄〃鍒嗛〉
+    handleSizeChange1(val) {
+      this.pages.size = val
+      this.refreshTable();
+    },
+    handleCurrentChange1(val) {
+      this.pages.current = val
+      this.refreshTable();
+    },
+    // 鎻愪氦鏂板
+    handleAdd () {
+      this.buttonLoading = true
+      addInspectionOrder(this.currentInfo).then(res => {
+        this.buttonLoading = false
+        this.$message.success('鏂板鎴愬姛')
+        this.detailDialogVisible = false
+        this.orderRowsVisible = false
+        this.refreshTable()
+      }).catch(err => {
+        this.buttonLoading = false
+      })
+    },
+    // 鎻愪氦淇敼
+    handleEdit () {
+      this.buttonLoading = true
+      updateInspectionOrder(this.currentInfo).then(res => {
+        this.buttonLoading = false
+        if (res.code === 201) return
+        this.$message.success('鏂板鎴愬姛')
+        this.detailDialogVisible = false
+        this.orderRowsVisible = false
+        this.refreshTable()
+      }).catch(err => {
+        this.buttonLoading = false
+      })
+    },
+    // 鏌ヨ闇�瑕佹柊澧炵殑濮旀墭鍗曡鎯�
+    goAddOrder (row) {
+      getInspectionOrderByInsOderId({insOrderId: row.id}).then(res => {
+        this.currentInfo = res.data
+        this.title = '鏂板妫�楠屽鎵樺崟';
+        this.detailDialogVisible = true
+      }).catch(err => {
+        console.log('err----', err)
+      })
+    },
+    // 鎵撳紑缂栬緫寮规
+    goUpdate (row) {
+      this.operationType = 'edit'
+      getInspectionOrderOne({inspectionOrderId: row.inspectionOrderId}).then(res => {
+        this.currentInfo = res.data
+        this.title = '缂栬緫妫�楠屽鎵樺崟';
+        this.detailDialogVisible = true
+      }).catch(err => {
+        console.log('err----', err)
+      })
+    },
+    // 鏌ョ湅
+    handleLook(row){
+      this.operationType = 'view'
+      getInspectionOrderOne({inspectionOrderId: row.inspectionOrderId}).then(res => {
+        this.currentInfo = res.data
+        this.title = '鏌ョ湅妫�楠屽鎵樺崟';
+        this.detailDialogVisible = true
+      }).catch(err => {
+        console.log('err----', err)
+      })
+    },
+    // 鍒犻櫎
+    deleteOrder (row) {
+      this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        delInspectionOrder({inspectionOrderId: row.inspectionOrderId}).then(res => {
+          this.$message.success('鍒犻櫎鎴愬姛锛�');
+          this.refreshTable();
+        });
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '宸插彇娑堝垹闄�'
+        });
+      });
+    },
+    // 鎵撳紑涓嬭浇寮规
+    openDownloadDia (row) {
+      this.downloadDialog = true
+      this.download = row
+    },
+    // 濮旀墭鍗曚笅杞�
+    orderFormDown () {
+      let url = this.download.fileUrl;
+      const link = document.createElement('a');
+      link.href = this.javaApi + url;
+      link.target = '_blank';
+      document.body.appendChild(link);
+      link.click();
+    },
+    // 濮旀墭鎶ュ憡涓嬭浇
+    orderReportDown () {
+      this.outLoading = true;
+      exportInspectionOrder({inspectionOrderId: this.download.inspectionOrderId}).then(res => {
+        this.outLoading = false;
+        const blob = new Blob([res], { type: 'application/octet-stream' });
+        this.$download.saveAs(blob, '妫�楠屽鎵樺崟.docx')
+        this.$message.success('瀵煎嚭鎴愬姛');
+
+      }).catch(err => {
+        this.outLoading = false;
+      })
+    },
+    // 涓婁紶
+    handleSuccessUp(response, ) {
+      if (response.code == 200) {
+        this.$message.success('涓婁紶鎴愬姛');
+        this.refreshTable()
+      }
+    },
+    beforeUpload(file) {
+      if (file.size > 1024 * 1024 * 10) {
+        this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
+        this.$refs.upload.clearFiles()
+        return false;
+      } else {
+        return true;
+      }
+    },
+    onError(err, file, fileList) {
+      this.$message.error('涓婁紶澶辫触')
+      this.$refs.upload.clearFiles()
+    },
+    // 浜哄憳鍒楄〃
+    getAuthorizedPerson() {
+      selectUserCondition().then(res => {
+        let data = []
+        res.data.forEach(a => {
+          data.push({
+            label: a.name,
+            value: a.id
+          })
+        })
+        this.personList = data
+      })
+    },
+
+  },
 }
-</script>
\ No newline at end of file
+</script>
+
+<style scoped>
+</style>

--
Gitblit v1.9.3