【Layui】------ layui实现table表格拖拽行、列位置的示例代码

 一、完整的示例代码:(请使用layui v2.8.3的版本)看懂就能用、不要照搬、照搬会出错误、拷贝重要代码改改符合你自己的需求。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>附件列表</title><link rel="stylesheet" href="/libs/bootstrap/css/bootstrap.css"><link rel="stylesheet" href="/libs/layui/v2.8.3/css/layui2.css"><link rel="stylesheet" href="/libs/layui/soulTable.css"><!--<link rel="stylesheet" href="/libs/layui/plugins/formSelects/formSelects-v4.css">--><link rel="stylesheet" href="/jruntime/views/layui/css/base.css"><link rel="stylesheet" href="/libs/font-awesome-4.7.0/css/font-awesome.min.css"><link rel="stylesheet" href="/libs/layui/v2.8.3/css/modules/layer.css"><!--<link rel="stylesheet" href="/libs/jstree_dark/dist/themes/default/style.min.css"/>--><style>*::-webkit-scrollbar {/*滚动条整体样式*/width :10px;  /*高宽分别对应横竖滚动条的尺寸*/height: 10px;}.imxCheckbox{cursor: default;}.layui-form-item .layui-inline {margin-bottom: -2px;}.v_date {cursor: pointer;width: 100%;height: 30px;}.layui-bg-gray {background-color: #efefef!important;color: #666!important;}.div-file-search{position: absolute;top:20px;right: 30px;}.div-file-search button{background: linear-gradient(to right, #0984e3 0%,#3aaaff 100%);}</style>
</head>
<body><div id='frm-imp' style = "display : none ;height:150px"  ><div class="layui-card-body" ><div class="layui-row"><div class="layui-col-xs12 layui-col-sm12 layui-col-md12"><button type="button" class="layui-btn" id="btn-imp-template-download" ><a href="/dcs/fileGL_V2/download/文件数据导入模板.xls">下载模板</a></button><button type="button" class="layui-btn" id="btn-imp-data-check" onclick="javasctip:window.fn_chk_data();">检查数据</button><button type="button" class="layui-btn" id="btn-imp-data" onclick="javasctip:window.fn_imp_data();">导入数据</button></div></div><div class="layui-row"><div class="layui-form-item layui-form-text"></div></div><div class="layui-row"><div class="layui-col-xs12 layui-col-sm12 layui-col-md12"><div class="layui-form-item layui-form-text"><label class="layui-form-label">导入描述</label><div class="layui-input-block"><textarea placeholder="" class="layui-textarea" style="height: 300px" name="desc">
导入说明:1.使用【下载模板】功能下载模板。2.在模板中整理数据,一定不要改标题名称,列顺序可以更改。3.执行【导入数据】功能将将整理后的数据导入。注意事项:1.数据要顶格放,顶部不要留空行,第一行放标题,第二行开始放数据2.数据列顺序可以不一致,但标题必须一致!3.导入数据缺少数据完整性验证,导入的单据必须重新审核一遍!</textarea></div></div></div></div></div>
</div><!--查询区块-->
<div class="layui-bg-gray"><div class="" style="background-color: #fff;"><div class="layui-col-md12"><div class="layui-panel"><form id="formWhereData" class="layui-form" lay-filter="layForm"><div style="height: 20px;"></div><div class="layui-row"><div class="layui-col-xs3 layui-col-sm3 layui-col-md3" style="display: none;"><div class="layui-form-item"><label class="layui-form-label" style="width: 100px;">全文内容:</label><div class="layui-input-block"><input type="text"  id="txt_Context"  autocomplete="off" placeholder="请输入关键字"  class="layui-input"></div></div></div><div class="layui-col-xs3 layui-col-sm3 layui-col-md3"><div class="layui-form-item"><label class="layui-form-label" style="width: 110px;">查询字段</label><div class="layui-input-block"><select id="txt_Key" lay-filter="select_key"><option value="">--请选择--</option></select></div></div></div><div class="layui-col-xs1 layui-col-sm1 layui-col-md1"><div class="layui-form-item"><!--<label class="layui-form-label">风险名称</label>--><div class="layui-input-block" style="margin-left: 20px;"><select id="txtFuHao"><option value="包含">包含</option><option value="等于">等于</option><option value="范围">范围</option><option value="大于">大于</option><option value="小于">小于</option><option value="大于等于">大于等于</option><option value="小于等于">小于等于</option><option value="不等于">不等于</option><option value="不包含">不包含</option><option value="字符开始">字符开始</option><option value="字符结束">字符结束</option></select></div></div></div><div class="layui-col-xs2 layui-col-sm2 layui-col-md2"><div class="layui-form-item"><div class="layui-input-block" style="margin-left: 20px;"><input type="text"  id="txt_Value"  autocomplete="off"  class="layui-input"><input type="text"  id="txt_Value_Time"  autocomplete="off"  class="layui-input" style="display: none;"></div></div></div><div class="layui-col-xs1 layui-col-sm1 layui-col-md1" style="max-width: 30px;"><div class="layui-form-item" style="margin-left: 0px;"><div class="layui-input-block" style="margin-left: 0px;"><button type="button" class="btn dropdown-toggle edb-nav-btn" id="txtKeyList"data-toggle="dropdown" style="height: 38px;"><span class="caret"></span></button><ul class="dropdown-menu pull-right" style="max-height:400px; max-width:800px;  overflow:auto"><li id="Li2"><a href="#">无</a></li></ul></div></div></div><div class="layui-col-xs2 layui-col-sm2 layui-col-md2"><div class="layui-form-item" style="margin-left: 20px;"><button type="button" class="layui-btn" id="btn-query">查询</button><button type="button" class="layui-btn layui-btn-primary" id="btn-reset">重置</button></div></div></div><div style="height: 16px;"></div></form><div class="div-file-search"><button type="button" class="layui-btn layui-btn-normal layui-btn-radius" id="btn-all-recall"><i class="fa fa-clipboard"></i> 全文检索</button></div></div></div></div>
</div><!--文件区块-->
<div class="layui-bg-gray"><div class="layui-row layui-col-space15" style="margin-top: 15px"><div class="layui-col-md12"><div class="layui-card"><div class="layui-card-header"><i class="fa fa-table"></i> 数据列表</div><div class="layui-card-body imxList" style="padding: 3px 15px;"><div class="edb-toolbar-2017"><span id="btntable-add" class="edb-nav-btn"><i class="fa fa-plus-square"></i><span>新增</span></span><span id="btntable-edit" class="edb-nav-btn"><i class="fa fa-edit"></i><span>编辑</span></span><span id="btntable-del" class="edb-nav-btn"><i class="fa fa-remove"></i><span>删除</span></span><span id="btntable-refresh" class="edb-nav-btn"><i class="fa fa-refresh"></i><span>刷新</span></span><span id="btntable-move" class="edb-nav-btn"><i class="fa fa-paper-plane"></i><span>批量迁移</span></span><span id="btntable-upload" class="edb-nav-btn"><i class="fa fa-upload"></i><span>上传</span></span><span id="btntable-import" class="edb-nav-btn"><i class="fa fa-upload"></i><span>导入数据</span></span><span id="btntable-export" class="edb-nav-btn"><i class="fa fa-download"></i><span>导出数据</span></span><!--<span id="btntable-mult-time" class="edb-nav-btn">--><!--<i class="fa fa-check-square-o"></i>--><!--<span>批量修改有效时间</span>--><!--<div class="layui-mult-time" style="display: none;"></div>--><!--</span>--><span id="btntable-history" class="edb-nav-btn"><i class="fa fa-history"></i><span>历史文件</span></span><span id="btntable-modify" class="edb-nav-btn"><i class="fa fa-pencil"></i><span>修改文件</span></span></div><div style="margin-top:-5px;padding: 2px;"><table id="tablemodel" lay-filter="tablemodelTable"></table></div></div></div></div></div></div><!--批量迁移-->
<div id='frm-modify-move' style = "display : none ;height:500px"  scrolling=no><table height="100%" width="100%"><tr><td height="100%"><iframe  frameborder=0  height="100%" style="padding: 10px;"  width="100%" scrolling=no ></iframe></td></tr></table>
</div><script src="/libs/jquery/jquery-3.2.1.min.js"></script>
<script src="/libs/bootstrap/js/bootstrap.js"></script>
<script src="/libs/layui/v2.8.3/layui.js"></script>
<script src="/libs/layer3.1.1/layer.js"></script>
<script src="/jruntime/views/core/core.js"></script>
<script src="/libs/split/split.min.js"></script>
<script src="/pub/comuse/comuse.js"></script>
<script src="/pub/comuse/module_common_method.js"></script>
<script src="/mpv/libs/mpvLyComon.js"></script>
<script type="text/html" id="ahtmltp"><a class="layui-table-link" TITLE="{{d.CNAME?d.CNAME:''}}" lay-event="view">{{d.CNAME?d.CNAME:''}}</a>
</script><script type="text/html" id="bars"><a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="edit">修改</a><a class="layui-btn layui-btn-xs" lay-event="preview">预览</a><a class="layui-btn layui-btn-xs layui-btn-warm" lay-event="view">下载</a><a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del">删除</a>
</script>
<script type="text/html" id="bars_view"><a class="layui-btn layui-btn-xs" lay-event="preview">预览</a><a class="layui-btn layui-btn-xs layui-btn-warm" lay-event="view">下载</a>
</script><script>var imx_bt=pub.Convert.fn_ConvertToString(jYd.form.getQueryString("bt"));var imx_ID=pub.Convert.fn_ConvertToString(jYd.form.getQueryString("id"));var imx_action=pub.Convert.fn_ConvertToString(jYd.form.getQueryString("action"));var imx_name=pub.Convert.fn_ConvertToString(jYd.form.getQueryString("name"));var _formMode="";if(imx_action=="view"){$("#btntable-upload" +",#btntable-del" +",#btntable-add" +",#btntable-edit" +",#btntable-move" +",#btntable-import" +",#btntable-export" +",#btntable-history" +",#btntable-modify" +",#btntable-mult-time" +"").hide();_formMode=jYd.form.Mode.View;}else{_formMode=jYd.form.Mode.Modify;}if(imx_ID){$("#btntable-config").show();}window.fn_预览文件_VIEW=function(fileType,id){var v_url="/dcs/fileViewV2/file_prew.html?type={0}&id={1}".format(fileType,id);jYd.fnOpenWindow(v_url,'预览文件',{width: '100%', height: '100%'},function () {});};$(document).ready(function () {/***重新渲染序号***/window.fn_重新渲染序号=function(){var jparams =[];jparams.push(imx_bt);var _api="com.dcs.bapi.TrainPlanManager.BAPI_Check_法规制度_数据";jYd.fnAjax(jparams,_api,function (ret) {});};// window.fn_重新渲染序号();var _full="full-200";var _col=[[{type: "checkbox", fixed: "left", width: 50},{field: 'ID', title: 'ID',hide: true},{type: "numbers",title:'序号', width: 50},{field: 'CNAME', title: '名称', minWidth: 600, align: 'left',sort:true},{field: 'PNAME', title: '目录', minWidth: 100, align: 'left',sort:true},{field: 'DOC_TYPE_NAME', title: '主题分类', minWidth: 130, align: 'left',sort:true},{field: 'DOC_PUBLISH_DPT_NAME', title: '发布部门', minWidth: 150, align: 'center',sort:true},{field: 'DOC_LSSUED_NUMBER', title: '发文字号', minWidth: 120, align: 'center',sort:true},{field: 'DOC_PUBLISH_TIME', title: '发布日期', minWidth: 120, align: 'center',templet:function (d) {if(d.DOC_PUBLISH_TIME){return d.DOC_PUBLISH_TIME.substring(0,10);}else{return "";}},sort:true},{field: 'DOC_STATUS_NAME', title: '状态', minWidth: 100, align: 'center',sort:true},{field: 'DOC_CORP_SUIT', title: '公司适用', minWidth: 100, align: 'center',sort:true},{field: 'DOC_SUIT_TERM', title: '适用条例', minWidth: 100, align: 'center',sort:true},{field: 'DOC_SUIT_DPT_NAME', title: '适用部门', minWidth: 100, align: 'center',sort:true},// {field: 'IORDER', title: '文件序号', minWidth: 100, align: 'left'}]];if(imx_action=="view"){_col[0].push({title: '操作', width:150, align:'center',fixed:'right', toolbar: '#bars_view'});}else{_col[0].push({ title: '操作', width:220, align:'center',fixed:'right', toolbar: '#bars'});}//查询条件window.fn_wherejson=function(action) {var _queryList=[];fn_wheresql(_queryList);var _op=$("#txtFuHao").val();var _name=$("#txt_Key").val();var _value="";if($("#txt_Value").css("display")=="none"){_value=$("#txt_Value_Time").val();}else{_value=$("#txt_Value").val();}_queryList.push({type:iMx.fn_fix_type_未知(_name),op:_op,name:_name,value:_value});if($("#txt_Context").val()!=""){_queryList.push({type:"全文检索",op:"等于",name:"全文检索",value:$("#txt_Context").val()});}var _array=[];if(window.parent._childIDs){var _childIDs=window.parent._childIDs;for(var i=0;i<_childIDs.length;i++){_array.push({type:"string",name:"PID",op:'等于',value:_childIDs[i]} );}_queryList.push({type:'block',op:'or',value:_array});}_queryList.push({type:"未知",op:"不等于",name:"NODE_TYPE",value:"目录"});return pub.JSONEx.fn_ToString(_queryList);};//查询条件function fn_wheresql(_queryList){_queryList.push({type:"string",name:"TYPE",value:imx_bt});}// 自定义模块,这里只需要开放soulTable即可// 自定义模块,这里只需要开放soulTable即可layui.config({base: '/libs/layui/',   // 第三方模块所在目录version: 'v1.8.0' // 插件版本号}).extend({soulTable: 'soulTable/soulTable',tableChild: 'soulTable/tableChild',tableMerge: 'soulTable/tableMerge',tableFilter: 'soulTable/tableFilter',excel: 'soulTable/excel'}).use(['form', 'table','soulTable'], function () {var table = layui.table,form = layui.form,soulTable = layui.soulTable;/***文件表格初始化**/window.fn_load_table_data=function(){//-------初始化var v_filter=window.fn_wherejson("");var v_order=' CODEPATH ASC, IORDER DESC ';var __params=[];__params.push(v_filter);__params.push(v_order);var __where = {};__where.token = pub.State.Ticket;__where.data=pub.JSONEx.fn_ToString(__params);__where.api="com.dcs.bapi.AQMaterManager.BAPI_查询_安全资料_附件";window.table_data=__where.data;table.render({elem: '#tablemodel',url: '/imx/sys/layui_table_bapi',method: 'POST',height:_full,cols:_col ,page: true,limit:25,limits: [25 , 50, 100, 500, 1000,5000],even: true,id: "tablemodelTable",where: __where,request: {pageName: 'pageIndex', //pagelimitName: 'pageSize' //limit},rowDrag: {trigger: 'row', done: function(obj) {// 完成时(松开时)触发// 如果拖动前和拖动后无变化,则不会触发此方法// console.log(obj.row) // 当前行数据// console.log(obj.cache) // 改动后全表数据// console.log(obj.oldIndex) // 原来的数据索引// console.log(obj.newIndex) // 改动后数据索引//全表数据var objList=obj.cache;//当前拖拽rowvar oldRow=obj.row;var dataObject={};dataObject["ID"]=oldRow["ID"];if(obj.newIndex==0){dataObject["IORDER"] = Number(objList[obj.newIndex+1]["IORDER"])-1;//新序号}else if(obj.newIndex==objList.length){dataObject["IORDER"] = Number(objList[obj.newIndex-1]["IORDER"])+1;//新序}else if(obj.newIndex>obj.oldIndex){dataObject["IORDER"] = Number(objList[obj.newIndex-1]["IORDER"])+1;//新序号}else{dataObject["IORDER"] = Number(objList[obj.newIndex+1]["IORDER"])-1;//新序号}// console.log(JSON.stringify(dataObject));fnOneRowDoIDCU("PUB_FILES","Modify",JSON.stringify(dataObject),function(){window.fn_重新渲染序号();});}},done: function(res, curr, count){table.resize("tablemodelTable"); //重置表格尺寸//开启列拖拽if(imx_action!="view"){soulTable.render(this);soulTable.suspend('tablemodelTable', 'drag', false);//true 关闭列拖拽! false  开启列拖拽!soulTable.suspend('tablemodelTable', 'rowDrag', false);//true 关闭行拖拽! false  开启行拖拽!fn_click_date_time();}}});};/***监听工具条***/table.on('tool(tablemodelTable)', function(obj){var data = obj.data;if(obj.event =='edit'){var url="";url = "/dcs/fileGL_V2/fileGl_file_card.html?action={0}&id={1}&bt={2}";url = url.format(jYd.form.Mode.Modify,data["ID"],imx_bt);jYd.fnOpenWindow(url,'编辑',{width: '60%', height: '85%'},function () {window.fn_load_table_data();});} else if(obj.event =='del'){fn_批量删除(data["ID"],1);} else if(obj.event == 'view'){var _id=obj.data["ID"];var url="/download?file={0}&token={1}".format(_id,encodeURIComponent(sessionStorage.getItem("_pub_token")));window.open(decodeURI(url));}else  if(obj.event=="preview"){var file=data["FILE_TYPE"];if(file=="pdf" || file=="PDF"){window.fn_预览文件_VIEW(data["FILE_TYPE"],data["ID"])}else{iMx.fn_attachment_priview(data["FILE_TYPE"],data["ID"]);}}});/***双击row***/table.on('rowDouble(tablemodelTable)', function (obj) {if(obj.data["FILE_TYPE"]=="pdf" || obj.data["FILE_TYPE"]=="PDF"){window.fn_预览文件_VIEW(obj.data["FILE_TYPE"],obj.data["ID"])}else{iMx.fn_attachment_priview(obj.data["FILE_TYPE"],obj.data["ID"]);}});/***编辑***/$("#btntable-edit").off("click").on("click",function () {var checkStatus = table.checkStatus('tablemodelTable');var selecteds = checkStatus.data;if(selecteds.length==1){var url="";url = "/dcs/fileGL_V2/fileGl_file_card.html?action={0}&id={1}&bt={2}";url = url.format(jYd.form.Mode.Modify,selecteds[0].ID,imx_bt);jYd.fnOpenWindow(url,'编辑',{width: '60%', height: '85%'},function () {window.fn_load_table_data();});}else{layer.alert("请选择一条记录");}});//region  查询keyform.render();fn_setField_select();//使用列信息给查询字段赋值function fn_setField_select(){$("#txt_Key").empty();var col=_col[0];for (var i = 0; i <= col.length - 1; i++) {var __field = pub.Convert.fn_ConvertToString(col[i].field);var __title = pub.Convert.fn_ConvertToString(col[i].title);if (__field == "")continue;if (__field == "ID")continue;if (__title == "操作")continue;$("#txt_Key").append(" <option value='" + __field + "'>" + __title+ "</option>");layui.form.render("select");}fnUpdateKeyList();window.fn_load_table_data();}//查询keyListfunction fnUpdateKeyList() {var __value =$("#txt_Key").val();$("#txtKeyList").parent(".layui-input-block").find(".dropdown-menu").empty();if (__value == "")return;iMx.fn_set_select_fuhao_default_value(__value);var jparams =[];jparams.push(__value);jparams.push(window.fn_wherejson());var _api="com.dcs.bapi.AQMaterManager.BAPI_查询_安全资料_KeyList";jYd.fnAjax(jparams,_api,function (ret) {var __dtKeyList=ret.json;//-----------------$("#txtKeyList").parent(".layui-input-block").find(".dropdown-menu").empty();for (var i = 0; i <= __dtKeyList.length - 1; i++) {var __value1 = pub.Convert.fn_ConvertToString(__dtKeyList[i].CNAME);$("#txtKeyList").parent(".layui-input-block").find(".dropdown-menu").append(" <li ><a href='#' fieldname='" + __value1 + "'>" + __value1 + "</a></li>");}//-----------------$("#txtKeyList").parent(".layui-input-block").find(".dropdown-menu").find("li").off("click").on("click", function (e) {var __keyListCur = pub.Convert.fn_ConvertToString($(this).find("a").attr("fieldname"));pub.DOM.fn_SetValueByID("#txt_Value", __keyListCur);pub.DOM.fn_SetValueByID("#txt_Value_Time", __keyListCur);pub.DOM.fn_SetTextByID("#txt_Value", __keyListCur);e.stopPropagation();e.preventDefault();$("#txtKeyList").click();})});}form.on('select(select_key)', function(data){fnUpdateKeyList();});//endregion 查询 key});/***新增***/$("#btntable-add").off("click").on("click",function () {var url="";url = "/dcs/fileGL_V2/fileGl_file_card.html?action={0}&id={1}&pname={2}&pid={3}&bt={4}";url = url.format(jYd.form.Mode.Add,"",imx_name,imx_ID,imx_bt);jYd.fnOpenWindow(url,'新增',{width: '60%', height: '85%'},function () {window.fn_重新渲染序号();window.fn_load_table_data();});});/***上传文件***/$("#btntable-upload").on("click",function () {var url="";url = "/dcs/upload/aqzl_file.html?type={0}&id={1}&bt={2}";var bt=imx_ID+";"+imx_name+";文件";url = url.format(encodeURIComponent(imx_bt),imx_ID,bt);jYd.fnOpenWindow(url,'上传附件',{width: '60%', height: '70%'},function () {window.fn_重新渲染序号();window.fn_load_table_data();});});/***查询***/$("#btn-query").on("click", function (e) {window.fn_load_table_data();});/***刷新****/$("#btntable-refresh").on("click", function (e) {window.fn_load_table_data();});/***重置***/$("#btn-reset").on("click", function (e) {$("#formWhereData")[0].reset();});/***批量删除***/$("#btntable-del").on("click",function (e) {var checkstatus = layui.table.checkStatus('tablemodelTable');if (checkstatus==null||checkstatus==undefined ||checkstatus.data.length<=0){layer.msg("请先选择要删除的行!");return;}window._curNode=checkstatus.data[0];var __ids="";for(var i=0;i<checkstatus.data.length;i++) {if (__ids == "") {__ids = checkstatus.data[i]["ID"];} else {__ids = __ids + "," + checkstatus.data[i]["ID"];}}fn_批量删除(__ids,checkstatus.data.length);});function fn_批量删除(__ids,v_num) {top.layer.confirm('确认要删除选择的'+v_num+'个附件吗?',{zIndex:top.layer.zIndex}, function(index){top.layer.close(index);var jparams =[];jparams.push(__ids);var _api="com.dcs.bapi.AQMaterManager.BAPI_删除_安全资料";jYd.fnAjax(jparams,_api,function (ret) {layer.msg(ret.message);window.fn_重新渲染序号();window.fn_load_table_data("refresh");});});}//region  历史文件/***历史文件***/$("#btntable-history").on("click",function () {var _rows=McoM.fn_get_select_row_layuiTable();//选择行if(_rows.length<=0){iMx.fn_show_layer_tip("请选择需要操作的文件");return;}var _fieldId=_rows[0]["ID"];var  url = "/pub/attachment/history_file_list.html?action={0}&masterId={1}";url = url.format(_formMode,_fieldId);jYd.fnOpenWindow(url,'历史文件列表',{width: '70%', height: '85%'},function () {//关闭layer页面回调McoM.fn_close_layer_page_fnCallBack(function () {window.fn_load_table_data("query");});});});/***修改文件***/$("#btntable-modify").on("click",function () {var _rows=McoM.fn_get_select_row_layuiTable();//选择行if(_rows.length<=0){iMx.fn_show_layer_tip("请选择需要修改文件的行");return;}var _data=_rows[0];McoM.fn_upload_update_attachment(_data,function () {window.fn_load_table_data("query");McoM.fn_insert_data_to_history_table(); //向历史表中插入数据});//修改上传文件});/***批量迁移***/$("#btntable-move").on("click",function (e) {var checkstatus = layui.table.checkStatus('tablemodelTable');if (checkstatus==null||checkstatus==undefined ||checkstatus.data.length<=0){layer.msg("请先选择要迁移文件!");return;}var v_url="/dcs/aqzl_fjv2/selector_aqzlfile_orgright.html?allow_leaf_only=0&bt={0}";v_url=v_url.format(imx_bt);$("#frm-modify-move").find("iframe").attr("src",v_url);var __ids="";for(var i=0;i<checkstatus.data.length;i++) {if (__ids == "") {__ids = checkstatus.data[i]["ID"];} else {__ids = __ids + "," + checkstatus.data[i]["ID"];}}var __modifyfxdlayIndex=layer.open({type: 1,title: '批量迁移',area: ['60%', '85%'],btn: ['确认', '取消'],btnAlign: 'c',   // 按钮居中content: $('#frm-modify-move').html(),success: function(layero, index){},yes: function(index, layero){var __frame=$(layero).find("iframe")[0];if(__frame.contentWindow.fn_get_selected_id().length==0){layer.msg("没有目录,不能迁移!");return;}var jparams =[];jparams.push(__ids);jparams.push(__frame.contentWindow.fn_get_selected_id());jparams.push(__frame.contentWindow.fn_get_selected_name());var _api="com.dcs.bapi.FileDataManager.BAPI_文件迁移新的目录_ACTION";jYd.fnAjax(jparams,_api,function (ret) {layer.msg("迁移成功!");window.fn_重新渲染序号();window.fn_load_table_data();layer.close(__modifyfxdlayIndex);});}});});//endregion 时间组件 ,操作方法函数/***选择时间***/var fn_click_date_time=function () {$(".v_date").off("click").on("click",function (e) {var id=$(this).data("id");var field=$(this).data("field");var v_this=this;fn_click_laydate_time(v_this,id,field,e);});};/***选择时间范围***/var fn_click_laydate_time=function(v_this,id,field,e){layui.laydate.render({elem: v_this,range: false,show: true //直接显示,format: 'yyyy-MM-dd',type:"date",done: function(value, date){ //监听日期被切换var dataObject={};dataObject["ID"]=id;dataObject[field] = value;fnOneRowDoIDCU("PUB_FILES","Modify",JSON.stringify(dataObject));}});e.stopPropagation();e.preventDefault();};/***操作方法***/function fnOneRowDoIDCU(table,action,strData,fnok,fnerror) {var api = "com.kongzhitech.bapi.TreeMgr.BAPI_TreeDo";var jparams =[];jparams.push(table);jparams.push(action);jparams.push(strData);jparams.push("CNAME");jYd.fnAjax(jparams,api,function (ret) {if (ret.success == 1) {if(fnok){fnok(ret);}}else {if(fnerror){fnerror(ret);}}},function (ret) {if(fnerror){fnerror(ret);}});}/***批量修改有效时间***/$("#btntable-mult-time").on("click",function (e) {var checkstatus = layui.table.checkStatus('tablemodelTable');if (checkstatus==null||checkstatus==undefined ||checkstatus.data.length<=0){layer.msg("请先选择数据!");return;}window._curNode=checkstatus.data[0];layui.laydate.render({elem: ".layui-mult-time",range: false,show: true //直接显示,format: 'yyyy-MM-dd',type:"date",done: function(value, date){ //监听日期被切换for(var i=0;i<checkstatus.data.length;i++) {var __ids= checkstatus.data[i]["ID"];var dataObject={};dataObject["ID"]=__ids;dataObject["EXPIRATION_TIME"] = value;fnOneRowDoIDCU("PUB_FILES","Modify",JSON.stringify(dataObject));}layer.msg("批量修改成功");window.fn_load_table_data("query");}});$(".layui-laydate").css({"left": "10%","top": "20%"});e.stopPropagation();e.preventDefault();});/***全文检索***/$("#btn-all-recall").on("click",function () {var url="";url = "/dcs/file_search/file_search.html?bt={0}";url = url.format(encodeURIComponent(imx_bt));jYd.fnOpenWindow(url,'全文检索',{width: '100%', height: '100%'},function () {});});/***上传文件***/window.fn_imp_data=function(){var url="";url = "/dcs/upload/work_fileV2.html?vtype={0}&vid={1}&voption={2}";url = url.format(encodeURIComponent("导入文件数据"),"",imx_bt);jYd.fnOpenWindow(url,'导入数据',{width: '60%', height: '70%'},function () {window.fn_重新渲染序号();window.fn_load_table_data("init");});};window.fn_chk_data=function(){var url="";url = "/dcs/upload/work_fileV2.html?vtype={0}&vid={1}&voption={2}&check=1";url = url.format(encodeURIComponent("导入文件数据"),"",imx_bt);jYd.fnOpenWindow(url,'检查数据',{width: '60%', height: '70%'},function () {window.fn_load_table_data("init");});};$("#btntable-import").on("click",function (e) {//导入导出DIVvar __impIndex=layer.open({type: 1,title: '导入数据',area: ['600px', '500px'],btn: ['关闭'],btnAlign: 'c',   // 按钮居中content: $('#frm-imp').html(),success: function(layero, index){},btn1: function(index, layero){layer.close(__impIndex);}});});//导出数据$("#btntable-export").on("click",function (e) {var  mc_cols=[[{field: 'IORDER', title: '序号'},{field: 'CNAME', title: '名称'},{field: 'PNAME', title: '目录'},{field: 'DOC_TYPE_NAME', title: '主题分类'},{field: 'DOC_PUBLISH_DPT_NAME', title: '发布部门'},{field: 'DOC_LSSUED_NUMBER', title: '发文字号'},{field: 'DOC_PUBLISH_TIME', title: '发布日期'},{field: 'DOC_REVISE_TIME', title: '修订日期'},{field: 'DOC_ENABLE_TIME', title: '启用日期'},{field: 'DOC_STATUS_NAME', title: '状态'},{field: 'DOC_CORP_SUIT', title: '公司适用'},{field: 'DOC_SUIT_TERM', title: '适用条例'},{field: 'DOC_AREA', title: '生效区域'},{field: 'DOC_INDUSTRY_NAME', title: '行业'},{field: 'DOC_TYPE_NAME', title: '主题'},{field: 'DOC_SUIT_DPT_NAME', title: '适用部门'},{field: 'ID', title: 'ID'}]];var jparams =[];jparams.push(pub.JSONEx.fn_ToString(mc_cols));jparams.push(window.fn_wherejson());var _api="com.dcs.bapi.FileDataManager.BAPI_导出文件数据";jYd.fnAjax(jparams,_api,function (obj) {var _id=obj.data;var url="/downloadtmpfile?file={0}&token={1}".format(encodeURIComponent(_id),encodeURIComponent(sessionStorage.getItem("_pub_token")));window.open(url);});});});
</script>
</body>
</html>

二、引用的重要的文件: 

 1. css文件:

  <link rel="stylesheet" href="/libs/layui/v2.8.3/css/layui2.css"><link rel="stylesheet" href="/libs/layui/soulTable.css">

 2. js文件:

<script src="/libs/jquery/jquery-3.2.1.min.js"></script>
<script src="/libs/layui/v2.8.3/layui.js"></script>

 

二、重要部分的代码:

1.主要代码:

  // 自定义模块,这里只需要开放soulTable即可// 自定义模块,这里只需要开放soulTable即可layui.config({base: '/libs/layui/',   // 第三方模块所在目录version: 'v1.8.0' // 插件版本号}).extend({soulTable: 'soulTable/soulTable',tableChild: 'soulTable/tableChild',tableMerge: 'soulTable/tableMerge',tableFilter: 'soulTable/tableFilter',excel: 'soulTable/excel'}).use(['form', 'table','soulTable'], function () {var table = layui.table,form = layui.form,soulTable = layui.soulTable;/***文件表格初始化**/window.fn_load_table_data=function(){//-------初始化var v_filter=window.fn_wherejson("");var v_order=' CODEPATH ASC, IORDER DESC ';var __params=[];__params.push(v_filter);__params.push(v_order);var __where = {};__where.token = pub.State.Ticket;__where.data=pub.JSONEx.fn_ToString(__params);__where.api="com.dcs.bapi.AQMaterManager.BAPI_查询_安全资料_附件";window.table_data=__where.data;table.render({elem: '#tablemodel',url: '/imx/sys/layui_table_bapi',method: 'POST',height:_full,cols:_col ,page: true,limit:25,limits: [25 , 50, 100, 500, 1000,5000],even: true,id: "tablemodelTable",where: __where,request: {pageName: 'pageIndex', //pagelimitName: 'pageSize' //limit},rowDrag: {trigger: 'row', done: function(obj) {// 完成时(松开时)触发// 如果拖动前和拖动后无变化,则不会触发此方法// console.log(obj.row) // 当前行数据// console.log(obj.cache) // 改动后全表数据// console.log(obj.oldIndex) // 原来的数据索引// console.log(obj.newIndex) // 改动后数据索引//全表数据var objList=obj.cache;//当前拖拽rowvar oldRow=obj.row;var dataObject={};dataObject["ID"]=oldRow["ID"];if(obj.newIndex==0){dataObject["IORDER"] = Number(objList[obj.newIndex+1]["IORDER"])-1;//新序号}else if(obj.newIndex==objList.length){dataObject["IORDER"] = Number(objList[obj.newIndex-1]["IORDER"])+1;//新序}else if(obj.newIndex>obj.oldIndex){dataObject["IORDER"] = Number(objList[obj.newIndex-1]["IORDER"])+1;//新序号}else{dataObject["IORDER"] = Number(objList[obj.newIndex+1]["IORDER"])-1;//新序号}// console.log(JSON.stringify(dataObject));fnOneRowDoIDCU("PUB_FILES","Modify",JSON.stringify(dataObject),function(){window.fn_重新渲染序号();});}},done: function(res, curr, count){table.resize("tablemodelTable"); //重置表格尺寸//开启列拖拽if(imx_action!="view"){soulTable.render(this);soulTable.suspend('tablemodelTable', 'drag', false);//true 关闭列拖拽! false  开启列拖拽!soulTable.suspend('tablemodelTable', 'rowDrag', false);//true 关闭行拖拽! false  开启行拖拽!fn_click_date_time();}}});};

2. 开启拖拽的代码:

 soulTable.render(this);soulTable.suspend('tablemodelTable', 'drag', false);//true 关闭列拖拽! false  开启列拖拽!soulTable.suspend('tablemodelTable', 'rowDrag', false);//true 关闭行拖拽! false  开启行拖拽!

3.行拖拽触发事件:

 rowDrag: {trigger: 'row', done: function(obj) {// 完成时(松开时)触发// 如果拖动前和拖动后无变化,则不会触发此方法// console.log(obj.row) // 当前行数据// console.log(obj.cache) // 改动后全表数据// console.log(obj.oldIndex) // 原来的数据索引// console.log(obj.newIndex) // 改动后数据索引//全表数据var objList=obj.cache;//当前拖拽rowvar oldRow=obj.row;var dataObject={};dataObject["ID"]=oldRow["ID"];if(obj.newIndex==0){dataObject["IORDER"] = Number(objList[obj.newIndex+1]["IORDER"])-1;//新序号}else if(obj.newIndex==objList.length){dataObject["IORDER"] = Number(objList[obj.newIndex-1]["IORDER"])+1;//新序}else if(obj.newIndex>obj.oldIndex){dataObject["IORDER"] = Number(objList[obj.newIndex-1]["IORDER"])+1;//新序号}else{dataObject["IORDER"] = Number(objList[obj.newIndex+1]["IORDER"])-1;//新序号}// console.log(JSON.stringify(dataObject));fnOneRowDoIDCU("PUB_FILES","Modify",JSON.stringify(dataObject),function(){window.fn_重新渲染序号();});}},

四、效果图:

 

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

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

相关文章

MapReduce [OSDI‘04] 论文阅读笔记

原论文&#xff1a;MapReduce: Simplified Data Processing on Large Clusters (OSDI’04) 1. Map and Reduce Map&#xff1a;处理键值对&#xff0c;生成一组中间键值对Reduce&#xff1a;合并与同一中间键相关的所有中间值process overview&#xff1a;分割输入数据&#x…

DSO9254A安捷伦DSO9254A示波器

181/2461/8938产品概述&#xff1a; 安捷伦DSO9254A的带宽为2.5 GHz&#xff0c;配备15英寸XGA液晶显示屏&#xff0c;采用静音封装&#xff0c;厚度仅为9英寸&#xff08;23厘米&#xff09;&#xff0c;重量仅为26磅&#xff08;11.8千克&#xff09;。DSO9254A集成了一个功…

UE4_自定义反射和折射和法线图

UE4 自定义反射和折射和法线图 2020-05-22 09:36 将ReflectionVector和反射图像进行ViewAlignedReflection,输出的textrue和相机位置CameraPosition的onePlus进行Dot点乘之后乘以一个float系数反射度&#xff0c;输出给固有色&#xff0c;就有反射效果了。球型反射。 折射&…

Coze工作流介绍(一)

Coze工作流介绍 工作流支持通过可视化的方式&#xff0c;对插件、大语言模型、代码块等功能进行组合&#xff0c;从而实现复杂、稳定的业务流程编排&#xff0c;例如旅行规划、报告分析等。 当目标任务场景包含较多的步骤&#xff0c;且对输出结果的准确性、格式有严格要求时…

JAVAEE—Callable接口,ReentrantLock,synchronized的工作过程

文章目录 Callable接口的用法Callable与FutureTask类 加锁的工作过程什么是偏向锁呢&#xff1f;举个例子 轻量级锁重量级锁 ReentrantLockReentrantLock 的用法: Callable接口的用法 Callable 是一个 interface . 相当于把线程封装了一个 “返回值”. 方便程序猿借助多线程的…

Ubuntu20.04使用Neo4j导入CSV数据可视化知识图谱

1.安装JDK&#xff08; Ubuntu20.04 JDK11&#xff09; sudo apt-get install openjdk-11-jdk -y java -version which java ls -l /usr/bin/java ls -l /etc/alternatives/java ls -l /usr/lib/jvm/java-11-openjdk-amd64/bin/java确认安装路径为/usr/lib/jvm/java-11-openjd…

Celery的任务流

Celery的任务流 在之前调用任务的时候只是使用delay()和apply_async()方法。但是有时我们并不想简单的执行单个异步任务&#xff0c;比如说需要将某个异步任务的结果作为另一个异步任务的参数或者需要将多个异步任务并行执行&#xff0c;返回一组返回值&#xff0c;为了实现此…

STL是什么?如何理解STL?

文章目录 1. 什么是STL2. STL的版本3. STL的六大组件4. 如何学习STL5.STL的缺陷 1. 什么是STL STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且是一个包罗数据结构与算法的软件框架。 2. …

OpenHarmony实战开发-使用一次开发多端部署实现一多设置典型页面

介绍 本示例展示了设置应用的典型页面&#xff0c;其在小窗口和大窗口有不同的显示效果&#xff0c;体现一次开发、多端部署的能力。 1.本示例使用一次开发多端部署中介绍的自适应布局能力和响应式布局能力进行多设备&#xff08;或多窗口尺寸&#xff09;适配&#xff0c;保…

WebGIS 之 vue3+vite+ceisum

1.项目搭建node版本在16以上 1.1创建项目 npm create vite 项目名 1.2选择框架 vuejavaScript 1.3进入项目安装依赖 cd 项目名 npm install 1.4安装cesium依赖 pnpm i cesium vite-plugin-cesium 1.5修改vite.config.js文件 import { defineConfig } from vite import vue fr…

RK3568 RTC驱动实验

RK3568 RTC驱动实验 1. RTC简介 ​ RTC 也就是实时时钟&#xff0c;用于记录当前系统时间&#xff0c;对于 Linux 系统而言时间是非常重要的&#xff0c;使用 Linux 设备的时候也需要查看时间。RTC是Linux的时间系统。 ​ RTC 设备驱动是一个标准的字符设备驱动&#xff0c;…

基于Python的微博旅游情感分析、微博舆论可视化系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

Python网络爬虫(三):Selenium--以携程酒店为例

1 Selenium简介 Selenium是一个用于网站应用程序自动化的工具&#xff0c;它可以直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。它相当于一个机器人&#xff0c;可以模拟人类在浏览器上的一些行为&#xff0c;比如输入文本、点击、回车等。Selenium支持多种浏览器&…

记录一次官网访问很慢的情况

客户查看云监控,带宽未超限,客户取的是1分钟的原生值,也就是1分钟也是个平均值。 但是客户的原始值&#xff0c;其实就是1分钟内的平均值。所以客户的瞬时超限&#xff0c;其实是看不出来的。但是后端同事从实时监控里面可以看到超限的情况。 客户升带宽后&#xff0c; 发现还…

Flutter 应用数据持久化指南

1. 介绍 1.1 什么是数据持久化&#xff1f; 数据持久化是指将应用程序中的数据保存在持久存储介质&#xff08;如硬盘、数据库等&#xff09;中的过程。在计算机科学领域&#xff0c;持久化数据是指数据在程序退出或系统关机后仍然存在的能力。这种持久性使得数据可以在不同的…

是德科技keysight 33621A波形发生器

181/2461/8938产品概述&#xff1a; 与上一代DDS波形发生器相比&#xff0c;采用独家Trueform技术的安捷伦HP 33621A波形发生器具有更高的性能、保真度和灵活性。安捷伦HP 33621A 120 MHz、单通道、Trueform arbs&#xff0c;带时序控制和64 MSa存储器&#xff0c;1 ps抖动&am…

go juc 线程中的子类

1.go test() 主死随从 package mainimport ("fmt""strconv""time" )func test() {for i : 1; i < 10; i {fmt.Println("hello " strconv.Itoa(i))//阻塞time.Sleep(time.Second)} } func main() {//开启协程go test()for i : 1; …

如何配置vite的proxy

1.前言 vite项目&#xff0c;本地开发环境可以通过配置proxy代理实现跨域请求。但是生产环境&#xff0c;该配置不生效&#xff0c;一般使用 nginx 转发&#xff0c;或者后端配置cors 2.解释 server: {port: 9000,proxy: { // 本地开发环境通过代理实现跨域&#xff0c;生产…

基于ssm的轻型卡车零部件销售平台(java项目+文档+源码)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的轻型卡车零部件销售平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 轻型卡车零部件销售平台…

C# 批量删除Excel重复项

当从不同来源导入Excel数据时&#xff0c;可能存在重复的记录。为了确保数据的准确性&#xff0c;通常需要删除这些重复的行。 手动查找并删除可能会非常耗费时间&#xff0c;而通过编程脚本则可以实现在短时间内处理大量数据。本文将提供一个使用C# 快速查找并删除Excel重复项…