2023.11.14今天我学习了如何使用el-upload:
<!--drag设置可拖动-->
<!--accept=".xlsx"设置上传的文件类型-->
<!--:limit=1上传文件的最大个数-->
<!--:auto-upload="false"是否在选取后直接上传-->
<!--:before-upload="beforeUploadFile"上传文件之前的钩子-->
<!--:on-change="fileChange"文件状态改变时的钩子-->
<!--:on-remove="fileRemove"文件列表移除文件时的钩子-->
<!--:on-exceed="exceedFile"文件超出个数限制-->
<!--:on-success="upload_success"文件上传成功的钩子-->
<el-form :model="formTable" enctype="multipart/form-data" methods="post">
<el-form-item label="选择文件:">
<el-upload
drag
:limit=limitNum
name="file"
ref="upload"
action=""
:http-request="dict_upload_request"
accept=".xlsx"
:headers="headers"
:with-credentials="true"
:file-list="fileList"
:before-upload="beforeUploadFile"
:before-remove="beforeRemove"
:on-exceed="exceedFile"
:on-remove="fileRemove"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip" slot="tip">只能上传xlsx文件,且上传数据尽量不超过1000条</div>
</el-upload>
</el-form-item>
</el-form>
如果后端接口是固定并且不需要携带参数就用action,如果是动态的就用http-request。
// 自定义上传的方法
dict_upload_request(item) {
let formData = new FormData()
formData.append('file', item.file)//上传的文件
formData.append('status', 0)//携带的参数 参数名+值
formData.append('name', '张三')//携带的参数 参数名+值
//如果传入的参数需要数组的话,可以这样写
let all_column_name = ['11','22','33']
for (let i = 0; i < all_column_name .length; i++) {
formData.append('all_check_fields[]', all_column_name[i]); // 在key后面加上 [] 表示这是一个数组
}
dict_upload(formData).then(res => {
this.$message({
message: '上传成功!',
type: 'success'
})
})
},
完整代码如下:
<template>
<div class="app-container">
<el-row>
<div class="header_title">{{ queryParams.table_chinese_name }}</div>
<el-col :span="3">
<div style="height: 500px;width: 200px;margin-left: 50px">
<el-steps :active="step_num" direction="vertical" finish-status="success" v-if="step_num==0">
<el-step title="步骤 1"></el-step>
</el-steps>
<el-steps :active="step_num" direction="vertical" finish-status="success" v-if="step_num!=0">
<el-step title="步骤 1"></el-step>
<el-step title="步骤 2"></el-step>
</el-steps>
</div>
</el-col>
<el-col :span="21">
<el-card>
<el-form :model="formTable" enctype="multipart/form-data" methods="post" v-if="step_num==0">
<el-row :gutter="10">
<el-col :xs="24" :md="8">
<!--校验类型-->
<el-form-item label="校验类型:">
<span>
<el-radio v-model="upload_type" label="1">常规校验</el-radio>
<el-tooltip content="不对导入的重复表数据进行覆盖" placement="top">
<i class="el-icon-question"/>
</el-tooltip>
</span>
<span style="margin-left: 10%">
<el-radio v-model="upload_type" label="2">精确校验</el-radio>
<el-tooltip content="可选择对导入的重复表数据进行覆盖" placement="top">
<i class="el-icon-question"/>
</el-tooltip>
</span>
</el-form-item>
<!--精确校验的树形选择框-->
<el-card
:class="export_list[0]!=undefined&&export_list[0].length<6?'no_el_card_tree_border':'el_card_tree_border'"
v-show="upload_type==2"
>
<el-tree
ref="tree"
:data="select_upload_header_data"
:props="defaultProps"
default-expand-all
node-key="remark_name"
@check="handleNodeClick"
show-checkbox
/>
</el-card>
<!--选择文件-->
<el-form-item label="选择文件:">
<el-upload
drag
name="file"
ref="upload"
action=""
:http-request="dict_upload_request"
accept=".xlsx"
:headers="headers"
:with-credentials="true"
:file-list="fileList"
:before-upload="beforeUploadFile"
:before-remove="beforeRemove"
:on-remove="fileRemove"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip" slot="tip">只能上传xlsx文件,且上传数据尽量不超过10000条</div>
</el-upload>
</el-form-item>
</el-col>
<el-col :xs="24" :md="16">
<div class="el-upload__tip">说明:</div>
<div class="el-upload__tip">一、第一行为列名,第二行为注释,请从第三行开始填写</div>
<div class="el-upload__tip">二、示例:
<el-image style="width: 80%;height: 5vh;" :src="imgUrl" :preview-src-list="[imgUrl]"/>
</div>
<div class="el-upload__tip">三、
<el-button type="text" style="text-decoration: underline" @click="download_demo">下载表结构模板
</el-button>
</div>
</el-col>
</el-row>
</el-form>
<div v-if="step_num==1">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-close"
size="mini"
:disabled="repeat_data_disabled"
@click="all_delete_repeat_data()"
>批量移除
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-check"
size="mini"
:disabled="repeat_data_disabled"
@click="all_add_repeat_data()"
>批量新增
</el-button>
</el-col>
</el-row>
<div style="color: red;text-align: center;">(当前重复数据为导入excel中的数据)</div>
<el-table :data="repeat_data_list"
height="50vh"
@selection-change="repeat_data_selection"
:row-class-name="tableRowClassName"
>
<el-table-column type="selection" width="55" align="center"/>
<el-table-column sortable :label="val.remark_name" align="center" :prop="val.column_name"
class-name="small-padding fixed-width" v-for="(val,key,index) in columnName"
:show-overflow-tooltip="true"
:render-header="tableHeaders.renderHeader"
>
<template slot-scope="scope">
<span>{{ scope.row[val.column_name] }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="120%">
<template slot-scope="scope">
<div>
<el-button type="text" icon="el-icon-close"
style="color: red" @click="delete_repeat_data(scope.row)"
>
移除
</el-button>
</div>
<div>
<el-button type="text" icon="el-icon-check" style="color: #0f982a"
@click="add_repeat_data(scope.row)"
>
新增
</el-button>
</div>
<div>
<el-button type="text" icon="el-icon-view" @click="cover_repeat_data(scope.row)">
查看重复数据
</el-button>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div style="float: right;margin: 2%" class="dialog-footer" v-if="step_num==1">
<el-button type="success" @click="repeat_data_all_add"
>全部新增
</el-button>
<el-button type="primary" @click="all_cover_repeat_data"
>全部覆盖
</el-button>
<el-button @click="repeat_data_filsh"
>取 消
</el-button>
</div>
</el-card>
</el-col>
</el-row>
<el-row>
</el-row>
<!--导出表结构-->
<el-table :data="export_list" id="header_table" v-show="false">
<el-table-column :label="item.column_name"
v-for="(item,index) in export_list[0]"
>
<template slot-scope="scope">
{{ item.remark_name }}
</template>
</el-table-column>
</el-table>
<!--覆盖数据的弹窗-->
<el-dialog :visible.sync="cover_data_open" title="表格中重复的数据" :close-on-click-modal="false">
<div class="app-container">
<span>当前选中的数据:</span>
<el-table :data="repeat_current_select_data">
<el-table-column sortable :label="val.remark_name" align="center" :prop="val.column_name"
class-name="small-padding fixed-width" v-for="(val,key,index) in columnName"
:show-overflow-tooltip="true"
:render-header="tableHeaders.renderHeader"
>
<template slot-scope="scope">
<span>{{ scope.row[val.column_name] }}</span>
</template>
</el-table-column>
</el-table>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button @click="more_cover_datas" style="margin: 5%" type="primary" size="mini" plain
:disabled="cover_disable"
v-if="repeat_data_list.length!=0&&Object.keys(repeat_data_list[0]).length!=all_column_name.length"
>批量覆盖
</el-button>
</el-col>
</el-row>
<span>表格中重复的数据:</span>
<el-table :data="once_repeat_data" height="30vh" @selection-change="select_cover_data">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column sortable :label="val.remark_name" align="center" :prop="val.column_name"
class-name="small-padding fixed-width" v-for="(val,key,index) in columnName"
:show-overflow-tooltip="true"
:render-header="tableHeaders.renderHeader"
>
<template slot-scope="scope">
<span>{{ scope.row[val.column_name] }}</span>
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="text" icon="el-icon-sort" @click="cover_data(scope.row)"
v-if="Object.keys(repeat_data_list[0]).length!=all_column_name.length"
>覆盖
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="once_repeat_data_save" type="primary" v-show="save_cover_data_show">保 存</el-button>
<el-button @click="once_repeat_data_cancel" v-show="!save_cover_data_show">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getToken } from '@/utils/auth'
import {
dict_upload, getAllCoverData,
getColumnHistory,
getCoverRepeatData,
getDistInsertData,
getTableHeaderDataList
} from '@/api/dict/list'
import { exportToExcel } from '@/utils/Export2Excel'
import table_header_image from '@/assets/images/table_header_demo.png'
export default {
// name: 'dictUpload',
data() {
return {
table_status: 0,
queryParams: {},
database_id: '',
tb_code: '',
headers: {// 设置请求头
Authorization: 'Bearer' + ' ' + getToken()
},
imgUrl: table_header_image,
fileList: [],
export_list: [],
formTable: {
file: []
},
select_upload_header_data: [
{ remark_name: '全部校验', children: [] }
],
defaultProps: {//默认
children: 'children',
label: 'remark_name'
},
all_column_name: [],
all_repeat_data: {},//存放全部覆盖返回重复的数据
once_repeat_data: [],
all_update_data: [],//全部覆盖的表格数据
save_cover_data_show: false,
repeat_current_select_data: [],//存放重复当前选中的数据
cover_data_open: false,
cover_disable: true,//批量覆盖禁用
more_select_cover_datas: [],//多选覆盖的数据
more_select_cover_datas_ids: [],
repeat_data_list: [],//存放重复的数据
repeat_data_disabled: true,
all_selection_repeat_data: [],
columnName: [],
upload_type: '1',//存放上传文件的导入类型数据【1为常规校验 2为精确校验】
step_num: 0//步骤框默认状态
}
},
created() {
let local_data = JSON.parse(sessionStorage.getItem('dict_upload'))
this.queryParams = local_data.data//传参数据
this.database_id = Number(local_data.data.database_id)
this.table_status = Number(local_data.table_status)
// if (this.$route.query.table_status != '3') {
// this.columnName = this.$route.query.columns_name
// }
this.tb_code = local_data.tb_code
this.getHeaderDataList()//获取表结构数据
},
methods: {
// 获取表结构数据
getHeaderDataList() {
let newData = {}
if (this.table_status != 3) {
newData = {
version: this.queryParams.version,
dict_code: this.tb_code
}
} else {
newData = {
version: this.queryParams.version,
dict_name: this.tb_code,
type: 2,
database_id: this.database_id
}
}
getTableHeaderDataList(newData).then(res => {
this.columnName = res.data
this.export_list = [res.data]
this.select_upload_header_data[0].children = res.data
})
},
// 实现删除之前的方法
beforeRemove(file) {
return this.$confirm(`确定移除【 ${file.name}】?`)
},
// 上传文件之前的钩子, 参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传
beforeUploadFile(file) {
let extension = file.name.substring(file.name.lastIndexOf('.') + 1)
this.extension = extension
let size = file.size / 1024 / 1024
if (extension !== 'xlsx') {
this.$message.warning('只能上传后缀是.xlsx的文件')
}
if (size > 10) {
this.$message.warning('文件大小不得超过10M')
}
},
// 实现文件导入列表删除文件的按钮
fileRemove() {
this.$refs.upload.clearFiles()
},
// 文件超出个数限制时的钩子
exceedFile(files, fileList) {
this.$message.warning(`只能选择 ${this.limitNum} 个文件,当前共选择了 ${files.length + fileList.length} 个`)
},
// 自定义字典上传的方法
async dict_upload_request(item) {
let formData = new FormData()
formData.append('file', item.file)//上传的文件
formData.append('is_collection', this.table_status)//携带的参数【自定义字典】
formData.append('version', this.queryParams.version)//携带的参数【版本号】
formData.append('database_id', this.queryParams.database_id)//携带的参数【数据库id】
formData.append('table_id', this.queryParams.table_id)//携带的参数【表id】
if (this.table_status == 3) {
formData.append('dict_type', '2')//携带的参数【版本号】
formData.append('dict_name', this.tb_code)//携带的参数【版本号】
}
if (this.all_column_name.length !== 0) {
for (let i = 0; i < this.all_column_name.length; i++) {
formData.append('all_check_fields[]', this.all_column_name[i]) //【检验的表结构】
}
}
formData.append('check_type', this.upload_type)//携带的参数【检验类型】
let tb_code = this.tb_code
let loading = this.$loading({
lock: true,
text: '文件处理中,请耐心等待处理,完成后数据将逐步插入...',
spinner: 'el-icon-loading',
background: 'rgba(0,0,0,0.7)'
})
try {
let res = await dict_upload(formData, tb_code)
if (res.code == 200) {
loading.close()
this.$message({
message: '上传成功!',
type: 'success'
})
this.step_num = 1
this.repeat_data_list = res.data
if (res.data.length == 0) {
await this.router_skip()//调用路由跳转事件
}
if (this.upload_type == 1) {
await this.router_skip()//常规校验直接关闭页面
}
}
} catch (e) {
loading.close();
await this.router_skip()//常规校验直接关闭页面
}
},
// 路由跳转事件
router_skip() {
this.$store.dispatch('tagsView/delView', this.$route)
if (this.table_status != 3) {
// 其他字典跳转
this.$router.replace({
path: '/dict/collection_detail?tb_code=' + this.tb_code + '&version=' + this.queryParams.version + '&status=' + this.queryParams.status,
query: {
tb_code: this.tb_code,
version: this.queryParams.version,
name: this.queryParams.dict_name
}
})
} else {
// 系统字典跳转
this.$router.replace({
path: '/dict/system_dict'
})
}
},
all_cover_repeat_data() {
let repeat_data = JSON.parse(JSON.stringify(this.repeat_data_list))
let all_data = []
let new_data = {}
repeat_data.forEach(item => {
for (let i = 0; i < this.all_column_name.length; i++) {
let key = this.all_column_name[i]
let value = item[key]
let data = {
[key]: value
}
new_data = Object.assign({}, new_data, data)
}
all_data.push(new_data)
})
repeat_data.forEach(item => {
this.all_column_name.forEach(items => {
if (item.hasOwnProperty(items)) {
delete item[items]
}
})
})
let data = {}
if (this.table_status != 3) {
data = {
version: this.queryParams.version,
dict_code: this.tb_code,
all_check_fields: this.all_column_name,
update_data: repeat_data,
check_data: all_data
}
} else {
data = {
version: this.queryParams.version,
dict_name: this.tb_code,
dict_type: 2,
database_id: this.database_id,
all_check_fields: this.all_column_name,
update_data: repeat_data,
check_data: all_data
}
}
getAllCoverData(data).then(res => {
this.$message({
message: '覆盖成功!',
type: 'success'
})
this.router_skip()
}).catch(res => {
this.all_update_data = repeat_data
this.all_repeat_data = res.data//拿到返回重复的数据
})
},
// 完成对重复数据处理的事件
repeat_data_filsh() {
this.$confirm('是否确认取消本次操作?').then(res => {
this.step_num = 2
this.$message({
message: '取消成功!',
type: 'success'
})
this.router_skip()
}).catch(res => {
return
})
},
// 关闭检索完成相同的数据
repeat_data_close() {
this.step_num = 2
this.router_skip()
},
once_repeat_data_cancel() {
this.save_cover_data_show = false
this.cover_data_open = false
},
once_repeat_data_save() {
const index = this.repeat_data_list.indexOf(this.repeat_current_select_data[0])
if (index !== -1) {
this.repeat_data_list.splice(index, 1)
this.all_update_data.splice(index, 1)
}
// const itemToRemove = this.repeat_current_select_data[0]
// if (this.repeat_data_list.includes(itemToRemove)) {
// const index = this.repeat_data_list.indexOf(itemToRemove)
// this.repeat_data_list.splice(index, 1)
// }
this.$message({
message: '保存成功!',
type: 'success'
})
this.save_cover_data_show = false
this.cover_data_open = false
},
download_demo() {
exportToExcel('#header_table', '表结构模板')
},
// 覆盖重复的单条数据
cover_data(val) {
this.$confirm('是否要覆盖当前选中的重复数据?').then(res => {
let repeat_data = JSON.parse(JSON.stringify(this.repeat_current_select_data))
repeat_data.forEach(item => {
this.all_column_name.forEach(items => {
if (item.hasOwnProperty(items)) {
delete item[items]
}
})
})
let data = {}
if (this.table_status != 3) {
data = {
version: this.queryParams.version,
dict_code: this.tb_code,
all_check_fields: this.all_column_name,
check_data: repeat_data,
update_ids: [val.id]
}
} else {
// let column_id = this.$store.state.column_id
data = {
version: this.queryParams.version,
dict_name: this.tb_code,
dict_type: 2,
all_check_fields: this.all_column_name,
check_data: repeat_data,
database_id: this.database_id,
update_ids: [val[this.$route.query.all_data.tb_primary_column]]
}
}
getCoverRepeatData(data).then(res => {
const index = this.once_repeat_data.indexOf(val)
if (index !== -1) {
this.once_repeat_data.splice(index, 1)
}
this.$message({
message: '覆盖成功!',
type: 'success'
})
this.save_cover_data_show = true
})
}).catch(res => {
return
})
},
// 节点单击事件
handleNodeClick(data) {
let select_upload_data = this.$refs.tree.getCheckedNodes()//获取节点数据
let all_data = []
let pass = true
select_upload_data.forEach(item => {
if (item.remark_name.includes('全部')) {
all_data = item.children
pass = false
}
if (pass) {
all_data.push(item)
}
})
let all_column_name = []
all_column_name = all_data.map(item => item.column_name)
this.all_column_name = all_column_name//拿到选中的节点数据
},
// 批量移除重复数据的方法
all_delete_repeat_data() {
this.$confirm('是否批量移除这' + this.all_selection_repeat_data.length + '条重复的数据?').then(res => {
let pass = true
for (let i = 0; i < this.all_selection_repeat_data.length; i++) {
const index = this.repeat_data_list.indexOf(this.all_selection_repeat_data[i])
if (index !== -1) {
this.repeat_data_list.splice(index, 1)
this.all_update_data.splice(index, 1)
if (pass) {
this.$message({
message: '移除成功!',
type: 'success'
})
pass = false
}
}
}
}).catch(res => {
return
})
},
// 对重复的数据进行覆盖
cover_repeat_data(val) {
let all_data = {}
for (let i = 0; i < this.all_column_name.length; i++) {
let key = this.all_column_name[i]
let value = val[key]
let data = {
[key]: value
}
all_data = Object.assign({}, all_data, data)
}
let new_data = {}
if (this.table_status != 3) {
new_data = {
version: this.queryParams.version,
dict_code: this.tb_code,
all_check_fields: this.all_column_name,
check_data: all_data
}
} else {
new_data = {
version: this.queryParams.version,
dict_name: this.tb_code,
all_check_fields: this.all_column_name,
check_data: all_data,
dict_type: 2
}
}
this.repeat_current_select_data = [val]//拿到选中的重复数据
getColumnHistory(new_data).then(res => {
this.once_repeat_data = res.data
this.cover_data_open = true
})
},
// 对重复的数据进行移除操作
delete_repeat_data(val) {
this.$confirm('是否移除当前选中重复的数据?').then(res => {
const index = this.repeat_data_list.indexOf(val)
if (index !== -1) {
this.repeat_data_list.splice(index, 1)
this.all_update_data.splice(index, 1)
this.$message({
message: '移除成功!',
type: 'success'
})
}
}).catch(res => {
return
})
},
// 对重复的数据进行新增
add_repeat_data(val) {
this.$confirm('是否对当前选中数据进行新增处理?').then(res => {
let data = {}
if (this.table_status != 3) {
data = {
version: this.queryParams.version,
dict_code: this.tb_code,
check_data: [val]
}
} else {
data = {
version: this.queryParams.version,
dict_name: this.tb_code,
dict_type: 2,
check_data: [val]
}
}
getDistInsertData(data).then(res => {
const index = this.repeat_data_list.indexOf(val)
if (index !== -1) {
this.repeat_data_list.splice(index, 1)
this.all_update_data.splice(index, 1)
this.$message({
message: '新增成功!',
type: 'success'
})
}
})
}).catch(res => {
return
})
},
// 查看重复表数据多选方法
repeat_data_selection(selection) {
this.repeat_data_disabled = !selection.length
this.all_selection_repeat_data = selection
},
tableRowClassName({ row, rowIndex }) {
let update_index = -1
if (this.all_update_data.length != 0) {
const index = this.all_update_data.findIndex(item => JSON.stringify(item) == JSON.stringify(this.all_repeat_data))
if (index !== -1) {
update_index = index
}
if (rowIndex == update_index) {
return 'warning-row'
} else {
return ''
}
}
},
// 对重复的数据进行批量新增
all_add_repeat_data() {
this.$confirm('是否批量新增这' + this.all_selection_repeat_data.length + '条重复的数据?').then(res => {
let data = {}
if (this.table_status != 3) {
data = {
version: this.queryParams.version,
dict_code: this.tb_code,
check_data: this.all_selection_repeat_data
}
} else {
data = {
version: this.queryParams.version,
dict_name: this.tb_code,
dict_type: 2,
check_data: this.all_selection_repeat_data
}
}
getDistInsertData(data).then(res => {
let pass = true
for (let i = 0; i < this.all_selection_repeat_data.length; i++) {
const index = this.repeat_data_list.indexOf(this.all_selection_repeat_data[i])
if (index !== -1) {
this.repeat_data_list.splice(index, 1)
if (pass) {
this.$message({
message: '新增成功!',
type: 'success'
})
this.all_update_data = []//清空全部覆盖的表格数据
pass = false
}
}
}
this.getList()
})
}).catch(res => {
return
})
},
// 对重复数据进行全部新增
repeat_data_all_add() {
this.$confirm('是否新增全部重复的数据?').then(res => {
let data = {}
if (this.table_status != 3) {
data = {
version: this.queryParams.version,
dict_code: this.tb_code,
check_data: this.repeat_data_list
}
} else {
data = {
version: this.queryParams.version,
dict_name: this.tb_code,
dict_type: 2,
check_data: this.repeat_data_list
}
}
getDistInsertData(data).then(res => {
this.$message({
message: '新增成功!',
type: 'success'
})
})
this.router_skip()
}).catch(res => {
return
})
},
// 实现多选重复数据的方法
select_cover_data(selection) {
this.cover_disable = !selection.length
if (this.table_status != 3) {
this.more_select_cover_datas_ids = selection.map(item => item.id)
} else {
this.more_select_cover_datas_ids = selection.map(item => item[this.$store.state.column_id])
}
this.more_select_cover_datas = selection
},
// 多选覆盖的方法
more_cover_datas() {
this.$confirm('是否要覆盖这' + this.more_select_cover_datas.length + '条重复的数据?').then(res => {
let repeat_data = JSON.parse(JSON.stringify(this.repeat_current_select_data))
repeat_data.forEach(item => {
this.all_column_name.forEach(items => {
if (item.hasOwnProperty(items)) {
delete item[items]
}
})
})
let data = {}
if (this.table_status != 3) {
data = {
version: this.queryParams.version,
dict_code: this.tb_code,
all_check_fields: this.all_column_name,
check_data: repeat_data,
update_ids: this.more_select_cover_datas_ids
}
} else {
data = {
version: this.queryParams.version,
dict_name: this.tb_code,
dict_type: 2,
all_check_fields: this.all_column_name,
check_data: repeat_data,
database_id: this.database_id,
update_ids: this.more_select_cover_datas_ids
}
}
getCoverRepeatData(data).then(res => {
let pass = true
for (let i = 0; i < this.more_select_cover_datas.length; i++) {
const index = this.once_repeat_data.indexOf(this.more_select_cover_datas[i])
if (index !== -1) {
this.once_repeat_data.splice(index, 1)
}
if (pass) {
this.$message({
message: '覆盖成功!',
type: 'success'
})
pass = false
}
}
this.save_cover_data_show = true
})
}).catch(res => {
return
})
}
}
}
</script>
<style scoped>
.el-table .warning-row {
background-color: #ffc1c1;
}
.header_title {
width: 100%;
height: 5vh;
display: flex;
justify-content: center;
align-items: center;
font-weight: bolder;
font-size: 1.5rem;
}
</style>