From 84effa9b1ba6ec0f6d9779151cb3bb75182fa489 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期五, 14 二月 2025 09:59:12 +0800 Subject: [PATCH] 实验室资质页面迁移 --- src/views/structural/laboratory/index.vue | 158 +++++++++++++++++----------------------------------- 1 files changed, 52 insertions(+), 106 deletions(-) diff --git a/src/views/structural/laboratory/index.vue b/src/views/structural/laboratory/index.vue index 00da998..c91342e 100644 --- a/src/views/structural/laboratory/index.vue +++ b/src/views/structural/laboratory/index.vue @@ -2,7 +2,7 @@ <div class="capacity-scope"> <div> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> - <el-form-item label="璧勮川鍚嶇О" prop="nickName"> + <el-form-item label="璧勮川鍚嶇О" prop="name"> <el-select v-model="queryParams.name" placeholder="閫夋嫨璧勮川鍚嶇О" size="small" @change="refreshTable()"> <el-option v-for="dict in dict.type.qualification_name" :key="dict.value" :label="dict.label" :value="dict.value"> {{ dict.label }} @@ -70,53 +70,24 @@ </div> </div> <el-dialog title="璧勮川鏇存柊" :visible.sync="qualificationsConnectVisible" width="400px"> - <div class="search_thing" style="margin-bottom: 16px;"> - <div class="search_label" style="width:120px"><span class="required-span">* </span>璧勮川鍚嶇О锛�</div> - <div class="search_input"> + <el-form ref="formDataRef" :model="formData" label-position="right" :rules="formDataRules" label-width="78px"> + <el-form-item label="璧勮川鍚嶇О" prop="name"> <el-select v-model="formData.name" placeholder="璇烽�夋嫨" style="width: 100%;" size="small" clearable> - <el-option - v-for="item in qualificationsList" - :key="item.value" - :label="item.label" - :value="item.value"> + <el-option v-for="dict in dict.type.qualification_name" :key="dict.value" :label="dict.label" :value="dict.value"> + {{ dict.label }} </el-option> </el-select> - </div> - </div> - <div class="search_thing" style="margin-bottom: 16px;"> - <div class="search_label" style="width:120px"><span class="required-span">* </span>璧勮川缂栫爜锛�</div> - <div class="search_input"> - <el-input - size="small" - placeholder="璇疯緭鍏�" - clearable - v-model="formData.code"></el-input> - </div> - </div> - <div class="search_thing" style="margin-bottom: 16px;"> - <div class="search_label" style="width:120px"><span class="required-span">* </span>棰佸彂鏈烘瀯锛�</div> - <div class="search_input"> - <el-input - size="small" - placeholder="璇疯緭鍏�" - clearable - v-model="formData.organization"></el-input> - </div> - </div> - <div class="search_thing" style="margin-bottom: 16px;"> - <div class="search_label" style="width:120px">璧勮川璇存槑锛�</div> - <div class="search_input"> - <el-input - size="small" - placeholder="璇疯緭鍏�" - clearable - v-model="formData.explanation"></el-input> - </div> - </div> - - <div class="search_thing" style="margin-bottom: 16px;"> - <div class="search_label" style="width:120px"><span class="required-span">* </span>棰佸彂鏃堕棿锛�</div> - <div class="search_input"> + </el-form-item> + <el-form-item label="璧勮川缂栫爜" prop="code"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="formData.code"></el-input> + </el-form-item> + <el-form-item label="棰佸彂鏈烘瀯" prop="organization"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="formData.organization"></el-input> + </el-form-item> + <el-form-item label="璧勮川璇存槑" prop="explanation"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="formData.explanation"></el-input> + </el-form-item> + <el-form-item label="棰佸彂鏃堕棿" prop="dateOfIssuance"> <el-date-picker style="width:100%" v-model="formData.dateOfIssuance" type="datetime" size="small" @@ -125,11 +96,8 @@ clearable placeholder="閫夋嫨鏃ユ湡"> </el-date-picker> - </div> - </div> - <div class="search_thing" style="margin-bottom: 16px;"> - <div class="search_label" style="width:120px"><span class="required-span">* </span>鍒版湡鏃堕棿锛�</div> - <div class="search_input"> + </el-form-item> + <el-form-item label="鍒版湡鏃堕棿" prop="expireTime"> <el-date-picker style="width:100%" v-model="formData.expireTime" type="datetime" size="small" @@ -138,14 +106,11 @@ clearable placeholder="閫夋嫨鏃ユ湡"> </el-date-picker> - </div> - </div> - <div class="search_thing" style="margin-bottom: 16px;"> - <div class="search_label" style="width:120px">璧勮川鍥剧墖锛�</div> - <div class="search_input"> + </el-form-item> + <el-form-item label="璧勮川鍥剧墖"> <el-upload ref="upload" - :action="action" + :action="uploadAction" :on-success="m=>handleSuccessUpImg(m,'imageUrl')" accept='image/jpg,image/jpeg,image/png' :multiple="false" @@ -154,21 +119,19 @@ :on-error="onError"> <el-button slot="trigger" size="small" type="primary">閫夊彇鍥剧墖</el-button> </el-upload> - </div> - </div> - <div class="search_thing" style="margin-bottom: 16px;"> - <div class="search_label" style="width:120px">璧勮川闄勪欢锛�</div> - <div class="search_input"> + </el-form-item> + <el-form-item label="璧勮川闄勪欢"> <el-upload ref="upload1" - :action="action" + :action="uploadAction" :on-success="m=>handleSuccessUpImg(m,'fileUrl')" - accept='image/jpg,image/jpeg,image/png,application/pdf,.doc,.docx' :headers="headers" :multiple="false" :limit="1" :on-change="beforeUpload1" + accept='image/jpg,image/jpeg,image/png,application/pdf,.doc,.docx' + :headers="headers" :multiple="false" :limit="1" :on-change="beforeUpload1" :on-error="onError1"> <el-button slot="trigger" size="small" type="primary">閫夊彇鏂囦欢</el-button> </el-upload> - </div> - </div> + </el-form-item> + </el-form> <span slot="footer" class="dialog-footer"> <el-button @click="qualificationsConnectVisible = false">鍙� 娑�</el-button> <el-button type="primary" @click="confirmQualifications" :loading="loading">纭� 瀹�</el-button> @@ -180,6 +143,7 @@ <script> import limsTable from "@/components/Table/lims-table.vue"; import {addCertificationDetail, delCertificationDetail, getCertificationDetail} from "@/api/structural/laboratory"; +import {getToken} from "@/utils/auth"; export default { components: { @@ -226,6 +190,13 @@ qualificationsList:[], qualificationsConnectVisible:false, formData:{}, + formDataRules: { + name: [{ required: true, message: "璇峰~鍐欒祫璐ㄥ悕绉�", trigger: "change" }], + code: [{ required: true, message: "璇峰~鍐欒祫璐ㄧ紪鐮�", trigger: "blur" }], + organization: [{ required: true, message: "璇峰~鍐欓鍙戞満鏋�", trigger: "blur" }], + dateOfIssuance: [{ required: true, message: "璇烽�夋嫨棰佸彂鏃堕棿", trigger: "change" }], + expireTime: [{ required: true, message: "璇峰~鍐欏埌鏈熸椂闂�", trigger: "change" }], + }, loading:false, pageLoading:false, isLoding: false, // 鍔犺浇涓紝loading鍥炬爣,榛樿涓簍rue @@ -234,16 +205,8 @@ pageSize: 16, // 涓�椤�16鏉� total: '', list:[], - } - }, - computed: { - headers() { - return { - 'token': sessionStorage.getItem('token') - } - }, - action() { - return '' + uploadAction: process.env.VUE_APP_BASE_API + '/deviceScope/uploadFile', + headers: { Authorization: "Bearer " + getToken() }, } }, mounted() { @@ -384,37 +347,20 @@ this.$refs.upload1.clearFiles() }, confirmQualifications(){ - if(!this.formData.name){ - this.$message.error('鏈~鍐欒祫璐ㄥ悕绉�'); - return - } - if(!this.formData.code){ - this.$message.error('鏈~鍐欒祫璐ㄧ紪鐮�'); - return - } - if(!this.formData.organization){ - this.$message.error('鏈~鍐欓鍙戞満鏋�'); - return - } - if(!this.formData.expireTime){ - this.$message.error('鏈~鍐欏埌鏈熼鍙戞椂闂�'); - return - } - if(!this.formData.imageUrl){ - this.$message.error('鏈笂浼犺祫璐ㄥ浘鐗�'); - return - } - if(!this.formData.fileUrl){ - this.$message.error('鏈笂浼犺祫璐ㄩ檮浠�'); - return - } - this.loading = true; - addCertificationDetail({...this.formData}).then(res => { - this.loading = false - if (res.code === 201) return - this.$message.success('宸叉彁浜�') - this.refreshTable('page') - this.qualificationsConnectVisible = false + this.$refs['formDataRef'].validate((valid) => { + if (valid) { + this.loading = true; + addCertificationDetail({...this.formData}).then(res => { + this.loading = false + if (res.code === 201) return + this.$message.success('宸叉彁浜�') + this.refreshTable() + this.resetForm("formDataRef"); + this.qualificationsConnectVisible = false + }).catch(err => { + this.loading = false + }) + } }) }, // 婊氬姩瑙﹀簳鍔犺浇 -- Gitblit v1.9.3