VUE+elementUI+SpringBoot实现分页和搜索多条数据

4 篇文章 0 订阅

前端页面:在这里插入图片描述
布局代码:template中的



                 <!-- 搜索选项 -->
                <el-col :span="7">
                    <div  class="inputs">
                        <!-- 联系人 -->
                        <el-checkbox label="联系人"></el-checkbox>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                        <el-input v-model="searchKeys.clxr" placeholder="联系人" style="width:200px;"></el-input>
                    </div>
                </el-col>

				<!-- 数据展示 -->
            <div>
                <el-table :data="tableData" border stripe style="width: 100%">
                    <el-table-column type="selection" width="55"></el-table-column>
                    <el-table-column type="index" :index="indexMethod" label="排序"></el-table-column>
                    <el-table-column prop="csqdw" label="申请单位" width="180"></el-table-column>
                    <el-table-column prop="cdh" label="电话"></el-table-column>
                    <el-table-column prop="cbzkh" label="备注(客户)"></el-table-column>
                    <el-table-column prop="clxr" label="联系人"></el-table-column>
                    <el-table-column prop="dtbsj" label="填表时间"></el-table-column>
                    <el-table-column prop="cbzyy" label="备注(医院)"></el-table-column>
                </el-table>
            </div>
            <!-- 分页 -->
            <div class="block">
                <el-pagination
                    @size-change="handleSizeChange"
                    @current-change="handleCurrentChange"
                    :current-page="page.current"
                    :page-sizes="[1, 2, 3, 4]"
                    :page-size="page.size"
                    layout="total, sizes, prev, pager, next, jumper"
                    :total="page.total"
                ></el-pagination>
            </div>

前端逻辑代码:script中的

<script>
const cityOptions = ['支付方法名', '支付状态', '支付方式', 'his状态'];
export default {
//页面加载时调用
     mounted() {  
        this.getTeam(this.page);
        var tempInfo = localStorage.getItem(this.editFlag);
        if (tempInfo != null) {
            this.$refs.sureDialog.ok = () => {};
        }
    },
    methods: {
    //搜索
        searchKey(){
        	//js对象转化为字符串
            this.page.searchKeys = JSON.stringify(this.searchKeys)
            
            this.getTeam(this.page)
           
        },
         async getTeam(page) {
            try {
                let getData = await this.$net.Post({
                    url: config.getTeam,
                    data: page
                    
                });
                if (getData.code == 200) {
                    this.page = getData.data
                    this.tableData=getData.data.records
                }
            } catch (e) {
                this.tip = e;
              
            }
        },
        indexMethod(index) {
        return index +1;
      },
        handleSizeChange(val) {
            //console.log(`每页 ${val} 条`);
            this.page.size = val;
        
            this.getTeam(this.page);

        },
        handleCurrentChange(val) {
            // console.log(`当前页: ${val}`);
            this.page.current = val;
            
            this.getTeam(this.page);

        },
        handleCheckAllChange(val) {
            this.checkedCities = val ? cityOptions : [];
            this.isIndeterminate = false;
        },
        handleCheckedCitiesChange(value) {
            let checkedCount = value.length;
            this.checkAll = checkedCount === this.cities.length;
            this.isIndeterminate = checkedCount > 0 && checkedCount < this.cities.length;
        }
    },
    data() {
        return {
            searchKeys:{},
            page:{
                 size:4
            },
            checkAll: false,
            checkedCities: [],
            cities: cityOptions,
            isIndeterminate: true,
            centerDialogVisible: false,
            dialogVisible: false,
     
            // 选择
            options: [
                {
                    value: '选项1',
                    label: '全部'
                },
                {
                    value: '选项2',
                    label: '已支付'
                },
                {
                    value: '选项3',
                    label: '未支付'
                }
            ],
           
            // 展示数据
            tableData: []
        };
    }
};
</script>

java后台实现分页搜索代码

 public IPage<ExamTeamAppoint> getList( MyPage p) throws NoSuchFieldException {
        Page<ExamTeamAppoint> page = MyUtil.copyPropertiesIgnoreCase(p,Page.class);
        QueryWrapper<ExamTeamAppoint> queryWrapper = new QueryWrapper<>();
        Map <String,Object> maps  = (Map)JSON.parse(p.getSearchKeys());
        if(maps!=null){
        for(Map.Entry<String,Object> map : maps.entrySet()){
            Field declaredField = ExamTeamAppoint.class.getDeclaredField(map.getKey().toUpperCase());
            Class<?> type = declaredField.getType();
            if(type.equals(Date.class)){
                queryWrapper.gt("DTBSJ",map.getValue());
                queryWrapper.lt("DTBSJ",map.getValue());
            }else if (type.equals(String.class)){
                queryWrapper.like((String) ((Map.Entry)map).getKey(),map.getValue());
            }
        }
        }
        IPage<ExamTeamAppoint> pageData = page(page, queryWrapper);
        return pageData;
    }
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现动态路由需要在前端和后端两个方面进行处理,以下是使用VueElementUI和Spring Boot实现动态路由的代码示例: 前端代码示例: 1. 在Vue中,可以使用Vue Router来处理路由。首先需要在main.js中引入Vue Router并创建router实例,然后在路由配置文件中定义路由。在路由配置文件中,可以使用动态路由参数(例如:id)来处理动态路由: ```javascript // main.js import Vue from 'vue' import VueRouter from 'vue-router' import App from './App.vue' import router from './router' Vue.use(VueRouter) new Vue({ router, render: h => h(App) }).$mount('#app') // router.js import VueRouter from 'vue-router' import Home from './views/Home.vue' import About from './views/About.vue' import Dynamic from './views/Dynamic.vue' const router = new VueRouter({ routes: [ { path: '/', name: 'home', component: Home }, { path: '/about', name: 'about', component: About }, { path: '/dynamic/:id', name: 'dynamic', component: Dynamic } ] }) export default router ``` 2. 在ElementUI中,可以使用Menu组件来实现动态路由。首先需要在App.vue中引入Menu组件,并在Menu组件中定义路由菜单。在路由菜单中,可以使用动态路由参数(例如:id)来处理动态路由: ```html <template> <div id="app"> <el-container> <el-aside> <el-menu :default-active="activeIndex" class="el-menu-vertical-demo" @select="handleSelect"> <el-menu-item index="/"> <i class="el-icon-menu"></i> <span>Home</span> </el-menu-item> <el-menu-item index="/about"> <i class="el-icon-document"></i> <span>About</span> </el-menu-item> <el-menu-item v-for="item in dynamicRoutes" :key="item.path" :index="item.path"> <i class="el-icon-folder"></i> <span>{{ item.name }}</span> </el-menu-item> </el-menu> </el-aside> <el-main> <router-view></router-view> </el-main> </el-container> </div> </template> <script> import { Menu } from 'element-ui' export default { name: 'App', components: { 'el-menu': Menu }, data() { return { activeIndex: '/', dynamicRoutes: [] } }, created() { this.dynamicRoutes = [ { path: '/dynamic/1', name: 'Dynamic1' }, { path: '/dynamic/2', name: 'Dynamic2' } ] }, methods: { handleSelect(index) { this.activeIndex = index this.$router.push(index) } } } </script> ``` 后端代码示例: 1. 在Spring Boot中,可以使用@RestController注解来定义控制器,并在控制器中定义动态路由。在动态路由中,可以使用@PathVariable注解来处理动态

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值