Преглед изворни кода

跟单应收 导入修改 下载模版

@dongkboy пре 3 месеци
родитељ
комит
f32d8d423f
1 измењених фајлова са 81 додато и 21 уклоњено
  1. 81 21
      src/views/receivable/documentary/index.vue

+ 81 - 21
src/views/receivable/documentary/index.vue

@@ -12,8 +12,7 @@
             <el-col :span="8">
               <el-form-item label="保险公司">
                 <el-select v-model="receivableForm.companyId" placeholder="请选择" clearable filterable>
-                  <el-option v-for="item in companyList" :key="item.id" :value="item.id"
-                    :label="item.name"></el-option>
+                  <el-option v-for="item in companyList" :key="item.id" :value="item.id" :label="item.name"></el-option>
                 </el-select>
               </el-form-item>
             </el-col>
@@ -146,11 +145,12 @@
             </el-dropdown>
           </span>
           <span class="col-108 m-r-8">
-            已选: <span class="text-red">{{selectedList.length}}</span> 条
+            已选: <span class="text-red">{{ selectedList.length }}</span> 条
           </span>
         </el-row>
-        <el-table :data="receiveData" :height="isTrue?'calc(100% - 396px)':'calc(100% - 296px)'" style="width: 100%; margin-top: 20px;" ref="ReceiveDataRef1"
-          @select="handleSelectChange1" @select-all="handleSelectAll1">
+        <el-table :data="receiveData" :height="isTrue ? 'calc(100% - 396px)' : 'calc(100% - 296px)'"
+          style="width: 100%; margin-top: 20px;" ref="ReceiveDataRef1" @select="handleSelectChange1"
+          @select-all="handleSelectAll1">
           <el-table-column type="selection" width="80"></el-table-column>
           <el-table-column prop="signingTime" label="签单时间" width="150"></el-table-column>
           <el-table-column prop="orderNo" label="订单号" width="150"></el-table-column>
@@ -324,11 +324,12 @@
             <el-button class="radius-2px width-100" @click="handleBatchEdit">批量修改比例</el-button>
           </span>
           <span class="col-108 m-r-8">
-            已选: <span class="text-red">{{selectedList.length}}</span> 条
+            已选: <span class="text-red">{{ selectedList.length }}</span> 条
           </span>
         </el-row>
-        <el-table :data="receiveData" :height="isTrue?'calc(100% - 396px)':'calc(100% - 296px)'" style="width: 100%; margin-top: 20px;" ref="ReceiveDataRef2"
-          @select="handleSelectChange2" @select-all="handleSelectAll2">
+        <el-table :data="receiveData" :height="isTrue ? 'calc(100% - 396px)' : 'calc(100% - 296px)'"
+          style="width: 100%; margin-top: 20px;" ref="ReceiveDataRef2" @select="handleSelectChange2"
+          @select-all="handleSelectAll2">
           <el-table-column type="selection" width="80"></el-table-column>
           <el-table-column prop="signingTime" label="签单时间" width="150"></el-table-column>
           <el-table-column prop="orderNo" label="订单号" width="150"></el-table-column>
@@ -352,7 +353,7 @@
           <el-table-column label="操作" width="180" fixed="right">
             <template #default="scope">
               <div style="display: flex; align-items: center; justify-content: center">
-              <el-button link type="primary" @click="toDelete([scope.row.id])">删除</el-button>
+                <el-button link type="primary" @click="toDelete([scope.row.id])">删除</el-button>
                 <el-button link type="primary" @click="toEdit(scope.row)">编辑</el-button>
                 <el-dropdown trigger="click" placement="bottom" @command="dropdownCommand">
                   <el-button link type="primary">
@@ -503,7 +504,7 @@
           <template #label>导入修改</template>
           <div style="display: flex; align-items: center; justify-content: center; margin-bottom: 10px">
             下载「标准导入模板」,编辑后上传;系统将自动匹配相关字段
-            <el-button link type="primary">下载模板</el-button>
+            <el-button link type="primary" @click="downloadImportTemplate">下载模板</el-button>
           </div>
           <el-upload class="upload-demo" drag accept=".xls, .xlsx" :auto-upload="false" @change="uploadJYFile">
             <el-icon class="el-icon--upload"><upload-filled /></el-icon>
@@ -512,6 +513,17 @@
             </div>
             <a style="color: #999; font-size: 12px">目前支持的文件类型为*.xls, *.xlsx</a>
           </el-upload>
+          <div v-if="importModifyCallback">
+            <div>
+              您将导入 <span style="color:#409eff;">{{ importModifyCallback?.failedNumber +
+                importModifyCallback?.successNumber
+                ||
+                0 }}
+              </span> 条数据,其中 <span style="color:#409eff;">{{ importModifyCallback?.successNumber || 0 }} </span>
+              条正常导入;<span style="color: red;">{{ importModifyCallback?.failedNumber || 0 }}</span> 条不符合要求无法导入。
+            </div>
+            <el-button type="primary" link @click="downloadImportFailedData(importModifyCallback)">下载导入失败文件</el-button>
+          </div>
         </el-tab-pane>
       </el-tabs>
       <template #footer>
@@ -525,7 +537,7 @@
 <script setup lang="ts">
 import api from '@/api'
 
-import { ElMessage,ElMessageBox } from "element-plus";
+import { ElMessage, ElMessageBox } from "element-plus";
 import { useRouter } from 'vue-router'
 
 let myRouter = useRouter()
@@ -630,7 +642,7 @@ const handleInvoice = () => {
     })
     return
   }
-  if(selectedList.value.some((item:any) => item.invoiceStatusName == '已开票')) {
+  if (selectedList.value.some((item: any) => item.invoiceStatusName == '已开票')) {
     ElMessage({
       message: '存在已开票数据,不能开票!',
       type: 'warning'
@@ -811,12 +823,12 @@ let signTime = ref(null)
 let people = ref(null)
 let editForm = ref({})
 const handleBatchEdit = () => {
-  if(selectedList.value.length<1) {
-      ElMessage({
-          message: '请选择数据!',
-          type: 'warning'
-      })
-      return
+  if (selectedList.value.length < 1) {
+    ElMessage({
+      message: '请选择数据!',
+      type: 'warning'
+    })
+    return
   }
   editForm.value = {}
   batchEditShow.value = true
@@ -837,20 +849,68 @@ const handleBatchEditSubmit = async () => {
     batchEditShow.value = false
   }
 }
-
+ const downloadImportTemplate = () => {
+  let params = {
+    licenseNo: receivableForm.value?.licenseNo,
+    typeAttr: receivableForm.value?.typeAttr,
+    companyId: receivableForm.value?.companyId,
+    signingStartTime: receivableForm.value?.signingTime?.[0],
+    signingEndTime: receivableForm.value?.signingTime?.[1],
+    orderNo: receivableForm.value?.orderNo,
+    agreementId: receivableForm.value?.agreementId,
+    deptId: receivableForm.value?.deptId,
+    riskCode: receivableForm.value?.riskCode,
+    orderType: receivableForm.value?.orderType,
+    insuredName: receivableForm.value?.insuredName,
+    jqPolicyNo: receivableForm.value?.jqPolicyNo,
+    syPolicyNo: receivableForm.value?.syPolicyNo,
+    dockingPerson: receivableForm.value?.dockingPerson,
+    jqStartDate: receivableForm.value?.jqDate?.[0],
+    jqEndDate: receivableForm.value?.jqDate?.[1],
+    syStartDate: receivableForm.value?.syDate?.[0],
+    syEndDate: receivableForm.value?.syDate?.[1],
+  }
+  api.financeApi.exportTemplateReceivableList(params).then((res: any) => {
+    if (res.code == 200) {
+      const link = document.createElement('a');
+      link.href = res.msg;
+      link.download = '';
+      // 触发下载
+      document.body.appendChild(link);
+      link.click();
+      document.body.removeChild(link);
+    } else {
+      ElMessage({
+        message: res.msg,
+        type: 'warning'
+      })
+    }
+  })
+}
+let importModifyCallback = ref()// 导入数据回调
 const uploadJYFile = async (file) => {
   let files = file.raw
   const params = new FormData(); // 声明formData数据类型
   params.append("file", files);
-  const { code, data, msg } = await api.financeApi.importJyExcel(params)
+  const { code, data, msg } = await api.financeApi.importReceivableListUpdate(params)
   if (code == 200) {
+    importModifyCallback.value = data
     ElMessage({
       message: msg,
       type: 'success'
     })
   }
 }
-
+// 下载导入失败文件
+const downloadImportFailedData = (item) => {
+  const link = document.createElement('a');
+  link.href = item.failFileUrl;
+  link.download = '';
+  // 触发下载
+  document.body.appendChild(link);
+  link.click();
+  document.body.removeChild(link);
+}
 // 获取险种
 let insuranceType = ref([])
 const dictDetails = () => {