From 5ba37c953aa14ac2f08931699378995af88c98a5 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 14 二月 2025 17:38:50 +0800
Subject: [PATCH] 能力范围页面迁移

---
 src/views/structural/capabilityAndLaboratory/capability/index.vue | 1089 +++++++++++++++++++++-----------------------------------
 1 files changed, 413 insertions(+), 676 deletions(-)

diff --git a/src/views/structural/capabilityAndLaboratory/capability/index.vue b/src/views/structural/capabilityAndLaboratory/capability/index.vue
index 085b188..072d09b 100644
--- a/src/views/structural/capabilityAndLaboratory/capability/index.vue
+++ b/src/views/structural/capabilityAndLaboratory/capability/index.vue
@@ -3,631 +3,348 @@
     <div>
       <el-row class="title">
         <el-col :span="12" style="text-align: left">
-          <el-radio-group v-model="radio" @input="selectorSwitch" size="medium" fill="#409EFF">
+          <el-radio-group v-model="radio" size="medium" fill="#409EFF">
             <el-radio-button :label="0">妫�楠岄」鐩弬鏁�</el-radio-button>
             <el-radio-button :label="1">妫�楠屽璞�</el-radio-button>
           </el-radio-group>
         </el-col>
         <el-col :span="12" style="text-align: right;">
-<!--          <el-button size="medium" @click="$refs.itemParameterTable.openUpload()" v-if="inPower">-->
-<!--            <i class="el-icon-upload2" style="color: #3A7BFA;"></i>-->
-<!--            <span style="color: #3A7BFA;">瀵煎叆</span></el-button>-->
-          <el-button size="medium" type="primary" v-if="radio == 1 && importExcel" @click="uploadDia = true">瀵煎叆</el-button>
-          <el-button size="medium" type="primary" @click="openAdd()" v-if="addPower">鏂板</el-button>
-          <!-- <el-button size="medium" icon="el-icon-delete">鍒犻櫎</el-button> -->
+          <el-upload v-if="radio === 0" ref='upload1'
+                     style="display: inline;margin-right: 8px"
+                     :action="uploadAction1"
+                     :before-upload="beforeUpload1" :headers="token" :on-error="onError1"
+                     :on-success="handleSuccessUp" :show-file-list="false" accept='.doc,.docx,.xls,.xlsx'>
+            <el-button size="small" type="primary">瀵煎叆</el-button>
+          </el-upload>
+          <el-button size="small" type="primary" v-if="radio === 1" @click="uploadDia = true">瀵煎叆</el-button>
+          <el-button size="small" type="primary" @click="openAdd()">鏂板</el-button>
         </el-col>
       </el-row>
     </div>
-    <div v-if="radio==0" class="bodys">
-      <div class="search">
-        <div class="search_thing">
-          <div class="search_label">妫�楠岄」锛�</div>
-          <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
-                                              v-model="itemParameterForm.inspectionItem" @keyup.enter.native="refreshTable()"></el-input></div>
-        </div>
-        <div class="search_thing">
-          <div class="search_label">妫�楠屽瓙椤癸細</div>
-          <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
-                                              v-model="itemParameterForm.inspectionItemSubclass" @keyup.enter.native="refreshTable()"></el-input>
-          </div>
-        </div>
-        <div class="search_thing">
-          <div class="search_label">妫�楠屽璞★細</div>
-          <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
-                                              v-model="itemParameterForm.sample" @keyup.enter.native="refreshTable()"></el-input>
-          </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>
-        </div>
+    <div>
+      <el-form :model="itemParameterForm" ref="itemParameterForm" size="small" :inline="true">
+        <el-form-item label="妫�楠岄」" prop="inspectionItem" v-if="radio===0">
+          <el-input size="small" placeholder="璇疯緭鍏�" clearable
+                    v-model="itemParameterForm.inspectionItem" @keyup.enter.native="refreshTable()">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="妫�楠屽瓙椤�" prop="inspectionItemSubclass" v-if="radio===0">
+          <el-input size="small" placeholder="璇疯緭鍏�" clearable
+                    v-model="itemParameterForm.inspectionItemSubclass" @keyup.enter.native="refreshTable()">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="妫�楠屽璞�" prop="sample">
+          <el-input size="small" placeholder="璇疯緭鍏�" clearable
+                    v-model="itemParameterForm.sample" @keyup.enter.native="refreshTable()">
+          </el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="el-icon-search" size="mini" @click="refreshTable">鏌� 璇�</el-button>
+          <el-button icon="el-icon-refresh" size="mini" @click="refresh">閲� 缃�</el-button>
+        </el-form-item>
+      </el-form>
+      <div class="table" v-if="radio===0">
+        <lims-table :tableData="tableData" :column="column"
+                    :page="page" :tableLoading="tableLoading"></lims-table>
       </div>
-      <div class="table">
-<!--        <ValueTable ref="itemParameterTable"-->
-<!--                    :url="$api.capacityScope.selectItemParameterList" v-if="PROJECT === '妫�娴嬩腑蹇�'"-->
-<!--                    :upUrl="$api.capacityScope.upItemParameter" :delUrl="$api.capacityScope.delItemParameter"-->
-<!--                    :inputUrl="$api.capacityScope.importData" :componentData="itemParameterData" :key="upIndex" />-->
-<!--        <ValueTable ref="itemParameterTable" :url="$api.capacityScope.selectItemParameterList" v-if="PROJECT === '瑁呭鐢电紗'"-->
-<!--                    :upUrl="$api.capacityScope.upItemParameter" :delUrl="$api.capacityScope.delItemParameter"-->
-<!--                    :inputUrl="$api.capacityScope.importEquipData" :componentData="itemParameterData" :key="upIndex" />-->
-      </div>
-    </div>
-    <div class="bodys">
-      <div class="search" v-if="radio==1">
-        <div class="search_thing">
-          <div class="search_label">妫�楠屽璞★細</div>
-          <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
-                                              v-model="testObjectData.entity.specimenName" @keyup.enter.native="refreshTable()"></el-input></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>
-        </div>
-      </div>
-      <div class="table" v-if="radio==1">
-<!--        <ValueTable ref="testObjectTable" :url="$api.capacityScope.selectTestObjectList"-->
-<!--                    :upUrl="$api.capacityScope.upTestObject" :delUrl="$api.capacityScope.delTestObject"-->
-<!--                    :componentData="testObjectData" :key="upIndex" />-->
+      <div class="table" v-if="radio===1">
+        <lims-table :tableData="testObjectTableData" :column="testObjectColumn"
+                    :page="testObjectPage" :tableLoading="tableLoading"></lims-table>
       </div>
     </div>
     <el-dialog title="浜у搧缁存姢" :visible.sync="diaProduct" width="600px">
       <div class="body" v-if="diaProduct" style="height: 350px;overflow-y: auto;padding: 5px 0;">
-<!--        <ValueTable ref="productData" :url="$api.capacityScope.selectProductListByObjectId"-->
-<!--                    :upUrl="$api.capacityScope.upProduct" :delUrl="$api.capacityScope.delProduct"-->
-<!--                    :componentData="productData" :key="upIndex"/>-->
+        <lims-table :tableData="productData" :column="productColumn"
+                    :page="productPage" :tableLoading="productableLoading"></lims-table>
       </div>
       <span slot="footer" class="dialog-footer">
         <el-button @click="diaProduct = false">鍙� 娑�</el-button>
         <el-button type="primary" @click="openAdd2" :loading="productLoad">鏂� 澧�</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="鏁版嵁瀵煎叆" :visible.sync="uploadDia" width="500px">
-<!--      <div style="margin: 0 auto;">-->
-<!--        <el-upload ref="upload" drag :action="javaApi + $api.capacityScope.importExcel" :headers="token" :file-list="fileList" name="file"-->
-<!--                   :auto-upload="false" accept=".xlsx" :limit="1" :on-change="beforeUpload" :on-success="onSuccess"-->
-<!--                   :on-error="onError">-->
-<!--          <i class="el-icon-upload"></i>-->
-<!--          <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>-->
-<!--        </el-upload>-->
-<!--      </div>-->
+    <el-dialog :visible.sync="uploadDia" title="鏁版嵁瀵煎叆" width="500px">
+      <div style="margin: 0 auto;">
+        <el-upload ref="upload" :action="uploadAction"
+                   :auto-upload="false" :file-list="fileList"
+                   :headers="token" :limit="1"
+                   :on-change="beforeUpload" :on-error="onError" :on-success="onSuccess" accept=".xlsx" drag
+                   name="file">
+          <i class="el-icon-upload"></i>
+          <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
+        </el-upload>
+      </div>
       <span slot="footer" class="dialog-footer">
         <el-button @click="uploadDia = false">鍙� 娑�</el-button>
-        <el-button type="primary" @click="submitUpload()" :loading="uploading">涓� 浼�</el-button>
+        <el-button :loading="uploading" type="primary" @click="submitUpload()">涓� 浼�</el-button>
       </span>
     </el-dialog>
-
-    <!-- 缂栬緫 鏂板 -->
-    <el-dialog
-      :title="title"
-      :visible.sync="dialogVisible"
-      width="50%"
-      :before-close="handleClose">
-      <el-form :model="addOrupdateForm" label-width="120px" :rules="rules" inline ref="addOrupdateForm"  size="mini">
-        <el-form-item label="妫�楠岄」" prop="inspectionItem">
-          <el-input v-model="addOrupdateForm.inspectionItem" placeholder="璇疯緭鍏ユ楠岄」" size="mini" style="width: 220px;"></el-input>
-        </el-form-item>
-        <el-form-item label="妫�楠岄」EN" >
-          <el-input v-model="addOrupdateForm.inspectionItemEn" placeholder="璇疯緭鍏ユ楠岄」EN" size="mini" style="width: 220px;"></el-input>
-        </el-form-item>
-        <el-form-item label="妫�楠岄」瀛愰」" >
-          <el-input v-model="addOrupdateForm.inspectionItemSubclass" placeholder="璇疯緭鍏ユ楠岄」瀛愰」" size="mini" style="width: 220px;"></el-input>
-        </el-form-item>
-        <el-form-item label="妫�楠屽瓙椤笶N" >
-          <el-input v-model="addOrupdateForm.inspectionItemSubclassEn" placeholder="璇疯緭鍏ユ楠屽瓙椤笶N" size="mini" style="width: 220px;"></el-input>
-        </el-form-item>
-        <el-form-item label="妫�楠屽璞�" >
-          <el-cascader
-            size="mini" style="width: 220px;"
-            filterable
-            v-model="addOrupdateForm.sample"
-            :options="tree"
-            :props="{value:'name',label: 'name', multiple: true, checkStrictly: true }"
-            clearable></el-cascader>
-          <!-- <el-input v-model="addOrupdateForm.sample" placeholder="璇疯緭鍏ユ楠屽璞�" size="mini" style="width: 220px;"></el-input> -->
-        </el-form-item>
-        <el-form-item label="鍗曚环(鍏�)" >
-          <el-input v-model="addOrupdateForm.price" placeholder="璇疯緭鍏ュ崟浠�" size="mini" style="width: 220px;"></el-input>
-        </el-form-item>
-        <el-form-item label="鍦烘墍" >
-          <el-select v-model="addOrupdateForm.laboratory" filterable size="small" style="width: 220px;">
-            <el-option
-              v-for="item in laboratory"
-              :key="item.value"
-              :label="item.label"
-              :value="item.label">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="璇曢獙瀹�" prop="sonLaboratory">
-          <el-select v-model="addOrupdateForm.sonLaboratory" filterable size="small" style="width: 220px;">
-            <el-option
-              v-for="item in dicList.sonLaboratory"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="瑕佹眰鎻忚堪" >
-          <el-input v-model="addOrupdateForm.askTell" placeholder="璇疯緭鍏ヨ姹傛弿杩�" size="mini" style="width: 220px;"></el-input>
-        </el-form-item>
-        <el-form-item label="瑕佹眰鍊�" >
-          <el-input v-model="addOrupdateForm.ask" placeholder="璇疯緭鍏ヨ姹傚��" size="mini" style="width: 220px;"></el-input>
-        </el-form-item>
-        <el-form-item label="璁¢噺鍗曚綅" prop="unit">
-          <el-select v-model="addOrupdateForm.unit" filterable size="small" style="width: 220px;">
-            <el-option
-              v-for="item in dicList.unit"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="宸ユ椂(H)" >
-          <el-input v-model="addOrupdateForm.manHour" placeholder="璇疯緭鍏ュ伐鏃�" size="mini" style="width: 220px;"></el-input>
-        </el-form-item>
-        <el-form-item label="棰勮鏃堕棿(H)" prop="manDay">
-          <el-input v-model="addOrupdateForm.manDay" placeholder="璇疯緭鍏ラ璁℃椂闂�" size="mini" style="width: 220px;"></el-input>
-        </el-form-item>
-        <el-form-item label="宸ユ椂鍒嗙粍" >
-          <el-input v-model="addOrupdateForm.manHourGroup" placeholder="璇疯緭鍏ュ伐鏃跺垎缁�" size="mini" style="width: 220px;"></el-input>
-        </el-form-item>
-        <el-form-item label="妫�楠岄」绫诲瀷" prop="inspectionItemType">
-          <el-select v-model="addOrupdateForm.inspectionItemType" filterable size="small" style="width: 220px;">
-            <el-option
-              v-for="item in dicList.inspectionItemType"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="妫�楠屽�肩被鍨�" prop="inspectionValueType">
-          <el-select v-model="addOrupdateForm.inspectionValueType" filterable size="small" style="width: 220px;">
-            <el-option
-              v-for="item in dicList.inspectionValueType"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="瀛楀吀绫诲瀷" >
-          <el-select v-model="addOrupdateForm.dic" clearable filterable size="small" style="width: 220px;">
-            <el-option
-              v-for="item in dicList.dic"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="鐗规畩鏍囪瘑绗�">
-          <el-select v-model="addOrupdateForm.bsm" filterable size="small" style="width: 220px;">
-            <el-option
-              v-for="item in dicList.bsm"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="鍘熷璁板綍妯℃澘" prop="templateId">
-          <el-select v-model="addOrupdateForm.templateId" filterable size="small" style="width: 220px;">
-            <el-option
-              v-for="item in dicList.templateId"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="妫�楠岄」鍒嗙被" >
-          <el-input v-model="addOrupdateForm.inspectionItemClass" placeholder="璇疯緭鍏ユ楠岄」鍒嗙被" size="mini" style="width: 220px;"></el-input>
-        </el-form-item>
-        <el-form-item label="妫�楠岄」鍒嗙被EN" >
-          <el-input v-model="addOrupdateForm.inspectionItemClassEn" placeholder="璇疯緭鍏ユ楠岄」鍒嗙被EN" size="mini" style="width: 220px;"></el-input>
-        </el-form-item>
-        <el-form-item label="璇曢獙鏂规硶" prop="method">
-          <el-select v-model="addOrupdateForm.method" filterable multiple  size="small" style="width: 220px;">
-            <el-option
-              v-for="(item,index) in dicList.method"
-              :key="index"
-              :label="item.label"
-              :value="item.value">
-            </el-option>
-          </el-select>
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-      <el-button @click="handleClose">鍙� 娑�</el-button>
-      <el-button type="primary" @click="saveOrEnit">纭� 瀹�</el-button>
-    </span>
-    </el-dialog>
-
-
-
-
-
+    <!--妫�楠岄」鐩弬鏁�-缂栬緫寮规-->
+    <EditForm ref="editForm"></EditForm>
+    <testObjectEditForm ref="testObjectEditForm"></testObjectEditForm>
+    <BindPartDialog v-if="bindPartDialog" :bindPartDialog="bindPartDialog"
+                    :currentRow="currentRow"
+                    :type="type"
+                    @closeBindPartDialog="closeBindPartDialog"></BindPartDialog>
+    <BindSupplierDensityDialog v-if="bindSupplierDensityDialog"
+                               :bindSupplierDensityDialog="bindSupplierDensityDialog"
+                               :currentRow="currentSupplierDensityRow"
+                               @closeBindPartDialog="closeBindSupplierDensityDialog"></BindSupplierDensityDialog>
   </div>
 </template>
 
 <script>
-// import ValueTable from '../tool/value-table.vue'
-import {addItemParameter, getItemTree, upItemParameter} from "@/api/structural/capability";
-import {obtainItemParameterList} from "@/api/structural/laboratoryScope";
-import {selectStandardMethods} from "@/api/structural/standardMethod";
+import BindPartDialog from "@/components/capability/bindPartDialog.vue"
+import BindSupplierDensityDialog from "@/components/capability/bindSupplierDensityDialog.vue"
+import {
+  delItemParameter, delProduct, delTestObject, selectItemParameterList, selectProductListByObjectId,
+  selectTestObjectList,
+} from "@/api/structural/capability";
+import limsTable from "@/components/Table/lims-table.vue";
+import EditForm from "@/components/capability/EditForm.vue";
+import testObjectEditForm from "@/components/capability/testObjectEditForm.vue";
+import {getToken} from "@/utils/auth";
 
 export default {
+  components: {limsTable, EditForm, testObjectEditForm, BindPartDialog, BindSupplierDensityDialog},
   data() {
     return {
-      dicList: {
-        inspectionItemType: [],
-        inspectionValueType: [],
-        bsm: [],
-        sonLaboratory: [],
-        unit: [],
-        dic: [],
-        method: [],
+      uploadAction: process.env.VUE_APP_BASE_API + '/capacityScope/importExcel',
+      uploadAction1: process.env.VUE_APP_BASE_API + '/capacityScope/importEquipData',
+      tableData: [],
+      column: [
+        {label: '妫�楠岄」', prop: 'inspectionItem'},
+        {label: '妫�楠岄」EN', prop: 'inspectionItemEn'},
+        {label: '妫�楠屽瓙椤�', prop: 'inspectionItemSubclass'},
+        {label: '妫�楠屽瓙椤笶N', prop: 'inspectionItemSubclassEn'},
+        {label: '妫�楠岄」鍒嗙被', prop: 'inspectionItemClass'},
+        {label: '妫�楠岄」鍒嗙被EN', prop: 'inspectionItemClassEn'},
+        {label: '妫�楠屽璞�', prop: 'sample'},
+        {label: '鍗曚环(鍏�)', prop: 'price'},
+        {label: '璇曢獙瀹�', prop: 'sonLaboratory'},
+        {label: '瑕佹眰鎻忚堪', prop: 'askTell'},
+        {label: '瑕佹眰鍊�', prop: 'ask'},
+        {label: '璁¢噺鍗曚綅', prop: 'unit'},
+        {label: '宸ユ椂(H)', prop: 'manHour'},
+        {label: '棰勮鏃堕棿(H)', prop: 'manDay'},
+        {label: '宸ユ椂鍒嗙粍', prop: 'manHourGroup'},
+        {label: '鍒涘缓鏃堕棿', prop: 'createTime'},
+        {label: '淇敼鏃堕棿', prop: 'updateTime'},
+        {label: '鏉′欢', prop: 'radiusList'},
+        {
+          dataType: 'action',
+          fixed: 'right',
+          label: '鎿嶄綔',
+          operation: [
+            {
+              name: '缂栬緫',
+              type: 'text',
+              clickFun: (row) => {
+                this.editForm(row);
+              },
+            },
+            {
+              name: '鍒犻櫎',
+              type: 'text',
+              clickFun: (row) => {
+                this.delete(row);
+              },
+            },
+          ]
+        }
+      ],
+      page: {
+        total:0,
+        size:10,
+        current:0
       },
+      testObjectTableData: [],
+      testObjectColumn: [
+        {
+          dataType: 'tag',
+          label: '鍦烘墍',
+          prop: 'laboratoryId',
+          minWidth: '130',
+          formatData: (params) => {
+            if (params == 1) {
+              return '瑁呭鐢电紗璇曢獙瀹�'
+            } else if (params == 5) {
+              return '閫氫俊浜у搧瀹為獙瀹�'
+            } else if (params == 6) {
+              return '鐢靛姏浜у搧瀹為獙瀹�'
+            } else if (params == 8) {
+              return '鍌ㄨ兘浜у搧瀹為獙瀹�'
+            } else {
+              return '灏勯绾跨紗瀹為獙瀹�'
+            }
+          },
+          formatType: (params) => {
+            if (params == 1) {
+              return 'success'
+            } else if (params == 5) {
+              return 'info'
+            } else if (params == 6) {
+              return 'warning'
+            } else if (params == 8) {
+              return 'danger'
+            } else {
+              return ''
+            }
+          }
+        },
+        {label: '妫�楠屽璞�', prop: 'specimenName'},
+        {label: '妫�楠屽璞N', prop: 'specimenNameEn'},
+        {label: '浜у搧', prop: 'product'},
+        {label: '瀵硅薄浠e彿', prop: 'code'},
+        {label: '瀵硅薄绫诲瀷', prop: 'objectType',
+          dataType: 'tag',
+          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 'info'
+            } else {
+              return 'warning'
+            }
+          }},
+        {label: '鍒涘缓浜�', prop: 'createUserName'},
+        {label: '鏇存柊浜�', prop: 'updateUserName'},
+        {label: '鍒涘缓鏃堕棿', prop: 'createTime'},
+        {label: '鏇存柊鏃堕棿', prop: 'updateTime'},
+        {
+          dataType: 'action',
+          fixed: 'right',
+          label: '鎿嶄綔',
+          operation: [
+            {
+              name: '缂栬緫',
+              type: 'text',
+              clickFun: (row) => {
+                this.editTestObjectForm(row);
+              },
+            },
+            {
+              name: '鍒犻櫎',
+              type: 'text',
+              clickFun: (row) => {
+                this.deleteTest(row);
+              },
+            },
+            {
+              name: '浜у搧缁存姢',
+              type: 'text',
+              clickFun: (row) => {
+                this.upProduct(row);
+              },
+            },
+            {
+              name: '闆朵欢缁戝畾',
+              type: 'text',
+              clickFun: (row) => {
+                this.bindPartFirst(row);
+              },
+            },
+          ]
+        }
+      ],
+      testObjectPage: {
+        total:0,
+        size:10,
+        current:0
+      },
+      tableLoading: false,
       addOrUpdate: '',
-      addOrupdateForm:{
-        inspectionItem: '',
-        inspectionItemEn: '',
-        inspectionItemSubclass: '',
-        inspectionItemSubclassEn: '',
-        sample: null,
-        price: '',
-        laboratory: '',
-        sonLaboratory: '',
-        askTell: '',
-        ask: '',
-        unit: '',
-        manHour: '',
-        manDay: '',
-        manHourGroup: '',
-        inspectionItemType: '',
-        inspectionValueType: '',
-        dic: '',
-        bsm: '',
-        templateId: '',
-        inspectionItemClass: '',
-        inspectionItemClassEn: '',
-        method: []
-      },
       tree: null,
-      rules:{
-        inspectionItem: [
-          { required: true, message: '璇疯緭鍏ユ楠岄」', trigger: 'blur' }
-        ],
-        sonLaboratory: [
-          { required: true, message: '璇疯緭鍏ヨ瘯楠屽', trigger: 'change' }
-        ],
-        unit: [
-          { required: true, message: '璇疯緭鍏ヨ閲忓崟浣�', trigger: 'change' }
-        ],
-        manDay: [
-          { required: true, message: '璇疯緭鍏ラ璁℃椂闂�', trigger: 'blur' }
-        ],
-        inspectionItemType: [
-          { required: true, message: '璇疯緭鍏ユ楠岄」绫诲瀷', trigger: 'change' }
-        ],
-        inspectionValueType: [
-          { required: true, message: '璇疯緭鍏ユ楠屽�肩被鍨�', trigger: 'change' }
-        ],
-        method: [
-          { required: true, message: '璇烽�夋嫨璇曢獙鏂规硶', trigger: 'change' }
-        ],
-        templateId: [
-          { required: true, message: '璇疯緭鍏ュ師濮嬭褰曟ā鏉�', trigger: 'change' }
-        ],
-      },
-      dialogVisible: false,
       loading: true,
       itemParameterForm: {
         inspectionItem: null,
         inspectionItemSubclass: null,
         sample: null
       },
-      logining:false,
       radio: 0,
-      showItemParameter: true,
-      showTestObject: false,
-      itemParameterData: {
-        entity: {
-          inspectionItem: null,
-          inspectionItemSubclass: null,
-          sample: null,
-          orderBy: {
-            field: 'id',
-            order: 'asc'
-          }
-        },
-        isIndex: true,
-        showSelect: false,
-        select: true,
-        row: 2,
-        do: [{
-          id: 'update',
-          font: '缂栬緫',
-          type: 'text',
-          method: 'openAdd',
-          field: []
-        }, {
-          id: 'delete',
-          font: '鍒犻櫎',
-          type: 'text',
-          method: 'doDiy'
-        }],
-        tagField: {
-        },
-        selectField: {
-          inspectionItemType: {
-            select: []
-          },
-          bsm: {
-            select: []
-          },
-          inspectionValueType: {
-            select: []
-          },
-          laboratory: {
-            select: []
-          },
-          templateId: {
-            select: []
-          },
-          method: {
-            select: [],
-            choose: true
-          },
-          sonLaboratory: {
-            select: []
-          },
-          unit: {
-            select: []
-          },
-          dic: {
-            select: []
-          },
-        },
-        cascaderField:{
-          sample:{
-            tree:[]
-          },
-          // 瀛楁閰嶇疆
-          props:{
-            value:'name',
-            label:'name',
-            checkStrictly: true,
-            multiple: true
-          }
-        },
-        requiredAdd: ['sonLaboratory', 'inspectionItem', 'inspectionItemType', 'inspectionValueType',
-          'unit', 'method', 'manDay', 'templateId'
-        ],
-        requiredUp: ['sonLaboratory', 'inspectionItem', 'inspectionItemType', 'inspectionValueType',
-          'unit', 'method', 'manDay', 'templateId'
-        ],
-        accept: '.xlsx',
-        inputType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
-        needSort: ['createTime', 'updateTime', 'inspectionItem', 'inspectionItemSubclass', 'sample'],
-      },
-      testObjectData: {
-        entity: {
-          specimenName: null,
-          orderBy: {
-            field: 'id',
-            order: 'asc'
-          }
-        },
-        isIndex: true,
-        showSelect: false,
-        select: true,
-        do: [{
-          id: 'update',
-          font: '缂栬緫',
-          type: 'text',
-          method: 'doDiy',
-          field: ['createUserName', 'updateUserName', 'product']
-        }, {
-          id: 'delete',
-          font: '鍒犻櫎',
-          type: 'text',
-          method: 'doDiy'
-        }, {
-          font: '浜у搧缁存姢',
-          type: 'text',
-          method: 'upProduct'
-        }],
-        tagField: {
-          laboratoryId: {
-            select: []
-          }
-        },
-        selectField: {
-          laboratoryId: {
-            select: []
-          }
-        },
-        requiredAdd: ['specimenName', 'code', 'laboratoryId'],
-        requiredUp: ['specimenName', 'code', 'laboratoryId'],
-        needSort: ['createTime', 'updateTime', 'specimenName'],
-      },
-      itemParameterEntityCopy: {},
-      testObjectDataEntityCopy: {},
-      upIndex: 0,
-      addDia: false,
-      addPower: true,
-      select: 0,
-      laboratory: [],
       productLoad: false,
       diaProduct: false,
-      productData: {
-        entity: {
-          objectId: 0,
-          orderBy: {
-            field: 'id',
-            order: 'asc'
-          }
-        },
-        isPage: false,
-        isIndex: true,
-        showSelect: false,
-        select: true,
-        do: [{
-          id: 'update',
-          font: '缂栬緫',
-          type: 'text',
-          method: 'doDiy',
-          field: []
-        }, {
-          id: 'delete',
-          font: '鍒犻櫎',
-          type: 'text',
-          method: 'doDiy'
-        }],
-        tagField: {},
-        selectField: {},
-        requiredAdd: ['name','nameEn'],
-        requiredUp: ['name','nameEn'],
+      productColumn: [
+        {label: '浜у搧鍚嶇О', prop: 'name'},
+        {label: '浜у搧鍚嶇ОEN', prop: 'nameEn'},
+        {
+          dataType: 'action',
+          fixed: 'right',
+          label: '鎿嶄綔',
+          operation: [
+            {
+              name: '缂栬緫',
+              type: 'text',
+              clickFun: (row) => {
+                this.editProduct(row);
+              },
+            },
+            {
+              name: '鍒犻櫎',
+              type: 'text',
+              clickFun: (row) => {
+                this.deleteProduct(row);
+              },
+            },
+            {
+              name: '闆朵欢缁戝畾',
+              type: 'text',
+              clickFun: (row) => {
+                this.bindPartSecond(row);
+              },
+            },
+            {
+              name: '鍘傚瀵嗗害缁戝畾',
+              type: 'text',
+              clickFun: (row) => {
+                this.bindSupplierDensitySecond(row);
+              },
+            },
+          ]
+        }
+      ],
+      productData: [],
+      productPage: {
+        total:0,
+        size:10,
+        current:0
       },
+      productableLoading: false,
       inPower: true,
-      importExcel: false,
       uploadDia: false,
       fileList: [],
-      token: null,
+      token: {Authorization: "Bearer " + getToken()},
       uploading: false,
+      currentRow: {}, // 閫夋嫨闆朵欢缁戝畾鏈潯鏁版嵁鐨勪俊鎭�
+      currentSupplierDensityRow: {}, // 閫夋嫨闆朵欢缁戝畾鏈潯鏁版嵁鐨勪俊鎭�
+      bindSupplierDensityDialog: false,
+      bindPartDialog: false,
+      type: null,  // 闆朵欢缁戝畾鐨勭被鍨�--0锛氭楠屽璞★紝1锛氫骇鍝佺淮鎶�
     }
   },
   created() {
-    if (this.PROJECT === '瑁呭鐢电紗') {
-      this.itemParameterData.requiredUp = ['sonLaboratory', 'inspectionItem', 'inspectionItemType', 'inspectionValueType',
-        'unit', 'manDay', 'templateId'
-      ]
-    }
+    this.refreshTable()
   },
   mounted() {
     this.token = {
       'token': sessionStorage.getItem('token')
     }
-    this.itemParameterEntityCopy = this.HaveJson(this.itemParameterData.entity)
-    this.testObjectDataEntityCopy = this.HaveJson(this.testObjectData.entity)
-    this.obtainItemParameterList() //鍦烘墍
-    this.selectStandardMethods()    // 璇曢獙鏂规硶
-    this.selectTestObjectByName()
-    this.getStandardTemplate() // 鍘熷璁板綍妯℃澘
-    this.selectDocUnit()
-
-    this.selectAllNeedEnum()
+    this.refreshTable()
   },
   computed: {
     title() {
-      return this.addOrUpdate == 1 ? '鏂板' : '缂栬緫'
+      return this.addOrUpdate === 1 ? '鏂板' : '缂栬緫'
     }
   },
   methods: {
-    //鏌ヨ闇�瑕佺殑鍏ㄩ儴鏋氫妇
-    selectAllNeedEnum(){
-      // this.$axios.post(this.$api.enums.selectEnumListByCategory,
-      //   {categoryList:['妫�楠岄」绫诲瀷','鍙栧�肩被鍨�','鏄惁','妫�楠屽�肩被鍨�','瀛愬疄楠屽','鍗曚綅']},{
-      //     headers: {
-      //       'Content-Type': 'application/json'
-      //     }
-      //   }).then(res => {
-      //   res.data['妫�楠岄」绫诲瀷'].forEach(ele => {
-      //     if(ele.label.indexOf('闈為噰闆�')==0)ele.type='info'
-      //   });
-      //   this.dicList.sonLaboratory = res.data['瀛愬疄楠屽']
-      //   this.dicList.unit = res.data['鍗曚綅']
-      //   this.dicList.inspectionItemType = res.data['妫�楠岄」绫诲瀷']
-      //   this.dicList.inspectionValueType = res.data['妫�楠屽�肩被鍨�']
-      //   this.dicList.bsm = res.data['鏄惁']
-      // })
-    },
-    saveOrEnit() {
-      console.log('this.addOrupdateForm', this.addOrupdateForm.sample);
-      let flag = true
-      this.$refs['addOrupdateForm'].validate((valid) => {
-        if (valid) {
-          flag = false
-          return false
-        }
-      });
-      if(flag) return
-      if(this.addOrupdateForm.sample != null && this.addOrupdateForm.sample != '' && this.addOrupdateForm.sample != undefined ) {
-        if(this.addOrupdateForm.sample.length > 0) {
-          this.addOrupdateForm.sample = JSON.stringify(this.addOrupdateForm.sample)
-        }else{
-          this.addOrupdateForm.sample = '[]'
-        }
-      }else{
-        this.addOrupdateForm.sample = '[]'
-      }
-
-      // 1鏄柊澧�
-      if(this.addOrUpdate == 1) {
-        this.addOrupdateForm.method = JSON.stringify(this.addOrupdateForm.method)
-        addItemParameter(this.addOrupdateForm).then(res => {
-          if(res.code == 200) {
-            this.$message.success('鏂板鎴愬姛')
-            this.refreshTable()
-            this.handleClose()
-            this.dialogVisible = false
-          } else {
-            // 鎶ラ敊 灏嗚浆鎹㈢殑method 浠ュ強 sample 杞崲鍥炴潵
-            this.addOrupdateForm.method = JSON.parse(this.addOrupdateForm.method)
-            this.addOrupdateForm.sample = JSON.parse(this.addOrupdateForm.sample)
-            this.$message.error(res.message)
-          }
-        })
-      }else{
-        this.addOrupdateForm.method = JSON.stringify(this.addOrupdateForm.method)
-        upItemParameter(this.addOrupdateForm).then(res => {
-          if(res.code == 200) {
-            this.$message.success('缂栬緫鎴愬姛')
-            this.refreshTable()
-            this.handleClose()
-            this.dialogVisible = false
-          } else {
-            // 鎶ラ敊 灏嗚浆鎹㈢殑method 浠ュ強 sample 杞崲鍥炴潵
-            this.addOrupdateForm.method = JSON.parse(this.addOrupdateForm.method)
-            this.addOrupdateForm.sample = JSON.parse(this.addOrupdateForm.sample)
-            this.$message.error(res.message)
-          }
-        })
-      }
-    },
-    handleClose() {
-      this.dialogVisible = false
-      this.addOrupdateForm = {
-        inspectionItem: '',
-        inspectionItemEn: '',
-        inspectionItemSubclass: '',
-        inspectionItemSubclassEn: '',
-        sample: null,
-        price: '',
-        laboratory: '',
-        sonLaboratory: '',
-        askTell: '',
-        ask: '',
-        unit: '',
-        manHour: '',
-        manDay: '',
-        manHourGroup: '',
-        inspectionItemType: '',
-        inspectionValueType: '',
-        dic: '',
-        bsm: '',
-        templateId: '',
-        inspectionItemClass: '',
-        inspectionItemClassEn: '',
-        method: null
-      }
-      this.$refs['addOrupdateForm'].resetFields();
-      this.addOrUpdate = ''
-    },
     submitUpload() {
       if (this.$refs.upload.uploadFiles.length == 0) {
         this.$message.error('鏈�夋嫨鏂囦欢')
@@ -645,7 +362,6 @@
         return
       }
       this.$message.success('涓婁紶鎴愬姛')
-      this.standardList = []
       this.productList = []
       this.refreshTable()
     },
@@ -655,142 +371,163 @@
       this.uploading = false
     },
     beforeUpload(file, fileList) {
-      if (file.raw.type != 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {
-        this.$message.error('涓婁紶鏂囦欢鏍煎紡涓嶆纭�');
+      if (file.size > 1024 * 1024 * 10) {
+        this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
         this.$refs.upload.clearFiles()
         return false;
+      } else {
+        return true;
       }
     },
-    selectorSwitch(radio) {
-      if (this.radio === '0') {
-        this.showItemParameter = true;
-        this.showTestObject = false;
-        this.selectTestObjectByName()
-        /* this.$nextTick(() => {
-          this.$refs.itemParameterTable.selectList()
-        }) */
+    onError1(err, file, fileList) {
+      this.$message.error('涓婁紶澶辫触')
+      this.$refs.upload1.clearFiles()
+      this.uploading = false
+    },
+    beforeUpload1(file, fileList) {
+      if (file.size > 1024 * 1024 * 10) {
+        this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
+        this.$refs.upload1.clearFiles()
+        return false;
       } else {
-        this.showTestObject = true;
-        this.showItemParameter = false;
+        return true;
       }
+    },
+    handleSuccessUp (response, file, fileList) {
+      this.$refs.upload.clearFiles()
+      if (response.code == 201) {
+        this.$message.error(response.message)
+        return
+      }
+      this.$message.success('涓婁紶鎴愬姛')
+      this.refreshTable()
     },
     refreshTable() {
-      this.itemParameterData.entity.inspectionItem = this.itemParameterForm.inspectionItem
-      this.itemParameterData.entity.inspectionItemSubclass = this.itemParameterForm.inspectionItemSubclass
-      this.itemParameterData.entity.sample = this.itemParameterForm.sample
-      if (this.radio === '0') {
-        // this.$refs['itemParameterTable'].selectList()
+      this.tableLoading = true
+      if (this.radio === 0) {
+        selectItemParameterList({...this.page, ...this.itemParameterForm}).then(res => {
+          this.tableLoading = false
+          if (res.code === 200) {
+            this.tableData = res.data
+            this.page.total = res.total
+          }
+        }).catch(err => {
+          this.tableLoading = false
+        })
       } else {
-        // this.$refs['testObjectTable'].selectList()
+        selectTestObjectList({...this.testObjectPage, ...this.itemParameterForm}).then(res => {
+          this.tableLoading = false
+          if (res.code === 200) {
+            this.testObjectTableData = res.data
+            this.testObjectPage.total = res.total
+          }
+        }).catch(err => {
+          this.tableLoading = false
+        })
       }
     },
     refresh() {
-      this.itemParameterData.entity = this.HaveJson(this.itemParameterEntityCopy)
-      this.testObjectData.entity = this.HaveJson(this.testObjectDataEntityCopy)
-      this.upIndex++
+      this.resetForm('itemParameterForm')
+      this.refreshTable()
     },
-    openAdd(row) {
-      //0浠h〃妫�楠屽弬鏁皌ab
-      if (this.radio === '0') {
-        // this.$refs.itemParameterTable.openAddDia(this.$api.capacityScope.addItemParameter);
-        if(!row) {
-          this.addOrUpdate = 1
-        }else{
-          if(typeof row.sample == 'string') {
-            row.sample = JSON.parse(row.sample)
-          }
-          this.addOrUpdate = ''
-          this.addOrupdateForm = JSON.parse(JSON.stringify(row))
-        }
-        this.dialogVisible = true
+    // 妫�楠岄」鐩弬鏁版柊澧�
+    openAdd() {
+      if (this.radio === 0) {
+        this.$refs.editForm.openDia('add')
       } else {
-        // this.$refs.testObjectTable.openAddDia(this.$api.capacityScope.addTestObject);
+        this.$refs.testObjectEditForm.openDia('add')
       }
     },
-    selectDocUnit() {
-      // this.$axios.post(this.$api.enums.getDic).then(res => {
-      //   this.dicList.dic = res.data.map(m => {
-      //     return {
-      //       label: m,
-      //       value: m
-      //     }
-      //   })
-      // })
+    // 妫�楠岄」鐩弬鏁�-鎵撳紑淇敼寮规
+    editForm (row) {
+      this.$refs.editForm.openDia('edit', row)
     },
-    obtainItemParameterList() {
-      obtainItemParameterList().then(res => {
-        let data = []
-        let data0 = []
-        res.data.forEach(a => {
-          data.push({
-            label: a.laboratoryName,
-            value: a.id
-          })
-          data0.push({
-            label: a.laboratoryName,
-            value: a.laboratoryName
-          })
-        })
-        // this.itemParameterData.selectField.laboratory.select = data0
-        // this.itemParameterData.tagField.laboratory.select = data0
-        this.testObjectData.selectField.laboratoryId.select = data
-        this.testObjectData.tagField.laboratoryId.select = data
-        this.laboratory = data
-      })
+    // 妫�楠岄」鐩弬鏁�-鍒犻櫎
+    delete (row) {
+      this.$modal.confirm('鏄惁纭鍒犻櫎姝ゆ暟鎹」锛�').then(function() {
+        return delItemParameter(row.id);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
     },
-    selectStandardMethods() {
-      selectStandardMethods().then(res => {
-        let data = []
-        res.data.forEach(a => {
-          data.push({
-            label: a.code,
-            value: a.code
-          })
-        })
-        this.dicList.method = data
-      })
+    // 妫�楠屽璞�-鎵撳紑淇敼寮规
+    editTestObjectForm (row) {
+      this.$refs.testObjectEditForm.openDia('edit', row)
     },
-    selectTestObjectByName() {
-      getItemTree().then(res => {
-        res.data.forEach(a=>{
-          this.cascaderFieldData(a)
-        })
-        this.itemParameterData.cascaderField.sample.tree = res.data
-        this.tree = res.data
-      })
+    // 妫�楠岄」鐩弬鏁�-鍒犻櫎
+    deleteTest (row) {
+      this.$modal.confirm('鏄惁纭鍒犻櫎姝ゆ暟鎹」锛�').then(function() {
+        return delTestObject(row.id);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
     },
-    cascaderFieldData(val){
-      if(val.children === undefined) {
-        return
-      }else if(val.children.length==0){[
-        delete val.children
-      ]}else{
-        val.children.forEach(a=>{
-          this.cascaderFieldData(a)
-        })
-      }
-    },
-    getStandardTemplate() {
-      // this.$axios.get(this.$api.StandardTemplate.getStandardTemplate).then(res => {
-      //   let data = []
-      //   res.data.forEach(a => {
-      //     data.push({
-      //       label: a.name,
-      //       value: a.id,
-      //       type: 'success'
-      //     })
-      //   })
-      //   // this.itemParameterData.selectField.templateId.select = data
-      //   // this.itemParameterData.tagField.templateId.select = data
-      //   this.dicList.templateId = data
-      // })
-    },
+    // 浜у搧缁存姢
     upProduct(row) {
-      this.productData.entity.objectId = row.id
       this.diaProduct = true
+      this.getProductList(row)
     },
+    getProductList (row) {
+      const params = {
+        objectId: 0,
+        partNo: row.partNo
+      }
+      this.productableLoading = true
+      selectProductListByObjectId({...params, ...this.productPage}).then(res => {
+        this.productableLoading = false
+        if (res.code === 200) return
+        this.productData = res.data
+        this.productPage.total = res.data.total
+      }).catch(err => {
+        this.productableLoading = false
+      })
+    },
+    // 浜у搧缁存姢-鏂板
     openAdd2(){
-      // this.$refs.productData.openAddDia(this.$api.capacityScope.addProduct, {objectId: this.productData.entity.objectId});
+
+    },
+    // 浜у搧缁存姢-缂栬緫
+    editProduct () {
+
+    },
+    // 浜у搧缁存姢-鍒犻櫎
+    deleteProduct (row) {
+      this.$modal.confirm('鏄惁纭鍒犻櫎姝ゆ暟鎹」锛�').then(function() {
+        return delProduct(row.id);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    // 闆朵欢缁戝畾
+    bindPartFirst (row) {
+      this.bindPart(row, 0)
+    },
+    bindPartSecond (row) {
+      this.bindPart(row, 1)
+    },
+    // 鍘傚瀵嗗害缁戝畾
+    bindSupplierDensitySecond (row) {
+      this.bindSupplierDensity(row)
+    },
+    // 鎵撳紑鍘傚瀵嗗害缁戝畾寮规
+    bindSupplierDensity (row) {
+      this.currentSupplierDensityRow = row
+      this.bindSupplierDensityDialog = true
+    },
+    // 鎵撳紑闆朵欢缁戝畾寮规
+    bindPart (row, index) {
+      this.type = index
+      this.currentRow = row
+      this.bindPartDialog = true
+    },
+    closeBindPartDialog () {
+      this.bindPartDialog = false
+    },
+    closeBindSupplierDensityDialog () {
+      this.bindSupplierDensityDialog = false
     },
   }
 }

--
Gitblit v1.9.3