208 lines
5.4 KiB
Vue
208 lines
5.4 KiB
Vue
<template>
|
|
<div>
|
|
<!--增、查交易记录的按钮-->
|
|
<el-button type="primary" round @click="openAddDialog" size="small">添加</el-button>
|
|
<el-row>
|
|
<el-col :span="24">
|
|
<el-form :inline="true" :model="state.query" class="demo-form-inline">
|
|
<el-form-item label="文创名称:">
|
|
<el-input v-model="state.query.title" placeholder="请输入文创名称" clearable @input="init" />
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-col>
|
|
</el-row>
|
|
<!--表格-->
|
|
<el-row>
|
|
<el-col :span="24">
|
|
<el-table :data="state.getList">
|
|
<!-- 列表结开始-->
|
|
<el-table-column prop="id" label="编号" align="center" />
|
|
<el-table-column prop="title" label="文创名称" align="center" />
|
|
<el-table-column prop="view" label="阅读量" align="center" />
|
|
<!--列表结束-->
|
|
<el-table-column label="操作" align="center" >
|
|
<template #default="scope">
|
|
<el-button @click="info(scope.row.content)" size="small">详情</el-button>
|
|
<el-button @click="edit(scope.row)" size="small">编辑</el-button>
|
|
<el-button @click="del(scope.row.id)" type="danger" size="small">删除</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
<template v-slot:empty>
|
|
<el-empty description="数据去外太空了~" />
|
|
</template>
|
|
</el-table>
|
|
<!-- 分页控件 -->
|
|
<el-pagination
|
|
v-if="state.query.total > 0"
|
|
:current-page="state.query.page"
|
|
:page-size="state.query.limit"
|
|
:total="state.query.total"
|
|
background layout="prev, pager, next"
|
|
@current-change="handlePageChange"
|
|
/>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
<!-- 新增/编辑对话框 -->
|
|
<el-dialog v-model="state.dialogVisible" title="新增" width="50%">
|
|
<el-form
|
|
:model="state.formData"
|
|
ref="formRef"
|
|
label-width="100px"
|
|
>
|
|
|
|
<!-- 表单开始===============================================================================================================================-->
|
|
<el-form-item label="文创名称" prop="title" :rules="[{ required: true, message: '请输入文创名称', trigger: 'blur' }]">
|
|
<el-input v-model="state.formData.title"/>
|
|
</el-form-item>
|
|
|
|
<el-form-item label="内容" prop="content" :rules="[{ required: true, message: '请编写内容', trigger: 'blur' }]">
|
|
<e-editor :content="state.formData.content" @update:content="handleImageUrl" />
|
|
</el-form-item>
|
|
|
|
<!--表单结束===============================================================================================================================-->
|
|
</el-form>
|
|
<div slot="footer" class="dialog-footer">
|
|
<el-button @click="state.dialogVisible = false">取消</el-button>
|
|
<el-button type="primary" @click="saveTransaction(formRef)">保存</el-button>
|
|
</div>
|
|
</el-dialog>
|
|
<el-dialog
|
|
v-model="dialogVisible"
|
|
title="详情"
|
|
width="500"
|
|
>
|
|
<div v-html="state.info"></div>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
<script setup lang="ts">
|
|
// 交易记录数据
|
|
import type { FormInstance } from 'element-plus'
|
|
const formRef = ref<FormInstance>()
|
|
const dialogVisible = ref(false)
|
|
const state = reactive({
|
|
info:"",
|
|
route:"sys/topic",
|
|
dialogVisible:false,
|
|
getList: [],//获取数据
|
|
query:{
|
|
total: 0, // 总记录数
|
|
page: 1, // 当前页码
|
|
limit: 9999, // 每页显示的记录数
|
|
title:"",
|
|
type:1,
|
|
},
|
|
formData:{}
|
|
})
|
|
const info = (info:string) => {
|
|
console.log(info)
|
|
state.info = info
|
|
dialogVisible.value = true
|
|
}
|
|
|
|
// 获取交易记录
|
|
const init = () => {
|
|
frontRequest.get(`/api/topic/page1`, {
|
|
params: state.query
|
|
}).then((res:any) => {
|
|
state.getList = res.data.list
|
|
state.query.total = res.data.total
|
|
})
|
|
}
|
|
// 新增交易记录
|
|
const openAddDialog = () => {
|
|
state.formData = {}
|
|
state.dialogVisible = true
|
|
}
|
|
// 编辑交易记录
|
|
const edit = (row: any) => {
|
|
state.formData = row
|
|
state.dialogVisible = true
|
|
}
|
|
// 接收子组件传递的路径
|
|
function handleImageUrl(content: string) {
|
|
state.formData.content = content
|
|
}
|
|
// 保存记录
|
|
const saveTransaction = (formEl: FormInstance | undefined) => {
|
|
if (!formEl) return
|
|
formEl.validate((valid) => {
|
|
if (valid) {
|
|
state.formData.type = 1
|
|
if (state.formData.id) {
|
|
// 更新交易记录
|
|
adminRequest.put(`${state.route}`, state.formData)
|
|
console.log(state.formData)
|
|
} else {
|
|
// 新增交易记录
|
|
adminRequest.post(`${state.route}`, state.formData)
|
|
}
|
|
init()
|
|
state.dialogVisible = false
|
|
ElMessage.success("提交成功~")
|
|
}
|
|
})
|
|
}
|
|
|
|
|
|
// 删除交易记录
|
|
const del = async (id: number) => {
|
|
try {
|
|
await adminRequest.delete(`${state.route}/${id}`)
|
|
init()
|
|
ElMessage.success("删除成功~")
|
|
} catch (error) {
|
|
ElMessage.error("删除失败~")
|
|
}
|
|
}
|
|
|
|
// 页码改变时的处理函数
|
|
const handlePageChange = (page: number) => {
|
|
state.query.page = page
|
|
init()
|
|
}
|
|
// 页面加载时获取交易记录
|
|
onMounted(() => {
|
|
init()
|
|
})
|
|
</script>
|
|
<style scoped>
|
|
.dialog-footer {
|
|
text-align: right;
|
|
}
|
|
:deep(.el-upload) {
|
|
border: 1px dashed var(--el-border-color);
|
|
border-radius: 6px;
|
|
cursor: pointer;
|
|
position: relative;
|
|
overflow: hidden;
|
|
transition: var(--el-transition-duration-fast);
|
|
}
|
|
|
|
:deep(.el-upload:hover) {
|
|
border-color: var(--el-color-primary);
|
|
}
|
|
|
|
.el-icon.avatar-uploader-icon {
|
|
font-size: 28px;
|
|
color: #8c939d;
|
|
width: 178px;
|
|
height: 178px;
|
|
text-align: center;
|
|
}
|
|
.avatar{
|
|
width: 178px;
|
|
height: 178px;
|
|
object-fit: cover;
|
|
}
|
|
|
|
</style>
|
|
<route lang="json">
|
|
{
|
|
"meta": {
|
|
"layout": "frontUserInfo"
|
|
}
|
|
}
|
|
</route>
|