完成登录功能。

This commit is contained in:
Kane Wang 2023-04-28 17:46:54 +08:00
parent 6869294c26
commit 0fb93d0ccd
10 changed files with 187 additions and 80 deletions

View File

@ -12,7 +12,7 @@
"@element-plus/icons-vue": "^2.1.0", "@element-plus/icons-vue": "^2.1.0",
"@typescript-eslint/eslint-plugin": "^5.59.1", "@typescript-eslint/eslint-plugin": "^5.59.1",
"@typescript-eslint/parser": "^5.59.1", "@typescript-eslint/parser": "^5.59.1",
"axios": "^1.3.6", "axios": "^1.4.0",
"babel": "^6.23.0", "babel": "^6.23.0",
"echarts": "^5.4.2", "echarts": "^5.4.2",
"element-plus": "^2.3.4", "element-plus": "^2.3.4",
@ -31,7 +31,7 @@
"eslint-plugin-vue": "^9.11.0", "eslint-plugin-vue": "^9.11.0",
"sass": "^1.62.1", "sass": "^1.62.1",
"typescript": "^5.0.4", "typescript": "^5.0.4",
"vite": "^4.3.2", "vite": "^4.3.3",
"vue-eslint-parser": "^9.1.1" "vue-eslint-parser": "^9.1.1"
} }
}, },
@ -2719,9 +2719,9 @@
} }
}, },
"node_modules/axios": { "node_modules/axios": {
"version": "1.3.6", "version": "1.4.0",
"resolved": "https://registry.npmmirror.com/axios/-/axios-1.3.6.tgz", "resolved": "https://registry.npmmirror.com/axios/-/axios-1.4.0.tgz",
"integrity": "sha512-PEcdkk7JcdPiMDkvM4K6ZBRYq9keuVJsToxm2zQIM70Qqo2WHTdJZMXcG9X+RmRp2VPNUQC8W1RAGbgt6b1yMg==", "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==",
"dependencies": { "dependencies": {
"follow-redirects": "^1.15.0", "follow-redirects": "^1.15.0",
"form-data": "^4.0.0", "form-data": "^4.0.0",
@ -9748,11 +9748,11 @@
} }
}, },
"node_modules/postcss": { "node_modules/postcss": {
"version": "8.4.21", "version": "8.4.23",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.21.tgz", "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.23.tgz",
"integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==",
"dependencies": { "dependencies": {
"nanoid": "^3.3.4", "nanoid": "^3.3.6",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
"source-map-js": "^1.0.2" "source-map-js": "^1.0.2"
}, },
@ -12026,13 +12026,13 @@
} }
}, },
"node_modules/vite": { "node_modules/vite": {
"version": "4.3.2", "version": "4.3.3",
"resolved": "https://registry.npmmirror.com/vite/-/vite-4.3.2.tgz", "resolved": "https://registry.npmmirror.com/vite/-/vite-4.3.3.tgz",
"integrity": "sha512-9R53Mf+TBoXCYejcL+qFbZde+eZveQLDYd9XgULILLC1a5ZwPaqgmdVpL8/uvw2BM/1TzetWjglwm+3RO+xTyw==", "integrity": "sha512-MwFlLBO4udZXd+VBcezo3u8mC77YQk+ik+fbc0GZWGgzfbPP+8Kf0fldhARqvSYmtIWoAJ5BXPClUbMTlqFxrA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"esbuild": "^0.17.5", "esbuild": "^0.17.5",
"postcss": "^8.4.21", "postcss": "^8.4.23",
"rollup": "^3.21.0" "rollup": "^3.21.0"
}, },
"bin": { "bin": {

View File

@ -13,7 +13,7 @@
"@element-plus/icons-vue": "^2.1.0", "@element-plus/icons-vue": "^2.1.0",
"@typescript-eslint/eslint-plugin": "^5.59.1", "@typescript-eslint/eslint-plugin": "^5.59.1",
"@typescript-eslint/parser": "^5.59.1", "@typescript-eslint/parser": "^5.59.1",
"axios": "^1.3.6", "axios": "^1.4.0",
"babel": "^6.23.0", "babel": "^6.23.0",
"echarts": "^5.4.2", "echarts": "^5.4.2",
"element-plus": "^2.3.4", "element-plus": "^2.3.4",
@ -32,7 +32,7 @@
"eslint-plugin-vue": "^9.11.0", "eslint-plugin-vue": "^9.11.0",
"sass": "^1.62.1", "sass": "^1.62.1",
"typescript": "^5.0.4", "typescript": "^5.0.4",
"vite": "^4.3.2", "vite": "^4.3.3",
"vue-eslint-parser": "^9.1.1" "vue-eslint-parser": "^9.1.1"
} }
} }

View File

@ -1,6 +1,6 @@
/* /*
* @Author: Kane * @Author: Kane
* @Date: 2023-03-02 15:48:44 * @Date: 2023-04-27 15:29:10
* @LastEditors: Kane * @LastEditors: Kane
* @FilePath: /task_schedule/src/test/test.ts * @FilePath: /task_schedule/src/test/test.ts
* @Description: * @Description:
@ -8,33 +8,6 @@
* Copyright (c) ${2022} by Kane, All Rights Reserved. * Copyright (c) ${2022} by Kane, All Rights Reserved.
*/ */
import { queryDepartmentArchievement } from "../utils/archievement.js"; import { loginTestCaller } from "./requestTest.js";
interface Cat loginTestCaller();
{
name: string;
purrs: boolean;
}
interface Dog
{
// name: string;
barks: true;
wags: true;
}
type CatOrDog = Cat | Dog;
const animal: CatOrDog =
{
name: "kaka",
purrs: true,
barks: true,
wags: true,
};
console.log( "test" );
const gainers: Array<string | number> = ["kane", 588,];
const kane = { a: 100, b: 200, };

View File

@ -23,6 +23,32 @@ interface LoginInfo
password: string; password: string;
} }
interface LoginCallerInfo
{
telsaler_code: string;
}
interface RequestResult
{
success: boolean;
message: string;
}
interface LoginCallerResult extends RequestResult
{
tele_saler_code: string;
tele_saler_name: string;
team_code: string;
team_name: string;
department_code: string;
department_name: string;
}
/**
*
* @param data
* @returns Promise对象
*/
async function login( data: LoginInfo ): Promise<AxiosResponse<any, any>> async function login( data: LoginInfo ): Promise<AxiosResponse<any, any>>
{ {
return await instance.request( return await instance.request(
@ -30,10 +56,27 @@ async function login( data: LoginInfo ): Promise<AxiosResponse<any, any>>
method: "post", method: "post",
url: API_URL.URL_LOGIN, url: API_URL.URL_LOGIN,
data, data,
} });
);
} }
/**
*
* @param data
* @returns Promise对象
*/
async function loginCaller( data: LoginCallerInfo ): Promise<AxiosResponse<any, any>>
{
return await instance.request(
{
method: "post",
url: API_URL.URL_LOGIN_CALLER,
data,
});
}
/**
* 退
*/
function logout(): void function logout(): void
{ {
cleanStaffInfo(); cleanStaffInfo();
@ -42,4 +85,11 @@ function logout(): void
void router.push( "/login" ); void router.push( "/login" );
} }
export { type LoginInfo, login, logout }; export {
type LoginInfo,
type LoginCallerInfo,
type LoginCallerResult,
login,
loginCaller,
logout
};

View File

@ -10,6 +10,7 @@
export const API_URL = { export const API_URL = {
// URL_LOGIN: import.meta.env.VITE_URL_LOGIN, // URL_LOGIN: import.meta.env.VITE_URL_LOGIN,
URL_LOGIN: "http://222.76.244.118:11101/admin-system/account/p13_account_check", URL_LOGIN: "http://222.76.244.118:11101/admin-system/account/p13_account_check",
URL_LOGIN_CALLER: "http://localhost:8080/desktop_archievement_backend/account/query_telsaler_info.do",
// URL_DEPARTMENT_ARCHIEVEMENT: import.meta.env.VITE_URL_DEPARTMENT_ARCHIEVEMENT, // URL_DEPARTMENT_ARCHIEVEMENT: import.meta.env.VITE_URL_DEPARTMENT_ARCHIEVEMENT,
URL_DEPARTMENT_ARCHIEVEMENT: "http://222.76.244.118:11101/desktop_archievement_backend/archievement/query_department_archievement.do", URL_DEPARTMENT_ARCHIEVEMENT: "http://222.76.244.118:11101/desktop_archievement_backend/archievement/query_department_archievement.do",

View File

@ -7,7 +7,7 @@
* *
* Copyright (c) ${2022} by Kane, All Rights Reserved. * Copyright (c) ${2022} by Kane, All Rights Reserved.
*/ */
import { StaffInfo } from "@/data/cpicxim/StaffInfo.js"; import { StaffInfo } from "../../data/cpicxim/StaffInfo.js";
const STUFF_ITEM = "stuff_info"; const STUFF_ITEM = "stuff_info";
const CALLER_ITEM = "call_info"; const CALLER_ITEM = "call_info";

View File

@ -68,7 +68,7 @@
import { reactive, onBeforeMount } from "vue"; import { reactive, onBeforeMount } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { saveStaffInfo, getUserType, saveUserType, getCallerInfo, saveCallerInfo } from "@/utils/api/localStorage"; import { saveStaffInfo, getUserType, saveUserType, getCallerInfo, saveCallerInfo } from "@/utils/api/localStorage";
import { login } from "@/utils/account"; import { login, loginCaller, type LoginCallerInfo, type LoginCallerResult } from "@/utils/account";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { StaffInfo } from "@/data/cpicxim/StaffInfo"; import { StaffInfo } from "@/data/cpicxim/StaffInfo";
@ -120,7 +120,7 @@ export default {
if ( data.success === true ) if ( data.success === true )
{ {
// localStorage // localStorage
ElMessage({ ElMessage({
message: data.message, message: data.message,
type: "success", type: "success",
@ -161,11 +161,45 @@ export default {
} }
else if ( ui.currentMenu === "tele_saler" ) else if ( ui.currentMenu === "tele_saler" )
{ {
// //
saveCallerInfo( ui.account ); const loginInfo: LoginCallerInfo = {
telsaler_code: ui.account,
};
// //
router.push( "/desktop_archievement" ); loginCaller( loginInfo )
//
.then(( response ) =>
{
const data:LoginCallerResult = response.data ?? { success: false, };
//
if ( data.success === true )
{
//
ElMessage({
message: `验证成功,登录用户 ${data.tele_saler_name}`,
type: "success",
});
saveCallerInfo( ui.account );
router.push( "/desktop_archievement" );
}
else
{
//
ElMessage({
message: "验证失败,请检查输入的工号。",
type: "error",
});
}
})
//
.catch(( error ) =>
{
console.log( `登录失败,返回信息:${error}` );
});
} }
}; };
@ -268,25 +302,25 @@ export default {
} }
.menu-tab { .menu-tab {
text-align: center; text-align: center;
margin-bottom: 15px; margin-bottom: 15px;
margin-top: 25px; margin-top: 25px;
li { li {
display: inline-block; display: inline-block;
padding: 10px 24px; padding: 10px 24px;
margin: 0 10px; margin: 0 10px;
// background-color: #fff; // background-color: #fff;
color: #1d6ddc; color: #1d6ddc;
font-size: 16px; font-size: 16px;
border-radius: 5px; border-radius: 5px;
cursor: pointer; cursor: pointer;
&.current { &.current {
background-color: #1d6ddc; background-color: #1d6ddc;
color: #fff; color: #fff;
}
} }
}
} }
.form-label { .form-label {

View File

@ -14,6 +14,7 @@
<maven.compiler.source>17</maven.compiler.source> <maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target> <maven.compiler.target>17</maven.compiler.target>
<spring.version>5.3.24</spring.version> <spring.version>5.3.24</spring.version>
<!-- <spring.version>6.0.8</spring.version> -->
</properties> </properties>
<dependencies> <dependencies>

View File

@ -11,12 +11,14 @@ package com.cpic.xim.web.controllers.account;
import java.sql.SQLException; import java.sql.SQLException;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import com.cpic.xim.utils.account.CpicXIMStaffInfo; import com.cpic.xim.utils.account.CpicXIMStaffInfo;
import com.cpic.xim.utils.account.TeleSalerInfo; import com.cpic.xim.utils.account.TeleSalerInfo;
@Controller @Controller
@RequestMapping( "/account" ) @RequestMapping( "/account" )
public class StaffInfoQueryController public class StaffInfoQueryController
@ -62,23 +64,34 @@ public class StaffInfoQueryController
*/ */
@RequestMapping( "/query_telsaler_info.do" ) @RequestMapping( "/query_telsaler_info.do" )
@ResponseBody @ResponseBody
public TeleSalerQueryResult queryTeleSalerInfo( @RequestParam("telesaler_code") String teleSalerCode ) public TeleSalerQueryResult queryTeleSalerInfo(
@RequestBody TelsalerQueryRequest telSaler )
{ {
TeleSalerQueryResult result = new TeleSalerQueryResult(); TeleSalerQueryResult result = new TeleSalerQueryResult();
TeleSalerInfo saler = null; TeleSalerInfo saler = null;
try try
{ {
saler = TeleSalerInfo.queryTeleSalerInfo( teleSalerCode ); saler = TeleSalerInfo.queryTeleSalerInfo( telSaler.getTelSalerCode() );
result.setTeleSalerCode( saler.getCode() ); // 根据返回结果是否为 null判断是否查询到坐席信息
result.setTeleSalerName( saler.getName() ); if ( saler != null )
result.setTeamCode( saler.getTeamCode() ); {
result.setTeamName( saler.getTeamName() ); // 不为 null有查询到
result.setDepartmentCode( saler.getDepartmentCode() ); result.setTeleSalerCode( saler.getCode() );
result.setDepartmentName( saler.getDepartmentName() ); result.setTeleSalerName( saler.getName() );
result.setTeamCode( saler.getTeamCode() );
result.setTeamName( saler.getTeamName() );
result.setDepartmentCode( saler.getDepartmentCode() );
result.setDepartmentName( saler.getDepartmentName() );
result.setSuccess( true ); result.setSuccess( true );
} else
{
// null 则没查询到
result.setSuccess( false );
result.setMessage( "未查询到坐席信息!" );
}
} }
catch ( SQLException error ) catch ( SQLException error )
{ {

View File

@ -0,0 +1,35 @@
/*
* @Author: Kane
* @Date: 2023-04-28 14:40:49
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/account/TelsalerQueryRequest.java
* @Description:
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
package com.cpic.xim.web.controllers.account;
import com.fasterxml.jackson.annotation.JsonProperty;
public class TelsalerQueryRequest
{
public TelsalerQueryRequest() {}
public TelsalerQueryRequest( String telSalerCode )
{
this.telSalerCode = telSalerCode;
}
public String getTelSalerCode()
{
return telSalerCode;
}
public void setTelSalerCode( String telSalerCode )
{
this.telSalerCode = telSalerCode;
}
@JsonProperty("telsaler_code")
private String telSalerCode;
}