From fbee7228e2f6e43b417d4c3f03020704831261cd Mon Sep 17 00:00:00 2001
From: gaoshp <291585735@qq.com>
Date: 星期日, 23 六月 2024 01:31:47 +0800
Subject: [PATCH] update

---
 src/views/dnc/setting/FTP.vue |  190 ++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 179 insertions(+), 11 deletions(-)

diff --git a/src/views/dnc/setting/FTP.vue b/src/views/dnc/setting/FTP.vue
index 1084c48..0043cc2 100644
--- a/src/views/dnc/setting/FTP.vue
+++ b/src/views/dnc/setting/FTP.vue
@@ -1,7 +1,7 @@
 <!--
  * @Date: 2024-05-26 22:26:35
  * @LastEditors: Sneed
- * @LastEditTime: 2024-06-02 19:17:45
+ * @LastEditTime: 2024-06-16 16:19:27
  * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/dnc/setting/FTP.vue
 -->
 <template>
@@ -13,7 +13,7 @@
                     label: 'title',
 
                 }" node-key="id">
-                <template #prefix>宸ヤ綅鐩綍</template>
+                <template #prefix><span style="margin-right: 6px;">宸ヤ綅鐩綍</span></template>
             </el-tree-select>
             <el-input v-model="params.name" style="width: 240px;margin-left: 8px;" placeholder="" clearable>
                 <template #prefix>鐩綍鍚嶇О</template>
@@ -23,7 +23,7 @@
         <el-main>
             <el-row :gutter="20" style="width: 100%;">
                 <el-col :span="12">
-                    <el-table :data="tableData" style="width: 100%">
+                    <el-table :data="tableData" style="width: 100%" @row-click="rowClick">
                         <el-table-column label="鐩綍鍚嶇О" prop="name" width=""></el-table-column>
                         <el-table-column label="鍏宠仈宸ヤ綅" prop="" width="">
                             <template #default="scope">
@@ -34,7 +34,7 @@
                             <template #default="scope">
                                 <el-button-group>
                                     <el-button text type="primary" size="small"
-                                        @click="table_edit(scope.row, scope.$index)">鍏宠仈宸ヤ綅</el-button>
+                                        @click.stop="table_edit(scope.row, scope.$index)">鍏宠仈宸ヤ綅</el-button>
                                     <el-popconfirm width="220" title="纭畾灏嗛�夋嫨鐨勬暟鎹垹闄�" @confirm="table_del(scope.row)">
                                         <template #reference>
                                             <el-button text type="primary" size="small">鍒犻櫎</el-button>
@@ -46,14 +46,52 @@
                     </el-table>
                 </el-col>
                 <el-col :span="12">
-                    <h2>FTP鐩綍</h2>
-                    <div>509</div>
+                    <h2 style="background-color: var(--el-color-primary);color: #fff;padding: 4px 20px;">FTP鐩綍</h2>
+                    <div class="directorName">
+                        <span>{{ directorName }}</span>
+                        <div class="hover">
+                            <el-icon>
+                                <el-icon-plus @click="addDirect" />
+                            </el-icon>
+                            <!-- <el-icon>
+                                <el-icon-edit />
+                            </el-icon>
+                            <el-icon>
+                                <el-icon-delete />
+                            </el-icon> -->
+                        </div>
+                    </div>
+                    <el-tree :expand-on-click-node="false" v-if="rootNodeId && showTree" ref="group" node-key="id"
+                        :props="{
+                            label: 'name',
+                            hasChildren: 'id'
+                        }" @node-click="nodeClick" highlight-current :current-node-key="selectNode.id" :load="loadNode"
+                        lazy>
+                        <template #default="{ node, data }">
+                            <div class="custom-tree-node">
+                                <span>{{
+                                    node.label }}</span>
+                                <el-icon style="margin-left: 100px;">
+                                    <el-icon-plus @click="addDirect(node)" />
+                                </el-icon>
+                                <el-icon>
+                                    <el-icon-edit @click="editDirect(node)" />
+                                </el-icon>
+                                <el-icon>
+                                    <el-icon-delete @click="delDirect(node)" />
+                                </el-icon>
+                            </div>
+                        </template>
+                    </el-tree>
                 </el-col>
             </el-row>
         </el-main>
-        <scDialog v-model="showAdd">
+        <scDialog v-model="showAdd" style="width: 600px">
             <scForm :config="config" :rules="rules" v-model="form" @submit="submit">
-
+            </scForm>
+        </scDialog>
+        <scDialog v-model="showdireactor" style="width: 600px">
+            <scForm :config="config1" :rules="rules1" v-model="form1" @submit="submit1">
             </scForm>
         </scDialog>
     </el-container>
@@ -102,7 +140,35 @@
                         }
                     }
                 ]
-            }
+            },
+            workstationId: '',
+            rootNodeId: '',
+            selectNode: {},
+            showTree: false,
+            showdireactor: false,
+            form1: {
+
+            },
+            rules1: {
+                name: [
+                    { required: true, message: '璇疯緭鍏ュ鍚�' }
+                ]
+            },
+            config1: {
+                labelWidth: 120,
+                formItems: [
+                    {
+                        component: 'input',
+                        label: '鍚嶇О',
+                        name: 'name',
+                        options: {
+                            placeholder: '',
+                            maxlength: 100,
+                        }
+                    },
+                ]
+            },
+            parentId: ''
         }
     },
     created() {
@@ -142,6 +208,9 @@
         search() {
             this.$HTTP.post(`/api/blade-dnc/ftp-director/ftp-workstation-list`, this.params).then(res => {
                 this.tableData = res.data
+                if (res?.data?.[0]) {
+                    this.rowClick(res.data[0])
+                }
             })
         },
         addFtp() {
@@ -214,9 +283,108 @@
             this.$HTTP.get(`/api/blade-dnc/ftp-director/del-director?id=${row.id}`).then(res => {
                 this.search()
             })
-        }
+        },
+        rowClick(row) {
+            this.showTree = false
+            this.directoryId = row.id
+            this.$HTTP.get(`/api/blade-dnc/dnc-fixed-space/tree-root-id?workstationId=${row.workstationDTOS[0].id}`).then(res => {
+                this.rootNodeId = res.data.rootNodeId
+                this.directorName = res.data.name
+                this.workstationId = row.workstationDTOS[0].id
+                this.showTree = true
+            })
+        },
+        loadNode(node, resolve) {
+            console.log(node)
+            if (!this.rootNodeId) return
+            let nodeId = node.level === 0 ? this.rootNodeId : node.data.id
+            this.$HTTP.get(`/api/blade-dnc/dnc-fixed-space/tree-fix-space?nodeId=${nodeId}&workstationId=${this.workstationId}`).then(res => {
+                if (node.level === 0) {
+                    this.showTree = res.data.length > 0
+                    // // this.$nextTick(() => {
+                    // this.nodeClick(res.data[0])
+                    // // })
+                }
+                resolve(res.data)
+            })
+        },
+        nodeClick(node) {
+            this.selectNode = node
+        },
+        addDirect(node) {
+            this.form1 = {}
+            this.parentId = node?.data?.id || this.rootNodeId
+            this.showdireactor = true
+        },
+        submit1(form) {
+            if (form.id) {
+                return this.$HTTP.post(`/api/blade-dnc/dnc-fixed-space/update-fix-space`, { directoryId: this.directoryId, name: form.name, id: form.id }).then(res => {
+                    this.showdireactor = false
+                    this.rowClick(this.tableData.find(v => v.id === this.directoryId))
+                })
+            }
+            this.$HTTP.post(`/api/blade-dnc/dnc-fixed-space/add-fix-space`, { directoryId: this.directoryId, name: form.name, parentId: this.parentId }).then(res => {
+                this.showdireactor = false
+                this.rowClick(this.tableData.find(v => v.id === this.directoryId))
+            })
+        },
+        editDirect(node) {
+            this.form1 = {
+                id: node.data.id,
+                name: node.data.name
+            }
+            this.parentId = node?.data?.id || this.rootNodeId
+            this.showdireactor = true
+        },
+        delDirect(node) {
+            console.log(node)
+            this.$HTTP.get(`/api/blade-dnc/dnc-fixed-space/del-fix-space?id=${node.data.id}`).then(res => {
+                this.rowClick(this.tableData.find(v => v.id === this.directoryId))
+            })
+        },
     },
 }
 </script>
 
-<style lang="scss" scoped></style>
\ No newline at end of file
+<style lang="scss" scoped>
+.directorName {
+    margin-top: 10px;
+    background-color: var(--el-color-primary);
+    color: #fff;
+    padding: 10px 30px;
+    display: flex;
+    justify-content: space-between;
+
+    .hover {
+        // visibility: hidden;
+        display: flex;
+
+        .el-icon {
+            margin: 0 4px;
+            cursor: pointer;
+        }
+    }
+}
+
+.directorName:hover {
+    .hover {
+        visibility: visible;
+    }
+}
+
+.custom-tree-node {
+    display: flex;
+    align-items: center;
+
+    .el-icon {
+        margin: 0 10px;
+        visibility: hidden;
+    }
+}
+
+.custom-tree-node:hover {
+    .el-icon {
+        visibility: visible;
+    }
+}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3