husq
2023-09-27 2c2bc8614c8ea0ce386369eb4924da1e6aa052d1
src/pages/page-web/projects/project_list/list_page/components/ProjectList.vue
@@ -1,22 +1,12 @@
<!--
 * @Author: 胡思旗 931347610@qq.com
 * @Date: 2023-08-28 15:23:47
 * @LastEditors: husq 931347610@qq.com
 * @LastEditTime: 2023-09-08 09:14:02
 * @FilePath: \Cloud-API-Demo-Web\src\pages\page-web\projects\project_list\list_page\components\ProjectList.vue
 * @Description:项目列表组件
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
-->
<template>
  <div class="project-box flex-common">
    <a-spin :spinning="model" style="width: 100%;">
      <div class="project-card" v-for="item in cardList" :key="item.id">
        <div class="project-left">
      <div class="project-card" :class="{active: index == selectIndex}" v-for="(item, index) in cardList" :key="item.id">
        <div class="project-left" @click="goCenter(item, index)">
          <div class="head mb10 flex-display flex-align-center flex-justify-between">
            <div class="head-left flex-display flex-align-center">
              <a-tag color="#87d068">{{ status[item.projectStatus] }}</a-tag>
              <span class="head-text">{{ item.projectName }}</span>
              <a-tag color="#87d068">{{ status[item.projectStatus] || '进行中' }}</a-tag>
              <span class="head-text">{{ item.workspace_name }}</span>
            </div>
            <div class="head-right">
              <a-dropdown>
@@ -26,9 +16,9 @@
                    <a-menu-item>
                      <a @click="goEdit(item)">编辑</a>
                    </a-menu-item>
                    <a-menu-item>
                    <!-- <a-menu-item>
                      <a @click="editStatus(item)">归档</a>
                    </a-menu-item>
                    </a-menu-item> -->
                    <a-menu-item>
                      <a @click="deleteItem(item)">删除</a>
                    </a-menu-item>
@@ -38,7 +28,7 @@
            </div>
          </div>
          <div class="wrapper">
            <div class="introduction mb10">{{ item.projectIntro || '暂无简介' }}</div>
            <div class="introduction mb10">{{ item.workspace_desc || '暂无简介' }}</div>
            <div class="time mb5">创建时间: {{ item.createTime }}</div>
            <div class="manager mb5 flex-display flex-align-center">
              <user-outlined />
@@ -60,11 +50,15 @@
<script setup lang="ts">
import { DashOutlined, UserOutlined, ExportOutlined, ExclamationCircleOutlined } from '@ant-design/icons-vue'
import { defineEmits, defineProps, createVNode } from 'vue'
import { ERouterName } from '/@/types/index'
import { ELocalStorageKey, ERouterName } from '/@/types/index'
import { status, projectCard } from './data'
import { del, edit } from '/@/api/project-page'
import { delPlatformInfo } from '/@/api/manage'
import { Modal, message } from 'ant-design-vue'
import { useMyStore} from "/@/store";
import { useMyStore } from '/@/store'
import { flyTo, isEntityExist } from '/@/hooks/use-center-point'
const { appContext } = getCurrentInstance()
const global = appContext.config.globalProperties
const store = useMyStore()
const router = useRouter()
const emit = defineEmits(['refreshList', 'update:modelValue'])
@@ -84,6 +78,7 @@
  }
})
const spinning = ref<boolean>(true)
const selectIndex = ref(-1)
// 删除方法
const deleteItem = (item: projectCard) => {
  Modal.confirm({
@@ -94,8 +89,8 @@
    okType: 'danger',
    cancelText: () => '取消',
    onOk () {
      del(item.id).then(res => {
        if (res.code === 5000) {
      delPlatformInfo(item.id).then(res => {
        if (res.code === 0) {
          message.success('删除成功')
          emit('refreshList')
        }
@@ -129,17 +124,24 @@
    name: ERouterName.EDIT_PROJECT,
    query: { id: item.id }
  })
  store.commit('SET_POINT_LIST', [])
}
const goDetail = (item: any) => {
  console.log(11)
  store.commit('SET_PROJECT_ID', item.id)
  store.commit('SET_PROJECT_ID', item.workspace_id)
  localStorage.setItem(ELocalStorageKey.WorkspaceId, item.workspace_id)
  store.commit('SET_POINT_LIST', [])
  store.commit('SET_PROJECT_NAME', item.workspace_name)
  router.push({
    name: ERouterName.WORKSPACE,
    query: { id: item.id }
    query: { id: item.id, workSpaceId: item.workspace_id },
  })
}
const goCenter = (item:any, index:number) => {
  selectIndex.value === index ? selectIndex.value = -1 : selectIndex.value = index
  flyTo(global.$viewer, item.longitude, item.latitude)
  const flag = isEntityExist(global.$viewer, item.longitude, item.latitude)
}
</script>
<style scoped lang="scss">
@@ -161,7 +163,10 @@
    border-bottom: 1px solid #4f4f4f;
    display: flex;
  }
  .active {
    cursor: pointer;
    background-color: #101010;
  }
  .project-left {
    padding: 16px;
    flex: 1;