Compare commits
18 Commits
b0f9f4e48d
...
javaweb
Author | SHA1 | Date | |
---|---|---|---|
f713dfd5ba | |||
ac1cd2e9b7 | |||
71adc2622e | |||
7e8c5da593 | |||
d249fdd576 | |||
cdda49370f | |||
9cd7373f90 | |||
15bf339118 | |||
0c392ee354 | |||
3aa898fee8 | |||
fd6e7ad959 | |||
a634bdfad4 | |||
52e7a355bf | |||
fe484c0eec | |||
a89f773825 | |||
dfac0eaa64 | |||
ccdd94ed1a | |||
82eed0a470 |
3
code/java/car_dealer/.vscode/settings.json
vendored
3
code/java/car_dealer/.vscode/settings.json
vendored
@@ -1,3 +1,4 @@
|
||||
{
|
||||
"java.configuration.updateBuildConfiguration": "automatic"
|
||||
"java.configuration.updateBuildConfiguration": "automatic",
|
||||
"java.compile.nullAnalysis.mode": "automatic"
|
||||
}
|
@@ -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;
|
||||
}
|
@@ -2,7 +2,7 @@
|
||||
* @Author: Kane
|
||||
* @Date: 2022-09-28 15:47:02
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-19 16:19:01
|
||||
* @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.
|
||||
@@ -56,6 +56,7 @@ public class FileUploadController
|
||||
FileUploadResult result = new FileUploadResult();
|
||||
String sessionID = request.getSession().getId();
|
||||
|
||||
|
||||
if ( uploadFile == null)
|
||||
{
|
||||
result.setSuccess( false );
|
||||
|
@@ -1,13 +1,12 @@
|
||||
<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">
|
||||
<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 />
|
||||
|
@@ -67,6 +67,7 @@
|
||||
|
||||
const xhr = new XMLHttpRequest();
|
||||
|
||||
//处理进度
|
||||
xhr.upload.onprogress = function (event) {
|
||||
if (event.lengthComputable) {
|
||||
let percent = Math.round(
|
||||
@@ -77,6 +78,7 @@
|
||||
}
|
||||
};
|
||||
|
||||
//传送完成
|
||||
xhr.onload = function (event) {
|
||||
console.log(xhr.responseText);
|
||||
|
||||
|
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;
|
||||
}
|
@@ -2,7 +2,7 @@
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-12 08:49:14
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-22 22:30:50
|
||||
* @LastEditTime: 2022-11-12 23:34:06
|
||||
* @FilePath: \car_dealer\css\kane.css
|
||||
* @Description: vue学习用的样式表!
|
||||
*
|
||||
@@ -10,7 +10,7 @@
|
||||
*/
|
||||
|
||||
html {
|
||||
--backupground-color: #f7f7f7;
|
||||
--backupground-color: #f4f5f7ff;
|
||||
--btn-color-blue: #307dbe;
|
||||
--btn-color-yellow: #f7b24d;
|
||||
--btn-color-green: #5bad60;
|
||||
@@ -23,12 +23,6 @@ html {
|
||||
padding: 50px;
|
||||
}
|
||||
|
||||
/* #root,
|
||||
#app * + * {
|
||||
margin-top: 15px;
|
||||
text-align: center;
|
||||
} */
|
||||
|
||||
.content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@@ -44,35 +38,12 @@ hr {
|
||||
}
|
||||
|
||||
/* .test {
|
||||
width: 110vw;
|
||||
height: 100vh;
|
||||
border: 1px solid red;
|
||||
overflow: auto;
|
||||
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;
|
||||
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);
|
||||
}
|
||||
|
||||
input[type="text"] {
|
||||
border: none;
|
||||
outline: solid 2px #e56651;
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-21 16:39:27
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-23 15:26:59
|
||||
* @LastEditTime: 2022-11-03 23:48:28
|
||||
* @FilePath: \car_dealer\css\todo-list\to-list.css
|
||||
* @Description: 用于待办事项页面的css!
|
||||
*
|
||||
@@ -12,7 +12,8 @@
|
||||
html {
|
||||
--border-color: #efefef;
|
||||
--hr-color: #efefef;
|
||||
--backupground-color: #f8f8f8;
|
||||
--backupground-color: #f4f5f7ff;
|
||||
--plane-color: #ffffff;
|
||||
--btn-color-blue: #307dbe;
|
||||
--btn-color-yellow: #f7b24d;
|
||||
--btn-color-green: #5bad60;
|
||||
@@ -25,14 +26,16 @@ html {
|
||||
--scrollbar-backupground-color: #cfcfcf7f;
|
||||
--scrollbar-track-color: #f7f7f700;
|
||||
|
||||
--font-color: rgba(0, 0, 50, 255);
|
||||
--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);
|
||||
@@ -85,9 +88,14 @@ hr {
|
||||
|
||||
.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);
|
||||
|
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%;
|
||||
}
|
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
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>
|
@@ -2,7 +2,7 @@
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-21 16:36:51
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-25 14:21:00
|
||||
* @LastEditTime: 2022-11-01 17:48:11
|
||||
* @FilePath: \car_dealer\vue\todo-list.html
|
||||
* @Description:
|
||||
*
|
||||
@@ -10,217 +10,204 @@
|
||||
-->
|
||||
<!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()">
|
||||
关闭
|
||||
<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>
|
||||
</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()">
|
||||
添加
|
||||
<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>
|
||||
<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">总计:{{todo_list.length}}</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div class="tools">
|
||||
<p class="summary">总计:{{totalTodos}}</p>
|
||||
</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,
|
||||
},
|
||||
],
|
||||
};
|
||||
</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;
|
||||
},
|
||||
methods: {
|
||||
addTodo() {},
|
||||
editTodo(index, event) {
|
||||
console.log(index);
|
||||
console.log(event);
|
||||
removeTodo(index) {
|
||||
this.todo_list.splice(index, 1);
|
||||
},
|
||||
showMessageBox() {
|
||||
const message = document.getElementById("message_border");
|
||||
|
||||
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"] = "flex";
|
||||
},
|
||||
closeMessageBox() {
|
||||
const message = document.getElementById("message_border");
|
||||
|
||||
message.style["display"] = "none";
|
||||
message.style["display"] = "none";
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
totalTodos: {
|
||||
get() {
|
||||
return this.todo_list.length;
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
buttonText(edit) {
|
||||
return edit ? 修改 : 保存;
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
console.log("挂载完成!");
|
||||
},
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
const vm = Vue.createApp(app);
|
||||
vm.mount("#app");
|
||||
</script>
|
||||
</html>
|
||||
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>
|
Reference in New Issue
Block a user