zhzf/client/src/views/xzzfgl/caseMan/DocumentList.vue

164 lines
4.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div v-loading="exporting" class="container">
<div class="sidebar" >
<div class="collapse-button">
<div style="text-align: left;margin-top: 10px;margin-left: 5px;color: #e8e8e8;font-family: 黑体;font-size: 16px">文书目录</div>
</div>
<!-- 目录内容 -->
<div class="menu-container">
<el-table :data="documents" border height="550">
<el-table-column header-align="left" align="left" label="文书列表" min-width="220" prop="documentName">
<template #default="scope">
<div style="color: #070707;font-size: 18px;font-weight: bold">
{{scope.row.documentName}}
</div>
</template>
</el-table-column>
<el-table-column header-align="center" align="center" width="150" prop="bz" label="状态">
<template #default="scope">
<div v-if="scope.row.documentId===undefined" style="color: #ff0000;font-size: 14px">
未制作
</div>
<div v-if="scope.row.status==='afoot'" style="color: #d8f800;font-size: 14px">
制作中
</div>
<div v-if="scope.row.status==='done'" style="color: #05fb11;font-size: 14px">
已完成
</div>
</template>
</el-table-column>
</el-table>
</div>
</div>
<div class="content">
<el-button @click="mergePDFs" type="danger">导出案卷</el-button>
</div>
</div>
</template>
<script setup>
import {computed, defineProps, markRaw, reactive, ref, toRefs} from 'vue'
import { Fold, Expand } from '@element-plus/icons-vue'
import caseApi from "@/api/lawenforcement/Case.js";
import {ElMessage, ElMessageBox} from "element-plus";
const props = defineProps({
dialogConfig: {
type: Object,
default: () => ({})
},
documents: {
type: Array,
default: () => [],
},
})
const caseData = ref(props.dialogConfig)
const documents = ref(props.documents)
// 状态管理
const isCollapsed = ref(false)
// 计算侧边栏宽度
const sidebarWidth = computed(() => {
return isCollapsed.value ? '40px' : '440px'
})
// 切换折叠状态
const toggleCollapse = () => {
isCollapsed.value = !isCollapsed.value
}
const exporting = ref(false)
const mergePDFs = async () => {
try{
const doneElements = documents.value.filter(item => item.status === 'done');
if(doneElements.length===0){
ElMessage.warning('案件没有文书制作完成!')
}else{
const undoElements = documents.value.filter(item => item.status === undefined||item.status !== 'done');
let wwcwsmc=''
undoElements.forEach(d=>{
wwcwsmc=wwcwsmc+d.documentName+''
})
ElMessageBox.confirm('文书:' + wwcwsmc + '没有完成是否确认导出?', '是否确认导出', {
confirmButtonText: '确定',
cancelButtonText: '取消',
}).then(() => {
exporting.value = true
caseApi.downloadDocument(caseData.value.caseId).then(res=>{
if (res.success&&res.data && res.data.downUrl) {
window.open(res.data.downUrl);
}else{
ElMessage.error('导出失败,请重试。')
}
exporting.value = false
})
}).catch(() => {
})
}
}catch (error) {
ElMessage.error('导出案卷失败:'+ error.message)
exporting.value = false
}
exporting.value = false
}
</script>
<style lang="scss" scoped>
.container {
}
.sidebar {
background: #105b95;
transition: all 0.3s ease;
position: relative;
padding: 10px;
height: fit-content;
}
.collapse-button {
background: #318dc5;
display: flex;
border-radius: 3px;
}
.menu-item {
display: flex;
align-items: center;
padding: 12px;
cursor: pointer;
border-radius: 4px;
transition: background 0.3s;
}
.menu-item:hover {
background: #e8e8e8;
}
.menu-item .el-icon {
margin-right: 8px;
font-size: 18px;
}
.content {
text-align: right;
flex: 1;
padding: 2px;
}
.header {
padding-bottom: 20px;
border-bottom: 1px solid #eee;
margin-bottom: 20px;
}
.sidebar-button {
border: none;
background: none;
cursor: pointer;
padding: 5px;
}
</style>