|
|
|
@ -24,7 +24,7 @@ |
|
|
|
<div class="plan-card" v-for="item in list" :key="item.id"> |
|
|
|
<div class="card-header"> |
|
|
|
<van-icon name="bell" class="bell-icon" /> |
|
|
|
<span class="plan-title">{{ item.checkItemText || item.checkItem }}</span> |
|
|
|
<span class="plan-title">{{ item.planName || item.planName }}</span> |
|
|
|
</div> |
|
|
|
<div class="card-content"> |
|
|
|
<div class="info-row"> |
|
|
|
@ -33,15 +33,27 @@ |
|
|
|
</div> |
|
|
|
<div class="info-row"> |
|
|
|
<span class="label">执法区域:</span> |
|
|
|
<span class="value">{{ item.unitCheck }}</span> |
|
|
|
<span class="value">{{ item.enforcementAreaName || item.enforcementArea }}</span> |
|
|
|
</div> |
|
|
|
<div class="info-row"> |
|
|
|
<span class="label">发布时间:</span> |
|
|
|
<span class="value">{{ item.checkTime }}</span> |
|
|
|
<span class="value">{{ item.enforcementTime }}</span> |
|
|
|
</div> |
|
|
|
<div class="info-row"> |
|
|
|
<span class="label">附件:</span> |
|
|
|
<span class="value"></span> |
|
|
|
<span class="value"> |
|
|
|
<template v-if="item.fileList && item.fileList.length > 0"> |
|
|
|
<span |
|
|
|
v-for="(file, index) in item.fileList" |
|
|
|
:key="file.guid || index" |
|
|
|
class="attachment-link" |
|
|
|
@click="downloadAttachment(file)" |
|
|
|
> |
|
|
|
{{ file.fileName || file.fileSaveName || '未知文件' }} |
|
|
|
</span> |
|
|
|
</template> |
|
|
|
<span v-else>无</span> |
|
|
|
</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -56,7 +68,7 @@ import { ref, onMounted } from 'vue'; |
|
|
|
import { useRouter } from 'vue-router'; |
|
|
|
import { showToast } from 'vant'; |
|
|
|
import 'vant/es/toast/style'; |
|
|
|
import { getLawNoticeList } from '@/api/enforcement/index'; |
|
|
|
import { queryListNoPermission } from '@/api/enforcement/index'; |
|
|
|
|
|
|
|
const router = useRouter(); |
|
|
|
|
|
|
|
@ -76,7 +88,7 @@ const fetchList = () => { |
|
|
|
pageSize: pageSize.value, |
|
|
|
queryParam: searchText.value || undefined, |
|
|
|
}; |
|
|
|
getLawNoticeList(params, (res) => { |
|
|
|
queryListNoPermission(params, (res) => { |
|
|
|
if (res.code === 200) { |
|
|
|
const rows = res.rows || []; |
|
|
|
const total = res.total; |
|
|
|
@ -143,6 +155,21 @@ const onClickLeft = () => { |
|
|
|
router.back(); |
|
|
|
}; |
|
|
|
|
|
|
|
// ========== 下载附件 ========== |
|
|
|
const downloadAttachment = (file) => { |
|
|
|
if (!file || !file.guid) { |
|
|
|
showToast('无法下载该附件'); |
|
|
|
return; |
|
|
|
} |
|
|
|
const downloadUrl = `/api/enf-ep/app-enf/common/file/download?guid=${file.guid}`; |
|
|
|
const link = document.createElement('a'); |
|
|
|
link.href = downloadUrl; |
|
|
|
link.download = file.fileName || file.fileSaveName; |
|
|
|
document.body.appendChild(link); |
|
|
|
link.click(); |
|
|
|
document.body.removeChild(link); |
|
|
|
}; |
|
|
|
|
|
|
|
// ========== 组件挂载时加载数据 ========== |
|
|
|
onMounted(() => { |
|
|
|
// fetchList(); |
|
|
|
@ -259,6 +286,16 @@ onMounted(() => { |
|
|
|
.value { |
|
|
|
flex: 1; |
|
|
|
color: #999; |
|
|
|
display: flex; |
|
|
|
flex-wrap: wrap; |
|
|
|
gap: 8px; |
|
|
|
} |
|
|
|
|
|
|
|
.attachment-link { |
|
|
|
color: #2d94fa; |
|
|
|
text-decoration: underline; |
|
|
|
word-break: break-all; |
|
|
|
cursor: pointer; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|