Ver Fonte

客户管理添加数据导入功能

lph há 1 ano atrás
pai
commit
9fae282b06

+ 7 - 0
zkqy-ui/src/api/system/customer.js

@@ -50,3 +50,10 @@ export function delCustomer(id) {
     method: 'delete'
   })
 }
+// 获取导入的模板
+export function importTemplate() {
+  return request({
+    url: '/system/customer/importTemplate',
+    method: 'get'
+  })
+}

+ 102 - 0
zkqy-ui/src/views/orderMange/customerMange/index.vue

@@ -1,5 +1,48 @@
 <template>
   <div class="app-container">
+    <!-- 导入弹窗 start-->
+    <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"
+        v-loading="upload.isUploading"
+        :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>仅允许导入xls、xlsx格式文件。</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>
+    <!-- 导入弹窗 end-->
     <el-form
       :model="queryParams"
       ref="queryForm"
@@ -66,6 +109,17 @@
           >删除</el-button
         >
       </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          @click="upload.open = true"
+          v-hasPermi="['system:customer:IMPORT']"
+          >导入</el-button
+        >
+      </el-col>
       <el-col :span="1.5">
         <el-button
           type="warning"
@@ -333,6 +387,7 @@ import {
   updateCustomer,
   checkCustomerNo,
 } from "@/api/system/customer";
+import { getToken } from "@/utils/auth";
 
 export default {
   name: "Customer",
@@ -381,12 +436,59 @@ export default {
           { required: true, message: "手机号不能为空", trigger: "blur" },
         ],
       },
+      // excel共通导入数据
+      upload: {
+        // 是否显示弹出层
+        open: false,
+        // 弹出层标题(
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        headers: { Authorization: "Bearer " + getToken() },
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API1 + "system/customer/importData",
+      },
     };
   },
   created() {
     this.getList();
   },
   methods: {
+    // 文件上传成功处理
+    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();
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      this.download(
+        "system/customer/importTemplate",
+        {},
+        `customer_template_${new Date().getTime()}.xlsx`
+      );
+    },
+    // 提交上传文件
+    submitFileForm() {
+      this.$refs.upload.submit();
+      this.upload.open = false;
+      this.getList();
+    },
     // 校验客户编码
     async checkCustomerNoHandler(rule, value, callback) {
       try {