UNPKG

dingtalk-docs-cool-app

Version:

钉钉文档酷应用插件扩展 开发者初始化包

1,396 lines (1,395 loc) 43.8 kB
export type SheetId = string; export type FieldId = string; export type FieldType = 'text' | 'number' | 'singleSelect' | 'multipleSelect' | 'date' | 'group' | 'checkbox' | 'user' | 'unidirectionalLink' | 'bidirectionalLink' | 'attachment' | 'department' | 'url' | 'creator' | 'lastModifier' | 'createdTime' | 'lastModifiedTime' | 'rating' | 'progress' | 'currency' | 'telephone' | 'email' | 'idCard' | 'formula' | 'lookup' | 'filterUp'; export type ViewType = 'Grid' | 'Kanban' | 'Gallery' | 'Gatt' | 'Calendar' | 'Form'; export declare enum NUMERICAL_FORMAT { /** 整数 */ INT = "INT", /** 保留1位小数 */ FLOAT_1 = "FLOAT_1", /** 保留2位小数 */ FLOAT_2 = "FLOAT_2", /** 保留3位小数 */ FLOAT_3 = "FLOAT_3", /** 保留4位小数 */ FLOAT_4 = "FLOAT_4", /** 保留5位小数 */ FLOAT_5 = "FLOAT_5", /** 保留6位小数 */ FLOAT_6 = "FLOAT_6", /** 保留7位小数 */ FLOAT_7 = "FLOAT_7", /** 保留8位小数 */ FLOAT_8 = "FLOAT_8", /** 保留9位小数 */ FLOAT_9 = "FLOAT_9", /** 千分位 */ THOUSAND = "THOUSAND", /** 千分位(小数点) */ THOUSAND_FLOAT = "THOUSAND_FLOAT", /** 百分比 */ PERCENT = "PERCENT", /** 百分比(小数点) */ PERCENT_FLOAT = "PERCENT_FLOAT" } export type NumericalFormatter = `${NUMERICAL_FORMAT}`; export declare enum DATE_FORMAT { FORMAT1 = "YYYY-MM-DD", FORMAT2 = "YYYY-MM-DD HH:mm", FORMAT3 = "YYYY/MM/DD", FORMAT4 = "YYYY/MM/DD HH:mm", FORMAT5 = "YYYY\u5E74MM\u6708", FORMAT6 = "MM\u6708DD\u65E5", FORMAT7 = "YYYY\u5E74MM\u6708DD\u65E5" } export type DateFormatter = `${DATE_FORMAT}`; export declare enum PROGRESS_FORMAT { /** 数值,整数 */ NUMBER = "NUMBER", /** 数值,保留1位小数位 */ NUMBER_FLOAT_1 = "NUMBER_FLOAT_1", /** 数值,保留2位小数位 */ NUMBER_FLOAT_2 = "NUMBER_FLOAT_2", /** 数值,保留3位小数位 */ NUMBER_FLOAT_3 = "NUMBER_FLOAT_3", /** 百分比,整数 */ PERCENT = "PERCENT", /** 百分比,保留1位小数位 */ PERCENT_FLOAT_1 = "PERCENT_FLOAT_1", /** 百分比,保留2位小数位 */ PERCENT_FLOAT_2 = "PERCENT_FLOAT_2", /** 百分比,保留3位小数位 */ PERCENT_FLOAT_3 = "PERCENT_FLOAT_3" } export interface SelectOptions { /** 选项Id, 新增选项时可不传此项 */ id?: string; /** 选项名 */ name: string; } export declare enum RATING_ICON_TYPE { STAR = "star", NPS = "nps", HEART = "heart", LIKE = "like", FIRE = "fire", EMOJI = "emoji", LIGHTING = "lighting", FLOWER = "flower" } export declare enum CURRENCY_TYPE { /** 人民币 */ CNY = "CNY", /** 港元 */ HKD = "HKD", /** 美元 */ USD = "USD", /** 欧元 */ EUR = "EUR", /** 英镑 */ GBP = "GBP", /** 澳门元 */ MOP = "MOP", /** 越南盾 */ VND = "VND", /** 日元 */ JPY = "JPY", /** 韩元 */ KRW = "KRW", /** 阿联酋迪拉姆 */ AED = "AED", /** 澳元 */ AUD = "AUD", /** 巴西雷亚尔 */ BRL = "BRL", /** 加拿大元 */ CAD = "CAD", /** 瑞士法郎 */ CHF = "CHF", /** 印度卢比 */ INR = "INR", /** 印尼盾 */ IDR = "IDR", /** 墨西哥比索 */ MXN = "MXN", /** 马来西亚令吉 */ MYR = "MYR", /** 菲律宾比索 */ PHP = "PHP", /** 波兰兹罗提 */ PLN = "PLN", /** 俄罗斯卢布 */ RUB = "RUB", /** 新加坡元 */ SGD = "SGD", /** 泰国铢 */ THB = "THB", /** 土耳其里拉 */ TRY = "TRY", /** 新台币 */ TWD = "TWD" } export type CurrencyType = `${CURRENCY_TYPE}`; export interface FieldProperty { /** * 字段格式[数字/时间/进度/货币字段可配置] */ formatter?: NUMERICAL_FORMAT | DATE_FORMAT | PROGRESS_FORMAT; /** * 选项配置[单选/多选字段可配置] */ choices?: SelectOptions[]; /** * 要关联的数据表Id[单向关联/双向关联字段可配置] */ linkedSheetId?: string; /** * 双向关联的字段Id[由系统自动生成] */ linkedFieldId?: string; /** * 是否可多选[人员/群组/部门/单向关联/双向关联字段可配置] */ multiple?: boolean; /** * 最小值[进度、评分字段可配置,评分字段下仅支持配置0或1的整数] */ min?: number; /** * 最大值[进度、评分字段可配置,评分字段下仅支持配置2~5的整数] */ max?: number; /** * 是否可自定义进度条值[进度字段可配置] */ customizeRange?: boolean; /** * 评分图标[评分字段可配置] */ icon?: RATING_ICON_TYPE; /** * 货币币种[货币字段可配置] */ currencyType?: CURRENCY_TYPE; } export declare enum FilterDuration { /** 今天 */ Today = "Today", /** 明天 */ Tomorrow = "Tomorrow", /** 昨天 */ Yesterday = "Yesterday", /** 过去7天 */ TheLastWeek = "TheLastWeek", /** 未来7天 */ TheNextWeek = "TheNextWeek", /** 过去30天 */ TheLastMonth = "TheLastMonth", /** 未来30天 */ TheNextMonth = "TheNextMonth", /** 本周 */ CurrentWeek = "CurrentWeek", /** 上周 */ LastWeek = "LastWeek", /** 本月 */ CurrentMonth = "CurrentMonth", /** 上个月 */ LastMonth = "LastMonth" } export declare enum FilterConjunction { And = "and", Or = "or" } export declare enum FilterOperator { /** 等于 */ Is = "is", /** 不等于 */ IsNot = "isNot", /** 包含 */ Contains = "contains", /** 不包含 */ DoesNotContain = "doesNotContain", /** 为空 */ IsEmpty = "isEmpty", /** 不为空 */ IsNotEmpty = "isNotEmpty", /** 大于 */ IsGreater = "isGreater", /** 大于或等于 */ IsGreaterEqual = "isGreaterEqual", /** 小于 */ IsLess = "isLess", /** 小于或等于 */ IsLessEqual = "isLessEqual" } type IFilterDateTimeValue = number | FilterDuration | null; type IFilterConditionValue = null | boolean | number | string | string[] | IFilterDateTimeValue; interface IFilterCondition { fieldId: string; operator: FilterOperator; value: IFilterConditionValue; conditionId: string; } export interface IFilterInfo { conjunction: FilterConjunction; conditions: IFilterCondition[]; } interface IFilterBaseCondition { fieldId: string; conditionId?: string; } export interface IFilterAttachmentCondition extends IFilterBaseCondition { fieldType?: 'Attachment'; value?: null; operator: FilterOperator.IsEmpty | FilterOperator.IsNotEmpty; } export interface IFilterCheckboxCondition extends IFilterBaseCondition { value: boolean; operator: FilterOperator.Is; fieldType?: 'Checkbox'; } export interface IFilterAutoNumberCondition extends IFilterBaseCondition { value: number; operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.IsGreater | FilterOperator.IsGreaterEqual | FilterOperator.IsLess | FilterOperator.IsLessEqual | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty; fieldType?: 'AutoNumber'; } export interface IFilterDateTimeCondition extends IFilterBaseCondition { value: IFilterDateTimeValue; /** IsGreater:晚于; isLess:早于 */ operator: FilterOperator.Is | FilterOperator.IsGreater | FilterOperator.IsLess | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty; fieldType?: 'DateTime'; } export interface IFilterCreatedTimeCondition extends IFilterBaseCondition { value: IFilterDateTimeValue; /** IsGreater:晚于; isLess:早于 */ operator: FilterOperator.Is | FilterOperator.IsGreater | FilterOperator.IsLess | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty; fieldType?: 'CreatedTime'; } export interface IFilterModifiedTimeCondition extends IFilterBaseCondition { value: IFilterDateTimeValue; /** IsGreater:晚于; isLess:早于 */ operator: FilterOperator.Is | FilterOperator.IsGreater | FilterOperator.IsLess | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty; fieldType?: 'ModifiedTime'; } export interface IFilterMultipleSelectCondition extends IFilterBaseCondition { value: string | string[]; operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.Contains | FilterOperator.DoesNotContain | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty; fieldType?: 'MultipleSelect'; } export interface IFilterSingleSelectCondition extends IFilterBaseCondition { value: string | string[]; operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.Contains | FilterOperator.DoesNotContain | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty; fieldType?: 'SingleSelect'; } export interface IFilterPhoneCondition extends IFilterBaseCondition { value: string | null; operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.Contains | FilterOperator.DoesNotContain | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty; fieldType?: 'Phone'; } export interface IFilterTextCondition extends IFilterBaseCondition { value: string | null; operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.Contains | FilterOperator.DoesNotContain | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty; fieldType?: 'Text'; } export interface IFilterNumberCondition extends IFilterBaseCondition { value: number | null; operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.IsGreater | FilterOperator.IsGreaterEqual | FilterOperator.IsLess | FilterOperator.IsLessEqual | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty; fieldType?: 'Number'; } export interface IFilterUrlCondition extends IFilterBaseCondition { value: string | null; operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.Contains | FilterOperator.DoesNotContain | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty; fieldType?: 'Url'; } export interface IFilterCurrencyCondition extends IFilterBaseCondition { value: number | null; operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.IsGreater | FilterOperator.IsGreaterEqual | FilterOperator.IsLess | FilterOperator.IsLessEqual | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty; fieldType?: 'Currency'; } export interface IFilterBarcodeCondition extends IFilterBaseCondition { value: string | null; operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.Contains | FilterOperator.DoesNotContain | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty; fieldType?: 'Barcode'; } export interface IFilterProgressCondition extends IFilterBaseCondition { value: number | null; operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.IsGreater | FilterOperator.IsGreaterEqual | FilterOperator.IsLess | FilterOperator.IsLessEqual | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty; fieldType?: 'Progress'; } export interface IFilterEmailCondition extends IFilterBaseCondition { value: string | null; operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.Contains | FilterOperator.DoesNotContain | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty; fieldType?: 'Email'; } export interface IFilterRatingCondition extends IFilterBaseCondition { value: number | null; operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.IsGreater | FilterOperator.IsGreaterEqual | FilterOperator.IsLess | FilterOperator.IsLessEqual | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty; fieldType?: 'Rating'; } export type FilterInfoCondition = IFilterAttachmentCondition | IFilterCheckboxCondition | IFilterAutoNumberCondition | IFilterDateTimeCondition | IFilterCreatedTimeCondition | IFilterModifiedTimeCondition | IFilterMultipleSelectCondition | IFilterSingleSelectCondition | IFilterPhoneCondition | IFilterTextCondition | IFilterNumberCondition | IFilterUrlCondition | IFilterCurrencyCondition | IFilterBarcodeCondition | IFilterProgressCondition | IFilterEmailCondition | IFilterRatingCondition; export type IAddFilterConditionParams = FilterInfoCondition | FilterInfoCondition[]; export type IUpdateFilterConditionParams = FilterInfoCondition | FilterInfoCondition[]; export type FieldWidths = Record<string, number>; export interface IGridViewMeta { id: string; name: string; type: 'Grid'; property: { hierarchyConfig: { fieldId: string | undefined; }; filterInfo: IFilterInfo | null; }; } export declare enum SharingStatus { Enabled = "Enabled", Disabled = "Disabled" } export declare enum PermissionScope { BASE = "base", SHEET = "sheet", VIEW = "view", FIELD = "field", RECORD = "record", CELL = "cell" } export declare enum PermissionType { /** 可编辑权限 */ EDIT = "edit", /** 可管理权限 */ MANAGE = "manage", /** 可读权限 */ READ = "read", /** 可创建权限 */ CREATE = "create", /** 可更新权限 */ UPDATE = "update", /** 可删除权限 */ DELETE = "delete", /** 可复制权限 */ COPY = "copy", /** 可分组权限 */ GROUP = "group", /** 可排序权限 */ SORT = "sort", /** 可筛选权限 */ FILTER = "filter", /** 可填色权限 */ FILL_COLOR = "fillColor" } interface IBasePermission { /** 权限范围 */ scope: PermissionScope.BASE; /** 权限类型 */ permissionType: PermissionType.EDIT | PermissionType.MANAGE; } interface ISheetPermission { /** 权限范围 */ scope: PermissionScope.SHEET; /** 权限类型 */ permissionType: PermissionType.READ | PermissionType.CREATE | PermissionType.UPDATE | PermissionType.DELETE; params: { /** 需要查询权限的数据表ID */ sheetId: string; }; } export type IGetPermission = IBasePermission | ISheetPermission; export interface Selection { /** 当前多维表的ID */ baseId: string; /** 当前选中区域所属数据表ID,未选中数据表时返回null */ sheetId: SheetId | null; /** 当前选中区域所属视图ID,未选中视图时返回null */ viewId: string | null; /** 当前选中区域起始单元格所属字段ID,未选中单元格时返回null */ fieldId: FieldId | null; /** 当前选中区域起始单元格所属记录ID,未选中单元格时返回null */ recordId: string | null; /** * 当前选中表区域的范围 */ selectedArea: { /** * 当前选中区域所属字段ID */ fieldIds: string[] | null; /** * 当前选中区域所属记录ID */ recordIds: string[] | null; } | null; } export interface FieldToInsert { /** 字段名称 */ name: string; /** 字段类型 */ type: FieldType; /** 字段属性 */ property?: FieldProperty; } export interface FieldToUpdate { /** 字段名称 */ name?: string; /** 字段类型 */ type?: FieldType; /** 字段属性 */ property?: FieldProperty; /** 字段描述 */ desc?: string; } export interface SheetToUpdate { /** 需要更新的表格名称 */ name?: string; /** 需要更新的数据表描述 */ desc?: string; } export interface ViewToInsert { /** 视图名称 */ name: string; /** 视图类型 */ type: ViewType; /** 视图描述 */ desc?: string; } export interface ViewToUpdate { /** 视图名称 */ name?: string; /** 视图描述 */ desc?: string; } export interface RecordToInsert { /** * 字段值,key为fieldId,value为对应的值。 */ fields: Record<string, Cell>; id?: string; } export interface Base { /** * getPermission * 查询当前用户的权限 * * @param {IGetPermission} params 多维表权限类型 * @returns {Promise<boolean>} 是否拥有此权限 */ getPermissionAsync: (params: IGetPermission) => Promise<boolean>; /** * getSelection * 获取当前多维表激活区域的信息 * * @returns {Selection} 数据表激活区域的信息 */ getSelection: () => Selection; /** * getActiveSheet * 获取当前选中的数据表对象 * * @returns {Sheet | null} 数据表对象,若当前未选中任何数据表,则返回null */ getActiveSheet: () => Sheet | null; /** * getSheet * 根据数据表ID或数据表名称获取指定数据表 * * @param {string} idOrName 数据表ID或数据表名称 * @returns {Sheet | null} 数据表对象,若当前未找到符合条件的数据表,则返回null */ getSheet: (idOrName: string) => Sheet | null; /** * getSheets * 获取当前用户可见的所有数据表 * * @returns {Sheet[]} 当前用户可见的所有数据表对象 */ getSheets: () => Sheet[]; /** * insertSheet * 插入一张数据表 * * @param {string} name 数据表名称 * @param {FieldToInsert} fields 数据表携带的字段配置,不传时会携带默认空数据表模版的字段(标题/单选/人员/日期/附件) * @returns {Sheet} 插入的数据表对象 */ insertSheet: (name: string, fields?: FieldToInsert[]) => Sheet; /** * updateSheet * 根据数据表ID更新指定数据表 * * @param {string} id 指定数据表ID * @param {SheetToUpdate} sheet 需要更新的数据表配置 * @returns {Sheet} 更新的数据表对象 */ updateSheet: (id: string, sheet: SheetToUpdate) => Sheet; /** * deleteSheet * 根据数据表ID或数据表名称删除指定数据表 * * @param {string} idOrName 数据表ID或数据表名称 * @returns {Base} Base对象本身 */ deleteSheet: (idOrName: string) => Base; /** * getDentryUuid[skip-for-cool-app] * 获取文档dentryUuid */ getDentryUuid: () => string; } export interface Sheet { /** * getId * 获取当前数据表ID * * @returns {string} 数据表ID */ getId: () => string; /** * getName * 获取当前数据表名称 * * @returns {string} 数据表名称 */ getName: () => string; /** * setName * 设置当前数据表名称 * * @param {string} name 数据表名称 * @returns {Sheet} Sheet对象本身 */ setName: (name: string) => Sheet; /** * getDesc * 获取数据表描述 * * @returns {string | undefined} 数据表描述文案,没有描述时默认返回undefined */ getDesc: () => string | undefined; /** * setDesc * 设置当前数据表描述 * * @param {string} desc 数据表描述文案 * @returns {Sheet} Sheet对象本身 */ setDesc: (desc: string) => Sheet; /** * isFieldExist * 判断当前数据表中指定ID的字段是否存在 * * @param {string} fieldId 字段ID * @returns {boolean} 是否存在 */ isFieldExist: (fieldId: string) => boolean; /** * getFields * 获取当前数据表中所有字段列表 * * @returns {Field[]} 字段列表 */ getFields: () => Field[]; /** * getFieldsByType * 获取当前数据表中所有指定类型的字段列表 * * @param {T = FieldType} type 指定字段类型 * @returns {Field<T>[]} 指定类型的字段列表 */ getFieldsByType: (type: FieldType) => Field[]; /** * getField * 根据字段ID或字段名称获取指定字段 * * @param {string} idOrName 字段ID或字段名称 * @returns {Field | null} 字段对象,若当前未找到符合条件的数据表,则返回null */ getField: <T extends Field = Field>(idOrName: string) => T | null; /** * insertField * 插入字段 * * @param {Field} fieldConfig 字段配置 * @returns {Field} 插入的字段对象 */ insertField: (fieldConfig: FieldToInsert) => Field; /** * updateFieldAsync * 根据字段ID更新指定字段配置 * * @param {string} id 字段ID * @param {FieldToUpdate} fieldConfig 字段配置 * @returns {Field} 更新的字段对象 */ updateFieldAsync: (id: string, fieldConfig: FieldToUpdate) => Promise<Field>; /** * deleteField * 根据字段ID或字段名称删除指定字段 * * @param idOrName 字段ID或字段名称 * @returns {Sheet} Sheet对象本身 */ deleteField: (idOrName: string) => Sheet; /** * isViewExist * 判断当前数据表中指定ID的视图是否存在 * * @param {string} viewId 视图ID * @returns {boolean} 是否存在 */ isViewExist: (viewId: string) => boolean; /** * getViews * 获取当前数据表的所有视图列表 * * @returns {View[]} 视图列表 */ getViews: () => View[]; /** * getViewById * 根据视图ID或视图名称获取指定视图 * * @param {string} idOrName 指定视图的ID或名称 * @returns {View} 指定的视图对象,未找到视图时返回null */ getView: (idOrName: string) => View | null; /** * getActiveView * 获取当前数据表激活的视图 * * @returns {View} 激活的视图,未选中当前数据表时返回null */ getActiveView: () => View | null; /** * insertView * 插入视图 * * @param {ViewToInsert} view 视图配置 * @returns {View} 插入的视图对象 */ insertView: (view: ViewToInsert) => View; /** * updateView * 根据视图ID更新指定视图 * * @param {string} id 视图ID * @param {ViewToUpdate} view 视图配置 * @returns {View} 更新的视图对象 */ updateView: (id: string, view: ViewToUpdate) => View; /** * deleteView * 根据视图ID或视图名称删除指定视图 * * @param {string} idOrName 视图ID或视图名称 * @returns {Sheet} Sheet对象本身 */ deleteView: (idOrName: string) => Sheet; /** * 分片加载数据表记录 * @return {IGetRecordsResult} 分片加载结果 */ getRecordsAsync: (options: IGetRecordsOptions) => Promise<IGetRecordsResult>; /** * getRecordAsync * 获取指定ID的行记录 * * @param {string} recordId 指定的行记录ID * @returns {Promise<SheetRecord | null>} 指定ID的行记录,未找到记录时返回null */ getRecordAsync: (recordId: string) => Promise<SheetRecord | null>; /** * 批量更新数据表记录,(一次最多更新100条记录) * @param {RecordToUpdate[]} records 需要更新的记录列表 */ updateRecordsAsync: (records: RecordToUpdate[]) => Promise<void>; /** * deleteRecordsAsync * 批量删除行记录 * * @param {string[]} recordIds 指定的行记录ID列表 * @returns {string[]} 被删除的行记录ID列表 */ deleteRecordsAsync: (recordIds: string[]) => Promise<string[]>; /** * 插入新行记录 * @param {RecordToInsert[]} records 需要插入的记录列表 * @return {Promise<SheetRecord[]>} 插入的行记录列表 */ insertRecordsAsync: (records: RecordToInsert[]) => Promise<SheetRecord[]>; } export interface Field<T extends FieldType = FieldType> { /** * getType * 获取当前字段类型 * * @returns {T extends FieldType} 字段类型 */ getType: () => T; /** * getSheetId * 获取当前字段所属的数据表ID * * @returns {string} 数据表ID */ getSheetId: () => string; /** * getId * 获取当前字段ID * * @returns {string} 字段ID */ getId: () => string; /** * getName * 获取字段名称 * * @returns {string} 字段名称 */ getName: () => string; /** * getFieldValues * 获取整列字段值 * * @param {string} viewId 可选项,支持传入某个视图ID,根据视图获取字段值 * @returns {Promise<Record<string, unknown>>} 字段值 */ getFieldValues: (viewId?: string) => Promise<Record<string, Cell<T> | null>>; } export interface View { /** * 获取当前视图ID */ getId: () => string; /** * 转为表格视图 * @returns {GridView | null} 返回表格视图对象,如果当前视图不是表格视图则返回null */ asGridView: () => GridView | null; } export interface GridView { /** * 获取视图对应的的数据表id * * @returns {string} 数据表ID */ sheetId: string; /** * 获取视图名称 * @returns {string} 视图名称 */ getName: () => string; /** * 获取视图类型 * @returns {'Grid'} 视图类型,总是返回 'Grid' */ getType: () => 'Grid'; /** * 获取表格视图元信息 * @returns {IGridViewMeta} 包含视图ID、名称、类型和属性的元信息对象 */ getMeta: () => IGridViewMeta; /** * 获取可见字段的 ID 列表 * @returns {string[]} 可见字段ID数组 */ getVisibleFieldIdList: () => string[]; /** * 获取可见记录的 ID 列表 * @returns {Promise<string[]>} 可见记录ID数组 */ getVisibleRecordIdListAsync: () => Promise<string[]>; /** * 获取当前的筛选信息 * @returns {IFilterInfo | null} 筛选信息对象,如果没有筛选条件则返回 null */ getFilterInfo: () => IFilterInfo | null; /** * 新增筛选条件 * 注意:调用该 API 时,并不会保存修改的设置,如果需要保存则需要额外调用 view.applySetting() * @param {IAddFilterConditionParams} param 筛选条件参数,可以是单个条件或条件数组 * @returns {boolean} 是否新增成功 */ addFilterCondition: (param: IAddFilterConditionParams) => boolean; /** * 删除筛选条件 * 注意:调用该 API 时,并不会保存修改的设置,如果需要保存则需要额外调用 view.applySetting() * @param {string} conditionId 要删除的筛选条件ID(格式:fieldId_index) * @returns {boolean} 是否删除成功 */ deleteFilterCondition: (conditionId: string) => boolean; /** * 更新筛选条件 * 注意:调用该 API 时,并不会保存修改的设置,如果需要保存则需要额外调用 view.applySetting() * @param {IUpdateFilterConditionParams} param 更新参数,可以是单个条件或条件数组,需要包含 conditionId 来标识要更新的条件 * @returns {boolean} 是否更新成功 */ updateFilterCondition: (param: IUpdateFilterConditionParams) => boolean; /** * 设置筛选条件之间的关系 * 注意:调用该 API 时,并不会保存修改的设置,如果需要保存则需要额外调用 view.applySetting() * @param {FilterConjunction} conjunction 筛选条件连接方式,'and' 表示满足所有条件,'or' 表示满足任一条件 * @returns {boolean} 是否设置成功 */ setFilterConjunction: (conjunction: FilterConjunction) => boolean; /** * 将设置的分组/筛选/排序等视图配置提交,同步给其他用户 * @returns {void} */ applySetting: () => void; /** * 显示字段 * @param {string | string[]} fieldId 要显示的字段ID,可以是单个字段ID或字段ID数组 * @returns {boolean} 是否操作成功 */ showField: (fieldId: string | string[]) => boolean; /** * 隐藏字段 * @param {string | string[]} fieldId 要隐藏的字段ID,可以是单个字段ID或字段ID数组 * @returns {boolean} 是否操作成功 */ hideField: (fieldId: string | string[]) => boolean; /** * 获取字段宽度 * @param {string} fieldId 字段ID * @returns {number} 字段宽度(像素) */ getFieldWidth: (fieldId: string) => number; /** * 设置字段宽度 * @param {string} fieldId 字段ID * @param {number} width 字段宽度(像素),必须在最小宽度和最大宽度之间 * @returns {boolean} 是否设置成功 */ setFieldWidth: (fieldId: string, width: number) => boolean; /** * 获取所有字段的宽度映射 * @returns {FieldWidths} 字段名到宽度的映射对象 */ getFieldWidths: () => FieldWidths; /** * 批量设置字段宽度 * @param {FieldWidths} fieldWidths 字段名到宽度的映射对象 * @returns {GridView} 返回当前实例以支持链式调用 */ setFieldWidths: (fieldWidths: FieldWidths) => GridView; } export interface SheetRecord { /** * getSheetId * 获取记录所在的数据表id * * @returns {string} 记录所在数据表的ID */ getSheetId: () => string; /** * 获取记录id * getId * * @returns {string} 记录ID */ getId: () => string; /** * getLastModifiedTime * 获取记录最后更新时间 * * @returns {number} 最后更新时间(毫秒级UNIX时间戳) */ getLastModifiedTime: () => number; /** * getCreatedTime * 获取记录创建时间 * * @returns {number} 创建时间(毫秒级UNIX时间戳) */ getCreatedTime: () => number; /** * getCellValue * 获取指定字段的单元格值 * * @param {string} fieldIdOrName 指定字段ID或字段名称 * @returns {Cell | null} 返回指定单元格值 */ getCellValue: (fieldIdOrName: string) => Cell | null; /** * getCellValue * 获所有单元格值 * * @returns {Record<string, Cell>} 返回指定单元格值 */ getCellValues: () => Record<string, Cell>; } export interface IOpenUrl { text?: string; link: string; } export interface IOpenSingleSelect { /** 选项ID */ id: string; /** 选项名 */ name: string; } export type IOpenMultipleSelect = IOpenSingleSelect[]; export type IOpenAttachment = Array<{ type: string; filename: string; url: string; size?: number; resourceId?: string; }>; export type IOpenTimestamp = number; export interface IOpenLink { linkedRecordIds: string[]; } export type IOpenFormulaCellValue = Cell | Cell[]; interface CellMapBase { text: string; number: number; singleSelect: IOpenSingleSelect; multipleSelect: IOpenMultipleSelect; url: IOpenUrl; attachment: IOpenAttachment; currency: number; date: IOpenTimestamp; unidirectionalLink: IOpenLink; bidirectionalLink: IOpenLink; primaryDoc: string; } type CellMap = { [K in FieldType]: K extends keyof CellMapBase ? CellMapBase[K] : null; }; export type Cell<T extends FieldType = FieldType> = CellMap[T]; export interface IGetRecordsOptions { pageSize?: number; cursor?: string; /** 指定要加载的行记录ID */ recordIds?: string[]; /** 指定的视图ID */ viewId?: string; } export interface IGetRecordsResult { hasMore: boolean; cursor?: string; total: number; records: SheetRecord[]; } export interface RecordToUpdate { id: string; /** * 更新字段值 * key - 字段id或字段名称 */ fields: { [key: string]: string | number; }; } export interface TextField extends Field { /** * 获取指定记录的文本字段值 * @param recordId 记录ID * @returns 字段值或null */ getValueAsync: (recordId: string) => Promise<string | null>; /** * 设置指定记录的文本字段值 * @param recordId 记录ID * @param text 要设置的文本 * @returns 是否设置成功 */ setValueAsync: (recordId: string, text: string) => Promise<boolean>; } export interface NumberField extends Field { /** * 获取指定记录的数字字段值 * @param recordId 记录ID * @returns 字段值或null */ getValueAsync: (recordId: string) => Promise<number | null>; /** * 设置指定记录的数字字段值 * @param recordId 记录ID * @param num 要设置的数值 * @returns 是否设置成功 */ setValueAsync: (recordId: string, num: number) => Promise<boolean>; /** * 设置数字字段的格式化类型 * @param formatter 格式化类型 * @returns 字段ID */ setFormatter: (formatter: NumericalFormatter) => string; /** * 获取当前数字字段的格式化类型 * @returns 当前格式化类型 */ getFormatter: () => NumericalFormatter; } /** * 单选/多选字段的选项结构 */ export interface ISelectFieldOption { /** 选项ID */ id: string; /** 选项名称 */ name: string; /** 选项颜色(可选) */ color?: string; } /** * 选项配置 */ export type IOptionConfig = { /** 选项名称 */ name?: string; }; export interface SingleSelectField extends Field { /** * 新增一个选项 * @param name 选项名称 * @param color 选项颜色(可选) * @returns 字段ID */ addOption: (name: string, color?: number) => string; /** * 批量新增选项 * @param optionList 选项列表 * @returns 字段ID */ addOptions: (optionList: { name: string; color?: number; }[]) => string; /** * 获取所有选项 * @returns 选项数组 */ getOptions: () => ISelectFieldOption[]; /** * 删除指定选项 * @param idOrName 选项ID或名称 * @returns 字段ID */ deleteOptionAsync: (idOrName: string) => Promise<string>; /** * 更新指定选项配置 * @param nameOrId 选项名称或ID * @param config 选项配置 * @returns 字段ID */ setOptionAsync: (nameOrId: string, config: IOptionConfig) => Promise<string>; /** * 获取指定记录的选项值 * @param recordId 记录ID * @returns 选项对象或null */ getValueAsync: (recordId: string) => Promise<IOpenSingleSelect | null>; /** * 设置指定记录的选项值 * @param recordId 记录ID * @param optionId 选项ID * @returns 是否设置成功 */ setValueAsync: (recordId: string, optionId: string) => Promise<boolean>; } export interface MultipleSelectField extends Field { /** * 新增一个选项 * @param name 选项名称 * @param color 选项颜色(可选) * @returns 字段ID */ addOption: (name: string, color?: number) => string; /** * 批量新增选项 * @param optionList 选项列表 * @returns 字段ID */ addOptions: (optionList: { name: string; color?: number; }[]) => string; /** * 获取所有选项 * @returns 选项数组 */ getOptions: () => ISelectFieldOption[]; /** * 删除指定选项 * @param idOrName 选项ID或名称 * @returns 字段ID */ deleteOptionAsync: (idOrName: string) => Promise<string>; /** * 更新指定选项配置 * @param nameOrId 选项名称或ID * @param config 选项配置 * @returns 字段ID */ setOptionAsync: (nameOrId: string, config: IOptionConfig) => Promise<string>; /** * 获取指定记录的选项值 * @param recordId 记录ID * @returns 选项对象数组 */ getValueAsync: (recordId: string) => Promise<IOpenMultipleSelect>; /** * 设置指定记录的选项值 * @param recordId 记录ID * @param optionId 选项ID 或 选项ID数组 * @returns 是否设置成功 */ setValueAsync: (recordId: string, optionId: string | string[]) => Promise<boolean>; } export interface UrlField extends Field { /** * 获取指定记录的链接字段值 * @param recordId 记录ID * @returns 链接对象或null */ getValueAsync: (recordId: string) => Promise<IOpenUrl | null>; /** * 设置指定记录的链接字段值 * @param recordId 记录ID * @param url 链接对象或链接地址字符串 * @returns 是否设置成功 */ setValueAsync: (recordId: string, url: IOpenUrl | string) => Promise<boolean>; } export interface DateField extends Field { /** * 获取指定记录的日期字段值 * @param recordId 记录ID * @returns 时间戳或null */ getValueAsync: (recordId: string) => Promise<IOpenTimestamp | null>; /** * 设置指定记录的日期字段值 * @param recordId 记录ID * @param timestamp 时间戳 * @returns 是否设置成功 */ setValueAsync: (recordId: string, timestamp: IOpenTimestamp) => Promise<boolean>; /** * 获取当前日期字段的格式化类型 * @returns 当前格式化类型 */ getDateFormat: () => DateFormatter; /** * 设置日期字段的格式化类型 * @param format 格式化类型 * @returns 字段ID */ setDateFormat: (format: DateFormatter) => string; } export interface CurrencyField extends Field { /** * 获取指定记录的货币字段值 * @param recordId 记录ID * @returns 字段值或null */ getValueAsync: (recordId: string) => Promise<number | null>; /** * 设置指定记录的货币字段值 * @param recordId 记录ID * @param value 金额(数字或字符串) * @returns 是否设置成功 */ setValueAsync: (recordId: string, value: number | string) => Promise<boolean>; /** * 设置货币字段的小数位数 * @param decimalDigits 小数位数 * @returns 字段ID */ setDecimalDigits: (decimalDigits: number) => string; /** * 获取货币字段的小数位数 * @returns 小数位数 */ getDecimalDigits: () => number; /** * 设置货币字段的币种类型 * @param currencyType 币种类型 * @returns 字段ID */ setCurrencyType: (currencyType: CurrencyType) => string; /** * 获取货币字段的币种类型 * @returns 币种类型 */ getCurrencyType: () => CurrencyType; } export interface IOpenAttachmentFile { /** 文件名 */ name: string; /** 文件类型 */ type: string; /** 文件大小(字节) */ size: number; /** 文件内容,可以是base64字符串或ArrayBuffer */ content: string | ArrayBuffer; } export interface AttachmentField extends Field { /** * 设置指定记录的附件字段值 * @param recordId 记录ID * @param attachment 附件对象或附件对象数组 * @returns 是否设置成功 */ setValueAsync: (recordId: string, attachment: IOpenAttachmentFile | IOpenAttachmentFile[] | IOpenAttachment | IOpenAttachment[]) => Promise<boolean>; /** * 获取指定记录的附件字段值 * @param recordId 记录ID * @returns 附件对象数组或null */ getValueAsync: (recordId: string) => Promise<IOpenAttachment[] | null>; /** * 获取指定记录的附件字段值 * @param recordId 记录ID * @returns 附件对象数组或null */ getAttachmentUrls: (recordId: string) => Promise<string[]>; /** * 获取指定记录的附件详情 * @param recordId 记录ID * @returns 附件详情数组 */ getAttachmentDetails: (recordId: string) => Promise<Array<{ filename: string; type: string; url: string; }>>; } /** * 主文档字段接口 */ export interface PrimaryDocField extends Field { /** * 获取指定记录的主文档字段值 * @param recordId 记录ID * @returns 文本类型的单元格值或null */ getValueAsync: (recordId: string) => Promise<string | null>; /** * 设置指定记录的主文档字段值 * @param recordId 记录ID * @param text 要设置的文本内容 * @returns 是否设置成功 */ setValueAsync: (recordId: string, text: string) => Promise<boolean>; } /** * 单向关联字段接口 */ export interface UnidirectionalLinkField extends Field { /** * 获取指定记录的单向关联字段值 * @param recordId 记录ID * @returns 关联链接值或null */ getValueAsync: (recordId: string) => Promise<IOpenLink | null>; /** * 设置指定记录的单向关联字段值 * @param recordId 记录ID * @param value 要设置的关联链接值 * @returns 是否设置成功 */ setValueAsync: (recordId: string, value: IOpenLink) => Promise<boolean>; /** * 设置关联的数据表ID * @param sheetId 关联的数据表ID * @returns 字段ID */ setLinkedSheetId: (sheetId: string) => string; /** * 获取关联的数据表ID * @returns 关联的数据表ID */ getLinkedSheetId: () => string; /** * 设置是否允许多选 * @param multiple 是否允许多选 * @returns 字段ID */ setMultiple: (multiple: boolean) => string; /** * 获取是否允许多选 * @returns 是否允许多选 */ getMultiple: () => boolean; } /** * 双向关联字段接口 */ export interface BidirectionalLinkField extends Field { /** * 获取指定记录的双向关联字段值 * @param recordId 记录ID * @returns 关联链接值或null */ getValueAsync: (recordId: string) => Promise<IOpenLink | null>; /** * 设置指定记录的双向关联字段值 * @param recordId 记录ID * @param value 要设置的关联链接值 * @returns 是否设置成功 */ setValueAsync: (recordId: string, value: IOpenLink) => Promise<boolean>; /** * 设置关联的数据表ID * @param sheetId 关联的数据表ID * @returns 字段ID */ setLinkedSheetId: (sheetId: string) => string; /** * 获取关联的数据表ID * @returns 关联的数据表ID */ getLinkedSheetId: () => string; /** * 设置是否允许多选 * @param multiple 是否允许多选 * @returns 字段ID */ setMultiple: (multiple: boolean) => string; /** * 获取是否允许多选 * @returns 是否允许多选 */ getMultiple: () => boolean; } /** * 公式字段接口 */ export interface FormulaField extends Field { /** * 获取指定记录的公式字段值 * @param recordId 记录ID * @returns 公式字段值或null */ getValueAsync: (recordId: string) => Promise<IOpenFormulaCellValue | null>; } /** * 关联引用接口 */ export interface LookupField extends Field { /** * 获取指定记录的关联引用字段值 * @param recordId 记录ID * @returns 关联引用字段值或null */ getValueAsync: (recordId: string) => Promise<IOpenFormulaCellValue | null>; } /** * 查找引用字段接口 */ export interface FilterUpField extends Field { /** * 获取指定记录的查找引用字段值 * @param recordId 记录ID * @returns 查找引用字段值或null */ getValueAsync: (recordId: string) => Promise<IOpenFormulaCellValue | null>; } /** * 操作符映射表,将外部API操作符映射为内部Filter操作符 */ export declare const OPERATOR_MAP: Record<FilterOperator, string>; export {};