记录页面——一个蛮好看的登录页(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-…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
