Files
wecom_it_smart_desk/frontend-h5/dist-clean/assets/Login-DyNoXiTS.js
T
Simon bea288e414 feat: 2026-07-11 全量更新 - 代办集成+会议室预定+知识迭代修复+UI统一+Bug修复
== 已部署上线 (9项) ==
- 代办事项真实数据源集成 (企微审批API 8bug修复链)
- H5/坐席端 Logo样式统一+绿色背景
- 视频引导页修复 (localStorage key v2)
- 坐席端 v9 Vue版本修复 (ElMessage._context)
- 截图按钮 v10 修复 (getDisplayMedia user gesture)
- 扫码样式恢复+H5扫码登录跳转修复
- H5截图快捷键提示

== 代码完成待部署 (3项) ==
- 知识迭代3Bug修复 (#8 POST端点/#7 MERGE幂等/#6 过期检查)
- 会议室预定-小鱼易联终端 (40文件, 40/40测试通过)
- IT资产升级审批推送 (asset_service.py)

== 需求文档 (2项) ==
- 坐席端AI辅助消息框-PRD (4项新功能确认)
- 坐席端布局优化建议 v2.0 (7天计划)

== 新增文档 ==
- 日报-2026-07-11.md
- 知识迭代Bug修复报告-20260711.md
- 会议室预定-部署指南.md
- CHANGELOG.md 更新

== 测试 ==
- test_todo_integration.py: 40/40
- test_meetingroom.py: 40/40
- test_bugfix_ki_suggestions.py: 21/21
2026-07-11 23:13:10 +08:00

2 lines
3.5 KiB
JavaScript

import{a6 as A,af as N,ag as P,ah as U,ai as O,a3 as n,a4 as o,aj as r,a5 as z,a8 as g,L as E,ak as Q,al as q,b as R,I as j,am as S,an as D,ao as l,s as d,V as T,a2 as I}from"./index-Yb6N__5M.js";import{g as M,h as W,a as $}from"./auth-BDitiLN6.js";const F={class:"login-page"},G={class:"login-card"},H={key:0,class:"qr-login"},J={class:"qr-container"},K={key:0,class:"qr-loading"},X={key:1,class:"qr-code"},Y=["src"],Z={key:2,class:"qr-error"},ee={key:0,class:"scan-tip"},ae={key:1,class:"loading-container"},te=A({__name:"Login",setup(se){const v=N(),i=P(),m=l(!0),h=l(""),y=l(!1),p=l(""),s=l(!1),f=l("请稍候...");let _=null,w="";function x(){return typeof navigator>"u"?!1:/wxwork/i.test(navigator.userAgent)}async function c(){y.value=!0,p.value="waiting";try{const a=await M();h.value=`data:image/png;base64,${a.qrcode_png_base64}`,w=a.ticket,b()}catch(a){console.error("获取二维码失败:",a),d("获取二维码失败,请重试")}finally{y.value=!1}}async function C(){if(w)try{const a=await $(w);a.status==="scanned"?p.value="scanned":a.status==="confirmed"&&a.token?(u(),await V(a.token,a.user_info)):a.status==="expired"?(u(),d("二维码已过期,请重新扫码"),c()):a.status==="cancelled"&&(u(),d("扫码已取消"),p.value="waiting",c())}catch(a){console.warn("轮询扫码状态失败:",a)}}function b(){u(),_=setInterval(C,2e3)}function u(){_&&(clearInterval(_),_=null)}async function V(a,e){s.value=!0,f.value="登录中...";try{if(e!=null&&e.is_new_user){v.push({name:"Bind",query:{userid:e.userid,name:e.name}});return}i.setToken(a),e&&i.setUserInfo(e),T("登录成功"),v.push({name:"ChatView"})}catch(t){console.error("登录失败:",t),d("登录失败,请重试")}finally{s.value=!1}}async function L(a,e){s.value=!0,f.value="授权中...";try{const t=await W(a,e);if(t.is_new_user){v.push({name:"Bind",query:{userid:t.user_info.userid,name:t.user_info.name}});return}i.setToken(t.token),i.setUserInfo(t.user_info),T("登录成功"),v.push({name:"ChatView"})}catch(t){console.error("OAuth回调处理失败:",t),d("授权失败,请重试")}finally{s.value=!1}}return U(async()=>{const a=new URLSearchParams(window.location.search),e=a.get("code"),t=a.get("state");if(e){await L(e,t||void 0);return}if(x()){s.value=!0,f.value="正在跳转企微授权...";try{await i.redirectToOAuth()}catch(k){console.error("跳转授权失败:",k),m.value=!0,c()}finally{s.value=!1}}else m.value=!0,c()}),O(()=>{u()}),(a,e)=>{const t=E,k=R,B=j;return n(),o("div",F,[r("div",G,[e[5]||(e[5]=z('<div class="login-header" data-v-9ae7a51a><div class="login-logo-row" data-v-9ae7a51a><span class="logo-block" data-v-9ae7a51a>IT</span><h1 class="login-title" data-v-9ae7a51a>智能IT服务</h1></div><p class="login-subtitle" data-v-9ae7a51a>扫码登录</p></div>',1)),m.value?(n(),o("div",H,[r("div",J,[y.value?(n(),o("div",K,[g(t,{type:"spinner",size:"32px"}),e[0]||(e[0]=r("p",null,"加载中...",-1))])):h.value?(n(),o("div",X,[r("img",{src:h.value,alt:"企微扫码登录"},null,8,Y)])):(n(),o("div",Z,[e[2]||(e[2]=r("p",null,"获取二维码失败",-1)),g(k,{size:"small",onClick:c},{default:Q(()=>[...e[1]||(e[1]=[q("重试",-1)])]),_:1})]))]),e[4]||(e[4]=r("p",{class:"qr-hint"},"请使用企业微信扫码登录",-1)),p.value==="scanned"?(n(),o("p",ee,[g(B,{name:"checked"}),e[3]||(e[3]=q(" 已扫码,请在手机确认 ",-1))])):S("",!0)])):S("",!0),s.value?(n(),o("div",ae,[g(t,{type:"spinner",size:"40px"}),r("p",null,D(f.value),1)])):S("",!0)])])}}}),re=I(te,[["__scopeId","data-v-9ae7a51a"]]);export{re as default};