使用a-directory-tree实现目录多选

文章描述了一个Vue应用中的<a-directory-tree>组件的使用,涉及v-model绑定、属性设置如dropdown-style、checkable等。主要功能包括获取目录数据、处理节点点击事件以加载子目录、实现节点禁用和选中逻辑。代码中定义了处理函数如getServiceLayerDataEvt、onCheckEvt,用于动态更新目录树并控制节点的选中状态。
摘要由CSDN通过智能技术生成
<a-directory-tree
    v-model:checkedKeys="selectedKeysVal"
    style="width: 100%"
    :dropdown-style="{
        maxHeight: '400px',
        overflow: 'auto',
    }"
    checkable
    :tree-data="serverLayerSelect"
    :field-names="fieldNames"
    @click="getServiceLayerDataEvt"
    @select="onCheckEvt"
></a-directory-tree>
const fieldNames: any = {
    children: 'children',
    title: 'name',
};
const selectedKeysVal: any = ref([]);// 选中选项的数组
//获取最初目录
const serverLayerSelect: Ref<Array<any>> = ref([]);
// 显示目录时调用该函数
const addMapLayerEvt = () => {
    serverLayerSelect.value = [];
    getSelectCatalogTrees().then((res: any) => {
        if (res.code == 200) {
            serverLayerSelect.value = res.data.map((it: any) => {
                it.disableCheckbox = true;
                return it;
            });
        }
    });
};
// 点击目录获取子目录
const getServiceLayerDataEvt = (checkedKeys: any,e: any) => {
    if (e.children.length == 0) {
        getCatalogLists({ id: e.id }).then((res: any) => {
            if (res.code == 200) {
                let list = res.data.map((it: any) => {
                    it.children = it.list;
                    it.disableCheckbox = true;
                    return it;
                });
                e.children = list.map((item: any) => {
                    item.disableCheckbox = true;
                    return item;
                });
                searchTree(serverLayerSelect.value, e.id, list);
            }
        });
    }
}
function searchTree(nodes: any, id: string, list: any) {
    for (let _i = 0; _i < nodes.length; _i++) {
        if (nodes[_i].id === id) {
            nodes[_i].children = list.map((it) => {
                it.disableCheckbox = true;
                return it;
            });
        } else {
            if (nodes[_i].children && nodes[_i].children.length > 0) {
                searchTree(nodes[_i].children, id, list);
            }
        }
    }
}
// 勾选显示
const onCheckEvt = (checkedKeys: string[], e: any) => {
    dealData(e.node);
};
const dealData = (data: any) => {
    if (data.children) {
        for (let i = 0; i < data.children.length; i++) {
            const data1 = data.children[i];
            if (data1) {
                dealData(data1);
            }
        }
    } else {
        // 不需要显示勾选的项
        if (data.id == '1574318899918864385') {
            selectedKeysVal.value = [];
            return;
        }
        if (data.id == '1582940878267809794') {
            return;
        }
        if (!selectedKeysVal.value.includes(data.key)) {
            selectedKeysVal.value.push(data.key);
        } else {
            selectedKeysVal.value.splice(
                selectedKeysVal.value.indexOf(data.key),
                1,
            );
        }
    }
};
使用Spring Integration FTP模块实现动态目录文件上传,需要使用`FtpRemoteFileTemplate`来完成上传操作。如果要实现动态目录上传,可以使用SpEL表达式来动态指定远程目录路径。 首先,需要在Spring配置文件中定义`FtpRemoteFileTemplate`和`FtpSessionFactory`: ```xml <bean id="ftpSessionFactory" class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory"> <property name="host" value="ftp.example.com"/> <property name="port" value="21"/> <property name="username" value="username"/> <property name="password" value="password"/> </bean> <bean id="ftpRemoteFileTemplate" class="org.springframework.integration.ftp.outbound.FtpRemoteFileTemplate"> <constructor-arg ref="ftpSessionFactory"/> <property name="useTemporaryFileName" value="false"/> </bean> ``` 然后,可以在代码中使用`FtpRemoteFileTemplate`进行上传操作: ```java @Autowired private FtpRemoteFileTemplate ftpRemoteFileTemplate; public void uploadFile(File file, String remoteDirectory) { ftpRemoteFileTemplate.execute(session -> { session.mkdir(remoteDirectory); session.write(new FileInputStream(file), remoteDirectory + "/" + file.getName()); return null; }); } ``` 在上面的代码中,使用`ftpRemoteFileTemplate.execute()`方法执行FTP操作,`session.mkdir(remoteDirectory)`方法创建远程目录,`session.write()`方法上传文件到指定目录使用SpEL表达式动态指定远程目录路径,可以在`remoteDirectory`参数中使用`${}`包围的表达式,例如: ```java String remoteDirectory = "/data/${new java.text.SimpleDateFormat('yyyy-MM-dd').format(new java.util.Date())}"; ``` 这个表达式会根据当前日期动态创建远程目录,例如:`/data/2022-05-23`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小满blue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值