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
d2b61762
Commit
d2b61762
authored
Sep 08, 2021
by
稚屿
Browse files
修复代码生成页面数据编辑保存之后总是跳转第一页的问题
parent
a5e38f6f
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
ruoyi-ui/src/router/index.js
View file @
d2b61762
import
Vue
from
'
vue
'
import
Router
from
'
vue-router
'
Vue
.
use
(
Router
)
/* Layout */
import
Layout
from
'
@/layout
'
/**
* Note: 路由配置项
*
* hidden: true // 当设置 true 的时候该路由不会再侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1
* alwaysShow: true // 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面
* // 只有一个时,会将那个子路由当做根路由显示在侧边栏--如引导页面
* // 若你想不管路由下面的 children 声明的个数都显示你的根路由
* // 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由
* redirect: noRedirect // 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
* name:'router-name' // 设定路由的名字,一定要填写不然使用<keep-alive>时会出现各种问题
* query: '{"id": 1, "name": "ry"}' // 访问路由的默认传递参数
* meta : {
noCache: true // 如果设置为true,则不会被 <keep-alive> 缓存(默认 false)
title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字
icon: 'svg-name' // 设置该路由的图标,对应路径src/assets/icons/svg
breadcrumb: false // 如果设置为false,则不会在breadcrumb面包屑中显示
activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。
}
*/
// 公共路由
export
const
constantRoutes
=
[
{
path
:
'
/redirect
'
,
component
:
Layout
,
hidden
:
true
,
children
:
[
{
path
:
'
/redirect/:path(.*)
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/redirect
'
],
resolve
)
}
]
},
{
path
:
'
/login
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/login
'
],
resolve
),
hidden
:
true
},
{
path
:
'
/register
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/register
'
],
resolve
),
hidden
:
true
},
{
path
:
'
/404
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/error/404
'
],
resolve
),
hidden
:
true
},
{
path
:
'
/401
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/error/401
'
],
resolve
),
hidden
:
true
},
{
path
:
''
,
component
:
Layout
,
redirect
:
'
index
'
,
children
:
[
{
path
:
'
index
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/index
'
],
resolve
),
name
:
'
Index
'
,
meta
:
{
title
:
'
首页
'
,
icon
:
'
dashboard
'
,
affix
:
true
}
}
]
},
{
path
:
'
/user
'
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'
noredirect
'
,
children
:
[
{
path
:
'
profile
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/system/user/profile/index
'
],
resolve
),
name
:
'
Profile
'
,
meta
:
{
title
:
'
个人中心
'
,
icon
:
'
user
'
}
}
]
},
{
path
:
'
/system/user-auth
'
,
component
:
Layout
,
hidden
:
true
,
children
:
[
{
path
:
'
role/:userId(
\\
d+)
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/system/user/authRole
'
],
resolve
),
name
:
'
AuthRole
'
,
meta
:
{
title
:
'
分配角色
'
,
activeMenu
:
'
/system/user
'
}
}
]
},
{
path
:
'
/system/role-auth
'
,
component
:
Layout
,
hidden
:
true
,
children
:
[
{
path
:
'
user/:roleId(
\\
d+)
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/system/role/authUser
'
],
resolve
),
name
:
'
AuthUser
'
,
meta
:
{
title
:
'
分配用户
'
,
activeMenu
:
'
/system/role
'
}
}
]
},
{
path
:
'
/system/dict-data
'
,
component
:
Layout
,
hidden
:
true
,
children
:
[
{
path
:
'
index/:dictId(
\\
d+)
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/system/dict/data
'
],
resolve
),
name
:
'
Data
'
,
meta
:
{
title
:
'
字典数据
'
,
activeMenu
:
'
/system/dict
'
}
}
]
},
{
path
:
'
/monitor/job-log
'
,
component
:
Layout
,
hidden
:
true
,
children
:
[
{
path
:
'
index
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/monitor/job/log
'
],
resolve
),
name
:
'
JobLog
'
,
meta
:
{
title
:
'
调度日志
'
,
activeMenu
:
'
/monitor/job
'
}
}
]
},
{
path
:
'
/tool/gen-edit
'
,
component
:
Layout
,
hidden
:
true
,
children
:
[
{
path
:
'
index
/:tableId(
\\
d+)
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/tool/gen/editTable
'
],
resolve
),
name
:
'
GenEdit
'
,
meta
:
{
title
:
'
修改生成配置
'
,
activeMenu
:
'
/tool/gen
'
}
}
]
}
]
export
default
new
Router
({
mode
:
'
history
'
,
// 去掉url中的#
scrollBehavior
:
()
=>
({
y
:
0
}),
routes
:
constantRoutes
})
import
Vue
from
'
vue
'
import
Router
from
'
vue-router
'
Vue
.
use
(
Router
)
/* Layout */
import
Layout
from
'
@/layout
'
/**
* Note: 路由配置项
*
* hidden: true // 当设置 true 的时候该路由不会再侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1
* alwaysShow: true // 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面
* // 只有一个时,会将那个子路由当做根路由显示在侧边栏--如引导页面
* // 若你想不管路由下面的 children 声明的个数都显示你的根路由
* // 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由
* redirect: noRedirect // 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
* name:'router-name' // 设定路由的名字,一定要填写不然使用<keep-alive>时会出现各种问题
* query: '{"id": 1, "name": "ry"}' // 访问路由的默认传递参数
* meta : {
noCache: true // 如果设置为true,则不会被 <keep-alive> 缓存(默认 false)
title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字
icon: 'svg-name' // 设置该路由的图标,对应路径src/assets/icons/svg
breadcrumb: false // 如果设置为false,则不会在breadcrumb面包屑中显示
activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。
}
*/
// 公共路由
export
const
constantRoutes
=
[
{
path
:
'
/redirect
'
,
component
:
Layout
,
hidden
:
true
,
children
:
[
{
path
:
'
/redirect/:path(.*)
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/redirect
'
],
resolve
)
}
]
},
{
path
:
'
/login
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/login
'
],
resolve
),
hidden
:
true
},
{
path
:
'
/register
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/register
'
],
resolve
),
hidden
:
true
},
{
path
:
'
/404
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/error/404
'
],
resolve
),
hidden
:
true
},
{
path
:
'
/401
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/error/401
'
],
resolve
),
hidden
:
true
},
{
path
:
''
,
component
:
Layout
,
redirect
:
'
index
'
,
children
:
[
{
path
:
'
index
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/index
'
],
resolve
),
name
:
'
Index
'
,
meta
:
{
title
:
'
首页
'
,
icon
:
'
dashboard
'
,
affix
:
true
}
}
]
},
{
path
:
'
/user
'
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'
noredirect
'
,
children
:
[
{
path
:
'
profile
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/system/user/profile/index
'
],
resolve
),
name
:
'
Profile
'
,
meta
:
{
title
:
'
个人中心
'
,
icon
:
'
user
'
}
}
]
},
{
path
:
'
/system/user-auth
'
,
component
:
Layout
,
hidden
:
true
,
children
:
[
{
path
:
'
role/:userId(
\\
d+)
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/system/user/authRole
'
],
resolve
),
name
:
'
AuthRole
'
,
meta
:
{
title
:
'
分配角色
'
,
activeMenu
:
'
/system/user
'
}
}
]
},
{
path
:
'
/system/role-auth
'
,
component
:
Layout
,
hidden
:
true
,
children
:
[
{
path
:
'
user/:roleId(
\\
d+)
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/system/role/authUser
'
],
resolve
),
name
:
'
AuthUser
'
,
meta
:
{
title
:
'
分配用户
'
,
activeMenu
:
'
/system/role
'
}
}
]
},
{
path
:
'
/system/dict-data
'
,
component
:
Layout
,
hidden
:
true
,
children
:
[
{
path
:
'
index/:dictId(
\\
d+)
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/system/dict/data
'
],
resolve
),
name
:
'
Data
'
,
meta
:
{
title
:
'
字典数据
'
,
activeMenu
:
'
/system/dict
'
}
}
]
},
{
path
:
'
/monitor/job-log
'
,
component
:
Layout
,
hidden
:
true
,
children
:
[
{
path
:
'
index
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/monitor/job/log
'
],
resolve
),
name
:
'
JobLog
'
,
meta
:
{
title
:
'
调度日志
'
,
activeMenu
:
'
/monitor/job
'
}
}
]
},
{
path
:
'
/tool/gen-edit
'
,
component
:
Layout
,
hidden
:
true
,
children
:
[
{
path
:
'
index
'
,
component
:
(
resolve
)
=>
require
([
'
@/views/tool/gen/editTable
'
],
resolve
),
name
:
'
GenEdit
'
,
meta
:
{
title
:
'
修改生成配置
'
,
activeMenu
:
'
/tool/gen
'
}
}
]
}
]
export
default
new
Router
({
mode
:
'
history
'
,
// 去掉url中的#
scrollBehavior
:
()
=>
({
y
:
0
}),
routes
:
constantRoutes
})
ruoyi-ui/src/views/tool/gen/editTable.vue
View file @
d2b61762
<
template
>
<el-card>
<el-tabs
v-model=
"activeName"
>
<el-tab-pane
label=
"基本信息"
name=
"basic"
>
<basic-info-form
ref=
"basicInfo"
:info=
"info"
/>
</el-tab-pane>
<el-tab-pane
label=
"字段信息"
name=
"cloum"
>
<el-table
ref=
"dragTable"
:data=
"cloumns"
row-key=
"columnId"
:max-height=
"tableHeight"
>
<el-table-column
label=
"序号"
type=
"index"
min-width=
"5%"
class-name=
"allowDrag"
/>
<el-table-column
label=
"字段列名"
prop=
"columnName"
min-width=
"10%"
:show-overflow-tooltip=
"true"
/>
<el-table-column
label=
"字段描述"
min-width=
"10%"
>
<template
slot-scope=
"scope"
>
<el-input
v-model=
"scope.row.columnComment"
></el-input>
</
template
>
</el-table-column>
<el-table-column
label=
"物理类型"
prop=
"columnType"
min-width=
"10%"
:show-overflow-tooltip=
"true"
/>
<el-table-column
label=
"Java类型"
min-width=
"11%"
>
<
template
slot-scope=
"scope"
>
<el-select
v-model=
"scope.row.javaType"
>
<el-option
label=
"Long"
value=
"Long"
/>
<el-option
label=
"String"
value=
"String"
/>
<el-option
label=
"Integer"
value=
"Integer"
/>
<el-option
label=
"Double"
value=
"Double"
/>
<el-option
label=
"BigDecimal"
value=
"BigDecimal"
/>
<el-option
label=
"Date"
value=
"Date"
/>
</el-select>
</
template
>
</el-table-column>
<el-table-column
label=
"java属性"
min-width=
"10%"
>
<
template
slot-scope=
"scope"
>
<el-input
v-model=
"scope.row.javaField"
></el-input>
</
template
>
</el-table-column>
<el-table-column
label=
"插入"
min-width=
"5%"
>
<
template
slot-scope=
"scope"
>
<el-checkbox
true-label=
"1"
v-model=
"scope.row.isInsert"
></el-checkbox>
</
template
>
</el-table-column>
<el-table-column
label=
"编辑"
min-width=
"5%"
>
<
template
slot-scope=
"scope"
>
<el-checkbox
true-label=
"1"
v-model=
"scope.row.isEdit"
></el-checkbox>
</
template
>
</el-table-column>
<el-table-column
label=
"列表"
min-width=
"5%"
>
<
template
slot-scope=
"scope"
>
<el-checkbox
true-label=
"1"
v-model=
"scope.row.isList"
></el-checkbox>
</
template
>
</el-table-column>
<el-table-column
label=
"查询"
min-width=
"5%"
>
<
template
slot-scope=
"scope"
>
<el-checkbox
true-label=
"1"
v-model=
"scope.row.isQuery"
></el-checkbox>
</
template
>
</el-table-column>
<el-table-column
label=
"查询方式"
min-width=
"10%"
>
<
template
slot-scope=
"scope"
>
<el-select
v-model=
"scope.row.queryType"
>
<el-option
label=
"="
value=
"EQ"
/>
<el-option
label=
"!="
value=
"NE"
/>
<el-option
label=
">"
value=
"GT"
/>
<el-option
label=
">="
value=
"GTE"
/>
<el-option
label=
"
<
"
value=
"LT"
/>
<el-option
label=
"
<
="
value=
"LTE"
/>
<el-option
label=
"LIKE"
value=
"LIKE"
/>
<el-option
label=
"BETWEEN"
value=
"BETWEEN"
/>
</el-select>
</
template
>
</el-table-column>
<el-table-column
label=
"必填"
min-width=
"5%"
>
<
template
slot-scope=
"scope"
>
<el-checkbox
true-label=
"1"
v-model=
"scope.row.isRequired"
></el-checkbox>
</
template
>
</el-table-column>
<el-table-column
label=
"显示类型"
min-width=
"12%"
>
<
template
slot-scope=
"scope"
>
<el-select
v-model=
"scope.row.htmlType"
>
<el-option
label=
"文本框"
value=
"input"
/>
<el-option
label=
"文本域"
value=
"textarea"
/>
<el-option
label=
"下拉框"
value=
"select"
/>
<el-option
label=
"单选框"
value=
"radio"
/>
<el-option
label=
"复选框"
value=
"checkbox"
/>
<el-option
label=
"日期控件"
value=
"datetime"
/>
<el-option
label=
"图片上传"
value=
"imageUpload"
/>
<el-option
label=
"文件上传"
value=
"fileUpload"
/>
<el-option
label=
"富文本控件"
value=
"editor"
/>
</el-select>
</
template
>
</el-table-column>
<el-table-column
label=
"字典类型"
min-width=
"12%"
>
<
template
slot-scope=
"scope"
>
<el-select
v-model=
"scope.row.dictType"
clearable
filterable
placeholder=
"请选择"
>
<el-option
v-for=
"dict in dictOptions"
:key=
"dict.dictType"
:label=
"dict.dictName"
:value=
"dict.dictType"
>
<span
style=
"float: left"
>
{{
dict
.
dictName
}}
</span>
<span
style=
"float: right; color: #8492a6; font-size: 13px"
>
{{
dict
.
dictType
}}
</span>
</el-option>
</el-select>
</
template
>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane
label=
"生成信息"
name=
"genInfo"
>
<gen-info-form
ref=
"genInfo"
:info=
"info"
:tables=
"tables"
:menus=
"menus"
/>
</el-tab-pane>
</el-tabs>
<el-form
label-width=
"100px"
>
<el-form-item
style=
"text-align: center;margin-left:-100px;margin-top:10px;"
>
<el-button
type=
"primary"
@
click=
"submitForm()"
>
提交
</el-button>
<el-button
@
click=
"close()"
>
返回
</el-button>
</el-form-item>
</el-form>
</el-card>
</template>
<
script
>
import
{
getGenTable
,
updateGenTable
}
from
"
@/api/tool/gen
"
;
import
{
optionselect
as
getDictOptionselect
}
from
"
@/api/system/dict/type
"
;
import
{
listMenu
as
getMenuTreeselect
}
from
"
@/api/system/menu
"
;
import
basicInfoForm
from
"
./basicInfoForm
"
;
import
genInfoForm
from
"
./genInfoForm
"
;
import
Sortable
from
'
sortablejs
'
export
default
{
name
:
"
GenEdit
"
,
components
:
{
basicInfoForm
,
genInfoForm
},
data
()
{
return
{
// 选中选项卡的 name
activeName
:
"
cloum
"
,
// 表格的高度
tableHeight
:
document
.
documentElement
.
scrollHeight
-
245
+
"
px
"
,
// 表信息
tables
:
[],
// 表列信息
cloumns
:
[],
// 字典信息
dictOptions
:
[],
// 菜单信息
menus
:
[],
// 表详细信息
info
:
{}
};
},
created
()
{
const
tableId
=
this
.
$route
.
params
&&
this
.
$route
.
params
.
tableId
;
if
(
tableId
)
{
// 获取表详细信息
getGenTable
(
tableId
).
then
(
res
=>
{
this
.
cloumns
=
res
.
data
.
rows
;
this
.
info
=
res
.
data
.
info
;
this
.
tables
=
res
.
data
.
tables
;
});
/** 查询字典下拉列表 */
getDictOptionselect
().
then
(
response
=>
{
this
.
dictOptions
=
response
.
data
;
});
/** 查询菜单下拉列表 */
getMenuTreeselect
().
then
(
response
=>
{
this
.
menus
=
this
.
handleTree
(
response
.
data
,
"
menuId
"
);
});
}
},
methods
:
{
/** 提交按钮 */
submitForm
()
{
const
basicForm
=
this
.
$refs
.
basicInfo
.
$refs
.
basicInfoForm
;
const
genForm
=
this
.
$refs
.
genInfo
.
$refs
.
genInfoForm
;
Promise
.
all
([
basicForm
,
genForm
].
map
(
this
.
getFormPromise
)).
then
(
res
=>
{
const
validateResult
=
res
.
every
(
item
=>
!!
item
);
if
(
validateResult
)
{
const
genTable
=
Object
.
assign
({},
basicForm
.
model
,
genForm
.
model
);
genTable
.
columns
=
this
.
cloumns
;
genTable
.
params
=
{
treeCode
:
genTable
.
treeCode
,
treeName
:
genTable
.
treeName
,
treeParentCode
:
genTable
.
treeParentCode
,
parentMenuId
:
genTable
.
parentMenuId
};
updateGenTable
(
genTable
).
then
(
res
=>
{
this
.
msgSuccess
(
res
.
msg
);
if
(
res
.
code
===
200
)
{
this
.
close
();
}
});
}
else
{
this
.
msgError
(
"
表单校验未通过,请重新检查提交内容
"
);
}
});
},
getFormPromise
(
form
)
{
return
new
Promise
(
resolve
=>
{
form
.
validate
(
res
=>
{
resolve
(
res
);
});
});
},
/** 关闭按钮 */
close
()
{
this
.
$store
.
dispatch
(
"
tagsView/delView
"
,
this
.
$route
);
this
.
$router
.
push
({
path
:
"
/tool/gen
"
,
query
:
{
t
:
Date
.
now
()
}
})
}
},
mounted
()
{
const
el
=
this
.
$refs
.
dragTable
.
$el
.
querySelectorAll
(
"
.el-table__body-wrapper > table > tbody
"
)[
0
];
const
sortable
=
Sortable
.
create
(
el
,
{
handle
:
"
.allowDrag
"
,
onEnd
:
evt
=>
{
const
targetRow
=
this
.
cloumns
.
splice
(
evt
.
oldIndex
,
1
)[
0
];
this
.
cloumns
.
splice
(
evt
.
newIndex
,
0
,
targetRow
);
for
(
let
index
in
this
.
cloumns
)
{
this
.
cloumns
[
index
].
sort
=
parseInt
(
index
)
+
1
;
}
}
});
}
};
</
script
>
<
template
>
<el-card>
<el-tabs
v-model=
"activeName"
>
<el-tab-pane
label=
"基本信息"
name=
"basic"
>
<basic-info-form
ref=
"basicInfo"
:info=
"info"
/>
</el-tab-pane>
<el-tab-pane
label=
"字段信息"
name=
"cloum"
>
<el-table
ref=
"dragTable"
:data=
"cloumns"
row-key=
"columnId"
:max-height=
"tableHeight"
>
<el-table-column
label=
"序号"
type=
"index"
min-width=
"5%"
class-name=
"allowDrag"
/>
<el-table-column
label=
"字段列名"
prop=
"columnName"
min-width=
"10%"
:show-overflow-tooltip=
"true"
/>
<el-table-column
label=
"字段描述"
min-width=
"10%"
>
<template
slot-scope=
"scope"
>
<el-input
v-model=
"scope.row.columnComment"
></el-input>
</
template
>
</el-table-column>
<el-table-column
label=
"物理类型"
prop=
"columnType"
min-width=
"10%"
:show-overflow-tooltip=
"true"
/>
<el-table-column
label=
"Java类型"
min-width=
"11%"
>
<
template
slot-scope=
"scope"
>
<el-select
v-model=
"scope.row.javaType"
>
<el-option
label=
"Long"
value=
"Long"
/>
<el-option
label=
"String"
value=
"String"
/>
<el-option
label=
"Integer"
value=
"Integer"
/>
<el-option
label=
"Double"
value=
"Double"
/>
<el-option
label=
"BigDecimal"
value=
"BigDecimal"
/>
<el-option
label=
"Date"
value=
"Date"
/>
</el-select>
</
template
>
</el-table-column>
<el-table-column
label=
"java属性"
min-width=
"10%"
>
<
template
slot-scope=
"scope"
>
<el-input
v-model=
"scope.row.javaField"
></el-input>
</
template
>
</el-table-column>
<el-table-column
label=
"插入"
min-width=
"5%"
>
<
template
slot-scope=
"scope"
>
<el-checkbox
true-label=
"1"
v-model=
"scope.row.isInsert"
></el-checkbox>
</
template
>
</el-table-column>
<el-table-column
label=
"编辑"
min-width=
"5%"
>
<
template
slot-scope=
"scope"
>
<el-checkbox
true-label=
"1"
v-model=
"scope.row.isEdit"
></el-checkbox>
</
template
>
</el-table-column>
<el-table-column
label=
"列表"
min-width=
"5%"
>
<
template
slot-scope=
"scope"
>
<el-checkbox
true-label=
"1"
v-model=
"scope.row.isList"
></el-checkbox>
</
template
>
</el-table-column>
<el-table-column
label=
"查询"
min-width=
"5%"
>
<
template
slot-scope=
"scope"
>
<el-checkbox
true-label=
"1"
v-model=
"scope.row.isQuery"
></el-checkbox>
</
template
>
</el-table-column>
<el-table-column
label=
"查询方式"
min-width=
"10%"
>
<
template
slot-scope=
"scope"
>
<el-select
v-model=
"scope.row.queryType"
>
<el-option
label=
"="
value=
"EQ"
/>
<el-option
label=
"!="
value=
"NE"
/>
<el-option
label=
">"
value=
"GT"
/>
<el-option
label=
">="
value=
"GTE"
/>
<el-option
label=
"
<
"
value=
"LT"
/>
<el-option
label=
"
<
="
value=
"LTE"
/>
<el-option
label=
"LIKE"
value=
"LIKE"
/>
<el-option
label=
"BETWEEN"
value=
"BETWEEN"
/>
</el-select>
</
template
>
</el-table-column>
<el-table-column
label=
"必填"
min-width=
"5%"
>
<
template
slot-scope=
"scope"
>
<el-checkbox
true-label=
"1"
v-model=
"scope.row.isRequired"
></el-checkbox>
</
template
>
</el-table-column>
<el-table-column
label=
"显示类型"
min-width=
"12%"
>
<
template
slot-scope=
"scope"
>
<el-select
v-model=
"scope.row.htmlType"
>
<el-option
label=
"文本框"
value=
"input"
/>
<el-option
label=
"文本域"
value=
"textarea"
/>
<el-option
label=
"下拉框"
value=
"select"
/>
<el-option
label=
"单选框"
value=
"radio"
/>
<el-option
label=
"复选框"
value=
"checkbox"
/>
<el-option
label=
"日期控件"
value=
"datetime"
/>
<el-option
label=
"图片上传"
value=
"imageUpload"
/>
<el-option
label=
"文件上传"
value=
"fileUpload"
/>
<el-option
label=
"富文本控件"
value=
"editor"
/>
</el-select>
</
template
>
</el-table-column>
<el-table-column
label=
"字典类型"
min-width=
"12%"
>
<
template
slot-scope=
"scope"
>
<el-select
v-model=
"scope.row.dictType"
clearable
filterable
placeholder=
"请选择"
>
<el-option
v-for=
"dict in dictOptions"
:key=
"dict.dictType"
:label=
"dict.dictName"
:value=
"dict.dictType"
>
<span
style=
"float: left"
>
{{
dict
.
dictName
}}
</span>
<span
style=
"float: right; color: #8492a6; font-size: 13px"
>
{{
dict
.
dictType
}}
</span>
</el-option>
</el-select>
</
template
>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane
label=
"生成信息"
name=
"genInfo"
>
<gen-info-form
ref=
"genInfo"
:info=
"info"
:tables=
"tables"
:menus=
"menus"
/>
</el-tab-pane>
</el-tabs>
<el-form
label-width=
"100px"
>
<el-form-item
style=
"text-align: center;margin-left:-100px;margin-top:10px;"
>
<el-button
type=
"primary"
@
click=
"submitForm()"
>
提交
</el-button>
<el-button
@
click=
"close()"
>
返回
</el-button>
</el-form-item>
</el-form>
</el-card>
</template>
<
script
>
import
{
getGenTable
,
updateGenTable
}
from
"
@/api/tool/gen
"
;
import
{
optionselect
as
getDictOptionselect
}
from
"
@/api/system/dict/type
"
;
import
{
listMenu
as
getMenuTreeselect
}
from
"
@/api/system/menu
"
;
import
basicInfoForm
from
"
./basicInfoForm
"
;
import
genInfoForm
from
"
./genInfoForm
"
;
import
Sortable
from
'
sortablejs
'
export
default
{
name
:
"
GenEdit
"
,
components
:
{
basicInfoForm
,
genInfoForm
},
data
()
{
return
{
// 选中选项卡的 name
activeName
:
"
cloum
"
,
// 表格的高度
tableHeight
:
document
.
documentElement
.
scrollHeight
-
245
+
"
px
"
,
// 表信息
tables
:
[],
// 表列信息
cloumns
:
[],
// 字典信息
dictOptions
:
[],
// 菜单信息
menus
:
[],
// 表详细信息
info
:
{}
};
},
created
()
{
const
tableId
=
this
.
$route
.
query
&&
this
.
$route
.
query
.
tableId
;
if
(
tableId
)
{
// 获取表详细信息
getGenTable
(
tableId
).
then
(
res
=>
{
this
.
cloumns
=
res
.
data
.
rows
;
this
.
info
=
res
.
data
.
info
;
this
.
tables
=
res
.
data
.
tables
;
});
/** 查询字典下拉列表 */
getDictOptionselect
().
then
(
response
=>
{
this
.
dictOptions
=
response
.
data
;
});
/** 查询菜单下拉列表 */
getMenuTreeselect
().
then
(
response
=>
{
this
.
menus
=
this
.
handleTree
(
response
.
data
,
"
menuId
"
);
});
}
},
methods
:
{
/** 提交按钮 */
submitForm
()
{
const
basicForm
=
this
.
$refs
.
basicInfo
.
$refs
.
basicInfoForm
;
const
genForm
=
this
.
$refs
.
genInfo
.
$refs
.
genInfoForm
;
Promise
.
all
([
basicForm
,
genForm
].
map
(
this
.
getFormPromise
)).
then
(
res
=>
{
const
validateResult
=
res
.
every
(
item
=>
!!
item
);
if
(
validateResult
)
{
const
genTable
=
Object
.
assign
({},
basicForm
.
model
,
genForm
.
model
);
genTable
.
columns
=
this
.
cloumns
;
genTable
.
params
=
{
treeCode
:
genTable
.
treeCode
,
treeName
:
genTable
.
treeName
,
treeParentCode
:
genTable
.
treeParentCode
,
parentMenuId
:
genTable
.
parentMenuId
};
updateGenTable
(
genTable
).
then
(
res
=>
{
this
.
msgSuccess
(
res
.
msg
);
if
(
res
.
code
===
200
)
{
this
.
close
();
}
});
}
else
{
this
.
msgError
(
"
表单校验未通过,请重新检查提交内容
"
);
}
});
},
getFormPromise
(
form
)
{
return
new
Promise
(
resolve
=>
{
form
.
validate
(
res
=>
{
resolve
(
res
);
});
});
},
/** 关闭按钮 */
close
()
{
this
.
$store
.
dispatch
(
"
tagsView/delView
"
,
this
.
$route
);
this
.
$router
.
push
({
path
:
"
/tool/gen
"
,
query
:
{
t
:
Date
.
now
()
,
pageNum
:
this
.
$route
.
query
.
pageNum
}
})
}
},
mounted
()
{
const
el
=
this
.
$refs
.
dragTable
.
$el
.
querySelectorAll
(
"
.el-table__body-wrapper > table > tbody
"
)[
0
];
const
sortable
=
Sortable
.
create
(
el
,
{
handle
:
"
.allowDrag
"
,
onEnd
:
evt
=>
{
const
targetRow
=
this
.
cloumns
.
splice
(
evt
.
oldIndex
,
1
)[
0
];
this
.
cloumns
.
splice
(
evt
.
newIndex
,
0
,
targetRow
);
for
(
let
index
in
this
.
cloumns
)
{
this
.
cloumns
[
index
].
sort
=
parseInt
(
index
)
+
1
;
}
}
});
}
};
</
script
>
ruoyi-ui/src/views/tool/gen/index.vue
View file @
d2b61762
This diff is collapsed.
Click to expand it.
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