Files
PropertyDeployment/resources/Web/MicroCommunityIotWeb/html/pages/3d/dtSceneSetting/dtSceneSetting.js
2025-12-09 20:22:03 +08:00

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);