123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- import axios from './instance'
- import {
- MODEL_LIST,
- INSERT_MODEL,
- UPDATE_MODEL,
- DELETE_MODEL,
- UPLOAD_HEADS
- } from './constant'
- export enum ModelType {
- SWKK = 'swkk',
- SWKJ = 'swkj',
- SWMX = 'glb',
- SWSS = 'laser',
- OSGB = 'obsg',
- B3DM = 'b3dm'
- }
- export const ModelTypeDesc: Record<ModelType, string> = {
- [ModelType.SWKK]: '四维看看',
- [ModelType.SWKJ]: '四维看见',
- [ModelType.SWSS]: '四维深时',
- [ModelType.SWMX]: '三维模型',
- [ModelType.OSGB]: 'osgb模型',
- [ModelType.B3DM]: 'b3dm模型'
- }
- export interface ModelAttrs {
- show: boolean,
- scale: number,
- opacity: number,
- bottom: number,
- position: SceneLocalPos,
- rotation: SceneLocalPos
- }
- export interface Model extends ModelAttrs {
- id: string
- url: Array<string>
- title: string
- fusionId?: number,
- type: ModelType
- isSelf: boolean
- size: number,
- time: string
- }
- interface ServiceModel {
- createTime: string,
- id: number,
- hide: number,
- modelDateType: string
- modelUrl: string
- fusionId?: number,
- modelSize: number
- modelTitle: string
- opacity: number
- bottom: number
- type: number
- transform: {
- position: SceneLocalPos,
- rotation: SceneLocalPos,
- scale: [number, number, number]
- }
- }
- const serviceToLocal = (serviceModel: ServiceModel): Model => ({
- show: !serviceModel.hide,
- scale: serviceModel.transform.scale[0],
- opacity: serviceModel.opacity || 1,
- isSelf: serviceModel.type !== 3,
- bottom: serviceModel.bottom || 0,
- position: serviceModel.transform.position,
- rotation: serviceModel.transform.rotation,
- id: serviceModel.id.toString(),
- url: [serviceModel.modelUrl],
- title: serviceModel.modelTitle,
- fusionId: serviceModel.fusionId,
- type: serviceModel.modelDateType === 'osgb' ? ModelType.OSGB : serviceModel.modelDateType === 'b3dm' ? ModelType.B3DM : serviceModel.type === 2 ? ModelType.SWMX : ModelType.SWMX,
- size: serviceModel.modelSize,
- time: serviceModel.createTime
- })
- const localToService = (model: Model): ServiceModel => ({
- createTime: model.time,
- id: Number(model.id),
- hide: Number(!model.show),
- fusionId: model.fusionId,
- modelDateType: model.type,
- modelUrl: model.url[0],
- type: model.type === ModelType.SWSS ? 2 : 3,
- modelSize: model.size,
- modelTitle: model.title,
- opacity: model.opacity,
- bottom: model.bottom,
- transform: {
- position: model.position,
- rotation: model.rotation,
- scale: [model.scale, model.scale, model.scale]
- }
- })
- export type Models = Model[]
- export const fetchModels = async () => {
- const serviceModels = await axios.post<ServiceModel[]>(MODEL_LIST)
- return serviceModels.map(serviceToLocal)
- }
- export const postAddModel = async (file: File) => {
- const form = new FormData()
- form.append('file', file)
- const serviceModel = await axios<ServiceModel>({
- url: INSERT_MODEL,
- method: 'POST',
- headers: { ...UPLOAD_HEADS },
- data: form
- })
- return serviceToLocal(serviceModel)
- }
- export const postUpdateModels = (model: Model) => {
- console.log('update', model)
- return axios.post<undefined>(UPDATE_MODEL, localToService(model))
- }
-
- export const postDeleteModel = (id: Model['id']) => {
- console.log('delete')
- return axios.post<undefined>(DELETE_MODEL, {ids: [id]})
- }
-
|