上传后台管理系统代码

This commit is contained in:
xxy
2020-05-06 07:40:43 +08:00
parent 8ba73ed42b
commit ca9fd1c2f7
1182 changed files with 276446 additions and 0 deletions

View File

@ -0,0 +1,67 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<div class="form-group">
<label class="col-sm-3 control-label">标签名:</label>
<div class="col-sm-8">
<input id="name" name="name" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">数据值:</label>
<div class="col-sm-8">
<input id="value" name="value" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">类型:</label>
<div class="col-sm-8">
<input id="type" name="type" th:value="${type}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">描述:</label>
<div class="col-sm-8">
<input id="description" name="description" th:value="${description}" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">排序(升序):</label>
<div class="col-sm-8">
<input id="sort" name="sort" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">备注信息:</label>
<div class="col-sm-8">
<input id="remarks" name="remarks" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="/js/appjs/common/dict/add.js">
</script>
</body>
</html>

View File

@ -0,0 +1,66 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="col-sm-12">
<div class="ibox">
<div class="ibox-body">
<div class="fixed-table-toolbar">
<div class="columns pull-left">
<button shiro:hasPermission="common:dict:add" type="button"
class="btn btn-primary" onclick="add()">
<i class="fa fa-plus" aria-hidden="true"></i>添加
</button>
<button shiro:hasPermission="common:dict:batchRemove"
type="button" class="btn btn-danger" onclick="batchRemove()">
<i class="fa fa-trash" aria-hidden="true"></i>删除
</button>
</div>
<div class="columns pull-right">
<button class="btn btn-success" onclick="reLoad()">查询</button>
</div>
<div class="columns pull-right col-md-2">
<select data-placeholder="选择类别" class="form-control chosen-select"
tabindex="2" style="width: 100%">
<option value="">选择类别</option>
</select>
</div>
</div>
<table id="exampleTable" data-mobile-responsive="true">
</table>
</div>
</div>
</div>
</div>
<!--shiro控制bootstraptable行内按钮看见性-->
<div>
<script type="text/javascript">
var s_edit_h = 'hidden';
var s_remove_h = 'hidden';
var s_resetPwd_h = 'hidden';
</script>
</div>
<div shiro:hasPermission="common:dict:edit">
<script type="text/javascript">
s_edit_h = '';
</script>
</div>
<div shiro:hasPermission="common:dict:remove">
<script type="text/javascript">
var s_remove_h = '';
</script>
</div>
<div shiro:hasPermission="common:dict:add">
<script type="text/javascript">
var s_add_h = '';
</script>
</div>
</div>
<div th:include="include :: footer"></div>
<script type="text/javascript"
src="/js/appjs/common/dict/dict.js"></script>
</body>
</html>

View File

@ -0,0 +1,81 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<input id="id" name="id" th:value="${dict.id}"
class="form-control" type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">标签名:</label>
<div class="col-sm-8">
<input id="name" name="name" th:value="${dict.name}"
class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">数据值:</label>
<div class="col-sm-8">
<input id="value" name="value" th:value="${dict.value}"
class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">类型:</label>
<div class="col-sm-8">
<input id="type" name="type" th:value="${dict.type}"
class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">描述:</label>
<div class="col-sm-8">
<input id="description" name="description"
th:value="${dict.description}" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">排序:</label>
<div class="col-sm-8">
<input id="sort" name="sort" th:value="${dict.sort}"
class="form-control" type="text">
</div>
</div>
<div class="form-group hidden">
<label class="col-sm-3 control-label ">父级编号:</label>
<div class="col-sm-8">
<input id="parentId" name="parentId"
th:value="${dict.parentId}" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">备注信息:</label>
<div class="col-sm-8">
<input id="remarks" name="remarks"
th:value="${dict.remarks}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="/js/appjs/common/dict/edit.js">
</script>
</body>
</html>

View File

@ -0,0 +1,220 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>小说精品屋 - 文件管理器</title>
<meta name="keywords" content="">
<meta name="description" content="">
<link rel="shortcut icon" href="favicon.ico">
<link href="/css/bootstrap.min.css?v=3.3.6" rel="stylesheet">
<link href="/css/font-awesome.css?v=4.4.0" rel="stylesheet">
<link href="/css/animate.css" rel="stylesheet">
<link href="/css/layui.css" rel="stylesheet">
<link href="/css/style.css?v=4.1.0" rel="stylesheet">
<style>
.aactive {
color: #13b5b7 !important;
}
.hactive:hover{
color: #13b5b7 !important;
}
</style>
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content" id="app">
<div class="row">
<div class="col-sm-3">
<div class="ibox float-e-margins">
<div class="ibox-content">
<div class="file-manager">
<button type="button" class="layui-btn" id="test1">
<i class="fa fa-cloud"></i>上传文件
</button>
<div class="hr-line-dashed"></div>
<ul class="folder-list" style="padding: 0">
<li><a href="javascript:void(0)" class="file-control hactive" :class="{'aactive':type === ''}"
v-on:click="changeType('')"><i class="fa fa-folder"></i>所有文件</a></li>
<li><a href="javascript:void(0)" class="file-control hactive" :class="{'aactive':type === 0}"
v-on:click="changeType(0)"><i class="fa fa-folder"></i>图片</a></li>
<li><a href="javascript:void(0)" :class="{'aactive':type === 1}"
v-on:click="changeType(1)" class="file-control hactive"><i class="fa fa-folder"></i>文档</a>
</li>
<li><a href="javascript:void(0)" v-on:click="changeType(2)" :class="{'aactive':type === 2}"
class="file-control hactive"><i class="fa fa-folder"></i>视频</a></li>
<li><a href="javascript:void(0)" v-on:click="changeType(3)" :class="{'aactive':type === 3}"
class="file-control hactive"><i class="fa fa-folder"></i>音乐</a></li>
<li><a href="javascript:void(0)" v-on:click="changeType(99)" :class="{'aactive':type === 99}"
class="file-control hactive"><i class="fa fa-folder"></i>其他</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="col-sm-9 animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="file-box" v-for="row in rows">
<div class="file">
<a href="#">
<span class="corner"></span>
<div class="image">
<img alt="image" class="img-responsive" :src="row.url">
</div>
<div class="file-name">
<br/>
<small>{{row.createDate}}</small>
</div>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<button
class="btn btn-warning btn-xs copy" :url="row.url">复制
</button>&nbsp; &nbsp; &nbsp; &nbsp;<button class="btn btn-danger btn-xs"
@click="remove(row.id)">删除
</button>
</a>
</div>
</div>
<div id="incomeNum"></div>
</div>
</div>
<div>
<ul id="page"></ul>
</div>
</div>
</div>
</div>
<!-- 全局js -->
<script src="/js/jquery.min.js?v=2.1.4"></script>
<script src="/js/bootstrap.min.js?v=3.3.6"></script>
<script src="/js/bootstrap-paginator.min.js"></script>
<script src="/js/content.js?v=1.0.0"></script>
<script src="/js/layui.js"></script>
<script src="/js/plugins/clipboard/clipboard.min.js"></script>
<script src="/js/plugins/layer/layer.min.js"></script>
<script src="/js/vue.min.js"></script>
<script>
var app = new Vue({
el: '#app',
data: {
limit: 12,
offset: 0,
total: 0,
file: '',
type: '',
rows: '',
},
methods: {
getData: function () {
$.getJSON("/common/sysFile/list", {
limit: this.limit,
offset: this.offset,
type: this.type
}, function (r) {
app.total = r.total;
app.rows = r.rows;
app.page();
});
},
page: function () {
var options = {
currentPage: app.offset / 12 + 1, //当前页
totalPages: Math.ceil(app.total / 12), //总页数
numberofPages: 4, //显示的页数
bootstrapMajorVersion: 3,
alignment: 'center',
size: 'large',
shouldShowPage: true,
itemTexts: function (type, page, current) { //修改显示文字
switch (type) {
case "first":
return "首页";
case "prev":
return "上一页";
case "next":
return "下一页";
case "last":
return "尾页";
case "page":
return page;
}
},
onPageClicked: function (event, originalEvent, type, page) {
app.offset = (page - 1) * 12;
app.getData();
}
};
$('#page').bootstrapPaginator(options);
},
remove: function (id) {
layer.confirm('确定要删除选中的记录?', {
btn: ['确定', '取消']
}, function () {
$.ajax({
url: "/common/sysFile/remove",
type: "post",
data: {
'id': id
},
success: function (r) {
if (r.code == 0) {
layer.msg(r.msg);
app.getData();
} else {
layer.msg(r.msg);
app.getData();
}
}
});
})
},
changeType: function (i) {
this.type = i;
this.offset = 0;
this.getData();
}
},
created: function () {
this.changeType('')
}
});
</script>
<script type="text/javascript">
var clipboard = new Clipboard('button.copy', {
text: function (trigger) {
layer.msg('文件路径已复制到粘贴板');
return $(trigger).attr('url');
}
});
layui.use('upload', function () {
var upload = layui.upload;
//执行实例
var uploadInst = upload.render({
elem: '#test1', //绑定元素
url: '/common/sysFile/upload', //上传接口
size: 1000,
accept: 'file',
done: function (r) {
layer.msg(r.msg);
app.getData();
},
error: function (r) {
layer.msg(r.msg);
}
});
});
// function changeType(i) {
// app.type = i;
// app.offset = 0;
// app.getData();
// }
</script>
</body>
</html>

View File

@ -0,0 +1,108 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<div class="form-group">
<label class="col-sm-3 control-label">表名:</label>
<div class="col-sm-8">
<input id="tableName" name="tableName" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">列名:</label>
<div class="col-sm-8">
<input id="columnName" name="columnName" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">列类型:</label>
<div class="col-sm-8">
<input id="columnType" name="columnType" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">映射java类型</label>
<div class="col-sm-8">
<input id="javaType" name="javaType" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">列注释:</label>
<div class="col-sm-8">
<input id="columnComment" name="columnComment" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">列排序(升序):</label>
<div class="col-sm-8">
<input id="columnSort" name="columnSort" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">列标签名:</label>
<div class="col-sm-8">
<input id="columnLabel" name="columnLabel" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">页面显示类型1、文本框 2、下拉框 3、数值4、日期 5、文本域6、富文本 7、上传图片【单文件】
8、上传图片【多文件】9、上传文件【单文件】 10、上传文件【多文件】</label>
<div class="col-sm-8">
<input id="pageType" name="pageType" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">是否必填:</label>
<div class="col-sm-8">
<input id="isRequired" name="isRequired" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">页面显示为下拉时使用,字典类型从字典表中取出:</label>
<div class="col-sm-8">
<input id="dictType" name="dictType" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="/js/appjs/common/genColumns/add.js">
</script>
</body>
</html>

View File

@ -0,0 +1,132 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<input id="id" name="id" th:value="${genColumns.id}"
type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">表名:</label>
<div class="col-sm-8">
<input readonly id="tableName" name="tableName" class="form-control"
th:value="${genColumns.tableName}"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">列名:</label>
<div class="col-sm-8">
<input readonly id="columnName" name="columnName" class="form-control"
th:value="${genColumns.columnName}"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">列类型:</label>
<div class="col-sm-8">
<input readonly id="columnType" name="columnType" class="form-control"
th:value="${genColumns.columnType}"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">映射java类型</label>
<div class="col-sm-8">
<input readonly id="javaType" name="javaType" class="form-control"
th:value="${genColumns.javaType}"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">列注释:</label>
<div class="col-sm-8">
<input readonly id="columnComment" name="columnComment" class="form-control"
th:value="${genColumns.columnComment}"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">列排序(升序):</label>
<div class="col-sm-8">
<input readonly id="columnSort" name="columnSort" class="form-control"
th:value="${genColumns.columnSort}"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">列标签名:</label>
<div class="col-sm-8">
<input readonly id="columnLabel" name="columnLabel" class="form-control"
th:value="${genColumns.columnLabel}"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">页面显示类型1、文本框 2、下拉框 3、数值4、日期 5、文本域6、富文本 7、上传图片【单文件】 8、上传图片【多文件】9、上传文件【单文件】 10、上传文件【多文件】</label>
<div class="col-sm-8">
<input readonly id="pageType" name="pageType" class="form-control"
th:value="${genColumns.pageType}"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">是否必填:</label>
<div class="col-sm-8">
<input readonly id="isRequired" name="isRequired" class="form-control"
th:value="${genColumns.isRequired}"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">页面显示为下拉时使用,字典类型从字典表中取出:</label>
<div class="col-sm-8">
<input readonly id="dictType" name="dictType" class="form-control"
th:value="${genColumns.dictType}"
type="text">
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
</body>
</html>

View File

@ -0,0 +1,34 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header">
</head>
<link rel="stylesheet" href="/js/plugins/edittable/jquery.edittable.css">
<link rel="stylesheet" href="/js/plugins/edittable/main.css">
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<input id="genColumns" type="hidden" th:value="${genColumns}"/>
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<div id="edittable"></div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button style="padding: 0px 12px;" type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="/js/plugins/edittable/jquery.edittable.js"></script>
<script type="text/javascript" src="/js/appjs/common/genColumns/edit.js">
</script>
</body>
</html>

View File

@ -0,0 +1,49 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="col-sm-12">
<div class="ibox">
<div class="ibox-body">
<input type="hidden" id="tableName" th:value="${tableName}"/>
<!--<div class="fixed-table-toolbar">
<div class="columns pull-left">
<button shiro:hasPermission="common:genColumns:add" type="button"
class="btn btn-primary" onclick="add()">
<i class="fa fa-plus" aria-hidden="true"></i>添加
</button>
<button shiro:hasPermission="common:genColumns:batchRemove" type="button"
class="btn btn-danger"
onclick="batchRemove()">
<i class="fa fa-trash" aria-hidden="true"></i>删除
</button>
</div>
<div class="columns pull-right">
<button class="btn btn-success" onclick="reLoad()">查询</button>
</div>
<form id="searchForm">
<div class="columns pull-right col-md-2">
<input id="id" name="id" type="text" class="form-control"
placeholder="主键">
</div>
</form>
</div>-->
<table id="exampleTable" data-mobile-responsive="true">
</table>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button onclick="save()" type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div th:include="include :: footer"></div>
<script type="text/javascript" src="/js/appjs/common/genColumns/genColumns.js"></script>
</body>
</html>

View File

@ -0,0 +1,135 @@
package ${package}.controller;
import java.util.List;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import io.swagger.annotations.ApiOperation;
import ${package}.domain.${className}DO;
import ${package}.service.${className}Service;
import com.java2nb.common.utils.PageBean;
import com.java2nb.common.utils.Query;
import com.java2nb.common.utils.R;
/**
* ${comments}
*
* @author ${author}
* @email ${email}
* @date ${datetime}
*/
@Controller
@RequestMapping("/${pathName}/${classname}")
public class ${className}Controller {
@Autowired
private ${className}Service ${classname}Service;
@GetMapping()
@RequiresPermissions("${pathName}:${classname}:${classname}")
String ${className}() {
return "${pathName}/${classname}/${classname}";
}
@ApiOperation(value = "获取${comments}列表", notes = "获取${comments}列表")
@ResponseBody
@GetMapping("/list")
@RequiresPermissions("${pathName}:${classname}:${classname}")
public R list(@RequestParam Map<String, Object> params) {
//查询列表数据
Query query = new Query(params);
List<${className}DO> ${classname}List = ${classname}Service.list(query);
int total = ${classname}Service.count(query);
PageBean pageBean = new PageBean(${classname}List, total);
return R.ok().put("data", pageBean);
}
@ApiOperation(value = "新增${comments}页面", notes = "新增${comments}页面")
@GetMapping("/add")
@RequiresPermissions("${pathName}:${classname}:add")
String add() {
return "${pathName}/${classname}/add";
}
@ApiOperation(value = "修改${comments}页面", notes = "修改${comments}页面")
@GetMapping("/edit/{${pk.attrname}}")
@RequiresPermissions("${pathName}:${classname}:edit")
String edit(@PathVariable("${pk.attrname}") ${pk.javaType} ${pk.attrname}, Model model) {
${className}DO ${classname} = ${classname}Service.get(${pk.attrname});
model.addAttribute("${classname}", ${classname});
return "${pathName}/${classname}/edit";
}
@ApiOperation(value = "查看${comments}页面", notes = "查看${comments}页面")
@GetMapping("/detail/{${pk.attrname}}")
@RequiresPermissions("${pathName}:${classname}:detail")
String detail(@PathVariable("${pk.attrname}") ${pk.javaType} ${pk.attrname}, Model model) {
${className}DO ${classname} = ${classname}Service.get(${pk.attrname});
model.addAttribute("${classname}", ${classname});
return "${pathName}/${classname}/detail";
}
/**
* 保存
*/
@ApiOperation(value = "新增${comments}", notes = "新增${comments}")
@ResponseBody
@PostMapping("/save")
@RequiresPermissions("${pathName}:${classname}:add")
public R save( ${className}DO ${classname}) {
if (${classname}Service.save(${classname}) > 0) {
return R.ok();
}
return R.error();
}
/**
* 修改
*/
@ApiOperation(value = "修改${comments}", notes = "修改${comments}")
@ResponseBody
@RequestMapping("/update")
@RequiresPermissions("${pathName}:${classname}:edit")
public R update( ${className}DO ${classname}) {
${classname}Service.update(${classname});
return R.ok();
}
/**
* 删除
*/
@ApiOperation(value = "删除${comments}", notes = "删除${comments}")
@PostMapping("/remove")
@ResponseBody
@RequiresPermissions("${pathName}:${classname}:remove")
public R remove( ${pk.javaType} ${pk.attrname}) {
if (${classname}Service.remove(${pk.attrname}) > 0) {
return R.ok();
}
return R.error();
}
/**
* 删除
*/
@ApiOperation(value = "批量删除${comments}", notes = "批量删除${comments}")
@PostMapping("/batchRemove")
@ResponseBody
@RequiresPermissions("${pathName}:${classname}:batchRemove")
public R remove(@RequestParam("ids[]") ${pk.javaType}[] ${pk.attrname}s) {
${classname}Service.batchRemove(${pk.attrname}s);
return R.ok();
}
}

View File

@ -0,0 +1,32 @@
package ${package}.dao;
import ${package}.domain.${className}DO;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
/**
* ${comments}
* @author ${author}
* @email ${email}
* @date ${datetime}
*/
@Mapper
public interface ${className}Dao {
${className}DO get(${pk.javaType} ${pk.attrname});
List<${className}DO> list(Map<String,Object> map);
int count(Map<String,Object> map);
int save(${className}DO ${classname});
int update(${className}DO ${classname});
int remove(${pk.javaType} ${pk.columnName});
int batchRemove(${pk.javaType}[] ${pk.attrname}s);
}

View File

@ -0,0 +1,94 @@
package ${package}.dao;
import ${package}.domain.${className}DO;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
/**
* ${comments}
*
* @author ${author}
* @email ${email}
* @date ${datetime}
*/
@Mapper
public interface ${className}Mapper {
@Select("select #foreach($column in $columns)
`$column.columnName`#if($velocityCount != $columns.size()), #end
#end from ${tableName} where ${pk.columnName} = #{id}")
${className}DO get(${pk.javaType} ${pk.attrname});
@Select("<script>" +
"select * from ${tableName} " +
"<where>" +
#foreach($column in $columns)
"<if test=\"$column.attrname != null and $column.attrname.trim() != ''\">"+ "and $column.columnName = #{$column.attrname} " + "</if>" +
#end
"</where>"+
" <choose>" +
"<when test=\"sort != null and sort.trim() != ''\">" +
"order by ${sort} ${order}" +
"</when>" +
"<otherwise>" +
"order by ${pk.columnName} desc" +
"</otherwise>" +
"</choose>"+
"<if test=\"offset != null and limit != null\">"+
"limit #{offset}, #{limit}" +
"</if>"+
"</script>")
List<${className}DO> list(Map<String,Object> map);
@Select("<script>" +
"select count(*) from ${tableName} " +
"<where>" +
#foreach($column in $columns)
"<if test=\"$column.attrname != null and $column.attrname.trim() != ''\">"+ "and $column.columnName = #{$column.attrname} " + "</if>" +
#end
"</where>"+
"</script>")
int count(Map<String,Object> map);
@Insert("insert into ${tableName} (#foreach($column in $columns)
#if($column.columnName != $pk.columnName || $pk.extra != 'auto_increment')
`$column.columnName`#if($velocityCount != $columns.size()), #end
#end
#end)"
+ "values (#foreach($column in $columns)
#if($column.columnName != $pk.columnName || $pk.extra != 'auto_increment')
#{$column.attrname}#if($velocityCount != $columns.size()), #end
#end
#end)")
int save(${className}DO ${classname});
int saveSelective(${className}DO ${classname});
@Update("<script>"+
"update ${tableName} " +
"<set>" +
#foreach($column in $columns)
"<if test=\"$column.attrname != null\">`$column.columnName` = #{$column.attrname}, </if>" +
#end
"</set>" +
"where ${pk.columnName} = #{${pk.attrname}}"+
"</script>")
int update(${className}DO ${classname});
@Delete("delete from ${tableName} where ${pk.columnName} =#{${pk.attrname}}")
int remove(${pk.javaType} ${pk.columnName});
@Delete("<script>"+
"delete from ${tableName} where ${pk.columnName} in " +
"<foreach item=\"${pk.attrname}\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">" +
"#{${pk.attrname}}" +
"</foreach>"+
"</script>")
int batchRemove(${pk.javaType}[] ${pk.attrname}s);
}

View File

@ -0,0 +1,98 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${package}.dao.${className}Dao">
<select id="get" resultType="${package}.domain.${className}DO">
select #foreach($column in $columns)`$column.columnName`#if($velocityCount != $columns.size()),#end#end from ${tableName} where ${pk.columnName} = #{value}
</select>
<select id="list" resultType="${package}.domain.${className}DO">
select #foreach($column in $columns)`$column.columnName`#if($velocityCount != $columns.size()),#end#end from ${tableName}
<where>
#foreach($column in $columns)
<if test="$column.attrname != null and $column.attrname.trim() != ''"> and $column.columnName = #{$column.attrname} </if>
#end
</where>
<choose>
<when test="sort != null and sort.trim() != ''">
order by ${sort} ${order}
</when>
<otherwise>
order by ${pk.columnName} desc
</otherwise>
</choose>
<if test="offset != null and limit != null">
limit #{offset}, #{limit}
</if>
</select>
<select id="count" resultType="int">
select count(*) from ${tableName}
<where>
#foreach($column in $columns)
<if test="$column.attrname != null and $column.attrname.trim() != ''"> and $column.columnName = #{$column.attrname} </if>
#end
</where>
</select>
<insert id="save" parameterType="${package}.domain.${className}DO"#if($pk.extra == 'auto_increment') useGeneratedKeys="true" keyProperty="$pk.attrname"#end>
insert into ${tableName}
(
#foreach($column in $columns)
#if($column.columnName != $pk.columnName || $pk.extra != 'auto_increment')
`$column.columnName`#if($velocityCount != $columns.size()), #end
#end
#end
)
values
(
#foreach($column in $columns)
#if($column.columnName != $pk.columnName || $pk.extra != 'auto_increment')
#{$column.attrname}#if($velocityCount != $columns.size()), #end
#end
#end
)
</insert>
<insert id="saveSelective" parameterType="${package}.domain.${className}DO"#if($pk.extra == 'auto_increment') useGeneratedKeys="true" keyProperty="$pk.attrname"#end>
insert into ${tableName}
(
#foreach($column in $columns)
<if test="$column.attrname != null"> `$column.columnName`#if($velocityCount != $columns.size()), #end </if>
#end
)
values
(
#foreach($column in $columns)
<if test="$column.attrname != null"> #{$column.attrname}#if($velocityCount != $columns.size()), #end </if>
#end
)
</insert>
<update id="update" parameterType="${package}.domain.${className}DO">
update ${tableName}
<set>
#foreach($column in $columns)
#if($column.columnName != $pk.columnName)
<if test="$column.attrname != null">`$column.columnName` = #{$column.attrname}#if($velocityCount != $columns.size()), #end</if>
#end
#end
</set>
where ${pk.columnName} = #{${pk.attrname}}
</update>
<delete id="remove">
delete from ${tableName} where ${pk.columnName} = #{value}
</delete>
<delete id="batchRemove">
delete from ${tableName} where ${pk.columnName} in
<foreach item="${pk.attrname}" collection="array" open="(" separator="," close=")">
#{${pk.attrname}}
</foreach>
</delete>
</mapper>

View File

@ -0,0 +1,30 @@
package ${package}.service;
import ${package}.domain.${className}DO;
import java.util.List;
import java.util.Map;
/**
* ${comments}
*
* @author ${author}
* @email ${email}
* @date ${datetime}
*/
public interface ${className}Service {
${className}DO get(${pk.javaType} ${pk.attrname});
List<${className}DO> list(Map<String, Object> map);
int count(Map<String, Object> map);
int save(${className}DO ${classname});
int update(${className}DO ${classname});
int remove(${pk.javaType} ${pk.attrname});
int batchRemove(${pk.javaType}[] ${pk.attrname}s);
}

View File

@ -0,0 +1,55 @@
package ${package}.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import ${package}.dao.${className}Dao;
import ${package}.domain.${className}DO;
import ${package}.service.${className}Service;
@Service
public class ${className}ServiceImpl implements ${className}Service {
@Autowired
private ${className}Dao ${classname}Dao;
@Override
public ${className}DO get(${pk.javaType} ${pk.attrname}){
return ${classname}Dao.get(${pk.attrname});
}
@Override
public List<${className}DO> list(Map<String, Object> map){
return ${classname}Dao.list(map);
}
@Override
public int count(Map<String, Object> map){
return ${classname}Dao.count(map);
}
@Override
public int save(${className}DO ${classname}){
return ${classname}Dao.save(${classname});
}
@Override
public int update(${className}DO ${classname}){
return ${classname}Dao.update(${classname});
}
@Override
public int remove(${pk.javaType} ${pk.attrname}){
return ${classname}Dao.remove(${pk.attrname});
}
@Override
public int batchRemove(${pk.javaType}[] ${pk.attrname}s){
return ${classname}Dao.batchRemove(${pk.attrname}s);
}
}

View File

@ -0,0 +1,83 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
#foreach($column in $columns)
#if($column.columnName != $pk.columnName)
<div class="form-group">
#if($column.pageType != 11 && $column.pageType != 12)
<label class="col-sm-3 control-label">${column.columnLabel}</label>
#end
<div class="col-sm-8">
#if($column.pageType == 4)
<input type="text" class="laydate-icon layer-date form-control"
id="${column.attrname}"
name="${column.attrname}"
onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss'})"
style="background-color: #fff;" readonly="readonly"/>
#elseif($column.pageType == 1)
<input id="${column.attrname}" name="${column.attrname}"
class="form-control"
type="text">
#elseif($column.pageType == 2)
<select data-placeholder="--选择--" id="${column.attrname}"
name="${column.attrname}"
class="form-control chosen-select" tabindex="2"
dict-type="${column.dictType}">
</select>
#elseif($column.pageType == 3)
<input id="${column.attrname}" name="${column.attrname}"
class="form-control"
type="number">
#elseif($column.pageType == 5)
<textarea id="${column.attrname}" name="${column.attrname}"
class="form-control"></textarea>
#elseif($column.pageType == 6)
<input type="hidden" id="${column.attrname}" name="${column.attrname}"/>
<div id="contentEditor${column.attrname}">
</div>
#elseif($column.pageType == 7)
<img title="点击选择图片" id="picImage${column.attrname}"
style="cursor:pointer;width: 100px;height: 100px"
src="/img/webuploader.png"/>
<input id="${column.attrname}" name="${column.attrname}"
class="form-control"
type="hidden">
#elseif($column.pageType == 11)
<input type="hidden" id="${column.attrname}" name="${column.attrname}"/>
#*#else
<input id="${column.attrname}" name="${column.attrname}"
class="form-control"
type="text">*#
#end
</div>
</div>
#end
#end
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="/wangEditor/release/wangEditor.js"></script>
<script type="text/javascript" src="/js/appjs/${pathName}/${classname}/add.js">
</script>
</body>
</html>

View File

@ -0,0 +1,121 @@
var E = window.wangEditor;
$("[id^='contentEditor']").each(function (index, ele) {
var relName = $(ele).attr("id").substring(13);
var editor = new E('#contentEditor' + relName);
// 自定义菜单配置
editor.customConfig.menus = [
'head', // 标题
'bold', // 粗体
'fontSize', // 字号
'fontName', // 字体
'italic', // 斜体
'underline', // 下划线
'strikeThrough', // 删除线
'foreColor', // 文字颜色
//'backColor', // 背景颜色
//'link', // 插入链接
'list', // 列表
'justify', // 对齐方式
'quote', // 引用
'emoticon', // 表情
'image', // 插入图片
//'table', // 表格
//'video', // 插入视频
//'code', // 插入代码
'undo', // 撤销
'redo' // 重复
];
editor.customConfig.onchange = function (html) {
// html 即变化之后的内容
$("#" + relName).val(html);
}
editor.customConfig.uploadImgShowBase64 = true;
editor.create();
})
$("[id^='picImage']").each(function (index, ele) {
var relName = $(ele).attr("id").substring(8);
layui.use('upload', function () {
var upload = layui.upload;
//执行实例
var uploadInst = upload.render({
elem: '#picImage' + relName, //绑定元素
url: '/common/sysFile/upload', //上传接口
size: 1000,
accept: 'file',
done: function (r) {
$("#picImage" + relName).attr("src", r.fileName);
$("#" + relName).val(r.fileName);
},
error: function (r) {
layer.msg(r.msg);
}
});
});
});
$().ready(function () {
validateRule();
});
$.validator.setDefaults({
submitHandler: function () {
save();
}
});
function save() {
$.ajax({
cache: true,
type: "POST",
url: "/${pathName}/${classname}/save",
data: $('#signupForm').serialize(),// 你的formid
async: false,
error: function (request) {
parent.layer.alert("Connection error");
},
success: function (data) {
if (data.code == 0) {
parent.layer.msg("操作成功");
parent.reLoad();
var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引
parent.layer.close(index);
} else {
parent.layer.alert(data.msg)
}
}
});
}
function validateRule() {
var icon = "<i class='fa fa-times-circle'></i> ";
$("#signupForm").validate({
ignore: "",
rules: {
#foreach($column in $columns)
#if($column.columnName != $pk.columnName && $column.isRequired == 1)
${column.attrname}: {
required: true
}#if($velocityCount != $columns.size()), #end
#end
#end
},
messages: {
#foreach($column in $columns)
#if($column.columnName != $pk.columnName && $column.isRequired == 1)
${column.attrname}: {
required: icon + "请选择${column.columnLabel}"
}#if($velocityCount != $columns.size()), #end
#end
#end
}
})
}

View File

@ -0,0 +1,59 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<input id="${pk.columnName}" name="${pk.columnName}" th:value="${${classname}.${pk.columnName}}"
type="hidden">
#foreach($column in $columns)
#if($column.columnName != $pk.columnName)
<div class="form-group">
<label class="col-sm-3 control-label">${column.columnLabel}</label>
#if($column.pageType == 4)
<div style="padding-top:8px" class="col-sm-8"
th:text="${${classname}.${column.attrname}}==null?null:${#dates.format(${classname}.${column.attrname},'yyyy-MM-dd HH:mm:ss')}">
</div>
#elseif($column.pageType == 2)
<div style="padding-top:8px" class="col-sm-8 dict-type" dict-type="${column.dictType}"
th:attr="dict-value=${${classname}.${column.attrname}}">
</div>
#elseif($column.pageType == 6)
<div style="padding-top:8px" class="col-sm-8"
th:utext="${${classname}.${column.attrname}}"></div>
#elseif($column.pageType == 7)
<div style="padding-top:8px" class="col-sm-8">
<img id="picImage${column.attrname}"
style="cursor:pointer;width: 100px;height: 100px"
th:src="${${classname}.${column.attrname}}==null?'/img/webuploader.png':${${classname}.${column.attrname}}"/>
</div>
#else
<div style="padding-top:8px" class="col-sm-8"
th:text="${${classname}.${column.attrname}}">
</div>
#*#else
<input id="${column.attrname}" name="${column.attrname}"
class="form-control"
type="text">*#
#end
</div>
#end
#end
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
</body>
</html>

View File

@ -0,0 +1,55 @@
package ${package}.domain;
import java.io.Serializable;
import java.math.BigDecimal;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.java2nb.common.jsonserializer.LongToStringSerializer;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* ${comments}
*
* @author ${author}
* @email ${email}
* @date ${datetime}
*/
public class ${className}DO implements Serializable {
private static final long serialVersionUID = 1L;
#foreach ($column in $columns)
//$column.columnComment
#if($column.javaType == "Long")
//java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值)
//所以通过序列化成字符串来解决
@JsonSerialize(using = LongToStringSerializer.class)
#end
#if($column.javaType == "Date")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
#end
private $column.javaType $column.attrname;
#end
#foreach ($column in $columns)
/**
* 设置:${column.columnComment}
*/
public void set${column.attrName}($column.javaType $column.attrname) {
this.$column.attrname = $column.attrname;
}
/**
* 获取:${column.columnComment}
*/
public $column.javaType get${column.attrName}() {
return $column.attrname;
}
#end
}

View File

@ -0,0 +1,71 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<div class="form-group">
<label class="col-sm-3 control-label">作者:</label>
<div class="col-sm-8">
<input id="author" name="author" class="form-control"
type="text" th:value="${property.author}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">邮箱:</label>
<div class="col-sm-8">
<input id="email" name="email" class="form-control" type="text"
th:value="${property.email}" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">本地项目Src路径</label>
<div class="col-sm-8">
<input id="srcPath" name="srcPath" class="form-control"
type="text" th:value="${property.srcPath}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">包名:</label>
<div class="col-sm-8">
<input id="package" name="package" class="form-control"
type="text" th:value="${property.package}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">自动去掉表前缀:</label>
<div class="col-sm-2 i-checks icheckbox_square-green checked">
<input id="autoRemovePre" name="autoRemovePre"
class="form-control" type="checkbox"
value="true"
th:checked="${property.autoRemovePre}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">去掉指定表前缀:</label>
<div class="col-sm-8">
<input id="tablePrefix" name="tablePrefix" class="form-control"
type="text" th:value="${property.tablePrefix}">
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="/js/appjs/common/generator/edit.js">
</script>
</body>
</html>

View File

@ -0,0 +1,88 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<input id="${pk.columnName}" name="${pk.columnName}" th:value="${${classname}.${pk.columnName}}"
type="hidden">
#foreach($column in $columns)
#if($column.columnName != $pk.columnName)
<div class="form-group">
#if($column.pageType != 11 && $column.pageType != 12)
<label class="col-sm-3 control-label">${column.columnLabel}</label>
#end
<div class="col-sm-8">
#if($column.pageType == 4)
<input type="text" class="laydate-icon layer-date form-control"
id="${column.attrname}"
name="${column.attrname}"
th:value="${${classname}.${column.attrname}}==null?null:${#dates.format(${classname}.${column.attrname},'yyyy-MM-dd HH:mm:ss')}"
onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss'})"
style="background-color: #fff;" readonly="readonly"/>
#elseif($column.pageType == 1)
<input id="${column.attrname}" name="${column.attrname}"
th:value="${${classname}.${column.attrname}}"
class="form-control"
type="text">
#elseif($column.pageType == 2)
<select data-placeholder="--选择--" id="${column.attrname}"
name="${column.attrname}"
class="form-control chosen-select" tabindex="2"
dict-type="${column.dictType}"
th:attr="dict-value=${${classname}.${column.attrname}}" >
</select>
#elseif($column.pageType == 3)
<input id="${column.attrname}" name="${column.attrname}"
th:value="${${classname}.${column.attrname}}"
class="form-control"
type="number">
#elseif($column.pageType == 5)
<textarea id="${column.attrname}" name="${column.attrname}"
class="form-control" th:text="${${classname}.${column.attrname}}"></textarea>
#elseif($column.pageType == 6)
<input type="hidden" id="${column.attrname}" name="${column.attrname}" th:value="${${classname}.${column.attrname}}"/>
<div id="contentEditor${column.attrname}">
</div>
#elseif($column.pageType == 7)
<img title="点击选择图片" id="picImage${column.attrname}"
style="cursor:pointer;width: 100px;height: 100px"
th:src="${${classname}.${column.attrname}}==null?'/img/webuploader.png':${${classname}.${column.attrname}}"/>
<input id="${column.attrname}" name="${column.attrname}" th:value="${${classname}.${column.attrname}}"
class="form-control"
type="hidden">
#elseif($column.pageType == 11)
<input type="hidden" id="${column.attrname}" name="${column.attrname}" th:value="${${classname}.${column.attrname}}"/>
#*#else
<input id="${column.attrname}" name="${column.attrname}"
class="form-control"
type="text">*#
#end
</div>
</div>
#end
#end
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="/wangEditor/release/wangEditor.js"></script>
<script type="text/javascript" src="/js/appjs/${pathName}/${classname}/edit.js">
</script>
</body>
</html>

View File

@ -0,0 +1,119 @@
var E = window.wangEditor;
$("[id^='contentEditor']").each(function (index, ele) {
var relName = $(ele).attr("id").substring(13);
var editor = new E('#contentEditor' + relName);
// 自定义菜单配置
editor.customConfig.menus = [
'head', // 标题
'bold', // 粗体
'fontSize', // 字号
'fontName', // 字体
'italic', // 斜体
'underline', // 下划线
'strikeThrough', // 删除线
'foreColor', // 文字颜色
//'backColor', // 背景颜色
//'link', // 插入链接
'list', // 列表
'justify', // 对齐方式
'quote', // 引用
'emoticon', // 表情
'image', // 插入图片
//'table', // 表格
//'video', // 插入视频
//'code', // 插入代码
'undo', // 撤销
'redo' // 重复
];
editor.customConfig.onchange = function (html) {
// html 即变化之后的内容
$("#" + relName).val(html);
}
editor.customConfig.uploadImgShowBase64 = true;
editor.create();
editor.txt.html($("#" + relName).val());
})
$("[id^='picImage']").each(function (index, ele) {
var relName = $(ele).attr("id").substring(8);
layui.use('upload', function () {
var upload = layui.upload;
//执行实例
var uploadInst = upload.render({
elem: '#picImage' + relName, //绑定元素
url: '/common/sysFile/upload', //上传接口
size: 1000,
accept: 'file',
done: function (r) {
$("#picImage" + relName).attr("src", r.fileName);
$("#" + relName).val(r.fileName);
},
error: function (r) {
layer.msg(r.msg);
}
});
});
});
$().ready(function () {
validateRule();
});
$.validator.setDefaults({
submitHandler: function () {
update();
}
});
function update() {
$.ajax({
cache: true,
type: "POST",
url: "/${pathName}/${classname}/update",
data: $('#signupForm').serialize(),// 你的formid
async: false,
error: function (request) {
parent.layer.alert("Connection error");
},
success: function (data) {
if (data.code == 0) {
parent.layer.msg("操作成功");
parent.reLoad();
var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引
parent.layer.close(index);
} else {
parent.layer.alert(data.msg)
}
}
});
}
function validateRule() {
var icon = "<i class='fa fa-times-circle'></i> ";
$("#signupForm").validate({
ignore: "",
rules: {
#foreach($column in $columns)
#if($column.columnName != $pk.columnName && $column.isRequired == 1)
${column.attrname}:
{
required: true
}#if($velocityCount != $columns.size()), #end
#end
#end
},
messages: {
#foreach($column in $columns)
#if($column.columnName != $pk.columnName && $column.isRequired == 1)
${column.attrname}:
{
required: icon + "请选择${column.columnLabel}"
}#if($velocityCount != $columns.size()), #end
#end
#end
}
})
}

View File

@ -0,0 +1,43 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="col-sm-12">
<div class="ibox">
<div class="ibox-body">
<div class="fixed-table-toolbar">
<div class="columns pull-left">
<!--<button type="button" class="btn btn-primary"
onclick="batchDownload()">
<i class="" aria-hidden="true"></i>批量下载
</button>
<button type="button" class="btn btn-success"
onclick="batchCode()">
<i class="" aria-hidden="true"></i>批量生成
</button>-->
<button type="button" class="btn btn-info"
onclick="edit()">
<i class="" aria-hidden="true"></i>生成配置
</button>
</div>
<div class="columns pull-right">
<button class="btn btn-success" onclick="reLoad()">查询</button>
</div>
<div class="columns pull-right col-md-2">
<input id="tableName" type="text" class="form-control"
placeholder="表名">
</div>
</div>
<table id="exampleTable" data-mobile-responsive="true">
</table>
</div>
</div>
</div>
</div>
<div th:include="include :: footer"></div>
<script type="text/javascript" src="/js/appjs/common/generator/list.js"></script>
</body>
</html>

View File

@ -0,0 +1,66 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="col-sm-12">
<div class="ibox">
<div class="ibox-body">
<div class="fixed-table-toolbar">
<div class="columns pull-left">
<button shiro:hasPermission="${pathName}:${classname}:add" type="button"
class="btn btn-primary" onclick="add()">
<i class="fa fa-plus" aria-hidden="true"></i>添加
</button>
<button shiro:hasPermission="${pathName}:${classname}:batchRemove" type="button"
class="btn btn-danger"
onclick="batchRemove()">
<i class="fa fa-trash" aria-hidden="true"></i>删除
</button>
</div>
<div class="columns pull-right">
<button class="btn btn-success" onclick="reLoad()">查询</button>
</div>
<form id="searchForm">
<div class="columns pull-right col-md-2">
<input id="id" name="id" type="text" class="form-control"
placeholder="主键">
</div>
</form>
</div>
<table id="exampleTable" data-mobile-responsive="true">
</table>
</div>
</div>
</div>
</div>
<!--shiro控制bootstraptable行内按钮看见性 -->
<div>
<script type="text/javascript">
var s_detail_h = 'hidden';
var s_edit_h = 'hidden';
var s_remove_h = 'hidden';
</script>
</div>
<div shiro:hasPermission="test:order:detail">
<script type="text/javascript">
s_detail_h = '';
</script>
</div>
<div shiro:hasPermission="${pathName}:${classname}:edit">
<script type="text/javascript">
s_edit_h = '';
</script>
</div>
<div shiro:hasPermission="${pathName}:${classname}:remove">
<script type="text/javascript">
var s_remove_h = '';
</script>
</div>
<div th:include="include :: footer"></div>
<script type="text/javascript" src="/js/appjs/${pathName}/${classname}/${classname}.js"></script>
</body>
</html>

View File

@ -0,0 +1,197 @@
var prefix = "/${pathName}/${classname}"
$(function () {
load();
});
function load() {
$('#exampleTable')
.bootstrapTable(
{
method: 'get', // 服务器数据的请求方式 get or post
url: prefix + "/list", // 服务器数据的加载地址
// showRefresh : true,
// showToggle : true,
// showColumns : true,
iconSize: 'outline',
toolbar: '#exampleToolbar',
striped: true, // 设置为true会有隔行变色效果
dataType: "json", // 服务器返回的数据类型
pagination: true, // 设置为true会在底部显示分页条
// queryParamsType : "limit",
// //设置为limit则会发送符合RESTFull格式的参数
singleSelect: false, // 设置为true将禁止多选
// contentType : "application/x-www-form-urlencoded",
// //发送到服务器的数据编码类型
pageSize: 10, // 如果设置了分页,每页数据条数
pageNumber: 1, // 如果设置了分布,首页页码
//search : true, // 是否显示搜索框
showColumns: false, // 是否显示内容下拉框(选择显示的列)
sidePagination: "server", // 设置在哪里进行分页,可选值为"client" 或者 "server"
queryParams: function (params) {
//说明传入后台的参数包括offset开始索引limit步长sort排序列orderdesc或者,以及所有列的键值对
var queryParams = getFormJson("searchForm");
queryParams.limit = params.limit;
queryParams.offset = params.offset;
return queryParams;
},
// //请求服务器数据时,你可以通过重写参数的方式添加一些额外的参数,例如 toolbar 中的参数 如果
// queryParamsType = 'limit' ,返回参数必须包含
// limit, offset, search, sort, order 否则, 需要包含:
// pageSize, pageNumber, searchText, sortName,
// sortOrder.
// 返回false将会终止请求
responseHandler: function (rs) {
if (rs.code == 0) {
return rs.data;
} else {
parent.layer.alert(rs.msg)
return {total: 0, rows: []};
}
},
columns: [
{
checkbox: true
},
{
title: '序号',
formatter: function () {
return arguments[2] + 1;
}
},
#foreach($column in $columns)
#if($column.pageType == 2)
{
field: '${column.attrname}',
title: '${column.columnLabel}',
formatter: function (value, row, index) {
return formatDict("${column.dictType}", value);
}
},
#elseif($column.pageType == 7)
{
field: '${column.attrname}',
title: '${column.columnLabel}',
formatter: function (value, row, index) {
return "<img width='100' height='100' src='" + value + "'>";
}
},
#else
{
field: '${column.attrname}',
title: '${column.columnLabel}'
},
#end
#end
{
title: '操作',
field: 'id',
align: 'center',
formatter: function (value, row, index) {
var d = '<a class="btn btn-primary btn-sm ' + s_detail_h + '" href="#" mce_href="#" title="详情" onclick="detail(\''
+ row.${pk.attrname}
+ '\')"><i class="fa fa-file"></i></a> ';
var e = '<a class="btn btn-primary btn-sm ' + s_edit_h + '" href="#" mce_href="#" title="编辑" onclick="edit(\''
+ row.${pk.attrname}
+ '\')"><i class="fa fa-edit"></i></a> ';
var r = '<a class="btn btn-warning btn-sm ' + s_remove_h + '" href="#" title="删除" mce_href="#" onclick="remove(\''
+ row.${pk.attrname}
+ '\')"><i class="fa fa-remove"></i></a> ';
return d + e + r;
}
}]
});
}
function reLoad() {
$('#exampleTable').bootstrapTable('refresh');
}
function add() {
layer.open({
type: 2,
title: '增加',
maxmin: true,
shadeClose: false, // 点击遮罩关闭层
area: ['800px', '520px'],
content: prefix + '/add' // iframe的url
});
}
function detail(id) {
layer.open({
type: 2,
title: '详情',
maxmin: true,
shadeClose: false, // 点击遮罩关闭层
area: ['800px', '520px'],
content: prefix + '/detail/' + id // iframe的url
});
}
function edit(id) {
layer.open({
type: 2,
title: '编辑',
maxmin: true,
shadeClose: false, // 点击遮罩关闭层
area: ['800px', '520px'],
content: prefix + '/edit/' + id // iframe的url
});
}
function remove(id) {
layer.confirm('确定要删除选中的记录?', {
btn: ['确定', '取消']
}, function () {
$.ajax({
url: prefix + "/remove",
type: "post",
data: {
'${pk.attrname}': id
},
success: function (r) {
if (r.code == 0) {
layer.msg(r.msg);
reLoad();
} else {
layer.msg(r.msg);
}
}
});
})
}
function resetPwd(id) {
}
function batchRemove() {
var rows = $('#exampleTable').bootstrapTable('getSelections'); // 返回所有选择的行,当没有选择的记录时,返回一个空数组
if (rows.length == 0) {
layer.msg("请选择要删除的数据");
return;
}
layer.confirm("确认要删除选中的'" + rows.length + "'条数据吗?", {
btn: ['确定', '取消']
// 按钮
}, function () {
var ids = new Array();
// 遍历所有选择的行数据取每条数据对应的ID
$.each(rows, function (i, row) {
ids[i] = row['${pk.attrname}'];
});
$.ajax({
type: 'POST',
data: {
"ids": ids
},
url: prefix + '/batchRemove',
success: function (r) {
if (r.code == 0) {
layer.msg(r.msg);
reLoad();
} else {
layer.msg(r.msg);
}
}
});
}, function () {
});
}

View File

@ -0,0 +1,18 @@
-- 菜单SQL
INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`)
VALUES ('1', '${comments}', '${pathName}/${classname}', '${pathName}:${classname}:${classname}', '1', 'fa', '6');
-- 按钮父菜单ID
set @parentId = @@identity;
-- 菜单对应按钮SQL
INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`)
SELECT @parentId, '查看', null, '${pathName}:${classname}:detail', '2', null, '6';
INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`)
SELECT @parentId, '新增', null, '${pathName}:${classname}:add', '2', null, '6';
INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`)
SELECT @parentId, '修改', null, '${pathName}:${classname}:edit', '2', null, '6';
INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`)
SELECT @parentId, '删除', null, '${pathName}:${classname}:remove', '2', null, '6';
INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`)
SELECT @parentId, '批量删除', null, '${pathName}:${classname}:batchRemove', '2', null, '6';

View File

@ -0,0 +1,40 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="col-sm-12">
<div class="ibox">
<div class="ibox-body">
<div class="fixed-table-toolbar">
<div class="columns pull-left">
<button type="button" class="btn btn-danger"
onclick="batchRemove()">
<i class="fa fa-trash" aria-hidden="true"></i>删除
</button>
</div>
<div class="columns pull-right" role="group">
<button class="btn btn-success" onclick="reLoad()">
<i class="fa fa-search" aria-hidden="true"></i>查询
</button>
</div>
<div class="pull-right search col-md-2">
<input id="searchOperation" type="text" class="form-control"
placeholder="操作">
</div>
<div class="pull-right search col-md-2">
<input id="searchUsername" type="text" class="form-control"
placeholder="用户">
</div>
</div>
<table id="exampleTable" data-mobile-responsive="true">
</table>
</div>
</div>
</div>
</div>
<div th:include="include :: footer"></div>
<script type="text/javascript" src="/js/appjs/common/log/log.js"></script>
</body>
</html>

View File

@ -0,0 +1,34 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>403 页面</title>
<meta name="keywords" content="">
<meta name="description" content="">
<link rel="shortcut icon" href="favicon.ico">
<link href="/css/bootstrap.min.css?v=3.3.6" rel="stylesheet">
<link href="/css/font-awesome.css?v=4.4.0" rel="stylesheet">
<link href="/css/animate.css" rel="stylesheet">
<link href="/css/style.css?v=4.1.0" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="middle-box text-center animated fadeInDown">
<h1>403</h1>
<h3 class="font-bold">您没有访问权限!</h3>
<div class="error-desc">
抱歉,请联系管理员哦~
<form class="form-inline m-t" role="form">
<div class="form-group">
<input type="email" class="form-control"
placeholder="请输入您需要查找的内容 ">
</div>
<button type="submit" class="btn btn-primary">搜索</button>
</form>
</div>
</div>
<!-- 全局js -->
<script src="/js/jquery.min.js?v=2.1.4"></script>
<script src="/js/bootstrap.min.js?v=3.3.6"></script>
</body>
</html>

View File

@ -0,0 +1,41 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>404 页面</title>
<meta name="keywords" content="">
<meta name="description" content="">
<link rel="shortcut icon" href="favicon.ico"> <link href="/css/bootstrap.min.css?v=3.3.6" rel="stylesheet">
<link href="/css/font-awesome.css?v=4.4.0" rel="stylesheet">
<link href="/css/animate.css" rel="stylesheet">
<link href="/css/style.css?v=4.1.0" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="middle-box text-center animated fadeInDown">
<h1>404</h1>
<h3 class="font-bold">页面未找到!</h3>
<div class="error-desc">
抱歉,页面好像去火星了~
<form class="form-inline m-t" role="form">
<div class="form-group">
<input type="email" class="form-control" placeholder="请输入您需要查找的内容 ">
</div>
<button type="submit" class="btn btn-primary">搜索</button>
</form>
</div>
</div>
<!-- 全局js -->
<script src="/js/jquery.min.js?v=2.1.4"></script>
<script src="/js/bootstrap.min.js?v=3.3.6"></script>
</body>
</html>

View File

@ -0,0 +1,43 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>500错误</title>
<meta name="keywords" content="">
<meta name="description" content="">
<link rel="shortcut icon" href="favicon.ico"> <link href="/css/bootstrap.min.css?v=3.3.6" rel="stylesheet">
<link href="/css/font-awesome.css?v=4.4.0" rel="stylesheet">
<link href="/css/animate.css" rel="stylesheet">
<link href="/css/style.css?v=4.1.0" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="middle-box text-center animated fadeInDown">
<h1>500</h1>
<h3 class="font-bold">服务器内部错误</h3>
<div class="error-desc">
服务器好像出错了...
<br/>您可以返回主页看看
<br/><a href="/" class="btn btn-primary m-t">主页</a>
</div>
</div>
<!-- 全局js -->
<script src="/js/jquery.min.js?v=2.1.4"></script>
<script src="/js/bootstrap.min.js?v=3.3.6"></script>
</body>
</html>

View File

@ -0,0 +1,30 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>500错误</title>
<meta name="keywords" content="">
<meta name="description" content="">
<link rel="shortcut icon" href="favicon.ico"> <link href="/css/bootstrap.min.css?v=3.3.6" rel="stylesheet">
<link href="/css/font-awesome.css?v=4.4.0" rel="stylesheet">
<link href="/css/animate.css" rel="stylesheet">
<link href="/css/style.css?v=4.1.0" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="middle-box text-center animated fadeInDown">
<h1>500</h1>
<h3 class="font-bold">服务器内部错误</h3>
<div class="error-desc">
服务器好像出错了...<br/>
您可以返回主页看看<br/>
<div th:text="${exception}"></div>
<div th:text="${url}"></div>
<a href="/" class="btn btn-primary m-t">主页</a>
</div>
</div>
<!-- 全局js -->
<script src="/js/jquery.min.js?v=2.1.4"></script>
<script src="/js/bootstrap.min.js?v=3.3.6"></script>
</body>
</html>

View File

@ -0,0 +1,50 @@
<head th:fragment="header">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
<meta name="keywords" content="">
<meta name="description" content="">
<link rel="shortcut icon" href="favicon.ico">
<link href="css/bootstrap.min.css?v=3.3.6"
th:href="@{/css/bootstrap.min.css?v=3.3.6}" rel="stylesheet">
<link href="/css/font-awesome.css?v=4.4.0"
th:href="@{/css/font-awesome.css?v=4.4.0}" rel="stylesheet">
<link href="/css/plugins/bootstrap-table/bootstrap-table.min.css"
th:href="@{/css/plugins/bootstrap-table/bootstrap-table.min.css}"
rel="stylesheet">
<link href="/css/plugins/jsTree/style.min.css" rel="stylesheet">
<link href="/css/plugins/jqTreeGrid/jquery.treegrid.css"
rel="stylesheet">
<link href="css/animate.css" th:href="@{/css/animate.css}"
rel="stylesheet">
<link href="/css/plugins/chosen/chosen.css" rel="stylesheet">
<link href="/css/style.css?v=4.1.0" th:href="@{/css/style.css?v=4.1.0}"
rel="stylesheet">
<link rel="stylesheet" href="/js/plugins/layer/laydate/skins/default/laydate.css" />
<link href="/css/layui.css" rel="stylesheet">
</head>
<div th:fragment="footer">
<script src="/js/jquery.min.js?v=2.1.4"></script>
<script src="/js/bootstrap.min.js?v=3.3.6"></script>
<script src="/js/plugins/bootstrap-table/bootstrap-table.js"></script>
<script src="/js/plugins/bootstrap-table/bootstrap-table-mobile.min.js"></script>
<script
src="/js/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="/js/plugins/validate/jquery.validate.min.js"></script>
<script src="/js/plugins/validate/messages_zh.min.js"></script>
<script src="/js/plugins/jsTree/jstree.min.js"></script>
<script src="/js/plugins/jqTreeGrid/jquery.treegrid.min.js"></script>
<script src="/js/plugins/jqTreeGrid/jquery.treegrid.extension.js"></script>
<script src="/js/plugins/jqTreeGrid/jquery.treegrid.bootstrap3.js"></script>
<script src="/js/plugins/chosen/chosen.jquery.js"></script>
<script src="/js/plugins/layer/layer.js"></script>
<script src="/js/common.js"/>
<!--summernote-->
<script src="/js/plugins/summernote/summernote.js"></script>
<!--<script src="/js/plugins/summernote/summernote-zh-CN.min.js"></script>-->
<script type="text/javascript" src="/js/plugins/layer/laydate/laydate.js" ></script>
<script src="/js/layui.js"></script>
<script type="text/javascript" src="/js/dict-util.js"></script>
</div>

View File

@ -0,0 +1,302 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="renderer" content="webkit">
<title>小说精品屋通用后台权限管理系统</title>
<meta name="keywords" content="小说精品屋后台管理系统">
<meta name="description" content="小说精品屋后台管理系统">
<!--[if lt IE 9]>
<meta http-equiv="refresh" content="0;ie.html"/>
<![endif]-->
<link rel="shortcut icon" href="favicon.ico">
<link href="/css/bootstrap.min.css?v=3.3.6" rel="stylesheet">
<link href="/css/font-awesome.min.css?v=4.4.0" rel="stylesheet">
<link href="/css/plugins/toastr/toastr.min.css" rel="stylesheet">
<link href="/css/animate.css" rel="stylesheet">
<link href="/css/style.css?v=4.1.0" rel="stylesheet">
</head>
<body class="fixed-sidebar full-height-layout gray-bg"
style="overflow: hidden">
<div id="wrapper">
<!--左侧导航开始-->
<nav class="navbar-default navbar-static-side" role="navigation">
<div class="nav-close">
<i class="fa fa-times-circle"></i>
</div>
<div class="sidebar-collapse">
<ul class="nav" id="side-menu">
<li class="nav-header">
<div>
<span><img alt="image" class="img-circle" height="60" width="60" th:src="${picUrl}"/></span>
<h3 th:text="${name}" class="" style="color: #ffffff">
小说精品屋后台管理系统
</h3>
</div>
</li>
<li th:each="menu : ${menus}"><a href="#"> <i
class="fa fa fa-bar-chart-o" th:class="${menu.attributes.icon}"></i>
<span class="nav-label" th:text="${menu.text}">基础信息</span> <span
class="fa arrow"></span>
</a>
<ul class="nav nav-second-level">
<li th:each="cmenu : ${menu.children}"><a class="J_menuItem" href="graph_echarts.html"
th:text="${cmenu.text}"
th:href="${cmenu.attributes.url}">系统管理</a></li>
</ul>
</li>
</ul>
</div>
</nav>
<!--左侧导航结束-->
<!--右侧部分开始-->
<div id="page-wrapper" class="gray-bg dashbard-1">
<div class="row border-bottom">
<nav class="navbar navbar-static-top" role="navigation"
style="margin-bottom: 0">
<div class="navbar-header">
<a class="navbar-minimalize minimalize-styl-2 btn btn-default "
href="#" title="收起菜单"><i class="fa fa-bars"></i> </a>
<!--<form role="search" class="navbar-form-custom"
method="post" action="">
<div class="form-group">
<input type="text" placeholder="请输入您需要查找的内容 "
class="form-control" name="top-search" id="top-search">
</div>
</form>-->
</div>
<ul class="nav navbar-top-links navbar-right">
<!--<li class="dropdown"><a class="dropdown-toggle count-info"
data-toggle="dropdown" href="#"> <i class="fa fa-envelope"></i>
<span class="label label-warning">{{total}}</span>通知
</a>
<ul class="dropdown-menu dropdown-messages">
<li v-for="row in rows" class="m-t-xs">
<div class="dropdown-messages-box">
<a class="pull-left"> <i
class="fa fa-server"></i>
</a>
<div class="media-body">
<small class="pull-right">{{row.before}}</small>
<strong>{{row.sender}}</strong>
{{row.title}} <br>
<small class="text-muted">{{row.updateDate}}</small>
</div>
</div>
<div class="divider"></div>
</li>
<li>
<div class="text-center link-block">
<a class="J_menuItem" href="/oa/notify/selfNotify"> <i
class="fa fa-envelope"></i> <strong> 查看所有消息</strong>
</a>
</div>
</li>
</ul>
</li>-->
<li class="hidden-xs"><a @click="personal" href="#" ><i class="fa fa-id-card"></i> 个人</a></li>
<!-- <li class="dropdown hidden-xs"><a
class="right-sidebar-toggle" aria-expanded="false"> <i
class="fa fa-tasks"></i> 主题
</a></li>-->
<li class="hidden-xs"><a href="/logout"
> <i
class="fa fa-sign-out"></i> 退出
</a></li>
</ul>
</nav>
</div>
<div class="row content-tabs">
<button class="roll-nav roll-left J_tabLeft">
<i class="fa fa-backward"></i>
</button>
<nav class="page-tabs J_menuTabs">
<div class="page-tabs-content">
<a href="javascript:;" class="active J_menuTab"
data-id="index_v1.html">首页</a>
</div>
</nav>
<button style="right: 80px" class="roll-nav roll-right J_tabRight">
<i class="fa fa-forward"></i>
</button>
<div style="right: 0px" class="btn-group roll-nav roll-right">
<button class="dropdown J_tabClose" data-toggle="dropdown">
关闭操作<span class="caret"></span>
</button>
<ul role="menu" class="dropdown-menu dropdown-menu-right">
<li class="J_tabShowActive"><a>定位当前选项卡</a></li>
<li class="divider"></li>
<li class="J_tabCloseAll"><a>关闭全部选项卡</a></li>
<li class="J_tabCloseOther"><a>关闭其他选项卡</a></li>
</ul>
</div>
</div>
<div class="row J_mainContent" id="content-main">
<iframe class="J_iframe" name="iframe0" width="100%" height="100%"
src="" th:src="@{/main}" frameborder="0" data-id="index_v1.html"
seamless></iframe>
</div>
<div class="footer" style="text-align: center">
小说精品屋后台管理系统
</div>
</div>
<!--右侧部分结束-->
<!--右侧边栏开始-->
<div id="right-sidebar">
<div class="sidebar-container">
<ul class="nav nav-tabs navs-3">
<li class="active"><a data-toggle="tab" href="#tab-1"> <i
class="fa fa-gear"></i> 主题
</a></li>
<li class=""><a data-toggle="tab" href="#tab-2"> 通知 </a></li>
<li><a data-toggle="tab" href="#tab-3"> 项目进度 </a></li>
</ul>
<div class="tab-content">
<div id="tab-1" class="tab-pane active">
<div class="sidebar-title">
<h3>
<i class="fa fa-comments-o"></i> 主题设置
</h3>
<small><i class="fa fa-tim"></i>
你可以从这里选择和预览主题的布局和样式,这些设置会被保存在本地,下次打开的时候会直接应用这些设置。
</small>
</div>
<div class="skin-setttings">
<div class="title">主题设置</div>
<div class="setings-item">
<span>收起左侧菜单</span>
<div class="switch">
<div class="onoffswitch">
<input type="checkbox" name="collapsemenu"
class="onoffswitch-checkbox" id="collapsemenu"> <label
class="onoffswitch-label" for="collapsemenu"> <span
class="onoffswitch-inner"></span> <span
class="onoffswitch-switch"></span>
</label>
</div>
</div>
</div>
<div class="setings-item">
<span>固定顶部</span>
<div class="switch">
<div class="onoffswitch">
<input type="checkbox" name="fixednavbar"
class="onoffswitch-checkbox" id="fixednavbar"> <label
class="onoffswitch-label" for="fixednavbar"> <span
class="onoffswitch-inner"></span> <span
class="onoffswitch-switch"></span>
</label>
</div>
</div>
</div>
<div class="setings-item">
<span> 固定宽度 </span>
<div class="switch">
<div class="onoffswitch">
<input type="checkbox" name="boxedlayout"
class="onoffswitch-checkbox" id="boxedlayout"> <label
class="onoffswitch-label" for="boxedlayout"> <span
class="onoffswitch-inner"></span> <span
class="onoffswitch-switch"></span>
</label>
</div>
</div>
</div>
<div class="title">皮肤选择</div>
<div class="setings-item default-skin nb">
<span class="skin-name "> <a href="#" class="s-skin-0">
默认皮肤 </a>
</span>
</div>
<div class="setings-item blue-skin nb">
<span class="skin-name "> <a href="#" class="s-skin-1">
蓝色主题 </a>
</span>
</div>
<div class="setings-item yellow-skin nb">
<span class="skin-name "> <a href="#" class="s-skin-3">
黄色/紫色主题 </a>
</span>
</div>
</div>
</div>
<div id="tab-2" class="tab-pane">
<div class="sidebar-title">
<h3>
<i class="fa fa-comments-o"></i> 最新通知
</h3>
<small><i class="fa fa-tim"></i> 您当前有10条未读信息</small>
</div>
</div>
<div id="tab-3" class="tab-pane">
<div class="sidebar-title">
<h3>
<i class="fa fa-cube"></i> 最新任务
</h3>
<small><i class="fa fa-tim"></i> 您当前有14个任务10个已完成</small>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 全局js -->
<script src="/js/jquery.min.js?v=2.1.4"></script>
<script src="/js/bootstrap.min.js?v=3.3.6"></script>
<script src="/js/plugins/metisMenu/jquery.metisMenu.js"></script>
<script src="/js/plugins/slimscroll/jquery.slimscroll.min.js"></script>
<script src="/js/plugins/layer/layer.min.js"></script>
<!-- 自定义js -->
<script src="/js/app.js?v=4.1.0"></script>
<script type="text/javascript" src="/js/contabs.js"></script>
<!-- 第三方插件 -->
<script src="/js/plugins/pace/pace.min.js"></script>
<!-- vue -->
<script type="text/javascript"
src="/js/vue.min.js">
</script>
<!-- Toastr script -->
<script src="/js/plugins/toastr/toastr.min.js"></script>
<script type="text/javascript">
var dictList = [];//全局页面操作对象,请将常用数据挂载在这个对象
$.ajax({
url : '/common/dict/list',
data: {'limit':1000,'offset':0},
success : function(data) {
dictList = data.rows;
}
});
var wrapper = new Vue({
el: '#wrapper',
data: {
total: '',
rows: '',
},
methods: {
personal: function () {
layer.open({
type: 2,
title: '个人设置',
maxmin: true,
shadeClose: false,
area: ['800px', '600px'],
content: '/sys/user/personal'
});
}
},
created: function () {
}
})
</script>
</body>
</html>

View File

@ -0,0 +1,129 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>后台管理-登陆</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="Access-Control-Allow-Origin" content="*">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
<link rel="stylesheet" href="/layuimini/lib/layui-v2.5.4/css/layui.css" media="all">
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<style>
html, body {width: 100%;height: 100%;overflow: hidden}
body {background: #009688;}
body:after {content:'';background-repeat:no-repeat;background-size:cover;-webkit-filter:blur(3px);-moz-filter:blur(3px);-o-filter:blur(3px);-ms-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;}
.layui-container {width: 100%;height: 100%;overflow: hidden}
.admin-login-background {width:360px;height:300px;position:absolute;left:50%;top:40%;margin-left:-180px;margin-top:-100px;}
.logo-title {text-align:center;letter-spacing:2px;padding:14px 0;}
.logo-title h1 {color:#009688;font-size:25px;font-weight:bold;}
.login-form {background-color:#fff;border:1px solid #fff;border-radius:3px;padding:14px 20px;box-shadow:0 0 8px #eeeeee;}
.login-form .layui-form-item {position:relative;}
.login-form .layui-form-item label {position:absolute;left:1px;top:1px;width:38px;line-height:36px;text-align:center;color:#d2d2d2;}
.login-form .layui-form-item input {padding-left:36px;}
.captcha {width:60%;display:inline-block;}
.captcha-img {display:inline-block;width:34%;float:right;}
.captcha-img img {height:34px;border:1px solid #e6e6e6;height:36px;width:100%;}
</style>
</head>
<body>
<div class="layui-container">
<div class="admin-login-background">
<div class="layui-form login-form">
<form id="signupForm" class="layui-form" action="">
<div class="layui-form-item logo-title">
<h1>小说精品屋后台登录</h1>
</div>
<div class="layui-form-item">
<label class="layui-icon layui-icon-username" for="username"></label>
<input type="text" name="username" placeholder="用户名或者邮箱" autocomplete="off" class="layui-input" >
</div>
<div class="layui-form-item">
<label class="layui-icon layui-icon-password" for="password"></label>
<input type="password" name="password" placeholder="密码" autocomplete="off" class="layui-input" >
</div>
<div class="layui-form-item">
<label class="layui-icon layui-icon-vercode" for="captcha"></label>
<input type="text" name="verify" id="verify" placeholder="图形验证码" autocomplete="off" class="layui-input verification captcha">
<div class="captcha-img">
<a href="javascript:void(0);" rel="external nofollow" title="点击更换验证码">
<img id="imgVerify" src="" alt="更换验证码" onclick="getVerify(this);">
</a>
</div>
</div>
<!-- <div class="layui-form-item">
<input type="checkbox" name="rememberMe" value="true" lay-skin="primary" title="记住密码">
</div>-->
<div class="layui-form-item">
<button id="login" class="layui-btn layui-btn-fluid" lay-submit="" lay-filter="login">登 录</button>
</div>
</form>
</div>
</div>
</div>
<script src="/layuimini/lib/jquery-3.4.1/jquery-3.4.1.min.js" charset="utf-8"></script>
<script src="/layuimini/lib/layui-v2.5.4/layui.js" charset="utf-8"></script>
<script src="/layuimini/lib/jq-module/jquery.particleground.min.js" charset="utf-8"></script>
<script type="text/javascript">
$("#imgVerify").click()
layui.use(['form'], function () {
var form = layui.form,
layer = layui.layer;
// 登录过期的时候跳出ifram框架
if (top.location != self.location) top.location = self.location;
// 粒子线条背景
$(document).ready(function(){
$('.layui-container').particleground({
dotColor:'#5cbdaa',
lineColor:'#5cbdaa'
});
});
// 进行登录操作
form.on('submit(login)', function (data) {
data = data.field;
if (data.username == '') {
layer.msg('用户名不能为空');
return false;
}
if (data.password == '') {
layer.msg('密码不能为空');
return false;
}
if (data.verify == '') {
layer.msg('验证码不能为空');
return false;
}
$.ajax({
type: "POST",
url: "/login",
data: $('#signupForm').serialize(),
success: function (r) {
if (r.code == 0) {
parent.location.href = '/index';
} else {
layer.msg(r.msg);
}
},
});
return false;
});
});
//获取验证码
function getVerify(obj) {
obj.src = "/getVerify?" + Math.random();
console.log(obj)
}
</script>
</body>
</html>

View File

@ -0,0 +1,454 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>首页</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="/layuimini/lib/layui-v2.5.4/css/layui.css" media="all">
<link rel="stylesheet" href="/layuimini/lib/font-awesome-4.7.0/css/font-awesome.min.css" media="all">
<link rel="stylesheet" href="/layuimini/css/public.css" media="all">
<style>
.layui-card {border:1px solid #f2f2f2;border-radius:5px;}
.icon {margin-right:10px;color:#1aa094;}
.icon-cray {color:#ffb800!important;}
.icon-blue {color:#1e9fff!important;}
.icon-tip {color:#ff5722!important;}
.layuimini-qiuck-module {text-align:center;margin-top: 10px}
.layuimini-qiuck-module a i {display:inline-block;width:100%;height:60px;line-height:60px;text-align:center;border-radius:2px;font-size:30px;background-color:#F8F8F8;color:#333;transition:all .3s;-webkit-transition:all .3s;}
.layuimini-qiuck-module a cite {position:relative;top:2px;display:block;color:#666;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:14px;}
.welcome-module {width:100%;height:210px;}
.panel {background-color:#fff;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}
.panel-body {padding:10px}
.panel-title {margin-top:0;margin-bottom:0;font-size:12px;color:inherit}
.label {display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;margin-top: .3em;}
.layui-red {color:red}
.main_btn > p {height:40px;}
.layui-bg-number {background-color:#F8F8F8;}
.layuimini-notice:hover {background:#f6f6f6;}
.layuimini-notice {padding:7px 16px;clear:both;font-size:12px !important;cursor:pointer;position:relative;transition:background 0.2s ease-in-out;}
.layuimini-notice-title,.layuimini-notice-label {
padding-right: 70px !important;text-overflow:ellipsis!important;overflow:hidden!important;white-space:nowrap!important;}
.layuimini-notice-title {line-height:28px;font-size:14px;}
.layuimini-notice-extra {position:absolute;top:50%;margin-top:-8px;right:16px;display:inline-block;height:16px;color:#999;}
</style>
</head>
<body>
<div class="layuimini-container">
<div class="layuimini-main">
<div class="layui-row layui-col-space15">
<div class="layui-col-md8">
<div class="layui-row layui-col-space15">
<div class="layui-col-md6">
<div class="layui-card">
<div class="layui-card-header"><i class="fa fa-warning icon"></i>数据统计</div>
<div class="layui-card-body">
<div class="welcome-module">
<div class="layui-row layui-col-space10">
<div class="layui-col-xs6">
<div class="panel layui-bg-number">
<div class="panel-body">
<div class="panel-title">
<span class="label pull-right layui-bg-blue">实时</span>
<h5>用户统计</h5>
</div>
<div class="panel-content">
<h1 class="no-margins">1234</h1>
<small>当前分类总记录数</small>
</div>
</div>
</div>
</div>
<div class="layui-col-xs6">
<div class="panel layui-bg-number">
<div class="panel-body">
<div class="panel-title">
<span class="label pull-right layui-bg-cyan">实时</span>
<h5>商品统计</h5>
</div>
<div class="panel-content">
<h1 class="no-margins">1234</h1>
<small>当前分类总记录数</small>
</div>
</div>
</div>
</div>
<div class="layui-col-xs6">
<div class="panel layui-bg-number">
<div class="panel-body">
<div class="panel-title">
<span class="label pull-right layui-bg-orange">实时</span>
<h5>浏览统计</h5>
</div>
<div class="panel-content">
<h1 class="no-margins">1234</h1>
<small>当前分类总记录数</small>
</div>
</div>
</div>
</div>
<div class="layui-col-xs6">
<div class="panel layui-bg-number">
<div class="panel-body">
<div class="panel-title">
<span class="label pull-right layui-bg-green">实时</span>
<h5>订单统计</h5>
</div>
<div class="panel-content">
<h1 class="no-margins">1234</h1>
<small>当前分类总记录数</small>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="layui-col-md6">
<div class="layui-card">
<div class="layui-card-header"><i class="fa fa-credit-card icon icon-blue"></i>快捷入口</div>
<div class="layui-card-body">
<div class="welcome-module">
<div class="layui-row layui-col-space10 layuimini-qiuck">
<div class="layui-col-xs3 layuimini-qiuck-module">
<a href="javascript:;" data-iframe-tab="page/menu.html" data-title="菜单管理" data-icon="fa fa-window-maximize">
<i class="fa fa-window-maximize"></i>
<cite>菜单管理</cite>
</a>
</div>
<div class="layui-col-xs3 layuimini-qiuck-module">
<a href="javascript:;" data-iframe-tab="page/setting.html" data-title="系统设置" data-icon="fa fa-gears">
<i class="fa fa-gears"></i>
<cite>系统设置</cite>
</a>
</div>
<div class="layui-col-xs3 layuimini-qiuck-module">
<a href="javascript:;" data-iframe-tab="page/table.html" data-title="表格示例" data-icon="fa fa-file-text">
<i class="fa fa-file-text"></i>
<cite>表格示例</cite>
</a>
</div>
<div class="layui-col-xs3 layuimini-qiuck-module">
<a href="javascript:;" data-iframe-tab="page/icon.html" data-title="图标列表" data-icon="fa fa-dot-circle-o">
<i class="fa fa-dot-circle-o"></i>
<cite>图标列表</cite>
</a>
</div>
<div class="layui-col-xs3 layuimini-qiuck-module">
<a href="javascript:;" data-iframe-tab="page/form.html" data-title="表单示例" data-icon="fa fa-calendar">
<i class="fa fa-calendar"></i>
<cite>表单示例</cite>
</a>
</div>
<div class="layui-col-xs3 layuimini-qiuck-module">
<a href="javascript:;" data-iframe-tab="page/404.html" data-title="404页面" data-icon="fa fa-hourglass-end">
<i class="fa fa-hourglass-end"></i>
<cite>404页面</cite>
</a>
</div>
<div class="layui-col-xs3 layuimini-qiuck-module">
<a href="javascript:;" data-iframe-tab="page/button.html" data-title="按钮示例" data-icon="fa fa-snowflake-o">
<i class="fa fa-snowflake-o"></i>
<cite>按钮示例</cite>
</a>
</div>
<div class="layui-col-xs3 layuimini-qiuck-module">
<a href="javascript:;" data-iframe-tab="page/layer.html" data-title="弹出层" data-icon="fa fa-shield">
<i class="fa fa-shield"></i>
<cite>弹出层</cite>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-header"><i class="fa fa-line-chart icon"></i>报表统计</div>
<div class="layui-card-body">
<div id="echarts-records" style="width: 100%;min-height:500px"></div>
</div>
</div>
</div>
</div>
</div>
<div class="layui-col-md4">
<div class="layui-card">
<div class="layui-card-header"><i class="fa fa-bullhorn icon icon-tip"></i>系统公告</div>
<div class="layui-card-body layui-text">
<div class="layuimini-notice">
<div class="layuimini-notice-title">修改选项卡样式</div>
<div class="layuimini-notice-extra">2019-07-11 23:06</div>
<div class="layuimini-notice-content layui-hide">
界面足够简洁清爽。<br>
一个接口几行代码而已直接初始化整个框架,无需复杂操作。<br>
支持多tab可以打开多窗口。<br>
支持无限级菜单和对font-awesome图标库的完美支持。<br>
失效以及报错菜单无法直接打开,并给出弹出层提示完美的线上用户体验。<br>
url地址hash定位可以清楚看到当前tab的地址信息。<br>
刷新页面会保留当前的窗口,并且会定位当前窗口对应左侧菜单栏。<br>
移动端的友好支持。<br>
</div>
</div>
<div class="layuimini-notice">
<div class="layuimini-notice-title">新增系统404模板</div>
<div class="layuimini-notice-extra">2019-07-11 12:57</div>
<div class="layuimini-notice-content layui-hide">
界面足够简洁清爽。<br>
一个接口几行代码而已直接初始化整个框架,无需复杂操作。<br>
支持多tab可以打开多窗口。<br>
支持无限级菜单和对font-awesome图标库的完美支持。<br>
失效以及报错菜单无法直接打开,并给出弹出层提示完美的线上用户体验。<br>
url地址hash定位可以清楚看到当前tab的地址信息。<br>
刷新页面会保留当前的窗口,并且会定位当前窗口对应左侧菜单栏。<br>
移动端的友好支持。<br>
</div>
</div>
<div class="layuimini-notice">
<div class="layuimini-notice-title">新增treetable插件和菜单管理样式</div>
<div class="layuimini-notice-extra">2019-07-05 14:28</div>
<div class="layuimini-notice-content layui-hide">
界面足够简洁清爽。<br>
一个接口几行代码而已直接初始化整个框架,无需复杂操作。<br>
支持多tab可以打开多窗口。<br>
支持无限级菜单和对font-awesome图标库的完美支持。<br>
失效以及报错菜单无法直接打开,并给出弹出层提示完美的线上用户体验。<br>
url地址hash定位可以清楚看到当前tab的地址信息。<br>
刷新页面会保留当前的窗口,并且会定位当前窗口对应左侧菜单栏。<br>
移动端的友好支持。<br>
</div>
</div>
<div class="layuimini-notice">
<div class="layuimini-notice-title">修改logo缩放问题</div>
<div class="layuimini-notice-extra">2019-07-04 11:02</div>
<div class="layuimini-notice-content layui-hide">
界面足够简洁清爽。<br>
一个接口几行代码而已直接初始化整个框架,无需复杂操作。<br>
支持多tab可以打开多窗口。<br>
支持无限级菜单和对font-awesome图标库的完美支持。<br>
失效以及报错菜单无法直接打开,并给出弹出层提示完美的线上用户体验。<br>
url地址hash定位可以清楚看到当前tab的地址信息。<br>
刷新页面会保留当前的窗口,并且会定位当前窗口对应左侧菜单栏。<br>
移动端的友好支持。<br>
</div>
</div>
<div class="layuimini-notice">
<div class="layuimini-notice-title">修复左侧菜单缩放tab无法移动</div>
<div class="layuimini-notice-extra">2019-06-17 11:55</div>
<div class="layuimini-notice-content layui-hide">
界面足够简洁清爽。<br>
一个接口几行代码而已直接初始化整个框架,无需复杂操作。<br>
支持多tab可以打开多窗口。<br>
支持无限级菜单和对font-awesome图标库的完美支持。<br>
失效以及报错菜单无法直接打开,并给出弹出层提示完美的线上用户体验。<br>
url地址hash定位可以清楚看到当前tab的地址信息。<br>
刷新页面会保留当前的窗口,并且会定位当前窗口对应左侧菜单栏。<br>
移动端的友好支持。<br>
</div>
</div>
<div class="layuimini-notice">
<div class="layuimini-notice-title">修复多模块菜单栏展开有问题</div>
<div class="layuimini-notice-extra">2019-06-13 14:53</div>
<div class="layuimini-notice-content layui-hide">
界面足够简洁清爽。<br>
一个接口几行代码而已直接初始化整个框架,无需复杂操作。<br>
支持多tab可以打开多窗口。<br>
支持无限级菜单和对font-awesome图标库的完美支持。<br>
失效以及报错菜单无法直接打开,并给出弹出层提示完美的线上用户体验。<br>
url地址hash定位可以清楚看到当前tab的地址信息。<br>
刷新页面会保留当前的窗口,并且会定位当前窗口对应左侧菜单栏。<br>
移动端的友好支持。<br>
</div>
</div>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header"><i class="fa fa-fire icon"></i>版本信息</div>
<div class="layui-card-body layui-text">
<table class="layui-table">
<colgroup>
<col width="100">
<col>
</colgroup>
<tbody>
<tr>
<td>框架名称</td>
<td>
小说精品屋
</td>
</tr>
<tr>
<td>开发语言</td>
<td>Java</td>
</tr>
<tr>
<td>主要特色</td>
<td>零门槛 / 响应式 / 清爽 / 极简</td>
</tr>
<tr>
<td>演示地址</td>
<td>
<a href="http://www.java2nb.com/" target="_blank">点击查看</a><br>
</td>
</tr>
<tr>
<td>下载地址</td>
<td>
<a href="https://gitee.com/xiongxyang/fiction_house" target="_blank">Gitee</a> /
<a href="https://github.com/201206030/fiction_house" target="_blank">Github</a>
</td>
</tr>
<tr>
<td>Gitee</td>
<td style="padding-bottom: 0;">
<div class="layui-btn-container">
<a href='https://gitee.com/xiongxyang/fiction_house/stargazers'><img src='https://gitee.com/xiongxyang/fiction_house/badge/star.svg?theme=dark' alt='star'></img></a>
<a href='https://gitee.com/xiongxyang/fiction_house/members'><img src='https://gitee.com/xiongxyang/fiction_house/badge/fork.svg?theme=dark' alt='fork'></img></a>
</div>
</td>
</tr>
<tr>
<td>Github</td>
<td style="padding-bottom: 0;">
<div class="layui-btn-container">
<iframe src="https://ghbtns.com/github-btn.html?user=201206030&repo=fiction_house&type=star&count=true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
<iframe src="https://ghbtns.com/github-btn.html?user=201206030&repo=fiction_house&type=fork&count=true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header"><i class="fa fa-paper-plane-o icon"></i>作者心语</div>
<div class="layui-card-body layui-text layadmin-text">
<p>本系统使用springboot+mybatis+redis+thymeleaf+mysql等技术进行实现。</p>
<p>技术交流QQ群345291517加群请备注来源如gitee、github、官网等</p>
<p>喜欢此系统的可以给我的GitHub和Gitee加个Star支持一下</p>
<p class="layui-red">备注:此后台框架永久开源,但请勿进行出售或者上传到任何素材网站,否则将追究相应的责任。</p>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="/layuimini/lib/layui-v2.5.4/layui.js" charset="utf-8"></script>
<script src="/layuimini/js/lay-config.js?v=1.0.4" charset="utf-8"></script>
<script>
layui.use(['layer', 'layuimini','echarts'], function () {
var $ = layui.jquery,
layer = layui.layer,
layuimini = layui.layuimini,
echarts = layui.echarts;
/**
* 查看公告信息
**/
$('body').on('click', '.layuimini-notice', function () {
var title = $(this).children('.layuimini-notice-title').text(),
noticeTime = $(this).children('.layuimini-notice-extra').text(),
content = $(this).children('.layuimini-notice-content').html();
var html = '<div style="padding:15px 20px; text-align:justify; line-height: 22px;border-bottom:1px solid #e2e2e2;background-color: #2f4056;color: #ffffff">\n' +
'<div style="text-align: center;margin-bottom: 20px;font-weight: bold;border-bottom:1px solid #718fb5;padding-bottom: 5px"><h4 class="text-danger">' + title + '</h4></div>\n' +
'<div style="font-size: 12px">' + content + '</div>\n' +
'</div>\n';
parent.layer.open({
type: 1,
title: '系统公告'+'<span style="float: right;right: 1px;font-size: 12px;color: #b1b3b9;margin-top: 1px">'+noticeTime+'</span>',
area: '300px;',
shade: 0.8,
id: 'layuimini-notice',
btn: ['查看', '取消'],
btnAlign: 'c',
moveType: 1,
content:html,
success: function (layero) {
var btn = layero.find('.layui-layer-btn');
btn.find('.layui-layer-btn0').attr({
href: 'https://gitee.com/zhongshaofa/layuimini',
target: '_blank'
});
}
});
});
/**
* 报表功能
*/
var echartsRecords = echarts.init(document.getElementById('echarts-records'), 'walden');
var optionRecords = {
tooltip: {
trigger: 'axis'
},
legend: {
data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: ['周一','周二','周三','周四','周五','周六','周日']
},
yAxis: {
type: 'value'
},
series: [
{
name:'邮件营销',
type:'line',
data:[120, 132, 101, 134, 90, 230, 210]
},
{
name:'联盟广告',
type:'line',
data:[220, 182, 191, 234, 290, 330, 310]
},
{
name:'视频广告',
type:'line',
data:[150, 232, 201, 154, 190, 330, 410]
},
{
name:'直接访问',
type:'line',
data:[320, 332, 301, 334, 390, 330, 320]
},
{
name:'搜索引擎',
type:'line',
data:[820, 932, 901, 934, 1290, 1330, 1320]
}
]
};
echartsRecords.setOption(optionRecords);
// echarts 窗口缩放自适应
window.onresize = function(){
echartsRecords.resize();
}
});
</script>
</body>
</html>

View File

@ -0,0 +1,101 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<div class="form-group">
<label class="col-sm-3 control-label">权限名称:</label>
<div class="col-sm-8">
<input id="name" name="name"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">数据表名称:</label>
<div class="col-sm-8">
<input id="tableName" name="tableName"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">所属模块:</label>
<div class="col-sm-8">
<input id="moduleName" name="moduleName"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">用户权限控制属性名:</label>
<div class="col-sm-8">
<input id="crlAttrName" name="crlAttrName"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">数据表权限控制列名:</label>
<div class="col-sm-8">
<input id="crlColumnName" name="crlColumnName"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">权限code</label>
<div class="col-sm-8">
<input id="permCode" name="permCode"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">排序:</label>
<div class="col-sm-8">
<input id="orderNum" name="orderNum"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<div class="col-sm-8">
</div>
</div>
<div class="form-group">
<div class="col-sm-8">
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="/wangEditor/release/wangEditor.js"></script>
<script type="text/javascript" src="/js/appjs/system/dataPerm/add.js">
</script>
</body>
</html>

View File

@ -0,0 +1,68 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="col-sm-12">
<div class="ibox">
<div class="ibox-body">
<div class="fixed-table-toolbar">
<div class="columns pull-left">
<button shiro:hasPermission="system:dataPerm:add" type="button"
class="btn btn-primary" onclick="add()">
<i class="fa fa-plus" aria-hidden="true"></i>添加
</button>
<button shiro:hasPermission="system:dataPerm:batchRemove" type="button"
class="btn btn-danger"
onclick="batchRemove()">
<i class="fa fa-trash" aria-hidden="true"></i>删除
</button>
</div>
<div class="columns pull-right">
<button class="btn btn-success" onclick="reLoad()">查询</button>
</div>
<form id="searchForm">
<div class="columns pull-right col-md-2">
<select id="moduleName" name="moduleName" data-placeholder="选择模块" class="form-control chosen-select"
tabindex="2" style="width: 100%">
<option value="">选择模块</option>
</select>
</div>
</form>
</div>
<table id="exampleTable" data-mobile-responsive="true">
</table>
</div>
</div>
</div>
</div>
<!--shiro控制bootstraptable行内按钮看见性 -->
<div>
<script type="text/javascript">
var s_detail_h = 'hidden';
var s_edit_h = 'hidden';
var s_remove_h = 'hidden';
</script>
</div>
<div shiro:hasPermission="test:order:detail">
<script type="text/javascript">
s_detail_h = '';
</script>
</div>
<div shiro:hasPermission="system:dataPerm:edit">
<script type="text/javascript">
s_edit_h = '';
</script>
</div>
<div shiro:hasPermission="system:dataPerm:remove">
<script type="text/javascript">
var s_remove_h = '';
</script>
</div>
<div th:include="include :: footer"></div>
<script type="text/javascript" src="/js/appjs/system/dataPerm/dataPerm.js"></script>
</body>
</html>

View File

@ -0,0 +1,112 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<input id="id" name="id" th:value="${dataPerm.id}"
type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">权限名称:</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${dataPerm.name}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">数据表名称:</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${dataPerm.tableName}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">所属模块:</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${dataPerm.moduleName}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">用户权限控制属性名:</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${dataPerm.crlAttrName}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">数据表权限控制列名:</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${dataPerm.crlColumnName}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">权限code</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${dataPerm.permCode}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">排序:</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${dataPerm.orderNum}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">创建时间:</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${dataPerm.gmtCreate}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">修改时间:</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${dataPerm.gmtModified}">
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
</body>
</html>

View File

@ -0,0 +1,101 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<input id="id" name="id" th:value="${dataPerm.id}"
type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">权限名称:</label>
<div class="col-sm-8">
<input id="name" name="name"
th:value="${dataPerm.name}"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">数据表名称:</label>
<div class="col-sm-8">
<input id="tableName" name="tableName"
th:value="${dataPerm.tableName}"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">所属模块:</label>
<div class="col-sm-8">
<input id="moduleName" name="moduleName"
th:value="${dataPerm.moduleName}"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">用户权限控制属性名:</label>
<div class="col-sm-8">
<input id="crlAttrName" name="crlAttrName"
th:value="${dataPerm.crlAttrName}"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">数据表权限控制列名:</label>
<div class="col-sm-8">
<input id="crlColumnName" name="crlColumnName"
th:value="${dataPerm.crlColumnName}"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">权限code</label>
<div class="col-sm-8">
<input id="permCode" name="permCode"
th:value="${dataPerm.permCode}"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">排序:</label>
<div class="col-sm-8">
<input id="orderNum" name="orderNum"
th:value="${dataPerm.orderNum}"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<div class="col-sm-8">
</div>
</div>
<div class="form-group">
<div class="col-sm-8">
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="/wangEditor/release/wangEditor.js"></script>
<script type="text/javascript" src="/js/appjs/system/dataPerm/edit.js">
</script>
</body>
</html>

View File

@ -0,0 +1,58 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<div class="form-group">
<label class="col-sm-3 control-label">上级部门:</label>
<div class="col-sm-8">
<input id="parentId" name="parentId" th:value="${pId}"
class="form-control hidden" type="text">
</div>
<div class="col-sm-8">
<input id="pName" name="pName" th:value="${pName}"
class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">部门名称:</label>
<div class="col-sm-8">
<input id="name" name="name" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">排序:</label>
<div class="col-sm-8">
<input id="orderNum" name="orderNum" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">状态:</label>
<div class="col-sm-8">
<input id="delFlag" name="delFlag" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="/js/appjs/system/dept/add.js">
</script>
</body>
</html>

View File

@ -0,0 +1,69 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="col-sm-12">
<div class="ibox">
<div class="ibox-body">
<div class="fixed-table-toolbar">
<div class="columns pull-left">
<button shiro:hasPermission="system:sysDept:add" type="button" class="btn btn-primary"
onclick="add(0)">
<i class="fa fa-plus hidden" aria-hidden="true"></i>添加
</button>
<button shiro:hasPermission="system:sysDept:batchRemove" type="button" class="btn btn-danger"
onclick="batchRemove()">
<i class="fa fa-trash" aria-hidden="true"></i>删除
</button>
</div>
<div class="columns pull-right">
<button class="btn btn-success" onclick="reLoad()">查询</button>
</div>
<div class="columns pull-right col-md-2">
<input id="searchName" type="text" class="form-control"
placeholder="">
</div>
</div>
<table id="exampleTable" data-mobile-responsive="true">
</table>
</div>
</div>
</div>
</div>
<!--shiro控制bootstraptable行内按钮看见性 -->
<div>
<script type="text/javascript">
var s_add_h = 'hidden';
var s_edit_h = 'hidden';
var s_remove_h = 'hidden';
var s_resetPwd_h = 'hidden';
</script>
</div>
<div shiro:hasPermission="system:sysDept:edit">
<script type="text/javascript">
s_edit_h = '';
</script>
</div>
<div shiro:hasPermission="system:sysDept:add">
<script type="text/javascript">
s_add_h = '';
</script>
</div>
<div shiro:hasPermission="system:sysDept:remove">
<script type="text/javascript">
var s_remove_h = '';
</script>
</div>
<div shiro:hasPermission="system:sysDept:resetPwd">
<script type="text/javascript">
var s_resetPwd_h = '';
</script>
</div>
</div>
<div th:include="include :: footer"></div>
<script type="text/javascript" src="/js/appjs/system/dept/dept.js"></script>
</body>
</html>

View File

@ -0,0 +1,61 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox-content">
<div id="deptTree"></div>
</div>
<div class="form-group hidden">
<div class="col-sm-12 col-sm-offset-12">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</div>
</div>
</div>
<div th:include="include :: footer"></div>
<script type="text/javascript">
$(document).ready(function() {
getTreeData()
});
function getTreeData() {
$.ajax({
type : "GET",
url : "/system/sysDept/tree",
success : function(tree) {
loadTree(tree);
}
});
}
function loadTree(tree) {
$('#deptTree').jstree({
'core' : {
'data' : tree
},
"plugins" : [ "search" ]
});
$('#deptTree').jstree().open_all();
}
$('#deptTree').on("changed.jstree", function(e, data) {
if(data.node.id!=-1){
parent.loadDept(data.node.id,data.node.text);
var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引
parent.layer.close(index);
}
});
</script>
</body>
</html>

View File

@ -0,0 +1,58 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<input id="deptId" name="deptId" th:value="${sysDept.deptId}"
class="hidden">
<div class="form-group">
<label class="col-sm-3 control-label ">上级部门:</label>
<div class="col-sm-8">
<input th:value="${parentDeptName}"
class="form-control" type="text" readonly="true" />
<input class="form-control hidden" type="text" id="parentId" name="parentId" th:value="${sysDept.parentId}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">部门名称:</label>
<div class="col-sm-8">
<input id="name" name="name" th:value="${sysDept.name}"
class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">排序:</label>
<div class="col-sm-8">
<input id="orderNum" name="orderNum" th:value="${sysDept.orderNum}"
class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">状态:</label>
<div class="col-sm-8">
<input id="delFlag" name="delFlag" th:value="${sysDept.delFlag}"
class="form-control" type="text">
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="/js/appjs/system/dept/edit.js">
</script>
</body>
</html>

View File

@ -0,0 +1,83 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<input id="parentId" name="parentId" type="hidden"
th:value="${pId}">
<div class="form-group">
<label class="col-sm-3 control-label">上级菜单:</label>
<div class="col-sm-8">
<input id="" name="" class="form-control" type="text"
th:value="${pName}" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">菜单类型:</label>
<div class="col-sm-8">
<label class="radio-inline"> <input type="radio"
name="type" value="0" /> 目录
</label> <label class="radio-inline"> <input type="radio"
name="type" value="1" /> 菜单
</label> <label class="radio-inline"> <input type="radio"
name="type" value="2" /> 按钮
</label>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">菜单名称:</label>
<div class="col-sm-8">
<input id="name" name="name" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">链接地址:</label>
<div class="col-sm-8">
<input id="url" name="url" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">权限标识:</label>
<div class="col-sm-8">
<input id="perms" name="perms" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">排序号:</label>
<div class="col-sm-8">
<input id="orderNum" name="orderNum" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">图标:</label>
<div class="col-sm-6">
<input id="icon" name="icon" class="form-control" type="text"
placeholder="例如fa fa-circle-o">
</div>
<input id="ico-btn" class="btn btn-warning" type="button" value="选择图标">
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script src="/js/appjs/system/menu/add.js"></script>
</body>
</html>

View File

@ -0,0 +1,100 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
<meta name="keywords" content="">
<meta name="description" content="">
<link rel="shortcut icon" href="favicon.ico">
<link href="/css/bootstrap.min.css?v=3.3.6" rel="stylesheet">
<link href="/css/font-awesome.css?v=4.4.0" rel="stylesheet">
<link href="/css/animate.css" rel="stylesheet">
<link href="/css/style.css?v=4.1.0" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<input id="parentId" name="parentId" type="hidden"
th:value="${pId}" /> <input id="menuId" name="menuId"
type="hidden" th:value="${menu.menuId}" />
<div class="form-group">
<label class="col-sm-3 control-label">上级菜单:</label>
<div class="col-sm-8">
<input id="" name="" class="form-control" type="text"
th:value="${pName}" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">菜单类型:</label>
<div class="col-sm-8">
<label class="radio-inline"> <input type="radio"
th:field="*{menu.type}" name="type" value="0" /> 目录
</label> <label class="radio-inline"> <input type="radio"
th:field="*{menu.type}" name="type" value="1" /> 菜单
</label> <label class="radio-inline"> <input type="radio"
th:field="*{menu.type}" name="type" value="2" /> 按钮
</label>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">菜单名称:</label>
<div class="col-sm-8">
<input id="name" name="name" class="form-control" type="text"
th:value="${menu.name}" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">链接地址:</label>
<div class="col-sm-8">
<input id="url" name="url" class="form-control" type="text"
th:value="${menu.url}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">权限标识:</label>
<div class="col-sm-8">
<input id="perms" name="perms" class="form-control" type="text"
th:value="${menu.perms}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">排序号:</label>
<div class="col-sm-8">
<input id="orderNum" name="orderNum" class="form-control"
type="text" th:value="${menu.orderNum}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">图标:</label>
<div class="col-sm-5">
<input id="icon" name="icon" class="form-control" type="text"
placeholder="例如fa fa-circle-o" th:value="${menu.icon}">
</div>
<input id="ico-btn" class="btn btn-warning" type="button" value="选择图标">
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-info">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script src="/js/appjs/system/menu/edit.js"></script>
</body>
</html>

View File

@ -0,0 +1,54 @@
<!DOCTYPE html>
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org"
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="col-sm-12">
<div class="ibox">
<div class="ibox-body">
<div id="exampleToolbar" role="group" class="t-bar">
<button shiro:hasPermission="sys:menu:add" type="button"
class="btn btn-primary" title="在根节点下添加菜单" onclick="add('0')">
<i class="fa fa-plus" aria-hidden="true"></i>添加
</button>
<button shiro:hasPermission="sys:menu:batchRemove" type="button"
class="btn btn-danger" onclick="batchRemove()">
<i class="fa fa-trash" aria-hidden="true"></i>删除
</button>
</div>
<table id="exampleTable" data-mobile-responsive="true">
</table>
</div>
</div>
</div>
<!--shiro控制bootstraptable行内按钮看见性 -->
<div>
<script type="text/javascript">
var s_add_h = 'hidden';
var s_edit_h = 'hidden';
var s_remove_h = 'hidden';
</script>
</div>
<div shiro:hasPermission="sys:menu:add">
<script type="text/javascript">
s_add_h = '';
</script>
</div>
<div shiro:hasPermission="sys:menu:edit">
<script type="text/javascript">
s_edit_h = '';
</script>
</div>
<div shiro:hasPermission="sys:menu:remove">
<script type="text/javascript">
var s_remove_h = '';
</script>
</div>
</div>
<div th:include="include::footer"></div>
<script src="/js/appjs/system/menu/menu.js"></script>
</body>
</html>

View File

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org"
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-11">
<div class="ibox">
<div class="ibox-body">
<div class="fixed-table-toolbar">
<div class="columns pull-left">
</div>
<div class="columns pull-right">
<button class="btn btn-success" onclick="reLoad()">查询</button>
</div>
<div class="columns pull-right col-md-2">
<input id="searchName" type="text" class="form-control"
placeholder="">
</div>
</div>
<table id="exampleTable" data-mobile-responsive="true">
</table>
</div>
</div>
</div>
</div>
<div th:include="include :: footer"></div>
<script type="text/javascript" src="/js/appjs/system/online/online.js"></script>
</body>
</html>

View File

@ -0,0 +1,61 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include::header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5></h5>
</div>
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<input id="userId" name="userId" type="hidden"> <input
id="menuIds" name="menuIds" type="hidden">
<input
id="permIds" name="permIds" type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">角色名:</label>
<div class="col-sm-8">
<input id="roleName" name="roleName" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">备注:</label>
<div class="col-sm-8">
<input id="remark" name="remark" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">菜单权限:</label>
<div class="col-sm-8">
<div id="menuTree"></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">数据权限:</label>
<div class="col-sm-8">
<div id="dataPermTree"></div>
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="/js/appjs/system/role/add.js">
</script>
</body>
</html>

View File

@ -0,0 +1,59 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include::header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<input id="roleId" name="roleId" type="hidden"
th:value="${role.roleId}"> <input id="menuIds"
name="menuIds" type="hidden">
<input
id="permIds" name="permIds" type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">角色名:</label>
<div class="col-sm-8">
<input id="roleName" name="roleName" class="form-control"
type="text" th:value="${role.roleName}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">备注:</label>
<div class="col-sm-8">
<input id="remark" name="remark" class="form-control"
type="text" th:value="${role.remark}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">菜单权限:</label>
<div class="col-sm-8">
<div id="menuTree"></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">数据权限:</label>
<div class="col-sm-8">
<div id="dataPermTree"></div>
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script src="/js/appjs/system/role/edit.js"></script>
</body>
</html>

View File

@ -0,0 +1,51 @@
<!DOCTYPE html>
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org"
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<meta charset="utf-8">
<head th:include="include::header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="col-sm-12">
<div class="ibox">
<div class="ibox-body">
<div id="exampleToolbar" role="group">
<button shiro:hasPermission="sys:role:add" type="button"
class="btn btn-primary" onclick="add()">
<i class="fa fa-plus" aria-hidden="true"></i>添加
</button>
<button shiro:hasPermission="sys:role:batchRemove" type="button"
class="btn btn-danger" onclick="batchRemove()">
<i class="fa fa-trash" aria-hidden="true"></i>删除
</button>
</div>
<table id="exampleTable" data-mobile-responsive="true">
</table>
</div>
</div>
</div>
<!--shiro控制bootstraptable行内按钮看见性 -->
<div>
<script type="text/javascript">
var s_edit_h = 'hidden';
var s_remove_h = 'hidden';
</script>
</div>
<div shiro:hasPermission="sys:role:edit">
<script type="text/javascript">
s_edit_h = '';
</script>
</div>
<div shiro:hasPermission="sys:role:remove">
<script type="text/javascript">
var s_remove_h = '';
</script>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="/js/appjs/system/role/role.js">
</script>
</body>
</html>

View File

@ -0,0 +1,46 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<div class="form-group">
<label class="col-sm-3 control-label">角色ID</label>
<div class="col-sm-8">
<input id="roleId" name="roleId"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">权限ID</label>
<div class="col-sm-8">
<input id="permId" name="permId"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="/wangEditor/release/wangEditor.js"></script>
<script type="text/javascript" src="/js/appjs/system/roleDataPerm/add.js">
</script>
</body>
</html>

View File

@ -0,0 +1,42 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<input id="id" name="id" th:value="${roleDataPerm.id}"
type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">角色ID</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${roleDataPerm.roleId}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">权限ID</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${roleDataPerm.permId}">
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
</body>
</html>

View File

@ -0,0 +1,48 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<input id="id" name="id" th:value="${roleDataPerm.id}"
type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">角色ID</label>
<div class="col-sm-8">
<input id="roleId" name="roleId"
th:value="${roleDataPerm.roleId}"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">权限ID</label>
<div class="col-sm-8">
<input id="permId" name="permId"
th:value="${roleDataPerm.permId}"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="/wangEditor/release/wangEditor.js"></script>
<script type="text/javascript" src="/js/appjs/system/roleDataPerm/edit.js">
</script>
</body>
</html>

View File

@ -0,0 +1,66 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="col-sm-12">
<div class="ibox">
<div class="ibox-body">
<div class="fixed-table-toolbar">
<div class="columns pull-left">
<button shiro:hasPermission="system:roleDataPerm:add" type="button"
class="btn btn-primary" onclick="add()">
<i class="fa fa-plus" aria-hidden="true"></i>添加
</button>
<button shiro:hasPermission="system:roleDataPerm:batchRemove" type="button"
class="btn btn-danger"
onclick="batchRemove()">
<i class="fa fa-trash" aria-hidden="true"></i>删除
</button>
</div>
<div class="columns pull-right">
<button class="btn btn-success" onclick="reLoad()">查询</button>
</div>
<form id="searchForm">
<div class="columns pull-right col-md-2">
<input id="id" name="id" type="text" class="form-control"
placeholder="主键">
</div>
</form>
</div>
<table id="exampleTable" data-mobile-responsive="true">
</table>
</div>
</div>
</div>
</div>
<!--shiro控制bootstraptable行内按钮看见性 -->
<div>
<script type="text/javascript">
var s_detail_h = 'hidden';
var s_edit_h = 'hidden';
var s_remove_h = 'hidden';
</script>
</div>
<div shiro:hasPermission="test:order:detail">
<script type="text/javascript">
s_detail_h = '';
</script>
</div>
<div shiro:hasPermission="system:roleDataPerm:edit">
<script type="text/javascript">
s_edit_h = '';
</script>
</div>
<div shiro:hasPermission="system:roleDataPerm:remove">
<script type="text/javascript">
var s_remove_h = '';
</script>
</div>
<div th:include="include :: footer"></div>
<script type="text/javascript" src="/js/appjs/system/roleDataPerm/roleDataPerm.js"></script>
</body>
</html>

View File

@ -0,0 +1,85 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<input id="userId" name="userId" type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">姓名:</label>
<div class="col-sm-8">
<input id="name" name="name" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">用户名:</label>
<div class="col-sm-8">
<input id="username" name="username" class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">密码:</label>
<div class="col-sm-8">
<input id="password" name="password" class="form-control"
type="password">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">部门:</label>
<div class="col-sm-8">
<input id="deptId" name="deptId" class="hidden"> <input
id="deptName" name="deptName" class="form-control" type="text"
style="cursor: pointer;" onclick="openDept()"
readonly="readonly" placeholder="所属部门">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">E-mail</label>
<div class="col-sm-8">
<input id="email" name="email" class="form-control"
type="email">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">状态:</label>
<div class="col-sm-8">
<label class="radio-inline"> <input type="radio"
name="status" value="1" /> 正常
</label> <label class="radio-inline"> <input type="radio"
name="status" value="0" /> 禁用
</label>
</div>
</div>
<input type="hidden" name="roleIds" id="roleIds">
<div class="form-group">
<label class="col-sm-3 control-label">角色</label>
<div class="col-sm-8">
<label th:each="role:${roles}" class="checkbox-inline">
<input name="role" type="checkbox" th:value="${role.roleId}"
th:text="${role.roleName}">
</label>
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="/js/appjs/system/user/add.js">
</script>
</body>
</html>

View File

@ -0,0 +1,80 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<input id="userId" name="userId" th:value="${user.userId}"
type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">姓名:</label>
<div class="col-sm-8">
<input id="name" name="name" class="form-control" type="text"
th:value="${user.name}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">用户名:</label>
<div class="col-sm-8">
<input id="username" name="username" class="form-control"
type="text" th:value="${user.username}" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">部门:</label>
<div class="col-sm-8">
<input id="deptId" name="deptId" class="hidden" th:value="${user.deptId}">
<input id="deptName" name="deptName"
class="form-control" type="text" style="cursor: pointer;"
onclick="openDept()" readonly="readonly" placeholder="所属部门" th:value="${user.deptName}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">E-mail</label>
<div class="col-sm-8">
<input id="email" name="email" class="form-control" type="email"
th:value="${user.email}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">状态:</label>
<div class="col-sm-8">
<label class="radio-inline"> <input
th:field="*{user.status}" type="radio" name="status" value="1" />
正常
</label> <label class="radio-inline"> <input
th:field="*{user.status}" type="radio" name="status" value="0" />
禁用
</label>
</div>
</div>
<input type="hidden" name="roleIds" id="roleIds"
th:value="${roleIds}">
<div class="form-group">
<label class="col-sm-3 control-label">角色</label>
<div class="col-sm-8">
<label th:each="role:${roles}" class="checkbox-inline">
<input name="role" type="checkbox" th:value="${role.roleId}"
th:text="${role.roleName}" th:checked="${role.roleSign}">
</label>
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="/js/appjs/system/user/edit.js">
</script>
</body>
</html>

View File

@ -0,0 +1,30 @@
<head th:fragment="header">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
<meta name="keywords" content="">
<meta name="description" content="">
<link rel="shortcut icon" href="favicon.ico">
<link rel="stylesheet" href="/css/bootstrap.min.css" />
<link rel="stylesheet" href="/css/animate.css" />
<link rel="stylesheet" href="/css/font-awesome.css" />
<link rel="stylesheet" href="/css/style.css" />
<link rel="stylesheet" href="/css/plugins/iCheck/custom.css" />
<link rel="stylesheet" href="/css/plugins/cropper/cropper.css" />
<link rel="stylesheet" href="/js/plugins/layer/laydate/skins/default/laydate.css" />
<link rel="stylesheet" href="/css/java2nb.css" />
</head>
<div th:fragment="footer">
<script type="text/javascript" src="/js/jquery.min.js" ></script>
<script type="text/javascript" src="/js/bootstrap.min.js" ></script>
<script type="text/javascript" src="/js/plugins/iCheck/icheck.min.js"></script>
<script type="text/javascript" src="/js/plugins/cropper/cropper.min.js"></script>
<script type="text/javascript" src="/js/plugins/layer/laydate/laydate.js" ></script>
<script type="text/javascript" src="/js/plugins/distpicker/distpicker.data.min.js"></script>
<script type="text/javascript" src="/js/plugins/distpicker/distpicker.min.js"></script>
<script type="text/javascript" src="/js/appjs/system/user/java2nb.js"></script>
<!--校验插件-->
<script src="/js/plugins/validate/jquery.validate.min.js"></script>
<script src="/js/plugins/validate/jquery.validate.extend.js"></script>
<script src="/js/plugins/validate/messages_zh.min.js"></script>
</div>

View File

@ -0,0 +1,223 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="system/user/include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12">
<div class="ibox">
<div class="ibox-title" style="padding-bottom: 0;">
<h3 class="text-center">个人资料中心</h3>
<div class="gg-nav">
<ul class="nav nav-tabs">
<li class="active"><a href="#basic_info" data-toggle="tab">基本资料</a></li>
<li><a href="#photo_info" data-toggle="tab">头像修改</a></li>
<li><a href="#pwd_info" data-toggle="tab">修改密码</a></li>
</ul>
</div>
</div>
<div class="tab-content">
<!--basic info-->
<div class="ibox-content tab-pane fade in active" id="basic_info">
<form class="gg-form" role="form" id="basicInfoForm">
<input name="userId" type="hidden" th:value="${user.userId}"/>
<div class="gg-formGroup">
<div class="gg-formTitle">
<em class="gg-star">*</em>
<span>姓名:</span>
</div>
<div class="gg-formDetail">
<input type="text" class="form-control" id="userName" name="name" th:value="${user.name}" placeholder="请输入姓名" />
</div>
</div>
<div class="gg-formGroup">
<div class="gg-formTitle">
<em class="gg-star">*</em>
<span>性别:</span>
</div>
<div class="gg-formDetail">
<div class="radio i-checks">
<label class="radio-inline" th:each="sex:${sexList}"> <input
th:field="*{user.sex}" type="radio" name="sex" th:value="${sex.id}" th:text="${sex.name}"/>
</label>
</div>
</div>
</div>
<div class="gg-formGroup">
<div class="gg-formTitle">
<em class="gg-star">*</em>
<span>出生年月:</span>
</div>
<div class="gg-formDetail">
<input type="text" class="laydate-icon layer-date form-control" id="birth" name="birth" th:value="${user.birth}==null?null:${#dates.format(user.birth,'yyyy-MM-dd')}" placeholder="请选择出生年月"
onclick="laydate({istime: true, format: 'YYYY-MM-DD'})" style="background-color: #fff;" readonly="readonly"/>
</div>
</div>
<div class="gg-formGroup">
<div class="gg-formTitle">
<em class="gg-star">*</em>
<span>手机:</span>
</div>
<div class="gg-formDetail">
<input type="text" class="form-control" id="phone" name="mobile" th:value="${user.mobile}" placeholder="请输入手机号" />
</div>
</div>
<div class="gg-formGroup">
<div class="gg-formTitle">
<em class="gg-star">*</em>
<span>邮箱:</span>
</div>
<div class="gg-formDetail">
<input type="text" class="form-control" id="email" name="email" th:value="${user.email}" placeholder="请输入邮箱" />
</div>
</div>
<div class="gg-formGroup">
<div class="gg-formTitle">
<em class="gg-star">*</em>
<span>居住地:</span>
</div>
<div class="gg-formDetail gg-font0" data-toggle="distpicker" th:attr="data-province=${user.province},data-city=${user.city},data-district=${user.district}">
<div class="gg-area">
<select class="form-control" id="province" name="province">
</select>
</div>
<div class="gg-area">
<select class="form-control" id="city" name="city">
</select>
</div>
<div class="gg-area">
<select class="form-control" id="district" name="district">
</select>
</div>
</div>
</div>
<div class="gg-formGroup">
<div class="gg-formTitle">
<em class="gg-star">*</em>
<span>联系地址:</span>
</div>
<div class="gg-formDetail">
<input type="text" class="form-control" id="address" name="liveAddress" th:value="${user.liveAddress}" placeholder="请输入居住地址" />
</div>
</div>
<div class="gg-formGroup">
<div class="gg-formTitle">
<em class="gg-star">*</em>
<span>爱好:</span>
</div>
<div class="gg-formDetail">
<div class="checxbox i-checks" >
<input type="hidden" name="hobby" id="hobby"/>
<label th:each="hobby : ${hobbyList}">
<input type="checkbox" class="hobby" th:value="${hobby.id}" th:text="${hobby.name}" th:checked="${hobby.remarks}=='true'"/>
</label>
</div>
</div>
</div>
</form>
<div class="gg-btnGroup">
<button type="button" class="btn btn-sm btn-primary" id="base_save">保存</button>
</div>
</div>
<!--photo_info-->
<div class="ibox-content tab-pane fade gg" id="photo_info">
<div class="ggcontainer" id="crop-avatar">
<form class="avatar-form" action="/sys/user/uploadImg" enctype="multipart/form-data" method="post">
<div class="avatar-body">
<div class="avatar-upload">
<input class="avatar-src" name="avatar_src" type="hidden">
<input class="avatar-data" name="avatar_data" type="hidden">
<label for="avatarInput">选取文件</label>
<input class="avatar-input" id="avatarInput" name="avatar_file" type="file">
</div>
<!-- Crop and preview -->
<div class="row">
<div class="col-md-9">
<div class="avatar-wrapper"></div>
</div>
<div class="col-md-3">
<div class="avatar-preview preview-lg"></div>
<div class="avatar-preview preview-md"></div>
<div class="avatar-preview preview-sm"></div>
</div>
</div>
<div class="row avatar-btns">
<div class="col-md-9">
<div class="btn-group">
<button class="btn btn-primary" data-method="rotate" data-option="-90" type="button" title="Rotate -90 degrees">左旋转</button>
<button class="btn btn-primary" data-method="rotate" data-option="-15" type="button">-15°</button>
<button class="btn btn-primary" data-method="rotate" data-option="-30" type="button">-30°</button>
<button class="btn btn-primary" data-method="rotate" data-option="-45" type="button">-45°</button>
</div>
<div class="btn-group">
<button class="btn btn-primary" data-method="rotate" data-option="90" type="button" title="Rotate 90 degrees">右旋转</button>
<button class="btn btn-primary" data-method="rotate" data-option="15" type="button">15°</button>
<button class="btn btn-primary" data-method="rotate" data-option="30" type="button">30°</button>
<button class="btn btn-primary" data-method="rotate" data-option="45" type="button">45°</button>
</div>
</div>
<div class="col-md-3">
<button class="btn btn-primary btn-block avatar-save" type="submit">完成裁剪</button>
</div>
</div>
</div>
</form>
<!-- Loading state -->
<div class="loading" aria-label="Loading" role="img" tabindex="-1"></div>
</div>
</div>
<!--pwd_info-->
<div class="ibox-content tab-pane fade" id="pwd_info">
<form class="gg-form" role="form" id="modifyPwd">
<a id="logout" class="hidden" href="/logout"></a>
<input type="hidden" name ="userDO.userId" th:value="${user.userId}"/>
<div class="gg-formGroup">
<div class="gg-formTitle">
<em class="gg-star">*</em>
<span>旧密码:</span>
</div>
<div class="gg-formDetail gg-dashed">
<input type="password" class="form-control gg-border0" id="pwdOld" name="pwdOld" placeholder="请输入旧密码" />
<span class="fa fa-eye gg-faeye" title="鼠标移入显示内容"><span>
</div>
</div>
<div class="gg-formGroup">
<div class="gg-formTitle">
<em class="gg-star">*</em>
<span>新密码:</span>
</div>
<div class="gg-formDetail gg-dashed">
<input type="password" class="form-control gg-border0" id="pwdNew" name="pwdNew" placeholder="请输入新密码" />
<span class="fa fa-eye gg-faeye" title="鼠标移入显示内容"></span>
</div>
</div>
<div class="gg-formGroup">
<div class="gg-formTitle">
<em class="gg-star">*</em>
<span>确认密码:</span>
</div>
<div class="gg-formDetail gg-dashed">
<input type="password" class="form-control gg-border0" id="confirm_password" name="confirm_password" placeholder="请确认密码" />
<span class="fa fa-eye gg-faeye" title="鼠标移入显示内容"></span>
</div>
</div>
</form>
<div class="gg-btnGroup">
<button type="button" class="btn btn-sm btn-primary" id="pwd_save">保存</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div th:include="system/user/include :: footer"></div>
<script type="text/javascript" src="/js/appjs/system/user/personal.js"></script>
</body>
</html>

View File

@ -0,0 +1,109 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<input id="userId" name="userDO.userId" th:value="${user.userId}"
type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">输入密码:</label>
<div class="col-sm-8">
<input id="password" name="pwdNew" class="form-control"
type="password" value="111111">
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- 全局js -->
<script src="/js/jquery.min.js?v=2.1.4"></script>
<script src="/js/bootstrap.min.js?v=3.3.6"></script>
<!-- 自定义js -->
<script src="/js/content.js?v=1.0.0"></script>
<!-- jQuery Validation plugin javascript-->
<script src="/js/plugins/validate/jquery.validate.min.js"></script>
<script src="/js/plugins/validate/messages_zh.min.js"></script>
<!-- script src="/js/demo/form-validate-demo.js"></script> -->
<script type="text/javascript">
$(document).ready(function() {
validateRule();
//setCheckedRoles();
});
$.validator.setDefaults({
submitHandler : function() {
update();
}
});
function update() {
$.ajax({
cache : true,
type : "POST",
url : "/sys/user/adminResetPwd",
data : $('#signupForm').serialize(),// 你的formid
async : false,
error : function(request) {
parent.layer.msg("系统错误联系管理员");
},
success : function(data) {
if (data.code == 0) {
parent.layer.msg(data.msg);
parent.reLoad();
var index = parent.layer.getFrameIndex(window.name); //获取窗口索引
parent.layer.close(index);
} else {
parent.layer.msg(data.msg);
}
}
});
}
function validateRule() {
var icon = "<i class='fa fa-times-circle'></i> ";
$("#signupForm").validate({
rules : {
password : {
required : true,
minlength : 6
}
},
messages : {
password : {
required : icon + "请输入您的密码",
minlength : icon + "密码必须6个字符以上"
}
}
})
}
</script>
</body>
</html>

View File

@ -0,0 +1,74 @@
<!DOCTYPE html>
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org"
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-3">
<div class="ibox ibox-body">
<div class="ibox-title">
<h5>选择部门</h5>
</div>
<div class="ibox-content">
<div id="jstree"></div>
</div> </div>
</div>
<div class="col-sm-8">
<div class="ibox">
<div class="ibox-body">
<div class="fixed-table-toolbar">
<div class="columns pull-left">
<button shiro:hasPermission="sys:user:add" type="button"
class="btn btn-primary" onclick="add()">
<i class="fa fa-plus hidden" aria-hidden="true"></i>添加
</button>
<button shiro:hasPermission="sys:user:batchRemove" type="button"
class="btn btn-danger" onclick="batchRemove()">
<i class="fa fa-trash hidden" aria-hidden="true"></i>删除
</button>
</div>
<div class="columns pull-right">
<button class="btn btn-success" onclick="reLoad()">查询</button>
</div>
<div class="columns pull-right col-md-2">
<input id="searchName" type="text" class="form-control"
placeholder="姓名">
</div>
</div>
<table id="exampleTable" data-mobile-responsive="true">
</table>
</div>
</div>
</div>
</div>
<!--shiro控制bootstraptable行内按钮看见性 -->
<div>
<script type="text/javascript">
var s_edit_h = 'hidden';
var s_remove_h = 'hidden';
var s_resetPwd_h = 'hidden';
</script>
</div>
<div shiro:hasPermission="sys:user:edit">
<script type="text/javascript">
s_edit_h = '';
</script>
</div>
<div shiro:hasPermission="sys:user:remove">
<script type="text/javascript">
var s_remove_h = '';
</script>
</div>
<div shiro:hasPermission="sys:user:resetPwd">
<script type="text/javascript">
var s_resetPwd_h = '';
</script>
</div>
</div>
<div th:include="include :: footer"></div>
<script type="text/javascript" src="/js/appjs/system/user/user.js"></script>
</body>
</html>

View File

@ -0,0 +1,60 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-12">
<div class="ibox-content">
<div id="jsTree"></div>
</div>
<div class="form-group ">
<div class="col-sm-12 col-sm-offset-12">
<button type="submit" onclick="loadUser()" class="btn btn-primary">提交</button>
</div>
</div>
</div>
</div>
</div>
<div th:include="include :: footer"></div>
<script type="text/javascript">
$(document).ready(function() {
getTreeData()
});
function getTreeData() {
$.ajax({
type : "GET",
url : "/sys/user/tree",
success : function(tree) {
loadTree(tree);
}
});
}
function loadTree(tree) {
$('#jsTree').jstree({
'core' : {
'data' : tree
},
"plugins" : [ "checkbox" ]
});
$('#jsTree').jstree().open_all();
}
function loadUser(){
var userNames,userIds;
var ref = $('#jsTree').jstree(true); // 获得整个树
userIds = ref.get_bottom_selected();
users = ref.get_bottom_checked('true');
var txt="";
for(var user in users){
if(users[user].state.mType=="user"){
txt=txt+users[user].text+",";
}
}
parent.loadUser(userIds,txt);
var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引
parent.layer.close(index);
}
</script>
</body>
</html>

View File

@ -0,0 +1,327 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<div class="form-group">
<label class="col-sm-3 control-label">付呗商户号:</label>
<div class="col-sm-8">
<input id="fbMerchantCode" name="fbMerchantCode"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">第三方商户的订单号:</label>
<div class="col-sm-8">
<input id="merchantOrderSn" name="merchantOrderSn"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">付呗订单号:</label>
<div class="col-sm-8">
<select data-placeholder="--选择--" id="orderSn"
name="orderSn"
class="form-control chosen-select" tabindex="2"
dict-type="color">
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">平台方订单号:</label>
<div class="col-sm-8">
<select data-placeholder="--选择--" id="platformOrderNo"
name="platformOrderNo"
class="form-control chosen-select" tabindex="2"
dict-type="oa_leave_type">
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">商户单号:</label>
<div class="col-sm-8">
<input type="hidden" id="tradeNo" name="tradeNo"/>
<div id="contentEditortradeNo">
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">订单状态1未支付2支付成功3支付失败4支付取消</label>
<div class="col-sm-8">
<select data-placeholder="--选择--" id="orderState"
name="orderState"
class="form-control chosen-select" tabindex="2"
dict-type="yes_no">
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">蜂鸟优惠卷抵扣:</label>
<div class="col-sm-8">
<input id="fnCoupon" name="fnCoupon"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">红包抵扣:</label>
<div class="col-sm-8">
<input id="redPacket" name="redPacket"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">实收金额(元)</label>
<div class="col-sm-8">
<input id="totalFee" name="totalFee"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">订单金额:</label>
<div class="col-sm-8">
<input id="orderPrice" name="orderPrice"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">手续费(元)</label>
<div class="col-sm-8">
<input id="fee" name="fee"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">对商品或交易的描述:</label>
<div class="col-sm-8">
<img title="点击选择图片" id="picImagebody"
style="cursor:pointer;width: 100px;height: 100px"
src="/img/webuploader.png"/>
<input id="body" name="body"
class="form-control"
type="hidden">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">附加数据:</label>
<div class="col-sm-8">
<input type="hidden" id="attach" name="attach"/>
<div id="contentEditorattach">
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">付呗系统的门店id</label>
<div class="col-sm-8">
<input id="storeId" name="storeId"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">付呗系统的收银员id</label>
<div class="col-sm-8">
<input id="cashierId" name="cashierId"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">设备终端号:</label>
<div class="col-sm-8">
<input id="deviceNo" name="deviceNo"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">微信顾客支付授权的“open_id”或者支付宝顾客的“buyer_user_id”</label>
<div class="col-sm-8">
<input id="userId" name="userId"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">支付宝顾客的账号:</label>
<div class="col-sm-8">
<textarea id="userLogonId" name="userLogonId"
class="form-control"></textarea>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">交易成功的时间:</label>
<div class="col-sm-8">
<input type="text" class="laydate-icon layer-date form-control"
id="payTime"
name="payTime"
onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss'})"
style="background-color: #fff;" readonly="readonly"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">支付通道:1微信、2支付宝、3银联</label>
<div class="col-sm-8">
<select data-placeholder="--选择--" id="payChannel"
name="payChannel"
class="form-control chosen-select" tabindex="2"
dict-type="del_flag">
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">免充值代金券金额(元)</label>
<div class="col-sm-8">
<input id="noCashCouponFee" name="noCashCouponFee"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">预充值代金券金额(元)</label>
<div class="col-sm-8">
<input id="cashCouponFee" name="cashCouponFee"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">顾客实际支付金额(元)</label>
<div class="col-sm-8">
<input id="cashFee" name="cashFee"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">签名:</label>
<div class="col-sm-8">
<select data-placeholder="--选择--" id="sign"
name="sign"
class="form-control chosen-select" tabindex="2"
dict-type="theme">
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">其它选项:</label>
<div class="col-sm-8">
<img title="点击选择图片" id="picImageoptions"
style="cursor:pointer;width: 100px;height: 100px"
src="/img/webuploader.png"/>
<input id="options" name="options"
class="form-control"
type="hidden">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">创建时间:</label>
<div class="col-sm-8">
<input type="text" class="laydate-icon layer-date form-control"
id="createTime"
name="createTime"
onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss'})"
style="background-color: #fff;" readonly="readonly"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">推送时间:</label>
<div class="col-sm-8">
<input type="text" class="laydate-icon layer-date form-control"
id="pushTime"
name="pushTime"
onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss'})"
style="background-color: #fff;" readonly="readonly"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">推送IP</label>
<div class="col-sm-8">
<input type="hidden" id="pushIp" name="pushIp"/>
<div id="contentEditorpushIp">
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">商户id</label>
<div class="col-sm-8">
<input id="mchtId" name="mchtId"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">QR编号</label>
<div class="col-sm-8">
<input id="sn" name="sn"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="/wangEditor/release/wangEditor.js"></script>
<script type="text/javascript" src="/js/appjs/test/order/add.js">
</script>
</body>
</html>

View File

@ -0,0 +1,315 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<input id="id" name="id" th:value="${order.id}"
type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">付呗商户号:</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.fbMerchantCode}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">第三方商户的订单号:</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.merchantOrderSn}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">付呗订单号:</label>
<div style="padding-top:8px" class="col-sm-8 dict-type" dict-type="color"
th:attr="dict-value=${order.orderSn}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">平台方订单号:</label>
<div style="padding-top:8px" class="col-sm-8 dict-type" dict-type="oa_leave_type"
th:attr="dict-value=${order.platformOrderNo}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">商户单号:</label>
<div style="padding-top:8px" class="col-sm-8"
th:utext="${order.tradeNo}"></div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">订单状态1未支付2支付成功3支付失败4支付取消</label>
<div style="padding-top:8px" class="col-sm-8 dict-type" dict-type="yes_no"
th:attr="dict-value=${order.orderState}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">蜂鸟优惠卷抵扣:</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.fnCoupon}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">红包抵扣:</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.redPacket}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">实收金额(元)</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.totalFee}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">订单金额:</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.orderPrice}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">手续费(元)</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.fee}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">对商品或交易的描述:</label>
<div style="padding-top:8px" class="col-sm-8">
<img id="picImagebody"
style="cursor:pointer;width: 100px;height: 100px"
th:src="${order.body}==null?'/img/webuploader.png':${order.body}"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">附加数据:</label>
<div style="padding-top:8px" class="col-sm-8"
th:utext="${order.attach}"></div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">付呗系统的门店id</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.storeId}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">付呗系统的收银员id</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.cashierId}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">设备终端号:</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.deviceNo}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">微信顾客支付授权的“open_id”或者支付宝顾客的“buyer_user_id”</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.userId}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">支付宝顾客的账号:</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.userLogonId}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">交易成功的时间:</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.payTime}==null?null:${#dates.format(order.payTime,'yyyy-MM-dd HH:mm:ss')}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">支付通道:1微信、2支付宝、3银联</label>
<div style="padding-top:8px" class="col-sm-8 dict-type" dict-type="del_flag"
th:attr="dict-value=${order.payChannel}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">免充值代金券金额(元)</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.noCashCouponFee}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">预充值代金券金额(元)</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.cashCouponFee}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">顾客实际支付金额(元)</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.cashFee}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">签名:</label>
<div style="padding-top:8px" class="col-sm-8 dict-type" dict-type="theme"
th:attr="dict-value=${order.sign}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">其它选项:</label>
<div style="padding-top:8px" class="col-sm-8">
<img id="picImageoptions"
style="cursor:pointer;width: 100px;height: 100px"
th:src="${order.options}==null?'/img/webuploader.png':${order.options}"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">创建时间:</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.createTime}==null?null:${#dates.format(order.createTime,'yyyy-MM-dd HH:mm:ss')}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">推送时间:</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.pushTime}==null?null:${#dates.format(order.pushTime,'yyyy-MM-dd HH:mm:ss')}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">推送IP</label>
<div style="padding-top:8px" class="col-sm-8"
th:utext="${order.pushIp}"></div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">商户id</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.mchtId}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">QR编号</label>
<div style="padding-top:8px" class="col-sm-8"
th:text="${order.sn}">
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
</body>
</html>

View File

@ -0,0 +1,323 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<input id="id" name="id" th:value="${order.id}"
type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">付呗商户号:</label>
<div class="col-sm-8">
<input id="fbMerchantCode" name="fbMerchantCode"
th:value="${order.fbMerchantCode}"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">第三方商户的订单号:</label>
<div class="col-sm-8">
<input id="merchantOrderSn" name="merchantOrderSn"
th:value="${order.merchantOrderSn}"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">付呗订单号:</label>
<div class="col-sm-8">
<select data-placeholder="--选择--" id="orderSn"
name="orderSn"
class="form-control chosen-select" tabindex="2"
dict-type="color"
th:attr="dict-value=${order.orderSn}" >
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">平台方订单号:</label>
<div class="col-sm-8">
<select data-placeholder="--选择--" id="platformOrderNo"
name="platformOrderNo"
class="form-control chosen-select" tabindex="2"
dict-type="oa_leave_type"
th:attr="dict-value=${order.platformOrderNo}" >
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">商户单号:</label>
<div class="col-sm-8">
<input type="hidden" id="tradeNo" name="tradeNo" th:value="${order.tradeNo}"/>
<div id="contentEditortradeNo">
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">订单状态1未支付2支付成功3支付失败4支付取消</label>
<div class="col-sm-8">
<select data-placeholder="--选择--" id="orderState"
name="orderState"
class="form-control chosen-select" tabindex="2"
dict-type="yes_no"
th:attr="dict-value=${order.orderState}" >
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">蜂鸟优惠卷抵扣:</label>
<div class="col-sm-8">
<input id="fnCoupon" name="fnCoupon"
th:value="${order.fnCoupon}"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">红包抵扣:</label>
<div class="col-sm-8">
<input id="redPacket" name="redPacket"
th:value="${order.redPacket}"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">实收金额(元)</label>
<div class="col-sm-8">
<input id="totalFee" name="totalFee"
th:value="${order.totalFee}"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">订单金额:</label>
<div class="col-sm-8">
<input id="orderPrice" name="orderPrice"
th:value="${order.orderPrice}"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">手续费(元)</label>
<div class="col-sm-8">
<input id="fee" name="fee"
th:value="${order.fee}"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">对商品或交易的描述:</label>
<div class="col-sm-8">
<img title="点击选择图片" id="picImagebody"
style="cursor:pointer;width: 100px;height: 100px"
th:src="${order.body}==null?'/img/webuploader.png':${order.body}"/>
<input id="body" name="body" th:value="${order.body}"
class="form-control"
type="hidden">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">附加数据:</label>
<div class="col-sm-8">
<input type="hidden" id="attach" name="attach" th:value="${order.attach}"/>
<div id="contentEditorattach">
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">付呗系统的门店id</label>
<div class="col-sm-8">
<input id="storeId" name="storeId"
th:value="${order.storeId}"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">付呗系统的收银员id</label>
<div class="col-sm-8">
<input id="cashierId" name="cashierId"
th:value="${order.cashierId}"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">设备终端号:</label>
<div class="col-sm-8">
<input id="deviceNo" name="deviceNo"
th:value="${order.deviceNo}"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">微信顾客支付授权的“open_id”或者支付宝顾客的“buyer_user_id”</label>
<div class="col-sm-8">
<input id="userId" name="userId"
th:value="${order.userId}"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">支付宝顾客的账号:</label>
<div class="col-sm-8">
<textarea id="userLogonId" name="userLogonId"
class="form-control" th:text="${order.userLogonId}"></textarea>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">交易成功的时间:</label>
<div class="col-sm-8">
<input type="text" class="laydate-icon layer-date form-control"
id="payTime"
name="payTime"
th:value="${order.payTime}==null?null:${#dates.format(order.payTime,'yyyy-MM-dd HH:mm:ss')}"
onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss'})"
style="background-color: #fff;" readonly="readonly"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">支付通道:1微信、2支付宝、3银联</label>
<div class="col-sm-8">
<select data-placeholder="--选择--" id="payChannel"
name="payChannel"
class="form-control chosen-select" tabindex="2"
dict-type="del_flag"
th:attr="dict-value=${order.payChannel}" >
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">免充值代金券金额(元)</label>
<div class="col-sm-8">
<input id="noCashCouponFee" name="noCashCouponFee"
th:value="${order.noCashCouponFee}"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">预充值代金券金额(元)</label>
<div class="col-sm-8">
<input id="cashCouponFee" name="cashCouponFee"
th:value="${order.cashCouponFee}"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">顾客实际支付金额(元)</label>
<div class="col-sm-8">
<input id="cashFee" name="cashFee"
th:value="${order.cashFee}"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">签名:</label>
<div class="col-sm-8">
<select data-placeholder="--选择--" id="sign"
name="sign"
class="form-control chosen-select" tabindex="2"
dict-type="theme"
th:attr="dict-value=${order.sign}" >
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">其它选项:</label>
<div class="col-sm-8">
<img title="点击选择图片" id="picImageoptions"
style="cursor:pointer;width: 100px;height: 100px"
th:src="${order.options}==null?'/img/webuploader.png':${order.options}"/>
<input id="options" name="options" th:value="${order.options}"
class="form-control"
type="hidden">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">创建时间:</label>
<div class="col-sm-8">
<input type="text" class="laydate-icon layer-date form-control"
id="createTime"
name="createTime"
th:value="${order.createTime}==null?null:${#dates.format(order.createTime,'yyyy-MM-dd HH:mm:ss')}"
onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss'})"
style="background-color: #fff;" readonly="readonly"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">推送时间:</label>
<div class="col-sm-8">
<input type="text" class="laydate-icon layer-date form-control"
id="pushTime"
name="pushTime"
th:value="${order.pushTime}==null?null:${#dates.format(order.pushTime,'yyyy-MM-dd HH:mm:ss')}"
onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss'})"
style="background-color: #fff;" readonly="readonly"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">推送IP</label>
<div class="col-sm-8">
<input type="hidden" id="pushIp" name="pushIp" th:value="${order.pushIp}"/>
<div id="contentEditorpushIp">
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">商户id</label>
<div class="col-sm-8">
<input id="mchtId" name="mchtId"
th:value="${order.mchtId}"
class="form-control"
type="number">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">QR编号</label>
<div class="col-sm-8">
<input id="sn" name="sn"
th:value="${order.sn}"
class="form-control"
type="text">
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-3">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div th:include="include::footer"></div>
<script type="text/javascript" src="/wangEditor/release/wangEditor.js"></script>
<script type="text/javascript" src="/js/appjs/test/order/edit.js">
</script>
</body>
</html>

View File

@ -0,0 +1,66 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="col-sm-12">
<div class="ibox">
<div class="ibox-body">
<div class="fixed-table-toolbar">
<div class="columns pull-left">
<button shiro:hasPermission="test:order:add" type="button"
class="btn btn-primary" onclick="add()">
<i class="fa fa-plus" aria-hidden="true"></i>添加
</button>
<button shiro:hasPermission="test:order:batchRemove" type="button"
class="btn btn-danger"
onclick="batchRemove()">
<i class="fa fa-trash" aria-hidden="true"></i>删除
</button>
</div>
<div class="columns pull-right">
<button class="btn btn-success" onclick="reLoad()">查询</button>
</div>
<form id="searchForm">
<div class="columns pull-right col-md-2">
<input id="id" name="id" type="text" class="form-control"
placeholder="主键">
</div>
</form>
</div>
<table id="exampleTable" data-mobile-responsive="true">
</table>
</div>
</div>
</div>
</div>
<!--shiro控制bootstraptable行内按钮看见性 -->
<div>
<script type="text/javascript">
var s_detail_h = 'hidden';
var s_edit_h = 'hidden';
var s_remove_h = 'hidden';
</script>
</div>
<div shiro:hasPermission="test:order:detail">
<script type="text/javascript">
s_detail_h = '';
</script>
</div>
<div shiro:hasPermission="test:order:edit">
<script type="text/javascript">
s_edit_h = '';
</script>
</div>
<div shiro:hasPermission="test:order:remove">
<script type="text/javascript">
var s_remove_h = '';
</script>
</div>
<div th:include="include :: footer"></div>
<script type="text/javascript" src="/js/appjs/test/order/order.js"></script>
</body>
</html>