明树Git Lab

Commit c76a6f19 authored by zhanghan's avatar zhanghan

11

parent b320c6a1
Pipeline #108731 passed with stage
in 20 seconds
......@@ -53,6 +53,7 @@
:align="col.align || 'left'"
>
<template #default="scope">
<!-- Input 类型 -->
<template v-if="col.type === 'input'">
<el-input
v-model="scope.row[col.prop]"
......@@ -62,7 +63,8 @@
/>
</template>
<template v-else-if="col.type == 'textarea'">
<!-- Textarea 类型(修复:改为 ===) -->
<template v-else-if="col.type === 'textarea'">
<el-input
v-model="scope.row[col.prop]"
type="textarea"
......@@ -71,8 +73,11 @@
:rows="col.rows || 3"
:maxlength="col.maxlength"
:show-word-limit="col.showWordLimit || false"
style="width: 100%"
/>
</template>
<!-- Select 类型 -->
<template v-else-if="col.type === 'select'">
<el-select
v-model="scope.row[col.prop]"
......@@ -80,7 +85,6 @@
:disabled="disabled || col.disabled"
:multiple="col.multiple || false"
>
<!-- 优先用合并后的选项,无数据时提示 -->
<el-option
v-for="item in mergedSelectOptions[col.optionKey] || []"
:key="item.key || item.value"
......@@ -95,7 +99,8 @@
/>
</el-select>
</template>
<!-- 其他类型(number/radio/date等)保持不变 -->
<!-- Number 类型 -->
<template v-else-if="col.type === 'number'">
<el-input
v-model.number="scope.row[col.prop]"
......@@ -107,6 +112,8 @@
:max="col.max"
/>
</template>
<!-- Radio 类型 -->
<template v-else-if="col.type === 'radio'">
<el-radio-group
v-model="scope.row[col.prop]"
......@@ -120,11 +127,13 @@
>
{{ item.name || item.label }}
</el-radio>
<span v-if="!mergedSelectOptions[col.optionKey]?.length"
>暂无可选数据</span
>
<span v-if="!mergedSelectOptions[col.optionKey]?.length">
暂无可选数据
</span>
</el-radio-group>
</template>
<!-- Date/DateTime 类型 -->
<template
v-else-if="col.type === 'date' || col.type === 'datetime'"
>
......@@ -143,7 +152,7 @@
</el-table-column>
</template>
<!-- 单级表头渲染 -->
<!-- 单级表头渲染(核心修复:新增 textarea 分支) -->
<el-table-column
v-else
v-for="col in columns"
......@@ -154,6 +163,7 @@
:align="col.align || 'left'"
>
<template #default="scope">
<!-- Input 类型 -->
<template v-if="col.type === 'input'">
<el-input
v-model="scope.row[col.prop]"
......@@ -162,6 +172,22 @@
:maxlength="col.maxlength"
/>
</template>
<!-- 核心修复:新增 Textarea 类型分支 -->
<template v-else-if="col.type === 'textarea'">
<el-input
v-model="scope.row[col.prop]"
type="textarea"
:placeholder="col.placeholder || '请输入内容'"
:disabled="disabled || col.disabled"
:rows="col.rows || 3"
:maxlength="col.maxlength"
:show-word-limit="col.showWordLimit || false"
style="width: 100%"
/>
</template>
<!-- Select 类型 -->
<template v-else-if="col.type === 'select'">
<el-select
v-model="scope.row[col.prop]"
......@@ -183,7 +209,8 @@
/>
</el-select>
</template>
<!-- 其他类型(number/radio/date等)保持不变 -->
<!-- Number 类型 -->
<template v-else-if="col.type === 'number'">
<el-input
v-model.number="scope.row[col.prop]"
......@@ -195,6 +222,8 @@
:max="col.max"
/>
</template>
<!-- Radio 类型 -->
<template v-else-if="col.type === 'radio'">
<el-radio-group
v-model="scope.row[col.prop]"
......@@ -208,11 +237,13 @@
>
{{ item.name || item.label }}
</el-radio>
<span v-if="!mergedSelectOptions[col.optionKey]?.length"
>暂无可选数据</span
>
<span v-if="!mergedSelectOptions[col.optionKey]?.length">
暂无可选数据
</span>
</el-radio-group>
</template>
<!-- Date/DateTime 类型 -->
<template v-else-if="col.type === 'date' || col.type === 'datetime'">
<el-date-picker
v-model="scope.row[col.prop]"
......@@ -369,6 +400,12 @@ const headerColumnGroups = computed(() => {
const handleAdd = () => {
try {
const newRow = { ...props.defaultRow };
// 初始化textarea字段为空字符串,避免undefined导致绑定异常
props.columns.forEach((col) => {
if (col.type === "textarea" && !newRow[col.prop]) {
newRow[col.prop] = "";
}
});
const newData = [...props.modelValue, newRow];
emit("update:modelValue", newData);
emit("add", newRow);
......@@ -448,6 +485,12 @@ const handleCustomOperation = (btn, scope) => {
--el-table-row-hover-bg-color: #f8f9fa;
}
/* 确保textarea宽度100%,高度适配rows */
:deep(.el-input__textarea) {
width: 100%;
resize: vertical; /* 允许垂直调整高度 */
}
:deep(.el-upload),
:deep(.el-textarea),
:deep(.el-date-picker) {
......
......@@ -74,24 +74,26 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="评价结果">
<el-form-item label="总体评价结果">
<el-input
v-model="formData.hpjpjjg"
placeholder="请输入评价结果"
placeholder="请输入总体评价结果"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="问题整改" name="问题整改">
<el-collapse-item
title="存在的问题主要简述"
name="存在的问题主要简述"
>
<DynamicTable
v-model="formData.tzhpjwtzgs"
:columns="problemColumns"
:default-row="problemDefaultRow"
:select-options="selectOptions"
:show-import-export="true"
export-name="问题整改数据"
:scrollbar-always-on="true"
:disabled="isPreview"
/>
......@@ -135,10 +137,10 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="评价结果">
<el-form-item label="总体评价结果">
<el-input
v-model="formData.qsmpjjg"
placeholder="请输入评价结果"
placeholder="请输入总体评价结果"
/>
</el-form-item>
</el-col>
......@@ -180,11 +182,11 @@ const activeCollapse = ref([
"项目信息",
"项目公司自查报告",
"投资后评价报告",
"问题整改",
"存在的问题主要简述",
"全生命周期评价报告",
]);
// ========== 问题整改表格配置 ==========
// ========== 存在的问题主要简述表格配置 ==========
// 列配置(包含input、textarea、datetime、radio类型)
const problemColumns = ref([
{
......@@ -251,7 +253,7 @@ const problemColumns = ref([
},
]);
// 问题整改默认行数据
// 存在的问题主要简述默认行数据
const problemDefaultRow = ref({
ccwt: "",
wtxs: "",
......@@ -277,7 +279,7 @@ const formData = reactive({
xmgszcbg: [],
hpjbg: [],
qsmzqpj: [],
// 问题整改列表(由DynamicTable自动维护)
// 存在的问题主要简述列表(由DynamicTable自动维护)
tzhpjwtzgs: [],
});
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment