提交 4f132000 authored 作者: kxjia's avatar kxjia

Tb9 bug 修改

上级 ac7d2227
...@@ -121,8 +121,7 @@ export const tableFormData = [ ...@@ -121,8 +121,7 @@ export const tableFormData = [
otherOption: true, otherOption: true,
otherField: 'COLA03', otherField: 'COLA03',
}, },
{ type: 'br' },
{ type: 'brspace' },
{ type: 'text', value: '已识别的重要业务总数' }, { type: 'text', value: '已识别的重要业务总数' },
{ type: 'number', field: 'COL21', unit: '个' }, { type: 'number', field: 'COL21', unit: '个' },
{ type: 'text', value: ',重要业务详细情况如下' }, { type: 'text', value: ',重要业务详细情况如下' },
...@@ -130,22 +129,35 @@ export const tableFormData = [ ...@@ -130,22 +129,35 @@ export const tableFormData = [
{ {
serialNumber: '1006', serialNumber: '1006',
code: 'TB90031', code: 'TB90031',
type: 'MultiColumnTable', type: 'VxeTable',
project: '重要业务详细情况', project: '重要业务详细情况',
content: [ columns: [
{ name: '一级业务名称', formType: 'input', field: 'C24A002' }, { field: 'C24A002', title: '一级业务名称', width: 200, editRender: { name: 'VxeInput' } },
{ name: '二级业务名称', formType: 'input', field: 'C24A003' }, { field: 'C24A003', title: '二级业务名称', width: 200, editRender: { name: 'VxeInput' } },
{ name: '交易渠道', formType: 'input', field: 'C24A004' }, { field: 'C24A004', title: '交易渠道', width: 200, editRender: { name: 'VxeInput' } },
{ name: '涉及重要信息系统(与TB3系统名称保持一致)', formType: 'input', field: 'C24A005' }, { field: 'C24A005', title: '涉及重要信息系统', width: 300, editRender: { name: 'VxeInput' } },
{ name: '日均流量(万笔)', formType: 'input', field: 'C24A006' }, { field: 'C24A006', title: '日均流量(万笔)', width: 200, editRender: { name: 'VxeInput' } },
{ name: '业务恢复指标RTO(分钟)', formType: 'number', field: 'COL24' }, { field: 'COL24', title: '业务恢复指标RTO(分钟)', width: 200, editRender: { name: 'VxeNumberInput' } },
{ name: '业务恢复指标RPO(分钟)', formType: 'number', field: 'COL25' }, { field: 'COL25', title: '业务恢复指标RPO(分钟)', width: 200, editRender: { name: 'VxeNumberInput' } },
{ name: '业务归口管理部门', formType: 'input', field: 'COL26' }, { field: 'COL26', title: '业务归口管理部门', width: 200, editRender: { name: 'VxeInput' } },
{ name: '业务影响分析开展部门', formType: 'input', field: 'COL27' }, { field: 'COL27', title: '业务影响分析开展部门', width: 200, editRender: { name: 'VxeInput' } },
{ name: '完成时间', formType: 'date', field: 'COL28' }, { field: 'COL28', title: '完成时间', width: 200, editRender: { name: 'VxeDatePicker' } },
{ name: '报告经高管层或业务连续性管理委员会审批', formType: 'yesno', field: 'COL29' }, {
field: 'COL29',
title: '报告审批',
width: 300,
editRender: {
name: 'VxeSelect',
options: [
{ label: '是', value: '是' },
{ label: '否', value: '否' },
], ],
}, },
},
{ title: '操作', slots: { default: 'action' }, width: 100 },
],
datas: [],
},
], ],
remarks: { remarks: {
rows: 10, rows: 10,
...@@ -239,44 +251,107 @@ export const tableFormData = [ ...@@ -239,44 +251,107 @@ export const tableFormData = [
{ type: 'number', field: 'COL48', unit: '%' }, { type: 'number', field: 'COL48', unit: '%' },
{ type: 'br' }, { type: 'br' },
{ type: 'text', value: '(3)近三年是否开展业务数据被恶意篡改的应急演练' }, { type: 'text', value: '(3)近三年是否开展业务数据被恶意篡改的应急演练' },
{ type: 'yesno', field: 'C24A001' }, { type: 'radio-group', field: 'C24A001', options: ['是', '否'] },
{ type: 'brspace' }, { type: 'brspace' },
{ {
serialNumber: '1006', serialNumber: '1006',
code: 'TB90051', code: 'TB90051',
type: 'MultiColumnTable', type: 'VxeTable',
project: '演练明细 ', project: '演练明细',
content: [ columns: [
{ name: '演练日期', formType: 'date', field: 'COL50' }, { field: 'COL50', title: '演练日期', width: 150, editRender: { name: 'VxeDatePicker' } },
{ {
name: '牵头部门',
formType: 'radio-group',
field: 'COL51', field: 'COL51',
options: ['信息科技部门', '风险管理部门', '内部审计部门', '合规部门', '业务部门', '其他'], title: '牵头部门',
otherOption: true, width: 200,
otherField: 'COL52', editRender: {
name: 'VxeSelect',
options: [
{ label: '信息科技部门', value: '信息科技部门' },
{ label: '风险管理部门', value: '风险管理部门' },
{ label: '内部审计部门', value: '内部审计部门' },
{ label: '合规部门', value: '合规部门' },
{ label: '业务部门', value: '业务部门' },
{ label: '其他', value: '其他' },
],
},
}, },
{ field: 'COL52', title: '牵头部门其他', width: 150, editRender: { name: 'VxeInput' } },
{ {
name: '参与部门',
formType: 'checkbox-group',
field: 'COL53', field: 'COL53',
options: ['办公室', '信息科技部门', '风险管理部门', '内部审计部门', '合规部门', '业务部门', '后勤保障部门', '其他'], title: '参与部门',
otherOption: true, width: 250,
otherField: 'COL54', editRender: {
name: 'VxeSelect',
options: [
{ label: '办公室', value: '办公室' },
{ label: '信息科技部门', value: '信息科技部门' },
{ label: '风险管理部门', value: '风险管理部门' },
{ label: '内部审计部门', value: '内部审计部门' },
{ label: '合规部门', value: '合规部门' },
{ label: '业务部门', value: '业务部门' },
{ label: '后勤保障部门', value: '后勤保障部门' },
{ label: '其他', value: '其他' },
],
}, },
},
{ field: 'COL54', title: '参与部门其他', width: 150, editRender: { name: 'VxeInput' } },
{ {
name: '演练内容',
formType: 'checkbox-group',
field: 'COL55', field: 'COL55',
options: ['关键基础设施演练 ', '重要信息系统演练 ', '重要业务演练', '其他'], title: '演练内容',
otherOption: true, width: 200,
otherField: 'COLA05', editRender: {
name: 'VxeSelect',
options: [
{ label: '关键基础设施演练', value: '关键基础设施演练' },
{ label: '重要信息系统演练', value: '重要信息系统演练' },
{ label: '重要业务演练', value: '重要业务演练' },
{ label: '其他', value: '其他' },
],
},
},
{ field: 'COLA05', title: '演练内容其他', width: 150, editRender: { name: 'VxeInput' } },
{
field: 'COL56',
title: '演练方式',
width: 200,
editRender: {
name: 'VxeSelect',
options: [
{ label: '模拟', value: '模拟' },
{ label: '切换测试', value: '切换测试' },
{ label: '切换并真实接管业务', value: '切换并真实接管业务' },
],
},
},
{ field: 'COL57', title: '涵盖范围', width: 200, editRender: { name: 'VxeInput' } },
{
field: 'COL58',
title: '高管审批',
width: 120,
editRender: {
name: 'VxeSelect',
options: [
{ label: '是', value: '是' },
{ label: '否', value: '否' },
],
},
},
{
field: 'COL59',
title: '演练后评估改进应急预案',
width: 200,
editRender: {
name: 'VxeSelect',
options: [
{ label: '是', value: '是' },
{ label: '否', value: '否' },
],
},
}, },
{ name: '演练方式', formType: 'checkbox-group', field: 'COL56', options: ['模拟 ', '切换测试 ', '切换并真实接管业务'] }, { title: '操作', slots: { default: 'action' }, width: 100 },
{ name: '涵盖范围 ', formType: 'input', field: 'COL57' },
{ name: '高管审批', formType: 'yesno', field: 'COL58' },
{ name: '演练后评估改进应急预案', formType: 'yesno', field: 'COL59' },
], ],
datas: [],
}, },
], ],
......
...@@ -98,7 +98,7 @@ ...@@ -98,7 +98,7 @@
<!-- Vxe表格 --> <!-- Vxe表格 -->
<template v-else-if="row.type === 'VxeTable'"> <template v-else-if="row.type === 'VxeTable'">
<MyVxeTable1 <MyVxeTable
:title="row.project" :title="row.project"
:data="row.data" :data="row.data"
:columns="row.columns" :columns="row.columns"
...@@ -205,7 +205,19 @@ ...@@ -205,7 +205,19 @@
</vxe-checkbox-group> </vxe-checkbox-group>
</span> </span>
</div> </div>
<div v-else-if="item.type === 'VxeTable'">
<MyVxeTable
:title="item.project"
:data="item.data"
:columns="item.columns"
:pcode="item.code"
:footerData="item.footerData"
:showFooter="item.showFooter"
:ref="(el) => setMyVxeTableRef(el, item.code)"
:disabled="!item.hasRight"
style="margin:0px;padding:0px"
/>
</div>
<!-- 普通输入框 --> <!-- 普通输入框 -->
<template v-else> <template v-else>
<div class="input-wrapper"> <div class="input-wrapper">
...@@ -310,7 +322,7 @@ import { useRoute } from 'vue-router' ...@@ -310,7 +322,7 @@ import { useRoute } from 'vue-router'
// 组件导入 // 组件导入
import MultiColumnTable from '../tableComponents/MultiColumnTable.vue' import MultiColumnTable from '../tableComponents/MultiColumnTable.vue'
import AttachTable from '../tableComponents/AttachTable.vue' import AttachTable from '../tableComponents/AttachTable.vue'
import MyVxeTable1 from '../tableComponents/MyVxeTable.vue' import MyVxeTable from '../tableComponents/MyVxeTable.vue'
import HistoryFillCheck from './check/HistoryFillCheck.vue' import HistoryFillCheck from './check/HistoryFillCheck.vue'
import ValidationDrawer from './check/ValidationDrawer.vue' import ValidationDrawer from './check/ValidationDrawer.vue'
...@@ -572,7 +584,6 @@ const validateForm = async (): Promise<boolean> => { ...@@ -572,7 +584,6 @@ const validateForm = async (): Promise<boolean> => {
const prepareFormData = async () => { const prepareFormData = async () => {
formValues.value = [] formValues.value = []
// 处理主表单数据 // 处理主表单数据
for (const [key, value] of Object.entries(formData)) { for (const [key, value] of Object.entries(formData)) {
if (value !== undefined && value !== null && value !== '') { if (value !== undefined && value !== null && value !== '') {
...@@ -584,7 +595,7 @@ const prepareFormData = async () => { ...@@ -584,7 +595,7 @@ const prepareFormData = async () => {
// 处理子表格数据 // 处理子表格数据
await Promise.all([ await Promise.all([
collectAttachTableData(), collectAttachTableData(),
collectMultiTableData(), //collectMultiTableData(),
collectVxeTableData() collectVxeTableData()
]) ])
} }
...@@ -707,6 +718,11 @@ const fillSimpleFields = async (row: TableRow, valueMap: Record<string, string>) ...@@ -707,6 +718,11 @@ const fillSimpleFields = async (row: TableRow, valueMap: Record<string, string>)
if (!row.content || !Array.isArray(row.content)) return if (!row.content || !Array.isArray(row.content)) return
for (const item of row.content) { for (const item of row.content) {
if (item.type === 'VxeTable' && item.code) {
await fillVxeTable(item, valueMap)
continue
}
if (!item.field) continue if (!item.field) continue
const key = getFieldKey(row.code, item.field) const key = getFieldKey(row.code, item.field)
...@@ -725,7 +741,6 @@ const fillSimpleFields = async (row: TableRow, valueMap: Record<string, string>) ...@@ -725,7 +741,6 @@ const fillSimpleFields = async (row: TableRow, valueMap: Record<string, string>)
formData[key] = dataVal formData[key] = dataVal
} }
// 处理特殊字段类型
if (item.type === 'checkboxAndInput' && item.optionItemField) { if (item.type === 'checkboxAndInput' && item.optionItemField) {
await fillCheckboxInputFields(row, item, valueMap) await fillCheckboxInputFields(row, item, valueMap)
} }
......
<template> <template>
<div> <div class="my-vxe-table-wrapper">
<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 }"> <template #select="{ row, column }">
<vxe-select v-model="row[column.field]" filterable @change="handleCol4Change(row, column, $event)"> <vxe-select v-model="row[column.field]" filterable @change="handleCol4Change(row, column, $event)">
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,7 @@
}, },
rowHeight: { rowHeight: {
type: [Number, String], type: [Number, String],
default: 40, default: '30',
}, },
}); });
...@@ -115,11 +115,18 @@ ...@@ -115,11 +115,18 @@
trigger: 'click', trigger: 'click',
mode: 'row', mode: 'row',
}, },
height: props.height, maxHeight: 400,
scrollX: {
enabled: true,
gt: 0,
},
scrollY: {
enabled: true,
gt: 0,
},
rowConfig: { rowConfig: {
useKey: true, useKey: true,
resizable: true, resizable: true,
height: props.rowHeight,
}, },
columnConfig: { columnConfig: {
useKey: true, useKey: true,
...@@ -130,6 +137,10 @@ ...@@ -130,6 +137,10 @@
custom: true, custom: true,
buttons: [{ name: '添加', mode: 'text', status: 'primary', code: 'myAdd', icon: 'vxe-icon-add' }], buttons: [{ name: '添加', mode: 'text', status: 'primary', code: 'myAdd', icon: 'vxe-icon-add' }],
}, },
modalConfig: {
showZoom: true,
resize: true,
},
columns: props.columns, columns: props.columns,
data: props.data || [], data: props.data || [],
footerData: props.footerData || [], footerData: props.footerData || [],
...@@ -215,7 +226,7 @@ ...@@ -215,7 +226,7 @@
...formData, ...formData,
datas: newDatas, datas: newDatas,
footer: formFooterData, footer: formFooterData,
footerPcode: props.footerData[0].pcode, footerPcode: props.footerData?.[0]?.pcode,
}; };
}; };
...@@ -254,4 +265,17 @@ ...@@ -254,4 +265,17 @@
setFormData, setFormData,
}); });
</script> </script>
-
<style lang="less" scoped>
.my-vxe-table-wrapper {
width: 100%;
:deep(.vxe-grid) {
width: 100%;
}
:deep(.vxe-table) {
width: 100%;
}
}
</style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论