vue dialog弹窗步骤返回按钮和关闭按钮冲突解决

操作情景:
dialog弹窗是一个步骤条弹窗。点击下一步进行下一步操作,点击返回,返回上一步操作内容,因该弹窗是一个公共组件,关闭按钮和返回按钮都将弹窗进行了关闭操作,现需要在第一步的时候,返回按钮的文字由“返回”显示为“取消”,并且点击“取消”关闭弹窗,而点击“返回”则返回上一步并且不关闭弹窗。

解决办法:

<common-dialog
      :key="dialogKey"
      :model-value="dialogVisible"
      :title="dialogTitle"
      width="1496px"
      :confirm-text="isReadOnly ? '关闭' : '保存'"
      :show-cancel="!isReadOnly"
      :cancel-text="currentStep === 0 ? '取消' : '返回'"
      :ok-loading="dialogLoading"
      @update:model-value="handleDialogUpdate"
      @confirm="validateCurrentStep"
      @cancel="handleDialogCancel"
    >

主要是通过以下三部分进行返回和关闭的控制:

:model-value="dialogVisible"
@update:model-value="handleDialogUpdate"
@cancel="handleDialogCancel"
// 添加一个标志来控制是否执行handleDialogUpdate
const isCancelClick = ref(false);

// 弹窗取消/返回
const handleDialogCancel = () => {
  isCancelClick.value = true;

  // 如果当前是第一步(cancel-text为"取消"),则关闭弹窗
  if (currentStep.value === 0) {
    infoObj.clearInfo();
    dialogVisible.value = false;
  } else {
    // 其他步骤(cancel-text为"返回"),返回上一步
    prevStep();
  }
};

// 处理叉按钮
const handleDialogUpdate = (value) => {
  // 如果是取消按钮触发的,不执行
  if (isCancelClick.value) {
    isCancelClick.value = false;
    return;
  }

  // 点击叉按钮时,直接关闭弹窗
  dialogVisible.value = value;
  // 清空 infoObj
  infoObj.clearInfo();
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值