Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jeecg
jeecg-boot
提交
da5ace33
J
jeecg-boot
项目概览
jeecg
/
jeecg-boot
上一次同步 3 年多
通知
889
Star
24376
Fork
84
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jeecg-boot
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
da5ace33
编写于
3月 17, 2021
作者:
JEECG低代码平台
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
JeecgBoot2.4.3版本发布——企业级低代码平台
上级
46740970
变更
63
展开全部
隐藏空白更改
内联
并排
Showing
63 changed file
with
8798 addition
and
6611 deletion
+8798
-6611
ant-design-vue-jeecg/.env
ant-design-vue-jeecg/.env
+1
-1
ant-design-vue-jeecg/README.md
ant-design-vue-jeecg/README.md
+2
-2
ant-design-vue-jeecg/package-lock.json
ant-design-vue-jeecg/package-lock.json
+4672
-3806
ant-design-vue-jeecg/package.json
ant-design-vue-jeecg/package.json
+2
-2
ant-design-vue-jeecg/public/index.html
ant-design-vue-jeecg/public/index.html
+2
-2
ant-design-vue-jeecg/src/api/api.js
ant-design-vue-jeecg/src/api/api.js
+5
-2
ant-design-vue-jeecg/src/components/_util/Area.js
ant-design-vue-jeecg/src/components/_util/Area.js
+14
-12
ant-design-vue-jeecg/src/components/jeecg/JEditor.vue
ant-design-vue-jeecg/src/components/jeecg/JEditor.vue
+3
-0
ant-design-vue-jeecg/src/components/jeecg/JModal/index.vue
ant-design-vue-jeecg/src/components/jeecg/JModal/index.vue
+16
-3
ant-design-vue-jeecg/src/components/jeecg/JVxeTable/mixins/JVxeCellMixins.js
...g/src/components/jeecg/JVxeTable/mixins/JVxeCellMixins.js
+5
-1
ant-design-vue-jeecg/src/components/jeecg/JVxeTable/utils/vxeUtils.js
...ue-jeecg/src/components/jeecg/JVxeTable/utils/vxeUtils.js
+27
-0
ant-design-vue-jeecg/src/components/jeecg/modal/JPopupOnlReport.vue
...-vue-jeecg/src/components/jeecg/modal/JPopupOnlReport.vue
+7
-1
ant-design-vue-jeecg/src/components/jeecgbiz/JSelectDepart.vue
...esign-vue-jeecg/src/components/jeecgbiz/JSelectDepart.vue
+1
-1
ant-design-vue-jeecg/src/components/jeecgbiz/modal/JSelectDepartModal.vue
...eecg/src/components/jeecgbiz/modal/JSelectDepartModal.vue
+3
-1
ant-design-vue-jeecg/src/components/layouts/TabLayout.vue
ant-design-vue-jeecg/src/components/layouts/TabLayout.vue
+1
-1
ant-design-vue-jeecg/src/components/layouts/UserLayout.vue
ant-design-vue-jeecg/src/components/layouts/UserLayout.vue
+1
-1
ant-design-vue-jeecg/src/components/page/GlobalHeader.vue
ant-design-vue-jeecg/src/components/page/GlobalHeader.vue
+1
-2
ant-design-vue-jeecg/src/main.js
ant-design-vue-jeecg/src/main.js
+3
-2
ant-design-vue-jeecg/src/mixins/JEditableTableModelMixin.js
ant-design-vue-jeecg/src/mixins/JEditableTableModelMixin.js
+190
-0
ant-design-vue-jeecg/src/mixins/JVxeTableMixin.js
ant-design-vue-jeecg/src/mixins/JVxeTableMixin.js
+5
-2
ant-design-vue-jeecg/src/mixins/JVxeTableModelMixin.js
ant-design-vue-jeecg/src/mixins/JVxeTableModelMixin.js
+181
-0
ant-design-vue-jeecg/src/mixins/JeecgListMixin.js
ant-design-vue-jeecg/src/mixins/JeecgListMixin.js
+17
-1
ant-design-vue-jeecg/src/utils/JEditableTableUtil.js
ant-design-vue-jeecg/src/utils/JEditableTableUtil.js
+30
-0
ant-design-vue-jeecg/src/utils/authFilter.js
ant-design-vue-jeecg/src/utils/authFilter.js
+4
-4
ant-design-vue-jeecg/src/utils/hasPermission.js
ant-design-vue-jeecg/src/utils/hasPermission.js
+2
-2
ant-design-vue-jeecg/src/utils/request.js
ant-design-vue-jeecg/src/utils/request.js
+1
-1
ant-design-vue-jeecg/src/utils/rules.js
ant-design-vue-jeecg/src/utils/rules.js
+110
-0
ant-design-vue-jeecg/src/utils/util.js
ant-design-vue-jeecg/src/utils/util.js
+0
-1
ant-design-vue-jeecg/src/views/jeecg/JVXETableDemo.vue
ant-design-vue-jeecg/src/views/jeecg/JVXETableDemo.vue
+6
-1
ant-design-vue-jeecg/src/views/jeecg/JVxeDemo/JVxeDemo3.vue
ant-design-vue-jeecg/src/views/jeecg/JVxeDemo/JVxeDemo3.vue
+132
-0
ant-design-vue-jeecg/src/views/jeecg/JeecgOrderMainListForJVxeTable.vue
...-jeecg/src/views/jeecg/JeecgOrderMainListForJVxeTable.vue
+215
-0
ant-design-vue-jeecg/src/views/jeecg/modules/JeecgDemoModal.vue
...sign-vue-jeecg/src/views/jeecg/modules/JeecgDemoModal.vue
+51
-92
ant-design-vue-jeecg/src/views/jeecg/modules/JeecgDemoTabsModal.vue
...-vue-jeecg/src/views/jeecg/modules/JeecgDemoTabsModal.vue
+1
-1
ant-design-vue-jeecg/src/views/jeecg/modules/JeecgOrderMainModal.vue
...vue-jeecg/src/views/jeecg/modules/JeecgOrderMainModal.vue
+76
-103
ant-design-vue-jeecg/src/views/jeecg/modules/JeecgOrderModalForJEditableTable.vue
.../views/jeecg/modules/JeecgOrderModalForJEditableTable.vue
+20
-49
ant-design-vue-jeecg/src/views/jeecg/modules/JeecgOrderModalForJVexTable.vue
...g/src/views/jeecg/modules/JeecgOrderModalForJVexTable.vue
+312
-0
ant-design-vue-jeecg/src/views/jeecg/tablist/form/JeecgOrderCustomerModal.vue
.../src/views/jeecg/tablist/form/JeecgOrderCustomerModal.vue
+33
-91
ant-design-vue-jeecg/src/views/jeecg/tablist/form/JeecgOrderDMainModal.vue
...ecg/src/views/jeecg/tablist/form/JeecgOrderDMainModal.vue
+32
-40
ant-design-vue-jeecg/src/views/jeecg/tablist/form/JeecgOrderTicketModal.vue
...cg/src/views/jeecg/tablist/form/JeecgOrderTicketModal.vue
+30
-33
ant-design-vue-jeecg/src/views/system/DepartList.vue
ant-design-vue-jeecg/src/views/system/DepartList.vue
+44
-78
ant-design-vue-jeecg/src/views/system/DepartListSync.vue
ant-design-vue-jeecg/src/views/system/DepartListSync.vue
+679
-0
ant-design-vue-jeecg/src/views/system/NewPermissionList.vue
ant-design-vue-jeecg/src/views/system/NewPermissionList.vue
+1
-2
ant-design-vue-jeecg/src/views/system/PermissionList.vue
ant-design-vue-jeecg/src/views/system/PermissionList.vue
+1
-2
ant-design-vue-jeecg/src/views/system/RoleUserList.vue
ant-design-vue-jeecg/src/views/system/RoleUserList.vue
+1
-4
ant-design-vue-jeecg/src/views/system/SysCategoryList.vue
ant-design-vue-jeecg/src/views/system/SysCategoryList.vue
+10
-8
ant-design-vue-jeecg/src/views/system/UserList.vue
ant-design-vue-jeecg/src/views/system/UserList.vue
+2
-2
ant-design-vue-jeecg/src/views/system/modules/DepartModal.vue
...design-vue-jeecg/src/views/system/modules/DepartModal.vue
+53
-53
ant-design-vue-jeecg/src/views/system/modules/DepartWindow.vue
...esign-vue-jeecg/src/views/system/modules/DepartWindow.vue
+0
-2
ant-design-vue-jeecg/src/views/system/modules/DeptUserInfo.vue
...esign-vue-jeecg/src/views/system/modules/DeptUserInfo.vue
+3
-11
ant-design-vue-jeecg/src/views/system/modules/DictItemModal.vue
...sign-vue-jeecg/src/views/system/modules/DictItemModal.vue
+36
-36
ant-design-vue-jeecg/src/views/system/modules/DictModal.vue
ant-design-vue-jeecg/src/views/system/modules/DictModal.vue
+29
-30
ant-design-vue-jeecg/src/views/system/modules/PermissionDataRuleModal.vue
...eecg/src/views/system/modules/PermissionDataRuleModal.vue
+34
-41
ant-design-vue-jeecg/src/views/system/modules/PermissionModal.vue
...gn-vue-jeecg/src/views/system/modules/PermissionModal.vue
+74
-135
ant-design-vue-jeecg/src/views/system/modules/RoleModal.vue
ant-design-vue-jeecg/src/views/system/modules/RoleModal.vue
+37
-66
ant-design-vue-jeecg/src/views/system/modules/SysAnnouncementModal.vue
...e-jeecg/src/views/system/modules/SysAnnouncementModal.vue
+51
-51
ant-design-vue-jeecg/src/views/system/modules/SysCategoryModal.vue
...n-vue-jeecg/src/views/system/modules/SysCategoryModal.vue
+24
-59
ant-design-vue-jeecg/src/views/system/modules/SysDepartRoleModal.vue
...vue-jeecg/src/views/system/modules/SysDepartRoleModal.vue
+27
-32
ant-design-vue-jeecg/src/views/system/modules/SysPositionModal.vue
...n-vue-jeecg/src/views/system/modules/SysPositionModal.vue
+27
-38
ant-design-vue-jeecg/src/views/system/modules/TenantForm.vue
ant-design-vue-jeecg/src/views/system/modules/TenantForm.vue
+37
-41
ant-design-vue-jeecg/src/views/system/modules/TenantModal.vue
...design-vue-jeecg/src/views/system/modules/TenantModal.vue
+2
-3
ant-design-vue-jeecg/src/views/system/modules/UserModal.vue
ant-design-vue-jeecg/src/views/system/modules/UserModal.vue
+192
-384
ant-design-vue-jeecg/src/views/user/Login.vue
ant-design-vue-jeecg/src/views/user/Login.vue
+7
-1
ant-design-vue-jeecg/yarn.lock
ant-design-vue-jeecg/yarn.lock
+1213
-1271
未找到文件。
ant-design-vue-jeecg/.env
浏览文件 @
da5ace33
NODE_ENV=production
VUE_APP_PLATFORM_NAME=JeecgBoot 企业级
快速开发
平台
VUE_APP_PLATFORM_NAME=JeecgBoot 企业级
低代码
平台
VUE_APP_SSO=false
\ No newline at end of file
ant-design-vue-jeecg/README.md
浏览文件 @
da5ace33
Ant Design Jeecg Vue
====
当前最新版本: 2.4.
2(发布日期:20210126
)
当前最新版本: 2.4.
3(发布日期:20210322
)
Overview
----
基于
[
Ant Design of Vue
](
https://vuecomponent.github.io/ant-design-vue/docs/vue/introduce-cn/
)
实现的 Ant Design Pro Vue 版
Jeecg-boot 的前段UI框架,采用前后端分离方案,提供强大代码生成器的
快速开发
平台。
Jeecg-boot 的前段UI框架,采用前后端分离方案,提供强大代码生成器的
低代码
平台。
前端页面代码和后端功能代码一键生成,不需要写任何代码,保持jeecg一贯的强大!!
...
...
ant-design-vue-jeecg/package-lock.json
浏览文件 @
da5ace33
此差异已折叠。
点击以展开。
ant-design-vue-jeecg/package.json
浏览文件 @
da5ace33
{
"name"
:
"vue-antd-jeecg"
,
"version"
:
"2.4.
2
"
,
"version"
:
"2.4.
3
"
,
"private"
:
true
,
"scripts"
:
{
"pre"
:
"cnpm install || yarn --registry https://registry.npm.taobao.org || npm install --registry https://registry.npm.taobao.org "
,
...
...
@@ -10,8 +10,8 @@
"lint"
:
"vue-cli-service lint"
},
"dependencies"
:
{
"@jeecg/antd-online-mini"
:
"2.4.22-beta"
,
"ant-design-vue"
:
"^1.7.2"
,
"@jeecg/antd-online-mini"
:
"2.4.3-RC"
,
"@antv/data-set"
:
"^0.11.4"
,
"viser-vue"
:
"^2.4.8"
,
"axios"
:
"^0.18.0"
,
...
...
ant-design-vue-jeecg/public/index.html
浏览文件 @
da5ace33
...
...
@@ -5,7 +5,7 @@
<meta
charset=
"utf-8"
>
<meta
http-equiv=
"X-UA-Compatible"
content=
"IE=edge"
>
<meta
name=
"viewport"
content=
"width=device-width,initial-scale=1.0"
>
<title>
JeecgBoot 企业级
快速开发
平台
</title>
<title>
JeecgBoot 企业级
低代码
平台
</title>
<link
rel=
"icon"
href=
"<%= BASE_URL %>logo.png"
>
<script
src=
"<%= BASE_URL %>cdn/babel-polyfill/polyfill_7_2_5.js"
></script>
<style>
...
...
@@ -251,7 +251,7 @@
<div
id=
"loader"
></div>
<div
class=
"loader-section section-left"
></div>
<div
class=
"loader-section section-right"
></div>
<div
class=
"load_title"
>
正在加载 JeecgBoot
快速开发
平台,请耐心等待
<div
class=
"load_title"
>
正在加载 JeecgBoot
低代码
平台,请耐心等待
</div>
</div>
...
...
ant-design-vue-jeecg/src/api/api.js
浏览文件 @
da5ace33
...
...
@@ -38,6 +38,7 @@ const queryPermissionRule = (params)=>getAction("/sys/permission/queryPermission
// 部门管理
const
queryDepartTreeList
=
(
params
)
=>
getAction
(
"
/sys/sysDepart/queryTreeList
"
,
params
);
const
queryDepartTreeSync
=
(
params
)
=>
getAction
(
"
/sys/sysDepart/queryDepartTreeSync
"
,
params
);
const
queryIdTree
=
(
params
)
=>
getAction
(
"
/sys/sysDepart/queryIdTree
"
,
params
);
const
queryParentName
=
(
params
)
=>
getAction
(
"
/sys/sysDepart/queryParentName
"
,
params
);
const
searchByKeywords
=
(
params
)
=>
getAction
(
"
/sys/sysDepart/searchBy
"
,
params
);
...
...
@@ -52,7 +53,6 @@ const saveDeptRolePermission = (params)=>postAction("/sys/sysDepartPermission/sa
const
queryMyDepartTreeList
=
(
params
)
=>
getAction
(
"
/sys/sysDepart/queryMyDeptTreeList
"
,
params
);
//日志管理
//const getLogList = (params)=>getAction("/sys/log/list",params);
const
deleteLog
=
(
params
)
=>
deleteAction
(
"
/sys/log/delete
"
,
params
);
const
deleteLogList
=
(
params
)
=>
deleteAction
(
"
/sys/log/deleteBatch
"
,
params
);
...
...
@@ -69,7 +69,7 @@ export const ajaxGetDictItems = (code, params)=>getAction(`/sys/dict/getDictItem
function
getDictItemsFromCache
(
dictCode
)
{
if
(
Vue
.
ls
.
get
(
UI_CACHE_DB_DICT_DATA
)
&&
Vue
.
ls
.
get
(
UI_CACHE_DB_DICT_DATA
)[
dictCode
])
{
let
dictItems
=
Vue
.
ls
.
get
(
UI_CACHE_DB_DICT_DATA
)[
dictCode
];
console
.
log
(
"
-----------getDictItemsFromCache----------dictCode=
"
+
dictCode
+
"
---- dictItems=
"
,
dictItems
)
//
console.log("-----------getDictItemsFromCache----------dictCode="+dictCode+"---- dictItems=",dictItems)
return
dictItems
;
}
}
...
...
@@ -101,6 +101,8 @@ export const transitRESTful = {
}
export
{
// imgView,
// doMian,
addRole
,
editRole
,
checkRoleCode
,
...
...
@@ -124,6 +126,7 @@ export {
getPermissionRuleList
,
queryPermissionRule
,
queryDepartTreeList
,
queryDepartTreeSync
,
queryIdTree
,
queryParentName
,
searchByKeywords
,
...
...
ant-design-vue-jeecg/src/components/_util/Area.js
浏览文件 @
da5ace33
...
...
@@ -12,13 +12,13 @@ export default class Area {
let
arr
=
[]
const
province
=
pcaa
[
'
86
'
]
Object
.
keys
(
province
).
map
(
key
=>
{
arr
.
push
({
id
:
key
,
text
:
province
[
key
],
pid
:
'
86
'
});
arr
.
push
({
id
:
key
,
text
:
province
[
key
],
pid
:
'
86
'
,
index
:
1
});
const
city
=
pcaa
[
key
];
Object
.
keys
(
city
).
map
(
key2
=>
{
arr
.
push
({
id
:
key2
,
text
:
city
[
key2
],
pid
:
key
});
arr
.
push
({
id
:
key2
,
text
:
city
[
key2
],
pid
:
key
,
index
:
2
});
const
qu
=
pcaa
[
key2
];
Object
.
keys
(
qu
).
map
(
key3
=>
{
arr
.
push
({
id
:
key3
,
text
:
qu
[
key3
],
pid
:
key2
});
arr
.
push
({
id
:
key3
,
text
:
qu
[
key3
],
pid
:
key2
,
index
:
3
});
})
})
})
...
...
@@ -45,33 +45,35 @@ export default class Area {
return
''
}
let
arr
=
[]
this
.
getAreaBycode
(
code
,
arr
);
this
.
getAreaBycode
(
code
,
arr
,
3
);
return
arr
.
join
(
'
/
'
)
}
getRealCode
(
code
){
let
arr
=
[]
this
.
getPcode
(
code
,
arr
)
this
.
getPcode
(
code
,
arr
,
3
)
return
arr
;
}
getPcode
(
id
,
arr
){
getPcode
(
id
,
arr
,
index
){
for
(
let
item
of
this
.
all
){
if
(
item
.
id
===
id
){
if
(
item
.
id
===
id
&&
item
.
index
==
index
){
arr
.
unshift
(
id
)
if
(
item
.
pid
!=
'
86
'
){
this
.
getPcode
(
item
.
pid
,
arr
)
this
.
getPcode
(
item
.
pid
,
arr
,
--
index
)
}
}
}
}
getAreaBycode
(
code
,
arr
){
//console.log("this.all.length",this.all)
getAreaBycode
(
code
,
arr
,
index
){
for
(
let
item
of
this
.
all
){
if
(
item
.
id
===
code
){
if
(
item
.
id
===
code
&&
item
.
index
==
index
){
arr
.
unshift
(
item
.
text
);
this
.
getAreaBycode
(
item
.
pid
,
arr
)
if
(
item
.
pid
!=
'
86
'
){
this
.
getAreaBycode
(
item
.
pid
,
arr
,
--
index
)
}
}
}
}
...
...
ant-design-vue-jeecg/src/components/jeecg/JEditor.vue
浏览文件 @
da5ace33
...
...
@@ -128,6 +128,9 @@
this
.
reload
()
}
})
//update--begin--autor:liusq-----date:20210316------for:富文本编辑器tab父组件可能导致的赋值问题------
this
.
reload
()
//update--end--autor:liusq-----date:20210316------for:富文本编辑器tab父组件可能导致的赋值问题------
}
else
{
//update--begin--autor:wangshuai-----date:20200724------for:富文本编辑器切换tab无法修改------
let
tabLayout
=
getVmParentByName
(
this
,
'
TabLayout
'
)
...
...
ant-design-vue-jeecg/src/components/jeecg/JModal/index.vue
浏览文件 @
da5ace33
...
...
@@ -8,10 +8,11 @@
v-on=
"$listeners"
@
ok=
"handleOk"
@
cancel=
"handleCancel"
destroyOnClose
>
<slot></slot>
<!--有设置标题-->
<template
v-if=
"!isNoTitle"
slot=
"title"
>
<a-row
class=
"j-modal-title-row"
type=
"flex"
>
<a-col
class=
"left"
>
...
...
@@ -22,6 +23,14 @@
</a-col>
</a-row>
</
template
>
<!--没有设置标题-->
<
template
v-else
slot=
"title"
>
<a-row
class=
"j-modal-title-row"
type=
"flex"
>
<a-col
v-if=
"switchFullscreen"
class=
"right"
@
click=
"toggleFullscreen"
>
<a-button
class=
"ant-modal-close ant-modal-close-x"
ghost
type=
"link"
:icon=
"fullscreenButtonIcon"
/>
</a-col>
</a-row>
</
template
>
<!-- 处理 scopedSlots -->
<
template
v-for=
"slotName of scopedSlotsKeys"
:slot=
"slotName"
>
...
...
@@ -161,7 +170,6 @@
<
style
lang=
"less"
>
.j-modal-box {
&.fullscreen {
top: 0;
left: 0;
...
...
@@ -190,7 +198,6 @@
height: calc(100% - 55px);
}
}
&.no-title.no-footer {
.ant-modal-body {
height: 100%;
...
...
@@ -217,6 +224,12 @@
}
}
}
&.no-title{
.ant-modal-header {
padding: 0px 24px;
border-bottom: 0px !important;
}
}
}
@media (max-width: 767px) {
...
...
ant-design-vue-jeecg/src/components/jeecg/JVxeTable/mixins/JVxeCellMixins.js
浏览文件 @
da5ace33
...
...
@@ -298,7 +298,11 @@ export function dispatchEvent({cell, $event}, className, handler) {
handler
(
element
[
0
])
}
else
{
// 模拟触发点击事件
element
[
0
].
dispatchEvent
(
$event
)
console
.
log
(
$event
)
if
(
$event
){
console
.
log
(
"
$event===>
"
,
$event
)
element
[
0
].
dispatchEvent
(
$event
)
}
}
}
},
10
)
...
...
ant-design-vue-jeecg/src/components/jeecg/JVxeTable/utils/vxeUtils.js
浏览文件 @
da5ace33
...
...
@@ -141,6 +141,33 @@ export async function validateFormAndTables(form, cases, autoJumpTab) {
return
dataMap
}
/**
* 一次性验证主表单和所有的次表单
* @param form 主表单 form 对象
* @param cases 接收一个数组,每项都是一个JVxeTable实例
* @param autoJumpTab
* @returns {Promise<any>}
* @author sunjianlei
*/
export
async
function
validateFormModelAndTables
(
form
,
formData
,
cases
,
autoJumpTab
)
{
if
(
!
(
form
&&
typeof
form
.
validate
===
'
function
'
))
{
throw
`form 参数需要的是一个form对象,而传入的却是
${
typeof
form
}
`
}
let
dataMap
=
{}
let
values
=
await
new
Promise
((
resolve
,
reject
)
=>
{
// 验证主表表单
form
.
validate
((
valid
,
obj
)
=>
{
valid
?
resolve
(
formData
):
reject
({
error
:
VALIDATE_FAILED
,
originError
:
valid
})
})
})
Object
.
assign
(
dataMap
,
{
formValue
:
values
})
// 验证所有子表的表单
let
subData
=
await
validateTables
(
cases
,
autoJumpTab
)
// 合并最终数据
dataMap
=
Object
.
assign
(
dataMap
,
{
tablesValue
:
subData
})
return
dataMap
}
/**
* 验证并获取一个或多个表格的所有值
*
...
...
ant-design-vue-jeecg/src/components/jeecg/modal/JPopupOnlReport.vue
浏览文件 @
da5ace33
...
...
@@ -342,7 +342,13 @@
combineRowKey
(
record
){
let
res
=
''
Object
.
keys
(
record
).
forEach
(
key
=>
{
res
+=
record
[
key
]
//update-begin---author:liusq Date:20210203 for:pop选择器列主键问题 issues/I29P9Q------------
if
(
key
==
'
id
'
){
res
=
record
[
key
]
+
res
}
else
{
res
+=
record
[
key
]
}
//update-end---author:liusq Date:20210203 for:pop选择器列主键问题 issues/I29P9Q------------
})
if
(
res
.
length
>
50
){
res
=
res
.
substring
(
0
,
50
)
...
...
ant-design-vue-jeecg/src/components/jeecgbiz/JSelectDepart.vue
浏览文件 @
da5ace33
...
...
@@ -95,7 +95,6 @@
}).
join
(
'
,
'
)
}
//update-end-author:lvdandan date:20200513 for:TESTA-438 部门选择组件自定义返回值,数据无法回填
this
.
backDeparInfo
()
},
//返回选中的部门信息
backDeparInfo
(){
...
...
@@ -128,6 +127,7 @@
this
.
departIds
=
idstr
}
this
.
$emit
(
"
change
"
,
value
)
this
.
backDeparInfo
()
},
getDepartNames
(){
return
this
.
departNames
...
...
ant-design-vue-jeecg/src/components/jeecgbiz/modal/JSelectDepartModal.vue
浏览文件 @
da5ace33
...
...
@@ -167,7 +167,9 @@
if
(
!
this
.
checkedKeys
||
this
.
checkedKeys
.
length
==
0
){
this
.
$emit
(
"
ok
"
,
''
)
}
else
{
this
.
$emit
(
"
ok
"
,
this
.
checkedRows
,
this
.
checkedKeys
.
join
(
"
,
"
))
let
checkRow
=
this
.
getCheckedRows
(
this
.
checkedKeys
)
let
keyStr
=
this
.
checkedKeys
.
join
(
"
,
"
)
this
.
$emit
(
"
ok
"
,
checkRow
,
keyStr
)
}
this
.
handleClear
()
},
...
...
ant-design-vue-jeecg/src/components/layouts/TabLayout.vue
浏览文件 @
da5ace33
...
...
@@ -171,7 +171,7 @@
// update-begin-author:sunjianlei date:20200120 for: 动态更改页面标题
changeTitle
(
title
)
{
let
projectTitle
=
"
Jeecg-Boot 企业级
快速开发
平台
"
let
projectTitle
=
"
Jeecg-Boot 企业级
低代码
平台
"
// 首页特殊处理
if
(
this
.
$route
.
path
===
indexKey
)
{
document
.
title
=
projectTitle
...
...
ant-design-vue-jeecg/src/components/layouts/UserLayout.vue
浏览文件 @
da5ace33
...
...
@@ -9,7 +9,7 @@
</a>
</div>
<div
class=
"desc"
>
Jeecg Boot 是中国最具影响力的 企业级
快速开发
平台
Jeecg Boot 是中国最具影响力的 企业级
低代码
平台
</div>
</div>
...
...
ant-design-vue-jeecg/src/components/page/GlobalHeader.vue
浏览文件 @
da5ace33
...
...
@@ -17,7 +17,7 @@
:type=
"collapsed ? 'menu-unfold' : 'menu-fold'"
@
click=
"toggle"
/>
<span
v-if=
"device === 'desktop'"
>
欢迎进入 Jeecg-Boot 企业级
快速开发
平台
</span>
<span
v-if=
"device === 'desktop'"
>
欢迎进入 Jeecg-Boot 企业级
低代码
平台
</span>
<span
v-else
>
Jeecg-Boot
</span>
<user-menu
:theme=
"theme"
/>
...
...
@@ -50,7 +50,6 @@
import
UserMenu
from
'
../tools/UserMenu
'
import
SMenu
from
'
../menu/
'
import
Logo
from
'
../tools/Logo
'
import
{
mixin
}
from
'
@/utils/mixin.js
'
export
default
{
...
...
ant-design-vue-jeecg/src/main.js
浏览文件 @
da5ace33
...
...
@@ -20,7 +20,6 @@ import 'ant-design-vue/dist/antd.less'; // or 'ant-design-vue/dist/antd.less'
import
'
@/permission
'
// permission control
import
'
@/utils/filter
'
// base filter
import
Print
from
'
vue-print-nb-jeecg
'
/*import '@babel/polyfill'*/
import
preview
from
'
vue-photo-preview
'
import
'
vue-photo-preview/dist/skin.css
'
import
SSO
from
'
@/cas/sso.js
'
...
...
@@ -47,7 +46,9 @@ import '@/assets/less/JAreaLinkage.less'
import
VueAreaLinkage
from
'
vue-area-linkage
'
import
'
@/components/jeecg/JVxeTable/install
'
import
'
@/components/JVxeCells/install
'
//表单验证
import
{
rules
}
from
'
@/utils/rules
'
Vue
.
prototype
.
rules
=
rules
Vue
.
config
.
productionTip
=
false
Vue
.
use
(
Storage
,
config
.
storageOptions
)
Vue
.
use
(
Antd
)
...
...
ant-design-vue-jeecg/src/mixins/JEditableTableModelMixin.js
0 → 100644
浏览文件 @
da5ace33
import
JEditableTable
from
'
@/components/jeecg/JEditableTable
'
import
{
VALIDATE_NO_PASSED
,
getRefPromise
,
validateFormModelAndTables
}
from
'
@/utils/JEditableTableUtil
'
import
{
httpAction
,
getAction
}
from
'
@/api/manage
'
export
const
JEditableTableModelMixin
=
{
components
:
{
JEditableTable
},
data
()
{
return
{
title
:
'
操作
'
,
visible
:
false
,
confirmLoading
:
false
,
model
:{},
labelCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
6
}
},
wrapperCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
18
}
}
}
},
methods
:
{
/** 获取所有的editableTable实例 */
getAllTable
()
{
if
(
!
(
this
.
refKeys
instanceof
Array
))
{
throw
this
.
throwNotArray
(
'
refKeys
'
)
}
let
values
=
this
.
refKeys
.
map
(
key
=>
getRefPromise
(
this
,
key
))
return
Promise
.
all
(
values
)
},
/** 遍历所有的JEditableTable实例 */
eachAllTable
(
callback
)
{
// 开始遍历
this
.
getAllTable
().
then
(
tables
=>
{
tables
.
forEach
((
item
,
index
)
=>
{
if
(
typeof
callback
===
'
function
'
)
{
callback
(
item
,
index
)
}
})
})
},
/** 当点击新增按钮时调用此方法 */
add
()
{
//update-begin-author:lvdandan date:20201113 for:LOWCOD-1049 JEditaTable,子表默认添加一条数据,addDefaultRowNum设置无效 #1930
return
new
Promise
((
resolve
)
=>
{
this
.
tableReset
();
resolve
();
}).
then
(()
=>
{
// 默认新增空数据
let
rowNum
=
this
.
addDefaultRowNum
if
(
typeof
rowNum
!==
'
number
'
)
{
rowNum
=
1
console
.
warn
(
'
由于你没有在 data 中定义 addDefaultRowNum 或 addDefaultRowNum 不是数字,所以默认添加一条空数据,如果不想默认添加空数据,请将定义 addDefaultRowNum 为 0
'
)
}
this
.
eachAllTable
((
item
)
=>
{
item
.
add
(
rowNum
)
})
if
(
typeof
this
.
addAfter
===
'
function
'
)
this
.
addAfter
(
this
.
model
)
this
.
edit
(
this
.
model
)
})
//update-end-author:lvdandan date:20201113 for:LOWCOD-1049 JEditaTable,子表默认添加一条数据,addDefaultRowNum设置无效 #1930
},
/** 当点击了编辑(修改)按钮时调用此方法 */
edit
(
record
)
{
if
(
record
&&
'
{}
'
!=
JSON
.
stringify
(
record
)
&&
record
.
id
){
this
.
tableReset
();
}
if
(
typeof
this
.
editBefore
===
'
function
'
)
this
.
editBefore
(
record
)
this
.
visible
=
true
this
.
activeKey
=
this
.
refKeys
[
0
]
this
.
$refs
.
form
.
resetFields
()
this
.
model
=
Object
.
assign
({},
record
)
if
(
typeof
this
.
editAfter
===
'
function
'
)
this
.
editAfter
(
this
.
model
)
},
/** 关闭弹窗,并将所有JEditableTable实例回归到初始状态 */
close
()
{
this
.
visible
=
false
this
.
$emit
(
'
close
'
)
},
//清空子表table的数据
tableReset
(){
this
.
eachAllTable
((
item
)
=>
{
item
.
clearRow
()
})
},
/** 查询某个tab的数据 */
requestSubTableData
(
url
,
params
,
tab
,
success
)
{
tab
.
loading
=
true
getAction
(
url
,
params
).
then
(
res
=>
{
let
{
result
}
=
res
let
dataSource
=
[]
if
(
result
)
{
if
(
Array
.
isArray
(
result
))
{
dataSource
=
result
}
else
if
(
Array
.
isArray
(
result
.
records
))
{
dataSource
=
result
.
records
}
}
tab
.
dataSource
=
dataSource
typeof
success
===
'
function
'
?
success
(
res
)
:
''
}).
finally
(()
=>
{
tab
.
loading
=
false
})
},
/** 发起请求,自动判断是执行新增还是修改操作 */
request
(
formData
)
{
let
url
=
this
.
url
.
add
,
method
=
'
post
'
if
(
this
.
model
.
id
)
{
url
=
this
.
url
.
edit
method
=
'
put
'
}
this
.
confirmLoading
=
true
httpAction
(
url
,
formData
,
method
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
this
.
$message
.
success
(
res
.
message
)
this
.
$emit
(
'
ok
'
)
this
.
close
()
}
else
{
this
.
$message
.
warning
(
res
.
message
)
}
}).
finally
(()
=>
{
this
.
confirmLoading
=
false
})
},
/* --- handle 事件 --- */
/** ATab 选项卡切换事件 */
handleChangeTabs
(
key
)
{
// 自动重置scrollTop状态,防止出现白屏
getRefPromise
(
this
,
key
).
then
(
editableTable
=>
{
editableTable
.
resetScrollTop
()
})
},
/** 关闭按钮点击事件 */
handleCancel
()
{
this
.
close
()
},
/** 确定按钮点击事件 */
handleOk
()
{
/** 触发表单验证 */
this
.
getAllTable
().
then
(
tables
=>
{
/** 一次性验证主表和所有的次表 */
return
validateFormModelAndTables
(
this
.
$refs
.
form
,
this
.
model
,
tables
)
}).
then
(
allValues
=>
{
/** 一次性验证一对一的所有子表 */
return
this
.
validateSubForm
(
allValues
)
}).
then
(
allValues
=>
{
if
(
typeof
this
.
classifyIntoFormData
!==
'
function
'
)
{
throw
this
.
throwNotFunction
(
'
classifyIntoFormData
'
)
}
let
formData
=
this
.
classifyIntoFormData
(
allValues
)
// 发起请求
return
this
.
request
(
formData
)
}).
catch
(
e
=>
{
if
(
e
.
error
===
VALIDATE_NO_PASSED
)
{
// 如果有未通过表单验证的子表,就自动跳转到它所在的tab
//update--begin--autor:liusq-----date:20210316------for:未通过表单验证跳转tab问题------
this
.
activeKey
=
e
.
index
==
null
?
this
.
activeKey
:
(
e
.
paneKey
?
e
.
paneKey
:
this
.
refKeys
[
e
.
index
])
//update--end--autor:liusq-----date:20210316------for:未通过表单验证跳转tab问题------
}
else
{
console
.
error
(
e
)
}
})
},
//校验所有子表表单
validateSubForm
(
allValues
){
return
new
Promise
((
resolve
)
=>
{
resolve
(
allValues
)
})
},
/* --- throw --- */
/** not a function */
throwNotFunction
(
name
)
{
return
`
${
name
}
未定义或不是一个函数`
},
/** not a array */
throwNotArray
(
name
)
{
return
`
${
name
}
未定义或不是一个数组`
}
}
}
\ No newline at end of file
ant-design-vue-jeecg/src/mixins/JVxeTableMixin.js
浏览文件 @
da5ace33
...
...
@@ -52,10 +52,13 @@ export const JVxeTableMixin = {
rowNum
=
1
console
.
warn
(
'
由于你没有在 data 中定义 addDefaultRowNum 或 addDefaultRowNum 不是数字,所以默认添加一条空数据,如果不想默认添加空数据,请将定义 addDefaultRowNum 为 0
'
)
}
//update-begin-author:taoyan date:20210315 for: 一对多jvex 默认几行不好使了 LOWCOD-1349
this
.
eachAllTable
((
item
)
=>
{
item
.
addRows
()
//item.add(rowNum)
setTimeout
(()
=>
{
item
.
addRows
()
},
30
)
})
//update-end-author:taoyan date:20210315 for: 一对多jvex 默认几行不好使了 LOWCOD-1349
if
(
typeof
this
.
addAfter
===
'
function
'
)
this
.
addAfter
(
this
.
model
)
this
.
edit
({})
},
...
...
ant-design-vue-jeecg/src/mixins/JVxeTableModelMixin.js
0 → 100644
浏览文件 @
da5ace33
import
{
VALIDATE_FAILED
,
getRefPromise
,
validateFormAndTables
,
validateFormModelAndTables
}
from
'
@/components/jeecg/JVxeTable/utils/vxeUtils.js
'
import
{
httpAction
,
getAction
}
from
'
@/api/manage
'
export
const
JVxeTableModelMixin
=
{
data
()
{
return
{
title
:
'
操作
'
,
visible
:
false
,
confirmLoading
:
false
,
scrolling
:
true
,
model
:
{},
labelCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
6
}
},
wrapperCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
18
}
}
}
},
methods
:
{
/** 获取所有的JVxeTable实例 */
getAllTable
()
{
if
(
!
(
this
.
refKeys
instanceof
Array
))
{
throw
this
.
throwNotArray
(
'
refKeys
'
)
}
let
values
=
this
.
refKeys
.
map
(
key
=>
getRefPromise
(
this
,
key
))
return
Promise
.
all
(
values
)
},
/** 遍历所有的JVxeTable实例 */
eachAllTable
(
callback
)
{
// 开始遍历
this
.
getAllTable
().
then
(
tables
=>
{
console
.
log
(
"
tables
"
,
tables
)
tables
.
forEach
((
item
,
index
)
=>
{
if
(
typeof
callback
===
'
function
'
)
{
callback
(
item
,
index
)
}
})
})
},
/** 当点击新增按钮时调用此方法 */
add
()
{
if
(
typeof
this
.
addBefore
===
'
function
'
)
this
.
addBefore
()
// 默认新增空数据
let
rowNum
=
this
.
addDefaultRowNum
if
(
typeof
rowNum
!==
'
number
'
)
{
rowNum
=
1
console
.
warn
(
'
由于你没有在 data 中定义 addDefaultRowNum 或 addDefaultRowNum 不是数字,所以默认添加一条空数据,如果不想默认添加空数据,请将定义 addDefaultRowNum 为 0
'
)
}
this
.
eachAllTable
((
item
)
=>
{
//update-begin-author:taoyan date:20210315 for: 一对多jvex 默认几行不好使了 LOWCOD-1349
setTimeout
(()
=>
{
item
.
addRows
()
},
30
)
//update-end-author:taoyan date:20210315 for: 一对多jvex 默认几行不好使了 LOWCOD-1349
})
if
(
typeof
this
.
addAfter
===
'
function
'
)
this
.
addAfter
(
this
.
model
)
this
.
edit
(
this
.
model
)
},
/** 当点击了编辑(修改)按钮时调用此方法 */
edit
(
record
)
{
if
(
typeof
this
.
editBefore
===
'
function
'
)
this
.
editBefore
(
record
)
this
.
visible
=
true
this
.
activeKey
=
this
.
refKeys
[
0
]
this
.
$refs
.
form
.
resetFields
()
this
.
model
=
Object
.
assign
({},
record
)
if
(
typeof
this
.
editAfter
===
'
function
'
)
this
.
editAfter
(
this
.
model
)
},
/** 关闭弹窗,并将所有JVxeTable实例回归到初始状态 */
close
()
{
this
.
visible
=
false
this
.
eachAllTable
((
item
)
=>
{
item
.
_remove
()
})
this
.
$emit
(
'
close
'
)
},
/** 查询某个tab的数据 */
requestSubTableData
(
url
,
params
,
tab
,
success
)
{
tab
.
loading
=
true
getAction
(
url
,
params
).
then
(
res
=>
{
let
{
result
}
=
res
let
dataSource
=
[]
if
(
result
)
{
if
(
Array
.
isArray
(
result
))
{
dataSource
=
result
}
else
if
(
Array
.
isArray
(
result
.
records
))
{
dataSource
=
result
.
records
}
}
tab
.
dataSource
=
dataSource
typeof
success
===
'
function
'
?
success
(
res
)
:
''
}).
finally
(()
=>
{
tab
.
loading
=
false
})
},
/** 发起请求,自动判断是执行新增还是修改操作 */
request
(
formData
)
{
let
url
=
this
.
url
.
add
,
method
=
'
post
'
if
(
this
.
model
.
id
)
{
url
=
this
.
url
.
edit
method
=
'
put
'
}
this
.
confirmLoading
=
true
console
.
log
(
"
formData===>
"
,
formData
);
httpAction
(
url
,
formData
,
method
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
this
.
$message
.
success
(
res
.
message
)
this
.
$emit
(
'
ok
'
)
this
.
close
()
}
else
{
this
.
$message
.
warning
(
res
.
message
)
}
}).
finally
(()
=>
{
this
.
confirmLoading
=
false
})
},
/* --- handle 事件 --- */
/** ATab 选项卡切换事件 */
handleChangeTabs
(
key
)
{
// 自动重置scrollTop状态,防止出现白屏
getRefPromise
(
this
,
key
).
then
(
vxeTable
=>
{
vxeTable
.
resetScrollTop
()
})
},
/** 关闭按钮点击事件 */
handleCancel
()
{
this
.
close
()
},
/** 确定按钮点击事件 */
handleOk
()
{
/** 触发表单验证 */
this
.
getAllTable
().
then
(
tables
=>
{
/** 一次性验证主表和所有的次表 */
return
validateFormModelAndTables
(
this
.
$refs
.
form
,
this
.
model
,
tables
)
}).
then
(
allValues
=>
{
/** 一次性验证一对一的所有子表 */
return
this
.
validateSubForm
(
allValues
)
}).
then
(
allValues
=>
{
if
(
typeof
this
.
classifyIntoFormData
!==
'
function
'
)
{
throw
this
.
throwNotFunction
(
'
classifyIntoFormData
'
)
}
let
formData
=
this
.
classifyIntoFormData
(
allValues
)
// 发起请求
return
this
.
request
(
formData
)
}).
catch
(
e
=>
{
if
(
e
.
error
===
VALIDATE_FAILED
)
{
// 如果有未通过表单验证的子表,就自动跳转到它所在的tab
this
.
activeKey
=
e
.
index
==
null
?
this
.
activeKey
:
this
.
refKeys
[
e
.
index
]
}
else
{
console
.
error
(
e
)
}
})
},
//校验所有子表表单
validateSubForm
(
allValues
){
return
new
Promise
((
resolve
)
=>
{
resolve
(
allValues
)
})
},
/* --- throw --- */
/** not a function */
throwNotFunction
(
name
)
{
return
`
${
name
}
未定义或不是一个函数`
},
/** not a array */
throwNotArray
(
name
)
{
return
`
${
name
}
未定义或不是一个数组`
}
}
}
\ No newline at end of file
ant-design-vue-jeecg/src/mixins/JeecgListMixin.js
浏览文件 @
da5ace33
...
...
@@ -66,7 +66,7 @@ export const JeecgListMixin = {
let
head
=
{
'
X-Access-Token
'
:
Vue
.
ls
.
get
(
ACCESS_TOKEN
)}
let
tenantid
=
Vue
.
ls
.
get
(
TENANT_ID
)
if
(
tenantid
){
head
[
'
tenant
_
id
'
]
=
tenantid
head
[
'
tenant
-
id
'
]
=
tenantid
}
return
head
;
}
...
...
@@ -177,6 +177,8 @@ export const JeecgListMixin = {
that
.
loading
=
true
;
deleteAction
(
that
.
url
.
deleteBatch
,
{
ids
:
ids
}).
then
((
res
)
=>
{
if
(
res
.
success
)
{
//重新计算分页问题
that
.
reCalculatePage
(
that
.
selectedRowKeys
.
length
)
that
.
$message
.
success
(
res
.
message
);
that
.
loadData
();
that
.
onClearSelected
();
...
...
@@ -198,6 +200,8 @@ export const JeecgListMixin = {
var
that
=
this
;
deleteAction
(
that
.
url
.
delete
,
{
id
:
id
}).
then
((
res
)
=>
{
if
(
res
.
success
)
{
//重新计算分页问题
that
.
reCalculatePage
(
1
)
that
.
$message
.
success
(
res
.
message
);
that
.
loadData
();
}
else
{
...
...
@@ -205,6 +209,17 @@ export const JeecgListMixin = {
}
});
},
reCalculatePage
(
count
){
//总数量-count
let
total
=
this
.
ipagination
.
total
-
count
;
//获取删除后的分页数
let
currentIndex
=
Math
.
ceil
(
total
/
this
.
ipagination
.
pageSize
);
//删除后的分页数<所在当前页
if
(
currentIndex
<
this
.
ipagination
.
current
){
this
.
ipagination
.
current
=
currentIndex
;
}
console
.
log
(
'
currentIndex
'
,
currentIndex
)
},
handleEdit
:
function
(
record
)
{
this
.
$refs
.
modalForm
.
edit
(
record
);
this
.
$refs
.
modalForm
.
title
=
"
编辑
"
;
...
...
@@ -218,6 +233,7 @@ export const JeecgListMixin = {
handleTableChange
(
pagination
,
filters
,
sorter
)
{
//分页、排序、筛选变化时触发
//TODO 筛选
console
.
log
(
pagination
)
if
(
Object
.
keys
(
sorter
).
length
>
0
)
{
this
.
isorter
.
column
=
sorter
.
field
;
this
.
isorter
.
order
=
"
ascend
"
==
sorter
.
order
?
"
asc
"
:
"
desc
"
...
...
ant-design-vue-jeecg/src/utils/JEditableTableUtil.js
浏览文件 @
da5ace33
...
...
@@ -76,6 +76,36 @@ export function validateFormAndTables(form, cases) {
return
Promise
.
reject
(
error
)
})
}
/**
* 一次性验证主表单和所有的次表单(新版本)
* @param form 主表单 form 对象
* @param cases 接收一个数组,每项都是一个JEditableTable实例
* @returns {Promise<any>}
* @author sunjianlei
*/
export
function
validateFormModelAndTables
(
form
,
values
,
cases
)
{
if
(
!
(
form
&&
typeof
form
.
validate
===
'
function
'
))
{
throw
`form 参数需要的是一个form对象,而传入的却是
${
typeof
form
}
`
}
let
options
=
{}
return
new
Promise
((
resolve
,
reject
)
=>
{
// 验证主表表单
form
.
validate
((
valid
,
obj
)
=>
{
valid
?
resolve
(
values
):
reject
({
error
:
VALIDATE_NO_PASSED
})
})
}).
then
(
values
=>
{
Object
.
assign
(
options
,
{
formValue
:
values
})
// 验证所有子表的表单
return
validateTables
(
cases
)
}).
then
(
all
=>
{
Object
.
assign
(
options
,
{
tablesValue
:
all
})
return
Promise
.
resolve
(
options
)
}).
catch
(
error
=>
{
return
Promise
.
reject
(
error
)
})
}
/**
...
...
ant-design-vue-jeecg/src/utils/authFilter.js
浏览文件 @
da5ace33
...
...
@@ -9,10 +9,10 @@ export function disabledAuthFilter(code,formData) {
}
function
nodeDisabledAuth
(
code
,
formData
){
console
.
log
(
"
页面权限禁用--NODE--开始
"
);
//
console.log("页面权限禁用--NODE--开始");
let
permissionList
=
[];
try
{
console
.
log
(
"
页面权限禁用--NODE--开始
"
,
formData
);
//
console.log("页面权限禁用--NODE--开始",formData);
if
(
formData
)
{
let
bpmList
=
formData
.
permissionList
;
permissionList
=
bpmList
.
filter
(
item
=>
item
.
type
==
'
2
'
)
...
...
@@ -53,7 +53,7 @@ function nodeDisabledAuth(code,formData){
}
function
globalDisabledAuth
(
code
){
console
.
log
(
"
全局页面禁用权限--Global--开始
"
);
//
console.log("全局页面禁用权限--Global--开始");
let
permissionList
=
[];
let
allPermissionList
=
[];
...
...
@@ -106,7 +106,7 @@ function globalDisabledAuth(code){
}
else
{
for
(
let
item2
of
permissionList
)
{
if
(
code
===
item2
.
action
){
console
.
log
(
"
全局页面权限解除禁用--Global--生效
"
);
//
console.log("全局页面权限解除禁用--Global--生效");
gFlag
=
false
;
}
}
...
...
ant-design-vue-jeecg/src/utils/hasPermission.js
浏览文件 @
da5ace33
...
...
@@ -5,7 +5,7 @@ const hasPermission = {
//console.log(options);
Vue
.
directive
(
'
has
'
,
{
inserted
:
(
el
,
binding
,
vnode
)
=>
{
console
.
log
(
"
页面权限控制----
"
);
//
console.log("页面权限控制----");
//console.time()
//节点权限处理,如果命中则不进行全局权限处理
if
(
!
filterNodePermission
(
el
,
binding
,
vnode
)){
...
...
@@ -68,7 +68,7 @@ export function filterNodePermission(el, binding, vnode) {
* 全局权限控制
*/
export
function
filterGlobalPermission
(
el
,
binding
,
vnode
)
{
console
.
log
(
"
全局页面权限--Global--
"
);
//
console.log("全局页面权限--Global--");
let
permissionList
=
[];
let
allPermissionList
=
[];
...
...
ant-design-vue-jeecg/src/utils/request.js
浏览文件 @
da5ace33
...
...
@@ -104,7 +104,7 @@ service.interceptors.request.use(config => {
if
(
!
tenantid
)
{
tenantid
=
0
;
}
config
.
headers
[
'
tenant
_
id
'
]
=
tenantid
config
.
headers
[
'
tenant
-
id
'
]
=
tenantid
//update-end-author:taoyan date:2020707 for:多租户
if
(
config
.
method
==
'
get
'
){
if
(
config
.
url
.
indexOf
(
"
sys/dict/getDictItems
"
)
<
0
){
...
...
ant-design-vue-jeecg/src/utils/rules.js
0 → 100644
浏览文件 @
da5ace33
const
validateMobile
=
(
rule
,
value
,
callback
)
=>
{
let
reg
=
/^1
(
3|4|5|7|8
)\d{9}
$/
if
(
!
reg
.
test
(
value
))
{
callback
(
'
请输入正确手机号
'
)
}
else
{
callback
()
}
}
const
validateEn
=
(
rule
,
value
,
callback
)
=>
{
let
reg
=
/^
[
_a-zA-Z0-9
]
+$/
let
reg2
=
/^.
{4,18}
$/
// 长度为6到18个字符
if
(
value
!==
''
&&
!
reg
.
test
(
value
))
{
callback
(
'
只允许字母、数字、下划线
'
)
}
else
if
(
value
!==
''
&&
!
reg2
.
test
(
value
))
{
callback
(
'
长度6到18个字符
'
)
}
else
{
callback
()
}
}
export
const
rules
=
{
mobile
:
[{
required
:
true
,
message
:
'
请输入手机号
'
,
trigger
:
'
blur
'
},
{
validator
:
validateMobile
,
trigger
:
'
blur
'
}],
userName
:
[{
required
:
true
,
message
:
'
请输入用户名
'
,
trigger
:
'
blur
'
},
{
validator
:
validateEn
}],
email
:
[
{
required
:
false
,
type
:
'
email
'
,
message
:
'
邮箱格式不正确
'
,
trigger
:
'
blur
'
}
],
// 验证自然数
naturalNumber
:
/^
(([
0-9
]
*
[
1-9
][
0-9
]
*
)
|
(
0+
))
$/
,
naturalNumberMsg
:
'
请输入自然数
'
,
// 英文
english
:
/^.
[
A-Za-z
]
+$/
,
englishMsg
:
'
请输入英文字符
'
,
// 座机
telephone
:
/^
\d{3}
-
\d{7,8}
|
\d{4}
-
\d{7,8}
$/
,
telephoneMsg
:
'
请输入正确的座机号
'
,
// 银行卡号码
bankCard
:
/^
[
1-9
]\d{9,19}
$/
,
bankCardMsg
:
'
请输入正确的银行卡号码
'
,
// 证件号码
IDNumber
:
/^
[
a-z0-9A-Z
]{0,50}
$/
,
IDNumberMsg
:
'
请输入正确的证件号码
'
,
// 身份证号码,包括15位和18位的
IDCard
:
/
(
^
[
1-9
]\d{5}(
18|19|
([
23
]\d))\d{2}((
0
[
1-9
])
|
(
10|11|12
))(([
0-2
][
1-9
])
|10|20|30|31
)\d{3}[
0-9Xx
]
$
)
|
(
^
[
1-9
]\d{7}((
0
[
1-9
])
|
(
10|11|12
))(([
0-2
][
1-9
])
|10|20|30|31
)\d{3}
$
)
/
,
IDCardMsg
:
'
请输入正确的身份证号码
'
,
// QQ号码
qq
:
/^
[
1-9
]\d{4,11}
$/
,
qqMsg
:
'
请输入正确的QQ号码
'
,
// 网址, 仅支持http和https开头的
url
:
/^
(
http|https
)
:
\/\/[\w\-
_
]
+
(\.[\w\-
_
]
+
)
+
([\w\-
.,@?^=%&:
/
~+#
]
*
[\w\-
@?^=%&
/
~+#
])?
$/
,
urlMsg
:
'
请输入以http和https开头的网址
'
,
// 0到20位的英文字符和数字
enNum0to20
:
/^
[
a-z0-9A-Z
]{0,20}
$/
,
enNum0to20Msg
:
'
请输入20位以内的英文字符和数字
'
,
// 2到100位的中英文字符和空格
cnEnSpace2to100
:
/^
[
a-zA-Z
\u
4E00-
\u
9FA5
\s
*
]{2,100}
$/
,
cnEnSpace2to100Msg
:
'
请输入2到100位的中英文字符和空格
'
,
// 数字和换行符
numLinefeed
:
/^
[
0-9
\n
*
]
+$/
,
numLinefeedMsg
:
'
请输入数字和换行符
'
,
// 255位以内的字符
char0to255
:
/^.
{0,255}
$/
,
char0to255Msg
:
'
请输入255位以内的字符
'
,
required
:
function
(
min
,
max
)
{
let
rule
=
[{
required
:
true
,
message
:
''
,
trigger
:
'
blur
'
}]
if
(
min
)
{
let
r
=
{
min
:
min
,
message
:
'
最小长度
'
+
min
+
'
位字符
'
}
rule
.
push
(
r
)
}
if
(
max
)
{
let
m
=
{
max
:
max
,
message
:
'
最大长度
'
+
max
+
'
位字符
'
}
rule
.
push
(
m
)
}
return
rule
},
select
:
function
()
{
let
rule
=
[{
required
:
true
,
message
:
''
,
trigger
:
'
change
'
}]
return
rule
},
checked
:
function
(
min
,
max
)
{
let
rule
=
[{
required
:
true
,
type
:
'
array
'
,
message
:
''
,
trigger
:
'
change
'
}]
if
(
min
)
{
let
r
=
{
type
:
'
array
'
,
min
:
min
,
message
:
'
最少选择
'
+
min
+
'
项
'
}
rule
.
push
(
r
)
}
if
(
max
)
{
let
m
=
{
type
:
'
array
'
,
max
:
max
,
message
:
'
最多选择
'
+
max
+
'
项
'
}
rule
.
push
(
m
)
}
return
rule
}
}
/**
* @description 排序值验证,排序值不可以大于255
*/
export
const
validateOrder
=
function
(
rule
,
value
,
callback
)
{
if
(
parseInt
(
value
)
>
255
)
{
return
callback
(
new
Error
(
'
排序值不可以大于255
'
))
}
else
{
callback
()
}
}
ant-design-vue-jeecg/src/utils/util.js
浏览文件 @
da5ace33
...
...
@@ -145,7 +145,6 @@ function generateChildRouters (data) {
component
:
componentPath
,
//component: resolve => require(['@/' + component+'.vue'], resolve),
hidden
:
item
.
hidden
,
//component:()=> import(`@/views/${item.component}.vue`),
meta
:
{
title
:
item
.
meta
.
title
,
icon
:
item
.
meta
.
icon
,
...
...
ant-design-vue-jeecg/src/views/jeecg/JVXETableDemo.vue
浏览文件 @
da5ace33
...
...
@@ -8,6 +8,10 @@
<a-tab-pane
tab=
"高级示例"
key=
"2"
forceRender
>
<j-vxe-demo2/>
</a-tab-pane>
<a-tab-pane
tab=
"联动示例"
key=
"3"
forceRender
>
<j-vxe-demo3/>
</a-tab-pane>
</a-tabs>
...
...
@@ -17,10 +21,11 @@
<
script
>
import
JVxeDemo1
from
'
@views/jeecg/JVxeDemo/JVxeDemo1
'
import
JVxeDemo2
from
'
@views/jeecg/JVxeDemo/JVxeDemo2
'
import
JVxeDemo3
from
'
@views/jeecg/JVxeDemo/JVxeDemo3
'
export
default
{
name
:
'
JVXETableDemo
'
,
components
:
{
JVxeDemo2
,
JVxeDemo1
},
components
:
{
JVxeDemo2
,
JVxeDemo1
,
JVxeDemo3
},
data
()
{
return
{}
},
...
...
ant-design-vue-jeecg/src/views/jeecg/JVxeDemo/JVxeDemo3.vue
0 → 100644
浏览文件 @
da5ace33
<
template
>
<j-vxe-table
ref=
"vTable"
toolbar
row-number
row-selection
keep-source
:height=
"484"
:dataSource=
"dataSource"
:columns=
"columns"
@
valueChange=
"handleValueChange"
/>
</
template
>
<
script
>
import
moment
from
'
moment
'
import
{
randomNumber
,
randomUUID
}
from
'
@/utils/util
'
import
{
JVXETypes
}
from
'
@/components/jeecg/JVxeTable
'
export
default
{
name
:
'
JVxeDemo2
'
,
data
()
{
return
{
columns
:
[
{
title
:
'
省/直辖市/自治区
'
,
key
:
'
s1
'
,
type
:
JVXETypes
.
select
,
width
:
'
240px
'
,
options
:
[],
placeholder
:
'
请选择${title}
'
},
{
title
:
'
市
'
,
key
:
'
s2
'
,
type
:
JVXETypes
.
select
,
width
:
'
240px
'
,
options
:
[],
placeholder
:
'
请选择${title}
'
},
{
title
:
'
县/区
'
,
key
:
'
s3
'
,
type
:
JVXETypes
.
select
,
width
:
'
240px
'
,
options
:
[],
placeholder
:
'
请选择${title}
'
}
],
dataSource
:
[],
mockData
:
[
{
text
:
'
北京市
'
,
value
:
'
110000
'
,
parent
:
null
},
{
text
:
'
天津市
'
,
value
:
'
120000
'
,
parent
:
null
},
{
text
:
'
河北省
'
,
value
:
'
130000
'
,
parent
:
null
},
{
text
:
'
上海市
'
,
value
:
'
310000
'
,
parent
:
null
},
{
text
:
'
北京市
'
,
value
:
'
110100
'
,
parent
:
'
110000
'
},
{
text
:
'
天津市市
'
,
value
:
'
120100
'
,
parent
:
'
120000
'
},
{
text
:
'
石家庄市
'
,
value
:
'
130100
'
,
parent
:
'
130000
'
},
{
text
:
'
唐山市
'
,
value
:
'
130200
'
,
parent
:
'
130000
'
},
{
text
:
'
秦皇岛市
'
,
value
:
'
130300
'
,
parent
:
'
130000
'
},
{
text
:
'
上海市
'
,
value
:
'
310100
'
,
parent
:
'
310000
'
},
{
text
:
'
东城区
'
,
value
:
'
110101
'
,
parent
:
'
110100
'
},
{
text
:
'
西城区
'
,
value
:
'
110102
'
,
parent
:
'
110100
'
},
{
text
:
'
朝阳区
'
,
value
:
'
110105
'
,
parent
:
'
110100
'
},
{
text
:
'
和平区
'
,
value
:
'
120101
'
,
parent
:
'
120100
'
},
{
text
:
'
河东区
'
,
value
:
'
120102
'
,
parent
:
'
120100
'
},
{
text
:
'
河西区
'
,
value
:
'
120103
'
,
parent
:
'
120100
'
},
{
text
:
'
黄浦区
'
,
value
:
'
310101
'
,
parent
:
'
310100
'
},
{
text
:
'
徐汇区
'
,
value
:
'
310104
'
,
parent
:
'
310100
'
},
{
text
:
'
长宁区
'
,
value
:
'
310105
'
,
parent
:
'
310100
'
},
{
text
:
'
长安区
'
,
value
:
'
130102
'
,
parent
:
'
130100
'
},
{
text
:
'
桥西区
'
,
value
:
'
130104
'
,
parent
:
'
130100
'
},
{
text
:
'
新华区
'
,
value
:
'
130105
'
,
parent
:
'
130100
'
},
{
text
:
'
路南区
'
,
value
:
'
130202
'
,
parent
:
'
130200
'
},
{
text
:
'
路北区
'
,
value
:
'
130203
'
,
parent
:
'
130200
'
},
{
text
:
'
古冶区
'
,
value
:
'
130204
'
,
parent
:
'
130200
'
},
{
text
:
'
海港区
'
,
value
:
'
130302
'
,
parent
:
'
130300
'
},
{
text
:
'
山海关区
'
,
value
:
'
130303
'
,
parent
:
'
130300
'
},
{
text
:
'
北戴河区
'
,
value
:
'
130304
'
,
parent
:
'
130300
'
},
]
}
},
created
()
{
// 初始化数据
this
.
columns
[
0
].
options
=
this
.
request
(
null
)
},
methods
:
{
request
(
parentId
)
{
return
this
.
mockData
.
filter
(
i
=>
i
.
parent
===
parentId
)
},
/** 当选项被改变时,联动其他组件 */
handleValueChange
(
event
)
{
const
{
type
,
row
,
column
,
value
,
target
}
=
event
console
.
log
(
"
event
"
,
event
)
if
(
type
===
JVXETypes
.
select
)
{
// 第一列
if
(
column
.
key
===
'
s1
'
)
{
// 设置第二列的 options
console
.
log
(
'
this.request(value)::
'
,
this
.
request
(
value
))
target
.
$refs
.
vxe
.
columns
[
3
].
options
=
this
.
request
(
value
)
// 清空后两列的数据
target
.
setValues
([{
rowKey
:
row
.
id
,
values
:
{
s2
:
''
,
s3
:
''
}
}])
target
.
$refs
.
vxe
.
columns
[
4
].
options
=
[]
}
else
// 第二列
if
(
column
.
key
===
'
s2
'
)
{
target
.
$refs
.
vxe
.
columns
[
4
].
options
=
this
.
request
(
value
)
target
.
setValues
([{
rowKey
:
row
.
id
,
values
:
{
s3
:
''
}
}])
}
}
}
}
}
</
script
>
<
style
scoped
>
</
style
>
\ No newline at end of file
ant-design-vue-jeecg/src/views/jeecg/JeecgOrderMainListForJVxeTable.vue
0 → 100644
浏览文件 @
da5ace33
<
template
>
<a-card
:bordered=
"false"
>
<!-- 查询区域 -->
<div
class=
"table-page-search-wrapper"
>
<a-form
layout=
"inline"
>
<a-row
:gutter=
"24"
>
<a-col
:md=
"6"
:sm=
"24"
>
<a-form-item
label=
"订单号"
>
<a-input
placeholder=
"请输入订单号"
v-model=
"queryParam.orderCode"
></a-input>
</a-form-item>
</a-col>
<a-col
:md=
"6"
:sm=
"24"
>
<a-form-item
label=
"订单类型"
>
<a-select
placeholder=
"请输入订单类型"
v-model=
"queryParam.ctype"
>
<a-select-option
value=
"1"
>
国内订单
</a-select-option>
<a-select-option
value=
"2"
>
国际订单
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col
:md=
"6"
:sm=
"24"
>
<span
style=
"float: left;overflow: hidden;"
class=
"table-page-search-submitButtons"
>
<a-button
type=
"primary"
@
click=
"searchQuery"
icon=
"search"
>
查询
</a-button>
<a-button
type=
"primary"
@
click=
"searchReset"
icon=
"reload"
style=
"margin-left: 8px"
>
重置
</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!-- 操作按钮区域 -->
<div
class=
"table-operator"
>
<a-button
@
click=
"handleAdd"
type=
"primary"
icon=
"plus"
>
新增
</a-button>
<a-dropdown
v-if=
"selectedRowKeys.length > 0"
>
<a-menu
slot=
"overlay"
>
<a-menu-item
key=
"1"
@
click=
"batchDel"
>
<a-icon
type=
"delete"
/>
删除
</a-menu-item>
</a-menu>
<a-button
style=
"margin-left: 8px"
>
批量操作
<a-icon
type=
"down"
/>
</a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<div
class=
"ant-alert ant-alert-info"
style=
"margin-bottom: 16px;"
>
<i
class=
"anticon anticon-info-circle ant-alert-icon"
></i>
<span>
已选择
</span>
<a
style=
"font-weight: 600"
>
{{
selectedRowKeys
.
length
}}
</a>
<span>
项
</span>
<a
style=
"margin-left: 24px"
@
click=
"onClearSelected"
>
清空
</a>
</div>
<a-table
ref=
"table"
size=
"middle"
bordered
rowKey=
"id"
:columns=
"columns"
:dataSource=
"dataSource"
:pagination=
"ipagination"
:loading=
"loading"
:rowSelection=
"
{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
@change="handleTableChange">
<span
slot=
"action"
slot-scope=
"text, record"
>
<a
@
click=
"handleEdit(record)"
>
编辑
</a>
<a-divider
type=
"vertical"
/>
<a-dropdown>
<a
class=
"ant-dropdown-link"
>
更多
<a-icon
type=
"down"
/></a>
<a-menu
slot=
"overlay"
>
<a-menu-item>
<a-popconfirm
title=
"确定删除吗?"
@
confirm=
"() => handleDelete(record.id)"
>
<a>
删除
</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
</a-table>
</div>
<!-- table区域-end -->
<!-- 表单区域 -->
<jeecg-order-modal-for-j-vextable
ref=
"modalForm"
@
ok=
"modalFormOk"
></jeecg-order-modal-for-j-vextable>
</a-card>
</
template
>
<
script
>
import
{
JeecgListMixin
}
from
'
@/mixins/JeecgListMixin
'
import
JeecgOrderModalForJVextable
from
'
./modules/JeecgOrderModalForJVexTable
'
export
default
{
name
:
'
JeecgOrderMainListForJVxeTable
'
,
mixins
:
[
JeecgListMixin
],
components
:
{
JeecgOrderModalForJVextable
},
data
()
{
return
{
description
:
'
订单管理页面
'
,
// 请求参数
url
:
{
list
:
'
/test/jeecgOrderMain/list
'
,
delete
:
'
/test/jeecgOrderMain/delete
'
,
deleteBatch
:
'
/test/jeecgOrderMain/deleteBatch
'
},
// 表头
columns
:
[
{
title
:
'
#
'
,
dataIndex
:
''
,
key
:
'
rowIndex
'
,
width
:
60
,
align
:
'
center
'
,
customRender
:
function
(
t
,
r
,
index
)
{
return
parseInt
(
index
)
+
1
}
},
{
title
:
'
订单号
'
,
align
:
'
center
'
,
dataIndex
:
'
orderCode
'
},
{
title
:
'
订单类型
'
,
align
:
'
center
'
,
dataIndex
:
'
ctype
'
,
customRender
:
(
text
)
=>
{
let
re
=
''
if
(
text
===
'
1
'
)
{
re
=
'
国内订单
'
}
else
if
(
text
===
'
2
'
)
{
re
=
'
国际订单
'
}
return
re
}
},
{
title
:
'
订单日期
'
,
align
:
'
center
'
,
dataIndex
:
'
orderDate
'
},
{
title
:
'
订单金额
'
,
align
:
'
center
'
,
dataIndex
:
'
orderMoney
'
},
{
title
:
'
订单备注
'
,
align
:
'
center
'
,
dataIndex
:
'
content
'
},
{
title
:
'
操作
'
,
dataIndex
:
'
action
'
,
align
:
'
center
'
,
scopedSlots
:
{
customRender
:
'
action
'
}
}
]
}
},
methods
:
{
initDictConfig
()
{
}
}
}
</
script
>
<
style
scoped
>
.ant-card-body
.table-operator
{
margin-bottom
:
18px
;
}
.ant-table-tbody
.ant-table-row
td
{
padding-top
:
15px
;
padding-bottom
:
15px
;
}
.anty-row-operator
button
{
margin
:
0
5px
}
.ant-btn-danger
{
background-color
:
#ffffff
}
.ant-modal-cust-warp
{
height
:
100%
}
.ant-modal-cust-warp
.ant-modal-body
{
height
:
calc
(
100%
-
110px
)
!important
;
overflow-y
:
auto
}
.ant-modal-cust-warp
.ant-modal-content
{
height
:
90%
!important
;
overflow-y
:
hidden
}
</
style
>
\ No newline at end of file
ant-design-vue-jeecg/src/views/jeecg/modules/JeecgDemoModal.vue
浏览文件 @
da5ace33
...
...
@@ -7,80 +7,47 @@
@
ok=
"handleOk"
@
cancel=
"handleCancel"
cancelText=
"关闭"
>
<a-spin
:spinning=
"confirmLoading"
>
<a-form
:form=
"form"
>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"姓名"
hasFeedback
>
<a-input
placeholder=
"请输入姓名"
v-decorator=
"['name',
{}]" />
</a-form-item>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"关键词"
hasFeedback
>
<a-input
placeholder=
"请输入关键词"
v-decorator=
"['keyWord',
{}]" />
</a-form-item>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"打卡时间"
hasFeedback
>
<a-date-picker
showTime
format=
"YYYY-MM-DD HH:mm:ss"
v-decorator=
"[ 'punchTime',
{}]" />
</a-form-item>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"性别"
>
<!--
<a-select
v-decorator=
"['sex',
{}]" placeholder="请选择性别">
<a-select-option
value=
""
>
请选择
</a-select-option>
<a-select-option
value=
"1"
>
男
</a-select-option>
<a-select-option
value=
"2"
>
女
</a-select-option>
</a-select>
-->
<j-dict-select-tag
type=
"radio"
v-decorator=
"['sex',
{}]" :trigger-change="true" dictCode="sex"/>
</a-form-item>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"年龄"
hasFeedback
>
<a-input
placeholder=
"请输入年龄"
v-decorator=
"['age',
{}]" />
</a-form-item>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"生日"
hasFeedback
>
<a-date-picker
v-decorator=
"[ 'birthday',
{}]" />
</a-form-item>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"邮箱"
hasFeedback
>
<a-input
placeholder=
"请输入邮箱"
v-decorator=
"['email',
{}]" />
</a-form-item>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"个人简介"
hasFeedback
>
<a-input
placeholder=
"请输入个人简介"
v-decorator=
"['content',
{}]" />
</a-form-item>
</a-form>
<a-form-model
ref=
"form"
:label-col=
"labelCol"
:wrapper-col=
"wrapperCol"
:model=
"model"
:rules=
"validatorRules"
>
<a-form-model-item
label=
"姓名"
required
prop=
"name"
hasFeedback
>
<a-input
v-model=
"model.name"
placeholder=
"请输入姓名"
/>
</a-form-model-item>
<a-form-model-item
label=
"关键词"
prop=
"keyWord"
hasFeedback
>
<a-input
v-model=
"model.keyWord"
placeholder=
"请输入关键词"
/>
</a-form-model-item>
<a-form-model-item
label=
"打卡时间"
prop=
"punchTime"
hasFeedback
>
<a-date-picker
showTime
valueFormat=
"YYYY-MM-DD HH:mm:ss"
v-model=
"model.punchTime"
/>
</a-form-model-item>
<a-form-model-item
label=
"性别"
prop=
"sex"
hasFeedback
>
<j-dict-select-tag
type=
"radio"
v-model=
"model.sex"
:trigger-change=
"true"
dictCode=
"sex"
/>
</a-form-model-item>
<a-form-model-item
label=
"年龄"
prop=
"age"
hasFeedback
>
<a-input
placeholder=
"请输入年龄"
v-model=
"model.age"
/>
</a-form-model-item>
<a-form-model-item
label=
"生日"
prop=
"age"
hasFeedback
>
<a-date-picker
valueFormat=
"YYYY-MM-DD"
v-model=
"model.birthday"
/>
</a-form-model-item>
<a-form-model-item
label=
"邮箱"
prop=
"email"
hasFeedback
>
<a-input
placeholder=
"请输入邮箱"
v-model=
"model.email"
/>
</a-form-model-item>
<a-form-model-item
label=
"个人简介"
prop=
"content"
hasFeedback
>
<a-input
type=
"textarea"
placeholder=
"请输入个人简介"
v-model=
"model.content"
/>
</a-form-model-item>
</a-form-model>
</a-spin>
</a-modal>
</
template
>
<
script
>
import
{
httpAction
}
from
'
@/api/manage
'
import
pick
from
'
lodash.pick
'
import
moment
from
"
moment
"
export
default
{
name
:
"
JeecgDemoModal
"
,
...
...
@@ -89,18 +56,28 @@
title
:
"
操作
"
,
visible
:
false
,
model
:
{},
layout
:
{
labelCol
:
{
span
:
3
},
wrapperCol
:
{
span
:
14
},
},
labelCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
5
},
sm
:
{
span
:
3
},
},
wrapperCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
16
},
},
confirmLoading
:
false
,
form
:
this
.
$form
.
createForm
(
this
),
validatorRules
:{
name
:
[
{
required
:
true
,
message
:
'
请输入姓名!
'
},
{
min
:
2
,
max
:
30
,
message
:
'
长度在 2 到 30 个字符
'
,
trigger
:
'
blur
'
}
],
email
:
[
{
required
:
false
,
type
:
'
email
'
,
message
:
'
邮箱格式不正确
'
,
trigger
:
'
blur
'
}
]
},
url
:
{
add
:
"
/test/jeecgDemo/add
"
,
...
...
@@ -115,26 +92,19 @@
this
.
edit
({});
},
edit
(
record
)
{
this
.
form
.
resetFields
();
this
.
model
=
Object
.
assign
({},
record
);
this
.
visible
=
true
;
this
.
$nextTick
(()
=>
{
this
.
form
.
setFieldsValue
(
pick
(
this
.
model
,
'
name
'
,
'
keyWord
'
,
'
sex
'
,
'
age
'
,
'
email
'
,
'
content
'
))
//时间格式化
this
.
form
.
setFieldsValue
({
punchTime
:
this
.
model
.
punchTime
?
moment
(
this
.
model
.
punchTime
,
'
YYYY-MM-DD HH:mm:ss
'
):
null
})
this
.
form
.
setFieldsValue
({
birthday
:
this
.
model
.
birthday
?
moment
(
this
.
model
.
birthday
):
null
})
});
},
close
()
{
this
.
$refs
.
form
.
resetFields
();
this
.
$emit
(
'
close
'
);
this
.
visible
=
false
;
},
handleOk
()
{
const
that
=
this
;
// 触发表单验证
this
.
form
.
validateFields
((
err
,
values
)
=>
{
if
(
!
err
)
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
that
.
confirmLoading
=
true
;
let
httpurl
=
''
;
let
method
=
''
;
...
...
@@ -145,13 +115,7 @@
httpurl
+=
this
.
url
.
edit
;
method
=
'
put
'
;
}
let
formData
=
Object
.
assign
(
this
.
model
,
values
);
//时间格式化
formData
.
punchTime
=
formData
.
punchTime
?
formData
.
punchTime
.
format
(
'
YYYY-MM-DD HH:mm:ss
'
):
null
;
formData
.
birthday
=
formData
.
birthday
?
formData
.
birthday
.
format
():
null
;
console
.
log
(
formData
)
httpAction
(
httpurl
,
formData
,
method
).
then
((
res
)
=>
{
httpAction
(
httpurl
,
this
.
model
,
method
).
then
((
res
)
=>
{
if
(
res
.
success
){
that
.
$message
.
success
(
res
.
message
);
that
.
$emit
(
'
ok
'
);
...
...
@@ -162,17 +126,12 @@
that
.
confirmLoading
=
false
;
that
.
close
();
})
}
})
},
handleCancel
()
{
this
.
close
()
},
}
}
}
</
script
>
...
...
ant-design-vue-jeecg/src/views/jeecg/modules/JeecgDemoTabsModal.vue
浏览文件 @
da5ace33
...
...
@@ -63,7 +63,7 @@
<a-table
:columns=
"columns"
:dataSource=
"data"
:pagination=
"false"
size=
"middle"
>
<template
v-for=
"(col, i) in ['name', 'workId', 'department']"
:slot=
"col"
slot-scope=
"text, record, index"
>
<a-tooltip
title=
"必填项"
:defaultVisible=
"false"
overlayStyle=
"
{ color: 'red' }">
<a-tooltip
title=
"必填项"
:defaultVisible=
"false"
:
overlayStyle=
"
{ color: 'red' }">
<a-input
:key=
"col"
v-if=
"record.editable"
style=
"margin: -5px 0"
:value=
"text"
:placeholder=
"columns[i].title"
@
change=
"e => handlerRowChange(e.target.value, record.key, col)"
/>
<template
v-else
>
{{
text
}}
</
template
>
</a-tooltip>
...
...
ant-design-vue-jeecg/src/views/jeecg/modules/JeecgOrderMainModal.vue
浏览文件 @
da5ace33
...
...
@@ -8,53 +8,38 @@
@
cancel=
"handleCancel"
>
<a-spin
:spinning=
"confirmLoading"
>
<a-form
:form=
"form
"
>
<a-form
-model
ref=
"form"
:label-col=
"labelCol"
:wrapper-col=
"wrapperCol"
:model=
"orderMainModel"
:rules=
"validatorRules
"
>
<!-- 主表单区域 -->
<a-row
class=
"form-row"
:gutter=
"16"
>
<a-col
:lg=
"8"
>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"订单号"
>
<a-input
placeholder=
"请输入订单号"
v-decorator=
"['orderCode',
{rules: [{ required: true, message: '请输入订单号!' }]}]" />
</a-form-item>
<a-form-model-item
label=
"订单号"
required
prop=
"orderCode"
>
<a-input
v-model=
"orderMainModel.orderCode"
placeholder=
"请输入订单号"
/>
</a-form-model-item>
</a-col>
<a-col
:lg=
"8"
>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"订单类型"
>
<a-select
placeholder=
"请输入订单类型"
v-decorator=
"['ctype',
{}]">
<a-form-model-item
label=
"订单类型"
prop=
"ctype"
>
<a-select
placeholder=
"请选择订单类型"
v-model=
"orderMainModel.ctype"
>
<a-select-option
value=
"1"
>
国内订单
</a-select-option>
<a-select-option
value=
"2"
>
国际订单
</a-select-option>
</a-select>
</a-form-item>
</a-form-
model-
item>
</a-col>
<a-col
:lg=
"8"
>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"订单日期"
>
<a-date-picker
showTime
format=
"YYYY-MM-DD HH:mm:ss"
v-decorator=
"[ 'orderDate',
{}]"/>
</a-form-item>
<a-form-model-item
label=
"订单日期"
prop=
"orderDate"
>
<a-date-picker
showTime
valueFormat=
"YYYY-MM-DD HH:mm:ss"
v-model=
"orderMainModel.orderDate"
/>
</a-form-model-item>
</a-col>
</a-row>
<a-row
class=
"form-row"
:gutter=
"16"
>
<a-col
:lg=
"8"
>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"订单金额"
>
<a-input-number
style=
"width: 200px"
v-decorator=
"[ 'orderMoney',
{}]" />
</a-form-item>
<a-form-model-item
label=
"订单金额"
prop=
"orderMoney"
>
<a-input-number
style=
"width: 200px"
v-model=
"orderMainModel.orderMoney"
/>
</a-form-model-item>
</a-col>
<a-col
:lg=
"8"
>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"订单备注"
>
<a-input
placeholder=
"请输入订单备注"
v-decorator=
"['content',
{}]" />
</a-form-item>
<a-form-model-item
label=
"订单备注"
prop=
"content"
>
<a-input
placeholder=
"请输入订单备注"
v-model=
"orderMainModel.content"
/>
</a-form-model-item>
</a-col>
</a-row>
...
...
@@ -65,47 +50,49 @@
<a-row
type=
"flex"
style=
"margin-bottom:10px"
:gutter=
"16"
>
<a-col
:span=
"5"
>
客户名
</a-col>
<a-col
:span=
"5"
>
性别
</a-col>
<a-col
:span=
"
5
"
>
身份证号码
</a-col>
<a-col
:span=
"
5
"
>
手机号
</a-col>
<a-col
:span=
"
4
"
>
操作
</a-col>
<a-col
:span=
"
6
"
>
身份证号码
</a-col>
<a-col
:span=
"
6
"
>
手机号
</a-col>
<a-col
:span=
"
2
"
>
操作
</a-col>
</a-row>
<a-row
type=
"flex"
style=
"margin-bottom:10px"
:gutter=
"16"
v-for=
"(item, index) in orderMainModel.jeecgOrderCustomerList"
:key=
"index"
>
<a-col
:span=
"6"
style=
"display: none"
>
<a-form-item>
<a-input
placeholder=
"id"
v-
decorator=
"['jeecgOrderCustomerList['+index+'].id',
{'initialValue':item.id}]
" />
</a-form-item>
<a-form-
model-
item>
<a-input
placeholder=
"id"
v-
model=
"item.id
"
/>
</a-form-
model-
item>
</a-col>
<a-col
:span=
"5"
>
<a-form-item>
<a-input
placeholder=
"客户名"
v-
decorator=
"['jeecgOrderCustomerList['+index+'].name',
{'initialValue':item.name,rules: [{ required: true, message: '请输入用户名!' }]}]
" />
</a-form-item>
<a-form-
model-
item>
<a-input
placeholder=
"客户名"
v-
model=
"item.name
"
/>
</a-form-
model-
item>
</a-col>
<a-col
:span=
"5"
>
<a-form-item>
<a-select
placeholder=
"性别"
v-
decorator=
"['jeecgOrderCustomerList['+index+'].sex',
{'initialValue':item.sex}]"
>
<a-form-
model-
item>
<a-select
placeholder=
"性别"
v-
model=
"item.sex"
>
<a-select-option
value=
"1"
>
男
</a-select-option>
<a-select-option
value=
"2"
>
女
</a-select-option>
</a-select>
</a-form-item>
</a-form-
model-
item>
</a-col>
<a-col
:span=
"
5
"
>
<a-form-
item
>
<a-input
placeholder=
"身份证号"
v-
decorator=
"['jeecgOrderCustomerList['+index+'].idcard',
{'initialValue':item.idcard,rules: [{ pattern: '^\\d{6}(18|19|20)?\\d{2}(0[1-9]|1[012])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|[xX])$', message: '身份证号格式不对!' }]}]"
/>
</a-form-item>
<a-col
:span=
"
6
"
>
<a-form-
model-item
:prop=
"'jeecgOrderCustomerList.' + index + '.idcard'"
:rules=
"[
{required: true,message: '请输入身份证号',trigger: 'blur'},{ pattern: rules.IDCard, message: '身份证号格式不对!' }]"
>
<a-input
placeholder=
"身份证号"
v-
model=
"item.idcard"
/>
</a-form-
model-
item>
</a-col>
<a-col
:span=
"
5
"
>
<a-form-
item
>
<a-input
placeholder=
"手机号"
v-
decorator=
"['jeecgOrderCustomerList['+index+'].telphone',
{'initialValue':item.telphone,rules: [{ pattern: '^1(3|4|5|7|8)\\d{9}$', message: '手机号格式不对!' }]}]
"/>
</a-form-item>
<a-col
:span=
"
6
"
>
<a-form-
model-item
:prop=
"'jeecgOrderCustomerList.' + index + '.telphone'"
:rules=
"rules.mobile"
>
<a-input
placeholder=
"手机号"
v-
model=
"item.telphone
"
/>
</a-form-
model-
item>
</a-col>
<a-col
:span=
"4"
>
<a-form-item>
<a-button
@
click=
"addRowCustom"
icon=
"plus"
></a-button>
<a-button
@
click=
"delRowCustom(index)"
icon=
"minus"
></a-button>
</a-form-item>
<a-col
:span=
"2"
>
<a-form-model-item>
<a-icon
type=
"minus-circle"
@
click=
"delRowCustom(index)"
style=
"fontSize :20px"
/>
</a-form-model-item>
</a-col>
</a-row>
<a-button
type=
"dashed"
style=
"width: 98%;margin-top: 10px"
@
click=
"addRowCustom"
>
<a-icon
type=
"plus"
/>
添加客户信息
</a-button>
</div>
</a-tab-pane>
...
...
@@ -118,32 +105,34 @@
</a-row>
<a-row
type=
"flex"
style=
"margin-bottom:10px"
:gutter=
"16"
v-for=
"(item, index) in orderMainModel.jeecgOrderTicketList"
:key=
"index"
>
<a-col
:span=
"6"
style=
"display: none"
>
<a-form-item>
<a-input
placeholder=
"id"
v-
decorator=
"['jeecgOrderTicketList['+index+'].id',
{'initialValue':item.id}]
" />
</a-form-item>
<a-form-
model-
item>
<a-input
placeholder=
"id"
v-
model=
"item.id
"
/>
</a-form-
model-
item>
</a-col>
<a-col
:span=
"6"
>
<a-form-
item
>
<a-input
placeholder=
"航班号"
v-
decorator=
"['jeecgOrderTicketList['+index+'].ticketCode',
{'initialValue':item.ticketCode,rules: [{ required: true, message: '请输入航班号!' }]}]"
/>
</a-form-item>
<a-form-
model-item
:prop=
"'jeecgOrderTicketList.' + index + '.ticketCode'"
:rules=
"
{required: true,message: '请输入航班号',trigger: 'blur'}"
>
<a-input
placeholder=
"航班号"
v-
model=
"item.ticketCode"
/>
</a-form-
model-
item>
</a-col>
<a-col
:span=
"6"
>
<a-form-item>
<
j-date
placeholder=
"航班时间"
:trigger-change=
"true"
v-decorator=
"['jeecgOrderTicketList['+index+'].tickectDate',
{'initialValue':item.tickectDate}]">
</j-date
>
</a-form-item>
<a-form-
model-
item>
<
a-date-picker
placeholder=
"航班时间"
valueFormat=
"YYYY-MM-DD"
v-model=
"item.tickectDate"
/
>
</a-form-
model-
item>
</a-col>
<a-col
:span=
"6"
>
<a-form-item>
<a-button
@
click=
"addRowTicket"
icon=
"plus"
></a-button>
<a-button
@
click=
"delRowTicket(index)"
icon=
"minus"
></a-button>
</a-form-item>
<a-form-model-item>
<a-icon
type=
"minus-circle"
@
click=
"delRowTicket(index)"
style=
"fontSize :20px"
/>
</a-form-model-item>
</a-col>
</a-row>
<a-button
type=
"dashed"
style=
"width: 98%;margin-top: 10px"
@
click=
"addRowTicket"
>
<a-icon
type=
"plus"
/>
添加机票信息
</a-button>
</div>
</a-tab-pane>
</a-tabs>
</a-form>
</a-form
-model
>
</a-spin>
</a-modal>
</
template
>
...
...
@@ -151,9 +140,6 @@
<
script
>
import
{
httpAction
,
getAction
}
from
'
@/api/manage
'
import
JDate
from
'
@/components/jeecg/JDate
'
import
pick
from
'
lodash.pick
'
import
moment
from
"
moment
"
export
default
{
name
:
"
JeecgOrderMainModal
"
,
components
:
{
...
...
@@ -163,8 +149,10 @@
return
{
title
:
"
操作
"
,
visible
:
false
,
orderMainModel
:
{
jeecgOrderCustomerList
:
[{}],
jeecgOrderTicketList
:
[{}]},
orderMainModel
:
{
jeecgOrderCustomerList
:
[{}],
jeecgOrderTicketList
:
[{}]
},
labelCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
5
},
...
...
@@ -173,10 +161,11 @@
xs
:
{
span
:
24
},
sm
:
{
span
:
16
},
},
confirmLoading
:
false
,
form
:
this
.
$form
.
createForm
(
this
),
validatorRules
:{
orderCode
:
[
{
required
:
true
,
message
:
'
订单号不能为空
'
,
trigger
:
'
blur
'
}
]
},
url
:
{
add
:
"
/test/jeecgOrderMain/add
"
,
...
...
@@ -193,10 +182,10 @@
this
.
edit
({});
},
edit
(
record
)
{
this
.
form
.
resetFields
();
this
.
orderMainModel
=
Object
.
assign
({},
record
);
this
.
orderMainModel
.
jeecgOrderCustomerList
=
[{}];
this
.
orderMainModel
.
jeecgOrderTicketList
=
[{}]
;
this
.
orderMainModel
=
Object
.
assign
({
jeecgOrderCustomerList
:
[{}],
jeecgOrderTicketList
:
[{}]
},
record
)
;
//--------------------------------------------------------
//初始化明细表数据
console
.
log
(
this
.
orderMainModel
.
id
)
...
...
@@ -217,12 +206,7 @@
}
})
}
//--------------------------------------------------------
this
.
visible
=
true
;
this
.
$nextTick
(()
=>
{
this
.
form
.
setFieldsValue
(
pick
(
this
.
orderMainModel
,
'
orderCode
'
,
'
ctype
'
,
'
orderMoney
'
,
'
content
'
))
this
.
form
.
setFieldsValue
({
orderDate
:
this
.
orderMainModel
.
orderDate
?
moment
(
this
.
orderMainModel
.
orderDate
):
null
})
//时间格式化
});
},
close
()
{
this
.
$emit
(
'
close
'
);
...
...
@@ -231,8 +215,8 @@
handleOk
()
{
const
that
=
this
;
// 触发表单验证
this
.
form
.
validateFields
((
err
,
values
)
=>
{
if
(
!
err
)
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
that
.
confirmLoading
=
true
;
let
httpurl
=
''
;
let
method
=
''
;
...
...
@@ -241,18 +225,9 @@
method
=
'
post
'
;
}
else
{
httpurl
+=
this
.
url
.
edit
;
method
=
'
put
'
;
}
let
orderMainData
=
Object
.
assign
(
this
.
orderMainModel
,
values
);
//时间格式化
orderMainData
.
orderDate
=
orderMainData
.
orderDate
?
orderMainData
.
orderDate
.
format
(
'
YYYY-MM-DD HH:mm:ss
'
):
null
;
let
formData
=
{
...
orderMainData
,
jeecgOrderCustomerList
:
orderMainData
.
jeecgOrderCustomerList
,
jeecgOrderTicketList
:
orderMainData
.
jeecgOrderTicketList
method
=
'
put
'
;
}
console
.
log
(
formData
)
httpAction
(
httpurl
,
formData
,
method
).
then
((
res
)
=>
{
httpAction
(
httpurl
,
this
.
orderMainModel
,
method
).
then
((
res
)
=>
{
if
(
res
.
success
){
that
.
$message
.
success
(
res
.
message
);
that
.
$emit
(
'
ok
'
);
...
...
@@ -276,9 +251,8 @@
},
delRowCustom
(
index
)
{
console
.
log
(
index
)
let
all
=
this
.
form
.
getFieldsValue
()
let
all
=
this
.
orderMainModel
all
[
'
jeecgOrderCustomerList
'
].
splice
(
index
,
1
);
this
.
form
.
setFieldsValue
(
all
)
this
.
orderMainModel
.
jeecgOrderCustomerList
.
splice
(
index
,
1
);
this
.
$forceUpdate
();
},
...
...
@@ -289,9 +263,8 @@
},
delRowTicket
(
index
)
{
console
.
log
(
index
)
let
all
=
this
.
form
.
getFieldsValue
()
let
all
=
this
.
orderMainModel
all
[
'
jeecgOrderTicketList
'
].
splice
(
index
,
1
);
this
.
form
.
setFieldsValue
(
all
)
this
.
orderMainModel
.
jeecgOrderTicketList
.
splice
(
index
,
1
);
this
.
$forceUpdate
();
},
...
...
ant-design-vue-jeecg/src/views/jeecg/modules/JeecgOrderModalForJEditableTable.vue
浏览文件 @
da5ace33
...
...
@@ -9,58 +9,41 @@
@
cancel=
"handleCancel"
>
<a-spin
:spinning=
"confirmLoading"
>
<a-form
:form=
"form"
>
<a-form
-model
ref=
"form"
:label-col=
"labelCol"
:wrapper-col=
"wrapperCol"
:model=
"model"
>
<!-- 主表单区域 -->
<a-row
class=
"form-row"
:gutter=
"0"
>
<a-col
:lg=
"8"
>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"订单号"
>
<a-input
placeholder=
"请输入订单号"
v-decorator=
"['orderCode',
{rules: [{ required: true, message: '请输入订单号!' }]}]"/>
</a-form-item>
<a-form-model-item
label=
"订单号"
prop=
"orderCode"
:rules=
"[
{ required: true, message: '请输入订单号!' }]">
<a-input
placeholder=
"请输入订单号"
v-model=
"model.orderCode"
/>
</a-form-model-item>
</a-col>
<a-col
:lg=
"8"
>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"订单类型"
>
<a-select
placeholder=
"请选择订单类型"
v-decorator=
"['ctype',
{}]">
<a-form-model-item
label=
"订单类型"
>
<a-select
placeholder=
"请选择订单类型"
v-model=
"model.ctype"
>
<a-select-option
value=
"1"
>
国内订单
</a-select-option>
<a-select-option
value=
"2"
>
国际订单
</a-select-option>
</a-select>
</a-form-item>
</a-form-
model-
item>
</a-col>
<a-col
:lg=
"8"
>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"订单日期"
>
<a-date-picker
showTime
format=
"YYYY-MM-DD HH:mm:ss"
style=
"width: 100%"
v-decorator=
"[ 'orderDate',
{}]"/>
</a-form-item>
<a-form-model-item
label=
"订单日期"
>
<a-date-picker
showTime
valueFormat=
"YYYY-MM-DD HH:mm:ss"
style=
"width: 100%"
v-model=
"model.orderDate"
/>
</a-form-model-item>
</a-col>
</a-row>
<a-row
class=
"form-row"
:gutter=
"0"
>
<a-col
:lg=
"8"
>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"订单金额"
>
<a-input-number
placeholder=
"请输入订单金额"
style=
"width: 100%"
v-decorator=
"[ 'orderMoney',
{}]"/>
</a-form-item>
<a-form-model-item
label=
"订单金额"
>
<a-input-number
placeholder=
"请输入订单金额"
style=
"width: 100%"
v-model=
"model.orderMoney"
/>
</a-form-model-item>
</a-col>
<a-col
:lg=
"8"
>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"订单备注"
>
<a-input
placeholder=
"请输入订单备注"
v-decorator=
"['content',
{}]"/>
</a-form-item>
<a-form-model-item
label=
"订单备注"
>
<a-input
placeholder=
"请输入订单备注"
v-model=
"model.content"
/>
</a-form-model-item>
</a-col>
</a-row>
</a-form>
</a-form
-model
>
<!-- 子表单区域 -->
<a-tabs
v-model=
"activeKey"
@
change=
"handleChangeTabs"
>
...
...
@@ -100,11 +83,9 @@
<
script
>
import
JEditableTable
from
'
@/components/jeecg/JEditableTable
'
import
{
FormTypes
,
VALIDATE_NO_PASSED
,
getRefPromise
,
validateFormAndTables
}
from
'
@/utils/JEditableTableUtil
'
import
{
FormTypes
,
VALIDATE_NO_PASSED
,
getRefPromise
,
validateForm
Model
AndTables
}
from
'
@/utils/JEditableTableUtil
'
import
{
httpAction
,
getAction
}
from
'
@/api/manage
'
import
JDate
from
'
@/components/jeecg/JDate
'
import
pick
from
'
lodash.pick
'
import
moment
from
'
moment
'
export
default
{
name
:
'
JeecgOrderModalForJEditableTable
'
,
...
...
@@ -115,7 +96,6 @@
return
{
title
:
'
操作
'
,
visible
:
false
,
form
:
this
.
$form
.
createForm
(
this
),
confirmLoading
:
false
,
model
:
{},
labelCol
:
{
...
...
@@ -235,15 +215,7 @@
edit
(
record
)
{
this
.
visible
=
true
this
.
activeKey
=
'
1
'
this
.
form
.
resetFields
()
this
.
model
=
Object
.
assign
({},
record
)
this
.
$nextTick
(()
=>
{
this
.
form
.
setFieldsValue
(
pick
(
this
.
model
,
'
orderCode
'
,
'
ctype
'
,
'
orderMoney
'
,
'
content
'
))
//时间格式化
this
.
form
.
setFieldsValue
({
orderDate
:
this
.
model
.
orderDate
?
moment
(
this
.
model
.
orderDate
)
:
null
})
})
// 加载子表数据
if
(
this
.
model
.
id
)
{
let
params
=
{
id
:
this
.
model
.
id
}
...
...
@@ -259,6 +231,7 @@
editableTables
[
1
].
initialize
()
})
this
.
$emit
(
'
close
'
)
this
.
$refs
.
form
.
resetFields
();
},
/** 查询某个tab的数据 */
requestTableData
(
url
,
params
,
tab
)
{
...
...
@@ -286,7 +259,7 @@
validateFields
()
{
this
.
getAllTable
().
then
(
tables
=>
{
/** 一次性验证主表和所有的次表 */
return
validateForm
AndTables
(
this
.
form
,
tables
)
return
validateForm
ModelAndTables
(
this
.
$refs
.
form
,
this
.
model
,
tables
)
}).
then
(
allValues
=>
{
let
formData
=
this
.
classifyIntoFormData
(
allValues
)
// 发起请求
...
...
@@ -303,8 +276,6 @@
/** 整理成formData */
classifyIntoFormData
(
allValues
)
{
let
orderMain
=
Object
.
assign
(
this
.
model
,
allValues
.
formValue
)
//时间格式化
orderMain
.
orderDate
=
orderMain
.
orderDate
?
orderMain
.
orderDate
.
format
(
'
YYYY-MM-DD HH:mm:ss
'
)
:
null
return
{
...
orderMain
,
// 展开
jeecgOrderCustomerList
:
allValues
.
tablesValue
[
0
].
values
,
...
...
ant-design-vue-jeecg/src/views/jeecg/modules/JeecgOrderModalForJVexTable.vue
0 → 100644
浏览文件 @
da5ace33
<
template
>
<a-modal
:title=
"title"
:width=
"1200"
:visible=
"visible"
:destroyOnClose=
"true"
:maskClosable=
"false"
:confirmLoading=
"confirmLoading"
@
ok=
"handleOk"
@
cancel=
"handleCancel"
>
<a-spin
:spinning=
"confirmLoading"
>
<a-form-model
ref=
"form"
:label-col=
"labelCol"
:wrapper-col=
"wrapperCol"
:model=
"model"
>
<!-- 主表单区域 -->
<a-row
class=
"form-row"
:gutter=
"0"
>
<a-col
:lg=
"8"
>
<a-form-model-item
label=
"订单号"
prop=
"orderCode"
:rules=
"[
{ required: true, message: '请输入订单号!' }]">
<a-input
placeholder=
"请输入订单号"
v-model=
"model.orderCode"
/>
</a-form-model-item>
</a-col>
<a-col
:lg=
"8"
>
<a-form-model-item
label=
"订单类型"
>
<a-select
placeholder=
"请选择订单类型"
v-model=
"model.ctype"
>
<a-select-option
value=
"1"
>
国内订单
</a-select-option>
<a-select-option
value=
"2"
>
国际订单
</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col
:lg=
"8"
>
<a-form-model-item
label=
"订单日期"
>
<a-date-picker
showTime
valueFormat=
"YYYY-MM-DD HH:mm:ss"
style=
"width: 100%"
v-model=
"model.orderDate"
/>
</a-form-model-item>
</a-col>
</a-row>
<a-row
class=
"form-row"
:gutter=
"0"
>
<a-col
:lg=
"8"
>
<a-form-model-item
label=
"订单金额"
>
<a-input-number
placeholder=
"请输入订单金额"
style=
"width: 100%"
v-model=
"model.orderMoney"
/>
</a-form-model-item>
</a-col>
<a-col
:lg=
"8"
>
<a-form-model-item
label=
"订单备注"
>
<a-input
placeholder=
"请输入订单备注"
v-model=
"model.content"
/>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
<!-- 子表单区域 -->
<a-tabs
v-model=
"activeKey"
@
change=
"handleChangeTabs"
>
<a-tab-pane
tab=
"客户信息"
key=
"1"
:forceRender=
"true"
>
<j-vxe-table
ref=
"editableTable1"
toolbar
row-number
row-selection
keep-source
:height=
"300"
:loading=
"table1.loading"
:dataSource=
"table1.dataSource"
:columns=
"table1.columns"
style=
"margin-top: 8px;"
/>
</a-tab-pane>
<a-tab-pane
tab=
"机票信息"
key=
"2"
:forceRender=
"true"
>
<j-vxe-table
ref=
"editableTable2"
toolbar
row-number
row-selection
keep-source
:height=
"300"
:loading=
"table2.loading"
:dataSource=
"table2.dataSource"
:columns=
"table2.columns"
style=
"margin-top: 8px;"
/>
</a-tab-pane>
</a-tabs>
</a-spin>
</a-modal>
</
template
>
<
script
>
import
JEditableTable
from
'
@/components/jeecg/JEditableTable
'
import
{
VALIDATE_FAILED
,
getRefPromise
,
validateFormModelAndTables
}
from
'
@/components/jeecg/JVxeTable/utils/vxeUtils
'
import
{
httpAction
,
getAction
}
from
'
@/api/manage
'
import
{
JVXETypes
}
from
'
@/components/jeecg/JVxeTable
'
import
JDate
from
'
@/components/jeecg/JDate
'
export
default
{
name
:
'
JeecgOrderModalForJvexTable
'
,
components
:
{
JDate
,
JEditableTable
},
data
()
{
return
{
title
:
'
操作
'
,
visible
:
false
,
confirmLoading
:
false
,
model
:
{},
labelCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
6
}
},
wrapperCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
24
-
6
}
},
activeKey
:
'
1
'
,
// 客户信息
table1
:
{
loading
:
false
,
dataSource
:
[],
columns
:
[
{
title
:
'
客户名
'
,
key
:
'
name
'
,
width
:
'
24%
'
,
type
:
JVXETypes
.
input
,
defaultValue
:
''
,
placeholder
:
'
请输入${title}
'
,
validateRules
:
[{
required
:
true
,
message
:
'
${title}不能为空
'
}]
},
{
title
:
'
性别
'
,
key
:
'
sex
'
,
width
:
'
18%
'
,
type
:
JVXETypes
.
select
,
options
:
[
// 下拉选项
{
title
:
'
男
'
,
value
:
'
1
'
},
{
title
:
'
女
'
,
value
:
'
2
'
}
],
defaultValue
:
''
,
placeholder
:
'
请选择${title}
'
},
{
title
:
'
身份证号
'
,
key
:
'
idcard
'
,
width
:
'
24%
'
,
type
:
JVXETypes
.
input
,
defaultValue
:
''
,
placeholder
:
'
请输入${title}
'
,
validateRules
:
[{
pattern
:
'
^
\\
d{6}(18|19|20)?
\\
d{2}(0[1-9]|1[012])(0[1-9]|[12]
\\
d|3[01])
\\
d{3}(
\\
d|[xX])$
'
,
message
:
'
${title}格式不正确
'
}]
},
{
title
:
'
手机号
'
,
key
:
'
telphone
'
,
width
:
'
24%
'
,
type
:
JVXETypes
.
input
,
defaultValue
:
''
,
placeholder
:
'
请输入${title}
'
,
validateRules
:
[{
pattern
:
'
^1(3|4|5|7|8)
\\
d{9}$
'
,
message
:
'
${title}格式不正确
'
}]
}
]
},
// 机票信息
table2
:
{
loading
:
false
,
dataSource
:
[],
columns
:
[
{
title
:
'
航班号
'
,
key
:
'
ticketCode
'
,
width
:
'
40%
'
,
type
:
JVXETypes
.
input
,
defaultValue
:
''
,
placeholder
:
'
请输入${title}
'
,
validateRules
:
[{
required
:
true
,
message
:
'
${title}不能为空
'
}]
},
{
title
:
'
航班时间
'
,
key
:
'
tickectDate
'
,
width
:
'
30%
'
,
type
:
JVXETypes
.
date
,
placeholder
:
'
请选择${title}
'
,
defaultValue
:
''
}
]
},
url
:
{
add
:
'
/test/jeecgOrderMain/add
'
,
edit
:
'
/test/jeecgOrderMain/edit
'
,
orderCustomerList
:
'
/test/jeecgOrderMain/queryOrderCustomerListByMainId
'
,
orderTicketList
:
'
/test/jeecgOrderMain/queryOrderTicketListByMainId
'
}
}
},
created
()
{
},
methods
:
{
// 获取所有的editableTable实例
getAllTable
()
{
return
Promise
.
all
([
getRefPromise
(
this
,
'
editableTable1
'
),
getRefPromise
(
this
,
'
editableTable2
'
)
])
},
add
()
{
// 默认新增一条数据
this
.
getAllTable
().
then
(
editableTables
=>
{
//editableTables[0].add()
//editableTables[1].add()
})
this
.
edit
({})
},
edit
(
record
)
{
this
.
visible
=
true
this
.
activeKey
=
'
1
'
this
.
model
=
Object
.
assign
({},
record
)
// 加载子表数据
if
(
this
.
model
.
id
)
{
let
params
=
{
id
:
this
.
model
.
id
}
this
.
requestTableData
(
this
.
url
.
orderCustomerList
,
params
,
this
.
table1
)
this
.
requestTableData
(
this
.
url
.
orderTicketList
,
params
,
this
.
table2
)
}
},
close
()
{
this
.
visible
=
false
this
.
getAllTable
().
then
(
editableTables
=>
{
this
.
table1
.
dataSource
=
[];
this
.
table2
.
dataSource
=
[];
})
this
.
$emit
(
'
close
'
)
},
/** 查询某个tab的数据 */
requestTableData
(
url
,
params
,
tab
)
{
tab
.
loading
=
true
getAction
(
url
,
params
).
then
(
res
=>
{
tab
.
dataSource
=
res
.
result
||
[]
}).
finally
(()
=>
{
tab
.
loading
=
false
})
},
handleOk
()
{
this
.
validateFields
()
},
handleCancel
()
{
this
.
close
()
},
/** ATab 选项卡切换事件 */
handleChangeTabs
(
key
)
{
getRefPromise
(
this
,
`editableTable
${
key
}
`
).
then
(
editableTable
=>
{
editableTable
.
resetScrollTop
()
})
},
/** 触发表单验证 */
validateFields
()
{
this
.
getAllTable
().
then
(
tables
=>
{
/** 一次性验证主表和所有的次表 */
return
validateFormModelAndTables
(
this
.
$refs
.
form
,
this
.
model
,
tables
)
}).
then
(
allValues
=>
{
let
formData
=
this
.
classifyIntoFormData
(
allValues
)
// 发起请求
return
this
.
requestAddOrEdit
(
formData
)
}).
catch
(
e
=>
{
if
(
e
.
error
===
VALIDATE_FAILED
)
{
// 如果有未通过表单验证的子表,就自动跳转到它所在的tab
this
.
activeKey
=
e
.
index
==
null
?
this
.
activeKey
:
(
e
.
index
+
1
).
toString
()
}
else
{
console
.
error
(
e
)
}
})
},
/** 整理成formData */
classifyIntoFormData
(
allValues
)
{
let
orderMain
=
Object
.
assign
(
this
.
model
,
allValues
.
formValue
)
return
{
...
orderMain
,
// 展开
jeecgOrderCustomerList
:
allValues
.
tablesValue
[
0
].
tableData
,
jeecgOrderTicketList
:
allValues
.
tablesValue
[
1
].
tableData
}
},
/** 发起新增或修改的请求 */
requestAddOrEdit
(
formData
)
{
let
url
=
this
.
url
.
add
,
method
=
'
post
'
if
(
this
.
model
.
id
)
{
url
=
this
.
url
.
edit
method
=
'
put
'
}
this
.
confirmLoading
=
true
httpAction
(
url
,
formData
,
method
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
this
.
$message
.
success
(
res
.
message
)
this
.
$emit
(
'
ok
'
)
this
.
close
()
}
else
{
this
.
$message
.
warning
(
res
.
message
)
}
}).
finally
(()
=>
{
this
.
confirmLoading
=
false
})
}
}
}
</
script
>
<
style
scoped
>
</
style
>
\ No newline at end of file
ant-design-vue-jeecg/src/views/jeecg/tablist/form/JeecgOrderCustomerModal.vue
浏览文件 @
da5ace33
...
...
@@ -11,64 +11,64 @@
<!-- 编辑 -->
<a-spin
:spinning=
"confirmLoading"
v-if=
"editStatus"
>
<a-form
:form=
"form"
>
<a-form-item
<a-form-model
ref=
"form"
:model=
"model"
:rules=
"validatorRules"
>
<a-form-model-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"客户姓名"
prop=
"name"
required
hasFeedback
>
<a-input
placeholder=
"请输入客户姓名"
v-decorator=
"['name',
{rules: [{ required: true, message: '请输入客户姓名!' }]}]"
:readOnly="disableSubmit"/>
</a-form-item>
<a-form-item
<a-input
placeholder=
"请输入客户姓名"
v-model=
"model.name"
:readOnly=
"disableSubmit"
/>
</a-form-model-item>
<a-form-model-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"性别"
hasFeedback
>
<a-select
v-
decorator=
"['sex',
{}]
" placeholder="请选择性别">
<a-select
v-
model=
"model.sex
"
placeholder=
"请选择性别"
>
<a-select-option
value=
"1"
>
男性
</a-select-option>
<a-select-option
value=
"2"
>
女性
</a-select-option>
</a-select>
</a-form-item>
<a-form-item
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"身份证号码"
prop=
"idcard"
hasFeedback
>
<a-input
placeholder=
"请输入身份证号码"
v-
decorator=
"['idcard', validatorRules.idcard]
"
:readOnly=
"disableSubmit"
/>
</a-form-item>
<a-form-item
<a-input
placeholder=
"请输入身份证号码"
v-
model=
"model.idcard
"
:readOnly=
"disableSubmit"
/>
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"身份证扫描件"
hasFeedback
>
<j-image-upload
text=
"上传"
v-model=
"fileList"
:isMultiple=
"true"
></j-image-upload>
</a-form-item>
<a-form-item
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"联系方式"
prop=
"telphone"
hasFeedback
>
<a-input
v-
decorator=
"[ 'telphone', validatorRules.telphone]
"
:readOnly=
"disableSubmit"
/>
</a-form-item>
<a-form-item
<a-input
v-
model=
"model.telphone
"
:readOnly=
"disableSubmit"
/>
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"订单号码"
v-model=
"this.orderId"
:hidden=
"hiding"
hasFeedback
>
<a-input
v-
decorator=
"[ 'orderId',
{}]
" disabled="disabled"/>
</a-form-item>
</a-form>
<a-input
v-
model=
"model.orderId
"
disabled=
"disabled"
/>
</a-form-
model-
item>
</a-form
-model
>
</a-spin>
</a-modal>
</
template
>
<
script
>
import
{
httpAction
}
from
'
@/api/manage
'
import
pick
from
'
lodash.pick
'
import
Vue
from
'
vue
'
import
{
ACCESS_TOKEN
}
from
"
@/store/mutation-types
"
import
JImageUpload
from
'
../../../../components/jeecg/JImageUpload
'
...
...
@@ -89,59 +89,6 @@
xs
:
{
span
:
24
},
sm
:
{
span
:
16
},
},
// 表头
columns
:
[
{
title
:
'
客户名
'
,
align
:
"
center
"
,
dataIndex
:
'
name
'
,
},
{
title
:
'
性别
'
,
align
:
"
center
"
,
dataIndex
:
'
sex
'
,
},
{
title
:
'
身份证号码
'
,
align
:
"
center
"
,
dataIndex
:
'
idcard
'
,
},
{
title
:
'
身份证扫描件
'
,
align
:
"
center
"
,
dataIndex
:
'
idcardPic
'
,
},
{
title
:
'
电话
'
,
dataIndex
:
'
telphone
'
,
align
:
"
center
"
,
},
{
title
:
'
订单号码
'
,
dataIndex
:
'
orderId
'
,
align
:
"
center
"
,
},
{
title
:
'
创建人
'
,
dataIndex
:
'
createBy
'
,
align
:
"
center
"
,
},
{
title
:
'
创建时间
'
,
dataIndex
:
'
createTime
'
,
align
:
"
center
"
,
},
{
title
:
'
更新时间
'
,
dataIndex
:
'
updateBy
'
,
align
:
"
center
"
,
},
{
title
:
'
更新人
'
,
dataIndex
:
'
updateTime
'
,
align
:
"
center
"
,
},
],
fileList
:
[],
disableSubmit
:
false
,
selectedRowKeys
:
[],
...
...
@@ -155,7 +102,6 @@
addStatus
:
false
,
editStatus
:
false
,
confirmLoading
:
false
,
form
:
this
.
$form
.
createForm
(
this
),
url
:
{
add
:
"
/test/order/addCustomer
"
,
edit
:
"
/test/order/editCustomer
"
,
...
...
@@ -163,8 +109,9 @@
getOrderCustomerList
:
"
/test/order/listOrderCustomerByMainId
"
,
},
validatorRules
:
{
telphone
:
{
rules
:
[{
validator
:
this
.
validateMobile
}]},
idcard
:
{
rules
:
[{
validator
:
this
.
validateIdCard
}]}
name
:[{
required
:
true
,
message
:
'
请输入客户姓名!
'
}],
telphone
:
[{
validator
:
this
.
validateMobile
}],
idcard
:
[{
validator
:
this
.
validateIdCard
}]
},
}
},
...
...
@@ -181,7 +128,6 @@
add
(
orderId
)
{
this
.
hiding
=
true
;
if
(
orderId
)
{
this
.
orderId
=
orderId
;
this
.
edit
({
orderId
},
''
);
}
else
{
this
.
$message
.
warning
(
"
请选择一个客户信息
"
);
...
...
@@ -201,17 +147,12 @@
this
.
hiding
=
true
;
this
.
disableSubmit
=
false
;
}
this
.
form
.
resetFields
();
this
.
orderId
=
record
.
orderId
;
this
.
model
=
Object
.
assign
({},
record
);
if
(
record
.
id
)
{
this
.
hiding
=
false
;
this
.
addStatus
=
false
;
this
.
editStatus
=
true
;
this
.
$nextTick
(()
=>
{
this
.
form
.
setFieldsValue
(
pick
(
this
.
model
,
'
id
'
,
'
name
'
,
'
sex
'
,
'
idcard
'
,
'
telphone
'
,
'
orderId
'
,
'
createBy
'
,
'
createTime
'
,
'
updateBy
'
,
'
updateTime
'
))
});
setTimeout
(()
=>
{
this
.
fileList
=
record
.
idcardPic
},
5
)
...
...
@@ -226,12 +167,13 @@
this
.
visible
=
false
;
this
.
picUrl
=
""
;
this
.
fileList
=
[];
this
.
$refs
.
form
.
resetFields
();
},
handleOk
()
{
const
that
=
this
;
// 触发表单验证
this
.
form
.
validateFields
((
err
,
values
)
=>
{
if
(
!
err
)
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
that
.
confirmLoading
=
true
;
let
httpurl
=
''
;
let
method
=
''
;
...
...
@@ -242,9 +184,7 @@
httpurl
+=
this
.
url
.
edit
;
method
=
'
put
'
;
}
let
formData
=
Object
.
assign
(
this
.
model
,
values
);
console
.
log
(
formData
);
formData
.
orderId
=
this
.
orderId
;
let
formData
=
Object
.
assign
({},
this
.
model
);
if
(
this
.
fileList
!=
''
)
{
formData
.
idcardPic
=
this
.
fileList
;
}
else
{
...
...
@@ -261,6 +201,8 @@
that
.
confirmLoading
=
false
;
that
.
close
();
})
}
else
{
return
false
;
}
})
},
...
...
ant-design-vue-jeecg/src/views/jeecg/tablist/form/JeecgOrderDMainModal.vue
浏览文件 @
da5ace33
...
...
@@ -8,46 +8,45 @@
@
cancel=
"handleCancel"
>
<a-spin
:spinning=
"confirmLoading"
>
<a-form
:form=
"form
"
>
<a-form
-model
ref=
"form"
:model=
"orderMainModel"
:rules=
"validatorRules
"
>
<!-- 主表单区域 -->
<a-form-item
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"orderCode"
label=
"订单号"
required
hasFeedback
>
<a-input
placeholder=
"请输入订单号"
v-decorator=
"['orderCode',
{rules: [{ required: true, message: '请输入订单号!' }]}]"
/>
</a-form-item>
<a-form-item
<a-input
placeholder=
"请输入订单号"
v-model=
"orderMainModel.orderCode"
/>
</a-form-model-item>
<a-form-model-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"订单类型"
>
<a-select
placeholder=
"请输入订单类型"
v-
decorator=
"['ctype',
{}]
">
<a-select
placeholder=
"请输入订单类型"
v-
model=
"orderMainModel.ctype
"
>
<a-select-option
value=
"1"
>
国内订单
</a-select-option>
<a-select-option
value=
"2"
>
国际订单
</a-select-option>
</a-select>
</a-form-item>
<a-form-item
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"订单日期"
>
<a-date-picker
showTime
format=
'YYYY-MM-DD HH:mm:ss'
v-decorator=
"[ 'orderDate',
{}]
"/>
</a-form-item>
<a-form-item
<a-date-picker
showTime
valueFormat=
'YYYY-MM-DD HH:mm:ss'
v-model=
"orderMainModel.orderDate
"
/>
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"订单金额"
>
<a-input-number
style=
"width: 200px"
v-
decorator=
"[ 'orderMoney',
{}]"
/>
</a-form-item>
<a-form-item
<a-input-number
style=
"width: 200px"
v-
model=
"orderMainModel.orderMoney"
/>
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"订单备注"
>
<a-input
placeholder=
"请输入订单备注"
v-
decorator=
"['content',
{}]
"/>
</a-form-item>
</a-form>
<a-input
placeholder=
"请输入订单备注"
v-
model=
"orderMainModel.content
"
/>
</a-form-
model-
item>
</a-form
-model
>
</a-spin>
</a-modal>
</
template
>
...
...
@@ -80,8 +79,11 @@
sm
:
{
span
:
16
},
},
confirmLoading
:
false
,
form
:
this
.
$form
.
createForm
(
this
),
validatorRules
:
{},
validatorRules
:
{
orderCode
:
[
{
required
:
true
,
message
:
'
请输入订单号!
'
}
]
},
url
:
{
add
:
"
/test/order/add
"
,
edit
:
"
/test/order/edit
"
,
...
...
@@ -95,26 +97,21 @@
this
.
edit
({});
},
edit
(
record
)
{
this
.
form
.
resetFields
();
this
.
orderMainModel
=
Object
.
assign
({},
record
);
console
.
log
(
this
.
orderMainModel
)
//初始化明细表数据
console
.
log
(
this
.
orderMainModel
.
id
)
this
.
visible
=
true
;
this
.
$nextTick
(()
=>
{
this
.
form
.
setFieldsValue
(
pick
(
this
.
orderMainModel
,
'
orderCode
'
,
'
ctype
'
,
'
orderMoney
'
,
'
content
'
))
this
.
form
.
setFieldsValue
({
orderDate
:
this
.
orderMainModel
.
orderDate
?
moment
(
this
.
orderMainModel
.
orderDate
)
:
null
})
//时间格式化
});
console
.
log
(
this
.
orderMainModel
)
},
close
()
{
this
.
$emit
(
'
close
'
);
this
.
visible
=
false
;
this
.
$refs
.
form
.
resetFields
();
},
handleOk
()
{
const
that
=
this
;
// 触发表单验证
this
.
form
.
validateFields
((
err
,
values
)
=>
{
if
(
!
err
)
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
that
.
confirmLoading
=
true
;
let
httpurl
=
''
;
let
method
=
''
;
...
...
@@ -125,15 +122,8 @@
httpurl
+=
this
.
url
.
edit
;
method
=
'
put
'
;
}
let
orderMainData
=
Object
.
assign
(
this
.
orderMainModel
,
values
);
//时间格式化
orderMainData
.
orderDate
=
orderMainData
.
orderDate
?
orderMainData
.
orderDate
.
format
(
'
YYYY-MM-DD HH:mm:ss
'
)
:
null
;
let
formData
=
{
...
orderMainData
}
console
.
log
(
formData
)
httpAction
(
httpurl
,
formData
,
method
).
then
((
res
)
=>
{
httpAction
(
httpurl
,
this
.
orderMainModel
,
method
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
that
.
$message
.
success
(
res
.
message
);
that
.
$emit
(
'
ok
'
);
...
...
@@ -144,6 +134,8 @@
that
.
confirmLoading
=
false
;
that
.
close
();
})
}
else
{
return
false
;
}
})
},
...
...
ant-design-vue-jeecg/src/views/jeecg/tablist/form/JeecgOrderTicketModal.vue
浏览文件 @
da5ace33
...
...
@@ -10,58 +10,56 @@
cancelText="关闭">
<a-spin
:spinning=
"confirmLoading"
>
<a-form
:form=
"form
"
>
<a-form
-model
ref=
"form"
:model=
"model"
:rules=
"validatorRules
"
>
<a-form-item
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"航班号"
prop=
"ticketCode"
hasFeedback
>
<a-input
placeholder=
"请输入航班号"
:readOnly=
"disableSubmit"
v-decorator=
"['ticketCode',
{rules:[{ required: true,message: '请输入航班号!'}]}]"/>
</a-form-item>
<a-form-item
<a-input
placeholder=
"请输入航班号"
:readOnly=
"disableSubmit"
v-model=
"model.ticketCode"
></a-input>
</a-form-model-item>
<a-form-model-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"航班时间"
prop=
"tickectDate"
hasFeedback
>
<j-date
:trigger-change=
"true"
v-decorator=
"['tickectDate',
{rules:[{ required: true,message: '请输入航班号!'}]}]
">
</j-date>
</a-form-item>
<a-form-item
<j-date
v-model=
"model.tickectDate
"
></j-date>
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"订单号码"
v-model=
"this.orderId"
:hidden=
"hiding"
hasFeedback
>
<a-input
v-
decorator=
"[ 'orderId',
{}]
" disabled="disabled"/>
</a-form-item>
<a-form-item
<a-input
v-
model=
"model.orderId
"
disabled=
"disabled"
/>
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"创建人"
:hidden=
"hiding"
hasFeedback
>
<a-input
v-
decorator=
"[ 'createBy',
{}]
" :readOnly="disableSubmit"/>
</a-form-item>
<a-form-item
<a-input
v-
model=
"model.createBy
"
:readOnly=
"disableSubmit"
/>
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"创建时间"
:hidden=
"hiding"
hasFeedback
>
<a-input
v-
decorator=
"[ 'createTime',
{}]
" :readOnly="disableSubmit"/>
</a-form-item>
</a-form>
<a-input
v-
model=
"model.createTime
"
:readOnly=
"disableSubmit"
/>
</a-form-
model-
item>
</a-form
-model
>
</a-spin>
</a-modal>
</
template
>
<
script
>
import
{
httpAction
}
from
'
@/api/manage
'
import
pick
from
'
lodash.pick
'
import
moment
from
'
moment
'
import
JDate
from
'
@/components/jeecg/JDate
'
...
...
@@ -89,8 +87,10 @@
orderId
:
''
,
hiding
:
false
,
confirmLoading
:
false
,
form
:
this
.
$form
.
createForm
(
this
),
validatorRules
:
{},
validatorRules
:
{
ticketCode
:[{
required
:
true
,
message
:
'
请输入航班号!
'
}],
tickectDate
:[{
required
:
true
,
message
:
'
请输入航班时间!
'
}]
},
url
:
{
add
:
'
/test/order/addTicket
'
,
edit
:
'
/test/order/editTicket
'
...
...
@@ -121,23 +121,19 @@
this
.
hiding
=
true
;
this
.
disableSubmit
=
false
;
}
this
.
form
.
resetFields
();
this
.
orderId
=
record
.
orderId
;
this
.
model
=
Object
.
assign
({},
record
);
this
.
visible
=
true
;
this
.
$nextTick
(()
=>
{
this
.
form
.
setFieldsValue
(
pick
(
this
.
model
,
'
ticketCode
'
,
'
tickectDate
'
,
'
orderId
'
,
'
createBy
'
,
'
createTime
'
,
'
updateBy
'
,
'
updateTime
'
))
})
},
close
()
{
this
.
$emit
(
'
close
'
);
this
.
visible
=
false
;
this
.
$refs
.
form
.
resetFields
();
},
handleOk
()
{
const
that
=
this
;
// 触发表单验证
this
.
form
.
validateFields
((
err
,
values
)
=>
{
if
(
!
err
)
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
that
.
confirmLoading
=
true
;
let
httpurl
=
''
;
let
method
=
''
;
...
...
@@ -148,9 +144,8 @@
httpurl
+=
this
.
url
.
edit
;
method
=
'
put
'
;
}
let
formData
=
Object
.
assign
(
this
.
model
,
values
);
formData
.
mainId
=
this
.
orderId
;
httpAction
(
httpurl
,
formData
,
method
).
then
((
res
)
=>
{
this
.
model
.
mainId
=
this
.
model
.
orderId
;
httpAction
(
httpurl
,
this
.
model
,
method
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
that
.
$message
.
success
(
res
.
message
);
that
.
$emit
(
'
ok
'
)
...
...
@@ -161,6 +156,8 @@
that
.
confirmLoading
=
false
;
that
.
close
();
})
}
else
{
return
false
;
}
})
},
...
...
ant-design-vue-jeecg/src/views/system/DepartList.vue
浏览文件 @
da5ace33
...
...
@@ -74,14 +74,11 @@
<a-tabs
defaultActiveKey=
"1"
>
<a-tab-pane
tab=
"基本信息"
key=
"1"
>
<a-card
:bordered=
"false"
v-if=
"selectedKeys.length>0"
>
<a-form
:form=
"form"
>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"机构名称"
>
<a-input
placeholder=
"请输入机构/部门名称"
v-decorator=
"['departName', validatorRules.departName ]"
/>
</a-form-item>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"上级部门"
>
<a-form-model
ref=
"form"
:model=
"model"
:rules=
"validatorRules"
>
<a-form-model-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"departName"
label=
"机构名称"
>
<a-input
placeholder=
"请输入机构/部门名称"
v-model=
"model.departName"
/>
</a-form-model-item>
<a-form-model-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"上级部门"
>
<a-tree-select
style=
"width:100%"
:dropdownStyle=
"{maxHeight:'200px',overflow:'auto'}"
...
...
@@ -90,26 +87,20 @@
v-model=
"model.parentId"
placeholder=
"无"
>
</a-tree-select>
</a-form-item>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"机构编码"
>
<a-input
disabled
placeholder=
"请输入机构编码"
v-decorator=
"['orgCode', validatorRules.orgCode ]"
/>
</a-form-item>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"机构类型"
>
</a-form-model-item>
<a-form-model-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"orgCode"
label=
"机构编码"
>
<a-input
disabled
placeholder=
"请输入机构编码"
v-model=
"model.orgCode"
/>
</a-form-model-item>
<a-form-model-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"orgCategory"
label=
"机构类型"
>
<
template
v-if=
"orgCategoryDisabled"
>
<a-radio-group
v-
decorator=
"['orgCategory',validatorRules.orgCategory]
"
placeholder=
"请选择机构类型"
>
<a-radio-group
v-
model=
"model.orgCategory
"
placeholder=
"请选择机构类型"
>
<a-radio
value=
"1"
>
公司
</a-radio>
</a-radio-group>
</
template
>
<
template
v-else
>
<a-radio-group
v-
decorator=
"['orgCategory',validatorRules.orgCategory]
"
placeholder=
"请选择机构类型"
>
<a-radio-group
v-
model=
"model.orgCategory
"
placeholder=
"请选择机构类型"
>
<a-radio
value=
"2"
>
部门
</a-radio>
...
...
@@ -118,32 +109,20 @@
</a-radio>
</a-radio-group>
</
template
>
</a-form-item>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"排序"
>
<a-input-number
v-decorator=
"[ 'departOrder',{'initialValue':0}]"
/>
</a-form-item>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"手机号"
>
<a-input
placeholder=
"请输入手机号"
v-decorator=
"['mobile', {'initialValue':''}]"
/>
</a-form-item>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"地址"
>
<a-input
placeholder=
"请输入地址"
v-decorator=
"['address', {'initialValue':''}]"
/>
</a-form-item>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"备注"
>
<a-textarea
placeholder=
"请输入备注"
v-decorator=
"['memo', {'initialValue':''}]"
/>
</a-form-item>
</a-form>
</a-form-model-item>
<a-form-model-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"排序"
>
<a-input-number
v-model=
"model.departOrder"
/>
</a-form-model-item>
<a-form-model-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"手机号"
>
<a-input
placeholder=
"请输入手机号"
v-model=
"model.mobile"
/>
</a-form-model-item>
<a-form-model-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"地址"
>
<a-input
placeholder=
"请输入地址"
v-model=
"model.address"
/>
</a-form-model-item>
<a-form-model-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"备注"
>
<a-textarea
placeholder=
"请输入备注"
v-model=
"model.memo"
/>
</a-form-model-item>
</a-form-model>
<div
class=
"anty-form-btn"
>
<a-button
@
click=
"emptyCurrForm"
type=
"default"
htmlType=
"button"
icon=
"sync"
>
重置
</a-button>
<a-button
@
click=
"submitCurrForm"
type=
"primary"
htmlType=
"button"
icon=
"form"
>
保存
</a-button>
...
...
@@ -166,7 +145,6 @@
</template>
<
script
>
import
DepartModal
from
'
./modules/DepartModal
'
import
pick
from
'
lodash.pick
'
import
{
queryDepartTreeList
,
searchByKeywords
,
deleteByDepartId
}
from
'
@/api/api
'
import
{
httpAction
,
deleteAction
}
from
'
@/api/manage
'
import
{
JeecgListMixin
}
from
'
@/mixins/JeecgListMixin
'
...
...
@@ -240,11 +218,8 @@
selectedKeys
:
[],
autoIncr
:
1
,
currSelected
:
{},
allTreeKeys
:[],
checkStrictly
:
true
,
form
:
this
.
$form
.
createForm
(
this
),
labelCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
5
}
...
...
@@ -258,10 +233,10 @@
edges
:
[]
},
validatorRules
:
{
departName
:
{
rules
:
[{
required
:
true
,
message
:
'
请输入机构/部门名称!
'
}]}
,
orgCode
:
{
rules
:
[{
required
:
true
,
message
:
'
请输入机构编码!
'
}]}
,
orgCategory
:
{
rules
:
[{
required
:
true
,
message
:
'
请输入机构类型!
'
}]}
,
mobile
:
{
rules
:
[{
validator
:
this
.
validateMobile
}]}
departName
:
[{
required
:
true
,
message
:
'
请输入机构/部门名称!
'
}]
,
orgCode
:
[{
required
:
true
,
message
:
'
请输入机构编码!
'
}]
,
orgCategory
:
[{
required
:
true
,
message
:
'
请输入机构类型!
'
}]
,
mobile
:
[{
validator
:
this
.
validateMobile
}]
},
url
:
{
delete
:
'
/sys/sysDepart/delete
'
,
...
...
@@ -323,8 +298,6 @@
},
onExpand
(
expandedKeys
)
{
console
.
log
(
'
onExpand
'
,
expandedKeys
)
// if not set autoExpandParent to false, if children expanded, parent can not collapse.
// or, you can remove all expanded children keys.
this
.
iExpandedKeys
=
expandedKeys
this
.
autoExpandParent
=
false
},
...
...
@@ -337,7 +310,7 @@
this
.
dropTrigger
=
''
}
},
// 右键
店家
下拉关闭下拉框
// 右键下拉关闭下拉框
closeDrop
()
{
this
.
dropTrigger
=
''
},
...
...
@@ -402,14 +375,13 @@
onCheck
(
checkedKeys
,
info
)
{
console
.
log
(
'
onCheck
'
,
checkedKeys
,
info
)
this
.
hiding
=
false
//this.checkedKeys = checkedKeys.checked
//
<!----
author
:
os_chengtgen
--
date
:
20190827
--
for
:
切换父子勾选模式
=======------>
//---- author:os_chengtgen -- date:20190827 -- for:切换父子勾选模式 =======------
if
(
this
.
checkStrictly
){
this
.
checkedKeys
=
checkedKeys
.
checked
;
}
else
{
this
.
checkedKeys
=
checkedKeys
}
//
<!----
author
:
os_chengtgen
--
date
:
20190827
--
for
:
切换父子勾选模式
=======------>
//
---- author:os_chengtgen -- date:20190827 -- for:切换父子勾选模式 =======------
},
onSelect
(
selectedKeys
,
e
)
{
console
.
log
(
'
selected
'
,
selectedKeys
,
e
)
...
...
@@ -431,10 +403,6 @@
}
else
{
this
.
orgCategoryDisabled
=
false
;
}
this
.
$nextTick
(()
=>
{
this
.
form
.
getFieldDecorator
(
'
fax
'
,
{
initialValue
:
''
})
this
.
form
.
setFieldsValue
(
pick
(
record
,
'
departName
'
,
'
orgCategory
'
,
'
orgCode
'
,
'
departOrder
'
,
'
mobile
'
,
'
fax
'
,
'
address
'
,
'
memo
'
))
})
},
getCurrSelectedTitle
()
{
return
!
this
.
currSelected
.
title
?
''
:
this
.
currSelected
.
title
...
...
@@ -443,7 +411,6 @@
this
.
hiding
=
true
this
.
checkedKeys
=
[]
this
.
currSelected
=
{}
this
.
form
.
resetFields
()
this
.
selectedKeys
=
[]
this
.
$refs
.
departAuth
.
departId
=
''
},
...
...
@@ -457,16 +424,14 @@
this
.
currSelected
.
receiptTriggerType
=
value
},
submitCurrForm
()
{
this
.
form
.
validateFields
((
err
,
values
)
=>
{
if
(
!
err
)
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
if
(
!
this
.
currSelected
.
id
)
{
this
.
$message
.
warning
(
'
请点击选择要修改部门!
'
)
return
}
let
formData
=
Object
.
assign
(
this
.
currSelected
,
values
)
console
.
log
(
'
Received values of form:
'
,
formData
)
httpAction
(
this
.
url
.
edit
,
formData
,
'
put
'
).
then
((
res
)
=>
{
httpAction
(
this
.
url
.
edit
,
this
.
currSelected
,
'
put
'
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
this
.
$message
.
success
(
'
保存成功!
'
)
this
.
loadTree
()
...
...
@@ -478,12 +443,13 @@
})
},
emptyCurrForm
()
{
this
.
form
.
resetFields
()
this
.
$refs
.
form
.
resetFields
();
this
.
model
=
{}
},
nodeSettingFormSubmit
()
{
this
.
form
.
validateFields
((
err
,
values
)
=>
{
if
(
!
err
)
{
console
.
log
(
'
Received values of form:
'
,
values
)
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
console
.
log
(
'
Received values of form:
'
,
this
.
model
)
}
})
},
...
...
@@ -520,7 +486,7 @@
that
.
$message
.
success
(
'
删除成功!
'
)
that
.
loadTree
()
//删除后同步清空右侧基本信息内容
let
orgCode
=
that
.
form
.
getFieldValue
(
"
orgCode
"
)
;
let
orgCode
=
that
.
model
.
orgCode
;
if
(
orgCode
&&
orgCode
===
that
.
rightClickSelectedOrgCode
){
that
.
onClearSelected
()
}
...
...
@@ -552,7 +518,7 @@
}
}
},
//
<!----
author
:
os_chengtgen
--
date
:
20190827
--
for
:
切换父子勾选模式
=======------>
//
---- author:os_chengtgen -- date:20190827 -- for:切换父子勾选模式 =======------
expandAll
()
{
this
.
iExpandedKeys
=
this
.
allTreeKeys
},
...
...
@@ -583,7 +549,7 @@
}
}
}
//
<!----
author
:
os_chengtgen
--
date
:
20190827
--
for
:
切换父子勾选模式
=======------>
//
---- author:os_chengtgen -- date:20190827 -- for:切换父子勾选模式 =======------
},
created
()
{
...
...
ant-design-vue-jeecg/src/views/system/DepartListSync.vue
0 → 100644
浏览文件 @
da5ace33
此差异已折叠。
点击以展开。
ant-design-vue-jeecg/src/views/system/NewPermissionList.vue
浏览文件 @
da5ace33
...
...
@@ -214,9 +214,8 @@
},
handleAddSub
(
record
)
{
this
.
$refs
.
modalForm
.
title
=
"
添加子菜单
"
;
this
.
$refs
.
modalForm
.
localMenuType
=
1
;
this
.
$refs
.
modalForm
.
disableSubmit
=
false
;
this
.
$refs
.
modalForm
.
edit
({
status
:
'
1
'
,
permsType
:
'
1
'
,
route
:
true
,
'
parentId
'
:
record
.
id
});
this
.
$refs
.
modalForm
.
edit
({
status
:
'
1
'
,
permsType
:
'
1
'
,
route
:
true
,
'
parentId
'
:
record
.
id
,
menuType
:
1
});
},
handleExpandedRowsChange
(
expandedRows
)
{
this
.
expandedRowKeys
=
expandedRows
...
...
ant-design-vue-jeecg/src/views/system/PermissionList.vue
浏览文件 @
da5ace33
...
...
@@ -181,9 +181,8 @@
},
handleAddSub
(
record
)
{
this
.
$refs
.
modalForm
.
title
=
"
添加子菜单
"
;
this
.
$refs
.
modalForm
.
localMenuType
=
1
;
this
.
$refs
.
modalForm
.
disableSubmit
=
false
;
this
.
$refs
.
modalForm
.
edit
({
status
:
'
1
'
,
permsType
:
'
1
'
,
route
:
true
,
'
parentId
'
:
record
.
id
});
this
.
$refs
.
modalForm
.
edit
({
status
:
'
1
'
,
permsType
:
'
1
'
,
route
:
true
,
'
parentId
'
:
record
.
id
,
menuType
:
1
});
},
handleExpandedRowsChange
(
expandedRows
)
{
this
.
expandedRowKeys
=
expandedRows
...
...
ant-design-vue-jeecg/src/views/system/RoleUserList.vue
浏览文件 @
da5ace33
...
...
@@ -384,11 +384,8 @@
this
.
$message
.
error
(
'
请选择一个角色!
'
)
}
else
{
this
.
$refs
.
modalForm2
.
roleDisabled
=
true
this
.
$refs
.
modalForm2
.
selectedRole
=
[
this
.
currentRoleId
]
this
.
$refs
.
modalForm2
.
add
()
this
.
$refs
.
modalForm2
.
title
=
'
新增
'
this
.
$refs
.
modalForm2
.
edit
({
activitiSync
:
'
1
'
,
userIdentity
:
1
,
selectedroles
:
this
.
currentRoleId
})
}
},
modalFormOk2
()
{
...
...
ant-design-vue-jeecg/src/views/system/SysCategoryList.vue
浏览文件 @
da5ace33
...
...
@@ -150,14 +150,16 @@
})
},
getDataByResult
(
result
){
return
result
.
map
(
item
=>
{
//判断是否标记了带有子节点
if
(
item
[
this
.
hasChildrenField
]
==
'
1
'
){
let
loadChild
=
{
id
:
item
.
id
+
'
_loadChild
'
,
name
:
'
loading...
'
,
isLoading
:
true
}
item
.
children
=
[
loadChild
]
}
return
item
})
if
(
result
&&
result
.
length
>
0
){
return
result
.
map
(
item
=>
{
//判断是否标记了带有子节点
if
(
item
[
this
.
hasChildrenField
]
==
'
1
'
){
let
loadChild
=
{
id
:
item
.
id
+
'
_loadChild
'
,
name
:
'
loading...
'
,
isLoading
:
true
}
item
.
children
=
[
loadChild
]
}
return
item
})
}
},
handleExpand
(
expanded
,
record
){
// 判断是否是展开状态
...
...
ant-design-vue-jeecg/src/views/system/UserList.vue
浏览文件 @
da5ace33
...
...
@@ -65,7 +65,7 @@
<!-- 操作按钮区域 -->
<div
class=
"table-operator"
style=
"border-top: 5px"
>
<a-button
@
click=
"handleAdd"
type=
"primary"
icon=
"plus"
>
添加用户
</a-button>
<a-button
@
click=
"handleAdd"
type=
"primary"
icon=
"plus"
>
添加用户
</a-button>
<a-button
type=
"primary"
icon=
"download"
@
click=
"handleExportXls('用户信息')"
>
导出
</a-button>
<a-upload
name=
"file"
:showUploadList=
"false"
:multiple=
"false"
:headers=
"tokenHeader"
:action=
"importExcelUrl"
@
change=
"handleImportExcel"
>
<a-button
type=
"primary"
icon=
"import"
>
导入
</a-button>
...
...
@@ -120,7 +120,7 @@
</
template
>
<span
slot=
"action"
slot-scope=
"text, record"
>
<a
@
click=
"handleEdit(record)"
>
编辑
</a>
<a
@
click=
"handleEdit(record)"
>
编辑
</a>
<a-divider
type=
"vertical"
/>
...
...
ant-design-vue-jeecg/src/views/system/modules/DepartModal.vue
浏览文件 @
da5ace33
...
...
@@ -11,16 +11,17 @@
cancelText="关闭">
<a-spin
:spinning=
"confirmLoading"
>
<a-form
:form=
"form
"
>
<a-form-item
<a-form
-model
ref=
"form"
:model=
"model"
:rules=
"validatorRules
"
>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"机构名称"
prop=
"departName"
:hidden=
"false"
hasFeedback
>
<a-input
id=
"departName"
placeholder=
"请输入机构/部门名称"
v-
decorator=
"['departName', validatorRules.departName ]
"
/>
</a-form-item>
<a-form-item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
:hidden=
"seen"
label=
"上级部门"
hasFeedback
>
<a-input
id=
"departName"
placeholder=
"请输入机构/部门名称"
v-
model=
"model.departName
"
/>
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
:hidden=
"seen"
label=
"上级部门"
hasFeedback
>
<a-tree-select
style=
"width:100%"
:dropdownStyle=
"
{maxHeight:'200px',overflow:'auto'}"
...
...
@@ -29,20 +30,20 @@
placeholder="请选择上级部门"
:disabled="condition">
</a-tree-select>
</a-form-item>
<a-form-item
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"机构类型"
>
<template
v-if=
"seen"
>
<a-radio-group
v-decorator=
"['orgCategory',validatorRules.orgCategory]
"
placeholder=
"请选择机构类型"
>
<a-radio
value=
"1"
>
公司
</a-radio>
</a-radio-group>
<template
v-if=
"seen"
>
<a-radio-group
v-model=
"model.orgCategory
"
placeholder=
"请选择机构类型"
>
<a-radio
value=
"1"
>
公司
</a-radio>
</a-radio-group>
</
template
>
<
template
v-else
>
<a-radio-group
v-
decorator=
"['orgCategory',validatorRules.orgCategory]
"
placeholder=
"请选择机构类型"
>
<a-radio-group
v-
model=
"model.orgCategory
"
placeholder=
"请选择机构类型"
>
<a-radio
value=
"2"
>
部门
</a-radio>
...
...
@@ -50,40 +51,41 @@
岗位
</a-radio>
</a-radio-group>
</
template
>
</a-form-item>
<a-form-item
</
template
>
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"mobile"
label=
"电话"
>
<a-input
placeholder=
"请输入电话"
v-
decorator=
"['mobile',validatorRules.mobile]"
/>
</a-form-item>
<a-form-item
<a-input
placeholder=
"请输入电话"
v-
model=
"model.mobile"
/>
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"传真"
>
<a-input
placeholder=
"请输入传真"
v-
decorator=
"['fax', {}]"
/>
</a-form-item>
<a-form-item
<a-input
placeholder=
"请输入传真"
v-
model=
"model.fax"
/>
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"地址"
>
<a-input
placeholder=
"请输入地址"
v-
decorator=
"['address', {}]"
/>
</a-form-item>
<a-form-item
<a-input
placeholder=
"请输入地址"
v-
model=
"model.address"
/>
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"排序"
>
<a-input-number
v-
decorator=
"[ 'departOrder',{'initialValue':0}]"
/>
</a-form-item>
<a-form-item
<a-input-number
v-
model=
"model.departOrder"
/>
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"备注"
>
<a-textarea
placeholder=
"请输入备注"
v-
decorator=
"['memo', {}]"
/>
</a-form-item>
<a-textarea
placeholder=
"请输入备注"
v-
model=
"model.memo"
/>
</a-form-
model-
item>
</a-form>
</a-form
-model
>
</a-spin>
</a-modal>
</template>
...
...
@@ -107,7 +109,10 @@
visible
:
false
,
condition
:
true
,
disableSubmit
:
false
,
model
:
{},
model
:
{
departOrder
:
0
,
orgCategory
:
'
1
'
},
menuhidden
:
false
,
menuusing
:
true
,
labelCol
:
{
...
...
@@ -120,11 +125,11 @@
},
confirmLoading
:
false
,
form
:
this
.
$form
.
createForm
(
this
),
validatorRules
:{
departName
:{
rules
:
[{
required
:
true
,
message
:
'
请输入机构/部门名称!
'
}]},
orgCode
:{
rules
:
[{
required
:
true
,
message
:
'
请输入机构编码!
'
}]},
mobile
:{
rules
:
[{
validator
:
this
.
validateMobile
}]}
departName
:[{
required
:
true
,
message
:
'
请输入机构/部门名称!
'
}],
orgCode
:[{
required
:
true
,
message
:
'
请输入机构编码!
'
}],
mobile
:
[{
validator
:
this
.
validateMobile
}],
orgCategory
:[{
required
:
true
,
message
:
'
请输入机构类型!
'
}]
},
url
:
{
add
:
"
/sys/sysDepart/add
"
,
...
...
@@ -159,35 +164,28 @@
this
.
edit
(
depart
);
},
edit
(
record
)
{
this
.
form
.
resetFields
();
this
.
model
=
Object
.
assign
({},
{});
this
.
visible
=
true
;
this
.
loadTreeData
();
this
.
model
.
parentId
=
record
!=
null
?
record
.
toString
():
null
;
if
(
this
.
seen
){
this
.
model
.
orgCategory
=
'
1
'
;
}
else
{
this
.
model
.
orgCategory
=
'
2
'
;
}
this
.
$nextTick
(()
=>
{
this
.
form
.
setFieldsValue
(
pick
(
this
.
model
,
'
orgCategory
'
,
'
departName
'
,
'
departNameEn
'
,
'
departNameAbbr
'
,
'
departOrder
'
,
'
description
'
,
'
orgType
'
,
'
orgCode
'
,
'
mobile
'
,
'
fax
'
,
'
address
'
,
'
memo
'
,
'
status
'
,
'
delFlag
'
))
});
if
(
this
.
seen
){
this
.
model
.
orgCategory
=
'
1
'
;
}
else
{
this
.
model
.
orgCategory
=
'
2
'
;
}
},
close
()
{
this
.
$emit
(
'
close
'
);
this
.
disableSubmit
=
false
;
this
.
visible
=
false
;
this
.
$refs
.
form
.
resetFields
();
},
handleOk
()
{
const
that
=
this
;
// 触发表单验证
this
.
form
.
validateFields
((
err
,
values
)
=>
{
if
(
!
err
)
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
that
.
confirmLoading
=
true
;
let
formData
=
Object
.
assign
(
this
.
model
,
values
);
//时间格式化
console
.
log
(
formData
)
httpAction
(
this
.
url
.
add
,
formData
,
"
post
"
).
then
((
res
)
=>
{
httpAction
(
this
.
url
.
add
,
this
.
model
,
"
post
"
).
then
((
res
)
=>
{
if
(
res
.
success
){
that
.
$message
.
success
(
res
.
message
);
that
.
loadTreeData
();
...
...
@@ -200,6 +198,8 @@
that
.
close
();
})
}
else
{
return
false
;
}
})
},
...
...
ant-design-vue-jeecg/src/views/system/modules/DepartWindow.vue
浏览文件 @
da5ace33
...
...
@@ -38,11 +38,9 @@
import
pick
from
'
lodash.pick
'
import
{
getAction
}
from
'
@/api/manage
'
import
{
queryIdTree
}
from
'
@/api/api
'
import
userModal
from
'
./UserModal
'
export
default
{
name
:
"
DepartWindow
"
,
components
:
{
userModal
,
},
data
()
{
return
{
...
...
ant-design-vue-jeecg/src/views/system/modules/DeptUserInfo.vue
浏览文件 @
da5ace33
...
...
@@ -10,11 +10,6 @@
<a-input
placeholder=
"请输入账号"
v-model=
"queryParam.username"
></a-input>
</a-form-item>
</a-col>
<!--
<a-col
:md=
"8"
:sm=
"8"
>
-->
<!--
<a-form-item
label=
"用户名称"
:labelCol=
"
{span: 5}" :wrapperCol="{span: 18, offset: 1}">-->
<!--
<a-input
placeholder=
"请输入名称查询"
v-model=
"queryParam.realname"
></a-input>
-->
<!--
</a-form-item>
-->
<!--
</a-col>
-->
<span
style=
"float: left;overflow: hidden;"
class=
"table-page-search-submitButtons"
>
<a-col
:md=
"6"
:sm=
"24"
>
<a-button
type=
"primary"
@
click=
"searchQuery"
icon=
"search"
style=
"margin-left: 18px"
>
查询
</a-button>
...
...
@@ -76,7 +71,7 @@
</a>
<a-menu
slot=
"overlay"
>
<a-menu-item>
<a
href=
"javascript:;"
@
click=
"handleDeptRole(record)"
>
分配
部门角色
</a>
<a
href=
"javascript:;"
@
click=
"handleDeptRole(record)"
>
部门角色
</a>
</a-menu-item>
<a-menu-item>
...
...
@@ -294,12 +289,9 @@
}
else
{
this
.
$refs
.
modalForm
.
departDisabled
=
true
;
//初始化负责部门
this
.
$refs
.
modalForm
.
userDepartModel
.
departIdList
=
[
this
.
currentDeptId
];
//传入一个部门id
this
.
$refs
.
modalForm
.
add
();
//update-begin---author:liusq Date:20210223 for:https://gitee.com/jeecg/jeecg-boot/issues/I2SDU1------------
this
.
$refs
.
modalForm
.
resultDepartOptions
=
[{
key
:
this
.
currentDept
.
key
,
title
:
this
.
currentDept
.
title
}]
//update-end---author:liusq Date:20210223 for:https://gitee.com/jeecg/jeecg-boot/issues/I2SDU1------------
this
.
$refs
.
modalForm
.
nextDepartOptions
=
[{
value
:
this
.
currentDept
.
key
,
label
:
this
.
currentDept
.
title
}]
this
.
$refs
.
modalForm
.
title
=
"
新增
"
;
this
.
$refs
.
modalForm
.
edit
({
activitiSync
:
'
1
'
,
userIdentity
:
1
,
selecteddeparts
:
this
.
currentDeptId
})
}
},
selectOK
(
data
)
{
...
...
ant-design-vue-jeecg/src/views/system/modules/DictItemModal.vue
浏览文件 @
da5ace33
...
...
@@ -9,46 +9,48 @@
cancelText=
"关闭"
>
<a-spin
:spinning=
"confirmLoading"
>
<a-form
:form=
"form
"
>
<a-form
-model
ref=
"form"
:model=
"model"
:rules=
"validatorRules
"
>
<a-form-item
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"itemText"
label=
"名称"
>
<a-input
placeholder=
"请输入名称"
v-
decorator.trim=
"['itemText', validatorRules.itemText]
"
/>
</a-form-item>
<a-input
placeholder=
"请输入名称"
v-
model=
"model.itemText
"
/>
</a-form-
model-
item>
<a-form-item
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"itemValue"
label=
"数据值"
>
<a-input
placeholder=
"请输入数据值"
v-
decorator.trim=
"['itemValue', validatorRules.itemValue]"
/>
</a-form-item>
<a-input
placeholder=
"请输入数据值"
v-
model=
"model.itemValue"
/>
</a-form-
model-
item>
<a-form-item
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"描述"
>
<a-input
v-
decorator=
"['description']"
/>
</a-form-item>
<a-input
v-
model=
"model.description"
/>
</a-form-
model-
item>
<a-form-item
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"排序值"
>
<a-input-number
:min=
"1"
v-
decorator=
"['sortOrder',
{'initialValue':1}]"
/>
值越小越靠前
,支持小数
</a-form-item>
<a-input-number
:min=
"1"
v-
model=
"model.sortOrder"
/>
值越小越靠前
</a-form-
model-
item>
<a-form-item
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"是否启用"
hasFeedback
>
<a-switch
checkedChildren=
"启用"
unCheckedChildren=
"禁用"
@
change=
"onChose"
v-model=
"visibleCheck"
/>
</a-form-item>
</a-form-
model-
item>
</a-form>
</a-form
-model
>
</a-spin>
</a-modal>
</
template
>
...
...
@@ -77,10 +79,9 @@
sm
:
{
span
:
16
},
},
confirmLoading
:
false
,
form
:
this
.
$form
.
createForm
(
this
),
validatorRules
:
{
itemText
:
{
rules
:
[{
required
:
true
,
message
:
'
请输入名称!
'
}]}
,
itemValue
:
{
rules
:
[{
required
:
true
,
message
:
'
请输入数据值!
'
},{
validator
:
this
.
validateItemValue
}]}
,
itemText
:
[{
required
:
true
,
message
:
'
请输入名称!
'
}]
,
itemValue
:
[{
required
:
true
,
message
:
'
请输入数据值!
'
},{
validator
:
this
.
validateItemValue
}]
,
},
}
},
...
...
@@ -89,22 +90,19 @@
methods
:
{
add
(
dictId
)
{
this
.
dictId
=
dictId
;
this
.
edit
({});
//初始化默认值
this
.
edit
({
sortOrder
:
1
,
status
:
1
});
},
edit
(
record
)
{
if
(
record
.
id
)
{
this
.
dictId
=
record
.
dictId
;
this
.
status
=
record
.
status
;
this
.
visibleCheck
=
(
record
.
status
==
1
)
?
true
:
false
;
}
this
.
form
.
resetFields
();
this
.
status
=
record
.
status
;
this
.
visibleCheck
=
(
record
.
status
==
1
)
?
true
:
false
;
this
.
model
=
Object
.
assign
({},
record
);
this
.
model
.
dictId
=
this
.
dictId
;
this
.
model
.
status
=
this
.
status
;
this
.
visible
=
true
;
this
.
$nextTick
(()
=>
{
this
.
form
.
setFieldsValue
(
pick
(
this
.
model
,
'
itemText
'
,
'
itemValue
'
,
'
description
'
,
'
sortOrder
'
))
});
},
onChose
(
checked
)
{
if
(
checked
)
{
...
...
@@ -119,19 +117,18 @@
handleOk
()
{
const
that
=
this
;
// 触发表单验证
this
.
form
.
validateFields
((
err
,
values
)
=>
{
if
(
!
err
)
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
that
.
confirmLoading
=
true
;
values
.
itemText
=
(
values
.
itemText
||
''
).
trim
()
values
.
itemValue
=
(
values
.
itemValue
||
''
).
trim
()
values
.
description
=
(
values
.
description
||
''
).
trim
()
let
formData
=
Object
.
assign
(
this
.
model
,
values
);
formData
.
status
=
this
.
status
;
this
.
model
.
itemText
=
(
this
.
model
.
itemText
||
''
).
trim
()
this
.
model
.
itemValue
=
(
this
.
model
.
itemValue
||
''
).
trim
()
this
.
model
.
description
=
(
this
.
model
.
description
||
''
).
trim
()
this
.
model
.
status
=
this
.
status
;
let
obj
;
if
(
!
this
.
model
.
id
)
{
obj
=
addDictItem
(
formData
);
obj
=
addDictItem
(
this
.
model
);
}
else
{
obj
=
editDictItem
(
formData
);
obj
=
editDictItem
(
this
.
model
);
}
obj
.
then
((
res
)
=>
{
if
(
res
.
success
)
{
...
...
@@ -144,6 +141,8 @@
that
.
confirmLoading
=
false
;
that
.
close
();
})
}
else
{
return
false
;
}
})
},
...
...
@@ -154,6 +153,7 @@
close
()
{
this
.
$emit
(
'
close
'
);
this
.
visible
=
false
;
this
.
$refs
.
form
.
resetFields
();
},
validateItemValue
(
rule
,
value
,
callback
){
let
param
=
{
...
...
ant-design-vue-jeecg/src/views/system/modules/DictModal.vue
浏览文件 @
da5ace33
...
...
@@ -9,30 +9,34 @@
cancelText=
"关闭"
>
<a-spin
:spinning=
"confirmLoading"
>
<a-form
:form=
"form
"
>
<a-form
-model
ref=
"form"
:model=
"model"
:rules=
"validatorRules
"
>
<a-form-item
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"dictName"
required
label=
"字典名称"
>
<a-input
placeholder=
"请输入字典名称"
v-
decorator.trim=
"[ 'dictName', validatorRules.dictName]
"
/>
</a-form-item>
<a-input
placeholder=
"请输入字典名称"
v-
model=
"model.dictName
"
/>
</a-form-
model-
item>
<a-form-item
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"dictCode"
required
label=
"字典编码"
>
<a-input
placeholder=
"请输入字典编码"
v-
decorator.trim=
"[ 'dictCode', validatorRules.dictCode]
"
/>
</a-form-item>
<a-input
placeholder=
"请输入字典编码"
v-
model=
"model.dictCode
"
/>
</a-form-
model-
item>
<a-form-item
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"描述"
>
<a-input
v-
decorator=
"[ 'description']
"
/>
</a-form-item>
<a-input
v-
model=
"model.description
"
/>
</a-form-
model-
item>
</a-form>
</a-form
-model
>
</a-spin>
</a-modal>
</
template
>
...
...
@@ -58,14 +62,12 @@
sm
:
{
span
:
16
}
},
confirmLoading
:
false
,
form
:
this
.
$form
.
createForm
(
this
),
validatorRules
:
{
dictName
:
{
rules
:
[{
required
:
true
,
message
:
'
请输入字典名称!
'
}]
}
,
dictCode
:
{
rules
:
[
{
required
:
true
,
message
:
'
请输入字典编码!
'
},
{
validator
:
this
.
validateDictCode
}]
dictName
:
[{
required
:
true
,
message
:
'
请输入字典名称!
'
}]
,
dictCode
:
[
{
required
:
true
,
message
:
'
请输入字典编码!
'
},
{
validator
:
this
.
validateDictCode
}]
}
}
}
},
created
()
{
...
...
@@ -99,30 +101,24 @@
}
else
{
this
.
visiblekey
=
false
}
this
.
form
.
resetFields
()
this
.
model
=
Object
.
assign
({},
record
)
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
form
.
setFieldsValue
(
pick
(
this
.
model
,
'
dictName
'
,
'
dictCode
'
,
'
description
'
))
})
},
// 确定
handleOk
()
{
const
that
=
this
// 触发表单验证
this
.
form
.
validateFields
((
err
,
values
)
=>
{
if
(
!
err
)
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
that
.
confirmLoading
=
true
values
.
dictName
=
(
values
.
dictName
||
''
).
trim
()
values
.
dictCode
=
(
values
.
dictCode
||
''
).
trim
()
values
.
description
=
(
values
.
description
||
''
).
trim
()
let
formData
=
Object
.
assign
(
this
.
model
,
values
)
this
.
model
.
dictName
=
(
this
.
model
.
dictName
||
''
).
trim
()
this
.
model
.
dictCode
=
(
this
.
model
.
dictCode
||
''
).
trim
()
this
.
model
.
description
=
(
this
.
model
.
description
||
''
).
trim
()
let
obj
console
.
log
(
formData
)
if
(
!
this
.
model
.
id
)
{
obj
=
addDict
(
formData
)
obj
=
addDict
(
this
.
model
)
}
else
{
obj
=
editDict
(
formData
)
obj
=
editDict
(
this
.
model
)
}
obj
.
then
((
res
)
=>
{
if
(
res
.
success
)
{
...
...
@@ -135,6 +131,8 @@
that
.
confirmLoading
=
false
that
.
close
()
})
}
else
{
return
false
;
}
})
},
...
...
@@ -145,6 +143,7 @@
close
()
{
this
.
$emit
(
'
close
'
)
this
.
visible
=
false
this
.
$refs
.
form
.
resetFields
();
}
}
}
...
...
ant-design-vue-jeecg/src/views/system/modules/PermissionDataRuleModal.vue
浏览文件 @
da5ace33
...
...
@@ -9,51 +9,54 @@
cancelText=
"关闭"
>
<a-spin
:spinning=
"confirmLoading"
>
<a-form
:form=
"form
"
>
<a-form
-model
ref=
"form"
:model=
"model"
:rules=
"validatorRules
"
>
<a-form-item
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"ruleName"
label=
"规则名称"
>
<a-input
placeholder=
"请输入规则名称"
v-
decorator=
"['ruleName', validatorRules.ruleName]
"
/>
</a-form-item>
<a-form-item
<a-input
placeholder=
"请输入规则名称"
v-
model=
"model.ruleName
"
/>
</a-form-
model-
item>
<a-form-
model-
item
v-show=
"showRuleColumn"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"ruleColumn"
label=
"规则字段"
>
<a-input
placeholder=
"请输入规则字段"
v-
decorator=
"['ruleColumn', validatorRules.ruleColumn]
"
/>
</a-form-item>
<a-form-item
<a-input
placeholder=
"请输入规则字段"
v-
model.trim=
"model.ruleColumn
"
/>
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"ruleConditions"
label=
"条件规则"
>
<j-dict-select-tag
@
change=
"handleChangeRuleCondition"
v-decorator=
"['ruleConditions', validatorRules.ruleConditions]"
placeholder=
"请输入条件规则"
:triggerChange=
"true
"
dictCode=
"rule_conditions"
/>
</a-form-item>
<a-form-item
<j-dict-select-tag
@
input=
"handleChangeRuleCondition"
v-model=
"model.ruleConditions"
placeholder=
"请输入条件规则
"
dictCode=
"rule_conditions"
/>
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"ruleValue"
label=
"规则值"
>
<a-input
placeholder=
"请输入规则值"
v-
decorator=
"['ruleValue', validatorRules.ruleValue]
"
/>
</a-form-item>
<a-input
placeholder=
"请输入规则值"
v-
model.trim=
"model.ruleValue
"
/>
</a-form-
model-
item>
<a-form-item
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"状态"
>
<a-radio-group
buttonStyle=
"solid"
v-
decorator=
"['status',
{initialValue:'1'}]
">
<a-radio-group
buttonStyle=
"solid"
v-
model=
"model.status
"
>
<a-radio-button
value=
"1"
>
有效
</a-radio-button>
<a-radio-button
value=
"0"
>
无效
</a-radio-button>
</a-radio-group>
</a-form-item>
</a-form-
model-
item>
</a-form>
</a-form
-model
>
</a-spin>
</a-modal>
</
template
>
<
script
>
import
{
httpAction
}
from
'
@/api/manage
'
import
pick
from
'
lodash.pick
'
export
default
{
name
:
'
PermissionDataRuleModal
'
,
...
...
@@ -73,13 +76,12 @@
sm
:
{
span
:
16
}
},
confirmLoading
:
false
,
form
:
this
.
$form
.
createForm
(
this
),
permissionId
:
''
,
validatorRules
:
{
ruleConditions
:
{
rules
:
[{
required
:
true
,
message
:
'
请选择条件!
'
}]}
,
ruleName
:
{
rules
:
[{
required
:
true
,
message
:
'
请输入规则名称!
'
}]}
,
ruleValue
:
{
rules
:
[{
required
:
true
,
message
:
'
请输入规则值!
'
}]}
,
ruleColumn
:
{
rules
:
[]}
ruleConditions
:
[{
required
:
true
,
message
:
'
请选择条件!
'
}]
,
ruleName
:
[{
required
:
true
,
message
:
'
请输入规则名称!
'
}]
,
ruleValue
:
[{
required
:
true
,
message
:
'
请输入规则值!
'
}]
,
ruleColumn
:
[]
},
url
:
{
list
:
'
/sys/dictItem/list
'
,
...
...
@@ -94,10 +96,10 @@
methods
:
{
add
(
permId
)
{
this
.
permissionId
=
permId
this
.
edit
({})
//初始化默认值
this
.
edit
({
status
:
'
1
'
})
},
edit
(
record
)
{
this
.
form
.
resetFields
()
this
.
model
=
Object
.
assign
({},
record
)
if
(
record
.
permissionId
)
{
this
.
model
.
permissionId
=
record
.
permissionId
...
...
@@ -106,19 +108,17 @@
}
this
.
visible
=
true
this
.
initRuleCondition
()
this
.
$nextTick
(()
=>
{
this
.
form
.
setFieldsValue
(
pick
(
this
.
model
,
'
status
'
,
'
ruleName
'
,
'
ruleColumn
'
,
'
ruleConditions
'
,
'
ruleValue
'
))
})
},
close
()
{
this
.
$emit
(
'
close
'
)
this
.
visible
=
false
this
.
$refs
.
form
.
resetFields
()
},
handleOk
()
{
const
that
=
this
// 触发表单验证
this
.
form
.
validateFields
((
err
,
values
)
=>
{
if
(
!
err
)
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
that
.
confirmLoading
=
true
let
httpurl
=
''
let
method
=
''
...
...
@@ -129,14 +129,7 @@
httpurl
+=
this
.
url
.
edit
method
=
'
put
'
}
let
formData
=
Object
.
assign
(
this
.
model
,
values
)
if
(
formData
.
ruleColumn
&&
formData
.
ruleColumn
.
length
>
0
){
formData
.
ruleColumn
=
formData
.
ruleColumn
.
trim
()
}
if
(
formData
.
ruleValue
&&
formData
.
ruleValue
.
length
>
0
){
formData
.
ruleValue
=
formData
.
ruleValue
.
trim
()
}
httpAction
(
httpurl
,
formData
,
method
).
then
((
res
)
=>
{
httpAction
(
httpurl
,
this
.
model
,
method
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
that
.
$message
.
success
(
res
.
message
)
that
.
$emit
(
'
ok
'
)
...
...
@@ -147,6 +140,8 @@
that
.
confirmLoading
=
false
that
.
close
()
})
}
else
{
return
false
;
}
})
},
...
...
@@ -162,9 +157,7 @@
},
handleChangeRuleCondition
(
val
){
if
(
val
==
'
USE_SQL_RULES
'
){
this
.
form
.
setFieldsValue
({
ruleColumn
:
''
})
this
.
model
.
ruleColumn
=
''
this
.
showRuleColumn
=
false
}
else
{
this
.
showRuleColumn
=
true
...
...
ant-design-vue-jeecg/src/views/system/modules/PermissionModal.vue
浏览文件 @
da5ace33
...
...
@@ -8,27 +8,28 @@
<div
:style=
"
{width: '100%',border: '1px solid #e9e9e9',padding: '10px 16px',background: '#fff',}">
<a-spin
:spinning=
"confirmLoading"
>
<a-form
:form=
"form
"
>
<a-form
-model
ref=
"form"
:model=
"model"
:rules=
"validatorRules
"
>
<a-form-item
label=
"菜单类型"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
>
<a-radio-group
@
change=
"onChangeMenuType"
v-
decorator=
"['menuType',
{'initialValue':localMenuType}]
">
<a-form-
model-
item
label=
"菜单类型"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
>
<a-radio-group
@
change=
"onChangeMenuType"
v-
model=
"model.menuType
"
>
<a-radio
:value=
"0"
>
一级菜单
</a-radio>
<a-radio
:value=
"1"
>
子菜单
</a-radio>
<a-radio
:value=
"2"
>
按钮/权限
</a-radio>
</a-radio-group>
</a-form-item>
</a-form-
model-
item>
<a-form-item
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
:label=
"menuLabel"
prop=
"name"
hasFeedback
>
<a-input
placeholder=
"请输入菜单名称"
v-
decorator=
"[ 'name', validatorRules.name]
"
:readOnly=
"disableSubmit"
/>
</a-form-item>
<a-input
placeholder=
"请输入菜单名称"
v-
model=
"model.name
"
:readOnly=
"disableSubmit"
/>
</a-form-
model-
item>
<a-form-item
v-show=
"
localM
enuType!=0"
<a-form-
model-
item
v-show=
"
model.m
enuType!=0"
label=
"上级菜单"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
...
...
@@ -45,58 +46,61 @@
:disabled="disableSubmit"
@change="handleParentIdChange">
</a-tree-select>
</a-form-item>
</a-form-
model-
item>
<a-form-item
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"url"
label=
"菜单路径"
>
<a-input
placeholder=
"请输入菜单路径"
v-
decorator=
"[ 'url',validatorRules.url]
"
:readOnly=
"disableSubmit"
/>
</a-form-item>
<a-input
placeholder=
"请输入菜单路径"
v-
model=
"model.url
"
:readOnly=
"disableSubmit"
/>
</a-form-
model-
item>
<a-form-item
<a-form-
model-
item
v-show=
"show"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"component"
label=
"前端组件"
>
<a-input
placeholder=
"请输入前端组件"
v-
decorator=
"[ 'component',validatorRules.component]
"
:readOnly=
"disableSubmit"
/>
</a-form-item>
<a-input
placeholder=
"请输入前端组件"
v-
model=
"model.component
"
:readOnly=
"disableSubmit"
/>
</a-form-
model-
item>
<a-form-item
v-show=
"
localM
enuType==0"
<a-form-
model-
item
v-show=
"
model.m
enuType==0"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"默认跳转地址"
>
<a-input
placeholder=
"请输入路由参数 redirect"
v-
decorator=
"[ 'redirect',
{}]
" :readOnly="disableSubmit"/>
</a-form-item>
<a-input
placeholder=
"请输入路由参数 redirect"
v-
model=
"model.redirect
"
:readOnly=
"disableSubmit"
/>
</a-form-
model-
item>
<a-form-item
<a-form-
model-
item
v-show=
"!show"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"perms"
label=
"授权标识"
>
<a-input
placeholder=
"请输入授权标识, 如: user:list"
v-
decorator=
"[ 'perms',
{rules:[{ required: false, message: '请输入授权标识!' },{validator: this.validatePerms }]}]
" :readOnly="disableSubmit"/>
</a-form-item>
<a-input
placeholder=
"请输入授权标识, 如: user:list"
v-
model=
"model.perms
"
:readOnly=
"disableSubmit"
/>
</a-form-
model-
item>
<a-form-item
<a-form-
model-
item
v-show=
"!show"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"授权策略"
>
<j-dict-select-tag
v-
decorator=
"['permsType',
{}]" placeholder="请选择授权策略" :type="'radio'" :triggerChange="true"
dictCode="global_perms_type"/>
<j-dict-select-tag
v-
model=
"model.permsType"
placeholder=
"请选择授权策略"
:type=
"'radio'"
dictCode=
"global_perms_type"
/>
</a-form-item>
<a-form-item
</a-form-
model-
item>
<a-form-
model-
item
v-show=
"!show"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"状态"
>
<j-dict-select-tag
v-decorator=
"['status',
{}]" placeholder="请选择状态" :type="'radio'" :triggerChange="true
" dictCode="valid_status"/>
<j-dict-select-tag
v-model=
"model.status"
placeholder=
"请选择状态"
:type=
"'radio'
"
dictCode=
"valid_status"
/>
</a-form-item>
</a-form-
model-
item>
<a-form-item
<a-form-
model-
item
v-show=
"show"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
...
...
@@ -104,61 +108,59 @@
<a-input
placeholder=
"点击选择图标"
v-model=
"model.icon"
:readOnly=
"disableSubmit"
>
<a-icon
slot=
"addonAfter"
type=
"setting"
@
click=
"selectIcons"
/>
</a-input>
</a-form-item>
</a-form-
model-
item>
<a-form-item
<a-form-
model-
item
v-show=
"show"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"sortNo"
label=
"排序"
>
<a-input-number
placeholder=
"请输入菜单排序"
style=
"width: 200px"
v-decorator=
"[ 'sortNo',validatorRules.sortNo]
"
:readOnly=
"disableSubmit"
/>
</a-form-item>
<a-input-number
placeholder=
"请输入菜单排序"
v-model=
"model.sortNo"
style=
"width: 200px
"
:readOnly=
"disableSubmit"
/>
</a-form-
model-
item>
<a-form-item
<a-form-
model-
item
v-show=
"show"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"是否路由菜单"
>
<a-switch
checkedChildren=
"是"
unCheckedChildren=
"否"
v-model=
"
routeSwitch
"
/>
</a-form-item>
<a-switch
checkedChildren=
"是"
unCheckedChildren=
"否"
v-model=
"
model.route
"
/>
</a-form-
model-
item>
<a-form-item
<a-form-
model-
item
v-show=
"show"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"隐藏路由"
>
<a-switch
checkedChildren=
"是"
unCheckedChildren=
"否"
v-model=
"m
enuH
idden"
/>
</a-form-item>
<a-switch
checkedChildren=
"是"
unCheckedChildren=
"否"
v-model=
"m
odel.h
idden"
/>
</a-form-
model-
item>
<a-form-item
<a-form-
model-
item
v-show=
"show"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"是否缓存路由"
>
<a-switch
checkedChildren=
"是"
unCheckedChildren=
"否"
v-model=
"
isKeepa
live"
/>
</a-form-item>
<a-switch
checkedChildren=
"是"
unCheckedChildren=
"否"
v-model=
"
model.keepA
live"
/>
</a-form-
model-
item>
<a-form-item
<a-form-
model-
item
v-show=
"show"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"聚合路由"
>
<a-switch
checkedChildren=
"是"
unCheckedChildren=
"否"
v-model=
"alwaysShow"
/>
</a-form-item>
<a-switch
checkedChildren=
"是"
unCheckedChildren=
"否"
v-model=
"
model.
alwaysShow"
/>
</a-form-
model-
item>
<!--update_begin author:wuxianquan date:20190908 for:增加组件,外链打开方式可选 -->
<a-form-item
<a-form-model-item
v-show=
"show"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
label=
"打开方式"
>
<a-switch
checkedChildren=
"外部"
unCheckedChildren=
"内部"
v-model=
"internalOrExternal"
/>
</a-form-item>
<!--update_end author:wuxianquan date:20190908 for:增加组件,外链打开方式可选 -->
<a-switch
checkedChildren=
"外部"
unCheckedChildren=
"内部"
v-model=
"model.internalOrExternal"
/>
</a-form-model-item>
</a-form>
</a-form-model>
<!-- 选择图标 -->
<icons
@
choose=
"handleIconChoose"
@
close=
"handleIconCancel"
:iconChooseVisible=
"iconChooseVisible"
></icons>
...
...
@@ -176,7 +178,6 @@
<
script
>
import
{
addPermission
,
editPermission
,
queryTreeList
,
duplicateCheck
}
from
'
@/api/api
'
import
Icons
from
'
./icon/Icons
'
import
pick
from
'
lodash.pick
'
export
default
{
name
:
"
PermissionModal
"
,
...
...
@@ -185,22 +186,12 @@
return
{
drawerWidth
:
700
,
treeData
:[],
treeValue
:
'
0-0-4
'
,
title
:
"
操作
"
,
visible
:
false
,
disableSubmit
:
false
,
model
:
{},
localMenuType
:
0
,
alwaysShow
:
false
,
//表单元素-聚合路由
menuHidden
:
false
,
//表单元素-隐藏路由
routeSwitch
:
true
,
//是否路由菜单
/*update_begin author:wuxianquan date:20190908 for:定义变量,初始值代表内部打开*/
internalOrExternal
:
false
,
//菜单打开方式
/*update_end author:wuxianquan date:20190908 for:定义变量,初始值代表内部打开*/
isKeepalive
:
true
,
//是否缓存路由
show
:
true
,
//根据菜单类型,动态显示隐藏表单元素
menuLabel
:
'
菜单名称
'
,
isRequrie
:
true
,
// 是否需要验证
labelCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
5
},
...
...
@@ -209,10 +200,7 @@
xs
:
{
span
:
24
},
sm
:
{
span
:
16
},
},
confirmLoading
:
false
,
form
:
this
.
$form
.
createForm
(
this
),
iconChooseVisible
:
false
,
validateStatus
:
""
}
...
...
@@ -220,23 +208,21 @@
computed
:{
validatorRules
:
function
()
{
return
{
name
:
{
rules
:
[{
required
:
true
,
message
:
'
请输入菜单标题!
'
}]}
,
component
:
{
rules
:
[{
required
:
this
.
show
,
message
:
'
请输入前端组件!
'
}]}
,
url
:
{
rules
:
[{
required
:
this
.
show
,
message
:
'
请输入菜单路径!
'
}]}
,
permsType
:
{
rules
:
[{
required
:
true
,
message
:
'
请输入授权策略!
'
}]}
,
sortNo
:{
initialValue
:
1.0
},
name
:
[{
required
:
true
,
message
:
'
请输入菜单标题!
'
}]
,
component
:
[{
required
:
this
.
show
,
message
:
'
请输入前端组件!
'
}]
,
url
:
[{
required
:
this
.
show
,
message
:
'
请输入菜单路径!
'
}]
,
permsType
:
[{
required
:
true
,
message
:
'
请输入授权策略!
'
}]
,
perms
:[{
required
:
false
,
message
:
'
请输入授权标识!
'
},{
validator
:
this
.
validatePerms
}]
}
}
},
created
()
{
this
.
initDictConfig
();
},
methods
:
{
loadTree
(){
var
that
=
this
;
queryTreeList
().
then
((
res
)
=>
{
if
(
res
.
success
){
console
.
log
(
'
----queryTreeList---
'
)
console
.
log
(
res
)
that
.
treeData
=
[];
let
treeList
=
res
.
result
.
treeList
...
...
@@ -249,76 +235,33 @@
});
},
add
()
{
//
默认值
this
.
edit
({
status
:
'
1
'
,
permsType
:
'
1
'
,
route
:
true
});
//
初始化
默认值
this
.
edit
({
status
:
'
1
'
,
permsType
:
'
1
'
,
sortNo
:
1.0
,
route
:
true
,
menuType
:
0
});
},
edit
(
record
)
{
this
.
resetScreenSize
();
// 调用此方法,根据屏幕宽度自适应调整抽屉的宽度
this
.
form
.
resetFields
();
this
.
model
=
Object
.
assign
({},
record
);
//--------------------------------------------------------------------------------------------------
//根据菜单类型,动态展示页面字段
console
.
log
(
record
)
this
.
alwaysShow
=
!
record
.
alwaysShow
?
false
:
true
;
this
.
menuHidden
=
!
record
.
hidden
?
false
:
true
;
if
(
record
.
route
!=
null
){
this
.
routeSwitch
=
record
.
route
?
true
:
false
;
}
if
(
record
.
keepAlive
!=
null
){
this
.
isKeepalive
=
record
.
keepAlive
?
true
:
false
;
}
else
{
this
.
isKeepalive
=
false
;
// 升级兼容 如果没有(后台没有传过来、或者是新建)默认为false
}
/*update_begin author:wuxianquan date:20190908 for:编辑初始化数据*/
if
(
record
.
internalOrExternal
!=
null
){
this
.
internalOrExternal
=
record
.
internalOrExternal
?
true
:
false
;
}
else
{
this
.
internalOrExternal
=
false
;
}
/*update_end author:wuxianquan date:20190908 for:编辑初始化数据*/
//console.log('record.menuType', record.menuType);
//根据菜单类型,动态展示页面字段
console
.
log
(
'
record:
'
,
record
)
this
.
show
=
record
.
menuType
==
2
?
false
:
true
;
this
.
menuLabel
=
record
.
menuType
==
2
?
'
按钮/权限
'
:
'
菜单名称
'
;
if
(
this
.
model
.
parentId
){
this
.
localMenuType
=
1
;
}
else
{
this
.
localMenuType
=
0
;
}
//----------------------------------------------------------------------------------------------
this
.
visible
=
true
;
this
.
loadTree
();
let
fieldsVal
=
pick
(
this
.
model
,
'
name
'
,
'
perms
'
,
'
permsType
'
,
'
component
'
,
'
redirect
'
,
'
url
'
,
'
sortNo
'
,
'
menuType
'
,
'
status
'
);
this
.
$nextTick
(()
=>
{
this
.
form
.
setFieldsValue
(
fieldsVal
)
});
},
close
()
{
this
.
$emit
(
'
close
'
);
this
.
disableSubmit
=
false
;
this
.
visible
=
false
;
this
.
$refs
.
form
.
resetFields
();
},
handleOk
()
{
const
that
=
this
;
// 触发表单验证
this
.
form
.
validateFields
((
err
,
values
)
=>
{
if
(
!
err
)
{
this
.
model
.
alwaysShow
=
this
.
alwaysShow
;
this
.
model
.
hidden
=
this
.
menuHidden
;
this
.
model
.
route
=
this
.
routeSwitch
;
this
.
model
.
keepAlive
=
this
.
isKeepalive
;
/*update_begin author:wuxianquan date:20190908 for:获取值*/
this
.
model
.
internalOrExternal
=
this
.
internalOrExternal
;
/*update_end author:wuxianquan date:20190908 for:获取值*/
let
formData
=
Object
.
assign
(
this
.
model
,
values
);
if
((
formData
.
menuType
==
1
||
formData
.
menuType
==
2
)
&&
!
formData
.
parentId
)
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
if
((
this
.
model
.
menuType
==
1
||
this
.
model
.
menuType
==
2
)
&&
!
this
.
model
.
parentId
)
{
that
.
validateStatus
=
'
error
'
;
that
.
$message
.
error
(
"
请检查你填的类型以及信息是否正确!
"
);
return
;
...
...
@@ -326,12 +269,11 @@
that
.
validateStatus
=
'
success
'
;
}
that
.
confirmLoading
=
true
;
console
.
log
(
formData
);
let
obj
;
if
(
!
this
.
model
.
id
)
{
obj
=
addPermission
(
formData
);
obj
=
addPermission
(
this
.
model
);
}
else
{
obj
=
editPermission
(
formData
);
obj
=
editPermission
(
this
.
model
);
}
obj
.
then
((
res
)
=>
{
if
(
res
.
success
)
{
...
...
@@ -344,6 +286,8 @@
that
.
confirmLoading
=
false
;
that
.
close
();
});
}
else
{
return
false
;
}
})
},
...
...
@@ -378,9 +322,7 @@
}
},
onChangeMenuType
(
e
)
{
//console.log('localMenuType checked', e.target.value)
this
.
localMenuType
=
e
.
target
.
value
if
(
e
.
target
.
value
==
2
){
if
(
this
.
model
.
menuType
==
2
){
this
.
show
=
false
;
this
.
menuLabel
=
'
按钮/权限
'
;
}
else
{
...
...
@@ -388,7 +330,7 @@
this
.
menuLabel
=
'
菜单名称
'
;
}
this
.
$nextTick
(()
=>
{
this
.
form
.
validateFields
([
'
url
'
,
'
component
'
],
{
force
:
true
}
);
this
.
$refs
.
form
.
validateField
([
'
url
'
,
'
component
'
]
);
});
},
selectIcons
(){
...
...
@@ -400,7 +342,6 @@
handleIconChoose
(
value
)
{
console
.
log
(
value
)
this
.
model
.
icon
=
value
this
.
form
.
icon
=
value
this
.
iconChooseVisible
=
false
},
// 根据屏幕变化,设置抽屉尺寸
...
...
@@ -412,8 +353,6 @@
this
.
drawerWidth
=
700
;
}
},
initDictConfig
()
{
},
handleParentIdChange
(
value
){
if
(
!
value
){
this
.
validateStatus
=
"
error
"
...
...
ant-design-vue-jeecg/src/views/system/modules/RoleModal.vue
浏览文件 @
da5ace33
此差异已折叠。
点击以展开。
ant-design-vue-jeecg/src/views/system/modules/SysAnnouncementModal.vue
浏览文件 @
da5ace33
此差异已折叠。
点击以展开。
ant-design-vue-jeecg/src/views/system/modules/SysCategoryModal.vue
浏览文件 @
da5ace33
此差异已折叠。
点击以展开。
ant-design-vue-jeecg/src/views/system/modules/SysDepartRoleModal.vue
浏览文件 @
da5ace33
...
...
@@ -9,35 +9,37 @@
cancelText=
"关闭"
>
<a-spin
:spinning=
"confirmLoading"
>
<a-form
:form=
"form
"
>
<a-form
-model
ref=
"form"
:model=
"model"
:rules=
"validatorRules
"
>
<a-form-item
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"roleName"
label=
"部门角色名称"
>
<a-input
placeholder=
"请输入部门角色名称"
v-
decorator=
"['roleName', validatorRules.roleName]"
/>
</a-form-item>
<a-form-item
<a-input
placeholder=
"请输入部门角色名称"
v-
model=
"model.roleName"
/>
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"roleCode"
label=
"部门角色编码"
>
<a-input
placeholder=
"请输入部门角色编码"
v-
decorator=
"['roleCode', validatorRules.roleCode]"
/>
</a-form-item>
<a-form-item
<a-input
placeholder=
"请输入部门角色编码"
v-
model=
"model.roleCode"
/>
</a-form-
model-
item>
<a-form-
model-
item
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"description"
label=
"描述"
>
<a-input
placeholder=
"请输入描述"
v-
decorator=
"['description', validatorRules.description]"
/>
</a-form-item>
<a-input
placeholder=
"请输入描述"
v-
model=
"model.description"
/>
</a-form-
model-
item>
</a-form>
</a-form
-model
>
</a-spin>
</a-modal>
</
template
>
<
script
>
import
{
httpAction
}
from
'
@/api/manage
'
import
pick
from
'
lodash.pick
'
import
{
duplicateCheck
}
from
'
@/api/api
'
export
default
{
...
...
@@ -55,25 +57,20 @@
xs
:
{
span
:
24
},
sm
:
{
span
:
16
},
},
confirmLoading
:
false
,
form
:
this
.
$form
.
createForm
(
this
),
validatorRules
:{
roleName
:{
rules
:
[
roleName
:[
{
required
:
true
,
message
:
'
请输入部门角色名称!
'
},
{
min
:
2
,
max
:
30
,
message
:
'
长度在 2 到 30 个字符
'
,
trigger
:
'
blur
'
}
]},
roleCode
:{
rules
:
[
],
roleCode
:
[
{
required
:
true
,
message
:
'
请输入部门角色编码!
'
},
{
min
:
0
,
max
:
64
,
message
:
'
长度不超过 64 个字符
'
,
trigger
:
'
blur
'
},
{
validator
:
this
.
validateRoleCode
}
]},
description
:{
rules
:
[
],
description
:
[
{
min
:
0
,
max
:
126
,
message
:
'
长度不超过 126 个字符
'
,
trigger
:
'
blur
'
}
]
}
]
},
url
:
{
add
:
"
/sys/sysDepartRole/add
"
,
...
...
@@ -89,22 +86,19 @@
},
edit
(
record
,
departId
)
{
this
.
departId
=
departId
;
this
.
form
.
resetFields
();
this
.
model
=
Object
.
assign
({},
record
);
this
.
visible
=
true
;
this
.
$nextTick
(()
=>
{
this
.
form
.
setFieldsValue
(
pick
(
this
.
model
,
'
roleName
'
,
'
roleCode
'
,
'
description
'
))
});
},
close
()
{
this
.
$emit
(
'
close
'
);
this
.
visible
=
false
;
this
.
$refs
.
form
.
resetFields
()
},
handleOk
()
{
const
that
=
this
;
// 触发表单验证
this
.
form
.
validateFields
((
err
,
values
)
=>
{
if
(
!
err
)
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
that
.
confirmLoading
=
true
;
let
httpurl
=
''
;
let
method
=
''
;
...
...
@@ -115,9 +109,8 @@
httpurl
+=
this
.
url
.
edit
;
method
=
'
put
'
;
}
let
formData
=
Object
.
assign
(
this
.
model
,
values
);
formData
.
departId
=
this
.
departId
;
httpAction
(
httpurl
,
formData
,
method
).
then
((
res
)
=>
{
this
.
model
.
departId
=
this
.
departId
;
httpAction
(
httpurl
,
this
.
model
,
method
).
then
((
res
)
=>
{
if
(
res
.
success
){
that
.
$message
.
success
(
res
.
message
);
that
.
$emit
(
'
ok
'
);
...
...
@@ -128,6 +121,8 @@
that
.
confirmLoading
=
false
;
that
.
close
();
})
}
else
{
return
false
;
}
})
},
...
...
ant-design-vue-jeecg/src/views/system/modules/SysPositionModal.vue
浏览文件 @
da5ace33
此差异已折叠。
点击以展开。
ant-design-vue-jeecg/src/views/system/modules/TenantForm.vue
浏览文件 @
da5ace33
此差异已折叠。
点击以展开。
ant-design-vue-jeecg/src/views/system/modules/TenantModal.vue
浏览文件 @
da5ace33
...
...
@@ -13,7 +13,6 @@
</
template
>
<
script
>
import
TenantForm
from
'
./TenantForm
'
export
default
{
name
:
"
TenantModal
"
,
...
...
@@ -32,13 +31,13 @@
add
()
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
add
();
this
.
$refs
.
realForm
.
show
();
})
},
edit
(
record
)
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
edit
(
record
);
this
.
$refs
.
realForm
.
show
(
record
);
})
},
close
()
{
...
...
ant-design-vue-jeecg/src/views/system/modules/UserModal.vue
浏览文件 @
da5ace33
此差异已折叠。
点击以展开。
ant-design-vue-jeecg/src/views/user/Login.vue
浏览文件 @
da5ace33
此差异已折叠。
点击以展开。
ant-design-vue-jeecg/yarn.lock
浏览文件 @
da5ace33
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录