完成评论管理页面的制作

pull/66/head
riverflow 1 month ago
parent c0c926b2da
commit da7bb8bd57

@ -12,6 +12,7 @@
"@wangeditor/editor": "^5.1.23",
"@wangeditor/editor-for-vue": "^5.1.12",
"axios": "^1.11.0",
"echarts": "^6.0.0",
"element-plus": "^2.10.6",
"pinia": "^3.0.3",
"vue": "^3.5.17",
@ -1974,6 +1975,16 @@
"node": ">= 0.4"
}
},
"node_modules/echarts": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-6.0.0.tgz",
"integrity": "sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "2.3.0",
"zrender": "6.0.0"
}
},
"node_modules/element-plus": {
"version": "2.10.6",
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.10.6.tgz",
@ -3015,6 +3026,12 @@
"node": ">=8.0"
}
},
"node_modules/tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
"license": "0BSD"
},
"node_modules/type": {
"version": "2.7.3",
"resolved": "https://registry.npmmirror.com/type/-/type-2.7.3.tgz",
@ -3182,6 +3199,15 @@
"resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-1.1.2.tgz",
"integrity": "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==",
"license": "MIT"
},
"node_modules/zrender": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/zrender/-/zrender-6.0.0.tgz",
"integrity": "sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg==",
"license": "BSD-3-Clause",
"dependencies": {
"tslib": "2.3.0"
}
}
}
}

@ -13,6 +13,7 @@
"@wangeditor/editor": "^5.1.23",
"@wangeditor/editor-for-vue": "^5.1.12",
"axios": "^1.11.0",
"echarts": "^6.0.0",
"element-plus": "^2.10.6",
"pinia": "^3.0.3",
"vue": "^3.5.17",

@ -0,0 +1,6 @@
//列表参数类型
export type CommentListParm = {
currentPage:number;
pageSize:number;
total:number; //分页的总条数
}

@ -0,0 +1,11 @@
import http from "../../http";
import type { CommentListParm } from "./CommentModel";
//列表
export const getListApi = (parm:CommentListParm)=>{
return http.get("/wxapi/comment/pcCommentList",parm)
}
//删除
export const deleteApi = (commentId:string)=>{
return http.delete(`/wxapi/comment/${commentId}`)
}

@ -0,0 +1,73 @@
import type { CommentListParm } from "../../api/comment/CommentModel";
import { reactive ,ref,onMounted,nextTick} from "vue";
import {getListApi,deleteApi} from '../../api/comment/index'
import useInstance from "@/hooks/useInstance";
import { ElMessage } from "element-plus";
export default function useCommentTable(){
const {global} = useInstance()
//表格高度
const tableHeight = ref(0)
//接收表格数据
const tableList = ref([])
//列表查询的参数
const listParm = reactive<CommentListParm>({
currentPage:1,
pageSize:10,
total:0
})
//列表
const getList = async()=>{
let res = await getListApi(listParm)
if(res && res.code == 200){
tableList.value = res.data.records;
listParm.total = res.data.total;
}
}
//删除
const deleteBtn = async(commentId:string)=>{
const confirm = await global.$myconfirm('确定删除吗?')
if(confirm){
let res = await deleteApi(commentId)
if(res && res.code == 200){
ElMessage.success(res.msg)
getList()
}
}
}
//搜索
const searchBtn = ()=>{
getList()
}
//重置
const resetBtn = ()=>{
listParm.currentPage = 1;
getList()
}
//页容量改变时触发
const sizeChange = (size:number)=>{
listParm.pageSize = size;
getList()
}
//页数改变触发
const currentChange = (page:number)=>{
listParm.currentPage = page;
getList()
}
onMounted(()=>{
getList()
nextTick(()=>{
tableHeight.value = window.innerHeight - 180
})
})
return{
listParm,
getList,
searchBtn,
resetBtn,
tableList,
sizeChange,
currentChange,
tableHeight,
deleteBtn
}
}

@ -1,13 +1,55 @@
<template>
<div>
评论管理
</div>
</template>
<el-main>
<!-- 表格 -->
<el-table :height="tableHeight" :data="tableList" border stripe>
<el-table-column label="名称" prop="goodsName"></el-table-column>
<el-table-column label="商品图片" prop="goodsImage">
<template #default="scope">
<el-image
:src="scope.row.goodsImage.split(',')[0]"
style="height: 60px; width: 60px; border-radius: 50%"
></el-image>
</template>
</el-table-column>
<el-table-column label="昵称" prop="nickName"></el-table-column>
<el-table-column label="头像" prop="avatarUrl">
<template #default="scope">
<el-image
:src="imgUrl+scope.row.avatarUrl"
style="height: 60px; width: 60px; border-radius: 50%"
></el-image>
</template>
</el-table-column>
<el-table-column label="时间" prop="createTime"></el-table-column>
<el-table-column label="操作" width="220" align="center">
<template #default="scope">
<el-button :icon="Delete" @click="deleteBtn(scope.row.commentId)" type="danger" size="default">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<el-pagination
@size-change="sizeChange"
@current-change="currentChange"
:current-page.sync="listParm.currentPage"
:page-sizes="[10,20, 40, 80, 100]"
:page-size="listParm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="listParm.total" background>
</el-pagination>
</el-main>
</template>
<script setup lang="ts">
import {ref} from 'vue'
import { Delete } from "@element-plus/icons-vue";
import useCommentTable from "../../compositions/comment/useCommentTable";
const imgUrl = ref('http://localhost:8089/')
//
const { listParm, deleteBtn, tableList,sizeChange ,currentChange,tableHeight} = useCommentTable();
<script setup lang="ts">
</script>
<style scoped>
</style>
</script>
<style scoped></style>
Loading…
Cancel
Save