| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- import { OA_H5_ORIGIN } from './config.js'
- import { getToken } from './auth.js'
- function trimSlash(s) {
- return String(s || '').replace(/\/$/, '')
- }
- /** 小程序基础库未必有 URLSearchParams,用手写 query 更稳 */
- function buildQuery(params) {
- const parts = []
- Object.keys(params || {}).forEach((k) => {
- const v = params[k]
- if (v == null || v === '') return
- parts.push(encodeURIComponent(k) + '=' + encodeURIComponent(String(v)))
- })
- return parts.join('&')
- }
- function withQuery(path, params) {
- const base = trimSlash(OA_H5_ORIGIN) + path
- const qs = buildQuery(params)
- return qs ? base + '?' + qs : base
- }
- /** 水槽页 URL(须带小程序登录 token,供 OA H5 调 /api) */
- export function buildFormSinkUrl() {
- const token = getToken()
- return withQuery('/oa-form-sink', token ? { token } : {})
- }
- /** 正式发起页 URL(与水槽同一套拼法,仅多 appId/draftId/fromInstanceId) */
- export function buildOaStartUrl({ appId, draftId, fromInstanceId } = {}) {
- const token = getToken()
- const params = {}
- if (appId) params.appId = appId
- if (draftId) params.draftId = draftId
- if (fromInstanceId) params.fromInstanceId = fromInstanceId
- if (token) params.token = token
- return withQuery('/oa-start', params)
- }
- /** 审批详情页 URL(须带 token;mode 为 view | approve;autoPrint=1 加载后自动调打印) */
- export function buildOaDetailUrl({ instanceId, taskId, mode, autoPrint } = {}) {
- const token = getToken()
- const params = {}
- if (instanceId) params.instanceId = instanceId
- if (taskId) params.taskId = taskId
- if (mode) params.mode = mode // view | approve
- if (autoPrint) params.autoPrint = '1'
- if (token) params.token = token
- return withQuery('/oa-detail', params)
- }
- const TITLE_KEY = 'oa_start_nav_title'
- /** 跳转前缓存流程名(勿把中文放进 navigateTo / web-view URL,微信易白屏) */
- export function stashOaStartTitle(name) {
- const t = String(name || '').trim()
- try {
- if (t) uni.setStorageSync(TITLE_KEY, t)
- else uni.removeStorageSync(TITLE_KEY)
- } catch (_) {
- /* ignore */
- }
- }
- export function takeOaStartTitle() {
- try {
- const t = String(uni.getStorageSync(TITLE_KEY) || '').trim()
- uni.removeStorageSync(TITLE_KEY)
- return t
- } catch (_) {
- return ''
- }
- }
- const DETAIL_TITLE_KEY = 'oa_detail_nav_title'
- /** 跳转前缓存详情标题(勿把中文放进 navigateTo / web-view URL) */
- export function stashOaDetailTitle(name) {
- const t = String(name || '').trim()
- try {
- if (t) uni.setStorageSync(DETAIL_TITLE_KEY, t)
- else uni.removeStorageSync(DETAIL_TITLE_KEY)
- } catch (_) {
- /* ignore */
- }
- }
- export function takeOaDetailTitle() {
- try {
- const t = String(uni.getStorageSync(DETAIL_TITLE_KEY) || '').trim()
- uni.removeStorageSync(DETAIL_TITLE_KEY)
- return t
- } catch (_) {
- return ''
- }
- }
|