记录页面——一个蛮好看的登录页(uni-app)
效果图

<template><view class="container"><view class="flex-col login-box"><view class="flex-col" style="width: 80%"><view class="flex-col"><text class="welcome-text-font">嗨~</text><text class="welcome-text-font welcome-text">现在加入我们吧!</text></view><text class="welcome-title text_99">欢迎来到XXXX,</text><text class="welcome-title text_102">有很多人在期盼你的到来呢</text><uni-forms :modelValue="formData" ref="form" :rules="rules"><uni-forms-item label="" name="username"><view class="password-box flex-row"><view class="password-input items-center flex-row"><view class="password-font"><inputtype="text"v-model="formData.username"placeholder="请输入账号"/></view></view></view></uni-forms-item><uni-forms-item label="" name="password"><view class="password-box flex-row"><viewclass="password-input items-center flex-row justify-between"><view class="password-font"><inputclass="password-input2":type="isShowPassword ? 'text' : 'password'"v-model="formData.password"placeholder="请输入密码"/></view><imageclass="shrink-0 image_53"src="../../assets/icon/see.png"@click="checkPassword"/><imagev-if="false"class="shrink-0 image_53"src="../../assets/icon/no_see.png"@click="checkPassword"/></view></view></uni-forms-item><uni-forms-item label="" name="authCode"><view class="password-box flex-row"><view class="password-input items-center flex-row"><view class="password-font"><inputtype="text"v-model="formData.authCode"placeholder="密钥(可选)"/></view></view></view></uni-forms-item></uni-forms></view><view class="button-box flex-row justify-center"><buttonclass="login-button flex-row justify-center items-center"@click="submitForm":loading="loading"type="primary">登录→</button></view></view><!-- <view class="content"><uni-forms :modelValue="formData" ref="form" :rules="rules"><uni-forms-item label="账号" name="username"><inputtype="text"v-model="formData.username"placeholder="请输入账号"/></uni-forms-item><uni-forms-item label="密码" name="password"><inputtype="password"v-model="formData.password"placeholder="请输入密码"/></uni-forms-item></uni-forms><button @click="submitForm" :loading="loading" type="primary">登录</button></view> --></view>
</template><script>
import * as dd from "dingtalk-jsapi";
import { exemption, longinByUsername } from "@/api/login";export default {data() {return {formData: {username: "",password: "",authCode: "",},loading: false,rules: {username: {rules: [{required: true,errorMessage: "请输入账号",},],},password: {rules: [{required: true,errorMessage: "请输入密码",},],},},isShowPassword: false // 是否显示密码};},onReady() {// 需要在onReady中设置规则this.$refs.form.setRules(this.rules);returnif (dd.env.platform !== "notInDingTalk") {dd.ready(() => {dd.runtime.permission.requestAuthCode({corpId: "corpId",onSuccess: (info) => {exemption(info.code).then((res) => {console.log("登录结果", res.data.token);this.getUserInfo(res.data.token);}).catch((cth) => {console.log("不管如和的登录结果", cth);});},onFail: (err) => {alert("fail");},});});}},methods: {submitForm(form) {this.$refs.form.validate().then((res) => {console.log(res);longinByUsername(res).then((resp) => {// console.log(resp);if (resp.code === 200) {this.getUserInfo(resp.data.token);}});}).catch((err) => {console.log('表单错误信息:', err);});},getUserInfo(token) {//将token存到本地uni.setStorageSync("token", token);//获取用户信息this.$request({url: "/auth/currentUserInfo",method: "POST",data: token,}).then((res) => {// console.log(res);const id = res.data.user.id;uni.setStorageSync("id", id);});uni.showToast({icon: "success",title: "登陆成功",});setTimeout(function () {uni.navigateTo({url: "/pages/index/index",});}, 1000);clearTimeout();},checkPassword() {this.isShowPassword = !this.isShowPassword}},
};
</script><style scoped lang="scss">
.container {font-size: 14px;width: 100vw;height: 100vh;background-color: #ebecf3;
}
::v-deep .uni-forms-item__content[data-v-61dfc0d0] {display: flex;align-items: center;
}.login-box {width: 100%;overflow: hidden;align-items: center;.password-box {width: 100%;padding-top: 15px;.password-input {width: 100%;border-radius: 50px;background-color: #ecf2ff;height: 50px;padding: 0 20px;.password-font {font-size: 14px;line-height: 13px;color: rgba(52, 57, 101, 0.5);.password-input2 {background-color: rgba(52, 57, 101, 0);color: rgba(52, 57, 101, 0.5);font-size: 14px;border: none; /* 去掉边框 */outline: none; /* 去掉聚焦时的轮廓 */}}}}.button-box {width: 100%;.login-button {background-color: #4963f4;width: 80%;height: 50px;border-radius: 50px;margin-top: 120px;}}
}
.welcome-text-font {font-size: 30px;font-family: NotoSansSC;line-height: 37px;font-weight: 700;color: rgb(52, 57, 101);
}
.welcome-text {margin-left: 18px;
}
.welcome-title {font-size: 12px;font-family: NotoSansSC;line-height: 14px;color: rgb(52, 57, 101);opacity: 0.5;
}
.text_102 {margin-left: 8px;
}
.text_99 {margin-top: 16px;
}
.image_53 {opacity: 0.5;width: 20px;height: 20px;
}
</style>
相关文章:
记录页面——一个蛮好看的登录页(uni-app)
效果图 <template><view class"container"><view class"flex-col login-box"><view class"flex-col" style"width: 80%"><view class"flex-col"><text class"welcome-text-font&qu…...
Android文件选择器[超级轻量级FilePicker测试没有问题][挣扎解决自带文件管理器获取不到绝对地址问题而是返回msf%3A1000038197]
超级轻量级FilePicker测试没有问题 本文摘录于:https://blog.csdn.net/gitblog_00365/article/details/141449437只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人! 今天真的是发了疯的找文件管理器,因为调用系统自带的文件管理…...
【论文速读】| RED QUEEN: 保护大语言模型免受隐蔽多轮越狱攻击
基本信息 原文标题:RED QUEEN: Safeguarding Large Language Models against Concealed Multi-Turn Jailbreaking 原文作者:Yifan Jiang, Kriti Aggarwal, Tanmay Laud, Kashif Munir, Jay Pujara, Subhabrata Mukherjee 作者单位:Hippocr…...
39.第二阶段x86游戏实战2-HOOK实现主线程调用
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…...
wordpress argon主题美化方面
1、页面前端额外CSS: /*字体*/ font-face {font-family: myFont1; src:url(https://blog.yangmumu.com/css/fonts/Dancing.ttf) ;font-display: swap; } font-face {font-family: myFont2; src:url(https://blog.yangmumu.com/css/fonts/Regular.ttf) ;font-displa…...
qt QRadioButton详解
QRadioButton 是一个可以切换选中(checked)或未选中(unchecked)状态的选项按钮。单选按钮通常呈现给用户一个“多选一”的选择,即在一组单选按钮中,一次只能选中一个按钮。 重要方法 QRadioButton(QWidget…...
Qt 最小化,最大化,关闭窗口
Qt 最小化,最大化 在Qt中,你可以使用QWidget类提供的方法来实现窗口的最小化、最大化等操作。 最小化窗口 你可以使用QWidget的showMinimized()方法来最小化窗口。这将隐藏窗口并将其显示为系统托盘区域的图标。 connect(ui->btnMin,&QPushButton::click…...
【vue项目中添加告警音频提示音】
一、前提: 由于浏览器限制不能自动触发音频文件播放,所以实现此类功能时,需要添加触发事件,举例如下: 1、页面添加打开告警声音开关按钮 2、首次进入页面时添加交互弹窗提示:是否允许播放音频 以上两种方…...
百度SEO分析实用指南 提升网站搜索排名的有效策略
内容概要 在数字化时代,搜索引擎优化(SEO)已经成为提升网站曝光度的关键工具。本指南将带您了解SEO的基本知识,帮助您在复杂的网络环境中立足。我们将从关键词优化开始,重点讲解如何选择合适的关键词来提高搜索引擎排…...
高并发场景下的性能测试方法!
在现代互联网应用中,高并发场景下的性能测试显得尤为重要。无论是电商平台的秒杀活动,还是社交应用的突发流量,都需要确保系统能够在高并发情况下稳定运行。本文将详细介绍高并发场景下的性能测试方法,并提供具体的方案和实战演练…...
杂项——USB键盘与鼠标流量分析——BUUCTF——流量分析
第一次做USB键盘与鼠标流量分析的题目,现在来好好做一个总结 1. 基础知识 USB流量指的是USB设备接口的流量,攻击者能够通过监听usb接口流量获取键盘敲击键、鼠标移动与点击、存储设备的铭文传输通信、USB无线网卡网络传输内容等等。 在正式介绍 USB H…...
Java如何实现企业微信审批流程
大家好,我是 V 哥。最近的一个项目中,用到企业微信的审批流程,整理出来分享给大家。在企业微信中实现审批流程可以通过调用企业微信的开放API完成,企业微信提供了审批应用接口,用于创建审批模板、发起审批流程以及获取…...
GEE app:在地图上构建一个可以查看局部的小窗
目录 简介 函数 ee.Geometry.MultiLineString(coords, proj, geodesic, maxError) Arguments: Returns: Geometry.MultiLineString getBounds(asGeoJSON) Arguments: Returns: GeoJSONGeometry|List|String setControlVisibility(all, layerList, zoomControl, scaleC…...
leetcode71:简化路径
给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 / 开头),请你将其转化为 更加简洁的规范路径。 在 Unix 风格的文件系统中规则如下: 一个点 . 表示当前目录本身。此外,两个点 ..…...
nodejs入门教程4:nodejs创建第一个应用
1. 安装 Node.js 首先,确保你的计算机上已经安装了 Node.js。如果还没有安装,可以从官方网站(https://nodejs.org)下载并安装最新的 LTS 版本。安装完成后,你可以在命令行或终端中运行以下命令来验证安装:…...
启用 iPhone 原生的五笔输入
聊聊如何在 iOS 中使用原生的五笔输入法 本文虽然介绍的是如何添加五笔键盘,其实其他键盘(双拼,外语键盘、第三方输入法)也是类似的添加方式。 使用原生的理由 虽然之前的文章列了不少第三方的五笔输入法,但其实…...
这个工具让你轻松开发一个带AI功能的Notion
这个工具让你轻松开发一个带AI功能的Notion Plate 是一款由 AI 加持的富文本编辑器,旨在帮助开发者创建功能强大的 WYSIWYG 文本编辑工具。本文将介绍 Plate 的基本信息、特点、以及如何快速上手使用。 软件简介 Plate 由 udecode 开发,基于 React 和 S…...
光耦合器的关键作用和创新---腾恩科技
光耦合器或光隔离器已成为电路中必不可少的器件,它允许信号在无需直接电接触的情况下跨不同电压域传输。这种隔离能力对于保护低压元件免受高压电路的潜在损坏至关重要。本文将仔细研究光耦合器在当今技术中发挥的独特作用,并探讨其在各种应用中不断扩展…...
穿越死锁的迷雾:pthread_mutex_lock的终极挑战与破解策略
穿越死锁的迷雾:pthread_mutex_lock的终极挑战与破解策略 一、死锁的基本概念二、pthread_mutex_lock 出现死锁的原因三、pthread_mutex_lock 出现死锁的表现四、处理pthread_mutex_lock 出现死锁的方法1. 避免死锁1.1 遵循锁的顺序原则1.2 使用定时锁1.3 使用尝试锁1.4 使用递…...
Dockerfile制作Oracle19c镜像
Dockerfile文件 cat > Dockerfile << EOF # 使用 Oracle Linux 8 作为基础镜像 FROM oraclelinux:8# 复制 Oracle 19c 安装包 COPY oracle-database-ee-19c-1.0-1.x86_64.rpm /tmp/# 安装 Oracle 19c 数据库和依赖 RUN yum localinstall -y /tmp/oracle-database-ee-…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
