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

---
 /dev/null                                                         |   13 
 src/api/structural/standardMethod.js                              |    9 
 src/api/structural/laboratoryScope.js                             |    9 
 src/views/structural/capabilityAndLaboratory/laboratory/index.vue |    0 
 src/views/structural/capabilityAndLaboratory/capability/index.vue |  805 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/api/structural/capability.js                                  |   41 ++
 6 files changed, 864 insertions(+), 13 deletions(-)

diff --git a/src/api/structural/capability.js b/src/api/structural/capability.js
new file mode 100644
index 0000000..f094d4c
--- /dev/null
+++ b/src/api/structural/capability.js
@@ -0,0 +1,41 @@
+import request from '@/utils/request'
+
+// 鑾峰彇妫�楠岄」鐩弬鏁�
+export function selectItemParameterList(query) {
+  return request({
+    url: '/capacityScope/selectItemParameterList',
+    method: 'post',
+    params: query
+  })
+}
+// 鏂板妫�楠岄」鐩弬鏁�
+export function addItemParameter(query) {
+  return request({
+    url: '/capacityScope/addItemParameter',
+    method: 'post',
+    params: query
+  })
+}
+// 鍒犻櫎妫�楠岄」鐩弬鏁�
+export function delItemParameter(query) {
+  return request({
+    url: '/capacityScope/delItemParameter',
+    method: 'post',
+    params: query
+  })
+}
+// 淇敼妫�楠岄」鐩弬鏁�
+export function upItemParameter(query) {
+  return request({
+    url: '/capacityScope/upItemParameter',
+    method: 'post',
+    params: query
+  })
+}
+// 鑾峰彇妫�楠屽璞℃爲
+export function getItemTree() {
+  return request({
+    url: '/capacityScope/getItemTree',
+    method: 'get'
+  })
+}
diff --git a/src/api/structural/laboratoryScope.js b/src/api/structural/laboratoryScope.js
new file mode 100644
index 0000000..d0b0c7c
--- /dev/null
+++ b/src/api/structural/laboratoryScope.js
@@ -0,0 +1,9 @@
+import request from '@/utils/request'
+
+// 鑾峰彇妫�楠岄」鐩弬鏁�
+export function obtainItemParameterList() {
+  return request({
+    url: '/laboratoryScope/obtainItemParameterList',
+    method: 'get'
+  })
+}
diff --git a/src/api/structural/standardMethod.js b/src/api/structural/standardMethod.js
new file mode 100644
index 0000000..a1412c8
--- /dev/null
+++ b/src/api/structural/standardMethod.js
@@ -0,0 +1,9 @@
+import request from '@/utils/request'
+
+// 鑾峰彇妫�楠岄」鐩弬鏁�
+export function selectStandardMethods() {
+  return request({
+    url: '/standardMethod/selectStandardMethods',
+    method: 'get'
+  })
+}
diff --git a/src/views/structural/capability/index.vue b/src/views/structural/capability/index.vue
deleted file mode 100644
index 2ebcd51..0000000
--- a/src/views/structural/capability/index.vue
+++ /dev/null
@@ -1,13 +0,0 @@
-<script>
-export default {
-name: "index"
-}
-</script>
-
-<template>
-
-</template>
-
-<style scoped lang="scss">
-
-</style>
diff --git a/src/views/structural/capabilityAndLaboratory/capability/index.vue b/src/views/structural/capabilityAndLaboratory/capability/index.vue
new file mode 100644
index 0000000..085b188
--- /dev/null
+++ b/src/views/structural/capabilityAndLaboratory/capability/index.vue
@@ -0,0 +1,805 @@
+<template>
+  <div class="capacity-scope">
+    <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-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-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>
+      <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>
+    </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"/>-->
+      </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>-->
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="uploadDia = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="submitUpload()" :loading="uploading">涓� 浼�</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>
+
+
+
+
+
+  </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";
+
+export default {
+  data() {
+    return {
+      dicList: {
+        inspectionItemType: [],
+        inspectionValueType: [],
+        bsm: [],
+        sonLaboratory: [],
+        unit: [],
+        dic: [],
+        method: [],
+      },
+      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'],
+      },
+      inPower: true,
+      importExcel: false,
+      uploadDia: false,
+      fileList: [],
+      token: null,
+      uploading: false,
+    }
+  },
+  created() {
+    if (this.PROJECT === '瑁呭鐢电紗') {
+      this.itemParameterData.requiredUp = ['sonLaboratory', 'inspectionItem', 'inspectionItemType', 'inspectionValueType',
+        'unit', 'manDay', 'templateId'
+      ]
+    }
+  },
+  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()
+  },
+  computed: {
+    title() {
+      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('鏈�夋嫨鏂囦欢')
+        return
+      }
+      this.uploading = true
+      this.$refs.upload.submit();
+    },
+    onSuccess(response, file, fileList) {
+      this.$refs.upload.clearFiles()
+      this.uploadDia = false
+      this.uploading = false
+      if (response.code == 201) {
+        this.$message.error(response.message)
+        return
+      }
+      this.$message.success('涓婁紶鎴愬姛')
+      this.standardList = []
+      this.productList = []
+      this.refreshTable()
+    },
+    onError(err, file, fileList) {
+      this.$message.error('涓婁紶澶辫触')
+      this.$refs.upload.clearFiles()
+      this.uploading = false
+    },
+    beforeUpload(file, fileList) {
+      if (file.raw.type != 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {
+        this.$message.error('涓婁紶鏂囦欢鏍煎紡涓嶆纭�');
+        this.$refs.upload.clearFiles()
+        return false;
+      }
+    },
+    selectorSwitch(radio) {
+      if (this.radio === '0') {
+        this.showItemParameter = true;
+        this.showTestObject = false;
+        this.selectTestObjectByName()
+        /* this.$nextTick(() => {
+          this.$refs.itemParameterTable.selectList()
+        }) */
+      } else {
+        this.showTestObject = true;
+        this.showItemParameter = false;
+      }
+    },
+    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()
+      } else {
+        // this.$refs['testObjectTable'].selectList()
+      }
+    },
+    refresh() {
+      this.itemParameterData.entity = this.HaveJson(this.itemParameterEntityCopy)
+      this.testObjectData.entity = this.HaveJson(this.testObjectDataEntityCopy)
+      this.upIndex++
+    },
+    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
+      } else {
+        // this.$refs.testObjectTable.openAddDia(this.$api.capacityScope.addTestObject);
+      }
+    },
+    selectDocUnit() {
+      // this.$axios.post(this.$api.enums.getDic).then(res => {
+      //   this.dicList.dic = res.data.map(m => {
+      //     return {
+      //       label: m,
+      //       value: m
+      //     }
+      //   })
+      // })
+    },
+    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
+      })
+    },
+    selectStandardMethods() {
+      selectStandardMethods().then(res => {
+        let data = []
+        res.data.forEach(a => {
+          data.push({
+            label: a.code,
+            value: a.code
+          })
+        })
+        this.dicList.method = data
+      })
+    },
+    selectTestObjectByName() {
+      getItemTree().then(res => {
+        res.data.forEach(a=>{
+          this.cascaderFieldData(a)
+        })
+        this.itemParameterData.cascaderField.sample.tree = res.data
+        this.tree = res.data
+      })
+    },
+    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
+    },
+    openAdd2(){
+      // this.$refs.productData.openAddDia(this.$api.capacityScope.addProduct, {objectId: this.productData.entity.objectId});
+    },
+  }
+}
+</script>
+
+<style scoped>
+.title {
+  height: 40px;
+  line-height: 40px;
+  margin-bottom: 10px;
+}
+</style>
diff --git a/src/views/structural/laboratory/index.vue b/src/views/structural/capabilityAndLaboratory/laboratory/index.vue
similarity index 100%
rename from src/views/structural/laboratory/index.vue
rename to src/views/structural/capabilityAndLaboratory/laboratory/index.vue

--
Gitblit v1.9.3