Files
admin-sjzx/src/views/pqs/database/stencil/index.vue
2025-12-25 13:19:24 +08:00

163 lines
5.5 KiB
Vue

<template>
<div class="default-main">
<!-- 模版 -->
<TableHeader ref="TableHeaderRef" >
<template #select>
<el-form-item label="名称">
<el-input v-model="tableStore.table.params.searchValue" clearable
placeholder="请输入搜索名称" maxlength="32" show-word-limit/>
</el-form-item>
</template>
<template #operation>
<el-button icon="el-icon-Plus" type="primary" @click="addUser" v-if="information">新增</el-button>
</template>
</TableHeader>
<Table ref="tableRef"></Table>
<!-- 弹框 -->
<PopupEdit ref="popupEditRef" @onSubmit="tableStore.index()" />
</div>
</template>
<script setup lang="ts">
import { onMounted, ref, provide } from 'vue'
import TableStore from '@/utils/tableStore'
import TableHeader from '@/components/table/header/index.vue'
import { libtemplateDel } from '@/api/supervision-boot/database/index'
import { ElMessage } from 'element-plus'
import Table from '@/components/table/index.vue'
import { getFileNameAndFilePath, downloadFile } from '@/api/system-boot/file'
import PopupEdit from './components/form.vue'
import { useAdminInfo } from '@/stores/adminInfo'
const adminInfo = useAdminInfo()
defineOptions({
name: 'database/stencil'
})
const information = adminInfo.roleCode.includes('information_info')
const popupEditRef = ref()
const VITE_FLAG = import.meta.env.VITE_NAME == 'jibei'
const TableHeaderRef = ref()
const tableStore = new TableStore({
url: '/supervision-boot/libtemplate/pageQuery',
method: 'POST',
column: [
{ title: '模版名称', field: 'name' },
{
title: '创建时间',
field: 'createTime'
},
{
title: '操作',
width: '280',
render: 'buttons',
buttons: [
{
name: 'edit',
title: '预览 ',
type: 'primary',
icon: 'el-icon-Plus',
render: 'basicButton',
// disabled: row => {
// return !VITE_FLAG
// },
click: row => {
window.open(window.location.origin + '/#/previewFile?' + row.url)
}
},
{
name: 'edit',
title: '下载 ',
type: 'primary',
icon: 'el-icon-Plus',
render: 'basicButton',
click: row => {
downloadTheReport(row.url)
}
},
{
name: 'edit',
title: '修改 ',
type: 'primary',
icon: 'el-icon-Plus',
render: 'basicButton',
disabled: row => {
return !information
},
click: row => {
popupEditRef.value.open('修改模版', row)
}
},
{
title: '删除',
type: 'danger',
icon: 'el-icon-Delete',
render: 'confirmButton',
disabled: row => {
return !information
},
popconfirm: {
confirmButtonText: '确认',
cancelButtonText: '取消',
confirmButtonType: 'danger',
title: '确定删除吗?'
},
click: row => {
libtemplateDel({ id: row.id }).then(() => {
ElMessage.success('删除成功')
tableStore.index()
})
}
}
]
}
],
loadCallback: () => { }
})
tableStore.table.params.searchValue=''
// 弹框
const addUser = () => {
popupEditRef.value.open('新增模版')
}
// 下载报告
const downloadTheReport = (url: any) => {
let urls = url
let name = url.match(/\/([^/]+)\.(\w+)$/)[1]
downloadFile({ filePath: url }).then((res: any) => {
let blob = new Blob([res], {
type: urls.includes('.pdf')
? 'application/pdf'
: urls.includes('.docx')
? 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
: urls.includes('.xls')
? 'application/vnd.ms-excel'
: urls.includes('.xlsx')
? 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
: urls.includes('.png')
? 'image/png'
: urls.includes('.jpeg')
? 'image/jpeg'
: urls.includes('.jpg')
? 'image/jpg'
: ''
})
const url = window.URL.createObjectURL(blob)
const link = document.createElement('a')
link.href = url
link.download = name
document.body.appendChild(link)
link.click()
link.remove()
})
}
provide('tableStore', tableStore)
onMounted(() => {
tableStore.index()
})
</script>
<style lang="scss"></style>