import { API_BASE_URL, apiRequest, getCurrentUser } from '../assistant/chat-service' import { clearAuthStorage, ensureLoggedIn, get, hasToken } from '../../utils/request' import { getModuleMeta } from '../../utils/gxmu/config' const LOCAL_DECLARE_PREFIX = 'gxmu_form_draft_' const LOCAL_PROFILE_OVERRIDE_PREFIX = 'mine_profile_override_' export { getCurrentUser } export { hasToken, ensureLoggedIn } export function logout() { clearAuthStorage() } function getProfileOverrideStorageKey(userId) { const normalizedUserId = String(userId || '').trim() return `${LOCAL_PROFILE_OVERRIDE_PREFIX}${normalizedUserId || 'default'}` } export function getLocalProfileOverride(userId) { try { return uni.getStorageSync(getProfileOverrideStorageKey(userId)) || {} } catch (error) { return {} } } export function saveLocalProfileOverride(userId, payload) { const value = payload && typeof payload === 'object' ? payload : {} uni.setStorageSync(getProfileOverrideStorageKey(userId), value) return value } export function getUserProfile() { return apiRequest({ url: `${API_BASE_URL}/auth/user`, method: 'GET' }) } export function updateUserProfileData(data) { return apiRequest({ url: `${API_BASE_URL}/system/user/update-data`, method: 'POST', data }) } export function listOrganizations(params) { return get('/system/organization', params) } export function listManuscript(params) { return apiRequest({ url: `${API_BASE_URL}/cms/manuscript`, method: 'GET', data: params }) } export function userPageQmgcForm(params) { return apiRequest({ url: `${API_BASE_URL}/gxmu/qmgc-form/userPage`, method: 'GET', data: params }) } export function listAvailableDeclare(params) { return apiRequest({ url: `${API_BASE_URL}/gxmu/declare`, method: 'GET', data: params }) } export function formatDateTime(value) { if (!value) { return '-' } const date = new Date(String(value).replace(/-/g, '/')) if (Number.isNaN(date.getTime())) { return value } const pad = (item) => String(item).padStart(2, '0') return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}` } export function getLatestReview(reviewList) { if (!Array.isArray(reviewList) || !reviewList.length) { return null } return reviewList[reviewList.length - 1] || null } export function getReviewStatusMeta(reviewList) { const latest = getLatestReview(reviewList) if (!latest) { return { text: '未审核', tone: 'default' } } if (latest.status === 1) { return { text: '通过', tone: 'success' } } if (latest.status === 0 || latest.status === 2) { return { text: '不通过', tone: 'danger' } } return { text: '待审核', tone: 'warning' } } export function getManuscriptStatusMeta(record) { const reviewMeta = getReviewStatusMeta(record && record.reviewList) if (reviewMeta.text !== '未审核') { return reviewMeta } if (record && Number(record.status) === 1) { return { text: '已发布', tone: 'success' } } if (record && Number(record.status) === 0) { return { text: '待审核', tone: 'warning' } } return { text: '未审核', tone: 'default' } } export function getLocalDeclareRecords() { try { const storageInfo = uni.getStorageInfoSync() const keys = (storageInfo.keys || []).filter((key) => key.indexOf(LOCAL_DECLARE_PREFIX) === 0) return keys .map((key) => { const draft = uni.getStorageSync(key) if (!draft || !draft.formData) { return null } const moduleCode = draft.moduleCode || '' if (!moduleCode) { return null } const moduleMeta = getModuleMeta(moduleCode) const year = String((draft.formData && draft.formData.year) || '').trim() return { key, moduleCode, title: (moduleMeta && moduleMeta.title) || '未命名申报', group: (moduleMeta && moduleMeta.group) || '申报项目', icon: (moduleMeta && moduleMeta.icon) || '申', year, savedAt: draft.savedAt || '', status: draft.status === 'submitted' ? '已提交' : '草稿', formData: draft.formData, route: `/pages/gxmu/form?code=${encodeURIComponent(moduleCode)}&year=${encodeURIComponent(year)}&declareTitle=${encodeURIComponent((moduleMeta && moduleMeta.title) || '申报表')}` } }) .filter(Boolean) .sort((left, right) => { const leftTime = new Date(String((left && left.savedAt) || '').replace(/-/g, '/')).getTime() const rightTime = new Date(String((right && right.savedAt) || '').replace(/-/g, '/')).getTime() return (Number.isNaN(rightTime) ? 0 : rightTime) - (Number.isNaN(leftTime) ? 0 : leftTime) }) } catch (error) { return [] } }