@ -1,60 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<classpath>
|
|
||||||
<classpathentry kind="src" output="target/classes" path="src/main/java">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="optional" value="true"/>
|
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="optional" value="true"/>
|
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
|
||||||
<attribute name="test" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry kind="src" path="target/generated-sources/annotations">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="optional" value="true"/>
|
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
|
||||||
<attribute name="ignore_optional_problems" value="true"/>
|
|
||||||
<attribute name="m2e-apt" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="optional" value="true"/>
|
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
|
||||||
<attribute name="ignore_optional_problems" value="true"/>
|
|
||||||
<attribute name="m2e-apt" value="true"/>
|
|
||||||
<attribute name="test" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry kind="src" path=".apt_generated">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="optional" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry kind="src" output="target/test-classes" path=".apt_generated_tests">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="optional" value="true"/>
|
|
||||||
<attribute name="test" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry kind="output" path="target/classes"/>
|
|
||||||
</classpath>
|
|
@ -1,77 +0,0 @@
|
|||||||
<factorypath>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-web/2.2.2.RELEASE/spring-boot-starter-web-2.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter/2.2.2.RELEASE/spring-boot-starter-2.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot/2.2.2.RELEASE/spring-boot-2.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-logging/2.2.2.RELEASE/spring-boot-starter-logging-2.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/logging/log4j/log4j-to-slf4j/2.12.1/log4j-to-slf4j-2.12.1.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/logging/log4j/log4j-api/2.12.1/log4j-api-2.12.1.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/slf4j/jul-to-slf4j/1.7.29/jul-to-slf4j-1.7.29.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/yaml/snakeyaml/1.25/snakeyaml-1.25.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-json/2.2.2.RELEASE/spring-boot-starter-json-2.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.10.1/jackson-datatype-jdk8-2.10.1.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.10.1/jackson-datatype-jsr310-2.10.1.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/module/jackson-module-parameter-names/2.10.1/jackson-module-parameter-names-2.10.1.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-tomcat/2.2.2.RELEASE/spring-boot-starter-tomcat-2.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/tomcat/embed/tomcat-embed-core/9.0.29/tomcat-embed-core-9.0.29.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/tomcat/embed/tomcat-embed-el/9.0.29/tomcat-embed-el-9.0.29.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/tomcat/embed/tomcat-embed-websocket/9.0.29/tomcat-embed-websocket-9.0.29.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-validation/2.2.2.RELEASE/spring-boot-starter-validation-2.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/jakarta/validation/jakarta.validation-api/2.0.1/jakarta.validation-api-2.0.1.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/hibernate/validator/hibernate-validator/6.0.18.Final/hibernate-validator-6.0.18.Final.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/jboss/logging/jboss-logging/3.4.1.Final/jboss-logging-3.4.1.Final.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/classmate/1.5.1/classmate-1.5.1.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-web/5.2.2.RELEASE/spring-web-5.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-beans/5.2.2.RELEASE/spring-beans-5.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-webmvc/5.2.2.RELEASE/spring-webmvc-5.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-aop/5.2.2.RELEASE/spring-aop-5.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-context/5.2.2.RELEASE/spring-context-5.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-expression/5.2.2.RELEASE/spring-expression-5.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/mybatis/spring/boot/mybatis-spring-boot-starter/2.1.1/mybatis-spring-boot-starter-2.1.1.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/mybatis/spring/boot/mybatis-spring-boot-autoconfigure/2.1.1/mybatis-spring-boot-autoconfigure-2.1.1.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/mybatis/mybatis/3.5.3/mybatis-3.5.3.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/mybatis/mybatis-spring/2.0.3/mybatis-spring-2.0.3.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-jdbc/2.2.2.RELEASE/spring-boot-starter-jdbc-2.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/com/zaxxer/HikariCP/3.4.1/HikariCP-3.4.1.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/slf4j/slf4j-api/1.7.29/slf4j-api-1.7.29.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-jdbc/5.2.2.RELEASE/spring-jdbc-5.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-tx/5.2.2.RELEASE/spring-tx-5.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/mysql/mysql-connector-java/8.0.18/mysql-connector-java-8.0.18.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/shiro/shiro-spring/1.3.2/shiro-spring-1.3.2.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/shiro/shiro-core/1.3.2/shiro-core-1.3.2.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/commons-beanutils/commons-beanutils/1.8.3/commons-beanutils-1.8.3.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/shiro/shiro-web/1.3.2/shiro-web-1.3.2.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/com/baomidou/mybatis-plus/2.3/mybatis-plus-2.3.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/com/baomidou/mybatis-plus-support/2.3/mybatis-plus-support-2.3.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/com/baomidou/mybatis-plus-core/2.3/mybatis-plus-core-2.3.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/com/github/jsqlparser/jsqlparser/1.1/jsqlparser-1.1.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/com/baomidou/mybatis-plus-generate/2.3/mybatis-plus-generate-2.3.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/com/baomidou/mybatisplus-spring-boot-starter/1.0.5/mybatisplus-spring-boot-starter-1.0.5.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-autoconfigure/2.2.2.RELEASE/spring-boot-autoconfigure-2.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-configuration-processor/2.2.2.RELEASE/spring-boot-configuration-processor-2.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/com/google/protobuf/protobuf-java/3.10.0/protobuf-java-3.10.0.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/commons/commons-lang3/3.0/commons-lang3-3.0.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/javax/validation/validation-api/2.0.1.Final/validation-api-2.0.1.Final.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/commons-io/commons-io/2.5/commons-io-2.5.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/cn/hutool/hutool-all/4.0.12/hutool-all-4.0.12.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/com/alibaba/fastjson/1.2.8/fastjson-1.2.8.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/com/microsoft/sqlserver/mssql-jdbc/6.2.0.jre8/mssql-jdbc-6.2.0.jre8.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/com/baidu/aip/java-sdk/4.4.1/java-sdk-4.4.1.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/json/json/20160810/json-20160810.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/log4j/log4j/1.2.17/log4j-1.2.17.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/poi/poi/3.11/poi-3.11.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/commons-codec/commons-codec/1.13/commons-codec-1.13.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/poi/poi-ooxml/3.9/poi-ooxml-3.9.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/poi/poi-ooxml-schemas/3.9/poi-ooxml-schemas-3.9.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/xmlbeans/xmlbeans/2.3.0/xmlbeans-2.3.0.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/stax/stax-api/1.0.1/stax-api-1.0.1.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-core/5.2.2.RELEASE/spring-core-5.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-jcl/5.2.2.RELEASE/spring-jcl-5.2.2.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
|
||||||
</factorypath>
|
|
@ -1,51 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>jlwl</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.wst.common.project.facet.core.builder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.springframework.ide.eclipse.core.springbuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.springframework.ide.eclipse.boot.validation.springbootbuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.springframework.ide.eclipse.core.springnature</nature>
|
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
|
||||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
|
||||||
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
|
|
||||||
</natures>
|
|
||||||
<filteredResources>
|
|
||||||
<filter>
|
|
||||||
<id>1665412288378</id>
|
|
||||||
<name></name>
|
|
||||||
<type>30</type>
|
|
||||||
<matcher>
|
|
||||||
<id>org.eclipse.core.resources.regexFilterMatcher</id>
|
|
||||||
<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
|
|
||||||
</matcher>
|
|
||||||
</filter>
|
|
||||||
</filteredResources>
|
|
||||||
</projectDescription>
|
|
@ -1,5 +0,0 @@
|
|||||||
eclipse.preferences.version=1
|
|
||||||
encoding//src/main/java=UTF-8
|
|
||||||
encoding//src/main/resources=UTF-8
|
|
||||||
encoding//src/test/java=UTF-8
|
|
||||||
encoding/<project>=UTF-8
|
|
@ -1,10 +0,0 @@
|
|||||||
eclipse.preferences.version=1
|
|
||||||
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
|
|
||||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
|
||||||
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
|
||||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
|
||||||
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
|
|
||||||
org.eclipse.jdt.core.compiler.processAnnotations=enabled
|
|
||||||
org.eclipse.jdt.core.compiler.release=disabled
|
|
||||||
org.eclipse.jdt.core.compiler.source=1.8
|
|
@ -1,4 +0,0 @@
|
|||||||
activeProfiles=
|
|
||||||
eclipse.preferences.version=1
|
|
||||||
resolveWorkspaceProjects=true
|
|
||||||
version=1
|
|
@ -1 +0,0 @@
|
|||||||
cnpm install
|
|
@ -1 +0,0 @@
|
|||||||
cnpm run serve
|
|
@ -1 +0,0 @@
|
|||||||
cnpm run build
|
|
@ -1,5 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
presets: [
|
|
||||||
'@vue/cli-plugin-babel/preset'
|
|
||||||
]
|
|
||||||
}
|
|
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 4.7 KiB |
@ -1 +0,0 @@
|
|||||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="./favicon.ico"><title>电影推荐系统</title><link href="./css/app.bef91c13.css" rel="preload" as="style"><link href="./css/chunk-vendors.a72b0961.css" rel="preload" as="style"><link href="./js/app.f11005b0.js" rel="preload" as="script"><link href="./js/chunk-vendors.ea6f4760.js" rel="preload" as="script"><link href="./css/chunk-vendors.a72b0961.css" rel="stylesheet"><link href="./css/app.bef91c13.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but mas-creator-admin doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="./js/chunk-vendors.ea6f4760.js"></script><script src="./js/app.f11005b0.js"></script></body></html>
|
|
@ -1,62 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "mas-creator-admin",
|
|
||||||
"version": "0.1.0",
|
|
||||||
"private": true,
|
|
||||||
"scripts": {
|
|
||||||
"serve": "vue-cli-service serve",
|
|
||||||
"build": "vue-cli-service build",
|
|
||||||
"svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml",
|
|
||||||
"lint": "vue-cli-service lint"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"axios": "^0.19.2",
|
|
||||||
"core-js": "^3.4.4",
|
|
||||||
"echarts": "^4.6.0",
|
|
||||||
"element-ui": "^2.13.0",
|
|
||||||
"js-md5": "^0.7.3",
|
|
||||||
"print-js": "^1.5.0",
|
|
||||||
"vue": "^2.6.10",
|
|
||||||
"vue-quill-editor": "^3.0.6",
|
|
||||||
"vue-amap": "^0.5.10",
|
|
||||||
"vue-json-excel": "^0.3.0",
|
|
||||||
"vue-router": "^3.1.5"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@vue/cli-plugin-babel": "^4.1.0",
|
|
||||||
"@vue/cli-plugin-eslint": "^4.1.0",
|
|
||||||
"@vue/cli-service": "^4.1.0",
|
|
||||||
"babel-eslint": "^10.0.3",
|
|
||||||
"babel-plugin-component": "^1.1.1",
|
|
||||||
"eslint": "^5.16.0",
|
|
||||||
"eslint-plugin-vue": "^5.0.0",
|
|
||||||
"node-sass": "^4.13.1",
|
|
||||||
"sass-loader": "^8.0.2",
|
|
||||||
"svg-sprite-loader": "4.1.3",
|
|
||||||
"svgo": "1.2.2",
|
|
||||||
"vue-template-compiler": "^2.6.10"
|
|
||||||
},
|
|
||||||
"eslintConfig": {
|
|
||||||
"root": true,
|
|
||||||
"env": {
|
|
||||||
"node": true
|
|
||||||
},
|
|
||||||
"extends": [
|
|
||||||
"plugin:vue/essential",
|
|
||||||
"eslint:recommended"
|
|
||||||
],
|
|
||||||
"rules": {
|
|
||||||
"no-console": "off",
|
|
||||||
"no-unused-vars": 0,
|
|
||||||
"no-useless-escape": "off"
|
|
||||||
},
|
|
||||||
"parserOptions": {
|
|
||||||
"parser": "babel-eslint"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"browserslist": [
|
|
||||||
"> 1%",
|
|
||||||
"last 2 versions",
|
|
||||||
"not ie <= 8",
|
|
||||||
"Android >= 4.0"
|
|
||||||
]
|
|
||||||
}
|
|
Before Width: | Height: | Size: 4.2 KiB |
@ -1,21 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
||||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
|
||||||
<title>电影推荐系统</title>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<noscript>
|
|
||||||
<strong>We're sorry but mas-creator-admin doesn't work properly without JavaScript enabled. Please enable it to
|
|
||||||
continue.</strong>
|
|
||||||
</noscript>
|
|
||||||
<div id="app"></div>
|
|
||||||
<!-- built files will be auto injected -->
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
@ -1,30 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div id="app" class="">
|
|
||||||
<router-view></router-view>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
name: "app",
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
*{
|
|
||||||
padding: 0;
|
|
||||||
margin:0;
|
|
||||||
}
|
|
||||||
html,body{
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
#app{
|
|
||||||
height:100%;
|
|
||||||
}
|
|
||||||
body {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,13 +0,0 @@
|
|||||||
#canvas {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
margin: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
background: hsla(0, 5%, 5%, 1);
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-image: linear-gradient(to right top, hsla(0, 5%, 15%, 0.5), hsla(0, 5%, 5%, 1));
|
|
||||||
background-image: -moz-linear-gradient(to right top, hsla(0, 5%, 15%, 0.5), hsla(0, 5%, 5%, 1));
|
|
||||||
}
|
|
@ -1,6 +0,0 @@
|
|||||||
#canvas {
|
|
||||||
background: rgba(0,0,0,1);
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
#canvas {
|
|
||||||
position: fixed;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
/* 改变主题色变量 */
|
|
||||||
$--color-primary: #00c292 !default;
|
|
||||||
$--color-success: #67c23a !default;
|
|
||||||
$--color-warning: #e6a23c !default;
|
|
||||||
$--color-danger: #f56c6c !default;
|
|
||||||
$--color-info: #909399 !default;
|
|
||||||
/* 改变 icon 字体路径变量,必需 */
|
|
||||||
$--font-path: '~element-ui/lib/theme-chalk/fonts';
|
|
||||||
@import "~element-ui/packages/theme-chalk/src/index";
|
|
@ -1,47 +0,0 @@
|
|||||||
.form-content {
|
|
||||||
background: #ffffff;
|
|
||||||
padding: 10px 10px 0 10px;
|
|
||||||
}
|
|
||||||
.table-content {
|
|
||||||
background: #ffffff;
|
|
||||||
padding: 0 10px;
|
|
||||||
}
|
|
||||||
.pagination-content {
|
|
||||||
margin-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
.detail-form-content{
|
|
||||||
background: #ffffff;
|
|
||||||
padding: 10px;
|
|
||||||
.el-input{
|
|
||||||
min-width: 200px;
|
|
||||||
max-width: 600px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.bg {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
.login-form {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
width: 350px;
|
|
||||||
height: 100%;
|
|
||||||
background: #ffffff;
|
|
||||||
padding: 0 60px;
|
|
||||||
font-size: 18px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.h1 {
|
|
||||||
margin-top: 80px;
|
|
||||||
font-size: 20px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.btn-login {
|
|
||||||
margin-top: 50px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 4.1 MiB |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 843 B |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 1.2 KiB |
@ -1,85 +0,0 @@
|
|||||||
export default function canvasBg(){
|
|
||||||
window.requestAnimFrame = (function() {
|
|
||||||
return window.requestAnimationFrame ||
|
|
||||||
window.webkitRequestAnimationFrame ||
|
|
||||||
window.mozRequestAnimationFrame ||
|
|
||||||
window.oRequestAnimationFrame ||
|
|
||||||
window.msRequestAnimationFrame ||
|
|
||||||
function(callback) {
|
|
||||||
window.setTimeout(callback, 1000 / 60);
|
|
||||||
};
|
|
||||||
})();
|
|
||||||
var c = document.getElementById('canvas');
|
|
||||||
var $ = c.getContext('2d');
|
|
||||||
var w = c.width = window.innerWidth;
|
|
||||||
var h = c.height = window.innerHeight;
|
|
||||||
var _w = w * 0.5;
|
|
||||||
var _h = h * 0.5;
|
|
||||||
var arr = [];
|
|
||||||
var cnt = 0;
|
|
||||||
|
|
||||||
window.addEventListener('load', resize);
|
|
||||||
window.addEventListener('resize', resize, false);
|
|
||||||
|
|
||||||
function resize() {
|
|
||||||
c.width = w = window.innerWidth;
|
|
||||||
c.height = h = window.innerHeight;
|
|
||||||
c.style.position = 'absolute';
|
|
||||||
c.style.left = (window.innerWidth - w) *
|
|
||||||
.01 + 'px';
|
|
||||||
c.style.top = (window.innerHeight - h) *
|
|
||||||
.01 + 'px';
|
|
||||||
}
|
|
||||||
|
|
||||||
function anim() {
|
|
||||||
cnt++;
|
|
||||||
if (cnt % 6) draw();
|
|
||||||
window.requestAnimFrame(anim);
|
|
||||||
}
|
|
||||||
anim();
|
|
||||||
|
|
||||||
function draw() {
|
|
||||||
var splot = {
|
|
||||||
x: rng(_w - 900, _w + 900),
|
|
||||||
y: rng(_h - 900, _h + 900),
|
|
||||||
r: rng(20, 80),
|
|
||||||
spX: rng(-1, 1),
|
|
||||||
spY: rng(-1, 1)
|
|
||||||
};
|
|
||||||
|
|
||||||
arr.push(splot);
|
|
||||||
while (arr.length > 100) {
|
|
||||||
arr.shift();
|
|
||||||
}
|
|
||||||
$.clearRect(0, 0, w, h);
|
|
||||||
|
|
||||||
for (var i = 0; i < arr.length; i++) {
|
|
||||||
|
|
||||||
splot = arr[i];;
|
|
||||||
$.fillStyle = rndCol();
|
|
||||||
$.beginPath();
|
|
||||||
$.arc(splot.x, splot.y, splot.r, 0, Math.PI * 2, true);
|
|
||||||
$.shadowBlur = 80;
|
|
||||||
$.shadowOffsetX = 2;
|
|
||||||
$.shadowOffsetY = 2;
|
|
||||||
$.shadowColor = rndCol();
|
|
||||||
$.globalCompositeOperation = 'lighter';
|
|
||||||
$.fill();
|
|
||||||
|
|
||||||
splot.x = splot.x + splot.spX;
|
|
||||||
splot.y = splot.y + splot.spY;
|
|
||||||
splot.r = splot.r * 0.96;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function rndCol() {
|
|
||||||
var r = Math.floor(Math.random() * 180);
|
|
||||||
var g = Math.floor(Math.random() * 60);
|
|
||||||
var b = Math.floor(Math.random() * 100);
|
|
||||||
return "rgb(" + r + "," + g + "," + b + ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
function rng(min, max) {
|
|
||||||
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,191 +0,0 @@
|
|||||||
export default function canvasBg(){
|
|
||||||
var w = window.innerWidth;
|
|
||||||
var h = window.innerHeight;
|
|
||||||
var ctx = document.getElementById('canvas');
|
|
||||||
|
|
||||||
window.addEventListener('load', resize);
|
|
||||||
window.addEventListener('resize', resize, false);
|
|
||||||
|
|
||||||
function resize() {
|
|
||||||
ctx.width = w = window.innerWidth;
|
|
||||||
ctx.height = h = window.innerHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
resize();
|
|
||||||
|
|
||||||
let ctxfr = ctx.getContext('2d');
|
|
||||||
|
|
||||||
// min and max radius, radius threshold and percentage of filled circles
|
|
||||||
var radMin = 5,
|
|
||||||
radMax = 125,
|
|
||||||
filledCircle = 60, //percentage of filled circles
|
|
||||||
concentricCircle = 30, //percentage of concentric circles
|
|
||||||
radThreshold = 25; //IFF special, over this radius concentric, otherwise filled
|
|
||||||
|
|
||||||
//min and max speed to move
|
|
||||||
var speedMin = 0.3,
|
|
||||||
speedMax = 2.5;
|
|
||||||
|
|
||||||
//max reachable opacity for every circle and blur effect
|
|
||||||
var maxOpacity = 0.6;
|
|
||||||
|
|
||||||
//default palette choice
|
|
||||||
var colors = ['52,168,83', '117,95,147', '199,108,23', '194,62,55', '0,172,212', '120,120,120'],
|
|
||||||
bgColors = ['52,168,83', '117,95,147', '199,108,23', '194,62,55', '0,172,212', '120,120,120'],
|
|
||||||
circleBorder = 10,
|
|
||||||
backgroundLine = bgColors[0];
|
|
||||||
var backgroundMlt = 0.85;
|
|
||||||
|
|
||||||
//min distance for links
|
|
||||||
var linkDist = Math.min(canvas.width, canvas.height) / 2.4,
|
|
||||||
lineBorder = 2.5;
|
|
||||||
|
|
||||||
//most importantly: number of overall circles and arrays containing them
|
|
||||||
var maxCircles = 12,
|
|
||||||
points = [],
|
|
||||||
pointsBack = [];
|
|
||||||
|
|
||||||
//populating the screen
|
|
||||||
for (var i = 0; i < maxCircles * 2; i++) points.push(new Circle());
|
|
||||||
for (var i = 0; i < maxCircles; i++) pointsBack.push(new Circle(true));
|
|
||||||
|
|
||||||
//experimental vars
|
|
||||||
var circleExp = 1,
|
|
||||||
circleExpMax = 1.003,
|
|
||||||
circleExpMin = 0.997,
|
|
||||||
circleExpSp = 0.00004,
|
|
||||||
circlePulse = false;
|
|
||||||
|
|
||||||
//circle class
|
|
||||||
function Circle(background) {
|
|
||||||
//if background, it has different rules
|
|
||||||
this.background = (background || false);
|
|
||||||
this.x = randRange(-canvas.width / 2, canvas.width / 2);
|
|
||||||
this.y = randRange(-canvas.height / 2, canvas.height / 2);
|
|
||||||
this.radius = background ? hyperRange(radMin, radMax) * backgroundMlt : hyperRange(radMin, radMax);
|
|
||||||
this.filled = this.radius < radThreshold ? (randint(0, 100) > filledCircle ? false : 'full') : (randint(0, 100) >
|
|
||||||
concentricCircle ? false : 'concentric');
|
|
||||||
this.color = background ? bgColors[randint(0, bgColors.length - 1)] : colors[randint(0, colors.length - 1)];
|
|
||||||
this.borderColor = background ? bgColors[randint(0, bgColors.length - 1)] : colors[randint(0, colors.length - 1)];
|
|
||||||
this.opacity = 0.05;
|
|
||||||
this.speed = (background ? randRange(speedMin, speedMax) / backgroundMlt : randRange(speedMin, speedMax)); // * (radMin / this.radius);
|
|
||||||
this.speedAngle = Math.random() * 2 * Math.PI;
|
|
||||||
this.speedx = Math.cos(this.speedAngle) * this.speed;
|
|
||||||
this.speedy = Math.sin(this.speedAngle) * this.speed;
|
|
||||||
var spacex = Math.abs((this.x - (this.speedx < 0 ? -1 : 1) * (canvas.width / 2 + this.radius)) / this.speedx),
|
|
||||||
spacey = Math.abs((this.y - (this.speedy < 0 ? -1 : 1) * (canvas.height / 2 + this.radius)) / this.speedy);
|
|
||||||
this.ttl = Math.min(spacex, spacey);
|
|
||||||
};
|
|
||||||
|
|
||||||
Circle.prototype.init = function() {
|
|
||||||
Circle.call(this, this.background);
|
|
||||||
}
|
|
||||||
|
|
||||||
//support functions
|
|
||||||
//generate random int a<=x<=b
|
|
||||||
function randint(a, b) {
|
|
||||||
return Math.floor(Math.random() * (b - a + 1) + a);
|
|
||||||
}
|
|
||||||
//generate random float
|
|
||||||
function randRange(a, b) {
|
|
||||||
return Math.random() * (b - a) + a;
|
|
||||||
}
|
|
||||||
//generate random float more likely to be close to a
|
|
||||||
function hyperRange(a, b) {
|
|
||||||
return Math.random() * Math.random() * Math.random() * (b - a) + a;
|
|
||||||
}
|
|
||||||
|
|
||||||
//rendering function
|
|
||||||
function drawCircle(ctx, circle) {
|
|
||||||
//circle.radius *= circleExp;
|
|
||||||
var radius = circle.background ? circle.radius *= circleExp : circle.radius /= circleExp;
|
|
||||||
ctx.beginPath();
|
|
||||||
ctx.arc(circle.x, circle.y, radius * circleExp, 0, 2 * Math.PI, false);
|
|
||||||
ctx.lineWidth = Math.max(1, circleBorder * (radMin - circle.radius) / (radMin - radMax));
|
|
||||||
ctx.strokeStyle = ['rgba(', circle.borderColor, ',', circle.opacity, ')'].join('');
|
|
||||||
if (circle.filled == 'full') {
|
|
||||||
ctx.fillStyle = ['rgba(', circle.borderColor, ',', circle.background ? circle.opacity * 0.8 : circle.opacity, ')']
|
|
||||||
.join('');
|
|
||||||
ctx.fill();
|
|
||||||
ctx.lineWidth = 0;
|
|
||||||
ctx.strokeStyle = ['rgba(', circle.borderColor, ',', 0, ')'].join('');
|
|
||||||
}
|
|
||||||
ctx.stroke();
|
|
||||||
if (circle.filled == 'concentric') {
|
|
||||||
ctx.beginPath();
|
|
||||||
ctx.arc(circle.x, circle.y, radius / 2, 0, 2 * Math.PI, false);
|
|
||||||
ctx.lineWidth = Math.max(1, circleBorder * (radMin - circle.radius) / (radMin - radMax));
|
|
||||||
ctx.strokeStyle = ['rgba(', circle.color, ',', circle.opacity, ')'].join('');
|
|
||||||
ctx.stroke();
|
|
||||||
}
|
|
||||||
circle.x += circle.speedx;
|
|
||||||
circle.y += circle.speedy;
|
|
||||||
if (circle.opacity < (circle.background ? maxOpacity : 1)) circle.opacity += 0.01;
|
|
||||||
circle.ttl--;
|
|
||||||
}
|
|
||||||
|
|
||||||
//initializing function
|
|
||||||
function init() {
|
|
||||||
window.requestAnimationFrame(draw);
|
|
||||||
}
|
|
||||||
|
|
||||||
//rendering function
|
|
||||||
function draw() {
|
|
||||||
|
|
||||||
if (circlePulse) {
|
|
||||||
if (circleExp < circleExpMin || circleExp > circleExpMax) circleExpSp *= -1;
|
|
||||||
circleExp += circleExpSp;
|
|
||||||
}
|
|
||||||
|
|
||||||
ctxfr.globalCompositeOperation = 'destination-over';
|
|
||||||
ctxfr.clearRect(0, 0, canvas.width, canvas.height); // clear canvas
|
|
||||||
|
|
||||||
ctxfr.save();
|
|
||||||
ctxfr.translate(canvas.width / 2, canvas.height / 2);
|
|
||||||
|
|
||||||
//function to render each single circle, its connections and to manage its out of boundaries replacement
|
|
||||||
function renderPoints(ctx, arr) {
|
|
||||||
for (var i = 0; i < arr.length; i++) {
|
|
||||||
var circle = arr[i];
|
|
||||||
//checking if out of boundaries
|
|
||||||
if (circle.ttl < 0) {}
|
|
||||||
var xEscape = canvas.width / 2 + circle.radius,
|
|
||||||
yEscape = canvas.height / 2 + circle.radius;
|
|
||||||
if (circle.ttl < -20) arr[i].init(arr[i].background);
|
|
||||||
//if (Math.abs(circle.y) > yEscape || Math.abs(circle.x) > xEscape) arr[i].init(arr[i].background);
|
|
||||||
drawCircle(ctx, circle);
|
|
||||||
}
|
|
||||||
for (var i = 0; i < arr.length - 1; i++) {
|
|
||||||
for (var j = i + 1; j < arr.length; j++) {
|
|
||||||
var deltax = arr[i].x - arr[j].x;
|
|
||||||
var deltay = arr[i].y - arr[j].y;
|
|
||||||
var dist = Math.pow(Math.pow(deltax, 2) + Math.pow(deltay, 2), 0.5);
|
|
||||||
//if the circles are overlapping, no laser connecting them
|
|
||||||
if (dist <= arr[i].radius + arr[j].radius) continue;
|
|
||||||
//otherwise we connect them only if the dist is < linkDist
|
|
||||||
if (dist < linkDist) {
|
|
||||||
var xi = (arr[i].x < arr[j].x ? 1 : -1) * Math.abs(arr[i].radius * deltax / dist);
|
|
||||||
var yi = (arr[i].y < arr[j].y ? 1 : -1) * Math.abs(arr[i].radius * deltay / dist);
|
|
||||||
var xj = (arr[i].x < arr[j].x ? -1 : 1) * Math.abs(arr[j].radius * deltax / dist);
|
|
||||||
var yj = (arr[i].y < arr[j].y ? -1 : 1) * Math.abs(arr[j].radius * deltay / dist);
|
|
||||||
ctx.beginPath();
|
|
||||||
ctx.moveTo(arr[i].x + xi, arr[i].y + yi);
|
|
||||||
ctx.lineTo(arr[j].x + xj, arr[j].y + yj);
|
|
||||||
var samecolor = arr[i].color == arr[j].color;
|
|
||||||
ctx.strokeStyle = ["rgba(", arr[i].borderColor, ",", Math.min(arr[i].opacity, arr[j].opacity) * ((linkDist -
|
|
||||||
dist) / linkDist), ")"].join("");
|
|
||||||
ctx.lineWidth = (arr[i].background ? lineBorder * backgroundMlt : lineBorder) * ((linkDist - dist) / linkDist); //*((linkDist-dist)/linkDist);
|
|
||||||
ctx.stroke();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
renderPoints(ctxfr, points);
|
|
||||||
ctxfr.restore();
|
|
||||||
|
|
||||||
window.requestAnimationFrame(draw);
|
|
||||||
}
|
|
||||||
|
|
||||||
init();
|
|
||||||
}
|
|
@ -1,175 +0,0 @@
|
|||||||
export default function canvasBg() {
|
|
||||||
var canvas,
|
|
||||||
ctx,
|
|
||||||
width,
|
|
||||||
height,
|
|
||||||
size,
|
|
||||||
lines,
|
|
||||||
tick;
|
|
||||||
|
|
||||||
function line() {
|
|
||||||
this.path = [];
|
|
||||||
this.speed = rand(10, 20);
|
|
||||||
this.count = randInt(10, 30);
|
|
||||||
this.x = width / 2, +1;
|
|
||||||
this.y = height / 2 + 1;
|
|
||||||
this.target = {
|
|
||||||
x: width / 2,
|
|
||||||
y: height / 2
|
|
||||||
};
|
|
||||||
this.dist = 0;
|
|
||||||
this.angle = 0;
|
|
||||||
this.hue = tick / 5;
|
|
||||||
this.life = 1;
|
|
||||||
this.updateAngle();
|
|
||||||
this.updateDist();
|
|
||||||
}
|
|
||||||
|
|
||||||
line.prototype.step = function(i) {
|
|
||||||
this.x += Math.cos(this.angle) * this.speed;
|
|
||||||
this.y += Math.sin(this.angle) * this.speed;
|
|
||||||
|
|
||||||
this.updateDist();
|
|
||||||
|
|
||||||
if (this.dist < this.speed) {
|
|
||||||
this.x = this.target.x;
|
|
||||||
this.y = this.target.y;
|
|
||||||
this.changeTarget();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.path.push({
|
|
||||||
x: this.x,
|
|
||||||
y: this.y
|
|
||||||
});
|
|
||||||
if (this.path.length > this.count) {
|
|
||||||
this.path.shift();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.life -= 0.001;
|
|
||||||
|
|
||||||
if (this.life <= 0) {
|
|
||||||
this.path = null;
|
|
||||||
lines.splice(i, 1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
line.prototype.updateDist = function() {
|
|
||||||
var dx = this.target.x - this.x,
|
|
||||||
dy = this.target.y - this.y;
|
|
||||||
this.dist = Math.sqrt(dx * dx + dy * dy);
|
|
||||||
}
|
|
||||||
|
|
||||||
line.prototype.updateAngle = function() {
|
|
||||||
var dx = this.target.x - this.x,
|
|
||||||
dy = this.target.y - this.y;
|
|
||||||
this.angle = Math.atan2(dy, dx);
|
|
||||||
}
|
|
||||||
|
|
||||||
line.prototype.changeTarget = function() {
|
|
||||||
var randStart = randInt(0, 3);
|
|
||||||
switch (randStart) {
|
|
||||||
case 0: // up
|
|
||||||
this.target.y = this.y - size;
|
|
||||||
break;
|
|
||||||
case 1: // right
|
|
||||||
this.target.x = this.x + size;
|
|
||||||
break;
|
|
||||||
case 2: // down
|
|
||||||
this.target.y = this.y + size;
|
|
||||||
break;
|
|
||||||
case 3: // left
|
|
||||||
this.target.x = this.x - size;
|
|
||||||
}
|
|
||||||
this.updateAngle();
|
|
||||||
};
|
|
||||||
|
|
||||||
line.prototype.draw = function(i) {
|
|
||||||
ctx.beginPath();
|
|
||||||
var rando = rand(0, 10);
|
|
||||||
for (var j = 0, length = this.path.length; j < length; j++) {
|
|
||||||
ctx[(j === 0) ? 'moveTo' : 'lineTo'](this.path[j].x + rand(-rando, rando), this.path[j].y +
|
|
||||||
rand(-rando, rando));
|
|
||||||
}
|
|
||||||
ctx.strokeStyle = 'hsla(' + rand(this.hue, this.hue + 30) + ', 80%, 55%, ' + (this.life / 3) + ')';
|
|
||||||
ctx.lineWidth = rand(0.1, 2);
|
|
||||||
ctx.stroke();
|
|
||||||
};
|
|
||||||
|
|
||||||
function rand(min, max) {
|
|
||||||
return Math.random() * (max - min) + min;
|
|
||||||
}
|
|
||||||
|
|
||||||
function randInt(min, max) {
|
|
||||||
return Math.floor(min + Math.random() * (max - min + 1));
|
|
||||||
};
|
|
||||||
|
|
||||||
function init() {
|
|
||||||
canvas = document.getElementById('canvas');
|
|
||||||
ctx = canvas.getContext('2d');
|
|
||||||
size = 30;
|
|
||||||
lines = [];
|
|
||||||
reset();
|
|
||||||
loop();
|
|
||||||
}
|
|
||||||
|
|
||||||
function reset() {
|
|
||||||
width = Math.ceil(window.innerWidth / 2) * 2;
|
|
||||||
height = Math.ceil(window.innerHeight / 2) * 2;
|
|
||||||
tick = 0;
|
|
||||||
|
|
||||||
lines.length = 0;
|
|
||||||
canvas.width = width;
|
|
||||||
canvas.height = height;
|
|
||||||
}
|
|
||||||
|
|
||||||
function create() {
|
|
||||||
if (tick % 10 === 0) {
|
|
||||||
lines.push(new line());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function step() {
|
|
||||||
var i = lines.length;
|
|
||||||
while (i--) {
|
|
||||||
lines[i].step(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function clear() {
|
|
||||||
ctx.globalCompositeOperation = 'destination-out';
|
|
||||||
ctx.fillStyle = 'hsla(0, 0%, 0%, 0.1)';
|
|
||||||
ctx.fillRect(0, 0, width, height);
|
|
||||||
ctx.globalCompositeOperation = 'lighter';
|
|
||||||
}
|
|
||||||
|
|
||||||
function draw() {
|
|
||||||
ctx.save();
|
|
||||||
ctx.translate(width / 2, height / 2);
|
|
||||||
ctx.rotate(tick * 0.001);
|
|
||||||
var scale = 0.8 + Math.cos(tick * 0.02) * 0.2;
|
|
||||||
ctx.scale(scale, scale);
|
|
||||||
ctx.translate(-width / 2, -height / 2);
|
|
||||||
var i = lines.length;
|
|
||||||
while (i--) {
|
|
||||||
lines[i].draw(i);
|
|
||||||
}
|
|
||||||
ctx.restore();
|
|
||||||
}
|
|
||||||
|
|
||||||
function loop() {
|
|
||||||
requestAnimationFrame(loop);
|
|
||||||
create();
|
|
||||||
step();
|
|
||||||
clear();
|
|
||||||
draw();
|
|
||||||
tick++;
|
|
||||||
}
|
|
||||||
|
|
||||||
function onresize() {
|
|
||||||
reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
window.addEventListener('resize', onresize);
|
|
||||||
|
|
||||||
init();
|
|
||||||
}
|
|
@ -1,336 +0,0 @@
|
|||||||
export default function canvasBg() {
|
|
||||||
var num = 200;
|
|
||||||
var w = window.innerWidth;
|
|
||||||
var h = window.innerHeight;
|
|
||||||
var max = 100;
|
|
||||||
var _x = 0;
|
|
||||||
var _y = 0;
|
|
||||||
var _z = 150;
|
|
||||||
var dtr = function(d) {
|
|
||||||
return d * Math.PI / 180;
|
|
||||||
};
|
|
||||||
var canvas = document.getElementById("canvas");
|
|
||||||
|
|
||||||
var rnd = function() {
|
|
||||||
return Math.sin(Math.floor(Math.random() * 360) * Math.PI / 180);
|
|
||||||
};
|
|
||||||
var dist = function(p1, p2, p3) {
|
|
||||||
return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2) + Math.pow(p2.z - p1.z, 2));
|
|
||||||
};
|
|
||||||
|
|
||||||
var cam = {
|
|
||||||
obj: {
|
|
||||||
x: _x,
|
|
||||||
y: _y,
|
|
||||||
z: _z
|
|
||||||
},
|
|
||||||
dest: {
|
|
||||||
x: 0,
|
|
||||||
y: 0,
|
|
||||||
z: 1
|
|
||||||
},
|
|
||||||
dist: {
|
|
||||||
x: 0,
|
|
||||||
y: 0,
|
|
||||||
z: 200
|
|
||||||
},
|
|
||||||
ang: {
|
|
||||||
cplane: 0,
|
|
||||||
splane: 0,
|
|
||||||
ctheta: 0,
|
|
||||||
stheta: 0
|
|
||||||
},
|
|
||||||
zoom: 1,
|
|
||||||
disp: {
|
|
||||||
x: w / 2,
|
|
||||||
y: h / 2,
|
|
||||||
z: 0
|
|
||||||
},
|
|
||||||
upd: function() {
|
|
||||||
cam.dist.x = cam.dest.x - cam.obj.x;
|
|
||||||
cam.dist.y = cam.dest.y - cam.obj.y;
|
|
||||||
cam.dist.z = cam.dest.z - cam.obj.z;
|
|
||||||
cam.ang.cplane = -cam.dist.z / Math.sqrt(cam.dist.x * cam.dist.x + cam.dist.z * cam.dist.z);
|
|
||||||
cam.ang.splane = cam.dist.x / Math.sqrt(cam.dist.x * cam.dist.x + cam.dist.z * cam.dist.z);
|
|
||||||
cam.ang.ctheta = Math.sqrt(cam.dist.x * cam.dist.x + cam.dist.z * cam.dist.z) / Math.sqrt(cam.dist.x *
|
|
||||||
cam.dist.x + cam.dist.y * cam.dist.y + cam.dist.z * cam.dist.z);
|
|
||||||
cam.ang.stheta = -cam.dist.y / Math.sqrt(cam.dist.x * cam.dist.x + cam.dist.y * cam.dist.y + cam.dist
|
|
||||||
.z * cam.dist.z);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var trans = {
|
|
||||||
parts: {
|
|
||||||
sz: function(p, sz) {
|
|
||||||
return {
|
|
||||||
x: p.x * sz.x,
|
|
||||||
y: p.y * sz.y,
|
|
||||||
z: p.z * sz.z
|
|
||||||
};
|
|
||||||
},
|
|
||||||
rot: {
|
|
||||||
x: function(p, rot) {
|
|
||||||
return {
|
|
||||||
x: p.x,
|
|
||||||
y: p.y * Math.cos(dtr(rot.x)) - p.z * Math.sin(dtr(rot.x)),
|
|
||||||
z: p.y * Math.sin(dtr(rot.x)) + p.z * Math.cos(dtr(rot.x))
|
|
||||||
};
|
|
||||||
},
|
|
||||||
y: function(p, rot) {
|
|
||||||
return {
|
|
||||||
x: p.x * Math.cos(dtr(rot.y)) + p.z * Math.sin(dtr(rot.y)),
|
|
||||||
y: p.y,
|
|
||||||
z: -p.x * Math.sin(dtr(rot.y)) + p.z * Math.cos(dtr(rot.y))
|
|
||||||
};
|
|
||||||
},
|
|
||||||
z: function(p, rot) {
|
|
||||||
return {
|
|
||||||
x: p.x * Math.cos(dtr(rot.z)) - p.y * Math.sin(dtr(rot.z)),
|
|
||||||
y: p.x * Math.sin(dtr(rot.z)) + p.y * Math.cos(dtr(rot.z)),
|
|
||||||
z: p.z
|
|
||||||
};
|
|
||||||
}
|
|
||||||
},
|
|
||||||
pos: function(p, pos) {
|
|
||||||
return {
|
|
||||||
x: p.x + pos.x,
|
|
||||||
y: p.y + pos.y,
|
|
||||||
z: p.z + pos.z
|
|
||||||
};
|
|
||||||
}
|
|
||||||
},
|
|
||||||
pov: {
|
|
||||||
plane: function(p) {
|
|
||||||
return {
|
|
||||||
x: p.x * cam.ang.cplane + p.z * cam.ang.splane,
|
|
||||||
y: p.y,
|
|
||||||
z: p.x * -cam.ang.splane + p.z * cam.ang.cplane
|
|
||||||
};
|
|
||||||
},
|
|
||||||
theta: function(p) {
|
|
||||||
return {
|
|
||||||
x: p.x,
|
|
||||||
y: p.y * cam.ang.ctheta - p.z * cam.ang.stheta,
|
|
||||||
z: p.y * cam.ang.stheta + p.z * cam.ang.ctheta
|
|
||||||
};
|
|
||||||
},
|
|
||||||
set: function(p) {
|
|
||||||
return {
|
|
||||||
x: p.x - cam.obj.x,
|
|
||||||
y: p.y - cam.obj.y,
|
|
||||||
z: p.z - cam.obj.z
|
|
||||||
};
|
|
||||||
}
|
|
||||||
},
|
|
||||||
persp: function(p) {
|
|
||||||
return {
|
|
||||||
x: p.x * cam.dist.z / p.z * cam.zoom,
|
|
||||||
y: p.y * cam.dist.z / p.z * cam.zoom,
|
|
||||||
z: p.z * cam.zoom,
|
|
||||||
p: cam.dist.z / p.z
|
|
||||||
};
|
|
||||||
},
|
|
||||||
disp: function(p, disp) {
|
|
||||||
return {
|
|
||||||
x: p.x + disp.x,
|
|
||||||
y: -p.y + disp.y,
|
|
||||||
z: p.z + disp.z,
|
|
||||||
p: p.p
|
|
||||||
};
|
|
||||||
},
|
|
||||||
steps: function(_obj_, sz, rot, pos, disp) {
|
|
||||||
var _args = trans.parts.sz(_obj_, sz);
|
|
||||||
_args = trans.parts.rot.x(_args, rot);
|
|
||||||
_args = trans.parts.rot.y(_args, rot);
|
|
||||||
_args = trans.parts.rot.z(_args, rot);
|
|
||||||
_args = trans.parts.pos(_args, pos);
|
|
||||||
_args = trans.pov.plane(_args);
|
|
||||||
_args = trans.pov.theta(_args);
|
|
||||||
_args = trans.pov.set(_args);
|
|
||||||
_args = trans.persp(_args);
|
|
||||||
_args = trans.disp(_args, disp);
|
|
||||||
return _args;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var threeD = function(param) {
|
|
||||||
this.transIn = {};
|
|
||||||
this.transOut = {};
|
|
||||||
this.transIn.vtx = (param.vtx);
|
|
||||||
this.transIn.sz = (param.sz);
|
|
||||||
this.transIn.rot = (param.rot);
|
|
||||||
this.transIn.pos = (param.pos);
|
|
||||||
};
|
|
||||||
|
|
||||||
threeD.prototype.vupd = function() {
|
|
||||||
this.transOut = trans.steps(
|
|
||||||
|
|
||||||
this.transIn.vtx,
|
|
||||||
this.transIn.sz,
|
|
||||||
this.transIn.rot,
|
|
||||||
this.transIn.pos,
|
|
||||||
cam.disp
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
var Build = function() {
|
|
||||||
this.vel = 0.04;
|
|
||||||
this.lim = 360;
|
|
||||||
this.diff = 200;
|
|
||||||
this.initPos = 100;
|
|
||||||
this.toX = _x;
|
|
||||||
this.toY = _y;
|
|
||||||
this.canvas = canvas;
|
|
||||||
this.go();
|
|
||||||
};
|
|
||||||
|
|
||||||
Build.prototype.go = function() {
|
|
||||||
this.canvas.width = window.innerWidth;
|
|
||||||
this.canvas.height = window.innerHeight;
|
|
||||||
this.$ = this.canvas.getContext("2d");
|
|
||||||
this.$.globalCompositeOperation = 'source-over';
|
|
||||||
this.varr = [];
|
|
||||||
this.dist = [];
|
|
||||||
this.calc = [];
|
|
||||||
|
|
||||||
for (var i = 0, len = num; i < len; i++) {
|
|
||||||
this.add();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.rotObj = {
|
|
||||||
x: 0,
|
|
||||||
y: 0,
|
|
||||||
z: 0
|
|
||||||
};
|
|
||||||
this.objSz = {
|
|
||||||
x: w / 5,
|
|
||||||
y: h / 5,
|
|
||||||
z: w / 5
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
Build.prototype.add = function() {
|
|
||||||
this.varr.push(new threeD({
|
|
||||||
vtx: {
|
|
||||||
x: rnd(),
|
|
||||||
y: rnd(),
|
|
||||||
z: rnd()
|
|
||||||
},
|
|
||||||
sz: {
|
|
||||||
x: 0,
|
|
||||||
y: 0,
|
|
||||||
z: 0
|
|
||||||
},
|
|
||||||
rot: {
|
|
||||||
x: 20,
|
|
||||||
y: -20,
|
|
||||||
z: 0
|
|
||||||
},
|
|
||||||
pos: {
|
|
||||||
x: this.diff * Math.sin(360 * Math.random() * Math.PI / 180),
|
|
||||||
y: this.diff * Math.sin(360 * Math.random() * Math.PI / 180),
|
|
||||||
z: this.diff * Math.sin(360 * Math.random() * Math.PI / 180)
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
this.calc.push({
|
|
||||||
x: 360 * Math.random(),
|
|
||||||
y: 360 * Math.random(),
|
|
||||||
z: 360 * Math.random()
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
Build.prototype.upd = function() {
|
|
||||||
cam.obj.x += (this.toX - cam.obj.x) * 0.05;
|
|
||||||
cam.obj.y += (this.toY - cam.obj.y) * 0.05;
|
|
||||||
};
|
|
||||||
|
|
||||||
Build.prototype.draw = function() {
|
|
||||||
this.$.clearRect(0, 0, this.canvas.width, this.canvas.height);
|
|
||||||
cam.upd();
|
|
||||||
this.rotObj.x += 0.1;
|
|
||||||
this.rotObj.y += 0.1;
|
|
||||||
this.rotObj.z += 0.1;
|
|
||||||
|
|
||||||
for (var i = 0; i < this.varr.length; i++) {
|
|
||||||
for (var val in this.calc[i]) {
|
|
||||||
if (this.calc[i].hasOwnProperty(val)) {
|
|
||||||
this.calc[i][val] += this.vel;
|
|
||||||
if (this.calc[i][val] > this.lim) this.calc[i][val] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.varr[i].transIn.pos = {
|
|
||||||
x: this.diff * Math.cos(this.calc[i].x * Math.PI / 180),
|
|
||||||
y: this.diff * Math.sin(this.calc[i].y * Math.PI / 180),
|
|
||||||
z: this.diff * Math.sin(this.calc[i].z * Math.PI / 180)
|
|
||||||
};
|
|
||||||
this.varr[i].transIn.rot = this.rotObj;
|
|
||||||
this.varr[i].transIn.sz = this.objSz;
|
|
||||||
this.varr[i].vupd();
|
|
||||||
if (this.varr[i].transOut.p < 0) continue;
|
|
||||||
var g = this.$.createRadialGradient(this.varr[i].transOut.x, this.varr[i].transOut.y, this.varr[i]
|
|
||||||
.transOut.p, this.varr[i].transOut.x, this.varr[i].transOut.y, this.varr[i].transOut.p * 2);
|
|
||||||
this.$.globalCompositeOperation = 'lighter';
|
|
||||||
g.addColorStop(0, 'hsla(255, 255%, 255%, 1)');
|
|
||||||
g.addColorStop(.6, 'hsla(' + (i + 2) + ',85%, 40%,1)');
|
|
||||||
g.addColorStop(1, 'hsla(' + (i) + ',85%, 40%,.5)');
|
|
||||||
console.log(this.varr[i].transOut.x, this.varr[i].transOut.y, this.varr[i].transOut.p * 2, 0, Math
|
|
||||||
.PI * 2, false)
|
|
||||||
this.$.fillStyle = g;
|
|
||||||
this.$.beginPath();
|
|
||||||
this.$.arc(this.varr[i].transOut.x, this.varr[i].transOut.y, this.varr[i].transOut.p * 2, 0, Math
|
|
||||||
.PI * 2, false);
|
|
||||||
this.$.fill();
|
|
||||||
this.$.closePath();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Build.prototype.anim = function() {
|
|
||||||
window.requestAnimationFrame = (function() {
|
|
||||||
return window.requestAnimationFrame ||
|
|
||||||
function(callback, element) {
|
|
||||||
window.setTimeout(callback, 1000 / 60);
|
|
||||||
};
|
|
||||||
})();
|
|
||||||
var anim = function() {
|
|
||||||
this.upd();
|
|
||||||
this.draw();
|
|
||||||
window.requestAnimationFrame(anim);
|
|
||||||
}.bind(this);
|
|
||||||
window.requestAnimationFrame(anim);
|
|
||||||
};
|
|
||||||
|
|
||||||
Build.prototype.run = function() {
|
|
||||||
this.anim();
|
|
||||||
|
|
||||||
window.addEventListener('mousemove', function(e) {
|
|
||||||
this.toX = (e.clientX - this.canvas.width / 2) * -0.8;
|
|
||||||
this.toY = (e.clientY - this.canvas.height / 2) * 0.8;
|
|
||||||
}.bind(this));
|
|
||||||
window.addEventListener('touchmove', function(e) {
|
|
||||||
e.preventDefault();
|
|
||||||
this.toX = (e.touches[0].clientX - this.canvas.width / 2) * -0.8;
|
|
||||||
this.toY = (e.touches[0].clientY - this.canvas.height / 2) * 0.8;
|
|
||||||
}.bind(this));
|
|
||||||
window.addEventListener('mousedown', function(e) {
|
|
||||||
for (var i = 0; i < 100; i++) {
|
|
||||||
this.add();
|
|
||||||
}
|
|
||||||
}.bind(this));
|
|
||||||
window.addEventListener('touchstart', function(e) {
|
|
||||||
e.preventDefault();
|
|
||||||
for (var i = 0; i < 100; i++) {
|
|
||||||
this.add();
|
|
||||||
}
|
|
||||||
}.bind(this));
|
|
||||||
};
|
|
||||||
|
|
||||||
var app = new Build();
|
|
||||||
app.run();
|
|
||||||
|
|
||||||
window.addEventListener('resize', function() {
|
|
||||||
// canvas.width = w = window.innerWidth;
|
|
||||||
// canvas.height = h = window.innerHeight;
|
|
||||||
var app = new Build();
|
|
||||||
app.run();
|
|
||||||
});
|
|
||||||
}
|
|
@ -1,154 +0,0 @@
|
|||||||
export default function canvasBg() {
|
|
||||||
var canvas = document.getElementById('canvas'),
|
|
||||||
ctx = canvas.getContext('2d')
|
|
||||||
canvas.width = window.innerWidth;
|
|
||||||
canvas.height = window.innerHeight;
|
|
||||||
ctx.lineWidth = .3;
|
|
||||||
ctx.strokeStyle = (new Color(150)).style;
|
|
||||||
|
|
||||||
var mousePosition = {
|
|
||||||
x: 30 * canvas.width / 100,
|
|
||||||
y: 30 * canvas.height / 100
|
|
||||||
};
|
|
||||||
|
|
||||||
var dots = {
|
|
||||||
nb: 750,
|
|
||||||
distance: 50,
|
|
||||||
d_radius: 100,
|
|
||||||
array: []
|
|
||||||
};
|
|
||||||
|
|
||||||
function colorValue(min) {
|
|
||||||
return Math.floor(Math.random() * 255 + min);
|
|
||||||
}
|
|
||||||
|
|
||||||
function createColorStyle(r, g, b) {
|
|
||||||
return 'rgba(' + r + ',' + g + ',' + b + ', 0.8)';
|
|
||||||
}
|
|
||||||
|
|
||||||
function mixComponents(comp1, weight1, comp2, weight2) {
|
|
||||||
return (comp1 * weight1 + comp2 * weight2) / (weight1 + weight2);
|
|
||||||
}
|
|
||||||
|
|
||||||
function averageColorStyles(dot1, dot2) {
|
|
||||||
var color1 = dot1.color,
|
|
||||||
color2 = dot2.color;
|
|
||||||
|
|
||||||
var r = mixComponents(color1.r, dot1.radius, color2.r, dot2.radius),
|
|
||||||
g = mixComponents(color1.g, dot1.radius, color2.g, dot2.radius),
|
|
||||||
b = mixComponents(color1.b, dot1.radius, color2.b, dot2.radius);
|
|
||||||
return createColorStyle(Math.floor(r), Math.floor(g), Math.floor(b));
|
|
||||||
}
|
|
||||||
|
|
||||||
function Color(min) {
|
|
||||||
min = min || 0;
|
|
||||||
this.r = colorValue(min);
|
|
||||||
this.g = colorValue(min);
|
|
||||||
this.b = colorValue(min);
|
|
||||||
this.style = createColorStyle(this.r, this.g, this.b);
|
|
||||||
}
|
|
||||||
|
|
||||||
function Dot() {
|
|
||||||
this.x = Math.random() * canvas.width;
|
|
||||||
this.y = Math.random() * canvas.height;
|
|
||||||
|
|
||||||
this.vx = -.5 + Math.random();
|
|
||||||
this.vy = -.5 + Math.random();
|
|
||||||
|
|
||||||
this.radius = Math.random() * 2;
|
|
||||||
|
|
||||||
this.color = new Color();
|
|
||||||
// console.log(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
Dot.prototype = {
|
|
||||||
draw: function() {
|
|
||||||
ctx.beginPath();
|
|
||||||
ctx.fillStyle = this.color.style;
|
|
||||||
ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2, false);
|
|
||||||
ctx.fill();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
function createDots() {
|
|
||||||
for (i = 0; i < dots.nb; i++) {
|
|
||||||
dots.array.push(new Dot());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function moveDots() {
|
|
||||||
for (i = 0; i < dots.nb; i++) {
|
|
||||||
|
|
||||||
var dot = dots.array[i];
|
|
||||||
|
|
||||||
if (dot.y < 0 || dot.y > canvas.height) {
|
|
||||||
dot.vx = dot.vx;
|
|
||||||
dot.vy = -dot.vy;
|
|
||||||
} else if (dot.x < 0 || dot.x > canvas.width) {
|
|
||||||
dot.vx = -dot.vx;
|
|
||||||
dot.vy = dot.vy;
|
|
||||||
}
|
|
||||||
dot.x += dot.vx;
|
|
||||||
dot.y += dot.vy;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function connectDots() {
|
|
||||||
for (i = 0; i < dots.nb; i++) {
|
|
||||||
for (j = 0; j < dots.nb; j++) {
|
|
||||||
i_dot = dots.array[i];
|
|
||||||
j_dot = dots.array[j];
|
|
||||||
|
|
||||||
if ((i_dot.x - j_dot.x) < dots.distance && (i_dot.y - j_dot.y) < dots.distance && (i_dot.x -
|
|
||||||
j_dot.x) > -dots.distance && (i_dot.y - j_dot.y) > -dots.distance) {
|
|
||||||
if ((i_dot.x - mousePosition.x) < dots.d_radius && (i_dot.y - mousePosition.y) < dots
|
|
||||||
.d_radius && (i_dot.x - mousePosition.x) > -dots.d_radius && (i_dot.y - mousePosition
|
|
||||||
.y) > -dots.d_radius) {
|
|
||||||
ctx.beginPath();
|
|
||||||
ctx.strokeStyle = averageColorStyles(i_dot, j_dot);
|
|
||||||
ctx.moveTo(i_dot.x, i_dot.y);
|
|
||||||
ctx.lineTo(j_dot.x, j_dot.y);
|
|
||||||
ctx.stroke();
|
|
||||||
ctx.closePath();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function drawDots() {
|
|
||||||
for (i = 0; i < dots.nb; i++) {
|
|
||||||
var dot = dots.array[i];
|
|
||||||
dot.draw();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function animateDots() {
|
|
||||||
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
||||||
moveDots();
|
|
||||||
connectDots();
|
|
||||||
drawDots();
|
|
||||||
|
|
||||||
requestAnimationFrame(animateDots);
|
|
||||||
}
|
|
||||||
|
|
||||||
canvas.addEventListener('mousemove', function(e) {
|
|
||||||
mousePosition.x = e.pageX;
|
|
||||||
mousePosition.y = e.pageY;
|
|
||||||
})
|
|
||||||
// canvas.on('mousemove', function(e) {
|
|
||||||
// mousePosition.x = e.pageX;
|
|
||||||
// mousePosition.y = e.pageY;
|
|
||||||
// });
|
|
||||||
canvas.addEventListener('mouseleave', function(e) {
|
|
||||||
mousePosition.x = canvas.width / 2;
|
|
||||||
mousePosition.y = canvas.height / 2;
|
|
||||||
})
|
|
||||||
// canvas.on('mouseleave', function(e) {
|
|
||||||
// mousePosition.x = canvas.width / 2;
|
|
||||||
// mousePosition.y = canvas.height / 2;
|
|
||||||
// });
|
|
||||||
|
|
||||||
createDots();
|
|
||||||
requestAnimationFrame(animateDots);
|
|
||||||
}
|
|
@ -1,43 +0,0 @@
|
|||||||
<template>
|
|
||||||
<svg :class="svgClass" aria-hidden="true" v-on="$listeners">
|
|
||||||
<use :xlink:href="iconName" />
|
|
||||||
</svg>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
name: 'SvgIcon',
|
|
||||||
props: {
|
|
||||||
iconClass: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
className: {
|
|
||||||
type: String,
|
|
||||||
default: ''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
iconName() {
|
|
||||||
return `#icon-${this.iconClass}`
|
|
||||||
},
|
|
||||||
svgClass() {
|
|
||||||
if (this.className) {
|
|
||||||
return 'svg-icon ' + this.className
|
|
||||||
} else {
|
|
||||||
return 'svg-icon'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.svg-icon {
|
|
||||||
width: 1em;
|
|
||||||
height: 1em;
|
|
||||||
vertical-align: -0.15em;
|
|
||||||
fill: currentColor;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,109 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-breadcrumb class="app-breadcrumb" separator=">>" style="height:40px;backgroundColor:rgba(36, 139, 146, 1);borderRadius:20px;padding:0px 20px 0px 20px;boxShadow:0px 0px 0px 5px rgba(142, 209, 214, 1);borderWidth:0;borderStyle:solid;borderColor:#ff0000;">
|
|
||||||
<transition-group name="breadcrumb" class="box" :style="2==1?'justifyContent:flex-start;':2==2?'justifyContent:center;':'justifyContent:flex-end;'">
|
|
||||||
<el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path">
|
|
||||||
<span v-if="item.redirect==='noRedirect'||index==levelList.length-1" class="no-redirect" style="color:rgba(255, 215, 0, 1)">{{ item.name }}</span>
|
|
||||||
<a v-else @click.prevent="handleLink(item)">{{ item.name }}</a>
|
|
||||||
</el-breadcrumb-item>
|
|
||||||
</transition-group>
|
|
||||||
</el-breadcrumb>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import pathToRegexp from 'path-to-regexp'
|
|
||||||
import { generateTitle } from '@/utils/i18n'
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
levelList: null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
$route() {
|
|
||||||
this.getBreadcrumb()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.getBreadcrumb()
|
|
||||||
this.breadcrumbStyleChange()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
generateTitle,
|
|
||||||
getBreadcrumb() {
|
|
||||||
// only show routes with meta.title
|
|
||||||
let route = this.$route
|
|
||||||
let matched = route.matched.filter(item => item.meta)
|
|
||||||
const first = matched[0]
|
|
||||||
matched = [{ path: '/index' }].concat(matched)
|
|
||||||
|
|
||||||
this.levelList = matched.filter(item => item.meta)
|
|
||||||
},
|
|
||||||
isDashboard(route) {
|
|
||||||
const name = route && route.name
|
|
||||||
if (!name) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return name.trim().toLocaleLowerCase() === 'Index'.toLocaleLowerCase()
|
|
||||||
},
|
|
||||||
pathCompile(path) {
|
|
||||||
// To solve this problem https://github.com/PanJiaChen/vue-element-admin/issues/561
|
|
||||||
const { params } = this.$route
|
|
||||||
var toPath = pathToRegexp.compile(path)
|
|
||||||
return toPath(params)
|
|
||||||
},
|
|
||||||
handleLink(item) {
|
|
||||||
const { redirect, path } = item
|
|
||||||
if (redirect) {
|
|
||||||
this.$router.push(redirect)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.$router.push(path)
|
|
||||||
},
|
|
||||||
breadcrumbStyleChange(val) {
|
|
||||||
this.$nextTick(()=>{
|
|
||||||
document.querySelectorAll('.app-breadcrumb .el-breadcrumb__separator').forEach(el=>{
|
|
||||||
el.innerText = ">>"
|
|
||||||
el.style.color = "rgba(255, 215, 0, 1)"
|
|
||||||
})
|
|
||||||
document.querySelectorAll('.app-breadcrumb .el-breadcrumb__inner a').forEach(el=>{
|
|
||||||
el.style.color = "rgba(255, 215, 0, 1)"
|
|
||||||
})
|
|
||||||
document.querySelectorAll('.app-breadcrumb .el-breadcrumb__inner .no-redirect').forEach(el=>{
|
|
||||||
el.style.color = "rgba(255, 215, 0, 1)"
|
|
||||||
})
|
|
||||||
|
|
||||||
let str = "2"
|
|
||||||
if(2 == str) {
|
|
||||||
let headHeight = "60px"
|
|
||||||
headHeight = parseInt(headHeight) + 10 + 'px'
|
|
||||||
document.querySelectorAll('.app-breadcrumb').forEach(el=>{
|
|
||||||
el.style.marginTop = headHeight
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
})
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.app-breadcrumb {
|
|
||||||
display: block;
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 50px;
|
|
||||||
|
|
||||||
.box {
|
|
||||||
display: flex;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
justify-content: flex-start;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.no-redirect {
|
|
||||||
color: #97a8be;
|
|
||||||
cursor: text;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,77 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-breadcrumb class="app-breadcrumb" separator="/">
|
|
||||||
<transition-group name="breadcrumb">
|
|
||||||
<el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path">
|
|
||||||
<span v-if="item.redirect==='noRedirect'||index==levelList.length-1" class="no-redirect">{{ item.name }}</span>
|
|
||||||
<a v-else @click.prevent="handleLink(item)">{{ item.name }}</a>
|
|
||||||
</el-breadcrumb-item>
|
|
||||||
</transition-group>
|
|
||||||
</el-breadcrumb>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import pathToRegexp from 'path-to-regexp'
|
|
||||||
import { generateTitle } from '@/utils/i18n'
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
levelList: null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
$route() {
|
|
||||||
this.getBreadcrumb()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.getBreadcrumb()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
generateTitle,
|
|
||||||
getBreadcrumb() {
|
|
||||||
// only show routes with meta.title
|
|
||||||
console.log(this.$route)
|
|
||||||
let matched = this.$route.matched.filter(item => item.meta)
|
|
||||||
const first = matched[0]
|
|
||||||
matched = [{ path: '/index' }].concat(matched)
|
|
||||||
|
|
||||||
this.levelList = matched.filter(item => item.meta)
|
|
||||||
},
|
|
||||||
isDashboard(route) {
|
|
||||||
const name = route && route.name
|
|
||||||
if (!name) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return name.trim().toLocaleLowerCase() === 'Index'.toLocaleLowerCase()
|
|
||||||
},
|
|
||||||
pathCompile(path) {
|
|
||||||
// To solve this problem https://github.com/PanJiaChen/vue-element-admin/issues/561
|
|
||||||
const { params } = this.$route
|
|
||||||
var toPath = pathToRegexp.compile(path)
|
|
||||||
return toPath(params)
|
|
||||||
},
|
|
||||||
handleLink(item) {
|
|
||||||
const { redirect, path } = item
|
|
||||||
if (redirect) {
|
|
||||||
this.$router.push(redirect)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.$router.push(path)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.app-breadcrumb.el-breadcrumb {
|
|
||||||
display: inline-block;
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 50px;
|
|
||||||
margin-left: 8px;
|
|
||||||
|
|
||||||
.no-redirect {
|
|
||||||
color: #97a8be;
|
|
||||||
cursor: text;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,60 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-card class="box-card">
|
|
||||||
<div slot="header" class="header">
|
|
||||||
<span>{{title}}</span>
|
|
||||||
<span>
|
|
||||||
<el-tag size="small" :type="titleTag">{{titleUnit}}</el-tag>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="content">
|
|
||||||
{{content}}
|
|
||||||
<span class="unit">{{contentUnit}}</span>
|
|
||||||
</div>
|
|
||||||
<div class="bottom">
|
|
||||||
<span>{{bottomTitle}}</span>
|
|
||||||
<span>
|
|
||||||
{{bottomContent}}
|
|
||||||
<i :class="bottomIcon"></i>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</el-card>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
props: [
|
|
||||||
"title",
|
|
||||||
"titleTag",
|
|
||||||
"titleUnit",
|
|
||||||
"content",
|
|
||||||
"contentUnit",
|
|
||||||
"bottomTitle",
|
|
||||||
"bottomContent",
|
|
||||||
"bottomIcon"
|
|
||||||
]
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.box-card {
|
|
||||||
margin-right: 10px;
|
|
||||||
.header {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
.content {
|
|
||||||
font-size: 30px;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #666;
|
|
||||||
text-align: center;
|
|
||||||
.unit {
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.bottom {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,101 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="home-comment">
|
|
||||||
<div class="title">用户留言</div>
|
|
||||||
<div class="comment-list">
|
|
||||||
<div v-for="(item,index) in list" v-bind:key="index" class="comment-item">
|
|
||||||
<div class="user-content">
|
|
||||||
<el-image
|
|
||||||
class="avator"
|
|
||||||
:src="item.avator"
|
|
||||||
></el-image>
|
|
||||||
<span class="user">{{item.name}}</span>
|
|
||||||
</div>
|
|
||||||
<div class="comment">{{item.content}}</div>
|
|
||||||
<div class="create-time">{{item.createTime}}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
list: [
|
|
||||||
{
|
|
||||||
name: "MaskLin",
|
|
||||||
avator:
|
|
||||||
"https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
|
||||||
content:
|
|
||||||
"你以为只要长得漂亮就有男生喜欢?你以为只要有了钱漂亮妹子就自己贴上来了?你以为学霸就能找到好工作?我告诉你吧,这些都是真的!",
|
|
||||||
createTime: "5月02日 00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "MaskLin",
|
|
||||||
avator:
|
|
||||||
"https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
|
||||||
content: "作者太帅了",
|
|
||||||
createTime: "5月04日 00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "MaskLin",
|
|
||||||
avator:
|
|
||||||
"https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
|
||||||
content: "作者太帅了",
|
|
||||||
createTime: "5月04日 00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "MaskLin",
|
|
||||||
avator: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
|
||||||
content: "作者太帅了",
|
|
||||||
createTime: "5月04日 00:00"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.home-comment {
|
|
||||||
background: #ffffff;
|
|
||||||
.title {
|
|
||||||
font-size: 18px;
|
|
||||||
color: #666;
|
|
||||||
font-weight: bold;
|
|
||||||
padding: 10px;
|
|
||||||
border-bottom: 1px solid #eeeeee;
|
|
||||||
}
|
|
||||||
.comment-list {
|
|
||||||
padding: 10px;
|
|
||||||
.comment-item {
|
|
||||||
padding: 10px;
|
|
||||||
border-bottom: 1px solid #eeeeee;
|
|
||||||
.user-content {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
.user {
|
|
||||||
font-size: 18px;
|
|
||||||
color: #666;
|
|
||||||
font-weight: bold;
|
|
||||||
line-height: 50px;
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
.avator {
|
|
||||||
width: 50px;
|
|
||||||
height: 50px;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.comment {
|
|
||||||
margin-top: 10px;
|
|
||||||
font-size: 14px;
|
|
||||||
color: #888888;
|
|
||||||
}
|
|
||||||
.create-time {
|
|
||||||
margin-top: 15px;
|
|
||||||
font-size: 14px;
|
|
||||||
color: #888888;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,55 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="home-progress">
|
|
||||||
<div class="title">月访问量</div>
|
|
||||||
<div class="tip">同上期增长</div>
|
|
||||||
<el-progress
|
|
||||||
class="progress"
|
|
||||||
:text-inside="true"
|
|
||||||
:stroke-width="24"
|
|
||||||
:percentage="20"
|
|
||||||
status="success"
|
|
||||||
></el-progress>
|
|
||||||
<div class="title">月用户量</div>
|
|
||||||
<div class="tip">同上期增长</div>
|
|
||||||
<el-progress
|
|
||||||
class="progress"
|
|
||||||
:text-inside="true"
|
|
||||||
:stroke-width="24"
|
|
||||||
:percentage="50"
|
|
||||||
status="success"
|
|
||||||
></el-progress>
|
|
||||||
<div class="title">月收入</div>
|
|
||||||
<div class="tip">同上期减少</div>
|
|
||||||
<el-progress
|
|
||||||
class="progress"
|
|
||||||
:text-inside="true"
|
|
||||||
:stroke-width="24"
|
|
||||||
:percentage="28"
|
|
||||||
status="exception"
|
|
||||||
></el-progress>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
export default {};
|
|
||||||
</script>
|
|
||||||
<style lang="scss">
|
|
||||||
.home-progress {
|
|
||||||
background: #ffffff;
|
|
||||||
height: 400px;
|
|
||||||
padding: 20px;
|
|
||||||
.title {
|
|
||||||
color: #666666;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 20px;
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
.tip {
|
|
||||||
color: #888888;
|
|
||||||
font-size: 16px;
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
.progress {
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,56 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-aside class="index-aside" width="200px">
|
|
||||||
<div class="index-aside-inner">
|
|
||||||
<el-menu default-active="1">
|
|
||||||
<el-menu-item @click="menuHandler('/')" index="1">
|
|
||||||
<!-- <i class="el-icon-s-home"></i> -->
|
|
||||||
首页
|
|
||||||
</el-menu-item>
|
|
||||||
<sub-menu
|
|
||||||
v-for="menu in menuList"
|
|
||||||
:key="menu.menuId"
|
|
||||||
:menu="menu"
|
|
||||||
:dynamicMenuRoutes="dynamicMenuRoutes"
|
|
||||||
></sub-menu>
|
|
||||||
</el-menu>
|
|
||||||
</div>
|
|
||||||
</el-aside>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import SubMenu from "@/components/index/IndexAsideSub";
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
menuList: [],
|
|
||||||
dynamicMenuRoutes: []
|
|
||||||
};
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
SubMenu
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
// 获取动态菜单数据并且渲染
|
|
||||||
this.menuList = JSON.parse(sessionStorage.getItem("menuList") || "[]");
|
|
||||||
this.dynamicMenuRoutes = JSON.parse(
|
|
||||||
sessionStorage.getItem("dynamicMenuRoutes") || "[]"
|
|
||||||
);
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
menuHandler(path) {
|
|
||||||
this.$router.push({ path: path });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.index-aside {
|
|
||||||
margin-top: 80px;
|
|
||||||
overflow: hidden;
|
|
||||||
.index-aside-inner {
|
|
||||||
width: 217px;
|
|
||||||
height: 100%;
|
|
||||||
overflow-y: scroll;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
@ -1,501 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-aside class="index-aside" width="210px">
|
|
||||||
<div class="index-aside-inner menulist">
|
|
||||||
<div v-for="item in menuList" :key="item.roleName" v-if="role==item.roleName" class="menulist-item">
|
|
||||||
<div class="menulistImg" v-if="false && 2 == 2">
|
|
||||||
<el-image :style='{"padding":"0","boxShadow":"0 0 6px rgba(0,0,0,0)","margin":"0","borderColor":"rgba(0,0,0,0)","borderRadius":"0","borderWidth":"0","width":"100%","borderStyle":"solid","height":"auto"}' v-if="'http://codegen.caihongy.cn/20201021/cc7d45d9c8164b58b18351764eba9be1.jpg'" src="http://codegen.caihongy.cn/20201021/cc7d45d9c8164b58b18351764eba9be1.jpg" fit="cover" />
|
|
||||||
</div>
|
|
||||||
<el-menu :mode="2 == 1? 'horizontal':'vertical'" :unique-opened="true" class="el-menu-demo" default-active="0">
|
|
||||||
<el-menu-item index="0" @click="menuHandler('')"><i v-if="true" class="el-icon-menu el-icon-s-home" />首页</el-menu-item>
|
|
||||||
<el-submenu :index="1+''">
|
|
||||||
<template slot="title">
|
|
||||||
<i v-if="true" class="el-icon-menu el-icon-user-solid" />
|
|
||||||
<span>个人中心</span>
|
|
||||||
</template>
|
|
||||||
<el-menu-item :index="1-1" @click="menuHandler('updatePassword')">修改密码</el-menu-item>
|
|
||||||
<el-menu-item :index="1-2" @click="menuHandler('center')">个人信息</el-menu-item>
|
|
||||||
</el-submenu>
|
|
||||||
<el-submenu v-for=" (menu,index) in item.backMenu" :key="menu.menu" :index="index+2+''">
|
|
||||||
<template slot="title">
|
|
||||||
<i v-if="true" class="el-icon-menu" :class="icons[index]" />
|
|
||||||
<span>{{ menu.menu }}</span>
|
|
||||||
</template>
|
|
||||||
<el-menu-item v-for=" (child,sort) in menu.child" :key="sort" :index="(index+2)+'-'+sort" @click="menuHandler(child.tableName)">{{ child.menu }}</el-menu-item>
|
|
||||||
</el-submenu>
|
|
||||||
</el-menu>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-aside>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import menu from '@/utils/menu'
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
menuList: [],
|
|
||||||
dynamicMenuRoutes: [],
|
|
||||||
role: '',
|
|
||||||
icons: [
|
|
||||||
'el-icon-s-cooperation',
|
|
||||||
'el-icon-s-order',
|
|
||||||
'el-icon-s-platform',
|
|
||||||
'el-icon-s-fold',
|
|
||||||
'el-icon-s-unfold',
|
|
||||||
'el-icon-s-operation',
|
|
||||||
'el-icon-s-promotion',
|
|
||||||
'el-icon-s-release',
|
|
||||||
'el-icon-s-ticket',
|
|
||||||
'el-icon-s-management',
|
|
||||||
'el-icon-s-open',
|
|
||||||
'el-icon-s-shop',
|
|
||||||
'el-icon-s-marketing',
|
|
||||||
'el-icon-s-flag',
|
|
||||||
'el-icon-s-comment',
|
|
||||||
'el-icon-s-finance',
|
|
||||||
'el-icon-s-claim',
|
|
||||||
'el-icon-s-custom',
|
|
||||||
'el-icon-s-opportunity',
|
|
||||||
'el-icon-s-data',
|
|
||||||
'el-icon-s-check',
|
|
||||||
'el-icon-s-grid',
|
|
||||||
'el-icon-menu',
|
|
||||||
'el-icon-chat-dot-square',
|
|
||||||
'el-icon-message',
|
|
||||||
'el-icon-postcard',
|
|
||||||
'el-icon-position',
|
|
||||||
'el-icon-microphone',
|
|
||||||
'el-icon-close-notification',
|
|
||||||
'el-icon-bangzhu',
|
|
||||||
'el-icon-time',
|
|
||||||
'el-icon-odometer',
|
|
||||||
'el-icon-crop',
|
|
||||||
'el-icon-aim',
|
|
||||||
'el-icon-switch-button',
|
|
||||||
'el-icon-full-screen',
|
|
||||||
'el-icon-copy-document',
|
|
||||||
'el-icon-mic',
|
|
||||||
'el-icon-stopwatch',
|
|
||||||
],
|
|
||||||
menulistStyle: 'vertical',
|
|
||||||
menulistBorderBottom: {},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
const menus = menu.list()
|
|
||||||
if(menus) {
|
|
||||||
this.menuList = menus
|
|
||||||
} else {
|
|
||||||
let params = {
|
|
||||||
page: 1,
|
|
||||||
limit: 1,
|
|
||||||
sort: 'id',
|
|
||||||
}
|
|
||||||
this.$http({
|
|
||||||
url: "menu/list",
|
|
||||||
method: "get",
|
|
||||||
params: params
|
|
||||||
}).then(({
|
|
||||||
data
|
|
||||||
}) => {
|
|
||||||
if (data && data.code === 0) {
|
|
||||||
this.menuList = JSON.parse(data.data.list[0].menujson);
|
|
||||||
this.$storage.set("menus", this.menuList);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
this.role = this.$storage.get('role')
|
|
||||||
},
|
|
||||||
created(){
|
|
||||||
setTimeout(()=>{
|
|
||||||
this.menulistStyleChange()
|
|
||||||
},10)
|
|
||||||
this.icons.sort(()=>{
|
|
||||||
return (0.5-Math.random())
|
|
||||||
})
|
|
||||||
this.lineBorder()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
lineBorder() {
|
|
||||||
let style = 'vertical'
|
|
||||||
let w = '4px'
|
|
||||||
let s = 'solid'
|
|
||||||
let c = '#ccc'
|
|
||||||
if(style == 'vertical') {
|
|
||||||
this.menulistBorderBottom = {
|
|
||||||
borderBottomWidth: w,
|
|
||||||
borderBottomStyle: s,
|
|
||||||
borderBottomColor: c
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.menulistBorderBottom = {
|
|
||||||
borderRightWidth: w,
|
|
||||||
borderRightStyle: s,
|
|
||||||
borderRightColor: c
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
menuHandler(name) {
|
|
||||||
let router = this.$router
|
|
||||||
name = '/'+name
|
|
||||||
router.push(name)
|
|
||||||
},
|
|
||||||
// 菜单
|
|
||||||
setMenulistHoverColor(){
|
|
||||||
let that = this
|
|
||||||
return;
|
|
||||||
this.$nextTick(()=>{
|
|
||||||
document.querySelectorAll('.menulist .el-menu-item').forEach(el=>{
|
|
||||||
el.addEventListener("mouseenter", e => {
|
|
||||||
e.stopPropagation()
|
|
||||||
el.style.backgroundColor = "rgba(36, 139, 146, 1)"
|
|
||||||
})
|
|
||||||
el.addEventListener("mouseleave", e => {
|
|
||||||
e.stopPropagation()
|
|
||||||
// el.style.backgroundColor = "linear-gradient(to right,rgba(142, 209, 214, 1) , rgba(36, 139, 146, 1))"
|
|
||||||
el.style.background = "none"
|
|
||||||
})
|
|
||||||
el.addEventListener("focus", e => {
|
|
||||||
e.stopPropagation()
|
|
||||||
el.style.backgroundColor = "rgba(36, 139, 146, 1)"
|
|
||||||
})
|
|
||||||
})
|
|
||||||
document.querySelectorAll('.menulist .el-submenu__title').forEach(el=>{
|
|
||||||
el.addEventListener("mouseenter", e => {
|
|
||||||
e.stopPropagation()
|
|
||||||
el.style.backgroundColor = "rgba(36, 139, 146, 1)"
|
|
||||||
})
|
|
||||||
el.addEventListener("mouseleave", e => {
|
|
||||||
e.stopPropagation()
|
|
||||||
// el.style.backgroundColor = "linear-gradient(to right,rgba(142, 209, 214, 1) , rgba(36, 139, 146, 1))"
|
|
||||||
el.style.background = "none"
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
setMenulistIconColor() {
|
|
||||||
this.$nextTick(()=>{
|
|
||||||
document.querySelectorAll('.menulist .el-submenu__title .el-submenu__icon-arrow').forEach(el=>{
|
|
||||||
el.style.color = "rgba(255, 255, 255, 1)"
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
menulistStyleChange() {
|
|
||||||
this.setMenulistIconColor()
|
|
||||||
this.setMenulistHoverColor()
|
|
||||||
this.setMenulistStyleHeightChange()
|
|
||||||
let str = "2"
|
|
||||||
if(1 == str) {
|
|
||||||
this.$nextTick(()=>{
|
|
||||||
document.querySelectorAll('.el-container .el-container').forEach(el=>{
|
|
||||||
el.style.display = "block"
|
|
||||||
el.style.paddingTop = "60px" // header 高度
|
|
||||||
})
|
|
||||||
document.querySelectorAll('.el-aside').forEach(el=>{
|
|
||||||
el.style.width = "100%"
|
|
||||||
el.style.height = "100%"
|
|
||||||
el.style.paddingTop = '0'
|
|
||||||
})
|
|
||||||
document.querySelectorAll('.index-aside .index-aside-inner').forEach(el=>{
|
|
||||||
el.style.paddingTop = '0'
|
|
||||||
el.style.width = "100%"
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
if(2 === str) {
|
|
||||||
this.$nextTick(()=>{
|
|
||||||
document.querySelectorAll('.index-aside .index-aside-inner').forEach(el=>{
|
|
||||||
el.style.paddingTop = "60px"
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
|
||||||
setMenulistStyleHeightChange() {
|
|
||||||
return;
|
|
||||||
this.$nextTick(()=>{
|
|
||||||
document.querySelectorAll('.menulist-item>.el-menu--horizontal>.el-menu-item').forEach(el=>{
|
|
||||||
el.style.height = "50px"
|
|
||||||
el.style.lineHeight = "50px"
|
|
||||||
})
|
|
||||||
document.querySelectorAll('.menulist-item>.el-menu--horizontal>.el-submenu>.el-submenu__title').forEach(el=>{
|
|
||||||
el.style.height = "50px"
|
|
||||||
el.style.lineHeight = "50px"
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.el-container {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
.index-aside {
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
|
|
||||||
.menulistImg {
|
|
||||||
font-size: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
|
|
||||||
.el-image {
|
|
||||||
margin: 0 auto;
|
|
||||||
width: 100px;
|
|
||||||
height: 100px;
|
|
||||||
border-radius: 100%;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.index-aside-inner {
|
|
||||||
height: 100%;
|
|
||||||
margin-right: -17px;
|
|
||||||
margin-bottom: -17px;
|
|
||||||
overflow: scroll;
|
|
||||||
overflow-x: hidden !important;
|
|
||||||
padding-top: 60px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
|
|
||||||
&:focus {
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
& /deep/ .el-menu {
|
|
||||||
border: 0;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.index-aside .index-aside-inner.menulist {
|
|
||||||
height: 100% !important;
|
|
||||||
}
|
|
||||||
.menulist-item {
|
|
||||||
width: 210px;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
border-radius: 0;
|
|
||||||
border-width: 0 !important;
|
|
||||||
border-style: solid !important;
|
|
||||||
border-color: rgba(0,0,0,.3) !important;
|
|
||||||
background: linear-gradient(to right, rgba(36, 139, 146,1) 0%, rgba(36, 139, 146,0.7) 50%, rgba(142, 209, 214,0.8) 100%) !important;
|
|
||||||
box-shadow: 0 0 6px rgba(30, 144, 255, 0);
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
.el-menu-demo {
|
|
||||||
box-sizing: border-box;
|
|
||||||
min-height: calc(100vh - 60px);
|
|
||||||
|
|
||||||
&>.el-menu-item {
|
|
||||||
width: 200px;
|
|
||||||
height: auto !important;
|
|
||||||
line-height: 40px !important;
|
|
||||||
padding: 10px;
|
|
||||||
margin: 0px 0px 0px 5px;
|
|
||||||
color: rgba(255, 255, 255, 1);
|
|
||||||
font-size: 14px;
|
|
||||||
border-radius: 0;
|
|
||||||
border-width: 0px 0px 3px 0px;
|
|
||||||
border-style: groove;
|
|
||||||
border-color: rgba(220, 223, 230, 1) !important;
|
|
||||||
background-color: rgba(144, 238, 144, 0) !important;
|
|
||||||
box-shadow: 0 0 6px rgba(255,255,255,0);
|
|
||||||
box-sizing: initial;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: flex-start;
|
|
||||||
box-sizing: border-box;
|
|
||||||
|
|
||||||
.el-icon-menu {
|
|
||||||
margin: 0 5px 0 0;
|
|
||||||
padding: 0;
|
|
||||||
width: 24px;
|
|
||||||
line-height: 24px;
|
|
||||||
color: rgba(220, 223, 230, 1);
|
|
||||||
font-size: 16px;
|
|
||||||
border-radius: 0;
|
|
||||||
border-width: 0;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: #fff;
|
|
||||||
background-color: rgba(255,255,255,0);
|
|
||||||
box-shadow: 0 0 6px rgba(255,255,255,0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-submenu {
|
|
||||||
margin: 0px 0px 0px 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
& /deep/ .el-submenu__title {
|
|
||||||
width: 200px;
|
|
||||||
height: auto !important;
|
|
||||||
line-height: 40px !important;
|
|
||||||
padding: 10px;
|
|
||||||
color: rgba(255, 255, 255, 1);
|
|
||||||
font-size: 14px;
|
|
||||||
border-radius: 0;
|
|
||||||
border-width: 0px 0px 3px 0px;
|
|
||||||
border-style: groove;
|
|
||||||
border-color: rgba(220, 223, 230, 1) !important;
|
|
||||||
background-color: rgba(144, 238, 144, 0) !important;
|
|
||||||
box-shadow: 0 0 6px rgba(255,255,255,0);
|
|
||||||
box-sizing: initial;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: flex-start;
|
|
||||||
box-sizing: border-box;
|
|
||||||
|
|
||||||
.el-icon-menu {
|
|
||||||
margin: 0 5px 0 0;
|
|
||||||
padding: 0;
|
|
||||||
width: 24px;
|
|
||||||
line-height: 24px;
|
|
||||||
color: rgba(220, 223, 230, 1);
|
|
||||||
font-size: 16px;
|
|
||||||
border-radius: 0;
|
|
||||||
border-width: 0;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: #fff;
|
|
||||||
background-color: rgba(255,255,255,0);
|
|
||||||
box-shadow: 0 0 6px rgba(255,255,255,0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-submenu__icon-arrow {
|
|
||||||
margin: 0 10px 0 0;
|
|
||||||
padding: 0;
|
|
||||||
width: 12px;
|
|
||||||
line-height: 12px;
|
|
||||||
color: rgba(220, 223, 230, 1) !important;
|
|
||||||
font-size: 12px;
|
|
||||||
border-radius: 0;
|
|
||||||
border-width: 0;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: #fff;
|
|
||||||
background-color: rgba(255,255,255,0);
|
|
||||||
box-shadow: 0 0 6px rgba(255,255,255,0);
|
|
||||||
position: absolute;
|
|
||||||
top: 50%;
|
|
||||||
right: 0;
|
|
||||||
transform: translateY(-50%);
|
|
||||||
text-align: center;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
& /deep/ .el-menu.el-menu--inline {
|
|
||||||
width: 100%;
|
|
||||||
height: auto;
|
|
||||||
padding: 0px 0px 0px 0px;
|
|
||||||
margin: 0px 0px 0px -3px;
|
|
||||||
border-radius: 0;
|
|
||||||
border-width: 0;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: rgba(0,0,0,.3);
|
|
||||||
background-color: rgba(245, 245, 245, 1);
|
|
||||||
box-shadow: 0 0 0px rgba(0, 0, 0, .3);
|
|
||||||
|
|
||||||
.el-menu-item {
|
|
||||||
width: 100%;
|
|
||||||
height: 48px;
|
|
||||||
line-height: 48px;
|
|
||||||
padding: 0px 50px 0px 0px !important;
|
|
||||||
margin: 0px 0px 0px 0px;
|
|
||||||
color: #333 !important;
|
|
||||||
font-size: 14px;
|
|
||||||
border-radius: 0;
|
|
||||||
border-width: 0;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: rgba(0, 0, 0, .3);
|
|
||||||
background-color: rgba(245, 245, 245, 1) !important;
|
|
||||||
box-shadow: 0 0 6px rgba(30, 144, 255, 0);
|
|
||||||
text-align: center;
|
|
||||||
min-width: auto;
|
|
||||||
|
|
||||||
&.is-active {
|
|
||||||
width: 100%;
|
|
||||||
height: 44px;
|
|
||||||
line-height: 44px;
|
|
||||||
padding: 0px 50px 0px 0px !important;
|
|
||||||
margin: 0;
|
|
||||||
color: rgba(0, 0, 0, 1) !important;
|
|
||||||
font-size: 14px;
|
|
||||||
border-radius: 0;
|
|
||||||
border-width: 0;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: rgba(0, 0, 0, 0);
|
|
||||||
background-color: rgba(102, 102, 102, 0) !important;
|
|
||||||
box-shadow: 0 0 6px rgba(30, 144, 255, 0);
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
width: 100%;
|
|
||||||
height: 48px;
|
|
||||||
line-height: 48px;
|
|
||||||
padding: 0px 50px 0px 0px !important;
|
|
||||||
margin: 0px 0px 0px 0px;
|
|
||||||
color: #fff !important;
|
|
||||||
font-size: 14px;
|
|
||||||
border-radius: 0;
|
|
||||||
border-width: 0;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: rgba(0, 0, 0, .3);
|
|
||||||
background-color: rgba(193, 227, 229, 1) !important;
|
|
||||||
box-shadow: 0 0 6px rgba(30, 144, 255, 0);
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<style>
|
|
||||||
|
|
||||||
.el-menu--horizontal .el-menu--popup {
|
|
||||||
width: 100%;
|
|
||||||
height: auto;
|
|
||||||
padding: 0px 0px 0px 0px;
|
|
||||||
margin: 0px 0px 0px -3px;
|
|
||||||
border-radius: 0;
|
|
||||||
border-width: 0;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: rgba(0,0,0,.3);
|
|
||||||
background-color: rgba(245, 245, 245, 1);
|
|
||||||
box-shadow: 0 0 0px rgba(0, 0, 0, .3);
|
|
||||||
min-width: auto;
|
|
||||||
}
|
|
||||||
.el-menu--horizontal .el-menu--popup .el-menu-item {
|
|
||||||
width: 100%;
|
|
||||||
height: 48px;
|
|
||||||
line-height: 48px;
|
|
||||||
padding: 0px 50px 0px 0px;
|
|
||||||
margin: 0px 0px 0px 0px;
|
|
||||||
color: #333 !important;
|
|
||||||
font-size: 14px;
|
|
||||||
border-radius: 0;
|
|
||||||
border-width: 0;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: rgba(0, 0, 0, .3);
|
|
||||||
background-color: rgba(245, 245, 245, 1) !important;
|
|
||||||
box-shadow: 0 0 6px rgba(30, 144, 255, 0);
|
|
||||||
text-align: center;
|
|
||||||
min-width: auto;
|
|
||||||
}
|
|
||||||
.el-menu--horizontal .el-menu--popup .el-menu-item:hover {
|
|
||||||
width: 100%;
|
|
||||||
height: 48px;
|
|
||||||
line-height: 48px;
|
|
||||||
padding: 0px 50px 0px 0px;
|
|
||||||
margin: 0px 0px 0px 0px;
|
|
||||||
color: #fff !important;
|
|
||||||
font-size: 14px;
|
|
||||||
border-radius: 0;
|
|
||||||
border-width: 0;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: rgba(0, 0, 0, .3);
|
|
||||||
background-color: rgba(193, 227, 229, 1) !important;
|
|
||||||
box-shadow: 0 0 6px rgba(30, 144, 255, 0);
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,76 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-aside class="index-aside" width="200px">
|
|
||||||
<div class="index-aside-inner">
|
|
||||||
<div v-for="item in menuList" v-bind:key="item.roleName">
|
|
||||||
<el-menu
|
|
||||||
background-color="#263238"
|
|
||||||
text-color="#fff"
|
|
||||||
active-text-color="#ffd04b"
|
|
||||||
default-active="0"
|
|
||||||
v-if="role==item.roleName"
|
|
||||||
>
|
|
||||||
<el-menu-item @click="menuHandler('home')" index="0">首页</el-menu-item>
|
|
||||||
<el-submenu
|
|
||||||
:index="1+''"
|
|
||||||
>
|
|
||||||
<template slot="title">
|
|
||||||
<span>个人中心</span>
|
|
||||||
</template>
|
|
||||||
<el-menu-item
|
|
||||||
@click="menuHandler('updatePassword')"
|
|
||||||
:index="1-1"
|
|
||||||
>修改密码</el-menu-item>
|
|
||||||
<el-menu-item
|
|
||||||
@click="menuHandler('center')"
|
|
||||||
:index="1-2"
|
|
||||||
>个人信息</el-menu-item>
|
|
||||||
</el-submenu>
|
|
||||||
<el-submenu
|
|
||||||
v-for=" (menu,index) in item.backMenu"
|
|
||||||
v-bind:key="menu.menu"
|
|
||||||
:index="index+2+''"
|
|
||||||
>
|
|
||||||
<template slot="title">
|
|
||||||
<span>{{menu.menu}}</span>
|
|
||||||
</template>
|
|
||||||
<el-menu-item
|
|
||||||
v-for=" (child,sort) in menu.child"
|
|
||||||
v-bind:key="sort"
|
|
||||||
@click="menuHandler(child.tableName)"
|
|
||||||
:index="(index+2)+'-'+sort"
|
|
||||||
>{{child.menu}}</el-menu-item>
|
|
||||||
</el-submenu>
|
|
||||||
</el-menu>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-aside>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import menu from "@/utils/menu";
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
menuList: [],
|
|
||||||
dynamicMenuRoutes: [],
|
|
||||||
role: ""
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
let menus = menu.list();
|
|
||||||
this.menuList = menus;
|
|
||||||
this.role = this.$storage.get("role");
|
|
||||||
console.log(this.menuList)
|
|
||||||
console.log(this.role)
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
menuHandler(name) {
|
|
||||||
this.$router.push({
|
|
||||||
name: name
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
|
|
||||||
</style>
|
|
@ -1,51 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-submenu v-if="menu.list && menu.list.length >= 1" :index="menu.menuId + ''">
|
|
||||||
<template slot="title">
|
|
||||||
<span>{{ menu.name }}</span>
|
|
||||||
</template>
|
|
||||||
<sub-menu
|
|
||||||
v-for="item in menu.list"
|
|
||||||
:key="item.menuId"
|
|
||||||
:menu="item"
|
|
||||||
:dynamicMenuRoutes="dynamicMenuRoutes"
|
|
||||||
></sub-menu>
|
|
||||||
</el-submenu>
|
|
||||||
<el-menu-item v-else :index="menu.menuId + ''" @click="gotoRouteHandle(menu)">
|
|
||||||
<span>{{ menu.name }}</span>
|
|
||||||
</el-menu-item>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import SubMenu from "./IndexAsideSub";
|
|
||||||
export default {
|
|
||||||
name: "sub-menu",
|
|
||||||
props: {
|
|
||||||
menu: {
|
|
||||||
type: Object,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
dynamicMenuRoutes: {
|
|
||||||
type: Array,
|
|
||||||
required: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
SubMenu
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 通过menuId与动态(菜单)路由进行匹配跳转至指定路由
|
|
||||||
gotoRouteHandle(menu) {
|
|
||||||
var route = this.dynamicMenuRoutes.filter(
|
|
||||||
item => item.meta.menuId === menu.menuId
|
|
||||||
);
|
|
||||||
if (route.length >= 1) {
|
|
||||||
if (route[0].component != null) {
|
|
||||||
this.$router.replace({ name: route[0].name });
|
|
||||||
} else {
|
|
||||||
this.$router.push({ name: "404" });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
@ -1,185 +0,0 @@
|
|||||||
<template>
|
|
||||||
<!-- <el-header>
|
|
||||||
<el-menu background-color="#00c292" text-color="#FFFFFF" active-text-color="#FFFFFF" mode="horizontal">
|
|
||||||
<div class="fl title">{{this.$project.projectName}}</div>
|
|
||||||
<div class="fr logout" style="display:flex;">
|
|
||||||
<el-menu-item index="3">
|
|
||||||
<div>{{this.$storage.get('role')}} {{this.$storage.get('adminName')}}</div>
|
|
||||||
</el-menu-item>
|
|
||||||
<el-menu-item @click="onLogout" index="2">
|
|
||||||
<div>退出登录</div>
|
|
||||||
</el-menu-item>
|
|
||||||
</div>
|
|
||||||
</el-menu>
|
|
||||||
</el-header> -->
|
|
||||||
<div class="navbar" :style="{background:heads.headBgColor,height:heads.headHeight,boxShadow:heads.headBoxShadow,lineHeight:heads.headHeight}">
|
|
||||||
<div class="title-menu" :style="{justifyContent:heads.headTitleStyle=='1'?'flex-start':'center'}">
|
|
||||||
<el-image v-if="heads.headTitleImg" class="title-img" :style="{width:heads.headTitleImgWidth,height:heads.headTitleImgHeight,boxShadow:heads.headTitleImgBoxShadow,borderRadius:heads.headTitleImgBorderRadius}" :src="heads.headTitleImgUrl" fit="cover"></el-image>
|
|
||||||
<div class="title-name" :style="{color:heads.headFontColor,fontSize:heads.headFontSize}">{{this.$project.projectName}}</div>
|
|
||||||
</div>
|
|
||||||
<div class="right-menu">
|
|
||||||
<div class="user-info" :style="{color:heads.headUserInfoFontColor,fontSize:heads.headUserInfoFontSize}">{{this.$storage.get('role')}} {{this.$storage.get('adminName')}}</div>
|
|
||||||
<div v-if="this.$storage.get('role')!='管理员'" class="logout" :style="{color:heads.headLogoutFontColor,fontSize:heads.headLogoutFontSize}" @click="onIndexTap">退出到前台</div>
|
|
||||||
<div class="logout" :style="{color:heads.headLogoutFontColor,fontSize:heads.headLogoutFontSize}" @click="onLogout">退出登录</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
dialogVisible: false,
|
|
||||||
ruleForm: {},
|
|
||||||
user: {},
|
|
||||||
heads: {"headLogoutFontHoverColor":"rgba(255, 215, 0, 1)","headFontSize":"20px","headUserInfoFontColor":"rgba(255, 255, 255, 1)","headBoxShadow":"0px 0px 0px 0px rgba(36, 139, 146, 1)","headTitleImgHeight":"44px","headLogoutFontHoverBgColor":"rgba(36, 139, 146, 1)","headFontColor":"rgba(255, 255, 255, 1)","headTitleImg":false,"headHeight":"60px","headTitleImgBorderRadius":"22px","headTitleImgUrl":"http://codegen.caihongy.cn/20201021/cc7d45d9c8164b58b18351764eba9be1.jpg","headBgColor":"linear-gradient(to right,rgba(142, 209, 214, 1) , rgba(36, 139, 146, 1))","headTitleImgBoxShadow":"0 1px 6px #444","headLogoutFontColor":"rgba(255, 255, 255, 1)","headUserInfoFontSize":"16px","headTitleImgWidth":"44px","headTitleStyle":"1","headLogoutFontSize":"16px"},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.setHeaderStyle()
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
let sessionTable = this.$storage.get("sessionTable")
|
|
||||||
this.$http({
|
|
||||||
url: sessionTable + '/session',
|
|
||||||
method: "get"
|
|
||||||
}).then(({
|
|
||||||
data
|
|
||||||
}) => {
|
|
||||||
if (data && data.code === 0) {
|
|
||||||
this.user = data.data;
|
|
||||||
this.$storage.set('userid',data.data.id);
|
|
||||||
} else {
|
|
||||||
let message = this.$message
|
|
||||||
message.error(data.msg);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
onLogout() {
|
|
||||||
let storage = this.$storage
|
|
||||||
let router = this.$router
|
|
||||||
storage.clear()
|
|
||||||
router.replace({
|
|
||||||
name: "login"
|
|
||||||
});
|
|
||||||
},
|
|
||||||
onIndexTap(){
|
|
||||||
window.location.href = `${this.$base.indexUrl}`
|
|
||||||
},
|
|
||||||
setHeaderStyle() {
|
|
||||||
this.$nextTick(()=>{
|
|
||||||
document.querySelectorAll('.navbar .right-menu .logout').forEach(el=>{
|
|
||||||
el.addEventListener("mouseenter", e => {
|
|
||||||
e.stopPropagation()
|
|
||||||
el.style.backgroundColor = this.heads.headLogoutFontHoverBgColor
|
|
||||||
el.style.color = this.heads.headLogoutFontHoverColor
|
|
||||||
})
|
|
||||||
el.addEventListener("mouseleave", e => {
|
|
||||||
e.stopPropagation()
|
|
||||||
el.style.backgroundColor = "transparent"
|
|
||||||
el.style.color = this.heads.headLogoutFontColor
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.navbar {
|
|
||||||
height: 60px;
|
|
||||||
line-height: 60px;
|
|
||||||
width: 100%;
|
|
||||||
padding: 0 34px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
background-color: #ff00ff;
|
|
||||||
position: relative;
|
|
||||||
z-index: 111;
|
|
||||||
|
|
||||||
.right-menu {
|
|
||||||
position: absolute;
|
|
||||||
right: 34px;
|
|
||||||
top: 0;
|
|
||||||
height: 100%;
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-end;
|
|
||||||
align-items: center;
|
|
||||||
z-index: 111;
|
|
||||||
|
|
||||||
.user-info {
|
|
||||||
font-size: 16px;
|
|
||||||
color: red;
|
|
||||||
padding: 0 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.logout {
|
|
||||||
font-size: 16px;
|
|
||||||
color: red;
|
|
||||||
padding: 0 12px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.title-menu {
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-start;
|
|
||||||
align-items: center;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
|
|
||||||
.title-img {
|
|
||||||
width: 44px;
|
|
||||||
height: 44px;
|
|
||||||
border-radius: 22px;
|
|
||||||
box-shadow: 0 1px 6px #444;
|
|
||||||
margin-right: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title-name {
|
|
||||||
font-size: 24px;
|
|
||||||
color: #fff;
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// .el-header .fr {
|
|
||||||
// float: right;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .el-header .fl {
|
|
||||||
// float: left;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .el-header {
|
|
||||||
// width: 100%;
|
|
||||||
// color: #333;
|
|
||||||
// text-align: center;
|
|
||||||
// line-height: 60px;
|
|
||||||
// padding: 0;
|
|
||||||
// z-index: 99;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .logo {
|
|
||||||
// width: 60px;
|
|
||||||
// height: 60px;
|
|
||||||
// margin-left: 70px;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .avator {
|
|
||||||
// width: 40px;
|
|
||||||
// height: 40px;
|
|
||||||
// background: #ffffff;
|
|
||||||
// border-radius: 50%;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .title {
|
|
||||||
// color: #ffffff;
|
|
||||||
// font-size: 20px;
|
|
||||||
// font-weight: bold;
|
|
||||||
// margin-left: 20px;
|
|
||||||
// }
|
|
||||||
</style>
|
|
@ -1,89 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-header>
|
|
||||||
<el-menu background-color="#00c292" text-color="#FFFFFF" active-text-color="#FFFFFF" mode="horizontal">
|
|
||||||
<div class="fl title">{{this.$project.projectName}}</div>
|
|
||||||
<div class="fr logout" style="display:flex;">
|
|
||||||
<el-menu-item index="3">
|
|
||||||
<div>{{this.$storage.get('role')}} {{this.$storage.get('adminName')}}</div>
|
|
||||||
</el-menu-item>
|
|
||||||
<el-menu-item @click="onLogout" index="2">
|
|
||||||
<div>退出登录</div>
|
|
||||||
</el-menu-item>
|
|
||||||
</div>
|
|
||||||
</el-menu>
|
|
||||||
</el-header>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
dialogVisible: false,
|
|
||||||
ruleForm: {},
|
|
||||||
user: {}
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.$http({
|
|
||||||
url: `${this.$storage.get("sessionTable")}/session`,
|
|
||||||
method: "get"
|
|
||||||
}).then(({
|
|
||||||
data
|
|
||||||
}) => {
|
|
||||||
if (data && data.code === 0) {
|
|
||||||
this.user = data.data;
|
|
||||||
} else {
|
|
||||||
this.$message.error(data.msg);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
onLogout() {
|
|
||||||
this.$storage.remove("Token");
|
|
||||||
this.$router.replace({
|
|
||||||
name: "login"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.el-header .fr {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-header .fl {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-header {
|
|
||||||
width: 100%;
|
|
||||||
color: #333;
|
|
||||||
text-align: center;
|
|
||||||
line-height: 60px;
|
|
||||||
padding: 0;
|
|
||||||
z-index: 99;
|
|
||||||
}
|
|
||||||
|
|
||||||
.logo {
|
|
||||||
width: 60px;
|
|
||||||
height: 60px;
|
|
||||||
margin-left: 70px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.avator {
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
background: #ffffff;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title {
|
|
||||||
color: #ffffff;
|
|
||||||
font-size: 20px;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-left: 20px;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,143 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-main style="padding: 10px 20px;
|
|
||||||
background: url(http://codegen.caihongy.cn/20211124/873782b96c3543ceb98920965ce530c9.jpg);
|
|
||||||
boxShadow: 0 0 6px rgba(0,0,0,0);
|
|
||||||
">
|
|
||||||
<bread-crumbs :title="title" class="bread-crumbs"></bread-crumbs>
|
|
||||||
<router-view class="router-view" style="height:auto;background: transparent;"></router-view>
|
|
||||||
</el-main>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import menu from "@/utils/menu";
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
menuList: [],
|
|
||||||
role: "",
|
|
||||||
currentIndex: -2,
|
|
||||||
itemMenu: [],
|
|
||||||
title: '',
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
let menus = menu.list();
|
|
||||||
this.menuList = menus;
|
|
||||||
this.role = this.$storage.get("role");
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.init();
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
init(){
|
|
||||||
this.$nextTick(()=>{
|
|
||||||
// let h = document.getElementsByClassName('el-aside')[0].clientHeight
|
|
||||||
// document.getElementsByClassName('el-main')[0].style.minHeight = "calc(100vh - 60px - " + h+'px)'
|
|
||||||
})
|
|
||||||
},
|
|
||||||
menuHandler(menu) {
|
|
||||||
this.$router.push({
|
|
||||||
name: menu.tableName
|
|
||||||
});
|
|
||||||
this.title = menu.menu;
|
|
||||||
},
|
|
||||||
titleChange(index, menus) {
|
|
||||||
this.currentIndex = index
|
|
||||||
this.itemMenu = menus;
|
|
||||||
console.log(menus);
|
|
||||||
},
|
|
||||||
homeChange(index) {
|
|
||||||
this.itemMenu = [];
|
|
||||||
this.title = ""
|
|
||||||
this.currentIndex = index
|
|
||||||
this.$router.push({
|
|
||||||
name: 'home'
|
|
||||||
});
|
|
||||||
},
|
|
||||||
centerChange(index) {
|
|
||||||
this.itemMenu = [{
|
|
||||||
"buttons": ["新增", "查看", "修改", "删除"],
|
|
||||||
"menu": "修改密码",
|
|
||||||
"tableName": "updatePassword"
|
|
||||||
}, {
|
|
||||||
"buttons": ["新增", "查看", "修改", "删除"],
|
|
||||||
"menu": "个人信息",
|
|
||||||
"tableName": "center"
|
|
||||||
}];
|
|
||||||
this.title = ""
|
|
||||||
this.currentIndex = index
|
|
||||||
this.$router.push({
|
|
||||||
name: 'home'
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
a {
|
|
||||||
text-decoration: none;
|
|
||||||
color: #555;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover {
|
|
||||||
background: #00c292;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-list {
|
|
||||||
width: 100%;
|
|
||||||
margin: 0 auto;
|
|
||||||
text-align: left;
|
|
||||||
margin-top: 20px;
|
|
||||||
|
|
||||||
.nav-title {
|
|
||||||
display: inline-block;
|
|
||||||
font-size: 15px;
|
|
||||||
color: #333;
|
|
||||||
padding: 15px 25px;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-title.active {
|
|
||||||
color: #555;
|
|
||||||
cursor: default;
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-item {
|
|
||||||
margin-top: 20px;
|
|
||||||
background: #FFFFFF;
|
|
||||||
padding: 15px 0;
|
|
||||||
|
|
||||||
.menu {
|
|
||||||
padding: 15px 25px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-main {
|
|
||||||
// background-color: #F6F8FA;
|
|
||||||
padding: 0 24px;
|
|
||||||
min-height: 100vh;
|
|
||||||
// padding-top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.router-view {
|
|
||||||
padding: 10px;
|
|
||||||
margin-top: 10px;
|
|
||||||
background: #FFFFFF;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bread-crumbs {
|
|
||||||
width: 100%;
|
|
||||||
// border-bottom: 1px solid #e9eef3;
|
|
||||||
// border-top: 1px solid #e9eef3;
|
|
||||||
margin-top: 10px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.detail-form-content {
|
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,124 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-main>
|
|
||||||
<bread-crumbs :title="title" class="bread-crumbs"></bread-crumbs>
|
|
||||||
<router-view class="router-view"></router-view>
|
|
||||||
</el-main>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import menu from "@/utils/menu";
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
menuList: [],
|
|
||||||
role: "",
|
|
||||||
currentIndex: -2,
|
|
||||||
itemMenu: [],
|
|
||||||
title: ''
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
let menus = menu.list();
|
|
||||||
this.menuList = menus;
|
|
||||||
this.role = this.$storage.get("role");
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
menuHandler(menu) {
|
|
||||||
this.$router.push({
|
|
||||||
name: menu.tableName
|
|
||||||
});
|
|
||||||
this.title = menu.menu;
|
|
||||||
},
|
|
||||||
titleChange(index, menus) {
|
|
||||||
this.currentIndex = index
|
|
||||||
this.itemMenu = menus;
|
|
||||||
console.log(menus);
|
|
||||||
},
|
|
||||||
homeChange(index) {
|
|
||||||
this.itemMenu = [];
|
|
||||||
this.title = ""
|
|
||||||
this.currentIndex = index
|
|
||||||
this.$router.push({
|
|
||||||
name: 'home'
|
|
||||||
});
|
|
||||||
},
|
|
||||||
centerChange(index) {
|
|
||||||
this.itemMenu = [{
|
|
||||||
"buttons": ["新增", "查看", "修改", "删除"],
|
|
||||||
"menu": "修改密码",
|
|
||||||
"tableName": "updatePassword"
|
|
||||||
}, {
|
|
||||||
"buttons": ["新增", "查看", "修改", "删除"],
|
|
||||||
"menu": "个人信息",
|
|
||||||
"tableName": "center"
|
|
||||||
}];
|
|
||||||
this.title = ""
|
|
||||||
this.currentIndex = index
|
|
||||||
this.$router.push({
|
|
||||||
name: 'home'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
a {
|
|
||||||
text-decoration: none;
|
|
||||||
color: #555;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover {
|
|
||||||
background: #00c292;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-list {
|
|
||||||
width: 100%;
|
|
||||||
margin: 0 auto;
|
|
||||||
text-align: left;
|
|
||||||
margin-top: 20px;
|
|
||||||
|
|
||||||
.nav-title {
|
|
||||||
display: inline-block;
|
|
||||||
font-size: 15px;
|
|
||||||
color: #333;
|
|
||||||
padding: 15px 25px;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-title.active {
|
|
||||||
color: #555;
|
|
||||||
cursor: default;
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-item {
|
|
||||||
margin-top: 20px;
|
|
||||||
background: #FFFFFF;
|
|
||||||
padding: 15px 0;
|
|
||||||
|
|
||||||
.menu {
|
|
||||||
padding: 15px 25px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-main {
|
|
||||||
background-color: #F6F8FA;
|
|
||||||
padding: 0 24px;
|
|
||||||
// padding-top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.router-view {
|
|
||||||
padding: 10px;
|
|
||||||
margin-top: 10px;
|
|
||||||
background: #FFFFFF;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bread-crumbs {
|
|
||||||
width: 100%;
|
|
||||||
// border-bottom: 1px solid #e9eef3;
|
|
||||||
// border-top: 1px solid #e9eef3;
|
|
||||||
margin-top: 10px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,9 +0,0 @@
|
|||||||
import Vue from 'vue'
|
|
||||||
import SvgIcon from '@/components/SvgIcon'// svg component
|
|
||||||
|
|
||||||
// register globally
|
|
||||||
Vue.component('svg-icon', SvgIcon)
|
|
||||||
|
|
||||||
const req = require.context('./svg/svg', false, /\.svg$/)
|
|
||||||
const requireAll = requireContext => requireContext.keys().map(requireContext)
|
|
||||||
requireAll(req)
|
|
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 629 B |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 990 B |
Before Width: | Height: | Size: 210 B |
Before Width: | Height: | Size: 765 B |
Before Width: | Height: | Size: 356 B |
Before Width: | Height: | Size: 300 B |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 921 B |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 379 B |
Before Width: | Height: | Size: 705 B |
Before Width: | Height: | Size: 457 B |
Before Width: | Height: | Size: 449 B |
Before Width: | Height: | Size: 727 B |
Before Width: | Height: | Size: 627 B |
Before Width: | Height: | Size: 384 B |
Before Width: | Height: | Size: 569 B |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 821 B |
Before Width: | Height: | Size: 607 B |
Before Width: | Height: | Size: 421 B |