DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例14,TableView16_14 拖拽自动保存示例
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕
目录
- DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例14,TableView16_14 拖拽自动保存示例
- 📚前言
- 📚页面效果
- 📘组件代码
- 📚代码测试
- 📚测试代码正常跑通,附其他基本代码
- 📘编写路由 src\router\index.js
- 📘编写展示入口 src\App.vue
- 📚页面效果
📚📗📕📘📖🕮💡📝🗂️✍️🛠️💻🚀🎉🏗️🌐🖼️🔗📊👉🔖⚠️🌟🔐⬇️·正文开始
⬇️·🎥😊🎓📩😺🌈🤝🤖📜📋🔍✅🧰❓📄📢📈 🙋0️⃣1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣8️⃣9️⃣🔟🆗*️⃣#️⃣
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例14,TableView16_14 拖拽自动保存示例
📚前言
高效的训练算法是 DeepSeek 模型能够快速收敛并达到优异性能的关键因素之一。在模型训练过程中,DeepSeek 运用了一系列先进的训练算法,以加速模型的收敛速度,增强训练的稳定性,并提高模型的泛化能力。
📚页面效果
📘组件代码
<!-- TableView16_14.vue 拖拽自动保存示例 -->
<template><div class="drag-demo"><h2>14. 拖拽自动保存</h2><p class="description">拖拽排序后自动保存到本地或服务器</p><div class="save-options"><div class="option"><input type="radio" id="saveToLocal" value="local" v-model="saveMode"><label for="saveToLocal">保存到本地存储</label></div><div class="option"><input type="radio" id="saveToServer" value="server" v-model="saveMode"><label for="saveToServer">保存到服务器 (模拟)</label></div><div class="option"><input type="checkbox" id="enableDelay" v-model="enableDelay"><label for="enableDelay">启用延迟保存 (500ms)</label></div><button class="clear-btn" @click="clearSavedData">清除已保存数据</button></div><Table:data="taskList":columns="columns"draggable@update:data="handleDataUpdate"row-key="id"borderstripe:loading="saving"/><div v-if="saveStatus" class="save-status" :class="statusClass">{{ saveStatus }}<div v-if="saveProgress > 0 && saveProgress < 100" class="save-progress"><div class="progress-bar" :style="{ width: `${saveProgress}%` }"></div></div></div><div class="save-history" v-if="saveHistory.length > 0"><h3>保存历史</h3><ul><li v-for="(record, index) in saveHistory" :key="index">{{ record.action }} - {{ record.timestamp }}<span class="save-location">({{ record.mode === 'local' ? '本地存储' : '服务器' }})</span></li></ul></div></div>
</template><script setup>
import { ref, watch, onMounted } from 'vue'
import Table from '@/components/Table/Table.vue'const taskList = ref([{ id: 1, task: '需求文档定稿', status: '进行中', priority: '高' },{ id: 2, task: '技术方案评审', status: '已完成', priority: '高' },{ id: 3, task: '项目排期计划', status: '待处理', priority: '中' },{ id: 4, task: '开发环境搭建', status: '进行中', priority: '中' },{ id: 5, task: '基础组件开发', status: '未开始', priority: '高' },{ id: 6, task: '接口联调测试', status: '未开始', priority: '中' },
])const columns = [{ title: '任务', dataIndex: 'task', width: '250px' },{ title: '状态', dataIndex: 'status', width: '120px' },{ title: '优先级', dataIndex: 'priority', width: '100px' }
]// 保存相关状态
const saving = ref(false)
const saveStatus = ref('')
const statusClass = ref('')
const saveMode = ref('local') // 'local' 或 'server'
const enableDelay = ref(true)
const saveHistory = ref([])
const saveProgress = ref(0)
const saveTimeout = ref(null)// 初始化后从存储中加载数据
onMounted(() => {loadSavedData()
})// 数据更新处理
const handleDataUpdate = (newData) => {taskList.value = newData// 如果启用了延迟保存if (enableDelay.value) {// 清除之前的计时器if (saveTimeout.value) {clearTimeout(saveTimeout.value)}// 设置状态为"即将保存"saveStatus.value = '即将保存...'statusClass.value = 'pending'// 设置新的延迟保存计时器saveTimeout.value = setTimeout(() => {saveData()}, 500)} else {// 立即保存saveData()}
}// 保存数据
const saveData = async () => {try {saving.value = truesaveStatus.value = '保存中...'statusClass.value = 'saving'saveProgress.value = 0// 根据保存模式选择保存方法if (saveMode.value === 'local') {// 模拟进度const interval = setInterval(() => {saveProgress.value += 20if (saveProgress.value >= 100) {clearInterval(interval)}}, 100)// 保存到本地存储localStorage.setItem('drag-demo-tasks', JSON.stringify(taskList.value))// 等待进度条动画完成await new Promise(resolve => setTimeout(resolve, 500))clearInterval(interval)saveProgress.value = 100// 记录保存历史addSaveHistory('本地保存数据')saveStatus.value = '已保存到本地存储!'statusClass.value = 'success'} else {// 模拟服务器保存 (包含进度)for (let i = 0; i <= 100; i += 10) {saveProgress.value = iawait new Promise(resolve => setTimeout(resolve, 100))}// 记录保存历史addSaveHistory('保存数据到服务器')saveStatus.value = '已保存到服务器!'statusClass.value = 'success'}} catch (error) {saveStatus.value = '保存失败: ' + error.messagestatusClass.value = 'error'console.error('保存失败:', error)} finally {saving.value = false// 5秒后清除状态消息setTimeout(() => {if (statusClass.value === 'success' || statusClass.value === 'error') {saveStatus.value = ''statusClass.value = ''saveProgress.value = 0}}, 5000)}
}// 加载保存的数据
const loadSavedData = () => {const savedData = localStorage.getItem('drag-demo-tasks')if (savedData) {try {taskList.value = JSON.parse(savedData)saveStatus.value = '已从本地存储加载数据'statusClass.value = 'info'// 添加加载历史记录addSaveHistory('加载本地存储数据')// 3秒后清除状态消息setTimeout(() => {saveStatus.value = ''statusClass.value = ''}, 3000)} catch (error) {console.error('加载保存数据失败:', error)}}
}// 清除保存的数据
const clearSavedData = () => {localStorage.removeItem('drag-demo-tasks')saveStatus.value = '已清除保存的数据'statusClass.value = 'warning'// 添