Files
scrq-hd/.svn/pristine/5d/5d0f34b25d2e246728d1146a1a61fb5b1034dff8.svn-base
2025-07-03 10:34:04 +08:00

186 lines
6.1 KiB
Plaintext

<template>
<table class="fm-report-table__table" :style="{
'border-top-width': element.options.borderWidth + 'px',
'border-top-color': element.options.borderColor,
'border-left-width': element.options.borderWidth + 'px',
'border-left-color': element.options.borderColor,
'width': element.options.width || '100%'
}"
v-if="display[element.model]"
:class="{
[element.options && element.options.customClass]: element.options && element.options.customClass ? true : false
}"
>
<tr :key="rowIndex" v-for="(row, rowIndex) in element.rows">
<td :style="{
'border-right-width': element.options.borderWidth + 'px',
'border-right-color': element.options.borderColor,
'border-bottom-width': element.options.borderWidth + 'px',
'border-bottom-color': element.options.borderColor,
'width': column.options.width,
'height': column.options.height
}"
v-for="(column, i) in row.columns" :key="rowIndex + '-' + i"
v-if="!column.options.invisible"
:colspan="column.options.colspan"
:rowspan="column.options.rowspan"
class="fm-report-table__td"
valign="top"
:class="{
[column.options.customClass]: column.options.customClass?true: false
}"
>
<template v-for="columnElement in column.list">
<generate-col-item
v-if="columnElement.type == 'grid'"
:key="columnElement.key"
:model="dataModels"
:rules="rules"
:element="columnElement"
:remote="remote"
:blanks="blanks"
:display="display"
:edit="edit"
:remote-option="remoteOption"
:platform="platform"
:preview="preview"
:container-key="containerKey"
:data-source-value="dataSourceValue"
:event-function="eventFunction"
:print-read="printRead"
>
<template v-slot:[blank.name]="scope" v-for="blank in blanks">
<slot :name="blank.name" :model="scope.model"></slot>
</template>
</generate-col-item>
<generate-report
v-else-if="columnElement.type == 'report'"
:key="columnElement.key"
:model="dataModels"
:rules="rules"
:element="columnElement"
:remote="remote"
:blanks="blanks"
:display="display"
:edit="edit"
:remote-option="remoteOption"
:platform="platform"
:preview="preview"
:container-key="containerKey"
:data-source-value="dataSourceValue"
:event-function="eventFunction"
:print-read="printRead"
>
<template v-slot:[blank.name]="scope" v-for="blank in blanks">
<slot :name="blank.name" :model="scope.model"></slot>
</template>
</generate-report>
<generate-inline
v-else-if="columnElement.type == 'inline'"
:key="columnElement.key"
:model="dataModels"
:rules="rules"
:element="columnElement"
:remote="remote"
:blanks="blanks"
:display="display"
:edit="edit"
:remote-option="remoteOption"
:platform="platform"
:preview="preview"
:container-key="containerKey"
:data-source-value="dataSourceValue"
:event-function="eventFunction"
:print-read="printRead"
>
<template v-slot:[blank.name]="scope" v-for="blank in blanks">
<slot :name="blank.name" :model="scope.model"></slot>
</template>
</generate-inline>
<generate-tab-item
v-else-if="columnElement.type == 'tabs'"
:key="columnElement.key"
:model="dataModels"
:rules="rules"
:element="columnElement"
:remote="remote"
:blanks="blanks"
:display="display"
:edit="edit"
:remote-option="remoteOption"
:platform="platform"
:preview="preview"
:container-key="containerKey"
:data-source-value="dataSourceValue"
:event-function="eventFunction"
:print-read="printRead"
>
<template v-slot:[blank.name]="scope" v-for="blank in blanks">
<slot :name="blank.name" :model="scope.model"></slot>
</template>
</generate-tab-item>
<generate-form-item
v-else
:key="columnElement.key"
:models="dataModels"
:rules="rules"
:widget="columnElement"
:remote="remote"
:blanks="blanks"
:display="display"
:edit="edit"
:remote-option="remoteOption"
:platform="platform"
:preview="preview"
:container-key="containerKey"
:data-source-value="dataSourceValue"
:event-function="eventFunction"
:print-read="printRead"
>
<template v-slot:[blank.name]="scope" v-for="blank in blanks">
<slot :name="blank.name" :model="scope.model"></slot>
</template>
</generate-form-item>
</template>
</td>
</tr>
</table>
</template>
<script>
import GenerateFormItem from './GenerateFormItem'
import GenerateInline from './GenereteInline'
export default {
name: 'generate-report',
components: {
GenerateFormItem,
GenerateInline,
GenerateColItem : () => import('./GenerateColItem.vue'),
GenerateTabItem: () => import('./GenerateTabItem.vue')
},
props: ['element', 'model', 'rules', 'remote', 'blanks', 'display', 'edit', 'remoteOption', 'platform', 'preview', 'containerKey', 'dataSourceValue', 'eventFunction', 'printRead'],
data () {
return {
dataModels: this.model,
}
},
methods: {
},
watch: {
model: {
deep: true,
handler (val) {
this.dataModels = this.model
}
}
}
}
</script>