feat(product): 新增产品管理模块与字典组件功能
- 新增产品管理相关路由和页面(dashboard、list、requirement、setting) - 实现产品基础信息编辑弹窗组件(base-info-dialog.vue) - 添加运行时字典功能(dict-select、dict-text、dict-tag组件) - 集成字典管理store和API调用 - 规范ID类型定义为string避免精度丢失问题 - 完善国际化资源文件支持中英文对照 - 新增对象上下文业务域入口页导航实现说明 - 添加Vue DevTools浮动入口注释说明 - 统一权限控制支持全局和对象作用域区分 - 规范分页查询参数类型定义与使用方式
This commit is contained in:
164
src/typings/api/product.d.ts
vendored
Normal file
164
src/typings/api/product.d.ts
vendored
Normal file
@@ -0,0 +1,164 @@
|
||||
declare namespace Api {
|
||||
/**
|
||||
* namespace Product
|
||||
*
|
||||
* backend api module: "project/product"
|
||||
*/
|
||||
namespace Product {
|
||||
type ProductStatusCode = 'active' | 'paused' | 'archived' | 'abandoned';
|
||||
|
||||
type ProductStatusActionCode = 'pause' | 'resume' | 'archive' | 'abandon';
|
||||
|
||||
type ProductMemberStatus = 0 | 1;
|
||||
|
||||
interface PageParams {
|
||||
pageNo: number;
|
||||
pageSize: number;
|
||||
}
|
||||
|
||||
interface PageResult<T = any> {
|
||||
total: number;
|
||||
list: T[];
|
||||
}
|
||||
|
||||
interface Product {
|
||||
/** 产品 ID */
|
||||
id: string;
|
||||
/** 产品编码 */
|
||||
code: string;
|
||||
/** 产品方向字典值 */
|
||||
directionCode: string;
|
||||
/** 产品名称 */
|
||||
name: string;
|
||||
/** 产品经理用户 ID */
|
||||
managerUserId: string;
|
||||
/** 产品描述 */
|
||||
description?: string | null;
|
||||
/** 产品状态编码 */
|
||||
statusCode: ProductStatusCode;
|
||||
/** 最近一次状态动作原因 */
|
||||
lastStatusReason?: string | null;
|
||||
/** 备注 */
|
||||
remark?: string | null;
|
||||
/** 创建时间 */
|
||||
createTime: string;
|
||||
/** 更新时间 */
|
||||
updateTime: string;
|
||||
}
|
||||
|
||||
interface ProductSettingBaseInfo {
|
||||
/** 产品 ID */
|
||||
id: string;
|
||||
/** 产品编码 */
|
||||
code: string;
|
||||
/** 产品方向字典值 */
|
||||
directionCode: string;
|
||||
/** 产品名称 */
|
||||
name: string;
|
||||
/** 产品经理用户 ID */
|
||||
managerUserId: string;
|
||||
/** 产品经理昵称 */
|
||||
managerUserNickname: string;
|
||||
/** 产品描述 */
|
||||
description?: string | null;
|
||||
/** 当前产品状态 */
|
||||
statusCode: ProductStatusCode;
|
||||
/** 最近一次状态动作原因 */
|
||||
lastStatusReason?: string | null;
|
||||
}
|
||||
|
||||
interface ProductLifecycleAction {
|
||||
actionCode: ProductStatusActionCode;
|
||||
actionName: string;
|
||||
needReason: boolean;
|
||||
}
|
||||
|
||||
interface ProductLifecycleInfo {
|
||||
statusCode: ProductStatusCode;
|
||||
lastStatusReason?: string | null;
|
||||
availableActions: ProductLifecycleAction[];
|
||||
}
|
||||
|
||||
interface ProductSettings {
|
||||
baseInfo: ProductSettingBaseInfo;
|
||||
lifecycle: ProductLifecycleInfo;
|
||||
}
|
||||
|
||||
interface ProductMember {
|
||||
/** 团队关系 ID */
|
||||
id: string;
|
||||
/** 用户 ID */
|
||||
userId: string;
|
||||
/** 用户昵称 */
|
||||
userNickname: string;
|
||||
/** 角色 ID */
|
||||
roleId: string;
|
||||
/** 角色名称 */
|
||||
roleName: string;
|
||||
/** 角色编码 */
|
||||
roleCode: string;
|
||||
/** 是否当前产品经理 */
|
||||
managerFlag: boolean;
|
||||
/** 成员状态 */
|
||||
status: ProductMemberStatus;
|
||||
/** 加入时间 */
|
||||
joinedTime: string;
|
||||
/** 退出时间 */
|
||||
leftTime?: string | null;
|
||||
/** 备注 */
|
||||
remark?: string | null;
|
||||
}
|
||||
|
||||
type ProductSearchParams = CommonType.RecordNullable<
|
||||
Pick<PageParams, 'pageNo' | 'pageSize'> &
|
||||
Pick<Product, 'directionCode' | 'managerUserId' | 'statusCode'> & {
|
||||
keyword: string;
|
||||
updateTime: string[];
|
||||
}
|
||||
>;
|
||||
|
||||
type SaveProductParams = Pick<Product, 'directionCode' | 'name' | 'managerUserId'> & {
|
||||
code?: string | null;
|
||||
description?: string | null;
|
||||
remark?: string | null;
|
||||
};
|
||||
|
||||
type UpdateProductParams = { id: string } & SaveProductParams;
|
||||
|
||||
interface ChangeProductStatusParams {
|
||||
id: string;
|
||||
actionCode: ProductStatusActionCode;
|
||||
reason?: string | null;
|
||||
}
|
||||
|
||||
interface DeleteProductParams {
|
||||
id: string;
|
||||
productName: string;
|
||||
reason: string;
|
||||
}
|
||||
|
||||
type UpdateProductSettingBaseInfoParams = Pick<ProductSettingBaseInfo, 'directionCode' | 'name'> & {
|
||||
description?: string | null;
|
||||
};
|
||||
|
||||
interface CreateProductMemberParams {
|
||||
userId: string;
|
||||
roleId: string;
|
||||
remark?: string | null;
|
||||
previousManagerUserId?: string | null;
|
||||
previousManagerRoleId?: string | null;
|
||||
}
|
||||
|
||||
interface UpdateProductMemberParams {
|
||||
roleId: string;
|
||||
remark?: string | null;
|
||||
reason?: string | null;
|
||||
previousManagerUserId?: string | null;
|
||||
previousManagerRoleId?: string | null;
|
||||
}
|
||||
|
||||
interface InactiveProductMemberParams {
|
||||
reason?: string | null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user