|
|
@@ -8,6 +8,8 @@
|
|
|
v-for="type in documentData.documentTypes"
|
|
|
:key="type.id"
|
|
|
class="type-item"
|
|
|
+ :class="{ active: activeDocumentTypeId === type.id }"
|
|
|
+ @click="handleDocumentTypeClick(type)"
|
|
|
>
|
|
|
{{ type.documentName }}
|
|
|
</div>
|
|
|
@@ -17,10 +19,10 @@
|
|
|
<div class="documents-content">
|
|
|
<div class="operation-bar">
|
|
|
<el-button
|
|
|
+ v-if="!isView"
|
|
|
plain
|
|
|
type="success"
|
|
|
icon="el-icon-circle-plus"
|
|
|
- :disabled="isView"
|
|
|
@click="handleGenerateDocument"
|
|
|
>
|
|
|
生成文书
|
|
|
@@ -41,11 +43,19 @@
|
|
|
<template #enterpriseId="{ row }">
|
|
|
{{ getEnterpriseName(row) }}
|
|
|
</template>
|
|
|
+ <template #generateTime="{ row }">
|
|
|
+ <div>
|
|
|
+ {{ row.generateTime ? row.generateTime.split(' ')[0] : '' }}
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ {{ row.generateTime ? row.generateTime.split(' ')[1] : '' }}
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
<template #scanDocumentUrl="scope">
|
|
|
<el-button
|
|
|
+ v-if="!isView"
|
|
|
type="text"
|
|
|
size="mini"
|
|
|
- :disabled="isView"
|
|
|
@click="handleUploadScan(scope.row, 'scanDocumentUrl')"
|
|
|
>
|
|
|
上传附件
|
|
|
@@ -53,9 +63,7 @@
|
|
|
<el-button
|
|
|
type="text"
|
|
|
size="mini"
|
|
|
- @click="
|
|
|
- handleViewScan(scope.row.scanDocumentUrl, 'scanDocumentUrl')
|
|
|
- "
|
|
|
+ @click="handleViewScan(scope.row.scanDocumentUrl)"
|
|
|
>
|
|
|
查看附件
|
|
|
</el-button>
|
|
|
@@ -72,37 +80,32 @@
|
|
|
<el-button
|
|
|
type="text"
|
|
|
size="mini"
|
|
|
- @click="
|
|
|
- handleViewScan(
|
|
|
- scope.row.feedbackDocumentUrl,
|
|
|
- 'feedbackDocumentUrl'
|
|
|
- )
|
|
|
- "
|
|
|
+ @click="handleViewScan(scope.row.feedbackDocumentUrl)"
|
|
|
>
|
|
|
查看附件
|
|
|
</el-button>
|
|
|
</template>
|
|
|
<template #electronicDocumentUrl="scope">
|
|
|
<el-button
|
|
|
+ v-if="!isView"
|
|
|
type="text"
|
|
|
size="mini"
|
|
|
- :disabled="isView"
|
|
|
@click="handleEditDocument(scope.row)"
|
|
|
>
|
|
|
修改
|
|
|
</el-button>
|
|
|
- <el-button
|
|
|
+ <!-- <el-button
|
|
|
+ v-if="!isView"
|
|
|
type="text"
|
|
|
size="mini"
|
|
|
- :disabled="isView"
|
|
|
@click="handleSignDocument(scope.row)"
|
|
|
>
|
|
|
签章
|
|
|
- </el-button>
|
|
|
+ </el-button> -->
|
|
|
<el-button
|
|
|
+ v-if="!isView"
|
|
|
type="text"
|
|
|
size="mini"
|
|
|
- :disabled="isView"
|
|
|
@click="handleDeleteDocument(scope.row)"
|
|
|
>
|
|
|
删除
|
|
|
@@ -126,8 +129,9 @@
|
|
|
<CostAuditDialog
|
|
|
:title="documentDialogTitle"
|
|
|
:visible="documentDialogVisible"
|
|
|
- :width="dialogWidth"
|
|
|
+ width="82%"
|
|
|
:close-on-click-modal="false"
|
|
|
+ :z-index="9100"
|
|
|
@cancel="handleCancel"
|
|
|
@confirm="handleConfirm"
|
|
|
>
|
|
|
@@ -136,12 +140,14 @@
|
|
|
<div class="document-params">
|
|
|
<h4>文书参数设置:</h4>
|
|
|
<el-form
|
|
|
+ ref="documentForm"
|
|
|
v-loading="loading.saveDocument"
|
|
|
:model="document"
|
|
|
- label-width="160px"
|
|
|
+ label-width="170px"
|
|
|
size="small"
|
|
|
+ :rules="documentRules"
|
|
|
>
|
|
|
- <el-form-item label="选择模板:">
|
|
|
+ <el-form-item label="选择模板:" prop="documentId">
|
|
|
<el-select
|
|
|
v-model="document.documentId"
|
|
|
placeholder="请选择模板"
|
|
|
@@ -156,11 +162,12 @@
|
|
|
></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="通知书文号:" prop="documentWhId">
|
|
|
+ <el-form-item label="通知书文号:" prop="documentNumber">
|
|
|
<el-input
|
|
|
v-model="document.documentNumber"
|
|
|
placeholder="请选择通知书文号"
|
|
|
style="width: 74%"
|
|
|
+ disabled
|
|
|
></el-input>
|
|
|
<!-- disabled -->
|
|
|
<el-button
|
|
|
@@ -172,25 +179,28 @@
|
|
|
选择文号
|
|
|
</el-button>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="被监审单位:">
|
|
|
- <el-select
|
|
|
- v-model="document.enterpriseId"
|
|
|
- placeholder="请选择被监审单位"
|
|
|
- style="width: 100%"
|
|
|
- clearable
|
|
|
- multiple
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in allUnits"
|
|
|
- :key="item.unitId"
|
|
|
- :label="item.unitName"
|
|
|
- :value="item.unitId"
|
|
|
- ></el-option>
|
|
|
- </el-select>
|
|
|
+ <el-form-item label="被监审单位" prop="enterpriseId">
|
|
|
+ <div style="display: flex; align-items: center; gap: 15px">
|
|
|
+ <el-select
|
|
|
+ v-model="document.enterpriseId"
|
|
|
+ placeholder="请选择被监审单位"
|
|
|
+ style="width: 100%"
|
|
|
+ clearable
|
|
|
+ :multiple="isMultipleMode"
|
|
|
+ @change="handleEnterpriseChange"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in allUnits"
|
|
|
+ :key="item.unitId"
|
|
|
+ :label="item.unitName"
|
|
|
+ :value="item.unitId"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="是否推送被监审单位:">
|
|
|
+ <el-form-item label="是否推送被监审单位:" prop="isPushed">
|
|
|
<!-- 是否推送被监审单位 -->
|
|
|
- <el-radio-group v-model="document.isPush">
|
|
|
+ <el-radio-group v-model="document.isPushed">
|
|
|
<el-radio label="1">是</el-radio>
|
|
|
<el-radio label="0">否</el-radio>
|
|
|
</el-radio-group>
|
|
|
@@ -227,28 +237,58 @@
|
|
|
label="数据项"
|
|
|
width="120"
|
|
|
align="center"
|
|
|
+ show-overflow-tooltip
|
|
|
></el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="label"
|
|
|
+ <!-- <el-table-column
|
|
|
+ prop="labelValue"
|
|
|
label="标签"
|
|
|
width="100"
|
|
|
align="center"
|
|
|
- ></el-table-column>
|
|
|
+ show-overflow-tooltip
|
|
|
+ ></el-table-column> -->
|
|
|
<el-table-column
|
|
|
prop="originalText"
|
|
|
label="描述"
|
|
|
min-width="120"
|
|
|
- align="left"
|
|
|
+ align="center"
|
|
|
+ show-overflow-tooltip
|
|
|
></el-table-column>
|
|
|
<el-table-column
|
|
|
prop="dataValue"
|
|
|
label="数据值"
|
|
|
min-width="150"
|
|
|
- align="left"
|
|
|
- ></el-table-column>
|
|
|
+ align="center"
|
|
|
+ show-overflow-tooltip
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-input
|
|
|
+ v-if="scope.row.originalText !== '需要提供材料'"
|
|
|
+ v-model="scope.row.dataValue"
|
|
|
+ size="small"
|
|
|
+ placeholder="请输入数据值"
|
|
|
+ ></el-input>
|
|
|
+ <!-- 否则显示上传按钮 -->
|
|
|
+ <div v-else>
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ @click="handleUploadClick(scope.row)"
|
|
|
+ >
|
|
|
+ 上传附件
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ @click="handleViewScan(scope.row.dataValue)"
|
|
|
+ >
|
|
|
+ 查看附件
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
</el-table>
|
|
|
<div style="margin-top: 10px; font-size: 12px; color: #909399">
|
|
|
- 说明:数据内容不可修改,已在监审文书管理中配置完成,数据值为本次监审项目的相关数据。
|
|
|
+ 说明:数据内容可以在此处直接修改,修改后的数据将用于生成监审文书。
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-form>
|
|
|
@@ -266,6 +306,7 @@
|
|
|
:visible="dialogVisible"
|
|
|
:width="dialogWidth"
|
|
|
:close-on-click-modal="false"
|
|
|
+ :z-index="9200"
|
|
|
@cancel="handleCancel"
|
|
|
@confirm="handleConfirm"
|
|
|
>
|
|
|
@@ -288,20 +329,24 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
- // import { taskMixin } from './index.js'
|
|
|
import CostAuditTable from '@/components/costAudit/CostAuditTable.vue'
|
|
|
import CostAuditDialog from '@/components/costAudit/CostAuditDialog.vue'
|
|
|
import TemplatePreviewEdit from '@/components/costAudit/TemplatePreviewEdit.vue'
|
|
|
import { getAllUnitList } from '@/api/auditEntityManage'
|
|
|
import {
|
|
|
- getWhCateList,
|
|
|
- queryByDocumentId,
|
|
|
+ getDocList,
|
|
|
+ getCostProjectDocumentFile,
|
|
|
+ queryByDocumentIdandWhereValue,
|
|
|
} from '@/api/auditReviewDocManage.js'
|
|
|
import { getData } from '@/api/auditDocNoManage.js'
|
|
|
import {
|
|
|
addCostProjectDocument,
|
|
|
updateCostProjectDocument,
|
|
|
deleteCostProjectDocument,
|
|
|
+ getCostProjectDocumentDetail,
|
|
|
+ updateScan,
|
|
|
+ downDocument,
|
|
|
+ getCostProjectDocumentPageList,
|
|
|
} from '@/api/taskCustomizedRelease.js'
|
|
|
import { dictMixin, regionMixin } from '@/mixins/useDict'
|
|
|
import { uploadFile } from '@/api/file'
|
|
|
@@ -314,32 +359,46 @@
|
|
|
type: Object,
|
|
|
default: () => {},
|
|
|
},
|
|
|
+ id: {
|
|
|
+ type: String,
|
|
|
+ default: '',
|
|
|
+ },
|
|
|
isView: {
|
|
|
type: Boolean,
|
|
|
default: false,
|
|
|
},
|
|
|
- documentData: {
|
|
|
- type: Object,
|
|
|
- default: () => ({
|
|
|
- documentTypes: [],
|
|
|
- list: [],
|
|
|
- pagination: {},
|
|
|
- dataList: [],
|
|
|
- documentColumns: [],
|
|
|
- }),
|
|
|
- },
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
+ isMultipleMode: false,
|
|
|
dictData: {
|
|
|
whGenerateType: [],
|
|
|
},
|
|
|
+ activeDocumentTypeId: '',
|
|
|
document: {
|
|
|
+ createBy: '',
|
|
|
+ createTime: '',
|
|
|
+ documentAlias: '',
|
|
|
documentId: '',
|
|
|
- documentWhId: '',
|
|
|
+ documentName: '',
|
|
|
documentNumber: '',
|
|
|
+ documentType: '',
|
|
|
+ documentWhId: '',
|
|
|
+ electronicDocumentUrl: '',
|
|
|
enterpriseId: [],
|
|
|
- dataList: [],
|
|
|
+ feedbackDocumentUrl: '',
|
|
|
+ feedbackTime: '',
|
|
|
+ generateTime: '',
|
|
|
+ id: '',
|
|
|
+ isDeleted: '',
|
|
|
+ isPushed: '',
|
|
|
+ orderNum: 0,
|
|
|
+ pkVal: '',
|
|
|
+ projectId: '',
|
|
|
+ pushTime: '',
|
|
|
+ scanDocumentUrl: '',
|
|
|
+ updateBy: '',
|
|
|
+ updateTime: '',
|
|
|
},
|
|
|
loading: {
|
|
|
saveDocument: false,
|
|
|
@@ -351,8 +410,8 @@
|
|
|
dialogVisible: false,
|
|
|
dialogTitle: '选择文号',
|
|
|
documentDialogVisible: false,
|
|
|
- documentDialogTitle: '编辑监审通知书',
|
|
|
- dialogWidth: '70%',
|
|
|
+ documentDialogTitle: '添加监审通知书',
|
|
|
+ dialogWidth: '80%',
|
|
|
fileUrl: '',
|
|
|
selectDocumentWhData: [],
|
|
|
selectDocumentWhPagination: {
|
|
|
@@ -362,6 +421,103 @@
|
|
|
},
|
|
|
selectDocumentWhSelection: [],
|
|
|
costDocumentTemplateFiles: [],
|
|
|
+ documentData: {
|
|
|
+ documentTypes: [],
|
|
|
+ selectedDoc: 'notice',
|
|
|
+ list: [],
|
|
|
+ pagination: {
|
|
|
+ currentPage: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ total: 0,
|
|
|
+ },
|
|
|
+ documentColumns: [
|
|
|
+ {
|
|
|
+ prop: 'documentId',
|
|
|
+ label: '文书类型',
|
|
|
+ align: 'center',
|
|
|
+ slotName: 'documentId',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'documentNumber',
|
|
|
+ label: '文书文号',
|
|
|
+ width: 200,
|
|
|
+ align: 'center',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'enterpriseId',
|
|
|
+ label: '被监审单位',
|
|
|
+ width: 200,
|
|
|
+ align: 'left',
|
|
|
+ slotName: 'enterpriseId',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'generateTime',
|
|
|
+ label: '生成时间',
|
|
|
+ width: 100,
|
|
|
+ align: 'center',
|
|
|
+ slotName: 'generateTime',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'electronicDocumentUrl',
|
|
|
+ label: '电子文书',
|
|
|
+ width: 200,
|
|
|
+ align: 'center',
|
|
|
+ slotName: 'electronicDocumentUrl',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'scanDocumentUrl',
|
|
|
+ label: '上传扫描件',
|
|
|
+ width: 150,
|
|
|
+ align: 'center',
|
|
|
+ slotName: 'scanDocumentUrl',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'isPushed',
|
|
|
+ label: '是否推送被监审单位',
|
|
|
+ width: 100,
|
|
|
+ align: 'center',
|
|
|
+ formatter: (row) => (row.isPushed == 1 ? '是' : '否'),
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'feedbackDocumentUrl',
|
|
|
+ label: '被监审单位反馈资料',
|
|
|
+ width: 150,
|
|
|
+ align: 'center',
|
|
|
+ slotName: 'feedbackDocumentUrl',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ documentRules: {
|
|
|
+ // documentNumber: [
|
|
|
+ // {
|
|
|
+ // required: true,
|
|
|
+ // message: '请选择通知书文号',
|
|
|
+ // trigger: 'change',
|
|
|
+ // },
|
|
|
+ // ],
|
|
|
+ enterpriseId: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择被监审单位',
|
|
|
+ trigger: 'change',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ documentId: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择模板',
|
|
|
+ trigger: 'change',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ isPushed: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择否推送被监审单位',
|
|
|
+ trigger: 'change',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ dataUploadUrl: [],
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
|
@@ -405,23 +561,76 @@
|
|
|
]
|
|
|
},
|
|
|
},
|
|
|
- // 添加watch监听project变化,确保项目数据更新时重新加载数据
|
|
|
watch: {
|
|
|
- project: {
|
|
|
+ id: {
|
|
|
handler(newVal) {
|
|
|
- if (newVal && newVal.projectId) {
|
|
|
- // 通知父组件需要加载数据
|
|
|
- this.$emit('refresh', newVal.projectId)
|
|
|
+ if (newVal) {
|
|
|
+ this.getData()
|
|
|
}
|
|
|
},
|
|
|
deep: true,
|
|
|
immediate: true,
|
|
|
},
|
|
|
+ costDocumentTemplateFiles: {
|
|
|
+ handler(newVal, oldVal) {
|
|
|
+ if (newVal.length > 0) {
|
|
|
+ console.log(this.costDocumentTemplateFiles)
|
|
|
+ this.costDocumentTemplateFiles.forEach((item) => {
|
|
|
+ if (
|
|
|
+ item.pinyin.includes('ShiJian') &&
|
|
|
+ (item.dataValue == null || item.dataValue == '')
|
|
|
+ ) {
|
|
|
+ // 获取当前时间,格式为YYYY-MM-DD HH:mm:ss
|
|
|
+ let date = new Date()
|
|
|
+ let year = date.getFullYear()
|
|
|
+ let month = String(date.getMonth() + 1).padStart(2, '0')
|
|
|
+ let day = String(date.getDate()).padStart(2, '0')
|
|
|
+ let hours = String(date.getHours()).padStart(2, '0')
|
|
|
+ let minutes = String(date.getMinutes()).padStart(2, '0')
|
|
|
+ let seconds = String(date.getSeconds()).padStart(2, '0')
|
|
|
+ item.dataValue = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
|
|
|
+ }
|
|
|
+ if (
|
|
|
+ item.originalText.includes('需要提供材料') &&
|
|
|
+ item.dataValue
|
|
|
+ ) {
|
|
|
+ this.dataUploadUrl = item.dataValue
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ deep: true,
|
|
|
+ },
|
|
|
},
|
|
|
mounted() {
|
|
|
+ this.getData()
|
|
|
this.loadOpts()
|
|
|
},
|
|
|
methods: {
|
|
|
+ // 获取监审通知数据
|
|
|
+ async getData() {
|
|
|
+ const res = await getDocList({
|
|
|
+ page: 1,
|
|
|
+ pageSize: 50,
|
|
|
+ })
|
|
|
+ this.documentData.documentTypes = res.value.records || []
|
|
|
+ const pid = this.project.projectId
|
|
|
+ if (!pid) return
|
|
|
+ this.getlist()
|
|
|
+ },
|
|
|
+ getlist() {
|
|
|
+ getCostProjectDocumentPageList({
|
|
|
+ pageNum: this.documentData.pagination.currentPage,
|
|
|
+ pageSize: this.documentData.pagination.pageSize,
|
|
|
+ projectId: this.project.projectId,
|
|
|
+ documentName: '',
|
|
|
+ permissionType: '0',
|
|
|
+ }).then((res) => {
|
|
|
+ this.documentData.list = res.value.value.records
|
|
|
+ this.documentData.pagination.total = res.value.value.total
|
|
|
+ console.log(this.documentData.list)
|
|
|
+ })
|
|
|
+ },
|
|
|
getEnterpriseName(row) {
|
|
|
// 处理enterpriseId,无论是数组还是逗号分隔的字符串
|
|
|
let enterpriseIds = []
|
|
|
@@ -455,7 +664,9 @@
|
|
|
)?.documentName
|
|
|
},
|
|
|
handlePaginationChange({ currentPage, pageSize }) {
|
|
|
- this.$emit('paginationChange', { currentPage, pageSize })
|
|
|
+ this.documentData.pagination.currentPage = currentPage
|
|
|
+ this.documentData.pagination.pageSize = pageSize
|
|
|
+ this.getlist()
|
|
|
},
|
|
|
|
|
|
// 加载选项数据
|
|
|
@@ -465,20 +676,87 @@
|
|
|
this.allUnits = res.value || []
|
|
|
// 过滤掉状态为停用的数据
|
|
|
this.allUnits = this.allUnits.filter((item) => item.status == 1)
|
|
|
+ // 筛选this.project.auditedUnitId中的单位,支持多种格式
|
|
|
+ if (this.project.auditedUnitId) {
|
|
|
+ // 确保将project.auditedUnitId转换为数组格式
|
|
|
+ let auditedUnitIds = []
|
|
|
+ if (Array.isArray(this.project.auditedUnitId)) {
|
|
|
+ auditedUnitIds = this.project.auditedUnitId
|
|
|
+ } else if (
|
|
|
+ typeof this.project.auditedUnitId === 'string' &&
|
|
|
+ this.project.auditedUnitId.includes(',')
|
|
|
+ ) {
|
|
|
+ // 如果是逗号分隔的字符串,转换为数组
|
|
|
+ auditedUnitIds = this.project.auditedUnitId
|
|
|
+ .split(',')
|
|
|
+ .map((id) => id.trim())
|
|
|
+ } else {
|
|
|
+ // 单个ID也转换为数组
|
|
|
+ auditedUnitIds = [this.project.auditedUnitId]
|
|
|
+ }
|
|
|
+ // 使用数组进行筛选
|
|
|
+ this.allUnits = this.allUnits.filter((item) =>
|
|
|
+ auditedUnitIds.includes(item.unitId)
|
|
|
+ )
|
|
|
+ }
|
|
|
})
|
|
|
},
|
|
|
|
|
|
// 生成文书
|
|
|
handleGenerateDocument() {
|
|
|
+ this.documentDialogTitle = '添加监审通知书'
|
|
|
this.documentDialogVisible = true
|
|
|
this.activeView = 'form'
|
|
|
+ this.costDocumentTemplateFiles = []
|
|
|
this.document = {
|
|
|
+ createBy: '',
|
|
|
+ createTime: '',
|
|
|
+ documentAlias: '',
|
|
|
documentId: '',
|
|
|
- documentWhId: '',
|
|
|
+ documentName: '',
|
|
|
documentNumber: '',
|
|
|
- enterpriseId: [],
|
|
|
+ documentType: '',
|
|
|
+ documentWhId: '',
|
|
|
+ electronicDocumentUrl: '',
|
|
|
+ enterpriseId: this.isMultipleMode ? [] : '',
|
|
|
+ feedbackDocumentUrl: '',
|
|
|
+ feedbackTime: '',
|
|
|
+ generateTime: '',
|
|
|
+ id: '',
|
|
|
+ isDeleted: '',
|
|
|
+ isPushed: '1',
|
|
|
+ orderNum: this.documentData.list.length + 1,
|
|
|
+ pkVal: '',
|
|
|
+ projectId: '',
|
|
|
+ pushTime: '',
|
|
|
+ scanDocumentUrl: '',
|
|
|
+ updateBy: '',
|
|
|
+ updateTime: '',
|
|
|
+ }
|
|
|
+ // if(this.isMultipleMode){
|
|
|
+ // this.document.enterpriseId = this.project.auditedUnitId ? this.project.auditedUnitId.split(',') : []
|
|
|
+ // console.log('this.document.enterpriseId',this.document.enterpriseId)
|
|
|
+ // }else{
|
|
|
+ // this.document.enterpriseId = this.project.auditedUnitId
|
|
|
+ // }
|
|
|
+ this.loadOpts()
|
|
|
+ if (this.activeDocumentTypeId) {
|
|
|
+ this.document.documentId = this.activeDocumentTypeId
|
|
|
+ this.handleTemplateChange()
|
|
|
}
|
|
|
- this.costProjectDocumentFiles = []
|
|
|
+ },
|
|
|
+ getDetail() {
|
|
|
+ getCostProjectDocumentDetail({
|
|
|
+ projectId: this.project.projectId,
|
|
|
+ }).then((res) => {
|
|
|
+ if (res.value) {
|
|
|
+ this.document = {
|
|
|
+ ...this.document,
|
|
|
+ ...res.value,
|
|
|
+ }
|
|
|
+ this.loadOpts()
|
|
|
+ }
|
|
|
+ })
|
|
|
},
|
|
|
selectClick() {
|
|
|
this.dialogVisible = true
|
|
|
@@ -487,12 +765,16 @@
|
|
|
},
|
|
|
getWhListData() {
|
|
|
getData({
|
|
|
- pageNum: this.selectDocumentWhPagination.currentPage,
|
|
|
+ page: this.selectDocumentWhPagination.currentPage,
|
|
|
pageSize: this.selectDocumentWhPagination.pageSize,
|
|
|
whType: this.document.documentId,
|
|
|
}).then((res) => {
|
|
|
- this.selectDocumentWhData = res.value.records || []
|
|
|
- this.selectDocumentWhPagination.total = res.value.total || 0
|
|
|
+ this.selectDocumentWhData = res.rows || []
|
|
|
+ this.selectDocumentWhPagination.total = res.total || 0
|
|
|
+ // 获取区域名称,填充regionNameMap
|
|
|
+ if (this.selectDocumentWhData.length > 0) {
|
|
|
+ this.fetchRegionNames(this.selectDocumentWhData, 'areaCode')
|
|
|
+ }
|
|
|
})
|
|
|
},
|
|
|
selectDocumentWhPaginationChange({ currentPage, pageSize }) {
|
|
|
@@ -507,19 +789,30 @@
|
|
|
this.selectDocumentWhSelection = selection
|
|
|
}
|
|
|
},
|
|
|
- // 选择文档类型
|
|
|
- selectDocumentType(doc) {
|
|
|
- // this.documentData.selectedDoc = doc.value
|
|
|
- },
|
|
|
handleTemplateChange() {
|
|
|
- this.fileUrl = this.documentData.documentTypes.find(
|
|
|
+ let data = this.documentData.documentTypes.find(
|
|
|
(item) => item.id === this.document.documentId
|
|
|
- ).fileUrl
|
|
|
- this.getDocumentData(this.document.documentId)
|
|
|
+ )
|
|
|
+ this.fileUrl = data.fileUrl
|
|
|
+ this.document.documentName = data.documentName
|
|
|
+ this.document.documentNumber = ''
|
|
|
+ this.document.documentWhId = ''
|
|
|
+ this.getDocumentData()
|
|
|
},
|
|
|
- getDocumentData(documentId) {
|
|
|
- if (documentId) {
|
|
|
- queryByDocumentId({ documentId }).then((res) => {
|
|
|
+ getDocumentData() {
|
|
|
+ if (this.document.id === null || this.document.id === '') {
|
|
|
+ queryByDocumentIdandWhereValue({
|
|
|
+ documentId: this.document.documentId,
|
|
|
+ whereValue: this.project.projectId,
|
|
|
+ }).then((res) => {
|
|
|
+ this.costDocumentTemplateFiles = res.value || []
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ getCostProjectDocumentFile({
|
|
|
+ // documentId: this.document.documentId,
|
|
|
+ // whereValue: this.project.projectId,
|
|
|
+ id: this.document.id,
|
|
|
+ }).then((res) => {
|
|
|
this.costDocumentTemplateFiles = res.value || []
|
|
|
})
|
|
|
}
|
|
|
@@ -541,84 +834,100 @@
|
|
|
this.$message.error('请选择一个文号!')
|
|
|
return
|
|
|
}
|
|
|
+ // 获取选中的文号信息
|
|
|
+ const selectedDocument = this.selectDocumentWhSelection[0]
|
|
|
|
|
|
- this.document.documentNumber = this.selectDocumentWhSelection[0].whNo
|
|
|
- this.document.documentWhId = this.selectDocumentWhSelection[0].id // 假设这是正确的字段名
|
|
|
+ this.document.documentNumber = selectedDocument.whNo
|
|
|
+ this.document.documentWhId = selectedDocument.id
|
|
|
+ // 数据表格回显文号
|
|
|
+ this.costDocumentTemplateFiles.forEach((item) => {
|
|
|
+ if (
|
|
|
+ item.pinyin.includes('WenHao') ||
|
|
|
+ item.pinyin.includes('WenJianHao')
|
|
|
+ ) {
|
|
|
+ item.dataValue = selectedDocument.whNo
|
|
|
+ }
|
|
|
+ if (item.pinyin.includes('SongDaWenShuMingCheng')) {
|
|
|
+ item.dataValue = selectedDocument.whName
|
|
|
+ }
|
|
|
+ })
|
|
|
this.dialogVisible = false
|
|
|
this.activeView = 'form'
|
|
|
},
|
|
|
+ handleEnterpriseChange(val) {
|
|
|
+ if (this.document.enterpriseId) {
|
|
|
+ // BeiJianShenDanWei
|
|
|
+ let unit = this.allUnits.find(
|
|
|
+ (item) => item.unitId === this.document.enterpriseId
|
|
|
+ )
|
|
|
+ this.costDocumentTemplateFiles.forEach((item) => {
|
|
|
+ if (item.pinyin.includes('BeiJianShenDanWei')) {
|
|
|
+ item.dataValue = unit.unitName
|
|
|
+ }
|
|
|
+ if (item.pinyin.includes('ShouSongDaRen')) {
|
|
|
+ item.dataValue = unit.contactName
|
|
|
+ }
|
|
|
+ if (item.pinyin.includes('BeiJianShenDanWeiBanGongDiDian')) {
|
|
|
+ item.dataValue = unit.address
|
|
|
+ }
|
|
|
+ if (item.pinyin.includes('BeiJianShenDanWeiLianXiRenDianHua')) {
|
|
|
+ item.dataValue = unit.contactMobile
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
// 保存文档
|
|
|
handleSaveDocument() {
|
|
|
- // 验证是否选择了企业
|
|
|
- if (
|
|
|
- !this.document.enterpriseId ||
|
|
|
- this.document.enterpriseId.length === 0
|
|
|
- ) {
|
|
|
- this.$message.error('请至少选择一个被监审单位!')
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- this.loading.saveDocument = true
|
|
|
- if (this.document.id) {
|
|
|
- updateCostProjectDocument({
|
|
|
- id: this.document.id,
|
|
|
- // documentAlias: this.document.documentAlias,
|
|
|
- documentId: this.document.documentId,
|
|
|
- documentNumber: this.document.documentNumber,
|
|
|
- documentWhId: this.document.documentWhId,
|
|
|
- costProjectDocumentFiles: this.costProjectDocumentFiles || [],
|
|
|
- // isPushed: this.document.isPushed,
|
|
|
- projectId: this.project.projectId,
|
|
|
- // electronicDocumentUrl: '',
|
|
|
- enterpriseId: this.document.enterpriseId.join(','), // 保存时转换为逗号分隔的字符串
|
|
|
- // feedbackDocumentUrl: '',
|
|
|
- // feedbackTime: '',
|
|
|
- // generateTime: '',
|
|
|
- })
|
|
|
- .then((res) => {
|
|
|
- this.loading.saveDocument = false
|
|
|
- this.$message.success('保存成功!')
|
|
|
- this.documentDialogVisible = false
|
|
|
- this.activeView = ''
|
|
|
- this.$emit('refresh', this.project.projectId)
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- this.loading.saveDocument = false
|
|
|
- })
|
|
|
- } else {
|
|
|
- // 处理多选逻辑,如果选择了多个单位,为每个单位创建一个文档记录
|
|
|
- const promises = this.document.enterpriseId.map((enterpriseId) => {
|
|
|
- return addCostProjectDocument({
|
|
|
- // documentAlias: this.document.documentAlias,
|
|
|
+ // 校验表单
|
|
|
+ this.$refs.documentForm.validate((valid) => {
|
|
|
+ if (!valid) {
|
|
|
+ this.$message.error('请填写必填项!')
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ this.loading.saveDocument = true
|
|
|
+ if (this.document.id) {
|
|
|
+ updateCostProjectDocument({
|
|
|
+ ...this.document,
|
|
|
+ costProjectDocumentFiles: this.costDocumentTemplateFiles,
|
|
|
projectId: this.project.projectId,
|
|
|
- documentId: this.document.documentId,
|
|
|
- documentNumber: this.document.documentNumber,
|
|
|
- documentWhId: this.document.documentWhId,
|
|
|
- costProjectDocumentFiles: this.costProjectDocumentFiles || [],
|
|
|
- enterpriseId: enterpriseId,
|
|
|
- // electronicDocumentUrl: '',
|
|
|
- // feedbackDocumentUrl: '',
|
|
|
- // feedbackTime: '',
|
|
|
- // generateTime: '',
|
|
|
- isPushed: this.document.isPushed,
|
|
|
- // orderNum: 0,
|
|
|
- // pushTime: '',
|
|
|
- // scanDocumentUrl: '',
|
|
|
- })
|
|
|
- })
|
|
|
-
|
|
|
- Promise.all(promises)
|
|
|
- .then(() => {
|
|
|
- this.loading.saveDocument = false
|
|
|
- this.$message.success('保存成功!')
|
|
|
- this.dialogVisible = false
|
|
|
- this.activeView = ''
|
|
|
- this.$emit('refresh', this.project.projectId)
|
|
|
+ electronicDocumentUrl:
|
|
|
+ this.document.electronicDocumentUrl || this.fileUrl,
|
|
|
+ enterpriseId: this.isMultipleMode
|
|
|
+ ? this.document.enterpriseId.join(',')
|
|
|
+ : this.document.enterpriseId, // 保存时转换为逗号分隔的字符串
|
|
|
})
|
|
|
- .catch((err) => {
|
|
|
- this.loading.saveDocument = false
|
|
|
+ .then((res) => {
|
|
|
+ this.loading.saveDocument = false
|
|
|
+ this.$message.success('保存成功!')
|
|
|
+ this.documentDialogVisible = false
|
|
|
+ this.activeView = ''
|
|
|
+ this.getlist()
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ this.loading.saveDocument = false
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ addCostProjectDocument({
|
|
|
+ ...this.document,
|
|
|
+ projectId: this.project.projectId,
|
|
|
+ costProjectDocumentFiles: this.costDocumentTemplateFiles || [],
|
|
|
+ enterpriseId: this.isMultipleMode
|
|
|
+ ? this.document.enterpriseId.join(',')
|
|
|
+ : this.document.enterpriseId,
|
|
|
+ electronicDocumentUrl: this.fileUrl,
|
|
|
})
|
|
|
- }
|
|
|
+ .then(() => {
|
|
|
+ this.loading.saveDocument = false
|
|
|
+ this.$message.success('保存成功!')
|
|
|
+ this.documentDialogVisible = false
|
|
|
+ this.activeView = ''
|
|
|
+ this.getlist()
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ this.loading.saveDocument = false
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
},
|
|
|
// 处理取消
|
|
|
handleCancel() {
|
|
|
@@ -691,18 +1000,17 @@
|
|
|
const fileInfo = uploadRes.value
|
|
|
// 创建更新数据对象
|
|
|
const updateData = {
|
|
|
- ...row,
|
|
|
+ id: row.id,
|
|
|
scanDocumentUrl: fileInfo?.savePath, // 更新扫描件URL
|
|
|
}
|
|
|
|
|
|
// 第六步:调用更新API
|
|
|
- await updateCostProjectDocument(updateData)
|
|
|
+ await updateScan(updateData)
|
|
|
|
|
|
// 第七步:更新成功,显示提示并刷新
|
|
|
this.$message.success('文件上传成功并更新数据!')
|
|
|
- this.$emit('refresh', this.project.projectId) // 通知父组件刷新
|
|
|
+ this.getlist()
|
|
|
} catch (error) {
|
|
|
- console.error('操作失败:' + (error.message || '未知错误'))
|
|
|
// 错误处理
|
|
|
// this.$message.error('操作失败:' + (error.message || '未知错误'))
|
|
|
} finally {
|
|
|
@@ -714,7 +1022,7 @@
|
|
|
input.click()
|
|
|
},
|
|
|
// 查看扫描件
|
|
|
- handleViewScan(fileUrl, type) {
|
|
|
+ handleViewScan(fileUrl) {
|
|
|
if (!fileUrl) {
|
|
|
this.$message.error('暂无文件!')
|
|
|
return
|
|
|
@@ -731,28 +1039,29 @@
|
|
|
},
|
|
|
// 编辑文档
|
|
|
handleEditDocument(row) {
|
|
|
+ this.documentDialogTitle = '修改监审通知书'
|
|
|
this.documentDialogVisible = true
|
|
|
this.activeView = 'form'
|
|
|
this.loadOpts()
|
|
|
// 确保enterpriseId是数组格式,处理可能的逗号分隔字符串
|
|
|
- const enterpriseId = row.enterpriseId
|
|
|
- ? Array.isArray(row.enterpriseId)
|
|
|
- ? row.enterpriseId
|
|
|
- : typeof row.enterpriseId === 'string'
|
|
|
- ? row.enterpriseId
|
|
|
- .split(',')
|
|
|
- .map((id) => id.trim())
|
|
|
- .filter((id) => id) // 将逗号分隔字符串转换为数组
|
|
|
- : [row.enterpriseId]
|
|
|
- : []
|
|
|
+ const enterpriseId = this.isMultipleMode
|
|
|
+ ? row.enterpriseId.split(',')
|
|
|
+ : row.enterpriseId
|
|
|
this.document = {
|
|
|
...row,
|
|
|
+ documentId: Number(row.documentId),
|
|
|
enterpriseId,
|
|
|
+ // 确保isPushed有值,如果row中没有,设置默认值'1'
|
|
|
+ isPushed: row.isPushed !== undefined ? row.isPushed : '1',
|
|
|
}
|
|
|
+ this.fileUrl = this.document.electronicDocumentUrl
|
|
|
+ this.getDocumentData()
|
|
|
},
|
|
|
|
|
|
// 签章
|
|
|
- handleSignDocument(row) {},
|
|
|
+ handleSignDocument(row) {
|
|
|
+ this.$message.warning('签章功能待实现!')
|
|
|
+ },
|
|
|
|
|
|
// 删除文档
|
|
|
handleDeleteDocument(row) {
|
|
|
@@ -763,13 +1072,203 @@
|
|
|
}).then(() => {
|
|
|
deleteCostProjectDocument(row.id).then((res) => {
|
|
|
this.$message.success('删除成功!')
|
|
|
- this.$emit('refresh', this.project.projectId)
|
|
|
+ this.getlist()
|
|
|
})
|
|
|
})
|
|
|
},
|
|
|
|
|
|
+ handleDownloadDocument1(row) {
|
|
|
+ // 显示加载状态
|
|
|
+ this.$loading({
|
|
|
+ lock: true,
|
|
|
+ text: '文件下载中...',
|
|
|
+ spinner: 'el-icon-loading',
|
|
|
+ background: 'rgba(0, 0, 0, 0.7)',
|
|
|
+ })
|
|
|
+ let fileUrl = window.context.form + row.electronicDocumentUrl
|
|
|
+ let fileName = ''
|
|
|
+ // 从URL中提取文件名
|
|
|
+ const urlParts = fileUrl.split('/')
|
|
|
+ let urlFileName = urlParts[urlParts.length - 1]
|
|
|
+
|
|
|
+ // 处理URL可能包含查询参数的情况
|
|
|
+ if (urlFileName.includes('?')) {
|
|
|
+ urlFileName = urlFileName.split('?')[0]
|
|
|
+ }
|
|
|
+
|
|
|
+ // 检查从URL提取的文件名是否有效
|
|
|
+ if (urlFileName && /\.[a-zA-Z0-9]+$/.test(urlFileName)) {
|
|
|
+ fileName = urlFileName
|
|
|
+ } else {
|
|
|
+ // URL中无法提取有效文件名时,使用row.documentName作为备选
|
|
|
+ fileName = row.documentName || `监审通知书_${new Date().getTime()}`
|
|
|
+
|
|
|
+ // 确保备选文件名有扩展名
|
|
|
+ if (!/\.[a-zA-Z0-9]+$/.test(fileName)) {
|
|
|
+ fileName += '.pdf'
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 创建隐藏的a标签进行下载
|
|
|
+ const link = document.createElement('a')
|
|
|
+ link.style.display = 'none'
|
|
|
+ link.href = fileUrl
|
|
|
+ // 设置下载文件名
|
|
|
+ link.download = fileName
|
|
|
+ document.body.appendChild(link)
|
|
|
+ link.click()
|
|
|
+ document.body.removeChild(link)
|
|
|
+ // 关闭加载状态
|
|
|
+ this.$loading().close()
|
|
|
+ },
|
|
|
// 下载文档
|
|
|
- handleDownloadDocument(row) {},
|
|
|
+ handleDownloadDocument(row) {
|
|
|
+ // 显示加载状态
|
|
|
+ this.$loading({
|
|
|
+ lock: true,
|
|
|
+ text: '文件下载中...',
|
|
|
+ spinner: 'el-icon-loading',
|
|
|
+ background: 'rgba(0, 0, 0, 0.7)',
|
|
|
+ })
|
|
|
+
|
|
|
+ // 从API中获取文件URL
|
|
|
+ downDocument({
|
|
|
+ id: row.id,
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ // 关闭加载状态
|
|
|
+ this.$loading().close()
|
|
|
+
|
|
|
+ // 检查返回结果是否成功
|
|
|
+ if (!res || !res.state) {
|
|
|
+ this.$message.error(
|
|
|
+ `下载失败:${res?.message || '未获取到文件数据'}`
|
|
|
+ )
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取文件URL
|
|
|
+ const fileUrl = res.value
|
|
|
+ if (!fileUrl) {
|
|
|
+ this.$message.error('下载失败:未获取到文件URL')
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 优先从URL中提取文件名
|
|
|
+ let fileName = ''
|
|
|
+
|
|
|
+ // 从URL中提取文件名
|
|
|
+ const urlParts = fileUrl.split('/')
|
|
|
+ let urlFileName = urlParts[urlParts.length - 1]
|
|
|
+
|
|
|
+ // 处理URL可能包含查询参数的情况
|
|
|
+ if (urlFileName.includes('?')) {
|
|
|
+ urlFileName = urlFileName.split('?')[0]
|
|
|
+ }
|
|
|
+
|
|
|
+ // 检查从URL提取的文件名是否有效
|
|
|
+ if (urlFileName && /\.[a-zA-Z0-9]+$/.test(urlFileName)) {
|
|
|
+ fileName = urlFileName
|
|
|
+ } else {
|
|
|
+ // URL中无法提取有效文件名时,使用row.documentName作为备选
|
|
|
+ fileName =
|
|
|
+ row.documentName || `监审通知书_${new Date().getTime()}`
|
|
|
+
|
|
|
+ // 确保备选文件名有扩展名
|
|
|
+ if (!/\.[a-zA-Z0-9]+$/.test(fileName)) {
|
|
|
+ fileName += '.pdf'
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 创建隐藏的a标签进行下载
|
|
|
+ const link = document.createElement('a')
|
|
|
+ link.style.display = 'none'
|
|
|
+ link.href = fileUrl
|
|
|
+ // link.href = window.context.form + row.electronicDocumentUrl
|
|
|
+ // 设置下载文件名
|
|
|
+ link.download = fileName
|
|
|
+ document.body.appendChild(link)
|
|
|
+ link.click()
|
|
|
+ document.body.removeChild(link)
|
|
|
+ })
|
|
|
+ .catch((error) => {
|
|
|
+ // 关闭加载状态
|
|
|
+ this.$loading().close()
|
|
|
+ console.error('获取文件URL失败:', error)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleUploadClick(row) {
|
|
|
+ console.log('handleUploadClick', row)
|
|
|
+ let loading = null
|
|
|
+ // 第一步:创建文件选择器
|
|
|
+ const input = document.createElement('input')
|
|
|
+ input.type = 'file'
|
|
|
+ input.accept = '.pdf,.doc,.docx,.xls,.xlsx,.csv' // 允许的文件类型
|
|
|
+
|
|
|
+ input.onchange = async (event) => {
|
|
|
+ const file = event.target.files[0]
|
|
|
+ if (!file) return
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 校验文件大小(50MB)
|
|
|
+ const maxSize = 50 * 1024 * 1024 // 50MB
|
|
|
+ if (file.size > maxSize) {
|
|
|
+ this.$message.error('文件大小不能超过50MB!')
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 校验文件格式
|
|
|
+ const allowedFormats = [
|
|
|
+ '.pdf',
|
|
|
+ '.doc',
|
|
|
+ '.docx',
|
|
|
+ '.xls',
|
|
|
+ '.xlsx',
|
|
|
+ 'csv',
|
|
|
+ ]
|
|
|
+ const fileName = file.name.toLowerCase()
|
|
|
+ const isValidFormat = allowedFormats.some((format) =>
|
|
|
+ fileName.endsWith(format)
|
|
|
+ )
|
|
|
+
|
|
|
+ if (!isValidFormat) {
|
|
|
+ this.$message.error(
|
|
|
+ '只允许上传.pdf,.doc,.docx,.xls,.xlsx,.csv格式的文件!'
|
|
|
+ )
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 显示遮罩层
|
|
|
+ loading = this.$baseLoading(1, '文件上传中...')
|
|
|
+
|
|
|
+ // 第三步:创建FormData并上传文件
|
|
|
+ const formData = new FormData()
|
|
|
+ formData.append('file', file)
|
|
|
+
|
|
|
+ // 先调用上传API
|
|
|
+ const uploadRes = await uploadFile('/api/file/v1/upload', formData)
|
|
|
+
|
|
|
+ // 第四步:检查上传结果
|
|
|
+ if (!uploadRes || !uploadRes.value) {
|
|
|
+ // this.$message.error('文件上传失败!');
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 第五步:文件上传成功后,再更新数据
|
|
|
+ const fileInfo = uploadRes.value
|
|
|
+ this.costDocumentTemplateFiles.find(
|
|
|
+ (item) => item.originalText === row.originalText
|
|
|
+ ).dataValue = fileInfo.savePath
|
|
|
+ this.$message.success('文件上传成功!')
|
|
|
+ } catch (error) {
|
|
|
+ console.error('文件上传失败:', error)
|
|
|
+ } finally {
|
|
|
+ // 关闭遮罩层
|
|
|
+ loading.close()
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 触发文件选择对话框显示
|
|
|
+ input.click()
|
|
|
+ },
|
|
|
},
|
|
|
}
|
|
|
</script>
|