校园跑腿小程序---轮播图,导航栏开发

news2025/1/15 2:05:19

在这里插入图片描述

hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹

🦁作者简介:一名喜欢分享和记录学习的在校大学生
💥个人主页:code袁的博客
💥 个人QQ:2647996100
🐯 个人wechat:code8896
code袁系列专栏导航
1.《毕业设计与课程设计》本专栏分享一些毕业设计的源码以及项目成果。🥰🥰🥰
2.《微信小程序开发》本专栏从基础到入门的一系开发流程,并且分享了自己在开发中遇到的一系列问题。🤹🤹🤹
3.《vue开发系列全程线路》本专栏分享自己的vue的学习历程。

非常期待和您一起在这个小小的互联网世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨ 

在这里插入图片描述

文章目录

      • 1.底部导航栏
      • 2.小程序的组件封装
        • 2.1页面引入组件
      • 3.轮播图的封装
      • 4.通知栏的封装
      • 5.request.js封装
      • 6.api
      • 7.time.js封装
      • 🎉写在最后

B站 教学视频

B站:校园跑图小程序开发

1.底部导航栏

在这里插入图片描述

"tabBar": {
    "color": "2c2c2c",
    "selectedColor": "#1296db",
    "borderStyle": "black",
    "position": "bottom",
    "list": [
      {
        "pagePath": "pages/index/index",
        "text": "首页",
        "iconPath": "./image/tabr/index.png",
        "selectedIconPath": "./image/tabr/index1.png"
      },
      {
        "pagePath": "pages/order/order",
        "text": "订单",
        "iconPath": "./image/tabr/order.png",
        "selectedIconPath": "./image/tabr/order1.png"
      },
      {
        "pagePath": "pages/talk/talk",
        "text": "论坛",
        "iconPath": "./image/tabr/talk.png",
        "selectedIconPath": "./image/tabr/talk1.png"
      },
      {
        "pagePath": "pages/my/my",
        "text": "我的",
        "iconPath": "./image/tabr/my.png",
        "selectedIconPath": "./image/tabr/my1.png"
      }
    ]
  }

2.小程序的组件封装

在这里插入图片描述

2.1页面引入组件

在这里插入图片描述

{
  "usingComponents": {
    "swiper":"../../components/swiper/swiperImg"
  }
}

在这里插入图片描述

3.轮播图的封装

<view class="banner">
    <swiper class="swip_main" indicator-dots autoplay interval="5000" circular>
        <block wx:for="{{mglist}}">
            <swiper-item>
                <image style="width: 100%;height: 100%;border-radius: 30rpx;" mode="scaleToFill" src="{{item.imgUrl}}" data-src="{{item.imgUrl}}" catchtap="previewImage"></image>
            </swiper-item>
        </block>
    </swiper>
</view>
.banner{
    width: 96%;
    height: 350rpx;
    margin: 15rpx auto;
    border-radius: 20rpx
}
.swip_main{
    width: 100%;
    height: 100%;
}
// components/swiper/swiperImg.js
Component({

    /**
     * 组件的属性列表
     */
    properties: {
        mglist:{
            type:Array,
            value:[]
        }
    
    },

    /**
     * 组件的初始数据
     */
    data: {
        mglist:[]
    },

    /**
     * 组件的方法列表
     */
    methods: {
    
    }
})

4.通知栏的封装

<view class="tz">
    <view class="tz_zp">
        <image src="../../image/gg.png"></image>
    </view>
    <swiper class="swiper-news-top" vertical="true" autoplay="true" circular="true" interval="3000">
        <block wx:for="{{messageList}}">
            <navigator url="" open-type="navigate">
                <swiper-item>
                    <view class="swiper_item">{{item.content}}</view>
                </swiper-item>
            </navigator>
        </block>
    </swiper>
</view>
/* components/notice/notice.wxss */
.tz{
    width: 95%;
    height: 80rpx;
    background-color: white;
    margin-top: 20rpx;
    margin: 0 auto;
    display: flex;
    justify-content: flex-start;
    box-shadow: 0 0 15px rgb(0 0 0 / 20%);
}
.tz_zp{
    width: 50rpx;
    height: 50rpx;
    margin-top: 15rpx;
    margin-left: 10rpx;
    float: left;
}
.tz_zp image{
    width: 100%;
    height: 100%;
}
.swiper-news-top{
    width: 550rpx;
    height: 80rpx;
    float: right;
    margin-top: 10rpx;
}
.swiper_item {
    font-size: 28rpx;
    font-weight: 700;
    line-height: 80rpx;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    letter-spacing: 2px;
    text-align: center;
    color: #167BF9;
  }
// components/notice/notice.js
Component({

    /**
     * 组件的属性列表
     */
    properties: {
        messageList:{
            type:Array,
            value:[]
        }
    },

    /**
     * 组件的初始数据
     */
    data: {
        messageList:[]
    },

    /**
     * 组件的方法列表
     */
    methods: {

    }
})

5.request.js封装

在这里插入图片描述

// 配置的域名
const baseUrl = "http://localhost:3000" // 请求公共接口
 
// 封装请求
// 封装请求
module.exports = {
    request: (url, method, data) => {
        return new Promise((resolve, reject) => {
            wx.showLoading({
                title: '加载中',
            });
            wx.request({
                url: `${baseUrl}${url}`,
                data: data,
                method: method,
                header: {
                    'content-type': (method === 'GET') ? 'application/x-www-form-urlencoded' : 'application/json',
                    'Cookie': wx.getStorageSync('Cookie') || ''
                },
                success: (res) => {
                    // console.log('原始响应:', res); // 打印原始响应
                    if (res.statusCode === 200) {
                        // 处理 Cookie
                        if (res.cookies && res.cookies.length > 0) {
                            wx.setStorageSync('Cookie', res.cookies[0]); // 存储 Cookie
                        }
                        // 成功返回值
                        // console.log('返回数据:', res.data); // 打印返回的数据
                        if (res.data.code === 200) {
                            resolve(res.data); // 确保这里返回的是 data
                        } else {
                            wx.showToast({
                                title: res.data.message || '请求失败',
                                icon: 'none'
                            });
                            reject(res.data.message);
                        }
                    } else {
                        wx.showToast({
                            title: '请求失败,请稍后再试',
                            icon: 'none'
                        });
                        reject('请求失败');
                    }
                },
                fail: (error) => {
                    console.error('请求失败:', error); // 打印请求失败的错误
                    wx.showToast({
                        title: '网络错误,请检查网络',
                        icon: 'none'
                    });
                    reject(error);
                },
                complete: () => {
                    setTimeout(() => {
                        wx.hideLoading();
                    }, 100);
                },
            });
        });
    },
}

6.api

在这里插入图片描述

const {
    request
} = require('../utils/request')
 
//基于业务封装的接口
module.exports = {
    // 获取轮播图
login: (data) => {
    return request('/login/login', 'POST',data);
 }
}

7.time.js封装

在这里插入图片描述

const formatTime = date => {
    const year = date.getFullYear()
    const month = date.getMonth() + 1
    const day = date.getDate()

    const hour = date.getHours()
    const minute = date.getMinutes()
    const second = date.getSeconds()
  
    return `${[year, month, day].map(formatNumber).join('-')} ${[hour, minute, second].map(formatNumber).join(':')}`
  }
  
  function getLastSevenDays() {
    const dates = [];
    const today = new Date();
    
    for (let i = 0; i < 7; i++) {
        const pastDate = new Date(today);
        pastDate.setDate(today.getDate() - i);
        const month = String(pastDate.getMonth() + 1).padStart(2, '0'); // 获取月份并补零
        const day = String(pastDate.getDate()).padStart(2, '0'); // 获取日期并补零
        dates.push(`${month}-${day}`); // 格式化为 MM-DD
    }
    
    return dates;
}
function getLastSevenDaysALL() {
    const dates = [];
    const today = new Date();
    
    for (let i = 0; i < 7; i++) {
        const pastDate = new Date(today);
        pastDate.setDate(today.getDate() - i);
        const formattedDate = pastDate.toISOString().split('T')[0]; // 格式化为 YYYY-MM-DD
        dates.push(formattedDate);
    }
    
    return dates;
}
  const formatNumber = n => {
    n = n.toString()
    return n[1] ? n : `0${n}`
  }    
  //获取星期
  const getWeekByDate = dates => {
    let show_day = new Array('周日', '周一', '周二', '周三', '周四', '周五', '周六');
    let date = new Date(dates);
    date.setDate(date.getDate());
    let day = date.getDay();
    return show_day[day];
  }
  
  module.exports = {
    formatTime: formatTime,
    getLastSevenDays:getLastSevenDays,
    getWeekByDate: getWeekByDate,
    getLastSevenDaysALL:getLastSevenDaysALL
  }
  

🎉写在最后

🍻伙伴们,如果你已经看到了这里,觉得这篇文章有帮助到你的话不妨点赞👍或 Star ✨支持一下哦!手动码字,如有错误,欢迎在评论区指正💬~

你的支持就是我更新的最大动力💪~
在这里插入图片描述

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

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

相关文章

uniapp实现H5页面内容居中与两边留白,打造类似微信公众号阅读体验

在 UniApp 中&#xff0c;由于需要兼容多端应用&#xff0c;我们通常使用 rpx 作为尺寸单位。然而&#xff0c;在某些情况下&#xff0c;如需要实现内容居中且两边留白时&#xff0c;直接使用 rpx 可能会带来一些限制。这时&#xff0c;我们可以考虑使用 px 或 rem 等单位&…

【Uniapp-Vue3】pages.json页面路由globalStyle的属性

项目的全局配置在pages.json中。 一、导航栏设置 二、下拉刷新设置 下拉就可以看到设置的样式 三、上拉触底 这个页面中&#xff0c;向下滑动页面到底部就会输出“到底了” 现在将触底距离设置为500 走到半路就会输出“到底了”

Type-C双屏显示器方案

在数字化时代&#xff0c;高效的信息处理和视觉体验已成为我们日常生活和工作的关键需求。随着科技的进步&#xff0c;一款结合了便携性和高效视觉输出的设备——双屏便携屏&#xff0c;逐渐崭露头角&#xff0c;成为追求高效工作和娱乐体验人群的新宠。本文将深入探讨双屏便携…

Linux下部署Redis(本地部署超详细)

非docker 1、下载Redis 历史版本&#xff1a; http://download.redis.io/releases 我的&#xff1a; http://download.redis.io/releases/redis-7.0.5.tar.gz 2.安装教程 1.Redis是基于c语言编写的需要安装依赖&#xff0c;需要安装gcc yum install gcc-c 2.查看gcc版…

使用 Multer 上传图片到阿里云 OSS

文件上传到哪里更好&#xff1f; 上传到服务器本地 上传到服务器本地&#xff0c;这种方法在现今商业项目中&#xff0c;几乎已经见不到了。因为服务器带宽&#xff0c;磁盘 IO 都是非常有限的。将文件上传和读取放在自己服务器上&#xff0c;并不是明智的选择。 上传到云储存…

UE5 打包项目

UE5 打包项目 flyfish 通过 “文件”->“打开项目”&#xff0c;然后在弹出的对话框中选择项目文件&#xff08;通常是以.uproject为后缀的文件&#xff09; 选择目标平台&#xff1a; 在 UE5 主界面中&#xff0c;找到 “平台”&#xff08;Platforms&#xff09;。根据…

自然语言转 SQL:通过 One API 将 llama3 模型部署在 Bytebase SQL 编辑器

使用 Open AI 兼容的 API&#xff0c;可以在 Bytebase SQL 编辑器中使用自然语言查询数据库。 出于数据安全的考虑&#xff0c;私有部署大语言模型是一个较好的选择 – 本文选择功能强大的开源模型 llama3。 由于 OpenAI 默认阻止出站流量&#xff0c;为了简化网络配置&#…

杭州铭师堂的云原生升级实践

作者&#xff1a;升学e网通研发部基建团队 公司介绍 杭州铭师堂&#xff0c;是一个致力于为人的全面发展而服务的在线教育品牌。杭州铭师堂秉持“用互联网改变教育&#xff0c;让中国人都有好书读”的使命&#xff0c;致力于用“互联网教育”的科技手段让更多的孩子都能享有优…

STM32 FreeRTOS移植

目录 FreeRTOS源码结构介绍 获取源码 1、 官网下载 2、 Github下载 源码结构介绍 源码整体结构 FreeRTOS文件夹结构 Source文件夹结构如下 portable文件夹结构 RVDS文件夹 MemMang文件夹 FreeRTOS在基于寄存器项目中移植步骤 目录添加源码文件 工程添加源码文件 …

可以进行重复测量的方差分析的AI agent

可以进行重复测量的方差分析的AI agent 前几天做了机器学习的AI agent&#xff0c;把一个糖尿病机器学习模型采用API的形式接入到LLM模型中&#xff0c;结合LLM的智能性和机器学习模型的准确性&#xff0c;利用两者的有点&#xff0c;有可以避免两者的缺点&#xff0c;是一条合…

OpenCV实现Kuwahara滤波

Kuwahara滤波是一种非线性的平滑滤波技术&#xff0c;其基本原理在于通过计算图像模板中邻域内的均值和方差&#xff0c;选择图像灰度值较为均匀的区域的均值来替代模板中心像素的灰度值。以下是Kuwahara滤波的详细原理说明&#xff1a; 一、基本思想 Kuwahara滤波的基本思想…

[文献精汇]使用 LSTM Networks 的均值回归交易策略

Backtrader 策略实例 [Backtrader]实例:均线策略[Backtrader] 实例:MACD策略[Backtrader] 实例:KDJ 策略[Backtrader] 实例:RSI 与 EMA 结合[Backtrader] 实例:SMA自定义数据源[Backtrader] 实例:海龟策略[Backtrader] 实例:网格交易[Backtrader] 实例: 配对交[Backtrader] 机…

IDEA Maven构建时报错:无效的目标发行版17

报错分析 报错原因&#xff1a;Maven 构建时&#xff0c;Java 版本配置不匹配 我安装的JDK版本是1.8&#xff0c;但由于种种原因&#xff0c;Maven构建时指定了 Java 17 作为目标发行版&#xff0c;从而导致错误 解决方案 首先&#xff0c;java -version&#xff0c;查看环…

计算机网络 (39)TCP的运输连接管理

前言 TCP&#xff08;传输控制协议&#xff09;是一种面向连接的、可靠的传输协议&#xff0c;它在计算机网络中扮演着至关重要的角色。TCP的运输连接管理涉及连接建立、数据传送和连接释放三个阶段。 一、TCP的连接建立 TCP的连接建立采用三次握手机制&#xff0c;其过程如下&…

Navicat Premium 16.0.90 for Mac 安装与free使用

步骤 0.下载 通过网盘分享的文件&#xff1a;Navicat Premium 16.0.90 链接: https://pan.baidu.com/s/12O22rXa9MiBPKKTGMELNIg 提取码: yyds 1.打开下好的 dmg 文件 (这个界面不要关闭&#xff09; 2.将Navicat Premium 拖动至 Applications 这时出现 点击取消。 3.点开…

小创新模型!6种2024算法优化BiTCN-SVM单变量输入单步预测,MATLAB机器学习预测全家桶再更新...

截止到本期MATLAB机器学习预测全家桶&#xff0c;一共发了26篇关于机器学习预测代码的文章。算上这一篇&#xff0c;一共27篇&#xff01;参考文章如下&#xff1a; 1.五花八门的机器学习预测&#xff1f;一篇搞定不行吗&#xff1f; 2.机器学习预测全家桶&#xff0c;多步预测…

3_CSS3 渐变 --[CSS3 进阶之路]

CSS3 引入了渐变&#xff08;gradients&#xff09;&#xff0c;它允许在两个或多个指定的颜色之间显示平滑的过渡。CSS3 支持两种类型的渐变&#xff1a; 线性渐变&#xff08;Linear Gradients&#xff09;&#xff1a;颜色沿着一条线性路径变化&#xff0c;可以是水平、垂直…

25/1/13 嵌入式笔记 继续学习Esp32

PWM&#xff08;Pulse Width Modulation&#xff0c;脉宽调制&#xff09; 是一种通过快速切换高低电平来模拟中间电压值的技术。它广泛应用于控制 LED 亮度、电机速度、音频生成等场景。 analogWrite函数:用于在微控制器&#xff08;如 Arduino&#xff09;上生成模拟信号。 …

【端云一体化】云函数的使用

前言 为丰富HarmonyOS对云端开发的支持、实现端云联动&#xff0c;DevEco Studio以Cloud Foundation Kit&#xff08;云开发服务&#xff09;为底座、在传统的“端开发”基础上新增“云开发”能力&#xff0c;开发者在创建工程时选择合适的云开发工程模板&#xff0c;即可在De…

行业案例:高德服务单元化方案和架构实践

目录 为什么要做单元化 高德单元化的特点 高德单元化实践 服务单元化架构 就近接入实现方案 路由表设计 路由计算 服务端数据驱动的单元化场景 总结 系列阅读 为什么要做单元化 单机房资源瓶颈 随着业务体量和服务用户群体的增长,单机房或同城双机房无法支持服…