const app = getApp() Page({ data: { statusBarHeight: 44, auditMode: false, title: '', content: '', saving: false, meNickname: '', }, /** 遮挡层拦截滚动穿透 */ preventMove() {}, syncAuditMode() { const audit = !!app.globalData.auditMode this.setData({ auditMode: audit }) return audit }, onLoad() { this.setData({ statusBarHeight: app.globalData.statusBarHeight || 44, meNickname: String(app.globalData.userInfo?.nickname || '我').trim() || '我', }) this.syncAuditMode() try { app.getAuditMode && app.getAuditMode().catch(() => {}) } catch (_) {} this.ensureSuperIdentity() }, onShow() { this.syncAuditMode() try { app.getAuditMode && app.getAuditMode().catch(() => {}) } catch (_) {} }, async ensureSuperIdentity() { const userId = app.globalData.userInfo?.id if (!app.globalData.isLoggedIn || !userId) { wx.showToast({ title: '请先登录', icon: 'none' }) setTimeout(() => wx.navigateBack(), 400) return } try { const res = await app.request({ url: `/api/miniprogram/my/super-stats?userId=${encodeURIComponent(userId)}`, silent: true, }) if (!(res?.success && res.data?.isSuperIndividual === true)) { wx.showToast({ title: '仅超级个体可发文章', icon: 'none' }) setTimeout(() => wx.navigateBack(), 400) } } catch (_) { wx.showToast({ title: '身份校验失败', icon: 'none' }) setTimeout(() => wx.navigateBack(), 400) } }, onTitleInput(e) { this.setData({ title: e.detail.value || '' }) }, onContentInput(e) { this.setData({ content: e.detail.value || '' }) }, insertMentionSelf() { if (this.data.auditMode) return const nick = this.data.meNickname || '我' this.setData({ content: `${this.data.content}@${nick} ` }) }, insertHashLink() { if (this.data.auditMode) return this.setData({ content: `${this.data.content}#链接(https://)` }) }, async submitArticle() { if (this.data.auditMode || app.globalData.auditMode) return if (this.data.saving) return const userId = app.globalData.userInfo?.id const title = String(this.data.title || '').trim() const content = String(this.data.content || '').trim() if (!title || !content) { wx.showToast({ title: '请填写标题和正文', icon: 'none' }) return } this.setData({ saving: true }) try { const res = await app.request({ url: '/api/miniprogram/super/articles', method: 'POST', data: { userId, title, content }, }) if (!res?.success) throw new Error(res?.error || '发布失败') wx.showToast({ title: '发布成功', icon: 'success' }) setTimeout(() => wx.navigateBack(), 400) } catch (e) { wx.showToast({ title: e.message || '发布失败', icon: 'none' }) } finally { this.setData({ saving: false }) } }, goBack() { wx.navigateBack({ fail: () => wx.switchTab({ url: '/pages/my/my' }) }) }, })