diff --git a/packages/order-system/src/views/dashboard/mixins/borrowedMoney/borrowedMoney_audit.js b/packages/order-system/src/views/dashboard/mixins/borrowedMoney/borrowedMoney_audit.js
new file mode 100644
index 000000000..3649ef96e
--- /dev/null
+++ b/packages/order-system/src/views/dashboard/mixins/borrowedMoney/borrowedMoney_audit.js
@@ -0,0 +1,52 @@
+import instance from '../../../../utils/request';
+import { debounce } from '@/utils/trash/utils';
+
+export function borrowedMoneyAudit(params) {
+ return instance.request({
+ url: '/system/borrowedmoney/audit',
+ method: 'put',
+ params: {
+ id: params.id,
+ auditStatus: params.auditStatus
+ }
+ });
+}
+
+export var mixin_borrowedMoney_audit = {
+ methods: {
+ handleBorrowedMoneyAudit(row, e) {
+ // 检查是否有权限
+ if (!this.hasAuditPermission) {
+ this.$message({
+ type: 'warning',
+ message: '您没有复核权限!'
+ });
+ // 还原开关状态
+ row.auditState = e === '1' ? '0' : '1';
+ return;
+ }
+
+ console.log(`e=>`, e);
+ const debouncedAudit = debounce(function (row, auditStatus) {
+ borrowedMoneyAudit({ ...row, auditStatus })
+ .then(() => {
+ const message = auditStatus === '1' ? '复核成功!' : '取消复核!';
+ this.$message({
+ type: 'success',
+ message: message
+ });
+ this.getList();
+ })
+ .catch(() => {
+ // 如果API调用失败,还原开关状态
+ row.auditState = auditStatus === '1' ? '0' : '1';
+ });
+ }, 1000);
+
+ // 更新视图
+ row.auditStatus = e;
+ // 调用防抖后的函数,传递最新的 row 和 auditStatus
+ debouncedAudit.call(this, row, e);
+ }
+ }
+};
diff --git a/packages/order-system/src/views/system/borrowedmoney/index.vue b/packages/order-system/src/views/system/borrowedmoney/index.vue
index d935d0bfd..1d29b9663 100644
--- a/packages/order-system/src/views/system/borrowedmoney/index.vue
+++ b/packages/order-system/src/views/system/borrowedmoney/index.vue
@@ -53,7 +53,17 @@
+
+
+
+
+
+
+ hasAuditPermission && handleBorrowedMoneyAudit(scope.row, value)" />
+
+
+
查看历史还款
@@ -231,10 +241,15 @@ import { mixin_printHTML } from '../../dashboard/mixins/print';
import { mixin_bankType } from '../../dashboard/mixins/common/common_bankType';
import InfoDialog from '@/components/InfoDialog.vue';
+import { checkPermi } from '@/utils/permission';
+import { mixin_borrowedMoney_audit } from '../../dashboard/mixins/borrowedMoney/borrowedMoney_audit';
+import { create, all } from 'mathjs';
+const math = create(all);
+
export default {
name: 'BorrowedMoney',
components: { InfoDialog, SearchOption },
- mixins: [mixin_printHTML, mixin_bankType],
+ mixins: [mixin_printHTML, mixin_bankType, mixin_borrowedMoney_audit],
data() {
var validateloanNO = (rule, value, callback) => {
if (value === '') {
@@ -412,7 +427,10 @@ export default {
{ key: 5, label: `贷款年限`, visible: true },
{ key: 6, label: `抵押担保`, visible: true },
{ key: 7, label: `打入账户`, visible: true },
- { key: 8, label: `打入账号`, visible: true }
+ { key: 8, label: `打入账号`, visible: true },
+ { key: 9, label: `已还款金额`, visible: true },
+ { key: 10, label: `未还款金额`, visible: true },
+ { key: 11, label: `已还款利息`, visible: true }
/* {key: 9, label: `已还款标记`, visible: true},*/
],
// 还款弹窗
@@ -466,7 +484,10 @@ export default {
TableName() {
return TableName;
},
- ...mapGetters(['tempBorrowedMoneyList'])
+ ...mapGetters(['tempBorrowedMoneyList']),
+ hasAuditPermission() {
+ return checkPermi(['system:borrowedmoney:audit']);
+ }
},
// 展示与隐藏
watch: {
@@ -605,6 +626,29 @@ export default {
this.borrowedMoneyList = response.rows;
this.borrowedMoneyList.forEach(item => {
item.isEnd = item.isEnd ? '是' : '否';
+
+ // 计算已还款金额 = 借入金额 - 未还款金额
+ const moneyAmount = math.bignumber(item.moneyAmount || 0);
+ const unrepaidAmount = math.bignumber(item.unrepaidAmount || 0);
+ item.repaidAmount = math.format(math.subtract(moneyAmount, unrepaidAmount), { notation: 'fixed', precision: 2 });
+ // 未还款金额
+ item.unrepaidAmount = math.format(unrepaidAmount, { notation: 'fixed', precision: 2 });
+
+ // 计算已还款利息 = repayment数组中ratio的加权求和
+ let interestSum = math.bignumber(0);
+ if (item.repayments && Array.isArray(item.repayments)) {
+ item.repayments.forEach(rep => {
+ interestSum = math.add(interestSum, math.bignumber(rep.ratio || 0));
+ });
+ }
+ item.repaidInterest = math.format(interestSum, { notation: 'fixed', precision: 2 });
+
+ // 复核状态处理
+ if (item.auditState === null || item.auditState === undefined || item.auditState === '0' || item.auditState === 0) {
+ item.auditState = '0';
+ } else {
+ item.auditState = '1';
+ }
});
this.total = response.total;
this.loading = false;