Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
RuoYi Vue
Commits
cb0a4b78
Commit
cb0a4b78
authored
Feb 24, 2020
by
RuoYi
Browse files
若依 2.1
parent
46a16952
Changes
61
Expand all
Hide whitespace changes
Inline
Side-by-side
ruoyi-ui/src/views/tool/build/IconsDialog.vue
0 → 100644
View file @
cb0a4b78
<
template
>
<div
class=
"icon-dialog"
>
<el-dialog
v-bind=
"$attrs"
width=
"980px"
:modal-append-to-body=
"false"
v-on=
"$listeners"
@
open=
"onOpen"
@
close=
"onClose"
>
<div
slot=
"title"
>
选择图标
<el-input
v-model=
"key"
size=
"mini"
:style=
"
{width: '260px'}"
placeholder="请输入图标名称"
prefix-icon="el-icon-search"
clearable
/>
</div>
<ul
class=
"icon-ul"
>
<li
v-for=
"icon in iconList"
:key=
"icon"
:class=
"active===icon?'active-item':''"
@
click=
"onSelect(icon)"
>
<i
:class=
"icon"
/>
<div>
{{
icon
}}
</div>
</li>
</ul>
</el-dialog>
</div>
</
template
>
<
script
>
import
iconList
from
'
@/utils/generator/icon.json
'
const
originList
=
iconList
.
map
(
name
=>
`el-icon-
${
name
}
`
)
export
default
{
inheritAttrs
:
false
,
props
:
[
'
current
'
],
data
()
{
return
{
iconList
:
originList
,
active
:
null
,
key
:
''
}
},
watch
:
{
key
(
val
)
{
if
(
val
)
{
this
.
iconList
=
originList
.
filter
(
name
=>
name
.
indexOf
(
val
)
>
-
1
)
}
else
{
this
.
iconList
=
originList
}
}
},
methods
:
{
onOpen
()
{
this
.
active
=
this
.
current
this
.
key
=
''
},
onClose
()
{},
onSelect
(
icon
)
{
this
.
active
=
icon
this
.
$emit
(
'
select
'
,
icon
)
this
.
$emit
(
'
update:visible
'
,
false
)
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.icon-ul
{
margin
:
0
;
padding
:
0
;
font-size
:
0
;
li
{
list-style-type
:
none
;
text-align
:
center
;
font-size
:
14px
;
display
:
inline-block
;
width
:
16
.66%
;
box-sizing
:
border-box
;
height
:
108px
;
padding
:
15px
6px
6px
6px
;
cursor
:
pointer
;
overflow
:
hidden
;
&
:hover
{
background
:
#f2f2f2
;
}
&
.active-item
{
background
:
#e1f3fb
;
color
:
#7a6df0
}
>
i
{
font-size
:
30px
;
line-height
:
50px
;
}
}
}
.icon-dialog
{
::v-deep
.el-dialog
{
border-radius
:
8px
;
margin-bottom
:
0
;
margin-top
:
4vh
!
important
;
display
:
flex
;
flex-direction
:
column
;
max-height
:
92vh
;
overflow
:
hidden
;
box-sizing
:
border-box
;
.el-dialog__header
{
padding-top
:
14px
;
}
.el-dialog__body
{
margin
:
0
20px
20px
20px
;
padding
:
0
;
overflow
:
auto
;
}
}
}
</
style
>
ruoyi-ui/src/views/tool/build/RightPanel.vue
0 → 100644
View file @
cb0a4b78
This diff is collapsed.
Click to expand it.
ruoyi-ui/src/views/tool/build/TreeNodeDialog.vue
0 → 100644
View file @
cb0a4b78
<
template
>
<div>
<el-dialog
v-bind=
"$attrs"
:close-on-click-modal=
"false"
:modal-append-to-body=
"false"
v-on=
"$listeners"
@
open=
"onOpen"
@
close=
"onClose"
>
<el-row
:gutter=
"0"
>
<el-form
ref=
"elForm"
:model=
"formData"
:rules=
"rules"
size=
"small"
label-width=
"100px"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"选项名"
prop=
"label"
>
<el-input
v-model=
"formData.label"
placeholder=
"请输入选项名"
clearable
/>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label=
"选项值"
prop=
"value"
>
<el-input
v-model=
"formData.value"
placeholder=
"请输入选项值"
clearable
>
<el-select
slot=
"append"
v-model=
"dataType"
:style=
"
{width: '100px'}"
>
<el-option
v-for=
"(item, index) in dataTypeOptions"
:key=
"index"
:label=
"item.label"
:value=
"item.value"
:disabled=
"item.disabled"
/>
</el-select>
</el-input>
</el-form-item>
</el-col>
</el-form>
</el-row>
<div
slot=
"footer"
>
<el-button
type=
"primary"
@
click=
"handelConfirm"
>
确定
</el-button>
<el-button
@
click=
"close"
>
取消
</el-button>
</div>
</el-dialog>
</div>
</
template
>
<
script
>
import
{
isNumberStr
}
from
'
@/utils/index
'
export
default
{
components
:
{},
inheritAttrs
:
false
,
props
:
[],
data
()
{
return
{
id
:
100
,
formData
:
{
label
:
undefined
,
value
:
undefined
},
rules
:
{
label
:
[
{
required
:
true
,
message
:
'
请输入选项名
'
,
trigger
:
'
blur
'
}
],
value
:
[
{
required
:
true
,
message
:
'
请输入选项值
'
,
trigger
:
'
blur
'
}
]
},
dataType
:
'
string
'
,
dataTypeOptions
:
[
{
label
:
'
字符串
'
,
value
:
'
string
'
},
{
label
:
'
数字
'
,
value
:
'
number
'
}
]
}
},
computed
:
{},
watch
:
{
// eslint-disable-next-line func-names
'
formData.value
'
:
function
(
val
)
{
this
.
dataType
=
isNumberStr
(
val
)
?
'
number
'
:
'
string
'
}
},
created
()
{},
mounted
()
{},
methods
:
{
onOpen
()
{
this
.
formData
=
{
label
:
undefined
,
value
:
undefined
}
},
onClose
()
{},
close
()
{
this
.
$emit
(
'
update:visible
'
,
false
)
},
handelConfirm
()
{
this
.
$refs
.
elForm
.
validate
(
valid
=>
{
if
(
!
valid
)
return
if
(
this
.
dataType
===
'
number
'
)
{
this
.
formData
.
value
=
parseFloat
(
this
.
formData
.
value
)
}
this
.
formData
.
id
=
this
.
id
++
this
.
$emit
(
'
commit
'
,
this
.
formData
)
this
.
close
()
})
}
}
}
</
script
>
ruoyi-ui/src/views/tool/build/index.vue
View file @
cb0a4b78
This diff is collapsed.
Click to expand it.
ruoyi-ui/src/views/tool/gen/genInfoForm.vue
View file @
cb0a4b78
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
<span
slot=
"label"
>
生成模板
</span>
<span
slot=
"label"
>
生成模板
</span>
<el-select
v-model=
"info.tplCategory"
>
<el-select
v-model=
"info.tplCategory"
>
<el-option
label=
"单表(增删改查)"
value=
"crud"
/>
<el-option
label=
"单表(增删改查)"
value=
"crud"
/>
<el-option
label=
"树表(增删改查)"
value=
"tree"
disabled
/>
<el-option
label=
"树表(增删改查)"
value=
"tree"
/>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
...
...
ruoyi/pom.xml
View file @
cb0a4b78
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<groupId>
com.ruoyi
</groupId>
<groupId>
com.ruoyi
</groupId>
<artifactId>
ruoyi
</artifactId>
<artifactId>
ruoyi
</artifactId>
<version>
2.
0
.0
</version>
<version>
2.
1
.0
</version>
<packaging>
jar
</packaging>
<packaging>
jar
</packaging>
<name>
ruoyi
</name>
<name>
ruoyi
</name>
...
@@ -43,14 +43,6 @@
...
@@ -43,14 +43,6 @@
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
<artifactId>
spring-boot-starter
</artifactId>
<!--
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-tomcat</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
-->
</dependency>
</dependency>
<!-- SpringBoot 测试 -->
<!-- SpringBoot 测试 -->
...
...
ruoyi/src/main/java/com/ruoyi/common/constant/GenConstants.java
View file @
cb0a4b78
...
@@ -48,7 +48,7 @@ public class GenConstants
...
@@ -48,7 +48,7 @@ public class GenConstants
public
static
final
String
[]
BASE_ENTITY
=
{
"createBy"
,
"createTime"
,
"updateBy"
,
"updateTime"
,
"remark"
};
public
static
final
String
[]
BASE_ENTITY
=
{
"createBy"
,
"createTime"
,
"updateBy"
,
"updateTime"
,
"remark"
};
/** Tree基类字段 */
/** Tree基类字段 */
public
static
final
String
[]
TREE_ENTITY
=
{
"parentName"
,
"parentId"
,
"orderNum"
,
"ancestors"
};
public
static
final
String
[]
TREE_ENTITY
=
{
"parentName"
,
"parentId"
,
"orderNum"
,
"ancestors"
,
"children"
};
/** 文本框 */
/** 文本框 */
public
static
final
String
HTML_INPUT
=
"input"
;
public
static
final
String
HTML_INPUT
=
"input"
;
...
...
ruoyi/src/main/java/com/ruoyi/common/utils/html/EscapeUtil.java
View file @
cb0a4b78
...
@@ -144,7 +144,7 @@ public class EscapeUtil
...
@@ -144,7 +144,7 @@ public class EscapeUtil
public
static
void
main
(
String
[]
args
)
public
static
void
main
(
String
[]
args
)
{
{
String
html
=
"
<script>alert(1);</script>
"
;
String
html
=
"
alert('11111');
"
;
System
.
out
.
println
(
EscapeUtil
.
clean
(
html
));
System
.
out
.
println
(
EscapeUtil
.
clean
(
html
));
System
.
out
.
println
(
EscapeUtil
.
escape
(
html
));
System
.
out
.
println
(
EscapeUtil
.
escape
(
html
));
System
.
out
.
println
(
EscapeUtil
.
unescape
(
html
));
System
.
out
.
println
(
EscapeUtil
.
unescape
(
html
));
...
...
ruoyi/src/main/java/com/ruoyi/framework/web/domain/TreeEntity.java
0 → 100644
View file @
cb0a4b78
package
com.ruoyi.framework.web.domain
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* Tree基类
*
* @author ruoyi
*/
public
class
TreeEntity
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/** 父菜单名称 */
private
String
parentName
;
/** 父菜单ID */
private
Long
parentId
;
/** 显示顺序 */
private
Integer
orderNum
;
/** 祖级列表 */
private
String
ancestors
;
/** 子部门 */
private
List
<?>
children
=
new
ArrayList
<>();
public
String
getParentName
()
{
return
parentName
;
}
public
void
setParentName
(
String
parentName
)
{
this
.
parentName
=
parentName
;
}
public
Long
getParentId
()
{
return
parentId
;
}
public
void
setParentId
(
Long
parentId
)
{
this
.
parentId
=
parentId
;
}
public
Integer
getOrderNum
()
{
return
orderNum
;
}
public
void
setOrderNum
(
Integer
orderNum
)
{
this
.
orderNum
=
orderNum
;
}
public
String
getAncestors
()
{
return
ancestors
;
}
public
void
setAncestors
(
String
ancestors
)
{
this
.
ancestors
=
ancestors
;
}
public
List
<?>
getChildren
()
{
return
children
;
}
public
void
setChildren
(
List
<?>
children
)
{
this
.
children
=
children
;
}
}
ruoyi/src/main/java/com/ruoyi/project/system/controller/SysDeptController.java
View file @
cb0a4b78
...
@@ -41,7 +41,7 @@ public class SysDeptController extends BaseController
...
@@ -41,7 +41,7 @@ public class SysDeptController extends BaseController
public
AjaxResult
list
(
SysDept
dept
)
public
AjaxResult
list
(
SysDept
dept
)
{
{
List
<
SysDept
>
depts
=
deptService
.
selectDeptList
(
dept
);
List
<
SysDept
>
depts
=
deptService
.
selectDeptList
(
dept
);
return
AjaxResult
.
success
(
dept
Service
.
buildDeptTree
(
depts
)
);
return
AjaxResult
.
success
(
dept
s
);
}
}
/**
/**
...
...
ruoyi/src/main/java/com/ruoyi/project/system/controller/SysMenuController.java
View file @
cb0a4b78
...
@@ -49,7 +49,7 @@ public class SysMenuController extends BaseController
...
@@ -49,7 +49,7 @@ public class SysMenuController extends BaseController
LoginUser
loginUser
=
tokenService
.
getLoginUser
(
ServletUtils
.
getRequest
());
LoginUser
loginUser
=
tokenService
.
getLoginUser
(
ServletUtils
.
getRequest
());
Long
userId
=
loginUser
.
getUser
().
getUserId
();
Long
userId
=
loginUser
.
getUser
().
getUserId
();
List
<
SysMenu
>
menus
=
menuService
.
selectMenuList
(
menu
,
userId
);
List
<
SysMenu
>
menus
=
menuService
.
selectMenuList
(
menu
,
userId
);
return
AjaxResult
.
success
(
menu
Service
.
buildMenuTree
(
menus
)
);
return
AjaxResult
.
success
(
menu
s
);
}
}
/**
/**
...
...
ruoyi/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java
View file @
cb0a4b78
...
@@ -37,7 +37,6 @@ import com.ruoyi.project.tool.gen.service.IGenTableService;
...
@@ -37,7 +37,6 @@ import com.ruoyi.project.tool.gen.service.IGenTableService;
@RequestMapping
(
"/tool/gen"
)
@RequestMapping
(
"/tool/gen"
)
public
class
GenController
extends
BaseController
public
class
GenController
extends
BaseController
{
{
@Autowired
@Autowired
private
IGenTableService
genTableService
;
private
IGenTableService
genTableService
;
...
...
ruoyi/src/main/java/com/ruoyi/project/tool/gen/domain/GenTable.java
View file @
cb0a4b78
...
@@ -3,6 +3,7 @@ package com.ruoyi.project.tool.gen.domain;
...
@@ -3,6 +3,7 @@ package com.ruoyi.project.tool.gen.domain;
import
java.util.List
;
import
java.util.List
;
import
javax.validation.Valid
;
import
javax.validation.Valid
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotBlank
;
import
org.apache.commons.lang3.ArrayUtils
;
import
com.ruoyi.common.constant.GenConstants
;
import
com.ruoyi.common.constant.GenConstants
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.framework.web.domain.BaseEntity
;
import
com.ruoyi.framework.web.domain.BaseEntity
;
...
@@ -262,7 +263,8 @@ public class GenTable extends BaseEntity
...
@@ -262,7 +263,8 @@ public class GenTable extends BaseEntity
{
{
if
(
isTree
(
tplCategory
))
if
(
isTree
(
tplCategory
))
{
{
StringUtils
.
equalsAnyIgnoreCase
(
javaField
,
GenConstants
.
TREE_ENTITY
);
return
StringUtils
.
equalsAnyIgnoreCase
(
javaField
,
ArrayUtils
.
addAll
(
GenConstants
.
TREE_ENTITY
,
GenConstants
.
BASE_ENTITY
));
}
}
return
StringUtils
.
equalsAnyIgnoreCase
(
javaField
,
GenConstants
.
BASE_ENTITY
);
return
StringUtils
.
equalsAnyIgnoreCase
(
javaField
,
GenConstants
.
BASE_ENTITY
);
}
}
...
...
ruoyi/src/main/java/com/ruoyi/project/tool/gen/util/VelocityUtils.java
View file @
cb0a4b78
...
@@ -95,7 +95,14 @@ public class VelocityUtils
...
@@ -95,7 +95,14 @@ public class VelocityUtils
templates
.
add
(
"vm/xml/mapper.xml.vm"
);
templates
.
add
(
"vm/xml/mapper.xml.vm"
);
templates
.
add
(
"vm/sql/sql.vm"
);
templates
.
add
(
"vm/sql/sql.vm"
);
templates
.
add
(
"vm/js/api.js.vm"
);
templates
.
add
(
"vm/js/api.js.vm"
);
templates
.
add
(
"vm/vue/index.vue.vm"
);
if
(
GenConstants
.
TPL_CRUD
.
equals
(
tplCategory
))
{
templates
.
add
(
"vm/vue/index.vue.vm"
);
}
else
if
(
GenConstants
.
TPL_TREE
.
equals
(
tplCategory
))
{
templates
.
add
(
"vm/vue/index-tree.vue.vm"
);
}
return
templates
;
return
templates
;
}
}
...
@@ -147,11 +154,15 @@ public class VelocityUtils
...
@@ -147,11 +154,15 @@ public class VelocityUtils
{
{
fileName
=
businessName
+
"Menu.sql"
;
fileName
=
businessName
+
"Menu.sql"
;
}
}
else
if
(
template
.
contains
(
"js.vm"
))
else
if
(
template
.
contains
(
"
api.
js.vm"
))
{
{
fileName
=
StringUtils
.
format
(
"{}/api/{}/{}.js"
,
vuePath
,
moduleName
,
businessName
);
fileName
=
StringUtils
.
format
(
"{}/api/{}/{}.js"
,
vuePath
,
moduleName
,
businessName
);
}
}
else
if
(
template
.
contains
(
"vue.vm"
))
else
if
(
template
.
contains
(
"index.vue.vm"
))
{
fileName
=
StringUtils
.
format
(
"{}/views/{}/{}/index.vue"
,
vuePath
,
moduleName
,
businessName
);
}
else
if
(
template
.
contains
(
"index-tree.vue.vm"
))
{
{
fileName
=
StringUtils
.
format
(
"{}/views/{}/{}/index.vue"
,
vuePath
,
moduleName
,
businessName
);
fileName
=
StringUtils
.
format
(
"{}/views/{}/{}/index.vue"
,
vuePath
,
moduleName
,
businessName
);
}
}
...
...
ruoyi/src/main/resources/application.yml
View file @
cb0a4b78
...
@@ -3,7 +3,7 @@ ruoyi:
...
@@ -3,7 +3,7 @@ ruoyi:
# 名称
# 名称
name
:
RuoYi
name
:
RuoYi
# 版本
# 版本
version
:
2.
0
.0
version
:
2.
1
.0
# 版权年份
# 版权年份
copyrightYear
:
2019
copyrightYear
:
2019
# 实例演示开关
# 实例演示开关
...
...
ruoyi/src/main/resources/mybatis/monitor/SysLogininforMapper.xml
View file @
cb0a4b78
...
@@ -40,6 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
...
@@ -40,6 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and date_format(login_time,'%y%m%d')
<
= date_format(#{endTime},'%y%m%d')
and date_format(login_time,'%y%m%d')
<
= date_format(#{endTime},'%y%m%d')
</if>
</if>
</where>
</where>
order by info_id desc
</select>
</select>
<delete
id=
"deleteLogininforByIds"
parameterType=
"Long"
>
<delete
id=
"deleteLogininforByIds"
parameterType=
"Long"
>
...
...
ruoyi/src/main/resources/mybatis/monitor/SysOperLogMapper.xml
View file @
cb0a4b78
...
@@ -25,7 +25,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
...
@@ -25,7 +25,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql
id=
"selectOperLogVo"
>
<sql
id=
"selectOperLogVo"
>
select oper_id, title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, oper_time
select oper_id, title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, oper_time
from sys_oper_log
from sys_oper_log
order by oper_id desc
</sql>
</sql>
<insert
id=
"insertOperlog"
parameterType=
"SysOperLog"
>
<insert
id=
"insertOperlog"
parameterType=
"SysOperLog"
>
...
...
ruoyi/src/main/resources/vm/java/controller.java.vm
View file @
cb0a4b78
...
@@ -18,7 +18,10 @@ import ${packageName}.service.I${ClassName}Service;
...
@@ -18,7 +18,10 @@ import ${packageName}.service.I${ClassName}Service;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.utils.poi.ExcelUtil;
#
if
($
table
.
crud
)
import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.framework.web.page.TableDataInfo;
#
elseif
($
table
.
tree
)
#
end
/**
/**
*
${
functionName
}
Controller
*
${
functionName
}
Controller
...
@@ -38,12 +41,20 @@ public class ${ClassName}Controller extends BaseController
...
@@ -38,12 +41,20 @@ public class ${ClassName}Controller extends BaseController
*/
*/
@PreAuthorize("@ss.hasPermi('
${
permissionPrefix
}
:list')")
@PreAuthorize("@ss.hasPermi('
${
permissionPrefix
}
:list')")
@GetMapping("/list")
@GetMapping("/list")
#
if
($
table
.
crud
)
public TableDataInfo list(
${
ClassName
}
${
className
}
)
public TableDataInfo list(
${
ClassName
}
${
className
}
)
{
{
startPage();
startPage();
List
<
${
ClassName
}
>
list =
${
className
}
Service.select
${
ClassName
}
List(
${
className
}
);
List
<
${
ClassName
}
>
list =
${
className
}
Service.select
${
ClassName
}
List(
${
className
}
);
return getDataTable(list);
return getDataTable(list);
}
}
#
elseif
($
table
.
tree
)
public AjaxResult list(
${
ClassName
}
${
className
}
)
{
List
<
${
ClassName
}
>
list =
${
className
}
Service.select
${
ClassName
}
List(
${
className
}
);
return AjaxResult.success(list);
}
#
end
/**
/**
* 导出
${
functionName
}
列表
* 导出
${
functionName
}
列表
...
...
ruoyi/src/main/resources/vm/java/domain.java.vm
View file @
cb0a4b78
...
@@ -3,7 +3,11 @@ package ${packageName}.domain;
...
@@ -3,7 +3,11 @@ package ${packageName}.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
#
if
($
table
.
crud
)
import com.ruoyi.framework.web.domain.BaseEntity;
import com.ruoyi.framework.web.domain.BaseEntity;
#
elseif
($
table
.
tree
)
import com.ruoyi.framework.web.domain.TreeEntity;
#
end
#
foreach
($
import
in
$
importList
)
#
foreach
($
import
in
$
importList
)
import
${
import
}
;
import
${
import
}
;
#
end
#
end
...
@@ -14,7 +18,11 @@ import ${import};
...
@@ -14,7 +18,11 @@ import ${import};
* @author
${
author
}
* @author
${
author
}
* @date
${
datetime
}
* @date
${
datetime
}
*/
*/
#
if
($
table
.
crud
)
#
set
($
Entity
=
"BaseEntity"
)
#
set
($
Entity
=
"BaseEntity"
)
#
elseif
($
table
.
tree
)
#
set
($
Entity
=
"TreeEntity"
)
#
end
public class
${
ClassName
}
extends
${
Entity
}
public class
${
ClassName
}
extends
${
Entity
}
{
{
private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 1L;
...
@@ -43,7 +51,7 @@ public class ${ClassName} extends ${Entity}
...
@@ -43,7 +51,7 @@ public class ${ClassName} extends ${Entity}
#
end
#
end
#
foreach
($
column
in
$
columns
)
#
foreach
($
column
in
$
columns
)
#
if
(
!
$
table
.
isSuperColumn
($
column
.
javaField
))
#
if
(
!
$
table
.
isSuperColumn
($
column
.
javaField
))
#
if
($
column
.
javaField
>
2
&&
$
column
.
javaField
.
substring
(
1
,
2
).
matches
(
"[A-Z]"
))
#
if
($
column
.
javaField
.
length
()
>
2
&&
$
column
.
javaField
.
substring
(
1
,
2
).
matches
(
"[A-Z]"
))
#
set
($
AttrName
=
$
column
.
javaField
)
#
set
($
AttrName
=
$
column
.
javaField
)
#
else
#
else
#
set
($
AttrName
=
$
column
.
javaField
.
substring
(
0
,
1
).
toUpperCase
()
+
${
column
.
javaField
.
substring
(
1
)})
#
set
($
AttrName
=
$
column
.
javaField
.
substring
(
0
,
1
).
toUpperCase
()
+
${
column
.
javaField
.
substring
(
1
)})
...
@@ -64,7 +72,7 @@ public class ${ClassName} extends ${Entity}
...
@@ -64,7 +72,7 @@ public class ${ClassName} extends ${Entity}
public String toString()
{
public String toString()
{
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
#
foreach
($
column
in
$
columns
)
#
foreach
($
column
in
$
columns
)
#
if
($
column
.
javaField
>
2
&&
$
column
.
javaField
.
substring
(
1
,
2
).
matches
(
"[A-Z]"
))
#
if
($
column
.
javaField
.
length
()
>
2
&&
$
column
.
javaField
.
substring
(
1
,
2
).
matches
(
"[A-Z]"
))
#
set
($
AttrName
=
$
column
.
javaField
)
#
set
($
AttrName
=
$
column
.
javaField
)
#
else
#
else
#
set
($
AttrName
=
$
column
.
javaField
.
substring
(
0
,
1
).
toUpperCase
()
+
${
column
.
javaField
.
substring
(
1
)})
#
set
($
AttrName
=
$
column
.
javaField
.
substring
(
0
,
1
).
toUpperCase
()
+
${
column
.
javaField
.
substring
(
1
)})
...
...
ruoyi/src/main/resources/vm/vue/index-tree.vue.vm
0 → 100644
View file @
cb0a4b78
<template>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
:inline=
"true"
label-width=
"68px"
>
#
foreach
($
column
in
$
columns
)
#
if
($
column
.
query
)
#
set
($
dictType
=
$
column
.
dictType
)
#
set
($
AttrName
=
$
column
.
javaField
.
substring
(
0
,
1
).
toUpperCase
()
+
${
column
.
javaField
.
substring
(
1
)})
#
set
($
parentheseIndex
=
$
column
.
columnComment
.
indexOf
(
"("
))
#
if
($
parentheseIndex
!=
-
1
)
#
set
($
comment
=
$
column
.
columnComment
.
substring
(
0
,
$
parentheseIndex
))
#
else
#
set
($
comment
=
$
column
.
columnComment
)
#
end
#
if
($
column
.
htmlType
==
"input"
)
<el-form-item
label=
"
${
comment
}
"
prop=
"
${
column
.
javaField
}
"
>
<el-input
v-model=
"queryParams.
${
column
.
javaField
}
"
placeholder=
"请输入
${
comment
}
"
clearable
size=
"small"
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
#
elseif
(($
column
.
htmlType
==
"select"
||
$
column
.
htmlType
==
"radio"
)
&&
""
!=
$
dictType
)
<el-form-item
label=
"
${
comment
}
"
prop=
"
${
column
.
javaField
}
"
>
<el-select
v-model=
"queryParams.
${
column
.
javaField
}
"
placeholder=
"请选择
${
comment
}
"
clearable
size=
"small"
>
<el-option
v-for=
"dict in
${
column
.
javaField
}
Options"
:key=
"dict.dictValue"
:label=
"dict.dictLabel"
:value=
"dict.dictValue"
/>
</el-select>
</el-form-item>
#
elseif
(($
column
.
htmlType
==
"select"
||
$
column
.
htmlType
==
"radio"
)
&&
$
dictType
)
<el-form-item
label=
"
${
comment
}
"
prop=
"
${
column
.
javaField
}
"
>
<el-select
v-model=
"queryParams.
${
column
.
javaField
}
"
placeholder=
"请选择
${
comment
}
"
clearable
size=
"small"
>
<el-option
label=
"请选择字典生成"
value=
""
/>
</el-select>
</el-form-item>
#
elseif
($
column
.
htmlType
==
"datetime"
)
<el-form-item
label=
"
${
comment
}
"
prop=
"
${
column
.
javaField
}
"
>
<el-date-picker
clearable
size=
"small"
style=
"width: 200px"
v-model=
"queryParams.
${
column
.
javaField
}
"
type=
"date"
value-format=
"yyyy-MM-dd"
placeholder=
"选择
${
comment
}
"
>
</el-date-picker>
</el-form-item>
#
end
#
end
#
end
<el-form-item>
<el-button
class=
"filter-item"
type=
"primary"
icon=
"el-icon-search"
size=
"mini"
@
click=
"handleQuery"
>
搜索
</el-button>
<el-button
class=
"filter-item"
type=
"primary"
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAdd"
v-hasPermi=
"['
${
moduleName
}
:
${
businessName
}
:add']"
>
新增
</el-button>
</el-form-item>
</el-form>
<el-table
v-loading=
"loading"
:data=
"
${
businessName
}
List"
row-key=
"
${
treeCode
}
"
default-expand-all
:tree-props=
"
{
children: 'children', hasChildren: 'hasChildren'}"
>
#
foreach
($
column
in
$
columns
)
#
set
($
javaField
=
$
column
.
javaField
)
#
set
($
parentheseIndex
=
$
column
.
columnComment
.
indexOf
(
"("
))
#
if
($
parentheseIndex
!=
-
1
)
#
set
($
comment
=
$
column
.
columnComment
.
substring
(
0
,
$
parentheseIndex
))
#
else
#
set
($
comment
=
$
column
.
columnComment
)
#
end
#
if
($
column
.
pk
)
#
elseif
($
column
.
list
&&
$
column
.
htmlType
==
"datetime"
)
<el-table-column
label=
"
${
comment
}
"
align=
"center"
prop=
"
${
javaField
}
"
width=
"180"
>
<template
slot-scope=
"scope"
>
<span>
{{
parseTime(scope.row.
${
javaField
}
) }}
</span>
</template>
</el-table-column>
#
elseif
($
column
.
list
&&
""
!=
$
column
.
dictType
)
<el-table-column
label=
"
${
comment
}
"
align=
"center"
prop=
"
${
javaField
}
"
:formatter=
"
${
javaField
}
Format"
/>
#
elseif
($
column
.
list
&&
""
!=
$
javaField
)
<el-table-column
label=
"
${
comment
}
"
align=
"center"
prop=
"
${
javaField
}
"
/>
#
end
#
end
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['
${
moduleName
}
:
${
businessName
}
:edit']"
>
修改
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.row)"
v-hasPermi=
"['
${
moduleName
}
:
${
businessName
}
:remove']"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 添加或修改
${
functionName
}
对话框 -->
<el-dialog
:title=
"title"
:visible.sync=
"open"
width=
"500px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
#
foreach
($
column
in
$
columns
)
#
set
($
field
=
$
column
.
javaField
)
#
if
($
column
.
insert
&&
!
$
column
.
pk
)
#
if
(($
column
.
usableColumn
)
||
(
!
$
column
.
superColumn
))
#
set
($
parentheseIndex
=
$
column
.
columnComment
.
indexOf
(
"("
))
#
if
($
parentheseIndex
!=
-
1
)
#
set
($
comment
=
$
column
.
columnComment
.
substring
(
0
,
$
parentheseIndex
))
#
else
#
set
($
comment
=
$
column
.
columnComment
)
#
end
#
set
($
dictType
=
$
column
.
dictType
)
#
if
(
""
!=
$
treeParentCode
&&
$
column
.
javaField
==
$
treeParentCode
)
<el-form-item
label=
"
${
comment
}
"
prop=
"
${
treeParentCode
}
"
>
<treeselect
v-model=
"form.
${
treeParentCode
}
"
:options=
"
${
businessName
}
Options"
:normalizer=
"normalizer"
placeholder=
"请选择
${
comment
}
"
/>
</el-form-item>
#
elseif
($
column
.
htmlType
==
"input"
)
<el-form-item
label=
"
${
comment
}
"
prop=
"
${
field
}
"
>
<el-input
v-model=
"form.
${
field
}
"
placeholder=
"请输入
${
comment
}
"
/>
</el-form-item>
#
elseif
($
column
.
htmlType
==
"select"
&&
""
!=
$
dictType
)
<el-form-item
label=
"
${
comment
}
"
>
<el-select
v-model=
"form.
${
field
}
"
placeholder=
"请选择
${
comment
}
"
>
<el-option
v-for=
"dict in
${
field
}
Options"
:key=
"dict.dictValue"
:label=
"dict.dictLabel"
:value=
"dict.dictValue"
></el-option>
</el-select>
</el-form-item>
#
elseif
($
column
.
htmlType
==
"select"
&&
$
dictType
)
<el-form-item
label=
"
${
comment
}
"
>
<el-select
v-model=
"form.
${
field
}
"
placeholder=
"请选择
${
comment
}
"
>
<el-option
label=
"请选择字典生成"
value=
""
/>
</el-select>
</el-form-item>
#
elseif
($
column
.
htmlType
==
"radio"
&&
""
!=
$
dictType
)
<el-form-item
label=
"
${
comment
}
"
>
<el-radio-group
v-model=
"form.
${
field
}
"
>
<el-radio
v-for=
"dict in
${
field
}
Options"
:key=
"dict.dictValue"
:label=
"dict.dictValue"
>
{{
dict.dictLabel}}
</el-radio>
</el-radio-group>
</el-form-item>
#
elseif
($
column
.
htmlType
==
"radio"
&&
$
dictType
)
<el-form-item
label=
"
${
comment
}
"
>
<el-radio-group
v-model=
"form.
${
field
}
"
>
<el-radio
label=
"1"
>
请选择字典生成
</el-radio>
</el-radio-group>
</el-form-item>
#
elseif
($
column
.
htmlType
==
"datetime"
)
<el-form-item
label=
"
${
comment
}
"
prop=
"
${
field
}
"
>
<el-date-picker
clearable
size=
"small"
style=
"width: 200px"
v-model=
"form.
${
field
}
"
type=
"date"
value-format=
"yyyy-MM-dd"
placeholder=
"选择
${
comment
}
"
>
</el-date-picker>
</el-form-item>
#
elseif
($
column
.
htmlType
==
"textarea"
)
<el-form-item
label=
"
${
comment
}
"
prop=
"
${
field
}
"
>
<el-input
v-model=
"form.
${
field
}
"
type=
"textarea"
placeholder=
"请输入内容"
/>
</el-form-item>
#
end
#
end
#
end
#
end
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitForm"
>
确 定
</el-button>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import
{
list
${
BusinessName
},
get
${
BusinessName
},
del
${
BusinessName
},
add
${
BusinessName
},
update
${
BusinessName
},
export
${
BusinessName
}
}
from
"
@/api/
${
moduleName
}
/
${
businessName
}
"
;
import
Treeselect
from
"
@riophae/vue-treeselect
"
;
import
"
@riophae/vue-treeselect/dist/vue-treeselect.css
"
;
export
default
{
name
:
"
${
BusinessName
}
"
,
components
:
{
Treeselect
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
//
${
functionName
}
表格数据
${
businessName
}
List
:
[],
//
${
functionName
}
树选项
${
businessName
}
Options
:
[],
// 弹出层标题
title
:
""
,
// 是否显示弹出层
open
:
false
,
#
foreach
($
column
in
$
columns
)
#
set
($
parentheseIndex
=
$
column
.
columnComment
.
indexOf
(
"("
))
#
if
($
parentheseIndex
!=
-
1
)
#
set
($
comment
=
$
column
.
columnComment
.
substring
(
0
,
$
parentheseIndex
))
#
else
#
set
($
comment
=
$
column
.
columnComment
)
#
end
#
if
(${
column
.
dictType
}
!=
''
)
//
$
comment
字典
${
column
.
javaField
}
Options
:
[]#
if
($
velocityCount
!=
$
columns
.
size
()),#
end
#
end
#
end
// 查询参数
queryParams
:
{
#
foreach
($
column
in
$
columns
)
#
if
($
column
.
query
)
$
column
.
javaField
:
undefined
#
if
($
velocityCount
!=
$
columns
.
size
()),#
end
#
end
#
end
},
// 表单参数
form
:
{
},
// 表单校验
rules
:
{
#
foreach
($
column
in
$
columns
)
#
if
($
column
.
required
)
#
set
($
parentheseIndex
=
$
column
.
columnComment
.
indexOf
(
"("
))
#
if
($
parentheseIndex
!=
-
1
)
#
set
($
comment
=
$
column
.
columnComment
.
substring
(
0
,
$
parentheseIndex
))
#
else
#
set
($
comment
=
$
column
.
columnComment
)
#
end
#
set
($
comment
=
$
column
.
columnComment
)
$
column
.
javaField
:
[
{
required
:
true
,
message
:
"
$
comment
不能为空
"
,
trigger
:
"
blur
"
}
]#
if
($
velocityCount
!=
$
columns
.
size
()),#
end
#
end
#
end
}
};
},
created
()
{
this
.
getList
();
#
foreach
($
column
in
$
columns
)
#
if
(${
column
.
dictType
}
!=
''
)
this
.
getDicts
(
"
${
column
.
dictType
}
"
).
then
(
response
=>
{
this
.${
column
.
javaField
}
Options
=
response
.
data
;
});
#
end
#
end
},
methods
:
{
/** 查询
${
functionName
}
列表 */
getList
()
{
this
.
loading
=
true
;
list
${
BusinessName
}(
this
.
queryParams
).
then
(
response
=>
{
this
.${
businessName
}
List
=
this
.
handleTree
(
response
.
data
,
"
${
treeCode
}
"
,
"
${
treeParentCode
}
"
);
this
.
loading
=
false
;
});
},
/** 转换
${
functionName
}
数据结构 */
normalizer
(
node
)
{
if
(
node
.
children
&&
!
node
.
children
.
length
)
{
delete
node
.
children
;
}
return
{
id
:
node
.${
treeCode
},
label
:
node
.${
treeName
},
children
:
node
.
children
};
},
/** 查询部门下拉树结构 */
getTreeselect
()
{
list
${
BusinessName
}().
then
(
response
=>
{
this
.${
businessName
}
Options
=
[];
const
data
=
{
${
treeCode
}:
0
,
${
treeName
}:
'
顶级节点
'
,
children
:
[]
};
data
.
children
=
this
.
handleTree
(
response
.
data
,
"
${
treeCode
}
"
,
"
${
treeParentCode
}
"
);
this
.${
businessName
}
Options
.
push
(
data
);
});
},
#
foreach
($
column
in
$
columns
)
#
if
(${
column
.
dictType
}
!=
''
)
#
set
($
parentheseIndex
=
$
column
.
columnComment
.
indexOf
(
"("
))
#
if
($
parentheseIndex
!=
-
1
)
#
set
($
comment
=
$
column
.
columnComment
.
substring
(
0
,
$
parentheseIndex
))
#
else
#
set
($
comment
=
$
column
.
columnComment
)
#
end
//
$
comment
字典翻译
${
column
.
javaField
}
Format
(
row
,
column
)
{
return
this
.
selectDictLabel
(
this
.${
column
.
javaField
}
Options
,
row
.${
column
.
javaField
});
},
#
end
#
end
// 取消按钮
cancel
()
{
this
.
open
=
false
;
this
.
reset
();
},
// 表单重置
reset
()
{
this
.
form
=
{
#
foreach
($
column
in
$
columns
)
#
if
($
column
.
htmlType
==
"radio"
)
$
column
.
javaField
:
"
0
"
#
if
($
velocityCount
!=
$
columns
.
size
()),#
end
#
else
$
column
.
javaField
:
undefined
#
if
($
velocityCount
!=
$
columns
.
size
()),#
end
#
end
#
end
};
this
.
resetForm
(
"
form
"
);
},
/** 搜索按钮操作 */
handleQuery
()
{
this
.
getList
();
},
/** 重置按钮操作 */
resetQuery
()
{
this
.
resetForm
(
"
queryForm
"
);
this
.
handleQuery
();
},
/** 新增按钮操作 */
handleAdd
()
{
this
.
reset
();
this
.
getTreeselect
();
this
.
open
=
true
;
this
.
title
=
"
添加
${
functionName
}
"
;
},
/** 修改按钮操作 */
handleUpdate
(
row
)
{
this
.
reset
();
this
.
getTreeselect
();
if
(
row
!=
undefined
)
{
this
.
form
.${
treeParentCode
}
=
row
.${
treeCode
};
}
get
${
BusinessName
}(
row
.${
pkColumn
.
javaField
}).
then
(
response
=>
{
this
.
form
=
response
.
data
;
this
.
open
=
true
;
this
.
title
=
"
修改
${
functionName
}
"
;
});
},
/** 提交按钮 */
submitForm
:
function
()
{
this
.
#
[[$]]#
refs
[
"
form
"
].
validate
(
valid
=>
{
if
(
valid
)
{
if
(
this
.
form
.${
pkColumn
.
javaField
}
!=
undefined
)
{
update
${
BusinessName
}(
this
.
form
).
then
(
response
=>
{
if
(
response
.
code
===
200
)
{
this
.
msgSuccess
(
"
修改成功
"
);
this
.
open
=
false
;
this
.
getList
();
}
else
{
this
.
msgError
(
response
.
msg
);
}
});
}
else
{
add
${
BusinessName
}(
this
.
form
).
then
(
response
=>
{
if
(
response
.
code
===
200
)
{
this
.
msgSuccess
(
"
新增成功
"
);
this
.
open
=
false
;
this
.
getList
();
}
else
{
this
.
msgError
(
response
.
msg
);
}
});
}
}
});
},
/** 删除按钮操作 */
handleDelete
(
row
)
{
this
.$
confirm
(
'是否确认删除${functionName}编号为"'
+
row.
${
pkColumn
.
javaField
}
+
'"的数据项?'
,
"警告"
,
{
confirmButtonText:
"确定"
,
cancelButtonText:
"取消"
,
type:
"warning"
}).
then
(
function
()
{
return
del
${
BusinessName
}(
row
.${
pkColumn
.
javaField
});
}).
then
(()
=>
{
this
.
getList
();
this
.
msgSuccess
(
"
删除成功
"
);
}).
catch
(
function
()
{
});
}
}
};
</script>
\ No newline at end of file
Prev
1
2
3
4
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment