Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
功
功能演示系统
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
示例
功能演示系统
提交
8c837340
提交
8c837340
编写于
12月 01, 2020
作者:
ibizdev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ShineKOT 发布系统代码 [后台服务,演示应用]
上级
11c65b51
变更
22
隐藏空白字符变更
内嵌
并排
正在显示
22 个修改的文件
包含
2277 行增加
和
31 行删除
+2277
-31
en-US.ts
app_Web/src/locale/lang/en-US.ts
+1
-0
zh-CN.ts
app_Web/src/locale/lang/zh-CN.ts
+1
-0
ibizbook_en_US.ts
...Web/src/locale/lanres/entities/ibizbook/ibizbook_en_US.ts
+1
-1
ibizbook_zh_CN.ts
...Web/src/locale/lanres/entities/ibizbook/ibizbook_zh_CN.ts
+1
-1
main-menu-appmenu.ts
app_Web/src/mock/app/main-menu-appmenu/main-menu-appmenu.ts
+18
-0
ibizorder-detail-chart-view-base.vue
...er-detail-chart-view/ibizorder-detail-chart-view-base.vue
+730
-0
ibizorder-detail-chart-view.less
...zorder-detail-chart-view/ibizorder-detail-chart-view.less
+11
-0
ibizorder-detail-chart-view.vue
...izorder-detail-chart-view/ibizorder-detail-chart-view.vue
+24
-0
page-register.ts
app_Web/src/pages/sample/index/page-register.ts
+1
-0
router.ts
app_Web/src/pages/sample/index/router.ts
+27
-0
state.ts
app_Web/src/store/modules/view-action/state.ts
+10
-0
main-menu-appmenu-base.vue
.../widgets/app/main-menu-appmenu/main-menu-appmenu-base.vue
+26
-0
main-menu-appmenu-model.ts
.../widgets/app/main-menu-appmenu/main-menu-appmenu-model.ts
+19
-0
guide-borrow-form-form-base.vue
...ok/guide-borrow-form-form/guide-borrow-form-form-base.vue
+4
-2
guide-view-form-form-base.vue
...izbook/guide-view-form-form/guide-view-form-form-base.vue
+23
-21
guide-view-form-form-model.ts
...izbook/guide-view-form-form/guide-view-form-form-model.ts
+5
-5
histogram-chart-base.vue
...ibizorder-detail/histogram-chart/histogram-chart-base.vue
+1237
-0
histogram-chart-model.ts
...ibizorder-detail/histogram-chart/histogram-chart-model.ts
+36
-0
histogram-chart-service.ts
...izorder-detail/histogram-chart/histogram-chart-service.ts
+72
-0
histogram-chart.less
...ets/ibizorder-detail/histogram-chart/histogram-chart.less
+15
-0
histogram-chart.vue
...gets/ibizorder-detail/histogram-chart/histogram-chart.vue
+14
-0
systemResource.json
demo-core/src/main/resources/permission/systemResource.json
+1
-1
未找到文件。
app_Web/src/locale/lang/en-US.ts
浏览文件 @
8c837340
...
@@ -251,6 +251,7 @@ export default {
...
@@ -251,6 +251,7 @@ export default {
menuitem118
:
"编辑视图(分页关系)"
,
menuitem118
:
"编辑视图(分页关系)"
,
menuitem125
:
"数据看板"
,
menuitem125
:
"数据看板"
,
menuitem126
:
"实体数据看板"
,
menuitem126
:
"实体数据看板"
,
menuitem136
:
"订单明细柱状图"
,
menuitem127
:
"导航视图"
,
menuitem127
:
"导航视图"
,
menuitem128
:
"表格导航"
,
menuitem128
:
"表格导航"
,
menuitem129
:
"选项操作"
,
menuitem129
:
"选项操作"
,
...
...
app_Web/src/locale/lang/zh-CN.ts
浏览文件 @
8c837340
...
@@ -251,6 +251,7 @@ export default {
...
@@ -251,6 +251,7 @@ export default {
menuitem118
:
"编辑视图(分页关系)"
,
menuitem118
:
"编辑视图(分页关系)"
,
menuitem125
:
"数据看板"
,
menuitem125
:
"数据看板"
,
menuitem126
:
"实体数据看板"
,
menuitem126
:
"实体数据看板"
,
menuitem136
:
"订单明细柱状图"
,
menuitem127
:
"导航视图"
,
menuitem127
:
"导航视图"
,
menuitem128
:
"表格导航"
,
menuitem128
:
"表格导航"
,
menuitem129
:
"选项操作"
,
menuitem129
:
"选项操作"
,
...
...
app_Web/src/locale/lanres/entities/ibizbook/ibizbook_en_US.ts
浏览文件 @
8c837340
...
@@ -198,12 +198,12 @@ export default {
...
@@ -198,12 +198,12 @@ export default {
srfdeid
:
""
,
srfdeid
:
""
,
srfsourcekey
:
""
,
srfsourcekey
:
""
,
ibizbookname
:
"图书名称"
,
ibizbookname
:
"图书名称"
,
ibizbookid
:
"图书标识"
,
author
:
"图书作者"
,
author
:
"图书作者"
,
booknumber
:
"图书数量"
,
booknumber
:
"图书数量"
,
press
:
"图书出版社"
,
press
:
"图书出版社"
,
price
:
"图书价格"
,
price
:
"图书价格"
,
borrowstatus
:
"图书借阅状态"
,
borrowstatus
:
"图书借阅状态"
,
ibizbookid
:
"图书标识"
,
},
},
uiactions
:
{
uiactions
:
{
},
},
...
...
app_Web/src/locale/lanres/entities/ibizbook/ibizbook_zh_CN.ts
浏览文件 @
8c837340
...
@@ -197,12 +197,12 @@ export default {
...
@@ -197,12 +197,12 @@ export default {
srfdeid
:
""
,
srfdeid
:
""
,
srfsourcekey
:
""
,
srfsourcekey
:
""
,
ibizbookname
:
"图书名称"
,
ibizbookname
:
"图书名称"
,
ibizbookid
:
"图书标识"
,
author
:
"图书作者"
,
author
:
"图书作者"
,
booknumber
:
"图书数量"
,
booknumber
:
"图书数量"
,
press
:
"图书出版社"
,
press
:
"图书出版社"
,
price
:
"图书价格"
,
price
:
"图书价格"
,
borrowstatus
:
"图书借阅状态"
,
borrowstatus
:
"图书借阅状态"
,
ibizbookid
:
"图书标识"
,
},
},
uiactions
:
{
uiactions
:
{
},
},
...
...
app_Web/src/mock/app/main-menu-appmenu/main-menu-appmenu.ts
浏览文件 @
8c837340
...
@@ -1623,6 +1623,24 @@ mock.onGet('v7/main-menuappmenu').reply((config: any) => {
...
@@ -1623,6 +1623,24 @@ mock.onGet('v7/main-menuappmenu').reply((config: any) => {
textcls
:
''
,
textcls
:
''
,
appfunctag
:
'AppFunc50'
,
appfunctag
:
'AppFunc50'
,
resourcetag
:
''
,
resourcetag
:
''
,
},
{
id
:
'9AF2AE71-4228-4404-A271-0B8A97EDD5A3'
,
name
:
'menuitem136'
,
text
:
'订单明细柱状图'
,
type
:
'MENUITEM'
,
counterid
:
''
,
tooltip
:
'订单明细柱状图'
,
expanded
:
false
,
separator
:
false
,
hidden
:
false
,
hidesidebar
:
false
,
opendefault
:
false
,
iconcls
:
''
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
'AppFunc52'
,
resourcetag
:
''
,
},
},
],
],
},
},
...
...
app_Web/src/pages/sample/ibizorder-detail-chart-view/ibizorder-detail-chart-view-base.vue
0 → 100644
浏览文件 @
8c837340
<
template
>
<div
class=
'view-container dechartview ibizorder-detail-chart-view'
>
<app-studioaction
:viewTitle=
"$t(model.srfCaption)"
viewName=
"ibizorderdetailchartview"
></app-studioaction>
<card
class=
'view-card view-no-toolbar'
:bordered=
"false"
:dis-hover=
"true"
>
<div
slot=
'title'
class=
"header-container"
>
<span
class=
'caption-info'
>
{{
$t
(
model
.
srfCaption
)
}}
</span>
</div>
<div
class=
'view-top-messages'
>
</div>
<div
class=
'content-container'
>
<view
_searchform
:viewState=
"viewState"
:viewparams=
"viewparams"
:context=
"context"
:showBusyIndicator=
"true"
v-show=
"isExpandSearchForm"
loaddraftAction=
"FilterGetDraft"
loadAction=
"FilterGet"
name=
"searchform"
ref=
'searchform'
@
save=
"searchform_save($event)"
@
search=
"searchform_search($event)"
@
load=
"searchform_load($event)"
@
closeview=
"closeView($event)"
>
</view
_searchform
>
<div
class=
'view-body-messages'
>
</div>
<view
_chart
:viewState=
"viewState"
:viewparams=
"viewparams"
:context=
"context"
fetchAction=
"FetchDefault"
:showBusyIndicator=
"true"
name=
"chart"
ref=
'chart'
@
beforeload=
"chart_beforeload($event)"
@
load=
"chart_load($event)"
@
closeview=
"closeView($event)"
>
</view
_chart
>
</div>
<div
class=
'view-bottom-messages'
>
</div>
</card>
</div>
</
template
>
<
script
lang=
'tsx'
>
import
{
Vue
,
Component
,
Prop
,
Provide
,
Emit
,
Watch
,
Inject
}
from
'vue-property-decorator'
;
import
{
UIActionTool
,
Util
}
from
'@/utils'
;
import
NavDataService
from
'@/service/app/navdata-service'
;
import
{
Subject
,
Subscription
}
from
'rxjs'
;
import
IBIZOrderDetailService
from
'@/service/ibizorder-detail/ibizorder-detail-service'
;
import
IBIZOrderDetailAuthService
from
'@/authservice/ibizorder-detail/ibizorder-detail-auth-service'
;
import
ChartViewEngine
from
'@engine/view/chart-view-engine'
;
import
IBIZOrderDetailUIService
from
'@/uiservice/ibizorder-detail/ibizorder-detail-ui-service'
;
import
CodeListService
from
"@/codelist/codelist-service"
;
@
Component
({
components
:
{
},
})
export
default
class
IBIZOrderDetailChartViewBase
extends
Vue
{
/**
* 实体服务对象
*
* @type {IBIZOrderDetailService}
* @memberof IBIZOrderDetailChartViewBase
*/
public
appEntityService
:
IBIZOrderDetailService
=
new
IBIZOrderDetailService
;
/**
* 实体UI服务对象
*
* @type IBIZOrderDetailUIService
* @memberof IBIZOrderDetailChartViewBase
*/
public
appUIService
:
IBIZOrderDetailUIService
=
new
IBIZOrderDetailUIService
(
this
.
$store
);
/**
* 数据变化
*
* @param {*} val
* @returns {*}
* @memberof IBIZOrderDetailChartViewBase
*/
@
Emit
()
public
viewDatasChange
(
val
:
any
):
any
{
return
val
;
}
/**
* 传入视图上下文
*
* @type {string}
* @memberof IBIZOrderDetailChartViewBase
*/
@
Prop
()
public
viewdata
!
:
string
;
/**
* 传入视图参数
*
* @type {string}
* @memberof IBIZOrderDetailChartViewBase
*/
@
Prop
()
public
viewparam
!
:
string
;
/**
* 视图默认使用
*
* @type {boolean}
* @memberof IBIZOrderDetailChartViewBase
*/
@
Prop
({
default
:
true
})
public
viewDefaultUsage
!
:
boolean
;
/**
* 视图默认使用
*
* @type {string}
* @memberof IBIZOrderDetailChartViewBase
*/
@
Inject
({
from
:
'navModel'
,
default
:
'tab'
})
public
navModel
!
:
string
;
/**
* 视图标识
*
* @type {string}
* @memberof IBIZOrderDetailChartViewBase
*/
public
viewtag
:
string
=
'ca12f5e01b107fe4af5b19b4f5ab1c4f'
;
/**
* 自定义视图导航上下文集合
*
* @type {*}
* @memberof IBIZOrderDetailChartViewBase
*/
public
customViewNavContexts
:
any
=
{
};
/**
* 自定义视图导航参数集合
*
* @type {*}
* @memberof IBIZOrderDetailChartViewBase
*/
public
customViewParams
:
any
=
{
};
/**
* 视图模型数据
*
* @type {*}
* @memberof IBIZOrderDetailChartViewBase
*/
public
model
:
any
=
{
srfCaption
:
'entities.ibizorderdetail.views.chartview.caption'
,
srfTitle
:
'entities.ibizorderdetail.views.chartview.title'
,
srfSubTitle
:
'entities.ibizorderdetail.views.chartview.subtitle'
,
dataInfo
:
''
}
/**
* 视图参数变化
*
* @param {*} newVal
* @param {*} oldVal
* @memberof IBIZOrderDetailChartViewBase
*/
@
Watch
(
'viewparam'
,{
immediate
:
true
,
deep
:
true
})
onParamData
(
newVal
:
any
,
oldVal
:
any
)
{
if
(
newVal
){
this
.
viewparams
=
{};
if
(
typeof
newVal
==
'string'
)
{
Object
.
assign
(
this
.
viewparams
,
JSON
.
parse
(
this
.
viewparam
));
}
else
{
this
.
viewparams
=
Util
.
deepCopy
(
this
.
viewparam
);
}
}
}
/**
* 处理应用上下文变化
*
* @param {*} newVal
* @param {*} oldVal
* @memberof IBIZOrderDetailChartViewBase
*/
@
Watch
(
'viewdata'
)
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
});
}
else
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
refresh
&&
_this
.
refresh
instanceof
Function
)
{
_this
.
refresh
();
}
}
/**
* 容器模型
*
* @type {*}
* @memberof IBIZOrderDetailChartViewBase
*/
public
containerModel
:
any
=
{
view_chart
:
{
name
:
'chart'
,
type
:
'CHART'
},
view_searchform
:
{
name
:
'searchform'
,
type
:
'SEARCHFORM'
},
};
/**
* 计数器刷新
*
* @memberof IBIZOrderDetailChartViewBase
*/
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
();
}
})
}
}
/**
* 视图状态订阅对象
*
* @public
* @type {Subject<{action: string, data: any}>}
* @memberof IBIZOrderDetailChartViewBase
*/
public
viewState
:
Subject
<
ViewState
>
=
new
Subject
();
/**
* 视图引擎
*
* @public
* @type {Engine}
* @memberof IBIZOrderDetailChartViewBase
*/
public
engine
:
ChartViewEngine
=
new
ChartViewEngine
();
/**
* 引擎初始化
*
* @public
* @memberof IBIZOrderDetailChartViewBase
*/
public
engineInit
():
void
{
this
.
engine
.
init
({
view
:
this
,
chart
:
this
.
$refs
.
chart
,
searchform
:
this
.
$refs
.
searchform
,
keyPSDEField
:
'ibizorderdetail'
,
majorPSDEField
:
'ibizorderdetailname'
,
isLoadDefault
:
true
,
});
}
/**
* 应用导航服务
*
* @type {*}
* @memberof IBIZOrderDetailChartViewBase
*/
public
navDataService
=
NavDataService
.
getInstance
(
this
.
$store
);
/**
* 导航服务事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof IBIZOrderDetailChartViewBase
*/
public
serviceStateEvent
:
Subscription
|
undefined
;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof IBIZOrderDetailChartViewBase
*/
@
Prop
()
public
portletState
?:
any
;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof IBIZOrderDetailChartViewBase
*/
public
portletStateEvent
:
Subscription
|
undefined
;
/**
* 应用上下文
*
* @type {*}
* @memberof IBIZOrderDetailChartViewBase
*/
public
context
:
any
=
{};
/**
* 视图参数
*
* @type {*}
* @memberof IBIZOrderDetailChartViewBase
*/
public
viewparams
:
any
=
{};
/**
* 视图缓存数据
*
* @type {*}
* @memberof IBIZOrderDetailChartViewBase
*/
public
viewCacheData
:
any
;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBIZOrderDetailChartViewBase
*/
public
counterServiceArray
:
Array
<
any
>
=
[];
/**
* 解析视图参数
*
* @public
* @memberof IBIZOrderDetailChartViewBase
*/
public
parseViewParam
(
inputvalue
:
any
=
null
):
void
{
for
(
let
key
in
this
.
context
){
delete
this
.
context
[
key
];
}
if
(
this
.
$store
.
getters
.
getAppData
()
&&
this
.
$store
.
getters
.
getAppData
().
context
){
Object
.
assign
(
this
.
context
,
this
.
$store
.
getters
.
getAppData
().
context
);
}
if
(
!
this
.
viewDefaultUsage
&&
this
.
viewdata
&&
!
Object
.
is
(
this
.
viewdata
,
''
))
{
if
(
typeof
this
.
viewdata
==
'string'
)
{
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
});
}
this
.
handleCustomViewData
();
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
(
inputvalue
){
Object
.
assign
(
this
.
context
,{
'ibizorderdetail'
:
inputvalue
});
}
//初始化视图唯一标识
Object
.
assign
(
this
.
context
,{
srfsessionid
:
this
.
$util
.
createUUID
()});
this
.
handleCustomViewData
();
//初始化导航数据
this
.
initNavDataWithRoute
();
}
/**
* 处理自定义视图数据
*
* @memberof IBIZOrderDetailChartViewBase
*/
public
handleCustomViewData
(){
if
(
Object
.
keys
(
this
.
customViewNavContexts
).
length
>
0
){
Object
.
keys
(
this
.
customViewNavContexts
).
forEach
((
item
:
any
)
=>
{
let
tempContext
:
any
=
{};
let
curNavContext
:
any
=
this
.
customViewNavContexts
[
item
];
this
.
handleCustomDataLogic
(
curNavContext
,
tempContext
,
item
);
Object
.
assign
(
this
.
context
,
tempContext
);
})
}
if
(
Object
.
keys
(
this
.
customViewParams
).
length
>
0
){
Object
.
keys
(
this
.
customViewParams
).
forEach
((
item
:
any
)
=>
{
let
tempParam
:
any
=
{};
let
curNavParam
:
any
=
this
.
customViewParams
[
item
];
this
.
handleCustomDataLogic
(
curNavParam
,
tempParam
,
item
);
Object
.
assign
(
this
.
viewparams
,
tempParam
);
})
}
}
/**
* 处理自定义视图数据逻辑
*
* @memberof IBIZOrderDetailChartViewBase
*/
public
handleCustomDataLogic
(
curNavData
:
any
,
tempData
:
any
,
item
:
string
){
// 直接值直接赋值
if
(
curNavData
.
isRawValue
){
if
(
Object
.
is
(
curNavData
.
value
,
"null"
)
||
Object
.
is
(
curNavData
.
value
,
""
)){
Object
.
defineProperty
(
tempData
,
item
.
toLowerCase
(),
{
value
:
null
,
writable
:
true
,
enumerable
:
true
,
configurable
:
true
});
}
else
{
Object
.
defineProperty
(
tempData
,
item
.
toLowerCase
(),
{
value
:
curNavData
.
value
,
writable
:
true
,
enumerable
:
true
,
configurable
:
true
});
}
}
else
{
// 先从导航上下文取数,没有再从导航参数(URL)取数,如果导航上下文和导航参数都没有则为null
if
(
this
.
context
[(
curNavData
.
value
).
toLowerCase
()]
!=
null
){
Object
.
defineProperty
(
tempData
,
item
.
toLowerCase
(),
{
value
:
this
.
context
[(
curNavData
.
value
).
toLowerCase
()],
writable
:
true
,
enumerable
:
true
,
configurable
:
true
});
}
else
{
if
(
this
.
viewparams
[(
curNavData
.
value
).
toLowerCase
()]
!=
null
){
Object
.
defineProperty
(
tempData
,
item
.
toLowerCase
(),
{
value
:
this
.
viewparams
[(
curNavData
.
value
).
toLowerCase
()],
writable
:
true
,
enumerable
:
true
,
configurable
:
true
});
}
else
{
Object
.
defineProperty
(
tempData
,
item
.
toLowerCase
(),
{
value
:
null
,
writable
:
true
,
enumerable
:
true
,
configurable
:
true
});
}
}
}
}
/**
* 初始化导航数据(路由模式)
*
* @memberof IBIZOrderDetailChartViewBase
*/
public
initNavDataWithRoute
(
data
:
any
=
null
,
isNew
:
boolean
=
false
,
isAlways
:
boolean
=
false
){
if
(
isAlways
||
(
this
.
viewDefaultUsage
&&
Object
.
is
(
this
.
navModel
,
"route"
))
){
this
.
navDataService
.
addNavData
({
id
:
'ibizorder-detail-chart-view'
,
tag
:
this
.
viewtag
,
srfkey
:
isNew
?
null
:
this
.
context
.
ibizorderdetail
,
title
:
this
.
$t
(
this
.
model
.
srfCaption
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
});
}
}
/**
* 初始化导航数据(分页模式)
*
* @memberof IBIZOrderDetailChartViewBase
*/
public
initNavDataWithTab
(
data
:
any
=
null
,
isOnlyAdd
:
boolean
=
true
,
isAlways
:
boolean
=
false
){
if
(
isAlways
||
(
this
.
viewDefaultUsage
&&
!
Object
.
is
(
this
.
navModel
,
"route"
))
){
this
.
navDataService
.
addNavDataByOnly
({
id
:
'ibizorder-detail-chart-view'
,
tag
:
this
.
viewtag
,
srfkey
:
this
.
context
.
ibizorderdetail
,
title
:
this
.
$t
(
this
.
model
.
srfCaption
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
},
isOnlyAdd
);
}
}
/**
* Vue声明周期
*
* @memberof IBIZOrderDetailChartViewBase
*/
public
created
()
{
this
.
afterCreated
();
}
/**
* 执行created后的逻辑
*
* @memberof IBIZOrderDetailChartViewBase
*/
public
afterCreated
(){
let
_this
:
any
=
this
;
const
secondtag
=
_this
.
$util
.
createUUID
();
_this
.
$store
.
commit
(
'viewaction/createdView'
,
{
viewtag
:
_this
.
viewtag
,
secondtag
:
secondtag
});
_this
.
viewtag
=
secondtag
;
_this
.
parseViewParam
();
_this
.
serviceStateEvent
=
_this
.
navDataService
.
serviceState
.
subscribe
(({
action
,
name
,
data
}:{
action
:
string
,
name
:
any
,
data
:
any
})
=>
{
if
(
!
Object
.
is
(
name
,
'ibizorder-detail-chart-view'
)){
return
;
}
if
(
Object
.
is
(
action
,
'viewrefresh'
))
{
_this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
(
data
);
if
(
_this
.
engine
){
_this
.
engine
.
load
();
}
});
}
});
if
(
_this
.
portletState
){
_this
.
portletStateEvent
=
_this
.
portletState
.
subscribe
((
res
:
any
)
=>
{
if
(
!
Object
.
is
(
res
.
name
,
'IBIZOrderDetailChartView'
)){
return
;
}
if
(
Object
.
is
(
res
.
action
,
'refresh'
)
&&
_this
.
refresh
&&
_this
.
refresh
instanceof
Function
){
_this
.
refresh
();
}
})
}
}
/**
* 销毁之前
*
* @memberof IBIZOrderDetailChartViewBase
*/
public
beforeDestroy
()
{
this
.
$store
.
commit
(
'viewaction/removeView'
,
this
.
viewtag
);
}
/**
* Vue声明周期(组件初始化完毕)
*
* @memberof IBIZOrderDetailChartViewBase
*/
public
mounted
()
{
this
.
afterMounted
();
}
/**
* 执行mounted后的逻辑
*
* @memberof IBIZOrderDetailChartViewBase
*/
public
afterMounted
(){
const
_this
:
any
=
this
;
_this
.
engineInit
();
if
(
_this
.
loadModel
&&
_this
.
loadModel
instanceof
Function
)
{
_this
.
loadModel
();
}
}
/**
* chart 部件 beforeload 事件
*
* @param {*} [args={}]
* @param {*} $event
* @memberof IBIZOrderDetailChartViewBase
*/
public
chart_beforeload
(
$event
:
any
,
$event2
?:
any
)
{
this
.
engine
.
onCtrlEvent
(
'chart'
,
'beforeload'
,
$event
);
}
/**
* chart 部件 load 事件
*
* @param {*} [args={}]
* @param {*} $event
* @memberof IBIZOrderDetailChartViewBase
*/
public
chart_load
(
$event
:
any
,
$event2
?:
any
)
{
this
.
engine
.
onCtrlEvent
(
'chart'
,
'load'
,
$event
);
}
/**
* searchform 部件 save 事件
*
* @param {*} [args={}]
* @param {*} $event
* @memberof IBIZOrderDetailChartViewBase
*/
public
searchform_save
(
$event
:
any
,
$event2
?:
any
)
{
this
.
engine
.
onCtrlEvent
(
'searchform'
,
'save'
,
$event
);
}
/**
* searchform 部件 search 事件
*
* @param {*} [args={}]
* @param {*} $event
* @memberof IBIZOrderDetailChartViewBase
*/
public
searchform_search
(
$event
:
any
,
$event2
?:
any
)
{
this
.
engine
.
onCtrlEvent
(
'searchform'
,
'search'
,
$event
);
}
/**
* searchform 部件 load 事件
*
* @param {*} [args={}]
* @param {*} $event
* @memberof IBIZOrderDetailChartViewBase
*/
public
searchform_load
(
$event
:
any
,
$event2
?:
any
)
{
this
.
engine
.
onCtrlEvent
(
'searchform'
,
'load'
,
$event
);
}
/**
* 关闭视图
*
* @param {any[]} args
* @memberof IBIZOrderDetailChartViewBase
*/
public
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
);
}
}
/**
* 销毁视图回调
*
* @memberof IBIZOrderDetailChartViewBase
*/
public
destroyed
(){
this
.
afterDestroyed
();
}
/**
* 执行destroyed后的逻辑
*
* @memberof IBIZOrderDetailChartViewBase
*/
public
afterDestroyed
(){
if
(
this
.
viewDefaultUsage
){
let
localStoreLength
=
Object
.
keys
(
localStorage
);
if
(
localStoreLength
.
length
>
0
){
localStoreLength
.
forEach
((
item
:
string
)
=>
{
if
(
item
.
startsWith
(
this
.
context
.
srfsessionid
)){
localStorage
.
removeItem
(
item
);
}
})
}
if
(
Object
.
is
(
this
.
navModel
,
"tab"
)){
this
.
navDataService
.
removeNavDataByTag
(
this
.
viewtag
);
}
if
(
this
.
serviceStateEvent
)
{
this
.
serviceStateEvent
.
unsubscribe
();
}
}
// 销毁计数器定时器
if
(
this
.
counterServiceArray
&&
this
.
counterServiceArray
.
length
>
0
){
this
.
counterServiceArray
.
forEach
((
item
:
any
)
=>
{
if
(
item
.
destroyCounter
&&
item
.
destroyCounter
instanceof
Function
){
item
.
destroyCounter
();
}
})
}
if
(
this
.
portletStateEvent
){
this
.
portletStateEvent
.
unsubscribe
();
}
}
/**
* 搜索值
*
* @type {string}
* @memberof IBIZOrderDetailChartViewBase
*/
public
query
:
string
=
''
;
/**
* 是否展开搜索表单
*
* @type {boolean}
* @memberof IBIZOrderDetailChartViewBase
*/
public
isExpandSearchForm
:
boolean
=
false
;
/**
* 快速搜索
*
* @param {*} $event
* @memberof IBIZOrderDetailChartViewBase
*/
public
onSearch
(
$event
:
any
):
void
{
const
refs
:
any
=
this
.
$refs
;
if
(
refs
.
chart
)
{
refs
.
chart
.
refresh
({});
}
}
}
</
script
>
<
style
lang=
'less'
>
@import './ibizorder-detail-chart-view.less';
</
style
>
\ No newline at end of file
app_Web/src/pages/sample/ibizorder-detail-chart-view/ibizorder-detail-chart-view.less
0 → 100644
浏览文件 @
8c837340
.ibizorder-detail-chart-view{
position: relative;
}
.ibizorder-detail-chart-view{
display: block;
> .view-card > .ivu-card-body > .content-container > .app-data-chart {
overflow: auto;
}
}
\ No newline at end of file
app_Web/src/pages/sample/ibizorder-detail-chart-view/ibizorder-detail-chart-view.vue
0 → 100644
浏览文件 @
8c837340
<
script
lang=
'tsx'
>
import
{
Component
}
from
'vue-property-decorator'
;
import
IBIZOrderDetailChartViewBase
from
'./ibizorder-detail-chart-view-base.vue'
;
import
view_chart
from
'@widgets/ibizorder-detail/histogram-chart/histogram-chart.vue'
;
import
view_searchform
from
'@widgets/ibizorder-detail/default-searchform/default-searchform.vue'
;
@
Component
({
components
:
{
view_chart
,
view_searchform
,
},
beforeRouteEnter
:
(
to
:
any
,
from
:
any
,
next
:
any
)
=>
{
next
((
vm
:
any
)
=>
{
if
(
!
Object
.
is
(
vm
.
navModel
,
"route"
)){
vm
.
initNavDataWithTab
(
vm
.
viewCacheData
);
}
vm
.
$store
.
commit
(
'addCurPageViewtag'
,
{
fullPath
:
to
.
fullPath
,
viewtag
:
vm
.
viewtag
});
});
},
})
export
default
class
IBIZOrderDetailChartView
extends
IBIZOrderDetailChartViewBase
{
}
</
script
>
\ No newline at end of file
app_Web/src/pages/sample/index/page-register.ts
浏览文件 @
8c837340
...
@@ -106,6 +106,7 @@ export const PageComponents = {
...
@@ -106,6 +106,7 @@ export const PageComponents = {
Vue
.
component
(
'ibizorder-f10-edit-view'
,
()
=>
import
(
'@pages/sample/ibizorder-f10-edit-view/ibizorder-f10-edit-view.vue'
));
Vue
.
component
(
'ibizorder-f10-edit-view'
,
()
=>
import
(
'@pages/sample/ibizorder-f10-edit-view/ibizorder-f10-edit-view.vue'
));
Vue
.
component
(
'ibizsample0003-stree-exp-view'
,
()
=>
import
(
'@pages/sample/ibizsample0003-stree-exp-view/ibizsample0003-stree-exp-view.vue'
));
Vue
.
component
(
'ibizsample0003-stree-exp-view'
,
()
=>
import
(
'@pages/sample/ibizsample0003-stree-exp-view/ibizsample0003-stree-exp-view.vue'
));
Vue
.
component
(
'ibizorder-dashboard-view'
,
()
=>
import
(
'@pages/sample/ibizorder-dashboard-view/ibizorder-dashboard-view.vue'
));
Vue
.
component
(
'ibizorder-dashboard-view'
,
()
=>
import
(
'@pages/sample/ibizorder-dashboard-view/ibizorder-dashboard-view.vue'
));
Vue
.
component
(
'ibizorder-detail-chart-view'
,
()
=>
import
(
'@pages/sample/ibizorder-detail-chart-view/ibizorder-detail-chart-view.vue'
));
Vue
.
component
(
'ibizorder-sedit-view4'
,
()
=>
import
(
'@pages/sample/ibizorder-sedit-view4/ibizorder-sedit-view4.vue'
));
Vue
.
component
(
'ibizorder-sedit-view4'
,
()
=>
import
(
'@pages/sample/ibizorder-sedit-view4/ibizorder-sedit-view4.vue'
));
Vue
.
component
(
'ibizsoftware-suit-grid-view9'
,
()
=>
import
(
'@pages/sample/ibizsoftware-suit-grid-view9/ibizsoftware-suit-grid-view9.vue'
));
Vue
.
component
(
'ibizsoftware-suit-grid-view9'
,
()
=>
import
(
'@pages/sample/ibizsoftware-suit-grid-view9/ibizsoftware-suit-grid-view9.vue'
));
Vue
.
component
(
'ibizbookhas-panel-list-view'
,
()
=>
import
(
'@pages/sample/ibizbookhas-panel-list-view/ibizbookhas-panel-list-view.vue'
));
Vue
.
component
(
'ibizbookhas-panel-list-view'
,
()
=>
import
(
'@pages/sample/ibizbookhas-panel-list-view/ibizbookhas-panel-list-view.vue'
));
...
...
app_Web/src/pages/sample/index/router.ts
浏览文件 @
8c837340
...
@@ -1624,6 +1624,20 @@ const router = new Router({
...
@@ -1624,6 +1624,20 @@ const router = new Router({
},
},
component
:
()
=>
import
(
'@pages/sample/ibizorder-dashboard-view/ibizorder-dashboard-view.vue'
),
component
:
()
=>
import
(
'@pages/sample/ibizorder-dashboard-view/ibizorder-dashboard-view.vue'
),
},
},
{
path
:
'ibizorderdetails/:ibizorderdetail?/chartview/:chartview?'
,
meta
:
{
caption
:
'entities.ibizorderdetail.views.chartview.caption'
,
info
:
''
,
parameters
:
[
{
pathName
:
'index'
,
parameterName
:
'index'
},
{
pathName
:
'ibizorderdetails'
,
parameterName
:
'ibizorderdetail'
},
{
pathName
:
'chartview'
,
parameterName
:
'chartview'
},
],
requireAuth
:
true
,
},
component
:
()
=>
import
(
'@pages/sample/ibizorder-detail-chart-view/ibizorder-detail-chart-view.vue'
),
},
{
{
path
:
'ibizorders/:ibizorder?/seditview4/:seditview4?'
,
path
:
'ibizorders/:ibizorder?/seditview4/:seditview4?'
,
meta
:
{
meta
:
{
...
@@ -4055,6 +4069,19 @@ const router = new Router({
...
@@ -4055,6 +4069,19 @@ const router = new Router({
},
},
component
:
()
=>
import
(
'@pages/sample/ibizsoftware-suit-sgrid-view/ibizsoftware-suit-sgrid-view.vue'
),
component
:
()
=>
import
(
'@pages/sample/ibizsoftware-suit-sgrid-view/ibizsoftware-suit-sgrid-view.vue'
),
},
},
{
path
:
'/ibizorderdetails/:ibizorderdetail?/chartview/:chartview?'
,
meta
:
{
caption
:
'entities.ibizorderdetail.views.chartview.caption'
,
info
:
''
,
parameters
:
[
{
pathName
:
'ibizorderdetails'
,
parameterName
:
'ibizorderdetail'
},
{
pathName
:
'chartview'
,
parameterName
:
'chartview'
},
],
requireAuth
:
true
,
},
component
:
()
=>
import
(
'@pages/sample/ibizorder-detail-chart-view/ibizorder-detail-chart-view.vue'
),
},
{
{
path
:
'/ibizorderdetails/:ibizorderdetail?/f6gridview/:f6gridview?'
,
path
:
'/ibizorderdetails/:ibizorderdetail?/f6gridview/:f6gridview?'
,
meta
:
{
meta
:
{
...
...
app_Web/src/store/modules/view-action/state.ts
浏览文件 @
8c837340
...
@@ -225,6 +225,7 @@ export const viewstate: any = {
...
@@ -225,6 +225,7 @@ export const viewstate: any = {
'f4c5c766fd5755b694e0401dddc4d1ad'
,
'f4c5c766fd5755b694e0401dddc4d1ad'
,
'7f65e6161c444d29e1f53f1cb76e92de'
,
'7f65e6161c444d29e1f53f1cb76e92de'
,
'e7441fa67d425df343d996c745fb5d6b'
,
'e7441fa67d425df343d996c745fb5d6b'
,
'ca12f5e01b107fe4af5b19b4f5ab1c4f'
,
'756fecec409c3a955f0cd737259d27c7'
,
'756fecec409c3a955f0cd737259d27c7'
,
'2ccd29eeaeded3ea5a713a19cd67a83e'
,
'2ccd29eeaeded3ea5a713a19cd67a83e'
,
'490f607f17e7cc8ceccc77f2d0b9a70d'
,
'490f607f17e7cc8ceccc77f2d0b9a70d'
,
...
@@ -1322,6 +1323,15 @@ export const viewstate: any = {
...
@@ -1322,6 +1323,15 @@ export const viewstate: any = {
'54c2461e07dd79fdbecc2c1e3aec8096'
,
'54c2461e07dd79fdbecc2c1e3aec8096'
,
],
],
},
},
{
viewtag
:
'ca12f5e01b107fe4af5b19b4f5ab1c4f'
,
viewmodule
:
'Sample'
,
viewname
:
'IBIZOrderDetailChartView'
,
viewaction
:
''
,
viewdatachange
:
false
,
refviews
:
[
],
},
{
{
viewtag
:
'd1ee943cf3137dc4d57ad59aa8c4b8cb'
,
viewtag
:
'd1ee943cf3137dc4d57ad59aa8c4b8cb'
,
viewmodule
:
'Sample'
,
viewmodule
:
'Sample'
,
...
...
app_Web/src/widgets/app/main-menu-appmenu/main-menu-appmenu-base.vue
浏览文件 @
8c837340
...
@@ -587,6 +587,9 @@ export default class MainMenuBase extends Vue implements ControlInterface {
...
@@ -587,6 +587,9 @@ export default class MainMenuBase extends Vue implements ControlInterface {
case
'Auto286'
:
case
'Auto286'
:
this
.
clickAuto286
(
item
);
this
.
clickAuto286
(
item
);
return
;
return
;
case
'AppFunc52'
:
this
.
clickAppFunc52
(
item
);
return
;
case
'Auto375'
:
case
'Auto375'
:
this
.
clickAuto375
(
item
);
this
.
clickAuto375
(
item
);
return
;
return
;
...
@@ -1365,6 +1368,29 @@ export default class MainMenuBase extends Vue implements ControlInterface {
...
@@ -1365,6 +1368,29 @@ export default class MainMenuBase extends Vue implements ControlInterface {
})
})
}
}
/**
* 功能名称
*
* @param {*} [item={}]
* @memberof MainMenu
*/
public
clickAppFunc52
(
item
:
any
=
{})
{
const
viewparam
:
any
=
{};
Object
.
assign
(
viewparam
,
{});
const
deResParameters
:
any
[]
=
[];
const
parameters
:
any
[]
=
[
{
pathName
:
'ibizorderdetails'
,
parameterName
:
'ibizorderdetail'
},
{
pathName
:
'chartview'
,
parameterName
:
'chartview'
},
];
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_Web/src/widgets/app/main-menu-appmenu/main-menu-appmenu-model.ts
浏览文件 @
8c837340
...
@@ -1715,6 +1715,25 @@ export default class MainMenuModel {
...
@@ -1715,6 +1715,25 @@ export default class MainMenuModel {
appfunctag
:
'AppFunc50'
,
appfunctag
:
'AppFunc50'
,
resourcetag
:
''
,
resourcetag
:
''
,
authtag
:
'Web-MainMenu-menuitem126'
,
authtag
:
'Web-MainMenu-menuitem126'
,
},
{
id
:
'9AF2AE71-4228-4404-A271-0B8A97EDD5A3'
,
name
:
'menuitem136'
,
text
:
'订单明细柱状图'
,
type
:
'MENUITEM'
,
counterid
:
''
,
tooltip
:
'订单明细柱状图'
,
expanded
:
false
,
separator
:
false
,
hidden
:
false
,
hidesidebar
:
false
,
opendefault
:
false
,
iconcls
:
''
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
'AppFunc52'
,
resourcetag
:
''
,
authtag
:
'Web-MainMenu-menuitem136'
,
},
},
],
],
},
},
...
...
app_Web/src/widgets/ibizbook/guide-borrow-form-form/guide-borrow-form-form-base.vue
浏览文件 @
8c837340
...
@@ -5,14 +5,14 @@
...
@@ -5,14 +5,14 @@
<i-col
v-show=
"detailsModel.group1.visible"
:style=
"
{}" :lg="{ span: 24, offset: 0 }">
<i-col
v-show=
"detailsModel.group1.visible"
:style=
"
{}" :lg="{ span: 24, offset: 0 }">
<app-form-group
:uiService=
"appUIService"
:data=
"transformData(data)"
:manageContainerStatus=
"detailsModel.group1.manageContainerStatus"
:isManageContainer=
"detailsModel.group1.isManageContainer"
@
managecontainerclick=
"manageContainerClick('group1')"
layoutType=
"TABLE_24COL"
titleStyle=
""
class=
''
:uiActionGroup=
"detailsModel.group1.uiActionGroup"
@
groupuiactionclick=
"groupUIActionClick($event)"
:caption=
"$t('entities.ibizbook.guideborrowform_form.details.group1')"
:isShowCaption=
"true"
uiStyle=
"DEFAULT"
:titleBarCloseMode=
"0"
:isInfoGroupMode=
"false"
>
<app-form-group
:uiService=
"appUIService"
:data=
"transformData(data)"
:manageContainerStatus=
"detailsModel.group1.manageContainerStatus"
:isManageContainer=
"detailsModel.group1.isManageContainer"
@
managecontainerclick=
"manageContainerClick('group1')"
layoutType=
"TABLE_24COL"
titleStyle=
""
class=
''
:uiActionGroup=
"detailsModel.group1.uiActionGroup"
@
groupuiactionclick=
"groupUIActionClick($event)"
:caption=
"$t('entities.ibizbook.guideborrowform_form.details.group1')"
:isShowCaption=
"true"
uiStyle=
"DEFAULT"
:titleBarCloseMode=
"0"
:isInfoGroupMode=
"false"
>
<row>
<row>
<i-col
v-show=
"detailsModel.lendouttime.visible"
:style=
"
{}" :
lg="{ span: 24
, offset: 0 }">
<i-col
v-show=
"detailsModel.lendouttime.visible"
:style=
"
{}" :
sm="{ span: 12, offset: 0 }" :md="{ span: 12, offset: 0 }" :lg="{ span: 12, offset: 0 }" :xl="{ span: 12
, offset: 0 }">
<app-form-item
name=
'lendouttime'
:itemRules=
"this.rules().lendouttime"
class=
''
:caption=
"$t('entities.ibizbook.guideborrowform_form.details.lendouttime')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.lendouttime.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<app-form-item
name=
'lendouttime'
:itemRules=
"this.rules().lendouttime"
class=
''
:caption=
"$t('entities.ibizbook.guideborrowform_form.details.lendouttime')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.lendouttime.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<date-picker
type=
"date"
:transfer=
"true"
format=
"yyyy-MM-dd"
:value=
"data.lendouttime"
:disabled=
"detailsModel.lendouttime.disabled"
style=
"min-width: 150px; width:100px;"
@
on-change=
"(val1, val2) =>
{ this.data.lendouttime = val1 }">
</date-picker>
<date-picker
type=
"date"
:transfer=
"true"
format=
"yyyy-MM-dd"
:value=
"data.lendouttime"
:disabled=
"detailsModel.lendouttime.disabled"
style=
"min-width: 150px; width:100px;"
@
on-change=
"(val1, val2) =>
{ this.data.lendouttime = val1 }">
</date-picker>
</app-form-item>
</app-form-item>
</i-col>
</i-col>
<i-col
v-show=
"detailsModel.borrowstatus.visible"
:style=
"
{}" :
lg="{ span: 24
, offset: 0 }">
<i-col
v-show=
"detailsModel.borrowstatus.visible"
:style=
"
{}" :
sm="{ span: 12, offset: 0 }" :md="{ span: 12, offset: 0 }" :lg="{ span: 12, offset: 0 }" :xl="{ span: 12
, offset: 0 }">
<app-form-item
name=
'borrowstatus'
:itemRules=
"this.rules().borrowstatus"
class=
''
:caption=
"$t('entities.ibizbook.guideborrowform_form.details.borrowstatus')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.borrowstatus.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<app-form-item
name=
'borrowstatus'
:itemRules=
"this.rules().borrowstatus"
class=
''
:caption=
"$t('entities.ibizbook.guideborrowform_form.details.borrowstatus')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.borrowstatus.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<dropdown-list
<dropdown-list
...
@@ -25,6 +25,8 @@
...
@@ -25,6 +25,8 @@
:disabled="detailsModel.borrowstatus.disabled"
:disabled="detailsModel.borrowstatus.disabled"
valueType="number"
valueType="number"
style="width:100px;width: 100px;"
style="width:100px;width: 100px;"
tag='YesNo'
codelistType='STATIC'
placeholder='请选择...'>
placeholder='请选择...'>
</dropdown-list>
</dropdown-list>
...
...
app_Web/src/widgets/ibizbook/guide-view-form-form/guide-view-form-form-base.vue
浏览文件 @
8c837340
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<i-col
v-show=
"detailsModel.group1.visible"
:style=
"
{}" :lg="{ span: 24, offset: 0 }">
<i-col
v-show=
"detailsModel.group1.visible"
:style=
"
{}" :lg="{ span: 24, offset: 0 }">
<app-form-group
:uiService=
"appUIService"
:data=
"transformData(data)"
:manageContainerStatus=
"detailsModel.group1.manageContainerStatus"
:isManageContainer=
"detailsModel.group1.isManageContainer"
@
managecontainerclick=
"manageContainerClick('group1')"
layoutType=
"TABLE_24COL"
titleStyle=
""
class=
''
:uiActionGroup=
"detailsModel.group1.uiActionGroup"
@
groupuiactionclick=
"groupUIActionClick($event)"
:caption=
"$t('entities.ibizbook.guideviewform_form.details.group1')"
:isShowCaption=
"true"
uiStyle=
"DEFAULT"
:titleBarCloseMode=
"0"
:isInfoGroupMode=
"false"
>
<app-form-group
:uiService=
"appUIService"
:data=
"transformData(data)"
:manageContainerStatus=
"detailsModel.group1.manageContainerStatus"
:isManageContainer=
"detailsModel.group1.isManageContainer"
@
managecontainerclick=
"manageContainerClick('group1')"
layoutType=
"TABLE_24COL"
titleStyle=
""
class=
''
:uiActionGroup=
"detailsModel.group1.uiActionGroup"
@
groupuiactionclick=
"groupUIActionClick($event)"
:caption=
"$t('entities.ibizbook.guideviewform_form.details.group1')"
:isShowCaption=
"true"
uiStyle=
"DEFAULT"
:titleBarCloseMode=
"0"
:isInfoGroupMode=
"false"
>
<row>
<row>
<i-col
v-show=
"detailsModel.ibizbookname.visible"
:style=
"
{}" :
lg="{ span: 24
, offset: 0 }">
<i-col
v-show=
"detailsModel.ibizbookname.visible"
:style=
"
{}" :
sm="{ span: 8, offset: 0 }" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8
, offset: 0 }">
<app-form-item
name=
'ibizbookname'
:itemRules=
"this.rules().ibizbookname"
class=
''
:caption=
"$t('entities.ibizbook.guideviewform_form.details.ibizbookname')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.ibizbookname.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<app-form-item
name=
'ibizbookname'
:itemRules=
"this.rules().ibizbookname"
class=
''
:caption=
"$t('entities.ibizbook.guideviewform_form.details.ibizbookname')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.ibizbookname.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<input-box
<input-box
v-model=
"data.ibizbookname"
v-model=
"data.ibizbookname"
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
</app-form-item>
</app-form-item>
</i-col>
</i-col>
<i-col
v-show=
"detailsModel.author.visible"
:style=
"
{}" :
lg="{ span: 24
, offset: 0 }">
<i-col
v-show=
"detailsModel.author.visible"
:style=
"
{}" :
sm="{ span: 8, offset: 0 }" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8
, offset: 0 }">
<app-form-item
name=
'author'
:itemRules=
"this.rules().author"
class=
''
:caption=
"$t('entities.ibizbook.guideviewform_form.details.author')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.author.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<app-form-item
name=
'author'
:itemRules=
"this.rules().author"
class=
''
:caption=
"$t('entities.ibizbook.guideviewform_form.details.author')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.author.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<input-box
<input-box
v-model=
"data.author"
v-model=
"data.author"
...
@@ -33,7 +33,7 @@
...
@@ -33,7 +33,7 @@
</app-form-item>
</app-form-item>
</i-col>
</i-col>
<i-col
v-show=
"detailsModel.booknumber.visible"
:style=
"
{}" :
lg="{ span: 24
, offset: 0 }">
<i-col
v-show=
"detailsModel.booknumber.visible"
:style=
"
{}" :
sm="{ span: 8, offset: 0 }" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8
, offset: 0 }">
<app-form-item
name=
'booknumber'
:itemRules=
"this.rules().booknumber"
class=
''
:caption=
"$t('entities.ibizbook.guideviewform_form.details.booknumber')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.booknumber.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<app-form-item
name=
'booknumber'
:itemRules=
"this.rules().booknumber"
class=
''
:caption=
"$t('entities.ibizbook.guideviewform_form.details.booknumber')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.booknumber.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<input-box
<input-box
v-model=
"data.booknumber"
v-model=
"data.booknumber"
...
@@ -47,7 +47,7 @@
...
@@ -47,7 +47,7 @@
</app-form-item>
</app-form-item>
</i-col>
</i-col>
<i-col
v-show=
"detailsModel.press.visible"
:style=
"
{}" :
lg="{ span: 24
, offset: 0 }">
<i-col
v-show=
"detailsModel.press.visible"
:style=
"
{}" :
sm="{ span: 8, offset: 0 }" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8
, offset: 0 }">
<app-form-item
name=
'press'
:itemRules=
"this.rules().press"
class=
''
:caption=
"$t('entities.ibizbook.guideviewform_form.details.press')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.press.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<app-form-item
name=
'press'
:itemRules=
"this.rules().press"
class=
''
:caption=
"$t('entities.ibizbook.guideviewform_form.details.press')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.press.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<input-box
<input-box
v-model=
"data.press"
v-model=
"data.press"
...
@@ -61,7 +61,7 @@
...
@@ -61,7 +61,7 @@
</app-form-item>
</app-form-item>
</i-col>
</i-col>
<i-col
v-show=
"detailsModel.price.visible"
:style=
"
{}" :
lg="{ span: 24
, offset: 0 }">
<i-col
v-show=
"detailsModel.price.visible"
:style=
"
{}" :
sm="{ span: 8, offset: 0 }" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8
, offset: 0 }">
<app-form-item
name=
'price'
:itemRules=
"this.rules().price"
class=
''
:caption=
"$t('entities.ibizbook.guideviewform_form.details.price')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.price.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<app-form-item
name=
'price'
:itemRules=
"this.rules().price"
class=
''
:caption=
"$t('entities.ibizbook.guideviewform_form.details.price')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.price.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<input-box
<input-box
v-model=
"data.price"
v-model=
"data.price"
...
@@ -76,7 +76,7 @@
...
@@ -76,7 +76,7 @@
</app-form-item>
</app-form-item>
</i-col>
</i-col>
<i-col
v-show=
"detailsModel.borrowstatus.visible"
:style=
"
{}" :
lg="{ span: 24
, offset: 0 }">
<i-col
v-show=
"detailsModel.borrowstatus.visible"
:style=
"
{}" :
sm="{ span: 8, offset: 0 }" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8
, offset: 0 }">
<app-form-item
name=
'borrowstatus'
:itemRules=
"this.rules().borrowstatus"
class=
''
:caption=
"$t('entities.ibizbook.guideviewform_form.details.borrowstatus')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.borrowstatus.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<app-form-item
name=
'borrowstatus'
:itemRules=
"this.rules().borrowstatus"
class=
''
:caption=
"$t('entities.ibizbook.guideviewform_form.details.borrowstatus')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.borrowstatus.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<dropdown-list
<dropdown-list
...
@@ -89,6 +89,8 @@
...
@@ -89,6 +89,8 @@
:disabled="detailsModel.borrowstatus.disabled"
:disabled="detailsModel.borrowstatus.disabled"
valueType="number"
valueType="number"
style="width:100px;width: 100px;"
style="width:100px;width: 100px;"
tag='YesNo'
codelistType='STATIC'
placeholder='请选择...'>
placeholder='请选择...'>
</dropdown-list>
</dropdown-list>
...
@@ -496,12 +498,12 @@ export default class GuideViewFormBase extends Vue implements ControlInterface {
...
@@ -496,12 +498,12 @@ export default class GuideViewFormBase extends Vue implements ControlInterface {
srfdeid
:
null
,
srfdeid
:
null
,
srfsourcekey
:
null
,
srfsourcekey
:
null
,
ibizbookname
:
null
,
ibizbookname
:
null
,
ibizbookid
:
null
,
author
:
null
,
author
:
null
,
booknumber
:
null
,
booknumber
:
null
,
press
:
null
,
press
:
null
,
price
:
null
,
price
:
null
,
borrowstatus
:
null
,
borrowstatus
:
null
,
ibizbookid
:
null
,
ibizbook
:
null
,
ibizbook
:
null
,
};
};
...
@@ -703,8 +705,6 @@ export default class GuideViewFormBase extends Vue implements ControlInterface {
...
@@ -703,8 +705,6 @@ export default class GuideViewFormBase extends Vue implements ControlInterface {
srfsourcekey
:
new
FormItemModel
({
caption
:
''
,
detailType
:
'FORMITEM'
,
name
:
'srfsourcekey'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
srfsourcekey
:
new
FormItemModel
({
caption
:
''
,
detailType
:
'FORMITEM'
,
name
:
'srfsourcekey'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
,
ibizbookname
:
new
FormItemModel
({
caption
:
'图书名称'
,
detailType
:
'FORMITEM'
,
name
:
'ibizbookname'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
true
,
disabled
:
false
,
enableCond
:
3
})
ibizbookname
:
new
FormItemModel
({
caption
:
'图书名称'
,
detailType
:
'FORMITEM'
,
name
:
'ibizbookname'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
true
,
disabled
:
false
,
enableCond
:
3
})
,
ibizbookid
:
new
FormItemModel
({
caption
:
'图书标识'
,
detailType
:
'FORMITEM'
,
name
:
'ibizbookid'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
,
author
:
new
FormItemModel
({
caption
:
'图书作者'
,
detailType
:
'FORMITEM'
,
name
:
'author'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
author
:
new
FormItemModel
({
caption
:
'图书作者'
,
detailType
:
'FORMITEM'
,
name
:
'author'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
,
...
@@ -715,6 +715,8 @@ export default class GuideViewFormBase extends Vue implements ControlInterface {
...
@@ -715,6 +715,8 @@ export default class GuideViewFormBase extends Vue implements ControlInterface {
price
:
new
FormItemModel
({
caption
:
'图书价格'
,
detailType
:
'FORMITEM'
,
name
:
'price'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
price
:
new
FormItemModel
({
caption
:
'图书价格'
,
detailType
:
'FORMITEM'
,
name
:
'price'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
,
borrowstatus
:
new
FormItemModel
({
caption
:
'图书借阅状态'
,
detailType
:
'FORMITEM'
,
name
:
'borrowstatus'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
borrowstatus
:
new
FormItemModel
({
caption
:
'图书借阅状态'
,
detailType
:
'FORMITEM'
,
name
:
'borrowstatus'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
ibizbookid
:
new
FormItemModel
({
caption
:
'图书标识'
,
detailType
:
'FORMITEM'
,
name
:
'ibizbookid'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
,
};
};
...
@@ -826,18 +828,6 @@ export default class GuideViewFormBase extends Vue implements ControlInterface {
...
@@ -826,18 +828,6 @@ export default class GuideViewFormBase extends Vue implements ControlInterface {
this
.
formDataChange
({
name
:
'ibizbookname'
,
newVal
:
newVal
,
oldVal
:
oldVal
});
this
.
formDataChange
({
name
:
'ibizbookname'
,
newVal
:
newVal
,
oldVal
:
oldVal
});
}
}
/**
* 监控表单属性 ibizbookid 值
*
* @param {*} newVal
* @param {*} oldVal
* @memberof GuideViewFormBase
*/
@
Watch
(
'data.ibizbookid'
)
onIbizbookidChange
(
newVal
:
any
,
oldVal
:
any
)
{
this
.
formDataChange
({
name
:
'ibizbookid'
,
newVal
:
newVal
,
oldVal
:
oldVal
});
}
/**
/**
* 监控表单属性 author 值
* 监控表单属性 author 值
*
*
...
@@ -898,6 +888,18 @@ export default class GuideViewFormBase extends Vue implements ControlInterface {
...
@@ -898,6 +888,18 @@ export default class GuideViewFormBase extends Vue implements ControlInterface {
this
.
formDataChange
({
name
:
'borrowstatus'
,
newVal
:
newVal
,
oldVal
:
oldVal
});
this
.
formDataChange
({
name
:
'borrowstatus'
,
newVal
:
newVal
,
oldVal
:
oldVal
});
}
}
/**
* 监控表单属性 ibizbookid 值
*
* @param {*} newVal
* @param {*} oldVal
* @memberof GuideViewFormBase
*/
@
Watch
(
'data.ibizbookid'
)
onIbizbookidChange
(
newVal
:
any
,
oldVal
:
any
)
{
this
.
formDataChange
({
name
:
'ibizbookid'
,
newVal
:
newVal
,
oldVal
:
oldVal
});
}
/**
/**
* 显示更多模式切换操作
* 显示更多模式切换操作
...
...
app_Web/src/widgets/ibizbook/guide-view-form-form/guide-view-form-form-model.ts
浏览文件 @
8c837340
...
@@ -60,11 +60,6 @@ export default class GuideViewFormModel {
...
@@ -60,11 +60,6 @@ export default class GuideViewFormModel {
prop
:
'ibizbookname'
,
prop
:
'ibizbookname'
,
dataType
:
'TEXT'
,
dataType
:
'TEXT'
,
},
},
{
name
:
'ibizbookid'
,
prop
:
'ibizbookid'
,
dataType
:
'GUID'
,
},
{
{
name
:
'author'
,
name
:
'author'
,
prop
:
'author'
,
prop
:
'author'
,
...
@@ -90,6 +85,11 @@ export default class GuideViewFormModel {
...
@@ -90,6 +85,11 @@ export default class GuideViewFormModel {
prop
:
'borrowstatus'
,
prop
:
'borrowstatus'
,
dataType
:
'TRUEFALSE'
,
dataType
:
'TRUEFALSE'
,
},
},
{
name
:
'ibizbookid'
,
prop
:
'ibizbookid'
,
dataType
:
'GUID'
,
},
{
{
name
:
'ibizbook'
,
name
:
'ibizbook'
,
prop
:
'ibizbookid'
,
prop
:
'ibizbookid'
,
...
...
app_Web/src/widgets/ibizorder-detail/histogram-chart/histogram-chart-base.vue
0 → 100644
浏览文件 @
8c837340
<
template
>
<div
class=
"app-data-chart"
>
<div
v-show=
"isNoData"
class=
"chart-no-data"
><i
class=
"el-icon-data-analysis"
></i>
{{
$t
(
'entities.ibizorderdetail.histogram_chart.nodata'
)
}}
</div>
<div
v-show=
"!isNoData"
class=
"app-charts"
:id=
"chartId"
style=
"height: 100%;padding: 6px 0;"
></div>
</div>
</
template
>
<
script
lang=
'tsx'
>
import
{
Vue
,
Component
,
Prop
,
Provide
,
Emit
,
Watch
,
Model
,
Inject
}
from
'vue-property-decorator'
;
import
{
CreateElement
}
from
'vue'
;
import
{
Subject
,
Subscription
}
from
'rxjs'
;
import
{
ControlInterface
}
from
'@/interface/control'
;
import
{
UIActionTool
,
Util
,
ViewTool
}
from
'@/utils'
;
import
NavDataService
from
'@/service/app/navdata-service'
;
import
AppCenterService
from
"@service/app/app-center-service"
;
import
IBIZOrderDetailService
from
'@/service/ibizorder-detail/ibizorder-detail-service'
;
import
HistogramService
from
'./histogram-chart-service'
;
import
IBIZOrderDetailUIService
from
'@/uiservice/ibizorder-detail/ibizorder-detail-ui-service'
;
import
echarts
from
'echarts'
;
import
moment
from
"moment"
;
import
CodeListService
from
"@/codelist/codelist-service"
;
import
{
ChartDataSetField
,
ChartLineSeries
,
ChartFunnelSeries
,
ChartPieSeries
,
ChartBarSeries
,
ChartRadarSeries
}
from
'@/model/chart-detail'
;
@
Component
({
components
:
{
}
})
export
default
class
HistogramBase
extends
Vue
implements
ControlInterface
{
/**
* 名称
*
* @type {string}
* @memberof HistogramBase
*/
@
Prop
()
public
name
?:
string
;
/**
* 视图通讯对象
*
* @type {Subject<ViewState>}
* @memberof HistogramBase
*/
@
Prop
()
public
viewState
!
:
Subject
<
ViewState
>
;
/**
* 应用上下文
*
* @type {*}
* @memberof HistogramBase
*/
@
Prop
()
public
context
!
:
any
;
/**
* 视图参数
*
* @type {*}
* @memberof HistogramBase
*/
@
Prop
()
public
viewparams
!
:
any
;
/**
* 视图状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof HistogramBase
*/
public
viewStateEvent
:
Subscription
|
undefined
;
/**
* 获取部件类型
*
* @returns {string}
* @memberof HistogramBase
*/
public
getControlType
():
string
{
return
'CHART'
}
/**
* 建构部件服务对象
*
* @type {HistogramService}
* @memberof HistogramBase
*/
public
service
:
HistogramService
=
new
HistogramService
({
$store
:
this
.
$store
});
/**
* 实体服务对象
*
* @type {IBIZOrderDetailService}
* @memberof HistogramBase
*/
public
appEntityService
:
IBIZOrderDetailService
=
new
IBIZOrderDetailService
({
$store
:
this
.
$store
});
/**
* 转化数据
*
* @param {any} args
* @memberof HistogramBase
*/
public
transformData
(
args
:
any
)
{
let
_this
:
any
=
this
;
if
(
_this
.
service
&&
_this
.
service
.
handleRequestData
instanceof
Function
&&
_this
.
service
.
handleRequestData
(
'transform'
,
_this
.
context
,
args
)){
return
_this
.
service
.
handleRequestData
(
'transform'
,
_this
.
context
,
args
)[
'data'
];
}
}
/**
* 关闭视图
*
* @param {any} args
* @memberof HistogramBase
*/
public
closeView
(
args
:
any
):
void
{
let
_this
:
any
=
this
;
_this
.
$emit
(
'closeview'
,
[
args
]);
}
/**
* 计数器刷新
*
* @memberof HistogramBase
*/
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 HistogramBase
*/
public
getDatas
():
any
[]
{
return
[];
}
/**
* 获取单项树
*
* @returns {*}
* @memberof HistogramBase
*/
public
getData
():
any
{
return
null
;
}
/**
* 显示处理提示
*
* @type {boolean}
* @memberof HistogramBase
*/
@
Prop
({
default
:
true
})
public
showBusyIndicator
!
:
boolean
;
/**
* 部件行为--fetch
*
* @type {string}
* @memberof HistogramBase
*/
@
Prop
()
public
fetchAction
!
:
string
;
/**
* Vue声明周期(组件初始化完毕)
*
* @memberof HistogramBase
*/
public
created
()
{
this
.
afterCreated
();
}
/**
* 执行created后的逻辑
*
* @memberof HistogramBase
*/
public
afterCreated
(){
if
(
this
.
viewState
)
{
this
.
viewStateEvent
=
this
.
viewState
.
subscribe
(({
tag
,
action
,
data
})
=>
{
if
(
!
Object
.
is
(
tag
,
this
.
name
))
{
return
;
}
if
(
Object
.
is
(
'load'
,
action
))
{
this
.
load
(
data
);
}
if
(
Object
.
is
(
'refresh'
,
action
))
{
this
.
refresh
(
data
);
}
});
}
}
/**
* vue 生命周期
*
* @memberof HistogramBase
*/
public
destroyed
()
{
this
.
afterDestroy
();
}
/**
* 执行destroyed后的逻辑
*
* @memberof HistogramBase
*/
public
afterDestroy
()
{
if
(
this
.
viewStateEvent
)
{
this
.
viewStateEvent
.
unsubscribe
();
}
}
/**
* 是否无数据
*
* @public
* @type {boolean}
* @memberof ChartBase
*/
public
isNoData
:
boolean
=
false
;
/**
* 图表div绑定的id
*
* @type {}
* @memberof ChartBase
*/
public
chartId
:
string
=
this
.
$util
.
createUUID
();
/**
* echarts图表对象
*
* @type {}
* @memberof ChartBase
*/
public
myChart
:
any
;
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof ChartBase
*/
public
codeListService
:
CodeListService
=
new
CodeListService
({
$store
:
this
.
$store
});
/**
* 序列模型
*
* @type {}
* @memberof ChartBase
*/
public
seriesModel
:
any
=
{
orderdetailscolumn
:
new
ChartBarSeries
({
name
:
'orderdetailscolumn'
,
categorField
:
'ibizorderdetailname'
,
valueField
:
'quantity'
,
seriesValues
:[],
seriesIndex
:
0
,
data
:[],
seriesMap
:{},
dataSetFields
:[
{
name
:
"ibizorderdetailname"
,
codelist
:
null
,
isGroupField
:
true
,
groupMode
:
""
},
{
name
:
"quantity"
,
codelist
:
null
,
isGroupField
:
false
,
groupMode
:
""
}
],
ecxObject
:{
label
:{
show
:
true
,
position
:
'inside'
},
labelLine
:{
length
:
10
,
lineStyle
:
{
width
:
1
,
type
:
'solid'
}
},
itemStyle
:{
borderColor
:
'#fff'
,
borderWidth
:
1
},
emphasis
:{
label
:
{
fontSize
:
20
}
}
},
ecObject
:{
},
seriesTemp
:{
type
:
'bar'
,
},
baseOption
:{
},
seriesLayoutBy
:
"column"
})
};
/**
* 图表自定义参数集合
*
* @memberof ChartBase
*/
public
chartUserParams
:
any
=
{
};
/**
* 图表基础动态模型
*
* @memberof ChartBase
*/
public
chartBaseOPtion
:
any
=
{};
/**
* 图表绘制最终参数
*
* @memberof ChartBase
*/
public
chartRenderOption
:
any
=
{};
/**
* 初始化图表所需参数
*
* @type {}
* @memberof ChartBase
*/
public
chartOption
:
any
=
{
title
:{
show
:
false
,
text
:
'柱状图'
,
subtext
:
'虚拟数据'
},
legend
:{
show
:
true
},
grid
:[
{
}
],
xAxis
:
[
{
gridIndex
:
0
,
position
:
"bottom"
,
type
:
'category'
,
name
:
'订单明细名称'
,
}
],
yAxis
:[
{
gridIndex
:
0
,
position
:
"top"
,
type
:
'value'
,
name
:
'数量'
,
}
],
tooltip
:{
show
:
true
},
dataset
:[],
series
:[
{
id
:
'orderdetailscolumn'
,
name
:
''
,
type
:
'bar'
,
xAxisIndex
:
0
,
yAxisIndex
:
0
,
datasetIndex
:
0
,
encode
:
{
x
:
[
'ibizorderdetailname'
],
y
:
[
'quantity'
]
}}
]
};
/**
* 刷新
*
* @param {*} [args={}]
* @memberof ChartBase
*/
public
refresh
(
args
?:
any
)
{
this
.
load
(
args
);
}
/**
* 获取图表数据
*
* @returns {*}
* @memberof ChartBase
*/
public
load
(
opt
?:
any
)
{
let
_this
=
this
;
const
arg
:
any
=
{
...
opt
};
const
parentdata
:
any
=
{};
this
.
$emit
(
'beforeload'
,
parentdata
);
Object
.
assign
(
arg
,
parentdata
);
let
tempViewParams
:
any
=
parentdata
.
viewparams
?
parentdata
.
viewparams
:{};
Object
.
assign
(
tempViewParams
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
viewparams
)));
Object
.
assign
(
arg
,{
viewparams
:
tempViewParams
});
Object
.
assign
(
arg
,{
page
:
0
,
size
:
1000
});
this
.
service
.
search
(
this
.
fetchAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
arg
,
this
.
showBusyIndicator
).
then
((
res
)
=>
{
if
(
res
)
{
this
.
transformToBasicChartSetData
(
res
.
data
,(
codelist
:
any
)
=>
{
_this
.
drawCharts
(
codelist
)});
}
}).
catch
((
error
)
=>
{
console
.
error
(
error
);
});
}
/**
* 绘制图表
*
* @returns {*}
* @memberof ChartBase
*/
public
drawCharts
(
codelist
:
any
){
if
(
!
this
.
myChart
){
let
element
:
any
=
document
.
getElementById
(
this
.
chartId
);
this
.
myChart
=
echarts
.
init
(
element
);
}
let
_chartOption
=
this
.
handleChartOPtion
(
codelist
);
this
.
chartRenderOption
=
{...
_chartOption
};
this
.
myChart
.
setOption
(
_chartOption
);
this
.
myChart
.
resize
();
}
/**
* 处理图表参数
*
* @memberof ChartBase
*/
public
handleChartOPtion
(
allcodelist
:
any
){
let
_chartOption
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
chartOption
));
if
(
Object
.
keys
(
this
.
seriesModel
).
length
>
0
){
let
tempDataSourceMap
:
Map
<
string
,
any
>
=
new
Map
();
for
(
let
i
=
0
;
i
<
Object
.
keys
(
this
.
seriesModel
).
length
;
i
++
){
Object
.
values
(
this
.
seriesModel
).
forEach
((
seriesvalue
:
any
)
=>
{
if
(
seriesvalue
.
seriesIndex
===
i
){
tempDataSourceMap
.
set
(
seriesvalue
.
name
,
seriesvalue
.
data
);
}
})
}
if
(
tempDataSourceMap
.
size
>
0
){
tempDataSourceMap
.
forEach
((
item
:
any
)
=>
{
_chartOption
.
dataset
.
push
({
'source'
:
item
});
})
}
Object
.
keys
(
this
.
seriesModel
).
forEach
((
seriesName
:
string
)
=>
{
if
(
_chartOption
&&
_chartOption
.
series
.
length
>
0
){
_chartOption
.
series
.
forEach
((
item
:
any
)
=>
{
if
(
this
.
seriesModel
[
seriesName
].
ecxObject
&&
Object
.
is
(
seriesName
,
item
.
id
)){
item
=
Util
.
deepObjectMerge
(
item
,
this
.
seriesModel
[
seriesName
].
ecxObject
);
}
if
(
this
.
seriesModel
[
seriesName
].
baseOption
&&
Object
.
keys
(
this
.
seriesModel
[
seriesName
].
baseOption
).
length
>
0
&&
Object
.
is
(
seriesName
,
item
.
id
)){
item
=
Util
.
deepObjectMerge
(
item
,
this
.
seriesModel
[
seriesName
].
baseOption
);
}
if
(
this
.
seriesModel
[
seriesName
].
ecObject
&&
Object
.
is
(
seriesName
,
item
.
id
)){
item
=
Util
.
deepObjectMerge
(
item
,
this
.
seriesModel
[
seriesName
].
ecObject
);
}
})
}
//设置多序列
let
tempSeries
:
any
=
this
.
seriesModel
[
seriesName
];
// 非雷达图
if
(
tempSeries
&&
tempSeries
.
seriesIdField
&&
tempSeries
.
seriesValues
.
length
>
0
&&
!
Object
.
is
(
tempSeries
.
type
,
'radar'
)){
const
returnIndex
:
number
=
_chartOption
.
series
.
findIndex
((
item
:
any
)
=>
{
return
Object
.
is
(
item
.
id
,
seriesName
);
})
_chartOption
.
series
.
splice
(
returnIndex
,
1
);
let
tempSeriesArray
:
Array
<
any
>
=
[];
tempSeries
.
seriesValues
.
forEach
((
seriesvalueItem
:
any
)
=>
{
let
tempSeriesTemp
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
tempSeries
.
seriesTemp
));
Object
.
assign
(
tempSeriesTemp
,{
name
:
tempSeries
.
seriesMap
[
seriesvalueItem
],
datasetIndex
:
tempSeries
.
seriesIndex
,
encode
:{
x
:
tempSeries
.
categorField
,
y
:
`
${
seriesvalueItem
}
`
}});
_chartOption
.
series
.
push
(
tempSeriesTemp
);
})
}
})
}
if
(
Object
.
keys
(
this
.
chartBaseOPtion
).
length
>
0
){
Object
.
assign
(
_chartOption
,
this
.
chartBaseOPtion
);
}
if
(
Object
.
keys
(
this
.
chartUserParams
).
length
>
0
){
Object
.
assign
(
_chartOption
,
this
.
chartUserParams
);
}
return
_chartOption
;
}
/**
* 实体数据集转化为图表数据集
*
* 1.获取图表所有代码表值
* 2.查询集合映射图表数据集
* 3.补全图表数据集
* 4.图表数据集分组求和
* 5.排序图表数据集
*
* @param {*} data 实体数据集
* @param {Function} callback 回调
* @memberof ChartBase
*/
public
async
transformToBasicChartSetData
(
data
:
any
,
callback
:
Function
){
if
(
!
data
||
!
Array
.
isArray
(
data
)
||
data
.
length
===
0
){
this
.
isNoData
=
true
;
return
;
}
this
.
isNoData
=
false
;
//获取代码表值
let
allCodeList
:
any
=
await
this
.
getChartAllCodeList
();
if
(
Object
.
values
(
this
.
seriesModel
).
length
>
0
){
Object
.
values
(
this
.
seriesModel
).
forEach
((
singleSeries
:
any
,
index
:
number
)
=>
{
// 值属性为srfcount设置{srfcount:1}到data
let
valueField
=
singleSeries
.
dataSetFields
.
find
((
datasetField
:
any
)
=>
{
return
datasetField
.
name
===
singleSeries
.
valueField
;
});
if
(
valueField
&&
valueField
.
name
&&
Object
.
is
(
valueField
.
name
,
"srfcount"
)){
data
.
forEach
((
singleData
:
any
)
=>
{
Object
.
assign
(
singleData
,{
srfcount
:
1
});
})
}
// 分组属性
let
groupField
=
singleSeries
.
dataSetFields
.
find
((
datasetField
:
any
)
=>
{
return
datasetField
.
name
===
singleSeries
.
categorField
;
});
let
tempChartSetData
:
Array
<
any
>
=
[];
let
tempSeriesValues
:
Map
<
string
,
any
>
=
new
Map
();
data
.
forEach
((
item
:
any
)
=>
{
let
tempChartSetDataItem
:
any
=
{};
// 序列属性不存在
if
(
!
singleSeries
.
seriesIdField
){
Object
.
assign
(
tempChartSetDataItem
,{
name
:
singleSeries
.
name
});
if
(
singleSeries
.
dataSetFields
&&
singleSeries
.
dataSetFields
.
length
>
0
){
singleSeries
.
dataSetFields
.
forEach
((
singleDataSetField
:
any
)
=>
{
this
.
handleSingleDataSetField
(
item
,
singleDataSetField
,
allCodeList
,
tempChartSetDataItem
,
groupField
);
})
}
}
else
{
// 序列属性存在时
// 序列代码表存在时,翻译tempSeriesValues的键值对
if
(
singleSeries
.
seriesCodeList
){
const
seriesCodeList
:
Map
<
string
,
any
>
=
allCodeList
.
get
(
singleSeries
.
seriesCodeList
.
tag
);
let
tempSeriesValueItem
=
tempSeriesValues
.
get
(
seriesCodeList
.
get
(
item
[
singleSeries
.
seriesIdField
]));
if
(
!
tempSeriesValueItem
){
tempSeriesValues
.
set
(
seriesCodeList
.
get
(
item
[
singleSeries
.
seriesIdField
]),
seriesCodeList
.
get
(
item
[
singleSeries
.
seriesIdField
]));
}
}
else
{
let
tempSeriesValueItem
=
tempSeriesValues
.
get
(
item
[
singleSeries
.
seriesIdField
]);
if
(
!
tempSeriesValueItem
){
tempSeriesValues
.
set
(
item
[
singleSeries
.
seriesIdField
],
item
[
singleSeries
.
seriesNameField
]);
}
}
Object
.
assign
(
tempChartSetDataItem
,{
name
:
item
[
singleSeries
.
seriesIdField
]});
if
(
singleSeries
.
dataSetFields
&&
singleSeries
.
dataSetFields
.
length
>
0
){
singleSeries
.
dataSetFields
.
forEach
((
singleDataSetField
:
any
)
=>
{
this
.
handleSingleDataSetField
(
item
,
singleDataSetField
,
allCodeList
,
tempChartSetDataItem
,
groupField
);
})
}
}
tempChartSetData
.
push
(
tempChartSetDataItem
);
})
// 补全数据集合
this
.
completeDataSet
(
tempChartSetData
,
singleSeries
,
allCodeList
);
// 序列代码表存在时,补全序列
if
(
singleSeries
.
seriesCodeList
){
const
seriesCodeList
:
Map
<
string
,
any
>
=
allCodeList
.
get
(
singleSeries
.
seriesCodeList
.
tag
);
tempSeriesValues
=
new
Map
();
seriesCodeList
.
forEach
((
item
:
any
)
=>
{
tempSeriesValues
.
set
(
item
,
item
);
})
}
singleSeries
.
seriesValues
=
[...
tempSeriesValues
.
keys
()];
let
tempSeriesMapObj
:
any
=
{};
tempSeriesValues
.
forEach
((
value
:
any
,
key
:
any
)
=>
{
tempSeriesMapObj
[
key
]
=
value
;
})
singleSeries
.
seriesMap
=
tempSeriesMapObj
;
let
callbackFunction
:
any
=
(
index
===
(
Object
.
values
(
this
.
seriesModel
).
length
-
1
))?
callback
:
null
;
this
.
transformToChartSeriesDataSet
(
tempChartSetData
,
singleSeries
,
callbackFunction
,
allCodeList
);
})
}
}
/**
* 构建图表序列数据集合
*
* 1.分组求和
* 2.排序求和数组
*
* @param {Array<any>} data 传入数据
* @param {Array<any>} item 单个序列
* @param {Array<any>} callback 回调
* @param {*} allCodeList 所有代码表
*
* @memberof ChartBase
*/
public
transformToChartSeriesDataSet
(
data
:
any
,
item
:
any
,
callback
:
Function
,
allCodeList
:
any
):
any
{
if
(
item
.
seriesIdField
){
// 多序列
let
groupField
=
item
.
dataSetFields
.
filter
((
datasetField
:
any
)
=>
{
return
datasetField
.
name
===
item
.
categorField
;
});
let
tempGroupField
:
Array
<
any
>
=
groupField
.
map
((
item
:
any
)
=>
{
return
item
.
name
;
});
let
seriesField
=
item
.
dataSetFields
.
filter
((
datasetField
:
any
)
=>
{
return
datasetField
.
name
===
item
.
seriesIdField
;
});
let
tempSeriesField
:
Array
<
any
>
=
seriesField
.
map
((
item
:
any
)
=>
{
return
item
.
name
;
});
let
valueField
=
item
.
dataSetFields
.
filter
((
datasetField
:
any
)
=>
{
return
datasetField
.
name
===
item
.
valueField
;
});
let
tempValueField
:
Array
<
any
>
=
valueField
.
map
((
item
:
any
)
=>
{
return
item
.
name
;
});
item
.
data
=
this
.
groupAndAdd
(
tempGroupField
,
tempSeriesField
,
tempValueField
,
data
,
item
,
groupField
,
allCodeList
);
}
else
{
//单序列
let
groupField
=
item
.
dataSetFields
.
filter
((
datasetField
:
any
)
=>
{
return
datasetField
.
name
===
item
.
categorField
;
});
let
tempGroupField
:
Array
<
any
>
=
groupField
.
map
((
item
:
any
)
=>
{
return
item
.
name
;
})
let
valueField
=
item
.
dataSetFields
.
filter
((
datasetField
:
any
)
=>
{
return
datasetField
.
name
===
item
.
valueField
;
});
let
tempValueField
:
Array
<
any
>
=
valueField
.
map
((
item
:
any
)
=>
{
return
item
.
name
;
})
item
.
data
=
this
.
groupAndAdd
(
tempGroupField
,[],
tempValueField
,
data
,
item
,
groupField
,
allCodeList
);
}
if
(
callback
&&
callback
instanceof
Function
){
callback
(
allCodeList
);
}
}
/**
* 分组和求和
* @param {Array<any>} groupField 分组属性
* @param {Array<any>} groupField 值属性
* @param {Array<any>} data 传入数据
* @param {*} groupFieldModel 分组属性模型
* @param {*} allCodeList 所有代码表
*
* @memberof ChartBase
*/
public
groupAndAdd
(
groupField
:
Array
<
any
>
,
seriesField
:
Array
<
any
>
,
valueField
:
Array
<
any
>
,
data
:
any
,
item
:
any
,
groupFieldModel
:
any
,
allCodeList
:
any
){
let
tempMap
:
Map
<
string
,
any
>
=
new
Map
();
let
groupMode
:
string
=
groupFieldModel
[
0
].
groupMode
;
let
groupKeyStr
:
string
=
""
;
data
.
forEach
((
item
:
any
)
=>
{
let
tempGroupField
:
string
=
groupField
[
0
];
groupKeyStr
=
item
[
tempGroupField
];
let
tempMapItem
:
any
=
tempMap
.
get
(
groupKeyStr
);
if
(
tempMapItem
){
tempMapItem
.
push
(
item
);
tempMap
.
set
(
groupKeyStr
,
tempMapItem
);
}
else
{
tempMap
.
set
(
groupKeyStr
,[
item
]);
}
})
// 处理多序列
if
(
seriesField
.
length
>
0
&&
tempMap
.
size
>
0
){
let
tempSeriesField
:
string
=
seriesField
[
0
];
tempMap
.
forEach
((
item
:
any
,
key
:
string
)
=>
{
let
tempItemMap
:
Map
<
string
,
any
>
=
new
Map
();
item
.
forEach
((
singleItem
:
any
)
=>
{
let
seriesValueArray
:
any
=
tempItemMap
.
get
(
singleItem
[
tempSeriesField
]);
if
(
seriesValueArray
){
seriesValueArray
.
push
(
singleItem
);
tempItemMap
.
set
(
singleItem
[
tempSeriesField
],
seriesValueArray
);
}
else
{
tempItemMap
.
set
(
singleItem
[
tempSeriesField
],[
singleItem
]);
}
})
tempMap
.
set
(
key
,
tempItemMap
);
});
}
let
returnArray
:
Array
<
any
>
=
[];
if
(
seriesField
.
length
==
0
){
//单序列
tempMap
.
forEach
((
tempItem
:
any
)
=>
{
if
(
tempItem
.
length
>
0
){
let
curObject
:
any
=
{};
let
valueResult
:
number
=
0
;
let
categorResult
:
any
;
tempItem
.
forEach
((
singleItem
:
any
)
=>
{
categorResult
=
singleItem
[
groupField
[
0
]];
valueResult
+=
singleItem
[
valueField
[
0
]];
})
Object
.
defineProperty
(
curObject
,
groupField
[
0
],
{
value
:
categorResult
,
writable
:
true
,
enumerable
:
true
,
configurable
:
true
});
Object
.
defineProperty
(
curObject
,
valueField
[
0
],
{
value
:
valueResult
,
writable
:
true
,
enumerable
:
true
,
configurable
:
true
});
returnArray
.
push
(
curObject
);
}
})
}
else
{
// 多序列
let
seriesValuesArray
:
Array
<
any
>
=
item
.
seriesValues
;
tempMap
.
forEach
((
groupItem
:
any
,
groupKey
:
string
)
=>
{
//求和
let
curObject
:
any
=
{};
Object
.
defineProperty
(
curObject
,
groupField
[
0
],
{
value
:
groupKey
,
writable
:
true
,
enumerable
:
true
,
configurable
:
true
});
seriesValuesArray
.
forEach
((
seriesValueItem
:
any
)
=>
{
Object
.
defineProperty
(
curObject
,
seriesValueItem
,
{
value
:
0
,
writable
:
true
,
enumerable
:
true
,
configurable
:
true
});
});
groupItem
.
forEach
((
seriesItem
:
any
,
seriesKey
:
string
)
=>
{
let
seriesNum
:
number
=
0
;
seriesItem
.
forEach
((
dataItem
:
any
)
=>
{
seriesNum
+=
dataItem
[
valueField
[
0
]];
})
curObject
[
seriesKey
]
=
seriesNum
;
})
returnArray
.
push
(
curObject
);
})
}
// 补全空白分类
if
(
returnArray
.
length
>
0
){
let
emptyText
=
(
groupFieldModel
[
0
]
&&
groupFieldModel
[
0
].
codeList
)?
groupFieldModel
[
0
].
codeList
.
emptytext
:(
this
.
$t
(
'app.chart.undefined'
)
as
string
);
returnArray
.
forEach
((
item
:
any
)
=>
{
if
(
!
item
[
groupField
[
0
]]){
item
[
groupField
[
0
]]
=
emptyText
;
}
})
}
returnArray
=
this
.
sortReturnArray
(
returnArray
,
groupFieldModel
,
allCodeList
);
// 雷达图数据格式处理
if
(
Object
.
is
(
item
.
type
,
'radar'
)
&&
returnArray
.
length
>
0
){
let
tempReturnArray
:
Array
<
any
>
=
[];
let
seriesValues
:
Array
<
any
>
=
item
.
seriesValues
;
if
(
seriesValues
&&
seriesValues
.
length
>
0
){
seriesValues
.
forEach
((
singleSeriesName
:
any
)
=>
{
let
singleSeriesObj
:
any
=
{};
returnArray
.
forEach
((
item
:
any
)
=>
{
Object
.
assign
(
singleSeriesObj
,{[
item
[
groupField
[
0
]]]:
item
[
singleSeriesName
]});
})
Object
.
assign
(
singleSeriesObj
,{
type
:
singleSeriesName
});
tempReturnArray
.
push
(
singleSeriesObj
);
})
}
returnArray
=
tempReturnArray
;
}
console
.
log
(
JSON
.
stringify
(
returnArray
));
return
returnArray
;
}
/**
* 排序数组
*
* @param {Array<any>} arr 传入数组
* @param {*} groupField 分组属性
* @param {*} allCodeList 所有代码表
*
* @memberof ChartBase
*/
public
sortReturnArray
(
arr
:
Array
<
any
>
,
groupField
:
any
,
allCodeList
:
any
){
let
returnArray
:
Array
<
any
>
=
[];
// todo
// 分组属性有代码表的情况(最后执行)
if
(
groupField
[
0
].
codelist
){
let
curCodeList
:
Map
<
number
,
any
>
=
allCodeList
.
get
(
groupField
[
0
].
codelist
.
tag
);
curCodeList
.
forEach
((
codelist
:
any
)
=>
{
arr
.
forEach
((
item
:
any
)
=>
{
if
(
Object
.
is
(
item
[
groupField
[
0
].
name
],
codelist
)){
returnArray
.
push
(
item
);
item
.
hasused
=
true
;
}
})
})
arr
.
forEach
((
item
:
any
,
index
:
number
)
=>
{
if
(
!
item
.
hasused
){
returnArray
.
push
(
item
);
}
})
returnArray
.
forEach
((
item
:
any
)
=>
{
delete
item
.
hasused
;
})
}
else
{
// 分组为年份
if
(
Object
.
is
(
groupField
[
0
].
groupMode
,
"YEAR"
)){
returnArray
=
arr
.
sort
((
a
:
any
,
b
:
any
)
=>
{
return
Number
(
a
[
groupField
[
0
].
name
])
-
Number
(
b
[
groupField
[
0
].
name
]);
});
}
else
if
(
Object
.
is
(
groupField
[
0
].
groupMode
,
"QUARTER"
)){
returnArray
=
this
.
handleSortGroupData
(
arr
,
groupField
,(
this
.
$t
(
'app.chart.quarter'
)
as
string
));
}
else
if
(
Object
.
is
(
groupField
[
0
].
groupMode
,
"MONTH"
)){
returnArray
=
this
.
handleSortGroupData
(
arr
,
groupField
,(
this
.
$t
(
'app.calendar.month'
)
as
string
));
}
else
if
(
Object
.
is
(
groupField
[
0
].
groupMode
,
"YEARWEEK"
)){
returnArray
=
this
.
handleSortGroupData
(
arr
,
groupField
,(
this
.
$t
(
'app.calendar.week'
)
as
string
));
}
else
if
(
Object
.
is
(
groupField
[
0
].
groupMode
,
"DAY"
)){
returnArray
=
arr
.
sort
((
a
:
any
,
b
:
any
)
=>
{
return
moment
(
a
[
groupField
[
0
].
name
]).
unix
()
-
moment
(
b
[
groupField
[
0
].
name
]).
unix
();
});
}
else
{
let
groupFieldName
:
string
=
groupField
[
0
].
name
;
let
isConvert
:
boolean
=
true
;
arr
.
forEach
((
item
:
any
)
=>
{
if
(
isNaN
(
item
[
groupFieldName
])){
isConvert
=
false
;
}
})
if
(
isConvert
){
returnArray
=
arr
.
sort
((
a
:
any
,
b
:
any
)
=>
{
return
a
[
groupFieldName
]
-
b
[
groupFieldName
];
});
}
else
{
returnArray
=
arr
;
}
}
}
return
returnArray
;
}
/**
* 排序分组模式下的数据
*
* @param {Array<any>} arr 传入数据
* @param {Array<any>} groupField 分组属性
* @param {Array<any>} label label标签
*
* @memberof ChartBase
*/
public
handleSortGroupData
(
arr
:
Array
<
any
>
,
groupField
:
any
,
label
:
string
){
arr
.
forEach
((
item
:
any
)
=>
{
let
sortFieldValue
:
Array
<
any
>
=
item
[
groupField
[
0
].
name
].
split
(
"-"
);
Object
.
assign
(
item
,{
sortField
:
Number
(
sortFieldValue
[
0
])
*
10000
+
Number
(
sortFieldValue
[
1
])});
/**
* @judgment 分组为月份时,月份+1 start
* @author mos
* @date 2020.07.20
*/
if
(
Object
.
is
(
label
,
"月"
))
{
item
[
groupField
[
0
].
name
]
=
sortFieldValue
[
0
]
+
(
this
.
$t
(
'app.chart.year'
)
as
string
)
+
(
Number
(
sortFieldValue
[
1
])
+
1
)
+
label
;
}
else
{
item
[
groupField
[
0
].
name
]
=
sortFieldValue
[
0
]
+
(
this
.
$t
(
'app.chart.year'
)
as
string
)
+
sortFieldValue
[
1
]
+
label
;
}
// @judgment 分组为月份时,月份+1 end
})
arr
.
sort
((
a
:
any
,
b
:
any
)
=>
{
return
Number
(
a
.
sortField
)
-
Number
(
b
.
sortField
);
});
arr
.
forEach
((
item
:
any
)
=>
{
delete
item
.
sortField
;
})
return
arr
;
}
/**
* 补全数据集
*
* @param {Array<any>} data 传入数据
* @param {Array<any>} item 单个序列
* @param {Array<any>} allCodeList 所有的代码表
*
* @memberof ChartBase
*/
public
completeDataSet
(
data
:
any
,
item
:
any
,
allCodeList
:
any
){
// 分组属性
let
groupField
=
item
.
dataSetFields
.
find
((
datasetField
:
any
)
=>
{
return
datasetField
.
name
===
item
.
categorField
;
});
if
(
Object
.
is
(
groupField
.
groupMode
,
""
)){
return
;
}
//分组模式为代码表(补值)
if
(
Object
.
is
(
groupField
.
groupMode
,
'CODELIST'
)){
this
.
completeCodeList
(
data
,
item
,
allCodeList
);
}
//分组模式为年/季度/月份(最大值,最小值,分组,补值)
if
(
Object
.
is
(
groupField
.
groupMode
,
"YEAR"
)
||
Object
.
is
(
groupField
.
groupMode
,
"QUARTER"
)
||
Object
.
is
(
groupField
.
groupMode
,
"MONTH"
)
||
Object
.
is
(
groupField
.
groupMode
,
"YEARWEEK"
)
||
Object
.
is
(
groupField
.
groupMode
,
"DAY"
)){
this
.
handleTimeData
(
data
,
item
,
allCodeList
,
groupField
);
}
}
/**
* 获取最大值最小值
*
* @param {Array<any>} tempTimeArray 传入数据
*
* @memberof ChartBase
*/
public
getRangeData
(
tempTimeArray
:
Array
<
any
>
){
tempTimeArray
.
forEach
((
item
:
any
)
=>
{
let
tempParams
:
Array
<
any
>
=
item
.
_i
.
split
(
"-"
);
item
.
sortField
=
Number
(
tempParams
[
0
]
+
tempParams
[
1
]);
})
tempTimeArray
.
sort
((
a
:
any
,
b
:
any
)
=>
{
return
Number
(
a
.
sortField
)
-
Number
(
b
.
sortField
);
});
tempTimeArray
.
forEach
((
item
:
any
)
=>
{
delete
item
.
sortField
;
})
return
tempTimeArray
;
}
/**
* 补全时间类型数据集
*
* @param {Array<any>} data 传入数据
* @param {Array<any>} item 单个序列
* @param {Array<any>} allCodeList 所有的代码表
* @param {Array<any>} groupField 分组属性
*
* @memberof ChartBase
*/
public
handleTimeData
(
data
:
any
,
item
:
any
,
allCodeList
:
any
,
groupField
:
any
){
let
valueField
=
item
.
dataSetFields
.
find
((
datasetField
:
any
)
=>
{
return
datasetField
.
name
===
item
.
valueField
;
});
let
groupMode
:
string
=
groupField
.
groupMode
;
// 排序数据,找到最大值、最小值
let
tempTimeArray
:
Array
<
any
>
=
[];
if
(
data
&&
data
.
length
>
0
){
data
.
forEach
((
dataItem
:
any
)
=>
{
// 判断时间类型是否为空,为空不处理
if
(
dataItem
[
groupField
.
name
]){
tempTimeArray
.
push
(
moment
(
dataItem
[
groupField
.
name
]));
}
})
}
let
maxTime
:
any
;
let
minTime
:
any
;
if
(
Object
.
is
(
groupMode
,
"YEAR"
)
||
Object
.
is
(
groupMode
,
"DAY"
)){
maxTime
=
moment
.
max
(
tempTimeArray
);
minTime
=
moment
.
min
(
tempTimeArray
);
}
if
(
Object
.
is
(
groupMode
,
"QUARTER"
)){
tempTimeArray
=
this
.
getRangeData
(
tempTimeArray
);
minTime
=
moment
().
year
((
tempTimeArray
[
0
].
_i
.
split
(
"-"
))[
0
]).
quarters
((
tempTimeArray
[
0
].
_i
.
split
(
"-"
))[
1
]);
maxTime
=
moment
().
year
((
tempTimeArray
[
tempTimeArray
.
length
-
1
].
_i
.
split
(
"-"
))[
0
]).
quarters
((
tempTimeArray
[
tempTimeArray
.
length
-
1
].
_i
.
split
(
"-"
))[
1
]);
}
if
(
Object
.
is
(
groupMode
,
"MONTH"
)){
tempTimeArray
=
this
.
getRangeData
(
tempTimeArray
);
minTime
=
moment
().
year
((
tempTimeArray
[
0
].
_i
.
split
(
"-"
))[
0
]).
month
((
tempTimeArray
[
0
].
_i
.
split
(
"-"
))[
1
]);
maxTime
=
moment
().
year
((
tempTimeArray
[
tempTimeArray
.
length
-
1
].
_i
.
split
(
"-"
))[
0
]).
month
((
tempTimeArray
[
tempTimeArray
.
length
-
1
].
_i
.
split
(
"-"
))[
1
]);
}
if
(
Object
.
is
(
groupMode
,
"YEARWEEK"
)){
tempTimeArray
=
this
.
getRangeData
(
tempTimeArray
);
minTime
=
moment
().
year
((
tempTimeArray
[
0
].
_i
.
split
(
"-"
))[
0
]).
week
((
tempTimeArray
[
0
].
_i
.
split
(
"-"
))[
1
]);
maxTime
=
moment
().
year
((
tempTimeArray
[
tempTimeArray
.
length
-
1
].
_i
.
split
(
"-"
))[
0
]).
week
((
tempTimeArray
[
tempTimeArray
.
length
-
1
].
_i
.
split
(
"-"
))[
1
]);
}
let
timeFragmentArray
:
Array
<
any
>
=
[];
let
tempGrounpData
:
Map
<
string
,
any
>
=
new
Map
();
// 时间分段
//groupMode为"YEAR"
if
(
Object
.
is
(
groupMode
,
"YEAR"
)){
let
curTime
:
any
=
minTime
;
while
(
curTime
){
if
(
curTime
.
isSameOrBefore
(
maxTime
)){
let
tempcurTime
:
any
=
curTime
.
clone
();
timeFragmentArray
.
push
(
tempcurTime
.
year
().
toString
());
curTime
=
tempcurTime
.
clone
().
add
(
1
,
'years'
);
}
else
{
curTime
=
null
;
}
}
}
//groupMode为"QUARTER"
if
(
Object
.
is
(
groupMode
,
"QUARTER"
)){
let
curTime
:
any
=
minTime
;
while
(
curTime
){
if
(
curTime
.
isSameOrBefore
(
maxTime
)){
let
tempcurTime
:
any
=
curTime
.
clone
();
timeFragmentArray
.
push
(
tempcurTime
.
year
().
toString
()
+
"-"
+
tempcurTime
.
quarter
().
toString
());
curTime
=
tempcurTime
.
clone
().
add
(
1
,
'quarters'
);
}
else
{
curTime
=
null
;
}
}
}
//groupMode为"MONTH"
if
(
Object
.
is
(
groupMode
,
"MONTH"
)){
let
curTime
:
any
=
minTime
;
while
(
curTime
){
if
(
curTime
.
isSameOrBefore
(
maxTime
)){
let
tempcurTime
:
any
=
curTime
.
clone
();
timeFragmentArray
.
push
(
tempcurTime
.
year
().
toString
()
+
"-"
+
tempcurTime
.
month
().
toString
());
curTime
=
tempcurTime
.
clone
().
add
(
1
,
'months'
);
}
else
{
curTime
=
null
;
}
}
}
//groupMode为"YEARWEEK"
if
(
Object
.
is
(
groupMode
,
"YEARWEEK"
)){
let
curTime
:
any
=
minTime
;
while
(
curTime
){
if
(
curTime
.
isSameOrBefore
(
maxTime
)){
let
tempcurTime
:
any
=
curTime
.
clone
();
timeFragmentArray
.
push
(
tempcurTime
.
year
().
toString
()
+
"-"
+
tempcurTime
.
week
().
toString
());
curTime
=
tempcurTime
.
clone
().
add
(
1
,
'weeks'
);
}
else
{
curTime
=
null
;
}
}
}
//groupMode为"DAY"
if
(
Object
.
is
(
groupMode
,
"DAY"
)){
let
curTime
:
any
=
minTime
;
while
(
curTime
){
if
(
curTime
.
isSameOrBefore
(
maxTime
)){
let
tempcurTime
:
any
=
curTime
.
clone
();
timeFragmentArray
.
push
(
tempcurTime
.
format
(
'YYYY-MM-DD'
));
curTime
=
tempcurTime
.
clone
().
add
(
1
,
'days'
);
}
else
{
curTime
=
null
;
}
}
}
data
.
forEach
((
item
:
any
)
=>
{
let
tempKeyStr
:
string
=
item
[
groupField
.
name
];
let
tempGrounpItem
:
any
=
tempGrounpData
.
get
(
tempKeyStr
);
if
(
!
tempGrounpItem
){
tempGrounpData
.
set
(
tempKeyStr
,
item
);
}
})
timeFragmentArray
.
forEach
((
timeFragment
:
any
)
=>
{
if
(
!
tempGrounpData
.
get
(
timeFragment
)){
let
copyTemp
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
data
[
0
]));
let
curObj
:
any
=
{};
curObj
[
groupField
.
name
]
=
timeFragment
;
curObj
[
valueField
.
name
]
=
0
;
Object
.
assign
(
copyTemp
,
curObj
);
data
.
push
(
copyTemp
);
}
})
}
/**
* 补全代码表
*
* @param {Array<any>} data 传入数据
* @param {Array<any>} item 单个序列
* @param {Array<any>} allCodeList 所有的代码表
*
* @memberof ChartBase
*/
public
completeCodeList
(
data
:
any
,
item
:
any
,
allCodeList
:
any
){
let
groupField
=
item
.
dataSetFields
.
find
((
datasetField
:
any
)
=>
{
return
datasetField
.
name
===
item
.
categorField
;
});
if
(
!
groupField
.
codelist
){
return
;
}
let
valueField
=
item
.
dataSetFields
.
find
((
datasetField
:
any
)
=>
{
return
datasetField
.
name
===
item
.
valueField
;
});
let
curCodeList
:
Map
<
number
,
any
>
=
allCodeList
.
get
(
groupField
.
codelist
.
tag
);
// 对分类实现分组
let
tempGrounpData
:
Map
<
string
,
any
>
=
new
Map
();
data
.
forEach
((
item
:
any
)
=>
{
let
tempGrounpItem
:
any
=
tempGrounpData
.
get
(
item
[
groupField
.
name
+
'_srfvalue'
]);
if
(
!
tempGrounpItem
){
tempGrounpData
.
set
(
item
[
groupField
.
name
+
'_srfvalue'
],
item
);
}
})
if
(
curCodeList
.
size
!==
tempGrounpData
.
size
){
curCodeList
.
forEach
((
text
:
any
,
value
:
any
)
=>
{
if
(
!
tempGrounpData
.
get
(
value
)){
let
copyTemp
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
data
[
0
]));
let
curObj
:
any
=
{};
curObj
[
groupField
.
name
+
'_srfvalue'
]
=
value
;
curObj
[
groupField
.
name
]
=
text
;
curObj
[
valueField
.
name
]
=
0
;
Object
.
assign
(
copyTemp
,
curObj
);
data
.
push
(
copyTemp
);
}
})
}
}
/**
* 处理单个属性
*
* @param {*} input 输入值
* @param {*} field 属性值
* @param {*} allCodeList 所有代码表
* @param {*} result 结果值
*
* @memberof ChartBase
*/
public
handleSingleDataSetField
(
input
:
any
,
field
:
any
,
allCodeList
:
any
,
result
:
any
,
groupField
:
any
){
let
tempFieldObj
:
any
=
{};
//存在代码表的情况(自动转化值)
if
(
field
.
codelist
){
//获取代码表
let
curCodeList
:
Map
<
number
,
any
>
=
allCodeList
.
get
(
field
.
codelist
.
tag
);
tempFieldObj
[
field
.
name
]
=
curCodeList
.
get
(
input
[
field
.
name
]);
tempFieldObj
[
field
.
name
+
'_srfvalue'
]
=
input
[
field
.
name
];
}
else
{
// 不存在代码表的情况
if
(
groupField
&&
Object
.
is
(
groupField
.
name
,
field
.
name
)){
if
(
Object
.
is
(
groupField
.
groupMode
,
"YEAR"
)
){
tempFieldObj
[
field
.
name
]
=
moment
(
input
[
field
.
name
]).
year
().
toString
();
}
else
if
(
Object
.
is
(
groupField
.
groupMode
,
"QUARTER"
)
){
tempFieldObj
[
field
.
name
]
=
moment
(
input
[
field
.
name
]).
year
().
toString
()
+
"-"
+
moment
(
input
[
field
.
name
]).
quarters
().
toString
();
}
else
if
(
Object
.
is
(
groupField
.
groupMode
,
"MONTH"
)
){
tempFieldObj
[
field
.
name
]
=
moment
(
input
[
field
.
name
]).
year
().
toString
()
+
"-"
+
moment
(
input
[
field
.
name
]).
month
().
toString
();
}
else
if
(
Object
.
is
(
groupField
.
groupMode
,
"YEARWEEK"
)
){
tempFieldObj
[
field
.
name
]
=
moment
(
input
[
field
.
name
]).
year
().
toString
()
+
"-"
+
moment
(
input
[
field
.
name
]).
week
().
toString
();
}
else
if
(
Object
.
is
(
groupField
.
groupMode
,
"DAY"
)
){
tempFieldObj
[
field
.
name
]
=
moment
(
input
[
field
.
name
]).
format
(
"YYYY-MM-DD"
);
}
else
{
tempFieldObj
[
field
.
name
]
=
input
[
field
.
name
];
}
}
else
{
tempFieldObj
[
field
.
name
]
=
input
[
field
.
name
]
}
}
Object
.
assign
(
result
,
tempFieldObj
);
}
/**
* 获取图表所需代码表
*
* @memberof ChartBase
*/
public
getChartAllCodeList
():
Promise
<
any
>
{
return
new
Promise
((
resolve
:
any
,
reject
:
any
)
=>
{
let
codeListMap
:
Map
<
string
,
any
>
=
new
Map
();
if
(
Object
.
values
(
this
.
seriesModel
).
length
>
0
){
let
tempFlag
:
boolean
=
true
;
Object
.
values
(
this
.
seriesModel
).
forEach
((
singleSeries
:
any
)
=>
{
if
(
singleSeries
.
dataSetFields
&&
singleSeries
.
dataSetFields
.
length
>
0
){
let
promiseArray
:
Array
<
any
>
=
[];
let
promiseKeyArray
:
Array
<
any
>
=
[];
singleSeries
.
dataSetFields
.
forEach
((
singleDataSetField
:
any
,
index
:
any
)
=>
{
if
(
singleDataSetField
.
codelist
){
tempFlag
=
false
;
if
(
!
codeListMap
.
get
(
singleDataSetField
.
codelist
.
tag
)){
promiseArray
.
push
(
this
.
getCodeList
(
singleDataSetField
.
codelist
));
promiseKeyArray
.
push
(
singleDataSetField
.
codelist
.
tag
);
Promise
.
all
(
promiseArray
).
then
((
result
:
any
)
=>
{
if
(
result
&&
result
.
length
>
0
){
result
.
forEach
((
codeList
:
any
)
=>
{
let
tempCodeListMap
:
Map
<
number
,
any
>
=
new
Map
();
if
(
codeList
.
length
>
0
){
codeList
.
forEach
((
codeListItem
:
any
)
=>
{
tempCodeListMap
.
set
(
codeListItem
.
value
,
codeListItem
.
text
);
})
}
codeListMap
.
set
(
singleDataSetField
.
codelist
.
tag
,
tempCodeListMap
);
})
resolve
(
codeListMap
);
}
})
}
}
})
}
})
if
(
tempFlag
){
resolve
(
codeListMap
);}
}
else
{
resolve
(
codeListMap
);
}
})
}
/**
* 获取代码表
*
* @returns {Promise<any>}
* @memberof ChartBase
*/
public
getCodeList
(
codeListObject
:
any
):
Promise
<
any
>
{
return
new
Promise
((
resolve
:
any
,
reject
:
any
)
=>
{
if
(
codeListObject
.
tag
&&
Object
.
is
(
codeListObject
.
type
,
"STATIC"
)){
const
codelist
=
this
.
$store
.
getters
.
getCodeList
(
codeListObject
.
tag
);
if
(
codelist
)
{
resolve
([...
JSON
.
parse
(
JSON
.
stringify
(
codelist
.
items
))]);
}
else
{
console
.
log
(
`----
${
codeListObject
.
tag
}
----代码表不存在`
);
}
}
else
if
(
codeListObject
.
tag
&&
Object
.
is
(
codeListObject
.
type
,
"DYNAMIC"
)){
this
.
codeListService
.
getItems
(
codeListObject
.
tag
).
then
((
res
:
any
)
=>
{
resolve
(
res
);
}).
catch
((
error
:
any
)
=>
{
console
.
log
(
`----
${
codeListObject
.
tag
}
----代码表不存在`
);
});
}
})
}
}
</
script
>
<
style
lang=
'less'
>
@import './histogram-chart.less';
</
style
>
\ No newline at end of file
app_Web/src/widgets/ibizorder-detail/histogram-chart/histogram-chart-model.ts
0 → 100644
浏览文件 @
8c837340
/**
* Histogram 部件模型
*
* @export
* @class HistogramModel
*/
export
default
class
HistogramModel
{
/**
* 获取数据项集合
*
* @returns {any[]}
* @memberof HistogramChartMode
*/
public
getDataItems
():
any
[]
{
return
[
{
name
:
'size'
,
prop
:
'size'
},
{
name
:
'query'
,
prop
:
'query'
},
{
name
:
'page'
,
prop
:
'page'
},
{
name
:
'sort'
,
prop
:
'sort'
}
]
}
}
\ No newline at end of file
app_Web/src/widgets/ibizorder-detail/histogram-chart/histogram-chart-service.ts
0 → 100644
浏览文件 @
8c837340
import
{
Http
,
Util
,
Errorlog
}
from
'@/utils'
;
import
ControlService
from
'@/widgets/control-service'
;
import
IBIZOrderDetailService
from
'@/service/ibizorder-detail/ibizorder-detail-service'
;
import
HistogramModel
from
'./histogram-chart-model'
;
/**
* Histogram 部件服务对象
*
* @export
* @class HistogramService
*/
export
default
class
HistogramService
extends
ControlService
{
/**
* 订单明细服务对象
*
* @type {IBIZOrderDetailService}
* @memberof HistogramService
*/
public
appEntityService
:
IBIZOrderDetailService
=
new
IBIZOrderDetailService
({
$store
:
this
.
getStore
()
});
/**
* 设置从数据模式
*
* @type {boolean}
* @memberof HistogramService
*/
public
setTempMode
(){
this
.
isTempMode
=
false
;
}
/**
* Creates an instance of HistogramService.
*
* @param {*} [opts={}]
* @memberof HistogramService
*/
constructor
(
opts
:
any
=
{})
{
super
(
opts
);
this
.
model
=
new
HistogramModel
();
}
/**
* 查询数据
*
* @param {string} action
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof HistogramService
*/
@
Errorlog
public
search
(
action
:
string
,
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
const
{
data
:
Data
,
context
:
Context
}
=
this
.
handleRequestData
(
action
,
context
,
data
,
true
);
return
new
Promise
((
resolve
:
any
,
reject
:
any
)
=>
{
const
_appEntityService
:
any
=
this
.
appEntityService
;
let
result
:
Promise
<
any
>
;
if
(
_appEntityService
[
action
]
&&
_appEntityService
[
action
]
instanceof
Function
)
{
result
=
_appEntityService
[
action
](
Context
,
Data
,
isloading
);
}
else
{
result
=
_appEntityService
.
FetchDefault
(
Context
,
Data
,
isloading
);
}
result
.
then
((
response
)
=>
{
resolve
(
response
);
}).
catch
(
response
=>
{
reject
(
response
);
});
});
}
}
\ No newline at end of file
app_Web/src/widgets/ibizorder-detail/histogram-chart/histogram-chart.less
0 → 100644
浏览文件 @
8c837340
// this is less
.app-data-chart {
width: 100%;
height: 100%;
.chart-no-data{
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
i{
margin-right: 5px;
}
}
}
\ No newline at end of file
app_Web/src/widgets/ibizorder-detail/histogram-chart/histogram-chart.vue
0 → 100644
浏览文件 @
8c837340
<
script
lang=
'tsx'
>
import
{
Component
}
from
'vue-property-decorator'
;
import
HistogramBase
from
'./histogram-chart-base.vue'
;
@
Component
({
components
:
{
}
})
export
default
class
Histogram
extends
HistogramBase
{
}
</
script
>
\ No newline at end of file
demo-core/src/main/resources/permission/systemResource.json
浏览文件 @
8c837340
...
@@ -302,7 +302,7 @@
...
@@ -302,7 +302,7 @@
{
{
"appid"
:
"Web"
,
"appid"
:
"Web"
,
"appname"
:
"演示应用"
,
"appname"
:
"演示应用"
,
"appmenu"
:[{
"menuid"
:
"MainMenu"
,
"menuname"
:
"MainMenu"
,
"menuitem"
:[{
"id"
:
"menuitem1"
,
"name"
:
"工作台"
},{
"id"
:
"menuitem3"
,
"name"
:
"控件"
,
"items"
:[{
"id"
:
"menuitem6"
,
"name"
:
"默认数据类型"
},{
"id"
:
"menuitem7"
,
"name"
:
"默认编辑器类型"
},{
"id"
:
"menuitem15"
,
"name"
:
"基础表单项"
},{
"id"
:
"menuitem72"
,
"name"
:
"扩展编辑器"
},{
"id"
:
"menuitem114"
,
"name"
:
"扩展编辑器表格"
}]},{
"id"
:
"menuitem4"
,
"name"
:
"部件"
,
"items"
:[{
"id"
:
"menuitem12"
,
"name"
:
"编辑表单"
,
"items"
:[{
"id"
:
"menuitem107"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem47"
,
"name"
:
"新建默认值"
},{
"id"
:
"menuitem99"
,
"name"
:
"更新默认值"
},{
"id"
:
"menuitem48"
,
"name"
:
"输入提示"
},{
"id"
:
"menuitem49"
,
"name"
:
"辅助输入"
},{
"id"
:
"menuitem50"
,
"name"
:
"自动填充"
},{
"id"
:
"menuitem51"
,
"name"
:
"超链接"
},{
"id"
:
"menuitem52"
,
"name"
:
"表单值重置"
},{
"id"
:
"menuitem55"
,
"name"
:
"动态显示"
},{
"id"
:
"menuitem53"
,
"name"
:
"动态启用"
},{
"id"
:
"menuitem54"
,
"name"
:
"动态空输入"
},{
"id"
:
"menuitem56"
,
"name"
:
"表单项更新"
},{
"id"
:
"menuitem108"
,
"name"
:
"表单值规则"
}]},{
"id"
:
"menuitem16"
,
"name"
:
"搜索表单"
},{
"id"
:
"menuitem13"
,
"name"
:
"表格"
,
"items"
:[{
"id"
:
"menuitem57"
,
"name"
:
"禁用排序"
},{
"id"
:
"menuitem59"
,
"name"
:
"行操作"
},{
"id"
:
"menuitem58"
,
"name"
:
"行编辑"
},{
"id"
:
"menuitem73"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem74"
,
"name"
:
"表格行编辑"
},{
"id"
:
"menuitem75"
,
"name"
:
"新建默认值"
},{
"id"
:
"menuitem76"
,
"name"
:
"更新默认值"
},{
"id"
:
"menuitem77"
,
"name"
:
"表格值规则"
},{
"id"
:
"menuitem132"
,
"name"
:
"表格项更新"
},{
"id"
:
"menuitem133"
,
"name"
:
"表格项值重置"
},{
"id"
:
"menuitem78"
,
"name"
:
"自动分组"
},{
"id"
:
"menuitem80"
,
"name"
:
"代码表分组"
},{
"id"
:
"menuitem81"
,
"name"
:
"当前页聚合"
},{
"id"
:
"menuitem82"
,
"name"
:
"远程聚合"
}]},{
"id"
:
"menuitem83"
,
"name"
:
"列表"
,
"items"
:[{
"id"
:
"menuitem84"
,
"name"
:
"列表内置功能"
},{
"id"
:
"menuitem85"
,
"name"
:
"列表自动分组"
},{
"id"
:
"menuitem86"
,
"name"
:
"代码表分组"
},{
"id"
:
"menuitem91"
,
"name"
:
"列表嵌入面板"
}]},{
"id"
:
"menuitem14"
,
"name"
:
"树视图"
,
"items"
:[{
"id"
:
"menuitem60"
,
"name"
:
"静态节点"
},{
"id"
:
"menuitem61"
,
"name"
:
"动态节点(代码表)"
},{
"id"
:
"menuitem62"
,
"name"
:
"动态节点(实体)"
},{
"id"
:
"menuitem63"
,
"name"
:
"右键操作"
},{
"id"
:
"menuitem64"
,
"name"
:
"动态参数过滤"
},{
"id"
:
"menuitem110"
,
"name"
:
"树表格"
}]},{
"id"
:
"menuitem37"
,
"name"
:
"图表"
,
"items"
:[{
"id"
:
"menuitem38"
,
"name"
:
"柱状图"
},{
"id"
:
"menuitem39"
,
"name"
:
"折线图"
},{
"id"
:
"menuitem40"
,
"name"
:
"饼图"
},{
"id"
:
"menuitem41"
,
"name"
:
"区域图"
},{
"id"
:
"menuitem42"
,
"name"
:
"雷达图"
}]},{
"id"
:
"menuitem17"
,
"name"
:
"向导"
,
"items"
:[{
"id"
:
"menuitem134"
,
"name"
:
"向导视图"
},{
"id"
:
"menuitem135"
,
"name"
:
"状态向导"
}]},{
"id"
:
"menuitem18"
,
"name"
:
"界面行为"
,
"items"
:[{
"id"
:
"menuitem65"
,
"name"
:
"前端界面行为"
},{
"id"
:
"menuitem66"
,
"name"
:
"后台界面行为"
}]},{
"id"
:
"menuitem87"
,
"name"
:
"数据视图"
,
"items"
:[{
"id"
:
"menuitem88"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem89"
,
"name"
:
"自动分组"
},{
"id"
:
"menuitem90"
,
"name"
:
"代码表分组"
},{
"id"
:
"menuitem94"
,
"name"
:
"项布局面板"
}]},{
"id"
:
"menuitem95"
,
"name"
:
"日历"
,
"items"
:[{
"id"
:
"menuitem96"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem97"
,
"name"
:
"时间轴样式"
},{
"id"
:
"menuitem109"
,
"name"
:
"项布局面板"
}]},{
"id"
:
"menuitem101"
,
"name"
:
"看板"
,
"items"
:[{
"id"
:
"menuitem102"
,
"name"
:
"看板内置功能"
},{
"id"
:
"menuitem104"
,
"name"
:
"代码表分组"
},{
"id"
:
"menuitem105"
,
"name"
:
"嵌入视图面板"
}]},{
"id"
:
"menuitem111"
,
"name"
:
"甘特图"
,
"items"
:[{
"id"
:
"menuitem112"
,
"name"
:
"甘特图"
}]},{
"id"
:
"menuitem119"
,
"name"
:
"分页视图"
,
"items"
:[{
"id"
:
"menuitem120"
,
"name"
:
"分页导航"
}]},{
"id"
:
"menuitem121"
,
"name"
:
"多编辑视图"
,
"items"
:[{
"id"
:
"menuitem115"
,
"name"
:
"多表单(行记录)"
},{
"id"
:
"menuitem123"
,
"name"
:
"多表单(上分页)"
}]},{
"id"
:
"menuitem122"
,
"name"
:
"数据关系栏"
,
"items"
:[{
"id"
:
"menuitem116"
,
"name"
:
"编辑视图(左右关系)"
},{
"id"
:
"menuitem117"
,
"name"
:
"编辑视图(上下关系)"
},{
"id"
:
"menuitem118"
,
"name"
:
"编辑视图(分页关系)"
}]},{
"id"
:
"menuitem125"
,
"name"
:
"数据看板"
,
"items"
:[{
"id"
:
"menuitem126"
,
"name"
:
"实体数据看板"
}]},{
"id"
:
"menuitem127"
,
"name"
:
"导航视图"
,
"items"
:[{
"id"
:
"menuitem128"
,
"name"
:
"表格导航"
}]},{
"id"
:
"menuitem129"
,
"name"
:
"选项操作"
,
"items"
:[{
"id"
:
"menuitem130"
,
"name"
:
"选项操作视图"
},{
"id"
:
"menuitem131"
,
"name"
:
"表格选项操作"
}]}]},{
"id"
:
"menuitem5"
,
"name"
:
"视图"
,
"items"
:[{
"id"
:
"menuitem9"
,
"name"
:
"列表视图"
,
"items"
:[{
"id"
:
"menuitem19"
,
"name"
:
"常规表格视图"
},{
"id"
:
"menuitem21"
,
"name"
:
"左右表格视图"
},{
"id"
:
"menuitem20"
,
"name"
:
"嵌入表格视图"
}]},{
"id"
:
"menuitem8"
,
"name"
:
"编辑视图"
,
"items"
:[{
"id"
:
"menuitem22"
,
"name"
:
"常规编辑视图"
},{
"id"
:
"menuitem23"
,
"name"
:
"左右编辑视图"
},{
"id"
:
"menuitem24"
,
"name"
:
"分页编辑视图"
},{
"id"
:
"menuitem25"
,
"name"
:
"嵌入编辑视图"
}]},{
"id"
:
"menuitem26"
,
"name"
:
"选择视图"
,
"items"
:[{
"id"
:
"menuitem27"
,
"name"
:
"单选视图"
},{
"id"
:
"menuitem28"
,
"name"
:
"多选视图"
},{
"id"
:
"menuitem29"
,
"name"
:
"树形选择视图"
},{
"id"
:
"menuitem30"
,
"name"
:
"左右单选视图"
},{
"id"
:
"menuitem31"
,
"name"
:
"左右多选视图"
}]},{
"id"
:
"menuitem10"
,
"name"
:
"导航视图"
,
"items"
:[{
"id"
:
"menuitem32"
,
"name"
:
"常规导航视图"
},{
"id"
:
"menuitem33"
,
"name"
:
"分页导航视图"
},{
"id"
:
"menuitem34"
,
"name"
:
"嵌入导航视图"
}]},{
"id"
:
"menuitem11"
,
"name"
:
"其他视图"
,
"items"
:[{
"id"
:
"menuitem35"
,
"name"
:
"图表视图"
},{
"id"
:
"menuitem36"
,
"name"
:
"报表视图"
},{
"id"
:
"menuitem98"
,
"name"
:
"自定义视图"
}]},{
"id"
:
"menuitem79"
,
"name"
:
"表格视图"
}]},{
"id"
:
"menuitem69"
,
"name"
:
"工作流"
},{
"id"
:
"menuitem2"
,
"name"
:
"更多"
,
"items"
:[{
"id"
:
"menuitem46"
,
"name"
:
"数据导出导入"
},{
"id"
:
"menuitem45"
,
"name"
:
"数据打印"
},{
"id"
:
"menuitem67"
,
"name"
:
"索引实体"
},{
"id"
:
"menuitem68"
,
"name"
:
"继承实体"
},{
"id"
:
"menuitem70"
,
"name"
:
"主状态"
},{
"id"
:
"menuitem71"
,
"name"
:
"多表单"
}]},{
"id"
:
"menuitem92"
,
"name"
:
"其他"
,
"items"
:[{
"id"
:
"menuitem93"
,
"name"
:
"示例实体02示例数据补充"
},{
"id"
:
"menuitem100"
,
"name"
:
"订单示例数据补充"
},{
"id"
:
"menuitem103"
,
"name"
:
"产品示例数据补充"
},{
"id"
:
"menuitem106"
,
"name"
:
"示例实体03示例数据补充"
},{
"id"
:
"menuitem113"
,
"name"
:
"订单类型添加"
},{
"id"
:
"menuitem124"
,
"name"
:
"示例实体01数据补充"
}]}]
}]
"appmenu"
:[{
"menuid"
:
"MainMenu"
,
"menuname"
:
"MainMenu"
,
"menuitem"
:[{
"id"
:
"menuitem1"
,
"name"
:
"工作台"
},{
"id"
:
"menuitem3"
,
"name"
:
"控件"
,
"items"
:[{
"id"
:
"menuitem6"
,
"name"
:
"默认数据类型"
},{
"id"
:
"menuitem7"
,
"name"
:
"默认编辑器类型"
},{
"id"
:
"menuitem15"
,
"name"
:
"基础表单项"
},{
"id"
:
"menuitem72"
,
"name"
:
"扩展编辑器"
},{
"id"
:
"menuitem114"
,
"name"
:
"扩展编辑器表格"
}]},{
"id"
:
"menuitem4"
,
"name"
:
"部件"
,
"items"
:[{
"id"
:
"menuitem12"
,
"name"
:
"编辑表单"
,
"items"
:[{
"id"
:
"menuitem107"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem47"
,
"name"
:
"新建默认值"
},{
"id"
:
"menuitem99"
,
"name"
:
"更新默认值"
},{
"id"
:
"menuitem48"
,
"name"
:
"输入提示"
},{
"id"
:
"menuitem49"
,
"name"
:
"辅助输入"
},{
"id"
:
"menuitem50"
,
"name"
:
"自动填充"
},{
"id"
:
"menuitem51"
,
"name"
:
"超链接"
},{
"id"
:
"menuitem52"
,
"name"
:
"表单值重置"
},{
"id"
:
"menuitem55"
,
"name"
:
"动态显示"
},{
"id"
:
"menuitem53"
,
"name"
:
"动态启用"
},{
"id"
:
"menuitem54"
,
"name"
:
"动态空输入"
},{
"id"
:
"menuitem56"
,
"name"
:
"表单项更新"
},{
"id"
:
"menuitem108"
,
"name"
:
"表单值规则"
}]},{
"id"
:
"menuitem16"
,
"name"
:
"搜索表单"
},{
"id"
:
"menuitem13"
,
"name"
:
"表格"
,
"items"
:[{
"id"
:
"menuitem57"
,
"name"
:
"禁用排序"
},{
"id"
:
"menuitem59"
,
"name"
:
"行操作"
},{
"id"
:
"menuitem58"
,
"name"
:
"行编辑"
},{
"id"
:
"menuitem73"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem74"
,
"name"
:
"表格行编辑"
},{
"id"
:
"menuitem75"
,
"name"
:
"新建默认值"
},{
"id"
:
"menuitem76"
,
"name"
:
"更新默认值"
},{
"id"
:
"menuitem77"
,
"name"
:
"表格值规则"
},{
"id"
:
"menuitem132"
,
"name"
:
"表格项更新"
},{
"id"
:
"menuitem133"
,
"name"
:
"表格项值重置"
},{
"id"
:
"menuitem78"
,
"name"
:
"自动分组"
},{
"id"
:
"menuitem80"
,
"name"
:
"代码表分组"
},{
"id"
:
"menuitem81"
,
"name"
:
"当前页聚合"
},{
"id"
:
"menuitem82"
,
"name"
:
"远程聚合"
}]},{
"id"
:
"menuitem83"
,
"name"
:
"列表"
,
"items"
:[{
"id"
:
"menuitem84"
,
"name"
:
"列表内置功能"
},{
"id"
:
"menuitem85"
,
"name"
:
"列表自动分组"
},{
"id"
:
"menuitem86"
,
"name"
:
"代码表分组"
},{
"id"
:
"menuitem91"
,
"name"
:
"列表嵌入面板"
}]},{
"id"
:
"menuitem14"
,
"name"
:
"树视图"
,
"items"
:[{
"id"
:
"menuitem60"
,
"name"
:
"静态节点"
},{
"id"
:
"menuitem61"
,
"name"
:
"动态节点(代码表)"
},{
"id"
:
"menuitem62"
,
"name"
:
"动态节点(实体)"
},{
"id"
:
"menuitem63"
,
"name"
:
"右键操作"
},{
"id"
:
"menuitem64"
,
"name"
:
"动态参数过滤"
},{
"id"
:
"menuitem110"
,
"name"
:
"树表格"
}]},{
"id"
:
"menuitem37"
,
"name"
:
"图表"
,
"items"
:[{
"id"
:
"menuitem38"
,
"name"
:
"柱状图"
},{
"id"
:
"menuitem39"
,
"name"
:
"折线图"
},{
"id"
:
"menuitem40"
,
"name"
:
"饼图"
},{
"id"
:
"menuitem41"
,
"name"
:
"区域图"
},{
"id"
:
"menuitem42"
,
"name"
:
"雷达图"
}]},{
"id"
:
"menuitem17"
,
"name"
:
"向导"
,
"items"
:[{
"id"
:
"menuitem134"
,
"name"
:
"向导视图"
},{
"id"
:
"menuitem135"
,
"name"
:
"状态向导"
}]},{
"id"
:
"menuitem18"
,
"name"
:
"界面行为"
,
"items"
:[{
"id"
:
"menuitem65"
,
"name"
:
"前端界面行为"
},{
"id"
:
"menuitem66"
,
"name"
:
"后台界面行为"
}]},{
"id"
:
"menuitem87"
,
"name"
:
"数据视图"
,
"items"
:[{
"id"
:
"menuitem88"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem89"
,
"name"
:
"自动分组"
},{
"id"
:
"menuitem90"
,
"name"
:
"代码表分组"
},{
"id"
:
"menuitem94"
,
"name"
:
"项布局面板"
}]},{
"id"
:
"menuitem95"
,
"name"
:
"日历"
,
"items"
:[{
"id"
:
"menuitem96"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem97"
,
"name"
:
"时间轴样式"
},{
"id"
:
"menuitem109"
,
"name"
:
"项布局面板"
}]},{
"id"
:
"menuitem101"
,
"name"
:
"看板"
,
"items"
:[{
"id"
:
"menuitem102"
,
"name"
:
"看板内置功能"
},{
"id"
:
"menuitem104"
,
"name"
:
"代码表分组"
},{
"id"
:
"menuitem105"
,
"name"
:
"嵌入视图面板"
}]},{
"id"
:
"menuitem111"
,
"name"
:
"甘特图"
,
"items"
:[{
"id"
:
"menuitem112"
,
"name"
:
"甘特图"
}]},{
"id"
:
"menuitem119"
,
"name"
:
"分页视图"
,
"items"
:[{
"id"
:
"menuitem120"
,
"name"
:
"分页导航"
}]},{
"id"
:
"menuitem121"
,
"name"
:
"多编辑视图"
,
"items"
:[{
"id"
:
"menuitem115"
,
"name"
:
"多表单(行记录)"
},{
"id"
:
"menuitem123"
,
"name"
:
"多表单(上分页)"
}]},{
"id"
:
"menuitem122"
,
"name"
:
"数据关系栏"
,
"items"
:[{
"id"
:
"menuitem116"
,
"name"
:
"编辑视图(左右关系)"
},{
"id"
:
"menuitem117"
,
"name"
:
"编辑视图(上下关系)"
},{
"id"
:
"menuitem118"
,
"name"
:
"编辑视图(分页关系)"
}]},{
"id"
:
"menuitem125"
,
"name"
:
"数据看板"
,
"items"
:[{
"id"
:
"menuitem126"
,
"name"
:
"实体数据看板"
}
,{
"id"
:
"menuitem136"
,
"name"
:
"订单明细柱状图"
}
]},{
"id"
:
"menuitem127"
,
"name"
:
"导航视图"
,
"items"
:[{
"id"
:
"menuitem128"
,
"name"
:
"表格导航"
}]},{
"id"
:
"menuitem129"
,
"name"
:
"选项操作"
,
"items"
:[{
"id"
:
"menuitem130"
,
"name"
:
"选项操作视图"
},{
"id"
:
"menuitem131"
,
"name"
:
"表格选项操作"
}]}]},{
"id"
:
"menuitem5"
,
"name"
:
"视图"
,
"items"
:[{
"id"
:
"menuitem9"
,
"name"
:
"列表视图"
,
"items"
:[{
"id"
:
"menuitem19"
,
"name"
:
"常规表格视图"
},{
"id"
:
"menuitem21"
,
"name"
:
"左右表格视图"
},{
"id"
:
"menuitem20"
,
"name"
:
"嵌入表格视图"
}]},{
"id"
:
"menuitem8"
,
"name"
:
"编辑视图"
,
"items"
:[{
"id"
:
"menuitem22"
,
"name"
:
"常规编辑视图"
},{
"id"
:
"menuitem23"
,
"name"
:
"左右编辑视图"
},{
"id"
:
"menuitem24"
,
"name"
:
"分页编辑视图"
},{
"id"
:
"menuitem25"
,
"name"
:
"嵌入编辑视图"
}]},{
"id"
:
"menuitem26"
,
"name"
:
"选择视图"
,
"items"
:[{
"id"
:
"menuitem27"
,
"name"
:
"单选视图"
},{
"id"
:
"menuitem28"
,
"name"
:
"多选视图"
},{
"id"
:
"menuitem29"
,
"name"
:
"树形选择视图"
},{
"id"
:
"menuitem30"
,
"name"
:
"左右单选视图"
},{
"id"
:
"menuitem31"
,
"name"
:
"左右多选视图"
}]},{
"id"
:
"menuitem10"
,
"name"
:
"导航视图"
,
"items"
:[{
"id"
:
"menuitem32"
,
"name"
:
"常规导航视图"
},{
"id"
:
"menuitem33"
,
"name"
:
"分页导航视图"
},{
"id"
:
"menuitem34"
,
"name"
:
"嵌入导航视图"
}]},{
"id"
:
"menuitem11"
,
"name"
:
"其他视图"
,
"items"
:[{
"id"
:
"menuitem35"
,
"name"
:
"图表视图"
},{
"id"
:
"menuitem36"
,
"name"
:
"报表视图"
},{
"id"
:
"menuitem98"
,
"name"
:
"自定义视图"
}]},{
"id"
:
"menuitem79"
,
"name"
:
"表格视图"
}]},{
"id"
:
"menuitem69"
,
"name"
:
"工作流"
},{
"id"
:
"menuitem2"
,
"name"
:
"更多"
,
"items"
:[{
"id"
:
"menuitem46"
,
"name"
:
"数据导出导入"
},{
"id"
:
"menuitem45"
,
"name"
:
"数据打印"
},{
"id"
:
"menuitem67"
,
"name"
:
"索引实体"
},{
"id"
:
"menuitem68"
,
"name"
:
"继承实体"
},{
"id"
:
"menuitem70"
,
"name"
:
"主状态"
},{
"id"
:
"menuitem71"
,
"name"
:
"多表单"
}]},{
"id"
:
"menuitem92"
,
"name"
:
"其他"
,
"items"
:[{
"id"
:
"menuitem93"
,
"name"
:
"示例实体02示例数据补充"
},{
"id"
:
"menuitem100"
,
"name"
:
"订单示例数据补充"
},{
"id"
:
"menuitem103"
,
"name"
:
"产品示例数据补充"
},{
"id"
:
"menuitem106"
,
"name"
:
"示例实体03示例数据补充"
},{
"id"
:
"menuitem113"
,
"name"
:
"订单类型添加"
},{
"id"
:
"menuitem124"
,
"name"
:
"示例实体01数据补充"
}]}]
}]
}
}
]
]
}
}
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录