Compare commits
102 Commits
develop
...
feature-re
Author | SHA1 | Date | |
---|---|---|---|
280636bd14 | |||
679c12fb92 | |||
e3ada43d48 | |||
1a1e230ead | |||
8b0f8e618b | |||
a0f23c3a4c | |||
0bf3ae2520 | |||
0c9df7d70d | |||
57dc7568b1 | |||
968eaed581 | |||
304acb5c6c | |||
64b59e02ae | |||
9e25df4b6c | |||
ebf4a37529 | |||
ba44c9bc31 | |||
cdc7efce15 | |||
bf19c775cf | |||
011a3f58e6 | |||
c814278905 | |||
580bffc207 | |||
702912ef00 | |||
12ce6403dd | |||
6a93923edd | |||
9460316a69 | |||
6d6ce6025b | |||
f24a47f27d | |||
a7ff72c4b7 | |||
f380cbd812 | |||
c25f8a2401 | |||
178ae16c73 | |||
3afde75e85 | |||
7154edde7c | |||
f22f6b268a | |||
1c44e56b56 | |||
3f93afede3 | |||
8dd5f27d47 | |||
557452aedc | |||
46cfdc28a6 | |||
e450e280d4 | |||
8248fe942a | |||
a97d222486 | |||
f354d141f5 | |||
8902b2761b | |||
81d52412db | |||
9afe66b769 | |||
c2bc64fd36 | |||
e7e8ec49e2 | |||
05e131ecbe | |||
55cf233192 | |||
5822212970 | |||
e685197674 | |||
a81bdc330c | |||
8315b1f9b2 | |||
007953d129 | |||
f2802722c1 | |||
655af8eec1 | |||
5c0050fe13 | |||
c28c4c7789 | |||
608b1d1b41 | |||
12674fa58f | |||
db0ac8c960 | |||
946cf852d2 | |||
f4769057db | |||
33195638ca | |||
44acd8856a | |||
2d9178e4ae | |||
e142a2a624 | |||
a5fa62c5d0 | |||
8e5dc6e617 | |||
365815735e | |||
5f204c2b92 | |||
9af9fa474e | |||
9d59c95768 | |||
76c8573527 | |||
567c08269d | |||
8e72f3bccd | |||
9b57dbb772 | |||
555611ca96 | |||
1763154fa2 | |||
ddb57c8961 | |||
c6e2d0ba06 | |||
e676e98a6e | |||
72b935c4b3 | |||
e5e499c1ed | |||
02b2fc9ef2 | |||
1787838b3a | |||
6cda734793 | |||
841741523a | |||
387561d108 | |||
4828427d0d | |||
f75bdf6d39 | |||
b94939fbd6 | |||
baee2ded2e | |||
44c9511dbe | |||
9fa480103b | |||
d0d143d916 | |||
30b0304309 | |||
b952cf7b99 | |||
e2486d497f | |||
1cdf6502e7 | |||
cef7c019b0 | |||
17406c73ad |
5
.gitignore
vendored
5
.gitignore
vendored
@@ -77,7 +77,8 @@ bower_components
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
node_modules*/
|
||||
node_modules_bak/
|
||||
jspm_packages/
|
||||
|
||||
# Snowpack dependency directory (https://snowpack.dev/)
|
||||
@@ -722,3 +723,5 @@ local.properties
|
||||
# Typically, this file would be tracked if it contains build/dependency configurations:
|
||||
#.project
|
||||
|
||||
target
|
||||
target/*
|
||||
|
@@ -1,114 +0,0 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-15 11:11:21
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-17 23:28:21
|
||||
* @FilePath: \AdminSys\src\main\java\com\cpic\xim\web\controllers\account\P13AccountCheckController.java
|
||||
* @Description: P13账号验证用Controller。
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.web.controllers.account;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.channels.IllegalSelectorException;
|
||||
import java.sql.SQLException;
|
||||
import javax.servlet.ServletContext;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import com.cpic.xim.myutils.account.CpicXIMStaffInfo;
|
||||
import com.cpic.xim.myutils.account.LdapAccountCheck;
|
||||
|
||||
@Controller
|
||||
@RequestMapping( path = "/account" )
|
||||
@SuppressWarnings( "unused" )
|
||||
public class P13AccountCheckController
|
||||
{
|
||||
/*****************************************************
|
||||
* 根据用户提供的P09工号或者P13账号密码,查找用户信息,并AD域服务器验证p13账号密码。
|
||||
* 验证通过即返回人员信息。
|
||||
* 验证不通过result.success值为false,并在message提供失败原因。
|
||||
* @param param 由json格式转换的请求参数
|
||||
* @param request
|
||||
* @param response
|
||||
* @return 返回一个P13AccountCheckResult对象,其中提供验证结果
|
||||
*****************************************************/
|
||||
@ResponseBody
|
||||
@RequestMapping( path = "/p13_account_check" )
|
||||
public P13AccountCheckResult checkP13Account( @RequestBody P13AccountCheckRequest param,
|
||||
HttpServletRequest request, HttpServletResponse response )
|
||||
throws IllegalSelectorException, IOException
|
||||
{
|
||||
P13AccountCheckResult result = new P13AccountCheckResult();
|
||||
ServletContext context = request.getServletContext();
|
||||
|
||||
// context.getAttribute( null );
|
||||
CpicXIMStaffInfo staff = null;
|
||||
|
||||
try
|
||||
{
|
||||
// 先根据用户输入的09工号或p13账号获得p13账号,确定账号存在
|
||||
staff = CpicXIMStaffInfo.getStaffInfo( param.getP13Account() );
|
||||
}
|
||||
catch ( SQLException error )
|
||||
{
|
||||
staff = null;
|
||||
result.setMessage( "人员工号或P13账号不存在!" );
|
||||
result.setSuccess( false );
|
||||
}
|
||||
catch ( ClassNotFoundException error )
|
||||
{
|
||||
staff = null;
|
||||
result.setMessage( "加载Oracle驱动失败!" );
|
||||
result.setSuccess( false );
|
||||
}
|
||||
|
||||
// 查询结果是null,说明没有查询到结果,工号或p13账号不存在,返回结果。
|
||||
if ( staff == null )
|
||||
{
|
||||
result.setMessage( "人员工号或P13账号不存在!" );
|
||||
result.setSuccess( false );
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// 判断一下p13是否存在,如果不存在就结束过程
|
||||
if ( staff.getP13UID().isEmpty() == true )
|
||||
{
|
||||
result.setMessage( "P13账号不存在,请联系信息技术部申请账号!" );
|
||||
result.setSuccess( false );
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// 进行ldap验证
|
||||
boolean ldapCheckResult =
|
||||
LdapAccountCheck.ldapLogin( staff.getP13UID(), param.getPassword() );
|
||||
|
||||
if ( ldapCheckResult == true )
|
||||
{
|
||||
result.setSuccess( true );
|
||||
result.setMessage( "验证成功!" );
|
||||
result.setStaffInfo( staff );
|
||||
|
||||
// 将获取到的人员信息保存到会话中
|
||||
HttpSession session = request.getSession();
|
||||
|
||||
session.setAttribute( "staff_info", staff );
|
||||
}
|
||||
else
|
||||
{
|
||||
result.setSuccess( false );
|
||||
result.setMessage( "密码错误!" );
|
||||
}
|
||||
|
||||
result.setToken( param.getP13Account() );
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
@@ -1,25 +0,0 @@
|
||||
<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>
|
@@ -1,25 +0,0 @@
|
||||
<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>
|
@@ -1,68 +0,0 @@
|
||||
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;
|
||||
}
|
@@ -1,25 +0,0 @@
|
||||
#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;
|
||||
}
|
@@ -1,349 +0,0 @@
|
||||
/*! 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;
|
||||
}
|
@@ -1,11 +0,0 @@
|
||||
.panel {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.main_form {
|
||||
height: 50vh;
|
||||
width: 50vw;
|
||||
border: 1px solid red;
|
||||
}
|
@@ -1,17 +0,0 @@
|
||||
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;
|
||||
}
|
@@ -1,23 +0,0 @@
|
||||
<%-- /*
|
||||
* @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>
|
@@ -1,11 +0,0 @@
|
||||
com\cpic\xim\myutils\config\json\ConfigLoader.class
|
||||
com\cpic\xim\web\controllers\account\P13AccountCheckResult.class
|
||||
com\cpic\xim\myutils\config\json\AppConfig.class
|
||||
com\cpic\xim\web\filters\cros\CrosFilter.class
|
||||
com\cpic\xim\web\listener\ContextLoaderListener.class
|
||||
com\cpic\xim\myutils\config\json\DatabaseConfig.class
|
||||
com\cpic\xim\web\filters\token\TokenFilter.class
|
||||
com\cpic\xim\web\controllers\account\P13AccountCheckController.class
|
||||
com\cpic\xim\web\controllers\account\P13AccountCheckRequest.class
|
||||
com\cpic\xim\myutils\account\CpicXIMStaffInfo.class
|
||||
com\cpic\xim\myutils\account\LdapAccountCheck.class
|
@@ -1,11 +0,0 @@
|
||||
F:\练手代码\vue-learning\企业级管理系统\java\AdminSys\src\main\java\com\cpic\xim\web\filters\token\TokenFilter.java
|
||||
F:\练手代码\vue-learning\企业级管理系统\java\AdminSys\src\main\java\com\cpic\xim\web\controllers\account\P13AccountCheckResult.java
|
||||
F:\练手代码\vue-learning\企业级管理系统\java\AdminSys\src\main\java\com\cpic\xim\web\controllers\account\P13AccountCheckRequest.java
|
||||
F:\练手代码\vue-learning\企业级管理系统\java\AdminSys\src\main\java\com\cpic\xim\web\controllers\account\P13AccountCheckController.java
|
||||
F:\练手代码\vue-learning\企业级管理系统\java\AdminSys\src\main\java\com\cpic\xim\web\filters\cros\CrosFilter.java
|
||||
F:\练手代码\vue-learning\企业级管理系统\java\AdminSys\src\main\java\com\cpic\xim\myutils\account\CpicXIMStaffInfo.java
|
||||
F:\练手代码\vue-learning\企业级管理系统\java\AdminSys\src\main\java\com\cpic\xim\myutils\account\LdapAccountCheck.java
|
||||
F:\练手代码\vue-learning\企业级管理系统\java\AdminSys\src\main\java\com\cpic\xim\myutils\config\json\AppConfig.java
|
||||
F:\练手代码\vue-learning\企业级管理系统\java\AdminSys\src\main\java\com\cpic\xim\web\listener\ContextLoaderListener.java
|
||||
F:\练手代码\vue-learning\企业级管理系统\java\AdminSys\src\main\java\com\cpic\xim\myutils\config\json\DatabaseConfig.java
|
||||
F:\练手代码\vue-learning\企业级管理系统\java\AdminSys\src\main\java\com\cpic\xim\myutils\config\json\ConfigLoader.java
|
@@ -1,2 +0,0 @@
|
||||
com\cpic\xim\myutils\account\CpicXIMStaffInfoTest.class
|
||||
com\cpic\xim\myutils\account\LdapAccountCheckTest.class
|
@@ -1,2 +0,0 @@
|
||||
F:\练手代码\vue-learning\企业级管理系统\java\AdminSys\src\test\java\com\cpic\xim\myutils\account\CpicXIMStaffInfoTest.java
|
||||
F:\练手代码\vue-learning\企业级管理系统\java\AdminSys\src\test\java\com\cpic\xim\myutils\account\LdapAccountCheckTest.java
|
@@ -73,7 +73,7 @@
|
||||
<dependency>
|
||||
<groupId>commons-fileupload</groupId>
|
||||
<artifactId>commons-fileupload</artifactId>
|
||||
<version>1.4</version>
|
||||
<version>1.5</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
|
||||
<dependency>
|
@@ -2,8 +2,8 @@
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-15 14:08:28
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-16 17:57:06
|
||||
* @FilePath: \AdminSys\src\main\java\com\cpic\xim\myutils\account\CpicXIMStaffInfo.java
|
||||
* @LastEditTime: 2023-02-28 23:20:12
|
||||
* @FilePath: /后端-用户验证/src/main/java/com/cpic/xim/myutils/account/CpicXIMStaffInfo.java
|
||||
* @Description: 产险厦门分公司员工信息对象
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
@@ -2,9 +2,9 @@
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-15 09:51:12
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-16 15:29:34
|
||||
* @FilePath: \AdminSys\src\main\java\com\cpic\xim\myutils\account\LdapAccountCheck.java
|
||||
* @Description: P13验证相关方法。
|
||||
* @LastEditTime: 2023-03-06 15:05:03
|
||||
* @FilePath: /ts-practiced:/develop/cpicxim/it-console/code/java/后端-用户验证/src/main/java/com/cpic/xim/myutils/account/LdapAccountCheck.java
|
||||
* @Description: LDAP验证相关方法。
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
@@ -0,0 +1,106 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-15 11:11:21
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-03-25 17:28:39
|
||||
* @FilePath: /后端-用户验证/src/main/java/com/cpic/xim/web/controllers/account/P13AccountCheckController.java
|
||||
* @Description: P13账号验证用Controller。
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.web.controllers.account;
|
||||
|
||||
import com.cpic.xim.myutils.account.CpicXIMStaffInfo;
|
||||
import com.cpic.xim.myutils.account.LdapAccountCheck;
|
||||
import java.io.IOException;
|
||||
import java.nio.channels.IllegalSelectorException;
|
||||
import java.sql.SQLException;
|
||||
import javax.servlet.ServletContext;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
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
|
||||
@RequestMapping(path = "/account")
|
||||
@SuppressWarnings("unused")
|
||||
public class P13AccountCheckController {
|
||||
|
||||
/*****************************************************
|
||||
* 根据用户提供的P09工号或者P13账号密码,查找用户信息,并AD域服务器验证p13账号密码。
|
||||
* 验证通过即返回人员信息。
|
||||
* 验证不通过result.success值为false,并在message提供失败原因。
|
||||
* @param param 由json格式转换的请求参数
|
||||
* @param request
|
||||
* @param response
|
||||
* @return 返回一个P13AccountCheckResult对象,其中提供验证结果
|
||||
*****************************************************/
|
||||
@ResponseBody
|
||||
@RequestMapping(path = "/p13_account_check")
|
||||
public P13AccountCheckResult checkP13Account(
|
||||
@RequestBody P13AccountCheckRequest param,
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response
|
||||
) throws IllegalSelectorException, IOException {
|
||||
P13AccountCheckResult result = new P13AccountCheckResult();
|
||||
ServletContext context = request.getServletContext();
|
||||
|
||||
CpicXIMStaffInfo staff = null;
|
||||
|
||||
try {
|
||||
// 先根据用户输入的09工号或p13账号获得p13账号,确定账号存在
|
||||
staff = CpicXIMStaffInfo.getStaffInfo(param.getP13Account());
|
||||
} catch (SQLException error) {
|
||||
staff = null;
|
||||
result.setMessage("人员工号或P13账号不存在!");
|
||||
result.setSuccess(false);
|
||||
} catch (ClassNotFoundException error) {
|
||||
staff = null;
|
||||
result.setMessage("加载Oracle驱动失败!");
|
||||
result.setSuccess(false);
|
||||
}
|
||||
|
||||
// 查询结果是null,说明没有查询到结果,工号或p13账号不存在,返回结果。
|
||||
if (staff == null) {
|
||||
result.setMessage("人员工号或P13账号不存在!");
|
||||
result.setSuccess(false);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// 判断一下p13是否存在,如果不存在就结束过程
|
||||
if (staff.getP13UID().isEmpty() == true) {
|
||||
result.setMessage("P13账号不存在,请联系信息技术部申请账号!");
|
||||
result.setSuccess(false);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// 进行ldap验证
|
||||
boolean ldapCheckResult = LdapAccountCheck.ldapLogin(
|
||||
staff.getP13UID(),
|
||||
param.getPassword()
|
||||
);
|
||||
|
||||
if (ldapCheckResult == true) {
|
||||
result.setSuccess(true);
|
||||
result.setMessage("验证成功!");
|
||||
result.setStaffInfo(staff);
|
||||
|
||||
// 将获取到的人员信息保存到会话中
|
||||
HttpSession session = request.getSession();
|
||||
|
||||
session.setAttribute("staff_info", staff);
|
||||
} else {
|
||||
result.setSuccess(false);
|
||||
result.setMessage("密码错误!");
|
||||
}
|
||||
|
||||
result.setToken(param.getP13Account());
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
@@ -2,9 +2,9 @@
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-15 10:44:20
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-15 20:53:14
|
||||
* @LastEditTime: 2023-01-29 10:40:39
|
||||
* @FilePath: \AdminSys\src\main\java\com\cpic\xim\web\filters\cros\CrosFilter.java
|
||||
* @Description:
|
||||
* @Description: 过滤器,用于对CROS访问进行响应。允许任何来源的访问。
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
37
code/java/后端-用户验证/src/main/webapp/WEB-INF/classes/spring.xml
Normal file
37
code/java/后端-用户验证/src/main/webapp/WEB-INF/classes/spring.xml
Normal file
@@ -0,0 +1,37 @@
|
||||
<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>
|
4
code/java/后端-需求/.vscode/settings.json
vendored
Normal file
4
code/java/后端-需求/.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"java.configuration.updateBuildConfiguration": "automatic",
|
||||
"java.compile.nullAnalysis.mode": "automatic"
|
||||
}
|
116
code/java/后端-需求/pom.xml
Normal file
116
code/java/后端-需求/pom.xml
Normal file
@@ -0,0 +1,116 @@
|
||||
<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>requirement</artifactId>
|
||||
<packaging>war</packaging>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<name>requirement Maven Webapp</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.24</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>
|
||||
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<version>8.0.32</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<finalName>requirement</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-war-plugin</artifactId>
|
||||
<version>3.2.2</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>3.0.0-M6</version>
|
||||
<configuration>
|
||||
<skipTests>true</skipTests>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<java.version>1.8</java.version>
|
||||
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
</properties>
|
||||
</project>
|
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-04 10:52:31
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-04 13:38:58
|
||||
* @FilePath: /后端-需求/src/main/java/com/cpic/xim/data/RequirementStatus.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.data;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public final class RequirementStatus
|
||||
{
|
||||
public RequirementStatus()
|
||||
{}
|
||||
|
||||
public int getStatus_code()
|
||||
{
|
||||
return status_code;
|
||||
}
|
||||
|
||||
public void setStatus_code( int status_code )
|
||||
{
|
||||
this.status_code = status_code;
|
||||
}
|
||||
|
||||
public String getStatus_name()
|
||||
{
|
||||
return status_name;
|
||||
}
|
||||
|
||||
public void setStatus_name( String status_name )
|
||||
{
|
||||
this.status_name = status_name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + status_code;
|
||||
result = prime * result + ((status_name == null) ? 0 : status_name.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;
|
||||
RequirementStatus other = (RequirementStatus) obj;
|
||||
if ( status_code != other.status_code )
|
||||
return false;
|
||||
if ( status_name == null )
|
||||
{
|
||||
if ( other.status_name != null )
|
||||
return false;
|
||||
} else if ( !status_name.equals( other.status_name ) )
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "RequirementStatus [status_code=" + status_code + ", status_name=" + status_name
|
||||
+ "]";
|
||||
}
|
||||
|
||||
@JsonProperty( "status_code" )
|
||||
private int status_code;
|
||||
|
||||
@JsonProperty( "status_name" )
|
||||
private String status_name;
|
||||
}
|
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-04 11:38:32
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-17 10:52:40
|
||||
* @FilePath: /后端-需求/src/main/java/com/cpic/xim/utils/db/RequirementDbOperation.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.utils.db;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.Vector;
|
||||
import com.cpic.xim.data.RequirementStatus;
|
||||
|
||||
public final class RequirementDbOperation
|
||||
{
|
||||
private static final String MYSQL_JDBC_CONNECT = "jdbc:mysql://10.39.0.85:3306";
|
||||
private static final String MYSQL_CLASS_DRIVER = "com.mysql.cj.jdbc.Driver";
|
||||
|
||||
/*****************************************************
|
||||
* 查询需求状态。
|
||||
* @return Vector<RequirementStatus> 需求状态的集合
|
||||
*****************************************************/
|
||||
public static Vector<RequirementStatus> queryRequirementStatus()
|
||||
throws ClassNotFoundException, SQLException
|
||||
{
|
||||
Vector<RequirementStatus> vStatus = new Vector<RequirementStatus>();
|
||||
|
||||
Class.forName( MYSQL_CLASS_DRIVER );
|
||||
|
||||
Connection conn = null;
|
||||
Statement statement = null;
|
||||
ResultSet results = null;
|
||||
String querSQL = "select * from requirement.requirement_status";
|
||||
|
||||
try
|
||||
{
|
||||
conn = DriverManager.getConnection( MYSQL_JDBC_CONNECT, "cpicxim", "Cpic#1234" );
|
||||
statement = conn.createStatement();
|
||||
results = statement.executeQuery( querSQL );
|
||||
|
||||
while ( results.next())
|
||||
{
|
||||
RequirementStatus status = new RequirementStatus();
|
||||
|
||||
status.setStatus_code( results.getInt( "status_code" ) );
|
||||
status.setStatus_name( results.getString( "status_name" ) );
|
||||
|
||||
vStatus.add( status );
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
if ( results != null )
|
||||
{
|
||||
try
|
||||
{
|
||||
results.close();
|
||||
}
|
||||
catch ( SQLException except )
|
||||
{
|
||||
except.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
if ( statement != null )
|
||||
{
|
||||
try
|
||||
{
|
||||
statement.close();
|
||||
}
|
||||
catch ( SQLException except )
|
||||
{
|
||||
except.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
if ( conn != null )
|
||||
{
|
||||
try
|
||||
{
|
||||
conn.close();
|
||||
}
|
||||
catch ( SQLException except )
|
||||
{
|
||||
except.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return vStatus;
|
||||
}
|
||||
}
|
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-29 13:59:37
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-04 14:40:07
|
||||
* @FilePath: /后端-需求/src/main/java/com/cpic/xim/web/controllers/requirements/RequirementController.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.web.controllers.requirements;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.Vector;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import com.cpic.xim.data.RequirementStatus;
|
||||
import com.cpic.xim.utils.db.RequirementDbOperation;
|
||||
import com.cpic.xim.web.controllers.requirements.param.RequirementQueryParam;
|
||||
import com.cpic.xim.web.controllers.requirements.response.QueryRequirementStatusResult;
|
||||
import com.cpic.xim.web.controllers.requirements.response.RequirementQueryResult;
|
||||
|
||||
@SuppressWarnings( "unused" )
|
||||
@Controller
|
||||
public class RequirementController
|
||||
{
|
||||
@RequestMapping( "/query_requirements.do" )
|
||||
@ResponseBody
|
||||
public RequirementQueryResult queryRequirements( @RequestBody RequirementQueryParam param )
|
||||
{
|
||||
RequirementQueryResult result = new RequirementQueryResult();
|
||||
|
||||
result.setSuccess( true );
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@RequestMapping( "/query_requirement_status.do" )
|
||||
@ResponseBody
|
||||
public QueryRequirementStatusResult queryRequirementStatus()
|
||||
{
|
||||
QueryRequirementStatusResult result = new QueryRequirementStatusResult();
|
||||
|
||||
try
|
||||
{
|
||||
Vector<RequirementStatus> status = RequirementDbOperation.queryRequirementStatus();
|
||||
|
||||
result.setSuccess( true );
|
||||
result.setRequirementStatus( status );
|
||||
}
|
||||
catch ( ClassNotFoundException exception )
|
||||
{
|
||||
result.setSuccess( false );
|
||||
result.setMessage( exception.getMessage() );
|
||||
}
|
||||
catch ( SQLException exception )
|
||||
{
|
||||
result.setSuccess( false );
|
||||
result.setMessage( exception.getMessage() );
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-29 15:45:00
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-29 16:04:48
|
||||
* @FilePath: \requirement\src\main\java\com\cpic\xim\web\controllers\requirements\param\RequirementQueryParam.java
|
||||
* @Description: 查询需求用的参数对象,从JSON转换而来。
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.web.controllers.requirements.param;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public final class RequirementQueryParam
|
||||
{
|
||||
public RequirementQueryParam()
|
||||
{}
|
||||
|
||||
public String getTitle()
|
||||
{
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle( String title )
|
||||
{
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getSerial_no()
|
||||
{
|
||||
return serial_no;
|
||||
}
|
||||
|
||||
public void setSerial_no( String serial_no )
|
||||
{
|
||||
this.serial_no = serial_no;
|
||||
}
|
||||
|
||||
public String getRequest_people()
|
||||
{
|
||||
return request_people;
|
||||
}
|
||||
|
||||
public void setRequest_people( String request_people )
|
||||
{
|
||||
this.request_people = request_people;
|
||||
}
|
||||
|
||||
public String getStatus()
|
||||
{
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus( String status )
|
||||
{
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public String getCommit_start_date()
|
||||
{
|
||||
return commit_start_date;
|
||||
}
|
||||
|
||||
public void setCommit_start_date( String commit_start_date )
|
||||
{
|
||||
this.commit_start_date = commit_start_date;
|
||||
}
|
||||
|
||||
public String getCommit_end_date()
|
||||
{
|
||||
return commit_end_date;
|
||||
}
|
||||
|
||||
public void setCommit_end_date( String commit_end_date )
|
||||
{
|
||||
this.commit_end_date = commit_end_date;
|
||||
}
|
||||
|
||||
@JsonProperty( "title")
|
||||
private String title;
|
||||
|
||||
@JsonProperty( "serial_no")
|
||||
private String serial_no;
|
||||
|
||||
@JsonProperty( "request_people")
|
||||
private String request_people;
|
||||
|
||||
@JsonProperty( "status")
|
||||
private String status;
|
||||
|
||||
@JsonProperty( "commit_start_date")
|
||||
private String commit_start_date;
|
||||
|
||||
@JsonProperty( "commit_end_date")
|
||||
private String commit_end_date;
|
||||
}
|
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-04 13:24:14
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-04 13:38:03
|
||||
* @FilePath: /后端-需求/src/main/java/com/cpic/xim/web/controllers/requirements/response/QueryRequirementStatusResult.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.web.controllers.requirements.response;
|
||||
|
||||
import com.cpic.xim.data.RequirementStatus;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import java.util.Vector;
|
||||
|
||||
public class QueryRequirementStatusResult
|
||||
{
|
||||
public QueryRequirementStatusResult()
|
||||
{}
|
||||
|
||||
public String getMessage()
|
||||
{
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage( String message )
|
||||
{
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public boolean isSuccess()
|
||||
{
|
||||
return success;
|
||||
}
|
||||
|
||||
public void setSuccess( boolean success )
|
||||
{
|
||||
this.success = success;
|
||||
}
|
||||
|
||||
public int getReturnCode()
|
||||
{
|
||||
return returnCode;
|
||||
}
|
||||
|
||||
public void setReturnCode( int returnCode )
|
||||
{
|
||||
this.returnCode = returnCode;
|
||||
}
|
||||
|
||||
public Vector<RequirementStatus> getRequirementStatus()
|
||||
{
|
||||
return requirementStatus;
|
||||
}
|
||||
|
||||
public void setRequirementStatus( Vector<RequirementStatus> requirement_status )
|
||||
{
|
||||
this.requirementStatus = requirement_status;
|
||||
}
|
||||
|
||||
@JsonProperty( "message" )
|
||||
private String message;
|
||||
|
||||
@JsonProperty( "success" )
|
||||
private boolean success;
|
||||
|
||||
@JsonProperty( "return_code" )
|
||||
private int returnCode;
|
||||
|
||||
@JsonProperty( "requirement_status" )
|
||||
private Vector<RequirementStatus> requirementStatus;
|
||||
}
|
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-29 16:20:29
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-29 17:09:59
|
||||
* @FilePath: \requirement\src\main\java\com\cpic\xim\web\controllers\requirements\response\RequirementQueryResult.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.web.controllers.requirements.response;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public final class RequirementQueryResult
|
||||
{
|
||||
public RequirementQueryResult()
|
||||
{}
|
||||
|
||||
public boolean getSuccess()
|
||||
{
|
||||
return success;
|
||||
}
|
||||
|
||||
public void setSuccess( boolean success )
|
||||
{
|
||||
this.success = success;
|
||||
}
|
||||
|
||||
public String getMessage()
|
||||
{
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage( String message )
|
||||
{
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
@JsonProperty( "success" )
|
||||
private boolean success;
|
||||
|
||||
@JsonProperty( "message" )
|
||||
private String message;
|
||||
}
|
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-29 10:39:41
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-04 17:12:05
|
||||
* @FilePath: /后端-需求/src/main/java/com/cpic/xim/web/filters/cros/CrosFilter.java
|
||||
* @Description: 过滤器,用于对CROS访问进行响应。允许任何来源的访问。
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.web.filters.cros;
|
||||
|
||||
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;
|
||||
|
||||
public class CrosFilter implements 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,username" );
|
||||
response.setHeader( "Access-Control-Allow-Credentials", "true" );
|
||||
response.setHeader( "XDomainRequestAllowed", "1" );
|
||||
response.setHeader( "XDomainRequestAllowed", "1" );
|
||||
|
||||
chain.doFilter( request, response );
|
||||
}
|
||||
}
|
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-29 10:50:49
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-04 18:05:18
|
||||
* @FilePath: /后端-需求/src/main/java/com/cpic/xim/web/filters/token/TokenFilter.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.web.filters.token;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Enumeration;
|
||||
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;
|
||||
|
||||
@SuppressWarnings( "unused" )
|
||||
public class TokenFilter implements Filter
|
||||
{
|
||||
private static final String FILTE_METHODS = "POST,GET";
|
||||
|
||||
@Override
|
||||
public void doFilter( ServletRequest req, ServletResponse resp, FilterChain chain )
|
||||
throws ServletException, IOException
|
||||
{
|
||||
HttpServletRequest request = (HttpServletRequest) req;
|
||||
HttpServletResponse response = (HttpServletResponse) resp;
|
||||
|
||||
String method = request.getMethod().toUpperCase();
|
||||
|
||||
// 只处理POST和GET
|
||||
if ( FILTE_METHODS.indexOf( method ) != -1 )
|
||||
{
|
||||
// 检查token
|
||||
String token = request.getHeader( "token" );
|
||||
}
|
||||
|
||||
chain.doFilter( request, response );
|
||||
}
|
||||
}
|
37
code/java/后端-需求/src/main/webapp/WEB-INF/classes/spring.xml
Normal file
37
code/java/后端-需求/src/main/webapp/WEB-INF/classes/spring.xml
Normal file
@@ -0,0 +1,37 @@
|
||||
<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>
|
@@ -2,6 +2,7 @@
|
||||
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>
|
||||
|
||||
<servlet>
|
||||
@@ -19,31 +20,20 @@
|
||||
</servlet-mapping>
|
||||
|
||||
<filter>
|
||||
<filter-name>cros-filter</filter-name>
|
||||
<filter-name>CrosFilter</filter-name>
|
||||
<filter-class>com.cpic.xim.web.filters.cros.CrosFilter</filter-class>
|
||||
</filter>
|
||||
<filter-mapping>
|
||||
<filter-name>cros-filter</filter-name>
|
||||
<url-pattern>*.do</url-pattern>
|
||||
<filter-name>CrosFilter</filter-name>
|
||||
<url-pattern>*</url-pattern>
|
||||
</filter-mapping>
|
||||
|
||||
<filter>
|
||||
<filter-name>token-filter</filter-name>
|
||||
<filter-name>TokenFilter</filter-name>
|
||||
<filter-class>com.cpic.xim.web.filters.token.TokenFilter</filter-class>
|
||||
</filter>
|
||||
<filter-mapping>
|
||||
<filter-name>token-filter</filter-name>
|
||||
<filter-name>TokenFilter</filter-name>
|
||||
<url-pattern>*.do</url-pattern>
|
||||
</filter-mapping>
|
||||
|
||||
<!-- 配置文件路径参数 -->
|
||||
<context-param>
|
||||
<param-name>config_file_location</param-name>
|
||||
<param-value>config.xml</param-value>
|
||||
</context-param>
|
||||
|
||||
<listener>
|
||||
<listener-class>com.cpic.xim.web.listener.ContextLoaderListener</listener-class>
|
||||
</listener>
|
||||
|
||||
</web-app>
|
5
code/java/后端-需求/src/main/webapp/index.jsp
Normal file
5
code/java/后端-需求/src/main/webapp/index.jsp
Normal file
@@ -0,0 +1,5 @@
|
||||
<html>
|
||||
<body>
|
||||
<h2>Hello World!</h2>
|
||||
</body>
|
||||
</html>
|
@@ -1,4 +1,4 @@
|
||||
#Created by Apache Maven 3.8.6
|
||||
artifactId=admin-system
|
||||
artifactId=requirement
|
||||
groupId=com.cpic.xim
|
||||
version=1.0-SNAPSHOT
|
@@ -0,0 +1,8 @@
|
||||
com\cpic\xim\data\RequirementStatus.class
|
||||
com\cpic\xim\web\controllers\requirements\param\RequirementQueryParam.class
|
||||
com\cpic\xim\web\filters\cros\CrosFilter.class
|
||||
com\cpic\xim\utils\db\RequirementDbOperation.class
|
||||
com\cpic\xim\web\controllers\requirements\response\QueryRequirementStatusResult.class
|
||||
com\cpic\xim\web\controllers\requirements\response\RequirementQueryResult.class
|
||||
com\cpic\xim\web\filters\token\TokenFilter.class
|
||||
com\cpic\xim\web\controllers\requirements\RequirementController.class
|
@@ -0,0 +1,8 @@
|
||||
D:\develop\cpicxim\it-console\code\java\后端-需求\src\main\java\com\cpic\xim\data\RequirementStatus.java
|
||||
D:\develop\cpicxim\it-console\code\java\后端-需求\src\main\java\com\cpic\xim\web\controllers\requirements\response\RequirementQueryResult.java
|
||||
D:\develop\cpicxim\it-console\code\java\后端-需求\src\main\java\com\cpic\xim\web\controllers\requirements\param\RequirementQueryParam.java
|
||||
D:\develop\cpicxim\it-console\code\java\后端-需求\src\main\java\com\cpic\xim\web\controllers\requirements\response\QueryRequirementStatusResult.java
|
||||
D:\develop\cpicxim\it-console\code\java\后端-需求\src\main\java\com\cpic\xim\web\filters\cros\CrosFilter.java
|
||||
D:\develop\cpicxim\it-console\code\java\后端-需求\src\main\java\com\cpic\xim\web\filters\token\TokenFilter.java
|
||||
D:\develop\cpicxim\it-console\code\java\后端-需求\src\main\java\com\cpic\xim\web\controllers\requirements\RequirementController.java
|
||||
D:\develop\cpicxim\it-console\code\java\后端-需求\src\main\java\com\cpic\xim\utils\db\RequirementDbOperation.java
|
@@ -0,0 +1,37 @@
|
||||
<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>
|
39
code/java/后端-需求/target/requirement/WEB-INF/web.xml
Normal file
39
code/java/后端-需求/target/requirement/WEB-INF/web.xml
Normal file
@@ -0,0 +1,39 @@
|
||||
<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>
|
||||
|
||||
<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>CrosFilter</filter-name>
|
||||
<filter-class>com.cpic.xim.web.filters.cros.CrosFilter</filter-class>
|
||||
</filter>
|
||||
<filter-mapping>
|
||||
<filter-name>CrosFilter</filter-name>
|
||||
<url-pattern>*</url-pattern>
|
||||
</filter-mapping>
|
||||
|
||||
<filter>
|
||||
<filter-name>TokenFilter</filter-name>
|
||||
<filter-class>com.cpic.xim.web.filters.token.TokenFilter</filter-class>
|
||||
</filter>
|
||||
<filter-mapping>
|
||||
<filter-name>TokenFilter</filter-name>
|
||||
<url-pattern>*.do</url-pattern>
|
||||
</filter-mapping>
|
||||
</web-app>
|
5
code/java/后端-需求/target/requirement/index.jsp
Normal file
5
code/java/后端-需求/target/requirement/index.jsp
Normal file
@@ -0,0 +1,5 @@
|
||||
<html>
|
||||
<body>
|
||||
<h2>Hello World!</h2>
|
||||
</body>
|
||||
</html>
|
4
code/ts/pako/.eslintignore
Normal file
4
code/ts/pako/.eslintignore
Normal file
@@ -0,0 +1,4 @@
|
||||
node_modules
|
||||
dist
|
||||
target
|
||||
tsconfig.json
|
60
code/ts/pako/.eslintrc.js
Normal file
60
code/ts/pako/.eslintrc.js
Normal file
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-09 15:26:18
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-10 10:25:42
|
||||
* @FilePath: /后端辅助工具/.eslintrc.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
module.exports = {
|
||||
root: true,
|
||||
env: {
|
||||
browser: true,
|
||||
es2021: true,
|
||||
node: true,
|
||||
},
|
||||
parser: "@typescript-eslint/parser",
|
||||
parserOptions: {
|
||||
ecmaVersion: "latest",
|
||||
sourceType: "module",
|
||||
// project: ["./tsconfig.json",],
|
||||
tsconfigRootDir: __dirname,
|
||||
},
|
||||
plugins: [
|
||||
"@typescript-eslint",
|
||||
],
|
||||
extends: [
|
||||
// "standard-with-typescript",
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/eslint-recommended",
|
||||
"plugin:@typescript-eslint/recommended",
|
||||
],
|
||||
rules: {
|
||||
"no-console": "warn",
|
||||
"quote-props": ["warn", "as-needed",],
|
||||
quotes: ["warn", "double", { allowTemplateLiterals: true, },],
|
||||
indent: ["warn", 4,],
|
||||
"no-unused-vars": "off",
|
||||
semi: ["error", "always",], // 控制行尾部分号
|
||||
"comma-dangle": ["error", {
|
||||
arrays: "always",
|
||||
objects: "always",
|
||||
imports: "never",
|
||||
exports: "never",
|
||||
functions: "never",
|
||||
},], // 数组和对象键值对最后一个逗号
|
||||
"comma-style": ["error", "last",], // 逗号在行位
|
||||
"array-bracket-spacing": ["error", "never",],
|
||||
"no-undef-init": "error",
|
||||
"no-invalid-this": "error",
|
||||
"no-use-before-define": "error",
|
||||
"no-shadow-restricted-names": "error", // 禁止对一些关键字或者保留字进行赋值操作,比如NaN、Infinity、undefined、eval、arguments等
|
||||
// "comma-spacing": ["error", { "before": false, "after": true, },],
|
||||
"brace-style": ["error", "allman", { allowSingleLine: true, },],
|
||||
"prefer-const": "warn",
|
||||
"@typescript-eslint/no-extra-semi": "off",
|
||||
"@typescript-eslint/no-inferrable-types": "off",
|
||||
},
|
||||
};
|
21
code/ts/pako/package-lock.json
generated
Normal file
21
code/ts/pako/package-lock.json
generated
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "pako",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "pako",
|
||||
"version": "1.0.0",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"pako": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/pako": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/pako/-/pako-2.1.0.tgz",
|
||||
"integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug=="
|
||||
}
|
||||
}
|
||||
}
|
19
code/ts/pako/package.json
Normal file
19
code/ts/pako/package.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "pako",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "node index.js"
|
||||
},
|
||||
"keywords": [
|
||||
"pako"
|
||||
],
|
||||
"type": "module",
|
||||
"author": "Kane",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"pako": "^2.1.0"
|
||||
}
|
||||
}
|
||||
|
22
code/ts/pako/src/index.js
Normal file
22
code/ts/pako/src/index.js
Normal file
File diff suppressed because one or more lines are too long
37
code/ts/pako/src/utils/StringConverter.js
Normal file
37
code/ts/pako/src/utils/StringConverter.js
Normal file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-13 14:54:46
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-13 14:55:19
|
||||
* @FilePath: /pako/src/utils/StringConverter.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
function Uint8ArrayToString(fileData)
|
||||
{
|
||||
var dataString = "";
|
||||
for (var i = 0; i < fileData.length; i++)
|
||||
{
|
||||
dataString += String.fromCharCode(fileData[i]);
|
||||
}
|
||||
|
||||
return dataString;
|
||||
}
|
||||
|
||||
function stringToUint8Array(str)
|
||||
{
|
||||
var arr = [];
|
||||
|
||||
for (var i = 0, j = str.length; i < j; ++i)
|
||||
{
|
||||
arr.push(str.charCodeAt(i));
|
||||
}
|
||||
|
||||
var tmpUint8Array = new Uint8Array(arr);
|
||||
|
||||
return tmpUint8Array;
|
||||
}
|
||||
|
||||
export { Uint8ArrayToString, stringToUint8Array };
|
4
code/ts/后端辅助工具/.eslintignore
Normal file
4
code/ts/后端辅助工具/.eslintignore
Normal file
@@ -0,0 +1,4 @@
|
||||
node_modules
|
||||
dist
|
||||
target
|
||||
tsconfig.json
|
61
code/ts/后端辅助工具/.eslintrc.js
Normal file
61
code/ts/后端辅助工具/.eslintrc.js
Normal file
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-09 15:26:18
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-18 23:36:07
|
||||
* @FilePath: /后端辅助工具/.eslintrc.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
module.exports = {
|
||||
root: true,
|
||||
env: {
|
||||
browser: true,
|
||||
es2021: true,
|
||||
node: true,
|
||||
},
|
||||
parser: "@typescript-eslint/parser",
|
||||
parserOptions: {
|
||||
ecmaVersion: "latest",
|
||||
sourceType: "module",
|
||||
// project: ["./tsconfig.json",],
|
||||
tsconfigRootDir: __dirname,
|
||||
},
|
||||
plugins: [
|
||||
"@typescript-eslint",
|
||||
],
|
||||
extends: [
|
||||
// "standard-with-typescript",
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/eslint-recommended",
|
||||
"plugin:@typescript-eslint/recommended",
|
||||
],
|
||||
rules: {
|
||||
"no-console": "off",
|
||||
"quote-props": ["warn", "as-needed",],
|
||||
quotes: ["warn", "double", { allowTemplateLiterals: true, },],
|
||||
indent: ["warn", 4,],
|
||||
"no-unused-vars": "off",
|
||||
semi: ["error", "always",], // 控制行尾部分号
|
||||
"comma-dangle": ["error", {
|
||||
arrays: "always",
|
||||
objects: "always",
|
||||
imports: "never",
|
||||
exports: "never",
|
||||
functions: "never",
|
||||
},], // 数组和对象键值对最后一个逗号
|
||||
"comma-style": ["error", "last",], // 逗号在行位
|
||||
"array-bracket-spacing": ["error", "never",],
|
||||
"no-undef-init": "error",
|
||||
"no-invalid-this": "error",
|
||||
"no-use-before-define": "error",
|
||||
"no-shadow-restricted-names": "error", // 禁止对一些关键字或者保留字进行赋值操作,比如NaN、Infinity、undefined、eval、arguments等
|
||||
// "comma-spacing": ["error", { "before": false, "after": true, },],
|
||||
"brace-style": ["error", "allman", { allowSingleLine: true, },],
|
||||
"prefer-const": "warn",
|
||||
"@typescript-eslint/no-extra-semi": "off",
|
||||
"@typescript-eslint/no-inferrable-types": "off",
|
||||
"@typescript-eslint/no-unused-vars": "off",
|
||||
},
|
||||
};
|
20
code/ts/后端辅助工具/.vscode/launch.json
vendored
Normal file
20
code/ts/后端辅助工具/.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
// 使用 IntelliSense 了解相关属性。
|
||||
// 悬停以查看现有属性的描述。
|
||||
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "pwa-node",
|
||||
"request": "launch",
|
||||
"name": "Launch Program",
|
||||
"skipFiles": [
|
||||
"<node_internals>/**"
|
||||
],
|
||||
"program": "${file}",
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/**/*.js"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
3
code/ts/后端辅助工具/.vscode/settings.json
vendored
Normal file
3
code/ts/后端辅助工具/.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"typescript.tsdk": "node_modules/typescript/lib"
|
||||
}
|
14
code/ts/后端辅助工具/.vscode/tasks.json
vendored
Normal file
14
code/ts/后端辅助工具/.vscode/tasks.json
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"type": "typescript",
|
||||
"tsconfig": "tsconfig.json",
|
||||
"problemMatcher": [
|
||||
"$tsc"
|
||||
],
|
||||
"group": "build",
|
||||
"label": "tsc: build - tsconfig.json"
|
||||
}
|
||||
]
|
||||
}
|
2740
code/ts/后端辅助工具/package-lock.json
generated
Normal file
2740
code/ts/后端辅助工具/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
15
code/ts/后端辅助工具/package.json
Normal file
15
code/ts/后端辅助工具/package.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"devDependencies": {
|
||||
"@typescript-eslint/eslint-plugin": "^5.51.0",
|
||||
"@typescript-eslint/parser": "^5.51.0",
|
||||
"eslint": "^8.33.0",
|
||||
"ts-loader": "^9.4.2",
|
||||
"webpack": "^5.75.0",
|
||||
"webpack-cli": "^5.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^1.3.2",
|
||||
"pako": "^2.1.0",
|
||||
"ts-node": "^10.9.1"
|
||||
}
|
||||
}
|
41
code/ts/后端辅助工具/src/DataType/Class.ts
Normal file
41
code/ts/后端辅助工具/src/DataType/Class.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-17 22:35:49
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-19 21:38:18
|
||||
* @FilePath: /后端辅助工具/src/DataType/Class.ts
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
class CpicximStuff
|
||||
{
|
||||
constructor(
|
||||
private _stuffName: string,
|
||||
private _stuffCode: string,
|
||||
private _p13UID: string
|
||||
) { }
|
||||
|
||||
get stuffName(): string
|
||||
{
|
||||
return this._stuffName;
|
||||
}
|
||||
|
||||
set stuffName(stuffName: string)
|
||||
{
|
||||
this._stuffName = stuffName;
|
||||
}
|
||||
|
||||
get stuffCode(): string
|
||||
{
|
||||
return this._stuffCode;
|
||||
}
|
||||
|
||||
set stuffCode(code: string)
|
||||
{
|
||||
this._stuffCode = code;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
export { CpicximStuff };
|
73
code/ts/后端辅助工具/src/DataType/DataType.ts
Normal file
73
code/ts/后端辅助工具/src/DataType/DataType.ts
Normal file
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-10 15:08:53
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-13 10:04:33
|
||||
* @FilePath: /后端辅助工具/src/DataType/DataType.ts
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
/*eslint no-unused-vars: "off" */
|
||||
/*eslint @typescript-eslint/no-unused-vars: "off" */
|
||||
|
||||
|
||||
//Tuple
|
||||
function dataTypes()
|
||||
{
|
||||
const tu: readonly [number, number, number] = [1, 1, 2,];
|
||||
|
||||
const toArray: [number, number, string] = [1, 2, "3",];
|
||||
const v1: (number | string)[] = toArray;
|
||||
|
||||
const s1 = "string";
|
||||
|
||||
console.log(typeof s1);
|
||||
|
||||
|
||||
let point: {
|
||||
x: number,
|
||||
y: number,
|
||||
};
|
||||
point = { x: 0, y: 0, };
|
||||
|
||||
function addOne(x: number, y: number = 1): number
|
||||
{
|
||||
return x + y;
|
||||
}
|
||||
|
||||
console.log(addOne(1));
|
||||
|
||||
function allParams(x: number, y: number): void
|
||||
{
|
||||
const z = x + y;
|
||||
}
|
||||
|
||||
//剩余参数,数组形式
|
||||
function overplusArgusWithArray(x: number, ...argus: number[]): number
|
||||
{
|
||||
return argus.length;
|
||||
}
|
||||
|
||||
function overplusArugsWithTuple(x: number, ...argus: [number, number, string]): number
|
||||
{
|
||||
|
||||
console.log(`元组形式的参数表${argus},剩余参数的数量${argus.length}。`);
|
||||
console.log(argus[2]);
|
||||
|
||||
return argus.length;
|
||||
}
|
||||
|
||||
overplusArugsWithTuple(1, 2, 3, "test");
|
||||
|
||||
console.log(overplusArgusWithArray(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
|
||||
|
||||
//测试null
|
||||
const nulltest: null = null;
|
||||
let var_2: { x: string; } = { x: "test", };
|
||||
|
||||
// var_2 = null;
|
||||
}
|
||||
|
||||
|
||||
export default dataTypes;
|
30
code/ts/后端辅助工具/src/DataType/Function.ts
Normal file
30
code/ts/后端辅助工具/src/DataType/Function.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-13 23:08:34
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-16 22:43:22
|
||||
* @FilePath: /后端辅助工具/src/DataType/Function.ts
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
function f(x: number, y: number): number
|
||||
{
|
||||
return x + y;
|
||||
}
|
||||
|
||||
f.version = "1.0.0";
|
||||
|
||||
const func: {
|
||||
(x: number, y: number): void,
|
||||
version: string,
|
||||
} = f;
|
||||
|
||||
function func_this_void(this: void, arg1: number): number
|
||||
{
|
||||
return arg1;
|
||||
}
|
||||
|
||||
let constructor: {
|
||||
new(x: string, y: string): object;
|
||||
};
|
24
code/ts/后端辅助工具/src/DataType/Interface.ts
Normal file
24
code/ts/后端辅助工具/src/DataType/Interface.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-14 22:24:26
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-21 23:31:40
|
||||
* @FilePath: /后端辅助工具/src/DataType/Interface.ts
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
interface document
|
||||
{
|
||||
getElementById(id: string): HTMLElement | null;
|
||||
}
|
||||
|
||||
interface CpicStuff
|
||||
{
|
||||
stuffName: string;
|
||||
stuffCode: string;
|
||||
p13uid: string;
|
||||
password: string;
|
||||
|
||||
}
|
24
code/ts/后端辅助工具/src/DataType/Template.ts
Normal file
24
code/ts/后端辅助工具/src/DataType/Template.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-21 17:39:01
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-22 14:08:48
|
||||
* @FilePath: /后端辅助工具/src/DataType/Template.ts
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
|
||||
interface Point
|
||||
{
|
||||
x: number;
|
||||
y: number;
|
||||
}
|
||||
|
||||
function radius<TPoint>(x: TPoint): TPoint
|
||||
{
|
||||
const result: TPoint = x;
|
||||
|
||||
return result;
|
||||
}
|
11
code/ts/后端辅助工具/src/axios/AxiosTest.ts
Normal file
11
code/ts/后端辅助工具/src/axios/AxiosTest.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-13 15:46:17
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-13 23:34:55
|
||||
* @FilePath: /后端辅助工具/src/axios/AxiosTest.ts
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
import axios from "axios";
|
19
code/ts/后端辅助工具/src/axios/request.ts
Normal file
19
code/ts/后端辅助工具/src/axios/request.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-13 15:53:45
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-13 22:41:50
|
||||
* @FilePath: /后端辅助工具/src/axios/request.ts
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
import axios, {AxiosInstance, AxiosRequestConfig, AxiosResponse} from 'axios';
|
||||
|
||||
// const service = axios.create({
|
||||
// baseURL: "",
|
||||
// timeout: 10000,
|
||||
// timeoutErrorMessage: "请求超时!",
|
||||
// });
|
||||
|
||||
|
27
code/ts/后端辅助工具/src/gzip/PakoTest.ts
Normal file
27
code/ts/后端辅助工具/src/gzip/PakoTest.ts
Normal file
File diff suppressed because one or more lines are too long
21
code/ts/后端辅助工具/src/main.ts
Normal file
21
code/ts/后端辅助工具/src/main.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-09 22:14:30
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-21 23:32:00
|
||||
* @FilePath: /后端辅助工具/src/main.ts
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
import dataTypes from "./DataType/DataType";
|
||||
import { pakoTest } from "./gzip/PakoTest";
|
||||
|
||||
const greetings = "hello, this is kane's typescript!";
|
||||
|
||||
console.log(greetings);
|
||||
console.log("all");
|
||||
|
||||
//dataTypes();
|
||||
pakoTest();
|
38
code/ts/后端辅助工具/src/utils/StringConvert.ts
Normal file
38
code/ts/后端辅助工具/src/utils/StringConvert.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-13 14:54:46
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-13 14:55:19
|
||||
* @FilePath: /pako/src/utils/StringConverter.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
function Uint8ArrayToString(fileData: Uint8Array): string
|
||||
{
|
||||
let dataString: string = "";
|
||||
|
||||
for (let i = 0; i < fileData.length; i++)
|
||||
{
|
||||
dataString += String.fromCharCode(fileData[i]);
|
||||
}
|
||||
|
||||
return dataString;
|
||||
}
|
||||
|
||||
function stringToUint8Array(str: string): Uint8Array
|
||||
{
|
||||
const arr: number[] = [];
|
||||
|
||||
for (let i = 0, j = str.length; i < j; ++i)
|
||||
{
|
||||
arr.push(str.charCodeAt(i));
|
||||
}
|
||||
|
||||
const tmpUint8Array: Uint8Array = new Uint8Array(arr);
|
||||
|
||||
return tmpUint8Array;
|
||||
}
|
||||
|
||||
export { Uint8ArrayToString, stringToUint8Array };
|
77
code/ts/后端辅助工具/src/utils/url.ts
Normal file
77
code/ts/后端辅助工具/src/utils/url.ts
Normal file
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-28 19:30:40
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /后端辅助工具/src/utils/url.ts
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
/**
|
||||
* 将url的参数拆分成对象
|
||||
* @param url 访问的url
|
||||
* @returns
|
||||
*/
|
||||
function getURLParams(url: string)
|
||||
{
|
||||
const arr = url.split("?");
|
||||
const params = arr[1].split("&");
|
||||
const obj = {};
|
||||
|
||||
for (let i = 0; i < params.length; i++)
|
||||
{
|
||||
const param = params[i].split("=");
|
||||
|
||||
obj[param[0]] = param[1];
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
function getParamsFromURL(url: string)
|
||||
{
|
||||
const indexOfQuestionMark: number = url.indexOf("?");
|
||||
const indexOfSharp: number = url.indexOf("#");
|
||||
const paramObj = {};
|
||||
let paramString;
|
||||
|
||||
//url中没有问号,说明没有参数
|
||||
if (indexOfQuestionMark < 0)
|
||||
{
|
||||
return paramObj;
|
||||
}
|
||||
|
||||
//检查是否有#号
|
||||
if (indexOfSharp < 0)
|
||||
{
|
||||
//没有#号,可以直接截取参数字符串
|
||||
paramString = url.substring(indexOfQuestionMark);
|
||||
}
|
||||
else
|
||||
{
|
||||
//有#号,需要排除掉#的内容
|
||||
const end: number = indexOfQuestionMark < indexOfSharp ? indexOfSharp : url.length;
|
||||
|
||||
paramString = url.substring(indexOfQuestionMark + 1, end);
|
||||
}
|
||||
|
||||
//拆分属性
|
||||
const paramArray: string[] = paramString.split("&");
|
||||
|
||||
paramArray.forEach((item) =>
|
||||
{
|
||||
if (item.length == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
const param = item.split("=");
|
||||
|
||||
paramObj[param[0]] = param[1] || "";
|
||||
});
|
||||
|
||||
return paramObj;
|
||||
}
|
||||
|
||||
export { getURLParams, getParamsFromURL };
|
40
code/ts/后端辅助工具/tsconfig.json
Normal file
40
code/ts/后端辅助工具/tsconfig.json
Normal file
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-09 15:24:20
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-17 23:15:11
|
||||
* @FilePath: /后端辅助工具/tsconfig.json
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
{
|
||||
"compilerOptions": {
|
||||
"outDir": "./target",
|
||||
"strict": false,
|
||||
"strictNullChecks": true,
|
||||
"strictPropertyInitialization": true,
|
||||
"sourceMap": true,
|
||||
"allowJs": true,
|
||||
"checkJs": true,
|
||||
"moduleResolution": "node",
|
||||
"module": "CommonJS",
|
||||
"target": "ES2015"
|
||||
},
|
||||
// "files": [
|
||||
// "./src/main.ts",
|
||||
// ],
|
||||
"include": [
|
||||
"./src/**/*",
|
||||
// "./src/*.ts",
|
||||
// "src/main.ts",
|
||||
// ".eslintrc.js",
|
||||
],
|
||||
"exclude": [
|
||||
"./target",
|
||||
"node_modules",
|
||||
"bower_componets",
|
||||
"jspm_packages",
|
||||
],
|
||||
// "outFile": "./target/mian.js",
|
||||
}
|
12
code/ts/后端辅助工具/webpack.config.js
Normal file
12
code/ts/后端辅助工具/webpack.config.js
Normal file
@@ -0,0 +1,12 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-02-23 16:15:45
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-02-28 09:22:08
|
||||
* @FilePath: /后端辅助工具/webpack.config.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
// const path = require("path");
|
||||
import { path } from "path";
|
@@ -1,2 +0,0 @@
|
||||
VUE_APP_API_URL_LOGIN = "http://222.76.244.118:11001/admin-system/account/p13_account_check"
|
||||
VUR_APPP_API_URL_UPLOAD_FILE= "http://222.76.244.118:11001/admin-system/file/file-upload.do"
|
@@ -1,27 +0,0 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-14 15:12:46
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-14 15:20:20
|
||||
* @FilePath: \admin_system\.eslintrc.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
module.exports = {
|
||||
root: true,
|
||||
env: {
|
||||
node: true
|
||||
},
|
||||
'extends': [
|
||||
'plugin:vue/vue3-essential',
|
||||
'eslint:recommended'
|
||||
],
|
||||
parserOptions: {
|
||||
parser: '@babel/eslint-parser'
|
||||
},
|
||||
rules: {
|
||||
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
|
||||
}
|
||||
}
|
@@ -1,5 +0,0 @@
|
||||
module.exports = {
|
||||
presets: [
|
||||
'@vue/cli-plugin-babel/preset'
|
||||
]
|
||||
}
|
23141
code/web/admin_system/package-lock.json
generated
23141
code/web/admin_system/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,36 +0,0 @@
|
||||
{
|
||||
"name": "admin_system",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@element-plus/icons-vue": "^2.0.10",
|
||||
"axios": "^1.2.1",
|
||||
"core-js": "^3.8.3",
|
||||
"element-plus": "^2.2.26",
|
||||
"sass": "^1.56.2",
|
||||
"sass-loader": "^13.2.0",
|
||||
"scss": "^0.2.4",
|
||||
"scss-loader": "^0.0.1",
|
||||
"vue": "^3.2.13",
|
||||
"vue-router": "^4.0.3",
|
||||
"vuex": "^4.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.16",
|
||||
"@babel/eslint-parser": "^7.12.16",
|
||||
"@vue/cli-plugin-babel": "~5.0.0",
|
||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
||||
"@vue/cli-plugin-router": "~5.0.0",
|
||||
"@vue/cli-plugin-vuex": "~5.0.0",
|
||||
"@vue/cli-service": "~5.0.0",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-plugin-vue": "^8.0.3",
|
||||
"svg-sprite-loader": "^2.1.0",
|
||||
"vue-cli-plugin-element-plus": "~0.0.13"
|
||||
}
|
||||
}
|
@@ -1,35 +0,0 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-14 15:12:46
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-19 14:26:17
|
||||
* @FilePath: \admin_system\src\App.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
<el-config-provider :locale="this.locale">
|
||||
<router-view></router-view>
|
||||
</el-config-provider>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
//引入语言组件
|
||||
import zhCn from "element-plus/lib/locale/lang/zh-cn";
|
||||
|
||||
export default {
|
||||
name: "App",
|
||||
data() {
|
||||
return {
|
||||
locale: zhCn, //语言属性
|
||||
};
|
||||
},
|
||||
components: {
|
||||
// HelloWorld,
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
@@ -1,20 +0,0 @@
|
||||
: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;
|
||||
}
|
@@ -1,87 +0,0 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-04 11:05:44
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-26 10:29:03
|
||||
* @FilePath: \admin_system\src\layout\Index.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
<el-container id="layout-container">
|
||||
<el-header id="layout-header">
|
||||
<LayoutHeader />
|
||||
</el-header>
|
||||
<el-container id="layout-container-down">
|
||||
<el-aside :width="asideWidth" id="layout-aside">
|
||||
<LayoutAside />
|
||||
</el-aside>
|
||||
<el-main id="layout-main">
|
||||
<LayoutMain />
|
||||
</el-main>
|
||||
</el-container>
|
||||
</el-container>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import LayoutAside from "./components/Aside.vue";
|
||||
import LayoutHeader from "./components/Header.vue";
|
||||
import LayoutMain from "./components/Main.vue";
|
||||
|
||||
export default {
|
||||
name: "layoutPage",
|
||||
components: {
|
||||
LayoutAside,
|
||||
LayoutHeader,
|
||||
LayoutMain,
|
||||
},
|
||||
computed: {
|
||||
asideWidth()
|
||||
{
|
||||
const collapse = this.$store.state.app.asideBarCollapse;
|
||||
|
||||
return collapse === true ? "65px" : "180px";
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
#layout-container {
|
||||
height: 100vh;
|
||||
max-height: 100vh;
|
||||
/* overflow: hiddens; */
|
||||
/* min-width: 1280px; */
|
||||
}
|
||||
|
||||
#layout-container-down {
|
||||
height: calc(100vh - 50px);
|
||||
max-height: calc(100vh - 50px);
|
||||
min-height: calc(100vh - 50px);
|
||||
}
|
||||
|
||||
#layout-aside {
|
||||
/* width: 175px; */
|
||||
background-color: #2f4156;
|
||||
overflow-x: hidden;
|
||||
/* height: calc(100vh - 50px);
|
||||
max-height: calc(100vh - 50px);
|
||||
min-height: calc(100vh - 50px); */
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#layout-header {
|
||||
height: 50px;
|
||||
padding: 0px;
|
||||
flex-grow: 0;
|
||||
}
|
||||
|
||||
#layout-main {
|
||||
padding: 0px;
|
||||
height: 100%;
|
||||
/* height: calc(100vh - 50px); */
|
||||
/* flex-grow: 1; */
|
||||
/* overflow: overlay; */
|
||||
}
|
||||
</style>
|
@@ -1,150 +0,0 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-04 11:30:33
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-28 16:01:49
|
||||
* @FilePath: \admin_system\src\layout\components\Aside.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved. 223142 2f4156
|
||||
-->
|
||||
<template>
|
||||
<el-scrollbar class="wrapper">
|
||||
<el-menu id="side-bar" router :default-active="currentPath" background-color="#2f4156" text-color="#fff"
|
||||
active-text-color="#ffd04b" :collapse="asideCollapse">
|
||||
<template v-for="route in this.routers" :key="route.path">
|
||||
<template v-if="!route.hidden">
|
||||
<template v-if="hasOnlyChild(route.children)">
|
||||
<!-- 当只有一个子路由时,直接渲染子路由 -->
|
||||
<el-menu-item :index="route.children[0].path" class="sidebar-submenu">
|
||||
<component :is="route.children[0].meta.icon" class="icons">
|
||||
</component>
|
||||
<!-- <el-icon v-html="route.children[0].meta && route.children[0].meta.icon"></el-icon> -->
|
||||
<template #title>{{ route.children[0].meta && route.children[0].meta.title }}</template>
|
||||
</el-menu-item>
|
||||
</template>
|
||||
<template v-else>
|
||||
<!-- 不是一个子路由时,有可能没有子路由,或者是多个子路由 -->
|
||||
<el-sub-menu v-if="route.children && route.children.length" :index="route.path"
|
||||
class="sidebar-submenu">
|
||||
<template #title>
|
||||
<component :is="route.meta.icon" class="icons"></component>
|
||||
<span>{{ route.meta && route.meta.title }}</span>
|
||||
</template>
|
||||
<template v-for="child in route.children" :key="child.path">
|
||||
<el-menu-item v-if="!child.hidden" :index="child.path" class="sidebar-item">
|
||||
<component :is="child.meta.icon" class="icons"></component>
|
||||
<template #title>{{ child.meta && child.meta.title }}</template>
|
||||
</el-menu-item>
|
||||
</template>
|
||||
</el-sub-menu>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
</el-menu>
|
||||
</el-scrollbar>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
|
||||
export default {
|
||||
name: "LayoutAside",
|
||||
data()
|
||||
{
|
||||
return {
|
||||
routers: null,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
//用于判断一个路由是否只有一项子路由
|
||||
hasOnlyChild: function (children)
|
||||
{
|
||||
//防御验证
|
||||
if (!children)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//剔除掉hidden的路由
|
||||
const routes = children.filter((item) =>
|
||||
{
|
||||
return item.hidden ? false : true;
|
||||
});
|
||||
|
||||
if (routes.length === 1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
},
|
||||
computed: {
|
||||
//获取当前的路由
|
||||
currentPath()
|
||||
{
|
||||
let path = useRoute().path;
|
||||
|
||||
return path;
|
||||
},
|
||||
//获取导航栏是否折叠的标志
|
||||
asideCollapse()
|
||||
{
|
||||
return this.$store.state.app.asideBarCollapse;
|
||||
}
|
||||
},
|
||||
created()
|
||||
{
|
||||
this.routers = useRouter().options.routes;
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.el-menu {
|
||||
border-right: none;
|
||||
/* border-left: 5px solid #1d74b2; */
|
||||
overflow: auto;
|
||||
|
||||
-webkit-touch-callout: none;
|
||||
-moz-user-select: none;
|
||||
/*火狐*/
|
||||
-webkit-user-select: none;
|
||||
/*webkit浏览器*/
|
||||
-ms-user-select: none;
|
||||
/*IE10*/
|
||||
-khtml-user-select: none;
|
||||
/*早期浏览器*/
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.is-active {
|
||||
background-color: #ffffff4f !important;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* .is-opened {
|
||||
border-left: 5px solid #1d74b2;
|
||||
} */
|
||||
|
||||
.icons {
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.sidebar-submenu {
|
||||
background-color: #2f4156 !important;
|
||||
}
|
||||
|
||||
.sidebar-item {
|
||||
background-color: #223142 !important;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
@@ -1,100 +0,0 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-04 11:39:04
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-19 14:53:38
|
||||
* @FilePath: \admin_system\src\layout\components\Header.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
<div class="app_banner no_select">
|
||||
<span class="company_name">CPIC</span>
|
||||
<div class="version_div">
|
||||
<div>测试版</div>
|
||||
<div>3.6.7 x64 Build 202208301257</div>
|
||||
</div>
|
||||
<div class="buttons_div">
|
||||
<User
|
||||
style="width: 25px; height; 25px; margin-right: 8px; cursor:pointer;"
|
||||
/>
|
||||
<SwitchButton
|
||||
style="width: 25px; height; 25px; margin-right: 8px; cursor:pointer;"
|
||||
@click="logout"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
//import { ElMessage } from "element-plus";
|
||||
import { Logout } from "../../utils/api/info/account";
|
||||
|
||||
export default {
|
||||
name: "AppBanner",
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
// created() {
|
||||
// console.log("banner请求数据!");
|
||||
// },
|
||||
mounted() {
|
||||
//console.log("banner请求数据!");
|
||||
},
|
||||
methods: {
|
||||
logout() {
|
||||
this.$confirm("是否退出系统?", "请确认", {
|
||||
confirmButtonText: "是",
|
||||
cancelButtonText: "否",
|
||||
type: "warning",
|
||||
}).then(() => {
|
||||
Logout();
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
.app_banner {
|
||||
background-color: var(--banner-background-color);
|
||||
color: #fff;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
padding: 0px 15px 0px 15px;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.no_select {
|
||||
-webkit-touch-callout: none;
|
||||
-moz-user-select: none;
|
||||
/*火狐*/
|
||||
-webkit-user-select: none;
|
||||
/*webkit浏览器*/
|
||||
-ms-user-select: none;
|
||||
/*IE10*/
|
||||
-khtml-user-select: none;
|
||||
/*早期浏览器*/
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.app_banner > * + * {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.company_name {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.version_div {
|
||||
font-size: 0.5rem;
|
||||
}
|
||||
|
||||
.buttons_div {
|
||||
margin-left: auto;
|
||||
padding-top: 5px;
|
||||
/* border: 1px solid salmon; */
|
||||
}
|
||||
</style>
|
@@ -1,41 +0,0 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-14 15:12:46
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-07 16:44:45
|
||||
* @FilePath: \admin_system\src\main.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
import { createApp } from 'vue';
|
||||
import App from './App.vue';
|
||||
import router from './router';
|
||||
import store from './store';
|
||||
//import "@/components/svg/svg";
|
||||
|
||||
import("./css/root.css");
|
||||
import("./css/normalize.css");
|
||||
import("./css/colors.css");
|
||||
import("element-plus/dist/index.css");
|
||||
|
||||
// import "./assets/css/root.css";
|
||||
// import "./assets/css/normalize.css";
|
||||
// import "./assets/css/global.css";
|
||||
// import "./assets/css/colors.css";
|
||||
|
||||
import ElementPlus from "element-plus";
|
||||
import * as ElementPlusIconsVue from "@element-plus/icons-vue";
|
||||
import SvgIcon from "./components/svg/SvgIcon";
|
||||
|
||||
const app = createApp(App);
|
||||
|
||||
app.component("SvgIcon", SvgIcon);
|
||||
|
||||
for (const [key, component] of Object.entries(ElementPlusIconsVue))
|
||||
{
|
||||
app.component(key, component);
|
||||
}
|
||||
|
||||
app.use(ElementPlus);
|
||||
app.use(store).use(router).mount('#app');
|
@@ -1,206 +0,0 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-14 15:12:46
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-28 16:00:58
|
||||
* @FilePath: \admin_system\src\router\index.js
|
||||
* @Description: 定义应用路由配置
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
import { createRouter, createWebHashHistory } from 'vue-router';
|
||||
|
||||
const routes = [
|
||||
//框架路由
|
||||
{
|
||||
path: "/",
|
||||
name: "Root",
|
||||
redirect: "Login", //默认路由指向登录页面
|
||||
hidden: true,
|
||||
},
|
||||
{
|
||||
path: "/login",
|
||||
name: "Login",
|
||||
component: () => import("../views/account/Login.vue"),
|
||||
hidden: true,
|
||||
},
|
||||
{
|
||||
path: "/home",
|
||||
name: "Home",
|
||||
hidden: true,
|
||||
meta: {
|
||||
title: "控制台"
|
||||
},
|
||||
component: () => import("../layout/Index.vue"),
|
||||
},
|
||||
//侧边导航栏路由
|
||||
{ //首页
|
||||
path: "/console",
|
||||
name: "Console",
|
||||
meta: {
|
||||
title: "总览",
|
||||
icon: "house",
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "/desktop",
|
||||
name: "DeskTop",
|
||||
meta: {
|
||||
title: "工作台",
|
||||
icon: "house",
|
||||
},
|
||||
component: () => import("../views/overview/OverView.vue"),
|
||||
},
|
||||
],
|
||||
component: () => import("../layout/Index.vue"),
|
||||
},
|
||||
{
|
||||
//需求管理
|
||||
path: "/requirement",
|
||||
name: "Requirement",
|
||||
meta: {
|
||||
title: "需求管理",
|
||||
icon: "Document",
|
||||
},
|
||||
component: () => import("../layout/Index.vue"),
|
||||
children: [
|
||||
{
|
||||
path: "/requirement-manager",
|
||||
name: "RequirementManager",
|
||||
meta: {
|
||||
title: "需求管理",
|
||||
icon: "Document",
|
||||
},
|
||||
component: () => import("../views/requirement/RequirementManager.vue"),
|
||||
},
|
||||
{
|
||||
path: "/requirement-editing",
|
||||
name: "RequirementEditing",
|
||||
hidden: true,
|
||||
meta: {
|
||||
title: "需求管理",
|
||||
icon: "edit",
|
||||
},
|
||||
component: () => import("../views/requirement/RequirementEditing.vue"),
|
||||
},
|
||||
],
|
||||
},
|
||||
{//信息管理
|
||||
path: "/news",
|
||||
name: "News",
|
||||
meta: {
|
||||
title: "信息管理",
|
||||
icon: "edit",
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "/staffInfo",
|
||||
name: "StaffInfo",
|
||||
meta: {
|
||||
title: "人员信息",
|
||||
icon: "edit",
|
||||
},
|
||||
component: () => import("../views/info/StaffInfo.vue"),
|
||||
},
|
||||
{
|
||||
path: "/editStuffInfo",
|
||||
name: "EditStaffInfo",
|
||||
hidden: true,
|
||||
meta: {
|
||||
title: "编辑人员信息",
|
||||
},
|
||||
component: () => import("../views/info/EditStaffInfo.vue"),
|
||||
},
|
||||
{
|
||||
path: "/newsIndex",
|
||||
name: "NewsIndex",
|
||||
meta: {
|
||||
title: "信息列表",
|
||||
icon: "edit",
|
||||
},
|
||||
component: () => import("../views/news/News.vue"),
|
||||
},
|
||||
{
|
||||
path: "/newsedit",
|
||||
name: "NewsEdit",
|
||||
meta: {
|
||||
title: "信息编辑",
|
||||
icon: "edit",
|
||||
},
|
||||
component: () => import("../views/news/NewsEdit.vue"),
|
||||
},
|
||||
],
|
||||
component: () => import("../layout/Index.vue"),
|
||||
},
|
||||
{
|
||||
path: "/network",
|
||||
name: "NetworkManager",
|
||||
meta: {
|
||||
title: "网络管理",
|
||||
icon: "User",
|
||||
},
|
||||
component: () => import("../layout/Index.vue"),
|
||||
children: [
|
||||
{
|
||||
path: "/network-point-manager",
|
||||
name: "NetworkPointManager",
|
||||
meta: {
|
||||
title: "网络点管理",
|
||||
icon: "Monitor",
|
||||
},
|
||||
component: () => import("../views/network/NetworkPoint/NetworkPoint.vue"),
|
||||
},
|
||||
{
|
||||
path: "/network-point-edit",
|
||||
name: "NetworkPointEdit",
|
||||
hidden: true,
|
||||
component: () => import("../views/network/NetworkPoint/EditNetworkPoint.vue"),
|
||||
},
|
||||
{
|
||||
path: "/switch-manager",
|
||||
name: "SwitchManager",
|
||||
meta: {
|
||||
title: "交换机管理",
|
||||
icon: "switch",
|
||||
},
|
||||
component: () => import("../views/network/switch/SwitchManager.vue"),
|
||||
}
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
const router = createRouter({
|
||||
history: createWebHashHistory(),
|
||||
routes
|
||||
});
|
||||
|
||||
//前置路由守卫
|
||||
router.beforeEach((to) =>
|
||||
{
|
||||
const token = window.localStorage.getItem("token");
|
||||
|
||||
//先检查token
|
||||
if (!token)
|
||||
{
|
||||
//如果token不存在,判断路由是否走向login,如果不是则指向login
|
||||
//走向login则不干预
|
||||
if (to.name !== "Login")
|
||||
{
|
||||
return {
|
||||
name: "Login",
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
//修改默认打开的页面,跳向工作台
|
||||
if (to.name === "Home")
|
||||
{
|
||||
console.log("跳向工作台");
|
||||
|
||||
return {
|
||||
name: "DeskTop",
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
export default router;
|
@@ -1,20 +0,0 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-14 15:12:46
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-11 14:20:04
|
||||
* @FilePath: \admin_system\src\store\index.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
import { createStore } from 'vuex';
|
||||
import app from "./modules/app";
|
||||
|
||||
const store = createStore({
|
||||
modules: {
|
||||
app,
|
||||
}
|
||||
});
|
||||
|
||||
export default store;
|
@@ -1,259 +0,0 @@
|
||||
<!-- eslint-disable no-unused-vars -->
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-14 15:23:54
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-18 22:24:21
|
||||
* @FilePath: \admin_system\src\views\account\Login.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
<div id="login">
|
||||
<div class="form-warp">
|
||||
<ul class="menu-tab">
|
||||
<li :class="{ 'current': current_menu === item.type }" @click="onToggleMenu(item.type)" v-for="item in tab_menu"
|
||||
:key="item.type">{{ item.label }}
|
||||
</li>
|
||||
</ul>
|
||||
<!-- <el-form ref="form" :model="form"> -->
|
||||
<el-form ref="form">
|
||||
<el-form-item>
|
||||
<label class="form-label">用户名</label>
|
||||
<el-input type="text" v-model.lazy.trim="loginForm.username"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<label class="form-label">密码</label>
|
||||
<el-input type="password" v-model.lazy.trim="loginForm.password"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item v-show="current_menu === tab_menu[1].type">
|
||||
<label class="form-label">确认密码</label>
|
||||
<el-input type="password" disabled v-model.lazy.trim="loginForm.confirm_password"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<label class="form-label">验证码</label>
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="14">
|
||||
<el-input type="text" disabled></el-input>
|
||||
</el-col>
|
||||
<el-col :span="10">
|
||||
<el-button type="danger" disabled class="el-button-block" @click="getValidateCode()">获取验证码</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="el-button-block" @click="login" :disabled="submit_btn_disable"
|
||||
:loading="submit_btn_loading">
|
||||
{{ current_menu === "login" ? "登录" : "注册" }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Login } from "@/utils/api/info/account";
|
||||
import { ElMessage } from "element-plus";
|
||||
import router from "../../router/index";
|
||||
|
||||
export default {
|
||||
name: "loginPage",
|
||||
data()
|
||||
{
|
||||
return {
|
||||
loginForm: {
|
||||
username: "",
|
||||
password: "",
|
||||
confirm_password: "",
|
||||
validateCode: "",
|
||||
},
|
||||
tab_menu: [
|
||||
{ type: "login", label: "登录" },
|
||||
{ type: "regiester", label: "注册" },
|
||||
],
|
||||
current_menu: "",
|
||||
staffInfo: null,
|
||||
submit_btn_disable: false,
|
||||
submit_btn_loading: false,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
onToggleMenu(type)
|
||||
{
|
||||
this.current_menu = type;
|
||||
console.log(process.env.VUE_APP_API_URL_LOGIN);
|
||||
},
|
||||
getValidateCode()
|
||||
{
|
||||
ElMessage({
|
||||
message: "测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字",
|
||||
center: true,
|
||||
type: "error",
|
||||
});
|
||||
},
|
||||
/**
|
||||
* 登录
|
||||
*/
|
||||
login()
|
||||
{
|
||||
if (this.loginForm.username.length === 0 || this.loginForm.password === 0)
|
||||
{
|
||||
ElMessage({
|
||||
message: "请填写您的P13账号和密码!",
|
||||
type: "error",
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
this.submit_btn_disable = true;
|
||||
this.submit_btn_loading = true;
|
||||
|
||||
const userInfo = {
|
||||
p13account: this.loginForm.username,
|
||||
password: this.loginForm.password,
|
||||
};
|
||||
|
||||
Login(userInfo)
|
||||
.then((response) =>
|
||||
{
|
||||
//成功获取到返回值时的响应函数,要判断返回值的成功标志
|
||||
//验证成功,将获取到的token和用户信息保存到vuex和localStoreage
|
||||
//然后router.push,进行路由跳转到控制台
|
||||
const data = response.data;
|
||||
|
||||
//判断是否成功,显示提示信息
|
||||
if (data.success === true)
|
||||
{
|
||||
ElMessage({
|
||||
message: data.message,
|
||||
type: "success",
|
||||
center: true,
|
||||
});
|
||||
|
||||
this.staffInfo = data.staffInfo;
|
||||
|
||||
//保存用户信息和token
|
||||
this.saveUserInfo(data);
|
||||
|
||||
//验证成功,跳转路由
|
||||
router.push("/home");
|
||||
}
|
||||
else
|
||||
{
|
||||
//验证失败
|
||||
ElMessage({
|
||||
message: data.message,
|
||||
type: "error",
|
||||
center: true,
|
||||
});
|
||||
|
||||
this.submit_btn_disable = false;
|
||||
this.submit_btn_loading = false;
|
||||
}
|
||||
})
|
||||
.catch((error) =>
|
||||
{
|
||||
//没有获取到响应数据
|
||||
console.log(error);
|
||||
|
||||
ElMessage({
|
||||
message: error.message,
|
||||
type: "error",
|
||||
center: true,
|
||||
});
|
||||
|
||||
this.submit_btn_disable = false;
|
||||
this.submit_btn_loading = false;
|
||||
});
|
||||
},
|
||||
saveUserInfo(userInfo) //将获取到的用户信息和token保存到vuex和localStorage
|
||||
{
|
||||
//保存到vuex
|
||||
this.$store.commit("app/SET_USERINFO", userInfo);
|
||||
|
||||
//保存到localStorage
|
||||
const token = userInfo.token;
|
||||
const userInfoJson = JSON.stringify(userInfo);
|
||||
|
||||
window.localStorage.setItem("token", token);
|
||||
window.localStorage.setItem("user_info", userInfoJson);
|
||||
}
|
||||
},
|
||||
created()
|
||||
{
|
||||
//初始化菜单选项
|
||||
this.current_menu = this.tab_menu[0].type;
|
||||
},
|
||||
mounted()
|
||||
{
|
||||
//清理状态
|
||||
this.$store.state.app.userInfo = null;
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
#login {
|
||||
height: 100vh;
|
||||
background-color: #344a5f;
|
||||
padding-top: 50px;
|
||||
}
|
||||
|
||||
.form-warp {
|
||||
width: 320px;
|
||||
padding: 30px;
|
||||
margin: auto;
|
||||
background-color: #ffffff10;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
/*.menu-tab {
|
||||
text-align: center;
|
||||
margin-bottom: 15px;
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
padding: 10px 24px;
|
||||
margin: 0 10px;
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
|
||||
&.current {
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
.menu-tab {
|
||||
text-align: center;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.menu-tab li {
|
||||
display: inline-block;
|
||||
padding: 10px 24px;
|
||||
margin: 0 10px;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.menu-tab .current {
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.form-label {
|
||||
display: block;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.el-button-block {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
@@ -1,37 +0,0 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-25 11:26:11
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-25 11:26:13
|
||||
* @FilePath: \admin_system\src\views\network\NetworkPoint copy.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-25 11:24:47
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-25 11:24:48
|
||||
* @FilePath: \admin_system\src\views\network\NetworkPoint.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
<div>网络点位信息修改</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "network-point-editor",
|
||||
data()
|
||||
{
|
||||
return {};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
@@ -1,27 +0,0 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-25 11:24:47
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-25 11:34:07
|
||||
* @FilePath: \admin_system\src\views\network\NetworkPoint.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
<div>网络点位管理</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "network-point-management",
|
||||
data()
|
||||
{
|
||||
return {};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
@@ -1,67 +0,0 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2023-01-06 15:30:12
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2023-01-28 09:44:31
|
||||
* @FilePath: \admin_system\src\views\overview\OverView.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
<el-form :inline="true" label-width="5em" class="query_form">
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="7">
|
||||
<el-form-item label="需求编号">
|
||||
<el-input style="width:100%;"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="7">
|
||||
<el-form-item label="标题">
|
||||
<el-input style="width:100%;"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="7">
|
||||
<el-form-item label="提交人">
|
||||
<el-input style="width:100%;"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="3"></el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="7">
|
||||
<el-form-item label="状态">
|
||||
<el-select style="width:100%;">
|
||||
<el-option key="部门审批" value="部门审批"></el-option>
|
||||
<el-option key="需求分析" value="需求分析">需求分析</el-option>
|
||||
<el-option key="技术开发" value="技术开发">技术开发</el-option>
|
||||
<el-option key="被退回" value="被退回"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="7">
|
||||
<el-form-item label="提交日期">
|
||||
<el-date-picker style="width:100%;"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="7">
|
||||
<el-form-item label="至">
|
||||
<el-date-picker style="width:100%;"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="3"></el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "OverVue"
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.query_form {
|
||||
max-width: 63em;
|
||||
}
|
||||
</style>
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user