移除所有的target

This commit is contained in:
易焱
2019-07-31 01:55:07 +08:00
parent 510b40573a
commit 8c7b429e32
797 changed files with 1 additions and 37749 deletions
@@ -1,29 +0,0 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})">
</head>
<body>
<div class="layui-form timo-compile">
<form th:action="@{#{baseUrl}/add}">
<input type="hidden" name="id" th:if="${#{var}}" th:value="${#{var}.id}"/>
<div jsoup="field" class="layui-form-item">
<label class="layui-form-label">#{field.title}</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="#{field.name}" placeholder="请输入#{field.title}" th:value="${#{var}?.#{field.name}}">
</div>
</div>
<div jsoup="remark" class="layui-form-item layui-form-text">
<label class="layui-form-label">备注</label>
<div class="layui-input-block">
<textarea placeholder="请输入内容" class="layui-textarea" name="remark">[[${#{var}?.remark}]]</textarea>
</div>
</div>
<div class="layui-form-item timo-finally">
<button class="layui-btn ajax-submit"><i class="fa fa-check-circle"></i> 保存</button>
<button class="layui-btn btn-secondary close-popup"><i class="fa fa-times-circle"></i> 关闭</button>
</div>
</form>
</div>
<script th:replace="/common/template :: script"></script>
</body>
</html>
@@ -1,110 +0,0 @@
## 控制器模板
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.ExampleMatcher;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author yan.y
*/
@Controller
@RequestMapping("#{requestMapping}")
public class #{entity}Controller {
@Autowired
private #{entity}Service #{name}Service;
/**
*
*/
@GetMapping("/index")
@RequiresPermissions("#{permissions}:index")
public String index(Model model, #{entity} #{name}){
//
ExampleMatcher matcher = ExampleMatcher.matching();
//
Example<#{entity}> example = Example.of(#{name}, matcher);
Page<#{entity}> list = #{name}Service.getPageList(example);
//
model.addAttribute("list", list.getContent());
model.addAttribute("page", list);
return "#{requestMapping}/index";
}
/**
*
*/
@GetMapping("/add")
@RequiresPermissions("#{permissions}:add")
public String toAdd(){
return "#{requestMapping}/add";
}
/**
*
*/
@GetMapping("/edit/{id}")
@RequiresPermissions("#{permissions}:edit")
public String toEdit(@PathVariable("id") #{entity} #{name}, Model model){
model.addAttribute("#{name}", #{name});
return "#{requestMapping}/add";
}
/**
* /
* @param valid
*/
@PostMapping({"/add","/edit"})
@RequiresPermissions({"#{permissions}:add","#{permissions}:edit"})
@ResponseBody
public ResultVo save(@Validated #{entity}Valid valid, #{entity} #{name}){
//
if(#{name}.getId() != null){
#{entity} be#{entity} = #{name}Service.getById(#{name}.getId());
EntityBeanUtil.copyProperties(be#{entity}, #{name});
}
//
#{name}Service.save(#{name});
return ResultVoUtil.SAVE_SUCCESS;
}
/**
*
*/
@GetMapping("/detail/{id}")
@RequiresPermissions("#{permissions}:detail")
public String toDetail(@PathVariable("id") #{entity} #{name}, Model model){
model.addAttribute("#{name}",#{name});
return "#{requestMapping}/detail";
}
/**
*
*/
@RequestMapping("/status/{param}")
@RequiresPermissions("#{permissions}:status")
@ResponseBody
public ResultVo status(
@PathVariable("param") String param,
@RequestParam(value = "ids", required = false) List<Long> ids){
//
StatusEnum statusEnum = StatusUtil.getStatusEnum(param);
if (#{name}Service.updateStatus(statusEnum, ids)) {
return ResultVoUtil.success(statusEnum.getMessage() + "成功");
} else {
return ResultVoUtil.error(statusEnum.getMessage() + "失败,请重新操作");
}
}
}
@@ -1,18 +0,0 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})">
</head>
<body>
<div class="timo-detail-page">
<div class="timo-detail-title">基本信息</div>
<table class="layui-table timo-detail-table">
<colgroup>
<col width="100px"><col>
<col width="100px"><col>
</colgroup>
<tbody jsoup="detail"></tbody>
</table>
</div>
<script th:replace="/common/template :: script"></script>
</body>
</html>
@@ -1,77 +0,0 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
>
<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})">
</head>
<body class="timo-layout-page">
<div class="layui-card">
<div class="layui-card-header timo-card-header">
<span><i class="fa fa-bars"></i> #{title}管理</span>
<i class="layui-icon layui-icon-refresh refresh-btn"></i>
</div>
<div class="layui-card-body">
<div class="layui-row timo-card-screen">
<div class="pull-left layui-form-pane timo-search-box">
<div class="layui-inline">
<label class="layui-form-label">状态</label>
<div class="layui-input-block timo-search-status">
<select class="timo-search-select" name="status" mo:dict="SEARCH_STATUS" mo-selected="${param.status}"></select>
</div>
</div>
<div jsoup="search" class="layui-inline">
<label class="layui-form-label">#{search.title}</label>
<div class="layui-input-block">
<input type="text" name="#{search.name}" th:value="${param.#{search.name}}" placeholder="请输入#{search.title}" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<button class="layui-btn timo-search-btn">
<i class="fa fa-search"></i>
</button>
</div>
</div>
<div class="pull-right screen-btn-group">
<button jsoup="add" class="layui-btn open-popup" data-title="添加#{title}" th:attr="data-url=@{#{baseUrl}/add}" data-size="auto">
<i class="fa fa-plus"></i> 添加</button>
<div class="btn-group">
<button class="layui-btn">操作<span class="caret"></span></button>
<dl class="layui-nav-child layui-anim layui-anim-upbit">
<dd><a class="ajax-status" th:href="@{#{baseUrl}/status/ok}">启用</a></dd>
<dd><a class="ajax-status" th:href="@{#{baseUrl}/status/freezed}">冻结</a></dd>
<dd><a class="ajax-status" th:href="@{#{baseUrl}/status/delete}">删除</a></dd>
</dl>
</div>
</div>
</div>
<div class="timo-table-wrap">
<table class="layui-table timo-table">
<thead>
<tr>
<th class="timo-table-checkbox">
<label class="timo-checkbox"><input type="checkbox">
<i class="layui-icon layui-icon-ok"></i></label>
</th>
<th jsoup="table-th">表格标题</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr th:each="item:${list}">
<td><label class="timo-checkbox"><input type="checkbox" th:value="${item.id}">
<i class="layui-icon layui-icon-ok"></i></label></td>
<td jsoup="table-list"></td>
<td>
<a jsoup="edit" class="open-popup" data-title="编辑#{title}" th:attr="data-url=@{'#{baseUrl}/edit/'+${item.id}}" data-size="auto" href="#">编辑</a>
<a jsoup="detail" class="open-popup" data-title="详细信息" th:attr="data-url=@{'#{baseUrl}/detail/'+${item.id}}" data-size="800,600" href="#">详细</a>
<a class="ajax-get" data-msg="您是否确认删除" th:href="@{#{baseUrl}/status/delete(ids=${item.id})}">删除</a>
</td>
</tr>
</tbody>
</table>
</div>
<div th:replace="/common/fragment :: page"></div>
</div>
</div>
<script th:replace="/common/template :: script"></script>
</body>
</html>
@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.cwhelp.modules</groupId>
<artifactId>#{module}</artifactId>
<packaging>jar</packaging>
<name>#{module} module</name>
<parent>
<groupId>com.cwhelp</groupId>
<artifactId>modules</artifactId>
<version>2.0.1</version>
</parent>
<dependencies>
<dependency>
<groupId>com.cwhelp</groupId>
<artifactId>common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.cwhelp.modules</groupId>
<artifactId>system</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
@@ -1,7 +0,0 @@
##dao层模板
/**
* @author yan.y
*/
public interface #{entity}Repository extends BaseRepository<#{entity}, Long> {
}
@@ -1,60 +0,0 @@
##Service层模板
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @author yan.y
*/
@Service
public class #{entity}ServiceImpl implements #{entity}Service {
@Autowired
private #{entity}Repository #{name}Repository;
/**
* ID查询数据
* @param id ID
*/
@Override
@Transactional
public #{entity} getById(Long id) {
return #{name}Repository.findById(id).orElse(null);
}
/**
*
* @param example
* @return
*/
@Override
public Page<#{entity}> getPageList(Example<#{entity}> example) {
//
PageRequest page = PageSort.pageRequest();
return #{name}Repository.findAll(example, page);
}
/**
*
* @param #{name}
*/
@Override
public #{entity} save(#{entity} #{name}){
return #{name}Repository.save(#{name});
}
/**
* ()/
*/
@Override
@Transactional
public Boolean updateStatus(StatusEnum statusEnum, List<Long> idList){
return #{name}Repository.updateStatus(statusEnum.getCode(), idList) > 0;
}
}
@@ -1,38 +0,0 @@
##Service层模板
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @author yan.y
*/
public interface #{entity}Service {
/**
*
* @param example
* @return
*/
Page<#{entity}> getPageList(Example<#{entity}> example);
/**
* ID查询数据
* @param id ID
*/
#{entity} getById(Long id);
/**
*
* @param #{name}
*/
#{entity} save(#{entity} #{name});
/**
* ()/
*/
@Transactional
Boolean updateStatus(StatusEnum statusEnum, List<Long> idList);
}
@@ -1,111 +0,0 @@
@charset "UTF-8";
/*元素面板*/
.element-panel{
padding-top: 10px;
}
.element-panel .layui-form-item,
.element-panel .layui-form-item .layui-form-label,
.build-panel .build-item,
.build-panel .build-item .layui-form-label
{
cursor: move;
}
.drag-box{
position: absolute;
top: 100px;
left: 100px;
background-color: #FFFFFF;
box-shadow: 0 0 2px 1px rgba(0,0,0,.12);
opacity: 0.6;
}
.drag-box .layui-form-item{
margin-bottom: 10px;
}
/*构建面板*/
.build-card{
overflow: hidden;
}
.build-panel{
min-height: 500px;
overflow: hidden;
padding: 0;
margin: 15px;
}
.build-panel.active{
background-color: #fdffcd;
}
.build-panel #shell-item{
background-color: #eeeeee;
border: 1px dashed #c3c3c3;
}
.build-panel .build-item{
position: relative;
}
.build-panel .build-item:hover{
padding-top: 10px;
border: 1px dashed #ffc664;
}
.build-panel .build-item:hover .control{
display: block;
}
.build-panel .build-item .control{
position: absolute;
top: 0;
right: 6px;
font-size: 12px;
color: #009688;
display: none;
z-index: 999999;
}
.build-panel .build-item .control a{
color: #009688;
}
.build-item-edit .build-edit-box{
position: relative;
width: 500px;
height: 317px;
display: block;
}
.build-item-edit .build-edit{
display: block;
width: 460px;
height: 287px;
border: 10px solid #F8F8F8;
border-top-width: 0;
padding: 10px;
line-height: 20px;
overflow: auto;
background-color: #3F3F3F;
color: #eee;
font-size: 12px;
font-family: Courier New, serif;
}
.build-item-edit .build-edit-btn{
position: absolute;
z-index: 99999;
right: 34px;
bottom: 26px;
width: 58px;
height: 30px;
border: none;
color: #ffffff;
border-radius: 2px;
background-color: #009688;
cursor: pointer;
}
.build-item-edit .build-edit-btn:hover{
background-color: #007c6e;
}
.build-generate{
float: right;
margin-top: 6px;
margin-right: 2px;
color: #009688;
border-color: #009688;
}
.build-generate:hover{
background-color: #009688;
color: #FFFFFF;
}
@@ -1,238 +0,0 @@
@charset "UTF-8";
/*保存按钮*/
.entity-save{
float: right;
margin-top: 6px;
margin-right: 2px;
}
.entity-save .fa{
font-size: 13px!important;
margin-right: 3px;
}
/*基本信息*/
.layui-elem-field{
border-color: #cccccc;
}
.layui-elem-field .code-legend{
font-size: 16px;
font-weight: 500;
}
.layui-elem-field .layui-field-box{
position: relative;
padding-top: 20px;
}
.layui-form-item .layui-input-inline{
width: 240px;
}
.layui-form-item .layui-input-inline input{
border-color: #cccccc;
}
.layui-form-item .layui-input-inline input:focus{
border-color: #009688!important;
}
.layui-elem-field .layui-field-box .more-field{
border-top: 1px solid #cccccc;
padding-top: 20px;
display: none;
}
.layui-elem-field .layui-field-box .more-btn{
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 46px;
height: 14px;
line-height: 14px;
background-color: #cccccc;
border-radius: 0;
font-size: 16px;
}
.layui-elem-field .layui-field-box .more-btn .active{
transform: rotate(180deg)
}
/*面板*/
.panel{
margin: 15px 2px 5px;
border: 1px solid #cccccc;
}
.panel-header{
color: #333;
height: 42px;
line-height: 42px;
padding: 0 15px;
overflow: hidden;
border-bottom: 1px solid #cccccc;
}
.panel-header div{
float: left;
}
.panel-header .title{
font-weight: 600;
}
.panel-header .info{
margin-left: 80px;
}
.panel-header .info i{
display: inline-block;
width: 12px;
height: 12px;
background-color: #1ab394;
margin-left: 12px;
margin-right: 4px;
margin-bottom: -1px;
}
.panel-header .info i.lose{
background-color: #e7e9ec;
}
.panel-header .path,
.panel-header .entity{
float: right;
}
.panel-header .entity{
display: none;
}
/*模块面板*/
.panel-body-float{
overflow: hidden;
padding: 15px 0 0 15px;
}
.float-label{
float: left;
font-size: 14px;
padding:4px 12px;
margin-right: 15px;
margin-bottom: 15px;
border-radius: 12px;
border: 1px solid #cbced3;
background-color: #e7e9ec;
cursor: pointer;
}
.float-label.active{
color: #ffffff;
border: 1px solid #209684;
background-color: #1ab394;
}
/*实体类面板*/
.panel-header .control{
margin-left: 110px;
}
.panel-header .control button{
margin: 0;
border-color: #ffffff;
}
.panel-header .control button .fa{
margin-right: 6px;
}
.panel-header .control button.field-add .fa{
color: #228b22;
}
.panel-header .control button.field-del .fa{
color: #ff4200;
}
.panel-header .control button.field-up .fa,
.panel-header .control button.field-down .fa{
color: #005cff;
}
.panel-header .control button:hover{
border-color: #009688;
}
.panel-body-entity .layui-table{
margin: 0;
}
.panel-body-entity .layui-table tr:hover,
.panel-body-entity .layui-table tr:hover input{
background-color: #e5f3ff;
}
.panel-body-entity .layui-table th{
background-color: #ffffff;
border: 1px solid #cccccc;
}
.panel-body-entity .layui-table td{
padding: 0;
border-color: #cccccc;
}
.panel-body-entity .layui-table th,
.panel-body-entity .layui-table td{
border-top: none;
border-left: none;
font-weight: bold;
}
.panel-body-entity .layui-table th:last-child,
.panel-body-entity .layui-table td:last-child{
border-right: none;
}
.panel-body-entity .layui-table tr:last-child td{
border-bottom: none;
}
.panel-body-entity .layui-table td input{
width: 100%;
height: 36px;
border: none;
text-indent: 15px;
transition: all .3s;
-webkit-transition: all .3s;
}
.panel-body-entity .layui-table td input:focus{
background-color: #FFFFFF;
}
.panel-body-entity .layui-table td .xm-input.xm-select{
border: none;
padding-left: 14px;
}
.panel-body-entity .layui-table .entity-number{
padding-left: 15px;
cursor: pointer;
}
.panel-body-entity .layui-table td.layui-form input,
.panel-body-entity .layui-table td.entity-verify input{
text-indent: 5px;
}
.panel-body-entity .layui-table .entity-name input,
.panel-body-entity .layui-table .entity-title input{
color: #228b22;
}
.panel-body-entity .layui-table .entity-type input{
color: #0607ff;
}
.panel-body-entity .layui-table .entity-query input{
color: #ff9400;
}
.panel-body-entity .layui-table .entity-show{
padding-left: 15px;
}
.panel-body-entity .layui-table .entity-show .layui-form-switch{
margin-top: initial;
}
/*保存页面详细信息*/
.save-detail {
margin: 15px;
}
.save-detail .item{
border: 1px solid #cccccc;
margin-bottom: 12px;
line-height: 24px;
text-indent: 8px;
}
.save-detail .title{
font-weight: bold;
}
.save-detail .info-s{
font-weight: bold;
color: #5FB878;
}
.save-detail .info-e{
font-weight: bold;
color: #FFB800;
}
.save-detail .path{
font-size: 10px;
line-height: 15px;
height: 14px;
color: #4e4e4e;
border-top: 1px solid #cccccc;
}
-172
View File
@@ -1,172 +0,0 @@
layui.use(['element', 'laydate', 'form'], function () {
var $ = layui.jquery;
var form = layui.form;
var laydate = layui.laydate;
var build = $(".build-panel");
//初始化laydate实例
laydate.render({
elem: '#laydate'
});
// 禁止选择网页文本
$(document).on('selectstart', '.layui-card', function(){
return false;
});
// 移动操作
var downPosi, target = null, dragDom = null, timer = null;
var areaPosi;
$(document).on("mousedown", ".layui-form-item", function (e) {
$this = $(this);
timer = setTimeout(function () {
downPosi = {'left': e.clientX - $this.offset().left,
'top': e.clientY - $this.offset().top + 10};
areaPosi = {'ltX': build.offset().left, 'ltY': build.offset().top,
'rbX': build.offset().left + build.width(),
'rbY': build.offset().top + build.height()};
target = $this;
}, 200);
});
$(document).on("mousemove", function (e) {
if(dragDom == null && target != null){
dragDom = $("<div class='layui-form timo-compile element-panel'></div>");
dragDom.append(target.clone());
dragDom.addClass("drag-box");
dragDom.css("width", target.width());
$("body").append(dragDom);
var buildItem = target.parent('.build-item');
if(buildItem.length > 0){
buildItem.remove();
}
}
if(dragDom != null){
dragDom.css("left", e.clientX - downPosi.left);
dragDom.css("top", e.clientY - downPosi.top);
}
if(dragDom != null){
if(e.clientX > areaPosi.ltX && e.clientY > areaPosi.ltY
&& e.clientX < areaPosi.rbX && e.clientY < areaPosi.rbY){
build.addClass("active");
buildItemPosi(e.clientY);
}else{
build.removeClass("active");
shellItem.remove();
}
}
});
$(document).on("mouseup", function (e) {
if(dragDom != null){
if(build.hasClass("active")){
buildAdd(dragDom);
}
dragDom.remove();
dragDom = null;
target = null;
build.removeClass("active");
shellItem.remove();
}
if(timer != null){
clearTimeout(timer);
timer = null;
}
});
// 构建项位置
var shellItem = $("<div id='shell-item'></div>");
var buildItemPosi = function(clientY){
build.children('.build-item').each(function(key, val){
var $this = $(val);
var ty = $this.offset().top;
var by = $this.offset().top + $this.height();
if(clientY > ty && clientY < by ){
if(clientY < (ty + by) / 2){
$this.before(shellItem);
}else{
$this.after(shellItem);
}
}
});
shellItem.css('height', dragDom.height());
if($('#shell-item').length == 0){
build.append(shellItem);
}
};
// 加入构建面板
var buildAdd = function(dragDom){
var elem = dragDom.children(".layui-form-item").clone();
elem.children('div').children('div').remove();
elem.removeAttr('style');
elem.removeClass('drag-box');
var item = $("<div class='build-item'>" +
"<div class='control'><a class='edit'>编辑HTML</a> | " +
"<a class='remove'>删除</a></div>" +
"</div>");
shellItem.after(item.append(elem));
form.render();
};
// 编辑构建项
var buildItem, index;
build.on('click', '.edit', function(){
buildItem = $(this).parents('.build-item');
var elem = buildItem.children('.layui-form-item').clone();
elem.children('div').children('div').remove();
elem.find('.layui-upload-file').remove();
var box = $("<div class='build-edit-box'></div>");
var edit = $("<textarea class='build-edit'></textarea>").text(elem.prop('outerHTML'));
box.append(edit).append("<button class='build-edit-btn'>更新</button></div>");
index = layer.open({
title: '编辑HTML',
type: 1,
skin: 'build-item-edit', //样式类名
shadeClose: true, //开启遮罩关闭
area: ['500px', '360px'],
content: box.prop('outerHTML')
});
});
// 更新HTML
$(document).on('click', '.build-edit-btn', function(){
var val = $(this).parent().children('textarea').val();
buildItem.children('.layui-form-item').remove();
buildItem.append($(val));
form.render();
layer.close(index);
});
// 删除构建项
build.on('click', '.remove', function(){
$(this).parents('.build-item').remove();
});
// 生成代码
$(document).on('click', '.build-generate', function(){
var genHtml = '';
build.find(".layui-form-item").each(function (key, val) {
var item = $(val).clone();
item.children('div').children('div').remove();
item.find('.layui-upload-file').remove();
genHtml += item.prop('outerHTML') + "\n";
});
var box = $("<div class='build-edit-box'></div>");
var edit = $("<textarea class='build-edit'></textarea>").text(genHtml);
box.append(edit);
index = layer.open({
title: '复制HTML代码',
type: 1,
skin: 'build-item-edit', //样式类名
shadeClose: true, //开启遮罩关闭
area: ['500px', '360px'],
content: box.prop('outerHTML')
});
$('.build-edit').focus().select();
});
});
@@ -1,336 +0,0 @@
layui.use(['element', 'form', 'layer', 'formSelects'], function () {
var $ = layui.jquery;
var form = layui.form;
var layer = layui.layer;
var formSelects = layui.formSelects;
// 定义Basic基本信息类
var basic = {
projectPath: '',
packagePath: '',
author: '',
genTitle: '',
genModule: '',
genPMenu: '',
tablePrefix: '',
tableName: '',
tableEntity: '',
requestMapping: '',
moduleType: ''
};
// 监听表单数据变动
$('#basic').on('input propertychange', function(e) {
var $this = $(e.target);
var name = $this.attr("name");
basic[name] = $this.val();
if(name === "tableName"){
if($this.val().length > 0){
$(".panel-header .entity").css("display", "block");
}else{
$(".panel-header .entity").css("display", "none");
}
}
});
// 数据监听Basic数据变动
var defaults = {};
Object.defineProperty(basic, "packagePath", {
get: function () { return defaults.packagePath},
set: function(value) {
$(".bindPackagePath").text(value);
defaults.packagePath = value;
}
});
Object.defineProperty(basic, "genModule", {
get: function () { return defaults.genModule},
set: function(value) {
$(".bindGenModule").text(value);
defaults.genModule = value;
updateRequestMapping();
}
});
Object.defineProperty(basic, "tablePrefix", {
get: function () { return defaults.tablePrefix},
set: function(value) {
$(".bindTablePrefix").text(value);
defaults.tablePrefix = value;
}
});
Object.defineProperty(basic, "tableName", {
get: function () { return defaults.tableName},
set: function(value) {
$(".bindTableName").text(value);
defaults.tableName = value;
var split = value.split("_"), newValue = '';
split.forEach(function (val) {
newValue += val.substring(0,1).toUpperCase()+val.substring(1);
});
basic.tableEntity = newValue;
var $tableEntity = $(".tableEntity");
var $bindTableEntity = $(".bindTableEntity");
$tableEntity.val(newValue);
$bindTableEntity.text(newValue);
}
});
Object.defineProperty(basic, "tableEntity", {
get: function () { return defaults.tableEntity},
set: function(value) {
$(".bindTableEntity").text(value);
defaults.tableEntity = value;
updateRequestMapping();
}
});
// 初始化basic数据
$('#basic input').each(function (key, val) {
var name = $(val).attr("name");
if(name !== undefined){
basic[name] = $(val).val();
}
});
// 更多按钮
$('.more-btn').on("click", function (e) {
e.preventDefault();
$(".more-field").slideToggle();
$(this).children(".fa").toggleClass("active");
});
// 访问地址变动
function updateRequestMapping() {
var module = "/" + basic.genModule.replace(new RegExp('\:', "g"), '/');
var entity = (basic.tableEntity + "");
entity = entity.substring(0,1).toLowerCase()+entity.substring(1);
$("input[name='requestMapping']").val(module + "/" + entity);
}
/* 实体模型操作 */
var entity = $("#entity");
var field = null;
// 选中字段
entity.on("click", ".entity-number", function () {
if(field !== null){
$(field).css("background-color", "#FFFFFF");
$(field).css("color", "#666666");
}
if(field !== this){
$(this).css("background-color", "#5FB878");
$(this).css("color", "#FFFFFF");
field = this;
}else{
field = null;
}
});
// 添加字段
$(".field-add").on("click", function () {
var element = entity.children("tr:last-child").clone();
element.find("input, select").val("");
element.find("[name='type']").val("1");
var random = Math.random()*10000;
element.find("[xm-select]").attr("xm-select", random);
if(field == null){
entity.append(element);
}else {
$(field).parent().after(element);
}
element.children(".entity-number").click();
form.render();
formSelects.render(random);
resetNumber();
});
// 删除字段
$(".field-del").on("click", function () {
if(field != null){
$(field).parent().remove();
resetNumber();
}
});
// 上移字段
$(".field-up").on("click", function () {
if(field != null){
var parent = $(field).parent();
if(parent.prev().length === 1){
parent.insertBefore(parent.prev());
resetNumber();
}
}
});
// 下移字段
$(".field-down").on("click", function () {
if(field != null){
var parent = $(field).parent();
if(parent.next().length === 1){
parent.insertAfter(parent.next());
resetNumber();
}
}
});
// 重置字段编号
var resetNumber = function(){
entity.children().each(function (key, val) {
$(val).children(".entity-number").text(key + 1);
});
};
// 模块悬浮标签
$(".float-label").on("click", function(){
$(this).toggleClass("active");
});
// 提取实体类数据
var getEntity = function(){
var fieldList = [];
entity.children().each(function (key, trNode) {
var field = {};
field.name = $(trNode).find("[name='name']").val();
field.title = $(trNode).find("[name='title']").val();
field.type = $(trNode).find("[name='type']").val();
field.query = $(trNode).find("[name='query']").val();
field.show = $(trNode).find("[name='show']").is(':checked');
var xmId = $(trNode).find(".entity-verify select").attr("xm-select");
field.verify = formSelects.value(xmId, 'val');
fieldList[key] = field;
});
return fieldList;
};
// 认证基本信息
var verifyBasic = function(){
var result = JSON.parse(JSON.stringify(basic));
$('#basic').find("input[name]").each(function (key, item) {
if($(item).val().replace(/(^\s*)|(\s*$)/g, "") === ""){
var title = $(item).parent().prev().text();
layer.msg(title + "不能为空!", {offset: '15px', time: 3000, icon: 2});
return result = false;
}
result[$(item).attr('name')] = $(item).val();
});
// 处理模板结构选项
result.moduleType = basic.moduleType = $("input[name='moduleType']:checked").val();
return result;
};
// 提取模板数据
var getTemplate = function(){
var template = {};
$("#float").children(".float-label").each(function (key, item) {
var name = $(item).data("name");
template[name] = $(item).hasClass("active");
});
return template;
};
// 保存按钮
$(".entity-save").on("click", function () {
// 检验处理基本数据
var basic = verifyBasic();
if(basic === false){
return false;
}
// 封装数据
var generate = {
basic: basic,
fields: getEntity(),
template: getTemplate()
};
// 处理模块分组
var split = basic.genModule.split(":");
if (split.length > 1 && split[1].length > 0) {
var newBasic = JSON.parse(JSON.stringify(basic));
newBasic.genModule = split[0];
newBasic.genGroup = split[1];
generate.basic = newBasic;
}
var url = $(this).data("url");
$.ajax({
type: "POST",
url: url,
contentType: "application/json; charset=utf-8",
data: JSON.stringify(generate),
dataType: "json",
success: function (result) {
if(result.code === 200){
genDetail(result.data);
basicHistory(basic);
}else{
layer.msg(result.msg, {offset: '15px', time: 3000, icon: 2});
}
},
error: function (message) {
layer.msg("保存失败!", {offset: '15px', time: 3000, icon: 2});
}
});
});
//生成文件信息详细页面
function genDetail(list){
var panel = '';
for(var p in list){
var path = list[p];
panel += "<div class='item'><span class='title'>" + p + "</span>";
if(path.indexOf("exist:") === 0){
panel += "<span class='info-e'><i class='fa fa-times-circle-o'></i> 生成失败,文件已存在</span>";
path = path.substring("exist:".length, path.length);
}else {
panel += "<span class='info-s'><i class='fa fa-check-circle-o'></i> 生成成功</span>";
}
panel += "<div class='path'>" + path + "</div>";
panel += "</div>";
}
layer.open({
type: 1,
title: '生成文件信息',
shadeClose: true,
skin: 'layui-layer-rim',
area: ['800px', '540px'],
content: "<div class='save-detail'>" + panel + "</div>"
});
}
//记录部分基本参数
var local = window.localStorage;
function basicHistory(basic){
if(window.localStorage){
local.setItem("packagePath", basic.packagePath);
local.setItem("author", basic.author);
local.setItem("genModule", basic.genModule);
local.setItem("tablePrefix", basic.tablePrefix);
local.setItem("moduleType", basic.moduleType);
}
}
//还原基本参数
if(local.getItem("packagePath")){
var packagePath = local.getItem("packagePath");
basic.packagePath = packagePath;
$("[name='packagePath']").val(packagePath);
}
if(local.getItem("author")){
var author = local.getItem("author");
basic.author = author;
$("[name='author']").val(author);
}
if(local.getItem("genModule")){
var genModule = local.getItem("genModule");
basic.genModule = genModule;
$("[name='genModule']").val(genModule);
}
if(local.getItem("tablePrefix")){
var tablePrefix = local.getItem("tablePrefix");
basic.tablePrefix = tablePrefix;
$("[name='tablePrefix']").val(tablePrefix);
}
if(local.getItem("moduleType")){
var moduleType = local.getItem("moduleType");
basic.moduleType = moduleType;
var index = parseInt(moduleType) - 1;
$("input[name='moduleType']:eq("+ index +")").attr('checked', 'true');
form.render('radio');
}
});
@@ -1,174 +0,0 @@
/* formSelects多选css */
select[xm-select]{display: none !important;}
.xm-select-parent * {margin: 0;padding: 0;font-family: "Helvetica Neue", Helvetica, "PingFang SC", , Tahoma, Arial, sans-serif; box-sizing: initial;}
.xm-select-parent {text-align: left;}
.xm-select-parent select {display: none;}
.xm-select-parent .xm-select-title {position: relative;min-height: 36px;}
.xm-select-parent .xm-input {cursor: pointer;border-radius: 2px;border-width: 1px;border-style: solid;border-color: #E6E6E6;display: block;width: 100%;box-sizing: border-box;background-color: #FFF;height: 36px;line-height: 1.3;padding-left: 10px;outline: 0}
.xm-select-parent .xm-select-sj {display: inline-block;width: 0;height: 0;border-style: dashed;border-color: transparent;overflow: hidden;position: absolute;right: 10px;top: 50%;margin-top: -3px;cursor: pointer;border-width: 6px;border-top-color: #C2C2C2;border-top-style: solid;transition: all .3s;-webkit-transition: all .3s}
.xm-select-parent .xm-form-selected .xm-select-sj {margin-top: -9px;transform: rotate(180deg)}
.xm-select-parent .xm-form-select dl {display: none;position: absolute;left: 0;top: 42px;padding: 5px 0;z-index: 999;min-width: 100%;border: 1px solid #d2d2d2;max-height: 300px;overflow-y: auto;background-color: #fff;border-radius: 2px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12);box-sizing: border-box;animation-fill-mode: both;-webkit-animation-name: layui-upbit;animation-name: layui-upbit;-webkit-animation-duration: .3s;animation-duration: .3s;-webkit-animation-fill-mode: both;animation-fill-mode: both}
@-webkit-keyframes layui-upbit {
from {-webkit-transform: translate3d(0, 30px, 0);opacity: .3}
to {-webkit-transform: translate3d(0, 0, 0);opacity: 1}
}
@keyframes layui-upbit {
from {transform: translate3d(0, 30px, 0);opacity: .3}
to {transform: translate3d(0, 0, 0);opacity: 1}
}
.xm-select-parent .xm-form-selected dl {display: block}
.xm-select-parent .xm-form-select dl dd,.xm-select-parent .xm-form-select dl dt {padding: 0 10px;line-height: 36px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis}
.xm-select-parent .xm-form-select dl dd {cursor: pointer;height: 36px;}
.xm-select-parent .xm-form-select dl dd:hover {background-color: #f2f2f2}
.xm-select-parent .xm-form-select dl dt {font-size: 12px;color: #999}
.layui-select-disabled .xm-dis-disabled {border-color: #eee!important}
.xm-select-parent .xm-form-select dl .xm-select-tips {padding-left: 10px!important;color: #999;font-size: 14px}
.xm-unselect {-moz-user-select: none;-webkit-user-select: none;-ms-user-select: none}
.xm-form-checkbox {position: relative;display: block;vertical-align: middle;cursor: pointer;font-size: 0;-webkit-transition: .1s linear;transition: .1s linear;box-sizing: border-box;height: auto!important;line-height: normal!important;border: none!important;margin-right: 0;padding-right: 0;background: 0 0;}
.xm-form-checkbox > i {color: #FFF; font-size: 16px; width: 16px; height: 16px; position: absolute; top: 9px; border: 1px solid #5FB878; border-radius: 3px; z-index: 2;}
.xm-form-checkbox:hover > i {border-color: #5FB878;}
.xm-form-checkbox > span{display: block;position: relative;padding: 0 15px 0 30px;height: 100%;font-size: 14px;border-radius: 2px 0 0 2px;background-color: #d2d2d2;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;background: 0 0;color: #666;line-height: 36px;}
.xm-select-parent dl{width: 100%;}
.xm-select-parent dl dd{position: relative;}
.xm-select-parent dl dd > i:not(.icon-sousuo){position: absolute; right: 10px; top: 0; color: #AAAAAA;}
.xm-select-parent dl dd.xm-select-this div i {border: none; color: #009688; font-size: 18px;}
.xm-select-parent dl dd.xm-select-this div i:after{content: '\e613';}
.xm-select-parent dl dd.xm-dis-disabled div i {border-color: #C2C2C2;}
.xm-select-parent dl dd.xm-dis-disabled.xm-select-this div i {color: #C2C2C2;}
.xm-select-radio div.xm-form-checkbox > i {border-radius: 20px;}
.xm-select-parent dl.xm-select-radio dd.xm-select-this div i:after{content: '\e62b';}
.xm-dis-disabled,.xm-dis-disabled:hover {cursor: not-allowed!important}
.xm-form-select dl dd.xm-dis-disabled {background-color: #fff!important}
.xm-form-select dl dd.xm-dis-disabled span {color: #C2C2C2}
.xm-form-select dl dd.xm-dis-disabled .xm-icon-yes {border-color: #C2C2C2}
.xm-select-parent {position: relative;-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none}
.xm-select-parent .xm-select {line-height: normal;height: auto;padding: 4px 10px 1px 10px;overflow: hidden;min-height: 36px;left: 0;z-index: 99;position: absolute;background: 0 0;padding-right: 20px}
.xm-select-parent .xm-select:hover {border-color: #C0C4CC}
.xm-select-parent .xm-select .xm-select-label {display: inline-block;margin: 0;vertical-align: middle}
.xm-select-parent .xm-select-title div.xm-select-label>span {position: relative;padding: 2px 5px;background-color: #009688;border-radius: 2px;color: #FFF;display: inline-block;line-height: 18px;height: 18px;margin: 2px 5px 2px 0;cursor: initial;user-select: none;font-size: 14px;padding-right: 25px;-webkit-user-select: none;}
.xm-select-parent .xm-select-title div.xm-select-label>span i {position: absolute; margin-left: 8px; font-size: 12px; cursor: pointer; line-height: 20px;}
.xm-select-parent .xm-select .xm-select-input {border: none;height: 28px;background-color: transparent;padding: 0;vertical-align: middle;display: inline-block;width: 50px}
.xm-select-parent .xm-select--suffix input {border: none}
.xm-form-selected .xm-select,.xm-form-selected .xm-select:hover {border-color: #009688!important}
.xm-select--suffix+div {position: absolute;top: 0;left: 0;bottom: 0;right: 0}
.xm-select-dis .xm-select--suffix+div {z-index: 100;cursor: no-drop!important;opacity: .2;background-color: #FFF;}
.xm-select-disabled,.xm-select-disabled:hover {color: #d2d2d2!important;cursor: not-allowed!important;background-color: #fff}
.xm-select-none {display: none;margin: 5px 0;text-align: center;}
.xm-select-none:hover {background-color: #FFF!important}
.xm-select-empty {display: block}
.xm-span-hide {display: none!important;}
.layui-form-pane .xm-select,.layui-form-pane .xm-select:hover {border: none!important;top: 0px}
.layui-form-pane .xm-select-title {border: 1px solid #e6e6e6!important}
.xm-select-hide {display: none !important;}
div[xm-hg] .xm-select-label{white-space: nowrap; overflow: hidden; position: absolute; right: 30px; left: 0; padding-left: 10px;}
/* 颜色相关 */
div[xm-select-skin] .xm-select-title div.xm-select-label>span {border: 1px solid #009688}
div[xm-select-skin] .xm-select-title div.xm-select-label>span i:hover {opacity: .8;filter: alpha(opacity=80);cursor: pointer}
div[xm-select-skin=default] .xm-select-title div.xm-select-label>span {background-color: #F0F2F5;color: #909399;border: 1px solid #F0F2F5}
div[xm-select-skin=default] .xm-select-title div.xm-select-label>span i {color: #C0C4CC}
div[xm-select-skin=default] .xm-select-title div.xm-select-label>span i:before {content: '\e60b'; font-size: 16px; margin-left: -3px;}
div[xm-select-skin=default] dl dd:not(.xm-dis-disabled) i {border-color: #5FB878}
div[xm-select-skin=default] dl dd.xm-select-this:not(.xm-dis-disabled) i {color: #5FB878}
div[xm-select-skin=default].xm-form-selected .xm-select,div[xm-select-skin=default].xm-form-selected .xm-select:hover {border-color: #C0C4CC!important}
div[xm-select-skin=primary] .xm-select-title div.xm-select-label>span {background-color: #009688;color: #FFF;border: 1px solid #009688}
div[xm-select-skin=primary] .xm-select-title div.xm-select-label>span i {background-color: #009688; color: #FFF}
div[xm-select-skin=primary] dl dd:not(.xm-dis-disabled) i {border-color: #009688}
div[xm-select-skin=primary] dl dd.xm-select-this:not(.xm-dis-disabled) i {color: #009688}
div[xm-select-skin=primary].xm-form-selected .xm-select,div[xm-select-skin=primary].xm-form-selected .xm-select:hover {border-color: #009688!important}
div[xm-select-skin=normal] .xm-select-title div.xm-select-label>span {background-color: #1E9FFF;color: #FFF;border: 1px solid #1E9FFF}
div[xm-select-skin=normal] .xm-select-title div.xm-select-label>span i {background-color: #1E9FFF;color: #FFF}
div[xm-select-skin=normal] dl dd:not(.xm-dis-disabled) i {border-color: #1E9FFF}
div[xm-select-skin=normal] dl dd.xm-select-this:not(.xm-dis-disabled) i {color: #1E9FFF}
div[xm-select-skin=normal].xm-form-selected .xm-select,div[xm-select-skin=normal].xm-form-selected .xm-select:hover {border-color: #1E9FFF!important}
div[xm-select-skin=warm] .xm-select-title div.xm-select-label>span {background-color: #FFB800;color: #FFF;border: 1px solid #FFB800}
div[xm-select-skin=warm] .xm-select-title div.xm-select-label>span i {background-color: #FFB800;color: #FFF}
div[xm-select-skin=warm] dl dd:not(.xm-dis-disabled) i {border-color: #FFB800}
div[xm-select-skin=warm] dl dd.xm-select-this:not(.xm-dis-disabled) i {color: #FFB800}
div[xm-select-skin=warm].xm-form-selected .xm-select,div[xm-select-skin=warm].xm-form-selected .xm-select:hover {border-color: #FFB800!important}
div[xm-select-skin=danger] .xm-select-title div.xm-select-label>span {background-color: #FF5722;color: #FFF;border: 1px solid #FF5722}
div[xm-select-skin=danger] .xm-select-title div.xm-select-label>span i {background-color: #FF5722;color: #FFF}
div[xm-select-skin=danger] dl dd:not(.xm-dis-disabled) i {border-color: #FF5722}
div[xm-select-skin=danger] dl dd.xm-select-this:not(.xm-dis-disabled) i {color: #FF5722}
div[xm-select-skin=danger].xm-form-selected .xm-select,div[xm-select-skin=danger].xm-form-selected .xm-select:hover {border-color: #FF5722!important}
/* 多选联动 */
.xm-select-parent .layui-form-danger+.xm-select-title .xm-select {border-color: #FF5722 !important;}
.xm-select-linkage li {padding: 10px 0px;cursor: pointer;}
.xm-select-linkage li span {padding-left: 20px;padding-right: 30px;display: inline-block;height: 20px;overflow: hidden;text-overflow: ellipsis;}
.xm-select-linkage li.xm-select-this span {border-left: 5px solid #009688;color: #009688;padding-left: 15px;}
.xm-select-linkage-group {position: absolute;left: 0;top: 0;right: 0;bottom: 0;overflow-x: hidden;overflow-y: auto;}
.xm-select-linkage-group li:hover {border-left: 1px solid #009688;}
.xm-select-linkage-group li:hover span {padding-left: 19px;}
.xm-select-linkage-group li.xm-select-this:hover span {padding-left: 15px;border-left-width: 4px;}
.xm-select-linkage-group:nth-child(4n+1){background-color: #EFEFEF; left: 0;}
.xm-select-linkage-group:nth-child(4n+1) li.xm-select-active{background-color: #F5F5F5;}
.xm-select-linkage-group:nth-child(4n+2){background-color: #F5F5F5; left: 100px;}
.xm-select-linkage-group:nth-child(4n+3) li.xm-select-active{background-color: #FAFAFA;}
.xm-select-linkage-group:nth-child(4n+3){background-color: #FAFAFA; left: 200px;}
.xm-select-linkage-group:nth-child(4n+3) li.xm-select-active{background-color: #FFFFFF;}
.xm-select-linkage-group:nth-child(4n+4){background-color: #FFFFFF; left: 300px;}
.xm-select-linkage-group:nth-child(4n+4) li.xm-select-active{background-color: #EFEFEF;}
.xm-select-linkage li{list-style: none;}
.xm-select-linkage-hide {display: none;}
.xm-select-linkage-show {display: block;}
div[xm-select-skin='default'] .xm-select-linkage li.xm-select-this span {border-left-color: #5FB878;color: #5FB878;}
div[xm-select-skin='default'] .xm-select-linkage-group li:hover {border-left-color: #5FB878;}
div[xm-select-skin='primary'] .xm-select-linkage li.xm-select-this span {border-left-color: #1E9FFF;color: #1E9FFF;}
div[xm-select-skin='primary'] .xm-select-linkage-group li:hover {border-left-color: #1E9FFF;}
div[xm-select-skin='normal'] .xm-select-linkage li.xm-select-this span {border-left-color: #1E9FFF;color: #1E9FFF;}
div[xm-select-skin='normal'] .xm-select-linkage-group li:hover {border-left-color: #1E9FFF;}
div[xm-select-skin='warm'] .xm-select-linkage li.xm-select-this span {border-left-color: #FFB800;color: #FFB800;}
div[xm-select-skin='warm'] .xm-select-linkage-group li:hover {border-left-color: #FFB800;}
div[xm-select-skin='danger'] .xm-select-linkage li.xm-select-this span {border-left-color: #FF5722;color: #FF5722;}
div[xm-select-skin='danger'] .xm-select-linkage-group li:hover {border-left-color: #FF5722;}
/* 快捷操作 */
.xm-select-tips[style]:hover{background-color: #FFF!important;}
.xm-select-parent dd > .xm-cz{position: absolute; top: 0px; right: 10px;}
.xm-select-parent dd > .xm-cz-group{margin-right: 30px; border-right: 2px solid #ddd; height: 16px; margin-top: 10px; line-height: 16px; overflow: hidden;}
.xm-select-parent dd > .xm-cz-group .xm-cz{display: inline-block; margin-right: 30px;}
.xm-select-parent dd > .xm-cz-group .xm-cz i{margin-right: 10px;}
.xm-select-parent dd > .xm-cz-group[show='name'] .xm-cz i{display: none;}
.xm-select-parent dd > .xm-cz-group[show='icon'] .xm-cz span{display: none;}
.xm-select-parent dd .xm-cz:hover{color: #009688;}
div[xm-select-skin='default'] dd .xm-cz:hover{color: #C0C4CC;}
div[xm-select-skin='primary'] dd .xm-cz:hover{color: #009688;}
div[xm-select-skin='normal'] dd .xm-cz:hover{color: #1E9FFF;}
div[xm-select-skin='warm'] dd .xm-cz:hover{color: #FFB800;}
div[xm-select-skin='danger'] dd .xm-cz:hover{color: #FF5722;}
/* 下拉里面的搜索 */
.xm-select-tips .xm-input{border: none; border-bottom: 1px solid #E6E6E6; padding-left: 27px;}
.xm-select-tips .icon-sousuo{position: absolute;}
.xm-select-tips.xm-dl-input{display: none;}
div[xm-select-search-type="1"] .xm-select-tips.xm-dl-input{display: block;}
div[xm-select-search-type="1"] .xm-select .xm-select-input{display: none !important;}
/* 阿里巴巴矢量图标库 */
@font-face {font-family: "xm-iconfont";
src: url('//at.alicdn.com/t/font_792691_qxv28s6g1l9.eot?t=1534240067831'); /* IE9*/
src: url('//at.alicdn.com/t/font_792691_qxv28s6g1l9.eot?t=1534240067831#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'),
url('//at.alicdn.com/t/font_792691_qxv28s6g1l9.ttf?t=1534240067831') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url('//at.alicdn.com/t/font_792691_qxv28s6g1l9.svg?t=1534240067831#iconfont') format('svg'); /* iOS 4.1- */
}
.xm-iconfont {font-family:"xm-iconfont" !important; font-size:16px; font-style:normal; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;}
.icon-quanxuan:before { content: "\e62c"; }
.icon-caidan:before { content: "\e610"; }
.icon-fanxuan:before { content: "\e837"; }
.icon-pifu:before { content: "\e668"; }
.icon-qingkong:before { content: "\e63e"; }
.icon-sousuo:before { content: "\e600"; }
.icon-danx:before { content: "\e62b"; }
.icon-duox:before { content: "\e613"; }
.icon-close:before { content: "\e601"; }
.icon-expand:before { content: "\e641"; }
File diff suppressed because one or more lines are too long
@@ -1,109 +0,0 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})">
<link rel="stylesheet" th:href="@{/css/build.css}">
</head>
<body class="timo-layout-page">
<div class="layui-row layui-col-space20">
<div class="layui-col-md5">
<div class="layui-card">
<div class="layui-card-header timo-card-header">
<span><i class="fa fa-bars"></i> 表单元素</span>
</div>
<div class="layui-card-body">
<blockquote class="layui-elem-quote layui-quote-nm">
将表单元素拖拽到构建面板中即可生成表单块
</blockquote>
<div class="layui-form timo-compile element-panel">
<div class="layui-form-item">
<label class="layui-form-label">输入框</label>
<div class="layui-input-inline">
<input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码框</label>
<div class="layui-input-inline">
<input type="password" name="password" placeholder="请输入密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">选择框</label>
<div class="layui-input-inline">
<select name="interest" lay-filter="aihao">
<option value=""></option>
<option value="0">写作</option>
<option value="1">阅读</option>
<option value="2">游戏</option>
<option value="3">音乐</option>
<option value="4">旅行</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上传图片</label>
<div class="layui-input-inline">
<button type="button" class="layui-btn upload-image" name="image[]"
th:attr="up-url=@{/upload/image}" up-field="path">
<i class="layui-icon">&#xe67c;</i>上传图片
</button>
</div>
<div class="upload-show"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">时间选择</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" id="laydate" placeholder="yyyy-MM-dd">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">复选框</label>
<div class="layui-input-block">
<input type="checkbox" name="like[write]" title="写作">
<input type="checkbox" name="like[read]" title="阅读" checked="">
<input type="checkbox" name="like[game]" title="游戏">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">开关</label>
<div class="layui-input-block">
<input type="checkbox" name="close" lay-skin="switch" lay-text="ON|OFF">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">单选框</label>
<div class="layui-input-block">
<input type="radio" name="sex" value="男" title="男" checked="">
<input type="radio" name="sex" value="女" title="女">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">文本域</label>
<div class="layui-input-block">
<textarea placeholder="请输入内容" class="layui-textarea" name="desc"></textarea>
</div>
</div>
<div class="layui-form-item timo-finally">
<button class="layui-btn ajax-submit"><i class="fa fa-check-circle"></i> 保存</button>
<button class="layui-btn btn-secondary close-popup"><i class="fa fa-times-circle"></i> 关闭</button>
</div>
</div>
</div>
</div>
</div>
<div class="layui-col-md7">
<div class="layui-card build-card">
<div class="layui-card-header timo-card-header">
<span><i class="fa fa-bars"></i> 构建面板</span>
<button class="layui-btn layui-btn-primary layui-btn-sm build-generate">生成HTML</button>
</div>
<div class="layui-card-body layui-form timo-compile build-panel"></div>
</div>
</div>
</div>
<script th:replace="/common/template :: script"></script>
<script type="text/javascript" th:src="@{/js/build.js}"></script>
</body>
</html>
@@ -1,191 +0,0 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})">
<link rel="stylesheet" th:href="@{/css/generate.code.css}">
<link rel="stylesheet" th:href="@{/lib/formSelects-v4/formSelects-v4.css}">
<link rel="stylesheet" th:href="@{/lib/zTree_v3/css/zTreeStyle/zTreeStyle.css}" type="text/css">
</head>
<body class="timo-layout-page">
<div class="layui-card">
<div class="layui-card-header timo-card-header">
<span><i class="fa fa-bars"></i> 代码生成</span>
<i class="layui-icon layui-icon-refresh refresh-btn" style="left:92px"></i>
<button class="layui-btn layui-btn-sm entity-save" th:attr="data-url=@{/dev/code/save}">
<i class="fa fa-floppy-o"></i>保存</button>
</div>
<div class="layui-card-body">
<fieldset id="basic" class="layui-elem-field layui-form">
<legend class="code-legend">基本信息</legend>
<div class="layui-field-box">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">项目路径</label>
<div class="layui-input-inline">
<input type="text" name="projectPath" th:value="${basic.projectPath}" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">项目包名</label>
<div class="layui-input-inline">
<input type="text" name="packagePath" th:value="${basic.packagePath}" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">作者名称</label>
<div class="layui-input-inline">
<input type="text" name="author" th:value="${basic.author}" autocomplete="off" class="layui-input">
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">父级菜单</label>
<div class="layui-input-inline">
<input class="layui-input select-tree" th:attr="data-url=@{/system/menu/list}" type="text" name="genPMenu" value="顶级菜单" data-value="0" placeholder="请选择父级菜单">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">模块名称</label>
<div class="layui-input-inline">
<input type="text" name="genModule" th:value="${basic.genModule}" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">业务名称</label>
<div class="layui-input-inline">
<input type="text" name="genTitle" autocomplete="off" class="layui-input">
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">表前缀</label>
<div class="layui-input-inline">
<input type="text" name="tablePrefix" th:value="${basic.tablePrefix}" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">表名称</label>
<div class="layui-input-inline">
<input type="text" name="tableName" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">实体类</label>
<div class="layui-input-inline">
<input type="text" name="tableEntity" autocomplete="off" class="layui-input tableEntity">
</div>
</div>
</div>
<div class="layui-inline">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">访问地址</label>
<div class="layui-input-inline">
<input type="text" name="requestMapping" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">模块结构</label>
<div class="layui-input-inline">
<input type="radio" name="moduleType" value="1" title="独立模块" checked="">
<input type="radio" name="moduleType" value="2" title="后台模块">
</div>
</div>
</div>
</div>
</div>
</fieldset>
<div class="panel">
<div class="panel-header">
<div class="title">实体类</div>
<div class="control">
<button class="field-add layui-btn layui-btn-primary layui-btn-xs">
<i class="fa fa-plus-circle"></i>添加
</button>
<button class="field-del layui-btn layui-btn-primary layui-btn-xs">
<i class="fa fa-minus-circle"></i>删除
</button>
<button class="field-up layui-btn layui-btn-primary layui-btn-xs">
<i class="fa fa-arrow-up"></i>向上
</button>
<button class="field-down layui-btn layui-btn-primary layui-btn-xs">
<i class="fa fa-arrow-down"></i>向下
</button>
</div>
<div class="entity"><span class="bindTableEntity"></span>(<span class="bindTablePrefix"></span><span class="bindTableName"></span>)</div>
</div>
<div class="panel-body panel-body-entity">
<table class="layui-table">
<thead>
<tr>
<th width="20">#</th>
<th width="100">字段名称</th>
<th width="100">字段标题</th>
<th width="100">数据类型</th>
<th width="100">查询(可选)</th>
<th width="100">列表显示</th>
<th>字段验证(可选)</th>
</tr>
</thead>
<tbody id="entity">
<tr th:each="item,key:${fieldList}">
<td class="entity-number" th:text="${key.index}+1"></td>
<td class="entity-name"><input type="text" name="name" th:value="${item.name}"/></td>
<td class="entity-title"><input type="text" name="title" th:value="${item.title}"/></td>
<td class="layui-form entity-type">
<select name="type" mo:list="${fieldType}" mo-selected="${item.type}" lay-verify="entity-type"></select>
</td>
<td class="layui-form entity-query">
<select name="query" mo:list="${fieldQuery}" mo-selected="${item.query}" mo-empty="" lay-verify="entity-type"></select>
</td>
<td class="layui-form entity-show">
<input name="show" type="checkbox" th:checked="${item.show}" lay-text="是|否" value="1" lay-skin="switch">
</td>
<td class="entity-verify">
<select name="verify" mo:list="${fieldVerify}" mo-selected="${item.verify}" th:attr="xm-select='entity-verify'+${item.name}"></select>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="panel">
<div class="panel-header">
<div class="title">模板信息</div>
<div class="info"><i></i>创建<i class="lose"></i>忽略</div>
<div class="path">模块路径:<span class="bindPackagePath"></span>.xxx.<span class="bindGenModule"></span></div>
</div>
<div id="float" class="panel-body panel-body-float">
<div class="float-label active" data-name="entity">实体类:<span class="bindTableEntity"></span></div>
<div class="float-label active" data-name="controller">控制器:<span class="bindTableEntity"></span>Controller</div>
<div class="float-label active" data-name="service">服务层:<span class="bindTableEntity"></span>Service</div>
<div class="float-label active" data-name="repository">dao层:<span class="bindTableEntity"></span>Repository</div>
<div class="float-label active" data-name="validator">认证类:<span class="bindTableEntity"></span>Valid</div>
<div class="float-label active" data-name="index">列表页面:<span class="bindTableEntity"></span>/index.html</div>
<div class="float-label active" data-name="add">添加页面:<span class="bindTableEntity"></span>/add.html</div>
<div class="float-label active" data-name="detail">详细页面:<span class="bindTableEntity"></span>/detail.html</div>
</div>
</div>
</div>
</div>
<script th:replace="/common/template :: script"></script>
<script type="text/javascript" th:src="@{/js/plugins/jquery-3.3.1.min.js}"></script>
<script type="text/javascript" th:src="@{/lib/zTree_v3/js/jquery.ztree.core.min.js}"></script>
<script type="text/javascript" th:src="@{/js/timoTree.js}"></script>
<script type="text/javascript">
// 树形菜单
$.fn.selectTree({
rootTree: '顶级菜单'
});
// 验证下拉选择器
layui.config({
base: '[[@{/lib/formSelects-v4/}]]'
}).extend({
formSelects: 'formSelects-v4.min'
});
</script>
<script type="text/javascript" th:src="@{/js/generate.code.js}"></script>
</body>
</html>