diff --git a/.vscode/settings.json b/.vscode/settings.json
index 4a9c1448..9a59ecda 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,5 +1,8 @@
{
"eslint.debug": false,
"eslint.format.enable": true,
- "typescript.tsc.autoDetect": "watch"
+ "typescript.tsc.autoDetect": "watch",
+ "git.scanRepositories": [
+ "./packages/pro"
+ ]
}
\ No newline at end of file
diff --git a/packages/ui/certd-client/src/views/certd/monitor/site/api.ts b/packages/ui/certd-client/src/views/certd/monitor/site/api.ts
index 4e85d98f..c1ebe1bd 100644
--- a/packages/ui/certd-client/src/views/certd/monitor/site/api.ts
+++ b/packages/ui/certd-client/src/views/certd/monitor/site/api.ts
@@ -35,6 +35,14 @@ export const siteInfoApi = {
});
},
+ async BatchDelObj(ids: number[]) {
+ return await request({
+ url: apiPrefix + "/batchDelete",
+ method: "post",
+ data: { ids },
+ });
+ },
+
async GetObj(id: number) {
return await request({
url: apiPrefix + "/info",
diff --git a/packages/ui/certd-client/src/views/certd/monitor/site/crud.tsx b/packages/ui/certd-client/src/views/certd/monitor/site/crud.tsx
index 37e5827d..1ff7dbcd 100644
--- a/packages/ui/certd-client/src/views/certd/monitor/site/crud.tsx
+++ b/packages/ui/certd-client/src/views/certd/monitor/site/crud.tsx
@@ -4,7 +4,7 @@ import { AddReq, ColumnCompositionProps, compute, CreateCrudOptionsProps, Create
import { siteInfoApi } from "./api";
import * as settingApi from "./setting/api";
import dayjs from "dayjs";
-import { Modal, notification } from "ant-design-vue";
+import { message, Modal, notification } from "ant-design-vue";
import { useSettingStore } from "/@/store/settings";
import { mySuiteApi } from "/@/views/certd/suite/mine/api";
import { mitter } from "/@/utils/util.mitt";
@@ -57,6 +57,27 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
}
loadSetting();
+ const selectedRowKeys = ref([]);
+
+ const handleBatchDelete = () => {
+ if (selectedRowKeys.value?.length > 0) {
+ Modal.confirm({
+ title: "确认",
+ content: `确定要批量删除这${selectedRowKeys.value.length}条记录吗`,
+ async onOk() {
+ await api.BatchDelObj(selectedRowKeys.value);
+ message.info("删除成功");
+ crudExpose.doRefresh();
+ selectedRowKeys.value = [];
+ },
+ });
+ } else {
+ message.error("请先勾选记录");
+ }
+ };
+
+ context.handleBatchDelete = handleBatchDelete;
+
function checkAll() {
Modal.confirm({
title: t("certd.monitor.confirmTitle"), // "确认"
@@ -79,6 +100,21 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
editRequest,
delRequest,
},
+ settings: {
+ plugins: {
+ //这里使用行选择插件,生成行选择crudOptions配置,最终会与crudOptions合并
+ rowSelection: {
+ enabled: true,
+ props: {
+ multiple: true,
+ crossPage: false,
+ selectedRowKeys: () => {
+ return selectedRowKeys;
+ },
+ },
+ },
+ },
+ },
form: {
labelCol: {
//固定label宽度
diff --git a/packages/ui/certd-client/src/views/certd/monitor/site/index.vue b/packages/ui/certd-client/src/views/certd/monitor/site/index.vue
index 436620c4..8558e25d 100644
--- a/packages/ui/certd-client/src/views/certd/monitor/site/index.vue
+++ b/packages/ui/certd-client/src/views/certd/monitor/site/index.vue
@@ -15,7 +15,13 @@
-
+
+
+
+
+
+
+
@@ -26,12 +32,14 @@ import createCrudOptions from "./crud";
import { siteInfoApi } from "./api";
import { Modal, notification } from "ant-design-vue";
import { useI18n } from "/src/locales";
-
+import * as api from "./api";
const { t } = useI18n();
defineOptions({
name: "SiteCertMonitor",
});
-const { crudBinding, crudRef, crudExpose } = useFs({ createCrudOptions, context: {} });
+const { crudBinding, crudRef, crudExpose, context } = useFs({ createCrudOptions });
+
+const handleBatchDelete = context.handleBatchDelete;
// 页面打开后获取列表数据
onMounted(() => {
diff --git a/packages/ui/certd-server/src/controller/user/monitor/site-info-controller.ts b/packages/ui/certd-server/src/controller/user/monitor/site-info-controller.ts
index d2e2e73a..390a47c0 100644
--- a/packages/ui/certd-server/src/controller/user/monitor/site-info-controller.ts
+++ b/packages/ui/certd-server/src/controller/user/monitor/site-info-controller.ts
@@ -92,6 +92,14 @@ export class SiteInfoController extends CrudController {
return await super.delete(id);
}
+
+ @Post('/batchDelete', { summary: Constants.per.authOnly })
+ async batchDelete(@Body(ALL) body: any) {
+ const userId = this.getUserId();
+ await this.service.batchDelete(body.ids,userId);
+ return this.ok();
+ }
+
@Post('/check', { summary: Constants.per.authOnly })
async check(@Body('id') id: number) {
await this.service.checkUserId(id, this.getUserId());