移除所有的target
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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>
|
||||
BIN
Binary file not shown.
@@ -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() + "失败,请重新操作");
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
Binary file not shown.
@@ -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>
|
||||
Binary file not shown.
Binary file not shown.
@@ -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>
|
||||
Binary file not shown.
@@ -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>
|
||||
BIN
Binary file not shown.
@@ -1,7 +0,0 @@
|
||||
##dao层模板
|
||||
|
||||
/**
|
||||
* @author yan.y
|
||||
*/
|
||||
public interface #{entity}Repository extends BaseRepository<#{entity}, Long> {
|
||||
}
|
||||
BIN
Binary file not shown.
@@ -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;
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -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);
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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;
|
||||
}
|
||||
@@ -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"></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>
|
||||
Reference in New Issue
Block a user