import { defHttp } from '#/api/request';
|
|
export type WatermarkType = 'BARCODE' | 'IMAGE' | 'TEXT';
|
export type WatermarkScene = 'DOWNLOAD' | 'PREVIEW' | 'PRINT';
|
export type WatermarkVersionScope = 'ALL' | 'CURRENT';
|
export type WatermarkLayout = 'POSITION' | 'TILED';
|
export type WatermarkHorizontalAlign = 'CENTER' | 'LEFT' | 'RIGHT';
|
export type WatermarkVerticalAlign = 'BOTTOM' | 'MIDDLE' | 'TOP';
|
|
export interface WatermarkPosition {
|
landscapeXMm: number;
|
landscapeYMm: number;
|
paperHeightMm: number;
|
paperType: string;
|
paperWidthMm: number;
|
portraitXMm: number;
|
portraitYMm: number;
|
}
|
|
export interface WatermarkConfig {
|
barcodeFormat?: 'CODE_128' | 'QR_CODE';
|
contentTemplate?: string;
|
createdAt?: string;
|
enabled: boolean;
|
enterpriseId?: string;
|
enterpriseName: string;
|
fontColor?: string;
|
fontFamily?: string;
|
fontSize: number;
|
horizontalAlign?: WatermarkHorizontalAlign;
|
id?: string;
|
imageUrl?: string;
|
layoutMode: WatermarkLayout;
|
loadScenes: WatermarkScene[];
|
watermarkBusinessTypes: string[];
|
markHeightMm: number;
|
markWidthMm: number;
|
name: string;
|
opacity: number;
|
positions: WatermarkPosition[];
|
repeatSpacingXMm?: number;
|
repeatSpacingYMm?: number;
|
revision?: number;
|
rotationAngle: number;
|
showBarcodeText: boolean;
|
updatedAt?: string;
|
versionScope: WatermarkVersionScope;
|
verticalAlign?: WatermarkVerticalAlign;
|
watermarkType: WatermarkType;
|
}
|
|
export interface WatermarkQuery {
|
currentPage: number;
|
enabled?: boolean;
|
enterpriseId?: string;
|
keyword?: string;
|
pageSize: number;
|
watermarkType?: WatermarkType;
|
}
|
|
interface ApiResult<T> {
|
code: number;
|
data: T;
|
msg?: string;
|
}
|
interface PageResult<T> {
|
list: T[];
|
pagination: { currentPage: number; pageSize: number; total: number };
|
}
|
|
const prefix = '/api/dms/watermarks';
|
const silent = { errorMessageMode: 'none' as const };
|
|
export const getWatermarkPage = (params: WatermarkQuery) => defHttp.get<ApiResult<PageResult<WatermarkConfig>>>({ url: prefix, params }, silent);
|
export const getWatermarkDetail = (id: string) => defHttp.get<ApiResult<WatermarkConfig>>({ url: `${prefix}/${id}` }, silent);
|
export const createWatermark = (data: WatermarkConfig) => defHttp.post<ApiResult<WatermarkConfig>>({ url: prefix, data }, silent);
|
export const updateWatermark = (id: string, data: WatermarkConfig) => defHttp.put<ApiResult<WatermarkConfig>>({ url: `${prefix}/${id}`, data }, silent);
|
export const setWatermarkEnabled = (id: string, revision: number, enabled: boolean) =>
|
defHttp.put<ApiResult<WatermarkConfig>>({ url: `${prefix}/${id}/enabled`, data: { enabled, revision } }, silent);
|
export const deleteWatermark = (id: string, revision: number) =>
|
defHttp.delete<ApiResult<WatermarkConfig>>({ url: `${prefix}/${id}`, params: { revision } }, silent);
|
|
export interface WatermarkFont {
|
displayName: string;
|
family: string;
|
}
|
|
export const getWatermarkFonts = () => defHttp.get<ApiResult<WatermarkFont[]>>({ url: '/api/file/Dms/Watermark/fonts' }, silent);
|
|
export const getWatermarkPreview = (paperWidthMm: number, paperHeightMm: number, config: WatermarkConfig, content: string) =>
|
defHttp.post<Blob>(
|
{
|
url: '/api/file/Dms/Watermark/preview',
|
responseType: 'blob',
|
data: { paperWidthMm, paperHeightMm, watermark: { ...config, content, barcodeText: content } },
|
},
|
{ ...silent, isTransformResponse: false },
|
);
|