From 188eb07cbc0717ccee654290ec641a79d96713e4 Mon Sep 17 00:00:00 2001 From: liyong <18434998025@163.com> Date: 星期一, 16 六月 2025 17:04:14 +0800 Subject: [PATCH] feat: 客户 供应商导入 --- src/views/basicData/customerFile/index.vue | 95 ++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 89 insertions(+), 6 deletions(-) diff --git a/src/views/basicData/customerFile/index.vue b/src/views/basicData/customerFile/index.vue index 01f5e84..d67c4b6 100644 --- a/src/views/basicData/customerFile/index.vue +++ b/src/views/basicData/customerFile/index.vue @@ -16,6 +16,7 @@ <div> <el-button type="primary" @click="openForm('add')">鏂板瀹㈡埛</el-button> <el-button @click="handleOut">瀵煎嚭</el-button> + <el-button type="info" plain icon="Upload" @click="handleImport">瀵煎叆</el-button> <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button> </div> </div> @@ -63,6 +64,25 @@ </el-row> <el-row :gutter="30"> <el-col :span="12"> + <el-form-item label="閾惰鍩烘湰鎴凤細" prop="basicBankAccount"> + <el-input v-model="form.basicBankAccount" placeholder="璇疯緭鍏�" clearable/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="閾惰璐﹀彿锛�" prop="bankAccount"> + <el-input v-model="form.bankAccount" placeholder="璇疯緭鍏�" clearable/> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="30"> + <el-col :span="12"> + <el-form-item label="寮�鎴疯鍙凤細" prop="bankCode"> + <el-input v-model="form.bankCode" placeholder="璇疯緭鍏�" clearable/> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="30"> + <el-col :span="12"> <el-form-item label="缁存姢浜猴細" prop="maintainer"> <el-select v-model="form.maintainer" placeholder="璇烽�夋嫨" clearable disabled> <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName" :value="item.nickName"/> @@ -92,6 +112,25 @@ </div> </template> </el-dialog> + <!-- 鐢ㄦ埛瀵煎叆瀵硅瘽妗� --> + <el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body> + <el-upload ref="uploadRef" :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> + <el-icon class="el-icon--upload"><upload-filled /></el-icon> + <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div> + <template #tip> + <div class="el-upload__tip text-center"> + <span>浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢銆�</span> + <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline" @click="importTemplate">涓嬭浇妯℃澘</el-link> + </div> + </template> + </el-upload> + <template #footer> + <div class="dialog-footer"> + <el-button type="primary" @click="submitFileForm">纭� 瀹�</el-button> + <el-button @click="upload.open = false">鍙� 娑�</el-button> + </div> + </template> + </el-dialog> </div> </template> @@ -102,6 +141,7 @@ import {ElMessageBox } from "element-plus"; import {userListNoPage} from "@/api/system/user.js"; import useUserStore from "@/store/modules/user" +import {getToken} from "@/utils/auth.js"; const { proxy } = getCurrentInstance() const userStore = useUserStore() @@ -109,14 +149,17 @@ { label: '瀹㈡埛鍚嶇О', prop: 'customerName', + width: 220, }, { label: '绾崇◣浜鸿瘑鍒爜', - prop: 'taxpayerIdentificationNumber' + prop: 'taxpayerIdentificationNumber', + width: 220, }, { label: '鍦板潃鍙婅仈绯绘柟寮�', - prop: 'addressPhone' + prop: 'addressPhone', + width: 220, }, { label: '鑱旂郴浜�', @@ -125,6 +168,18 @@ { label: '鑱旂郴鐢佃瘽', prop: 'contactPhone', + }, + { + label: '閾惰鍩烘湰鎴�', + prop: 'basicBankAccount', + }, + { + label: '閾惰璐﹀彿', + prop: 'bankAccount', + }, + { + label: '寮�鎴疯鍙�', + prop: 'bankCode', }, { label: '缁存姢浜�', @@ -175,6 +230,9 @@ contactPhone: '', maintainer: '', maintenanceTime: '', + basicBankAccount:'', + bankAccount:'', + bankCode:'' }, rules: { customerName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], @@ -185,7 +243,23 @@ contactPhone: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], maintainer: [{ required: false, message: "璇烽�夋嫨", trigger: "change" }], maintenanceTime: [{ required: false, message: "璇烽�夋嫨", trigger: "change" }], + basicBankAccount: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + bankAccount: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + bankCode: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + } +}) +const upload = reactive({ + // 鏄惁鏄剧ず寮瑰嚭灞傦紙瀹㈡埛瀵煎叆锛� + open: false, + // 寮瑰嚭灞傛爣棰橈紙瀹㈡埛瀵煎叆锛� + title: "", + // 鏄惁绂佺敤涓婁紶 + isUploading: false, + // 璁剧疆涓婁紶鐨勮姹傚ご閮� + headers: { Authorization: "Bearer " + getToken() }, + // 涓婁紶鐨勫湴鍧� + url: import.meta.env.VITE_APP_BASE_API + "/basic/customer/importData" }) const { searchForm, form, rules } = toRefs(data) @@ -195,16 +269,16 @@ page.current = 1 getList() } -const pagination = ({ current, limit }) => { - page.current = current; - page.size = limit; +const pagination = (obj) => { + page.current = obj.page; + page.size = obj.limit; getList() } const getList = () => { tableLoading.value = true listCustomer({...searchForm.value, ...page}).then(res => { tableLoading.value = false - tableData.value = res.rows + tableData.value = res.records total.value = res.total }) } @@ -212,6 +286,15 @@ const handleSelectionChange = (selection) => { selectedRows.value = selection } +/** 鎻愪氦涓婁紶鏂囦欢 */ +function submitFileForm() { + proxy.$refs["uploadRef"].submit() +} +/** 瀵煎叆鎸夐挳鎿嶄綔 */ +function handleImport() { + upload.title = "瀹㈡埛瀵煎叆" + upload.open = true +} // 鎵撳紑寮规 const openForm = (type, row) => { operationType.value = type -- Gitblit v1.9.3