235 lines
5.0 KiB
JavaScript
235 lines
5.0 KiB
JavaScript
import { h, ref, reactive } from 'vue'
|
||
import TableImage from '@/components/DataTable/tools/Image.vue'
|
||
import TableTags from '@/components/DataTable/tools/Tags.vue'
|
||
import TableSwitch from '@/components/DataTable/tools/Switch.vue'
|
||
import TableAction from '@/components/DataTable/tools/Action.vue'
|
||
import { NOTICE_SOURCE } from '@/utils/dictionary.js'
|
||
import { noticeDelete, isTopUpdate, statusUpdate } from '@/api/setting/notice.js'
|
||
|
||
/* 注册table */
|
||
const tableRef = ref()
|
||
const searchParams = ref()
|
||
|
||
function handleSearch(params) {
|
||
searchParams.value = { ...params }
|
||
tableRef.value.reFetch({ searchParams })
|
||
}
|
||
|
||
/**
|
||
* @description: 获取数据及操作
|
||
* @param {*} row 单行数据
|
||
* @param {*} type 操作类型 create:创建,preview:预览,edit:编辑
|
||
* @return {*}
|
||
*/
|
||
function getRowData(row, type) {
|
||
data.rowData = type === 'create' ? { pid: row.id } : row
|
||
data.modalType = type
|
||
data.modalShow = true
|
||
}
|
||
|
||
// 删除方法
|
||
function deleteData(id) {
|
||
noticeDelete(id)
|
||
.then((res) => {
|
||
if (res.code === 0) {
|
||
handleSearch()
|
||
}
|
||
})
|
||
.catch((e) => {
|
||
console.log(e)
|
||
})
|
||
}
|
||
|
||
/**
|
||
* @description: 改变状态
|
||
* @param {*} row 选中数据
|
||
* @return {*}
|
||
*/
|
||
function handleIsTopChange(row) {
|
||
isTopUpdate({ id: row.data.id, isTop: row.value })
|
||
.then((res) => {
|
||
if (res.code === 0) {
|
||
handleSearch()
|
||
}
|
||
})
|
||
.catch((e) => {
|
||
console.log(e)
|
||
})
|
||
}
|
||
|
||
/**
|
||
* @description: 改变状态
|
||
* @param {*} row 选中数据
|
||
* @return {*}
|
||
*/
|
||
function handleStatusChange(row) {
|
||
statusUpdate({ id: row.data.id, status: row.value })
|
||
.then((res) => {
|
||
if (res.code === 0) {
|
||
handleSearch()
|
||
}
|
||
})
|
||
.catch((e) => {
|
||
console.log(e)
|
||
})
|
||
}
|
||
|
||
const data = reactive({
|
||
tableRef,
|
||
searchParams,
|
||
rowData: {},
|
||
modalType: 'create',
|
||
modalShow: false,
|
||
handleSearch,
|
||
|
||
columns: [
|
||
{
|
||
type: 'selection'
|
||
},
|
||
{
|
||
title: '编号',
|
||
key: 'key',
|
||
render: (_, index) => {
|
||
return `${index + 1}`
|
||
},
|
||
align: 'center',
|
||
width: 50
|
||
},
|
||
{
|
||
title: '通知标题',
|
||
key: 'title',
|
||
align: 'center',
|
||
ellipsis: {
|
||
tooltip: true
|
||
},
|
||
width: 500
|
||
},
|
||
{
|
||
title: '公告图片',
|
||
key: 'image',
|
||
render(row) {
|
||
return h(TableImage, {
|
||
images: {
|
||
width: 36,
|
||
height: 36,
|
||
src: row.image
|
||
}
|
||
})
|
||
},
|
||
align: 'center',
|
||
width: 100
|
||
},
|
||
{
|
||
title: '通知来源',
|
||
key: 'source',
|
||
align: 'center',
|
||
width: 100,
|
||
render(row) {
|
||
return h(TableTags, {
|
||
data: row.source,
|
||
filters: NOTICE_SOURCE,
|
||
tags: {
|
||
bordered: true
|
||
}
|
||
})
|
||
}
|
||
},
|
||
{
|
||
title: '是否置顶',
|
||
key: 'isTop',
|
||
align: 'center',
|
||
width: 100,
|
||
render(row) {
|
||
return h(TableSwitch, {
|
||
data: { id: row.id, isTop: row.isTop },
|
||
rowKey: 'isTop',
|
||
checkedValue: 1,
|
||
uncheckedValue: 2,
|
||
onChange: handleIsTopChange.bind(row)
|
||
})
|
||
}
|
||
},
|
||
{
|
||
title: '状态',
|
||
key: 'status',
|
||
align: 'center',
|
||
width: 100,
|
||
render(row) {
|
||
return h(TableSwitch, {
|
||
data: { id: row.id, status: row.status },
|
||
rowKey: 'status',
|
||
checkedValue: 1,
|
||
uncheckedValue: 2,
|
||
onChange: handleStatusChange.bind(row)
|
||
})
|
||
}
|
||
},
|
||
{
|
||
title: '浏览量',
|
||
key: 'browse',
|
||
align: 'center',
|
||
width: 100
|
||
},
|
||
{
|
||
title: '创建时间',
|
||
key: 'createTime',
|
||
align: 'center',
|
||
width: 200
|
||
},
|
||
{
|
||
title: '更新时间',
|
||
key: 'updateTime',
|
||
align: 'center',
|
||
width: 200
|
||
},
|
||
{
|
||
title: '操作',
|
||
align: 'center',
|
||
width: 150,
|
||
fixed: 'right',
|
||
render(row) {
|
||
return h(TableAction, {
|
||
actions: [
|
||
// {
|
||
// label: '查看',
|
||
// type: 'button',
|
||
// props: {
|
||
// type: 'primary',
|
||
// text: true,
|
||
// onClick: getRowData.bind(null, row, 'preview')
|
||
// },
|
||
// auth: 'basic_list'
|
||
// },
|
||
{
|
||
label: '修改',
|
||
type: 'button',
|
||
props: {
|
||
type: 'primary',
|
||
text: true,
|
||
onClick: getRowData.bind(null, row, 'update')
|
||
},
|
||
auth: 'basic_list'
|
||
},
|
||
{
|
||
label: '删除',
|
||
type: 'popconfirm',
|
||
auth: 'basic_list',
|
||
tip: '确定删除这条数据吗?',
|
||
props: {
|
||
onPositiveClick: deleteData.bind(null, [row.id])
|
||
},
|
||
ButtonProps: {
|
||
text: true,
|
||
type: 'primary'
|
||
}
|
||
}
|
||
],
|
||
align: 'center'
|
||
})
|
||
}
|
||
}
|
||
]
|
||
})
|
||
|
||
export default data
|