refactor(admin,merchant): 商户应用删除升级为强确认

两端 MchAppWorkbench.handleDelete 改用 useDeleteConfirm, 须输入应用名匹配并经最终确认方可执行; 设为默认/取消默认的普通二次确认保持不变
This commit is contained in:
DaxPay Dev
2026-07-25 10:58:48 +08:00
parent aca9fd0909
commit b3244137d6
2 changed files with 22 additions and 18 deletions

View File

@@ -9,6 +9,7 @@
import { MchAppInfoApi, type MchAppInfoResult } from '#/api/payment/merchant/mch-app-info.api';
import RouteQueryMissingState from '#/components/route/RouteQueryMissingState.vue';
import { PermCodes } from '#/constants/perm-codes';
import { useDeleteConfirm } from '#/hooks/useDeleteConfirm';
import { useMessage } from '#/hooks/useMessage';
import { usePermission } from '#/hooks/usePermission';
import { normalizeRouteQueryValue, useRequiredRouteQuery } from '#/hooks/useRequiredRouteQuery';
@@ -39,6 +40,7 @@
const route = useRoute();
const router = useRouter();
const { confirm, message } = useMessage();
const { openDeleteConfirm } = useDeleteConfirm();
const { hasPermission } = usePermission();
const routeContext = useRequiredRouteQuery({
@@ -312,7 +314,7 @@
}
/**
* 删除应用
* 删除应用(强确认:须输入应用名称匹配)
*
* 默认应用禁止删除(与 MchAppInfoService.delete 后端校验对齐),
* 需先把其他应用设为默认, 再删除当前应用。
@@ -322,15 +324,15 @@
message.warning($t('payment.merchant.app.app.deleteDefaultBlocked'));
return;
}
confirm({
content: $t('payment.merchant.app.app.confirmDelete'),
onOk() {
return MchAppInfoApi.delete(appInfo.value.id!).then(() => {
message.success($t('common.operationSuccess'));
router.push({
path: '/payment/merchant/app',
query: { mchNo: mchNo.value },
});
openDeleteConfirm({
name: appInfo.value.appName || '',
verificationText: appInfo.value.appName || '',
onConfirm: async () => {
await MchAppInfoApi.delete(appInfo.value.id!);
message.success($t('common.operationSuccess'));
router.push({
path: '/payment/merchant/app',
query: { mchNo: mchNo.value },
});
},
});

View File

@@ -9,6 +9,7 @@
import { MchAppInfoApi, type MchAppInfoResult } from '#/api/payment/merchant/mch-app-info.api';
import RouteQueryMissingState from '#/components/route/RouteQueryMissingState.vue';
import { PermCodes } from '#/constants/perm-codes';
import { useDeleteConfirm } from '#/hooks/useDeleteConfirm';
import { useMessage } from '#/hooks/useMessage';
import { usePermission } from '#/hooks/usePermission';
import { useRequiredRouteQuery } from '#/hooks/useRequiredRouteQuery';
@@ -38,6 +39,7 @@
const router = useRouter();
const { confirm, message } = useMessage();
const { openDeleteConfirm } = useDeleteConfirm();
const { hasPermission } = usePermission();
// 商户端无 mchNo URL 维度,仅校验 appId
@@ -299,7 +301,7 @@
}
/**
* 删除应用
* 删除应用(强确认:须输入应用名称匹配)
*
* 默认应用禁止删除(与 MchAppInfoService.delete 后端校验对齐),
* 需先把其他应用设为默认, 再删除当前应用。
@@ -309,13 +311,13 @@
message.warning($t('payment.merchant.app.app.deleteDefaultBlocked'));
return;
}
confirm({
content: $t('payment.merchant.app.app.confirmDelete'),
onOk() {
return MchAppInfoApi.delete(appInfo.value.id!).then(() => {
message.success($t('common.operationSuccess'));
router.push('/mch/app');
});
openDeleteConfirm({
name: appInfo.value.appName || '',
verificationText: appInfo.value.appName || '',
onConfirm: async () => {
await MchAppInfoApi.delete(appInfo.value.id!);
message.success($t('common.operationSuccess'));
router.push('/mch/app');
},
});
}