vue3医疗项目

配置src别名

打开viteconfig.js文件进行配置

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
// 引入node提供内置模块path:可以获取绝对路径
import path from "path";

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue()],
  // src文件夹配置别名
  resolve: {
    alias: {
      "@": path.resolve(__dirname, "src"),
    },
  },
});

如果代码标红,需安装@types/node是TypeScript的一个声明文件包,用于描述Node.js核心模块和常用的第三方库的类型信息

pnpm i @types/node --save-dev

在这里插入图片描述

找到tsconfig.json配置文件,找到配置项compilerOptions添加配置,这一步的作用是让IDE可以对路径进行智能提示

// 路径提示
    "baseUrl": ".",
    "paths": {
     "@/*": ["src/*"]
    }

在这里插入图片描述

控制路由滚动行为

// 滚动行为:控制滚动条的位置
  scrollBehavior() {
    return {
      left: 0,
      top: 0,
    };
  },

在这里插入图片描述
深度选择器:>>> /deep/ ::v-deep

服务器地址:http://syt.atguigu.cn
医院接口:http://139.198.34.216:8201/swagger-ui.html
公共数据接口:http://139.198.34.216:8202/swagger-ui.html
会员接口:http://139.198.34.216:8203/swagger-ui.html
短信验证码接口:http://139.198.34.216:8204/swagger-ui.html
订单接口:http://139.198.34.216:8206/swagger-ui.html
文件上传接口:http://139.198.34.216:8205/swagger-ui.html
后台用户接口:http://139.198.34.216:8212/swagger-ui.html

vue3+ts代码标红

取消ts校验

// @ts-ignore

在这里插入图片描述
安装sass

pnpm i sass

base64图片拼接调用

data:image/jpeg;base64
        <img:src="`data:image/jpeg;base64,${hospitalInfo.logoData}`" alt="">

隐藏滚动条

.rightNav {
      overflow: auto;
      &::-webkit-scrollbar{
        display:none;
      }
    }

scrollIntoView()方法属性
在一个移动项目中遇到个这样的需求,一个表单填写页面,每项都有表单验证,并且点击提交按钮,未通过校验的输入框下边显示校验信息,同时页面滑动定位到第一个未通过校验的输入框.
我们在完成这项需求时,使用的scrollIntoView()方法.
alignToTop [可选],目前之前这个参数得到了良好的支持
true 元素的顶部将对齐到可滚动祖先的可见区域的顶部。对应于scrollIntoViewOptions: {block: “start”, inline: “nearest”}。这是默认值
false 元素的底部将与可滚动祖先的可见区域的底部对齐。对应于scrollIntoViewOptions: {block: “end”, inline: “nearest”}。
scrollIntoViewOptions [可选],目前这个参数浏览器对它的支持并不好,可以查看下文兼容性详情
behavior [可选]定义过渡动画。“auto”,“instant"或"smooth”。默认为"auto"。
block [可选] “start”,“center”,“end"或"nearest”。默认为"center"。
inline [可选] “start”,“center”,“end"或"nearest”。默认为"nearest"。

element.scrollIntoView(); // 等同于element.scrollIntoView(true)
element.scrollIntoView(alignToTop); //布尔参数
element.scrollIntoView(scrollIntoViewOptions); //对象参数

在这里插入图片描述

示例
var element = document.getElementById("box");
 
element.scrollIntoView();
element.scrollIntoView(false);
element.scrollIntoView({block: "end"});
element.scrollIntoView({behavior: "instant", block: "end", inline: "nearest"});

微信开放平台网址:https://open.weixin.qq.com/
微信公众平台网址:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/getting_started/terminology_introduce.html
极简插件:https://chrome.zzzmh.cn/
组件命名:npm i vite-plugin-vue-setup-extend -D
vite.config.ts文件添加配置

import VueSetupExtend from "vite-plugin-vue-setup-extend";

在这里插入图片描述
在这里插入图片描述

pinia仓库数据持久化插件网址:

https://prazdevs.github.io/pinia-plugin-persistedstate/zh/guide/why.html

element-plus中ElmessageBox弹窗没有样式报错原因及解决:引入了element plus,并没有引入css文件,所以导致了样式的缺失,只需要在main.js文件中添加如下代码:

import 'element-plus/dist/index.css'

如果还是没有效果记得重启一下项目

微信开放平台网址:https://open.weixin.qq.com/
微信公众平台:https://mp.weixin.qq.com/

对网址进行编码:
let redirect_URL=encodeURIComponent(window.location.origin)

微信小程序图片体积过大压缩:https://tinypng.com/

qrcode

npm install -g qrcode
import QRCode from 'qrcode'
imgUrl.value=await QRCode.toDataURL(result.data.codeUrl)
console.log(imgUrl)

级联列表

在这里插入图片描述

 <el-cascader :props="props" />
// 级联选择器数据
const props:CascaderProps = {
  lazy: true,
  // 加载级联选择器数据的方法
 async lazyLoad(node, resolve) {
  let result:any=await reqCity(node.data.id||'86')
  let showData=result.data.map((item:any)=>{
    return{
      id:item.id,
      label:item.name,
      value:item.value,
      leaf: !item.hasChildren
    }
  })
  resolve(showData)
  },
}

进度条(https://www.npmjs.com/package/nprogress)

安装进度条

npm i nprogress
// 引入进度条
import NProgress from "nprogress";
// 引入进度条的样式
import "nprogress/nprogress.css"
// 设置无加载小圆圈
NProgress.configure({ showSpinner: false });
NProgress.start();
NProgress.done();

设置页面动态标题

const routes = [
  {
    path: "/home",
    component: () => import("@/pages/home/index.vue"),
    meta: { title: "首页" },
  },
}

在这里插入图片描述

document.title=`大一医院${to.meta.title}`

路由鉴权

// 路由鉴权
// 引入路由
import router from "@/router";
// 引入进度条
// @ts-ignore
import NProgress from "nprogress";
// 引入进度条的样式
import "nprogress/nprogress.css";
import pinia from "@/store"
// @ts-ignore
import useUserStore from "@/store/modules/user";
let userStore = useUserStore(pinia);
// 存储用户未登录可以访问的路由的路径
let whiteList = [
  "/home",
  "/hospital/register",
  "/hospital/detail",
  "/hospital/notice",
  "/hospital/close",
  "/hospital/search",
];
// 设置无加载小圆圈
NProgress.configure({ showSpinner: false });
// 添加相应的全局守卫
// 全局的前置守卫
router.beforeEach((to, from, next) => {
  // 访问路由组件之前,进度条开始动
  // 动态设置网页左上角的标题
  document.title = `大一医院${to.meta.title}`;
  NProgress.start();
  // 判断用户是否登录-token
  let token = userStore.userInfo.token;
  if (token) {
    // 用户登录了
    next();
  } else {
    // 用户未登录
    if (whiteList.includes(to.path)) {
      next();
    } else {
      // 登录组件显示
      userStore.visible = true;
      // 跳转至首页
      next({ path: "/home",query:{redirect:to.fullPath} });
    }
  }
});
// 后置路由
router.afterEach((to, from) => {
  // 访问路由组件成功,进度条消失
  NProgress.done();
});

登录操作

// 登录操作
const login = async () => {
  await form.value.validate();
  try {
    await userStore.userLogin(loginParam);
    // 关闭对话框
    userStore.visible = false;
    // 获取url的query参数
    let redirect=route.query.redirect
    if(redirect){
      router.push(redirect as string)
    }else{
      router.push('/home')
    }
  } catch (error) {
    ElMessage({
      type: "error",
      message: (error as Error).message
    });
  }
};

相关推荐

  1. Vue3项目随笔

    2024-06-16 03:30:02       38 阅读
  2. Vue】创建vue3项目

    2024-06-16 03:30:02       44 阅读
  3. vue3项目快速创建

    2024-06-16 03:30:02       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-16 03:30:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-16 03:30:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-16 03:30:02       82 阅读
  4. Python语言-面向对象

    2024-06-16 03:30:02       91 阅读

热门阅读

  1. *args和**kwargs这个在python中的意思

    2024-06-16 03:30:02       29 阅读
  2. Qt事件处理和传递流程

    2024-06-16 03:30:02       29 阅读
  3. springboot事务管理的机制是什么

    2024-06-16 03:30:02       24 阅读
  4. datalist 是什么?

    2024-06-16 03:30:02       26 阅读
  5. 026、工具_redis-server

    2024-06-16 03:30:02       32 阅读