whx 7 months ago
parent
commit
2530697914
46 changed files with 1036 additions and 278 deletions
  1. 10 0
      virgo.wzfrontend/console/package-lock.json
  2. 2 0
      virgo.wzfrontend/console/package.json
  3. 144 131
      virgo.wzfrontend/console/src/components/system/level/deviceLevel.vue
  4. 56 0
      virgo.wzfrontend/console/src/components/work/common/modelDown.vue
  5. 35 0
      virgo.wzfrontend/console/src/components/work/common/threeModel.vue
  6. 65 0
      virgo.wzfrontend/console/src/components/work/property/goDownForm.vue
  7. 100 0
      virgo.wzfrontend/console/src/components/work/property/propertyGoDown.vue
  8. 122 0
      virgo.wzfrontend/console/src/components/work/property/propertySet.vue
  9. 12 1
      virgo.wzfrontend/console/src/config/field.js
  10. 59 1
      virgo.wzfrontend/console/src/httpApi/property.js
  11. 356 0
      virgo.wzfrontend/console/src/uitls/threeControls.js
  12. 40 124
      virgo.wzfrontend/console/src/views/work/property/set.vue
  13. 1 1
      virgo.wzfrontend/src/main/resources/static/console/index.html
  14. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/css/1037.6f1748c4.css
  15. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/3065.e719da7b.css
  16. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/843.e719da7b.css
  17. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/css/8446.6f1748c4.css
  18. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/103.7b3bcb80.js
  19. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1037-legacy.81f251f9.js
  20. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/1361.d9208ab7.js
  21. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1703-legacy.f697591b.js
  22. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1703.c226170f.js
  23. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/2803-legacy.2eaea7fc.js
  24. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/3065.2823a7d9.js
  25. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/3620-legacy.5704c046.js
  26. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/3620.ba1bc073.js
  27. 7 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/4292.36a273d4.js
  28. 7 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/4601-legacy.8f27bd47.js
  29. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/4767.6f59e8e3.js
  30. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/4767.a0380d29.js
  31. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/494-legacy.fdd6f246.js
  32. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/494.f861d51b.js
  33. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/6264-legacy.1f42bee1.js
  34. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/7141-legacy.d7665ab5.js
  35. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/7383-legacy.ddfacac3.js
  36. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/7431-legacy.056e186a.js
  37. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/7431.9f9f9ef2.js
  38. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/7694.1c760abe.js
  39. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/843-legacy.a3136f8e.js
  40. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/8446.c56c2aae.js
  41. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/867.2df21ee7.js
  42. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/97-legacy.b338c86f.js
  43. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/app-legacy.b5aa910c.js
  44. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/app-legacy.c267b54d.js
  45. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/app.766ab57e.js
  46. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/app.7b90210e.js

+ 10 - 0
virgo.wzfrontend/console/package-lock.json

@@ -13377,6 +13377,11 @@
 				}
 			}
 		},
+		"three": {
+			"version": "0.145.0",
+			"resolved": "https://registry.npmmirror.com/three/-/three-0.145.0.tgz",
+			"integrity": "sha512-EKoHQEtEJ4CB6b2BGMBgLZrfwLjXcSUfoI/MiIXUuRpeYsfK5aPWbYhdtIVWOH+x6X0TouldHKHBuc/LAiFzAw=="
+		},
 		"throttle-debounce": {
 			"version": "1.1.0",
 			"resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
@@ -13591,6 +13596,11 @@
 				"safe-buffer": "^5.0.1"
 			}
 		},
+		"tweenjs": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmmirror.com/tweenjs/-/tweenjs-1.0.2.tgz",
+			"integrity": "sha512-WnFozCNkUkmJtLqJyGrToxVojW2Srzudktr8BzFKQijQRVcmlq7Fc+qfo75ccnwIJGiRWbXKfg7qU67Tzbb1bg=="
+		},
 		"tweetnacl": {
 			"version": "0.14.5",
 			"resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz",

+ 2 - 0
virgo.wzfrontend/console/package.json

@@ -21,6 +21,8 @@
 		"svg-sprite-loader": "^6.0.11",
 		"swiper": "^5.4.5",
 		"terser-webpack-plugin": "^3.0.1",
+		"three": "^0.145.0",
+		"tweenjs": "^1.0.2",
 		"vue": "^2.6.10",
 		"vue-organization-chart": "^1.1.6",
 		"vue-router": "^3.1.3",

+ 144 - 131
virgo.wzfrontend/console/src/components/system/level/deviceLevel.vue

@@ -1,132 +1,145 @@
-<template>
-	<div class="device-level hui-flex">
-		<div class="hui-chart-title">
-			设备类型 <i class="iconfont huifont-xinzeng" @click="insert(-1)"></i>
-		</div>
-		<div class="hui-flex-box">
-			<el-tree :data="list" :props="defaultProps" default-expand-all>
-				<div class="tree-node" slot-scope="{ node, data }">
-					<span class="tree-node-label">{{ data.name }}-{{ data.sign }}</span>
-					<div class="tree-node-operation">
-						<i class="iconfont huifont-xinzeng" @click.stop="insert(data.id)"></i>
-						<i class="iconfont huifont-bianji" @click.stop="update(data)"></i>
-						<i class="iconfont huifont-shanchu" @click.stop="deleteModel(data.id)"></i>
-					</div>
-				</div>
-			</el-tree>
-			<el-dialog :close-on-click-modal="false" :title="form.id?'编辑':'新增'" :visible.sync="dialogVisible" width="900px" :append-to-body="true">
-				<div class="hui-flex hui-dialog">
-					<div class="hui-flex-box hui-dialog-content">
-						<el-form ref="form" :model="form" label-position="top">
-							<el-form-item label="层级名称">
-								<el-input v-model="form.name"></el-input>
-							</el-form-item>
-							<el-form-item label="层级标识">
-								<el-input v-model="form.sign"></el-input>
-							</el-form-item>
-							<el-form-item label="层级描述" class="hui-textarea">
-								<el-input type="textarea" v-model="form.remark" placeholder="请输入层级描述" resize="none">
-								</el-input>
-							</el-form-item>
-						</el-form>
-					</div>
-					<div class="hui-dialog-submit">
-						<el-button size="medium" @click="dialogVisible = false">取 消</el-button>
-						<el-button size="medium" type="primary" @click="submit">保 存</el-button>
-					</div>
-				</div>
-			</el-dialog>
-		</div>
-	</div>
-</template>
-
-<script>
-	import {
-		getDeviceModel,
-		getDeviceModelById,
-		insertDeviceModel,
-		updateDeviceModel,
-		deleteDeviceModel
-	} from '@/httpApi/system'
-	export default {
-		data() {
-			return {
-				list: [],
-				defaultProps: {
-					label: 'name'
-				},
-				dialogVisible: false,
-				form: {
-					parentId: '',
-					name: '',
-					sign: '',
-					remark: '',
-					isp: 1
-				}
-			}
-		},
-		created() {
-			this.init();
-		},
-		methods: {
-			init() {
-				getDeviceModel().then(res => {
-					if (res.state) {
-						this.list = res.data;
-					}
-				})
-			},
-			insert(id) {
-				this.form = {
-					name: '',
-					sign: '',
-					remark: '',
-					parentId: id,
-					isp: 1
-				}
-				this.dialogVisible = true;
-			},
-			update(data) {
-				this.form = JSON.parse(JSON.stringify(data));
-				this.dialogVisible = true;
-			},
-			submit() {
-				this.form.id ? updateDeviceModel(this.form).then(this.successFunc) : insertDeviceModel(this.form).then(this
-					.successFunc);
-			},
-			successFunc(res) {
-				if (res.state) {
-					this.$message.success('操作成功');
-					this.init();
-					this.dialogVisible = false;
-				}
-			},
-			deleteModel(id) {
-				this.$confirm('确定要删除该层级?', () => {
-					deleteDeviceModel(id).then(res => {
-						if (res.state) {
-							this.init();
-							this.$message.success('操作成功');
-						}
-					})
-				});
-			},
-		},
-	}
-</script>
-
-<style lang="scss">
-	.device-level {
-		padding: 10px;
-		background: rgba(0, 4, 10, 0.3);
-
-		.tree-node-operation {
-			display: flex;
-			align-items: center;
-		}
-
-		.huifont-xinzeng {
-			font-size: 14px;
-		}
-	}
+<template>
+	<div class="device-level hui-flex">
+		<div class="hui-chart-title">
+			设备类型 <i class="iconfont huifont-xinzeng" @click="insert(-1)"></i>
+		</div>
+		<div class="hui-flex-box">
+			<el-tree :data="list" :props="defaultProps" default-expand-all>
+				<div class="tree-node" slot-scope="{ node, data }">
+					<span class="tree-node-label">{{ data.name }}-{{ data.sign }}</span>
+					<div class="tree-node-operation">
+						<i class="iconfont huifont-moxingguanli" v-if="data.children.length === 0"
+							@click.stop="modelVisible = true">
+						</i>
+						<i class="iconfont huifont-xinzeng" @click.stop="insert(data.id)"></i>
+						<i class="iconfont huifont-bianji" @click.stop="update(data)"></i>
+						<i class="iconfont huifont-shanchu" @click.stop="deleteModel(data.id)"></i>
+					</div>
+				</div>
+			</el-tree>
+			<el-dialog :close-on-click-modal="false" :title="form.id?'编辑':'新增'" :visible.sync="dialogVisible"
+				width="900px" :append-to-body="true">
+				<div class="hui-flex hui-dialog">
+					<div class="hui-flex-box hui-dialog-content">
+						<el-form ref="form" :model="form" label-position="top">
+							<el-form-item label="层级名称">
+								<el-input v-model="form.name"></el-input>
+							</el-form-item>
+							<el-form-item label="层级标识">
+								<el-input v-model="form.sign"></el-input>
+							</el-form-item>
+							<el-form-item label="层级描述" class="hui-textarea">
+								<el-input type="textarea" v-model="form.remark" placeholder="请输入层级描述" resize="none">
+								</el-input>
+							</el-form-item>
+						</el-form>
+					</div>
+					<div class="hui-dialog-submit">
+						<el-button size="medium" @click="dialogVisible = false">取 消</el-button>
+						<el-button size="medium" type="primary" @click="submit">保 存</el-button>
+					</div>
+				</div>
+			</el-dialog>
+			<el-dialog :close-on-click-modal="false" title="模型列表" :visible.sync="modelVisible" width="900px"
+				:append-to-body="true">
+				<model-down v-if="modelVisible"></model-down>
+			</el-dialog>
+		</div>
+	</div>
+</template>
+
+<script>
+	import {
+		getDeviceModel,
+		getDeviceModelById,
+		insertDeviceModel,
+		updateDeviceModel,
+		deleteDeviceModel
+	} from '@/httpApi/system'
+	import modelDown from '@/components/work/common/modelDown'
+	export default {
+		data() {
+			return {
+				list: [],
+				defaultProps: {
+					label: 'name'
+				},
+				dialogVisible: false,
+				form: {
+					parentId: '',
+					name: '',
+					sign: '',
+					remark: '',
+					isp: 1
+				},
+				modelVisible: false
+			}
+		},
+		created() {
+			this.init();
+		},
+		components: {
+			modelDown
+		},
+		methods: {
+			init() {
+				getDeviceModel().then(res => {
+					if (res.state) {
+						this.list = res.data;
+					}
+				})
+			},
+			insert(id) {
+				this.form = {
+					name: '',
+					sign: '',
+					remark: '',
+					parentId: id,
+					isp: 1
+				}
+				this.dialogVisible = true;
+			},
+			update(data) {
+				this.form = JSON.parse(JSON.stringify(data));
+				this.dialogVisible = true;
+			},
+			submit() {
+				this.form.id ? updateDeviceModel(this.form).then(this.successFunc) : insertDeviceModel(this.form).then(this
+					.successFunc);
+			},
+			successFunc(res) {
+				if (res.state) {
+					this.$message.success('操作成功');
+					this.init();
+					this.dialogVisible = false;
+				}
+			},
+			deleteModel(id) {
+				this.$confirm('确定要删除该层级?', () => {
+					deleteDeviceModel(id).then(res => {
+						if (res.state) {
+							this.init();
+							this.$message.success('操作成功');
+						}
+					})
+				});
+			},
+		},
+	}
+</script>
+
+<style lang="scss">
+	.device-level {
+		padding: 10px;
+		background: rgba(0, 4, 10, 0.3);
+
+		.tree-node-operation {
+			display: flex;
+			align-items: center;
+		}
+
+		.huifont-xinzeng {
+			font-size: 14px;
+		}
+	}
 </style>

+ 56 - 0
virgo.wzfrontend/console/src/components/work/common/modelDown.vue

@@ -0,0 +1,56 @@
+<template>
+	<div class="hui-flex hui-dialog">
+		<div class="hui-flex-box hui-dialog-content">
+			<el-form ref="form" label-position="top" :model="form">
+				<el-form-item label="模型名称" prop="name" :rules="[{required: true, message: '请输入项目名称'}]">
+					<el-input type="text" v-model="form.name" placeholder="请输入项目名称"></el-input>
+				</el-form-item>
+				<el-form-item label="模型类型" prop="type" :rules="[{required: true, message: '请选模型类型'}]">
+					<el-select v-model="form.type" placeholder="请选择项目类型">
+						<el-option :label="item.name" :value="item.id" v-for="(item,index) in $field.field.modelType"
+							:key="item.id">
+						</el-option>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="3D模型" class="hui-textarea">
+					<div style="height: 400px;width: 100%;">
+						<three-model></three-model>
+					</div>
+				</el-form-item>
+			</el-form>
+		</div>
+		<div class="hui-dialog-submit">
+			<el-button size="medium" @click="$emit('callback')">取 消</el-button>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
+		</div>
+	</div>
+</template>
+
+<script>
+	import threeModel from '@/components/work/common/threeModel'
+	export default {
+		data() {
+			return {
+				form: {
+					name: '',
+					type: 1
+				},
+				loading: false
+			}
+		},
+		created() {
+
+		},
+		components: {
+			threeModel
+		},
+		methods: {
+			submit() {
+
+			}
+		}
+	}
+</script>
+
+<style>
+</style>

+ 35 - 0
virgo.wzfrontend/console/src/components/work/common/threeModel.vue

@@ -0,0 +1,35 @@
+<template>
+	<div class="three-model">
+		<div id="threeModel"></div>
+	</div>
+</template>
+
+<script>
+	import threeControls from '@/uitls/threeControls';
+	export default {
+		name: 'app',
+		created() {
+			this.$nextTick(() => {
+				let threeObj = new threeControls({
+					container: document.getElementById('threeModel')
+				});
+				// threeObj.setAxisHelper();
+				threeObj.loaderGLTF('https://file-node.oss-cn-shanghai.aliyuncs.com/youji/ec455ebd72664531acfcb81657d44266');
+				// threeObj.setState();
+				threeObj.OrbitControls();
+				// threeObj.inserClickFunc();
+				// threeObj.initPointerLockControls();
+				// threeObj.FlyControls();
+				threeObj.render();
+			})
+		}
+	}
+</script>
+
+<style lang="scss">
+	.three-model,
+	#threeModel {
+		width: 100%;
+		height: 100%;
+	}
+</style>

+ 65 - 0
virgo.wzfrontend/console/src/components/work/property/goDownForm.vue

@@ -0,0 +1,65 @@
+<template>
+	<div class="hui-flex hui-dialog">
+		<div class="hui-flex-box hui-dialog-content">
+			<el-form :model="departmentForm" label-position="top">
+				<el-form-item label="库房名称">
+					<el-input type="text" v-model="departmentForm.name"></el-input>
+				</el-form-item>
+				<el-form-item label="库房描述">
+					<el-input type="text" v-model="departmentForm.remark"></el-input>
+				</el-form-item>
+			</el-form>
+		</div>
+		<div class="hui-dialog-submit">
+			<el-button size="medium" @click="$emit('callback')">取 消</el-button>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
+		</div>
+	</div>
+</template>
+
+<script>
+	import {
+		insertGoDown,
+		updateGoDown
+	} from '@/httpApi/property'
+	export default {
+		props: ['isUpdate', 'detail'],
+		data() {
+			return {
+				departmentForm: {
+					name: '',
+					remark: ''
+				},
+				departmentRuler: {},
+				loading: false
+			}
+		},
+		created() {
+			if (this.isUpdate) {
+				this.departmentForm = JSON.parse(JSON.stringify(this.detail));
+			} else {
+				this.departmentForm['organizationId'] = this.$store.getters.organization.id;
+				this.departmentForm['projectId'] = this.$store.getters.project.id;
+			}
+		},
+		methods: {
+			submit() {
+				this.loading = true;
+				if (this.isUpdate) {
+					updateGoDown(this.departmentForm).then(this.successFunc)
+				} else {
+					insertGoDown(this.departmentForm).then(this.successFunc)
+				}
+			},
+			successFunc(res) {
+				this.loading = false;
+				if (res.state) {
+					this.$message.success('操作成功');
+					this.$emit('callback', 'init');
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss"></style>

+ 100 - 0
virgo.wzfrontend/console/src/components/work/property/propertyGoDown.vue

@@ -0,0 +1,100 @@
+<template>
+	<div class="hui-flex-box hui-flex hui-table">
+		<div class="hui-content-insert">
+			<el-button type="primary" size="medium" @click="insertDepartment({})">新建库房</el-button>
+		</div>
+		<div class="hui-flex-box">
+			<el-table :data="treeData" border height="100%">
+				<el-table-column label="库房名称" prop="name"></el-table-column>
+				<el-table-column label="库房描述" prop="remark"></el-table-column>
+				<el-table-column label="操作" width="240">
+					<template slot-scope="scope">
+						<div class="hui-table-operation">
+							<span class="table-operation" v-if="!scope.row.isp" @click="updateDepartment(scope.row)">
+								编辑
+							</span>
+							<span class="table-operation" v-if="!scope.row.isp" @click="deleteDepartment(scope.row)">
+								删除
+							</span>
+						</div>
+					</template>
+				</el-table-column>
+				<template slot="empty">
+					<empty description="暂无数据"></empty>
+				</template>
+			</el-table>
+		</div>
+		<el-dialog :close-on-click-modal="false" :title="isUpdate?'编辑':'新增'" :visible.sync="visible" width="900px"
+			:append-to-body="true">
+			<go-down-form v-if="visible" @callback="callback" :isUpdate="isUpdate" :detail="detail"></go-down-form>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import {
+		getGoDownList,
+		deleteGoDown
+	} from '@/httpApi/property'
+	import goDownForm from '@/components/work/property/goDownForm'
+	export default {
+		data() {
+			return {
+				treeData: [],
+				visible: false,
+				isUpdate: false,
+				detail: {},
+				drawer: false
+			}
+		},
+		created() {
+			this.init();
+		},
+		methods: {
+			init() {
+				getGoDownList({
+					organizationId: this.$store.getters.organization.id,
+					projectId: this.$store.getters.project.id
+				}).then(res => {
+					if (res.state) {
+						this.treeData = res.data
+					}
+				})
+			},
+			insertDepartment(val) {
+				this.detail = val;
+				this.visible = true;
+				this.isUpdate = false;
+			},
+			lookFlow(val) {
+				this.detailId = val.id;
+				this.drawer = true;
+			},
+			updateDepartment(val) {
+				this.detail = val;
+				this.isUpdate = true;
+				this.visible = true;
+			},
+			deleteDepartment(val) {
+				this.$confirm('确定要删除该库房?', () => {
+					deleteGoDown(val.id).then(res => {
+						if (res.state) {
+							this.$message.success('操作成功');
+							this.init();
+						}
+					})
+				});
+			},
+			callback(type) {
+				this.visible = false;
+				if (type === 'init') this.init();
+			}
+		},
+		components: {
+			goDownForm
+		},
+	}
+</script>
+
+<style lang="scss">
+</style>

+ 122 - 0
virgo.wzfrontend/console/src/components/work/property/propertySet.vue

@@ -0,0 +1,122 @@
+<template>
+	<div class="hui-flex-box hui-flex hui-table">
+		<div class="hui-content-insert">
+			<el-button type="primary" size="medium" @click="insertDepartment({})">新建资产</el-button>
+		</div>
+		<div class="hui-flex-box">
+			<el-table :data="treeData" row-key="id" border height="100%">
+				<el-table-column label="资产名称" prop="name"></el-table-column>
+				<el-table-column label="操作" width="240">
+					<template slot-scope="scope">
+						<div class="hui-table-operation">
+							<span class="table-operation" @click="insertDepartment(scope.row)">
+								添加子资产
+							</span>
+							<span class="table-operation" v-if="scope.row.children.length === 0">
+								3D模型
+							</span>
+							<span class="table-operation" v-if="!scope.row.isp" @click="updateDepartment(scope.row)">
+								编辑
+							</span>
+							<span class="table-operation" v-if="!scope.row.isp" @click="deleteDepartment(scope.row)">
+								删除
+							</span>
+						</div>
+					</template>
+				</el-table-column>
+				<template slot="empty">
+					<empty description="暂无数据"></empty>
+				</template>
+			</el-table>
+		</div>
+		<el-dialog :close-on-click-modal="false" :title="isUpdate?'编辑':'新增'" :visible.sync="visible" width="900px"
+			:append-to-body="true">
+			<depart-form v-if="visible" @callback="callback" :isUpdate="isUpdate" :part="part">
+			</depart-form>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import {
+		initDevicePartList,
+		getDevicePartList,
+		deleteDeviceDepartment
+	} from '@/httpApi/property'
+	import departForm from '@/components/work/property/departForm'
+	export default {
+		data() {
+			return {
+				treeData: [],
+				visible: false,
+				isUpdate: false,
+				part: {},
+				drawer: false
+			}
+		},
+		created() {
+			this.init();
+		},
+		methods: {
+			init() {
+				getDevicePartList(this.$store.getters.organization.id, this.$store.getters.project.id).then(res => {
+					if (res.state) {
+						if (res.data.length === 0) {
+							initDevicePartList(this.$store.getters.organization.id, this.$store.getters.project.id)
+								.then(res => {
+									if (res.state) {
+										getDevicePartList(this.$store.getters.organization.id, this.$store
+											.getters.project.id).then(res => {
+											if (res.state) {
+												this.treeData = res.data;
+											}
+										})
+									}
+								})
+						} else {
+							this.treeData = res.data;
+						}
+					}
+				})
+			},
+			currentChange(currPage) {
+				this.currPage = currPage;
+				this.init();
+			},
+			insertDepartment(val) {
+				this.part = val;
+				this.visible = true;
+				this.isUpdate = false;
+			},
+			lookFlow(val) {
+				this.detailId = val.id;
+				this.drawer = true;
+			},
+			updateDepartment(val) {
+				this.part = val;
+				this.isUpdate = true;
+				this.visible = true;
+			},
+			deleteDepartment(val) {
+				this.$confirm('确定要删除该资产层级?', () => {
+					deleteDeviceDepartment(val.id).then(res => {
+						if (res.state) {
+							this.$message.success('操作成功');
+							this.init();
+						}
+					})
+				});
+			},
+			callback(type) {
+				this.visible = false;
+				if (type === 'init') this.init();
+			}
+		},
+		components: {
+			departForm
+		},
+	}
+</script>
+
+<style lang="scss">
+</style>

+ 12 - 1
virgo.wzfrontend/console/src/config/field.js

@@ -244,6 +244,16 @@ const supportingFacilities = [{
 	name: '便捷购物',
 	icon: 'huifont-gouwu'
 }];
+const modelType = [{
+	id: 1,
+	name: 'FBX'
+}, {
+	id: 2,
+	name: 'OBJ'
+}, {
+	id: 3,
+	name: 'GLB'
+}]
 
 const findItem = (type, id) => {
 	return eval(type).find(node => node.id == id) || {
@@ -273,7 +283,8 @@ export default {
 		invoiceType,
 		serviceWorkWay,
 		clearWorkWay,
-		supportingFacilities
+		supportingFacilities,
+		modelType
 	},
 	findTypeName(type, id) {
 		return findItem(type, id).name;

+ 59 - 1
virgo.wzfrontend/console/src/httpApi/property.js

@@ -20,7 +20,7 @@ export function getDevicePartList(operateOrganizationId, projectId) {
 		url: `/api/operateDeviceLevel/getOperateOrganizationId/${operateOrganizationId}/${projectId}`,
 		method: 'get'
 	})
-}
+}
 /* 
  * 通过条件获取资产列表
  * 
@@ -207,4 +207,62 @@ export function updateDevice(data) {
 		method: 'put',
 		data: data
 	})
+}
+/* 
+ * 仓库列表
+ * 
+ * 
+ */
+export function getGoDownList(data) {
+	return request({
+		url: `/api/godown/query`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 新增仓库
+ * 
+ * 
+ */
+export function insertGoDown(data) {
+	return request({
+		url: `/api/godown`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 编辑仓库
+ * 
+ * 
+ */
+export function updateGoDown(data) {
+	return request({
+		url: `/api/godown`,
+		method: 'put',
+		data: data
+	})
+}
+/* 
+ * 删除仓库
+ * 
+ * 
+ */
+export function deleteGoDown(id) {
+	return request({
+		url: `/api/godown/${id}`,
+		method: 'delete',
+	})
+}
+/* 
+ * 仓库详情
+ * 
+ * 
+ */
+export function getGoDownDetail(id) {
+	return request({
+		url: `/api/godown/${id}`,
+		method: 'get'
+	})
 }

+ 356 - 0
virgo.wzfrontend/console/src/uitls/threeControls.js

@@ -0,0 +1,356 @@
+import * as THREE from 'three'
+import {
+	FBXLoader
+} from 'three/examples/jsm/loaders/FBXLoader.js'
+import {
+	OrbitControls
+} from 'three/examples/jsm/controls/OrbitControls.js'
+import {
+	GLTFLoader
+} from 'three/examples/jsm/loaders/GLTFLoader.js';
+import Stats from 'three/examples/jsm/libs/stats.module.js'
+import {
+	TWEEN
+} from 'three/examples/jsm/libs/tween.module.min.js';
+import {
+	FlyControls
+} from 'three/examples/jsm/controls/FlyControls.js'
+import {
+	PointerLockControls
+} from 'three/examples/jsm/controls/PointerLockControls.js'
+
+let camera, scene, renderer, clock, stats, controls, orthCamera, personControl, isMouseDown, pointerControls;
+let moveForward = false;
+let moveBackward = false;
+let moveLeft = false;
+let moveRight = false;
+let canJump = false;
+let prevTime = performance.now();
+const velocity = new THREE.Vector3();
+const direction = new THREE.Vector3();
+const vertex = new THREE.Vector3();
+class threeControls {
+	constructor(option) {
+		this.container = option.container;
+		this.initCamera();
+		this.initSence();
+		this.setDirectionalLight(1, 0, 0);
+		this.setDirectionalLight(0, 1, 0);
+		this.setDirectionalLight(0, 0, 1);
+		this.setDirectionalLight(-1, 0, 0);
+		this.setDirectionalLight(0, -1, 0);
+		this.setDirectionalLight(0, 0, -1);
+		clock = new THREE.Clock();
+		renderer = new THREE.WebGLRenderer({
+			antialias: true
+		});
+		renderer.setPixelRatio(window.devicePixelRatio);
+		renderer.setSize(this.container.offsetWidth, this.container.offsetHeight);
+		renderer.outputEncoding = THREE.sRGBEncoding;
+		renderer.compile(scene, camera);
+		this.container.appendChild(renderer.domElement);
+	}
+	initCamera() { //初始化相机
+		/*
+		 * fov — 摄像机视锥体垂直视野角度 默认值是50
+		 * aspect — 摄像机视锥体长宽比 默认值是1
+		 * near — 摄像机视锥体近端面 默认值是0.1
+		 * far — 摄像机视锥体远端面 默认值是2000。
+		 */
+		let fov = 45,
+			aspect = this.container.offsetWidth / this.container.offsetHeight,
+			near = 0.1,
+			far = 180;
+		camera = new THREE.PerspectiveCamera(fov, aspect, near, far);
+		camera.position.set(10, 10, 10);
+	}
+	initSence() { //初始化场景
+		scene = new THREE.Scene();
+		//场景背景颜色
+		scene.background = new THREE.Color('rgb(79, 98, 138)');
+	}
+	setHemisphereLight() { //设置半球光;
+		/*
+		 * skyColor — (可选参数) 天空中发出光线的颜色 默认值是0xffffff
+		 * groundColor  — (可选参数) 地面发出光线的颜色 默认值是0xffffff
+		 * intensity — 摄像机视锥体近端面 默认值是1
+		 */
+		let skyColor = new THREE.Color('rgb(204, 204, 204)'),
+			groundColor = new THREE.Color('rgb(0, 255, 0)'),
+			intensity = 1;
+		let hemiLight = new THREE.HemisphereLight(skyColor, groundColor, intensity);
+		hemiLight.position.set(0, 200, 0);
+		scene.add(hemiLight);
+	}
+	setDirectionalLight(x, y, z) { //设置平行光
+		/*
+		 * color - (可选参数) 16进制表示光的颜色。 缺省值为 0xffffff (白色)。
+		 * intensity - (可选参数) 光照的强度。缺省值为1。
+		 */
+		let color = new THREE.Color('rgb(255,255,255)'),
+			intensity = 1;
+		let dirLight = new THREE.DirectionalLight(color, intensity);
+		//光线从哪照射,例如(0, 1, 0)从上往下
+		dirLight.position.set(x, y, z);
+		//是否会产生阴影
+		dirLight.castShadow = false;
+		scene.add(dirLight);
+	}
+	setGridHelper() { //坐标格辅助对象. 坐标格实际上是2维线数组.
+		/*
+		 * size — 坐标格尺寸. 默认为 10
+		 * divisions  — 坐标格细分次数. 默认为 10
+		 * colorCenterLine — 中线颜色. 值可以为 Color 类型, 16进制 和 CSS 颜色名. 默认为 0x444444
+		 * colorGrid — 坐标格网格线颜色. 值可以为 Color 类型, 16进制 和 CSS 颜色名. 默认为 0x888888
+		 */
+		let size = 2000,
+			divisions = 200,
+			colorCenterLine = new THREE.Color('rgb(0,0,255)'),
+			colorGrid = new THREE.Color('rgb(0,0,255)')
+		let grid = new THREE.GridHelper(2000, 200, colorCenterLine, colorGrid);
+		grid.material.opacity = 1;
+		grid.material.transparent = true;
+		scene.add(grid);
+	}
+	setAxisHelper() { //坐标轴
+		//红色代表 X 轴. 绿色代表 Y 轴. 蓝色代表 Z 轴.
+		let axesHelper = new THREE.AxesHelper(200);
+		scene.add(axesHelper);
+	}
+	loaderFBX() { //加载fbx模型
+		const loader = new FBXLoader();
+		loader.load('./model/test.fbx', (object) => {
+			object.scale.multiplyScalar(0.9);
+			object.position.y = 0;
+			object.position.x = 0;
+			scene.add(object);
+			this.renderer.render(scene, camera);
+		});
+	}
+	loaderGLTF(url) { //加载GLTF模型
+		const loader = new GLTFLoader();
+		let _self = this;
+		loader.load(url, gltf => {
+			console.log('加载成功');
+			gltf.scene.scale.set(1, 1, 1)
+			let group = gltf.scene;
+			let box = new THREE.Box3().setFromObject(group);
+			let mdlen = box.max.x - box.min.x; //模型长度
+			let mdwid = box.max.z - box.min.z; //模型宽度
+			let mdhei = box.max.y - box.min.y; //模型高度
+			let x1 = box.min.x + mdlen / 2
+			let y1 = box.min.y + mdhei / 2
+			let z1 = box.min.z + mdwid / 2
+			group.position.set(-x1, -y1, -z1);
+			camera.position.set((mdlen / 2) + 10, (mdlen / 2) + 10, (mdlen / 2) + 100);
+			scene.add(group);
+		});
+	}
+	setrgb() { //随机颜色
+		return `rgb(${Math.floor(Math.random()*256)},${Math.floor(Math.random()*256)},${Math.floor(Math.random()*256)})`
+	}
+	orthCameraLookDownView() { //主视图
+		let perCamera = camera;
+		let target = scene.position.clone();
+		let camPos = perCamera.position.clone();
+		let depth = camPos.sub(target).length();
+		const tmpCamera = this.createPerCameraToOrthCamera(perCamera);
+		tmpCamera.position.set(0, depth, 0);
+		tmpCamera.rotation.set(-Math.PI / 2, 0, 0);
+		camera = tmpCamera;
+	}
+	createPerCameraToOrthCamera(perCamera) {
+
+		if (perCamera == null) {
+			console.error(' perCamera is null');
+			return null;
+		}
+
+		if (orthCamera == null) {
+			//1.计算透视相机到场景 scene 的深度距离 depth
+			let target = scene.position.clone();;
+			let camPos = perCamera.position.clone();
+			let depth = camPos.sub(target).length();
+
+			//2.得到透视相机的宽高比和垂直可视角度
+			let aspect = perCamera.aspect;
+			let fov = perCamera.fov;
+
+			//3.根据上述变量计算正交投影相机的视口矩形
+			let top_ortho = depth * Math.atan((Math.PI / 180) * (fov) / 2);
+			let right_ortho = top_ortho * aspect;
+			let bottom_ortho = -top_ortho;
+			let left_ortho = -right_ortho;
+
+
+			//4.最后创建正交投影相机
+			let near = perCamera.near;
+			let far = perCamera.far;
+			orthCamera = new THREE.OrthographicCamera(
+				left_ortho, right_ortho,
+				top_ortho, bottom_ortho,
+				near, far
+			);
+		}
+		return orthCamera;
+	}
+	animateCamera(position) {
+		new TWEEN.Tween(position).to({
+			x: position.x + 5,
+			y: position.y + 5,
+			z: position.z + 5
+		}, 1000).easing(TWEEN.Easing.Cubic.InOut).start();
+	}
+	setState() { //fps
+		stats = new Stats();
+		this.container.appendChild(stats.dom);
+	}
+	inserClickFunc() {
+		let _self = this;
+		document.addEventListener('click', (event) => {
+			event.preventDefault();
+			var vector = new THREE.Vector3(
+				(event.clientX / window.innerWidth) * 2 - 1,
+				-(event.clientY / window.innerHeight) * 2 + 1,
+				0.5
+			)
+			vector = vector.unproject(camera);
+			var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera
+				.position).normalize());
+			var intersects = raycaster.intersectObjects(scene.children, true);
+			if (intersects.length == 0) return;
+			if (intersects.length > 0) {
+				intersects[0].object.material.color.set("#59a4a3");
+				console.log(intersects[0].object);
+				// _self.animateCamera(intersects[0].object.parent.position);
+				// _self.orthCameraLookDownView();
+			}
+		}, false)
+	}
+	OrbitControls() {
+		controls = new OrbitControls(camera, this.container);
+		controls.enableRotate = true; //启用旋转
+		controls.enablePan = true; //启用平移
+		controls.enableZoom = true; //启用缩放
+		// controls.update();
+	}
+	FlyControls() {
+		personControl = new FlyControls(camera, renderer.domElement);
+		personControl.movementSpeed = 14 //移动速度 
+		personControl.rollSpeed = Math.PI / 1 //翻滚角速度 
+		personControl.autoForward = false //自动向前关闭 
+		personControl.dragToLook = true //拖动视图变换关闭
+		document.addEventListener('mousedown', () => {
+			isMouseDown = true;
+		})
+		document.addEventListener('mouseup', () => {
+			isMouseDown = false;
+		})
+	}
+	initPointerLockControls() {
+		pointerControls = new PointerLockControls(camera, document.body);
+		const blocker = document.getElementById('blocker');
+		const instructions = document.getElementById('instructions');
+
+		instructions.addEventListener('click', function() {
+			pointerControls.lock();
+			this.style.display = 'none'
+		});
+		pointerControls.addEventListener('lock', function() {
+			instructions.style.display = 'none';
+			blocker.style.display = 'none';
+
+		});
+		pointerControls.addEventListener('unlock', function() {
+			blocker.style.display = 'block';
+			instructions.style.display = '';
+		});
+
+		const onKeyDown = function(event) {
+			switch (event.code) {
+				case 'ArrowUp':
+				case 'KeyW':
+					moveForward = true;
+					break;
+				case 'ArrowLeft':
+				case 'KeyA':
+					moveLeft = true;
+					break;
+				case 'ArrowDown':
+				case 'KeyS':
+					moveBackward = true;
+					break;
+				case 'ArrowRight':
+				case 'KeyD':
+					moveRight = true;
+					break;
+				case 'Space':
+					if (canJump === true) velocity.y += 200;
+					canJump = false;
+					break;
+			}
+		};
+
+		const onKeyUp = function(event) {
+			switch (event.code) {
+				case 'ArrowUp':
+				case 'KeyW':
+					moveForward = false;
+					break;
+				case 'ArrowLeft':
+				case 'KeyA':
+					moveLeft = false;
+					break;
+				case 'ArrowDown':
+				case 'KeyS':
+					moveBackward = false;
+					break;
+				case 'ArrowRight':
+				case 'KeyD':
+					moveRight = false;
+					break;
+			}
+		};
+		document.addEventListener('keydown', onKeyDown);
+		document.addEventListener('keyup', onKeyUp);
+	}
+	render() { //渲染
+		animate()
+	}
+}
+
+function animate() {
+
+	if (personControl && isMouseDown) personControl.update(clock.getDelta());
+	if (stats) stats.update();
+	const time = performance.now();
+
+	if (pointerControls && pointerControls.isLocked === true) {
+
+		const delta = (time - prevTime) / 1000;
+		velocity.x -= velocity.x * 5.0 * delta;
+		velocity.z -= velocity.z * 5.0 * delta;
+		velocity.y -= 9.8 * 50.0 * delta; // 100.0 = mass
+
+		direction.z = Number(moveForward) - Number(moveBackward);
+		direction.x = Number(moveRight) - Number(moveLeft);
+		direction.normalize(); // this ensures consistent movements in all directions
+
+		if (moveForward || moveBackward) velocity.z -= direction.z * 400.0 * delta;
+		if (moveLeft || moveRight) velocity.x -= direction.x * 400.0 * delta;
+
+		pointerControls.moveRight(-velocity.x * delta);
+		pointerControls.moveForward(-velocity.z * delta);
+		pointerControls.getObject().position.y += (velocity.y * delta); // new behavior
+
+		if (pointerControls.getObject().position.y < 10) {
+			velocity.y = 0;
+			pointerControls.getObject().position.y = 10;
+			canJump = true;
+		}
+	}
+	prevTime = time;
+	renderer.render(scene, camera);
+	requestAnimationFrame(animate);
+}
+export default threeControls;

+ 40 - 124
virgo.wzfrontend/console/src/views/work/property/set.vue

@@ -1,125 +1,41 @@
-<template>
-	<div class="hui-flex hui-content">
-		<div class="hui-content-title">
-			<div class="hui-title-item active">资产设置</div>
-		</div>
-		<div class="hui-flex-box hui-flex hui-table">
-			<div class="hui-content-insert">
-				<el-button type="primary" size="medium" @click="insertDepartment({})">新建资产</el-button>
-			</div>
-			<div class="hui-flex-box">
-				<el-table :data="treeData" row-key="id" border height="100%">
-					<el-table-column label="资产名称" prop="name"></el-table-column>
-					<el-table-column label="操作" width="240">
-						<template slot-scope="scope">
-							<div class="hui-table-operation">
-								<span class="table-operation" @click="insertDepartment(scope.row)">
-									添加子资产
-								</span>
-								<span class="table-operation" v-if="!scope.row.isp"
-									@click="updateDepartment(scope.row)">
-									编辑
-								</span>
-								<span class="table-operation" v-if="!scope.row.isp"
-									@click="deleteDepartment(scope.row)">
-									删除
-								</span>
-							</div>
-						</template>
-					</el-table-column>
-					<template slot="empty">
-						<empty description="暂无数据"></empty>
-					</template>
-				</el-table>
-			</div>
-		</div>
-		<el-dialog :close-on-click-modal="false" :title="isUpdate?'编辑':'新增'" :visible.sync="visible" width="900px" :append-to-body="true">
-			<depart-form v-if="visible" @callback="callback" :isUpdate="isUpdate" :part="part">
-			</depart-form>
-		</el-dialog>
-	</div>
-</template>
-
-<script>
-	import {
-		initDevicePartList,
-		getDevicePartList,
-		deleteDeviceDepartment
-	} from '@/httpApi/property'
-	import departForm from '@/components/work/property/departForm'
-	export default {
-		data() {
-			return {
-				treeData: [],
-				visible: false,
-				isUpdate: false,
-				part: {},
-				drawer: false
-			}
-		},
-		created() {
-			this.init();
-		},
-		methods: {
-			init() {
-				getDevicePartList(this.$store.getters.organization.id, this.$store.getters.project.id).then(res => {
-					if (res.state) {
-						if (res.data.length === 0) {
-							initDevicePartList(this.$store.getters.organization.id, this.$store.getters.project.id)
-								.then(res => {
-									if (res.state) {
-										getDevicePartList(this.$store.getters.organization.id, this.$store
-											.getters.project.id).then(res => {
-											if (res.state) {
-												this.treeData = res.data;
-											}
-										})
-									}
-								})
-						} else {
-							this.treeData = res.data;
-						}
-					}
-				})
-			},
-			currentChange(currPage) {
-				this.currPage = currPage;
-				this.init();
-			},
-			insertDepartment(val) {
-				this.part = val;
-				this.visible = true;
-				this.isUpdate = false;
-			},
-			lookFlow(val) {
-				this.detailId = val.id;
-				this.drawer = true;
-			},
-			updateDepartment(val) {
-				this.part = val;
-				this.isUpdate = true;
-				this.visible = true;
-			},
-			deleteDepartment(val) {
-				this.$confirm('确定要删除该资产层级?', () => {
-					deleteDeviceDepartment(val.id).then(res => {
-						if (res.state) {
-							this.$message.success('操作成功');
-							this.init();
-						}
-					})
-				});
-			},
-			callback(type) {
-				this.visible = false;
-				if (type === 'init') this.init();
-			}
-		},
-		components: {
-			departForm
-		},
-	}
-</script>
-
-<style lang="scss">
+<template>
+	<div class="hui-flex hui-content">
+		<div class="hui-content-title">
+			<div :class="'hui-title-item ' + (item.id === nowTitleId ? 'active':'')" v-for="(item,index) in titleList"
+				:key="item.id" @click="nowTitleId = item.id">
+				{{item.title}}
+			</div>
+		</div>
+		<property-set v-if="nowTitleId === 1"></property-set>
+		<property-go-down v-else></property-go-down>
+	</div>
+</template>
+
+<script>
+	import propertySet from '@/components/work/property/propertySet'
+	import propertyGoDown from '@/components/work/property/propertyGoDown'
+
+	export default {
+		data() {
+			return {
+				titleList: [{
+					id: 1,
+					title: '资产设置'
+				}, {
+					id: 2,
+					title: '库房设置'
+				}],
+				nowTitleId: 1
+			}
+		},
+		created() {},
+		methods: {},
+		components: {
+			propertySet,
+			propertyGoDown
+		},
+	}
+</script>
+
+<style lang="scss">
 </style>

File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/index.html


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/css/1037.6f1748c4.css


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/css/3065.e719da7b.css


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/css/843.e719da7b.css


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/css/8446.6f1748c4.css


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/103.7b3bcb80.js


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1037-legacy.81f251f9.js


virgo.wzfrontend/src/main/resources/static/console/static/js/1361.160fb0f3.js → virgo.wzfrontend/src/main/resources/static/console/static/js/1361.d9208ab7.js


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1703-legacy.f697591b.js


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1703.c226170f.js


virgo.wzfrontend/src/main/resources/static/console/static/js/2803-legacy.4ecf641e.js → virgo.wzfrontend/src/main/resources/static/console/static/js/2803-legacy.2eaea7fc.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/3065.2823a7d9.js


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/3620-legacy.5704c046.js


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/3620.ba1bc073.js


File diff suppressed because it is too large
+ 7 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/4292.36a273d4.js


File diff suppressed because it is too large
+ 7 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/4601-legacy.8f27bd47.js


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/4767.6f59e8e3.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/4767.a0380d29.js


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/494-legacy.fdd6f246.js


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/494.f861d51b.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/6264-legacy.1f42bee1.js


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/7141-legacy.d7665ab5.js


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/7383-legacy.ddfacac3.js


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/7431-legacy.056e186a.js


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/7431.9f9f9ef2.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/7694.1c760abe.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/843-legacy.a3136f8e.js


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/8446.c56c2aae.js


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/867.2df21ee7.js


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/97-legacy.b338c86f.js


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/app-legacy.b5aa910c.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/app-legacy.c267b54d.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/app.766ab57e.js


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/app.7b90210e.js