@ -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 |