猪齿鱼(Choerodon UI )dataSet.delete通用删除的封装 —— 解决两个dataSet.delete的自身问题

通用删除(comDelete) —— 两次删除的解决方案

一、背景与简介

删除的三个通用问题 —— 详情请看「猪齿鱼“可分页表格”的四个通用问题以及解决方案」

  1. 通用删除(@common/utils/ciecUtils中的commonDelete)的不稳定(依赖于dataSet.totalCount),不能保证在所有场景下均稳定执行成功删除后执行的代码,比如合同锁货反写货物行 货物行的删除,引用预合同新建合同场景等 —— 不再基于dataSet.totalCount,而是基于两次删除
  2. 勾选已保存的数据和新增的数据,一起删除时,dataSet.delete先删除新增的数据(一定成功),再删除已保存的数据(可能失败),导致删除的后续方法没有执行 —— 先删除已保存数据,再删除新增的数据
  3. 新增行数大于当前分页的大小时,再删除已保存的数据,会导致表格只会剩余<=10条的数据 —— 使用axios.delete + dataSet.remove来模拟dataSet.delete
一、勾选已保存的数据和新增的数据,一起删除时,dataSet.delete先删除新增的数据(一定成功),再删除已保存的数据(可能失败),导致删除的后续方法没有执行

前提:该表格有分页,且使用了dataSet.delete方法进行立即删除(后端删除);

1、问题描述 —— hzrl-0001-9894【销售合同】销售合同复制货物行未保存 删除复制的货物行价格构成行未同步删除

  • 勾选新增的行和已保存的行,进行后端删除,会使用dataSet.delete(selectedRecords)进行删除;
  • 但是这个猪齿鱼的方法,会先删除新增的行,删除成功后,再调用接口删除已保存的行,当删除失败后,会自动弹窗,并抛出异常,除非用catch捕获,后续联动代码不会执行;

2、解决方案

  1. 用catch来捕获报错,并同时进行后续的联动操作 —— 改动最小,但是还是会有下面的”问题四“;
  2. 基于两次删除来解决这个问题 —— 先删除已保存的数据,删除成功后再删除新增的数据,但是还是会有“问题四”;

3、注意事项

使用最新的comDelete,基于两次删除,同时也兼容了”问题四“;

二、新增行数大于当前分页的大小时,再删除已保存的数据,会导致表格只会剩余<=10条的数据

前提:该表格有分页,且使用了dataSet.delete方法进行立即删除(后端删除);

1、问题描述 —— hzrl-0001-10935【采购合同】采购合同导入后删除点击保存系统提示:明细行对应的uuid无效 —— 猪齿鱼组件问题

  • 当前表格存在已保存的数据,新增行,使得行数大于每页行数(10条),比如说12条;
  • 删除一条已经保存的数据,删除成功后,发现本应该剩余11条数据的表格,仅剩余10条数据;
  • 既不符合预期,也会导致表格联动有问题;

2、解决方案

使用axios.delete + dataSet.remove来模拟dataSet.delete

二、基本用法

import {
    comDelete } from '@common/utils/comMethod';

{
   
  type: 'delete',
  permissionList: {
   
    code: `${
     permissionCode}.button.delete1`,
    type: 'button',
    meaning: '按钮定义-删除',
  },
  condition: () => {
   
    /** 存在勾选数据为开单完成 */
    return !goodsInfoDS.selected.some((res: Record) => isCompleted(res) || isInitFlag(res));
  },
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值