laravel Dcat Admin 入门应用(七)列copyable和自定义copy

发布于:2024-06-29 ⋅ 阅读:(178) ⋅ 点赞:(0)

laravel Dcat Admin 入门应用(七)列copyable和自定义copy

Dcat Admin 是一个基于 Laravel-admin 二次开发而成的后台构建工具,只需很少的代码即可构建出一个功能完善的高颜值后台系统。支持页面一键生成 CURD 代码,内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的 HTML 代码。
laravel Dcat Admin 入门应用(三)Grid 之 Column

福利彩蛋:没有好玩的 API 接口?上百款免费接口等你来,免费 API,免费 API 大全

copyable复制

系统自带列copy:方便快捷,但是不能满足自定义信息复制

    //当前类可以复制
    $grid->column('copy')->copyable() 

image.png

自定义复制

自定义复制,显示编号,点击复制:可以自定义需要复制的内容,不局限于显示的内容,
演示:

image.png

实现代码

js绑定和触发

首先在controller里面添加js脚本实现selector绑定和触发

    protected function script()
    {
        return <<<JS
        
//绑定selector,触发的时候显示弹窗
$('.content-body').on('click', '.copy-author-id', function () {
    showCopy($(this))
})

//点击 复制的是执行复制
$('body').on('click', '.custom-copy-id', function () {
    customCopy($(this))
})

JS;
    }
页面渲染时候加载
     /**
     * 页面列表展示,可以附加一些页面设置
     *
     * @param Content $content
     * @return Content
     */
    public function index(Content $content)
    {
        // 在这里可以引入你的js或css文件
        Admin::js(static::$js);
        
        // 需要在页面执行的JS代码,例如初始化代码
        // 通过 Admin::script 设置的JS代码会自动在所有JS脚本都加载完毕后执行
        Admin::script($this->script());

        //可以链式添加页面原始(html,js,css等)一个body相当于页面一个div.row层
        return $content->body($this->grid());
    }
grid列处理

    //点击标题的时候复制标题对应的Id:其他需要复制的内容都可以放到data-content中
    $grid->column('title', admin_trans_field('nick_name'))
        ->display(function ($title) {
            return "<span class='copy-author-id' data-content='" . encodeId($this->id) . "'>$title</span>";
        });
引入js copy文件
    public static $js = [
        '/js/previewImg.js'
    ];

/js/previewImg.js 文件内容

    //显示信息copy的弹窗层
    function showCopy(that) {
        layer.closeAll()
        var sourceId = that.attr('data-content')
        var cp = ' <a class="custom-copy-id" href="javascript:;" data-content="' + sourceId + '" style="color:red;cursor: pointer;">复制ID</a>';
        var html = sourceId + cp;
        layer.tips(html, that, {
            tips: [1, 'black'], //还可配置颜色,
            area: ['auto', 'auto'],
            time: 10000,
            shadeClose:true,
            shade:0.01
        });
    }
    
    /**
     * 自定义copy
     *
     * @param that
     */
    function customCopy(that) {
        var content = that.data('content');
    
        var $temp = $('<input>');
    
        $("body").append($temp);
        $temp.val(content).select();
        document.execCommand("copy");
        $temp.remove();
        layer.closeAll()
    }

福利彩蛋:没有好玩的 API 接口?上百款免费接口等你来,免费 API,免费 API 大全


网站公告

今日签到

点亮在社区的每一天
去签到