@@ -4,8 +4,8 @@ import ico from "@/assets/image/fire.ico";
import { fireDeptId } from "@/constant/appDeptId";
export const appConstant: AppConstant = {
- title: "消防火调三维远程勘验平台",
- desc: "Three-dimensional remote prospecting platform for fire scenes",
+ title: "新疆消防救援总队火灾现场重建平台",
+ desc: "",
ico,
banner,
name: "fire",
@@ -20,6 +20,7 @@ export const menuRouteNames = [
FireRouteName.downloadLog,
FireRouteName.setting,
FireRouteName.recycle,
+ FireRouteName.firmware,
];
export const routes: Routes = [
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <title>
+ Artboard-12
+ </title>
+ <g id="Up-3" data-name="Up">
+ <path d="M19.707,9.293l-7-7a1,1,0,0,0-1.414,0l-7,7A1,1,0,0,0,5,11H8V21a1,1,0,0,0,1,1h6a1,1,0,0,0,1-1V11h3a1,1,0,0,0,.707-1.707Z" style="fill:#95d475" />
+ </g>
+</svg>
@@ -72,6 +72,7 @@ const show = ref(true);
overflow: hidden;
height: 42px;
}
+
&.show {
padding-bottom: 16px;
@@ -25,6 +25,7 @@ export default class Scene extends Mitt {
this.renderer = new THREE.WebGLRenderer({
canvas: this.domElement,
antialias: true,
+ autoClear: true,
});
this.width = this.domElement.clientWidth;
@@ -39,7 +39,7 @@ export default class CircleTextLabel extends THREE.Mesh {
this.userData = text;
- const edges = new THREE.EdgesGeometry(g, 50);
+ const edges = new THREE.EdgesGeometry(g);
const geometry = new LineGeometry();
geometry.fromEdgesGeometry(edges);
@@ -47,6 +47,9 @@ export default class CircleTextLabel extends THREE.Mesh {
const line_m = new LineMaterial({
color: 0xe44d54,
linewidth: 5,
+ dashed: false,
+ dashScale : 0.1,
+ alphaToCoverage: false,
line_m.resolution.set(window.innerWidth, window.innerHeight);
@@ -1,8 +1,6 @@
import * as THREE from "three";
import TouchEdge from "./TouchEdge";
-
export default class ImgLabel extends THREE.Mesh {
constructor(texture, matLine, isHorizontal = true) {
let width, height, p;
@@ -97,6 +97,12 @@ export const routes: Routes = [
component: () => import("@/view/setting/index.vue"),
meta: { title: "系统设置", icon: "icon-nav-setup" },
},
+ {
+ name: RouteName.firmware,
+ path: "firmware",
+ component: () => import("@/view/firmware/index.vue"),
+ meta: { title: "固件管理", icon: "icon-nav-setup" },
+ },
],
{
@@ -17,6 +17,7 @@ export const RouteName = {
sceneVisitor: "sceneVisitor",
records: "records",
setting: "setting",
+ firmware: "firmware",
} as const;
type RouteNamesType = typeof RouteName;
@@ -0,0 +1,58 @@
+<template>
+ <com-head :options="headOptions" v-model="params.pagging.state.query.type">
+ <el-form label-width="94px" inline>
+ <slot name="header" />
+ <el-form-item label="版本号">
+ <el-input placeholder="请输入"></el-input>
+ </el-form-item>
+ <el-form-item class="searh-btns" style="grid-area: 1 / 4 / 2 / 4">
+ <el-button type="primary" @click="params.pagging.refresh"
+ >查询</el-button
+ >
+ <el-button type="primary" plain @click="params.pagging.queryReset"
+ >重置</el-button
+ </el-form>
+ </com-head>
+ <div class="body-layer">
+ <slot name="content" />
+ <el-table
+ :data="tableData"
+ tooltip-effect="dark"
+ style="width: 100%"
+ size="large"
+ <el-table-column label="版本号" prop="deptName"></el-table-column>
+ <el-table-column
+ label="版本更新说明"
+ prop="deptLevelStr"
+ ></el-table-column>
+ <el-table-column label="最低版本号" prop="deptLevelStr"></el-table-column>
+ <el-table-column label="创建人" prop="deptLevelStr"></el-table-column>
+ <el-table-column label="创建时间" prop="deptLevelStr"></el-table-column>
+ <el-table-column label="状态" prop="deptLevelStr"></el-table-column>
+ </el-table>
+ <com-pagination
+ @size-change="params.pagging.changPageSize"
+ @current-change="params.pagging.changPageCurrent"
+ :current-page="params.pagging.state.pag.currentPage"
+ :page-size="params.pagging.state.pag.size"
+ :total="params.pagging.state.pag.total"
+ />
+ </div>
+</template>
+<script lang="ts" setup>
+import { ref } from "vue";
+import comHead from "@/components/head/index.vue";
+import comPagination from "@/components/pagination/index.vue";
+const tableData = ref();
+import { useScenePaggingParams } from "./paging";
+const headOptions = [
+ { value: 1, name: "双目转台" },
+ { value: 2, name: "激光转台" },
+ { value: 3, name: "激光移动" },
+];
+const params = useScenePaggingParams();
+</script>
@@ -0,0 +1,56 @@
+import { usePagging } from "@/hook/pagging";
+import { SceneType, getScenePagging } from "@/store/scene";
+import { computed, reactive, watch, watchEffect } from "vue";
+export const useScenePaggingParams = () => {
+ const pagging = usePagging({
+ get: getScenePagging,
+ paramsTemlate: {
+ type: SceneType.SWKJ,
+ sceneName: "",
+ modelTitle: "",
+ deptId: "",
+ snCode: "",
+ });
+ const isSwmx = computed(() => pagging.state.query.type === SceneType.SWMX);
+ const keyword = computed({
+ get: () =>
+ isSwmx.value
+ ? pagging.state.query.modelTitle
+ : pagging.state.query.sceneName,
+ set: (val: string) => {
+ pagging.state.query.modelTitle = val;
+ pagging.state.query.sceneName = val;
+ let oldSnCode = pagging.state.query.snCode;
+ watchEffect(() => {
+ if (isSwmx.value) {
+ oldSnCode = pagging.state.query.snCode;
+ pagging.state.query.snCode = "";
+ } else {
+ pagging.state.query.snCode = oldSnCode;
+ }
+ watch(
+ () => pagging.state.query.type,
+ () => {
+ pagging.state.pag.currentPage = 1;
+ );
+ const queryResetRaw = pagging.queryReset;
+ pagging.queryReset = () => {
+ const type = pagging.state.query.type;
+ queryResetRaw();
+ pagging.state.query.type = type;
+ };
+ return reactive({ pagging, keyword, isSwmx });
+};
+export type ScenePagging = ReturnType<typeof useScenePaggingParams>["pagging"];
@@ -1,5 +1,6 @@
<template>
<div class="slide">
+ <!-- {{ routes }} -->
<el-menu
:default-active="(router.currentRoute.value.name as string)"
@select="(name: string) => router.push({ name })"
@@ -23,6 +24,7 @@ import { FireRouteName } from "@/app/fire/routeConfig";
const props = defineProps<{ names: string[] }>();
const routes = getPermissionRoutes(props.names, [
+ RouteName.firmware,
RouteName.setting,
]);
@@ -1,5 +1,8 @@
- <div class="system-layer" :style="{ backgroundImage: `url(${appConstant.banner})` }">
+ <div
+ class="system-layer"
+ :style="{ backgroundImage: `url(${appConstant.banner})` }"
<div class="content">
<component :is="component" />
</div>
@@ -59,7 +59,8 @@
</el-form-item>
<div class="more">
- <a @click="$router.push({ name: 'forget' })">忘记密码</a>
+ <!-- <a @click="$router.push({ name: 'forget' })">忘记密码</a> -->
+ 平台用户由总队创建
</el-form>
@@ -8,9 +8,9 @@
<el-form-item label="手机号:" class="mandatory">
<el-input v-model="data.phone" placeholder="请输入手机号码" disabled></el-input>
- <el-form-item label="验证码:" class="mandatory">
+ <el-form-item label="旧密码:" class="mandatory">
<el-input v-model="data.code" placeholder="请输入验证码">
- <template v-slot:suffix>
+ <!-- <template v-slot:suffix>
<el-button
type="primary"
plain
@@ -24,7 +24,7 @@
: "获取验证码"
}}
</el-button>
- </template>
+ </template> -->
</el-input>
<el-form-item label="新密码:" class="mandatory">