Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
S
smart-web-tabs
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
SVI
svi-templates
smart-web-tabs
Commits
28093b68
Commit
28093b68
authored
Nov 21, 2019
by
陈珠河
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix: 新表单流程操作问题
parent
f0b1100e
Show whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
231 additions
and
49 deletions
+231
-49
App.vue
template/form/App.vue
+1
-1
config.js
template/form/api/config.js
+0
-3
index.scss
template/form/styles/index.scss
+8
-3
reset.scss
template/form/styles/reset.scss
+5
-0
form.js
template/form/utils/form.js
+3
-3
returnTask.vue
template/form/views/common/returnTask.vue
+1
-1
form.vue
template/form/views/form.vue
+14
-10
page.vue
template/form/views/page.vue
+1
-1
config.js
template/src/api/config.js
+0
-4
index.js
template/src/api/index.js
+4
-0
loginInterceptor.js
template/src/api/loginInterceptor.js
+1
-1
tab-nav.vue
template/src/components/tabs/src/tab-nav.vue
+2
-5
tabs.vue
template/src/components/tabs/src/tabs.vue
+2
-2
main.js
template/src/main.js
+1
-1
asyncComponents.js
template/src/plugins/asyncComponents.js
+1
-1
registComponents.js
template/src/plugins/registComponents.js
+2
-2
businessConfig.js
template/src/plugins/routes/businessConfig.js
+0
-0
index.js
template/src/store/index.js
+1
-1
menu.js
template/src/utils/expression/modules/menu.js
+1
-2
system.js
template/src/utils/expression/modules/system.js
+0
-0
global.js
template/src/utils/global.js
+0
-3
index.js
template/src/utils/index.js
+0
-0
permissionMixin.js
template/src/utils/mixins/permissionMixin.js
+0
-0
Main.vue
template/src/views/Main.vue
+25
-4
Navigation.vue
template/src/views/Navigation.vue
+1
-1
ConfigurePage.vue
template/src/views/common/ConfigurePage.vue
+0
-0
Header.vue
template/src/views/common/Header.vue
+0
-0
Logo.vue
template/src/views/common/Logo.vue
+0
-0
PasswordDialog.vue
template/src/views/common/PasswordDialog.vue
+157
-0
No files found.
template/form/App.vue
View file @
28093b68
...
@@ -30,7 +30,7 @@ export default {
...
@@ -30,7 +30,7 @@ export default {
mounted
()
{
mounted
()
{
document
.
addEventListener
(
'scroll'
,
()
=>
{
document
.
addEventListener
(
'scroll'
,
()
=>
{
console
.
log
(
document
.
body
.
scrollTop
);
//
console.log(document.body.scrollTop);
});
});
}
}
};
};
...
...
template/form/api/config.js
View file @
28093b68
...
@@ -107,7 +107,6 @@ const config = {
...
@@ -107,7 +107,6 @@ const config = {
resolve
(
res
.
data
);
resolve
(
res
.
data
);
})
})
.
catch
(
res
=>
{
.
catch
(
res
=>
{
console
.
log
(
'post error:'
,
res
);
reject
(
res
);
reject
(
res
);
});
});
});
});
...
@@ -133,7 +132,6 @@ const config = {
...
@@ -133,7 +132,6 @@ const config = {
resolve
(
res
.
data
);
resolve
(
res
.
data
);
})
})
.
catch
(
res
=>
{
.
catch
(
res
=>
{
console
.
log
(
'post error:'
,
res
);
reject
(
res
);
reject
(
res
);
});
});
});
});
...
@@ -159,7 +157,6 @@ const config = {
...
@@ -159,7 +157,6 @@ const config = {
resolve
(
res
.
data
);
resolve
(
res
.
data
);
})
})
.
catch
(
res
=>
{
.
catch
(
res
=>
{
console
.
log
(
'post error:'
,
res
);
reject
(
res
);
reject
(
res
);
});
});
});
});
...
...
template/form/styles/index.scss
View file @
28093b68
...
@@ -65,15 +65,20 @@ body {
...
@@ -65,15 +65,20 @@ body {
}
}
.form-render
{
.form-render
{
padding-top
:
28
px
;
padding-top
:
44
px
;
width
:
1000px
;
width
:
1000px
;
margin
:
0
auto
;
margin
:
0
auto
;
}
}
.is-required
{
.submit-dialog
,
.return-work
,
.transform-work
{
.is-required
{
.el-textarea__inner
{
.el-textarea__inner
{
border-color
:
$--color-danger
;
border-color
:
$--color-danger
;
}
}
}
}
}
.page-view
{
.page-view
{
...
@@ -97,7 +102,7 @@ body {
...
@@ -97,7 +102,7 @@ body {
@include
e
(
wrapper
)
{
@include
e
(
wrapper
)
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
max-height
:
20vh
;
background-color
:
inherit
;
background-color
:
inherit
;
overflow
:
auto
;
overflow
:
auto
;
...
...
template/form/styles/reset.scss
View file @
28093b68
...
@@ -55,3 +55,7 @@ ul, ol, li {
...
@@ -55,3 +55,7 @@ ul, ol, li {
background-color
:
#C1C1C1
;
background-color
:
#C1C1C1
;
border-radius
:
6px
;
border-radius
:
6px
;
}
}
textarea
{
font-family
:
'Microsoft YaHei'
,
Arial
,
Helvetica
,
sans-serif
!
important
;
}
\ No newline at end of file
template/form/utils/form.js
View file @
28093b68
...
@@ -116,7 +116,7 @@ export function refreshTab(tabId) {
...
@@ -116,7 +116,7 @@ export function refreshTab(tabId) {
// 设置高级或某此控件需要【数组】、【对象】类型
// 设置高级或某此控件需要【数组】、【对象】类型
// 比如upload_list, sign
// 比如upload_list, sign
const
checkObjectJson
=
data
=>
{
const
checkObjectJson
=
data
=>
{
const
widgets
=
[
'upload_list'
,
'sign'
,
'select'
];
const
widgets
=
[
'upload_list'
,
'sign'
,
'select'
,
'approval'
];
if
(
widgets
.
includes
(
data
.
type
))
{
if
(
widgets
.
includes
(
data
.
type
))
{
return
data
.
model
;
return
data
.
model
;
}
else
{
}
else
{
...
@@ -132,10 +132,10 @@ export const transformFormData = formdata => {
...
@@ -132,10 +132,10 @@ export const transformFormData = formdata => {
if
(
!
formdata
.
list
)
return
;
if
(
!
formdata
.
list
)
return
;
const
arr
=
[];
const
arr
=
[];
const
fn
=
data
=>
{
const
fn
=
data
=>
{
data
.
map
(
item
=>
{
data
.
forEach
(
item
=>
{
// console.log(item)
// console.log(item)
if
(
item
.
type
===
'grid'
)
{
if
(
item
.
type
===
'grid'
)
{
item
.
columns
.
map
(
col
=>
{
item
.
columns
.
forEach
(
col
=>
{
fn
(
col
.
list
);
fn
(
col
.
list
);
});
});
}
else
if
(
item
.
type
!==
'text'
&&
item
.
type
!==
'button'
)
{
}
else
if
(
item
.
type
!==
'text'
&&
item
.
type
!==
'button'
)
{
...
...
template/form/views/common/returnTask.vue
View file @
28093b68
...
@@ -173,7 +173,7 @@ export default {
...
@@ -173,7 +173,7 @@ export default {
// 有历史的,可以执行退回
// 有历史的,可以执行退回
this
.
dialogVisible
=
true
;
this
.
dialogVisible
=
true
;
this
.
linkEntity
=
[];
this
.
linkEntity
=
[];
res
.
map
(
item
=>
{
res
.
forEach
(
item
=>
{
this
.
linkEntity
.
push
(
item
.
linkDefinitionEntity
);
this
.
linkEntity
.
push
(
item
.
linkDefinitionEntity
);
});
});
}
else
{
}
else
{
...
...
template/form/views/form.vue
View file @
28093b68
...
@@ -21,7 +21,7 @@
...
@@ -21,7 +21,7 @@
>
{{
item
.
operationName
}}
</el-button>
>
{{
item
.
operationName
}}
</el-button>
</div>
</div>
<div
class=
"form-render"
v-if=
"
isReRender
"
>
<div
class=
"form-render"
v-if=
"
!isLoading
"
>
<smart-form
:data=
"formData"
:value=
"values"
ref=
"generateForm"
></smart-form>
<smart-form
:data=
"formData"
:value=
"values"
ref=
"generateForm"
></smart-form>
</div>
</div>
...
@@ -112,7 +112,6 @@ export default {
...
@@ -112,7 +112,6 @@ export default {
return
{
return
{
apiFnName
:
''
,
// 加载API的方法名
apiFnName
:
''
,
// 加载API的方法名
isLoading
:
false
,
// 加载过渡
isLoading
:
false
,
// 加载过渡
isReRender
:
true
,
// 重渲染
headBtnLists
:
[],
// 头部的按钮列表
headBtnLists
:
[],
// 头部的按钮列表
headCustomBtns
:
[],
// 头部自定义按钮,一般包含表达式
headCustomBtns
:
[],
// 头部自定义按钮,一般包含表达式
formData
:
{},
formData
:
{},
...
@@ -238,6 +237,7 @@ export default {
...
@@ -238,6 +237,7 @@ export default {
'template'
'template'
);
);
this
.
formData
=
JSON
.
parse
(
_data
)
||
{};
this
.
formData
=
JSON
.
parse
(
_data
)
||
{};
this
.
$set
(
this
.
formData
.
config
,
'disabled'
,
ourselfOperationShow
[
'sign'
]
||
false
);
this
.
handleModels
(
this
.
handleModels
(
this
.
handleResultHtml
(
detailMap
[
'result'
],
'values'
)
this
.
handleResultHtml
(
detailMap
[
'result'
],
'values'
)
);
);
...
@@ -392,7 +392,7 @@ export default {
...
@@ -392,7 +392,7 @@ export default {
handleFormData
()
{
handleFormData
()
{
const
formData
=
this
.
$refs
[
'generateForm'
].
getData
();
const
formData
=
this
.
$refs
[
'generateForm'
].
getData
();
const
fomrDataSub
=
new
FormData
();
const
fomrDataSub
=
new
FormData
();
Object
.
keys
(
formData
).
map
(
key
=>
{
Object
.
keys
(
formData
).
forEach
(
key
=>
{
let
value
=
formData
[
key
];
let
value
=
formData
[
key
];
// 转JSON字符串提交
// 转JSON字符串提交
if
(
typeof
formData
[
key
]
===
'object'
&&
formData
[
key
]
!==
null
)
{
if
(
typeof
formData
[
key
]
===
'object'
&&
formData
[
key
]
!==
null
)
{
...
@@ -420,6 +420,7 @@ export default {
...
@@ -420,6 +420,7 @@ export default {
// console.log(res)
// console.log(res)
if
(
res
.
status
===
0
)
{
if
(
res
.
status
===
0
)
{
notification
(
'success'
,
'保存成功!'
);
notification
(
'success'
,
'保存成功!'
);
this
.
refresh
();
}
else
{
}
else
{
notification
(
'warning'
,
res
.
message
||
'保存失败,请重试!'
);
notification
(
'warning'
,
res
.
message
||
'保存失败,请重试!'
);
}
}
...
@@ -519,24 +520,18 @@ export default {
...
@@ -519,24 +520,18 @@ export default {
];
];
this
.
isLoading
=
true
;
this
.
isLoading
=
true
;
this
.
isReRender
=
false
;
Api
.
doPostPromiseJson
(
apiUrl
,
submitData
)
Api
.
doPostPromiseJson
(
apiUrl
,
submitData
)
.
then
(
res
=>
{
.
then
(
res
=>
{
this
.
isLoading
=
false
;
this
.
isLoading
=
false
;
this
.
isReRender
=
true
;
// console.log('signTasks', res)
if
(
res
.
status
===
0
)
{
if
(
res
.
status
===
0
)
{
this
.
handleDataReturnErr
(
res
.
data
,
'接办成功'
);
this
.
handleDataReturnErr
(
res
.
data
,
'接办成功'
);
// 刷新
this
.
refresh
();
}
else
{
}
else
{
notification
(
'warning'
,
res
.
message
||
'接办失败,请重试'
);
notification
(
'warning'
,
res
.
message
||
'接办失败,请重试'
);
}
}
})
})
.
catch
(
err
=>
{
.
catch
(
err
=>
{
this
.
isLoading
=
false
;
this
.
isLoading
=
false
;
this
.
isReRender
=
true
;
notification
(
'error'
,
err
.
message
||
'接办失败!'
);
notification
(
'error'
,
err
.
message
||
'接办失败!'
);
});
});
},
},
...
@@ -596,7 +591,16 @@ export default {
...
@@ -596,7 +591,16 @@ export default {
this
.
isLoading
=
false
;
this
.
isLoading
=
false
;
// console.log('receiveTasks', res)
// console.log('receiveTasks', res)
if
(
res
.
status
===
0
)
{
if
(
res
.
status
===
0
)
{
this
.
handleDataReturnErr
(
res
.
data
,
'退件成功'
);
// 关闭和刷新标签页
setTimeout
(()
=>
{
refreshTab
();
closeTab
();
outerNotice
({
type
:
'success'
,
title
:
'退件成功!'
,
message
:
res
.
message
});
},
150
);
}
else
{
}
else
{
notification
(
'warning'
,
res
.
message
||
'退件失败,请重试'
);
notification
(
'warning'
,
res
.
message
||
'退件失败,请重试'
);
}
}
...
...
template/form/views/page.vue
View file @
28093b68
...
@@ -37,7 +37,6 @@ export default {
...
@@ -37,7 +37,6 @@ export default {
mounted
()
{
mounted
()
{
if
(
!
this
.
id
)
return
;
if
(
!
this
.
id
)
return
;
this
.
getTemplate
();
this
.
getAuthories
();
this
.
getAuthories
();
},
},
...
@@ -74,6 +73,7 @@ export default {
...
@@ -74,6 +73,7 @@ export default {
moduleId
moduleId
}).
then
(
res
=>
{
}).
then
(
res
=>
{
if
(
res
.
status
===
0
)
{
if
(
res
.
status
===
0
)
{
this
.
getTemplate
();
if
(
!
this
.
pageInfo
)
this
.
pageInfo
=
{};
if
(
!
this
.
pageInfo
)
this
.
pageInfo
=
{};
this
.
pageInfo
.
authorities
=
res
.
data
.
sysAuthorizeList
;
this
.
pageInfo
.
authorities
=
res
.
data
.
sysAuthorizeList
;
}
else
{
}
else
{
...
...
template/src/api/config.js
View file @
28093b68
...
@@ -100,7 +100,6 @@ const config = {
...
@@ -100,7 +100,6 @@ const config = {
}).
then
(
response
=>
{
}).
then
(
response
=>
{
resolve
(
response
.
data
);
resolve
(
response
.
data
);
}).
catch
(
response
=>
{
}).
catch
(
response
=>
{
// console.error('ajax error:', response)
reject
(
response
);
reject
(
response
);
});
});
});
});
...
@@ -129,7 +128,6 @@ const config = {
...
@@ -129,7 +128,6 @@ const config = {
}).
then
(
res
=>
{
}).
then
(
res
=>
{
resolve
(
res
.
data
);
resolve
(
res
.
data
);
}).
catch
(
res
=>
{
}).
catch
(
res
=>
{
console
.
log
(
'post error:'
,
res
);
reject
(
res
);
reject
(
res
);
});
});
});
});
...
@@ -154,7 +152,6 @@ const config = {
...
@@ -154,7 +152,6 @@ const config = {
}).
then
(
res
=>
{
}).
then
(
res
=>
{
resolve
(
res
.
data
);
resolve
(
res
.
data
);
}).
catch
(
res
=>
{
}).
catch
(
res
=>
{
// console.log('post error:', res)
reject
(
res
);
reject
(
res
);
});
});
});
});
...
@@ -179,7 +176,6 @@ const config = {
...
@@ -179,7 +176,6 @@ const config = {
}).
then
(
res
=>
{
}).
then
(
res
=>
{
resolve
(
res
.
data
);
resolve
(
res
.
data
);
}).
catch
(
res
=>
{
}).
catch
(
res
=>
{
console
.
log
(
'post error:'
,
res
);
reject
(
res
);
reject
(
res
);
});
});
});
});
...
...
template/src/api/index.js
View file @
28093b68
...
@@ -93,6 +93,10 @@ const Api = {
...
@@ -93,6 +93,10 @@ const Api = {
return
config
.
doGetPromise
(
'/authorityManage/queryUserSysAuthorizeInfoList'
,
{
return
config
.
doGetPromise
(
'/authorityManage/queryUserSysAuthorizeInfoList'
,
{
moduleId
moduleId
});
});
},
// 修改密码
updatePassword
(
userId
,
newPassword
)
{
return
config
.
doGetPromise
(
'/index/updatePassword'
,
{
id
:
userId
,
newPassword
:
newPassword
});
}
}
};
};
...
...
template/src/api/loginInterceptor.js
View file @
28093b68
...
@@ -7,7 +7,7 @@ import MessageBox from 'element-ui/lib/message-box';
...
@@ -7,7 +7,7 @@ import MessageBox from 'element-ui/lib/message-box';
const handleFilter = (key) => {
const handleFilter = (key) => {
if (Array.isArray(filters)) {
if (Array.isArray(filters)) {
filters.
map
(item => {
filters.
forEach
(item => {
if (item === key) {}
if (item === key) {}
})
})
}
}
...
...
template/src/components/tabs/src/tab-nav.vue
View file @
28093b68
<
script
>
<
script
>
import
TabBar
from
'./tab-bar'
;
import
TabBar
from
'./tab-bar'
;
import
{
addResizeListener
,
removeResizeListener
}
from
'
element-ui/src/utils
/resize-event'
;
import
{
addResizeListener
,
removeResizeListener
}
from
'
smart-web/src/utils/element-ui
/resize-event'
;
function
noop
()
{}
function
noop
()
{}
const
firstUpperCase
=
str
=>
{
const
firstUpperCase
=
str
=>
{
...
@@ -197,12 +197,10 @@ export default {
...
@@ -197,12 +197,10 @@ export default {
onMousewheel
(
e
)
{
onMousewheel
(
e
)
{
e
.
stopPropagation
();
e
.
stopPropagation
();
// console.log('mousewheel', e)
const
delta
=
event
.
wheelDelta
||
event
.
detail
;
const
delta
=
event
.
wheelDelta
||
event
.
detail
;
const
navSize
=
this
.
$refs
.
nav
[
`offset
${
firstUpperCase
(
this
.
sizeName
)
}
`
];
const
navSize
=
this
.
$refs
.
nav
[
`offset
${
firstUpperCase
(
this
.
sizeName
)
}
`
];
const
containerSize
=
this
.
$refs
.
navScroll
[
`offset
${
firstUpperCase
(
this
.
sizeName
)
}
`
];
const
containerSize
=
this
.
$refs
.
navScroll
[
`offset
${
firstUpperCase
(
this
.
sizeName
)
}
`
];
const
currentOffset
=
this
.
navOffset
;
const
currentOffset
=
this
.
navOffset
;
// console.log(delta, delta
<
0
,
currentOffset
,
containerSize
,
navSize
)
let
newOffset
=
0
;
let
newOffset
=
0
;
...
@@ -222,7 +220,6 @@ export default {
...
@@ -222,7 +220,6 @@ export default {
},
},
onContextmenuClick
(
pane
,
type
,
e
)
{
onContextmenuClick
(
pane
,
type
,
e
)
{
// console.log('onclick', pane, e)
switch
(
type
)
{
switch
(
type
)
{
case
'关闭该标签页'
:
case
'关闭该标签页'
:
this
.
onTabRemove
(
pane
,
e
);
this
.
onTabRemove
(
pane
,
e
);
...
@@ -256,7 +253,7 @@ export default {
...
@@ -256,7 +253,7 @@ export default {
node
.
id
=
'sTabsContextmenu'
;
node
.
id
=
'sTabsContextmenu'
;
const
list
=
[
'关闭该标签页'
,
'关闭其他标签页'
,
'关闭全部'
];
const
list
=
[
'关闭该标签页'
,
'关闭其他标签页'
,
'关闭全部'
];
list
.
map
(
item
=>
{
list
.
forEach
(
item
=>
{
const
liNode
=
document
.
createElement
(
'li'
);
const
liNode
=
document
.
createElement
(
'li'
);
liNode
.
className
=
's-tabs__contextmenu--item'
;
liNode
.
className
=
's-tabs__contextmenu--item'
;
liNode
.
addEventListener
(
'click'
,
(
e
)
=>
{
liNode
.
addEventListener
(
'click'
,
(
e
)
=>
{
...
...
template/src/components/tabs/src/tabs.vue
View file @
28093b68
...
@@ -87,7 +87,7 @@ export default {
...
@@ -87,7 +87,7 @@ export default {
handleTabOtherRemove
(
pane
,
ev
)
{
handleTabOtherRemove
(
pane
,
ev
)
{
ev
.
stopPropagation
();
ev
.
stopPropagation
();
this
.
panes
.
map
(
item
=>
{
this
.
panes
.
forEach
(
item
=>
{
if
(
item
.
name
!==
pane
.
name
&&
item
.
isClosable
)
{
if
(
item
.
name
!==
pane
.
name
&&
item
.
isClosable
)
{
this
.
handleTabRemove
(
item
,
ev
);
this
.
handleTabRemove
(
item
,
ev
);
}
}
...
@@ -97,7 +97,7 @@ export default {
...
@@ -97,7 +97,7 @@ export default {
},
},
handleTabALLRemove
(
ev
)
{
handleTabALLRemove
(
ev
)
{
this
.
panes
.
map
(
item
=>
{
this
.
panes
.
forEach
(
item
=>
{
if
(
item
.
isClosable
)
{
if
(
item
.
isClosable
)
{
this
.
handleTabRemove
(
item
,
ev
);
this
.
handleTabRemove
(
item
,
ev
);
}
else
{
}
else
{
...
...
template/src/main.js
View file @
28093b68
...
@@ -5,7 +5,7 @@ import App from './App';
...
@@ -5,7 +5,7 @@ import App from './App';
import
router
from
'./router'
;
import
router
from
'./router'
;
import
store
from
'./store'
;
import
store
from
'./store'
;
import
ElemetUI
from
'element-ui'
;
import
ElemetUI
from
'element-ui'
;
import
SmartWeb
from
'smart-web/
lib/main
'
;
import
SmartWeb
from
'smart-web/
src/main.js
'
;
import
VueProgressBar
from
'vue-progressbar'
;
import
VueProgressBar
from
'vue-progressbar'
;
import
'./styles/app.scss'
;
import
'./styles/app.scss'
;
// import 'smart-web/packages/styles/lib/index.css';
// import 'smart-web/packages/styles/lib/index.css';
...
...
template/src/plugins/asyncComponents.js
View file @
28093b68
...
@@ -27,7 +27,7 @@ files.keys().forEach(key => {
...
@@ -27,7 +27,7 @@ files.keys().forEach(key => {
});
});
const
install
=
(
Vue
,
opts
=
{})
=>
{
const
install
=
(
Vue
,
opts
=
{})
=>
{
Object
.
keys
(
asyncComponents
).
map
(
key
=>
{
Object
.
keys
(
asyncComponents
).
forEach
(
key
=>
{
if
(
typeof
asyncComponents
[
key
]
===
'object'
)
{
if
(
typeof
asyncComponents
[
key
]
===
'object'
)
{
asyncComponents
[
key
].
extends
=
extend
;
asyncComponents
[
key
].
extends
=
extend
;
}
}
...
...
template/src/plugins/registComponents.js
View file @
28093b68
...
@@ -10,9 +10,9 @@ export const registComponents = {
...
@@ -10,9 +10,9 @@ export const registComponents = {
Tabpane
Tabpane
};
};
Object
.
keys
(
registComponents
).
map
(
key
=>
{
Object
.
keys
(
registComponents
).
forEach
(
key
=>
{
if
(
registComponents
[
key
].
type
===
'prototype'
)
{
if
(
registComponents
[
key
].
type
===
'prototype'
)
{
Object
.
keys
(
registComponents
[
key
]).
map
(
item
=>
{
Object
.
keys
(
registComponents
[
key
]).
forEach
(
item
=>
{
Vue
.
prototype
[
item
]
=
registComponents
[
key
][
item
];
Vue
.
prototype
[
item
]
=
registComponents
[
key
][
item
];
});
});
}
else
{
}
else
{
...
...
template/src/plugins/routes/businessConfig.js
View file @
28093b68
template/src/store/index.js
View file @
28093b68
...
@@ -58,7 +58,7 @@ const store = new Vuex.Store({
...
@@ -58,7 +58,7 @@ const store = new Vuex.Store({
setNavigation
(
state
,
payload
)
{
setNavigation
(
state
,
payload
)
{
state
.
currentNavigation
=
payload
;
state
.
currentNavigation
=
payload
;
let
flag
=
true
;
let
flag
=
true
;
state
.
navigationList
.
map
(
item
=>
{
state
.
navigationList
.
forEach
(
item
=>
{
if
(
item
.
name
===
payload
.
name
)
{
if
(
item
.
name
===
payload
.
name
)
{
flag
=
false
;
flag
=
false
;
}
}
...
...
template/src/utils/expression/modules/menu.js
View file @
28093b68
...
@@ -41,7 +41,6 @@ export default {
...
@@ -41,7 +41,6 @@ export default {
const
fn
=
(
data
)
=>
{
const
fn
=
(
data
)
=>
{
const
len
=
data
.
length
;
const
len
=
data
.
length
;
for
(
let
i
=
0
;
i
<
len
;
i
++
)
{
for
(
let
i
=
0
;
i
<
len
;
i
++
)
{
// console.log(data[i].router, componentName)
if
(
data
[
i
].
router
===
componentName
)
{
if
(
data
[
i
].
router
===
componentName
)
{
menu
=
data
[
i
];
menu
=
data
[
i
];
break
;
break
;
...
@@ -94,7 +93,7 @@ export default {
...
@@ -94,7 +93,7 @@ export default {
* @param {String} id tab标签的唯一标识
* @param {String} id tab标签的唯一标识
*/
*/
refreshTab
(
id
)
{
refreshTab
(
id
)
{
store
.
state
.
navigationList
.
map
(
item
=>
{
store
.
state
.
navigationList
.
forEach
(
item
=>
{
if
(
item
.
id
===
id
)
{
if
(
item
.
id
===
id
)
{
item
.
param
=
{
item
.
param
=
{
reload
:
new
Date
()
reload
:
new
Date
()
...
...
template/src/utils/expression/modules/system.js
View file @
28093b68
template/src/utils/global.js
View file @
28093b68
...
@@ -10,7 +10,6 @@ export const getQueryString = (name) => {
...
@@ -10,7 +10,6 @@ export const getQueryString = (name) => {
const
r
=
window
.
location
.
search
.
substr
(
1
).
match
(
reg
);
// 查询?后面的参数,并匹配正则
const
r
=
window
.
location
.
search
.
substr
(
1
).
match
(
reg
);
// 查询?后面的参数,并匹配正则
if
(
r
!=
null
)
return
unescape
(
r
[
2
]);
if
(
r
!=
null
)
return
unescape
(
r
[
2
]);
const
param
=
getHashParameters
();
const
param
=
getHashParameters
();
// console.log(param)
if
(
param
[
name
])
return
param
[
name
];
if
(
param
[
name
])
return
param
[
name
];
return
null
;
return
null
;
};
};
...
@@ -41,13 +40,11 @@ export function removeLoading() {
...
@@ -41,13 +40,11 @@ export function removeLoading() {
// 获取系统信息
// 获取系统信息
export
function
getSystemInfo
(
sysCode
)
{
export
function
getSystemInfo
(
sysCode
)
{
sysCode
=
sysCode
||
getQueryString
(
'sysCode'
);
sysCode
=
sysCode
||
getQueryString
(
'sysCode'
);
console
.
log
(
'系统code:'
,
sysCode
);
return
new
Promise
((
resolve
,
reject
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
Api
.
getSystemInfo
(
sysCode
).
then
(
res
=>
{
Api
.
getSystemInfo
(
sysCode
).
then
(
res
=>
{
removeLoading
();
removeLoading
();
if
(
res
.
status
===
0
)
{
if
(
res
.
status
===
0
)
{
// console.log(res.data)
store
.
state
.
platformInfo
.
systemId
=
res
.
data
.
systemId
;
store
.
state
.
platformInfo
.
systemId
=
res
.
data
.
systemId
;
store
.
state
.
platformInfo
.
name
=
res
.
data
.
sysMainTitle
;
store
.
state
.
platformInfo
.
name
=
res
.
data
.
sysMainTitle
;
...
...
template/src/utils/index.js
View file @
28093b68
template/src/utils/mixins/permissionMixin.js
View file @
28093b68
template/src/views/Main.vue
View file @
28093b68
...
@@ -27,21 +27,25 @@
...
@@ -27,21 +27,25 @@
</div>
</div>
<router-view></router-view>
<router-view></router-view>
<password-dialog
:visiableDialog=
"visiableDialog"
@
visiable-dialog=
"handlePasswordDialogEvent"
></password-dialog>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
AppHeader
from
'./common/Header'
;
import
AppHeader
from
'./common/Header'
;
import
AppNavigation
from
'./Navigation'
;
import
AppNavigation
from
'./Navigation'
;
import
passwordDialog
from
'./common/PasswordDialog'
;
import
Utils
from
'@/utils'
;
import
Utils
from
'@/utils'
;
import
{
changeTheme
}
from
'@/utils/global'
;
import
{
changeTheme
,
getUser
}
from
'@/utils/global'
;
export
default
{
export
default
{
name
:
'Main'
,
name
:
'Main'
,
components
:
{
components
:
{
AppHeader
,
AppHeader
,
AppNavigation
AppNavigation
,
passwordDialog
},
},
computed
:
{
computed
:
{
...
@@ -76,7 +80,8 @@ export default {
...
@@ -76,7 +80,8 @@ export default {
style: '',
style: '',
componentName: 'frameworkManage'
componentName: 'frameworkManage'
} */
} */
]
],
visiableDialog
:
false
};
};
},
},
...
@@ -103,7 +108,7 @@ export default {
...
@@ -103,7 +108,7 @@ export default {
if
(
!
flag
)
return
;
if
(
!
flag
)
return
;
let
index
=
0
;
let
index
=
0
;
this
.
tabsData
.
map
((
tab
,
idx
)
=>
{
this
.
tabsData
.
forEach
((
tab
,
idx
)
=>
{
if
(
!
Utils
.
isEmptyData
(
oldVal
)
&&
oldVal
.
id
===
tab
.
id
)
{
if
(
!
Utils
.
isEmptyData
(
oldVal
)
&&
oldVal
.
id
===
tab
.
id
)
{
index
=
idx
;
index
=
idx
;
}
}
...
@@ -144,6 +149,8 @@ export default {
...
@@ -144,6 +149,8 @@ export default {
// 注册到全局
// 注册到全局
window
.
removeTab
=
this
.
removeTab
;
window
.
removeTab
=
this
.
removeTab
;
this
.
handleUserFirstLogin
();
},
},
methods
:
{
methods
:
{
...
@@ -182,7 +189,21 @@ export default {
...
@@ -182,7 +189,21 @@ export default {
handleComponentMounted
()
{
handleComponentMounted
()
{
this
.
$Progress
.
finish
();
this
.
$Progress
.
finish
();
},
// 处理用户首次登陆时,需要修改密码
handleUserFirstLogin
()
{
const
userInfo
=
getUser
();
if
(
userInfo
&&
userInfo
.
Status
&&
userInfo
.
Status
===
1
)
{
this
.
visiableDialog
=
true
;
}
}
},
// 修改密码框显示事件
handlePasswordDialogEvent
(
visiable
)
{
this
.
visiableDialog
=
!!
visiable
;
}
}
}
};
};
</
script
>
</
script
>
template/src/views/Navigation.vue
View file @
28093b68
...
@@ -261,7 +261,7 @@ export default {
...
@@ -261,7 +261,7 @@ export default {
render (h) {
render (h) {
let menuItem = ''
let menuItem = ''
this.navDatas.
map
(item => {
this.navDatas.
forEach
(item => {
if (item.children && item.children.length > 0) {
if (item.children && item.children.length > 0) {
menuItem += `<el-submenu index="${item.router}">`
menuItem += `<el-submenu index="${item.router}">`
...
...
template/src/views/common/ConfigurePage.vue
View file @
28093b68
template/src/views/common/Header.vue
View file @
28093b68
template/src/views/common/Logo.vue
View file @
28093b68
template/src/views/common/PasswordDialog.vue
0 → 100644
View file @
28093b68
<
template
>
<el-dialog
title=
"首次登录,请修改密码"
:visible
.
sync=
"dialogVisiable"
width=
"400px"
:before-close=
"handleBeforeCloseDialog"
:close-on-click-modal=
"false"
:close-on-press-escape=
"false"
>
<el-form
:rules=
"passwordRule"
:model=
"passwordForm"
ref=
"pswForm"
>
<el-form-item
label=
"新密码"
:label-width=
"formLabelWidth"
prop=
"password"
>
<el-input
v-model=
"passwordForm.password"
type=
"password"
autocomplete=
"off"
></el-input>
</el-form-item>
<el-form-item
label=
"确认新密码"
:label-width=
"formLabelWidth"
prop=
"comfirmPassword"
>
<el-input
v-model=
"passwordForm.comfirmPassword"
type=
"password"
autocomplete=
"off"
@
keyup
.
native
.
enter=
"handleSubmitPassword"
></el-input>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
:loading=
"passSubmiting"
@
click=
"handleSubmitPassword"
>
确 定
</el-button>
</div>
</el-dialog>
</
template
>
<
script
>
import
sha1
from
'js-sha1'
;
import
Api
from
'@/api'
;
import
{
getUser
}
from
'@/utils/global'
;
export
default
{
name
:
'PasswordDialog'
,
props
:
{
visiableDialog
:
{
type
:
Boolean
,
default
:
false
}
},
computed
:
{
dialogVisiable
()
{
return
this
.
visiableDialog
;
}
},
data
()
{
const
password
=
(
rule
,
value
,
callback
)
=>
{
if
(
value
===
''
)
{
callback
(
new
Error
(
'请输入密码'
));
}
else
{
if
(
this
.
passwordForm
.
comfirmPassword
!==
''
)
{
this
.
$refs
.
pswForm
.
validateField
(
'comfirmPassword'
);
}
callback
();
}
};
const
comfirmPassword
=
(
rule
,
value
,
callback
)
=>
{
if
(
value
===
''
)
{
callback
(
new
Error
(
'请再次输入密码'
));
}
else
if
(
value
!==
this
.
passwordForm
.
password
)
{
callback
(
new
Error
(
'两次输入密码不一致!'
));
}
else
{
callback
();
}
};
return
{
dialogVisible
:
false
,
passSubmiting
:
false
,
formLabelWidth
:
'100px'
,
passwordForm
:
{
password
:
''
,
comfirmPassword
:
''
},
passwordRule
:
{
password
:
[
{
required
:
true
,
message
:
'不能为空'
,
trigger
:
'change'
},
{
validator
:
password
,
trigger
:
'blur'
}
],
comfirmPassword
:
[
{
required
:
true
,
message
:
'不能为空'
,
trigger
:
'change'
},
{
validator
:
comfirmPassword
,
trigger
:
'blur'
}
]
}
};
},
methods
:
{
handleBeforeCloseDialog
()
{
this
.
$message
.
warning
(
'首次登陆,请修改密码哟!'
);
this
.
$emit
(
'visiable-dialog'
,
true
);
},
// 提交密码修改
handleSubmitPassword
()
{
this
.
$refs
[
'pswForm'
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
passSubmiting
=
true
;
const
userPassword
=
sha1
(
this
.
passwordForm
.
password
).
toUpperCase
();
const
userInfo
=
getUser
();
Api
.
updatePassword
(
userInfo
.
userId
,
userPassword
).
then
(
res
=>
{
if
(
res
.
status
===
0
)
{
this
.
modifyPassDialogVisible
=
false
;
this
.
loginOutAndReturnLogin
();
}
else
{
this
.
$message
({
message
:
'修改密码出错'
,
type
:
'warning'
,
duration
:
2000
});
}
}).
catch
(
err
=>
{
this
.
passSubmiting
=
false
;
this
.
$message
({
message
:
err
.
message
,
type
:
'error'
,
duration
:
2000
});
});
}
});
},
// 退出账号并返回到登陆
loginOutAndReturnLogin
()
{
Api
.
logout
().
then
(
res
=>
{
if
(
res
.
status
===
0
)
{
this
.
$message
({
message
:
'密码修改成功, 系统将在3s后为您跳转到登录页'
,
type
:
'success'
,
duration
:
3000
});
setTimeout
(()
=>
{
this
.
$router
.
replace
({
path
:
'/login'
});
this
.
passSubmiting
=
false
;
},
3000
);
}
else
{
this
.
$message
({
type
:
'warning'
,
message
:
'密码修改成功,由于'
+
res
.
message
});
}
}).
catch
(
err
=>
{
this
.
passSubmiting
=
false
;
this
.
$message
({
type
:
'error'
,
message
:
err
.
message
});
});
}
}
};
</
script
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment