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 ? "登录中..." : "登录"} - - {/* 分割线 */} -
- 其他登录方式 -
- - {/* 第三方登录 */} -
-
-
- - - - -
- 微信 -
-
-
- - - -
- Apple -
-
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);