gaoshp
2024-06-02 4065d7d35cd985b3da52efb6bede8bb1ae0674a2
完善FTP设置
已修改2个文件
191 ■■■■■ 文件已修改
src/components/scForm/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dnc/setting/FTP.vue 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/scForm/index.vue
@@ -4,7 +4,7 @@
 * @Author: sakuya
 * @Date: 2021年9月22日09:26:25
 * @LastEditors: Sneed
 * @LastEditTime: 2024-06-02 18:59:54
 * @LastEditTime: 2024-06-02 20:11:49
-->
<template>
@@ -111,7 +111,7 @@
                        </template>
                        <template v-else-if="item.component == 'el-tree-select'">
                            <el-tree-select v-model="form[item.name]" :data="item.options.data"
                                :multiple="item.options.multiple" show-checkbox default-expand-all style="width: 240px"
                                :multiple="item.options.multiple" show-checkbox default-expand-all style="width: 100%"
                                :props="{
                                    label: 'title',
                                    id: 'id',
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-02 20:46:48
 * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/dnc/setting/FTP.vue
-->
<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,51 @@
                    </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 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 +139,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 +207,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 +282,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>
<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>