|
@@ -3,51 +3,45 @@
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :lg="30" :xs="24" style="">
|
|
|
<el-row :span="24" :gutter="10">
|
|
|
- <!-- 联系人姓名 -->
|
|
|
<el-col :span="6">
|
|
|
- <el-form-item label="联系人姓名:" prop="table_name" label-width="auto">
|
|
|
+ <el-form-item label="联系人姓名:" prop="creator_name" label-width="auto">
|
|
|
<div>{{ reportInfo.creator_name }}</div>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <!-- 联系电话 -->
|
|
|
<el-col :span="6">
|
|
|
- <el-form-item label="联系电话:" prop="table_phone" label-width="auto">
|
|
|
+ <el-form-item label="联系电话:" prop="creator_phone" label-width="auto">
|
|
|
<div>{{ reportInfo.creator_phone }}</div>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <!-- 选择填报人 -->
|
|
|
<el-col :span="6">
|
|
|
- <el-form-item label="选择填报人:" prop="table_name" label-width="auto">
|
|
|
+ <el-form-item label="选择填报人:" prop="people_name" label-width="auto">
|
|
|
<el-select v-model="selectedReporter" placeholder="请选择填报人">
|
|
|
<el-option v-for="reporter in reporters" :key="reporter.id" :label="reporter.name" :value="reporter.id" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <!-- 截止时间 -->
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="截止时间:" prop="release_time">
|
|
|
<div>{{ reportInfo.end_time }}</div>
|
|
|
<span class="label">前报送该表</span>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <!-- 操作按钮 -->
|
|
|
- <!-- 表名 -->
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="表名:" prop="table_name" label-width="auto">
|
|
|
<div>{{ reportInfo.table_name }}</div>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
|
- <el-button type="primary" @click="handleReport()">智能识别</el-button>
|
|
|
+ <el-button v-if="isBeforeDeadline" type="primary" @click="handleReport()">智能识别</el-button>
|
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
|
- <el-button type="primary" @click="handleSaveTemporarily">暂存</el-button>
|
|
|
+ <el-button v-if="isBeforeDeadline" type="primary" @click="handleSaveTemporarily()">暂存</el-button>
|
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
|
- <el-button type="primary" @click="handleData">数据</el-button>
|
|
|
+ <el-button v-if="!isBeforeDeadline" type="primary" @click="handleData()">数据</el-button>
|
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
|
- <el-button type="primary" @click="handleSave()">发布</el-button>
|
|
|
+ <el-button v-if="isBeforeDeadline" type="primary" @click="handleSave()">发布</el-button>
|
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
|
<el-button type="danger" @click="handleReturn()">返回</el-button>
|
|
@@ -56,18 +50,18 @@
|
|
|
</el-col>
|
|
|
<el-row :gutter="20" class="mb8">
|
|
|
<el-col :span="1.5">
|
|
|
- <el-button type="primary" @click="handleImportExcel">导入Excel文件</el-button>
|
|
|
+ <el-button v-if="isBeforeDeadline" type="primary" @click="handleImportExcel">导入Excel文件</el-button>
|
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
|
- <el-button type="primary" @click="handleNewTemplate">空白模板</el-button>
|
|
|
+ <el-button v-if="isBeforeDeadline" type="primary" @click="handleNewTemplate">空白模板</el-button>
|
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
|
- <el-button type="primary" @click="handleReload">重新加载</el-button>
|
|
|
+ <el-button v-if="isBeforeDeadline" type="primary" @click="handleReload">重新加载</el-button>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<!-- 表格组件 -->
|
|
|
<el-col :lg="30" :xs="24">
|
|
|
- <el-table :data="tableStructure" border>
|
|
|
+ <el-table :data="tableData" border>
|
|
|
<el-table-column v-for="header in editableHeaders" :key="header" :label="header" :prop="header">
|
|
|
<template #default="{ row, $index }">
|
|
|
<el-input v-model="row[header]" @blur="saveEdit($index, header, row[header])" />
|
|
@@ -80,10 +74,11 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
-import { onMounted, ref } from 'vue';
|
|
|
+import { onMounted, ref, watch } from 'vue';
|
|
|
import { ElButton, ElCol, ElFormItem, ElInput, ElOption, ElRow, ElSelect, ElTable, ElTableColumn } from 'element-plus';
|
|
|
import * as XLSX from 'xlsx';
|
|
|
import { fillingList } from '@/api/dataFilling/fillingManage';
|
|
|
+import { useRoute, useRouter } from 'vue-router';
|
|
|
|
|
|
const emits = defineEmits(['close']);
|
|
|
const reportInfo = ref({
|
|
@@ -98,24 +93,32 @@ const reportInfo = ref({
|
|
|
period_type: '',
|
|
|
creator_name: '',
|
|
|
creator_id: 0,
|
|
|
- creator_phone: '', // 添加 creator_phone 属性
|
|
|
+ creator_phone: '',
|
|
|
num_reporters: 0,
|
|
|
created_at: '',
|
|
|
updated_at: '',
|
|
|
num_reported: 0,
|
|
|
num_unreported: 0
|
|
|
});
|
|
|
-const tableStructure = ref([]); // 修改为数组
|
|
|
-const editableHeaders = ref([]); // 添加 editableHeaders 定义
|
|
|
-const field_names = ref([]); // 添加 field_names 定义
|
|
|
-const selectedReporter = ref(null); // 确保这个变量被定义
|
|
|
-const reporters = ref([]); // 确保这个数组被定义
|
|
|
+const tableStructure = ref([]);
|
|
|
+const editableHeaders = ref([]);
|
|
|
+const tableData = ref([]);
|
|
|
+const selectedReporter = ref(null);
|
|
|
+const reporters = ref([]);
|
|
|
+const route = useRoute();
|
|
|
+const router = useRouter();
|
|
|
|
|
|
const props = defineProps({
|
|
|
eventId: String
|
|
|
});
|
|
|
const reportId = ref(props.eventId);
|
|
|
|
|
|
+// 计算属性来判断是否在截止时间之前
|
|
|
+const isBeforeDeadline = computed(() => {
|
|
|
+ const deadline = new Date(reportInfo.value.end_time);
|
|
|
+ return new Date() < deadline;
|
|
|
+});
|
|
|
+
|
|
|
watch(reportId, async (newVal) => {
|
|
|
if (newVal) {
|
|
|
await fetchReportDetails(newVal);
|
|
@@ -132,27 +135,32 @@ onMounted(async () => {
|
|
|
const fetchReportDetails = async (reportId) => {
|
|
|
try {
|
|
|
const response = await fillingList(reportId);
|
|
|
- console.log('接口返回的数据:', response); // 打印完整的响应数据以便调试
|
|
|
- if (response.code === 200 && response.data) {
|
|
|
+ console.log('接口返回的数据:', response);
|
|
|
+ if (response.code === 200) {
|
|
|
reportInfo.value = {
|
|
|
- ...reportInfo.value,
|
|
|
- ...response.data.report_info, // 确保 reportInfo 被更新
|
|
|
- creator_phone: response.data.report_info.creator_phone // 确保 creator_phone 被更新
|
|
|
+ ...response.report_info
|
|
|
};
|
|
|
- // 假设 response.data.table_structure 是数组形式,包含列信息
|
|
|
- tableStructure.value = response.data.table_structure;
|
|
|
- editableHeaders.value = ['序号', ...response.data.table_structure.map((item) => item.column_name)];
|
|
|
+ tableStructure.value = response.table_structure;
|
|
|
+ editableHeaders.value = ['序号', ...response.table_structure.map((item) => item.comment)];
|
|
|
+ tableData.value = Array.from({ length: 10 }, (v, k) => ({
|
|
|
+ 序号: k + 1,
|
|
|
+ ...response.table_structure.reduce((acc, item) => {
|
|
|
+ acc[item.comment] = '';
|
|
|
+ return acc;
|
|
|
+ }, {})
|
|
|
+ }));
|
|
|
} else {
|
|
|
- throw new Error(`接口返回错误,状态码:${response.code}`);
|
|
|
+ throw new Error(`接口返回错误,状态码:${response.code},数据:${JSON.stringify(response)}`);
|
|
|
}
|
|
|
} catch (error) {
|
|
|
console.error('获取报告信息失败:', error);
|
|
|
- alert('获取报告信息失败: ' + error.message);
|
|
|
+ alert(error.message);
|
|
|
+ throw error;
|
|
|
}
|
|
|
};
|
|
|
|
|
|
function saveEdit(rowIndex, header, value) {
|
|
|
- field_names.value[rowIndex][header] = value;
|
|
|
+ tableData.value[rowIndex][header] = value;
|
|
|
}
|
|
|
|
|
|
const handleNewTemplate = () => {
|
|
@@ -189,7 +197,7 @@ const handleImportExcel = () => {
|
|
|
};
|
|
|
|
|
|
const handleReload = () => {
|
|
|
- field_names.value = [];
|
|
|
+ tableData.value = [];
|
|
|
alert('表格已清空');
|
|
|
};
|
|
|
|
|
@@ -211,11 +219,11 @@ const handleSave = async () => {
|
|
|
creator_name: reportInfo.value.creator_name,
|
|
|
creator_id: reportInfo.value.creator_id,
|
|
|
creator_phone: reportInfo.value.creator_phone, // 使用 reportInfo 中的 creator_phone
|
|
|
- field_names: field_names.value,
|
|
|
+ field_names: tableData.value,
|
|
|
user_ids: []
|
|
|
};
|
|
|
try {
|
|
|
- const response = await fillingAdd(data); // 确保 fillingAdd 函数被定义
|
|
|
+ const response = await fillingList(data); // 确保 fillingAdd 函数被定义
|
|
|
if (response && response.success) {
|
|
|
alert('数据已成功保存');
|
|
|
} else {
|
|
@@ -232,7 +240,7 @@ const handleReturn = () => {
|
|
|
};
|
|
|
|
|
|
const handleData = () => {
|
|
|
- // 实现具体的数据处理逻辑
|
|
|
- console.log('处理数据');
|
|
|
+ // 跳转到数据档案管理-详情页
|
|
|
+ router.push({ name: 'DataArchiveDetail', params: { reportId: reportInfo.value.report_id } });
|
|
|
};
|
|
|
</script>
|