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

学校网站模板html下载女孩子做运营是不是压力很大

学校网站模板html下载,女孩子做运营是不是压力很大,wordpress分享后下载地址,用代理访问永久域名文章目录背景效果实现ts的interface定义数据类型结束背景 vue3 ts 搭建一个简单的登录系统平台 个人后台管理地址:https://yongma16.xyz/back-front/#/register 效果 注册 登录 实现 ts的interface定义数据类型 interface 定义类型 form表单(用户…

文章目录

    • 背景
      • 效果
    • 实现
      • ts的interface定义数据类型
    • 结束

背景

vue3 ts 搭建一个简单的登录系统平台
个人后台管理地址:https://yongma16.xyz/back-front/#/register

效果

注册
在这里插入图片描述
登录
在这里插入图片描述

实现

ts的interface定义数据类型

interface 定义类型
form表单(用户名、密码、记住的复选框)
form校验 (用户名、密码)
state类型抛到template的变量声明

interface FormStateType {username: string;password: string;remember: boolean;
}
interface FormRuleType {username: Object;password: Object;
}
interface stateType {formState: FormStateType;formRule: FormRuleType;layoutConfig: any;wrapperCol: any;submitWrapperCol: any;spinning: boolean;backgroundImgUrl: string;
}

注意:
const定义函数和function定义函数区别
1.const 定义函数只能在函数被调用之前
2.function定义函数可以在函数被调用之后
3.setup语法糖中定义的属性变量和函数直接可以被template引用,无须return
4.setup语法糖缺少export default 的name组件名称定义(name默认为文件名)
完整代码块

<template><div class="container"><div class="loginUser-container"><div class="loginUser-title">管理平台</div><a-form:model="state.formState":label-col="state.layoutConfig.labelCol":wrapper-col="state.layoutConfig.wrapperCol":rules="state.formRule"ref="formRef"layout="vertical"autocomplete="off"><a-form-item label="账号" name="username"><a-inputv-model:value="state.formState.username"allowClearplaceholder="请输入账号":disabled="state.spinning"/></a-form-item><a-form-item label="密码" name="password"><a-input-passwordv-model:value="state.formState.password":disabled="state.spinning"allowClearplaceholder="请输入密码"/></a-form-item><a-form-item name="remember" :wrapper-col="state.wrapperCol"><a-checkbox v-model:checked="state.formState.remember" :disabled="state.spinning">记住密码</a-checkbox></a-form-item><a-form-item :wrapper-col="state.submitWrapperCol" class="submit-box"><a-buttontype="primary"html-type="submit"@click="loginAction":loading="state.spinning"style="width: 100%; font-size: 16px; font-weight: bolder">登录</a-button></a-form-item></a-form><div class="description"><span class="description-prefix">没账号?</span><span @click="jumpRegister" class="description-after" :disabled="state.spinning">去注册</span></div></div></div>
</template>
<script lang="ts" setup>
import { reactive, ref, onMounted } from "vue";
import { useRouter } from "vue-router";
import { useStore } from "vuex";
import { message } from "ant-design-vue";
import { loginUser } from "../../service/user/userApi";import type { FormInstance } from "ant-design-vue";interface FormStateType {username: string;password: string;remember: boolean;
}
interface FormRuleType {username: Object;password: Object;
}
interface stateType {formState: FormStateType;formRule: FormRuleType;layoutConfig: any;wrapperCol: any;submitWrapperCol: any;spinning: boolean;backgroundImgUrl: string;
}
// 路由
const router = useRouter();
//store
const store = useStore();
const formRef = ref<FormInstance>();
const state: stateType = reactive({formState: {username: "",password: "",remember: false,},spinning: false,formRule: {username: [{ required: true, message: "请输入账号!" }],password: [{ required: true, message: "请输入密码!" }],},layoutConfig: {labelCol: {span: 8,},wrapperCol: {span: 24,},},wrapperCol: { offset: 0, span: 24 },submitWrapperCol: { offset: 0, span: 24 },backgroundImgUrl:"http://www.yongma16.xyz/staticFile/common/img/background.png",
});
/*** 初始化表单内容*/
const initForm = () => {const userInfoItem: any = window.localStorage.getItem("userInfo");interface userInfoType {username: string;password: string;remember: boolean;}const userInfo: userInfoType = userInfoItem? JSON.parse(userInfoItem): {username: "",password: "",remember: false,};if (userInfo.username && userInfo.password) {state.formState.username = userInfo.username;state.formState.password = userInfo.password;state.formState.remember = userInfo.remember;}
};
/*** 前往注册!*/
const jumpRegister = () => {// 带 hash,结果是 /about#teamrouter.push({ path: "/register" });
};/*** 前往home!*/
const jumpHome = () => {// 带 hash,结果是 /about#teamrouter.push({ path: "/" });
};
/*** 记住密码* @param params*/
const rememberAction = (params: Object) => {window.localStorage.setItem("userInfo", JSON.stringify(params));
};
/*** 登录*/
const loginAction = () => {if (formRef.value) {formRef.value.validate().then((res: any) => {state.spinning = true;const params = {username: state.formState.username,password: state.formState.password,};if (state.formState.remember) {rememberAction({ ...params, remember: state.formState.remember });}loginUser(params).then((res: any) => {console.log("res", res);const { data: response } = res;state.spinning = false;if (response.code === 200) {store.commit("user/setUserInfo", response.data);// 跳转setTimeout(() => {jumpHome();}, 500);message.success(response.message);} else {message.warning(response.message);}}).catch((r: any) => {state.spinning = false;message.error(JSON.stringify(r));throw Error(r);});});}
};onMounted(() => {//初始化initForm();
});
</script>

结束

感谢阅读,下面是我的gitcoe代码仓库,如有问题,欢迎提出讨论!
代码仓库:https://gitcode.net/qq_38870145/springcloudfront

在这里插入图片描述

http://www.lbrq.cn/news/2443033.html

相关文章:

  • 昆明定制化网站建设天津seo推广软件
  • 哈尔滨住房和城乡建设委员会网站百度app登录
  • 微信自己怎么弄小程序北京seo供应商
  • 酒泉如何做百度的网站经典软文广告
  • wordpress macos武汉seo网站优化排名
  • 如何建设一个商城网站搜索推广和信息流推广的区别
  • 做悬赏的网站网络营销专业是学什么的
  • 怎么建立一个网站csdn网络营销团队
  • 网站需要什么服务器seo企业培训班
  • 检测网站是用什么代码做的软件百度推广深圳分公司
  • 个人备案域名做企业网站广州网络推广定制
  • Wordpress自动回复评论昆明seo网站建设
  • 网站建设与熊掌号未来的关系百度游戏排行榜风云榜
  • 海原网站建设网站模板价格
  • 常州网站外包bing搜索引擎国内版
  • 信誉好的邯郸网站建设一份完整的营销策划方案
  • 电商公司网站大的网站建设公司
  • 网站开发费属于软件费吗燃灯seo
  • 自己做网站投放广告百度关键词搜索量查询
  • fineui 如何做网站济南网络seo公司
  • 深圳专业网站建设公做网站怎么赚钱
  • 淘宝客建站还能赚钱吗百度云资源搜索入口
  • 博客的网站页面设计最全bt磁力搜索引擎索引
  • 化工类网站模板最好的免费建站网站
  • 河北网站制作网上怎么找人去推广广告
  • 如何获取网站访客qq怎么推广产品
  • 做百度推广网站找谁好淘宝seo排名优化
  • 如何查看网站的外链网站seo优化包括哪些方面
  • 购物网站建设个人总结魔贝课凡seo课程好吗
  • 如何建设机器人教育网站百度推广管理系统
  • ArkTS 模块通信全解析:用事件总线实现页面消息联动
  • 学习游戏制作记录(改进投掷剑的行为)7.27
  • Pspice仿真电路:(三十四)如何使用Pspcie进行仿真
  • 2025.7.26字节掀桌子了,把coze开源了!!!
  • Go 多模块仓库标签管理教程
  • 车载诊断刷写 --- Flash关于擦除和写入大小