前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >详解微信小程序如何实现流程进度功能

详解微信小程序如何实现流程进度功能

原创
作者头像
疯狂的小程序
发布于 2018-01-22 08:21:45
发布于 2018-01-22 08:21:45
1.7K00
代码可运行
举报
文章被收录于专栏:疯狂的小程序疯狂的小程序
运行总次数:0
代码可运行

最近正在做微信小程序,需要实现一个流程进度的图样式如下面

需求:

  1. 没完成的灰色小圆点表示
  2. 完成的使用蓝色小圆点设置
  3. 当前状态使用有外圈的小圆点表示 实现起来比较简单,实现思路,使用一个列表实现,列表中的每一个item的样式如下图

使用win10画板画的不好看 图上的意思就是每个item 前面有一段线条 中间是个圆圈然后后面有一段线条。之所以这样是因为下面的文字需要居中显示在圆圈的下面。如果不需要文字的话可以一个圆圈后面跟一条直线会更简单一点。

按照上面的图片,html布局为下面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   <view class='order_process'>
      <view class='process_wrap' wx:for="{{processData}}" wx:key="">
        <view class='process'>
          <view class='process_line' style="background:{{item.start}}"></view>
          <image class='process_icon' src="{{item.icon}}"></image>
          <view class='process_line' style="background:{{item.end}}"></view>
        </view>
        <text class='process_name'>{{item.name}}</text>
      </view>
    </view>

OK 列表肯定需要一个数组啦数组如下面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
processData: [{
      name: '提交工单',
      start: '#fff',
      end: '#EFF3F6',
      icon: '../../img/process_1.png'
    },
    {
      name: '已接单',
      start: '#EFF3F6',
      end: '#EFF3F6',
      icon: '../../img/process_1.png'
    },
    {
      name: '开始维修',
      start: '#EFF3F6',
      end: '#EFF3F6',
      icon: '../../img/process_1.png'
    },
    {
      name: '维修结束',
      start: '#EFF3F6',
      end: '#EFF3F6',
      icon: '../../img/process_1.png'
    },
    {
      name: '已确认',
      start: '#EFF3F6',
      end: '#fff',
      icon: '../../img/process_1.png'
    }],
  },

按照上面的item图片我们会看到直接显示的话两边会多处一条线来怎么去掉这两条线呢,很简单,让父容器的背景颜色跟先的颜色一样就好啦。

把父布局的背景改为白色,然后控制列表中第一个item中的前面的线段的颜色为白色,最后一个item中的后面的线段为白色。这样看起来两边的线段就去掉了

当数据改变的时候,我们只需要改变数组中对象的属性就好了。不如下面的做参考

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//进度条的状态
  setPeocessIcon: function () {
    var index = 0//记录状态为1的最后的位置
    var processArr = this.data.processData
    // console.log("progress", this.data.detailData.progress)
    for (var i = 0; i < this.data.detailData.progress.length; i++) {
      var item = this.data.detailData.progress[i]
      processArr[i].name = item.word
      if (item.state == 1) {
        index = i
        processArr[i].icon = "../../img/process_3.png"
        processArr[i].start = "#45B2FE"
        processArr[i].end = "#45B2FE"
      } else {
        processArr[i].icon = "../../img/process_1.png"
        processArr[i].start = "#EFF3F6"
        processArr[i].end = "#EFF3F6"
      }
    }
    processArr[index].icon = "../../img/process_2.png"
    processArr[index].end = "#EFF3F6"
    processArr[0].start = "#fff"
    processArr[this.data.detailData.progress.length - 1].end = "#fff"
    this.setData({
      processData: processArr
    })
  },

上面代码的数据中,使用state代表完成和没完成。我们把完成的设置为蓝色 把没完成的设置为灰色。

使用 index 来记录是不是当前点(当前点就是state表示完成的最后一个)。

最后css中的代码也很简单

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.order_process {
  display: flex;
  flex-wrap: nowrap;
  padding: 10rpx 10rpx 20rpx 10rpx;
  background-color: #fff;
}

.process_wrap {
  display: flex;
  flex-direction: column;
  flex: 1;
  align-items: center;
}

.process {
  display: flex;
  align-items: center;
  width: 100%;
}

.process_icon {
  width: 50rpx;
  height: 50rpx;
}

.process_line {
  background: #eff3f6;
  flex: 1;
  height: 5rpx;
}

.process_name {
  font-size: 24rpx;
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
小程序请假效果
var dateTimePicker = require('../../utils/dateTimePicker.js'); Page({ // 页面的初始数据 data: { date: '', winWidth: 0, winHeight: 0, // tab切换 currentTab: 0, }, //获取当前滑块的index bindchange: function(e) { const that = this; that.
达达前端
2022/04/29
3980
微信开发--微信小程序(四)
1.小程序向后台请求接口必须使用https,包括web-view里的网页,如果项目中有用到web socket,那么也必须使用wss协议。https证书一般会用第三方的。比如阿里云的。 2.在微信小程序管理后台,还需要配置合法域名。当然,在后台还没有部署https之前,我们也可以进行开发调试,只需要设置不校验合法域名,https证书等即可。步骤 : 工具--项目详情--不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书
生南星
2019/07/22
21.7K0
【uniapp小程序】打印列表UI模板
这是一个云打印项目,首页查询接口渲染设备,设备是否在线是通过redis进行判断的,当设备在线时可以通过在线的驱动软件打印用户提交的文档,自动处理无需人工干预
德宏大魔王
2023/08/08
5220
【uniapp小程序】打印列表UI模板
小程序上传wx.uploadFile - 小程序请假-请求
UploadTask wx.uploadFile(Object object) 将本地资源上传到服务器。客户端发起一个 HTTPS POST 请求,其中 content-type 为 multipart/form-data。使用前请注意阅读相关说明。
达达前端
2022/04/29
1.6K0
小程序上传wx.uploadFile - 小程序请假-请求
【愚公系列】2022年09月 微信小程序-自定义tabBar的实现
小程序自带的tabBar可以参考这篇文章:https://codeboy.blog.csdn.net/article/details/123040278
愚公搬代码
2022/09/27
8530
【愚公系列】2022年09月 微信小程序-自定义tabBar的实现
小程序购物车功能
var cart_info=[{'id':this.data.id,'cart_num':this.data.cart_num,'logo':this.data.good_info.logo,'market_price':this.data.good_info.market_price,'title':this.data.good_info.title,'checked':true}];
黄啊码
2021/09/26
8450
微信小程序实战–集阅读与电影于一体的小程序项目(八)
31.电影详情页面 movie-template.wxml <view class="movie-container" catchtap="onMovieTap" data-movieId="{{movieId}}"> movie.js onMovieTap:function(event) { var movieId = event.currentTarget.dataset.movieid; wx.navigateTo({ url: "movie-detail/movie-d
zhang_derek
2018/08/30
5490
微信小程序实战–集阅读与电影于一体的小程序项目(八)
微信小程序自定义登录
每次在输入框输入时,都会去触发该方法,并且带有参数,该参数(event)的 event.detail.value 值正是我们输入的最新内容,同时 event.currentTarget.id 是我们输入框设置的 id,正好可以用来区分 手机号码 和 密码。
乐心湖
2021/01/03
1.6K0
微信小程序自定义登录
小程序点击按钮弹出可填写框
这是项目里面一个简单的效果,小程序点击按钮弹出可填写框,摘下代码,方便之后遇到的时候可以直接拿来使用。 效果如下:
王小婷
2018/12/28
3.6K0
基于uniapp+vue3多端h5+小程序+App端直播商城
uniapp-welive一款基于uni-app+vue3+pinia+vk-uview等技术搭建跨端仿抖音直播商城项目。
andy2018
2024/01/02
8880
低代码可视化-商城小程序首页设计-代码生成器
在设计一个小程序的首页时,包含轮播图、通知栏和商品列表这三个元素是非常常见且有效的布局方式。这样的设计既能够吸引用户的注意力,又能够高效地展示信息和商品。
用户7154236
2024/10/11
1560
低代码可视化-商城小程序首页设计-代码生成器
微信小程序即时聊天对话窗口静态源码[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/146737.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/28
1.9K0
基于微信小程序云开发(校园许愿墙app)妄想替代学校的表白墙
随着移动端的不断发展,人们大部分的办公及生活应用都开始趋向于移动端。然而在2017年“微信之父”张小龙带领团队,开发了一款叫做微信小程序的东西,它的出现打破了人们认识移动端的隔膜,由以前的需要先下载app然后在开始工作的老式模式,逐渐的趋向于小程序app(无需下载)的形式。
淼学派对
2022/11/20
1.7K0
基于微信小程序云开发(校园许愿墙app)妄想替代学校的表白墙
微信小程序向左滑动删除操作(类仿微信、QQ)
上一个小程序的项目里面做过这个功能,当时没有记录下来,今天特意做了一个小的demo放在了github上面,下次在开发中遇到的话就可以直接拿下来代码复用了。效果很简单,类似于微信扣扣删除聊天栏的效果,想左滑动,出现删除按钮,点击即可删除。
王小婷
2018/12/24
3.7K1
微信小程序简单的用户页面模板
wxml <view class='index-contier'> <view class="index-center"> <view class="logo"> <open-data type="userAvatarUrl" class="userinfo" id="userinfo1"></open-data> </view> <view id="userinfo2"> <open-data type="userNickName" class="u
王小婷
2022/05/13
1.1K0
微信小程序简单的用户页面模板
在微信小程序中开发音效盒子功能,公开源码
网上看到别的小程序播放音效还需要钱,定眼一看,这不很简单吗?一个分类、分类下放音频的url,再播放出来就行,说干就干。最终成品如下:
一方
2025/02/22
1162
在微信小程序中开发音效盒子功能,公开源码
小程序之首页搭建——Flex布局
布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性
用户10196776
2023/10/17
5340
小程序之首页搭建——Flex布局
微信小程序实战--集阅读与电影于一体的小程序项目(一)
真正的数据肯定不可能像上面那样写在wxml文件里面,而是从服务器加载的数据,下面模拟从服务器加载数据。
zhang_derek
2018/08/30
1.2K0
微信小程序实战--集阅读与电影于一体的小程序项目(一)
微信小程序实现时间轴和地区列表的功能
这里有两条数据,一个是北京地区的,一个是杭州地区的,正好对应我们图上的地区。然后每条json数据里面包含一个学校list,比如北京地区有清华大学,北京大学,人民大学。而每个大学对象里又包含学校id,学校名,学校校徽。
编程小石头
2020/10/22
1.5K0
微信小程序实现时间轴和地区列表的功能
小程序-蒙版弹出窗
话不多说 上代码。 wxml: <view class="page"> <button bindtap="showMask"> 弹出 </button> <view catchtouchmove="preventTouchMove" class="alert-mask" wx:if="{{showModal}}"></view> <view class="modalDlg" wx:if="{{showModal}}"> <view class="modelTitle">我是标题</vie
九旬
2020/10/23
1.5K0
小程序-蒙版弹出窗
推荐阅读
相关推荐
小程序请假效果
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验