帖子
帖子
用户
博客
课程
12下一页
返回列表 发新帖
显示全部楼层
15
帖子
0
勋章
386
Y币

打开弹窗怎么才能不走底层默认的查询方法?

[复制链接]
发表于 2024-2-27 17:13:19
本帖最后由 星空昊 于 2024-2-27 17:16 编辑

我要做版本的切换,基本已经实现了,现在有个问题。

当为版本一的时候。我创建了三包。

版本三的时候,将那两包删除了。

这时候,查询版本一,原来删除的版本,由于查看的时候,会自动走底层自己的查询,根据id去查,由于数据已经被删除了,导致没法查看。
我这里显示不同版本的方法是创建了一模一样的数据,存了一份,然后再下载后中去查询我存的副本数据。但是由于删除了,导致没走到加载后方法。
报错:


查看的代码为:
vm.get("button59fi").on("click", (e) => {//查看
    console.info(e);
    console.info(vm.get("po_require_subpackList").getRow(e.index));
    let data = {
        billtype: 'voucher',      // 卡片:voucher
        billno: 'po_subpack_modal',       // 卡片页:编码
        params: {
            mode: 'edit',           // (编辑态、新增态、浏览态)
            id: vm.get("po_require_subpackList").getRow(e.index).id,  // 编辑数据ID
            allData: vm.getAllData(),
            modeVersion: modalversion,
            readOnly: true,
        }
    };
    cb.loader.runCommandLine('bill', data, vm);
})弹窗里面的查询后方法为://根据版本显示对应内容
function showSubByVersion(viewModel, version) {
    let resultSubData = showSubDiffVersion(viewModel, version);
    let allSubDatas = getSubAllData(viewModel);
    if (resultSubData == false || allSubDatas == false) {
        return;
    }
    let allSubData = JSON.parse(JSON.stringify(allSubDatas)) || [];

    let requireSubPackage = resultSubData.po_require_subpack;
    const excludeKeys = ['_status', 'attrNames', 'creator', 'dr', 'billEntityInfo', 'billField',
        'checkItemMap', 'extendData', 'serializeNullFields', 'fullName', 'metaFullName', 'new', 'tableName',
        'nonpublic_file', 'pkFieldName', 'primaryKey', 'modifier', "po_require_demandList", "po_require_reviewrulesList",
        "po_require_reviewrules_techList", "po_require_id", "pubts"];
    for (let key in requireSubPackage) {
        if (allSubDatas.hasOwnProperty(key) && !excludeKeys.includes(key)) {
            viewModel.get(key).setValue(requireSubPackage[key]);
        }
    }
    //这里需要重新调一下,因为为否时要隐藏。
    isImportsAct();
    let parentViewModel = viewModel.getCache('parentViewModel');
    initCheckApplyStyle(viewModel, parentViewModel);
    initReviewRule(viewModel, parentViewModel);
    //落实政策功能
    initImplPolicy();
    //强制标准
    isStandardAct();
    //自选要求
    initOptionalRequirements();
    //填写方式
    FillingMethod();
    //需求调查
    isDemandSurveyAct();
    //面向中小企业采购
    enterpriseProcureAct();
    updateSubRows(allSubData, resultSubData, 'po_require_demandList', viewModel);
    updateSubRows(allSubData, resultSubData, 'po_require_reviewrulesList', viewModel);
    updateSubRows(allSubData, resultSubData, 'po_require_reviewrules_techList', viewModel);
}

//更新三个孙表
function updateSubRows(allSubData, resultSubData, key, viewModel) {
    let subRows = allSubData[key];
    let resultSubRows = resultSubData.po_require_subpack[key] || [];

    subRows = Array.from({length: Math.max(subRows.length, resultSubRows.length)}, (_, index) => {
        return resultSubRows[index] || {};
    });

    viewModel.get(key).setDataSource(subRows);

    // 有一种情况需要删行,就是当有某一行数据都为空的时候,将这行数据删行。
    viewModel.get(key).getRows().forEach((value, k) => {
        //删除
        if (!value.id) {
            viewModel.get(key).deleteRows(k)
        }
    })
}

本帖子中包含更多资源,您需要 登录 才可以下载或查看,没有帐号?立即注册

X
星空昊
15
帖子
0
勋章
386
Y币
最佳答案
还是重写了bill/detail方法解决
143
帖子
2
勋章
4万+
Y币
你们是私有云  你的问题是打开模态框的时候传的id是已删除的是吗
方案1、模态框那个设计器里  找到action把url换一下  自己写个接口   比如 bill/list换成自己的接口地址
方案2、依据你备份数据的实体创建模态框,在打开模态框时传入的id传入备份的数据的id,关系你肯定存着呢。
15
帖子
0
勋章
386
Y币
yonyouhmm · 2024-2-27 17:29你们是私有云  你的问题是打开模态框的时候传的id是已删除的是吗
方案1、模态框那个设计器里  找到action把url换一下  自己写个接口   比如 bill/list换成自己的接口地址
方案2、依据你备份数据的实体创建模态框,在 ...

是直接改这个吗?
{
      "DESCRIPTION": "详情查询",
      "YTENANT_ID": "udq6xdvm",
      "cAction": "detail",
      "cCommand": "cmdDetail",
      "cDesignProps": {},
      "cHttpMethod": "GET",
      "cSvcUrl": "/bill/detail",
      "id": "1868396802203451432",
      "pubts": 1709015644063,
      "subid": "cctv_po_require",
      "system": 1,
      "title": "详情查询"
    },
但是我不是什么时候都走自己的接口,必须有版本号新的是时候才走自己的接口,否则还走他原来的。这个能配置吗?这块改完是不是就只能走自己的接口了?
143
帖子
2
勋章
4万+
Y币
星空昊 · 2024-2-27 17:39是直接改这个吗?
{
      "DESCRIPTION": "详情查询",

奥  只备份了删除的数据  那就是数据要从两个表来


自己扩展下这个动作 判断下可以吧  我没操作过 你试试

本帖子中包含更多资源,您需要 登录 才可以下载或查看,没有帐号?立即注册

X
15
帖子
0
勋章
386
Y币
yonyouhmm · 2024-2-27 18:04奥  只备份了删除的数据  那就是数据要从两个表来



这个是啥?不会用,有文档吗兄弟
143
帖子
2
勋章
4万+
Y币
星空昊 · 2024-2-27 18:33这个是啥?不会用,有文档吗兄弟

我上传这个附件能看到么

本帖子中包含更多资源,您需要 登录 才可以下载或查看,没有帐号?立即注册

X
143
帖子
2
勋章
4万+
Y币
星空昊 · 2024-2-27 18:33这个是啥?不会用,有文档吗兄弟

我感觉你还是要自定义一个接口 替换bill/detail  
15
帖子
0
勋章
386
Y币
本帖最后由 星空昊 于 2024-2-28 15:49 编辑
yonyouhmm · 2024-2-27 19:28我感觉你还是要自定义一个接口 替换bill/detail

我想在这里拼接查询条件,先查一下这个单据是否被删除了,如果被删除了,就拼上dr=1让他被查询出来。这样行吗?我代码写了部分,为啥不行,是拼接方式不对吗?
@Override
public void beforeBillDetailQuery(BillQueryContext billContext, QuerySchema querySchema) throws Exception {
    QueryConditionGroup qmsAnd = new QueryConditionGroup(ConditionOperator.and);
    //todo 查询一下这个单据是否被删除,如果被删除,就将dr=1这个条件加上,让他能被查询出来

    //拼接dr=1
    qmsAnd.addCondition(new QueryCondition("dr", ConditionOperator.eq, 1));
    querySchema.addCondition(qmsAnd);
    super.beforeBillDetailQuery(billContext, querySchema);
}
数据的SQL想拼接成这样,但是这里不知道代码里怎么拼接。
SELECT * FROM "cctv-ffm_db".po_require_subpack where id = '1939841160822915087' and (dr=1 or dr=0)
15
帖子
0
勋章
386
Y币
星空昊 · 2024-2-28 15:43我想在这里拼接查询条件,先查一下这个单据是否被删除了,如果被删除了,就拼上dr=1让他被查询出来。这样行吗?我代码写了部分,为啥不行,是拼接方式不对吗?
@Override
public void beforeBillDetailQuery(BillQu ...

可以了,我拼接方式写错了。这样就可以了。
@Override
public void beforeBillDetailQuery(BillQueryContext billContext, QuerySchema querySchema) throws Exception {
    // 获取单据ID
    String billId = billContext.getBillId();

    // todo 检查单据是否被删除,假设 isBillDeleted() 方法用于检查单据是否被删除
    boolean isDeleted = isBillDeleted(billId);

    // 如果单据被删除,添加 dr=1 条件
    if (isDeleted) {
        QueryConditionGroup qmsOr = new QueryConditionGroup(ConditionOperator.or);
        qmsOr.addCondition(new QueryCondition("dr", ConditionOperator.eq, 1));
        qmsOr.addCondition(new QueryCondition("dr", ConditionOperator.eq, 0));
        querySchema.addCondition(qmsOr);
    }

    super.beforeBillDetailQuery(billContext, querySchema);
}

// 假设这是一个用于检查单据是否被删除的方法
private boolean isBillDeleted(String billId) {
    // 返回 true 表示单据被删除,返回 false 表示单据未被删除
    return true; // 假设单据被删除
}
15
帖子
0
勋章
386
Y币
yonyouhmm · 2024-2-27 19:28我感觉你还是要自定义一个接口 替换bill/detail

好像还是不行,查询的数据不是那一条。
12下一页
您需要登录后才可以回帖 登录

本版积分规则