|
@@ -3,12 +3,13 @@ import {
|
|
|
MODEL_LIST,
|
|
|
INSERT_MODEL,
|
|
|
UPDATE_MODEL,
|
|
|
- DELETE_MODEL
|
|
|
+ DELETE_MODEL,
|
|
|
+ UPLOAD_HEADS
|
|
|
} from './constant'
|
|
|
|
|
|
export enum ModelType {
|
|
|
- SWKK,
|
|
|
- SWKJ,
|
|
|
+ SWKK = 'swkk',
|
|
|
+ SWKJ = 'swkj',
|
|
|
SWMX = 'glb',
|
|
|
SWSS = 'laser',
|
|
|
}
|
|
@@ -25,22 +26,76 @@ export interface ModelAttrs {
|
|
|
scale: number,
|
|
|
opacity: number,
|
|
|
bottom: number,
|
|
|
- position: { x: number, y: number, z: number },
|
|
|
- rotation: { x: number, y: number, z: number }
|
|
|
+ position: SceneLocalPos,
|
|
|
+ rotation: SceneLocalPos
|
|
|
}
|
|
|
export interface Model extends ModelAttrs {
|
|
|
id: string
|
|
|
url: string
|
|
|
title: string
|
|
|
+ fusionId?: number,
|
|
|
type: ModelType
|
|
|
size: number,
|
|
|
time: string
|
|
|
}
|
|
|
|
|
|
+interface ServiceModel {
|
|
|
+ createTime: string,
|
|
|
+ id: number,
|
|
|
+ hide: number,
|
|
|
+ modelDateType: string
|
|
|
+ modelGlbUrl: string
|
|
|
+ fusionId?: number,
|
|
|
+ modelSize: number
|
|
|
+ modelTitle: string
|
|
|
+ opacity: number
|
|
|
+ bottom: 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,
|
|
|
+ bottom: serviceModel.bottom,
|
|
|
+ position: serviceModel.transform.position,
|
|
|
+ rotation: serviceModel.transform.rotation,
|
|
|
+ id: serviceModel.id.toString(),
|
|
|
+ url: serviceModel.modelGlbUrl,
|
|
|
+ title: serviceModel.modelTitle,
|
|
|
+ fusionId: serviceModel.fusionId,
|
|
|
+ type: 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,
|
|
|
+ modelGlbUrl: model.url,
|
|
|
+ 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 () => {
|
|
|
- // axios.post<Models>(MODEL_LIST)
|
|
|
+ const serviceModels = await axios.post<ServiceModel[]>(MODEL_LIST)
|
|
|
+ return serviceModels.map(serviceToLocal)
|
|
|
return [
|
|
|
{
|
|
|
id: '123',
|
|
@@ -49,10 +104,10 @@ export const fetchModels = async () => {
|
|
|
title: 'SS-t-7DUfWAUZ3V',
|
|
|
size: 1000,
|
|
|
time: '2012-02-05',
|
|
|
- scale: 1,
|
|
|
rotation: { x: 1, y: 1, z: 1},
|
|
|
position: { x: 1, y: 1, z: 1},
|
|
|
opacity: 0.1,
|
|
|
+ scale: 1,
|
|
|
bottom: 1,
|
|
|
show: false
|
|
|
},
|
|
@@ -73,14 +128,22 @@ export const fetchModels = async () => {
|
|
|
]
|
|
|
}
|
|
|
|
|
|
-export const postAddModel = (model: Model) => {
|
|
|
- console.log('add')
|
|
|
- return axios.post<Model>(INSERT_MODEL, model)
|
|
|
+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')
|
|
|
- return axios.post<undefined>(UPDATE_MODEL, model)
|
|
|
+ console.log('update', model)
|
|
|
+ return axios.post<undefined>(UPDATE_MODEL, localToService(model))
|
|
|
}
|
|
|
|
|
|
|