From e5454b769d44a34af423bf87ac8a740bf8c20341 Mon Sep 17 00:00:00 2001 From: Crunchy <3114200645@qq.com> Date: 星期二, 29 四月 2025 13:25:29 +0800 Subject: [PATCH] Merge branch 'dev' into dev_tides --- src/views/structural/capabilityAndLaboratory/capability/index.vue | 1264 ++++++++++++++++++++++++++------------------------------- 1 files changed, 576 insertions(+), 688 deletions(-) diff --git a/src/views/structural/capabilityAndLaboratory/capability/index.vue b/src/views/structural/capabilityAndLaboratory/capability/index.vue index 085b188..19f9318 100644 --- a/src/views/structural/capabilityAndLaboratory/capability/index.vue +++ b/src/views/structural/capabilityAndLaboratory/capability/index.vue @@ -3,633 +3,402 @@ <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" @change="refreshTable"> <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="handleSuccessUp1" :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" v-if="radio===0"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="itemParameterForm.sample" @keyup.enter.native="refreshTable()"> + </el-input> + </el-form-item> + <el-form-item label="妫�楠屽璞�" prop="specimenName" v-if="radio===1"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="itemParameterForm.specimenName" @keyup.enter.native="refreshTable()"> + </el-input> + </el-form-item> + <el-form-item label="闆朵欢鍙�" prop="partNo" v-if="radio===1"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="itemParameterForm.partNo" @keyup.enter.native="refreshTable()"> + </el-input> + </el-form-item> + <el-form-item> + <el-button type="primary" size="mini" @click="refreshTable">鏌ヨ</el-button> + <el-button size="mini" @click="refresh">閲嶇疆</el-button> + </el-form-item> + </el-form> +<!-- 妫�楠岄」鐩弬鏁拌〃鏍�--> + <div class="table" v-if="radio===0"> + <lims-table :tableData="tableData" :column="column" key="tableData" + @pagination="pagination" :height="'calc(100vh - 290px)'" + :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 class="table" v-if="radio===1"> + <lims-table :tableData="testObjectTableData" :column="testObjectColumn" key="testObjectTableData" + @pagination="pagination" :height="'calc(100vh - 290px)'" + :page="testObjectPage" :tableLoading="tableLoading"></lims-table> </div> </div> - <div class="bodys"> - <div class="search" v-if="radio==1"> - <div class="search_thing"> - <div class="search_label">妫�楠屽璞★細</div> - <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable - v-model="testObjectData.entity.specimenName" @keyup.enter.native="refreshTable()"></el-input></div> - </div> - <div class="search_thing" style="padding-left: 30px;"> - <el-button size="small" @click="refresh()">閲� 缃�</el-button> - <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> - </div> - </div> - <div class="table" v-if="radio==1"> -<!-- <ValueTable ref="testObjectTable" :url="$api.capacityScope.selectTestObjectList"--> -<!-- :upUrl="$api.capacityScope.upTestObject" :delUrl="$api.capacityScope.delTestObject"--> -<!-- :componentData="testObjectData" :key="upIndex" />--> - </div> - </div> - <el-dialog title="浜у搧缁存姢" :visible.sync="diaProduct" width="600px"> - <div class="body" v-if="diaProduct" style="height: 350px;overflow-y: auto;padding: 5px 0;"> -<!-- <ValueTable ref="productData" :url="$api.capacityScope.selectProductListByObjectId"--> -<!-- :upUrl="$api.capacityScope.upProduct" :delUrl="$api.capacityScope.delProduct"--> -<!-- :componentData="productData" :key="upIndex"/>--> - </div> + <!--浜у搧缁存姢寮规--> + <el-dialog title="浜у搧缁存姢" :visible.sync="diaProduct" width="900px"> + <lims-table :tableData="productData" :column="productColumn" height="460" + @pagination="productPagination" + :page="productPage" :tableLoading="productableLoading"></lims-table> <span slot="footer" class="dialog-footer"> <el-button @click="diaProduct = false">鍙� 娑�</el-button> - <el-button type="primary" @click="openAdd2" :loading="productLoad">鏂� 澧�</el-button> + <el-button type="primary" @click="editProduct('add')" :loading="productLoad">鏂� 澧�</el-button> </span> </el-dialog> - <el-dialog title="鏁版嵁瀵煎叆" :visible.sync="uploadDia" width="500px"> -<!-- <div style="margin: 0 auto;">--> -<!-- <el-upload ref="upload" drag :action="javaApi + $api.capacityScope.importExcel" :headers="token" :file-list="fileList" name="file"--> -<!-- :auto-upload="false" accept=".xlsx" :limit="1" :on-change="beforeUpload" :on-success="onSuccess"--> -<!-- :on-error="onError">--> -<!-- <i class="el-icon-upload"></i>--> -<!-- <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>--> -<!-- </el-upload>--> -<!-- </div>--> - <span slot="footer" class="dialog-footer"> - <el-button @click="uploadDia = false">鍙� 娑�</el-button> - <el-button type="primary" @click="submitUpload()" :loading="uploading">涓� 浼�</el-button> - </span> - </el-dialog> - - <!-- 缂栬緫 鏂板 --> - <el-dialog - :title="title" - :visible.sync="dialogVisible" - width="50%" - :before-close="handleClose"> - <el-form :model="addOrupdateForm" label-width="120px" :rules="rules" inline ref="addOrupdateForm" size="mini"> - <el-form-item label="妫�楠岄」" prop="inspectionItem"> - <el-input v-model="addOrupdateForm.inspectionItem" placeholder="璇疯緭鍏ユ楠岄」" size="mini" style="width: 220px;"></el-input> + <!--浜у搧缁存姢缂栬緫--> + <el-dialog title="鎿嶄綔浜у搧缁存姢" :visible.sync="productEditDia" width="400px"> + <el-form :model="productEditForm" ref="productEditForm" :rules="productRules" label-position="right" label-width="100px"> + <el-form-item label="浜у搧鍚嶇О" prop="name"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="productEditForm.name"></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 label="浜у搧鍚嶇ОEN" prop="nameEn"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="productEditForm.nameEn"> + </el-input> </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-button @click="closeProduct">鍙� 娑�</el-button> + <el-button :loading="uploading" type="primary" @click="submitProduct">纭� 璁�</el-button> + </span> </el-dialog> - - - - - + <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 :loading="uploading" type="primary" @click="submitUpload()">涓� 浼�</el-button> + </span> + </el-dialog> + <!--妫�楠岄」鐩弬鏁�-缂栬緫寮规--> + <EditForm ref="editForm" @refreshList="refreshList1"></EditForm> + <testObjectEditForm ref="testObjectEditForm" @refreshList="refreshList"></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 "@/views/structural/capabilityAndLaboratory/capabilityComponents/bindPartDialog.vue" +import BindSupplierDensityDialog from "@/views/structural/capabilityAndLaboratory/capabilityComponents/bindSupplierDensityDialog.vue" +import { + addProduct, + delItemParameter, delProduct, delTestObject, selectItemParameterList, selectProductListByObjectId, + selectTestObjectList, upProduct, +} from "@/api/structural/capability"; +import limsTable from "@/components/Table/lims-table.vue"; +import EditForm from "@/views/structural/capabilityAndLaboratory/capabilityComponents/EditForm.vue"; +import testObjectEditForm from "@/views/structural/capabilityAndLaboratory/capabilityComponents/testObjectEditForm.vue"; +import {getToken} from "@/utils/auth"; +import { obtainItemParameterList } from '@/api/structural/laboratoryScope' export default { + name: 'Capability', + 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: [], + tableLoading: false, + 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: '鎿嶄綔', + width: '140px', + operation: [ + { + name: '缂栬緫', + type: 'text', + clickFun: (row) => { + this.editForm(row); + }, + }, + { + name: '鍒犻櫎', + type: 'text', + clickFun: (row) => { + this.delete(row); + }, + }, + ] + } + ], + page: { + total:0, + size:10, + current:1 + }, + testObjectTableData: [], + testObjectColumn: [ + { + dataType: 'tag', + label: '鍦烘墍', + prop: 'laboratoryId', + minWidth: '130', + formatData: (params) => { + let index = this.laboratoryList.findIndex(item => item.value == params) + if(index > -1) { + return this.laboratoryList[index].label + }else { + return null + } + // 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 null + } + } + }, + {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: '鎿嶄綔', + width: '240px', + 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 }, 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 + sample: null, + specimenName: null, + partNo: 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', + label: '鎿嶄綔', + operation: [ + { + name: '缂栬緫', + type: 'text', + clickFun: (row) => { + this.editProduct('edit', 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:1, + partNo: null, + layout: 'total, prev, pager, next' }, - inPower: true, - importExcel: false, + productableLoading: false, + productEditDia: false, + operationType: '', + productEditForm: { + objectId: '', + id: '', + name: '', + nameEn: '' + }, + objectId: '', + productRules: { + name: [{ required: true, message: '璇峰~鍐欎骇鍝佸悕绉�', trigger: 'blur' }], + nameEn: [{ required: true, message: '璇峰~鍐欎骇鍝佸悕绉癊N', trigger: 'blur' }] + }, uploadDia: false, fileList: [], - token: null, + token: {Authorization: "Bearer " + getToken()}, uploading: false, + currentRow: {}, // 閫夋嫨闆朵欢缁戝畾鏈潯鏁版嵁鐨勪俊鎭� + currentSupplierDensityRow: {}, // 閫夋嫨闆朵欢缁戝畾鏈潯鏁版嵁鐨勪俊鎭� + bindSupplierDensityDialog: false, + bindPartDialog: false, + type: null, // 闆朵欢缁戝畾鐨勭被鍨�--0锛氭楠屽璞★紝1锛氫骇鍝佺淮鎶�, + laboratoryList:[] } }, created() { - if (this.PROJECT === '瑁呭鐢电紗') { - this.itemParameterData.requiredUp = ['sonLaboratory', 'inspectionItem', 'inspectionItemType', 'inspectionValueType', - 'unit', 'manDay', 'templateId' - ] - } - }, - mounted() { - this.token = { - 'token': sessionStorage.getItem('token') - } - this.itemParameterEntityCopy = this.HaveJson(this.itemParameterData.entity) - this.testObjectDataEntityCopy = this.HaveJson(this.testObjectData.entity) - this.obtainItemParameterList() //鍦烘墍 - this.selectStandardMethods() // 璇曢獙鏂规硶 - this.selectTestObjectByName() - this.getStandardTemplate() // 鍘熷璁板綍妯℃澘 - this.selectDocUnit() - - this.selectAllNeedEnum() + this.getItemParameterList() + 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) { + if (this.$refs.upload.uploadFiles.length === 0) { this.$message.error('鏈�夋嫨鏂囦欢') return } @@ -640,12 +409,11 @@ this.$refs.upload.clearFiles() this.uploadDia = false this.uploading = false - if (response.code == 201) { - this.$message.error(response.message) + if (response.code !== 200) { + this.$message.error(response.msg) return } this.$message.success('涓婁紶鎴愬姛') - this.standardList = [] this.productList = [] this.refreshTable() }, @@ -655,143 +423,263 @@ 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; } + }, + handleSuccessUp1 (response, file, fileList) { + this.$refs.upload1.clearFiles() + if (response.code !== 200) { + this.$message.error(response.msg) + return + } + this.$message.success('涓婁紶鎴愬姛') + this.refreshTable() + }, + refreshList () { + this.refreshTable() + }, + refreshList1 () { + 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.records + this.page.total = res.data.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.records + this.testObjectPage.total = res.data.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.page.current = 1 + 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 + pagination (page) { + this.page.size = page.limit + this.refreshTable() + }, + // 妫�楠岄」鐩弬鏁版柊澧� + 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() { + // 妫�楠岄」鐩弬鏁�-鍒犻櫎 + delete (row) { + this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + delItemParameter({id:row.id}).then(res => { + if (res.code === 200) { + this.$message.success('鍒犻櫎鎴愬姛') + this.refreshTable(); + } + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }) + }, + // 妫�楠屽璞�-鎵撳紑淇敼寮规 + editTestObjectForm (row) { + this.$refs.testObjectEditForm.openDia('edit', row) + }, + // 妫�楠岄」鐩弬鏁�-鍒犻櫎 + deleteTest (row) { + this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + delTestObject({id:row.id}).then(res => { + if (res.code === 200) { + this.$message.success('鍒犻櫎鎴愬姛') + this.refreshTable(); + } + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }) + }, + // 浜у搧缁存姢 + upProduct(row) { + this.diaProduct = true + this.objectId = row.id + this.productPage.current = 1 + this.productPage.partNo = this.itemParameterForm.partNo + this.getProductList(row) + }, + // 鏌ヨ浜у搧缁存姢鍒楄〃鏁版嵁 + getProductList () { + const params = { + objectId: this.objectId, + } + this.productableLoading = true + selectProductListByObjectId({...params, ...this.productPage}).then(res => { + this.productableLoading = false + this.productData = res.data.records + this.productPage.total = res.data.total + }).catch(err => { + this.productableLoading = false + }) + }, + // 浜у搧缁存姢鍒楄〃鍒嗛〉 + productPagination(page) { + this.productPage.current = page.page + this.getProductList() + }, + // 浜у搧缁存姢-鏂板-缂栬緫 + editProduct (type, row) { + this.productEditDia = true + this.operationType = type + if (type === 'edit') { + this.productEditForm = this.HaveJson(row) + } + }, + // 鎻愪氦浜у搧缁存姢淇敼 + submitProduct () { + this.$refs['productEditForm'].validate((valid) => { + if (valid) { + this.uploading = true + this.productEditForm.objectId = this.objectId + if (this.operationType === 'add') { + addProduct(this.productEditForm).then(res => { + this.uploading = false + if (res.code === 200) { + this.$message.success('鏂板鎴愬姛') + this.closeProduct() + this.getProductList(); + } + }).catch(err => { + this.uploading = false + }) + } else { + upProduct(this.productEditForm).then(res => { + this.uploading = false + if (res.code === 200) { + this.$message.success('鏂板鎴愬姛') + this.closeProduct() + this.getProductList(); + } + }).catch(err => { + this.uploading = false + }) + } + } + }) + }, + closeProduct() { + this.resetForm('productEditForm') + this.productEditDia = false + }, + // 浜у搧缁存姢-鍒犻櫎 + deleteProduct (row) { + this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + delProduct({id:row.id}).then(res => { + if (res.code === 200) { + this.$message.success('鍒犻櫎鎴愬姛') + this.getProductList(); + } + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }) + }, + // 闆朵欢缁戝畾 + 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 + }, + getItemParameterList(){ 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 + this.laboratoryList = data }) - }, - selectStandardMethods() { - selectStandardMethods().then(res => { - let data = [] - res.data.forEach(a => { - data.push({ - label: a.code, - value: a.code - }) - }) - this.dicList.method = data - }) - }, - selectTestObjectByName() { - getItemTree().then(res => { - res.data.forEach(a=>{ - this.cascaderFieldData(a) - }) - this.itemParameterData.cascaderField.sample.tree = res.data - this.tree = res.data - }) - }, - cascaderFieldData(val){ - if(val.children === undefined) { - return - }else if(val.children.length==0){[ - delete val.children - ]}else{ - val.children.forEach(a=>{ - this.cascaderFieldData(a) - }) - } - }, - getStandardTemplate() { - // this.$axios.get(this.$api.StandardTemplate.getStandardTemplate).then(res => { - // let data = [] - // res.data.forEach(a => { - // data.push({ - // label: a.name, - // value: a.id, - // type: 'success' - // }) - // }) - // // this.itemParameterData.selectField.templateId.select = data - // // this.itemParameterData.tagField.templateId.select = data - // this.dicList.templateId = data - // }) - }, - upProduct(row) { - this.productData.entity.objectId = row.id - this.diaProduct = true - }, - openAdd2(){ - // this.$refs.productData.openAddDia(this.$api.capacityScope.addProduct, {objectId: this.productData.entity.objectId}); - }, + } } } </script> -- Gitblit v1.9.3