Vue考试复习

App.vue
<script setup>
import HelloWorld from './components/HelloWorld.vue'
import Login from './components/Login.vue'
// import Calc from './components/Calc.vue'
// import ShoppingCart from './components/ShoppingCart.vue'
</script>
<script>
export default{
  data(){
    return{
    
    };
  },
  components:{
    Login,
    // Calc,
    // ShoppingCart,
  }
}

</script>
<template>
  <Login></Login>
  <!-- <Calc></Calc> -->
  <!-- <ShoppingCart></ShoppingCart> -->
</template>

<style scoped>

</style>

登录页面

<script>
export default{
  data(){
    return{
      name:"",
      pass:"",
    };
  },
  methods:{
    check:function(){
      var name = this.name;
      var pass = this.pass;
      console.log(name+","+pass)
      if (pass.length < 6 || pass.length > 18) {
          alert("密码由6~18位的大小字母、数字、符号组成!")
      } else if (name == "admin" && pass == "123456" || name == "admin2" && pass == "456789") {
          alert("输入正确")
      } else {
          alert("用户名或密码错误!");
      }
    }
  }
}

</script>
<template>
 <form name="f" >
  <h1>登录页面</h1>
  <input type="text" id="name" placeholder="账号:admin" v-model="name"><br>
  <input type="password" id="pass" placeholder="密码:123456" v-model="pass"><br>
  <input type="button" @click="check()" value="登录">
    <div id="divp">
        <span>注册</span>
        <span>忘记密码</span>
    </div>
    <p>© 2023 MrFlySand</p>
  </form>
</template>

<style scoped>
h1{
  line-height: 3em;
}
form {
    text-align: center;
    position: absolute;
    /*表单于页面居中*/
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    padding: 0 40px;
    background: #eff6ff;
    padding: 20px 50px;
    border-radius: 10px;
}

input[type=text],
input[type=password] {
    background-color: rgba(0,0,0,0);
    /*正常状态样式*/
    color: black;
    border: none;
    outline: none;
    text-align: center;
    height: 50px;
    width: 250px;
    margin: 5px;
    border-bottom: 1px solid #626262;
}

input[type=button] {
    background-color: #45A0F2;
    /*正常状态样式*/
    color: white;
    border: none;
    border-radius: 20px;
    outline: none;
    text-align: center;
    height: 50px;
    width: 250px;
    margin: 50px 5px 20px 5px;
}

input[type=button]:hover {
    outline: none;

    background-color: #348dde;
    color: white;
}

#divp>span {
    color: #348dde;
    margin: 0 5px;
}

#divp span:active {
    text-decoration: underline;
}
</style>

购物车

<script>
export default{  
  data(){
    return{
      selectAllValue:1,
      priceSums:0,
      push:{
        name:null,
        price:null,
        count:null,
        prices:null,
      },
      list:[{
          checked:'false',
          name:'微信公众号',
          src:'https://mp.weixin.qq.com/mp/qrcode?scene=10000004&size=102&__biz=MzkzMjE5OTMwOA==&mid=2247487964&idx=1&sn=f7474b00c99bb7017530e4fbffd0c62d&send_time=',
          introduce:'扫码关注,和群友们一起交流学习',
          price:9999,
          count:2,
          prices:null,
      },
      {
          checked:'false',
          name:'QQ交流群',
          src:'data:image/png;base64,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',
          introduce:'',
          price:6666,
          count:1,
          prices:null,
      },
      { 
          checked:'false',
          name:'MacBookPro',
          src:'https://img10.360buyimg.com/n2/jfs/t1/203950/20/28591/140129/637ca996E10cf6f5c/bb31749afd714364.jpg',
          introduce:'',
          price:21488,
          count:1,
          prices:null,
      }],    
    }
  },
  computed:{
    // 计算总和
    priceSums:function(){
      var sum = 0;
      for(var i = 0; i != this.list.length; i++){
        if(this.list[i].checked == true){
          sum = sum + this.list[i].price * this.list[i].count;
        }   
      }
      return sum;
    }
  },
  methods:{
    //减少物品个数
    reduce:function(index){
      this.list[index].count = this.list[index].count - 1;
      if(this.list[index].count == -1){
        this.list.splice(index,1)
      }
    },
    // 增加物品个数
    add:function(index){
      this.list[index].count = this.list[index].count + 1;
      return "this.list[index].count";  
    },
    // 添加新元素在购物车中
    pushValue:function(){    
      console.log(this.push.name)
      if(this.push.name == undefined) return 0;  
      for(var i=0; i<this.list.length; i++){
        if(this.list[i].name == this.push.name){
          alert("你已勾选此产品");
          return 0;
        }
      }
      this.list.push(this.push);
      this.push = {name:'', price:null, count:null};
    },
    // 选中所有
    selectAll:function(){
      for(var i=0,j=0; i<this.list.length; i++){
        if(this.list[i].checked == true){
          if(i==j){
            for(var k=0; k<this.list.length; k++){
              this.list[k].checked = false;
            }
            this.selectAllValue = false;
            return 0;    
          }
          j++;
        }
        this.list[i].checked = true;
      }
      this.selectAllValue = true;
    },
    // 删除选中
    selectDel:function(){
      if(confirm("你确认要删除吗?","提示框 ")){
        for(var i=0; i<this.list.length; i++){
          if(this.list[i].checked == true){
            this.list.splice(i,1);
          }
        }
      }
    },
    // 搜索
    // str.replace(/\ +/g,"") 清除空格
    search:function(){
      var str = "aaabc"
      console.log(str.includes("d"))
      var str = this.searchText.replace(/\ +/g,"")
      for(var i=0; i<this.list.length; i++){
        var nowStr = this.list[i].name.replace(/\ +/g,""); 
        if(str==nowStr || nowStr.includes(str)){
          this.list.unshift(this.list[i]);
          this.list.splice(i+1,1);
        }
      }
    }
  }
}
</script>

<template>
  
  <table id="ShoppingCart">
    <div id="search">
      <input id="searchText" v-model="searchText" type="text" placeholder="搜索" >
      <button @click="search">搜索</button>
    </div>
    <!-- 表头 -->
    <tr style="font-weight: 800;">
      <td>序号</td>
      <td>商品</td>
      <td>单价(元)</td>
      <td>数量</td>
      <td>金额(元)</td>
    </tr> 

    <!-- 商品表 -->
    <tr v-for="(value,index) in list">
      <td><input type="checkbox" v-model="value.checked"></td>
      <td>
        <img v-bind:src="value.src" alt="图片" id="commodityImg">
        <span>{{value.name}}</span>
        <span style="font-size: 0.8em; color: #919191;">{{value.introduce}}</span>  
      </td>
      <td style="color: #e00000;">¥{{ value.price }}</td>
      <td style="padding: 0 !important;">
        <button @click="reduce(index)">-</button>
        <input type="text" v-model="value.count">
        <button @click="add(index)">+</button>
      </td>
      <td style="color: #e00000;font-weight: 800;">¥{{value.price*value.count}}</td>
    </tr>

    <!-- 添加商品 -->
    <tr id="add">
      <td></td>
      <td><input type="text" v-model="push.name" placeholder="商品"></td>
      <td><input type="text" v-model="push.price" placeholder="价格"></td>
      <td><input type="text" v-model="push.count" placeholder="数量"></td>
      <td><button id="push" @click="pushValue">添加</button></td>
    </tr>

    <!-- 全选、删除、合计等操作 -->
    <tr>
      <td colspan="2">
        <div @click="selectAll" ><input type="checkbox" v-model="selectAllValue">全选</div>
        <div @click="selectDel" >&nbsp;&nbsp;删除</div>
      </td>
      <td colspan="3">
        合计:<p style="color: #e00000;font-weight: 800;padding: 0.6em 0em; display: contents;">¥{{priceSums}}</p></td> 
    </tr>
  </table>
</template>


<style>
*{
  padding: 0; margin: 0;
}
 button{
  /* margin-bottom: 10px !important; */
  /* border:1px solid #ccc; */
  width: 100%;
  height:100%;
  margin:0;
  padding: 0;
  border-radius: 0px;
}
 #commodityImg{
  border:1px solid #000;
  margin-right:10px;
}
 table{
  border:none;
  border-block: 4px solid #ccc;
  writing-mode: horizontal-tb;
  font-size: 1rem;
}
 tr>td{
  border:1px solid #fff;
  padding:15px 10px;margin: 0;
  height: 40px !important;
}
 tr>td:nth-child(2){
  width: 400px;
}
tr>td:nth-child(2)>img{
  width: 100px;
  float: left;
  display: block;
}
tr>td:nth-child(2)>span{
  display: flex;
}
tr>td:nth-child(4)>button,tr>td:nth-child(4)>input{
  width: 60px;height: 30px;
  border: none;
}
tr:last-child>td>div{
  display: inline;
  float: left;
  margin:0;padding:0 !important;
}
tr{
  padding:10px 20px;
  display: block;
  border-block-start:2px solid #ccc; 
  writing-mode: horizontal-tb;
}
#push{
  margin: 0px !important;
  width: 100%;
  display: block;
  border: none;
  padding: 3px 15px;
}
input{
  border: none;
  text-align: center;
}

#add{
  font-weight: 800 !important;

}
#add input{
  height: 100%;
  border:1px solid #ccc;
}
#add input:active{
  border:1px solid #ccc !important;
}
#search{
  border: #000 solid 1px;
  padding: 0 !important;
  margin: 20px 0;
}
#searchText{
  margin: 2px 8px !important;
  font-size: 16px;
}
#search input{
  width: 90%;
  padding: 5px 8px;
  border: none !important;
  user-select: none;
  outline: none;
}

#search button{
  width:auto;
  padding: 5px 8px;
  outline: none;
  float: right;
  border: none;
  margin: auto 0;
}
#search button:active{
  background-color: #ddd;
}
</style>

计算器

<script>
export default{
    data(){
        return{
            sumValue:"0",
            arr:[["x<sup>2</sup>","1/x","C","✖"],[7,8,9,"/"],[4,5,6,"*"],[1,2,3,"-"],[".",0,"=","+"]]        
        };
    },
    methods:{
        getSum:function(index,i){
            console.log(index+":"+i)
            if(index==0 && i==0){
                console.log(Math.pow(this.sumValue,2));
                this.sumValue = Math.pow(this.sumValue,2);
            }else if(index==0 && i==1){
                console.log(this.sumValue)
                this.sumValue = 1.0/this.sumValue;                    
            }else if(index==0 && i==2){
                this.sumValue = 0;                    
            }else if(index==0 && i==3){        
                this.sumValue = this.sumValue.substring(0, this.sumValue.length - 1);;                    
            }else if(index==4 && i==2){
                this.sumValue = "结果:"+eval(this.sumValue);            
            }else if(this.sumValue == '0' || this.sumValue[0]=="结"){
                this.sumValue = this.arr[index][i].toString();
            }else if(this.sumValue != '0' && this.arr[index][i].toString()!="="){                
                this.sumValue = this.sumValue + this.arr[index][i].toString();
            }            
        },
    }
}
</script>
<template>
    <table id="calc">
        <tr>
            <td colspan="4" style="padding: 0">
                <input type="text" v-model="sumValue">
            </td>
        </tr>
        <tr v-for="(value,index) in arr" :key="value">
            <td  v-for="(val,i) in value" :key="val" @click="getSum(index,i)"  @keyup.enter="print(index,i)" v-html="val"></td>
        </tr>        
    </table>
</template>
<style>
*{
    padding: 0;margin: 0;
}
table{
    /* border: 2px solid #000; */
    user-select: none;
    background-color: #eeeeee;
}
table td{
    /* border: 1px solid #000; */
    padding: 3px 16px;
    background: #fff;
}
table td:hover{
    background-color: #eee;
}
table td:active{
    background-color: #ddd;
    
}
table tr:nth-child(1) td:hover{
    background-color: #fff;
}
input{
    border: none;
    padding-top: -10px;
    text-align: right;
    outline: none;

}
</style>

posted @ 2023-06-12 09:56  MrFlySand-飞沙  阅读(35)  评论(0编辑  收藏  举报