小程序入门30:库存警报记录页面开发

61 阅读2分钟

写在前面

本篇文章是微信小程序开发入门的第三十篇,库存警报记录页面开发

库存警报记录页面

云函数

在项目中新建一个Nodejs云函数,命名为alarm-record

获取库存警报记录云函数

打开cloudfunctions\alarm-record\index.js文件,编写如下代码,获取警报记录,获取数据库集合记录的方法已经写过很多遍了,这里就不多做介绍了:

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
}) // 使用当前云环境

const db = cloud.database();

// 云函数入口函数
exports.main = async (event, context) => {
  try {
    // 小程序端传入的参数:
    // limit每页条数(默认100条),page页数(默认第1页)
    const limit = event.limit ? event.limit : 100
    const page = event.page ? event.page : 1
    // 取出集合记录总数
    const countResult = await db.collection('qua-alarm').count()
    const total = countResult.total
    // 取出集合的记录
    const data = await db.collection('qua-alarm').skip((page - 1) * limit).limit(limit).get()
    return {
      success: true,
      data: data,
      total: total,
      msg: '查询成功!'
    }
  } catch (e) {
    return {
      success: false,
      msg: '查询失败!'
    };
  }
}

小程序端

调用获取库存警报记录云函数

打开miniprogram\pages\manage\alarm-record\alarm-record.js文件,编写代码如下:

getAlarmList方法调用获取库存警报记录云函数,并将获取的值赋值给alarmList

Page({
  data: {
    alarmList: [],
    loading: false,
  },
  onLoad(options) {
    this.getAlarmList()
  },
  getAlarmList() {
    this.setData({
      loading: true
    })
    wx.cloud.callFunction({
        // 云函数名称
        name: 'alarm-record',
        // 传给云函数的参数
        data: {
          limit: 10,
          page: 1
        },
      })
      .then(res => {
        this.setData({
          loading: false,
          alarmList: res.result.data.data
        })
      })
      .catch(err => {})
  },
})

库存警报记录页面

首先修改alarm-record.json文件,设置以下导航栏的文字信息:

获取列表等待的时候显示loading加载器,所以在这里引入组件

{
  "usingComponents": {
    "t-loading": "tdesign-miniprogram/loading/loading"
  },
  "navigationBarTitleText": "库存警报记录",
  "navigationBarBackgroundColor": "#FFFFFF",
  "navigationBarTextStyle": "black"
}

然后编写alarm-record.wxml文件的代码,页面列表展示警报记录,代码如下:

loading字段控制加载组件的显示隐藏

<view class="alarm_page">
  <view class="loading" wx:if="{{loading}}">
    <t-loading theme="circular" size="64rpx" class="large" />
  </view>
  <view class="alarm_ul" wx:else>
    <view class="alarm_li" wx:for="{{alarmList}}" wx:key="index">
      <view class="li_name">
        <view class="li_name_tt">
          {{item.fruit.name}}
        </view>
        <view class="li_close" style="background-color: {{item.isClose?'#2ba471':'#d54941'}};">
          {{item.isClose?'已补充':"待补充"}}
        </view>
      </view>
      <view class="alarm_line">
        <view class="li_alarmQua">
          警报库存:<text class="li_alarmQua_text">{{item.alarmQua}}{{item.fruit.unit}}</text>
        </view>
        <view class="li_quaAlarmNum">
          库存下限:{{item.quaAlarmNum}}{{item.fruit.unit}}
        </view>
      </view>
      <view class="li_createTime">
        警报开始时间:{{item.createTime}} 已持续 {{item.alarmDay}} 天
      </view>
      <view class="li_createTime">
        警报结束时间:{{item.closeTime}}
      </view>
    </view>
    <view class="no_data" wx:if="{{alarmList.length === 0}}">
      暂无数据
    </view>
  </view>
</view>

alarm-record.js文件代码如下:

在页面onLoad的时候getAlarmList,对获取的alarmList进行处理,将createTime和closeTime都只取前16位,服务器时间好像和小程序端的时间有差别,这里先不多说,下次研究研究

Page({
  data: {
    alarmList: [],
    loading: false,
  },
  onLoad(options) {
    this.getAlarmList()
  },
  getAlarmList() {
    this.setData({
      loading: true
    })
    wx.cloud.callFunction({
        // 云函数名称
        name: 'alarm-record',
        // 传给云函数的参数
        data: {
          limit: 10,
          page: 1
        },
      })
      .then(res => {
        let alarmList = res.result.data.data
        alarmList.forEach(el => {
          el.createTime = el.createTime.slice(0, 16).replace('T', ' ')
          el.closeTime && (el.closeTime = el.closeTime.slice(0, 16).replace('T', ' '))
        });
        this.setData({
          loading: false,
          alarmList: alarmList
        })
      })
      .catch(err => {})
  },
})

最终页面效果如下:

image.png

写在最后

以上就是库存警报记录页面开发的全部代码