| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- <template>
- <a-card :bordered="false">
- <s-table
- ref="table"
- :columns="columns"
- :data="loadData"
- :alert="options.alert.show"
- bordered
- :row-key="(record) => record.reportId"
- :tool-config="toolConfig"
- :row-selection="options.rowSelection"
- >
- <template #operator class="table-operator">
- <a-space>
- <a-button type="primary" @click="formRef.onOpen()" v-if="hasPerm('forumReportInfoAdd')">
- <template #icon><plus-outlined /></template>
- 新增
- </a-button>
- <xn-batch-delete
- v-if="hasPerm('forumReportInfoBatchDelete')"
- :selectedRowKeys="selectedRowKeys"
- @batchDelete="deleteBatchForumReportInfo"
- />
- </a-space>
- </template>
- <template #bodyCell="{ column, record }">
- <template v-if="column.dataIndex === 'action'">
- <a-space>
- <a @click="formRef.onOpen(record)" v-if="hasPerm('forumReportInfoEdit')">编辑</a>
- <a-divider type="vertical" v-if="hasPerm(['forumReportInfoEdit', 'forumReportInfoDelete'], 'and')" />
- <a-popconfirm title="确定要删除吗?" @confirm="deleteForumReportInfo(record)">
- <a-button type="link" danger size="small" v-if="hasPerm('forumReportInfoDelete')">删除</a-button>
- </a-popconfirm>
- <a-divider type="vertical" v-if="hasPerm(['forumReportInfoDelete', 'forumReportInfoAudit'], 'and')" />
- <a @click="showModal(record)" v-if="hasPerm('forumReportInfoAudit')">审核</a>
- </a-space>
- </template>
- <template v-if="column.dataIndex === 'reportReasonType'">
- <div v-if="record.reportReasonType == 0">垃圾广告</div>
- <div v-if="record.reportReasonType == 1">色情内容</div>
- <div v-if="record.reportReasonType == 2">人身攻击</div>
- <div v-if="record.reportReasonType == 3">政治敏感</div>
- <div v-if="record.reportReasonType == 4">其他</div>
- </template>
- <template v-if="column.dataIndex === 'reportStatus'">
- <div v-if="record.reportStatus == 0">待处理</div>
- <div v-if="record.reportStatus == 1">已关闭帖子</div>
- <div v-if="record.reportStatus == 2">已驳回</div>
- </template>
- <template v-if="column.dataIndex === 'postType'">
- <div v-if="record.postType == 0">普通帖子</div>
- <div v-if="record.postType == 1">技术支持</div>
- <div v-if="record.postType == 2">内容纠错</div>
- </template>
- <template v-if="column.dataIndex === 'postStatus'">
- <div v-if="record.postStatus == 0">正常</div>
- <div v-if="record.postStatus == 1">关闭</div>
- </template>
- <template v-if="column.dataIndex === 'evidenceScreenshot'">
- <a-image
- :width="50"
- :height="50"
- :src="sysConfig.FILE_URL + record.evidenceScreenshot"
- fallback="data:image/png;base64,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"
- />
- </template>
- <template v-if="column.dataIndex === 'postTitle'">
- <a @click="jumpDetail(record)">{{ record.postTitle }}</a>
- </template>
- </template>
- </s-table>
- </a-card>
- <Form ref="formRef" @successful="table.refresh(true)" />
- <a-modal v-model:visible="openAudit" title="审核" @ok="auditFun">
- <a-select v-model:value="reportStatus" placeholder="请选择" style="width: 100%" :options="statusType"></a-select>
- </a-modal>
- </template>
- <script setup name="reportinfo">
- import Form from './form.vue'
- import forumReportInfoApi from '@/api/forum/forumReportInfoApi'
- import forumApi from '@/api/forum/forumApi'
- import { message } from 'ant-design-vue'
- import sysConfig from '@/config/index'
- import { useRoute, useRouter } from 'vue-router'
- const router = useRouter()
- const table = ref()
- const formRef = ref()
- const toolConfig = { refresh: true, height: true, columnSetting: true, striped: false }
- const columns = [
- {
- title: '帖子标题',
- dataIndex: 'postTitle'
- },
- {
- title: '帖子类型',
- dataIndex: 'postType'
- },
- {
- title: '帖子状态',
- dataIndex: 'postStatus'
- },
- {
- title: '举报人',
- dataIndex: 'userNickname'
- },
- {
- title: '举报原因类型',
- dataIndex: 'reportReasonType'
- },
- {
- title: '举报信息描述',
- dataIndex: 'reportDetail'
- },
- {
- title: '证据图片',
- dataIndex: 'evidenceScreenshot'
- },
- {
- title: '举报处理状态',
- dataIndex: 'reportStatus'
- }
- ]
- // 操作栏通过权限判断是否显示
- if (hasPerm(['forumReportInfoEdit', 'forumReportInfoDelete'])) {
- columns.push({
- title: '操作',
- dataIndex: 'action',
- align: 'center',
- width: '200px'
- })
- }
- const selectedRowKeys = ref([])
- // 列表选择配置
- const options = {
- // columns数字类型字段加入 needTotal: true 可以勾选自动算账
- alert: {
- show: true,
- clear: () => {
- selectedRowKeys.value = ref([])
- }
- },
- rowSelection: {
- onChange: (selectedRowKey, selectedRows) => {
- selectedRowKeys.value = selectedRowKey
- }
- }
- }
- const loadData = (parameter) => {
- return forumReportInfoApi.forumReportInfoPage(parameter).then((data) => {
- return data
- })
- }
- // 重置
- const reset = () => {
- searchFormRef.value.resetFields()
- table.value.refresh(true)
- }
- // 删除
- const deleteForumReportInfo = (record) => {
- let params = [
- {
- reportId: record.reportId
- }
- ]
- forumReportInfoApi.forumReportInfoDelete(params).then(() => {
- table.value.refresh(true)
- })
- }
- // 批量删除
- const deleteBatchForumReportInfo = (params) => {
- params = params.map((r) => {
- return {
- reportId: r.id
- }
- })
- forumReportInfoApi.forumReportInfoDelete(params).then(() => {
- table.value.clearRefreshSelected()
- })
- }
- //状态
- const statusType = ref([
- {
- label: '关闭帖子',
- value: 1
- },
- {
- label: '驳回举报',
- value: 2
- }
- ])
- const reportStatus = ref()
- const itemData = ref({})
- const openAudit = ref(false)
- const showModal = (event) => {
- itemData.value = event
- openAudit.value = true
- }
- const auditFun = (event) => {
- if (!reportStatus.value) {
- message.warning('请选择处理方式')
- return
- }
- forumApi
- .reportinfoAudit({
- reportId: itemData.value.reportId,
- reportStatus: reportStatus.value
- })
- .then((data) => {
- openAudit.value = false
- table.value.refresh(true)
- })
- }
- const jumpDetail = (event) => {
- router.push({
- path: '/forum/detail',
- query: {
- postId: event.postId,
- }
- })
- }
- </script>
|