【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', //page
                            limitName: '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;
                            //当前拖拽row
                            var 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  查询key
                form.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();
                }
                //查询keyList
                function 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) {

            //导入导出DIV
            var __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', //page
                            limitName: '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;
                            //当前拖拽row
                            var 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;
                            //当前拖拽row
                            var 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_重新渲染序号();
                            });
                        }},

四、效果图:

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Camtasia Studio2024汉化版下载(功能强大的屏幕录制和视频编辑软件)

Camtasia Studio 2024是一款功能强大的屏幕录制和视频编辑软件&#xff0c;由TechSmith公司开发。这款软件不仅能够帮助用户轻松地记录电脑屏幕上的任何操作&#xff0c;还可以将录制的视频进行专业的编辑和制作&#xff0c;最终输出高质量的视频教程、演示文稿、培训课程等。 …

如何在本地使用Ollama运行开源LLMs

本文将指导您下载并使用Ollama&#xff0c;在您的本地设备上与开源大型语言模型&#xff08;LLMs&#xff09;进行交互的强大工具。 与像ChatGPT这样的闭源模型不同&#xff0c;Ollama提供透明度和定制性&#xff0c;使其成为开发人员和爱好者的宝贵资源。 我们将探索如何下载…

【大数据存储】实验4 NoSQL数据库

实验4 NoSQL数据库 NoSQL数据库的安装和使用实验环境&#xff1a; Ubuntu 22.04.3 Jdk 1.8.0_341 Hadoop 3.2.3 Hbase 2.4.17 Redis 6.0.6 mongdb 6.0.12 mogosh 2.1.0 Redis 安装redis完成 新建终端启动redisredis-server新建一个终端redis-cli 建表操作 尝…

Vue项目中 安装及使用Sass(scss)

普通方法 一、安装使用scss 1. 安装 scss npm install scss --save2. 安装 node-sass 和 sass-loader sass-loader&#xff1a;把 sass编译成css node-sass&#xff1a;nodejs环境中将sass转css 提示&#xff1a;限制 node-sass&#xff0c;sass-loader 版本号&#xff0c;…

Jmeter02-1:参数化组件CVS

目录 1、Jmeter组件&#xff1a;参数化概述 1.1 是什么&#xff1f; 1.2 为什么&#xff1f; 1.3 怎么用&#xff1f; 2、Jmeter组件&#xff1a;参数化实现之CSV Data Set Config(重点中重点) 2.1 是什么&#xff1f; 2.2 为什么&#xff1f; 2.3 怎么用&#xff1f; …

高斯消元详解

算法概述 高斯消元法是一个用来求解线性方程组的算法 那么什么是线性方程组呢? 线性:每个未知数次数都为1次方程组:多个方程&#xff0c;多个未知数。 &#xff08;a1x1a2x2..anxnbn&#xff09;x为一次的 当x是平方的时候就不是线性 简而言之就是有多个未知数&#xff…

docker版Elasticsearch安装,ik分词器安装,用户名密码配置,kibana安装

1、安装es和ik分词器 创建映射目录并赋予权限&#xff1a; mkdir -p /docker_data/elasticsearch/conf mkdir -p /docker_data/elasticsearch/data mkdir -p /docker_data/elasticsearch/plugins chmod -R 777 /docker_data/elasticsearch编写配置文件&#xff1a; vi /dock…

水果销售(源码+文档)

水果销售管理系统&#xff08;小程序、ios、安卓都可部署&#xff09; 文件包含内容程序简要说明含有功能项目截图客户端添加地址首页商品详细意见反馈待发货商品分类我的代付款我的地址搜索防骗指南资料修改登录注册 后端管理分类管理反馈管理订单管理商品管理用户管理 文件包…

医疗器械5G智能制造工厂数字孪生可视化平台,推进行业数字化转型

医疗设备5G智能制造工厂数字孪生可视化平台&#xff0c;推进行业数字化转型。在数字化浪潮的推动下&#xff0c;医疗设备行业正迎来一场深刻的变革。5G技术的崛起&#xff0c;智能制造工厂的兴起&#xff0c;以及数字孪生可视化平台的出现&#xff0c;正在共同推动医疗设备行业…

C# WPF编程-命令

C# WPF编程-命令 概述WPF命令模型ICommand接口RoutedCommand类RoutedUICommand类命令库 概述 使用路由事件可以响应广泛的鼠标和键盘事件&#xff0c;这些事件是低级的元素。在实际应用程序中&#xff0c;功能被划分成一些高级的任务。这些任务可通过各种不同的动作和用户界面…

[StartingPoint][Tier0]Preignition

Task 1 Directory Brute-forcing is a technique used to check a lot of paths on a web server to find hidden pages. Which is another name for this? (i) Local File Inclusion, (ii) dir busting, (iii) hash cracking. (目录暴力破解是一种用于检查 Web 服务器上的大…

文献速递:深度学习胰腺癌诊断--螺旋变换与模型驱动的多模态深度学习方案相结合,用于自动预测胰腺癌中TP53突变麦田医学

Title 题目 Combined Spiral Transformation and Model-Driven Multi-Modal Deep Learning Scheme for Automatic Prediction of TP53 Mutation in Pancreatic Cancer 螺旋变换与模型驱动的多模态深度学习方案相结合&#xff0c;用于自动预测胰腺癌中TP53突变 01 文献速递介…

计算机视觉——图像金字塔理解与代码示例

图像金字塔 有时为了在图像中检测一个物体&#xff08;例如人脸、汽车或其他类似的物体&#xff09;&#xff0c;需要调整图像的大小或对图像进行子采样&#xff0c;并进行进一步的分析。在这种情况下&#xff0c;会保持一组具有不同分辨率的同一图像。称这种集合为图像金字塔…

【数据分析实战】印尼雅加达咖啡市场分析:品牌排名与市场趋势解读

目录 背景介绍数据展示数据分析可视化1. 各市咖啡店占比&#xff1a;1.1 可视化代码1.2 可视化结果1.3 浅薄解读 2. 品牌市场份额排名&#xff1a;2.1 可视化结果1.2 浅薄解读 3. 品牌消费者满意指数&#xff1a;3.1 可视化代码3.2 可视化结果3.3 浅薄解读 写在最后 背景介绍 …

03 Python进阶:MySQL - mysql-connector

mysql-connector安装 要在 Python 中使用 MySQL 数据库&#xff0c;你需要安装 MySQL 官方提供的 MySQL Connector/Python。下面是安装 MySQL Connector/Python 的步骤&#xff1a; 首先&#xff0c;确保你已经安装了 Python&#xff0c;如果没有安装&#xff0c;可以在 Python…

Flutter应用版本管理与更新策略:在苹果商店上架后的持续优化

引言 Flutter是一款由Google推出的跨平台移动应用开发框架&#xff0c;其强大的性能和流畅的用户体验使其备受开发者青睐。然而&#xff0c;开发一款应用只是第一步&#xff0c;将其成功上架到苹果商店才是实现商业目标的关键一步。本文将详细介绍如何使用Flutter将应用程序上…

Linux下Nginx详解

1、概念 1.1 介绍 Nginx是一个高性能的开源Web服务器软件&#xff0c;也可以用作反向代理服务器、负载均衡器和HTTP缓存。它的设计目标是高性能、稳定性、丰富的功能和低资源消耗。 1.2 应用场景 Web服务器&#xff1a;Nginx可以作为静态资源服务器&#xff0c;处理静态文件…

uniapp选择退出到指定页面

方法一&#xff1a;返回上n层页面 onUnload(){uni.navigateBack({delta:5,//返回上5层})},方法二&#xff1a;关闭当前页面&#xff0c;跳转到应用内的某个页面。 uni.redirectTo({url: "../home/index"//页面地址}) 方法三&#xff1a;关闭所有页面&#xff0c;打…

(2024)Ubuntu源码安装多个版本的opencv并切换使用

本人工作会用到x86_64的opencv和aarch64的opencv&#xff0c;所以写下来备忘自用 一、源码编译安装 依赖库安装&#xff1a; sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev o…

图论(Graph theory)

抽象数据结构类型 Graphic操作接口 操作接口功能描述操作接口功能描述e()获取图的总边数n()顶点的总数exits(v,u)判断v,u两个顶点是否存在边insert(v) 在顶点集 V 中插入新顶点 v remove(v,u)删除从v 到u的 关联边 remove(v) 将顶点 v 从顶点集中删除 type(v,u)边所属的类型(…