169 lines
6.5 KiB
JavaScript
169 lines
6.5 KiB
JavaScript
/**
|
|
入驻小区
|
|
**/
|
|
|
|
//import {initScene,add3DObject} from 'api/3d/sceneApi.js';
|
|
import Scene3d from 'api/3d/Scene3d.js'
|
|
(function (vc) {
|
|
vc.extends({
|
|
data: {
|
|
dtSceneSettingInfo: {
|
|
scene: {},
|
|
modal: 'translate',
|
|
object: {},
|
|
sceneId: '',
|
|
communityId: '',
|
|
}
|
|
},
|
|
_initMethod: function () {
|
|
$that.dtSceneSettingInfo.sceneId = vc.getParam('sceneId');
|
|
$that.dtSceneSettingInfo.communityId = vc.getParam('communityId');
|
|
|
|
let _scene = new Scene3d('webgl-scene');
|
|
$that.dtSceneSettingInfo.scene = _scene;
|
|
|
|
_scene.setSelect3DObject(function (_object) {
|
|
vc.emit('dtSceneSetting', 'controlObject', _object);
|
|
});
|
|
$that._listDtScenes();
|
|
},
|
|
_initEvent: function () {
|
|
vc.on('dtSceneSetting', 'addModal', function (_modal) {
|
|
if (_modal.path == 'AmbientLight') {
|
|
$that.dtSceneSettingInfo.scene.initLight();
|
|
return;
|
|
}
|
|
if (_modal.path.indexOf('.hdr') > 0) {
|
|
$that.dtSceneSettingInfo.scene.addHdrBackgroup(_modal);
|
|
return;
|
|
}
|
|
if (_modal.path.indexOf('.jpg') > 0) {
|
|
$that.dtSceneSettingInfo.scene.addJpgBackgroup(_modal);
|
|
return;
|
|
}
|
|
$that.dtSceneSettingInfo.scene.addGltfObject(_modal);
|
|
//$that.dtSceneSettingInfo.scene.add3DBox(_modal);
|
|
});
|
|
vc.on('dtSceneSetting', 'deleteModal', function (_object) {
|
|
$that.dtSceneSettingInfo.scene.deleteObject(_object);
|
|
|
|
});
|
|
vc.on('dtSceneSetting', 'setModal', function (_modal) {
|
|
$that.dtSceneSettingInfo.modal = _modal;
|
|
$that.dtSceneSettingInfo.scene.setTransformControlModal(_modal);
|
|
});
|
|
vc.on('dtSceneSetting', 'getAllObject', function (_objects) {
|
|
let _objs = $that.dtSceneSettingInfo.scene.getAllObject();
|
|
_objs.forEach(_o => {
|
|
_objects.push(_o);
|
|
});
|
|
vc.emit('sceneModal', 'notifyObjects', $that.dtSceneSettingInfo.scene.getObjectTree());
|
|
});
|
|
|
|
vc.on('dtSceneSetting', 'controlObject', function (_object) {
|
|
_object = $that.dtSceneSettingInfo.scene.getObject(_object.id);
|
|
$that.dtSceneSettingInfo.object = _object;
|
|
vc.emit('curModal', 'setModalData', {
|
|
name: _object.name,
|
|
position: _object.position,
|
|
object: _object
|
|
});
|
|
$that.dtSceneSettingInfo.scene.setTransformControlModal($that.dtSceneSettingInfo.modal);
|
|
$that.dtSceneSettingInfo.scene.controlObject(_object);
|
|
});
|
|
vc.on('dtSceneSetting', 'saveScene', function () {
|
|
$that.dtSceneSettingInfo.scene.exporterGlb().then(_obj => {
|
|
$that._saveSceneJson(_obj);
|
|
})
|
|
});
|
|
},
|
|
methods: {
|
|
_saveSceneJson: function (blob) {
|
|
let param = new FormData();
|
|
param.append("uploadFile", blob);
|
|
//发送get请求
|
|
vc.http.upload('/upload/uploadFile',
|
|
param, {
|
|
emulateJSON: true,
|
|
//添加请求头
|
|
headers: {
|
|
"Content-Type": "multipart/form-data"
|
|
},
|
|
progress: function (event) {
|
|
let rate = event.loaded / event.total; //已上传的比例
|
|
if (rate < 0.9) {
|
|
//this.uploadFileInfo.progress = (rate * 100).toFixed(2);
|
|
}
|
|
}
|
|
},
|
|
function (json, res) {
|
|
let _json = JSON.parse(json);
|
|
_json = _json.data;
|
|
$that._updateScene(_json.url);
|
|
},
|
|
function (errInfo, error) {
|
|
console.log('请求失败处理', error);
|
|
vc.toast("上传文件失败");
|
|
});
|
|
},
|
|
_updateScene: function (_url) {
|
|
if (!_url) {
|
|
return;
|
|
}
|
|
let _data = {
|
|
sceneId: vc.getParam('sceneId'),
|
|
communityId: vc.getParam('communityId'),
|
|
modalJson: _url
|
|
}
|
|
vc.http.apiPost(
|
|
'/dtScene.updateDtScene',
|
|
JSON.stringify(_data),
|
|
{
|
|
emulateJSON: true
|
|
},
|
|
function (json, res) {
|
|
let _json = JSON.parse(json);
|
|
vc.toast(_json.msg);
|
|
if (_json.code == 0) {
|
|
//关闭model
|
|
window.close();
|
|
return;
|
|
}
|
|
},
|
|
function (errInfo, error) {
|
|
console.log('请求失败处理');
|
|
vc.toast(errInfo);
|
|
});
|
|
},
|
|
_listDtScenes: function () {
|
|
let _scene = $that.dtSceneSettingInfo.scene;
|
|
let param = {
|
|
params: {
|
|
page: 1,
|
|
row: 1,
|
|
communityId: $that.dtSceneSettingInfo.communityId,
|
|
sceneId: $that.dtSceneSettingInfo.sceneId,
|
|
}
|
|
};
|
|
let _url = "";
|
|
//发送get请求
|
|
vc.http.apiGet('/dtScene.listDtScene',
|
|
param,
|
|
function (json, res) {
|
|
let _json = JSON.parse(json);
|
|
_url = _json.data[0].modalJson;
|
|
if (_url.indexOf('http') < 0) {
|
|
return;
|
|
}
|
|
_scene.addGltfObject({
|
|
path: _url
|
|
})
|
|
|
|
}, function (errInfo, error) {
|
|
console.log('请求失败处理');
|
|
}
|
|
);
|
|
},
|
|
}
|
|
});
|
|
})(window.vc); |