weizong song 3 months ago
parent d641276fc4
commit 8688fb80ff

@ -14,9 +14,9 @@
<template v-if="section.fields && Array.isArray(section.fields)">
<table class="info-table">
<tr
v-for="field in getVisibleFields(section)"
:key="field.key || field.element_id"
>
v-for="field in getVisibleFields(section)"
:key="field.key || field.element_id"
>
<td class="label">{{ field.label || field.name || '-' }}</td>
<td class="value">
<template v-if="getFieldValue(field)">
@ -48,13 +48,13 @@
disabled
class="checklist-checkbox"
>
{{ `${idx + 1}${opt.label}` }}
{{ `${idx + 1}${opt.label}` }}
</el-checkbox>
<span
v-if="getChecklistRemark(field, opt.value)"
class="checklist-remark-text"
>
{{ getChecklistRemark(field, opt.value) }}
<span
v-if="getChecklistRemark(field, opt.value)"
class="checklist-remark-text"
>
{{ getChecklistRemark(field, opt.value) }}
</span>
</div>
</div>
@ -88,43 +88,43 @@
v-for="(row, rowIdx) in getDetailTableData(field)"
:key="`row_${rowIdx}`"
class="detail-table-card"
>
>
<div class="detail-table-card__header">
<span class="detail-table-card__index"> {{ rowIdx + 1 }} </span>
</div>
<div class="detail-table-card__body">
<template v-if="getDetailTableFields(field).length">
<template v-if="getDetailTableFields(field).length">
<div
v-for="col in getDetailTableFields(field)"
:key="col.field_key"
v-for="col in getDetailTableFields(field)"
:key="col.field_key"
v-show="!isEmptyDetailTableValue(row[col.field_key])"
class="detail-table-card__field"
>
>
<span class="detail-table-card__label">{{ col.field_name }}</span>
<span class="detail-table-card__value">
<span v-if="col.field_type === 'department'">
{{ getDepartmentName(row[col.field_key]) }}
</span>
<span v-else-if="col.field_type === 'user'">
{{ getUserName(row[col.field_key]) }}
</span>
<span v-else>
{{ row[col.field_key] ?? '-' }}
</span>
<span v-if="col.field_type === 'department'">
{{ getDepartmentName(row[col.field_key]) }}
</span>
<span v-else-if="col.field_type === 'user'">
{{ getUserName(row[col.field_key]) }}
</span>
<span v-else>
{{ row[col.field_key] ?? '-' }}
</span>
</span>
</div>
</template>
<template v-else>
</template>
<template v-else>
<div
v-for="k in getAutoKeysForDetailTable(field)"
:key="k"
v-for="k in getAutoKeysForDetailTable(field)"
:key="k"
v-show="!isEmptyDetailTableValue(row[k])"
class="detail-table-card__field"
>
<span class="detail-table-card__label">{{ k }}</span>
<span class="detail-table-card__value">{{ row[k] ?? '-' }}</span>
</div>
</template>
</template>
</div>
</div>
</div>
@ -189,7 +189,7 @@
</el-link>
<span v-if="idx < getFileItems(field).length - 1" class="file-separator"></span>
</template>
</div>
</div>
<span v-else class="muted">-</span>
</div>
<!-- 默认显示 -->
@ -214,26 +214,26 @@
<h6 class="round-title"> {{ round.round }} 轮支付</h6>
<table class="info-table">
<tr
v-for="field in getVisibleRoundFields(round)"
:key="field.key || field.element_id"
>
v-for="field in getVisibleRoundFields(round)"
:key="field.key || field.element_id"
>
<td class="label">{{ field.label || field.name || '-' }}</td>
<td class="value">
<template v-if="getFieldValue(field)">
<span v-if="field.element_type === 'text' || field.element_type === 'textarea'">
{{ getFieldValue(field) }}
</span>
<span v-else-if="field.element_type === 'number'">
{{ formatNumber(getFieldValue(field)) }}
</span>
<span v-else-if="field.element_type === 'date'">
{{ formatDate(getFieldValue(field)) }}
</span>
<span v-else>
{{ formatDefaultValue(getFieldValue(field)) }}
</span>
</template>
<span v-else class="empty-value">-</span>
<template v-if="getFieldValue(field)">
<span v-if="field.element_type === 'text' || field.element_type === 'textarea'">
{{ getFieldValue(field) }}
</span>
<span v-else-if="field.element_type === 'number'">
{{ formatNumber(getFieldValue(field)) }}
</span>
<span v-else-if="field.element_type === 'date'">
{{ formatDate(getFieldValue(field)) }}
</span>
<span v-else>
{{ formatDefaultValue(getFieldValue(field)) }}
</span>
</template>
<span v-else class="empty-value">-</span>
</td>
</tr>
</table>
@ -535,7 +535,7 @@ const getFlowItems = (field) => {
const bindings = Array.isArray(props.flowBindings) ? props.flowBindings : []
let flowIds = []
// 1) element_id / field_key
const direct = bindings.filter(b => {
if (!b) return false

@ -712,7 +712,8 @@ const budgetTypeLabel = (type) => {
department: '部门预算',
project: '自有账户',
special_fund: '专项资金',
last_year_carryover: '上一年结转资金'
last_year_carryover: '上一年结转资金',
offset_prepaid: '抵消预付账款'
}
return map[type] || '未指定'
}
@ -733,11 +734,15 @@ const specialFundBudget = computed(() =>
const lastYearCarryoverBudget = computed(() =>
(budgetTree.value || []).filter(item => (item.budget_type || 'department') === 'last_year_carryover')
)
const offsetPrepaidBudget = computed(() =>
(budgetTree.value || []).filter(item => (item.budget_type || 'department') === 'offset_prepaid')
)
const budgetSections = computed(() => [
{ key: 'department', label: '部门预算', data: departmentBudget.value, tagType: 'success' },
{ key: 'special_fund', label: '专项资金', data: specialFundBudget.value, tagType: 'warning' },
{ key: 'last_year_carryover', label: '上一年结转资金', data: lastYearCarryoverBudget.value, tagType: 'danger' },
{ key: 'offset_prepaid', label: '抵消预付账款', data: offsetPrepaidBudget.value, tagType: 'primary' },
{ key: 'project', label: '自有账户', data: projectBudget.value, tagType: 'info' }
])
@ -752,6 +757,8 @@ const expandAll = (typeKey = null) => {
list = specialFundBudget.value
} else if (typeKey === 'last_year_carryover') {
list = lastYearCarryoverBudget.value
} else if (typeKey === 'offset_prepaid') {
list = offsetPrepaidBudget.value
} else {
list = budgetTree.value
}
@ -774,6 +781,8 @@ const collapseAll = (typeKey = null) => {
list = specialFundBudget.value
} else if (typeKey === 'last_year_carryover') {
list = lastYearCarryoverBudget.value
} else if (typeKey === 'offset_prepaid') {
list = offsetPrepaidBudget.value
} else {
list = budgetTree.value
}

@ -332,7 +332,8 @@ const budgetTypeOptions = [
{ value: 'department', label: '部门预算' },
{ value: 'project', label: '自有账户' },
{ value: 'special_fund', label: '专项资金' },
{ value: 'last_year_carryover', label: '上一年结转资金' }
{ value: 'last_year_carryover', label: '上一年结转资金' },
{ value: 'offset_prepaid', label: '抵消预付账款' }
]
const loading = ref(false)
@ -419,7 +420,8 @@ const getBudgetTypeLabel = (type) => {
department: '部门预算',
project: '自有账户',
special_fund: '专项资金',
last_year_carryover: '上一年结转资金'
last_year_carryover: '上一年结转资金',
offset_prepaid: '抵消预付账款'
}
return map[type] || '未指定'
}
@ -436,11 +438,15 @@ const specialFundTree = computed(() =>
const lastYearCarryoverTree = computed(() =>
(treeData.value || []).filter(item => (item.budget_type || 'department') === 'last_year_carryover')
)
const offsetPrepaidTree = computed(() =>
(treeData.value || []).filter(item => (item.budget_type || 'department') === 'offset_prepaid')
)
const typeSections = computed(() => [
{ key: 'department', label: '部门预算', data: departmentTree.value, tagType: 'success' },
{ key: 'special_fund', label: '专项资金', data: specialFundTree.value, tagType: 'warning' },
{ key: 'last_year_carryover', label: '上一年结转资金', data: lastYearCarryoverTree.value, tagType: 'danger' },
{ key: 'offset_prepaid', label: '抵消预付账款', data: offsetPrepaidTree.value, tagType: 'primary' },
{ key: 'project', label: '自有账户', data: projectTree.value, tagType: 'info' }
])
@ -521,11 +527,13 @@ const handleReset = () => {
const expandAll = (typeKey = null) => {
const refs = typeKey ? [treeRefs.value[typeKey]] : Object.values(treeRefs.value)
refs.forEach(tree => {
const nodes = tree?.store?.nodesMap
if (nodes) {
Object.values(nodes).forEach(node => {
node.expanded = true
})
if (tree) {
const nodes = tree?.store?.nodesMap
if (nodes) {
Object.values(nodes).forEach(node => {
node.expanded = true
})
}
}
})
}
@ -533,11 +541,13 @@ const expandAll = (typeKey = null) => {
const collapseAll = (typeKey = null) => {
const refs = typeKey ? [treeRefs.value[typeKey]] : Object.values(treeRefs.value)
refs.forEach(tree => {
const nodes = tree?.store?.nodesMap
if (nodes) {
Object.values(nodes).forEach(node => {
node.expanded = false
})
if (tree) {
const nodes = tree?.store?.nodesMap
if (nodes) {
Object.values(nodes).forEach(node => {
node.expanded = false
})
}
}
})
}

@ -53,9 +53,9 @@
@click="handleFlowInfoClick"
:title="payment.flow_info.title || payment.flow_info.no"
>
<span v-if="payment.flow_info.no">{{ payment.flow_info.no }}</span>
<span v-if="payment.flow_info.title"> - {{ payment.flow_info.title }}</span>
<span v-if="payment.flow_info.status_text" class="muted">{{ payment.flow_info.status_text }}</span>
<span v-if="payment.flow_info.no">{{ payment.flow_info.no }}</span>
<span v-if="payment.flow_info.title"> - {{ payment.flow_info.title }}</span>
<span v-if="payment.flow_info.status_text" class="muted">{{ payment.flow_info.status_text }}</span>
</span>
</td>
</tr>
@ -241,8 +241,8 @@
{{ idx + 1 }}{{ template.flow_info?.no || `流程ID: ${template.flow_id}` }} - {{ template.flow_info?.title || template.flow_title || '-' }}{{ template.flow_info?.creator_name || '-' }} {{ formatFlowCreatedAt(template.flow_info?.created_at) }}
</h3>
<div class="flow-template-content" v-html="template.html"></div>
</div>
</div>
</div>
</div>
</div>
</div>
@ -1274,7 +1274,7 @@ onMounted(() => {
max-width: 100%;
height: auto;
}
}
}
/* 流程信息抽屉样式 */
:deep(.flow-drawer .el-drawer) {
@ -1314,7 +1314,7 @@ onMounted(() => {
min-height: 0;
margin: 0;
padding: 0;
}
}
.oa-flow-iframe {
width: 100%;

Loading…
Cancel
Save