// API 基础配置(山峡化工 miniprogram) // 环境切换:改 config/env.js 中的 APP_ENV(local | test | testLocalH5 | production) // 发版:APP_ENV = 'production' 后执行 npm run release:check-api // // 注意:必须直接 re-export env 中的 URL,不要用 const 再拷一份。 // 热更新只重载 env.js 时,拷贝版 API_BASE 会仍指向旧环境(本地签发 ticket、生产打开 H5 → 401)。 import { APP_ENV, API_BASE_URL, CURRENT_ENV, IS_PRODUCTION, WECHAT_MP_APPID, resolveApiBase, resolveWebOrigin } from '@/config/env' export { APP_ENV, CURRENT_ENV, IS_PRODUCTION, WECHAT_MP_APPID, resolveApiBase, resolveWebOrigin } /** @deprecated 热更新可能仍是旧值;请求请用 resolveApiBase() */ export const BASE_URL = API_BASE_URL /** @deprecated 热更新可能仍是旧值;请求请用 resolveApiBase() */ export const API_BASE = API_BASE_URL console.log('[ENV]', APP_ENV, CURRENT_ENV.label, resolveApiBase(), resolveWebOrigin()) /** 认证相关路径(当前复用 web-admin 公共登录接口) */ export const AUTH_API = { LOGIN_RSA_PUBLIC_KEY: '/web/auth/login-rsa-public-key', LOGIN: '/web/auth/login', WECHAT_LOGIN: '/mini/auth/wechat-login', WEB_QR_SCANNED: '/mini/auth/web-qr-scanned', WEB_QR_CONFIRM: '/mini/auth/web-qr-confirm', LOGOUT: '/web/auth/logout', CURRENT_USER: '/web/auth/current-user', REFRESH_TOKEN: '/web/auth/refresh-token', MENU_CODES: '/web/auth/menu-codes', MP_WEBVIEW_TICKET: '/web/auth/mp-webview-ticket' } /** * 上传接口(multipart,须在 API_ENCRYPT_EXCLUDE_PATHS 中) * 响应字段兼容 data.url / data.fileUrl;P0 复用管理端附件上传。 * 后续可切换为专用 /mini/.../upload/image。 */ export const UPLOAD_API = { IMAGE: '/web/admin/attachment/upload' } /** Tab / 业务页路径 */ export const PAGE_PATHS = { login: '/pages/login/login', home: '/pages/home/home', todo: '/pages/todo/todo', workbench: '/pages/workbench/workbench', wechatOfficialAccount: '/pages/common/wechat-official-account', wechatBindingAuthorize: '/pages/common/wechat-binding-authorize', mine: '/pages/mine/mine', bizPlaceholder: '/pages/common/biz-placeholder', dbDashboard: '/pages/db/dashboard/index', dbPlansList: '/pages/db/plans/list', dbPlansDetail: '/pages/db/plans/detail', dbInventoryList: '/pages/db/inventory/list', dbInventoryDetail: '/pages/db/inventory/detail', dbWeighingList: '/pages/db/weighing/list', dbWeighingDetail: '/pages/db/weighing/detail', bxAdvanceApply: '/pages/bx/advance/list', bxAdvanceApplyForm: '/pages/bx/advance/apply', bxAdvanceDetail: '/pages/bx/advance/detail', bxReimburseApply: '/pages/bx/reimburse/list', bxReimburseApplyForm: '/pages/bx/reimburse/apply', bxReimburseDetail: '/pages/bx/reimburse/detail', bxMine: '/pages/bx/mine/list', bxAll: '/pages/bx/all/list', bxInvoiceMine: '/pages/bx/invoice/mine', bxInvoiceAdmin: '/pages/bx/invoice/admin', bxExpenseItem: '/pages/bx/admin/expense-item', bxWfAdvance: '/pages/bx/admin/wf-advance', bxWfReimburse: '/pages/bx/admin/wf-reimburse', plFuelRegister: '/pages/pl/fuel-register/list', plFuelRegisterForm: '/pages/pl/fuel-register/form', plVehicleRechargeApply: '/pages/pl/vehicle-recharge-apply/list', plVehicleRechargeApplyForm: '/pages/pl/vehicle-recharge-apply/form', plTransportPlan: '/pages/pl/transport-plan/list', plTransportPlanDetail: '/pages/pl/transport-plan/detail', plDriverPlan: '/pages/pl/driver-plan/list', plDriverPlanDetail: '/pages/pl/driver-plan/detail', mpWebview: '/pages/common/mp-webview' } /** 工作台菜单 code → 页面路径 */ export const WORKBENCH_ROUTE_MAP = { 'db-dashboard': PAGE_PATHS.dbDashboard, 'db-plans': PAGE_PATHS.dbPlansList, 'db-inventory': PAGE_PATHS.dbInventoryList, 'db-weighing': PAGE_PATHS.dbWeighingList, 'bx-advance-apply': PAGE_PATHS.bxAdvanceApply, 'bx-reimburse-apply': PAGE_PATHS.bxReimburseApply, 'bx-mine': PAGE_PATHS.bxMine, 'bx-all': PAGE_PATHS.bxAll, 'bx-invoice-mine': PAGE_PATHS.bxInvoiceMine, 'bx-invoice-admin': PAGE_PATHS.bxInvoiceAdmin, 'bx-expense-item': PAGE_PATHS.bxExpenseItem, 'bx-wf-advance': PAGE_PATHS.bxWfAdvance, 'bx-wf-reimburse': PAGE_PATHS.bxWfReimburse, 'pl-fuel-register': PAGE_PATHS.plFuelRegister, 'pl-vehicle-recharge-apply': PAGE_PATHS.plVehicleRechargeApply, 'pl-transport-plan': PAGE_PATHS.plTransportPlan, 'pl-driver-plan': PAGE_PATHS.plDriverPlan, 'pl-plan-webview': PAGE_PATHS.mpWebview + '?path=' + encodeURIComponent('/m/pl/plan'), 'pl-dispatch-calendar-webview': PAGE_PATHS.mpWebview + '?path=' + encodeURIComponent('/m/pl/dispatch-calendar'), 'pl-plan-cert-webview': PAGE_PATHS.mpWebview + '?path=' + encodeURIComponent('/m/pl/plan-cert'), 'crm-product-webview': PAGE_PATHS.mpWebview + '?path=' + encodeURIComponent('/m/crm/product'), 'crm-customer-webview': PAGE_PATHS.mpWebview + '?path=' + encodeURIComponent('/m/crm/customer'), 'crm-quote-webview': PAGE_PATHS.mpWebview + '?path=' + encodeURIComponent('/m/crm/quote'), 'crm-quote-approval-webview': PAGE_PATHS.mpWebview + '?path=' + encodeURIComponent('/m/crm/quote/approval'), 'crm-contract-webview': PAGE_PATHS.mpWebview + '?path=' + encodeURIComponent('/m/crm/contract'), 'crm-contract-approval-webview': PAGE_PATHS.mpWebview + '?path=' + encodeURIComponent('/m/crm/contract/approval') } export const TOKEN_KEY = 'sx_token' export const REFRESH_TOKEN_KEY = 'sx_refresh_token' export const USER_INFO_KEY = 'sx_user_info'