当前位置: 首页 > news >正文

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,实现自定义导航按钮与小标签颜色控制

实现效果&#xff08;红框内&#xff09;&#xff1a; 后端api如下&#xff1a; task_api.route(/user/task/states_list, methods[POST, GET]) visitor_token_required def task_states(user):name_list [待接单, 设计中, 交付中, 已完成, 全部]data []color [#F04864, …...

mingw如何制作动态库附python调用

1.mingw和msvc g -fpic HelloWorld.cpp -shared -o test.dllg -L . -ltest .\test.cpp 注意-L后面的.挨不挨着都行&#xff0c;-l不需要-ltest.dll&#xff0c;只需要-ltest 2.dll.cpp extern "C" {__declspec(dllexport) int __stdcall add(int a, int b) {return…...

Vue学习|Vue快速入门、常用指令、生命周期、Ajax、Axios

什么是Vue? Vue 是一套前端框架&#xff0c;免除原生JavaScript中的DOM操作&#xff0c;简化书写 基于MVVM(Model-View-ViewModel)思想&#xff0c;实现数据的双向绑定&#xff0c;将编程的关注点放在数据上。官网:https://v2.cn.vuejs.org/ Vue快速入门 打开页面&#xff0…...

Python基础教程(八):迭代器与生成器编程

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…...

Oracle10.2.0.1冷备迁移之_数据文件拷贝方式

由于阿里云机房要下架旧服务器&#xff0c;单位未购买整机迁移服务&#xff0c;且业务较老不兼容Oracle11g&#xff0c;所以新购买一台新服务器进行安装Oracle10.2.0.1 &#xff0c;后续再将数据迁移到新服务器上。 id 数据库版本 操作系统版本 实例名 源库 115.28.242.25…...

智能合约中外部调用漏洞

外部调用 &#xff1a; 在智能合约开发中&#xff0c;调用不受信任的外部合约是一个常见的安全风险点。这是因为&#xff0c;当你调用另一个合约的函数时&#xff0c;你实际上是在执行那个合约的代码&#xff0c;而这可能会引入你未曾预料的行为&#xff0c;包括恶意行为。下面…...

转型AI产品经理(4):“认知负荷”如何应用在Chatbot产品

认知负荷理论主要探讨在学习过程中&#xff0c;人脑处理信息的有限容量以及如何优化信息的呈现方式以促进学习。认知负荷定律认为&#xff0c;学习者的工作记忆容量是有限的&#xff0c;而不同类型的认知任务会对工作记忆产生不同程度的负荷&#xff0c;从而影响学习效果。以下…...

【C++11】常见的c++11新特性(一)

文章目录 1. C11 简介2. 常见的c11特性3.统一的列表初始化3.1initializer_list 4. decltype与auto4.1decltype与auto的区别 5.nullptr6.右值引用和移动语义6.1左值和右值6.1.1左值的特点6.1.2右值的特点6.1.3右值的进一步分类 6.2左值引用和右值引用以及区别6.2.1左值引用6.2.2…...

牛客周赛 Round 46 题解 C++

目录 A 乐奈吃冰 B 素世喝茶 C 爱音开灯 D 小灯做题 E 立希喂猫 F 祥子拆团 A 乐奈吃冰 #include <iostream> #include <cstring> #include <algorithm> #include <cmath> #include <queue> #include <set> #include <vector>…...

9.3 Go 接口的多态性

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…...

Java通过字符串字段匹配形成树形结构

Java通过字符串字段匹配形成树形结构 文章目录 Java通过字符串字段匹配形成树形结构数据表模拟数据解决办法:1、domian 类:2、Node层(形成树形关系):3、controller 层4、Util 工具类1、BeanCopierUtil4、Mapper5、Manager(用来组装树形结构)6、测试:有的时候我们形成树形不…...

数字孪生智慧水利:精准管理与智能决策的新时代

图扑数字孪生技术在智慧水利中的应用&#xff0c;通过虚拟模型与真实水利系统的无缝连接&#xff0c;实现对水资源和水利工程的全面监控和精细管理。实时数据采集与动态模拟提升了水利系统的预测和响应能力&#xff0c;从洪水预警到水质监测&#xff0c;数字孪生助力各项决策更…...

基于ChatGLM3的本地问答机器人部署流程

基于ChatGLM3的本地问答机器人部署流程 前言一、确定文件结构1.新建文件夹储存本地模型2.下载源码和模型 二、Anaconda环境搭建1.创建anaconda环境2.安装相关库3.设置本地模型路径4.启动 三、构建本地知识库1.下载并安装postgresql2.安装c库3.配置向量插件 四、线上运行五、 全…...

归并排序——逆序数对的统计

逆序数对的统计 题目描述 运行代码 #include <iostream> using namespace std; #define LL long long const int N 1e5 5; int a[N], tmp[N]; LL merge_sort(int q[], int l, int r) {if (l > r)return 0; int mid l r >> 1; LL res merge_sort(q, l,…...

基于截图和模拟点击的自动化压测工具开发(MFC)

1.背景 想对一个MFC程序做自动压测功能&#xff0c;根据判断程序界面某块区域是否达到预定状态&#xff0c;来自动执行鼠标点击或者键盘输入的操作&#xff0c;以解决测试人员需要重复手动压测问题。 1.涉及的技术 串口控制&#xff0c;基于MFC橡皮筋类(CRectTracker)做一个…...

力扣每日一题 6/10

881.救生艇[中等] 题目&#xff1a; 给定数组 people 。people[i]表示第 i 个人的体重 &#xff0c;船的数量不限&#xff0c;每艘船可以承载的最大重量为 limit。 每艘船最多可同时载两人&#xff0c;但条件是这些人的重量之和最多为 limit。 返回 承载所有人所需的最小船…...

[知识点] 内存顺序属性的用途和行为

C标准库中定义了以下几种内存顺序属性&#xff1a; std::memory_order_relaxedstd::memory_order_consumestd::memory_order_acquirestd::memory_order_releasestd::memory_order_acq_relstd::memory_order_seq_cst 1. std::memory_order_relaxed 定义&#xff1a;不提供同步…...

JAVA Mongodb 深入学习(二)索引的创建和优化

一、常用索引类型 1、单个索引 单个索引的创建 db.你的表名.createIndex({"你的字段名":1}) 单个索引的创建且是唯一索引 db.你的表名.createIndex({"你的字段名":1}),{ unique: true }) 2、复合索引 将多个过滤的字段&#xff0c;做成索引&#xff0c;…...

转让北京劳务分包地基基础施工资质条件和流程

地基基础资质转让流程是怎样的?对于企业来说&#xff0c;资质证书不仅是实力的证明&#xff0c;更是获得工程承包的前提。而在有了资质证书后&#xff0c;企业才可以安心的准备工程投标&#xff0c;进而在工程竣工后获得收益。而对于从事地基基础工程施工的企业&#xff0c;需…...

Python基础——字符串

一、Python的字符串简介 Python中的字符串是一种计算机程序中常用的数据类型【可将字符串看作是一个由字母、数字、符号组成的序列容器】&#xff0c;字符串可以用来表示文本数据。 通常使用一对英文的单引号&#xff08;&#xff09;或者双引号&#xff08;"&#xff09;…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...