后台管理系统

后台开发结合elementui组价

[图片上传中...(image.png-85fa34-1530951767258-0)]

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>后台</title>
  <script src="vue.js"></script>
  <script src="elementui/index.js"></script>
  s<link rel="stylesheet" href="elementui/index.css">
  <style>
        *{
          margin:0;
          padding:0;
        }
        #box{
           width: 100%;
           position: absolute;
           top:0;
           bottom:0;
           /*background-color: red;*/
           min-width: 1200px;
        }
        .head{
          width: 100%;
          height:80px;
            background-color: #009688;
            position: relative;
        }
        .head h1{
          width: 100%;
          height:80px;
          line-height: 80px;
          text-align: center
        }
        .head p{
          width: 60px;
          height: 40px;
          line-height: 40px;
          text-align: center;
          font-size: 30px;
          background-color:#dedede;
          position: absolute;
          top:20px;
          right: 10%;
          border-radius: 10px;
        }
        .content{
          position: absolute;
          top:80px;
          width: 100%;
          bottom: 0;
          overflow: hidden;
            /*min-width: 1200px;*/
        }
        .nav{
          width: 280px;
          position: absolute;
          top:0;
          bottom: 0;
          border-top:1px solid #dedede;
          background-color: #009688;
          overflow: hidden;
        }
        .nav li{
          width: 240px;
          height: 50px;
          line-height: 50px;
          padding-left: 40px;
          margin-bottom:4px;
          border-bottom:1px solid #dedede;
        }
        .center{
            position: absolute;
            top:20px;
            bottom: 20px;
            right: 20px;
            left: 300px;
            min-width:1000px;
            background-color:#eee;
            overflow: scroll;
        }
        .center input{
            width: 300px;
            height: 40px;
            line-height: 40px;
            position: absolute;
            top:10px;
            left:20px;
            border-radius: 10px;
            outline: 0;
            border: 0;
            text-indent: 20px;
            font-size: 18px;
        }
        .center table{
          position: absolute;
          top:60px;
          bottom: 20px;
          width: 100%;
          border-collapse: collapse;

        }
        .center table th{
          height: 50px;
          line-height: 50px;
          background-color: #999;
        }
        .center table td{
          text-align: center;
          height: 40px;
          line-height: 40px;

        }
        button{
          width: 80px;
          height: 30px;
          line-height: 30px;
          outline: 0;
          border:0;
          border-radius: 10px;
          color: white;
        }
        .del{
          background-color: red;
          margin-left: 20px;
        }
        .up{
          background-color:#009688;
        }

        .change{
          position: absolute;
          top:0;
          bottom:0;
          width: 100%;
          background-color: rgba(0,0,12,0.5);
          overflow: hidden;
        }
        .change .cen{
          width: 280px;
          height: 420px;
          margin:0 auto;
          margin-top: 200px;
          background-color:#009688; 
          padding:20px 110px;
          overflow: hidden;
        }
        .change .cen p{
          margin-top: 20px;
          height: 28px;
          line-height: 28px;
        }
        .change .cen p .cl{
          float: left;
          width: 100px; 
        }
        .change .cen p .cl2{
            height: 25px;
            line-height: 25px;
            text-indent: 10px;
        }
        .change .cen p .cl3{
            margin-left: 20px;
        } 
        .change .cen .cl5{
          height: 30px;
          margin-top: 40px;
        }
        .change .cen p .btn{
          width: 80px;
          height: 30px;
          line-height: 30px;
          float: left;
          text-align: center;
          background-color: #eee;
          margin-left: 45px;
        }
        .el-table{
            position: absolute;
            top:20px;
            right: 20px;
            left: 300px;
            width:80%;
         }
  </style>
</head>
<body>
  <div id="box">
    <div class="head">
      <h1>凤凰山班级同学统计</h1>
      <p class="add" @click="open=true">+</p>
    </div>
    <div class="content">
      <ul class="nav">
        <li @click="change(0)" >班级个人信息</li>
        <li @click="change(1)">考试成绩</li>
        <li @click="change(2)">班委</li>
      </ul>
      <!-- <keep-alive> -->
      <component :is="select"  :open.sync="open" :arr.sync="sarr"></component>
      <!-- </keep-alive> -->
    </div>
    <change :open.sync="open" :arr.sync="person"  ></change>

  </div>

</body>
  <script>
     //修改添加
     Vue.component("change",{
        props:["open","arr"],
          data:function(){
            return{
                    value2:false,
                    name:"请输入姓名",
                    phone:"请输入手机号",
                    qq:"请输入QQ号",
                    wei:"请输入微信号",
                    sex:"",
                    flag:false,
                    a:"",
            }
          },
          template:`
             <div class="change" v-show="open">
                <div class="cen">
                  <p><span class="cl">姓名:</span><input type="text" v-model="name" class="cl2"></p>
                  <p><span class="cl">性别:</span><input type="radio" v-model="sex" name="sex" value="男"> 男<input type="radio" v-model="sex" name="sex" class="cl3" value="女"> 女
                  <p><span class="cl">是否婚配:</span><el-switch v-model="value2" active-color="#13ce66" inactive-color="#ff4949"></el-switch></p>
                  <p><span class="cl">手机号:</span><input type="text" v-model="phone" class="cl2"></p>
                  <p><span class="cl">QQ:</span><input type="text" v-model="qq" class="cl2"></p>
                  <p><span class="cl">微信:</span><input type="text"  v-model="wei" class="cl2"></p>
                  <p class="cl5"><span class="btn" @click="add">确定</span><span class="btn" @click="close">取消</span></p>
                </div>
             </div>
          `,
          created:function(){
                car.$on("update",function(item){        
                    this.name=item.name;
                    this.phone=item.phone;
                    this.qq=item.qq;
                    this.wei=item.wei;
                    this.sex=item.sex;
                    if(item.marry=="否"){
                        this.value2=false;
                    }else{
                        this.value2=true;
                    }
                    this.flag=true;
                    for(var i=0;i<this.arr.length;i++){
                        if(this.arr[i].name==item.name){
                              this.a=i
                        }
                    }
                }.bind(this))
          },
          methods:{
            close:function(){
                    var flag=this.open;
                    flag=false;
              this.$emit("update:open",flag)
            },
            add:function(){
              var marry1;
              if(this.value==false){
                 marry1="否"
              }else{
                 marry1="是"
              }
              var arr=this.arr;
              var obj={
                name:this.name,
                sex:this.sex,
                marry:marry1,
                phone:this.phone,
                qq:this.phone,
                wei:this.wei,
              };
              
              if(this.flag){              
                    arr.splice(this.a,1,obj)
                    this.flag=false;
                    car.$emit("change",obj)
                    
              }else{
                    arr.push(obj);
                    car.$emit("add",obj)
              }
            
              this.$emit("update:arr",arr);
              var flag=this.open;
              flag=false;
              this.$emit("update:open",flag)
            }
          }
     })
       //个人信息
     Vue.component("s-person",{
         props:["open","arr"],
         data:function(){
            return{
               //控制滚动条的
               cflag:false,
               person:[],
            }
         },
         created:function(){
                this.person=this.arr;
                car.$on("change",function(a){
                     if(this.person.length<2){
                          this.person=[];
                          this.person.push(a)
                     }else{
                         this.person=this.arr
                     }                 
                }.bind(this))
                car.$on("add",function(a){
                     this.person=this.arr
                }.bind(this))
         },
           template:`
             <div :class="{center:true,con:cflag}">
                <input type="text" placeholder="请输入姓名查找" @change="change($event)">
              <table border="1">
                <tr>
                  <th>姓名</th>
                  <th>性别</th>
                  <th>是否婚配</th>
                  <th>手机号</th>
                  <th>QQ</th>
                  <th>微信</th>
                  <th>操作</th>
                </tr>
                <tr v-for="(item,index) in person">
                  <td>{{item.name}}</td>
                  <td>{{item.sex}}</td>
                  <td>{{item.marry}}</td>
                  <td>{{item.phone}}</td>
                  <td>{{item.qq}}</td>
                  <td>{{item.wei}}</td>
                  <td><button class="up" @click="update(item)">修改</button><button class="del" @click="del(item)" >删除</button></td>
                </tr>
              </table>
             </div>
           `,
           methods:{
               del:function(item){
                   var arr1=this.arr;
                   for(var i=0;i<arr1.length;i++){
                       if(arr1[i].name==item.name){
                           arr1.splice(i,1);
                           this.$emit("update:arr",arr1);
                           this.person=this.arr;
                       }
                   }               
               },
               update:function(item){
                   var flag=this.open;
                   flag=true;
                   this.$emit("update:open",flag);
                   car.$emit("update",item);
               },
               change:function(e){
                  this.person=this.arr;
                    var name=e.target.value;
                    var arr1=this.arr.filter(function(val){
                        if(val.name==name){
                          return true
                        }
                    });
                    if(arr1.length==0){
                      alert("抱歉没有你要找的人")
                    }else{
                      this.person=arr1;
                      e.target.value=""
                    }           
               }
           }
     })
       
       //成绩
       Vue.component("s-grade",{
          props:["arr"],
          template:`
             
                  <el-table
                    :data="arr"
                    border
                    show-summary
                    >
                    <el-table-column
                      prop="id"
                      label="ID"
                      width="180">
                    </el-table-column>
                    <el-table-column
                      prop="name"
                      label="姓名">
                    </el-table-column>
                    <el-table-column
                      prop="amount1"
                      sortable
                      label="第一次考试">
                    </el-table-column>
                    <el-table-column
                      prop="amount2"
                      sortable
                      label="第二次考试">
                    </el-table-column>
                    <el-table-column
                      prop="amount3"
                      sortable
                      label="第三次考试">
                    </el-table-column>
                  </el-table>

          `,

       })

       //班委
       Vue.component("s-class",{
          props:["arr"],
          template:`
             <el-table
                :data="arr"
                height="250"
                border
             >
                <el-table-column
                  prop="date"
                  label="班级"
                  width="180">
                </el-table-column>
                <el-table-column
                  prop="name"
                  label="姓名"
                  width="180">
                </el-table-column>
                <el-table-column
                  prop="address"
                  label="班委">
                </el-table-column>
              </el-table>


          `
       })
       //控制修改的兄弟组件
       var car=new Vue();
       var box=new Vue({
          el:"#box",
          data:{
              com:"",//组件的名字控制
              select:"s-person",//动态组件的
              sarr:[],//动态数据
              person:[
                {
                  name:"熊宝恒",
                  sex:"女",
                  marry:"否",
                  phone:"1254154565",
                  qq:"552547354",
                  wei:"545274574"
                },{
                  name:"张小燕",
                  sex:"女",
                  marry:"否",
                  phone:"1254154565",
                  qq:"552547354",
                  wei:"545274574"
                },{
                  name:"吕梦鑫",
                  sex:"男",
                  marry:"否",
                  phone:"1254154565",
                  qq:"552547354",
                  wei:"545274574"
                },{
                  name:"王胜波",
                  sex:"男",
                  marry:"是",
                  phone:"1254154565",
                  qq:"552547354",
                  wei:"545274574"
                },{
                  name:"李静",
                  sex:"女",
                  marry:"否",
                  phone:"1254154565",
                  qq:"552547354",
                  wei:"545274574"
                },{
                  name:"毛洁",
                  sex:"女",
                  marry:"否",
                  phone:"1254154565",
                  qq:"552547354",
                  wei:"545274574"
                },{
                  name:"牛佳琪",
                  sex:"女",
                  marry:"否",
                  phone:"1254154565",
                  qq:"552547354",
                  wei:"545274574"
                }
              ],
              open:false,
              //成绩
              grade: [{
                id: "凤凰山",
                name: '熊宝恒',
                amount1: '70',
                amount2: '80',
                amount3: '85'
              }, {
                id: "凤凰山",
                name: '张小燕',
                amount1: '80',
                amount2: '89',
                amount3: '90'
              }, {
                id: "凤凰山",
                name: '王胜波',
                amount1: '90',
                amount2: '86',
                amount3: '87'
              }, {
                id: "凤凰山",
                name: '吕梦鑫',
                amount1: '80',
                amount2: '95',
                amount3: '98'
              }, {
                id: "凤凰山",
                name: '李静',
                amount1: '89',
                amount2: '88',
                amount3: '99'
              }],
              ban: [{
                        date: '凤凰山',
                        name: '王胜波',
                        address: '班长'
                      }, {
                        date: '凤凰山',
                        name: '王胜波',
                        address: '班长'
                      }, {
                        date: '凤凰山',
                        name: '王胜波',
                        address: '班长'
                      }, {
                        date: '凤凰山',
                        name: '王胜波',
                        address: '班长'
                      }, {
                        date: '凤凰山',
                        name: '王胜波',
                        address: '班长'
                      }, {
                        date: '凤凰山',
                        name: '王胜波',
                        address: '班长'
                      }, {
                        date: '凤凰山',
                        name: '王胜波',
                        address: '班长'
                      }]
          },
          created:function(){
             this.sarr=this.person
          },
          methods:{
             change:function(a){
              if(a==0){
                this.select="s-person"
                this.sarr=this.person
              }else if(a==1){
                this.select="s-grade"
                this.sarr=this.grade
              }else{
                this.select="s-class"
                this.sarr=this.ban
              }
             }
          }
       })

  </script>
</html>


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容