Selaa lähdekoodia

增加地址簿导入

2391363834@qq.com 6 tuntia sitten
vanhempi
commit
c347be6c5a
1 muutettua tiedostoa jossa 118 lisäystä ja 0 poistoa
  1. 118 0
      jd-logistics-ui-v3/src/views/logistics/book/index.vue

+ 118 - 0
jd-logistics-ui-v3/src/views/logistics/book/index.vue

@@ -83,6 +83,26 @@
             v-hasPermi="['system:book:export']"
         >导出</el-button>
       </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="success"
+            plain
+            icon="Download"
+            @click="handleDownloadTemplate"
+            v-hasPermi="['system:dept:add']">
+          模板下载
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="success"
+            plain
+            icon="Upload"
+            @click="handleImport"
+            v-hasPermi="['system:book:add']">
+          导入
+        </el-button>
+      </el-col>
       <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
@@ -170,12 +190,46 @@
         </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"
+          :disabled="upload.isUploading"
+          :on-progress="handleFileUploadProgress"
+          :on-success="handleFileSuccess"
+          :on-change="handleFileChange"
+          :on-remove="handleFileRemove"
+          :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>仅允许导入xls、xlsx格式文件。</span>
+          </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>
 
 <script setup name="Book">
 import { listBook, getBook, delBook, addBook, updateBook } from "@/api/logistics/book"
 import RegionCascader from '@/components/RegionCascader.vue'
+import { getToken } from "@/utils/auth"
+import { download } from '@/utils/request'
 // 导入本地 JSON 数据
 import { getCodesByNames  } from '@/utils/area-data.js'
 
@@ -212,6 +266,22 @@ const validateRegion = (rule, value, callback) => {
   }
 }
 
+/*** 地址簿导入参数 */
+const upload = reactive({
+  // 是否显示弹出层(导入)
+  open: false,
+  // 弹出层标题
+  title: "",
+  // 是否禁用上传
+  isUploading: false,
+  // 设置上传的请求头部
+  headers: { Authorization: "Bearer " + getToken() },
+  // 上传的地址
+  url: import.meta.env.VITE_APP_BASE_API + "/system/book/importData",
+  // 当前选中的文件
+  selectedFile: null
+})
+
 const data = reactive({
   form: {},
   queryParams: {
@@ -394,5 +464,53 @@ function handleExport() {
   }, `book_${new Date().getTime()}.xlsx`)
 }
 
+
+
+/** 下载模板 */
+const handleDownloadTemplate = () => {
+  download('/system/book/importTemplate', {}, '地址簿模板.xlsx')
+}
+
+/** 导入按钮操作 */
+function handleImport() {
+  upload.title = "地址簿导入"
+  upload.open = true
+  upload.selectedFile = null
+}
+
+/** 文件上传中处理 */
+const handleFileUploadProgress = (event, file, fileList) => {
+  upload.isUploading = true
+}
+
+/** 文件选择处理 */
+const handleFileChange = (file, fileList) => {
+  upload.selectedFile = file
+}
+
+/** 文件删除处理 */
+const handleFileRemove = (file, fileList) => {
+  upload.selectedFile = null
+}
+
+/** 文件上传成功处理 */
+const handleFileSuccess = (response, file, fileList) => {
+  upload.open = false
+  upload.isUploading = false
+  proxy.$refs["uploadRef"].handleRemove(file)
+  proxy.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true })
+  getList()
+}
+
+/** 提交上传文件 */
+function submitFileForm() {
+  const file = upload.selectedFile
+  if (!file || file.length === 0 || !file.name.toLowerCase().endsWith('.xls') && !file.name.toLowerCase().endsWith('.xlsx')) {
+    proxy.$modal.msgError("请选择后缀为 “xls”或“xlsx”的文件。")
+    return
+  }
+  proxy.$refs["uploadRef"].submit()
+}
+
 getList()
 </script>