ZBLOG

$.ajax({ method: "POST", url: "../d/detail/keyInfo", data: { custId: custId }, success: function(result) { var jsonRes = JSON.parse(result); for (const item of jsonRes) { if (item.code === 'loan') { ...

要在你的 JavaScript 代码中实现对不同合同状态(所有、已结清、停催、诉讼)的过滤,我们可以使用按钮的状态来决定展示哪些合同。以下是如何修改你提供的 AJAX 调用部分,以实现这个功能的示例:

// 假设有一个变量 currentTab 表示当前选中的标签,可以是 'all', 'settled', 'stopped', 'litigation'
let currentTab = 'all'; // 默认显示所有

// 监听按钮点击事件以改变 currentTab
function setCurrentTab(tab) {
    currentTab = tab;
    filterLoans(); // 每次切换时调用过滤函数
}

// 过滤贷款信息
function filterLoans() {
    // 根据 currentTab 过滤出相应的贷款信息
    const filteredLoans = jsonRes.flatMap(item => {
        if (item.code === 'loan') {
            return item.child.filter(loan => {
                const loanStatus = loan.child.find(child => child.code === 'loanStatus');
                if (!loanStatus) return true; // 如果没有状态则默认通过

                switch (currentTab) {
                    case 'settled':
                        return loanStatus.value === '已结清';
                    case 'stopped':
                        return loanStatus.value === '停催';
                    case 'litigation':
                        return loanStatus.value === '诉讼';
                    case 'all':
                    default:
                        return true; // 显示所有合同
                }
            });
        }
        return [];
    });

    me.form.initForm(filteredLoans); // 将筛选后的结果传递给表单初始化方法
}

$.ajax({
    method: "POST",
    url: "../d/detail/keyInfo",
    data: { custId: custId },
    success: function(result) {
        var jsonRes = JSON.parse(result);

        for (const item of jsonRes) {
            if (item.code === 'loan') {
                for (const loan of item.child) {
                    const Index = loan.path.split('.')[1];
                    let contractCode;
                    me.overDueInfoIndex[loan.path] = Index;
                    const child_OverduePeriod = loan.child.find(val => val.code === "overduePeriod");
                    const child_LoanCharacter = loan.child.find(val => val.code === "loanCharacter");
                    
                    if (child_LoanCharacter && child_LoanCharacter.value === "Y") {
                        Object.assign(authMapLoan, { totalPaymentAmount: '' });
                    }
                    
                    const child_ProductLine = loan.child.find(val => val.code === "productLine");
                    
                    if (child_ProductLine && !child_ProductLine.ifVirtual) {
                        Object.assign(authMapLoan, { installmentLoanAmount: '' });
                        
                        const productLine = child_ProductLine.line;

                        loan.child = loan.child.reduce((arr, child) => {
                            if (child.code == 'overduePeriod') {
                                if (child.title.includes("(") && child.title.includes(")")) {
                                    child.title = child.title.replace('(', '(').replace(')', ')');
                                }
                            }

                            if (child.code == 'loanStatus' && child_OverduePeriod && child_OverduePeriod.value == '0') {
                                child.valueMap[child.value] += `(${lang('NO_DEBT')})`;
                            }

                            if (child.code === 'contractCode') {
                                contractCode = child.value;
                                me.loanPathContractCodes[loan.path] = child.value;
                            }

                            if (child.code === 'allowCollNextPayment' && !child.value) return arr;

                            const DEFAULT_SHOW = !(child.code in authMapLoan);
                            const AUTH_SHOW = (child.code in authMapLoan) && canI(authMapLoan[child.code]);

                            if (DEFAULT_SHOW || AUTH_SHOW) {
                                arr.push(child);
                            }
                            
                            return arr;
                        }, []);
                        
                        // 新增:为每个贷款对象添加 status 属性,供后续过滤使用
                        loan.statusValue=loansArray(value);
                    }
                }
            }
        }

        me.keyInfo=jsonRes; 
        filterLoans(); // 初始化时调用一次以填充数据
        me.form.initForm(jsonRes);
        
      // 在此处加入按钮监听器,这取决于你实际在项目中的实现方式,假设是以下形式:
      document.querySelector('#tab-all').addEventListener('click', () => setCurrentTab('all'));
      document.querySelector('#tab-settled').addEventListener('click', () => setCurrentTab('settled'));
      document.querySelector('#tab-stopped').addEventListener('click', () => setCurrentTab('stopped'));
      document.querySelector('#tab-litigation').addEventListener('click', () => setCurrentTab('litigation'));
    }
});

解释:

  1. currentTab:一个变量,用于跟踪当前选择的标签。
  2. setCurrentTab(tab):根据被点击的标签设置 currentTab 的值,并调用 filterLoans() 函数来更新显示。
  3. filterLoans():这个函数会遍历 jsonRes 中的贷款信息,并根据当前选择的标签对其进行筛选,最后调用表单初始化函数更新页面内容。
  4. 事件监听器:在 AJAX 成功回调中,我们设置了不同标签按钮的事件监听器,通过点击这些按钮来切换不同的合同视图。

请确保将这段代码与你现有代码整合,并根据你的实际 HTML 按钮 ID 和结构进行调整。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=7649

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?