zdppy + vue3 + antd 实现一个表格编辑行,批量删除功能

编辑单元格和多选的功能

首先是编辑单元格的功能,点击编辑按钮,可以直接在表格中队内容进行编辑,点击保存以后能够同步到数据库。
在这里插入图片描述

其次是多选的功能,点击每行前面的多选框按钮,我们可以选中多行。
在这里插入图片描述
完整后端代码:

import api
import upload
import time
import amcomment
import env
import mcrud
import amuserdetailsave_dir = "uploads"
env.load(".env")
db = mcrud.new_env()app = api.Api(routes=[*amcomment.get_routes(db),*amuserdetail.get_routes(db),upload.download("/download/{filename}", save_dir),],middleware=[api.middleware.cors()]
)if __name__ == "__main__":app.run(port=8889)

完整前端代码:

<script setup>
import {cloneDeep} from 'lodash-es';
import {computed, onMounted, reactive, ref} from 'vue';
import axios from "axios";const columns = [{name: '姓名',dataIndex: 'name',id: 'name',},{name: '性别',dataIndex: 'gender',id: 'gender',},{title: '年龄',dataIndex: 'age',id: 'age',},{title: '电话',dataIndex: 'phone',id: 'phone',},{title: '邮箱',id: 'email',dataIndex: 'email',},{title: '薪资',id: 'salary',dataIndex: 'salary',},{title: '操作',id: 'action',},
];const dataSource = ref([]);const editableData = reactive({});const edit = id => {editableData[id] = cloneDeep(dataSource.value.filter(item => id === item.id)[0]);
};const save = id => {// backend updateaxios({method: "put",url: "http://127.0.0.1:8889/zdppy_amuserdetail/" + id,contentType: "application/json",data: editableData[id],}).then(resp => {console.log("update", resp.data);})// frontend updateObject.assign(dataSource.value.filter(item => id === item.id)[0], editableData[id]);delete editableData[id];
};const cancel = id => {delete editableData[id];
};// handle multi selected
const state = reactive({selectedRowKeys: [],// Check here to configure the default columnloading: false,
});const hasSelected = computed(() => state.selectedRowKeys.length > 0);
const start = () => {state.loading = true;// ajax request after empty completingsetTimeout(() => {state.loading = false;state.selectedRowKeys = [];}, 1000);
};const onSelectChange = selectedRowKeys => {console.log('selectedRowKeys changed: ', selectedRowKeys);state.selectedRowKeys = selectedRowKeys;
};onMounted(() => {axios({method: "get",url: "http://127.0.0.1:8889/zdppy_amuserdetail",}).then((response) => {console.log("response.data", response.data);const responseData = response.data.dataconsole.log("responseData=", responseData)dataSource.value = responseData.results;})
})
</script><template><div style="margin-bottom: 16px"><a-button type="primary" :disabled="!hasSelected" :loading="state.loading" @click="start">Reload</a-button><span style="margin-left: 8px"><template v-if="hasSelected">{{ `Selected ${state.selectedRowKeys.length} items` }}</template></span></div><a-table:columns="columns":data-source="dataSource":row-selection="{ selectedRowKeys: state.selectedRowKeys, onChange: onSelectChange }":row-key="record => record.id"bordered><template #headerCell="{ column }"><template v-if="column.id === 'name'"><span>{{ column.name }}</span></template><template v-else-if="column.id === 'gender'"><span>{{ column.name }}</span></template></template><template #bodyCell="{ column, text, record }"><template v-if="['name', 'age', 'address'].includes(column.dataIndex)"><div><a-inputv-if="editableData[record.id]"v-model:value="editableData[record.id][column.dataIndex]"style="margin: -5px 0"/><template v-else>{{ text }}</template></div></template><template v-else-if="column.id === 'action'"><div class="editable-row-operations"><span v-if="editableData[record.id]"><a-typography-link @click="save(record.id)">保存</a-typography-link><a-popconfirm title="Sure to cancel?" @confirm="cancel(record.id)"><a>取消</a></a-popconfirm></span><span v-else><a @click="edit(record.id)">编辑</a></span></div></template></template></a-table>
</template><style scoped>
.editable-row-operations a {margin-right: 8px;
}
</style>

不过目前有个问题,那就是没有实现批量删除的功能。我们可以在多选以后,点击批量删除按钮,同时删除被选中的数据。

实现前端批量删除的功能

如图:
在这里插入图片描述

选中任意两条数据以后,点击批量删除按钮,这时会弹出确认信息。
点击确认以后会触发一个方法,会在控制台输出需要被删除的数据的ID,是一个数组,用于执行批量删除的操作。

此时的完整前端代码如下:

<script setup>
import {cloneDeep} from 'lodash-es';
import {computed, onMounted, reactive, ref} from 'vue';
import axios from "axios";const columns = [{name: '姓名',dataIndex: 'name',id: 'name',},{name: '性别',dataIndex: 'gender',id: 'gender',},{title: '年龄',dataIndex: 'age',id: 'age',},{title: '电话',dataIndex: 'phone',id: 'phone',},{title: '邮箱',id: 'email',dataIndex: 'email',},{title: '薪资',id: 'salary',dataIndex: 'salary',},{title: '操作',id: 'action',},
];const dataSource = ref([]);const editableData = reactive({});const edit = id => {editableData[id] = cloneDeep(dataSource.value.filter(item => id === item.id)[0]);
};const save = id => {// backend updateaxios({method: "put",url: "http://127.0.0.1:8889/zdppy_amuserdetail/" + id,contentType: "application/json",data: editableData[id],}).then(resp => {console.log("update", resp.data);})// frontend updateObject.assign(dataSource.value.filter(item => id === item.id)[0], editableData[id]);delete editableData[id];
};const cancel = id => {delete editableData[id];
};// handle multi selected
const state = reactive({selectedRowKeys: [],// Check here to configure the default columnloading: false,
});const hasSelected = computed(() => state.selectedRowKeys.length > 0);
const start = () => {state.loading = true;// ajax request after empty completingsetTimeout(() => {state.loading = false;state.selectedRowKeys = [];}, 1000);
};const onSelectChange = selectedRowKeys => {console.log('selectedRowKeys changed: ', selectedRowKeys);state.selectedRowKeys = selectedRowKeys;
};// delete selected data
const onDeleteSelectedClick = () => {console.log("onDeleteSelectedClick", state.selectedRowKeys);
}
onMounted(() => {axios({method: "get",url: "http://127.0.0.1:8889/zdppy_amuserdetail",}).then((response) => {console.log("response.data", response.data);const responseData = response.data.dataconsole.log("responseData=", responseData)dataSource.value = responseData.results;})
})
</script><template><div class="flex space-x-3 py-3"><a-button type="primary" :disabled="!hasSelected" :loading="state.loading" @click="start">Reload</a-button><a-popconfirm title="您确认要删除选中的数据吗?" @confirm="onDeleteSelectedClick"><a-button type="primary" :disabled="!hasSelected" danger>批量删除</a-button></a-popconfirm></div><a-table:columns="columns":data-source="dataSource":row-selection="{ selectedRowKeys: state.selectedRowKeys, onChange: onSelectChange }":row-key="record => record.id"bordered><template #headerCell="{ column }"><template v-if="column.id === 'name'"><span>{{ column.name }}</span></template><template v-else-if="column.id === 'gender'"><span>{{ column.name }}</span></template></template><template #bodyCell="{ column, text, record }"><template v-if="['name', 'age', 'address'].includes(column.dataIndex)"><div><a-inputv-if="editableData[record.id]"v-model:value="editableData[record.id][column.dataIndex]"style="margin: -5px 0"/><template v-else>{{ text }}</template></div></template><template v-else-if="column.id === 'action'"><div class="editable-row-operations"><span v-if="editableData[record.id]"><a-typography-link @click="save(record.id)">保存</a-typography-link><a-popconfirm title="Sure to cancel?" @confirm="cancel(record.id)"><a>取消</a></a-popconfirm></span><span v-else><a @click="edit(record.id)">编辑</a></span></div></template></template></a-table>
</template><style scoped>
.editable-row-operations a {margin-right: 8px;
}
</style>

修改确认提示文本

修改之前:是OK和Cancel
在这里插入图片描述

修改之后:是确认和取消
在这里插入图片描述

核心代码如下:

<a-popconfirmtitle="您确认要删除选中的数据吗?"ok-text="确认"cancel-text="取消"@confirm="onDeleteSelectedClick"><a-button type="primary" :disabled="!hasSelected" danger>批量删除</a-button></a-popconfirm>
```此时前端的完整代码如下:
```html
<script setup>
import {cloneDeep} from 'lodash-es';
import {computed, onMounted, reactive, ref} from 'vue';
import axios from "axios";const columns = [{name: '姓名',dataIndex: 'name',id: 'name',},{name: '性别',dataIndex: 'gender',id: 'gender',},{title: '年龄',dataIndex: 'age',id: 'age',},{title: '电话',dataIndex: 'phone',id: 'phone',},{title: '邮箱',id: 'email',dataIndex: 'email',},{title: '薪资',id: 'salary',dataIndex: 'salary',},{title: '操作',id: 'action',},
];const dataSource = ref([]);const editableData = reactive({});const edit = id => {editableData[id] = cloneDeep(dataSource.value.filter(item => id === item.id)[0]);
};const save = id => {// backend updateaxios({method: "put",url: "http://127.0.0.1:8889/zdppy_amuserdetail/" + id,contentType: "application/json",data: editableData[id],}).then(resp => {console.log("update", resp.data);})// frontend updateObject.assign(dataSource.value.filter(item => id === item.id)[0], editableData[id]);delete editableData[id];
};const cancel = id => {delete editableData[id];
};// handle multi selected
const state = reactive({selectedRowKeys: [],// Check here to configure the default columnloading: false,
});const hasSelected = computed(() => state.selectedRowKeys.length > 0);
const start = () => {state.loading = true;// ajax request after empty completingsetTimeout(() => {state.loading = false;state.selectedRowKeys = [];}, 1000);
};const onSelectChange = selectedRowKeys => {console.log('selectedRowKeys changed: ', selectedRowKeys);state.selectedRowKeys = selectedRowKeys;
};// delete selected data
const onDeleteSelectedClick = () => {console.log("onDeleteSelectedClick", state.selectedRowKeys);
}
onMounted(() => {axios({method: "get",url: "http://127.0.0.1:8889/zdppy_amuserdetail",}).then((response) => {console.log("response.data", response.data);const responseData = response.data.dataconsole.log("responseData=", responseData)dataSource.value = responseData.results;})
})
</script><template><div class="flex space-x-3 py-3"><a-button type="primary" :disabled="!hasSelected" :loading="state.loading" @click="start">Reload</a-button><a-popconfirmtitle="您确认要删除选中的数据吗?"ok-text="确认"cancel-text="取消"@confirm="onDeleteSelectedClick"><a-button type="primary" :disabled="!hasSelected" danger>批量删除</a-button></a-popconfirm></div><a-table:columns="columns":data-source="dataSource":row-selection="{ selectedRowKeys: state.selectedRowKeys, onChange: onSelectChange }":row-key="record => record.id"bordered><template #headerCell="{ column }"><template v-if="column.id === 'name'"><span>{{ column.name }}</span></template><template v-else-if="column.id === 'gender'"><span>{{ column.name }}</span></template></template><template #bodyCell="{ column, text, record }"><template v-if="['name', 'age', 'address'].includes(column.dataIndex)"><div><a-inputv-if="editableData[record.id]"v-model:value="editableData[record.id][column.dataIndex]"style="margin: -5px 0"/><template v-else>{{ text }}</template></div></template><template v-else-if="column.id === 'action'"><div class="editable-row-operations"><span v-if="editableData[record.id]"><a-typography-link @click="save(record.id)">保存</a-typography-link><a-popconfirm title="Sure to cancel?" @confirm="cancel(record.id)"><a>取消</a></a-popconfirm></span><span v-else><a @click="edit(record.id)">编辑</a></span></div></template></template></a-table>
</template><style scoped>
.editable-row-operations a {margin-right: 8px;
}
</style>```## 实现批量删除的功能
后端本身已经有这个接口了,我们只需要在前端调用即可。核心代码如下:
```js// delete selected data
const onDeleteSelectedClick = () => {console.log("onDeleteSelectedClick", state.selectedRowKeys);state.loading = trueaxios({method: "delete",url: "http://127.0.0.1:8889/zdppy_amuserdetail_ids",contentType: "application/json",data: {ids: state.selectedRowKeys,}}).finally(() => {state.loading = false;loadTableData()})
}const loadTableData = () => {axios({method: "get",url: "http://127.0.0.1:8889/zdppy_amuserdetail",}).then((response) => {console.log("response.data", response.data);const responseData = response.data.dataconsole.log("responseData=", responseData)dataSource.value = responseData.results;})
}
onMounted(() => {loadTableData()
})
```此时完整的前端代码如下:
```html
<script setup>
import {cloneDeep} from 'lodash-es';
import {computed, onMounted, reactive, ref} from 'vue';
import axios from "axios";const columns = [{name: '姓名',dataIndex: 'name',id: 'name',},{name: '性别',dataIndex: 'gender',id: 'gender',},{title: '年龄',dataIndex: 'age',id: 'age',},{title: '电话',dataIndex: 'phone',id: 'phone',},{title: '邮箱',id: 'email',dataIndex: 'email',},{title: '薪资',id: 'salary',dataIndex: 'salary',},{title: '操作',id: 'action',},
];const dataSource = ref([]);const editableData = reactive({});const edit = id => {editableData[id] = cloneDeep(dataSource.value.filter(item => id === item.id)[0]);
};const save = id => {// backend updateaxios({method: "put",url: "http://127.0.0.1:8889/zdppy_amuserdetail/" + id,contentType: "application/json",data: editableData[id],}).then(resp => {console.log("update", resp.data);})// frontend updateObject.assign(dataSource.value.filter(item => id === item.id)[0], editableData[id]);delete editableData[id];
};const cancel = id => {delete editableData[id];
};// handle multi selected
const state = reactive({selectedRowKeys: [],// Check here to configure the default columnloading: false,
});const hasSelected = computed(() => state.selectedRowKeys.length > 0);
const start = () => {state.loading = true;// ajax request after empty completingsetTimeout(() => {state.loading = false;state.selectedRowKeys = [];}, 1000);
};const onSelectChange = selectedRowKeys => {console.log('selectedRowKeys changed: ', selectedRowKeys);state.selectedRowKeys = selectedRowKeys;
};// delete selected data
const onDeleteSelectedClick = () => {console.log("onDeleteSelectedClick", state.selectedRowKeys);state.loading = trueaxios({method: "delete",url: "http://127.0.0.1:8889/zdppy_amuserdetail_ids",contentType: "application/json",data: {ids: state.selectedRowKeys,}}).finally(() => {state.loading = false;loadTableData()})
}const loadTableData = () => {axios({method: "get",url: "http://127.0.0.1:8889/zdppy_amuserdetail",}).then((response) => {console.log("response.data", response.data);const responseData = response.data.dataconsole.log("responseData=", responseData)dataSource.value = responseData.results;})
}
onMounted(() => {loadTableData()
})
</script><template><div class="flex space-x-3 py-3"><a-button type="primary" :disabled="!hasSelected" :loading="state.loading" @click="start">Reload</a-button><a-popconfirmtitle="您确认要删除选中的数据吗?"ok-text="确认"cancel-text="取消"@confirm="onDeleteSelectedClick"><a-button type="primary" :disabled="!hasSelected" danger>批量删除</a-button></a-popconfirm></div><a-table:columns="columns":data-source="dataSource":row-selection="{ selectedRowKeys: state.selectedRowKeys, onChange: onSelectChange }":row-key="record => record.id"bordered><template #headerCell="{ column }"><template v-if="column.id === 'name'"><span>{{ column.name }}</span></template><template v-else-if="column.id === 'gender'"><span>{{ column.name }}</span></template></template><template #bodyCell="{ column, text, record }"><template v-if="['name', 'age', 'address'].includes(column.dataIndex)"><div><a-inputv-if="editableData[record.id]"v-model:value="editableData[record.id][column.dataIndex]"style="margin: -5px 0"/><template v-else>{{ text }}</template></div></template><template v-else-if="column.id === 'action'"><div class="editable-row-operations"><span v-if="editableData[record.id]"><a-typography-link @click="save(record.id)">保存</a-typography-link><a-popconfirm title="Sure to cancel?" @confirm="cancel(record.id)"><a>取消</a></a-popconfirm></span><span v-else><a @click="edit(record.id)">编辑</a></span></div></template></template></a-table>
</template><style scoped>
.editable-row-operations a {margin-right: 8px;
}
</style>```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/869946.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[论文笔记] 自对齐指令反翻译:SELF-ALIGNMENT WITH INSTRUCTION BACKTRANSLATION

https://arxiv.org/pdf/2308.06259 这篇论文介绍了一种名为“指令反向翻译”(instruction backtranslation)的方法,用于通过自动标记人类书写的文本和相应的指令来构建高质量的指令跟随语言模型。这里是一个通俗易懂的解释: 一、背景 通常,训练一个高质量的指令跟随语言…

GraphQL在Postman中:释放API查询的强大潜能

&#x1f680; GraphQL在Postman中&#xff1a;释放API查询的强大潜能 Postman作为API开发和测试的领先工具&#xff0c;对GraphQL的支持为开发者提供了一种新的方式来查询和管理数据。GraphQL是一种查询语言&#xff0c;用于API&#xff0c;允许客户端明确指定他们需要哪些数…

【Linux】命令执行的判断依据:;,,||

在某些情况下&#xff0c;很多命令我想要一次输入去执行&#xff0c;而不想要分次执行时&#xff0c;该如何是好&#xff1f; 基本上有两个选择&#xff0c; 一个是通过shell脚本脚本去执行&#xff0c;一种则是通过下面的介绍来一次入多个命令。 1.cmd&#xff1a;cmd&#…

Nuxt框架中内置组件详解及使用指南(五)

title: Nuxt框架中内置组件详解及使用指南&#xff08;五&#xff09; date: 2024/7/10 updated: 2024/7/10 author: cmdragon excerpt: 摘要&#xff1a;本文详细介绍了Nuxt框架中和组件的使用方法与配置&#xff0c;包括安装、基本用法、属性详解、示例代码以及高级功能如…

【LeYOLO】嵌入式和移动端的轻量级YOLO模型

代码地址&#xff1a;https://github.com/LilianHollard/LeYOLO 论文地址&#xff1a;https://arxiv.org/pdf/2406.14239 在深度神经网络中&#xff0c;计算效率对于目标检测至关重要&#xff0c;尤其是在新模型更注重速度而非有效计算&#xff08;FLOP&#xff09;的情况下。这…

ChatGPT-4o大语言模型优化、本地私有化部署、从0-1搭建、智能体构建技术

在过去几年中&#xff0c;人工智能领域的发展迅猛&#xff0c;尤其是大语言模型的应用&#xff0c;为各行各业带来了前所未有的创新与突破。从ChatGPT-3.5的推出到GPT Store的上线&#xff0c;再到最新的多模态交互ChatGPT-4o&#xff0c;OpenAI不断引领科技潮流&#xff0c;推…

Docker安装BRIA-RMBG-1.4模型,背景去除

目录 前言 模型描述 训练数据 定性评估 docker安装 运行 结论 Tip&#xff1a; 问题1&#xff1a; 问题2&#xff1a; 前言 BRIA 背景去除 v1.4 模型 RMBG v1.4 是我们最先进的背景去除模型&#xff0c;旨在有效地将各种类别和图像类型的前景与背景分开。该模型已在…

STM32空闲中断处理串口接受数据

1、检测到空闲线路中断也叫做空闲中断&#xff0c;意思是串口接收完1字节数据后&#xff0c;数据先保持高电平&#xff08;空闲&#xff09;的时间超过1字节数据所用的时间&#xff0c;则被判定为空闲中断。 2、HAL库中操作空闲中断的宏是 &#xff08;1&#xff09;_HAL_UAR…

tcp 中的poll机制介绍

加入 poll 或者 select 机制可以使程序更加健壮和高效,特别是在需要处理多个连接时。虽然上面的示例是基于单线程的 accept 和 read,它只能处理一个连接,直到它结束才能处理下一个连接。这种方法在简单应用中可能足够,但在实际生产环境中,通常会遇到需要同时处理多个连接的…

ch552g中使用SPI进行主从机通信时发现的问题

参考 基本硬件准备 两块独立的ch552g的板子&#xff0c;开始连接时数据传输出现数据错误&#xff0c;本来猜想是通信线连接问题&#xff0c;后来用了较短的连接线依然没有改善。 SPI通信的认知 SPI一般都是全双工实时通信&#xff0c;所以在发送数据时一般有短暂的停留使得…

到底哪款护眼大路灯好?五款适合学生用的护眼落地灯分享

到底哪款护眼大路灯好&#xff1f;影响青少年近视的最大“杀手”竟是学习环境光的影响。而对于这种情形&#xff0c;尤其是对于需要长时间用眼的学生群体和伏案工作者来说&#xff0c;护眼大路灯简直就是必备神器&#xff0c;但有人会问&#xff0c;我手机打开一搜就出现了那么…

防火墙综合实验一

目录 实验要求 防火墙准备 IP地址分配 需求一 需求二 需求三 需求四 需求五 需求六 实验要求 1、DMZ区内的服务器&#xff0c;办公区仅能在办公时间内(9:00-18:00)可以访问&#xff0c;生产区的设备全天可以访问。 2、生产区不允许访问互联网&#xff0c;办公区和游客…

qq动态删了怎么恢复?五分钟找回您的QQ动态

在使用QQ空间时&#xff0c;我们经常会发现自己误删了一些重要的动态。这可能是由于手指滑动不慎或者误操作引起的。无论是珍贵的回忆还是重要的信息&#xff0c;一旦被删除&#xff0c;我们都希望能够找回来。那么&#xff0c;qq动态删了怎么恢复&#xff1f; 在本文中&#…

vue2/3代码格式化问题,看着太难受了

1.原本的代码&#xff1a; 格式化后的代码&#xff1a; 太难受了&#xff01; 2.原本的代码 格式化后的代码 格式化跟有病似的&#xff0c;看着非常难受&#xff01; 有没有什么插件解决&#xff01;&#xff1f;

你知道的和你不知道的DOM操作技巧

你知道的和你不知道的DOM操作技巧 亲爱的前端小伙伴们&#xff0c;今天我们来聊聊那些你可能知道或者不知道的DOM操作技巧。作为一名前端开发者&#xff0c;如果你还在为DOM操作头疼&#xff0c;那么这篇文章绝对能让你茅塞顿开。让我们一起来探索一下DOM的奥秘吧&#xff01;…

2024春秋杯网络安全联赛夏季赛-PWN

文章目录 stdout测试setvbuf(stdout, 0LL, 2, 0LL)绕过或者输出直到缓冲区满使用system("/bin/sh")或者onegadget即使setvbuf(stdout, 0LL, 0, 0LL);也能立即有回显参考[https://starrysky1004.github.io/2024/07/05/2024-shu-qi-xue-xi-ji-lu/#toc-heading-4](https…

搜维尔科技:【研究】Scalefit是一款可在工作场所自动处理3D姿势分析结果的软件

Scalefit是一款可在工作场所自动处理 3D 姿势分析结果的软件。这甚至可以在衡量员工的同时发生。然后&#xff0c;Scalefit 根据国际标准对姿势、压缩力和关节力矩进行分析和可视化。 3D姿势分析 如今&#xff0c;Xsens 技术可让您快速测量工作场所员工的态度。一套带有 17 个…

开源无人机从入门到炸机,共需要几步?

阿木实验室2024年的重磅新品 Prometheus 仿真笔记本已经上架有一段时间了&#xff0c;近日&#xff0c;该产品的研发负责人廖工受邀到直播间与开发者们深度解读了Prometheus仿真笔记本的设计理念。直播过程中&#xff0c;廖工不仅展示了该产品的功能demo&#xff0c;解答技术开…

Postman API性能测试:解锁高级技巧的宝库

&#x1f680; Postman API性能测试&#xff1a;解锁高级技巧的宝库 在API开发和测试过程中&#xff0c;性能测试是确保API稳定性和可靠性的关键环节。Postman作为API测试的强大工具&#xff0c;提供了多种性能测试功能和高级技巧&#xff0c;帮助开发者深入分析API的性能表现…

掌握Conda配置术:conda config命令的深度指南

掌握Conda配置术&#xff1a;conda config命令的深度指南 引言 Conda是一个功能强大的包管理器和环境管理器&#xff0c;广泛用于Python和其他科学计算语言的依赖管理。conda config命令是Conda套件中用于配置和自定义Conda行为的关键工具。通过这个命令&#xff0c;用户可以…