Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
I
ibzdict
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
ibiz4jteam
ibzdict
提交
c88b8fb1
提交
c88b8fb1
编写于
4月 17, 2020
作者:
ibizdev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ibizdev提交
上级
2516ef5e
变更
43
显示空白字符变更
内嵌
并排
正在显示
43 个修改的文件
包含
561 行增加
和
614 行删除
+561
-614
app-data-upload.less
app_web/src/components/app-data-upload/app-data-upload.less
+6
-0
app-data-upload.vue
app_web/src/components/app-data-upload/app-data-upload.vue
+70
-55
en-US.ts
app_web/src/locale/lang/en-US.ts
+1
-1
zh-CN.ts
app_web/src/locale/lang/zh-CN.ts
+1
-1
index.ts
app_web/src/mock/index.ts
+1
-1
ibzdict-item-edit-view-base.vue
...ct/ibzdict-item-edit-view/ibzdict-item-edit-view-base.vue
+17
-44
ibzdict-item-edit-view.vue
...es/dict/ibzdict-item-edit-view/ibzdict-item-edit-view.vue
+1
-1
ibzdict-item-grid-view-base.vue
...ct/ibzdict-item-grid-view/ibzdict-item-grid-view-base.vue
+20
-51
ibzdict-item-grid-view.vue
...es/dict/ibzdict-item-grid-view/ibzdict-item-grid-view.vue
+2
-2
entity-service-register.ts
app_web/src/service/entity-service-register.ts
+1
-1
ui-service-register.ts
app_web/src/uiservice/ui-service-register.ts
+1
-1
main-grid-base.vue
app_web/src/widgets/ibzdict/main-grid/main-grid-base.vue
+1
-1
default-searchform-base.vue
...bzdictitem/default-searchform/default-searchform-base.vue
+57
-225
main-grid-base.vue
app_web/src/widgets/ibzdictitem/main-grid/main-grid-base.vue
+33
-4
main-grid-model.ts
app_web/src/widgets/ibzdictitem/main-grid/main-grid-model.ts
+105
-93
main-grid-service.ts
...eb/src/widgets/ibzdictitem/main-grid/main-grid-service.ts
+2
-1
webAppController.java
...eb/src/main/java/cn/ibizlab/web/app/webAppController.java
+0
-1
webDataEntitySysApiMappingFilter.java
.../ibizlab/web/filter/webDataEntitySysApiMappingFilter.java
+61
-0
webApplication.java
...-app-web/src/main/java/cn/ibizlab/web/webApplication.java
+1
-4
application-web-dev.yml
...bzdict-app-web/src/main/resources/application-web-dev.yml
+34
-0
application-web-prod.yml
...zdict-app-web/src/main/resources/application-web-prod.yml
+36
-0
application.yml
...ct-app/ibzdict-app-web/src/main/resources/application.yml
+1
-1
pom.xml
ibzdict-app/pom.xml
+0
-6
pom.xml
ibzdict-boot/pom.xml
+5
-0
IbzdictApplication.java
...ict-boot/src/main/java/cn/ibizlab/IbzdictApplication.java
+0
-1
application.yml
ibzdict-boot/src/main/resources/application.yml
+2
-1
IBZDictItemSearchContext.java
...cn/ibizlab/core/dict/filter/IBZDictItemSearchContext.java
+0
-2
IBZDictSearchContext.java
...ava/cn/ibizlab/core/dict/filter/IBZDictSearchContext.java
+0
-2
IBZDictItemMapper.java
...n/java/cn/ibizlab/core/dict/mapper/IBZDictItemMapper.java
+6
-0
IBZDictMapper.java
.../main/java/cn/ibizlab/core/dict/mapper/IBZDictMapper.java
+2
-0
IIBZDictItemService.java
...ava/cn/ibizlab/core/dict/service/IIBZDictItemService.java
+7
-0
IIBZDictService.java
...in/java/cn/ibizlab/core/dict/service/IIBZDictService.java
+2
-0
IBZDictDTO.java
...ain/java/cn/ibizlab/core/dict/service/dto/IBZDictDTO.java
+35
-34
IBZDictItemDTO.java
...java/cn/ibizlab/core/dict/service/dto/IBZDictItemDTO.java
+39
-59
IBZDictItemServiceImpl.java
...bizlab/core/dict/service/impl/IBZDictItemServiceImpl.java
+0
-3
IBZDictServiceImpl.java
...cn/ibizlab/core/dict/service/impl/IBZDictServiceImpl.java
+0
-3
IBZDictItemMapping.java
...ibizlab/core/dict/service/mapping/IBZDictItemMapping.java
+0
-1
IBZDictMapping.java
.../cn/ibizlab/core/dict/service/mapping/IBZDictMapping.java
+0
-1
IBZDictMapper.xml
.../src/main/resources/mapper/dict/ibzdict/IBZDictMapper.xml
+1
-1
IBZDictItemMapper.xml
...n/resources/mapper/dict/ibzdictitem/IBZDictItemMapper.xml
+1
-1
IBZDictResource.java
.../cn/ibizlab/service/dictapi/resource/IBZDictResource.java
+1
-3
DTOBase.java
...ct-util/src/main/java/cn/ibizlab/util/domain/DTOBase.java
+8
-6
UniqueNameGenerator.java
...main/java/cn/ibizlab/util/helper/UniqueNameGenerator.java
+0
-2
未找到文件。
app_web/src/components/app-data-upload/app-data-upload.less
浏览文件 @
c88b8fb1
...
...
@@ -12,4 +12,10 @@
width: 100%;
overflow: auto;
}
.font-class{
margin: 0px;
padding: 0px;
font-family: '微软雅黑','黑体','宋体';
font-size: 16px;
}
}
\ No newline at end of file
app_web/src/components/app-data-upload/app-data-upload.vue
浏览文件 @
c88b8fb1
...
...
@@ -2,47 +2,44 @@
<div
class=
"app-data-upload-view"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"4"
>
<el-button
type=
"primary"
@
click=
"handleUpLoad"
>
选取文件
</el-button>
<el-button
type=
"primary"
@
click=
"handleUpLoad"
>
{{
$t
(
'info.selectfile'
)
}}
</el-button>
<input
ref=
"inputUpLoad"
type=
"file"
style=
"display: none"
accept=
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
@
change=
"importFile"
/>
</el-col>
<el-col
:span=
"4"
>
<el-button
type=
"primary"
@
click=
"uploadServer"
>
上传服务器
</el-button>
<el-button
type=
"primary"
@
click=
"uploadServer"
>
{{
$t
(
'info.uploadserver'
)
}}
</el-button>
</el-col>
<el-col
:span=
"16"
>
<div
class=
"import-temp"
><span
style=
"cursor: pointer;"
@
click=
"downloadTemp"
>
下载导入数据模板
</span></div>
<div
class=
"import-temp"
><span
style=
"cursor: pointer;"
@
click=
"downloadTemp"
>
{{
$t
(
'info.datatemplate'
)
}}
</span></div>
</el-col>
</el-row>
<el-divider></el-divider>
<el-row
style=
"height:calc(100% - 128px);padding: 0px 12px;"
>
<div
class=
"data-info-content"
>
<template
v-if=
"importDataArray.length >0"
>
<template
v-if=
"importDataArray.length >0
&& isUploading === false
"
>
<ul>
<li
v-for=
"(item,index) in importDataArray"
:key=
"index"
>
{{
'数据标识为'
+
item
[
importUniqueItem
]
+
'读取成功
......'
}}
<li
v-for=
"(item,index) in importDataArray"
:key=
"index"
class=
"font-class"
>
{{
$t
(
'info.dataid'
)
+
item
[
importUniqueItem
]
+
$t
(
'info.read'
)
+
'
......'
}}
</li>
</ul>
</
template
>
<
template
v-if=
"
importDataArray.length ==
0"
>
{{
uploadStatus
===
true
?
"导入中......"
:
""
}}
<
template
v-if=
"
hasImported === true && importDataArray.length ===
0"
>
<span
class=
"font-class"
>
{{
isUploading
===
true
?
$t
(
'info.importing'
)
+
"......"
:
$t
(
'info.completed'
)
}}
</span>
</
template
>
</div>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"4"
>
<el-row>
<
!-- <
el-col :span="4">
<div class="import-temp">
<
span
style=
"cursor: pointer;display: inline-block;"
@
click=
"downloadSuccessData"
>
{{importSuccessData.length >0?"下载导入成功数据":""}}
</span
>
<
div style="cursor: pointer;display: inline-block;" @click="downloadSuccessData">{{importSuccessData.length >0?"下载导入成功数据":""}}</div
>
</div>
</el-col>
<el-col :span="4">
<div class="import-temp">
<span style="cursor: pointer;display: inline-block;" @click="downloadErrorData">{{importErrorData.length >0?"下载导入失败数据":""}}</span>
</div>
</el-col>
<el-col
:span=
"2"
:offset=
"11"
>
<el-button
type=
"primary"
@
click=
"handleOK"
>
确定
</el-button>
</el-col>
<el-col
:span=
"3"
style=
"text-align: center;"
>
<el-button
plain
@
click=
"handleCancel"
>
取消
</el-button>
</el-col> -->
<el-col
:span=
"2"
:offset=
"22"
>
<el-button
type=
"primary"
@
click=
"handleOK"
>
{{$t('info.confirm')}}
</el-button>
</el-col>
</el-row>
</div>
...
...
@@ -59,12 +56,32 @@ import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorat
messages
:
{
'zh-CN'
:
{
info
:
{
"viewtitle"
:
"应用数据导入视图"
"viewtitle"
:
"应用数据导入视图"
,
"selectfile"
:
"选取文件"
,
"uploadserver"
:
"上传服务器"
,
"datatemplate"
:
"下载导入数据模板"
,
"dataid"
:
"数据标识为"
,
"read"
:
"读取成功"
,
"importing"
:
"导入中"
,
"completed"
:
"导入完成"
,
"confirm"
:
"确认"
,
"datatemp"
:
"导入数据模板"
,
"importfailed"
:
"导入失败"
}
},
'en-US'
:
{
info
:
{
"viewtitle"
:
"AppDataUploadView"
"viewtitle"
:
"AppDataUploadView"
,
"selectfile"
:
"Select File"
,
"uploadserver"
:
"Upload Server"
,
"datatemplate"
:
"Download Import Data Template"
,
"dataid"
:
"Data ID is "
,
"read"
:
" read Successful"
,
"importing"
:
"Importing"
,
"completed"
:
"Import Completed"
,
"confirm"
:
"OK"
,
"datatemp"
:
"Data Template"
,
"importfailed"
:
"Import Failed"
}
}
}
...
...
@@ -137,6 +154,14 @@ export default class AppDataUploadView extends Vue {
*/
protected
importId
:
string
=
""
;
/**
* 是否已有导入数据
*
* @type {boolean}
* @memberof AppDataUploadView
*/
protected
hasImported
:
boolean
=
false
;
/**
* 导入数据识别项属性
*
...
...
@@ -145,13 +170,21 @@ export default class AppDataUploadView extends Vue {
*/
protected
importUniqueItem
:
string
=
""
;
/**
* 提示信息
*
* @type {string}
* @memberof AppDataUploadView
*/
protected
promptInfo
:
string
=
""
;
/**
* 导入状态
*
* @type {boolean}
* @memberof AppDataUploadView
*/
protected
uploadStatus
:
boolean
=
false
;
protected
isUploading
:
boolean
=
false
;
/**
* 导入成功数据
...
...
@@ -227,7 +260,6 @@ export default class AppDataUploadView extends Vue {
}
this
.
allFieldMap
.
set
(
item
.
headername
,
item
);
});
console
.
log
(
this
.
allFieldMap
);
//获取代码表值
this
.
allCodeList
=
await
this
.
getChartAllCodeList
();
}
...
...
@@ -258,25 +290,7 @@ export default class AppDataUploadView extends Vue {
* @memberof AppDataUploadView
*/
public
downloadTemp
(){
this
.
importExcel
(
this
.
viewparams
.
appDeLogicName
+
"导入数据模板"
,[]);
}
/**
* 下载导入成功数据
*
* @memberof AppDataUploadView
*/
public
downloadSuccessData
(){
this
.
importExcel
(
this
.
viewparams
.
appDeLogicName
+
"导入成功数据"
,
this
.
importSuccessData
);
}
/**
* 下载导入失败数据
*
* @memberof AppDataUploadView
*/
public
downloadErrorData
(){
this
.
importExcel
(
this
.
viewparams
.
appDeLogicName
+
"导入失败数据"
,
this
.
importErrorData
);
this
.
importExcel
(
this
.
viewparams
.
appDeLogicName
+
this
.
$t
(
'info.datatemp'
),[]);
}
/**
...
...
@@ -285,6 +299,7 @@ export default class AppDataUploadView extends Vue {
* @memberof AppDataUploadView
*/
public
handleUpLoad
(){
this
.
importSuccessData
=
[];
(
this
.
$refs
.
inputUpLoad
as
any
).
click
();
}
...
...
@@ -299,20 +314,29 @@ export default class AppDataUploadView extends Vue {
}
let
tempDataArray
:
Array
<
any
>
=
[];
this
.
transformData
(
this
.
importDataArray
,
tempDataArray
);
this
.
hasImported
=
true
;
this
.
isUploading
=
true
;
this
.
importDataArray
=
[];
this
.
uploadStatus
=
true
;
try
{
this
.
entityService
.
getService
(
this
.
viewparams
.
serviceName
).
then
((
service
:
any
)
=>
{
service
.
ImportData
(
this
.
viewdata
,{
name
:
this
.
importId
,
data
:
tempDataArray
}).
then
((
res
:
any
)
=>
{
console
.
log
(
res
);
this
.
uploadStatus
=
false
;
const
result
:
any
=
res
.
data
;
if
(
result
&&
result
.
rst
!==
0
){
this
.
promptInfo
=
(
this
.
$t
(
'info.importfailed'
)
as
string
);
this
.
isUploading
=
false
;
return
;
}
this
.
importSuccessData
=
result
.
data
;
this
.
isUploading
=
false
;
})
}).
catch
((
error
:
any
)
=>
{
this
.
uploadStatus
=
false
;
this
.
isUploading
=
false
;
this
.
promptInfo
=
(
this
.
$t
(
'info.importfailed'
)
as
string
);
console
.
error
(
error
);
})
}
catch
(
error
){
this
.
uploadStatus
=
false
;
this
.
isUploading
=
false
;
this
.
promptInfo
=
(
this
.
$t
(
'info.importfailed'
)
as
string
);
console
.
error
(
error
);
};
}
...
...
@@ -346,16 +370,7 @@ export default class AppDataUploadView extends Vue {
* @memberof AppDataUploadView
*/
public
handleOK
(){
this
.
$emit
(
'viewdataschange'
,
this
.
importSuccessData
);
}
/**
* 取消
*
* @memberof AppDataUploadView
*/
public
handleCancel
(){
this
.
$emit
(
'close'
,
null
);
this
.
$emit
(
'close'
,
this
.
importSuccessData
);
}
/**
...
...
app_web/src/locale/lang/en-US.ts
浏览文件 @
c88b8fb1
import
ibzdictitem_en_US
from
'@locale/lanres/ibzdict
-item/ibzdict-
item_en_US'
;
import
ibzdictitem_en_US
from
'@locale/lanres/ibzdict
item/ibzdict
item_en_US'
;
import
ibzdict_en_US
from
'@locale/lanres/ibzdict/ibzdict_en_US'
;
import
userCustom_en_US
from
'@locale/lanres/userCustom/userCustom_en_US'
;
import
codelist_en_US
from
'@locale/lanres/codelist/codelist_en_US'
;
...
...
app_web/src/locale/lang/zh-CN.ts
浏览文件 @
c88b8fb1
import
ibzdictitem_zh_CN
from
'@locale/lanres/ibzdict
-item/ibzdict-
item_zh_CN'
;
import
ibzdictitem_zh_CN
from
'@locale/lanres/ibzdict
item/ibzdict
item_zh_CN'
;
import
ibzdict_zh_CN
from
'@locale/lanres/ibzdict/ibzdict_zh_CN'
;
import
userCustom_zh_CN
from
'@locale/lanres/userCustom/userCustom_zh_CN'
;
import
codelist_zh_CN
from
'@locale/lanres/codelist/codelist_zh_CN'
;
...
...
app_web/src/mock/index.ts
浏览文件 @
c88b8fb1
...
...
@@ -7,5 +7,5 @@ import './login/login';
import
'./upload/upload'
;
// 实体级接口对象
import
'./entity/ibzdict
-items/ibzdict-
items'
;
import
'./entity/ibzdict
items/ibzdict
items'
;
import
'./entity/ibzdicts/ibzdicts'
;
app_web/src/pages/dict/ibzdict-item-edit-view/ibzdict-item-edit-view-base.vue
浏览文件 @
c88b8fb1
...
...
@@ -125,7 +125,7 @@
import
{
Vue
,
Component
,
Prop
,
Provide
,
Emit
,
Watch
}
from
'vue-property-decorator'
;
import
{
UIActionTool
,
Util
}
from
'@/utils'
;
import
{
Subject
}
from
'rxjs'
;
import
IBZD
ictItemService
from
'@/service/ibzdict-item/ibzdict-
item-service'
;
import
IBZD
ICTITEMService
from
'@/service/ibzdictitem/ibzdict
item-service'
;
import
EditViewEngine
from
'@engine/view/edit-view-engine'
;
...
...
@@ -140,10 +140,10 @@ export default class IBZDictItemEditViewBase extends Vue {
/**
* 实体服务对象
*
* @type {IBZD
ictItem
Service}
* @type {IBZD
ICTITEM
Service}
* @memberof IBZDictItemEditViewBase
*/
protected
appEntityService
:
IBZD
ictItemService
=
new
IBZDictItem
Service
;
protected
appEntityService
:
IBZD
ICTITEMService
=
new
IBZDICTITEM
Service
;
/**
...
...
@@ -661,7 +661,7 @@ export default class IBZDictItemEditViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
Save
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
Save
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -687,7 +687,7 @@ export default class IBZDictItemEditViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
SaveAndNew
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
SaveAndNew
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -713,7 +713,7 @@ export default class IBZDictItemEditViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
SaveAndExit
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
SaveAndExit
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -739,7 +739,7 @@ export default class IBZDictItemEditViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
RemoveAndExit
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
RemoveAndExit
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -765,7 +765,7 @@ export default class IBZDictItemEditViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
SaveAndStart
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
SaveAndStart
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -791,7 +791,7 @@ export default class IBZDictItemEditViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
ViewWFStep
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
ViewWFStep
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -817,7 +817,7 @@ export default class IBZDictItemEditViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
New
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
New
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -843,7 +843,7 @@ export default class IBZDictItemEditViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
Copy
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
Copy
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -869,7 +869,7 @@ export default class IBZDictItemEditViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
Print
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
Print
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -895,7 +895,7 @@ export default class IBZDictItemEditViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
FirstRecord
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
FirstRecord
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -921,7 +921,7 @@ export default class IBZDictItemEditViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
PrevRecord
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
PrevRecord
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -947,7 +947,7 @@ export default class IBZDictItemEditViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
NextRecord
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
NextRecord
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -973,7 +973,7 @@ export default class IBZDictItemEditViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
LastRecord
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
LastRecord
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -999,7 +999,7 @@ export default class IBZDictItemEditViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
Help
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
Help
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -1339,33 +1339,6 @@ export default class IBZDictItemEditViewBase extends Vue {
}
}
/**
* 销毁视图回调
*
* @memberof IBZDictItemEditViewBase
*/
protected
destroyed
(){
this
.
afterDestroyed
();
}
/**
* 执行destroyed后的逻辑
*
* @memberof IBZDictItemEditViewBase
*/
protected
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
);
}
})
}
}
}
}
</
script
>
...
...
app_web/src/pages/dict/ibzdict-item-edit-view/ibzdict-item-edit-view.vue
浏览文件 @
c88b8fb1
...
...
@@ -2,7 +2,7 @@
import
{
Component
}
from
'vue-property-decorator'
;
import
IBZDictItemEditViewBase
from
'./ibzdict-item-edit-view-base.vue'
;
import
view_form
from
'@widgets/ibzdict
-
item/main-form/main-form.vue'
;
import
view_form
from
'@widgets/ibzdictitem/main-form/main-form.vue'
;
@
Component
({
components
:
{
view_form
,
...
...
app_web/src/pages/dict/ibzdict-item-grid-view/ibzdict-item-grid-view-base.vue
浏览文件 @
c88b8fb1
...
...
@@ -147,7 +147,7 @@
import
{
Vue
,
Component
,
Prop
,
Provide
,
Emit
,
Watch
}
from
'vue-property-decorator'
;
import
{
UIActionTool
,
Util
}
from
'@/utils'
;
import
{
Subject
}
from
'rxjs'
;
import
IBZD
ictItemService
from
'@/service/ibzdict-item/ibzdict-
item-service'
;
import
IBZD
ICTITEMService
from
'@/service/ibzdictitem/ibzdict
item-service'
;
import
GridViewEngine
from
'@engine/view/grid-view-engine'
;
...
...
@@ -162,10 +162,10 @@ export default class IBZDictItemGridViewBase extends Vue {
/**
* 实体服务对象
*
* @type {IBZD
ictItem
Service}
* @type {IBZD
ICTITEM
Service}
* @memberof IBZDictItemGridViewBase
*/
protected
appEntityService
:
IBZD
ictItemService
=
new
IBZDictItem
Service
;
protected
appEntityService
:
IBZD
ICTITEMService
=
new
IBZDICTITEM
Service
;
/**
...
...
@@ -755,7 +755,7 @@ export default class IBZDictItemGridViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
New
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
New
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -781,7 +781,7 @@ export default class IBZDictItemGridViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
Edit
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
Edit
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -807,7 +807,7 @@ export default class IBZDictItemGridViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
View
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
View
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -833,7 +833,7 @@ export default class IBZDictItemGridViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
Copy
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
Copy
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -859,7 +859,7 @@ export default class IBZDictItemGridViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
ToggleRowEdit
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
ToggleRowEdit
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -885,7 +885,7 @@ export default class IBZDictItemGridViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
NewRow
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
NewRow
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -911,7 +911,7 @@ export default class IBZDictItemGridViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
Remove
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
Remove
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -937,7 +937,7 @@ export default class IBZDictItemGridViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
ExportExcel
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
ExportExcel
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -963,7 +963,7 @@ export default class IBZDictItemGridViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
Print
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
Print
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -989,7 +989,7 @@ export default class IBZDictItemGridViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
ExportModel
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
ExportModel
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -1015,7 +1015,7 @@ export default class IBZDictItemGridViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
Import
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
Import
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -1041,7 +1041,7 @@ export default class IBZDictItemGridViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
ToggleFilter
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
ToggleFilter
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -1067,7 +1067,7 @@ export default class IBZDictItemGridViewBase extends Vue {
datas
=
[...
xData
.
getDatas
()];
}
// 界面行为
this
.
Help
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ictItem
"
);
this
.
Help
(
datas
,
contextJO
,
paramJO
,
$event
,
xData
,
this
,
"IBZD
ICTITEM
"
);
}
/**
...
...
@@ -1087,11 +1087,9 @@ export default class IBZDictItemGridViewBase extends Vue {
Object
.
assign
(
curViewParam
,
args
[
0
]);
}
let
deResParameters
:
any
[]
=
[];
if
(
curViewParam
.
ibzdict
&&
true
){
deResParameters
=
[
{
pathName
:
'ibzdicts'
,
parameterName
:
'ibzdict'
},
]
}
];
const
parameters
:
any
[]
=
[
{
pathName
:
'ibzdictitems'
,
parameterName
:
'ibzdictitem'
},
{
pathName
:
'editview'
,
parameterName
:
'editview'
},
...
...
@@ -1124,11 +1122,9 @@ export default class IBZDictItemGridViewBase extends Vue {
Object
.
assign
(
curViewParam
,
args
[
0
]);
}
let
deResParameters
:
any
[]
=
[];
if
(
curViewParam
.
ibzdict
&&
true
){
deResParameters
=
[
{
pathName
:
'ibzdicts'
,
parameterName
:
'ibzdict'
},
]
}
];
const
parameters
:
any
[]
=
[
{
pathName
:
'ibzdictitems'
,
parameterName
:
'ibzdictitem'
},
{
pathName
:
'editview'
,
parameterName
:
'editview'
},
...
...
@@ -1417,33 +1413,6 @@ export default class IBZDictItemGridViewBase extends Vue {
}
}
/**
* 销毁视图回调
*
* @memberof IBZDictItemGridViewBase
*/
protected
destroyed
(){
this
.
afterDestroyed
();
}
/**
* 执行destroyed后的逻辑
*
* @memberof IBZDictItemGridViewBase
*/
protected
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
);
}
})
}
}
}
/**
* 是否单选
*
...
...
app_web/src/pages/dict/ibzdict-item-grid-view/ibzdict-item-grid-view.vue
浏览文件 @
c88b8fb1
...
...
@@ -2,8 +2,8 @@
import
{
Component
}
from
'vue-property-decorator'
;
import
IBZDictItemGridViewBase
from
'./ibzdict-item-grid-view-base.vue'
;
import
view_grid
from
'@widgets/ibzdict
-
item/main-grid/main-grid.vue'
;
import
view_searchform
from
'@widgets/ibzdict
-
item/default-searchform/default-searchform.vue'
;
import
view_grid
from
'@widgets/ibzdictitem/main-grid/main-grid.vue'
;
import
view_searchform
from
'@widgets/ibzdictitem/default-searchform/default-searchform.vue'
;
@
Component
({
components
:
{
view_grid
,
...
...
app_web/src/service/entity-service-register.ts
浏览文件 @
c88b8fb1
...
...
@@ -39,7 +39,7 @@ export class EntityServiceRegister {
* @memberof EntityServiceRegister
*/
protected
init
():
void
{
this
.
allEntityService
.
set
(
'ibzdictitem'
,
()
=>
import
(
'@/service/ibzdict
-item/ibzdict-
item-service'
));
this
.
allEntityService
.
set
(
'ibzdictitem'
,
()
=>
import
(
'@/service/ibzdict
item/ibzdict
item-service'
));
this
.
allEntityService
.
set
(
'ibzdict'
,
()
=>
import
(
'@/service/ibzdict/ibzdict-service'
));
}
...
...
app_web/src/uiservice/ui-service-register.ts
浏览文件 @
c88b8fb1
...
...
@@ -39,7 +39,7 @@ export class UIServiceRegister {
* @memberof UIServiceRegister
*/
protected
init
():
void
{
this
.
allUIService
.
set
(
'ibzdictitem'
,
()
=>
import
(
'@/uiservice/ibzdict
-item/ibzdict-
item-ui-service'
));
this
.
allUIService
.
set
(
'ibzdictitem'
,
()
=>
import
(
'@/uiservice/ibzdict
item/ibzdict
item-ui-service'
));
this
.
allUIService
.
set
(
'ibzdict'
,
()
=>
import
(
'@/uiservice/ibzdict/ibzdict-ui-service'
));
}
...
...
app_web/src/widgets/ibzdict/main-grid/main-grid-base.vue
浏览文件 @
c88b8fb1
...
...
@@ -759,7 +759,7 @@ export default class MainBase extends Vue implements ControlInterface {
let
container
:
Subject
<
any
>
=
this
.
$appmodal
.
openModal
(
view
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
importDataModel
);
container
.
subscribe
((
result
:
any
)
=>
{
if
(
Object
.
is
(
result
.
ret
,
'OK'
)){
console
.
log
(
result
);
this
.
refresh
(
result
.
datas
);
}
});
}
...
...
app_web/src/widgets/ibzdictitem/default-searchform/default-searchform-base.vue
浏览文件 @
c88b8fb1
...
...
@@ -156,7 +156,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* 获取多项数据
*
* @returns {any[]}
* @memberof Default
* @memberof Default
Base
*/
public
getDatas
():
any
[]
{
return
[
this
.
data
];
...
...
@@ -166,49 +166,25 @@ export default class DefaultBase extends Vue implements ControlInterface {
* 获取单项树
*
* @returns {*}
* @memberof Default
* @memberof Default
Base
*/
public
getData
():
any
{
return
this
.
data
;
}
/**
* 是否默认保存
*
* @type {boolean}
* @memberof Default
*/
@
Prop
({
default
:
false
})
protected
autosave
?:
boolean
;
/**
* 显示处理提示
*
* @type {boolean}
* @memberof Default
* @memberof Default
Base
*/
@
Prop
({
default
:
true
})
protected
showBusyIndicator
?:
boolean
;
/**
* 部件行为--update
*
* @type {string}
* @memberof Default
*/
@
Prop
()
protected
updateAction
!
:
string
;
/**
* 部件行为--remove
*
* @type {string}
* @memberof Default
*/
@
Prop
()
protected
removeAction
!
:
string
;
/**
* 部件行为--loaddraft
*
* @type {string}
* @memberof Default
* @memberof Default
Base
*/
@
Prop
()
protected
loaddraftAction
!
:
string
;
...
...
@@ -216,31 +192,15 @@ export default class DefaultBase extends Vue implements ControlInterface {
* 部件行为--load
*
* @type {string}
* @memberof Default
* @memberof Default
Base
*/
@
Prop
()
protected
loadAction
!
:
string
;
/**
* 部件行为--create
*
* @type {string}
* @memberof Default
*/
@
Prop
()
protected
createAction
!
:
string
;
/**
* 部件行为--create
*
* @type {string}
* @memberof Default
*/
@
Prop
()
protected
searchAction
!
:
string
;
/**
* 视图标识
*
* @type {string}
* @memberof Default
* @memberof Default
Base
*/
@
Prop
()
protected
viewtag
!
:
string
;
...
...
@@ -248,7 +208,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* 表单状态
*
* @type {Subject<any>}
* @memberof Default
* @memberof Default
Base
*/
protected
formState
:
Subject
<
any
>
=
new
Subject
();
...
...
@@ -256,7 +216,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* 忽略表单项值变化
*
* @type {boolean}
* @memberof Default
* @memberof Default
Base
*/
protected
ignorefieldvaluechange
:
boolean
=
false
;
...
...
@@ -265,7 +225,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
*
* @private
* @type {Subject<any>}
* @memberof Default
* @memberof Default
Base
*/
private
dataChang
:
Subject
<
any
>
=
new
Subject
();
...
...
@@ -274,7 +234,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
*
* @private
* @type {(Subscription | undefined)}
* @memberof Default
* @memberof Default
Base
*/
private
dataChangEvent
:
Subscription
|
undefined
;
...
...
@@ -283,7 +243,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
*
* @private
* @type {*}
* @memberof Default
* @memberof Default
Base
*/
private
oldData
:
any
=
{};
...
...
@@ -291,7 +251,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* 表单数据对象
*
* @type {*}
* @memberof Default
* @memberof Default
Base
*/
protected
data
:
any
=
{
n_ibzdictitemname_like
:
null
,
...
...
@@ -302,7 +262,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* 属性值规则
*
* @type {*}
* @memberof Default
* @memberof Default
Base
*/
protected
rules
:
any
=
{
n_ibzdictitemname_like
:
[
...
...
@@ -323,7 +283,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* 详情模型集合
*
* @type {*}
* @memberof Default
* @memberof Default
Base
*/
protected
detailsModel
:
any
=
{
formpage1
:
new
FormPageModel
({
caption
:
'常规条件'
,
detailType
:
'FORMPAGE'
,
name
:
'formpage1'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
})
...
...
@@ -339,7 +299,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
*
* @param {*} newVal
* @param {*} oldVal
* @memberof Default
* @memberof Default
Base
*/
@
Watch
(
'data.n_ibzdictitemname_like'
)
onN_ibzdictitemname_likeChange
(
newVal
:
any
,
oldVal
:
any
)
{
...
...
@@ -351,7 +311,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
*
* @param {*} newVal
* @param {*} oldVal
* @memberof Default
* @memberof Default
Base
*/
@
Watch
(
'data.n_dictitemval_like'
)
onN_dictitemval_likeChange
(
newVal
:
any
,
oldVal
:
any
)
{
...
...
@@ -364,7 +324,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
*
* @private
* @param {{ name: string, newVal: any, oldVal: any }} { name, newVal, oldVal }
* @memberof Default
* @memberof Default
Base
*/
private
resetFormData
({
name
,
newVal
,
oldVal
}:
{
name
:
string
,
newVal
:
any
,
oldVal
:
any
}):
void
{
}
...
...
@@ -374,7 +334,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
*
* @private
* @param {{ name: string, newVal: any, oldVal: any }} { name, newVal, oldVal }
* @memberof Default
* @memberof Default
Base
*/
private
formLogic
({
name
,
newVal
,
oldVal
}:
{
name
:
string
,
newVal
:
any
,
oldVal
:
any
}):
void
{
...
...
@@ -389,7 +349,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* @private
* @param {{ name: string, newVal: any, oldVal: any }} { name, newVal, oldVal }
* @returns {void}
* @memberof Default
* @memberof Default
Base
*/
private
formDataChange
({
name
,
newVal
,
oldVal
}:
{
name
:
string
,
newVal
:
any
,
oldVal
:
any
}):
void
{
if
(
this
.
ignorefieldvaluechange
)
{
...
...
@@ -405,7 +365,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
*
* @private
* @param {*} [data={}]
* @memberof Default
* @memberof Default
Base
*/
private
onFormLoad
(
data
:
any
=
{}):
void
{
this
.
setFormEnableCond
(
data
);
...
...
@@ -417,7 +377,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* 值填充
*
* @param {*} [_datas={}]
* @memberof Default
* @memberof Default
Base
*/
protected
fillForm
(
_datas
:
any
=
{}):
void
{
this
.
ignorefieldvaluechange
=
true
;
...
...
@@ -436,7 +396,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
*
* @protected
* @param {*} data
* @memberof Default
* @memberof Default
Base
*/
protected
setFormEnableCond
(
data
:
any
):
void
{
Object
.
values
(
this
.
detailsModel
).
forEach
((
detail
:
any
)
=>
{
...
...
@@ -452,7 +412,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* 重置草稿表单状态
*
* @private
* @memberof Default
* @memberof Default
Base
*/
private
resetDraftFormStates
():
void
{
const
form
:
any
=
this
.
$refs
.
form
;
...
...
@@ -464,7 +424,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
/**
* 重置校验结果
*
* @memberof Default
* @memberof Default
Base
*/
protected
resetValidates
():
void
{
Object
.
values
(
this
.
detailsModel
).
forEach
((
detail
:
any
)
=>
{
...
...
@@ -480,7 +440,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* 填充校验结果 (后台)
*
* @param {any[]} fieldErrors
* @memberof Default
* @memberof Default
Base
*/
protected
fillValidates
(
fieldErrors
:
any
[]):
void
{
fieldErrors
.
forEach
((
error
:
any
)
=>
{
...
...
@@ -498,7 +458,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* 表单校验状态
*
* @returns {boolean}
* @memberof Default
* @memberof Default
Base
*/
protected
formValidateStatus
():
boolean
{
const
form
:
any
=
this
.
$refs
.
searchform
;
...
...
@@ -513,7 +473,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* 获取全部值
*
* @returns {*}
* @memberof Default
* @memberof Default
Base
*/
protected
getValues
():
any
{
return
this
.
data
;
...
...
@@ -524,7 +484,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
*
* @param {{ name: string, value: any }} $event
* @returns {void}
* @memberof Default
* @memberof Default
Base
*/
protected
onFormItemValueChange
(
$event
:
{
name
:
string
,
value
:
any
}):
void
{
if
(
!
$event
)
{
...
...
@@ -542,7 +502,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* @param {string} name
* @param {*} value
* @returns {void}
* @memberof Default
* @memberof Default
Base
*/
protected
setDataItemValue
(
name
:
string
,
value
:
any
):
void
{
if
(
!
name
||
Object
.
is
(
name
,
''
)
||
!
this
.
data
.
hasOwnProperty
(
name
))
{
...
...
@@ -560,7 +520,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* 分组界面行为事件
*
* @param {*} $event
* @memberof Default
* @memberof Default
Base
*/
protected
groupUIActionClick
(
$event
:
any
):
void
{
if
(
!
$event
)
{
...
...
@@ -572,7 +532,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
/**
* Vue声明周期(处理组件的输入属性)
*
* @memberof Default
* @memberof Default
Base
*/
protected
created
():
void
{
this
.
afterCreated
();
...
...
@@ -581,7 +541,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
/**
* 执行created后的逻辑
*
* @memberof Default
* @memberof Default
Base
*/
protected
afterCreated
(){
if
(
this
.
viewState
)
{
...
...
@@ -598,26 +558,14 @@ export default class DefaultBase extends Vue implements ControlInterface {
if
(
Object
.
is
(
'loaddraft'
,
action
))
{
this
.
loadDraft
(
data
);
}
if
(
Object
.
is
(
'save'
,
action
))
{
this
.
save
(
data
);
}
});
}
this
.
dataChang
.
pipe
(
debounceTime
(
300
),
distinctUntilChanged
()
).
subscribe
((
data
:
any
)
=>
{
if
(
this
.
autosave
)
{
this
.
autoSave
();
}
});
}
/**
* vue 生命周期
*
* @memberof Default
* @memberof Default
Base
*/
protected
destroyed
()
{
this
.
afterDestroy
();
...
...
@@ -626,7 +574,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
/**
* 执行destroyed后的逻辑
*
* @memberof Default
* @memberof Default
Base
*/
protected
afterDestroy
()
{
if
(
this
.
viewStateEvent
)
{
...
...
@@ -637,42 +585,12 @@ export default class DefaultBase extends Vue implements ControlInterface {
}
}
/**
* 拷贝内容
*
* @param {*} [arg={}]
* @memberof @memberof Default
*/
protected
copy
(
arg
:
any
=
{}):
void
{
this
.
loadDraft
(
arg
);
}
/**
* 部件刷新
*
* @param {any[]} args
* @memberof Default
*/
protected
refresh
(
args
:
any
[]):
void
{
let
arg
:
any
=
{};
if
(
this
.
data
.
srfkey
&&
!
Object
.
is
(
this
.
data
.
srfkey
,
''
))
{
Object
.
assign
(
arg
,
{
srfkey
:
this
.
data
.
srfkey
});
this
.
load
(
arg
);
return
;
}
if
(
this
.
data
.
srfkeys
&&
!
Object
.
is
(
this
.
data
.
srfkeys
,
''
))
{
Object
.
assign
(
arg
,
{
srfkey
:
this
.
data
.
srfkeys
});
this
.
load
(
arg
);
return
;
}
}
/**
* 自动加载
*
* @param {*} [arg={}]
* @returns {void}
* @memberof Default
* @memberof Default
Base
*/
protected
autoLoad
(
arg
:
any
=
{}):
void
{
if
(
arg
.
srfkey
&&
!
Object
.
is
(
arg
.
srfkey
,
''
))
{
...
...
@@ -693,7 +611,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
*
* @private
* @param {*} [opt={}]
* @memberof Default
* @memberof Default
Base
*/
private
load
(
opt
:
any
=
{}):
void
{
if
(
!
this
.
loadAction
){
...
...
@@ -730,9 +648,9 @@ export default class DefaultBase extends Vue implements ControlInterface {
* 加载草稿
*
* @param {*} [opt={}]
* @memberof Default
* @memberof Default
Base
*/
protected
loadDraft
(
opt
:
any
=
{}):
void
{
protected
loadDraft
(
opt
:
any
=
{}
,
mode
?:
string
):
void
{
if
(
!
this
.
loaddraftAction
){
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'IBZDictItemGridView视图搜索表单loaddraftAction参数未配置'
});
return
;
...
...
@@ -751,10 +669,6 @@ export default class DefaultBase extends Vue implements ControlInterface {
const
data
=
response
.
data
;
this
.
resetDraftFormStates
();
this
.
onFormLoad
(
data
);
this
.
$emit
(
'load'
,
data
);
this
.
$nextTick
(()
=>
{
this
.
formState
.
next
({
type
:
'load'
,
data
:
data
});
});
setTimeout
(()
=>
{
const
form
:
any
=
this
.
$refs
.
form
;
if
(
form
)
{
...
...
@@ -765,50 +679,14 @@ export default class DefaultBase extends Vue implements ControlInterface {
});
}
});
}).
catch
((
response
:
any
)
=>
{
if
(
response
&&
response
.
status
===
401
)
{
return
;
}
if
(
!
response
||
!
response
.
status
||
!
response
.
data
)
{
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'系统异常'
});
return
;
}
const
{
data
:
_data
}
=
response
;
this
.
$Notice
.
error
({
title
:
_data
.
title
,
desc
:
_data
.
message
});
});
}
/**
* 自动保存
*
* @param {*} [opt={}]
* @memberof Default
*/
protected
autoSave
(
opt
:
any
=
{}):
void
{
if
(
Object
.
is
(
mode
,
'RESET'
)){
if
(
!
this
.
formValidateStatus
())
{
return
;
}
const
arg
:
any
=
{
...
opt
};
const
data
=
this
.
getValues
();
Object
.
assign
(
arg
,
data
);
const
action
:
any
=
Object
.
is
(
data
.
srfuf
,
'1'
)
?
this
.
updateAction
:
this
.
createAction
;
Object
.
assign
(
arg
,{
viewparams
:
this
.
viewparams
});
const
post
:
Promise
<
any
>
=
this
.
service
.
add
(
action
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
arg
,
this
.
showBusyIndicator
);
post
.
then
((
response
:
any
)
=>
{
if
(
!
response
.
status
||
response
.
status
!==
200
)
{
if
(
response
.
errorMessage
)
{
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
response
.
errorMessage
});
}
return
;
}
const
data
=
response
.
data
;
this
.
onFormLoad
(
data
);
this
.
$emit
(
'save'
,
data
);
this
.
$emit
(
'load'
,
data
);
this
.
$nextTick
(()
=>
{
this
.
formState
.
next
({
type
:
'
save
'
,
data
:
data
});
this
.
formState
.
next
({
type
:
'
load
'
,
data
:
data
});
});
}).
catch
((
response
:
any
)
=>
{
if
(
response
&&
response
.
status
===
401
)
{
...
...
@@ -818,62 +696,10 @@ export default class DefaultBase extends Vue implements ControlInterface {
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'系统异常'
});
return
;
}
});
}
/**
* 保存
*
* @param {*} [opt={}]
* @param {boolean} [showResultInfo]
* @returns {Promise<any>}
* @memberof Default
*/
protected
async
save
(
opt
:
any
=
{},
showResultInfo
?:
boolean
):
Promise
<
any
>
{
showResultInfo
=
showResultInfo
===
undefined
?
true
:
false
;
if
(
!
this
.
formValidateStatus
())
{
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'值规则校验异常'
});
return
;
}
const
arg
:
any
=
{
...
opt
};
const
data
=
this
.
getValues
();
Object
.
assign
(
arg
,
data
);
const
action
:
any
=
Object
.
is
(
data
.
srfuf
,
'1'
)
?
this
.
updateAction
:
this
.
createAction
;
Object
.
assign
(
arg
,{
viewparams
:
this
.
viewparams
});
const
post
:
Promise
<
any
>
=
this
.
service
.
add
(
action
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
arg
,
this
.
showBusyIndicator
);
return
new
Promise
((
resolve
:
any
,
reject
:
any
)
=>
{
post
.
then
((
response
:
any
)
=>
{
if
(
!
response
.
status
||
response
.
status
!==
200
)
{
if
(
response
.
errorMessage
)
{
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
response
.
errorMessage
});
}
return
;
}
const
data
=
response
.
data
;
this
.
onFormLoad
(
data
);
this
.
$emit
(
'save'
,
data
);
this
.
$nextTick
(()
=>
{
this
.
formState
.
next
({
type
:
'save'
,
data
:
data
});
});
if
(
showResultInfo
)
{
this
.
$Notice
.
success
({
title
:
''
,
desc
:
(
data
.
srfmajortext
?
data
.
srfmajortext
:
''
)
+
' 保存成功!'
});
}
resolve
(
response
);
}).
catch
((
response
:
any
)
=>
{
if
(
response
&&
response
.
status
===
401
)
{
return
;
}
if
(
!
response
||
!
response
.
status
||
!
response
.
data
)
{
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'系统异常'
});
reject
(
response
);
return
;
}
reject
(
response
);
const
{
data
:
_data
}
=
response
;
this
.
$Notice
.
error
({
title
:
_data
.
title
,
desc
:
_data
.
message
});
});
})
}
/**
...
...
@@ -884,7 +710,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* @param {string[]} updateDetails 更新项
* @param {boolean} [showloading] 是否显示加载状态
* @returns {void}
* @memberof Default
* @memberof Default
Base
*/
protected
updateFormItems
(
mode
:
string
,
data
:
any
=
{},
updateDetails
:
string
[],
showloading
?:
boolean
):
void
{
...
...
@@ -894,28 +720,34 @@ export default class DefaultBase extends Vue implements ControlInterface {
* 回车事件
*
* @param {*} $event
* @memberof Default
* @memberof Default
Base
*/
protected
onEnter
(
$event
:
any
):
void
{
if
(
!
this
.
formValidateStatus
())
{
return
;
}
this
.
$emit
(
'load'
,
this
.
data
);
}
/**
* 搜索
*
* @memberof Default
* @memberof Default
Base
*/
protected
onSearch
()
{
if
(
!
this
.
formValidateStatus
())
{
return
;
}
this
.
$emit
(
'load'
,
this
.
data
);
}
/**
* 重置
*
* @memberof Default
* @memberof Default
Base
*/
protected
onReset
()
{
this
.
loadDraft
();
this
.
loadDraft
(
{},
'RESET'
);
}
}
</
script
>
...
...
app_web/src/widgets/ibzdictitem/main-grid/main-grid-base.vue
浏览文件 @
c88b8fb1
...
...
@@ -68,7 +68,7 @@
<
template
v-if=
"getColumnState('updatedate')"
>
<el-table-column
show-overflow-tooltip
:prop=
"'updatedate'"
:label=
"$t('ibzdictitem.main_grid.columns.updatedate')"
:width=
"250"
:align=
"'left'"
:sortable=
"'custom'"
>
<template
v-slot=
"
{row,column}">
<
span>
{{
row
.
updatedate
}}
</span
>
<
app-format-data
format=
"%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS"
:data=
"row.updatedate"
></app-format-data
>
</
template
>
</el-table-column>
</template>
...
...
@@ -806,6 +806,35 @@ export default class MainBase extends Vue implements ControlInterface {
console
.
error
(
"批量添加未实现"
);
}
/**
* 数据导入
*
* @param {*} data
* @memberof Main
*/
public
importExcel
(
data
:
any
=
{}):
void
{
//导入excel
const
importDataModel
:
any
=
{
}
if
(
Object
.
keys
(
importDataModel
).
length
==
0
){
this
.
$Notice
.
warning
({
title
:
'警告'
,
desc
:
'请配置数据导入项'
});
return
;
}
const
view
:
any
=
{
viewname
:
'app-data-upload'
,
title
:
'导入数据'
,
width
:
900
,
height
:
700
}
let
container
:
Subject
<
any
>
=
this
.
$appmodal
.
openModal
(
view
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
importDataModel
);
container
.
subscribe
((
result
:
any
)
=>
{
if
(
Object
.
is
(
result
.
ret
,
'OK'
)){
this
.
refresh
(
result
.
datas
);
}
});
}
/**
* 数据导出
*
...
...
@@ -818,7 +847,7 @@ export default class MainBase extends Vue implements ControlInterface {
const
tHeader
:
Array
<
any
>
=
[];
const
filterVal
:
Array
<
any
>
=
[];
this
.
allColumns
.
forEach
((
item
:
any
)
=>
{
item
.
show
&&
item
.
label
?
tHeader
.
push
(
item
.
label
)
:
""
;
item
.
show
&&
item
.
label
?
tHeader
.
push
(
this
.
$t
(
item
.
langtag
)
)
:
""
;
item
.
show
&&
item
.
name
?
filterVal
.
push
(
item
.
name
)
:
""
;
});
const
data
=
await
this
.
formatExcelData
(
filterVal
,
_data
);
...
...
@@ -826,7 +855,7 @@ export default class MainBase extends Vue implements ControlInterface {
excel
.
export_json_to_excel
({
header
:
tHeader
,
//表头 必填
data
,
//具体数据 必填
filename
:
"
主实体"
+
"
表"
,
//非必填
filename
:
"
字典项目
表"
,
//非必填
autoWidth
:
true
,
//非必填
bookType
:
"xlsx"
//非必填
});
...
...
app_web/src/widgets/ibzdictitem/main-grid/main-grid-model.ts
浏览文件 @
c88b8fb1
...
...
@@ -6,6 +6,14 @@
*/
export
default
class
MainModel
{
/**
* 是否是实体数据导出
*
* @returns {any[]}
* @memberof MainGridMode
*/
public
isDEExport
:
boolean
=
false
;
/**
* 获取数据项集合
*
...
...
@@ -13,6 +21,10 @@ export default class MainModel {
* @memberof MainGridMode
*/
public
getDataItems
():
any
[]
{
if
(
this
.
isDEExport
){
return
[
]
}
else
{
return
[
{
name
:
'dictitemval'
,
...
...
@@ -83,7 +95,6 @@ export default class MainModel {
name
:
'ibzdictitem'
,
prop
:
'itemid'
,
},
{
name
:
'n_ibzdictitemname_like'
,
prop
:
'n_ibzdictitemname_like'
,
...
...
@@ -122,5 +133,6 @@ export default class MainModel {
}
]
}
}
}
\ No newline at end of file
app_web/src/widgets/ibzdictitem/main-grid/main-grid-service.ts
浏览文件 @
c88b8fb1
...
...
@@ -175,7 +175,7 @@ export default class MainService extends ControlService {
}
/**
*
查询
数据
*
获取
数据
*
* @param {string} action
* @param {*} [context={}]
...
...
@@ -237,6 +237,7 @@ export default class MainService extends ControlService {
});
}
/**
* 加载草稿
*
...
...
ibzdict-app/ibzdict-app-web/src/main/java/cn/ibizlab/web/app/webAppController.java
浏览文件 @
c88b8fb1
...
...
@@ -13,7 +13,6 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping
(
value
=
""
)
public
class
webAppController
{
...
...
ibzdict-app/ibzdict-app-web/src/main/java/cn/ibizlab/web/filter/webDataEntitySysApiMappingFilter.java
0 → 100644
浏览文件 @
c88b8fb1
package
cn
.
ibizlab
.
web
.
filter
;
import
com.netflix.zuul.ZuulFilter
;
import
com.netflix.zuul.context.RequestContext
;
import
org.springframework.cloud.netflix.zuul.filters.support.FilterConstants
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.StringUtils
;
import
javax.annotation.PostConstruct
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* 将应用实体映射到对应的系统服务接口
*/
@Component
public
class
webDataEntitySysApiMappingFilter
extends
ZuulFilter
{
private
static
Map
<
String
,
String
>
AppDataEntitySysApiMapping
=
new
HashMap
<>();
@PostConstruct
private
void
initDataEntitySysApiMapping
()
{
AppDataEntitySysApiMapping
.
put
(
"ibzdictitem"
,
"dictapi"
);
AppDataEntitySysApiMapping
.
put
(
"ibzdict"
,
"dictapi"
);
}
@Override
public
Object
run
()
{
RequestContext
context
=
RequestContext
.
getCurrentContext
();
Object
entity
=
context
.
get
(
FilterConstants
.
PROXY_KEY
);
Object
requestPath
=
context
.
get
(
FilterConstants
.
REQUEST_URI_KEY
);
if
(
ObjectUtils
.
isEmpty
(
requestPath
)
||
ObjectUtils
.
isEmpty
(
entity
))
{
return
null
;
}
String
sysApiPrefix
=
AppDataEntitySysApiMapping
.
get
(
entity
);
if
(
StringUtils
.
isEmpty
(
sysApiPrefix
))
{
return
null
;
}
context
.
put
(
FilterConstants
.
REQUEST_URI_KEY
,
String
.
format
(
"/%s%s"
,
sysApiPrefix
,
requestPath
));
return
null
;
}
@Override
public
String
filterType
()
{
return
FilterConstants
.
PRE_TYPE
;
}
@Override
public
int
filterOrder
()
{
return
FilterConstants
.
PRE_DECORATION_FILTER_ORDER
+
1
;
}
@Override
public
boolean
shouldFilter
()
{
return
true
;
}
}
ibzdict-app/ibzdict-app-web/src/main/java/cn/ibizlab/web/webApplication.java
浏览文件 @
c88b8fb1
...
...
@@ -18,14 +18,11 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@Import
({
FeignClientsConfiguration
.
class
})
@ComponentScans
({
@ComponentScan
(
basePackages
=
{
"cn.ibizlab.util"
,
"cn.ibizlab.web"
})
})
@EnableDiscoveryClient
@Configuration
@EnableFeignClients
@EnableZuulProxy
@SpringBootApplication
(
exclude
=
DataSourceAutoConfiguration
.
class
)
@SpringBootApplication
public
class
webApplication
extends
WebMvcConfigurerAdapter
{
public
static
void
main
(
String
[]
args
)
{
...
...
ibzdict-app/ibzdict-app-web/src/main/resources/application-web-dev.yml
0 → 100644
浏览文件 @
c88b8fb1
server
:
devmode
:
true
port
:
8080
servlet
:
session
:
cookie
:
name
:
ibzdict-app-web
spring
:
cloud
:
nacos
:
discovery
:
server-addr
:
172.16.102.211:8848
sysapi
:
defaultServiceId
:
ibzdict
defaultStripPrefix
:
false
zuul
:
routes
:
ibzdictitem
:
path
:
/ibzdictitems/**
serviceId
:
${sysapi.defaultServiceId}
stripPrefix
:
${sysapi.defaultStripPrefix}
ibzdict
:
path
:
/ibzdicts/**
serviceId
:
${sysapi.defaultServiceId}
stripPrefix
:
${sysapi.defaultStripPrefix}
ribbon
:
ReadTimeout
:
60000
ConnectTimeout
:
60000
ibzdict-app/ibzdict-app-web/src/main/resources/application-web-prod.yml
0 → 100644
浏览文件 @
c88b8fb1
server
:
devmode
:
true
port
:
8080
servlet
:
session
:
cookie
:
name
:
ibzdict-app-web
spring
:
application
:
name
:
ibzdict-app-web
cloud
:
nacos
:
discovery
:
server-addr
:
172.16.102.211:8848
sysapi
:
defaultServiceId
:
ibzdict
defaultStripPrefix
:
false
zuul
:
routes
:
ibzdictitem
:
path
:
/ibzdictitems/**
serviceId
:
${sysapi.defaultServiceId}
stripPrefix
:
${sysapi.defaultStripPrefix}
ibzdict
:
path
:
/ibzdicts/**
serviceId
:
${sysapi.defaultServiceId}
stripPrefix
:
${sysapi.defaultStripPrefix}
ribbon
:
ReadTimeout
:
60000
ConnectTimeout
:
60000
ibzdict-app/ibzdict-app-web/src/main/resources/application.yml
浏览文件 @
c88b8fb1
spring
:
profiles
:
include
:
web, sys
include
:
web
-prod
, sys
ibzdict-app/pom.xml
浏览文件 @
c88b8fb1
...
...
@@ -32,12 +32,6 @@
</dependency>
<dependency>
<groupId>
cn.ibizlab
</groupId>
<artifactId>
ibzdict-util
</artifactId>
<version>
${project.version}
</version>
</dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-netflix-zuul
</artifactId>
...
...
ibzdict-boot/pom.xml
浏览文件 @
c88b8fb1
...
...
@@ -24,6 +24,11 @@
<artifactId>
ibzdict-provider-dictapi
</artifactId>
<version>
${project.version}
</version>
</dependency>
<dependency>
<groupId>
cn.ibizlab
</groupId>
<artifactId>
ibzdict-app-web
</artifactId>
<version>
${project.version}
</version>
</dependency>
</dependencies>
...
...
ibzdict-boot/src/main/java/cn/ibizlab/IbzdictApplication.java
浏览文件 @
c88b8fb1
...
...
@@ -30,7 +30,6 @@ import cn.ibizlab.util.web.SearchContextHandlerMethodArgumentResolver;
})
@EnableDiscoveryClient
@Configuration
@ComponentScan
(
nameGenerator
=
UniqueNameGenerator
.
class
)
@EnableTransactionManagement
public
class
IbzdictApplication
extends
WebMvcConfigurerAdapter
{
...
...
ibzdict-boot/src/main/resources/application.yml
浏览文件 @
c88b8fb1
spring
:
profiles
:
include
:
dev, core, mybatis, sys
include
:
dev, core, mybatis, sys
,web-dev
ibzdict-core/src/main/java/cn/ibizlab/core/dict/filter/IBZDictItemSearchContext.java
浏览文件 @
c88b8fb1
...
...
@@ -16,7 +16,6 @@ import cn.ibizlab.util.SearchFieldFilter;
import
cn.ibizlab.util.enums.SearchFieldType
;
import
cn.ibizlab.util.enums.SearchGroupType
;
import
cn.ibizlab.util.SearchGroupFilter
;
import
cn.ibizlab.util.log.IBIZLog
;
import
org.springframework.util.StringUtils
;
...
...
@@ -29,7 +28,6 @@ import cn.ibizlab.core.dict.domain.IBZDictItem;
*/
@Slf4j
@Data
@IBIZLog
public
class
IBZDictItemSearchContext
extends
MybatisSearchContext
{
private
QueryWrapper
<
IBZDictItem
>
selectCond
=
new
QueryWrapper
();
...
...
ibzdict-core/src/main/java/cn/ibizlab/core/dict/filter/IBZDictSearchContext.java
浏览文件 @
c88b8fb1
...
...
@@ -16,7 +16,6 @@ import cn.ibizlab.util.SearchFieldFilter;
import
cn.ibizlab.util.enums.SearchFieldType
;
import
cn.ibizlab.util.enums.SearchGroupType
;
import
cn.ibizlab.util.SearchGroupFilter
;
import
cn.ibizlab.util.log.IBIZLog
;
import
org.springframework.util.StringUtils
;
...
...
@@ -29,7 +28,6 @@ import cn.ibizlab.core.dict.domain.IBZDict;
*/
@Slf4j
@Data
@IBIZLog
public
class
IBZDictSearchContext
extends
MybatisSearchContext
{
private
QueryWrapper
<
IBZDict
>
selectCond
=
new
QueryWrapper
();
...
...
ibzdict-core/src/main/java/cn/ibizlab/core/dict/mapper/IBZDictItemMapper.java
浏览文件 @
c88b8fb1
...
...
@@ -28,4 +28,10 @@ public interface IBZDictItemMapper extends BaseMapper<IBZDictItem>{
@Override
int
deleteById
(
Serializable
id
);
Page
<
IBZDictItem
>
selectPermission
(
IPage
page
,
@Param
(
"pw"
)
Wrapper
<
IBZDictItem
>
wrapper
)
;
<!--
关系实体暴露
select
方法供主实体通过外键查询关系实体数据
[
实体关系名称
:
DER1N_IBZDICTITEM_IBZDICT_DICTID
]
-->
List
<
IBZDictItem
>
selectByDictid
(
@Param
(
"dictid"
)
Serializable
dictid
)
;
}
\ No newline at end of file
ibzdict-core/src/main/java/cn/ibizlab/core/dict/mapper/IBZDictMapper.java
浏览文件 @
c88b8fb1
...
...
@@ -28,4 +28,6 @@ public interface IBZDictMapper extends BaseMapper<IBZDict>{
@Override
int
deleteById
(
Serializable
id
);
Page
<
IBZDict
>
selectPermission
(
IPage
page
,
@Param
(
"pw"
)
Wrapper
<
IBZDict
>
wrapper
)
;
}
\ No newline at end of file
ibzdict-core/src/main/java/cn/ibizlab/core/dict/service/IIBZDictItemService.java
浏览文件 @
c88b8fb1
...
...
@@ -36,5 +36,12 @@ public interface IIBZDictItemService extends IService<IBZDictItem>{
void
updateBatch
(
List
<
IBZDictItem
>
list
,
int
batchSize
)
;
Page
<
IBZDictItem
>
searchDefault
(
IBZDictItemSearchContext
context
)
;
<!--
关系实体暴露
select
方法供主实体通过外键查询关系实体数据
[
实体关系名称
:
DER1N_IBZDICTITEM_IBZDICT_DICTID
]
-->
List
<
IBZDictItem
>
selectByDictid
(
String
dictid
)
;
void
saveByDictid
(
String
dictid
,
List
<
IBZDictItem
>)
;
void
removeByDictid
(
String
dictid
)
;
}
ibzdict-core/src/main/java/cn/ibizlab/core/dict/service/IIBZDictService.java
浏览文件 @
c88b8fb1
...
...
@@ -36,5 +36,7 @@ public interface IIBZDictService extends IService<IBZDict>{
void
saveBatch
(
List
<
IBZDict
>
list
,
int
batchSize
)
;
Page
<
IBZDict
>
searchDefault
(
IBZDictSearchContext
context
)
;
}
ibzdict-core/src/main/java/cn/ibizlab/core/dict/service/dto/IBZDictDTO.java
浏览文件 @
c88b8fb1
package
cn
.
ibizlab
.
core
.
dict
.
service
.
dto
;
import
java.sql.Timestamp
;
...
...
@@ -9,10 +8,6 @@ import java.util.Map;
import
java.util.HashMap
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
cn.ibizlab.core.dict.domain.IBZDict
;
import
org.springframework.cglib.beans.BeanCopier
;
import
com.fasterxml.jackson.annotation.JsonAutoDetect
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
...
...
@@ -32,14 +27,14 @@ public class IBZDictDTO extends DTOBase implements Serializable {
*
*/
@JsonProperty
(
"dictid"
)
private
String
dict
I
d
;
private
String
dict
i
d
;
/**
* 属性 [IBZDICTNAME]
*
*/
@JsonProperty
(
"dictname"
)
private
String
dict
N
ame
;
private
String
dict
n
ame
;
/**
* 属性 [ENABLE]
...
...
@@ -52,39 +47,36 @@ public class IBZDictDTO extends DTOBase implements Serializable {
* 属性 [CREATEDATE]
*
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
locale
=
"zh"
,
timezone
=
"GMT+8"
)
@JsonProperty
(
"createdate"
)
private
Timestamp
create
D
ate
;
private
Timestamp
create
d
ate
;
/**
* 属性 [UPDATEDATE]
*
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
locale
=
"zh"
,
timezone
=
"GMT+8"
)
@JsonProperty
(
"updatedate"
)
private
Timestamp
update
D
ate
;
private
Timestamp
update
d
ate
;
/**
* 属性 [CREATEMAN]
*
*/
@JsonProperty
(
"createman"
)
private
String
create
M
an
;
private
String
create
m
an
;
/**
* 属性 [UPDATEMAN]
*
*/
@JsonProperty
(
"updateman"
)
private
String
update
M
an
;
private
String
update
m
an
;
/**
* 设置 [IBZDICTID]
*/
@JsonProperty
(
"dictid"
)
public
void
setDictId
(
String
dictId
){
this
.
dictId
=
dictId
;
public
void
setUpdateman
(
String
updateman
){
this
.
updateman
=
updateman
;
if
(
dictId
==
null
){
this
.
addFocusNull
(
"ibzdictid"
);
}
...
...
@@ -92,9 +84,8 @@ public class IBZDictDTO extends DTOBase implements Serializable {
/**
* 设置 [IBZDICTNAME]
*/
@JsonProperty
(
"dictname"
)
public
void
setDictName
(
String
dictName
){
this
.
dictName
=
dictName
;
public
void
setUpdateman
(
String
updateman
){
this
.
updateman
=
updateman
;
if
(
dictName
==
null
){
this
.
addFocusNull
(
"ibzdictname"
);
}
...
...
@@ -102,9 +93,8 @@ public class IBZDictDTO extends DTOBase implements Serializable {
/**
* 设置 [ENABLE]
*/
@JsonProperty
(
"enable"
)
public
void
setEnable
(
Integer
enable
){
this
.
enable
=
enable
;
public
void
setUpdateman
(
Integer
updateman
){
this
.
updateman
=
updateman
;
if
(
enable
==
null
){
this
.
addFocusNull
(
"enable"
);
}
...
...
@@ -112,9 +102,8 @@ public class IBZDictDTO extends DTOBase implements Serializable {
/**
* 设置 [CREATEDATE]
*/
@JsonProperty
(
"createdate"
)
public
void
setCreateDate
(
Timestamp
createDate
){
this
.
createDate
=
createDate
;
public
void
setUpdateman
(
Timestamp
updateman
){
this
.
updateman
=
updateman
;
if
(
createDate
==
null
){
this
.
addFocusNull
(
"createdate"
);
}
...
...
@@ -122,9 +111,8 @@ public class IBZDictDTO extends DTOBase implements Serializable {
/**
* 设置 [UPDATEDATE]
*/
@JsonProperty
(
"updatedate"
)
public
void
setUpdateDate
(
Timestamp
updateDate
){
this
.
updateDate
=
updateDate
;
public
void
setUpdateman
(
Timestamp
updateman
){
this
.
updateman
=
updateman
;
if
(
updateDate
==
null
){
this
.
addFocusNull
(
"updatedate"
);
}
...
...
@@ -132,9 +120,8 @@ public class IBZDictDTO extends DTOBase implements Serializable {
/**
* 设置 [CREATEMAN]
*/
@JsonProperty
(
"createman"
)
public
void
setCreateMan
(
String
createMan
){
this
.
createMan
=
createMan
;
public
void
setUpdateman
(
String
updateman
){
this
.
updateman
=
updateman
;
if
(
createMan
==
null
){
this
.
addFocusNull
(
"createman"
);
}
...
...
@@ -142,13 +129,27 @@ public class IBZDictDTO extends DTOBase implements Serializable {
/**
* 设置 [UPDATEMAN]
*/
@JsonProperty
(
"updateman"
)
public
void
setUpdateMan
(
String
updateMan
){
this
.
updateMan
=
updateMan
;
public
void
setUpdateman
(
String
updateman
){
this
.
updateman
=
updateman
;
if
(
updateMan
==
null
){
this
.
addFocusNull
(
"updateman"
);
}
}
/**
* [IBZDICTITEM]
*/
private
List
<
IBZDictItemDTO
>
ibzdictitems
=
new
ArrayList
<
IBZDictItemDTO
>();
@JsonProperty
(
"ibzdictitems"
)
public
List
<
IBZDictItemDTO
>
getIbzdictitems
(){
return
ibzdictitems
;
}
@JsonProperty
(
"ibzdictitems"
)
public
void
setIbzdictitems
(
List
<
IBZDictItemDTO
>
ibzdictitems
){
this
.
ibzdictitems
=
ibzdictitems
;
}
}
ibzdict-core/src/main/java/cn/ibizlab/core/dict/service/dto/IBZDictItemDTO.java
浏览文件 @
c88b8fb1
package
cn
.
ibizlab
.
core
.
dict
.
service
.
dto
;
import
java.sql.Timestamp
;
...
...
@@ -9,10 +8,6 @@ import java.util.Map;
import
java.util.HashMap
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
cn.ibizlab.core.dict.domain.IBZDictItem
;
import
org.springframework.cglib.beans.BeanCopier
;
import
com.fasterxml.jackson.annotation.JsonAutoDetect
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
...
...
@@ -32,101 +27,98 @@ public class IBZDictItemDTO extends DTOBase implements Serializable {
*
*/
@JsonProperty
(
"itemid"
)
private
String
item
I
d
;
private
String
item
i
d
;
/**
* 属性 [IBZDICTITEMNAME]
*
*/
@JsonProperty
(
"itemname"
)
private
String
item
N
ame
;
private
String
item
n
ame
;
/**
* 属性 [DICTITEMVAL]
*
*/
@JsonProperty
(
"itemval"
)
private
String
item
V
al
;
private
String
item
v
al
;
/**
* 属性 [DICTID]
*
*/
@JsonProperty
(
"dictid"
)
private
String
dict
I
d
;
private
String
dict
i
d
;
/**
* 属性 [PITEMVAL]
*
*/
@JsonProperty
(
"pitemval"
)
private
String
p
ItemV
al
;
private
String
p
itemv
al
;
/**
* 属性 [ITEMFILTER]
*
*/
@JsonProperty
(
"itemfilter"
)
private
String
item
F
ilter
;
private
String
item
f
ilter
;
/**
* 属性 [ITEMCLS]
*
*/
@JsonProperty
(
"itemcls"
)
private
String
item
C
ls
;
private
String
item
c
ls
;
/**
* 属性 [ITEMICON]
*
*/
@JsonProperty
(
"itemicon"
)
private
String
item
I
con
;
private
String
item
i
con
;
/**
* 属性 [SHOWORDER]
*
*/
@JsonProperty
(
"showorder"
)
private
Integer
show
O
rder
;
private
Integer
show
o
rder
;
/**
* 属性 [CREATEDATE]
*
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
locale
=
"zh"
,
timezone
=
"GMT+8"
)
@JsonProperty
(
"createdate"
)
private
Timestamp
create
D
ate
;
private
Timestamp
create
d
ate
;
/**
* 属性 [UPDATEDATE]
*
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
locale
=
"zh"
,
timezone
=
"GMT+8"
)
@JsonProperty
(
"updatedate"
)
private
Timestamp
update
D
ate
;
private
Timestamp
update
d
ate
;
/**
* 属性 [CREATEMAN]
*
*/
@JsonProperty
(
"createman"
)
private
String
create
M
an
;
private
String
create
m
an
;
/**
* 属性 [UPDATEMAN]
*
*/
@JsonProperty
(
"updateman"
)
private
String
update
M
an
;
private
String
update
m
an
;
/**
* 设置 [IBZDICTITEMID]
*/
@JsonProperty
(
"itemid"
)
public
void
setItemId
(
String
itemId
){
this
.
itemId
=
itemId
;
public
void
setUpdateman
(
String
updateman
){
this
.
updateman
=
updateman
;
if
(
itemId
==
null
){
this
.
addFocusNull
(
"ibzdictitemid"
);
}
...
...
@@ -134,9 +126,8 @@ public class IBZDictItemDTO extends DTOBase implements Serializable {
/**
* 设置 [IBZDICTITEMNAME]
*/
@JsonProperty
(
"itemname"
)
public
void
setItemName
(
String
itemName
){
this
.
itemName
=
itemName
;
public
void
setUpdateman
(
String
updateman
){
this
.
updateman
=
updateman
;
if
(
itemName
==
null
){
this
.
addFocusNull
(
"ibzdictitemname"
);
}
...
...
@@ -144,9 +135,8 @@ public class IBZDictItemDTO extends DTOBase implements Serializable {
/**
* 设置 [DICTITEMVAL]
*/
@JsonProperty
(
"itemval"
)
public
void
setItemVal
(
String
itemVal
){
this
.
itemVal
=
itemVal
;
public
void
setUpdateman
(
String
updateman
){
this
.
updateman
=
updateman
;
if
(
itemVal
==
null
){
this
.
addFocusNull
(
"dictitemval"
);
}
...
...
@@ -154,9 +144,8 @@ public class IBZDictItemDTO extends DTOBase implements Serializable {
/**
* 设置 [DICTID]
*/
@JsonProperty
(
"dictid"
)
public
void
setDictId
(
String
dictId
){
this
.
dictId
=
dictId
;
public
void
setUpdateman
(
String
updateman
){
this
.
updateman
=
updateman
;
if
(
dictId
==
null
){
this
.
addFocusNull
(
"dictid"
);
}
...
...
@@ -164,9 +153,8 @@ public class IBZDictItemDTO extends DTOBase implements Serializable {
/**
* 设置 [PITEMVAL]
*/
@JsonProperty
(
"pitemval"
)
public
void
setPItemVal
(
String
pItemVal
){
this
.
pItemVal
=
pItemVal
;
public
void
setUpdateman
(
String
updateman
){
this
.
updateman
=
updateman
;
if
(
pItemVal
==
null
){
this
.
addFocusNull
(
"pitemval"
);
}
...
...
@@ -174,9 +162,8 @@ public class IBZDictItemDTO extends DTOBase implements Serializable {
/**
* 设置 [ITEMFILTER]
*/
@JsonProperty
(
"itemfilter"
)
public
void
setItemFilter
(
String
itemFilter
){
this
.
itemFilter
=
itemFilter
;
public
void
setUpdateman
(
String
updateman
){
this
.
updateman
=
updateman
;
if
(
itemFilter
==
null
){
this
.
addFocusNull
(
"itemfilter"
);
}
...
...
@@ -184,9 +171,8 @@ public class IBZDictItemDTO extends DTOBase implements Serializable {
/**
* 设置 [ITEMCLS]
*/
@JsonProperty
(
"itemcls"
)
public
void
setItemCls
(
String
itemCls
){
this
.
itemCls
=
itemCls
;
public
void
setUpdateman
(
String
updateman
){
this
.
updateman
=
updateman
;
if
(
itemCls
==
null
){
this
.
addFocusNull
(
"itemcls"
);
}
...
...
@@ -194,9 +180,8 @@ public class IBZDictItemDTO extends DTOBase implements Serializable {
/**
* 设置 [ITEMICON]
*/
@JsonProperty
(
"itemicon"
)
public
void
setItemIcon
(
String
itemIcon
){
this
.
itemIcon
=
itemIcon
;
public
void
setUpdateman
(
String
updateman
){
this
.
updateman
=
updateman
;
if
(
itemIcon
==
null
){
this
.
addFocusNull
(
"itemicon"
);
}
...
...
@@ -204,9 +189,8 @@ public class IBZDictItemDTO extends DTOBase implements Serializable {
/**
* 设置 [SHOWORDER]
*/
@JsonProperty
(
"showorder"
)
public
void
setShowOrder
(
Integer
showOrder
){
this
.
showOrder
=
showOrder
;
public
void
setUpdateman
(
Integer
updateman
){
this
.
updateman
=
updateman
;
if
(
showOrder
==
null
){
this
.
addFocusNull
(
"showorder"
);
}
...
...
@@ -214,9 +198,8 @@ public class IBZDictItemDTO extends DTOBase implements Serializable {
/**
* 设置 [CREATEDATE]
*/
@JsonProperty
(
"createdate"
)
public
void
setCreateDate
(
Timestamp
createDate
){
this
.
createDate
=
createDate
;
public
void
setUpdateman
(
Timestamp
updateman
){
this
.
updateman
=
updateman
;
if
(
createDate
==
null
){
this
.
addFocusNull
(
"createdate"
);
}
...
...
@@ -224,9 +207,8 @@ public class IBZDictItemDTO extends DTOBase implements Serializable {
/**
* 设置 [UPDATEDATE]
*/
@JsonProperty
(
"updatedate"
)
public
void
setUpdateDate
(
Timestamp
updateDate
){
this
.
updateDate
=
updateDate
;
public
void
setUpdateman
(
Timestamp
updateman
){
this
.
updateman
=
updateman
;
if
(
updateDate
==
null
){
this
.
addFocusNull
(
"updatedate"
);
}
...
...
@@ -234,9 +216,8 @@ public class IBZDictItemDTO extends DTOBase implements Serializable {
/**
* 设置 [CREATEMAN]
*/
@JsonProperty
(
"createman"
)
public
void
setCreateMan
(
String
createMan
){
this
.
createMan
=
createMan
;
public
void
setUpdateman
(
String
updateman
){
this
.
updateman
=
updateman
;
if
(
createMan
==
null
){
this
.
addFocusNull
(
"createman"
);
}
...
...
@@ -244,9 +225,8 @@ public class IBZDictItemDTO extends DTOBase implements Serializable {
/**
* 设置 [UPDATEMAN]
*/
@JsonProperty
(
"updateman"
)
public
void
setUpdateMan
(
String
updateMan
){
this
.
updateMan
=
updateMan
;
public
void
setUpdateman
(
String
updateman
){
this
.
updateman
=
updateman
;
if
(
updateMan
==
null
){
this
.
addFocusNull
(
"updateman"
);
}
...
...
ibzdict-core/src/main/java/cn/ibizlab/core/dict/service/impl/IBZDictItemServiceImpl.java
浏览文件 @
c88b8fb1
...
...
@@ -26,8 +26,6 @@ import cn.ibizlab.core.dict.filter.IBZDictItemSearchContext;
import
cn.ibizlab.core.dict.service.IIBZDictItemService
;
import
cn.ibizlab.util.helper.CachedBeanCopier
;
import
cn.ibizlab.util.SearchResult
;
import
cn.ibizlab.util.log.IBIZLog
;
...
...
@@ -42,7 +40,6 @@ import org.springframework.util.ObjectUtils;
* 实体[字典项目] 服务对象接口实现
*/
@Slf4j
@IBIZLog
@Service
public
class
IBZDictItemServiceImpl
extends
ServiceImpl
<
IBZDictItemMapper
,
IBZDictItem
>
implements
IIBZDictItemService
{
...
...
ibzdict-core/src/main/java/cn/ibizlab/core/dict/service/impl/IBZDictServiceImpl.java
浏览文件 @
c88b8fb1
...
...
@@ -26,8 +26,6 @@ import cn.ibizlab.core.dict.filter.IBZDictSearchContext;
import
cn.ibizlab.core.dict.service.IIBZDictService
;
import
cn.ibizlab.util.helper.CachedBeanCopier
;
import
cn.ibizlab.util.SearchResult
;
import
cn.ibizlab.util.log.IBIZLog
;
...
...
@@ -42,7 +40,6 @@ import org.springframework.util.ObjectUtils;
* 实体[数据字典] 服务对象接口实现
*/
@Slf4j
@IBIZLog
@Service
public
class
IBZDictServiceImpl
extends
ServiceImpl
<
IBZDictMapper
,
IBZDict
>
implements
IIBZDictService
{
...
...
ibzdict-core/src/main/java/cn/ibizlab/core/dict/service/mapping/IBZDictItemMapping.java
浏览文件 @
c88b8fb1
...
...
@@ -11,7 +11,6 @@ import org.mapstruct.factory.Mappers;
nullValueCheckStrategy
=
NullValueCheckStrategy
.
ALWAYS
)
public
interface
IBZDictItemMapping
extends
MappingBase
<
IBZDictItemDTO
,
IBZDictItem
>
{
IBZDictItemMapping
MAPPER
=
Mappers
.
getMapper
(
IBZDictItemMapping
.
class
);
}
ibzdict-core/src/main/java/cn/ibizlab/core/dict/service/mapping/IBZDictMapping.java
浏览文件 @
c88b8fb1
...
...
@@ -11,7 +11,6 @@ import org.mapstruct.factory.Mappers;
nullValueCheckStrategy
=
NullValueCheckStrategy
.
ALWAYS
)
public
interface
IBZDictMapping
extends
MappingBase
<
IBZDictDTO
,
IBZDict
>
{
IBZDictMapping
MAPPER
=
Mappers
.
getMapper
(
IBZDictMapping
.
class
);
}
ibzdict-core/src/main/resources/mapper/dict/ibzdict/IBZDictMapper.xml
浏览文件 @
c88b8fb1
...
...
@@ -12,7 +12,7 @@
<resultMap
id=
"IBZDictResultMap"
type=
"cn.ibizlab.core.dict.domain.IBZDict"
autoMapping=
"true"
>
<id
property=
"dictid"
column=
"ibzdictid"
/>
<!--主键字段映射-->
<!--通过mybatis自动注入关系属性[关系实体],fetchType="lazy"为懒加载配置 -->
<collection
property=
"items"
ofType=
"cn.ibizlab.core.dict.domain.IBZDictItem"
column=
"ibzdictid"
select=
"cn.ibizlab.core.dict.mapper.IBZDictItemMapper.selectBy
d
ictid"
fetchType=
"lazy"
></collection>
<collection
property=
"items"
ofType=
"cn.ibizlab.core.dict.domain.IBZDictItem"
column=
"ibzdictid"
select=
"cn.ibizlab.core.dict.mapper.IBZDictItemMapper.selectBy
D
ictid"
fetchType=
"lazy"
></collection>
</resultMap>
...
...
ibzdict-core/src/main/resources/mapper/dict/ibzdictitem/IBZDictItemMapper.xml
浏览文件 @
c88b8fb1
...
...
@@ -17,7 +17,7 @@
</resultMap>
<!--关系实体暴露select方法供主实体通过外键查询关系实体数据[实体关系名称:DER1N_IBZDICTITEM_IBZDICT_DICTID] -->
<select
id=
"selectBy
d
ictid"
resultMap=
"IBZDictItemResultMap"
>
<select
id=
"selectBy
D
ictid"
resultMap=
"IBZDictItemResultMap"
>
select t1.* from (
<include
refid=
"Default"
/>
) t1
...
...
ibzdict-provider/ibzdict-provider-dictapi/src/main/java/cn/ibizlab/service/dictapi/resource/IBZDictResource.java
浏览文件 @
c88b8fb1
...
...
@@ -35,12 +35,10 @@ import cn.ibizlab.core.dict.filter.IBZDictSearchContext;
import
cn.ibizlab.core.dict.service.mapping.IBZDictMapping
;
import
cn.ibizlab.util.log.IBIZLog
;
@Slf4j
@IBIZLog
@Api
(
tags
=
{
"IBZDict"
})
@RestController
@RestController
(
"dictapiIBZDict"
)
@RequestMapping
(
""
)
public
class
IBZDictResource
{
...
...
ibzdict-util/src/main/java/cn/ibizlab/util/domain/DTOBase.java
浏览文件 @
c88b8fb1
...
...
@@ -14,18 +14,20 @@ public class DTOBase implements Serializable {
@JSONField
(
serialize
=
false
)
private
Set
<
String
>
focusNull
;
@JsonIgnore
@JSONField
(
serialize
=
false
)
public
void
addFocusNull
(
String
field
)
{
getFocusNull
().
add
(
field
);
public
void
modify
(
String
field
,
Object
val
)
{
if
(
val
==
null
)
this
.
getFocusNull
().
add
(
field
.
toLowerCase
());
else
this
.
getFocusNull
().
remove
(
field
.
toLowerCase
());
}
@JsonIgnore
@JSONField
(
serialize
=
false
)
public
Set
<
String
>
getFocusNull
()
{
if
(
focusNull
==
null
)
focusNull
=
new
HashSet
<>();
return
focusNull
;
}
}
ibzdict-util/src/main/java/cn/ibizlab/util/helper/UniqueNameGenerator.java
浏览文件 @
c88b8fb1
...
...
@@ -5,10 +5,8 @@ import lombok.extern.slf4j.Slf4j;
import
org.springframework.beans.factory.config.BeanDefinition
;
import
org.springframework.beans.factory.support.BeanDefinitionRegistry
;
import
org.springframework.context.annotation.AnnotationBeanNameGenerator
;
import
cn.ibizlab.util.log.IBIZLog
;
@Slf4j
@IBIZLog
public
class
UniqueNameGenerator
extends
AnnotationBeanNameGenerator
{
@Override
...
...
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录