bill 1 год назад
Родитель
Сommit
2c73b55467

+ 1 - 8
src/app/fire/view/dispatch/index.vue

@@ -38,13 +38,6 @@
       </template>
       <template v-else>
         <CaseEditMenu
-          :last-menu="[
-            {
-              key: 'shapre',
-              label: '分享',
-              onClick: () => shareCase({ caseId: row.caseId }),
-            },
-          ]"
           :prev-menu="[
             {
               key: 'editInfo',
@@ -129,4 +122,4 @@ const editHandler = async (row: Fire) => {
 const addHandler = async () => {
   (await addFire({})) && pagging.refresh();
 };
-</script>
+</script>

+ 8 - 0
src/assets/style/public.scss

@@ -546,4 +546,12 @@ body {
   padding         : 15px 40px;
   height          : 5.33rem;
   box-sizing      : border-box;
+}
+
+html .el-input-group__append button.el-button {
+  background-color         : var(--el-button-bg-color) !important;
+  border-color             : var(--el-button-border-color) !important;
+  color                    : var(--el-button-text-color) !important;
+  border-top-left-radius   : 0 !important;
+  border-bottom-left-radius: 0 !important;
 }

+ 1 - 2
src/constant/caseFile.ts

@@ -2,8 +2,7 @@ import { BoardType } from "@/store/caseFile";
 
 export const FileDrawType = 1;
 export const DrawFormats = [".jpg", ".jpeg", ".png"];
-export const OtherFormats = [".pdf", ".doc", ".docx"];
-
+export const OtherFormats = [".pdf", ".word", ".jpg", ".png"];
 export const BoardTypeDesc = {
   [BoardType.scene]: "现场图",
   [BoardType.map]: "方位图",

+ 4 - 0
src/store/camera.ts

@@ -6,6 +6,7 @@ import {
   getCameraList,
   unbindCamera,
   insertCamera,
+  updateCamera,
 } from "@/request";
 
 export type Camera = {
@@ -38,3 +39,6 @@ export const delCamera = (camera: Camera) =>
 
 export const addCamera = (camera: Camera) =>
   axios.post(insertCamera, { ...camera, cameraSn: camera.snCode });
+
+export const editCamera = (camera: Camera) =>
+  axios.post(updateCamera, { ...camera, cameraSn: camera.snCode });

+ 7 - 3
src/view/camera/bind.vue

@@ -25,7 +25,7 @@
 
 <script setup lang="ts">
 import comCompany from "@/components/company-select/index.vue";
-import { Camera, addCamera } from "@/store/camera";
+import { Camera, addCamera, editCamera } from "@/store/camera";
 import { UserInfo, getUsers } from "@/store/user";
 import { ref, watchEffect } from "vue";
 import { ElMessage } from "element-plus";
@@ -39,7 +39,7 @@ const users = ref<UserInfo[]>([]);
 watchEffect(async () => {
   if (bindCamera.value.deptId) {
     users.value = await getUsers(bindCamera.value.deptId);
-    if (users.value.length === 1) {
+    if (users.value.length === 1 && !bindCamera.value.userId) {
       bindCamera.value.userId = users.value[0].id;
     }
   }
@@ -54,7 +54,11 @@ defineExpose<QuiskExpose>({
       ElMessage.error("请选择管理员");
       throw "请选择管理员";
     } else {
-      await addCamera(bindCamera.value);
+      if (bindCamera.value.id) {
+        await editCamera(bindCamera.value);
+      } else {
+        await addCamera(bindCamera.value);
+      }
       return bindCamera.value;
     }
   },

+ 5 - 4
src/view/camera/index.vue

@@ -21,7 +21,7 @@
     <div class="body-head">
       <h3 style="visibility: hidden">相机列表</h3>
       <div class="table-ctrl-right">
-        <el-button type="primary" @click="addCameraHandler" v-pdpath="'bind'">
+        <el-button type="primary" @click="changeCameraHandler" v-pdpath="'bind'">
           绑定相机
         </el-button>
       </div>
@@ -44,6 +44,7 @@
       </el-table-column>
       <el-table-column label="绑定管理员" prop="nickName"></el-table-column>
       <el-table-column label="操作" v-slot:default="{ row }">
+        <span class="oper-span" @click="changeCameraHandler(row)"> 编辑 </span>
         <span class="oper-span delBtn" @click="del(row)" v-pdpath="'unbind'"> 解绑 </span>
       </el-table-column>
     </el-table>
@@ -63,7 +64,7 @@ import comSelect from "@/components/company-select/index.vue";
 import comPagination from "@/components/pagination/index.vue";
 import comHead from "@/components/head/index.vue";
 import { usePagging } from "@/hook/pagging";
-import { bindCamera } from "./quisk";
+import { bindCamera, editCamera } from "./quisk";
 import { getCameraPagging, delCamera, addCamera, Camera } from "@/store/camera";
 import { confirm } from "@/helper/message";
 import { ElMessage } from "element-plus";
@@ -79,8 +80,8 @@ const { state, queryReset, refresh, changPageCurrent, changPageSize, add } = use
   },
 });
 
-const addCameraHandler = async () => {
-  (await bindCamera({})) && (await refresh());
+const changeCameraHandler = async (camera: Camera) => {
+  (await (camera ? editCamera({ camera }) : bindCamera({}))) && (await refresh());
 };
 
 const del = async (camera: Camera) => {

+ 5 - 0
src/view/camera/quisk.ts

@@ -6,3 +6,8 @@ export const bindCamera = quiskMountFactory(Bind, {
   title: "绑定相机",
   width: 500,
 })<Camera>;
+
+export const editCamera = quiskMountFactory(Bind, {
+  title: "编辑相机",
+  width: 500,
+})<Camera>;

+ 1 - 0
src/view/case/addCaseFile.vue

@@ -19,6 +19,7 @@
         :multiple="false"
         :limit="1"
         :before-upload="upload"
+        :http-request="() => {}"
         :on-preview="previewFile"
         :accept="accept"
         :before-remove="removeFile"

+ 19 - 20
src/view/case/caseFile.vue

@@ -30,24 +30,20 @@
             <EditPen />
           </el-icon>
         </span>
-        <ElInput
-          v-model="row.filesTitle"
-          placeholder="请输入文件名"
-          focus
-          v-else
-          style="width: 300px"
-        >
-          <template v-slot:suffix>
-            <el-button
-              type="primary"
-              plain
-              @click="updateFileTitle(row)"
-              class="input-inner-btn"
-            >
-              确定
-            </el-button>
-          </template>
-        </ElInput>
+        <template v-else>
+          <ElInput
+            v-model="row.filesTitle"
+            placeholder="请输入文件名"
+            focus
+            style="width: 280px"
+          >
+            <template #append>
+              <el-button type="primary" plain @click="updateFileTitle(row)">
+                确定
+              </el-button>
+            </template>
+          </ElInput>
+        </template>
       </el-table-column>
       <el-table-column label="创建时间" prop="createTime"></el-table-column>
       <el-table-column label="操作" v-slot:default="{ row }: { row: CaseFile }">
@@ -83,7 +79,7 @@ import {
 } from "@/store/caseFile";
 import { getCaseInfo, updateCaseInfo } from "@/store/case";
 import { appConstant } from "@/app";
-import { ElIcon, ElInput } from "element-plus";
+import { ElIcon, ElInput, ElMessage } from "element-plus";
 
 const caseId = computed(() => {
   const caseId = router.currentRoute.value.params.caseId;
@@ -95,6 +91,9 @@ const caseId = computed(() => {
 const inputCaseTitles = ref<CaseFile[]>([]);
 
 const updateFileTitle = async (caseFile: CaseFile) => {
+  if (!caseFile.filesTitle.trim()) {
+    return ElMessage.error("卷宗标题不能为空!");
+  }
   await updateCaseInfo(caseFile);
   inputCaseTitles.value = inputCaseTitles.value.filter((item) => item !== caseFile);
 };
@@ -139,7 +138,7 @@ onMounted(async () => {
   types.value = await getCaseFileTypes();
   currentTypeId.value = types.value[0].filesTypeId;
 
-  title.value = "卷宗管理 | " + (await getCaseInfo(caseId.value!)).caseTitle;
+  title.value = (await getCaseInfo(caseId.value!)).caseTitle + " | 卷宗管理";
   desc.value = "";
 });
 

+ 4 - 2
src/view/case/draw/index.vue

@@ -126,10 +126,12 @@ const saveHandler = async () => {
       name: RouteName.drawCaseFile,
       params: { caseId: args.caseId, type: args.type, id: data.filesId },
     });
+  }
 
-    await nextTick();
+  await nextTick();
+  setTimeout(() => {
     location.reload();
-  }
+  }, 100);
 };
 
 // 导出图片

+ 2 - 1
src/view/case/draw/slider.vue

@@ -9,6 +9,7 @@
         :multiple="false"
         :limit="1"
         :show-file-list="false"
+        :http-request="() => {}"
         :disabled="!!percentage"
         :before-upload="upload"
         :accept="accept"
@@ -69,7 +70,7 @@ const emit = defineEmits<{
 
 const { percentage, upload, file, removeFile, accept } = useUpload({
   maxSize: maxFileSize,
-  formats: [".jpg", ".jpeg", ".png", ".svg"],
+  formats: [".jpg", ".png"],
 });
 
 watchEffect(async () => {

+ 14 - 2
src/view/case/editMenu.vue

@@ -19,7 +19,7 @@
 <script setup lang="ts">
 import { computed } from "vue";
 import { getFuseCodeLink, checkScenesOpen, MenuItem, getSWKKSyncLink } from "./help";
-import { showCaseScenes, addCaseScenes } from "./quisk";
+import { showCaseScenes, addCaseScenes, shareCase } from "./quisk";
 import { RouteName, router } from "@/router";
 import { getCaseSceneList } from "@/store/case";
 import { SceneType } from "@/store/scene";
@@ -84,10 +84,22 @@ const menus = computed(() => {
         window.open(href);
       },
     },
+    {
+      key: "shapre",
+      label: "分享",
+      onClick: async () => {
+        const scenes = await getCaseSceneList(caseId);
+        if (!scenes.length) {
+          alert("当前案件下无场景,请先添加场景。");
+        } else {
+          shareCase({ caseId: caseId });
+        }
+      },
+    },
     ...(props.lastMenu || []).map((item) => ({
       ...item,
       onClick: () => item.onClick(caseId),
     })),
   ];
 });
-</script>
+</script>

+ 1 - 1
src/view/case/help.ts

@@ -92,7 +92,7 @@ export const getQuery = (caseId: number, share: boolean = false) =>
 
 // 查看
 export const gotoQuery = (caseId: number) => {
-  checkScenesOpen(caseId, getQuery(caseId, true));
+  checkScenesOpen(caseId, getQuery(caseId, false));
 };
 
 export enum FuseImageType {

+ 1 - 0
src/view/vrmodel/modelContent.vue

@@ -6,6 +6,7 @@
       :multiple="false"
       :limit="1"
       :show-file-list="false"
+      :http-request="() => {}"
       :file-list="[]"
       :class="{ dispable: percentage }"
       :before-upload="uploadCheck"

+ 2 - 1
vite.config.ts

@@ -3,7 +3,7 @@ import vue from "@vitejs/plugin-vue";
 import { resolve } from "path";
 import ElementPlus from "unplugin-element-plus/vite";
 
-let app = "fire";
+let app = "criminal";
 if (process.argv.length > 3) {
   app = process.argv[process.argv.length - 1].trim();
 }
@@ -40,6 +40,7 @@ export default defineConfig({
     }),
   ],
   server: {
+    port: 5173,
     proxy: {
       "/api": {
         target: dev ? "http://test-mix3d.4dkankan.com" : "mix3d.4dkankan.com",