Browse Source

1.资产项目页面

GouGengquan 8 tháng trước cách đây
mục cha
commit
2292750809
2 tập tin đã thay đổi với 138 bổ sung32 xóa
  1. 20 0
      src/api/assetsProject.js
  2. 118 32
      src/views/assets/folder/parent.vue

+ 20 - 0
src/api/assetsProject.js

@@ -3,4 +3,24 @@ import request from '@/utils/request'
 // 新建项目
 export function createAssetsProject(params) {
     return request.post('/assetsProject/save/', params)
+}
+
+// 获取资产项目列表
+export function getAssetsProject(params) {
+    return request.get('/assetsProject/page/', { params: params })
+}
+
+// 获取项目详情
+export function getAssetsProjectDetail(params) {
+    return request.get(`/assetsProject/detail/${params}`)
+}
+
+// 修改资产项目
+export function updateAssetsProject(params) {
+    return request.put('/assetsProject/update/', params)
+}
+
+// 删除资产项目
+export function deleteAssetsProject(params) {
+    return request.delete(`/assetsProject/delete/${params}`)
 }

+ 118 - 32
src/views/assets/folder/parent.vue

@@ -19,42 +19,60 @@
         </svg>
         <span style="margin-left: 10px;">模板</span>
       </div>
-      <div class="createNew-div" @click="openCreateProjectDialog()">
+      <div class="createNew-div" @click="openProjectDialog()">
         <img src="../../../assets/icons/folder.png" style="width: 32px; height: 32px; float: left;margin-top: 22px;" />
         <span style="margin-left: 10px;">新的项目</span>
         <img src="../../../assets/icons/plus.png" style="width: 32px; height: 32px;float: right;margin-top: 22px;" />
       </div>
     </div>
-    <el-tabs v-model="activeName" class="condtion-tabs">
+    <el-tabs v-model="activeName" class="condtion-tabs" @tab-change="tabChange()">
       <el-tab-pane label="全部项目" name="all">
-        <div class="example-list">
-          <el-card class="report-item no-border" shadow="never"
-            @click="nextFolder('遂宁市船山区五彩缤纷路132号134号 136号等船山区慈音路2号南瑞弗莱明戈 10栋2层1商业')">
-            <div class="report-icon">
-              <img src="../../../assets/icons/folder.png" style="width: 52px; height: 52px;" />
-            </div>
-            <div class="report-text">
-              <div>
-                <span class="report-text-type">遂宁市船山区五彩缤纷路132号134号 136号等船山区慈音路2号南瑞弗莱明戈 10栋2层1商业</span>
+        <div class="example-list project-list">
+          <el-card class="report-item no-border" shadow="never" v-for="item in pageData">
+            <div @click="nextFolder(item.projectName)">
+              <div class="report-icon">
+                <img src="../../../assets/icons/folder.png" style="width: 52px; height: 52px;" />
+              </div>
+              <div class="report-text">
+                <div>
+                  <span class="report-text-type">{{ item.projectName }}</span>
+                </div>
+                <div style="padding-top: 5px;">
+                  <span>
+                    <el-icon>
+                      <Avatar />
+                    </el-icon>
+                    {{ item.principal }}</span>
+                  <span>
+                    <el-tag style="margin-left: 5px;" type="success">
+                      {{ item.projectTypeName }}
+                    </el-tag>
+                  </span>
+                  <span style="float: right; color:darkgrey">
+                    {{ item.createTime }}
+                  </span>
+                </div>
               </div>
-              <div style="padding-top: 5px;">
-                <span>
+            </div>
+            <el-popconfirm title="删除项目将一并删除测算表和报告?" confirm-button-text="确定" cancel-button-text="取消" @confirm="deleteProject(item.id)">
+              <template #reference>
+                <div class="report-button" style="margin-left: 20px;">
                   <el-icon>
-                    <Avatar />
+                    <Delete />
                   </el-icon>
-                  恒丰银行成都分行</span>
-                <span>
-                  <el-tag style="margin-left: 5px;" type="success">
-                    债权
-                  </el-tag>
-                </span>
-                <span style="float: right; color:darkgrey">
-                  2024-10-16 12:10:09
-                </span>
-              </div>
+                </div>
+              </template>
+            </el-popconfirm>
+            <div class="report-button" @click="getAssetsProjectDetail(item.id), openProjectDialog()">
+              <el-icon>
+                <Edit />
+              </el-icon>
             </div>
           </el-card>
         </div>
+        <el-pagination background layout="prev, pager, next" style="--el-color-primary: #ff6154"
+          v-model:page-count="listQuery.pages" v-model:current-page="listQuery.current"
+          @current-change="getAssetsProject" />
       </el-tab-pane>
       <el-tab-pane label="进行中的项目" name="pending">
         <div class="null-div">
@@ -73,7 +91,7 @@
         </div>
       </el-tab-pane>
     </el-tabs>
-    <el-dialog v-model="createProjectVisible" title="新建项目" width="600">
+    <el-dialog v-model="projectDialogVisible" title="新建项目" width="600" @close="assetsProject = {}">
       <el-form ref="createAssetsProject" :model="assetsProject" :rules="assetsProjectRules" label-width="auto"
         style="margin-top: 10px;">
         <el-row :gutter="10">
@@ -101,7 +119,10 @@
         </el-row>
         <el-row :gutter="10">
           <el-col :span="24">
-            <el-button type="primary" style="float:right;" @click="createProject()">创建模板</el-button>
+            <el-button type="primary" style="float:right;" @click="createProject()"
+              v-if="!assetsProject.id">创建项目</el-button>
+            <el-button type="primary" style="float:right;" @click="updateProject()"
+              v-if="assetsProject.id">修改项目</el-button>
           </el-col>
         </el-row>
       </el-form>
@@ -114,7 +135,7 @@
 import { mapStores } from 'pinia'
 import { useUserStore } from '@/stores/useUserStore';
 import { getDropDownBoxDataByCode } from '@/api/dictData';
-import { createAssetsProject } from '@/api/assetsProject';
+import { createAssetsProject, getAssetsProject, getAssetsProjectDetail, updateAssetsProject, deleteAssetsProject } from '@/api/assetsProject';
 
 export default {
   name: 'assetsParent',
@@ -123,7 +144,7 @@ export default {
       msg: 0,
       activeName: 'all',
       calculateType: [],
-      createProjectVisible: false,
+      projectDialogVisible: false,
       assetsProject: {},
       assetsProjectRules: {
         projectName: [
@@ -133,15 +154,29 @@ export default {
           { required: true, message: '请输入委托人', trigger: 'blur' }
         ],
         projectTypeId: [
-          { required: true, message: '请选择项目类型', trigger: 'change' }
+          { required: true, message: '请选择项目类型', trigger: 'blur' }
         ],
-      }
+      },
+      listQuery: {
+        current: 1,
+        size: 5,
+        pages: 1
+      },
+      pageData: null
     }
   },
   computed: {
     ...mapStores(useUserStore),
   },
+  created() {
+    this.getAssetsProject();
+  },
   methods: {
+    tabChange() {
+      if (this.activeName === "all") {
+        this.getAssetsProject();
+      }
+    },
     // 根据code获取字典数据
     getDictDropDownBoxDataByCode() {
       getDropDownBoxDataByCode('ASSET_PROJECT_TYPE').then(res => {
@@ -156,9 +191,9 @@ export default {
       this.$router.push({ path: '/home/assets/folder', query: { 'folderName': folderName } })
     },
     // 打开创建项目dialog
-    openCreateProjectDialog() {
+    openProjectDialog() {
       this.getDictDropDownBoxDataByCode();
-      this.createProjectVisible = true;
+      this.projectDialogVisible = true;
     },
     // 创建项目
     createProject() {
@@ -172,8 +207,55 @@ export default {
                 message: res.message,
                 type: 'success'
               })
+              this.getAssetsProject();
+            }
+            this.projectDialogVisible = false;
+          })
+        }
+      })
+    },
+    // 获取资产项目列表
+    getAssetsProject() {
+      getAssetsProject(this.listQuery).then(res => {
+        this.listQuery.pages = res.data.pages
+        this.pageData = res.data.records;
+      })
+    },
+    // 获取资产项目详情
+    getAssetsProjectDetail(id) {
+      getAssetsProjectDetail(id).then(res => {
+        this.assetsProject = res.data;
+      })
+    },
+    // 修改资产项目
+    updateProject() {
+      this.$refs.createAssetsProject.validate((valid) => {
+        if (valid) {
+          updateAssetsProject(this.assetsProject).then(res => {
+            if (res.code == 200) {
+              this.$refs.createAssetsProject.resetFields();
+              ElMessage({
+                showClose: true,
+                message: res.message,
+                type: 'success'
+              })
+              this.getAssetsProject();
             }
+            this.projectDialogVisible = false;
+          })
+        }
+      })
+    },
+    // 删除资产项目
+    deleteProject(id) {
+      deleteAssetsProject(id).then(res => {
+        if (res.code == 200) {
+          ElMessage({
+            showClose: true,
+            message: res.message,
+            type: 'success'
           })
+          this.getAssetsProject();
         }
       })
     },
@@ -291,6 +373,10 @@ export default {
   cursor: pointer;
 }
 
+.project-list {
+  min-height: 800px;
+}
+
 :deep(*) {
   color-scheme: light;
   --el-color-primary: #ff6154;