Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
zrch-risk-39
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Administrator
zrch-risk-39
Commits
d692b0a9
提交
d692b0a9
authored
2月 02, 2026
作者:
liuluyu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新tb5字段
上级
320bc7ff
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
1158 行增加
和
1162 行删除
+1158
-1162
tb5.data.ts
zrch-risk-client-39/src/views/baosong/data/tb5.data.ts
+527
-513
Tb5.vue
...isk-client-39/src/views/baosong/report/components/Tb5.vue
+419
-463
MyVxeTable.vue
...9/src/views/baosong/report/tableComponents/MyVxeTable.vue
+212
-186
没有找到文件。
zrch-risk-client-39/src/views/baosong/data/tb5.data.ts
浏览文件 @
d692b0a9
...
...
@@ -25,682 +25,696 @@ interface VxeColumn {
export
const
tableFormData
=
[
{
serialNumber
:
"1"
,
project
:
"软件产品使用情况"
,
serialNumber
:
'1'
,
project
:
'软件产品使用情况'
,
code
:
'SFTAUTH'
,
content
:
[
{
type
:
"text"
,
value
:
"<strong>软件正版化情况:</strong>"
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"(1)软件正版化工作负责部门:"
},
{
type
:
"radio-group"
,
field
:
"SFTAUTH1"
,
options
:
[
"有"
,
"无"
]
},
{
type
:
"brspace"
},
{
type
:
"text"
,
value
:
"如果有,部门名称"
},
{
type
:
"input"
,
value
:
""
,
field
:
"SFTAUTH2"
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"(2)软件正版化工作负责人:"
},
{
type
:
"radio-group"
,
field
:
"SFTAUTH3"
,
options
:
[
"有"
,
"无"
]
},
{
type
:
"brspace"
},
{
type
:
"text"
,
value
:
"如果有,姓名"
},
{
type
:
"input"
,
value
:
""
,
field
:
"SFTAUTH4"
},
{
type
:
"text"
,
value
:
",职务"
},
{
type
:
"input"
,
value
:
""
,
field
:
"SFTAUTH5"
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"(3)建立软件正版化有关规章制度:"
},
{
type
:
"radio-group"
,
field
:
"SFTAUTH6"
,
options
:
[
"有"
,
"无"
]
},
{
type
:
"brspace"
},
{
type
:
"text"
,
value
:
"如果有,制度名称"
},
{
type
:
"input"
,
value
:
""
,
field
:
"SFTAUTH7"
},
{
type
:
"text"
,
value
:
",发布时间"
},
{
type
:
"date"
,
value
:
""
,
field
:
"SFTAUTH8"
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"(4)实施软件资产管理:"
},
{
type
:
"radio-group"
,
field
:
"SFTAUTH10"
,
options
:
[
"是"
,
"否"
]
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"(5)本年度软件正版化培训次数:"
},
{
type
:
"number"
,
value
:
""
,
field
:
"SFTAUTH11"
},
{
type
:
"text"
,
value
:
"次,培训总人次:"
},
{
type
:
"number"
,
value
:
""
,
field
:
"SFTAUTH12"
},
{
type
:
"text"
,
value
:
"人次"
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"(6)本年度软件正版化投入情况:"
},
{
type
:
"brspace"
},
{
type
:
"text"
,
value
:
"通用软件采购投入:"
},
{
type
:
"number"
,
value
:
""
,
placeholder
:
"万元"
,
field
:
"SFTAUTH13"
},
{
type
:
"text"
,
value
:
",通用软件维护投入:"
},
{
type
:
"number"
,
value
:
""
,
placeholder
:
"万元"
,
field
:
"SFTAUTH14"
},
{
type
:
"text"
,
value
:
""
},
{
type
:
"brspace"
},
{
type
:
"text"
,
value
:
"专用软件采购(开发)投入:"
},
{
type
:
"number"
,
value
:
""
,
placeholder
:
"万元"
,
field
:
"SFTAUTH15"
},
{
type
:
"text"
,
value
:
",专用软件维护投入:"
},
{
type
:
"number"
,
value
:
""
,
placeholder
:
"万元"
,
field
:
"SFTAUTH16"
},
{
type
:
"text"
,
value
:
""
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"(7)是否曾获得过“全国软件正版化示范单位”或“全国版权示范单位(软件正版化)”称号:"
},
{
type
:
"radio-group"
,
field
:
"C20B001"
,
options
:
[
"是"
,
"否"
]
},
{
type
:
"br"
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"<strong>通用软件使用情况统计:</strong>"
},
{
type
:
"br"
},
{
serialNumber
:
"1001"
,
code
:
"DSKOS"
,
type
:
"MultiColumnTable"
,
project
:
"桌面操作系统正版化率"
,
{
type
:
'text'
,
value
:
'<strong>软件正版化情况:</strong>'
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'(1)软件正版化工作负责部门:'
},
{
type
:
'radio-group'
,
field
:
'SFTAUTH1'
,
options
:
[
'有'
,
'无'
],
},
{
type
:
'brspace'
},
{
type
:
'text'
,
value
:
'如果有,部门名称'
},
{
type
:
'input'
,
value
:
''
,
field
:
'SFTAUTH2'
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'(2)软件正版化工作负责人:'
},
{
type
:
'radio-group'
,
field
:
'SFTAUTH3'
,
options
:
[
'有'
,
'无'
],
},
{
type
:
'brspace'
},
{
type
:
'text'
,
value
:
'如果有,姓名'
},
{
type
:
'input'
,
value
:
''
,
field
:
'SFTAUTH4'
},
{
type
:
'text'
,
value
:
',职务'
},
{
type
:
'input'
,
value
:
''
,
field
:
'SFTAUTH5'
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'(3)建立软件正版化有关规章制度:'
},
{
type
:
'radio-group'
,
field
:
'SFTAUTH6'
,
options
:
[
'是'
,
'否'
],
},
{
type
:
'brspace'
},
{
type
:
'text'
,
value
:
'如果有,制度名称'
},
{
type
:
'input'
,
value
:
''
,
field
:
'SFTAUTH7'
},
{
type
:
'text'
,
value
:
',发布时间'
},
{
type
:
'date'
,
value
:
''
,
field
:
'SFTAUTH8'
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'(4)实施软件资产管理:'
},
{
type
:
'radio-group'
,
field
:
'SFTAUTH10'
,
options
:
[
'是'
,
'否'
]
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'(5)本年度软件正版化培训次数:'
},
{
type
:
'number'
,
value
:
''
,
field
:
'SFTAUTH11'
},
{
type
:
'text'
,
value
:
'次,培训总人次:'
},
{
type
:
'number'
,
value
:
''
,
field
:
'SFTAUTH12'
},
{
type
:
'text'
,
value
:
'人次'
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'(6)本年度软件正版化投入情况:'
},
{
type
:
'brspace'
},
{
type
:
'text'
,
value
:
'通用软件采购投入:'
},
{
type
:
'number'
,
value
:
''
,
placeholder
:
'万元'
,
field
:
'SFTAUTH13'
},
{
type
:
'text'
,
value
:
',通用软件维护投入:'
},
{
type
:
'number'
,
value
:
''
,
placeholder
:
'万元'
,
field
:
'SFTAUTH14'
},
{
type
:
'text'
,
value
:
''
},
{
type
:
'brspace'
},
{
type
:
'text'
,
value
:
'专用软件采购(开发)投入:'
},
{
type
:
'number'
,
value
:
''
,
placeholder
:
'万元'
,
field
:
'SFTAUTH15'
},
{
type
:
'text'
,
value
:
',专用软件维护投入:'
},
{
type
:
'number'
,
value
:
''
,
placeholder
:
'万元'
,
field
:
'SFTAUTH16'
},
{
type
:
'text'
,
value
:
''
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'(7)是否曾获得过“全国软件正版化示范单位”或“全国版权示范单位(软件正版化)”称号:'
},
{
type
:
'radio-group'
,
field
:
'C20B001'
,
options
:
[
'是'
,
'否'
]
},
{
type
:
'br'
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'<strong>通用软件使用情况统计:</strong>'
},
{
type
:
'br'
},
{
serialNumber
:
'1001'
,
code
:
'DSKOS'
,
type
:
'MultiColumnTable'
,
project
:
'桌面操作系统正版化率'
,
content
:
[
{
name
:
"正版化率(%)"
,
formType
:
'number'
,
field
:
"C20A001"
},
{
name
:
"新增采购(万元)"
,
formType
:
'number'
,
field
:
"C20A002"
},
{
name
:
"升级维护费用(万元)"
,
formType
:
"number"
,
field
:
"C20A003"
},
{
name
:
"生成厂商名称"
,
formType
:
"input"
,
field
:
"DSKOS1"
},
{
name
:
"生成厂商国别"
,
formType
:
"input"
,
field
:
"DSKOS2"
},
{
name
:
"产品名称"
,
formType
:
"input"
,
field
:
"DSKOS3"
},
{
name
:
"装机量(台)"
,
formType
:
"number"
,
field
:
"DSKOS4"
},
{
name
:
"许可数量是否限量"
,
formType
:
'radio-group'
,
field
:
"DSKOS5"
,
options
:
[
"不限制许可数量"
,
"有限制许可数量"
]
},
{
name
:
"许可数量"
,
formType
:
"number"
,
field
:
"DSKOS6"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"DSKOS100"
},
{
name
:
'正版化率(%)'
,
formType
:
'number'
,
field
:
'C20A001'
},
{
name
:
'新增采购(万元)'
,
formType
:
'number'
,
field
:
'C20A002'
},
{
name
:
'升级维护费用(万元)'
,
formType
:
'number'
,
field
:
'C20A003'
},
{
name
:
'生成厂商名称'
,
formType
:
'input'
,
field
:
'DSKOS1'
},
{
name
:
'生成厂商国别'
,
formType
:
'input'
,
field
:
'DSKOS2'
},
{
name
:
'产品名称'
,
formType
:
'input'
,
field
:
'DSKOS3'
},
{
name
:
'装机量(台)'
,
formType
:
'number'
,
field
:
'DSKOS4'
},
{
name
:
'许可数量是否限量'
,
formType
:
'radio-group'
,
field
:
'DSKOS5'
,
options
:
[
'不限制许可数量'
,
'有限制许可数量'
]
},
{
name
:
'许可数量'
,
formType
:
'number'
,
field
:
'DSKOS6'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'DSKOS100'
},
],
},
{
serialNumber
:
"1002"
,
code
:
"OFFICE"
,
type
:
"MultiColumnTable"
,
project
:
"文字处理软件正版化率"
,
serialNumber
:
'1002'
,
code
:
'OFFICE'
,
type
:
'MultiColumnTable'
,
project
:
'文字处理软件正版化率'
,
content
:
[
{
name
:
"正版化率"
,
formType
:
'number'
,
field
:
"C20A004"
},
{
name
:
"新增采购(万元)"
,
formType
:
'number'
,
field
:
"C20A005"
},
{
name
:
"升级维护费用(万元)"
,
formType
:
"number"
,
field
:
"C20A006"
},
{
name
:
"生成厂商名称"
,
formType
:
"input"
,
field
:
"OFFICE1"
},
{
name
:
"生成厂商国别"
,
formType
:
"input"
,
field
:
"OFFICE2"
},
{
name
:
"产品名称"
,
formType
:
"input"
,
field
:
"OFFICE3"
},
{
name
:
"装机量(台)"
,
formType
:
"number"
,
field
:
"OFFICE4"
},
{
name
:
"许可数量是否限量"
,
formType
:
'radio-group'
,
field
:
"OFFICE5"
,
options
:
[
"不限制许可数量"
,
"有限制许可数量"
]
},
{
name
:
"许可数量"
,
formType
:
"number"
,
field
:
"OFFICE6"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"OFFICE100"
},
{
name
:
'正版化率'
,
formType
:
'number'
,
field
:
'C20A004'
},
{
name
:
'新增采购(万元)'
,
formType
:
'number'
,
field
:
'C20A005'
},
{
name
:
'升级维护费用(万元)'
,
formType
:
'number'
,
field
:
'C20A006'
},
{
name
:
'生成厂商名称'
,
formType
:
'input'
,
field
:
'OFFICE1'
},
{
name
:
'生成厂商国别'
,
formType
:
'input'
,
field
:
'OFFICE2'
},
{
name
:
'产品名称'
,
formType
:
'input'
,
field
:
'OFFICE3'
},
{
name
:
'装机量(台)'
,
formType
:
'number'
,
field
:
'OFFICE4'
},
{
name
:
'许可数量是否限量'
,
formType
:
'radio-group'
,
field
:
'OFFICE5'
,
options
:
[
'不限制许可数量'
,
'有限制许可数量'
]
},
{
name
:
'许可数量'
,
formType
:
'number'
,
field
:
'OFFICE6'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'OFFICE100'
},
],
},
{
serialNumber
:
"1003"
,
code
:
"SVROS"
,
type
:
"MultiColumnTable"
,
project
:
"服务器操作系统正版化率"
,
serialNumber
:
'1003'
,
code
:
'SVROS'
,
type
:
'MultiColumnTable'
,
project
:
'服务器操作系统正版化率'
,
content
:
[
{
name
:
"正版化率"
,
formType
:
'number'
,
field
:
"C20A007"
},
{
name
:
"新增采购(万元)"
,
formType
:
'number'
,
field
:
"C20A008"
},
{
name
:
"升级维护费用(万元)"
,
formType
:
"number"
,
field
:
"C20A009"
},
{
name
:
"生成厂商名称"
,
formType
:
"input"
,
field
:
"SVROS1"
},
{
name
:
"生成厂商国别"
,
formType
:
"input"
,
field
:
"SVROS2"
},
{
name
:
"产品名称"
,
formType
:
"input"
,
field
:
"SVROS3"
},
{
name
:
"装机量(台)"
,
formType
:
"number"
,
field
:
"SVROS4"
},
{
name
:
"许可数量是否限量"
,
formType
:
'radio-group'
,
field
:
"SVROS5"
,
options
:
[
"不限制许可数量"
,
"有限制许可数量"
]
},
{
name
:
"许可数量"
,
formType
:
"number"
,
field
:
"SVROS6"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"SVROS100"
},
{
name
:
'正版化率'
,
formType
:
'number'
,
field
:
'C20A007'
},
{
name
:
'新增采购(万元)'
,
formType
:
'number'
,
field
:
'C20A008'
},
{
name
:
'升级维护费用(万元)'
,
formType
:
'number'
,
field
:
'C20A009'
},
{
name
:
'生成厂商名称'
,
formType
:
'input'
,
field
:
'SVROS1'
},
{
name
:
'生成厂商国别'
,
formType
:
'input'
,
field
:
'SVROS2'
},
{
name
:
'产品名称'
,
formType
:
'input'
,
field
:
'SVROS3'
},
{
name
:
'装机量(台)'
,
formType
:
'number'
,
field
:
'SVROS4'
},
{
name
:
'许可数量是否限量'
,
formType
:
'radio-group'
,
field
:
'SVROS5'
,
options
:
[
'不限制许可数量'
,
'有限制许可数量'
]
},
{
name
:
'许可数量'
,
formType
:
'number'
,
field
:
'SVROS6'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'SVROS100'
},
],
},
{
serialNumber
:
"1004"
,
code
:
"DB"
,
type
:
"MultiColumnTable"
,
project
:
"数据库系统正版化率"
,
serialNumber
:
'1004'
,
code
:
'DB'
,
type
:
'MultiColumnTable'
,
project
:
'数据库系统正版化率'
,
content
:
[
{
name
:
"正版化率"
,
formType
:
'number'
,
field
:
"C20A010"
},
{
name
:
"新增采购(万元)"
,
formType
:
'number'
,
field
:
"C20A011"
},
{
name
:
"升级维护费用(万元)"
,
formType
:
"number"
,
field
:
"C20A012"
},
{
name
:
"生成厂商名称"
,
formType
:
"input"
,
field
:
"DB1"
},
{
name
:
"生成厂商国别"
,
formType
:
"input"
,
field
:
"DB2"
},
{
name
:
"产品名称"
,
formType
:
"input"
,
field
:
"DB3"
},
{
name
:
"装机量(台)"
,
formType
:
"number"
,
field
:
"DB4"
},
{
name
:
"许可数量是否限量"
,
formType
:
'radio-group'
,
field
:
"DB5"
,
options
:
[
"不限制许可数量"
,
"有限制许可数量"
]
},
{
name
:
"许可数量"
,
formType
:
"number"
,
field
:
"DB6"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"DB100"
},
{
name
:
'正版化率'
,
formType
:
'number'
,
field
:
'C20A010'
},
{
name
:
'新增采购(万元)'
,
formType
:
'number'
,
field
:
'C20A011'
},
{
name
:
'升级维护费用(万元)'
,
formType
:
'number'
,
field
:
'C20A012'
},
{
name
:
'生成厂商名称'
,
formType
:
'input'
,
field
:
'DB1'
},
{
name
:
'生成厂商国别'
,
formType
:
'input'
,
field
:
'DB2'
},
{
name
:
'产品名称'
,
formType
:
'input'
,
field
:
'DB3'
},
{
name
:
'装机量(台)'
,
formType
:
'number'
,
field
:
'DB4'
},
{
name
:
'许可数量是否限量'
,
formType
:
'radio-group'
,
field
:
'DB5'
,
options
:
[
'不限制许可数量'
,
'有限制许可数量'
]
},
{
name
:
'许可数量'
,
formType
:
'number'
,
field
:
'DB6'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'DB100'
},
],
},
{
serialNumber
:
"1005"
,
code
:
"MDWR"
,
type
:
"MultiColumnTable"
,
project
:
"中间件系统正版化率"
,
serialNumber
:
'1005'
,
code
:
'MDWR'
,
type
:
'MultiColumnTable'
,
project
:
'中间件系统正版化率'
,
content
:
[
{
name
:
"正版化率"
,
formType
:
'number'
,
field
:
"C20A013"
},
{
name
:
"新增采购(万元)"
,
formType
:
'number'
,
field
:
"C20A014"
},
{
name
:
"升级维护费用(万元)"
,
formType
:
"number"
,
field
:
"C20A015"
},
{
name
:
"生成厂商名称"
,
formType
:
"input"
,
field
:
"MDWR1"
},
{
name
:
"生成厂商国别"
,
formType
:
"input"
,
field
:
"MDWR2"
},
{
name
:
"产品名称"
,
formType
:
"input"
,
field
:
"MDWR3"
},
{
name
:
"装机量(台)"
,
formType
:
"number"
,
field
:
"MDWR4"
},
{
name
:
"许可数量是否限量"
,
formType
:
'radio-group'
,
field
:
"MDWR5"
,
options
:
[
"不限制许可数量"
,
"有限制许可数量"
]
},
{
name
:
"许可数量"
,
formType
:
"number"
,
field
:
"MDWR6"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"MDWR100"
},
{
name
:
'正版化率'
,
formType
:
'number'
,
field
:
'C20A013'
},
{
name
:
'新增采购(万元)'
,
formType
:
'number'
,
field
:
'C20A014'
},
{
name
:
'升级维护费用(万元)'
,
formType
:
'number'
,
field
:
'C20A015'
},
{
name
:
'生成厂商名称'
,
formType
:
'input'
,
field
:
'MDWR1'
},
{
name
:
'生成厂商国别'
,
formType
:
'input'
,
field
:
'MDWR2'
},
{
name
:
'产品名称'
,
formType
:
'input'
,
field
:
'MDWR3'
},
{
name
:
'装机量(台)'
,
formType
:
'number'
,
field
:
'MDWR4'
},
{
name
:
'许可数量是否限量'
,
formType
:
'radio-group'
,
field
:
'MDWR5'
,
options
:
[
'不限制许可数量'
,
'有限制许可数量'
]
},
{
name
:
'许可数量'
,
formType
:
'number'
,
field
:
'MDWR6'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'MDWR100'
},
],
},
{
serialNumber
:
"1006"
,
code
:
"ANTIVRS"
,
type
:
"MultiColumnTable"
,
project
:
"防病毒软件正版化率"
,
serialNumber
:
'1006'
,
code
:
'ANTIVRS'
,
type
:
'MultiColumnTable'
,
project
:
'防病毒软件正版化率'
,
content
:
[
{
name
:
"正版化率"
,
formType
:
'number'
,
field
:
"C20A016"
},
{
name
:
"新增采购(万元)"
,
formType
:
'number'
,
field
:
"C20A017"
},
{
name
:
"升级维护费用(万元)"
,
formType
:
"number"
,
field
:
"C20A018"
},
{
name
:
"生成厂商名称"
,
formType
:
"input"
,
field
:
"ANTIVRS1"
},
{
name
:
"生成厂商国别"
,
formType
:
"input"
,
field
:
"ANTIVRS2"
},
{
name
:
"产品名称"
,
formType
:
"input"
,
field
:
"ANTIVRS3"
},
{
name
:
"装机量(台)"
,
formType
:
"number"
,
field
:
"ANTIVRS4"
},
{
name
:
"许可数量是否限量"
,
formType
:
'radio-group'
,
field
:
"ANTIVRS5"
,
options
:
[
"不限制许可数量"
,
"有限制许可数量"
]
},
{
name
:
"许可数量"
,
formType
:
"number"
,
field
:
"ANTIVRS6"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"ANTIVRS100"
},
{
name
:
'正版化率'
,
formType
:
'number'
,
field
:
'C20A016'
},
{
name
:
'新增采购(万元)'
,
formType
:
'number'
,
field
:
'C20A017'
},
{
name
:
'升级维护费用(万元)'
,
formType
:
'number'
,
field
:
'C20A018'
},
{
name
:
'生成厂商名称'
,
formType
:
'input'
,
field
:
'ANTIVRS1'
},
{
name
:
'生成厂商国别'
,
formType
:
'input'
,
field
:
'ANTIVRS2'
},
{
name
:
'产品名称'
,
formType
:
'input'
,
field
:
'ANTIVRS3'
},
{
name
:
'装机量(台)'
,
formType
:
'number'
,
field
:
'ANTIVRS4'
},
{
name
:
'许可数量是否限量'
,
formType
:
'radio-group'
,
field
:
'ANTIVRS5'
,
options
:
[
'不限制许可数量'
,
'有限制许可数量'
]
},
{
name
:
'许可数量'
,
formType
:
'number'
,
field
:
'ANTIVRS6'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'ANTIVRS100'
},
],
},
],
},
{
serialNumber
:
"2"
,
project
:
"硬件产品使用情况"
,
serialNumber
:
'2'
,
project
:
'硬件产品使用情况'
,
code
:
'HDWR'
,
content
:
[
{
type
:
"text"
,
value
:
"<strong>硬件产品整体情况:</strong>"
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"台式计算机:"
},
{
type
:
"number"
,
value
:
""
,
placeholder
:
"台"
,
field
:
"HDWR1"
},
{
type
:
"text"
,
value
:
",便携式计算机:"
},
{
type
:
"number"
,
value
:
""
,
placeholder
:
"台"
,
field
:
"HDWR2"
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"服务器及主机:"
},
{
type
:
"number"
,
value
:
""
,
placeholder
:
"台"
,
field
:
"HDWR3"
},
{
type
:
"text"
,
value
:
",其中使用时间超过8年的:"
},
{
type
:
"number"
,
value
:
""
,
placeholder
:
"台"
,
field
:
"COL11"
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"存储设备(磁盘阵列设备):"
},
{
type
:
"number"
,
value
:
""
,
placeholder
:
"台"
,
field
:
"HDWR5"
},
{
type
:
"text"
,
value
:
",其中使用时间超过8年的:"
},
{
type
:
"number"
,
value
:
""
,
placeholder
:
"台"
,
field
:
"HDWR12"
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"网络设备:"
},
{
type
:
"number"
,
value
:
""
,
placeholder
:
"台"
,
field
:
"HDWR7"
},
{
type
:
"text"
,
value
:
",其中使用时间超过10年的:"
},
{
type
:
"number"
,
value
:
""
,
placeholder
:
"台"
,
field
:
"HDWR13"
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"信息安全设备:"
},
{
type
:
"number"
,
value
:
""
,
placeholder
:
"台"
,
field
:
"HDWR9"
},
{
type
:
"text"
,
value
:
",其中使用时间超过6年的:"
},
{
type
:
"number"
,
value
:
""
,
placeholder
:
"台"
,
field
:
"HDWR10"
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"硬件产品整体情况备注"
},
{
type
:
"textarea"
,
value
:
""
,
placeholder
:
""
,
field
:
"HDWR11"
},
{
type
:
"br"
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"<strong>硬件设备使用情况统计(每类硬件只填写使用数量最多的5种):</strong>"
},
{
serialNumber
:
"2001"
,
code
:
"DSK"
,
type
:
"MultiColumnTable"
,
project
:
"台式计算机"
,
{
type
:
'text'
,
value
:
'<strong>硬件产品整体情况:</strong>'
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'台式计算机:'
},
{
type
:
'number'
,
value
:
''
,
placeholder
:
'台'
,
field
:
'HDWR1'
},
{
type
:
'text'
,
value
:
',便携式计算机:'
},
{
type
:
'number'
,
value
:
''
,
placeholder
:
'台'
,
field
:
'HDWR2'
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'服务器及主机:'
},
{
type
:
'number'
,
value
:
''
,
placeholder
:
'台'
,
field
:
'HDWR3'
},
{
type
:
'text'
,
value
:
',其中使用时间超过8年的:'
},
{
type
:
'number'
,
value
:
''
,
placeholder
:
'台'
,
field
:
'COL11'
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'存储设备(磁盘阵列设备):'
},
{
type
:
'number'
,
value
:
''
,
placeholder
:
'台'
,
field
:
'HDWR5'
},
{
type
:
'text'
,
value
:
',其中使用时间超过8年的:'
},
{
type
:
'number'
,
value
:
''
,
placeholder
:
'台'
,
field
:
'HDWR12'
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'网络设备:'
},
{
type
:
'number'
,
value
:
''
,
placeholder
:
'台'
,
field
:
'HDWR7'
},
{
type
:
'text'
,
value
:
',其中使用时间超过10年的:'
},
{
type
:
'number'
,
value
:
''
,
placeholder
:
'台'
,
field
:
'HDWR13'
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'信息安全设备:'
},
{
type
:
'number'
,
value
:
''
,
placeholder
:
'台'
,
field
:
'HDWR9'
},
{
type
:
'text'
,
value
:
',其中使用时间超过6年的:'
},
{
type
:
'number'
,
value
:
''
,
placeholder
:
'台'
,
field
:
'HDWR10'
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'硬件产品整体情况备注'
},
{
type
:
'textarea'
,
value
:
''
,
placeholder
:
''
,
field
:
'HDWR11'
},
{
type
:
'br'
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'<strong>硬件设备使用情况统计(每类硬件只填写使用数量最多的5种):</strong>'
},
{
serialNumber
:
'2001'
,
code
:
'DSK'
,
type
:
'MultiColumnTable'
,
project
:
'台式计算机'
,
content
:
[
{
name
:
"厂商名称:"
,
formType
:
'input'
,
field
:
"DSK1"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"DSK2"
},
{
name
:
"产品名称:"
,
formType
:
"input"
,
field
:
"DSK3"
},
{
name
:
"数量(台)"
,
formType
:
"number"
,
field
:
"DSK4"
},
{
name
:
"承载重要信息系统情况"
,
formType
:
"input"
,
field
:
"C24A001"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"DSK100"
},
{
name
:
'厂商名称:'
,
formType
:
'input'
,
field
:
'DSK1'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'DSK2'
},
{
name
:
'产品名称:'
,
formType
:
'input'
,
field
:
'DSK3'
},
{
name
:
'数量(台)'
,
formType
:
'number'
,
field
:
'DSK4'
},
{
name
:
'承载重要信息系统情况'
,
formType
:
'input'
,
field
:
'C24A001'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'DSK100'
},
],
},
{
serialNumber
:
"2002"
,
code
:
"LPTP"
,
type
:
"MultiColumnTable"
,
project
:
"便携式计算机"
,
serialNumber
:
'2002'
,
code
:
'LPTP'
,
type
:
'MultiColumnTable'
,
project
:
'便携式计算机'
,
content
:
[
{
name
:
"厂商名称:"
,
formType
:
'input'
,
field
:
"LPTP1"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"LPTP2"
},
{
name
:
"产品名称:"
,
formType
:
"input"
,
field
:
"LPTP3"
},
{
name
:
"数量(台)"
,
formType
:
"number"
,
field
:
"LPTP4"
},
{
name
:
"承载重要信息系统情况"
,
formType
:
"input"
,
field
:
"C24A002"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"LPTP100"
},
{
name
:
'厂商名称:'
,
formType
:
'input'
,
field
:
'LPTP1'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'LPTP2'
},
{
name
:
'产品名称:'
,
formType
:
'input'
,
field
:
'LPTP3'
},
{
name
:
'数量(台)'
,
formType
:
'number'
,
field
:
'LPTP4'
},
{
name
:
'承载重要信息系统情况'
,
formType
:
'input'
,
field
:
'C24A002'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'LPTP100'
},
],
},
{
serialNumber
:
"2003"
,
code
:
"BSVR"
,
type
:
"MultiColumnTable"
,
project
:
"大中型机"
,
serialNumber
:
'2003'
,
code
:
'BSVR'
,
type
:
'MultiColumnTable'
,
project
:
'大中型机'
,
content
:
[
{
name
:
"厂商名称:"
,
formType
:
'input'
,
field
:
"BSVR1"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"BSVR2"
},
{
name
:
"产品名称:"
,
formType
:
"input"
,
field
:
"BSVR3"
},
{
name
:
"数量(台)"
,
formType
:
"number"
,
field
:
"BSVR4"
},
{
name
:
"承载重要信息系统情况"
,
formType
:
"input"
,
field
:
"C24A003"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"BSVR100"
},
{
name
:
'厂商名称:'
,
formType
:
'input'
,
field
:
'BSVR1'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'BSVR2'
},
{
name
:
'产品名称:'
,
formType
:
'input'
,
field
:
'BSVR3'
},
{
name
:
'数量(台)'
,
formType
:
'number'
,
field
:
'BSVR4'
},
{
name
:
'承载重要信息系统情况'
,
formType
:
'input'
,
field
:
'C24A003'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'BSVR100'
},
],
},
{
serialNumber
:
"2004"
,
code
:
"SSVR"
,
type
:
"MultiColumnTable"
,
project
:
"小型机"
,
serialNumber
:
'2004'
,
code
:
'SSVR'
,
type
:
'MultiColumnTable'
,
project
:
'小型机'
,
content
:
[
{
name
:
"厂商名称:"
,
formType
:
'input'
,
field
:
"SSVR1"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"SSVR2"
},
{
name
:
"产品名称:"
,
formType
:
"input"
,
field
:
"SSVR3"
},
{
name
:
"数量(台)"
,
formType
:
"number"
,
field
:
"SSVR4"
},
{
name
:
"承载重要信息系统情况"
,
formType
:
"input"
,
field
:
"C24A004"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"SSVR100"
},
{
name
:
'厂商名称:'
,
formType
:
'input'
,
field
:
'SSVR1'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'SSVR2'
},
{
name
:
'产品名称:'
,
formType
:
'input'
,
field
:
'SSVR3'
},
{
name
:
'数量(台)'
,
formType
:
'number'
,
field
:
'SSVR4'
},
{
name
:
'承载重要信息系统情况'
,
formType
:
'input'
,
field
:
'C24A004'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'SSVR100'
},
],
},
{
serialNumber
:
"2005"
,
code
:
"PCSVR"
,
type
:
"MultiColumnTable"
,
project
:
"PC服务器"
,
serialNumber
:
'2005'
,
code
:
'PCSVR'
,
type
:
'MultiColumnTable'
,
project
:
'PC服务器'
,
content
:
[
{
name
:
"厂商名称:"
,
formType
:
'input'
,
field
:
"PCSVR1"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"PCSVR2"
},
{
name
:
"产品名称:"
,
formType
:
"input"
,
field
:
"PCSVR3"
},
{
name
:
"数量(台)"
,
formType
:
"number"
,
field
:
"PCSVR4"
},
{
name
:
"承载重要信息系统情况"
,
formType
:
"input"
,
field
:
"C24A005"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"PCSVR100"
},
{
name
:
'厂商名称:'
,
formType
:
'input'
,
field
:
'PCSVR1'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'PCSVR2'
},
{
name
:
'产品名称:'
,
formType
:
'input'
,
field
:
'PCSVR3'
},
{
name
:
'数量(台)'
,
formType
:
'number'
,
field
:
'PCSVR4'
},
{
name
:
'承载重要信息系统情况'
,
formType
:
'input'
,
field
:
'C24A005'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'PCSVR100'
},
],
},
{
serialNumber
:
"2006"
,
code
:
"STRG"
,
type
:
"MultiColumnTable"
,
project
:
"存储设备"
,
serialNumber
:
'2006'
,
code
:
'STRG'
,
type
:
'MultiColumnTable'
,
project
:
'存储设备'
,
content
:
[
{
name
:
"厂商名称:"
,
formType
:
'input'
,
field
:
"STRG1"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"STRG2"
},
{
name
:
"产品名称:"
,
formType
:
"input"
,
field
:
"STRG3"
},
{
name
:
"数量(台)"
,
formType
:
"number"
,
field
:
"STRG4"
},
{
name
:
"承载重要信息系统情况"
,
formType
:
"input"
,
field
:
"C24A006"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"STRG100"
},
{
name
:
'厂商名称:'
,
formType
:
'input'
,
field
:
'STRG1'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'STRG2'
},
{
name
:
'产品名称:'
,
formType
:
'input'
,
field
:
'STRG3'
},
{
name
:
'数量(台)'
,
formType
:
'number'
,
field
:
'STRG4'
},
{
name
:
'承载重要信息系统情况'
,
formType
:
'input'
,
field
:
'C24A006'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'STRG100'
},
],
},
{
serialNumber
:
"2007"
,
code
:
"NTWK"
,
type
:
"MultiColumnTable"
,
project
:
"网络设备"
,
serialNumber
:
'2007'
,
code
:
'NTWK'
,
type
:
'MultiColumnTable'
,
project
:
'网络设备'
,
content
:
[
{
name
:
"厂商名称:"
,
formType
:
'input'
,
field
:
"NTWK1"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"NTWK2"
},
{
name
:
"产品名称:"
,
formType
:
"input"
,
field
:
"NTWK3"
},
{
name
:
"数量(台)"
,
formType
:
"number"
,
field
:
"NTWK4"
},
{
name
:
"承载重要信息系统情况"
,
formType
:
"input"
,
field
:
"C24A007"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"NTWK100"
},
{
name
:
'厂商名称:'
,
formType
:
'input'
,
field
:
'NTWK1'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'NTWK2'
},
{
name
:
'产品名称:'
,
formType
:
'input'
,
field
:
'NTWK3'
},
{
name
:
'数量(台)'
,
formType
:
'number'
,
field
:
'NTWK4'
},
{
name
:
'承载重要信息系统情况'
,
formType
:
'input'
,
field
:
'C24A007'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'NTWK100'
},
],
},
{
serialNumber
:
"2008"
,
code
:
"INFOSF"
,
type
:
"MultiColumnTable"
,
project
:
"信息安全设备"
,
serialNumber
:
'2008'
,
code
:
'INFOSF'
,
type
:
'MultiColumnTable'
,
project
:
'信息安全设备'
,
content
:
[
{
name
:
"厂商名称:"
,
formType
:
'input'
,
field
:
"INFOSF1"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"INFOSF2"
},
{
name
:
"产品名称:"
,
formType
:
"input"
,
field
:
"INFOSF3"
},
{
name
:
"数量(台)"
,
formType
:
"number"
,
field
:
"INFOSF4"
},
{
name
:
"承载重要信息系统情况"
,
formType
:
"input"
,
field
:
"C24A008"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"INFOSF100"
},
{
name
:
'厂商名称:'
,
formType
:
'input'
,
field
:
'INFOSF1'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'INFOSF2'
},
{
name
:
'产品名称:'
,
formType
:
'input'
,
field
:
'INFOSF3'
},
{
name
:
'数量(台)'
,
formType
:
'number'
,
field
:
'INFOSF4'
},
{
name
:
'承载重要信息系统情况'
,
formType
:
'input'
,
field
:
'C24A008'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'INFOSF100'
},
],
},
],
},
{
serialNumber
:
"3"
,
project
:
"新技术应用情况"
,
serialNumber
:
'3'
,
project
:
'新技术应用情况'
,
code
:
'TB5003'
,
content
:
[
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"<strong>虚拟化和私有云应用情况:</strong>"
},
{
type
:
"br"
},
{
serialNumber
:
"3001"
,
code
:
"SOFTWARE"
,
type
:
"MultiColumnTable"
,
project
:
"虚拟化软件"
,
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'<strong>虚拟化和私有云应用情况:</strong>'
},
{
type
:
'br'
},
{
serialNumber
:
'3001'
,
code
:
'SOFTWARE'
,
type
:
'MultiColumnTable'
,
project
:
'虚拟化软件'
,
content
:
[
{
name
:
"厂商名称:"
,
formType
:
'input'
,
field
:
"C20A019"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"C20A020"
},
{
name
:
"产品名称:"
,
formType
:
"input"
,
field
:
"C20A021"
},
{
name
:
"应用场景简述"
,
formType
:
"input"
,
field
:
"C20A022"
},
{
name
:
"数量(许可)"
,
formType
:
"number"
,
field
:
"C20A023"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"C20A024"
},
{
name
:
'厂商名称:'
,
formType
:
'input'
,
field
:
'C20A019'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'C20A020'
},
{
name
:
'产品名称:'
,
formType
:
'input'
,
field
:
'C20A021'
},
{
name
:
'数量(许可)'
,
formType
:
'number'
,
field
:
'C20A023'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'C20A024'
},
],
},
{
serialNumber
:
"3002"
,
code
:
"CLOUDMANAGE"
,
type
:
"MultiColumnTable"
,
project
:
"云管理软件"
,
serialNumber
:
'3002'
,
code
:
'CLOUDMANAGE'
,
type
:
'MultiColumnTable'
,
project
:
'云管理软件'
,
content
:
[
{
name
:
"厂商名称"
,
formType
:
'input'
,
field
:
"C20A025"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"C20A026"
},
{
name
:
"产品名称"
,
formType
:
"input"
,
field
:
"C20A027"
},
{
name
:
"应用场景简述"
,
formType
:
"input"
,
field
:
"C20A028"
},
{
name
:
"数量(台/套)"
,
formType
:
"number"
,
field
:
"C20A029"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"C20A030"
},
{
name
:
'厂商名称'
,
formType
:
'input'
,
field
:
'C20A025'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'C20A026'
},
{
name
:
'产品名称'
,
formType
:
'input'
,
field
:
'C20A027'
},
{
name
:
'应用场景简述'
,
formType
:
'input'
,
field
:
'C20A028'
},
{
name
:
'数量(台/套)'
,
formType
:
'number'
,
field
:
'C20A029'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'C20A030'
},
],
},
{
type
:
"text"
,
value
:
"<strong>云计算服务应用情况:</strong>"
},
{
type
:
"br"
},
{
type
:
'text'
,
value
:
'<strong>云计算服务应用情况:</strong>'
},
{
type
:
'br'
},
{
serialNumber
:
"3003"
,
code
:
"MACHINE"
,
type
:
"MultiColumnTable"
,
project
:
"云主机"
,
serialNumber
:
'3003'
,
code
:
'MACHINE'
,
type
:
'MultiColumnTable'
,
project
:
'云主机'
,
content
:
[
{
name
:
"厂商名称:"
,
formType
:
'input'
,
field
:
"C20A031"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"C20A032"
},
{
name
:
"产品名称:"
,
formType
:
"input"
,
field
:
"C20A033"
},
{
name
:
"云主机应用场景简述"
,
formType
:
"input"
,
field
:
"C20A034"
},
{
name
:
"数量(台)"
,
formType
:
"number"
,
field
:
"C20A035"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"C20A036"
},
{
name
:
'厂商名称:'
,
formType
:
'input'
,
field
:
'C20A031'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'C20A032'
},
{
name
:
'产品名称:'
,
formType
:
'input'
,
field
:
'C20A033'
},
{
name
:
'云主机应用场景简述'
,
formType
:
'input'
,
field
:
'C20A034'
},
{
name
:
'数量(台)'
,
formType
:
'number'
,
field
:
'C20A035'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'C20A036'
},
],
},
{
type
:
"br"
},
{
type
:
'br'
},
{
serialNumber
:
"3004"
,
code
:
"STORAGE"
,
type
:
"MultiColumnTable"
,
project
:
"云存储"
,
serialNumber
:
'3004'
,
code
:
'STORAGE'
,
type
:
'MultiColumnTable'
,
project
:
'云存储'
,
content
:
[
{
name
:
"厂商名称:"
,
formType
:
'input'
,
field
:
"C20A037"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"C20A038"
},
{
name
:
"产品名称:"
,
formType
:
"input"
,
field
:
"C20A039"
},
{
name
:
"应用场景简述"
,
formType
:
"input"
,
field
:
"C20A040"
},
{
name
:
"数量(T)"
,
formType
:
"number"
,
field
:
"C20A041"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"C20A042"
},
{
name
:
'厂商名称:'
,
formType
:
'input'
,
field
:
'C20A037'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'C20A038'
},
{
name
:
'产品名称:'
,
formType
:
'input'
,
field
:
'C20A039'
},
{
name
:
'应用场景简述'
,
formType
:
'input'
,
field
:
'C20A040'
},
{
name
:
'数量(TB)'
,
formType
:
'number'
,
field
:
'C20A041'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'C20A042'
},
],
},
{
type
:
"br"
},
{
type
:
'br'
},
{
serialNumber
:
"3005"
,
code
:
"CDB"
,
type
:
"MultiColumnTable"
,
project
:
"云数据库"
,
serialNumber
:
'3005'
,
code
:
'CDB'
,
type
:
'MultiColumnTable'
,
project
:
'云数据库'
,
content
:
[
{
name
:
"厂商名称:"
,
formType
:
'input'
,
field
:
"C20A043"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"C20A044"
},
{
name
:
"产品名称:"
,
formType
:
"input"
,
field
:
"C20A045"
},
{
name
:
"应用场景简述"
,
formType
:
"input"
,
field
:
"C20A046"
},
{
name
:
"数量(套)"
,
formType
:
"number"
,
field
:
"C20A047"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"C20A048"
},
{
name
:
'厂商名称:'
,
formType
:
'input'
,
field
:
'C20A043'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'C20A044'
},
{
name
:
'产品名称:'
,
formType
:
'input'
,
field
:
'C20A045'
},
{
name
:
'应用场景简述'
,
formType
:
'input'
,
field
:
'C20A046'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'C20A048'
},
],
},
{
type
:
"br"
},
{
type
:
'br'
},
{
serialNumber
:
"3006"
,
code
:
"NET"
,
type
:
"MultiColumnTable"
,
project
:
"云带宽(含CDN)"
,
serialNumber
:
'3006'
,
code
:
'NET'
,
type
:
'MultiColumnTable'
,
project
:
'云带宽(含CDN)'
,
content
:
[
{
name
:
"厂商名称:"
,
formType
:
'input'
,
field
:
"C20A049"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"C20A050"
},
{
name
:
"产品名称:"
,
formType
:
"input"
,
field
:
"C20A051"
},
{
name
:
"应用场景简述"
,
formType
:
"input"
,
field
:
"C20A052"
},
{
name
:
"数量(M)"
,
formType
:
"number"
,
field
:
"C20A053"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"C20A054"
},
{
name
:
'厂商名称:'
,
formType
:
'input'
,
field
:
'C20A049'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'C20A050'
},
{
name
:
'产品名称:'
,
formType
:
'input'
,
field
:
'C20A051'
},
{
name
:
'应用场景简述'
,
formType
:
'input'
,
field
:
'C20A052'
},
{
name
:
'数量(M)'
,
formType
:
'number'
,
field
:
'C20A053'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'C20A054'
},
],
},
{
type
:
"br"
},
{
type
:
'br'
},
{
serialNumber
:
"3007"
,
code
:
"SECURITY"
,
type
:
"MultiColumnTable"
,
project
:
"云安全"
,
serialNumber
:
'3007'
,
code
:
'SECURITY'
,
type
:
'MultiColumnTable'
,
project
:
'云安全'
,
content
:
[
{
name
:
"厂商名称:"
,
formType
:
"input"
,
field
:
"C20A055"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"C20A056"
},
{
name
:
"产品或服务名称"
,
formType
:
'input'
,
field
:
"C20A057"
},
{
name
:
"应用场景简述"
,
formType
:
"input"
,
field
:
"C20A058"
},
{
name
:
"数量(许可)"
,
formType
:
"number"
,
field
:
"C20A059"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"C20A060"
},
{
name
:
'厂商名称:'
,
formType
:
'input'
,
field
:
'C20A055'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'C20A056'
},
{
name
:
'产品或服务名称'
,
formType
:
'input'
,
field
:
'C20A057'
},
{
name
:
'应用场景简述'
,
formType
:
'input'
,
field
:
'C20A058'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'C20A060'
},
],
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"<strong>大数据和人工智能产品及服务应用情况:</strong>"
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'<strong>大数据和人工智能产品及服务应用情况:</strong>'
},
{
serialNumber
:
"3008"
,
code
:
"PRODUCT"
,
type
:
"MultiColumnTable"
,
project
:
"大数据产品"
,
serialNumber
:
'3008'
,
code
:
'PRODUCT'
,
type
:
'MultiColumnTable'
,
project
:
'大数据产品'
,
content
:
[
{
name
:
"厂商名称:"
,
formType
:
"input"
,
field
:
"C20A061"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"C20A062"
},
{
name
:
"产品或服务名称"
,
formType
:
'input'
,
field
:
"C20A063"
},
{
name
:
"应用场景简述"
,
formType
:
"input"
,
field
:
"C20A064"
},
{
name
:
"数量(许可)"
,
formType
:
"number"
,
field
:
"C20A065"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"C20A066"
},
{
name
:
'厂商名称:'
,
formType
:
'input'
,
field
:
'C20A061'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'C20A062'
},
{
name
:
'产品或服务名称'
,
formType
:
'input'
,
field
:
'C20A063'
},
{
name
:
'应用场景简述'
,
formType
:
'input'
,
field
:
'C20A064'
},
{
name
:
'数量(台/套)'
,
formType
:
'number'
,
field
:
'C20A065'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'C20A066'
},
],
},
{
serialNumber
:
"3009"
,
code
:
"DATASERVICE"
,
type
:
"MultiColumnTable"
,
project
:
"数据服务"
,
serialNumber
:
'3009'
,
code
:
'DATASERVICE'
,
type
:
'MultiColumnTable'
,
project
:
'数据服务'
,
content
:
[
{
name
:
"产品名称:"
,
formType
:
"input"
,
field
:
"C20A067"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"C20A068"
},
{
name
:
"产品或服务名称"
,
formType
:
'input'
,
field
:
"C20A069"
},
{
name
:
"应用场景简述"
,
formType
:
"input"
,
field
:
"C20A070"
},
{
name
:
"数量(许可)"
,
formType
:
"number"
,
field
:
"C20A071"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"C20A072"
},
{
name
:
'产品名称:'
,
formType
:
'input'
,
field
:
'C20A067'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'C20A068'
},
{
name
:
'产品或服务名称'
,
formType
:
'input'
,
field
:
'C20A069'
},
{
name
:
'应用场景简述'
,
formType
:
'input'
,
field
:
'C20A070'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'C20A072'
},
],
},
{
serialNumber
:
"30010"
,
code
:
"AIPRODUCT"
,
type
:
"MultiColumnTable"
,
project
:
"人工智能产品"
,
serialNumber
:
'30010'
,
code
:
'AIPRODUCT'
,
type
:
'MultiColumnTable'
,
project
:
'人工智能产品'
,
content
:
[
{
name
:
"厂商名称:"
,
formType
:
"input"
,
field
:
"C20A073"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"C20A074"
},
{
name
:
"产品或服务名称"
,
formType
:
'input'
,
field
:
"C20A075"
},
{
name
:
"应用场景简述"
,
formType
:
"input"
,
field
:
"C20A076"
},
{
name
:
"数量(许可)"
,
formType
:
"number"
,
field
:
"C20A077"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"C20A078"
},
{
name
:
'厂商名称:'
,
formType
:
'input'
,
field
:
'C20A073'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'C20A074'
},
{
name
:
'产品或服务名称'
,
formType
:
'input'
,
field
:
'C20A075'
},
{
name
:
'应用场景简述'
,
formType
:
'input'
,
field
:
'C20A076'
},
{
name
:
'数量(台/套)'
,
formType
:
'number'
,
field
:
'C20A077'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'C20A078'
},
],
},
{
serialNumber
:
"30011"
,
code
:
"AISERVICE"
,
type
:
"MultiColumnTable"
,
project
:
"人工智能服务"
,
serialNumber
:
'30011'
,
code
:
'AISERVICE'
,
type
:
'MultiColumnTable'
,
project
:
'人工智能服务'
,
content
:
[
{
name
:
"厂商名称:"
,
formType
:
"input"
,
field
:
"C20A079"
},
{
name
:
"厂商国别"
,
formType
:
'input'
,
field
:
"C20A081"
},
{
name
:
"产品或服务名称"
,
formType
:
'input'
,
field
:
"C20A082"
},
{
name
:
"应用场景简述"
,
formType
:
"input"
,
field
:
"C20A083"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"C20A085"
},
{
name
:
'厂商名称:'
,
formType
:
'input'
,
field
:
'C20A079'
},
{
name
:
'厂商国别'
,
formType
:
'input'
,
field
:
'C20A081'
},
{
name
:
'产品或服务名称'
,
formType
:
'input'
,
field
:
'C20A082'
},
{
name
:
'应用场景简述'
,
formType
:
'input'
,
field
:
'C20A083'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'C20A085'
},
],
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"<strong> 区块链技术应用情况</strong>"
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'<strong> 区块链技术应用情况</strong>'
},
{
serialNumber
:
"30012"
,
code
:
"BLOCKCHAIN"
,
type
:
"MultiColumnTable"
,
project
:
"区块链技术应用"
,
serialNumber
:
'30012'
,
code
:
'BLOCKCHAIN'
,
type
:
'MultiColumnTable'
,
project
:
'区块链技术应用'
,
content
:
[
{
name
:
"应用系统名称"
,
formType
:
'input'
,
field
:
"C20A086"
},
{
name
:
"部署形式"
,
formType
:
'radio-group'
,
field
:
"C20A087"
,
options
:
[
"私有链"
,
"联盟链"
,
"公有链"
]
},
{
name
:
"应用场景简述"
,
formType
:
"input"
,
field
:
"C20A088"
},
{
name
:
"建设方或运营方名称"
,
formType
:
"input"
,
field
:
"C20A089"
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"C20A090"
},
{
name
:
'应用系统名称'
,
formType
:
'input'
,
field
:
'C20A086'
},
{
name
:
'部署形式'
,
formType
:
'radio-group'
,
field
:
'C20A087'
,
options
:
[
'私有链'
,
'联盟链'
,
'公有链'
]
},
{
name
:
'应用场景简述'
,
formType
:
'input'
,
field
:
'C20A088'
},
{
name
:
'建设方或运营方名称'
,
formType
:
'input'
,
field
:
'C20A089'
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'C20A090'
},
],
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"<strong>北斗系统应用情况:</strong>"
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'<strong>北斗系统应用情况:</strong>'
},
{
serialNumber
:
"30013"
,
code
:
"C20B003"
,
type
:
"MultiColumnTable"
,
project
:
"在用授时产品"
,
serialNumber
:
'30013'
,
code
:
'C20B003'
,
type
:
'MultiColumnTable'
,
project
:
'在用授时产品'
,
content
:
[
{
name
:
"授时产品(含服务)名称"
,
formType
:
'input'
,
field
:
"C20B004"
},
{
name
:
"厂商及型号"
,
formType
:
"input"
,
field
:
"C20B005"
},
{
name
:
"产品数量"
,
formType
:
"number"
,
field
:
"C20B006"
},
{
name
:
"应用场景简述"
,
formType
:
"input"
,
field
:
"C20B007"
},
{
name
:
"是否主用北斗"
,
formType
:
"radio-group"
,
field
:
"C20B008"
,
options
:
[
"是"
,
"否"
]
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"C20B009"
},
{
name
:
'授时产品(含服务)名称'
,
formType
:
'input'
,
field
:
'C20B004'
},
{
name
:
'厂商及型号'
,
formType
:
'input'
,
field
:
'C20B005'
},
{
name
:
'产品数量(台/项)'
,
formType
:
'number'
,
field
:
'C20B006'
},
{
name
:
'应用场景简述'
,
formType
:
'input'
,
field
:
'C20B007'
},
{
name
:
'是否主用北斗'
,
formType
:
'radio-group'
,
field
:
'C20B008'
,
options
:
[
'是'
,
'否'
]
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'C20B009'
},
],
},
{
serialNumber
:
"30014"
,
code
:
"C20B009"
,
type
:
"MultiColumnTable"
,
project
:
"在用的提供定位功能的SDK/API"
,
serialNumber
:
'30014'
,
code
:
'C20B009'
,
type
:
'MultiColumnTable'
,
project
:
'在用的提供定位功能的SDK/API'
,
content
:
[
{
name
:
"授SDK/API名称"
,
formType
:
'input'
,
field
:
"C20B010"
},
{
name
:
"开发商(版本号)"
,
formType
:
"input"
,
field
:
"C20B011"
},
{
name
:
"应用场景简述"
,
formType
:
"number"
,
field
:
"C20B012"
},
{
name
:
"是否主用北斗"
,
formType
:
"radio-group"
,
field
:
"C20B013"
,
options
:
[
"是"
,
"否"
]
},
{
name
:
"备注"
,
formType
:
"input"
,
field
:
"C20B015"
},
{
name
:
'SDK/API名称'
,
formType
:
'input'
,
field
:
'C20B010'
},
{
name
:
'开发商(版本号)'
,
formType
:
'input'
,
field
:
'C20B011'
},
{
name
:
'应用场景简述'
,
formType
:
'number'
,
field
:
'C20B012'
},
{
name
:
'是否主用北斗'
,
formType
:
'radio-group'
,
field
:
'C20B013'
,
options
:
[
'是'
,
'否'
]
},
{
name
:
'备注'
,
formType
:
'input'
,
field
:
'C20B015'
},
],
},
{
type
:
"br"
},
{
type
:
"text"
,
value
:
"<strong>IPv6部署情况:</strong>"
},
{
type
:
"br"
},
{
serialNumber
:
"30014"
,
project
:
"IPv6部署情况"
,
code
:
"C20B016"
,
type
:
"AttachTable"
,
content
:[
{
field
:
'col1'
,
title
:
'类型'
,
width
:
'20%'
,
},{
field
:
'col2'
,
title
:
'Web浏览器数量'
,
width
:
'15%'
,
slots
:
{
default
:
'form_default'
},
},{
field
:
'col3'
,
title
:
'APP客户端数量'
,
width
:
'15%'
,
slots
:
{
default
:
'form_default'
},
},{
field
:
'col4'
,
title
:
'PC客户端数量'
,
width
:
'15%'
,
slots
:
{
default
:
'form_default'
},
},{
field
:
'col5'
,
title
:
'合计数量:'
,
width
:
'15%'
,
slots
:
{
default
:
'form_default'
},
},{
field
:
'col6'
,
title
:
'备注'
,
width
:
'20%'
,
slots
:
{
default
:
'form_default'
},
{
type
:
'br'
},
{
type
:
'text'
,
value
:
'<strong>IPv6部署情况:</strong>'
},
{
type
:
'br'
},
{
serialNumber
:
'30014'
,
project
:
'IPv6部署情况'
,
code
:
'C20B016'
,
type
:
'AttachTable'
,
content
:
[
{
field
:
'col1'
,
title
:
'类型'
,
width
:
'20%'
,
},
{
field
:
'col2'
,
title
:
'Web浏览器数量'
,
width
:
'15%'
,
slots
:
{
default
:
'form_default'
},
},
{
field
:
'col3'
,
title
:
'APP客户端数量'
,
width
:
'15%'
,
slots
:
{
default
:
'form_default'
},
},
{
field
:
'col4'
,
title
:
'PC客户端数量'
,
width
:
'15%'
,
slots
:
{
default
:
'form_default'
},
},
{
field
:
'col5'
,
title
:
'合计数量:'
,
width
:
'15%'
,
slots
:
{
default
:
'form_default'
},
},
{
field
:
'col6'
,
title
:
'备注'
,
width
:
'20%'
,
slots
:
{
default
:
'form_default'
},
},
],
datas
:
[
{
col1
:
"应用系统数量(个)"
,
col2
:
{
value
:
""
,
formType
:
'number'
,
field
:
"C20B017"
},
col3
:
{
value
:
""
,
formType
:
'number'
,
field
:
"C20B018"
},
col4
:
{
value
:
""
,
formType
:
'number'
,
field
:
"C20B019"
},
col5
:
{
value
:
""
,
formType
:
'number'
,
field
:
"C20B020"
},
col6
:
{
value
:
""
,
formType
:
'input'
,
field
:
"C20B021"
},
{
col1
:
'应用系统数量(个)'
,
col2
:
{
value
:
''
,
formType
:
'number'
,
field
:
'C20B017'
},
col3
:
{
value
:
''
,
formType
:
'number'
,
field
:
'C20B018'
},
col4
:
{
value
:
''
,
formType
:
'number'
,
field
:
'C20B019'
},
col5
:
{
value
:
''
,
formType
:
'number'
,
field
:
'C20B020'
},
col6
:
{
value
:
''
,
formType
:
'input'
,
field
:
'C20B021'
},
},
{
col1
:
"完成改造数量(个)"
,
col2
:
{
formType
:
'number'
,
field
:
"C20B022"
},
col3
:
{
formType
:
'number'
,
field
:
"C20B023"
},
col4
:
{
formType
:
'number'
,
field
:
"C20B024"
},
col5
:
{
formType
:
'number'
,
field
:
"C20B025"
},
col6
:
{
formType
:
'input'
,
field
:
"C20B026"
},
{
col1
:
'完成改造数量(个)'
,
col2
:
{
formType
:
'number'
,
field
:
'C20B022'
},
col3
:
{
formType
:
'number'
,
field
:
'C20B023'
},
col4
:
{
formType
:
'number'
,
field
:
'C20B024'
},
col5
:
{
formType
:
'number'
,
field
:
'C20B025'
},
col6
:
{
formType
:
'input'
,
field
:
'C20B026'
},
},
],
calcSum
:{
tp
:
true
,
calcSum
:
{
tp
:
true
,
rows
:
{
"col5"
:[
"col2"
,
"col3"
,
"col4"
]
col5
:
[
'col2'
,
'col3'
,
'col4'
],
},
}
},
},
],
},
{
serialNumber
:
"4"
,
project
:
"信息系统软硬件服务支持情况"
,
serialNumber
:
'4'
,
project
:
'信息系统软硬件服务支持情况'
,
code
:
'SPPRT'
,
content
:
[
{
type
:
"text"
,
value
:
"存在仍在使用供应商已停止支持的软件或硬件平台的重要信息系统:"
},
{
type
:
"br"
},
{
type
:
"yesno"
,
field
:
"SPPRT1"
,
{
type
:
'text'
,
value
:
'存在仍在使用供应商已停止支持的软件或硬件平台的重要信息系统:'
},
{
type
:
'br'
},
{
type
:
'yesno'
,
field
:
'SPPRT1'
,
extraFields
:
[
{
label
:
"总数"
,
formType
:
'number'
,
field
:
"SPPRT2"
},
{
label
:
"具体系统名称"
,
field
:
"SPPRT3"
,
formType
:
"input"
},
{
label
:
"其中已停止支持的硬件平台数量"
,
formType
:
'number'
,
field
:
"SPPRT4"
,
unit
:
"个"
},
{
label
:
"已停止支持的软件平台数量"
,
formType
:
'number'
,
field
:
"SPPRT5"
,
unit
:
"个"
}
{
label
:
'总数'
,
formType
:
'number'
,
field
:
'SPPRT2'
},
{
label
:
'具体系统名称'
,
field
:
'SPPRT3'
,
formType
:
'input'
},
{
label
:
'其中已停止支持的硬件平台数量'
,
formType
:
'number'
,
field
:
'SPPRT4'
,
unit
:
'个'
},
{
label
:
'已停止支持的软件平台数量'
,
formType
:
'number'
,
field
:
'SPPRT5'
,
unit
:
'个'
},
],
}
}
,
],
},
{
type
:
"br"
},
{
type
:
'br'
},
{
serialNumber
:
"5"
,
project
:
"附件"
,
code
:
"ATTACH"
,
type
:
"AttachTable"
,
content
:[
{
field
:
'col1'
,
title
:
'名称'
,
width
:
'20%'
,
},{
field
:
'col2'
,
title
:
'附件索引'
,
slots
:
{
default
:
'form_default'
},
},{
field
:
'col3'
,
title
:
'备注'
,
width
:
'20%'
,
slots
:
{
default
:
'form_default'
},
serialNumber
:
'5'
,
project
:
'附件'
,
code
:
'ATTACH'
,
type
:
'AttachTable'
,
content
:
[
{
field
:
'col1'
,
title
:
'名称'
,
width
:
'20%'
,
},
{
field
:
'col2'
,
title
:
'附件索引'
,
slots
:
{
default
:
'form_default'
},
},
{
field
:
'col3'
,
title
:
'备注'
,
width
:
'20%'
,
slots
:
{
default
:
'form_default'
},
},
],
datas
:
[
{
col1
:
"软件正版化规章制度"
,
col2
:
{
formType
:
'input'
,
field
:
"ATTACH1"
},
col3
:
{
formType
:
'input'
,
field
:
"ATTACH100"
},
}
{
col1
:
'软件正版化规章制度'
,
col2
:
{
formType
:
'input'
,
field
:
'ATTACH1'
},
col3
:
{
formType
:
'input'
,
field
:
'ATTACH100'
},
}
,
],
},
];
zrch-risk-client-39/src/views/baosong/report/components/Tb5.vue
浏览文件 @
d692b0a9
<
template
>
<div
class=
"bank-report-table"
style=
"height: 80vh;"
>
<div
class=
"bank-report-table"
style=
"height: 80vh"
>
<vxe-toolbar>
<template
#
buttons
>
<div
style=
"margin:10px"
>
<div
style=
"margin:
10px"
>
<span
style=
"font-weight: bold"
>
填报任务:
{{
queryParam
?.
taskName
}}
</span>
<span
style=
"font-weight: bold;
margin-left:
20px"
>
表格:
{{
queryParam
?.
tplCode
}}
{{
queryParam
?.
tplName
}}
</span>
<span
style=
"font-weight: bold;
margin-left:
20px"
>
表格:
{{
queryParam
?.
tplCode
}}
{{
queryParam
?.
tplName
}}
</span>
</div>
</
template
>
<
template
#
tools
>
<vxe-button
status=
"primary"
icon=
"vxe-icon-save"
@
click=
"saveBatch()"
>
保存
</vxe-button>
<vxe-button
status=
"primary"
icon=
"vxe-icon-save"
@
click=
"saveBatch()"
>
保存
</vxe-button>
</
template
>
</vxe-toolbar>
<vxe-table
...
...
@@ -25,12 +24,11 @@
<vxe-column
field=
"serialNumber"
title=
"序号"
width=
"80"
></vxe-column>
<vxe-column
field=
"project"
title=
"项目"
width=
"200"
>
<
template
#
default=
"{ row }"
>
<span
style=
"font-weight: bold;
size:
20px"
>
{{
row
.
project
}}
</span>
<span
style=
"font-weight: bold;
size:
20px"
>
{{
row
.
project
}}
</span>
</
template
>
</vxe-column>
<vxe-column
field=
"content"
title=
"内容"
row-resize
>
<
template
#
default=
"{ row }"
>
<
template
#
default=
"{ row }"
>
<div
class=
"content-cell"
>
<template
v-if=
"row.type === 'MultiColumnTable'"
>
<MultiColumnTable
...
...
@@ -39,7 +37,7 @@
:records=
"[]"
:fields=
"row.content"
:ref=
"(el) => setMultiColumnTableRef(el, row.code)"
style=
"margin:
0px;padding:
0px"
style=
"margin:
0px; padding:
0px"
/>
</
template
>
<
template
v-else-if=
"row.type === 'AttachTable'"
>
...
...
@@ -50,18 +48,16 @@
:pcode=
"row.code"
:calcSum=
"row.calcSum"
:ref=
"(el) => setAttachTableRef(el, row.code)"
style=
"margin:
0px;padding:
0px"
style=
"margin:
0px; padding:
0px"
/>
</
template
>
<
template
v-else
>
<template
v-for=
"(item, index) in row.content"
:key=
"index"
>
<span
v-if=
"item.type === 'text'"
v-html=
"item.value"
></span>
<span
v-else-if=
"item.type === 'br'"
><br></span>
<span
v-else-if=
"item.type === 'br'"
><br
/
></span>
<span
v-else-if=
"item.type === 'brspace'"
>
<br>
<template
v-for=
"i in item.value||1"
:key=
"i"
>
</
template
>
<br
/>
<template
v-for=
"i in item.value || 1"
:key=
"i"
>
</
template
>
</span>
<
template
v-else-if=
"item.type === 'AttachTable'"
>
...
...
@@ -72,7 +68,7 @@
:pcode=
"item.code"
:calcSum=
"item.calcSum"
:ref=
"(el) => setAttachTableRef(el, item.code)"
style=
"margin:
0px;padding:
0px"
style=
"margin:
0px; padding:
0px"
/>
</
template
>
...
...
@@ -82,54 +78,52 @@
:records=
"[]"
:fields=
"item.content"
:ref=
"(el) => setMultiColumnTableRef(el, item.code)"
style=
"margin:
0px;padding:
0px"
style=
"margin:
0px; padding:
0px"
/>
</
template
>
<
template
v-else-if=
"item.type === 'yesno'"
>
<vxe-radio-group
v-model=
"formData[row.code +'_'+ item.field]"
>
<vxe-radio
label=
"是"
content=
"是"
>
</vxe-radio>
<vxe-radio-group
v-model=
"formData[row.code + '_' + item.field]"
>
<vxe-radio
label=
"是"
content=
"是"
>
</vxe-radio>
<vxe-radio
label=
"否"
content=
"否"
></vxe-radio>
</vxe-radio-group>
<template
v-if=
"formData[row.code +
'_'+ item.field]==
'是'"
>
<br>
如果是:
<template
v-if=
"formData[row.code +
'_' + item.field] ==
'是'"
>
<br
/
>
如果是:
<template
v-if=
"item.extraField"
>
<span>
{{
item
.
extraField
}}
</span>
<vxe-input
v-model=
"formData[row.code + '_'
+ item.extraField]"
style=
"width: 100px;
"
></vxe-input>
<vxe-input
v-model=
"formData[row.code + '_'
+ item.extraField]"
style=
"width: 100px
"
></vxe-input>
</
template
>
<
template
v-else-if=
"item.extraFields"
>
<template
v-for=
"(ccopt,ccind) in item.extraFields"
:key=
"ccind"
>
<template
v-for=
"(ccopt,
ccind) in item.extraFields"
:key=
"ccind"
>
<span>
{{
ccopt
.
label
}}
:
</span>
<template
v-if=
"ccopt.formType
==
'input'"
>
<vxe-input
v-model=
"formData[row.code + '_'
+ ccopt.field]"
type=
"number"
style=
"width:
250px"
></vxe-input>
<template
v-if=
"ccopt.formType
==
'input'"
>
<vxe-input
v-model=
"formData[row.code + '_'
+ ccopt.field]"
style=
"width:
250px"
></vxe-input>
</
template
>
<
template
v-else
>
<vxe-input
v-model=
"formData[row.code + '_'
+ ccopt.field]"
:type=
"ccopt.formType"
style=
"width:
100px"
></vxe-input>
<vxe-input
v-model=
"formData[row.code + '_'
+ ccopt.field]"
:type=
"ccopt.formType"
style=
"width:
100px"
></vxe-input>
</
template
>
<span
class=
"unit"
>
{{ ccopt.unit }}
</span>
</template>
</template>
</template>
</template>
<span
v-else-if=
"item.type === 'radio-group'"
class=
"radio-group"
>
<vxe-radio-group
v-model=
"formData[row.code +
'_'
+ item.field]"
>
<vxe-radio-group
v-model=
"formData[row.code +
'_'
+ item.field]"
>
<vxe-radio
v-for=
"(opt, optIndex) in item.options"
:key=
"optIndex"
:label=
"opt"
>
{{ opt }}
</vxe-radio>
</vxe-radio-group>
</span>
<span
v-else-if=
"item.type === 'radio-group-extraFields'"
class=
"radio-group"
style=
"width:100%"
>
<vxe-radio-group
v-model=
"formData[row.code +
'_'
+ item.field]"
>
<span
v-else-if=
"item.type === 'radio-group-extraFields'"
class=
"radio-group"
style=
"width:
100%"
>
<vxe-radio-group
v-model=
"formData[row.code +
'_'
+ item.field]"
>
<vxe-radio
v-for=
"(opt, optIndex) in item.options"
:key=
"optIndex"
:label=
"opt.label"
>
{{ opt.label }}
<
template
v-if=
"opt.extraField
&&formData[row.code +'_'+ item.field]==
opt.label"
>
<
template
v-if=
"opt.extraField
&& formData[row.code + '_' + item.field] ==
opt.label"
>
<span>
{{
opt
.
extraField
}}
</span>
<vxe-input
v-model=
"formData[row.code + '_'
+ opt.otereField]"
style=
"width: 200px;"
></vxe-input>
<vxe-input
v-model=
"formData[row.code + '_'
+ opt.otereField]"
style=
"width: 200px"
></vxe-input>
</
template
>
<
template
v-if=
"opt.extraFields
&&formData[row.code +'_'+ item.field]==
opt.label"
>
<template
v-for=
"(ccopt,ccind) in opt.extraFields"
:key=
"ccind"
>
<span>
{{
ccopt
.
label
}}
:
</span>
<vxe-input
v-model=
"formData[row.code + '_'+ ccopt.field]"
style=
"width: 200px;"
></vxe-input>
<
template
v-if=
"opt.extraFields
&& formData[row.code + '_' + item.field] ==
opt.label"
>
<template
v-for=
"(ccopt,
ccind) in opt.extraFields"
:key=
"ccind"
>
<span>
{{
ccopt
.
label
}}
:
</span>
<vxe-input
v-model=
"formData[row.code + '_' + ccopt.field]"
style=
"width: 200px"
></vxe-input>
</
template
>
</template>
</vxe-radio>
...
...
@@ -137,28 +131,19 @@
</span>
<div
v-else-if=
"item.type === 'checkbox-group'"
class=
"checkbox-group"
>
<span
class=
"checkbox-group"
>
<vxe-checkbox-group
v-model=
"formData[row.code+'_'+item.field]"
>
<vxe-checkbox
v-for=
"(opt, optIndex) in item.options"
:key=
"optIndex"
:label=
"opt"
>
{{ opt }}
</vxe-checkbox>
<
template
v-if=
"item.otherOption"
>
<vxe-checkbox
style=
"margin:0px"
>
其它:
</vxe-checkbox>
<vxe-input
v-model=
"formData[row.code + '_'+ item.otereField]"
style=
"width: 100px;"
>
</vxe-input>
</
template
>
</vxe-checkbox-group>
</span>
</div>
<vxe-checkbox-group
v-model=
"formData[row.code + '_' + item.field]"
>
<vxe-checkbox
v-for=
"(opt, optIndex) in item.options"
:key=
"optIndex"
:label=
"opt"
>
{{ opt }}
</vxe-checkbox>
<
template
v-if=
"item.otherOption"
>
<vxe-checkbox
style=
"margin: 0px"
>
其它:
</vxe-checkbox>
<vxe-input
v-model=
"formData[row.code + '_' + item.otereField]"
style=
"width: 100px"
>
</vxe-input>
</
template
>
</vxe-checkbox-group>
</span>
</div>
<
template
v-else
>
<vxe-input
:type=
"item.type"
v-model=
"formData[row.code +'_'+ item.field]"
size=
"mini"
class=
"table-input"
>
</vxe-input>
<vxe-input
:type=
"item.type"
v-model=
"formData[row.code + '_' + item.field]"
size=
"mini"
class=
"table-input"
>
</vxe-input>
<span
class=
"unit"
>
{{
item
.
placeholder
}}
</span>
</
template
>
</template>
...
...
@@ -171,453 +156,424 @@
</template>
<
script
lang=
"ts"
setup
>
import
MultiColumnTable
from
'../tableComponents/MultiColumnTable.vue'
import
AttachTable
from
'../tableComponents/AttachTable.vue'
import
{
tableFormData
}
from
'../../data/tb5.data'
;
import
{
ref
,
reactive
,
nextTick
,
onMounted
,
toRaw
}
from
'vue'
import
{
VxeUI
,
VxeToolbarInstance
,
VxeToolbarPropTypes
}
from
'vxe-table'
import
{
batchSaveOrUpdate
,
queryRecord
,
batchSaveOrUpdateBeforeDelete
}
from
'../../record/BaosongTaskRecord.api'
import
{
queryAllTplItemForUser
}
from
'../../alloc/BaosongTaskAlloc.api'
import
{
allTplItems
}
from
'../../tpl/BaosongTplItem.api'
import
{
useRoute
}
from
'vue-router'
;
const
route
=
useRoute
();
const
tableRef
=
ref
();
const
tplItemMap
=
ref
({});
const
queryParam
=
ref
({
taskId
:
-
1
,
taskName
:
''
,
tplId
:
-
1
,
tplName
:
''
,
tplCode
:
''
})
interface
FormData
{
id
:
number
|
null
taskid
:
number
tplid
:
number
itemid
?:
number
itempid
?:
number
content
:
string
tplcode
:
string
rind
:
number
}
onMounted
(
async
()
=>
{
if
(
route
.
query
.
taskId
)
{
queryParam
.
value
.
taskId
=
Number
(
route
.
query
.
taskId
);
}
if
(
route
.
query
.
taskName
)
{
queryParam
.
value
.
taskName
=
String
(
route
.
query
.
taskName
);
}
if
(
route
.
query
.
tplId
)
{
queryParam
.
value
.
tplId
=
Number
(
route
.
query
.
tplId
);
}
if
(
route
.
query
.
tplName
)
{
queryParam
.
value
.
tplName
=
String
(
route
.
query
.
tplName
);
}
if
(
route
.
query
.
tplCode
)
{
queryParam
.
value
.
tplCode
=
String
(
route
.
query
.
tplCode
);
}
await
setTplItemMap
()
await
setData
();
})
const
loading
=
ref
(
false
)
const
formData
=
reactive
({});
const
formValues
=
ref
<
FormData
[]
>
([])
const
saveBatch
=
async
()
=>
{
try
{
formValues
.
value
=
[]
for
(
const
strKey
in
formData
)
{
const
valData
=
formData
[
strKey
]
if
(
valData
)
{
let
tmpAry
=
strKey
.
split
(
"_"
)
await
setFormValues
(
tmpAry
[
0
],
tmpAry
[
1
],
valData
,
1
)
}
import
MultiColumnTable
from
'../tableComponents/MultiColumnTable.vue'
;
import
AttachTable
from
'../tableComponents/AttachTable.vue'
;
import
{
tableFormData
}
from
'../../data/tb5.data'
;
import
{
ref
,
reactive
,
nextTick
,
onMounted
,
toRaw
}
from
'vue'
;
import
{
VxeUI
,
VxeToolbarInstance
,
VxeToolbarPropTypes
}
from
'vxe-table'
;
import
{
batchSaveOrUpdate
,
queryRecord
,
batchSaveOrUpdateBeforeDelete
}
from
'../../record/BaosongTaskRecord.api'
;
import
{
queryAllTplItemForUser
}
from
'../../alloc/BaosongTaskAlloc.api'
;
import
{
allTplItems
}
from
'../../tpl/BaosongTplItem.api'
;
import
{
useRoute
}
from
'vue-router'
;
const
route
=
useRoute
();
const
tableRef
=
ref
();
const
tplItemMap
=
ref
({});
const
queryParam
=
ref
({
taskId
:
-
1
,
taskName
:
''
,
tplId
:
-
1
,
tplName
:
''
,
tplCode
:
''
,
});
interface
FormData
{
id
:
number
|
null
;
taskid
:
number
;
tplid
:
number
;
itemid
?:
number
;
itempid
?:
number
;
content
:
string
;
tplcode
:
string
;
rind
:
number
;
}
onMounted
(
async
()
=>
{
if
(
route
.
query
.
taskId
)
{
queryParam
.
value
.
taskId
=
Number
(
route
.
query
.
taskId
);
}
if
(
route
.
query
.
taskName
)
{
queryParam
.
value
.
taskName
=
String
(
route
.
query
.
taskName
);
}
if
(
route
.
query
.
tplId
)
{
queryParam
.
value
.
tplId
=
Number
(
route
.
query
.
tplId
);
}
if
(
route
.
query
.
tplName
)
{
queryParam
.
value
.
tplName
=
String
(
route
.
query
.
tplName
);
}
if
(
route
.
query
.
tplCode
)
{
queryParam
.
value
.
tplCode
=
String
(
route
.
query
.
tplCode
);
}
await
setTplItemMap
();
await
setData
();
});
await
getAttachTableFormData
(
);
await
getAllMultiTableFormData
()
const
loading
=
ref
(
false
);
const
formData
=
reactive
({});
const
formValues
=
ref
<
FormData
[]
>
([]);
if
(
formValues
.
value
.
length
>
0
)
{
await
batchSaveOrUpdateBeforeDelete
(
formValues
.
value
)
VxeUI
.
modal
.
message
({
content
:
'保存成功'
,
status
:
'success'
})
//await setData()
}
else
{
VxeUI
.
modal
.
message
({
content
:
'没有需要保存的数据'
,
status
:
'warning'
})
}
const
saveBatch
=
async
()
=>
{
try
{
formValues
.
value
=
[];
}
catch
(
error
)
{
VxeUI
.
modal
.
message
({
content
:
`保存失败:
${
error
.
message
}
`
,
status
:
'error'
})
}
finally
{
loading
.
value
=
false
}
}
for
(
const
strKey
in
formData
)
{
const
valData
=
formData
[
strKey
];
if
(
valData
)
{
let
tmpAry
=
strKey
.
split
(
'_'
);
await
setFormValues
(
tmpAry
[
0
],
tmpAry
[
1
],
valData
,
1
);
}
}
const
childMultiTableRefs
=
ref
({})
const
setMultiColumnTableRef
=
(
el
:
any
,
index
:
string
)
=>
{
if
(
el
)
{
childMultiTableRefs
.
value
[
index
]
=
el
;
}
};
await
getAttachTableFormData
();
await
getAllMultiTableFormData
();
if
(
formValues
.
value
.
length
>
0
)
{
await
batchSaveOrUpdateBeforeDelete
(
formValues
.
value
);
VxeUI
.
modal
.
message
({
content
:
'保存成功'
,
status
:
'success'
});
//await setData()
}
else
{
VxeUI
.
modal
.
message
({
content
:
'没有需要保存的数据'
,
status
:
'warning'
});
}
}
catch
(
error
)
{
VxeUI
.
modal
.
message
({
content
:
`保存失败:
${
error
.
message
}
`
,
status
:
'error'
});
}
finally
{
loading
.
value
=
false
;
}
};
const
getAllMultiTableFormData
=
async
()
=>
{
for
(
const
pcode
in
childMultiTableRefs
.
value
)
{
const
childMultiTableRefs
=
ref
({});
const
setMultiColumnTableRef
=
(
el
:
any
,
index
:
string
)
=>
{
if
(
el
)
{
childMultiTableRefs
.
value
[
index
]
=
el
;
}
};
const
getAllMultiTableFormData
=
async
()
=>
{
for
(
const
pcode
in
childMultiTableRefs
.
value
)
{
const
child
=
childMultiTableRefs
.
value
[
pcode
];
if
(
child
)
{
const
datas
=
child
.
getFormData
()
let
rind
=
0
for
(
const
obj
of
datas
)
{
rind
++
Object
.
keys
(
obj
).
forEach
(
code
=>
{
setFormValues
(
pcode
,
code
,
obj
[
code
],
rind
)
});
}
const
datas
=
child
.
getFormData
();
let
rind
=
0
;
for
(
const
obj
of
datas
)
{
rind
++
;
Object
.
keys
(
obj
).
forEach
((
code
)
=>
{
setFormValues
(
pcode
,
code
,
obj
[
code
],
rind
);
});
}
}
}
};
}
};
const
childAttachTableRefs
=
ref
({})
const
setAttachTableRef
=
(
el
:
any
,
index
:
string
)
=>
{
if
(
el
)
{
childAttachTableRefs
.
value
[
index
]
=
el
;
// 保存子组件实例
}
};
const
childAttachTableRefs
=
ref
({});
const
setAttachTableRef
=
(
el
:
any
,
index
:
string
)
=>
{
if
(
el
)
{
childAttachTableRefs
.
value
[
index
]
=
el
;
// 保存子组件实例
}
};
const
getAttachTableFormData
=
async
()
=>
{
for
(
const
pcode
in
childAttachTableRefs
.
value
)
{
const
getAttachTableFormData
=
async
()
=>
{
for
(
const
pcode
in
childAttachTableRefs
.
value
)
{
const
child
=
childAttachTableRefs
.
value
[
pcode
];
if
(
child
)
{
const
datas
=
child
.
getFormData
()
const
datas
=
child
.
getFormData
();
for
(
const
code
in
datas
)
{
await
setFormValues
(
pcode
,
code
,
datas
[
code
],
1
)
}
}
}
};
const
setFormValues
=
async
(
pcode
,
code
,
valData
,
rind
)
=>
{
if
(
!
valData
)
return
;
let
vals
=
Array
.
isArray
(
valData
)
?
valData
.
join
(
','
)
:
valData
let
strKey
=
pcode
+
"_"
+
code
const
item
=
tplItemMap
.
value
[
strKey
];
const
{
pid
,
itemid
}
=
item
??
{};
let
tempForm
:
FormData
=
{
id
:
null
,
rind
:
rind
,
taskid
:
queryParam
.
value
.
taskId
,
tplid
:
queryParam
.
value
.
tplId
,
tplcode
:
code
,
itemid
:
itemid
,
itempid
:
pid
,
content
:
vals
};
formValues
.
value
.
push
(
tempForm
)
}
async
function
setData
()
{
try
{
loading
.
value
=
true
;
const
taskId
=
queryParam
.
value
.
taskId
;
const
tplid
=
queryParam
.
value
.
tplId
;
Object
.
keys
(
formData
).
forEach
(
key
=>
delete
formData
[
key
]);
await
setTplItemMap
();
const
recordData
=
await
queryRecord
({
taskid
:
taskId
,
tplid
:
tplid
});
const
valueObj
=
{};
for
(
const
data
of
recordData
)
{
const
key
=
`
${
data
.
itempid
}
_
${
data
.
itemid
}
_
${
data
.
rind
}
`
;
valueObj
[
key
]
=
data
.
content
;
}
const
shouldSkip
=
(
key
)
=>
{
const
refsToCheck
=
[
childMultiTableRefs
.
value
,
childAttachTableRefs
.
value
,
];
for
(
const
refs
of
refsToCheck
)
{
for
(
const
pcode
of
Object
.
keys
(
refs
))
{
if
(
key
.
startsWith
(
pcode
+
'_'
))
{
return
true
;
}
for
(
const
code
in
datas
)
{
await
setFormValues
(
pcode
,
code
,
datas
[
code
],
1
);
}
}
return
false
;
}
};
const
setFormValues
=
async
(
pcode
,
code
,
valData
,
rind
)
=>
{
if
(
!
valData
)
return
;
let
vals
=
Array
.
isArray
(
valData
)
?
valData
.
join
(
','
)
:
valData
;
let
strKey
=
pcode
+
'_'
+
code
;
const
item
=
tplItemMap
.
value
[
strKey
];
const
{
pid
,
itemid
}
=
item
??
{};
let
tempForm
:
FormData
=
{
id
:
null
,
rind
:
rind
,
taskid
:
queryParam
.
value
.
taskId
,
tplid
:
queryParam
.
value
.
tplId
,
tplcode
:
code
,
itemid
:
itemid
,
itempid
:
pid
,
content
:
vals
,
};
formValues
.
value
.
push
(
tempForm
);
};
for
(
const
strKey
of
Object
.
keys
(
tplItemMap
.
value
))
{
if
(
shouldSkip
(
strKey
))
{
continue
;
}
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
||
""
;
async
function
setData
()
{
try
{
loading
.
value
=
true
;
const
taskId
=
queryParam
.
value
.
taskId
;
const
tplid
=
queryParam
.
value
.
tplId
;
Object
.
keys
(
formData
).
forEach
((
key
)
=>
delete
formData
[
key
]);
await
setTplItemMap
();
const
recordData
=
await
queryRecord
({
taskid
:
taskId
,
tplid
:
tplid
});
const
valueObj
=
{};
for
(
const
data
of
recordData
)
{
const
key
=
`
${
data
.
itempid
}
_
${
data
.
itemid
}
_
${
data
.
rind
}
`
;
valueObj
[
key
]
=
data
.
content
;
}
}
const
shouldSkip
=
(
key
)
=>
{
const
refsToCheck
=
[
childMultiTableRefs
.
value
,
childAttachTableRefs
.
value
];
for
(
const
refs
of
refsToCheck
)
{
for
(
const
pcode
of
Object
.
keys
(
refs
))
{
if
(
key
.
startsWith
(
pcode
+
'_'
))
{
return
true
;
}
}
}
return
false
;
};
for
(
const
strKey
of
Object
.
keys
(
tplItemMap
.
value
))
{
if
(
shouldSkip
(
strKey
))
{
continue
;
}
const
item
=
tplItemMap
.
value
[
strKey
];
if
(
!
item
)
continue
;
const
{
pid
,
itemid
,
formTp
}
=
item
;
const
dataVal
=
valueObj
[
`
${
pid
}
_
${
itemid
}
_1`
];
if
(
!
dataVal
)
continue
;
for
(
const
pcode
of
Object
.
keys
(
childAttachTableRefs
.
value
))
{
const
child
=
childAttachTableRefs
.
value
[
pcode
];
const
matchingKeys
=
Object
.
keys
(
tplItemMap
.
value
).
filter
(
key
=>
key
.
startsWith
(
pcode
+
'_'
)
);
const
attachTableData
=
{};
for
(
const
key
of
matchingKeys
)
{
const
tmpData
=
tplItemMap
.
value
[
key
];
if
(
!
tmpData
)
continue
;
const
{
pid
,
itemid
,
formTp
,
code
}
=
tmpData
;
const
valueKey
=
`
${
pid
}
_
${
itemid
}
_1`
;
if
(
formTp
===
'checkbox'
)
{
attachTableData
[
code
]
=
valueObj
[
valueKey
]?.
split
(
","
)
||
[];
formData
[
strKey
]
=
dataVal
?.
split
(
','
)
||
[];
}
else
{
attachTableData
[
code
]
=
valueObj
[
valueKey
]
||
""
;
formData
[
strKey
]
=
dataVal
||
''
;
}
}
child
.
setFormData
(
attachTableData
);
}
for
(
const
pcode
of
Object
.
keys
(
childMultiTableRefs
.
value
))
{
const
child
=
childMultiTableRefs
.
value
[
pcode
];
const
matchingKeys
=
Object
.
keys
(
tplItemMap
.
value
).
filter
(
key
=>
key
.
startsWith
(
pcode
+
'_'
)
);
const
rowsMap
=
{};
for
(
const
key
of
matchingKeys
)
{
const
tmpData
=
tplItemMap
.
value
[
key
];
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
]
=
{};
for
(
const
pcode
of
Object
.
keys
(
childAttachTableRefs
.
value
))
{
const
child
=
childAttachTableRefs
.
value
[
pcode
];
const
matchingKeys
=
Object
.
keys
(
tplItemMap
.
value
).
filter
((
key
)
=>
key
.
startsWith
(
pcode
+
'_'
));
const
attachTableData
=
{};
for
(
const
key
of
matchingKeys
)
{
const
tmpData
=
tplItemMap
.
value
[
key
];
if
(
!
tmpData
)
continue
;
const
{
pid
,
itemid
,
formTp
,
code
}
=
tmpData
;
const
valueKey
=
`
${
pid
}
_
${
itemid
}
_1`
;
if
(
formTp
===
'checkbox'
)
{
attachTableData
[
code
]
=
valueObj
[
valueKey
]?.
split
(
','
)
||
[];
}
else
{
attachTableData
[
code
]
=
valueObj
[
valueKey
]
||
''
;
}
}
child
.
setFormData
(
attachTableData
);
}
for
(
const
pcode
of
Object
.
keys
(
childMultiTableRefs
.
value
))
{
const
child
=
childMultiTableRefs
.
value
[
pcode
];
const
matchingKeys
=
Object
.
keys
(
tplItemMap
.
value
).
filter
((
key
)
=>
key
.
startsWith
(
pcode
+
'_'
));
const
rowsMap
=
{};
for
(
const
key
of
matchingKeys
)
{
const
tmpData
=
tplItemMap
.
value
[
key
];
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
];
}
rowsMap
[
rind
][
code
]
=
valueObj
[
valKey
];
}
const
tableDatas
=
Object
.
values
(
rowsMap
);
nextTick
();
child
.
setFormData
(
tableDatas
);
}
const
tableDatas
=
Object
.
values
(
rowsMap
);
nextTick
();
child
.
setFormData
(
tableDatas
);
}
catch
(
error
)
{
VxeUI
.
modal
.
message
({
content
:
`加载数据失败:
${
error
.
message
}
`
,
status
:
'error'
,
});
}
finally
{
loading
.
value
=
false
;
}
}
}
catch
(
error
)
{
VxeUI
.
modal
.
message
({
content
:
`加载数据失败:
${
error
.
message
}
`
,
status
:
'error'
});
}
finally
{
loading
.
value
=
false
;
async
function
setTplItemMap
()
{
try
{
const
taskId
=
queryParam
.
value
.
taskId
;
const
tplid
=
queryParam
.
value
.
tplId
;
const
tplItem
=
await
allTplItems
({
tplid
:
tplid
,
});
tplItem
.
forEach
((
item
)
=>
{
let
strKey
=
item
.
pcode
+
'_'
+
item
.
xmlcode
;
tplItemMap
.
value
[
strKey
]
=
{
pid
:
item
.
pid
,
itemid
:
item
.
id
,
formTp
:
item
.
formTp
,
code
:
item
.
xmlcode
};
});
}
catch
(
error
)
{
VxeUI
.
modal
.
message
({
content
:
`加载数据失败:
${
error
.
message
}
`
,
status
:
'error'
});
}
finally
{
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
.bank-report-table {
font-family: 'SimSun', '宋体', serif;
font-size: 12px;
color: #000;
margin: 5px auto;
width: 100%;
}
.custom-table {
width: 100%;
border: 1px solid #000;
}
async
function
setTplItemMap
()
{
try
{
const
taskId
=
queryParam
.
value
.
taskId
const
tplid
=
queryParam
.
value
.
tplId
const
tplItem
=
await
allTplItems
({
tplid
:
tplid
,
})
.custom-table .vxe-header--column,
.custom-table .vxe-body--column {
border-right: 1px solid #000;
border-bottom: 1px solid #000;
padding: 5px;
}
tplItem
.
forEach
(
item
=>
{
let
strKey
=
item
.
pcode
+
"_"
+
item
.
xmlcode
;
tplItemMap
.
value
[
strKey
]
=
{
pid
:
item
.
pid
,
itemid
:
item
.
id
,
formTp
:
item
.
formTp
,
code
:
item
.
xmlcode
};
})
.custom-table .vxe-cell {
padding: 5px;
}
}
catch
(
error
)
{
VxeUI
.
modal
.
message
({
content
:
`加载数据失败:
${
error
.
message
}
`
,
status
:
'error'
})
}
finally
{
.content-cell {
line-height: 1.8;
}
}
.table-input {
width: 80px;
margin: 0 2px;
}
</
script
>
.radio-group {
display: inline-block;
margin-right: 10px;
}
<
style
lang=
"less"
scoped
>
.checkbox-group {
display: inline-block;
margin-right: 10px;
}
.bank-report-table {
font-family: "SimSun", "宋体", serif;
font-size: 12px;
color: #000;
margin: 5px auto;
width: 100%;
}
.custom-table {
width: 100%;
border: 1px solid #000;
}
.custom-table .vxe-header--column,
.custom-table .vxe-body--column {
border-right: 1px solid #000;
border-bottom: 1px solid #000;
padding: 5px;
}
.custom-table .vxe-cell {
padding: 5px;
}
.content-cell {
line-height: 1.8;
}
.table-input {
width: 80px;
margin: 0 2px;
}
.radio-group {
display: inline-block;
margin-right: 10px;
}
.checkbox-group {
display: inline-block;
margin-right: 10px;
}
.vxe-radio,
.vxe-checkbox {
margin-right: 8px;
white-space: nowrap;
}
.vxe-input--inner {
height: 24px;
line-height: 24px;
padding: 0 5px;
}
.vxe-radio--label,
.vxe-checkbox--label {
font-size: 12px;
}
.vxe-radio--icon,
.vxe-checkbox--icon {
font-size: 12px;
}
.vxe-radio-group,
.vxe-checkbox-group {
display: inline-block;
}
.bank-report-table {
font-family: "SimSun", "宋体", serif;
font-size: 12px;
color: #000;
margin: 5px auto;
width: 90%;
}
.custom-table {
width: 100%;
border: 1px solid #000;
}
.custom-table .vxe-header--column,
.custom-table .vxe-body--column {
border-right: 1px solid #000;
border-bottom: 1px solid #000;
padding: 5px;
}
.content-cell {
line-height: 1.8;
}
.table-input {
width: 80px;
margin: 0 2px;
}
/* 附件样式 */
.attachments {
margin-top: 20px;
width: 100%;
}
.attachments h4 {
font-size: 14px;
font-weight: bold;
margin-bottom: 10px;
}
.attachment-table {
width: 100%;
border: 1px solid #000;
}
.attachment-table .vxe-header--column,
.attachment-table .vxe-body--column {
border-right: 1px solid #000;
border-bottom: 1px solid #000;
padding: 5px;
}
.vxe-input {
border-bottom: 1px solid #333;
text-align: center;
margin: 5px 3px;
padding: 0;
border-top: none;
border-left: none;
border-right: none;
background: transparent;
line-height: 50px;
}
blockquote {
padding: 0px 5px;
color: black;
cursor: pointer;
}
.vxe-radio,
.vxe-checkbox {
margin-right: 8px;
white-space: nowrap;
}
.vxe-input--inner {
height: 24px;
line-height: 24px;
padding: 0 5px;
}
.vxe-radio--label,
.vxe-checkbox--label {
font-size: 12px;
}
.vxe-radio--icon,
.vxe-checkbox--icon {
font-size: 12px;
}
.vxe-radio-group,
.vxe-checkbox-group {
display: inline-block;
}
.bank-report-table {
font-family: 'SimSun', '宋体', serif;
font-size: 12px;
color: #000;
margin: 5px auto;
width: 90%;
}
.custom-table {
width: 100%;
border: 1px solid #000;
}
.custom-table .vxe-header--column,
.custom-table .vxe-body--column {
border-right: 1px solid #000;
border-bottom: 1px solid #000;
padding: 5px;
}
.content-cell {
line-height: 1.8;
}
.table-input {
width: 80px;
margin: 0 2px;
}
/* 附件样式 */
.attachments {
margin-top: 20px;
width: 100%;
}
.attachments h4 {
font-size: 14px;
font-weight: bold;
margin-bottom: 10px;
}
.attachment-table {
width: 100%;
border: 1px solid #000;
}
.attachment-table .vxe-header--column,
.attachment-table .vxe-body--column {
border-right: 1px solid #000;
border-bottom: 1px solid #000;
padding: 5px;
}
.vxe-input {
border-bottom: 1px solid #333;
text-align: center;
margin: 5px 3px;
padding: 0;
border-top: none;
border-left: none;
border-right: none;
background: transparent;
line-height: 50px;
}
blockquote {
padding: 0px 5px;
color: black;
cursor: pointer;
}
</
style
>
zrch-risk-client-39/src/views/baosong/report/tableComponents/MyVxeTable.vue
浏览文件 @
d692b0a9
<
template
>
<div>
<vxe-grid
ref=
"refGrid"
v-bind=
"gridOptions"
v-on=
"gridEvents"
:footerData=
"setFooterData"
>
<vxe-grid
ref=
"refGrid"
v-bind=
"gridOptions"
v-on=
"gridEvents"
:footerData=
"setFooterData"
>
<template
#
select=
"
{ row, column }">
<vxe-select
v-model=
"row[column.field]"
filterable
>
<vxe-select
v-model=
"row[column.field]"
filterable
@
change=
"handleCol4Change(row, column, $event)"
>
<vxe-option
v-for=
"(opt, optIndex) in column.editRender.options"
:key=
"optIndex"
:label=
"opt"
:value=
"opt"
></vxe-option>
</vxe-select>
</
template
>
<
template
#
select_dynamic=
"{ row, column }"
>
<div
style=
"display: flex; flex-wrap: wrap; gap: 8px; align-items: center"
>
<vxe-select
v-model=
"row[column.field]"
filterable
:disabled=
"!column.editRender.getOptions?.(row)?.length"
style=
"min-width: 120px"
>
<vxe-option
v-for=
"(opt, optIndex) in column.editRender.getOptions?.(row) || []"
:key=
"optIndex"
:label=
"opt"
:value=
"opt"
/>
</vxe-select>
<vxe-input
v-if=
"
(row.COL4 === '软件类(银行业)' || row.COL4 === '软件类(保险业)') &&
(row.COL5 === '其他' || !(column.editRender.getOptions?.(row) || []).includes(row.COL5))
"
v-model=
"row[column.field]"
placeholder=
"请输入"
style=
"min-width: 150px"
/>
</div>
</
template
>
<
template
#
other_input=
"{ row, column }"
>
<vxe-input
v-model=
"row[column.field]"
placeholder=
"请输入"
:disabled=
"row.COL4 !== '其他'"
/>
</
template
>
<
template
#
default_select=
"{ row, column }"
>
<span>
{{
row
[
column
.
field
]
}}
</span>
</
template
>
<
template
#
default_other=
"{ row, column }"
>
<span
v-if=
"row.COL4 === '其他'"
>
{{
row
[
column
.
field
]
}}
</span>
</
template
>
<
template
#
footer_seq=
"{ row,column }"
>
<span
style=
"color: blue
;
"
>
{{
row
[
column
.
field
]
}}
</span>
<
template
#
footer_seq=
"{ row,
column }"
>
<span
style=
"color: blue"
>
{{
row
[
column
.
field
]
}}
</span>
</
template
>
<
template
#
footer_num=
"{ row,column }"
>
<span
style=
"color: red
;
"
>
{{
row
[
column
.
field
]
}}
</span>
<
template
#
footer_num=
"{ row,
column }"
>
<span
style=
"color: red"
>
{{
row
[
column
.
field
]
}}
</span>
</
template
>
<
template
#
action=
"{ row, rowIndex }"
>
...
...
@@ -27,199 +49,204 @@
</template>
<
script
lang=
"ts"
setup
>
import
{
reactive
,
computed
,
ref
}
from
'vue'
import
type
{
VxeGridProps
,
VxeTablePropTypes
,
VxeGridListeners
}
from
'vxe-table'
import
type
{
VxeSelectProps
}
from
'vxe-pc-ui'
const
props
=
defineProps
({
title
:
String
,
data
:
{
type
:
Array
as
()
=>
any
[],
default
:
()
=>
[]
},
columns
:
{
type
:
Array
as
()
=>
any
[],
required
:
true
},
footerData
:
{
type
:
Array
as
()
=>
any
[],
default
:
()
=>
[]
},
showFooter
:
{
type
:
Boolean
,
default
:
false
},
height
:
{
default
:
''
},
})
const
formData
=
reactive
({})
const
formFooterData
=
reactive
({})
const
sumNum
=
(
list
:
any
[],
field
:
string
)
=>
{
let
count
=
0
list
.
forEach
(
item
=>
{
if
(
item
[
field
])
{
count
+=
Number
(
item
[
field
])
}
})
return
count
}
const
gridOptions
=
reactive
<
VxeGridProps
<
any
>
&
{
editConfig
:
VxeTablePropTypes
.
EditConfig
<
any
>
}
>
({
border
:
true
,
showOverflow
:
true
,
showFooter
:
props
.
showFooter
,
loading
:
false
,
editConfig
:
{
enabled
:
true
,
trigger
:
'click'
,
mode
:
'row'
},
height
:
props
.
height
,
rowConfig
:
{
useKey
:
true
,
resizable
:
true
},
columnConfig
:
{
useKey
:
true
,
resizable
:
true
},
toolbarConfig
:
{
zoom
:
true
,
custom
:
true
,
buttons
:
[
{
name
:
"添加"
,
mode
:
"text"
,
status
:
"primary"
,
code
:
'myAdd'
,
icon
:
"vxe-icon-add"
},
]
},
columns
:
props
.
columns
,
data
:
props
.
data
||
[],
footerData
:
props
.
footerData
||
[]
})
const
setFooterData
=
computed
(()
=>
{
if
(
!
props
.
footerData
||
!
props
.
footerData
.
length
)
return
[];
const
footer
=
[...
props
.
footerData
];
const
result
=
[];
footer
.
forEach
(
item
=>
{
// 创建基础行对象
const
row
=
{
[
item
.
labelField
]:
item
.
labelValue
};
// 计算需要求和的字段
if
(
item
.
tp
===
'sum'
&&
gridOptions
.
data
?.
length
)
{
item
.
fields
.
forEach
(
field
=>
{
row
[
field
]
=
sumNum
(
gridOptions
.
data
,
field
);
formFooterData
[
item
.
xmlCode
[
field
]]
=
row
[
field
]
});
}
// 如果需要计算平均值
if
(
item
.
tp
===
'avg'
&&
gridOptions
.
data
?.
length
)
{
item
.
fields
.
forEach
(
field
=>
{
const
sum
=
sumNum
(
gridOptions
.
data
,
field
);
row
[
field
]
=
sum
/
gridOptions
.
data
.
length
;
formFooterData
[
item
.
xmlCode
[
field
]]
=
row
[
field
]
});
}
result
.
push
(
row
);
import
{
reactive
,
computed
,
ref
}
from
'vue'
;
import
type
{
VxeGridProps
,
VxeTablePropTypes
,
VxeGridListeners
}
from
'vxe-table'
;
import
type
{
VxeSelectProps
}
from
'vxe-pc-ui'
;
const
props
=
defineProps
({
title
:
String
,
data
:
{
type
:
Array
as
()
=>
any
[],
default
:
()
=>
[],
},
columns
:
{
type
:
Array
as
()
=>
any
[],
required
:
true
,
},
footerData
:
{
type
:
Array
as
()
=>
any
[],
default
:
()
=>
[],
},
showFooter
:
{
type
:
Boolean
,
default
:
false
,
},
height
:
{
default
:
''
,
},
rowHeight
:
{
type
:
[
Number
,
String
],
default
:
40
,
},
});
return
result
;
});
const
safeAddNewRecord
=
async
()
=>
{
try
{
const
newRecord
:
Record
<
string
,
any
>
=
{}
gridOptions
.
data
?.
unshift
(
newRecord
)
}
catch
(
error
)
{
console
.
error
(
'添加记录出错:'
,
error
)
}
}
const
insertRow
=
async
(
row
:
any
,
ind
:
number
)
=>
{
gridOptions
.
data
?.
splice
(
ind
+
1
,
0
,
{})
refGrid
.
value
.
setEditRow
(
gridOptions
.
data
[
ind
+
1
])
}
const
removeRow
=
async
(
row
:
any
,
ind
:
number
)
=>
{
cancelRow
();
gridOptions
.
data
?.
splice
(
ind
,
1
)
}
const
formData
=
reactive
({});
const
formFooterData
=
reactive
({});
const
gridEvents
:
VxeGridListeners
=
{
toolbarButtonClick
(
params
)
{
if
(
params
.
code
==
"myAdd"
)
{
safeAddNewRecord
()
const
handleCol4Change
=
(
row
,
column
,
value
)
=>
{
if
(
column
.
field
===
'COL4'
)
{
row
.
COL5
=
''
;
}
}
}
const
refGrid
=
ref
()
};
const
getFormData
=
async
()
=>
{
await
cancelRow
()
const
fieldNames
=
getAllFields
(
props
.
columns
)
const
newDatas
=
gridOptions
.
data
?.
map
(
obj
=>
{
return
fieldNames
.
reduce
((
acc
,
field
)
=>
{
if
(
field
in
obj
&&
obj
[
field
]
!==
undefined
&&
obj
[
field
]
!==
null
)
{
acc
[
field
]
=
obj
[
field
];
const
sumNum
=
(
list
:
any
[],
field
:
string
)
=>
{
let
count
=
0
;
list
.
forEach
((
item
)
=>
{
if
(
item
[
field
])
{
count
+=
Number
(
item
[
field
]);
}
return
acc
;
},
{});
})
||
[];
return
{
...
formData
,
datas
:
newDatas
,
footer
:
formFooterData
});
return
count
;
};
};
const
setFormData
=
(
dataVale
)
=>
{
gridOptions
.
data
=
dataVale
}
const
gridOptions
=
reactive
<
VxeGridProps
<
any
>
&
{
editConfig
:
VxeTablePropTypes
.
EditConfig
<
any
>
}
>
({
border
:
true
,
showOverflow
:
true
,
showFooter
:
props
.
showFooter
,
loading
:
false
,
editConfig
:
{
enabled
:
true
,
trigger
:
'click'
,
mode
:
'row'
,
},
height
:
props
.
height
,
rowConfig
:
{
useKey
:
true
,
resizable
:
true
,
height
:
props
.
rowHeight
,
},
columnConfig
:
{
useKey
:
true
,
resizable
:
true
,
},
toolbarConfig
:
{
zoom
:
true
,
custom
:
true
,
buttons
:
[{
name
:
'添加'
,
mode
:
'text'
,
status
:
'primary'
,
code
:
'myAdd'
,
icon
:
'vxe-icon-add'
}],
},
columns
:
props
.
columns
,
data
:
props
.
data
||
[],
footerData
:
props
.
footerData
||
[],
});
const
cancelRow
=
async
()
=>
{
const
$grid
=
refGrid
.
value
if
(
!
$grid
)
{
return
}
await
$grid
.
clearEdit
()
}
function
getAllFields
(
columns
:
any
[]):
string
[]
{
const
fields
:
string
[]
=
[];
function
traverse
(
items
:
any
[])
{
items
.
forEach
(
item
=>
{
if
(
item
.
field
)
{
fields
.
push
(
item
.
field
);
const
setFooterData
=
computed
(()
=>
{
if
(
!
props
.
footerData
||
!
props
.
footerData
.
length
)
return
[];
const
footer
=
[...
props
.
footerData
];
const
result
=
[];
footer
.
forEach
((
item
)
=>
{
// 创建基础行对象
const
row
=
{
[
item
.
labelField
]:
item
.
labelValue
,
};
// 计算需要求和的字段
if
(
item
.
tp
===
'sum'
&&
gridOptions
.
data
?.
length
)
{
item
.
fields
.
forEach
((
field
)
=>
{
row
[
field
]
=
sumNum
(
gridOptions
.
data
,
field
);
formFooterData
[
item
.
xmlCode
[
field
]]
=
row
[
field
];
});
}
if
(
item
.
children
)
{
traverse
(
item
.
children
);
// 如果需要计算平均值
if
(
item
.
tp
===
'avg'
&&
gridOptions
.
data
?.
length
)
{
item
.
fields
.
forEach
((
field
)
=>
{
const
sum
=
sumNum
(
gridOptions
.
data
,
field
);
row
[
field
]
=
sum
/
gridOptions
.
data
.
length
;
formFooterData
[
item
.
xmlCode
[
field
]]
=
row
[
field
];
});
}
result
.
push
(
row
);
});
}
traverse
(
columns
);
return
fields
.
filter
(
field
=>
field
);
}
return
result
;
});
const
safeAddNewRecord
=
async
()
=>
{
try
{
const
newRecord
:
Record
<
string
,
any
>
=
{};
gridOptions
.
data
?.
unshift
(
newRecord
);
}
catch
(
error
)
{
console
.
error
(
'添加记录出错:'
,
error
);
}
};
const
insertRow
=
async
(
row
:
any
,
ind
:
number
)
=>
{
gridOptions
.
data
?.
splice
(
ind
+
1
,
0
,
{});
refGrid
.
value
.
setEditRow
(
gridOptions
.
data
[
ind
+
1
]);
};
defineExpose
({
getFormData
,
setFormData
})
const
removeRow
=
async
(
row
:
any
,
ind
:
number
)
=>
{
cancelRow
();
gridOptions
.
data
?.
splice
(
ind
,
1
);
};
const
gridEvents
:
VxeGridListeners
=
{
toolbarButtonClick
(
params
)
{
if
(
params
.
code
==
'myAdd'
)
{
safeAddNewRecord
();
}
},
};
const
refGrid
=
ref
();
const
getFormData
=
async
()
=>
{
await
cancelRow
();
const
fieldNames
=
getAllFields
(
props
.
columns
);
const
newDatas
=
gridOptions
.
data
?.
map
((
obj
)
=>
{
return
fieldNames
.
reduce
((
acc
,
field
)
=>
{
if
(
field
in
obj
&&
obj
[
field
]
!==
undefined
&&
obj
[
field
]
!==
null
)
{
acc
[
field
]
=
obj
[
field
];
}
return
acc
;
},
{});
})
||
[];
return
{
...
formData
,
datas
:
newDatas
,
footer
:
formFooterData
,
};
};
</
script
>
-
\ No newline at end of file
const
setFormData
=
(
dataVale
)
=>
{
gridOptions
.
data
=
dataVale
;
};
const
cancelRow
=
async
()
=>
{
const
$grid
=
refGrid
.
value
;
if
(
!
$grid
)
{
return
;
}
await
$grid
.
clearEdit
();
};
function
getAllFields
(
columns
:
any
[]):
string
[]
{
const
fields
:
string
[]
=
[];
function
traverse
(
items
:
any
[])
{
items
.
forEach
((
item
)
=>
{
if
(
item
.
field
)
{
fields
.
push
(
item
.
field
);
}
if
(
item
.
children
)
{
traverse
(
item
.
children
);
}
});
}
traverse
(
columns
);
return
fields
.
filter
((
field
)
=>
field
);
}
defineExpose
({
getFormData
,
setFormData
,
});
</
script
>
-
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论