Compare commits
63 Commits
Author | SHA1 | Date | |
---|---|---|---|
f713dfd5ba | |||
ac1cd2e9b7 | |||
71adc2622e | |||
7e8c5da593 | |||
d249fdd576 | |||
cdda49370f | |||
9cd7373f90 | |||
15bf339118 | |||
0c392ee354 | |||
3aa898fee8 | |||
fd6e7ad959 | |||
a634bdfad4 | |||
52e7a355bf | |||
fe484c0eec | |||
a89f773825 | |||
dfac0eaa64 | |||
ccdd94ed1a | |||
82eed0a470 | |||
b0f9f4e48d | |||
e4fff250d2 | |||
6a3f5d820f | |||
bfb0375e84 | |||
2a160aaabc | |||
c768a04b90 | |||
a963a76d01 | |||
b7df4c2235 | |||
7439e216b9 | |||
8e3dcf4e5b | |||
60017b58aa | |||
55c81f3df6 | |||
e3443e9a97 | |||
bd13a42b7d | |||
64ec3b07c1 | |||
0eeb9a3724 | |||
03a069dca2 | |||
3f65685e17 | |||
67a7935728 | |||
e3fbd6e0f3 | |||
a5bb97e43f | |||
d490ca3945 | |||
cebd7f8f28 | |||
1f93a93e69 | |||
a1c328714e | |||
40bcfa916f | |||
01384e15e0 | |||
7b01cf6be8 | |||
9d65be4a67 | |||
f288a5002c | |||
ded2b3e06d | |||
93b556f09f | |||
7ac97a6413 | |||
a26d1b5203 | |||
c41bcc6a35 | |||
0a22d33d78 | |||
497d86d491 | |||
6dda3fd9d2 | |||
655e856ad9 | |||
66b911ab6a | |||
5c35da664e | |||
abc401fed2 | |||
863d65fa7c | |||
7fb1741a89 | |||
5ab7f22f7c |
573
.gitignore
vendored
573
.gitignore
vendored
@ -1,162 +1,53 @@
|
||||
#.idea/
|
||||
.vs/
|
||||
x64/
|
||||
out/
|
||||
ipch/
|
||||
win32/
|
||||
win64/
|
||||
Debug/
|
||||
Release/
|
||||
GeneratedFiles/
|
||||
*.~sql
|
||||
*.~pck
|
||||
*.~*
|
||||
*.pkg
|
||||
*.suo
|
||||
*.sdf
|
||||
*.opensdf
|
||||
*.db
|
||||
*.obj
|
||||
workspace.xml
|
||||
Browse.VC.opendb
|
||||
# ---> C++
|
||||
# Prerequisites
|
||||
*.d
|
||||
# ---> Java
|
||||
# Compiled class file
|
||||
*.class
|
||||
|
||||
# Compiled Object files
|
||||
*.slo
|
||||
*.lo
|
||||
*.o
|
||||
*.obj
|
||||
# Log file
|
||||
*.log
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
# BlueJ files
|
||||
*.ctxt
|
||||
|
||||
# Compiled Dynamic libraries
|
||||
*.so
|
||||
*.dylib
|
||||
*.dll
|
||||
# Mobile Tools for Java (J2ME)
|
||||
.mtj.tmp/
|
||||
|
||||
# Fortran module files
|
||||
*.mod
|
||||
*.smod
|
||||
# Package Files #
|
||||
*.jar
|
||||
*.war
|
||||
*.nar
|
||||
*.ear
|
||||
*.zip
|
||||
*.tar.gz
|
||||
*.rar
|
||||
|
||||
# Compiled Static libraries
|
||||
*.lai
|
||||
*.la
|
||||
*.a
|
||||
*.lib
|
||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||
hs_err_pid*
|
||||
replay_pid*
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
# ---> Maven
|
||||
target/
|
||||
pom.xml.tag
|
||||
pom.xml.releaseBackup
|
||||
pom.xml.versionsBackup
|
||||
pom.xml.next
|
||||
release.properties
|
||||
dependency-reduced-pom.xml
|
||||
buildNumber.properties
|
||||
.mvn/timing.properties
|
||||
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
|
||||
.mvn/wrapper/maven-wrapper.jar
|
||||
|
||||
# ---> C
|
||||
# Prerequisites
|
||||
*.d
|
||||
|
||||
# Object files
|
||||
*.o
|
||||
*.ko
|
||||
*.obj
|
||||
*.elf
|
||||
|
||||
# Linker output
|
||||
*.ilk
|
||||
*.map
|
||||
*.exp
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Libraries
|
||||
*.lib
|
||||
*.a
|
||||
*.la
|
||||
*.lo
|
||||
|
||||
# Shared objects (inc. Windows DLLs)
|
||||
*.dll
|
||||
*.so
|
||||
*.so.*
|
||||
*.dylib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
*.i*86
|
||||
*.x86_64
|
||||
*.hex
|
||||
|
||||
# Debug files
|
||||
*.dSYM/
|
||||
*.su
|
||||
*.idb
|
||||
*.pdb
|
||||
|
||||
# Kernel Module Compile Results
|
||||
*.mod*
|
||||
*.cmd
|
||||
.tmp_versions/
|
||||
modules.order
|
||||
Module.symvers
|
||||
Mkfile.old
|
||||
dkms.conf
|
||||
|
||||
# ---> CMake
|
||||
CMakeLists.txt.user
|
||||
CMakeCache.txt
|
||||
CMakeFiles
|
||||
CMakeScripts
|
||||
Testing
|
||||
Makefile
|
||||
cmake_install.cmake
|
||||
install_manifest.txt
|
||||
compile_commands.json
|
||||
CTestTestfile.cmake
|
||||
_deps
|
||||
|
||||
# ---> Vim
|
||||
# Swap
|
||||
[._]*.s[a-v][a-z]
|
||||
!*.svg # comment out if you don't need vector files
|
||||
[._]*.sw[a-p]
|
||||
[._]s[a-rt-v][a-z]
|
||||
[._]ss[a-gi-z]
|
||||
[._]sw[a-p]
|
||||
|
||||
# Session
|
||||
Session.vim
|
||||
Sessionx.vim
|
||||
|
||||
# Temporary
|
||||
.netrwhist
|
||||
*~
|
||||
# Auto-generated tag files
|
||||
tags
|
||||
# Persistent undo
|
||||
[._]*.un~
|
||||
|
||||
# ---> VisualStudioCode
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
*.code-workspace
|
||||
|
||||
# Local History for Visual Studio Code
|
||||
.history/
|
||||
# Eclipse m2e generated files
|
||||
# Eclipse Core
|
||||
.project
|
||||
# JDT-specific (Eclipse Java Development Tools)
|
||||
.classpath
|
||||
|
||||
# ---> VisualStudio
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
##
|
||||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
|
||||
|
||||
# User-specific files
|
||||
*.rsuser
|
||||
@ -245,6 +136,7 @@ StyleCopReport.xml
|
||||
*.tmp_proj
|
||||
*_wpftmp.csproj
|
||||
*.log
|
||||
*.tlog
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
@ -448,6 +340,17 @@ node_modules/
|
||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||
*.vbw
|
||||
|
||||
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
|
||||
*.vbp
|
||||
|
||||
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
|
||||
*.dsw
|
||||
*.dsp
|
||||
|
||||
# Visual Studio 6 technical files
|
||||
*.ncb
|
||||
*.aps
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
@ -504,6 +407,9 @@ ASALocalRun/
|
||||
# Local History for Visual Studio
|
||||
.localhistory/
|
||||
|
||||
# Visual Studio History (VSHistory) files
|
||||
.vshistory/
|
||||
|
||||
# BeatPulse healthcheck temp database
|
||||
healthchecksdb
|
||||
|
||||
@ -516,3 +422,376 @@ MigrationBackup/
|
||||
# Fody - auto-generated XML schema
|
||||
FodyWeavers.xsd
|
||||
|
||||
# VS Code files for those working on multiple tools
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
*.code-workspace
|
||||
|
||||
# Local History for Visual Studio Code
|
||||
.history/
|
||||
|
||||
# Windows Installer files from build outputs
|
||||
*.cab
|
||||
*.msi
|
||||
*.msix
|
||||
*.msm
|
||||
*.msp
|
||||
|
||||
# JetBrains Rider
|
||||
*.sln.iml
|
||||
|
||||
# ---> VisualStudioCode
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
!.vscode/*.code-snippets
|
||||
|
||||
# Local History for Visual Studio Code
|
||||
.history/
|
||||
|
||||
# Built Visual Studio Code Extensions
|
||||
*.vsix
|
||||
|
||||
# ---> C++
|
||||
# Prerequisites
|
||||
*.d
|
||||
|
||||
# Compiled Object files
|
||||
*.slo
|
||||
*.lo
|
||||
*.o
|
||||
*.obj
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Compiled Dynamic libraries
|
||||
*.so
|
||||
*.dylib
|
||||
*.dll
|
||||
|
||||
# Fortran module files
|
||||
*.mod
|
||||
*.smod
|
||||
|
||||
# Compiled Static libraries
|
||||
*.lai
|
||||
*.la
|
||||
*.a
|
||||
*.lib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
|
||||
# ---> Python
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
share/python-wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.nox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
cover/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
db.sqlite3-journal
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
.pybuilder/
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# IPython
|
||||
profile_default/
|
||||
ipython_config.py
|
||||
|
||||
# pyenv
|
||||
# For a library or package, you might want to ignore these files since the code is
|
||||
# intended to run in multiple environments; otherwise, check them in:
|
||||
# .python-version
|
||||
|
||||
# pipenv
|
||||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||
# install all needed dependencies.
|
||||
#Pipfile.lock
|
||||
|
||||
# poetry
|
||||
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
||||
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||
# commonly ignored for libraries.
|
||||
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
||||
#poetry.lock
|
||||
|
||||
# pdm
|
||||
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
||||
#pdm.lock
|
||||
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
||||
# in version control.
|
||||
# https://pdm.fming.dev/#use-with-ide
|
||||
.pdm.toml
|
||||
|
||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
||||
__pypackages__/
|
||||
|
||||
# Celery stuff
|
||||
celerybeat-schedule
|
||||
celerybeat.pid
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
|
||||
# pytype static type analyzer
|
||||
.pytype/
|
||||
|
||||
# Cython debug symbols
|
||||
cython_debug/
|
||||
|
||||
# PyCharm
|
||||
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
||||
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
||||
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||
#.idea/
|
||||
|
||||
# ---> Eclipse
|
||||
.metadata
|
||||
bin/
|
||||
tmp/
|
||||
*.tmp
|
||||
*.bak
|
||||
*.swp
|
||||
*~.nib
|
||||
local.properties
|
||||
.settings/
|
||||
.loadpath
|
||||
.recommenders
|
||||
|
||||
# External tool builders
|
||||
.externalToolBuilders/
|
||||
|
||||
# Locally stored "Eclipse launch configurations"
|
||||
*.launch
|
||||
|
||||
# PyDev specific (Python IDE for Eclipse)
|
||||
*.pydevproject
|
||||
|
||||
# CDT-specific (C/C++ Development Tooling)
|
||||
.cproject
|
||||
|
||||
# CDT- autotools
|
||||
.autotools
|
||||
|
||||
# Java annotation processor (APT)
|
||||
.factorypath
|
||||
|
||||
# PDT-specific (PHP Development Tools)
|
||||
.buildpath
|
||||
|
||||
# sbteclipse plugin
|
||||
.target
|
||||
|
||||
# Tern plugin
|
||||
.tern-project
|
||||
|
||||
# TeXlipse plugin
|
||||
.texlipse
|
||||
|
||||
# STS (Spring Tool Suite)
|
||||
.springBeans
|
||||
|
||||
# Code Recommenders
|
||||
.recommenders/
|
||||
|
||||
# Annotation Processing
|
||||
.apt_generated/
|
||||
.apt_generated_test/
|
||||
|
||||
# Scala IDE specific (Scala & Java development for Eclipse)
|
||||
.cache-main
|
||||
.scala_dependencies
|
||||
.worksheet
|
||||
|
||||
# Uncomment this line if you wish to ignore the project description file.
|
||||
# Typically, this file would be tracked if it contains build/dependency configurations:
|
||||
#.project
|
||||
|
||||
# ---> JetBrains
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
# User-specific stuff
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
|
||||
# AWS User-specific
|
||||
.idea/**/aws.xml
|
||||
|
||||
# Generated files
|
||||
.idea/**/contentModel.xml
|
||||
|
||||
# Sensitive or high-churn files
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
|
||||
# Gradle
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# Gradle and Maven with auto-import
|
||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||
# since they will be recreated, and may cause churn. Uncomment if using
|
||||
# auto-import.
|
||||
# .idea/artifacts
|
||||
# .idea/compiler.xml
|
||||
# .idea/jarRepositories.xml
|
||||
# .idea/modules.xml
|
||||
# .idea/*.iml
|
||||
# .idea/modules
|
||||
# *.iml
|
||||
# *.ipr
|
||||
|
||||
# CMake
|
||||
cmake-build-*/
|
||||
|
||||
# Mongo Explorer plugin
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
# File-based project format
|
||||
*.iws
|
||||
|
||||
# IntelliJ
|
||||
out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# SonarLint plugin
|
||||
.idea/sonarlint/
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
||||
# Editor-based Rest Client
|
||||
.idea/httpRequests
|
||||
|
||||
# Android studio 3.1+ serialized cache file
|
||||
.idea/caches/build_file_checksums.ser
|
||||
|
||||
*.~*
|
13
README.md
13
README.md
@ -1,3 +1,10 @@
|
||||
# car_dealer_util
|
||||
|
||||
车商渠道数据管理工具。
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-09-28 10:04:24
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-09-28 10:06:04
|
||||
* @FilePath: \undefinedd:\develop\cpicxim\car_dealer_util\README.md
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
|
14
code/java/car_dealer/.hintrc
Normal file
14
code/java/car_dealer/.hintrc
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"extends": [
|
||||
"development"
|
||||
],
|
||||
"hints": {
|
||||
"axe/forms": [
|
||||
"default",
|
||||
{
|
||||
"label": "off"
|
||||
}
|
||||
],
|
||||
"no-inline-styles": "off"
|
||||
}
|
||||
}
|
20
code/java/car_dealer/.vscode/c_cpp_properties.json
vendored
Normal file
20
code/java/car_dealer/.vscode/c_cpp_properties.json
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Win32",
|
||||
"includePath": [
|
||||
"${workspaceFolder}/**"
|
||||
],
|
||||
"defines": [
|
||||
"_DEBUG",
|
||||
"UNICODE",
|
||||
"_UNICODE"
|
||||
],
|
||||
"compilerPath": "C:\\Strawberry\\c\\bin\\gcc.exe",
|
||||
"cStandard": "gnu17",
|
||||
"cppStandard": "gnu++14",
|
||||
"intelliSenseMode": "windows-gcc-x64"
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
4
code/java/car_dealer/.vscode/settings.json
vendored
Normal file
4
code/java/car_dealer/.vscode/settings.json
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"java.configuration.updateBuildConfiguration": "automatic",
|
||||
"java.compile.nullAnalysis.mode": "automatic"
|
||||
}
|
106
code/java/car_dealer/pom.xml
Normal file
106
code/java/car_dealer/pom.xml
Normal file
@ -0,0 +1,106 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.cpic.xim</groupId>
|
||||
<artifactId>cardealer</artifactId>
|
||||
<packaging>war</packaging>
|
||||
<version>1.0</version>
|
||||
<name>车商渠道工具</name>
|
||||
<url>http://maven.apache.org</url>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-webmvc</artifactId>
|
||||
<version>5.3.23</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.oracle</groupId>
|
||||
<artifactId>ojdbc8</artifactId>
|
||||
<version>19.3.0.0.0</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>javax.servlet-api</artifactId>
|
||||
<version>4.0.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>javax.validation</groupId>
|
||||
<artifactId>validation-api</artifactId>
|
||||
<version>2.0.1.Final</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.hibernate</groupId>
|
||||
<artifactId>hibernate-validator</artifactId>
|
||||
<version>7.0.1.Final</version>
|
||||
</dependency>
|
||||
|
||||
<!-- jackson -->
|
||||
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>2.13.4</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
<version>2.13.4</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-annotations</artifactId>
|
||||
<version>2.13.4</version>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>2.11.0</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
|
||||
<dependency>
|
||||
<groupId>commons-fileupload</groupId>
|
||||
<artifactId>commons-fileupload</artifactId>
|
||||
<version>1.4</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
|
||||
<dependency>
|
||||
<groupId>javax.annotation</groupId>
|
||||
<artifactId>javax.annotation-api</artifactId>
|
||||
<version>1.3.2</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>cardealer</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-war-plugin</artifactId>
|
||||
<version>3.2.2</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
||||
<java.version>1.8</java.version>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
</project>
|
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-31 10:23:32
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-31 15:11:40
|
||||
* @FilePath: \car_dealer\src\main\java\com\cpic\xim\car_dealer\controllers\data\importer\CarDealerDataImport.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
package com.cpic.xim.car_dealer.controllers.data.importer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
@Controller
|
||||
@ResponseBody
|
||||
@RequestMapping( path = "/data/import/")
|
||||
public class CarDealerDataImport
|
||||
{
|
||||
@RequestMapping( "/importcardealer.do")
|
||||
public ImportResult importCarDealer( @RequestBody ImportRequest importRequest )
|
||||
{
|
||||
ArrayList<RecordErrorMessage> recordErrorMessages = new ArrayList<RecordErrorMessage>();
|
||||
ImportResult result = new ImportResult();
|
||||
|
||||
result.setFileName( "测试文件" );
|
||||
result.setFilePath( "测试" );
|
||||
result.setMessage( "测试" );
|
||||
result.setSuccess( true );
|
||||
result.setRecordErrorMessages( recordErrorMessages );
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,58 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-31 11:16:22
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-31 15:29:26
|
||||
* @FilePath: \car_dealer\src\main\java\com\cpic\xim\car_dealer\controllers\data\importer\importRequest.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
package com.cpic.xim.car_dealer.controllers.data.importer;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class ImportRequest
|
||||
{
|
||||
public ImportRequest()
|
||||
{}
|
||||
|
||||
public ImportRequest( String filePath, String tableName)
|
||||
{
|
||||
this.filePath = filePath;
|
||||
this.tableName = tableName;
|
||||
}
|
||||
|
||||
public String getFilePath()
|
||||
{
|
||||
return filePath;
|
||||
}
|
||||
|
||||
public void setFilePath( String filePath )
|
||||
{
|
||||
this.filePath = filePath;
|
||||
}
|
||||
|
||||
public String getTableName()
|
||||
{
|
||||
return tableName;
|
||||
}
|
||||
|
||||
public void setTableName( String tableName )
|
||||
{
|
||||
this.tableName = tableName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "{ \"file_path\":\"" + filePath + "\", \"table_name\":\"" + tableName + "\"}";
|
||||
}
|
||||
|
||||
@JsonProperty( "file_path")
|
||||
private String filePath;
|
||||
|
||||
@JsonProperty( "table_name")
|
||||
private String tableName;
|
||||
}
|
@ -0,0 +1,86 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-31 10:31:35
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-31 10:43:12
|
||||
* @FilePath: \car_dealer\src\main\java\com\cpic\xim\car_dealer\controllers\data\importer\ImportResult.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
package com.cpic.xim.car_dealer.controllers.data.importer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class ImportResult
|
||||
{
|
||||
ImportResult()
|
||||
{}
|
||||
|
||||
public String getFileName()
|
||||
{
|
||||
return fileName;
|
||||
}
|
||||
|
||||
public void setFileName( String fileName )
|
||||
{
|
||||
this.fileName = fileName;
|
||||
}
|
||||
|
||||
public String getFilePath()
|
||||
{
|
||||
return filePath;
|
||||
}
|
||||
|
||||
public void setFilePath( String filePath )
|
||||
{
|
||||
this.filePath = filePath;
|
||||
}
|
||||
|
||||
public boolean isSuccess()
|
||||
{
|
||||
return success;
|
||||
}
|
||||
|
||||
public void setSuccess( boolean success )
|
||||
{
|
||||
this.success = success;
|
||||
}
|
||||
|
||||
public String getMessage()
|
||||
{
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage( String message )
|
||||
{
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public ArrayList<RecordErrorMessage> getRecordErrorMessages()
|
||||
{
|
||||
return recordErrorMessages;
|
||||
}
|
||||
|
||||
public void setRecordErrorMessages( ArrayList<RecordErrorMessage> recordErrorMessages )
|
||||
{
|
||||
this.recordErrorMessages = recordErrorMessages;
|
||||
}
|
||||
|
||||
@JsonProperty( "file_name")
|
||||
private String fileName;
|
||||
|
||||
@JsonProperty( "file_path")
|
||||
private String filePath;
|
||||
|
||||
@JsonProperty( "success")
|
||||
private boolean success;
|
||||
|
||||
@JsonProperty( "message")
|
||||
private String message;
|
||||
|
||||
@JsonProperty( "record_error_messages")
|
||||
private ArrayList<RecordErrorMessage> recordErrorMessages;
|
||||
}
|
@ -0,0 +1,102 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-31 10:48:29
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-31 15:29:24
|
||||
* @FilePath: \car_dealer\src\main\java\com\cpic\xim\car_dealer\controllers\data\importer\RecordErrorMessage.java
|
||||
* @Description: 存放导入数据记录结果的对象.
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.car_dealer.controllers.data.importer;
|
||||
|
||||
import com.fasterxml.jackson.annotation.*;;
|
||||
|
||||
/*****************************************************
|
||||
* 存放导入数据记录结果的对象.
|
||||
*****************************************************/
|
||||
public class RecordErrorMessage
|
||||
{
|
||||
public RecordErrorMessage()
|
||||
{}
|
||||
|
||||
public RecordErrorMessage( int rowIndex, String message)
|
||||
{
|
||||
this.rowIndex = rowIndex;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
|
||||
public int getRowIndex()
|
||||
{
|
||||
return rowIndex;
|
||||
}
|
||||
|
||||
public void setRowIndex( int rowIndex )
|
||||
{
|
||||
this.rowIndex = rowIndex;
|
||||
}
|
||||
|
||||
public String getMessage()
|
||||
{
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage( String message )
|
||||
{
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + rowIndex;
|
||||
result = prime * result + ((message == null) ? 0 : message.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals( Object obj )
|
||||
{
|
||||
if ( this == obj)
|
||||
return true;
|
||||
if ( obj == null)
|
||||
return false;
|
||||
if ( getClass() != obj.getClass())
|
||||
return false;
|
||||
RecordErrorMessage other = (RecordErrorMessage) obj;
|
||||
if ( rowIndex != other.rowIndex)
|
||||
return false;
|
||||
if ( message == null)
|
||||
{
|
||||
if ( other.message != null)
|
||||
return false;
|
||||
} else if ( !message.equals( other.message ))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "importRecordErrorMessage [rowIndex=" + rowIndex + ", message=" + message + "]";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 数据的行id。
|
||||
*/
|
||||
@JsonProperty( "row_index")
|
||||
private int rowIndex;
|
||||
|
||||
/**
|
||||
* 导入时的错误信息。
|
||||
*/
|
||||
@JsonProperty( "message")
|
||||
private String message;
|
||||
}
|
@ -0,0 +1,104 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-09-28 15:47:02
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-15 17:45:18
|
||||
* @FilePath: \car_dealer\src\main\java\com\cpic\xim\car_dealer\controllers\fileupload\FileUploadController.java
|
||||
* @Description: 用于实现跨域功能的过滤器对象。
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
package com.cpic.xim.car_dealer.controllers.fileupload;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.channels.IllegalSelectorException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@Controller
|
||||
@Scope( "session")
|
||||
@RequestMapping( path = "/upload")
|
||||
public class FileUploadController
|
||||
{
|
||||
// @PostConstruct
|
||||
// public void init()
|
||||
// {
|
||||
// // WebApplicationContext webApplicationContext =
|
||||
// // ContextLoader.getCurrentWebApplicationContext();
|
||||
// // ServletContext servletContext = webApplicationContext.getServletContext();
|
||||
// // String realPath = servletContext.getRealPath( "" );
|
||||
|
||||
// // System.out.println( realPath );
|
||||
// }
|
||||
|
||||
/*****************************************************
|
||||
* 接收上传文件,并保存到临时目录:
|
||||
* 1、临时目录下再用sessionID作为子目录保存文件。
|
||||
* 2、保存时不更改文件名,会覆盖同名文件。
|
||||
* 3、MultipartFile参数形参名称必须和请求form中file标签的name属性一致,否则值为null。
|
||||
* 4、返回值为接收结果和文件保存路径。
|
||||
* @param request 请求对象。
|
||||
* @param response 响应对象。
|
||||
* @param uploadFile 文件上传对象,形参名称要和请求参数中file标签的name属性一致,否则值为null。
|
||||
* @return FileUploadResult 文件上传结果,会被转换成json。
|
||||
*****************************************************/
|
||||
@RequestMapping( path = "/upload_file.do")
|
||||
@ResponseBody
|
||||
public FileUploadResult uploadFile( HttpServletRequest request, HttpServletResponse response,
|
||||
MultipartFile uploadFile ) throws IllegalSelectorException, IOException
|
||||
{
|
||||
FileUploadResult result = new FileUploadResult();
|
||||
String sessionID = request.getSession().getId();
|
||||
|
||||
|
||||
if ( uploadFile == null)
|
||||
{
|
||||
result.setSuccess( false );
|
||||
result.setMessage( "请用于上传文件!" );
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
if ( uploadFile.isEmpty())
|
||||
{
|
||||
result.setSuccess( false );
|
||||
result.setMessage( "上传空文件!" );
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// 使用sessionID来作为存放的目录
|
||||
String rootPath = request.getServletContext().getRealPath( "/temp/upload/" + sessionID );
|
||||
String fileName = uploadFile.getOriginalFilename();
|
||||
|
||||
File destFile = new File( rootPath, fileName );
|
||||
|
||||
// 判断路径是否存在,不存在就创建。
|
||||
if ( !destFile.getParentFile().exists())
|
||||
{
|
||||
// 创建路径
|
||||
if ( !destFile.getParentFile().mkdirs())
|
||||
{
|
||||
// 如果创建路径失败
|
||||
result.setSuccess( false );
|
||||
result.setMessage( "创建存放路径失败,请联系开发人员!" );
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
uploadFile.transferTo( destFile );
|
||||
|
||||
result.setSuccess( true );
|
||||
result.setFilePath( destFile.getPath() );
|
||||
result.setMessage( "上传成功!" );
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-09-28 23:43:42
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-09-29 22:29:13
|
||||
* @FilePath: \car_dealer\src\main\java\com\cpic\xim\car_dealer\controllers\fileupload\FileUploadResult.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
package com.cpic.xim.car_dealer.controllers.fileupload;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
/**
|
||||
* @
|
||||
*/
|
||||
public class FileUploadResult
|
||||
{
|
||||
@JsonProperty( "is_success" )
|
||||
private boolean isSuccess;
|
||||
|
||||
@JsonProperty( "file_path" )
|
||||
private String filePath;
|
||||
|
||||
@JsonProperty( "message" )
|
||||
private String message;
|
||||
|
||||
public FileUploadResult()
|
||||
{}
|
||||
|
||||
public boolean getIsSuccess()
|
||||
{
|
||||
return isSuccess;
|
||||
}
|
||||
|
||||
public void setSuccess( boolean isSuccess )
|
||||
{
|
||||
this.isSuccess = isSuccess;
|
||||
}
|
||||
|
||||
public String getFilePath()
|
||||
{
|
||||
return filePath;
|
||||
}
|
||||
|
||||
public void setFilePath( String filePath )
|
||||
{
|
||||
this.filePath = filePath;
|
||||
}
|
||||
|
||||
public String getMessage()
|
||||
{
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage( String message )
|
||||
{
|
||||
this.message = message;
|
||||
}
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-09 09:32:33
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-09 10:38:24
|
||||
* @FilePath: \car_dealer\src\main\java\com\cpic\xim\car_dealer\filters\CrosFilter.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.car_dealer.filters;
|
||||
|
||||
import java.io.IOException;
|
||||
import javax.servlet.Filter;
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* 用于实现CROS功能的过滤器.
|
||||
*/
|
||||
public class CrosFilter implements Filter
|
||||
{
|
||||
/*****************************************************
|
||||
* 用于实现CROS功能的过滤器,直接获取请求头的Origin参数,
|
||||
* 作为响应头的 Access-Control—Allow-Origin 的值。
|
||||
* @param req 请求对象
|
||||
* @param resp 响应对象
|
||||
* @param chain servlet容器传递的filter链
|
||||
*****************************************************/
|
||||
@Override
|
||||
public void doFilter( ServletRequest req, ServletResponse resp, FilterChain chain )
|
||||
throws ServletException, IOException
|
||||
{
|
||||
HttpServletRequest request = (HttpServletRequest) req;
|
||||
HttpServletResponse response = (HttpServletResponse) resp;
|
||||
String originHeader = request.getHeader( "Origin" );
|
||||
|
||||
response.setHeader( "Access-Control-Allow-Origin", originHeader );
|
||||
response.setHeader( "Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE" );
|
||||
response.setHeader( "Access-Control-Max-Age", "0" );
|
||||
response.setHeader( "Access-Control-Allow-Headers",
|
||||
"Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token" );
|
||||
response.setHeader( "Access-Control-Allow-Credentials", "true" );
|
||||
response.setHeader( "XDomainRequestAllowed", "1" );
|
||||
response.setHeader( "XDomainRequestAllowed", "1" );
|
||||
|
||||
chain.doFilter( request, response );
|
||||
}
|
||||
}
|
@ -0,0 +1,82 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-10 09:00:18
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-10 09:03:53
|
||||
* @FilePath: \car_dealer\src\main\java\com\cpic\xim\car_dealer\models\data_structure\CarDealer.java
|
||||
* @Description: 车商对象
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
package com.cpic.xim.car_dealer.models.data.structure;
|
||||
|
||||
public class CarDealer
|
||||
{
|
||||
|
||||
public CarDealer( String carDealerName, String carDealerCode)
|
||||
{
|
||||
this.carDealerName = carDealerName;
|
||||
this.carDealerCode = carDealerCode;
|
||||
}
|
||||
|
||||
public String getCarDealerName()
|
||||
{
|
||||
return carDealerName;
|
||||
}
|
||||
|
||||
public void setCarDealerName( String carDealerName )
|
||||
{
|
||||
this.carDealerName = carDealerName;
|
||||
}
|
||||
|
||||
public String getCarDealerCode()
|
||||
{
|
||||
return carDealerCode;
|
||||
}
|
||||
|
||||
public void setCarDealerCode( String carDealerCode )
|
||||
{
|
||||
this.carDealerCode = carDealerCode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((carDealerName == null) ? 0 : carDealerName.hashCode());
|
||||
result = prime * result + ((carDealerCode == null) ? 0 : carDealerCode.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals( Object obj )
|
||||
{
|
||||
if ( this == obj)
|
||||
return true;
|
||||
if ( obj == null)
|
||||
return false;
|
||||
if ( getClass() != obj.getClass())
|
||||
return false;
|
||||
CarDealer other = (CarDealer) obj;
|
||||
if ( carDealerName == null)
|
||||
{
|
||||
if ( other.carDealerName != null)
|
||||
return false;
|
||||
} else if ( !carDealerName.equals( other.carDealerName ))
|
||||
return false;
|
||||
if ( carDealerCode == null)
|
||||
{
|
||||
if ( other.carDealerCode != null)
|
||||
return false;
|
||||
} else if ( !carDealerCode.equals( other.carDealerCode ))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
private String carDealerName; // 车商名称
|
||||
private String carDealerCode; // 车商代码
|
||||
}
|
||||
|
@ -0,0 +1,196 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-10 09:05:22
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-10 09:18:56
|
||||
* @FilePath: \car_dealer\src\main\java\com\cpic\xim\car_dealer\models\data_structure\CarDealerAchievement.java
|
||||
* @Description: 车商业绩表
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
package com.cpic.xim.car_dealer.models.data.structure;
|
||||
|
||||
public class CarDealerAchievement
|
||||
{
|
||||
public CarDealerAchievement( String theYear, String theMonth, String carDealerCode,
|
||||
double checkedAchievement, int policyAmount, int cpicAmount, int piccAmount,
|
||||
int pinganAmount, int othersAmount)
|
||||
{
|
||||
this.theYear = theYear;
|
||||
this.theMonth = theMonth;
|
||||
this.carDealerCode = carDealerCode;
|
||||
this.checkedAchievement = checkedAchievement;
|
||||
this.policyAmount = policyAmount;
|
||||
this.cpicAmount = cpicAmount;
|
||||
this.piccAmount = piccAmount;
|
||||
this.pinganAmount = pinganAmount;
|
||||
this.othersAmount = othersAmount;
|
||||
}
|
||||
|
||||
public String getTheYear()
|
||||
{
|
||||
return theYear;
|
||||
}
|
||||
|
||||
public void setTheYear( String theYear )
|
||||
{
|
||||
this.theYear = theYear;
|
||||
}
|
||||
|
||||
public String getTheMonth()
|
||||
{
|
||||
return theMonth;
|
||||
}
|
||||
|
||||
public void setTheMonth( String theMonth )
|
||||
{
|
||||
this.theMonth = theMonth;
|
||||
}
|
||||
|
||||
public String getCarDealerCode()
|
||||
{
|
||||
return carDealerCode;
|
||||
}
|
||||
|
||||
public void setCarDealerCode( String carDealerCode )
|
||||
{
|
||||
this.carDealerCode = carDealerCode;
|
||||
}
|
||||
|
||||
public double getCheckedAchievement()
|
||||
{
|
||||
return checkedAchievement;
|
||||
}
|
||||
|
||||
public void setCheckedAchievement( double checkedAchievement )
|
||||
{
|
||||
this.checkedAchievement = checkedAchievement;
|
||||
}
|
||||
|
||||
public int getPolicyAmount()
|
||||
{
|
||||
return policyAmount;
|
||||
}
|
||||
|
||||
public void setPolicyAmount( int policyAmount )
|
||||
{
|
||||
this.policyAmount = policyAmount;
|
||||
}
|
||||
|
||||
public int getCpicAmount()
|
||||
{
|
||||
return cpicAmount;
|
||||
}
|
||||
|
||||
public void setCpicAmount( int cpicAmount )
|
||||
{
|
||||
this.cpicAmount = cpicAmount;
|
||||
}
|
||||
|
||||
public int getPiccAmount()
|
||||
{
|
||||
return piccAmount;
|
||||
}
|
||||
|
||||
public void setPiccAmount( int piccAmount )
|
||||
{
|
||||
this.piccAmount = piccAmount;
|
||||
}
|
||||
|
||||
public int getPinganAmount()
|
||||
{
|
||||
return pinganAmount;
|
||||
}
|
||||
|
||||
public void setPinganAmount( int pinganAmount )
|
||||
{
|
||||
this.pinganAmount = pinganAmount;
|
||||
}
|
||||
|
||||
public int getOthersAmount()
|
||||
{
|
||||
return othersAmount;
|
||||
}
|
||||
|
||||
public void setOthersAmount( int othersAmount )
|
||||
{
|
||||
this.othersAmount = othersAmount;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((theYear == null) ? 0 : theYear.hashCode());
|
||||
result = prime * result + ((theMonth == null) ? 0 : theMonth.hashCode());
|
||||
result = prime * result + ((carDealerCode == null) ? 0 : carDealerCode.hashCode());
|
||||
long temp;
|
||||
temp = Double.doubleToLongBits( checkedAchievement );
|
||||
result = prime * result + (int) (temp ^ (temp >>> 32));
|
||||
result = prime * result + policyAmount;
|
||||
result = prime * result + cpicAmount;
|
||||
result = prime * result + piccAmount;
|
||||
result = prime * result + pinganAmount;
|
||||
result = prime * result + othersAmount;
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals( Object obj )
|
||||
{
|
||||
if ( this == obj)
|
||||
return true;
|
||||
if ( obj == null)
|
||||
return false;
|
||||
if ( getClass() != obj.getClass())
|
||||
return false;
|
||||
CarDealerAchievement other = (CarDealerAchievement) obj;
|
||||
if ( theYear == null)
|
||||
{
|
||||
if ( other.theYear != null)
|
||||
return false;
|
||||
} else if ( !theYear.equals( other.theYear ))
|
||||
return false;
|
||||
if ( theMonth == null)
|
||||
{
|
||||
if ( other.theMonth != null)
|
||||
return false;
|
||||
} else if ( !theMonth.equals( other.theMonth ))
|
||||
return false;
|
||||
if ( carDealerCode == null)
|
||||
{
|
||||
if ( other.carDealerCode != null)
|
||||
return false;
|
||||
} else if ( !carDealerCode.equals( other.carDealerCode ))
|
||||
return false;
|
||||
if ( Double.doubleToLongBits( checkedAchievement ) != Double
|
||||
.doubleToLongBits( other.checkedAchievement ))
|
||||
return false;
|
||||
if ( policyAmount != other.policyAmount)
|
||||
return false;
|
||||
if ( cpicAmount != other.cpicAmount)
|
||||
return false;
|
||||
if ( piccAmount != other.piccAmount)
|
||||
return false;
|
||||
if ( pinganAmount != other.pinganAmount)
|
||||
return false;
|
||||
if ( othersAmount != other.othersAmount)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
private String theYear;
|
||||
private String theMonth;
|
||||
private String carDealerCode;
|
||||
private double checkedAchievement;
|
||||
private int policyAmount;
|
||||
private int cpicAmount;
|
||||
private int piccAmount;
|
||||
private int pinganAmount;
|
||||
private int othersAmount;
|
||||
}
|
||||
|
@ -0,0 +1,201 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-10 09:22:06
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-10 09:37:54
|
||||
* @FilePath: \car_dealer\src\main\java\com\cpic\xim\car_dealer\models\data\structure\CarDealerScheme.java
|
||||
* @Description: 车商方案表
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
package com.cpic.xim.car_dealer.models.data.structure;
|
||||
|
||||
/*****************************************************
|
||||
* 车商方案表
|
||||
* @author Kane
|
||||
* @version 1.0
|
||||
*****************************************************/
|
||||
public class CarDealerScheme
|
||||
{
|
||||
public CarDealerScheme( String theYear, String theMonth, String carDealerCode,
|
||||
String manHourPrice, String partPrice, String claimSupport, String scheme,
|
||||
String isQualified)
|
||||
{
|
||||
this.theYear = theYear;
|
||||
this.theMonth = theMonth;
|
||||
this.carDealerCode = carDealerCode;
|
||||
this.manHourPrice = manHourPrice;
|
||||
this.partPrice = partPrice;
|
||||
this.claimSupport = claimSupport;
|
||||
this.scheme = scheme;
|
||||
this.isQualified = isQualified;
|
||||
}
|
||||
|
||||
public String getTheYear()
|
||||
{
|
||||
return theYear;
|
||||
}
|
||||
|
||||
public void setTheYear( String theYear )
|
||||
{
|
||||
this.theYear = theYear;
|
||||
}
|
||||
|
||||
public String getTheMonth()
|
||||
{
|
||||
return theMonth;
|
||||
}
|
||||
|
||||
public void setTheMonth( String theMonth )
|
||||
{
|
||||
this.theMonth = theMonth;
|
||||
}
|
||||
|
||||
public String getCarDealerCode()
|
||||
{
|
||||
return carDealerCode;
|
||||
}
|
||||
|
||||
public void setCarDealerCode( String carDealerCode )
|
||||
{
|
||||
this.carDealerCode = carDealerCode;
|
||||
}
|
||||
|
||||
public String getManHourPrice()
|
||||
{
|
||||
return manHourPrice;
|
||||
}
|
||||
|
||||
public void setManHourPrice( String manHourPrice )
|
||||
{
|
||||
this.manHourPrice = manHourPrice;
|
||||
}
|
||||
|
||||
public String getPartPrice()
|
||||
{
|
||||
return partPrice;
|
||||
}
|
||||
|
||||
public void setPartPrice( String partPrice )
|
||||
{
|
||||
this.partPrice = partPrice;
|
||||
}
|
||||
|
||||
public String getClaimSupport()
|
||||
{
|
||||
return claimSupport;
|
||||
}
|
||||
|
||||
public void setClaimSupport( String claimSupport )
|
||||
{
|
||||
this.claimSupport = claimSupport;
|
||||
}
|
||||
|
||||
public String getScheme()
|
||||
{
|
||||
return scheme;
|
||||
}
|
||||
|
||||
public void setScheme( String scheme )
|
||||
{
|
||||
this.scheme = scheme;
|
||||
}
|
||||
|
||||
public String getIsQualified()
|
||||
{
|
||||
return isQualified;
|
||||
}
|
||||
|
||||
public void setIsQualified( String isQualified )
|
||||
{
|
||||
this.isQualified = isQualified;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((theYear == null) ? 0 : theYear.hashCode());
|
||||
result = prime * result + ((theMonth == null) ? 0 : theMonth.hashCode());
|
||||
result = prime * result + ((carDealerCode == null) ? 0 : carDealerCode.hashCode());
|
||||
result = prime * result + ((manHourPrice == null) ? 0 : manHourPrice.hashCode());
|
||||
result = prime * result + ((partPrice == null) ? 0 : partPrice.hashCode());
|
||||
result = prime * result + ((claimSupport == null) ? 0 : claimSupport.hashCode());
|
||||
result = prime * result + ((scheme == null) ? 0 : scheme.hashCode());
|
||||
result = prime * result + ((isQualified == null) ? 0 : isQualified.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals( Object obj )
|
||||
{
|
||||
if ( this == obj)
|
||||
return true;
|
||||
if ( obj == null)
|
||||
return false;
|
||||
if ( getClass() != obj.getClass())
|
||||
return false;
|
||||
CarDealerScheme other = (CarDealerScheme) obj;
|
||||
if ( theYear == null)
|
||||
{
|
||||
if ( other.theYear != null)
|
||||
return false;
|
||||
} else if ( !theYear.equals( other.theYear ))
|
||||
return false;
|
||||
if ( theMonth == null)
|
||||
{
|
||||
if ( other.theMonth != null)
|
||||
return false;
|
||||
} else if ( !theMonth.equals( other.theMonth ))
|
||||
return false;
|
||||
if ( carDealerCode == null)
|
||||
{
|
||||
if ( other.carDealerCode != null)
|
||||
return false;
|
||||
} else if ( !carDealerCode.equals( other.carDealerCode ))
|
||||
return false;
|
||||
if ( manHourPrice == null)
|
||||
{
|
||||
if ( other.manHourPrice != null)
|
||||
return false;
|
||||
} else if ( !manHourPrice.equals( other.manHourPrice ))
|
||||
return false;
|
||||
if ( partPrice == null)
|
||||
{
|
||||
if ( other.partPrice != null)
|
||||
return false;
|
||||
} else if ( !partPrice.equals( other.partPrice ))
|
||||
return false;
|
||||
if ( claimSupport == null)
|
||||
{
|
||||
if ( other.claimSupport != null)
|
||||
return false;
|
||||
} else if ( !claimSupport.equals( other.claimSupport ))
|
||||
return false;
|
||||
if ( scheme == null)
|
||||
{
|
||||
if ( other.scheme != null)
|
||||
return false;
|
||||
} else if ( !scheme.equals( other.scheme ))
|
||||
return false;
|
||||
if ( isQualified == null)
|
||||
{
|
||||
if ( other.isQualified != null)
|
||||
return false;
|
||||
} else if ( !isQualified.equals( other.isQualified ))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
private String theYear;
|
||||
private String theMonth;
|
||||
private String carDealerCode;
|
||||
private String manHourPrice;
|
||||
private String partPrice;
|
||||
private String claimSupport; // 理赔支持
|
||||
private String scheme;
|
||||
private String isQualified; // 是否达成预期
|
||||
};
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,555 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-10 14:45:30
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-10 14:47:45
|
||||
* @FilePath: \car_dealer\src\main\java\com\cpic\xim\car_dealer\models\data\structure\RepairOrder.java
|
||||
* @Description: 送返修工单表
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.car_dealer.models.data.structure;
|
||||
|
||||
/*****************************************************
|
||||
* 送返修工单表
|
||||
* @author Kane
|
||||
* @version 1.0
|
||||
*****************************************************/
|
||||
public class RepairOrder
|
||||
{
|
||||
|
||||
public RepairOrder( String branchName, String orderNo, String orderType, String notifyNo,
|
||||
String damageArea, String damageDate, String generatingDate, String policyNo,
|
||||
String policyNoJQX, String plateNumber, String brandName, String isInsuranceObject,
|
||||
String isSuccess, String recommandDealerCode, String recommandDealerName,
|
||||
String recommandDealerCodeInNotify, String recommandDealerNameInNotify,
|
||||
String recommandDealerNameInSurvey, String agentName, String surveyor, String checkDate,
|
||||
String repairingStartDate, String repairingFinishDate, String status, String lostItemID,
|
||||
String surveyorRecommandStatus)
|
||||
{
|
||||
this.branchName = branchName;
|
||||
this.orderNo = orderNo;
|
||||
this.orderType = orderType;
|
||||
this.notifyNo = notifyNo;
|
||||
this.damageArea = damageArea;
|
||||
this.damageDate = damageDate;
|
||||
this.generatingDate = generatingDate;
|
||||
this.policyNo = policyNo;
|
||||
this.policyNoJQX = policyNoJQX;
|
||||
this.plateNumber = plateNumber;
|
||||
this.brandName = brandName;
|
||||
this.isInsuranceObject = isInsuranceObject;
|
||||
this.isSuccess = isSuccess;
|
||||
this.recommandDealerCode = recommandDealerCode;
|
||||
this.recommandDealerName = recommandDealerName;
|
||||
this.recommandDealerCodeInNotify = recommandDealerCodeInNotify;
|
||||
this.recommandDealerNameInNotify = recommandDealerNameInNotify;
|
||||
this.recommandDealerNameInSurvey = recommandDealerNameInSurvey;
|
||||
this.agentName = agentName;
|
||||
this.surveyor = surveyor;
|
||||
this.checkDate = checkDate;
|
||||
this.repairingStartDate = repairingStartDate;
|
||||
this.repairingFinishDate = repairingFinishDate;
|
||||
this.status = status;
|
||||
this.lostItemID = lostItemID;
|
||||
this.surveyorRecommandStatus = surveyorRecommandStatus;
|
||||
}
|
||||
|
||||
public String getBranchName()
|
||||
{
|
||||
return branchName;
|
||||
}
|
||||
|
||||
public void setBranchName( String branchName )
|
||||
{
|
||||
this.branchName = branchName;
|
||||
}
|
||||
|
||||
public String getOrderNo()
|
||||
{
|
||||
return orderNo;
|
||||
}
|
||||
|
||||
public void setOrderNo( String orderNo )
|
||||
{
|
||||
this.orderNo = orderNo;
|
||||
}
|
||||
|
||||
public String getOrderType()
|
||||
{
|
||||
return orderType;
|
||||
}
|
||||
|
||||
public void setOrderType( String orderType )
|
||||
{
|
||||
this.orderType = orderType;
|
||||
}
|
||||
|
||||
public String getNotifyNo()
|
||||
{
|
||||
return notifyNo;
|
||||
}
|
||||
|
||||
public void setNotifyNo( String notifyNo )
|
||||
{
|
||||
this.notifyNo = notifyNo;
|
||||
}
|
||||
|
||||
public String getDamageArea()
|
||||
{
|
||||
return damageArea;
|
||||
}
|
||||
|
||||
public void setDamageArea( String damageArea )
|
||||
{
|
||||
this.damageArea = damageArea;
|
||||
}
|
||||
|
||||
public String getDamageDate()
|
||||
{
|
||||
return damageDate;
|
||||
}
|
||||
|
||||
public void setDamageDate( String damageDate )
|
||||
{
|
||||
this.damageDate = damageDate;
|
||||
}
|
||||
|
||||
public String getGeneratingDate()
|
||||
{
|
||||
return generatingDate;
|
||||
}
|
||||
|
||||
public void setGeneratingDate( String generatingDate )
|
||||
{
|
||||
this.generatingDate = generatingDate;
|
||||
}
|
||||
|
||||
public String getPolicyNo()
|
||||
{
|
||||
return policyNo;
|
||||
}
|
||||
|
||||
public void setPolicyNo( String policyNo )
|
||||
{
|
||||
this.policyNo = policyNo;
|
||||
}
|
||||
|
||||
public String getPolicyNoJQX()
|
||||
{
|
||||
return policyNoJQX;
|
||||
}
|
||||
|
||||
public void setPolicyNoJQX( String policyNoJQX )
|
||||
{
|
||||
this.policyNoJQX = policyNoJQX;
|
||||
}
|
||||
|
||||
public String getPlateNumber()
|
||||
{
|
||||
return plateNumber;
|
||||
}
|
||||
|
||||
public void setPlateNumber( String plateNumber )
|
||||
{
|
||||
this.plateNumber = plateNumber;
|
||||
}
|
||||
|
||||
public String getBrandName()
|
||||
{
|
||||
return brandName;
|
||||
}
|
||||
|
||||
public void setBrandName( String brandName )
|
||||
{
|
||||
this.brandName = brandName;
|
||||
}
|
||||
|
||||
public String getIsInsuranceObject()
|
||||
{
|
||||
return isInsuranceObject;
|
||||
}
|
||||
|
||||
public void setIsInsuranceObject( String isInsuranceObject )
|
||||
{
|
||||
this.isInsuranceObject = isInsuranceObject;
|
||||
}
|
||||
|
||||
public String getIsSuccess()
|
||||
{
|
||||
return isSuccess;
|
||||
}
|
||||
|
||||
public void setIsSuccess( String isSuccess )
|
||||
{
|
||||
this.isSuccess = isSuccess;
|
||||
}
|
||||
|
||||
public String getRecommandDealerCode()
|
||||
{
|
||||
return recommandDealerCode;
|
||||
}
|
||||
|
||||
public void setRecommandDealerCode( String recommandDealerCode )
|
||||
{
|
||||
this.recommandDealerCode = recommandDealerCode;
|
||||
}
|
||||
|
||||
public String getRecommandDealerName()
|
||||
{
|
||||
return recommandDealerName;
|
||||
}
|
||||
|
||||
public void setRecommandDealerName( String recommandDealerName )
|
||||
{
|
||||
this.recommandDealerName = recommandDealerName;
|
||||
}
|
||||
|
||||
public String getRecommandDealerCodeInNotify()
|
||||
{
|
||||
return recommandDealerCodeInNotify;
|
||||
}
|
||||
|
||||
public void setRecommandDealerCodeInNotify( String recommandDealerCodeInNotify )
|
||||
{
|
||||
this.recommandDealerCodeInNotify = recommandDealerCodeInNotify;
|
||||
}
|
||||
|
||||
public String getRecommandDealerNameInNotify()
|
||||
{
|
||||
return recommandDealerNameInNotify;
|
||||
}
|
||||
|
||||
public void setRecommandDealerNameInNotify( String recommandDealerNameInNotify )
|
||||
{
|
||||
this.recommandDealerNameInNotify = recommandDealerNameInNotify;
|
||||
}
|
||||
|
||||
public String getRecommandDealerNameInSurvey()
|
||||
{
|
||||
return recommandDealerNameInSurvey;
|
||||
}
|
||||
|
||||
public void setRecommandDealerNameInSurvey( String recommandDealerNameInSurvey )
|
||||
{
|
||||
this.recommandDealerNameInSurvey = recommandDealerNameInSurvey;
|
||||
}
|
||||
|
||||
public String getAgentName()
|
||||
{
|
||||
return agentName;
|
||||
}
|
||||
|
||||
public void setAgentName( String agentName )
|
||||
{
|
||||
this.agentName = agentName;
|
||||
}
|
||||
|
||||
public String getSurveyor()
|
||||
{
|
||||
return surveyor;
|
||||
}
|
||||
|
||||
public void setSurveyor( String surveyor )
|
||||
{
|
||||
this.surveyor = surveyor;
|
||||
}
|
||||
|
||||
public String getCheckDate()
|
||||
{
|
||||
return checkDate;
|
||||
}
|
||||
|
||||
public void setCheckDate( String checkDate )
|
||||
{
|
||||
this.checkDate = checkDate;
|
||||
}
|
||||
|
||||
public String getRepairingStartDate()
|
||||
{
|
||||
return repairingStartDate;
|
||||
}
|
||||
|
||||
public void setRepairingStartDate( String repairingStartDate )
|
||||
{
|
||||
this.repairingStartDate = repairingStartDate;
|
||||
}
|
||||
|
||||
public String getRepairingFinishDate()
|
||||
{
|
||||
return repairingFinishDate;
|
||||
}
|
||||
|
||||
public void setRepairingFinishDate( String repairingFinishDate )
|
||||
{
|
||||
this.repairingFinishDate = repairingFinishDate;
|
||||
}
|
||||
|
||||
public String getStatus()
|
||||
{
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus( String status )
|
||||
{
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public String getLostItemID()
|
||||
{
|
||||
return lostItemID;
|
||||
}
|
||||
|
||||
public void setLostItemID( String lostItemID )
|
||||
{
|
||||
this.lostItemID = lostItemID;
|
||||
}
|
||||
|
||||
public String getSurveyorRecommandStatus()
|
||||
{
|
||||
return surveyorRecommandStatus;
|
||||
}
|
||||
|
||||
public void setSurveyorRecommandStatus( String surveyorRecommandStatus )
|
||||
{
|
||||
this.surveyorRecommandStatus = surveyorRecommandStatus;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((branchName == null) ? 0 : branchName.hashCode());
|
||||
result = prime * result + ((orderNo == null) ? 0 : orderNo.hashCode());
|
||||
result = prime * result + ((orderType == null) ? 0 : orderType.hashCode());
|
||||
result = prime * result + ((notifyNo == null) ? 0 : notifyNo.hashCode());
|
||||
result = prime * result + ((damageArea == null) ? 0 : damageArea.hashCode());
|
||||
result = prime * result + ((damageDate == null) ? 0 : damageDate.hashCode());
|
||||
result = prime * result + ((generatingDate == null) ? 0 : generatingDate.hashCode());
|
||||
result = prime * result + ((policyNo == null) ? 0 : policyNo.hashCode());
|
||||
result = prime * result + ((policyNoJQX == null) ? 0 : policyNoJQX.hashCode());
|
||||
result = prime * result + ((plateNumber == null) ? 0 : plateNumber.hashCode());
|
||||
result = prime * result + ((brandName == null) ? 0 : brandName.hashCode());
|
||||
result = prime * result + ((isInsuranceObject == null) ? 0 : isInsuranceObject.hashCode());
|
||||
result = prime * result + ((isSuccess == null) ? 0 : isSuccess.hashCode());
|
||||
result = prime * result
|
||||
+ ((recommandDealerCode == null) ? 0 : recommandDealerCode.hashCode());
|
||||
result = prime * result
|
||||
+ ((recommandDealerName == null) ? 0 : recommandDealerName.hashCode());
|
||||
result = prime * result + ((recommandDealerCodeInNotify == null) ? 0
|
||||
: recommandDealerCodeInNotify.hashCode());
|
||||
result = prime * result + ((recommandDealerNameInNotify == null) ? 0
|
||||
: recommandDealerNameInNotify.hashCode());
|
||||
result = prime * result + ((recommandDealerNameInSurvey == null) ? 0
|
||||
: recommandDealerNameInSurvey.hashCode());
|
||||
result = prime * result + ((agentName == null) ? 0 : agentName.hashCode());
|
||||
result = prime * result + ((surveyor == null) ? 0 : surveyor.hashCode());
|
||||
result = prime * result + ((checkDate == null) ? 0 : checkDate.hashCode());
|
||||
result = prime * result
|
||||
+ ((repairingStartDate == null) ? 0 : repairingStartDate.hashCode());
|
||||
result = prime * result
|
||||
+ ((repairingFinishDate == null) ? 0 : repairingFinishDate.hashCode());
|
||||
result = prime * result + ((status == null) ? 0 : status.hashCode());
|
||||
result = prime * result + ((lostItemID == null) ? 0 : lostItemID.hashCode());
|
||||
result = prime * result
|
||||
+ ((surveyorRecommandStatus == null) ? 0 : surveyorRecommandStatus.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals( Object obj )
|
||||
{
|
||||
if ( this == obj)
|
||||
return true;
|
||||
if ( obj == null)
|
||||
return false;
|
||||
if ( getClass() != obj.getClass())
|
||||
return false;
|
||||
RepairOrder other = (RepairOrder) obj;
|
||||
if ( branchName == null)
|
||||
{
|
||||
if ( other.branchName != null)
|
||||
return false;
|
||||
} else if ( !branchName.equals( other.branchName ))
|
||||
return false;
|
||||
if ( orderNo == null)
|
||||
{
|
||||
if ( other.orderNo != null)
|
||||
return false;
|
||||
} else if ( !orderNo.equals( other.orderNo ))
|
||||
return false;
|
||||
if ( orderType == null)
|
||||
{
|
||||
if ( other.orderType != null)
|
||||
return false;
|
||||
} else if ( !orderType.equals( other.orderType ))
|
||||
return false;
|
||||
if ( notifyNo == null)
|
||||
{
|
||||
if ( other.notifyNo != null)
|
||||
return false;
|
||||
} else if ( !notifyNo.equals( other.notifyNo ))
|
||||
return false;
|
||||
if ( damageArea == null)
|
||||
{
|
||||
if ( other.damageArea != null)
|
||||
return false;
|
||||
} else if ( !damageArea.equals( other.damageArea ))
|
||||
return false;
|
||||
if ( damageDate == null)
|
||||
{
|
||||
if ( other.damageDate != null)
|
||||
return false;
|
||||
} else if ( !damageDate.equals( other.damageDate ))
|
||||
return false;
|
||||
if ( generatingDate == null)
|
||||
{
|
||||
if ( other.generatingDate != null)
|
||||
return false;
|
||||
} else if ( !generatingDate.equals( other.generatingDate ))
|
||||
return false;
|
||||
if ( policyNo == null)
|
||||
{
|
||||
if ( other.policyNo != null)
|
||||
return false;
|
||||
} else if ( !policyNo.equals( other.policyNo ))
|
||||
return false;
|
||||
if ( policyNoJQX == null)
|
||||
{
|
||||
if ( other.policyNoJQX != null)
|
||||
return false;
|
||||
} else if ( !policyNoJQX.equals( other.policyNoJQX ))
|
||||
return false;
|
||||
if ( plateNumber == null)
|
||||
{
|
||||
if ( other.plateNumber != null)
|
||||
return false;
|
||||
} else if ( !plateNumber.equals( other.plateNumber ))
|
||||
return false;
|
||||
if ( brandName == null)
|
||||
{
|
||||
if ( other.brandName != null)
|
||||
return false;
|
||||
} else if ( !brandName.equals( other.brandName ))
|
||||
return false;
|
||||
if ( isInsuranceObject == null)
|
||||
{
|
||||
if ( other.isInsuranceObject != null)
|
||||
return false;
|
||||
} else if ( !isInsuranceObject.equals( other.isInsuranceObject ))
|
||||
return false;
|
||||
if ( isSuccess == null)
|
||||
{
|
||||
if ( other.isSuccess != null)
|
||||
return false;
|
||||
} else if ( !isSuccess.equals( other.isSuccess ))
|
||||
return false;
|
||||
if ( recommandDealerCode == null)
|
||||
{
|
||||
if ( other.recommandDealerCode != null)
|
||||
return false;
|
||||
} else if ( !recommandDealerCode.equals( other.recommandDealerCode ))
|
||||
return false;
|
||||
if ( recommandDealerName == null)
|
||||
{
|
||||
if ( other.recommandDealerName != null)
|
||||
return false;
|
||||
} else if ( !recommandDealerName.equals( other.recommandDealerName ))
|
||||
return false;
|
||||
if ( recommandDealerCodeInNotify == null)
|
||||
{
|
||||
if ( other.recommandDealerCodeInNotify != null)
|
||||
return false;
|
||||
} else if ( !recommandDealerCodeInNotify.equals( other.recommandDealerCodeInNotify ))
|
||||
return false;
|
||||
if ( recommandDealerNameInNotify == null)
|
||||
{
|
||||
if ( other.recommandDealerNameInNotify != null)
|
||||
return false;
|
||||
} else if ( !recommandDealerNameInNotify.equals( other.recommandDealerNameInNotify ))
|
||||
return false;
|
||||
if ( recommandDealerNameInSurvey == null)
|
||||
{
|
||||
if ( other.recommandDealerNameInSurvey != null)
|
||||
return false;
|
||||
} else if ( !recommandDealerNameInSurvey.equals( other.recommandDealerNameInSurvey ))
|
||||
return false;
|
||||
if ( agentName == null)
|
||||
{
|
||||
if ( other.agentName != null)
|
||||
return false;
|
||||
} else if ( !agentName.equals( other.agentName ))
|
||||
return false;
|
||||
if ( surveyor == null)
|
||||
{
|
||||
if ( other.surveyor != null)
|
||||
return false;
|
||||
} else if ( !surveyor.equals( other.surveyor ))
|
||||
return false;
|
||||
if ( checkDate == null)
|
||||
{
|
||||
if ( other.checkDate != null)
|
||||
return false;
|
||||
} else if ( !checkDate.equals( other.checkDate ))
|
||||
return false;
|
||||
if ( repairingStartDate == null)
|
||||
{
|
||||
if ( other.repairingStartDate != null)
|
||||
return false;
|
||||
} else if ( !repairingStartDate.equals( other.repairingStartDate ))
|
||||
return false;
|
||||
if ( repairingFinishDate == null)
|
||||
{
|
||||
if ( other.repairingFinishDate != null)
|
||||
return false;
|
||||
} else if ( !repairingFinishDate.equals( other.repairingFinishDate ))
|
||||
return false;
|
||||
if ( status == null)
|
||||
{
|
||||
if ( other.status != null)
|
||||
return false;
|
||||
} else if ( !status.equals( other.status ))
|
||||
return false;
|
||||
if ( lostItemID == null)
|
||||
{
|
||||
if ( other.lostItemID != null)
|
||||
return false;
|
||||
} else if ( !lostItemID.equals( other.lostItemID ))
|
||||
return false;
|
||||
if ( surveyorRecommandStatus == null)
|
||||
{
|
||||
if ( other.surveyorRecommandStatus != null)
|
||||
return false;
|
||||
} else if ( !surveyorRecommandStatus.equals( other.surveyorRecommandStatus ))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
private String branchName;
|
||||
private String orderNo;
|
||||
private String orderType;
|
||||
private String notifyNo;
|
||||
private String damageArea;
|
||||
private String damageDate;
|
||||
private String generatingDate;
|
||||
private String policyNo;
|
||||
private String policyNoJQX;
|
||||
private String plateNumber;
|
||||
private String brandName;
|
||||
private String isInsuranceObject;
|
||||
private String isSuccess;
|
||||
private String recommandDealerCode;
|
||||
private String recommandDealerName;
|
||||
private String recommandDealerCodeInNotify;
|
||||
private String recommandDealerNameInNotify;
|
||||
private String recommandDealerNameInSurvey;
|
||||
private String agentName;
|
||||
private String surveyor; // 查勘员
|
||||
private String checkDate;
|
||||
private String repairingStartDate;
|
||||
private String repairingFinishDate;
|
||||
private String status;
|
||||
private String lostItemID;
|
||||
private String surveyorRecommandStatus;
|
||||
}
|
7
code/java/car_dealer/src/main/resources/AppConfig.json
Normal file
7
code/java/car_dealer/src/main/resources/AppConfig.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"appName": "车商渠道管理工具",
|
||||
"db_config": {
|
||||
"userName": "car_dealer",
|
||||
"password": "Cpic123456"
|
||||
}
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
|
||||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
|
||||
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
|
||||
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
|
||||
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
|
||||
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
|
||||
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
|
||||
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
|
||||
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">
|
||||
|
||||
<context:component-scan base-package="com.cpic.xim" />
|
||||
<mvc:annotation-driven />
|
||||
<mvc:default-servlet-handler />
|
||||
|
||||
<!-- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
|
||||
<property name="prefix" value="/WEB-INF/jsp/" />
|
||||
<property name="suffix" value=".jsp" />
|
||||
</bean> -->
|
||||
|
||||
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
|
||||
<property name="defaultEncoding" value="UTF-8" />
|
||||
<property name="maxUploadSize" value="-1" />
|
||||
</bean>
|
||||
|
||||
</beans>
|
29
code/java/car_dealer/src/main/webapp/WEB-INF/web.xml
Normal file
29
code/java/car_dealer/src/main/webapp/WEB-INF/web.xml
Normal file
@ -0,0 +1,29 @@
|
||||
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
|
||||
|
||||
<display-name>Archetype Created Web Application</display-name>
|
||||
|
||||
<!-- springMVC -->
|
||||
<servlet>
|
||||
<servlet-name>springmvc</servlet-name>
|
||||
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
|
||||
<init-param>
|
||||
<param-name>contextConfigLocation</param-name>
|
||||
<param-value>classpath:spring.xml</param-value>
|
||||
</init-param>
|
||||
<load-on-startup>1</load-on-startup>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>springmvc</servlet-name>
|
||||
<url-pattern>*.do</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<filter>
|
||||
<filter-name>cros-filter</filter-name>
|
||||
<filter-class>com.cpic.xim.car_dealer.filters.CrosFilter</filter-class>
|
||||
</filter>
|
||||
<filter-mapping>
|
||||
<filter-name>cros-filter</filter-name>
|
||||
<url-pattern>*.do</url-pattern>
|
||||
</filter-mapping>
|
||||
|
||||
</web-app>
|
68
code/java/car_dealer/src/main/webapp/css/kane.css
Normal file
68
code/java/car_dealer/src/main/webapp/css/kane.css
Normal file
@ -0,0 +1,68 @@
|
||||
html {
|
||||
--backupground-color: #f7f7f7;
|
||||
--btn-color-blue: #307dbe;
|
||||
--btn-color-yellow: #f7b24d;
|
||||
--btn-color-green: #5bad60;
|
||||
--btn-color-red: #e56651;
|
||||
--btn-font-color: #fff;
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
#root,
|
||||
#app {
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
position: fixed;
|
||||
padding: 50px;
|
||||
/* font-size: 0; */
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#root,
|
||||
#app * + * {
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
hr {
|
||||
background-color: steelblue;
|
||||
border: none;
|
||||
height: 3px;
|
||||
}
|
||||
|
||||
.test {
|
||||
width: 110vw;
|
||||
height: 100vh;
|
||||
border: 1px solid red;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
button {
|
||||
padding: 5px 10px;
|
||||
background-color: var(--btn-color-red);
|
||||
color: var(--btn-font-color);
|
||||
width: 10em;
|
||||
border: none;
|
||||
border-radius: 0.25em;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
button + button {
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
|
||||
button:active {
|
||||
background-color: var(--btn-font-color);
|
||||
color: var(--btn-color-red);
|
||||
}
|
||||
|
||||
input {
|
||||
border: none;
|
||||
outline: solid 2px #e56651;
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
font-size: 2rem;
|
||||
margin-top: 15px;
|
||||
}
|
25
code/java/car_dealer/src/main/webapp/css/main_frame.css
Normal file
25
code/java/car_dealer/src/main/webapp/css/main_frame.css
Normal file
@ -0,0 +1,25 @@
|
||||
#app {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#header {
|
||||
flex-basis: 50px;
|
||||
border: 1px solid red;
|
||||
max-height: 50px;
|
||||
}
|
||||
|
||||
#main {
|
||||
flex-grow: 1;
|
||||
border: 1px solid red;
|
||||
}
|
||||
|
||||
#footer {
|
||||
flex-basis: 100px;
|
||||
max-height: 100px;
|
||||
border: 1px solid red;
|
||||
}
|
349
code/java/car_dealer/src/main/webapp/css/normalize.css
vendored
Normal file
349
code/java/car_dealer/src/main/webapp/css/normalize.css
vendored
Normal file
@ -0,0 +1,349 @@
|
||||
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
|
||||
|
||||
/* Document
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Correct the line height in all browsers.
|
||||
* 2. Prevent adjustments of font size after orientation changes in iOS.
|
||||
*/
|
||||
|
||||
html {
|
||||
line-height: 1.15; /* 1 */
|
||||
-webkit-text-size-adjust: 100%; /* 2 */
|
||||
}
|
||||
|
||||
/* Sections
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the margin in all browsers.
|
||||
*/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the `main` element consistently in IE.
|
||||
*/
|
||||
|
||||
main {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the font size and margin on `h1` elements within `section` and
|
||||
* `article` contexts in Chrome, Firefox, and Safari.
|
||||
*/
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
/* Grouping content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Add the correct box sizing in Firefox.
|
||||
* 2. Show the overflow in Edge and IE.
|
||||
*/
|
||||
|
||||
hr {
|
||||
box-sizing: content-box; /* 1 */
|
||||
height: 0; /* 1 */
|
||||
overflow: visible; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inheritance and scaling of font size in all browsers.
|
||||
* 2. Correct the odd `em` font sizing in all browsers.
|
||||
*/
|
||||
|
||||
pre {
|
||||
font-family: monospace, monospace; /* 1 */
|
||||
font-size: 1em; /* 2 */
|
||||
}
|
||||
|
||||
/* Text-level semantics
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the gray background on active links in IE 10.
|
||||
*/
|
||||
|
||||
a {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Remove the bottom border in Chrome 57-
|
||||
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
|
||||
*/
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: none; /* 1 */
|
||||
text-decoration: underline; /* 2 */
|
||||
text-decoration: underline dotted; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct font weight in Chrome, Edge, and Safari.
|
||||
*/
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inheritance and scaling of font size in all browsers.
|
||||
* 2. Correct the odd `em` font sizing in all browsers.
|
||||
*/
|
||||
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: monospace, monospace; /* 1 */
|
||||
font-size: 1em; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct font size in all browsers.
|
||||
*/
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent `sub` and `sup` elements from affecting the line height in
|
||||
* all browsers.
|
||||
*/
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
/* Embedded content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the border on images inside links in IE 10.
|
||||
*/
|
||||
|
||||
img {
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
/* Forms
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Change the font styles in all browsers.
|
||||
* 2. Remove the margin in Firefox and Safari.
|
||||
*/
|
||||
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
font-family: inherit; /* 1 */
|
||||
font-size: 100%; /* 1 */
|
||||
line-height: 1.15; /* 1 */
|
||||
margin: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the overflow in IE.
|
||||
* 1. Show the overflow in Edge.
|
||||
*/
|
||||
|
||||
button,
|
||||
input { /* 1 */
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inheritance of text transform in Edge, Firefox, and IE.
|
||||
* 1. Remove the inheritance of text transform in Firefox.
|
||||
*/
|
||||
|
||||
button,
|
||||
select { /* 1 */
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the inability to style clickable types in iOS and Safari.
|
||||
*/
|
||||
|
||||
button,
|
||||
[type="button"],
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inner border and padding in Firefox.
|
||||
*/
|
||||
|
||||
button::-moz-focus-inner,
|
||||
[type="button"]::-moz-focus-inner,
|
||||
[type="reset"]::-moz-focus-inner,
|
||||
[type="submit"]::-moz-focus-inner {
|
||||
border-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore the focus styles unset by the previous rule.
|
||||
*/
|
||||
|
||||
button:-moz-focusring,
|
||||
[type="button"]:-moz-focusring,
|
||||
[type="reset"]:-moz-focusring,
|
||||
[type="submit"]:-moz-focusring {
|
||||
outline: 1px dotted ButtonText;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the padding in Firefox.
|
||||
*/
|
||||
|
||||
fieldset {
|
||||
padding: 0.35em 0.75em 0.625em;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the text wrapping in Edge and IE.
|
||||
* 2. Correct the color inheritance from `fieldset` elements in IE.
|
||||
* 3. Remove the padding so developers are not caught out when they zero out
|
||||
* `fieldset` elements in all browsers.
|
||||
*/
|
||||
|
||||
legend {
|
||||
box-sizing: border-box; /* 1 */
|
||||
color: inherit; /* 2 */
|
||||
display: table; /* 1 */
|
||||
max-width: 100%; /* 1 */
|
||||
padding: 0; /* 3 */
|
||||
white-space: normal; /* 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
|
||||
*/
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the default vertical scrollbar in IE 10+.
|
||||
*/
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Add the correct box sizing in IE 10.
|
||||
* 2. Remove the padding in IE 10.
|
||||
*/
|
||||
|
||||
[type="checkbox"],
|
||||
[type="radio"] {
|
||||
box-sizing: border-box; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the cursor style of increment and decrement buttons in Chrome.
|
||||
*/
|
||||
|
||||
[type="number"]::-webkit-inner-spin-button,
|
||||
[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the odd appearance in Chrome and Safari.
|
||||
* 2. Correct the outline style in Safari.
|
||||
*/
|
||||
|
||||
[type="search"] {
|
||||
-webkit-appearance: textfield; /* 1 */
|
||||
outline-offset: -2px; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inner padding in Chrome and Safari on macOS.
|
||||
*/
|
||||
|
||||
[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inability to style clickable types in iOS and Safari.
|
||||
* 2. Change font properties to `inherit` in Safari.
|
||||
*/
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
-webkit-appearance: button; /* 1 */
|
||||
font: inherit; /* 2 */
|
||||
}
|
||||
|
||||
/* Interactive
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* Add the correct display in Edge, IE 10+, and Firefox.
|
||||
*/
|
||||
|
||||
details {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/*
|
||||
* Add the correct display in all browsers.
|
||||
*/
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
}
|
||||
|
||||
/* Misc
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Add the correct display in IE 10+.
|
||||
*/
|
||||
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct display in IE 10.
|
||||
*/
|
||||
|
||||
[hidden] {
|
||||
display: none;
|
||||
}
|
11
code/java/car_dealer/src/main/webapp/css/product_form.css
Normal file
11
code/java/car_dealer/src/main/webapp/css/product_form.css
Normal file
@ -0,0 +1,11 @@
|
||||
.panel {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.main_form {
|
||||
height: 50vh;
|
||||
width: 50vw;
|
||||
border: 1px solid red;
|
||||
}
|
20
code/java/car_dealer/src/main/webapp/css/root.css
Normal file
20
code/java/car_dealer/src/main/webapp/css/root.css
Normal file
@ -0,0 +1,20 @@
|
||||
:root {
|
||||
font-size: 1em;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: inherit;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.pointer {
|
||||
cursor: pointer;
|
||||
}
|
17
code/java/car_dealer/src/main/webapp/css/test.css
Normal file
17
code/java/car_dealer/src/main/webapp/css/test.css
Normal file
@ -0,0 +1,17 @@
|
||||
a,
|
||||
p {
|
||||
padding: 5rem;
|
||||
border: 1px solid red;
|
||||
line-height: 2rem;
|
||||
margin: 2em;
|
||||
}
|
||||
|
||||
.warp_test {
|
||||
width: 5rem;
|
||||
border: 1px solid red;
|
||||
}
|
||||
|
||||
ol,
|
||||
li {
|
||||
background-color: cornflowerblue;
|
||||
}
|
94
code/java/car_dealer/src/main/webapp/file_upload.html
Normal file
94
code/java/car_dealer/src/main/webapp/file_upload.html
Normal file
@ -0,0 +1,94 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-09-29 16:33:30
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-11 10:08:30
|
||||
* @FilePath: \car_dealer\src\main\webapp\file_upload.html
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<!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" />
|
||||
<title>上传文件测试!</title>
|
||||
<link rel="stylesheet" href="css/root.css" />
|
||||
<link rel="stylesheet" href="css/normalize.css" />
|
||||
<link rel="stylesheet" href="css/kane.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
<form
|
||||
action="http://localhost:8080/cardealer/upload.do"
|
||||
id="uploadform"
|
||||
enctype="multipart/form-data"
|
||||
method="post"
|
||||
>
|
||||
<input
|
||||
type="file"
|
||||
name="uploadFile"
|
||||
id="upload"
|
||||
style="display: none"
|
||||
onchange="fileUploadChange()"
|
||||
/>
|
||||
<input
|
||||
type="text"
|
||||
value="12345"
|
||||
name="test"
|
||||
style="display: none"
|
||||
/>
|
||||
</form>
|
||||
<input
|
||||
type="text"
|
||||
id="upload_text"
|
||||
readonly
|
||||
onclick="upload.click()"
|
||||
/>
|
||||
<button id="btnUpload">上传</button>
|
||||
</div>
|
||||
</body>
|
||||
<script>
|
||||
//const reqeustURL = "upload/upload_file.do";
|
||||
const reqeustURL =
|
||||
"http://localhost:8080/cardealer/upload/upload_file.do";
|
||||
const btnUpload = document.getElementById("btnUpload");
|
||||
|
||||
function fileUploadChange() {
|
||||
document.getElementById("upload_text").value =
|
||||
document.getElementById("upload").value;
|
||||
}
|
||||
|
||||
btnUpload.onclick = function (event) {
|
||||
const uploadForm = document.getElementById("uploadform");
|
||||
const form = new FormData(uploadForm);
|
||||
|
||||
const xhr = new XMLHttpRequest();
|
||||
|
||||
//处理进度
|
||||
xhr.upload.onprogress = function (event) {
|
||||
if (event.lengthComputable) {
|
||||
let percent = Math.round(
|
||||
(event.loaded * 100) / event.total,
|
||||
);
|
||||
|
||||
console.log("上传进度:" + percent);
|
||||
}
|
||||
};
|
||||
|
||||
//传送完成
|
||||
xhr.onload = function (event) {
|
||||
console.log(xhr.responseText);
|
||||
|
||||
let result = JSON.parse(xhr.responseText);
|
||||
|
||||
console.log(result);
|
||||
};
|
||||
|
||||
xhr.open("post", reqeustURL, true);
|
||||
xhr.send(form);
|
||||
};
|
||||
</script>
|
||||
</html>
|
37
code/java/car_dealer/src/main/webapp/test.html
Normal file
37
code/java/car_dealer/src/main/webapp/test.html
Normal file
@ -0,0 +1,37 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-19 09:59:34
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-19 17:21:25
|
||||
* @FilePath: \car_dealer\src\main\webapp\test.html
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<!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" />
|
||||
<title>Document</title>
|
||||
<link rel="stylesheet" href="css/root.css" />
|
||||
<link rel="stylesheet" href="css/normalize.css" />
|
||||
<link rel="stylesheet" href="css/kane.css" />
|
||||
<link rel="stylesheet" href="css/test.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="root">
|
||||
<!-- <div><a>测试的文本!!!!</a> <a>第二行文本!!!</a></div>
|
||||
<div class="warp_test"></div> -->
|
||||
<ol>
|
||||
<li>测试</li>
|
||||
<li>测试</li>
|
||||
<li>测试</li>
|
||||
<li>测试</li>
|
||||
<li>测试</li>
|
||||
<li>测试</li>
|
||||
</ol>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
23
code/java/car_dealer/src/main/webapp/test.jsp
Normal file
23
code/java/car_dealer/src/main/webapp/test.jsp
Normal file
@ -0,0 +1,23 @@
|
||||
<%-- /*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-21 00:14:43
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-21 00:16:48
|
||||
* @FilePath: \car_dealer\src\main\webapp\test.jsp
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/ --%>
|
||||
<%@ page contentType="text/html;charset=UTF-8" %>
|
||||
<!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">
|
||||
<title>Document</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
22
code/web/car_dealer/.hintrc
Normal file
22
code/web/car_dealer/.hintrc
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"extends": [
|
||||
"development"
|
||||
],
|
||||
"hints": {
|
||||
"axe/forms": [
|
||||
"default",
|
||||
{
|
||||
"label": "off"
|
||||
}
|
||||
],
|
||||
"compat-api/css": [
|
||||
"default",
|
||||
{
|
||||
"ignore": [
|
||||
"-webkit-text-size-adjust"
|
||||
]
|
||||
}
|
||||
],
|
||||
"highest-available-document-mode": "off"
|
||||
}
|
||||
}
|
27
code/web/car_dealer/css/app.css
Normal file
27
code/web/car_dealer/css/app.css
Normal file
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-11-12 23:32:20
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-11-16 11:08:23
|
||||
* @FilePath: \car_dealer\css\app.css
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
@import url("colors.css");
|
||||
|
||||
body {
|
||||
background-color: var(--backupground-color);
|
||||
padding: 50px;
|
||||
}
|
||||
|
||||
.content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background-color: #fff;
|
||||
width: 25rem;
|
||||
margin: 0px auto;
|
||||
border-radius: 5px;
|
||||
}
|
52
code/web/car_dealer/css/axios/axios.css
Normal file
52
code/web/car_dealer/css/axios/axios.css
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-31 14:38:45
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-11-01 11:01:28
|
||||
* @FilePath: \car_dealer\css\axios\axios.css
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
html {
|
||||
--border-color: #efefef;
|
||||
--hr-color: #efefef;
|
||||
--backupground-color: #f8f8f8;
|
||||
--btn-color-blue: #307dbe;
|
||||
--btn-color-yellow: #f7b24d;
|
||||
--btn-color-green: #5bad60;
|
||||
--btn-color-red: #e56651;
|
||||
--btn-font-color: #fff;
|
||||
|
||||
--light-shadow: #cfcfcf;
|
||||
--dark-shadow: #afafaf;
|
||||
|
||||
--scrollbar-backupground-color: #cfcfcf7f;
|
||||
--scrollbar-track-color: #f7f7f700;
|
||||
|
||||
--font-color: #486171ff;
|
||||
|
||||
color: var(--font-color);
|
||||
}
|
||||
|
||||
input {
|
||||
line-height: 2rem;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* 隐藏上传文件 */
|
||||
input[type="file"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.main_plane {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 20rem;
|
||||
}
|
||||
|
||||
.main_plane > * + * {
|
||||
margin-top: 15px;
|
||||
}
|
34
code/web/car_dealer/css/button.css
Normal file
34
code/web/car_dealer/css/button.css
Normal file
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-11-12 23:20:29
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-11-12 23:45:27
|
||||
* @FilePath: \car_dealer\css\button.css
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
@import url("colors.css");
|
||||
|
||||
button {
|
||||
padding: 5px 10px;
|
||||
background-color: var(--btn-color-red);
|
||||
color: var(--btn-font-color);
|
||||
width: 10em;
|
||||
border: none;
|
||||
border-radius: 0.25em;
|
||||
font-size: 1.5rem;
|
||||
text-align: center;
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* 用于按钮点击时样式切换。 */
|
||||
button:active {
|
||||
background-color: var(--btn-font-color);
|
||||
color: var(--btn-color-red);
|
||||
}
|
21
code/web/car_dealer/css/colors.css
Normal file
21
code/web/car_dealer/css/colors.css
Normal file
@ -0,0 +1,21 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-11-12 23:22:59
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-11-16 15:26:04
|
||||
* @FilePath: \car_dealer\css\colors.css
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
html {
|
||||
--backupground-color: #f4f5f7ff;
|
||||
--btn-color-blue: #307dbe;
|
||||
--btn-color-yellow: #f7b24d;
|
||||
--btn-color-green: #5bad60;
|
||||
--btn-color-red: #e56651;
|
||||
--btn-font-color: #fff;
|
||||
|
||||
--input-focus-color: #e56651;
|
||||
}
|
31
code/web/car_dealer/css/fonts.css
Normal file
31
code/web/car_dealer/css/fonts.css
Normal file
@ -0,0 +1,31 @@
|
||||
/* devanagari */
|
||||
@font-face {
|
||||
font-family: "Poppins";
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: url(../fonts/pxiByp8kv8JHgFVrLEj6Z11lFc-K.woff2) format("woff2");
|
||||
unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8,
|
||||
U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: "Poppins";
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: url(../fonts/pxiByp8kv8JHgFVrLEj6Z1JlFc-K.woff2) format("woff2");
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,
|
||||
U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: "Poppins";
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: url(../fonts/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2) format("woff2");
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
|
||||
U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212,
|
||||
U+2215, U+FEFF, U+FFFD;
|
||||
}
|
57
code/web/car_dealer/css/kane.css
Normal file
57
code/web/car_dealer/css/kane.css
Normal file
@ -0,0 +1,57 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-12 08:49:14
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-11-12 23:34:06
|
||||
* @FilePath: \car_dealer\css\kane.css
|
||||
* @Description: vue学习用的样式表!
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
html {
|
||||
--backupground-color: #f4f5f7ff;
|
||||
--btn-color-blue: #307dbe;
|
||||
--btn-color-yellow: #f7b24d;
|
||||
--btn-color-green: #5bad60;
|
||||
--btn-color-red: #e56651;
|
||||
--btn-font-color: #fff;
|
||||
}
|
||||
|
||||
#root,
|
||||
#app {
|
||||
padding: 50px;
|
||||
}
|
||||
|
||||
.content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
hr {
|
||||
background-color: steelblue;
|
||||
border: none;
|
||||
height: 3px;
|
||||
/* width: 100% */
|
||||
}
|
||||
|
||||
/* .test {
|
||||
width : 110vw;
|
||||
height : 100vh;
|
||||
border : 1px solid red;
|
||||
overflow : auto;
|
||||
} */
|
||||
|
||||
input[type="text"] {
|
||||
border: none;
|
||||
outline: solid 2px #e56651;
|
||||
/* font-size: 2rem; */
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
font-size: 2rem;
|
||||
margin-top: 15px;
|
||||
}
|
156
code/web/car_dealer/css/login.css
Normal file
156
code/web/car_dealer/css/login.css
Normal file
@ -0,0 +1,156 @@
|
||||
html {
|
||||
--backupground-color: #f7f7f7;
|
||||
--btn-color-blue: #307dbe;
|
||||
--btn-color-yellow: #f7b24d;
|
||||
--btn-color-green: #5bad60;
|
||||
--btn-color-red: #e56651;
|
||||
--btn-font-color: #fff;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: yunfengfeiyunti;
|
||||
src: url(../fonts/YunFengfeiyunti.TTF);
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: jinghongtifan;
|
||||
src: url(../fonts/FZZJ-JHTJF.TTF);
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: "Poppins", sans-serif;
|
||||
padding: 0px;
|
||||
overflow-x: hidden;
|
||||
min-width: 1280px;
|
||||
/* -ms-overflow-style: none; */
|
||||
}
|
||||
|
||||
::-webkit-scrollbar {
|
||||
width: 0 !important;
|
||||
}
|
||||
|
||||
.login_box {
|
||||
box-shadow: 0px 0px 10px #bbb;
|
||||
/* border-radius: 5px; */
|
||||
position: fixed;
|
||||
height: 100vh;
|
||||
width: 400px;
|
||||
top: 0vh;
|
||||
right: 50px;
|
||||
background-color: #ffffffcf;
|
||||
z-index: 10;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.login_box img {
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
.login_box h2 {
|
||||
margin: 15px 0px;
|
||||
font-size: 2.9rem;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.input-div {
|
||||
position: relative;
|
||||
display: grid;
|
||||
grid-template-columns: 7% 93%;
|
||||
grid-gap: 5px;
|
||||
margin: 0px 0px 5px 0;
|
||||
padding: 5px 0;
|
||||
}
|
||||
|
||||
.user {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.i {
|
||||
color: #b9b9b9;
|
||||
font-family: "Font Awesome 5 Free";
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.input-div > div {
|
||||
/* 相对定位 */
|
||||
/* position: relative; */
|
||||
/* height: 45px; */
|
||||
}
|
||||
|
||||
/* .input-div > div > h5 {
|
||||
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
color: #999;
|
||||
font-size: 18px;
|
||||
transition: 0.3s;
|
||||
} */
|
||||
|
||||
.fa-user::before {
|
||||
content: "\f007";
|
||||
}
|
||||
|
||||
.input-div > div > input {
|
||||
border: none;
|
||||
outline: none;
|
||||
height: 2rem;
|
||||
padding: 0px 10px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.btn_login {
|
||||
/* display: inline; */
|
||||
width: 40%;
|
||||
height: 50px;
|
||||
border-radius: 25px;
|
||||
outline: none;
|
||||
border: none;
|
||||
background-image: linear-gradient(to right, #32be8f, #32b39f, #32be8f);
|
||||
background-size: 200%;
|
||||
font-size: 1.2rem;
|
||||
color: #fff;
|
||||
font-family: "Poppins", sans-serif;
|
||||
text-transform: uppercase;
|
||||
margin: 1rem auto;
|
||||
/* 鼠标放上变小手 */
|
||||
cursor: pointer;
|
||||
/* transition: 0.1s; */
|
||||
}
|
||||
|
||||
.btn_login:active {
|
||||
background-color: var(--btn-font-color);
|
||||
background-image: none;
|
||||
color: var(--btn-color-red);
|
||||
}
|
||||
|
||||
.title_box {
|
||||
position: absolute;
|
||||
font-family: "jinghongtifan";
|
||||
font-size: 60px;
|
||||
color: #f00;
|
||||
top: 5vh;
|
||||
left: 10vw;
|
||||
height: 2em;
|
||||
width: 10em;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.dash_box {
|
||||
position: relative;
|
||||
min-height: 120vh;
|
||||
width: 100vw;
|
||||
background-color: #ddd;
|
||||
z-index: 0;
|
||||
background-image: url("../img/login/login_bg_06.jpg");
|
||||
background-position: right;
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
}
|
379
code/web/car_dealer/css/normalize.css
vendored
Normal file
379
code/web/car_dealer/css/normalize.css
vendored
Normal file
@ -0,0 +1,379 @@
|
||||
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
|
||||
|
||||
/* Document
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Correct the line height in all browsers.
|
||||
* 2. Prevent adjustments of font size after orientation changes in iOS.
|
||||
*/
|
||||
|
||||
html {
|
||||
line-height: 1.15;
|
||||
/* 1 */
|
||||
-webkit-text-size-adjust: 100%;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/* Sections
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the margin in all browsers.
|
||||
*/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the `main` element consistently in IE.
|
||||
*/
|
||||
|
||||
main {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the font size and margin on `h1` elements within `section` and
|
||||
* `article` contexts in Chrome, Firefox, and Safari.
|
||||
*/
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
/* Grouping content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Add the correct box sizing in Firefox.
|
||||
* 2. Show the overflow in Edge and IE.
|
||||
*/
|
||||
|
||||
hr {
|
||||
box-sizing: content-box;
|
||||
/* 1 */
|
||||
height: 0;
|
||||
/* 1 */
|
||||
overflow: visible;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inheritance and scaling of font size in all browsers.
|
||||
* 2. Correct the odd `em` font sizing in all browsers.
|
||||
*/
|
||||
|
||||
pre {
|
||||
font-family: monospace, monospace;
|
||||
/* 1 */
|
||||
font-size: 1em;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/* Text-level semantics
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the gray background on active links in IE 10.
|
||||
*/
|
||||
|
||||
a {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Remove the bottom border in Chrome 57-
|
||||
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
|
||||
*/
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: none;
|
||||
/* 1 */
|
||||
text-decoration: underline;
|
||||
/* 2 */
|
||||
text-decoration: underline dotted;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct font weight in Chrome, Edge, and Safari.
|
||||
*/
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inheritance and scaling of font size in all browsers.
|
||||
* 2. Correct the odd `em` font sizing in all browsers.
|
||||
*/
|
||||
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: monospace, monospace;
|
||||
/* 1 */
|
||||
font-size: 1em;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct font size in all browsers.
|
||||
*/
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent `sub` and `sup` elements from affecting the line height in
|
||||
* all browsers.
|
||||
*/
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
/* Embedded content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the border on images inside links in IE 10.
|
||||
*/
|
||||
|
||||
img {
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
/* Forms
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Change the font styles in all browsers.
|
||||
* 2. Remove the margin in Firefox and Safari.
|
||||
*/
|
||||
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
font-family: inherit;
|
||||
/* 1 */
|
||||
font-size: 100%;
|
||||
/* 1 */
|
||||
line-height: 1.15;
|
||||
/* 1 */
|
||||
margin: 0;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the overflow in IE.
|
||||
* 1. Show the overflow in Edge.
|
||||
*/
|
||||
|
||||
button,
|
||||
input {
|
||||
/* 1 */
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inheritance of text transform in Edge, Firefox, and IE.
|
||||
* 1. Remove the inheritance of text transform in Firefox.
|
||||
*/
|
||||
|
||||
button,
|
||||
select {
|
||||
/* 1 */
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the inability to style clickable types in iOS and Safari.
|
||||
*/
|
||||
|
||||
button,
|
||||
[type="button"],
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inner border and padding in Firefox.
|
||||
*/
|
||||
|
||||
button::-moz-focus-inner,
|
||||
[type="button"]::-moz-focus-inner,
|
||||
[type="reset"]::-moz-focus-inner,
|
||||
[type="submit"]::-moz-focus-inner {
|
||||
border-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore the focus styles unset by the previous rule.
|
||||
*/
|
||||
|
||||
button:-moz-focusring,
|
||||
[type="button"]:-moz-focusring,
|
||||
[type="reset"]:-moz-focusring,
|
||||
[type="submit"]:-moz-focusring {
|
||||
outline: 1px dotted ButtonText;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the padding in Firefox.
|
||||
*/
|
||||
|
||||
fieldset {
|
||||
padding: 0.35em 0.75em 0.625em;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the text wrapping in Edge and IE.
|
||||
* 2. Correct the color inheritance from `fieldset` elements in IE.
|
||||
* 3. Remove the padding so developers are not caught out when they zero out
|
||||
* `fieldset` elements in all browsers.
|
||||
*/
|
||||
|
||||
legend {
|
||||
box-sizing: border-box;
|
||||
/* 1 */
|
||||
color: inherit;
|
||||
/* 2 */
|
||||
display: table;
|
||||
/* 1 */
|
||||
max-width: 100%;
|
||||
/* 1 */
|
||||
padding: 0;
|
||||
/* 3 */
|
||||
white-space: normal;
|
||||
/* 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
|
||||
*/
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the default vertical scrollbar in IE 10+.
|
||||
*/
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Add the correct box sizing in IE 10.
|
||||
* 2. Remove the padding in IE 10.
|
||||
*/
|
||||
|
||||
[type="checkbox"],
|
||||
[type="radio"] {
|
||||
box-sizing: border-box;
|
||||
/* 1 */
|
||||
padding: 0;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the cursor style of increment and decrement buttons in Chrome.
|
||||
*/
|
||||
|
||||
[type="number"]::-webkit-inner-spin-button,
|
||||
[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the odd appearance in Chrome and Safari.
|
||||
* 2. Correct the outline style in Safari.
|
||||
*/
|
||||
|
||||
[type="search"] {
|
||||
-webkit-appearance: textfield;
|
||||
/* 1 */
|
||||
outline-offset: -2px;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inner padding in Chrome and Safari on macOS.
|
||||
*/
|
||||
|
||||
[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inability to style clickable types in iOS and Safari.
|
||||
* 2. Change font properties to `inherit` in Safari.
|
||||
*/
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
-webkit-appearance: button;
|
||||
/* 1 */
|
||||
font: inherit;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/* Interactive
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* Add the correct display in Edge, IE 10+, and Firefox.
|
||||
*/
|
||||
|
||||
details {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/*
|
||||
* Add the correct display in all browsers.
|
||||
*/
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
}
|
||||
|
||||
/* Misc
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Add the correct display in IE 10+.
|
||||
*/
|
||||
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct display in IE 10.
|
||||
*/
|
||||
|
||||
[hidden] {
|
||||
display: none;
|
||||
}
|
20
code/web/car_dealer/css/root.css
Normal file
20
code/web/car_dealer/css/root.css
Normal file
@ -0,0 +1,20 @@
|
||||
:root {
|
||||
font-size: 1em;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: inherit;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.pointer {
|
||||
cursor: pointer;
|
||||
}
|
24
code/web/car_dealer/css/test.css
Normal file
24
code/web/car_dealer/css/test.css
Normal file
@ -0,0 +1,24 @@
|
||||
button {
|
||||
clip: rect(0, 0, 0, 0);
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
line-height: 20px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.father {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
padding: 0px;
|
||||
border: 1px solid red;
|
||||
}
|
||||
|
||||
.son {
|
||||
border: 1px solid blue;
|
||||
height: 100%;
|
||||
/* margin: 0px 20px; */
|
||||
width: 300px;
|
||||
}
|
195
code/web/car_dealer/css/todo-list/to-list.css
Normal file
195
code/web/car_dealer/css/todo-list/to-list.css
Normal file
@ -0,0 +1,195 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-21 16:39:27
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-11-03 23:48:28
|
||||
* @FilePath: \car_dealer\css\todo-list\to-list.css
|
||||
* @Description: 用于待办事项页面的css!
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
html {
|
||||
--border-color: #efefef;
|
||||
--hr-color: #efefef;
|
||||
--backupground-color: #f4f5f7ff;
|
||||
--plane-color: #ffffff;
|
||||
--btn-color-blue: #307dbe;
|
||||
--btn-color-yellow: #f7b24d;
|
||||
--btn-color-green: #5bad60;
|
||||
--btn-color-red: #e56651;
|
||||
--btn-font-color: #fff;
|
||||
|
||||
--light-shadow: #cfcfcf;
|
||||
--dark-shadow: #afafaf;
|
||||
|
||||
--scrollbar-backupground-color: #cfcfcf7f;
|
||||
--scrollbar-track-color: #f7f7f700;
|
||||
|
||||
--font-color: #486171ff;
|
||||
|
||||
color: var(--font-color);
|
||||
background-color: var(--backupground-color);
|
||||
}
|
||||
|
||||
.border {
|
||||
border: 1px solid var(--border-color);
|
||||
border-radius: 5px;
|
||||
background-color: var(--plane-color);
|
||||
width: 30rem;
|
||||
padding: 1em;
|
||||
box-shadow: 0px 0px 10px var(--light-shadow);
|
||||
}
|
||||
|
||||
.border:hover {
|
||||
box-shadow: 0px 0px 10px var(--dark-shadow);
|
||||
transition: box-shadow 1;
|
||||
}
|
||||
|
||||
.border > .add_todo {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.border > .add_todo > button {
|
||||
margin-left: 5px;
|
||||
flex-basis: 4rem;
|
||||
flex-grow: 0;
|
||||
font-size: 1rem;
|
||||
height: 2.3rem;
|
||||
}
|
||||
|
||||
.border > .add_todo > input {
|
||||
flex-shrink: auto;
|
||||
flex-grow: 1;
|
||||
font-size: 1rem;
|
||||
line-height: 2rem;
|
||||
padding: 0 5px;
|
||||
margin: 0px;
|
||||
outline-color: var(--border-color);
|
||||
}
|
||||
|
||||
hr {
|
||||
border: none;
|
||||
margin-top: 1rem;
|
||||
background-color: var(--border-color);
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
.border > .todo_list {
|
||||
margin-top: calc(1rem - 1px);
|
||||
margin-bottom: calc(1rem - 1px);
|
||||
height: 12.34rem;
|
||||
overflow-y: overlay;
|
||||
padding-top: 1px;
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
|
||||
.todo_list::-webkit-scrollbar {
|
||||
width: 0.75rem;
|
||||
cursor: pointer;
|
||||
/* height: 100px; */
|
||||
}
|
||||
|
||||
.todo_list::-webkit-scrollbar-thumb {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.todo_list:hover::-webkit-scrollbar-thumb {
|
||||
border-radius: 10px;
|
||||
-webkit-box-shadow: inset 0 0 5px var(--scrollbar-track-color);
|
||||
box-shadow: 0 0 5px var(--scrollbar-track-color);
|
||||
background: var(--scrollbar-backupground-color);
|
||||
}
|
||||
|
||||
/* .todo_list:hover::-webkit-scrollbar-track {
|
||||
-webkit-box-shadow: inset 0 0 5px var(--scrollbar-backupground-color);
|
||||
box-shadow: 0 0 5px var(--scrollbar-backupground-color);
|
||||
border-radius: 10px;
|
||||
background: var(--scrollbar-track-color);
|
||||
} */
|
||||
|
||||
.border > .todo_list > * + * {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.border > .todo_list div {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.border > .todo_list div > input[type="checkbox"] {
|
||||
flex-grow: 0;
|
||||
outline: none !important;
|
||||
}
|
||||
|
||||
.border > .todo_list div * + * {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.border > .todo_list span {
|
||||
flex-grow: 1;
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
height: 1.25rem;
|
||||
vertical-align: center;
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.border > .todo_list input {
|
||||
flex-grow: 1;
|
||||
font-size: 1rem;
|
||||
/* line-height: 1.5rem; */
|
||||
padding: 5px 5px;
|
||||
margin: 0px 0px 0px 5px;
|
||||
outline-color: var(--border-color);
|
||||
}
|
||||
|
||||
.border > .todo_list button {
|
||||
flex-grow: 0;
|
||||
font-size: 1rem;
|
||||
width: 4rem;
|
||||
}
|
||||
|
||||
.border > .todo_list input {
|
||||
outline: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
.border > .tools {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.border > .tools > p {
|
||||
text-align: right;
|
||||
margin: 0px 1rem;
|
||||
}
|
||||
|
||||
#message_border {
|
||||
position: fixed;
|
||||
display: none;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
right: 0px;
|
||||
bottom: 0px;
|
||||
background-color: rgba(128, 128, 128, 0.8);
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.message_box {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: var(--backupground-color);
|
||||
padding: 2rem;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.message_box > button {
|
||||
padding: 0.5rem 2rem;
|
||||
font-size: 1rem;
|
||||
}
|
55
code/web/car_dealer/css/表单/表单.css
Normal file
55
code/web/car_dealer/css/表单/表单.css
Normal file
@ -0,0 +1,55 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-11-14 10:50:51
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-11-14 11:44:15
|
||||
* @FilePath: \car_dealer\css\表单\表单.css
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
@import url("../colors.css");
|
||||
|
||||
#app {
|
||||
padding: 15px;
|
||||
display: grid;
|
||||
grid-template-columns: 4rem auto;
|
||||
/* grid-template-rows: repeat(3, 1.5rem); */
|
||||
grid-auto-rows: 2rem;
|
||||
grid-gap: 0.5rem;
|
||||
place-items: center center;
|
||||
}
|
||||
|
||||
#app > * + * {
|
||||
/* margin-top: 15px; */
|
||||
}
|
||||
|
||||
.grid-left {
|
||||
/* display: inline-block; */
|
||||
/* grid-column: 1/2; */
|
||||
/* place-self: end; */
|
||||
text-align: right;
|
||||
line-height: 2rem;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.grid-left + input {
|
||||
height: 1.8rem;
|
||||
width: 100%;
|
||||
outline-color: #f4f5f7;
|
||||
border: 1px solid #f4f5f7;
|
||||
border-radius: 5px;
|
||||
padding: 0.5rem;
|
||||
}
|
||||
|
||||
.grid-left + input:focus {
|
||||
outline: 2px solid #e56651;
|
||||
}
|
||||
|
||||
.cell-gender {
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
}
|
BIN
code/web/car_dealer/fonts/FZZJ-JHTJF.TTF
Normal file
BIN
code/web/car_dealer/fonts/FZZJ-JHTJF.TTF
Normal file
Binary file not shown.
BIN
code/web/car_dealer/fonts/YunFengfeiyunti.TTF
Normal file
BIN
code/web/car_dealer/fonts/YunFengfeiyunti.TTF
Normal file
Binary file not shown.
BIN
code/web/car_dealer/fonts/pxiByp8kv8JHgFVrLEj6Z11lFc-K.woff2
Normal file
BIN
code/web/car_dealer/fonts/pxiByp8kv8JHgFVrLEj6Z11lFc-K.woff2
Normal file
Binary file not shown.
BIN
code/web/car_dealer/fonts/pxiByp8kv8JHgFVrLEj6Z1JlFc-K.woff2
Normal file
BIN
code/web/car_dealer/fonts/pxiByp8kv8JHgFVrLEj6Z1JlFc-K.woff2
Normal file
Binary file not shown.
BIN
code/web/car_dealer/fonts/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2
Normal file
BIN
code/web/car_dealer/fonts/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2
Normal file
Binary file not shown.
1
code/web/car_dealer/img/login/avatar.svg
Normal file
1
code/web/car_dealer/img/login/avatar.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg id="457bf273-24a3-4fd8-a857-e9b918267d6a" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="698" height="698" viewBox="0 0 698 698"><defs><linearGradient id="b247946c-c62f-4d08-994a-4c3d64e1e98f" x1="349" y1="698" x2="349" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="gray" stop-opacity="0.25"/><stop offset="0.54" stop-color="gray" stop-opacity="0.12"/><stop offset="1" stop-color="gray" stop-opacity="0.1"/></linearGradient></defs><title>profile pic</title><g opacity="0.5"><circle cx="349" cy="349" r="349" fill="url(#b247946c-c62f-4d08-994a-4c3d64e1e98f)"/></g><circle cx="349.68" cy="346.77" r="341.64" fill="#f5f5f5"/><path d="M601,790.76a340,340,0,0,0,187.79-56.2c-12.59-68.8-60.5-72.72-60.5-72.72H464.09s-45.21,3.71-59.33,67A340.07,340.07,0,0,0,601,790.76Z" transform="translate(-251 -101)" fill="#38d39f"/><circle cx="346.37" cy="339.57" r="164.9" fill="#333"/><path d="M293.15,476.92H398.81a0,0,0,0,1,0,0v84.53A52.83,52.83,0,0,1,346,614.28h0a52.83,52.83,0,0,1-52.83-52.83V476.92a0,0,0,0,1,0,0Z" opacity="0.1"/><path d="M296.5,473h99a3.35,3.35,0,0,1,3.35,3.35v81.18A52.83,52.83,0,0,1,346,610.37h0a52.83,52.83,0,0,1-52.83-52.83V476.35A3.35,3.35,0,0,1,296.5,473Z" fill="#fdb797"/><path d="M544.34,617.82a152.07,152.07,0,0,0,105.66.29v-13H544.34Z" transform="translate(-251 -101)" opacity="0.1"/><circle cx="346.37" cy="372.44" r="151.45" fill="#fdb797"/><path d="M489.49,335.68S553.32,465.24,733.37,390l-41.92-65.73-74.31-26.67Z" transform="translate(-251 -101)" opacity="0.1"/><path d="M489.49,333.78s63.83,129.56,243.88,54.3l-41.92-65.73-74.31-26.67Z" transform="translate(-251 -101)" fill="#333"/><path d="M488.93,325a87.49,87.49,0,0,1,21.69-35.27c29.79-29.45,78.63-35.66,103.68-69.24,6,9.32,1.36,23.65-9,27.65,24-.16,51.81-2.26,65.38-22a44.89,44.89,0,0,1-7.57,47.4c21.27,1,44,15.4,45.34,36.65.92,14.16-8,27.56-19.59,35.68s-25.71,11.85-39.56,14.9C608.86,369.7,462.54,407.07,488.93,325Z" transform="translate(-251 -101)" fill="#333"/><ellipse cx="194.86" cy="372.3" rx="14.09" ry="26.42" fill="#fdb797"/><ellipse cx="497.8" cy="372.3" rx="14.09" ry="26.42" fill="#fdb797"/></svg>
|
After Width: | Height: | Size: 2.1 KiB |
BIN
code/web/car_dealer/img/login/login_bg_01.jpg
Normal file
BIN
code/web/car_dealer/img/login/login_bg_01.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 245 KiB |
BIN
code/web/car_dealer/img/login/login_bg_02.jpg
Normal file
BIN
code/web/car_dealer/img/login/login_bg_02.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 MiB |
BIN
code/web/car_dealer/img/login/login_bg_04.jpg
Normal file
BIN
code/web/car_dealer/img/login/login_bg_04.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 MiB |
BIN
code/web/car_dealer/img/login/login_bg_05.jpg
Normal file
BIN
code/web/car_dealer/img/login/login_bg_05.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 670 KiB |
BIN
code/web/car_dealer/img/login/login_bg_06.jpg
Normal file
BIN
code/web/car_dealer/img/login/login_bg_06.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.8 MiB |
38
code/web/car_dealer/index.html
Normal file
38
code/web/car_dealer/index.html
Normal file
@ -0,0 +1,38 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-11 22:49:54
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-14 17:24:05
|
||||
* @FilePath: \car_dealer\index.html
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<!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" />
|
||||
<title>Document</title>
|
||||
<link rel="stylesheet" href="css/root.css" />
|
||||
<link rel="stylesheet" href="css/normalize.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="outter">
|
||||
<p class="inner">测试</p>
|
||||
</div>
|
||||
</body>
|
||||
<style>
|
||||
.outter {
|
||||
border: 1px solid red;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.inner {
|
||||
display: inline;
|
||||
width: 150px;
|
||||
border: 1px solid green;
|
||||
}
|
||||
</style>
|
||||
</html>
|
2659
code/web/car_dealer/js/axios/1.1.3/axios.js
Normal file
2659
code/web/car_dealer/js/axios/1.1.3/axios.js
Normal file
File diff suppressed because it is too large
Load Diff
646
code/web/car_dealer/js/axios/1.1.3/axios.js.map
Normal file
646
code/web/car_dealer/js/axios/1.1.3/axios.js.map
Normal file
File diff suppressed because one or more lines are too long
15929
code/web/car_dealer/js/vue/vue.global.js
Normal file
15929
code/web/car_dealer/js/vue/vue.global.js
Normal file
File diff suppressed because it is too large
Load Diff
62
code/web/car_dealer/login.html
Normal file
62
code/web/car_dealer/login.html
Normal file
@ -0,0 +1,62 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-11 23:19:28
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-12 20:49:35
|
||||
* @FilePath: \car_dealer\login.html
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<!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" />
|
||||
<title>登录</title>
|
||||
<link href="css/fonts.css" rel="stylesheet" />
|
||||
<link rel="stylesheet" href="css/root.css" />
|
||||
<link rel="stylesheet" href="css/normalize.css" />
|
||||
<link rel="stylesheet" href="css/login.css" />
|
||||
<script src="https://kit.fontawesome.com/a81368914c.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="dash_box">
|
||||
<div class="title_box">
|
||||
<!-- <h1>車商渠道</h1> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="login_box">
|
||||
<form>
|
||||
<img src="img/login/avatar.svg" alt="" />
|
||||
<h2>欢迎</h2>
|
||||
<div class="input-div user">
|
||||
<div class="i">
|
||||
<i class="fas fa-user"></i>
|
||||
</div>
|
||||
<div>
|
||||
<!-- <h5>用户名</h5> -->
|
||||
<input type="text" placeholder="请输入P13账号" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-div user">
|
||||
<div class="i">
|
||||
<i class="fa fa-lock"></i>
|
||||
</div>
|
||||
<div>
|
||||
<!-- <h5>密码</h5> -->
|
||||
<input
|
||||
type="password"
|
||||
name=""
|
||||
id=""
|
||||
placeholder="密码"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <button class="btn_login">登录</button> -->
|
||||
</form>
|
||||
<button class="btn_login">登录</button>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
30
code/web/car_dealer/test.html
Normal file
30
code/web/car_dealer/test.html
Normal file
@ -0,0 +1,30 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-19 22:46:18
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-19 23:38:21
|
||||
* @FilePath: \car_dealer\test.html
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
<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" />
|
||||
<title>测试css</title>
|
||||
<!-- <link rel="stylesheet" href="css/root.css" /> -->
|
||||
<!-- <link rel="stylesheet" href="css/normalize.css" /> -->
|
||||
<link rel="stylesheet" href="css/kane.css" />
|
||||
<link rel="stylesheet" href="css/test.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="root">
|
||||
<div class="father">
|
||||
<div class="son"></div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
103
code/web/car_dealer/vue/Untitled-1.html
Normal file
103
code/web/car_dealer/vue/Untitled-1.html
Normal file
@ -0,0 +1,103 @@
|
||||
<table align="center" style="width: 215px;">
|
||||
<tbody>
|
||||
<tr class="firstRow">
|
||||
<td align="center" style="-ms-word-break: break-all;" valign="middle" width="60">
|
||||
<p style="text-align:center"><a href="http://newoa.hq.cpic.com/" target="_Blank"><img alt=""
|
||||
src="/images/portal/1.png" /> </a></p>
|
||||
|
||||
<p><a href="http://newoa.hq.cpic.com/" target="_Blank"><span style="color:#000000;"><span
|
||||
style="font-size: 12px;">太保e办1.0</span> </span> </a></p>
|
||||
</td>
|
||||
<td align="center" style="width: 89px;" valign="middle" width="60">
|
||||
<p style="text-align:center"><a href="http://mailoa7.hq.cpic.com/mail/empmail.nsf/cxxx?openform"
|
||||
target="_Blank"><img alt="" src="/images/portal/7.png" /> </a></p>
|
||||
|
||||
<p><a href="http://mailoa7.hq.cpic.com/mail/empmail.nsf/cxxx?openform" target="_Blank"><span
|
||||
style="color:#000000;"><span style="font-size: 12px;">董事长邮箱</span> </span> </a></p>
|
||||
</td>
|
||||
<td align="center" style="width: 60px;" valign="middle" width="60">
|
||||
<p style="text-align:center"><a
|
||||
href="http://xcoa-gp21oa.group.cpic.com/wui/index.html#/main/workflow/add?menuIds=1,12&menuPathIds=1,12&_key=4556on"
|
||||
target="_Blank"><img alt="" src="/images/portal/1.png" /> </a></p>
|
||||
|
||||
<p><a href="http://xcoa-gp21oa.group.cpic.com/wui/index.html#/main/workflow/add?menuIds=1,12&menuPathIds=1,12&_key=4556on"
|
||||
target="_Blank"><span style="color:#000000;"><span style="font-size: 12px;">新建流程</span> </span>
|
||||
</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="firstRow">
|
||||
<td align="center" style="width: 60px;" valign="middle" width="60">
|
||||
<p style="text-align:center"><a
|
||||
href="http://xcoa-gp21oa.group.cpic.com/spa/meeting/static/index.html#/main/meeting/RoomPlan?canEdit=1"
|
||||
target="_Blank"><img alt="" src="/images/portal/8.png" /> </a></p>
|
||||
|
||||
<p><a href="http://xcoa-gp21oa.group.cpic.com/spa/meeting/static/index.html#/main/meeting/RoomPlan?canEdit=1"
|
||||
target="_Blank"><span style="color:#000000;"><span style="font-size: 12px;">会议室预定</span> </span>
|
||||
</a></p>
|
||||
</td>
|
||||
<td align="center" style="width: 89px;" valign="middle" width="60">
|
||||
<p style="text-align:center"><a
|
||||
href="http://xcoa-gp21oa.group.cpic.com/spa/hrm/index_mobx.html#/main/hrm/card/cardInfo/99068?_key=z1z8ru"
|
||||
target="_Blank"><img alt="" src="/images/portal/8.png" /> </a></p>
|
||||
|
||||
<p><a href="http://xcoa-gp21oa.group.cpic.com/spa/hrm/index_mobx.html#/main/hrm/card/cardInfo/99068?_key=z1z8ru"
|
||||
target="_Blank"><span style="color:#000000;"><span style="font-size: 12px;">个人名片</span> </span>
|
||||
</a></p>
|
||||
</td>
|
||||
<td align="center" style="width: 60px;" valign="middle" width="60">
|
||||
<p style="text-align:center"><a href="http://trippc.hq.cpic.com/taibao-pc/users/loginPage.do"
|
||||
target="_Blank"><img alt="" src="/images/portal/4.png" /> </a></p>
|
||||
|
||||
<p><a href="http://trippc.hq.cpic.com/taibao-pc/users/loginPage.do" target="_Blank"><span
|
||||
style="color:#000000;"><span style="font-size: 12px;">太保e行</span> </span> </a></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="firstRow">
|
||||
<td align="center" style="-ms-word-break: break-all;" valign="middle" width="60">
|
||||
<p style="text-align:center"><a
|
||||
href="http://xcoa-gp21oa.group.cpic.com/spa/document/static/index.html#/main/document/search?eid=1481&tabid=9&redictFrom=more&_key=yw4d6i"
|
||||
target="_Blank"><img alt="" src="/images/portal/1.png" /> </a></p>
|
||||
|
||||
<p><a href="http://xcoa-gp21oa.group.cpic.com/spa/document/static/index.html#/main/document/search?eid=1481&tabid=9&redictFrom=more&_key=yw4d6i"
|
||||
target="_Blank"><span style="color:#000000;"><span style="font-size: 12px;">办事指南</span> </span>
|
||||
</a></p>
|
||||
</td>
|
||||
<td align="center" style="width: 89px;" valign="middle" width="60">
|
||||
<p style="text-align:center"><a
|
||||
href="http://21.10.0.67/caf-cxhg-web/com.cpic.caf.main.view.caseLibrary.caseSearch.d"
|
||||
target="_Blank"><img alt="" src="/images/portal/16.png" /> </a></p>
|
||||
|
||||
<p><a href="http://21.10.0.67/caf-cxhg-web/com.cpic.caf.main.view.caseLibrary.caseSearch.d"
|
||||
target="_Blank"><span style="color:#000000;"><span style="font-size: 12px;">合规e查</span> </span>
|
||||
</a></p>
|
||||
</td>
|
||||
<td align="center" style="width: 60px;" valign="middle" width="60">
|
||||
<p style="text-align:center"><a href="/spa/portal/static/index.html#/main/portal/portal-1321-1"
|
||||
target="_Blank"><img alt="" src="/images/portal/7.png" /> </a></p>
|
||||
|
||||
<p><a href="/spa/portal/static/index.html#/main/portal/portal-1321-1" target="_Blank"><span
|
||||
style="color:#000000;"><span style="font-size: 12px;">IT热线</span> </span> </a></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="firstRow">
|
||||
<td align="center" style="-ms-word-break: break-all;" valign="middle" width="60">
|
||||
<p style="text-align:center"><a
|
||||
href="http://10.187.28.129:8080/xm/servlet/SkipJspServlet?cmd=message_all&id=000325&info=QC9bKmwCMOItJatSmkD5EQq46uLDeLJ5nX-qq8xAY4A&idCard=lZsIq4st6PfvratOk5C_rTRiA7X2PdjvrDNZt5kCwlM&mobile=5A07ebGbeA8URvr842Ei8A&name=%E4%BA%8E%E5%BD%AC&cpicuid=yubin-033&unitCode=2030100&sign=9dbb28ed96215ea502875ec1c195d846a93ab796"
|
||||
target="_Blank"><img alt="" src="/images/portal/1.png" /> </a></p>
|
||||
|
||||
<p><a href="http://10.187.28.129:8080/xm/servlet/SkipJspServlet?cmd=message_all&id=000325&info=QC9bKmwCMOItJatSmkD5EQq46uLDeLJ5nX-qq8xAY4A&idCard=lZsIq4st6PfvratOk5C_rTRiA7X2PdjvrDNZt5kCwlM&mobile=5A07ebGbeA8URvr842Ei8A&name=%E4%BA%8E%E5%BD%AC&cpicuid=yubin-033&unitCode=2030100&sign=9dbb28ed96215ea502875ec1c195d846a93ab796"
|
||||
target="_Blank"><span style="color:#000000;"><span style="font-size: 12px;">厦分民意箱</span> </span>
|
||||
</a></p>
|
||||
</td>
|
||||
<td align="center" style="width: 60px;" valign="middle" width="60">
|
||||
<p style="text-align:center"><a
|
||||
href="http://10.187.28.129:8080/crm/servlet/Innovateservlet?cmd=innovateMainManager&org_id="
|
||||
target="_Blank"><img alt="" src="/images/portal/7.png" /> </a></p>
|
||||
|
||||
<p><a href="http://10.187.28.129:8080/crm/servlet/Innovateservlet?cmd=innovateMainManager&org_id="
|
||||
target="_Blank"><span style="color:#000000;"><span style="font-size: 12px;">创新天地</span> </span>
|
||||
</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
113
code/web/car_dealer/vue/axios.html
Normal file
113
code/web/car_dealer/vue/axios.html
Normal file
@ -0,0 +1,113 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-31 13:11:55
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-11-01 09:54:11
|
||||
* @FilePath: \car_dealer\vue\axios.html
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<!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" />
|
||||
<title>axios</title>
|
||||
<link rel="stylesheet" href="../css/root.css" />
|
||||
<link rel="stylesheet" href="../css/normalize.css" />
|
||||
<link rel="stylesheet" href="../css/kane.css" />
|
||||
<link rel="stylesheet" href="../css/axios/axios.css" />
|
||||
<script src="../js/axios/1.1.3/axios.js"></script>
|
||||
<script src="../js/vue/vue.global.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="content">
|
||||
<div id="app">
|
||||
<div class="main_plane">
|
||||
<input
|
||||
type="text"
|
||||
name="file_name"
|
||||
id="file_name"
|
||||
readonly
|
||||
onclick="selectFile()"
|
||||
/>
|
||||
<button type="button" @click="onUploadFile()">上传</button>
|
||||
<input
|
||||
type="file"
|
||||
name="uploadFile"
|
||||
id="fileupload"
|
||||
onchange="onFileuploadChange()"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script>
|
||||
const UPLOAD_FILE_URL =
|
||||
"http://localhost:8080/cardealer/upload/upload_file.do";
|
||||
const IMPORT_CARDEALER_URL =
|
||||
"http://localhost:8080/cardealer/data/import/importcardealer.do";
|
||||
|
||||
function selectFile() {
|
||||
const upload_file = document.getElementById("fileupload");
|
||||
const file_name = document.getElementById("file_name");
|
||||
|
||||
upload_file.click();
|
||||
}
|
||||
|
||||
function onFileuploadChange() {
|
||||
const upload_file = document.getElementById("fileupload");
|
||||
const file_name = document.getElementById("file_name");
|
||||
|
||||
file_name.value = upload_file.value;
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
const app = {
|
||||
data() {
|
||||
return {
|
||||
test: "测试this!",
|
||||
};
|
||||
},
|
||||
|
||||
methods: {
|
||||
onUploadFile: function () {
|
||||
let param = {
|
||||
file_path: "file path",
|
||||
table_name: "车商表",
|
||||
};
|
||||
|
||||
axios
|
||||
.post(IMPORT_CARDEALER_URL, param)
|
||||
.then((response) => {
|
||||
console.log(response.data);
|
||||
console.log(response);
|
||||
})
|
||||
.catch((error) => {
|
||||
//先检查response,看看是否因为状态码不是200
|
||||
if (error.response) {
|
||||
console.log(error.response.data);
|
||||
console.log(error.response.status);
|
||||
}
|
||||
//没有收到响应,就检查request
|
||||
else if (error.request) {
|
||||
console.log(error.request);
|
||||
}
|
||||
//如果request也为undefined,说明是引擎抛出了异常
|
||||
else {
|
||||
console.log(error.message);
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
Vue.config.productionTip = false;
|
||||
|
||||
const vm = Vue.createApp(app);
|
||||
|
||||
vm.mount("#app");
|
||||
</script>
|
||||
</html>
|
104
code/web/car_dealer/vue/keypath.html
Normal file
104
code/web/car_dealer/vue/keypath.html
Normal file
@ -0,0 +1,104 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-11-02 11:22:37
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-11-07 16:45:06
|
||||
* @FilePath: \car_dealer\vue\keypath.html
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<!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" />
|
||||
<title>keypath测试</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div>a<div>b</div>c</div>
|
||||
</body>
|
||||
<script>
|
||||
const keypathReg = /[^\w.$]/;
|
||||
|
||||
let a = {
|
||||
b: {
|
||||
c: {
|
||||
d: 100,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
function parsePath(path) {
|
||||
if (keypathReg.test(path)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const segments = path.split(".");
|
||||
|
||||
return function (obj) {
|
||||
console.log(segments);
|
||||
for (let i = 0; i < segments.length; i++) {
|
||||
// console.log(segments.length);
|
||||
|
||||
if (!obj) {
|
||||
//如果obj没有值,就返回
|
||||
return;
|
||||
}
|
||||
|
||||
obj = obj[segments[i]];
|
||||
}
|
||||
|
||||
return obj;
|
||||
};
|
||||
}
|
||||
|
||||
let obj = parsePath("b.c.d");
|
||||
|
||||
console.log(obj.call(a, a));
|
||||
</script>
|
||||
<script>
|
||||
class Dep {
|
||||
constructor() { }
|
||||
|
||||
depend() { }
|
||||
|
||||
notify() { }
|
||||
}
|
||||
|
||||
/**
|
||||
* data 要添加响应式的对象
|
||||
* key 要设置为响应式的属性
|
||||
* val 属性的值
|
||||
*/
|
||||
function defineReactive(data, key, val) {
|
||||
if (typeof val === "Object ") {
|
||||
}
|
||||
|
||||
let dep = new Dep();
|
||||
|
||||
Object.defineProperty(data, key, {
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
get: function () {
|
||||
dep.depend();
|
||||
|
||||
return val;
|
||||
},
|
||||
set: function (newVal) {
|
||||
if (val === newVal) {
|
||||
return;
|
||||
}
|
||||
|
||||
val = newVal;
|
||||
|
||||
dep.notify();
|
||||
},
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
</html>
|
213
code/web/car_dealer/vue/todo-list.html
Normal file
213
code/web/car_dealer/vue/todo-list.html
Normal file
@ -0,0 +1,213 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-21 16:36:51
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-11-01 17:48:11
|
||||
* @FilePath: \car_dealer\vue\todo-list.html
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<!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" />
|
||||
<title>待办任务</title>
|
||||
<link rel="stylesheet" href="../css/root.css" />
|
||||
<link rel="stylesheet" href="../css/normalize.css" />
|
||||
<link rel="stylesheet" href="../css/kane.css" />
|
||||
<link rel="stylesheet" href="../css/todo-list/to-list.css" />
|
||||
<script src="../js/vue/vue.global.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app">
|
||||
<div id="message_border">
|
||||
<div class="message_box">
|
||||
<span>{{errorMessage}}</span>
|
||||
<button type="button" @click="closeMessageBox()">
|
||||
关闭
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<h1>{{title}}</h1>
|
||||
<div class="border">
|
||||
<div class="add_todo">
|
||||
<input type="text" v-model="todo_text" placeholder="请输入待办事项" />
|
||||
<button type="button" @click="showMessageBox()">
|
||||
添加
|
||||
</button>
|
||||
</div>
|
||||
<hr />
|
||||
<div class="todo_list">
|
||||
<div v-for="(item,index) in todo_list" :key="index">
|
||||
<input type="checkbox" v-model="todo_list[index].selected" />
|
||||
<span v-show="!item.edit">{{item.todo_text}}</span>
|
||||
<input type="text" v-show="item.edit" v-model="item.todo_text" />
|
||||
<button type="button" v-on:click="editTodo(index,event)">
|
||||
修改
|
||||
</button>
|
||||
<button type="button" @click="removeTodo(index)">
|
||||
删除
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div class="tools">
|
||||
<p class="summary">总计:{{totalTodos}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script>
|
||||
const app = {
|
||||
data() {
|
||||
return {
|
||||
title: "待办任务",
|
||||
errorMessage: "奇怪的错误!",
|
||||
todo_text: "",
|
||||
todo_list: [
|
||||
{
|
||||
selected: false,
|
||||
todo_text: "回家",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: true,
|
||||
todo_text: "吃饭",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: false,
|
||||
todo_text: "洗澡",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: false,
|
||||
todo_text: "玩游戏",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: false,
|
||||
todo_text: "回家",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: true,
|
||||
todo_text: "吃饭",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: false,
|
||||
todo_text: "洗澡",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: false,
|
||||
todo_text: "玩游戏",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: false,
|
||||
todo_text: "回家",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: true,
|
||||
todo_text: "吃饭",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: false,
|
||||
todo_text: "洗澡",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: false,
|
||||
todo_text: "玩游戏",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: false,
|
||||
todo_text: "回家",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: true,
|
||||
todo_text: "吃饭",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: false,
|
||||
todo_text: "洗澡",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: false,
|
||||
todo_text: "玩游戏",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: false,
|
||||
todo_text: "回家",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: true,
|
||||
todo_text: "吃饭",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: false,
|
||||
todo_text: "洗澡",
|
||||
edit: false,
|
||||
},
|
||||
{
|
||||
selected: false,
|
||||
todo_text: "玩游戏",
|
||||
edit: false,
|
||||
},
|
||||
],
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
addTodo() { },
|
||||
editTodo(index, event) {
|
||||
console.log(index);
|
||||
console.log(event);
|
||||
|
||||
this.todo_list[index].edit = !this.todo_list[index].edit;
|
||||
},
|
||||
removeTodo(index) {
|
||||
this.todo_list.splice(index, 1);
|
||||
},
|
||||
showMessageBox() {
|
||||
const message = document.getElementById("message_border");
|
||||
|
||||
message.style["display"] = "flex";
|
||||
},
|
||||
closeMessageBox() {
|
||||
const message = document.getElementById("message_border");
|
||||
|
||||
message.style["display"] = "none";
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
totalTodos: {
|
||||
get() {
|
||||
return this.todo_list.length;
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const vm = Vue.createApp(app);
|
||||
vm.mount("#app");
|
||||
</script>
|
||||
|
||||
</html>
|
84
code/web/car_dealer/vue/vue_01.html
Normal file
84
code/web/car_dealer/vue/vue_01.html
Normal file
@ -0,0 +1,84 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-20 15:07:59
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-21 16:29:39
|
||||
* @FilePath: \car_dealer\vue\vue_01.html
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<!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" />
|
||||
<title>vue3入门</title>
|
||||
<link rel="stylesheet" href="../css/root.css" />
|
||||
<link rel="stylesheet" href="../css/normalize.css" />
|
||||
<link rel="stylesheet" href="../css/kane.css" />
|
||||
<script src="../js/vue/vue.global.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app">
|
||||
<div class="content">
|
||||
<h1>{{title}}</h1>
|
||||
<h1>{{count}}</h1>
|
||||
<button type="button" v-on:click="addCount()">计数器</button>
|
||||
<button type="button" v-on:click="switchButton()">
|
||||
{{btn_title}}
|
||||
</button>
|
||||
<hr />
|
||||
<h1>测试列表渲染</h1>
|
||||
<h3>员工数量:{{stuffCount}}</h3>
|
||||
<table>
|
||||
<tr v-for="(stuff,index) in stuff_list" v-bind:key="index">
|
||||
<td>{{index+1}}</td>
|
||||
<td>{{stuff.name}}</td>
|
||||
<td>{{stuff.age}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr />
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script>
|
||||
const app = {
|
||||
data() {
|
||||
return {
|
||||
title: "vue3 入门!",
|
||||
count: 0,
|
||||
btn_title: "走你",
|
||||
btn_switch: true,
|
||||
stuff_list: [
|
||||
{ name: "kane1", age: "40" },
|
||||
{ name: "kane2", age: "41" },
|
||||
{ name: "kane3", age: "42" },
|
||||
{ name: "kane4", age: "43" },
|
||||
{ name: "kane5", age: "44" },
|
||||
],
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
addCount() {
|
||||
this.count++;
|
||||
},
|
||||
switchButton() {
|
||||
this.btn_switch = !this.btn_switch;
|
||||
this.btn_title = this.btn_switch ? "走你!" : "滚";
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
stuffCount() {
|
||||
return this.stuff_list.length;
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const vm = Vue.createApp(app);
|
||||
|
||||
vm.mount("#app");
|
||||
</script>
|
||||
</html>
|
81
code/web/car_dealer/vue/注册/css/main.css
Normal file
81
code/web/car_dealer/vue/注册/css/main.css
Normal file
@ -0,0 +1,81 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-11-16 10:58:30
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-11-16 14:38:15
|
||||
* @FilePath: \car_dealer\vue\注册\css\main.css
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
@import url("../../../css/colors.css");
|
||||
|
||||
html {
|
||||
--text-border-color: #f4f5f7ff;
|
||||
}
|
||||
|
||||
#app {
|
||||
width: 20rem;
|
||||
background-color: #fff;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
#app > div {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* #app input {
|
||||
margin-top: 0.25rem;
|
||||
margin-bottom: 5px;
|
||||
} */
|
||||
|
||||
#app input[type="text"] {
|
||||
margin-top: 0.25rem;
|
||||
margin-bottom: 5px;
|
||||
width: 100%;
|
||||
height: 2rem;
|
||||
line-height: 1.5rem;
|
||||
padding: 2px 1rem;
|
||||
border: 1px solid #f4f5f7ff;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
#app input[type="text"]:focus {
|
||||
border: none;
|
||||
outline: 2px solid var(--input-focus-color);
|
||||
}
|
||||
|
||||
#app > * + * {
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.pianhao {
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
margin-top: 0.25rem;
|
||||
}
|
||||
|
||||
.pianhao label {
|
||||
line-height: 0.8rem;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
button {
|
||||
background-color: var(--btn-color-red);
|
||||
color: var(--btn-font-color);
|
||||
border: none;
|
||||
border-radius: 5px;
|
||||
width: 10rem;
|
||||
padding: 0.5rem 1rem;
|
||||
margin-top: 25px !important;
|
||||
}
|
||||
|
||||
button:active {
|
||||
color: var(--btn-color-red);
|
||||
background-color: var(--btn-font-color);
|
||||
}
|
100
code/web/car_dealer/vue/注册/signup.html
Normal file
100
code/web/car_dealer/vue/注册/signup.html
Normal file
@ -0,0 +1,100 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-11-16 10:50:27
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-11-16 15:07:29
|
||||
* @FilePath: \car_dealer\vue\注册\signup.html
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<!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" />
|
||||
<title>注册</title>
|
||||
<link rel="stylesheet" href="../../css/root.css" />
|
||||
<link rel="stylesheet" href="../../css/normalize.css" />
|
||||
<link rel="stylesheet" href="../../css/app.css" />
|
||||
<link rel="stylesheet" href="css/main.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="content">
|
||||
<div id="app">
|
||||
<h5>加入我们,一起创造美好世界</h5>
|
||||
<h1>创建你的账号</h1>
|
||||
<div>
|
||||
<h6>用户名 *</h6>
|
||||
<input
|
||||
type="text"
|
||||
v-model.lazy.trim="signupInfo.username"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<h6>邮箱地址</h6>
|
||||
<input type="text" v-model.lazy.trim="signupInfo.email" />
|
||||
</div>
|
||||
<div>
|
||||
<h6>密码*</h6>
|
||||
<input
|
||||
type="text"
|
||||
v-model.lazy.trim="signupInfo.password"
|
||||
/>
|
||||
<h6>请确认密码长度需要大于6位</h6>
|
||||
</div>
|
||||
<div>
|
||||
<h6>偏好设置</h6>
|
||||
<div class="pianhao">
|
||||
<input
|
||||
type="checkbox"
|
||||
id="sendUpdateMail"
|
||||
v-model="signupInfo.sendUpdateMail"
|
||||
/>
|
||||
<label for="sendUpdateMail"> 接收更新邮件</label>
|
||||
</div>
|
||||
</div>
|
||||
<button type="button" @click="doSignup()">创建账号</button>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script src="../../js/axios/1.1.3/axios.js"></script>
|
||||
<script src="../../js/vue/vue.global.js"></script>
|
||||
<script>
|
||||
const app = {
|
||||
data() {
|
||||
return {
|
||||
signupInfo: {
|
||||
username: "",
|
||||
email: "",
|
||||
password: "",
|
||||
sendUpdateMail: false,
|
||||
},
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
doSignup() {
|
||||
let json = "";
|
||||
|
||||
if (
|
||||
this.signupInfo.username.length != 0 &&
|
||||
this.signupInfo.password.length != 0
|
||||
) {
|
||||
try {
|
||||
json = JSON.stringify(this.signupInfo);
|
||||
} catch (exception) {
|
||||
console.log(exception.message);
|
||||
}
|
||||
} else {
|
||||
}
|
||||
|
||||
console.log(json);
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const vm = Vue.createApp(app);
|
||||
vm.mount("#app");
|
||||
</script>
|
||||
</html>
|
61
code/web/car_dealer/vue/自定义组件/component.html
Normal file
61
code/web/car_dealer/vue/自定义组件/component.html
Normal file
@ -0,0 +1,61 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-11-18 16:07:50
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-11-18 16:27:14
|
||||
* @FilePath: \car_dealer\vue\自定义组件\component.html
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<!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" />
|
||||
<title>自定义组件</title>
|
||||
<link rel="stylesheet" href="../../css/root.css" />
|
||||
<link rel="stylesheet" href="../../css/normalize.css" />
|
||||
<link rel="stylesheet" href="../../css/app.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="content">
|
||||
<div id="app">
|
||||
<my-component title="测试" v-model="count"></my-component>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script src="../../js/vue/vue.global.js"></script>
|
||||
<script>
|
||||
const root = {
|
||||
data() {
|
||||
return {
|
||||
count: 0,
|
||||
value: "",
|
||||
};
|
||||
},
|
||||
};
|
||||
const component = {
|
||||
template:
|
||||
"<div><button @click='doClick($event)'>{{title}}</button></div>",
|
||||
props: ["title", "modelValue"],
|
||||
data() {
|
||||
return {
|
||||
count: 0,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
doClick(event) {
|
||||
this.count++;
|
||||
|
||||
this.$emit("update:modelValue", this.count);
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const vm = Vue.createApp(root);
|
||||
vm.component("my-component", component);
|
||||
vm.mount("#app");
|
||||
</script>
|
||||
</html>
|
88
code/web/car_dealer/vue/表单.html
Normal file
88
code/web/car_dealer/vue/表单.html
Normal file
@ -0,0 +1,88 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-11-12 23:21:53
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-11-14 16:25:35
|
||||
* @FilePath: \car_dealer\vue\表单.html
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<!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" />
|
||||
<title>表单</title>
|
||||
<link rel="stylesheet" href="../css/root.css" />
|
||||
<link rel="stylesheet" href="../css/normalize.css" />
|
||||
<link rel="stylesheet" href="../css/button.css" />
|
||||
<link rel="stylesheet" href="../css/app.css" />
|
||||
<link rel="stylesheet" href="../css/表单/表单.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="content">
|
||||
<div id="app">
|
||||
<p class="grid-left">用户名:</p>
|
||||
<input
|
||||
class="grid-right"
|
||||
type="text"
|
||||
placeholder=""
|
||||
v-model="account.username"
|
||||
/>
|
||||
<p class="grid-left">密码:</p>
|
||||
<input type="password" v-model="account.password" />
|
||||
<p class="grid-left">性别:</p>
|
||||
<div class="cell-gender">
|
||||
<input
|
||||
type="radio"
|
||||
name="gender"
|
||||
id="male"
|
||||
value="male"
|
||||
v-model="account.gender"
|
||||
/><label for="male">男</label>
|
||||
<input
|
||||
type="radio"
|
||||
name="gender"
|
||||
id="female"
|
||||
value="female"
|
||||
v-model="account.gender"
|
||||
/><label for="female">女</label>
|
||||
</div>
|
||||
<p class="grid-left">年龄:</p>
|
||||
<input type="number" v-model.number="account.age" />
|
||||
<p class="grid-left">水果:</p>
|
||||
<select name="fruit" id="fruit" v-model="account.fruits">
|
||||
<option disabled value="">喜欢的水果</option>
|
||||
<option v-for="fruit in fruits" v-bind:value="fruit">
|
||||
{{fruit}}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script src="../js/vue/vue.global.js"></script>
|
||||
<script src="../js/axios/1.1.3/axios.js"></script>
|
||||
<script>
|
||||
const app = {
|
||||
data() {
|
||||
return {
|
||||
account: {
|
||||
username: "",
|
||||
password: "",
|
||||
gender: "",
|
||||
age: "",
|
||||
hobbies: [],
|
||||
fruits: "",
|
||||
},
|
||||
fruits: ["香蕉", "梨子", "苹果"],
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
const vm = Vue.createApp(app);
|
||||
vm.mount("#app");
|
||||
</script>
|
||||
</html>
|
Loading…
x
Reference in New Issue
Block a user