Vue SPA 入门案例 单表 班级管理

举报
陶然同学 发表于 2022/06/24 01:38:47 2022/06/24
【摘要】 班级查询 需求:         绘制表单,数据绑定         页面加载成功发送请求查询所有班级         将班级数据赋值给classesList 前端: ...

班级查询

需求:

        绘制表单,数据绑定

        页面加载成功发送请求查询所有班级

        将班级数据赋值给classesList

前端:


  
  1. <template>
  2. <div>
  3. <table border="1">
  4. <tr>
  5. <td>编号</td>
  6. <td>班级名称</td>
  7. <td>班级描述</td>
  8. <td>操作</td>
  9. </tr>
  10. <tr v-for = "(classes, index) in classesList" :key = "index">
  11. <td>{{ classes.cid }}</td>
  12. <td>{{ classes.cname }}</td>
  13. <td>{{ classes.desc }}</td>
  14. <td>
  15. 修改 删除
  16. </td>
  17. </tr>
  18. </table>
  19. </div>
  20. </template>
  21. <script>
  22. import axios from 'axios'
  23. export default {
  24. data() {
  25. return {
  26. classesList:[]
  27. }
  28. },
  29. methods: {
  30. async selectAllClasses(){
  31. var url = "http://localhost:8888/classes";
  32. let { data: baseResult } = await axios.get(url);
  33. this.classesList = baseResult.data;
  34. },
  35. },
  36. mounted() {
  37. // 1.1 页面加载成功
  38. // 1.2 查询所有班级
  39. this.selectAllClasses()
  40. },
  41. }
  42. </script>
  43. <style>
  44. </style>

添加班级

需求:

        绘制表单,数据绑定

        点击添加,发送ajax完成添加

        成功,跳转到列表页面。失败,给出提示

前端:


  
  1. <template>
  2. <div>
  3. <table border="1">
  4. <tr>
  5. <td>编号</td>
  6. <td>
  7. <input type="text" v-model = "classes.cid">
  8. </td>
  9. </tr>
  10. <tr>
  11. <td>班级名称</td>
  12. <td>
  13. <input type="text" v-model = "classes.cname">
  14. </td>
  15. </tr>
  16. <tr>
  17. <td>班级描述</td>
  18. <td>
  19. <textarea name="" id="" cols="30" rows="10" v-model = "classes.desc"></textarea>
  20. </td>
  21. </tr>
  22. <tr>
  23. <td colspan="2">
  24. <input type="button" value="添加班级" @click = "addClasses()">
  25. </td>
  26. <td></td>
  27. </tr>
  28. </table>
  29. </div>
  30. </template>
  31. <script>
  32. import axios from 'axios'
  33. export default {
  34. data() {
  35. return {
  36. classes:{}
  37. }
  38. },
  39. methods:{
  40. async addClasses(){
  41. var url = "http://localhost:8888/classes";
  42. let { data: baseResult } = await axios.post(url,this.classes);
  43. if(baseResult.code == 20000){
  44. this.$router.push('/classesList')
  45. }else{
  46. alert(baseResult.message)
  47. }
  48. }
  49. },
  50. }
  51. </script>
  52. <style>
  53. </style>

修改班级

需求:

        列表页面点击“修改”,切换到修改页面 classesEdit?cid=c001

        页面加载成功时,通过id查询详情

        回显:将查询结果绑定表单(添加已经完成,采用复制)

        点击确定进行更新

前端:


  
  1. <template>
  2. <div>
  3. <table border = "1">
  4. <tr>
  5. <td>编号</td>
  6. <td>
  7. {{ classes.cid }}
  8. </td>
  9. </tr>
  10. <tr>
  11. <td>班级名称</td>
  12. <td>
  13. <input type="text" v-model = "classes.cname">
  14. </td>
  15. </tr>
  16. <tr>
  17. <td>班级描述</td>
  18. <td>
  19. <textarea name="" id="" cols="30" rows="10" v-model = "classes.desc"></textarea>
  20. </td>
  21. </tr>
  22. <tr>
  23. <td colspan="2">
  24. <input type="text" value = "修改" @click = "editClasses()">
  25. </td>
  26. </tr>
  27. </table>
  28. </div>
  29. </template>
  30. <script>
  31. import axios from 'axios';
  32. export default {
  33. data() {
  34. return {
  35. classes:{},
  36. cid:'',
  37. };
  38. },
  39. methods:{
  40. async selectClassesById(){
  41. let url = `http://localhost:8888/classes/${this.cid}`;
  42. let { data: baseResult } = await axios.get(url);
  43. this.classes = baseResult.data
  44. },
  45. async editClasses(){
  46. var url = `http://localhost:8888/classes`;
  47. let { data: baseResult } = await axios.put(url,this.classes);
  48. if(baseResult.code == 20000){
  49. this.$router.push("/classesList");
  50. }else{
  51. alert(baseResult.message);
  52. }
  53. }
  54. },
  55. mounted(){
  56. //获得cid
  57. this.cid = this.$route.params.cid;
  58. //根据id查询班级信息
  59. this.selectClassesById();
  60. }
  61. }
  62. </script>
  63. <style>
  64. </style>

删除班级

需求:

        确定访问路径:delete /classes/c001

        点击发送ajax进行删除(成功:刷新页面;失败:提示)

        编写controller获得id

        编写service通过id删除

前端:


  
  1. <template>
  2. <div>
  3. <table border="1">
  4. <tr>
  5. <td>编号</td>
  6. <td>班级名称</td>
  7. <td>班级描述</td>
  8. <td>操作</td>
  9. </tr>
  10. <tr v-for = "(classes, index) in classesList" :key = "index">
  11. <td>{{ classes.cid }}</td>
  12. <td>{{ classes.cname }}</td>
  13. <td>{{ classes.desc }}</td>
  14. <td>
  15. <router-link :to="'/classesEdit/' + classes.cid">修改</router-link>
  16. <a href="" @click.prevent = "deleteClasses(classes.cid)">删除</a>
  17. </td>
  18. </tr>
  19. </table>
  20. </div>
  21. </template>
  22. <script>
  23. import axios from 'axios'
  24. export default {
  25. data() {
  26. return {
  27. classesList:[]
  28. }
  29. },
  30. methods: {
  31. async selectAllClasses(){
  32. var url = "http://localhost:8888/classes";
  33. let { data: baseResult } = await axios.get(url);
  34. this.classesList = baseResult.data;
  35. },
  36. async deleteClasses(cid){
  37. if(!confirm('您确定要删除么?')){
  38. return
  39. }
  40. var url = `http://localhost:8888/classes/${cid}`
  41. let { data: baseResult } = await axios.delete(url)
  42. alert(baseResult.code)
  43. if(baseResult.code == 20000){
  44. this.selectAllClasses();
  45. }else{
  46. alert(baseResult.message)
  47. }
  48. }
  49. },
  50. mounted() {
  51. // 1.1 页面加载成功
  52. // 1.2 查询所有班级
  53. this.selectAllClasses()
  54. },
  55. }
  56. </script>
  57. <style>
  58. </style>

后端

        链接:https://pan.baidu.com/s/1032Wkr58iZfPJ7baJSsqiw 
        提取码:2002

文章来源: blog.csdn.net,作者:陶然同学,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_45481821/article/details/123134462

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。