From ae2380cc0d430108e1122f6818e52bc4abc49d3a Mon Sep 17 00:00:00 2001
From: husq <931347610@qq.com>
Date: Wed, 30 Aug 2023 18:00:17 +0800
Subject: [PATCH] Merge branch 'develop' of http://s16s652780.51mypc.cn:49896/r/yskj/iot_drone_web into develop

---
 src/pages/page-web/projects/project_list/list_page/list.vue                   |   12 +++++
 src/pages/page-web/projects/project_list/list_page/components/ProjectList.vue |   53 ++++++++++++++++++++++++--
 src/api/project-page/index.ts                                                 |   24 ++++++++++++
 src/pages/page-web/projects/project_list/list_page/data.ts                    |    4 +-
 4 files changed, 86 insertions(+), 7 deletions(-)

diff --git a/src/api/project-page/index.ts b/src/api/project-page/index.ts
index a7e0540..38494a1 100644
--- a/src/api/project-page/index.ts
+++ b/src/api/project-page/index.ts
@@ -7,8 +7,32 @@
 
 }
 
+/**
+ * 获取分页数据
+ * @param query
+ */
 export const getPage = async function (query:any): Promise<IWorkspaceResponse<any>> {
   const url = `api/${HTTP_PREFIX}/project/getPage`
   const result = await request.get(url, query)
   return result.data
 }
+
+/**
+ * 修改
+ * @param query
+ */
+export const edit = async function (query:any): Promise<IWorkspaceResponse<any>> {
+    const url = `api/${HTTP_PREFIX}/project/edit`
+    const result = await request.post(url, query)
+    return result.data
+}
+
+/**
+ * 删除
+ * @param id
+ */
+export const del = async function (id:any):Promise<IWorkspaceResponse<any>>{
+    const url = `api/${HTTP_PREFIX}/project/delete`
+    const result = await request.get(url, {params:{id}})
+    return result.data
+}
diff --git a/src/pages/page-web/projects/project_list/list_page/components/ProjectList.vue b/src/pages/page-web/projects/project_list/list_page/components/ProjectList.vue
index 4860190..7cbf297 100644
--- a/src/pages/page-web/projects/project_list/list_page/components/ProjectList.vue
+++ b/src/pages/page-web/projects/project_list/list_page/components/ProjectList.vue
@@ -26,10 +26,10 @@
                                         <a href="javascript:;">编辑</a>
                                     </a-menu-item>
                                     <a-menu-item>
-                                        <a href="javascript:;">归档</a>
+                                        <a @click="editStatus(item)">归档</a>
                                     </a-menu-item>
                                     <a-menu-item>
-                                        <a href="javascript:;">删除</a>
+                                        <a @click="deleteItem(item)">删除</a>
                                     </a-menu-item>
                                 </a-menu>
                             </template>
@@ -56,15 +56,60 @@
 </template>
 
 <script setup lang="ts">
-import { DashOutlined, UserOutlined, ExportOutlined } from '@ant-design/icons-vue'
-import { defineProps } from 'vue'
+import { DashOutlined, UserOutlined, ExportOutlined, ExclamationCircleOutlined } from '@ant-design/icons-vue'
+import { defineEmits, defineProps, createVNode } from 'vue'
 import { status, projectCard } from './data'
+import { del, edit } from '/@/api/project-page'
+import { Modal, message } from 'ant-design-vue'
+
+const emit = defineEmits(['refreshList'])
 const props = defineProps({
   cardList: {
     type: Array as () => projectCard[],
     required: true,
   },
 })
+
+// 删除方法
+const deleteItem = (item:projectCard) => {
+  Modal.confirm({
+    title: () => '确认删除?',
+    icon: () => createVNode(ExclamationCircleOutlined),
+    content: () => '删除后项目内容将不可恢复,您确定要删除该项目吗?',
+    okText: () => '确定',
+    okType: 'danger',
+    cancelText: () => '取消',
+    onOk () {
+      del(item.id).then(res => {
+        if (res.code === 5000) {
+          message.success('删除成功')
+          emit('refreshList')
+        }
+      })
+    },
+  })
+}
+
+const editStatus = (item:projectCard) => {
+  Modal.confirm({
+    title: () => '确认归档?',
+    icon: () => createVNode(ExclamationCircleOutlined),
+    content: () => '项目完成后可归档,归档后 Pilot 将无法加入该项目,您确定要归档该项目吗?',
+    okText: () => '确定',
+    okType: 'danger',
+    cancelText: () => '取消',
+    onOk () {
+      const obj = { id: item.id, projectStatus: 2 }
+      edit(obj).then(res => {
+        if (res.code === 5000) {
+          message.success('归档成功')
+          emit('refreshList')
+        }
+      })
+    },
+  })
+}
+
 </script>
 
 <style scoped lang="scss">
diff --git a/src/pages/page-web/projects/project_list/list_page/data.ts b/src/pages/page-web/projects/project_list/list_page/data.ts
index 2640720..7a5a433 100644
--- a/src/pages/page-web/projects/project_list/list_page/data.ts
+++ b/src/pages/page-web/projects/project_list/list_page/data.ts
@@ -10,9 +10,9 @@
   { label: '未加入', value: '1' },
 ]
 export const sortOption = [
-  { label: '创建时间倒叙', value: 'createTime' },
+  { label: '创建时间倒序', value: 'createTime' },
   { label: '创建时间正序', value: 'createTimeAsc' },
-  { label: '项目名称倒叙', value: 'projectName' },
+  { label: '项目名称倒序', value: 'projectName' },
   { label: '项目名称正序', value: 'projectNameAsc' },
 ]
 export enum sortEnum{
diff --git a/src/pages/page-web/projects/project_list/list_page/list.vue b/src/pages/page-web/projects/project_list/list_page/list.vue
index 1120166..2d1f7ce 100644
--- a/src/pages/page-web/projects/project_list/list_page/list.vue
+++ b/src/pages/page-web/projects/project_list/list_page/list.vue
@@ -24,7 +24,11 @@
       </div>
     </div>
     <div class="wrap_card">
-      <List :cardList="cardList" />
+
+      <a-spin :spinning="spinning" :delay="delayTime">
+        <List @refreshList="init" :cardList="cardList" />
+      </a-spin>
+
     </div>
     <!-- <button @click="goDetail">列表详情</button> -->
   </div>
@@ -52,6 +56,10 @@
   ],
   projectName: '',
 })
+// ant 加载
+const spinning = ref<boolean>(false)
+const delayTime = 500
+
 const goDetail = () => {
   router.push({ name: ERouterName.WORKSPACE })
 }
@@ -77,8 +85,10 @@
 }
 // 页面初始化
 const init = async () => {
+  spinning.value = !spinning.value
   const res = await getProjectPage(params.value)
   cardList.value = res.data.records
+  spinning.value = !spinning.value
 }
 onMounted(() => {
   init()

--
Gitblit v1.9.3