返回

「0.1分记账小程序翻身记」Uni-app、UniCloud、TM-Vuetify共同打造记账小程序

前端

利用尖端技术打造卓越记账小程序:蜕变之旅

技术选型

在着手构建记账小程序时,我审慎地选择了技术栈:

  • Uni-app: 跨平台开发,简化多平台支持
  • UniCloud: 云端功能,轻松连接后端
  • TM-Vuetify: 美观 UI 框架,提升用户体验

实现思路

这款小程序秉承以下原则:

  • 无缝登录: 自动登录,无需繁琐步骤
  • 直观记账: 便捷地记录收入和支出
  • 图表统计: 清晰呈现财务状况
  • 预算管理: 设定预算,控制支出

具体实现

1. 无缝登录和注册

利用 UniCloud 云函数实现自动登录和注册:

// 云函数代码
const loginOrRegister = async (ctx) => {
  const { code } = ctx.request.body;
  const { openid } = await uniCloud.auth.getOpenidByCode(code);
  let user = await uniCloud.database.collection('users').where({ openid }).get();
  if (user.data.length === 0) {
    await uniCloud.database.collection('users').add({ openid });
    user = await uniCloud.database.collection('users').where({ openid }).get();
  }
  ctx.data = {
    token: 'YOUR_JWT_TOKEN',
    user: user.data[0],
  };
};

2. 直观记账

使用 Uni-app 表单轻松添加收入和支出:

<!-- 页面代码 -->
<template>
  <view>
    <form>
      <input type="number" v-model="income" placeholder="收入" />
      <input type="number" v-model="expense" placeholder="支出" />
      <button type="submit">提交</button>
    </form>
  </view>
</template>

<script>
  import { uniCloud } from "@uni-app/uni-cloud-js";
  export default {
    data() {
      return {
        income: 0,
        expense: 0,
      };
    },
    methods: {
      onSubmit() {
        const { income, expense } = this;
        uniCloud.database.collection('records').add({
          userId: 'USER_ID',
          income,
          expense,
          date: new Date(),
        });
        this.income = 0;
        this.expense = 0;
        uni.showToast({ title: '提交成功' });
      },
    },
  };
</script>

3. 图表统计

利用 TM-Vuetify 图表组件生成清晰的财务图表:

<!-- 页面代码 -->
<template>
  <view>
    <tm-vuetify-bar-chart :data="chartData" />
  </view>
</template>

<script>
  import { uniCloud } from "@uni-app/uni-cloud-js";
  export default {
    data() {
      return {
        chartData: [],
      };
    },
    onLoad() {
      const { userId } = uni.getStorageSync('userInfo');
      uniCloud.database.collection('records')
        .where({ userId })
        .orderBy('date', 'desc')
        .get()
        .then((res) => {
          this.chartData = res.data.map((item) => ({
            label: item.date,
            value: item.income - item.expense,
          }));
        });
    },
  };
</script>

4. 预算管理

使用 Uni-app 进度条组件实现预算控制:

<!-- 页面代码 -->
<template>
  <view>
    <tm-vuetify-progress-bar :value="budgetProgress" />
  </view>
</template>

<script>
  import { uniCloud } from "@uni-app/uni-cloud-js";
  export default {
    data() {
      return {
        budgetProgress: 0,
      };
    },
    onLoad() {
      const { userId } = uni.getStorageSync('userInfo');
      uniCloud.database.collection('users').where({ userId }).get().then((res) => {
        const budget = res.data[0].budget;
        uniCloud.database.collection('records').where({ userId }).orderBy('date', 'desc').get().then((res) => {
          const totalExpense = res.data.reduce((acc, cur) => acc + cur.expense, 0);
          this.budgetProgress = totalExpense / budget;
        });
      });
    },
  };
</script>

小程序展示

该小程序拥有简洁友好的界面,轻松的记账操作,直观的统计图表和灵活的预算管理。

结论

这款记账小程序的成功开发得益于尖端技术的融合,简化了记账流程,提升了财务管理的效率。通过自动登录、直观记账、图表统计和预算管理等功能,这款小程序为用户提供了全面、便捷的财务管理工具。

常见问题解答

  1. 小程序支持哪些平台?

    本小程序基于 Uni-app 开发,支持 iOS、Android、微信小程序、支付宝小程序、百度智能小程序和 Web。

  2. 如何自动登录?

    小程序利用 UniCloud 云函数实现自动登录,无需用户手动输入账号密码。

  3. 如何生成统计图表?

    小程序采用 TM-Vuetify 图表组件生成清晰易懂的统计图表,帮助用户直观掌握财务状况。

  4. 如何设置预算?

    小程序提供预算管理功能,允许用户设定预算并跟踪实际支出,避免过度消费。

  5. 小程序是否安全可靠?

    小程序采用了 UniCloud 的云端数据存储和加密技术,保障用户财务信息的安全和隐私。