bill 8 月之前
父节点
当前提交
309f02689e

+ 10 - 0
src/assets/style/global.css

@@ -9,3 +9,13 @@ h6 {
 :where(.css-dev-only-do-not-override-cf1j00).ant-popover .ant-popover-inner-content {
   padding: 0;
 }
+.ant-empty {
+  text-align: center;
+  padding: 30px;
+}
+button,
+input,
+select,
+textarea {
+  color: currentColor;
+}

+ 10 - 0
src/assets/style/global.less

@@ -15,4 +15,14 @@ h1, h2, h3, h4, h5, h6 {
 }
 :where(.css-dev-only-do-not-override-cf1j00).ant-popover .ant-popover-inner-content {
   padding: 0;
+}
+
+.ant-empty {
+  text-align: center;
+  padding: 30px;
+}
+
+
+button, input, select, textarea {
+  color: currentColor;
 }

+ 3 - 7
src/components/tagging/sign-new.vue

@@ -1,12 +1,11 @@
 <template>
-  <div
+  <!-- <div
     v-if="show && posStyle"
     class="hot-item pc"
     :style="posStyle"
     @mouseenter="isHover = true"
     @mouseleave="isHover = false"
   >
-    <!-- <div class="title tag-tip">{{ tagging.title }}</div> -->
     <div @click.stop>
       <UIBubble class="hot-bubble pc" :show="showContent" type="left" level="center">
         <h2>{{ tagging.title }}</h2>
@@ -39,7 +38,7 @@
         v-if="!!~pullIndex"
       />
     </div>
-  </div>
+  </div> -->
 </template>
 
 <script lang="ts" setup>
@@ -157,10 +156,7 @@ const [posStyle, pos] = usePixel(() => ({
 
 const changePos = () => {
   const c = tag.getImageCenter();
-  pos.value = {
-    localPos: c.pos,
-    modelId: c.modelId,
-  };
+  pos.value = { localPos: c };
 };
 changePos();
 

+ 4 - 2
src/hook/use-pixel.ts

@@ -1,9 +1,9 @@
-import sdk from "@/sdk";
+import { sdk } from "@/sdk";
 import { ref, Ref, watch, watchEffect } from "vue";
 import { useViewStack } from "./viewStack";
 
 export const usePixel = (
-  getter: () => ({ localPos: SceneLocalPos; modelId: string } | undefined)
+  getter: () => ({ localPos: SceneLocalPos; modelId?: string } | undefined)
 ) => {
   const pos = ref(getter())
   watch(getter, val => pos.value = val)
@@ -13,6 +13,8 @@ export const usePixel = (
       pixel.value = void 0;
       return;
     }
+    console.error(
+      pos.value)
     const screenPos = sdk.getScreenByPosition(
       pos.value.localPos,
       pos.value.modelId

+ 44 - 18
src/layout/edit/scene-select.vue

@@ -19,17 +19,29 @@
           placeholder="输入名称搜索"
           v-model:value="keyword"
           allow-clear
-          style="width: 264px"
+          style="width: 244px"
         />
       </div>
-      <div class="table-layout" v-if="filterScenes.length">
-        <Table
-          :row-key="(record) => record.modelId"
-          :columns="cloumns"
-          :rowSelection="rowSelection"
-          :data-source="filterScenes"
-          :pagination="false"
-        />
+      <div class="table-layout" v-if="origin.length">
+        <Tabs v-model:activeKey="type">
+          <TabPane v-for="current in types" :key="current" :tab="current">
+            <Table
+              v-if="typeFilterScenes[current].length"
+              :row-key="(record: Scene) => record.modelId"
+              :columns="cloumns"
+              :rowSelection="rowSelection"
+              :data-source="typeFilterScenes[current]"
+              :pagination="false"
+            />
+            <div style="padding: 1px" v-else>
+              <Empty
+                description="暂无搜索结果"
+                :image="Empty.PRESENTED_IMAGE_SIMPLE"
+                className="ant-empty ant-empty-normal"
+              />
+            </div>
+          </TabPane>
+        </Tabs>
       </div>
       <div style="padding: 1px" v-else>
         <Empty
@@ -47,7 +59,7 @@
 </template>
 
 <script lang="ts" setup>
-import { Modal, Input, Table, Empty } from "ant-design-vue";
+import { Modal, Input, Table, Empty, Tabs, TabPane } from "ant-design-vue";
 import { computed, nextTick, ref, watch, watchEffect } from "vue";
 import { scenes, save, SceneTypeDesc } from "@/store";
 import { asyncTimeout, createLoadPack } from "@/utils";
@@ -69,15 +81,29 @@ const Search = Input.Search;
 const selectIds = computed(() => fuseModels.value.map((item) => item.modelId));
 const visible = ref(false);
 const keyword = ref("");
-const filterScenes = computed(() =>
-  scenes.value
-    .filter((item) => item.name && item.modelId && item.name.includes(keyword.value))
-    .map((scene) => ({
-      ...scene,
-      createTime: scene.createTime.substr(0, 16),
-      type: SceneTypeDesc[scene.type],
-    }))
+const origin = computed(() =>
+  scenes.value.map((scene) => ({
+    ...scene,
+    createTime: scene.createTime.substr(0, 16),
+    type: SceneTypeDesc[scene.type],
+  }))
 );
+
+const typeFilterScenes = computed(() => {
+  const typeScenes: any = {};
+  for (const type of types.value) {
+    typeScenes[type] = origin.value
+      .filter((item) => item.name && item.modelId && item.name.includes(keyword.value))
+      .filter((item) => item.type === type);
+  }
+  return typeScenes;
+});
+
+const types = computed(() => [
+  ...new Set(origin.value.map((item) => item.type)).values(),
+]);
+const type = ref(types.value[0]);
+
 const selects = ref<Key[]>(selectIds.value);
 const rowSelection: any = ref({
   selectedRowKeys: selects,

+ 1 - 1
src/sdk/sdk.ts

@@ -285,7 +285,7 @@ export type Tagging3D = {
   // 更改可拖拽移动
   changeCanMove: (canMove: boolean) => void
   // 获取图标中心三维坐标
-  getImageCenter: () => ({pos: SceneLocalPos, modelId: string})
+  getImageCenter: () => SceneLocalPos
   // 更改图标
   changeImage: (url: string) => void
   // 标注可见性