Samien há 1 ano atrás
commit
74a1e6a614

BIN
.DS_Store


+ 11 - 0
README.md

@@ -0,0 +1,11 @@
+# 说明
+
+需要用web服务器打开,否则Excel无法导出
+
+
+
+模拟胸腔穿刺术专用
+
+
+
+版本:v1.0

+ 133 - 0
css/index.css

@@ -0,0 +1,133 @@
+.score-list {
+    width: 100%;
+    border-collapse: collapse;
+    margin-top: 8px;
+}
+
+.score-list th,
+.score-list td {
+
+    padding: 1px 4px;
+    border: 1px solid #ddd;
+    text-align: left;
+    font-size: 15px;
+
+}
+
+.tr-after td {
+    text-align: center;
+}
+
+.score-list th {
+
+    background-color: #f2f2f2;
+    border: 1px solid #ddd;
+}
+
+/* .score-list tr:hover {
+    background-color: #f5f5f5;
+} */
+
+tr:nth-child(even) {
+    background-color: #c1d6b0;
+    /* 双数行的背景色 */
+    color: #000;
+}
+
+.score {
+    color: red;
+    font-weight: bold;
+    font-size: 24px;
+    white-space: nowrap;
+}
+
+
+.no-print {
+    display: none;
+}
+
+#dropArea {
+    width: 300px;
+    height: 200px;
+    border: 2px dashed #aaa;
+    border-radius: 5px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+}
+
+#content.dragover {
+    border-color: #42b983;
+}
+
+.drop-text {
+    margin-bottom: 10px;
+}
+
+.time {
+    font-size: 9px;
+}
+
+.time-th {
+    width: 145px;
+}
+
+#content {
+    width: 600px;
+    height: 210px;
+    border: 2px dashed #aaa;
+    margin: 0 auto;
+    border-radius: 5px;
+    text-align: center;
+    /* padding: 30px 0; */
+}
+
+.error-text {
+    margin-top: 20px;
+    font-size: 14px;
+}
+
+.span {
+    color: #3b69e6;
+    font-weight: bold;
+}
+
+.font-size11 {
+    font-size: 12px;
+    white-space: nowrap;
+    width: 10px;
+}
+
+.red {
+    color: red;
+    font-weight: bold;
+}
+
+.colour {
+    color: #42b983;
+    font-weight: bold;
+}
+
+.folder {
+    width: 100px;
+    height: 40px;
+    border-radius: 8px;
+    line-height: 40px;
+    color: #fff;
+    margin-left: 50px;
+    margin-top: 20px;
+    background-color: #5895f1;
+    border: 1px solid;
+}
+
+.where-div {
+    text-align: center;
+}
+
+.where-search {
+    text-align: center;
+    width: 700px;
+    margin: 20px auto;
+    
+}

+ 524 - 0
css/jquery-ui-1.9.2.custom.css

@@ -0,0 +1,524 @@
+/*! jQuery UI - v1.9.2 - 2012-11-23
+* http://jqueryui.com
+* Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css
+* To view and modify this theme, visit http://jqueryui.com/themeroller/
+* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */
+
+.ui-datepicker-time{font-family:"微软雅黑"; width: 195px; height: 28px; line-height: 28px;padding-left:38px; margin: 10px 0  5px 0; text-indent: 5px;background: url("overcast/images/xiala_jt01.png") white no-repeat;
+		border: 1px solid #cbcbcb;cursor: pointer;
+    }
+    .ui-datepicker-css{display:none; position: absolute;z-index: 99999; background: #FFF; width: 300px;padding:2px;border:1px solid #ccc;
+		box-shadow: 0 0 3px 2px #e4e4e4;-moz-box-shadow: 0 0 3px 2px #e4e4e4;-webkit-box-shadow: 0 0 3px 2px #e4e4e4;
+    }
+    .ui-datepicker-quick p{ line-height: 30px; background: #438eb9;color: white;font-size: 18px; text-indent: 10px;	padding:0; margin:0 0 10px 0;
+    }
+    .ui-datepicker-quick p .ui-close-date{
+        /*background: url("images/stop_d.png") no-repeat;*/
+		font-family:Zero Threes,Consolas;text-align:left;  float: right;
+		font-size:14px;
+        display:inline-block;
+		height:22px;
+		width:22px;
+		background:none;
+		padding:0;
+		margin:4px;
+		text-indent: 0px;
+		text-align:center;
+		line-height:22px;
+		cursor:pointer;
+		-moz-border-radius:50%;
+		-ms-border-radius:50%;
+		-o-border-radius:50%;
+		-webkit-border-radius:50%;
+		border-radius:50%;
+    }
+	.ui-datepicker-quick p .ui-close-date:hover{background:#2175a6;}
+    .ui-datepicker-choose{
+        margin-top: 20px;
+		background:#f8f8f8;
+    }
+	.ui-datepicker-choose p{
+		
+		line-height: 30px;
+        background: #e7e7e7;
+        color: #999;
+        font-size: 18px;
+        text-indent: 10px;
+		padding:0; margin:0 0 10px 0;
+		}
+
+    .ui-datepicker-date{
+        height: 50px;
+        text-align: center;
+    }
+    .ui-datepicker-date input{
+      
+    }
+	.ui-date-quick-button{ cursor:pointer; width:24%; color:#fff; margin:6px 3%; height:30px;border:4px solid #6fb3e0; background:#6fb3e0;}
+	.ui-date-quick-button:hover{ background:#4f99c6;}
+	.startDate,.endDate{ border:1px solid #ccc;  height: 25px;
+        width: 40%;
+        text-align: center;}
+
+/*********以上是界面显示样式*********************/
+/*********以下是两个日历控制*********************/
+
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
+.ui-helper-clearfix:after { clear: both; }
+.ui-helper-clearfix { zoom: 1; }
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }
+.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }
+.ui-accordion .ui-accordion-noicons { padding-left: .7em; }
+.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
+.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
+.ui-autocomplete {
+	position: absolute;
+	top: 0;
+	left: 0;
+	cursor: default;
+}
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
+.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }
+.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.ui-buttonset { margin-right: 7px; }
+.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.ui-datepicker .ui-datepicker-prev { left:2px; }
+.ui-datepicker .ui-datepicker-next { right:2px; }
+.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.ui-datepicker select.ui-datepicker-month, 
+.ui-datepicker select.ui-datepicker-year { width: 49%;}
+.ui-datepicker table {width: 100%; font-size: .8em; border-collapse: collapse; margin:0 0 .4em; }
+.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.ui-datepicker td { border: 0; padding: 1px; }
+.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: center; text-decoration: none; }
+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi { width:auto; }
+.ui-datepicker-multi .ui-datepicker-group { float:left; }
+.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.ui-datepicker-rtl { direction: rtl; }
+.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.ui-datepicker-cover {
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}.ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; }
+.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
+.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.ui-draggable .ui-dialog-titlebar { cursor: move; }
+.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }
+.ui-menu .ui-menu { margin-top: -3px; position: absolute; }
+.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }
+.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }
+.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }
+.ui-menu .ui-menu-item a.ui-state-focus,
+.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }
+
+.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }
+.ui-menu .ui-state-disabled a { cursor: default; }
+
+/* icon support */
+.ui-menu-icons { position: relative; }
+.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }
+
+/* left-aligned */
+.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }
+
+/* right-aligned */
+.ui-menu .ui-menu-icon { position: static; float: right; }
+.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }.ui-resizable { position: relative;}
+.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }
+.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }
+.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }
+.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }
+.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */
+.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */
+.ui-spinner-up { top: 0; }
+.ui-spinner-down { bottom: 0; }
+
+/* TR overrides */
+.ui-spinner .ui-icon-triangle-1-s {
+	/* need to fix icons sprite */
+	background-position:-65px -16px;
+}
+.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.ui-tooltip {
+	padding: 8px;
+	position: absolute;
+	z-index: 9999;
+	max-width: 300px;
+	-webkit-box-shadow: 0 0 5px #aaa;
+	box-shadow: 0 0 5px #aaa;
+}
+/* Fades and background-images don't work well together in IE6, drop the image */
+* html .ui-tooltip {
+	background-image: none;
+}
+body .ui-tooltip { border-width: 2px; }
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
+/* .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(overcast/images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } */
+
+.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff  50% 50% repeat-x; color: #222222; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #fff; background: #fff  50% 50% repeat-x; color: #222222; font-weight: bold; }
+.ui-widget-header a { color: #222222; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #ebf4f8; background: #ebf4f8  50% 50% repeat-x; font-weight: normal; color: #555555; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #d5eaf3; background: #d5eaf3 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #212121; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #c5e6f4; background: #c5e6f4  50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #2283c5; background: #2283c5  50% 50% repeat-x; color: #fff; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec  50% 50% repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(overcast/images/ui-icons_222222_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(overcast/images/ui-icons_222222_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(overcast/images/ui-icons_999999_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(overcast/images/ui-icons_888888_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(overcast/images/ui-icons_454545_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(overcast/images/ui-icons_454545_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(overcast/images/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(overcast/images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-on { background-position: -96px -144px; }
+.ui-icon-radio-off { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
+.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(overcast/images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(overcast/images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }

BIN
css/overcast/images/ui-icons_3383bb_256x240.png


BIN
css/overcast/images/ui-icons_454545_256x240.png


BIN
css/overcast/images/ui-icons_70b2e1_256x240.png


BIN
css/overcast/images/ui-icons_999999_256x240.png


BIN
css/overcast/images/ui-icons_fbc856_256x240.png


BIN
css/overcast/images/xiala_jt01.png


BIN
doc/成绩查看器环境使用文档.docx


+ 66 - 0
error/400.html

@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="utf-8">
+  <title>400 错误 - phpstudy</title>
+  <meta name="keywords" content="">
+  <meta name="description" content="">
+  <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black"> 
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="format-detection" content="telephone=no">
+  <meta HTTP-EQUIV="pragma" CONTENT="no-cache"> 
+  <meta HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> 
+  <meta HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> 
+  <meta HTTP-EQUIV="expires" CONTENT="0">
+  <style>
+    body{
+      font: 16px arial,'Microsoft Yahei','Hiragino Sans GB',sans-serif;
+    }
+    h1{
+      margin: 0;
+      color:#3a87ad;
+      font-size: 26px;
+    }
+    .content{
+      width: 45%;
+      margin: 0 auto;
+     
+    }
+    .content >div{
+      margin-top: 200px;
+      padding: 20px;
+      background: #d9edf7;  
+      border-radius: 12px;
+    }
+    .content dl{
+      color: #2d6a88;
+      line-height: 40px;
+    } 
+    .content div div {
+      padding-bottom: 20px;
+      text-align:center;
+    }
+  </style>
+</head>
+<body>
+  <div class="content">
+      <div>
+           <h1>HTTP 400 - Bad Request</h1>
+        <dl>
+          <dt>错误说明:因为错误的语法导致服务器无法理解请求信息。</dt>
+          <dt>原因1:客户端发起的请求不符合服务器对请求的某些限制,或者请求本身存在一定的错误。</dt>
+		  <dd>解决办法:</dd>
+          <dd>链接中有特殊字符或者链接长度过长导致,请对应修改.</dd>
+          <dt>原因2:request header 或者 cookie 过大所引起</dt>
+		  <dd>解决办法:</dd>
+          <dd>crtl+shift+delete 快捷键清除cookie.</dd>
+        </dl>
+        <div>使用手册,视频教程,BUG反馈,官网地址: <a href="https://www.xp.cn"  target="_blank">www.xp.cn</a> </div>
+    
+      </div>
+    </div> 
+</body>
+</html>

+ 66 - 0
error/403.html

@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="utf-8">
+  <title>403 错误 - phpstudy</title>
+  <meta name="keywords" content="">
+  <meta name="description" content="">
+  <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black"> 
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="format-detection" content="telephone=no">
+  <meta HTTP-EQUIV="pragma" CONTENT="no-cache"> 
+  <meta HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> 
+  <meta HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> 
+  <meta HTTP-EQUIV="expires" CONTENT="0">
+  <style>
+    body{
+      font: 16px arial,'Microsoft Yahei','Hiragino Sans GB',sans-serif;
+    }
+    h1{
+      margin: 0;
+      color:#3a87ad;
+      font-size: 26px;
+    }
+    .content{
+      width: 45%;
+      margin: 0 auto;
+     
+    }
+    .content >div{
+      margin-top: 200px;
+      padding: 20px;
+      background: #d9edf7;  
+      border-radius: 12px;
+    }
+    .content dl{
+      color: #2d6a88;
+      line-height: 40px;
+    } 
+    .content div div {
+      padding-bottom: 20px;
+      text-align:center;
+    }
+  </style>
+</head>
+<body>
+  <div class="content">
+      <div>
+           <h1>403 - Forbidden 禁止访问: 访问被拒绝</h1>
+        <dl>
+          <dt>错误说明:禁止访问,服务器拒绝访问</dt>
+          <dt>原因1:未找到默认的索引文件</dt>
+		  <dd>解决办法:</dd>
+          <dd>IIS中【启用默认内容文档】选项中将默认打开文档修改为程序首页文件格式,如:index.html或者index.php</dd>
+          <dt>原因2:文件夹安全权限导致</dt>
+		  <dd>解决办法:</dd>
+          <dd>程序文件-右击-属性-安全-Users-修改为读取和执行权限</dd>
+        </dl>
+        <div>使用手册,视频教程,BUG反馈,官网地址: <a href="https://www.xp.cn"  target="_blank">www.xp.cn</a> </div>
+    
+      </div>
+    </div> 
+</body>
+</html>

+ 75 - 0
error/404.html

@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="utf-8">
+  <title>404 错误 - phpstudy</title>
+  <meta name="keywords" content="">
+  <meta name="description" content="">
+  <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black"> 
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="format-detection" content="telephone=no">
+  <meta HTTP-EQUIV="pragma" CONTENT="no-cache"> 
+  <meta HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> 
+  <meta HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> 
+  <meta HTTP-EQUIV="expires" CONTENT="0">
+  <style>
+    body{
+      font: 16px arial,'Microsoft Yahei','Hiragino Sans GB',sans-serif;
+    }
+    h1{
+      margin: 0;
+      color:#3a87ad;
+      font-size: 26px;
+    }
+    .content{
+      width: 45%;
+      margin: 0 auto;
+     
+    }
+    .content >div{
+      margin-top: 50px;
+      padding: 20px;
+      background: #d9edf7;  
+      border-radius: 12px;
+    }
+    .content dl{
+      color: #2d6a88;
+      line-height: 40px;
+    } 
+    .content div div {
+      padding-bottom: 20px;
+      text-align:center;
+    }
+  </style>
+</head>
+<body>
+  <div class="content">
+      <div>
+           <h1>404 - Page Not Found 未找到</h1>
+        <dl>
+          <dt>错误说明:请求的页面不存在</dt>
+          <dt>原因1:访问的文档权限不够</dt>
+		  <dd>解决办法:</dd>
+          <dd>修改文件权限为755,windos系统修改目录权限为可写可读。</dd>
+          <dt>原因2:防火墙的原因</dt>
+		  <dd>解决办法:</dd>
+          <dd>先关闭让防火墙通过WWW服务。</dd>
+		  <dt>原因3:站点根目录无默认访问文件</dt>
+		  <dd>解决办法:</dd>
+          <dd>在根目录中创建index.html或者创建index.php。</dd>
+		  <dt>原因4:站点配置目录不正确</dt>
+		  <dd>解决办法:</dd>
+          <dd>将网站应用程序复制到站点目录中,或者修改站点配置目录指定到应用程序目录中。</dd>
+		  <dt>原因5:站点使用了伪静态</dt>
+		  <dd>解决办法:</dd>
+          <dd>将伪静态规则删除,或者重新编写正确的伪静态规则,或关闭伪静态配置。</dd>
+        </dl>
+        <div>使用手册,视频教程,BUG反馈,官网地址: <a href="https://www.xp.cn"  target="_blank">www.xp.cn</a> </div>
+    
+      </div>
+    </div> 
+</body>
+</html>

+ 78 - 0
error/500.html

@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="utf-8">
+  <title>500 错误 - phpstudy</title>
+  <meta name="keywords" content="">
+  <meta name="description" content="">
+  <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black"> 
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="format-detection" content="telephone=no">
+  <meta HTTP-EQUIV="pragma" CONTENT="no-cache"> 
+  <meta HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> 
+  <meta HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> 
+  <meta HTTP-EQUIV="expires" CONTENT="0">
+  <style>
+    body{
+      font: 16px arial,'Microsoft Yahei','Hiragino Sans GB',sans-serif;
+    }
+    h1{
+      margin: 0;
+      color:#3a87ad;
+      font-size: 26px;
+    }
+    .content{
+      width: 40%;
+      margin: 0 auto;
+     
+    }
+    .content >div{
+      margin-top: 50px;
+      padding: 20px;
+      background: #d9edf7;  
+      border-radius: 12px;
+    }
+    .content dl{
+      color: #2d6a88;
+      line-height: 40px;
+    } 
+    .content div div {
+      padding-bottom: 20px;
+      text-align:center;
+    }
+  </style>
+</head>
+<body>
+  <div class="content">
+      <div>
+           <h1>HTTP 500 - Internal Server Error 服务器内部错误</h1>
+        <dl>
+          <dt>错误说明:服务器内部错误,无法完成请求</dt>
+          <dt>原因1:伪静态规则不正确</dt>
+		  <dd>解决办法:</dd>
+          <dd>修改伪静态。</dd>
+          <dt>原因2:php版本与网站程序不兼容</dt>
+		  <dd>解决办法:</dd>
+          <dd>更换PHP版本。</dd>
+		  <dt>原因3:网站无法连接至数据库</dt>
+		  <dd>解决办法:</dd>
+          <dd>正确修改站点的数据库配置文件。</dd>
+		  <dt>原因4:php禁用了某一函数,需要开启</dt>
+		  <dd>解决办法:</dd>
+          <dd>开启相关禁用函数。</dd>
+		  <dt>原因5:站点需要访问站外目录</dt>
+		  <dd>解决办法:</dd>
+          <dd>关闭防跨站处理。</dd>
+		  <dt>原因6:源码本身有BUG</dt>
+		  <dd>解决办法:</dd>
+          <dd>修复源码bug。</dd>
+        </dl>
+        <div>使用手册,视频教程,BUG反馈,官网地址: <a href="https://www.xp.cn"  target="_blank">www.xp.cn</a> </div>
+    
+      </div>
+    </div> 
+</body>
+</html>

+ 63 - 0
error/501.html

@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="utf-8">
+  <title>501 错误 - phpstudy</title>
+  <meta name="keywords" content="">
+  <meta name="description" content="">
+  <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black"> 
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="format-detection" content="telephone=no">
+  <meta HTTP-EQUIV="pragma" CONTENT="no-cache"> 
+  <meta HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> 
+  <meta HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> 
+  <meta HTTP-EQUIV="expires" CONTENT="0">
+  <style>
+    body{
+      font: 16px arial,'Microsoft Yahei','Hiragino Sans GB',sans-serif;
+    }
+    h1{
+      margin: 0;
+      color:#3a87ad;
+      font-size: 26px;
+    }
+    .content{
+      width: 45%;
+      margin: 0 auto;
+     
+    }
+    .content >div{
+      margin-top: 200px;
+      padding: 20px;
+      background: #d9edf7;  
+      border-radius: 12px;
+    }
+    .content dl{
+      color: #2d6a88;
+      line-height: 40px;
+    } 
+    .content div div {
+      padding-bottom: 20px;
+      text-align:center;
+    }
+  </style>
+</head>
+<body>
+  <div class="content">
+      <div>
+           <h1>HTTP 501 - Not Implemented</h1>
+        <dl>
+          <dt>错误说明:服务器没有相应的执行动作来完成当前请求。</dt>
+          <dt>原因1:Web 服务器不支持实现此请求所需的功能</dt>
+		  <dd>解决办法:</dd>
+          <dd>可以用来HttpWebRequest指定一个UserAgent来试试的,有时候你可以换电脑来测试一下的。</dd>
+        </dl>
+        <div>使用手册,视频教程,BUG反馈,官网地址: <a href="https://www.xp.cn"  target="_blank">www.xp.cn</a> </div>
+    
+      </div>
+    </div> 
+</body>
+</html>

+ 75 - 0
error/502.html

@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="utf-8">
+  <title>502 错误 - phpstudy</title>
+  <meta name="keywords" content="">
+  <meta name="description" content="">
+  <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black"> 
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="format-detection" content="telephone=no">
+  <meta HTTP-EQUIV="pragma" CONTENT="no-cache"> 
+  <meta HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> 
+  <meta HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> 
+  <meta HTTP-EQUIV="expires" CONTENT="0">
+  <style>
+    body{
+      font: 16px arial,'Microsoft Yahei','Hiragino Sans GB',sans-serif;
+    }
+    h1{
+      margin: 0;
+      color:#3a87ad;
+      font-size: 26px;
+    }
+    .content{
+      width: 45%;
+      margin: 0 auto;
+     
+    }
+    .content >div{
+      margin-top: 50px;
+      padding: 20px;
+      background: #d9edf7;  
+      border-radius: 12px;
+    }
+    .content dl{
+      color: #2d6a88;
+      line-height: 40px;
+    } 
+    .content div div {
+      padding-bottom: 20px;
+      text-align:center;
+    }
+  </style>
+</head>
+<body>
+  <div class="content">
+      <div>
+           <h1>HTTP 502 - Bad Gateway 没有响应</h1>
+        <dl>
+          <dt>错误说明:坏的网关,http向后端节点请求,没有响应</dt>
+          <dt>原因1:DNS 缓冲</dt>
+		  <dd>解决办法:</dd>
+          <dd>在dos窗口运行 ipconfig /flushdns,该命令会刷新DNS缓冲。</dd>
+          <dt>原因2:浏览器代理</dt>
+		  <dd>解决办法:</dd>
+          <dd>关掉代理。</dd>
+		  <dt>原因3:dns 被劫持了,即使使用国外的dns,也会被劫持</dt>
+		  <dd>解决办法:</dd>
+          <dd>去掉VPN服务器的DNS。切换另外的dns。在windows系统中,可以在本地网络连接的属性中,去掉默认的dns,选用国外的dns,比如google的或opendns。</dd>
+		  <dt>原因4:php执行超时</dt>
+		  <dd>解决办法:</dd>
+          <dd>修改/usr/local/php/etc/php.ini 将max_execution_time 改为300。</dd>
+		  <dt>原因5:nginx等待时间超时</dt>
+		  <dd>解决办法:</dd>
+          <dd>适当增加nginx.conf配置文件中FastCGI的timeout时间。</dd>
+        </dl>
+        <div>使用手册,视频教程,BUG反馈,官网地址: <a href="https://www.xp.cn"  target="_blank">www.xp.cn</a> </div>
+    
+      </div>
+    </div> 
+</body>
+</html>

+ 66 - 0
error/503.html

@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="utf-8">
+  <title>503 错误 - phpstudy</title>
+  <meta name="keywords" content="">
+  <meta name="description" content="">
+  <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black"> 
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="format-detection" content="telephone=no">
+  <meta HTTP-EQUIV="pragma" CONTENT="no-cache"> 
+  <meta HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> 
+  <meta HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> 
+  <meta HTTP-EQUIV="expires" CONTENT="0">
+  <style>
+    body{
+      font: 16px arial,'Microsoft Yahei','Hiragino Sans GB',sans-serif;
+    }
+    h1{
+      margin: 0;
+      color:#3a87ad;
+      font-size: 26px;
+    }
+    .content{
+      width: 45%;
+      margin: 0 auto;
+     
+    }
+    .content >div{
+      margin-top: 200px;
+      padding: 20px;
+      background: #d9edf7;  
+      border-radius: 12px;
+    }
+    .content dl{
+      color: #2d6a88;
+      line-height: 40px;
+    } 
+    .content div div {
+      padding-bottom: 20px;
+      text-align:center;
+    }
+  </style>
+</head>
+<body>
+  <div class="content">
+      <div>
+           <h1>HTTP 503 - Service Unavailable 服务不可用</h1>
+        <dl>
+          <dt>错误说明:服务当前不可用</dt>
+          <dt>原因1:服务不可用状态</dt>
+		  <dd>解决办法:</dd>
+          <dd>服务器或许就是正在维护或者暂停了,你可以联系一下服务器空间商。</dd>
+          <dt>原因2:程序占用资源太多</dt>
+		  <dd>解决办法:</dd>
+          <dd>通过设置应用程序池把账户改为NetworkService即可解决。</dd>
+        </dl>
+        <div>使用手册,视频教程,BUG反馈,官网地址: <a href="https://www.xp.cn"  target="_blank">www.xp.cn</a> </div>
+    
+      </div>
+    </div> 
+</body>
+</html>

+ 69 - 0
error/504.html

@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="utf-8">
+  <title>504 错误 - phpstudy</title>
+  <meta name="keywords" content="">
+  <meta name="description" content="">
+  <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black"> 
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="format-detection" content="telephone=no">
+  <meta HTTP-EQUIV="pragma" CONTENT="no-cache"> 
+  <meta HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> 
+  <meta HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> 
+  <meta HTTP-EQUIV="expires" CONTENT="0">
+  <style>
+    body{
+      font: 16px arial,'Microsoft Yahei','Hiragino Sans GB',sans-serif;
+    }
+    h1{
+      margin: 0;
+      color:#3a87ad;
+      font-size: 26px;
+    }
+    .content{
+      width: 45%;
+      margin: 0 auto;
+     
+    }
+    .content >div{
+      margin-top: 50px;
+      padding: 20px;
+      background: #d9edf7;  
+      border-radius: 12px;
+    }
+    .content dl{
+      color: #2d6a88;
+      line-height: 40px;
+    } 
+    .content div div {
+      padding-bottom: 20px;
+      text-align:center;
+    }
+  </style>
+</head>
+<body>
+  <div class="content">
+      <div>
+           <h1>HTTP 504 - Gateway Timeout 网关超时</h1>
+        <dl>
+          <dt>错误说明:网关超时,服务器响应时间,达到超出设定的范围 </dt>
+          <dt>原因1:后端电脑之间 IP 通讯缓慢而产生</dt>
+		  <dd>解决办法:</dd>
+          <dd>如果您的 Web 服务器由某一网站托管, 只有负责那个网站设置的人员才能解决这个问题。</dd>
+          <dt>原因2:由于nginx默认的fastcgi进程响应的缓冲区太小造成的错误</dt>
+		  <dd>解决办法:</dd>
+          <dd>一般默认的fastcgi进程响应的缓冲区是8K,这时可以设置大一点,在nginx.conf里,加入:fastcgi_buffers 8 128k这表示设置fastcgi缓冲区为8块128k大小的空间。当然如果在进行某一项即时的操作, 可能需要nginx的超时参数调大点, 例如设置成60秒:send_timeout 60;经过这两个参数的调整,一般不会再提示“504 Gateway Time-out”错误,问题基本解决。</dd>
+		  <dt>原因3:PHP环境的配置问题</dt>
+		  <dd>解决办法:</dd>
+          <dd>更改php-fpm的几处配置: 把max_children由之前的10改为现在的30,这样就可以保证有充足的php-cgi进程可以被使用; 把request_terminate_timeout由之前的0s改为60s,这样php-cgi进程 处理脚本的超时时间就是60秒,可以防止进程都被挂起,提高利用效率。 接着再更改nginx的几个配置项,减少FastCGI的请求次数,尽量维持buffers不变: fastcgi_buffers由 4 64k 改为 2 256k; fastcgi_buffer_size 由 64k 改为 128K; fastcgi_busy_buffers_size 由 128K 改为 256K; fastcgi_temp_file_write_size 由 128K 改为 256K。 重新加载php-fpm和nginx的配置,再次测试,如果没有出现“504 Gateway Time-out”错误,问题解决。</dd>
+        </dl>
+        <div>使用手册,视频教程,BUG反馈,官网地址: <a href="https://www.xp.cn"  target="_blank">www.xp.cn</a> </div>
+    
+      </div>
+    </div> 
+</body>
+</html>

+ 66 - 0
error/505.html

@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="utf-8">
+  <title>505 错误 - phpstudy</title>
+  <meta name="keywords" content="">
+  <meta name="description" content="">
+  <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black"> 
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="format-detection" content="telephone=no">
+  <meta HTTP-EQUIV="pragma" CONTENT="no-cache"> 
+  <meta HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> 
+  <meta HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> 
+  <meta HTTP-EQUIV="expires" CONTENT="0">
+  <style>
+    body{
+      font: 16px arial,'Microsoft Yahei','Hiragino Sans GB',sans-serif;
+    }
+    h1{
+      margin: 0;
+      color:#3a87ad;
+      font-size: 26px;
+    }
+    .content{
+      width: 45%;
+      margin: 0 auto;
+     
+    }
+    .content >div{
+      margin-top: 200px;
+      padding: 20px;
+      background: #d9edf7;  
+      border-radius: 12px;
+    }
+    .content dl{
+      color: #2d6a88;
+      line-height: 40px;
+    } 
+    .content div div {
+      padding-bottom: 20px;
+      text-align:center;
+    }
+  </style>
+</head>
+<body>
+  <div class="content">
+      <div>
+           <h1>HTTP 505 - HTTP Version Not Supported</h1>
+        <dl>
+          <dt>错误说明:HTTP 版本不受支持。</dt>
+          <dt>原因1:您的 Web 服务器不支持,或拒绝支持客户端(如您的浏览器)在发送给服务器的 HTTP 请求数据流中指定的 HTTP 协议版本</dt>
+		  <dd>解决办法:</dd>
+          <dd>升级您的 Web 服务器软件。</dd>
+          <dt>原因2:http请求格式的错误</dt>
+		  <dd>解决办法:</dd>
+          <dd>对照一下自己的代码,从打印的信息中终于找到问题所在。可能在请求后面多加了一个空格。http协议真是很严格了。</dd>
+        </dl>
+        <div>使用手册,视频教程,BUG反馈,官网地址: <a href="https://www.xp.cn"  target="_blank">www.xp.cn</a> </div>
+    
+      </div>
+    </div> 
+</body>
+</html>

+ 63 - 0
error/506.html

@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="utf-8">
+  <title>506 错误 - phpstudy</title>
+  <meta name="keywords" content="">
+  <meta name="description" content="">
+  <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black"> 
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="format-detection" content="telephone=no">
+  <meta HTTP-EQUIV="pragma" CONTENT="no-cache"> 
+  <meta HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> 
+  <meta HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> 
+  <meta HTTP-EQUIV="expires" CONTENT="0">
+  <style>
+    body{
+      font: 16px arial,'Microsoft Yahei','Hiragino Sans GB',sans-serif;
+    }
+    h1{
+      margin: 0;
+      color:#3a87ad;
+      font-size: 26px;
+    }
+    .content{
+      width: 45%;
+      margin: 0 auto;
+     
+    }
+    .content >div{
+      margin-top: 200px;
+      padding: 20px;
+      background: #d9edf7;  
+      border-radius: 12px;
+    }
+    .content dl{
+      color: #2d6a88;
+      line-height: 40px;
+    } 
+    .content div div {
+      padding-bottom: 20px;
+      text-align:center;
+    }
+  </style>
+</head>
+<body>
+  <div class="content">
+      <div>
+           <h1>HTTP 506 - Variant Also Negotiates</h1>
+        <dl>
+          <dt>错误说明:</dt>
+          <dt>原因1:服务器存在内部配置错误</dt>
+		  <dd>解决办法:</dd>
+          <dd>被请求的协商变元资源被配置为在透明内容协商中使用自己,因此在一个协商处理中不是一个合适的重点。</dd>
+        </dl>
+        <div>使用手册,视频教程,BUG反馈,官网地址: <a href="https://www.xp.cn"  target="_blank">www.xp.cn</a> </div>
+    
+      </div>
+    </div> 
+</body>
+</html>

+ 63 - 0
error/507.html

@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="utf-8">
+  <title>507 错误 - phpstudy</title>
+  <meta name="keywords" content="">
+  <meta name="description" content="">
+  <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black"> 
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="format-detection" content="telephone=no">
+  <meta HTTP-EQUIV="pragma" CONTENT="no-cache"> 
+  <meta HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> 
+  <meta HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> 
+  <meta HTTP-EQUIV="expires" CONTENT="0">
+  <style>
+    body{
+      font: 16px arial,'Microsoft Yahei','Hiragino Sans GB',sans-serif;
+    }
+    h1{
+      margin: 0;
+      color:#3a87ad;
+      font-size: 26px;
+    }
+    .content{
+      width: 45%;
+      margin: 0 auto;
+     
+    }
+    .content >div{
+      margin-top: 200px;
+      padding: 20px;
+      background: #d9edf7;  
+      border-radius: 12px;
+    }
+    .content dl{
+      color: #2d6a88;
+      line-height: 40px;
+    } 
+    .content div div {
+      padding-bottom: 20px;
+      text-align:center;
+    }
+  </style>
+</head>
+<body>
+  <div class="content">
+      <div>
+           <h1>HTTP 507 - Insufficient Storage</h1>
+        <dl>
+          <dt>错误说明:</dt>
+          <dt>原因1:服务器无法存储完成请求所必须的内容</dt>
+		  <dd>解决办法:</dd>
+          <dd>这个状况被认为是临时的。WebDAV (RFC 4918)。</dd>
+        </dl>
+        <div>使用手册,视频教程,BUG反馈,官网地址: <a href="https://www.xp.cn"  target="_blank">www.xp.cn</a> </div>
+    
+      </div>
+    </div> 
+</body>
+</html>

+ 63 - 0
error/509.html

@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="utf-8">
+  <title>509 错误 - phpstudy</title>
+  <meta name="keywords" content="">
+  <meta name="description" content="">
+  <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black"> 
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="format-detection" content="telephone=no">
+  <meta HTTP-EQUIV="pragma" CONTENT="no-cache"> 
+  <meta HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> 
+  <meta HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> 
+  <meta HTTP-EQUIV="expires" CONTENT="0">
+  <style>
+    body{
+      font: 16px arial,'Microsoft Yahei','Hiragino Sans GB',sans-serif;
+    }
+    h1{
+      margin: 0;
+      color:#3a87ad;
+      font-size: 26px;
+    }
+    .content{
+      width: 45%;
+      margin: 0 auto;
+     
+    }
+    .content >div{
+      margin-top: 200px;
+      padding: 20px;
+      background: #d9edf7;  
+      border-radius: 12px;
+    }
+    .content dl{
+      color: #2d6a88;
+      line-height: 40px;
+    } 
+    .content div div {
+      padding-bottom: 20px;
+      text-align:center;
+    }
+  </style>
+</head>
+<body>
+  <div class="content">
+      <div>
+           <h1>HTTP 509 - Bandwidth Limit Exceeded</h1>
+        <dl>
+          <dt>错误说明:</dt>
+          <dt>原因1:网站流量已经超出您所购买的方案限制即服务器达到带宽限制</dt>
+		  <dd>解决办法:</dd>
+          <dd>1.升级方案 2.等到下个月后流量重新计算,网站即可正常浏览。</dd>
+        </dl>
+        <div>使用手册,视频教程,BUG反馈,官网地址: <a href="https://www.xp.cn"  target="_blank">www.xp.cn</a> </div>
+    
+      </div>
+    </div> 
+</body>
+</html>

+ 63 - 0
error/510.html

@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="utf-8">
+  <title>510 错误 - phpstudy</title>
+  <meta name="keywords" content="">
+  <meta name="description" content="">
+  <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black"> 
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="format-detection" content="telephone=no">
+  <meta HTTP-EQUIV="pragma" CONTENT="no-cache"> 
+  <meta HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> 
+  <meta HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> 
+  <meta HTTP-EQUIV="expires" CONTENT="0">
+  <style>
+    body{
+      font: 16px arial,'Microsoft Yahei','Hiragino Sans GB',sans-serif;
+    }
+    h1{
+      margin: 0;
+      color:#3a87ad;
+      font-size: 26px;
+    }
+    .content{
+      width: 45%;
+      margin: 0 auto;
+     
+    }
+    .content >div{
+      margin-top: 200px;
+      padding: 20px;
+      background: #d9edf7;  
+      border-radius: 12px;
+    }
+    .content dl{
+      color: #2d6a88;
+      line-height: 40px;
+    } 
+    .content div div {
+      padding-bottom: 20px;
+      text-align:center;
+    }
+  </style>
+</head>
+<body>
+  <div class="content">
+      <div>
+           <h1>HTTP 510 - Not Extended</h1>
+        <dl>
+          <dt>错误说明:</dt>
+          <dt>原因1:获取资源所需要的策略并没有被满足</dt>
+		  <dd>解决办法:</dd>
+          <dd>需要请求有额外的扩展内容,服务器才能处理请求。</dd>
+        </dl>
+        <div>使用手册,视频教程,BUG反馈,官网地址: <a href="https://www.xp.cn"  target="_blank">www.xp.cn</a> </div>
+    
+      </div>
+    </div> 
+</body>
+</html>

+ 67 - 0
error/index.html

@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="utf-8">
+  <title>站点创建成功-phpstudy for windows</title>
+  <meta name="keywords" content="">
+  <meta name="description" content="">
+  <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black"> 
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="format-detection" content="telephone=no">
+  <meta HTTP-EQUIV="pragma" CONTENT="no-cache"> 
+  <meta HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> 
+  <meta HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> 
+  <meta HTTP-EQUIV="expires" CONTENT="0">
+  <style>
+    body{
+      font: 16px arial,'Microsoft Yahei','Hiragino Sans GB',sans-serif;
+    }
+    h1{
+      margin: 0;
+      color:#3a87ad;
+      font-size: 26px;
+    }
+    .content{
+      width: 45%;
+      margin: 0 auto;
+     
+    }
+    .content >div{
+      margin-top: 200px;
+      padding: 20px;
+      background: #d9edf7;  
+      border-radius: 12px;
+    }
+    .content dl{
+      color: #2d6a88;
+      line-height: 40px;
+    } 
+    .content div div {
+      padding-bottom: 20px;
+      text-align:center;
+    }
+  </style>
+</head>
+<body>
+  <div class="content">
+      <div>
+           <h1>站点创建成功</h1>
+        <dl>
+          <dt>目录说明:</dt>
+          <dd>1:网站目录:/phpstudy安装目录/www/站点域名/</dd>
+          <dd>2:错误提示页面:/phpstudy安装目录/www/站点域名/error/</dd>
+          <dd>3:你可以删除或者修改该目录下的所有文件</dd>
+          <dt>操作注意事项:</dt>
+          <dd>1:新建站点、数据库、FTP可在phpstudy面板操作,数据库可在环境中下载数据库管理软件等;</dd>
+          <dd>2:将网站程序放到站点目录时请使用复制,剪切可能造成程序文件权限不正确;</dd>
+         
+        </dl>
+        <div>使用手册,视频教程,BUG反馈,官网地址: <a href="https://www.xp.cn"  target="_blank">www.xp.cn</a> </div>
+    
+      </div>
+    </div> 
+</body>
+</html>

+ 300 - 0
index.html

@@ -0,0 +1,300 @@
+<!--
+ * @Author: yancheng
+ * @Date: 2023-09-18 09:40:05
+ * @LastEditors: yancheng
+ * @LastEditTime: 2023-10-24 14:56:51
+-->
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <title>
+        成绩查看
+    </title>
+</head>
+<link href="css/index.css" rel="stylesheet" type="text/css" />
+<link rel="stylesheet" href="css/jquery-ui-1.9.2.custom.css" type="text/css">
+<script src="js/jq2.1.4.js"></script>
+<script src="js/xlsx.js"></script>
+<script src="js/export.js"></script>
+<script src="js/selected.js"></script>
+
+
+<script src="js/jquery-ui-1.9.2.custom.js" type="text/javascript" language="javascript"></script>
+<script src="js/share.js" type="text/javascript"></script>
+
+<body>
+
+
+    <!-- <div id="dropArea">
+        <p class="drop-text">拖拽文件到此区域进行上传</p>
+        <input type="file" id="fileInput">
+     </div> -->
+
+    <div id="content">
+        <h2>文件拖入此处解析</h2>
+
+        <input type="file" id="fileUpload">
+
+        <button id="printButton">打印成绩单</button>
+        <button id="export">导出成绩</button>
+
+        <label for="myFileInput">
+
+            <input type="file" id="myFileInput" webkitdirectory directory multiple style="display: none;">
+            <div class="folder">
+                选中文件夹
+            </div>
+        </label>
+
+        <div class="error-text">遇到异常按键盘F5键 可以刷新重置</div>
+    </div>
+    <div class="where-div">
+        <div class="where-search">
+            学号: <input id="id">
+
+            <div>
+                <input type="text" id="time" class="ui-datepicker-time" readonly value="" />
+                <button class="ui-date-quick-button" style="width: 80px;" type="button"  onclick="cleanDate()">清除时间</button>
+                <div class="ui-datepicker-css">
+                    <div class="ui-datepicker-quick">
+                        <p>快捷日期<a class="ui-close-date">X</a></p>
+                        <div>
+                            <input class="ui-date-quick-button" type="button" value="今天" alt="0" name="" />
+                            <input class="ui-date-quick-button" type="button" value="昨天" alt="-1" name="" />
+                            <input class="ui-date-quick-button" type="button" value="7天内" alt="-6" name="" />
+                            <input class="ui-date-quick-button" type="button" value="14天内" alt="-13" name="" />
+                            <input class="ui-date-quick-button" type="button" value="30天内" alt="-29" name="" />
+                            <input class="ui-date-quick-button" type="button" value="60天内" alt="-59" name="" />
+                        </div>
+                    </div>
+                    <div class="ui-datepicker-choose">
+                        <p>自选日期</p>
+                        <div class="ui-datepicker-date">
+                            <input name="startDate" id="startDate" class="startDate" readonly value="2023/11/01"
+                                type="text">
+                            一
+                            <input name="endDate" id="endDate" class="endDate" readonly value="2023/11/30" type="text"
+                                disabled onchange="datePickers()">
+
+                        </div>
+                    </div>
+                </div>
+            </div>
+
+            <button class="folder" id="secelt-button">
+                过滤数据
+            </button>
+        </div>
+    </div>
+
+
+
+    <table class="score-list" id="list">
+        <thead>
+            <tr id="th">
+                <th>学号</th>
+                <th>查看病历本</th>
+                <th>核对患者信息</th>
+                <th>叩诊</th>
+                <th>索要胸片</th>
+                <th>辅助检查-X光片</th>
+                <th>辅助检查-超声检查</th>
+                <th>询问过敏史</th>
+                <th>解释胸穿目的和注意事项</th>
+                <th>签署知情同意书</th>
+                <th>术前器械准备</th>
+                <th>吸氧</th>
+                <th>选择穿刺点</th>
+                <th>消毒</th>
+                <th>检查胸穿包有效期</th>
+                <th>选择麻醉药物</th>
+                <th>选择穿戴无菌手套</th>
+                <th>洞巾</th>
+                <th>进行麻醉</th>
+                <th>检查器械</th>
+                <th>穿刺点进针</th>
+                <th>观察胸液是否凝固</th>
+                <th>标本送检</th>
+                <th>继续抽液缓解胸腔压迫</th>
+                <th>废液处理</th>
+                <th>操作完毕告知注意事项</th>
+                <th>测血压</th>
+                <th>总得分</th>
+                <th>创建时间</th>
+            </tr>
+        </thead>
+        <tbody id="dataContainer">
+            <tr>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+                <td>请上传文件</td>
+
+            </tr>
+        </tbody>
+    </table>
+</body>
+
+</html>
+
+<script>
+    document.getElementById('fileUpload').addEventListener('change', function (event) {
+        var file = event.target.files[0];
+        var reader = new FileReader();
+        reader.onload = function (event) {
+            var jsonData = JSON.parse(event.target.result);
+            updateData(jsonData);
+        };
+        reader.readAsText(file);
+    });
+
+    let content = document.getElementById("content");
+    content.addEventListener("dragover", handleDragOver, false);
+    content.addEventListener("drop", handleFileSelect, false);
+    const dropArea = document.getElementById('content');
+    // 添加拖拽区域的事件监听器
+    dropArea.addEventListener('dragover', handleDragOver);
+    dropArea.addEventListener('dragleave', handleDragLeave);
+
+
+    document.getElementById('printButton').addEventListener('click', function () {
+        var yc = document.getElementById("content");
+        yc.style.display = "none";
+        window.print();
+        yc.style.display = "block";
+        // window.location.reload(); //刷新页面,可写可不写
+        // document.body.innerHTML = older; //将网页还原
+        return false;
+    });
+
+    //导出excel表格,js逻辑写在js/export.js 里面 
+    document.getElementById('export').addEventListener('click', function () {
+        // console.log(achievement)
+        var table1 = document.querySelector("#list");
+        var sheet = XLSX.utils.table_to_sheet(table1);//将一个table对象转换成一个sheet对象
+        openDownloadDialog(sheet2blob(sheet), '导出.xlsx');
+    });
+
+
+
+    var input = document.getElementById('myFileInput');
+    input.addEventListener('change', function (event) {
+        var dataLists = [];
+        var input = document.getElementById('myFileInput');
+        var files = input.files;
+        for (var i = 0; i < files.length; i++) {
+            // console.log('文件名:', files[i].name);  
+            // console.log('文件大小:', files[i].size);  
+            // console.log('文件类型:', files[i].type);  
+            if (files[i].type == 'application/json') {
+                var reader1 = new FileReader();
+                reader1.onload = function (e) {
+                    let jsonData = JSON.parse(e.target.result);
+                    jsonData.forEach(e => {
+                        dataLists.push(e);
+                    });
+                };
+                reader1.readAsText(files[i]);
+            }
+        }
+        //延时加载数据出来 等待上传完毕
+        setTimeout(() => {
+            updateData(dataLists);
+        }, 50);
+    });
+
+
+    //开始过滤对应数据,js逻辑写在js/export.js 里面 
+    document.getElementById('secelt-button').addEventListener('click', function () {
+        handSelect();
+    });
+
+
+
+
+
+
+
+
+
+
+    const arr = [
+        {
+            "score": 10.0,
+            "number": "abbbr",
+            "time": "2023年11月20日21时54分41秒",
+            "stamp": "1700732536",
+            "isExam": false
+        },
+        {
+            "score": 10.0,
+            "number": "ahhj",
+            "time": "2023年11月20日21时54分41秒",
+            "stamp": "1700732536",
+            "isExam": false
+        },
+        {
+            "score": 10.0,
+            "number": "cccj",
+            "time": "2023年10月20日21时54分41秒",
+            "stamp": "1698054136",
+            "isExam": false
+        },
+        {
+            "score": 10.0,
+            "number": "aaacccja",
+            "time": "2023年10月10日21时54分41秒",
+            "stamp": "1698054136",
+            "isExam": false
+        }
+    ];
+
+
+
+
+    const conditions = ['a'];
+    // const timeConditions = ['2023年11月', '2023年1月'];
+    const dateStr = "2023-10-10 21:54:41";
+    const dateObj = new Date(dateStr); // 创建一个 Date 对象  
+    const timestamp = dateObj.getTime() / 1000; // 转换为秒  
+    console.log(timestamp);
+
+    const time1 = '1700732530';
+    const time2 = '1800732536';
+    // 转换为 Date 对象  
+
+    const filteredArr = arr.filter(item => {
+        let hasNameCondition = conditions.some(condition => item.number.includes(condition));
+        const time = item.stamp;
+        let hasTimeCondition = time >= time1 && time <= time2;
+        return hasNameCondition && hasTimeCondition;
+    });
+    console.log(filteredArr, new Date(2023 - 10 - 10))
+</script>

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
js/custom.js


+ 43 - 0
js/export.js

@@ -0,0 +1,43 @@
+ // 将一个sheet转成最终的excel文件的blob对象,然后利用URL.createObjectURL下载
+function sheet2blob(sheet, sheetName) {
+    sheetName = sheetName || 'sheet1';
+    var workbook = {
+        SheetNames: [sheetName],
+        Sheets: {}
+    };
+    workbook.Sheets[sheetName] = sheet; // 生成excel的配置项
+
+    var wopts = {
+        bookType: 'xlsx', // 要生成的文件类型
+        bookSST: false, // 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
+        type: 'binary'
+    };
+    var wbout = XLSX.write(workbook, wopts);
+    var blob = new Blob([s2ab(wbout)], {
+        type: "application/octet-stream"
+    }); // 字符串转ArrayBuffer
+    function s2ab(s) {
+        var buf = new ArrayBuffer(s.length);
+        var view = new Uint8Array(buf);
+        for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
+        return buf;
+    }
+    return blob;
+}
+
+function openDownloadDialog(url, saveName) {
+    
+    if (typeof url == 'object' && url instanceof Blob) {
+        url = URL.createObjectURL(url); // 创建blob地址
+    }
+    var aLink = document.createElement('a');
+    aLink.href = url;
+    aLink.download = saveName || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效
+    var event;
+    if (window.MouseEvent) event = new MouseEvent('click');
+    else {
+        event = document.createEvent('MouseEvents');
+        event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
+    }
+    aLink.dispatchEvent(event);
+}

Diff do ficheiro suprimidas por serem muito extensas
+ 7 - 0
js/jq2.1.4.js


Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
js/jquery-ui-1.9.2.custom.js


Diff do ficheiro suprimidas por serem muito extensas
+ 1 - 0
js/jquery.min.js


+ 171 - 0
js/selected - 副本.js

@@ -0,0 +1,171 @@
+var achievement = '成绩表';
+var backupData = [];
+var dataTd = {};
+function updateData(jsonData, type = 1) {
+    var dataContainer = document.getElementById('dataContainer');
+    var html = '';
+    var data = jsonData;
+    console.log('zhes' + type)
+    if (type == 1) {
+        backupData = data;
+        dataTd = data[0].stepScroe;
+    }
+
+    var td = '';
+    var i = 1;
+    let dataTdLength = Object.keys(dataTd).length;
+    let isPc = dataTdLength == 27 ? 'pc' : 'vr';
+    let score = {
+        "pc": [
+            0.2, 0.1, 0.5, 0.5, 1, 0, 0.1, 0.1, 0.1, 0.4, 0.4, 1, 0.1, 0.1, 0.1, 0.2, 0.1, 2.5, 0.5, 0.5, 0.4, 0.3, 0.3, 0.3, 0.1, 0.1, 0.4
+        ],
+        "vr": [
+            0, 1, 5, 5, 5, 5, 1, 1, 1, 4, 4, 10, 6, 1, 1, 1, 1, 2, 1, 24, 5, 4, 5, 3, 1, 3
+        ],
+    };
+    // console.log(score.vr.length)
+    // console.log(dataTd,Object.keys(dataTd),dataTdLeng)
+    if (dataTd) {
+        td += '<th>学号' + '</th>';
+        for (obj in dataTd) {
+
+            td += "<th><span class='span'>" + i + '</span>-' + obj + '-<span class="colour">' + score[isPc][i - 1] + '</span></th>';
+            i++;
+        }
+        td += '<th>总得分' + '</th>';
+        td += '<th class="time-th">创建时间' + '</th>';
+        var tdContainer = document.getElementById('th');
+        tdContainer.innerHTML = td;
+    }
+
+    // 根据您的JSON数据结构,循环遍历并构建HTML字符串  
+    // 这里假设jsonData是一个包含多个对象的数组,每个对象有学号、姓名、分数和考试时间属性  
+    // let dataTdArray = Object.keys(dataTd);
+    console.log(data, type, 55656)
+    data.forEach(function (item) {
+        html += '<tr class="tr-after">';
+        html += '<td>' + item.number + '</td>';
+        let key = 1;
+        if (dataTd) {
+            for (obj in dataTd) {
+                let colorSuccess = 'red'
+                if (item.stepScroe[obj] == score[isPc][key - 1]) {
+                    colorSuccess = 'colour';
+                }
+                html += '<td class="' + colorSuccess + '">' + item.stepScroe[obj] + '</td>';
+                key++;
+
+            }
+        }
+        html += '<td class="score">' + item.score + '_' + '<span class="font-size11">(' + textChange(item.isExam) + ')</span> </td>';
+        html += '<td class="time">' + item.time.slice(0, 17) + '</td>';
+        html += '</tr>'; // 添加分隔线  
+    });
+
+    dataContainer.innerHTML = html;
+}
+
+function textChange(state) {
+    let text = state ? '考试' : '练习';
+    return text;
+}
+
+function handleDragOver(e) {
+    e.preventDefault();
+    dropArea.classList.add('dragover');
+}
+
+function handleDragLeave(e) {
+    e.preventDefault();
+    dropArea.classList.remove('dragover');
+}
+
+
+function scanFiles(e) {
+    const files = e.dataTransfer.files; // 获取拖拽的文件列表  
+    const fileInput = document.getElementById('fileUpload');
+    for (let i = 0; i < files.length; i++) {
+        const file = files[i];
+        // 将文件输出到文件输入框中  
+        fileInput.files = files;
+        // 在这里可以进行其他操作,例如上传到服务器或进行其他处理  
+    }
+}
+
+function handleDragOver(e) {
+    e.stopPropagation();
+    e.preventDefault();
+}
+
+function handleFileSelect(e) {
+    // fileInput.files = files;  
+    // e.stopPropagation();
+    e.preventDefault();
+    let item = e.dataTransfer;
+
+    scanFiles(e);
+
+    var files = [];
+    [].forEach.call(e.dataTransfer.files, function (file) {
+        files.push(file);
+    }, false);
+
+    for (var f of files) {
+        var reader = new FileReader();
+        reader.readAsText(f);
+        //读取文件的内容
+        reader.onload = function () {
+
+            var jsonData = JSON.parse(this.result);
+            // console.log(jsonData,36)
+            updateData(jsonData);
+            // console.log(this.result, 9998)
+        };
+
+    }
+
+}
+
+
+function handSelect() {
+    let id = document.getElementById('id').value;
+    let time = document.getElementById('time').value;
+    if (id || time) {
+        let where = {
+            id:[],
+            time:[]
+        };
+        if (id) {
+            where['id'] = id.split("/");
+        }
+        if (time) {
+            where['time'] = time.split("/");
+        }
+        const result = filterateSearch(backupData, where)
+        updateData(result, 2)
+    }
+}
+
+function filterateSearch(data, searchTerm) {
+    // const conditions = ['b','r'];
+    const conditions = searchTerm['id'];
+    const timeConditions =  searchTerm['time'];
+    const filteredArr = data.filter(item => {
+        let newDataName = conditions.every(condition => item.number.includes(condition))
+        let newDataTime = timeConditions.some(condition => item.time.includes(condition));
+        if (conditions.length >0 && timeConditions.length >0) {
+            console.log(1)
+            return newDataName && newDataTime;
+        }
+        if (conditions.length >0 && timeConditions.length == 0) {
+            console.log(2)
+            return newDataName;
+        }
+        if (timeConditions.length >0 && conditions.length == 0) {
+            console.log(3)
+            return newDataTime;
+        }
+    });
+    return filteredArr;
+}
+

+ 184 - 0
js/selected.js

@@ -0,0 +1,184 @@
+var achievement = '成绩表';
+var backupData = [];
+var dataTd = {};
+function updateData(jsonData, type = 1) {
+    var dataContainer = document.getElementById('dataContainer');
+    var html = '';
+    var data = jsonData;
+    console.log('zhes' + type)
+    if (type == 1) {
+        backupData = data;
+        dataTd = data[0].stepScroe;
+    }
+
+    var td = '';
+    var i = 1;
+    let dataTdLength = Object.keys(dataTd).length;
+    let isPc = dataTdLength == 27 ? 'pc' : 'vr';
+    let score = {
+        "pc": [
+            0.2, 0.1, 0.5, 0.5, 1, 0, 0.1, 0.1, 0.1, 0.4, 0.4, 1, 0.1, 0.1, 0.1, 0.2, 0.1, 2.5, 0.5, 0.5, 0.4, 0.3, 0.3, 0.3, 0.1, 0.1, 0.4
+        ],
+        "vr": [
+            0, 1, 5, 5, 5, 5, 1, 1, 1, 4, 4, 10, 6, 1, 1, 1, 1, 2, 1, 24, 5, 4, 5, 3, 1, 3
+        ],
+    };
+    // console.log(score.vr.length)
+    // console.log(dataTd,Object.keys(dataTd),dataTdLeng)
+    if (dataTd) {
+        td += '<th>学号' + '</th>';
+        for (obj in dataTd) {
+
+            td += "<th><span class='span'>" + i + '</span>-' + obj + '-<span class="colour">' + score[isPc][i - 1] + '</span></th>';
+            i++;
+        }
+        td += '<th>总得分' + '</th>';
+        td += '<th class="time-th">创建时间' + '</th>';
+        var tdContainer = document.getElementById('th');
+        tdContainer.innerHTML = td;
+    }
+
+    // 根据您的JSON数据结构,循环遍历并构建HTML字符串  
+    // 这里假设jsonData是一个包含多个对象的数组,每个对象有学号、姓名、分数和考试时间属性  
+    // let dataTdArray = Object.keys(dataTd);
+    console.log(data, type, 55656)
+    data.forEach(function (item) {
+        html += '<tr class="tr-after">';
+        html += '<td>' + item.number + '</td>';
+        let key = 1;
+        if (dataTd) {
+            for (obj in dataTd) {
+                let colorSuccess = 'red'
+                if (item.stepScroe[obj] == score[isPc][key - 1]) {
+                    colorSuccess = 'colour';
+                }
+                html += '<td class="' + colorSuccess + '">' + item.stepScroe[obj] + '</td>';
+                key++;
+
+            }
+        }
+        html += '<td class="score">' + item.score + '_' + '<span class="font-size11">(' + textChange(item.isExam) + ')</span> </td>';
+        html += '<td class="time">' + item.time.slice(0, 17) + '</td>';
+        html += '</tr>'; // 添加分隔线  
+    });
+
+    dataContainer.innerHTML = html;
+}
+
+function textChange(state) {
+    let text = state ? '考试' : '练习';
+    return text;
+}
+
+function handleDragOver(e) {
+    e.preventDefault();
+    dropArea.classList.add('dragover');
+}
+
+function handleDragLeave(e) {
+    e.preventDefault();
+    dropArea.classList.remove('dragover');
+}
+
+
+function scanFiles(e) {
+    const files = e.dataTransfer.files; // 获取拖拽的文件列表  
+    const fileInput = document.getElementById('fileUpload');
+    for (let i = 0; i < files.length; i++) {
+        const file = files[i];
+        // 将文件输出到文件输入框中  
+        fileInput.files = files;
+        // 在这里可以进行其他操作,例如上传到服务器或进行其他处理  
+    }
+}
+
+function handleDragOver(e) {
+    e.stopPropagation();
+    e.preventDefault();
+}
+
+function handleFileSelect(e) {
+    // fileInput.files = files;  
+    // e.stopPropagation();
+    e.preventDefault();
+    let item = e.dataTransfer;
+
+    scanFiles(e);
+
+    var files = [];
+    [].forEach.call(e.dataTransfer.files, function (file) {
+        files.push(file);
+    }, false);
+
+    for (var f of files) {
+        var reader = new FileReader();
+        reader.readAsText(f);
+        //读取文件的内容
+        reader.onload = function () {
+
+            var jsonData = JSON.parse(this.result);
+            // console.log(jsonData,36)
+            updateData(jsonData);
+            // console.log(this.result, 9998)
+        };
+
+    }
+
+}
+
+
+function handSelect() {
+    let id = document.getElementById('id').value;
+    let time = document.getElementById('time').value;
+
+    if (id || time) {
+        let where = {
+            id:[],
+            time:[]
+        };
+        if (id) {
+            where['id'] = id.split("/");
+        }
+        if (time) {
+            time =  time.split("一");
+            let time1 =  time[0]+ " 00:00:00";
+            let time2 =  time[1]+ " 23:59:59";
+            where['time1'] = new Date(time1).getTime()/1000;
+            where['time2'] = new Date(time2).getTime()/1000;
+        }
+        const result = filterateSearch(backupData, where)
+        console.log(77777,result)
+        if (result.length >= 1) {
+            console.log(8888888)
+            updateData(result, 2)
+            return;
+        }else ( alert('符合的数据为空,请更改数据搜索条件') )
+        return;
+    } else {
+        if (backupData.length >= 1) {
+            updateData(backupData)
+            return;
+        }
+    }
+    alert('符合的数据为空,请更改数据搜索条件');
+}
+
+function filterateSearch(data, searchTerm) {
+    
+    const conditions = searchTerm['id'];
+
+    const time1 = searchTerm['time1']?searchTerm['time1']:'1674541121';
+    const time2 = searchTerm['time2']?searchTerm['time2']:"33231449921";
+    // 转换为 Date 对象  
+    console.log(time1,time2,6633);
+    const filteredArr = data.filter(item => {
+        let hasNameCondition = conditions.every(condition => item.number.includes(condition))
+        
+        const time = item.stamp;
+        let hasTimeCondition = time >= time1 && time <= time2;
+        return hasNameCondition && hasTimeCondition;
+    });
+    console.log(filteredArr);
+    return filteredArr;
+}
+

+ 119 - 0
js/share.js

@@ -0,0 +1,119 @@
+/**
+ * Created with PyCharm.
+ * User: Administrator
+ * Date: 14-9-11
+ * Time: 上午11:18
+ * To change this template use File | Settings | File Templates.
+ */
+/* 共用 js 模块 *
+
+/* 时间插件 使用 */
+
+          
+      
+(function($){
+    $.setStartTime = function(){
+        $('.startDate').datepicker({
+            dateFormat: "yy/mm/dd",
+            maxDate: "+d",
+            onClose : function(dateText, inst) {
+                $( "#endDate" ).datepicker( "show" );
+            },
+			onSelect:function(dateText, inst) {
+                $( "#endDate" ).datepicker( "option","minDate",dateText );
+            },
+			
+        });
+    };
+    $.setEndTime = function(){
+        $(".endDate").datepicker({
+            dateFormat: "yy/mm/dd",
+            maxDate: "+d",
+			defaultDate : new Date(),
+            onClose : function(dateText, inst) {
+                if (dateText < $("input[name=startDate]").val()){
+                  $( "#endDate" ).datepicker( "show" );
+				    alert("结束日期不能小于开始日期!");
+					//$("#endDate").val(newdate)
+                }
+            }
+        });
+    };
+    $.date = function(){
+        $('.date').datepicker(
+            $.extend({showMonthAfterYear:true}, $.datepicker.regional['zh-CN'],
+                {'showAnim':'','dateFormat':'yy/mm/dd','changeMonth':'true','changeYear':'true',
+                    'showButtonPanel':'true'}
+            ));
+    };
+    $.datepickerjQ = function(){
+       $(".ui-datepicker-time").on("click",function(){
+           $(".ui-datepicker-css").css("display","block")
+        });
+        $(".ui-kydtype li").on("click",function(){
+            $(".ui-kydtype li").removeClass("on").filter($(this)).addClass("on");
+//            getAppCondtion();
+        });
+        $(".ui-datepicker-quick input").on("click",function(){
+            var thisAlt = $(this).attr("alt");
+            var dateList = timeConfig(thisAlt);
+            $(".ui-datepicker-time").val(dateList);
+            $(".ui-datepicker-css").css("display","none");
+			 $("#ui-datepicker-div").css("display","none")
+//            getAppCondtion()
+        });
+        $(".ui-close-date").on("click",function(){
+            $(".ui-datepicker-css").css("display","none")
+			 $("#ui-datepicker-div").css("display","none")
+			//inst.dpDiv.css({"display":"none"})
+        });
+		 $(".startDate").on("click",function(){
+            $(".endDate").attr("disabled",false);
+        });
+	
+    }
+	
+})(jQuery);
+
+$(function(){
+        $.setStartTime();
+        $.setEndTime();
+        $.datepickerjQ();
+		
+        // var nowDate = new Date();
+        // timeStr = nowDate.getFullYear() + '/' + (nowDate.getMonth()+1) + '/' + nowDate.getDate();
+        // nowDate.setDate(nowDate.getDate()+parseInt(-1));
+        // var endDateStr = nowDate.getFullYear() + '/'+  (nowDate.getMonth()+1) + '/' + nowDate.getDate();
+		// $(".ui-datepicker-time").attr("value",endDateStr +"一"+ timeStr)
+		// $("#startDate").attr("value",endDateStr)
+		// $("#endDate").attr("value",timeStr)
+    });
+
+
+    function timeConfig(time){
+		//快捷菜单的控制
+        var nowDate = new Date();
+        timeStr = '一' + nowDate.getFullYear() + '/' + (nowDate.getMonth()+1) + '/' + nowDate.getDate();
+        nowDate.setDate(nowDate.getDate()+parseInt(time));
+        var endDateStr = nowDate.getFullYear() + '/'+  (nowDate.getMonth()+1) + '/' + nowDate.getDate();
+        if(time == -1){
+            endDateStr += '一' + endDateStr;
+        }else{
+            endDateStr += timeStr;
+        }
+        return endDateStr;
+    }
+
+    function datePickers(){
+		//自定义菜单
+        var startDate = $("#startDate").val();
+        var endDate = $("#endDate").val();
+        var dateList = startDate +'一'+ endDate;
+        $(".ui-datepicker-time").val(dateList);
+        $(".ui-datepicker-css").css("display","none");
+//        getAppCondtion()
+    }
+
+    function cleanDate() {
+        $(".ui-datepicker-time").val('');
+    }

Diff do ficheiro suprimidas por serem muito extensas
+ 7 - 0
js/xlsx.js


+ 0 - 0
nginx.htaccess


+ 176 - 0
vendor/Blob.js

@@ -0,0 +1,176 @@
+/* eslint-disable */
+/* Blob.js
+ * A Blob implementation.
+ * 2014-05-27
+ *
+ * By Eli Grey, http://eligrey.com
+ * By Devin Samarin, https://github.com/eboyjr
+ * License: X11/MIT
+ *   See LICENSE.md
+ */
+
+/*global self, unescape */
+/*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true,
+ plusplus: true */
+
+/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */
+
+(function (view) {
+  "use strict";
+
+  view.URL = view.URL || view.webkitURL;
+
+  if (view.Blob && view.URL) {
+    try {
+      new Blob;
+      return;
+    } catch (e) {}
+  }
+
+  // Internally we use a BlobBuilder implementation to base Blob off of
+  // in order to support older browsers that only have BlobBuilder
+  var BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || (function (view) {
+    var
+      get_class = function (object) {
+        return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1];
+      },
+      FakeBlobBuilder = function BlobBuilder() {
+        this.data = [];
+      },
+      FakeBlob = function Blob(data, type, encoding) {
+        this.data = data;
+        this.size = data.length;
+        this.type = type;
+        this.encoding = encoding;
+      },
+      FBB_proto = FakeBlobBuilder.prototype,
+      FB_proto = FakeBlob.prototype,
+      FileReaderSync = view.FileReaderSync,
+      FileException = function (type) {
+        this.code = this[this.name = type];
+      },
+      file_ex_codes = (
+        "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR " +
+        "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR"
+      ).split(" "),
+      file_ex_code = file_ex_codes.length,
+      real_URL = view.URL || view.webkitURL || view,
+      real_create_object_URL = real_URL.createObjectURL,
+      real_revoke_object_URL = real_URL.revokeObjectURL,
+      URL = real_URL,
+      btoa = view.btoa,
+      atob = view.atob
+
+      ,
+      ArrayBuffer = view.ArrayBuffer,
+      Uint8Array = view.Uint8Array;
+    FakeBlob.fake = FB_proto.fake = true;
+    while (file_ex_code--) {
+      FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1;
+    }
+    if (!real_URL.createObjectURL) {
+      URL = view.URL = {};
+    }
+    URL.createObjectURL = function (blob) {
+      var
+        type = blob.type,
+        data_URI_header;
+      if (type === null) {
+        type = "application/octet-stream";
+      }
+      if (blob instanceof FakeBlob) {
+        data_URI_header = "data:" + type;
+        if (blob.encoding === "base64") {
+          return data_URI_header + ";base64," + blob.data;
+        } else if (blob.encoding === "URI") {
+          return data_URI_header + "," + decodeURIComponent(blob.data);
+        }
+        if (btoa) {
+          return data_URI_header + ";base64," + btoa(blob.data);
+        } else {
+          return data_URI_header + "," + encodeURIComponent(blob.data);
+        }
+      } else if (real_create_object_URL) {
+        return real_create_object_URL.call(real_URL, blob);
+      }
+    };
+    URL.revokeObjectURL = function (object_URL) {
+      if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) {
+        real_revoke_object_URL.call(real_URL, object_URL);
+      }
+    };
+    FBB_proto.append = function (data /*, endings*/ ) {
+      var bb = this.data;
+      // decode data to a binary string
+      if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) {
+        var
+          str = "",
+          buf = new Uint8Array(data),
+          i = 0,
+          buf_len = buf.length;
+        for (; i < buf_len; i++) {
+          str += String.fromCharCode(buf[i]);
+        }
+        bb.push(str);
+      } else if (get_class(data) === "Blob" || get_class(data) === "File") {
+        if (FileReaderSync) {
+          var fr = new FileReaderSync;
+          bb.push(fr.readAsBinaryString(data));
+        } else {
+          // async FileReader won't work as BlobBuilder is sync
+          throw new FileException("NOT_READABLE_ERR");
+        }
+      } else if (data instanceof FakeBlob) {
+        if (data.encoding === "base64" && atob) {
+          bb.push(atob(data.data));
+        } else if (data.encoding === "URI") {
+          bb.push(decodeURIComponent(data.data));
+        } else if (data.encoding === "raw") {
+          bb.push(data.data);
+        }
+      } else {
+        if (typeof data !== "string") {
+          data += ""; // convert unsupported types to strings
+        }
+        // decode UTF-16 to binary string
+        bb.push(unescape(encodeURIComponent(data)));
+      }
+    };
+    FBB_proto.getBlob = function (type) {
+      if (!arguments.length) {
+        type = null;
+      }
+      return new FakeBlob(this.data.join(""), type, "raw");
+    };
+    FBB_proto.toString = function () {
+      return "[object BlobBuilder]";
+    };
+    FB_proto.slice = function (start, end, type) {
+      var args = arguments.length;
+      if (args < 3) {
+        type = null;
+      }
+      return new FakeBlob(
+        this.data.slice(start, args > 1 ? end : this.data.length), type, this.encoding
+      );
+    };
+    FB_proto.toString = function () {
+      return "[object Blob]";
+    };
+    FB_proto.close = function () {
+      this.size = this.data.length = 0;
+    };
+    return FakeBlobBuilder;
+  }(view));
+
+  view.Blob = function Blob(blobParts, options) {
+    var type = options ? (options.type || "") : "";
+    var builder = new BlobBuilder();
+    if (blobParts) {
+      for (var i = 0, len = blobParts.length; i < len; i++) {
+        builder.append(blobParts[i]);
+      }
+    }
+    return builder.getBlob(type);
+  };
+}(typeof self !== "undefined" && self || typeof window !== "undefined" && window || this.content || this));

+ 159 - 0
vendor/Export2Excel.js

@@ -0,0 +1,159 @@
+/* eslint-disable */
+require('script-loader!file-saver');
+require('script-loader!@/vendor/Blob');
+import XLSX from '../js/xlsx';
+
+function generateArray(table) {
+    var out = [];
+    var rows = table.querySelectorAll('tr');
+    var ranges = [];
+    for (var R = 0; R < rows.length; ++R) {
+        var outRow = [];
+        var row = rows[R];
+        var columns = row.querySelectorAll('td');
+        for (var C = 0; C < columns.length; ++C) {
+            var cell = columns[C];
+            var colspan = cell.getAttribute('colspan');
+            var rowspan = cell.getAttribute('rowspan');
+            var cellValue = cell.innerText;
+            if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
+
+            //Skip ranges
+            ranges.forEach(function (range) {
+                if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {
+                    for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);
+                }
+            });
+
+            //Handle Row Span
+            if (rowspan || colspan) {
+                rowspan = rowspan || 1;
+                colspan = colspan || 1;
+                ranges.push({s: {r: R, c: outRow.length}, e: {r: R + rowspan - 1, c: outRow.length + colspan - 1}});
+            }
+            ;
+
+            //Handle Value
+            outRow.push(cellValue !== "" ? cellValue : null);
+
+            //Handle Colspan
+            if (colspan) for (var k = 0; k < colspan - 1; ++k) outRow.push(null);
+        }
+        out.push(outRow);
+    }
+    return [out, ranges];
+};
+
+function datenum(v, date1904) {
+    if (date1904) v += 1462;
+    var epoch = Date.parse(v);
+    return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
+}
+
+function sheet_from_array_of_arrays(data, opts) {
+    var ws = {};
+    var range = {s: {c: 10000000, r: 10000000}, e: {c: 0, r: 0}};
+    for (var R = 0; R != data.length; ++R) {
+        for (var C = 0; C != data[R].length; ++C) {
+            if (range.s.r > R) range.s.r = R;
+            if (range.s.c > C) range.s.c = C;
+            if (range.e.r < R) range.e.r = R;
+            if (range.e.c < C) range.e.c = C;
+            var cell = {v: data[R][C]};
+            if (cell.v == null) continue;
+            var cell_ref = XLSX.utils.encode_cell({c: C, r: R});
+
+            if (typeof cell.v === 'number') cell.t = 'n';
+            else if (typeof cell.v === 'boolean') cell.t = 'b';
+            else if (cell.v instanceof Date) {
+                cell.t = 'n';
+                cell.z = XLSX.SSF._table[14];
+                cell.v = datenum(cell.v);
+            }
+            else cell.t = 's';
+
+            ws[cell_ref] = cell;
+        }
+    }
+    if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
+    return ws;
+}
+
+function Workbook() {
+    if (!(this instanceof Workbook)) return new Workbook();
+    this.SheetNames = [];
+    this.Sheets = {};
+}
+
+function s2ab(s) {
+    var buf = new ArrayBuffer(s.length);
+    var view = new Uint8Array(buf);
+    for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
+    return buf;
+}
+
+export function export_table_to_excel(id) {
+    var theTable = document.getElementById(id);
+    var oo = generateArray(theTable);
+    var ranges = oo[1];
+
+    /* original data */
+    var data = oo[0];
+    var ws_name = "SheetJS";
+
+    var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
+
+    /* add ranges to worksheet */
+    // ws['!cols'] = ['apple', 'banan'];
+    ws['!merges'] = ranges;
+
+    /* add worksheet to workbook */
+    wb.SheetNames.push(ws_name);
+    wb.Sheets[ws_name] = ws;
+
+    var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
+
+    saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), "test.xlsx")
+}
+
+export function export_json_to_excel({header, data, filename='excel-list', autoWidth=true}={}) {
+    /* original data */
+    data=[...data]
+    data.unshift(header);
+    var ws_name = "SheetJS";
+    var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
+
+    if(autoWidth){
+      /*设置worksheet每列的最大宽度*/
+      const colWidth = data.map(row => row.map(val => {
+        /*先判断是否为null/undefined*/
+        if (val == null) {
+          return {'wch': 10};
+        }
+        /*再判断是否为中文*/
+        else if (val.toString().charCodeAt(0) > 255) {
+          return {'wch': val.toString().length * 2};
+        } else {
+          return {'wch': val.toString().length};
+        }
+      }))
+      /*以第一行为初始值*/
+      let result = colWidth[0];
+      for (let i = 1; i < colWidth.length; i++) {
+        for (let j = 0; j < colWidth[i].length; j++) {
+          if (result[j]['wch'] < colWidth[i][j]['wch']) {
+            result[j]['wch'] = colWidth[i][j]['wch'];
+          }
+        }
+      }
+      ws['!cols'] = result;
+    }
+
+    /* add worksheet to workbook */
+    wb.SheetNames.push(ws_name);
+    wb.Sheets[ws_name] = ws;
+
+    var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
+    saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), filename + ".xlsx");
+}
+

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff

粤ICP备19079148号