<template>
<el-card>
<el-row :gutter="20" class="header">
<el-col :span="7">
<el-input placeholder="请输入商品大类名称..." v-model="queryForm.query" clearable></el-input>
</el-col>
<el-button type="primary" :icon="Search" @click="initBigTypeList">搜索</el-button>
<el-button type="primary" :icon="DocumentAdd" @click="initBigTypeList">添加商品大类</el-button>
</el-row>
<el-table :data="tableData" stripe style="width: 100%">
<el-table-column prop="id" label="#ID" width="80"/>
<el-table-column prop="name" label="商品大类名称" width="200"/>
<el-table-column prop="image" label="商品大类图片" width="200">
<template v-slot="scope">
<img :src="getServerUrl()+'/image/bigType/'+scope.row.image" width="80" height="80"/>
</template>
</el-table-column>
<el-table-column prop="remark" label="商品大类描述"/>
<el-table-column prop="action" label="操作" width="300" fixed="right">
<template v-slot="scope">
<el-button type="success" @click="handleDialogValue(scope.row.id)">更换图片</el-button>
<el-button type="primary" :icon="Edit" @click="handleDelete(scope.row.id)"/>
<el-button type="danger" :icon="Delete" @click="handleDelete(scope.row.id)"/>
</template>
</el-table-column>
</el-table>
<el-pagination
v-model:currentPage="queryForm.pageNum"
v-model:page-size="queryForm.pageSize"
:page-size="[10,20,30,40,50]"
layout="total,sizes,prev,pager,next,jumper"
:total="total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</el-card>
</template>
<script setup>
import { Search ,Delete,Edit,DocumentAdd} from '@element-plus/icons-vue'
import { ref } from 'vue'
import axios,{getServerUrl} from '@/util/axios'
const queryForm=ref({
query:'',
pageNum:1,
pageSize:10
})
const total=ref(0)
const tableData=ref([])
const initBigTypeList=async()=>{
const res=await axios.post("admin/bigType/list",queryForm.value)
tableData.value=res.data.bigTypeList;
total.value=res.data.total;
}
initBigTypeList();
const handleSizeChange=(pageSize)=>{
queryForm.value.pageNum=1;
queryForm.value.pageSize=pageSize;
initBigTypeList();
}
const handleCurrentChange=(pageNum)=>{
queryForm.value.pageNum=pageNum;
initBigTypeList();
}
</script>
<style lang="scss" scoped>
.header{
padding-bottom: 16px;
box-sizing: border-box;
}
.el-pagination{
padding-top: 15px;
box-sizing: border-box;
}
</style>
package com.java1234.controller.admin;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.java1234.entity.Order;
import com.java1234.entity.PageBean;
import com.java1234.entity.R;
import com.java1234.entity.BigType;
import com.java1234.service.IBigTypeService;
import com.java1234.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 后台管理-商品大类Controller控制器
*/
@RestController
@RequestMapping("/admin/bigType")
public class AdminBigTypeController {
@Autowired
private IBigTypeService bigTypeService;
/**
* 根据条件分页查询商品大类信息
* @param pageBean
* @return
*/
@RequestMapping("/list")
public R list(@RequestBody PageBean pageBean){
System.out.println(pageBean);
String query=pageBean.getQuery().trim();
Page<BigType> page=new Page<>(pageBean.getPageNum(),pageBean.getPageSize());
Page<BigType> pageResult = bigTypeService.page(page, new QueryWrapper<BigType>().like(StringUtil.isNotEmpty(query), "name", query));
Map<String,Object> map=new HashMap<>();
map.put("bigTypeList",pageResult.getRecords());
map.put("total",pageResult.getTotal());
return R.ok(map);
}
}