Vue 项目中如何使用FullCalendar 时间段选择插件(类似会议室预定、课程表)

在这里插入图片描述
本文中是基于VUE+elementui项目中实现的前后端分离的前端功能部分:

插件的官方文档:FullCalendar

1.安装对应依赖(统一安装版本为6.15)

npm install  --save @fullcalendar/core@6.15
npm install  --save @fullcalendar/daygrid@6.15
npm install  --save @fullcalendar/interaction@6.15
npm install  --save @fullcalendar/moment@6.15
npm install  --save @fullcalendar/resource@6.15
npm install  --save @fullcalendar/resource-timeline@6.15
npm install  --save @fullcalendar/timegrid@6.15
npm install  --save @fullcalendar/vue@6.15

2.放置组件展示的div(包含选中之后的弹框)

<template><div class="app-container meetingroomApply"><el-buttontype="primary"icon="el-icon-plus"size=" medium"@click="openDialog"style="margin-bottom: 10px;">会议室预定</el-button><div class="fullCalendar" id="calendar"></div><div class="tips-text">请用鼠标滑动选择时间段进行会议预约!</div><el-dialog:visible.sync="dialogVisible":close-on-click-modal="false":title="title"><el-formref="form":model="form":rules="rules"label-width="110px"style="padding: 10px 10px"><el-form-item label="会议室" prop="meetingroomName"><el-selectv-model="form.meetingroomName"placeholder="请选择会议室"@change="roomChange":disabled="this.eventClickFlag ? true : false"><el-optionv-for="room in meetingroomList":key="room.id":label="room.meetingroomName":value="room.meetingroomName"></el-option></el-select></el-form-item><el-form-item label="会议名称" prop="meetingName"><el-inputplaceholder="请输入会议名称"v-model="form.meetingName":disabled="this.eventClickFlag ? true : false"></el-input></el-form-item><el-form-item label="会议开始时间" prop="meetingStartTime"><el-date-pickerclearablev-model="form.meetingStartTime"type="datetime"value-format="yyyy-MM-dd HH:mm:ss"placeholder="请选择会议开始时间":disabled="this.eventClickFlag ? true : false"></el-date-picker></el-form-item><el-form-item label="会议结束时间" prop="meetingEndTime"><el-date-pickerclearablev-model="form.meetingEndTime"type="datetime"value-format="yyyy-MM-dd HH:mm:ss"placeholder="请选择会议结束时间":disabled="this.eventClickFlag ? true : false"></el-date-picker></el-form-item><el-form-item label="预定人" prop="userName"><el-inputv-model="form.userName":disabled="this.eventClickFlag ? true : false"></el-input></el-form-item><el-form-item label="预定人电话" prop="userPhone"><el-inputv-model="form.userPhone"placeholder="请输入联系电话":disabled="this.eventClickFlag ? true : false"/></el-form-item><el-form-item label="预定人公司" prop="companyId"><el-inputv-model="form.companyId"type="text":disabled="this.eventClickFlag ? true : false"></el-input></el-form-item><el-form-item label="预定部门" prop="deptId"><el-inputv-model="form.deptId"type="text":disabled="this.eventClickFlag ? true : false"></el-input></el-form-item><el-form-item label="参会人" prop="participant"><el-inputv-model="form.participant"type="textarea":disabled="this.eventClickFlag ? true : false"></el-input></el-form-item><el-row><el-col :span="6"><el-form-item label="投屏" prop="projectionScreen"><el-checkboxv-model="form.projectionScreen":true-label="1":false-label="0":disabled="this.eventClickFlag ? true : false"></el-checkbox></el-form-item></el-col><el-col :span="6"><el-form-item label="桌牌" prop="tableBrand"><el-checkboxv-model="form.tableBrand":true-label="1":false-label="0":disabled="this.eventClickFlag ? true : false"></el-checkbox></el-form-item></el-col><el-col :span="6"><el-form-item label="瓶装水" prop="bottleWater"><el-checkboxv-model="form.bottleWater":true-label="1":false-label="0":disabled="this.eventClickFlag ? true : false"></el-checkbox></el-form-item></el-col></el-row><el-form-item label="其他需要" prop="otherNeeds"><el-inputv-model="form.otherNeeds"type="textarea":disabled="this.eventClickFlag ? true : false"></el-input></el-form-item><el-form-item label="备注" prop="remark"><el-inputv-model="form.remark"type="textarea":disabled="this.eventClickFlag ? true : false"></el-input></el-form-item></el-form><span slot="footer" class="dialog-footer"><el-button @click="dialogVisible = false">取 消</el-button><el-buttontype="primary":loading="buttonLoading"@click="submitForm"v-if="!this.eventClickFlag">确 定</el-button></span></el-dialog></div>
</template>

3.对应的js代码

<script>
import FullCalendar from "@fullcalendar/vue";
import { Calendar } from "@fullcalendar/core";
import dayGridPlugin from "@fullcalendar/daygrid";
import interactionPlugin from "@fullcalendar/interaction";
import timeGridPlugin from "@fullcalendar/timegrid";
import resourceTimelinePlugin from "@fullcalendar/resource-timeline";
export default {components: {FullCalendar, // 像使用自定义组件一样使用},constructor() {const name = Calendar.name;},data() {return {// 显示搜索条件showSearch: true,// 按钮loadingbuttonLoading: false,dialogVisible: false,eventClickFlag: false,title: "",// 部门树选项deptOptions: [],deptOptionsLink: [], //根据公司id查询部门数据// 公司名称数组companyList: [],meetingroomList: [],meetingroomEventList: [],form: {meetingName: "",participant: "",projectionScreen: "",tableBrand: "",bottleWater: "",otherNeeds: "",remark: "",meetingStartTime: "",meetingEndTime: "",meetingroomName: "",meetingroomId: "",},rules: {},// 查询参数queryParams: {meetingroomNo: undefined,meetingroomName: undefined,meetingDay: undefined,viewType: undefined,beginDayTime: undefined,endDayTime: undefined,year: undefined,month: undefined,},meetingroomList: [],meetingroomEventList: [],//监听到的当前view模式viewType: "",calendar: null,calendarOptions: {//   timeGridPlugin  可显示每日时间段height: 700,allDaySlot: false, //是否在日历上方显示all-day(全天)axisFormat: "h(:mm)tt",plugins: [dayGridPlugin,interactionPlugin,timeGridPlugin,resourceTimelinePlugin,],headerToolbar: {left: "prev,next today",center: "title",// right: "dayGrid,dayGridWeek,dayGridMonth",right: "resourceTimelineDay,resourceTimelineWeek,dayGridMonth",},buttonText: {// 设置按钮today: "今天",day: "日",week: "周",month: "月",},editable: true,selectable: true,navLinks: true,datesSet: this.datesSet, //日期渲染;修改日期范围后触发// displayEventEnd: true,//所有视图显示结束时间// initialView: "dayGrid", // 设置默认显示周,可选周、日initialView: "resourceTimelineDay",dateClick: this.handleDateClick,eventClick: this.handleEventClick,// eventsSet: this.handleEvents,select: this.handleSelect,resourceAreaColumns: [{headerContent: "会议室",},],eventColor: "#f08f00", // 修改日程背景色locale: "zh-cn", // 设置语言weekNumberCalculation: "ISO", // 周数customButtons: {prev: {// this overrides the prev buttontext: "PREV",click: () => {this.prev();},},next: {// this overrides the next buttontext: "PREV",click: () => {this.next();},},today: {text: "今天",click: () => {this.today();},},},// 最小时间slotMinTime: "07:00:00",// 最大时间slotMaxTime: "22:00:00",resourceAreaWidth: "15%", //高级功能配置Column宽度// 高级功能许可key,需要用到高级功能时候添加上,避免左下角出现警告提醒schedulerLicenseKey: "CC-Attribution-NonCommercial-NoDerivatives",},};},created() {this.getList();},mounted() {this.initCalendar();},methods: {/** 查询会议室列表 (替换为自己本公司的接口)*/getList() {this.queryParams.companyIds = 1319;this.queryParams.viewType = "day";this.queryParams.meetingDay = this.setCurrentDate(new Date());this.getListApplyMeetingroom(this.queryParams);},///获取当前的年月日,做查询参数setCurrentDate(data) {const currentDate = data;const year = currentDate.getFullYear();const month = String(currentDate.getMonth() + 1).padStart(2, "0");const day = String(currentDate.getDate()).padStart(2, "0");const formattedDate = `${year}-${month}-${day}`;return formattedDate;},getListApplyMeetingroom(queryParams) {this.$nextTick(() => {// listApplyMeetingroom(queryParams).then((response) => {}); //修改为自己的接口//清空原始数据this.meetingroomList = [{id: 1,companyId: 1319,companyName: "测试",companyShortName: null,tenantId: 1319,meetingroomNo: "HYS20241118001",meetingroomName: "测试 - 309会议室",meetingroomLocation: "测试公司三层309会议室",meetingroomArea: "86.0000",meetingroomGalleryful: 40,meetingroomEquipment: "投影仪",appliable: 1,remark: "第一次申请",scopeDeptId: 1321,projectionScreen: null,tableBrand: null,bottleWater: null,},];this.meetingroomEventList = [{id: 20,meetingroomId: 1,meetingroomName: "测试 - 309会议室",meetingName: "22好的会议",participant: "我额人他",meetingStartTime: "2024-11-22 09:30:00",meetingEndTime: "2024-11-22 13:30:00",specialRequest: null,companyId: 1319,companyName: "测试公司",userCode: "1",userName: "sysadmin",userPhone: "1222222222",deptId: 1323,deptName: "研发部",applyTime: null,applyStatus: 1,cancelRemark: null,remark: "问问嗯嗯",tenantId: 1319,scopeDeptId: 1323,projectionScreen: 1,tableBrand: 1,bottleWater: 1,otherNeeds: "问问",},];// 提取所有资源的 id 值const resourceIds = this.calendar.getResources().map((resource) => resource.id);// 逐个删除原有资源,防止显示出错resourceIds.forEach((id) => {this.calendar.getResourceById(id).remove();});if (this.meetingroomList.length > 0) {// 遍历 this.meetingroomList 并添加资源this.meetingroomList.forEach((room) => {this.calendar.addResource({id: room.id,title: room.meetingroomName,});});}if (this.meetingroomEventList.length > 0) {// 获取现有的事件列表const existingEvents = this.calendar.getEvents();// 添加新的事件,避免重复this.meetingroomEventList.forEach((event) => {const isDuplicate = existingEvents.some((existingEvent) => {const formattedStart = this.formmatTime(existingEvent.start);const formattedEnd = this.formmatTime(existingEvent.end);return (formattedStart === this.formmatTime(event.meetingStartTime) &&formattedEnd === this.formmatTime(event.meetingEndTime));});if (!isDuplicate) {this.calendar.addEvent({resourceId: event.meetingroomId,title: `${event.meetingName}  预定人: (${event.userName})`,start: event.meetingStartTime,end: event.meetingEndTime,extendedProps: {meetingroomId: event.meetingroomId,meetingroomName: event.meetingroomName,meetingStartTime: event.meetingStartTime,meetingEndTime: event.meetingEndTime,meetingName: event.meetingName,userName: event.userName,userPhone: event.userPhone,companyName: event.companyName,deptName: event.deptName,participant: event.participant,projectionScreen: event.projectionScreen,tableBrand: event.tableBrand,bottleWater: event.bottleWater,otherNeeds: event.otherNeeds,remark: event.remark,},});}});}});},//加载会议事件initCalendar() {var calendarEl = document.getElementById("calendar");this.calendar = new Calendar(calendarEl, this.calendarOptions);this.calendar.render();},openDialog() {this.resetForm();this.title = "会议室预定";this.form.meetingStartTime = "";this.form.meetingEndTime = "";this.form.meetingroomName = "";this.form.meetingroomId = "";this.eventClickFlag = false;this.dialogVisible = true;},roomChange(value) {// 根据选中的会议室名称找到对应的会议室对象const selectedRoom = this.meetingroomList.find((room) => room.meetingroomName === value);if (selectedRoom) {// 更新 form.meetingroomId 为选中的会议室meetingroomNothis.form.meetingroomId = selectedRoom.id;}},//选择会议室和时间handleSelect(info) {this.resetForm();this.form.meetingStartTime = this.handleSelectDate(info.startStr);this.form.meetingEndTime = this.handleSelectDate(info.endStr);if (info.resource) {this.form.meetingroomName = info.resource.title;this.form.meetingroomId = info.resource.id;}this.eventClickFlag = false;this.dialogVisible = true;},handleSelectDate(selectData) {const originalTime = selectData;const date = new Date(originalTime);const year = date.getFullYear();const month = String(date.getMonth() + 1).padStart(2, "0");const day = String(date.getDate()).padStart(2, "0");const hours = String(date.getHours()).padStart(2, "0");const minutes = String(date.getMinutes()).padStart(2, "0");const formattedTime = `${year}-${month}-${day} ${hours}:${minutes}:00`;return formattedTime;},resetForm() {this.form.meetingName = "";this.form.participant = "";this.form.projectionScreen = "";this.form.tableBrand = "";this.form.bottleWater = "";this.form.otherNeeds = "";this.form.remark = "";},//获取视图的日期参数getViewDate() {const currentDate = this.calendar.getDate();const currentViewType = this.calendar.view.type;if (currentViewType === "resourceTimelineDay") {// 日视图this.queryParams.viewType = "day";this.queryParams.meetingDay = this.formatDate(currentDate,"yyyy-MM-dd");} else if (currentViewType === "resourceTimelineWeek") {// 周视图const startOfWeek = new Date(currentDate);startOfWeek.setDate(startOfWeek.getDate() - startOfWeek.getDay() + 1);const endOfWeek = new Date(startOfWeek);endOfWeek.setDate(endOfWeek.getDate() + 6);this.queryParams.viewType = "week";this.queryParams.beginDayTime = this.formatDate(startOfWeek,"yyyy-MM-dd");this.queryParams.endDayTime = this.formatDate(endOfWeek, "yyyy-MM-dd");} else if (currentViewType === "dayGridMonth") {// 月视图const startOfMonth = new Date(currentDate);startOfMonth.setDate(1);const endOfMonth = new Date(currentDate);endOfMonth.setMonth(endOfMonth.getMonth() + 1);endOfMonth.setDate(0);this.queryParams.viewType = "month";this.queryParams.beginDayTime = this.formatDate(startOfMonth,"yyyy-MM-dd");this.queryParams.endDayTime = this.formatDate(endOfMonth, "yyyy-MM-dd");}this.queryParams.companyIds =this.queryParams.tenantIdList.length > 0? this.queryParams.tenantIdList.join(","): this.form.companyId;},// 辅助方法:格式化日期formatDate(date, format) {const pad = (n) => (n < 10 ? "0" + n : n);return format.replace("yyyy", date.getFullYear()).replace("MM", pad(date.getMonth() + 1)).replace("dd", pad(date.getDate()));},prev() {this.calendar.prev();this.getViewDate();this.getListApplyMeetingroom(this.queryParams);},// 切换下一个按钮事件next() {this.calendar.next();this.getViewDate();this.getListApplyMeetingroom(this.queryParams);},// 点击今天按钮today() {this.calendar.today();this.getViewDate();this.getListApplyMeetingroom(this.queryParams);},handleDateClick: function (arg) {this.$forceUpdate();console.log(arg, "事件1");},handleEventClick(calEvent) {console.log(calEvent, "事件2");this.title = "查看会议详情";// 将 extendedProps 里的字段及数值逐个放入 this.formconst extendedProps = calEvent.event.extendedProps;for (const key in extendedProps) {if (extendedProps.hasOwnProperty(key)) {this.form[key] = extendedProps[key];}}this.eventClickFlag = true;this.dialogVisible = true; // 显示dialog弹窗},getShowTime(beginDate, endDate) {this.form.startDate = this.dealWithTime(beginDate);this.form.startTime = this.getHoursMin(beginDate);this.form.endDate = this.dealWithTime(endDate);this.form.endTime = this.getHoursMin(endDate);},// 获取时分时间getHoursMin(value) {return value.substring(11, 16);},// 处理会议时间格式dealWithTime(date) {let newDate = /\d{4}-\d{1,2}-\d{1,2}/g.exec(date)[0];return newDate;},handleEvents(events) {console.log(events, "事件3");},getReservationList(arrayData) {let newArr = [];this.subList = arrayData;arrayData.forEach((item) => {newArr.push({start: this.dealWithTime(item.beginDate),end: this.addDate(this.dealWithTime(item.endDate), 1),color: item.status,id: item.id,title: `${this.getTitle(item.beginDate, item.endDate)} ${item.title}`,});});this.calendarOptions.events = newArr;},//UTC时间去掉TformmatTime(time) {const utcTimestamp = time;const date = new Date(utcTimestamp);const year = date.getUTCFullYear();const month = String(date.getUTCMonth() + 1).padStart(2, "0");const day = String(date.getUTCDate()).padStart(2, "0");const hours = String(date.getUTCHours()).padStart(2, "0");const minutes = String(date.getUTCMinutes()).padStart(2, "0");const seconds = String(date.getUTCSeconds()).padStart(2, "0");const formattedDateTime = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;return formattedDateTime;},datesSet(info) {//注意:该方法在页面初始化时就会触发一次this.viewType = info.view.type;},/** 提交按钮 */submitForm() {this.$refs["form"].validate((valid) => {if (valid) {}});},},
};
</script>
<style scoped lang="scss">
::v-deep .el-select {width: 100%;
}
::v-deep .el-date-editor.el-input,
.el-date-editor.el-input__inner {width: 100%;
}
</style>

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

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

相关文章

学习路之压力测试--jmeter安装教程

Jmeter安装 0、先安装jdk:这里是安装jdk-8u211-windows-x64 1、百度网盘上下载 jdk和jmeter 链接: https://pan.baidu.com/s/1qqqaQdNj1ABT1PnH4hfeCw?pwdkwrr 提取码: kwrr 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 官网&#xff1a;Apache JMeter - D…

SQL99版全外连接和交叉连接和总结

全外连接MySQL不支持 elect 查询列表 from 表名1 表别名1 cross join 表名2 表别名2 on 连接条件 ...... ; 交叉连接 就两个记录做笛卡尔积&#xff01;没什么好说的&#xff0c;基本也没用过&#xff01; 总结

Python爬虫:深入探索1688关键词接口获取之道

在数字化经济的浪潮中&#xff0c;数据的价值愈发凸显&#xff0c;尤其是在电商领域。对于电商平台而言&#xff0c;关键词不仅是搜索流量的入口&#xff0c;也是洞察市场趋势、优化营销策略的重要工具。1688作为中国领先的B2B电商平台&#xff0c;其关键词接口的获取对于商家来…

ffmpeg本地编译不容易发现的问题 — Error:xxxxx not found!

这里区分电脑CPU架构 本次编译是在Mac笔记本&#xff0c;M1芯片上进行&#xff01; 前面大致流程&#xff1a;分为两种&#xff08;1.仅适用&#xff0c;直接下载编译好的本地安装即可&#xff1b;2.使用并查看源码&#xff0c;自己修改编译运行&#xff09;。这里介绍的是第…

从0-1逐步搭建一个前端脚手架工具并发布到npm

前言 本文介绍的案例已同步到github&#xff0c;github地址。 vue-cli 和 create-react-app 等 cli 脚手架工具用于快速搭建应用&#xff0c;无需手动配置复杂的构建环境。本文介绍如何使用 rollup 搭建一个脚手架工具。 脚手架工具的工作流程简言为&#xff1a;提供远端仓库…

摄影:相机控色

摄影&#xff1a;相机控色 白平衡&#xff08;White Balance&#xff09;白平衡的作用&#xff1a; 白平衡的使用环境色温下相机色温下总结 白平衡偏移与包围白平衡包围 影调 白平衡&#xff08;White Balance&#xff09; 人眼看到的白色&#xff1a;会自动适应环境光线。 相…

键盘党福音!自定义指令实现回车快捷删除

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 目录 确认对话框 回车键快捷确认 自定义指令实现回车删除 实现思路 实现代码 …

AG32既可以做MCU,也可以仅当CPLD使用

Question: AHB总线上的所有外设都需要像ADC一样&#xff0c;通过cpld处理之后才能使用? Reply: 不用。 除了ADC外&#xff0c;其他都是 mcu可以直接配置使用的。 Question: DMA和CMP也不用? Reply: DMA不用。 ADC/DAC/CMP 用。 CMP 其实配置好后&#xff0c;可以直…

深度学习实战人脸识别

文章目录 前言一、人脸识别一般过程二、人脸检测主流算法1. MTCNN2. RetinaFace3. CenterFace4. BlazeFace5. YOLO6. SSD7. CascadeCNN 三、人脸识别主流算法1.deepface2.FaceNet3.ArcFace4.VGGFace5.DeepID 四、人脸识别系统实现0.安装教程与资源说明1. 界面采用PyQt5框架2.人…

macOS 的目录结构

文章目录 根目录 (/)常见目录及其用途示例目录结构注意事项根目录 (/)主要目录及其含义其他目录总结 macOS 的目录结构无论是在 Intel 架构还是 ARM 架构的 Mac 电脑上都是相同的。macOS 的目录结构遵循 Unix 和 BSD 的传统&#xff0c;具有许多标准目录。以下是一些主要目录及…

003 STM32基础、架构以及资料介绍——常识

注&#xff1a; 本笔记参考学习B站官方视频教程&#xff0c;免费公开交流&#xff0c;切莫商用。内容可能有误&#xff0c;具体以官方为准&#xff0c;也欢迎大家指出问题所在。 01什么是STM32&#xff08;宏观&#xff09; STM32属于一个微控制器&#xff0c;自带了各种常用通…

aws凭证(一)凭证存储

AWS 凭证用于验证身份&#xff0c;并授权对 DynamoDB 等等 AWS 服务的访问。配置了aws凭证后&#xff0c;才可以通过编程方式或从AWS CLI连接访问AWS资源。凭证存储在哪里呢&#xff1f;有以下几个方法&#xff1a; 一、使用文件存储 1、介绍 文件存储适用于长期和多账户配置…

力扣面试经典 150(上)

文章目录 数组/字符串1. 合并两个有序数组2. 移除元素3. 删除有序数组中的重复项4. 删除有序数组的重复项II5. 多数元素6. 轮转数组7. 买卖股票的最佳时机8. 买卖股票的最佳时机II9. 跳跃游戏10. 跳跃游戏II11. H 指数12. O(1)时间插入、删除和获取随机元素13. 除自身以外数组的…

聚焦AI存储,联想凌拓全力奔赴

【全球存储观察 &#xff5c; 科技热点关注】 每一个时代&#xff0c;都有每一个时代的骄傲。 在信息化时代&#xff0c;NAS文件存储肩负着非结构化数据管理与存储的重任&#xff0c;NetApp以其创新实力&#xff0c;赢得了全球存储市场的极高声誉。 在数智化时代&#xff0c;…

JavaWeb后端开发知识储备2

目录 1.HttpClient 2.微信小程序开发 3.Spring Cache 1.HttpClient 简单来说&#xff0c;HttpClient可以通过编码的方式在Java中发送Http请求 2.微信小程序开发 微信小程序的开发本质上是前端开发&#xff0c;对于后端程序员来说了解即可 3.Spring Cache Spring Cache 是…

基于CNN+RNNs(LSTM, GRU)的红点位置检测(pytorch)

1 项目背景 需要在图片精确识别三跟红线所在的位置&#xff0c;并输出这三个像素的位置。 其中&#xff0c;每跟红线占据不止一个像素&#xff0c;并且像素颜色也并不是饱和度和亮度极高的红黑配色&#xff0c;每个红线放大后可能是这样的。 而我们的目标是精确输出每个红点的…

树莓派搭建NextCloud:给数据一个安全的家

前言 NAS有很多方案&#xff0c;常见的有 Nextcloud、Seafile、iStoreOS、Synology、ownCloud 和 OpenMediaVault &#xff0c;以下是他们的特点&#xff1a; 1. Nextcloud 优势&#xff1a; 功能全面&#xff1a;支持文件同步、共享、在线文档编辑、视频会议、日历、联系人…

数据集-目标检测系列- 花卉 鸡蛋花 检测数据集 frangipani >> DataBall

数据集-目标检测系列- 花卉 鸡蛋花 检测数据集 frangipani >> DataBall DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 贵在坚持&#xff01; 数据样例项目地址&#xff1a; * 相关项目 1&#xff09;数据集…

初次体验加猜测信息安全管理与评估国赛阶段训练习

[第一部分] 网络安全事件响应 window操作系统服务器应急响应流程_windows 服务器应急响应靶场_云无迹的博客-CSDN博客 0、请提交攻击者攻击成功的第一时间&#xff0c;格式&#xff1a;YY:MM:DD hh:mm:ss1、请提交攻击者的浏览器版本2、请提交攻击者目录扫描所使用的工具名称…