Element-UI + Vue.js + SpringBoot 实现前后端分离入门项目

前端部分源码:https://github.com/szluyu99/elementui-users_1
后端部分源码:

项目简介与演示

Element-UI + Vue.js + SpringBoot 实现的前后端分离入门项目。
在这里插入图片描述
在这里插入图片描述

刷新页面时让组件默认为当前路由路径

activeIndex 表示当前激活的页面,如果写死了刷新后会有 bug,因此动态获取当前路由路径。

data() {
  return {
    activeIndex: this.$route.path,
  };
},

删除时确认

注意 @onConfirm 这个事件是加载 el-popconfirm 标签上的。

<el-popconfirm title="这是一段内容确定删除吗?" @onConfirm="handleDelete(scope.$index, scope.row)">
	<el-button slot="reference" size="mini" type="danger">删除</el-button>
</el-popconfirm>
<script>
  export default {
    data() {},
    methods: {
      handleDelete(index, row) {
        console.log(index, row);
        this.$http.get("http://localhost:8989/user/delete?id=" + row.id).then((res) => {
          if (res.data.state) {
            this.$message({
              showClose: true,
              message: res.data.msg,
              type: 'success'
            });
          } else {
            this.$message({
              showClose: true,
              message: res.data.msg,
              type: 'error'
            });
          }
        });
        this.findAllTableData();
      },
    },
  }
</script>

分页功能的实现

mysql 分页查询:

<!--分页查询-->
<select id="findByPage" resultType="User">
    SELECT id, name, bir, sex, address
    FROM t_user
    LIMIT #{start}, #{rows}
</select>

后端控制器:

@RestController
@RequestMapping("/user")
@CrossOrigin
public class UserController {

    @Autowired
    private UserService userService;
	
	// 分页查询	
	@GetMapping("/findByPage")
	public Map<String, Object> findByPage(Integer pageNow, Integer pageSize) {
	    Map<String, Object> result = new HashMap<>();
	    pageNow = pageNow == null ? 1 : pageNow; // 不传当前页数默认为1
	    pageSize = pageSize == null ? 4 : pageSize; // 不传当前页面显示条数默认显示4条
	    List<User> users = userService.findByPage(pageNow, pageSize); // 分页查询
	    Long totals = userService.findTotals();
	    result.put("users", users);
	    result.put("total", totals);
	    return result;
	}

}

前端页面:使用 分页组件
在这里插入图片描述

<el-row>
  <el-col :span="12" :offset="8">
    <div>
      <!-- 分页组件 -->
      <el-pagination 
        style="margin: 15px 0px;" 
        prev-text="上一页" next-text="下一页" background
        layout="prev, pager, next, sizes, jumper, total"
        :page-sizes="[2,4,6,8,10]" 
        :page-size="pageSize"
        :total="total"   
        :current-page="pageNow"   
        @current-change="findPage"
        @size-change="findSize">
      </el-pagination>
    </div>
  </el-col>
</el-row>
<script>
  export default {
    data() {
      return {
        total: 0, // 总页数, 从后台查询获取
        pageNow: 1, // 当前页数, 默认为1
        pageSize: 4 // 当前页显示的数据条数, 默认为4
      }
    },
    methods: {
      findPage(page) { // 用来处理分页相关方法
        console.log("当前页数: " + page);
        this.pageNow = page;
        this.findAllTableDataByPage();
      },
      findSize(size) { // 用来处理每页显示记录发生变化的方法
        console.log("当前页面记录条数: " + size);
        this.pageSize = size;
        this.findAllTableDataByPage();
      },
      findAllTableDataByPage() {
        this.$http.get("http://localhost:8989/user/findByPage?pageNow=" + this.pageNow + "&pageSize=" + this.pageSize).then((res) => {
          // console.log(res.data);
          this.tableData = res.data.users;
          this.total = res.data.total;
        });
      }
    },
    created() {
      this.findAllTableDataByPage();
    }
  }
</script>

el-date-picke 日期少一天

Element-UI 中时间控件的默认时间为 国际标准时间,因此与北京时间差 8 个小时。

解决方案:在标签中增加属性 value-format="yyyy-MM-dd",然后 刷新页面

<el-date-picker 
	type="date" 
	placeholder="选择日期" 
	v-model="form.bir" 
	value-format="yyyy-MM-dd">
</el-date-picker>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章