历时半年,我发布了一款习惯打卡小程序

news2024/11/16 0:19:11

半年多前,我一直困扰于如何记录习惯打卡情况,在参考了市面上绝大多数的习惯培养程序后,终于创建并发布了这款习惯打卡小程序。

“我的小日常打卡”小程序主要提供习惯打卡和专注训练功能。致力于培养用户养成一个个好的习惯,改掉生活中的拖延症!

在这里插入图片描述

代码技术

服务端:使用PHP+MySQL编写服务端接口

前端:使用UniApp开发并封装成微信小程序

图片存储:使用七牛云存储日志图片

界面截图介绍

一、首页打卡界面

显示当天需要打卡的习惯,点击白色圈的图片即可打卡成功;(可操作单个习惯一天打卡多次)

请添加图片描述

习惯显示列表

请添加图片描述

二、习惯统计

支持按天、按周、按月、按年度显示打卡情况;

当天打卡数据显示

请添加图片描述

日历使用的是uniapp自带的uni-calendar组件,只是自行修改了样式,样式代码如下:

<style scoped>
	.uni-calendar--hook>>>.uni-calendar__content {
		border-radius: 20rpx;
		font-weight: 500;
	}

	/* 日历头部 */
	.uni-calendar--hook>>>.uni-calendar__header {
		height: 40px;
	}

	/* 日历星期 */
	.uni-calendar--hook>>>.uni-calendar__weeks-day {
		height: 35px;
		font-weight: normal;
	}

	.uni-calendar--hook>>>.uni-calendar__backtoday {
		top: auto;
	}

	/* 日历主体 */
	/* 已打卡和补卡设置 */
	.uni-calendar--hook>>>.uni-calendar-item__weeks-box-item {
		height: 60rpx;
		width: 60rpx;
	}

	.uni-calendar--hook>>>.uni-calendar__weeks {
		margin: 20rpx 0;
	}

	.uni-calendar--hook>>>.uni-calendar__weeks:first-child {
		margin: 0;
	}


	/* 设置背景颜色 */
	.uni-calendar--hook>>>.uni-calendar-item--signed .uni-calendar-item__weeks-box-item {
		/* background-color: red; */
		border-radius: 60rpx;
		width: 60rpx;
		height: 60rpx;
	}

	.uni-calendar--hook>>>.uni-calendar-item--un-signed .uni-calendar-item__weeks-box-item {
		background-color: #f9ae3d;
		border-radius: 60rpx;
		width: 60rpx;
		height: 60rpx;
	}

	/* 去掉禁选背景颜色 */
	.uni-calendar--hook>>>.uni-calendar-item--signed .uni-calendar-item--disable,
	.uni-calendar--hook>>>.uni-calendar-item--un-signed .uni-calendar-item--disable {
		background-color: transparent;
	}

	.uni-calendar--hook>>>.uni-calendar-item--signed .uni-calendar-item--extra,
	.uni-calendar--hook>>>.uni-calendar-item--un-signed .uni-calendar-item--extra {
		display: none;
	}

	.uni-calendar--hook>>>.uni-calendar-item--signed .uni-calendar-item__weeks-box-text,
	.uni-calendar--hook>>>.uni-calendar-item--un-signed .uni-calendar-item__weeks-box-text {
		color: #fff;
	}

	.uni-calendar--hook>>>.uni-calendar-item--isDay {
		background-color: transparent;
		color: #f9ae3d;
		opacity: 1;
		line-height: normal;
	}

	.uni-calendar--hook>>>.uni-calendar-item--isDay-text {
		color: #333;
	}

	/* 去掉右上角圆圈 */
	.uni-calendar--hook>>>.uni-calendar-item__weeks-box-circle {
		background-color: #f9ae3d;
		display: none;
	}

	/* 移除选中样式 */
	.uni-calendar--hook>>>.uni-calendar-item--checked {
		background-color: transparent;
		color: #333;
		opacity: 1;
	}
</style>

打卡详细数据显示(支持补卡,点击日历上过去的日期即可显示是否补卡)

请添加图片描述

按周、按月显示打卡统计

请添加图片描述

年度打卡统计显示

请添加图片描述

三、专注训练

提供番茄专注倒计时,训练专注能力。专注统计数据显示如下:

请添加图片描述

专注训练这块的数据图表生成,我并没有使用他人封装好的echarts相关组件,而是选择可官方提供的一个小程序版本的echarts-for-weixin组件。饼状图生成代码如下:

<template>
    <uni-ec-canvas class="uni-ec-canvas" id="day-canvas" ref="dayCanvas" canvas-id="day-canvas" :ec="ec"></uni-ec-canvas>
</template>
<script>
export default {
    data() {
        ec: {
                lazyLoad: true
        },
        optionDay: {
                color: [],
                series: [{
                        type: 'pie',
                        data: [],
                        label: {
                                formatter: params => {
                                        // console.log(params);
                                        let str = params.data.name;
                                        let duration = params.data.value;
                                        let timeStr = '';
                                        if (params.data.value > 0) {
                                                if (duration >= 60) {
                                                        // 格式化时分
                                                        let hour = Math.floor(duration / 60);
                                                        let minute = duration - hour * 60;

                                                        timeStr += hour + '小时' + minute + '分';
                                                } else {
                                                        timeStr += duration + '分';
                                                }
                                        }
                                        return str + '\n' + timeStr;
                                }
                        },
                        radius: '70%'
                }]
        },
    },
    
    methods: {
        getDetails() {
            this.$nextTick(() => {
                // ajax请求数据并绘图
                setTimeout(() => {
                        this.$refs.dayCanvas.init(this.initDayChart);
                }, 300);
        });
        }
    }
}
</script>

四、其他功能

个人中心提供其他更多功能,如与好友在一个打卡组中进行打卡,记录打卡日志和早起打卡瓜分奖金等

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1248337.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Latex] Riemann 问题中的激波,接触间断,膨胀波的 Tikz 绘图

Latex 代码 \begin{figure}\begin{subfigure}[b]{0.32\textwidth}\centering\resizebox{\linewidth}{!}{\begin{tikzpicture}\coordinate (o) at (0,0);\coordinate (Si) at (2.5,2.5);\coordinate (x) at (1,0);\draw[->] (0,0) -- (3,0) node[right] {$x$};\draw[->] …

tp8 使用rabbitMQ(4)路由模式

路由模式 在第三节中我们使用的 交换机的 fanout 把生产者的消息广播到了所有与它绑定的队列中处理&#xff0c;但是我们能不能把特定的消息&#xff0c;发送给指定的队列&#xff0c;而不是广播给所有队列呢&#xff1f; 如图&#xff0c;交换机把 orange 类型的消息发送给了…

jQuery_02 引入jQuery,初试牛刀

引入jquery文件 我们在官网上点击dowmload那个 会发现进入了一个网页&#xff0c;里面全部是代码&#xff0c;你可能还在想为什么下载不了&#xff0c;其实jquery不跟vue一样&#xff0c;整个jquery就是一个js文件而已&#xff0c;所以直接ctrla 全选 ctrlc复制 &#xff0c;然…

关于爱普生L3219彩色喷墨打印机打印过程中噪声过大的几点缓解方法

故障描述&#xff1a; 一台新购买的爱普生L3219使用过程中出现了噪声过大的问题&#xff0c;每次打印或者复印都或有明显的噪音过大的现象&#xff0c;目测观察大概是打印机字车左右来回移动的时候剐蹭滑道的问题&#xff0c;与经销商沟通后由经销商联系上级供货商更换一台全新…

elk 简单操作手册

1.1. 基础概念 EFK不是一个软件,而是一套解决方案,开源软件之间的互相配合使用,高效的满足了很多场合的应用,是目前主流的一种日志系统。 EFK是三个开源软件的缩写,分别表示:Elasticsearch , Filebeat, Kibana , 其中Elasticsearch负责日志保存和搜索,Filebeat负责收集日志,Ki…

喜报|AIRLOOK荣获“创客北京2023”创新创业大赛企业组三等奖

“创客北京2023”创新创业总决赛圆满落幕&#xff0c;埃洛克航空科技&#xff08;北京&#xff09;有限公司&#xff0c;&#xff08;以下统称AIRLOOK&#xff09;首次参赛即从几千家企业中脱颖而出&#xff0c;荣获大赛企业组三等奖。 自2016年开始&#xff0c;“创客北京”大…

JMeter---BeanShell实现接口前置和后置操作

在JMeter中&#xff0c;可以使用BeanShell脚本来实现接口的前置和后置操作。 下面是使用BeanShell脚本实现接口前置和后置操作的步骤&#xff1a; 1、在测试计划中添加一个BeanShell前置处理器或后置处理器。 右键点击需要添加前置或后置操作的接口请求&#xff0c;选择&quo…

C# ReadOnlyRef Out

C# ReadOnly ReadOnly先看两种情况1.值类型2.引用类型 结论 Ref Out ReadOnly官方文档 ReadOnly 先看两种情况 1.值类型 当数据是值类型时&#xff0c;标记为Readonly时&#xff0c;如果再次设置值&#xff0c;会提示报错&#xff0c;无法分配到只读字段 public class A {pri…

计算机组成原理。3-408

1.动态存储和静态存储 2.双端口RAM 注意&#xff1a;cpu通过地址线和数据线读写数据时&#xff0c;不能同时写&#xff0c;但可以同时读&#xff0c;也不能一边读一边写。 3.多体并行存储器 分为高位存储和低位存储 小结 4.磁盘存储器的组成 5.磁盘的性能指标 磁盘读写寻道…

vcsa6.7打补丁操作

首先到官网中查找到最新的patch&#xff0c;需要有注册账号才可操作 网址链接&#xff1a;https://customerconnect.vmware.com/patch#search 下载后把iso文件上传到磁盘中&#xff0c;vcsa虚拟机中做光盘iso挂接后&#xff0c; 使用浏览器输入https://ip:5480登录&#xff…

220v转5V/150MA电源芯片专业替代阻容降压

标题&#xff1a;220V转5V/150MA电源芯片专业替代阻容降压&#xff0c;SOT23-3小封装&#xff0c;内置高压MOS管&#xff0c;45V-265V输入&#xff0c;固定5V输出&#xff0c;峰值电流200ma&#xff0c;逐周期限流、输出短路保护&#xff0c;片上过温保护&#xff08;OTP&#…

最新AI创作系统ChatGPT系统运营源码,支持GPT-4图片对话能力,上传图片并识图理解对话,支持DALL-E3文生图

一、AI创作系统 SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧&#xff01;本系统使用NestjsVueTypescript框架技术&#xff0c;持续集成AI能力到本系统。支持OpenAI DALL-E3文生图&#xff0c;…

js粒子效果(一)

效果: 代码: <!doctype html> <html> <head><meta charset"utf-8"><title>HTML5鼠标经过粒子散开动画特效</title><style>html, body {position: absolute;overflow: hidden;margin: 0;padding: 0;width: 100%;height: 1…

Edit And Resend测试接口工具(浏览器上的Postman)

优点 可以不用设置Cookie或者Token&#xff0c;只设置参数进行重发接口测试API 使用Microsoft Rdge浏览器 F12——然后点击网络——在页面点击发起请求——然后选择要重发的请求右键选择Edit And Resend——在网络控制台设置自己要设置的参数去测试自己写的功能

【C++初阶】STL之学习string的用法

目录 前言&#xff1a;一、认识下string1.1 什么是string1.2 为什么要有string 二、string 类的接口使用2.1 初始化与析构2.1.1 初始化2.1.2 析构 2.2 容量操作2.2.1 长度大小——size和length2.2.2 空间总大小——capacity2.2.3 判空——empty2.2.4 清空——clear2.2.5 预留空…

使用v-md-editor开发sql查看器--实战

v-md-editor markdown编辑器 文档&#xff1a;https://code-farmer-i.github.io/vue-markdown-editor/zh/ echo 创建一个空目录&#xff0c;使用vscode打开此空目录&#xff0c;进入终端&#xff0c;输入如下命令 npm create vitelatest . -- --template vue echo 选择 vue 和 …

Linux:gdb调试器的解析+使用(超详细版)

Linux调试器-gdb 背景&#xff1a; 程序的发布方式有两种&#xff0c;debug模式和release模式 debug模式&#xff1a;可以被调试&#xff1b; release模式&#xff1a;不可以被调试。 为什么需要debuy和release这两个模式呢&#xff1f; 答&#xff1a;程序员在开发的时候需要…

git提交报错error: failed to push some refs to ‘git url‘

1.产生错误原因 想把本地仓库提交到远程仓库&#xff0c;报错信息如下 git提交报错信息 error: src refspec master does not match any error: failed to push some refs to git url 错误原因&#xff1a; 我们在创建仓库的时候&#xff0c;都会勾选“使用Reamdme文件初始化…

论文导读 | 10月专题内容精选:人的预测

编者按 本次论文导读&#xff0c;编者选择了10月份OR和MS上与"人的预测"有关的三篇文章&#xff0c;分别涉及群体智慧的提取&#xff0c;个体序列预测的评估&#xff0c;以及决策者对风险的扭曲感知在分布式鲁棒优化中的应用。其中&#xff0c;从基于"生成式可能…

【LeetCode】挑战100天 Day14(热题+面试经典150题)

【LeetCode】挑战100天 Day14&#xff08;热题面试经典150题&#xff09; 一、LeetCode介绍二、LeetCode 热题 HOT 100-162.1 题目2.2 题解 三、面试经典 150 题-163.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站&#xff0c;提供各种算法和数据结构的题目&…