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

在这里插入图片描述

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 ✨支持一下哦!手动码字,如有错误,欢迎在评论区指正💬~

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot入门实现简单增删改查

本例子的依赖 要实现的内容 通过get、post、put和delete接口,对数据库中的trade.categories表进行增删改查操作。 目录结构 com.test/ │ ├── controller/ │ ├── CateController.java │ ├── pojo/ │ ├── dto/ │ │ └── CategoryDto.java │ ├─…

doc、pdf转markdown

国外的一个网站可以&#xff1a; Convert A File Word, PDF, JPG Online 这个网站免费的&#xff0c;算是非常厚道了&#xff0c;但是大文件上传多了之后会扛不住 国内的一个网站也不错&#xff1a; TextIn-AI智能文档处理-图像处理技术-大模型加速器-在线免费体验 https://…

信号与系统初识---信号的分类

文章目录 0.引言1.介绍2.信号的分类3.关于周期大小的求解4.实信号和复信号5.奇信号和偶信号6.能量信号和功率信号 0.引言 学习这个自动控制原理一段时间了&#xff0c;但是只写了一篇博客&#xff0c;其实主要是因为最近在打这个华数杯&#xff0c;其次是因为在补这个数学知识…

Facebook 在新兴市场的发展策略:机遇与挑战并存

随着全球互联网的普及&#xff0c;新兴市场成为了全球科技公司关注的重点。这些地区的互联网用户数量快速增长&#xff0c;对于 Facebook&#xff08;现 Meta&#xff09;来说&#xff0c;这些市场不仅蕴藏着巨大的用户潜力&#xff0c;也带来了不少挑战。Facebook 在新兴市场的…

2006-2020年各省单位人口医疗卫生机构床位数数据

2006-2020年各省单位人口医疗卫生机构床位数数据2006-2020年各省单位人口医疗卫生机构床位数数据 1、时间&#xff1a;2006-2020年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区名称、年份、单位人口医疗卫生机构床位数 4、范围&#x…

【Hive】新增字段(column)后,旧分区无法更新数据问题

TOC 【一】问题描述 Hive修改数据表结构的需求&#xff0c;比如&#xff1a;增加一个新字段。 如果使用如下语句新增列&#xff0c;可以成功添加列col1。但如果数据表tb已经有旧的分区&#xff08;例如&#xff1a;dt20190101&#xff09;&#xff0c;则该旧分区中的col1将为…

vue3+elementPlus之后台管理系统(从0到1)(day1)

vue3官方文档&#xff1a;https://cn.vuejs.org/guide/introduction.html 1、项目创建 确保电脑已安装node 查看命令&#xff1a; node -v进入项目目录&#xff0c;创建项目 npm init vuelatest Need to install the following packages: create-vue3.13.0 Ok to procee…

添加计算机到AD域中

添加计算机到AD域中 一、确定计算机的DNS指向域中的DNS二、打开系统设置三、加域成功后 一、确定计算机的DNS指向域中的DNS 二、打开系统设置 输入域管理员的账密 三、加域成功后 这里有显示&#xff0c;就成功了。

hot100_240. 搜索二维矩阵 II

hot100_240. 搜索二维矩阵 II 直接遍历列减行增 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7,1…

vim使用指南

&#x1f3dd;️专栏&#xff1a;计算机操作系统 &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 一、Vim 的基本概念 1.Vim 的主要模式&#xff1a; 1.1普通模式 (Normal Mode) 1.2插入…

Web开发(一)HTML5

Web开发&#xff08;一&#xff09;HTML5 写在前面 参考黑马程序员前端Web教程做的笔记&#xff0c;主要是想后面自己搭建网页玩。 这部分是前端HTML5CSS3移动web视频教程的HTML5部分。主要涉及到HTML的基础语法。 HTML基础 标签定义 HTML定义 HTML(HyperText Markup Lan…

软件设计大致步骤

由于近期在做软件架构设计&#xff0c;这里总结下大致的设计流程 软件设计流程 1 首先要先写系统架构图&#xff0c;将该功能在整个系统的位置以及和大致的内部模块划分 2 然后写内部的结构图&#xff0c;讲内部的各个子系统&#xff0c;模块&#xff0c;组件之间的关系和调用…

Hadoop3.x 万字解析,从入门到剖析源码

&#x1f496; 欢迎来到我的博客&#xff01; 非常高兴能在这里与您相遇。在这里&#xff0c;您不仅能获得有趣的技术分享&#xff0c;还能感受到轻松愉快的氛围。无论您是编程新手&#xff0c;还是资深开发者&#xff0c;都能在这里找到属于您的知识宝藏&#xff0c;学习和成长…

UML系列之Rational Rose笔记九:组件图

一、新建组件图 二、组件图成品展示 三、工作台介绍 最主要的还是这个component组件&#xff1b; 然后还有这几个&#xff0c;正常是用不到的&#xff1b;基本的使用第四部分介绍一下&#xff1a; 四、基本使用示例 这些&#xff0c;主要是运用package还有package specifica…

RabbitMQ 高可用方案:原理、构建与运维全解析

文章目录 前言&#xff1a;1 集群方案的原理2 RabbitMQ高可用集群相关概念2.1 设计集群的目的2.2 集群配置方式2.3 节点类型 3 集群架构3.1 为什么使用集群3.2 集群的特点3.3 集群异常处理3.4 普通集群模式3.5 镜像集群模式 前言&#xff1a; 在实际生产中&#xff0c;RabbitM…

React Fiber框架中的Render渲染阶段——workLoop(performUnitOfWork【beginWork与completeWork】)

触发渲染过程——renderRoot renderRoot 是一个函数&#xff0c;用于触发渲染工作。它通常会调用并递归地执行一系列的渲染任务&#xff0c;直到完成整个更新过程。这个过程包括执行 Fiber 树中的 beginWork 和 completeWork&#xff0c;以及渲染新状态或 DOM。 function ren…

一体机cell服务器更换内存步骤

一体机cell服务器更换内存步骤&#xff1a; #1、确认grdidisk状态 cellcli -e list griddisk attribute name,asmmodestatus,asmdeactivationoutcome #2、offline griddisk cellcli -e alter griddisk all inactive #3、确认全部offline后进行关机操作 shutdown -h now #4、开…

uni-app编写微信小程序使用uni-popup搭配uni-popup-dialog组件在ios自动弹出键盘。

uni-popup-dialog 对话框 将 uni-popup 的type属性改为 dialog&#xff0c;并引入对应组件即可使用对话框 &#xff0c;该组件不支持单独使用 示例 <button click"open">打开弹窗</button> <uni-popup ref"popup" type"dialog"…

SYS_OP_MAP_NONNULL NULL的等值比较

无意在数据库中发现了这个操作SYS_OP_MAP_NONNULL。 SYS_OP_MAP_NONNULL应该不是数据库中的对象&#xff0c;因为在DBA_OBJECTS中根本找不到它&#xff0c;而在STANDARD和DBMS_STANDARD包中也找不到函数说明。 SQL> SELECT * 2 FROM DBA_OBJECTS 3 WHERE OBJECT_NAME…

基于Java的百度AOI数据解析与转换的实现方法

目录 前言 一、AOI数据结构简介 1、官网的实例接口 2、响应参数介绍 二、Java对AOI数据的解析 1、数据解析流程图 2、数据解析实现 3、AOI数据解析成果 三、总结 前言 在当今信息化社会&#xff0c;地理信息数据在城市规划、交通管理、商业选址等领域扮演着越来越重要的…