Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
POC
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
iBizPOC_20003
POC
提交
e9cf29c4
提交
e9cf29c4
编写于
4月 08, 2020
作者:
ibizdev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ibizdev提交
上级
15e3ac29
变更
22
隐藏空白字符变更
内嵌
并排
正在显示
22 个修改的文件
包含
1547 行增加
和
18 行删除
+1547
-18
view-config.json
app_Web/public/assets/json/view-config.json
+8
-0
en-US.ts
app_Web/src/locale/lang/en-US.ts
+5
-0
zh-CN.ts
app_Web/src/locale/lang/zh-CN.ts
+5
-0
app-index-view-appmenu.ts
...mock/app/app-index-view-appmenu/app-index-view-appmenu.ts
+16
-0
viewconfig.ts
app_Web/src/mock/viewconfig/viewconfig.ts
+9
-1
app-index-view-base.vue
.../src/pages/ungroup/app-index-view/app-index-view-base.vue
+470
-0
app-index-view.less
app_Web/src/pages/ungroup/app-index-view/app-index-view.less
+73
-0
app-index-view.vue
app_Web/src/pages/ungroup/app-index-view/app-index-view.vue
+19
-0
main.ts
app_Web/src/pages/ungroup/app-index-view/main.ts
+67
-0
page-register.ts
app_Web/src/pages/ungroup/app-index-view/page-register.ts
+4
-0
router.ts
app_Web/src/pages/ungroup/app-index-view/router.ts
+68
-0
state.ts
app_Web/src/store/modules/view-action/state.ts
+9
-0
app-index-view-appmenu-base.vue
...pp/app-index-view-appmenu/app-index-view-appmenu-base.vue
+535
-0
app-index-view-appmenu-model.ts
...pp/app-index-view-appmenu/app-index-view-appmenu-model.ts
+48
-0
app-index-view-appmenu-service.ts
.../app-index-view-appmenu/app-index-view-appmenu-service.ts
+46
-0
app-index-view-appmenu.less
...ts/app/app-index-view-appmenu/app-index-view-appmenu.less
+102
-0
app-index-view-appmenu.vue
...ets/app/app-index-view-appmenu/app-index-view-appmenu.vue
+14
-0
vue.config.js
app_Web/vue.config.js
+32
-0
config.xml
config.xml
+6
-6
application-web.yml
im-app/im-app-web/src/main/resources/application-web.yml
+5
-5
application-wfweb.yml
im-app/im-app-wfweb/src/main/resources/application-wfweb.yml
+5
-5
application-dev.yml
im-boot/src/main/resources/application-dev.yml
+1
-1
未找到文件。
app_Web/public/assets/json/view-config.json
浏览文件 @
e9cf29c4
{
{
"appindexview"
:
{
"title"
:
"应用首页视图"
,
"caption"
:
"首页"
,
"viewtype"
:
"APPINDEXVIEW"
,
"viewmodule"
:
"Ungroup"
,
"viewname"
:
"AppIndexView"
,
"viewtag"
:
"958184FC-744E-4B78-A919-158C780D583F"
}
}
}
app_Web/src/locale/lang/en-US.ts
浏览文件 @
e9cf29c4
...
@@ -25,8 +25,13 @@ export default {
...
@@ -25,8 +25,13 @@ export default {
},
},
// 非实体视图
// 非实体视图
views
:
{
views
:
{
appindexview
:
{
caption
:
'首页'
,
},
},
},
menus
:
{
menus
:
{
appindexview
:
{
},
},
},
},
},
};
};
\ No newline at end of file
app_Web/src/locale/lang/zh-CN.ts
浏览文件 @
e9cf29c4
...
@@ -25,8 +25,13 @@ export default {
...
@@ -25,8 +25,13 @@ export default {
},
},
// 非实体视图
// 非实体视图
views
:
{
views
:
{
appindexview
:
{
caption
:
'首页'
,
},
},
},
menus
:
{
menus
:
{
appindexview
:
{
},
},
},
},
},
};
};
\ No newline at end of file
app_Web/src/mock/app/app-index-view-appmenu/app-index-view-appmenu.ts
0 → 100644
浏览文件 @
e9cf29c4
import
{
MockAdapter
}
from
'@/mock/mock-adapter'
;
const
mock
=
MockAdapter
.
getInstance
();
import
Mock
from
'mockjs'
const
Random
=
Mock
.
Random
;
// 获取应用数据
mock
.
onGet
(
'v7/app-index-viewappmenu'
).
reply
((
config
:
any
)
=>
{
let
status
=
MockAdapter
.
mockStatus
(
config
);
return
[
status
,
{
name
:
'appmenu'
,
items
:
[
],
}];
});
app_Web/src/mock/viewconfig/viewconfig.ts
浏览文件 @
e9cf29c4
...
@@ -7,5 +7,13 @@ import Mock from 'mockjs'
...
@@ -7,5 +7,13 @@ import Mock from 'mockjs'
mock
.
onGet
(
'./assets/json/view-config.json'
).
reply
((
config
:
any
)
=>
{
mock
.
onGet
(
'./assets/json/view-config.json'
).
reply
((
config
:
any
)
=>
{
let
status
=
MockAdapter
.
mockStatus
(
config
);
let
status
=
MockAdapter
.
mockStatus
(
config
);
return
[
status
,{
return
[
status
,{
}];
"appindexview"
:
{
"title"
:
"应用首页视图"
,
"caption"
:
"首页"
,
"viewtype"
:
"APPINDEXVIEW"
,
"viewmodule"
:
"Ungroup"
,
"viewname"
:
"AppIndexView"
,
"viewtag"
:
"958184FC-744E-4B78-A919-158C780D583F"
}
}];
});
});
\ No newline at end of file
app_Web/src/pages/ungroup/app-index-view/app-index-view-base.vue
0 → 100644
浏览文件 @
e9cf29c4
<
template
>
<div
class=
"index_view app-index-view"
>
<app-studioaction
viewTitle=
"应用首页视图"
viewName=
"appindexview"
></app-studioaction>
<layout
:class=
"themeClasses"
:style=
"themeStyle"
>
<header
class=
"index_header"
>
<div
class=
"page-logo"
>
<img
src=
"../../../assets/img/logo2.png"
height=
"22"
/>
<span
style=
"display: inline-block;margin-left: 10px;font-size: 22px;"
>
首页
</span>
</div>
<div
class=
"header-right"
style=
"display: flex;align-items: center;justify-content: space-between;"
>
<div>
<icon
type=
"md-notifications-outline"
style=
"font-size: 25px;margin: 0 10px;"
/>
</div>
<div>
<icon
type=
"ios-mail-open-outline"
style=
"font-size: 25px;margin: 0 10px;"
/>
</div>
<app-lang
style=
'font-size: 15px;padding: 0 10px;'
></app-lang>
<app-orgsector></app-orgsector>
<app-user></app-user>
<app-theme
style=
"width:45px;display: flex;justify-content: center;"
></app-theme>
</div>
</header>
<layout>
<sider
:width=
"collapseChange ? 64 : 200"
hide-trigger
v-model=
"collapseChange"
>
<div
class=
"sider-top"
>
<i
class=
"ivu-icon ivu-icon-md-menu"
@
click=
"handleClick"
></i>
</div>
<view
_appmenu
:viewState=
"viewState"
:viewparams=
"viewparams"
:context=
"context"
:showBusyIndicator=
"true"
v-model=
"collapseChange"
:mode=
"mode"
:selectTheme=
"selectTheme"
:isDefaultPage=
"isDefaultPage"
:defPSAppView=
"defPSAppView"
name=
"appmenu"
ref=
'appmenu'
@
closeview=
"closeView($event)"
>
</view
_appmenu
>
</sider>
<content
class=
"index_content"
:style=
"
{'width':this.collapseChange ? 'calc(100vw - 64px)' : 'calc(100vw - 200px)' }">
<tab-page-exp></tab-page-exp>
<app-keep-alive
:routerList=
"getRouterList"
>
<router-view
:key=
"getRouterViewKey"
></router-view>
</app-keep-alive>
</content>
</layout>
</layout>
</div>
</
template
>
<
script
lang=
'ts'
>
import
{
Vue
,
Component
,
Prop
,
Provide
,
Emit
,
Watch
}
from
'vue-property-decorator'
;
import
{
UIActionTool
,
Util
}
from
'@/utils'
;
import
{
Subject
}
from
'rxjs'
;
@
Component
({
components
:
{
},
})
export
default
class
AppIndexViewBase
extends
Vue
{
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof AppIndexViewBase
*/
protected
counterServiceArray
:
Array
<
any
>
=
[];
/**
* 数据变化
*
* @param {*} val
* @returns {*}
* @memberof AppIndexViewBase
*/
@
Emit
()
protected
viewDatasChange
(
val
:
any
):
any
{
return
val
;
}
/**
* 传入视图上下文
*
* @type {string}
* @memberof AppIndexViewBase
*/
@
Prop
()
protected
viewdata
!
:
string
;
/**
* 传入视图参数
*
* @type {string}
* @memberof AppIndexViewBase
*/
@
Prop
()
protected
viewparam
!
:
string
;
/**
* 视图默认使用
*
* @type {boolean}
* @memberof AppIndexViewBase
*/
@
Prop
({
default
:
true
})
protected
viewDefaultUsage
!
:
boolean
;
/**
* 视图标识
*
* @type {string}
* @memberof AppIndexViewBase
*/
protected
viewtag
:
string
=
'958184FC-744E-4B78-A919-158C780D583F'
;
/**
* 视图模型数据
*
* @type {*}
* @memberof AppIndexViewBase
*/
protected
model
:
any
=
{
srfTitle
:
'应用首页视图'
,
srfCaption
:
'app.views.appindexview.caption'
,
srfSubCaption
:
''
,
dataInfo
:
''
}
/**
* 视图参数变化
*
* @param {*} newVal
* @param {*} oldVal
* @memberof AppIndexViewBase
*/
@
Watch
(
'viewparam'
,{
immediate
:
true
,
deep
:
true
})
onParamData
(
newVal
:
any
,
oldVal
:
any
)
{
if
(
newVal
){
Object
.
assign
(
this
.
viewparams
,
JSON
.
parse
(
this
.
viewparam
));
}
}
/**
* 处理应用上下文变化
*
* @param {*} newVal
* @param {*} oldVal
* @memberof AppIndexViewBase
*/
@
Watch
(
'viewdata'
)
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
}
/**
* 容器模型
*
* @type {*}
* @memberof AppIndexViewBase
*/
protected
containerModel
:
any
=
{
view_appmenu
:
{
name
:
'appmenu'
,
type
:
'APPMENU'
},
};
/**
* 计数器刷新
*
* @memberof AppIndexViewBase
*/
public
counterRefresh
(){
const
_this
:
any
=
this
;
if
(
_this
.
counterServiceArray
&&
_this
.
counterServiceArray
.
length
>
0
){
_this
.
counterServiceArray
.
forEach
((
item
:
any
)
=>
{
if
(
item
.
refreshData
&&
item
.
refreshData
instanceof
Function
){
item
.
refreshData
();
}
})
}
}
/**
* 视图状态订阅对象
*
* @private
* @type {Subject<{action: string, data: any}>}
* @memberof AppIndexViewBase
*/
protected
viewState
:
Subject
<
ViewState
>
=
new
Subject
();
/**
* 引擎初始化
*
* @private
* @memberof AppIndexViewBase
*/
private
engineInit
():
void
{
}
/**
* 应用上下文
*
* @type {*}
* @memberof AppIndexViewBase
*/
protected
context
:
any
=
{};
/**
* 视图参数
*
* @type {*}
* @memberof AppIndexViewBase
*/
protected
viewparams
:
any
=
{};
/**
* 解析视图参数
*
* @private
* @memberof AppIndexViewBase
*/
private
parseViewParam
():
void
{
if
(
!
this
.
viewDefaultUsage
&&
this
.
viewdata
&&
!
Object
.
is
(
this
.
viewdata
,
''
))
{
Object
.
assign
(
this
.
context
,
JSON
.
parse
(
this
.
viewdata
));
if
(
this
.
context
&&
this
.
context
.
srfparentdename
){
Object
.
assign
(
this
.
viewparams
,{
srfparentdename
:
this
.
context
.
srfparentdename
});
}
if
(
this
.
context
&&
this
.
context
.
srfparentkey
){
Object
.
assign
(
this
.
viewparams
,{
srfparentkey
:
this
.
context
.
srfparentkey
});
}
return
;
}
const
path
=
(
this
.
$route
.
matched
[
this
.
$route
.
matched
.
length
-
1
]).
path
;
const
keys
:
Array
<
any
>
=
[];
const
curReg
=
this
.
$pathToRegExp
.
pathToRegexp
(
path
,
keys
);
const
matchArray
=
curReg
.
exec
(
this
.
$route
.
path
);
let
tempValue
:
Object
=
{};
keys
.
forEach
((
item
:
any
,
index
:
number
)
=>
{
Object
.
defineProperty
(
tempValue
,
item
.
name
,
{
enumerable
:
true
,
value
:
matchArray
[
index
+
1
]
});
});
this
.
$viewTool
.
formatRouteParams
(
tempValue
,
this
.
$route
,
this
.
context
,
this
.
viewparams
);
if
(
this
.
$store
.
getters
.
getAppData
()
&&
this
.
$store
.
getters
.
getAppData
().
context
){
Object
.
assign
(
this
.
context
,
this
.
$store
.
getters
.
getAppData
().
context
);
}
}
/**
* Vue声明周期
*
* @memberof AppIndexViewBase
*/
protected
created
()
{
this
.
afterCreated
();
}
/**
* 执行created后的逻辑
*
* @memberof AppIndexViewBase
*/
protected
afterCreated
(){
const
secondtag
=
this
.
$util
.
createUUID
();
this
.
$store
.
commit
(
'viewaction/createdView'
,
{
viewtag
:
this
.
viewtag
,
secondtag
:
secondtag
});
this
.
viewtag
=
secondtag
;
this
.
parseViewParam
();
}
/**
* 销毁之前
*
* @memberof AppIndexViewBase
*/
protected
beforeDestroy
()
{
this
.
$store
.
commit
(
'viewaction/removeView'
,
this
.
viewtag
);
}
/**
* Vue声明周期(组件初始化完毕)
*
* @memberof AppIndexViewBase
*/
protected
mounted
()
{
this
.
afterMounted
();
}
/**
* 执行mounted后的逻辑
*
* @memberof AppIndexViewBase
*/
protected
afterMounted
(){
const
_this
:
any
=
this
;
_this
.
engineInit
();
if
(
_this
.
loadModel
&&
_this
.
loadModel
instanceof
Function
)
{
_this
.
loadModel
();
}
this
.
viewState
.
next
({
tag
:
'appmenu'
,
action
:
'load'
,
data
:
{}
});
this
.
$viewTool
.
setIndexParameters
([{
pathName
:
'appindexview'
,
parameterName
:
'appindexview'
}]);
this
.
$viewTool
.
setIndexViewParam
(
this
.
context
);
}
/**
* 关闭视图
*
* @param {any[]} args
* @memberof AppIndexViewBase
*/
protected
closeView
(
args
:
any
[]):
void
{
let
_view
:
any
=
this
;
if
(
_view
.
viewdata
)
{
_view
.
$emit
(
'viewdataschange'
,
[
args
]);
_view
.
$emit
(
'close'
,
[
args
]);
}
else
if
(
_view
.
$tabPageExp
)
{
_view
.
$tabPageExp
.
onClose
(
_view
.
$route
.
fullPath
);
}
}
/**
* 菜单位置
*
* @private
* @type {string}
* @memberof AppIndexViewBase
*/
private
mode
:
string
=
'vertical'
;
/**
* 当前主题
*
* @readonly
* @memberof AppIndexViewBase
*/
get
selectTheme
()
{
if
(
this
.
$router
.
app
.
$store
.
state
.
selectTheme
)
{
return
this
.
$router
.
app
.
$store
.
state
.
selectTheme
;
}
else
if
(
localStorage
.
getItem
(
'theme-class'
))
{
return
localStorage
.
getItem
(
'theme-class'
);
}
else
{
return
'app-default-theme'
;
}
}
/**
* 当前字体
*
* @readonly
* @memberof AppIndexViewBase
*/
get
selectFont
()
{
if
(
this
.
$router
.
app
.
$store
.
state
.
selectFont
)
{
return
this
.
$router
.
app
.
$store
.
state
.
selectFont
;
}
else
if
(
localStorage
.
getItem
(
'font-family'
))
{
return
localStorage
.
getItem
(
'font-family'
);
}
else
{
return
'Microsoft YaHei'
;
}
}
/**
* 菜单收缩变化
*
* @type {boolean}
* @memberof AppIndexViewBase
*/
public
collapseChange
:
boolean
=
false
;
/**
* 菜单收缩点击
*
* @memberof AppIndexViewBase
*/
public
handleClick
():
void
{
this
.
collapseChange
=
!
this
.
collapseChange
;
}
/**
* 默认打开的视图
*
* @type {*}
* @memberof AppIndexViewBase
*/
public
defPSAppView
:
any
=
{
};
/**
* 应用起始页面
*
* @type {boolean}
* @memberof AppIndexViewBase
*/
public
isDefaultPage
:
boolean
=
false
;
/**
* 获取样式
*
* @readonly
* @type {string[]}
* @memberof AppIndexViewBase
*/
get
themeClasses
():
string
[]
{
return
[
Object
.
is
(
this
.
selectTheme
,
'app_theme_blue'
)
?
'app_theme_blue'
:
''
,
Object
.
is
(
this
.
selectTheme
,
'app-default-theme'
)
?
'app-default-theme'
:
''
,
Object
.
is
(
this
.
selectTheme
,
'app_theme_darkblue'
)
?
'app_theme_darkblue'
:
''
,
];
}
/**
* 主题字体
*
* @readonly
* @type {*}
* @memberof AppIndexViewBase
*/
get
themeStyle
():
any
{
return
{
'height'
:
'100vh'
,
'font-family'
:
this
.
selectFont
,
}
}
/**
* 获取路由列表
*
* @readonly
* @type {any[]}
* @memberof AppIndexViewBase
*/
get
getRouterList
():
any
[]
{
return
this
.
$store
.
state
.
historyPathList
;
}
/**
* 获取路由键值
*
* @readonly
* @type {string}
* @memberof AppIndexViewBase
*/
get
getRouterViewKey
():
string
{
return
this
.
$route
.
fullPath
;
}
}
</
script
>
<
style
lang=
'less'
>
@import './app-index-view.less';
</
style
>
\ No newline at end of file
app_Web/src/pages/ungroup/app-index-view/app-index-view.less
0 → 100644
浏览文件 @
e9cf29c4
.app-index-view{
position: relative;
}
.index_view{
width: 100%;
height: 100%;
padding: 0;
margin: 0;
.index_header{
height:50px;
padding:0 20px;
display: flex;
align-items: center;
justify-content: space-between;
.header-left{
display: flex;
align-items: center;
justify-content: space-between;
.el-menu.el-menu--horizontal{
border-bottom: none;
.el-submenu{
border-top: none;
}
}
}
> div {
line-height: 49px;
}
}
.index_content{
background-color:#fff;
height:calc(100vh - 50px);
overflow-x: hidden;
overflow-y: hidden;
}
>.ivu-layout {
>.ivu-layout {
height: calc(100vh - 50px);
}
}
.ivu-layout .ivu-layout-sider .ivu-layout-sider-children .sider-top{
line-height: 58px;
text-align: right;
padding-right: 18px;
}
.ivu-layout .ivu-layout-sider .ivu-layout-sider-children .sider-top .ivu-icon{
font-size: 20px;
padding: 4px;
margin-top: -2px;
cursor: pointer;
}
}
/*** BRGIN:滚动条样式 ***/
::-webkit-scrollbar {
background: transparent;
width: 4px;
height: 4px;
}
::-webkit-scrollbar-thumb {
border-radius: 0;
box-shadow: none;
border: 0;
background-color: #cecece;
}
::-webkit-scrollbar-track {
border-radius: 0;
box-shadow: none;
border: 0;
}
\ No newline at end of file
app_Web/src/pages/ungroup/app-index-view/app-index-view.vue
0 → 100644
浏览文件 @
e9cf29c4
<
script
lang=
'ts'
>
import
{
Component
}
from
'vue-property-decorator'
;
import
AppIndexViewBase
from
'./app-index-view-base.vue'
;
import
view_appmenu
from
'@widgets/app/app-index-view-appmenu/app-index-view-appmenu.vue'
;
@
Component
({
components
:
{
view_appmenu
,
},
beforeRouteEnter
:
(
to
:
any
,
from
:
any
,
next
:
any
)
=>
{
next
((
vm
:
any
)
=>
{
vm
.
$store
.
commit
(
'addCurPageViewtag'
,
{
fullPath
:
to
.
fullPath
,
viewtag
:
vm
.
viewtag
});
});
},
})
export
default
class
AppIndexView
extends
AppIndexViewBase
{
}
</
script
>
\ No newline at end of file
app_Web/src/pages/ungroup/app-index-view/main.ts
0 → 100644
浏览文件 @
e9cf29c4
import
Vue
from
'vue'
;
import
Vuex
from
'vuex'
;
import
VueRouter
from
'vue-router'
;
import
App
from
'@/App.vue'
;
import
ElementUi
from
'element-ui'
;
import
ViewUI
from
'view-design'
;
import
{
Interceptors
}
from
'@/utils'
;
import
{
Print
}
from
'@/utils/print'
;
import
i18n
from
'@/locale'
import
'element-ui/lib/theme-chalk/index.css'
;
import
'view-design/dist/styles/iview.css'
;
import
'@/styles/default.less'
;
// 模拟数据
if
(
process
.
env
.
NODE_ENV
===
'development'
)
{
require
(
'@/mock'
);
}
const
pathToRegExp
=
require
(
'path-to-regexp'
);
import
{
AppComponents
}
from
'@/app-register'
;
import
{
PageComponents
}
from
'./page-register'
;
import
{
UserComponent
}
from
'@/user-register'
;
import
{
PortletComponent
}
from
'@/portlet-register'
;
import
store
from
'@/store'
;
import
router
from
'./router'
;
Vue
.
config
.
errorHandler
=
function
(
err
:
any
,
vm
:
any
,
info
:
any
)
{
console
.
log
(
err
);
}
Vue
.
config
.
productionTip
=
false
;
Vue
.
use
(
Print
)
Vue
.
use
(
Vuex
);
Vue
.
use
(
VueRouter
);;
Vue
.
use
(
ElementUi
,
{
i18n
:
(
key
:
any
,
value
:
any
)
=>
i18n
.
t
(
key
,
value
)
});
Vue
.
use
(
ViewUI
,
{
i18n
:
(
key
:
any
,
value
:
any
)
=>
i18n
.
t
(
key
,
value
)
});
// Vue.use(utils);
Vue
.
prototype
.
$pathToRegExp
=
pathToRegExp
;
Vue
.
use
(
AppComponents
);
Vue
.
use
(
PageComponents
);
Vue
.
use
(
UserComponent
);
Vue
.
use
(
PortletComponent
);
router
.
beforeEach
((
to
:
any
,
from
:
any
,
next
:
any
)
=>
{
if
(
to
.
meta
&&
!
to
.
meta
.
ignoreAddPage
)
{
router
.
app
.
$store
.
commit
(
'addPage'
,
to
);
}
next
();
});
Interceptors
.
getInstance
(
router
,
store
);
const
init
=
async
()
=>
{
new
Vue
({
i18n
,
store
,
router
,
render
:
(
h
:
any
)
=>
h
(
App
),
}).
$mount
(
'#app'
);
};
init
();
\ No newline at end of file
app_Web/src/pages/ungroup/app-index-view/page-register.ts
0 → 100644
浏览文件 @
e9cf29c4
export
const
PageComponents
=
{
install
(
Vue
:
any
,
opt
:
any
)
{
}
};
\ No newline at end of file
app_Web/src/pages/ungroup/app-index-view/router.ts
0 → 100644
浏览文件 @
e9cf29c4
import
Vue
from
'vue'
;
import
Router
from
'vue-router'
;
import
{
AuthGuard
}
from
'@/utils'
;
import
qs
from
'qs'
;
Vue
.
use
(
Router
);
const
router
=
new
Router
({
routes
:
[
{
path
:
'/appindexview/:appindexview?'
,
beforeEnter
:
(
to
:
any
,
from
:
any
,
next
:
any
)
=>
{
const
routerParamsName
=
'appindexview'
;
const
params
:
any
=
{};
if
(
to
.
params
&&
to
.
params
[
routerParamsName
])
{
Object
.
assign
(
params
,
qs
.
parse
(
to
.
params
[
routerParamsName
],
{
delimiter
:
';'
}));
}
const
url
:
string
=
'/appdata'
;
const
auth
:
Promise
<
any
>
=
AuthGuard
.
getInstance
().
authGuard
(
url
,
params
,
router
);
auth
.
then
(()
=>
{
next
();
}).
catch
(()
=>
{
next
();
});
},
meta
:
{
caption
:
'首页'
,
viewType
:
'APPINDEX'
,
parameters
:
[
{
pathName
:
'appindexview'
,
parameterName
:
'appindexview'
},
],
requireAuth
:
true
,
},
component
:
()
=>
import
(
'@pages/ungroup/app-index-view/app-index-view.vue'
),
children
:
[
],
},
{
path
:
'/login/:login?'
,
name
:
'login'
,
meta
:
{
caption
:
'登录'
,
viewType
:
'login'
,
requireAuth
:
false
,
ignoreAddPage
:
true
,
},
beforeEnter
:
(
to
:
any
,
from
:
any
,
next
:
any
)
=>
{
router
.
app
.
$store
.
commit
(
'resetRootStateData'
);
next
();
},
component
:
()
=>
import
(
'@components/login/login.vue'
),
},
{
path
:
'/404'
,
component
:
()
=>
import
(
'@components/404/404.vue'
)
},
{
path
:
'/500'
,
component
:
()
=>
import
(
'@components/500/500.vue'
)
},
{
path
:
'*'
,
redirect
:
'appindexview'
},
],
});
export
default
router
;
app_Web/src/store/modules/view-action/state.ts
浏览文件 @
e9cf29c4
...
@@ -3,6 +3,15 @@
...
@@ -3,6 +3,15 @@
*/
*/
export
const
viewstate
:
any
=
{
export
const
viewstate
:
any
=
{
appviews
:
[
appviews
:
[
{
viewtag
:
'958184FC-744E-4B78-A919-158C780D583F'
,
viewmodule
:
'Ungroup'
,
viewname
:
'AppIndexView'
,
viewaction
:
''
,
viewdatachange
:
false
,
refviews
:
[
],
},
],
],
createdviews
:
[],
createdviews
:
[],
}
}
\ No newline at end of file
app_Web/src/widgets/app/app-index-view-appmenu/app-index-view-appmenu-base.vue
0 → 100644
浏览文件 @
e9cf29c4
<
template
>
<div
class=
"app-app-menu"
>
<el-menu
class=
"app-menu"
:default-openeds=
"defaultOpeneds"
:mode=
"mode"
:menu-trigger=
"trigger"
:collapse=
"isCollapse"
@
select=
"select"
:default-active=
"defaultActive"
>
<template
v-for=
"item0 in menus"
>
<template
v-if=
"item0.items && Array.isArray(item0.items) && item0.items.length > 0"
>
<el-submenu
v-show=
"!item0.hidden"
:index=
"item0.name"
:popper-class=
"popperClass"
:key=
"item0.id"
>
<template
slot=
'title'
>
<template
v-if=
"item0.icon && item0.icon != ''"
>
<img
:src=
"item0.icon"
class=
'app-menu-icon'
/>
</
template
>
<
template
v-else-if=
"item0.iconcls && item0.iconcls != ''"
>
<i
:class=
"[item0.iconcls, 'app-menu-icon']"
></i>
</
template
>
<
template
v-else
>
<i
class=
'fa fa-cogs app-menu-icon'
></i>
</
template
>
<span
class=
'text'
slot=
'title'
>
{{$t('app.menus.appindexview.' + item0.name)}}
</span>
</template>
<
template
v-for=
"item1 in item0.items"
>
<template
v-if=
"item1.items && Array.isArray(item1.items) && item1.items.length > 0"
>
<el-submenu
v-show=
"!item1.hidden"
:index=
"item1.name"
:popper-class=
"popperClass"
:key=
"item1.id"
>
<template
slot=
'title'
>
<template
v-if=
"item1.icon && item1.icon != ''"
>
<img
:src=
"item1.icon"
class=
'app-menu-icon'
/>
</
template
>
<
template
v-else-if=
"item1.iconcls && item1.iconcls != ''"
>
<i
:class=
"[item1.iconcls, 'app-menu-icon']"
></i>
</
template
>
<span
class=
'text'
slot=
'title'
>
{{$t('app.menus.appindexview.' + item1.name)}}
</span>
</template>
<
template
v-for=
"item2 in item1.items"
>
<template
v-if=
"item2.type =='MENUITEM'"
>
<el-menu-item
v-show=
"!item2.hidden"
:index=
"item2.name"
:key=
"item2.id"
>
<template
v-if=
"item2.icon && item2.icon != ''"
>
<img
:src=
"item2.icon"
class=
'app-menu-icon'
/>
</
template
>
<
template
v-else-if=
"item2.iconcls && item2.iconcls != ''"
>
<i
:class=
"[item2.iconcls, 'app-menu-icon']"
></i>
</
template
>
<
template
slot=
"title"
>
<span
class=
"text"
>
{{
$t
(
'app.menus.appindexview.'
+
item2
.
name
)
}}
</span>
<template
v-if=
"counterdata && counterdata[item2.counterid] && counterdata[item2.counterid] > 0"
>
<span
class=
"pull-right"
>
<badge
:count=
"counterdata[item2.counterid]"
:overflow-count=
"9999"
></badge>
</span>
</
template
>
</template>
</el-menu-item>
</template>
<
template
v-if=
"item2.type =='SEPERATOR'"
>
<divider
:key=
"item2.id"
/>
</
template
>
</template>
</el-submenu>
</template>
<
template
v-else
>
<template
v-if=
"item1.type =='MENUITEM'"
>
<el-menu-item
v-show=
"!item1.hidden"
:index=
"item1.name"
:key=
"item1.id"
>
<template
v-if=
"item1.icon && item.icon != ''"
>
<img
:src=
"item1.icon"
class=
'app-menu-icon'
/>
</
template
>
<
template
v-else-if=
"item1.iconcls && item1.iconcls != ''"
>
<i
:class=
"[item1.iconcls, 'app-menu-icon']"
></i>
</
template
>
<
template
slot=
"title"
>
<span
class=
"text"
>
{{
$t
(
'app.menus.appindexview.'
+
item1
.
name
)
}}
</span>
<template
v-if=
"counterdata && counterdata[item1.counterid] && counterdata[item1.counterid] > 0"
>
<span
class=
"pull-right"
>
<badge
:count=
"counterdata[item1.counterid]"
:overflow-count=
"9999"
></badge>
</span>
</
template
>
</template>
</el-menu-item>
</template>
<
template
v-if=
"item1.type =='SEPERATOR'"
>
<divider
:key=
"item1.id"
/>
</
template
>
</template>
</template>
</el-submenu>
</template>
<
template
v-else
>
<template
v-if=
"item0.type =='MENUITEM'"
>
<el-menu-item
v-show=
"!item0.hidden"
:index=
"item0.name"
:key=
"item0.id"
>
<template
v-if=
"item0.icon && item.icon != ''"
>
<img
:src=
"item0.icon"
class=
'app-menu-icon'
/>
</
template
>
<
template
v-else-if=
"item0.iconcls && item0.iconcls != ''"
>
<i
:class=
"[item0.iconcls, 'app-menu-icon']"
></i>
</
template
>
<
template
v-else
>
<i
class=
'fa fa-cogs app-menu-icon'
></i>
</
template
>
<
template
slot=
"title"
>
<span
class=
"text"
>
{{
$t
(
'app.menus.appindexview.'
+
item0
.
name
)
}}
</span>
<template
v-if=
"counterdata && counterdata[item0.counterid] && counterdata[item0.counterid] > 0"
>
<span
class=
"pull-right"
>
<badge
:count=
"counterdata[item0.counterid]"
:overflow-count=
"9999"
></badge>
</span>
</
template
>
</template>
</el-menu-item>
</template>
<
template
v-if=
"item0.type =='SEPERATOR'"
>
<divider
:key=
"item0.id"
/>
</
template
>
</template>
</template>
</el-menu>
</div>
</template>
<
script
lang=
'ts'
>
import
{
Vue
,
Component
,
Prop
,
Provide
,
Emit
,
Watch
,
Model
}
from
'vue-property-decorator'
;
import
{
CreateElement
}
from
'vue'
;
import
{
Subject
,
Subscription
}
from
'rxjs'
;
import
{
ControlInterface
}
from
'@/interface/control'
;
import
{
UIActionTool
,
Util
}
from
'@/utils'
;
import
AppIndexViewService
from
'./app-index-view-appmenu-service'
;
import
AppIndexViewModel
from
'./app-index-view-appmenu-model'
;
@
Component
({
components
:
{
}
})
export
default
class
AppIndexViewBase
extends
Vue
implements
ControlInterface
{
/**
* 名称
*
* @type {string}
* @memberof AppIndexView
*/
@
Prop
()
protected
name
?:
string
;
/**
* 视图通讯对象
*
* @type {Subject<ViewState>}
* @memberof AppIndexView
*/
@
Prop
()
protected
viewState
!
:
Subject
<
ViewState
>
;
/**
* 应用上下文
*
* @type {*}
* @memberof AppIndexView
*/
@
Prop
()
protected
context
:
any
;
/**
* 视图参数
*
* @type {*}
* @memberof AppIndexView
*/
@
Prop
()
protected
viewparams
:
any
;
/**
* 视图状态事件
*
* @protected
* @type {(Subscription | undefined)}
* @memberof AppIndexView
*/
protected
viewStateEvent
:
Subscription
|
undefined
;
/**
* 获取部件类型
*
* @returns {string}
* @memberof AppIndexView
*/
protected
getControlType
():
string
{
return
'APPMENU'
}
/**
* 建构部件服务对象
*
* @type {AppIndexViewService}
* @memberof AppIndexView
*/
protected
service
:
AppIndexViewService
=
new
AppIndexViewService
({
$store
:
this
.
$store
});
/**
* 关闭视图
*
* @param {any[]} args
* @memberof AppIndexView
*/
protected
closeView
(
args
:
any
[]):
void
{
let
_this
:
any
=
this
;
_this
.
$emit
(
'closeview'
,
args
);
}
/**
* 计数器刷新
*
* @memberof AppIndexView
*/
public
counterRefresh
(){
const
_this
:
any
=
this
;
if
(
_this
.
counterServiceArray
&&
_this
.
counterServiceArray
.
length
>
0
){
_this
.
counterServiceArray
.
forEach
((
item
:
any
)
=>
{
if
(
item
.
refreshData
&&
item
.
refreshData
instanceof
Function
){
item
.
refreshData
();
}
})
}
}
/**
* 获取多项数据
*
* @returns {any[]}
* @memberof AppIndexView
*/
public
getDatas
():
any
[]
{
return
[];
}
/**
* 获取单项树
*
* @returns {*}
* @memberof AppIndexView
*/
public
getData
():
any
{
return
null
;
}
/**
* 菜单模型
*
* @private
* @type {AppIndexViewModel}
* @memberof AppIndexView
*/
private
menuMode
:
AppIndexViewModel
=
new
AppIndexViewModel
();
/**
* 显示处理提示
*
* @type {boolean}
* @memberof AppIndexView
*/
@
Prop
({
default
:
true
})
protected
showBusyIndicator
?:
boolean
;
/**
* 菜单数据
*
* @private
* @type {any[]}
* @memberof AppIndexView
*/
@
Provide
()
private
menus
:
any
[]
=
[];
/**
* 菜单收缩改变
*
* @type {boolean}
* @memberof AppIndexView
*/
@
Model
()
protected
collapsechange
?:
boolean
;
/**
* 监听菜单收缩
*
* @param {*} newVal
* @param {*} oldVal
* @memberof AppIndexView
*/
@
Watch
(
'collapsechange'
)
onCollapsechangeChange
(
newVal
:
any
,
oldVal
:
any
)
{
if
(
newVal
!==
this
.
isCollapse
)
{
this
.
isCollapse
=
!
this
.
isCollapse
;
}
}
/**
* 当前模式,菜单在顶部还是在底部
*
* @type {*}
* @memberof AppIndexView
*/
@
Prop
()
mode
:
any
;
/**
* 当前菜单是否在默认视图上
*
* @type {*}
* @memberof AppIndexView
*/
@
Prop
({
default
:
false
})
isDefaultPage
?:
boolean
;
/**
* 默认打开视图
*
* @type {*}
* @memberof AppIndexView
*/
@
Prop
()
defPSAppView
:
any
;
/**
* 默认激活的index
*
* @type {*}
* @memberof AppIndexView
*/
@
Provide
()
defaultActive
:
any
=
null
;
/**
* 当前选中主题
*
* @type {*}
* @memberof AppIndexView
*/
@
Prop
()
selectTheme
:
any
;
/**
* 默认打开的index数组
*
* @type {any[]}
* @memberof AppIndexView
*/
@
Provide
()
protected
defaultOpeneds
:
any
[]
=
[];
/**
* 是否展开
*
* @type {boolean}
* @memberof AppIndexView
*/
@
Provide
()
protected
isCollapse
:
boolean
=
false
;
/**
* 触发方式,默认click
*
* @type {string}
* @memberof AppIndexView
*/
@
Provide
()
trigger
:
string
=
'click'
;
/**
* 计数器数据
*
* @type {*}
* @memberof AppIndexView
*/
protected
counterdata
:
any
=
{};
/**
* vue 生命周期
*
* @memberof AppIndexView
*/
protected
created
()
{
this
.
afterCreated
();
}
/**
* 执行created后的逻辑
*
* @memberof AppIndexView
*/
protected
afterCreated
(){
if
(
Object
.
is
(
this
.
mode
,
'horizontal'
))
{
this
.
trigger
=
'hover'
;
}
if
(
this
.
viewState
)
{
this
.
viewStateEvent
=
this
.
viewState
.
subscribe
(({
tag
,
action
,
data
})
=>
{
if
(
!
Object
.
is
(
tag
,
this
.
name
))
{
return
;
}
this
.
load
(
data
);
});
}
}
/**
* vue 生命周期
*
* @memberof AppIndexView
*/
protected
destroyed
()
{
this
.
afterDestroy
();
}
/**
* 执行destroyed后的逻辑
*
* @memberof AppIndexView
*/
protected
afterDestroy
()
{
if
(
this
.
viewStateEvent
)
{
this
.
viewStateEvent
.
unsubscribe
();
}
}
/**
* 获取菜单项数据
*
* @private
* @param {any[]} items
* @param {string} name
* @returns
* @memberof AppIndexView
*/
private
compute
(
items
:
any
[],
name
:
string
)
{
const
item
:
any
=
{};
items
.
some
((
_item
:
any
)
=>
{
if
(
name
&&
Object
.
is
(
_item
.
name
,
name
))
{
Object
.
assign
(
item
,
_item
);
this
.
setHideSideBar
(
_item
);
return
true
;
}
if
(
_item
.
items
&&
Array
.
isArray
(
_item
.
items
))
{
const
subItem
=
this
.
compute
(
_item
.
items
,
name
);
if
(
Object
.
keys
(
subItem
).
length
>
0
)
{
Object
.
assign
(
item
,
subItem
);
return
true
;
}
}
return
false
;
});
return
item
;
}
/**
* 设置是否隐藏菜单栏
*
* @private
* @param {*} item
* @memberof AppIndexView
*/
private
setHideSideBar
(
item
:
any
):
void
{
}
/**
* 菜单项选中处理
*
* @param {*} index
* @param {any[]} indexs
* @returns
* @memberof AppIndexView
*/
protected
select
(
index
:
any
,
indexs
:
any
[])
{
let
item
=
this
.
compute
(
this
.
menus
,
index
);
if
(
Object
.
keys
(
item
).
length
===
0
)
{
return
;
}
this
.
click
(
item
);
}
/**
* 菜单点击
*
* @private
* @param {*} item 菜单数据
* @memberof AppIndexView
*/
private
click
(
item
:
any
)
{
if
(
item
)
{
switch
(
item
.
appfunctag
)
{
default
:
console
.
warn
(
'未指定应用功能'
);
}
}
}
/**
* 数据加载
*
* @param {*} data
* @memberof AppIndexView
*/
protected
load
(
data
:
any
)
{
this
.
dataProcess
(
this
.
menuMode
.
getAppMenuItems
());
this
.
menus
=
this
.
menuMode
.
getAppMenuItems
();
}
/**
* 数据处理
*
* @private
* @param {any[]} items
* @memberof AppIndexView
*/
private
dataProcess
(
items
:
any
[]):
void
{
items
.
forEach
((
_item
:
any
)
=>
{
if
(
_item
.
expanded
)
{
this
.
defaultOpeneds
.
push
(
_item
.
id
);
}
if
(
_item
.
items
&&
_item
.
items
.
length
>
0
)
{
this
.
dataProcess
(
_item
.
items
)
}
});
}
/**
* 提示框主题样式
*
* @readonly
* @type {string}
* @memberof AppIndexView
*/
get
popperClass
():
string
{
return
'app-popper-menu '
+
this
.
selectTheme
;
}
}
</
script
>
<
style
lang=
'less'
>
@import './app-index-view-appmenu.less';
</
style
>
\ No newline at end of file
app_Web/src/widgets/app/app-index-view-appmenu/app-index-view-appmenu-model.ts
0 → 100644
浏览文件 @
e9cf29c4
/**
* AppIndexView 部件模型
*
* @export
* @class AppIndexViewModel
*/
export
default
class
AppIndexViewModel
{
/**
* 菜单项集合
*
* @private
* @type {any[]}
* @memberof AppIndexViewModel
*/
private
items
:
any
[]
=
[
];
/**
* 应用功能集合
*
* @private
* @type {any[]}
* @memberof AppIndexViewModel
*/
private
funcs
:
any
[]
=
[
];
/**
* 获取所有菜单项集合
*
* @returns {any[]}
* @memberof AppIndexViewModel
*/
public
getAppMenuItems
():
any
[]
{
return
this
.
items
;
}
/**
* 获取所有应用功能集合
*
* @returns {any[]}
* @memberof AppIndexViewModel
*/
public
getAppFuncs
():
any
[]
{
return
this
.
funcs
;
}
}
\ No newline at end of file
app_Web/src/widgets/app/app-index-view-appmenu/app-index-view-appmenu-service.ts
0 → 100644
浏览文件 @
e9cf29c4
import
{
Http
,
Util
,
Errorlog
}
from
'@/utils'
;
import
ControlService
from
'@/widgets/control-service'
;
import
AppIndexViewModel
from
'./app-index-view-appmenu-model'
;
/**
* AppIndexView 部件服务对象
*
* @export
* @class AppIndexViewService
*/
export
default
class
AppIndexViewService
extends
ControlService
{
/**
* 设置从数据模式
*
* @type {boolean}
* @memberof AppIndexViewService
*/
public
setTempMode
(){
this
.
isTempMode
=
false
;
}
/**
* Creates an instance of AppIndexViewService.
*
* @param {*} [opts={}]
* @memberof AppIndexViewService
*/
constructor
(
opts
:
any
=
{})
{
super
(
opts
);
this
.
model
=
new
AppIndexViewModel
();
}
/**
* 获取数据
*
* @returns {Promise<any>}
* @memberof AppIndexView
*/
@
Errorlog
public
get
(
params
:
any
=
{}):
Promise
<
any
>
{
return
Http
.
getInstance
().
get
(
'v7/app-index-viewappmenu'
,
params
);
}
}
\ No newline at end of file
app_Web/src/widgets/app/app-index-view-appmenu/app-index-view-appmenu.less
0 → 100644
浏览文件 @
e9cf29c4
/*** BRGIN:菜单样式 ***/
.app-app-menu {
overflow-y: auto;
overflow-x: hidden;
height: calc(100% - 58px);
> .el-menu {
border-right: 0;
.el-menu-item {
.ivu-badge {
.ivu-badge-count {
box-shadow: 0 0 0 0px #fff;
}
}
}
.el-submenu__title i, .el-menu-item i {
font-size: 16px;
width: 16px;
}
.el-submenu__title .text {
font-size: 16px;
}
.el-menu-item, .el-submenu__title {
height: 36px;
font-size: 16px;
line-height: 32px;
}
.el-menu-item, .el-submenu, .el-menu {
border-top: 1px solid #fff;
}
> .el-menu-item, > .el-submenu > .el-submenu__title {
height: 40px;
line-height: 36px;
border-left: 4px solid transparent;
padding-left: 16px !important;
}
.app-menu-icon {
margin-right: 4px;
}
> .el-submenu {
> .el-menu {
> .el-menu-item, > .el-submenu > .el-submenu__title {
padding-left: 44px !important;
}
> .el-submenu {
> .el-menu {
> .el-menu-item, > .el-submenu > .el-submenu__title {
padding-left: 68px !important;
}
}
}
}
}
.active-icon {
font-size: 40px !important;
position: absolute;
right: 0;
line-height: 42px;
color: #fff !important;
display: none;
width: 24px !important;
overflow: hidden;
}
}
.ivu-divider-horizontal {
width: calc(100% - 32px);
min-width: calc(100% - 32px);
margin: 4px auto;
margin-bottom: 1px;
}
}
.app-popper-menu {
.el-menu-item, .el-submenu__title {
height: 36px;
font-size: 16px;
line-height: 36px;
}
> .el-menu-item, > .el-submenu > .el-submenu__title {
height: 40px;
line-height: 40px;
}
.el-menu-item {
.ivu-badge {
.ivu-badge-count {
box-shadow: 0 0 0 0px #fff;
}
}
> span{
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.ivu-divider-horizontal {
width: calc(100% - 12px);
min-width: calc(100% - 12px);
margin: 4px auto;
margin-bottom: 1px;
}
}
// this is less
app_Web/src/widgets/app/app-index-view-appmenu/app-index-view-appmenu.vue
0 → 100644
浏览文件 @
e9cf29c4
<
script
lang=
'ts'
>
import
{
Component
}
from
'vue-property-decorator'
;
import
AppIndexViewBase
from
'./app-index-view-appmenu-base.vue'
;
@
Component
({
components
:
{
}
})
export
default
class
AppIndexView
extends
AppIndexViewBase
{
}
</
script
>
\ No newline at end of file
app_Web/vue.config.js
浏览文件 @
e9cf29c4
...
@@ -18,14 +18,46 @@ module.exports = {
...
@@ -18,14 +18,46 @@ module.exports = {
// proxy: "http://127.0.0.1:8080/Web",
// proxy: "http://127.0.0.1:8080/Web",
historyApiFallback
:
{
historyApiFallback
:
{
rewrites
:
[
rewrites
:
[
// { from: /^\/appindexview$/, to: '/appindexview.html' },
]
]
}
}
},
},
pages
:
{
pages
:
{
// 新增默认首页入口
index
:
{
// page 的入口
entry
:
'src/pages/ungroup/app-index-view/main.ts'
,
// 模板来源
template
:
'src/template.html'
,
// 在 dist/index.html 的输出
filename
:
'index.html'
,
// 当使用 title 选项时,
// template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
title
:
'应用首页视图'
,
// 在这个页面中包含的块,默认情况下会包含
// 提取出来的通用 chunk 和 vendor chunk。
// chunks: ['chunk-vendors', 'chunk-common', 'index']
},
appindexview
:
{
// page 的入口
entry
:
'src/pages/ungroup/app-index-view/main.ts'
,
// 模板来源
template
:
'src/template.html'
,
// 在 dist/index.html 的输出
filename
:
'appindexview.html'
,
// 当使用 title 选项时,
// template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
title
:
'应用首页视图'
,
// 在这个页面中包含的块,默认情况下会包含
// 提取出来的通用 chunk 和 vendor chunk。
// chunks: ['chunk-vendors', 'chunk-common', 'index']
},
},
},
// 多核打包
// 多核打包
parallel
:
os
.
cpus
().
length
>
1
,
parallel
:
os
.
cpus
().
length
>
1
,
chainWebpack
:
(
config
)
=>
{
chainWebpack
:
(
config
)
=>
{
config
.
plugins
.
delete
(
'preload-appindexview'
)
config
.
plugins
.
delete
(
'prefetch-appindexview'
)
config
.
resolve
.
alias
config
.
resolve
.
alias
.
set
(
'@ibizsys'
,
resolve
(
'src/ibizsys'
))
.
set
(
'@ibizsys'
,
resolve
(
'src/ibizsys'
))
.
set
(
'@pages'
,
resolve
(
'src/pages'
))
.
set
(
'@pages'
,
resolve
(
'src/pages'
))
...
...
config.xml
浏览文件 @
e9cf29c4
...
@@ -40,14 +40,14 @@
...
@@ -40,14 +40,14 @@
mvn install
mvn install
cd ..
cd ..
mvn install
mvn install
cd im-
boot
cd im-
app/im-app-web
mvn clean package
mvn clean package
-Pprod
echo
'
echo
"
$para1
"'
>
apppasswd.sh
echo
'
echo
"
$para1
"'
>
apppasswd.sh
chmod -R 777 *
chmod -R 777 *
setsid env SSH_ASKPASS=
'
./apppasswd.sh
'
DISPLAY=
'
none:0
'
ssh root@172.16.102.41
"
mkdir -p /ibiz/nodes/node2/
CCF487B5-45A8-4D01-8BA4-754E54BD935B
"
setsid env SSH_ASKPASS=
'
./apppasswd.sh
'
DISPLAY=
'
none:0
'
ssh root@172.16.102.41
"
mkdir -p /ibiz/nodes/node2/
83773F16-0C07-4015-8272-7E3984514121
"
setsid env SSH_ASKPASS=
'
./apppasswd.sh
'
DISPLAY=
'
none:0
'
scp -r ./target/im
.jar root@172.16.102.41:/ibiz/nodes/node2/CCF487B5-45A8-4D01-8BA4-754E54BD935B
setsid env SSH_ASKPASS=
'
./apppasswd.sh
'
DISPLAY=
'
none:0
'
scp -r ./target/im
-app-web.jar root@172.16.102.41:/ibiz/nodes/node2/83773F16-0C07-4015-8272-7E3984514121
setsid env SSH_ASKPASS=
'
./apppasswd.sh
'
DISPLAY=
'
none:0
'
ssh root@172.16.102.41
"
ps -ef | grep
'
/ibiz/nodes/node2/
CCF487B5-45A8-4D01-8BA4-754E54BD935B
'
| tr -s
'
'
|cut -d
'
'
-f2,8,9 | grep -v grep | grep
'
jar
'
| cut -d
'
'
-f1|xargs --no-run-if-empty kill -9
"
setsid env SSH_ASKPASS=
'
./apppasswd.sh
'
DISPLAY=
'
none:0
'
ssh root@172.16.102.41
"
ps -ef | grep
'
/ibiz/nodes/node2/
83773F16-0C07-4015-8272-7E3984514121
'
| tr -s
'
'
|cut -d
'
'
-f2,8,9 | grep -v grep | grep
'
jar
'
| cut -d
'
'
-f1|xargs --no-run-if-empty kill -9
"
setsid env SSH_ASKPASS=
'
./apppasswd.sh
'
DISPLAY=
'
none:0
'
ssh root@172.16.102.41
"
source /etc/profile;source ~/.bash_profile; nohup java -jar -Xms512m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=128m /ibiz/nodes/node2/
CCF487B5-45A8-4D01-8BA4-754E54BD935B/im.jar
>>
/ibiz/nodes/node2/CCF487B5-45A8-4D01-8BA4-754E54BD935B/poc_apipoc 服务
-`date --date=
'
0 days ago
'
+%Y-%m-%d`.log 2
>&
1
&"
setsid env SSH_ASKPASS=
'
./apppasswd.sh
'
DISPLAY=
'
none:0
'
ssh root@172.16.102.41
"
source /etc/profile;source ~/.bash_profile; nohup java -jar -Xms512m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=128m /ibiz/nodes/node2/
83773F16-0C07-4015-8272-7E3984514121/im-app-web.jar
>>
/ibiz/nodes/node2/83773F16-0C07-4015-8272-7E3984514121/poc_apppoc 应用
-`date --date=
'
0 days ago
'
+%Y-%m-%d`.log 2
>&
1
&"
</command>
</command>
</hudson.tasks.Shell>
</hudson.tasks.Shell>
</builders>
</builders>
...
...
im-app/im-app-web/src/main/resources/application-web.yml
浏览文件 @
e9cf29c4
server
:
server
:
devmode
:
tru
e
devmode
:
fals
e
port
:
8080
port
:
9902
servlet
:
servlet
:
session
:
session
:
cookie
:
cookie
:
...
@@ -17,11 +17,11 @@ spring:
...
@@ -17,11 +17,11 @@ spring:
security
:
security
:
cas
:
cas
:
server
:
server
:
host
:
http
://passportcs
.ibizlab.cn
host
:
http
s://passport
.ibizlab.cn
login
:
${security.cas.server.host}/login
login
:
${security.cas.server.host}/login
logout
:
${security.cas.server.host}/logout
logout
:
${security.cas.server.host}/logout
service
:
service
:
host
:
http://
localhost
:${server.port}
host
:
http://
172.16.102.41
:${server.port}
login
:
/login/cas
login
:
/login/cas
logout
:
/logout
logout
:
/logout
...
@@ -36,7 +36,7 @@ logging:
...
@@ -36,7 +36,7 @@ logging:
app
:
app
:
web
:
web
:
url
:
http://
localhost
:${server.port}
url
:
http://
172.16.102.41
:${server.port}
wfstarturl
:
/#/%s/null/editview
wfstarturl
:
/#/%s/null/editview
# wfviewurl: /#/dewfdataredirectview
# wfviewurl: /#/dewfdataredirectview
wfviewurl
:
/#/appwfdataredirectview
wfviewurl
:
/#/appwfdataredirectview
...
...
im-app/im-app-wfweb/src/main/resources/application-wfweb.yml
浏览文件 @
e9cf29c4
server
:
server
:
devmode
:
tru
e
devmode
:
fals
e
port
:
8080
port
:
9902
servlet
:
servlet
:
session
:
session
:
cookie
:
cookie
:
...
@@ -17,11 +17,11 @@ spring:
...
@@ -17,11 +17,11 @@ spring:
security
:
security
:
cas
:
cas
:
server
:
server
:
host
:
http
://passportcs
.ibizlab.cn
host
:
http
s://passport
.ibizlab.cn
login
:
${security.cas.server.host}/login
login
:
${security.cas.server.host}/login
logout
:
${security.cas.server.host}/logout
logout
:
${security.cas.server.host}/logout
service
:
service
:
host
:
http://
localhost
:${server.port}
host
:
http://
172.16.102.41
:${server.port}
login
:
/login/cas
login
:
/login/cas
logout
:
/logout
logout
:
/logout
...
@@ -36,7 +36,7 @@ logging:
...
@@ -36,7 +36,7 @@ logging:
app
:
app
:
web
:
web
:
url
:
http://
localhost
:${server.port}
url
:
http://
172.16.102.41
:${server.port}
wfstarturl
:
/#/%s/null/editview
wfstarturl
:
/#/%s/null/editview
# wfviewurl: /#/dewfdataredirectview
# wfviewurl: /#/dewfdataredirectview
wfviewurl
:
/#/appwfdataredirectview
wfviewurl
:
/#/appwfdataredirectview
...
...
im-boot/src/main/resources/application-dev.yml
浏览文件 @
e9cf29c4
server
:
server
:
port
:
9901
port
:
8080
spring
:
spring
:
application
:
application
:
...
...
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录