python后端结合uniapp与uview组件tabs,实现自定义导航按钮与小标签颜色控制

本文主要是介绍python后端结合uniapp与uview组件tabs,实现自定义导航按钮与小标签颜色控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实现效果(红框内):
在这里插入图片描述

后端api如下:

@task_api.route('/user/task/states_list', methods=['POST', 'GET'])
@visitor_token_required
def task_states(user):name_list = ['待接单', '设计中', '交付中', '已完成', '全部']data = []color = ['#F04864', '#F04864', '#F04864', '#19be6b', '#19be6b']c_n = 0for i in name_list:item = {'name': i,'badge': {'color': '#fff','bgColor': color[c_n],'value': get_task_states_num(i, user, False)}}data.append(item)c_n += 1return reg_func(200, data, '查询成功')

输出结果:

{"code": 200,"data": [{"badge": {"bgColor": "#F04864","color": "#fff","value": 0},"name": "待接单"},{"badge": {"bgColor": "#F04864","color": "#fff","value": 2},"name": "设计中"},{"badge": {"bgColor": "#F04864","color": "#fff","value": 11},"name": "交付中"},{"badge": {"bgColor": "#19be6b","color": "#fff","value": 22},"name": "已完成"},{"badge": {"bgColor": "#19be6b","color": "#fff","value": 38},"name": "全部"}],"msg": "查询成功","time": "2024-06-09 15:07:47"
}

这段代码定义了一个 Flask 路由,处理用户任务状态的获取。下面是对这段代码的详细解释:

路由定义和装饰器

@task_api.route('/user/task/states_list', methods=['POST', 'GET'])
@visitor_token_required
def task_states(user):
  • @task_api.route('/user/task/states_list', methods=['POST', 'GET']):这是一个路由装饰器,用来定义访问该函数的 URL 和方法。在这里,定义了一个访问路径 /user/task/states_list,支持 POSTGET 两种请求方法。
  • @visitor_token_required:这是一个自定义的装饰器,用来验证访问该路由的用户是否拥有合法的访问权限。通常,这个装饰器会检查用户的令牌(token),确保用户是经过认证的。
  • def task_states(user):定义了一个名为 task_states 的函数,并且 user 是一个参数。user 参数一般是从 @visitor_token_required 装饰器中获取到的经过验证的用户信息。

函数内部逻辑

name_list = ['待接单', '设计中', '交付中', '已完成', '全部']
data = []
color = ['#F04864', '#F04864', '#F04864', '#19be6b', '#19be6b']
c_n = 0
  • name_list:这是一个任务状态的列表,包含了可能的任务状态名称,如“待接单”、“设计中”、“交付中”、“已完成”和“全部”。
  • data:这是一个空列表,稍后将用来存储每个任务状态对应的数据信息。
  • color:这是一个颜色代码列表,每个任务状态对应一个背景颜色,用于标识任务状态的颜色。
  • c_n:这是一个计数器变量,用来遍历 color 列表的索引。

遍历状态列表并生成数据

for i in name_list:item = {'name': i,'badge': {'color': '#fff','bgColor': color[c_n],'value': get_task_states_num(i, user, False)}}data.append(item)c_n += 1
  • for i in name_list:遍历 name_list 列表中的每一个状态名称。
  • item:定义一个字典,存储当前任务状态的详细信息,包括状态名称 name 和一个徽章 badge
    • name:任务状态名称。
    • badge:一个包含颜色和数值信息的字典。
      • color:徽章上的文本颜色,这里固定为白色 #fff
      • bgColor:徽章的背景颜色,从 color 列表中按顺序获取。
      • value:调用 get_task_states_num 函数获取对应任务状态的数量,这个函数可能会查询数据库或其他数据源来获取 user 用户对应状态 i 的任务数量。
  • data.append(item):将构造好的 item 添加到 data 列表中。
  • c_n += 1:计数器 c_n 加 1,用于下一个任务状态的颜色获取。

返回结果

return reg_func(200, data, '查询成功')
  • reg_func:这是一个自定义函数,用来格式化 API 的返回结果。
    • 200:表示 HTTP 状态码 200,通常表示请求成功。
    • data:传入的任务状态列表数据。
    • '查询成功':消息,表示查询操作成功。

主要逻辑总结

  • 验证用户身份。
  • 生成一个任务状态列表,每个状态包含状态名称、颜色和对应任务数量。
  • 返回生成的任务状态列表数据。

代码的主要目的

这个路由用于返回用户任务的不同状态及其对应的任务数量,并为每个状态设置特定的颜色,便于前端展示。

uniapp代码如下:

<u-tabs :list="states_list" lineWidth="50" @click="click_tabs" :scrollable="false"itemStyle="padding:20rpx 2rpx;"></u-tabs>

这段代码是一个 Vue.js 模板中的组件调用,具体使用了一个自定义的 <u-tabs> 组件来显示标签页。下面是对这段代码的详细解释:

组件 <u-tabs>

<u-tabs> 组件是一个标签页组件,通常用于在单个页面上显示多个标签,以实现内容的切换。这个组件有几个属性和事件,用于配置和处理标签的行为。

属性解释

<u-tabs :list="states_list" lineWidth="50" @click="click_tabs" :scrollable="false"itemStyle="padding:20rpx 2rpx;">
</u-tabs>
1. :list="states_list"
  • :list:这是一个绑定属性,通常用于将数据传递给子组件。在 Vue 中,前缀 : 表示属性值是一个 JavaScript 表达式。
  • states_list:这是一个 Vue 实例中的数据属性,它包含了用于生成标签的数据列表。例如,states_list 可能是一个对象数组,每个对象表示一个标签。

每个对象可以包含标签名称和对应的值或其他属性,具体内容取决于 u-tabs 组件的实现。

2. lineWidth="50"
  • lineWidth:这是一个定义标签下方线条宽度的属性,单位一般是像素 (px)。
  • 50:设置线条宽度为 50 像素。
3. @click="click_tabs"
  • @click:这是一个事件绑定,表示当用户点击某个标签时,会触发 click_tabs 方法。
  • click_tabs:这是 Vue 实例中的一个方法,用于处理点击事件。
methods: {click_tabs(tabIndex) {console.log("标签点击事件,标签索引:", tabIndex);// 根据 tabIndex 处理标签点击后的逻辑}
}

点击标签时,这个方法会接收一个参数,通常是被点击标签的索引或相关信息。

4. :scrollable="false"
  • :scrollable:这是一个布尔属性,控制标签是否可以滚动。在 Vue 中,前缀 : 表示属性值是一个 JavaScript 表达式。
  • false:设置标签不可滚动,即标签不会超出容器的宽度。
5. itemStyle="padding:20rpx 2rpx"
  • itemStyle:这是一个内联样式属性,直接应用于每个标签项。
  • "padding:20rpx 2rpx":定义了每个标签的内边距,20rpx 表示上下内边距为 20 像素,2rpx 表示左右内边距为 2 像素。rpx 是一种响应式像素单位,常用于小程序开发中,可以根据屏幕宽度自适应调整。

组件的功能

  • 显示 states_list 中定义的标签,每个标签可以是一个不同的任务状态。
  • 标签的下方线条宽度为 50 像素。
  • 用户点击标签时,触发 click_tabs 方法进行处理。
  • 标签项不可滚动,标签内容宽度受限于容器宽度。
  • 每个标签项有固定的内边距,控制标签的显示样式。

应用场景

这种组件通常用于用户界面中的导航或内容切换,例如在一个任务管理系统中,用于切换显示不同状态的任务列表。

代码解释由chatGPT协助完成

这篇关于python后端结合uniapp与uview组件tabs,实现自定义导航按钮与小标签颜色控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1045824

相关文章

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级