Compare commits
17 Commits
011a3f58e6
...
feature-re
Author | SHA1 | Date | |
---|---|---|---|
280636bd14 | |||
679c12fb92 | |||
e3ada43d48 | |||
1a1e230ead | |||
8b0f8e618b | |||
a0f23c3a4c | |||
0bf3ae2520 | |||
0c9df7d70d | |||
57dc7568b1 | |||
968eaed581 | |||
304acb5c6c | |||
64b59e02ae | |||
9e25df4b6c | |||
ebf4a37529 | |||
ba44c9bc31 | |||
cdc7efce15 | |||
bf19c775cf |
@@ -2,14 +2,16 @@
|
|||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2022-12-15 11:11:21
|
* @Date: 2022-12-15 11:11:21
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-01-17 23:28:21
|
* @LastEditTime: 2023-03-25 17:28:39
|
||||||
* @FilePath: \AdminSys\src\main\java\com\cpic\xim\web\controllers\account\P13AccountCheckController.java
|
* @FilePath: /后端-用户验证/src/main/java/com/cpic/xim/web/controllers/account/P13AccountCheckController.java
|
||||||
* @Description: P13账号验证用Controller。
|
* @Description: P13账号验证用Controller。
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
*/
|
*/
|
||||||
package com.cpic.xim.web.controllers.account;
|
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.io.IOException;
|
||||||
import java.nio.channels.IllegalSelectorException;
|
import java.nio.channels.IllegalSelectorException;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
@@ -21,94 +23,84 @@ import org.springframework.stereotype.Controller;
|
|||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
import com.cpic.xim.myutils.account.CpicXIMStaffInfo;
|
|
||||||
import com.cpic.xim.myutils.account.LdapAccountCheck;
|
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping( path = "/account" )
|
@RequestMapping(path = "/account")
|
||||||
@SuppressWarnings( "unused" )
|
@SuppressWarnings("unused")
|
||||||
public class P13AccountCheckController
|
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;
|
* 根据用户提供的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();
|
||||||
|
|
||||||
try
|
CpicXIMStaffInfo staff = null;
|
||||||
{
|
|
||||||
// 先根据用户输入的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账号不存在,返回结果。
|
try {
|
||||||
if ( staff == null )
|
// 先根据用户输入的09工号或p13账号获得p13账号,确定账号存在
|
||||||
{
|
staff = CpicXIMStaffInfo.getStaffInfo(param.getP13Account());
|
||||||
result.setMessage( "人员工号或P13账号不存在!" );
|
} catch (SQLException error) {
|
||||||
result.setSuccess( false );
|
staff = null;
|
||||||
|
result.setMessage("人员工号或P13账号不存在!");
|
||||||
return result;
|
result.setSuccess(false);
|
||||||
}
|
} catch (ClassNotFoundException error) {
|
||||||
|
staff = null;
|
||||||
// 判断一下p13是否存在,如果不存在就结束过程
|
result.setMessage("加载Oracle驱动失败!");
|
||||||
if ( staff.getP13UID().isEmpty() == true )
|
result.setSuccess(false);
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查询结果是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,37 +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,57 +0,0 @@
|
|||||||
<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>
|
|
||||||
<servlet-mapping>
|
|
||||||
<servlet-name>springmvc</servlet-name>
|
|
||||||
<url-pattern>/account/p13_account_check</url-pattern>
|
|
||||||
</servlet-mapping>
|
|
||||||
|
|
||||||
<!-- 用于验证Token的Filter -->
|
|
||||||
<filter>
|
|
||||||
<filter-name>token-filter</filter-name>
|
|
||||||
<filter-class>com.cpic.xim.web.filters.token.TokenFilter</filter-class>
|
|
||||||
</filter>
|
|
||||||
<filter-mapping>
|
|
||||||
<filter-name>token-filter</filter-name>
|
|
||||||
<url-pattern>*.do</url-pattern>
|
|
||||||
</filter-mapping>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- 用于实现跨域访问的Filter -->
|
|
||||||
<filter>
|
|
||||||
<filter-name>cros-filter</filter-name>
|
|
||||||
<filter-class>com.cpic.xim.web.filters.cros.CrosFilter</filter-class>
|
|
||||||
</filter>
|
|
||||||
<filter-mapping>
|
|
||||||
<filter-name>cros-filter</filter-name>
|
|
||||||
<url-pattern>*</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>
|
|
@@ -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,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,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,4 +0,0 @@
|
|||||||
#Created by Apache Maven 3.8.6
|
|
||||||
artifactId=admin-system
|
|
||||||
groupId=com.cpic.xim
|
|
||||||
version=1.0-SNAPSHOT
|
|
@@ -1,13 +0,0 @@
|
|||||||
com\cpic\xim\web\filters\cros\CrosFilter.class
|
|
||||||
com\cpic\xim\web\listener\ContextLoaderListener.class
|
|
||||||
com\cpic\xim\web\filters\token\TokenFilter.class
|
|
||||||
com\cpic\xim\myutils\account\CpicXIMStaffInfo.class
|
|
||||||
com\cpic\xim\myutils\config\json\ConfigLoader.class
|
|
||||||
com\cpic\xim\web\controllers\account\P13AccountCheckResult.class
|
|
||||||
com\cpic\xim\web\controllers\FileUpload\FileUploadResult.class
|
|
||||||
com\cpic\xim\myutils\config\json\AppConfig.class
|
|
||||||
com\cpic\xim\myutils\config\json\DatabaseConfig.class
|
|
||||||
com\cpic\xim\web\controllers\FileUpload\FileUpload.class
|
|
||||||
com\cpic\xim\web\controllers\account\P13AccountCheckController.class
|
|
||||||
com\cpic\xim\web\controllers\account\P13AccountCheckRequest.class
|
|
||||||
com\cpic\xim\myutils\account\LdapAccountCheck.class
|
|
@@ -1,13 +0,0 @@
|
|||||||
D:\develop\cpicxim\it-console\code\java\后端-用户验证\src\main\java\com\cpic\xim\web\controllers\account\P13AccountCheckController.java
|
|
||||||
D:\develop\cpicxim\it-console\code\java\后端-用户验证\src\main\java\com\cpic\xim\web\controllers\FileUpload\FileUpload.java
|
|
||||||
D:\develop\cpicxim\it-console\code\java\后端-用户验证\src\main\java\com\cpic\xim\myutils\account\LdapAccountCheck.java
|
|
||||||
D:\develop\cpicxim\it-console\code\java\后端-用户验证\src\main\java\com\cpic\xim\web\controllers\account\P13AccountCheckRequest.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\myutils\account\CpicXIMStaffInfo.java
|
|
||||||
D:\develop\cpicxim\it-console\code\java\后端-用户验证\src\main\java\com\cpic\xim\myutils\config\json\ConfigLoader.java
|
|
||||||
D:\develop\cpicxim\it-console\code\java\后端-用户验证\src\main\java\com\cpic\xim\web\controllers\account\P13AccountCheckResult.java
|
|
||||||
D:\develop\cpicxim\it-console\code\java\后端-用户验证\src\main\java\com\cpic\xim\web\controllers\FileUpload\FileUploadResult.java
|
|
||||||
D:\develop\cpicxim\it-console\code\java\后端-用户验证\src\main\java\com\cpic\xim\myutils\config\json\DatabaseConfig.java
|
|
||||||
D:\develop\cpicxim\it-console\code\java\后端-用户验证\src\main\java\com\cpic\xim\myutils\config\json\AppConfig.java
|
|
||||||
D:\develop\cpicxim\it-console\code\java\后端-用户验证\src\main\java\com\cpic\xim\web\listener\ContextLoaderListener.java
|
|
||||||
D:\develop\cpicxim\it-console\code\java\后端-用户验证\src\main\java\com\cpic\xim\web\filters\cros\CrosFilter.java
|
|
@@ -1,3 +1,12 @@
|
|||||||
VUE_APP_API_URL_LOGIN = "http://222.76.244.118:11001/admin-system/account/p13_account_check"
|
###
|
||||||
VUE_APP_API_URL_UPLOAD_FILE= "http://222.76.244.118:11001/admin-system/file/file-upload.do"
|
# @Author: Kane
|
||||||
VUE_APP_API_URL_REQUIREMENT_STATUS= "http://222.76.244.118:11001/requirement/query_requirement_status.do"
|
# @Date: 2023-02-23 09:41:37
|
||||||
|
# @LastEditors: Kane
|
||||||
|
# @FilePath: /it-console/.env.development
|
||||||
|
# @Description:
|
||||||
|
#
|
||||||
|
# Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
|
###
|
||||||
|
VUE_APP_API_URL_LOGIN = "http://222.76.244.118:11101/admin-system/account/p13_account_check"
|
||||||
|
VUE_APP_API_URL_UPLOAD_FILE= "http://222.76.244.118:11101/admin-system/file/file-upload.do"
|
||||||
|
VUE_APP_API_URL_REQUIREMENT_STATUS= "http://222.76.244.118:11101/requirement/query_requirement_status.do"
|
174
code/web/it-console/.eslintrc.cjs
Normal file
174
code/web/it-console/.eslintrc.cjs
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-03-14 09:19:21
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /it-console/.eslintrc.cjs
|
||||||
|
* @Description: eslint 配置文件
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
env: { // 需要在env中指定运行的环境,这些环境其实就是一组预定义的全局变量,让 ESLint 知道当前环境存在这些全局变量
|
||||||
|
node: true,
|
||||||
|
browser: true,
|
||||||
|
es2021: true,
|
||||||
|
},
|
||||||
|
parser:"espree",
|
||||||
|
parserOptions:{
|
||||||
|
sourceType: "module",
|
||||||
|
ecmaVersion: 2021,
|
||||||
|
},
|
||||||
|
extends:["eslint:recommended",],
|
||||||
|
rules:{
|
||||||
|
indent: ["warn", 4,],
|
||||||
|
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
|
||||||
|
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
|
||||||
|
"no-unused-vars": "warn",
|
||||||
|
semi: ["error", "always",], // 控制行尾部分号
|
||||||
|
quotes: ["error", "double",],
|
||||||
|
"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",
|
||||||
|
"space-before-function-paren": ["error", {
|
||||||
|
anonymous: "always",
|
||||||
|
named: "never",
|
||||||
|
asyncArrow: "always",
|
||||||
|
},],
|
||||||
|
},
|
||||||
|
overrides: [
|
||||||
|
{
|
||||||
|
files: ["*.vue",],
|
||||||
|
parser: "vue-eslint-parser",
|
||||||
|
parserOptions: {
|
||||||
|
ecmaVersion: 2021,
|
||||||
|
sourceType: "module",
|
||||||
|
parser: { // <script>标签中的lang属性配置不同的parser
|
||||||
|
ts: "@typescript-eslint/parser",
|
||||||
|
js: "espree",
|
||||||
|
"<template>": "espree",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
plugins: ["eslint-plugin-vue",],
|
||||||
|
extends: [
|
||||||
|
"plugin:vue/vue3-essential",
|
||||||
|
"plugin:vue/recommended",
|
||||||
|
"eslint:recommended",
|
||||||
|
"standard-with-typescript",
|
||||||
|
"plugin:@typescript-eslint/eslint-recommended",
|
||||||
|
"plugin:@typescript-eslint/recommended",
|
||||||
|
],
|
||||||
|
rules: {
|
||||||
|
indent: ["warn", 4,],
|
||||||
|
// "space-in-parens": ["error", "always", { exceptions: ["empty",], },],
|
||||||
|
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
|
||||||
|
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
|
||||||
|
"no-unused-vars": "warn",
|
||||||
|
semi: ["error", "always",], // 控制行尾部分号
|
||||||
|
quotes: ["error", "double",],
|
||||||
|
"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",
|
||||||
|
"space-before-function-paren": ["error", {
|
||||||
|
anonymous: "always",
|
||||||
|
named: "never",
|
||||||
|
asyncArrow: "always",
|
||||||
|
},],
|
||||||
|
// vue
|
||||||
|
"vue/html-indent": ["error", 4,],
|
||||||
|
// typescript
|
||||||
|
"@typescript-eslint/indent": ["warn", 4,],
|
||||||
|
"@typescript-eslint/no-extra-semi": "off",
|
||||||
|
"@typescript-eslint/no-inferrable-types": "off",
|
||||||
|
"@typescript-eslint/no-unused-vars": "warn",
|
||||||
|
"@typescript-eslint/ban-ts-comment": "warn",
|
||||||
|
"@typescript-eslint/member-delimiter-style": "off",
|
||||||
|
"@typescript-eslint/semi": ["error", "always",], // 控制行尾部分号
|
||||||
|
"@typescript-eslint/brace-style": ["error", "allman", { allowSingleLine: true, },],
|
||||||
|
"@typescript-eslint/comma-dangle": ["error", {
|
||||||
|
arrays: "always",
|
||||||
|
objects: "always",
|
||||||
|
imports: "never",
|
||||||
|
exports: "never",
|
||||||
|
functions: "never",
|
||||||
|
},], // 数组和对象键值对最后一个逗号
|
||||||
|
"@typescript-eslint/quotes": ["error", "double",],
|
||||||
|
"@typescript-eslint/space-before-function-paren": "off",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ["*.ts",],
|
||||||
|
parser: "@typescript-eslint/parser",
|
||||||
|
parserOptions: {
|
||||||
|
project: "./tsconfig.json",
|
||||||
|
},
|
||||||
|
plugins: ["@typescript-eslint",],
|
||||||
|
extends: [
|
||||||
|
"standard-with-typescript",
|
||||||
|
"eslint:recommended",
|
||||||
|
"plugin:@typescript-eslint/eslint-recommended",
|
||||||
|
"plugin:@typescript-eslint/recommended",
|
||||||
|
],
|
||||||
|
rules: {
|
||||||
|
"space-in-parens": ["error", "always", { exceptions: ["empty",], },],
|
||||||
|
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
|
||||||
|
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
|
||||||
|
"@typescript-eslint/indent": ["error", 4,],
|
||||||
|
"@typescript-eslint/no-extra-semi": "off",
|
||||||
|
"@typescript-eslint/no-inferrable-types": "off",
|
||||||
|
"@typescript-eslint/no-unused-vars": "warn",
|
||||||
|
"@typescript-eslint/ban-ts-comment": "warn",
|
||||||
|
"@typescript-eslint/member-delimiter-style": "off",
|
||||||
|
"@typescript-eslint/semi": ["error", "always",], // 控制行尾部分号
|
||||||
|
"@typescript-eslint/brace-style": ["error", "allman", { allowSingleLine: true, },],
|
||||||
|
"@typescript-eslint/comma-dangle": ["error", {
|
||||||
|
arrays: "always",
|
||||||
|
objects: "always",
|
||||||
|
imports: "never",
|
||||||
|
exports: "never",
|
||||||
|
functions: "never",
|
||||||
|
},], // 数组和对象键值对最后一个逗号
|
||||||
|
"@typescript-eslint/quotes": ["error", "double",],
|
||||||
|
"@typescript-eslint/space-before-function-paren": "off",
|
||||||
|
"@typescript-eslint/strict-boolean-expressions": ["error", {
|
||||||
|
allowString: false,
|
||||||
|
},],
|
||||||
|
"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等
|
||||||
|
"prefer-const": "warn",
|
||||||
|
"spaced-comment": "error",
|
||||||
|
"space-before-function-paren": "off",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
@@ -1,44 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Author: Kane
|
|
||||||
* @Date: 2022-12-14 15:12:46
|
|
||||||
* @LastEditors: Kane
|
|
||||||
* @LastEditTime: 2023-02-14 23:10:53
|
|
||||||
* @FilePath: /IT工具综合平台/.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',
|
|
||||||
"no-unused-vars": "warn",
|
|
||||||
"semi": ["error", "always",],//控制行尾部分号
|
|
||||||
"comma-dangle": ["warn", {
|
|
||||||
"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, },],
|
|
||||||
},
|
|
||||||
};
|
|
2
code/web/it-console/.npmrc
Normal file
2
code/web/it-console/.npmrc
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
registry=https://registry.npmjs.org/
|
||||||
|
proxy=http://127.0.0.1:7890/
|
@@ -1,5 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-02-23 00:15:23
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /it-console/babel.config.js
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
module.exports = {
|
module.exports = {
|
||||||
presets: [
|
presets: [
|
||||||
'@vue/cli-plugin-babel/preset'
|
"@vue/cli-plugin-babel/preset",
|
||||||
]
|
],
|
||||||
}
|
};
|
||||||
|
20
code/web/it-console/env.d.ts
vendored
Normal file
20
code/web/it-console/env.d.ts
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-03-03 10:07:00
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /task_schedule/env.d.ts
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
interface ImportMetaEnv
|
||||||
|
{
|
||||||
|
readonly VITE_APP_TITLE: string;
|
||||||
|
readonly VITE_URL_VALIDATE_ACCOUNT: string;
|
||||||
|
// 更多环境变量...
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ImportMeta
|
||||||
|
{
|
||||||
|
readonly env: ImportMetaEnv;
|
||||||
|
}
|
19819
code/web/it-console/package-lock.json
generated
19819
code/web/it-console/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -11,43 +11,47 @@
|
|||||||
"preview-vite": "vite preview"
|
"preview-vite": "vite preview"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@element-plus/icons-vue": "^1.1.4",
|
"@element-plus/icons-vue": "^2.1.0",
|
||||||
"@vitejs/plugin-vue": "^4.0.0",
|
"@typescript-eslint/eslint-plugin": "^5.57.1",
|
||||||
|
"@typescript-eslint/parser": "^5.57.1",
|
||||||
|
"@vitejs/plugin-vue": "^4.1.0",
|
||||||
"@wangeditor/editor": "^5.1.23",
|
"@wangeditor/editor": "^5.1.23",
|
||||||
"@wangeditor/editor-for-vue": "^5.1.12",
|
"@wangeditor/editor-for-vue": "^5.1.12",
|
||||||
"axios": "^1.2.1",
|
"axios": "^1.3.4",
|
||||||
"core-js": "^3.8.3",
|
"core-js": "^3.30.0",
|
||||||
"element-plus": "^2.2.26",
|
"element-plus": "^2.3.2",
|
||||||
"sass": "^1.56.2",
|
"sass": "^1.60.0",
|
||||||
"scss": "^0.2.4",
|
"scss": "^0.2.4",
|
||||||
"scss-loader": "^0.0.1",
|
"scss-loader": "^0.0.1",
|
||||||
"vite": "^4.1.4",
|
"vue": "^3.2.47",
|
||||||
"vue": "^3.2.13",
|
"vue-router": "^4.1.6",
|
||||||
"vue-router": "^4.0.3",
|
"vuex": "^4.1.0"
|
||||||
"vuex": "^4.0.0"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.12.16",
|
"@babel/core": "^7.21.4",
|
||||||
"@babel/eslint-parser": "^7.12.16",
|
"@babel/eslint-parser": "^7.21.3",
|
||||||
"@originjs/vite-plugin-commonjs": "^1.0.1",
|
"@originjs/vite-plugin-commonjs": "^1.0.3",
|
||||||
"@originjs/vite-plugin-require-context": "1.0.9",
|
"@originjs/vite-plugin-require-context": "1.0.9",
|
||||||
"@vitejs/plugin-vue": "^2.0.1",
|
"@vitejs/plugin-vue": "^4.1.0",
|
||||||
"@vitejs/plugin-vue-jsx": "^1.3.2",
|
"@vitejs/plugin-vue-jsx": "^3.0.1",
|
||||||
"@vue/cli-plugin-babel": "~5.0.0",
|
"@vue/cli-plugin-babel": "~5.0.8",
|
||||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
"@vue/cli-plugin-eslint": "~5.0.8",
|
||||||
"@vue/cli-plugin-router": "~5.0.0",
|
"@vue/cli-plugin-router": "~5.0.8",
|
||||||
"@vue/cli-plugin-vuex": "~5.0.0",
|
"@vue/cli-plugin-vuex": "~5.0.8",
|
||||||
"@vue/cli-service": "~5.0.0",
|
"@vue/cli-service": "~5.0.8",
|
||||||
"@vue/compiler-sfc": "^3.2.26",
|
"@vue/compiler-sfc": "^3.2.47",
|
||||||
"eslint": "^7.32.0",
|
"eslint": "^8.37.0",
|
||||||
"eslint-plugin-vue": "^8.0.3",
|
"eslint-config-recommended": "^4.1.0",
|
||||||
|
"eslint-config-standard-with-typescript": "^34.0.1",
|
||||||
|
"eslint-plugin-vue": "^9.10.0",
|
||||||
"node-sass": "^8.0.0",
|
"node-sass": "^8.0.0",
|
||||||
"sass-loader": "^13.2.0",
|
"sass": "^1.60.0",
|
||||||
"vite": "^2.7.2",
|
"sass-loader": "^13.2.2",
|
||||||
|
"vite": "^4.2.1",
|
||||||
"vite-plugin-env-compatible": "^1.1.1",
|
"vite-plugin-env-compatible": "^1.1.1",
|
||||||
"vite-plugin-html": "3.2.0",
|
"vite-plugin-html": "3.2.0",
|
||||||
"vue-cli-plugin-element-plus": "~0.0.13",
|
"vue-cli-plugin-element-plus": "~0.0.13",
|
||||||
"webpack": "^5.75.0",
|
"webpack": "^5.77.0",
|
||||||
"webpack-cli": "^5.0.1"
|
"webpack-cli": "^5.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
15
code/web/it-console/shims-vue.d.ts
vendored
Normal file
15
code/web/it-console/shims-vue.d.ts
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-03-04 17:23:02
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /it-console/shims-vue.d.ts
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
declare module "*.vue"
|
||||||
|
{
|
||||||
|
import { type ComponentOptions } from "vue";
|
||||||
|
const componentOptions: ComponentOptions;
|
||||||
|
export default componentOptions;
|
||||||
|
}
|
@@ -2,33 +2,33 @@
|
|||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2022-12-14 15:12:46
|
* @Date: 2022-12-14 15:12:46
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-02-15 09:34:25
|
* @LastEditTime: 2023-03-21 23:49:05
|
||||||
* @FilePath: /IT工具综合平台/src/App.vue
|
* @FilePath: /it-console/src/App.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<el-config-provider :locale="this.locale">
|
<el-config-provider :locale="locale">
|
||||||
<router-view></router-view>
|
<router-view />
|
||||||
</el-config-provider>
|
</el-config-provider>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="ts">
|
||||||
//引入语言组件
|
// 引入语言组件
|
||||||
import zhCn from "element-plus/lib/locale/lang/zh-cn";
|
import zhCn from "element-plus/lib/locale/lang/zh-cn";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "App",
|
name: "App",
|
||||||
setup()
|
components: {
|
||||||
{
|
|
||||||
const locale = zhCn;
|
|
||||||
|
|
||||||
return { locale, };
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
// HelloWorld,
|
// HelloWorld,
|
||||||
},
|
},
|
||||||
|
setup()
|
||||||
|
{
|
||||||
|
const locale = zhCn;
|
||||||
|
|
||||||
|
return { locale, };
|
||||||
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@@ -4,24 +4,24 @@
|
|||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-02-22 17:10:18
|
* @LastEditTime: 2023-02-22 17:10:18
|
||||||
* @FilePath: /IT工具综合平台/src/components/svg/SvgIcon.vue
|
* @FilePath: /IT工具综合平台/src/components/svg/SvgIcon.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
svg-icon:{{ this.iconName }}
|
svg-icon:{{ iconName }}
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: "svg-icon",
|
name: "SvgIcon",
|
||||||
|
props: ["icon",],
|
||||||
data()
|
data()
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
iconName: "",
|
iconName: "",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
props: ["icon",],
|
|
||||||
created()
|
created()
|
||||||
{
|
{
|
||||||
console.log("svg");
|
console.log("svg");
|
||||||
@@ -31,4 +31,4 @@ export default {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped></style>
|
<style scoped></style>
|
||||||
|
@@ -4,24 +4,31 @@
|
|||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-02-06 09:26:48
|
* @LastEditTime: 2023-02-06 09:26:48
|
||||||
* @FilePath: /IT工具综合平台/src/layout/Index.vue
|
* @FilePath: /IT工具综合平台/src/layout/Index.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<el-container id="layout-container" v-loading="ui.ageVisible" element-loading-text="载入应用数据…">
|
<el-container
|
||||||
<el-header id="layout-header">
|
id="layout-container"
|
||||||
<LayoutHeader />
|
v-loading="ui.ageVisible"
|
||||||
</el-header>
|
element-loading-text="载入应用数据…"
|
||||||
<el-container id="layout-container-down">
|
>
|
||||||
<el-aside :width="asideWidth" id="layout-aside">
|
<el-header id="layout-header">
|
||||||
<LayoutAside />
|
<LayoutHeader />
|
||||||
</el-aside>
|
</el-header>
|
||||||
<el-main id="layout-main">
|
<el-container id="layout-container-down">
|
||||||
<LayoutMain />
|
<el-aside
|
||||||
</el-main>
|
id="layout-aside"
|
||||||
|
:width="asideWidth"
|
||||||
|
>
|
||||||
|
<LayoutAside />
|
||||||
|
</el-aside>
|
||||||
|
<el-main id="layout-main">
|
||||||
|
<LayoutMain />
|
||||||
|
</el-main>
|
||||||
|
</el-container>
|
||||||
</el-container>
|
</el-container>
|
||||||
</el-container>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -33,50 +40,50 @@ import { onMounted, computed, reactive } from "vue";
|
|||||||
// import { query_requirement_status } from "@/utils/api/requirement/requirement.js";
|
// import { query_requirement_status } from "@/utils/api/requirement/requirement.js";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "layoutPage",
|
name: "LayoutPage",
|
||||||
setup()
|
components: {
|
||||||
{
|
LayoutAside,
|
||||||
const store = useStore();
|
LayoutHeader,
|
||||||
|
LayoutMain,
|
||||||
const ui = reactive(
|
},
|
||||||
{
|
setup()
|
||||||
pageVisible: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
const asideWidth = computed(() =>
|
|
||||||
{
|
{
|
||||||
const collapse = store.state.app.asideBarCollapse;
|
const store = useStore();
|
||||||
|
|
||||||
return collapse === true ? "65px" : "180px";
|
const ui = reactive(
|
||||||
});
|
{
|
||||||
|
pageVisible: true,
|
||||||
|
});
|
||||||
|
|
||||||
onMounted(() =>
|
const asideWidth = computed(() =>
|
||||||
{
|
{
|
||||||
//加载数据
|
const collapse = store.state.app.asideBarCollapse;
|
||||||
// query_requirement_status()
|
|
||||||
// .then((response) =>
|
|
||||||
// {
|
|
||||||
// // debugger;
|
|
||||||
// const data = response.data;
|
|
||||||
// console.log(data);
|
|
||||||
// })
|
|
||||||
// .catch((error) =>
|
|
||||||
// {
|
|
||||||
// // debugger;
|
|
||||||
// console.log(error);
|
|
||||||
// });
|
|
||||||
});
|
|
||||||
|
|
||||||
return {
|
return collapse === true ? "65px" : "180px";
|
||||||
ui,
|
});
|
||||||
asideWidth,
|
|
||||||
};
|
onMounted(() =>
|
||||||
},
|
{
|
||||||
components: {
|
// 加载数据
|
||||||
LayoutAside,
|
// query_requirement_status()
|
||||||
LayoutHeader,
|
// .then((response) =>
|
||||||
LayoutMain,
|
// {
|
||||||
},
|
// // debugger;
|
||||||
|
// const data = response.data;
|
||||||
|
// console.log(data);
|
||||||
|
// })
|
||||||
|
// .catch((error) =>
|
||||||
|
// {
|
||||||
|
// // debugger;
|
||||||
|
// console.log(error);
|
||||||
|
// });
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
ui,
|
||||||
|
asideWidth,
|
||||||
|
};
|
||||||
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -115,4 +122,4 @@ export default {
|
|||||||
/* flex-grow: 1; */
|
/* flex-grow: 1; */
|
||||||
/* overflow: overlay; */
|
/* overflow: overlay; */
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@@ -2,39 +2,75 @@
|
|||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2023-01-04 11:30:33
|
* @Date: 2023-01-04 11:30:33
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-02-06 09:28:16
|
* @LastEditTime: 2023-03-27 14:45:35
|
||||||
* @FilePath: /IT工具综合平台/src/layout/components/Aside.vue
|
* @FilePath: /it-console/src/layout/components/Aside.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved. 223142 2f4156
|
* Copyright (c) ${2022} by Kane, All Rights Reserved. 223142 2f4156
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<el-scrollbar class="wrapper">
|
<el-scrollbar class="wrapper">
|
||||||
<el-menu id="side-bar" router :default-active="currentPath" background-color="#2f4156" text-color="#fff"
|
<el-menu
|
||||||
active-text-color="#ffd04b" :collapse="asideCollapse">
|
id="side-bar"
|
||||||
<template v-for="route in routes" :key="route.path">
|
router
|
||||||
|
:default-active="currentPath"
|
||||||
|
background-color="#2f4156"
|
||||||
|
text-color="#fff"
|
||||||
|
active-text-color="#ffd04b"
|
||||||
|
:collapse="asideCollapse"
|
||||||
|
>
|
||||||
|
<template
|
||||||
|
v-for="route in routes"
|
||||||
|
>
|
||||||
<template v-if="!route.hidden">
|
<template v-if="!route.hidden">
|
||||||
<template v-if="hasOnlyChild(route.children)">
|
<template v-if="hasOnlyChild(route.children)">
|
||||||
<!-- 当只有一个子路由时,直接渲染子路由 -->
|
<!-- 当只有一个子路由时,直接渲染子路由 -->
|
||||||
<el-menu-item :index="route.children[0].path" class="sidebar-submenu">
|
<el-menu-item
|
||||||
<component :is="route.children[0].meta.icon" class="icons">
|
:key="route.path"
|
||||||
</component>
|
:index="route.children[0].path"
|
||||||
|
class="sidebar-submenu"
|
||||||
|
>
|
||||||
|
<component
|
||||||
|
:is="route.children[0].meta.icon"
|
||||||
|
class="icons"
|
||||||
|
/>
|
||||||
<!-- <el-icon v-html="route.children[0].meta && route.children[0].meta.icon"></el-icon> -->
|
<!-- <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>
|
<template #title>
|
||||||
|
{{ route.children[0].meta && route.children[0].meta.title }}
|
||||||
|
</template>
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<!-- 不是一个子路由时,有可能没有子路由,或者是多个子路由 -->
|
<!-- 不是一个子路由时,有可能没有子路由,或者是多个子路由 -->
|
||||||
<el-sub-menu v-if="route.children && route.children.length" :index="route.path"
|
<el-sub-menu
|
||||||
class="sidebar-submenu">
|
v-if="route.children && route.children.length"
|
||||||
|
:key="route.path"
|
||||||
|
:index="route.path"
|
||||||
|
class="sidebar-submenu"
|
||||||
|
>
|
||||||
<template #title>
|
<template #title>
|
||||||
<component :is="route.meta.icon" class="icons"></component>
|
<component
|
||||||
|
:is="route.meta.icon"
|
||||||
|
class="icons"
|
||||||
|
/>
|
||||||
<span>{{ route.meta && route.meta.title }}</span>
|
<span>{{ route.meta && route.meta.title }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template v-for="child in route.children" :key="child.path">
|
<template
|
||||||
<el-menu-item v-if="!child.hidden" :index="child.path" class="sidebar-item">
|
v-for="child in route.children"
|
||||||
<component :is="child.meta.icon" class="icons"></component>
|
>
|
||||||
<template #title>{{ child.meta && child.meta.title }}</template>
|
<el-menu-item
|
||||||
|
v-if="!child.hidden"
|
||||||
|
:key="child.path"
|
||||||
|
:index="child.path"
|
||||||
|
class="sidebar-item"
|
||||||
|
>
|
||||||
|
<component
|
||||||
|
:is="child.meta.icon"
|
||||||
|
class="icons"
|
||||||
|
/>
|
||||||
|
<template #title>
|
||||||
|
{{ child.meta && child.meta.title }}
|
||||||
|
</template>
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
</template>
|
</template>
|
||||||
</el-sub-menu>
|
</el-sub-menu>
|
||||||
@@ -54,23 +90,23 @@ export default {
|
|||||||
name: "LayoutAside",
|
name: "LayoutAside",
|
||||||
setup()
|
setup()
|
||||||
{
|
{
|
||||||
const router = useRouter();//路由
|
const router = useRouter();// 路由
|
||||||
const routes = router.getRoutes();//路由数组
|
const routes = router.getRoutes();// 路由数组
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
|
|
||||||
//用于判断一个路由是否只有一项子路由
|
// 用于判断一个路由是否只有一项子路由
|
||||||
const hasOnlyChild = (children) =>
|
const hasOnlyChild = (children) =>
|
||||||
{
|
{
|
||||||
//防御验证
|
// 防御验证
|
||||||
if (!children)
|
if (!children)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//剔除掉hidden的路由
|
// 剔除掉hidden的路由
|
||||||
const routes = children.filter((item) =>
|
const routes = children.filter((item) =>
|
||||||
{
|
{
|
||||||
return item.hidden ? false : true;
|
return !item.hidden;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (routes.length === 1)
|
if (routes.length === 1)
|
||||||
@@ -81,16 +117,16 @@ export default {
|
|||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
//计算变量
|
// 计算变量
|
||||||
//获取当前的路由
|
// 获取当前的路由
|
||||||
const currentPath = computed(() =>
|
const currentPath = computed(() =>
|
||||||
{
|
{
|
||||||
let path = useRoute().path;
|
const path = useRoute().path;
|
||||||
|
|
||||||
return path;
|
return path;
|
||||||
});
|
});
|
||||||
|
|
||||||
//获取导航栏是否折叠的标志
|
// 获取导航栏是否折叠的标志
|
||||||
const asideCollapse = computed(() =>
|
const asideCollapse = computed(() =>
|
||||||
{
|
{
|
||||||
return store.state.app.ui.asideBarCollapse;
|
return store.state.app.ui.asideBarCollapse;
|
||||||
@@ -134,10 +170,10 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 顺序必须在上面两个之后*/
|
/* 顺序必须在上面两个之后*/
|
||||||
.is-active {
|
.el-menu-item.is-active {
|
||||||
background-color: #ffffff4f !important;
|
background-color: #ffffff4f !important;
|
||||||
/* font-weight: 1000; */
|
font-weight: 1000;
|
||||||
/* font-size: 15px; */
|
font-size: 15px;
|
||||||
color: #ffd04b;
|
color: #ffd04b;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -163,4 +199,4 @@ export default {
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
/* min-height: 400px; */
|
/* min-height: 400px; */
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@@ -4,54 +4,57 @@
|
|||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-02-04 01:09:49
|
* @LastEditTime: 2023-02-04 01:09:49
|
||||||
* @FilePath: \IT工具综合平台\src\layout\components\Header.vue
|
* @FilePath: \IT工具综合平台\src\layout\components\Header.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div class="app_banner no_select">
|
<div class="app_banner no_select">
|
||||||
<span class="company_name">CPIC</span>
|
<span class="company_name">CPIC</span>
|
||||||
<div class="version_div">
|
<div class="version_div">
|
||||||
<div>测试版</div>
|
<div>测试版</div>
|
||||||
<div>3.6.7 x64 Build 202208301257</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>
|
</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>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
//import { ElMessage } from "element-plus";
|
// import { ElMessage } from "element-plus";
|
||||||
import { Logout } from "../../utils/api/info/account";
|
import { Logout } from "../../utils/api/info/account";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "AppBanner",
|
name: "AppBanner",
|
||||||
data()
|
data()
|
||||||
{
|
|
||||||
return {};
|
|
||||||
},
|
|
||||||
// created() {
|
|
||||||
// console.log("banner请求数据!");
|
|
||||||
// },
|
|
||||||
mounted()
|
|
||||||
{
|
|
||||||
//console.log("banner请求数据!");
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
logout()
|
|
||||||
{
|
{
|
||||||
this.$confirm("是否退出系统?", "请确认", {
|
return {};
|
||||||
confirmButtonText: "是",
|
},
|
||||||
cancelButtonText: "否",
|
// created() {
|
||||||
type: "warning",
|
// console.log("banner请求数据!");
|
||||||
}).then(() =>
|
// },
|
||||||
{
|
mounted()
|
||||||
Logout();
|
{
|
||||||
});
|
// console.log("banner请求数据!");
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
logout()
|
||||||
|
{
|
||||||
|
this.$confirm("是否退出系统?", "请确认", {
|
||||||
|
confirmButtonText: "是",
|
||||||
|
cancelButtonText: "否",
|
||||||
|
type: "warning",
|
||||||
|
}).then(() =>
|
||||||
|
{
|
||||||
|
Logout();
|
||||||
|
});
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<style scoped>
|
<style scoped>
|
||||||
@@ -96,4 +99,4 @@ export default {
|
|||||||
padding-top: 5px;
|
padding-top: 5px;
|
||||||
/* border: 1px solid salmon; */
|
/* border: 1px solid salmon; */
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@@ -2,24 +2,27 @@
|
|||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2023-01-04 11:39:04
|
* @Date: 2023-01-04 11:39:04
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-02-22 18:33:11
|
* @LastEditTime: 2023-03-21 23:19:06
|
||||||
* @FilePath: /IT工具综合平台/src/layout/components/Header.vue
|
* @FilePath: /it-console/src/layout/components/Header.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div class="app_banner no_select">
|
<div class="app_banner no_select">
|
||||||
<span class="company_name">CPIC</span>
|
<span class="company_name">CPIC</span>
|
||||||
<div class="version_div">
|
<div class="version_div">
|
||||||
<div>测试版</div>
|
<div>测试版</div>
|
||||||
<div>3.6.7 x64 Build 202208301257</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>
|
</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>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -27,23 +30,23 @@ import { ElMessageBox } from "element-plus";
|
|||||||
import { Logout } from "../../utils/api/info/account";
|
import { Logout } from "../../utils/api/info/account";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "AppBanner",
|
name: "AppBanner",
|
||||||
setup()
|
setup()
|
||||||
{
|
|
||||||
const logout = () =>
|
|
||||||
{
|
{
|
||||||
ElMessageBox.confirm("是否退出系统?", "请确认", {
|
const logout = () =>
|
||||||
confirmButtonText: "是",
|
{
|
||||||
cancelButtonText: "否",
|
ElMessageBox.confirm("是否退出系统?", "请确认", {
|
||||||
type: "warning",
|
confirmButtonText: "是",
|
||||||
}).then(() =>
|
cancelButtonText: "否",
|
||||||
{
|
type: "warning",
|
||||||
Logout();
|
}).then(() =>
|
||||||
});
|
{
|
||||||
};
|
Logout();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
return { logout, };
|
return { logout, };
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<style scoped>
|
<style scoped>
|
||||||
@@ -88,4 +91,4 @@ export default {
|
|||||||
padding-top: 5px;
|
padding-top: 5px;
|
||||||
/* border: 1px solid salmon; */
|
/* border: 1px solid salmon; */
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@@ -2,11 +2,11 @@
|
|||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2023-01-04 11:40:03
|
* @Date: 2023-01-04 11:40:03
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-02-07 10:47:57
|
* @LastEditTime: 2023-03-21 23:19:27
|
||||||
* @FilePath: /IT工具综合平台/src/layout/components/Main.vue
|
* @FilePath: /it-console/src/layout/components/Main.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<!-- <div class="main-content"> -->
|
<!-- <div class="main-content"> -->
|
||||||
@@ -33,4 +33,4 @@ export default {
|
|||||||
.view-wrapper {
|
.view-wrapper {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@@ -2,19 +2,19 @@
|
|||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2022-12-14 15:12:46
|
* @Date: 2022-12-14 15:12:46
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-02-17 13:11:43
|
* @LastEditTime: 2023-03-21 23:48:46
|
||||||
* @FilePath: /IT工具综合平台/src/main.js
|
* @FilePath: /it-console/src/main.js
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
*/
|
*/
|
||||||
import { createApp } from 'vue';
|
import { createApp } from "vue";
|
||||||
import App from './App.vue';
|
import App from "./App.vue";
|
||||||
|
|
||||||
//路由
|
//路由
|
||||||
import router from './router';
|
import router from "./router";
|
||||||
//vuex
|
//vuex
|
||||||
import store from './store';
|
import store from "./store";
|
||||||
//引入全局函数
|
//引入全局函数
|
||||||
import global from "@/utils/global";
|
import global from "@/utils/global";
|
||||||
|
|
||||||
@@ -40,4 +40,4 @@ app.use(ElementPlus);
|
|||||||
app.use(store);
|
app.use(store);
|
||||||
app.use(router);
|
app.use(router);
|
||||||
app.use(global);
|
app.use(global);
|
||||||
app.mount('#app');
|
app.mount("#app");
|
@@ -2,214 +2,214 @@
|
|||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2022-12-14 15:12:46
|
* @Date: 2022-12-14 15:12:46
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-02-21 13:09:15
|
* @LastEditTime: 2023-03-21 23:20:10
|
||||||
* @FilePath: /IT工具综合平台/src/router/index.js
|
* @FilePath: /it-console/src/router/index.js
|
||||||
* @Description: 定义应用路由配置
|
* @Description: 定义应用路由配置
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
*/
|
*/
|
||||||
import { createRouter, createWebHashHistory } from 'vue-router';
|
import { createRouter, createWebHashHistory } from "vue-router";
|
||||||
|
|
||||||
const routes = [
|
const routes = [
|
||||||
//框架路由
|
//框架路由
|
||||||
{
|
{
|
||||||
path: "/",
|
path: "/",
|
||||||
name: "Root",
|
name: "Root",
|
||||||
redirect: "Login", //默认路由指向登录页面
|
redirect: "Login", //默认路由指向登录页面
|
||||||
hidden: true,
|
hidden: true,
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "/error-page",
|
|
||||||
name: "ErrorPage",
|
|
||||||
hidden: true,
|
|
||||||
component: () => import("@/views/ErrorPage.vue"),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
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: "/error-page",
|
||||||
//侧边导航栏路由
|
name: "ErrorPage",
|
||||||
{ //首页
|
hidden: true,
|
||||||
path: "/console",
|
component: () => import("@/views/ErrorPage.vue"),
|
||||||
name: "Console",
|
|
||||||
meta: {
|
|
||||||
title: "总览",
|
|
||||||
icon: "house",
|
|
||||||
},
|
},
|
||||||
component: () => import("../layout/Index.vue"),
|
{
|
||||||
children: [
|
path: "/login",
|
||||||
{
|
name: "Login",
|
||||||
path: "/desktop",
|
component: () => import("../views/account/Login.vue"),
|
||||||
name: "DeskTop",
|
hidden: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/home",
|
||||||
|
name: "Home",
|
||||||
|
hidden: true,
|
||||||
meta: {
|
meta: {
|
||||||
title: "工作台",
|
title: "控制台",
|
||||||
icon: "house",
|
|
||||||
},
|
},
|
||||||
component: () => import("../views/overview/Desktop.vue"),
|
component: () => import("../layout/Index.vue"),
|
||||||
},
|
},
|
||||||
],
|
//侧边导航栏路由
|
||||||
},
|
{ //首页
|
||||||
{
|
path: "/console",
|
||||||
|
name: "Console",
|
||||||
|
meta: {
|
||||||
|
title: "总览",
|
||||||
|
icon: "house",
|
||||||
|
},
|
||||||
|
component: () => import("../layout/Index.vue"),
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "/desktop",
|
||||||
|
name: "DeskTop",
|
||||||
|
meta: {
|
||||||
|
title: "工作台",
|
||||||
|
icon: "house",
|
||||||
|
},
|
||||||
|
component: () => import("../views/overview/Desktop.vue"),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
//需求管理
|
//需求管理
|
||||||
path: "/requirement",
|
path: "/requirement",
|
||||||
name: "Requirement",
|
name: "Requirement",
|
||||||
meta: {
|
meta: {
|
||||||
title: "需求管理",
|
title: "需求管理",
|
||||||
icon: "Document",
|
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"),
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
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: "/query_info",
|
path: "/query_info",
|
||||||
name: "QueryInfo",
|
name: "QueryInfo",
|
||||||
meta: {
|
meta: {
|
||||||
title: "信息查询",
|
title: "信息查询",
|
||||||
icon: "search",
|
icon: "search",
|
||||||
|
},
|
||||||
|
component: () => import("@/layout/Index.vue"),
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "/query_stuff",
|
||||||
|
name: "QueryStuff",
|
||||||
|
meta: {
|
||||||
|
title: "人员信息",
|
||||||
|
icon: "user",
|
||||||
|
},
|
||||||
|
component: () => import("@/views/info/StaffInfo.vue"),
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
component: () => import("@/layout/Index.vue"),
|
{//权限管理
|
||||||
children: [
|
path: "/privilege",
|
||||||
{
|
name: "Privilege",
|
||||||
path: "/query_stuff",
|
|
||||||
name: "QueryStuff",
|
|
||||||
meta: {
|
meta: {
|
||||||
title: "人员信息",
|
title: "权限管理",
|
||||||
icon: "user",
|
icon: "User",
|
||||||
},
|
},
|
||||||
component: () => import("@/views/info/StaffInfo.vue"),
|
children: [
|
||||||
},
|
{
|
||||||
],
|
path: "/user-manager",
|
||||||
},
|
name: "UserManager",
|
||||||
{//权限管理
|
meta: {
|
||||||
path: "/privilege",
|
title: "用户管理",
|
||||||
name: "Privilege",
|
icon: "User",
|
||||||
meta: {
|
},
|
||||||
title: "权限管理",
|
component: () => import("../views/privilege/StaffInfo.vue"),
|
||||||
icon: "User",
|
},
|
||||||
|
{
|
||||||
|
path: "/privilege-manager",
|
||||||
|
name: "PrivilegeManager",
|
||||||
|
meta: {
|
||||||
|
title: "权限管理",
|
||||||
|
icon: "edit",
|
||||||
|
},
|
||||||
|
component: () => import("../views/privilege/PrivilegeManager.vue"),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
component: () => import("../layout/Index.vue"),
|
||||||
},
|
},
|
||||||
children: [
|
{
|
||||||
{
|
path: "/network",
|
||||||
path: "/user-manager",
|
name: "NetworkManager",
|
||||||
name: "UserManager",
|
|
||||||
meta: {
|
meta: {
|
||||||
title: "用户管理",
|
title: "网络管理",
|
||||||
icon: "User",
|
icon: "switch",
|
||||||
},
|
},
|
||||||
component: () => import("../views/privilege/StaffInfo.vue"),
|
component: () => import("../layout/Index.vue"),
|
||||||
},
|
children: [
|
||||||
{
|
{
|
||||||
path: "/privilege-manager",
|
path: "/network-point-manager",
|
||||||
name: "PrivilegeManager",
|
name: "NetworkPointManager",
|
||||||
meta: {
|
meta: {
|
||||||
title: "权限管理",
|
title: "网络点管理",
|
||||||
icon: "edit",
|
icon: "Monitor",
|
||||||
},
|
},
|
||||||
component: () => import("../views/privilege/PrivilegeManager.vue"),
|
component: () => import("../views/network/NetworkPoint/NetworkPoint.vue"),
|
||||||
},
|
},
|
||||||
],
|
{
|
||||||
component: () => import("../layout/Index.vue"),
|
path: "/network-point-edit",
|
||||||
},
|
name: "NetworkPointEdit",
|
||||||
{
|
hidden: true,
|
||||||
path: "/network",
|
component: () => import("../views/network/NetworkPoint/EditNetworkPoint.vue"),
|
||||||
name: "NetworkManager",
|
},
|
||||||
meta: {
|
{
|
||||||
title: "网络管理",
|
path: "/switch-manager",
|
||||||
icon: "switch",
|
name: "SwitchManager",
|
||||||
|
meta: {
|
||||||
|
title: "交换机管理",
|
||||||
|
icon: "switch",
|
||||||
|
},
|
||||||
|
component: () => import("../views/network/switch/SwitchManager.vue"),
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
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({
|
const router = createRouter({
|
||||||
history: createWebHashHistory(),
|
history: createWebHashHistory(),
|
||||||
routes,
|
routes,
|
||||||
});
|
});
|
||||||
|
|
||||||
//前置路由守卫
|
//前置路由守卫
|
||||||
router.beforeEach((to) =>
|
router.beforeEach((to) =>
|
||||||
{
|
{
|
||||||
const token = window.localStorage.getItem("token");
|
const token = window.localStorage.getItem("token");
|
||||||
|
|
||||||
//先检查token
|
//先检查token
|
||||||
if (!token)
|
if (!token)
|
||||||
{
|
{
|
||||||
//如果token不存在,判断路由是否走向login,如果不是则指向login
|
//如果token不存在,判断路由是否走向login,如果不是则指向login
|
||||||
//走向login则不干预
|
//走向login则不干预
|
||||||
if (to.name !== "Login")
|
if (to.name !== "Login")
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
name: "Login",
|
name: "Login",
|
||||||
};
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
//修改默认打开的页面,跳向工作台
|
//修改默认打开的页面,跳向工作台
|
||||||
// if (to.name === "Home")
|
// if (to.name === "Home")
|
||||||
// {
|
// {
|
||||||
// console.log("跳向工作台");
|
// console.log("跳向工作台");
|
||||||
|
|
||||||
// return {
|
// return {
|
||||||
// name: "DeskTop",
|
// name: "DeskTop",
|
||||||
// };
|
// };
|
||||||
// }
|
// }
|
||||||
});
|
});
|
||||||
|
|
||||||
export default router;
|
export default router;
|
||||||
|
@@ -8,15 +8,15 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
*/
|
*/
|
||||||
import { createStore } from 'vuex';
|
import { createStore } from "vuex";
|
||||||
import app from "./modules/app";
|
import app from "./modules/app";
|
||||||
import requirement from "./modules/requirement";
|
import requirement from "./modules/requirement";
|
||||||
|
|
||||||
const store = createStore({
|
const store = createStore({
|
||||||
modules: {
|
modules: {
|
||||||
app,
|
app,
|
||||||
requirement,
|
requirement,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export default store;
|
export default store;
|
@@ -10,7 +10,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
const state = {
|
const state = {
|
||||||
status: {},//包含全部需求状态的数组
|
status: {}, //包含全部需求状态的数组
|
||||||
status_update_time: new Date(),
|
status_update_time: new Date(),
|
||||||
ui: {
|
ui: {
|
||||||
selected_status: [], //已选择的需求状态
|
selected_status: [], //已选择的需求状态
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
//常量
|
//常量
|
||||||
const REQUIREMRNT_UI = `requirement_ui`;
|
const REQUIREMRNT_UI = "requirement_ui";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 从localStorage中读取 REQUIREMRNT_UI 的值,并转换成对象。
|
* 从localStorage中读取 REQUIREMRNT_UI 的值,并转换成对象。
|
||||||
|
@@ -18,7 +18,7 @@ import router from "@/router/index";
|
|||||||
* @param store 保存在vuex中需求相关的对象
|
* @param store 保存在vuex中需求相关的对象
|
||||||
* @param {string} error_page_name 提示错误页面的路径
|
* @param {string} error_page_name 提示错误页面的路径
|
||||||
*****************************************************/
|
*****************************************************/
|
||||||
function query_requirement_ui(requirement_store, error_page_name)
|
function queryRequirementUI(requirement_store, error_page_name)
|
||||||
{
|
{
|
||||||
//发送请求
|
//发送请求
|
||||||
instance.request(
|
instance.request(
|
||||||
@@ -48,4 +48,4 @@ function query_requirement_ui(requirement_store, error_page_name)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export { query_requirement_ui };
|
export { queryRequirementUI };
|
@@ -2,16 +2,16 @@
|
|||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2023-02-04 22:28:13
|
* @Date: 2023-02-04 22:28:13
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-02-04 23:36:48
|
* @LastEditTime: 2023-03-21 23:41:55
|
||||||
* @FilePath: /IT工具综合平台/src/views/ErrorPage.vue
|
* @FilePath: /it-console/src/views/ErrorPage.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<el-scrollbar style="height:100vh;width:100vw;">
|
<el-scrollbar style="height:100vh;width:100vw;">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img src="../assets/skull.png" />
|
<img src="../assets/skull.png">
|
||||||
<span>妖秀啊</span>
|
<span>妖秀啊</span>
|
||||||
</div>
|
</div>
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
@@ -22,7 +22,7 @@ export default {
|
|||||||
name: "ErrorPage",
|
name: "ErrorPage",
|
||||||
setup()
|
setup()
|
||||||
{
|
{
|
||||||
|
return {};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
@@ -56,4 +56,4 @@ export default {
|
|||||||
font-family: "rgaqsay";
|
font-family: "rgaqsay";
|
||||||
src: url("../assets/fonts/FZSJ-RUGAQSAY.TTF");
|
src: url("../assets/fonts/FZSJ-RUGAQSAY.TTF");
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@@ -3,54 +3,84 @@
|
|||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2022-12-14 15:23:54
|
* @Date: 2022-12-14 15:23:54
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-02-07 10:46:48
|
* @LastEditTime: 2023-03-27 15:28:21
|
||||||
* @FilePath: /IT工具综合平台/src/views/account/Login.vue
|
* @FilePath: /it-console/src/views/account/Login.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div id="login">
|
<div id="login">
|
||||||
<div class="form-wrapper">
|
<div class="form-wrapper">
|
||||||
<ul class="menu-tab">
|
<ul class="menu-tab">
|
||||||
<li :class="{ 'current': ui.current_menu === item.type }" @click="onToggleMenu(item.type)"
|
<li
|
||||||
v-for="item in tab_menu" :key="item.type">{{ item.label }}
|
v-for="item in tabMenu"
|
||||||
</li>
|
:key="item.type"
|
||||||
</ul>
|
:class="{ 'current': ui.current_menu === item.type }"
|
||||||
<!-- <el-form ref="form" :model="form"> -->
|
@click="onToggleMenu(item.type)"
|
||||||
<el-form ref="form">
|
>
|
||||||
<el-form-item>
|
{{ item.label }}
|
||||||
<label class="form-label">用户名</label>
|
</li>
|
||||||
<el-input type="text" v-model.lazy.trim="loginForm.username"></el-input>
|
</ul>
|
||||||
</el-form-item>
|
<!-- <el-form ref="form" :model="form"> -->
|
||||||
<el-form-item>
|
<el-form ref="form">
|
||||||
<label class="form-label">密码</label>
|
<el-form-item>
|
||||||
<el-input type="password" v-model.lazy.trim="loginForm.password"></el-input>
|
<label class="form-label">用户名</label>
|
||||||
</el-form-item>
|
<el-input
|
||||||
<el-form-item v-show="ui.current_menu === tab_menu[1].type">
|
v-model.lazy.trim="loginForm.username"
|
||||||
<label class="form-label">确认密码</label>
|
type="text"
|
||||||
<el-input type="password" disabled v-model.lazy.trim="loginForm.confirm_password"></el-input>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<label class="form-label">验证码</label>
|
<label class="form-label">密码</label>
|
||||||
<el-row :gutter="10">
|
<el-input
|
||||||
<el-col :span="14">
|
v-model.lazy.trim="loginForm.password"
|
||||||
<el-input type="text" disabled></el-input>
|
type="password"
|
||||||
</el-col>
|
/>
|
||||||
<el-col :span="10">
|
</el-form-item>
|
||||||
<el-button type="danger" disabled class="el-button-block" @click="getValidateCode()">获取验证码</el-button>
|
<el-form-item v-show="ui.current_menu === tabMenu[1].type">
|
||||||
</el-col>
|
<label class="form-label">确认密码</label>
|
||||||
</el-row>
|
<el-input
|
||||||
</el-form-item>
|
v-model.lazy.trim="loginForm.confirm_password"
|
||||||
<el-form-item>
|
type="password"
|
||||||
<el-button type="primary" class="el-button-block" @click="login" :disabled="ui.submit_btn_disable"
|
disabled
|
||||||
:loading="ui.submit_btn_loading">
|
/>
|
||||||
{{ ui.current_menu === "login" ? "登录" : "注册" }}
|
</el-form-item>
|
||||||
</el-button>
|
<el-form-item>
|
||||||
</el-form-item>
|
<label class="form-label">验证码</label>
|
||||||
</el-form>
|
<el-row :gutter="10">
|
||||||
|
<el-col :span="14">
|
||||||
|
<el-input
|
||||||
|
type="text"
|
||||||
|
disabled
|
||||||
|
/>
|
||||||
|
</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"
|
||||||
|
:disabled="ui.submit_btn_disable"
|
||||||
|
:loading="ui.submit_btn_loading"
|
||||||
|
@click="login"
|
||||||
|
>
|
||||||
|
{{ ui.current_menu === "login" ? "登录" : "注册" }}
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -60,168 +90,167 @@ import { useRouter } from "vue-router";
|
|||||||
import { Login } from "@/utils/api/info/account";
|
import { Login } from "@/utils/api/info/account";
|
||||||
import { ElMessage } from "element-plus";
|
import { ElMessage } from "element-plus";
|
||||||
|
|
||||||
//import router from "../../router/index";
|
// import router from "../../router/index";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "loginPage",
|
name: "LoginPage",
|
||||||
setup()
|
setup()
|
||||||
{
|
|
||||||
const store = useStore();
|
|
||||||
const router = useRouter();
|
|
||||||
|
|
||||||
const loginForm = reactive({
|
|
||||||
username: "",
|
|
||||||
password: "",
|
|
||||||
confirm_password: "",
|
|
||||||
validateCode: "",
|
|
||||||
});
|
|
||||||
|
|
||||||
const tab_menu = reactive(
|
|
||||||
[
|
|
||||||
{ type: "login", label: "登录", },
|
|
||||||
{ type: "regiester", label: "注册", },
|
|
||||||
]);
|
|
||||||
|
|
||||||
const ui = reactive(
|
|
||||||
{
|
|
||||||
current_menu: "",
|
|
||||||
staffInfo: null,
|
|
||||||
submit_btn_disable: false,
|
|
||||||
submit_btn_loading: false,
|
|
||||||
});
|
|
||||||
|
|
||||||
const onToggleMenu = (type) =>
|
|
||||||
{
|
{
|
||||||
ui.current_menu = type;
|
const store = useStore();
|
||||||
console.log(process.env.VUE_APP_API_URL_LOGIN);
|
const router = useRouter();
|
||||||
};
|
|
||||||
|
|
||||||
const getValidateCode = () =>
|
const loginForm = reactive({
|
||||||
{
|
username: "",
|
||||||
ElMessage({
|
password: "",
|
||||||
message: "测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字",
|
confirm_password: "",
|
||||||
center: true,
|
validateCode: "",
|
||||||
type: "error",
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
//将获取到的用户信息和token保存到vuex和localStorage
|
|
||||||
const saveUserInfo = (userInfo) =>
|
|
||||||
{
|
|
||||||
console.log("保存用户信息");
|
|
||||||
console.log("保存用户信息", store);
|
|
||||||
//保存到vuex
|
|
||||||
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);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 登录
|
|
||||||
*/
|
|
||||||
const login = () =>
|
|
||||||
{
|
|
||||||
if (loginForm.username.length === 0 || loginForm.password === 0)
|
|
||||||
{
|
|
||||||
ElMessage({
|
|
||||||
message: "请填写您的P13账号和密码!",
|
|
||||||
type: "error",
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return;
|
const tabMenu = reactive(
|
||||||
}
|
[
|
||||||
|
{ type: "login", label: "登录", },
|
||||||
|
{ type: "regiester", label: "注册", },
|
||||||
|
]);
|
||||||
|
|
||||||
ui.submit_btn_disable = true;
|
const ui = reactive(
|
||||||
ui.submit_btn_loading = true;
|
{
|
||||||
|
current_menu: "",
|
||||||
const userInfo = {
|
staffInfo: null,
|
||||||
p13account: loginForm.username,
|
submit_btn_disable: false,
|
||||||
password: loginForm.password,
|
submit_btn_loading: false,
|
||||||
};
|
|
||||||
|
|
||||||
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,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
ui.staffInfo = data.staffInfo;
|
const onToggleMenu = (type) =>
|
||||||
|
|
||||||
//保存用户信息和token
|
|
||||||
saveUserInfo(data);
|
|
||||||
|
|
||||||
//验证成功,跳转路由
|
|
||||||
router.push("/Desktop");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//验证失败
|
|
||||||
ElMessage({
|
|
||||||
message: data.message,
|
|
||||||
type: "error",
|
|
||||||
center: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
ui.submit_btn_disable = false;
|
|
||||||
ui.submit_btn_loading = false;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch((error) =>
|
|
||||||
{
|
{
|
||||||
//没有获取到响应数据
|
ui.current_menu = type;
|
||||||
console.log(error);
|
};
|
||||||
|
|
||||||
ElMessage({
|
const getValidateCode = () =>
|
||||||
message: error.message,
|
{
|
||||||
type: "error",
|
ElMessage({
|
||||||
center: true,
|
message: "测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字",
|
||||||
});
|
center: true,
|
||||||
|
type: "error",
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
ui.submit_btn_disable = false;
|
// 将获取到的用户信息和token保存到vuex和localStorage
|
||||||
ui.submit_btn_loading = false;
|
const saveUserInfo = (userInfo) =>
|
||||||
|
{
|
||||||
|
console.log("保存用户信息");
|
||||||
|
console.log("保存用户信息", store);
|
||||||
|
// 保存到vuex
|
||||||
|
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);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 登录
|
||||||
|
*/
|
||||||
|
const login = () =>
|
||||||
|
{
|
||||||
|
if (loginForm.username.length === 0 || loginForm.password === 0)
|
||||||
|
{
|
||||||
|
ElMessage({
|
||||||
|
message: "请填写您的P13账号和密码!",
|
||||||
|
type: "error",
|
||||||
|
});
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ui.submit_btn_disable = true;
|
||||||
|
ui.submit_btn_loading = true;
|
||||||
|
|
||||||
|
const userInfo = {
|
||||||
|
p13account: loginForm.username,
|
||||||
|
password: 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,
|
||||||
|
});
|
||||||
|
|
||||||
|
ui.staffInfo = data.staffInfo;
|
||||||
|
|
||||||
|
// 保存用户信息和token
|
||||||
|
saveUserInfo(data);
|
||||||
|
|
||||||
|
// 验证成功,跳转路由
|
||||||
|
router.push("/desktop");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 验证失败
|
||||||
|
ElMessage({
|
||||||
|
message: data.message,
|
||||||
|
type: "error",
|
||||||
|
center: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
ui.submit_btn_disable = false;
|
||||||
|
ui.submit_btn_loading = false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) =>
|
||||||
|
{
|
||||||
|
// 没有获取到响应数据
|
||||||
|
console.log(error);
|
||||||
|
|
||||||
|
ElMessage({
|
||||||
|
message: error.message,
|
||||||
|
type: "error",
|
||||||
|
center: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
ui.submit_btn_disable = false;
|
||||||
|
ui.submit_btn_loading = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
onBeforeMount(() =>
|
||||||
|
{
|
||||||
|
// 初始化菜单选项
|
||||||
|
ui.current_menu = tabMenu[0].type;
|
||||||
});
|
});
|
||||||
};
|
|
||||||
|
|
||||||
onBeforeMount(() =>
|
onMounted(() =>
|
||||||
{
|
{
|
||||||
//初始化菜单选项
|
// 清理状态
|
||||||
ui.current_menu = tab_menu[0].type;
|
store.state.app.userInfo = null;
|
||||||
});
|
});
|
||||||
|
|
||||||
onMounted(() =>
|
return {
|
||||||
{
|
// 数据
|
||||||
//清理状态
|
ui,
|
||||||
store.state.app.userInfo = null;
|
loginForm,
|
||||||
});
|
tabMenu,
|
||||||
|
// 方法
|
||||||
return {
|
onToggleMenu,
|
||||||
//数据
|
saveUserInfo,
|
||||||
ui,
|
login,
|
||||||
loginForm,
|
getValidateCode,
|
||||||
tab_menu,
|
};
|
||||||
//方法
|
},
|
||||||
onToggleMenu,
|
|
||||||
saveUserInfo,
|
|
||||||
login,
|
|
||||||
getValidateCode,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -241,24 +270,6 @@ export default {
|
|||||||
border-radius: 5px;
|
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 {
|
.menu-tab {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
@@ -292,4 +303,4 @@ export default {
|
|||||||
.el-button-block {
|
.el-button-block {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@@ -1,21 +1,21 @@
|
|||||||
<!--
|
<!--
|
||||||
* 佛曰:
|
* 佛曰:
|
||||||
* 写字楼里写字间,写字间里程序员;
|
* 写字楼里写字间,写字间里程序员;
|
||||||
* 程序人员写程序,又拿程序换酒钱。
|
* 程序人员写程序,又拿程序换酒钱。
|
||||||
* 酒醒只在网上坐,酒醉还来网下眠;
|
* 酒醒只在网上坐,酒醉还来网下眠;
|
||||||
* 酒醉酒醒日复日,网上网下年复年。
|
* 酒醉酒醒日复日,网上网下年复年。
|
||||||
* 但愿老死电脑间,不愿鞠躬老板前;
|
* 但愿老死电脑间,不愿鞠躬老板前;
|
||||||
* 奔驰宝马贵者趣,公交自行程序员。
|
* 奔驰宝马贵者趣,公交自行程序员。
|
||||||
* 别人笑我忒疯癫,我笑自己命太贱;
|
* 别人笑我忒疯癫,我笑自己命太贱;
|
||||||
* 不见满街漂亮妹,哪个归得程序员?
|
* 不见满街漂亮妹,哪个归得程序员?
|
||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2023-02-21 11:03:15
|
* @Date: 2023-02-21 11:03:15
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-02-24 11:09:40
|
* @LastEditTime: 2023-03-21 23:22:57
|
||||||
* @FilePath: /it-console/src/views/info/StaffInfo.vue
|
* @FilePath: /it-console/src/views/info/StaffInfo.vue
|
||||||
* @Description:<
|
* @Description:<
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div class="view_wrapper">
|
<div class="view_wrapper">
|
||||||
@@ -25,19 +25,19 @@
|
|||||||
<span>姓名</span>
|
<span>姓名</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-input v-model.trim.lazy="query_param.stuffName"></el-input>
|
<el-input v-model.trim.lazy="queryParam.stuffName" />
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="2">
|
<el-col :span="2">
|
||||||
<span>工号</span>
|
<span>工号</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-input v-model.trim.lazy="query_param.stuffCode"></el-input>
|
<el-input v-model.trim.lazy="queryParam.stuffCode" />
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="2">
|
<el-col :span="2">
|
||||||
<span>P13账号</span>
|
<span>P13账号</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-input v-model.trim.lazy="query_param.p13UID"></el-input>
|
<el-input v-model.trim.lazy="queryParam.p13UID" />
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
@@ -45,18 +45,25 @@
|
|||||||
<span>部门</span>
|
<span>部门</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-input v-model.trim.lazy="query_param.departmentName"></el-input>
|
<el-input v-model.trim.lazy="queryParam.departmentName" />
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="2">
|
<el-col :span="2">
|
||||||
<span>部门代码</span>
|
<span>部门代码</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-input v-model.trim.lazy="query_param.departmentCode"></el-input>
|
<el-input v-model.trim.lazy="queryParam.departmentCode" />
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<div class="toolbutton-wrapper">
|
<div class="toolbutton-wrapper">
|
||||||
<el-button type="primary" icon="search">查询</el-button>
|
<el-button
|
||||||
<el-button icon="Refresh">重置</el-button>
|
type="primary"
|
||||||
|
icon="search"
|
||||||
|
>
|
||||||
|
查询
|
||||||
|
</el-button>
|
||||||
|
<el-button icon="Refresh">
|
||||||
|
重置
|
||||||
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -71,7 +78,7 @@ export default {
|
|||||||
name: "StuffInfo",
|
name: "StuffInfo",
|
||||||
setup()
|
setup()
|
||||||
{
|
{
|
||||||
const query_param = reactive(
|
const queryParam = reactive(
|
||||||
{
|
{
|
||||||
stuffName: "",
|
stuffName: "",
|
||||||
stuffCode: "",
|
stuffCode: "",
|
||||||
@@ -82,7 +89,7 @@ export default {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
query_param,
|
queryParam,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -114,4 +121,4 @@ export default {
|
|||||||
justify-content: right;
|
justify-content: right;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@@ -4,34 +4,24 @@
|
|||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-01-25 11:26:13
|
* @LastEditTime: 2023-01-25 11:26:13
|
||||||
* @FilePath: \admin_system\src\views\network\NetworkPoint copy.vue
|
* @FilePath: \admin_system\src\views\network\NetworkPoint copy.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* 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>
|
<template>
|
||||||
<div>网络点位信息修改</div>
|
<div>网络点位信息修改</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="ts">
|
||||||
export default {
|
export default {
|
||||||
name: "network-point-editor",
|
name: "NetworkPointEditor",
|
||||||
data()
|
setup()
|
||||||
{
|
{
|
||||||
return {};
|
return {};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@@ -2,20 +2,20 @@
|
|||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2023-01-25 11:24:47
|
* @Date: 2023-01-25 11:24:47
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-01-25 11:34:07
|
* @LastEditTime: 2023-03-21 23:46:21
|
||||||
* @FilePath: \admin_system\src\views\network\NetworkPoint.vue
|
* @FilePath: /it-console/src/views/network/NetworkPoint/NetworkPoint.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div>网络点位管理</div>
|
<div>网络点位管理</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="ts">
|
||||||
export default {
|
export default {
|
||||||
name: "network-point-management",
|
name: "NetworkPointManagement",
|
||||||
data()
|
setup()
|
||||||
{
|
{
|
||||||
return {};
|
return {};
|
||||||
},
|
},
|
||||||
@@ -24,4 +24,4 @@ export default {
|
|||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@@ -4,18 +4,18 @@
|
|||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-01-25 14:48:54
|
* @LastEditTime: 2023-01-25 14:48:54
|
||||||
* @FilePath: \admin_system\src\views\network\switch\SwitchManager.vue
|
* @FilePath: \admin_system\src\views\network\switch\SwitchManager.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
交换机管理
|
<div>交换机管理</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="ts">
|
||||||
export default {
|
export default {
|
||||||
name: "switch-manager",
|
name: "SwitchManager",
|
||||||
data()
|
setup()
|
||||||
{
|
{
|
||||||
return {};
|
return {};
|
||||||
},
|
},
|
||||||
@@ -24,4 +24,4 @@ export default {
|
|||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@@ -4,9 +4,9 @@
|
|||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-01-06 15:26:46
|
* @LastEditTime: 2023-01-06 15:26:46
|
||||||
* @FilePath: \admin_system\src\views\news\News.vue
|
* @FilePath: \admin_system\src\views\news\News.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
信息管理
|
信息管理
|
||||||
@@ -14,10 +14,10 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: "NewsPage"
|
name: "NewsPage",
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@@ -4,19 +4,24 @@
|
|||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-01-08 19:26:26
|
* @LastEditTime: 2023-01-08 19:26:26
|
||||||
* @FilePath: \admin_system\src\views\news\NewsEdit.vue
|
* @FilePath: \admin_system\src\views\news\NewsEdit.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
信息编辑:{{ getCount }}
|
信息编辑:{{ getCount }}
|
||||||
<br>
|
<br>
|
||||||
<el-button type="danger" @click="this.add">计数加一</el-button>
|
<el-button
|
||||||
<SvgIcon icon="house"></SvgIcon>
|
type="danger"
|
||||||
|
@click="add"
|
||||||
|
>
|
||||||
|
计数加一
|
||||||
|
</el-button>
|
||||||
|
<SvgIcon icon="house" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
//import { ElMessage } from 'element-plus';
|
// import { ElMessage } from 'element-plus';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "NewsEdit",
|
name: "NewsEdit",
|
||||||
@@ -32,21 +37,21 @@ export default {
|
|||||||
return this.$store.state.app.count;
|
return this.$store.state.app.count;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
created()
|
||||||
|
{
|
||||||
|
this.store = this.$store;
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
add()
|
add()
|
||||||
{
|
{
|
||||||
let count = this.store.state.app.count + 1;
|
const count = this.store.state.app.count + 1;
|
||||||
|
|
||||||
this.store.commit("app/SET_COUNT", count);
|
this.store.commit("app/SET_COUNT", count);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
created()
|
|
||||||
{
|
|
||||||
this.store = this.$store;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@@ -4,9 +4,9 @@
|
|||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-01-06 19:23:29
|
* @LastEditTime: 2023-01-06 19:23:29
|
||||||
* @FilePath: \admin_system\src\views\news\NewsTest.vue
|
* @FilePath: \admin_system\src\views\news\NewsTest.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<!--
|
<!--
|
||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
@@ -14,9 +14,9 @@
|
|||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-01-06 15:26:46
|
* @LastEditTime: 2023-01-06 15:26:46
|
||||||
* @FilePath: \admin_system\src\views\news\News.vue
|
* @FilePath: \admin_system\src\views\news\News.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
信息管理
|
信息管理
|
||||||
@@ -24,10 +24,10 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: "NewsPage"
|
name: "NewsPage",
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@@ -2,110 +2,152 @@
|
|||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2023-01-06 15:30:12
|
* @Date: 2023-01-06 15:30:12
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-02-04 22:38:47
|
* @LastEditTime: 2023-03-21 23:38:49
|
||||||
* @FilePath: /IT工具综合平台/src/views/overview/desktop.vue
|
* @FilePath: /it-console/src/views/overview/Desktop.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<el-form :inline="true" label-width="5em" class="query_form">
|
<div class="view_wrapper">
|
||||||
<el-row :gutter="10">
|
<el-form
|
||||||
<el-col :span="7">
|
:inline="true"
|
||||||
<el-form-item label="需求编号">
|
label-width="5em"
|
||||||
<el-input style="width:100%;"></el-input>
|
class="query_form"
|
||||||
</el-form-item>
|
>
|
||||||
</el-col>
|
<el-row :gutter="10">
|
||||||
<el-col :span="7">
|
<el-col :span="7">
|
||||||
<el-form-item label="标题">
|
<el-form-item label="需求编号">
|
||||||
<el-input style="width:100%;"></el-input>
|
<el-input style="width:100%;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="7">
|
<el-col :span="7">
|
||||||
<el-form-item label="提交人">
|
<el-form-item label="标题">
|
||||||
<el-input style="width:100%;"></el-input>
|
<el-input style="width:100%;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="3"></el-col>
|
<el-col :span="7">
|
||||||
</el-row>
|
<el-form-item label="提交人">
|
||||||
<el-row :gutter="10">
|
<el-input style="width:100%;" />
|
||||||
<el-col :span="7">
|
</el-form-item>
|
||||||
<el-form-item label="状态">
|
</el-col>
|
||||||
<el-select style="width:100%;">
|
<el-col :span="3" />
|
||||||
<el-option key="部门审批" value="部门审批"></el-option>
|
</el-row>
|
||||||
<el-option key="需求分析" value="需求分析">需求分析</el-option>
|
<el-row :gutter="10">
|
||||||
<el-option key="技术开发" value="技术开发">技术开发</el-option>
|
<el-col :span="7">
|
||||||
<el-option key="被退回" value="被退回"></el-option>
|
<el-form-item label="状态">
|
||||||
</el-select>
|
<el-select style="width:100%;">
|
||||||
</el-form-item>
|
<el-option
|
||||||
</el-col>
|
key="部门审批"
|
||||||
<el-col :span="7">
|
value="部门审批"
|
||||||
<el-form-item label="提交日期">
|
/>
|
||||||
<el-date-picker style="width:100%;" v-model="start_date"></el-date-picker>
|
<el-option
|
||||||
</el-form-item>
|
key="需求分析"
|
||||||
</el-col>
|
value="需求分析"
|
||||||
<el-col :span="7">
|
>
|
||||||
<el-form-item label="至">
|
需求分析
|
||||||
<el-date-picker style="width:100%;" v-model="end_date"></el-date-picker>
|
</el-option>
|
||||||
</el-form-item>
|
<el-option
|
||||||
</el-col>
|
key="技术开发"
|
||||||
<el-col :span="3"></el-col>
|
value="技术开发"
|
||||||
</el-row>
|
>
|
||||||
<el-row>
|
技术开发
|
||||||
<el-col :span="14">
|
</el-option>
|
||||||
<el-form-item label="提交日期">
|
<el-option
|
||||||
<el-date-picker type="daterange" range-separator="至" style="width:100%;"></el-date-picker>
|
key="被退回"
|
||||||
</el-form-item>
|
value="被退回"
|
||||||
</el-col>
|
/>
|
||||||
<el-col :span="10"></el-col>
|
</el-select>
|
||||||
</el-row>
|
</el-form-item>
|
||||||
</el-form>
|
</el-col>
|
||||||
<el-button type="danger" @click="testRequest">测试</el-button>
|
<el-col :span="7">
|
||||||
<el-button type="danger" @click="testError">错误</el-button>
|
<el-form-item label="提交日期">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="startDate"
|
||||||
|
style="width:100%;"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="7">
|
||||||
|
<el-form-item label="至">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="endDate"
|
||||||
|
style="width:100%;"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="3" />
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="14">
|
||||||
|
<el-form-item label="提交日期">
|
||||||
|
<el-date-picker
|
||||||
|
type="daterange"
|
||||||
|
range-separator="至"
|
||||||
|
style="width:100%;"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="10" />
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
@click="testRequest"
|
||||||
|
>
|
||||||
|
测试
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
@click="testError"
|
||||||
|
>
|
||||||
|
错误
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script >
|
<script>
|
||||||
import { reactive, onBeforeMount } from "vue";
|
import { reactive, onBeforeMount } from "vue";
|
||||||
import { useStore } from "vuex";
|
import { useStore } from "vuex";
|
||||||
import { useRouter } from "vue-router";
|
import { useRouter } from "vue-router";
|
||||||
import { query_requirement_ui } from "@/utils/api/requirement/requirement.js";
|
import { queryRequirementUI } from "@/utils/api/requirement/requirement.js";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "DeskTop",
|
name: "DeskTop",
|
||||||
setup()
|
setup()
|
||||||
{
|
{
|
||||||
let start_date = reactive(new Date());
|
let startDate = reactive(new Date());
|
||||||
let end_date = reactive(new Date());
|
let endDate = reactive(new Date());
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
|
|
||||||
onBeforeMount(() =>
|
onBeforeMount(() =>
|
||||||
{
|
{
|
||||||
end_date = new Date(Date.now());
|
endDate = new Date(Date.now());
|
||||||
start_date = new Date();
|
startDate = new Date();
|
||||||
|
|
||||||
start_date.setMonth(end_date.getMonth() - 1);
|
startDate.setMonth(endDate.getMonth() - 1);
|
||||||
});
|
});
|
||||||
|
|
||||||
const testRequest = () =>
|
const testRequest = () =>
|
||||||
{
|
{
|
||||||
// const ui = store.state.app.ui;
|
// const ui = store.state.app.ui;
|
||||||
// const requirement = store.state.requirement;
|
// const requirement = store.state.requirement;
|
||||||
//加载数据;
|
// 加载数据;
|
||||||
query_requirement_ui(store);
|
queryRequirementUI(store);
|
||||||
|
|
||||||
console.log(store.state.app);
|
console.log(store.state.app);
|
||||||
console.log(store.state.requirement);
|
console.log(store.state.requirement);
|
||||||
};
|
};
|
||||||
|
|
||||||
const testError = () =>
|
const testError = () =>
|
||||||
{
|
{
|
||||||
router.push("/error-page");
|
router.push("/error-page");
|
||||||
};
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
start_date,
|
startDate,
|
||||||
end_date,
|
endDate,
|
||||||
testRequest,
|
testRequest,
|
||||||
testError,
|
testError,
|
||||||
};
|
};
|
||||||
@@ -117,4 +159,4 @@ export default {
|
|||||||
.query_form {
|
.query_form {
|
||||||
max-width: 63em;
|
max-width: 63em;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@@ -4,24 +4,24 @@
|
|||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-01-24 23:57:11
|
* @LastEditTime: 2023-01-24 23:57:11
|
||||||
* @FilePath: \admin_system\src\views\info\EditStaffInfo.vue
|
* @FilePath: \admin_system\src\views\info\EditStaffInfo.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div></div>
|
<div />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: "EditStaffInfo",
|
name: "EditStaffInfo",
|
||||||
data: function ()
|
data: function ()
|
||||||
{
|
{
|
||||||
return {};
|
return {};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@@ -2,14 +2,14 @@
|
|||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2023-02-03 18:54:38
|
* @Date: 2023-02-03 18:54:38
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-02-03 18:56:39
|
* @LastEditTime: 2023-03-21 23:45:04
|
||||||
* @FilePath: \IT工具综合平台\src\views\privilege\PrivilegeManager.vue
|
* @FilePath: /it-console/src/views/privilege/PrivilegeManager.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
权限管理
|
<div>权限管理</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -24,4 +24,4 @@ export default {
|
|||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@@ -3,59 +3,116 @@
|
|||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2023-01-12 14:43:46
|
* @Date: 2023-01-12 14:43:46
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-01-26 23:18:49
|
* @LastEditTime: 2023-03-21 23:41:05
|
||||||
* @FilePath: \admin_system\src\views\info\StaffInfo.vue
|
* @FilePath: /it-console/src/views/privilege/StaffInfo.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div class="query_box">
|
<div class="query_box">
|
||||||
<el-form inline width="600px">
|
<el-form
|
||||||
<el-row :gutter="10" class="el-row">
|
inline
|
||||||
|
width="600px"
|
||||||
|
>
|
||||||
|
<el-row
|
||||||
|
:gutter="10"
|
||||||
|
class="el-row"
|
||||||
|
>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-input v-model="query_param.staff_code" placeholder="请输入P09工号或P13账号"></el-input>
|
<el-input
|
||||||
|
v-model="query_param.staff_code"
|
||||||
|
placeholder="请输入P09工号或P13账号"
|
||||||
|
/>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-button type="danger">查询</el-button>
|
<el-button type="danger">
|
||||||
|
查询
|
||||||
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12"></el-col>
|
<el-col :span="12" />
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-table ref="table" :data="table_data" border width="100%" stripe>
|
<el-table
|
||||||
<el-table-column type="selection" min-width="30" align="center"></el-table-column>
|
ref="table"
|
||||||
<el-table-column min-width="200" label="员工名称" align="left" fixed="left">
|
:data="table_data"
|
||||||
|
border
|
||||||
|
width="100%"
|
||||||
|
stripe
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
type="selection"
|
||||||
|
min-width="30"
|
||||||
|
align="center"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
min-width="200"
|
||||||
|
label="员工名称"
|
||||||
|
align="left"
|
||||||
|
fixed="left"
|
||||||
|
>
|
||||||
<template #default="rowdata">
|
<template #default="rowdata">
|
||||||
<span @click="onShowStaffInfo(rowdata.row)" style="cursor: pointer; display: block; height: 100%">{{
|
<span
|
||||||
|
style="cursor: pointer; display: block; height: 100%"
|
||||||
|
@click="onShowStaffInfo(rowdata.row)"
|
||||||
|
>{{
|
||||||
rowdata.row.staff_name
|
rowdata.row.staff_name
|
||||||
}}</span>
|
}}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="staff_code" min-width="100" label="工号" align="left"></el-table-column>
|
<el-table-column
|
||||||
<el-table-column prop="p13uid" min-width="200" label="P13账号" align="left"></el-table-column>
|
prop="staff_code"
|
||||||
<el-table-column label="操作" min-width="200" align="center" fixed="right">
|
min-width="100"
|
||||||
|
label="工号"
|
||||||
|
align="left"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
prop="p13uid"
|
||||||
|
min-width="200"
|
||||||
|
label="P13账号"
|
||||||
|
align="left"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="操作"
|
||||||
|
min-width="200"
|
||||||
|
align="center"
|
||||||
|
fixed="right"
|
||||||
|
>
|
||||||
<template #default>
|
<template #default>
|
||||||
<el-button type="warning">编辑</el-button>
|
<el-button type="warning">
|
||||||
<el-button type="danger">删除</el-button>
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button type="danger">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<el-row :gutter="10" width="100%">
|
<el-row
|
||||||
|
:gutter="10"
|
||||||
|
width="100%"
|
||||||
|
>
|
||||||
<el-col :span="18">
|
<el-col :span="18">
|
||||||
<el-pagination class="pull_left" @current-change="onCurrentPageIndexChange"
|
<el-pagination
|
||||||
@size-change="onTablePageSizeChange" size="small" background :current-page="this.table_current_page"
|
class="pull_left"
|
||||||
:page-size="10" :page-sizes="[10, 20, 50, 100]" layout="total, sizes, prev, pager, nex, jumper"
|
size="small"
|
||||||
:total="table_data.length">
|
background
|
||||||
</el-pagination>
|
:current-page="table_current_page"
|
||||||
|
:page-size="10"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
layout="total, sizes, prev, pager, nex, jumper"
|
||||||
|
:total="table_data.length"
|
||||||
|
@current-change="onCurrentPageIndexChange"
|
||||||
|
@size-change="onTablePageSizeChange"
|
||||||
|
/>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
/* eslint-disable no-unused-vars*/
|
|
||||||
export default {
|
export default {
|
||||||
name: "staff-info",
|
name: "StaffInfo",
|
||||||
data()
|
data()
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
@@ -93,7 +150,7 @@ export default {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onTableEdit(row) { },
|
// onTableEdit(row) { },
|
||||||
/**
|
/**
|
||||||
* 根据表格行index返回样式,实现斑马纹
|
* 根据表格行index返回样式,实现斑马纹
|
||||||
* @param row
|
* @param row
|
||||||
@@ -102,8 +159,8 @@ export default {
|
|||||||
*/
|
*/
|
||||||
tabRowClassName(row, rowIndex)
|
tabRowClassName(row, rowIndex)
|
||||||
{
|
{
|
||||||
let index = rowIndex + 1;
|
const index = rowIndex + 1;
|
||||||
if (index % 2 == 0)
|
if (index % 2 === 0)
|
||||||
{
|
{
|
||||||
return "warning-row";
|
return "warning-row";
|
||||||
}
|
}
|
||||||
@@ -119,11 +176,11 @@ export default {
|
|||||||
/**
|
/**
|
||||||
* 表格页显示数量变更时消息处理函数
|
* 表格页显示数量变更时消息处理函数
|
||||||
*/
|
*/
|
||||||
onTablePageSizeChange() { },
|
// onTablePageSizeChange() { },
|
||||||
/**
|
/**
|
||||||
* 用户变更当前页时消息处理函数
|
* 用户变更当前页时消息处理函数
|
||||||
*/
|
*/
|
||||||
onCurrentPageIndexChange() { },
|
// onCurrentPageIndexChange() { },
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
@@ -4,25 +4,25 @@
|
|||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2023-02-06 08:32:09
|
* @LastEditTime: 2023-02-06 08:32:09
|
||||||
* @FilePath: /IT工具综合平台/src/views/requirement/RequirementEditing.vue
|
* @FilePath: /IT工具综合平台/src/views/requirement/RequirementEditing.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
需求编辑页面
|
<div>需求编辑页面</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { onBeforeMount, onBeforeUpdate } from 'vue';
|
import { onBeforeMount, onBeforeUpdate } from "vue";
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from "vue-router";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "requirement-editing",
|
name: "RequirementEditing",
|
||||||
setup()
|
setup()
|
||||||
{
|
{
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
|
||||||
//生命周期
|
// 生命周期
|
||||||
onBeforeMount(() =>
|
onBeforeMount(() =>
|
||||||
{
|
{
|
||||||
console.log("接收的参数:", route.query);
|
console.log("接收的参数:", route.query);
|
||||||
@@ -40,4 +40,4 @@ export default {
|
|||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
File diff suppressed because one or more lines are too long
47
code/web/it-console/tsconfig.json
Normal file
47
code/web/it-console/tsconfig.json
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-03-01 23:38:12
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /task_schedule/tsconfig.json
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"useDefineForClassFields": true,
|
||||||
|
"target": "ESNext",
|
||||||
|
"module": "CommonJS",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"strict": true,
|
||||||
|
"jsx": "preserve",
|
||||||
|
"sourceMap": true,
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"esModuleInterop": false,
|
||||||
|
"baseUrl": "./", // paths 路径解析起点
|
||||||
|
"paths": { // 别名路径设置
|
||||||
|
"@/*": [
|
||||||
|
"src/*"
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"lib": [
|
||||||
|
"ESNext",
|
||||||
|
"DOM"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"vite/client"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"src/**/*.ts",
|
||||||
|
"src/**/*.tsx",
|
||||||
|
"src/**/*.vue",
|
||||||
|
"*.d.ts",
|
||||||
|
"src/router/index.js",
|
||||||
|
"src/router/index.js",
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"./node_modules",
|
||||||
|
]
|
||||||
|
}
|
@@ -8,60 +8,60 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
*/
|
*/
|
||||||
import { defineConfig } from 'vite';
|
import { defineConfig } from "vite";
|
||||||
import path from 'path';
|
import path from "path";
|
||||||
import vue from '@vitejs/plugin-vue';
|
import vue from "@vitejs/plugin-vue";
|
||||||
import vueJsx from '@vitejs/plugin-vue-jsx';
|
import vueJsx from "@vitejs/plugin-vue-jsx";
|
||||||
import ViteRequireContext from '@originjs/vite-plugin-require-context';
|
import ViteRequireContext from "@originjs/vite-plugin-require-context";
|
||||||
import envCompatible from 'vite-plugin-env-compatible';
|
import envCompatible from "vite-plugin-env-compatible";
|
||||||
import { createHtmlPlugin } from 'vite-plugin-html';
|
import { createHtmlPlugin } from "vite-plugin-html";
|
||||||
import { viteCommonjs } from '@originjs/vite-plugin-commonjs';
|
import { viteCommonjs } from "@originjs/vite-plugin-commonjs";
|
||||||
|
|
||||||
// https://vitejs.dev/config/
|
// https://vitejs.dev/config/
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: [
|
alias: [
|
||||||
{
|
{
|
||||||
find: /^~/,
|
find: /^~/,
|
||||||
replacement: '',
|
replacement: "",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
find: '@',
|
find: "@",
|
||||||
replacement: path.resolve(__dirname, 'src'),
|
replacement: path.resolve(__dirname, "src"),
|
||||||
},
|
},
|
||||||
|
],
|
||||||
|
extensions: [
|
||||||
|
".mjs",
|
||||||
|
".js",
|
||||||
|
".ts",
|
||||||
|
".jsx",
|
||||||
|
".tsx",
|
||||||
|
".json",
|
||||||
|
".vue",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
vue(),
|
||||||
|
vueJsx(),
|
||||||
|
ViteRequireContext(),
|
||||||
|
viteCommonjs(),
|
||||||
|
envCompatible(),
|
||||||
|
createHtmlPlugin({
|
||||||
|
inject: {
|
||||||
|
data: {
|
||||||
|
title: "CPIC-IT-Console",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}),
|
||||||
],
|
],
|
||||||
extensions: [
|
base: "./",
|
||||||
'.mjs',
|
server: {
|
||||||
'.js',
|
strictPort: false,
|
||||||
'.ts',
|
port: 8001,
|
||||||
'.jsx',
|
host: "localhost",
|
||||||
'.tsx',
|
open: true,
|
||||||
'.json',
|
},
|
||||||
'.vue',
|
build: {
|
||||||
],
|
outDir: "dist",
|
||||||
},
|
},
|
||||||
plugins: [
|
|
||||||
vue(),
|
|
||||||
vueJsx(),
|
|
||||||
ViteRequireContext(),
|
|
||||||
viteCommonjs(),
|
|
||||||
envCompatible(),
|
|
||||||
createHtmlPlugin({
|
|
||||||
inject: {
|
|
||||||
data: {
|
|
||||||
title: 'CPIC-IT-Console',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
base: './',
|
|
||||||
server: {
|
|
||||||
strictPort: false,
|
|
||||||
port: 8001,
|
|
||||||
host: 'localhost',
|
|
||||||
open: true,
|
|
||||||
},
|
|
||||||
build: {
|
|
||||||
outDir: 'dist',
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
@@ -20,35 +20,35 @@
|
|||||||
// }
|
// }
|
||||||
// );
|
// );
|
||||||
module.exports = {
|
module.exports = {
|
||||||
transpileDependencies: true,
|
transpileDependencies: true,
|
||||||
devServer: {
|
devServer: {
|
||||||
open: true,
|
open: true,
|
||||||
host: "localhost",
|
host: "localhost",
|
||||||
port: 8000,
|
port: 8000,
|
||||||
},
|
},
|
||||||
// chainWebpack: (config) =>
|
// chainWebpack: (config) =>
|
||||||
// {
|
// {
|
||||||
// // svg 图标解析
|
// // svg 图标解析
|
||||||
// const svgRule = config.module.rule("svg"); //默认规则赋给 subRule 变量
|
// const svgRule = config.module.rule("svg"); //默认规则赋给 subRule 变量
|
||||||
// svgRule.uses.clear(); // 清除已有的所有规则。
|
// svgRule.uses.clear(); // 清除已有的所有规则。
|
||||||
// svgRule // 添加要替换的规则
|
// svgRule // 添加要替换的规则
|
||||||
// .use("svg-sprite-loader")
|
// .use("svg-sprite-loader")
|
||||||
// .loader("svg-sprite-loader")
|
// .loader("svg-sprite-loader")
|
||||||
// .options({
|
// .options({
|
||||||
// symbolId: "icon-[name]",
|
// symbolId: "icon-[name]",
|
||||||
// include: ["./src/components/svg/icons",], // 特别注意的目录路径
|
// include: ["./src/components/svg/icons",], // 特别注意的目录路径
|
||||||
// });
|
// });
|
||||||
// 配置base64转换规则
|
// 配置base64转换规则
|
||||||
// config.module
|
// config.module
|
||||||
// .rule('images')
|
// .rule('images')
|
||||||
// .use('url-loader')
|
// .use('url-loader')
|
||||||
// .loader('url-loader')
|
// .loader('url-loader')
|
||||||
// .tap(options => Object.assign(options, { limit: 1 }));
|
// .tap(options => Object.assign(options, { limit: 1 }));
|
||||||
|
|
||||||
// 载入项目分析工具
|
// 载入项目分析工具
|
||||||
// config.plugin('webpack-bundle-analyzer').use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
|
// config.plugin('webpack-bundle-analyzer').use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
|
||||||
// },
|
// },
|
||||||
//打包输出目录
|
//打包输出目录
|
||||||
publicPath: "./",
|
publicPath: "./",
|
||||||
outputDir: "dist",
|
outputDir: "dist",
|
||||||
};
|
};
|
Reference in New Issue
Block a user