123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import axios from './instance'
- import {
- TAGGING_POINT_LIST,
- DELETE_TAGGING_POINT,
- UPDATE_TAGGING_POINT,
- INSERT_TAGGING_POINT
- } from './constant'
- import type { FuseModel } from './fuse-model'
- import type { Tagging } from './tagging'
- import { Tagging3DProps } from '@/sdk'
- interface ServicePosition {
- "tagPointId": number,
- "tagId": number,
- "fusionNumId": number
- "modelId"?: number
- "tagPoint": string,
- normal: string
-
- show3dTitle: number
- type: string,
- mat: string
- fontSize: number,
- lineHeight: number,
- visibilityRange: number
- }
- export enum TaggingPositionType {
- '2d' = '2d',
- '3d' = '3d'
- }
- export interface TaggingPosition {
- id: string,
- taggingId: Tagging['id']
- modelId: FuseModel['id']
- normal: SceneLocalPos,
- localPos: SceneLocalPos
- fontSize: number,
- lineHeight: number,
- globalVisibility: boolean
- visibilityRange: number
- type: TaggingPositionType
- mat: Tagging3DProps['mat']
- }
- export type TaggingPositions = TaggingPosition[]
- const serviceToLocal = (position: ServicePosition, taggingId?: Tagging['id']): TaggingPosition => ({
- id: position.tagPointId.toString(),
- modelId: position.fusionNumId ? position.fusionNumId.toString() : position.modelId ? position.modelId.toString() : '123123',
- taggingId: taggingId || position.tagId.toString(),
- localPos: JSON.parse(position.tagPoint),
- type: (position.type || TaggingPositionType['2d']) as TaggingPositionType,
- globalVisibility: Boolean(position.show3dTitle),
- normal: position.normal ? JSON.parse(position.normal) : { x: 0, y: 0, z: 1 },
- mat: position.mat ? JSON.parse(position.mat) : {
- scale: 1,
- rotation: 0
- },
- visibilityRange: position.visibilityRange || 30,
- fontSize: position.fontSize || 12,
- lineHeight: position.lineHeight || 1,
- })
- const localToService = (position: TaggingPosition, update = false): PartialProps<ServicePosition, 'tagPointId'> => ({
- "tagPointId": update ? Number(position.id) : undefined,
- "tagId": Number(position.taggingId),
- "fusionNumId": Number(position.modelId),
- "tagPoint": JSON.stringify(position.localPos),
- show3dTitle: Number(position.globalVisibility),
- type: position.type,
- mat: position.mat && JSON.stringify(position.mat),
- normal: JSON.stringify(position.normal),
- fontSize: position.fontSize,
- lineHeight: position.lineHeight,
- visibilityRange: position.visibilityRange
- })
- export const fetchTaggingPositions = async (taggingId: Tagging['id']) => {
- const positions = await axios.get<ServicePosition[]>(`${TAGGING_POINT_LIST}`, {params: { tagId: taggingId } })
- return positions.map(position => serviceToLocal(position, taggingId))
- }
- export const postAddTaggingPosition = async (position: TaggingPosition) => {
- const servicePosition = await axios.post<ServicePosition>(INSERT_TAGGING_POINT, localToService(position))
- return serviceToLocal(servicePosition)
- }
- export const postUpdateTaggingPosition = (position: TaggingPosition) => {
- return axios.post<undefined>(UPDATE_TAGGING_POINT, localToService(position, true))
- }
-
- export const postDeleteTaggingPosition = (position: TaggingPosition) => {
- return axios.post<undefined>(DELETE_TAGGING_POINT, { tagPointId: Number(position.id) })
- }
-
|