vue+html5+css制作日历代码,工作日配置

目录

1.日历页面

2.工作日查询、自然日查询 js

3.修改工作日配置

4.数据库,表结构

5.初始化数据


因系统需要,需要制作一个功能--工作日配置

需要的业务有:

1.初始化与国家放假情况一致,之后支持手动进行工作日配置;

2.展示12个月的放假/工作日情况;

3.一些特殊的日期,如调休春节等需要进行展示。

页面展示:

修改页面:

1.日历页面

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head th:include="include/header_css::header('工作日维护')"></head>
<style type="text/css">
.calendar-box * {margin: 0;padding: 0;box-sizing: border-box;
}
.calendar-box {border: 1px solid #d2d2d2;box-shadow: 0 2px 4px rgba(0,0,0,.12);background-color: #fff;color: #666;position: relative;z-index: 0;display: inline-block;width: 272px;border-radius: 2px;font-size: 14px;
}
.calendar-content {position: relative;padding: 10px;-moz-user-select: none;-webkit-user-select: none;-ms-user-select: none;
}
.calendar-content table {border-collapse: collapse;border-spacing: 0;
}
.calendar-content th, .calendar-content td {border: 1px solid #d3d3d3;width: 36px;height: 30px;padding: 5px;text-align: center;
}
.calendar-content th {font-weight: 400;color: #333;
}
.calendar-content td {position: relative;cursor: pointer;transition-duration: .3s;-webkit-transition-duration: .3s;
}
.calendar-content td:hover {background-color: #eaeaea;color: #333;
}
.calendar-content .calendar-day-mark-td {height: 33px;
}
.calendar-day-mark {position: absolute;left: 0;top: 0;width: 100%;height: 100%;line-height: 33px;font-size: 12px;overflow: hidden;
}
.calendar-content .weekend {color: red;
}
.calendar-disabled {background: 0 0!important;cursor: not-allowed !important;-moz-user-select: none;-webkit-user-select: none;-ms-user-select: none;
}
.calendar-workday {color: white;background-color: #080101;
}
.calendar-workday:hover {background-color: #080101b3;
}
.calendar-holiday {color: white;background-color: #f08a8a;
}
.calendar-holiday:hover {background-color: #f08a8aab;
}
</style>
<body>
<div id="dpLTE"><div class="row form-row"><div class="col-md-2 text-center text-muted"></div><div class="col-md-3 text-right text-muted">请选择年份:</div><div class="col-md-3 text-center text-muted"><select class="form-control" id="yearSelect"> </select></div><div class="col-md-4 text-center text-muted"><a onclick="initDataByYear()" class="btn btn-default"><i class="fa fa-refresh"></i>&nbsp;初始工作日数据</a></div></div><div class="row"><div class="col-md-3 text-center text-muted">一月</div><div class="col-md-3 text-center text-muted">二月</div><div class="col-md-3 text-center text-muted">三月</div><div class="col-md-3 text-center text-muted">四月</div></div><div class="row"><div class="col-md-3 text-center text-muted"><div id="month1"></div></div><div class="col-md-3 text-center text-muted"><div id="month2"></div></div><div class="col-md-3 text-center text-muted"><div id="month3"></div></div><div class="col-md-3 text-center text-muted"><div id="month4"></div></div></div><div class="row"><div class="col-md-3 text-center text-muted">五月</div><div class="col-md-3 text-center text-muted">六月</div><div class="col-md-3 text-center text-muted">七月</div><div class="col-md-3 text-center text-muted">八月</div></div><div class="row"><div class="col-md-3 text-center text-muted"><div id="month5"></div></div><div class="col-md-3 text-center text-muted"><div id="month6"></div></div><div class="col-md-3 text-center text-muted"><div id="month7"></div></div><div class="col-md-3 text-center text-muted"><div id="month8"></div></div></div><div class="row"><div class="col-md-3 text-center text-muted">九月</div><div class="col-md-3 text-center text-muted">十月</div><div class="col-md-3 text-center text-muted">十一月</div><div class="col-md-3 text-center text-muted">十二月</div></div><div class="row"><div class="col-md-3 text-center text-muted"><div id="month9"></div></div><div class="col-md-3 text-center text-muted"><div id="month10"></div></div><div class="col-md-3 text-center text-muted"><div id="month11"></div></div><div class="col-md-3 text-center text-muted"><div id="month12"></div></div></div><div class="row form-row" style="margin-top: 50px;"><div class="col-md-12 text-center text-muted">工作日查询</div></div><div class="row form-row"><div class="col-md-2 text-right text-muted">请选择日期:</div><div class="col-md-2 text-center text-muted"><input class="form-control" id="dateSelect" type="text"/></div><div class="col-md-2 text-right text-muted">请输入工作日偏移天数:</div><div class="col-md-2 text-right text-muted"><input class="form-control" id="days" type="number"/></div><div class="col-md-1 text-left text-muted"><a href="javascript:inputChange();" class="btn btn-primary">查询</a></div><div class="col-md-2 text-right text-muted"><input class="form-control" id="result" type="text" readonly="readonly"/></div></div><div class="row form-row" style="margin-top: 50px;"><div class="col-md-12 text-center text-muted">自然日查询</div></div><div class="row form-row"><div class="col-md-2 text-right text-muted">请选择日期:</div><div class="col-md-2 text-center text-muted"><input class="form-control" id="natureDateSelect" type="text"/></div><div class="col-md-2 text-right text-muted">请输入自然日偏移天数:</div><div class="col-md-2 text-right text-muted"><input class="form-control" id="natureDays" type="number"/></div><div class="col-md-1 text-left text-muted"><a href="javascript:natureInputChange();" class="btn btn-primary">查询</a></div><div class="col-md-2 text-right text-muted"><input class="form-control" id="natureResult" type="text" readonly="readonly"/></div></div><div class="row" style="margin-top: 50px;"></div>
</div><div th:include="include/footer_js::footer"></div><script type="text/javascript">$(function() {var year = formatDate(new Date(), 'yyyy');var data = {};var nextYear = year * 1 + 1;//下拉框范围:从2024年开始,到当前年份+1for (var i = 2024; i <= nextYear; i++) {data[i] = i;}// 初始化系统参数,选择年$('#yearSelect').selectBindEx({data: data,placeholder: '请选择年份',value: 'stringValue',text: 'name',allowClear: false,selected: [year],change: function (data) {initByYear(data);}});initByYear(year);laydate.render({elem: '#dateSelect',trigger: 'click',position: 'fixed',type: 'date',value: new Date(),format: 'yyyy-MM-dd'});laydate.render({elem: '#natureDateSelect',trigger: 'click',position: 'fixed',type: 'date',value: new Date(),format: 'yyyy-MM-dd'});});function initByYear(year) {var markDayData = [];$.SetForm({url: '../../system/workDay/listByYear?year=' + year + '&_=' + $.now(),param: {},async: false,success: function (data) {markDayData = data;}});// 月份for(var i = 1; i <= 12; i++) {// 渲染月份html结构renderMonthHtml(i);// 表格中显示日期showCalendarData(year, i, markDayData);}}/*** 渲染月份html结构*/function renderMonthHtml(month) {var calendar = $('#month' + month);calendar.empty();// 设置表格区的html结构var _theadHtml = '<thead>' +'<tr>' +'<th class="weekend">日</th>' +'<th>一</th>' +'<th>二</th>' +'<th>三</th>' +'<th>四</th>' +'<th>五</th>' +'<th class="weekend">六</th>' +'</tr>' +'</thead>';// 一个月最多31天,所以一个月最多占6行表格var _tbodyHtml = '<tbody>';for(var i = 0; i < 6; i++) {_tbodyHtml += '<tr>' +'<td></td>' +'<td></td>' +'<td></td>' +'<td></td>' +'<td></td>' +'<td></td>' +'<td></td>' +'</tr>';}_tbodyHtml += '</tbody>';// 表格divvar _boxHtml = '<div class="calendar-box">' +'<div class="calendar-content">' +'<table>' +_theadHtml +_tbodyHtml +'</table>' +'</div>' +'</div>';// 添加到节点中calendar.html(_boxHtml);}/*** 表格中显示数据,并设置类名*/function showCalendarData(year, month, markDayData) {// 设置表格中的日期数据var _table = $('#month' + month + ' table');var _tds = _table.find("td");var _firstDate = new Date(year, month - 1, 1);  // 当前月第一天for(var i = 0; i < _tds.length; i++) {var _td = $(_tds[i]);var _markHtml = '<span>&nbsp;</span>';// 日期编号// < 0,代表是上个月的日期// > 0,代表是这个月的日期// > 31,代表是下个月的日期,如1月有31天,超过31号的,是下个月2月var dayNumber = i + 1 - _firstDate.getDay();var _thisDate = new Date(year, month - 1, dayNumber); // 当前日期var _thisDateStr = formatDate(_thisDate, 'yyyy-MM-dd'); // 格式化,年月日var day = _thisDate.getDate(); // 当前日期,几号// 不可点击(默认)_td.addClass("calendar-disabled");_td.html(_markHtml);// 只显示当前月if (_thisDate.getMonth() == month - 1) {_markHtml = '<span>' + day + '</span>';_td.html(_markHtml);_td.removeClass("calendar-disabled"); //可点击_td.attr('id', _thisDateStr); // id,年月日_td.attr('title', _thisDateStr);_td.attr('year', year); // 年_td.attr('month', month); // 月_td.attr('day', day); // 日_td.attr('onclick', 'editDay(this)');// 特殊日期for (var j = 0; j < markDayData.length; j++) {var mItem = markDayData[j];var mdate = mItem.year + '-' + mItem.month + '-' + mItem.day;// 日期一致if (_thisDateStr == mdate) {_td.addClass("calendar-day-mark-td");// 存在特殊日期名称if (mItem.name) {if (mItem.type == 1) {// 工作日_markHtml = '<span class="calendar-day-mark calendar-workday">' + mItem.name + '</span>';_td.html(_markHtml);} else if (mItem.type == 2) {// 节假日_markHtml = '<span class="calendar-day-mark calendar-holiday">' + mItem.name + '</span>';_td.html(_markHtml);}}break;}}}}}function editDay(obj) {var id = $(obj).attr('id');var year = $(obj).attr('year');dialogOpen({title: '修改工作日配置',url: 'system/workDay/workDayEdit.html?_' + $.now(),width: '600px',height: '400px',scroll : true,success: function(iframeId){top.frames[iframeId].vm.workDay.id = id;top.frames[iframeId].vm.setForm();},yes : function(iframeId) {// 子页面传值到父页面var result = top.frames[iframeId].vm.acceptClick();if (result) {var temp = {};Object.assign(temp, result);$.ConfirmForm({url: '../../system/workDay/saveWorkDay?_=' + $.now(),param: temp,close : false,success: function(data) {initByYear(year);dialogCloseById(iframeId);}});}}});}function initDataByYear() {var year = $('#yearSelect').val();$.ConfirmForm({msg: '您是否要初始'+year+'年工作日数据?',url: '../../system/workDay/initDataByYear?year=' + year + '&_=' + $.now(),param: {},async: false,success: function (data) {initByYear(year);}});}function inputChange() {var result = getWorkDayAfterByDate($("#dateSelect").val(), $("#days").val());$("#result").val(result);}function natureInputChange() {var result = dateAddDays($("#natureDateSelect").val(), $("#natureDays").val());$("#natureResult").val(result);}</script>
</body>
</html>

2.工作日查询、自然日查询 js


/*** [dateAddDays 从某个日期增加n天后的日期]* @param  {[string]} dateStr  [日期字符串]* @param  {[int]} dayCount [增加的天数]* @return {[string]}[增加n天后的日期字符串]*/
function dateAddDays(dateStr,dayCount) {var tempDate=new Date(dateStr.replace(/-/g,"/"));//把日期字符串转换成日期格式var resultDate=new Date((tempDate/1000+(86400*dayCount))*1000);//增加n天后的日期return formatDate(resultDate, "yyyy-MM-dd");
}/*** 查询工作日* @param date 时间,格式:yyyy-MM-dd,为空将使用当前时间* @param days 偏移量,整数,为正向后偏移,为负向前偏移* @returns {*}*/
function getWorkDayAfterByDate(date, days) {if (isNullOrEmpty(date)) {date = formatDate(new Date(), 'yyyy-MM-dd');}if (isNullOrEmpty(days)) {return;}var result;$.SetForm({url: '../../system/workDay/getWorkDayAfterByDate?date=' + date + '&days=' + days + '&_=' + $.now(),param: {},async: false,success: function (data) {result = data;}});return result;
}

3.修改工作日配置

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head th:include="include/header_css::header('编辑-工作日配置')"></head>
<body><div id="dpLTE" class="container-fluid" v-cloak><table class="form" id="form"><colgroup><col width="20%" /></colgroup><tr><td class="formTitle">日期</td><td class="formValue">{{ workDay.year }}-{{ workDay.month }}-{{ workDay.day }}</td></tr><tr><td class="formTitle">工作日名称</td><td class="formValue"><input v-model.trim="workDay.name" type="text" class="form-control" placeholder="请输入工作日名称" errormsg="工作日名称" /></td></tr><tr><td class="formTitle">备注</td><td class="formValue"><input v-model.trim="workDay.descn" type="text" class="form-control" placeholder="请输入备注" errormsg="备注" /></td></tr><tr><td class="formTitle">工作日类型</td><td class="formValue"><label class="radio-inline"><input type="radio" name="holidayType" value="0" v-model="workDay.holidayType" isvalid="yes" checkexpession="NotNull"/> 工作日</label> <label class="radio-inline"><input type="radio" name="holidayType" value="1" v-model="workDay.holidayType" isvalid="yes" checkexpession="NotNull"/> 周末</label> <label class="radio-inline"><input type="radio" name="holidayType" value="2" v-model="workDay.holidayType" isvalid="yes" checkexpession="NotNull"/> 节日</label><label class="radio-inline"><input type="radio" name="holidayType" value="3" v-model="workDay.holidayType" isvalid="yes" checkexpession="NotNull"/> 调休</label></td></tr></table></div><div th:include="include/footer_js::footer"></div><script type="text/javascript">var vm = new Vue({el:'#dpLTE',data: {workDay: {id: null,year: null,month: null,day: null,holidayType: 0,}},methods : {setForm: function() {var param = {id: vm.workDay.id};$.SetForm({url: '../../system/workDay/getInfoByDate?_' + $.now(),param: param,success: function(data) {if (data) {vm.workDay = data;}}});},acceptClick: function() {if (!$('#form').Validform()) {return false;}return vm.workDay;}}})</script>
</body>
</html>

4.数据库,表结构

工作日配置表
字段名类型长度主键注释
idvarchar36

主键id

年月日拼接

如:2024-01-01

yearvarchar10年份
monthvarchar2月份
dayvarchar2
namevarchar200名称
weekint2星期几(1-7)
week_meanvarchar20

星期几(1-7)

文本,如:星期一

typeint2

类型

1:工作日

2:非工作日/节假日

默认为工作日

holiday_typeint2

节假日类型:

0:工作日

1:周末

2:节日

3:调休

oper_user_idvarchar36操作用户id
descnvarchar200备注
cdatedatetime0创建时间
ldatedatetime0修改时间
statusint2

状态:

1:有效

0:无效

 sql脚本:

CREATE TABLE `t_work_day` (`id` varchar(36) NOT NULL COMMENT '主键id',`year` varchar(10) DEFAULT NULL COMMENT '年份',`month` varchar(2) DEFAULT NULL COMMENT '月份',`day` varchar(2) DEFAULT NULL COMMENT '天',`name` varchar(200) DEFAULT NULL COMMENT '名称',`week` int(2) DEFAULT NULL COMMENT '星期几(1-7)',`week_mean` varchar(20) DEFAULT NULL COMMENT '星期几(1-7)',`type` int(2) DEFAULT NULL COMMENT '类型(1:工作日;2:非工作日/节假日;默认为工作日)',`holiday_type` int(2) DEFAULT NULL COMMENT '节假日类型:0工作日、1周末、2节日、3调休',`oper_user_id` varchar(36) DEFAULT NULL COMMENT '操作用户id',`descn` varchar(200) DEFAULT NULL COMMENT '备注',`cdate` datetime DEFAULT NULL COMMENT '创建时间',`ldate` datetime DEFAULT NULL COMMENT '修改时间',`status` int(2) DEFAULT NULL COMMENT '状态',PRIMARY KEY (`id`) USING BTREE,UNIQUE KEY `year_month_day` (`year`,`month`,`day`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='工作日配置表';

数据如下:

5.初始化数据

工作日数据由第三方初始化获取 ,参考:

工作日API文档:http://timor.tech/api/holiday

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

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

相关文章

Python 网络与并发编程(四)

文章目录 协程Coroutines协程的核心(控制流的让出和恢复)协程和多线程比较协程的优点协程的缺点 asyncio实现协程(重点) 协程Coroutines 协程&#xff0c;全称是“协同程序”&#xff0c;用来实现任务协作。是一种在线程中&#xff0c;比线程更加轻量级的存在&#xff0c;由程…

《欢乐钓鱼大师》攻略,钓友入坑必备!

欢迎来到《欢乐钓鱼大师》&#xff01;在这个游戏里&#xff0c;你可以尽情享受垂钓的乐趣&#xff0c;通过不断更换和升级高阶鱼竿&#xff0c;轻松地钓到各种稀有鱼类。因为许多玩家在挑战关卡时遇到了一些困难&#xff0c;所以今天我给大家带来了《欢乐钓鱼大师攻略指南》&a…

日志框架整合SpringBoot保姆级教程+日志文件拆分(附源码)

目录 介绍 日志概述 日志文件 调试日志 系统日志 日志框架 日志框架的作用 日志框架的价值 流行的日志框架 SLF4J日志门面 介绍 环境搭建简单测试 集成log4j logback Logback简介 Logback中的组件 Logback配置文件 日志输出格式 控制台输出日志 输出日志到…

vue-admin-template项目实现中英文切换

实现效果&#xff1a; 1.安装 *注意版本号 npm install vue-i18n8.24.5 -S2.新建文件夹 在src目录下新建lang文件夹&#xff0c;里面有3个文件 // index.js import Vue from vue import VueI18n from vue-i18n import Cookies from js-cookie import elementEnLocale fr…

OpenHarmony音视频—opus

简介 Opus是一种用于在互联网上进行交互式语音和音频传输的编解码器。它可以从低比特率窄带语音扩展到非常高的高品质立体声音乐。 下载安装 直接在OpenHarmony-SIG仓中搜索opus并下载。 使用说明 以OpenHarmony 3.1 Beta的rk3568版本为例 将下载的opus库代码存在以下路径&a…

怎样选购内衣洗衣机?2024年5款最新推荐机型种草

随着科技的不断发展&#xff0c;内衣洗衣机成为了家家户户必备的小家电之一&#xff0c;为我们的生活带来了极大的便利。但面对市场上众多的内衣洗衣机品牌&#xff0c;如何选择一款质量好的内衣洗衣机呢&#xff1f;本文将为您推荐5款最新的内衣洗衣机品牌&#xff0c;从而帮助…

二倍体毛白杨(Populus tomentosa Carr.)基因组-春天都是杨树毛子???-文献精读-11

High quality haplotype-resolved genome assemblies of Populus tomentosa Carr., a stabilized interspecific hybrid species widespread in Asia 高质量二倍体解析的毛白杨&#xff08;Populus tomentosa Carr.&#xff09;基因组组装&#xff0c;这是一种在亚洲广泛分布的…

SCSS的基本使用(一)

目录 一、使用&符号来引用父选择器 二、scss的语法 三、变量&#xff08;Variables&#xff09; 四、嵌套&#xff08;Nesting&#xff09; 五、mixin 和 include 六、extend 继承 七、import 与 Partials 八、if简单判断 九、if复杂判断 一、使用&符号来引用父…

原型链prototype、__proto、constructor的那些问题整理

再了解原型链之前,我们先来看看构造函数和实例对象的打印结构 - 函数 这里我们定义一个构造函数Fn,然后打印它的结构吧 function Fn(){} console.dir(Fn)控制台得到结构 从上面结构我们能看的出来,函数有两种原型,一种是作为函数特有的原型:prototype,另一种是作为对象的__…

Java设计模式 _结构型模式_适配器模式

一、适配器模式 **1、适配器模式&#xff08;Adapter Pattern&#xff09;**是一种结构型设计模式。适配器类用来作为两个不兼容的接口之间的桥梁&#xff0c;使得原本不兼容而不能一起工作的那些类可以一起工作。譬如&#xff1a;读卡器就是内存卡和笔记本之间的适配器。您将…

这样狠心的女人,不配当妈!

男人小时候经常受父亲虐待&#xff0c;初中毕业就到深圳打拼&#xff0c;基本与父母再无联系。 因为心有创伤&#xff0c;他没有考虑过结婚的事情&#xff0c;也不希望自己的娃成为受苦的一代。 然而&#xff0c;机缘巧合&#xff0c;他偶然之间认识了自己的爱人。 在妻子小的时…

意法半导体STM32F407VET6TR单片机优缺点、参数、应用和引脚封装

ST(意法半导体)的型号STM32F407VET6TR属于32位MCU微控制器&#xff0c;基于高性能的ArmCortex-M4 32位RISC核心&#xff0c;工作频率高达168MHz。单精度浮点单元(FPU)用于Cortex-M4核心&#xff0c;支持所有Arm单精度数据处理指令和数据类型。它还实现了一套完整的DSP指令和一个…

printjs打印表格的时候多页的时候第一页出现空白

现象&#xff1a;打印多页的时候第一页空白了&#xff0c;一页的时候没有问题 插件&#xff1a;printjs 网上搜索半天找到的方式解决&#xff1a; 1. 对于我这次的现象毫无作用。其他情况不得而知&#xff0c;未遇见过。&#xff08;这个应该是大家用的比较多的方式&#xf…

[SpringBoot] JWT令牌——登录校验

JWT&#xff08;JSON Web Token&#xff09;是一种用于在网络应用之间传递信息的开放标准&#xff08;RFC 7519&#xff09;。它由三部分组成&#xff1a;头部&#xff08;header&#xff09;、载荷&#xff08;payload&#xff09;和签名&#xff08;signature&#xff09;。J…

Mybatis-plus 字段结果为NULL

问题 Mybatis-plus 字段结果为NULL 详细问题 笔者使用SpringBootMybatis-plus 进行项目开发。进行接口请求测试&#xff0c;在确定SQL语句没有问题的前提下&#xff0c;返回记录部分字段(譬如字段name)为空。 解决方案 修改Mybatis-plus中mapper的xml文件&#xff0c;使re…

JavaEE初阶——多线程(七)——定时器

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 小比特 大梦想 此篇文章与大家分享多线程的第七篇文章——关于定时器 如果有不足的或者错误的请您指出! 目录 4.定时器4.1标准库提供的定时器4.2自己实现一个定时器4.2.1任务类4.2.2Timer类4.2.3 有一个线程来负…

如何解决IntelliJ IDEA 2024打开项目时频繁闪退问题

&#x1f42f; 如何解决IntelliJ IDEA 2024打开项目时频繁闪退问题 &#x1f43e; 文章目录 &#x1f42f; 如何解决IntelliJ IDEA 2024打开项目时频繁闪退问题 &#x1f43e;摘要引言正文&#x1f4d8; 识别问题&#x1f4d9; 内存配置调整步骤1: 定位vmoptions文件步骤2: 修改…

svg图标填充渐变色及CSS鼠标悬停纯色渐变色转换

svg图标填充渐变色及CSS鼠标悬停纯色渐变色转换&#xff1a; HTML&#xff1a; <!--底部导航--> <ul class"milliaNav"> <li class"active"><a href"#"> <svg class"icon" viewBox"0 0 1024 1024&qu…

1分钟掌握 Python 函数参数

任何编程语言函数都是非常重要的一部分&#xff0c;而在进行函数调用时&#xff0c;了解函数的参数传递方式是非常有必要的。Python中支持哪些传参方式呢&#xff1f; Python中的传参方式是比较灵活的&#xff0c;主要包括以下六种&#xff1a; 按照位置传参按照关键字传参默…

力扣--N皇后

题目: 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的解决方案。…