明树Git Lab

Commit 5c1a28a5 authored by zhanghan's avatar zhanghan

工期

parent b3b1feaf
Pipeline #108779 passed with stage
in 20 seconds
......@@ -35,6 +35,90 @@
>
<el-table-column type="selection" width="55" :disabled="disabled" />
<el-table-column prop="originalname" label="文件名" />
<!-- 新增:自定义可配置列 -->
<template
v-for="(col, index) in customColumns"
:key="`custom-col-${index}`"
>
<el-table-column
:prop="col.prop"
:label="col.label"
:width="col.width"
:fixed="col.fixed"
:align="col.align || 'left'"
>
<template #default="{ row, $index }">
<!-- 输入框 -->
<el-input
v-if="col.type === 'input'"
v-model="row[col.prop]"
:disabled="disabled || col.disabled"
:placeholder="col.placeholder || `请输入${col.label}`"
size="small"
@change="handleCustomColChange(row, col.prop, $index)"
/>
<el-input
v-else-if="col.type === 'textarea'"
v-model="row[col.prop]"
:disabled="disabled || col.disabled"
:placeholder="col.placeholder || `请输入${col.label}`"
:rows="col.rows || 2"
type="textarea"
size="small"
@change="handleCustomColChange(row, col.prop, $index)"
/>
<!-- 日期选择器 -->
<el-date-picker
v-else-if="col.type === 'date'"
v-model="row[col.prop]"
:disabled="disabled || col.disabled"
:format="col.format || 'YYYY-MM-DD'"
:value-format="col.valueFormat || 'YYYY-MM-DD'"
:placeholder="col.placeholder || `请选择${col.label}`"
size="small"
@change="handleCustomColChange(row, col.prop, $index)"
/>
<!-- 日期时间选择器 -->
<el-date-picker
v-else-if="col.type === 'datetime'"
v-model="row[col.prop]"
:disabled="disabled || col.disabled"
type="datetime"
:format="col.format || 'YYYY-MM-DD HH:mm:ss'"
:value-format="col.valueFormat || 'YYYY-MM-DD HH:mm:ss'"
:placeholder="col.placeholder || `请选择${col.label}`"
size="small"
@change="handleCustomColChange(row, col.prop, $index)"
/>
<!-- 下拉选择器 -->
<el-select
v-else-if="col.type === 'select'"
v-model="row[col.prop]"
:disabled="disabled || col.disabled"
:placeholder="col.placeholder || `请选择${col.label}`"
size="small"
@change="handleCustomColChange(row, col.prop, $index)"
>
<el-option
v-for="option in col.options || []"
:key="option.value"
:label="option.label"
:value="option.value"
/>
</el-select>
<!-- 自定义插槽(最高优先级) -->
<slot
v-else
:name="`custom-col-${col.prop}`"
:row="row"
:index="$index"
>
<!-- 默认显示字段值 -->
<span>{{ row[col.prop] || "-" }}</span>
</slot>
</template>
</el-table-column>
</template>
<el-table-column prop="updatedAt" label="上传时间">
<template #default="{ row }">
<span>{{ formatDate(row.updatedAt) }}</span>
......@@ -45,6 +129,8 @@
<span>{{ row.size }} MB</span>
</template>
</el-table-column>
<!-- 操作列 -->
<el-table-column fixed="right" label="操作" width="100">
<template #default="{ row, $index }">
<span class="download-btn" @click="handleDownload(row)">下载</span>
......@@ -144,12 +230,12 @@ import { ElMessageBox, ElMessage } from "element-plus";
import moment from "moment";
import windowConfig from "@/window";
// 引入需要的图标
import { Document, Download, Delete, ArrowDown } from "@element-plus/icons-vue"; // 补充缺失的 ArrowDown 图标
import { Document, Download, Delete, ArrowDown } from "@element-plus/icons-vue";
// 定义组件 props(放宽类型限制,增加兼容性
// 定义组件 props(新增 customColumns 配置
const props = defineProps({
modelValue: {
type: [Array, String, Number], // 兼容更多类型
type: [Array, String, Number],
default: () => [],
required: true,
},
......@@ -173,21 +259,42 @@ const props = defineProps({
Authorization: sessionStorage.getItem("authToken") || "",
}),
},
// 是否禁用(预览模式)- 默认值:false
disabled: {
type: Boolean,
default: false,
},
// 下载接口前缀 - 默认值:系统配置的baseUrl
downloadBaseUrl: {
type: String,
default: () => {
return windowConfig.baseUrl || "";
},
},
// 新增:自定义列配置
customColumns: {
type: Array,
default: () => [],
/**
* 列配置项说明:
* @param {string} prop - 字段名(必填)
* @param {string} label - 列标题(必填)
* @param {string} type - 组件类型:input/date/datetime/select(默认显示文本)
* @param {number} width - 列宽度
* @param {string} fixed - 是否固定列:left/right
* @param {string} align - 对齐方式:left/center/right
* @param {boolean} disabled - 是否禁用该列编辑
* @param {string} placeholder - 占位提示
* @param {string} format - 日期格式化(仅date/datetime)
* @param {string} valueFormat - 日期值格式化(仅date/datetime)
* @param {Array} options - 下拉选项(仅select),格式:[{label: '选项1', value: '1'}, ...]
*/
},
});
const emit = defineEmits(["update:modelValue"]);
const emit = defineEmits([
"update:modelValue",
// 新增:自定义列值变化事件
"custom-col-change",
]);
const selectedIds = ref([]);
const popoverVisible = ref(false);
......@@ -195,11 +302,9 @@ const popoverVisible = ref(false);
// 核心:安全处理文件列表,将非数组值转为空数组
const safeFileList = computed({
get() {
// 校验:如果是数组则直接返回,否则转为空数组
return Array.isArray(props.modelValue) ? props.modelValue : [];
},
set(value) {
// 向外发射的值始终是数组,保证数据类型统一
emit("update:modelValue", Array.isArray(value) ? value : []);
},
});
......@@ -212,7 +317,7 @@ const formatDate = (date) => {
// 文件上传成功处理
const handleUploadSuccess = (res) => {
if (res && res.data) {
safeFileList.value = [...safeFileList.value, res.data]; // 改用 safeFileList
safeFileList.value = [...safeFileList.value, res.data];
console.log("上传成功:", res.data);
ElMessage.success("文件上传成功");
popoverVisible.value = false;
......@@ -255,10 +360,9 @@ const handleDelete = (index) => {
type: "warning",
})
.then(() => {
const newList = [...safeFileList.value]; // 改用 safeFileList
const newList = [...safeFileList.value];
newList.splice(index, 1);
safeFileList.value = newList; // 改用 safeFileList
// 删除后关闭popover
safeFileList.value = newList;
popoverVisible.value = false;
})
.catch(() => {});
......@@ -273,21 +377,31 @@ const handleMultiDelete = () => {
})
.then(() => {
const newList = safeFileList.value.filter(
// 改用 safeFileList
(item) => !selectedIds.value.includes(item.id),
);
safeFileList.value = newList; // 改用 safeFileList
safeFileList.value = newList;
selectedIds.value = [];
})
.catch(() => {});
};
// 监听外部文件列表变化(改为监听 safeFileList,无需额外处理)
// 新增:自定义列值变化处理
const handleCustomColChange = (row, prop, index) => {
// 触发自定义列变化事件,向外传递修改后的数据
emit("custom-col-change", {
row, // 整行数据
prop, // 修改的字段名
value: row[prop], // 修改后的值
index, // 行索引
});
// 更新文件列表(保证响应式)
safeFileList.value = [...safeFileList.value];
};
// 监听外部文件列表变化
watch(
() => safeFileList.value,
(newVal) => {
// 空监听,仅保证响应式(safeFileList 已处理类型兼容)
},
(newVal) => {},
{ deep: true },
);
......@@ -307,10 +421,6 @@ watch(
width: 100%;
}
// ::v-deep .el-form-item__label {
// font-weight: 600;
// color: #509eff !important;
// }
.multi-delete-btn {
margin-left: 10px;
}
......@@ -484,4 +594,14 @@ watch(
:deep(.file-list::-webkit-scrollbar-thumb:hover) {
background: #a8a8a8;
}
// 新增:自定义列组件样式优化
:deep(.el-table .el-input),
:deep(.el-table .el-date-picker),
:deep(.el-table .el-select) {
width: 100%;
}
:deep(.el-table .el-input__wrapper) {
padding: 0 8px;
}
</style>
......@@ -60,10 +60,11 @@
:placeholder="col.placeholder"
:disabled="disabled || col.disabled"
:maxlength="col.maxlength"
size="small"
/>
</template>
<!-- Textarea 类型(修复:改为 ===) -->
<!-- Textarea 类型 -->
<template v-else-if="col.type === 'textarea'">
<el-input
v-model="scope.row[col.prop]"
......@@ -74,6 +75,7 @@
:maxlength="col.maxlength"
:show-word-limit="col.showWordLimit || false"
style="width: 100%"
size="small"
/>
</template>
......@@ -110,6 +112,7 @@
:precision="col.precision"
:min="col.min"
:max="col.max"
size="small"
/>
</template>
......@@ -145,6 +148,15 @@
:placeholder="col.placeholder"
:disabled="disabled || col.disabled"
style="width: 100%"
size="small"
/>
</template>
<!-- Upload 上传类型(核心适配) -->
<template v-else-if="col.type === 'upload'">
<FileUploader
v-model="scope.row[col.prop]"
:isInline="col.isInline ?? true"
/>
</template>
</template>
......@@ -152,7 +164,7 @@
</el-table-column>
</template>
<!-- 单级表头渲染(核心修复:新增 textarea 分支) -->
<!-- 单级表头渲染(核心) -->
<el-table-column
v-else
v-for="col in columns"
......@@ -170,10 +182,11 @@
:placeholder="col.placeholder"
:disabled="disabled || col.disabled"
:maxlength="col.maxlength"
size="small"
/>
</template>
<!-- 核心修复:新增 Textarea 类型分支 -->
<!-- Textarea 类型 -->
<template v-else-if="col.type === 'textarea'">
<el-input
v-model="scope.row[col.prop]"
......@@ -184,10 +197,11 @@
:maxlength="col.maxlength"
:show-word-limit="col.showWordLimit || false"
style="width: 100%"
size="small"
/>
</template>
<!-- Select 类型 -->
<!-- Select 类型(适配全局下拉选项) -->
<template v-else-if="col.type === 'select'">
<el-select
v-model="scope.row[col.prop]"
......@@ -220,6 +234,7 @@
:precision="col.precision"
:min="col.min"
:max="col.max"
size="small"
/>
</template>
......@@ -253,6 +268,15 @@
:placeholder="col.placeholder"
:disabled="disabled || col.disabled"
style="width: 100%"
size="small"
/>
</template>
<!-- Upload 上传类型(核心适配你的业务) -->
<template v-else-if="col.type === 'upload'">
<FileUploader
v-model="scope.row[col.prop]"
:isInline="col.isInline ?? true"
/>
</template>
</template>
......@@ -307,17 +331,29 @@
</template>
<script setup>
import { defineProps, defineEmits, ref, computed, onMounted } from "vue";
import {
defineProps,
defineEmits,
ref,
computed,
onMounted,
getCurrentInstance,
} from "vue";
import { ElMessageBox, ElMessage } from "element-plus";
// 引入文件上传组件(适配你的项目路径)
import FileUploader from "@/components/FileUploader/index.vue";
// 获取全局实例(用于接口请求/全局配置)
const { proxy } = getCurrentInstance();
// 定义Props(移除selectOptions的默认值,改为空对象)
// 定义Props
const props = defineProps({
modelValue: { type: Array, required: true, default: () => [] },
columns: { type: Array, required: true, default: () => [] },
defaultRow: { type: Object, default: () => ({}) },
addButtonText: { type: String, default: "新增" },
disabled: { type: Boolean, default: false },
selectOptions: { type: Object, default: () => ({}) }, // 父组件可选传
selectOptions: { type: Object, default: () => ({}) }, // 父组件自定义下拉选项
scrollbarAlwaysOn: { type: Boolean, default: false },
showAddButton: { type: Boolean, default: true },
showDeleteButton: { type: Boolean, default: true },
......@@ -337,27 +373,38 @@ const emit = defineEmits([
"import-success",
]);
// 1. 从sessionStorage读取全局选项(组件内部兜底
// 全局下拉选项(从sessionStorage读取,适配你的业务
const globalOptions = ref({});
// 默认上传配置(适配你的项目接口)
const defaultUploadUrl = ref("");
const defaultUploadHeaders = ref({});
const defaultDownloadUrl = ref("");
// 初始化全局配置
onMounted(() => {
try {
// 读取并解析sessionStorage中的resourceData
// 1. 读取全局下拉选项
const storageData = sessionStorage.getItem("resourceData");
globalOptions.value = storageData ? JSON.parse(storageData) : {};
// 可选:打印日志,方便调试
console.log("从sessionStorage读取的全局选项:", globalOptions.value);
// 2. 初始化默认上传配置(适配你的项目)
const baseUrl = proxy?.$config?.baseUrl || "";
defaultUploadUrl.value = `${baseUrl}/api/file/upload`;
defaultDownloadUrl.value = baseUrl;
defaultUploadHeaders.value = {
Authorization: sessionStorage.getItem("authToken") || "",
};
} catch (e) {
console.error("解析sessionStorage中的resourceData失败:", e);
console.error("初始化全局配置失败:", e);
globalOptions.value = {};
}
});
// 2. 合并选项:父组件传递的selectOptions 优先级 > 组件内部的globalOptions
// 合并下拉选项:父组件传入 > 全局配置
const mergedSelectOptions = computed(() => {
// 深合并,避免覆盖
return {
...globalOptions.value, // 兜底数据
...props.selectOptions, // 父组件自定义数据(覆盖兜底)
...globalOptions.value,
...props.selectOptions,
};
});
......@@ -396,13 +443,25 @@ const headerColumnGroups = computed(() => {
return result;
});
// 新增行
// 新增行(适配默认行数据,初始化upload字段为数组)
const handleAdd = () => {
try {
const newRow = { ...props.defaultRow };
// 初始化textarea字段为空字符串,避免undefined导致绑定异常
// 初始化各类型字段默认值
props.columns.forEach((col) => {
if (col.type === "textarea" && !newRow[col.prop]) {
// Textarea 初始化为空字符串
if (col.type === "textarea" && newRow[col.prop] === undefined) {
newRow[col.prop] = "";
}
// Upload 初始化为空数组
if (col.type === "upload" && newRow[col.prop] === undefined) {
newRow[col.prop] = [];
}
// Select/Input 初始化为空字符串
if (
["input", "select", "number"].includes(col.type) &&
newRow[col.prop] === undefined
) {
newRow[col.prop] = "";
}
});
......@@ -454,6 +513,7 @@ const handleCustomOperation = (btn, scope) => {
<style scoped lang="less">
.dynamic-table-container {
width: 100%;
margin-bottom: 16px;
}
.tab-handle {
......@@ -483,17 +543,28 @@ const handleCustomOperation = (btn, scope) => {
:deep(.el-table) {
--el-table-header-text-color: #303133;
--el-table-row-hover-bg-color: #f8f9fa;
--el-table-border-color: #ebeef5;
}
/* 确保textarea宽度100%,高度适配rows */
/* 适配各组件样式 */
:deep(.el-input__textarea) {
width: 100%;
resize: vertical; /* 允许垂直调整高度 */
resize: vertical;
}
:deep(.el-upload),
:deep(.el-textarea),
:deep(.el-date-picker) {
:deep(.el-date-picker),
:deep(.el-select) {
width: 100%;
}
/* 小尺寸组件适配 */
:deep(.el-input--small) {
--el-input-height: 32px;
}
:deep(.el-table-cell) {
padding: 8px 0;
}
</style>
......@@ -5,7 +5,11 @@
<div class="tabs-content">
<div class="project-tab-content">
<div class="tab-content">
<el-form :model="formData" :disabled="isPreview">
<el-form
:model="formData"
label-width="160px"
:disabled="isPreview"
>
<el-collapse v-model="activeCollapse">
<!-- 基本信息 -->
<el-collapse-item title="基本信息" name="基本信息">
......@@ -51,10 +55,6 @@
add-button-text="新增"
:default-row="zxjcDefaultRow"
:disabled="isPreview"
:select-options="{
construction_classify:
options?.construction_classify || [],
}"
/>
</el-collapse-item>
</el-collapse>
......@@ -97,15 +97,21 @@ const tzcbfxhzlColumns = ref([
},
{
prop: "ycztz",
label: "当期预测总投资",
label: "当期预测总投资(万元)",
type: "input",
placeholder: "请输入当期预测总投资",
placeholder: "请输入当期预测总投资(万元)",
},
{
prop: "zbjnbsyl",
label: "资本金内部收益率(%)",
label: "项目资本金内部收益率(%)",
type: "number",
placeholder: "请输入项目资本金内部收益率(%)",
},
{
prop: "wfzbjnbsyl",
label: "我方资本金内部收益率(%)",
type: "number",
placeholder: "请输入资本金内部收益率(%)",
placeholder: "请输入我方资本金内部收益率(%)",
},
{
prop: "tzcbfxhzl",
......@@ -128,17 +134,36 @@ const zxjcColumns = ref([
optionKey: "construction_classify",
placeholder: "请选择专项检查类型",
},
{
prop: "jcmc",
label: "检查名称",
type: "input",
placeholder: "请输入请输入检查名称",
},
{
prop: "jcsj",
label: "检查时间",
type: "date",
placeholder: "请输入请输入检查时间",
},
{
prop: "jcjg",
label: "检查结果",
label: "检查揭示的主要问题或结论",
type: "input",
placeholder: "请输入检查结果",
placeholder: "请输入请输入检查揭示的主要问题或结论",
},
{
prop: "zgcsqd",
label: "整改措施清单",
type: "input",
placeholder: "请输入整改措施清单",
type: "upload",
placeholder: "",
},
{
prop: "jcbg",
label: "检查报告",
type: "upload",
placeholder: "",
},
{
prop: "fjcl",
......@@ -179,48 +204,6 @@ const yyqtzjcTzfxsList = ref([]);
// 专项检查列表
const yyqtzjcZxjcsList = ref([]);
// ========== 投资(成本)分析会资料 操作方法 ==========
const addyyqtzjcTzfxs = () => {
yyqtzjcTzfxsList.value.push({
jd: "",
ycztz: "",
zbjnbsyl: "",
yyqtzjcTzfxs: [],
});
};
const deleteyyqtzjcTzfxs = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
yyqtzjcTzfxsList.value.splice(index, 1);
ElMessage.success("删除成功");
});
};
// ========== 专项检查 操作方法 ==========
const addyyqtzjcZxjcs = () => {
yyqtzjcZxjcsList.value.push({
zxjcfl: "",
jcjg: "",
zgcsqd: "",
fjcl: [],
});
};
const deleteyyqtzjcZxjcs = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
yyqtzjcZxjcsList.value.splice(index, 1);
ElMessage.success("删除成功");
});
};
// ========== 通用方法 ==========
// 获取项目列表
const getProjectData = (params = {}) => {
......
......@@ -129,11 +129,11 @@ const getProjectData = (params = {}) => {
tableData.value = data.rows.map((it) => {
return {
...it,
htNum: it.qylht?.length + it.jjlht?.length,
zjNum: it.zjwj?.length + it.ybfspwj?.length,
spNum: it.bgsp?.length,
gsNum: it.gqjg?.length + it.cwjr?.length,
qtNum: it.qt?.length,
htNum: it.qylht?.length + it.jjlht?.length || 0,
zjNum: it.zjwj?.length + it.ybfspwj?.length || 0,
spNum: it.bgsp?.length || 0,
gsNum: it.gqjg?.length + it.cwjr?.length || 0,
qtNum: it.qt?.length || 0,
};
});
total.value = data.count;
......
......@@ -5,7 +5,11 @@
<div class="tabs-content">
<div class="project-tab-content">
<div class="tab-content">
<el-form :model="formData" :disabled="isPreview">
<el-form
:model="formData"
label-width="160px"
:disabled="isPreview"
>
<!-- 项目信息选择 -->
<el-row :gutter="20" style="margin-bottom: 20px">
<el-col :span="12">
......@@ -35,13 +39,50 @@
<!-- 权益类合同 -->
<el-col :span="24">
<el-form-item label="权益类合同">
<FileUploader v-model="formData.qylht" />
<FileUploader
v-model="formData.qylht"
:custom-columns="[
{
prop: 'jfqdsj',
label: '甲方签订时间',
type: 'date',
width: 180,
format: 'YYYY-MM-DD',
},
{
prop: 'yfqdsj',
label: '乙方签订时间',
type: 'date',
width: 180,
format: 'YYYY-MM-DD',
},
]"
@custom-col-change="handleCustomColChange"
/>
</el-form-item>
</el-col>
<!-- 经济类合同 -->
<el-col :span="24">
<el-form-item label="经济类合同">
<FileUploader v-model="formData.jjlht" />
<FileUploader
:custom-columns="[
{
prop: 'jfqdsj',
label: '甲方签订时间',
type: 'date',
width: 180,
format: 'YYYY-MM-DD',
},
{
prop: 'yfqdsj',
label: '乙方签订时间',
type: 'date',
width: 180,
format: 'YYYY-MM-DD',
},
]"
v-model="formData.jjlht"
/>
</el-form-item>
</el-col>
</el-row>
......@@ -52,14 +93,37 @@
<el-row :gutter="20">
<!-- 造价文件 -->
<el-col :span="24">
<el-form-item label="造价文件">
<FileUploader v-model="formData.zjwj" />
<el-form-item label="决策文件">
<FileUploader v-model="formData.juecewj" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="估算文件">
<FileUploader v-model="formData.gusuanwj" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="概算文件">
<FileUploader v-model="formData.gaisuanwj" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="预算文件">
<FileUploader v-model="formData.yswj" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="调概文件">
<FileUploader v-model="formData.tgwj" />
</el-form-item>
</el-col>
<!-- 动用预备费审批文件 -->
<el-col :span="24">
<el-form-item label="动用预备费审批文件">
<FileUploader v-model="formData.ybfspwj" />
<FileUploader
:custom-columns="customColumnsJs"
v-model="formData.ybfspwj"
/>
</el-form-item>
</el-col>
</el-row>
......@@ -71,7 +135,10 @@
<!-- 变更索赔文件 -->
<el-col :span="24">
<el-form-item label="变更索赔文件">
<FileUploader v-model="formData.bgsp" />
<FileUploader
v-model="formData.bgsp"
:custom-columns="customColumnsJs"
/>
</el-form-item>
</el-col>
</el-row>
......@@ -85,17 +152,20 @@
<el-form-item
label="股权结构、资金来源及构成发生重大变化的报告及审批文件"
>
<FileUploader v-model="formData.gqjg" />
<FileUploader
v-model="formData.gqjg"
:custom-columns="customColumnsJs"
/>
</el-form-item>
</el-col>
<!-- 接入财务金融部资本金出资台账,台账更新,系统上跟着更新 -->
<el-col :span="24">
<!-- <el-col :span="24">
<el-form-item
label="接入财务金融部资本金出资台账,台账更新,系统上跟着更新"
>
<FileUploader v-model="formData.cwjr" />
</el-form-item>
</el-col>
</el-col> -->
</el-row>
</el-tab-pane>
......@@ -139,6 +209,15 @@ const router = useRouter();
const route = useRoute();
const { proxy } = getCurrentInstance();
const customColumnsJs = [
{
prop: "js",
label: "介绍",
type: "textarea",
width: 180,
format: "YYYY-MM-DD",
},
];
// 标签页默认激活项
const pageActiveName = ref("合同类");
......
......@@ -99,23 +99,37 @@
/>
</template>
</el-table-column>
<el-table-column prop="ycztz" label="当期预测总投资">
<el-table-column
prop="ycztz"
label="当期预测总投资(万元)"
>
<template #default="scope">
<el-input
type="number"
v-model.number="scope.row.ycztz"
placeholder="请输入当期预测总投资"
placeholder="请输入当期预测总投资(万元)"
/>
</template>
</el-table-column>
<el-table-column
prop="zbjnbsyl"
label="资本金内部收益率(%)"
label="项目资本金内部收益率(%)"
>
<template #default="scope">
<el-input
v-model.number="scope.row.zbjnbsyl"
placeholder="请输入资本金内部收益率(%)"
placeholder="请输入项目资本金内部收益率(%)"
/>
</template>
</el-table-column>
<el-table-column
prop="wfzbjnbsyl"
label="我方资本金内部收益率(%)"
>
<template #default="scope">
<el-input
v-model.number="scope.row.wfzbjnbsyl"
placeholder="请输入我方资本金内部收益率(%)"
/>
</template>
</el-table-column>
......@@ -173,22 +187,63 @@
</el-select>
</template>
</el-table-column>
<el-table-column prop="jcjg" label="检查结果">
<el-table-column prop="jcmc" label="检查名称">
<template #default="scope">
<el-input
v-model.number="scope.row.jcmc"
placeholder="请输入检查名称"
/>
</template>
</el-table-column>
<el-table-column prop="jcsj" label="检查时间">
<template #default="scope">
<el-date-picker
v-model="scope.row.jcsj"
type="date"
placeholder="请选择检查时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
/>
</template>
</el-table-column>
<el-table-column
prop="jcjg"
label="检查揭示的主要问题或结论"
>
<template #default="scope">
<el-input
v-model.number="scope.row.jcjg"
placeholder="请输入检查结果"
placeholder="请输入检查揭示的主要问题或结论"
/>
</template>
</el-table-column>
<el-table-column prop="zgcsqd" label="整改措施清单">
<!-- <el-table-column prop="zgcsqd" label="整改措施清单">
<template #default="scope">
<el-input
v-model.number="scope.row.zgcsqd"
placeholder="请输入整改措施清单"
/>
</template>
</el-table-column> -->
<el-table-column prop="zgcsqd" label="整改措施清单">
<template #default="scope">
<FileUploader
v-model="scope.row.zgcsqd"
:isInline="true"
></FileUploader>
</template>
</el-table-column>
<el-table-column prop="jcbg" label="检查报告">
<template #default="scope">
<FileUploader
v-model="scope.row.jcbg"
:isInline="true"
></FileUploader>
</template>
</el-table-column>
<el-table-column prop="fjcl" label="附件材料">
<template #default="scope">
<FileUploader
......@@ -293,6 +348,10 @@ const addJsqtzjcZxjcs = () => {
zxjcfl: null,
jcjg: null,
zgcsqd: null,
jcsj: null,
jcmc: null,
zgcsqd: [],
jcbg: [],
fjcl: [],
});
};
......
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