前端实习手记(7):立秋快乐
这周相比上周感觉挺好的哈哈哈,可能只有自己感觉蛮好的,旁边师父忙的飞起了要,不仅赶工作还要回答我乱七八糟的问题(心疼一秒)。这周也是立秋&七夕咯,立秋快乐哇家人们(虽然还是很热嘛)
总结
- 上周新增自定义表单对话框修改完善
- 更多筛选模特对话框 完成
- Vue.js
筛选模特对话框
功能概述
- 筛选模特的性别地域信息,选中模特,点击确定会将模特添加模特列表的最前面并关闭对话框,点击删除会删除模特并刷新列表。
思路
- 框架搭建(这点就不说了)
- 筛选逻辑
- 刷新列表
- 删除逻辑
- 取消与确定添加逻辑
一、筛选逻辑
- 绑定 sexList 数据列表,并将 state.sexCheckedList 作为当前选中的值列表。
- 在选择器中做出选择时,触发 onSexChecked 和 onAreaChecked 方法。
- 事件处理方法:onSexChecked: 当用户选择性别时,此方法被调用,并更新 state.sexCheckedList
- 携带筛选到的列表数据id,请求后端返回数据
- 这里要注意map的使用,在处理后端返回的数据时经过map处理会返回一个数组,后面需要把list赋给数组类型的datalist,所以这里使用map。
<script setup>...const onSexChecked = (checkedList: Array<SelectInfo>) => {state.sexCheckedList = checkedList;};const onAreaChecked = (checkedList: Array<SelectInfo>) => {state.areaCheckedList = checkedList;};const modelData = async () => {const path = '/resource/xxxx';const params = {per_page: 35,sex: state.sexCheckedList.map((i) => i.id).join(),region: state.areaCheckedList.map((i) => i.id).join(),};const res = await Http.get(path, params);return {list: res.data.list.data.map((i: any) => {return {id: i.id,path: i.image_path,name: i.name,type: i.type,age_group: i.age_group,sex: i.sex,region: i.region,delete: i.source === 'Supplier',};}),currentPage: res.data.list.current_page,perPage: res.data.list.per_page,totalPage: res.data.list.total,};};
</script>
<template><AModal>...<div><Select:data-list="sexList":checked-list="state.sexCheckedList"@checked="onSexChecked"/><Select:data-list="areaList":checked-list="state.areaCheckedList"@checked="onAreaChecked"/></div>...</AModal>
</template>
二、刷新列表
- 将后端返回数据赋给我们使用的字段
- 在组件一挂载时就更新列表
<script setup>...onMounted(() => {getModelList();});...const getModelList = async () => {const { list, currentPage, perPage, totalPage } = await modelData();tableSet.currentPage = currentPage;tableSet.perPage = perPage;tableSet.totalPage = totalPage;state.dataList = list;};
</script>
三、删除逻辑
- 点击删除图标,触发相应事件
- 获取所选模特的id
- 携带参数发送请求
- 再次刷新列表
const modelDeleted = async (modelInfo: ModelInfo) => {state.remove = true;console.log('modelDeleted');const path = '/resource/xxx';const params = {id: modelInfo.id,};await Http.post(path, params);getModelList();
};
四、取消与确定
- 这里还是使用了emits将事件交由父组件监听并执行相应的方法。
- 定义emits: 在子组件的选项中定义 emits 选项来声明组件可以触发的事件名称。
- 触发事件: 使用 $emit 方法来触发这些事件,并传递相应的参数。
- 父组件使用@监听事件,并执行相应的处理函数。
<script setup>...const handleCancel = () => {emits('cancel', state.remove);};const submitModel = () => {emits('submit', state.checked);};...
</script>
<template>...<AButton @click="handleCancel">取消</AButton><AButton type="primary" @click="submitModel">生成</AButton>...
</template>
- 完整代码
<script lang="ts" setup>import { ref, onMounted } from 'vue';import ModelInfo from './definition/ModelInfo';import Select from './Select.vue';import PicItem from './PicItem.vue';import SelectInfo from './definition/SelectInfo';import sexList from './data/sexList';import areaList from './data/areaList';const emits = defineEmits(['update:checkedList', 'cancel', 'submit']);const state = reactive({remove: false,dataList: [] as Array<ModelInfo>,sexCheckedList: [] as Array<SelectInfo>,areaCheckedList: [] as Array<SelectInfo>,checked: {} as ModelInfo,});const onSexChecked = (checkedList: Array<SelectInfo>) => {state.sexCheckedList = checkedList;};const onAreaChecked = (checkedList: Array<SelectInfo>) => {state.areaCheckedList = checkedList;};const modelDeleted = async (modelInfo: ModelInfo) => {state.remove = true;console.log('modelDeleted');const path = '/xxxx';const params = {id: modelInfo.id,};await Http.post(path, params);getModelList();};const onChecked = (picInfo: ModelInfo, b: boolean) => {state.checked = picInfo;};const tableSet = reactive({currentPage: 1,perPage: 1,totalPage: 200,});onMounted(() => {getModelList();});const handleCancel = () => {emits('cancel', state.remove);};const submitModel = () => {emits('submit', state.checked);};const onChange = (page, pageSize) => {getModelList();};const modelData = async () => {const path = '/resource/xxxx';const params = {per_page: 35,sex: state.sexCheckedList.map((i) => i.id).join(),region: state.areaCheckedList.map((i) => i.id).join(),};const res = await Http.get(path, params);return {list: res.data.list.data.map((i: any) => {return {id: i.id,path: i.image_path,name: i.name,type: i.type,age_group: i.age_group,sex: i.sex,region: i.region,delete: i.source === 'Supplier',};}),currentPage: res.data.list.current_page,perPage: res.data.list.per_page,totalPage: res.data.list.total,};};const getModelList = async () => {const { list, currentPage, perPage, totalPage } = await modelData();tableSet.currentPage = currentPage;tableSet.perPage = perPage;tableSet.totalPage = totalPage;state.dataList = list;};
</script>
<template><div><AModal@cancel="handleCancel"><div class="select-model"><Select:data-list="sexList":checked-list="state.sexCheckedList"@checked="onSexChecked"/><Select:data-list="areaList":checked-list="state.areaCheckedList"@checked="onAreaChecked"/></div><!-- 模特列表 --><div class="select-list"><PicItemv-for="picInfo in state.dataList":key="picInfo.id":pic-info="picInfo":checked="state.checked.id === picInfo.id"@update:checked="(b) => onChecked(picInfo, b)"@model-deleted="modelDeleted"/></div><!-- 分页器 --><div><APaginationv-model:current="tableSet.currentPage"v-model:page-size="tableSet.perPage"show-quick-jumper:total="tableSet.totalPage":show-total="showTotalFunc"@change="onChange"/></div><!-- 生成取消按钮 --><template #footer><AButton @click="handleCancel">取消</AButton><AButton type="primary" @click="submitModel">生成</AButton></template></AModal></div>
</template>
写在最后
- 又是熬夜的一天,一到晚上精神就好起来了(现在还是有点困了)
- 论实习遇到神仙师父什么感受哈哈哈,庆幸自己实习遇到的人都蛮好!开心开心(嘻嘻)
- 潦草的周报啊啊怎么写嘛!(不嘻嘻)
- 滚去睡觉了,开启第八周咯(马上俩月了啊啊怎么怎么这么快)
相关文章:
前端实习手记(7):立秋快乐
这周相比上周感觉挺好的哈哈哈,可能只有自己感觉蛮好的,旁边师父忙的飞起了要,不仅赶工作还要回答我乱七八糟的问题(心疼一秒)。这周也是立秋&七夕咯,立秋快乐哇家人们(虽然还是很热嘛&…...
感恩放下,笑对人生,在人生的长河中,每一天都是独特的篇章,或顺心如意,或充满挑战
在人生的长河中,每一天都是独特的篇章,或顺心如意,或充满挑战。然而,无论今日的经历如何,我们都应怀着感恩与放下的心态,因为人生的旅程远不止这短暂的一天,明天依然充满希望,等待我们继续努力前行。 生活,犹如一场变幻莫测的舞台剧,顺心之时,我们仿佛置身于温暖的…...
URLSession之初窥门径
NSURLSession 于 2013 年随 iOS 7 的发布一起面世,苹果将其定位为 NSURLConnection 的替代者。我们使用最广泛的第三方框架如 AFNetworking 和 SDWebImage 的最新版也都已经全面切换至 NSURLSession。 NSURLSession 不仅仅指代同名类 NSURLSession,它还…...
ios创建控制器的3种方法实现页面跳转
ios遵守mvc设计模式,下面介绍创建控制器viewcontroller的几种方法,来实现页面的跳转 1.纯代码创建 // // AppDelegate.m // study2024 // // Created by zhifei zhu on 2024/8/7. //#import "AppDelegate.h" #import "MyViewContro…...
Android逆向题解-boomshakalaka-3-难度5
这个app 是一个cocos游戏,没有用脚本实现,纯c实现。 题目描述:play the game, get the highest score 题目要求是玩游戏得到最高分就可以得到flag,是写到配置文件的,初始flag值看着是base编码的。 核心代码在so里面的ControlLay…...
Linux(Ubuntu 22.04)系统中固定串口
Linux(Ubuntu 22.04)系统中固定串口 文章目录 前言正文查看linux串口信息修改udev固化串口校验是否修改完成 注意 前言 在Linux系统中固定串口(通常指的是串行通信接口,如/dev/ttyS0或/dev/ttyUSB0)的原因有几个方面&…...
LeetCode - 209 - 长度最小的子数组
力扣209题 题目描述:长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度**。**如果不存在符合条件的子数组&…...
探索空间计算与VR中的手势跟踪新纪元:XHand框架详解
在虚拟现实(VR)和扩展现实(XR)技术日新月异的今天,手势跟踪作为实现沉浸式体验的关键技术之一,正逐步从概念走向成熟。今天,我们将深入探索一个创新的框架——XHand,它以其卓越的性能和先进的技术亮点,为空间计算与VR领域的手势跟踪带来了全新的解决方案。 XHand框架…...
leetcode + 项目复习
上午 Leetcode算法 参考文章——代码随想录 1. KMP 概念 主要应用 字符串匹配 主要思想 根据之前匹配的信息,当发现字符串不匹配时,避免从头开始匹配。 什么是前缀表(next数组、prefix) 是用来回退的,当文本串和…...
树莓派4/5:设置apt、pip、conda首选清华镜像源
一、教程简介 在中国大陆地区,使用清华镜像源可以显著缩短资源下载时间。 本教程介绍如何将清华镜像源设置为树莓派的apt、pip、conda下载的首选项(默认项)。其中,apt和pip为树莓派系统自带,conda则需要安装miniforg…...
NoSQL 之Redis集群模式
目录 案例概述 redis工作模式 主从模式 哨兵模式 redis cluster模式 Redis集群介绍 Redis集群的优势 Redis集群的实现方法 Redis-Cluster数据分片 Redis-Cluster的主从复制模型 Redis集群部署 案例部署 安装redis 检查redis的状态 修改配置文件 重启启动redis服…...
oracle rac
1、app连接oracle rac集群 连接到 Oracle RAC(Real Application Clusters)的多种配置方式 1. 使用 JDBC 连接字符串: 使用 JDBC 连接字符串是连接 Oracle RAC 的常见方式。连接字符串的格式如下: jdbc:oracle:thin:(DESCRIPTION…...
计算机毕业设计Python深度学习房价预测 房价可视化 链家爬虫 房源爬虫 房源可视化 卷积神经网络 大数据毕业设计 机器学习 人工智能 AI
Python深度学习房价预测系统开题报告 一、研究背景与意义 随着城市化进程的加速和房地产市场的不断发展,房价成为影响人们生活质量的重要因素之一。准确预测房价不仅有助于政府制定科学的房地产政策,还能为开发商提供市场参考,同时帮助购房…...
【Linux】学习Linux,需要借助具象化的思维
指令与图形化界面 导读一、命令行与图形化界面二、命令行与图形化界面的发展历程1.2.1 打字机的起源1.2.2 肖尔斯和格利登型打字机1.2.3 鼠标的发明1.2.4 图形化界面(GUI)的发展 三、命令行与图形化之间的联系3.1 图形化界面的人机交互3.2 命令行界面的人…...
R语言贝叶斯方法在生态环境领域技术教程
原文链接:R语言贝叶斯方法在生态环境领域技术教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247612056&idx5&snb170122cf5052cc7cb2d858606b9f158&chksmfa82777fcdf5fe69eec092410530e2900c98bcbb84e3d33c823705c948b4db96545bf282747a…...
mojo实现高阶函数(algorithm)
functional 实现高阶函数。 您可以从 algorithm 包导入这些 API。例如: from algorithm import map别名: Static1DTileUnitFunc = fn[Int](Int, /) capturing -> None: Signature of a 1d tiled function that performs some work with a static tile size and an off…...
先进制造aps专题二十四 云平台排产aps的方案设计
云平台排产aps的方案设计 针对对象是有排产需求无需定制的中小型工厂企业 一 网站功能(b/s架构) 1 前端界面 客户登录 排产项目管理 基础数据(产品资料,产品工艺,工作日历,生产资源,工艺能力…...
JavaScript 逆向技巧总结
本节属于知识总结,只是对思路的梳理,不对具体内容进行展开 JS 逆向可以分为三大部分: 寻找入口, 调试分析, 模拟执行 寻找入口: 这是非常关键的一步,逆向在大部分情况下就是找一些加密参数到底…...
linux反向代理原理:帮助用户更好地优化网络架构
Linux反向代理原理详解 反向代理是一种在网络架构中常用的技术,尤其在Linux环境下被广泛应用。它可以帮助实现负载均衡、安全防护和请求缓存等功能。本文将深入探讨Linux反向代理的原理、工作机制以及其应用场景。 1. 什么是反向代理 反向代理是指代理服务器接收客…...
开源DevOps工具链管理:DevStream
DevStream:简化DevOps,加速创新- 精选真开源,释放新价值。 概览 DevStream,一个开源的DevOps工具链管理器(DTM),由merico-dev团队精心打造,现已加入CNCF大家庭,并在devs…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
spring boot使用HttpServletResponse实现sse后端流式输出消息
1.以前只是看过SSE的相关文章,没有具体实践,这次接入AI大模型使用到了流式输出,涉及到给前端流式返回,所以记录一下。 2.resp要设置为text/event-stream resp.setContentType("text/event-stream"); resp.setCharacter…...
PLC入门【4】基本指令2(SET RST)
04 基本指令2 PLC编程第四课基本指令(2) 1、运用上接课所学的基本指令完成个简单的实例编程。 2、学习SET--置位指令 3、RST--复位指令 打开软件(FX-TRN-BEG-C),从 文件 - 主画面,“B: 让我们学习基本的”- “B-3.控制优先程序”。 点击“梯形图编辑”…...
作为点的对象CenterNet论文阅读
摘要 检测器将图像中的物体表示为轴对齐的边界框。大多数成功的目标检测方法都会枚举几乎完整的潜在目标位置列表,并对每一个位置进行分类。这种做法既浪费又低效,并且需要额外的后处理。在本文中,我们采取了不同的方法。我们将物体建模为单…...
安宝特案例丨寻医不再长途跋涉?Vuzix再次以AR技术智能驱动远程医疗
加拿大领先科技公司TeleVU基于Vuzix智能眼镜打造远程医疗生态系统,彻底革新患者护理模式。 安宝特合作伙伴TeleVU成立30余年,沉淀医疗技术、计算机科学与人工智能经验,聚焦医疗保健领域,提供AR、AI、IoT解决方案。 该方案使医疗…...
慢慢欣赏linux 之 last = switch_to(prev, next)分析
last switch_to(prev, next); 为什么需要定义last作为调用switch_to之前的prev的引用 原因如下: struct task_struct * switch_to(struct task_struct *prev,struct task_struct *next) {... ...return cpu_switch_to(prev, next);> .global cpu_switch_tocpu_…...
