Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
zrch-risk-39
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Administrator
zrch-risk-39
Commits
deef9285
提交
deef9285
authored
2月 26, 2026
作者:
kxjia
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改tb2
上级
16a71347
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
164 行增加
和
71 行删除
+164
-71
tb2.data.ts
zrch-risk-client-39/src/views/baosong/data/tb2.data.ts
+1
-1
Tb2.vue
...isk-client-39/src/views/baosong/report/components/Tb2.vue
+137
-52
MultiColumnTable.vue
...views/baosong/report/tableComponents/MultiColumnTable.vue
+26
-18
没有找到文件。
zrch-risk-client-39/src/views/baosong/data/tb2.data.ts
浏览文件 @
deef9285
...
@@ -75,7 +75,7 @@ export const tableFormData = [
...
@@ -75,7 +75,7 @@ export const tableFormData = [
{
type
:
'br'
},
{
type
:
'br'
},
{
type
:
'br'
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'
基础设施灾备模式-
备注'
},
{
type
:
'text'
,
value
:
'备注'
},
{
type
:
'textarea'
,
field
:
'COL5'
,
width
:
'500px'
},
{
type
:
'textarea'
,
field
:
'COL5'
,
width
:
'500px'
},
],
],
},
},
...
...
zrch-risk-client-39/src/views/baosong/report/components/Tb2.vue
浏览文件 @
deef9285
...
@@ -375,66 +375,151 @@ async function setData() {
...
@@ -375,66 +375,151 @@ async function setData() {
await
setTplItemMap
();
await
setTplItemMap
();
const
recordData
=
await
queryRecord
({
taskid
:
taskId
,
tplid
:
tplid
});
const
recordData
=
await
queryRecord
({
taskid
:
taskId
,
tplid
:
tplid
});
const
valueObj
=
{};
for
(
const
data
of
recordData
)
{
const
valueMap
=
recordData
.
reduce
((
acc
,
data
)
=>
{
const
key
=
`
${
data
.
itempid
}
_
${
data
.
itemid
}
_
${
data
.
rind
}
`
;
const
key
=
`
${
data
.
itempid
}
_
${
data
.
itemid
}
_
${
data
.
rind
}
_
${
data
.
tplcode
}
`
;
valueObj
[
key
]
=
data
.
content
;
acc
[
key
]
=
data
.
content
;
}
return
acc
;
for
(
const
row
of
tableFormData
)
{
},
{});
if
(
!
row
.
type
&&
row
.
content
)
{
for
(
const
cdata
of
row
.
content
)
{
await
fillTableData
(
valueMap
);
if
(
cdata
.
field
&&
cdata
.
field
.
length
>
0
)
{
const
strKey
=
`
${
row
.
code
}
_
${
cdata
.
field
}
`
;
const
item
=
tplItemMap
.
value
[
strKey
];
if
(
!
item
)
continue
;
const
{
pid
,
itemid
,
formTp
}
=
item
;
const
dataVal
=
valueObj
[
`
${
pid
}
_
${
itemid
}
_1`
];
if
(
!
dataVal
)
continue
;
if
(
formTp
===
'checkbox'
)
{
formData
[
strKey
]
=
dataVal
?.
split
(
","
)
||
[];
}
else
{
formData
[
strKey
]
=
dataVal
||
""
;
}
}
}
}
else
if
(
row
.
type
==
"MultiColumnTable"
&&
row
.
content
)
{
const
curMultiTable
=
childMultiTableRefs
.
value
[
row
.
code
];
const
rowsMap
=
{};
for
(
const
cdata
of
row
.
content
)
{
if
(
cdata
.
field
&&
cdata
.
field
.
length
>
0
)
{
const
strKey
=
`
${
row
.
code
}
_
${
cdata
.
field
}
`
;
const
tmpData
=
tplItemMap
.
value
[
strKey
];
if
(
!
tmpData
)
continue
;
const
{
pid
,
itemid
,
code
}
=
tmpData
;
const
valKeys
=
Object
.
keys
(
valueObj
).
filter
(
k
=>
k
.
startsWith
(
`
${
pid
}
_
${
itemid
}
_`
)
);
for
(
const
valKey
of
valKeys
)
{
const
parts
=
valKey
.
split
(
'_'
);
const
rind
=
parts
[
2
];
if
(
!
rowsMap
[
rind
])
{
rowsMap
[
rind
]
=
{};
}
rowsMap
[
rind
][
code
]
=
valueObj
[
valKey
];
}
}
}
const
tableDatas
=
Object
.
values
(
rowsMap
);
curMultiTable
.
setFormData
(
tableDatas
);
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
log
(
error
)
console
.
error
(
'加载数据失败:'
,
error
);
VxeUI
.
modal
.
message
({
VxeUI
.
modal
.
message
({
content
:
`加载数据失败:`
,
content
:
`加载数据失败:
${
error
instanceof
Error
?
error
.
message
:
String
(
error
)}
`
,
status
:
'error'
status
:
'error'
});
});
}
finally
{
}
finally
{
loading
.
value
=
false
;
loading
.
value
=
false
;
}
}
}
async
function
fillTableData
(
valueMap
)
{
for
(
const
row
of
tableFormData
)
{
if
(
!
row
.
type
&&
row
.
content
)
{
await
fillSimpleFields
(
row
,
valueMap
);
}
else
if
(
row
.
type
===
'MultiColumnTable'
&&
row
.
content
)
{
await
fillMultiColumnTable
(
row
,
valueMap
);
}
}
}
async
function
fillSimpleFields
(
row
,
valueMap
)
{
if
(
!
row
.
content
||
!
Array
.
isArray
(
row
.
content
))
return
;
for
(
const
item
of
row
.
content
)
{
if
(
!
item
.
field
||
item
.
field
.
length
===
0
)
continue
;
const
fieldKey
=
getFieldKey
(
row
.
code
,
item
.
field
);
const
tplItem
=
tplItemMap
.
value
[
fieldKey
];
if
(
!
tplItem
)
continue
;
const
{
pid
,
itemid
,
formTp
,
code
}
=
tplItem
;
const
dataKey
=
`
${
pid
}
_
${
itemid
}
_1_
${
code
}
`
;
const
dataVal
=
valueMap
[
dataKey
];
if
(
!
dataVal
)
continue
;
if
(
formTp
===
'checkbox'
)
{
formData
[
fieldKey
]
=
dataVal
.
split
(
','
).
filter
(
Boolean
);
}
else
{
formData
[
fieldKey
]
=
dataVal
;
}
if
(
item
.
type
===
'radio-group-extraFields'
)
{
await
fillExtraFields
(
row
,
item
,
valueMap
);
}
}
}
async
function
fillExtraFields
(
row
,
item
,
valueMap
)
{
const
options
=
item
.
options
||
[];
for
(
const
opt
of
options
)
{
if
(
!
opt
.
extraField
||
opt
.
extraField
.
length
===
0
)
continue
;
const
fieldKey
=
getFieldKey
(
row
.
code
,
opt
.
extraField
);
const
tplItem
=
tplItemMap
.
value
[
fieldKey
];
if
(
!
tplItem
)
continue
;
const
{
pid
,
itemid
,
code
}
=
tplItem
;
const
dataKey
=
`
${
pid
}
_
${
itemid
}
_1_
${
code
}
`
;
formData
[
fieldKey
]
=
valueMap
[
dataKey
]
||
''
;
}
}
async
function
fillMultiColumnTable
(
row
,
valueMap
)
{
const
child
=
childMultiTableRefs
.
value
[
row
.
code
];
if
(
!
child
||
!
Array
.
isArray
(
row
.
content
))
return
;
const
rowsMap
=
{};
const
allFields
=
collectAllFields
(
row
.
content
);
for
(
const
fieldInfo
of
allFields
)
{
const
fieldKey
=
getFieldKey
(
row
.
code
,
fieldInfo
.
field
);
const
tplItem
=
tplItemMap
.
value
[
fieldKey
];
if
(
!
tplItem
)
continue
;
const
{
pid
,
itemid
,
code
,
formTp
}
=
tplItem
;
const
valueKeys
=
Object
.
keys
(
valueMap
).
filter
(
k
=>
k
.
startsWith
(
`
${
pid
}
_
${
itemid
}
_`
)
);
for
(
const
valueKey
of
valueKeys
)
{
const
parts
=
valueKey
.
split
(
'_'
);
const
rind
=
parts
[
2
];
if
(
!
rowsMap
[
rind
])
{
rowsMap
[
rind
]
=
{};
}
let
value
=
valueMap
[
valueKey
];
if
(
formTp
===
'checkbox'
&&
value
)
{
value
=
value
.
split
(
','
).
filter
(
Boolean
);
}
rowsMap
[
rind
][
code
]
=
value
;
}
}
const
tableDatas
=
Object
.
values
(
rowsMap
);
if
(
child
&&
tableDatas
.
length
>
0
)
{
child
.
setFormData
(
tableDatas
);
}
}
function
collectAllFields
(
content
,
fields
=
[])
{
for
(
const
item
of
content
)
{
if
(
item
.
field
)
{
fields
.
push
({
field
:
item
.
field
,
formType
:
item
.
formType
});
}
if
(
item
.
otherField
)
{
fields
.
push
({
field
:
item
.
otherField
,
formType
:
'input'
});
}
if
(
item
.
formType
===
'combinaform'
&&
item
.
childs
)
{
collectAllFields
(
item
.
childs
,
fields
);
}
if
(
item
.
formType
===
'select'
&&
item
.
options
)
{
for
(
const
opt
of
item
.
options
)
{
if
(
opt
.
extraFields
)
{
collectAllFields
(
opt
.
extraFields
,
fields
);
}
if
(
opt
.
otherOption
&&
opt
.
extraField
)
{
fields
.
push
({
field
:
opt
.
extraField
,
formType
:
'input'
});
}
}
}
if
(
item
.
formType
===
'radio-group-extraFields'
&&
item
.
extraFields
)
{
for
(
const
key
in
item
.
extraFields
)
{
collectAllFields
(
item
.
extraFields
[
key
],
fields
);
}
}
}
return
fields
;
}
}
async
function
setTplItemMap
()
{
async
function
setTplItemMap
()
{
...
...
zrch-risk-client-39/src/views/baosong/report/tableComponents/MultiColumnTable.vue
浏览文件 @
deef9285
...
@@ -9,13 +9,13 @@
...
@@ -9,13 +9,13 @@
@
click=
"safeAddNewRecord"
@
click=
"safeAddNewRecord"
style=
"margin: 0 5px;"
style=
"margin: 0 5px;"
>
新增记录
</vxe-button>
>
新增记录
</vxe-button>
<vxe-button
<
!--
<
vxe-button
type=
"text"
type=
"text"
icon=
"vxe-icon-fullscreen"
icon=
"vxe-icon-fullscreen"
@
click=
"toggleFullscreen"
@
click=
"toggleFullscreen"
style=
"margin: 0 5px;"
style=
"margin: 0 5px;"
>
{{
isFullscreen
?
'退出全屏'
:
'全屏'
}}
>
{{
isFullscreen
?
'退出全屏'
:
'全屏'
}}
</vxe-button>
</vxe-button>
-->
<a-radio-group
v-model:value=
"curColnum"
style=
"margin-left: 20px;"
>
<a-radio-group
v-model:value=
"curColnum"
style=
"margin-left: 20px;"
>
<template
v-for=
"i in 6"
:key=
"i"
>
<template
v-for=
"i in 6"
:key=
"i"
>
...
@@ -175,6 +175,7 @@
...
@@ -175,6 +175,7 @@
</template>
</template>
<
template
v-else-if=
"field.formType === 'combinaform'"
>
<
template
v-else-if=
"field.formType === 'combinaform'"
>
<div
v-for=
"(item,itemInd) in field.childs"
:key=
"itemInd"
>
<div
v-for=
"(item,itemInd) in field.childs"
:key=
"itemInd"
>
<span
class=
"extra-label"
>
{{
item
.
label
}}
:
</span>
<span
class=
"extra-label"
>
{{
item
.
label
}}
:
</span>
<component
<component
...
@@ -527,22 +528,29 @@ const getFormData = () => {
...
@@ -527,22 +528,29 @@ const getFormData = () => {
}
}
const
setFormData
=
(
dataVale
)
=>
{
const
setFormData
=
(
dataVale
)
=>
{
tableData
.
value
=
dataVale
.
map
(
row
=>
{
tableData
.
value
=
dataVale
const
newRow
=
{
...
row
}
dataVale
.
forEach
((
row
,
rowIndex
)
=>
{
props
.
fields
.
forEach
(
field
=>
{
props
.
fields
.
forEach
(
field
=>
{
if
(
field
.
formType
===
'table'
)
{
if
(
field
.
formType
===
'table'
)
{
field
.
gridOptions
.
data
=
JSON
.
parse
(
row
[
field
.
field
])
field
.
gridOptions
.
data
=
JSON
.
parse
(
row
[
field
.
field
])
}
else
if
(
field
.
formType
===
'AttachTable'
)
{
}
else
if
(
field
.
formType
===
'AttachTable'
)
{
const
key
=
`
${
field
.
field
}
_
${
dataVale
.
indexOf
(
row
)}
`
;
const
key
=
`
${
field
.
field
}
_
${
rowIndex
}
`
;
const
child
=
attchTableRefs
.
value
[
key
];
const
child
=
attchTableRefs
.
value
[
key
];
if
(
child
&&
child
.
setFormData
)
{
if
(
child
&&
child
.
setFormData
)
{
child
.
setFormData
(
dataVale
)
child
.
setFormData
(
dataVale
)
}
}
}
else
if
(
field
.
formType
===
'combinaform'
)
{
}
if
(
field
.
childs
&&
Array
.
isArray
(
field
.
childs
))
{
})
field
.
childs
.
forEach
(
child
=>
{
});
if
(
child
.
formType
===
'checkbox'
&&
!
Array
.
isArray
(
newRow
[
child
.
field
]))
{
newRow
[
child
.
field
]
=
[]
}
})
}
}
})
return
newRow
})
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论