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