Files
tuanwei-uniapp/pages/mine/service.js
2026-07-20 11:56:02 +08:00

188 lines
4.6 KiB
JavaScript

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 []
}
}