zTree和SweetAlert插件初探

1.zTree插件简介

zTree是一个依靠 jQuery实现的多功能“树插件”。优异的性能、灵活的配置、多种功能的组合是zTree最大优点。专门适合项目开发,尤其是树状菜单、树状数据的Web显示、权限管理等等。

官网地址:http://www.treejs.cn/v3/main.php#_zTreeInfo

2.zTree资源管理实例

⑴ 引入zTree的js和css文件:

 <script type="text/javascript" src="/assets/scripts/zTree_v3/js/jquery-1.4.4.min.js"></script>
 <script type="text/javascript" src="/assets/scripts/zTree_v3/js/jquery.ztree.core-3.5.js"></script>
 <script type="text/javascript" src="/assets/scripts/zTree_v3/js/jquery.ztree.excheck-3.5.js"></script>
 <link rel="stylesheet" href="/assets/scripts/zTree_v3/css/zTreeStyle/zTreeStyle.css" type="text/css" />

⑵ zTree的页面元素:通过读取隐藏的Input输入框中传递的JSON字符串初始化zTree树。

 <input type="hidden" id="zTreeNodes" value="{{_DATA_.ztreeNodes}}" />
 <span class="resourceSpan" >父资源<label style="color:#ff0000;">*</label>:</span>
 <div id="parentResource" class="ztree"></div>

⑶ js简单初始化zTree树:

var zNodesStr = document.getElementById("zTreeNodes").value;
var zNodes = JSON.parse(zNodesStr);
$.fn.zTree.init($("#parentResource"), setting, zNodes);

⑷ 给Ztree赋初值的java代码:

public UserResourceDTO initNewResources() {
    List<UsersResource> resourceList = new ArrayList<UsersResource>();
    resourceList = usersResourceService.getAllResource();
    JSONArray jsonNodes = new JSONArray();
    for (UsersResource tempRes : resourceList) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("id", tempRes.getId());
        jsonObject.put("pId", tempRes.getParentId());
        jsonObject.put("name", tempRes.getName());
        if (tempRes.getParentId() == 0) {
        jsonObject.put("checked", true);
        jsonObject.put("open", true);
        } else {
        jsonObject.put("open", false);
        }
        jsonNodes.add(jsonObject);
    }
    UserResourceDTO userResourceDTO = new UserResourceDTO();
    userResourceDTO.setZtreeNodes(jsonNodes.toString());

    return userResourceDTO;
    }

⑸ UserResourceDTO代码:

package com.ouc.mkhl.platform.usersAuth.dto;

import java.io.Serializable;

//RBAC权限管理-资源信息
public class UserResourceDTO implements Serializable {

    private static final long serialVersionUID = -889200123123123L;

    private Integer id;   //资源Id

    private String name;   //资源名称

    private String description;   //资源描述

    private String url;  //链接地址

    private String type;  //资源类型:0-URL资源,1-组件资源

    private String status;  //状态:0-隐藏,1-展示

    private String code;  //标识码

    private String configuration;  //配置项

    private String moduleName;  //模块名称

    private Integer orderIndex;   //排序号

    private Integer parentId;  //父资源

    private String ztreeNodes; // 关联资源结点

    public Integer getId() {
    return id;
    }

    public void setId(Integer id) {
    this.id = id;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name == null ? null : name.trim();
    }

    public String getDescription() {
    return description;
    }

    public void setDescription(String description) {
    this.description = description == null ? null : description.trim();
    }

    public String getUrl() {
    return url;
    }

    public void setUrl(String url) {
    this.url = url == null ? null : url.trim();
    }

    public String getType() {
    return type;
    }

    public void setType(String type) {
    this.type = type;
    }

    public String getStatus() {
    return status;
    }

    public void setStatus(String status) {
    this.status = status;
    }

    public String getCode() {
    return code;
    }

    public void setCode(String code) {
    this.code = code == null ? null : code.trim();
    }

    public String getConfiguration() {
    return configuration;
    }

    public void setConfiguration(String configuration) {
    this.configuration = configuration == null ? null : configuration
        .trim();
    }

    public String getModuleName() {
    return moduleName;
    }

    public void setModuleName(String moduleName) {
    this.moduleName = moduleName == null ? null : moduleName.trim();
    }

    public Integer getOrderIndex() {
    return orderIndex;
    }

    public void setOrderIndex(Integer orderIndex) {
    this.orderIndex = orderIndex;
    }

    public Integer getParentId() {
    return parentId;
    }

    public void setParentId(Integer parentId) {
    this.parentId = parentId;
    }

    public void setZtreeNodes(String ztreeNodes) {
    this.ztreeNodes = ztreeNodes == null ? null : ztreeNodes.trim();
    }

    public String getZtreeNodes() {
    return ztreeNodes;
    }

}

⑹ 示例页面resourceInfo.hbs代码:

{{#component "newResource js-comp"}}
    <script type="text/javascript" src="/assets/scripts/zTree_v3/js/jquery-1.4.4.min.js"></script>
    <script type="text/javascript" src="/assets/scripts/zTree_v3/js/jquery.ztree.core-3.5.js"></script>
    <script type="text/javascript" src="/assets/scripts/zTree_v3/js/jquery.ztree.excheck-3.5.js"></script>
    <script type="text/javascript" src="/assets/scripts/sweet-alert.min.js"></script>
    <script type="text/javascript" src="/assets/scripts/cookies.js"></script>
    <link rel="stylesheet" href="/assets/scripts/zTree_v3/css/zTreeStyle/zTreeStyle.css" type="text/css" />
    <link rel="stylesheet" type="text/css" href="/assets/styles/sweet-alert.css"/>

    <style>
        #resourceInfo {
            margin: 10px 100px 10px 120px;
            border: 1px solid #617775;
            background: #f5f5f5;
            width:1100px;
            height:660px;
        }
        #parentResource {
            margin: 10px auto;
            border: 1px solid #617775;
            background: #f0f6e4;
            width:1080px;
            height:160px;
            overflow-y:scroll;
            overflow-x:auto;
        }
        .resourceSpan {
            margin: 0 5px 0 20px;
        }

    </style>

    <div id="resourceInfo">
        <input type="hidden" id="zTreeNodes" value="{{_DATA_.ztreeNodes}}" />

        <span class="resourceSpan" style="color:#0000ff; font-weight:bold;">新建资源</span>
        <hr/>
        <span class="resourceSpan" >资源名称<label style="color:#ff0000;">*</label>:</span>
        <input type="text" id="resourceName" style="width: 875px" />
        <hr/>
        <span class="resourceSpan" >父资源<label style="color:#ff0000;">*</label>:</span>
        <div id="parentResource" class="ztree"></div>
        <hr/>
        <span class="resourceSpan" >所在模块<label style="color:#ff0000;">*</label>:</span>
        <input type="text" id="resourceModule" style="width: 880px" />
        <hr/>
        <span class="resourceSpan" >访问链接<label style="color:#ff0000;">*</label>:</span>
        <input type="text" id="resourceURL" style="width: 880px" />
        <hr/>
        <span class="resourceSpan" >资源类型<label style="color:#ff0000;">*</label>:</span>
        <select id="resourceType" style="width: 400px" >
            <option>URL资源</option>
            <option>组件资源</option>
        </select>
        <hr/>
        <span class="resourceSpan" >桌面显示<label style="color:#ff0000;">*</label>:</span>
        <select id="resourceStatus" style="width: 400px" >
            <option>是</option>
            <option>否</option>
        </select>
        <hr/>
        <span class="resourceSpan" >标识码<label style="color:#ff0000;">*</label>:</span>
        <input type="text" id="appCode" style="width: 80px" value="S00988" readonly="readonly"/>
        <input type="text" id="resourceCode" style="width: 200px" />
        <label> 为每个资源定义唯一的code(身份证),格式为:"Sxxxxx_xxxxx",若无S码,则只与填写第二空格</label>
        <hr/>
        <span class="resourceSpan" >序号<label style="color:#ff0000;">*</label>:</span>
        <input type="text" id="orderIndex" style="width: 480px" />
        <label> 排序号越小的资源显示越靠前</label>
        <hr/>
        <span class="resourceSpan">配置项:</span>
        <input type="text" id="configuration" style="width: 470px" />
        <hr/>
        <span class="resourceSpan">描述:</span>
        <input type="text" id="description" style="width: 490px" />
        <hr/>
        <span style="margin: 0 50px;"></span>
        <input id="newResource" size="12" type="button" value="创建" />
        <input id="reset" size="12" type="button" value="重置" />
        <hr/>
    </div>

    <SCRIPT type="text/javascript">
        var setting = {
            check: {
                enable: true,
                chkStyle: "radio",
                radioType: "all"
            },
            data: {
                simpleData: {
                    enable: true
                }
            }
        };

        $(document).ready(function(){
            var zNodesStr = document.getElementById("zTreeNodes").value;
            var zNodes = JSON.parse(zNodesStr);
            $.fn.zTree.init($("#parentResource"), setting, zNodes);

            var treeObj = $.fn.zTree.getZTreeObj("parentResource");

            $("#newResource").click(function() {
                var nodes = treeObj.getCheckedNodes(true);
                var parentId = nodes[0].id;   //资源父id

                var name = document.getElementById("resourceName").value; //资源名称
                if (name == "") {
                    sweetAlert("资源名称不能为空!");
                    return;
                }
                var moduleName = document.getElementById("resourceModule").value; //模块名称
                if (moduleName == "") {
                    sweetAlert("模块名称不能为空!");
                    return;
                }
                var resourceURL = document.getElementById("resourceURL").value; //访问链接
                if (resourceURL == "") {
                    sweetAlert("访问链接不能为空!");
                    return;
                }
                var resourceTypeStr = document.getElementById("resourceType").value; //资源类型
                var resourceType = 0;
                if (resourceTypeStr == "组件资源") {
                    resourceType = 1;
                } else {
                    resourceType = 0;
                }
                var resourceStatusStr = document.getElementById("resourceStatus").value; //桌面显示
                var resourceStatus = 1;
                if (resourceStatusStr == "否") {
                    resourceStatus = 0;
                } else {
                    resourceStatus = 1;
                }
                var resourceCodeStr = document.getElementById("resourceCode").value;
                var resourceCode = "";
                if (resourceCodeStr == "") {
                    sweetAlert("标识码不能为空!");
                    return;
                } else {
                    var codeRegex = /^[a-zA-Z0-9_]{1,}$/;
                    if(!codeRegex.exec(resourceCodeStr)){
                        sweetAlert("警告", "标识码格式非法!只能是字母或字母和数字的组合!", "warning");
                        return;
                    }
                    resourceCode = "S00988_"+ resourceCodeStr;
                }
                var orderIndexStr = document.getElementById("orderIndex").value;
                var orderIndex = 0;
                if (orderIndexStr == "") {
                    sweetAlert("排序号不能为空!");
                    return;
                } else {
                    var indexRegex = /^[0-9]+$/;
                    if(!indexRegex.exec(orderIndexStr)){
                        sweetAlert("警告", "排序号格式非法!只能是非负整数!", "warning");
                        return;
                    }else{
                        orderIndex = Number(orderIndexStr);
                    }
                }
                var configuration = document.getElementById("configuration").value; //配置项
                var description = document.getElementById("description").value; //资源描述

                $.ajax({
                    type: "GET",
                    url: "../api/createResource",
                    dataType : "json",
                    data:{
                        name: name, description: description, url: resourceURL, type: resourceType,
                        status: resourceStatus, code: resourceCode, configuration: configuration,
                        moduleName: moduleName, orderIndex: orderIndex, parentId: parentId
                    },
                    success: function () {
                        window.location.href = "resourcesList";
                    },
                    error: function (e) {
                        sweetAlert("创建资源失败:", e, "error");
                    }
                });
            });

            $("#reset").click(function() {
                treeObj.checkAllNodes(false);
                $("#resourceName").attr("value",‘‘); //清空
                $("#resourceModule").attr("value",‘‘);
                $("#resourceURL").attr("value",‘‘);
                $("#resourceType").attr("value",‘URL资源‘);
                $("#resourceStatus").attr("value",‘是‘);
                $("#resourceCode").attr("value",‘‘);
                $("#orderIndex").attr("value",‘‘);
                $("#configuration").attr("value",‘‘);
                $("#description").attr("value",‘‘);
            });
        });
    </SCRIPT>
{{/component}}

3.zTree资源管理实例效果图

4.SweetAlert插件简介

SweetAlert是一款不需要jQuery支持的原生js提示框,风格类似bootstrap。它的提示框不仅美丽动人,并且允许自定义,支持设置提示框标题、提示类型、内容展示图片、确认取消按钮文本、点击后回调函数等。

官网地址:http://demo.sc.chinaz.com/Files/DownLoad/webjs1/201410/jiaoben2855/

SweetAlert相关API:

                   参数                                                            描述
title   提示框标题
text   提示内容
type   提示类型,有:success(成功),error(错误),warning(警告),input(输入)。
showCancelButton   是否显示“取消”按钮。
animation   提示框弹出时的动画效果,如slide-from-top(从顶部滑下)等
html   是否支持html内容。
timer   设置自动关闭提示框时间(毫秒)。
showConfirmButton   是否显示确定按钮。
confirmButtonText   定义确定按钮文本内容。
imageUrl   定义弹出框中的图片地址。

5.SweetAlert警示框实例

⑴ 引入SweetAlert的js和css文件:

<script type="text/javascript" src="/assets/scripts/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="/assets/scripts/sweet-alert.min.js"></script>
<link rel="stylesheet" type="text/css" href="/assets/styles/sweet-alert.css"/>

⑵ js调用SweetAlert插件:

swal({
       title:"提示",
       text:"您确定要删除此角色吗?",
       type:"warning",
       showCancelButton:"true",
       showConfirmButton:"true",
       confirmButtonText:"确定",
       cancelButtonText:"取消",
       animation:"slide-from-top"
     }, function() {
        $.ajax({
            type : "GET",
            url : "../api/deleteRole?id=1"
        }).done(function(msg) {
           if(msg=="success"){
                swal("操作成功!", "已成功删除数据!", "success");
           }else{
                swal("操作失败!", "该角色已关联到组,请先将其移除组!", "warning");
           }
                window.location.href = "roleList?roleType=1";
           }).error(function() {
                swal("OMG", "删除操作失败了!", "error");
        });
});
时间: 2024-09-30 18:50:30

zTree和SweetAlert插件初探的相关文章

主攻ASP.NET.4.5.1 MVC5.0之重生:在项目中使用zTree jQuery 树插件

效果图和json格式 Controllers代码 using HR.Models; using HR.Models.Repository; /************************************************************************************ * 命名空间:HR.Controllers * Controller: TreeController * 版本号: F 1.0.0.0 * 负责人: Markfan * 电子邮箱:[ema

sweetalert插件使用

内容: 1.插件介绍 2.插件使用 1.插件介绍 SweetAlert是一个JS插件,能够完美替代JS自带的alert弹出框,并且功能强大,设计优美 使用这个很方便,推荐使用这个插件来写alert sweetalert插件下载:https://github.com/lipis/bootstrap-sweetalert 官方教程:https://sweetalert.js.org/guides/ 2.插件使用 下面是使用sweetalert的一个实例: HTML: 1 <div class="

VSCODE 插件初探

写在前面 分享一个vscode插件background(用于改变背景).点击直接跳到vscode插件开发步骤 做vscode的插件,很久就有这个想法了,但是一直因为这样,那样的事情耽误,放弃了N次.不过确实让我对文档有了个直观的了解. 上周末的时候因为测试妹纸要加班测试,让我也到公司加班,等待可能出现的bug这理由听着就扯淡 当然一群妹纸都到公司等着了,我也必须去......于是在等待bug的时间里看了看官方的文档,在这里写了点自己的摸索结果. 本文分为2部分,1是分享自己做的一个demo,2个

[CC]CC插件初探

应用程序插件框架的内容包括:主程序App,插件Plugin. 1.实现一个应用程序插架框架关键点有: 一个插件的标准接口,在主程序中存在一个插件的集合.主程序通过循环读取每个插件,将插件对象通过多态的机制转换为插件接口,实现插件的装载. 主程序对象或者主程序接口需要作为参数传递到插件对象中,以方便插件对象调用主程序的内容,如主视图.工具栏.树视图.状态栏等. 2.开源点云处理软件CloudCompare也是一个插件框架,因此也必然包括这些内容. 插件接口:ccPluginInterface,每个

jQuery 图片剪裁插件初探之 Jcrop

主页:http://deepliquid.com/content/Jcrop.html 官方下载地址:http://deepliquid.com/content/Jcrop_Download.html 下载包中除了 CSS 文件夹和 js 文件夹外还提供了几款 demo: 1. non-image.html 不包含图像的任意 div 的剪裁方式: 2.styling.html 提供了 3 种可以选择的遮罩色.透明度和选区边框样式 jcrop-light ( bgcolor:#fff opacit

collapsed_forwarding 插件初探

0.Bug描述 ats-x.x.x 使用 Read While Writer + Open Read Retry Timeout 实现合并回源 和 icp回源会产生冲突,导致合并回源效果不好 在ats-6.2中有一个 collapsed_forwarding 插件,将这个插件编译好部署在 ats-x.x.x 中,之前还担心会不兼容,效果还好: 1.编译方式 collapsed_forwarding 文件夹下只有: 1 [[email protected]10.110.26.73 collapse

解决sweetalert插件中不能添加两个input的问题

1.将html属性设置为true 2.将sweetalert.min.js文件中 <input type="text" tabIndex="3" />\n 修改为 <input id="swalInput" type="text" tabIndex="3" />\n 3.将sweetalert.css文件中.sweet-alert input { 修改为 .sweet-alert #

3DSMAX 中的CS 骨骼动画插件初探

王玉培 郑利平1 合肥工业大学计算机与信息学院VCC 研究室, 合肥 230009 摘要:首先介绍了3DSMAX 中的CS 骨骼动画制作方法,通过Biped 骨架可以快速方便的制 作两足动物的动画.并介绍了基于3DSMAX SDK 的插件开发,SDK 中类库的组织方式和3DSMAX 的场景组织,最后介绍了和3D引擎密切相关的骨骼动画导出插件的开发过程. 关键词:骨骼动画 插件开发 Biped Preliminary Study on the CS Skeletal Animation Plug-

ztree jquery树插件问题总结

1.设置所有非末级节点不可选 var nodes = treeObj.transformToArray(treeObj.getNodes()); for (var i = 0; i < nodes.length; i++) {    if (nodes[i].isParent) {        treeObj.setChkDisabled(nodes[i], true);    } }