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