Browse Source

bugfix:卡务操作-错扣补款;

bing 4 days ago
parent
commit
0e55934f3d

+ 14 - 1
src/api/consumption/XfConsumeDetail/index.ts

@@ -1,6 +1,6 @@
1 1
 import request from '@/utils/request';
2 2
 import { AxiosPromise } from 'axios';
3
-import { XfConsumeDetailVO, XfConsumeDetailForm, XfConsumeDetailQuery } from '@/api/consumption/XfConsumeDetail/types';
3
+import { XfConsumeDetailVO, XfConsumeDetailForm, XfConsumeDetailQuery, XfConsumeDetailCKBKVO } from '@/api/consumption/XfConsumeDetail/types';
4 4
 
5 5
 /**
6 6
  * 查询消费明细列表
@@ -15,6 +15,19 @@ export const listXfConsumeDetail = (query?: XfConsumeDetailQuery): AxiosPromise<
15 15
   });
16 16
 };
17 17
 
18
+/**
19
+ * 查询消费明细列表 for 错扣补款
20
+ * @param query
21
+ * @returns {*}
22
+ */
23
+export const listXfConsumeDetailCKBK = (query?: XfConsumeDetailQuery): AxiosPromise<XfConsumeDetailCKBKVO[]> => {
24
+  return request({
25
+    url: '/backstage/consumption/xfConsumeDetail/listCKBK',
26
+    method: 'get',
27
+    params: query
28
+  });
29
+};
30
+
18 31
 /**
19 32
  * 查询消费明细详细
20 33
  * @param consumeId

+ 173 - 0
src/api/consumption/XfConsumeDetail/types.ts

@@ -165,6 +165,8 @@ export interface XfConsumeDetailVO {
165 165
    * 备注
166 166
    */
167 167
   remark: string;
168
+
169
+  detailId: string;
168 170
 }
169 171
 
170 172
 export interface XfConsumeDetailForm extends BaseEntity {
@@ -451,3 +453,174 @@ export interface XfConsumeDetailQuery extends PageQuery {
451 453
    */
452 454
   params?: any;
453 455
 }
456
+
457
+export interface XfConsumeDetailCKBKVO {
458
+  /**
459
+   * 消费记录Id,主键
460
+   */
461
+  consumeId: string;
462
+
463
+  /**
464
+   * 原始记录Id,主键
465
+   */
466
+  originalId: string;
467
+
468
+  /**
469
+   * 记录Id
470
+   */
471
+  recordId: string | number;
472
+
473
+  /**
474
+   * 人员Id
475
+   */
476
+  userId: string | number;
477
+
478
+  /**
479
+   * 学/工号
480
+   */
481
+  userNumb: string;
482
+
483
+  /**
484
+   * 用户姓名
485
+   */
486
+  realName: string;
487
+
488
+  /**
489
+   * 部门Id
490
+   */
491
+  deptId: string | number;
492
+
493
+  /**
494
+   * 部门名称
495
+   */
496
+  deptName: string;
497
+
498
+  /**
499
+   * 消费日期
500
+   */
501
+  consumeDate: string;
502
+
503
+  /**
504
+   * 消费金额
505
+   */
506
+  consumeMoney: Decimal;
507
+
508
+  /**
509
+   * 卡流水号
510
+   */
511
+  cardNo: number;
512
+
513
+  /**
514
+   * 物理卡号
515
+   */
516
+  factoryId: string | number;
517
+
518
+  /**
519
+   * 卡上余额
520
+   */
521
+  cardValue: number;
522
+
523
+  /**
524
+   * 卡使用次数
525
+   */
526
+  cardCount: number;
527
+
528
+  /**
529
+   * 消费账户金额
530
+   */
531
+  consumeBalance: number;
532
+
533
+  /**
534
+   * 设备机号
535
+   */
536
+  termNo: number;
537
+
538
+  /**
539
+   * 设备名称
540
+   */
541
+  termName: string;
542
+
543
+  /**
544
+   * 机器流水号
545
+   */
546
+  termRecordId: string | number;
547
+
548
+  /**
549
+   * 是否已处理(和灰记录处理有关)
550
+   */
551
+  analysisFlag: number;
552
+
553
+  /**
554
+   * 状态标识(记录消费类型?)
555
+   */
556
+  statusFlag: number;
557
+
558
+  /**
559
+   * 营业员Id
560
+   */
561
+  operatorId: string | number;
562
+
563
+  /**
564
+   * 营业员名称
565
+   */
566
+  operatorName: string;
567
+
568
+  /**
569
+   * 结算账户Id
570
+   */
571
+  accountId: string | number;
572
+
573
+  /**
574
+   * 结算账户名称
575
+   */
576
+  accountName: string;
577
+
578
+  /**
579
+   * 房间Id
580
+   */
581
+  roomId: string | number;
582
+
583
+  /**
584
+   * 房间名称
585
+   */
586
+  roomName: string;
587
+
588
+  /**
589
+   * 钱包类型
590
+   */
591
+  bagType: string;
592
+
593
+  /**
594
+   * 餐类Id
595
+   */
596
+  mealType: number;
597
+
598
+  /**
599
+   * 餐类名称
600
+   */
601
+  mealName: string;
602
+
603
+  /**
604
+   * 是否发送短信,见 sys_yes_no字典类别
605
+   */
606
+  smsSend: string;
607
+
608
+  /**
609
+   * 消费记录标志位?
610
+   */
611
+  recordStatus: number;
612
+
613
+  /**
614
+   * 同步标志,0-未同步,1-已同步
615
+   */
616
+  syncStatus: number;
617
+
618
+  /**
619
+   * 备注
620
+   */
621
+  remark: string;
622
+
623
+  detailId: string;
624
+
625
+  details: XfConsumeDetailVO[];
626
+}

+ 32 - 4
src/views/cardCenter/cardOperation/ptCard/ErrorFillForm.vue

@@ -62,6 +62,23 @@
62 62
           highlight-current-row
63 63
           @current-change="handleCurrentChange"
64 64
         >
65
+          <el-table-column type="expand">
66
+            <template #default="props">
67
+              <div m="4">
68
+                <h3>错扣补款列表</h3>
69
+                <el-table :data="props.row.details" :border="true">
70
+                  <el-table-column label="补款时间" prop="consumeDate" />
71
+                  <!-- <el-table-column label="补款时间" prop="consumeDate">
72
+                    <template #default="scope">
73
+                      <span>{{ parseTime(scope.row.consumeDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
74
+                    </template>
75
+                  </el-table-column> -->
76
+                  <el-table-column label="补款金额" prop="consumeMoney" />
77
+                  <el-table-column label="操作人" prop="operatorName" />
78
+                </el-table>
79
+              </div>
80
+            </template>
81
+          </el-table-column>
65 82
           <el-table-column label="序列号" type="index" width="100" />
66 83
           <el-table-column label="消费时间" align="center" prop="consumeDate" width="250">
67 84
             <template #default="scope">
@@ -142,7 +159,7 @@
142 159
 <script setup name="RecompenseForm" lang="ts">
143 160
 import * as api from '@/api/consumption/XfConsumeDetail';
144 161
 import { dayjs, ElTable } from 'element-plus';
145
-import { XfConsumeDetailForm, XfConsumeDetailVO } from '@/api/consumption/XfConsumeDetail/types';
162
+import { XfConsumeDetailCKBKVO, XfConsumeDetailForm, XfConsumeDetailVO } from '@/api/consumption/XfConsumeDetail/types';
146 163
 import Decimal from 'decimal.js';
147 164
 import useUserStore from '@/store/modules/user';
148 165
 import { QuestionFilled } from '@element-plus/icons-vue';
@@ -207,7 +224,7 @@ const loading = ref(false);
207 224
 // 是否显示查询项
208 225
 const showSearch = ref(true);
209 226
 // 消费明细列表
210
-const xfConsumeDetailList = ref<XfConsumeDetailVO[]>([]);
227
+const xfConsumeDetailList = ref<XfConsumeDetailCKBKVO[]>([]);
211 228
 // 总记录数
212 229
 const total = ref(0);
213 230
 const dateRange = ref<[DateModelType, DateModelType]>(['', '']);
@@ -270,7 +287,7 @@ const cleaConsumeRange = () => {
270 287
 const getList = async () => {
271 288
   resetForm();
272 289
   loading.value = true;
273
-  const res = await api.listXfConsumeDetail(proxy?.addDateRange(queryParams, dateRange.value));
290
+  const res = await api.listXfConsumeDetailCKBK(proxy?.addDateRange(queryParams, dateRange.value));
274 291
   xfConsumeDetailList.value = res.rows;
275 292
   total.value = res.total;
276 293
   loading.value = false;
@@ -287,7 +304,7 @@ const resetQuery = () => {
287 304
   handleQuery();
288 305
 };
289 306
 // 单选选中
290
-const handleCurrentChange = (val: XfConsumeDetailVO | undefined) => {
307
+const handleCurrentChange = (val: XfConsumeDetailCKBKVO | undefined) => {
291 308
   if (val) {
292 309
     Object.assign(formData.value, val);
293 310
     const bag: DictDataOption = CARDBAGTYPE.value.find((p: DictDataOption) => p.value == formData.value.bagType);
@@ -347,6 +364,17 @@ const submitForm = async () => {
347 364
       proxy?.$modal.alertWarning('补款金额不能大于消费金额!');
348 365
       return;
349 366
     }
367
+    // 所有的补款金额之和不能大于消费金额
368
+    let totalValue = new Decimal(0);
369
+    for (const item of currentRow.value.details) {
370
+      totalValue = totalValue.sub(new Decimal(item.consumeMoney));
371
+    }
372
+    totalValue = totalValue.add(operatorValue);
373
+    console.log(totalValue, operatorValue, 'totalValue');
374
+    if (totalValue.comparedTo(consumeValue) === 1) {
375
+      proxy?.$modal.alertWarning('所有的补款金额之和不能大于消费金额!');
376
+      return;
377
+    }
350 378
     data.operatorId = useUserStore().userId;
351 379
     data.operatorName = useUserStore().realName;
352 380
     await api.recompenseConsumeDetail(data).then((res) => {

+ 1 - 1
src/views/cardCenter/cardOperation/ptCard/index.vue

@@ -155,7 +155,7 @@
155 155
                 <dict-tag :options="sys_normal_disable" :value="scope.row.status" />
156 156
               </template>
157 157
             </el-table-column>
158
-            <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="90">
158
+            <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">
159 159
               <template #default="scope">
160 160
                 <el-tooltip content="卡片信息" placement="top">
161 161
                   <el-button