188 lines
4.6 KiB
JavaScript
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 []
|
|
}
|
|
}
|