前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕
目录
📚📗📕📘📖🕮💡📝🗂️✍️🛠️💻🚀🎉🏗️🌐🖼️🔗📊👉🔖⚠️🌟🔐⬇️·正文开始
⬇️·🎥😊🎓📩😺🌈🤝🤖📜📋🔍✅🧰❓📄📢📈 🙋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"
border
stripe
: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 = true
saveStatus.value = '保存中...'
statusClass.value = 'saving'
saveProgress.value = 0
// 根据保存模式选择保存方法
if (saveMode.value === 'local') {
// 模拟进度
const interval = setInterval(() => {
saveProgress.value += 20
if (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 = i
await new Promise(resolve => setTimeout(resolve, 100))
}
// 记录保存历史
addSaveHistory('保存数据到服务器')
saveStatus.value = '已保存到服务器!'
statusClass.value = 'success'
}
} catch (error) {
saveStatus.value = '保存失败: ' + error.message
statusClass.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'
// 添