支付宝下单和其他细节优化
This commit is contained in:
+12
-77
@@ -15,7 +15,11 @@
|
||||
|
||||
<!-- 简历表格 -->
|
||||
<div class="resume-page__table-wrap">
|
||||
<table class="resume-page__table">
|
||||
<!-- 空状态提示 -->
|
||||
<div v-if="resumeList.length === 0" class="resume-page__empty">
|
||||
<p>暂无简历,请点击上方按钮上传简历</p>
|
||||
</div>
|
||||
<table v-else class="resume-page__table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="resume-page__th">简历</th>
|
||||
@@ -82,40 +86,21 @@
|
||||
@saved="loadResumeList"
|
||||
/>
|
||||
|
||||
<!-- 导出简历格式选择弹窗 -->
|
||||
<el-dialog
|
||||
<!-- 导出简历弹窗组件 -->
|
||||
<ResumeExportDialog
|
||||
v-model="exportDialogVisible"
|
||||
title="导出简历"
|
||||
width="3.6rem"
|
||||
:close-on-click-modal="false"
|
||||
class="resume-export-dialog"
|
||||
>
|
||||
<!-- 格式选择 -->
|
||||
<el-radio-group v-model="exportFormat" class="resume-export-dialog__radio-group">
|
||||
<el-radio value="pdf">PDF 简历</el-radio>
|
||||
<el-radio value="word">Word 简历</el-radio>
|
||||
</el-radio-group>
|
||||
<template #footer>
|
||||
<el-button @click="exportDialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" :loading="exporting" @click="doExport">下载</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 隐藏的简历模板,用于导出时渲染DOM -->
|
||||
<div v-if="exportTemplateData" style="position:absolute;left:-9999px;top:0;">
|
||||
<JobResumeTemplate ref="exportTemplateRef" :resume-data="exportTemplateData" />
|
||||
</div>
|
||||
:resume-id="exportResumeId"
|
||||
:resume-name="exportResumeName"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, nextTick } from 'vue'
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import SideNav from '@/components/SideNav.vue'
|
||||
import ResumeEditNameDialog from '@/components/ResumeEditNameDialog.vue'
|
||||
import JobResumeTemplate from '@/components/JobResumeTemplate.vue'
|
||||
import type { ResumeTemplateData } from '@/components/JobResumeTemplate.vue'
|
||||
import { exportResumePdf, exportResumeWord, loadResumeTemplateData } from '@/utils/resumeExport'
|
||||
import ResumeExportDialog from '@/components/ResumeExportDialog.vue'
|
||||
import { uploadResume } from '@/utils/aiRequest'
|
||||
import {
|
||||
fetchResumeList, deleteResume, type ResumeListItem,
|
||||
@@ -228,60 +213,10 @@ const editTargetPosition = ref('')
|
||||
|
||||
/** 导出弹窗是否可见 */
|
||||
const exportDialogVisible = ref(false)
|
||||
/** 导出格式:pdf 或 word */
|
||||
const exportFormat = ref<'pdf' | 'word'>('pdf')
|
||||
/** 导出中状态 */
|
||||
const exporting = ref(false)
|
||||
/** 当前导出的简历 ID */
|
||||
const exportResumeId = ref('')
|
||||
/** 当前导出的简历名称(用于文件名) */
|
||||
const exportResumeName = ref('')
|
||||
/** 导出用的简历模板数据 */
|
||||
const exportTemplateData = ref<ResumeTemplateData | null>(null)
|
||||
/** 导出用的简历模板组件引用 */
|
||||
const exportTemplateRef = ref<InstanceType<typeof JobResumeTemplate> | null>(null)
|
||||
|
||||
/** 执行导出下载 */
|
||||
async function doExport() {
|
||||
exporting.value = true
|
||||
try {
|
||||
// 1. 加载简历完整数据
|
||||
const data = await loadResumeTemplateData(exportResumeId.value)
|
||||
if (!data) {
|
||||
ElMessage.error('获取简历数据失败')
|
||||
return
|
||||
}
|
||||
|
||||
// 2. 设置模板数据,等待DOM渲染
|
||||
exportTemplateData.value = data
|
||||
await nextTick()
|
||||
|
||||
// 3. 获取渲染后的DOM
|
||||
const element = exportTemplateRef.value?.resumeRef
|
||||
if (!element) {
|
||||
ElMessage.error('简历模板渲染失败')
|
||||
return
|
||||
}
|
||||
|
||||
const fileName = exportResumeName.value || '简历'
|
||||
|
||||
if (exportFormat.value === 'pdf') {
|
||||
await exportResumePdf(element, fileName)
|
||||
} else {
|
||||
exportResumeWord(element, fileName)
|
||||
}
|
||||
|
||||
ElMessage.success('导出成功')
|
||||
exportDialogVisible.value = false
|
||||
} catch (err) {
|
||||
console.error('[导出简历] 失败', err)
|
||||
ElMessage.error('导出失败,请稍后重试')
|
||||
} finally {
|
||||
exporting.value = false
|
||||
// 清理隐藏模板数据
|
||||
exportTemplateData.value = null
|
||||
}
|
||||
}
|
||||
|
||||
/** 弹出菜单操作项 */
|
||||
const popupActions = ['设为默认简历', '编辑名称岗位', '导出简历', '删除']
|
||||
|
||||
Reference in New Issue
Block a user