高校学生考勤系统
8
.idea/.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
# 默认忽略的文件
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# 数据源本地存储已忽略文件
|
||||
/../../../../../../:\Users\LI\Desktop\项目\.idea/dataSources/
|
||||
/dataSources.local.xml
|
||||
# 基于编辑器的 HTTP 客户端请求
|
||||
/httpRequests/
|
||||
18
.idea/compiler.xml
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<annotationProcessing>
|
||||
<profile name="Maven default annotation processors profile" enabled="true">
|
||||
<sourceOutputDir name="target/generated-sources/annotations" />
|
||||
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
|
||||
<outputRelativeToContentRoot value="true" />
|
||||
<module name="Student-Attendance-Management-System" />
|
||||
</profile>
|
||||
</annotationProcessing>
|
||||
</component>
|
||||
<component name="JavacSettings">
|
||||
<option name="ADDITIONAL_OPTIONS_OVERRIDE">
|
||||
<module name="Student-Attendance-Management-System" options="-parameters" />
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
13
.idea/dataSources.xml
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||
<data-source source="LOCAL" name="student-attendance-system@localhost" uuid="9b8fdef2-1a5d-4c09-a6ad-93b70e81cc04">
|
||||
<driver-ref>mysql</driver-ref>
|
||||
<synchronize>true</synchronize>
|
||||
<configured-by-url>true</configured-by-url>
|
||||
<jdbc-driver>com.mysql.jdbc.Driver</jdbc-driver>
|
||||
<jdbc-url>jdbc:mysql://localhost:3306/student-attendance-system?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC</jdbc-url>
|
||||
<working-dir>$ProjectFileDir$</working-dir>
|
||||
</data-source>
|
||||
</component>
|
||||
</project>
|
||||
661
.idea/dataSources/9b8fdef2-1a5d-4c09-a6ad-93b70e81cc04.xml
Normal file
@ -0,0 +1,661 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<dataSource name="student-attendance-system@localhost">
|
||||
<database-model serializer="dbm" dbms="MYSQL" family-id="MYSQL" format-version="4.53">
|
||||
<root id="1"/>
|
||||
<collation id="2" parent="1" name="armscii8_bin">
|
||||
<Charset>armscii8</Charset>
|
||||
</collation>
|
||||
<collation id="3" parent="1" name="armscii8_general_ci">
|
||||
<Charset>armscii8</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="4" parent="1" name="ascii_bin">
|
||||
<Charset>ascii</Charset>
|
||||
</collation>
|
||||
<collation id="5" parent="1" name="ascii_general_ci">
|
||||
<Charset>ascii</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="6" parent="1" name="big5_bin">
|
||||
<Charset>big5</Charset>
|
||||
</collation>
|
||||
<collation id="7" parent="1" name="big5_chinese_ci">
|
||||
<Charset>big5</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="8" parent="1" name="binary">
|
||||
<Charset>binary</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="9" parent="1" name="cp1250_bin">
|
||||
<Charset>cp1250</Charset>
|
||||
</collation>
|
||||
<collation id="10" parent="1" name="cp1250_croatian_ci">
|
||||
<Charset>cp1250</Charset>
|
||||
</collation>
|
||||
<collation id="11" parent="1" name="cp1250_czech_cs">
|
||||
<Charset>cp1250</Charset>
|
||||
</collation>
|
||||
<collation id="12" parent="1" name="cp1250_general_ci">
|
||||
<Charset>cp1250</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="13" parent="1" name="cp1250_polish_ci">
|
||||
<Charset>cp1250</Charset>
|
||||
</collation>
|
||||
<collation id="14" parent="1" name="cp1251_bin">
|
||||
<Charset>cp1251</Charset>
|
||||
</collation>
|
||||
<collation id="15" parent="1" name="cp1251_bulgarian_ci">
|
||||
<Charset>cp1251</Charset>
|
||||
</collation>
|
||||
<collation id="16" parent="1" name="cp1251_general_ci">
|
||||
<Charset>cp1251</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="17" parent="1" name="cp1251_general_cs">
|
||||
<Charset>cp1251</Charset>
|
||||
</collation>
|
||||
<collation id="18" parent="1" name="cp1251_ukrainian_ci">
|
||||
<Charset>cp1251</Charset>
|
||||
</collation>
|
||||
<collation id="19" parent="1" name="cp1256_bin">
|
||||
<Charset>cp1256</Charset>
|
||||
</collation>
|
||||
<collation id="20" parent="1" name="cp1256_general_ci">
|
||||
<Charset>cp1256</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="21" parent="1" name="cp1257_bin">
|
||||
<Charset>cp1257</Charset>
|
||||
</collation>
|
||||
<collation id="22" parent="1" name="cp1257_general_ci">
|
||||
<Charset>cp1257</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="23" parent="1" name="cp1257_lithuanian_ci">
|
||||
<Charset>cp1257</Charset>
|
||||
</collation>
|
||||
<collation id="24" parent="1" name="cp850_bin">
|
||||
<Charset>cp850</Charset>
|
||||
</collation>
|
||||
<collation id="25" parent="1" name="cp850_general_ci">
|
||||
<Charset>cp850</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="26" parent="1" name="cp852_bin">
|
||||
<Charset>cp852</Charset>
|
||||
</collation>
|
||||
<collation id="27" parent="1" name="cp852_general_ci">
|
||||
<Charset>cp852</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="28" parent="1" name="cp866_bin">
|
||||
<Charset>cp866</Charset>
|
||||
</collation>
|
||||
<collation id="29" parent="1" name="cp866_general_ci">
|
||||
<Charset>cp866</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="30" parent="1" name="cp932_bin">
|
||||
<Charset>cp932</Charset>
|
||||
</collation>
|
||||
<collation id="31" parent="1" name="cp932_japanese_ci">
|
||||
<Charset>cp932</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="32" parent="1" name="dec8_bin">
|
||||
<Charset>dec8</Charset>
|
||||
</collation>
|
||||
<collation id="33" parent="1" name="dec8_swedish_ci">
|
||||
<Charset>dec8</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="34" parent="1" name="eucjpms_bin">
|
||||
<Charset>eucjpms</Charset>
|
||||
</collation>
|
||||
<collation id="35" parent="1" name="eucjpms_japanese_ci">
|
||||
<Charset>eucjpms</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="36" parent="1" name="euckr_bin">
|
||||
<Charset>euckr</Charset>
|
||||
</collation>
|
||||
<collation id="37" parent="1" name="euckr_korean_ci">
|
||||
<Charset>euckr</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="38" parent="1" name="gb2312_bin">
|
||||
<Charset>gb2312</Charset>
|
||||
</collation>
|
||||
<collation id="39" parent="1" name="gb2312_chinese_ci">
|
||||
<Charset>gb2312</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="40" parent="1" name="gbk_bin">
|
||||
<Charset>gbk</Charset>
|
||||
</collation>
|
||||
<collation id="41" parent="1" name="gbk_chinese_ci">
|
||||
<Charset>gbk</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="42" parent="1" name="geostd8_bin">
|
||||
<Charset>geostd8</Charset>
|
||||
</collation>
|
||||
<collation id="43" parent="1" name="geostd8_general_ci">
|
||||
<Charset>geostd8</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="44" parent="1" name="greek_bin">
|
||||
<Charset>greek</Charset>
|
||||
</collation>
|
||||
<collation id="45" parent="1" name="greek_general_ci">
|
||||
<Charset>greek</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="46" parent="1" name="hebrew_bin">
|
||||
<Charset>hebrew</Charset>
|
||||
</collation>
|
||||
<collation id="47" parent="1" name="hebrew_general_ci">
|
||||
<Charset>hebrew</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="48" parent="1" name="hp8_bin">
|
||||
<Charset>hp8</Charset>
|
||||
</collation>
|
||||
<collation id="49" parent="1" name="hp8_english_ci">
|
||||
<Charset>hp8</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="50" parent="1" name="keybcs2_bin">
|
||||
<Charset>keybcs2</Charset>
|
||||
</collation>
|
||||
<collation id="51" parent="1" name="keybcs2_general_ci">
|
||||
<Charset>keybcs2</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="52" parent="1" name="koi8r_bin">
|
||||
<Charset>koi8r</Charset>
|
||||
</collation>
|
||||
<collation id="53" parent="1" name="koi8r_general_ci">
|
||||
<Charset>koi8r</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="54" parent="1" name="koi8u_bin">
|
||||
<Charset>koi8u</Charset>
|
||||
</collation>
|
||||
<collation id="55" parent="1" name="koi8u_general_ci">
|
||||
<Charset>koi8u</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="56" parent="1" name="latin1_bin">
|
||||
<Charset>latin1</Charset>
|
||||
</collation>
|
||||
<collation id="57" parent="1" name="latin1_danish_ci">
|
||||
<Charset>latin1</Charset>
|
||||
</collation>
|
||||
<collation id="58" parent="1" name="latin1_general_ci">
|
||||
<Charset>latin1</Charset>
|
||||
</collation>
|
||||
<collation id="59" parent="1" name="latin1_general_cs">
|
||||
<Charset>latin1</Charset>
|
||||
</collation>
|
||||
<collation id="60" parent="1" name="latin1_german1_ci">
|
||||
<Charset>latin1</Charset>
|
||||
</collation>
|
||||
<collation id="61" parent="1" name="latin1_german2_ci">
|
||||
<Charset>latin1</Charset>
|
||||
</collation>
|
||||
<collation id="62" parent="1" name="latin1_spanish_ci">
|
||||
<Charset>latin1</Charset>
|
||||
</collation>
|
||||
<collation id="63" parent="1" name="latin1_swedish_ci">
|
||||
<Charset>latin1</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="64" parent="1" name="latin2_bin">
|
||||
<Charset>latin2</Charset>
|
||||
</collation>
|
||||
<collation id="65" parent="1" name="latin2_croatian_ci">
|
||||
<Charset>latin2</Charset>
|
||||
</collation>
|
||||
<collation id="66" parent="1" name="latin2_czech_cs">
|
||||
<Charset>latin2</Charset>
|
||||
</collation>
|
||||
<collation id="67" parent="1" name="latin2_general_ci">
|
||||
<Charset>latin2</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="68" parent="1" name="latin2_hungarian_ci">
|
||||
<Charset>latin2</Charset>
|
||||
</collation>
|
||||
<collation id="69" parent="1" name="latin5_bin">
|
||||
<Charset>latin5</Charset>
|
||||
</collation>
|
||||
<collation id="70" parent="1" name="latin5_turkish_ci">
|
||||
<Charset>latin5</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="71" parent="1" name="latin7_bin">
|
||||
<Charset>latin7</Charset>
|
||||
</collation>
|
||||
<collation id="72" parent="1" name="latin7_estonian_cs">
|
||||
<Charset>latin7</Charset>
|
||||
</collation>
|
||||
<collation id="73" parent="1" name="latin7_general_ci">
|
||||
<Charset>latin7</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="74" parent="1" name="latin7_general_cs">
|
||||
<Charset>latin7</Charset>
|
||||
</collation>
|
||||
<collation id="75" parent="1" name="macce_bin">
|
||||
<Charset>macce</Charset>
|
||||
</collation>
|
||||
<collation id="76" parent="1" name="macce_general_ci">
|
||||
<Charset>macce</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="77" parent="1" name="macroman_bin">
|
||||
<Charset>macroman</Charset>
|
||||
</collation>
|
||||
<collation id="78" parent="1" name="macroman_general_ci">
|
||||
<Charset>macroman</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="79" parent="1" name="sjis_bin">
|
||||
<Charset>sjis</Charset>
|
||||
</collation>
|
||||
<collation id="80" parent="1" name="sjis_japanese_ci">
|
||||
<Charset>sjis</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="81" parent="1" name="swe7_bin">
|
||||
<Charset>swe7</Charset>
|
||||
</collation>
|
||||
<collation id="82" parent="1" name="swe7_swedish_ci">
|
||||
<Charset>swe7</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="83" parent="1" name="tis620_bin">
|
||||
<Charset>tis620</Charset>
|
||||
</collation>
|
||||
<collation id="84" parent="1" name="tis620_thai_ci">
|
||||
<Charset>tis620</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="85" parent="1" name="ucs2_bin">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="86" parent="1" name="ucs2_czech_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="87" parent="1" name="ucs2_danish_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="88" parent="1" name="ucs2_esperanto_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="89" parent="1" name="ucs2_estonian_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="90" parent="1" name="ucs2_general_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="91" parent="1" name="ucs2_general_mysql500_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="92" parent="1" name="ucs2_hungarian_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="93" parent="1" name="ucs2_icelandic_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="94" parent="1" name="ucs2_latvian_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="95" parent="1" name="ucs2_lithuanian_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="96" parent="1" name="ucs2_persian_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="97" parent="1" name="ucs2_polish_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="98" parent="1" name="ucs2_roman_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="99" parent="1" name="ucs2_romanian_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="100" parent="1" name="ucs2_sinhala_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="101" parent="1" name="ucs2_slovak_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="102" parent="1" name="ucs2_slovenian_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="103" parent="1" name="ucs2_spanish2_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="104" parent="1" name="ucs2_spanish_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="105" parent="1" name="ucs2_swedish_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="106" parent="1" name="ucs2_turkish_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="107" parent="1" name="ucs2_unicode_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="108" parent="1" name="ujis_bin">
|
||||
<Charset>ujis</Charset>
|
||||
</collation>
|
||||
<collation id="109" parent="1" name="ujis_japanese_ci">
|
||||
<Charset>ujis</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="110" parent="1" name="utf16_bin">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="111" parent="1" name="utf16_czech_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="112" parent="1" name="utf16_danish_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="113" parent="1" name="utf16_esperanto_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="114" parent="1" name="utf16_estonian_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="115" parent="1" name="utf16_general_ci">
|
||||
<Charset>utf16</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="116" parent="1" name="utf16_hungarian_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="117" parent="1" name="utf16_icelandic_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="118" parent="1" name="utf16_latvian_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="119" parent="1" name="utf16_lithuanian_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="120" parent="1" name="utf16_persian_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="121" parent="1" name="utf16_polish_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="122" parent="1" name="utf16_roman_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="123" parent="1" name="utf16_romanian_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="124" parent="1" name="utf16_sinhala_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="125" parent="1" name="utf16_slovak_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="126" parent="1" name="utf16_slovenian_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="127" parent="1" name="utf16_spanish2_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="128" parent="1" name="utf16_spanish_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="129" parent="1" name="utf16_swedish_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="130" parent="1" name="utf16_turkish_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="131" parent="1" name="utf16_unicode_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="132" parent="1" name="utf32_bin">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="133" parent="1" name="utf32_czech_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="134" parent="1" name="utf32_danish_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="135" parent="1" name="utf32_esperanto_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="136" parent="1" name="utf32_estonian_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="137" parent="1" name="utf32_general_ci">
|
||||
<Charset>utf32</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="138" parent="1" name="utf32_hungarian_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="139" parent="1" name="utf32_icelandic_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="140" parent="1" name="utf32_latvian_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="141" parent="1" name="utf32_lithuanian_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="142" parent="1" name="utf32_persian_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="143" parent="1" name="utf32_polish_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="144" parent="1" name="utf32_roman_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="145" parent="1" name="utf32_romanian_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="146" parent="1" name="utf32_sinhala_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="147" parent="1" name="utf32_slovak_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="148" parent="1" name="utf32_slovenian_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="149" parent="1" name="utf32_spanish2_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="150" parent="1" name="utf32_spanish_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="151" parent="1" name="utf32_swedish_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="152" parent="1" name="utf32_turkish_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="153" parent="1" name="utf32_unicode_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="154" parent="1" name="utf8_bin">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="155" parent="1" name="utf8_czech_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="156" parent="1" name="utf8_danish_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="157" parent="1" name="utf8_esperanto_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="158" parent="1" name="utf8_estonian_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="159" parent="1" name="utf8_general_ci">
|
||||
<Charset>utf8</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="160" parent="1" name="utf8_general_mysql500_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="161" parent="1" name="utf8_hungarian_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="162" parent="1" name="utf8_icelandic_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="163" parent="1" name="utf8_latvian_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="164" parent="1" name="utf8_lithuanian_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="165" parent="1" name="utf8_persian_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="166" parent="1" name="utf8_polish_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="167" parent="1" name="utf8_roman_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="168" parent="1" name="utf8_romanian_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="169" parent="1" name="utf8_sinhala_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="170" parent="1" name="utf8_slovak_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="171" parent="1" name="utf8_slovenian_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="172" parent="1" name="utf8_spanish2_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="173" parent="1" name="utf8_spanish_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="174" parent="1" name="utf8_swedish_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="175" parent="1" name="utf8_turkish_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="176" parent="1" name="utf8_unicode_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="177" parent="1" name="utf8mb4_bin">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="178" parent="1" name="utf8mb4_czech_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="179" parent="1" name="utf8mb4_danish_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="180" parent="1" name="utf8mb4_esperanto_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="181" parent="1" name="utf8mb4_estonian_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="182" parent="1" name="utf8mb4_general_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="183" parent="1" name="utf8mb4_hungarian_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="184" parent="1" name="utf8mb4_icelandic_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="185" parent="1" name="utf8mb4_latvian_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="186" parent="1" name="utf8mb4_lithuanian_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="187" parent="1" name="utf8mb4_persian_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="188" parent="1" name="utf8mb4_polish_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="189" parent="1" name="utf8mb4_roman_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="190" parent="1" name="utf8mb4_romanian_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="191" parent="1" name="utf8mb4_sinhala_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="192" parent="1" name="utf8mb4_slovak_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="193" parent="1" name="utf8mb4_slovenian_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="194" parent="1" name="utf8mb4_spanish2_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="195" parent="1" name="utf8mb4_spanish_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="196" parent="1" name="utf8mb4_swedish_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="197" parent="1" name="utf8mb4_turkish_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="198" parent="1" name="utf8mb4_unicode_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<schema id="199" parent="1" name="hotal">
|
||||
<CollationName>utf8_general_ci</CollationName>
|
||||
</schema>
|
||||
<schema id="200" parent="1" name="information_schema">
|
||||
<CollationName>utf8_general_ci</CollationName>
|
||||
</schema>
|
||||
<schema id="201" parent="1" name="mysql">
|
||||
<CollationName>utf8_general_ci</CollationName>
|
||||
</schema>
|
||||
<schema id="202" parent="1" name="performance_schema">
|
||||
<CollationName>utf8_general_ci</CollationName>
|
||||
</schema>
|
||||
<schema id="203" parent="1" name="project">
|
||||
<CollationName>utf8_general_ci</CollationName>
|
||||
</schema>
|
||||
<schema id="204" parent="1" name="student-attendance-system">
|
||||
<Current>1</Current>
|
||||
<CollationName>utf8_general_ci</CollationName>
|
||||
</schema>
|
||||
<schema id="205" parent="1" name="test">
|
||||
<CollationName>utf8_general_ci</CollationName>
|
||||
</schema>
|
||||
<user id="206" parent="1" name="root">
|
||||
<Host>localhost</Host>
|
||||
</user>
|
||||
</database-model>
|
||||
</dataSource>
|
||||
@ -0,0 +1,2 @@
|
||||
#n:information_schema
|
||||
!<md> [null, 0, null, null, -2147483648, -2147483648]
|
||||
@ -0,0 +1,2 @@
|
||||
#n:mysql
|
||||
!<md> [null, 0, null, null, -2147483648, -2147483648]
|
||||
@ -0,0 +1,2 @@
|
||||
#n:performance_schema
|
||||
!<md> [null, 0, null, null, -2147483648, -2147483648]
|
||||
6
.idea/encodings.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding">
|
||||
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
|
||||
</component>
|
||||
</project>
|
||||
97
.idea/inspectionProfiles/Project_Default.xml
Normal file
@ -0,0 +1,97 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="AliAccessStaticViaInstance" enabled="false" level="BLOCKER" enabled_by_default="false" />
|
||||
<inspection_tool class="AliArrayNamingShouldHaveBracket" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AliControlFlowStatementWithoutBraces" enabled="false" level="BLOCKER" enabled_by_default="false" />
|
||||
<inspection_tool class="AliDeprecation" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AliEqualsAvoidNull" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AliLongLiteralsEndingWithLowercaseL" enabled="false" level="BLOCKER" enabled_by_default="false" />
|
||||
<inspection_tool class="AliMissingOverrideAnnotation" enabled="false" level="BLOCKER" enabled_by_default="false" />
|
||||
<inspection_tool class="AliWrapperTypeEquality" enabled="false" level="BLOCKER" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaAbstractClassShouldStartWithAbstractNaming" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaAbstractMethodOrInterfaceMethodMustUseJavadoc" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaAvoidApacheBeanUtilsCopy" enabled="false" level="BLOCKER" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaAvoidCallStaticSimpleDateFormat" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaAvoidCommentBehindStatement" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaAvoidComplexCondition" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaAvoidConcurrentCompetitionRandom" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaAvoidDoubleOrFloatEqualCompare" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaAvoidManuallyCreateThread" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaAvoidMissUseOfMathRandom" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaAvoidNegationOperator" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaAvoidNewDateGetTime" enabled="false" level="BLOCKER" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaAvoidPatternCompileInMethod" enabled="false" level="BLOCKER" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaAvoidReturnInFinally" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaAvoidStartWithDollarAndUnderLineNaming" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaAvoidUseTimer" enabled="false" level="BLOCKER" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaBigDecimalAvoidDoubleConstructor" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaBooleanPropertyShouldNotStartWithIs" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaClassCastExceptionWithSubListToArrayList" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaClassCastExceptionWithToArray" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaClassMustHaveAuthor" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaClassNamingShouldBeCamel" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaCollectionInitShouldAssignCapacity" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaCommentsMustBeJavadocFormat" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaConcurrentExceptionWithModifyOriginSubList" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaConstantFieldShouldBeUpperCase" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaCountDownShouldInFinally" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaDontModifyInForeachCircle" enabled="false" level="BLOCKER" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaEnumConstantsMustHaveComment" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaExceptionClassShouldEndWithException" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaIbatisMethodQueryForList" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaLockShouldWithTryFinally" enabled="false" level="BLOCKER" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaLowerCamelCaseVariableNaming" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaMethodReturnWrapperType" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaMethodTooLong" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaPackageNaming" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaPojoMustOverrideToString" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaPojoMustUsePrimitiveField" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaPojoNoDefaultValue" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaRemoveCommentedCode" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaServiceOrDaoClassShouldEndWithImpl" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaStringConcat" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaSwitchStatement" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaTestClassShouldEndWithTestNaming" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaThreadLocalShouldRemove" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaThreadPoolCreation" enabled="false" level="BLOCKER" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaThreadShouldSetName" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaTransactionMustHaveRollback" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaUndefineMagicConstant" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaUnsupportedExceptionWithModifyAsList" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaUseQuietReferenceNotation" enabled="false" level="MAJOR" enabled_by_default="false" />
|
||||
<inspection_tool class="AlibabaUseRightCaseForDateFormat" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
<inspection_tool class="JavaDoc" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="TOP_LEVEL_CLASS_OPTIONS">
|
||||
<value>
|
||||
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
|
||||
<option name="REQUIRED_TAGS" value="" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="INNER_CLASS_OPTIONS">
|
||||
<value>
|
||||
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
|
||||
<option name="REQUIRED_TAGS" value="" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="METHOD_OPTIONS">
|
||||
<value>
|
||||
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
|
||||
<option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="FIELD_OPTIONS">
|
||||
<value>
|
||||
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
|
||||
<option name="REQUIRED_TAGS" value="" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="IGNORE_DEPRECATED" value="false" />
|
||||
<option name="IGNORE_JAVADOC_PERIOD" value="true" />
|
||||
<option name="IGNORE_DUPLICATED_THROWS" value="false" />
|
||||
<option name="IGNORE_POINT_TO_ITSELF" value="false" />
|
||||
<option name="myAdditionalJavadocTags" value="date" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="MapOrSetKeyShouldOverrideHashCodeEquals" enabled="false" level="CRITICAL" enabled_by_default="false" />
|
||||
</profile>
|
||||
</component>
|
||||
30
.idea/jarRepositories.xml
Normal file
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="RemoteRepositoriesConfiguration">
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Central Repository" />
|
||||
<option name="url" value="https://repo.maven.apache.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Central Repository" />
|
||||
<option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Maven Central repository" />
|
||||
<option name="url" value="https://repo1.maven.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="jboss.community" />
|
||||
<option name="name" value="JBoss Community repository" />
|
||||
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Central Repository" />
|
||||
<option name="url" value="https://maven.aliyun.com/repository/public" />
|
||||
</remote-repository>
|
||||
</component>
|
||||
</project>
|
||||
12
.idea/misc.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="MavenProjectsManager">
|
||||
<option name="originalFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/pom.xml" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
|
||||
</project>
|
||||
8
.idea/modules.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/Student-Attendance-Management-System.iml" filepath="$PROJECT_DIR$/Student-Attendance-Management-System.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/smartfox_info.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="SmartFoxProjectConfig">
|
||||
<option name="projectInspectionClosed" value="true" />
|
||||
</component>
|
||||
</project>
|
||||
124
.idea/uiDesigner.xml
Normal file
@ -0,0 +1,124 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Palette2">
|
||||
<group name="Swing">
|
||||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
||||
</item>
|
||||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
|
||||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
||||
<initial-values>
|
||||
<property name="text" value="Button" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="RadioButton" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="CheckBox" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="Label" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
||||
<preferred-size width="-1" height="20" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
||||
</item>
|
||||
</group>
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
201
LICENSE
Normal file
@ -0,0 +1,201 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
30
README.md
Normal file
@ -0,0 +1,30 @@
|
||||
# Student Attendance Management System
|
||||
|
||||
#### 介绍
|
||||
基于SSM的学生考勤管理系统,是本人的毕业设计,包含学生选课、请假管理,教师开课、签到管理。项目使用的jdk版本为 **JDK1.8** ,数据库为 **MySQL-5.x** 。
|
||||
|
||||
#### 技术说明
|
||||
1. 前端技术:HTML5、JavaScript、CSS、Jquery、Thymeleaf。
|
||||
2. 后端技术:SpringBoot、SpringMVC、Mybatis。
|
||||
|
||||
|
||||
#### 安装教程
|
||||
|
||||
1. 克隆项目到本地。
|
||||
2. 项目对应的 **SQL文件** 存放于项目根目录下,请将其配置到本地数据库中。
|
||||
3. 对于intellij idea的使用者,请修改项目配置的Maven主路径。
|
||||
4. - 请将jdk版本配置为 **1.8** 。
|
||||
- 如果使用的数据库版本为 **8.x** ,请修改pom.xml中的 **MySQL数据库连接池** (mysql-connector-java)依赖项的版本,并修改application.yml中的项为 **spring.datasource.driver-class-name: com.mysql.cj.jdbc.Driver** 。
|
||||
5. 请修改application.yml中关于 **数据库** 以及 **项目启动端口号** 的配置。
|
||||
|
||||
#### 使用说明
|
||||
|
||||
1. 运行 **com.lxq** 包下的 **DemoApplication.java** 。
|
||||
|
||||
#### 参与贡献
|
||||
|
||||
1. Fork 本仓库
|
||||
2. 新建 Feat_YourID_xxx 分支
|
||||
3. 提交代码
|
||||
4. 新建 Pull Request
|
||||
|
||||
8
Student-Attendance-Management-System.iml
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="Spring" name="Spring">
|
||||
<configuration />
|
||||
</facet>
|
||||
</component>
|
||||
</module>
|
||||
73
pom.xml
Normal file
@ -0,0 +1,73 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.4.1</version>
|
||||
<relativePath/> <!-- lookup parent from repository -->
|
||||
</parent>
|
||||
<groupId>com.lxq</groupId>
|
||||
<artifactId>Student-Attendance-Management-System</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<name>Student-Attendance-Management-System</name>
|
||||
<description>Demo project for Spring Boot</description>
|
||||
|
||||
<properties>
|
||||
<java.version>8</java.version>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.mybatis.spring.boot</groupId>
|
||||
<artifactId>mybatis-spring-boot-starter</artifactId>
|
||||
<version>2.1.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<version>8.0.33</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.junit.vintage</groupId>
|
||||
<artifactId>junit-vintage-engine</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<!--集成redis-->
|
||||
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<version>2.7.0</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
16
src/main/java/com/lxq/DemoApplication.java
Normal file
@ -0,0 +1,16 @@
|
||||
package com.lxq;
|
||||
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
|
||||
@MapperScan("com.lxq.model.dao")
|
||||
@SpringBootApplication
|
||||
public class DemoApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(DemoApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
package com.lxq.Interceptor;
|
||||
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
@Configuration
|
||||
/**
|
||||
* 添加拦截器 用户信息校验
|
||||
*/
|
||||
public class InterceptorConfiguration implements WebMvcConfigurer {
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
// System.out.println("WebMvcConfigurer:addInterceptors被执行!!");
|
||||
registry.addInterceptor(new UrlInterceptor())
|
||||
.addPathPatterns("/**")
|
||||
.excludePathPatterns("/static/**")
|
||||
.excludePathPatterns("/");
|
||||
}
|
||||
//添加静态资源映射
|
||||
@Override
|
||||
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
||||
//静态资源放行
|
||||
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
|
||||
|
||||
}
|
||||
}
|
||||
53
src/main/java/com/lxq/Interceptor/UrlInterceptor.java
Normal file
@ -0,0 +1,53 @@
|
||||
package com.lxq.Interceptor;
|
||||
|
||||
import com.lxq.model.object.User;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
public class UrlInterceptor implements HandlerInterceptor {
|
||||
//在业务处理器处理请求之前被调用。预处理,可以进行编码、安全控制、权限校验等处理;
|
||||
@Override
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
|
||||
// System.out.println("Intercepor:preHandle被执行!!");
|
||||
// System.out.println("preHandle:session1 "+request.getSession().getAttribute("users"));
|
||||
//从Session中获取在线的用户
|
||||
Object user = request.getSession().getAttribute("users");
|
||||
|
||||
// System.out.println("preHandle:session2 "+request.getSession().getAttribute("users"));
|
||||
String requestURI = request.getRequestURI();
|
||||
System.out.println("requestURI:"+requestURI);
|
||||
|
||||
//访问以下url直接放行
|
||||
if("/user/login".equals(requestURI)
|
||||
|| "/user/userRegister".equals(requestURI)
|
||||
|| "/user/outSignIn".equals(requestURI)
|
||||
|| "/error".equals(requestURI)
|
||||
){
|
||||
// System.out.println("请求放行!!");
|
||||
return true;
|
||||
}
|
||||
|
||||
//访问其他url需要判断是否登录
|
||||
if (user == null) {
|
||||
//请求转发
|
||||
// request.getRequestDispatcher("/").forward(request, response);
|
||||
//重定向
|
||||
response.sendRedirect("/");
|
||||
return false;
|
||||
} else {
|
||||
String userLv = ((User)user).getUserLv();
|
||||
//管理员访问其他URL跳转errorPage,防止管理员通过url进行非法访问
|
||||
if ("0".equals(userLv) && (("/index/systemIndex".equals(requestURI))
|
||||
|| ("/index/recordIndex".equals(requestURI))
|
||||
|| ("/index/courseApplicationIndex".equals(requestURI))
|
||||
|| ("/index/leaveApplicationIndex".equals(requestURI)))
|
||||
&& (!"/index/userIndex".equals(requestURI))){
|
||||
|
||||
response.sendRedirect("/error");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
63
src/main/java/com/lxq/Tools/PageTools.java
Normal file
@ -0,0 +1,63 @@
|
||||
package com.lxq.Tools;
|
||||
|
||||
import com.lxq.model.object.Page;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class PageTools {
|
||||
|
||||
private Page page;
|
||||
private int itemNum = 10;
|
||||
|
||||
|
||||
public List PageHelper(List totalList, String pageNumber, ModelAndView mv) {
|
||||
//分页后列表
|
||||
List pageList = new ArrayList<>();
|
||||
page = new Page();
|
||||
int itemCount = totalList.size();
|
||||
page.setItemNum(itemNum);
|
||||
page.setDisplayPage(Integer.parseInt(pageNumber));
|
||||
page.setPageCount(itemCount % page.getItemNum() != 0 ? itemCount / page.getItemNum() + 1 : itemCount / page.getItemNum());
|
||||
|
||||
int firstItem, lastItem = 0;
|
||||
firstItem = (page.getDisplayPage() - 1) * page.getItemNum() + 1;
|
||||
lastItem = firstItem + page.getItemNum() - 1;
|
||||
if (lastItem > itemCount) {
|
||||
lastItem = itemCount;
|
||||
}
|
||||
|
||||
for (int i = firstItem; i <= lastItem; i++) {
|
||||
pageList.add(totalList.get(i - 1));
|
||||
}
|
||||
|
||||
//计算前一页和后一页页码
|
||||
if (page.getPageCount() > 1) {
|
||||
if (page.getDisplayPage() < page.getPageCount() && page.getDisplayPage() > 1) {
|
||||
page.setPrevPage(page.getDisplayPage() - 1);
|
||||
page.setNextPage(page.getDisplayPage() + 1);
|
||||
}
|
||||
if (page.getDisplayPage() == page.getPageCount()) {
|
||||
page.setPrevPage(page.getDisplayPage() - 1);
|
||||
page.setNextPage(-1);
|
||||
}
|
||||
if (page.getDisplayPage() == 1) {
|
||||
page.setPrevPage(-1);
|
||||
page.setNextPage(page.getDisplayPage() + 1);
|
||||
}
|
||||
} else {
|
||||
page.setPrevPage(-1);
|
||||
page.setNextPage(-1);
|
||||
}
|
||||
|
||||
System.out.println(page.toString());
|
||||
mv.addObject("pageInfo", page);
|
||||
|
||||
return pageList;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
48
src/main/java/com/lxq/Tools/TimeTools.java
Normal file
@ -0,0 +1,48 @@
|
||||
package com.lxq.Tools;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class TimeTools {
|
||||
//获取当前时间
|
||||
public String getTime() {
|
||||
Date date = new Date();
|
||||
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
return formatter.format(date);
|
||||
}
|
||||
|
||||
//获取年月日
|
||||
public String getTimeYMD() {
|
||||
Date date = new Date();
|
||||
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
|
||||
return formatter.format(date);
|
||||
}
|
||||
|
||||
|
||||
//通过当前时间 加上时间长度 获取一段时间
|
||||
public List<String> getTimeArr(String time, Integer length) {
|
||||
List<String> timeList = new ArrayList<>();
|
||||
try {
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
||||
Date date = simpleDateFormat.parse(time);
|
||||
for (int i = 0; i < length; i++) {
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(date);
|
||||
cal.add(Calendar.DATE, i);
|
||||
String timeString = simpleDateFormat.format(cal.getTime());
|
||||
timeList.add(timeString);
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return timeList;
|
||||
|
||||
}
|
||||
}
|
||||
27
src/main/java/com/lxq/Tools/UserTools.java
Normal file
@ -0,0 +1,27 @@
|
||||
package com.lxq.Tools;
|
||||
|
||||
import com.lxq.model.object.User;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
/*
|
||||
从session中获取当前用户信息
|
||||
*/
|
||||
@Component
|
||||
public class UserTools {
|
||||
|
||||
public User getUserMessageForSeesion(HttpServletRequest request){
|
||||
User user = null;
|
||||
Object users = request.getSession().getAttribute("users");
|
||||
try {
|
||||
//获取当前用户
|
||||
if (null != users) {
|
||||
user = (User) request.getSession().getAttribute("users");
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return user;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,87 @@
|
||||
package com.lxq.controller;
|
||||
|
||||
import com.lxq.Tools.TimeTools;
|
||||
import com.lxq.Tools.UserTools;
|
||||
import com.lxq.model.object.CourseApplication;
|
||||
import com.lxq.model.object.User;
|
||||
import com.lxq.model.service.CourseApplicationService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/courseApplication")
|
||||
public class CourseApplicationController {
|
||||
|
||||
@Autowired
|
||||
private CourseApplicationService courseApplicationService;
|
||||
@Autowired
|
||||
private UserTools userTools;
|
||||
@Autowired
|
||||
private TimeTools timeTools;
|
||||
|
||||
//查询
|
||||
@RequestMapping("/s")
|
||||
@ResponseBody
|
||||
public List<CourseApplication> get(CourseApplication courseApplication, HttpServletRequest request){
|
||||
//封装申请的学生信息
|
||||
User userMessageForSeesion = userTools.getUserMessageForSeesion(request);
|
||||
|
||||
//学生只允许 查询自己的
|
||||
if("2".equals(userMessageForSeesion.getUserLv())){
|
||||
courseApplication.setUserId(userMessageForSeesion.getUserId());
|
||||
courseApplication.setState("同意");
|
||||
}
|
||||
return courseApplicationService.getAllCourseApplicationWithoutDelete(courseApplication);
|
||||
}
|
||||
|
||||
//新增
|
||||
@RequestMapping("/add")
|
||||
@ResponseBody
|
||||
public String add(@RequestBody CourseApplication courseApplication, HttpServletRequest request){
|
||||
//封装申请的学生信息
|
||||
User userMessageForSeesion = userTools.getUserMessageForSeesion(request);
|
||||
courseApplication.setUserId(userMessageForSeesion.getUserId());
|
||||
if (courseApplicationService.getCourseApplicationbyPrimary(courseApplication) != null){
|
||||
return "false-has-double";
|
||||
}
|
||||
//添加时间
|
||||
String timeYMD = timeTools.getTimeYMD();
|
||||
courseApplication.setTime(timeYMD);
|
||||
//设置状态
|
||||
courseApplication.setState("申请");
|
||||
return courseApplicationService.addCourseApplication(courseApplication);
|
||||
|
||||
}
|
||||
|
||||
//删除
|
||||
@RequestMapping("/del")
|
||||
@ResponseBody
|
||||
public String del(@RequestBody CourseApplication courseApplication){
|
||||
return courseApplicationService.delCourseApplication(courseApplication);
|
||||
|
||||
}
|
||||
|
||||
//更新
|
||||
@RequestMapping("/up")
|
||||
@ResponseBody
|
||||
public String up(@RequestBody CourseApplication courseApplication, HttpServletRequest request){
|
||||
//封装申请的学生信息
|
||||
User userMessageForSeesion = userTools.getUserMessageForSeesion(request);
|
||||
|
||||
//学生只允许进行取消,和重新申请(权限操作)
|
||||
if("2".equals(userMessageForSeesion.getUserLv())){
|
||||
if("同意".equals(courseApplication.getState()) || "拒绝".equals(courseApplication.getState())){
|
||||
return "false";
|
||||
}
|
||||
}
|
||||
return courseApplicationService.updateCourseApplication(courseApplication);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
78
src/main/java/com/lxq/controller/CurriculumController.java
Normal file
@ -0,0 +1,78 @@
|
||||
package com.lxq.controller;
|
||||
|
||||
import com.lxq.Tools.TimeTools;
|
||||
import com.lxq.Tools.UserTools;
|
||||
import com.lxq.model.object.Curriculum;
|
||||
import com.lxq.model.object.User;
|
||||
import com.lxq.model.service.CurriculumService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/curriculum")
|
||||
public class CurriculumController {
|
||||
|
||||
@Autowired
|
||||
private CurriculumService CurriculumService;
|
||||
@Autowired
|
||||
private UserTools userTools;
|
||||
@Autowired
|
||||
private TimeTools timeTools;
|
||||
|
||||
//查询
|
||||
@RequestMapping("/s")
|
||||
@ResponseBody
|
||||
public List<Curriculum> get(Curriculum Curriculum){
|
||||
return CurriculumService.getAllCurriculum(Curriculum);
|
||||
}
|
||||
|
||||
//添加课程
|
||||
@RequestMapping("/add")
|
||||
@ResponseBody
|
||||
public String add(@RequestBody Curriculum curriculum, HttpServletRequest request){
|
||||
//封装老师信息
|
||||
User userMessageForSeesion = userTools.getUserMessageForSeesion(request);
|
||||
//权限限制
|
||||
if(!"1".equals(userMessageForSeesion.getUserLv())){
|
||||
return "false";
|
||||
}
|
||||
curriculum.setTeacherId(userMessageForSeesion.getUserId());
|
||||
curriculum.setJoinUserNum(0);
|
||||
|
||||
if (CurriculumService.getCurriculumbyPrimary(curriculum) != null){
|
||||
return "false-has-double";
|
||||
}
|
||||
return CurriculumService.addCurriculum(curriculum);
|
||||
|
||||
}
|
||||
|
||||
//删除
|
||||
@RequestMapping("/del")
|
||||
@ResponseBody
|
||||
public String del(@RequestBody Curriculum curriculum){
|
||||
return CurriculumService.delCurriculum(curriculum);
|
||||
|
||||
}
|
||||
//更新
|
||||
@RequestMapping("/up")
|
||||
@ResponseBody
|
||||
public String up(@RequestBody Curriculum curriculum, HttpServletRequest request){
|
||||
//封装老师信息
|
||||
User userMessageForSeesion = userTools.getUserMessageForSeesion(request);
|
||||
//权限限制
|
||||
if(!"1".equals(userMessageForSeesion.getUserLv())){
|
||||
return "false";
|
||||
}
|
||||
curriculum.setTeacherId(userMessageForSeesion.getUserId());
|
||||
|
||||
return CurriculumService.updateCurriculum(curriculum);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
353
src/main/java/com/lxq/controller/IndexController.java
Normal file
@ -0,0 +1,353 @@
|
||||
package com.lxq.controller;
|
||||
|
||||
import com.lxq.Tools.PageTools;
|
||||
import com.lxq.Tools.UserTools;
|
||||
import com.lxq.model.object.*;
|
||||
import com.lxq.model.service.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/index")
|
||||
public class IndexController {
|
||||
@Autowired
|
||||
private UserTools userTools;
|
||||
@Autowired
|
||||
private PageTools pageTools;
|
||||
@Autowired
|
||||
private CurriculumService curriculumService;
|
||||
@Autowired
|
||||
private CourseApplicationService courseApplicationService;
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
@Autowired
|
||||
private LeaveApplicationService leaveApplicationService;
|
||||
@Autowired
|
||||
private RecordService recordService;
|
||||
|
||||
|
||||
|
||||
//课程
|
||||
@RequestMapping("/systemIndex")
|
||||
public ModelAndView systemIndex(HttpServletRequest request, Curriculum curriculum , String userAccount , String pageNum) {
|
||||
|
||||
User userMessageForSeesion = userTools.getUserMessageForSeesion(request);
|
||||
ModelAndView mv = new ModelAndView("systemIndex");
|
||||
List<Curriculum> curriculumFilter = new ArrayList<>();
|
||||
|
||||
|
||||
//教师访问主页时,展示的是自己的课程信息
|
||||
if ("1".equals(userMessageForSeesion.getUserLv())) {
|
||||
curriculum.setTeacherId(userMessageForSeesion.getUserId());
|
||||
List<Curriculum> allCurriculum = curriculumService.getAllCurriculum(curriculum);
|
||||
|
||||
curriculumFilter = allCurriculum;
|
||||
}
|
||||
|
||||
//学生主页时,展示的是所有课程信息
|
||||
if ("2".equals(userMessageForSeesion.getUserLv())) {
|
||||
List<Curriculum> allCurriculum = curriculumService.getAllCurriculum(curriculum);
|
||||
if (userAccount != null){
|
||||
for (Curriculum curriculm:allCurriculum) {
|
||||
if (curriculm.getTeacherMessage().getUserAccount().toLowerCase().contains(userAccount.toLowerCase())){
|
||||
curriculumFilter.add(curriculm);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
curriculumFilter = allCurriculum;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//分页
|
||||
if (pageNum == null){
|
||||
pageNum = "1";
|
||||
}
|
||||
//有数据才分页
|
||||
if (curriculumFilter.size() > 0){
|
||||
curriculumFilter = pageTools.PageHelper(curriculumFilter,pageNum,mv);
|
||||
}else{
|
||||
Page page = new Page(10,-1,0,-1,-1);
|
||||
mv.addObject("pageInfo",page);
|
||||
}
|
||||
|
||||
mv.addObject("curriculumList", curriculumFilter);
|
||||
mv.addObject("active","systemIndex");
|
||||
|
||||
return mv;
|
||||
}
|
||||
|
||||
//课程申请
|
||||
@RequestMapping("/courseApplicationIndex")
|
||||
public ModelAndView courseApplicationIndex(HttpServletRequest request, CourseApplication courseApplication, String curriculumName , String place , String userAccount , String pageNum) {
|
||||
User userMessageForSeesion = userTools.getUserMessageForSeesion(request);
|
||||
ModelAndView mv = new ModelAndView("/courseApplication");
|
||||
List<CourseApplication> allCourseApplication = new ArrayList<>();
|
||||
//教师访问主页时,展示的是他人申请的信息
|
||||
if ("1".equals(userMessageForSeesion.getUserLv())) {
|
||||
courseApplication.setTeacherId(userMessageForSeesion.getUserId());
|
||||
|
||||
}
|
||||
|
||||
//学生主页时,展示的是自己的课程申请
|
||||
if ("2".equals(userMessageForSeesion.getUserLv())) {
|
||||
courseApplication.setUserId(userMessageForSeesion.getUserId());
|
||||
}
|
||||
|
||||
allCourseApplication = courseApplicationService.getAllCourseApplication(courseApplication);
|
||||
List<CourseApplication> allCourseApplicationReturn = new ArrayList<>();
|
||||
if (null != userAccount) {
|
||||
//按用户账号筛选
|
||||
if("1".equals(userMessageForSeesion.getUserLv())){
|
||||
//老师按学生查找
|
||||
for (CourseApplication courseApplicationSearch: allCourseApplication) {
|
||||
if(courseApplicationSearch.getStudentMessage().getUserAccount().toLowerCase().contains(userAccount.toLowerCase())){
|
||||
|
||||
allCourseApplicationReturn.add(courseApplicationSearch);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ("2".equals(userMessageForSeesion.getUserLv())){
|
||||
//学生按老师查找
|
||||
for (CourseApplication courseApplicationSearch: allCourseApplication) {
|
||||
if(courseApplicationSearch.getTeacherMessage().getUserAccount().toLowerCase().contains(userAccount.toLowerCase())){
|
||||
|
||||
allCourseApplicationReturn.add(courseApplicationSearch);
|
||||
}
|
||||
}
|
||||
}
|
||||
}else if (null != curriculumName){
|
||||
//按课程名筛选
|
||||
for (CourseApplication courseApplicationSearch:allCourseApplication) {
|
||||
|
||||
if(courseApplicationSearch.getCurriculumMessage() != null && courseApplicationSearch.getCurriculumMessage().getCurriculumName().toLowerCase().contains(curriculumName.toLowerCase())){
|
||||
allCourseApplicationReturn.add(courseApplicationSearch);
|
||||
}
|
||||
}
|
||||
}else if (null != place){
|
||||
//按授课地点筛选
|
||||
for (CourseApplication courseApplicationSearch:allCourseApplication) {
|
||||
|
||||
if(courseApplicationSearch.getCurriculumMessage() != null && courseApplicationSearch.getCurriculumMessage().getPlace().toLowerCase().contains(place.toLowerCase())){
|
||||
allCourseApplicationReturn.add(courseApplicationSearch);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
allCourseApplicationReturn = allCourseApplication;
|
||||
}
|
||||
|
||||
//分页
|
||||
if (pageNum == null){
|
||||
pageNum = "1";
|
||||
}
|
||||
//有东西才分页
|
||||
if (allCourseApplicationReturn.size() > 0){
|
||||
allCourseApplicationReturn = pageTools.PageHelper(allCourseApplicationReturn,pageNum,mv);
|
||||
}else{
|
||||
Page page = new Page(10,-1,0,-1,-1);
|
||||
mv.addObject("pageInfo",page);
|
||||
}
|
||||
|
||||
mv.addObject("active","courseApplicationIndex");
|
||||
mv.addObject("courseApplicationList", allCourseApplicationReturn);
|
||||
return mv;
|
||||
}
|
||||
|
||||
|
||||
//请假申请
|
||||
@RequestMapping("/leaveApplicationIndex")
|
||||
public ModelAndView leaveApplicationIndex(HttpServletRequest request, LeaveApplication leaveApplication, String curriculumName , String userAccount , String pageNum) {
|
||||
User userMessageForSeesion = userTools.getUserMessageForSeesion(request);
|
||||
ModelAndView mv = new ModelAndView("/leaveApplication");
|
||||
|
||||
//教师访问主页时,展示的是他人申请的信息
|
||||
if ("1".equals(userMessageForSeesion.getUserLv())) {
|
||||
leaveApplication.setTeacherId(userMessageForSeesion.getUserId());
|
||||
}
|
||||
|
||||
//学生展示的是自己的请假申请
|
||||
if ("2".equals(userMessageForSeesion.getUserLv())) {
|
||||
leaveApplication.setUserId(userMessageForSeesion.getUserId());
|
||||
}
|
||||
|
||||
List<LeaveApplication> allLeaveApplication = leaveApplicationService.getAllLeaveApplication(leaveApplication);
|
||||
List<LeaveApplication> allLeaveApplicationReturn = new ArrayList<>();
|
||||
|
||||
|
||||
if (null != userAccount) {
|
||||
//按用户账号筛选
|
||||
if("1".equals(userMessageForSeesion.getUserLv())){
|
||||
//老师按学生查找
|
||||
for (LeaveApplication leaveApplicationSearch: allLeaveApplication) {
|
||||
if(leaveApplicationSearch.getStudentMessage().getUserAccount().toLowerCase().contains(userAccount.toLowerCase())){
|
||||
|
||||
allLeaveApplicationReturn.add(leaveApplicationSearch);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ("2".equals(userMessageForSeesion.getUserLv())){
|
||||
//学生按老师查找
|
||||
for (LeaveApplication leaveApplicationSearch: allLeaveApplication) {
|
||||
if(leaveApplicationSearch.getTeacherMessage().getUserAccount().toLowerCase().contains(userAccount.toLowerCase())){
|
||||
|
||||
allLeaveApplicationReturn.add(leaveApplicationSearch);
|
||||
}
|
||||
}
|
||||
}
|
||||
}else if (null != curriculumName){
|
||||
//按课程名筛选
|
||||
for (LeaveApplication leaveApplicationSearch:allLeaveApplication) {
|
||||
|
||||
if(leaveApplicationSearch.getCurriculumMessage() != null && leaveApplicationSearch.getCurriculumMessage().getCurriculumName().toLowerCase().contains(curriculumName.toLowerCase())){
|
||||
allLeaveApplicationReturn.add(leaveApplicationSearch);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
allLeaveApplicationReturn = allLeaveApplication;
|
||||
}
|
||||
|
||||
|
||||
//分页
|
||||
if (pageNum == null){
|
||||
pageNum = "1";
|
||||
}
|
||||
//有东西才分页
|
||||
if (allLeaveApplicationReturn.size() > 0){
|
||||
allLeaveApplicationReturn = pageTools.PageHelper(allLeaveApplicationReturn,pageNum,mv);
|
||||
}else{
|
||||
Page page = new Page(10,-1,0,-1,-1);
|
||||
mv.addObject("pageInfo",page);
|
||||
}
|
||||
|
||||
|
||||
mv.addObject("active","leaveApplicationIndex");
|
||||
mv.addObject("leaveApplicationList", allLeaveApplicationReturn);
|
||||
return mv;
|
||||
}
|
||||
|
||||
|
||||
//用户主页
|
||||
@RequestMapping("/userIndex")
|
||||
public ModelAndView userIndex(HttpServletRequest request , User Search , String pageNum) {
|
||||
User user = new User();
|
||||
User userMessageForSeesion = userTools.getUserMessageForSeesion(request);
|
||||
ModelAndView mv = new ModelAndView("/userUp");
|
||||
List<User> allUser = new ArrayList<>();
|
||||
if("0".equals(userMessageForSeesion.getUserLv())){
|
||||
//通过用户信息筛选用户
|
||||
allUser = userService.getAllUser(Search);
|
||||
|
||||
//分页
|
||||
if (pageNum == null){
|
||||
pageNum = "1";
|
||||
}
|
||||
//有数据才分页
|
||||
if (allUser.size() > 0){
|
||||
allUser = pageTools.PageHelper(allUser,pageNum,mv);
|
||||
}else{
|
||||
Page page = new Page(10,-1,0,-1,-1);
|
||||
mv.addObject("pageInfo",page);
|
||||
}
|
||||
|
||||
}else{
|
||||
user.setUserId(userMessageForSeesion.getUserId());
|
||||
User userSearch = userService.getUser(user);
|
||||
allUser.add(userSearch);
|
||||
}
|
||||
mv.addObject("active","userIndex");
|
||||
mv.addObject("userList", allUser);
|
||||
return mv;
|
||||
}
|
||||
|
||||
|
||||
//考勤主页
|
||||
@RequestMapping("/recordIndex")
|
||||
public ModelAndView recordIndex(HttpServletRequest request, Record record , String userAccount , String curriculumName , String pageNum) {
|
||||
User userMessageForSeesion = userTools.getUserMessageForSeesion(request);
|
||||
ModelAndView mv = new ModelAndView("/record");
|
||||
|
||||
if (record.getTime() != null){
|
||||
if (!record.getTime().equals("")){
|
||||
String[] split = record.getTime().split(" to ");
|
||||
Integer min = Integer.parseInt(split[0].replaceAll("-",""));
|
||||
Integer max = Integer.parseInt(split[1].replaceAll("-",""));
|
||||
record.setTimeNumMax(max);
|
||||
record.setTimeNumMin(min);
|
||||
|
||||
}
|
||||
record.setTime(null);
|
||||
}
|
||||
|
||||
//教师访问主页时,展示的是自己学生的考勤信息
|
||||
if ("1".equals(userMessageForSeesion.getUserLv())) {
|
||||
record.setTeacherId(userMessageForSeesion.getUserId());
|
||||
}
|
||||
|
||||
//学生主页时,展示的是自己的考勤
|
||||
if ("2".equals(userMessageForSeesion.getUserLv())) {
|
||||
record.setUserId(userMessageForSeesion.getUserId());
|
||||
}
|
||||
|
||||
List<Record> allRecord = recordService.getAllRecord(record);
|
||||
List<Record> allRecordReturn = new ArrayList<>();
|
||||
|
||||
|
||||
if (null != userAccount) {
|
||||
//按用户账号筛选
|
||||
if("1".equals(userMessageForSeesion.getUserLv())){
|
||||
//老师按学生查找
|
||||
for (Record recordSearch: allRecord) {
|
||||
if(recordSearch.getStudentMessage().getUserAccount().toLowerCase().contains(userAccount.toLowerCase())){
|
||||
|
||||
allRecordReturn.add(recordSearch);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ("2".equals(userMessageForSeesion.getUserLv())){
|
||||
//学生按老师查找
|
||||
for (Record recordSearch: allRecord) {
|
||||
if(recordSearch.getTeacherMessage().getUserAccount().toLowerCase().contains(userAccount.toLowerCase())){
|
||||
|
||||
allRecordReturn.add(recordSearch);
|
||||
}
|
||||
}
|
||||
}
|
||||
}else if (null != curriculumName){
|
||||
//按课程名筛选
|
||||
for (Record recordSearch:allRecord) {
|
||||
if(recordSearch.getCurriculumMessage() != null && recordSearch.getCurriculumMessage().getCurriculumName().toLowerCase().contains(curriculumName.toLowerCase())){
|
||||
allRecordReturn.add(recordSearch);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
allRecordReturn = allRecord;
|
||||
}
|
||||
|
||||
|
||||
//分页
|
||||
if (pageNum == null){
|
||||
pageNum = "1";
|
||||
}
|
||||
//有东西才分页
|
||||
if (allRecordReturn.size() > 0){
|
||||
allRecordReturn = pageTools.PageHelper(allRecordReturn,pageNum,mv);
|
||||
}else{
|
||||
Page page = new Page(10,-1,0,-1,-1);
|
||||
mv.addObject("pageInfo",page);
|
||||
}
|
||||
|
||||
|
||||
|
||||
mv.addObject("recordList", allRecordReturn);
|
||||
mv.addObject("active","recordIndex");
|
||||
return mv;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,79 @@
|
||||
package com.lxq.controller;
|
||||
|
||||
import com.lxq.Tools.TimeTools;
|
||||
import com.lxq.Tools.UserTools;
|
||||
import com.lxq.model.object.LeaveApplication;
|
||||
import com.lxq.model.object.User;
|
||||
import com.lxq.model.service.LeaveApplicationService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/leaveApplication")
|
||||
public class LeaveApplicationController {
|
||||
|
||||
@Autowired
|
||||
private LeaveApplicationService leaveApplicationService;
|
||||
@Autowired
|
||||
private UserTools userTools;
|
||||
@Autowired
|
||||
private TimeTools timeTools;
|
||||
|
||||
//查询
|
||||
@RequestMapping("/s")
|
||||
@ResponseBody
|
||||
public List<LeaveApplication> get(LeaveApplication leaveApplication){
|
||||
return leaveApplicationService.getAllLeaveApplication(leaveApplication);
|
||||
}
|
||||
|
||||
//新增
|
||||
@RequestMapping("/add")
|
||||
@ResponseBody
|
||||
public String add(@RequestBody LeaveApplication leaveApplication, HttpServletRequest request){
|
||||
//封装申请的学生信息
|
||||
User userMessageForSeesion = userTools.getUserMessageForSeesion(request);
|
||||
leaveApplication.setUserId(userMessageForSeesion.getUserId());
|
||||
//封装申请时间
|
||||
String timeYMD = timeTools.getTimeYMD();
|
||||
leaveApplication.setTime(timeYMD);
|
||||
|
||||
if (leaveApplicationService.getLeaveApplicationbyPrimary(leaveApplication) != null){
|
||||
return "false-has-double";
|
||||
}
|
||||
|
||||
return leaveApplicationService.addLeaveApplication(leaveApplication);
|
||||
|
||||
}
|
||||
|
||||
//删除
|
||||
@RequestMapping("/del")
|
||||
@ResponseBody
|
||||
public String del(@RequestBody LeaveApplication leaveApplication){
|
||||
return leaveApplicationService.delLeaveApplication(leaveApplication);
|
||||
|
||||
}
|
||||
|
||||
//更新
|
||||
@RequestMapping("/up")
|
||||
@ResponseBody
|
||||
public String up(@RequestBody LeaveApplication leaveApplication, HttpServletRequest request){
|
||||
|
||||
User userMessageForSeesion = userTools.getUserMessageForSeesion(request);
|
||||
|
||||
//学生只允许进行取消,和重新申请(权限操作)
|
||||
if("2".equals(userMessageForSeesion.getUserLv())){
|
||||
if("同意".equals(leaveApplication.getState()) || "拒绝".equals(leaveApplication.getState())){
|
||||
return "false";
|
||||
}
|
||||
}
|
||||
return leaveApplicationService.updateLeaveApplication(leaveApplication);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
65
src/main/java/com/lxq/controller/RecordController.java
Normal file
@ -0,0 +1,65 @@
|
||||
package com.lxq.controller;
|
||||
|
||||
import com.lxq.Tools.TimeTools;
|
||||
import com.lxq.Tools.UserTools;
|
||||
import com.lxq.model.object.Record;
|
||||
import com.lxq.model.object.User;
|
||||
import com.lxq.model.service.RecordService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/record")
|
||||
public class RecordController {
|
||||
|
||||
@Autowired
|
||||
private RecordService recordService;
|
||||
@Autowired
|
||||
private UserTools userTools;
|
||||
@Autowired
|
||||
private TimeTools timeTools;
|
||||
|
||||
//查询
|
||||
@RequestMapping("/s")
|
||||
@ResponseBody
|
||||
public List<Record> get(Record Record, HttpServletRequest request){
|
||||
//封装申请的学生信息
|
||||
User userMessageForSeesion = userTools.getUserMessageForSeesion(request);
|
||||
|
||||
//学生只允许 查询自己的
|
||||
if("2".equals(userMessageForSeesion.getUserLv())){
|
||||
Record.setUserId(userMessageForSeesion.getUserId());
|
||||
}
|
||||
return recordService.getAllRecord(Record);
|
||||
}
|
||||
|
||||
//删除
|
||||
@RequestMapping("/del")
|
||||
@ResponseBody
|
||||
public String del(Record Record){
|
||||
return recordService.delRecord(Record);
|
||||
|
||||
}
|
||||
|
||||
//更新
|
||||
@RequestMapping("/up")
|
||||
@ResponseBody
|
||||
public String up(@RequestBody Record Record, HttpServletRequest request){
|
||||
//封装申请的学生信息
|
||||
User userMessageForSeesion = userTools.getUserMessageForSeesion(request);
|
||||
|
||||
//学生不允许操作
|
||||
if("2".equals(userMessageForSeesion.getUserLv())){
|
||||
return "false";
|
||||
}
|
||||
return recordService.updateRecord(Record);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
113
src/main/java/com/lxq/controller/UserController.java
Normal file
@ -0,0 +1,113 @@
|
||||
package com.lxq.controller;
|
||||
|
||||
import com.lxq.Tools.UserTools;
|
||||
import com.lxq.model.object.User;
|
||||
import com.lxq.model.service.UserService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/user")
|
||||
public class UserController {
|
||||
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
@Autowired
|
||||
private UserTools userTools;
|
||||
|
||||
|
||||
//用户登录
|
||||
@RequestMapping("/login")
|
||||
@ResponseBody
|
||||
public String login(HttpServletRequest request, @RequestBody User user) {
|
||||
User userSearch = userService.getUserByAccount(user);
|
||||
if (userSearch == null){
|
||||
return "false-account";
|
||||
}else if (userSearch.getUserPw().equals(user.getUserPw())) {
|
||||
//用于登录检查
|
||||
request.getSession().setAttribute("users", userSearch);
|
||||
//用于前端判断身份
|
||||
request.getSession().setAttribute("userInfo",userSearch);
|
||||
|
||||
//更新访问量
|
||||
try {
|
||||
File file = new File("D:\\工作\\大学计算机\\code-workspace\\idea-workspace\\Student-Attendance-Management-System\\src\\main\\resources\\static\\file\\visitorCount.txt");
|
||||
if (!file.exists()){
|
||||
if(file.createNewFile()){
|
||||
System.out.println("成功创建文件!");
|
||||
}
|
||||
}
|
||||
|
||||
FileReader read = new FileReader(file);
|
||||
char[] ch = new char[1024];
|
||||
int d = read.read(ch);
|
||||
String str = new String(ch, 0, d);
|
||||
|
||||
int count = Integer.parseInt(str);
|
||||
count = count + 1;
|
||||
BufferedWriter output = new BufferedWriter(new FileWriter(file));
|
||||
output.write(String.valueOf(count));
|
||||
output.close();
|
||||
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
if(userSearch.getUserLv().equals("0")){
|
||||
return "true-admin";
|
||||
}else{
|
||||
return "true";
|
||||
}
|
||||
}else {
|
||||
return "false-pw";
|
||||
}
|
||||
// return "false";
|
||||
}
|
||||
|
||||
//用户退出登录
|
||||
@RequestMapping("/outSignIn")
|
||||
@ResponseBody
|
||||
public boolean outSignIn(HttpServletRequest request) {
|
||||
// request.getSession().invalidate();
|
||||
request.getSession().setAttribute("users", null);
|
||||
return true;
|
||||
}
|
||||
|
||||
//用户注册
|
||||
@RequestMapping("/userRegister")
|
||||
@ResponseBody
|
||||
public String userRegister(@RequestBody User user) {
|
||||
if (userService.getUserByAccount(user) != null){
|
||||
return "false-has-double";
|
||||
}
|
||||
//账号初始化昵称
|
||||
user.setUserName(user.getUserAccount());
|
||||
return userService.addUser(user);
|
||||
}
|
||||
|
||||
//用户修改
|
||||
@RequestMapping("/up")
|
||||
@ResponseBody
|
||||
public String up(@RequestBody User user) {
|
||||
return userService.updateUser(user);
|
||||
}
|
||||
|
||||
//用户删除
|
||||
@RequestMapping("/del")
|
||||
@ResponseBody
|
||||
public String del(User user) {
|
||||
return userService.delUser(user);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
26
src/main/java/com/lxq/model/dao/CourseApplicationDAO.java
Normal file
@ -0,0 +1,26 @@
|
||||
package com.lxq.model.dao;
|
||||
|
||||
import com.lxq.model.object.CourseApplication;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Repository
|
||||
@Mapper
|
||||
public interface CourseApplicationDAO {
|
||||
|
||||
//查询申请全部信息
|
||||
List<CourseApplication> getAllCourseApplication(CourseApplication CourseApplication);
|
||||
//查询申请信息
|
||||
CourseApplication getCourseApplication(CourseApplication CourseApplication);
|
||||
//增加申请信息
|
||||
int addCourseApplication(CourseApplication CourseApplication);
|
||||
//删除申请信息
|
||||
int delCourseApplication(CourseApplication CourseApplication);
|
||||
//修改申请信息
|
||||
int updateCourseApplication(CourseApplication CourseApplication);
|
||||
|
||||
CourseApplication getCourseApplicationbyPrimary(CourseApplication CourseApplication);
|
||||
}
|
||||
27
src/main/java/com/lxq/model/dao/CurriculumDAO.java
Normal file
@ -0,0 +1,27 @@
|
||||
package com.lxq.model.dao;
|
||||
|
||||
import com.lxq.model.object.Curriculum;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Repository
|
||||
@Mapper
|
||||
public interface CurriculumDAO {
|
||||
|
||||
//查询课程全部信息
|
||||
List<Curriculum> getAllCurriculum(Curriculum Curriculum);
|
||||
//查询课程信息
|
||||
Curriculum getCurriculum(Curriculum Curriculum);
|
||||
//通过主键查找课程
|
||||
Curriculum getCurriculumbyPrimary(Curriculum Curriculum);
|
||||
//增加课程信息
|
||||
int addCurriculum(Curriculum Curriculum);
|
||||
//删除课程信息
|
||||
int delCurriculum(Curriculum Curriculum);
|
||||
//修改课程信息
|
||||
int updateCurriculum(Curriculum Curriculum);
|
||||
|
||||
}
|
||||
26
src/main/java/com/lxq/model/dao/LeaveApplicationDAO.java
Normal file
@ -0,0 +1,26 @@
|
||||
package com.lxq.model.dao;
|
||||
|
||||
import com.lxq.model.object.LeaveApplication;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Repository
|
||||
@Mapper
|
||||
public interface LeaveApplicationDAO {
|
||||
|
||||
//查询请假全部信息
|
||||
List<LeaveApplication> getAllLeaveApplication(LeaveApplication LeaveApplication);
|
||||
//查询请假信息
|
||||
LeaveApplication getLeaveApplication(LeaveApplication LeaveApplication);
|
||||
//增加请假信息
|
||||
int addLeaveApplication(LeaveApplication LeaveApplication);
|
||||
//删除请假信息
|
||||
int delLeaveApplication(LeaveApplication LeaveApplication);
|
||||
//修改请假信息
|
||||
int updateLeaveApplication(LeaveApplication LeaveApplication);
|
||||
|
||||
LeaveApplication getLeaveApplicationbyPrimary(LeaveApplication LeaveApplication);
|
||||
}
|
||||
26
src/main/java/com/lxq/model/dao/RecordDAO.java
Normal file
@ -0,0 +1,26 @@
|
||||
package com.lxq.model.dao;
|
||||
|
||||
import com.lxq.model.object.Record;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Repository
|
||||
@Mapper
|
||||
public interface RecordDAO {
|
||||
|
||||
//查询考勤全部信息
|
||||
List<Record> getAllRecord(Record Record);
|
||||
//查询考勤信息
|
||||
Record getRecord(Record Record);
|
||||
//增加考勤信息
|
||||
int addRecord(Record Record);
|
||||
//删除考勤信息
|
||||
int delRecord(Record Record);
|
||||
//修改考勤信息
|
||||
int updateRecord(Record Record);
|
||||
|
||||
Record getRecordbyPrimary(Record record);
|
||||
}
|
||||
26
src/main/java/com/lxq/model/dao/UserDAO.java
Normal file
@ -0,0 +1,26 @@
|
||||
package com.lxq.model.dao;
|
||||
|
||||
import com.lxq.model.object.User;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Repository
|
||||
@Mapper
|
||||
public interface UserDAO {
|
||||
|
||||
//查询用户全部信息
|
||||
List<User> getAllUser(User User);
|
||||
//查询用户信息
|
||||
User getUser(User User);
|
||||
//增加用户信息
|
||||
int addUser(User User);
|
||||
//删除用户信息
|
||||
int delUser(User User);
|
||||
//修改用户信息
|
||||
int updateUser(User User);
|
||||
|
||||
User getUserByAccount(User user);
|
||||
}
|
||||
114
src/main/java/com/lxq/model/object/CourseApplication.java
Normal file
@ -0,0 +1,114 @@
|
||||
package com.lxq.model.object;
|
||||
|
||||
|
||||
//课程申请
|
||||
public class CourseApplication {
|
||||
//唯一ID
|
||||
private String id;
|
||||
//学生ID
|
||||
private String userId;
|
||||
//教师ID
|
||||
private String teacherId;
|
||||
//课程ID
|
||||
private String curriculumId;
|
||||
//申请内容
|
||||
private String content;
|
||||
//申请状态
|
||||
private String state;
|
||||
//反馈备注
|
||||
private String remarks;
|
||||
//申请课程 时间
|
||||
private String time;
|
||||
|
||||
private User studentMessage;
|
||||
private User teacherMessage;
|
||||
private Curriculum curriculumMessage;
|
||||
|
||||
public Curriculum getCurriculumMessage() {
|
||||
return curriculumMessage;
|
||||
}
|
||||
|
||||
public void setCurriculumMessage(Curriculum curriculumMessage) {
|
||||
this.curriculumMessage = curriculumMessage;
|
||||
}
|
||||
|
||||
public User getStudentMessage() {
|
||||
return studentMessage;
|
||||
}
|
||||
|
||||
public void setStudentMessage(User studentMessage) {
|
||||
this.studentMessage = studentMessage;
|
||||
}
|
||||
|
||||
public User getTeacherMessage() {
|
||||
return teacherMessage;
|
||||
}
|
||||
|
||||
public void setTeacherMessage(User teacherMessage) {
|
||||
this.teacherMessage = teacherMessage;
|
||||
}
|
||||
|
||||
public String getTime() {
|
||||
return time;
|
||||
}
|
||||
|
||||
public void setTime(String time) {
|
||||
this.time = time;
|
||||
}
|
||||
|
||||
public String getTeacherId() {
|
||||
return teacherId;
|
||||
}
|
||||
|
||||
public void setTeacherId(String teacherId) {
|
||||
this.teacherId = teacherId;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(String userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public String getCurriculumId() {
|
||||
return curriculumId;
|
||||
}
|
||||
|
||||
public void setCurriculumId(String curriculumId) {
|
||||
this.curriculumId = curriculumId;
|
||||
}
|
||||
|
||||
public String getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
public void setContent(String content) {
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
public String getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void setState(String state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public String getRemarks() {
|
||||
return remarks;
|
||||
}
|
||||
|
||||
public void setRemarks(String remarks) {
|
||||
this.remarks = remarks;
|
||||
}
|
||||
}
|
||||
156
src/main/java/com/lxq/model/object/Curriculum.java
Normal file
@ -0,0 +1,156 @@
|
||||
package com.lxq.model.object;
|
||||
|
||||
|
||||
//课程
|
||||
public class Curriculum {
|
||||
//课程ID
|
||||
private Integer id;
|
||||
//课程名称
|
||||
private String curriculumName;
|
||||
//地点
|
||||
private String place;
|
||||
//课程简介
|
||||
private String introduce;
|
||||
//课程开始时间
|
||||
private String timeStart;
|
||||
private Integer timeStartNum;
|
||||
//课程结束时间
|
||||
private String timeEnd;
|
||||
private Integer timeEndNum;
|
||||
//课程时长
|
||||
private Integer timeLength;
|
||||
//课程限定总人数
|
||||
private Integer userNum;
|
||||
//课程加入人数
|
||||
private Integer joinUserNum;
|
||||
|
||||
//教师ID
|
||||
private String teacherId;
|
||||
//教师具体信息
|
||||
private User teacherMessage;
|
||||
|
||||
|
||||
|
||||
public String getCurriculumName() {
|
||||
return curriculumName;
|
||||
}
|
||||
|
||||
public void setCurriculumName(String curriculumName) {
|
||||
this.curriculumName = curriculumName;
|
||||
}
|
||||
|
||||
public String getPlace() {
|
||||
return place;
|
||||
}
|
||||
|
||||
public void setPlace(String place) {
|
||||
this.place = place;
|
||||
}
|
||||
|
||||
public String getIntroduce() {
|
||||
return introduce;
|
||||
}
|
||||
|
||||
public void setIntroduce(String introduce) {
|
||||
this.introduce = introduce;
|
||||
}
|
||||
|
||||
public String getTimeStart() {
|
||||
return timeStart;
|
||||
}
|
||||
|
||||
public void setTimeStart(String timeStart) {
|
||||
this.timeStart = timeStart;
|
||||
}
|
||||
|
||||
public Integer getTimeStartNum() {
|
||||
return timeStartNum;
|
||||
}
|
||||
|
||||
public void setTimeStartNum(Integer timeStartNum) {
|
||||
this.timeStartNum = timeStartNum;
|
||||
}
|
||||
|
||||
public String getTimeEnd() {
|
||||
return timeEnd;
|
||||
}
|
||||
|
||||
public void setTimeEnd(String timeEnd) {
|
||||
this.timeEnd = timeEnd;
|
||||
}
|
||||
|
||||
public Integer getTimeEndNum() {
|
||||
return timeEndNum;
|
||||
}
|
||||
|
||||
public void setTimeEndNum(Integer timeEndNum) {
|
||||
this.timeEndNum = timeEndNum;
|
||||
}
|
||||
|
||||
public Integer getTimeLength() {
|
||||
return timeLength;
|
||||
}
|
||||
|
||||
public void setTimeLength(Integer timeLength) {
|
||||
this.timeLength = timeLength;
|
||||
}
|
||||
|
||||
public Integer getUserNum() {
|
||||
return userNum;
|
||||
}
|
||||
|
||||
public void setUserNum(Integer userNum) {
|
||||
this.userNum = userNum;
|
||||
}
|
||||
|
||||
public Integer getJoinUserNum() {
|
||||
return joinUserNum;
|
||||
}
|
||||
|
||||
public void setJoinUserNum(Integer joinUserNum) {
|
||||
this.joinUserNum = joinUserNum;
|
||||
}
|
||||
|
||||
public String getTeacherId() {
|
||||
return teacherId;
|
||||
}
|
||||
|
||||
public void setTeacherId(String teacherId) {
|
||||
this.teacherId = teacherId;
|
||||
}
|
||||
|
||||
public User getTeacherMessage() {
|
||||
return teacherMessage;
|
||||
}
|
||||
|
||||
public void setTeacherMessage(User teacherMessage) {
|
||||
this.teacherMessage = teacherMessage;
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Curriculum{" +
|
||||
"id=" + id +
|
||||
", curriculumName='" + curriculumName + '\'' +
|
||||
", place='" + place + '\'' +
|
||||
", introduce='" + introduce + '\'' +
|
||||
", timeStart='" + timeStart + '\'' +
|
||||
", timeStartNum=" + timeStartNum +
|
||||
", timeEnd='" + timeEnd + '\'' +
|
||||
", timeEndNum=" + timeEndNum +
|
||||
", timeLength=" + timeLength +
|
||||
", userNum=" + userNum +
|
||||
", joinUserNum=" + joinUserNum +
|
||||
", teacherId='" + teacherId + '\'' +
|
||||
", teacherMessage=" + teacherMessage +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
142
src/main/java/com/lxq/model/object/LeaveApplication.java
Normal file
@ -0,0 +1,142 @@
|
||||
package com.lxq.model.object;
|
||||
|
||||
|
||||
//请假申请
|
||||
public class LeaveApplication {
|
||||
//唯一ID
|
||||
private String id;
|
||||
//学生ID
|
||||
private String userId;
|
||||
//教师ID
|
||||
private String teacherId;
|
||||
//课程ID
|
||||
private String curriculumId;
|
||||
//申请内容
|
||||
private String content;
|
||||
//申请状态
|
||||
private String state;
|
||||
//反馈备注
|
||||
private String remarks;
|
||||
//申请请假 时间
|
||||
private String time;
|
||||
|
||||
private String timeStart;
|
||||
private String timeEnd;
|
||||
private String timeLength;
|
||||
|
||||
private User studentMessage;
|
||||
private User teacherMessage;
|
||||
private Curriculum curriculumMessage;
|
||||
|
||||
public String getTimeLength() {
|
||||
return timeLength;
|
||||
}
|
||||
|
||||
public void setTimeLength(String timeLength) {
|
||||
this.timeLength = timeLength;
|
||||
}
|
||||
|
||||
public String getTimeStart() {
|
||||
return timeStart;
|
||||
}
|
||||
|
||||
public void setTimeStart(String timeStart) {
|
||||
this.timeStart = timeStart;
|
||||
}
|
||||
|
||||
public String getTimeEnd() {
|
||||
return timeEnd;
|
||||
}
|
||||
|
||||
public void setTimeEnd(String timeEnd) {
|
||||
this.timeEnd = timeEnd;
|
||||
}
|
||||
|
||||
public User getStudentMessage() {
|
||||
return studentMessage;
|
||||
}
|
||||
|
||||
public void setStudentMessage(User studentMessage) {
|
||||
this.studentMessage = studentMessage;
|
||||
}
|
||||
|
||||
public User getTeacherMessage() {
|
||||
return teacherMessage;
|
||||
}
|
||||
|
||||
public void setTeacherMessage(User teacherMessage) {
|
||||
this.teacherMessage = teacherMessage;
|
||||
}
|
||||
|
||||
public Curriculum getCurriculumMessage() {
|
||||
return curriculumMessage;
|
||||
}
|
||||
|
||||
public void setCurriculumMessage(Curriculum curriculumMessage) {
|
||||
this.curriculumMessage = curriculumMessage;
|
||||
}
|
||||
|
||||
public String getTime() {
|
||||
return time;
|
||||
}
|
||||
|
||||
public void setTime(String time) {
|
||||
this.time = time;
|
||||
}
|
||||
|
||||
public String getTeacherId() {
|
||||
return teacherId;
|
||||
}
|
||||
|
||||
public void setTeacherId(String teacherId) {
|
||||
this.teacherId = teacherId;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(String userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public String getCurriculumId() {
|
||||
return curriculumId;
|
||||
}
|
||||
|
||||
public void setCurriculumId(String curriculumId) {
|
||||
this.curriculumId = curriculumId;
|
||||
}
|
||||
|
||||
public String getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
public void setContent(String content) {
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
public String getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void setState(String state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public String getRemarks() {
|
||||
return remarks;
|
||||
}
|
||||
|
||||
public void setRemarks(String remarks) {
|
||||
this.remarks = remarks;
|
||||
}
|
||||
}
|
||||
77
src/main/java/com/lxq/model/object/Page.java
Normal file
@ -0,0 +1,77 @@
|
||||
package com.lxq.model.object;
|
||||
|
||||
public class Page {
|
||||
//每页条数
|
||||
private int ItemNum;
|
||||
//总页数
|
||||
private int pageCount;
|
||||
//当前页码
|
||||
private int displayPage;
|
||||
//下一页码
|
||||
private int nextPage;
|
||||
//上一页码
|
||||
private int prevPage;
|
||||
|
||||
|
||||
public Page() {
|
||||
}
|
||||
|
||||
public Page(int itemNum, int pageCount, int displayPage, int nextPage, int prevPage) {
|
||||
ItemNum = itemNum;
|
||||
this.pageCount = pageCount;
|
||||
this.displayPage = displayPage;
|
||||
this.nextPage = nextPage;
|
||||
this.prevPage = prevPage;
|
||||
}
|
||||
|
||||
public int getItemNum() {
|
||||
return ItemNum;
|
||||
}
|
||||
|
||||
public void setItemNum(int itemNum) {
|
||||
ItemNum = itemNum;
|
||||
}
|
||||
|
||||
public int getPageCount() {
|
||||
return pageCount;
|
||||
}
|
||||
|
||||
public void setPageCount(int pageCount) {
|
||||
this.pageCount = pageCount;
|
||||
}
|
||||
|
||||
public int getDisplayPage() {
|
||||
return displayPage;
|
||||
}
|
||||
|
||||
public void setDisplayPage(int displayPage) {
|
||||
this.displayPage = displayPage;
|
||||
}
|
||||
|
||||
public int getNextPage() {
|
||||
return nextPage;
|
||||
}
|
||||
|
||||
public void setNextPage(int nextPage) {
|
||||
this.nextPage = nextPage;
|
||||
}
|
||||
|
||||
public int getPrevPage() {
|
||||
return prevPage;
|
||||
}
|
||||
|
||||
public void setPrevPage(int prevPage) {
|
||||
this.prevPage = prevPage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Page{" +
|
||||
"ItemNum=" + ItemNum +
|
||||
", pageCount=" + pageCount +
|
||||
", displayPage=" + displayPage +
|
||||
", nextPage=" + nextPage +
|
||||
", prevPage=" + prevPage +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
142
src/main/java/com/lxq/model/object/Record.java
Normal file
@ -0,0 +1,142 @@
|
||||
package com.lxq.model.object;
|
||||
|
||||
|
||||
//考勤
|
||||
public class Record {
|
||||
//唯一ID
|
||||
private String id;
|
||||
//学生ID
|
||||
private String userId;
|
||||
//教师ID
|
||||
private String teacherId;
|
||||
//课程ID
|
||||
private String curriculumId;
|
||||
//申请内容
|
||||
private String content;
|
||||
//申请状态
|
||||
private String state;
|
||||
//反馈备注
|
||||
private String remarks;
|
||||
//考勤日期
|
||||
private String time;
|
||||
|
||||
private Integer timeNum;
|
||||
private Integer timeNumMax;
|
||||
private Integer timeNumMin;
|
||||
|
||||
private User studentMessage;
|
||||
private User teacherMessage;
|
||||
private Curriculum curriculumMessage;
|
||||
|
||||
public Integer getTimeNumMax() {
|
||||
return timeNumMax;
|
||||
}
|
||||
|
||||
public void setTimeNumMax(Integer timeNumMax) {
|
||||
this.timeNumMax = timeNumMax;
|
||||
}
|
||||
|
||||
public Integer getTimeNumMin() {
|
||||
return timeNumMin;
|
||||
}
|
||||
|
||||
public void setTimeNumMin(Integer timeNumMin) {
|
||||
this.timeNumMin = timeNumMin;
|
||||
}
|
||||
|
||||
public Integer getTimeNum() {
|
||||
return timeNum;
|
||||
}
|
||||
|
||||
public void setTimeNum(Integer timeNum) {
|
||||
this.timeNum = timeNum;
|
||||
}
|
||||
|
||||
public User getStudentMessage() {
|
||||
return studentMessage;
|
||||
}
|
||||
|
||||
public void setStudentMessage(User studentMessage) {
|
||||
this.studentMessage = studentMessage;
|
||||
}
|
||||
|
||||
public User getTeacherMessage() {
|
||||
return teacherMessage;
|
||||
}
|
||||
|
||||
public void setTeacherMessage(User teacherMessage) {
|
||||
this.teacherMessage = teacherMessage;
|
||||
}
|
||||
|
||||
public Curriculum getCurriculumMessage() {
|
||||
return curriculumMessage;
|
||||
}
|
||||
|
||||
public void setCurriculumMessage(Curriculum curriculumMessage) {
|
||||
this.curriculumMessage = curriculumMessage;
|
||||
}
|
||||
|
||||
public String getTime() {
|
||||
return time;
|
||||
}
|
||||
|
||||
public void setTime(String time) {
|
||||
this.time = time;
|
||||
}
|
||||
|
||||
public String getTeacherId() {
|
||||
return teacherId;
|
||||
}
|
||||
|
||||
public void setTeacherId(String teacherId) {
|
||||
this.teacherId = teacherId;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(String userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public String getCurriculumId() {
|
||||
return curriculumId;
|
||||
}
|
||||
|
||||
public void setCurriculumId(String curriculumId) {
|
||||
this.curriculumId = curriculumId;
|
||||
}
|
||||
|
||||
public String getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
public void setContent(String content) {
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
public String getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void setState(String state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public String getRemarks() {
|
||||
return remarks;
|
||||
}
|
||||
|
||||
public void setRemarks(String remarks) {
|
||||
this.remarks = remarks;
|
||||
}
|
||||
}
|
||||
88
src/main/java/com/lxq/model/object/User.java
Normal file
@ -0,0 +1,88 @@
|
||||
package com.lxq.model.object;
|
||||
|
||||
//用户
|
||||
public class User {
|
||||
//用户id
|
||||
private String userId;
|
||||
//用户账号
|
||||
private String userAccount;
|
||||
//用户昵称
|
||||
private String userName;
|
||||
//用户密码
|
||||
private String userPw;
|
||||
//用户级别
|
||||
private String userLv;
|
||||
//用户性别
|
||||
private String userSex;
|
||||
//用户手机
|
||||
private String userIphone;
|
||||
|
||||
public String getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(String userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public String getUserAccount() {
|
||||
return userAccount;
|
||||
}
|
||||
|
||||
public void setUserAccount(String userAccount) {
|
||||
this.userAccount = userAccount;
|
||||
}
|
||||
|
||||
public String getUserName() {
|
||||
return userName;
|
||||
}
|
||||
|
||||
public void setUserName(String userName) {
|
||||
this.userName = userName;
|
||||
}
|
||||
|
||||
public String getUserPw() {
|
||||
return userPw;
|
||||
}
|
||||
|
||||
public void setUserPw(String userPw) {
|
||||
this.userPw = userPw;
|
||||
}
|
||||
|
||||
public String getUserLv() {
|
||||
return userLv;
|
||||
}
|
||||
|
||||
public void setUserLv(String userLv) {
|
||||
this.userLv = userLv;
|
||||
}
|
||||
|
||||
public String getUserSex() {
|
||||
return userSex;
|
||||
}
|
||||
|
||||
public void setUserSex(String userSex) {
|
||||
this.userSex = userSex;
|
||||
}
|
||||
|
||||
public String getUserIphone() {
|
||||
return userIphone;
|
||||
}
|
||||
|
||||
public void setUserIphone(String userIphone) {
|
||||
this.userIphone = userIphone;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "User{" +
|
||||
"userId='" + userId + '\'' +
|
||||
", userAccount='" + userAccount + '\'' +
|
||||
", userName='" + userName + '\'' +
|
||||
", userPw='" + userPw + '\'' +
|
||||
", userLv='" + userLv + '\'' +
|
||||
", userSex='" + userSex + '\'' +
|
||||
", userIphone='" + userIphone + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,213 @@
|
||||
package com.lxq.model.service;
|
||||
|
||||
import com.lxq.Tools.TimeTools;
|
||||
import com.lxq.model.dao.CourseApplicationDAO;
|
||||
import com.lxq.model.object.CourseApplication;
|
||||
import com.lxq.model.object.Curriculum;
|
||||
import com.lxq.model.object.Record;
|
||||
import com.lxq.model.object.User;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class CourseApplicationService {
|
||||
@Autowired
|
||||
private CourseApplicationDAO CourseApplicationDAO;
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
@Autowired
|
||||
private CurriculumService curriculumService;
|
||||
@Autowired
|
||||
private TimeTools timeTools;
|
||||
@Autowired
|
||||
private RecordService recordService;
|
||||
|
||||
|
||||
//查询课程申请全部信息
|
||||
public List<CourseApplication> getAllCourseApplication(CourseApplication CourseApplication){
|
||||
List<CourseApplication> allCourseApplication = new ArrayList<>();
|
||||
try{
|
||||
List<CourseApplication> allCourseApplicationSearch = CourseApplicationDAO.getAllCourseApplication(CourseApplication);
|
||||
for (CourseApplication courseApplication: allCourseApplicationSearch) {
|
||||
//找学生信息
|
||||
User student = new User();
|
||||
student.setUserId(courseApplication.getUserId());
|
||||
User userStudent = userService.getUser(student);
|
||||
//找老师信息
|
||||
User teacher = new User();
|
||||
teacher.setUserId(courseApplication.getTeacherId());
|
||||
User userTeacher = userService.getUser(teacher);
|
||||
//找课程信息
|
||||
Curriculum curriculum = new Curriculum();
|
||||
curriculum.setId(Integer.parseInt(courseApplication.getCurriculumId()));
|
||||
Curriculum curriculumSearch = curriculumService.getCurriculum(curriculum);
|
||||
|
||||
//学生信息
|
||||
courseApplication.setStudentMessage(userStudent);
|
||||
//老师信息
|
||||
courseApplication.setTeacherMessage(userTeacher);
|
||||
//课程信息
|
||||
courseApplication.setCurriculumMessage(curriculumSearch);
|
||||
|
||||
allCourseApplication.add(courseApplication);
|
||||
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return allCourseApplication;
|
||||
}
|
||||
|
||||
//查询课程申请全部信息
|
||||
public List<CourseApplication> getAllCourseApplicationWithoutDelete(CourseApplication CourseApplication){
|
||||
List<CourseApplication> allCourseApplication = new ArrayList<>();
|
||||
try{
|
||||
List<CourseApplication> allCourseApplicationSearch = CourseApplicationDAO.getAllCourseApplication(CourseApplication);
|
||||
for (CourseApplication courseApplication: allCourseApplicationSearch) {
|
||||
//找学生信息
|
||||
User student = new User();
|
||||
student.setUserId(courseApplication.getUserId());
|
||||
User userStudent = userService.getUser(student);
|
||||
//找老师信息
|
||||
User teacher = new User();
|
||||
teacher.setUserId(courseApplication.getTeacherId());
|
||||
User userTeacher = userService.getUser(teacher);
|
||||
//找课程信息
|
||||
Curriculum curriculum = new Curriculum();
|
||||
curriculum.setId(Integer.parseInt(courseApplication.getCurriculumId()));
|
||||
Curriculum curriculumSearch = curriculumService.getCurriculum(curriculum);
|
||||
|
||||
//学生信息
|
||||
courseApplication.setStudentMessage(userStudent);
|
||||
//老师信息
|
||||
courseApplication.setTeacherMessage(userTeacher);
|
||||
//课程信息
|
||||
courseApplication.setCurriculumMessage(curriculumSearch);
|
||||
//如果课程没有被删除
|
||||
if (curriculumSearch != null){
|
||||
allCourseApplication.add(courseApplication);
|
||||
}
|
||||
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return allCourseApplication;
|
||||
}
|
||||
|
||||
//查询课程申请信息
|
||||
public CourseApplication getCourseApplication(CourseApplication CourseApplication){
|
||||
CourseApplication CourseApplicationSearch = null;
|
||||
try{
|
||||
CourseApplicationSearch = CourseApplicationDAO.getCourseApplication(CourseApplication);
|
||||
|
||||
User student = new User();
|
||||
student.setUserId(CourseApplicationSearch.getUserId());
|
||||
User userStudent = userService.getUser(student);
|
||||
|
||||
User teacher = new User();
|
||||
teacher.setUserId(CourseApplicationSearch.getTeacherId());
|
||||
User userTeacher = userService.getUser(teacher);
|
||||
|
||||
Curriculum curriculum = new Curriculum();
|
||||
curriculum.setId(Integer.parseInt(CourseApplicationSearch.getCurriculumId()));
|
||||
Curriculum curriculumSearch = curriculumService.getCurriculum(curriculum);
|
||||
|
||||
//学生信息
|
||||
CourseApplicationSearch.setStudentMessage(userStudent);
|
||||
//老师信息
|
||||
CourseApplicationSearch.setTeacherMessage(userTeacher);
|
||||
//课程信息
|
||||
CourseApplicationSearch.setCurriculumMessage(curriculumSearch);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return CourseApplicationSearch;
|
||||
}
|
||||
|
||||
//通过主键查找课程申请,主要用于验证是否存在相同课程申请
|
||||
public CourseApplication getCourseApplicationbyPrimary(CourseApplication CourseApplication) {
|
||||
CourseApplication CourseApplicationSearch = null;
|
||||
try {
|
||||
CourseApplicationSearch = CourseApplicationDAO.getCourseApplicationbyPrimary(CourseApplication);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return CourseApplicationSearch;
|
||||
}
|
||||
|
||||
//增加课程申请信息
|
||||
public String addCourseApplication(CourseApplication CourseApplication){
|
||||
String isSuccess = "false";
|
||||
try{
|
||||
int resultNum = CourseApplicationDAO.addCourseApplication(CourseApplication);
|
||||
if(resultNum>0){
|
||||
isSuccess = "true";
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
return isSuccess;
|
||||
}
|
||||
//删除课程申请信息
|
||||
public String delCourseApplication(CourseApplication CourseApplication){
|
||||
String isSuccess = "false";
|
||||
try{
|
||||
int resultNum = CourseApplicationDAO.delCourseApplication(CourseApplication);
|
||||
if(resultNum>0){
|
||||
isSuccess = "true";
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return isSuccess;
|
||||
}
|
||||
|
||||
//修改课程申请信息
|
||||
public String updateCourseApplication(CourseApplication CourseApplication){
|
||||
String isSuccess = "false";
|
||||
try{
|
||||
|
||||
if("同意".equals(CourseApplication.getState())){
|
||||
//通过课程申请id查找课程申请信息
|
||||
CourseApplication courseApplicationparam = new CourseApplication();
|
||||
courseApplicationparam.setId(CourseApplication.getId());
|
||||
CourseApplication courseApplicationSearch = CourseApplicationDAO.getCourseApplication(courseApplicationparam);
|
||||
|
||||
//通过课程id查找课程信息
|
||||
Curriculum curriculum = new Curriculum();
|
||||
curriculum.setId(Integer.parseInt(courseApplicationSearch.getCurriculumId()));
|
||||
Curriculum curriculumSearch = curriculumService.getCurriculum(curriculum);
|
||||
|
||||
//添加考勤数据
|
||||
List<String> timeArr = timeTools.getTimeArr(curriculumSearch.getTimeStart(), curriculumSearch.getTimeLength());
|
||||
for (String time: timeArr) {
|
||||
Record record = new Record();
|
||||
record.setUserId(courseApplicationSearch.getUserId());
|
||||
record.setTeacherId(courseApplicationSearch.getTeacherId());
|
||||
record.setCurriculumId(courseApplicationSearch.getCurriculumId());
|
||||
record.setState("待打卡");
|
||||
record.setTime(time);
|
||||
record.setTimeNum(Integer.parseInt(time.replaceAll("-","")));
|
||||
recordService.addRecord(record);
|
||||
}
|
||||
|
||||
//更新课程人数
|
||||
curriculumSearch.setJoinUserNum( curriculumSearch.getJoinUserNum()+1);
|
||||
curriculumService.updateCurriculum(curriculumSearch);
|
||||
}
|
||||
|
||||
int resultNum = CourseApplicationDAO.updateCourseApplication(CourseApplication);
|
||||
if (resultNum>0){
|
||||
isSuccess = "true";
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return isSuccess;
|
||||
}
|
||||
}
|
||||
128
src/main/java/com/lxq/model/service/CurriculumService.java
Normal file
@ -0,0 +1,128 @@
|
||||
package com.lxq.model.service;
|
||||
|
||||
import com.lxq.model.dao.CurriculumDAO;
|
||||
import com.lxq.model.object.Curriculum;
|
||||
import com.lxq.model.object.User;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class CurriculumService {
|
||||
@Autowired
|
||||
private CurriculumDAO CurriculumDAO;
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
|
||||
//查询课程全部信息
|
||||
public List<Curriculum> getAllCurriculum(Curriculum Curriculum){
|
||||
List<Curriculum> allCurriculum = new ArrayList<>();
|
||||
try{
|
||||
List<Curriculum> allCurriculumSearch = CurriculumDAO.getAllCurriculum(Curriculum);
|
||||
//映射教师信息
|
||||
if(null!= allCurriculumSearch){
|
||||
Map<String,User> teacherMap = new HashMap<>();
|
||||
//取出所有"教师"用户
|
||||
User user = new User();
|
||||
user.setUserLv("1");
|
||||
List<User> teacherList = userService.getAllUser(user);
|
||||
|
||||
for (User teacher:teacherList) {
|
||||
teacherMap.put(teacher.getUserId(),teacher);
|
||||
}
|
||||
for (Curriculum curriculum:allCurriculumSearch) {
|
||||
curriculum.setTeacherMessage(teacherMap.get(curriculum.getTeacherId()));
|
||||
allCurriculum.add(curriculum);
|
||||
}
|
||||
|
||||
//数据库操作过于频繁
|
||||
// for (Curriculum curriculum: allCurriculumSearch) {
|
||||
// User user = new User();
|
||||
// user.setUserId(curriculum.getTeacherId());
|
||||
// User userSearch = userService.getUser(user);
|
||||
// curriculum.setTeacherMessage(userSearch);
|
||||
// allCurriculum.add(curriculum);
|
||||
// }
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return allCurriculum;
|
||||
}
|
||||
//查询课程信息
|
||||
public Curriculum getCurriculum(Curriculum Curriculum){
|
||||
Curriculum CurriculumSearch = null;
|
||||
try{
|
||||
CurriculumSearch = CurriculumDAO.getCurriculum(Curriculum);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return CurriculumSearch;
|
||||
}
|
||||
//通过主键查找课程,主要用于验证是否存在相同课程
|
||||
public Curriculum getCurriculumbyPrimary(Curriculum Curriculum) {
|
||||
Curriculum curriculumSearch = null;
|
||||
try {
|
||||
curriculumSearch = CurriculumDAO.getCurriculumbyPrimary(Curriculum);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return curriculumSearch;
|
||||
}
|
||||
//增加课程信息
|
||||
public String addCurriculum(Curriculum Curriculum){
|
||||
String isSuccess = "false";
|
||||
try{
|
||||
//将时间转换成Int
|
||||
String timeEnd = Curriculum.getTimeEnd();
|
||||
String timeStart = Curriculum.getTimeStart();
|
||||
Curriculum.setTimeEndNum(Integer.parseInt(timeEnd.replace("-","")));
|
||||
Curriculum.setTimeStartNum(Integer.parseInt(timeStart.replace("-","")));
|
||||
int resultNum = CurriculumDAO.addCurriculum(Curriculum);
|
||||
if(resultNum>0){
|
||||
isSuccess = "true";
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return isSuccess;
|
||||
}
|
||||
//删除课程信息
|
||||
public String delCurriculum(Curriculum Curriculum){
|
||||
String isSuccess = "false";
|
||||
try{
|
||||
int resultNum = CurriculumDAO.delCurriculum(Curriculum);
|
||||
if(resultNum>0){
|
||||
isSuccess = "true";
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return isSuccess;
|
||||
}
|
||||
//修改课程信息
|
||||
public String updateCurriculum(Curriculum Curriculum){
|
||||
String isSuccess = "false";
|
||||
try{
|
||||
//将时间转换成Int
|
||||
String timeEnd = Curriculum.getTimeEnd();
|
||||
String timeStart = Curriculum.getTimeStart();
|
||||
Curriculum.setTimeEndNum(Integer.parseInt(timeEnd.replace("-","")));
|
||||
Curriculum.setTimeStartNum(Integer.parseInt(timeStart.replace("-","")));
|
||||
|
||||
int resultNum = CurriculumDAO.updateCurriculum(Curriculum);
|
||||
if(resultNum>0){
|
||||
isSuccess = "true";
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
return isSuccess;
|
||||
}
|
||||
|
||||
}
|
||||
148
src/main/java/com/lxq/model/service/LeaveApplicationService.java
Normal file
@ -0,0 +1,148 @@
|
||||
package com.lxq.model.service;
|
||||
|
||||
import com.lxq.Tools.TimeTools;
|
||||
import com.lxq.model.dao.LeaveApplicationDAO;
|
||||
import com.lxq.model.object.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class LeaveApplicationService {
|
||||
@Autowired
|
||||
private LeaveApplicationDAO LeaveApplicationDAO;
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
@Autowired
|
||||
private CurriculumService curriculumService;
|
||||
@Autowired
|
||||
private TimeTools timeTools;
|
||||
@Autowired
|
||||
private RecordService recordService;
|
||||
|
||||
|
||||
//查询考勤申请全部信息
|
||||
public List<LeaveApplication> getAllLeaveApplication(LeaveApplication leaveApplication){
|
||||
List<LeaveApplication> allLeaveApplication = new ArrayList<>();
|
||||
try{
|
||||
|
||||
|
||||
List<LeaveApplication> allLeaveApplicationSearch = LeaveApplicationDAO.getAllLeaveApplication(leaveApplication);
|
||||
for (LeaveApplication LeaveApplication: allLeaveApplicationSearch) {
|
||||
|
||||
User student = new User();
|
||||
student.setUserId(LeaveApplication.getUserId());
|
||||
User userStudent = userService.getUser(student);
|
||||
|
||||
User teacher = new User();
|
||||
teacher.setUserId(LeaveApplication.getTeacherId());
|
||||
User userTeacher = userService.getUser(teacher);
|
||||
|
||||
Curriculum curriculum = new Curriculum();
|
||||
curriculum.setId(Integer.parseInt(LeaveApplication.getCurriculumId()));
|
||||
Curriculum curriculumSearch = curriculumService.getCurriculum(curriculum);
|
||||
|
||||
//学生信息
|
||||
LeaveApplication.setStudentMessage(userStudent);
|
||||
//老师信息
|
||||
LeaveApplication.setTeacherMessage(userTeacher);
|
||||
//课程信息
|
||||
LeaveApplication.setCurriculumMessage(curriculumSearch);
|
||||
|
||||
allLeaveApplication.add(LeaveApplication);
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return allLeaveApplication;
|
||||
}
|
||||
//查询考勤申请信息
|
||||
public LeaveApplication getLeaveApplication(LeaveApplication leaveApplication){
|
||||
LeaveApplication LeaveApplicationSearch = null;
|
||||
try{
|
||||
LeaveApplicationSearch = LeaveApplicationDAO.getLeaveApplication(leaveApplication);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return LeaveApplicationSearch;
|
||||
}
|
||||
|
||||
//通过主键查找请假申请,主要用于验证是否存在相同请假申请
|
||||
public LeaveApplication getLeaveApplicationbyPrimary(LeaveApplication leaveApplication) {
|
||||
LeaveApplication LeaveApplicationSearch = null;
|
||||
try {
|
||||
LeaveApplicationSearch = LeaveApplicationDAO.getLeaveApplicationbyPrimary(leaveApplication);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return LeaveApplicationSearch;
|
||||
}
|
||||
|
||||
//增加考勤申请信息
|
||||
public String addLeaveApplication(LeaveApplication leaveApplication){
|
||||
String isSuccess = "false";
|
||||
try{
|
||||
leaveApplication.setState("申请");
|
||||
int resultNum = LeaveApplicationDAO.addLeaveApplication(leaveApplication);
|
||||
if(resultNum>0){
|
||||
isSuccess = "true";
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
return isSuccess;
|
||||
}
|
||||
//删除考勤申请信息
|
||||
public String delLeaveApplication(LeaveApplication leaveApplication){
|
||||
String isSuccess = "false";
|
||||
try{
|
||||
int resultNum = LeaveApplicationDAO.delLeaveApplication(leaveApplication);
|
||||
if(resultNum>0){
|
||||
isSuccess = "true";
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return isSuccess;
|
||||
}
|
||||
|
||||
//修改考勤申请信息
|
||||
public String updateLeaveApplication(LeaveApplication leaveApplication){
|
||||
String isSuccess = "false";
|
||||
try{
|
||||
//请假同意后,调整考勤数据
|
||||
if("同意".equals(leaveApplication.getState())){
|
||||
//通过请假id查找请假信息
|
||||
LeaveApplication leaveApplicationParam = new LeaveApplication();
|
||||
leaveApplicationParam.setId(leaveApplication.getId());
|
||||
LeaveApplication leaveApplicationSearch = LeaveApplicationDAO.getLeaveApplication(leaveApplicationParam);
|
||||
|
||||
//设置请假时间段内的考勤状态为请假
|
||||
List<String> timeArr = timeTools.getTimeArr(leaveApplicationSearch.getTimeStart(), Integer.parseInt(leaveApplicationSearch.getTimeLength()));
|
||||
for (String time: timeArr) {
|
||||
Record record = new Record();
|
||||
record.setUserId(leaveApplicationSearch.getUserId());
|
||||
record.setTeacherId(leaveApplicationSearch.getTeacherId());
|
||||
record.setCurriculumId(leaveApplicationSearch.getCurriculumId());
|
||||
record.setTime(time);
|
||||
Record recordSearch = recordService.getRecord(record);
|
||||
recordSearch.setState("请假");
|
||||
String s = recordService.updateRecord(recordSearch);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
int resultNum = LeaveApplicationDAO.updateLeaveApplication(leaveApplication);
|
||||
if (resultNum>0){
|
||||
isSuccess = "true";
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
return isSuccess;
|
||||
}
|
||||
}
|
||||
142
src/main/java/com/lxq/model/service/RecordService.java
Normal file
@ -0,0 +1,142 @@
|
||||
package com.lxq.model.service;
|
||||
|
||||
import com.lxq.Tools.TimeTools;
|
||||
import com.lxq.model.dao.RecordDAO;
|
||||
import com.lxq.model.object.*;
|
||||
import com.lxq.model.object.Record;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class RecordService {
|
||||
@Autowired
|
||||
private RecordDAO RecordDAO;
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
@Autowired
|
||||
private CurriculumService curriculumService;
|
||||
@Autowired
|
||||
private TimeTools timeTools;
|
||||
@Autowired
|
||||
private RecordService recordService;
|
||||
|
||||
|
||||
//查询全部考勤信息
|
||||
public List<Record> getAllRecord(Record Record){
|
||||
List<Record> allRecord = new ArrayList<>();
|
||||
try{
|
||||
List<Record> allRecordSearch = RecordDAO.getAllRecord(Record);
|
||||
for (Record recordSearch: allRecordSearch) {
|
||||
//找学生
|
||||
User student = new User();
|
||||
student.setUserId(recordSearch.getUserId());
|
||||
User userStudent = userService.getUser(student);
|
||||
//找老师
|
||||
User teacher = new User();
|
||||
teacher.setUserId(recordSearch.getTeacherId());
|
||||
User userTeacher = userService.getUser(teacher);
|
||||
//找课程
|
||||
Curriculum curriculum = new Curriculum();
|
||||
curriculum.setId(Integer.parseInt(recordSearch.getCurriculumId()));
|
||||
Curriculum curriculumSearch = curriculumService.getCurriculum(curriculum);
|
||||
|
||||
//学生信息
|
||||
recordSearch.setStudentMessage(userStudent);
|
||||
//老师信息
|
||||
recordSearch.setTeacherMessage(userTeacher);
|
||||
//课程信息
|
||||
recordSearch.setCurriculumMessage(curriculumSearch);
|
||||
allRecord.add(recordSearch);
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return allRecord;
|
||||
}
|
||||
//查询考勤信息
|
||||
public Record getRecord(Record Record){
|
||||
Record RecordSearch = null;
|
||||
try{
|
||||
RecordSearch = RecordDAO.getRecord(Record);
|
||||
|
||||
User student = new User();
|
||||
student.setUserId(RecordSearch.getUserId());
|
||||
User userStudent = userService.getUser(student);
|
||||
|
||||
User teacher = new User();
|
||||
teacher.setUserId(RecordSearch.getTeacherId());
|
||||
User userTeacher = userService.getUser(teacher);
|
||||
|
||||
Curriculum curriculum = new Curriculum();
|
||||
curriculum.setId(Integer.parseInt(RecordSearch.getCurriculumId()));
|
||||
Curriculum curriculumSearch = curriculumService.getCurriculum(curriculum);
|
||||
|
||||
//学生信息
|
||||
RecordSearch.setStudentMessage(userStudent);
|
||||
//老师信息
|
||||
RecordSearch.setTeacherMessage(userTeacher);
|
||||
//课程信息
|
||||
RecordSearch.setCurriculumMessage(curriculumSearch);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return RecordSearch;
|
||||
}
|
||||
|
||||
//通过主键查找考勤,主要用于验证是否存在相同考勤
|
||||
public Record getRecordbyPrimary(Record Record) {
|
||||
Record RecordSearch = null;
|
||||
try {
|
||||
RecordSearch = RecordDAO.getRecordbyPrimary(Record);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return RecordSearch;
|
||||
}
|
||||
|
||||
//增加考勤信息
|
||||
public String addRecord(Record Record){
|
||||
String isSuccess = "false";
|
||||
try{
|
||||
int resultNum = RecordDAO.addRecord(Record);
|
||||
if(resultNum>0){
|
||||
isSuccess = "true";
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
return isSuccess;
|
||||
}
|
||||
//删除考勤信息
|
||||
public String delRecord(Record Record){
|
||||
String isSuccess = "false";
|
||||
try{
|
||||
int resultNum = RecordDAO.delRecord(Record);
|
||||
if(resultNum>0){
|
||||
isSuccess = "true";
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return isSuccess;
|
||||
}
|
||||
|
||||
//修改考勤信息
|
||||
public String updateRecord(Record Record){
|
||||
String isSuccess = "false";
|
||||
try{
|
||||
int resultNum = RecordDAO.updateRecord(Record);
|
||||
if(resultNum>0){
|
||||
isSuccess = "true";
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
return isSuccess;
|
||||
}
|
||||
}
|
||||
88
src/main/java/com/lxq/model/service/UserService.java
Normal file
@ -0,0 +1,88 @@
|
||||
package com.lxq.model.service;
|
||||
|
||||
import com.lxq.model.dao.UserDAO;
|
||||
import com.lxq.model.object.User;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class UserService {
|
||||
@Autowired
|
||||
private UserDAO userDAO;
|
||||
|
||||
//查询全部用户信息
|
||||
public List<User> getAllUser(User user){
|
||||
List<User> allUser = new ArrayList<>();
|
||||
try{
|
||||
allUser = userDAO.getAllUser(user);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return allUser;
|
||||
}
|
||||
//查询用户信息
|
||||
public User getUser(User user){
|
||||
User userSearch = null;
|
||||
try{
|
||||
userSearch = userDAO.getUser(user);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return userSearch;
|
||||
}
|
||||
|
||||
//增加用户信息
|
||||
public String addUser(User user){
|
||||
String isSuccess = "false";
|
||||
try{
|
||||
int resultNum = userDAO.addUser(user);
|
||||
if(resultNum>0){
|
||||
isSuccess = "true";
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return isSuccess;
|
||||
}
|
||||
//删除用户信息
|
||||
public String delUser(User user){
|
||||
String isSuccess = "false";
|
||||
try{
|
||||
int resultNum = userDAO.delUser(user);
|
||||
if(resultNum>0){
|
||||
isSuccess = "true";
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return isSuccess;
|
||||
}
|
||||
//修改用户信息
|
||||
public String updateUser(User user){
|
||||
String isSuccess = "false";
|
||||
try{
|
||||
int resultNum = userDAO.updateUser(user);
|
||||
if(resultNum>0){
|
||||
isSuccess = "true";
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
return "error";
|
||||
}
|
||||
return isSuccess;
|
||||
}
|
||||
|
||||
//通过Account查询用户信息
|
||||
public User getUserByAccount(User user) {
|
||||
User userSearch = null;
|
||||
try {
|
||||
userSearch = userDAO.getUserByAccount(user);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return userSearch;
|
||||
}
|
||||
}
|
||||
25
src/main/resources/application.yml
Normal file
@ -0,0 +1,25 @@
|
||||
spring:
|
||||
datasource:
|
||||
url: jdbc:mysql://localhost:3306/student-attendance-system?useUnicode=true&characterEncoding=utf-8
|
||||
username: root
|
||||
password: 123456
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
thymeleaf:
|
||||
prefix: classpath:/templates/
|
||||
suffix: .html
|
||||
mode: LEGACYHTML5
|
||||
encoding: UTF-8
|
||||
cache: false
|
||||
servlet:
|
||||
content-type: text/html
|
||||
mybatis:
|
||||
#配置mapping所在的路径
|
||||
mapper-locations: classpath:/mapper/*.xml
|
||||
#配置映射类所在的路径
|
||||
type-aliases-package: com.lxq.model.object
|
||||
|
||||
configuration:
|
||||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||
#项目启动端口
|
||||
server:
|
||||
port: 8080
|
||||
40
src/main/resources/banner.txt
Normal file
@ -0,0 +1,40 @@
|
||||
@###@#@#@@@@@@#52222222292X5&9X2X5X2X2X2X2259:s2X3hX22X222X23SXs,S323Gr,,;A#XrriX22i33h259
|
||||
@#M#####@@@ASSsSS2SSi5S5rs55rr;5iSSSiSs2i5S55is25s,s5SSSS5S2S:r5i5SSS@Br. iBi:;s5ii2255ih
|
||||
@#@###@@@#2r5525srXXX222is9XX25XX2X222;:X222r:rX35;;552222X;i92X32;i2X@@Mr rH2rSsir;;;::i
|
||||
@@MBH#MAXsiXrs2XS2iS2X2X2;;iX9;sXX222XX22223252X23X33rrX222s;32X23i55Si&@@@#&#A2riSSs5ss;s
|
||||
@####XsB9:rXsr2XXX5rr2GhGXX2GhG2&9hG&hGXX2XXXirSX5XSXXX2X2X55XX2X;,SX55siM@@@@#BHX5SX5222i
|
||||
@@##@9ss;;rhX9X9XG93SSiis;;;:::;,:;s;r52iXGA33ir;s2X5iS32X2S,:i325r52252i5s.,. ;2AB@#M###M
|
||||
@@@#MSSiiiX3h2XXs;;:;::,,,:,,,,.... .,:,;r2XA&&hhX3i;r3XX2XiSXs;2X2222299; ., ..,::r5S9G
|
||||
@@@@#Xi2GX2s;:::,,::::::::::,,,,.,.,,,.......,:;ss2XXA2;;sSX2X2XS22X225252h9 ::;;:.. .::,r
|
||||
@@@@Ms2hX;r;;;;:;:::::;;;::,,,,,:,,,,,,,:,:,:,,.,,,,:;S5XX33X525222222352532,rs;;::,::rirs
|
||||
@@@@9r@A:i;;;;:;;;;;::::::,,,,,,,,...,,,,:,::;:;:::,,::;rsi5532X2X2Xr;S2222X;,::::::,::;;r
|
||||
@@@@X:#r;ir:;;;;;:;::::::,,,,,,.... ....,,::::;:;:::::::;;;;riii22525ri22SXXXr:::,::::;;;r
|
||||
@@@@#A#rrs;;::::::,:,,:;:,,:,..........,,:,::;:::::;::,::::;rsiis5i5SX55i5iX25s::r;si5i5i5
|
||||
@@@@@@@s;;;,,,,,::,,:,::::::;:;rSSi;;;:,,,,,:::::::,:,,,,,:.;s2522533X&AMHM#S ;5h9HAAAB&h9
|
||||
@@@@@@@r;5XhXhSr;r:::::::;;;rrrs;;:,.,...,,..,::,... ..,:srr9@#@@@@@@#5sX9r. rX&AA3G92i3
|
||||
@@@@@@h,rsri5iS5X2Srrr;::,;;siiS5r;:::;::;sr;,. ,:;;2XAM#@@@@9B#M#HG3i: .;ssS25;..:,:,;;ri
|
||||
@@@@@#rr5ir::;r;;X9ir;,,:S9MBHhX5hG95X&A&&A@@@@@@@@@@@@@@@3r;;:,,rrr:. ;&G: :ihs:,::;;;;S
|
||||
@@hiHSsHrrr;r;r;rrSBH3A@@3:;rri5#@@@@A2S&92;:A@X,;iGMMAi;,,.,,,,;si22;;9r ..,,;:::;;r;;r
|
||||
@2 3#B:,h###A#&GH2 X@5SA@i :rsii535Ssrrr: 2@: ABH5r..,::;:::;;rs33G2M@@&i,.,::::;;rrr;s
|
||||
@M SAArs;;rr5S2S;,2#2s,;#G r:,,::;;;;:,:, A@r2hr,..,::,:::;r;r;rr;sBS:.;ii,,,,;;:;riiiS
|
||||
@@@, :s:;;;r;;,:; ,@A:. sBs .::;::,,,, . i@G.,. .,::::::;;;;;;r;;: :;.. .;;:,:;;;:rrrri
|
||||
##@@; ::::::;,,;#@5.,... ,sir:r;;;;;r252&AMs ,,::;:;;rrsrr;;;;:;;;. .,,,. ,5r;;;;;;:5
|
||||
#@@3 r;rXhS2XAAHH@@5,,. ,,;..:rrSGHG3sr;:, ..,,::;;r;r;sssrr;r;;;;,.., ...,sG; .;;;:9
|
||||
@#@B..ri22s;;;;;srr:,,: ,.... :r2XXi;,.,::;;;;r;;;r;r;rrrrr;r;;;;:. .,::;;irrr;r ,3
|
||||
#@@H,,;;::,,.:,;ss;rr;::;rr522329MMX;riGM#A3iirsiSiissrr;;;r;;;r;;;rriirsAMHGA3S,;A&r;: ,A
|
||||
#@B::rrrisiirrSS5riA@M33GA#@@@@BAi: ,;XAHAXrsiSisrrrr;;;;;;;;;r;r;rrSH#AHHhX;5Hs;:;,sM
|
||||
@#i,;irsiiSSs3##2r;i23h&BB95;. :iA@@MXr;r;rr;;r;rrrrrrrrr;r;rr2992S;;r3S;;;. S#
|
||||
#@A;rrSssriSiri2X3GSis99&3iriX&AMB#BMB@@@@@@&iiir;;;r;;;;;r;rrsrrrr;rrr;rri;;,,:2r::r:,:5B
|
||||
@@@@M325rSssri:.,:i@@@@H;;;rSS,r:.ir.2#3hGr;:;::;r;rrr;rrrrsrsssrrrsrrrisr::,:,2S,:;;; ;hA
|
||||
@HG@@#Aii5irrsSr;,.:;2@#BS. , rr5s:r: . .:;rrrrsssrssii5iSSSisrisrsS55;,::,SS::;;;..SHM
|
||||
@@#@@@BirSiisSis5isr:,:r2AXGX25Si;,,,:,,,;:;;rrsssrsrsriiS525255i5iii55S;::::iX;:;;;;.;&A#
|
||||
AABGHBhsriSiiSsiisiiir;;;;;;;;sr;:;:::::::;;rrrrrrsssrii55X22222XX223XS;;;;;S5;:;;;;::i9##
|
||||
MMBA32rrrsrssiiSiiiirrr;;;;;;;:;;:::,:::,::::::;:;;rrrriS252233hXhhΞ;;;;ssr;;;r;;.:2A#@
|
||||
MAXs5X5rsrrrssii52X2Xir,:;::;:,,:,,.,,:,,,:,::::;;;;si52X23X93h9hGGXs;;;rrr;r;;rr;,,rs9M@r
|
||||
BGhA&#@#5Srrrsri599h9#X:,::;:,::,:,..,::.,.,,;;rsiiX393Ghh3G393922is;;;r;r;;;;;s;,:irX9@@
|
||||
@@@@@@#52H2ssrrs5XhX&&HAr;;rr:;;;::::,:::;;ri293Gh&GG99X32XXX2XX2srr;;;;;;;;;;r;:.&2rGH@i.
|
||||
X2ir::. ,sH&HHAAhGGABMM@@@XriXiisr;;;;rS53hA&G9h3XX3X3XX2X23XXS5isrrr;;r;rrrrr:::3i;iH@M r
|
||||
,.,,:,;;:,,.:r5X&&A&AA&hBB r23552Ah&HBAG2322XX3X2X2X2X23X9X2iissrrrrrrrr;rrr;,;GS;5H#@; 2
|
||||
;.;r;;:;;;sr:;.:;:..,:,:rr ,Xi222A&HHA#@M3sBA92XXX23XX2X2X25ssrirrrssr;rrrss:,r3GrrAB@h ,A
|
||||
#;:;;;;;;;ri&B32GGhi;;;rrr::5XXs5&AhAGhH@M2A@Gh9GX22X25S5iiiisirssissrsriir,;i33rsAA#@; sB
|
||||
@H,rrr;;;;::;r;::;;;riiX;,Si ;52iXA&hG&Ah@HA#H3XX2X322iiiSi5SSiSS5S5sriSr:,:i3Ar:HAH#2 ,S#
|
||||
122
src/main/resources/mapper/CourseApplicationMapper.xml
Normal file
@ -0,0 +1,122 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.lxq.model.dao.CourseApplicationDAO">
|
||||
|
||||
<select id="getAllCourseApplication" resultType="com.lxq.model.object.CourseApplication">
|
||||
select * from course_application
|
||||
<where>
|
||||
<if test="id !=null">
|
||||
and id = #{id}
|
||||
</if>
|
||||
<if test="time !=null">
|
||||
and time = #{time}
|
||||
</if>
|
||||
<if test="teacherId !=null">
|
||||
and teacherId = #{teacherId}
|
||||
</if>
|
||||
<if test="userId !=null">
|
||||
and userId = #{userId}
|
||||
</if>
|
||||
<if test="curriculumId !=null">
|
||||
and curriculumId = #{curriculumId}
|
||||
</if>
|
||||
<if test="state !=null">
|
||||
and state = #{state}
|
||||
</if>
|
||||
|
||||
<if test="content !=null">
|
||||
and content like CONCAT('%', #{content}, '%')
|
||||
</if>
|
||||
<if test="remarks !=null">
|
||||
and remarks like CONCAT('%', #{remarks}, '%')
|
||||
</if>
|
||||
</where>
|
||||
|
||||
</select>
|
||||
<select id="getCourseApplication" resultType="com.lxq.model.object.CourseApplication">
|
||||
select * from course_application
|
||||
<where>
|
||||
<if test="id !=null">
|
||||
and id = #{id}
|
||||
</if>
|
||||
<if test="time !=null">
|
||||
and time = #{time}
|
||||
</if>
|
||||
<if test="teacherId !=null">
|
||||
and teacherId = #{teacherId}
|
||||
</if>
|
||||
<if test="userId !=null">
|
||||
and userId = #{userId}
|
||||
</if>
|
||||
<if test="curriculumId !=null">
|
||||
and curriculumId = #{curriculumId}
|
||||
</if>
|
||||
<if test="state !=null">
|
||||
and state = #{state}
|
||||
</if>
|
||||
|
||||
<if test="content !=null">
|
||||
and content like CONCAT('%', #{content}, '%')
|
||||
</if>
|
||||
<if test="remarks !=null">
|
||||
and remarks like CONCAT('%', #{remarks}, '%')
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="getCourseApplicationbyPrimary" resultType="com.lxq.model.object.CourseApplication">
|
||||
select * from course_application
|
||||
<where>
|
||||
<if test="teacherId !=null">
|
||||
and teacherId = #{teacherId}
|
||||
</if>
|
||||
<if test="userId !=null">
|
||||
and userId = #{userId}
|
||||
</if>
|
||||
<if test="curriculumId !=null">
|
||||
and curriculumId = #{curriculumId}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
|
||||
<insert id="addCourseApplication" parameterType="com.lxq.model.object.CourseApplication">
|
||||
insert into course_application(teacherId,userId,curriculumId,content,state,remarks,time)
|
||||
values(#{teacherId},#{userId},#{curriculumId},#{content},#{state},#{remarks},#{time})
|
||||
</insert>
|
||||
|
||||
<delete id="delCourseApplication" parameterType="com.lxq.model.object.CourseApplication">
|
||||
delete from course_application
|
||||
where id = #{id}
|
||||
</delete>
|
||||
|
||||
<update id="updateCourseApplication" parameterType="com.lxq.model.object.CourseApplication">
|
||||
update course_application
|
||||
<set>
|
||||
<if test="teacherId !=null">
|
||||
teacherId = #{teacherId},
|
||||
</if>
|
||||
<if test="userId !=null">
|
||||
userId = #{userId},
|
||||
</if>
|
||||
<if test="curriculumId !=null">
|
||||
curriculumId = #{curriculumId},
|
||||
</if>
|
||||
<if test="content !=null">
|
||||
content = #{content},
|
||||
</if>
|
||||
<if test="state !=null">
|
||||
state = #{state},
|
||||
</if>
|
||||
<if test="remarks !=null">
|
||||
remarks = #{remarks},
|
||||
</if>
|
||||
<if test="time !=null">
|
||||
time = #{time},
|
||||
</if>
|
||||
</set>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
|
||||
</mapper>
|
||||
159
src/main/resources/mapper/CurriculumMapper.xml
Normal file
@ -0,0 +1,159 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.lxq.model.dao.CurriculumDAO">
|
||||
|
||||
<select id="getAllCurriculum" resultType="com.lxq.model.object.Curriculum">
|
||||
select * from curriculum
|
||||
<where>
|
||||
<if test="id !=null">
|
||||
and id = #{id}
|
||||
</if>
|
||||
|
||||
<if test="curriculumName !=null">
|
||||
and curriculumName like CONCAT('%', #{curriculumName}, '%')
|
||||
</if>
|
||||
<if test="introduce !=null">
|
||||
and introduce like CONCAT('%', #{introduce}, '%')
|
||||
</if>
|
||||
<if test="place !=null">
|
||||
and place like CONCAT('%', #{place}, '%')
|
||||
</if>
|
||||
<if test="teacherId !=null">
|
||||
and teacherId like CONCAT('%', #{teacherId}, '%')
|
||||
</if>
|
||||
<if test="timeStart !=null">
|
||||
and timeStart = #{timeStart}
|
||||
</if>
|
||||
<if test="timeEndNum !=null">
|
||||
and timeEndNum = #{timeEndNum}
|
||||
</if>
|
||||
<if test="timeStartNum !=null">
|
||||
and timeStartNum = #{timeStartNum}
|
||||
</if>
|
||||
<if test="timeEnd !=null">
|
||||
and timeEnd = #{timeEnd}
|
||||
</if>
|
||||
<if test="timeLength !=null">
|
||||
and timeLength = #{timeLength}
|
||||
</if>
|
||||
<if test="userNum !=null">
|
||||
and userNum = #{userNum}
|
||||
</if>
|
||||
<if test="joinUserNum !=null">
|
||||
and joinUserNum = #{joinUserNum}
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY `curriculum`.`joinUserNum` ASC
|
||||
</select>
|
||||
|
||||
<select id="getCurriculum" resultType="com.lxq.model.object.Curriculum">
|
||||
select * from curriculum
|
||||
<where>
|
||||
<if test="id !=null">
|
||||
and id = #{id}
|
||||
</if>
|
||||
<if test="teacherId !=null">
|
||||
and teacherId like CONCAT('%', #{teacherId}, '%')
|
||||
</if>
|
||||
<if test="curriculumName !=null">
|
||||
and curriculumName like CONCAT('%', #{curriculumName}, '%')
|
||||
</if>
|
||||
<if test="place !=null">
|
||||
and place like CONCAT('%', #{place}, '%')
|
||||
</if>
|
||||
<if test="introduce !=null">
|
||||
and introduce like CONCAT('%', #{introduce}, '%')
|
||||
</if>
|
||||
<if test="timeStart !=null">
|
||||
and timeStart = #{timeStart}
|
||||
</if>
|
||||
<if test="timeEndNum !=null">
|
||||
and timeEndNum = #{timeEndNum}
|
||||
</if>
|
||||
<if test="timeStartNum !=null">
|
||||
and timeStartNum = #{timeStartNum}
|
||||
</if>
|
||||
<if test="timeEnd !=null">
|
||||
and timeEnd = #{timeEnd}
|
||||
</if>
|
||||
<if test="timeLength !=null">
|
||||
and timeLength = #{timeLength}
|
||||
</if>
|
||||
<if test="userNum !=null">
|
||||
and userNum = #{userNum}
|
||||
</if>
|
||||
<if test="joinUserNum !=null">
|
||||
and joinUserNum = #{joinUserNum}
|
||||
</if>
|
||||
|
||||
</where>
|
||||
ORDER BY `curriculum`.`joinUserNum` ASC
|
||||
</select>
|
||||
|
||||
<select id="getCurriculumbyPrimary" resultType="com.lxq.model.object.Curriculum">
|
||||
select * from curriculum
|
||||
<where>
|
||||
|
||||
<if test="teacherId !=null">
|
||||
and teacherId = #{teacherId}
|
||||
</if>
|
||||
<if test="curriculumName !=null">
|
||||
and curriculumName = #{curriculumName}
|
||||
</if>
|
||||
|
||||
</where>
|
||||
ORDER BY `curriculum`.`joinUserNum` ASC
|
||||
</select>
|
||||
|
||||
<insert id="addCurriculum" parameterType="com.lxq.model.object.Curriculum">
|
||||
insert into curriculum(teacherId,curriculumName,introduce,timeStart,timeEnd,timeStartNum,timeEndNum,timeLength,userNum,joinUserNum,place)
|
||||
values(#{teacherId},#{curriculumName},#{introduce},#{timeStart},#{timeEnd},#{timeStartNum},#{timeEndNum},#{timeLength},#{userNum},#{joinUserNum},#{place})
|
||||
</insert>
|
||||
|
||||
<delete id="delCurriculum" parameterType="com.lxq.model.object.Curriculum">
|
||||
delete from curriculum
|
||||
where id = #{id}
|
||||
</delete>
|
||||
|
||||
<update id="updateCurriculum" parameterType="com.lxq.model.object.Curriculum">
|
||||
update curriculum
|
||||
<set>
|
||||
<if test="curriculumName !=null">
|
||||
curriculumName = #{curriculumName},
|
||||
</if>
|
||||
<if test="teacherId !=null">
|
||||
teacherId = #{teacherId},
|
||||
</if>
|
||||
<if test="introduce !=null">
|
||||
introduce = #{introduce},
|
||||
</if>
|
||||
<if test="timeStart !=null">
|
||||
timeStart = #{timeStart},
|
||||
</if>
|
||||
<if test="timeEnd !=null">
|
||||
timeEnd = #{timeEnd},
|
||||
</if>
|
||||
<if test="timeStartNum !=null">
|
||||
timeStartNum = #{timeStartNum},
|
||||
</if>
|
||||
<if test="timeEndNum !=null">
|
||||
timeEndNum = #{timeEndNum},
|
||||
</if>
|
||||
<if test="timeLength !=null">
|
||||
timeLength = #{timeLength},
|
||||
</if>
|
||||
<if test="userNum !=null">
|
||||
userNum = #{userNum},
|
||||
</if>
|
||||
<if test="joinUserNum !=null">
|
||||
joinUserNum = #{joinUserNum},
|
||||
</if>
|
||||
<if test="place !=null">
|
||||
place = #{place},
|
||||
</if>
|
||||
</set>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
|
||||
</mapper>
|
||||
153
src/main/resources/mapper/LeaveApplicationMapper.xml
Normal file
@ -0,0 +1,153 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.lxq.model.dao.LeaveApplicationDAO">
|
||||
|
||||
<select id="getAllLeaveApplication" resultType="com.lxq.model.object.LeaveApplication">
|
||||
select * from leave_application
|
||||
<where>
|
||||
<if test="id !=null">
|
||||
and id = #{id}
|
||||
</if>
|
||||
<if test="time !=null">
|
||||
and time = #{time}
|
||||
</if>
|
||||
<if test="teacherId !=null">
|
||||
and teacherId = #{teacherId}
|
||||
</if>
|
||||
<if test="userId !=null">
|
||||
and userId = #{userId}
|
||||
</if>
|
||||
<if test="curriculumId !=null">
|
||||
and curriculumId = #{curriculumId}
|
||||
</if>
|
||||
<if test="state !=null">
|
||||
and state = #{state}
|
||||
</if>
|
||||
<if test="timeStart !=null">
|
||||
and timeStart = #{timeStart}
|
||||
</if>
|
||||
<if test="timeEnd !=null">
|
||||
and timeEnd = #{timeEnd}
|
||||
</if>
|
||||
<if test="timeLength !=null">
|
||||
and timeLength = #{timeLength}
|
||||
</if>
|
||||
|
||||
<if test="content !=null">
|
||||
and content like CONCAT(CONCAT('%', #{content}, '%')
|
||||
</if>
|
||||
<if test="remarks !=null">
|
||||
and remarks like CONCAT('%', #{remarks}, '%')
|
||||
</if>
|
||||
</where>
|
||||
|
||||
</select>
|
||||
<select id="getLeaveApplication" resultType="com.lxq.model.object.LeaveApplication">
|
||||
select * from leave_application
|
||||
<where>
|
||||
<if test="id !=null">
|
||||
and id = #{id}
|
||||
</if>
|
||||
<if test="time !=null">
|
||||
and time = #{time}
|
||||
</if>
|
||||
<if test="teacherId !=null">
|
||||
and teacherId = #{teacherId}
|
||||
</if>
|
||||
<if test="userId !=null">
|
||||
and userId = #{userId}
|
||||
</if>
|
||||
<if test="curriculumId !=null">
|
||||
and curriculumId = #{curriculumId}
|
||||
</if>
|
||||
<if test="state !=null">
|
||||
and state = #{state}
|
||||
</if>
|
||||
<if test="timeStart !=null">
|
||||
and timeStart = #{timeStart}
|
||||
</if>
|
||||
<if test="timeEnd !=null">
|
||||
and timeEnd = #{timeEnd}
|
||||
</if>
|
||||
<if test="timeLength !=null">
|
||||
and timeLength = #{timeLength}
|
||||
</if>
|
||||
<if test="content !=null">
|
||||
and content like CONCAT('%', #{content}, '%')
|
||||
</if>
|
||||
<if test="remarks !=null">
|
||||
and remarks like CONCAT(CONCAT('%', #{remarks}, '%')
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="getLeaveApplicationbyPrimary" resultType="com.lxq.model.object.LeaveApplication">
|
||||
select * from leave_application
|
||||
<where>
|
||||
<if test="teacherId !=null">
|
||||
and teacherId = #{teacherId}
|
||||
</if>
|
||||
<if test="userId !=null">
|
||||
and userId = #{userId}
|
||||
</if>
|
||||
<if test="curriculumId !=null">
|
||||
and curriculumId = #{curriculumId}
|
||||
</if>
|
||||
<if test="timeStart !=null">
|
||||
and timeStart = #{timeStart}
|
||||
</if>
|
||||
<if test="timeEnd !=null">
|
||||
and timeEnd = #{timeEnd}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<insert id="addLeaveApplication" parameterType="com.lxq.model.object.LeaveApplication">
|
||||
insert into leave_application(teacherId,userId,curriculumId,content,state,remarks,time,timeStart,timeEnd,timeLength)
|
||||
values(#{teacherId},#{userId},#{curriculumId},#{content},#{state},#{remarks},#{time},#{timeStart},#{timeEnd},#{timeLength})
|
||||
</insert>
|
||||
|
||||
<delete id="delLeaveApplication" parameterType="com.lxq.model.object.LeaveApplication">
|
||||
delete from leave_application
|
||||
where id = #{id}
|
||||
</delete>
|
||||
|
||||
<update id="updateLeaveApplication" parameterType="com.lxq.model.object.LeaveApplication">
|
||||
update leave_application
|
||||
<set>
|
||||
<if test="teacherId !=null">
|
||||
teacherId = #{teacherId},
|
||||
</if>
|
||||
<if test="userId !=null">
|
||||
userId = #{userId},
|
||||
</if>
|
||||
<if test="curriculumId !=null">
|
||||
curriculumId = #{curriculumId},
|
||||
</if>
|
||||
<if test="content !=null">
|
||||
content = #{content},
|
||||
</if>
|
||||
<if test="state !=null">
|
||||
state = #{state},
|
||||
</if>
|
||||
<if test="remarks !=null">
|
||||
remarks = #{remarks},
|
||||
</if>
|
||||
<if test="timeStart !=null">
|
||||
timeStart = #{timeStart},
|
||||
</if>
|
||||
<if test="timeEnd !=null">
|
||||
timeEnd = #{timeEnd},
|
||||
</if>
|
||||
<if test="timeLength !=null">
|
||||
timeLength = #{timeLength},
|
||||
</if>
|
||||
<if test="time !=null">
|
||||
time = #{time},
|
||||
</if>
|
||||
</set>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
|
||||
</mapper>
|
||||
147
src/main/resources/mapper/RecordMapper.xml
Normal file
@ -0,0 +1,147 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.lxq.model.dao.RecordDAO">
|
||||
|
||||
<select id="getAllRecord" resultType="com.lxq.model.object.Record">
|
||||
select * from record
|
||||
<where>
|
||||
<if test="id !=null">
|
||||
and id = #{id}
|
||||
</if>
|
||||
<if test="time !=null">
|
||||
and time = #{time}
|
||||
</if>
|
||||
<if test="teacherId !=null">
|
||||
and teacherId = #{teacherId}
|
||||
</if>
|
||||
<if test="userId !=null">
|
||||
and userId = #{userId}
|
||||
</if>
|
||||
<if test="curriculumId !=null">
|
||||
and curriculumId = #{curriculumId}
|
||||
</if>
|
||||
<if test="state !=null">
|
||||
and state like CONCAT('%', #{state}, '%')
|
||||
</if>
|
||||
|
||||
<if test="timeNum !=null">
|
||||
and timeNum = #{timeNum}
|
||||
</if>
|
||||
<if test="timeNumMax !=null">
|
||||
and timeNum <![CDATA[ <= ]]> #{timeNumMax}
|
||||
</if>
|
||||
<if test="timeNumMin !=null">
|
||||
and timeNum <![CDATA[ >= ]]> #{timeNumMin}
|
||||
</if>
|
||||
|
||||
<if test="content !=null">
|
||||
and content like CONCAT('%', #{content}, '%')
|
||||
</if>
|
||||
<if test="remarks !=null">
|
||||
and remarks like CONCAT('%', #{remarks}, '%')
|
||||
</if>
|
||||
</where>
|
||||
|
||||
</select>
|
||||
|
||||
<select id="getRecord" resultType="com.lxq.model.object.Record">
|
||||
select * from record
|
||||
<where>
|
||||
<if test="id !=null">
|
||||
and id = #{id}
|
||||
</if>
|
||||
<if test="time !=null">
|
||||
and time = #{time}
|
||||
</if>
|
||||
<if test="teacherId !=null">
|
||||
and teacherId = #{teacherId}
|
||||
</if>
|
||||
<if test="userId !=null">
|
||||
and userId = #{userId}
|
||||
</if>
|
||||
<if test="curriculumId !=null">
|
||||
and curriculumId = #{curriculumId}
|
||||
</if>
|
||||
<if test="state !=null">
|
||||
and state = #{state}
|
||||
</if>
|
||||
<if test="timeNum !=null">
|
||||
and timeNum = #{timeNum}
|
||||
</if>
|
||||
<if test="timeNumMax !=null">
|
||||
and timeNum <![CDATA[ <= ]]> #{timeNumMax}
|
||||
</if>
|
||||
<if test="timeNumMin !=null">
|
||||
and timeNum <![CDATA[ >= ]]> #{timeNumMin}
|
||||
</if>
|
||||
<if test="content !=null">
|
||||
and content like CONCAT('%', #{content}, '%')
|
||||
</if>
|
||||
<if test="remarks !=null">
|
||||
and remarks like CONCAT('%', #{remarks}, '%')
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="getRecordbyPrimary" resultType="com.lxq.model.object.Record">
|
||||
select * from record
|
||||
<where>
|
||||
<if test="time !=null">
|
||||
and time = #{time}
|
||||
</if>
|
||||
<if test="teacherId !=null">
|
||||
and teacherId = #{teacherId}
|
||||
</if>
|
||||
<if test="userId !=null">
|
||||
and userId = #{userId}
|
||||
</if>
|
||||
<if test="curriculumId !=null">
|
||||
and curriculumId = #{curriculumId}
|
||||
</if>
|
||||
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<insert id="addRecord" parameterType="com.lxq.model.object.Record">
|
||||
insert into record(teacherId,userId,curriculumId,content,state,remarks,time,timeNum)
|
||||
values(#{teacherId},#{userId},#{curriculumId},#{content},#{state},#{remarks},#{time},#{timeNum})
|
||||
</insert>
|
||||
|
||||
<delete id="delRecord" parameterType="com.lxq.model.object.Record">
|
||||
delete from record
|
||||
where id = #{id}
|
||||
</delete>
|
||||
|
||||
<update id="updateRecord" parameterType="com.lxq.model.object.Record">
|
||||
update record
|
||||
<set>
|
||||
<if test="teacherId !=null">
|
||||
teacherId = #{teacherId},
|
||||
</if>
|
||||
<if test="userId !=null">
|
||||
userId = #{userId},
|
||||
</if>
|
||||
<if test="curriculumId !=null">
|
||||
curriculumId = #{curriculumId},
|
||||
</if>
|
||||
<if test="content !=null">
|
||||
content = #{content},
|
||||
</if>
|
||||
<if test="state !=null">
|
||||
state = #{state},
|
||||
</if>
|
||||
<if test="remarks !=null">
|
||||
remarks = #{remarks},
|
||||
</if>
|
||||
<if test="timeNum !=null">
|
||||
timeNum = #{timeNum},
|
||||
</if>
|
||||
<if test="time !=null">
|
||||
time = #{time},
|
||||
</if>
|
||||
</set>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
|
||||
</mapper>
|
||||
98
src/main/resources/mapper/UserMapper.xml
Normal file
@ -0,0 +1,98 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.lxq.model.dao.UserDAO">
|
||||
|
||||
<select id="getAllUser" resultType="com.lxq.model.object.User">
|
||||
select * from user
|
||||
<where>
|
||||
<if test="userId !=null">
|
||||
and userId = #{userId}
|
||||
</if>
|
||||
<if test="userAccount !=null">
|
||||
and userAccount like CONCAT('%', #{userAccount}, '%')
|
||||
</if>
|
||||
<if test="userName !=null">
|
||||
and userName like CONCAT('%', #{userName}, '%')
|
||||
</if>
|
||||
<if test="userPw !=null">
|
||||
and userPw = #{userPw}
|
||||
</if>
|
||||
<if test="userLv !=null">
|
||||
and userLv = #{userLv}
|
||||
</if>
|
||||
<if test="userSex !=null">
|
||||
and userSex = #{userSex}
|
||||
</if>
|
||||
<if test="userIphone !=null">
|
||||
and userIphone like CONCAT('%', #{userIphone}, '%')
|
||||
</if>
|
||||
|
||||
</where>
|
||||
|
||||
</select>
|
||||
<select id="getUser" resultType="com.lxq.model.object.User">
|
||||
select * from user
|
||||
<where>
|
||||
<if test="userId !=null">
|
||||
and userId = #{userId}
|
||||
</if>
|
||||
<if test="userAccount !=null">
|
||||
and userAccount = #{userAccount}
|
||||
</if>
|
||||
<if test="userName !=null">
|
||||
and userName like CONCAT('%', #{userName}, '%')
|
||||
</if>
|
||||
<if test="userPw !=null">
|
||||
and userPw = #{userPw}
|
||||
</if>
|
||||
<if test="userLv !=null">
|
||||
and userLv = #{userLv}
|
||||
</if>
|
||||
<if test="userSex !=null">
|
||||
and userSex = #{userSex}
|
||||
</if>
|
||||
<if test="userIphone !=null">
|
||||
and userIphone like CONCAT('%', #{userIphone}, '%')
|
||||
</if>
|
||||
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="getUserByAccount" resultType="com.lxq.model.object.User">
|
||||
select * from user where userAccount = #{userAccount}
|
||||
</select>
|
||||
|
||||
<insert id="addUser" parameterType="com.lxq.model.object.User">
|
||||
insert into user(userAccount,userName,userPw,userLv,userSex,userIphone)
|
||||
values(#{userAccount},#{userName},#{userPw},#{userLv},#{userSex},#{userIphone})
|
||||
</insert>
|
||||
|
||||
<delete id="delUser" parameterType="com.lxq.model.object.User">
|
||||
delete from user
|
||||
where userAccount = #{userAccount}
|
||||
</delete>
|
||||
|
||||
<update id="updateUser" parameterType="com.lxq.model.object.User">
|
||||
update user
|
||||
<set>
|
||||
<if test="userName !=null">
|
||||
userName = #{userName},
|
||||
</if>
|
||||
<if test="userPw !=null">
|
||||
userPw = #{userPw},
|
||||
</if>
|
||||
<if test="userLv !=null">
|
||||
userLv = #{userLv},
|
||||
</if>
|
||||
<if test="userSex !=null">
|
||||
userSex = #{userSex},
|
||||
</if>
|
||||
<if test="userIphone !=null">
|
||||
userIphone = #{userIphone},
|
||||
</if>
|
||||
</set>
|
||||
where userId = #{userId}
|
||||
</update>
|
||||
|
||||
|
||||
</mapper>
|
||||
67
src/main/resources/static/css/403.css
Normal file
@ -0,0 +1,67 @@
|
||||
body {
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
family: "Poppins", sans-serif;
|
||||
background-image: linear-gradient(45deg, #f6d200 25%, #181617 25%, #181617 50%, #f6d200 50%, #f6d200 75%, #181617 75%, #181617 100%);
|
||||
}
|
||||
|
||||
h1 {
|
||||
text-transform: uppercase;
|
||||
background: repeating-linear-gradient(45deg, #f6d200, #f6d200 10px, #181617 10px, #181617 20px);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
/*animation: move 5s ease infinite;*/
|
||||
font-size: 384px;
|
||||
margin: 0;
|
||||
line-height: 0.7;
|
||||
position: relative;
|
||||
}
|
||||
h1:before, h1:after {
|
||||
content: "Caution";
|
||||
background-color: #f6d200;
|
||||
color: #181617;
|
||||
border-radius: 10px;
|
||||
font-size: 35px;
|
||||
position: absolute;
|
||||
padding: 31px;
|
||||
text-transform: uppercase;
|
||||
font-weight: bold;
|
||||
-webkit-text-fill-color: #181617;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -50%) rotate(20deg);
|
||||
}
|
||||
h1:before {
|
||||
content: "";
|
||||
padding: 70px 130px;
|
||||
background: repeating-linear-gradient(45deg, #f6d200, #f6d200 10px, #181617 10px, #181617 20px);
|
||||
box-shadow: 0px 0px 10px #181617;
|
||||
}
|
||||
h1 span:before, h1 span:after {
|
||||
content: "";
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
background: #757575;
|
||||
color: #757575;
|
||||
border-radius: 50%;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
margin: auto;
|
||||
top: 20%;
|
||||
z-index: 3;
|
||||
box-shadow: 0px 60px 0 0px;
|
||||
}
|
||||
h1 span:before {
|
||||
left: 37%;
|
||||
transform: rotate(22deg);
|
||||
top: -44%;
|
||||
}
|
||||
h1 span:after {
|
||||
right: 34%;
|
||||
transform: rotate(22deg);
|
||||
top: 3%;
|
||||
}
|
||||
638
src/main/resources/static/css/404.css
Normal file
@ -0,0 +1,638 @@
|
||||
|
||||
@import url("https://fonts.googleapis.com/css?family=Barlow+Condensed:300,400,500,600,700,800,900|Barlow:300,400,500,600,700,800,900&display=swap");
|
||||
|
||||
*{margin:0;padding:0;}
|
||||
body{overflow:hidden;}
|
||||
|
||||
.about {
|
||||
position: fixed;
|
||||
z-index: 10;
|
||||
bottom: 10px;
|
||||
right: 10px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: flex-end;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
.about .bg_links {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: rgba(0, 0, 0, 0.2);
|
||||
border-radius: 100%;
|
||||
backdrop-filter: blur(5px);
|
||||
position: absolute;
|
||||
}
|
||||
.about .logo {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
z-index: 9;
|
||||
background-image: url(/static/img/logo_white.svg);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 10px 7px;
|
||||
opacity: 0.9;
|
||||
transition: all 1s 0.2s ease;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
.about .social {
|
||||
opacity: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
.about .social .icon {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-size: 20px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-color: transparent;
|
||||
display: flex;
|
||||
transition: all 0.2s ease, background-color 0.4s ease;
|
||||
opacity: 0;
|
||||
border-radius: 100%;
|
||||
}
|
||||
.about .social.portfolio {
|
||||
transition: all 0.8s ease;
|
||||
}
|
||||
.about .social.portfolio .icon {
|
||||
background-image: url(/static/img/link.svg);
|
||||
}
|
||||
.about .social.dribbble {
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
.about .social.dribbble .icon {
|
||||
background-image: url(/static/img/dribbble.svg);
|
||||
}
|
||||
.about .social.linkedin {
|
||||
transition: all 0.8s ease;
|
||||
}
|
||||
.about .social.linkedin .icon {
|
||||
background-image: url(/static/img/linkedin.svg);
|
||||
}
|
||||
.about:hover {
|
||||
width: 105px;
|
||||
height: 105px;
|
||||
transition: all 0.6s cubic-bezier(0.64, 0.01, 0.07, 1.65);
|
||||
}
|
||||
.about:hover .logo {
|
||||
opacity: 1;
|
||||
transition: all 0.6s ease;
|
||||
}
|
||||
.about:hover .social {
|
||||
opacity: 1;
|
||||
}
|
||||
.about:hover .social .icon {
|
||||
opacity: 0.9;
|
||||
}
|
||||
.about:hover .social:hover {
|
||||
background-size: 28px;
|
||||
}
|
||||
.about:hover .social:hover .icon {
|
||||
background-size: 65%;
|
||||
opacity: 1;
|
||||
}
|
||||
.about:hover .social.portfolio {
|
||||
right: 0;
|
||||
bottom: calc(100% - 40px);
|
||||
transition: all 0.3s 0s cubic-bezier(0.64, 0.01, 0.07, 1.65);
|
||||
}
|
||||
.about:hover .social.portfolio .icon:hover {
|
||||
background-color: #698fb7;
|
||||
}
|
||||
.about:hover .social.dribbble {
|
||||
bottom: 45%;
|
||||
right: 45%;
|
||||
transition: all 0.3s 0.15s cubic-bezier(0.64, 0.01, 0.07, 1.65);
|
||||
}
|
||||
.about:hover .social.dribbble .icon:hover {
|
||||
background-color: #ea4c89;
|
||||
}
|
||||
.about:hover .social.linkedin {
|
||||
bottom: 0;
|
||||
right: calc(100% - 40px);
|
||||
transition: all 0.3s 0.25s cubic-bezier(0.64, 0.01, 0.07, 1.65);
|
||||
}
|
||||
.about:hover .social.linkedin .icon:hover {
|
||||
background-color: #0077b5;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
p,
|
||||
ul,
|
||||
li,
|
||||
button,
|
||||
a,
|
||||
i,
|
||||
input,
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
border: 0;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
h1:focus,
|
||||
h2:focus,
|
||||
h3:focus,
|
||||
h4:focus,
|
||||
h5:focus,
|
||||
h6:focus,
|
||||
p:focus,
|
||||
ul:focus,
|
||||
li:focus,
|
||||
button:focus,
|
||||
a:focus,
|
||||
i:focus,
|
||||
input:focus,
|
||||
body:focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
height: auto;
|
||||
font-family: "Barlow", sans-serif;
|
||||
background: #695681;
|
||||
}
|
||||
|
||||
.logo {
|
||||
position: fixed;
|
||||
z-index: 5;
|
||||
bottom: 10px;
|
||||
right: 10px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
border-radius: 100%;
|
||||
backdrop-filter: blur(5px);
|
||||
}
|
||||
.logo img {
|
||||
width: 55%;
|
||||
height: 55%;
|
||||
transform: translateY(-1px);
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
nav .menu {
|
||||
width: 100%;
|
||||
height: 80px;
|
||||
position: absolute;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0 5%;
|
||||
box-sizing: border-box;
|
||||
z-index: 3;
|
||||
}
|
||||
nav .menu .website_name {
|
||||
color: #695681;
|
||||
font-weight: 600;
|
||||
font-size: 20px;
|
||||
letter-spacing: 1px;
|
||||
background: white;
|
||||
padding: 4px 8px;
|
||||
border-radius: 2px;
|
||||
opacity: 0.5;
|
||||
transition: all 0.4s ease;
|
||||
cursor: pointer;
|
||||
}
|
||||
nav .menu .website_name:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
nav .menu .menu_links {
|
||||
transition: all 0.4s ease;
|
||||
opacity: 0.5;
|
||||
}
|
||||
nav .menu .menu_links:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
@media screen and (max-width: 799px) {
|
||||
nav .menu .menu_links {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
nav .menu .menu_links .link {
|
||||
color: white;
|
||||
text-transform: uppercase;
|
||||
font-weight: 500;
|
||||
margin-right: 50px;
|
||||
letter-spacing: 2px;
|
||||
position: relative;
|
||||
transition: all 0.3s 0.2s ease;
|
||||
}
|
||||
nav .menu .menu_links .link:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
nav .menu .menu_links .link:before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 0px;
|
||||
height: 4px;
|
||||
background: linear-gradient(90deg, #FFEDC0 0%, #FF9D87 100%);
|
||||
bottom: -10px;
|
||||
border-radius: 4px;
|
||||
transition: all 0.4s cubic-bezier(0.82, 0.02, 0.13, 1.26);
|
||||
left: 100%;
|
||||
}
|
||||
nav .menu .menu_links .link:hover {
|
||||
opacity: 1;
|
||||
color: #FB8A8A;
|
||||
}
|
||||
nav .menu .menu_links .link:hover:before {
|
||||
width: 40px;
|
||||
left: 0;
|
||||
}
|
||||
nav .menu .menu_icon {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
position: relative;
|
||||
display: none;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
@media screen and (max-width: 799px) {
|
||||
nav .menu .menu_icon {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
nav .menu .menu_icon .icon {
|
||||
width: 24px;
|
||||
height: 2px;
|
||||
background: white;
|
||||
position: absolute;
|
||||
}
|
||||
nav .menu .menu_icon .icon:before, nav .menu .menu_icon .icon:after {
|
||||
content: '';
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: inherit;
|
||||
position: absolute;
|
||||
transition: all 0.3s cubic-bezier(0.49, 0.04, 0, 1.55);
|
||||
}
|
||||
nav .menu .menu_icon .icon:before {
|
||||
transform: translateY(-8px);
|
||||
}
|
||||
nav .menu .menu_icon .icon:after {
|
||||
transform: translateY(8px);
|
||||
}
|
||||
nav .menu .menu_icon:hover .icon {
|
||||
background: #FFEDC0;
|
||||
}
|
||||
nav .menu .menu_icon:hover .icon:before {
|
||||
transform: translateY(-10px);
|
||||
}
|
||||
nav .menu .menu_icon:hover .icon:after {
|
||||
transform: translateY(10px);
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 100vh;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
.wrapper .container {
|
||||
margin: 0 auto;
|
||||
transition: all 0.4s ease;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
}
|
||||
.wrapper .container .scene {
|
||||
position: absolute;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.wrapper .container .one,
|
||||
.wrapper .container .two,
|
||||
.wrapper .container .three,
|
||||
.wrapper .container .circle,
|
||||
.wrapper .container .p404 {
|
||||
width: 60%;
|
||||
height: 60%;
|
||||
top: 20% !important;
|
||||
left: 20% !important;
|
||||
min-width: 400px;
|
||||
min-height: 400px;
|
||||
}
|
||||
.wrapper .container .one .content,
|
||||
.wrapper .container .two .content,
|
||||
.wrapper .container .three .content,
|
||||
.wrapper .container .circle .content,
|
||||
.wrapper .container .p404 .content {
|
||||
width: 600px;
|
||||
height: 600px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
animation: content 0.8s cubic-bezier(1, 0.06, 0.25, 1) backwards;
|
||||
}
|
||||
@keyframes content {
|
||||
0% {
|
||||
width: 0;
|
||||
}
|
||||
}
|
||||
.wrapper .container .one .content .piece,
|
||||
.wrapper .container .two .content .piece,
|
||||
.wrapper .container .three .content .piece,
|
||||
.wrapper .container .circle .content .piece,
|
||||
.wrapper .container .p404 .content .piece {
|
||||
width: 200px;
|
||||
height: 80px;
|
||||
display: flex;
|
||||
position: absolute;
|
||||
border-radius: 80px;
|
||||
z-index: 1;
|
||||
animation: pieceLeft 8s cubic-bezier(1, 0.06, 0.25, 1) infinite both;
|
||||
}
|
||||
@keyframes pieceLeft {
|
||||
50% {
|
||||
left: 80%;
|
||||
width: 10%;
|
||||
}
|
||||
}
|
||||
@keyframes pieceRight {
|
||||
50% {
|
||||
right: 80%;
|
||||
width: 10%;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 799px) {
|
||||
.wrapper .container .one,
|
||||
.wrapper .container .two,
|
||||
.wrapper .container .three,
|
||||
.wrapper .container .circle,
|
||||
.wrapper .container .p404 {
|
||||
width: 90%;
|
||||
height: 90%;
|
||||
top: 5% !important;
|
||||
left: 5% !important;
|
||||
min-width: 280px;
|
||||
min-height: 280px;
|
||||
}
|
||||
}
|
||||
@media screen and (max-height: 660px) {
|
||||
.wrapper .container .one,
|
||||
.wrapper .container .two,
|
||||
.wrapper .container .three,
|
||||
.wrapper .container .circle,
|
||||
.wrapper .container .p404 {
|
||||
min-width: 280px;
|
||||
min-height: 280px;
|
||||
width: 60%;
|
||||
height: 60%;
|
||||
top: 20% !important;
|
||||
left: 20% !important;
|
||||
}
|
||||
}
|
||||
.wrapper .container .text {
|
||||
width: 60%;
|
||||
height: 40%;
|
||||
min-width: 400px;
|
||||
min-height: 500px;
|
||||
position: absolute;
|
||||
margin: 40px 0;
|
||||
animation: text 0.6s 1.8s ease backwards;
|
||||
}
|
||||
@keyframes text {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: translateY(40px);
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 799px) {
|
||||
.wrapper .container .text {
|
||||
min-height: 400px;
|
||||
height: 80%;
|
||||
}
|
||||
}
|
||||
.wrapper .container .text article {
|
||||
width: 400px;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
z-index: 4;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
bottom: 0;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
@media screen and (max-width: 799px) {
|
||||
.wrapper .container .text article {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
.wrapper .container .text article p {
|
||||
color: white;
|
||||
font-size: 18px;
|
||||
letter-spacing: 0.6px;
|
||||
margin-bottom: 40px;
|
||||
text-shadow: 6px 6px 10px #32243E;
|
||||
}
|
||||
.wrapper .container .text article button {
|
||||
height: 40px;
|
||||
padding: 0 30px;
|
||||
border-radius: 50px;
|
||||
cursor: pointer;
|
||||
box-shadow: 0px 15px 20px rgba(54, 24, 79, 0.5);
|
||||
z-index: 3;
|
||||
color: #695681;
|
||||
background-color: white;
|
||||
text-transform: uppercase;
|
||||
font-weight: 600;
|
||||
font-size: 12px;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
.wrapper .container .text article button:hover {
|
||||
box-shadow: 0px 10px 10px -10px rgba(54, 24, 79, 0.5);
|
||||
transform: translateY(5px);
|
||||
background: #FB8A8A;
|
||||
color: white;
|
||||
}
|
||||
.wrapper .container .p404 {
|
||||
font-size: 200px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 4px;
|
||||
color: white;
|
||||
display: flex !important;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
position: absolute;
|
||||
z-index: 2;
|
||||
animation: anime404 0.6s cubic-bezier(0.3, 0.8, 1, 1.05) both;
|
||||
animation-delay: 1.2s;
|
||||
}
|
||||
@media screen and (max-width: 799px) {
|
||||
.wrapper .container .p404 {
|
||||
font-size: 100px;
|
||||
}
|
||||
}
|
||||
@keyframes anime404 {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: scale(10) skew(20deg, 20deg);
|
||||
}
|
||||
}
|
||||
.wrapper .container .p404:nth-of-type(2) {
|
||||
color: #36184F;
|
||||
z-index: 1;
|
||||
animation-delay: 1s;
|
||||
filter: blur(10px);
|
||||
opacity: 0.8;
|
||||
}
|
||||
.wrapper .container .circle {
|
||||
position: absolute;
|
||||
}
|
||||
.wrapper .container .circle:before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 800px;
|
||||
height: 800px;
|
||||
background-color: rgba(54, 24, 79, 0.2);
|
||||
border-radius: 100%;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
box-shadow: inset 5px 20px 40px rgba(54, 24, 79, 0.25), inset 5px 0px 5px rgba(50, 36, 62, 0.3), inset 5px 5px 20px rgba(50, 36, 62, 0.25), 2px 2px 5px rgba(255, 255, 255, 0.2);
|
||||
animation: circle 0.8s cubic-bezier(1, 0.06, 0.25, 1) backwards;
|
||||
}
|
||||
@keyframes circle {
|
||||
0% {
|
||||
width: 0;
|
||||
height: 0;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 799px) {
|
||||
.wrapper .container .circle:before {
|
||||
width: 400px;
|
||||
height: 400px;
|
||||
}
|
||||
}
|
||||
.wrapper .container .one .content:before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 600px;
|
||||
height: 600px;
|
||||
background-color: rgba(54, 24, 79, 0.3);
|
||||
border-radius: 100%;
|
||||
box-shadow: inset 5px 20px 40px rgba(54, 24, 79, 0.25), inset 5px 0px 5px rgba(50, 36, 62, 0.3), inset 5px 5px 20px rgba(50, 36, 62, 0.25), 2px 2px 5px rgba(255, 255, 255, 0.2);
|
||||
animation: circle 0.8s 0.4s cubic-bezier(1, 0.06, 0.25, 1) backwards;
|
||||
}
|
||||
@media screen and (max-width: 799px) {
|
||||
.wrapper .container .one .content:before {
|
||||
width: 300px;
|
||||
height: 300px;
|
||||
}
|
||||
}
|
||||
.wrapper .container .one .content .piece {
|
||||
background: linear-gradient(90deg, #8077EA 13.7%, #EB73FF 94.65%);
|
||||
}
|
||||
.wrapper .container .one .content .piece:nth-child(1) {
|
||||
right: 15%;
|
||||
top: 18%;
|
||||
height: 30px;
|
||||
width: 120px;
|
||||
animation-delay: 0.5s;
|
||||
animation-name: pieceRight;
|
||||
}
|
||||
.wrapper .container .one .content .piece:nth-child(2) {
|
||||
left: 15%;
|
||||
top: 45%;
|
||||
width: 150px;
|
||||
height: 50px;
|
||||
animation-delay: 1s;
|
||||
animation-name: pieceLeft;
|
||||
}
|
||||
.wrapper .container .one .content .piece:nth-child(3) {
|
||||
left: 10%;
|
||||
top: 75%;
|
||||
height: 20px;
|
||||
width: 70px;
|
||||
animation-delay: 1.5s;
|
||||
animation-name: pieceLeft;
|
||||
}
|
||||
.wrapper .container .two .content .piece {
|
||||
background: linear-gradient(90deg, #FFEDC0 0%, #FF9D87 100%);
|
||||
}
|
||||
.wrapper .container .two .content .piece:nth-child(1) {
|
||||
left: 0%;
|
||||
top: 25%;
|
||||
height: 40px;
|
||||
width: 120px;
|
||||
animation-delay: 2s;
|
||||
animation-name: pieceLeft;
|
||||
}
|
||||
.wrapper .container .two .content .piece:nth-child(2) {
|
||||
right: 15%;
|
||||
top: 35%;
|
||||
width: 180px;
|
||||
height: 50px;
|
||||
animation-delay: 2.5s;
|
||||
animation-name: pieceRight;
|
||||
}
|
||||
.wrapper .container .two .content .piece:nth-child(3) {
|
||||
right: 10%;
|
||||
top: 80%;
|
||||
height: 20px;
|
||||
width: 160px;
|
||||
animation-delay: 3s;
|
||||
animation-name: pieceRight;
|
||||
}
|
||||
.wrapper .container .three .content .piece {
|
||||
background: #FB8A8A;
|
||||
}
|
||||
.wrapper .container .three .content .piece:nth-child(1) {
|
||||
left: 25%;
|
||||
top: 35%;
|
||||
height: 20px;
|
||||
width: 80px;
|
||||
animation-name: pieceLeft;
|
||||
animation-delay: 3.5s;
|
||||
}
|
||||
.wrapper .container .three .content .piece:nth-child(2) {
|
||||
right: 10%;
|
||||
top: 55%;
|
||||
width: 140px;
|
||||
height: 40px;
|
||||
animation-name: pieceRight;
|
||||
animation-delay: 4s;
|
||||
}
|
||||
.wrapper .container .three .content .piece:nth-child(3) {
|
||||
left: 40%;
|
||||
top: 68%;
|
||||
height: 20px;
|
||||
width: 80px;
|
||||
animation-name: pieceLeft;
|
||||
animation-delay: 4.5s;
|
||||
}
|
||||
50
src/main/resources/static/css/System.css
Normal file
@ -0,0 +1,50 @@
|
||||
f1 label {
|
||||
color: #48a59f;
|
||||
}
|
||||
|
||||
.layer-padding{
|
||||
padding: 20px;
|
||||
width: 580px;
|
||||
}
|
||||
.layer-padding f1{
|
||||
display: block;
|
||||
}
|
||||
|
||||
.add-search-div{
|
||||
margin-top: 1%;
|
||||
margin-left:10%;
|
||||
}
|
||||
.serach-div{
|
||||
margin-top: 2%;
|
||||
}
|
||||
.layui-icon{
|
||||
color: red;
|
||||
}
|
||||
/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/
|
||||
::-webkit-scrollbar
|
||||
{
|
||||
width: 16px;
|
||||
height: 7px;
|
||||
background-color: #F5F5F5;
|
||||
}
|
||||
|
||||
/*定义滚动条轨道 内阴影+圆角*/
|
||||
::-webkit-scrollbar-track
|
||||
{
|
||||
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
|
||||
border-radius: 10px;
|
||||
background-color: #F5F5F5;
|
||||
}
|
||||
/*定义失去焦点滑块 内阴影+圆角*/
|
||||
::-webkit-scrollbar-thumb
|
||||
{
|
||||
border-radius: 10px;
|
||||
background-color: #b3b2b2;
|
||||
}
|
||||
/*定义滑块 内阴影+圆角*/
|
||||
::-webkit-scrollbar-thumb:hover
|
||||
{
|
||||
border-radius: 10px;
|
||||
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
|
||||
background-color: #7d7c7c;
|
||||
}
|
||||
231
src/main/resources/static/css/button.css
Normal file
@ -0,0 +1,231 @@
|
||||
|
||||
|
||||
button[name="cssbutton"] {
|
||||
position: relative;
|
||||
margin: 0;
|
||||
padding: 5px 12px;
|
||||
height: 60px;
|
||||
width: 100px;
|
||||
outline: none;
|
||||
text-decoration: none;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid rgba(22, 76, 167, 0.6);
|
||||
border-radius: 10px;
|
||||
color: #1d89ff;
|
||||
font-weight: 400;
|
||||
font-size: 20px;
|
||||
font-family: inherit;
|
||||
z-index: 0;
|
||||
overflow: hidden;
|
||||
transition: all 0.3s cubic-bezier(0.02, 0.01, 0.47, 1);
|
||||
}
|
||||
button[name="cssbutton"] span {
|
||||
color: #164ca7;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0.7px;
|
||||
}
|
||||
button[name="cssbutton"]:hover {
|
||||
animation: rotate 0.7s ease-in-out both;
|
||||
}
|
||||
button[name="cssbutton"]:hover span {
|
||||
animation: storm 0.7s ease-in-out both;
|
||||
animation-delay: 0.06s;
|
||||
}
|
||||
|
||||
|
||||
|
||||
button[name="layerbutton"] {
|
||||
position: relative;
|
||||
margin: 0 auto;
|
||||
padding: 5px 12px;
|
||||
height: 30px;
|
||||
width: 150px;
|
||||
outline: none;
|
||||
text-decoration: none;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid rgba(22, 76, 167, 0.6);
|
||||
border-radius: 10px;
|
||||
color: #1d89ff;
|
||||
font-weight: 400;
|
||||
font-size: 20px;
|
||||
font-family: inherit;
|
||||
z-index: 0;
|
||||
overflow: hidden;
|
||||
transition: all 0.3s cubic-bezier(0.02, 0.01, 0.47, 1);
|
||||
}
|
||||
button[name="layerbutton"] span {
|
||||
color: #164ca7;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0.7px;
|
||||
}
|
||||
button[name="layerbutton"]:hover {
|
||||
animation: rotate 0.7s ease-in-out both;
|
||||
}
|
||||
button[name="layerbutton"]:hover span {
|
||||
animation: storm 0.7s ease-in-out both;
|
||||
animation-delay: 0.06s;
|
||||
}
|
||||
|
||||
|
||||
button[name="tablebutton"] {
|
||||
position: relative;
|
||||
margin: 0 auto;
|
||||
padding: 5px 12px;
|
||||
height: 25px;
|
||||
outline: none;
|
||||
text-decoration: none;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid rgba(22, 76, 167, 0.6);
|
||||
border-radius: 10px;
|
||||
color: #1d89ff;
|
||||
font-weight: 400;
|
||||
font-size: 20px;
|
||||
font-family: inherit;
|
||||
z-index: 0;
|
||||
overflow: hidden;
|
||||
transition: all 0.3s cubic-bezier(0.02, 0.01, 0.47, 1);
|
||||
}
|
||||
button[name="tablebutton"] span {
|
||||
color: #164ca7;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0.7px;
|
||||
}
|
||||
button[name="tablebutton"]:hover {
|
||||
animation: rotate 0.7s ease-in-out both;
|
||||
}
|
||||
button[name="tablebutton"]:hover span {
|
||||
animation: storm 0.7s ease-in-out both;
|
||||
animation-delay: 0.06s;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@keyframes rotate {
|
||||
0% {
|
||||
transform: rotate(0deg) translate3d(0, 0, 0);
|
||||
}
|
||||
25% {
|
||||
transform: rotate(3deg) translate3d(0, 0, 0);
|
||||
}
|
||||
50% {
|
||||
transform: rotate(-3deg) translate3d(0, 0, 0);
|
||||
}
|
||||
75% {
|
||||
transform: rotate(1deg) translate3d(0, 0, 0);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(0deg) translate3d(0, 0, 0);
|
||||
}
|
||||
}
|
||||
@keyframes storm {
|
||||
0% {
|
||||
transform: translate3d(0, 0, 0) translateZ(0);
|
||||
}
|
||||
25% {
|
||||
transform: translate3d(4px, 0, 0) translateZ(0);
|
||||
}
|
||||
50% {
|
||||
transform: translate3d(-3px, 0, 0) translateZ(0);
|
||||
}
|
||||
75% {
|
||||
transform: translate3d(2px, 0, 0) translateZ(0);
|
||||
}
|
||||
100% {
|
||||
transform: translate3d(0, 0, 0) translateZ(0);
|
||||
}
|
||||
}
|
||||
.btn-pill:before, .btn-pill:after {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
border-radius: 50%;
|
||||
background: #1d89ff;
|
||||
content: "";
|
||||
opacity: 0;
|
||||
transition: transform 0.15s cubic-bezier(0.02, 0.01, 0.47, 1), opacity 0.15s cubic-bezier(0.02, 0.01, 0.47, 1);
|
||||
z-index: -1;
|
||||
transform: translate(100%, -25%) translate3d(0, 0, 0);
|
||||
}
|
||||
.btn-pill:hover:before, .btn-pill:hover:after {
|
||||
opacity: 0.15;
|
||||
transition: transform 0.2s cubic-bezier(0.02, 0.01, 0.47, 1), opacity 0.2s cubic-bezier(0.02, 0.01, 0.47, 1);
|
||||
}
|
||||
.btn-pill:hover:before {
|
||||
transform: translate3d(50%, 0, 0) scale(0.9);
|
||||
}
|
||||
.btn-pill:hover:after {
|
||||
transform: translate(50%, 0) scale(1.1);
|
||||
}
|
||||
|
||||
.btn-shine {
|
||||
border: 1px solid;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
.btn-shine span {
|
||||
z-index: 20;
|
||||
}
|
||||
.btn-shine:after {
|
||||
background: #38ef7d;
|
||||
content: "";
|
||||
height: 155px;
|
||||
left: -75px;
|
||||
opacity: 0.4;
|
||||
position: absolute;
|
||||
top: -50px;
|
||||
transform: rotate(35deg);
|
||||
transition: all 550ms cubic-bezier(0.19, 1, 0.22, 1);
|
||||
width: 50px;
|
||||
z-index: -10;
|
||||
}
|
||||
.btn-shine:hover:after {
|
||||
left: 120%;
|
||||
transition: all 550ms cubic-bezier(0.19, 1, 0.22, 1);
|
||||
}
|
||||
|
||||
.btn-slide-line.center:after {
|
||||
left: 50%;
|
||||
}
|
||||
.btn-slide-line:after {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
left: auto;
|
||||
transition: 0.3s;
|
||||
content: "";
|
||||
width: 0;
|
||||
bottom: 0;
|
||||
height: 3px;
|
||||
background: #164ca7;
|
||||
}
|
||||
.btn-slide-line:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
.btn-slide-line:hover:after {
|
||||
width: 100%;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.inspire a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
233
src/main/resources/static/css/daterangepicker.css
Normal file
@ -0,0 +1,233 @@
|
||||
.daterangepicker {
|
||||
position: absolute;
|
||||
color: inherit;
|
||||
background: #fff;
|
||||
border-radius: 4px;
|
||||
width: 278px;
|
||||
padding: 4px;
|
||||
margin-top: 1px;
|
||||
top: 100px;
|
||||
left: 20px;
|
||||
z-index: 999999999;
|
||||
/* Calendars */ }
|
||||
.daterangepicker:before, .daterangepicker:after {
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
content: ''; }
|
||||
.daterangepicker:before {
|
||||
top: -7px;
|
||||
border-right: 7px solid transparent;
|
||||
border-left: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc; }
|
||||
.daterangepicker:after {
|
||||
top: -6px;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #fff;
|
||||
border-left: 6px solid transparent; }
|
||||
.daterangepicker.opensleft:before {
|
||||
right: 9px; }
|
||||
.daterangepicker.opensleft:after {
|
||||
right: 10px; }
|
||||
.daterangepicker.openscenter:before {
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: 0;
|
||||
margin-left: auto;
|
||||
margin-right: auto; }
|
||||
.daterangepicker.openscenter:after {
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: 0;
|
||||
margin-left: auto;
|
||||
margin-right: auto; }
|
||||
.daterangepicker.opensright:before {
|
||||
left: 9px; }
|
||||
.daterangepicker.opensright:after {
|
||||
left: 10px; }
|
||||
.daterangepicker.dropup {
|
||||
margin-top: -5px; }
|
||||
.daterangepicker.dropup:before {
|
||||
top: initial;
|
||||
bottom: -7px;
|
||||
border-bottom: initial;
|
||||
border-top: 7px solid #ccc; }
|
||||
.daterangepicker.dropup:after {
|
||||
top: initial;
|
||||
bottom: -6px;
|
||||
border-bottom: initial;
|
||||
border-top: 6px solid #fff; }
|
||||
.daterangepicker.dropdown-menu {
|
||||
max-width: none;
|
||||
z-index: 99999999; }
|
||||
.daterangepicker.single .ranges, .daterangepicker.single .calendar {
|
||||
float: none; }
|
||||
.daterangepicker.show-calendar .calendar {
|
||||
display: block; }
|
||||
.daterangepicker .calendar {
|
||||
display: none;
|
||||
max-width: 270px;
|
||||
margin: 4px; }
|
||||
.daterangepicker .calendar.single .calendar-table {
|
||||
border: none; }
|
||||
.daterangepicker .calendar th, .daterangepicker .calendar td {
|
||||
white-space: nowrap;
|
||||
text-align: center;
|
||||
min-width: 32px; }
|
||||
.daterangepicker .calendar-table {
|
||||
border: 1px solid #fff;
|
||||
padding: 4px;
|
||||
border-radius: 4px;
|
||||
background: #fff; }
|
||||
.daterangepicker table {
|
||||
width: 100%;
|
||||
margin: 0; }
|
||||
.daterangepicker td, .daterangepicker th {
|
||||
text-align: center;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid transparent;
|
||||
white-space: nowrap;
|
||||
cursor: pointer; }
|
||||
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
|
||||
background: #eee; }
|
||||
.daterangepicker td.week, .daterangepicker th.week {
|
||||
font-size: 80%;
|
||||
color: #ccc; }
|
||||
.daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date {
|
||||
background-color: #fff;
|
||||
border-color: transparent;
|
||||
color: #999; }
|
||||
.daterangepicker td.in-range {
|
||||
background-color: #ebf4f8;
|
||||
border-color: transparent;
|
||||
color: #000;
|
||||
border-radius: 0; }
|
||||
.daterangepicker td.start-date {
|
||||
border-radius: 4px 0 0 4px; }
|
||||
.daterangepicker td.end-date {
|
||||
border-radius: 0 4px 4px 0; }
|
||||
.daterangepicker td.start-date.end-date {
|
||||
border-radius: 4px; }
|
||||
.daterangepicker td.active, .daterangepicker td.active:hover {
|
||||
background-color: #357ebd;
|
||||
border-color: transparent;
|
||||
color: #fff; }
|
||||
.daterangepicker th.month {
|
||||
width: auto; }
|
||||
.daterangepicker td.disabled, .daterangepicker option.disabled {
|
||||
color: #999;
|
||||
cursor: not-allowed;
|
||||
text-decoration: line-through; }
|
||||
.daterangepicker select.monthselect, .daterangepicker select.yearselect {
|
||||
font-size: 12px;
|
||||
padding: 1px;
|
||||
height: auto;
|
||||
margin: 0;
|
||||
cursor: default; }
|
||||
.daterangepicker select.monthselect {
|
||||
margin-right: 2%;
|
||||
width: 56%; }
|
||||
.daterangepicker select.yearselect {
|
||||
width: 40%; }
|
||||
.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect {
|
||||
width: 50px;
|
||||
margin-bottom: 0; }
|
||||
.daterangepicker .input-mini {
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 4px;
|
||||
color: #555;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
display: block;
|
||||
vertical-align: middle;
|
||||
margin: 0 0 5px 0;
|
||||
padding: 0 6px 0 28px;
|
||||
width: 100%; }
|
||||
.daterangepicker .input-mini.active {
|
||||
border: 1px solid #08c;
|
||||
border-radius: 4px; }
|
||||
.daterangepicker .daterangepicker_input {
|
||||
position: relative; }
|
||||
.daterangepicker .daterangepicker_input i {
|
||||
position: absolute;
|
||||
left: 8px;
|
||||
top: 8px; }
|
||||
.daterangepicker .calendar-time {
|
||||
text-align: center;
|
||||
margin: 5px auto;
|
||||
line-height: 30px;
|
||||
position: relative;
|
||||
padding-left: 28px; }
|
||||
.daterangepicker .calendar-time select.disabled {
|
||||
color: #ccc;
|
||||
cursor: not-allowed; }
|
||||
|
||||
.ranges {
|
||||
font-size: 11px;
|
||||
float: none;
|
||||
margin: 4px;
|
||||
text-align: left; }
|
||||
.ranges ul {
|
||||
list-style: none;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
width: 100%; }
|
||||
.ranges li {
|
||||
font-size: 13px;
|
||||
background: #f5f5f5;
|
||||
border: 1px solid #f5f5f5;
|
||||
border-radius: 4px;
|
||||
color: #08c;
|
||||
padding: 3px 12px;
|
||||
margin-bottom: 8px;
|
||||
cursor: pointer; }
|
||||
.ranges li:hover {
|
||||
background: #08c;
|
||||
border: 1px solid #08c;
|
||||
color: #fff; }
|
||||
.ranges li.active {
|
||||
background: #08c;
|
||||
border: 1px solid #08c;
|
||||
color: #fff; }
|
||||
|
||||
/* Larger Screen Styling */
|
||||
@media (min-width: 564px) {
|
||||
.daterangepicker {
|
||||
width: auto; }
|
||||
.daterangepicker .ranges ul {
|
||||
width: 160px; }
|
||||
.daterangepicker.single .ranges ul {
|
||||
width: 100%; }
|
||||
.daterangepicker.single .calendar.left {
|
||||
clear: none; }
|
||||
.daterangepicker.single .ranges, .daterangepicker.single .calendar {
|
||||
float: left; }
|
||||
.daterangepicker .calendar.left {
|
||||
clear: left;
|
||||
margin-right: 0; }
|
||||
.daterangepicker .calendar.left .calendar-table {
|
||||
border-right: none;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0; }
|
||||
.daterangepicker .calendar.right {
|
||||
margin-left: 0; }
|
||||
.daterangepicker .calendar.right .calendar-table {
|
||||
border-left: none;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0; }
|
||||
.daterangepicker .left .daterangepicker_input {
|
||||
padding-right: 12px; }
|
||||
.daterangepicker .calendar.left .calendar-table {
|
||||
padding-right: 12px; }
|
||||
.daterangepicker .ranges, .daterangepicker .calendar {
|
||||
float: left; } }
|
||||
|
||||
@media (min-width: 730px) {
|
||||
.daterangepicker .ranges {
|
||||
width: auto;
|
||||
float: left; }
|
||||
.daterangepicker .calendar.left {
|
||||
clear: none; } }
|
||||
|
||||
244
src/main/resources/static/css/htmleaf-demo.css
Normal file
@ -0,0 +1,244 @@
|
||||
|
||||
[class^="icon-"], [class*=" icon-"] {
|
||||
font-family: 'icomoon';
|
||||
speak: none;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
line-height: 1;
|
||||
|
||||
/* Better Font Rendering =========== */
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
body, html { font-size: 100%; padding: 0; margin: 0;}
|
||||
|
||||
/* Reset */
|
||||
/**,
|
||||
*:after,
|
||||
*:before {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
*/
|
||||
/* Clearfix hack by Nicolas Gallagher: http://nicolasgallagher.com/micro-clearfix-hack/ */
|
||||
.clearfix:before,
|
||||
.clearfix:after {
|
||||
content: " ";
|
||||
display: table;
|
||||
}
|
||||
|
||||
.clearfix:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
body{
|
||||
font-family: "Microsoft YaHei","Segoe UI", "Lucida Grande", Helvetica, Arial,sans-serif;
|
||||
}
|
||||
a{ color: rgba(255, 255, 255, 0.6);outline: none;text-decoration: none;-webkit-transition: 0.2s;transition: 0.2s;}
|
||||
a:hover,a:focus{color:#74777b;text-decoration: none;}
|
||||
.htmleaf-container{
|
||||
margin-top: 5%;
|
||||
/* margin: 5% auto; */
|
||||
margin-left: 10%;
|
||||
margin-right: 5%;
|
||||
}
|
||||
|
||||
.bgcolor-1 { background: #f0efee; }
|
||||
.bgcolor-2 { background: #f9f9f9; }
|
||||
.bgcolor-3 { background: #e8e8e8; }/*light grey*/
|
||||
.bgcolor-4 { background: #2f3238; color: #fff; }/*Dark grey*/
|
||||
.bgcolor-5 { background: #df6659; color: #521e18; }/*pink1*/
|
||||
.bgcolor-6 { background: #2fa8ec; }/*sky blue*/
|
||||
.bgcolor-7 { background: #d0d6d6; }/*White tea*/
|
||||
.bgcolor-8 { background: #3d4444; color: #fff; }/*Dark grey2*/
|
||||
.bgcolor-9 { background: #ef3f52; color: #fff;}/*pink2*/
|
||||
.bgcolor-10{ background: #64448f; color: #fff;}/*Violet*/
|
||||
.bgcolor-11{ background: #3755ad; color: #fff;}/*dark blue*/
|
||||
.bgcolor-12{ background: #3498DB; color: #fff;}/*light blue*/
|
||||
.bgcolor-20{ background: #494A5F;color: #D5D6E2;}
|
||||
/* Header */
|
||||
.htmleaf-header{
|
||||
padding: 1em 190px 1em;
|
||||
letter-spacing: -1px;
|
||||
text-align: center;
|
||||
background: -webkit-linear-gradient(to right, rgb(44, 62, 80), rgb(166, 120, 136), rgb(196, 90, 84)); /* Chrome 10-25, Safari 5.1-6 */
|
||||
background: linear-gradient(to right, rgb(44, 62, 80), rgb(166, 120, 136), rgb(196, 90, 84)); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
|
||||
}
|
||||
.htmleaf-header h1 {
|
||||
color: #D5D6E2;
|
||||
font-weight: 600;
|
||||
font-size: 2em;
|
||||
line-height: 1;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.htmleaf-header h1 span {
|
||||
display: block;
|
||||
font-size: 60%;
|
||||
font-weight: 400;
|
||||
padding: 0.8em 0 0.5em 0;
|
||||
color: #c3c8cd;
|
||||
}
|
||||
/*nav*/
|
||||
.htmleaf-demo a{color: #fff;text-decoration: none;}
|
||||
.htmleaf-demo{width: 100%;padding-bottom: 1.2em;}
|
||||
.htmleaf-demo a{display: inline-block;margin: 0.5em;padding: 0.6em 1em;border: 3px solid #fff;font-weight: 700;}
|
||||
.htmleaf-demo a:hover{opacity: 0.6;}
|
||||
.htmleaf-demo a.current{background:#1d7db1;color: #fff; }
|
||||
/* Top Navigation Style */
|
||||
.htmleaf-links {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
white-space: nowrap;
|
||||
font-size: 1.5em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.htmleaf-links::after {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
margin-left: -1px;
|
||||
width: 2px;
|
||||
height: 100%;
|
||||
background: #dbdbdb;
|
||||
content: '';
|
||||
-webkit-transform: rotate3d(0,0,1,22.5deg);
|
||||
transform: rotate3d(0,0,1,22.5deg);
|
||||
}
|
||||
|
||||
.htmleaf-icon {
|
||||
display: inline-block;
|
||||
margin: 0.5em;
|
||||
padding: 0em 0;
|
||||
width: 1.5em;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.htmleaf-icon span {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.htmleaf-icon:before {
|
||||
margin: 0 5px;
|
||||
text-transform: none;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-variant: normal;
|
||||
font-family: 'icomoon';
|
||||
line-height: 1;
|
||||
speak: none;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
/* footer */
|
||||
.htmleaf-footer{width: 100%;padding-top: 10px;}
|
||||
.htmleaf-small{font-size: 0.8em;}
|
||||
.center{text-align: center;}
|
||||
/****/
|
||||
.related {
|
||||
color: #fff;
|
||||
background: #494A5F;
|
||||
text-align: center;
|
||||
font-size: 1.25em;
|
||||
padding: 0.5em 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.related > a {
|
||||
vertical-align: top;
|
||||
width: calc(100% - 20px);
|
||||
max-width: 340px;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
margin: 20px 10px;
|
||||
padding: 25px;
|
||||
font-family: "Microsoft YaHei","宋体","Segoe UI", "Lucida Grande", Helvetica, Arial,sans-serif, FreeSans, Arimo;
|
||||
}
|
||||
.related a {
|
||||
display: inline-block;
|
||||
text-align: left;
|
||||
margin: 20px auto;
|
||||
padding: 10px 20px;
|
||||
opacity: 0.8;
|
||||
-webkit-transition: opacity 0.3s;
|
||||
transition: opacity 0.3s;
|
||||
-webkit-backface-visibility: hidden;
|
||||
}
|
||||
|
||||
.related a:hover,
|
||||
.related a:active {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.related a img {
|
||||
max-width: 100%;
|
||||
opacity: 0.8;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.related a:hover img,
|
||||
.related a:active img {
|
||||
opacity: 1;
|
||||
}
|
||||
.related h3{font-family: "Microsoft YaHei", sans-serif;font-size: 1.2em}
|
||||
.related a h3 {
|
||||
font-size: 0.85em;
|
||||
font-weight: 300;
|
||||
margin-top: 0.15em;
|
||||
color: #fff;
|
||||
}
|
||||
/* icomoon */
|
||||
.icon-htmleaf-home-outline:before {
|
||||
content: "\e5000";
|
||||
}
|
||||
|
||||
.icon-htmleaf-arrow-forward-outline:before {
|
||||
content: "\e5001";
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
.htmleaf-header {
|
||||
padding: 2em 10% 2em;
|
||||
}
|
||||
.htmleaf-header h1 {
|
||||
font-size:1.4em;
|
||||
}
|
||||
.htmleaf-links{font-size: 1.4em}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 960px) {
|
||||
.htmleaf-header {
|
||||
padding: 2em 10% 2em;
|
||||
}
|
||||
.htmleaf-header h1 {
|
||||
font-size:1.2em;
|
||||
}
|
||||
.htmleaf-links{font-size: 1.2em}
|
||||
.related h3{font-size: 1em;}
|
||||
.related a h3 {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 766px) {
|
||||
.htmleaf-header h1 {
|
||||
font-size:1.3em;
|
||||
}
|
||||
.htmleaf-links{font-size: 1.3em}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 640px) {
|
||||
.htmleaf-header {
|
||||
padding: 2em 10% 2em;
|
||||
}
|
||||
.htmleaf-header h1 {
|
||||
font-size:1em;
|
||||
}
|
||||
.htmleaf-links{font-size: 1em}
|
||||
.related h3{font-size: 0.8em;}
|
||||
.related a h3 {
|
||||
font-size: 0.6em;
|
||||
}
|
||||
}
|
||||
111
src/main/resources/static/css/input.css
Normal file
@ -0,0 +1,111 @@
|
||||
input[type="text"][name="cssinput"] {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
height: calc(3em + 2px);
|
||||
margin: 0 0 1em;
|
||||
padding: 1em;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 10px;
|
||||
background: #fff;
|
||||
resize: none;
|
||||
outline: none;
|
||||
}
|
||||
input[type="text"][name="cssinput"][required]:focus {
|
||||
outline: none;
|
||||
border-color: #07f;
|
||||
box-shadow: 0 0 0 2px rgba(0,119,255,0.2);
|
||||
}
|
||||
input[type="text"][name="cssinput"][required]:focus + label[name="search_label"][placeholder]:before {
|
||||
color: #00bafa;
|
||||
}
|
||||
input[type="text"][name="cssinput"][required]:focus + label[name="search_label"][placeholder]:before,
|
||||
input[type="text"][name="cssinput"][required]:valid + label[name="search_label"][placeholder]:before {
|
||||
transition-duration: 0.2s;
|
||||
transform: translate(0, -1.5em) scale(0.9, 0.9);
|
||||
}
|
||||
input[type="text"][name="cssinput"][required]:invalid + label[name="search_label"][placeholder][alt]:before {
|
||||
content: attr(alt);
|
||||
}
|
||||
input[type="text"][name="cssinput"][required] + label[name="search_label"][placeholder] {
|
||||
display: block;
|
||||
pointer-events: none;
|
||||
line-height: 1.25em;
|
||||
margin-top: calc(-3em - 2px);
|
||||
margin-bottom: calc((3em - 1em) + 2px);
|
||||
}
|
||||
input[type="text"][name="cssinput"][required] + label[name="search_label"][placeholder]:before {
|
||||
content: attr(placeholder);
|
||||
display: inline-block;
|
||||
margin: 0 calc(1em + 2px);
|
||||
padding: 0 2px;
|
||||
color: #898989;
|
||||
white-space: nowrap;
|
||||
transition: 0.3s ease-in-out;
|
||||
background-image: linear-gradient(to bottom, #fff, #fff);
|
||||
background-size: 100% 5px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
|
||||
textarea[name="layertext"] {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
height: 5em;
|
||||
padding: 1em;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 10px;
|
||||
background: #fff;
|
||||
resize: none;
|
||||
outline: none;
|
||||
}
|
||||
textarea[name="layertext"]:focus {
|
||||
outline: none;
|
||||
border-color: #0077ff;
|
||||
box-shadow: 0 0 0 2px rgba(0, 119, 255, 0.2);
|
||||
}
|
||||
input[name="layerinput" ] {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
height: calc(3em + 2px);
|
||||
padding: 1em;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 10px;
|
||||
background: #fff;
|
||||
resize: none;
|
||||
outline: none;
|
||||
}
|
||||
input[name="layerinput" ]:focus {
|
||||
outline: none;
|
||||
border-color: #07f;
|
||||
box-shadow: 0 0 0 2px rgba(0,119,255,0.2);
|
||||
}
|
||||
input[name="layerinput" ]:focus + label[name="search_label"][placeholder]:before,
|
||||
input[name="layerinput" ]:valid + label[name="search_label"][placeholder]:before {
|
||||
transition-duration: 0.2s;
|
||||
transform: translate(0, -1.5em) scale(0.9, 0.9);
|
||||
}
|
||||
input[name="layerinput" ]:invalid + label[name="search_label"][placeholder][alt]:before {
|
||||
content: attr(alt);
|
||||
}
|
||||
input[name="layerinput" ] + label[name="search_label"][placeholder] {
|
||||
display: block;
|
||||
pointer-events: none;
|
||||
line-height: 1.25em;
|
||||
margin-top: calc(-3em - 2px);
|
||||
margin-bottom: calc((3em - 1em) + 2px);
|
||||
}
|
||||
input[name="layerinput" ] + label[name="search_label"][placeholder]:before {
|
||||
content: attr(placeholder);
|
||||
display: inline-block;
|
||||
margin: 0 calc(1em + 2px);
|
||||
padding: 0 2px;
|
||||
color: #898989;
|
||||
white-space: nowrap;
|
||||
transition: 0.3s ease-in-out;
|
||||
background-image: linear-gradient(to bottom, #fff, #fff);
|
||||
background-size: 100% 5px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
1
src/main/resources/static/css/laydate.css
Normal file
1
src/main/resources/static/css/layer.css
Normal file
1
src/main/resources/static/css/layui.css
Normal file
213
src/main/resources/static/css/login_styles.css
Normal file
@ -0,0 +1,213 @@
|
||||
body{
|
||||
margin:0;
|
||||
/*color:#6a6f8c;
|
||||
background: url(../img/bg4.jpg) no-repeat fixed center;*/
|
||||
background-size: cover;
|
||||
font:600 16px/18px 'Open Sans',sans-serif;
|
||||
}
|
||||
*,:after,:before{box-sizing:border-box}
|
||||
.clearfix:after,.clearfix:before{content:'';display:table}
|
||||
.clearfix:after{clear:both;display:block}
|
||||
a{color:inherit;text-decoration:none;}
|
||||
input, button {
|
||||
outline: none;
|
||||
border: none;
|
||||
}
|
||||
.login-wrap{
|
||||
width:100%;
|
||||
margin:auto;
|
||||
max-width:525px;
|
||||
min-height:670px;
|
||||
position:relative;
|
||||
border-radius: 20px;
|
||||
background:url(../img/bg2.jpg) no-repeat center;
|
||||
box-shadow:0 12px 15px 0 rgba(0,0,0,.24),0 17px 50px 0 rgba(0,0,0,.19);
|
||||
}
|
||||
.login-html{
|
||||
width:100%;
|
||||
height:100%;
|
||||
position:absolute;
|
||||
padding:90px 70px 50px 70px;
|
||||
border-radius: 20px;
|
||||
background:rgba(192,192,192,0.65);
|
||||
}
|
||||
.in-center{
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
-webkit-transform: translate(-50%, -50%);
|
||||
-moz-transform: translate(-50%, -50%);
|
||||
-ms-transform: translate(-50%, -50%);
|
||||
-o-transform: translate(-50%, -50%);
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.login-html .sign-in-htm,
|
||||
.login-html .sign-up-htm{
|
||||
top:0;
|
||||
left:0;
|
||||
right:0;
|
||||
bottom:0;
|
||||
position:absolute;
|
||||
-webkit-transform:rotateY(180deg);
|
||||
transform:rotateY(180deg);
|
||||
-webkit-backface-visibility:hidden;
|
||||
backface-visibility:hidden;
|
||||
-webkit-transition:all .4s linear;
|
||||
transition:all .4s linear;
|
||||
}
|
||||
.login-html .sign-in,
|
||||
.login-html .sign-up,
|
||||
.login-form .group .check{
|
||||
display:none;
|
||||
}
|
||||
.login-html .tab,
|
||||
.login-form .group .label,
|
||||
.login-form .group .button{
|
||||
text-transform:uppercase;
|
||||
}
|
||||
.login-html .tab{
|
||||
font-size:22px;
|
||||
margin-right:15px;
|
||||
padding-bottom:5px;
|
||||
margin:0 15px 10px 0;
|
||||
display:inline-block;
|
||||
border-bottom:2px solid transparent;
|
||||
}
|
||||
.login-html .sign-in:checked + .tab{
|
||||
color: #469c7e;
|
||||
border-color: #469c7e;
|
||||
}
|
||||
.login-html .sign-up:checked + .tab{
|
||||
color: #d76466;
|
||||
border-color: #d76466;
|
||||
}
|
||||
.login-form{
|
||||
min-height:345px;
|
||||
position:relative;
|
||||
-webkit-perspective:1000px;
|
||||
perspective:1000px;
|
||||
-webkit-transform-style:preserve-3d;
|
||||
transform-style:preserve-3d;
|
||||
}
|
||||
.login-form .group{
|
||||
margin-bottom:15px;
|
||||
}
|
||||
.login-form .group .label{
|
||||
width:100%;
|
||||
color: #012957;
|
||||
display:block;
|
||||
font-size:13px;
|
||||
}
|
||||
.login-form .group .input{
|
||||
width:100%;
|
||||
color:black;
|
||||
display:block;
|
||||
}
|
||||
.login-form .group .button,
|
||||
.login-form .group .reg_button{
|
||||
width:100%;
|
||||
color:#fff;
|
||||
display:block;
|
||||
}
|
||||
.login-form .group .input,
|
||||
.login-form .group .button,
|
||||
.login-form .group .reg_button{
|
||||
border:none;
|
||||
padding:15px 20px;
|
||||
border-radius:25px;
|
||||
background:rgba(255,255,255,.1);
|
||||
}
|
||||
.login-form .group input[data-type="password"]{
|
||||
text-security:circle;
|
||||
-webkit-text-security:circle;
|
||||
}
|
||||
|
||||
.login-form .group .reg_button{
|
||||
background: #d76466;
|
||||
}
|
||||
.login-form .group .button{
|
||||
background: #469c7e;
|
||||
}
|
||||
.login-form .group label .icon{
|
||||
width:15px;
|
||||
height:15px;
|
||||
border-radius:2px;
|
||||
position:relative;
|
||||
display:inline-block;
|
||||
background:rgba(255,255,255,.1);
|
||||
}
|
||||
.login-form .group label .icon:before,
|
||||
.login-form .group label .icon:after{
|
||||
content:'';
|
||||
width:10px;
|
||||
height:2px;
|
||||
background:#fff;
|
||||
position:absolute;
|
||||
-webkit-transition:all .2s ease-in-out 0s;
|
||||
transition:all .2s ease-in-out 0s;
|
||||
}
|
||||
.login-form .group label .icon:before{
|
||||
left:3px;
|
||||
width:5px;
|
||||
bottom:6px;
|
||||
-webkit-transform:scale(0) rotate(0);
|
||||
-ms-transform:scale(0) rotate(0);
|
||||
transform:scale(0) rotate(0);
|
||||
}
|
||||
.login-form .group label .icon:after{
|
||||
top:6px;
|
||||
right:0;
|
||||
-webkit-transform:scale(0) rotate(0);
|
||||
-ms-transform:scale(0) rotate(0);
|
||||
transform:scale(0) rotate(0);
|
||||
}
|
||||
.login-form .group .check:checked + label{
|
||||
color:#fff;
|
||||
}
|
||||
.login-form .group .check:checked + label .icon{
|
||||
background:#1161ee;
|
||||
}
|
||||
.login-form .group .check:checked + label .icon:before{
|
||||
-webkit-transform:scale(1) rotate(45deg);
|
||||
-ms-transform:scale(1) rotate(45deg);
|
||||
transform:scale(1) rotate(45deg);
|
||||
}
|
||||
.login-form .group .check:checked + label .icon:after{
|
||||
-webkit-transform:scale(1) rotate(-45deg);
|
||||
-ms-transform:scale(1) rotate(-45deg);
|
||||
transform:scale(1) rotate(-45deg);
|
||||
}
|
||||
.login-html .sign-in:checked + .tab + .sign-up + .tab + .login-form .sign-in-htm{
|
||||
-webkit-transform:rotate(0);
|
||||
-ms-transform:rotate(0);
|
||||
transform:rotate(0);
|
||||
}
|
||||
.login-html .sign-up:checked + .tab + .login-form .sign-up-htm{
|
||||
-webkit-transform:rotate(0);
|
||||
-ms-transform:rotate(0);
|
||||
transform:rotate(0);
|
||||
}
|
||||
.reg-hr{
|
||||
height:2px;
|
||||
margin:60px 0 50px 0;
|
||||
/*background:rgba(0,0,0,0.5);*/
|
||||
background: #cfb8b5;
|
||||
}
|
||||
.hr{
|
||||
height:2px;
|
||||
margin:60px 0 50px 0;
|
||||
/*background:rgba(0,0,0,0.5);*/
|
||||
background: #8dc4b2;
|
||||
}
|
||||
.foot-lnk{
|
||||
text-align:center;
|
||||
}
|
||||
.select{
|
||||
border-radius:30px;
|
||||
}
|
||||
.login-form .sign-up-htm .radio .radio1:checked + .stu-radio,
|
||||
.login-form .sign-up-htm .radio .radio2:checked + .tch-radio{
|
||||
color: #d76466;
|
||||
font-size:20px;
|
||||
}
|
||||
118
src/main/resources/static/css/menu.css
Normal file
@ -0,0 +1,118 @@
|
||||
.top{
|
||||
height: 40px;
|
||||
text-align: right;
|
||||
line-height: 40px;
|
||||
background: linear-gradient(to right, rgb(44, 62, 80), rgb(166, 120, 136), rgb(196, 90, 84));
|
||||
border-bottom: 2px solid #fff;
|
||||
color: #fff;
|
||||
padding-right: 38px;
|
||||
}
|
||||
.top_left{
|
||||
float: left;
|
||||
line-height: 120px;
|
||||
|
||||
}
|
||||
.top_left img{
|
||||
width: 300px;
|
||||
height: 100px;
|
||||
}
|
||||
.top_right{
|
||||
float: right;
|
||||
height: 40px;
|
||||
position: relative;
|
||||
}
|
||||
.top_right>div{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
|
||||
}
|
||||
.top_right ul{
|
||||
margin-top: 8px;
|
||||
}
|
||||
.top_right ul a li{
|
||||
margin-top: 3px;
|
||||
border-right: 0px solid #fefefe;
|
||||
width: 75px;
|
||||
height: 13px;
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
color: #ffffff;
|
||||
|
||||
}
|
||||
.top_right ul a{
|
||||
float: left;
|
||||
line-height: 13px;
|
||||
text-decoration:none
|
||||
|
||||
}
|
||||
.top_right ul a li:hover{
|
||||
color: #ffffff;
|
||||
}
|
||||
.top_right ul a:last-child li{/*去掉最后的边框*/
|
||||
border: none;
|
||||
}
|
||||
.show_list{
|
||||
position: relative;
|
||||
}
|
||||
.show_list .move_list{
|
||||
display: none;
|
||||
z-index: 103;
|
||||
top: 56px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
background: #9d7484;
|
||||
text-align: center;
|
||||
border-radius: 10px;
|
||||
cursor:pointer;
|
||||
}
|
||||
.show_list .move_list li{
|
||||
padding: 10px 0;
|
||||
width: auto;
|
||||
height: auto;
|
||||
color: #fff;
|
||||
}
|
||||
.top_right ul a .show_list{
|
||||
padding-bottom: 20px;
|
||||
border-right: none;
|
||||
}
|
||||
.show_list:hover .move_list{
|
||||
display: block;
|
||||
}
|
||||
.top_right ul a:nth-child(3){
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
.show_list .move_list li:hover{
|
||||
color: white;
|
||||
background: #685b6c;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
em,i {
|
||||
font-style: normal
|
||||
}
|
||||
li {
|
||||
list-style: none
|
||||
}
|
||||
a{
|
||||
font: 14px/24px Microsoft YaHei,Arial,\\5B8B\4F53,Arial Narrow;
|
||||
letter-spacing: 1.2px;
|
||||
color: #ffffff;
|
||||
text-decoration: none
|
||||
}
|
||||
a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
vertical-align: middle
|
||||
}
|
||||
input{
|
||||
outline: none;
|
||||
}
|
||||
button {
|
||||
cursor: pointer;
|
||||
border:none;
|
||||
outline: none;
|
||||
}
|
||||
1
src/main/resources/static/css/normalize.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block;}audio,canvas,video{display:inline-block;}audio:not([controls]){display:none;height:0;}[hidden]{display:none;}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;}body{margin:0;}a:focus{outline:thin dotted;}a:active,a:hover{outline:0;}h1{font-size:2em;margin:0.67em 0;}abbr[title]{border-bottom:1px dotted;}b,strong{font-weight:bold;}dfn{font-style:italic;}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0;}mark{background:#ff0;color:#000;}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em;}pre{white-space:pre-wrap;}q{quotes:"\201C" "\201D" "\2018" "\2019";}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}img{border:0;}svg:not(:root){overflow:hidden;}figure{margin:0;}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em;}legend{border:0;padding:0;}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0;}button,input{line-height:normal;}button,select{text-transform:none;}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}button[disabled],html input[disabled]{cursor:default;}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}textarea{overflow:auto;vertical-align:top;}table{border-collapse:collapse;border-spacing:0;}
|
||||
@ -0,0 +1,146 @@
|
||||
.navbar-vertical-left {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
height: 100%;
|
||||
width: 160px;
|
||||
overflow: hidden;
|
||||
border: none;
|
||||
border-radius: 0px;
|
||||
border-top-right-radius: 15px;
|
||||
border-bottom-right-radius: 15px;
|
||||
margin: 0;
|
||||
z-index: 999;
|
||||
}
|
||||
|
||||
.navbar-vertical-left ul.navbar-nav {
|
||||
width: 100%;
|
||||
height: 60%;
|
||||
display: table;
|
||||
margin: 0;
|
||||
}
|
||||
/*.navbar-vertical-left ul.active {*/
|
||||
/* background: #00adee;*/
|
||||
/*}*/
|
||||
|
||||
.navbar-vertical-left ul.navbar-nav:before,
|
||||
.navbar-vertical-left ul.navbar-nav:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
.navbar-vertical-left ul.navbar-nav > li {
|
||||
display: table-row;
|
||||
float: none;
|
||||
}
|
||||
|
||||
.navbar-vertical-left ul.navbar-nav > li > a {
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.navbar-vertical-left ul.navbar-nav > li > a > i.fa {
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
/* Colors */
|
||||
|
||||
.navbar-vertical-left {
|
||||
background: -webkit-linear-gradient(to bottom, rgb(44, 62, 80) , rgb(76, 93, 119) , rgb(253, 116, 108)); /* Chrome 10-25, Safari 5.1-6 */
|
||||
background: linear-gradient(to bottom, rgb(44, 62, 80), rgb(76, 93, 119), rgb(253, 116, 108)); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
|
||||
|
||||
color: #ecf0f1;
|
||||
}
|
||||
|
||||
.navbar-vertical-left ul.navbar-nav > li > a {
|
||||
color: #ecf0f1;
|
||||
}
|
||||
|
||||
.navbar-vertical-left ul.navbar-nav > li > a:hover,
|
||||
.navbar-vertical-left ul.navbar-nav > li > a:active {
|
||||
background: #451440;
|
||||
}
|
||||
|
||||
.navbar-vertical-left ul.navbar-nav > li > a.selected {
|
||||
background: #d35400;
|
||||
}
|
||||
.navbar-vertical-left ul.navbar-nav li.active {
|
||||
background: #60305b !important;
|
||||
}
|
||||
|
||||
/* Animation */
|
||||
|
||||
.navbar-vertical-left {
|
||||
-webkit-transition: -webkit-transform .3s;
|
||||
-moz-transition: -moz-transform .3s;
|
||||
transition: transform .3s;
|
||||
|
||||
-webkit-transform: translateX(-100px);
|
||||
-moz-transform: translateX(-100px);
|
||||
transform: translateX(-100px);
|
||||
}
|
||||
.navbar-vertical-left:hover {
|
||||
-webkit-transform: translateX(0px);
|
||||
-moz-transform: translateX(0px);
|
||||
transform: translateX(0px);
|
||||
}
|
||||
|
||||
.navbar-vertical-left ul.navbar-nav {
|
||||
-webkit-transition: -webkit-transform .3s;
|
||||
-moz-transition: -moz-transform .3s;
|
||||
transition: transform .3s;
|
||||
|
||||
-webkit-transform: translateX(100px);
|
||||
-moz-transform: translateX(100px);
|
||||
transform: translateX(100px);
|
||||
}
|
||||
|
||||
.navbar-vertical-left:hover ul.navbar-nav {
|
||||
-webkit-transform: translateX(0px);
|
||||
-moz-transform: translateX(0px);
|
||||
transform: translateX(0px);
|
||||
}
|
||||
|
||||
/* Mobile */
|
||||
|
||||
@media(max-width: 768px) {
|
||||
.navbar-vertical-left {
|
||||
position: fixed;
|
||||
top: auto;
|
||||
bottom: 0;
|
||||
height: auto;
|
||||
width: 100%;
|
||||
border-top-right-radius: 0px;
|
||||
border-bottom-right-radius: 0px;
|
||||
}
|
||||
|
||||
.navbar-vertical-left,
|
||||
.navbar-vertical-left ul.navbar-nav {
|
||||
-webkit-transition: none;
|
||||
-moz-transition: none;
|
||||
transition: none;
|
||||
-webkit-transform: none;
|
||||
-moz-transform: none;
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.navbar-vertical-left ul.navbar-nav > li {
|
||||
display: table-cell;
|
||||
}
|
||||
|
||||
.navbar-vertical-left ul.navbar-nav > li > a {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
height: 50px;
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
.navbar-vertical-left ul.navbar-nav > li > a > i.fa {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.navbar-vertical-left ul.navbar-nav > li > a > span {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
55
src/main/resources/static/css/select.css
Normal file
@ -0,0 +1,55 @@
|
||||
|
||||
.select {
|
||||
position: relative;
|
||||
min-width: 100px;
|
||||
}
|
||||
.select svg {
|
||||
position: absolute;
|
||||
right: 12px;
|
||||
top: calc(50% - 3px);
|
||||
width: 10px;
|
||||
height: 6px;
|
||||
stroke-width: 2px;
|
||||
stroke: #9098a9;
|
||||
fill: none;
|
||||
stroke-linecap: round;
|
||||
stroke-linejoin: round;
|
||||
pointer-events: none;
|
||||
}
|
||||
.select select {
|
||||
-webkit-appearance: none;
|
||||
padding: 7px 40px 7px 12px;
|
||||
width: 100%;
|
||||
border: 1px solid #e8eaed;
|
||||
border-radius: 10px;
|
||||
background: #fff;
|
||||
box-shadow: 0 1px 3px -2px #9098a9;
|
||||
cursor: pointer;
|
||||
font-family: inherit;
|
||||
font-size: 16px;
|
||||
transition: all 150ms ease;
|
||||
}
|
||||
.select select:required:invalid {
|
||||
color: #5a667f;
|
||||
}
|
||||
.select select option {
|
||||
color: #223254;
|
||||
}
|
||||
.select select option[value=""][disabled] {
|
||||
display: none;
|
||||
}
|
||||
.select select:focus {
|
||||
outline: none;
|
||||
border-color: #07f;
|
||||
box-shadow: 0 0 0 2px rgba(0,119,255,0.2);
|
||||
}
|
||||
.select select:hover + svg {
|
||||
stroke: #07f;
|
||||
}
|
||||
.sprites {
|
||||
position: absolute;
|
||||
width: 0;
|
||||
height: 0;
|
||||
pointer-events: none;
|
||||
user-select: none;
|
||||
}
|
||||
109
src/main/resources/static/css/table.css
Normal file
@ -0,0 +1,109 @@
|
||||
/* Table Styles */
|
||||
|
||||
.table-wrapper{
|
||||
margin: 10px 70px 70px;
|
||||
box-shadow: 0px 35px 50px rgba( 0, 0, 0, 0.2 );
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.fl-table {
|
||||
border-radius: 5px;
|
||||
font-size: 15px;
|
||||
border: none;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
white-space: nowrap;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.fl-table td, .fl-table th {
|
||||
text-align: center;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.fl-table td {
|
||||
border-right: 1px solid #f8f8f8;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.fl-table thead th {
|
||||
color: #ffffff;
|
||||
background: #4FC3A1;
|
||||
}
|
||||
|
||||
|
||||
.fl-table thead th:nth-child(odd) {
|
||||
color: #ffffff;
|
||||
background: #324960;
|
||||
}
|
||||
|
||||
.fl-table tr:nth-child(even) {
|
||||
background: #F8F8F8;
|
||||
}
|
||||
|
||||
/* Responsive */
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.fl-table {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
.table-wrapper:before{
|
||||
|
||||
display: block;
|
||||
text-align: right;
|
||||
font-size: 11px;
|
||||
color: white;
|
||||
padding: 0 0 10px;
|
||||
}
|
||||
.fl-table thead, .fl-table tbody, .fl-table thead th {
|
||||
display: block;
|
||||
}
|
||||
.fl-table thead th:last-child{
|
||||
border-bottom: none;
|
||||
}
|
||||
.fl-table thead {
|
||||
float: left;
|
||||
}
|
||||
.fl-table tbody {
|
||||
width: auto;
|
||||
position: relative;
|
||||
overflow-x: auto;
|
||||
}
|
||||
.fl-table td, .fl-table th {
|
||||
padding: 20px .625em .625em .625em;
|
||||
height: 60px;
|
||||
vertical-align: middle;
|
||||
box-sizing: border-box;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
width: 120px;
|
||||
font-size: 13px;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.fl-table thead th {
|
||||
text-align: left;
|
||||
border-bottom: 1px solid #f7f7f9;
|
||||
}
|
||||
.fl-table tbody tr {
|
||||
display: table-cell;
|
||||
}
|
||||
.fl-table tbody tr:nth-child(odd) {
|
||||
background: none;
|
||||
}
|
||||
.fl-table tr:nth-child(even) {
|
||||
background: transparent;
|
||||
}
|
||||
.fl-table tr td:nth-child(odd) {
|
||||
background: #F8F8F8;
|
||||
border-right: 1px solid #E6E4E4;
|
||||
}
|
||||
.fl-table tr td:nth-child(even) {
|
||||
border-right: 1px solid #E6E4E4;
|
||||
}
|
||||
.fl-table tbody td {
|
||||
display: block;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
1
src/main/resources/static/file/visitorCount.txt
Normal file
@ -0,0 +1 @@
|
||||
130
|
||||
|
After Width: | Height: | Size: 520 KiB |
BIN
src/main/resources/static/img/Lake.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
src/main/resources/static/img/apic30454.jpg
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
src/main/resources/static/img/apic31367.jpg
Normal file
|
After Width: | Height: | Size: 822 KiB |
BIN
src/main/resources/static/img/apic31402.jpg
Normal file
|
After Width: | Height: | Size: 217 KiB |
BIN
src/main/resources/static/img/bg.jpg
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
src/main/resources/static/img/bg2.jpg
Normal file
|
After Width: | Height: | Size: 159 KiB |
BIN
src/main/resources/static/img/bg3.jpg
Normal file
|
After Width: | Height: | Size: 313 KiB |
BIN
src/main/resources/static/img/bg4.jpg
Normal file
|
After Width: | Height: | Size: 164 KiB |
5
src/main/resources/static/img/dribbble.svg
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="24" height="24" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
|
||||
<path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 16.4156,18.4171C 16.02,16.48 15.5222,14.7333 14.9756,13.1744C 15.4822,13.102 16.0134,13.0607 16.5756,13.0607L 16.5956,13.0607L 16.5978,13.0607L 16.5978,13.0607C 17.5289,13.0607 18.5511,13.1765 19.66,13.4285C 19.2756,15.4913 18.0822,17.268 16.4156,18.4171 Z M 12,19.8025C 10.2644,19.8025 8.66222,19.2282 7.36445,18.2647C 7.64001,17.81 8.23335,16.938 9.17557,16.0362C 10.1445,15.1073 11.4822,14.1513 13.2289,13.5822C 13.8222,15.2467 14.36,17.1496 14.7689,19.2913C 13.9067,19.6198 12.9756,19.8025 12,19.8025 Z M 4.19779,12.0005C 4.19779,11.9638 4.20001,11.9262 4.20224,11.8878C 4.42446,11.896 4.70888,11.9033 5.05334,11.9033L 5.05556,11.9033C 6.62446,11.8929 9.36223,11.7618 12.1378,10.886C 12.2889,11.2165 12.4378,11.5609 12.5867,11.9187C 10.7333,12.5385 9.27333,13.5258 8.19334,14.5091C 7.15555,15.4558 6.45335,16.3931 6.04221,17.0193C 4.89557,15.6598 4.19779,13.9134 4.19779,12.0005 Z M 8.55334,5.01155C 9.09557,5.65133 10.18,7.05799 11.3378,9.2549C 8.98224,9.95599 6.61112,10.1204 5.17557,10.12C 5.13556,10.12 5.09557,10.12 5.05556,10.1196L 5.05334,10.1196C 4.81112,10.1196 4.60444,10.116 4.4311,10.1105C 4.99111,7.87068 6.52445,6.01556 8.55334,5.01155 Z M 12,4.19845C 13.84,4.19845 15.5289,4.84179 16.8645,5.91289C 15.8422,7.13712 14.4911,8.02424 13.0333,8.65022C 12.0089,6.66867 11.0178,5.25113 10.3422,4.38446C 10.8778,4.26578 11.4311,4.19845 12,4.19845 Z M 18.1267,7.18467C 19.1022,8.42355 19.7133,9.95778 19.7911,11.6331C 18.6622,11.3938 17.5956,11.2771 16.6,11.2771L 16.6,11.2767L 16.5933,11.2767C 15.7933,11.2767 15.0422,11.3493 14.3333,11.4749C 14.16,11.0531 13.9867,10.6482 13.8111,10.2602C 15.3889,9.56824 16.9022,8.58357 18.1267,7.18467 Z M 12,1.99999C 6.47556,2.00046 2.00001,6.47734 2.00001,12.0005C 2.00001,17.5227 6.47556,22 12,22C 17.5222,22 22,17.5227 22,12.0005C 22,6.47734 17.5222,2.00046 12,1.99999 Z "/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
BIN
src/main/resources/static/img/favicon.ico
Normal file
|
After Width: | Height: | Size: 264 KiB |
BIN
src/main/resources/static/img/img.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
8
src/main/resources/static/img/link.svg
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!--Generated by IJSVG (https://github.com/iconjar/IJSVG)-->
|
||||
<g stroke-linecap="round" stroke-width="2" stroke="#FFF" fill="none" stroke-linejoin="round">
|
||||
<path d="M10,13l-2.69032e-08,-3.59665e-08c1.65403,2.21125 4.78747,2.66297 6.99872,1.00893c0.191404,-0.143172 0.372295,-0.299884 0.541282,-0.468932l3,-3l2.12649e-07,-2.20172e-07c1.91839,-1.98626 1.86338,-5.15161 -0.122882,-7.07c-1.93762,-1.87141 -5.0095,-1.87141 -6.94712,4.25299e-07l-1.72,1.71"/>
|
||||
<path d="M14,11l-5.64091e-08,-7.54125e-08c-1.65403,-2.21125 -4.78747,-2.66297 -6.99872,-1.00893c-0.191404,0.143172 -0.372295,0.299884 -0.541282,0.468932l-3,3l-1.02237e-07,1.05854e-07c-1.91839,1.98626 -1.86338,5.15161 0.122882,7.07c1.93762,1.87141 5.0095,1.87141 6.94712,-2.04474e-07l1.71,-1.71"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 945 B |
6
src/main/resources/static/img/linkedin.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!--Generated by IJSVG (https://github.com/iconjar/IJSVG)-->
|
||||
<path d="M0,0h24v24h-24Z" fill="none"/>
|
||||
<path fill="#ffffff" d="M6.94,5l1.15814e-08,-2.34374e-05c-0.000539341,1.10457 -0.896407,1.99956 -2.00098,1.99902c-1.10457,-0.000539341 -1.99956,-0.896407 -1.99902,-2.00098l-1.16667e-08,2.36123e-05c0.000539244,-1.10457 0.896407,-1.99956 2.00098,-1.99902c1.10457,0.000539244 1.99956,0.896407 1.99902,2.00098Zm0.06,3.48h-4v12.52h4v-12.52Zm6.32,0h-3.98v12.52h3.94v-6.57c0,-3.66 4.77,-4 4.77,0v6.57h3.95v-7.93c0,-6.17 -7.06,-5.94 -8.72,-2.91l0.04,-1.68Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 728 B |
6
src/main/resources/static/img/logo_white.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="176.669px" height="202.261px" viewBox="0 0 176.669 202.261" enable-background="new 0 0 176.669 202.261" xml:space="preserve">
|
||||
<path fill="#FFFFFF" d="M172.389,196.708c0.08-0.093,0.162-0.186,0.239-0.282c0.118-0.147,0.229-0.298,0.336-0.449 c0.08-0.112,0.16-0.225,0.235-0.34c0.091-0.141,0.176-0.283,0.26-0.428c0.08-0.139,0.161-0.277,0.234-0.421 c0.065-0.127,0.126-0.257,0.187-0.387c0.076-0.164,0.15-0.33,0.219-0.501c0.047-0.118,0.089-0.238,0.132-0.359 c0.064-0.181,0.126-0.363,0.18-0.55c0.036-0.123,0.066-0.248,0.097-0.373c0.045-0.182,0.089-0.362,0.123-0.548 c0.028-0.15,0.048-0.302,0.069-0.452c0.021-0.161,0.047-0.321,0.061-0.485c0.019-0.192,0.024-0.387,0.03-0.581 c0.003-0.102,0.015-0.201,0.015-0.304c0-0.026-0.003-0.053-0.003-0.079c-0.002-0.216-0.018-0.432-0.033-0.646 c-0.009-0.113-0.012-0.229-0.022-0.341c-0.021-0.19-0.056-0.38-0.087-0.569c-0.023-0.138-0.041-0.276-0.069-0.411 c-0.029-0.139-0.07-0.275-0.106-0.413c-0.047-0.184-0.092-0.368-0.147-0.547c-0.03-0.091-0.067-0.18-0.099-0.27 c-0.078-0.223-0.158-0.444-0.252-0.658c-0.031-0.072-0.069-0.142-0.103-0.213c-0.106-0.229-0.216-0.454-0.339-0.674 c-0.01-0.017-0.017-0.036-0.027-0.054l-38.103-67.116c8.611-12.145,13.546-26.909,13.546-42.574 c0-40.556-32.994-73.549-73.55-73.549c-23.13,0-44.457,10.567-58.505,28.992C7.065,44.03,1.864,59.438,1.864,75.683v114.565 c0,5.455,4.421,9.879,9.877,9.879h153.186c0.026,0,0.053-0.004,0.08-0.004c0.217-0.002,0.434-0.018,0.65-0.033 c0.112-0.008,0.224-0.011,0.334-0.022c0.197-0.021,0.392-0.056,0.588-0.09c0.131-0.021,0.263-0.038,0.392-0.065 c0.148-0.031,0.296-0.075,0.444-0.114c0.172-0.045,0.346-0.086,0.514-0.14c0.104-0.033,0.207-0.076,0.311-0.113 c0.208-0.074,0.415-0.147,0.616-0.235c0.086-0.037,0.17-0.082,0.255-0.122c0.213-0.101,0.426-0.203,0.63-0.317 c0.021-0.012,0.042-0.021,0.063-0.032c0.08-0.046,0.152-0.099,0.231-0.146c0.176-0.107,0.352-0.215,0.52-0.331 c0.131-0.091,0.255-0.188,0.38-0.284c0.124-0.096,0.248-0.189,0.368-0.29c0.144-0.121,0.279-0.249,0.415-0.377 c0.092-0.088,0.186-0.175,0.275-0.267C172.13,197.002,172.261,196.856,172.389,196.708z M32.615,43.104 C42.896,29.621,58.494,21.889,75.41,21.889c29.661,0,53.794,24.132,53.794,53.794c0,8.06-1.787,15.793-5.036,22.765L97.713,51.849 c-2.692-4.746-8.724-6.405-13.468-3.713c-3.203,1.817-5,5.16-5,8.599c0,1.652,0.414,3.327,1.287,4.868l30.761,54.183 c-5.358,4.797-11.729,8.569-18.865,10.947c-5.175,1.723-7.972,7.314-6.249,12.494c1.723,5.176,7.316,7.973,12.492,6.248 c8.352-2.781,15.938-6.957,22.545-12.211l26.745,47.107H21.616V75.683C21.616,63.803,25.421,52.537,32.615,43.104z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
BIN
src/main/resources/static/img/zzpic17241.jpg
Normal file
|
After Width: | Height: | Size: 2.5 MiB |
1542
src/main/resources/static/js/daterangepicker.js
Normal file
4
src/main/resources/static/js/error.js
Normal file
@ -0,0 +1,4 @@
|
||||
// Parallax Code
|
||||
var scene = document.getElementById('scene');
|
||||
var parallax = new Parallax(scene);
|
||||
|
||||
2
src/main/resources/static/js/errorjs/parallax.min.js
vendored
Normal file
3
src/main/resources/static/js/errorjs/script.js
Normal file
@ -0,0 +1,3 @@
|
||||
// Parallax Code
|
||||
var scene = document.getElementById('scene');
|
||||
var parallax = new Parallax(scene);
|
||||
4
src/main/resources/static/js/jquery-1.11.2.min.js
vendored
Normal file
186
src/main/resources/static/js/jquery.gradientify.js
Normal file
@ -0,0 +1,186 @@
|
||||
/* Modernizr 2.8.3 (Custom Build) | MIT & BSD
|
||||
* Build: http://modernizr.com/download/#-cssgradients-prefixes
|
||||
*/
|
||||
;window.Modernizr=function(a,b,c){function u(a){i.cssText=a}function v(a,b){return u(l.join(a+";")+(b||""))}function w(a,b){return typeof a===b}function x(a,b){return!!~(""+a).indexOf(b)}function y(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:w(f,"function")?f.bind(d||b):f}return!1}var d="2.8.3",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k={}.toString,l=" -webkit- -moz- -o- -ms- ".split(" "),m={},n={},o={},p=[],q=p.slice,r,s={}.hasOwnProperty,t;!w(s,"undefined")&&!w(s.call,"undefined")?t=function(a,b){return s.call(a,b)}:t=function(a,b){return b in a&&w(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=q.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(q.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(q.call(arguments)))};return e}),m.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return u((a+"-webkit- ".split(" ").join(b+a)+l.join(c+a)).slice(0,-a.length)),x(i.backgroundImage,"gradient")};for(var z in m)t(m,z)&&(r=z.toLowerCase(),e[r]=m[z](),p.push((e[r]?"":"no-")+r));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)t(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof enableClasses!="undefined"&&enableClasses&&(f.className+=" "+(b?"":"no-")+a),e[a]=b}return e},u(""),h=j=null,e._version=d,e._prefixes=l,e}(this,this.document);
|
||||
|
||||
/**
|
||||
* jQuery Gradientify plugin 1.0.0
|
||||
*
|
||||
* Provides animating CSS gradients.
|
||||
* Based on http://opticalcortex.com/animating-css-gradients/ by Mike Byrne.
|
||||
*
|
||||
* @author Codefog <http://codefog.pl>
|
||||
* @author Kamil Kuzminski <kamil.kuzminski@codefog.pl>
|
||||
* @license MIT License
|
||||
* @see http://opticalcortex.com/animating-css-gradients/
|
||||
*/
|
||||
(function ($, window, document, undefined) {
|
||||
|
||||
'use strict';
|
||||
|
||||
// Create the defaults once
|
||||
var pluginName = 'gradientify',
|
||||
defaults = {
|
||||
angle: '0deg', // Gradient angle
|
||||
fps: 60, // Frames per second
|
||||
gradients: {}, // Gradients
|
||||
transition_time: 8 // Transition time
|
||||
};
|
||||
|
||||
// The actual plugin constructor
|
||||
function Plugin(element, options) {
|
||||
this.element = element;
|
||||
this.settings = $.extend({}, defaults, options);
|
||||
this._defaults = defaults;
|
||||
this._name = pluginName;
|
||||
this.init();
|
||||
}
|
||||
|
||||
// Avoid Plugin.prototype conflicts
|
||||
$.extend(Plugin.prototype, {
|
||||
init: function () {
|
||||
// Return if the browser does not support CSS gradients
|
||||
if (!Modernizr.cssgradients) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Where we are in the gradients array
|
||||
this.currentIndex = 0;
|
||||
|
||||
// What index of the gradients array is next
|
||||
this.nextIndex = 1;
|
||||
|
||||
// Steps counter
|
||||
this.steps_count = 0;
|
||||
|
||||
// Total amount of steps
|
||||
this.steps_total = Math.round(this.settings.transition_time * this.settings.fps);
|
||||
|
||||
// How much to alter each rgb value
|
||||
this.rgb_steps = {
|
||||
start: [0, 0, 0],
|
||||
stop: [0, 0, 0]
|
||||
};
|
||||
|
||||
// The current rgb values, gets altered by rgb steps on each interval
|
||||
this.rgb_values = {
|
||||
start: [0, 0, 0],
|
||||
stop: [0, 0, 0]
|
||||
};
|
||||
|
||||
// For looping through adding styles
|
||||
this.prefixes = ['-webkit-', '-moz-', '-o-', '-ms-', ''];
|
||||
|
||||
// Color helpers
|
||||
this.color1 = null;
|
||||
this.color2 = null;
|
||||
|
||||
// Initial step calculation
|
||||
this.calculateSteps();
|
||||
|
||||
// Launch the timer
|
||||
setInterval(function() {
|
||||
this.updateGradient.apply(this);
|
||||
}.bind(this), Math.round(1000 / this.settings.fps));
|
||||
},
|
||||
|
||||
/**
|
||||
* Set next current and next index of gradients array
|
||||
*
|
||||
* @param {int} num
|
||||
*
|
||||
* @returns {int}
|
||||
*/
|
||||
setNext: function (num) {
|
||||
return (num + 1 < this.settings.gradients.length) ? num + 1 : 0;
|
||||
},
|
||||
|
||||
/**
|
||||
* Work out how big each rgb step is
|
||||
*
|
||||
* @param {int} a
|
||||
* @param {int} b
|
||||
*
|
||||
* @return {int}
|
||||
*/
|
||||
calculateStepSize: function (a, b) {
|
||||
return (a - b) / this.steps_total;
|
||||
},
|
||||
|
||||
/**
|
||||
* Populate the rgb_values and rgb_steps objects
|
||||
*/
|
||||
calculateSteps: function () {
|
||||
for (var key in this.rgb_values) {
|
||||
if (this.rgb_values.hasOwnProperty(key)) {
|
||||
for (var i = 0; i < 3; i++) {
|
||||
this.rgb_values[key][i] = this.settings.gradients[this.currentIndex][key][i];
|
||||
this.rgb_steps[key][i] = this.calculateStepSize(this.settings.gradients[this.nextIndex][key][i], this.rgb_values[key][i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Update current RGB values, update DOM element with new CSS background
|
||||
*/
|
||||
updateGradient: function () {
|
||||
var i;
|
||||
|
||||
// Update the current RGB values
|
||||
for (var key in this.rgb_values) {
|
||||
if (this.rgb_values.hasOwnProperty(key)) {
|
||||
for (i = 0; i < 3; i++) {
|
||||
this.rgb_values[key][i] += this.rgb_steps[key][i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Generate CSS RGB values
|
||||
var t_color1 = 'rgb(' + (this.rgb_values.start[0] | 0) + ',' + (this.rgb_values.start[1] | 0) + ',' + (this.rgb_values.start[2] | 0) + ')';
|
||||
var t_color2 = 'rgb(' + (this.rgb_values.stop[0] | 0) + ',' + (this.rgb_values.stop[1] | 0) + ',' + (this.rgb_values.stop[2] | 0) + ')';
|
||||
|
||||
// Has anything changed on this iteration?
|
||||
if (t_color1 != this.color1 || t_color2 != this.color2) {
|
||||
|
||||
// Update cols strings
|
||||
this.color1 = t_color1;
|
||||
this.color2 = t_color2;
|
||||
|
||||
// Update DOM element style attribute
|
||||
$(this.element).css('background-image', '-webkit-gradient(linear, left bottom, right top, from(' + this.color1 + '), to(' + this.color2 + '))');
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
$(this.element).css('background-image', this.prefixes[i] + 'linear-gradient(' + this.settings.angle + ', ' + this.color1 + ', ' + this.color2 + ')');
|
||||
}
|
||||
}
|
||||
|
||||
// We did another step
|
||||
this.steps_count++;
|
||||
|
||||
// Did we do too many steps?
|
||||
if (this.steps_count > this.steps_total) {
|
||||
// Reset steps count
|
||||
this.steps_count = 0;
|
||||
|
||||
// Set new indexes
|
||||
this.currentIndex = this.setNext(this.currentIndex);
|
||||
this.nextIndex = this.setNext(this.nextIndex);
|
||||
|
||||
// Calculate steps
|
||||
this.calculateSteps();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// A really lightweight plugin wrapper around the constructor,
|
||||
// preventing against multiple instantiations
|
||||
$.fn[pluginName] = function (options) {
|
||||
return this.each(function () {
|
||||
if (!$.data(this, 'plugin_' + pluginName)) {
|
||||
$.data(this, 'plugin_' + pluginName, new Plugin(this, options));
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
})(jQuery, window, document);
|
||||
487
src/main/resources/static/js/layer.js
Normal file
@ -0,0 +1,487 @@
|
||||
/*! layer-v2.4 弹层组件 License LGPL http://layer.layui.com/ By 贤心 */
|
||||
;!function (a, b) {
|
||||
"use strict";
|
||||
var c, d, e = {
|
||||
getPath: function () {
|
||||
var a = document.scripts, b = a[a.length - 1], c = b.src;
|
||||
if (!b.getAttribute("merge")) return c.substring(0, c.lastIndexOf("/") + 1)
|
||||
}(),
|
||||
enter: function (a) {
|
||||
13 === a.keyCode && a.preventDefault()
|
||||
},
|
||||
config: {},
|
||||
end: {},
|
||||
btn: ["确定", "取消"],
|
||||
type: ["dialog", "page", "iframe", "loading", "tips"]
|
||||
}, f = {
|
||||
v: "2.4", ie6: !!a.ActiveXObject && !a.XMLHttpRequest, index: 0, path: e.getPath, config: function (a, b) {
|
||||
var d = 0;
|
||||
return a = a || {}, f.cache = e.config = c.extend(e.config, a), f.path = e.config.path || f.path, "string" == typeof a.extend && (a.extend = [a.extend]), f.use("skin/layer.css", a.extend && a.extend.length > 0 ? function g() {
|
||||
var c = a.extend;
|
||||
f.use(c[c[d] ? d : d - 1], d < c.length ? function () {
|
||||
return ++d, g
|
||||
}() : b)
|
||||
}() : b), this
|
||||
}, use: function (a, b, d) {
|
||||
var e = c("head")[0], a = a.replace(/\s/g, ""), g = /\.css$/.test(a),
|
||||
h = document.createElement(g ? "link" : "script"), i = "layui_layer_" + a.replace(/\.|\//g, "");
|
||||
return f.path ? (g && (h.rel = "stylesheet"), h[g ? "href" : "src"] = /^http:\/\//.test(a) ? a : f.path + a, h.id = i, c("#" + i)[0] || e.appendChild(h), function j() {
|
||||
(g ? 1989 === parseInt(c("#" + i).css("width")) : f[d || i]) ? function () {
|
||||
b && b();
|
||||
try {
|
||||
g || e.removeChild(h)
|
||||
} catch (a) {
|
||||
}
|
||||
}() : setTimeout(j, 100)
|
||||
}(), this) : void 0
|
||||
}, ready: function (a, b) {
|
||||
var d = "function" == typeof a;
|
||||
return d && (b = a), f.config(c.extend(e.config, function () {
|
||||
return d ? {} : {path: a}
|
||||
}()), b), this
|
||||
}, alert: function (a, b, d) {
|
||||
var e = "function" == typeof b;
|
||||
return e && (d = b), f.open(c.extend({content: a, yes: d}, e ? {} : b))
|
||||
}, confirm: function (a, b, d, g) {
|
||||
var h = "function" == typeof b;
|
||||
return h && (g = d, d = b), f.open(c.extend({content: a, btn: e.btn, yes: d, btn2: g}, h ? {} : b))
|
||||
}, msg: function (a, d, g) {
|
||||
var i = "function" == typeof d, j = e.config.skin, k = (j ? j + " " + j + "-msg" : "") || "layui-layer-msg",
|
||||
l = h.anim.length - 1;
|
||||
return i && (g = d), f.open(c.extend({
|
||||
content: a,
|
||||
time: 3e3,
|
||||
shade: !1,
|
||||
skin: k,
|
||||
title: !1,
|
||||
closeBtn: !1,
|
||||
btn: !1,
|
||||
end: g
|
||||
}, i && !e.config.skin ? {skin: k + " layui-layer-hui", shift: l} : function () {
|
||||
return d = d || {}, (-1 === d.icon || d.icon === b && !e.config.skin) && (d.skin = k + " " + (d.skin || "layui-layer-hui")), d
|
||||
}()))
|
||||
}, load: function (a, b) {
|
||||
return f.open(c.extend({type: 3, icon: a || 0, shade: .01}, b))
|
||||
}, tips: function (a, b, d) {
|
||||
return f.open(c.extend({
|
||||
type: 4,
|
||||
content: [a, b],
|
||||
closeBtn: !1,
|
||||
time: 3e3,
|
||||
shade: !1,
|
||||
fix: !1,
|
||||
maxWidth: 210
|
||||
}, d))
|
||||
}
|
||||
}, g = function (a) {
|
||||
var b = this;
|
||||
b.index = ++f.index, b.config = c.extend({}, b.config, e.config, a), b.creat()
|
||||
};
|
||||
g.pt = g.prototype;
|
||||
var h = ["layui-layer", ".layui-layer-title", ".layui-layer-main", ".layui-layer-dialog", "layui-layer-iframe", "layui-layer-content", "layui-layer-btn", "layui-layer-close"];
|
||||
h.anim = ["layer-anim", "layer-anim-01", "layer-anim-02", "layer-anim-03", "layer-anim-04", "layer-anim-05", "layer-anim-06"], g.pt.config = {
|
||||
type: 0,
|
||||
shade: .3,
|
||||
fix: !0,
|
||||
move: h[1],
|
||||
title: "信息",
|
||||
offset: "auto",
|
||||
area: "auto",
|
||||
closeBtn: 1,
|
||||
time: 0,
|
||||
zIndex: 19891014,
|
||||
maxWidth: 360,
|
||||
shift: 0,
|
||||
icon: -1,
|
||||
scrollbar: !0,
|
||||
tips: 2
|
||||
}, g.pt.vessel = function (a, b) {
|
||||
var c = this, d = c.index, f = c.config, g = f.zIndex + d, i = "object" == typeof f.title,
|
||||
j = f.maxmin && (1 === f.type || 2 === f.type),
|
||||
k = f.title ? '<div class="layui-layer-title" style="' + (i ? f.title[1] : "") + '">' + (i ? f.title[0] : f.title) + "</div>" : "";
|
||||
return f.zIndex = g, b([f.shade ? '<div class="layui-layer-shade" id="layui-layer-shade' + d + '" times="' + d + '" style="' + ("z-index:" + (g - 1) + "; background-color:" + (f.shade[1] || "#000") + "; opacity:" + (f.shade[0] || f.shade) + "; filter:alpha(opacity=" + (100 * f.shade[0] || 100 * f.shade) + ");") + '"></div>' : "", '<div class="' + h[0] + (" layui-layer-" + e.type[f.type]) + (0 != f.type && 2 != f.type || f.shade ? "" : " layui-layer-border") + " " + (f.skin || "") + '" id="' + h[0] + d + '" type="' + e.type[f.type] + '" times="' + d + '" showtime="' + f.time + '" conType="' + (a ? "object" : "string") + '" style="z-index: ' + g + "; width:" + f.area[0] + ";height:" + f.area[1] + (f.fix ? "" : ";position:absolute;") + '">' + (a && 2 != f.type ? "" : k) + '<div id="' + (f.id || "") + '" class="layui-layer-content' + (0 == f.type && -1 !== f.icon ? " layui-layer-padding" : "") + (3 == f.type ? " layui-layer-loading" + f.icon : "") + '">' + (0 == f.type && -1 !== f.icon ? '<i class="layui-layer-ico layui-layer-ico' + f.icon + '"></i>' : "") + (1 == f.type && a ? "" : f.content || "") + '</div><span class="layui-layer-setwin">' + function () {
|
||||
var a = j ? '<a class="layui-layer-min" href="javascript:;"><cite></cite></a><a class="layui-layer-ico layui-layer-max" href="javascript:;"></a>' : "";
|
||||
return f.closeBtn && (a += '<a class="layui-layer-ico ' + h[7] + " " + h[7] + (f.title ? f.closeBtn : 4 == f.type ? "1" : "2") + '" href="javascript:;"></a>'), a
|
||||
}() + "</span>" + (f.btn ? function () {
|
||||
var a = "";
|
||||
"string" == typeof f.btn && (f.btn = [f.btn]);
|
||||
for (var b = 0, c = f.btn.length; c > b; b++) a += '<a class="' + h[6] + b + '">' + f.btn[b] + "</a>";
|
||||
return '<div class="' + h[6] + '">' + a + "</div>"
|
||||
}() : "") + "</div>"], k), c
|
||||
}, g.pt.creat = function () {
|
||||
var a = this, b = a.config, g = a.index, i = b.content, j = "object" == typeof i;
|
||||
if (!c("#" + b.id)[0]) {
|
||||
switch ("string" == typeof b.area && (b.area = "auto" === b.area ? ["", ""] : [b.area, ""]), b.type) {
|
||||
case 0:
|
||||
b.btn = "btn" in b ? b.btn : e.btn[0], f.closeAll("dialog");
|
||||
break;
|
||||
case 2:
|
||||
var i = b.content = j ? b.content : [b.content || "http://layer.layui.com", "auto"];
|
||||
b.content = '<iframe scrolling="' + (b.content[1] || "auto") + '" allowtransparency="true" id="' + h[4] + g + '" name="' + h[4] + g + '" onload="this.className=\'\';" class="layui-layer-load" frameborder="0" src="' + b.content[0] + '"></iframe>';
|
||||
break;
|
||||
case 3:
|
||||
b.title = !1, b.closeBtn = !1, -1 === b.icon && 0 === b.icon, f.closeAll("loading");
|
||||
break;
|
||||
case 4:
|
||||
j || (b.content = [b.content, "body"]), b.follow = b.content[1], b.content = b.content[0] + '<i class="layui-layer-TipsG"></i>', b.title = !1, b.tips = "object" == typeof b.tips ? b.tips : [b.tips, !0], b.tipsMore || f.closeAll("tips")
|
||||
}
|
||||
a.vessel(j, function (d, e) {
|
||||
c("body").append(d[0]), j ? function () {
|
||||
2 == b.type || 4 == b.type ? function () {
|
||||
c("body").append(d[1])
|
||||
}() : function () {
|
||||
i.parents("." + h[0])[0] || (i.show().addClass("layui-layer-wrap").wrap(d[1]), c("#" + h[0] + g).find("." + h[5]).before(e))
|
||||
}()
|
||||
}() : c("body").append(d[1]), a.layero = c("#" + h[0] + g), b.scrollbar || h.html.css("overflow", "hidden").attr("layer-full", g)
|
||||
}).auto(g), 2 == b.type && f.ie6 && a.layero.find("iframe").attr("src", i[0]), c(document).off("keydown", e.enter).on("keydown", e.enter), a.layero.on("keydown", function (a) {
|
||||
c(document).off("keydown", e.enter)
|
||||
}), 4 == b.type ? a.tips() : a.offset(), b.fix && d.on("resize", function () {
|
||||
a.offset(), (/^\d+%$/.test(b.area[0]) || /^\d+%$/.test(b.area[1])) && a.auto(g), 4 == b.type && a.tips()
|
||||
}), b.time <= 0 || setTimeout(function () {
|
||||
f.close(a.index)
|
||||
}, b.time), a.move().callback(), h.anim[b.shift] && a.layero.addClass(h.anim[b.shift])
|
||||
}
|
||||
}, g.pt.auto = function (a) {
|
||||
function b(a) {
|
||||
a = g.find(a), a.height(i[1] - j - k - 2 * (0 | parseFloat(a.css("padding"))))
|
||||
}
|
||||
|
||||
var e = this, f = e.config, g = c("#" + h[0] + a);
|
||||
"" === f.area[0] && f.maxWidth > 0 && (/MSIE 7/.test(navigator.userAgent) && f.btn && g.width(g.innerWidth()), g.outerWidth() > f.maxWidth && g.width(f.maxWidth));
|
||||
var i = [g.innerWidth(), g.innerHeight()], j = g.find(h[1]).outerHeight() || 0,
|
||||
k = g.find("." + h[6]).outerHeight() || 0;
|
||||
switch (f.type) {
|
||||
case 2:
|
||||
b("iframe");
|
||||
break;
|
||||
default:
|
||||
"" === f.area[1] ? f.fix && i[1] >= d.height() && (i[1] = d.height(), b("." + h[5])) : b("." + h[5])
|
||||
}
|
||||
return e
|
||||
}, g.pt.offset = function () {
|
||||
var a = this, b = a.config, c = a.layero, e = [c.outerWidth(), c.outerHeight()],
|
||||
f = "object" == typeof b.offset;
|
||||
a.offsetTop = (d.height() - e[1]) / 2, a.offsetLeft = (d.width() - e[0]) / 2, f ? (a.offsetTop = b.offset[0], a.offsetLeft = b.offset[1] || a.offsetLeft) : "auto" !== b.offset && (a.offsetTop = b.offset, "rb" === b.offset && (a.offsetTop = d.height() - e[1], a.offsetLeft = d.width() - e[0])), b.fix || (a.offsetTop = /%$/.test(a.offsetTop) ? d.height() * parseFloat(a.offsetTop) / 100 : parseFloat(a.offsetTop), a.offsetLeft = /%$/.test(a.offsetLeft) ? d.width() * parseFloat(a.offsetLeft) / 100 : parseFloat(a.offsetLeft), a.offsetTop += d.scrollTop(), a.offsetLeft += d.scrollLeft()), c.css({
|
||||
top: a.offsetTop,
|
||||
left: a.offsetLeft
|
||||
})
|
||||
}, g.pt.tips = function () {
|
||||
var a = this, b = a.config, e = a.layero, f = [e.outerWidth(), e.outerHeight()], g = c(b.follow);
|
||||
g[0] || (g = c("body"));
|
||||
var i = {width: g.outerWidth(), height: g.outerHeight(), top: g.offset().top, left: g.offset().left},
|
||||
j = e.find(".layui-layer-TipsG"), k = b.tips[0];
|
||||
b.tips[1] || j.remove(), i.autoLeft = function () {
|
||||
i.left + f[0] - d.width() > 0 ? (i.tipLeft = i.left + i.width - f[0], j.css({
|
||||
right: 12,
|
||||
left: "auto"
|
||||
})) : i.tipLeft = i.left
|
||||
}, i.where = [function () {
|
||||
i.autoLeft(), i.tipTop = i.top - f[1] - 10, j.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color", b.tips[1])
|
||||
}, function () {
|
||||
i.tipLeft = i.left + i.width + 10, i.tipTop = i.top, j.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color", b.tips[1])
|
||||
}, function () {
|
||||
i.autoLeft(), i.tipTop = i.top + i.height + 10, j.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color", b.tips[1])
|
||||
}, function () {
|
||||
i.tipLeft = i.left - f[0] - 10, i.tipTop = i.top, j.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color", b.tips[1])
|
||||
}], i.where[k - 1](), 1 === k ? i.top - (d.scrollTop() + f[1] + 16) < 0 && i.where[2]() : 2 === k ? d.width() - (i.left + i.width + f[0] + 16) > 0 || i.where[3]() : 3 === k ? i.top - d.scrollTop() + i.height + f[1] + 16 - d.height() > 0 && i.where[0]() : 4 === k && f[0] + 16 - i.left > 0 && i.where[1](), e.find("." + h[5]).css({
|
||||
"background-color": b.tips[1],
|
||||
"padding-right": b.closeBtn ? "30px" : ""
|
||||
}), e.css({left: i.tipLeft - (b.fix ? d.scrollLeft() : 0), top: i.tipTop - (b.fix ? d.scrollTop() : 0)})
|
||||
}, g.pt.move = function () {
|
||||
var a = this, b = a.config, e = {
|
||||
setY: 0, moveLayer: function () {
|
||||
var a = e.layero, b = parseInt(a.css("margin-left")), c = parseInt(e.move.css("left"));
|
||||
0 === b || (c -= b), "fixed" !== a.css("position") && (c -= a.parent().offset().left, e.setY = 0), a.css({
|
||||
left: c,
|
||||
top: parseInt(e.move.css("top")) - e.setY
|
||||
})
|
||||
}
|
||||
}, f = a.layero.find(b.move);
|
||||
return b.move && f.attr("move", "ok"), f.css({cursor: b.move ? "move" : "auto"}), c(b.move).on("mousedown", function (a) {
|
||||
if (a.preventDefault(), "ok" === c(this).attr("move")) {
|
||||
e.ismove = !0, e.layero = c(this).parents("." + h[0]);
|
||||
var f = e.layero.offset().left, g = e.layero.offset().top, i = e.layero.outerWidth() - 6,
|
||||
j = e.layero.outerHeight() - 6;
|
||||
c("#layui-layer-moves")[0] || c("body").append('<div id="layui-layer-moves" class="layui-layer-moves" style="left:' + f + "px; top:" + g + "px; width:" + i + "px; height:" + j + 'px; z-index:2147483584"></div>'), e.move = c("#layui-layer-moves"), b.moveType && e.move.css({visibility: "hidden"}), e.moveX = a.pageX - e.move.position().left, e.moveY = a.pageY - e.move.position().top, "fixed" !== e.layero.css("position") || (e.setY = d.scrollTop())
|
||||
}
|
||||
}), c(document).mousemove(function (a) {
|
||||
if (e.ismove) {
|
||||
var c = a.pageX - e.moveX, f = a.pageY - e.moveY;
|
||||
if (a.preventDefault(), !b.moveOut) {
|
||||
e.setY = d.scrollTop();
|
||||
var g = d.width() - e.move.outerWidth(), h = e.setY;
|
||||
0 > c && (c = 0), c > g && (c = g), h > f && (f = h), f > d.height() - e.move.outerHeight() + e.setY && (f = d.height() - e.move.outerHeight() + e.setY)
|
||||
}
|
||||
e.move.css({left: c, top: f}), b.moveType && e.moveLayer(), c = f = g = h = null
|
||||
}
|
||||
}).mouseup(function () {
|
||||
try {
|
||||
e.ismove && (e.moveLayer(), e.move.remove(), b.moveEnd && b.moveEnd()), e.ismove = !1
|
||||
} catch (a) {
|
||||
e.ismove = !1
|
||||
}
|
||||
}), a
|
||||
}, g.pt.callback = function () {
|
||||
function a() {
|
||||
var a = g.cancel && g.cancel(b.index, d);
|
||||
a === !1 || f.close(b.index)
|
||||
}
|
||||
|
||||
var b = this, d = b.layero, g = b.config;
|
||||
b.openLayer(), g.success && (2 == g.type ? d.find("iframe").on("load", function () {
|
||||
g.success(d, b.index)
|
||||
}) : g.success(d, b.index)), f.ie6 && b.IE6(d), d.find("." + h[6]).children("a").on("click", function () {
|
||||
var a = c(this).index();
|
||||
if (0 === a) g.yes ? g.yes(b.index, d) : g.btn1 ? g.btn1(b.index, d) : f.close(b.index); else {
|
||||
var e = g["btn" + (a + 1)] && g["btn" + (a + 1)](b.index, d);
|
||||
e === !1 || f.close(b.index)
|
||||
}
|
||||
}), d.find("." + h[7]).on("click", a), g.shadeClose && c("#layui-layer-shade" + b.index).on("click", function () {
|
||||
f.close(b.index)
|
||||
}), d.find(".layui-layer-min").on("click", function () {
|
||||
var a = g.min && g.min(d);
|
||||
a === !1 || f.min(b.index, g)
|
||||
}), d.find(".layui-layer-max").on("click", function () {
|
||||
c(this).hasClass("layui-layer-maxmin") ? (f.restore(b.index), g.restore && g.restore(d)) : (f.full(b.index, g), setTimeout(function () {
|
||||
g.full && g.full(d)
|
||||
}, 100))
|
||||
}), g.end && (e.end[b.index] = g.end)
|
||||
}, e.reselect = function () {
|
||||
c.each(c("select"), function (a, b) {
|
||||
var d = c(this);
|
||||
d.parents("." + h[0])[0] || 1 == d.attr("layer") && c("." + h[0]).length < 1 && d.removeAttr("layer").show(), d = null
|
||||
})
|
||||
}, g.pt.IE6 = function (a) {
|
||||
function b() {
|
||||
a.css({top: f + (e.config.fix ? d.scrollTop() : 0)})
|
||||
}
|
||||
|
||||
var e = this, f = a.offset().top;
|
||||
b(), d.scroll(b), c("select").each(function (a, b) {
|
||||
var d = c(this);
|
||||
d.parents("." + h[0])[0] || "none" === d.css("display") || d.attr({layer: "1"}).hide(), d = null
|
||||
})
|
||||
}, g.pt.openLayer = function () {
|
||||
var a = this;
|
||||
f.zIndex = a.config.zIndex, f.setTop = function (a) {
|
||||
var b = function () {
|
||||
f.zIndex++, a.css("z-index", f.zIndex + 1)
|
||||
};
|
||||
return f.zIndex = parseInt(a[0].style.zIndex), a.on("mousedown", b), f.zIndex
|
||||
}
|
||||
}, e.record = function (a) {
|
||||
var b = [a.width(), a.height(), a.position().top, a.position().left + parseFloat(a.css("margin-left"))];
|
||||
a.find(".layui-layer-max").addClass("layui-layer-maxmin"), a.attr({area: b})
|
||||
}, e.rescollbar = function (a) {
|
||||
h.html.attr("layer-full") == a && (h.html[0].style.removeProperty ? h.html[0].style.removeProperty("overflow") : h.html[0].style.removeAttribute("overflow"), h.html.removeAttr("layer-full"))
|
||||
}, a.layer = f, f.getChildFrame = function (a, b) {
|
||||
return b = b || c("." + h[4]).attr("times"), c("#" + h[0] + b).find("iframe").contents().find(a)
|
||||
}, f.getFrameIndex = function (a) {
|
||||
return c("#" + a).parents("." + h[4]).attr("times")
|
||||
}, f.iframeAuto = function (a) {
|
||||
if (a) {
|
||||
var b = f.getChildFrame("html", a).outerHeight(), d = c("#" + h[0] + a),
|
||||
e = d.find(h[1]).outerHeight() || 0, g = d.find("." + h[6]).outerHeight() || 0;
|
||||
d.css({height: b + e + g}), d.find("iframe").css({height: b})
|
||||
}
|
||||
}, f.iframeSrc = function (a, b) {
|
||||
c("#" + h[0] + a).find("iframe").attr("src", b)
|
||||
}, f.style = function (a, b) {
|
||||
var d = c("#" + h[0] + a), f = d.attr("type"), g = d.find(h[1]).outerHeight() || 0,
|
||||
i = d.find("." + h[6]).outerHeight() || 0;
|
||||
(f === e.type[1] || f === e.type[2]) && (d.css(b), f === e.type[2] && d.find("iframe").css({height: parseFloat(b.height) - g - i}))
|
||||
}, f.min = function (a, b) {
|
||||
var d = c("#" + h[0] + a), g = d.find(h[1]).outerHeight() || 0;
|
||||
e.record(d), f.style(a, {
|
||||
width: 180,
|
||||
height: g,
|
||||
overflow: "hidden"
|
||||
}), d.find(".layui-layer-min").hide(), "page" === d.attr("type") && d.find(h[4]).hide(), e.rescollbar(a)
|
||||
}, f.restore = function (a) {
|
||||
var b = c("#" + h[0] + a), d = b.attr("area").split(",");
|
||||
b.attr("type");
|
||||
f.style(a, {
|
||||
width: parseFloat(d[0]),
|
||||
height: parseFloat(d[1]),
|
||||
top: parseFloat(d[2]),
|
||||
left: parseFloat(d[3]),
|
||||
overflow: "visible"
|
||||
}), b.find(".layui-layer-max").removeClass("layui-layer-maxmin"), b.find(".layui-layer-min").show(), "page" === b.attr("type") && b.find(h[4]).show(), e.rescollbar(a)
|
||||
}, f.full = function (a) {
|
||||
var b, g = c("#" + h[0] + a);
|
||||
e.record(g), h.html.attr("layer-full") || h.html.css("overflow", "hidden").attr("layer-full", a), clearTimeout(b), b = setTimeout(function () {
|
||||
var b = "fixed" === g.css("position");
|
||||
f.style(a, {
|
||||
top: b ? 0 : d.scrollTop(),
|
||||
left: b ? 0 : d.scrollLeft(),
|
||||
width: d.width(),
|
||||
height: d.height()
|
||||
}), g.find(".layui-layer-min").hide()
|
||||
}, 100)
|
||||
}, f.title = function (a, b) {
|
||||
var d = c("#" + h[0] + (b || f.index)).find(h[1]);
|
||||
d.html(a)
|
||||
}, f.close = function (a) {
|
||||
var b = c("#" + h[0] + a), d = b.attr("type");
|
||||
if (b[0]) {
|
||||
if (d === e.type[1] && "object" === b.attr("conType")) {
|
||||
b.children(":not(." + h[5] + ")").remove();
|
||||
for (var g = 0; 2 > g; g++) b.find(".layui-layer-wrap").unwrap().hide()
|
||||
} else {
|
||||
if (d === e.type[2]) try {
|
||||
var i = c("#" + h[4] + a)[0];
|
||||
i.contentWindow.document.write(""), i.contentWindow.close(), b.find("." + h[5])[0].removeChild(i)
|
||||
} catch (j) {
|
||||
}
|
||||
b[0].innerHTML = "", b.remove()
|
||||
}
|
||||
c("#layui-layer-moves, #layui-layer-shade" + a).remove(), f.ie6 && e.reselect(), e.rescollbar(a), c(document).off("keydown", e.enter), "function" == typeof e.end[a] && e.end[a](), delete e.end[a]
|
||||
}
|
||||
}, f.closeAll = function (a) {
|
||||
c.each(c("." + h[0]), function () {
|
||||
var b = c(this), d = a ? b.attr("type") === a : 1;
|
||||
d && f.close(b.attr("times")), d = null
|
||||
})
|
||||
};
|
||||
var i = f.cache || {}, j = function (a) {
|
||||
return i.skin ? " " + i.skin + " " + i.skin + "-" + a : ""
|
||||
};
|
||||
f.prompt = function (a, b) {
|
||||
a = a || {}, "function" == typeof a && (b = a);
|
||||
var d,
|
||||
e = 2 == a.formType ? '<textarea class="layui-layer-input">' + (a.value || "") + "</textarea>" : function () {
|
||||
return '<input type="' + (1 == a.formType ? "password" : "text") + '" class="layui-layer-input" value="' + (a.value || "") + '">'
|
||||
}();
|
||||
return f.open(c.extend({
|
||||
btn: ["确定", "取消"],
|
||||
content: e,
|
||||
skin: "layui-layer-prompt" + j("prompt"),
|
||||
success: function (a) {
|
||||
d = a.find(".layui-layer-input"), d.focus()
|
||||
},
|
||||
yes: function (c) {
|
||||
var e = d.val();
|
||||
"" === e ? d.focus() : e.length > (a.maxlength || 500) ? f.tips("最多输入" + (a.maxlength || 500) + "个字数", d, {tips: 1}) : b && b(e, c, d)
|
||||
}
|
||||
}, a))
|
||||
}, f.tab = function (a) {
|
||||
a = a || {};
|
||||
var b = a.tab || {};
|
||||
return f.open(c.extend({
|
||||
type: 1, skin: "layui-layer-tab" + j("tab"), title: function () {
|
||||
var a = b.length, c = 1, d = "";
|
||||
if (a > 0) for (d = '<span class="layui-layer-tabnow">' + b[0].title + "</span>"; a > c; c++) d += "<span>" + b[c].title + "</span>";
|
||||
return d
|
||||
}(), content: '<ul class="layui-layer-tabmain">' + function () {
|
||||
var a = b.length, c = 1, d = "";
|
||||
if (a > 0) for (d = '<li class="layui-layer-tabli xubox_tab_layer">' + (b[0].content || "no content") + "</li>"; a > c; c++) d += '<li class="layui-layer-tabli">' + (b[c].content || "no content") + "</li>";
|
||||
return d
|
||||
}() + "</ul>", success: function (b) {
|
||||
var d = b.find(".layui-layer-title").children(), e = b.find(".layui-layer-tabmain").children();
|
||||
d.on("mousedown", function (b) {
|
||||
b.stopPropagation ? b.stopPropagation() : b.cancelBubble = !0;
|
||||
var d = c(this), f = d.index();
|
||||
d.addClass("layui-layer-tabnow").siblings().removeClass("layui-layer-tabnow"), e.eq(f).show().siblings().hide(), "function" == typeof a.change && a.change(f)
|
||||
})
|
||||
}
|
||||
}, a))
|
||||
}, f.photos = function (b, d, e) {
|
||||
function g(a, b, c) {
|
||||
var d = new Image;
|
||||
return d.src = a, d.complete ? b(d) : (d.onload = function () {
|
||||
d.onload = null, b(d)
|
||||
}, void (d.onerror = function (a) {
|
||||
d.onerror = null, c(a)
|
||||
}))
|
||||
}
|
||||
|
||||
var h = {};
|
||||
if (b = b || {}, b.photos) {
|
||||
var i = b.photos.constructor === Object, k = i ? b.photos : {}, l = k.data || [], m = k.start || 0;
|
||||
if (h.imgIndex = (0 | m) + 1, b.img = b.img || "img", i) {
|
||||
if (0 === l.length) return f.msg("没有图片")
|
||||
} else {
|
||||
var n = c(b.photos), o = function () {
|
||||
l = [], n.find(b.img).each(function (a) {
|
||||
var b = c(this);
|
||||
b.attr("layer-index", a), l.push({
|
||||
alt: b.attr("alt"),
|
||||
pid: b.attr("layer-pid"),
|
||||
src: b.attr("layer-src") || b.attr("src"),
|
||||
thumb: b.attr("src")
|
||||
})
|
||||
})
|
||||
};
|
||||
if (o(), 0 === l.length) return;
|
||||
if (d || n.on("click", b.img, function () {
|
||||
var a = c(this), d = a.attr("layer-index");
|
||||
f.photos(c.extend(b, {photos: {start: d, data: l, tab: b.tab}, full: b.full}), !0), o()
|
||||
}), !d) return
|
||||
}
|
||||
h.imgprev = function (a) {
|
||||
h.imgIndex--, h.imgIndex < 1 && (h.imgIndex = l.length), h.tabimg(a)
|
||||
}, h.imgnext = function (a, b) {
|
||||
h.imgIndex++, h.imgIndex > l.length && (h.imgIndex = 1, b) || h.tabimg(a)
|
||||
}, h.keyup = function (a) {
|
||||
if (!h.end) {
|
||||
var b = a.keyCode;
|
||||
a.preventDefault(), 37 === b ? h.imgprev(!0) : 39 === b ? h.imgnext(!0) : 27 === b && f.close(h.index)
|
||||
}
|
||||
}, h.tabimg = function (a) {
|
||||
l.length <= 1 || (k.start = h.imgIndex - 1, f.close(h.index), f.photos(b, !0, a))
|
||||
}, h.event = function () {
|
||||
h.bigimg.hover(function () {
|
||||
h.imgsee.show()
|
||||
}, function () {
|
||||
h.imgsee.hide()
|
||||
}), h.bigimg.find(".layui-layer-imgprev").on("click", function (a) {
|
||||
a.preventDefault(), h.imgprev()
|
||||
}), h.bigimg.find(".layui-layer-imgnext").on("click", function (a) {
|
||||
a.preventDefault(), h.imgnext()
|
||||
}), c(document).on("keyup", h.keyup)
|
||||
}, h.loadi = f.load(1, {shade: "shade" in b ? !1 : .9, scrollbar: !1}), g(l[m].src, function (d) {
|
||||
f.close(h.loadi), h.index = f.open(c.extend({
|
||||
type: 1,
|
||||
area: function () {
|
||||
var e = [d.width, d.height], f = [c(a).width() - 50, c(a).height() - 50];
|
||||
return !b.full && e[0] > f[0] && (e[0] = f[0], e[1] = e[0] * d.height / d.width), [e[0] + "px", e[1] + "px"]
|
||||
}(),
|
||||
title: !1,
|
||||
shade: .9,
|
||||
shadeClose: !0,
|
||||
closeBtn: !1,
|
||||
move: ".layui-layer-phimg img",
|
||||
moveType: 1,
|
||||
scrollbar: !1,
|
||||
moveOut: !0,
|
||||
shift: 5 * Math.random() | 0,
|
||||
skin: "layui-layer-photos" + j("photos"),
|
||||
content: '<div class="layui-layer-phimg"><img src="' + l[m].src + '" alt="' + (l[m].alt || "") + '" layer-pid="' + l[m].pid + '"><div class="layui-layer-imgsee">' + (l.length > 1 ? '<span class="layui-layer-imguide"><a href="javascript:;" class="layui-layer-iconext layui-layer-imgprev"></a><a href="javascript:;" class="layui-layer-iconext layui-layer-imgnext"></a></span>' : "") + '<div class="layui-layer-imgbar" style="display:' + (e ? "block" : "") + '"><span class="layui-layer-imgtit"><a href="javascript:;">' + (l[m].alt || "") + "</a><em>" + h.imgIndex + "/" + l.length + "</em></span></div></div></div>",
|
||||
success: function (a, c) {
|
||||
h.bigimg = a.find(".layui-layer-phimg"), h.imgsee = a.find(".layui-layer-imguide,.layui-layer-imgbar"), h.event(a), b.tab && b.tab(l[m], a)
|
||||
},
|
||||
end: function () {
|
||||
h.end = !0, c(document).off("keyup", h.keyup)
|
||||
}
|
||||
}, b))
|
||||
}, function () {
|
||||
f.close(h.loadi), f.msg("当前图片地址异常<br>是否继续查看下一张?", {
|
||||
time: 3e4,
|
||||
btn: ["下一张", "不看了"],
|
||||
yes: function () {
|
||||
l.length > 1 && h.imgnext(!0, !0)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}, e.run = function () {
|
||||
c = jQuery, d = c(a), h.html = c("html"), f.open = function (a) {
|
||||
var b = new g(a);
|
||||
return b.index
|
||||
}
|
||||
}, "function" == typeof define ? define(function () {
|
||||
return e.run(), f
|
||||
}) : function () {
|
||||
e.run(), f.use("skin/layer.css")
|
||||
}()
|
||||
}(window);
|
||||
5
src/main/resources/static/js/layui.js
Normal file
1289
src/main/resources/static/js/main-js.js
Normal file
7
src/main/resources/static/js/moment.min.js
vendored
Normal file
2
src/main/resources/static/js/parallax.min.js
vendored
Normal file
BIN
src/main/resources/static/js/skin/default/icon-ext.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
src/main/resources/static/js/skin/default/icon.png
Normal file
|
After Width: | Height: | Size: 11 KiB |