Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
N
nse-ui
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Members
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
吴超
nse-ui
Commits
ebb848ed
Commit
ebb848ed
authored
Aug 26, 2025
by
周海峰
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
加密管理
parent
bf195290
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
302 行增加
和
169 行删除
+302
-169
src/api/classification/encryptionManagement.js
+77
-2
src/constants/encryptFlag.js
+22
-0
src/views/classification/Classification/modules/EncryptionTab.vue
+2
-17
src/views/classification/EncryptionManagement/QueryForm.vue
+23
-35
src/views/classification/EncryptionManagement/list.vue
+178
-115
没有找到文件。
src/api/classification/encryptionManagement.js
View file @
ebb848ed
import
request
from
'@/utils/request'
import
request
from
'@/utils/request'
import
{
pa
}
from
'element-plus/es/locales.mjs'
export
function
query
(
data
)
{
/**
* 查询批量原始数据
* @param {*} data
* @returns
*/
export
function
queryBatchOriginalList
(
data
)
{
return
request
({
return
request
({
url
:
'/'
,
url
:
'/
core/encryptionconfig/queryBatchOriginalList
'
,
method
:
'post'
,
method
:
'post'
,
data
:
data
data
:
data
})
})
}
/**
* 查询所有加密数据
* @param {*} data
* @returns
*/
export
function
queryAllEncrypted
(
data
)
{
return
request
({
url
:
'/core/encryptionconfig/queryAllEncrypted'
,
method
:
'post'
,
data
:
data
})
}
/**
* 删除批量表字段
* @param {*} data projectid
* @returns
*/
export
function
delBatchTableColumn
(
data
)
{
return
request
({
url
:
'/switchfield/delBatchTableColumn'
,
method
:
'post'
,
data
:
data
})
}
/**
* 加载批量表参数
* @param {*} data operate
* @param {*} data projectid
* @returns
*/
export
function
loadingBatchTableParams
(
data
)
{
return
request
({
url
:
'/core/encryption/loadingBatchTableParams'
,
method
:
'post'
,
data
:
data
})
}
/**
* 加载进度
* @param {*} data
* @returns
*/
export
function
loadingProgress
(
data
)
{
return
request
({
url
:
'/core/encryption/loadingProgress'
,
method
:
'post'
,
data
:
data
})
}
/**
* 获取进度日志
* @param {*} data
* @returns
*/
export
function
getProcesslog
(
query
)
{
return
request
({
url
:
'/core/encryption/getProcesslog'
,
method
:
'get'
,
params
:
query
})
}
}
\ No newline at end of file
src/constants/encryptFlag.js
0 → 100644
View file @
ebb848ed
// 状态标识对象数组
const
encryptFlag
=
[
{
value
:
'0'
,
label
:
'无'
},
{
value
:
'-2'
,
label
:
'解密中'
,
type
:
'warning'
},
{
value
:
'-1'
,
label
:
'加密中'
,
type
:
'warning'
},
// { value: '1', label: '加密完成' },
{
value
:
'5'
,
label
:
'加密完成'
,
type
:
'success'
},
{
value
:
'4'
,
label
:
'加密失败'
,
type
:
'danger'
},
{
value
:
'44'
,
label
:
'解密失败'
,
type
:
'danger'
},
// { value: '6', label: '解密完成' },
{
value
:
'7'
,
label
:
'解密完成'
,
type
:
'success'
}
// { value: '9', label: '加密替换失败' },
// { value: '10', label: '解密替换失败' },
// { value: '11', label: '解密校验失败' },
// { value: '12', label: '加密校验失败' }
]
export
default
encryptFlag
;
\ No newline at end of file
src/views/classification/Classification/modules/EncryptionTab.vue
View file @
ebb848ed
...
@@ -117,6 +117,8 @@ import { queryOriginalList, queryEncryptionList, hasRedundanceColumns,
...
@@ -117,6 +117,8 @@ import { queryOriginalList, queryEncryptionList, hasRedundanceColumns,
loadingColumn
,
checkCanReload
,
removeLoadingColumn
,
checkTableEncOrDecColumn
,
loadingColumn
,
checkCanReload
,
removeLoadingColumn
,
checkTableEncOrDecColumn
,
loadingTableParams
,
reloadingColumn
loadingTableParams
,
reloadingColumn
}
from
'@/api/classification/classification.js'
}
from
'@/api/classification/classification.js'
import
encryptFlag
from
'@/constants/encryptFlag.js'
const
props
=
defineProps
({
const
props
=
defineProps
({
// tableData: {
// tableData: {
// type: Array,
// type: Array,
...
@@ -183,23 +185,6 @@ const getTableData = async () => {
...
@@ -183,23 +185,6 @@ const getTableData = async () => {
tableDataCache
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
tableData
.
value
))
tableDataCache
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
tableData
.
value
))
}
}
// 状态标识对象数组
const
encryptFlag
=
[
{
value
:
'0'
,
label
:
'无'
},
{
value
:
'-2'
,
label
:
'解密中'
},
{
value
:
'-1'
,
label
:
'加密中'
},
{
value
:
'1'
,
label
:
'加密完成'
},
{
value
:
'5'
,
label
:
'加密完成'
},
{
value
:
'4'
,
label
:
'加密失败'
},
{
value
:
'44'
,
label
:
'解密失败'
},
{
value
:
'6'
,
label
:
'解密完成'
},
{
value
:
'7'
,
label
:
'解密完成'
},
{
value
:
'9'
,
label
:
'加密替换失败'
},
{
value
:
'10'
,
label
:
'解密替换失败'
},
{
value
:
'11'
,
label
:
'解密校验失败'
},
{
value
:
'12'
,
label
:
'加密校验失败'
}
]
/**
/**
* 加密状态标识
* 加密状态标识
*/
*/
...
...
src/views/classification/EncryptionManagement/QueryForm.vue
View file @
ebb848ed
<
script
setup
lang=
"ts"
name=
"QueryForm"
>
<
script
setup
>
import
{
computed
,
ref
,
watch
}
from
'vue'
import
{
computed
,
ref
,
watch
}
from
'vue'
;
import
type
{
FormInstance
}
from
'element-plus'
import
PageWrapperSearch
from
'@/components/search/PageWrapperSearch.vue'
;
import
PageWrapperSearch
from
'@/components/search/PageWrapperSearch.vue'
import
encryptFlag
from
'@/constants/encryptFlag.js'
;
// import { useDict } from '@/utils/dict'
const
emit
=
defineEmits
([
'update:modelValue'
,
'query'
,
'reset'
]);
// import { listDept } from '@/api/system/dept'// 部门
const
props
=
defineProps
({
modelValue
:
Object
});
// const { approve_status, invoice_status} = useDict('approve_status', 'invoice_status')
const
emit
=
defineEmits
([
'update:modelValue'
,
'query'
,
'reset'
])
const
invoice_status_filter
=
ref
([])
const
employeesList
=
ref
([])
const
props
=
defineProps
<
{
modelValue
:
any
}
>
()
const
queryForm
=
computed
({
const
queryForm
=
computed
({
get
()
{
get
()
{
return
props
.
modelValue
return
props
.
modelValue
;
},
},
set
(
val
:
any
)
{
set
(
val
)
{
console
.
log
(
'query computed'
,
val
)
console
.
log
(
'query computed'
,
val
)
;
emit
(
'update:modelValue'
,
val
)
emit
(
'update:modelValue'
,
val
)
;
}
}
})
})
;
// 搜索
// 搜索
function
onSearch
()
{
function
onSearch
()
{
emit
(
'query'
)
emit
(
'query'
)
;
}
}
// 重置
// 重置
function
onReset
(
formRef
:
FormInstance
)
{
function
onReset
(
formRef
)
{
queryForm
.
value
.
datasource
=
''
queryForm
.
value
.
datasource
=
''
;
queryForm
.
value
.
schema
=
''
queryForm
.
value
.
schema
=
''
;
queryForm
.
value
.
tableName
=
''
queryForm
.
value
.
tableName
=
''
;
queryForm
.
value
.
fieldName
=
''
queryForm
.
value
.
fieldName
=
''
;
queryForm
.
value
.
status
=
''
queryForm
.
value
.
status
=
[];
emit
(
'reset'
,
formRef
)
emit
(
'reset'
,
formRef
)
;
}
}
</
script
>
</
script
>
<
template
>
<
template
>
...
@@ -87,10 +75,10 @@ function onReset(formRef: FormInstance) {
...
@@ -87,10 +75,10 @@ function onReset(formRef: FormInstance) {
<el-select
<el-select
v-model=
"queryForm.status"
v-model=
"queryForm.status"
placeholder=
"请选择状态"
placeholder=
"请选择状态"
multiple
clearable
clearable
>
>
<el-option
label=
"启用"
value=
"active"
/>
<el-option
v-for=
"value in encryptFlag"
:label=
"value.label"
:value=
"value.value"
/>
<el-option
label=
"禁用"
value=
"inactive"
/>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
</page-wrapper-search>
</page-wrapper-search>
...
...
src/views/classification/EncryptionManagement/list.vue
View file @
ebb848ed
<
script
setup
name=
"ProjectManageList"
>
<
script
setup
name=
"ProjectManageList"
>
import
{
getCurrentInstance
,
reactive
,
ref
,
toRefs
}
from
'vue'
import
{
onMounted
,
reactive
,
ref
,
toRefs
}
from
'vue'
import
{
ElMessage
}
from
'element-plus'
import
{
ElMessage
}
from
'element-plus'
import
QueryForm
from
'./QueryForm.vue'
import
QueryForm
from
'./QueryForm.vue'
import
{
changeRoute
}
from
'@/utils/switchRoute'
import
{
changeRoute
}
from
'@/utils/switchRoute'
import
{
useRouter
}
from
'vue-router'
import
{
useRouter
}
from
'vue-router'
import
{
queryBatchOriginalList
,
delBatchTableColumn
,
loadingBatchTableParams
,
loadingProgress
,
getProcesslog
}
from
'@/api/classification/encryptionManagement.js'
import
useAppStore
from
'@/store/modules/app'
import
encryptFlag
from
'@/constants/encryptFlag.js'
;
import
usePermissionStore
from
'@/store/modules/permission'
const
appStore
=
useAppStore
()
const
permissionStore
=
usePermissionStore
()
const
router
=
useRouter
()
const
router
=
useRouter
()
const
emit
=
defineEmits
([
'page'
])
const
emit
=
defineEmits
([
'page'
])
const
{
proxy
}
=
getCurrentInstance
()
function
onReset
(
formQuery
)
{
function
onReset
(
formQuery
)
{
console
.
log
(
'onReset'
)
console
.
log
(
'onReset'
)
formQuery
.
resetFields
()
formQuery
.
resetFields
()
...
@@ -24,128 +19,196 @@ function onQuery() {
...
@@ -24,128 +19,196 @@ function onQuery() {
// 搜索按钮操作
// 搜索按钮操作
function
handleQuery
()
{
function
handleQuery
()
{
console
.
log
(
'queryParams'
,
queryParams
.
value
)
console
.
log
(
'queryParams'
,
queryParams
.
value
)
queryParams
.
value
.
page
Num
=
1
queryParams
.
value
.
page
=
1
getList
()
getList
()
}
}
const
data
=
reactive
({
const
data
=
reactive
({
queryParams
:
{
queryParams
:
{
page
Num
:
1
,
page
:
1
,
pageSize
:
8
rows
:
10
}
}
})
})
// 表格数据
// 表格数据
const
{
queryParams
}
=
toRefs
(
data
)
const
{
queryParams
}
=
toRefs
(
data
)
const
total
=
ref
(
3
)
const
total
=
ref
(
3
)
const
loading
=
ref
(
false
)
const
loading
=
ref
(
false
)
const
tableData
=
ref
([]);
// 查询列表
// 查询列表
function
getList
()
{
function
getList
()
{
loading
.
value
=
true
loading
.
value
=
true
const
params
=
{
page
:
queryParams
.
value
.
page
,
setTimeout
(()
=>
{
rows
:
queryParams
.
value
.
rows
,
loading
.
value
=
false
projectid
:
sessionStorage
.
getItem
(
'projectId'
),
},
3000
);
datasystemname
:
queryParams
.
value
.
datasource
,
schema
:
queryParams
.
value
.
schema
,
}
table_name
:
queryParams
.
value
.
tableName
,
const
tableData
=
ref
([
columnname
:
queryParams
.
value
.
fieldName
,
{
flag
:
queryParams
.
value
.
status
id
:
'1'
,
index
:
1
,
dataSource
:
'若依配...'
,
schema
:
'ry'
,
tableName
:
'sys_user'
,
fieldName
:
'phone...'
,
fieldType
:
'VARCHAR...'
,
comment
:
'手机号码'
,
algorithm
:
'姓名加密规则'
,
secretKey
:
'姓名加...'
,
description
:
''
,
status
:
'加密完成'
},
{
id
:
'2'
,
index
:
2
,
dataSource
:
'若依配...'
,
schema
:
'ry'
,
tableName
:
'sys_user'
,
fieldName
:
'user_n...'
,
fieldType
:
'VARCHAR...'
,
comment
:
'用户名昵称'
,
algorithm
:
'姓名加密规则'
,
secretKey
:
'姓名加...'
,
description
:
''
,
status
:
'加密完成'
}
}
]);
queryBatchOriginalList
(
params
)
function
pageProjectManage
()
{
.
then
((
response
)
=>
{
if
(
response
&&
response
.
data
)
{
tableData
.
value
=
response
.
data
||
[];
total
.
value
=
response
.
totalCount
||
0
;
}
else
{
tableData
.
value
=
[];
total
.
value
=
0
;
}
})
.
catch
((
error
)
=>
{
console
.
error
(
'Failed to fetch table data:'
,
error
);
ElMessage
.
error
(
'获取表格数据失败,请稍后重试'
);
})
.
finally
(()
=>
{
loading
.
value
=
false
;
});
}
function
pageProjectManage
()
{
changeRoute
()
changeRoute
()
router
.
push
({
router
.
push
({
path
:
'/project/Project'
path
:
'/project/Project'
})
})
}
}
/**
/**
* 删除多余列
* 删除多余列
*/
*/
function
deleteUnnecessaryColumns
(){
const
deleteUnnecessaryColumns
=
async
()
=>
{
console
.
log
(
'删除多余列'
)
const
params
=
{
projectid
:
sessionStorage
.
getItem
(
'projectId'
)
}
try
{
await
delBatchTableColumn
(
params
)
ElMessage
.
success
(
'删除成功'
)
getList
()
}
catch
(
error
)
{
ElMessage
.
error
(
'删除失败'
)
}
}
}
/**
/**
* 批量加密
* 批量加密
*/
*/
function
bulkEncryption
(){
const
bulkEncryption
=
async
()
=>
{
console
.
log
(
'批量加密'
)
const
params
=
{
projectid
:
sessionStorage
.
getItem
(
'projectId'
),
operate
:
"0"
}
const
response
=
await
loadingBatchTableParams
(
params
)
if
(
response
&&
response
.
code
===
'POP_00014'
&&
response
.
flag
)
{
ElMessage
.
success
(
'批量加密成功'
)
getList
()
}
else
{
ElMessage
.
error
(
'批量加密失败'
)
}
setTimeout
(()
=>
{
getList
()
},
5000
);
// 5秒后刷新列表
}
}
/**
/**
* 批量解密
* 批量解密
*/
*/
function
batchDecryption
()
{
const
batchDecryption
=
async
()
=>
{
console
.
log
(
'批量解密'
)
const
params
=
{
projectid
:
sessionStorage
.
getItem
(
'projectId'
),
operate
:
"1"
}
const
response
=
await
loadingBatchTableParams
(
params
)
if
(
response
&&
response
.
code
===
'POP_00014'
&&
response
.
flag
)
{
ElMessage
.
success
(
'批量解密成功'
)
getList
()
}
else
{
ElMessage
.
error
(
'批量解密失败'
)
}
setTimeout
(()
=>
{
getList
()
},
5000
);
// 5秒后刷新列表
}
}
// 弹窗控制
// 弹窗控制
const
dialogVisible
=
ref
(
false
);
const
dialogVisible
=
ref
(
false
);
const
detailData
=
ref
({
const
detailData
=
ref
({});
fieldName
:
''
,
const
handleDetail
=
async
(
val
)
=>
{
status
:
''
,
console
.
log
(
'查看详情'
,
val
);
startTime
:
''
,
const
params
=
{
endTime
:
''
,
projectid
:
sessionStorage
.
getItem
(
'projectId'
),
totalRows
:
0
,
columnName
:
val
.
table_field_id
,
processedRows
:
0
,
dataSystemId
:
val
.
datasystem_id
,
rejectedRows
:
0
schema
:
val
.
tschemas
,
});
tableName
:
val
.
names
function
handleDetail
(
val
)
{
}
const
response
=
await
loadingProgress
(
params
)
if
(
response
&&
response
.
code
===
'POP_00014'
&&
response
.
flag
)
{
}
else
{
ElMessage
.
error
(
'加载进度失败'
)
return
}
console
.
log
(
'加载进度成功'
,
response
);
const
data
=
response
.
data
[
0
]
||
{};
// 这里根据实际数据结构调整
// 这里根据实际数据结构调整
detailData
.
value
=
{
detailData
.
value
=
{
id
:
'123'
,
fieldName
:
data
.
columnName
||
''
,
fieldName
:
'phonenumber'
,
status
:
data
.
flag
||
''
,
status
:
'解密完成'
,
startTime
:
data
.
startTime
||
''
,
startTime
:
'2025-08-21 16:55:...'
,
endTime
:
data
.
endTime
||
''
,
endTime
:
'2025-08-21 16:56:...'
,
totalRows
:
data
.
totalCounts
||
0
,
totalRows
:
4
,
finishCounts
:
data
.
finishCounts
||
0
,
processedRows
:
0
,
rejectedRows
:
data
.
failCounts
||
0
,
rejectedRows
:
0
params
:
params
||
{},
row
:
val
};
};
dialogVisible
.
value
=
true
;
dialogVisible
.
value
=
true
;
}
}
// 查看日志
const
showLog
=
()
=>
{
console
.
log
(
'查看日志'
);
// 查看日志
const
dialogVisibleLog
=
ref
(
false
);
const
logData
=
ref
()
const
showLog
=
async
()
=>
{
const
params
=
{
projectId
:
sessionStorage
.
getItem
(
'projectId'
),
dataSystemId
:
detailData
.
value
.
params
.
dataSystemId
,
schema
:
detailData
.
value
.
params
.
schema
,
tableName
:
detailData
.
value
.
params
.
tableName
}
console
.
log
(
'查看日志params'
,
params
);
const
response
=
await
getProcesslog
(
params
)
if
(
response
&&
response
.
code
===
'POP_00014'
&&
response
.
flag
)
{
logData
.
value
=
response
.
data
||
''
;
}
else
{
ElMessage
.
error
(
'加载日志失败'
)
}
dialogVisibleLog
.
value
=
true
;
dialogVisibleLog
.
value
=
true
;
// 这里可以打开日志弹窗或跳转到日志页面
// 这里可以打开日志弹窗或跳转到日志页面
};
};
const
dialogVisibleLog
=
ref
(
false
);
const
logData
=
ref
(
'12312312312312312'
)
const
downLoad
=
()
=>
{
const
downLoad
=
()
=>
{
console
.
log
(
'下载日志'
);
console
.
log
(
'下载日志'
);
const
blob
=
new
Blob
([
logData
.
value
]);
const
link
=
document
.
createElement
(
'a'
)
link
.
href
=
URL
.
createObjectURL
(
blob
)
link
.
download
=
`
${
detailData
.
value
.
row
.
datasystemname
}
-
${
detailData
.
value
.
row
.
tschemas
}
.
${
detailData
.
value
.
row
.
names
}
_
${
new
Date
().
toISOString
().
slice
(
0
,
10
)}
.log`
link
.
click
()
URL
.
revokeObjectURL
(
link
.
href
)
};
};
/**
* 加密状态标识
*/
const
getFlagName
=
(
flag
)
=>
{
const
found
=
encryptFlag
.
find
(
item
=>
item
.
value
===
String
(
flag
))
return
found
?
found
:
{}
}
onMounted
(()
=>
{
getList
()
})
</
script
>
</
script
>
...
@@ -179,7 +242,7 @@ const downLoad = () => {
...
@@ -179,7 +242,7 @@ const downLoad = () => {
<div
class=
"app-container__body"
>
<div
class=
"app-container__body"
>
<div>
<div>
<
query-f
orm
<
QueryF
orm
ref=
"QueryFormRef"
ref=
"QueryFormRef"
v-model=
"queryParams"
v-model=
"queryParams"
@
query=
"onQuery"
@
query=
"onQuery"
...
@@ -187,7 +250,7 @@ const downLoad = () => {
...
@@ -187,7 +250,7 @@ const downLoad = () => {
<div
class=
"warning-alert"
>
<div
class=
"warning-alert"
>
<div
class=
"warning-content flex-container align-center"
>
<div
class=
"warning-content flex-container align-center"
>
<el-icon
color=
"#f33"
><Warn
ing
/></el-icon>
<el-icon
color=
"#f33"
><Warn
TriangleFilled
/></el-icon>
<span
class=
"warning-text"
>
警告:存在未加密字段,请完成历史数据加密操作,否则无法正常使用插件!
</span>
<span
class=
"warning-text"
>
警告:存在未加密字段,请完成历史数据加密操作,否则无法正常使用插件!
</span>
</div>
</div>
</div>
</div>
...
@@ -197,26 +260,26 @@ const downLoad = () => {
...
@@ -197,26 +260,26 @@ const downLoad = () => {
style=
"width: 100%"
style=
"width: 100%"
:header-cell-style=
"{ background: '#f5f7fa', color: '#606266' }"
:header-cell-style=
"{ background: '#f5f7fa', color: '#606266' }"
>
>
<el-table-column
prop
=
"index"
label=
"序号"
width=
"60"
align=
"center"
/>
<el-table-column
type
=
"index"
label=
"序号"
width=
"60"
align=
"center"
/>
<el-table-column
prop=
"data
Sourc
e"
label=
"数据源名"
width=
"120"
show-overflow-tooltip
/>
<el-table-column
prop=
"data
systemnam
e"
label=
"数据源名"
width=
"120"
show-overflow-tooltip
/>
<el-table-column
prop=
"
schema"
label=
"SCHEMA"
width=
"100
"
align=
"center"
/>
<el-table-column
prop=
"
tschemas"
label=
"SCHEMA
"
align=
"center"
/>
<el-table-column
prop=
"
tableName
"
label=
"表名"
width=
"120"
show-overflow-tooltip
/>
<el-table-column
prop=
"
names
"
label=
"表名"
width=
"120"
show-overflow-tooltip
/>
<el-table-column
prop=
"
fieldName
"
label=
"字段名"
width=
"120"
show-overflow-tooltip
/>
<el-table-column
prop=
"
table_field_id
"
label=
"字段名"
width=
"120"
show-overflow-tooltip
/>
<el-table-column
prop=
"
fieldT
ype"
label=
"字段类型"
width=
"120"
show-overflow-tooltip
/>
<el-table-column
prop=
"
column_t
ype"
label=
"字段类型"
width=
"120"
show-overflow-tooltip
/>
<el-table-column
prop=
"
comment
"
label=
"注释"
min-width=
"120"
show-overflow-tooltip
/>
<el-table-column
prop=
"
note
"
label=
"注释"
min-width=
"120"
show-overflow-tooltip
/>
<el-table-column
prop=
"
algorithm
"
label=
"加密算法"
min-width=
"150"
show-overflow-tooltip
/>
<el-table-column
prop=
"
encryptiontypename
"
label=
"加密算法"
min-width=
"150"
show-overflow-tooltip
/>
<el-table-column
prop=
"secret
Key
"
label=
"密钥"
width=
"120"
show-overflow-tooltip
/>
<el-table-column
prop=
"secret
keyname
"
label=
"密钥"
width=
"120"
show-overflow-tooltip
/>
<el-table-column
prop=
"descri
ption
"
label=
"描述信息"
width=
"120"
show-overflow-tooltip
/>
<el-table-column
prop=
"descri
be_info
"
label=
"描述信息"
width=
"120"
show-overflow-tooltip
/>
<el-table-column
prop=
"
status
"
label=
"执行状态"
width=
"120"
align=
"center"
>
<el-table-column
prop=
"
flag
"
label=
"执行状态"
width=
"120"
align=
"center"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-tag
:type=
"
scope.row.status === '加密完成' ? 'success' : 'warning'
"
>
<el-tag
:type=
"
getFlagName(scope.row.flag).type
"
>
{{
scope
.
row
.
status
}}
{{
getFlagName
(
scope
.
row
.
flag
).
label
}}
</el-tag>
</el-tag>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"操作"
width=
"100"
align=
"center"
fixed=
"right"
>
<el-table-column
label=
"操作"
width=
"100"
align=
"center"
fixed=
"right"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"handleDetail(scope.row
.id
)"
>
详情
</el-button>
<el-button
type=
"primary"
size=
"small"
@
click=
"handleDetail(scope.row)"
>
详情
</el-button>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
...
@@ -224,8 +287,8 @@ const downLoad = () => {
...
@@ -224,8 +287,8 @@ const downLoad = () => {
<pagination
<pagination
v-show=
"total > 0"
v-show=
"total > 0"
:total=
"total"
:total=
"total"
v-model:page=
"queryParams.page
Num
"
v-model:page=
"queryParams.page"
v-model:limit=
"queryParams.
pageSize
"
v-model:limit=
"queryParams.
rows
"
@
pagination=
"getList"
@
pagination=
"getList"
/>
/>
</div>
</div>
...
@@ -243,33 +306,33 @@ const downLoad = () => {
...
@@ -243,33 +306,33 @@ const downLoad = () => {
class=
"detail-container"
class=
"detail-container"
>
>
<el-descriptions-item
label=
"字段名"
>
<el-descriptions-item
label=
"字段名"
>
{{ detailData.fieldName
|| 'phonenumber'
}}
{{ detailData.fieldName }}
</el-descriptions-item>
</el-descriptions-item>
<el-descriptions-item
label=
"状态"
>
<el-descriptions-item
label=
"状态"
>
<el-tag
:type=
"
detailData.status === '解密完成' ? 'success' : 'warning'
"
>
<el-tag
:type=
"
getFlagName(detailData.status).type
"
>
{{
detailData.status || '解密完成'
}}
{{
getFlagName(detailData.status).label
}}
</el-tag>
</el-tag>
</el-descriptions-item>
</el-descriptions-item>
<el-descriptions-item
label=
"开始时间"
>
<el-descriptions-item
label=
"开始时间"
>
{{ detailData.startTime
|| '2025-08-21 16:55:...'
}}
{{ detailData.startTime }}
</el-descriptions-item>
</el-descriptions-item>
<el-descriptions-item
label=
"结束时间"
>
<el-descriptions-item
label=
"结束时间"
>
{{ detailData.endTime
|| '2025-08-21 16:56:...'
}}
{{ detailData.endTime }}
</el-descriptions-item>
</el-descriptions-item>
<el-descriptions-item
label=
"加密/解密总行数"
>
<el-descriptions-item
label=
"加密/解密总行数"
>
{{ detailData.totalRows
|| 4
}}
{{ detailData.totalRows}}
</el-descriptions-item>
</el-descriptions-item>
<el-descriptions-item
label=
"已加密/解密行数"
>
<el-descriptions-item
label=
"已加密/解密行数"
>
{{ detailData.
processedRows || 0
}}
{{ detailData.
finishCounts
}}
</el-descriptions-item>
</el-descriptions-item>
<el-descriptions-item
label=
"拒绝条数"
>
<el-descriptions-item
label=
"拒绝条数"
>
{{ detailData.rejectedRows
|| 0
}}
{{ detailData.rejectedRows}}
</el-descriptions-item>
</el-descriptions-item>
</el-descriptions>
</el-descriptions>
...
@@ -284,15 +347,13 @@ const downLoad = () => {
...
@@ -284,15 +347,13 @@ const downLoad = () => {
title=
"日志"
title=
"日志"
width=
"50%"
width=
"50%"
>
>
<div
class=
"flex-container flex-wrap"
>
<div
class=
"flex-container flex-wrap"
v-html=
"logData"
>
<textarea
style=
"width: -webkit-fill-available;"
v-model=
"logData"
disabled
></textarea>
</div>
</div>
<
template
#
footer
>
<
template
#
footer
>
<el-button
type=
"primary"
@
click=
"downLoad"
>
下载
</el-button>
<el-button
type=
"primary"
@
click=
"downLoad"
>
下载
</el-button>
</
template
>
</
template
>
</el-dialog>
</el-dialog>
</div>
</div>
</template>
</template>
...
@@ -327,12 +388,14 @@ const downLoad = () => {
...
@@ -327,12 +388,14 @@ const downLoad = () => {
}
}
.flex-wrap
{
.flex-wrap
{
flex-direction
:
wrap
;
flex-direction
:
wrap
;
height
:
500px
;
overflow-y
:
scroll
;
}
}
.warning-alert
{
.warning-alert
{
width
:
100%
;
width
:
100%
;
padding
:
12
px
16px
;
padding
:
5
px
16px
;
margin
:
10px
0
;
margin
:
10px
0
;
border
:
2
px
solid
#f56c6c
;
border
:
0.5
px
solid
#f56c6c
;
border-radius
:
4px
;
border-radius
:
4px
;
background-color
:
#fef0f0
;
background-color
:
#fef0f0
;
display
:
flex
;
display
:
flex
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论