|
|
@@ -319,47 +319,200 @@
|
|
|
@cancel="handleCancel('dataDialog')"
|
|
|
>
|
|
|
<el-form
|
|
|
+ ref="dataDialogForm"
|
|
|
:model="dataDialogForm"
|
|
|
:rules="dataDialogRules"
|
|
|
- style="width: 50%"
|
|
|
+ style="width: 100%"
|
|
|
>
|
|
|
- <el-form-item label="资料名称">
|
|
|
- <el-input v-model="dataDialogForm.name"></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="资料序号">
|
|
|
- <el-input v-model="dataDialogForm.sortOrder"></el-input>
|
|
|
- </el-form-item>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="资料名称" prop="materialName">
|
|
|
+ <el-input
|
|
|
+ v-model="dataDialogForm.materialName"
|
|
|
+ placeholder="请输入资料名称"
|
|
|
+ clearable
|
|
|
+ @input="handleMaterialNameInput"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="序号" prop="materialOrderNum">
|
|
|
+ <el-input-number
|
|
|
+ v-model="dataDialogForm.materialOrderNum"
|
|
|
+ :min="1"
|
|
|
+ placeholder="请输入序号"
|
|
|
+ style="width: 100%"
|
|
|
+ ></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
</el-form>
|
|
|
- <CostAuditTable
|
|
|
- v-loading="loading"
|
|
|
- :table-data="dataDialogData"
|
|
|
- :columns="dataDialogColumns"
|
|
|
- :show-index="true"
|
|
|
- :border="true"
|
|
|
- :show-pagination="false"
|
|
|
- >
|
|
|
- <template slot="action" slot-scope="{ row, index }">
|
|
|
- <el-button type="text" size="small" @click="handleView(row)">
|
|
|
- 查看
|
|
|
- </el-button>
|
|
|
- <el-button type="text" size="small" @click="handleEdit(row, index)">
|
|
|
- 修改
|
|
|
- </el-button>
|
|
|
- <el-button type="text" size="small" @click="handlePreview(row)">
|
|
|
- 删除
|
|
|
- </el-button>
|
|
|
- </template>
|
|
|
- </CostAuditTable>
|
|
|
+ <!-- 查询结果列表 -->
|
|
|
+ <div v-if="materialQueryList.length > 0" style="margin-top: 20px">
|
|
|
+ <div style="margin-bottom: 10px; font-weight: 500">
|
|
|
+ 查询结果列表(点击行添加)
|
|
|
+ </div>
|
|
|
+ <el-table
|
|
|
+ v-loading="dataDialogLoading"
|
|
|
+ :data="materialQueryList"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ :row-style="{ cursor: 'pointer' }"
|
|
|
+ @row-click="handleAddFileFromList"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ type="index"
|
|
|
+ label="序号"
|
|
|
+ width="60"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="materialOrderNum"
|
|
|
+ label="序号"
|
|
|
+ width="100"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="materialName"
|
|
|
+ label="资料名称"
|
|
|
+ min-width="200"
|
|
|
+ align="left"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="documentName"
|
|
|
+ label="文书名称"
|
|
|
+ min-width="200"
|
|
|
+ align="left"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="documentNo"
|
|
|
+ label="文号"
|
|
|
+ width="150"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="auditedUnit"
|
|
|
+ label="被监审单位"
|
|
|
+ min-width="150"
|
|
|
+ align="left"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="generateTime"
|
|
|
+ label="生成(上传)时间"
|
|
|
+ width="180"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="fileSource"
|
|
|
+ label="文件来源"
|
|
|
+ width="120"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ label="操作"
|
|
|
+ width="100"
|
|
|
+ align="center"
|
|
|
+ fixed="right"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ style="color: #409eff"
|
|
|
+ @click.stop="handleAddFileFromList(row)"
|
|
|
+ >
|
|
|
+ 添加
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ <!-- 已添加列表 -->
|
|
|
+ <div style="margin-top: 20px">
|
|
|
+ <div style="margin-bottom: 10px; font-weight: 500">
|
|
|
+ 已添加列表(共 {{ selectedFileList.length }} 条)
|
|
|
+ </div>
|
|
|
+ <el-table :data="selectedFileList" border style="width: 100%">
|
|
|
+ <el-table-column
|
|
|
+ type="index"
|
|
|
+ label="序号"
|
|
|
+ width="60"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="materialOrderNum"
|
|
|
+ label="序号"
|
|
|
+ width="100"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <el-input-number
|
|
|
+ v-model="row.materialOrderNum"
|
|
|
+ :min="1"
|
|
|
+ size="mini"
|
|
|
+ style="width: 100%"
|
|
|
+ @change="handleOrderNumChange"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="materialName"
|
|
|
+ label="资料名称"
|
|
|
+ min-width="200"
|
|
|
+ align="left"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="documentName"
|
|
|
+ label="文书名称"
|
|
|
+ min-width="200"
|
|
|
+ align="left"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="documentNo"
|
|
|
+ label="文号"
|
|
|
+ width="150"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="auditedUnit"
|
|
|
+ label="被监审单位"
|
|
|
+ min-width="150"
|
|
|
+ align="left"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="generateTime"
|
|
|
+ label="生成(上传)时间"
|
|
|
+ width="180"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="fileSource"
|
|
|
+ label="文件来源"
|
|
|
+ width="120"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ label="操作"
|
|
|
+ width="100"
|
|
|
+ align="center"
|
|
|
+ fixed="right"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row, $index }">
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ style="color: #f56c6c"
|
|
|
+ @click="handleDeleteFile(row, $index)"
|
|
|
+ >
|
|
|
+ 删除
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
<div slot="footer">
|
|
|
- <el-button type="primary" @click="handleSubmit('dataDialog')">
|
|
|
- 添加资料
|
|
|
- </el-button>
|
|
|
- <el-button type="primary" @click="handleSubmit('dataDialog')">
|
|
|
- 文件排序
|
|
|
- </el-button>
|
|
|
- <el-button type="primary" @click="handleSubmit('dataDialog')">
|
|
|
- 保存
|
|
|
- </el-button>
|
|
|
+ <el-button type="primary" @click="handleAddFile">添加文件</el-button>
|
|
|
+ <el-button type="primary" @click="handleSaveDataDialog">保存</el-button>
|
|
|
<el-button @click="handleCancel('dataDialog')">取消</el-button>
|
|
|
</div>
|
|
|
</CostAuditDialog>
|
|
|
@@ -372,6 +525,11 @@
|
|
|
import CostAuditDialog from '@/components/costAudit/CostAuditDialog.vue'
|
|
|
import taskDetail from '@/components/task/taskDetail.vue'
|
|
|
import { getArchiveList } from '@/api/audit/archive'
|
|
|
+ import {
|
|
|
+ getDataInductionList,
|
|
|
+ addDataInductionList,
|
|
|
+ editDataInductionList,
|
|
|
+ } from '@/api/audit/dataInduction'
|
|
|
export default {
|
|
|
name: 'PendingArchiveList',
|
|
|
components: {
|
|
|
@@ -397,6 +555,7 @@
|
|
|
activeTab: 'list', // list
|
|
|
currentStep: 0, // 当前步骤 0:资料归纳 1:目录核对 2:档案预览
|
|
|
archiveTab: 'dataCollect', // 归档页面标签页 dataCollect preview
|
|
|
+ currentArchiveRow: null, // 当前归档的行数据,用于获取taskId
|
|
|
archiveColumns: [
|
|
|
{
|
|
|
prop: 'name',
|
|
|
@@ -634,104 +793,75 @@
|
|
|
],
|
|
|
dataDialogTitle: '添加资料',
|
|
|
dataDialogVisible: false,
|
|
|
+ dataDialogLoading: false,
|
|
|
dataDialogForm: {
|
|
|
- name: '',
|
|
|
- sortOrder: '',
|
|
|
+ materialName: '',
|
|
|
+ materialOrderNum: 1,
|
|
|
},
|
|
|
dataDialogRules: {
|
|
|
- name: [
|
|
|
+ materialName: [
|
|
|
{ required: true, message: '请输入资料名称', trigger: 'blur' },
|
|
|
],
|
|
|
- sortOrder: [
|
|
|
- { required: true, message: '请输入资料序号', trigger: 'blur' },
|
|
|
+ materialOrderNum: [
|
|
|
+ { required: true, message: '请输入序号', trigger: 'blur' },
|
|
|
],
|
|
|
},
|
|
|
dataDialogColumns: [
|
|
|
{
|
|
|
+ prop: 'materialOrderNum',
|
|
|
+ label: '序号',
|
|
|
+ width: 100,
|
|
|
+ align: 'center',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'materialName',
|
|
|
+ label: '资料名称',
|
|
|
+ minWidth: 200,
|
|
|
+ align: 'left',
|
|
|
+ },
|
|
|
+ {
|
|
|
prop: 'documentName',
|
|
|
label: '文书名称',
|
|
|
+ minWidth: 200,
|
|
|
align: 'left',
|
|
|
},
|
|
|
{
|
|
|
prop: 'documentNo',
|
|
|
label: '文号',
|
|
|
+ width: 150,
|
|
|
+ align: 'center',
|
|
|
},
|
|
|
{
|
|
|
prop: 'auditedUnit',
|
|
|
label: '被监审单位',
|
|
|
+ minWidth: 150,
|
|
|
+ align: 'left',
|
|
|
},
|
|
|
{
|
|
|
prop: 'generateTime',
|
|
|
label: '生成(上传)时间',
|
|
|
+ width: 180,
|
|
|
+ align: 'center',
|
|
|
},
|
|
|
{
|
|
|
prop: 'fileSource',
|
|
|
label: '文件来源',
|
|
|
+ width: 120,
|
|
|
+ align: 'center',
|
|
|
},
|
|
|
{
|
|
|
slotName: 'action',
|
|
|
label: '操作',
|
|
|
+ width: 100,
|
|
|
fixed: 'right',
|
|
|
},
|
|
|
],
|
|
|
- dataDialogData: [
|
|
|
- {
|
|
|
- id: 1,
|
|
|
- documentName: '成本监审报告',
|
|
|
- documentNo: '晋成审报(2025)11号',
|
|
|
- auditedUnit: '*****A公司',
|
|
|
- generateTime: '2025-5-11 16:40',
|
|
|
- fileSource: '系统生成电子文书',
|
|
|
- },
|
|
|
- {
|
|
|
- id: 2,
|
|
|
- documentName: '成本监审报告送达回证',
|
|
|
- documentNo: '',
|
|
|
- auditedUnit: '*****A公司',
|
|
|
- generateTime: '2025-5-11 16:56',
|
|
|
- fileSource: '监审单位反馈文件',
|
|
|
- },
|
|
|
- {
|
|
|
- id: 3,
|
|
|
- documentName: '成本监审报告',
|
|
|
- documentNo: '晋成审报(2025)12号',
|
|
|
- auditedUnit: '*****B公司',
|
|
|
- generateTime: '2025-5-11 16:56',
|
|
|
- fileSource: '系统生成电子文书',
|
|
|
- },
|
|
|
- {
|
|
|
- id: 4,
|
|
|
- documentName: '成本监审报告送达回证',
|
|
|
- documentNo: '',
|
|
|
- auditedUnit: '*****B公司',
|
|
|
- generateTime: '2025-5-11 16:56',
|
|
|
- fileSource: '监审单位反馈文件',
|
|
|
- },
|
|
|
- {
|
|
|
- id: 5,
|
|
|
- documentName: '成本监审报告',
|
|
|
- documentNo: '晋成审报(2025)13号',
|
|
|
- auditedUnit: '*****C公司',
|
|
|
- generateTime: '2025-5-11 16:56',
|
|
|
- fileSource: '系统生成电子文书',
|
|
|
- },
|
|
|
- {
|
|
|
- id: 6,
|
|
|
- documentName: '成本监审报告送达回证',
|
|
|
- documentNo: '',
|
|
|
- auditedUnit: '*****C公司',
|
|
|
- generateTime: '2025-5-11 16:56',
|
|
|
- fileSource: '监审单位反馈文件',
|
|
|
- },
|
|
|
- {
|
|
|
- id: 7,
|
|
|
- documentName: '成本监审报告交换稿',
|
|
|
- documentNo: '',
|
|
|
- auditedUnit: 'A公司、B公司、C公司',
|
|
|
- generateTime: '2025-5-16 16:56',
|
|
|
- fileSource: '监管主体上传文件',
|
|
|
- },
|
|
|
- ],
|
|
|
+ dataDialogData: [], // 已废弃,保留用于兼容
|
|
|
+ materialQueryList: [], // 查询结果列表
|
|
|
+ selectedFileList: [], // 已选择的文件列表(待保存)
|
|
|
+ isEditingDataDialog: false, // 是否为编辑模式
|
|
|
+ currentEditMaterialId: null, // 当前编辑的资料ID
|
|
|
+ materialNameSearchTimer: null, // 搜索防抖定时器
|
|
|
catalogueData: [
|
|
|
{
|
|
|
id: 1,
|
|
|
@@ -879,8 +1009,16 @@
|
|
|
// 打开任务详情弹窗
|
|
|
this.$refs.taskDetail.open(row, 'chengben')
|
|
|
},
|
|
|
- handleArchive(id) {
|
|
|
+ handleArchive(row) {
|
|
|
+ // 保存当前归档的行数据
|
|
|
+ this.currentArchiveRow = row
|
|
|
this.activeTab = 'archive'
|
|
|
+ // 切换到归档页面时,如果当前在资料归纳标签页,加载数据
|
|
|
+ if (this.archiveTab === 'dataCollect') {
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.loadArchiveData()
|
|
|
+ })
|
|
|
+ }
|
|
|
},
|
|
|
// 获取资料按钮点击事件
|
|
|
fetchMoreData() {
|
|
|
@@ -895,11 +1033,343 @@
|
|
|
// 标签页切换事件
|
|
|
handleTabClick(tab) {
|
|
|
this.archiveTab = tab.name
|
|
|
+ // 如果切换到资料归纳标签页,加载资料归纳数据
|
|
|
+ if (tab.name === 'dataCollect' && this.currentArchiveRow) {
|
|
|
+ this.loadArchiveData()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 加载资料归纳列表数据
|
|
|
+ async loadArchiveData() {
|
|
|
+ if (!this.currentArchiveRow) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ this.loading = true
|
|
|
+ const taskId =
|
|
|
+ this.currentArchiveRow.taskId || this.currentArchiveRow.id
|
|
|
+
|
|
|
+ if (!taskId) {
|
|
|
+ this.$message.warning('缺少任务ID')
|
|
|
+ this.archiveData = []
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ const response = await getDataInductionList({ taskId })
|
|
|
+
|
|
|
+ // 根据API返回格式处理数据
|
|
|
+ if (response && response.value) {
|
|
|
+ // 处理返回的数据,映射到archiveData格式
|
|
|
+ this.archiveData = (
|
|
|
+ Array.isArray(response.value)
|
|
|
+ ? response.value
|
|
|
+ : response.value.list || []
|
|
|
+ ).map((item) => {
|
|
|
+ return {
|
|
|
+ id: item.id,
|
|
|
+ name: item.materialName || item.name || '',
|
|
|
+ pageCount: item.pageCount || item.pageNum || '--',
|
|
|
+ lastModified:
|
|
|
+ item.updateTime ||
|
|
|
+ item.createTime ||
|
|
|
+ item.lastModified ||
|
|
|
+ '--',
|
|
|
+ sortOrder: item.sortOrder || item.orderNum || 0,
|
|
|
+ // 保留原始数据,便于后续操作
|
|
|
+ originalData: item,
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ // 按sortOrder排序
|
|
|
+ this.archiveData.sort((a, b) => {
|
|
|
+ return (a.sortOrder || 0) - (b.sortOrder || 0)
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.archiveData = []
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ this.$message.error('加载资料归纳列表失败')
|
|
|
+ console.error('加载资料归纳列表失败:', error)
|
|
|
+ this.archiveData = []
|
|
|
+ } finally {
|
|
|
+ this.loading = false
|
|
|
+ }
|
|
|
},
|
|
|
// 添加资料按钮点击事件
|
|
|
addData() {
|
|
|
+ // 重置表单和数据
|
|
|
+ this.dataDialogForm = {
|
|
|
+ materialName: '',
|
|
|
+ materialOrderNum: 1,
|
|
|
+ }
|
|
|
+ this.materialQueryList = []
|
|
|
+ this.selectedFileList = []
|
|
|
+ this.dataDialogData = []
|
|
|
+ this.isEditingDataDialog = false
|
|
|
+ this.currentEditMaterialId = null
|
|
|
this.dataDialogVisible = true
|
|
|
},
|
|
|
+ // 资料名称输入时自动查询列表
|
|
|
+ handleMaterialNameInput() {
|
|
|
+ // 防抖处理,延迟500ms执行查询
|
|
|
+ if (this.materialNameSearchTimer) {
|
|
|
+ clearTimeout(this.materialNameSearchTimer)
|
|
|
+ }
|
|
|
+ this.materialNameSearchTimer = setTimeout(() => {
|
|
|
+ this.queryMaterialList()
|
|
|
+ }, 500)
|
|
|
+ },
|
|
|
+ // 查询资料列表
|
|
|
+ async queryMaterialList() {
|
|
|
+ if (
|
|
|
+ !this.dataDialogForm.materialName ||
|
|
|
+ !this.dataDialogForm.materialName.trim()
|
|
|
+ ) {
|
|
|
+ this.materialQueryList = []
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!this.currentArchiveRow) {
|
|
|
+ this.$message.warning('缺少任务信息')
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ this.dataDialogLoading = true
|
|
|
+ const taskId =
|
|
|
+ this.currentArchiveRow.taskId || this.currentArchiveRow.id
|
|
|
+ const params = {
|
|
|
+ taskId: taskId,
|
|
|
+ materialName: this.dataDialogForm.materialName.trim(),
|
|
|
+ }
|
|
|
+
|
|
|
+ const response = await addDataInductionList(params)
|
|
|
+
|
|
|
+ // 处理返回的数据
|
|
|
+ if (response && response.value) {
|
|
|
+ const list = Array.isArray(response.value)
|
|
|
+ ? response.value
|
|
|
+ : response.value.list || []
|
|
|
+ this.materialQueryList = list.map((item) => {
|
|
|
+ return {
|
|
|
+ id: item.id,
|
|
|
+ materialOrderNum:
|
|
|
+ item.materialOrderNum ||
|
|
|
+ item.orderNum ||
|
|
|
+ this.dataDialogForm.materialOrderNum,
|
|
|
+ materialName:
|
|
|
+ item.materialName || this.dataDialogForm.materialName,
|
|
|
+ documentName: item.documentName || item.name || '',
|
|
|
+ documentNo: item.documentNo || item.number || '',
|
|
|
+ auditedUnit: item.auditedUnit || item.auditedUnitName || '',
|
|
|
+ generateTime:
|
|
|
+ item.generateTime || item.createTime || item.updateTime || '',
|
|
|
+ fileSource: item.fileSource || item.source || '',
|
|
|
+ // 保留原始数据
|
|
|
+ originalData: item,
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.materialQueryList = []
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ this.$message.error('查询资料列表失败')
|
|
|
+ console.error('查询资料列表失败:', error)
|
|
|
+ this.materialQueryList = []
|
|
|
+ } finally {
|
|
|
+ this.dataDialogLoading = false
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 从查询结果列表中添加文件
|
|
|
+ handleAddFileFromList(row) {
|
|
|
+ // if (!row) {
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+
|
|
|
+ // 检查是否已经添加过
|
|
|
+ const exists = this.selectedFileList.some(
|
|
|
+ (item) =>
|
|
|
+ item.id === row.id ||
|
|
|
+ (item.materialName === row.materialName &&
|
|
|
+ item.materialOrderNum === row.materialOrderNum)
|
|
|
+ )
|
|
|
+
|
|
|
+ if (exists) {
|
|
|
+ this.$message.warning('该文件已添加')
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 添加到已选择列表,序号自动递增
|
|
|
+ const newOrderNum =
|
|
|
+ this.selectedFileList.length > 0
|
|
|
+ ? Math.max(
|
|
|
+ ...this.selectedFileList.map(
|
|
|
+ (item) => item.materialOrderNum || 0
|
|
|
+ )
|
|
|
+ ) + 1
|
|
|
+ : 1
|
|
|
+
|
|
|
+ this.selectedFileList.push({
|
|
|
+ ...row,
|
|
|
+ // 使用自动递增的序号
|
|
|
+ materialOrderNum: newOrderNum,
|
|
|
+ })
|
|
|
+
|
|
|
+ this.$message.success('添加成功')
|
|
|
+ },
|
|
|
+ // 序号变化时处理
|
|
|
+ handleOrderNumChange() {
|
|
|
+ // 可以在这里添加序号验证逻辑,比如检查是否重复
|
|
|
+ },
|
|
|
+ // 添加文件(手动输入添加)
|
|
|
+ handleAddFile() {
|
|
|
+ // 验证表单
|
|
|
+ this.$refs.dataDialogForm.validate((valid) => {
|
|
|
+ if (!valid) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
+ if (
|
|
|
+ !this.dataDialogForm.materialName ||
|
|
|
+ !this.dataDialogForm.materialName.trim()
|
|
|
+ ) {
|
|
|
+ this.$message.warning('请输入资料名称')
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 检查是否已经添加过
|
|
|
+ const exists = this.selectedFileList.some(
|
|
|
+ (item) =>
|
|
|
+ item.materialName === this.dataDialogForm.materialName.trim() &&
|
|
|
+ item.materialOrderNum === this.dataDialogForm.materialOrderNum
|
|
|
+ )
|
|
|
+
|
|
|
+ if (exists) {
|
|
|
+ this.$message.warning('该文件已添加')
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 添加到已选择列表
|
|
|
+ this.selectedFileList.push({
|
|
|
+ id: null, // 新添加的行没有ID
|
|
|
+ materialOrderNum: this.dataDialogForm.materialOrderNum,
|
|
|
+ materialName: this.dataDialogForm.materialName.trim(),
|
|
|
+ documentName: '',
|
|
|
+ documentNo: '',
|
|
|
+ auditedUnit: '',
|
|
|
+ generateTime: '',
|
|
|
+ fileSource: '',
|
|
|
+ isNew: true, // 标记为新添加的行
|
|
|
+ })
|
|
|
+
|
|
|
+ // 重置表单中的资料名称,序号自动递增
|
|
|
+ this.dataDialogForm.materialName = ''
|
|
|
+ this.dataDialogForm.materialOrderNum =
|
|
|
+ this.selectedFileList.length + 1 || 1
|
|
|
+ this.$message.success('添加成功')
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 删除文件
|
|
|
+ handleDeleteFile(row, index) {
|
|
|
+ this.$confirm('确定要删除该文件吗?', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning',
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ this.selectedFileList.splice(index, 1)
|
|
|
+ this.$message.success('删除成功')
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ this.$message.info('已取消删除')
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 保存资料对话框数据
|
|
|
+ async handleSaveDataDialog() {
|
|
|
+ if (!this.selectedFileList || this.selectedFileList.length === 0) {
|
|
|
+ this.$message.warning('请先添加文件')
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!this.currentArchiveRow) {
|
|
|
+ this.$message.warning('缺少任务信息')
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ this.dataDialogLoading = true
|
|
|
+ const taskId =
|
|
|
+ this.currentArchiveRow.taskId || this.currentArchiveRow.id
|
|
|
+
|
|
|
+ // 构建保存参数
|
|
|
+ const params = {
|
|
|
+ taskId: taskId,
|
|
|
+ materialName: this.dataDialogForm.materialName || '',
|
|
|
+ materialOrderNum: this.dataDialogForm.materialOrderNum || 1,
|
|
|
+ details: this.selectedFileList.map((item) => {
|
|
|
+ return {
|
|
|
+ id: item.id || null,
|
|
|
+ materialOrderNum: item.materialOrderNum,
|
|
|
+ materialName: item.materialName,
|
|
|
+ documentName: item.documentName,
|
|
|
+ documentNo: item.documentNo,
|
|
|
+ auditedUnit: item.auditedUnit,
|
|
|
+ generateTime: item.generateTime,
|
|
|
+ fileSource: item.fileSource,
|
|
|
+ // 如果有原始数据,保留其他必要字段
|
|
|
+ ...(item.originalData || {}),
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ }
|
|
|
+
|
|
|
+ const response = await editDataInductionList(params)
|
|
|
+
|
|
|
+ if (response && response.success !== false) {
|
|
|
+ this.$message.success(response.message || '保存成功')
|
|
|
+ this.handleCancel('dataDialog')
|
|
|
+ // 刷新资料归纳列表
|
|
|
+ if (
|
|
|
+ this.activeTab === 'archive' &&
|
|
|
+ this.archiveTab === 'dataCollect'
|
|
|
+ ) {
|
|
|
+ this.loadArchiveData()
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.$message.error(response.message || '保存失败')
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ this.$message.error('保存失败')
|
|
|
+ console.error('保存资料失败:', error)
|
|
|
+ } finally {
|
|
|
+ this.dataDialogLoading = false
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 取消/关闭弹窗
|
|
|
+ handleCancel(type) {
|
|
|
+ if (type === 'dataDialog') {
|
|
|
+ this.dataDialogVisible = false
|
|
|
+ // 重置表单和数据
|
|
|
+ this.$nextTick(() => {
|
|
|
+ if (this.$refs.dataDialogForm) {
|
|
|
+ this.$refs.dataDialogForm.resetFields()
|
|
|
+ }
|
|
|
+ this.dataDialogForm = {
|
|
|
+ materialName: '',
|
|
|
+ materialOrderNum: 1,
|
|
|
+ }
|
|
|
+ this.materialQueryList = []
|
|
|
+ this.selectedFileList = []
|
|
|
+ this.dataDialogData = []
|
|
|
+ this.isEditingDataDialog = false
|
|
|
+ this.currentEditMaterialId = null
|
|
|
+ // 清除搜索定时器
|
|
|
+ if (this.materialNameSearchTimer) {
|
|
|
+ clearTimeout(this.materialNameSearchTimer)
|
|
|
+ this.materialNameSearchTimer = null
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
// 查看按钮点击事件
|
|
|
handleView(row) {
|
|
|
this.$message.info(`查看资料:${row.name}`)
|