diff --git a/apps/web-antd/src/adapter/component/index.ts b/apps/web-antd/src/adapter/component/index.ts index 71133647c..b972fd4c5 100644 --- a/apps/web-antd/src/adapter/component/index.ts +++ b/apps/web-antd/src/adapter/component/index.ts @@ -163,7 +163,7 @@ async function initComponentAdapter() { 'select', { component: TreeSelect, - fieldNames: { label: 'label', value: 'value', children: 'children' }, + props: { label: 'label', value: 'value', children: 'children' }, loadingSlot: 'suffixIcon', modelPropName: 'value', optionsPropName: 'treeData', diff --git a/apps/web-ele/src/api/mall/product/category.ts b/apps/web-ele/src/api/mall/product/category.ts index 3ca05b0f9..12d7202f4 100644 --- a/apps/web-ele/src/api/mall/product/category.ts +++ b/apps/web-ele/src/api/mall/product/category.ts @@ -53,6 +53,6 @@ export function getCategoryList(params: any) { // 获得商品分类列表 export function getCategorySimpleList() { return requestClient.get( - '/product/category/list-all-simple', + '/product/category/list', ); } diff --git a/apps/web-ele/src/api/mall/trade/afterSale/index.ts b/apps/web-ele/src/api/mall/trade/afterSale/index.ts index 95326af01..2aed74c24 100644 --- a/apps/web-ele/src/api/mall/trade/afterSale/index.ts +++ b/apps/web-ele/src/api/mall/trade/afterSale/index.ts @@ -1,5 +1,7 @@ import type { PageParam, PageResult } from '@vben/request'; +import type { MallOrderApi } from '#/api/mall/trade/order'; + import { requestClient } from '#/api/request'; export namespace MallAfterSaleApi { @@ -75,6 +77,21 @@ export namespace MallAfterSaleApi { receiveTime?: Date; /** 收货备注 */ receiveReason?: string; + /** 订单 */ + order?: MallOrderApi.Order; + /** 订单操作日志 */ + logs?: MallOrderApi.OrderLog[]; + /** 订单项 */ + orderItem?: MallOrderApi.OrderItem; + /** 用户信息 */ + user?: { + /** 用户头像 */ + avatar?: string; + /** 用户编号 */ + id?: null | number; + /** 用户昵称 */ + nickname?: string; + }; } /** 拒绝售后请求 */ diff --git a/apps/web-ele/src/api/mall/trade/order/index.ts b/apps/web-ele/src/api/mall/trade/order/index.ts index 6017fa5f5..a9d7d1884 100644 --- a/apps/web-ele/src/api/mall/trade/order/index.ts +++ b/apps/web-ele/src/api/mall/trade/order/index.ts @@ -53,6 +53,8 @@ export namespace MallOrderApi { /** 订单日志 */ export interface OrderLog { + /** 日志编号 */ + id: number; /** 日志内容 */ content?: string; /** 创建时间 */ @@ -108,7 +110,7 @@ export namespace MallOrderApi { /** 订单调价(总) */ adjustPrice?: null | number; /** 应付金额(总) */ - payPrice?: null | number; + payPrice?: null | number | string; /** 发货方式 */ deliveryType?: null | number; /** 自提门店编号 */ @@ -226,6 +228,13 @@ export namespace MallOrderApi { /** 收件人详细地址 */ receiverDetailAddress: string; } + + export interface OrderExpressTrackRespDTO { + /** 发生时间 */ + time: Date; + /** 快递状态 */ + content: string; + } } /** 查询交易订单列表 */ @@ -254,7 +263,9 @@ export function getOrder(id: number) { /** 查询交易订单物流详情 */ export function getExpressTrackList(id: number) { - return requestClient.get(`/trade/order/get-express-track-list?id=${id}`); + return requestClient.get( + `/trade/order/get-express-track-list?id=${id}`, + ); } /** 订单发货 */ diff --git a/apps/web-ele/src/locales/langs/zh-CN/page.json b/apps/web-ele/src/locales/langs/zh-CN/page.json index eefc4924b..30180ddf8 100644 --- a/apps/web-ele/src/locales/langs/zh-CN/page.json +++ b/apps/web-ele/src/locales/langs/zh-CN/page.json @@ -29,5 +29,62 @@ "tenant": { "placeholder": "请选择租户", "success": "切换租户成功" + }, + "common": { + "inputText": "请输入", + "selectText": "请选择", + "startTimeText": "开始时间", + "endTimeText": "结束时间", + "login": "登录", + "required": "该项为必填项", + "loginOut": "退出系统", + "document": "项目文档", + "profile": "个人中心", + "reminder": "温馨提示", + "loginOutMessage": "是否退出本系统?", + "back": "返回", + "ok": "确定", + "save": "保存", + "cancel": "取消", + "close": "关闭", + "reload": "重新加载", + "success": "成功", + "closeTab": "关闭标签页", + "closeTheLeftTab": "关闭左侧标签页", + "closeTheRightTab": "关闭右侧标签页", + "closeOther": "关闭其他标签页", + "closeAll": "关闭全部标签页", + "prevLabel": "上一步", + "nextLabel": "下一步", + "skipLabel": "跳过", + "doneLabel": "结束", + "menu": "菜单", + "menuDes": "以路由的结构渲染的菜单栏", + "collapse": "展开缩收", + "collapseDes": "展开和缩放菜单栏", + "tagsView": "标签页", + "tagsViewDes": "用于记录路由历史记录", + "tool": "工具", + "toolDes": "用于设置定制系统", + "query": "查询", + "reset": "重置", + "shrink": "收起", + "expand": "展开", + "confirmTitle": "系统提示", + "exportMessage": "是否确认导出数据项?", + "importMessage": "是否确认导入数据项?", + "createSuccess": "新增成功", + "updateSuccess": "修改成功", + "delMessage": "是否删除所选中数据?", + "delDataMessage": "是否删除数据?", + "delNoData": "请选择需要删除的数据", + "delSuccess": "删除成功", + "index": "序号", + "status": "状态", + "createTime": "创建时间", + "updateTime": "更新时间", + "copy": "复制", + "copySuccess": "复制成功", + "copyError": "复制失败" } } diff --git a/apps/web-ele/src/router/routes/modules/mall.ts b/apps/web-ele/src/router/routes/modules/mall.ts index 80416ba65..d5d396462 100644 --- a/apps/web-ele/src/router/routes/modules/mall.ts +++ b/apps/web-ele/src/router/routes/modules/mall.ts @@ -40,37 +40,37 @@ const routes: RouteRecordRaw[] = [ }, ], }, - // { - // path: '/mall/trade', - // name: 'TradeCenter', - // meta: { - // title: '交易中心', - // icon: 'lucide:shopping-cart', - // keepAlive: true, - // hideInMenu: true, - // }, - // children: [ - // { - // path: String.raw`order/detail/:id(\d+)`, - // name: 'TradeOrderDetail', - // meta: { - // title: '订单详情', - // activeMenu: '/mall/trade/order', - // }, - // component: () => import('#/views/mall/trade/order/detail/index.vue'), - // }, - // { - // path: String.raw`after-sale/detail/:id(\d+)`, - // name: 'TradeAfterSaleDetail', - // meta: { - // title: '退款详情', - // activeMenu: '/mall/trade/after-sale', - // }, - // component: () => - // import('#/views/mall/trade/afterSale/detail/index.vue'), - // }, - // ], - // }, + { + path: '/mall/trade', + name: 'TradeCenter', + meta: { + title: '交易中心', + icon: 'lucide:shopping-cart', + keepAlive: true, + hideInMenu: true, + }, + children: [ + { + path: String.raw`order/detail/:id(\d+)`, + name: 'TradeOrderDetail', + meta: { + title: '订单详情', + activeMenu: '/mall/trade/order', + }, + component: () => import('#/views/mall/trade/order/modules/detail.vue'), + }, + { + path: String.raw`after-sale/detail/:id(\d+)`, + name: 'TradeAfterSaleDetail', + meta: { + title: '退款详情', + activeMenu: '/mall/trade/after-sale', + }, + component: () => + import('#/views/mall/trade/afterSale/modules/detail.vue'), + }, + ], + }, ]; export default routes; diff --git a/apps/web-ele/src/views/infra/codegen/index.vue b/apps/web-ele/src/views/infra/codegen/index.vue index c8ab1b8c3..27584befa 100644 --- a/apps/web-ele/src/views/infra/codegen/index.vue +++ b/apps/web-ele/src/views/infra/codegen/index.vue @@ -12,7 +12,7 @@ import { useRouter } from 'vue-router'; import { DocAlert, Page, useVbenModal } from '@vben/common-ui'; import { isEmpty } from '@vben/utils'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElLoading, ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -73,47 +73,38 @@ function onEdit(row: InfraCodegenApi.CodegenTable) { /** 删除代码生成配置 */ async function onDelete(row: InfraCodegenApi.CodegenTable) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.tableName]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该代码生成配置吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteCodegenTable(row.id); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.tableName])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteCodegenTable(row.id); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.tableName])); + onRefresh(); } /** 批量删除代码生成配置 */ async function onDeleteBatch() { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该代码生成配置吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteCodegenTableList(checkedIds.value); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteCodegenTableList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } /** 同步数据库 */ async function onSync(row: InfraCodegenApi.CodegenTable) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.updating', [row.tableName]), - fullscreen: true, + await ElMessageBox.confirm('确定要同步该代码生成配置吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await syncCodegenFromDB(row.id); - ElMessage.success($t('ui.actionMessage.updateSuccess', [row.tableName])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await syncCodegenFromDB(row.id); + ElMessage.success($t('ui.actionMessage.updateSuccess', [row.tableName])); + onRefresh(); } /** 生成代码 */ diff --git a/apps/web-ele/src/views/infra/config/index.vue b/apps/web-ele/src/views/infra/config/index.vue index e765f2bae..506addc33 100644 --- a/apps/web-ele/src/views/infra/config/index.vue +++ b/apps/web-ele/src/views/infra/config/index.vue @@ -10,7 +10,7 @@ import { ref } from 'vue'; import { Page, useVbenModal } from '@vben/common-ui'; import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -52,34 +52,26 @@ function onEdit(row: InfraConfigApi.Config) { /** 删除参数 */ async function onDelete(row: InfraConfigApi.Config) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该参数吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteConfig(row.id as number); - loadingInstance.close(); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteConfig(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } /** 批量删除参数 */ async function onDeleteBatch() { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该参数吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteConfigList(checkedIds.value); - loadingInstance.close(); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteConfigList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-ele/src/views/infra/dataSourceConfig/index.vue b/apps/web-ele/src/views/infra/dataSourceConfig/index.vue index 65eacafe4..f99b56538 100644 --- a/apps/web-ele/src/views/infra/dataSourceConfig/index.vue +++ b/apps/web-ele/src/views/infra/dataSourceConfig/index.vue @@ -10,7 +10,7 @@ import { onMounted, ref } from 'vue'; import { Page, useVbenModal } from '@vben/common-ui'; import { isEmpty } from '@vben/utils'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -40,34 +40,26 @@ function onEdit(row: InfraDataSourceConfigApi.DataSourceConfig) { /** 删除数据源 */ async function onDelete(row: InfraDataSourceConfigApi.DataSourceConfig) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该数据源吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteDataSourceConfig(row.id as number); - loadingInstance.close(); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - await handleLoadData(); - } finally { - loadingInstance.close(); - } + await deleteDataSourceConfig(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } /** 批量删除数据源 */ async function onDeleteBatch() { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该数据源吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteDataSourceConfigList(checkedIds.value); - loadingInstance.close(); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - await handleLoadData(); - } finally { - loadingInstance.close(); - } + await deleteDataSourceConfigList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-ele/src/views/infra/file/index.vue b/apps/web-ele/src/views/infra/file/index.vue index 75385ef61..8fcca84b1 100644 --- a/apps/web-ele/src/views/infra/file/index.vue +++ b/apps/web-ele/src/views/infra/file/index.vue @@ -11,7 +11,7 @@ import { Page, useVbenModal } from '@vben/common-ui'; import { isEmpty, openWindow } from '@vben/utils'; import { useClipboard } from '@vueuse/core'; -import { ElButton, ElImage, ElLoading, ElMessage } from 'element-plus'; +import { ElButton, ElImage, ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { deleteFile, deleteFileList, getFilePage } from '#/api/infra/file'; @@ -60,36 +60,28 @@ function openUrl(url?: string) { /** 删除文件 */ async function onDelete(row: InfraFileApi.File) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name || row.path]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该文件吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteFile(row.id as number); - loadingInstance.close(); - ElMessage.success( - $t('ui.actionMessage.deleteSuccess', [row.name || row.path]), - ); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteFile(row.id as number); + ElMessage.success( + $t('ui.actionMessage.deleteSuccess', [row.name || row.path]), + ); + onRefresh(); } /** 批量删除文件 */ async function onDeleteBatch() { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该文件吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteFileList(checkedIds.value); - loadingInstance.close(); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteFileList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-ele/src/views/infra/fileConfig/index.vue b/apps/web-ele/src/views/infra/fileConfig/index.vue index 8d809c605..bcf67269e 100644 --- a/apps/web-ele/src/views/infra/fileConfig/index.vue +++ b/apps/web-ele/src/views/infra/fileConfig/index.vue @@ -10,7 +10,7 @@ import { ref } from 'vue'; import { confirm, Page, useVbenModal } from '@vben/common-ui'; import { isEmpty, openWindow } from '@vben/utils'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElLoading, ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -86,34 +86,26 @@ async function onTest(row: InfraFileConfigApi.FileConfig) { /** 删除文件配置 */ async function onDelete(row: InfraFileConfigApi.FileConfig) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该文件配置吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteFileConfig(row.id as number); - loadingInstance.close(); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteFileConfig(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } /** 批量删除文件配置 */ async function onDeleteBatch() { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该文件配置吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteFileConfigList(checkedIds.value); - loadingInstance.close(); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteFileConfigList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-ele/src/views/infra/job/index.vue b/apps/web-ele/src/views/infra/job/index.vue index 034a53c67..e197c9689 100644 --- a/apps/web-ele/src/views/infra/job/index.vue +++ b/apps/web-ele/src/views/infra/job/index.vue @@ -11,7 +11,7 @@ import { useRouter } from 'vue-router'; import { confirm, DocAlert, Page, useVbenModal } from '@vben/common-ui'; import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -105,32 +105,26 @@ function onLog(row?: InfraJobApi.Job) { /** 删除任务 */ async function onDelete(row: InfraJobApi.Job) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该任务吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteJob(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteJob(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } /** 批量删除任务 */ async function onDeleteBatch() { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该任务吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteJobList(checkedIds.value); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteJobList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-ele/src/views/mall/product/brand/index.vue b/apps/web-ele/src/views/mall/product/brand/index.vue index ab998994b..3a8c2fe8c 100644 --- a/apps/web-ele/src/views/mall/product/brand/index.vue +++ b/apps/web-ele/src/views/mall/product/brand/index.vue @@ -4,7 +4,7 @@ import type { MallBrandApi } from '#/api/mall/product/brand'; import { Page, useVbenModal } from '@vben/common-ui'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { deleteBrand, getBrandPage } from '#/api/mall/product/brand'; @@ -35,17 +35,15 @@ function handleEdit(row: MallBrandApi.Brand) { /** 删除品牌 */ async function handleDelete(row: MallBrandApi.Brand) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + // 二次确认 + await ElMessageBox.confirm('确定删除该品牌吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteBrand(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteBrand(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } const [Grid, gridApi] = useVbenVxeGrid({ diff --git a/apps/web-ele/src/views/mall/product/category/index.vue b/apps/web-ele/src/views/mall/product/category/index.vue index 7a49ff79e..4b3746e95 100644 --- a/apps/web-ele/src/views/mall/product/category/index.vue +++ b/apps/web-ele/src/views/mall/product/category/index.vue @@ -7,7 +7,7 @@ import { useRouter } from 'vue-router'; import { DocAlert, Page, useVbenModal } from '@vben/common-ui'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { deleteCategory, getCategoryList } from '#/api/mall/product/category'; @@ -52,17 +52,14 @@ const handleViewSpu = (id: number) => { /** 删除分类 */ async function handleDelete(row: MallCategoryApi.Category) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定删除该分类吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteCategory(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteCategory(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } /** 切换树形展开/收缩状态 */ diff --git a/apps/web-ele/src/views/mall/product/property/modules/property-grid.vue b/apps/web-ele/src/views/mall/product/property/modules/property-grid.vue index 9bc0f00a7..db4248ccb 100644 --- a/apps/web-ele/src/views/mall/product/property/modules/property-grid.vue +++ b/apps/web-ele/src/views/mall/product/property/modules/property-grid.vue @@ -7,7 +7,7 @@ import type { MallPropertyApi } from '#/api/mall/product/property'; import { useVbenModal } from '@vben/common-ui'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { deleteProperty, getPropertyPage } from '#/api/mall/product/property'; @@ -40,17 +40,14 @@ function handleEdit(row: any) { /** 删除属性 */ async function handleDelete(row: MallPropertyApi.Property) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定删除该属性吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteProperty(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteProperty(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } /** 表格事件 */ diff --git a/apps/web-ele/src/views/mall/product/property/modules/value-grid.vue b/apps/web-ele/src/views/mall/product/property/modules/value-grid.vue index 3c58b1ca1..72bffd8e3 100644 --- a/apps/web-ele/src/views/mall/product/property/modules/value-grid.vue +++ b/apps/web-ele/src/views/mall/product/property/modules/value-grid.vue @@ -6,7 +6,7 @@ import { watch } from 'vue'; import { useVbenModal } from '@vben/common-ui'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -47,17 +47,14 @@ function handleEdit(row: MallPropertyApi.PropertyValue) { /** 删除字典数据 */ async function handleDelete(row: MallPropertyApi.PropertyValue) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定删除该属性值吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deletePropertyValue(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deletePropertyValue(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } const [Grid, gridApi] = useVbenVxeGrid({ diff --git a/apps/web-ele/src/views/mall/product/spu/data.ts b/apps/web-ele/src/views/mall/product/spu/data.ts index 0d4c0a219..97aae7edc 100644 --- a/apps/web-ele/src/views/mall/product/spu/data.ts +++ b/apps/web-ele/src/views/mall/product/spu/data.ts @@ -24,7 +24,7 @@ export function useGridFormSchema(): VbenFormSchema[] { const res = await getCategoryList({}); return handleTree(res, 'id', 'parentId', 'children'); }, - fieldNames: { label: 'name', value: 'id', children: 'children' }, + props: { label: 'name', value: 'id', children: 'children' }, }, }, { diff --git a/apps/web-ele/src/views/mall/product/spu/index.vue b/apps/web-ele/src/views/mall/product/spu/index.vue index 97e336c5a..a60bbb2dc 100644 --- a/apps/web-ele/src/views/mall/product/spu/index.vue +++ b/apps/web-ele/src/views/mall/product/spu/index.vue @@ -13,7 +13,7 @@ import { treeToString, } from '@vben/utils'; -import { ElDescriptions, ElLoading, ElMessage, ElTabs } from 'element-plus'; +import { ElDescriptions, ElMessage, ElMessageBox, ElTabs } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { getCategoryList } from '#/api/mall/product/category'; @@ -97,35 +97,31 @@ function handleEdit(row: MallSpuApi.Spu) { /** 删除商品 */ async function handleDelete(row: MallSpuApi.Spu) { - const hideLoading = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定删除该商品吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteSpu(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - hideLoading.close(); - } + await deleteSpu(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } /** 添加到仓库 / 回收站的状态 */ async function handleStatus02Change(row: MallSpuApi.Spu, newStatus: number) { - // 二次确认 const text = newStatus === ProductSpuStatusEnum.RECYCLE.status ? '加入到回收站' : '恢复到仓库'; - confirm(`确认要"${row.name}"${text}吗?`) - .then(async () => { - await updateStatus({ id: row.id as number, status: newStatus }); - ElMessage.success(`${text}成功`); - onRefresh(); - }) - .catch(() => { - ElMessage.error(`${text}失败`); - }); + // 二次确认 + await ElMessageBox.confirm(`确认要jian"${row.name}"${text}吗?`, { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + }); + await updateStatus({ id: row.id as number, status: newStatus }); + ElMessage.success(`${text}成功`); + onRefresh(); } /** 更新状态 */ diff --git a/apps/web-ele/src/views/mall/product/spu/modules/detail.vue b/apps/web-ele/src/views/mall/product/spu/modules/detail.vue index 147f15667..57ca4f723 100644 --- a/apps/web-ele/src/views/mall/product/spu/modules/detail.vue +++ b/apps/web-ele/src/views/mall/product/spu/modules/detail.vue @@ -1,29 +1,31 @@ + + diff --git a/apps/web-ele/src/views/mall/trade/afterSale/modules/disagree-form.vue b/apps/web-ele/src/views/mall/trade/afterSale/modules/disagree-form.vue new file mode 100644 index 000000000..64e68e510 --- /dev/null +++ b/apps/web-ele/src/views/mall/trade/afterSale/modules/disagree-form.vue @@ -0,0 +1,131 @@ + + + diff --git a/apps/web-ele/src/views/mall/trade/brokerage/user/index.vue b/apps/web-ele/src/views/mall/trade/brokerage/user/index.vue index b9e510480..93f764f6d 100644 --- a/apps/web-ele/src/views/mall/trade/brokerage/user/index.vue +++ b/apps/web-ele/src/views/mall/trade/brokerage/user/index.vue @@ -6,7 +6,7 @@ import { useAccess } from '@vben/access'; import { DocAlert, Page, useVbenModal } from '@vben/common-ui'; import { $t } from '@vben/locales'; -import { ElLoading, ElMessage, ElSwitch } from 'element-plus'; +import { ElLoading, ElMessage, ElMessageBox, ElSwitch } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -68,17 +68,14 @@ function openCreateUserForm() { /** 清除上级推广人 */ async function handleClearBindUser(row: MallBrokerageUserApi.BrokerageUser) { - const loadingInstance = ElLoading.service({ - text: `正在清除"${row.nickname}"的上级推广人...`, - fullscreen: true, + await ElMessageBox.confirm(`确定清除"${row.nickname}"的上级推广人吗?`, { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await clearBindUser({ id: row.id as number }); - ElMessage.success('清除成功'); - onRefresh(); - } finally { - loadingInstance.close(); - } + await clearBindUser({ id: row.id as number }); + ElMessage.success('清除成功'); + onRefresh(); } /** 推广资格:开通/关闭 */ diff --git a/apps/web-ele/src/views/mall/trade/brokerage/withdraw/index.vue b/apps/web-ele/src/views/mall/trade/brokerage/withdraw/index.vue index d6cd5921f..6ae35d480 100644 --- a/apps/web-ele/src/views/mall/trade/brokerage/withdraw/index.vue +++ b/apps/web-ele/src/views/mall/trade/brokerage/withdraw/index.vue @@ -4,10 +4,10 @@ import type { MallBrokerageWithdrawApi } from '#/api/mall/trade/brokerage/withdr import { h } from 'vue'; -import { confirm, Page, prompt } from '@vben/common-ui'; +import { Page, prompt } from '@vben/common-ui'; import { formatDateTime } from '@vben/utils'; -import { ElInput, ElMessage } from 'element-plus'; +import { ElInput, ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -35,14 +35,14 @@ function onRefresh() { /** 审核通过 */ async function handleApprove(row: MallBrokerageWithdrawApi.BrokerageWithdraw) { - try { - await confirm('确定要审核通过吗?'); - await approveBrokerageWithdraw(row.id); - ElMessage.success($t('ui.actionMessage.operationSuccess')); - onRefresh(); - } catch (error) { - console.error('审核失败:', error); - } + await ElMessageBox.confirm('确定要审核通过吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + }); + await approveBrokerageWithdraw(row.id); + ElMessage.success($t('ui.actionMessage.operationSuccess')); + onRefresh(); } /** 审核驳回 */ @@ -73,14 +73,14 @@ function handleReject(row: MallBrokerageWithdrawApi.BrokerageWithdraw) { async function handleRetryTransfer( row: MallBrokerageWithdrawApi.BrokerageWithdraw, ) { - try { - await confirm('确定要重新转账吗?'); - await approveBrokerageWithdraw(row.id); - ElMessage.success($t('ui.actionMessage.operationSuccess')); - onRefresh(); - } catch (error) { - console.error('重新转账失败:', error); - } + await ElMessageBox.confirm('确定要重新转账吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + }); + await approveBrokerageWithdraw(row.id); + ElMessage.success($t('ui.actionMessage.operationSuccess')); + onRefresh(); } const [Grid, gridApi] = useVbenVxeGrid({ diff --git a/apps/web-ele/src/views/mall/trade/delivery/express/index.vue b/apps/web-ele/src/views/mall/trade/delivery/express/index.vue index 97ba38045..82dba2bd7 100644 --- a/apps/web-ele/src/views/mall/trade/delivery/express/index.vue +++ b/apps/web-ele/src/views/mall/trade/delivery/express/index.vue @@ -5,7 +5,7 @@ import type { MallDeliveryExpressApi } from '#/api/mall/trade/delivery/express'; import { Page, useVbenModal } from '@vben/common-ui'; import { downloadFileFromBlobPart } from '@vben/utils'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -46,16 +46,14 @@ function handleEdit(row: MallDeliveryExpressApi.DeliveryExpress) { /** 删除快递公司 */ async function handleDelete(row: MallDeliveryExpressApi.DeliveryExpress) { - const hideLoading = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), + await ElMessageBox.confirm($t('ui.actionMessage.deleting', [row.name]), { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteDeliveryExpress(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - hideLoading.close(); - } + await deleteDeliveryExpress(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } const [Grid, gridApi] = useVbenVxeGrid({ diff --git a/apps/web-ele/src/views/mall/trade/delivery/expressTemplate/index.vue b/apps/web-ele/src/views/mall/trade/delivery/expressTemplate/index.vue index 76751bfa2..230eb1129 100644 --- a/apps/web-ele/src/views/mall/trade/delivery/expressTemplate/index.vue +++ b/apps/web-ele/src/views/mall/trade/delivery/expressTemplate/index.vue @@ -4,7 +4,7 @@ import type { MallDeliveryExpressTemplateApi } from '#/api/mall/trade/delivery/e import { Page, useVbenModal } from '@vben/common-ui'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -40,16 +40,14 @@ function handleEdit(row: MallDeliveryExpressTemplateApi.ExpressTemplate) { async function handleDelete( row: MallDeliveryExpressTemplateApi.ExpressTemplate, ) { - const hideLoading = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), + await ElMessageBox.confirm($t('ui.actionMessage.deleting', [row.name]), { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteDeliveryExpressTemplate(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - hideLoading.close(); - } + await deleteDeliveryExpressTemplate(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } const [Grid, gridApi] = useVbenVxeGrid({ diff --git a/apps/web-ele/src/views/mall/trade/delivery/pickUpOrder/data.ts b/apps/web-ele/src/views/mall/trade/delivery/pickUpOrder/data.ts index a02080385..95c6d63b5 100644 --- a/apps/web-ele/src/views/mall/trade/delivery/pickUpOrder/data.ts +++ b/apps/web-ele/src/views/mall/trade/delivery/pickUpOrder/data.ts @@ -35,7 +35,7 @@ export function useGridFormSchema(): VbenFormSchema[] { component: 'ApiSelect', componentProps: { api: getSimpleDeliveryPickUpStoreList, - fieldNames: { + props: { label: 'name', value: 'id', }, diff --git a/apps/web-ele/src/views/mall/trade/delivery/pickUpStore/data.ts b/apps/web-ele/src/views/mall/trade/delivery/pickUpStore/data.ts index ac3e08287..2054a4e21 100644 --- a/apps/web-ele/src/views/mall/trade/delivery/pickUpStore/data.ts +++ b/apps/web-ele/src/views/mall/trade/delivery/pickUpStore/data.ts @@ -51,7 +51,7 @@ export function useFormSchema(): VbenFormSchema[] { component: 'ApiTreeSelect', componentProps: { api: () => getAreaTree(), - fieldNames: { label: 'name', value: 'id', children: 'children' }, + props: { label: 'name', value: 'id', children: 'children' }, }, }, { @@ -130,7 +130,7 @@ export function useBindFormSchema(): VbenFormSchema[] { rules: 'required', componentProps: { api: () => getSimpleUserList(), - fieldNames: { label: 'nickname', value: 'id' }, + props: { label: 'nickname', value: 'id' }, mode: 'tags', allowClear: true, }, diff --git a/apps/web-ele/src/views/mall/trade/delivery/pickUpStore/index.vue b/apps/web-ele/src/views/mall/trade/delivery/pickUpStore/index.vue index 769decd18..c74b3ec38 100644 --- a/apps/web-ele/src/views/mall/trade/delivery/pickUpStore/index.vue +++ b/apps/web-ele/src/views/mall/trade/delivery/pickUpStore/index.vue @@ -4,7 +4,7 @@ import type { MallDeliveryPickUpStoreApi } from '#/api/mall/trade/delivery/pickU import { Page, useVbenModal } from '@vben/common-ui'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -49,16 +49,14 @@ function handleBind(row: MallDeliveryPickUpStoreApi.PickUpStore) { /** 删除门店 */ async function handleDelete(row: MallDeliveryPickUpStoreApi.PickUpStore) { - const hideLoading = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), + await ElMessageBox.confirm('确定要删除该门店吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteDeliveryPickUpStore(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - hideLoading.close(); - } + await deleteDeliveryPickUpStore(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } const [Grid, gridApi] = useVbenVxeGrid({ diff --git a/apps/web-ele/src/views/mall/trade/order/modules/delevery-form.vue b/apps/web-ele/src/views/mall/trade/order/modules/delevery-form.vue index 92fd9fec4..64e68e510 100644 --- a/apps/web-ele/src/views/mall/trade/order/modules/delevery-form.vue +++ b/apps/web-ele/src/views/mall/trade/order/modules/delevery-form.vue @@ -54,7 +54,7 @@ const [Form, formApi] = useVbenForm({ component: 'ApiSelect', componentProps: { api: getSimpleDeliveryExpressList, - fieldNames: { + props: { label: 'name', value: 'id', }, diff --git a/apps/web-ele/src/views/mall/trade/order/modules/detail.vue b/apps/web-ele/src/views/mall/trade/order/modules/detail.vue new file mode 100644 index 000000000..4aa785f88 --- /dev/null +++ b/apps/web-ele/src/views/mall/trade/order/modules/detail.vue @@ -0,0 +1,561 @@ + + + diff --git a/apps/web-ele/src/views/mall/trade/order/modules/update-address-form.vue b/apps/web-ele/src/views/mall/trade/order/modules/update-address-form.vue new file mode 100644 index 000000000..62cacff68 --- /dev/null +++ b/apps/web-ele/src/views/mall/trade/order/modules/update-address-form.vue @@ -0,0 +1,133 @@ + + + diff --git a/apps/web-ele/src/views/mall/trade/order/modules/update-price-form.vue b/apps/web-ele/src/views/mall/trade/order/modules/update-price-form.vue new file mode 100644 index 000000000..1728944c5 --- /dev/null +++ b/apps/web-ele/src/views/mall/trade/order/modules/update-price-form.vue @@ -0,0 +1,134 @@ + + + diff --git a/apps/web-ele/src/views/mall/trade/order/modules/update-remark-form.vue b/apps/web-ele/src/views/mall/trade/order/modules/update-remark-form.vue new file mode 100644 index 000000000..b84767caf --- /dev/null +++ b/apps/web-ele/src/views/mall/trade/order/modules/update-remark-form.vue @@ -0,0 +1,94 @@ + + + diff --git a/apps/web-ele/src/views/member/group/index.vue b/apps/web-ele/src/views/member/group/index.vue index 6955a12e5..3ef08103a 100644 --- a/apps/web-ele/src/views/member/group/index.vue +++ b/apps/web-ele/src/views/member/group/index.vue @@ -4,7 +4,7 @@ import type { MemberGroupApi } from '#/api/member/group'; import { Page, useVbenModal } from '@vben/common-ui'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { deleteGroup, getGroupPage } from '#/api/member/group'; @@ -35,17 +35,14 @@ function handleEdit(row: MemberGroupApi.Group) { /** 删除分组 */ async function handleDelete(row: MemberGroupApi.Group) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该分组吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteGroup(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteGroup(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } const [Grid, gridApi] = useVbenVxeGrid({ diff --git a/apps/web-ele/src/views/member/level/index.vue b/apps/web-ele/src/views/member/level/index.vue index b45701cd5..463538c95 100644 --- a/apps/web-ele/src/views/member/level/index.vue +++ b/apps/web-ele/src/views/member/level/index.vue @@ -4,7 +4,7 @@ import type { MemberLevelApi } from '#/api/member/level'; import { Page, useVbenModal } from '@vben/common-ui'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { deleteLevel, getLevelList } from '#/api/member/level'; @@ -35,17 +35,14 @@ function handleEdit(row: MemberLevelApi.Level) { /** 删除等级 */ async function handleDelete(row: MemberLevelApi.Level) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该等级吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteLevel(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteLevel(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } const [Grid, gridApi] = useVbenVxeGrid({ diff --git a/apps/web-ele/src/views/member/tag/index.vue b/apps/web-ele/src/views/member/tag/index.vue index ac336af8c..3194c6d7d 100644 --- a/apps/web-ele/src/views/member/tag/index.vue +++ b/apps/web-ele/src/views/member/tag/index.vue @@ -4,7 +4,7 @@ import type { MemberTagApi } from '#/api/member/tag'; import { DocAlert, Page, useVbenModal } from '@vben/common-ui'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { deleteMemberTag, getMemberTagPage } from '#/api/member/tag'; @@ -35,17 +35,14 @@ function handleEdit(row: MemberTagApi.Tag) { /** 删除会员标签 */ async function handleDelete(row: MemberTagApi.Tag) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该会员标签吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteMemberTag(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteMemberTag(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } const [Grid, gridApi] = useVbenVxeGrid({ diff --git a/apps/web-ele/src/views/member/user/data.ts b/apps/web-ele/src/views/member/user/data.ts index 12c5353aa..ce9dcf9a7 100644 --- a/apps/web-ele/src/views/member/user/data.ts +++ b/apps/web-ele/src/views/member/user/data.ts @@ -86,7 +86,7 @@ export function useFormSchema(): VbenFormSchema[] { label: '所在地', componentProps: { api: () => getAreaTree(), - fieldNames: { label: 'name', value: 'id', children: 'children' }, + props: { label: 'name', value: 'id', children: 'children' }, }, }, { @@ -95,7 +95,7 @@ export function useFormSchema(): VbenFormSchema[] { label: '用户标签', componentProps: { api: () => getSimpleTagList(), - fieldNames: { label: 'name', value: 'id' }, + props: { label: 'name', value: 'id' }, mode: 'multiple', }, }, @@ -105,7 +105,7 @@ export function useFormSchema(): VbenFormSchema[] { label: '用户分组', componentProps: { api: () => getSimpleGroupList(), - fieldNames: { label: 'name', value: 'id' }, + props: { label: 'name', value: 'id' }, }, }, { @@ -151,7 +151,7 @@ export function useGridFormSchema(): VbenFormSchema[] { component: 'ApiSelect', componentProps: { api: () => getSimpleTagList(), - fieldNames: { label: 'name', value: 'id' }, + props: { label: 'name', value: 'id' }, mode: 'multiple', }, }, @@ -161,7 +161,7 @@ export function useGridFormSchema(): VbenFormSchema[] { component: 'ApiSelect', componentProps: { api: () => getSimpleLevelList(), - fieldNames: { label: 'name', value: 'id' }, + props: { label: 'name', value: 'id' }, }, }, { @@ -170,7 +170,7 @@ export function useGridFormSchema(): VbenFormSchema[] { component: 'ApiSelect', componentProps: { api: () => getSimpleGroupList(), - fieldNames: { label: 'name', value: 'id' }, + props: { label: 'name', value: 'id' }, }, }, ]; @@ -290,7 +290,7 @@ export function useLeavelFormSchema(): VbenFormSchema[] { component: 'ApiSelect', componentProps: { api: () => getSimpleLevelList(), - fieldNames: { label: 'name', value: 'id' }, + props: { label: 'name', value: 'id' }, }, }, { diff --git a/apps/web-ele/src/views/pay/app/index.vue b/apps/web-ele/src/views/pay/app/index.vue index 89bf83758..6659e226a 100644 --- a/apps/web-ele/src/views/pay/app/index.vue +++ b/apps/web-ele/src/views/pay/app/index.vue @@ -4,7 +4,7 @@ import type { PayAppApi } from '#/api/pay/app/index'; import { confirm, DocAlert, Page, useVbenModal } from '@vben/common-ui'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { changeAppStatus, deleteApp, getAppPage } from '#/api/pay/app/index'; @@ -39,17 +39,14 @@ function handleEdit(row: Required) { } async function handleDelete(row: Required) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该应用吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteApp(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteApp(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } /** 更新状态 */ diff --git a/apps/web-ele/src/views/pay/wallet/rechargePackage/index.vue b/apps/web-ele/src/views/pay/wallet/rechargePackage/index.vue index 8a1513f35..69b569670 100644 --- a/apps/web-ele/src/views/pay/wallet/rechargePackage/index.vue +++ b/apps/web-ele/src/views/pay/wallet/rechargePackage/index.vue @@ -3,7 +3,7 @@ import type { VxeTableGridOptions } from '#/adapter/vxe-table'; import { Page, useVbenModal } from '@vben/common-ui'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -37,17 +37,14 @@ function handleEdit(row: any) { /** 删除套餐 */ async function handleDelete(row: any) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该充值套餐吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deletePackage(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deletePackage(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } const [Grid, gridApi] = useVbenVxeGrid({ diff --git a/apps/web-ele/src/views/system/dept/index.vue b/apps/web-ele/src/views/system/dept/index.vue index abaaf0c6d..78f08840a 100644 --- a/apps/web-ele/src/views/system/dept/index.vue +++ b/apps/web-ele/src/views/system/dept/index.vue @@ -11,7 +11,7 @@ import { onMounted, ref } from 'vue'; import { Page, useVbenModal } from '@vben/common-ui'; import { Plus } from '@vben/icons'; -import { ElButton, ElLoading, ElMessage } from 'element-plus'; +import { ElButton, ElMessage, ElMessageBox } from 'element-plus'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { deleteDept, getDeptList } from '#/api/system/dept'; @@ -62,19 +62,14 @@ function onEdit(row: SystemDeptApi.Dept) { /** 删除部门 */ async function onDelete(row: SystemDeptApi.Dept) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该部门吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteDept(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } catch { - // 异常处理 - } finally { - loadingInstance.close(); - } + await deleteDept(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } /** 表格操作按钮的回调函数 */ diff --git a/apps/web-ele/src/views/system/dict/modules/data-grid.vue b/apps/web-ele/src/views/system/dict/modules/data-grid.vue index a28ccc015..6a9c9e1e1 100644 --- a/apps/web-ele/src/views/system/dict/modules/data-grid.vue +++ b/apps/web-ele/src/views/system/dict/modules/data-grid.vue @@ -10,7 +10,7 @@ import { ref, watch } from 'vue'; import { useVbenModal } from '@vben/common-ui'; import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -59,32 +59,26 @@ function onEdit(row: any) { /** 删除字典数据 */ async function onDelete(row: any) { - const loadingInstance = ElLoading.service({ - text: $t('common.processing'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该字典数据吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteDictData(row.id); - ElMessage.success($t('common.operationSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteDictData(row.id); + ElMessage.success($t('common.operationSuccess')); + onRefresh(); } /** 批量删除字典数据 */ async function onDeleteBatch() { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该字典数据吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteDictDataList(checkedIds.value); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteDictDataList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-ele/src/views/system/dict/modules/type-grid.vue b/apps/web-ele/src/views/system/dict/modules/type-grid.vue index 675b665a9..1c6f8ea22 100644 --- a/apps/web-ele/src/views/system/dict/modules/type-grid.vue +++ b/apps/web-ele/src/views/system/dict/modules/type-grid.vue @@ -10,7 +10,7 @@ import { ref } from 'vue'; import { useVbenModal } from '@vben/common-ui'; import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -54,32 +54,26 @@ function onEdit(row: any) { /** 删除字典类型 */ async function onDelete(row: SystemDictTypeApi.DictType) { - const loadingInstance = ElLoading.service({ - text: $t('common.processing'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该字典类型吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteDictType(row.id as number); - ElMessage.success($t('common.operationSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteDictType(row.id as number); + ElMessage.success($t('common.operationSuccess')); + onRefresh(); } /** 批量删除字典类型 */ async function onDeleteBatch() { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该字典类型吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteDictTypeList(checkedIds.value); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteDictTypeList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-ele/src/views/system/mail/account/index.vue b/apps/web-ele/src/views/system/mail/account/index.vue index fdd342bbd..10a7dacc2 100644 --- a/apps/web-ele/src/views/system/mail/account/index.vue +++ b/apps/web-ele/src/views/system/mail/account/index.vue @@ -10,7 +10,7 @@ import { ref } from 'vue'; import { DocAlert, Page, useVbenModal } from '@vben/common-ui'; import { isEmpty } from '@vben/utils'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -45,32 +45,26 @@ function onEdit(row: SystemMailAccountApi.MailAccount) { /** 删除邮箱账号 */ async function onDelete(row: SystemMailAccountApi.MailAccount) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.mail]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该邮箱账号吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteMailAccount(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.mail])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteMailAccount(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.mail])); + onRefresh(); } /** 批量删除邮箱账号 */ async function onDeleteBatch() { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该邮箱账号吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteMailAccountList(checkedIds.value); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteMailAccountList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-ele/src/views/system/mail/template/index.vue b/apps/web-ele/src/views/system/mail/template/index.vue index 3e2bedcac..5ebc854c8 100644 --- a/apps/web-ele/src/views/system/mail/template/index.vue +++ b/apps/web-ele/src/views/system/mail/template/index.vue @@ -11,7 +11,7 @@ import { onMounted, ref } from 'vue'; import { DocAlert, Page, useVbenModal } from '@vben/common-ui'; import { isEmpty } from '@vben/utils'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { getSimpleMailAccountList } from '#/api/system/mail/account'; @@ -65,32 +65,26 @@ function onSend(row: SystemMailTemplateApi.MailTemplate) { /** 删除邮件模板 */ async function onDelete(row: SystemMailTemplateApi.MailTemplate) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该邮件模板吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteMailTemplate(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteMailTemplate(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } /** 批量删除邮件模板 */ async function onDeleteBatch() { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该邮件模板吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteMailTemplateList(checkedIds.value); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteMailTemplateList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-ele/src/views/system/menu/index.vue b/apps/web-ele/src/views/system/menu/index.vue index f8f2959e0..125484880 100644 --- a/apps/web-ele/src/views/system/menu/index.vue +++ b/apps/web-ele/src/views/system/menu/index.vue @@ -10,7 +10,7 @@ import { ref } from 'vue'; import { DocAlert, Page, useVbenModal } from '@vben/common-ui'; import { IconifyIcon, Plus } from '@vben/icons'; -import { ElButton, ElLoading, ElMessage } from 'element-plus'; +import { ElButton, ElMessage, ElMessageBox } from 'element-plus'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { deleteMenu, getMenuList } from '#/api/system/menu'; @@ -47,19 +47,14 @@ function onEdit(row: SystemMenuApi.Menu) { /** 删除菜单 */ async function onDelete(row: SystemMenuApi.Menu) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该菜单吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteMenu(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } catch { - // 异常处理 - } finally { - loadingInstance.close(); - } + await deleteMenu(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } /** 表格操作按钮的回调函数 */ diff --git a/apps/web-ele/src/views/system/notice/index.vue b/apps/web-ele/src/views/system/notice/index.vue index 4970ac43c..85d225cfa 100644 --- a/apps/web-ele/src/views/system/notice/index.vue +++ b/apps/web-ele/src/views/system/notice/index.vue @@ -10,7 +10,7 @@ import { ref } from 'vue'; import { Page, useVbenModal } from '@vben/common-ui'; import { isEmpty } from '@vben/utils'; -import { ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -46,36 +46,26 @@ function onEdit(row: SystemNoticeApi.Notice) { /** 删除公告 */ async function onDelete(row: SystemNoticeApi.Notice) { - const loadingInstance = ElMessage({ - message: $t('ui.actionMessage.deleting', [row.title]), - type: 'info', - duration: 0, + await ElMessageBox.confirm('确定要删除该公告吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteNotice(row.id as number); - loadingInstance.close(); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.title])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteNotice(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.title])); + onRefresh(); } /** 批量删除公告 */ async function onDeleteBatch() { - const loadingInstance = ElMessage({ - message: $t('ui.actionMessage.deleting'), - type: 'info', - duration: 0, + await ElMessageBox.confirm('确定要删除该公告吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteNoticeList(checkedIds.value); - loadingInstance.close(); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteNoticeList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-ele/src/views/system/oauth2/client/index.vue b/apps/web-ele/src/views/system/oauth2/client/index.vue index 895c4c7a2..c0faaaffc 100644 --- a/apps/web-ele/src/views/system/oauth2/client/index.vue +++ b/apps/web-ele/src/views/system/oauth2/client/index.vue @@ -10,7 +10,7 @@ import { ref } from 'vue'; import { DocAlert, Page, useVbenModal } from '@vben/common-ui'; import { isEmpty } from '@vben/utils'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -45,32 +45,26 @@ function onEdit(row: SystemOAuth2ClientApi.OAuth2Client) { /** 删除 OAuth2 客户端 */ async function onDelete(row: SystemOAuth2ClientApi.OAuth2Client) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该 OAuth2 客户端吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteOAuth2Client(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteOAuth2Client(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } /** 批量删除 OAuth2 客户端 */ async function onDeleteBatch() { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该 OAuth2 客户端吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteOAuth2ClientList(checkedIds.value); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteOAuth2ClientList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-ele/src/views/system/oauth2/token/index.vue b/apps/web-ele/src/views/system/oauth2/token/index.vue index 88b0311a0..7a83b5323 100644 --- a/apps/web-ele/src/views/system/oauth2/token/index.vue +++ b/apps/web-ele/src/views/system/oauth2/token/index.vue @@ -7,7 +7,7 @@ import type { SystemOAuth2TokenApi } from '#/api/system/oauth2/token'; import { DocAlert, Page } from '@vben/common-ui'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -25,19 +25,14 @@ function onRefresh() { /** 删除 OAuth2 令牌 */ async function onDelete(row: SystemOAuth2TokenApi.OAuth2Token) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', ['令牌']), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该令牌吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteOAuth2Token(row.accessToken); - ElMessage.success($t('ui.actionMessage.operationSuccess')); - onRefresh(); - } catch { - // 异常处理 - } finally { - loadingInstance.close(); - } + await deleteOAuth2Token(row.accessToken); + ElMessage.success($t('ui.actionMessage.operationSuccess')); + onRefresh(); } /** 表格操作按钮的回调函数 */ diff --git a/apps/web-ele/src/views/system/operatelog/data.ts b/apps/web-ele/src/views/system/operatelog/data.ts index e7c742473..d23d210fe 100644 --- a/apps/web-ele/src/views/system/operatelog/data.ts +++ b/apps/web-ele/src/views/system/operatelog/data.ts @@ -18,7 +18,7 @@ export function useGridFormSchema(): VbenFormSchema[] { component: 'ApiSelect', componentProps: { api: getSimpleUserList, - fieldNames: { + props: { label: 'nickname', value: 'id', }, diff --git a/apps/web-ele/src/views/system/post/index.vue b/apps/web-ele/src/views/system/post/index.vue index 37cbebaf5..85f80230a 100644 --- a/apps/web-ele/src/views/system/post/index.vue +++ b/apps/web-ele/src/views/system/post/index.vue @@ -10,7 +10,7 @@ import { ref } from 'vue'; import { Page, useVbenModal } from '@vben/common-ui'; import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -52,32 +52,26 @@ function onEdit(row: SystemPostApi.Post) { /** 删除岗位 */ async function onDelete(row: SystemPostApi.Post) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该岗位吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deletePost(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deletePost(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } /** 批量删除岗位 */ async function onDeleteBatch() { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该岗位吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deletePostList(checkedIds.value); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deletePostList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-ele/src/views/system/role/index.vue b/apps/web-ele/src/views/system/role/index.vue index c1d23cb2e..c5565bfa1 100644 --- a/apps/web-ele/src/views/system/role/index.vue +++ b/apps/web-ele/src/views/system/role/index.vue @@ -11,7 +11,7 @@ import { DocAlert, Page, useVbenModal } from '@vben/common-ui'; import { Download, Plus } from '@vben/icons'; import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; -import { ElButton, ElLoading, ElMessage } from 'element-plus'; +import { ElButton, ElMessage, ElMessageBox } from 'element-plus'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -66,32 +66,26 @@ function onCreate() { /** 删除角色 */ async function onDelete(row: SystemRoleApi.Role) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该角色吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteRole(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteRole(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } /** 批量删除角色 */ async function onDeleteBatch() { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该角色吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteRoleList(checkedIds.value); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteRoleList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-ele/src/views/system/sms/channel/index.vue b/apps/web-ele/src/views/system/sms/channel/index.vue index e01b2c7ad..d7e68fe9a 100644 --- a/apps/web-ele/src/views/system/sms/channel/index.vue +++ b/apps/web-ele/src/views/system/sms/channel/index.vue @@ -10,7 +10,7 @@ import { ref } from 'vue'; import { DocAlert, Page, useVbenModal } from '@vben/common-ui'; import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -52,32 +52,26 @@ function onEdit(row: SystemSmsChannelApi.SmsChannel) { /** 删除短信渠道 */ async function onDelete(row: SystemSmsChannelApi.SmsChannel) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.signature]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该短信渠道吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteSmsChannel(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.signature])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteSmsChannel(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.signature])); + onRefresh(); } /** 批量删除短信渠道 */ async function onDeleteBatch() { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该短信渠道吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteSmsChannelList(checkedIds.value); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteSmsChannelList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-ele/src/views/system/sms/template/index.vue b/apps/web-ele/src/views/system/sms/template/index.vue index 1e35e38f1..bfb40d271 100644 --- a/apps/web-ele/src/views/system/sms/template/index.vue +++ b/apps/web-ele/src/views/system/sms/template/index.vue @@ -10,7 +10,7 @@ import { ref } from 'vue'; import { DocAlert, Page, useVbenModal } from '@vben/common-ui'; import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -63,32 +63,26 @@ function onSend(row: SystemSmsTemplateApi.SmsTemplate) { /** 删除短信模板 */ async function onDelete(row: SystemSmsTemplateApi.SmsTemplate) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该短信模板吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteSmsTemplate(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteSmsTemplate(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } /** 批量删除短信模板 */ async function onDeleteBatch() { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该短信模板吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteSmsTemplateList(checkedIds.value); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteSmsTemplateList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-ele/src/views/system/social/client/index.vue b/apps/web-ele/src/views/system/social/client/index.vue index 46245f58e..cf6b73d78 100644 --- a/apps/web-ele/src/views/system/social/client/index.vue +++ b/apps/web-ele/src/views/system/social/client/index.vue @@ -10,7 +10,7 @@ import { ref } from 'vue'; import { DocAlert, Page, useVbenModal } from '@vben/common-ui'; import { isEmpty } from '@vben/utils'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -45,32 +45,26 @@ function onEdit(row: SystemSocialClientApi.SocialClient) { /** 删除社交客户端 */ async function onDelete(row: SystemSocialClientApi.SocialClient) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.name]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该社交客户端吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteSocialClient(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteSocialClient(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } /** 批量删除社交客户端 */ async function onDeleteBatch() { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该社交客户端吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteSocialClientList(checkedIds.value); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteSocialClientList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-ele/src/views/system/tenant/index.vue b/apps/web-ele/src/views/system/tenant/index.vue index f692af9fc..7bb5e2187 100644 --- a/apps/web-ele/src/views/system/tenant/index.vue +++ b/apps/web-ele/src/views/system/tenant/index.vue @@ -11,7 +11,7 @@ import { onMounted, ref } from 'vue'; import { DocAlert, Page, useVbenModal } from '@vben/common-ui'; import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -64,34 +64,26 @@ function onEdit(row: SystemTenantApi.Tenant) { /** 删除租户 */ async function onDelete(row: SystemTenantApi.Tenant) { - const loading = ElLoading.service({ - lock: true, - text: $t('ui.actionMessage.deleting', [row.name]), - background: 'rgba(0, 0, 0, 0.7)', + await ElMessageBox.confirm('确定要删除该租户吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteTenant(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loading.close(); - } + await deleteTenant(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } /** 批量删除租户 */ async function onDeleteBatch() { - const loading = ElLoading.service({ - lock: true, - text: $t('ui.actionMessage.deleting'), - background: 'rgba(0, 0, 0, 0.7)', + await ElMessageBox.confirm('确定要删除该租户吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteTenantList(checkedIds.value); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loading.close(); - } + await deleteTenantList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-ele/src/views/system/tenantPackage/index.vue b/apps/web-ele/src/views/system/tenantPackage/index.vue index 246cd5cf7..a791fc0f7 100644 --- a/apps/web-ele/src/views/system/tenantPackage/index.vue +++ b/apps/web-ele/src/views/system/tenantPackage/index.vue @@ -10,7 +10,7 @@ import { ref } from 'vue'; import { DocAlert, Page, useVbenModal } from '@vben/common-ui'; import { isEmpty } from '@vben/utils'; -import { ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -45,36 +45,26 @@ function onEdit(row: SystemTenantPackageApi.TenantPackage) { /** 删除租户套餐 */ async function onDelete(row: SystemTenantPackageApi.TenantPackage) { - const loadingInstance = ElMessage({ - message: $t('ui.actionMessage.deleting', [row.name]), - type: 'info', - duration: 0, + await ElMessageBox.confirm('确定要删除该租户套餐吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteTenantPackage(row.id as number); - loadingInstance.close(); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteTenantPackage(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); + onRefresh(); } /** 批量删除租户套餐 */ async function onDeleteBatch() { - const loadingInstance = ElMessage({ - message: $t('ui.actionMessage.deleting'), - type: 'info', - duration: 0, + await ElMessageBox.confirm('确定要删除该租户套餐吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteTenantPackageList(checkedIds.value); - loadingInstance.close(); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteTenantPackageList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-ele/src/views/system/user/index.vue b/apps/web-ele/src/views/system/user/index.vue index 13ec5428c..72e3b44ab 100644 --- a/apps/web-ele/src/views/system/user/index.vue +++ b/apps/web-ele/src/views/system/user/index.vue @@ -8,7 +8,7 @@ import { ref } from 'vue'; import { confirm, DocAlert, Page, useVbenModal } from '@vben/common-ui'; import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; -import { ElLoading, ElMessage } from 'element-plus'; +import { ElMessage, ElMessageBox } from 'element-plus'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -83,32 +83,26 @@ function onEdit(row: SystemUserApi.User) { /** 删除用户 */ async function onDelete(row: SystemUserApi.User) { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting', [row.username]), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该用户吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteUser(row.id as number); - ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.username])); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteUser(row.id as number); + ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.username])); + onRefresh(); } /** 批量删除用户 */ async function onDeleteBatch() { - const loadingInstance = ElLoading.service({ - text: $t('ui.actionMessage.deleting'), - fullscreen: true, + await ElMessageBox.confirm('确定要删除该用户吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', }); - try { - await deleteUserList(checkedIds.value); - ElMessage.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - loadingInstance.close(); - } + await deleteUserList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); } const checkedIds = ref([]);