明树Git Lab
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
J
jt_front
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
jt_front
Commits
c76a6f19
Commit
c76a6f19
authored
Mar 23, 2026
by
zhanghan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
11
parent
b320c6a1
Pipeline
#108731
passed with stage
in 20 seconds
Changes
5
Pipelines
1
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
66 additions
and
5652 deletions
+66
-5652
index.vue
src/components/FormDynamicTable/index.vue
+54
-11
evaluateAdd.vue
src/views/castbehind/evaluateAdd.vue
+12
-10
shareAdd.vue.backup
src/views/everydayPage/shareAdd.vue.backup
+0
-1877
shareAdd.vue.backup2
src/views/everydayPage/shareAdd.vue.backup2
+0
-1877
shareAdd.vue.backup3
src/views/everydayPage/shareAdd.vue.backup3
+0
-1877
No files found.
src/components/FormDynamicTable/index.vue
View file @
c76a6f19
...
@@ -53,6 +53,7 @@
...
@@ -53,6 +53,7 @@
:align=
"col.align || 'left'"
:align=
"col.align || 'left'"
>
>
<template
#
default=
"scope"
>
<template
#
default=
"scope"
>
<!-- Input 类型 -->
<template
v-if=
"col.type === 'input'"
>
<template
v-if=
"col.type === 'input'"
>
<el-input
<el-input
v-model=
"scope.row[col.prop]"
v-model=
"scope.row[col.prop]"
...
@@ -62,7 +63,8 @@
...
@@ -62,7 +63,8 @@
/>
/>
</
template
>
</
template
>
<
template
v-else-if=
"col.type == 'textarea'"
>
<!-- Textarea 类型(修复:改为 ===) -->
<
template
v-else-if=
"col.type === 'textarea'"
>
<el-input
<el-input
v-model=
"scope.row[col.prop]"
v-model=
"scope.row[col.prop]"
type=
"textarea"
type=
"textarea"
...
@@ -71,8 +73,11 @@
...
@@ -71,8 +73,11 @@
:rows=
"col.rows || 3"
:rows=
"col.rows || 3"
:maxlength=
"col.maxlength"
:maxlength=
"col.maxlength"
:show-word-limit=
"col.showWordLimit || false"
:show-word-limit=
"col.showWordLimit || false"
style=
"width: 100%"
/>
/>
</
template
>
</
template
>
<!-- Select 类型 -->
<
template
v-else-if=
"col.type === 'select'"
>
<
template
v-else-if=
"col.type === 'select'"
>
<el-select
<el-select
v-model=
"scope.row[col.prop]"
v-model=
"scope.row[col.prop]"
...
@@ -80,7 +85,6 @@
...
@@ -80,7 +85,6 @@
:disabled=
"disabled || col.disabled"
:disabled=
"disabled || col.disabled"
:multiple=
"col.multiple || false"
:multiple=
"col.multiple || false"
>
>
<!-- 优先用合并后的选项,无数据时提示 -->
<el-option
<el-option
v-for=
"item in mergedSelectOptions[col.optionKey] || []"
v-for=
"item in mergedSelectOptions[col.optionKey] || []"
:key=
"item.key || item.value"
:key=
"item.key || item.value"
...
@@ -95,7 +99,8 @@
...
@@ -95,7 +99,8 @@
/>
/>
</el-select>
</el-select>
</
template
>
</
template
>
<!-- 其他类型(number/radio/date等)保持不变 -->
<!-- Number 类型 -->
<
template
v-else-if=
"col.type === 'number'"
>
<
template
v-else-if=
"col.type === 'number'"
>
<el-input
<el-input
v-model
.
number=
"scope.row[col.prop]"
v-model
.
number=
"scope.row[col.prop]"
...
@@ -107,6 +112,8 @@
...
@@ -107,6 +112,8 @@
:max=
"col.max"
:max=
"col.max"
/>
/>
</
template
>
</
template
>
<!-- Radio 类型 -->
<
template
v-else-if=
"col.type === 'radio'"
>
<
template
v-else-if=
"col.type === 'radio'"
>
<el-radio-group
<el-radio-group
v-model=
"scope.row[col.prop]"
v-model=
"scope.row[col.prop]"
...
@@ -120,11 +127,13 @@
...
@@ -120,11 +127,13 @@
>
>
{{
item
.
name
||
item
.
label
}}
{{
item
.
name
||
item
.
label
}}
</el-radio>
</el-radio>
<span
v-if=
"!mergedSelectOptions[col.optionKey]?.length"
<span
v-if=
"!mergedSelectOptions[col.optionKey]?.length"
>
>
暂无可选数据
</span
暂无可选数据
>
</span
>
</el-radio-group>
</el-radio-group>
</
template
>
</
template
>
<!-- Date/DateTime 类型 -->
<
template
<
template
v-else-if=
"col.type === 'date' || col.type === 'datetime'"
v-else-if=
"col.type === 'date' || col.type === 'datetime'"
>
>
...
@@ -143,7 +152,7 @@
...
@@ -143,7 +152,7 @@
</el-table-column>
</el-table-column>
</template>
</template>
<!-- 单级表头渲染 -->
<!-- 单级表头渲染
(核心修复:新增 textarea 分支)
-->
<el-table-column
<el-table-column
v-else
v-else
v-for=
"col in columns"
v-for=
"col in columns"
...
@@ -154,6 +163,7 @@
...
@@ -154,6 +163,7 @@
:align=
"col.align || 'left'"
:align=
"col.align || 'left'"
>
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<!-- Input 类型 -->
<template
v-if=
"col.type === 'input'"
>
<template
v-if=
"col.type === 'input'"
>
<el-input
<el-input
v-model=
"scope.row[col.prop]"
v-model=
"scope.row[col.prop]"
...
@@ -162,6 +172,22 @@
...
@@ -162,6 +172,22 @@
:maxlength=
"col.maxlength"
:maxlength=
"col.maxlength"
/>
/>
</
template
>
</
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'"
>
<
template
v-else-if=
"col.type === 'select'"
>
<el-select
<el-select
v-model=
"scope.row[col.prop]"
v-model=
"scope.row[col.prop]"
...
@@ -183,7 +209,8 @@
...
@@ -183,7 +209,8 @@
/>
/>
</el-select>
</el-select>
</
template
>
</
template
>
<!-- 其他类型(number/radio/date等)保持不变 -->
<!-- Number 类型 -->
<
template
v-else-if=
"col.type === 'number'"
>
<
template
v-else-if=
"col.type === 'number'"
>
<el-input
<el-input
v-model
.
number=
"scope.row[col.prop]"
v-model
.
number=
"scope.row[col.prop]"
...
@@ -195,6 +222,8 @@
...
@@ -195,6 +222,8 @@
:max=
"col.max"
:max=
"col.max"
/>
/>
</
template
>
</
template
>
<!-- Radio 类型 -->
<
template
v-else-if=
"col.type === 'radio'"
>
<
template
v-else-if=
"col.type === 'radio'"
>
<el-radio-group
<el-radio-group
v-model=
"scope.row[col.prop]"
v-model=
"scope.row[col.prop]"
...
@@ -208,11 +237,13 @@
...
@@ -208,11 +237,13 @@
>
>
{{
item
.
name
||
item
.
label
}}
{{
item
.
name
||
item
.
label
}}
</el-radio>
</el-radio>
<span
v-if=
"!mergedSelectOptions[col.optionKey]?.length"
<span
v-if=
"!mergedSelectOptions[col.optionKey]?.length"
>
>
暂无可选数据
</span
暂无可选数据
>
</span
>
</el-radio-group>
</el-radio-group>
</
template
>
</
template
>
<!-- Date/DateTime 类型 -->
<
template
v-else-if=
"col.type === 'date' || col.type === 'datetime'"
>
<
template
v-else-if=
"col.type === 'date' || col.type === 'datetime'"
>
<el-date-picker
<el-date-picker
v-model=
"scope.row[col.prop]"
v-model=
"scope.row[col.prop]"
...
@@ -369,6 +400,12 @@ const headerColumnGroups = computed(() => {
...
@@ -369,6 +400,12 @@ const headerColumnGroups = computed(() => {
const
handleAdd
=
()
=>
{
const
handleAdd
=
()
=>
{
try
{
try
{
const
newRow
=
{
...
props
.
defaultRow
};
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
];
const
newData
=
[...
props
.
modelValue
,
newRow
];
emit
(
"update:modelValue"
,
newData
);
emit
(
"update:modelValue"
,
newData
);
emit
(
"add"
,
newRow
);
emit
(
"add"
,
newRow
);
...
@@ -448,6 +485,12 @@ const handleCustomOperation = (btn, scope) => {
...
@@ -448,6 +485,12 @@ const handleCustomOperation = (btn, scope) => {
--el-table-row-hover-bg-color: #f8f9fa;
--el-table-row-hover-bg-color: #f8f9fa;
}
}
/* 确保textarea宽度100%,高度适配rows */
:deep(.el-input__textarea) {
width: 100%;
resize: vertical; /* 允许垂直调整高度 */
}
:deep(.el-upload),
:deep(.el-upload),
:deep(.el-textarea),
:deep(.el-textarea),
:deep(.el-date-picker) {
:deep(.el-date-picker) {
...
...
src/views/castbehind/evaluateAdd.vue
View file @
c76a6f19
...
@@ -74,24 +74,26 @@
...
@@ -74,24 +74,26 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"评价结果"
>
<el-form-item
label=
"
总体
评价结果"
>
<el-input
<el-input
v-model=
"formData.hpjpjjg"
v-model=
"formData.hpjpjjg"
placeholder=
"请输入评价结果"
placeholder=
"请输入
总体
评价结果"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
</el-collapse-item>
</el-collapse-item>
<el-collapse-item
title=
"问题整改"
name=
"问题整改"
>
<el-collapse-item
title=
"存在的问题主要简述"
name=
"存在的问题主要简述"
>
<DynamicTable
<DynamicTable
v-model=
"formData.tzhpjwtzgs"
v-model=
"formData.tzhpjwtzgs"
:columns=
"problemColumns"
:columns=
"problemColumns"
:default-row=
"problemDefaultRow"
:default-row=
"problemDefaultRow"
:select-options=
"selectOptions"
:select-options=
"selectOptions"
:show-import-export=
"true"
:show-import-export=
"true"
export-name=
"问题整改数据"
:scrollbar-always-on=
"true"
:scrollbar-always-on=
"true"
:disabled=
"isPreview"
:disabled=
"isPreview"
/>
/>
...
@@ -135,10 +137,10 @@
...
@@ -135,10 +137,10 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"评价结果"
>
<el-form-item
label=
"
总体
评价结果"
>
<el-input
<el-input
v-model=
"formData.qsmpjjg"
v-model=
"formData.qsmpjjg"
placeholder=
"请输入评价结果"
placeholder=
"请输入
总体
评价结果"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
...
@@ -180,11 +182,11 @@ const activeCollapse = ref([
...
@@ -180,11 +182,11 @@ const activeCollapse = ref([
"项目信息"
,
"项目信息"
,
"项目公司自查报告"
,
"项目公司自查报告"
,
"投资后评价报告"
,
"投资后评价报告"
,
"
问题整改
"
,
"
存在的问题主要简述
"
,
"全生命周期评价报告"
,
"全生命周期评价报告"
,
]);
]);
// ==========
问题整改
表格配置 ==========
// ==========
存在的问题主要简述
表格配置 ==========
// 列配置(包含input、textarea、datetime、radio类型)
// 列配置(包含input、textarea、datetime、radio类型)
const
problemColumns
=
ref
([
const
problemColumns
=
ref
([
{
{
...
@@ -251,7 +253,7 @@ const problemColumns = ref([
...
@@ -251,7 +253,7 @@ const problemColumns = ref([
},
},
]);
]);
//
问题整改
默认行数据
//
存在的问题主要简述
默认行数据
const
problemDefaultRow
=
ref
({
const
problemDefaultRow
=
ref
({
ccwt
:
""
,
ccwt
:
""
,
wtxs
:
""
,
wtxs
:
""
,
...
@@ -277,7 +279,7 @@ const formData = reactive({
...
@@ -277,7 +279,7 @@ const formData = reactive({
xmgszcbg
:
[],
xmgszcbg
:
[],
hpjbg
:
[],
hpjbg
:
[],
qsmzqpj
:
[],
qsmzqpj
:
[],
//
问题整改
列表(由DynamicTable自动维护)
//
存在的问题主要简述
列表(由DynamicTable自动维护)
tzhpjwtzgs
:
[],
tzhpjwtzgs
:
[],
});
});
...
...
src/views/everydayPage/shareAdd.vue.backup
deleted
100644 → 0
View file @
b320c6a1
This diff is collapsed.
Click to expand it.
src/views/everydayPage/shareAdd.vue.backup2
deleted
100644 → 0
View file @
b320c6a1
This diff is collapsed.
Click to expand it.
src/views/everydayPage/shareAdd.vue.backup3
deleted
100644 → 0
View file @
b320c6a1
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment