From 3c6566a26c6bb6f68deed9f2c8e7b6eab1209134 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 28 八月 2026 15:42:42 +0800
Subject: [PATCH] feat(order): 添加产品检验项选择功能并增加导入导出功能 - 实现产品检验项的选择状态管理和计数显示功能 - 添加标准物质和设备管理模块的导入导出功能 - 新增导入模板下载和上传验证机制 - 调整表单验证规则,移除生产单位必填限制
---
src/views/CNAS/resourceDemand/standardMaterial/index.vue | 78 +++++++++++++++++++++++++++++++++++++-
1 files changed, 75 insertions(+), 3 deletions(-)
diff --git a/src/views/CNAS/resourceDemand/standardMaterial/index.vue b/src/views/CNAS/resourceDemand/standardMaterial/index.vue
index f6378d0..79cf6dc 100644
--- a/src/views/CNAS/resourceDemand/standardMaterial/index.vue
+++ b/src/views/CNAS/resourceDemand/standardMaterial/index.vue
@@ -12,13 +12,14 @@
@keyup.enter.native="searchList"></el-input>
</el-form-item>
<el-form-item>
- <el-button type="primary" icon="el-icon-search" size="mini" @click="searchList">鏌� 璇�</el-button>
- <el-button icon="el-icon-refresh" size="mini" @click="resetSearchForm">閲� 缃�</el-button>
+ <el-button type="primary" size="mini" @click="searchList">鏌ヨ</el-button>
+ <el-button size="mini" @click="resetSearchForm">閲嶇疆</el-button>
</el-form-item>
</el-form>
</div>
<div>
<el-button size="small" @click="exportFun">瀵� 鍑�</el-button>
+ <el-button size="small" type="primary" @click="importVisible = true">瀵� 鍏�</el-button>
<el-button size="small" type="primary" @click="openFormDia('add')">鏂� 澧�</el-button>
</div>
</div>
@@ -29,6 +30,22 @@
<form-dia v-if="formDia" ref="formDia" @closeYearDia="closeYearDia"></form-dia>
<borrow-dia v-if="borrowDia" ref="borrowDia" @closeYearDia="closeBorrowDia"></borrow-dia>
<return-dia v-if="returnDia" ref="returnDia" @closeYearDia="closeReturnDia"></return-dia>
+ <el-dialog title="鏍囧噯鐗╄川瀵煎叆" :visible.sync="importVisible" width="500px" @closed="resetImport">
+ <div style="margin-bottom: 12px;">
+ 璇蜂娇鐢ㄦ爣鍑嗙墿璐ㄥ鍏ユā鏉垮~鍐欐暟鎹紝鍗曚釜鏂囦欢涓嶈秴杩�10MB銆�
+ <el-button type="text" @click="downloadTemplate">涓嬭浇瀵煎叆妯℃澘</el-button>
+ </div>
+ <el-upload ref="standardSubstanceUpload" drag name="file" accept=".xlsx" :action="importAction"
+ :headers="uploadHeader" :auto-upload="false" :limit="1" :file-list="importFiles"
+ :before-upload="beforeImport" :on-success="importSuccess" :on-error="importError">
+ <i class="el-icon-upload"></i>
+ <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
+ </el-upload>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="importVisible = false">鍙栨秷</el-button>
+ <el-button type="primary" :loading="importing" @click="submitImport">瀵煎叆</el-button>
+ </span>
+ </el-dialog>
</div>
</template>
@@ -39,12 +56,14 @@
import {
getPageStandardSubstance,
removeStandardSubstance,
- exportOfStandardSubstanceList
+ exportOfStandardSubstanceList,
+ downloadStandardSubstanceImportTemplate
} from '@/api/cnas/resourceDemand/standardMaterial/standardMaterial'
import FormDia from '../standardMaterial/component/formDia.vue';
import BorrowDia from '../standardMaterial/component/borrowDia.vue';
import ReturnDia from '../standardMaterial/component/returnDia.vue';
export default {
+ name: 'StandardMaterial',
components: {
limsTable,
FormDia,
@@ -172,12 +191,65 @@
formDia: false,
borrowDia: false,
returnDia: false,
+ importVisible: false,
+ importing: false,
+ importFiles: [],
+ }
+ },
+ computed: {
+ importAction() {
+ return this.javaApi + '/feStandardSubstance/importStandardSubstance'
}
},
mounted() {
this.searchList()
},
methods: {
+ downloadTemplate() {
+ downloadStandardSubstanceImportTemplate().then(res => {
+ this.$download.saveAs(new Blob([res]), '鏍囧噯鐗╄川瀵煎叆妯℃澘.xlsx')
+ })
+ },
+ submitImport() {
+ if (!this.$refs.standardSubstanceUpload.uploadFiles.length) {
+ this.$message.warning('璇烽�夋嫨闇�瑕佸鍏ョ殑Excel鏂囦欢')
+ return
+ }
+ this.$refs.standardSubstanceUpload.submit()
+ },
+ beforeImport(file) {
+ if (!file.name.toLowerCase().endsWith('.xlsx')) {
+ this.$message.error('浠呮敮鎸�.xlsx鏍煎紡鏂囦欢')
+ return false
+ }
+ if (file.size > 10 * 1024 * 1024) {
+ this.$message.error('瀵煎叆鏂囦欢涓嶈兘瓒呰繃10MB')
+ return false
+ }
+ this.importing = true
+ return true
+ },
+ importSuccess(response) {
+ this.importing = false
+ if (response.code !== 200) {
+ this.$message.error(response.message || response.msg || '瀵煎叆澶辫触')
+ return
+ }
+ this.$message.success(`鎴愬姛瀵煎叆${response.data}鏉℃爣鍑嗙墿璐╜)
+ this.importVisible = false
+ this.searchList()
+ },
+ importError() {
+ this.importing = false
+ this.$message.error('瀵煎叆澶辫触')
+ },
+ resetImport() {
+ this.importing = false
+ this.importFiles = []
+ if (this.$refs.standardSubstanceUpload) {
+ this.$refs.standardSubstanceUpload.clearFiles()
+ }
+ },
exportFun() {
this.outLoading = true
exportOfStandardSubstanceList(this.searchForm).then(res => {
--
Gitblit v1.9.3