diff --git a/Touchkebao/devlop.py b/Touchkebao/devlop.py
index f1aecf46..48ccd126 100644
--- a/Touchkebao/devlop.py
+++ b/Touchkebao/devlop.py
@@ -6,13 +6,13 @@ import paramiko
local_dir = './dist' # 本地要打包的目录
zip_name = 'dist.zip'
# 上传到服务器的 zip 路径
-remote_path = '/www/wwwroot/auto-devlop/ckb-operation/dist.zip' # 服务器上的临时zip路径
+remote_path = '/www/wwwroot/auto-devlop/tkb-wechat/dist.zip' # 服务器上的临时zip路径
server_ip = '42.194.245.239'
server_port = 6523
server_user = 'yongpxu'
server_pwd = 'Aa123456789.'
# 服务器 dist 相关目录
-remote_base_dir = '/www/wwwroot/auto-devlop/ckb-operation'
+remote_base_dir = '/www/wwwroot/auto-devlop/tkb-wechat'
dist_dir = f'{remote_base_dir}/dist'
dist1_dir = f'{remote_base_dir}/dist1'
dist2_dir = f'{remote_base_dir}/dist2'
diff --git a/Touchkebao/src/pages/login/Login.tsx b/Touchkebao/src/pages/login/Login.tsx
index 972710b2..70af8136 100644
--- a/Touchkebao/src/pages/login/Login.tsx
+++ b/Touchkebao/src/pages/login/Login.tsx
@@ -9,7 +9,12 @@ import {
import { useUserStore } from "@/store/module/user";
import { useWebSocketStore } from "@/store/module/websocket/websocket";
-import { loginWithPassword, loginWithCode, sendVerificationCode } from "./api";
+import {
+ loginWithPassword,
+ loginWithCode,
+ sendVerificationCode,
+ getVerifyCode,
+} from "./api";
import style from "./login.module.scss";
const Login: React.FC = () => {
@@ -21,7 +26,13 @@ const Login: React.FC = () => {
const [agreeToTerms, setAgreeToTerms] = useState(false);
const { setUserInfo } = useCkChatStore.getState();
const { login, login2 } = useUserStore();
-
+ const [verify, setVerify] = useState<{
+ verifyCodeImage: string;
+ verifyCode: string;
+ }>({
+ verifyCodeImage: "",
+ verifyCode: "",
+ });
// 倒计时效果
useEffect(() => {
if (countdown > 0) {
@@ -30,7 +41,18 @@ const Login: React.FC = () => {
}
}, [countdown]);
- // 发送验证码
+ const getVerifyCodeFunction = async () => {
+ const res = await getVerifyCode();
+ setVerify({
+ verifyCodeImage: res.verifyCodeImage,
+ verifyCode: res.verifyCode,
+ });
+ };
+
+ useEffect(() => {
+ getVerifyCodeFunction();
+ }, []);
+
const handleSendVerificationCode = async () => {
const account = form.getFieldValue("account");
@@ -74,15 +96,19 @@ const Login: React.FC = () => {
? loginWithPassword(loginParams)
: loginWithCode(loginParams);
- response.then(res => {
- const { member, kefuData, deviceTotal } = res;
- // 清空WebSocket连接状态
- useWebSocketStore.getState().clearConnectionState();
- login(res.token, member, deviceTotal);
- const { self, token } = kefuData;
- login2(token.access_token);
- setUserInfo(self);
- });
+ response
+ .then(res => {
+ const { member, kefuData, deviceTotal } = res;
+ // 清空WebSocket连接状态
+ useWebSocketStore.getState().clearConnectionState();
+ login(res.token, member, deviceTotal);
+ const { self, token } = kefuData;
+ login2(token.access_token);
+ setUserInfo(self);
+ })
+ .catch(() => {
+ getVerifyCodeFunction();
+ });
};
// 登录处理
@@ -91,18 +117,10 @@ const Login: React.FC = () => {
Toast.show({ content: "请同意用户协议和隐私政策", position: "top" });
return;
}
- //获取存客宝
+ //获取触客宝
getToken(values);
};
- // 第三方登录处理
- const handleWechatLogin = () => {
- Toast.show({ content: "微信登录功能开发中", position: "top" });
- };
-
- const handleAppleLogin = () => {
- Toast.show({ content: "Apple登录功能开发中", position: "top" });
- };
const paddingTop = localStorage.getItem("paddingTop") || "44px";
return (
@@ -122,7 +140,7 @@ const Login: React.FC = () => {
-
存客宝
+
触客宝
登录您的账户继续使用
@@ -163,19 +181,12 @@ const Login: React.FC = () => {
{/* 手机号输入 */}
- +86
@@ -205,8 +216,28 @@ const Login: React.FC = () => {
)}
-
- {/* 验证码输入 */}
+ {activeTab == 1 && verify.verifyCodeImage && (
+
+
+
+

+
+
+ )}
+ {/* 验证码输入2 */}
{activeTab === 2 && (
{
我已阅读并同意
- 《存客宝用户协议》
+ 《触客宝用户协议》
和
《隐私政策》
@@ -263,44 +294,6 @@ const Login: React.FC = () => {
{loading ? "登录中..." : "登录"}
-
- {/* 分割线 */}
-
- 其他登录方式
-
-
- {/* 第三方登录 */}
-
diff --git a/Touchkebao/src/pages/login/api.ts b/Touchkebao/src/pages/login/api.ts
index 897abbc9..1203407a 100644
--- a/Touchkebao/src/pages/login/api.ts
+++ b/Touchkebao/src/pages/login/api.ts
@@ -1,5 +1,6 @@
import request from "@/api/request";
import request2 from "@/api/request2";
+
// 密码登录
export function loginWithPassword(params: any) {
return request("/v1/auth/login", params, "POST");
@@ -49,3 +50,8 @@ export function loginWithToken(params: any) {
export function getChuKeBaoUserInfo() {
return request2("/api/account/self", {}, "GET");
}
+
+//验证码
+export function getVerifyCode() {
+ return request("/v1/api/user/verify-code", {}, "GET");
+}
diff --git a/Touchkebao/src/pages/login/login.module.scss b/Touchkebao/src/pages/login/login.module.scss
index 7574341f..0f5b5ed4 100644
--- a/Touchkebao/src/pages/login/login.module.scss
+++ b/Touchkebao/src/pages/login/login.module.scss
@@ -1,3 +1,8 @@
+.verify-code-img {
+ width: 100px;
+ height: 40px;
+ background: #ccc;
+}
.login-page {
min-height: 100vh;
background: var(--primary-gradient);
diff --git a/Touchkebao/src/router/module/auth.tsx b/Touchkebao/src/router/module/auth.tsx
index 8d74fd49..c2188278 100644
--- a/Touchkebao/src/router/module/auth.tsx
+++ b/Touchkebao/src/router/module/auth.tsx
@@ -1,4 +1,4 @@
-import Login from "@/pages/login/login";
+import Login from "@/pages/login/Login";
import Guide from "@/pages/guide";
const authRoutes = [
diff --git a/Touchkebao/src/router/module/content.tsx b/Touchkebao/src/router/module/content.tsx
deleted file mode 100644
index 0b926be1..00000000
--- a/Touchkebao/src/router/module/content.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-import ContentLibraryList from "@/pages/mobile/mine/content/list/index";
-import ContentLibraryForm from "@/pages/mobile/mine/content/form/index";
-import MaterialsList from "@/pages/mobile/mine/content/materials/list/index";
-import MaterialForm from "@/pages/mobile/mine/content/materials/form/index";
-
-const contentRoutes = [
- {
- path: "/mine/content",
- element: ,
- auth: true,
- },
- {
- path: "/mine/content/new",
- element: ,
- auth: true,
- },
- {
- path: "/mine/content/edit/:id",
- element: ,
- auth: true,
- },
- {
- path: "/mine/content/materials/:id",
- element: ,
- auth: true,
- },
- {
- path: "/mine/content/materials/new/:id",
- element: ,
- auth: true,
- },
- {
- path: "/mine/content/materials/edit/:id/:materialId",
- element: ,
- auth: true,
- },
-];
-
-export default contentRoutes;
diff --git a/Touchkebao/src/router/module/mobile.tsx b/Touchkebao/src/router/module/mobile.tsx
new file mode 100644
index 00000000..e69de29b
diff --git a/Touchkebao/src/router/module/ckbox.tsx b/Touchkebao/src/router/module/pc.tsx
similarity index 100%
rename from Touchkebao/src/router/module/ckbox.tsx
rename to Touchkebao/src/router/module/pc.tsx
diff --git a/Touchkebao/src/router/module/scenarios.tsx b/Touchkebao/src/router/module/scenarios.tsx
deleted file mode 100644
index b40c82ec..00000000
--- a/Touchkebao/src/router/module/scenarios.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import ScenariosList from "@/pages/mobile/scenarios/list";
-import NewPlan from "@/pages/mobile/scenarios/plan/new";
-import ListPlan from "@/pages/mobile/scenarios/plan/list";
-
-const scenarioRoutes = [
- {
- path: "/scenarios",
- element: ,
- auth: true,
- },
- {
- path: "/scenarios/new",
- element: ,
- auth: true,
- },
- {
- path: "/scenarios/new/:scenarioId",
- element: ,
- auth: true,
- },
- {
- path: "/scenarios/edit/:planId",
- element: ,
- auth: true,
- },
- {
- path: "/scenarios/list/:scenarioId/:scenarioName",
- element: ,
- auth: true,
- },
-];
-
-export default scenarioRoutes;
diff --git a/Touchkebao/src/router/module/wechat-accounts.tsx b/Touchkebao/src/router/module/wechat-accounts.tsx
deleted file mode 100644
index 5de5e0ac..00000000
--- a/Touchkebao/src/router/module/wechat-accounts.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import WechatAccounts from "@/pages/mobile/mine/wechat-accounts/list";
-import WechatAccountDetail from "@/pages/mobile/mine/wechat-accounts/detail";
-
-const wechatAccountRoutes = [
- {
- path: "/wechat-accounts",
- element: ,
- auth: true,
- },
- {
- path: "/wechat-accounts/detail/:id",
- element: ,
- auth: true,
- },
-];
-
-export default wechatAccountRoutes;
diff --git a/Touchkebao/src/router/module/workspace.tsx b/Touchkebao/src/router/module/workspace.tsx
deleted file mode 100644
index a52762df..00000000
--- a/Touchkebao/src/router/module/workspace.tsx
+++ /dev/null
@@ -1,183 +0,0 @@
-import Workspace from "@/pages/mobile/workspace/main";
-import ListAutoLike from "@/pages/mobile/workspace/auto-like/list";
-import NewAutoLike from "@/pages/mobile/workspace/auto-like/new";
-import RecordAutoLike from "@/pages/mobile/workspace/auto-like/record";
-import AutoGroupList from "@/pages/mobile/workspace/auto-group/list";
-import AutoGroupDetail from "@/pages/mobile/workspace/auto-group/detail";
-import AutoGroupForm from "@/pages/mobile/workspace/auto-group/form";
-import GroupPush from "@/pages/mobile/workspace/group-push/list";
-import FormGroupPush from "@/pages/mobile/workspace/group-push/form";
-import DetailGroupPush from "@/pages/mobile/workspace/group-push/detail";
-import MomentsSync from "@/pages/mobile/workspace/moments-sync/list";
-import NewMomentsSync from "@/pages/mobile/workspace/moments-sync/new/index";
-import MomentsSyncRecord from "@/pages/mobile/workspace/moments-sync/record";
-import AIAssistant from "@/pages/mobile/workspace/ai-assistant/AIAssistant";
-import TrafficDistribution from "@/pages/mobile/workspace/traffic-distribution/list/index";
-import TrafficDistributionDetail from "@/pages/mobile/workspace/traffic-distribution/detail/index";
-import NewDistribution from "@/pages/mobile/workspace/traffic-distribution/form/index";
-import ContactImportList from "@/pages/mobile/workspace/contact-import/list";
-import ContactImportForm from "@/pages/mobile/workspace/contact-import/form";
-import ContactImportDetail from "@/pages/mobile/workspace/contact-import/detail";
-import PlaceholderPage from "@/components/PlaceholderPage";
-import AiAnalyzer from "@/pages/mobile/workspace/ai-analyzer";
-
-const workspaceRoutes = [
- {
- path: "/workspace",
- element: ,
- auth: true,
- },
- // 自动点赞
- {
- path: "/workspace/auto-like",
- element: ,
- auth: true,
- },
- {
- path: "/workspace/auto-like/new",
- element: ,
- auth: true,
- },
- {
- path: "/workspace/auto-like/record/:id",
- element: ,
- auth: true,
- },
- {
- path: "/workspace/auto-like/edit/:id",
- element: ,
- auth: true,
- },
- // 自动建群
- {
- path: "/workspace/auto-group",
- element: ,
- auth: true,
- },
- {
- path: "/workspace/auto-group/new",
- element: ,
- auth: true,
- },
- {
- path: "/workspace/auto-group/:id",
- element: ,
- auth: true,
- },
- {
- path: "/workspace/auto-group/:id/edit",
- element: ,
- auth: true,
- },
- // 群发推送
- {
- path: "/workspace/group-push",
- element: ,
- auth: true,
- },
- {
- path: "/workspace/group-push/:id",
- element: ,
- auth: true,
- },
- {
- path: "/workspace/group-push/new",
- element: ,
- auth: true,
- },
- {
- path: "/workspace/group-push/edit/:id",
- element: ,
- auth: true,
- },
- // 朋友圈同步
- {
- path: "/workspace/moments-sync",
- element: ,
- auth: true,
- },
- {
- path: "/workspace/moments-sync/new",
- element: ,
- auth: true,
- },
-
- {
- path: "/workspace/moments-sync/record/:id",
- element: ,
- auth: true,
- },
- {
- path: "/workspace/moments-sync/edit/:id",
- element: ,
- auth: true,
- },
- // AI助手
- {
- path: "/workspace/ai-assistant",
- element: ,
- auth: true,
- },
- // AI数据分析
- {
- path: "/workspace/ai-analyzer",
- element: ,
- auth: true,
- },
- // AI策略优化
- {
- path: "/workspace/ai-strategy",
- element: ,
- auth: true,
- },
- // AI销售预测
- {
- path: "/workspace/ai-forecast",
- element: ,
- auth: true,
- },
- // 流量分发
- {
- path: "/workspace/traffic-distribution",
- element: ,
- auth: true,
- },
- {
- path: "/workspace/traffic-distribution/new",
- element: ,
- auth: true,
- },
- {
- path: "/workspace/traffic-distribution/edit/:id",
- element: ,
- auth: true,
- },
- {
- path: "/workspace/traffic-distribution/:id",
- element: ,
- auth: true,
- },
- // 通讯录导入
- {
- path: "/workspace/contact-import/list",
- element: ,
- auth: true,
- },
- {
- path: "/workspace/contact-import/form",
- element: ,
- auth: true,
- },
- {
- path: "/workspace/contact-import/form/:id",
- element: ,
- auth: true,
- },
- {
- path: "/workspace/contact-import/detail/:id",
- element: ,
- auth: true,
- },
-];
-
-export default workspaceRoutes;
diff --git a/Touchkebao/src/store/module/user.ts b/Touchkebao/src/store/module/user.ts
index cf9b897e..af1ab67b 100644
--- a/Touchkebao/src/store/module/user.ts
+++ b/Touchkebao/src/store/module/user.ts
@@ -69,14 +69,7 @@ export const useUserStore = createPersistStore(
set({ user, token, isLoggedIn: true });
Toast.show({ content: "登录成功", position: "top" });
-
- // 根据设备数量判断跳转
- if (deviceTotal > 0) {
- window.location.href = "/";
- } else {
- // 没有设备,跳转到引导页面
- window.location.href = "/guide";
- }
+ window.location.href = "/ckbox/weChat";
},
login2: token2 => {
localStorage.setItem("token2", token2);