提交 5a1afe03 authored 作者: 王鹏飞's avatar 王鹏飞

feat: 更新文件预览功能,支持学校模式下使用自建服务

上级 f09fade7
/**
* 学校本地部署时,前后端在同一台机器上,端口固定。
* 通过自动检测当前页面 hostname(IP 地址),推导所有后端服务地址。
*
* 非 IP 访问(如域名 dev.ezijing.com / saas-lab.ezijing.com)时,
* 回退到 .env 中的显式配置。
* school 模式从浏览器地址栏读取主机,其他模式使用环境变量。
*/
function isIPAddress(hostname: string): boolean {
return /^\d+\.\d+\.\d+\.\d+$/.test(hostname)
}
const host = isIPAddress(window.location.hostname) ? window.location.hostname : ''
const schoolHost = import.meta.env.MODE === 'school' ? window.location.hostname : ''
export const urls = {
/** 登录 — 端口 1001 */
get login() {
return host ? `http://${host}:1001/auth/login/index` : import.meta.env.VITE_LOGIN_URL
},
login: schoolHost ? `http://${schoolHost}:1001/auth/login/index` : import.meta.env.VITE_LOGIN_URL,
/** 商务数据分析师登录 — 端口 1001 */
get swsjfxsLogin() {
return host ? `http://${host}:1001/swsjfxs/login/index` : import.meta.env.VITE_SWSJFXS_LOGIN_URL
},
swsjfxsLogin: schoolHost ? `http://${schoolHost}:1001/swsjfxs/login/index` : import.meta.env.VITE_SWSJFXS_LOGIN_URL,
/** 答疑中心 — 端口 1004 */
get qaCenter() {
return host ? `http://${host}:1004` : import.meta.env.VITE_QA_CENTER_URL
},
qaCenter: schoolHost ? `http://${schoolHost}:1004` : import.meta.env.VITE_QA_CENTER_URL,
/** 数字营销实验平台 — 端口 1006 */
get dml() {
return host ? `http://${host}:1006` : import.meta.env.VITE_DML_URL
},
dml: schoolHost ? `http://${schoolHost}:1006` : import.meta.env.VITE_DML_URL,
/** 数字营销专业版 — 端口 1007 */
get dmlPro() {
return host ? `http://${host}:1007` : import.meta.env.VITE_DML_PRO_URL
},
dmlPro: schoolHost ? `http://${schoolHost}:1007` : import.meta.env.VITE_DML_PRO_URL,
/** 理论学习 — 端口 1009 */
get learn() {
return host ? `http://${host}:1009` : import.meta.env.VITE_SAAS_LEARN_URL
},
learn: schoolHost ? `http://${schoolHost}:1009` : import.meta.env.VITE_SAAS_LEARN_URL,
/** 实验 Lab URL — 端口 1012 */
get lab() {
return host
? `http://${host}:1012/bi/viewer?proc=0&action=index`
: import.meta.env.VITE_LAB_URL
},
lab: schoolHost
? `http://${schoolHost}:1012/bi/viewer?proc=0&action=index`
: import.meta.env.VITE_LAB_URL,
/** BI 数据看板 — 端口 1014 */
get bi() {
return host ? `http://${host}:1014/data/dashboard` : import.meta.env.VITE_SAAS_BI_URL
},
bi: schoolHost ? `http://${schoolHost}:1014/data/dashboard` : import.meta.env.VITE_SAAS_BI_URL,
/** 直播练习 — 端口 1015 */
get dmlLive() {
return host ? `http://${host}:1015/live/test` : import.meta.env.VITE_SAAS_DML_LIVE_URL
},
dmlLive: schoolHost ? `http://${schoolHost}:1015/live/test` : import.meta.env.VITE_SAAS_DML_LIVE_URL,
/** AI 平台 — 端口 1016 */
get ai() {
return host ? `http://${host}:1016` : import.meta.env.VITE_SAAS_AI_URL
},
ai: schoolHost ? `http://${schoolHost}:1016` : import.meta.env.VITE_SAAS_AI_URL,
/** Office 文档预览 — 端口 8012 */
filePreview: schoolHost ? `http://${schoolHost}:8012` : '',
}
......@@ -3,11 +3,11 @@
* - 线上环境:Microsoft Office Online Viewer
* - 学校本地部署:自建 onlinePreview 服务(端口 8012)
*/
import { urls } from './env'
export function getOnlinePreviewUrl(url: string): string {
if (import.meta.env.MODE === 'school') {
const host = window.location.hostname
return `http://${host}:8012/onlinePreview?url=${encodeURIComponent(btoa(url))}`
return `${urls.filePreview}/onlinePreview?url=${encodeURIComponent(btoa(url))}`
}
return `https://view.officeapps.live.com/op/view.aspx?src=${url}`
}
Markdown 格式
0% 或
您添加了 0 人 到此讨论。请谨慎行事。
请先完成此评论的编辑!
请 注册 或者 后发表评论