Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
finance-manage
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
finance-oa
finance-manage
Commits
fef7ead0
Commit
fef7ead0
authored
Dec 16, 2021
by
RuoYi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增Vue3前端代码生成模板
parent
06aef058
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
1033 additions
and
0 deletions
+1033
-0
ruoyi-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm
...-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm
+465
-0
ruoyi-generator/src/main/resources/vm/vue/v3/index.vue.vm
ruoyi-generator/src/main/resources/vm/vue/v3/index.vue.vm
+567
-0
ruoyi-generator/src/main/resources/vm/vue/v3/readme.txt
ruoyi-generator/src/main/resources/vm/vue/v3/readme.txt
+1
-0
No files found.
ruoyi-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm
0 → 100644
View file @
fef7ead0
<template>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryRef"
:inline=
"true"
v-show=
"showSearch"
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=
"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 ${dictType}"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</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"
&&
$column.queryType != "BETWEEN")
<el-form-item
label=
"${comment}"
prop=
"${column.javaField}"
>
<el-date-picker
clearable
size=
"small"
v-model=
"queryParams.${column.javaField}"
type=
"date"
value-format=
"YYYY-MM-DD"
placeholder=
"选择${comment}"
>
</el-date-picker>
</el-form-item>
#elseif($column.htmlType == "datetime"
&&
$column.queryType == "BETWEEN")
<el-form-item
label=
"${comment}"
>
<el-date-picker
v-model=
"daterange${AttrName}"
size=
"small"
style=
"width: 240px"
value-format=
"YYYY-MM-DD"
type=
"daterange"
range-separator=
"-"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
></el-date-picker>
</el-form-item>
#end
#end
#end
<el-form-item>
<el-button
type=
"primary"
icon=
"Search"
size=
"mini"
@
click=
"handleQuery"
>
搜索
</el-button>
<el-button
icon=
"Refresh"
size=
"mini"
@
click=
"resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form>
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
plain
icon=
"Plus"
size=
"mini"
@
click=
"handleAdd"
v-hasPermi=
"['${moduleName}:${businessName}:add']"
>
新增
</el-button>
</el-col>
<right-toolbar
v-model:showSearch=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
<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
#default
="
scope
"
>
<span>
{{ parseTime(scope.row.${javaField}, '{y}-{m}-{d}') }}
</span>
</template>
</el-table-column>
#elseif($column.list
&&
"" != $column.dictType)
<el-table-column
label=
"${comment}"
align=
"center"
prop=
"${javaField}"
>
<template
#default
="
scope
"
>
#if($column.htmlType == "checkbox")
<dict-tag
:options=
"${column.dictType}"
:value=
"scope.row.${javaField} ? scope.row.${javaField}.split(',') : []"
/>
#else
<dict-tag
:options=
"${column.dictType}"
:value=
"scope.row.${javaField}"
/>
#end
</template>
</el-table-column>
#elseif($column.list
&&
"" != $javaField)
#if(${foreach.index} == 1)
<el-table-column
label=
"${comment}"
prop=
"${javaField}"
/>
#else
<el-table-column
label=
"${comment}"
align=
"center"
prop=
"${javaField}"
/>
#end
#end
#end
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<template
#default
="
scope
"
>
<el-button
size=
"mini"
type=
"text"
icon=
"Edit"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['${moduleName}:${businessName}:edit']"
>
修改
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"Plus"
@
click=
"handleAdd(scope.row)"
v-hasPermi=
"['${moduleName}:${businessName}:add']"
>
新增
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"Delete"
@
click=
"handleDelete(scope.row)"
v-hasPermi=
"['${moduleName}:${businessName}:remove']"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 添加或修改${functionName}对话框 -->
<el-dialog
:title=
"title"
v-model=
"open"
width=
"500px"
append-to-body
>
<el-form
ref=
"${businessName}Ref"
: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}"
>
<tree-select
v-model:value=
"form.${treeParentCode}"
:options=
"${businessName}Options"
:objMap=
"{ value: '${treeCode}', label: '${treeName}', children: 'children' }"
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 == "imageUpload")
<el-form-item
label=
"${comment}"
>
<imageUpload
v-model=
"form.${field}"
/>
</el-form-item>
#elseif($column.htmlType == "fileUpload")
<el-form-item
label=
"${comment}"
>
<fileUpload
v-model=
"form.${field}"
/>
</el-form-item>
#elseif($column.htmlType == "editor")
<el-form-item
label=
"${comment}"
>
<editor
v-model=
"form.${field}"
:min-height=
"192"
/>
</el-form-item>
#elseif($column.htmlType == "select"
&&
"" != $dictType)
<el-form-item
label=
"${comment}"
prop=
"${field}"
>
<el-select
v-model=
"form.${field}"
placeholder=
"请选择${comment}"
>
<el-option
v-for=
"dict in ${dictType}"
:key=
"dict.value"
:label=
"dict.label"
#if
($
column.javaType =
=
"
Integer
"
||
$
column.javaType =
=
"
Long
"
):value=
"parseInt(dict.value)"
#else:value
="
dict
.
value
"
#end
></el-option>
</el-select>
</el-form-item>
#elseif($column.htmlType == "select"
&&
$dictType)
<el-form-item
label=
"${comment}"
prop=
"${field}"
>
<el-select
v-model=
"form.${field}"
placeholder=
"请选择${comment}"
>
<el-option
label=
"请选择字典生成"
value=
""
/>
</el-select>
</el-form-item>
#elseif($column.htmlType == "checkbox"
&&
"" != $dictType)
<el-form-item
label=
"${comment}"
>
<el-checkbox-group
v-model=
"form.${field}"
>
<el-checkbox
v-for=
"dict in ${dictType}"
:key=
"dict.value"
:label=
"dict.value"
>
{{dict.label}}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
#elseif($column.htmlType == "checkbox"
&&
$dictType)
<el-form-item
label=
"${comment}"
>
<el-checkbox-group
v-model=
"form.${field}"
>
<el-checkbox>
请选择字典生成
</el-checkbox>
</el-checkbox-group>
</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 ${dictType}"
:key=
"dict.value"
#if
($
column.javaType =
=
"
Integer
"
||
$
column.javaType =
=
"
Long
"
):label=
"parseInt(dict.value)"
#else:label
="
dict
.
value
"
#end
>
{{dict.label}}
</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"
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>
<template
#footer
>
<div
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitForm"
>
确 定
</el-button>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script
setup
name=
"${BusinessName}"
>
import
{
list$
{
BusinessName
},
get
$
{
BusinessName
},
del$
{
BusinessName
},
add$
{
BusinessName
},
update$
{
BusinessName
}
}
from
"
@/api/${moduleName}/${businessName}
"
;
const
{
proxy
}
=
getCurrentInstance
();
#
if
(
$
{
dicts
}
!=
''
)
#
set
(
$dictsNoSymbol
=
$dicts
.
replace
(
"
'
"
,
""
))
const
{
$
{
dictsNoSymbol
}
}
=
proxy
.
useDict
(
$
{
dicts
});
#
end
const
$
{
businessName
}
List
=
ref
([]);
const
$
{
businessName
}
Options
=
ref
([]);
const
open
=
ref
(
false
);
const
loading
=
ref
(
true
);
const
showSearch
=
ref
(
true
);
const
title
=
ref
(
""
);
#
foreach
(
$column
in
$columns
)
#
if
(
$column
.
htmlType
==
"
datetime
"
&&
$column
.
queryType
==
"
BETWEEN
"
)
#
set
(
$AttrName
=
$column
.
javaField
.
substring
(
0
,
1
).
toUpperCase
()
+
$
{
column
.
javaField
.
substring
(
1
)})
const
daterange$
{
AttrName
}
=
ref
([]);
#
end
#
end
const
data
=
reactive
({
form
:
{},
queryParams
:
{
#
foreach
(
$column
in
$columns
)
#
if
(
$column
.
query
)
$column
.
javaField
:
null
#
if
(
$foreach
.
count
!=
$columns
.
size
()),
#
end
#
end
#
end
},
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
$column
.
javaField
:
[
{
required
:
true
,
message
:
"
$comment不能为空
"
,
trigger
:
#
if
(
$column
.
htmlType
==
"
select
"
)
"
change
"
#
else
"
blur
"
#
end
}
]
#
if
(
$foreach
.
count
!=
$columns
.
size
()),
#
end
#
end
#
end
}
});
const
{
queryParams
,
form
,
rules
}
=
toRefs
(
data
);
/** 查询${functionName}列表 */
function
getList
()
{
loading
.
value
=
true
;
#
foreach
(
$column
in
$columns
)
#
if
(
$column
.
htmlType
==
"
datetime
"
&&
$column
.
queryType
==
"
BETWEEN
"
)
queryParams
.
value
.
params
=
{};
#
break
#
end
#
end
#
foreach
(
$column
in
$columns
)
#
if
(
$column
.
htmlType
==
"
datetime
"
&&
$column
.
queryType
==
"
BETWEEN
"
)
#
set
(
$AttrName
=
$column
.
javaField
.
substring
(
0
,
1
).
toUpperCase
()
+
$
{
column
.
javaField
.
substring
(
1
)})
if
(
null
!=
daterange$
{
AttrName
}
&&
''
!=
daterange$
{
AttrName
})
{
queryParams
.
value
.
params
[
"
begin${AttrName}
"
]
=
daterange$
{
AttrName
}.
value
[
0
];
queryParams
.
value
.
params
[
"
end${AttrName}
"
]
=
daterange$
{
AttrName
}.
value
[
1
];
}
#
end
#
end
list$
{
BusinessName
}(
queryParams
.
value
).
then
(
response
=>
{
$
{
businessName
}
List
.
value
=
proxy
.
handleTree
(
response
.
data
,
"
${treeCode}
"
,
"
${treeParentCode}
"
);
loading
.
value
=
false
;
});
}
/** 查询${functionName}下拉树结构 */
async
function
getTreeselect
()
{
await
list$
{
BusinessName
}().
then
(
response
=>
{
$
{
businessName
}
Options
.
value
=
[];
const
data
=
{
$
{
treeCode
}:
0
,
$
{
treeName
}:
'
顶级节点
'
,
children
:
[]
};
data
.
children
=
proxy
.
handleTree
(
response
.
data
,
"
${treeCode}
"
,
"
${treeParentCode}
"
);
$
{
businessName
}
Options
.
value
.
push
(
data
);
});
}
// 取消按钮
function
cancel
()
{
open
.
value
=
false
;
reset
();
}
// 表单重置
function
reset
()
{
form
.
value
=
{
#
foreach
(
$column
in
$columns
)
#
if
(
$column
.
htmlType
==
"
radio
"
)
$column
.
javaField
:
#
if
(
$column
.
javaType
==
"
Integer
"
||
$column
.
javaType
==
"
Long
"
)
0
#
else
"
0
"
#
end
#
if
(
$foreach
.
count
!=
$columns
.
size
()),
#
end
#
elseif
(
$column
.
htmlType
==
"
checkbox
"
)
$column
.
javaField
:
[]
#
if
(
$foreach
.
count
!=
$columns
.
size
()),
#
end
#
else
$column
.
javaField
:
null
#
if
(
$foreach
.
count
!=
$columns
.
size
()),
#
end
#
end
#
end
};
proxy
.
resetForm
(
"
${businessName}Ref
"
);
}
/** 搜索按钮操作 */
function
handleQuery
()
{
getList
();
}
/** 重置按钮操作 */
function
resetQuery
()
{
#
foreach
(
$column
in
$columns
)
#
if
(
$column
.
htmlType
==
"
datetime
"
&&
$column
.
queryType
==
"
BETWEEN
"
)
#
set
(
$AttrName
=
$column
.
javaField
.
substring
(
0
,
1
).
toUpperCase
()
+
$
{
column
.
javaField
.
substring
(
1
)})
daterange$
{
AttrName
}.
value
=
[];
#
end
#
end
proxy
.
resetForm
(
"
queryRef
"
);
handleQuery
();
}
/** 新增按钮操作 */
async
function
handleAdd
(
row
)
{
reset
();
await
getTreeselect
();
if
(
row
!=
null
&&
row
.
$
{
treeCode
})
{
form
.
value
.
$
{
treeParentCode
}
=
row
.
$
{
treeCode
};
}
else
{
form
.
value
.
$
{
treeParentCode
}
=
0
;
}
open
.
value
=
true
;
title
.
value
=
"
添加${functionName}
"
;
}
/** 修改按钮操作 */
async
function
handleUpdate
(
row
)
{
reset
();
await
getTreeselect
();
if
(
row
!=
null
)
{
form
.
value
.
$
{
treeParentCode
}
=
row
.
$
{
treeCode
};
}
get
$
{
BusinessName
}(
row
.
$
{
pkColumn
.
javaField
}).
then
(
response
=>
{
form
.
value
=
response
.
data
;
#
foreach
(
$column
in
$columns
)
#
if
(
$column
.
htmlType
==
"
checkbox
"
)
form
.
value
.
$column
.
javaField
=
form
.
value
.
$
{
column
.
javaField
}.
split
(
"
,
"
);
#
end
#
end
open
.
value
=
true
;
title
.
value
=
"
修改${functionName}
"
;
});
}
/** 提交按钮 */
function
submitForm
()
{
proxy
.
#
[[
$
]]
#
refs
[
"
${businessName}Ref
"
].
validate
(
valid
=>
{
if
(
valid
)
{
#
foreach
(
$column
in
$columns
)
#
if
(
$column
.
htmlType
==
"
checkbox
"
)
form
.
value
.
$column
.
javaField
=
form
.
value
.
$
{
column
.
javaField
}.
join
(
"
,
"
);
#
end
#
end
if
(
form
.
value
.
$
{
pkColumn
.
javaField
}
!=
null
)
{
update$
{
BusinessName
}(
form
.
value
).
then
(
response
=>
{
proxy
.
#
[[
$modal
]]
#
.
msgSuccess
(
"
修改成功
"
);
open
.
value
=
false
;
getList
();
});
}
else
{
add$
{
BusinessName
}(
form
.
value
).
then
(
response
=>
{
proxy
.
#
[[
$modal
]]
#
.
msgSuccess
(
"
新增成功
"
);
open
.
value
=
false
;
getList
();
});
}
}
});
}
/** 删除按钮操作 */
function
handleDelete
(
row
)
{
proxy
.
#
[[
$modal
]]
#
.
confirm
(
'
是否确认删除${functionName}编号为"
'
+
row
.
$
{
pkColumn
.
javaField
}
+
'
"的数据项?
'
).
then
(
function
()
{
return
del$
{
BusinessName
}(
row
.
$
{
pkColumn
.
javaField
});
}).
then
(()
=>
{
getList
();
proxy
.
#
[[
$modal
]]
#
.
msgSuccess
(
"
删除成功
"
);
}).
catch
(()
=>
{});
}
getList
();
</script>
ruoyi-generator/src/main/resources/vm/vue/v3/index.vue.vm
0 → 100644
View file @
fef7ead0
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" 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="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 ${dictType}"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</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" && $column.queryType != "BETWEEN")
<el-form-item label="${comment}" prop="${column.javaField}">
<el-date-picker clearable size="small"
v-model="queryParams.${column.javaField}"
type="date"
value-format="YYYY-MM-DD"
placeholder="选择${comment}">
</el-date-picker>
</el-form-item>
#elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
<el-form-item label="${comment}">
<el-date-picker
v-model="daterange${AttrName}"
size="small"
style="width: 240px"
value-format="YYYY-MM-DD"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
#end
#end
#end
<el-form-item>
<el-button type="primary" icon="Search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="Plus"
size="mini"
@click="handleAdd"
v-hasPermi="['${moduleName}:${businessName}:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="Edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['${moduleName}:${businessName}:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="Delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['${moduleName}:${businessName}:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="Download"
size="mini"
@click="handleExport"
v-hasPermi="['${moduleName}:${businessName}:export']"
>导出</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="${businessName}List" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
#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)
<el-table-column label="${comment}" align="center" prop="${javaField}" />
#elseif($column.list && $column.htmlType == "datetime")
<el-table-column label="${comment}" align="center" prop="${javaField}" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.${javaField}, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
#elseif($column.list && "" != $column.dictType)
<el-table-column label="${comment}" align="center" prop="${javaField}">
<template #default="scope">
#if($column.htmlType == "checkbox")
<dict-tag :options="${column.dictType}" :value="scope.row.${javaField} ? scope.row.${javaField}.split(',') : []"/>
#else
<dict-tag :options="${column.dictType}" :value="scope.row.${javaField}"/>
#end
</template>
</el-table-column>
#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 #default="scope">
<el-button
size="mini"
type="text"
icon="Edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['${moduleName}:${businessName}:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="Delete"
@click="handleDelete(scope.row)"
v-hasPermi="['${moduleName}:${businessName}:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
v-model:p:page="queryParams.pageNum"
v-model:p:limit="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改${functionName}对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="${businessName}Ref" :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($column.htmlType == "input")
<el-form-item label="${comment}" prop="${field}">
<el-input v-model="form.${field}" placeholder="请输入${comment}" />
</el-form-item>
#elseif($column.htmlType == "imageUpload")
<el-form-item label="${comment}">
<imageUpload v-model="form.${field}"/>
</el-form-item>
#elseif($column.htmlType == "fileUpload")
<el-form-item label="${comment}">
<fileUpload v-model="form.${field}"/>
</el-form-item>
#elseif($column.htmlType == "editor")
<el-form-item label="${comment}">
<editor v-model="form.${field}" :min-height="192"/>
</el-form-item>
#elseif($column.htmlType == "select" && "" != $dictType)
<el-form-item label="${comment}" prop="${field}">
<el-select v-model="form.${field}" placeholder="请选择${comment}">
<el-option
v-for="dict in ${dictType}"
:key="dict.value"
:label="dict.label"
#if($column.javaType == "Integer" || $column.javaType == "Long"):value="parseInt(dict.value)"#else:value="dict.value"#end
></el-option>
</el-select>
</el-form-item>
#elseif($column.htmlType == "select" && $dictType)
<el-form-item label="${comment}" prop="${field}">
<el-select v-model="form.${field}" placeholder="请选择${comment}">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
#elseif($column.htmlType == "checkbox" && "" != $dictType)
<el-form-item label="${comment}">
<el-checkbox-group v-model="form.${field}">
<el-checkbox
v-for="dict in ${dictType}"
:key="dict.value"
:label="dict.value">
{{dict.label}}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
#elseif($column.htmlType == "checkbox" && $dictType)
<el-form-item label="${comment}">
<el-checkbox-group v-model="form.${field}">
<el-checkbox>请选择字典生成</el-checkbox>
</el-checkbox-group>
</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 ${dictType}"
:key="dict.value"
#if($column.javaType == "Integer" || $column.javaType == "Long"):label="parseInt(dict.value)"#else:label="dict.value"#end
>{{dict.label}}</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"
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
#if($table.sub)
<el-divider content-position="center">${subTable.functionName}信息</el-divider>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" icon="Plus" size="mini" @click="handleAdd${subClassName}">添加</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" icon="Delete" size="mini" @click="handleDelete${subClassName}">删除</el-button>
</el-col>
</el-row>
<el-table :data="${subclassName}List" :row-class-name="row${subClassName}Index" @selection-change="handle${subClassName}SelectionChange" ref="${subclassName}">
<el-table-column type="selection" width="50" align="center" />
<el-table-column label="序号" align="center" prop="index" width="50"/>
#foreach($column in $subTable.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 || $javaField == ${subTableFkclassName})
#elseif($column.list && "" != $javaField)
<el-table-column label="$comment" prop="${javaField}">
<template #default="scope">
<el-input v-model="scope.row.$javaField" placeholder="请输入$comment" />
</template>
</el-table-column>
#end
#end
</el-table>
#end
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="${BusinessName}">
import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName} } from "@/api/${moduleName}/${businessName}";
const { proxy } = getCurrentInstance();
#if(${dicts} != '')
#set($dictsNoSymbol=$dicts.replace("'", ""))
const { ${dictsNoSymbol} } = proxy.useDict(${dicts});
#end
const ${businessName}List = ref([]);
#if($table.sub)
const ${subclassName}List = ref([]);
#end
const open = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const ids = ref([]);
#if($table.sub)
const checked${subClassName} = ref([]);
#end
const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const title = ref("");
#foreach ($column in $columns)
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
const daterange${AttrName} = ref([]);
#end
#end
const data = reactive({
form: {},
queryParams: {
pageNum: 1,
pageSize: 10,
#foreach ($column in $columns)
#if($column.query)
$column.javaField: null#if($foreach.count != $columns.size()),#end
#end
#end
},
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
$column.javaField: [
{ required: true, message: "$comment不能为空", trigger: #if($column.htmlType == "select")"change"#else"blur"#end }
]#if($foreach.count != $columns.size()),#end
#end
#end
}
});
const { queryParams, form, rules } = toRefs(data);
/** 查询${functionName}列表 */
function getList() {
loading.value = true;
#foreach ($column in $columns)
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
queryParams.value.params = {};
#break
#end
#end
#foreach ($column in $columns)
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
if (null != daterange${AttrName} && '' != daterange${AttrName}) {
queryParams.value.params["begin${AttrName}"] = daterange${AttrName}.value[0];
queryParams.value.params["end${AttrName}"] = daterange${AttrName}.value[1];
}
#end
#end
list${BusinessName}(queryParams.value).then(response => {
${businessName}List.value = response.rows;
total.value = response.total;
loading.value = false;
});
}
// 取消按钮
function cancel() {
open.value = false;
reset();
}
// 表单重置
function reset() {
form.value = {
#foreach ($column in $columns)
#if($column.htmlType == "radio")
$column.javaField: #if($column.javaType == "Integer" || $column.javaType == "Long")0#else"0"#end#if($foreach.count != $columns.size()),#end
#elseif($column.htmlType == "checkbox")
$column.javaField: []#if($foreach.count != $columns.size()),#end
#else
$column.javaField: null#if($foreach.count != $columns.size()),#end
#end
#end
};
#if($table.sub)
${subclassName}List.value = [];
#end
proxy.resetForm("${businessName}Ref");
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
function resetQuery() {
#foreach ($column in $columns)
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
daterange${AttrName}.value = [];
#end
#end
proxy.resetForm("queryRef");
handleQuery();
}
// 多选框选中数据
function handleSelectionChange(selection) {
ids.value = selection.map(item => item.${pkColumn.javaField});
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 新增按钮操作 */
function handleAdd() {
reset();
open.value = true;
title.value = "添加${functionName}";
}
/** 修改按钮操作 */
function handleUpdate(row) {
reset();
const ${pkColumn.javaField} = row.${pkColumn.javaField} || ids.value
get${BusinessName}(${pkColumn.javaField}).then(response => {
form.value = response.data;
#foreach ($column in $columns)
#if($column.htmlType == "checkbox")
form.value.$column.javaField = form.value.${column.javaField}.split(",");
#end
#end
#if($table.sub)
${subclassName}List.value = response.data.${subclassName}List;
#end
open.value = true;
title.value = "修改${functionName}";
});
}
/** 提交按钮 */
function submitForm() {
proxy.#[[$]]#refs["${businessName}Ref"].validate(valid => {
if (valid) {
#foreach ($column in $columns)
#if($column.htmlType == "checkbox")
form.value.$column.javaField = form.value.${column.javaField}.join(",");
#end
#end
#if($table.sub)
form.value.${subclassName}List = ${subclassName}List.value;
#end
if (form.value.${pkColumn.javaField} != null) {
update${BusinessName}(form.value).then(response => {
proxy.#[[$modal]]#.msgSuccess("修改成功");
open.value = false;
getList();
});
} else {
add${BusinessName}(form.value).then(response => {
proxy.#[[$modal]]#.msgSuccess("新增成功");
open.value = false;
getList();
});
}
}
});
}
/** 删除按钮操作 */
function handleDelete(row) {
const ${pkColumn.javaField}s = row.${pkColumn.javaField} || ids.value;
proxy.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + ${pkColumn.javaField}s + '"的数据项?').then(function() {
return del${BusinessName}(${pkColumn.javaField}s);
}).then(() => {
getList();
proxy.#[[$modal]]#.msgSuccess("删除成功");
}).catch(() => {});
}
#if($table.sub)
/** ${subTable.functionName}序号 */
function row${subClassName}Index({ row, rowIndex }) {
row.index = rowIndex + 1;
}
/** ${subTable.functionName}添加按钮操作 */
function handleAdd${subClassName}() {
let obj = {};
#foreach($column in $subTable.columns)
#if($column.pk || $column.javaField == ${subTableFkclassName})
#elseif($column.list && "" != $javaField)
obj.$column.javaField = "";
#end
#end
${subclassName}List.value.push(obj);
}
/** ${subTable.functionName}删除按钮操作 */
function handleDelete${subClassName}() {
if (checked${subClassName}.value.length == 0) {
proxy.#[[$modal]]#.msgError("请先选择要删除的${subTable.functionName}数据");
} else {
const ${subclassName}s = ${subclassName}List.value;
const checked${subClassName}s = checked${subClassName}.value;
${subclassName}List.value = ${subclassName}s.filter(function(item) {
return checked${subClassName}s.indexOf(item.index) == -1
});
}
}
/** 复选框选中数据 */
function handle${subClassName}SelectionChange(selection) {
checked${subClassName}.value = selection.map(item => item.index)
}
#end
/** 导出按钮操作 */
function handleExport() {
proxy.download('${moduleName}/${businessName}/export', {
...queryParams.value
}, `${businessName}_#[[${new Date().getTime()}]]#.xlsx`)
}
getList();
</script>
ruoyi-generator/src/main/resources/vm/vue/v3/readme.txt
0 → 100644
View file @
fef7ead0
如果使用的是RuoYi-Vue3前端,那么需要覆盖一下此目录的模板index.vue.vm、index-tree.vue.vm文件到上级vue目录。
\ No newline at end of file
Write
Preview
Markdown
is supported
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