Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
I
iBiz企业中心
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
iBiz企业套件
iBiz企业中心
提交
d77f3430
提交
d77f3430
编写于
7月 06, 2020
作者:
ibizdev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
lab_gzf 发布系统代码
上级
5fe0b2e4
变更
64
展开全部
显示空白字符变更
内嵌
并排
正在显示
64 个修改的文件
包含
4007 行增加
和
650 行删除
+4007
-650
view-config.json
app_CRM/public/assets/json/view-config.json
+10
-0
en-US.ts
app_CRM/src/locale/lang/en-US.ts
+1
-0
zh-CN.ts
app_CRM/src/locale/lang/zh-CN.ts
+1
-0
goal_en_US.ts
app_CRM/src/locale/lanres/entities/goal/goal_en_US.ts
+26
-22
goal_zh_CN.ts
app_CRM/src/locale/lanres/entities/goal/goal_zh_CN.ts
+26
-22
central-appmenu.ts
app_CRM/src/mock/app/central-appmenu/central-appmenu.ts
+19
-1
viewconfig.ts
app_CRM/src/mock/viewconfig/viewconfig.ts
+8
-0
goal-state-tab-view-base.tsx
...es/sales/goal-state-tab-view/goal-state-tab-view-base.tsx
+124
-0
goal-state-tab-view.html
.../pages/sales/goal-state-tab-view/goal-state-tab-view.html
+10
-0
goal-state-tab-view.vue
...c/pages/sales/goal-state-tab-view/goal-state-tab-view.vue
+28
-0
page-register.ts
app_CRM/src/pages/ungroup/central/page-register.ts
+1
-0
router.ts
app_CRM/src/pages/ungroup/central/router.ts
+14
-0
campaign-service-base.ts
app_CRM/src/service/campaign/campaign-service-base.ts
+52
-52
contact-service-base.ts
app_CRM/src/service/contact/contact-service-base.ts
+169
-169
ibiz-list-service-base.ts
app_CRM/src/service/ibiz-list/ibiz-list-service-base.ts
+82
-82
opportunity-service-base.ts
app_CRM/src/service/opportunity/opportunity-service-base.ts
+219
-219
sales-literature-service-base.ts
...service/sales-literature/sales-literature-service-base.ts
+52
-52
state.ts
app_CRM/src/store/modules/view-action/state.ts
+11
-0
goal-ui-service-base.ts
app_CRM/src/uiservice/goal/goal-ui-service-base.ts
+1
-0
central-appmenu-base.tsx
.../src/widgets/app/central-appmenu/central-appmenu-base.tsx
+28
-3
central-appmenu-model.ts
.../src/widgets/app/central-appmenu/central-appmenu-model.ts
+35
-2
state-tab-viewtabexppanel-tabexppanel-base.tsx
...abexppanel/state-tab-viewtabexppanel-tabexppanel-base.tsx
+75
-0
state-tab-viewtabexppanel-tabexppanel-model.ts
...abexppanel/state-tab-viewtabexppanel-tabexppanel-model.ts
+265
-0
state-tab-viewtabexppanel-tabexppanel-service.ts
...exppanel/state-tab-viewtabexppanel-tabexppanel-service.ts
+45
-0
state-tab-viewtabexppanel-tabexppanel.html
...el-tabexppanel/state-tab-viewtabexppanel-tabexppanel.html
+52
-0
state-tab-viewtabexppanel-tabexppanel.vue
...nel-tabexppanel/state-tab-viewtabexppanel-tabexppanel.vue
+26
-0
state-tab-viewtabviewpanel-tabviewpanel-base.tsx
...iewpanel/state-tab-viewtabviewpanel-tabviewpanel-base.tsx
+196
-0
state-tab-viewtabviewpanel-tabviewpanel-model.ts
...iewpanel/state-tab-viewtabviewpanel-tabviewpanel-model.ts
+265
-0
state-tab-viewtabviewpanel-tabviewpanel-service.ts
...wpanel/state-tab-viewtabviewpanel-tabviewpanel-service.ts
+11
-0
state-tab-viewtabviewpanel-tabviewpanel.html
...tabviewpanel/state-tab-viewtabviewpanel-tabviewpanel.html
+11
-0
state-tab-viewtabviewpanel-tabviewpanel.vue
...-tabviewpanel/state-tab-viewtabviewpanel-tabviewpanel.vue
+22
-0
state-tab-viewtabviewpanel2-tabviewpanel-base.tsx
...ewpanel/state-tab-viewtabviewpanel2-tabviewpanel-base.tsx
+196
-0
state-tab-viewtabviewpanel2-tabviewpanel-model.ts
...ewpanel/state-tab-viewtabviewpanel2-tabviewpanel-model.ts
+265
-0
state-tab-viewtabviewpanel2-tabviewpanel-service.ts
...panel/state-tab-viewtabviewpanel2-tabviewpanel-service.ts
+11
-0
state-tab-viewtabviewpanel2-tabviewpanel.html
...abviewpanel/state-tab-viewtabviewpanel2-tabviewpanel.html
+11
-0
state-tab-viewtabviewpanel2-tabviewpanel.vue
...tabviewpanel/state-tab-viewtabviewpanel2-tabviewpanel.vue
+22
-0
qualification-form-base.tsx
...dgets/lead/qualification-form/qualification-form-base.tsx
+1
-1
qualification-form.html
...c/widgets/lead/qualification-form/qualification-form.html
+1
-1
pom.xml
businesscentral-app/businesscentral-app-website/pom.xml
+124
-0
Dockerfile
...pp/businesscentral-app-website/src/main/docker/Dockerfile
+14
-0
businesscentral-app-website.yaml
...-website/src/main/docker/businesscentral-app-website.yaml
+32
-0
WebSiteApplication.java
...n/ibizlab/businesscentral/website/WebSiteApplication.java
+43
-0
WebSiteSecurityConfig.java
...businesscentral/website/config/WebSiteSecurityConfig.java
+127
-0
application-website-dev.yml
...pp-website/src/main/resources/application-website-dev.yml
+2
-0
application-website-prod.yml
...p-website/src/main/resources/application-website-prod.yml
+27
-0
application.yml
...esscentral-app-website/src/main/resources/application.yml
+5
-0
logback-spring.xml
...central-app-website/src/main/resources/logback-spring.xml
+41
-0
pom.xml
businesscentral-app/pom.xml
+1
-0
pom.xml
businesscentral-boot/pom.xml
+5
-0
application.yml
businesscentral-boot/src/main/resources/application.yml
+1
-1
h2_table.xml
...esscentral-core/src/main/resources/liquibase/h2_table.xml
+22
-22
systemResource.json
...al-core/src/main/resources/permission/systemResource.json
+39
-1
WebSiteChannelDTO.java
...lab/businesscentral/centralapi/dto/WebSiteChannelDTO.java
+103
-0
WebSiteContentDTO.java
...lab/businesscentral/centralapi/dto/WebSiteContentDTO.java
+119
-0
WebSiteDTO.java
...cn/ibizlab/businesscentral/centralapi/dto/WebSiteDTO.java
+87
-0
WebSiteResourceDTO.java
...ab/businesscentral/centralapi/dto/WebSiteResourceDTO.java
+103
-0
WebSiteChannelMapping.java
...nesscentral/centralapi/mapping/WebSiteChannelMapping.java
+16
-0
WebSiteContentMapping.java
...nesscentral/centralapi/mapping/WebSiteContentMapping.java
+16
-0
WebSiteMapping.java
...ab/businesscentral/centralapi/mapping/WebSiteMapping.java
+16
-0
WebSiteResourceMapping.java
...esscentral/centralapi/mapping/WebSiteResourceMapping.java
+16
-0
WebSiteChannelResource.java
...sinesscentral/centralapi/rest/WebSiteChannelResource.java
+164
-0
WebSiteContentResource.java
...sinesscentral/centralapi/rest/WebSiteContentResource.java
+164
-0
WebSiteResource.java
...zlab/businesscentral/centralapi/rest/WebSiteResource.java
+164
-0
WebSiteResourceResource.java
...inesscentral/centralapi/rest/WebSiteResourceResource.java
+164
-0
未找到文件。
app_CRM/public/assets/json/view-config.json
浏览文件 @
d77f3430
...
...
@@ -499,6 +499,16 @@
"viewtag"
:
"2eba43abd437c023437f1f2effb1fccb"
,
"memo"
:
""
},
"goalstatetabview"
:
{
"title"
:
"目标分页状态"
,
"caption"
:
"目标"
,
"viewtype"
:
"DETABEXPVIEW"
,
"viewmodule"
:
"Sales"
,
"viewname"
:
"GoalStateTabView"
,
"viewfilename"
:
"goal-state-tab-view"
,
"viewtag"
:
"2f0540af5db76052cee0e8e91f0204c4"
,
"memo"
:
""
},
"salesliteratureeditview"
:
{
"title"
:
"销售宣传资料编辑视图"
,
"caption"
:
"销售宣传资料"
,
...
...
app_CRM/src/locale/lang/en-US.ts
浏览文件 @
d77f3430
...
...
@@ -146,6 +146,7 @@ export default {
menuitem25
:
"目标"
,
menuitem31
:
"目标度量"
,
menuitem26
:
"预测"
,
menuitem33
:
"目标分页"
,
menuitem27
:
"服务"
,
menuitem28
:
"服务案例"
,
menuitem32
:
"知识文章"
,
...
...
app_CRM/src/locale/lang/zh-CN.ts
浏览文件 @
d77f3430
...
...
@@ -146,6 +146,7 @@ export default {
menuitem25
:
"目标"
,
menuitem31
:
"目标度量"
,
menuitem26
:
"预测"
,
menuitem33
:
"目标分页"
,
menuitem27
:
"服务"
,
menuitem28
:
"服务案例"
,
menuitem32
:
"知识文章"
,
...
...
app_CRM/src/locale/lanres/entities/goal/goal_en_US.ts
浏览文件 @
d77f3430
...
...
@@ -92,6 +92,10 @@ export default {
caption
:
"目标"
,
title
:
"目标选择表格视图"
,
},
statetabview
:
{
caption
:
"目标"
,
title
:
"目标分页状态"
,
},
info_goalview
:
{
caption
:
"目标"
,
title
:
"目标信息视图"
,
...
...
@@ -125,13 +129,9 @@ export default {
title
:
"子目标表格视图"
,
},
},
info_goal
_form
:
{
quickcreate
_form
:
{
details
:
{
group1
:
"基本信息"
,
grouppanel2
:
"分组面板"
,
grouppanel3
:
"分组面板"
,
grouppanel1
:
"时间段"
,
grouppanel4
:
"详细信息"
,
group1
:
"目标基本信息"
,
formpage1
:
"基本信息"
,
srfupdatedate
:
"更新时间"
,
srforikey
:
""
,
...
...
@@ -143,24 +143,17 @@ export default {
srfsourcekey
:
""
,
title
:
"名称"
,
parentgoalname
:
"上级目标"
,
metricname
:
"目标度量"
,
goalownerid
:
"目标负责人"
,
metricname
:
"目标度量"
,
ownerid
:
"经理"
,
fiscalperiodgoal
:
"目标期间类型"
,
fiscalyear
:
"会计年度"
,
fiscalperiod
:
"会计期间"
,
goalstartdate
:
"从"
,
goalenddate
:
"到"
,
targetmoney
:
"目标值(金额)"
,
actualmoney
:
"实际值(金额)"
,
percentage
:
"已实现百分比"
,
inprogressmoney
:
"过程值(金额)"
,
parentgoalid
:
"上级目标"
,
goalid
:
"目标"
,
metricid
:
"目标度量"
,
},
uiactions
:
{
},
},
edit_child
goal_form
:
{
info_
goal_form
:
{
details
:
{
group1
:
"基本信息"
,
grouppanel2
:
"分组面板"
,
...
...
@@ -190,16 +183,18 @@ export default {
actualmoney
:
"实际值(金额)"
,
percentage
:
"已实现百分比"
,
inprogressmoney
:
"过程值(金额)"
,
parentgoalid
:
"上级目标"
,
goalid
:
"目标"
,
metricid
:
"目标度量"
,
},
uiactions
:
{
},
},
quickcreate
_form
:
{
edit_childgoal
_form
:
{
details
:
{
group1
:
"目标基本信息"
,
group1
:
"基本信息"
,
grouppanel2
:
"分组面板"
,
grouppanel3
:
"分组面板"
,
grouppanel1
:
"时间段"
,
grouppanel4
:
"详细信息"
,
formpage1
:
"基本信息"
,
srfupdatedate
:
"更新时间"
,
srforikey
:
""
,
...
...
@@ -211,9 +206,18 @@ export default {
srfsourcekey
:
""
,
title
:
"名称"
,
parentgoalname
:
"上级目标"
,
goalownerid
:
"目标负责人"
,
metricname
:
"目标度量"
,
goalownerid
:
"目标负责人"
,
ownerid
:
"经理"
,
fiscalperiodgoal
:
"目标期间类型"
,
fiscalyear
:
"会计年度"
,
fiscalperiod
:
"会计期间"
,
goalstartdate
:
"从"
,
goalenddate
:
"到"
,
targetmoney
:
"目标值(金额)"
,
actualmoney
:
"实际值(金额)"
,
percentage
:
"已实现百分比"
,
inprogressmoney
:
"过程值(金额)"
,
parentgoalid
:
"上级目标"
,
goalid
:
"目标"
,
metricid
:
"目标度量"
,
...
...
app_CRM/src/locale/lanres/entities/goal/goal_zh_CN.ts
浏览文件 @
d77f3430
...
...
@@ -91,6 +91,10 @@ export default {
caption
:
"目标"
,
title
:
"目标选择表格视图"
,
},
statetabview
:
{
caption
:
"目标"
,
title
:
"目标分页状态"
,
},
info_goalview
:
{
caption
:
"目标"
,
title
:
"目标信息视图"
,
...
...
@@ -124,13 +128,9 @@ export default {
title
:
"子目标表格视图"
,
},
},
info_goal
_form
:
{
quickcreate
_form
:
{
details
:
{
group1
:
"基本信息"
,
grouppanel2
:
"分组面板"
,
grouppanel3
:
"分组面板"
,
grouppanel1
:
"时间段"
,
grouppanel4
:
"详细信息"
,
group1
:
"目标基本信息"
,
formpage1
:
"基本信息"
,
srfupdatedate
:
"更新时间"
,
srforikey
:
""
,
...
...
@@ -142,24 +142,17 @@ export default {
srfsourcekey
:
""
,
title
:
"名称"
,
parentgoalname
:
"上级目标"
,
metricname
:
"目标度量"
,
goalownerid
:
"目标负责人"
,
metricname
:
"目标度量"
,
ownerid
:
"经理"
,
fiscalperiodgoal
:
"目标期间类型"
,
fiscalyear
:
"会计年度"
,
fiscalperiod
:
"会计期间"
,
goalstartdate
:
"从"
,
goalenddate
:
"到"
,
targetmoney
:
"目标值(金额)"
,
actualmoney
:
"实际值(金额)"
,
percentage
:
"已实现百分比"
,
inprogressmoney
:
"过程值(金额)"
,
parentgoalid
:
"上级目标"
,
goalid
:
"目标"
,
metricid
:
"目标度量"
,
},
uiactions
:
{
},
},
edit_child
goal_form
:
{
info_
goal_form
:
{
details
:
{
group1
:
"基本信息"
,
grouppanel2
:
"分组面板"
,
...
...
@@ -189,16 +182,18 @@ export default {
actualmoney
:
"实际值(金额)"
,
percentage
:
"已实现百分比"
,
inprogressmoney
:
"过程值(金额)"
,
parentgoalid
:
"上级目标"
,
goalid
:
"目标"
,
metricid
:
"目标度量"
,
},
uiactions
:
{
},
},
quickcreate
_form
:
{
edit_childgoal
_form
:
{
details
:
{
group1
:
"目标基本信息"
,
group1
:
"基本信息"
,
grouppanel2
:
"分组面板"
,
grouppanel3
:
"分组面板"
,
grouppanel1
:
"时间段"
,
grouppanel4
:
"详细信息"
,
formpage1
:
"基本信息"
,
srfupdatedate
:
"更新时间"
,
srforikey
:
""
,
...
...
@@ -210,9 +205,18 @@ export default {
srfsourcekey
:
""
,
title
:
"名称"
,
parentgoalname
:
"上级目标"
,
goalownerid
:
"目标负责人"
,
metricname
:
"目标度量"
,
goalownerid
:
"目标负责人"
,
ownerid
:
"经理"
,
fiscalperiodgoal
:
"目标期间类型"
,
fiscalyear
:
"会计年度"
,
fiscalperiod
:
"会计期间"
,
goalstartdate
:
"从"
,
goalenddate
:
"到"
,
targetmoney
:
"目标值(金额)"
,
actualmoney
:
"实际值(金额)"
,
percentage
:
"已实现百分比"
,
inprogressmoney
:
"过程值(金额)"
,
parentgoalid
:
"上级目标"
,
goalid
:
"目标"
,
metricid
:
"目标度量"
,
...
...
app_CRM/src/mock/app/central-appmenu/central-appmenu.ts
浏览文件 @
d77f3430
...
...
@@ -577,7 +577,7 @@ mock.onGet('v7/centralappmenu').reply((config: any) => {
iconcls
:
'fa fa-line-chart'
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
'_
2
'
,
appfunctag
:
'_
3
'
,
resourcetag
:
''
,
},
{
...
...
@@ -597,6 +597,24 @@ mock.onGet('v7/centralappmenu').reply((config: any) => {
textcls
:
''
,
appfunctag
:
''
,
resourcetag
:
''
,
},
{
id
:
'9865490D-A150-450A-9695-3F4610E9A5BE'
,
name
:
'menuitem33'
,
text
:
'目标分页'
,
type
:
'MENUITEM'
,
counterid
:
''
,
tooltip
:
'目标分页'
,
expanded
:
false
,
separator
:
false
,
hidden
:
false
,
hidesidebar
:
false
,
opendefault
:
false
,
iconcls
:
''
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
'_2'
,
resourcetag
:
''
,
},
],
},
...
...
app_CRM/src/mock/viewconfig/viewconfig.ts
浏览文件 @
d77f3430
...
...
@@ -407,6 +407,14 @@ mock.onGet('./assets/json/view-config.json').reply((config: any) => {
"viewname"
:
"IBizListInfo_Abstract"
,
"viewtag"
:
"2eba43abd437c023437f1f2effb1fccb"
},
"goalstatetabview"
:
{
"title"
:
"目标分页状态"
,
"caption"
:
"目标"
,
"viewtype"
:
"DETABEXPVIEW"
,
"viewmodule"
:
"Sales"
,
"viewname"
:
"GoalStateTabView"
,
"viewtag"
:
"2f0540af5db76052cee0e8e91f0204c4"
},
"salesliteratureeditview"
:
{
"title"
:
"销售宣传资料编辑视图"
,
"caption"
:
"销售宣传资料"
,
...
...
app_CRM/src/pages/sales/goal-state-tab-view/goal-state-tab-view-base.tsx
0 → 100644
浏览文件 @
d77f3430
import
{
Subject
}
from
'rxjs'
;
import
{
TabExpViewBase
}
from
'@/studio-core'
;
import
GoalService
from
'@/service/goal/goal-service'
;
import
TabExpViewEngine
from
'@engine/view/tab-exp-view-engine'
;
/**
* 目标分页状态视图基类
*
* @export
* @class GoalStateTabViewBase
* @extends {TabExpViewBase}
*/
export
class
GoalStateTabViewBase
extends
TabExpViewBase
{
/**
* 实体服务对象
*
* @type {GoalService}
* @memberof GoalStateTabViewBase
*/
protected
appEntityService
:
GoalService
=
new
GoalService
;
/**
* 计数器服务对象集合
*
* @protected
* @type {Array<*>}
* @memberof GoalStateTabViewBase
*/
protected
counterServiceArray
:
Array
<
any
>
=
[];
/**
* 视图模型数据
*
* @protected
* @type {*}
* @memberof GoalStateTabViewBase
*/
protected
model
:
any
=
{
srfCaption
:
'entities.goal.views.statetabview.caption'
,
srfTitle
:
'entities.goal.views.statetabview.title'
,
srfSubTitle
:
'entities.goal.views.statetabview.subtitle'
,
dataInfo
:
''
}
/**
* 容器模型
*
* @protected
* @type {*}
* @memberof GoalStateTabViewBase
*/
protected
containerModel
:
any
=
{
view_tabexppanel
:
{
name
:
'tabexppanel'
,
type
:
'TABEXPPANEL'
},
};
/**
* 视图唯一标识
*
* @protected
* @type {string}
* @memberof ViewBase
*/
protected
viewtag
:
string
=
'2f0540af5db76052cee0e8e91f0204c4'
;
/**
* 视图引擎
*
* @public
* @type {Engine}
* @memberof GoalStateTabViewBase
*/
public
engine
:
TabExpViewEngine
=
new
TabExpViewEngine
();
/**
* 引擎初始化
*
* @public
* @memberof GoalStateTabViewBase
*/
public
engineInit
():
void
{
this
.
engine
.
init
({
view
:
this
,
keyPSDEField
:
'goal'
,
majorPSDEField
:
'title'
,
isLoadDefault
:
true
,
});
}
/**
* 加载模型
*
* @protected
* @memberof GoalStateTabViewBase
*/
protected
async
loadModel
():
Promise
<
any
>
{
if
(
this
.
context
.
goal
){
this
.
appEntityService
.
getDataInfo
(
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),{},
false
).
then
((
response
:
any
)
=>
{
if
(
!
response
||
response
.
status
!==
200
)
{
return
;
}
const
{
data
:
_data
}
=
response
;
if
(
_data
.
title
)
{
Object
.
assign
(
this
.
model
,
{
dataInfo
:
_data
.
title
});
if
(
this
.
$tabPageExp
)
{
this
.
$tabPageExp
.
setCurPageCaption
(
this
.
model
.
srfTitle
,
this
.
model
.
srfTitle
,
this
.
model
.
dataInfo
);
}
if
(
this
.
$route
){
this
.
$route
.
meta
.
info
=
this
.
model
.
dataInfo
;
}
Object
.
assign
(
this
.
model
,
{
srfTitle
:
`
${
this
.
$t
(
this
.
model
.
srfTitle
)}
-
${
this
.
model
.
dataInfo
}
`
});
this
.
$appService
.
navHistory
.
setCaption
({
route
:
this
.
$route
,
info
:
this
.
model
.
dataInfo
});
}
})
}
}
}
\ No newline at end of file
app_CRM/src/pages/sales/goal-state-tab-view/goal-state-tab-view.html
0 → 100644
浏览文件 @
d77f3430
<studio-view-style2
viewName=
"goalstatetabview"
viewTitle=
"目标分页状态"
class=
'detabexpview goal-state-tab-view'
>
<view
_tabexppanel
:viewState=
"viewState"
:viewparams=
"viewparams"
:context=
"context"
name=
"tabexppanel"
ref=
'tabexppanel'
@
closeview=
"closeView($event)"
>
</view
_tabexppanel
>
</studio-view-style2>
\ No newline at end of file
app_CRM/src/pages/sales/goal-state-tab-view/goal-state-tab-view.vue
0 → 100644
浏览文件 @
d77f3430
<
template
src=
"./goal-state-tab-view.html"
/>
<script
lang=
'tsx'
>
import
{ Component } from 'vue-property-decorator';
import { VueLifeCycleProcessing } from '@/studio-core';
import { GoalStateTabViewBase } from './goal-state-tab-view-base';
import view_tabexppanel from '@widgets/goal/state-tab-viewtabexppanel-tabexppanel/state-tab-viewtabexppanel-tabexppanel.vue';
/**
* 目标分页状态视图
*
* @export
* @class GoalStateTabView
* @extends {GoalStateTabViewBase}
*/
@Component({
components: {
view_tabexppanel,
},
beforeRouteEnter: (to: any, from: any, next: any) => {
next((vm: any) => {
vm.$appService.navHistory.setViewTag(vm.viewtag, to);
vm.$appService.navHistory.setViewContext(vm.context, to);
});
}
})
@VueLifeCycleProcessing()
export default class GoalStateTabView extends GoalStateTabViewBase { }
</script>
app_CRM/src/pages/ungroup/central/page-register.ts
浏览文件 @
d77f3430
...
...
@@ -74,6 +74,7 @@ export const PageComponents = {
Vue
.
component
(
'lead-quick-create'
,
()
=>
import
(
'@pages/sales/lead-quick-create/lead-quick-create.vue'
));
Vue
.
component
(
'competitor-pickup-grid-view'
,
()
=>
import
(
'@pages/sales/competitor-pickup-grid-view/competitor-pickup-grid-view.vue'
));
Vue
.
component
(
'price-level-pickup-view'
,
()
=>
import
(
'@pages/product/price-level-pickup-view/price-level-pickup-view.vue'
));
Vue
.
component
(
'goal-state-tab-view'
,
()
=>
import
(
'@pages/sales/goal-state-tab-view/goal-state-tab-view.vue'
));
Vue
.
component
(
'invoice-summary-view'
,
()
=>
import
(
'@pages/finance/invoice-summary-view/invoice-summary-view.vue'
));
Vue
.
component
(
'opportunity-edit-view'
,
()
=>
import
(
'@pages/sales/opportunity-edit-view/opportunity-edit-view.vue'
));
Vue
.
component
(
'lead-info-contact'
,
()
=>
import
(
'@pages/sales/lead-info-contact/lead-info-contact.vue'
));
...
...
app_CRM/src/pages/ungroup/central/router.ts
浏览文件 @
d77f3430
...
...
@@ -1872,6 +1872,20 @@ const router = new Router({
},
component
:
()
=>
import
(
'@pages/product/price-level-pickup-view/price-level-pickup-view.vue'
),
},
{
path
:
'goals/:goal?/statetabview/:statetabview?'
,
meta
:
{
caption
:
'entities.goal.views.statetabview.title'
,
info
:
''
,
parameters
:
[
{
pathName
:
'central'
,
parameterName
:
'central'
},
{
pathName
:
'goals'
,
parameterName
:
'goal'
},
{
pathName
:
'statetabview'
,
parameterName
:
'statetabview'
},
],
requireAuth
:
true
,
},
component
:
()
=>
import
(
'@pages/sales/goal-state-tab-view/goal-state-tab-view.vue'
),
},
{
path
:
'invoices/:invoice?/summaryview/:summaryview?'
,
meta
:
{
...
...
app_CRM/src/service/campaign/campaign-service-base.ts
浏览文件 @
d77f3430
此差异已折叠。
点击以展开。
app_CRM/src/service/contact/contact-service-base.ts
浏览文件 @
d77f3430
此差异已折叠。
点击以展开。
app_CRM/src/service/ibiz-list/ibiz-list-service-base.ts
浏览文件 @
d77f3430
此差异已折叠。
点击以展开。
app_CRM/src/service/opportunity/opportunity-service-base.ts
浏览文件 @
d77f3430
此差异已折叠。
点击以展开。
app_CRM/src/service/sales-literature/sales-literature-service-base.ts
浏览文件 @
d77f3430
此差异已折叠。
点击以展开。
app_CRM/src/store/modules/view-action/state.ts
浏览文件 @
d77f3430
...
...
@@ -431,6 +431,16 @@ export const viewstate: any = {
'44a690a1d62a390708480cb43f67d98b'
,
],
},
{
viewtag
:
'2f0540af5db76052cee0e8e91f0204c4'
,
viewmodule
:
'Sales'
,
viewname
:
'GoalStateTabView'
,
viewaction
:
''
,
viewdatachange
:
false
,
refviews
:
[
'631a4276161c551802f3aaf4bd7e607c'
,
],
},
{
viewtag
:
'30458f00562fda145be535e56948b067'
,
viewmodule
:
'Marketing'
,
...
...
@@ -1093,6 +1103,7 @@ export const viewstate: any = {
'b38bc0256ecd5be1a58a3c2210a98d05'
,
'5f8f689d5dccc3db6d2b74a24a8b24ef'
,
'dfc0051ae4813115e03f3d095f8cd7d3'
,
'2f0540af5db76052cee0e8e91f0204c4'
,
'631a4276161c551802f3aaf4bd7e607c'
,
'15d12c1173fcb6e742b6a6d92cbc53ed'
,
'0326a502bb574cddc41da4323786dcb5'
,
...
...
app_CRM/src/uiservice/goal/goal-ui-service-base.ts
浏览文件 @
d77f3430
...
...
@@ -81,6 +81,7 @@ export default class GoalUIServiceBase extends UIService {
public
initViewMap
(){
this
.
allViewMap
.
set
(
'PICKUPVIEW:'
,{
viewname
:
'pickupview'
,
srfappde
:
'goals'
});
this
.
allViewMap
.
set
(
':'
,{
viewname
:
'pickupgridview'
,
srfappde
:
'goals'
});
this
.
allViewMap
.
set
(
':'
,{
viewname
:
'statetabview'
,
srfappde
:
'goals'
});
this
.
allViewMap
.
set
(
':'
,{
viewname
:
'info_goalview'
,
srfappde
:
'goals'
});
this
.
allViewMap
.
set
(
':'
,{
viewname
:
'infoview'
,
srfappde
:
'goals'
});
this
.
allViewMap
.
set
(
'MDATAVIEW:'
,{
viewname
:
'gridview'
,
srfappde
:
'goals'
});
...
...
app_CRM/src/widgets/app/central-appmenu/central-appmenu-base.tsx
浏览文件 @
d77f3430
...
...
@@ -30,12 +30,14 @@ export class CentralBase extends Vue {
this
.
clickAuto3
(
item
);
break
;
case
'Auto6'
:
this
.
clickAuto6
(
item
);
break
;
case
'_
2
'
:
this
.
click_
2
(
item
);
break
;
case
'_
3
'
:
this
.
click_
3
(
item
);
break
;
case
'Auto15'
:
this
.
clickAuto15
(
item
);
break
;
case
'Auto11'
:
this
.
clickAuto11
(
item
);
break
;
case
'_2'
:
this
.
click_2
(
item
);
break
;
case
'Auto14'
:
this
.
clickAuto14
(
item
);
break
;
case
'Auto10'
:
...
...
@@ -227,7 +229,7 @@ export class CentralBase extends Vue {
* @param {*} [item={}]
* @memberof Central
*/
public
click_
2
(
item
:
any
=
{})
{
public
click_
3
(
item
:
any
=
{})
{
const
viewparam
:
any
=
{};
Object
.
assign
(
viewparam
,
{});
const
deResParameters
:
any
[]
=
[];
...
...
@@ -290,6 +292,29 @@ export class CentralBase extends Vue {
})
}
/**
* 目标分页状态
*
* @param {*} [item={}]
* @memberof Central
*/
public
click_2
(
item
:
any
=
{})
{
const
viewparam
:
any
=
{};
Object
.
assign
(
viewparam
,
{});
const
deResParameters
:
any
[]
=
[];
const
parameters
:
any
[]
=
[
{
pathName
:
'goals'
,
parameterName
:
'goal'
},
{
pathName
:
'statetabview'
,
parameterName
:
'statetabview'
},
];
const
path
:
string
=
this
.
$viewTool
.
buildUpRoutePath
(
this
.
$route
,
{},
deResParameters
,
parameters
,
[],
viewparam
);
if
(
Object
.
is
(
this
.
$route
.
fullPath
,
path
)){
return
;
}
this
.
$nextTick
(
function
(){
this
.
$router
.
push
(
path
);
})
}
/**
* 潜在客户管理
*
...
...
app_CRM/src/widgets/app/central-appmenu/central-appmenu-model.ts
浏览文件 @
d77f3430
...
...
@@ -639,7 +639,7 @@ export default class CentralModel {
iconcls
:
'fa fa-line-chart'
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
'_
2
'
,
appfunctag
:
'_
3
'
,
appfuncyype
:
'APPVIEW'
,
viewname
:
'metric-grid-view'
,
resourcetag
:
''
,
...
...
@@ -663,6 +663,27 @@ export default class CentralModel {
appfunctag
:
''
,
resourcetag
:
''
,
}
,
{
id
:
'9865490D-A150-450A-9695-3F4610E9A5BE'
,
name
:
'menuitem33'
,
text
:
'目标分页'
,
type
:
'MENUITEM'
,
counterid
:
''
,
tooltip
:
'目标分页'
,
expanded
:
false
,
separator
:
false
,
hidden
:
false
,
hidesidebar
:
false
,
opendefault
:
false
,
iconcls
:
''
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
'_2'
,
appfuncyype
:
'APPVIEW'
,
viewname
:
'goal-state-tab-view'
,
resourcetag
:
''
,
}
,
],
}
...
...
@@ -902,7 +923,7 @@ export default class CentralModel {
],
},
{
appfunctag
:
'_
2
'
,
appfunctag
:
'_
3
'
,
appfuncyype
:
'APPVIEW'
,
openmode
:
''
,
codename
:
'metricgridview'
,
...
...
@@ -937,6 +958,18 @@ export default class CentralModel {
{
pathName
:
'gridview'
,
parameterName
:
'gridview'
},
],
},
{
appfunctag
:
'_2'
,
appfuncyype
:
'APPVIEW'
,
openmode
:
''
,
codename
:
'goalstatetabview'
,
deResParameters
:
[],
routepath
:
'/central/:central?/goals/:goal?/statetabview/:statetabview?'
,
parameters
:
[
{
pathName
:
'goals'
,
parameterName
:
'goal'
},
{
pathName
:
'statetabview'
,
parameterName
:
'statetabview'
},
],
},
{
appfunctag
:
'Auto14'
,
appfuncyype
:
'APPVIEW'
,
...
...
app_CRM/src/widgets/goal/state-tab-viewtabexppanel-tabexppanel/state-tab-viewtabexppanel-tabexppanel-base.tsx
0 → 100644
浏览文件 @
d77f3430
import
{
Prop
,
Provide
,
Emit
,
Model
}
from
'vue-property-decorator'
;
import
{
Subject
,
Subscription
}
from
'rxjs'
;
import
{
Watch
,
TabExpPanelControlBase
}
from
'@/studio-core'
;
import
GoalService
from
'@/service/goal/goal-service'
;
import
StateTabViewtabexppanelService
from
'./state-tab-viewtabexppanel-tabexppanel-service'
;
/**
* tabexppanel部件基类
*
* @export
* @class TabExpPanelControlBase
* @extends {StateTabViewtabexppanelTabexppanelBase}
*/
export
class
StateTabViewtabexppanelTabexppanelBase
extends
TabExpPanelControlBase
{
/**
* 建构部件服务对象
*
* @type {StateTabViewtabexppanelService}
* @memberof StateTabViewtabexppanelTabexppanelBase
*/
public
service
:
StateTabViewtabexppanelService
=
new
StateTabViewtabexppanelService
({
$store
:
this
.
$store
});
/**
* 实体服务对象
*
* @type {GoalService}
* @memberof StateTabViewtabexppanelTabexppanelBase
*/
public
appEntityService
:
GoalService
=
new
GoalService
({
$store
:
this
.
$store
});
/**
* 应用实体名称
*
* @protected
* @type {string}
* @memberof StateTabViewtabexppanelTabexppanelBase
*/
protected
appDeName
:
string
=
'goal'
;
/**
* 是否初始化
*
* @protected
* @returns {any}
* @memberof StateTabViewtabexppanel
*/
protected
isInit
:
any
=
{
tabviewpanel
:
true
,
tabviewpanel2
:
false
,
}
/**
* 被激活的分页面板
*
* @protected
* @type {string}
* @memberof StateTabViewtabexppanel
*/
protected
activatedTabViewPanel
:
string
=
'tabviewpanel'
;
/**
* 组件创建完毕
*
* @protected
* @memberof StateTabViewtabexppanel
*/
protected
ctrlCreated
():
void
{
//设置分页导航srfparentdename和srfparentkey
if
(
this
.
context
.
goal
)
{
Object
.
assign
(
this
.
context
,
{
srfparentdename
:
'Goal'
,
srfparentkey
:
this
.
context
.
goal
});
}
super
.
ctrlCreated
();
}
}
\ No newline at end of file
app_CRM/src/widgets/goal/state-tab-viewtabexppanel-tabexppanel/state-tab-viewtabexppanel-tabexppanel-model.ts
0 → 100644
浏览文件 @
d77f3430
/**
* StateTabViewtabexppanel 部件模型
*
* @export
* @class StateTabViewtabexppanelModel
*/
export
default
class
StateTabViewtabexppanelModel
{
/**
* 获取数据项集合
*
* @returns {any[]}
* @memberof StateTabViewtabexppanelModel
*/
public
getDataItems
():
any
[]
{
return
[
{
name
:
'inprogressdecimal'
,
},
{
name
:
'goal'
,
prop
:
'goalid'
,
},
{
name
:
'stretchtargetmoney'
,
},
{
name
:
'actualdecimal'
,
},
{
name
:
'computedtargetasoftodayinteger'
,
},
{
name
:
'timezoneruleversionnumber'
,
},
{
name
:
'exchangerate'
,
},
{
name
:
'entityimageid'
,
},
{
name
:
'targetinteger'
,
},
{
name
:
'customrollupfieldmoney_base'
,
},
{
name
:
'entityimage_url'
,
},
{
name
:
'actualmoney_base'
,
},
{
name
:
'utcconversiontimezonecode'
,
},
{
name
:
'inprogressinteger'
,
},
{
name
:
'statecode'
,
},
{
name
:
'targetmoney_base'
,
},
{
name
:
'inprogressstring'
,
},
{
name
:
'entityimage_timestamp'
,
},
{
name
:
'goalstartdate'
,
},
{
name
:
'percentage'
,
},
{
name
:
'ownerid'
,
},
{
name
:
'goalowneridyominame'
,
},
{
name
:
'targetdecimal'
,
},
{
name
:
'amount'
,
},
{
name
:
'statuscode'
,
},
{
name
:
'amountdatatype'
,
},
{
name
:
'customrollupfieldinteger'
,
},
{
name
:
'owneridtype'
,
},
{
name
:
'updatedate'
,
},
{
name
:
'inprogressmoney'
,
},
{
name
:
'fiscalyear'
,
},
{
name
:
'fiscalperiod'
,
},
{
name
:
'title'
,
},
{
name
:
'stretchtargetdecimal'
,
},
{
name
:
'customrollupfielddecimal'
,
},
{
name
:
'consideronlygoalownersrecords'
,
},
{
name
:
'overriddencreatedon'
,
},
{
name
:
'actualmoney'
,
},
{
name
:
'rolluponlyfromchildgoals'
,
},
{
name
:
'goalenddate'
,
},
{
name
:
'createdate'
,
},
{
name
:
'customrollupfieldmoney'
,
},
{
name
:
'rolluperrorcode'
,
},
{
name
:
'versionnumber'
,
},
{
name
:
'stretchtargetmoney_base'
,
},
{
name
:
'treeid'
,
},
{
name
:
'entityimage'
,
},
{
name
:
'stretchtargetstring'
,
},
{
name
:
'stretchtargetinteger'
,
},
{
name
:
'fiscalperiodgoal'
,
},
{
name
:
'inprogressmoney_base'
,
},
{
name
:
'overridden'
,
},
{
name
:
'actualstring'
,
},
{
name
:
'actualinteger'
,
},
{
name
:
'goalowneridtype'
,
},
{
name
:
'importsequencenumber'
,
},
{
name
:
'goalownerid'
,
},
{
name
:
'computedtargetasoftodaydecimal'
,
},
{
name
:
'createman'
,
},
{
name
:
'targetstring'
,
},
{
name
:
'customrollupfieldstring'
,
},
{
name
:
'targetmoney'
,
},
{
name
:
'lastrolledupdate'
,
},
{
name
:
'updateman'
,
},
{
name
:
'override'
,
},
{
name
:
'computedtargetasoftodaymoney'
,
},
{
name
:
'owneridyominame'
,
},
{
name
:
'parentgoalid'
,
},
{
name
:
'rollupqueryinprogressmoneyid'
,
},
{
name
:
'rollupquerycustommoneyid'
,
},
{
name
:
'rollupqueryinprogressintegerid'
,
},
{
name
:
'rollupquerycustomdecimalid'
,
},
{
name
:
'rollupqueryactualmoneyid'
,
},
{
name
:
'rollupquerycustomintegerid'
,
},
{
name
:
'goalwitherrorid'
,
},
{
name
:
'metricid'
,
},
{
name
:
'rollupqueryinprogressdecimalid'
,
},
{
name
:
'rollupqueryactualintegerid'
,
},
{
name
:
'rollupqueryactualdecimalid'
,
},
{
name
:
'parentgoalname'
,
},
{
name
:
'metricname'
,
},
]
}
}
\ No newline at end of file
app_CRM/src/widgets/goal/state-tab-viewtabexppanel-tabexppanel/state-tab-viewtabexppanel-tabexppanel-service.ts
0 → 100644
浏览文件 @
d77f3430
import
{
Http
,
Util
,
Errorlog
}
from
'@/utils'
;
import
ControlService
from
'@/widgets/control-service'
;
import
GoalService
from
'@/service/goal/goal-service'
;
import
StateTabViewtabexppanelModel
from
'./state-tab-viewtabexppanel-tabexppanel-model'
;
/**
* StateTabViewtabexppanel 部件服务对象
*
* @export
* @class StateTabViewtabexppanelService
*/
export
default
class
StateTabViewtabexppanelService
extends
ControlService
{
/**
* 目标服务对象
*
* @type {GoalService}
* @memberof StateTabViewtabexppanelService
*/
public
appEntityService
:
GoalService
=
new
GoalService
({
$store
:
this
.
getStore
()
});
/**
* 设置从数据模式
*
* @type {boolean}
* @memberof StateTabViewtabexppanelService
*/
public
setTempMode
(){
this
.
isTempMode
=
false
;
}
/**
* Creates an instance of StateTabViewtabexppanelService.
*
* @param {*} [opts={}]
* @memberof StateTabViewtabexppanelService
*/
constructor
(
opts
:
any
=
{})
{
super
(
opts
);
this
.
model
=
new
StateTabViewtabexppanelModel
();
}
}
\ No newline at end of file
app_CRM/src/widgets/goal/state-tab-viewtabexppanel-tabexppanel/state-tab-viewtabexppanel-tabexppanel.html
0 → 100644
浏览文件 @
d77f3430
<div
class=
'tabviewpanel'
>
<tabs
:value=
"activatedTabViewPanel"
:animated=
"false"
class=
'tabexppanel'
name=
'statetabviewtabexppanel'
@
on-click=
"tabPanelClick($event)"
>
<tab-pane
:index=
"0"
name=
'tabviewpanel'
tab=
'statetabviewtabexppanel'
class=
''
:label=
"(h) =>{
return h('div', [
h('span', '全部目标'),
h('Badge', {
props: {
count: undefined,
type: 'primary'
}
})
])
}"
>
<view
_tabviewpanel
:viewState=
"viewState"
:viewparams=
"JSON.parse(JSON.stringify(viewparams))"
:context=
"JSON.parse(JSON.stringify(context))"
v-if=
"isInit.tabviewpanel"
name=
"tabviewpanel"
ref=
'tabviewpanel'
:expActive=
"activatedTabViewPanel === 'tabviewpanel'"
@
viewpanelDatasChange =
"tabViewPanelDatasChange"
@
closeview=
"closeView($event)"
>
</view
_tabviewpanel
>
</tab-pane>
<tab-pane
:index=
"1"
name=
'tabviewpanel2'
tab=
'statetabviewtabexppanel'
class=
''
:label=
"(h) =>{
return h('div', [
h('span', '我的目标'),
h('Badge', {
props: {
count: undefined,
type: 'primary'
}
})
])
}"
>
<view
_tabviewpanel2
:viewState=
"viewState"
:viewparams=
"JSON.parse(JSON.stringify(viewparams))"
:context=
"JSON.parse(JSON.stringify(context))"
v-if=
"isInit.tabviewpanel2"
name=
"tabviewpanel2"
ref=
'tabviewpanel2'
:expActive=
"activatedTabViewPanel === 'tabviewpanel2'"
@
viewpanelDatasChange =
"tabViewPanelDatasChange"
@
closeview=
"closeView($event)"
>
</view
_tabviewpanel2
>
</tab-pane>
</tabs>
</div>
\ No newline at end of file
app_CRM/src/widgets/goal/state-tab-viewtabexppanel-tabexppanel/state-tab-viewtabexppanel-tabexppanel.vue
0 → 100644
浏览文件 @
d77f3430
<
template
src=
"./state-tab-viewtabexppanel-tabexppanel.html"
/>
<script
lang=
'tsx'
>
import
{ Component } from 'vue-property-decorator';
import { VueLifeCycleProcessing } from '@/studio-core';
import { StateTabViewtabexppanelTabexppanelBase } from './state-tab-viewtabexppanel-tabexppanel-base';
import view_tabviewpanel from '@widgets/goal/state-tab-viewtabviewpanel-tabviewpanel/state-tab-viewtabviewpanel-tabviewpanel.vue';
import view_tabviewpanel2 from '@widgets/goal/state-tab-viewtabviewpanel2-tabviewpanel/state-tab-viewtabviewpanel2-tabviewpanel.vue';
/**
* tabexppanel部件
*
* @export
* @class StateTabViewtabexppanelTabexppanel
* @extends {StateTabViewtabexppanelTabexppanelBase}
*/
@Component({
components: {
view_tabviewpanel,
view_tabviewpanel2,
}
})
@VueLifeCycleProcessing()
export default class StateTabViewtabexppanelTabexppanel extends StateTabViewtabexppanelTabexppanelBase { }
</script>
app_CRM/src/widgets/goal/state-tab-viewtabviewpanel-tabviewpanel/state-tab-viewtabviewpanel-tabviewpanel-base.tsx
0 → 100644
浏览文件 @
d77f3430
import
{
Prop
,
Provide
,
Emit
,
Model
}
from
'vue-property-decorator'
;
import
{
Subject
,
Subscription
}
from
'rxjs'
;
import
{
Watch
,
MainControlBase
}
from
'@/studio-core'
;
import
GoalService
from
'@/service/goal/goal-service'
;
import
StateTabViewtabviewpanelService
from
'./state-tab-viewtabviewpanel-tabviewpanel-service'
;
/**
* tabviewpanel部件基类
*
* @export
* @class MainControlBase
* @extends {StateTabViewtabviewpanelTabviewpanelBase}
*/
export
class
StateTabViewtabviewpanelTabviewpanelBase
extends
MainControlBase
{
/**
* 建构部件服务对象
*
* @type {StateTabViewtabviewpanelService}
* @memberof StateTabViewtabviewpanelTabviewpanelBase
*/
public
service
:
StateTabViewtabviewpanelService
=
new
StateTabViewtabviewpanelService
({
$store
:
this
.
$store
});
/**
* 实体服务对象
*
* @type {GoalService}
* @memberof StateTabViewtabviewpanelTabviewpanelBase
*/
public
appEntityService
:
GoalService
=
new
GoalService
({
$store
:
this
.
$store
});
/**
* 应用实体名称
*
* @protected
* @type {string}
* @memberof StateTabViewtabviewpanelTabviewpanelBase
*/
protected
appDeName
:
string
=
'goal'
;
/**
* 导航模式下项是否激活
*
* @type {*}
* @memberof StateTabViewtabviewpanel
*/
@
Prop
()
public
expActive
!
:
any
;
/**
* 获取多项数据
*
* @returns {any[]}
* @memberof StateTabViewtabviewpanel
*/
public
getDatas
():
any
[]
{
return
[];
}
/**
* 获取单项树
*
* @returns {*}
* @memberof StateTabViewtabviewpanel
*/
public
getData
():
any
{
return
null
;
}
/**
* 是否被激活
*
* @type {boolean}
* @memberof StateTabViewtabviewpanel
*/
public
isActivied
:
boolean
=
true
;
/**
* 局部上下文
*
* @type {*}
* @memberof StateTabViewtabviewpanel
*/
public
localContext
:
any
=
null
;
/**
* 局部视图参数
*
* @type {*}
* @memberof StateTabViewtabviewpanel
*/
public
localViewParam
:
any
=
null
;
/**
* 传入上下文
*
* @type {string}
* @memberof TabExpViewtabviewpanel
*/
public
viewdata
:
string
=
JSON
.
stringify
(
this
.
context
);
/**
* 传入视图参数
*
* @type {string}
* @memberof PickupViewpickupviewpanel
*/
public
viewparam
:
string
=
JSON
.
stringify
(
this
.
viewparams
);
/**
* 视图面板过滤项
*
* @type {string}
* @memberof StateTabViewtabviewpanel
*/
public
navfilter
:
string
=
""
;
/**
* vue 生命周期
*
* @returns
* @memberof StateTabViewtabviewpanel
*/
public
created
()
{
this
.
afterCreated
();
}
/**
* 执行created后的逻辑
*
* @memberof StateTabViewtabviewpanel
*/
public
afterCreated
(){
this
.
initNavParam
();
if
(
this
.
viewState
)
{
this
.
viewStateEvent
=
this
.
viewState
.
subscribe
(({
tag
,
action
,
data
})
=>
{
if
(
!
Object
.
is
(
tag
,
this
.
name
))
{
return
;
}
this
.
$forceUpdate
();
this
.
initNavParam
();
});
}
}
/**
* 初始化导航参数
*
* @memberof StateTabViewtabviewpanel
*/
public
initNavParam
(){
if
(
!
Object
.
is
(
this
.
navfilter
,
""
)){
Object
.
assign
(
this
.
viewparams
,{[
this
.
navfilter
]:
this
.
context
[
'majorentity'
]})
}
if
(
this
.
localContext
&&
Object
.
keys
(
this
.
localContext
).
length
>
0
){
let
_context
:
any
=
this
.
$util
.
computedNavData
({},
this
.
context
,
this
.
viewparams
,
this
.
localContext
);
Object
.
assign
(
this
.
context
,
_context
);
}
if
(
this
.
localViewParam
&&
Object
.
keys
(
this
.
localViewParam
).
length
>
0
){
let
_param
:
any
=
this
.
$util
.
computedNavData
({},
this
.
context
,
this
.
viewparams
,
this
.
localViewParam
);
Object
.
assign
(
this
.
viewparams
,
_param
);
}
this
.
viewdata
=
JSON
.
stringify
(
this
.
context
);
this
.
viewparam
=
JSON
.
stringify
(
this
.
viewparams
);
}
/**
* 视图数据变化
*
* @memberof StateTabViewtabviewpanel
*/
public
viewDatasChange
(
$event
:
any
){
this
.
$emit
(
'viewpanelDatasChange'
,
$event
);
}
/**
* vue 生命周期
*
* @memberof StateTabViewtabviewpanel
*/
public
destroyed
()
{
this
.
afterDestroy
();
}
/**
* 执行destroyed后的逻辑
*
* @memberof StateTabViewtabviewpanel
*/
public
afterDestroy
()
{
if
(
this
.
viewStateEvent
)
{
this
.
viewStateEvent
.
unsubscribe
();
}
}
}
\ No newline at end of file
app_CRM/src/widgets/goal/state-tab-viewtabviewpanel-tabviewpanel/state-tab-viewtabviewpanel-tabviewpanel-model.ts
0 → 100644
浏览文件 @
d77f3430
/**
* StateTabViewtabviewpanel 部件模型
*
* @export
* @class StateTabViewtabviewpanelModel
*/
export
default
class
StateTabViewtabviewpanelModel
{
/**
* 获取数据项集合
*
* @returns {any[]}
* @memberof StateTabViewtabviewpanelModel
*/
public
getDataItems
():
any
[]
{
return
[
{
name
:
'inprogressdecimal'
,
},
{
name
:
'goal'
,
prop
:
'goalid'
,
},
{
name
:
'stretchtargetmoney'
,
},
{
name
:
'actualdecimal'
,
},
{
name
:
'computedtargetasoftodayinteger'
,
},
{
name
:
'timezoneruleversionnumber'
,
},
{
name
:
'exchangerate'
,
},
{
name
:
'entityimageid'
,
},
{
name
:
'targetinteger'
,
},
{
name
:
'customrollupfieldmoney_base'
,
},
{
name
:
'entityimage_url'
,
},
{
name
:
'actualmoney_base'
,
},
{
name
:
'utcconversiontimezonecode'
,
},
{
name
:
'inprogressinteger'
,
},
{
name
:
'statecode'
,
},
{
name
:
'targetmoney_base'
,
},
{
name
:
'inprogressstring'
,
},
{
name
:
'entityimage_timestamp'
,
},
{
name
:
'goalstartdate'
,
},
{
name
:
'percentage'
,
},
{
name
:
'ownerid'
,
},
{
name
:
'goalowneridyominame'
,
},
{
name
:
'targetdecimal'
,
},
{
name
:
'amount'
,
},
{
name
:
'statuscode'
,
},
{
name
:
'amountdatatype'
,
},
{
name
:
'customrollupfieldinteger'
,
},
{
name
:
'owneridtype'
,
},
{
name
:
'updatedate'
,
},
{
name
:
'inprogressmoney'
,
},
{
name
:
'fiscalyear'
,
},
{
name
:
'fiscalperiod'
,
},
{
name
:
'title'
,
},
{
name
:
'stretchtargetdecimal'
,
},
{
name
:
'customrollupfielddecimal'
,
},
{
name
:
'consideronlygoalownersrecords'
,
},
{
name
:
'overriddencreatedon'
,
},
{
name
:
'actualmoney'
,
},
{
name
:
'rolluponlyfromchildgoals'
,
},
{
name
:
'goalenddate'
,
},
{
name
:
'createdate'
,
},
{
name
:
'customrollupfieldmoney'
,
},
{
name
:
'rolluperrorcode'
,
},
{
name
:
'versionnumber'
,
},
{
name
:
'stretchtargetmoney_base'
,
},
{
name
:
'treeid'
,
},
{
name
:
'entityimage'
,
},
{
name
:
'stretchtargetstring'
,
},
{
name
:
'stretchtargetinteger'
,
},
{
name
:
'fiscalperiodgoal'
,
},
{
name
:
'inprogressmoney_base'
,
},
{
name
:
'overridden'
,
},
{
name
:
'actualstring'
,
},
{
name
:
'actualinteger'
,
},
{
name
:
'goalowneridtype'
,
},
{
name
:
'importsequencenumber'
,
},
{
name
:
'goalownerid'
,
},
{
name
:
'computedtargetasoftodaydecimal'
,
},
{
name
:
'createman'
,
},
{
name
:
'targetstring'
,
},
{
name
:
'customrollupfieldstring'
,
},
{
name
:
'targetmoney'
,
},
{
name
:
'lastrolledupdate'
,
},
{
name
:
'updateman'
,
},
{
name
:
'override'
,
},
{
name
:
'computedtargetasoftodaymoney'
,
},
{
name
:
'owneridyominame'
,
},
{
name
:
'parentgoalid'
,
},
{
name
:
'rollupqueryinprogressmoneyid'
,
},
{
name
:
'rollupquerycustommoneyid'
,
},
{
name
:
'rollupqueryinprogressintegerid'
,
},
{
name
:
'rollupquerycustomdecimalid'
,
},
{
name
:
'rollupqueryactualmoneyid'
,
},
{
name
:
'rollupquerycustomintegerid'
,
},
{
name
:
'goalwitherrorid'
,
},
{
name
:
'metricid'
,
},
{
name
:
'rollupqueryinprogressdecimalid'
,
},
{
name
:
'rollupqueryactualintegerid'
,
},
{
name
:
'rollupqueryactualdecimalid'
,
},
{
name
:
'parentgoalname'
,
},
{
name
:
'metricname'
,
},
]
}
}
\ No newline at end of file
app_CRM/src/widgets/goal/state-tab-viewtabviewpanel-tabviewpanel/state-tab-viewtabviewpanel-tabviewpanel-service.ts
0 → 100644
浏览文件 @
d77f3430
import
{
Http
}
from
'@/utils'
;
import
ControlService
from
'@/widgets/control-service'
;
/**
* StateTabViewtabviewpanel 部件服务对象
*
* @export
* @class StateTabViewtabviewpanelService
*/
export
default
class
StateTabViewtabviewpanelService
extends
ControlService
{
}
\ No newline at end of file
app_CRM/src/widgets/goal/state-tab-viewtabviewpanel-tabviewpanel/state-tab-viewtabviewpanel-tabviewpanel.html
0 → 100644
浏览文件 @
d77f3430
<div
class=
'tabviewpanel'
v-if=
'isActivied'
>
<goal-grid-view
class=
'viewcontainer2'
:viewdata=
"viewdata"
:viewparam=
"viewparam"
@
viewload=
"viewDatasChange($event)"
:viewDefaultUsage=
"false"
:viewUsage=
"7"
:expActive=
"expActive"
/>
</div>
\ No newline at end of file
app_CRM/src/widgets/goal/state-tab-viewtabviewpanel-tabviewpanel/state-tab-viewtabviewpanel-tabviewpanel.vue
0 → 100644
浏览文件 @
d77f3430
<
template
src=
"./state-tab-viewtabviewpanel-tabviewpanel.html"
/>
<script
lang=
'tsx'
>
import
{ Component } from 'vue-property-decorator';
import { VueLifeCycleProcessing } from '@/studio-core';
import { StateTabViewtabviewpanelTabviewpanelBase } from './state-tab-viewtabviewpanel-tabviewpanel-base';
/**
* tabviewpanel部件
*
* @export
* @class StateTabViewtabviewpanelTabviewpanel
* @extends {StateTabViewtabviewpanelTabviewpanelBase}
*/
@Component({
components: {
}
})
@VueLifeCycleProcessing()
export default class StateTabViewtabviewpanelTabviewpanel extends StateTabViewtabviewpanelTabviewpanelBase { }
</script>
app_CRM/src/widgets/goal/state-tab-viewtabviewpanel2-tabviewpanel/state-tab-viewtabviewpanel2-tabviewpanel-base.tsx
0 → 100644
浏览文件 @
d77f3430
import
{
Prop
,
Provide
,
Emit
,
Model
}
from
'vue-property-decorator'
;
import
{
Subject
,
Subscription
}
from
'rxjs'
;
import
{
Watch
,
MainControlBase
}
from
'@/studio-core'
;
import
GoalService
from
'@/service/goal/goal-service'
;
import
StateTabViewtabviewpanel2Service
from
'./state-tab-viewtabviewpanel2-tabviewpanel-service'
;
/**
* tabviewpanel2部件基类
*
* @export
* @class MainControlBase
* @extends {StateTabViewtabviewpanel2TabviewpanelBase}
*/
export
class
StateTabViewtabviewpanel2TabviewpanelBase
extends
MainControlBase
{
/**
* 建构部件服务对象
*
* @type {StateTabViewtabviewpanel2Service}
* @memberof StateTabViewtabviewpanel2TabviewpanelBase
*/
public
service
:
StateTabViewtabviewpanel2Service
=
new
StateTabViewtabviewpanel2Service
({
$store
:
this
.
$store
});
/**
* 实体服务对象
*
* @type {GoalService}
* @memberof StateTabViewtabviewpanel2TabviewpanelBase
*/
public
appEntityService
:
GoalService
=
new
GoalService
({
$store
:
this
.
$store
});
/**
* 应用实体名称
*
* @protected
* @type {string}
* @memberof StateTabViewtabviewpanel2TabviewpanelBase
*/
protected
appDeName
:
string
=
'goal'
;
/**
* 导航模式下项是否激活
*
* @type {*}
* @memberof StateTabViewtabviewpanel2
*/
@
Prop
()
public
expActive
!
:
any
;
/**
* 获取多项数据
*
* @returns {any[]}
* @memberof StateTabViewtabviewpanel2
*/
public
getDatas
():
any
[]
{
return
[];
}
/**
* 获取单项树
*
* @returns {*}
* @memberof StateTabViewtabviewpanel2
*/
public
getData
():
any
{
return
null
;
}
/**
* 是否被激活
*
* @type {boolean}
* @memberof StateTabViewtabviewpanel2
*/
public
isActivied
:
boolean
=
true
;
/**
* 局部上下文
*
* @type {*}
* @memberof StateTabViewtabviewpanel2
*/
public
localContext
:
any
=
null
;
/**
* 局部视图参数
*
* @type {*}
* @memberof StateTabViewtabviewpanel2
*/
public
localViewParam
:
any
=
null
;
/**
* 传入上下文
*
* @type {string}
* @memberof TabExpViewtabviewpanel
*/
public
viewdata
:
string
=
JSON
.
stringify
(
this
.
context
);
/**
* 传入视图参数
*
* @type {string}
* @memberof PickupViewpickupviewpanel
*/
public
viewparam
:
string
=
JSON
.
stringify
(
this
.
viewparams
);
/**
* 视图面板过滤项
*
* @type {string}
* @memberof StateTabViewtabviewpanel2
*/
public
navfilter
:
string
=
""
;
/**
* vue 生命周期
*
* @returns
* @memberof StateTabViewtabviewpanel2
*/
public
created
()
{
this
.
afterCreated
();
}
/**
* 执行created后的逻辑
*
* @memberof StateTabViewtabviewpanel2
*/
public
afterCreated
(){
this
.
initNavParam
();
if
(
this
.
viewState
)
{
this
.
viewStateEvent
=
this
.
viewState
.
subscribe
(({
tag
,
action
,
data
})
=>
{
if
(
!
Object
.
is
(
tag
,
this
.
name
))
{
return
;
}
this
.
$forceUpdate
();
this
.
initNavParam
();
});
}
}
/**
* 初始化导航参数
*
* @memberof StateTabViewtabviewpanel2
*/
public
initNavParam
(){
if
(
!
Object
.
is
(
this
.
navfilter
,
""
)){
Object
.
assign
(
this
.
viewparams
,{[
this
.
navfilter
]:
this
.
context
[
'majorentity'
]})
}
if
(
this
.
localContext
&&
Object
.
keys
(
this
.
localContext
).
length
>
0
){
let
_context
:
any
=
this
.
$util
.
computedNavData
({},
this
.
context
,
this
.
viewparams
,
this
.
localContext
);
Object
.
assign
(
this
.
context
,
_context
);
}
if
(
this
.
localViewParam
&&
Object
.
keys
(
this
.
localViewParam
).
length
>
0
){
let
_param
:
any
=
this
.
$util
.
computedNavData
({},
this
.
context
,
this
.
viewparams
,
this
.
localViewParam
);
Object
.
assign
(
this
.
viewparams
,
_param
);
}
this
.
viewdata
=
JSON
.
stringify
(
this
.
context
);
this
.
viewparam
=
JSON
.
stringify
(
this
.
viewparams
);
}
/**
* 视图数据变化
*
* @memberof StateTabViewtabviewpanel2
*/
public
viewDatasChange
(
$event
:
any
){
this
.
$emit
(
'viewpanelDatasChange'
,
$event
);
}
/**
* vue 生命周期
*
* @memberof StateTabViewtabviewpanel2
*/
public
destroyed
()
{
this
.
afterDestroy
();
}
/**
* 执行destroyed后的逻辑
*
* @memberof StateTabViewtabviewpanel2
*/
public
afterDestroy
()
{
if
(
this
.
viewStateEvent
)
{
this
.
viewStateEvent
.
unsubscribe
();
}
}
}
\ No newline at end of file
app_CRM/src/widgets/goal/state-tab-viewtabviewpanel2-tabviewpanel/state-tab-viewtabviewpanel2-tabviewpanel-model.ts
0 → 100644
浏览文件 @
d77f3430
/**
* StateTabViewtabviewpanel2 部件模型
*
* @export
* @class StateTabViewtabviewpanel2Model
*/
export
default
class
StateTabViewtabviewpanel2Model
{
/**
* 获取数据项集合
*
* @returns {any[]}
* @memberof StateTabViewtabviewpanel2Model
*/
public
getDataItems
():
any
[]
{
return
[
{
name
:
'inprogressdecimal'
,
},
{
name
:
'goal'
,
prop
:
'goalid'
,
},
{
name
:
'stretchtargetmoney'
,
},
{
name
:
'actualdecimal'
,
},
{
name
:
'computedtargetasoftodayinteger'
,
},
{
name
:
'timezoneruleversionnumber'
,
},
{
name
:
'exchangerate'
,
},
{
name
:
'entityimageid'
,
},
{
name
:
'targetinteger'
,
},
{
name
:
'customrollupfieldmoney_base'
,
},
{
name
:
'entityimage_url'
,
},
{
name
:
'actualmoney_base'
,
},
{
name
:
'utcconversiontimezonecode'
,
},
{
name
:
'inprogressinteger'
,
},
{
name
:
'statecode'
,
},
{
name
:
'targetmoney_base'
,
},
{
name
:
'inprogressstring'
,
},
{
name
:
'entityimage_timestamp'
,
},
{
name
:
'goalstartdate'
,
},
{
name
:
'percentage'
,
},
{
name
:
'ownerid'
,
},
{
name
:
'goalowneridyominame'
,
},
{
name
:
'targetdecimal'
,
},
{
name
:
'amount'
,
},
{
name
:
'statuscode'
,
},
{
name
:
'amountdatatype'
,
},
{
name
:
'customrollupfieldinteger'
,
},
{
name
:
'owneridtype'
,
},
{
name
:
'updatedate'
,
},
{
name
:
'inprogressmoney'
,
},
{
name
:
'fiscalyear'
,
},
{
name
:
'fiscalperiod'
,
},
{
name
:
'title'
,
},
{
name
:
'stretchtargetdecimal'
,
},
{
name
:
'customrollupfielddecimal'
,
},
{
name
:
'consideronlygoalownersrecords'
,
},
{
name
:
'overriddencreatedon'
,
},
{
name
:
'actualmoney'
,
},
{
name
:
'rolluponlyfromchildgoals'
,
},
{
name
:
'goalenddate'
,
},
{
name
:
'createdate'
,
},
{
name
:
'customrollupfieldmoney'
,
},
{
name
:
'rolluperrorcode'
,
},
{
name
:
'versionnumber'
,
},
{
name
:
'stretchtargetmoney_base'
,
},
{
name
:
'treeid'
,
},
{
name
:
'entityimage'
,
},
{
name
:
'stretchtargetstring'
,
},
{
name
:
'stretchtargetinteger'
,
},
{
name
:
'fiscalperiodgoal'
,
},
{
name
:
'inprogressmoney_base'
,
},
{
name
:
'overridden'
,
},
{
name
:
'actualstring'
,
},
{
name
:
'actualinteger'
,
},
{
name
:
'goalowneridtype'
,
},
{
name
:
'importsequencenumber'
,
},
{
name
:
'goalownerid'
,
},
{
name
:
'computedtargetasoftodaydecimal'
,
},
{
name
:
'createman'
,
},
{
name
:
'targetstring'
,
},
{
name
:
'customrollupfieldstring'
,
},
{
name
:
'targetmoney'
,
},
{
name
:
'lastrolledupdate'
,
},
{
name
:
'updateman'
,
},
{
name
:
'override'
,
},
{
name
:
'computedtargetasoftodaymoney'
,
},
{
name
:
'owneridyominame'
,
},
{
name
:
'parentgoalid'
,
},
{
name
:
'rollupqueryinprogressmoneyid'
,
},
{
name
:
'rollupquerycustommoneyid'
,
},
{
name
:
'rollupqueryinprogressintegerid'
,
},
{
name
:
'rollupquerycustomdecimalid'
,
},
{
name
:
'rollupqueryactualmoneyid'
,
},
{
name
:
'rollupquerycustomintegerid'
,
},
{
name
:
'goalwitherrorid'
,
},
{
name
:
'metricid'
,
},
{
name
:
'rollupqueryinprogressdecimalid'
,
},
{
name
:
'rollupqueryactualintegerid'
,
},
{
name
:
'rollupqueryactualdecimalid'
,
},
{
name
:
'parentgoalname'
,
},
{
name
:
'metricname'
,
},
]
}
}
\ No newline at end of file
app_CRM/src/widgets/goal/state-tab-viewtabviewpanel2-tabviewpanel/state-tab-viewtabviewpanel2-tabviewpanel-service.ts
0 → 100644
浏览文件 @
d77f3430
import
{
Http
}
from
'@/utils'
;
import
ControlService
from
'@/widgets/control-service'
;
/**
* StateTabViewtabviewpanel2 部件服务对象
*
* @export
* @class StateTabViewtabviewpanel2Service
*/
export
default
class
StateTabViewtabviewpanel2Service
extends
ControlService
{
}
\ No newline at end of file
app_CRM/src/widgets/goal/state-tab-viewtabviewpanel2-tabviewpanel/state-tab-viewtabviewpanel2-tabviewpanel.html
0 → 100644
浏览文件 @
d77f3430
<div
class=
'tabviewpanel'
v-if=
'isActivied'
>
<goal-grid-view
class=
'viewcontainer2'
:viewdata=
"viewdata"
:viewparam=
"viewparam"
@
viewload=
"viewDatasChange($event)"
:viewDefaultUsage=
"false"
:viewUsage=
"7"
:expActive=
"expActive"
/>
</div>
\ No newline at end of file
app_CRM/src/widgets/goal/state-tab-viewtabviewpanel2-tabviewpanel/state-tab-viewtabviewpanel2-tabviewpanel.vue
0 → 100644
浏览文件 @
d77f3430
<
template
src=
"./state-tab-viewtabviewpanel2-tabviewpanel.html"
/>
<script
lang=
'tsx'
>
import
{ Component } from 'vue-property-decorator';
import { VueLifeCycleProcessing } from '@/studio-core';
import { StateTabViewtabviewpanel2TabviewpanelBase } from './state-tab-viewtabviewpanel2-tabviewpanel-base';
/**
* tabviewpanel2部件
*
* @export
* @class StateTabViewtabviewpanel2Tabviewpanel
* @extends {StateTabViewtabviewpanel2TabviewpanelBase}
*/
@Component({
components: {
}
})
@VueLifeCycleProcessing()
export default class StateTabViewtabviewpanel2Tabviewpanel extends StateTabViewtabviewpanel2TabviewpanelBase { }
</script>
app_CRM/src/widgets/lead/qualification-form/qualification-form-base.tsx
浏览文件 @
d77f3430
...
...
@@ -84,7 +84,7 @@ export class QualificationEditFormBase extends EditFormControlBase {
* @memberof QualificationEditFormBase
*/
public
detailsModel
:
any
=
{
group1
:
new
FormGroupPanelModel
({
caption
:
'潜在顾客基本信息'
,
detailType
:
'GROUPPANEL'
,
name
:
'group1'
,
visible
:
true
,
isShowCaption
:
tru
e
,
form
:
this
,
uiActionGroup
:
{
caption
:
''
,
langbase
:
'entities.lead.qualification_form'
,
extractMode
:
'ITEM'
,
details
:
[]
}
}),
group1
:
new
FormGroupPanelModel
({
caption
:
'潜在顾客基本信息'
,
detailType
:
'GROUPPANEL'
,
name
:
'group1'
,
visible
:
true
,
isShowCaption
:
fals
e
,
form
:
this
,
uiActionGroup
:
{
caption
:
''
,
langbase
:
'entities.lead.qualification_form'
,
extractMode
:
'ITEM'
,
details
:
[]
}
}),
formpage1
:
new
FormPageModel
({
caption
:
'基本信息'
,
detailType
:
'FORMPAGE'
,
name
:
'formpage1'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
}),
...
...
app_CRM/src/widgets/lead/qualification-form/qualification-form.html
浏览文件 @
d77f3430
...
...
@@ -3,7 +3,7 @@
<row
>
<i-col
v-show=
"detailsModel.group1.visible"
:style=
"{}"
:lg=
"{ span: 24, offset: 0 }"
>
<app-form-group
layoutType=
"TABLE_24COL"
titleStyle=
""
class=
''
:uiActionGroup=
"detailsModel.group1.uiActionGroup"
@
groupuiactionclick=
"groupUIActionClick($event)"
:caption=
"$t('entities.lead.qualification_form.details.group1')"
:isShowCaption=
"
tru
e"
uiStyle=
"DEFAULT"
:titleBarCloseMode=
"0"
:isInfoGroupMode=
"false"
>
<app-form-group
layoutType=
"TABLE_24COL"
titleStyle=
""
class=
''
:uiActionGroup=
"detailsModel.group1.uiActionGroup"
@
groupuiactionclick=
"groupUIActionClick($event)"
:caption=
"$t('entities.lead.qualification_form.details.group1')"
:isShowCaption=
"
fals
e"
uiStyle=
"DEFAULT"
:titleBarCloseMode=
"0"
:isInfoGroupMode=
"false"
>
<row>
<i-col
v-show=
"detailsModel.parentcontactname.visible"
:style=
"{}"
:lg=
"{ span: 24, offset: 0 }"
>
<app-form-item
name=
'parentcontactname'
:itemRules=
"this.rules.parentcontactname"
class=
''
:caption=
"$t('entities.lead.qualification_form.details.parentcontactname')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.parentcontactname.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
...
...
businesscentral-app/businesscentral-app-website/pom.xml
0 → 100644
浏览文件 @
d77f3430
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<artifactId>
businesscentral-app
</artifactId>
<groupId>
cn.ibizlab.businesscentral
</groupId>
<version>
1.0.0.0
</version>
</parent>
<artifactId>
businesscentral-app-website
</artifactId>
<name>
Businesscentral Gateway WebSite
</name>
<description>
Businesscentral WebSite
</description>
<dependencies>
<dependency>
<groupId>
cn.ibizlab.businesscentral
</groupId>
<artifactId>
businesscentral-util
</artifactId>
<version>
${project.version}
</version>
</dependency>
</dependencies>
<properties>
<docker.image.prefix>
registry.cn-shanghai.aliyuncs.com/ibizsys
</docker.image.prefix>
</properties>
<profiles>
<profile>
<id>
website
</id>
<build>
<resources>
<resource>
<directory>
${basedir}/src/main/webapp
</directory>
<!--注意此次必须要放在此目录下才能被访问到 -->
<targetPath>
META-INF/resources
</targetPath>
<includes>
<include>
**/**
</include>
</includes>
</resource>
<resource>
<directory>
${basedir}/src/main/resources
</directory>
<includes>
<include>
**/**
</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>
org.codehaus.mojo
</groupId>
<artifactId>
exec-maven-plugin
</artifactId>
<version>
1.6.0
</version>
<executions>
<execution>
<id>
exec-yarn-run-install
</id>
<phase>
prepare-package
</phase>
<goals>
<goal>
exec
</goal>
</goals>
<configuration>
<executable>
yarn
</executable>
<workingDirectory>
../../app_WebSite
</workingDirectory>
</configuration>
</execution>
<execution>
<id>
exec-yarn-run-build
</id>
<phase>
prepare-package
</phase>
<goals>
<goal>
exec
</goal>
</goals>
<configuration>
<executable>
yarn
</executable>
<arguments>
<argument>
build
</argument>
</arguments>
<workingDirectory>
../../app_WebSite
</workingDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<configuration>
<finalName>
businesscentral-app-website
</finalName>
<jvmArguments>
-Dfile.encoding=UTF-8
</jvmArguments>
<mainClass>
cn.ibizlab.businesscentral.website.WebSiteApplication
</mainClass>
<outputDirectory>
../../
</outputDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>
repackage
</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>
com.spotify
</groupId>
<artifactId>
docker-maven-plugin
</artifactId>
<version>
0.4.13
</version>
<configuration>
<serverId>
ibiz-dev
</serverId>
<imageName>
${docker.image.prefix}/${project.artifactId}:latest
</imageName>
<dockerDirectory>
${project.basedir}/src/main/docker
</dockerDirectory>
<resources>
<resource>
<targetPath>
/
</targetPath>
<directory>
../../
</directory>
<include>
${project.artifactId}.jar
</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
businesscentral-app/businesscentral-app-website/src/main/docker/Dockerfile
0 → 100644
浏览文件 @
d77f3430
FROM
openjdk:8-jre-alpine
ENV
SPRING_OUTPUT_ANSI_ENABLED=ALWAYS \
IBIZ_SLEEP=0 \
JAVA_OPTS=""
CMD
echo "The application will start in ${IBIZ_SLEEP}s..." && \
sleep ${IBIZ_SLEEP} && \
java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /businesscentral-app-website.jar
EXPOSE
8080
ADD
businesscentral-app-website.jar /businesscentral-app-website.jar
businesscentral-app/businesscentral-app-website/src/main/docker/businesscentral-app-website.yaml
0 → 100644
浏览文件 @
d77f3430
version
:
"
3.2"
services
:
businesscentral-app-website
:
image
:
registry.cn-shanghai.aliyuncs.com/ibizsys/businesscentral-app-website:latest
ports
:
-
"
8080:8080"
networks
:
-
agent_network
deploy
:
resources
:
limits
:
memory
:
800M
reservations
:
memory
:
400M
mode
:
replicated
replicas
:
1
volumes
:
-
"
nfs:/app/file"
volumes
:
nfs
:
driver
:
local
driver_opts
:
type
:
"
nfs"
o
:
"
addr=172.16.240.109,rw"
device
:
"
:/nfs"
networks
:
agent_network
:
driver
:
overlay
attachable
:
true
businesscentral-app/businesscentral-app-website/src/main/java/cn/ibizlab/businesscentral/website/WebSiteApplication.java
0 → 100644
浏览文件 @
d77f3430
package
cn
.
ibizlab
.
businesscentral
.
website
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.cloud.client.discovery.EnableDiscoveryClient
;
import
org.springframework.cloud.netflix.zuul.EnableZuulProxy
;
import
org.springframework.cloud.openfeign.EnableFeignClients
;
import
org.springframework.cloud.openfeign.FeignClientsConfiguration
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.web.method.support.HandlerMethodArgumentResolver
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
;
import
java.util.List
;
@Slf4j
@Import
({
FeignClientsConfiguration
.
class
})
@EnableDiscoveryClient
@Configuration
@EnableFeignClients
(
basePackages
=
{
"cn.ibizlab.businesscentral"
})
@EnableZuulProxy
@ComponentScan
(
basePackages
=
{
"cn.ibizlab.businesscentral.website"
,
"cn.ibizlab.businesscentral.util"
})
@MapperScan
(
"cn.ibizlab.businesscentral.*.mapper"
)
@SpringBootApplication
(
exclude
=
{
org
.
springframework
.
boot
.
autoconfigure
.
security
.
servlet
.
SecurityAutoConfiguration
.
class
,
org
.
springframework
.
boot
.
autoconfigure
.
mongo
.
MongoAutoConfiguration
.
class
,
})
public
class
WebSiteApplication
extends
WebMvcConfigurerAdapter
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
WebSiteApplication
.
class
,
args
);
}
@Override
public
void
addArgumentResolvers
(
List
<
HandlerMethodArgumentResolver
>
argumentResolvers
)
{
super
.
addArgumentResolvers
(
argumentResolvers
);
argumentResolvers
.
add
(
new
cn
.
ibizlab
.
businesscentral
.
util
.
web
.
SearchContextHandlerMethodArgumentResolver
());
}
}
businesscentral-app/businesscentral-app-website/src/main/java/cn/ibizlab/businesscentral/website/config/WebSiteSecurityConfig.java
0 → 100644
浏览文件 @
d77f3430
package
cn
.
ibizlab
.
businesscentral
.
website
.
config
;
import
cn.ibizlab.businesscentral.util.security.AuthenticationEntryPoint
;
import
cn.ibizlab.businesscentral.util.security.AuthorizationTokenFilter
;
import
cn.ibizlab.businesscentral.util.service.AuthenticationUserService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.http.HttpMethod
;
import
org.springframework.security.authentication.AuthenticationManager
;
import
org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder
;
import
org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity
;
import
org.springframework.security.config.annotation.web.builders.HttpSecurity
;
import
org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
;
import
org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter
;
import
org.springframework.security.config.core.GrantedAuthorityDefaults
;
import
org.springframework.security.config.http.SessionCreationPolicy
;
import
org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
;
import
org.springframework.security.crypto.password.PasswordEncoder
;
import
org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter
;
import
org.springframework.context.annotation.Profile
;
import
org.springframework.beans.factory.annotation.Qualifier
;
@Profile
(
"website-prod"
)
@Configuration
@EnableWebSecurity
public
class
WebSiteSecurityConfig
extends
WebSecurityConfigurerAdapter
{
@Autowired
private
AuthenticationEntryPoint
unauthorizedHandler
;
@Autowired
private
AuthenticationUserService
userDetailsService
;
/**
* 自定义基于JWT的安全过滤器
*/
@Autowired
AuthorizationTokenFilter
authenticationTokenFilter
;
@Value
(
"${ibiz.auth.path:v7/login}"
)
private
String
loginPath
;
@Value
(
"${ibiz.auth.logoutpath:v7/logout}"
)
private
String
logoutPath
;
@Value
(
"${ibiz.file.uploadpath:ibizutil/upload}"
)
private
String
uploadpath
;
@Value
(
"${ibiz.file.downloadpath:ibizutil/download}"
)
private
String
downloadpath
;
@Value
(
"${ibiz.file.previewpath:ibizutil/preview}"
)
private
String
previewpath
;
@Autowired
public
void
configureGlobal
(
AuthenticationManagerBuilder
auth
)
throws
Exception
{
auth
.
userDetailsService
(
userDetailsService
)
.
passwordEncoder
(
passwordEncoderBean
());
}
@Bean
GrantedAuthorityDefaults
grantedAuthorityDefaults
()
{
// Remove the ROLE_ prefix
return
new
GrantedAuthorityDefaults
(
""
);
}
@Bean
public
PasswordEncoder
passwordEncoderBean
()
{
return
new
BCryptPasswordEncoder
();
}
@Bean
@Override
public
AuthenticationManager
authenticationManagerBean
()
throws
Exception
{
return
super
.
authenticationManagerBean
();
}
@Override
protected
void
configure
(
HttpSecurity
httpSecurity
)
throws
Exception
{
httpSecurity
// 禁用 CSRF
.
csrf
().
disable
()
// 授权异常
.
exceptionHandling
().
authenticationEntryPoint
(
unauthorizedHandler
).
and
()
// 不创建会话
.
sessionManagement
().
sessionCreationPolicy
(
SessionCreationPolicy
.
STATELESS
).
and
()
// 过滤请求
.
authorizeRequests
()
.
antMatchers
(
HttpMethod
.
GET
,
"/*.html"
,
"/**/*.html"
,
"/**/*.css"
,
"/**/*.js"
,
"/**/*.ico"
,
"/**/assets/**"
,
"/**/css/**"
,
"/**/fonts/**"
,
"/**/js/**"
,
"/**/img/**"
,
"/"
).
permitAll
()
//放行登录请求
.
antMatchers
(
HttpMethod
.
POST
,
"/"
+
loginPath
).
permitAll
()
//放行注销请求
.
antMatchers
(
HttpMethod
.
GET
,
"/"
+
logoutPath
).
permitAll
()
// 文件操作
.
antMatchers
(
"/"
+
downloadpath
+
"/**"
).
permitAll
()
.
antMatchers
(
"/"
+
uploadpath
).
permitAll
()
.
antMatchers
(
"/"
+
previewpath
+
"/**"
).
permitAll
()
// 所有请求都需要认证
.
anyRequest
().
authenticated
()
// 防止iframe 造成跨域
.
and
().
headers
().
frameOptions
().
disable
();
httpSecurity
.
addFilterBefore
(
authenticationTokenFilter
,
UsernamePasswordAuthenticationFilter
.
class
);
}
}
businesscentral-app/businesscentral-app-website/src/main/resources/application-website-dev.yml
0 → 100644
浏览文件 @
d77f3430
server
:
port
:
8080
\ No newline at end of file
businesscentral-app/businesscentral-app-website/src/main/resources/application-website-prod.yml
0 → 100644
浏览文件 @
d77f3430
server
:
port
:
10324
#Log配置
logging
:
level
:
cn.ibizlab.businesscentral
:
info
#zuul网关路由设置
zuul
:
routes
:
websiteresource
:
path
:
/websiteresources/**
serviceId
:
ibizbusinesscentral-centralapi
stripPrefix
:
false
website
:
path
:
/websites/**
serviceId
:
ibizbusinesscentral-centralapi
stripPrefix
:
false
websitecontent
:
path
:
/websitecontents/**
serviceId
:
ibizbusinesscentral-centralapi
stripPrefix
:
false
websitechannel
:
path
:
/websitechannels/**
serviceId
:
ibizbusinesscentral-centralapi
stripPrefix
:
false
sensitive-headers
:
-
Cookie,Set-Cookie,Authorization
businesscentral-app/businesscentral-app-website/src/main/resources/application.yml
0 → 100644
浏览文件 @
d77f3430
spring
:
profiles
:
include
:
sys , website-prod
application
:
name
:
ibizbusinesscentral-website
businesscentral-app/businesscentral-app-website/src/main/resources/logback-spring.xml
0 → 100644
浏览文件 @
d77f3430
<?xml version="1.0" encoding="UTF-8"?>
<configuration
debug=
"false"
>
<property
name=
"LOG_PATH"
value=
"logs"
/>
<property
name=
"LOG_PATTERN"
value=
"%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %-40.40logger{39} : %msg%n"
/>
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule
conversionWord=
"clr"
converterClass=
"org.springframework.boot.logging.logback.ColorConverter"
/>
<conversionRule
conversionWord=
"wex"
converterClass=
"org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"
/>
<conversionRule
conversionWord=
"wEx"
converterClass=
"org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"
/>
<!-- 彩色日志格式 -->
<property
name=
"LOG_PATTERN2"
value=
"${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr([${LOG_LEVEL_PATTERN:-%5p}]) %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"
/>
<!-- 控制台输出 -->
<appender
name=
"Console"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<encoder
class=
"ch.qos.logback.classic.encoder.PatternLayoutEncoder"
>
<pattern>
${LOG_PATTERN}
</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender
name=
"file"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<!--日志文件输出的文件名-->
<FileNamePattern>
${LOG_PATH}/ibizbusinesscentral-website.%d{yyyy-MM-dd}.log
</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>
30
</MaxHistory>
</rollingPolicy>
<encoder
class=
"ch.qos.logback.classic.encoder.PatternLayoutEncoder"
>
<pattern>
${LOG_PATTERN}
</pattern>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"
>
<MaxFileSize>
100MB
</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- 日志输出级别 -->
<root
level=
"INFO"
>
<appender-ref
ref=
"Console"
/>
<appender-ref
ref=
"file"
/>
</root>
</configuration>
businesscentral-app/pom.xml
浏览文件 @
d77f3430
...
...
@@ -16,6 +16,7 @@
<modules>
<module>
businesscentral-app-crm
</module>
<module>
businesscentral-app-website
</module>
</modules>
<dependencies>
...
...
businesscentral-boot/pom.xml
浏览文件 @
d77f3430
...
...
@@ -29,6 +29,11 @@
<artifactId>
businesscentral-app-crm
</artifactId>
<version>
${project.version}
</version>
</dependency>
<dependency>
<groupId>
cn.ibizlab.businesscentral
</groupId>
<artifactId>
businesscentral-app-website
</artifactId>
<version>
${project.version}
</version>
</dependency>
</dependencies>
<!--由于boot是通过dependency来关联所有子项目,页面和配置等信息都存在与子项目中,
...
...
businesscentral-boot/src/main/resources/application.yml
浏览文件 @
d77f3430
spring
:
profiles
:
include
:
sys , crm-dev, centralapi-dev, dev
include
:
sys , crm-dev,
website-dev,
centralapi-dev, dev
application
:
name
:
ibizbusinesscentral
main
:
...
...
businesscentral-core/src/main/resources/liquibase/h2_table.xml
浏览文件 @
d77f3430
此差异已折叠。
点击以展开。
businesscentral-core/src/main/resources/permission/systemResource.json
浏览文件 @
d77f3430
...
...
@@ -417,6 +417,38 @@
"sysmoudle"
:{
"id"
:
"BASE"
,
"name"
:
"Base"
},
"dedataset"
:[{
"id"
:
"Default"
,
"name"
:
"DEFAULT"
}],
"deaction"
:[{
"id"
:
"Create"
,
"name"
:
"Create"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Update"
,
"name"
:
"Update"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Remove"
,
"name"
:
"Remove"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Get"
,
"name"
:
"Get"
,
"type"
:
"BUILTIN"
},{
"id"
:
"GetDraft"
,
"name"
:
"GetDraft"
,
"type"
:
"BUILTIN"
},{
"id"
:
"CheckKey"
,
"name"
:
"CheckKey"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Save"
,
"name"
:
"Save"
,
"type"
:
"BUILTIN"
}],
"datascope"
:[{
"id"
:
"all"
,
"name"
:
"全部数据"
},
{
"id"
:
"createman"
,
"name"
:
"创建人"
}]
}
,
{
"dename"
:
"WebSiteResource"
,
"delogicname"
:
"网站资源"
,
"sysmoudle"
:{
"id"
:
"WEBSITE"
,
"name"
:
"WebSite"
},
"dedataset"
:[{
"id"
:
"Default"
,
"name"
:
"DEFAULT"
}],
"deaction"
:[{
"id"
:
"Create"
,
"name"
:
"Create"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Update"
,
"name"
:
"Update"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Remove"
,
"name"
:
"Remove"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Get"
,
"name"
:
"Get"
,
"type"
:
"BUILTIN"
},{
"id"
:
"GetDraft"
,
"name"
:
"GetDraft"
,
"type"
:
"BUILTIN"
},{
"id"
:
"CheckKey"
,
"name"
:
"CheckKey"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Save"
,
"name"
:
"Save"
,
"type"
:
"BUILTIN"
}],
"datascope"
:[{
"id"
:
"all"
,
"name"
:
"全部数据"
},
{
"id"
:
"createman"
,
"name"
:
"创建人"
}]
}
,
{
"dename"
:
"WebSite"
,
"delogicname"
:
"网站"
,
"sysmoudle"
:{
"id"
:
"WEBSITE"
,
"name"
:
"WebSite"
},
"dedataset"
:[{
"id"
:
"Default"
,
"name"
:
"DEFAULT"
}],
"deaction"
:[{
"id"
:
"Create"
,
"name"
:
"Create"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Update"
,
"name"
:
"Update"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Remove"
,
"name"
:
"Remove"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Get"
,
"name"
:
"Get"
,
"type"
:
"BUILTIN"
},{
"id"
:
"GetDraft"
,
"name"
:
"GetDraft"
,
"type"
:
"BUILTIN"
},{
"id"
:
"CheckKey"
,
"name"
:
"CheckKey"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Save"
,
"name"
:
"Save"
,
"type"
:
"BUILTIN"
}],
"datascope"
:[{
"id"
:
"all"
,
"name"
:
"全部数据"
},
{
"id"
:
"createman"
,
"name"
:
"创建人"
}]
}
,
{
"dename"
:
"WebSiteContent"
,
"delogicname"
:
"网站内容"
,
"sysmoudle"
:{
"id"
:
"WEBSITE"
,
"name"
:
"WebSite"
},
"dedataset"
:[{
"id"
:
"Default"
,
"name"
:
"DEFAULT"
}],
"deaction"
:[{
"id"
:
"Create"
,
"name"
:
"Create"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Update"
,
"name"
:
"Update"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Remove"
,
"name"
:
"Remove"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Get"
,
"name"
:
"Get"
,
"type"
:
"BUILTIN"
},{
"id"
:
"GetDraft"
,
"name"
:
"GetDraft"
,
"type"
:
"BUILTIN"
},{
"id"
:
"CheckKey"
,
"name"
:
"CheckKey"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Save"
,
"name"
:
"Save"
,
"type"
:
"BUILTIN"
}],
"datascope"
:[{
"id"
:
"all"
,
"name"
:
"全部数据"
},
{
"id"
:
"createman"
,
"name"
:
"创建人"
}]
}
,
{
"dename"
:
"WebSiteChannel"
,
"delogicname"
:
"网站频道"
,
"sysmoudle"
:{
"id"
:
"WEBSITE"
,
"name"
:
"WebSite"
},
"dedataset"
:[{
"id"
:
"Default"
,
"name"
:
"DEFAULT"
}],
"deaction"
:[{
"id"
:
"Create"
,
"name"
:
"Create"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Update"
,
"name"
:
"Update"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Remove"
,
"name"
:
"Remove"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Get"
,
"name"
:
"Get"
,
"type"
:
"BUILTIN"
},{
"id"
:
"GetDraft"
,
"name"
:
"GetDraft"
,
"type"
:
"BUILTIN"
},{
"id"
:
"CheckKey"
,
"name"
:
"CheckKey"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Save"
,
"name"
:
"Save"
,
"type"
:
"BUILTIN"
}],
"datascope"
:[{
"id"
:
"all"
,
"name"
:
"全部数据"
},
{
"id"
:
"createman"
,
"name"
:
"创建人"
}]
}
],
...
...
@@ -425,7 +457,13 @@
{
"appid"
:
"CRM"
,
"appname"
:
"客户管理"
,
"appmenu"
:[{
"menuid"
:
"Central"
,
"menuname"
:
"Central"
,
"menuitem"
:[{
"id"
:
"user_menus"
,
"name"
:
"用户菜单"
,
"items"
:[{
"id"
:
"menuitem3"
,
"name"
:
"设置"
},{
"id"
:
"menuitem4"
,
"name"
:
"注销"
}]},{
"id"
:
"top_menus"
,
"name"
:
"顶部菜单"
},{
"id"
:
"left_exp"
,
"name"
:
"左侧菜单"
,
"items"
:[{
"id"
:
"menuitem17"
,
"name"
:
"主页"
},{
"id"
:
"menuitem18"
,
"name"
:
"最近"
},{
"id"
:
"menuitem19"
,
"name"
:
"固定"
},{
"id"
:
"menuitem16"
,
"name"
:
"我的工作"
,
"items"
:[{
"id"
:
"menuitem1"
,
"name"
:
"仪表盘"
},{
"id"
:
"menuitem2"
,
"name"
:
"活动"
}]},{
"id"
:
"menuitem20"
,
"name"
:
"客户"
,
"items"
:[{
"id"
:
"menuitem5"
,
"name"
:
"客户"
},{
"id"
:
"menuitem7"
,
"name"
:
"联系人"
}]},{
"id"
:
"menuitem21"
,
"name"
:
"销售"
,
"items"
:[{
"id"
:
"menuitem8"
,
"name"
:
"潜在客户"
},{
"id"
:
"menuitem9"
,
"name"
:
"商机"
},{
"id"
:
"menuitem10"
,
"name"
:
"竞争对手"
}]},{
"id"
:
"menuitem22"
,
"name"
:
"宣传资料"
,
"items"
:[{
"id"
:
"menuitem11"
,
"name"
:
"报价单"
},{
"id"
:
"menuitem12"
,
"name"
:
"订单"
},{
"id"
:
"menuitem13"
,
"name"
:
"发票"
},{
"id"
:
"menuitem6"
,
"name"
:
"产品"
},{
"id"
:
"menuitem14"
,
"name"
:
"销售宣传资料"
}]},{
"id"
:
"menuitem23"
,
"name"
:
"市场营销"
,
"items"
:[{
"id"
:
"menuitem30"
,
"name"
:
"市场活动"
},{
"id"
:
"menuitem15"
,
"name"
:
"市场营销列表"
},{
"id"
:
"menuitem29"
,
"name"
:
"快速市场活动"
}]},{
"id"
:
"menuitem24"
,
"name"
:
"绩效"
,
"items"
:[{
"id"
:
"menuitem25"
,
"name"
:
"目标"
},{
"id"
:
"menuitem31"
,
"name"
:
"目标度量"
},{
"id"
:
"menuitem26"
,
"name"
:
"预测"
}]},{
"id"
:
"menuitem27"
,
"name"
:
"服务"
,
"items"
:[{
"id"
:
"menuitem28"
,
"name"
:
"服务案例"
},{
"id"
:
"menuitem32"
,
"name"
:
"知识文章"
}]}]},{
"id"
:
"bottom_exp"
,
"name"
:
"底部内容"
},{
"id"
:
"footer_left"
,
"name"
:
"底部左侧"
},{
"id"
:
"footer_center"
,
"name"
:
"底部中间"
},{
"id"
:
"footer_right"
,
"name"
:
"底部右侧"
}]
}]
"appmenu"
:[{
"menuid"
:
"Central"
,
"menuname"
:
"Central"
,
"menuitem"
:[{
"id"
:
"user_menus"
,
"name"
:
"用户菜单"
,
"items"
:[{
"id"
:
"menuitem3"
,
"name"
:
"设置"
},{
"id"
:
"menuitem4"
,
"name"
:
"注销"
}]},{
"id"
:
"top_menus"
,
"name"
:
"顶部菜单"
},{
"id"
:
"left_exp"
,
"name"
:
"左侧菜单"
,
"items"
:[{
"id"
:
"menuitem17"
,
"name"
:
"主页"
},{
"id"
:
"menuitem18"
,
"name"
:
"最近"
},{
"id"
:
"menuitem19"
,
"name"
:
"固定"
},{
"id"
:
"menuitem16"
,
"name"
:
"我的工作"
,
"items"
:[{
"id"
:
"menuitem1"
,
"name"
:
"仪表盘"
},{
"id"
:
"menuitem2"
,
"name"
:
"活动"
}]},{
"id"
:
"menuitem20"
,
"name"
:
"客户"
,
"items"
:[{
"id"
:
"menuitem5"
,
"name"
:
"客户"
},{
"id"
:
"menuitem7"
,
"name"
:
"联系人"
}]},{
"id"
:
"menuitem21"
,
"name"
:
"销售"
,
"items"
:[{
"id"
:
"menuitem8"
,
"name"
:
"潜在客户"
},{
"id"
:
"menuitem9"
,
"name"
:
"商机"
},{
"id"
:
"menuitem10"
,
"name"
:
"竞争对手"
}]},{
"id"
:
"menuitem22"
,
"name"
:
"宣传资料"
,
"items"
:[{
"id"
:
"menuitem11"
,
"name"
:
"报价单"
},{
"id"
:
"menuitem12"
,
"name"
:
"订单"
},{
"id"
:
"menuitem13"
,
"name"
:
"发票"
},{
"id"
:
"menuitem6"
,
"name"
:
"产品"
},{
"id"
:
"menuitem14"
,
"name"
:
"销售宣传资料"
}]},{
"id"
:
"menuitem23"
,
"name"
:
"市场营销"
,
"items"
:[{
"id"
:
"menuitem30"
,
"name"
:
"市场活动"
},{
"id"
:
"menuitem15"
,
"name"
:
"市场营销列表"
},{
"id"
:
"menuitem29"
,
"name"
:
"快速市场活动"
}]},{
"id"
:
"menuitem24"
,
"name"
:
"绩效"
,
"items"
:[{
"id"
:
"menuitem25"
,
"name"
:
"目标"
},{
"id"
:
"menuitem31"
,
"name"
:
"目标度量"
},{
"id"
:
"menuitem26"
,
"name"
:
"预测"
},{
"id"
:
"menuitem33"
,
"name"
:
"目标分页"
}]},{
"id"
:
"menuitem27"
,
"name"
:
"服务"
,
"items"
:[{
"id"
:
"menuitem28"
,
"name"
:
"服务案例"
},{
"id"
:
"menuitem32"
,
"name"
:
"知识文章"
}]}]},{
"id"
:
"bottom_exp"
,
"name"
:
"底部内容"
},{
"id"
:
"footer_left"
,
"name"
:
"底部左侧"
},{
"id"
:
"footer_center"
,
"name"
:
"底部中间"
},{
"id"
:
"footer_right"
,
"name"
:
"底部右侧"
}]
}]
}
,
{
"appid"
:
"WebSite"
,
"appname"
:
"站点内容管理"
,
"appmenu"
:[{
"menuid"
:
"WebSite"
,
"menuname"
:
"WebSite"
,
"menuitem"
:[{
"id"
:
"user_menus"
,
"name"
:
"用户菜单"
,
"items"
:[{
"id"
:
"menuitem3"
,
"name"
:
"设置"
}]},{
"id"
:
"top_menus"
,
"name"
:
"顶部菜单"
},{
"id"
:
"left_exp"
,
"name"
:
"左侧菜单"
,
"items"
:[{
"id"
:
"menuitem17"
,
"name"
:
"站点管理"
},{
"id"
:
"menuitem1"
,
"name"
:
"站点频道"
},{
"id"
:
"menuitem5"
,
"name"
:
"站点内容"
},{
"id"
:
"menuitem2"
,
"name"
:
"站点资源"
}]},{
"id"
:
"bottom_exp"
,
"name"
:
"底部内容"
},{
"id"
:
"footer_left"
,
"name"
:
"底部左侧"
},{
"id"
:
"footer_center"
,
"name"
:
"底部中间"
},{
"id"
:
"footer_right"
,
"name"
:
"底部右侧"
}]
}]
}
]
}
businesscentral-provider/businesscentral-provider-centralapi/src/main/java/cn/ibizlab/businesscentral/centralapi/dto/WebSiteChannelDTO.java
0 → 100644
浏览文件 @
d77f3430
package
cn
.
ibizlab
.
businesscentral
.
centralapi
.
dto
;
import
java.sql.Timestamp
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.math.BigInteger
;
import
java.util.Map
;
import
java.util.HashMap
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
cn.ibizlab.businesscentral.util.domain.DTOBase
;
import
lombok.Data
;
/**
* 服务DTO对象[WebSiteChannelDTO]
*/
@Data
public
class
WebSiteChannelDTO
extends
DTOBase
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 属性 [WEBSITECHANNELID]
*
*/
@JSONField
(
name
=
"websitechannelid"
)
@JsonProperty
(
"websitechannelid"
)
private
String
websitechannelid
;
/**
* 属性 [CREATEMAN]
*
*/
@JSONField
(
name
=
"createman"
)
@JsonProperty
(
"createman"
)
private
String
createman
;
/**
* 属性 [WEBSITECHANNELNAME]
*
*/
@JSONField
(
name
=
"websitechannelname"
)
@JsonProperty
(
"websitechannelname"
)
private
String
websitechannelname
;
/**
* 属性 [UPDATEDATE]
*
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
locale
=
"zh"
,
timezone
=
"GMT+8"
)
@JSONField
(
name
=
"updatedate"
,
format
=
"yyyy-MM-dd HH:mm:ss"
)
@JsonProperty
(
"updatedate"
)
private
Timestamp
updatedate
;
/**
* 属性 [CREATEDATE]
*
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
locale
=
"zh"
,
timezone
=
"GMT+8"
)
@JSONField
(
name
=
"createdate"
,
format
=
"yyyy-MM-dd HH:mm:ss"
)
@JsonProperty
(
"createdate"
)
private
Timestamp
createdate
;
/**
* 属性 [UPDATEMAN]
*
*/
@JSONField
(
name
=
"updateman"
)
@JsonProperty
(
"updateman"
)
private
String
updateman
;
/**
* 属性 [WEBSITEID]
*
*/
@JSONField
(
name
=
"websiteid"
)
@JsonProperty
(
"websiteid"
)
private
String
websiteid
;
/**
* 设置 [WEBSITECHANNELNAME]
*/
public
void
setWebsitechannelname
(
String
websitechannelname
){
this
.
websitechannelname
=
websitechannelname
;
this
.
modify
(
"websitechannelname"
,
websitechannelname
);
}
/**
* 设置 [WEBSITEID]
*/
public
void
setWebsiteid
(
String
websiteid
){
this
.
websiteid
=
websiteid
;
this
.
modify
(
"websiteid"
,
websiteid
);
}
}
businesscentral-provider/businesscentral-provider-centralapi/src/main/java/cn/ibizlab/businesscentral/centralapi/dto/WebSiteContentDTO.java
0 → 100644
浏览文件 @
d77f3430
此差异已折叠。
点击以展开。
businesscentral-provider/businesscentral-provider-centralapi/src/main/java/cn/ibizlab/businesscentral/centralapi/dto/WebSiteDTO.java
0 → 100644
浏览文件 @
d77f3430
此差异已折叠。
点击以展开。
businesscentral-provider/businesscentral-provider-centralapi/src/main/java/cn/ibizlab/businesscentral/centralapi/dto/WebSiteResourceDTO.java
0 → 100644
浏览文件 @
d77f3430
此差异已折叠。
点击以展开。
businesscentral-provider/businesscentral-provider-centralapi/src/main/java/cn/ibizlab/businesscentral/centralapi/mapping/WebSiteChannelMapping.java
0 → 100644
浏览文件 @
d77f3430
package
cn
.
ibizlab
.
businesscentral
.
centralapi
.
mapping
;
import
org.mapstruct.*
;
import
cn.ibizlab.businesscentral.core.website.domain.WebSiteChannel
;
import
cn.ibizlab.businesscentral.centralapi.dto.WebSiteChannelDTO
;
import
cn.ibizlab.businesscentral.util.domain.MappingBase
;
import
org.mapstruct.factory.Mappers
;
@Mapper
(
componentModel
=
"spring"
,
uses
=
{},
nullValuePropertyMappingStrategy
=
NullValuePropertyMappingStrategy
.
IGNORE
,
nullValueCheckStrategy
=
NullValueCheckStrategy
.
ALWAYS
)
public
interface
WebSiteChannelMapping
extends
MappingBase
<
WebSiteChannelDTO
,
WebSiteChannel
>
{
}
businesscentral-provider/businesscentral-provider-centralapi/src/main/java/cn/ibizlab/businesscentral/centralapi/mapping/WebSiteContentMapping.java
0 → 100644
浏览文件 @
d77f3430
package
cn
.
ibizlab
.
businesscentral
.
centralapi
.
mapping
;
import
org.mapstruct.*
;
import
cn.ibizlab.businesscentral.core.website.domain.WebSiteContent
;
import
cn.ibizlab.businesscentral.centralapi.dto.WebSiteContentDTO
;
import
cn.ibizlab.businesscentral.util.domain.MappingBase
;
import
org.mapstruct.factory.Mappers
;
@Mapper
(
componentModel
=
"spring"
,
uses
=
{},
nullValuePropertyMappingStrategy
=
NullValuePropertyMappingStrategy
.
IGNORE
,
nullValueCheckStrategy
=
NullValueCheckStrategy
.
ALWAYS
)
public
interface
WebSiteContentMapping
extends
MappingBase
<
WebSiteContentDTO
,
WebSiteContent
>
{
}
businesscentral-provider/businesscentral-provider-centralapi/src/main/java/cn/ibizlab/businesscentral/centralapi/mapping/WebSiteMapping.java
0 → 100644
浏览文件 @
d77f3430
package
cn
.
ibizlab
.
businesscentral
.
centralapi
.
mapping
;
import
org.mapstruct.*
;
import
cn.ibizlab.businesscentral.core.website.domain.WebSite
;
import
cn.ibizlab.businesscentral.centralapi.dto.WebSiteDTO
;
import
cn.ibizlab.businesscentral.util.domain.MappingBase
;
import
org.mapstruct.factory.Mappers
;
@Mapper
(
componentModel
=
"spring"
,
uses
=
{},
nullValuePropertyMappingStrategy
=
NullValuePropertyMappingStrategy
.
IGNORE
,
nullValueCheckStrategy
=
NullValueCheckStrategy
.
ALWAYS
)
public
interface
WebSiteMapping
extends
MappingBase
<
WebSiteDTO
,
WebSite
>
{
}
businesscentral-provider/businesscentral-provider-centralapi/src/main/java/cn/ibizlab/businesscentral/centralapi/mapping/WebSiteResourceMapping.java
0 → 100644
浏览文件 @
d77f3430
package
cn
.
ibizlab
.
businesscentral
.
centralapi
.
mapping
;
import
org.mapstruct.*
;
import
cn.ibizlab.businesscentral.core.website.domain.WebSiteResource
;
import
cn.ibizlab.businesscentral.centralapi.dto.WebSiteResourceDTO
;
import
cn.ibizlab.businesscentral.util.domain.MappingBase
;
import
org.mapstruct.factory.Mappers
;
@Mapper
(
componentModel
=
"spring"
,
uses
=
{},
nullValuePropertyMappingStrategy
=
NullValuePropertyMappingStrategy
.
IGNORE
,
nullValueCheckStrategy
=
NullValueCheckStrategy
.
ALWAYS
)
public
interface
WebSiteResourceMapping
extends
MappingBase
<
WebSiteResourceDTO
,
WebSiteResource
>
{
}
businesscentral-provider/businesscentral-provider-centralapi/src/main/java/cn/ibizlab/businesscentral/centralapi/rest/WebSiteChannelResource.java
0 → 100644
浏览文件 @
d77f3430
此差异已折叠。
点击以展开。
businesscentral-provider/businesscentral-provider-centralapi/src/main/java/cn/ibizlab/businesscentral/centralapi/rest/WebSiteContentResource.java
0 → 100644
浏览文件 @
d77f3430
此差异已折叠。
点击以展开。
businesscentral-provider/businesscentral-provider-centralapi/src/main/java/cn/ibizlab/businesscentral/centralapi/rest/WebSiteResource.java
0 → 100644
浏览文件 @
d77f3430
此差异已折叠。
点击以展开。
businesscentral-provider/businesscentral-provider-centralapi/src/main/java/cn/ibizlab/businesscentral/centralapi/rest/WebSiteResourceResource.java
0 → 100644
浏览文件 @
d77f3430
此差异已折叠。
点击以展开。
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录