前端工作小结85-小程序学习3开始布局页面3

简介: 前端工作小结85-小程序学习3开始布局页面3
<template>
  <view class="box u-p-l-35 u-p-r-35">
    <u-image class="head_img" shape="circle" width="120rpx" height="120rpx" src="../../static/head.png"></u-image>
    <view class="title">
      <text>苏州华开农创智慧科技管</text>
    </view>
    <u-form>
      <u-form-item>
        <u-input v-model="account" placeholder="请输入账号"></u-input>
      </u-form-item>
      <u-form-item>
        <u-input class="inp" v-model="password" type="password" placeholder="请输入密码"></u-input>
      </u-form-item>
      <u-form-item>
        <u-input class="inp" type="text" v-model="code" placeholder="请输入验证码"></u-input>
        <canvas :style="{width:width+'px',height:height+'px'}" canvas-id="canvas" @click="changeCode" @error="canvasIdErrorCallback"></canvas>
      </u-form-item>
      <view class="option">
        <u-icon @click="getMore" :name="arrow" :index="arrow" color="#666666"></u-icon><text>网络配置</text>
      </view>
      <view v-if="arrow  == 'arrow-up-fill'">
        <u-form-item>
          <u-input v-model="ip_adress" placeholder="请输入IP地址"></u-input>
        </u-form-item>
        <u-form-item>
          <u-input v-model="port_number" placeholder="请输入端口号"></u-input>
        </u-form-item>
      </view>
    </u-form>
    <u-image v-if="sub_show" class="sub" src="../../static/login.png" width="100rpx" height="100rpx" mode="widthFix"></u-image>
    <u-image v-else class="sub" @click.native="sub" src="../../static/login_show.png" width="100rpx" height="100rpx" mode="widthFix"></u-image>
  </view>
</template>
<script>
  export default {
    data() {
      return {
        //头像
        headimg: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1606985171381&di=db5845b1115851ca0d934f0b7619ec47&imgtype=0&src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fitem%2F201910%2F26%2F20191026201534_xotym.thumb.700_0.jpg',
        //表单数据
        account: '',
        password: '',
        code: '',
        ip_adress: '',
        port_number: '',
        //验证码size
        width: 120,
        height: 45,
        //下拉状态
        arrow: 'arrow-down-fill',
        //按钮显示状态
        sub_show: true
      }
    },
    methods: {
      //提交
      sub: function() {
        if (this.account == '') {
          uni.showToast({
            icon: 'none',
            position: 'center',
            title: '请填写账号'
          });
          return false;
        }
        if (this.password == '') {
          uni.showToast({
            icon: 'none',
            position: 'center',
            title: '请填写密码'
          });
          return false;
        }
        if (this.code.toLowerCase() != uni.getStorageSync('imgcode').toLowerCase()) {
          uni.showToast({
            icon: 'none',
            position: 'bottom',
            title: '验证码不正确'
          });
          return false;
        }
      },
      //切换
      getMore: function(e) {
        console.log(e)
        console.log(666)
        if (e == 'arrow-down-fill') {
          this.arrow = 'arrow-up-fill'
        } else {
          this.arrow = 'arrow-down-fill'
        }
      },
      //验证码换一张
      changeCode: function() {
        this.init();
      },
      // 初始化验证码
      init: function() {
        console.log('start');
        var context = uni.createCanvasContext('canvas', this),
          w = this.width,
          h = this.height;
        context.setFillStyle("white");
        context.setLineWidth(5);
        context.fillRect(0, 0, w, h);
        var pool = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "I", "M", "N", "O", "P", "Q", "R", "S",
            "T", "U", "V", "W", "S", "Y", "Z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"
          ],
          str = '';
        for (var i = 0; i < 4; i++) {
          var c = pool[this.rn(0, pool.length - 1)];
          var deg = this.rn(-30, 30);
          context.setFontSize(18);
          context.setTextBaseline("top");
          context.setFillStyle(this.rc(80, 150));
          context.save();
          context.translate(30 * i + 15, parseInt(h / 1.5));
          context.rotate(deg * Math.PI / 180);
          context.fillText(c, -15 + 5, -15);
          context.restore();
          str += c;
        }
        uni.setStorage({
          key: 'imgcode',
          data: str,
        });
        for (var i = 0; i < 40; i++) {
          context.beginPath();
          context.arc(this.rn(0, w), this.rn(0, h), 1, 0, 2 * Math.PI);
          context.closePath();
          context.setFillStyle(this.rc(150, 200));
          context.fill();
        }
        context.draw();
        console.log('end');
      },
      rc: function(min, max) {
        var r = this.rn(min, max);
        var g = this.rn(min, max);
        var b = this.rn(min, max);
        return "rgb(" + r + "," + g + "," + b + ")";
      },
      rn: function(max, min) {
        return parseInt(Math.random() * (max - min)) + min;
      },
      canvasIdErrorCallback: function(e) {
        console.error(e.detail.errMsg)
      },
    },
    updated: function() {
      console.log('updated')
      if (this.code != '' || this.account != '' || this.password != '') {
        this.sub_show = false;
        console.log(6)
      }else{
        this.sub_show = true;
      }
    },
    onShow() {
      var _this = this;
      setTimeout(function() {
        _this.init();
      }, 1000)
    }
  }
</script>
<style lang="scss">
  .box {
    background-color: white;
    .head_img {
      margin: auto;
      margin-top: 88rpx;
      margin-bottom: 22rpx;
      text-align: center;
    }
    .title {
      font-size: 36rpx;
      text-align: center;
      margin-bottom: 70rpx;
    }
    .sub {
      margin: auto;
      margin-top: 226rpx;
    }
    canvas {
      width: 180rpx;
      height: 56rpx;
      border-radius: 28rpx;
      float: left;
      margin-top: 22rpx;
    }
    .option {
      margin-top: 29rpx;
      text {
        color: #666666;
        font-size: 26rpx;
        margin-left: 12rpx;
      }
    }
  }
</style>

image.png

相关文章
|
1月前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
2月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
55 0
|
1月前
|
前端开发 数据安全/隐私保护
.自定义认证前端页面
.自定义认证前端页面
13 1
.自定义认证前端页面
|
1月前
|
小程序 前端开发 数据可视化
作为一个前端小白,我竟然搞定了一个小程序的交付
作为一名刚毕业的前端码农,今年毕业后就加入了一家初创公司。入职不久便接到了一个小程序开发项目,客户特别强调必须使用小程序原生语言进行开发。由于时间紧迫而合适的后端开发者暂时还没到位,老板决定让我边学边做,承担起整个项目的前后端开发工作。对于初出茅庐的我来说,这无疑是一个巨大的挑战。不仅要掌握一门新的编程语言,还要学习数据库设计、服务器部署等一系列后端技术,任务艰巨。正当我为此感到头疼时,一位前辈向我推荐了极态云。经过一番调研后发现,它简直就是为像我这样缺乏后端经验但又急需快速完成项目的人量身定做的解决方案!
作为一个前端小白,我竟然搞定了一个小程序的交付
|
1月前
|
前端开发 JavaScript 搜索推荐
前端懒加载:提升页面性能的关键技术
前端懒加载是一种优化网页加载速度的技术,通过延迟加载非首屏内容,减少初始加载时间,提高用户访问体验和页面性能。
|
1月前
|
前端开发 安全 JavaScript
在阿里云快速启动Appsmith搭建前端页面
本文介绍了Appsmith的基本信息,并通过阿里云计算巢完成了Appsmith的快速部署,使用者不需要自己下载代码,不需要自己安装复杂的依赖,不需要了解底层技术,只需要在控制台图形界面点击几下鼠标就可以快速部署并启动Appsmith,非技术同学也能轻松搞定。
|
1月前
|
前端开发 开发者 C++
独家揭秘:前端大牛们如何高效学习新技术,保持竞争力!
【10月更文挑战第31天】前端技术飞速发展,如何高效学习新技术成为关键。本文通过对比普通开发者与大牛们的策略,揭示了高效学习的秘诀:明确目标、主动探索、系统资源、实践应用和持续学习。通过这些方法,大牛们能更好地掌握新技术,保持竞争力。示例代码展示了如何通过实践加深理解。
49 4
|
1月前
|
Web App开发 前端开发 JavaScript
前端开发的秘密武器:这些工具让你轻松应对各种复杂布局!
【10月更文挑战第31天】前端开发充满挑战,尤其是在处理复杂布局时。本文介绍了几种关键工具和技术,如HTML和CSS基础、Firefox开发者工具、Visual Studio Code以及Vue、React和Angular等前端框架,帮助开发者高效应对复杂布局,提升代码质量和用户体验。
36 2
|
2月前
|
前端开发 JavaScript
回顾前端页面发送ajax请求方式
回顾前端页面发送ajax请求方式
42 18
|
2月前
|
移动开发 小程序 前端开发
小程序的前端插件都有哪些?
【10月更文挑战第16天】小程序的前端插件都有哪些?
57 1