Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
B
bigDataSystem
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张伯涛
bigDataSystem
Commits
210f5a3e
Commit
210f5a3e
authored
Dec 09, 2024
by
罗林杰
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
416ffca3
dd96c911
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
792 additions
and
602 deletions
+792
-602
index.ts
src/router/routes/index.ts
+22
-2
index.vue
src/views/dataQuality/dataSheet/task/index.vue
+315
-293
mainBody.data.ts
src/views/dataQuality/dataSheet/task/mainBody.data.ts
+69
-8
handleConsanguinity.vue
...ervice/serviceManage/onlineManage/handleConsanguinity.vue
+149
-121
index.vue
src/views/dataService/serviceManage/onlineManage/index.vue
+18
-23
mock.ts
src/views/dataService/serviceManage/onlineManage/mock.ts
+2
-2
onlineManage.data.ts
...taService/serviceManage/onlineManage/onlineManage.data.ts
+19
-4
productionDrawer.vue
...taService/serviceManage/onlineManage/productionDrawer.vue
+46
-52
productionTestModal.vue
...ervice/serviceManage/onlineManage/productionTestModal.vue
+30
-15
detail.data.ts
...aStandards/labelDropInspection/labelDetail/detail.data.ts
+25
-24
detailData.ts
...taStandards/labelDropInspection/labelDetail/detailData.ts
+1
-1
index.vue
...s/dataStandards/labelDropInspection/labelDetail/index.vue
+96
-57
No files found.
src/router/routes/index.ts
View file @
210f5a3e
...
...
@@ -906,6 +906,26 @@ export const shellExecuteRoute: AppRouteRecordRaw = {
icon
:
''
,
},
},
{
path
:
'versionCompare'
,
name
:
'VersionCompare'
,
component
:
()
=>
import
(
'@/views/scriptDevelopment/shellDevelopment/shellExecute/VersionCompare.vue'
),
meta
:
{
title
:
'版本比较'
,
icon
:
''
,
},
},
{
path
:
'versionDetail'
,
name
:
'versionDetail'
,
component
:
()
=>
import
(
'@/views/scriptDevelopment/shellDevelopment/shellExecute/VersionDetail.vue'
),
meta
:
{
title
:
'查看详情'
,
icon
:
''
,
},
},
],
};
...
...
@@ -1027,7 +1047,7 @@ export const serviceDevelopmentRoute: AppRouteRecordRaw = {
{
path
:
'serviceManage/onlineManage/productionData'
,
name
:
'productionData'
,
component
:
()
=>
import
(
'@/views/dataService/serviceManage/onlineManage/productionD
ata
.vue'
),
component
:
()
=>
import
(
'@/views/dataService/serviceManage/onlineManage/productionD
rawer
.vue'
),
meta
:
{
title
:
'上线设置'
,
icon
:
''
,
...
...
@@ -1036,7 +1056,7 @@ export const serviceDevelopmentRoute: AppRouteRecordRaw = {
{
path
:
'serviceManage/onlineManage/productionTest'
,
name
:
'productionTest'
,
component
:
()
=>
import
(
'@/views/dataService/serviceManage/onlineManage/productionTest.vue'
),
component
:
()
=>
import
(
'@/views/dataService/serviceManage/onlineManage/productionTest
Modal
.vue'
),
meta
:
{
title
:
'上线测试'
,
icon
:
''
,
...
...
src/views/dataQuality/dataSheet/task/index.vue
View file @
210f5a3e
<
template
>
<PageWrapper
dense
contentFullHeight
fixedHeight
contentClass=
"flex"
>
<DeptTree
class=
"w-1/4 xl:w-1/5"
@
select=
"handleSelect"
/>
<DeptTree
class=
"w-1/4 xl:w-1/5"
@
select=
"handleSelect"
/>
<BasicTable
@
register=
"registerTable"
class=
"w-3/4 xl:w-4/5"
:searchInfo=
"searchInfo"
>
<template
#
toolbar
>
<a-scrollbar>
<a-button
:disabled=
"getRowSelection().selectedRowKeys
<
=
0
"
type=
"primary"
@
click=
"handleDeleteIds"
style=
"margin-right: 10px"
>
删除
</a-button
>
@
click=
"handleQualityTaskOnline"
v-if=
"isOnline"
:disabled=
"getRowSelection().selectedRowKeys
<
=
0
"
style=
"margin-right: 10px"
>
批量上线
</a-button>
<a-button
type=
"error"
@
click=
"handleQualityTaskOffline"
v-if=
"isOffline"
style=
"margin-right: 10px"
>
批量下线
</a-button>
<a-button
type=
"primary"
@
click=
"handleBusinessLabel"
style=
"margin-right: 10px"
>
设置业务标签
</a-button>
<a-button
type=
"primary"
@
click=
"handleCopyTo"
style=
"margin-right: 10px"
>
复制到
</a-button>
<a-button
:disabled=
"getRowSelection().selectedRowKeys
<
=
0
"
type=
"primary"
style=
"margin-right: 10px
"
>
导出
</a-button
>
@
click=
"handleDeleteIds
"
style=
"margin-right: 10px"
>
删除
</a-button
>
<a-button
type=
"primary"
@
click=
"handleImport"
style=
"margin-right: 10px"
>
导入
</a-button>
<a-button
type=
"primary"
@
click=
"handleAdd"
style=
"margin-right: 10px"
>
新增文件夹
</a-button
>
<a-button
type=
"primary"
@
click=
"handleAddMainBody"
style=
"margin-right: 10px"
>
新增质量任务文件
</a-button
>
<a-button
type=
"primary"
@
click=
"handleQualityTaskSetting"
:disabled=
"getRowSelection().selectedRowKeys
<
=
0
"
style=
"margin-right: 10px"
>
配置质量任务文件
</a-button
>
<a-button
type=
"primary"
@
click=
"handleAddQualityRule"
style=
"margin-right: 10px"
>
新增质量规则
</a-button
>
<a-button
type=
"primary"
@
click=
"handleAlarmSetting"
:disabled=
"getRowSelection().selectedRowKeys
<
=
0
"
style=
"margin-right: 10px"
>
配置通知告警
</a-button
>
style=
"margin-right: 10px"
>
导出
</a-button>
<a-button
type=
"primary"
@
click=
"handleAdd"
style=
"margin-right: 10px"
>
新增文件夹
</a-button>
<a-button
type=
"primary"
@
click=
"handleAddMainBody"
style=
"margin-right: 10px"
>
新增质量任务
</a-button>
<!--
<a-button-->
<!-- type="primary"-->
<!-- @click="handleQualityTaskSetting"-->
<!-- :disabled="getRowSelection().selectedRowKeys
<
=
0
"
--
>
<!-- style="margin-right: 10px">配置质量任务文件-->
<!--
</a-button>
-->
<!--
<a-button
type=
"primary"
@
click=
"handleAddQualityRule"
style=
"margin-right: 10px"
>
新增质量规则-->
<!--
</a-button>
-->
<!--
<a-button-->
<!-- type="primary"-->
<!-- @click="handleAlarmSetting"-->
<!-- :disabled="getRowSelection().selectedRowKeys
<
=
0
"
--
>
<!-- style="margin-right: 10px">配置通知告警-->
<!--
</a-button>
-->
<!--
<a-button-->
<!-- type="primary"-->
<!-- @click="handleQualityTaskRunSetting"-->
...
...
@@ -60,9 +69,9 @@
<!-- :disabled="getRowSelection().selectedRowKeys
<
=
0
"
--
>
<!-- >查看报告
</a-button-->
<!-- >-->
<a-button
type=
"primary"
@
click=
"handleAddCheckRangePlus"
style=
"margin-right: 10px"
>
添加检查范围-增量添加
</a-button
>
<!--
<a-button
type=
"primary"
@
click=
"handleAddCheckRangePlus"
style=
"margin-right: 10px"
>
-->
<!-- 添加检查范围-增量添加-->
<!--
</a-button>
--
>
<!--
<a-button
type=
"primary"
@
click=
"handleAddCheckRangeAll"
>
添加检查范围-全量添加
</a-button>
-->
<!--
<a-button-->
<!-- type="primary"-->
...
...
@@ -71,28 +80,13 @@
<!-- :disabled="getRowSelection().selectedRowKeys
<
=
0
"
--
>
<!-- >上线
</a-button-->
<!-- >-->
<a-button
type=
"primary"
@
click=
"handleQualityTaskOnline"
v-if=
"isOnline"
:disabled=
"getRowSelection().selectedRowKeys
<
=
0
"
style=
"margin-right: 10px"
>
批量上线
</a-button
>
<!--
<a-button-->
<!-- type="warning"-->
<!-- @click="handleQualityTaskOffline"-->
<!-- v-if="isOffline"-->
<!-- style="margin-right: 10px"-->
<!-- >下线
</a-button-->
<!-- >-->
<a-button
type=
"error"
@
click=
"handleQualityTaskOffline"
v-if=
"isOffline"
style=
"margin-right: 10px"
>
批量下线
</a-button
>
<!--
<a-button-->
<!-- type="warning"-->
<!-- @click="handleQualityTaskOffline"-->
<!-- v-if="isOffline"-->
<!-- style="margin-right: 10px"-->
<!-- >下线
</a-button-->
<!-- >-->
<!--
<a-button-->
<!-- type="primary"-->
<!-- @click="handleQualityTaskService"-->
...
...
@@ -130,258 +124,286 @@
</
template
>
</template>
</BasicTable>
<importModal
@
register=
"registerImport"
@
success=
"handleImportSuccess"
/>
<AddFolder
@
register=
"register"
/>
<remove-modal
@
register=
"registerRemove"
/>
<main-body-modal
@
register=
"registerMain"
/>
<quality-Run-setting-modal
@
register=
"registerRunSetting"
/>
<quality-setting-modal
@
register=
"registerSettingModal"
/>
<new-rule-modal
@
register=
"registerNewRule"
/>
<alarm-setting-modal
@
register=
"registerAlarmSettingModal"
/>
<quality-check-range-plus-modal
@
register=
"registerCheckRangePlusModal"
/>
<importModal
@
register=
"registerImport"
@
success=
"handleImportSuccess"
/>
<AddFolder
@
register=
"register"
/>
<remove-modal
@
register=
"registerRemove"
/>
<main-body-modal
@
register=
"registerMain"
/>
<quality-Run-setting-modal
@
register=
"registerRunSetting"
/>
<quality-setting-modal
@
register=
"registerSettingModal"
/>
<new-rule-modal
@
register=
"registerNewRule"
/>
<alarm-setting-modal
@
register=
"registerAlarmSettingModal"
/>
<quality-check-range-plus-modal
@
register=
"registerCheckRangePlusModal"
/>
</PageWrapper>
</template>
<
script
lang=
"ts"
setup
>
import
{
reactive
,
onMounted
,
ref
}
from
'vue'
;
import
{
BasicTable
,
useTable
,
TableAction
}
from
'@/components/Table'
;
import
{
PageWrapper
}
from
'@/components/Page'
;
import
DeptTree
from
'./DeptTree.vue'
;
import
{
useMessage
}
from
'@/hooks/web/useMessage'
;
import
{
useModal
}
from
'@/components/Modal'
;
import
importModal
from
'./importModal.vue'
;
import
{
tableList
}
from
'./mock'
;
import
{
columns
,
searchFormSchema
}
from
'./mainBody.data'
;
import
{
useGo
}
from
'@/hooks/web/usePage'
;
import
{
useRoute
,
onBeforeRouteLeave
}
from
'vue-router'
;
import
{
useFilterStore
}
from
'@/store/modules/filterData'
;
import
{
router
}
from
'@/router'
;
import
AddFolder
from
'@/views/dataQuality/dataSheet/task/addFolder.vue'
;
import
RemoveModal
from
'@/views/dataQuality/dataSheet/task/removeModal.vue'
;
import
MainBodyModal
from
'@/views/dataQuality/dataSheet/task/mainBodyModal.vue'
;
import
QualityRunSettingModal
from
'./QualityTaskRunSetting.vue'
;
import
QualitySettingModal
from
'./QualityTaskSetting.vue'
;
import
NewRuleModal
from
'./QualityTaskNewRule.vue'
;
import
AlarmSettingModal
from
'./QualityTaskAlarmSetting.vue'
;
import
QualityCheckRangePlusModal
from
'@/views/dataQuality/dataSheet/task/checkRange/index.vue'
;
import
{
Modal
}
from
'ant-design-vue'
;
defineOptions
({
name
:
'AccountManagement'
});
const
{
createMessage
,
createConfirm
}
=
useMessage
();
const
filterStore
=
useFilterStore
();
const
route
=
useRoute
();
const
go
=
useGo
();
const
isWhite
=
ref
(
false
);
const
isOnline
=
ref
(
true
);
const
isOffline
=
ref
(
false
);
// const isRunning = ref(false);
const
[
register
,
{
openModal
}]
=
useModal
();
const
[
registerImport
,
{
openModal
:
openImportModal
}]
=
useModal
();
const
[
registerRemove
,
{
openModal
:
openRemoveModal
}]
=
useModal
();
const
[
registerMain
,
{
openModal
:
openMainModal
}]
=
useModal
();
const
[
registerNewRule
,
{
openModal
:
openNewRuleModal
}]
=
useModal
();
const
[
registerRunSetting
,
{
openModal
:
openRunSettingModal
}]
=
useModal
();
const
[
registerSettingModal
,
{
openModal
:
openSettingModal
}]
=
useModal
();
const
[
registerAlarmSettingModal
,
{
openModal
:
openAlarmSettingModal
}]
=
useModal
();
const
[
registerCheckRangePlusModal
,
{
openModal
:
openCheckRangePlusModal
}]
=
useModal
();
const
searchInfo
=
reactive
<
Recordable
>
({});
const
[
registerTable
,
{
reload
,
updateTableDataRecord
,
getSearchInfo
,
getForm
,
getRowSelection
},
]
=
useTable
({
title
:
'质量任务列表'
,
api
:
async
(
params
)
=>
{
console
.
log
(
'tableList'
,
tableList
);
const
response
=
{
pageNu
:
'1'
,
pageSize
:
'10'
,
pages
:
'1'
,
total
:
tableList
.
length
,
code
:
''
,
message
:
''
,
data
:
tableList
,
};
import
{
reactive
,
onMounted
,
ref
}
from
'vue'
;
import
{
BasicTable
,
useTable
,
TableAction
}
from
'@/components/Table'
;
import
{
PageWrapper
}
from
'@/components/Page'
;
import
DeptTree
from
'./DeptTree.vue'
;
import
{
useMessage
}
from
'@/hooks/web/useMessage'
;
import
{
useModal
}
from
'@/components/Modal'
;
import
{
tableList
}
from
'./mock'
;
import
{
columns
,
searchFormSchema
}
from
'./mainBody.data'
;
import
{
useGo
}
from
'@/hooks/web/usePage'
;
import
{
useRoute
,
onBeforeRouteLeave
}
from
'vue-router'
;
import
{
useFilterStore
}
from
'@/store/modules/filterData'
;
import
{
router
}
from
'@/router'
;
import
AddFolder
from
'@/views/dataQuality/dataSheet/task/addFolder.vue'
;
import
RemoveModal
from
'@/views/dataQuality/dataSheet/task/removeModal.vue'
;
import
MainBodyModal
from
'@/views/dataQuality/dataSheet/task/mainBodyModal.vue'
;
import
QualitySettingModal
from
'./QualityTaskSetting.vue'
;
import
NewRuleModal
from
'./QualityTaskNewRule.vue'
;
import
AlarmSettingModal
from
'./QualityTaskAlarmSetting.vue'
;
import
QualityCheckRangePlusModal
from
'@/views/dataQuality/dataSheet/task/checkRange/index.vue'
;
import
{
Modal
}
from
'ant-design-vue'
;
return
{
...
response
};
defineOptions
({
name
:
'AccountManagement'
});
const
{
createMessage
,
createConfirm
}
=
useMessage
();
const
filterStore
=
useFilterStore
();
const
route
=
useRoute
();
const
go
=
useGo
();
const
isWhite
=
ref
(
false
);
const
isOnline
=
ref
(
true
);
const
isOffline
=
ref
(
false
);
const
[
register
,
{
openModal
}]
=
useModal
();
const
[
registerImport
,
{
openModal
:
openImportModal
}]
=
useModal
();
const
[
registerRemove
,
{
openModal
:
openRemoveModal
}]
=
useModal
();
const
[
registerMain
,
{
openModal
:
openMainModal
}]
=
useModal
();
const
[
registerNewRule
,
{
openModal
:
openNewRuleModal
}]
=
useModal
();
const
[
registerRunSetting
,
{
openModal
:
openRunSettingModal
}]
=
useModal
();
const
[
registerSettingModal
,
{
openModal
:
openSettingModal
}]
=
useModal
();
const
[
registerAlarmSettingModal
,
{
openModal
:
openAlarmSettingModal
}]
=
useModal
();
const
[
registerCheckRangePlusModal
,
{
openModal
:
openCheckRangePlusModal
}]
=
useModal
();
const
searchInfo
=
reactive
<
Recordable
>
({});
const
[
registerTable
,
{
reload
,
updateTableDataRecord
,
getSearchInfo
,
getForm
,
getRowSelection
},
]
=
useTable
({
title
:
'质量任务列表'
,
api
:
async
(
params
)
=>
{
console
.
log
(
'tableList'
,
tableList
);
const
response
=
{
pageNu
:
'1'
,
pageSize
:
'10'
,
pages
:
'1'
,
total
:
tableList
.
length
,
code
:
''
,
message
:
''
,
data
:
tableList
,
};
return
{...
response
};
},
rowKey
:
'businessId'
,
rowSelection
:
true
,
columns
,
formConfig
:
{
labelWidth
:
10
,
schemas
:
searchFormSchema
,
autoSubmitOnEnter
:
true
,
resetFunc
:
()
=>
{
searchInfo
.
deptId
=
''
;
},
rowKey
:
'businessId'
,
rowSelection
:
true
,
columns
,
formConfig
:
{
labelWidth
:
10
,
schemas
:
searchFormSchema
,
autoSubmitOnEnter
:
true
,
resetFunc
:
()
=>
{
searchInfo
.
deptId
=
''
;
},
},
useSearchForm
:
true
,
showTableSetting
:
false
,
bordered
:
true
,
handleSearchInfoFn
(
info
)
{
console
.
log
(
'handleSearchInfoFn'
,
info
);
return
info
;
},
useSearchForm
:
true
,
showTableSetting
:
false
,
bordered
:
true
,
handleSearchInfoFn
(
info
)
{
console
.
log
(
'handleSearchInfoFn'
,
info
);
return
info
;
},
actionColumn
:
{
width
:
170
,
title
:
'操作'
,
dataIndex
:
'action'
,
// slots: { customRender: 'action' },
},
});
function
showDetails
(
record
)
{
router
.
push
({
path
:
'/mainBody/details'
,
});
}
/** 导入按钮*/
function
handleImport
()
{
openImportModal
(
true
,
{});
}
/** 新建文件夹*/
function
handleAdd
()
{
openModal
(
true
,
{});
}
function
handleRemove
()
{
openRemoveModal
(
true
,
{});
}
/** 新建质量任务文件*/
function
handleAddMainBody
()
{
openMainModal
(
true
,
{
isUpdate
:
false
,
});
}
/** 新增质量规则*/
function
handleAddQualityRule
()
{
go
(
'/dataQuality/dataSheet/rule'
);
}
/** 配置通知告警*/
function
handleAlarmSetting
()
{
openAlarmSettingModal
(
true
,
{
isUpdate
:
false
,
});
}
/** 配置质量任务 未完成 应为弹窗 */
function
handleQualityTaskSetting
()
{
openSettingModal
(
true
,
{});
}
/** 配置运行 正在做 应为弹窗*/
function
handleQualityTaskRunSetting
()
{
openRunSettingModal
(
true
,
{
isRunning
:
false
,
});
}
/** 任务运行*/
function
handleQualityTaskRun
()
{
Modal
.
confirm
({
title
:
'确认运行'
,
content
:
'是否运行选中的任务?'
,
onOk
:
()
=>
{
createMessage
.
success
(
'运行成功!'
);
},
actionColumn
:
{
width
:
170
,
title
:
'操作'
,
dataIndex
:
'action'
,
// slots: { customRender: 'action' },
});
}
/** 查看报告 正在做 应为跳转到报告页面*/
function
handleQualityTaskRunLog
()
{
go
(
'/dataQuality/dataSheet/task/viewTaskOperation'
,
false
);
}
/** 添加检查范围*/
function
handleAddCheckRangePlus
()
{
openCheckRangePlusModal
(
true
,
{});
}
/** 上线 未完成 应为弹窗*/
function
handleQualityTaskOnline
()
{
go
(
'/dataQuality/dataSheet/task'
);
isOnline
.
value
=
false
;
isOffline
.
value
=
true
;
}
/** 下线 未完成 应为弹窗*/
function
handleQualityTaskOffline
()
{
go
(
'/dataQuality/dataSheet/task'
);
isOnline
.
value
=
true
;
isOffline
.
value
=
false
;
}
/** 设置业务标签 */
function
handleBusinessLabel
()
{
}
/** 复制到 */
function
handleCopyTo
()
{
}
/** 跳转运维 未完成 应为跳转到运维界面*/
function
handleQualityTaskService
()
{
go
(
'/dataQuality/dataSheet/task/taskOperation'
);
}
/** 编辑按钮*/
function
handleEdit
(
record
:
Recordable
)
{
openMainModal
(
true
,
{
record
,
isUpdate
:
true
,
});
}
function
handleDeleteIds
()
{
createConfirm
({
iconType
:
'warning'
,
title
:
'确认删除'
,
content
:
'确认批量删除选中数据吗?'
,
onOk
()
{
createMessage
.
success
(
'批量删除成功!'
);
},
});
}
function
showDetails
(
record
)
{
router
.
push
({
path
:
'/mainBody/details'
,
});
}
/** 导入按钮*/
function
handleImport
()
{
openImportModal
(
true
,
{});
}
/** 新建文件夹*/
function
handleAdd
()
{
openModal
(
true
,
{});
}
function
handleRemove
()
{
openRemoveModal
(
true
,
{});
}
/** 新建质量任务文件*/
function
handleAddMainBody
()
{
openMainModal
(
true
,
{
isUpdate
:
false
,
});
}
/** 新增质量规则*/
function
handleAddQualityRule
()
{
go
(
'/dataQuality/dataSheet/rule'
);
}
/** 配置通知告警*/
function
handleAlarmSetting
()
{
openAlarmSettingModal
(
true
,
{
isUpdate
:
false
,
});
}
/** 配置质量任务 未完成 应为弹窗 */
function
handleQualityTaskSetting
()
{
openSettingModal
(
true
,
{});
}
/** 配置运行 正在做 应为弹窗*/
function
handleQualityTaskRunSetting
()
{
openRunSettingModal
(
true
,
{
isRunning
:
false
,
});
}
/** 任务运行*/
function
handleQualityTaskRun
()
{
Modal
.
confirm
({
title
:
'确认运行'
,
content
:
'是否运行选中的任务?'
,
onOk
:
()
=>
{
createMessage
.
success
(
'运行成功!'
);
},
});
}
/** 查看报告 正在做 应为跳转到报告页面*/
function
handleQualityTaskRunLog
()
{
go
(
'/dataQuality/dataSheet/task/viewTaskOperation'
,
false
);
}
/** 添加检查范围*/
function
handleAddCheckRangePlus
()
{
openCheckRangePlusModal
(
true
,
{});
}
/** 上线 未完成 应为弹窗*/
function
handleQualityTaskOnline
()
{
go
(
'/dataQuality/dataSheet/task'
);
isOnline
.
value
=
false
;
isOffline
.
value
=
true
;
}
/** 下线 未完成 应为弹窗*/
function
handleQualityTaskOffline
()
{
go
(
'/dataQuality/dataSheet/task'
);
isOnline
.
value
=
true
;
isOffline
.
value
=
false
;
}
/** 跳转运维 未完成 应为跳转到运维界面*/
function
handleQualityTaskService
()
{
go
(
'/dataQuality/dataSheet/task/taskOperation'
);
}
/** 重置密码弹窗确定按钮*/
/** 删除按钮*/
function
handleDelete
(
record
:
Recordable
)
{
createMessage
.
success
(
'删除成功!'
);
reload
();
}
/** 编辑按钮*/
function
handleEdit
(
record
:
Recordable
)
{
openMainModal
(
true
,
{
record
,
isUpdate
:
true
,
});
}
function
handleDeleteIds
()
{
createConfirm
({
iconType
:
'warning'
,
title
:
'确认删除'
,
content
:
'确认批量删除选中数据吗?'
,
onOk
()
{
createMessage
.
success
(
'批量删除成功!'
);
},
});
}
/** 重置密码弹窗确定按钮*/
/** 删除按钮*/
function
handleDelete
(
record
:
Recordable
)
{
createMessage
.
success
(
'删除成功!'
);
reload
();
}
/** 导出按钮*/
async
function
handleExport
()
{}
/** 导入成功*/
function
handleImportSuccess
()
{
/** 导出按钮*/
async
function
handleExport
()
{
}
/** 导入成功*/
function
handleImportSuccess
()
{
reload
();
}
/** 新增/编辑成功*/
function
handleSuccess
({
isUpdate
,
values
})
{
if
(
isUpdate
)
{
// 演示不刷新表格直接更新内部数据。
// 注意:updateTableDataRecord要求表格的rowKey属性为string并且存在于每一行的record的keys中
const
result
=
updateTableDataRecord
(
values
.
id
,
values
);
console
.
log
(
result
);
reload
();
}
/** 新增/编辑成功*/
function
handleSuccess
({
isUpdate
,
values
})
{
if
(
isUpdate
)
{
// 演示不刷新表格直接更新内部数据。
// 注意:updateTableDataRecord要求表格的rowKey属性为string并且存在于每一行的record的keys中
const
result
=
updateTableDataRecord
(
values
.
id
,
values
);
console
.
log
(
result
);
reload
();
}
else
{
reload
();
}
}
/** 部门树的select*/
function
handleSelect
(
deptId
=
''
)
{
searchInfo
.
deptId
=
deptId
;
}
else
{
reload
();
}
}
function
handleView
(
record
:
Recordable
)
{
go
(
'/system/account_detail/'
+
record
.
id
);
}
onMounted
(()
=>
{
const
path
=
route
.
path
;
if
(
filterStore
.
getSearchParams
[
path
])
{
if
(
JSON
.
parse
(
filterStore
.
getSearchParams
[
path
]
!==
{}))
{
const
params
=
JSON
.
parse
(
filterStore
.
getSearchParams
[
path
]);
console
.
log
(
'11111111111111111111111111111'
,
params
);
getForm
().
setFieldsValue
({
page
:
params
.
page
,
pageSize
:
params
.
pageSize
,
username
:
params
.
username
,
flag
:
params
.
flag
,
});
searchInfo
.
deptId
=
params
.
deptId
;
}
/** 部门树的select*/
function
handleSelect
(
deptId
=
''
)
{
searchInfo
.
deptId
=
deptId
;
reload
();
}
function
handleView
(
record
:
Recordable
)
{
go
(
'/system/account_detail/'
+
record
.
id
);
}
onMounted
(()
=>
{
const
path
=
route
.
path
;
if
(
filterStore
.
getSearchParams
[
path
])
{
if
(
JSON
.
parse
(
filterStore
.
getSearchParams
[
path
]
!==
{}))
{
const
params
=
JSON
.
parse
(
filterStore
.
getSearchParams
[
path
]);
console
.
log
(
'11111111111111111111111111111'
,
params
);
getForm
().
setFieldsValue
({
page
:
params
.
page
,
pageSize
:
params
.
pageSize
,
username
:
params
.
username
,
flag
:
params
.
flag
,
});
searchInfo
.
deptId
=
params
.
deptId
;
}
}
});
onBeforeRouteLeave
((
to
,
from
,
next
)
=>
{
const
params
=
Object
.
assign
({},
getSearchInfo
(),
getForm
().
getFieldsValue
());
console
.
log
(
'path'
,
from
.
path
);
console
.
log
(
'params'
,
params
);
filterStore
.
setSearchParams
({
path
:
from
.
path
,
param
:
{
...
params
,
},
});
onBeforeRouteLeave
((
to
,
from
,
next
)
=>
{
const
params
=
Object
.
assign
({},
getSearchInfo
(),
getForm
().
getFieldsValue
());
console
.
log
(
'path'
,
from
.
path
);
console
.
log
(
'params'
,
params
);
filterStore
.
setSearchParams
({
path
:
from
.
path
,
param
:
{
...
params
,
},
});
next
();
// 允许导航
});
next
();
// 允许导航
});
</
script
>
src/views/dataQuality/dataSheet/task/mainBody.data.ts
View file @
210f5a3e
...
...
@@ -29,13 +29,7 @@ export const deptMap = (() => {
},
{});
})();
export
const
columns
:
BasicColumn
[]
=
[
// {
// title: '质量规则',
// dataIndex: 'name',
// width: 120,
// slots: { customRender: 'name' },
// },
export
const
columns
:
BasicColumn
[
any
]
=
[
{
title
:
'质量规则'
,
dataIndex
:
'qualityRule'
,
...
...
@@ -228,11 +222,78 @@ export const searchFormSchema: FormSchema[] = [
field
:
'name'
,
label
:
' '
,
component
:
'Input'
,
colProps
:
{
span
:
8
},
colProps
:
{
span
:
4
},
componentProps
:
{
placeholder
:
'输入关键字搜索'
,
},
},
{
field
:
'testMode'
,
label
:
' '
,
component
:
'Select'
,
componentProps
:
{
placeholder
:
'检查方式'
,
options
:
[
{
label
:
'全量'
,
value
:
'1'
},
{
label
:
'增量'
,
value
:
'2'
},
],
},
colProps
:
{
span
:
3
},
},
{
field
:
'ruleGroup'
,
label
:
' '
,
component
:
'Select'
,
componentProps
:
{
placeholder
:
'规则组'
,
options
:
[
{
label
:
'admin_个人工作区'
,
value
:
'1'
},
{
label
:
'共享工作区'
,
value
:
'2'
},
{
label
:
'商城工作区'
,
value
:
'3'
},
{
label
:
'指标工作区'
,
value
:
'4'
},
],
},
colProps
:
{
span
:
3
},
},
{
field
:
'releaseStatus'
,
label
:
' '
,
component
:
'Select'
,
componentProps
:
{
placeholder
:
'发布状态'
,
options
:
[
{
label
:
'已上线'
,
value
:
'1'
},
{
label
:
'未上线'
,
value
:
'2'
},
],
},
colProps
:
{
span
:
3
},
},
{
field
:
'dateRange'
,
label
:
' '
,
component
:
'RangePicker'
,
componentProps
:
{
format
:
'YYYY-MM-DD'
,
// 显示的日期格式
valueFormat
:
'YYYY-MM-DD'
,
// 提交的日期格式
placeholder
:
[
'开始时间'
,
'结束时间'
],
// 占位符
style
:
{
width
:
'100%'
},
// 控制宽度
},
colProps
:
{
span
:
5
},
},
{
field
:
'businessLabel'
,
label
:
' '
,
component
:
'Select'
,
componentProps
:
{
placeholder
:
'业务标签'
,
options
:
[
{
label
:
'生产'
,
value
:
'1'
},
{
label
:
'质量'
,
value
:
'2'
},
{
label
:
'人力'
,
value
:
'3'
},
],
},
colProps
:
{
span
:
3
},
},
// {
// field: 'flag',
// label: ' ',
...
...
src/views/dataService/serviceManage/onlineManage/handleConsanguinity.vue
View file @
210f5a3e
<
template
>
<PageWrapper
:title=
"title"
:class=
"prefixCls"
dense
contentBackground
@
back=
"goBack"
>
<template
#
headerContent
>
<span>
API/共享工作区/tuomin_demo
</span>
<PageWrapper
dense
contentBackground
@
back=
"goBack"
>
<template
#
title
>
<div
style=
"display: flex; justify-content: space-between"
>
<div
class=
"flex"
>
<Icon
icon=
"ant-design:api-outlined"
:size=
"30"
style=
"color:#0960BD;"
/>
<div
style=
"margin-left: 10px"
>
<span>
tuomin_demo
</span>
<h5
style=
"color: #BFBFBF"
>
API/共享工作区/tuomin_demo
</h5>
</div>
</div>
</div>
</
template
>
<div
:class=
"`${prefixCls}__container`
"
>
<div
:class=
"`${prefixCls}__left`
"
>
<div
:class=
"`${prefixCls}__left-one`
"
>
<Icon
:class=
"`${prefixCls}__left-icon`
"
icon=
"ant-design:down-outlined"
:size=
"16"
/>
<p
:class=
"`${prefixCls}__left-title`
"
>
<div
style=
"width: 100%; display: flex;border-top: 2px solid #EBEFF6;
"
>
<div
style=
"width: 20%;padding: 0 20px 0 40px;border-right: 2px solid #EBEFF6;
"
>
<div
class=
"left-one
"
>
<Icon
class=
"left-icon
"
icon=
"ant-design:down-outlined"
:size=
"16"
/>
<p
class=
"left-title
"
>
血缘对象
</p>
</div>
<BasicForm
...
...
@@ -15,25 +23,30 @@
:schemas=
"modelFormSchema"
:showActionButtonGroup=
"false"
/>
<div>
<List
:class=
"`${prefixCls}__List`
"
>
<div
style=
"width: 100%;margin: -10px 0;"
>
<List
style=
"height: auto
"
>
<
template
v-for=
"item in modelData"
:key=
"item.id"
>
<List
.
Item
>
<Card
:class=
"`$
{prefixCls}__List-Card`">
<div
style=
"display: flex;"
>
<Icon
v-if=
"item.id"
:size=
"22"
:icon=
"item.icon"
:color=
"item.color"
/>
<div
:class=
"`$
{prefixCls}__List-memberContainer`">
<h3>
{{
item
.
member
}}
</h3>
<h5
:class=
"`$
{prefixCls}__List-memberContainer-smallT`">
API/共享工作区/tuomin_demo
</h5>
<List
.
Item
style=
"cursor: pointer"
:class=
"selectId === item.id ? 'selectionClass' : null"
@
click=
"selectItem(item)"
>
<List
.
Item
.
Meta
>
<template
#
title
>
<div
style=
"width: 100%;display: flex;align-items: center"
>
<Icon
v-if=
"item.id"
:size=
"24"
:icon=
"item.icon"
:color=
"item.color"
/>
<div
style=
"margin-left:15px"
>
<span>
{{
item
.
member
}}
</span>
<h6
style=
"color: #BFBFBF;width: 100%"
>
inceptor1/cemo/employee
</h6>
</div>
</div>
</
div
>
</
Card
>
</
template
>
</
List
.Item.Meta
>
</List
.Item
>
</template>
</List>
...
...
@@ -45,68 +58,87 @@
</template>
</BasicTable>-->
</div>
<div
:class=
"`${prefixCls}__right`
"
>
<div
style=
"width: 80%
"
>
<div
style=
"display: flex;"
>
<div
style=
"width: 50%;margin-
top: 15px;
"
>
<
Card
style=
" height: 80px; background-color: #F5F8FC;
"
>
<div
style=
"width: 50%;margin-
left: 15px
"
>
<
div
style=
" height: 80px; background-color: #F5F8FC;margin:15px 5px 0 0;padding: 20px
"
>
<div
style=
"display: flex;"
>
<Icon
icon=
"ant-design:api-filled"
:size=
"24"
style=
"color:#5A70FB;"
/>
<div
:class=
"`${prefixCls}__List-memberContainer`"
>
<h3>
tuomin_demo
</h3>
<h5
:class=
"`${prefixCls}__List-memberContainer-smallT`"
>
API/共享工作区/tuomin_demo
</h5>
<div
class=
"flex"
>
<Icon
icon=
"ant-design:api-outlined"
:size=
"28"
style=
"color:#5A70FB;"
/>
<div
style=
"margin-left: 10px"
>
<h3>
tuomin_demo
</h3>
<h5
style=
"color: #BFBFBF"
>
API/共享工作区/tuomin_demo
</h5>
</div>
</div>
</div>
</Card>
<BasicTable
@
register=
"registerTable1"
style=
"margin-top: 15px"
/>
</div>
<BasicTable
@
register=
"registerTable1"
style=
"margin-top: 10px"
>
<
template
#
name=
"{ text, record }"
>
<Icon
icon=
"ant-design:insert-row-above-outlined"
:size=
"18"
style=
"color:#0883D8;"
/>
<a
style=
"color: black"
>
{{
text
}}
</a>
</
template
>
</BasicTable>
</div>
<div
style=
"width: 50%;
margin-top: 15px
"
>
<
Card
style=
" height: 80px; background-color: #FEEBEB;
"
>
<div
style=
"width: 50%;"
>
<
div
style=
" height: 80px; background-color: #FEEBEB;margin:15px 5px 0 0;padding: 20px
"
>
<div
style=
"display: flex;"
>
<
Icon
icon=
"ant-design:insert-row-above-outlined"
:size=
"24"
style=
"color:#5A70FB;
"
/>
<div
:class=
"`${prefixCls}__List-memberContainer`
"
>
<h3>
employee
</h3>
<h5
:class=
"`${prefixCls}__List-memberContainer-smallT`"
>
API/共享工作区/tuomin_demo
</h5
>
<
div
class=
"flex"
>
<Icon
icon=
"ant-design:insert-row-above-outlined"
:size=
"28"
style=
"color:#5A70FB
"
/>
<div
style=
"margin-left: 10px
"
>
<h3>
{{ member }}
</h3>
<h5
style=
"color: #BFBFBF"
>
inceptor1/cemo/employee
</h5
>
</div
>
</div>
</div>
</Card>
<BasicTable
@
register=
"registerTable2"
style=
"margin-top: 15px"
/>
</div>
<BasicTable
@
register=
"registerTable2"
style=
"margin-top: 10px"
>
<
template
#
name=
"{ text, record }"
>
<Icon
icon=
"ant-design:insert-row-above-outlined"
:size=
"18"
style=
"color:#0883D8;"
/>
<a
style=
"color: black"
>
{{
text
}}
</a>
</
template
>
</BasicTable>
</div>
</div>
<Divider/>
<div>
<div
style=
"margin-left: 35px"
>
<div>
<div
:class=
"`${prefixCls}__List-Card`"
>
<div
style=
"display: flex;"
>
<Icon
icon=
"ant-design:api-filled"
style=
"color: #5A70FB;"
:size=
"22"
/>
<div
:class=
"`${prefixCls}__List-memberContainer`"
style=
"margin-left: 20px"
>
<h3>
tuomin_demo
</h3>
<h5
:class=
"`${prefixCls}__List-memberContainer-smallT`"
>
API/共享工作区/tuomin_demo
</h5>
</div>
<div
style=
"display: flex; justify-content: space-between"
>
<div
class=
"flex"
>
<Icon
icon=
"ant-design:api-outlined"
:size=
"30"
style=
"color:#5A70FB;"
/>
<div
style=
"margin-left: 10px"
>
<h3>
tuomin_demo
</h3>
<h5
style=
"color: #BFBFBF"
>
API/共享工作区/tuomin_demo
</h5>
</div>
</div>
</div>
<div>
<Description
size=
"small"
:bordered=
"false"
:column=
"2"
:data=
"apiDetailData"
:schema=
"apiDetailSchema"
/>
<div
style=
"margin-top: 15px"
>
<Description
size=
"small"
:bordered=
"false"
:column=
"2"
:data=
"apiDetailData"
:schema=
"apiDetailSchema"
:labelStyle=
"{
width:'120px',
}"
:contentStyle=
"{
marginLeft:'20px',
fontSize:'16px',}"
/>
</div>
</div>
<Divider/>
<h3>
请求参数
</h3>
<BasicTable
@
register=
"registerTable3"
/>
<h3>
分页参数
</h3>
<BasicTable
@
register=
"registerTable4"
/>
<div>
<h3>
请求参数
</h3>
<BasicTable
@
register=
"registerTable3"
/>
</div>
<div>
<h3>
分页参数
</h3>
<BasicTable
@
register=
"registerTable4"
/>
</div>
</div>
</div>
</div>
</PageWrapper>
</template>
<
script
lang=
"ts"
setup
>
...
...
@@ -144,10 +176,13 @@ import {
import
{
Description
}
from
"@/components/Description"
;
import
{
Card
,
Divider
,
List
,
Tag
}
from
"ant-design-vue"
;
import
{
BasicForm
}
from
"@/components/Form"
;
import
{
BranchesOutlined
}
from
"@ant-design/icons-vue"
;
import
{
workAreaList
}
from
"@/views/parameterConfiguration/configData"
;
const
title
=
ref
();
const
selectId
=
ref
(
1
);
const
route
=
useRoute
();
const
prefixCls
=
'list-search'
;
const
member
=
ref
(
modelData
[
0
].
member
)
;
let
tableData
=
ref
(
tableList
);
const
[
registerTable
,
{
reload
,
updateTableDataRecord
,
getSearchInfo
,
getForm
,
getRowSelection
...
...
@@ -226,6 +261,16 @@ function goBack() {
router
.
back
();
}
function
selectItem
(
item
)
{
selectId
.
value
=
item
.
id
;
member
.
value
=
item
.
member
;
}
function
handleChange
(
item
)
{
selectId
.
value
=
item
.
id
;
member
.
value
=
item
.
member
;
}
//初始化表单
/*const [registerForm, {resetFields }] = useForm({
labelWidth: 100,
...
...
@@ -248,68 +293,51 @@ onMounted(() => {
</
script
>
<
style
lang=
"less"
scoped
>
.selectionClass {
background-color: #FEEBEB;
border: 1px solid #9E2927;
border-radius: 10px;
}
.list-search {
margin: -16px;
&__container {
display: flex;
width: 100%;
border-top: 1px solid #EBEFF6; /* 只给顶部设置边框 */
}
//左侧样式
&__left {
width: 20%;
padding: 0 20px;
border-right: 2px solid #EBEFF6; /* 只给右边设置边框 */
//左侧样式
&
-one {
display: flex;
margin-bottom: 15px
}
.left
-one {
display: flex;
margin-bottom: 15px
}
&
-icon {
margin: 15px 0 0 0
}
.left
-icon {
margin: 15px 0 0 0
}
&-title {
font-size: 15px;
margin: 15px 0 0 0;
font-weight: 550
}
}
.left-title {
font-size: 15px;
margin: 15px 0 0 0;
font-weight: 550
}
//左侧列表下划线去除
:where(.css-dev-only-do-not-override-7oeufo).ant-list-split .ant-list-item {
border-block-end: none;
}
//左侧列表下划线去除
:where(.css-dev-only-do-not-override-7oeufo).ant-list-split .ant-list-item {
border-block-end: none;
}
&__List {
margin-top: -20px;
margin: 0 -24px;
&-Card {
width: 100%;
height: 80px;
}
.List-memberContainer {
width: 100%;
margin-left: 10px;
margin-top: -15px;
}
&-memberContainer
{
width: 100%
;
margin-left: 10px
;
margin-top: -15px;
.List-smallT
{
color: #889097
;
width: 100%
;
}
&-smallT {
color: #889097;
width: 100%;
}
}
}
//右侧样式
&__right {
width: 80%;
padding: 0 0 0 20px;
}
//右侧样式
.right {
width: 80%;
padding: 0 0 0 20px;
}
</
style
>
src/views/dataService/serviceManage/onlineManage/index.vue
View file @
210f5a3e
<
template
>
<PageWrapper
dense
contentFullHeight
fixedHeight
contentClass=
"flex"
>
<!--
<template
#
headerContent
>
<dicv
style=
"display:flex;"
>
<Icon
icon=
"ant-design:folder-open-outlined"
:size=
"24"
:color=
"'#1091FE'"
/>
<h2
style=
"margin-left: 15px"
>
API
</h2>
</dicv>
<div
type=
"primary"
class=
"save-button"
>
<Icon
icon=
"ant-design:bug-outlined"
:size=
"24"
:color=
"'#1091FE'"
/>
<p>
测试
</p>
</div>
<div
type=
"primary"
class=
"save-button1"
>
<Icon
icon=
"ant-design:inbox-outlined"
:size=
"24"
:color=
"'#1091FE'"
/>
<p>
保存
</p>
</div>
</
template
>
-->
<BasicTable
@
register=
"registerTable"
:rowSelection=
"rowSelection"
:searchInfo=
"searchInfo"
>
<template
#
toolbar
>
<a-button
type=
"primary"
...
...
@@ -43,9 +28,9 @@
},
{
icon:'ant-design:fund-projection-screen-outlined',
tooltip:'',
tooltip:'
服务监控
',
/*label: '详情',*/
onClick:
other
.bind(null, record),
onClick:
monitorInfo
.bind(null, record),
ifShow: () => {
return record.flag !== '开发中';
},
...
...
@@ -137,6 +122,7 @@
</
template
>
</BasicTable>
<!-- <sensitiveTypeModal @register="registerModal" @success="handleSuccess"/>-->
<ProductionDrawer
@
register=
"productionDrawer"
/>
</PageWrapper>
</template>
<
script
lang=
"ts"
setup
>
...
...
@@ -150,11 +136,15 @@ import {tableList} from "./mock";
import
{
useRoute
,
onBeforeRouteLeave
}
from
'vue-router'
;
import
{
router
}
from
'@/router'
;
import
Icon
from
"@/components/Icon/Icon.vue"
;
import
ProductionDrawer
from
"./productionDrawer.vue"
;
import
{
useDrawer
}
from
"@/components/Drawer"
;
defineOptions
({
name
:
'safetyLevelManage'
});
const
{
createMessage
,
createConfirm
}
=
useMessage
();
const
route
=
useRoute
();
const
searchInfo
=
reactive
<
Recordable
>
({});
const
[
productionDrawer
,
{
openDrawer
:
openProductionDrawer
}]
=
useDrawer
({
});
const
[
registerTable
,
{
reload
,
updateTableDataRecord
,
...
...
@@ -178,6 +168,7 @@ const [registerTable, {
},
rowKey
:
'businessId'
,
rowSelection
:
true
,
showIndexColumn
:
false
,
columns
,
formConfig
:
{
labelWidth
:
120
,
...
...
@@ -253,8 +244,13 @@ function Settings() {
}
/**按钮*/
function
other
()
{
function
monitorInfo
(
record
)
{
router
.
push
({
path
:
'/dataService/serviceMonitor/monitorInfo'
,
query
:
{
id
:
record
.
businessId
,
},
});
}
/**api详情按钮*/
function
apiDetail
()
{
...
...
@@ -267,10 +263,9 @@ function handleOffline(record) {
}
/**上线按钮*/
function
handleOnline
()
{
router
.
push
({
path
:
'/dataService/serviceManage/onlineManage/productionData'
,
query
:
{
},
openProductionDrawer
(
true
,
{
data
:
'content'
,
info
:
'Info'
,
});
}
/**创建商城API按钮*/
...
...
src/views/dataService/serviceManage/onlineManage/mock.ts
View file @
210f5a3e
...
...
@@ -35,7 +35,7 @@ export const tableList: any[] = [
owner
:
'admin'
,
path
:
'API/共享工作区/tuomin_demo'
,
},
{
/*
{
businessId: 4,
name: 'tuo_api',
flag: '开发中',
...
...
@@ -58,7 +58,7 @@ export const tableList: any[] = [
updateDate: '',
owner: '',
path: 'API/共享工作区/tuomin_demo',
},
},
*/
];
/**上线设置-复合框数据*/
export
const
routeList
:
any
[]
=
[
...
...
src/views/dataService/serviceManage/onlineManage/onlineManage.data.ts
View file @
210f5a3e
/*import { getAllRoleList } from '@/api/system/role/role';*/
import
{
BasicColumn
,
FormSchema
}
from
'@/components/Table'
;
import
{
DescItem
}
from
"@/components/Description"
;
import
{
InputProps
}
from
"ant-design-vue"
;
// 引入开关组件
/*type CheckedType = boolean | string | number;*/
...
...
@@ -88,6 +89,7 @@ export const Table1Schema: BasicColumn[] = [
title
:
'字段名称'
,
width
:
150
,
dataIndex
:
'name'
,
slots
:
{
customRender
:
'name'
},
},
{
title
:
'敏感状态'
,
...
...
@@ -110,6 +112,7 @@ export const Table2Schema: BasicColumn[] = [
title
:
'字段名称'
,
width
:
150
,
dataIndex
:
'name'
,
slots
:
{
customRender
:
'name'
},
},
{
title
:
'敏感状态'
,
...
...
@@ -221,7 +224,10 @@ export const schemas: FormSchema[] = [
component
:
'BasicTitle'
,
label
:
'路由转发配置'
,
componentProps
:
{
// line: true,
style
:
{
fontsize
:
16
,
fontWeight
:
'bold'
,
},
span
:
true
,
},
colProps
:
{
...
...
@@ -339,6 +345,7 @@ export const schemas: FormSchema[] = [
field
:
'accessMethod'
,
component
:
'RadioGroup'
,
label
:
'访问方式'
,
defaultValue
:
'2'
,
colProps
:
{
span
:
20
,
},
...
...
@@ -359,12 +366,12 @@ export const schemas: FormSchema[] = [
{
field
:
'dynamicRouting'
,
fields
:
[
'dynamic'
],
component
:
'Input'
,
label
:
'动态路由'
,
colProps
:
{
span
:
20
,
},
colSlot
:
'dynamicRouting'
slot
:
'dynamicRouting'
,
required
:
true
,
},
{
field
:
'businessGrouping'
,
...
...
@@ -403,7 +410,10 @@ export const schemas: FormSchema[] = [
component
:
'BasicTitle'
,
label
:
'安全配置'
,
componentProps
:
{
// line: true,
style
:
{
fontsize
:
16
,
fontWeight
:
'bold'
,
},
span
:
true
,
},
colProps
:
{
...
...
@@ -414,6 +424,7 @@ export const schemas: FormSchema[] = [
field
:
'enableAllLogs'
,
component
:
'RadioGroup'
,
label
:
'开启所有日志'
,
defaultValue
:
'2'
,
colProps
:
{
span
:
20
,
},
...
...
@@ -456,6 +467,9 @@ export const schemas: FormSchema[] = [
field
:
'cronExpression'
,
component
:
'Input'
,
label
:
'Cron表达式'
,
componentProps
:
{
placeholder
:
'0 0 0 ? * * *'
,
}
as
InputProps
,
colProps
:
{
span
:
20
,
},
...
...
@@ -560,6 +574,7 @@ export const schemas: FormSchema[] = [
field
:
'associatedList'
,
component
:
'RadioGroup'
,
label
:
'关联名单'
,
defaultValue
:
'2'
,
colProps
:
{
span
:
23
,
},
...
...
src/views/dataService/serviceManage/onlineManage/productionD
ata
.vue
→
src/views/dataService/serviceManage/onlineManage/productionD
rawer
.vue
View file @
210f5a3e
<
template
>
<PageWrapper
:title=
"title"
contentBackground
@
back=
"goBack"
dense
fixedHeight
contentClass=
"flex"
>
<template
#
headerContent
>
<span>
API / 验收 / SQL API
</span>
<div
type=
"primary"
class=
"save-button"
@
click=
"handleTest"
>
<Icon
icon=
"ant-design:bug-outlined"
:size=
"24"
:color=
"'#1091FE'"
/>
<p>
测试
</p>
</div>
<div
type=
"primary"
class=
"save-button1"
@
click=
"handleSave"
>
<Icon
icon=
"ant-design:inbox-outlined"
:size=
"24"
:color=
"'#1091FE'"
/>
<p>
保存
</p>
<BasicDrawer
v-bind=
"$attrs"
@
register=
"register"
:showDetailBack=
"false"
width=
"50%"
>
<template
#
title
>
<div
style=
"display: flex; justify-content: space-between"
>
<div
class=
"flex"
>
<Icon
icon=
"ant-design:setting-outlined"
:size=
"30"
style=
"color:#0960BD;"
/>
<div
style=
"margin-left: 10px"
>
<span>
上线设置
</span>
<h4
style=
"color: #BFBFBF"
>
API / 验收 / SAL API
</h4>
</div>
</div>
<div
class=
"flex"
style=
"gap: 15px"
>
<a-button
type=
"link"
@
click=
"handleTest"
>
<Icon
icon=
"ant-design:bug-outlined"
:size=
"24"
/>
<p
style=
"color: black"
>
调试
</p>
</a-button>
<a-button
type=
"link"
@
click=
"handleSave"
>
<Icon
icon=
"ant-design:inbox-outlined"
:size=
"24"
/>
<p
style=
"color: black"
>
保存
</p>
</a-button>
</div>
</div>
</
template
>
<div>
<BasicForm
@
register=
"register
"
@
submit=
"handleSubmit"
style=
"padding:15px
0 0 40px"
>
<BasicForm
@
register=
"register
Form"
style=
"padding:0
0 0 40px"
>
<
template
#
dynamicRouting=
"{ field,model, }"
>
<FormItem
:name=
"field"
label=
"动态路由"
:rules=
"[
{ required: true, message: '请选择动态路由',type: 'string' }]"
style="margin-left: 45px">
<Input
.
Group
>
<FormItemRest>
<Select
style=
"width: 380px"
placeholder=
"请选择"
v-model:value=
"model['dynamic']"
:options=
"routeList"
/>
</FormItemRest>
<FormItemRest>
<Input
style=
"width: calc(100% - 380px); margin-left: -1px;"
v-model:value=
"model[field]"
placeholder=
"请输入"
/>
</FormItemRest>
</Input
.Group
>
</FormItem>
<div>
<Select
style=
"width: 30%"
placeholder=
"请选择"
v-model:value=
"model['dynamic']"
:options=
"routeList"
/>
<Input
style=
"width: 70%"
v-model:value=
"model[field]"
placeholder=
"请输入"
/>
</div>
</
template
>
<
template
#
expirationDuration=
"{ field,model, }"
>
<FormItem
:name=
"field"
label=
"有效期持续时间"
...
...
@@ -62,7 +63,8 @@
</
template
>
</BasicForm>
</div>
</PageWrapper>
</BasicDrawer>
<ProductionTestModal
@
register=
"productionTestModal"
/>
</template>
<
script
lang=
"ts"
setup
>
/**上线设置页面*/
...
...
@@ -77,53 +79,45 @@ import {BasicForm, FormSchema, useForm} from "@/components/Form";
import
{
useMessage
}
from
"@/hooks/web/useMessage"
;
import
{
FormItem
,
FormItemRest
}
from
"ant-design-vue"
;
import
{
Select
,
Input
}
from
"ant-design-vue"
;
import
{
BasicDrawer
,
useDrawerInner
}
from
"@/components/Drawer"
;
import
ProductionTestModal
from
"./productionTestModal.vue"
;
import
{
useModal
}
from
"@/components/Modal"
;
const
[
productionTestModal
,
{
openModal
:
openProductionTestModal
}]
=
useModal
();
const
title
=
ref
();
const
route
=
useRoute
();
/**上线设置表单配置*/
const
{
createMessage
}
=
useMessage
();
const
[
register
,
{
getFieldsValue
,
resetFields
,
setFieldsValue
}]
=
const
[
register
Form
,
{
getFieldsValue
,
resetFields
,
setFieldsValue
}]
=
useForm
({
labelWidth
:
120
,
schemas
,
showActionButtonGroup
:
false
,
actionColOptions
:
{
span
:
24
,
},
});
/**返回上一级*/
function
goBack
()
{
router
.
back
();
}
const
[
register
,{
closeDrawer
}]
=
useDrawerInner
((
data
)
=>
{
// 方式1
setFieldsValue
({
field2
:
data
.
data
,
field1
:
data
.
info
,
});
});
/**测试按钮*/
function
handleTest
()
{
router
.
push
({
path
:
'/dataService/serviceManage/onlineManage/productionTest'
,
query
:
{},
openProductionTestModal
(
true
,
{
isUpdate
:
false
,
});
}
/**保存按钮*/
function
handleSave
()
{
router
.
back
();
}
/**表单按钮*/
function
handleSubmit
(
values
:
any
)
{
createMessage
.
success
(
'click search,values:'
+
JSON
.
stringify
(
values
));
closeDrawer
();
createMessage
.
success
(
'保存成功!!'
);
}
/**接入数据*/
onMounted
(()
=>
{
/* const data = tableList.filter((item) => item.businessId === route.query.id);*/
// formParams.value = data[0];
/*console.log('数据:', data)*/
title
.
value
=
'上线设置'
;
/* Object.assign(formParams, data[0]); // 使用 Object.assign 赋值*/
/* resetFields();*/
})
</
script
>
<
style
lang=
"scss"
scoped
>
.modal_top
{
...
...
src/views/dataService/serviceManage/onlineManage/productionTest.vue
→
src/views/dataService/serviceManage/onlineManage/productionTest
Modal
.vue
View file @
210f5a3e
<
template
>
<PageWrapper
:title=
"title"
contentBackground
@
back=
"goBack"
dense
fixedHeight
>
<template
#
headerContent
>
<span>
API / 验收 / SQL API
</span>
<BasicModal
width=
"60%"
v-bind=
"$attrs"
@
register=
"registerModal"
@
ok=
"handleSubmit"
>
<template
#
title
>
<div
style=
"display: flex; justify-content: space-between"
>
<div
class=
"flex"
>
<Icon
icon=
"ant-design:bug-outlined"
:size=
"30"
style=
"color:#0960BD;"
/>
<div
style=
"margin-left: 10px"
>
<span>
测试
</span>
<h4
style=
"color: #BFBFBF"
>
API / 验收 / SAL API
</h4>
</div>
</div>
</div>
</
template
>
<BasicTable
@
register=
"registerTable"
title=
"请求参数"
/>
<div
style=
"padding: 15px"
>
<a-button
type=
"primary"
@
click=
"testButton"
><Icon
icon=
"ant-design:play-circle-outlined"
></Icon>
测试
</a-button>
<a-button
type=
"primary"
@
click=
"testButton"
><Icon
icon=
"ant-design:play-circle-outlined"
></Icon>
测试
</a-button>
<div
style=
"margin: 15px 0;font-weight: bold;font-size: 16px"
>
请求报文
</div>
<CodeEditor
v-model:value=
"value1"
:mode=
"modeValue"
style=
"margin-bottom: 20px"
/>
<div
style=
"margin-bottom: 15px;font-weight: bold;font-size: 16px"
>
返回结果源码
</div>
<CodeEditor
v-model:value=
"value2"
:mode=
"modeValue"
/>
</div>
</PageWrapper>
</BasicModal>
</template>
<
script
lang=
"ts"
setup
>
/**上线设置页面*/
...
...
@@ -29,9 +41,17 @@ import BasicTable from "@/components/Table/src/BasicTable.vue";
import
{
testTableSchema
}
from
"@/views/dataService/serviceManage/onlineManage/onlineManage.data"
;
import
{
useTable
}
from
"@/components/Table"
;
import
{
CodeEditor
,
MODE
}
from
"@/components/CodeEditor"
;
import
{
BasicModal
,
useModal
,
useModalInner
}
from
'@/components/Modal'
;
const
title
=
ref
();
const
route
=
useRoute
();
//初始化弹框
const
[
registerModal
,
{
setModalProps
,
closeModal
}]
=
useModalInner
(
async
(
data
)
=>
{
setModalProps
({
confirmLoading
:
false
,
});
});
/**右-表(右上)*/
const
[
registerTable
]
=
useTable
({
dataSource
:
testTableData
,
...
...
@@ -82,15 +102,10 @@ function testButton() {
function
handleSave
()
{
router
.
back
();
}
/**接入数据*/
onMounted
(()
=>
{
const
data
=
tableList
.
filter
((
item
)
=>
item
.
businessId
===
route
.
query
.
id
);
// formParams.value = data[0];
console
.
log
(
'数据:'
,
data
)
title
.
value
=
'测试'
;
/* Object.assign(formParams, data[0]); // 使用 Object.assign 赋值*/
/* resetFields();*/
})
/**确定按钮*/
async
function
handleSubmit
()
{
closeModal
();
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/dataStandards/labelDropInspection/labelDetail/detail.data.ts
View file @
210f5a3e
import
{
FormSchema
}
from
'@/components/Form'
;
import
{
BasicColumn
}
from
"@/components/Table"
;
import
{
BasicColumn
}
from
'@/components/Table'
;
export
const
detailFormSchema
:
FormSchema
[]
=
[
{
...
...
@@ -47,9 +47,10 @@ export const detailFormSchema: FormSchema[] = [
colProps
:
{
lg
:
18
},
},
{
field
:
'
t
ype'
,
field
:
'
selectT
ype'
,
label
:
'规则选择方式'
,
slot
:
'type'
,
defaultValue
:
'数据标准'
,
slot
:
'selectType'
,
componentProps
:
{
options
:
[
{
...
...
@@ -282,35 +283,35 @@ export const dataStandardColumns: BasicColumn[any] = [
dataIndex
:
'workGroup'
,
width
:
150
,
},
]
]
;
// 添加数据标准 弹窗列表数据
export
const
dataStandardListData
:
any
[]
=
[
{
"id"
:
1
,
"standardName"
:
"对外投资出资方式"
,
"standardNumber"
:
"BAS000004"
,
"businessDefinition"
:
"对外投资出资方式"
,
"workGroup"
:
"个人工作区"
,
id
:
1
,
standardName
:
'对外投资出资方式'
,
standardNumber
:
'BAS000004'
,
businessDefinition
:
'对外投资出资方式'
,
workGroup
:
'个人工作区'
,
},
{
"id"
:
2
,
"standardName"
:
"对外投资控股标志"
,
"standardNumber"
:
"BAS000005"
,
"businessDefinition"
:
"对外投资控股标志"
,
"workGroup"
:
"个人工作区"
,
id
:
2
,
standardName
:
'对外投资控股标志'
,
standardNumber
:
'BAS000005'
,
businessDefinition
:
'对外投资控股标志'
,
workGroup
:
'个人工作区'
,
},
{
"id"
:
3
,
"standardName"
:
"对外投资企业证明"
,
"standardNumber"
:
"BAS000006"
,
"businessDefinition"
:
"对外投资企业证明"
,
"workGroup"
:
"个人工作区"
,
id
:
3
,
standardName
:
'对外投资企业证明'
,
standardNumber
:
'BAS000006'
,
businessDefinition
:
'对外投资企业证明'
,
workGroup
:
'个人工作区'
,
},
{
"id"
:
4
,
"standardName"
:
"zy_basic_standard"
,
"standardNumber"
:
"BAS000007"
,
"businessDefinition"
:
"zy_basic_standard"
,
"workGroup"
:
"共享工作区"
,
id
:
4
,
standardName
:
'zy_basic_standard'
,
standardNumber
:
'BAS000007'
,
businessDefinition
:
'zy_basic_standard'
,
workGroup
:
'共享工作区'
,
},
];
src/views/dataStandards/labelDropInspection/labelDetail/detailData.ts
View file @
210f5a3e
...
...
@@ -4,7 +4,7 @@ export const detailFormData = {
describe
:
''
,
updateTime
:
''
,
cycle
:
''
,
selectType
:
''
,
selectType
:
'
数据标准
'
,
};
export
const
detailCycleOptions
=
[
{
...
...
src/views/dataStandards/labelDropInspection/labelDetail/index.vue
View file @
210f5a3e
<
template
>
<PageWrapper
:title=
"modelName"
contentBackground
headerSticky
>
<template
#
extra
>
<a-button
type=
"primary"
@
click=
"handleOperation"
>
跳转运维
</a-button>
<a-button
type=
"primary"
>
查看报告
</a-button>
<a-button
type=
"primary"
:disabled=
"disabled"
>
保存
</a-button>
<a-button
type=
"primary"
@
click=
"handleOnline"
>
{{
isOnline
?
'下线'
:
'上线'
}}
</a-button>
<a-button
type=
"primary"
>
运行
</a-button>
<PageWrapper
contentBackground
headerSticky
>
<template
#
headerContent
>
<div
class=
"flex"
style=
"gap: 10px"
>
<div
class=
"flex-1 flex"
style=
"gap: 10px"
>
<LeftOutlined
style=
"font-size: 25px; cursor: pointer"
@
click=
"handleBack"
/>
<SearchOutlined
style=
"font-size: 30px; color: #14b43e"
/>
<div>
<div
style=
"font-weight: bolder; font-size: 16px"
>
{{
modelName
}}
</div>
<div
style=
"color: #b5b9c5"
>
{{
path
}}
</div>
</div>
</div>
<a-button
type=
"primary"
@
click=
"handleOperation"
>
跳转运维
</a-button>
<a-button
type=
"primary"
>
查看报告
</a-button>
<a-button
type=
"primary"
:disabled=
"disabled"
@
click=
"handleSave"
>
保存
</a-button>
<a-button
type=
"primary"
@
click=
"handleOnline"
>
{{
isOnline
?
'下线'
:
'上线'
}}
</a-button>
<a-button
type=
"primary"
@
click=
"handleRun"
>
运行
</a-button>
</div>
</
template
>
<
template
#
footer
>
<BasicForm
:disabled=
"disabled"
@
register=
"registerForm"
>
...
...
@@ -23,9 +37,8 @@
</
template
>
<
template
#
formula=
"{ model, field }"
>
<a-input
style=
"width: 200px"
v-model:value=
"model[field]"
/>
<a-button
:disabled=
"disabled"
type=
"link"
>
Cron表达式
</a-button>
</
template
>
<
template
#
t
ype=
"{ model, field }"
>
<
template
#
selectT
ype=
"{ model, field }"
>
<RadioGroup
v-model:value=
"model[field]"
@
change=
"changeTableType(model[field])"
>
<Radio
:value=
"item"
v-for=
"item in ['数据标准', '元数据']"
:key=
"item"
>
{{
item
...
...
@@ -39,19 +52,30 @@
@
register=
"registerTable"
:searchInfo=
"searchInfo"
>
<
template
#
toolbar
>
<span>
是否运行质量检查
</span>
<QuestionCircleOutlined
/>
<RadioGroup
:disabled=
"disabled"
v-model:value=
"checkType"
>
<Radio
:value=
"item"
v-for=
"item in ['是', '否']"
:key=
"item"
>
{{
item
}}
</Radio>
</RadioGroup>
<a-button
:disabled=
"disabled || getRowSelection().selectedRowKeys
<
=
0
"
@
click=
"handleDelete"
><DeleteOutlined
/></a-button>
<a-button
:disabled=
"disabled"
type=
"primary"
@
click=
"addDataStandard()"
>
添加数据标准
</a-button>
<
template
#
headerTop
>
<div
class=
"flex"
>
<div
class=
"flex-1 flex"
style=
"gap: 10px"
>
<Input
style=
"width: 200px"
v-model:value=
"searchBasic"
placeholder=
"搜索标准"
/>
<Input
style=
"width: 200px"
v-model:value=
"searchPath"
placeholder=
"搜索路径"
/>
</div>
<div
class=
"flex"
style=
"gap: 10px"
>
<span>
是否运行质量检查
</span>
<QuestionCircleOutlined
/>
<RadioGroup
:disabled=
"disabled"
v-model:value=
"checkType"
>
<Radio
:value=
"item"
v-for=
"item in ['是', '否']"
:key=
"item"
>
{{
item
}}
</Radio>
</RadioGroup>
<a-button
:disabled=
"disabled || getRowSelection().selectedRowKeys
<
=
0
"
@
click=
"handleDelete"
><DeleteOutlined
/></a-button>
<a-button
:disabled=
"disabled"
type=
"primary"
@
click=
"addDataStandard()"
>
添加数据标准
</a-button
>
</div>
</div>
</
template
>
<
template
#
toolbar
>
</
template
>
<
template
#
standard=
"{ text, record }"
>
<a
@
click=
"handleTableName"
>
{{
text
}}
</a>
</
template
>
...
...
@@ -61,28 +85,36 @@
</
template
>
</BasicTable>
<BasicTable
v-if=
"tableType === '元数据'"
@
register=
"metadataTable"
:searchInfo=
"searchInfo"
>
<
template
#
toolbar
>
<span>
是否运行质量检查
</span>
<QuestionCircleOutlined
/>
<RadioGroup
:disabled=
"disabled"
v-model:value=
"checkType"
>
<QuestionCircleOutlined
style=
"z-index: 2"
/>
<Radio
:value=
"item"
v-for=
"item in ['是', '否']"
:key=
"item"
>
{{
item
}}
</Radio>
</RadioGroup>
<a-button
:disabled=
"disabled || getMetadataRowSelection().selectedRowKeys
<
=
0
"
@
click=
"handleDelete"
><DeleteOutlined
/></a-button>
<Dropdown
:disabled=
"disabled"
>
<a-button
type=
"primary"
>
添加元数据
</a-button>
<template
#
overlay
>
<Menu>
<MenuItem
@
click=
"handleExcel"
>
Excel导入
</MenuItem>
<MenuItem
@
click=
"handleAdd"
>
手动添加
</MenuItem>
</Menu>
</
template
>
</Dropdown>
<
template
#
headerTop
>
<div
class=
"flex"
>
<div
class=
"flex-1 flex"
style=
"gap: 10px"
>
<Input
style=
"width: 200px"
v-model:value=
"searchBasic"
placeholder=
"搜索标准"
/>
<Input
style=
"width: 200px"
v-model:value=
"searchPath"
placeholder=
"搜索路径"
/>
</div>
<div
class=
"flex"
style=
"gap: 10px"
>
<div>
是否运行质量检查
<QuestionCircleOutlined
style=
"margin-left: 10px"
/></div>
<RadioGroup
:disabled=
"disabled"
v-model:value=
"checkType"
>
<QuestionCircleOutlined
style=
"z-index: 2"
/>
<Radio
:value=
"item"
v-for=
"item in ['是', '否']"
:key=
"item"
>
{{
item
}}
</Radio>
</RadioGroup>
<a-button
:disabled=
"disabled || getMetadataRowSelection().selectedRowKeys
<
=
0
"
@
click=
"handleDelete"
><DeleteOutlined
/></a-button>
<Dropdown
:disabled=
"disabled"
>
<a-button
type=
"primary"
>
添加元数据
</a-button>
<template
#
overlay
>
<Menu>
<MenuItem
@
click=
"handleExcel"
>
Excel导入
</MenuItem>
<MenuItem
@
click=
"handleAdd"
>
手动添加
</MenuItem>
</Menu>
</
template
>
</Dropdown>
</div>
</div>
</template>
<
template
#
toolbar
>
</
template
>
<
template
#
name=
"{ text, record }"
>
<div>
{{
text
}}
</div>
<div
style=
"color: #9195a4"
>
{{
record
.
nameTxt
}}
</div>
...
...
@@ -99,9 +131,14 @@
</template>
<
script
lang=
"ts"
setup
>
import
{
Radio
,
Select
,
Switch
,
Dropdown
,
Menu
,
MenuItem
}
from
'ant-design-vue'
;
import
{
Radio
,
Select
,
Switch
,
Dropdown
,
Menu
,
MenuItem
,
Input
}
from
'ant-design-vue'
;
import
{
PageWrapper
}
from
'@/components/Page'
;
import
{
DeleteOutlined
,
QuestionCircleOutlined
}
from
'@ant-design/icons-vue'
;
import
{
DeleteOutlined
,
QuestionCircleOutlined
,
LeftOutlined
,
SearchOutlined
,
}
from
'@ant-design/icons-vue'
;
import
{
BasicTable
,
useTable
}
from
'@/components/Table'
;
import
BasicForm
from
'../../../../components/Form/src/BasicForm.vue'
;
import
{
useForm
}
from
'@/components/Form'
;
...
...
@@ -130,12 +167,15 @@
const
{
createMessage
,
createConfirm
}
=
useMessage
();
const
RadioGroup
=
Radio
.
Group
;
const
route
=
useRoute
();
const
modelName
=
ref
(
route
.
query
.
name
);
const
modelName
=
route
.
query
.
name
;
const
path
=
'落标检查 / admin-个人工作区 / '
+
modelName
;
const
searchInfo
=
reactive
<
Recordable
>
({});
const
infoData
=
route
.
query
;
const
isOnline
=
ref
(
false
);
const
disabled
=
computed
(()
=>
isOnline
.
value
);
const
checkType
=
ref
(
'否'
);
const
searchBasic
=
ref
();
const
searchPath
=
ref
();
let
tableType
=
ref
(
'数据标准'
);
function
handleTableName
()
{}
function
changeTableType
(
type
)
{
...
...
@@ -210,12 +250,7 @@
rowSelection
:
{},
striped
:
false
,
// 搜索
formConfig
:
{
labelWidth
:
120
,
schemas
:
detailDataFormSchema
,
autoSubmitOnEnter
:
true
,
},
useSearchForm
:
true
,
useSearchForm
:
false
,
showTableSetting
:
false
,
bordered
:
true
,
});
...
...
@@ -230,15 +265,19 @@
rowSelection
:
{},
striped
:
false
,
// 搜索
formConfig
:
{
labelWidth
:
120
,
schemas
:
metadataFormSchema
,
autoSubmitOnEnter
:
true
,
},
useSearchForm
:
true
,
useSearchForm
:
false
,
showTableSetting
:
false
,
bordered
:
true
,
});
function
handleBack
()
{
router
.
go
(
-
1
);
}
function
handleSave
()
{
createMessage
.
success
(
'保存成功!'
);
}
function
handleRun
()
{
createMessage
.
success
(
'运行成功!'
);
}
onMounted
(()
=>
{
setFieldsValue
({
...
detailFormData
,
...
infoData
});
});
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment