0


成绩管理+全选反选

<template>
  1. <div class="container">
  2. <!-- 顶部框模块 -->
  3. <div class="form-group">
  4. <div class="input-group">
  5. <h4>成绩管理</h4>
  6. </div>
  7. </div>
  8. <!-- 数据表格 -->
  9. <table class="table table-bordered table-hover mt-2">
  10. <thead>
  11. <tr>
  12. <th>
  13. <span>全选:</span>
  14. <input type="checkbox" v-model="isAll"/>
  15. <button @click="btn">反选</button>
  16. </th>
  17. <th>编号</th>
  18. <th>科目</th>
  19. <th>成绩</th>
  20. <th>考试时间</th>
  21. <th>操作</th>
  22. </tr>
  23. </thead>
  24. <tbody>
  25. <tr v-for="obj in list" :key="obj.id">
  26. <td> <input type="checkbox" v-model="obj.isdone"/></td>
  27. <td>{{obj.id}}</td>
  28. <td>{{obj.subject}}</td>
  29. <!-- 如果成绩低于60,就有red这个类 -->
  30. <td :class="{red:obj.score > 60}">{{obj.score}}</td>
  31. <td>{{obj.time | formatDate}}</td>
  32. <td><a href="#" @click="deleteFn(obj.id)">删除</a></td>
  33. </tr>
  34. </tbody>
  35. <tfoot v-if="list.length === 0">
  36. <tr>
  37. <td colspan="5" style="text-align: center">暂无数据</td>
  38. </tr>
  39. </tfoot>
  40. <tbody v-if="list.length != 0">
  41. <td>统计</td>
  42. <td>总分:{{allscore}}</td>
  43. <td>平均分:{{svgscore}}</td>
  44. </tbody>
  45. </table>
  46. <!-- 添加成绩 -->
  47. <form class="form-inline">
  48. <div class="form-group">
  49. <div class="input-group">
  50. <input
  51. type="text"
  52. class="form-control"
  53. placeholder="科目"
  54. v-model="subject"
  55. />
  56. </div>
  57. </div>
  58. &nbsp;&nbsp;&nbsp;&nbsp;
  59. <div class="form-group">
  60. <div class="input-group">
  61. <input
  62. type="text"
  63. class="form-control"
  64. placeholder="成绩"
  65. v-model.number="score"
  66. />
  67. </div>
  68. </div>
  69. &nbsp;&nbsp;&nbsp;&nbsp;
  70. <!-- 阻止表单提交 -->
  71. <button class="btn btn-primary" @click.prevent="addFn">添加成绩</button>
  72. </form>
  73. </div>
</template> <script> import moment from 'moment' export default { data() { return { subject: "", // 名称 score: 0, // 价格 list: JSON.parse(localStorage.getItem("plist")) || [], }; }, methods: { //新增 addFn(){ //判断为空不可提交 if(this.subject.trim().length == 0 || this.score == 0){ alert("不可为空!"); return; } this.list.push({ id : this.list.length == 0 ? 100 : this.list[this.list.length -1].id +1, subject:this.subject, score:this.score, time:new Date(), isdone:false }) this.subject="", this.score=0; }, //删除 deleteFn(id){ let index = this.list.findIndex(obj => obj.id == id) this.list.splice(index,1) }, btn(){ return this.list.forEach(obj => obj.isdone = ! obj.isdone); } }, //过滤器 filters: { formatDate(val){ return moment(val).format("YYYY-MM-DD") } }, watch: { list:{ handler(oldval,newval){ localStorage.setItem("plist",JSON.stringify(this.list)) }, deep:true } }, //计算 computed: { allscore(){ return this.list.reduce((sum,obj) => sum += obj.score,0) }, svgscore(){ return (this.allscore/this.list.length).toFixed(2) }, isAll:{ get(){ return this.list.every(obj => obj.isdone==true)&&this.list.length!=0 }, set(checked){ return this.list.forEach(obj => obj.isdone=checked); } } } }; </script> <style > .red{ color: red; } </style>
标签: servlet html javascript

本文转载自: https://blog.csdn.net/m0_66717003/article/details/127535866
版权归原作者 爱洗澡的喜羊羊 所有, 如有侵权,请联系我们删除。

“成绩管理+全选反选”的评论:

还没有评论