Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
S
sts网站
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liyang
sts网站
Commits
fef7ead0
Commit
fef7ead0
authored
Dec 16, 2021
by
RuoYi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增Vue3前端代码生成模板
parent
06aef058
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
1033 additions
and
0 deletions
+1033
-0
index-tree.vue.vm
...-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm
+465
-0
index.vue.vm
ruoyi-generator/src/main/resources/vm/vue/v3/index.vue.vm
+567
-0
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