Merge branch 'main' of http://192.168.1.22:3000/Web/cn-rdms-web
# Conflicts: # src/views/product/requirement/index.vue # src/views/system/user-management-relation/index.vue
This commit is contained in:
6
src/typings/api/product.d.ts
vendored
6
src/typings/api/product.d.ts
vendored
@@ -21,6 +21,12 @@ declare namespace Api {
|
||||
list: T[];
|
||||
}
|
||||
|
||||
/** 产品入口页概览统计 */
|
||||
interface ProductOverviewSummary {
|
||||
/** 产品状态数量映射,key 为后端状态编码 */
|
||||
statusCounts: Record<string, number>;
|
||||
}
|
||||
|
||||
interface Product {
|
||||
/** 产品 ID */
|
||||
id: string;
|
||||
|
||||
450
src/typings/api/project.d.ts
vendored
Normal file
450
src/typings/api/project.d.ts
vendored
Normal file
@@ -0,0 +1,450 @@
|
||||
declare namespace Api {
|
||||
/**
|
||||
* namespace Project
|
||||
*
|
||||
* backend api module: "project/project"
|
||||
*/
|
||||
namespace Project {
|
||||
/** 项目状态编码 */
|
||||
type ProjectStatusCode = 'pending' | 'active' | 'paused' | 'completed' | 'cancelled' | 'archived';
|
||||
|
||||
/** 项目状态动作编码 */
|
||||
type ProjectStatusActionCode = 'auto_start' | 'pause' | 'resume' | 'complete' | 'cancel' | 'reopen' | 'archive';
|
||||
|
||||
/** 项目设置基础信息 */
|
||||
interface ProjectSettingBaseInfo {
|
||||
/** 项目 ID */
|
||||
id: string;
|
||||
/** 项目编码 */
|
||||
projectCode: string;
|
||||
/** 项目名称 */
|
||||
projectName: string;
|
||||
/** 项目方向字典值 */
|
||||
directionCode: string;
|
||||
/** 项目类型字典值 */
|
||||
projectType: string;
|
||||
/** 所属产品 ID */
|
||||
productId: string | null;
|
||||
/** 所属产品名称 */
|
||||
productName: string | null;
|
||||
/** 项目负责人用户昵称 */
|
||||
managerUserNickname: string | null;
|
||||
/** 项目负责人用户 ID */
|
||||
managerUserId: string | null;
|
||||
/** 项目状态编码 */
|
||||
statusCode: ProjectStatusCode;
|
||||
/** 计划开始日期 */
|
||||
plannedStartDate: string | null;
|
||||
/** 计划结束日期 */
|
||||
plannedEndDate: string | null;
|
||||
/** 实际开始日期 */
|
||||
actualStartDate: string | null;
|
||||
/** 实际结束日期 */
|
||||
actualEndDate: string | null;
|
||||
/** 项目说明 */
|
||||
projectDesc: string | null;
|
||||
/** 最近一次状态动作原因 */
|
||||
lastStatusReason: string | null;
|
||||
}
|
||||
|
||||
/** 项目生命周期动作 */
|
||||
interface ProjectLifecycleAction {
|
||||
actionCode: Exclude<ProjectStatusActionCode, 'auto_start'>;
|
||||
actionName: string;
|
||||
needReason: boolean;
|
||||
}
|
||||
|
||||
/** 项目生命周期信息 */
|
||||
interface ProjectLifecycleInfo {
|
||||
statusCode: ProjectStatusCode;
|
||||
lastStatusReason: string | null;
|
||||
availableActions: ProjectLifecycleAction[];
|
||||
}
|
||||
|
||||
/** 执行状态编码 */
|
||||
type ProjectExecutionStatusCode = 'pending' | 'active' | 'paused' | 'completed' | 'cancelled';
|
||||
|
||||
/** 执行动作编码 */
|
||||
type ProjectExecutionActionCode = 'start' | 'pause' | 'resume' | 'cancel';
|
||||
|
||||
/** 任务状态编码 */
|
||||
type ProjectTaskStatusCode = 'pending' | 'active' | 'blocked' | 'completed' | 'cancelled';
|
||||
|
||||
/** 任务动作编码 */
|
||||
type ProjectTaskActionCode = 'start' | 'block' | 'resume' | 'complete' | 'cancel';
|
||||
|
||||
interface LifecycleAction<ActionCode extends string = string> {
|
||||
actionCode: ActionCode;
|
||||
actionName: string;
|
||||
needReason: boolean;
|
||||
}
|
||||
|
||||
interface StatusBoardItem {
|
||||
statusCode: string;
|
||||
statusName: string;
|
||||
count: number;
|
||||
sort: number;
|
||||
terminal?: boolean;
|
||||
}
|
||||
|
||||
interface StatusBoard {
|
||||
total: number;
|
||||
items: StatusBoardItem[];
|
||||
}
|
||||
|
||||
interface ProjectExecution {
|
||||
id: string;
|
||||
projectId: string;
|
||||
projectRequirementId: string | null;
|
||||
executionName: string;
|
||||
executionType: string | null;
|
||||
ownerId: string;
|
||||
ownerNickname?: string | null;
|
||||
statusCode: ProjectExecutionStatusCode;
|
||||
statusName: string | null;
|
||||
terminal: boolean;
|
||||
allowEdit: boolean;
|
||||
availableActions: LifecycleAction<ProjectExecutionActionCode>[];
|
||||
plannedStartDate: string | null;
|
||||
plannedEndDate: string | null;
|
||||
actualStartDate: string | null;
|
||||
actualEndDate: string | null;
|
||||
progressRate: number;
|
||||
executionDesc: string | null;
|
||||
lastStatusReason: string | null;
|
||||
createTime: string;
|
||||
updateTime: string;
|
||||
}
|
||||
|
||||
interface ExecutionMember {
|
||||
id: string;
|
||||
executionId: string;
|
||||
userId: string;
|
||||
userNickname?: string | null;
|
||||
joinedAt: string | null;
|
||||
removedAt: string | null;
|
||||
removedReason: string | null;
|
||||
}
|
||||
|
||||
/** 执行成员变更事件类型 */
|
||||
type ExecutionMemberActionType = 'join' | 'inactive' | 'owner_transfer_in' | 'owner_transfer_out';
|
||||
|
||||
/** 执行成员变更历史 */
|
||||
interface ExecutionMemberLog {
|
||||
id: string;
|
||||
executionId: string;
|
||||
actionType: ExecutionMemberActionType;
|
||||
userId: string;
|
||||
userNicknameSnapshot: string | null;
|
||||
operatorUserId: string;
|
||||
operatorNicknameSnapshot: string | null;
|
||||
actionTime: string;
|
||||
reason: string | null;
|
||||
}
|
||||
|
||||
type ExecutionMemberLogSearchParams = CommonType.RecordNullable<
|
||||
Pick<PageParams, 'pageNo' | 'pageSize'> & {
|
||||
actionTypes: ExecutionMemberActionType[];
|
||||
userId: string;
|
||||
startTime: string;
|
||||
endTime: string;
|
||||
}
|
||||
>;
|
||||
|
||||
interface ProjectTask {
|
||||
id: string;
|
||||
projectId: string;
|
||||
executionId: string;
|
||||
parentTaskId: string | null;
|
||||
taskTitle: string;
|
||||
ownerId: string;
|
||||
ownerNickname?: string | null;
|
||||
statusCode: ProjectTaskStatusCode;
|
||||
statusName: string | null;
|
||||
terminal: boolean;
|
||||
allowEdit: boolean;
|
||||
availableActions: LifecycleAction<ProjectTaskActionCode>[];
|
||||
progressRate: number;
|
||||
plannedStartDate: string | null;
|
||||
plannedEndDate: string | null;
|
||||
actualStartDate: string | null;
|
||||
actualEndDate: string | null;
|
||||
taskDesc: string | null;
|
||||
lastStatusReason: string | null;
|
||||
createTime: string;
|
||||
updateTime: string;
|
||||
}
|
||||
|
||||
type ProjectExecutionSearchParams = CommonType.RecordNullable<
|
||||
Pick<PageParams, 'pageNo' | 'pageSize'> & {
|
||||
keyword: string;
|
||||
executionType: string;
|
||||
ownerId: string;
|
||||
statusCode: string;
|
||||
updateTime: string[];
|
||||
}
|
||||
>;
|
||||
|
||||
type ProjectExecutionStatusBoardParams = CommonType.RecordNullable<{
|
||||
keyword: string;
|
||||
executionType: string;
|
||||
ownerId: string;
|
||||
updateTime: string[];
|
||||
}>;
|
||||
|
||||
interface SaveProjectExecutionParams {
|
||||
executionName: string;
|
||||
executionType: string;
|
||||
ownerId: string;
|
||||
projectRequirementId: string | null;
|
||||
plannedStartDate: string | null;
|
||||
plannedEndDate: string | null;
|
||||
executionDesc: string | null;
|
||||
memberUserIds?: string[];
|
||||
}
|
||||
|
||||
interface ChangeExecutionOwnerParams {
|
||||
newOwnerId: string;
|
||||
reason: string | null;
|
||||
}
|
||||
|
||||
interface ChangeExecutionStatusParams {
|
||||
actionCode: ProjectExecutionActionCode;
|
||||
reason: string | null;
|
||||
}
|
||||
|
||||
interface CreateExecutionMemberParams {
|
||||
userId: string;
|
||||
}
|
||||
|
||||
interface InactiveExecutionMemberParams {
|
||||
reason: string;
|
||||
}
|
||||
|
||||
type ProjectTaskSearchParams = CommonType.RecordNullable<
|
||||
Pick<PageParams, 'pageNo' | 'pageSize'> & {
|
||||
keyword: string;
|
||||
parentTaskId: string;
|
||||
ownerId: string;
|
||||
statusCode: string;
|
||||
updateTime: string[];
|
||||
}
|
||||
>;
|
||||
|
||||
type ProjectTaskStatusBoardParams = CommonType.RecordNullable<{
|
||||
keyword: string;
|
||||
parentTaskId: string;
|
||||
ownerId: string;
|
||||
updateTime: string[];
|
||||
}>;
|
||||
|
||||
interface SaveProjectTaskParams {
|
||||
parentTaskId: string | null;
|
||||
taskTitle: string;
|
||||
ownerId: string | null;
|
||||
progressRate?: number;
|
||||
plannedStartDate: string | null;
|
||||
plannedEndDate: string | null;
|
||||
taskDesc: string | null;
|
||||
/** 仅创建任务时生效,编辑接口静默忽略;userId 必须是当前有效执行成员且不能等于 ownerId */
|
||||
assigneeUserIds?: string[];
|
||||
}
|
||||
|
||||
interface ChangeTaskStatusParams {
|
||||
actionCode: ProjectTaskActionCode;
|
||||
reason: string | null;
|
||||
}
|
||||
|
||||
/** 项目设置参数 */
|
||||
interface ProjectSettings {
|
||||
baseInfo: ProjectSettingBaseInfo;
|
||||
lifecycle: ProjectLifecycleInfo;
|
||||
}
|
||||
|
||||
/** 项目设置基础信息参数 */
|
||||
interface UpdateProjectSettingBaseInfoParams {
|
||||
projectName: string;
|
||||
directionCode: string;
|
||||
projectType: string;
|
||||
plannedStartDate: string | null;
|
||||
plannedEndDate: string | null;
|
||||
projectDesc: string | null;
|
||||
}
|
||||
|
||||
/** 项目成员状态 */
|
||||
type ProjectMemberStatus = 0 | 1;
|
||||
|
||||
interface PageParams {
|
||||
pageNo: number;
|
||||
pageSize: number;
|
||||
}
|
||||
|
||||
interface PageResult<T = any> {
|
||||
total: number;
|
||||
list: T[];
|
||||
}
|
||||
|
||||
/** 项目入口页概览统计 */
|
||||
interface ProjectOverviewSummary {
|
||||
/** 项目状态数量映射,key 为后端状态编码 */
|
||||
statusCounts: Record<string, number>;
|
||||
}
|
||||
|
||||
interface Project {
|
||||
/** 项目 ID */
|
||||
id: string;
|
||||
/** 项目编码 */
|
||||
projectCode: string;
|
||||
/** 项目名称 */
|
||||
projectName: string;
|
||||
/** 项目方向字典值 */
|
||||
directionCode: string;
|
||||
/** 项目类型字典值 */
|
||||
projectType: string;
|
||||
/** 所属产品 ID */
|
||||
productId: string | null;
|
||||
/** 所属产品名称 */
|
||||
productName?: string | null;
|
||||
/** 项目负责人用户 ID */
|
||||
managerUserId: string;
|
||||
/** 项目负责人用户昵称 */
|
||||
managerUserNickname?: string | null;
|
||||
/** 项目状态编码 */
|
||||
statusCode: ProjectStatusCode;
|
||||
/** 计划开始日期 */
|
||||
plannedStartDate: string | null;
|
||||
/** 计划结束日期 */
|
||||
plannedEndDate: string | null;
|
||||
/** 实际开始日期 */
|
||||
actualStartDate: string | null;
|
||||
/** 实际结束日期 */
|
||||
actualEndDate: string | null;
|
||||
/** 进度百分比 */
|
||||
progressRate: number;
|
||||
/** 项目说明 */
|
||||
projectDesc: string | null;
|
||||
/** 最近一次状态动作原因 */
|
||||
lastStatusReason: string | null;
|
||||
/** 创建时间 */
|
||||
createTime: string;
|
||||
/** 更新时间 */
|
||||
updateTime: string;
|
||||
}
|
||||
|
||||
interface ProjectContext {
|
||||
currentProject: {
|
||||
id: string;
|
||||
projectCode: string;
|
||||
projectName: string;
|
||||
projectType: string;
|
||||
productId: string | null;
|
||||
managerUserId: string;
|
||||
statusCode: ProjectStatusCode;
|
||||
};
|
||||
currentRole: {
|
||||
roleId: string | null;
|
||||
roleCode: string | null;
|
||||
roleName: string | null;
|
||||
guestFlag: boolean;
|
||||
};
|
||||
navs: Array<{
|
||||
id: string;
|
||||
name: string;
|
||||
path: string;
|
||||
icon: string;
|
||||
sort: number;
|
||||
}>;
|
||||
buttons: string[];
|
||||
}
|
||||
|
||||
interface ProjectMember {
|
||||
/** 成员关系 ID */
|
||||
id: string;
|
||||
/** 用户 ID */
|
||||
userId: string;
|
||||
/** 用户昵称 */
|
||||
userNickname: string;
|
||||
/** 角色 ID */
|
||||
roleId: string;
|
||||
/** 角色名称 */
|
||||
roleName: string;
|
||||
/** 角色编码 */
|
||||
roleCode: string;
|
||||
/** 是否项目负责人 */
|
||||
managerFlag: boolean;
|
||||
/** 成员状态 */
|
||||
status: ProjectMemberStatus;
|
||||
/** 加入时间 */
|
||||
joinedTime: string;
|
||||
/** 退出时间 */
|
||||
leftTime: string | null;
|
||||
/** 备注 */
|
||||
remark: string | null;
|
||||
}
|
||||
|
||||
/** 项目搜索参数 */
|
||||
type ProjectSearchParams = CommonType.RecordNullable<
|
||||
Pick<PageParams, 'pageNo' | 'pageSize'> & {
|
||||
keyword: string;
|
||||
directionCode: string;
|
||||
projectType: string;
|
||||
productId: string;
|
||||
managerUserId: string;
|
||||
statusCode: ProjectStatusCode;
|
||||
updateTime: string[];
|
||||
}
|
||||
>;
|
||||
|
||||
/** 创建/保存项目参数 */
|
||||
type SaveProjectParams = Pick<Project, 'projectName' | 'directionCode' | 'projectType' | 'projectDesc'> & {
|
||||
projectCode: string | null;
|
||||
productId: string | null;
|
||||
managerUserId: string;
|
||||
plannedStartDate: string | null;
|
||||
plannedEndDate: string | null;
|
||||
actualStartDate?: string | null;
|
||||
actualEndDate?: string | null;
|
||||
};
|
||||
|
||||
/** 更新项目参数 */
|
||||
type UpdateProjectParams = { id: string } & SaveProjectParams;
|
||||
|
||||
/** 变更项目状态参数 */
|
||||
interface ChangeProjectStatusParams {
|
||||
id: string;
|
||||
actionCode: ProjectStatusActionCode;
|
||||
reason: string | null;
|
||||
}
|
||||
|
||||
/** 删除项目参数 */
|
||||
interface DeleteProjectParams {
|
||||
id: string;
|
||||
projectName: string;
|
||||
confirmText: string;
|
||||
reason: string;
|
||||
}
|
||||
|
||||
/** 创建项目成员参数 */
|
||||
interface CreateProjectMemberParams {
|
||||
userId: string;
|
||||
roleId: string;
|
||||
remark: string | null;
|
||||
previousManagerUserId?: string | null;
|
||||
previousManagerRoleId?: string | null;
|
||||
}
|
||||
|
||||
/** 更新项目成员参数 */
|
||||
interface UpdateProjectMemberParams {
|
||||
roleId: string;
|
||||
reason: string | null;
|
||||
remark: string | null;
|
||||
previousManagerUserId?: string | null;
|
||||
previousManagerRoleId?: string | null;
|
||||
}
|
||||
|
||||
/** 移出项目成员参数 */
|
||||
interface InactiveProjectMemberParams {
|
||||
reason: string | null;
|
||||
}
|
||||
}
|
||||
}
|
||||
6
src/typings/api/system-manage.d.ts
vendored
6
src/typings/api/system-manage.d.ts
vendored
@@ -428,6 +428,12 @@ declare namespace Api {
|
||||
id: string;
|
||||
/** 用户昵称 */
|
||||
nickname: string;
|
||||
/** 用户账号 */
|
||||
username?: string | null;
|
||||
/** 部门 ID */
|
||||
deptId?: string | null;
|
||||
/** 部门名称 */
|
||||
deptName?: string | null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
9
src/typings/components.d.ts
vendored
9
src/typings/components.d.ts
vendored
@@ -14,6 +14,10 @@ declare module 'vue' {
|
||||
BusinessFormDialog: typeof import('./../components/custom/business-form-dialog.vue')['default']
|
||||
BusinessFormDrawer: typeof import('./../components/custom/business-form-drawer.vue')['default']
|
||||
BusinessFormSection: typeof import('./../components/custom/business-form-section.vue')['default']
|
||||
BusinessFormSimpleDialog: typeof import('./../components/custom/business-form-simple-dialog.vue')['default']
|
||||
BusinessRichTextEditor: typeof import('./../components/custom/business-rich-text-editor.vue')['default']
|
||||
BusinessRichTextView: typeof import('./../components/custom/business-rich-text-view.vue')['default']
|
||||
BusinessUserSelect: typeof import('./../components/custom/business-user-select.vue')['default']
|
||||
ButtonIcon: typeof import('./../components/custom/button-icon.vue')['default']
|
||||
CountTo: typeof import('./../components/custom/count-to.vue')['default']
|
||||
CustomIconSelect: typeof import('./../components/custom/custom-icon-select.vue')['default']
|
||||
@@ -58,6 +62,7 @@ declare module 'vue' {
|
||||
ElPagination: typeof import('element-plus/es')['ElPagination']
|
||||
ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
|
||||
ElPopover: typeof import('element-plus/es')['ElPopover']
|
||||
ElProgress: typeof import('element-plus/es')['ElProgress']
|
||||
ElRadio: typeof import('element-plus/es')['ElRadio']
|
||||
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
|
||||
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
|
||||
@@ -65,6 +70,7 @@ declare module 'vue' {
|
||||
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
|
||||
ElSegmented: typeof import('element-plus/es')['ElSegmented']
|
||||
ElSelect: typeof import('element-plus/es')['ElSelect']
|
||||
ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
|
||||
ElSpace: typeof import('element-plus/es')['ElSpace']
|
||||
ElStatistic: typeof import('element-plus/es')['ElStatistic']
|
||||
ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
|
||||
@@ -115,6 +121,7 @@ declare module 'vue' {
|
||||
IconLocalLogo: typeof import('~icons/local/logo')['default']
|
||||
'IconMaterialSymbolsLight:rotate90DegreesCcwOutlineRounded': typeof import('~icons/material-symbols-light/rotate90-degrees-ccw-outline-rounded')['default']
|
||||
IconMaterialSymbolsLightCheckCircleRounded: typeof import('~icons/material-symbols-light/check-circle-rounded')['default']
|
||||
'IconMdi:paperclip': typeof import('~icons/mdi/paperclip')['default']
|
||||
'IconMdi:printer': typeof import('~icons/mdi/printer')['default']
|
||||
IconMdiAccountTieOutline: typeof import('~icons/mdi/account-tie-outline')['default']
|
||||
IconMdiArrowDownThin: typeof import('~icons/mdi/arrow-down-thin')['default']
|
||||
@@ -124,6 +131,7 @@ declare module 'vue' {
|
||||
IconMdiChevronDoubleUp: typeof import('~icons/mdi/chevron-double-up')['default']
|
||||
IconMdiChevronDown: typeof import('~icons/mdi/chevron-down')['default']
|
||||
IconMdiChevronRight: typeof import('~icons/mdi/chevron-right')['default']
|
||||
IconMdiCloseCircle: typeof import('~icons/mdi/close-circle')['default']
|
||||
IconMdiDeleteOutline: typeof import('~icons/mdi/delete-outline')['default']
|
||||
IconMdiDotsHorizontal: typeof import('~icons/mdi/dots-horizontal')['default']
|
||||
IconMdiDrag: typeof import('~icons/mdi/drag')['default']
|
||||
@@ -154,6 +162,7 @@ declare module 'vue' {
|
||||
SystemLogo: typeof import('./../components/common/system-logo.vue')['default']
|
||||
TableColumnSetting: typeof import('./../components/advanced/table-column-setting.vue')['default']
|
||||
TableHeaderOperation: typeof import('./../components/advanced/table-header-operation.vue')['default']
|
||||
TableSearchFields: typeof import('./../components/custom/table-search-fields.vue')['default']
|
||||
TableSearchPanel: typeof import('./../components/custom/table-search-panel.vue')['default']
|
||||
ThemeSchemaSwitch: typeof import('./../components/common/theme-schema-switch.vue')['default']
|
||||
WaveBg: typeof import('./../components/custom/wave-bg.vue')['default']
|
||||
|
||||
13
src/typings/elegant-router.d.ts
vendored
13
src/typings/elegant-router.d.ts
vendored
@@ -65,6 +65,13 @@ declare module "@elegant-router/types" {
|
||||
"product_list": "/product/list";
|
||||
"product_requirement": "/product/requirement";
|
||||
"product_setting": "/product/setting";
|
||||
"project": "/project";
|
||||
"project_list": "/project/list";
|
||||
"project_project": "/project/project";
|
||||
"project_project_execution": "/project/project/execution";
|
||||
"project_project_overview": "/project/project/overview";
|
||||
"project_project_requirement": "/project/project/requirement";
|
||||
"project_project_setting": "/project/project/setting";
|
||||
"system": "/system";
|
||||
"system_dict": "/system/dict";
|
||||
"system_menu": "/system/menu";
|
||||
@@ -117,6 +124,7 @@ declare module "@elegant-router/types" {
|
||||
| "login"
|
||||
| "plugin"
|
||||
| "product"
|
||||
| "project"
|
||||
| "system"
|
||||
| "user-center"
|
||||
>;
|
||||
@@ -172,6 +180,11 @@ declare module "@elegant-router/types" {
|
||||
| "product_list"
|
||||
| "product_requirement"
|
||||
| "product_setting"
|
||||
| "project_list"
|
||||
| "project_project_execution"
|
||||
| "project_project_overview"
|
||||
| "project_project_requirement"
|
||||
| "project_project_setting"
|
||||
| "system_dict"
|
||||
| "system_menu"
|
||||
| "system_post"
|
||||
|
||||
18
src/typings/wangeditor.d.ts
vendored
Normal file
18
src/typings/wangeditor.d.ts
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
declare module '@wangeditor/editor-for-vue' {
|
||||
import type { DefineComponent } from 'vue';
|
||||
import type { IDomEditor, IEditorConfig, IToolbarConfig } from '@wangeditor/editor';
|
||||
|
||||
export const Editor: DefineComponent<{
|
||||
modelValue?: string | null;
|
||||
defaultConfig?: Partial<IEditorConfig>;
|
||||
defaultContent?: unknown[];
|
||||
defaultHtml?: string;
|
||||
mode?: 'default' | 'simple';
|
||||
}>;
|
||||
|
||||
export const Toolbar: DefineComponent<{
|
||||
editor: IDomEditor | null | undefined;
|
||||
defaultConfig?: Partial<IToolbarConfig>;
|
||||
mode?: 'default' | 'simple';
|
||||
}>;
|
||||
}
|
||||
Reference in New Issue
Block a user