138 lines
5.9 KiB
HTML
138 lines
5.9 KiB
HTML
<!DOCTYPE html>
|
|
<html xmlns:th="http://www.thymeleaf.org"
|
|
>
|
|
<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})">
|
|
<link rel="stylesheet" th:href="@{/lib/zTree_v3/css/zTreeStyle/zTreeStyle.css}" type="text/css">
|
|
</head>
|
|
<body>
|
|
<div class="layui-form timo-compile">
|
|
<form th:action="@{/system/menu/save}">
|
|
<input type="hidden" name="id" th:if="${menu}" th:value="${menu.id}"/>
|
|
<div class="layui-form-item">
|
|
<label class="layui-form-label required">标题</label>
|
|
<div class="layui-input-inline">
|
|
<input class="layui-input" type="text" name="title" placeholder="请输入标题" th:value="${menu?.title}">
|
|
</div>
|
|
</div>
|
|
<div class="layui-form-item">
|
|
<label class="layui-form-label required">URL地址</label>
|
|
<div class="layui-input-inline">
|
|
<input class="layui-input url-input" type="text" name="url" placeholder="请输入URL地址" th:value="${menu?.url}">
|
|
</div>
|
|
</div>
|
|
<div class="layui-form-item">
|
|
<label class="layui-form-label required">权限标识</label>
|
|
<div class="layui-input-inline">
|
|
<input class="layui-input perms-input" type="text" name="perms" placeholder="请输入权限标识" th:value="${menu?.perms}">
|
|
</div>
|
|
<button class="layui-btn layui-btn-primary layui-btn-xs perms-refresh" style="margin-top: 8px">
|
|
<i class="layui-icon layui-icon-refresh" style="margin-right: 0"></i>
|
|
</button>
|
|
</div>
|
|
<div class="layui-form-item">
|
|
<label class="layui-form-label">菜单图标</label>
|
|
<div class="layui-input-inline">
|
|
<input class="layui-input icon-input" type="text" name="icon" placeholder="请输入菜单图标" th:value="${menu?.icon}">
|
|
</div>
|
|
<i th:class="'icon-show '+${menu?.icon}" style="line-height: 38px;"></i>
|
|
</div>
|
|
<div class="layui-form-item">
|
|
<label class="layui-form-label required">父级菜单</label>
|
|
<div class="layui-input-inline">
|
|
<input class="layui-input select-tree" th:attr="data-url=@{/system/menu/list}, data-value=${pMenu?.id}" type="text" name="pid" placeholder="请输入父级菜单" th:value="${pMenu?.title}">
|
|
</div>
|
|
</div>
|
|
<div class="layui-form-item">
|
|
<label class="layui-form-label required">菜单类型</label>
|
|
<div class="layui-input-inline">
|
|
<select name="type" mo:dict="MENU_TYPE" mo-selected="${menu?.type}" mo-empty="" lay-verify="type"></select>
|
|
</div>
|
|
</div>
|
|
<div class="layui-form-item">
|
|
<label class="layui-form-label">排序</label>
|
|
<div class="layui-input-inline">
|
|
<select class="select-sort" name="sort"
|
|
th:attr="data-url=@{/system/menu/sortList}, data-id=${menu?.id}, data-sort=${menu?.sort}" lay-verify="sort"></select>
|
|
</div>
|
|
<div class="layui-input-info">(之后)</div>
|
|
</div>
|
|
<div class="layui-form-item layui-form-text">
|
|
<label class="layui-form-label">备注</label>
|
|
<div class="layui-input-block">
|
|
<textarea placeholder="请输入内容" class="layui-textarea" name="remark">[[${menu?.remark}]]</textarea>
|
|
</div>
|
|
</div>
|
|
<div class="layui-form-item timo-finally">
|
|
<button class="layui-btn ajax-submit"><i class="fa fa-check-circle"></i> 保存</button>
|
|
<button class="layui-btn btn-secondary close-popup"><i class="fa fa-times-circle"></i> 关闭</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<script th:replace="/common/template :: script"></script>
|
|
<script type="text/javascript" th:src="@{/js/plugins/jquery-3.3.1.min.js}"></script>
|
|
<script type="text/javascript" th:src="@{/lib/zTree_v3/js/jquery.ztree.core.min.js}"></script>
|
|
<script type="text/javascript" th:src="@{/js/timoTree.js}"></script>
|
|
<script type="text/javascript">
|
|
layui.use(['form'], function () {
|
|
window.form = layui.form;
|
|
// 初始化排序下拉选项
|
|
var pid = $(".select-tree").data('value');
|
|
if (pid !== undefined){
|
|
sortRender({id: pid});
|
|
}
|
|
});
|
|
|
|
// 初始化下拉树
|
|
$.fn.selectTree({
|
|
rootTree: '顶级菜单',
|
|
// 选中后事件
|
|
onSelected: sortRender
|
|
});
|
|
|
|
// 更新渲染排序下拉选项
|
|
function sortRender(treeNode) {
|
|
var pid = treeNode.id;
|
|
var sort = $(".select-sort");
|
|
var id = sort.data('id') ? sort.data('id') : 0;
|
|
var url = sort.data('url') + "/" + pid + "/" + id;
|
|
$.get(url, function (result) {
|
|
var options = '';
|
|
var sortNum = Object.keys(result).length;
|
|
if(pid === $(".select-tree").data('value') && sort.data('sort')){
|
|
sortNum = sort.data('sort') - 1;
|
|
}
|
|
result[0] = "首位";
|
|
for(var key in result){
|
|
var selected = sortNum == key ? "selected=''" : "";
|
|
options += "<option value='"+ key +"' " + selected + ">"+ result[key] +"</option>";
|
|
}
|
|
sort.html(options);
|
|
form.render('select');
|
|
});
|
|
}
|
|
|
|
// 监听变动图标
|
|
$(".icon-input").on("input propertychange", function(){
|
|
$(".icon-show").attr("class", "icon-show "+$(this).val());
|
|
});
|
|
|
|
// 同步操作权限输入框
|
|
var $perms = $(".perms-input").val();
|
|
$(".url-input").on("input propertychange", function(){
|
|
if($perms === ''){
|
|
$(".perms-refresh").click();
|
|
}
|
|
});
|
|
|
|
// 更新权限标识
|
|
$(".perms-refresh").on("click", function (e) {
|
|
e.preventDefault();
|
|
var $perms = $(".perms-input");
|
|
var url = $(".url-input").val().substr(1);
|
|
var perms = url.replace(new RegExp( '/' , "g" ), ':');
|
|
$perms.val(perms);
|
|
})
|
|
|
|
</script>
|
|
</body>
|
|
</html> |