feat: 会议提交剩余时间+解冻 + 会务/劳务材料批量下载 + 多角色人员/账号模块完善

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
郭庆泰
2026-08-25 06:53:18 +08:00
co-authored by Claude
parent 0c882ae846
commit 591a43fe61
126 changed files with 3789 additions and 1334 deletions
+18 -2
View File
@@ -45,9 +45,12 @@
</el-table-column>
<el-table-column prop="planCategory" label="项目类别" width="120" />
<el-table-column prop="projectForm" label="形式" width="100" />
<el-table-column label="设计文件" width="100">
<el-table-column label="设计文件" width="140">
<template #default="{ row }">
<el-link v-if="row.designFileUrl" type="primary" :href="row.designFileUrl" target="_blank">下载</el-link>
<template v-if="row.designFileUrl">
<el-button link type="primary" @click="openPreview(row.designFileUrl, '设计文件')">查看</el-button>
<el-link type="primary" :href="row.designFileUrl" target="_blank">下载</el-link>
</template>
<span v-else>-</span>
</template>
</el-table-column>
@@ -77,6 +80,7 @@
style="margin-top: 12px; text-align: right;"
/>
<Preview v-model="previewOpen" :url="previewUrl" :title="previewTitle" />
</div>
</template>
@@ -88,6 +92,7 @@ import request from '@/utils/request'
import { bizList, bizUpdate } from '@/api/public'
import DictSelect from '@/components/DictSelect.vue'
import AuditStatusTag from '@/components/AuditStatusTag.vue'
import Preview from '@/components/Preview.vue'
const router = useRouter()
const route = useRoute()
@@ -107,6 +112,11 @@ const rows = ref([])
const loading = ref(false)
const selected = ref([])
// 设计文件预览
const previewOpen = ref(false)
const previewUrl = ref('')
const previewTitle = ref('附件预览')
// 项目方向 options (复用 manager 侧接口)
const planDirectionOptions = ref([])
async function loadPlanDirectionOptions() {
@@ -184,6 +194,12 @@ async function onBatch() {
load()
}
function openPreview(url, title) {
previewUrl.value = url
previewTitle.value = title || '附件预览'
previewOpen.value = true
}
onMounted(() => {
loadPlanDirectionOptions()
load()