【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.rhkb.cn/news/300170.html

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

相关文章

File,IO流,递归详解

File类 介绍 java.io.File类是Java语言提供了用来描述文件和目录(文件夹)的 构造 方法 注意&#xff1a; 构造方法中通常用的是第一个方法文件和目录可以通过File封装成对象File封装的对象仅仅是一个路径名&#xff0c;它是可以存在的&#xff0c;也可以不存在 绝对路径…

Sketch是免费软件吗?这款软件支持导入!

Sketch 是一款针对网页、图标、插图等设计的矢量绘图软件。Sketch 的操作界面非常简单易懂&#xff0c;帮助全世界的设计师创作出许多不可思议的作品。但是同时&#xff0c;Sketch 也有一些痛点&#xff1a;使用 Sketch 需要安装 InVision、Abstract 、Zeplin 等插件&#xff0…

一网打尽计算机网络难题:100个问答助你轻松掌握【文末送书福利】

文章目录 一&#xff0c;物理层二&#xff0c;数据链路层三&#xff0c;网络层四&#xff0c;传输层五&#xff0c;应用层专栏推荐粉丝福利 欢迎订阅查看学习&#xff1a;Java编程基础教程系列&#xff08;零基础小白搬砖逆袭&#xff09; 一&#xff0c;物理层 题&#xff1a…

#QT项目实战(天气预报)

1.IDE&#xff1a;QTCreator 2.实验&#xff1a; 3.记录&#xff1a; &#xff08;1&#xff09;调用API的Url a.调用API获取IP whois.pconline.com.cn/ipJson.jsp?iphttp://whois.pconline.com.cn/ipJson.jsp?ip if(window.IPCallBack) {IPCallBack({"ip":&quo…

【攻防世界】unseping (反序列化与Linux bash shell)

打开题目环境&#xff1a; 1、进行PHP代码审计&#xff0c;通过审计得知需要用到PHP反序列化。找到输出flag的位置为 ping()函数。通过使用 exec() 函数来执行 $ip 并将结果保存在 $result 中&#xff0c;最终输出 $result。 2、接着寻找给 $ip 传参的位置&#xff0c;发现通过…

stm32中断传输的状态信息

1、gState &#xff08;Tx&#xff09;发送的状态信息 2、RxState &#xff08;Rx&#xff09;接收的状态信息

STM32单片机智能电表交流电压电流程序设计(电流 电压互感器TV1005M+TA1005M)

资料下载地址&#xff1a;STM32单片机智能电表交流电压电流程序设计(电流 电压互感器TV1005MTA1005M) 1、摘要 5、基于STM32F103单片机智能电表交流电压电流设计 本设计由STM32单片机核心板电路交流电压电流检测模块电路WIFI模块电路指示灯电路组成。 1、通过电压互感器TV100…

6. Z 字形变换(Java)

目录 题目描述&#xff1a;输入&#xff1a;输出&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时&#xff0c;排列如…

[C语言][数据结构][动态内存空间的开辟]顺序表的实现!

目录 零.必备知识 a.顺序表的底层是数组. b.数组在内存中是连续存放的. c.动态内存空间的开辟(malloc,calloc,realloc). 一.顺序表的定义与实现 1.1 顺序表的定义 1.2 顺序表的初始化 1.3 顺序表的销毁 1.4 顺序表容量的检查与调整(最关键的部分) 1.5 顺序表的尾插 1.…

A First Course in the Finite Element Method【Daryl L.】|PDF电子书

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

idea的后端环境配置

首先&#xff0c;在你刚打开idea时红色箭头所指的是你进行配置的地方&#xff0c;接下来我把具体步骤说一下 1&#xff0c;直接点击箭头所指的地方就会出现如图界面&#xff0c;然后点击Tomcat server,使其展开点击第一个 第二步取消勾选&#xff0c;第三步选择bin的上一级然后…

用vscode仿制小米官网

html内容: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><link rel&quo…

牛客NC93 设计LRU缓存结构【hard 链表,Map Java】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/5dfded165916435d9defb053c63f1e84 思路 双向链表map最新的数据放头结点&#xff0c;尾节点放最老的数据&#xff0c;没次移除尾巴节点本地考察链表的新增&#xff0c;删除&#xff0c;移动节点参考答案Java im…

UNITY实战进阶-BatchRendererGroup+Jobs+Burst+RVO2+GPUAnimation 实现万人团战(一)

研究思路&#xff1a;GPUAnimation把动画放入GPU中处理&#xff0c;BatchRendererGroup进行动态批量渲染处理&#xff0c;JobsBurst进行多线程处理逻辑&#xff08;移动、攻击等&#xff09;&#xff0c;RVO2采用Jobs的寻路导航。 准备工作&#xff1a; Editor > Project S…

PCI总线学习笔记:读写篇

前言 最近在写E1000网卡的驱动&#xff0c;这其中涉及到了PCI总线的相关内容。但是网上大部分关于PCI的文章都只局限在概念上的描述&#xff0c;并没有给出具体的例子来解释。这其实也是情理之中的&#xff0c;因为PCI总线规范就像是一个抽象的接口&#xff0c;其具体怎么实现…

正确使用@Autowired

目录 一、前言二、跟着官方文档&#xff0c;学习正确使用Autowired0、实验环境1、通过构造方法进行注入1.1 问题1&#xff1a;那万一没有这个CustomerPreferenceDao对象&#xff0c;会报错吗&#xff1f; 2、通过setter方法注入3、通过方法注入&#xff08;这个方法可以是任意名…

为什么苹果 Mac 电脑需要使用清理软件?

尽管 Apple Mac 电脑因其卓越的性能、简洁高效的 macOS 操作系统及独特的美学设计备受全球用户青睐&#xff0c;但任何电子设备在长期使用后都难以避免面临系统资源日渐累积的问题。其中一个重要维护需求在于&#xff0c;随着使用时间的增长&#xff0c;Mac电脑可能会由于系统垃…

go库x/text缺陷报告CVE-2022-32149的处理方案

#问题描述 go库 golang.org/x/text &#xff0c;注意这里不是go的源码&#xff0c; 在0.3.8版本之前存在一个缺陷(Vulnerability) 缺陷ID CVE-2022-32149 具体描述 攻击者可以通过制作一个Accept-Language报头来导致拒绝服务。 具体的原因是&#xff0c;在解析这个Accept-L…

数据结构__顺序表和单链表

顺序表的改进 问题&#xff1a; 1. 中间/头部的插入删除&#xff0c;时间复杂度为O(N) 2. 增容需要申请新空间&#xff0c;拷贝数据&#xff0c;释放旧空间。会有不小的消耗。 3. 增容一般是呈2倍的增长&#xff0c;势必会有一定的空间浪费。例如当前容量为100&#xff0c;满了…

C++——位图和布隆过滤器

在C中&#xff0c;哈希这种思想的应用场景有很多&#xff0c;位图就是其中的一种。 位图 位图&#xff1a;位图是一种哈希思想的产物&#xff0c;可以通过它来对数据进行快速的查找的方法&#xff0c;在位图中&#xff0c;有2种状态来表示在或者不在&#xff0c;即1/0。 位图…