供应商客户数据导出导入功能

This commit is contained in:
yinjinlu-pc\尹金路 2024-09-05 18:50:24 +08:00
parent 9cd9f58688
commit 8c913e67a1
3 changed files with 170 additions and 31 deletions

View File

@ -42,3 +42,13 @@ export function delBarcode(barcodeId) {
method: 'delete'
})
}
//获取某个对象的二维码信息
export function getBarcodeUrl(query){
return request({
url: '/mes/wm/barcode/getBarcodeUrl',
method: 'get',
params: query
})
}

View File

@ -113,6 +113,16 @@
v-hasPermi="['mes:md:client:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="info"
plain
icon="el-icon-upload2"
size="mini"
@click="handleImport"
v-hasPermi="['mes:md:client:import']"
>导入</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -341,12 +351,45 @@
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 客户导入对话框 -->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据
</div>
<span>仅允许导入xlsxlsx格式文件</span>
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm"> </el-button>
<el-button @click="upload.open = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listClient, getClient, delClient, addClient, updateClient } from "@/api/mes/md/client";
import {genCode} from "@/api/system/autocode/rule"
import { getToken } from "@/utils/auth";
export default {
name: "Client",
dicts: ['mes_client_type','sys_yes_no'],
@ -373,6 +416,21 @@ export default {
title: "",
//
open: false,
//
upload: {
//
open: false,
//
title: "",
//
isUploading: false,
//
updateSupport: 0,
//
headers: { Authorization: "Bearer " + getToken() },
//
url: process.env.VUE_APP_BASE_API + "/mes/md/client/importData"
},
//
queryParams: {
pageNum: 1,
@ -569,6 +627,33 @@ export default {
...this.queryParams
}, `client_${new Date().getTime()}.xlsx`)
},
/** 导入按钮操作 */
handleImport() {
this.upload.title = "客户导入";
this.upload.open = true;
},
/** 下载模板操作 */
importTemplate() {
this.download('mes/md/client/importTemplate', {
}, `client_template_${new Date().getTime()}.xlsx`)
},
//
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
//
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
this.getList();
},
//
submitFileForm() {
this.$refs.upload.submit();
},
//
handleAutoGenChange(autoGenFlag){
debugger;

View File

@ -184,38 +184,54 @@
<el-dialog :title="title" :visible.sync="open" width="960px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="8">
<el-form-item label="供应商编码" prop="vendorCode">
<el-input v-model="form.vendorCode" placeholder="请输入供应商编码" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label-width="80">
<el-switch v-model="autoGenFlag"
active-color="#13ce66"
active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
</el-switch>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="供应商名称" prop="vendorName">
<el-input v-model="form.vendorName" placeholder="请输入供应商名称" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="供应商简称" prop="vendorNick">
<el-input v-model="form.vendorNick" placeholder="请输入供应商简称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="供应商英文名称" prop="vendorEn">
<el-input v-model="form.vendorEn" placeholder="请输入供应商英文名称" />
</el-form-item>
<el-col :span="14">
<el-row>
<el-col :span="20">
<el-form-item label="供应商编码" prop="vendorCode">
<el-input v-model="form.vendorCode" placeholder="请输入供应商编码" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label-width="80">
<el-switch v-model="autoGenFlag"
active-color="#13ce66"
active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
</el-switch>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="供应商名称" prop="vendorName">
<el-input v-model="form.vendorName" placeholder="请输入供应商名称" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="供应商简称" prop="vendorNick">
<el-input v-model="form.vendorNick" placeholder="请输入供应商简称" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="供应商英文名称" prop="vendorEn">
<el-input v-model="form.vendorEn" placeholder="请输入供应商英文名称" />
</el-form-item>
</el-col>
</el-row>
</el-col>
<el-col :span="10">
<el-image class="barcodeClass" fit="scale-down" :src="form.barcodeUrl">
<div slot="error" class="image-slot">
<i class="el-icon-picture-outline"></i>
</div>
</el-image>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="供应商简介" prop="vendorDes">
@ -363,7 +379,7 @@
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的用户数据
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据
</div>
<span>仅允许导入xlsxlsx格式文件</span>
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link>
@ -380,6 +396,7 @@
<script>
import { listVendor, getVendor, delVendor, addVendor, updateVendor } from "@/api/mes/md/vendor";
import { getBarcodeUrl } from "@/api/mes/wm/barcode";
import { getToken } from "@/utils/auth";
import {genCode} from "@/api/system/autocode/rule"
export default {
@ -448,6 +465,13 @@ export default {
creditCode: null,
enableFlag: null,
},
//
barcodeParams: {
bussinessId: null,
bussinessCode: null,
barcodeFormart: 'QR_CODE', //
barcodeType: 'VENDOR' //
},
//
form: {},
//
@ -507,6 +531,7 @@ export default {
creditCode: null,
enableFlag: 'Y',
remark: null,
barcodeUrl: null,
attr1: null,
attr2: null,
attr3: null,
@ -551,6 +576,7 @@ export default {
this.open = true;
this.title = "查看供应商";
this.optType = "view";
this.getBarcodeUrl();
});
},
/** 修改按钮操作 */
@ -562,10 +588,12 @@ export default {
this.open = true;
this.title = "修改供应商";
this.optType = "edit";
this.getBarcodeUrl();
});
},
/** 提交按钮 */
submitForm() {
debugger;
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.vendorId != null) {
@ -631,6 +659,15 @@ export default {
submitFileForm() {
this.$refs.upload.submit();
},
//
getBarcodeUrl(){
this.barcodeParams.bussinessId = this.form.vendorId;
this.barcodeParams.bussinessCode = this.form.vendorCode;
getBarcodeUrl(this.barcodeParams).then( response =>{
this.$set(this.form,'barcodeUrl',response.data.barcodeUrl);//DOM
});
},
//
handleAutoGenChange(autoGenFlag){
debugger;
@ -645,3 +682,10 @@ export default {
}
};
</script>
<style scoped>
.barcodeClass {
width: 200px;
height: 200px;
}
</style>