Vue项目实战——【基于 Vue3.x + NodeJS】实现的课程表排课系统二(week-title)

news2024/12/24 21:01:42

文章目录

  • 基于 Vue3.x + NodeJS实现的课程表排课系统(二)
    • 初始化样式
    • 封装axios处理数据
    • 表格头部(周几)
    • 子组件写入根组件App.vue
    • 浅拿一下数据

基于 Vue3.x + NodeJS实现的课程表排课系统(二)


初始化样式

src/assets/resets.css

body,
p,
h1 {
    margin: 0;
}

h1 {
    font-weight: normal;
}

a {
    text-decoration: none;
    color: #666;
}

button {
    outline: none;
    border: none;
}

ul {
    padding: 0;
    margin: 0;
    list-style: none;
}

main.js全局引入

import "./assets/resets.css";

封装axios处理数据

client/src下新建文件夹lib/http.js

import axios from "axios";
import qs from "qs";

export function httpGet(url) {
  return new Promise((resolve, reject) => {
    axios(url)
      .then((res) => {
        const { code, msg, data } = res.data;

        if (code === 0) {
          resolve(data);
        } else {
          reject(mssg);
        }
      })
      .catch((err) => {
        reject(err);
      });
  });
}

export function httpPost(url, body) {
  return new Promise((resolve, reject) => {
    axios
      .post(url, qs.stringify(body))
      .then((res) => {
        const { code, msg, data } = res.data;

        if (code === 0) {
          resolve(data);
        } else {
          reject(mssg);
        }
      })
      .catch((err) => {
        reject(err);
      });
  });
}

表格头部(周几)

实现效果:
在这里插入图片描述

client/src/components/目录下新建文件夹ScheduleTable

ScheduleTable目录下新建index.vue&WeekTitle.vue

WeekTitle.vue

<template>
  <tr>
    <th></th>
    <th v-for="item of weekDay" :key="item.id" class="week-title">
      {{ item.title }}
    </th>
  </tr>
</template>

<script setup>
import weekDay from "../../data/week";
import "./styles/week-title.scss";
</script>

ScheduleTable目录下新建了styles文件夹 该文件夹下新建week-title.scss

.week-title{
    color: #004085;
    background-color: #cce5ff;
}

index.vue

<template>
  <div class="schedule-table">
    <table cellpadding="0" border="0">
      <week-title></week-title>
    </table>
  </div>
</template>

<script setup>
import { onMounted } from "vue";
import WeekTitle from "./WeekTitle.vue";
import "./styles/index.scss";
import { getInitialData } from "./scripts/service";

onMounted(async () => {
  const res = await getInitialData();
  console.log(res);
});
</script>

样式ScheduleTable/styles/index.scss

.schedule-table {
    table {
        width: 100%;
        border-collapse: collapse;
        table-layout: fixed;
        border-color:  #ededed;

        th,
        td {
            text-align: center;
            border: 1px solid #ededed;
        }

        th {
            height: 60px;
        }
				
		 td {
		 	height: 150px;
		 }
    }
}

ScheduleTable/scripts/service.js 接收后端拿到的数据

import { httpGet, httpPost } from "../../../libs/http";

export async function getInitialData() {
  const { schedule, course, duration, teacher } = await httpGet(
    "http://localhost:3000/initial_data"
  );

  return Promise.resolve({
    schedule,
    course,
    duration,
    teacher,
  });
}

子组件写入根组件App.vue

App.vue

<template>
  <schedule-table></schedule-table>
</template>

<script setup>
import ScheduleTable from './components/ScheduleTable'
</script>

<style lang="sass" scoped></style>

根据以上代码 index.vue打印出来的res结果如下图:
在这里插入图片描述

浅拿一下数据

ScheduleTable/index.vue

<template>
  <div class="schedule-table">
    <table cellpadding="0" border="0">
      <week-title></week-title>
      <tr v-for="item of duration" :key="item.begin - time">
        <td>{{ item.title }}</td>
        <td v-for="n of 7" :key="7"></td>
      </tr>
    </table>
  </div>
</template>

<script setup>
import { onMounted, reactive, toRefs } from "vue";
import WeekTitle from "./WeekTitle.vue";
import "./styles/index.scss";
import { getInitialData } from "./scripts/service";

const state = reactive({
  schedule: [],
  course: [],
  duration: [],
  teacher: [],
});

onMounted(async () => {
  const { schedule, course, duration, teacher } = await getInitialData();
  state.duration = duration;
  state.schedule = schedule;
  state.course = course;
  state.teacher = teacher;
});

const { schedule, course, duration, teacher } = toRefs(state);
</script>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/5029.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

当 AI 遇上 web3,会碰撞出什么火花?

2020 年之前&#xff0c;Web3 的路是创造者们铺好的。但 Web3 遇上了金融&#xff0c;这出乎了每个创造者的意料之外&#xff0c;稳定币、AMM 和借贷突其来地点燃了2020年的那个夏天。之后 Web3 又遇到了 NFT、游戏和元宇宙。不过因为技术限制&#xff0c;除了金融之外&#xf…

AVL树详解(附带旋转步骤图,手把手带你上分)

文章目录&#x1f44d; AVL树的概念先了解一下&#x1f601;AVL树节点的定义&#x1f60a;AVL树插入节点&#x1f91e;AVL树为什么要旋转&#x1f60d;AVL树的四种旋转左单旋右单旋左右双旋右左双旋❤️结语关于AVL树的讲解 &#x1f44d; AVL树的概念先了解一下 它的左右子树…

Scala005--Scala中的数据结构【集合】之数组

Scala中的数据结构和Java中一样&#xff0c;都有数组&#xff0c;列表&#xff0c;集合&#xff0c;映射。在Scala中与Java不同的是数组可以有可变数组&#xff0c;而不是一旦定义就不可以进行更改。我们来认识数组&#xff0c;并使用相应的代码去查看具体的实现效果。 目录 …

Linux命令从入门到实战 ----进程管理

文章目录kill终止进程pstree查看进程树netstat网络状态和端口占用信息crontab定时任务进程(process): 是正在执行的一个程序或命令&#xff0c;每一个进程都是一个运行的实体&#xff0c;都有自己的地址空间&#xff0c;并占用一定的系统资源 服务(service)&#xff1a;启动之后…

深度学习 Day 18——利用卷神经网络实现猫狗识别 Ⅱ

深度学习 Day 18——利用卷神经网络实现猫狗识别 Ⅱ 文章目录深度学习 Day 18——利用卷神经网络实现猫狗识别 Ⅱ一、前言二、我的环境三、前期工作1、导入依赖项并设置GPU2、导入数据四、数据预处理1、加载数据2、检查数据3、配置数据集并进行归一化处理4、可视化数据五、构建…

xv6源码解析(三)——内存管理

01 内存管理 内存管理&#xff1a;通过编写物理页分配器&#xff0c;以链表管理所有空闲页帧&#xff0c; 实现了对物理页帧的回收与分配&#xff1b;在xv6系统sbrk内存管理方式的基础上&#xff0c;添加了进程用户空间非连续分区的分配。 内存管理参考链接 mmap 02 sbrk机制…

猿创征文|【Linux】Linux中的gdb调试器的使用

目录 一、什么是gdb&#xff1f; 二、gdb的安装 三、gdb的使用 1、只有debug版可以被调试 2、gdb的常用指令 2.1显示代码&#xff1a;l指令&#xff08;list指令&#xff09; 2.2设置断点&#xff1a;b指令&#xff08;break指令&#xff09; 2.3显示断点/禁用断点/开启…

Linux操作系统~进程fork到wait到底怎么用?

目录 1.fork() &#xff08;1&#xff09;.概念 &#xff08;2&#xff09;.fork的写时拷贝 &#xff08;3&#xff09;.fork常规用法 2.进程终止 &#xff08;1&#xff09;.进程退出场景/退出码 &#xff08;2&#xff09;.进程常见退出方法 1&#xff09;.exit函数 …

类与对象(中级)

目录 1. 包 1.1 包的概念 1.2 导入包中的类 1.3 自定义包 1.4 常见的包 2. Java三大特性 -- 封装 3. Java三大特性 -- 继承 3.1 继承的概念&#xff1a; 3.2 继承的语法 3.3 父类成员访问 3.3.1 子类中访问父类的成员变量 3.3.2 子类中访问父类的成员方法 4. supe…

数据挖掘(六) 层次聚类

数据挖掘&#xff08;六&#xff09; 层次聚类 1.层次聚类简介 层次聚类算法(Hierarchical Clustering)将数据集划分为一层一层的clusters&#xff0c;后面一层生成的clusters基于前面一层的结果。层次聚类算法一般分为两类&#xff1a; Divisive 层次聚类&#xff1a;又称自…

【nacos】5.1 spring cloud + Nacos 实现统一配置管理

1. 解决的问题&#xff1a; 配置动态更新配置集中式管理配置内容的安全性和权限不同部署环境下的配置 2. 环境&#xff1a; ideaspring cloudspring-cloud-alibaba nacosmavenmqtt &#xff08;客户端&#xff0c;服务器采用的是EMQ X 5.0 &#xff09; 3. pom依赖 3.1 父级…

皮卡丘python turtle海龟绘图(电力球版)附源代码

皮卡丘python turtle海龟绘图&#xff08;电力球版&#xff09;附源代码 本文目录&#xff1a; 一、皮卡丘python turtle海龟成品效果图 二、皮卡丘背景介绍 三、皮卡丘卡角色形象 四、愿你拥有一只皮卡丘 五、Python 海龟画图主要方法 &#xff08;1&#xff09;海龟画图…

Allegro在PCB上制作二维码和条形码操作指导

Allegro在PCB上制作二维码和条形码操作指导 当我们需要在PCB放置一个二维码或者条形码的时候,可以不需要额外去贴标签,可以直接在PCB上制作,如下图 制作出来的二维码和条形码是可以直接用扫码程序扫描的 具体操作步骤如下 首先要用was performance allegro productivity…

python Clickhouse 分布式表介绍和创建、插入和查询数据,以及解决遇到的问题

目录 一、分布式表和本地表 原理解析&#xff1a; 二、Clickhouse创建分布式表结构 三、python代码实现&#xff08;亲测有效&#xff09; 四、解决遇到的问题 解决 DB::Exception: Missing columns: wefgrgrfew while processing query: wefgrgrfew, required columns: …

【深度学习】第三章:卷积神经网络

文章目录1. 为什么要使用卷积神经网络&#xff1f;2. 卷积2.1 数学上的卷积2.2 深度学习的卷积3. 卷积的构成4. 卷积的特征5. 卷积的计算(1) 一维卷积计算(2) 二维卷积计算(黑白图片)(2) 三维卷积计算(彩色图片)6. 卷积的优势7. 卷积神经网络7.1 卷积层7.2 池化层7.3 全连接层8…

浅聊一下Nginx

目录 Nginx的下载与安装 去Nginx官网安装&#xff1a;nginx news 直接进入下载页面进行安装 直接安装&#xff1a; 在服务器上使用命令对nginx的安装过程 Nginx命令 Nginx配置文件结构 Nginx配置文件&#xff08;conf/nginx.conf&#xff09;正题分为三个部分&#xff1…

Vue框架的学习(Vue操作指令学习三 V-bind )第三课

Vue框架的学习(Vue操作指令学习三 V-bind )第三课 语法的学习关键在于实操 案例一 V-bind基本操作 通过这个案例了解基本的操作 <div id"app"><img src"./img/1-1 (1).jpg" alt""><!--! 绑定图片利用V-bind指令 --><img v-…

一本通1073;救援(c++)

#include <iostream> #include <cmath> using namespace std; int main() {// 屋顶数目、人数int n, m;// x坐标、y坐标、实际距离、所需时间double x, y, s, sum 0;cin >> n; // 输入屋顶数目for (int i 1; i < n; i){// 输入x、y坐标和人数cin >&g…

Rockland丨艾美捷Rockland大鼠γ-球蛋白说明书

艾美捷Rockland大鼠γ-球蛋白&#xff1a; 大鼠γ-球蛋白组分由含有全抗体和其他非白蛋白血浆蛋白的血清组分组成。丙种球蛋白可用于治疗&#xff0c;以暂时提高患者的免疫力&#xff08;如免疫抑制感染后&#xff09;或增加接受肾移植的可能性。γ-球蛋白级分可作为对照试剂用…

【问题记录与解决】jupyter notebook 无法重命名,无法运行测试代码 || jupyter notebook 中常用的两个快捷键。

可以回顾下之前遇到的小问题&#xff0c;因为这次的问题解决就有赖于之前记录的内容喔&#xff01; 一、问题记录与解决】启动Jupyter&#xff0c;运行代码时报错【Error】 || 通过 Jupyter 建立的Python文件在哪儿 || Jupyter 中 移动 Python 文件 到 指定文件夹 二、【记录】…