11816 пре 19 часа
родитељ
комит
b6981da749
2 измењених фајлова са 439 додато и 106 уклоњено
  1. 178
    9
      src/api/contractApi.js
  2. 261
    97
      src/views/psExe.vue

+ 178
- 9
src/api/contractApi.js Прегледај датотеку

@@ -3,10 +3,13 @@ import axios from 'axios'
3 3
 // 创建axios实例
4 4
 const service = axios.create({
5 5
   baseURL: '/api',
6
-  timeout: 10000
6
+  timeout: 1000000
7 7
 })
8 8
 
9
-// 导入采购合同Excel
9
+// ===================== 原有接口(保留) =====================
10
+/**
11
+ * 导入采购合同Excel
12
+ */
10 13
 export const importContractExcel = (file) => {
11 14
   const formData = new FormData()
12 15
   formData.append('file', file)
@@ -19,7 +22,10 @@ export const importContractExcel = (file) => {
19 22
     }
20 23
   })
21 24
 }
22
-// 导入销售合同Excel
25
+
26
+/**
27
+ * 导入销售合同Excel
28
+ */
23 29
 export const importSalesContractExcel = (file) => {
24 30
   const formData = new FormData()
25 31
   formData.append('file', file)
@@ -33,12 +39,15 @@ export const importSalesContractExcel = (file) => {
33 39
   })
34 40
 }
35 41
 
36
-// 导入采、销执行表Excel
42
+// ===================== 采销执行表&业务库导入(新增/改造) =====================
43
+/**
44
+ * 1. 导入采销执行表(单独,替换原有importPsExeExcel的路径)
45
+ */
37 46
 export const importPsExeExcel = (file) => {
38 47
   const formData = new FormData()
39 48
   formData.append('file', file)
40 49
   return service({
41
-    url: '/pAndSExe/import',
50
+    url: '/pAndSExe/importPsExe', // 对应后端新接口路径
42 51
     method: 'post',
43 52
     data: formData,
44 53
     headers: {
@@ -47,11 +56,30 @@ export const importPsExeExcel = (file) => {
47 56
   })
48 57
 }
49 58
 
59
+/**
60
+ * 2. 导入所有业务库(批量)
61
+ */
62
+export const importAllExcel = (file) => {
63
+  const formData = new FormData()
64
+  formData.append('file', file)
65
+  return service({
66
+    url: '/pAndSExe/importAll', // 后端批量导入接口
67
+    method: 'post',
68
+    data: formData,
69
+    headers: {
70
+      'Content-Type': 'multipart/form-data'
71
+    }
72
+  })
73
+}
74
+
75
+/**
76
+ * 3. 导入库存业务(单独,保留原有方法但路径与后端新接口对齐)
77
+ */
50 78
 export const importStockExcel = (file) => {
51 79
   const formData = new FormData()
52
-  formData.append('file', file) // 参数名保持和后端一致(后端用的@RequestParam("file"))
80
+  formData.append('file', file)
53 81
   return service({
54
-    url: '/pAndSExe/importStock', // 对应后端PsExeController中的/importStock路径
82
+    url: '/pAndSExe/importStock',
55 83
     method: 'post',
56 84
     data: formData,
57 85
     headers: {
@@ -60,8 +88,149 @@ export const importStockExcel = (file) => {
60 88
   })
61 89
 }
62 90
 
91
+/**
92
+ * 4. 导入付款业务(单独)
93
+ */
94
+export const importPayExcel = (file) => {
95
+  const formData = new FormData()
96
+  formData.append('file', file)
97
+  return service({
98
+    url: '/pAndSExe/importPay',
99
+    method: 'post',
100
+    data: formData,
101
+    headers: {
102
+      'Content-Type': 'multipart/form-data'
103
+    }
104
+  })
105
+}
63 106
 
107
+/**
108
+ * 5. 导入费用付款业务(单独)
109
+ */
110
+export const importFeePayExcel = (file) => {
111
+  const formData = new FormData()
112
+  formData.append('file', file)
113
+  return service({
114
+    url: '/pAndSExe/importFeePay',
115
+    method: 'post',
116
+    data: formData,
117
+    headers: {
118
+      'Content-Type': 'multipart/form-data'
119
+    }
120
+  })
121
+}
122
+
123
+/**
124
+ * 6. 导入费用发票结算业务(单独)
125
+ */
126
+export const importFeeInvoiceExcel = (file) => {
127
+  const formData = new FormData()
128
+  formData.append('file', file)
129
+  return service({
130
+    url: '/pAndSExe/importFeeInvoice',
131
+    method: 'post',
132
+    data: formData,
133
+    headers: {
134
+      'Content-Type': 'multipart/form-data'
135
+    }
136
+  })
137
+}
138
+
139
+/**
140
+ * 7. 导入进项发票结算业务(单独)
141
+ */
142
+export const importJinxiangInvoiceExcel = (file) => {
143
+  const formData = new FormData()
144
+  formData.append('file', file)
145
+  return service({
146
+    url: '/pAndSExe/importJinxiangInvoice',
147
+    method: 'post',
148
+    data: formData,
149
+    headers: {
150
+      'Content-Type': 'multipart/form-data'
151
+    }
152
+  })
153
+}
154
+
155
+/**
156
+ * 8. 导入到货登记结算业务(单独)
157
+ */
158
+export const importDaodandengjiExcel = (file) => {
159
+  const formData = new FormData()
160
+  formData.append('file', file)
161
+  return service({
162
+    url: '/pAndSExe/importDaodandengji',
163
+    method: 'post',
164
+    data: formData,
165
+    headers: {
166
+      'Content-Type': 'multipart/form-data'
167
+    }
168
+  })
169
+}
170
+
171
+/**
172
+ * 9. 导入收款认领结算业务(单独)
173
+ */
174
+export const importShoukuanrenlingExcel = (file) => {
175
+  const formData = new FormData()
176
+  formData.append('file', file)
177
+  return service({
178
+    url: '/pAndSExe/importShoukuanrenling',
179
+    method: 'post',
180
+    data: formData,
181
+    headers: {
182
+      'Content-Type': 'multipart/form-data'
183
+    }
184
+  })
185
+}
186
+
187
+/**
188
+ * 10. 导入销售结算开票业务(单独)
189
+ */
190
+export const importXiaoshoujiesuanExcel = (file) => {
191
+  const formData = new FormData()
192
+  formData.append('file', file)
193
+  return service({
194
+    url: '/pAndSExe/importXiaoshoujiesuan',
195
+    method: 'post',
196
+    data: formData,
197
+    headers: {
198
+      'Content-Type': 'multipart/form-data'
199
+    }
200
+  })
201
+}
202
+
203
+/**
204
+ * 11. 导入代理结算业务(单独)
205
+ */
206
+export const importDailijiesuanExcel = (file) => {
207
+  const formData = new FormData()
208
+  formData.append('file', file)
209
+  return service({
210
+    url: '/pAndSExe/importDailijiesuan',
211
+    method: 'post',
212
+    data: formData,
213
+    headers: {
214
+      'Content-Type': 'multipart/form-data'
215
+    }
216
+  })
217
+}
218
+
219
+// 导出所有方法(原有+新增),便于按需导入或批量导入
64 220
 export default {
221
+  // 原有合同导入
65 222
   importContractExcel,
66
-  importSalesContractExcel
67
-}
223
+  importSalesContractExcel,
224
+  // 采销执行表&业务库导入
225
+  importPsExeExcel,
226
+  importAllExcel,
227
+  importStockExcel,
228
+  importPayExcel,
229
+  importFeePayExcel,
230
+  importFeeInvoiceExcel,
231
+  importJinxiangInvoiceExcel,
232
+  importDaodandengjiExcel,
233
+  importShoukuanrenlingExcel,
234
+  importXiaoshoujiesuanExcel,
235
+  importDailijiesuanExcel
236
+}

+ 261
- 97
src/views/psExe.vue Прегледај датотеку

@@ -3,7 +3,7 @@
3 3
     <el-card class="import-card">
4 4
       <template #header>
5 5
         <div class="card-header">
6
-          <span class="title">采、销执行表及库存业务Excel导入</span>
6
+          <span class="title">采、销执行表及各类业务Excel导入</span>
7 7
         </div>
8 8
       </template>
9 9
 
@@ -27,35 +27,145 @@
27 27
           </div>
28 28
           <template #tip>
29 29
             <div class="el-upload__tip">
30
-              只能上传 .xlsx 或 .xls 格式的Excel文件
30
+              只能上传 .xlsx 或 .xls 格式的Excel文件,大小不超过50MB
31 31
             </div>
32 32
           </template>
33 33
         </el-upload>
34 34
       </div>
35 35
 
36
-      <!-- 导入按钮 -->
37
-      <div class="action-buttons">
36
+      <!-- 导入按钮区域 -->
37
+      <!-- 第一排:批量导入按钮 -->
38
+      <div class="action-buttons batch-buttons">
38 39
         <el-button
39 40
             type="primary"
40
-            :loading="loading"
41
+            :loading="psExeLoading"
41 42
             :disabled="!fileList.length"
42
-            @click="handleImport"
43
+            @click="handlePsExeImport"
43 44
         >
44
-          {{ loading ? '采销导入中...' : '开始导入采销执行表' }}
45
+          {{ psExeLoading ? '采销导入中...' : '导入采销执行表' }}
45 46
         </el-button>
46 47
         <el-button
47 48
             type="primary"
48
-            :loading="stockLoading"
49
+            :loading="allLoading"
49 50
             :disabled="!fileList.length"
50
-            @click="handleStockImport"
51
+            @click="handleImportAll"
51 52
             style="margin-left: 10px"
52 53
         >
53
-          {{ stockLoading ? '库存导入中...' : '导入库存业务' }}
54
+          {{ allLoading ? '所有业务导入中...' : '导入所有业务库' }}
54 55
         </el-button>
55
-        <el-button @click="handleReset">重置</el-button>
56 56
       </div>
57 57
 
58
-      <!-- 错误信息显示 -->
58
+      <!-- 第二排:单独模块导入按钮(分组排版) -->
59
+      <div class="action-buttons single-buttons">
60
+        <div class="single-buttons-group">
61
+          <span class="group-title">基础业务:</span>
62
+          <el-button
63
+              type="primary"
64
+              :loading="stockLoading"
65
+              :disabled="!fileList.length"
66
+              @click="handleStockImport"
67
+              size="small"
68
+          >
69
+            {{ stockLoading ? '导入中...' : '库存业务' }}
70
+          </el-button>
71
+          <el-button
72
+              type="primary"
73
+              :loading="payLoading"
74
+              :disabled="!fileList.length"
75
+              @click="handlePayImport"
76
+              size="small"
77
+              style="margin-left: 5px"
78
+          >
79
+            {{ payLoading ? '导入中...' : '付款业务' }}
80
+          </el-button>
81
+          <el-button
82
+              type="primary"
83
+              :loading="feePayLoading"
84
+              :disabled="!fileList.length"
85
+              @click="handleFeePayImport"
86
+              size="small"
87
+              style="margin-left: 5px"
88
+          >
89
+            {{ feePayLoading ? '导入中...' : '费用付款' }}
90
+          </el-button>
91
+        </div>
92
+
93
+        <div class="single-buttons-group" style="margin-top: 10px">
94
+          <span class="group-title">发票结算:</span>
95
+          <el-button
96
+              type="primary"
97
+              :loading="feeInvoiceLoading"
98
+              :disabled="!fileList.length"
99
+              @click="handleFeeInvoiceImport"
100
+              size="small"
101
+          >
102
+            {{ feeInvoiceLoading ? '导入中...' : '费用发票结算' }}
103
+          </el-button>
104
+          <el-button
105
+              type="primary"
106
+              :loading="jinxiangInvoiceLoading"
107
+              :disabled="!fileList.length"
108
+              @click="handleJinxiangInvoiceImport"
109
+              size="small"
110
+              style="margin-left: 5px"
111
+          >
112
+            {{ jinxiangInvoiceLoading ? '导入中...' : '进项发票结算' }}
113
+          </el-button>
114
+        </div>
115
+
116
+        <div class="single-buttons-group" style="margin-top: 10px">
117
+          <span class="group-title">其他结算:</span>
118
+          <el-button
119
+              type="primary"
120
+              :loading="daodandengjiLoading"
121
+              :disabled="!fileList.length"
122
+              @click="handleDaodandengjiImport"
123
+              size="small"
124
+          >
125
+            {{ daodandengjiLoading ? '导入中...' : '到货登记结算' }}
126
+          </el-button>
127
+          <el-button
128
+              type="primary"
129
+              :loading="shoukuanrenlingLoading"
130
+              :disabled="!fileList.length"
131
+              @click="handleShoukuanrenlingImport"
132
+              size="small"
133
+              style="margin-left: 5px"
134
+          >
135
+            {{ shoukuanrenlingLoading ? '导入中...' : '收款认领结算' }}
136
+          </el-button>
137
+          <el-button
138
+              type="primary"
139
+              :loading="xiaoshoujiesuanLoading"
140
+              :disabled="!fileList.length"
141
+              @click="handleXiaoshoujiesuanImport"
142
+              size="small"
143
+              style="margin-left: 5px"
144
+          >
145
+            {{ xiaoshoujiesuanLoading ? '导入中...' : '销售结算开票' }}
146
+          </el-button>
147
+          <el-button
148
+              type="primary"
149
+              :loading="dailijiesuanLoading"
150
+              :disabled="!fileList.length"
151
+              @click="handleDailijiesuanImport"
152
+              size="small"
153
+              style="margin-left: 5px"
154
+          >
155
+            {{ dailijiesuanLoading ? '导入中...' : '代理结算' }}
156
+          </el-button>
157
+        </div>
158
+
159
+        <el-button
160
+            @click="handleReset"
161
+            size="small"
162
+            style="margin-top: 10px; margin-left: 0"
163
+        >
164
+          重置
165
+        </el-button>
166
+      </div>
167
+
168
+      <!-- 错误/成功信息显示 -->
59 169
       <div v-if="errorMessage" class="error-message-area">
60 170
         <el-alert
61 171
             title="导入错误"
@@ -65,8 +175,6 @@
65 175
             :closable="false"
66 176
         />
67 177
       </div>
68
-
69
-      <!-- 成功信息显示 -->
70 178
       <div v-if="successMessage" class="success-message-area">
71 179
         <el-alert
72 180
             title="导入成功"
@@ -86,9 +194,11 @@
86 194
         >
87 195
           <template #default>
88 196
             <div class="tips-content">
89
-              <p>1. 请确保Excel文件包含所有需要的Sheet页,每个Sheet页对应一张表</p>
90
-              <p>2. 系统会自动处理合并字段,按照逗号分隔存储</p>
91
-              <p>3. 导入过程中如有错误,会在上方错误信息区域显示</p>
197
+              <p>1. 「导入所有业务库」会批量执行库存、付款、各类结算等所有业务导入;</p>
198
+              <p>2. 「单独模块导入」可针对性导入某类业务,适合单业务调试;</p>
199
+              <p>3. 请确保Excel文件包含对应业务的Sheet页,每个Sheet页对应一张表;</p>
200
+              <p>4. 系统会自动处理合并字段,按照逗号分隔存储;</p>
201
+              <p>5. 导入过程中如有错误,会在上方错误信息区域显示。</p>
92 202
             </div>
93 203
           </template>
94 204
         </el-alert>
@@ -101,150 +211,186 @@
101 211
 import { ref } from 'vue'
102 212
 import { ElMessage } from 'element-plus'
103 213
 import { UploadFilled } from '@element-plus/icons-vue'
104
-import { importPsExeExcel, importStockExcel } from '../api/contractApi'  // 新增导入库存的API
105
-
106
-// 响应式数据
214
+// 导入所有API方法
215
+import {
216
+  importPsExeExcel,
217
+  importAllExcel,
218
+  importStockExcel,
219
+  importPayExcel,
220
+  importFeePayExcel,
221
+  importFeeInvoiceExcel,
222
+  importJinxiangInvoiceExcel,
223
+  importDaodandengjiExcel,
224
+  importShoukuanrenlingExcel,
225
+  importXiaoshoujiesuanExcel,
226
+  importDailijiesuanExcel
227
+} from '../api/contractApi'
228
+
229
+// 响应式数据:文件+各业务加载状态
107 230
 const uploadRef = ref()
108 231
 const fileList = ref([])
109
-const loading = ref(false)
110
-const stockLoading = ref(false)  // 库存导入的加载状态
111 232
 const errorMessage = ref('')
112 233
 const successMessage = ref('')
113 234
 
114
-// 处理文件选择
235
+// 加载状态:批量导入
236
+const psExeLoading = ref(false)
237
+const allLoading = ref(false)
238
+
239
+// 加载状态:单独模块
240
+const stockLoading = ref(false)
241
+const payLoading = ref(false)
242
+const feePayLoading = ref(false)
243
+const feeInvoiceLoading = ref(false)
244
+const jinxiangInvoiceLoading = ref(false)
245
+const daodandengjiLoading = ref(false)
246
+const shoukuanrenlingLoading = ref(false)
247
+const xiaoshoujiesuanLoading = ref(false)
248
+const dailijiesuanLoading = ref(false)
249
+
250
+// 处理文件选择(复用原有逻辑)
115 251
 const handleFileChange = (file) => {
116 252
   const isExcel = file.name.endsWith('.xlsx') || file.name.endsWith('.xls')
117
-
118 253
   if (!isExcel) {
119 254
     ElMessage.error('只能上传Excel文件!')
120 255
     uploadRef.value.handleRemove(file)
121 256
     return false
122 257
   }
123
-
124 258
   const isLt50M = file.size / 1024 / 1024 < 50
125 259
   if (!isLt50M) {
126 260
     ElMessage.error('Excel文件大小不能超过50MB!')
127 261
     uploadRef.value.handleRemove(file)
128 262
     return false
129 263
   }
130
-
131 264
   fileList.value = [file]
132 265
   errorMessage.value = ''
133 266
   successMessage.value = ''
134 267
 }
135 268
 
136
-// 处理文件移除
269
+// 处理文件移除(复用原有逻辑)
137 270
 const handleFileRemove = () => {
138 271
   fileList.value = []
139 272
   errorMessage.value = ''
140 273
   successMessage.value = ''
141 274
 }
142 275
 
143
-// 执行采销导入
144
-const handleImport = async () => {
276
+// 重置(重置所有加载状态)
277
+const handleReset = () => {
278
+  fileList.value = []
279
+  errorMessage.value = ''
280
+  successMessage.value = ''
281
+  uploadRef.value?.clearFiles()
282
+  // 重置批量加载状态
283
+  psExeLoading.value = false
284
+  allLoading.value = false
285
+  // 重置单独模块加载状态
286
+  stockLoading.value = false
287
+  payLoading.value = false
288
+  feePayLoading.value = false
289
+  feeInvoiceLoading.value = false
290
+  jinxiangInvoiceLoading.value = false
291
+  daodandengjiLoading.value = false
292
+  shoukuanrenlingLoading.value = false
293
+  xiaoshoujiesuanLoading.value = false
294
+  dailijiesuanLoading.value = false
295
+}
296
+
297
+// 通用导入方法(抽离重复逻辑)
298
+const commonImport = async (apiMethod, loadingRef, businessName) => {
145 299
   if (!fileList.value.length) {
146 300
     ElMessage.warning('请先选择Excel文件')
147 301
     return
148 302
   }
149
-
150 303
   const file = fileList.value[0].raw
151
-  loading.value = true
304
+  loadingRef.value = true
152 305
   errorMessage.value = ''
153 306
   successMessage.value = ''
154
-
155 307
   try {
156
-    console.log('开始上传采销文件:', file.name)
157
-
158
-    // 调用后端API
159
-    const response = await importPsExeExcel(file)
160
-
161
-    console.log('API响应成功:', response.status)
162
-    console.log('响应数据:', response.data)
163
-
164
-    // 处理响应数据
308
+    console.log(`开始上传${businessName}文件:`, file.name)
309
+    const response = await apiMethod(file)
165 310
     if (response.status === 200) {
166 311
       const resultData = response.data
167
-
168 312
       if (resultData.code === 200 || resultData.success === true) {
169
-        successMessage.value = resultData.message || '采销执行表导入成功'
170
-        ElMessage.success('采销执行表导入成功')
313
+        successMessage.value = resultData.message || `${businessName}导入成功`
314
+        ElMessage.success(`${businessName}导入成功`)
171 315
       } else {
172
-        errorMessage.value = resultData.message || '采销执行表导入失败'
173
-        ElMessage.error('采销执行表导入失败')
316
+        errorMessage.value = resultData.message || `${businessName}导入失败`
317
+        ElMessage.error(`${businessName}导入失败`)
174 318
       }
175 319
     }
176
-
177 320
   } catch (error) {
178
-    console.error('详细错误信息:', error)
321
+    console.error(`${businessName}导入错误:`, error)
179 322
     errorMessage.value = error.message || '网络请求失败'
180
-    ElMessage.error('采销执行表导入失败')
323
+    ElMessage.error(`${businessName}导入失败`)
181 324
   } finally {
182
-    loading.value = false
325
+    loadingRef.value = false
183 326
   }
184 327
 }
185 328
 
186
-// 新增:执行库存业务导入
187
-const handleStockImport = async () => {
188
-  if (!fileList.value.length) {
189
-    ElMessage.warning('请先选择Excel文件')
190
-    return
191
-  }
329
+// 1. 采销执行表导入(单独)
330
+const handlePsExeImport = () => {
331
+  commonImport(importPsExeExcel, psExeLoading, '采销执行表')
332
+}
192 333
 
193
-  const file = fileList.value[0].raw
194
-  stockLoading.value = true
195
-  errorMessage.value = ''
196
-  successMessage.value = ''
334
+// 2. 导入所有业务(批量)
335
+const handleImportAll = () => {
336
+  commonImport(importAllExcel, allLoading, '所有业务')
337
+}
197 338
 
198
-  try {
199
-    console.log('开始上传库存文件:', file.name)
339
+// 3. 库存业务导入(单独)
340
+const handleStockImport = () => {
341
+  commonImport(importStockExcel, stockLoading, '库存业务')
342
+}
200 343
 
201
-    // 调用库存导入API
202
-    const response = await importStockExcel(file)
344
+// 4. 付款业务导入(单独)
345
+const handlePayImport = () => {
346
+  commonImport(importPayExcel, payLoading, '货款付款')
347
+}
203 348
 
204
-    console.log('库存API响应成功:', response.status)
205
-    console.log('响应数据:', response.data)
349
+// 5. 费用付款业务导入(单独)
350
+const handleFeePayImport = () => {
351
+  commonImport(importFeePayExcel, feePayLoading, '费用付款')
352
+}
206 353
 
207
-    // 处理响应数据
208
-    if (response.status === 200) {
209
-      const resultData = response.data
354
+// 6. 费用发票结算导入(单独)
355
+const handleFeeInvoiceImport = () => {
356
+  commonImport(importFeeInvoiceExcel, feeInvoiceLoading, '费用发票结算业务')
357
+}
210 358
 
211
-      if (resultData.code === 200 || resultData.success === true) {
212
-        successMessage.value = resultData.data || '库存业务导入成功'
213
-        ElMessage.success('库存业务导入成功')
214
-      } else {
215
-        errorMessage.value = resultData.data || '库存业务导入失败'
216
-        ElMessage.error('库存业务导入失败')
217
-      }
218
-    }
359
+// 7. 进项发票结算导入(单独)
360
+const handleJinxiangInvoiceImport = () => {
361
+  commonImport(importJinxiangInvoiceExcel, jinxiangInvoiceLoading, '进项发票结算业务')
362
+}
219 363
 
220
-  } catch (error) {
221
-    console.error('库存导入错误信息:', error)
222
-    errorMessage.value = error.message || '网络请求失败'
223
-    ElMessage.error('库存业务导入失败')
224
-  } finally {
225
-    stockLoading.value = false
226
-  }
364
+// 8. 到货登记结算导入(单独)
365
+const handleDaodandengjiImport = () => {
366
+  commonImport(importDaodandengjiExcel, daodandengjiLoading, '到货登记结算业务')
227 367
 }
228 368
 
229
-// 重置
230
-const handleReset = () => {
231
-  fileList.value = []
232
-  errorMessage.value = ''
233
-  successMessage.value = ''
234
-  uploadRef.value?.clearFiles()
369
+// 9. 收款认领结算导入(单独)
370
+const handleShoukuanrenlingImport = () => {
371
+  commonImport(importShoukuanrenlingExcel, shoukuanrenlingLoading, '收款认领结算业务')
372
+}
373
+
374
+// 10. 销售结算开票导入(单独)
375
+const handleXiaoshoujiesuanImport = () => {
376
+  commonImport(importXiaoshoujiesuanExcel, xiaoshoujiesuanLoading, '销售结算开票业务')
377
+}
378
+
379
+// 11. 代理结算业务导入(单独)
380
+const handleDailijiesuanImport = () => {
381
+  commonImport(importDailijiesuanExcel, dailijiesuanLoading, '代理结算业务')
235 382
 }
236 383
 </script>
237 384
 
238 385
 <style scoped>
239
-/* 样式保持不变 */
240 386
 .excel-import-simple {
241 387
   padding: 20px;
242
-  max-width: 900px;
388
+  max-width: 1200px;
243 389
   margin: 0 auto;
244 390
 }
245 391
 
246 392
 .import-card {
247
-  min-height: 500px;
393
+  min-height: 600px;
248 394
 }
249 395
 
250 396
 .card-header {
@@ -262,16 +408,34 @@ const handleReset = () => {
262 408
   margin: 20px 0;
263 409
 }
264 410
 
265
-.action-buttons {
411
+/* 批量按钮样式 */
412
+.action-buttons.batch-buttons {
266 413
   text-align: center;
267 414
   margin: 20px 0;
268 415
 }
269 416
 
270
-.error-message-area {
271
-  margin-top: 20px;
417
+/* 单独模块按钮样式 */
418
+.action-buttons.single-buttons {
419
+  text-align: left;
420
+  margin: 0 20px 20px;
421
+  border-top: 1px dashed #e6e6e6;
422
+  padding-top: 20px;
423
+}
424
+
425
+.single-buttons-group {
426
+  display: flex;
427
+  align-items: center;
428
+}
429
+
430
+.group-title {
431
+  font-size: 14px;
432
+  color: #666;
433
+  width: 80px;
434
+  text-align: right;
435
+  margin-right: 10px;
272 436
 }
273 437
 
274
-.success-message-area {
438
+.error-message-area, .success-message-area {
275 439
   margin-top: 20px;
276 440
 }
277 441
 

Loading…
Откажи
Сачувај