This commit is contained in:
xiaojunnuo
2024-12-04 12:36:17 +08:00
parent 6aa487269c
commit 2aefca3813
12 changed files with 92 additions and 27 deletions

View File

@@ -1,6 +1,6 @@
import { request } from "/src/api/service";
export function createApi() {
export function createNotificationApi() {
const apiPrefix = "/pi/notification";
return {
async GetList(query: any) {
@@ -94,6 +94,13 @@ export function createApi() {
method: "post",
params: { type }
});
},
async GetOrCreateDefault(param: { email: any }) {
return await request({
url: apiPrefix + "/getOrCreateDefault",
method: "post",
data: param
});
}
};
}

View File

@@ -1,8 +1,8 @@
import { ref } from "vue";
import { getCommonColumnDefine } from "./common";
import { AddReq, CreateCrudOptionsProps, CreateCrudOptionsRet, DelReq, EditReq, UserPageQuery, UserPageRes } from "@fast-crud/fast-crud";
import { createApi } from "/@/views/certd/notification/api";
const api = createApi();
import { createNotificationApi } from "/@/views/certd/notification/api";
const api = createNotificationApi();
export default function ({ crudExpose, context }: CreateCrudOptionsProps): CreateCrudOptionsRet {
const pageRequest = async (query: UserPageQuery): Promise<UserPageRes> => {
return await api.GetList(query);

View File

@@ -14,12 +14,12 @@
import { defineComponent, onActivated, onMounted } from "vue";
import { useFs } from "@fast-crud/fast-crud";
import createCrudOptions from "./crud";
import { createApi } from "./api";
import { createNotificationApi } from "./api";
export default defineComponent({
name: "NotificationManager",
setup() {
const api = createApi();
const api = createNotificationApi();
const { crudBinding, crudRef, crudExpose } = useFs({ createCrudOptions, context: { api } });
// 页面打开后获取列表数据

View File

@@ -41,7 +41,7 @@
<script lang="tsx" setup>
import { inject, ref, Ref, watch } from "vue";
import { createApi } from "../api";
import { createNotificationApi } from "../api";
import { message } from "ant-design-vue";
import { dict } from "@fast-crud/fast-crud";
import createCrudOptions from "../crud";
@@ -64,7 +64,7 @@ const onChange = async (value: number) => {
const emit = defineEmits(["update:modelValue", "selectedChange", "change"]);
const api = createApi();
const api = createNotificationApi();
// const types = ref({});
// async function loadNotificationTypes() {

View File

@@ -8,7 +8,7 @@
import { defineComponent, onMounted, watch } from "vue";
import { useFs } from "@fast-crud/fast-crud";
import createCrudOptions from "./crud";
import { createApi } from "../../api";
import { createNotificationApi } from "../../api";
export default defineComponent({
name: "CertNotificationModal",
@@ -17,7 +17,7 @@ export default defineComponent({
},
emits: ["update:modelValue"],
setup(props, ctx) {
const api = createApi();
const api = createNotificationApi();
const context: any = { props, ctx, api };
const { crudBinding, crudRef, crudExpose } = useFs({ createCrudOptions, context });
onMounted(() => {

View File

@@ -1,16 +1,15 @@
import { compute, CreateCrudOptionsRet, dict } from "@fast-crud/fast-crud";
import { PluginGroup } from "@certd/pipeline";
import { useReference } from "/@/use/use-refrence";
import _, { merge } from "lodash-es";
import { useUserStore } from "/@/store/modules/user";
import { useSettingStore } from "/@/store/modules/settings";
import * as api from "../api.plugin";
import NotificationSelector from "/@/views/certd/notification/notification-selector/index.vue";
export default function (certPluginGroup: PluginGroup, formWrapperRef: any): CreateCrudOptionsRet {
export default function (certPlugins: any[], formWrapperRef: any): CreateCrudOptionsRet {
const inputs: any = {};
const userStore = useUserStore();
const settingStore = useSettingStore();
for (const plugin of certPluginGroup.plugins) {
for (const plugin of certPlugins) {
for (const inputKey in plugin.input) {
if (inputs[inputKey]) {
inputs[inputKey].form.show = true;

View File

@@ -9,6 +9,8 @@ import { ref } from "vue";
import * as _ from "lodash-es";
import * as api from "../api.plugin";
import { PluginGroup, PluginGroups } from "/@/views/certd/pipeline/pipeline/type";
import { GetPluginDefine } from "../api.plugin";
import { createNotificationApi } from "/@/views/certd/notification/api";
export default {
name: "PiCertdForm",
setup(props: any, ctx: any) {
@@ -19,17 +21,28 @@ export default {
const pluginGroups: { [key: string]: PluginGroup } = await api.GetGroups({});
const certPluginGroup = pluginGroups.cert;
const certPlugins = [];
for (const plugin of certPluginGroup.plugins) {
const detail: any = await api.GetPluginDefine(plugin.name);
certPlugins.push(detail);
}
// 自定义表单配置
const { buildFormOptions } = useColumns();
//使用crudOptions结构来构建自定义表单配置
let { crudOptions } = createCrudOptions(certPluginGroup, formWrapperRef);
let { crudOptions } = createCrudOptions(certPlugins, formWrapperRef);
const formOptions = buildFormOptions(
_.merge(crudOptions, {
form: {
doSubmit({ form }: any) {
async doSubmit({ form }: any) {
// 创建certd 的pipeline
doSubmitRef.value({ form });
await doSubmitRef.value({ form });
if (form.email) {
const notificationApi = createNotificationApi();
await notificationApi.GetOrCreateDefault({ email: form.email });
}
}
}
}) as any

View File

@@ -14,7 +14,7 @@ import * as _ from "lodash-es";
import { useModal } from "/@/use/use-modal";
import CertView from "./cert-view.vue";
import { eachStages } from "./utils";
import { createApi as createNotificationApi } from "../notification/api";
import { createNotificationApi as createNotificationApi } from "../notification/api";
export default function ({ crudExpose, context: { certdFormRef, groupDictRef, selectedRowKeys } }: CreateCrudOptionsProps): CreateCrudOptionsRet {
const router = useRouter();
const { t } = useI18n();
@@ -173,9 +173,9 @@ export default function ({ crudExpose, context: { certdFormRef, groupDictRef, se
const downloadCert = async (row: any) => {
const files = await api.GetFiles(row.id);
model.success({
title: "文件下载",
title: "点击链接下载",
maskClosable: true,
okText: "↑↑↑ 点击上面链接下载",
okText: "关闭",
content: () => {
const children = [];
for (const file of files) {
@@ -191,7 +191,16 @@ export default function ({ crudExpose, context: { certdFormRef, groupDictRef, se
);
}
return <div class={"mt-3"}>{children}</div>;
if (children.length === 0) {
return <div></div>;
}
return (
<div class={"mt-3"}>
<h3></h3>
<div> {children}</div>
</div>
);
}
});
};