| | |
| | | v-hasPermi="['system:records:export']" |
| | | >批量提交</el-button> |
| | | </el-col> |
| | | |
| | | <el-col v-if="userId==1" :span="1.5"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-download" |
| | | size="mini" |
| | | @click="handleGivePermission" |
| | | v-hasPermi="['system:materials:edit']" |
| | | >批量授权</el-button> |
| | | </el-col> |
| | | <el-col v-if="userId==1" :span="1.5"> |
| | | <el-button |
| | | type="warning" |
| | |
| | | <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> |
| | | </el-row> |
| | | |
| | | <el-table v-loading="loading" :data="recordsList" @selection-change="handleSelectionChange"> |
| | | <el-table v-loading="loading" :data="recordsList" @selection-change="handleSelectionChange" @sort-change="handleSortChange"> |
| | | <el-table-column type="selection" width="55" align="center" /> |
| | | |
| | | |
| | |
| | | @click="handleInfo(scope.row)" |
| | | v-hasPermi="['system:records:edit']" |
| | | >编辑卷内目录</el-button> |
| | | <el-button |
| | | v-if="userId===1" |
| | | |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-edit" |
| | | @click="CheckInfo(scope.row)" |
| | | v-hasPermi="['system:records:edit']" |
| | | >查看卷内目录</el-button> |
| | | <el-button |
| | | v-if="userId===1" |
| | | |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-edit" |
| | | @click="backInfo(scope.row)" |
| | | v-hasPermi="['system:records:edit']" |
| | | >导出备考表</el-button> |
| | | |
| | | <el-button |
| | | v-if="userId===1" |
| | | |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-edit" |
| | | @click="JuanInfo(scope.row)" |
| | | v-hasPermi="['system:records:edit']" |
| | | >导出卷内目录</el-button> |
| | | |
| | | |
| | | <el-button |
| | | v-if="userId===1" |
| | | |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-edit" |
| | | @click="pageInfo(scope.row)" |
| | | v-hasPermi="['system:records:edit']" |
| | | >导出案卷封面</el-button> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | |
| | | @click="handleSubmit(scope.row)" |
| | | v-hasPermi="['system:records:edit']" |
| | | >提交案卷</el-button> |
| | | |
| | | <el-button |
| | | v-if="scope.row.ownData||userId===1" |
| | | |
| | |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="状态" align="center" prop="recordStatus" width="120"> |
| | | <el-table-column label="状态" align="center" sortable="custom" prop="recordStatus" width="120"> |
| | | <template slot-scope="scope"> |
| | | <el-button :type="scope.row.recordStatus === '未录入' ? 'danger' : 'success'" size="mini"> |
| | | {{ scope.row.recordStatus }} |
| | |
| | | </el-table-column> |
| | | |
| | | <!-- <el-table-column label="${comment}" align="center" prop="id" /> --> |
| | | <el-table-column label="档案号" align="center" prop="recordId" /> |
| | | <el-table-column label="档案号" align="center" sortable="custom" prop="recordId" width="120"/> |
| | | <el-table-column label="发文号" align="center" prop="inquiryNumber" /> |
| | | |
| | | |
| | |
| | | <el-button @click="cancel">取 消</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | |
| | | |
| | | |
| | | <!-- 授权用户 --> |
| | | <el-dialog title="选择用户" :visible.sync="visibleUser" width="800px" top="5vh" append-to-body> |
| | | |
| | | <el-row> |
| | | <el-table @row-click="clickRow" ref="table" :data="userList" @selection-change="handleSingleSelection" |
| | | height="260px"> |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" /> |
| | | <!-- <el-table-column label="状态" align="center" prop="status"> |
| | | <template slot-scope="scope"> |
| | | <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/> |
| | | </template> |
| | | </el-table-column> --> |
| | | <el-table-column label="创建时间" align="center" prop="createTime" width="180"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ parseTime(scope.row.createTime) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | v-show="totalUser>0" |
| | | :total="totalUser" |
| | | :page.sync="queryParamsUser.pageNum" |
| | | :limit.sync="queryParamsUser.pageSize" |
| | | @pagination="getUserList" |
| | | /> |
| | | </el-row> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" @click="handleSelectUser">确 定</el-button> |
| | | <el-button @click="visibleUser = false">取 消</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | import { listAllCategory } from "@/api/system/category" |
| | | import { listAllProjectName } from "@/api/system/projectName" |
| | | import { listPlaceName, listAllPlaceName } from "@/api/system/placeName" |
| | | import { judge } from "@/api/system/materials" |
| | | import { UserRoleIdList,unallocatedUserList, authUserSelectAll } from "@/api/system/role" |
| | | import {authManyRecordsToUsers} from "@/api/system/archiverecordstouser" |
| | | |
| | | export default { |
| | | components: { |
| | | VueOfficeExcel |
| | |
| | | name: "Records", |
| | | data() { |
| | | return { |
| | | totalUser: 0, |
| | | visibleUser:false, |
| | | userList:[], |
| | | // 选中数组值 |
| | | userIds: [], |
| | | queryParamsUser: { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | roleId: undefined, |
| | | archiveRecordsId: undefined, |
| | | |
| | | }, |
| | | showExcelPreview: false, |
| | | excel: 'http://localhost:8080/profile/upload/12.xls', //设置文档网络地址,可以是相对地址 |
| | | |
| | |
| | | archiveRoomNumber: null, |
| | | microfilmNumber: null, |
| | | remarks: null, |
| | | historicalReferenceNumber: null |
| | | historicalReferenceNumber: null, |
| | | |
| | | orderByColumn: null, |
| | | isAsc: null |
| | | }, |
| | | // Excel弹窗相关数据 |
| | | excelDialogVisible: false, |
| | |
| | | this.fetchProjectOptions() |
| | | this.fetchProjectCompanyOptions() |
| | | this.getList() |
| | | |
| | | }, |
| | | watch: { |
| | | 'form.constructionUnit': { |
| | |
| | | beforeDestroy() { |
| | | // 清理事件监听器和定时器 |
| | | document.removeEventListener('keydown', this.handleKeyDown); |
| | | if (this.excelPreviewTimeout) { |
| | | clearTimeout(this.excelPreviewTimeout); |
| | | } |
| | | // if (this.excelPreviewTimeout) { |
| | | // clearTimeout(this.excelPreviewTimeout); |
| | | // } |
| | | if (this.currentExcelUrl) { |
| | | URL.revokeObjectURL(this.currentExcelUrl); |
| | | } |
| | | }, |
| | | methods: { |
| | | /** 选择授权用户操作 */ |
| | | handleSelectUser() { |
| | | // const archiveRecordsId = this.queryParams.archiveRecordsId |
| | | const userIds = this.userIds.join(",") |
| | | // const aids = this.ids.join(",") |
| | | // alert(aids) |
| | | if (userIds == "") { |
| | | this.$modal.msgError("请选择要分配的用户") |
| | | return |
| | | } |
| | | |
| | | // 创建转换后的参数,确保recordId是数字类型 |
| | | // const convertedRecordId = !isNaN(Number(archiveRecordsId)) ? Number(archiveRecordsId) : 0 |
| | | const convertedRecordId = this.ids.join(",") |
| | | if (convertedRecordId == "") { |
| | | this.$modal.msgError("请选择相应的案卷") |
| | | return |
| | | } |
| | | authManyRecordsToUsers({ recordIds: convertedRecordId, userIds: userIds }).then(res => { |
| | | if(res.code === 200) { |
| | | this.$modal.msgSuccess(res.msg) |
| | | this.visibleUser = false |
| | | // this.$emit("ok") |
| | | } else { |
| | | this.$modal.msgError(res.msg || "授权失败,已经授权过了") |
| | | } |
| | | }) |
| | | }, |
| | | clickRow(row) { |
| | | this.$refs.table.clearSelection(); |
| | | this.$refs.table.toggleRowSelection(row); |
| | | }, |
| | | // 替换原有的handleSelectionChange方法 |
| | | handleSingleSelection(selection) { |
| | | if (selection.length > 1) { |
| | | this.$refs.table.clearSelection(); |
| | | this.$refs.table.toggleRowSelection(selection[selection.length - 1]); |
| | | } |
| | | else |
| | | this.userIds = selection.map(item => item.userId); |
| | | }, |
| | | // 多选框选中数据 |
| | | handleSelectionChange(selection) { |
| | | this.userIds = selection.map(item => item.userId) |
| | | }, |
| | | // 查询表数据 |
| | | getUserList() { |
| | | this.queryParamsUser.roleId = 2 |
| | | UserRoleIdList(this.queryParamsUser).then(res => { |
| | | console.log("=------00000000009") |
| | | console.log(res) |
| | | |
| | | this.userList = res.rows |
| | | this.totalUser = res.total |
| | | }) |
| | | }, |
| | | /** Excel渲染完成处理 */ |
| | | renderedHandler() { |
| | | console.log("Excel渲染完成"); |
| | |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | // 排序处理方法 |
| | | |
| | | // 添加handleSortChange方法 |
| | | handleSortChange({ column, prop, order }) { |
| | | // alert(23) |
| | | |
| | | if (order === 'ascending') { |
| | | this.queryParams.orderByColumn = prop; |
| | | this.queryParams.isAsc = 'asc'; |
| | | } else if (order === 'descending') { |
| | | this.queryParams.orderByColumn = prop; |
| | | this.queryParams.isAsc = 'desc'; |
| | | } else { |
| | | this.queryParams.orderByColumn = null; |
| | | this.queryParams.isAsc = null; |
| | | } |
| | | this.getList(); |
| | | }, |
| | | // 取消按钮 |
| | | cancel() { |
| | | this.open = false |
| | |
| | | this.vis = false; |
| | | this.title = "添加档案记录" |
| | | }, |
| | | |
| | | /*查看详情*/ |
| | | handleInfo(row) |
| | | CheckInfo(row) |
| | | { |
| | | |
| | | var mid = row.id |
| | |
| | | |
| | | var recordId = mid |
| | | var pageCount = row.pageCount |
| | | var sho = false |
| | | // this.$router.push("/archiveManager/infoManagerAu/user/" + roleId+"/"+recordId) |
| | | this.$router.push("/archiveManager/infoManagerAu/archiveMaterialManager/" + recordId+"/"+pageCount) |
| | | this.$router.push("/archiveManager/infoManagerAu/archiveMaterialManager/" + recordId+"/"+pageCount+"/"+sho) |
| | | |
| | | }, |
| | | /*导出备考表*/ |
| | | backInfo(row) |
| | | { |
| | | |
| | | var id = row.id |
| | | |
| | | id = Number(id) |
| | | |
| | | var recordId = row.recordId |
| | | this.download('/system/materials/exportBack/'+id+'/'+recordId, { |
| | | |
| | | }, `备考表_${new Date().getTime()}.pdf`) |
| | | }, |
| | | |
| | | /*导出卷内目录*/ |
| | | JuanInfo(row) |
| | | { |
| | | var id = row.id |
| | | |
| | | id = Number(id) |
| | | |
| | | var recordId = row.recordId |
| | | this.download('/system/materials/exportJuan/'+id, { |
| | | |
| | | }, `卷内目录_${new Date().getTime()}.xls`) |
| | | }, |
| | | /*导出案卷封面*/ |
| | | pageInfo(row) |
| | | { |
| | | var id = row.id |
| | | |
| | | id = Number(id) |
| | | |
| | | var recordId = row.recordId |
| | | this.download('/system/materials/exportPageInfo/'+id+'/'+recordId, { |
| | | |
| | | }, `案卷封面_${new Date().getTime()}.xls`) |
| | | }, |
| | | handleInfo(row) |
| | | { |
| | | |
| | | //判断必须修改的字段是否补充完整了 |
| | | var valid = false; |
| | | var pageCount = row.pageCount |
| | | if(row.projectName!=null&&row.pageCount!=null&&row.caseTitle!=null&&row.constructionUnit) |
| | | valid = true; |
| | | if (valid) { |
| | | var mid = row.id |
| | | const roleId = 2 |
| | | // alert(mid) |
| | | |
| | | var recordId = mid |
| | | |
| | | var sho = true |
| | | // this.$router.push("/archiveManager/infoManagerAu/user/" + roleId+"/"+recordId) |
| | | this.$router.push("/archiveManager/infoManagerAu/archiveMaterialManager/" + recordId+"/"+pageCount+"/"+sho) |
| | | }else |
| | | { |
| | | this.$modal.msgWarning("请补充页号等相关信息,再编辑卷内目录!") |
| | | } |
| | | |
| | | }, |
| | | // |
| | |
| | | { |
| | | //alert(row.id) |
| | | var id = row.id |
| | | var status = '录入完成' |
| | | updateStatusById(status, id).then(response=>{ |
| | | this.$modal.msgSuccess("提交成功") |
| | | this.getList() |
| | | // 在提交之前,调用后端接口检查是否已经上传附件 |
| | | judge(id).then(response => { |
| | | // console.log(response) |
| | | // alert(response.data) |
| | | if (response.data===undefined||response.data === false) { |
| | | // 如果文件数量为0,提示用户先上传附件 |
| | | this.$modal.msgWarning('请先上传附件,再进行提交操作') |
| | | } else { |
| | | // 如果已经上传了附件,继续提交操作 |
| | | var status = '录入完成' |
| | | updateStatusById(status, id).then(response=>{ |
| | | this.$modal.msgSuccess("提交成功") |
| | | this.getList() |
| | | }) |
| | | } |
| | | }).catch(error => { |
| | | console.error('检查附件数量失败:', error) |
| | | this.$modal.msgError('检查附件数量失败,请稍后重试') |
| | | }) |
| | | }, |
| | | /** 修改按钮操作 */ |
| | |
| | | if(this.recordTypeOptions.length > 0) { |
| | | const recordParts = response.data.recordId.split('-') |
| | | this.$set(this.form, 'recordType', recordParts[0]) |
| | | if(this.recordTypeOptions.length==4) |
| | | if(recordParts.length==4) |
| | | { |
| | | this.$set(this.form, 'recordZone', recordParts[1]) |
| | | |
| | |
| | | this.open = true |
| | | this.title = "修改档案记录" |
| | | }) |
| | | }, |
| | | /*批量授权*/ |
| | | handleGivePermission() |
| | | { |
| | | if (this.ids.length === 0) { |
| | | this.$modal.msgWarning('请选择要授权的档案记录') |
| | | return |
| | | } |
| | | this.visibleUser = true |
| | | this.getUserList() |
| | | }, |
| | | /** 批量提交 */ |
| | | handleBatchSubmit() { |
| | |
| | | this.form = response.data |
| | | if(this.recordTypeOptions.length > 0) { |
| | | const recordParts = response.data.recordId.split('-') |
| | | |
| | | this.$set(this.form, 'recordType', recordParts[0]) |
| | | if(this.recordTypeOptions.length==4) |
| | | if(recordParts.length==4) |
| | | { |
| | | this.$set(this.form, 'recordZone', recordParts[1]) |
| | | |
| | |
| | | /** 分配用户操作 */ |
| | | handleAuthUser: function(row) { |
| | | const roleId = 2 |
| | | var archiveRecordsId = row.recordId |
| | | |
| | | var archiveRecordsId = row.id |
| | | this.$router.push("/archiveManager/infoManagerAu/user/" + roleId+"/"+archiveRecordsId) |
| | | }, |
| | | /** 删除按钮操作 */ |
| | |
| | | // 只导出选中的记录 |
| | | this.download('system/records/export', { |
| | | ids: this.ids.join(',') // 将选中的ID数组转换为逗号分隔的字符串 |
| | | }, `records_${new Date().getTime()}.xlsx`) |
| | | }, `records_${new Date().getTime()}.xls`) |
| | | } else { |
| | | // 没有选中记录时,导出符合查询条件的所有记录 |
| | | this.download('system/records/export', { |
| | | ...this.queryParams |
| | | }, `records_${new Date().getTime()}.xlsx`) |
| | | }, `records_${new Date().getTime()}.xls`) |
| | | } |
| | | }, |
| | | |
| | |
| | | this.getExcelFile(id).then(blob => { |
| | | this.$modal.closeLoading(); |
| | | // 保存文件信息并显示静态弹窗 |
| | | |
| | | this.currentExcelUrl = URL.createObjectURL(blob); |
| | | |
| | | this.currentExcelBlob = blob; |
| | | this.currentExcelId = id; |
| | | this.excelDialogVisible = true; |
| | |
| | | this.getExcelFile(id).then(blob => { |
| | | this.$modal.closeLoading(); |
| | | // 保存文件信息并显示静态弹窗 |
| | | // alert(23) |
| | | this.currentExcelUrl = URL.createObjectURL(blob); |
| | | // alert(this.currentExcelUrl) |
| | | this.currentExcelBlob = blob; |
| | | this.currentExcelId = id; |
| | | this.excelDialogVisible = true; |
| | |
| | | this.$modal.closeLoading(); |
| | | console.error('获取Excel文件失败:', error); |
| | | this.$modal.msgError('获取Excel文件失败,请稍后重试'); |
| | | |
| | | |
| | | this.showExcelPreview = false; |
| | | }); |
| | | // 重置vue-office-excel组件 |
| | | if (this.currentExcelUrl) { |
| | | const tempUrl = this.currentExcelUrl; |
| | | this.currentExcelUrl = ''; |
| | | this.$nextTick(() => { |
| | | this.currentExcelUrl = tempUrl; |
| | | }); |
| | | } |
| | | // // 重置vue-office-excel组件 |
| | | // if (this.currentExcelUrl) { |
| | | // const tempUrl = this.currentExcelUrl; |
| | | // this.currentExcelUrl = ''; |
| | | // this.$nextTick(() => { |
| | | // this.currentExcelUrl = tempUrl; |
| | | // }); |
| | | // } |
| | | |
| | | const previewContainer = this.$refs.excelPreviewContainer; |
| | | // const previewContainer = this.$refs.excelPreviewContainer; |
| | | |
| | | // 清空预览容器 |
| | | if (previewContainer) { |
| | | previewContainer.innerHTML = ''; |
| | | // // 清空预览容器 |
| | | // if (previewContainer) { |
| | | // previewContainer.innerHTML = ''; |
| | | |
| | | // 尝试使用微软Office Online预览服务作为备选 |
| | | const officeOnlineUrl = `https://view.officeapps.live.com/op/embed.aspx?src=${encodeURIComponent(this.currentExcelUrl)}`; |
| | | // // 尝试使用微软Office Online预览服务作为备选 |
| | | // const officeOnlineUrl = `https://view.officeapps.live.com/op/embed.aspx?src=${encodeURIComponent(this.currentExcelUrl)}`; |
| | | |
| | | // 创建iframe用于预览 |
| | | const iframe = document.createElement('iframe'); |
| | | iframe.style.width = '100%'; |
| | | iframe.style.height = '100%'; |
| | | iframe.style.border = 'none'; |
| | | iframe.style.minHeight = '600px'; |
| | | iframe.src = officeOnlineUrl; |
| | | iframe.title = 'Excel文件预览'; |
| | | // // 创建iframe用于预览 |
| | | // const iframe = document.createElement('iframe'); |
| | | // iframe.style.width = '100%'; |
| | | // iframe.style.height = '100%'; |
| | | // iframe.style.border = 'none'; |
| | | // iframe.style.minHeight = '600px'; |
| | | // iframe.src = officeOnlineUrl; |
| | | // iframe.title = 'Excel文件预览'; |
| | | |
| | | // 创建加载指示器 |
| | | const loadingIndicator = document.createElement('div'); |
| | | loadingIndicator.className = 'loading-indicator'; |
| | | loadingIndicator.innerHTML = ` |
| | | <div class="loading-spinner"></div> |
| | | <p>正在加载Excel文件,请稍候...</p> |
| | | `; |
| | | previewContainer.style.position = 'relative'; |
| | | previewContainer.appendChild(iframe); |
| | | previewContainer.appendChild(loadingIndicator); |
| | | // // 创建加载指示器 |
| | | // const loadingIndicator = document.createElement('div'); |
| | | // loadingIndicator.className = 'loading-indicator'; |
| | | // loadingIndicator.innerHTML = ` |
| | | // <div class="loading-spinner"></div> |
| | | // <p>正在加载Excel文件,请稍候...</p> |
| | | // `; |
| | | // previewContainer.style.position = 'relative'; |
| | | // previewContainer.appendChild(iframe); |
| | | // previewContainer.appendChild(loadingIndicator); |
| | | |
| | | // 监听iframe加载完成 |
| | | iframe.onload = () => { |
| | | this.excelLoading = false; |
| | | if (loadingIndicator && loadingIndicator.parentNode) { |
| | | loadingIndicator.parentNode.removeChild(loadingIndicator); |
| | | } |
| | | }; |
| | | // // 监听iframe加载完成 |
| | | // iframe.onload = () => { |
| | | // this.excelLoading = false; |
| | | // if (loadingIndicator && loadingIndicator.parentNode) { |
| | | // loadingIndicator.parentNode.removeChild(loadingIndicator); |
| | | // } |
| | | // }; |
| | | |
| | | // 设置超时处理 |
| | | this.excelPreviewTimeout = setTimeout(() => { |
| | | this.excelLoading = false; |
| | | if (loadingIndicator && loadingIndicator.parentNode) { |
| | | loadingIndicator.parentNode.removeChild(loadingIndicator); |
| | | } |
| | | // // 设置超时处理 |
| | | // this.excelPreviewTimeout = setTimeout(() => { |
| | | // this.excelLoading = false; |
| | | // if (loadingIndicator && loadingIndicator.parentNode) { |
| | | // loadingIndicator.parentNode.removeChild(loadingIndicator); |
| | | // } |
| | | |
| | | // 尝试直接预览作为备选方案 |
| | | previewContainer.innerHTML = ''; |
| | | const directIframe = document.createElement('iframe'); |
| | | directIframe.style.width = '100%'; |
| | | directIframe.style.height = '100%'; |
| | | directIframe.style.border = 'none'; |
| | | directIframe.style.minHeight = '600px'; |
| | | directIframe.src = this.currentExcelUrl; |
| | | // // 尝试直接预览作为备选方案 |
| | | // previewContainer.innerHTML = ''; |
| | | // const directIframe = document.createElement('iframe'); |
| | | // directIframe.style.width = '100%'; |
| | | // directIframe.style.height = '100%'; |
| | | // directIframe.style.border = 'none'; |
| | | // directIframe.style.minHeight = '600px'; |
| | | // directIframe.src = this.currentExcelUrl; |
| | | |
| | | const fallbackMessage = document.createElement('div'); |
| | | fallbackMessage.textContent = 'Office预览服务加载超时,正在尝试直接预览...'; |
| | | fallbackMessage.style.cssText = ` |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | right: 0; |
| | | padding: 10px; |
| | | background-color: #f56c6c; |
| | | color: white; |
| | | text-align: center; |
| | | font-size: 14px; |
| | | z-index: 10; |
| | | `; |
| | | // const fallbackMessage = document.createElement('div'); |
| | | // fallbackMessage.textContent = 'Office预览服务加载超时,正在尝试直接预览...'; |
| | | // fallbackMessage.style.cssText = ` |
| | | // position: absolute; |
| | | // top: 0; |
| | | // left: 0; |
| | | // right: 0; |
| | | // padding: 10px; |
| | | // background-color: #f56c6c; |
| | | // color: white; |
| | | // text-align: center; |
| | | // font-size: 14px; |
| | | // z-index: 10; |
| | | // `; |
| | | |
| | | previewContainer.appendChild(directIframe); |
| | | previewContainer.appendChild(fallbackMessage); |
| | | // previewContainer.appendChild(directIframe); |
| | | // previewContainer.appendChild(fallbackMessage); |
| | | |
| | | directIframe.onload = () => { |
| | | if (fallbackMessage && fallbackMessage.parentNode) { |
| | | fallbackMessage.parentNode.removeChild(fallbackMessage); |
| | | } |
| | | }; |
| | | // directIframe.onload = () => { |
| | | // if (fallbackMessage && fallbackMessage.parentNode) { |
| | | // fallbackMessage.parentNode.removeChild(fallbackMessage); |
| | | // } |
| | | // }; |
| | | |
| | | // 二次超时处理 |
| | | setTimeout(() => { |
| | | if (directIframe && directIframe.parentNode) { |
| | | directIframe.parentNode.removeChild(directIframe); |
| | | } |
| | | const errorMessage = document.createElement('div'); |
| | | errorMessage.innerHTML = ` |
| | | <div style="text-align: center; padding: 40px;"> |
| | | <h3 style="color: #f56c6c; margin-bottom: 20px;">预览失败</h3> |
| | | <p style="color: #666; margin-bottom: 30px;">无法在浏览器中预览Excel文件,请点击下方按钮下载文件后查看。</p> |
| | | <button onclick="this.parentNode.parentNode.querySelector('.download-btn').click()" |
| | | style="padding: 8px 20px; background: #409EFF; color: white; border: none; border-radius: 4px; cursor: pointer;"> |
| | | 下载Excel文件 |
| | | </button> |
| | | </div> |
| | | `; |
| | | previewContainer.appendChild(errorMessage); |
| | | }, 20000); |
| | | }, 25000); |
| | | } |
| | | // // 二次超时处理 |
| | | // setTimeout(() => { |
| | | // if (directIframe && directIframe.parentNode) { |
| | | // directIframe.parentNode.removeChild(directIframe); |
| | | // } |
| | | // const errorMessage = document.createElement('div'); |
| | | // errorMessage.innerHTML = ` |
| | | // <div style="text-align: center; padding: 40px;"> |
| | | // <h3 style="color: #f56c6c; margin-bottom: 20px;">预览失败</h3> |
| | | // <p style="color: #666; margin-bottom: 30px;">无法在浏览器中预览Excel文件,请点击下方按钮下载文件后查看。</p> |
| | | // <button onclick="this.parentNode.parentNode.querySelector('.download-btn').click()" |
| | | // style="padding: 8px 20px; background: #409EFF; color: white; border: none; border-radius: 4px; cursor: pointer;"> |
| | | // 下载Excel文件 |
| | | // </button> |
| | | // </div> |
| | | // `; |
| | | // previewContainer.appendChild(errorMessage); |
| | | // }, 20000); |
| | | // }, 25000); |
| | | // } |
| | | }, |
| | | |
| | | /** 处理打印按钮点击 */ |
| | |
| | | // 获取用户选择的选项 |
| | | const { includeQrCode, selectedAnnotations } = this.excelOptions; |
| | | console.log('下载选项:', { includeQrCode, selectedAnnotations }); |
| | | var id = this.recordId ; |
| | | this.getExcelFile(id).then(blob => { |
| | | this.$modal.closeLoading(); |
| | | // 保存文件信息并显示静态弹窗 |
| | | // alert(23) |
| | | this.currentExcelUrl = URL.createObjectURL(blob); |
| | | |
| | | const link = document.createElement('a'); |
| | | link.href = this.currentExcelUrl; |
| | | |
| | | // 构建文件名,包含选项信息 |
| | | let filename = `record_${this.currentExcelId}`; |
| | | if (includeQrCode) filename += '_qr'; |
| | | // if (selectedAnnotations.length > 0) { |
| | | // filename += `_anno${selectedAnnotations.join('')}`;x |
| | | // } |
| | | filename += `_${new Date().getTime()}.xls`; |
| | | |
| | | link.download = filename; |
| | | |
| | | // 触发下载 |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | document.body.removeChild(link); |
| | | |
| | | // 提示下载成功 |
| | | this.$modal.msgSuccess('Excel文件下载成功'); |
| | | // alert(this.currentExcelUrl) |
| | | // this.currentExcelBlob = blob; |
| | | // this.currentExcelId = id; |
| | | // this.excelDialogVisible = true; |
| | | // this.excelLoading = false; |
| | | }).catch(error => { |
| | | this.$modal.closeLoading(); |
| | | console.error('获取Excel文件失败:', error); |
| | | this.$modal.msgError('获取Excel文件失败,请稍后重试'); |
| | | |
| | | |
| | | this.showExcelPreview = false; |
| | | }); |
| | | // alert(this.excelOptions.includeQrCode) |
| | | // 创建下载链接,文件名包含选项信息 |
| | | const link = document.createElement('a'); |
| | | link.href = this.currentExcelUrl; |
| | | |
| | | // 构建文件名,包含选项信息 |
| | | let filename = `record_${this.currentExcelId}`; |
| | | if (includeQrCode) filename += '_qr'; |
| | | // if (selectedAnnotations.length > 0) { |
| | | // filename += `_anno${selectedAnnotations.join('')}`; |
| | | // } |
| | | filename += `_${new Date().getTime()}.xlsx`; |
| | | |
| | | link.download = filename; |
| | | |
| | | // 触发下载 |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | document.body.removeChild(link); |
| | | |
| | | // 提示下载成功 |
| | | this.$modal.msgSuccess('Excel文件下载成功'); |
| | | } |
| | | }, |
| | | |
| | |
| | | /** 从后端获取Excel文件 */ |
| | | getExcelFile(id) { |
| | | var includeQrCode = this.excelOptions.includeQrCode; |
| | | var urls = `${process.env.VUE_APP_BASE_API}/system/records/recordFileList`+"/"+includeQrCode; |
| | | var urls = `${process.env.VUE_APP_BASE_API}/system/records/recordFileList` |
| | | //+"/"+includeQrCode; |
| | | |
| | | |
| | | if(this.excelOptions.subselectedSignatures.length!=0) |
| | | { |
| | | var selectedSignatures = this.excelOptions.subselectedSignatures |
| | | urls = urls +'/'+ selectedSignatures |
| | | } |
| | | if(this.excelOptions.subselectedAnnotations.length!=0) |
| | | { |
| | | var selectedAnnotations = this.excelOptions.subselectedAnnotations |
| | | urls = urls+"/"+selectedAnnotations |
| | | } |
| | | |
| | | // // if(this.excelOptions.subselectedSignatures.length!=0) |
| | | // // { |
| | | // // var selectedSignatures = this.excelOptions.subselectedSignatures |
| | | // // urls = urls +'/'+ selectedSignatures |
| | | // // // alert(urls) |
| | | // // } |
| | | // console.log(this.excelOptions.subselectedAnnotations) |
| | | // alert(234) |
| | | // if(this.excelOptions.subselectedAnnotations.length!=0) |
| | | // { |
| | | // var selectedAnnotations = this.excelOptions.subselectedAnnotations |
| | | // urls = urls+"/"+selectedAnnotations |
| | | // // alert(urls) |
| | | // } |
| | | // alert(urls) |
| | | return new Promise((resolve, reject) => { |
| | | // 首先尝试使用axios(项目已有的HTTP客户端) |
| | | try { |
| | |
| | | // 构建参数,包含注解内容 |
| | | const params = { |
| | | recordId: id, |
| | | |
| | | selectedSignatures: this.excelOptions.subselectedSignatures, |
| | | selectedAnnotations: this.excelOptions.subselectedAnnotations, |
| | | includeQrCode: this.excelOptions.includeQrCode |
| | | }; |
| | | console.log(params) |
| | | alert(457) |
| | | |
| | | axios({ |
| | | method: 'Post', |
| | | url: urls, |
| | | params: params, |
| | | data: params, |
| | | responseType: 'blob', |
| | | headers: { 'Authorization': 'Bearer ' + getToken() } |
| | | }).then(response => { |
| | |
| | | // 直接下载 |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = `${prefix}_${new Date().getTime()}.xlsx`; |
| | | link.download = `${prefix}_${new Date().getTime()}.xls`; |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | document.body.removeChild(link); |
| | |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = `record_${id}_${new Date().getTime()}.xlsx`; |
| | | link.download = `record_${id}_${new Date().getTime()}.xls`; |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | document.body.removeChild(link); |
| | |
| | | { |
| | | this.download('/system/records/model', { |
| | | |
| | | }, `records_${new Date().getTime()}.xlsx`) |
| | | }, `records_${new Date().getTime()}.xls`) |
| | | }, |
| | | handleExportTemplateOther() |
| | | { |
| | | this.download('/system/records/modelOther', { |
| | | |
| | | }, `records_${new Date().getTime()}.xlsx`) |
| | | }, `records_${new Date().getTime()}.xls`) |
| | | }, |
| | | /** 导入操作*/ |
| | | async handleImportData({file}){ |