zoukankan      html  css  js  c++  java
  • 七天开发进度(七)(微信小程序版(二)记账本)

          终于把小程序版弄完了,不过这并不能称之为是我的作品,因为我还没有彻底学会小程序,对JavaScript语言还有很多不会的地方,没有掌握,

    这次的程序是通过学习网上的多个教程,多个案例结合拼凑模仿者人家的弄出来的,所以接下来希望自己能学好JavaScript语言,真正写出自己的

    微信小程序!

    ps:但是前面的轮播图和整体布局可是自己设计的哦^_^啦啦啦

    这就是我的随心记账本(美中不足的是过于简单,没有加上日期等模块,嘿嘿,随心嘛~)

     这是意趣那一夜,这一页很骄傲啊都是自己设计的,不过,就是,有点low

     

    这是记一笔时:

    <!--index.wxml-->
    <swiper indicator-dots="{{indicatorDots}}"
      autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}" indicator-dots="true">
      <block wx:for="{{imgUrls}}">
        <swiper-item>
          <image src="{{item}}" class="slide-image" width="355" height="150"/>
        </swiper-item>
      </block>
    </swiper>
    <view class="container"><!--轮播图-->
    
        <form catchsubmit="formSubmit" >
          <view class="account-detail"> 
            <input placeholder="账目详情" name="inputdetail"  type="text" /><!--placeholder 属性提供可描述输入字段预期值的提示信息(hint)。
    
    该提示会在输入字段为空时显示,并会在字段获得焦点时消失。
    
    注释:placeholder 属性适用于以下的 <input> 类型:text, search, url, telephone, email 以及 password。-->
          </view>
    
          <view class="account-amount"> 
            <input placeholder="账目数额" name="inputamount" type="number" />
          </view>
          
          <view class="add-one">
            <button formType="submit" type="primary" loading="{{buttonLoading}}"> 记一笔 </button>
          </view>
        </form>
    
        <view  class="account-list-text">
          <text>账单列表:</text>
        </view>
    
        <view  class="account-list-all-amount">
          <text>合计:{{accountTotal}}</text>
        </view>
        
        <block wx:for="{{accountData}}" >
          <view class="account-list">
            <view class="account-list-detail">
              {{item.detail}}
            </view>
    
            <view class="account-list-amount">
              {{item.amount}}
            </view>
    
            <view class="account-list-del">
                <button size="mini"  type="warn"  data-index-key="{{index}}"  bindtap="deleteRow" >删除</button>
            </view>
    
            </view>
        </block>
    
        
    
    </view>
    swiper{
       100%;
      height: 400rpx;
    }
    swiper image{
      display: block;
       100%;
      height: 100%;
    }/*轮播图。。。*/
    
    .account-detail{
        height: 100rpx;
        padding: 0 30rpx;
         margin:35rpx 0 0 0rpx;
    }
    
    .account-amount{
        padding: 0 30rpx;
        margin:15rpx 0 0 0rpx;
    }
    
    .add-one{
        margin-top: 20rpx;
    }
    
    .account-list-text{
        color:gray;
        margin:30rpx 0 0 30rpx;
    }
    
    .account-list-all-amount{
        color:gray;
        align-self: flex-end;
        padding-right: 25rpx;
    }
    
    
    .account-list{
        color:gray;
        margin:30rpx 0 0 30rpx;
        display: flex;
        flex-direction: row;
        background-color:wheat;
        line-height: 70rpx;
    }
    
    
    .account-list-detail{
        flex:1;
    }
    
    
    .account-list-amount{
         100rpx;
    }
     
    
    //index.js
    var util = require("../../utils/util.js");
    //获取应用实例
    var app = getApp();
    Page({
      data: {
        imgUrls: [
          '/images/01.jpg',
          '/images/03.jpg',
          '/images/05.jpg',
        ],
        indicatorDots: false,
        autoplay: true,
        interval: 3000,
        duration: 1000,
        proList: null,
        userInfo: {},
        buttonLoading: false, 
        accountData:[],
        accountTotal:0
      },
      onLoad: function () {
        console.log('onLoad')
        var that = this;
    
        // 获取记录
        var tempAccountData = wx.getStorageSync("accountData") || [];
        this.caculateTotal(tempAccountData);
        this.setData({
            accountData: tempAccountData
        });
    
      },
      // 计算总额
      caculateTotal:function(data){
          var tempTotal = 0;
          for(var x in data){
              tempTotal += parseFloat(data[x].amount);
          }
          this.setData({
            accountTotal: tempTotal
          });
      },
      //表单提交
      formSubmit:function(e){
          this.setData({
            buttonLoading: true
          });
    
          var that = this;
          setTimeout(function(){
              var inDetail = e.detail.value.inputdetail;
              var inAmount = e.detail.value.inputamount;
              if(inDetail.toString().length <= 0 || inAmount.toString().length <= 0){
                  console.log("can not empty");
                  that.setData({
                    buttonLoading: false
                  });
                  return false;
              }
              
              //新增记录
              var tempAccountData = wx.getStorageSync("accountData") || [];
              tempAccountData.unshift({detail:inDetail,amount:inAmount});
              wx.setStorageSync("accountData",tempAccountData);
              that.caculateTotal(tempAccountData);
              that.setData({
                  accountData: tempAccountData,
                  buttonLoading: false
              });
    
          },1000);
      },
      //删除行
      deleteRow: function(e){
         var that = this;
         var index = e.target.dataset.indexKey;
         var tempAccountData = wx.getStorageSync("accountData") || [];
         tempAccountData.splice(index,1);
         wx.setStorageSync("accountData",tempAccountData);
         that.caculateTotal(tempAccountData);
         that.setData({
            accountData: tempAccountData,
         });
      }
    })
    // pages/joy/joy.js
    Page({
    
      /**
       * 页面的初始数据
       */
      data: {
     
        "value": "",   // 文本的内容
        "placeholder": "随心而输:",
        "maxlength": -1,  // 最大输入长度,设置为 -1 的时候不限制最大长度
        "focus": true,
        "auto-height": true,  // 是否自动增高,设置auto-height时,style.height不生效
        "adjust-position": true, // 键盘弹起时,是否自动上推页面
      
      },
    
      /**
       * 生命周期函数--监听页面加载
       */
      onLoad: function (options) {
    
      },
    
      /**
       * 生命周期函数--监听页面初次渲染完成
       */
      onReady: function () {
    
      },
    
      /**
       * 生命周期函数--监听页面显示
       */
      onShow: function () {
    
      },
    
      /**
       * 生命周期函数--监听页面隐藏
       */
      onHide: function () {
    
      },
    
      /**
       * 生命周期函数--监听页面卸载
       */
      onUnload: function () {
    
      },
    
      /**
       * 页面相关事件处理函数--监听用户下拉动作
       */
      onPullDownRefresh: function () {
    
      },
    
      /**
       * 页面上拉触底事件的处理函数
       */
      onReachBottom: function () {
    
      },
    
      /**
       * 用户点击右上角分享
       */
      onShareAppMessage: function () {
    
      }
    })
    <!--pages/joy/joy.wxml-->
    <view  class="cls1">
          <text>欢迎您谈一谈使用随心账本的感受</text>
        </view>
    
        <textarea class="textarea" value="{{value}}" placeholder="{{placeholder}}" placeholder-class="placeholder" maxlength="{{maxlength}}" focus="{{focus}}" auto-height="{{auto-height}}" show-confirm-bar="{{show-confirm-bar}}"></textarea>
    
        <view  class="cls2">
          <text>想记就记,只为随心</text>
    </view>
    /* pages/joy/joy.wxss */
    .cls1{
        color:#CD6600;
        margin:30rpx 0 0 30rpx;
        position: absolute;
        left: 30px;
    }
    
    .cls2{
        color:black;
        align-self: flex-end;
        margin:30rpx 0 0 30rpx;
        text-shadow: 5px 5px 5px #FF0000;
        position: absolute;
        left: 50px;
        top: 260px;
    }
    .textarea {
      font-size: 36rpx;
      margin:180rpx 0 0 0rpx;
      background-color:#ADD8E6;
      width: 100%;
      height: 200px;
       position: absolute;
        left: 0px;
        top: 10px;
    }
    
    .placeholder {
      font-size: 28rpx;
      color: gray;
    }

    这里只插入了主要代码。这部分没有插入,太多有点乱,我会上传到自己的代码仓库里的

  • 相关阅读:
    TDD
    算法与数据结构 文档 1 洋洋洋传
    编程的专精度
    python小课
    有时心情舒畅时打个代码心里都是默默地同步输出...
    同时可以运行在JVM上的Kotlin~枚举和判定以及数据对象的写法总结
    map
    multiset
    set
    priority_queue
  • 原文地址:https://www.cnblogs.com/zzstdruan1707-4/p/10422692.html
Copyright © 2011-2022 走看看