From 5ba37c953aa14ac2f08931699378995af88c98a5 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 14 二月 2025 17:38:50 +0800
Subject: [PATCH] 能力范围页面迁移
---
src/components/Table/lims-table.vue | 2
src/components/capability/bindSupplierDensityDialog.vue | 165 ++++
src/api/structural/laboratoryScope.js | 2
src/api/structural/structureTestObjectPart.js | 42 +
src/components/capability/EditForm.vue | 469 ++++++++++++
src/components/capability/bindPartDialog.vue | 227 ++++++
src/components/capability/testObjectEditForm.vue | 143 +++
src/views/structural/capabilityAndLaboratory/capability/index.vue | 1089 +++++++++++------------------
src/api/structural/capability.js | 64 +
9 files changed, 1,525 insertions(+), 678 deletions(-)
diff --git a/src/api/structural/capability.js b/src/api/structural/capability.js
index f094d4c..7f61447 100644
--- a/src/api/structural/capability.js
+++ b/src/api/structural/capability.js
@@ -8,6 +8,14 @@
params: query
})
}
+// 鑾峰彇妫�娴嬪璞�
+export function selectTestObjectList(query) {
+ return request({
+ url: '/capacityScope/selectTestObjectList',
+ method: 'post',
+ params: query
+ })
+}
// 鏂板妫�楠岄」鐩弬鏁�
export function addItemParameter(query) {
return request({
@@ -39,3 +47,59 @@
method: 'get'
})
}
+// 鏂板妫�娴嬪璞�
+export function addTestObject(query) {
+ return request({
+ url: '/capacityScope/addTestObject',
+ method: 'post',
+ params: query
+ })
+}
+// 鍒犻櫎妫�娴嬪璞�
+export function delTestObject(query) {
+ return request({
+ url: '/capacityScope/delTestObject',
+ method: 'post',
+ params: query
+ })
+}
+// 淇敼妫�娴嬪璞�
+export function upTestObject(query) {
+ return request({
+ url: '/capacityScope/upTestObject',
+ method: 'post',
+ params: query
+ })
+}
+// 鏌ヨ妫�楠屽璞$殑浜у搧
+export function selectProductListByObjectId(query) {
+ return request({
+ url: '/capacityScope/selectProductListByObjectId',
+ method: 'post',
+ params: query
+ })
+}
+// 鏂板浜у搧
+export function addProduct(query) {
+ return request({
+ url: '/capacityScope/addProduct',
+ method: 'post',
+ params: query
+ })
+}
+// 鍒犻櫎浜у搧
+export function delProduct(query) {
+ return request({
+ url: '/capacityScope/delProduct',
+ method: 'post',
+ params: query
+ })
+}
+// 淇敼浜у搧
+export function upProduct(query) {
+ return request({
+ url: '/capacityScope/upProduct',
+ method: 'post',
+ params: query
+ })
+}
diff --git a/src/api/structural/laboratoryScope.js b/src/api/structural/laboratoryScope.js
index d0b0c7c..4fa59a1 100644
--- a/src/api/structural/laboratoryScope.js
+++ b/src/api/structural/laboratoryScope.js
@@ -1,6 +1,6 @@
import request from '@/utils/request'
-// 鑾峰彇妫�楠岄」鐩弬鏁�
+// 鑾峰彇鍦烘墍鏋氫妇鍊�
export function obtainItemParameterList() {
return request({
url: '/laboratoryScope/obtainItemParameterList',
diff --git a/src/api/structural/structureTestObjectPart.js b/src/api/structural/structureTestObjectPart.js
new file mode 100644
index 0000000..c6c8dd2
--- /dev/null
+++ b/src/api/structural/structureTestObjectPart.js
@@ -0,0 +1,42 @@
+import request from '@/utils/request'
+
+// 妫�楠屽璞℃牴鎹骇鍝乮d鏌ヨ闆朵欢
+export function selectByTestObjectId(query) {
+ return request({
+ url: '/structureTestObjectPart/selectByTestObjectId',
+ method: 'post',
+ params: query
+ })
+}
+// 妫�楠屽璞℃柊澧炰骇鍝侀浂浠�
+export function addTestObjectPart(query) {
+ return request({
+ url: '/structureTestObjectPart/addTestObjectPart',
+ method: 'post',
+ params: query
+ })
+}
+// 妫�楠屽璞′慨鏀逛骇鍝侀浂浠�
+export function updateTestObjectPart(query) {
+ return request({
+ url: '/structureTestObjectPart/updateTestObjectPart',
+ method: 'post',
+ params: query
+ })
+}
+// 妫�楠屽璞″垹闄や骇鍝侀浂浠�
+export function deleteTestObjectPart(query) {
+ return request({
+ url: '/structureTestObjectPart/deleteTestObjectPart',
+ method: 'post',
+ params: query
+ })
+}
+// 鏍规嵁浜у搧id鏌ヨ闆朵欢
+export function selectByProductId(query) {
+ return request({
+ url: 'ctPart/selectByProductId',
+ method: 'post',
+ params: query
+ })
+}
diff --git a/src/components/Table/lims-table.vue b/src/components/Table/lims-table.vue
index df1c423..7cc7d82 100644
--- a/src/components/Table/lims-table.vue
+++ b/src/components/Table/lims-table.vue
@@ -31,7 +31,7 @@
:filter-multiple="item.filterMultiple" :filtered-value="item.filteredValue"
:filters="item.filters" :fixed="item.fixed" :label="item.label"
:min-width="item.minWidth" :prop="item.prop"
- :show-overflow-tooltip="item.showOverflowTooltip"
+ show-overflow-tooltip
:sortable="item.sortable ? true : false" :type="item.type" :width="item.width"
align="center">
<!-- <div class="123" v-if="item.type == ''"> -->
diff --git a/src/components/capability/EditForm.vue b/src/components/capability/EditForm.vue
new file mode 100644
index 0000000..10842ec
--- /dev/null
+++ b/src/components/capability/EditForm.vue
@@ -0,0 +1,469 @@
+<template>
+ <div>
+ <el-dialog :title="operationType === 'add' ? '鏂板' : '缂栬緫'" :visible.sync="editFormDia" width="60%" @close="closeDia">
+ <el-form ref="editForm" :model="editForm" :rules="editFormRules" label-width="140px">
+ <el-col :span="12">
+ <el-form-item label="妫�楠岄」锛�" prop="inspectionItem">
+ <el-input v-model="editForm.inspectionItem" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="妫�楠岄」EN锛�" prop="inspectionItemEn">
+ <el-input v-model="editForm.inspectionItemEn" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="妫�楠屽瓙椤癸細" prop="inspectionItemSubclass">
+ <el-input v-model="editForm.inspectionItemSubclass" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="妫�楠屽瓙椤笶N锛�" prop="inspectionItemSubclassEn">
+ <el-input v-model="editForm.inspectionItemSubclassEn" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="妫�楠屽璞★細" prop="sample">
+ <el-cascader v-model="editForm.sample" :options="itemParameterData.cascaderField.sample.tree"
+ :props="{value:'name',label:'name',checkStrictly: true, multiple: true}"
+ :show-all-levels="false" clearable
+ filterable placeholder="璇烽�夋嫨" size="small" style="width: 100%;"></el-cascader>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍗曚环(鍏�)锛�" prop="price">
+ <el-input v-model="editForm.price" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍦烘墍锛�" prop="laboratory">
+ <el-select v-model="editForm.laboratory" clearable placeholder="璇烽�夋嫨" size="small" style="width: 100%">
+ <el-option v-for="item in laboratoryList" :key="item.label" :label="item.label" :value="item.label"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璇曢獙瀹わ細" prop="sonLaboratory">
+ <el-select v-model="editForm.sonLaboratory" clearable placeholder="璇烽�夋嫨" size="small" style="width: 100%">
+ <el-option v-for="item in sonLaboratoryList" :key="item.value" :label="item.label" :value="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="瑕佹眰鎻忚堪锛�" prop="askTell">
+ <el-input v-model="editForm.askTell" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="瑕佹眰鍊硷細" prop="ask">
+ <el-input v-model="editForm.ask" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璁¢噺鍗曚綅锛�" prop="unit">
+ <el-select v-model="editForm.unit" clearable placeholder="璇烽�夋嫨" size="small" style="width: 100%">
+ <el-option v-for="item in unitList" :key="item.value" :label="item.label" :value="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="宸ユ椂(H)锛�" prop="manHour">
+ <el-input v-model="editForm.manHour" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="棰勮鏃堕棿(H)锛�" prop="manDay">
+ <el-input v-model="editForm.manDay" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="宸ユ椂鍒嗙粍锛�" prop="manHourGroup">
+ <el-input v-model="editForm.manHourGroup" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="妫�楠岄」绫诲瀷锛�" prop="inspectionItemType">
+ <el-select v-model="editForm.inspectionItemType" clearable placeholder="璇烽�夋嫨" size="small" style="width: 100%">
+ <el-option v-for="item in inspectionItemTypeList" :key="item.value" :label="item.label" :value="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="妫�楠屽�肩被鍨嬶細" prop="inspectionValueType">
+ <el-select v-model="editForm.inspectionValueType" clearable placeholder="璇烽�夋嫨" size="small" style="width: 100%">
+ <el-option v-for="item in inspectionValueTypeList" :key="item.value" :label="item.label" :value="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="瀛楀吀绫诲瀷锛�" prop="dic">
+ <el-select v-model="editForm.dic" clearable placeholder="璇烽�夋嫨" size="small" style="width: 100%">
+ <el-option v-for="item in dicList" :key="item.value" :label="item.label" :value="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鐗规畩鏍囪瘑锛�" prop="bsm">
+ <el-select v-model="editForm.bsm" clearable placeholder="璇烽�夋嫨" size="small" style="width: 100%">
+ <el-option v-for="item in bsmList" :key="item.value" :label="item.label" :value="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍘熷璁板綍妯℃澘锛�" prop="templateId">
+ <el-select v-model="editForm.templateId" clearable placeholder="璇烽�夋嫨" size="small" style="width: 100%">
+ <el-option v-for="item in templateIdList" :key="item.value" :label="item.label" :value="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="妫�楠岄」鍒嗙被锛�" prop="inspectionItemClass">
+ <el-input v-model="editForm.inspectionItemClass" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="妫�楠岄」鍒嗙被EN锛�" prop="inspectionItemClassEn">
+ <el-input v-model="editForm.inspectionItemClassEn" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璇曢獙鏂规硶锛�" prop="method">
+ <el-select v-model="editForm.method" clearable multiple placeholder="璇烽�夋嫨" size="small" style="width: 100%">
+ <el-option v-for="item in methodList" :key="item.value" :label="item.label" :value="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鏉′欢锛�" prop="radiusList">
+ <el-select v-model="editForm.radiusList" allow-create default-first-option filterable multiple
+ placeholder="璇烽�夋嫨"
+ size="small"
+ style="width: 100%">
+ <el-option v-for="item in radiusListList" :key="item.value" :label="item.label" :value="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鏀惰垂鏍囧噯(鍏�/娆�)锛�" prop="rates">
+ <el-input v-model="editForm.rates" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="closeDia">鍙� 娑�</el-button>
+ <el-button :loading="editLoad" type="primary" @click="handleEdit">鎻� 浜�</el-button>
+ </span>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+
+export default {
+ name: "EditForm",
+ // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+ components: {},
+ data() {
+ // 杩欓噷瀛樻斁鏁版嵁
+ return {
+ editFormDia: false,
+ editLoad: false,
+ editForm: {
+ inspectionItem: '', // 妫�楠岄」
+ inspectionItemEn: '', // 妫�楠岄」EN
+ inspectionItemSubclass: '', // 妫�楠屽瓙椤�
+ inspectionItemSubclassEn: '', // 妫�楠屽瓙椤笶N
+ sample: [], // 妫�楠屽璞�
+ price: '', // 鍗曚环
+ laboratory: '', // 鍦烘墍
+ sonLaboratory: '', // 璇曢獙瀹�
+ askTell: '', // 瑕佹眰鎻忚堪
+ ask: '', // 瑕佹眰鍊�
+ unit: '', // 璁¢噺鍗曚綅
+ manHour: '', // 宸ユ椂
+ manDay: '', // 棰勮鏃堕棿
+ manHourGroup: '', // 宸ユ椂鍒嗙粍
+ inspectionItemType: '', // 妫�楠岄」绫诲瀷
+ inspectionValueType: '', // 妫�楠屽�肩被鍨�
+ dic: '', // 瀛楀吀绫诲瀷
+ bsm: '', // 鐗规畩鏍囪瘑
+ templateId: '', // 鍘熷璁板綍妯℃澘
+ inspectionItemClass: '', // 妫�楠岄」鍒嗙被
+ inspectionItemClassEn: '', // 妫�楠岄」鍒嗙被EN
+ method: '', // 璇曢獙鏂规硶
+ radiusList: [], // 鏉′欢
+ rates: '', // 鏉′欢
+ },
+ sampleList: [], // 妫�楠屽璞′笅鎷夋
+ laboratoryList: [], // 鍦烘墍涓嬫媺妗�
+ sonLaboratoryList: [], // 璇曢獙瀹や笅鎷夋
+ unitList: [], // 璁¢噺鍗曚綅涓嬫媺妗�
+ inspectionItemTypeList: [], // 妫�楠岄」绫诲瀷涓嬫媺妗�
+ inspectionValueTypeList: [], // 妫�楠屽�肩被鍨嬩笅鎷夋
+ dicList: [], // 瀛楀吀绫诲瀷涓嬫媺妗�
+ bsmList: [], // 鐗规畩鏍囪瘑涓嬫媺妗�
+ templateIdList: [], // 鍘熷璁板綍妯℃澘涓嬫媺妗�
+ methodList: [], // 璇曢獙鏂规硶涓嬫媺妗�
+ radiusListList: [], // 鏉′欢涓嬫媺妗�
+ itemParameterData: {
+ cascaderField: {
+ sample: {
+ tree: []
+ },
+ }
+ },
+ editFormRules: {
+ inspectionItem: [
+ { required: true, message: '璇烽�夋嫨妫�楠岄」', trigger: 'change' }
+ ],
+ sonLaboratory: [
+ { required: true, message: '璇烽�夋嫨璇曢獙瀹�', trigger: 'change' }
+ ],
+ unit: [
+ { required: true, message: '璇烽�夋嫨璁¢噺鍗曚綅', trigger: 'change' }
+ ],
+ inspectionItemType: [
+ { required: true, message: '璇烽�夋嫨妫�楠岄」绫诲瀷', trigger: 'change' }
+ ],
+ inspectionValueType: [
+ { required: true, message: '璇烽�夋嫨妫�楠屽�肩被鍨�', trigger: 'change' }
+ ],
+ templateId: [
+ { required: true, message: '璇烽�夋嫨鍘熷璁板綍妯℃澘', trigger: 'change' }
+ ]
+ },
+ operationType: ''
+ }
+ },
+ // 鏂规硶闆嗗悎
+ methods: {
+ openDia (type, row) {
+ this.operationType = type
+ this.editFormDia = true
+ this.selectEnumByCategory() // 妫�楠岄」绫诲瀷
+ this.selectEnumByCategoryForSpecial() // 鐗规畩鏍囪瘑
+ this.selectEnumByCategoryForInspectionValueType() // 妫�楠屽�肩被鍨�
+ this.obtainItemParameterList() // 鍦烘墍绫诲瀷
+ this.selectEnumByCategoryForSLaboratory() // 瀛愬疄楠屽
+ this.getStandardTemplate() // 鍘熷璁板綍妯℃澘涓嬫媺妗�
+ this.selectEnumByCategoryForUnit() // 璁¢噺鍗曚綅
+ this.selectStandardMethods() // 璇曢獙鏂规硶
+ this.selectDocUnit() // 瀛楀吀绫诲瀷
+ this.selectTestObjectByName() // 妫�楠屽璞�
+ if (type === 'add') {
+ this.editForm = {
+ inspectionItem: '', // 妫�楠岄」
+ inspectionItemEn: '', // 妫�楠岄」EN
+ inspectionItemSubclass: '', // 妫�楠屽瓙椤�
+ inspectionItemSubclassEn: '', // 妫�楠屽瓙椤笶N
+ sample: [], // 妫�楠屽璞�
+ price: '', // 鍗曚环
+ laboratory: '', // 鍦烘墍
+ sonLaboratory: '', // 璇曢獙瀹�
+ askTell: '', // 瑕佹眰鎻忚堪
+ ask: '', // 瑕佹眰鍊�
+ unit: '', // 璁¢噺鍗曚綅
+ manHour: '', // 宸ユ椂
+ manDay: '', // 棰勮鏃堕棿
+ manHourGroup: '', // 宸ユ椂鍒嗙粍
+ inspectionItemType: '', // 妫�楠岄」绫诲瀷
+ inspectionValueType: '', // 妫�楠屽�肩被鍨�
+ dic: '', // 瀛楀吀绫诲瀷
+ bsm: '', // 鐗规畩鏍囪瘑
+ templateId: '', // 鍘熷璁板綍妯℃澘
+ inspectionItemClass: '', // 妫�楠岄」鍒嗙被
+ inspectionItemClassEn: '', // 妫�楠岄」鍒嗙被EN
+ method: '', // 璇曢獙鏂规硶
+ radiusList: [], // 鏉′欢
+ rates: '', // 鏉′欢
+ }
+ this.$refs.editForm.resetFields()
+ } else {
+ this.editForm = this.HaveJson(row)
+ this.editForm.sample = JSON.parse(this.editForm.sample)
+ this.editForm.radiusList = JSON.parse(this.editForm.radiusList)
+ this.editForm.method = JSON.parse(this.editForm.method)
+ }
+ },
+ // 鎻愪氦缂栬緫
+ handleEdit () {
+ this.$refs.editForm.validate(valid => {
+ if (valid) {
+ this.editLoad = true
+ let obj = this.HaveJson(this.editForm)
+ obj.method = JSON.stringify(obj.method)
+ obj.sample = JSON.stringify(obj.sample)
+ console.log('obj.radiusList---', obj.radiusList)
+ if (obj.radiusList !== null && obj.radiusList.length > 0) {
+ obj.radiusList = JSON.stringify(obj.radiusList)
+ }
+ if(obj.id){
+ // 淇敼
+ this.$axios.post(this.$api.capacityScope.upItemParameter, obj, {
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ }).then(res => {
+ this.editLoad = false
+ if (res.code === 201) {
+ return
+ }
+ this.$message.success('淇敼鎴愬姛')
+ this.editFormDia = false
+ this.$parent.refreshTable('page')
+ }).catch(e => {
+ this.editLoad = false
+ this.editFormDia = false
+ })
+ }else{
+ // 鏂板
+ this.$axios.post(this.$api.capacityScope.addItemParameter, obj, {
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ }).then(res => {
+ this.editLoad = false
+ if (res.code === 201) {
+ return
+ }
+ this.$message.success('娣诲姞鎴愬姛')
+ this.editFormDia = false
+ this.$parent.refreshTable('page')
+ }).catch(e => {
+ this.editLoad = false
+ this.editFormDia = false
+ })
+ }
+ }
+ })
+ },
+ // 鍏抽棴寮规
+ closeDia () {
+ this.editFormDia = false
+ this.$refs.editForm.resetFields()
+ },
+ selectTestObjectByName() {
+ this.$axios.get(this.$api.capacityScope.getItemTree).then(res => {
+ res.data.forEach(a=>{
+ this.cascaderFieldData(a)
+ })
+ this.itemParameterData.cascaderField.sample.tree = res.data
+ // this.sampleTree = res.data
+ // console.log(2222,res.data)
+ })
+ },
+ cascaderFieldData(val){
+ if(val.children === undefined) {
+ return
+ }else if(val.children.length==0){
+ val.label = val.name
+ val.value = val.id
+ delete val.children
+ }else{
+ val.label = val.name
+ val.value = val.id
+ val.children.forEach(a=>{
+ a.label = a.name
+ a.value = a.id
+ this.cascaderFieldData(a)
+ })
+ }
+ },
+ selectStandardMethods() {
+ this.$axios.get(this.$api.standardMethod.selectStandardMethods).then(res => {
+ let data = []
+ res.data.forEach(a => {
+ data.push({
+ label: a.code,
+ value: a.code
+ })
+ })
+ this.methodList = data
+ })
+ },
+ selectDocUnit() {
+ this.$axios.post(this.$api.enums.getDic).then(res => {
+ this.dicList = res.data.map(m => {
+ return {
+ label: m,
+ value: m
+ }
+ })
+ })
+ },
+ obtainItemParameterList() {
+ this.$axios.get(this.$api.laboratoryScope.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.laboratoryList = data
+ })
+ },
+ selectEnumByCategory() {
+ this.$axios.post(this.$api.enums.selectEnumByCategory, {
+ category: "妫�楠岄」绫诲瀷"
+ }).then(res => {
+ res.data[1].type = 'info'
+ this.inspectionItemTypeList = res.data
+ })
+ },
+ selectEnumByCategoryForInspectionValueType() {
+ this.$axios.post(this.$api.enums.selectEnumByCategory, {
+ category: "妫�楠屽�肩被鍨�"
+ }).then(res => {
+ this.inspectionValueTypeList = res.data
+ })
+ },
+ 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.templateIdList = data
+ })
+ },
+ selectEnumByCategoryForSpecial() {
+ this.$axios.post(this.$api.enums.selectEnumByCategory, {
+ category: "鏄惁"
+ }).then(res => {
+ this.bsmList = res.data
+ })
+ },
+ selectEnumByCategoryForSLaboratory() {
+ this.$axios.post(this.$api.enums.selectEnumByCategory, {
+ category: "瀛愬疄楠屽"
+ }).then(res => {
+ this.sonLaboratoryList = res.data
+ })
+ },
+ selectEnumByCategoryForUnit() {
+ this.$axios.post(this.$api.enums.selectEnumByCategory, {
+ category: "鍗曚綅"
+ }).then(res => {
+ this.unitList = res.data
+ })
+ },
+ },
+}
+</script>
+
+<style scoped>
+>>>.el-dialog__body {
+ height: 620px;
+ overflow-y: auto;
+}
+</style>
diff --git a/src/components/capability/bindPartDialog.vue b/src/components/capability/bindPartDialog.vue
new file mode 100644
index 0000000..8b876a3
--- /dev/null
+++ b/src/components/capability/bindPartDialog.vue
@@ -0,0 +1,227 @@
+<template>
+ <div>
+ <el-dialog title="闆朵欢缁戝畾" :visible.sync="isShow" width="800px" @close="$emit('closeBindPartDialog')">
+ <div class="body" v-if="isShow" style="height: 500px;overflow-y: auto;padding: 5px 0;">
+ <lims-table :tableData="tableData" :column="column"
+ :page="page" :tableLoading="tableLoading"></lims-table>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="$emit('closeBindPartDialog')">鍙� 娑�</el-button>
+ <el-button type="primary" @click="addBindPart" :loading="addBindLoad">鏂� 澧�</el-button>
+ </span>
+ </el-dialog>
+ <el-dialog :title="dialogTitle" :visible.sync="addBindPartDialog" width="400px" @close="closeBindPartDialog"
+ :close-on-click-modal="false" >
+ <div class="body" v-if="addBindPartDialog">
+ <el-form label-position="right" label-width="80px"
+ ref="bindPartData"
+ :rules="bindPartDataRules"
+ :model="bindPartData">
+ <el-form-item label="闆朵欢鍙凤細" prop="partNo">
+ <el-input v-model="bindPartData.partNo" size="small"></el-input>
+ </el-form-item>
+ <el-form-item label="棰滆壊锛�">
+ <el-input v-model="bindPartData.color" size="small"></el-input>
+ </el-form-item>
+ <el-form-item label="鑹叉爣锛�">
+ <el-input v-model="bindPartData.colorCode" size="small"></el-input>
+ </el-form-item>
+ </el-form>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="closeBindPartDialog">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitBind" :loading="bindLoad">纭� 璁�</el-button>
+ </span>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import limsTable from "@/components/Table/lims-table.vue";
+import {selectByProductId, selectByTestObjectId} from "@/api/structural/structureTestObjectPart";
+
+export default {
+ name: "bindPartDialog",
+ // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+ components: {limsTable},
+ props: {
+ bindPartDialog: {
+ type: Boolean,
+ default: () => false
+ },
+ type: { // 闆朵欢缁戝畾鐨勭被鍨�--0锛氭楠屽璞★紝1锛氫骇鍝佺淮鎶�
+ type: Number,
+ default: () => null
+ },
+ currentRow : { // 閫夋嫨鏈潯鏁版嵁鐨勪俊鎭�
+ type: Object,
+ default: () => {}
+ }
+ },
+ data() {
+ // 杩欓噷瀛樻斁鏁版嵁
+ return {
+ isShow: this.bindPartDialog,
+ dialogTitle: '鏂板闆朵欢缁戝畾',
+ tableData: [],
+ tableLoading: false,
+ column: [
+ {label: '闆朵欢鍙�', prop: 'partNo'},
+ {label: '棰滆壊', prop: 'color'},
+ {label: '鑹叉爣', prop: 'colorCode'},
+ {
+ 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
+ },
+ bindPartComponent: {
+ entity: {
+ orderBy: {
+ field: 'id',
+ order: 'asc'
+ }
+ },
+ isPage: true,
+ 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: ['partNo'],
+ requiredUp: ['partNo'],
+ },
+ addBindPartDialog: false,
+ bindPartData: {
+ partNo: '', // 闆朵欢鍙�
+ color: '', // 棰滆壊
+ colorCode: '', // 鑹叉爣
+ },
+ bindPartDataRules: {
+ partNo: [
+ { required: true, message: '璇峰~鍐欓浂浠跺彿', trigger: 'blur' }
+ ]
+ },
+ bindLoad: false,
+ upIndex: 0,
+ addBindLoad: false,
+ }
+ },
+ mounted() {
+ this.getList()
+ },
+ // 鏂规硶闆嗗悎
+ methods: {
+ getList() {
+ this.tableLoading = true
+ // 鏍规嵁绫诲瀷鍒ゆ柇鏄楠屽璞¢浂浠剁粦瀹氳繕鏄骇鍝佺淮鎶ら浂浠剁粦瀹�
+ if (this.type === 0) {
+ selectByTestObjectId(this.currentRow.id).then(res => {
+ this.tableLoading = false
+ if (res.code === 200) {
+ this.tableData = res.data
+ this.page.total = res.total
+ }
+ }).catch(err => {
+ this.tableLoading = false
+ })
+ } else {
+ selectByProductId(this.currentRow.id).then(res => {
+ this.tableLoading = false
+ if (res.code === 200) {
+ this.tableData = res.data
+ this.page.total = res.total
+ }
+ }).catch(err => {
+ this.tableLoading = false
+ })
+ }
+ },
+ addBindPart () {
+ this.addBindPartDialog = true
+ },
+ // 鎻愪氦闆朵欢缁戝畾
+ submitBind () {
+ this.$refs['bindPartData'].validate((valid) => {
+ if (valid) {
+ // 鏍规嵁绫诲瀷鍒ゆ柇鏄楠屽璞¢浂浠剁粦瀹氳繕鏄骇鍝佺淮鎶ら浂浠剁粦瀹�
+ const params = this.type === 0 ? {
+ testObjectId: this.currentRow.id,
+ color: this.bindPartData.color,
+ colorCode: this.bindPartData.colorCode,
+ partNo: this.bindPartData.partNo,
+ } : {
+ productId: this.currentRow.id,
+ color: this.bindPartData.color,
+ colorCode: this.bindPartData.colorCode,
+ partNo: this.bindPartData.partNo,
+ }
+ this.bindLoad = true
+ if (this.type === 0) {
+
+ }
+ this.$axios.post(url, params, {
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ }).then(res => {
+ this.bindLoad = false
+ if (res.code === 200) {
+ this.$refs['bindPartData'].resetFields();
+ this.addBindPartDialog = false
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.getList()
+ }
+ }).catch(err => {
+ this.bindLoad = false
+ console.log(err)
+ })
+ } else {
+ console.log('error submit!!');
+ return false;
+ }
+ })
+ },
+ closeBindPartDialog () {
+ this.$refs['bindPartData'].resetFields();
+ this.addBindPartDialog = false
+ },
+ },
+}
+</script>
+
+<style scoped>
+</style>
diff --git a/src/components/capability/bindSupplierDensityDialog.vue b/src/components/capability/bindSupplierDensityDialog.vue
new file mode 100644
index 0000000..b9afe36
--- /dev/null
+++ b/src/components/capability/bindSupplierDensityDialog.vue
@@ -0,0 +1,165 @@
+<template>
+ <div>
+ <el-dialog title="鍘傚瀵嗗害缁戝畾" :visible.sync="isShow" width="800px" @close="$emit('closeBindPartDialog')">
+ <div class="body" v-if="isShow" style="height: 500px;overflow-y: auto;padding: 5px 0;">
+<!-- <ValueTable ref="bindPartComponent"-->
+<!-- :url="searchUrl"-->
+<!-- :upUrl="upUrl"-->
+<!-- :delUrl="delUrl"-->
+<!-- :componentData="bindPartComponent"-->
+<!-- :key="upIndex"/>-->
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="$emit('closeBindPartDialog')">鍙� 娑�</el-button>
+ <el-button type="primary" @click="addBindPart" :loading="addBindLoad">鏂� 澧�</el-button>
+ </span>
+ </el-dialog>
+ <el-dialog title="鏂板鍘傚瀵嗗害缁戝畾" :visible.sync="addBindSupplierDensityDialog" width="400px" @close="closeBindPartDialog":close-on-click-modal="false" >
+ <div class="body" v-if="addBindSupplierDensityDialog">
+ <el-form label-position="right" label-width="80px"
+ ref="bindSupplierDensityData"
+ :rules="bindPartDataRules"
+ :model="bindSupplierDensityData">
+ <el-form-item label="鍨嬪彿锛�" prop="model">
+ <el-input v-model="bindSupplierDensityData.model" size="small"></el-input>
+ </el-form-item>
+ <el-form-item label="鍘傚锛�" prop="supplierName">
+ <el-input v-model="bindSupplierDensityData.supplierName" size="small"></el-input>
+ </el-form-item>
+ <el-form-item label="瀵嗗害锛�" prop="densityValue">
+ <el-input v-model="bindSupplierDensityData.densityValue" size="small"></el-input>
+ </el-form-item>
+ </el-form>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="closeBindPartDialog">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitBind" :loading="bindLoad">纭� 璁�</el-button>
+ </span>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+// import ValueTable from "../../tool/value-table.vue";
+
+export default {
+ name: "bindSupplierDensityDialog",
+ // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+ components: {},
+ props: {
+ bindSupplierDensityDialog: {
+ type: Boolean,
+ default: () => false
+ },
+ currentRow : { // 閫夋嫨鏈潯鏁版嵁鐨勪俊鎭�
+ type: Object,
+ default: () => {}
+ }
+ },
+ data() {
+ // 杩欓噷瀛樻斁鏁版嵁
+ return {
+ searchUrl: '', // 鏌ヨ
+ upUrl: '', // 缂栬緫
+ delUrl: '', // 鍒犻櫎
+ isShow: this.bindSupplierDensityDialog,
+ bindPartComponent: {
+ entity: {
+ orderBy: {
+ field: 'id',
+ order: 'asc'
+ }
+ },
+ isPage: true,
+ 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: ['supplierName', 'densityValue'],
+ requiredUp: ['supplierName', 'densityValue'],
+ },
+ addBindSupplierDensityDialog: false,
+ bindSupplierDensityData: {
+ model: '', // 鍨嬪彿
+ supplierName: '', // 鍘傚
+ densityValue: '', // 瀵嗗害
+ },
+ bindPartDataRules: {
+ supplierName: [
+ { required: true, message: '璇峰~鍐欏巶瀹跺悕绉�', trigger: 'blur' }
+ ],
+ densityValue: [
+ { required: true, message: '璇峰~鍐欏瘑搴�', trigger: 'blur' }
+ ],
+ },
+ bindLoad: false,
+ upIndex: 0,
+ addBindLoad: false,
+ }
+ },
+ mounted() {
+ this.$set(this.bindPartComponent.entity, 'productId', this.currentRow.id)
+ },
+ // 鏂规硶闆嗗悎
+ methods: {
+ addBindPart () {
+ this.addBindSupplierDensityDialog = true
+ },
+ // 鎻愪氦闆朵欢缁戝畾
+ submitBind () {
+ this.$refs['bindSupplierDensityData'].validate((valid) => {
+ if (valid) {
+ // 鏍规嵁绫诲瀷鍒ゆ柇鏄楠屽璞¢浂浠剁粦瀹氳繕鏄骇鍝佺淮鎶ら浂浠剁粦瀹�
+ const params = {
+ productId: this.currentRow.id,
+ model: this.bindSupplierDensityData.model,
+ supplierName: this.bindSupplierDensityData.supplierName,
+ densityValue: this.bindSupplierDensityData.densityValue,
+ }
+ this.bindLoad = true
+ const url = this.$api.productSupplierDensity.addProductSupplierDensity
+ this.$axios.post(url, params, {
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ }).then(res => {
+ this.bindLoad = false
+ if (res.code === 200) {
+ this.$refs['bindSupplierDensityData'].resetFields();
+ this.addBindSupplierDensityDialog = false
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.$refs.bindPartComponent.selectList()
+ }
+ }).catch(err => {
+ this.bindLoad = false
+ console.log(err)
+ })
+ } else {
+ console.log('error submit!!');
+ return false;
+ }
+ })
+ },
+ closeBindPartDialog () {
+ this.$refs['bindSupplierDensityData'].resetFields();
+ this.addBindSupplierDensityDialog = false
+ },
+ },
+}
+</script>
+
+<style scoped>
+</style>
diff --git a/src/components/capability/testObjectEditForm.vue b/src/components/capability/testObjectEditForm.vue
new file mode 100644
index 0000000..5b1a799
--- /dev/null
+++ b/src/components/capability/testObjectEditForm.vue
@@ -0,0 +1,143 @@
+<template>
+ <div>
+ <el-dialog :title="operationType === 'add' ? '鏂板' : '缂栬緫'" :visible.sync="editFormDia" width="500px" @close="closeDia">
+ <el-form ref="editForm" :model="editForm" :rules="editFormRules" label-width="120px" label-position="right">
+ <el-form-item label="鍦烘墍锛�" prop="laboratoryId">
+ <el-select v-model="editForm.laboratoryId" clearable placeholder="璇烽�夋嫨" size="small" style="width: 100%">
+ <el-option v-for="item in laboratoryList" :key="item.label" :label="item.label" :value="item.label"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="妫�楠屽璞★細" prop="specimenName">
+ <el-input v-model="editForm.specimenName" clearable size="small"></el-input>
+ </el-form-item>
+ <el-form-item label="妫�楠屽璞N锛�" prop="specimenNameEn">
+ <el-input v-model="editForm.specimenNameEn" clearable size="small"></el-input>
+ </el-form-item>
+ <el-form-item label="瀵硅薄浠e彿锛�" prop="code">
+ <el-input v-model="editForm.code" clearable size="small"></el-input>
+ </el-form-item>
+ <el-form-item label="瀵硅薄绫诲瀷锛�" prop="objectType">
+ <el-select v-model="editForm.objectType" clearable placeholder="璇烽�夋嫨" size="small" style="width: 100%">
+ <el-option v-for="item in dict.type.object_type" :key="item.value" :label="item.label" :value="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="closeDia">鍙� 娑�</el-button>
+ <el-button :loading="editLoad" type="primary" @click="handleEdit">鎻� 浜�</el-button>
+ </span>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+
+import {obtainItemParameterList} from "@/api/structural/laboratoryScope";
+import {addTestObject, upTestObject} from "@/api/structural/capability";
+
+export default {
+ name: "EditForm",
+ // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+ dicts: ['object_type'],
+ components: {},
+ data() {
+ // 杩欓噷瀛樻斁鏁版嵁
+ return {
+ editFormDia: false,
+ editLoad: false,
+ editForm: {
+ laboratoryId: '', // 鍦烘墍
+ specimenName: '', // 妫�楠屽璞�
+ specimenNameEn: '', // 妫�楠屽璞N
+ code: '', // 瀵硅薄浠e彿
+ objectType: '', // 瀵硅薄绫诲瀷
+ },
+ laboratoryList: [],
+ editFormRules: {
+ laboratoryId: [
+ { required: true, message: '璇烽�夋嫨鍦烘墍', trigger: 'change' }
+ ],
+ specimenName: [
+ { required: true, message: '璇疯緭鍏ユ楠屽璞�', trigger: 'blur' }
+ ],
+ code: [
+ { required: true, message: '璇疯緭鍏ュ璞′唬鍙�', trigger: 'blur' }
+ ],
+ },
+ operationType: ''
+ }
+ },
+ // 鏂规硶闆嗗悎
+ methods: {
+ openDia (type, row) {
+ this.operationType = type
+ this.obtainItemParameterList()
+ this.editFormDia = true
+ if (type === 'add') {
+ this.$refs.editForm.resetFields()
+ } else {
+ this.editForm = this.HaveJson(row)
+ }
+ },
+ // 鎻愪氦缂栬緫
+ handleEdit () {
+ this.$refs.editForm.validate(valid => {
+ if (valid) {
+ this.editLoad = true
+ let obj = this.HaveJson(this.editForm)
+ if(obj.id){
+ // 淇敼
+ upTestObject(obj).then(res => {
+ this.editLoad = false
+ if (res.code === 201) {
+ return
+ }
+ this.$message.success('淇敼鎴愬姛')
+ this.closeDia()
+ }).catch(e => {
+ this.editLoad = false
+ this.editFormDia = false
+ })
+ }else{
+ // 鏂板
+ addTestObject(obj).then(res => {
+ this.editLoad = false
+ if (res.code === 201) {
+ return
+ }
+ this.$message.success('娣诲姞鎴愬姛')
+ this.closeDia()
+ }).catch(e => {
+ this.editLoad = false
+ this.editFormDia = false
+ })
+ }
+ }
+ })
+ },
+ // 鍏抽棴寮规
+ closeDia () {
+ this.editFormDia = false
+ this.$refs.editForm.resetFields()
+ this.$parent.refreshTable('page')
+ },
+ // 鑾峰彇鍦烘墍涓嬫媺妗嗙殑鍊�
+ obtainItemParameterList() {
+ obtainItemParameterList().then(res => {
+ let data = []
+ res.data.forEach(a => {
+ data.push({
+ label: a.laboratoryName,
+ value: a.id
+ })
+ })
+ this.laboratoryList = data
+ })
+ },
+ },
+}
+</script>
+
+<style scoped>
+
+</style>
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