Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
csbr-daop
/
fe-data-trusted-space
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
e7fc36f3
authored
2024-12-17 10:54:01 +0800
by
xukangle
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
updata: 增加元数据模块
1 parent
8ad5d02b
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
292 additions
and
31 deletions
.env.development
src/api/modules/dataInventory.ts
src/api/modules/dataMetaService.ts
src/router/modules/dataInventory.ts
src/store/modules/user.ts
src/utils/request.ts
src/views/data_inventory/configureRules.vue
src/views/data_inventory/dictionary.vue
src/views/importFile.vue
.env.development
View file @
e7fc36f
...
...
@@ -3,8 +3,8 @@ VITE_APP_TITLE = 数据资产管理系统
# 接口域名
# VITE_API_BASEURL = https://www.zgsjzc.com/api
# VITE_API_BASEURL = https://swzl-test.csbr.cn/api
VITE_API_BASEURL = http://localhost:9000
#
VITE_API_BASEURL = http://10.4.82.1:28052/
#
VITE_API_BASEURL = http://localhost:9000
VITE_API_BASEURL = http://10.4.82.1:28052/
# 平台用户 接口请地址
VITE_APP_USER_API_BASEURL = gateway-server
...
...
@@ -13,6 +13,7 @@ VITE_APP_AUTH_URL = 'ms-daop-auth-service'
# 系统管理 接口地址
VITE_APP_API_BASEURL = ms-daop-zcgl-system-manager-service
# 文件上传请求地址
VITE_APP_ADD_FILE = ms-daop-import-data-service
# 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
...
...
@@ -29,8 +30,8 @@ VITE_APP_PLAN_BASEURL = ms-daop-jgjf-data-plan-service
VITE_APP_QUALITY_BASEURL = ms-daop-data-quality-service
#数据盘点接口地址ms-daop-zcgl-data-inventory
VITE_APP_CHECK_BASEURL = /mock
#
VITE_APP_CHECK_BASEURL = ms-daop-zcgl-data-inventory
#
VITE_APP_CHECK_BASEURL = /mock
VITE_APP_CHECK_BASEURL = ms-daop-zcgl-data-inventory
#门户接口
VITE_API_PORTALURL = https://swzl-test.zgsjzc.com/portal
...
...
src/api/modules/dataInventory.ts
View file @
e7fc36f
...
...
@@ -2,6 +2,159 @@ import request from "@/utils/request";
/**
* 数据字典
**/
// 编码规则流水号
export
const
getCoderuleList
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/code-rule/list`
,
method
:
'post'
,
data
:
params
})
// 获取数据类型的接口
export
const
getDataTypeList
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_API_BASEURL
}
/data-dict/get-data-list`
,
method
:
'post'
,
data
:
params
,
})
// 获取数据库列表
export
const
getDataBaseList
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_API_BASEURL
}
/data-source/get-source-list`
,
method
:
'post'
,
data
:
params
,
})
// 新增
export
const
addDictionary
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/data-dictionary-general/add`
,
method
:
'post'
,
data
:
params
})
// 删除
export
const
deleteDictionary
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/data-dictionary-general/del`
,
method
:
'delete'
,
data
:
params
})
// 删除数据字典前的校验
export
const
checkDeleteDictionary
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/data-dictionary-general/check-del`
,
method
:
'delete'
,
data
:
params
})
// 编辑校验数据结构删除的条件
export
const
checkDeleteDictionaryScheme
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/data-dictionary-general/check-del/dictionary-scheme`
,
method
:
'post'
,
data
:
params
})
// 分页查询
export
const
getDictionary
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/data-dictionary-general/page-list`
,
method
:
'post'
,
data
:
params
})
// 查询数据字典启用状态的数据
export
const
getDictionaryAll
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/data-dictionary-general/list-all`
,
method
:
'post'
,
params
})
// 修改
export
const
updateDictionary
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/data-dictionary-general/update`
,
method
:
'put'
,
data
:
params
})
// 详情
export
const
getDictionaryDetail
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/data-dictionary-general/detail/
${
params
}
`
,
method
:
'get'
})
// 查看数据字典数据
export
const
getDictionaryFileds
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/data-dictionary-general/dictionary-data/
${
params
}
`
,
method
:
'get'
})
// 数据字典启用停用
export
const
updateDictionaryState
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/data-dictionary-general/change-state`
,
method
:
'get'
,
params
})
// 检验是否存在
export
const
checkDictionary
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/data-dictionary-general/check-exist`
,
method
:
'get'
,
params
})
// 数据字典新增数据时生成编码规则
export
const
getDictionaryRuleData
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/data-dictionary-general/generate/code-rule/byGuid`
,
method
:
'get'
,
params
})
// 数据字典树形数据
export
const
getDictionaryTree
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/data-dictionary-general/tree-list`
,
method
:
'post'
,
params
})
// 保存动态数据字典数据
export
const
saveDictionaryData
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/data-dictionary-general/save/dictionary-data`
,
method
:
'post'
,
data
:
params
})
// 更新数据字典数据
export
const
updateDictionaryData
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/data-dictionary-general/update/dictionary-data`
,
method
:
'post'
,
data
:
params
})
// 删除数据字典数据
export
const
deleteDictionaryData
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/data-dictionary-general/del/dictionary-data`
,
method
:
'delete'
,
data
:
params
})
// 导入数据字典
export
const
importDictionary
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/import/data-dictionary`
,
method
:
'post'
,
data
:
params
})
// 显示导入的数据字典数据
export
const
showDictionary
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/import/show/data-dictionary`
,
method
:
'post'
,
data
:
params
,
headers
:
{
'Content-Type'
:
'multipart/form-data'
}
})
// 导出数据字典模板
export
const
exportDictionary
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/export/data-dictionary/schema`
,
method
:
'post'
,
data
:
params
,
responseType
:
'blob'
})
// 导出数据字典数据
export
const
exportDictionaryFileds
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/export/data-dictionary/data`
,
method
:
'post'
,
data
:
params
,
responseType
:
'blob'
})
// 验证数据是否符合标准
export
const
checkDictionaryData
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/data-dictionary-general/check/dictionary-data`
,
method
:
'post'
,
data
:
params
})
/**
* 获取数据级别
* @param {Object}
* { paramCode: "DATA-CLASSIFY" }
...
...
@@ -230,10 +383,10 @@ export const getCgDirFieldPageList = (data) => request({
/** 获取字典列表
* VITE_APP_PLAN_BASEURL 为环境变量 现在只是mock数据
*/
export
const
getDictionary
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_CHECK_BASEURL
}
/data-dictionary-general/list-all?state=1`
,
method
:
'post'
})
//
export const getDictionary = (params) => request({
//
url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/data-dictionary-general/list-all?state=1`,
//
method: 'post'
//
})
...
...
@@ -268,3 +421,8 @@ export const getDbDirTablePageList = (data) => request({
method
:
'post'
,
data
})
...
...
src/api/modules/dataMetaService.ts
View file @
e7fc36f
...
...
@@ -17,10 +17,11 @@ export const deleteMetaDataTask = (params) => request({
})
// 分页查询
export
const
getMetaDataTask
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_
PLAN
_BASEURL
}
/meta-collect-task/page-list`
,
url
:
`
${
import
.
meta
.
env
.
VITE_APP_
CHECK
_BASEURL
}
/meta-collect-task/page-list`
,
method
:
'post'
,
data
:
params
})
// 修改
export
const
updateMetaDataTask
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_PLAN_BASEURL
}
/meta-collect-task/update`
,
...
...
@@ -68,31 +69,31 @@ export const saveMetaReportAnalysis = (params) => request({
**/
// 树形数据
export
const
getMetaTreeData
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_
PLAN
_BASEURL
}
/meta-table/meta-tree-list`
,
url
:
`
${
import
.
meta
.
env
.
VITE_APP_
CHECK
_BASEURL
}
/meta-table/meta-tree-list`
,
method
:
'post'
,
data
:
params
})
// 数据库汇总信息
export
const
getMetaDatabaseCollect
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_
PLAN
_BASEURL
}
/meta-table/meta-database-collect-list`
,
url
:
`
${
import
.
meta
.
env
.
VITE_APP_
CHECK
_BASEURL
}
/meta-table/meta-database-collect-list`
,
method
:
'post'
,
data
:
params
})
// 库分页查询
export
const
getMetaDataBase
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_
PLAN
_BASEURL
}
/meta-table/meta-table-collect-list`
,
url
:
`
${
import
.
meta
.
env
.
VITE_APP_
CHECK
_BASEURL
}
/meta-table/meta-table-collect-list`
,
method
:
'post'
,
data
:
params
})
// 表分页查询
export
const
getMetaDataSheet
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_
PLAN
_BASEURL
}
/meta-table/meta-table-detail-list`
,
url
:
`
${
import
.
meta
.
env
.
VITE_APP_
CHECK
_BASEURL
}
/meta-table/meta-table-detail-list`
,
method
:
'post'
,
data
:
params
})
// 表字段查询
export
const
getMetaSheetField
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_
PLAN
_BASEURL
}
/meta-table/meta-table-field-list`
,
url
:
`
${
import
.
meta
.
env
.
VITE_APP_
CHECK
_BASEURL
}
/meta-table/meta-table-field-list`
,
method
:
'post'
,
params
})
...
...
src/router/modules/dataInventory.ts
View file @
e7fc36f
...
...
@@ -231,7 +231,28 @@ const routes: RouteRecordRaw[] = [
},
},
],
}
},
{
path
:
'/data-standards/data-dictionary'
,
component
:
Layout
,
meta
:
{
title
:
'数据字典'
,
icon
:
'sidebar-cooperation'
,
},
children
:
[
{
path
:
''
,
name
:
'dictionary'
,
component
:
()
=>
import
(
'@/views/data_standards/dictionary.vue'
),
meta
:
{
title
:
'数据字典'
,
sidebar
:
false
,
breadcrumb
:
false
,
cache
:
true
},
},
],
},
]
export
default
routes
...
...
src/store/modules/user.ts
View file @
e7fc36f
...
...
@@ -58,6 +58,7 @@ const useUserStore = defineStore(
userName
.
value
=
res
.
data
.
userName
// userData.value = JSON.stringify(res.data.data);
currentTenantGuid
.
value
=
res
.
data
.
tenantInfoList
&&
res
.
data
.
tenantInfoList
.
length
?
res
.
data
.
tenantInfoList
[
0
].
guid
:
''
;
localStorage
.
setItem
(
'currentTenantGuid'
,
currentTenantGuid
.
value
);
let
currentTenant
=
res
.
data
.
tenantInfoList
?.[
0
];
return
getSystemMenu
({
tenantGuid
:
currentTenantGuid
.
value
}).
then
((
info
:
any
)
=>
{
if
(
info
.
code
==
'00000'
)
{
...
...
src/utils/request.ts
View file @
e7fc36f
...
...
@@ -31,7 +31,7 @@ service.interceptors.request.use(
* 为每一次请求生成一个cancleToken
*/
const
source
=
axios
.
CancelToken
.
source
();
config
.
headers
.
tenant
=
'9e5b9d7bfd8c4f4f8079e05de19bf7e0'
;
//会员guid先写死
config
.
headers
.
tenant
=
localStorage
.
getItem
(
'currentTenantGuid'
)
;
//会员guid先写死
config
.
cancelToken
=
source
.
token
;
if
(
config
.
method
===
"postfile"
)
{
config
.
method
=
"post"
;
...
...
src/views/data_inventory/configureRules.vue
View file @
e7fc36f
...
...
@@ -2,9 +2,86 @@
name: configureRules //标签管理
</route>
<
script
lang=
"ts"
setup
name=
"configureRules"
></
script
>
<
script
lang=
"ts"
setup
name=
"configureRules"
>
import
{
TableColumnWidth
}
from
'@/utils/enum'
;
const
dataBasePage
=
ref
({
limit
:
10
,
curr
:
1
,
sizes
:
[
{
label
:
"10"
,
value
:
10
},
{
label
:
"20"
,
value
:
20
},
{
label
:
"100"
,
value
:
100
},
{
label
:
"150"
,
value
:
150
},
{
label
:
"200"
,
value
:
200
},
],
});
const
dataBaseTableInfo
=
ref
({
id
:
"data-base-table"
,
multiple
:
false
,
fixedSelection
:
true
,
fields
:
[
{
label
:
"序号"
,
type
:
"index"
,
width
:
56
,
align
:
"center"
},
{
label
:
"数据源"
,
field
:
"databaseChName"
,
width
:
140
},
{
label
:
"表名称"
,
field
:
"tableChName"
,
width
:
180
},
{
label
:
"数据库表"
,
field
:
"enName"
,
width
:
120
},
{
label
:
"新建方式"
,
field
:
"foundMode"
,
width
:
140
,
getName
:
(
scope
)
=>
{
let
dataGrade
=
scope
.
row
.
foundMode
;
return
dataGrade
==
1
?
'根据文件新建'
:
'已有表新建'
;
}
},
{
label
:
"状态"
,
field
:
"state"
,
type
:
'tag'
,
width
:
180
,
getName
:
(
scope
)
=>
{
let
status
=
scope
.
row
.
state
;
// 0 草稿中 1 已建表 2 已有默认表
return
status
==
0
?
'草稿中'
:
status
==
1
?
'已建表'
:
'已有默认表'
;
}
},
{
label
:
"任务修改人"
,
field
:
"damName"
,
width
:
120
},
{
label
:
"修改时间"
,
field
:
"updateTime"
,
width
:
TableColumnWidth
.
DATETIME
},
{
label
:
"描述"
,
field
:
"databaseName"
,
width
:
120
,
align
:
'center'
},
{
label
:
"规划数据资产"
,
field
:
"isDataAsset"
,
type
:
'switch'
,
activeText
:
'是'
,
inactiveText
:
'否'
,
activeValue
:
'Y'
,
inactiveValue
:
'N'
,
switchWidth
:
56
,
width
:
120
,
align
:
'center'
},
],
data
:
[],
page
:
{
type
:
"normal"
,
rows
:
0
,
...
dataBasePage
.
value
,
},
actionInfo
:
{
label
:
"操作"
,
type
:
"btn"
,
width
:
300
,
fixed
:
'right'
,
btns
:
[
{
label
:
"配置业务规则"
,
value
:
"edit"
,
click
:
(
scope
)
=>
{
console
.
log
(
'编辑'
,
scope
);
// 路由跳转configure-rules
}
},
{
label
:
"编辑表结构"
,
value
:
"copy"
,
click
:
(
scope
)
=>
{
console
.
log
(
'复制'
,
scope
);
}
}
]
},
loading
:
false
});
</
script
>
<
template
>
<div>
111
</div>
<div
class=
"table_panel_wrap"
>
<Table
:tableInfo=
"dataBaseTableInfo"
/>
</div>
</
template
>
...
...
src/views/data_inventory/dictionary.vue
0 → 100644
View file @
e7fc36f
This diff is collapsed.
Click to expand it.
src/views/importFile.vue
View file @
e7fc36f
...
...
@@ -4,14 +4,14 @@
<
script
lang=
"ts"
setup
name=
"importFile"
>
import
{
ref
}
from
"vue"
;
import
{
useRoute
,
useRouter
}
from
"vue-router"
import
{
useRoute
,
useRouter
}
from
"vue-router"
import
useUserStore
from
"@/store/modules/user"
;
import
{
ElMessage
,
ElMessageBox
}
from
"element-plus"
;
import
Tabs
from
'@/components/Tabs/index.vue'
import
Table
from
'@/components/Table/index.vue'
import
Dialog
from
'@/components/Dialog/index.vue'
import
useCatchStore
from
"@/store/modules/catch"
;
import
{
download
,
downFile
,
getDownloadUrl
}
from
'@/utils/common'
import
{
download
,
downFile
,
getDownloadUrl
}
from
'@/utils/common'
import
{
addImportData
,
deleteImportData
,
...
...
@@ -45,15 +45,15 @@ const defaulttabs = [
{
label
:
'数据字典导入'
,
name
:
'dictionary'
},
// { label: '质量模型导入', name: 'qualityModelGroup' },
// { label: '质量规则导入', name: 'qualityRule' },
]
]
const
importTabs
=
[
{
label
:
'导入文件数据'
,
name
:
'importFile'
},
// { label: '质量模型导入', name: 'qualityModelGroup' },
// { label: '质量规则导入', name: 'qualityRule' },
]
]
const
tabsInfo
=
ref
({
activeName
:
''
,
tabs
:
isfileImport
?
importTabs
:
defaulttabs
tabs
:
isfileImport
?
importTabs
:
defaulttabs
})
const
currTableData
:
any
=
ref
<
Object
>
({});
...
...
@@ -232,7 +232,7 @@ const tableBtnClick = async (scope, btn) => {
if
(
res
&&
!
res
.
msg
)
{
let
name
=
row
.
errorFilePath
;
var
fileSuffix
=
name
?
name
.
substring
(
name
.
lastIndexOf
(
'.'
)
+
1
)
:
''
;
let
fileName
=
name
?
name
.
substring
(
name
.
lastIndexOf
(
'/'
)
+
1
)
:
''
let
fileName
=
name
?
name
.
substring
(
name
.
lastIndexOf
(
'/'
)
+
1
)
:
''
download
(
res
,
fileName
,
fileSuffix
);
}
else
{
res
?.
msg
&&
ElMessage
.
error
(
res
?.
msg
);
...
...
@@ -267,7 +267,7 @@ const batching = (type) => {
return
}
open
(
"此操作将永久删除, 是否继续?"
,
"warning"
,
true
);
}
else
if
(
type
===
'importFile'
)
{
}
else
if
(
type
===
'importFile'
)
{
if
(
isfileImport
==
'2'
||
isfileImport
==
'4'
)
{
dialogInfo
.
value
.
header
.
title
=
'导入数据'
dialogInfo
.
value
.
type
=
'upload'
...
...
@@ -279,8 +279,8 @@ const batching = (type) => {
dialogInfo
.
value
.
visible
=
true
}
else
{
router
.
push
({
name
:
"importData"
,
query
:
route
.
query
name
:
"importData"
,
query
:
route
.
query
})
}
}
...
...
@@ -391,7 +391,7 @@ const importData = (info) => {
uploadFiles
.
value
.
forEach
((
item
:
any
,
index
:
number
)
=>
{
params
.
append
(
"uploadFile"
,
item
.
raw
);
});
paramUrl
=
`
${
import
.
meta
.
env
.
VITE_APP_
PLAN
_BASEURL
}
/meta-collect-task/meta-collect-import?staffGuid=
${
userData
.
staffGuid
}
&databaseNameZh=
${
info
.
databaseNameZh
}
&databaseNameEn=
${
info
.
databaseNameEn
}
&isCover=
${
info
.
isCover
}
`
paramUrl
=
`
${
import
.
meta
.
env
.
VITE_APP_
CHECK
_BASEURL
}
/meta-collect-task/meta-collect-import?staffGuid=
${
userData
.
staffGuid
}
&databaseNameZh=
${
info
.
databaseNameZh
}
&databaseNameEn=
${
info
.
databaseNameEn
}
&isCover=
${
info
.
isCover
}
`
}
else
{
uploadFiles
.
value
.
forEach
((
item
:
any
,
index
:
number
)
=>
{
params
.
append
(
"file"
,
item
.
raw
);
...
...
@@ -643,7 +643,7 @@ const setUploadInfo = () => {
onActivated
(()
=>
{
uploadSetting
.
value
=
cacheStore
.
getCatch
(
'uploadSetting'
)
??
{}
if
(
isfileImport
)
{
if
(
isfileImport
)
{
tabsActiveName
.
value
=
'importFile'
}
else
{
tabsActiveName
.
value
=
uploadSetting
.
value
?.
type
||
'standard'
...
...
@@ -660,8 +660,10 @@ onActivated(() => {
<Tabs
v-if=
"!isfileImport"
:tabs-info=
"tabsInfo"
@
tabChange=
"tabsChange"
/>
<div
class=
"table_tool_wrap"
>
<div
class=
"tools_btns"
>
<el-button
type=
"primary"
@
click=
"batching('import')"
v-if=
"tabsActiveName !== 'importFile'"
v-preReClick
>
批量导入
</el-button>
<el-button
type=
"primary"
@
click=
"batching('importFile')"
v-if=
"tabsActiveName == 'importFile'"
v-preReClick
>
文件导入
</el-button>
<el-button
type=
"primary"
@
click=
"batching('import')"
v-if=
"tabsActiveName !== 'importFile'"
v-preReClick
>
批量导入
</el-button>
<el-button
type=
"primary"
@
click=
"batching('importFile')"
v-if=
"tabsActiveName == 'importFile'"
v-preReClick
>
文件导入
</el-button>
<el-button
@
click=
"batching('delete')"
v-preReClick
>
批量删除
</el-button>
<el-button
@
click=
"getFirstPageData"
v-preReClick
>
刷新结果
</el-button>
</div>
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
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 post a comment