guoyujia 1 年之前
父節點
當前提交
fab49851c2

+ 2 - 1
package.json

@@ -22,11 +22,12 @@
     "axios": "0.27.2",
     "echarts": "5.4.0",
     "element-plus": "2.2.21",
-    "file-saver": "2.0.5",
+    "file-saver": "^2.0.5",
     "fuse.js": "6.6.2",
     "i": "^0.3.7",
     "js-cookie": "3.0.1",
     "jsencrypt": "3.3.1",
+    "jszip": "^3.10.1",
     "moment": "^2.29.4",
     "nprogress": "0.2.0",
     "pinia": "2.0.22",

+ 39 - 14
src/views/business/carrier/index.vue

@@ -133,6 +133,8 @@ import carrierForm from './form'
 import carrierCategoryForm from './formCategory'
 import carrierAbandonmentForm from './formAbandonment'
 import { nextTick } from 'vue'
+import JSZip from 'jszip';
+import { saveAs } from 'file-saver';
 const { proxy } = getCurrentInstance()
 const { carrier_status } = proxy.useDict('carrier_status')
 const webHost = import.meta.env.VITE_APP_PRODUCTION_API
@@ -285,23 +287,46 @@ const handleUnAbandoned = (row) => {
     .catch(() => {})
 }
 
-/** 批量下载二维码 */
-function handleBatchDownloadQrCode() {
-  console.log(selections.value)
+// /** 批量下载二维码 */
+// function handleBatchDownloadQrCode() {
+//   console.log(selections.value)
+//   for (var i = 0; i < selections.value.length; i++) {
+//     console.log(webHost + selections.value[i].qcCode)
+
+//     var link = document.createElement('a')
+//     link.href = webHost + selections.value[i].qcCode
+//     link.download = selections.value[i].code // 可以根据需要设置下载的文件名
+//     link.target = '_blank' // 可以根据需要选择是否在新窗口中下载
+//     link.click()
+//   }
+//   // download({}).then((res) => {
+//   //   if (res.code === 200) {
+//   //     proxy.$modal.msgSuccess('操作成功!')
+//   //   }
+//   // })
+// }
+async function handleBatchDownloadQrCode() {
+  console.log(selections.value);
+  
+  const zip = new JSZip();
+  const zipFilename = 'qrcodes.zip';
+
   for (var i = 0; i < selections.value.length; i++) {
-    console.log(webHost + selections.value[i].qcCode)
+    console.log(webHost + selections.value[i].qcCode);
+
+    // 下载二维码图片数据
+    const qrCodeResponse = await fetch(webHost + selections.value[i].qcCode);
+    const qrCodeBlob = await qrCodeResponse.blob();
 
-    var link = document.createElement('a')
-    link.href = webHost + selections.value[i].qcCode
-    link.download = selections.value[i].code // 可以根据需要设置下载的文件名
-    link.target = '_blank' // 可以根据需要选择是否在新窗口中下载
-    link.click()
+    // 将二维码图片添加到 ZIP 文件中
+    zip.file(selections.value[i].code + '.png', qrCodeBlob);
   }
-  // download({}).then((res) => {
-  //   if (res.code === 200) {
-  //     proxy.$modal.msgSuccess('操作成功!')
-  //   }
-  // })
+  
+  // 生成 ZIP 文件并提供下载
+  zip.generateAsync({ type: 'blob' }).then((content) => {
+    // 使用 FileSaver.js 将 ZIP 文件保存到本地
+    saveAs(content, zipFilename);
+  });
 }
 onMounted(() => {
   getCategories()

+ 5 - 2
src/views/business/tenant/form.vue

@@ -5,7 +5,7 @@
         <el-form-item label="logo:" prop="logo">
           <image-upload :limit="1" :isShowTip="false" v-model="form.logo" />
         </el-form-item>
-        <el-form-item label="企业全称:" prop="name">
+        <el-form-item label="企业全称:" prop="orgName">
           <el-input v-model.trim="form.orgName" placeholder="请输入企业全称" />
         </el-form-item>
         <el-form-item label="统一社会信用编码:" prop="orgCrtCode">
@@ -44,7 +44,9 @@ const loading = ref(false)
 const visible = ref(false)
 const data = reactive({
   form: {},
-  rules: {}
+  rules: {
+    orgName: [{ required: true, message: '企业全称不能为空', trigger: 'blur' }],
+  }
 })
 const { form, rules } = toRefs(data)
 /***********************  方法区  ****************************/
@@ -79,6 +81,7 @@ function reset() {
 function handleSave() {
   proxy.$refs['tenantRef'].validate((valid) => {
     if (valid) {
+      console.log(form.value)
       saveTenant(form.value).then((res) => {
         if (res.code == 200) {
           proxy.$modal.msgSuccess('操作成功')

+ 3 - 3
src/views/business/tenant/index.vue

@@ -2,9 +2,9 @@
   <div class="page-container column-container">
     <!-- 搜索区 -->
     <el-form class="list-search-container" :model="queryParams" ref="queryRef" :inline="true" label-width="68px">
-      <el-form-item class="section-title" label="租户管理" />
-      <el-form-item label="租户名称:" prop="orgName">
-        <el-input v-model.trim="queryParams.orgName" placeholder="请输入租户名称" clearable @keyup.enter="handleQuery"  @keydown.enter.prevent />
+      <el-form-item class="section-title" label="厂别管理" />
+      <el-form-item label="企业名称:" prop="orgName">
+        <el-input v-model.trim="queryParams.orgName" placeholder="请输入企业名称" clearable @keyup.enter="handleQuery"  @keydown.enter.prevent />
       </el-form-item>
       <el-form-item>
         <el-button type="info" icon="Search" @click="handleQuery">搜索</el-button>

+ 1 - 1
src/views/system/user/index.vue

@@ -4,7 +4,7 @@
     <section class="list-part-container" style="flex: 1">
       <!-- 搜索区域 -->
       <el-form class="list-search-container" :model="queryParams" ref="queryRef" :inline="true">
-        <el-form-item class="section-title" label="租户列表" />
+        <el-form-item class="section-title" label="厂别列表" />
         <el-form-item>
           <el-button type="success" icon="Refresh" @click="handleQueryTenant">刷新</el-button>
         </el-form-item>