diff --git a/packages/core/pipeline/src/core/executor.ts b/packages/core/pipeline/src/core/executor.ts
index 09878cae..d6b6c42f 100644
--- a/packages/core/pipeline/src/core/executor.ts
+++ b/packages/core/pipeline/src/core/executor.ts
@@ -102,6 +102,7 @@ export class Executor {
await this.notification("success");
}
}
+ return result;
} catch (e: any) {
await this.notification("error", e);
this.logger.error("pipeline 执行失败", e);
diff --git a/packages/ui/certd-client/src/views/certd/suite/buy.vue b/packages/ui/certd-client/src/views/certd/suite/buy.vue
index 1188c790..b66b6862 100644
--- a/packages/ui/certd-client/src/views/certd/suite/buy.vue
+++ b/packages/ui/certd-client/src/views/certd/suite/buy.vue
@@ -8,14 +8,21 @@
-
套餐说明:多个套餐内的数量可以叠加
+
说明:① 同一时间只有最新购买的一个套餐生效;② 可以购买多个加量包,加量包立即生效;③ 套餐和加量包内的数量可以叠加
+
套餐
-
+
+
+
+
+ 加量包
+
+
@@ -31,10 +38,13 @@ import * as api from "./api";
import ProductInfo from "/@/views/certd/suite/product-info.vue";
import OrderModal from "/@/views/certd/suite/order-modal.vue";
-const products = ref([]);
+const suites = ref([]);
+const addons = ref([]);
async function loadProducts() {
- products.value = await api.ProductList();
+ const list = await api.ProductList();
+ suites.value = list.filter((x: any) => x.type === "suite");
+ addons.value = list.filter((x: any) => x.type === "addone");
}
loadProducts();
diff --git a/packages/ui/certd-client/src/views/certd/suite/mine/api.ts b/packages/ui/certd-client/src/views/certd/suite/mine/api.ts
index bb592f14..16afd46a 100644
--- a/packages/ui/certd-client/src/views/certd/suite/mine/api.ts
+++ b/packages/ui/certd-client/src/views/certd/suite/mine/api.ts
@@ -1,54 +1,71 @@
import { request } from "/src/api/service";
-export function createApi() {
- const apiPrefix = "/mine/suite";
- return {
- async GetList(query: any) {
- return await request({
- url: apiPrefix + "/page",
- method: "post",
- data: query
- });
- },
+const apiPrefix = "/mine/suite";
- async AddObj(obj: any) {
- return await request({
- url: apiPrefix + "/add",
- method: "post",
- data: obj
- });
- },
+export type SuiteValue = {
+ max: number;
+ used: number;
+};
+export type SuiteDetail = {
+ enabled?: boolean;
+ suites?: any[];
+ expiresTime?: number;
+ pipelineCount?: SuiteValue;
+ domainCount?: SuiteValue;
+ deployCount?: SuiteValue;
+ monitorCount?: SuiteValue;
+};
- async UpdateObj(obj: any) {
- return await request({
- url: apiPrefix + "/update",
- method: "post",
- data: obj
- });
- },
+export default {
+ async GetList(query: any) {
+ return await request({
+ url: apiPrefix + "/page",
+ method: "post",
+ data: query
+ });
+ },
- async DelObj(id: number) {
- return await request({
- url: apiPrefix + "/delete",
- method: "post",
- params: { id }
- });
- },
+ async AddObj(obj: any) {
+ return await request({
+ url: apiPrefix + "/add",
+ method: "post",
+ data: obj
+ });
+ },
- async GetObj(id: number) {
- return await request({
- url: apiPrefix + "/info",
- method: "post",
- params: { id }
- });
- },
- async ListAll() {
- return await request({
- url: apiPrefix + "/all",
- method: "post"
- });
- }
- };
-}
+ async UpdateObj(obj: any) {
+ return await request({
+ url: apiPrefix + "/update",
+ method: "post",
+ data: obj
+ });
+ },
-export const pipelineGroupApi = createApi();
+ async DelObj(id: number) {
+ return await request({
+ url: apiPrefix + "/delete",
+ method: "post",
+ params: { id }
+ });
+ },
+
+ async GetObj(id: number) {
+ return await request({
+ url: apiPrefix + "/info",
+ method: "post",
+ params: { id }
+ });
+ },
+ async ListAll() {
+ return await request({
+ url: apiPrefix + "/all",
+ method: "post"
+ });
+ },
+ async SuiteDetailGet() {
+ return await request({
+ url: `${apiPrefix}/detail`,
+ method: "post"
+ });
+ }
+};
diff --git a/packages/ui/certd-client/src/views/certd/suite/mine/crud.tsx b/packages/ui/certd-client/src/views/certd/suite/mine/crud.tsx
index 1d4e1951..5c9ed7cf 100644
--- a/packages/ui/certd-client/src/views/certd/suite/mine/crud.tsx
+++ b/packages/ui/certd-client/src/views/certd/suite/mine/crud.tsx
@@ -1,5 +1,5 @@
import { AddReq, CreateCrudOptionsProps, CreateCrudOptionsRet, DelReq, dict, EditReq, UserPageQuery, UserPageRes } from "@fast-crud/fast-crud";
-import { pipelineGroupApi } from "./api";
+import api from "./api";
import { useRouter } from "vue-router";
import SuiteValueEdit from "/@/views/sys/suite/product/suite-value-edit.vue";
import SuiteValue from "/@/views/sys/suite/product/suite-value.vue";
@@ -7,7 +7,6 @@ import DurationValue from "/@/views/sys/suite/product/duration-value.vue";
import dayjs from "dayjs";
export default function ({ crudExpose, context }: CreateCrudOptionsProps): CreateCrudOptionsRet {
- const api = pipelineGroupApi;
const pageRequest = async (query: UserPageQuery): Promise => {
return await api.GetList(query);
};
@@ -274,6 +273,15 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
if (now < row.activeTime) {
return 待生效;
}
+
+ //是否是当前套餐
+ const suites = context.detail.value.suites;
+ if (suites && suites.length > 0) {
+ const suite = suites[0];
+ if (suite.productType === "suite" && suite.id === row.id) {
+ return 当前套餐;
+ }
+ }
// 是否在激活时间和过期时间之间
if (now > row.activeTime && (row.expiresTime == -1 || now < row.expiresTime)) {
return 生效中;
diff --git a/packages/ui/certd-client/src/views/certd/suite/mine/index.vue b/packages/ui/certd-client/src/views/certd/suite/mine/index.vue
index af7f2093..e8418658 100644
--- a/packages/ui/certd-client/src/views/certd/suite/mine/index.vue
+++ b/packages/ui/certd-client/src/views/certd/suite/mine/index.vue
@@ -11,18 +11,25 @@