Files
admin-sjzx/src/views/pqs/database/stencil/index.vue

163 lines
5.5 KiB
Vue
Raw Normal View History

<template>
<div class="default-main">
<!-- 模版 -->
2024-10-15 10:39:28 +08:00
<TableHeader ref="TableHeaderRef" >
<template #select>
<el-form-item label="名称">
<el-input v-model="tableStore.table.params.searchValue" clearable
2025-07-24 09:31:47 +08:00
placeholder="请输入搜索名称" maxlength="32" show-word-limit/>
2024-10-15 10:39:28 +08:00
</el-form-item>
</template>
<template #operation>
2024-09-24 11:21:54 +08:00
<el-button icon="el-icon-Plus" type="primary" @click="addUser" v-if="information">新增</el-button>
</template>
</TableHeader>
<Table ref="tableRef"></Table>
<!-- 弹框 -->
2024-09-13 18:31:35 +08:00
<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'
2024-09-13 18:31:35 +08:00
import { libtemplateDel } from '@/api/supervision-boot/database/index'
import { ElMessage } from 'element-plus'
import Table from '@/components/table/index.vue'
2024-09-18 15:52:50 +08:00
import { getFileNameAndFilePath, downloadFile } from '@/api/system-boot/file'
import PopupEdit from './components/form.vue'
2024-09-24 11:21:54 +08:00
import { useAdminInfo } from '@/stores/adminInfo'
const adminInfo = useAdminInfo()
defineOptions({
name: 'database/stencil'
})
2024-09-24 11:21:54 +08:00
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({
2024-09-13 18:31:35 +08:00
url: '/supervision-boot/libtemplate/pageQuery',
method: 'POST',
column: [
{ title: '模版名称', field: 'name' },
{
title: '创建时间',
2024-09-13 18:31:35 +08:00
field: 'createTime'
},
2024-09-13 18:31:35 +08:00
{
title: '操作',
width: '280',
render: 'buttons',
buttons: [
{
name: 'edit',
title: '预览 ',
type: 'primary',
icon: 'el-icon-Plus',
render: 'basicButton',
2025-12-25 13:19:24 +08:00
// disabled: row => {
// return !VITE_FLAG
// },
click: row => {
2024-09-18 15:52:50 +08:00
window.open(window.location.origin + '/#/previewFile?' + row.url)
}
2024-09-13 18:31:35 +08:00
},
{
name: 'edit',
title: '下载 ',
type: 'primary',
icon: 'el-icon-Plus',
render: 'basicButton',
2024-09-24 11:21:54 +08:00
click: row => {
downloadTheReport(row.url)
}
2024-09-13 18:31:35 +08:00
},
{
name: 'edit',
title: '修改 ',
type: 'primary',
icon: 'el-icon-Plus',
render: 'basicButton',
2024-09-24 11:21:54 +08:00
disabled: row => {
return !information
},
2024-09-13 18:31:35 +08:00
click: row => {
popupEditRef.value.open('修改模版', row)
}
},
{
title: '删除',
type: 'danger',
icon: 'el-icon-Delete',
render: 'confirmButton',
2024-09-24 11:21:54 +08:00
disabled: row => {
return !information
},
2024-09-13 18:31:35 +08:00
popconfirm: {
confirmButtonText: '确认',
cancelButtonText: '取消',
confirmButtonType: 'danger',
title: '确定删除吗?'
},
click: row => {
libtemplateDel({ id: row.id }).then(() => {
ElMessage.success('删除成功')
tableStore.index()
})
}
}
]
}
],
2024-09-24 11:21:54 +08:00
loadCallback: () => { }
})
2024-10-15 10:39:28 +08:00
tableStore.table.params.searchValue=''
// 弹框
const addUser = () => {
2024-09-13 18:31:35 +08:00
popupEditRef.value.open('新增模版')
}
2024-09-18 15:52:50 +08:00
// 下载报告
2024-09-24 11:21:54 +08:00
const downloadTheReport = (url: any) => {
2024-09-18 15:52:50 +08:00
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')
2024-09-24 11:21:54 +08:00
? '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'
: ''
2024-09-18 15:52:50 +08:00
})
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>