| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import {
- APP_MAIL_CHECK,
- APP_MAIL_DELETE,
- APP_MAIL_LIST,
- APP_MAIL_READ,
- APP_MAIL_TAKE,
- } from '../../api';
- import { Http } from '../../request';
- import { success } from '@scripts/api/ApiHelper';
- import { IMailActionData, IMailCheckData, IMailItem, IMailPageData } from './data';
- class MailStore {
- private _pageData: IMailPageData = null;
- private _newMailCount = 0;
- private _mailList: IMailItem[] = [];
- private _readMailID = 0;
- public get pageData() { return this._pageData; }
- public get newMailCount() { return this._newMailCount; }
- public get mailList() { return this._mailList; }
- public get readMailID() { return this._readMailID; }
- getMail(mailID: number) {
- return this._mailList.find(item => Number(item.MailID) === Number(mailID)) || null;
- }
- selectMail(mailID: number) {
- this._readMailID = mailID;
- }
- async reqMailList() {
- const res = await Http.call<IMailPageData>(APP_MAIL_LIST);
- if (success(res) && res.data) {
- this._pageData = res.data;
- this._mailList = Array.isArray(res.data.data) ? res.data.data : [];
- return true;
- }
- return false;
- }
- async reqMailCheck() {
- const res = await Http.call<IMailCheckData>(APP_MAIL_CHECK);
- if (success(res) && res.data) {
- const count = Number(res.data.new || 0);
- this._newMailCount = Number.isFinite(count) ? Math.max(0, count) : 0;
- return true;
- }
- return false;
- }
- async reqMailRead(mailID: number) {
- const res = await Http.call<IMailActionData>(APP_MAIL_READ, { MailID: mailID });
- if (success(res)) {
- const responseMailID = Number(res.data?.MailID ?? mailID);
- const item = this.getMail(responseMailID);
- if (item && Number(item.MailStatus) < 2) {
- item.MailStatus = '2';
- this._newMailCount = Math.max(0, this._newMailCount - 1);
- }
- return true;
- }
- return false;
- }
- async reqMailDelete(mailID: number) {
- const res = await Http.call(APP_MAIL_DELETE, { MailID: mailID });
- if (success(res)) {
- if (mailID === 0) {
- this._mailList = [];
- } else {
- this._mailList = this._mailList.filter(item => Number(item.MailID) !== Number(mailID));
- }
- if (this._readMailID === mailID) this._readMailID = 0;
- return true;
- }
- return false;
- }
- async reqMailTake(mailID: number) {
- const res = await Http.call<IMailActionData>(APP_MAIL_TAKE, { MailID: mailID });
- if (success(res)) {
- const responseMailID = Number(res.data?.MailID ?? mailID);
- const item = this.getMail(responseMailID);
- if (item) item.MailStatus = '3';
- return true;
- }
- return false;
- }
- clear() {
- this._pageData = null;
- this._newMailCount = 0;
- this._mailList = [];
- this._readMailID = 0;
- }
- }
- export const mailStore = new MailStore();
|