使用#sortablejs插件對表格中拖拽行排序#Vue3#后端接口數據

使用#sortablejs對表格中拖拽行排序#Vue3#后端接口數據

*效果:
在這里插入圖片描述

拖動表格行排序

首先安裝插件sortable

npm install sortablejs --save

代碼:

<template><!-- sortable.js 進行表格排序 --><!-- 演示地址 --><div class="dem-add"><!-- Search start --><div class="dem-title"><p>演示地址</p><el-inputclass="query-input"v-model="tableForm.demoDevice"placeholder="搜索"@keyup.enter="handleQueryName"><template #prefix><el-icon class="el-input__icon"><search /></el-icon></template></el-input><el-button type="primary" :icon="Plus" circle @click="handleAdd" /></div><!-- Search end --><!-- Table start --><div class="bs-page-table"><el-table :data="tableData" :row-key="(record) => record.sort"><el-table-column prop="sort" label="排序" width="60" /><el-table-column prop="demoDevice" label="演示端" width="150" /><el-table-column prop="address" label="地址" width="180" /><el-table-column prop="description" label="特殊說明" width="180" /><el-table-column prop="fileIds" label="附加" width="100"><template #default="scope"><a:href="`http://192.168.1.214:5050${scope.row.files[0].filePath}`"style="color: blue; text-decoration: none"target="_blank"><el-buttoncirclesize="default"type="default":icon="FolderChecked"></el-button></a></template></el-table-column><el-table-column fixed="right" label="操作" width="100"><template #default="scope"><el-buttontype="danger"@click="handleRowDel(scope.$index)":icon="Delete"circle/></template></el-table-column></el-table><el-dialog v-model="dialogFormVisible" title="新增" width="500"><el-form :model="tableForm"><el-form-item label="排序" :label-width="80"><el-input v-model="tableForm.sort" autocomplete="off" /></el-form-item><el-form-item label="演示端" :label-width="80"><el-input v-model="tableForm.demoDevice" autocomplete="off" /></el-form-item><el-form-item label="地址" :label-width="80"><el-input v-model="tableForm.address" autocomplete="off" /></el-form-item><el-form-item label="特殊說明" :label-width="80"><el-input v-model="tableForm.description" autocomplete="off" /></el-form-item><el-form-item label="附加" :label-width="80"><el-uploadmultipleclass="upload-demo"action="":http-request="uploadFile"list-type="picture"><el-button type="primary">上傳文件</el-button></el-upload></el-form-item></el-form><template #footer><div class="dialog-footer"><el-button @click="dialogFormVisible = false"> 取消 </el-button><el-button type="primary" @click="dialogConfirm"> 確認 </el-button></div></template></el-dialog></div><!-- Table end --></div>
</template>
<script setup lang="ts">
import { Plus } from "@element-plus/icons-vue";
import { ref, onMounted, toRaw } from "vue";
import axios from "axios";
import { useRouter } from "vue-router";
import { Search } from "@element-plus/icons-vue";
import { Delete } from "@element-plus/icons-vue";
import { FolderChecked } from "@element-plus/icons-vue";
import { nextTick } from "vue";
import Sortable from "sortablejs";const router = useRouter();
console.log(router.currentRoute.value.path); //當前路由路徑
sessionStorage.setItem("path", router.currentRoute.value.path);// 演示地址
// 拖動行排序
const changeRow = () => {const el = document.querySelector(".el-table__body-wrapper tbody");new Sortable(el, {animation: 150, // 動畫// sort: true,ghostClass: "sortable-ghost",onEnd: (evt: any) => {console.log("oldIndex", evt.oldIndex); // 當前行的被拖拽前的順序console.log("newIndex", evt.newIndex); // 當前行的被拖拽后的順序const curRow = tableData.value.splice(evt.oldIndex, 1)[0];tableData.value.splice(evt.newIndex, 0, curRow);console.log("tableData.value新數據", tableData.value);},});
};// 定義表格
const tableData = ref<any>([]);
// 定義彈窗表單
let tableForm = ref({sort: "",demoDevice: "",address: "",description: "",fileIds: <any>[],file: "",
});
// 默認對話框關閉狀態
const dialogFormVisible = ref(false);
// 調用接口數據在表單顯示
const port1 = async () => {await axios.post("http://192.168.1.214:5050/api/Project/DemoGetTable", {pageIndex: 1,pageSize: 100,projectId: "1",}).then((response) => {// 將找到的數據返回給表單顯示tableData.value = response.data.data.list;console.log("tableData.value原數據", tableData.value);}).catch((error) => {console.error(error);});
};
// 掛載
onMounted(() => {port1();nextTick(() => {changeRow();});
});
// 搜索(通過name值查找)
const handleQueryName = () => {console.log("搜索");
};
// 新增
const handleAdd = async () => {// 打開新增對話框dialogFormVisible.value = true;// 設置空的綁定對象tableForm.value = {demoDevice: "",address: "",description: "",sort: "",fileIds: [],file: "",};
};
// 上傳文件
const uploadFile = async (val: any) => {tableForm.value.file = val.file;// 數據交互let formdata = new FormData();formdata.append("File", tableForm.value.file);axios// 上傳文件接口.post("http://192.168.1.214:5050/api/File/UploadFile", formdata, {headers: { "Content-Type": "multipart/form-data" },}).then((res) => {// 將文件id值傳給tableForm的屬性fileIdstableForm.value.fileIds.push(res.data.data.id);const newobj = Object.assign({ projectId: "1" }, toRaw(tableForm.value));axios// 添加演示地址接口.post("http://192.168.1.214:5050/api/Project/DemoAdd", newobj);});
};
// 刪除
const handleRowDel = async (index: any) => {// 找到要刪除的接口中對應的對象await axios.post("http://192.168.1.214:5050/api/Project/DemoDel", {// 獲取到當前索引index下的id值,toRaw()方法獲取原始對象id: toRaw(tableData.value[index]).id,});// 從index位置開始,刪除一行即可tableData.value.splice(index, 1);
};
// 確認表單彈窗
const dialogConfirm = () => {dialogFormVisible.value = false;port1();
};
</script><style scoped lang="scss">
// 演示地址
.dem-add {width: 800px;margin: 20px 50px;background-color: rgba(255, 255, 255, 0.333);box-shadow: 0 8px 16px #0005;border-radius: 16px;overflow: hidden;// 標簽.dem-title {display: flex;justify-content: space-between;align-items: center;background-color: rgba(207, 204, 204, 0.267);padding: 0 20px;p {float: left;width: 150px;color: #000;}// 搜索::v-deep .el-input__wrapper {border-radius: 100px;}.query-input {width: 240px;height: 35px;margin: 10px auto;margin-left: 330px;background-color: transparent;transition: 0.2s;}::v-deep .el-input__wrapper:hover {background-color: #fff8;box-shadow: 0 5px 40px #0002;}// 增加按鈕.el-button {float: left;margin-top: 3px;margin-left: 10px;}}// 表格.bs-page-table {.el-table {width: 100%;border: 1px solid rgb(219, 219, 219);padding: 10px;.el-table-column {border-collapse: collapse;text-align: left;}}}// 分頁.demo-pagination-block {padding: 9px 20px;}
}
</style>

#這個只是表面功夫,后端數據庫中的數據排序一直都沒變,所以想要真正改變排序,還需要后端寫個接口。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/23423.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23423.shtml
英文地址,請注明出處:http://en.pswp.cn/web/23423.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

618值得推薦的洗地機有哪些?附上最全洗地機選購攻略

洗地機的出現&#xff0c;讓家庭清潔變得越來越高效&#xff0c;它省時省力的洗地方式&#xff0c;自帶水箱和除菌模式&#xff0c;還能減輕我們家庭清潔的負擔&#xff0c;但由于目前市面上家用洗地機品牌和種類眾多&#xff0c;讓大家挑選起來比較困難。那么家用洗地機哪個品…

Go微服務: 關于分布式系統中的常見問題,分布式事務,以及常用解決方案

概述 在當今的互聯網時代&#xff0c;分布式系統已成為支撐大規模服務、高并發和高性能應用的基石它們通過網絡連接多臺計算機&#xff0c;協同工作&#xff0c;共同完成任務&#xff0c;但這也引入了諸如數據一致性、網絡延遲、容錯性等挑戰解決這些問題的關鍵在于設計和實施…

String,StringBuffer,StringBuilder的區別?

String是不可變的&#xff0c;StringBuffer和StringBuilder是可變的。StringBuffer是線程安全的&#xff0c;StringBuilder是非線程安全的。 String的 是如何實現的 使用拼接字符串&#xff0c;其實只是Java提供的一個語法糖。 其實String的 底層是new 了一個StringBuilde…

ssh遠程管理

SSH遠程管理 ssh是一種安全通道協議&#xff0c;只能用來實現字符界面的遠程登錄。遠程復制&#xff0c;遠程文本傳輸。 ssh對通信雙方的數據進行了加密。 用戶名和密碼登錄 密鑰對認證方式&#xff08;可以實現免密登錄&#xff09; ssh 端口號22 網絡層 傳輸層 數據傳輸…

嵌入式軟件中static的用法

目錄 一、引言 二、static關鍵字的基本用法 四、static的使用場景 五、總結 一、引言 在嵌入式軟件開發中&#xff0c;static是一個至關重要的關鍵字&#xff0c;用于控制變量的存儲周期和可見性&#xff0c;以及函數的可見性。本報告將全面介紹static在嵌入式C語言編程中…

篩斗數據:如何利用數據提取提高營銷效果?

要利用數據提取提高營銷效果&#xff0c;企業需要采取一系列策略來確保他們能夠從收集的數據中獲取有價值的見解&#xff0c;并將這些見解應用于營銷活動中。以下是一些關鍵步驟和策略&#xff1a; 1. 定義目標和關鍵績效指標&#xff1a;在開始任何數據提取之前&#xff0c;首…

PDF格式分析(八十五)——水印注釋(Watermark)

水印注釋(PDF1.6及其以上版本),水印可表現為文字、圖片、圖像,水印大小固定,顯示在頁面位置固定,而不論打印頁的尺寸(注意打印時,可能打印不全喲)。需要注意的是:水印注釋沒有彈出窗口。 水印注釋字典條目如下表: 條目類型說明Subtypename(必填)本詞典所描述的注釋類型…

【重學C語言】十八、SDL2 圖形編程介紹和環境配置

【重學C語言】十八、SDL2 圖形編程介紹和環境配置 **SDL2介紹**SDL 2用途SDL 在哪些平臺上運行&#xff1f;下載和安裝 SDL2安裝 SDL2 clion 配置 SDL2 SDL2介紹 SDL2&#xff08;Simple DirectMedia Layer 2&#xff09;是一個開源的跨平臺多媒體開發庫&#xff0c;主要用于游…

最優化練習題

def f(x):return x*x-4*x5 a0,b01,31、均勻搜索 令 δ ( b 0 ? a 0 ) / N , a i a 0 i δ , i 1 , 2 , 3 \delta(b_0-a_0)/N,a_ia_0i\delta,i1,2,3 δ(b0??a0?)/N,ai?a0?iδ,i1,2,3 while b0-a0>0.1:anp.linspace(a0,b0,5)for i in range(1,4):if f(a[i-1])>f…

flutter3-os:基于flutter3.x+dart3+getx手機版os管理系統

flutter3-os-admin跨平臺手機后臺OS系統。 原創Flutter3.22Dart3.4Getxfl_chart等技術開發仿ios手機桌面OA管理系統。自研柵格化布局引擎、自定義桌面壁紙、小部件、底部Dock菜單、可拖拽懸浮球等功能。 全新自研柵格化OS菜單布局引擎。 使用技術 編輯器&#xff1a;VScode技術…

深入理解feign遠程調用的各種超時參數

1. 引言 在spring cloud微服中&#xff0c;feign遠程調用可能是大家每天都接觸到東西&#xff0c;但很多同學卻沒咋搞清楚這里邊的各種超時問題&#xff0c;生產環境可能會蹦出各種奇怪的問題。 首先說下結論&#xff1a; 1)只使用feign組件&#xff0c;不使用ribbion組件&…

【Text2SQL 論文】How to prompt LLMs for Text2SQL

論文&#xff1a;How to Prompt LLMs for Text-to-SQL: A Study in Zero-shot, Single-domain, and Cross-domain Settings ???? arXiv:2305.11853, NeurlPS 2023 Code: GitHub 一、論文速讀 本文主要是在三種常見的 Text2SQL ICL settings 評估不同的 prompt constructio…

數據分析必備:一步步教你如何用Pandas做數據分析(18)

1、Pandas 串聯 Pandas 連接的操作實例 Pandas提供了各種功能&#xff0c;可以輕松地將Series&#xff0c;DataFrame和Panel對象組合在一起。 pd.concat(objs,axis0,joinouter,join_axesNone,ignore_indexFalse)objs ? 這是Series的序列或映射&#xff0c;DataFrame或Panel對…

【云嵐到家】-day01-項目熟悉-查詢區域服務開發

文章目錄 1 云嵐家政項目概述1.1 簡介1.2 項目業務流程1.3 項目業務模塊1.4 項目架構及技術棧1.5 學習后掌握能力 2 熟悉項目2.1 熟悉需求2.2 熟悉設計2.2.1 表結構2.2.2 熟悉工程結構2.2.3 jzo2o-foundations2.2.3.1 工程結構2.2.3.2 接口測試 3 開發區域服務模塊3.1 流程分析…

Python接口自動化之使用requests庫發送http請求

requests庫 ? 什么是Requests &#xff1f;Requests 是?Python語?編寫&#xff0c;基于urllib&#xff0c;采?Apache2 Licensed開源協議的 HTTP 庫。它? urllib 更加?便&#xff0c;可以節約我們?量的?作&#xff0c;完全滿?HTTP測試需求。 ? 安裝&#xff1a;cmd命…

docker 拉取不到鏡像的問題:拉取超時

error pulling image configuration: download failed after attempts6: dial tcp 31.13.94.10:443: i/o timeout 首先設置國內的鏡像源&#xff1a;復制下面直接執行 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF{"registry-mirrors"…

【POSIX】消息類的格式與使用

本文給出一個MacOS操作系統中的消息類的使用過程示例&#xff08;結合gencat命令&#xff0c;<nl_types.h>頭文件以及catopen,catgets,catclose3個函數&#xff09; 首先根據對應的操作系統&#xff0c;查看 gencat 命令 man gencat 可以詳細看到其中對于輸入文件&…

Spark MLlib 機器學習詳解

目錄 &#x1f349;引言 &#x1f349;Spark MLlib 簡介 &#x1f348; 主要特點 &#x1f348;常見應用場景 &#x1f349;安裝與配置 &#x1f349;數據處理與準備 &#x1f348;加載數據 &#x1f348;數據預處理 &#x1f349;分類模型 &#x1f348;邏輯回歸 &a…

? 傳知代碼 ? 輔助任務改進社交帖子多模態分類

&#x1f49b;前情提要&#x1f49b; 本文是傳知代碼平臺中的相關前沿知識與技術的分享~ 接下來我們即將進入一個全新的空間&#xff0c;對技術有一個全新的視角~ 本文所涉及所有資源均在傳知代碼平臺可獲取 以下的內容一定會讓你對AI 賦能時代有一個顛覆性的認識哦&#x…

【自然語言處理】【Scaling Law】語言模型物理學 第3.3部分:知識容量Scaling Laws

語言模型物理學3.3&#xff1a;知識容量Scaling Laws 論文名稱&#xff1a;Physics of Language Models: Part 3.3, Knowledge Capacity Scaling Laws 論文地址&#xff1a;https://arxiv.org/pdf/2404.05405 相關博客 【自然語言處理】【Scaling Law】Observational Scaling …