123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278 |
- import { StoreOptions } from 'vuex'
- import Vue from 'vue'
- import {
- getHomeHot,
- getHomeActivity,
- doSearchDocs,
- getMyLibList,
- getDetails,
- getShow,
- getDown,
- getListDetail,
- getRemove,
- getAdd,
- getCoin,
- getShare,
- getDocPay,
- getIndexTags,
- getAccountInfo,
- getUserID
- } from '@/api/main'
- interface InterfaceStore<S> extends StoreOptions<S> {
- namespaced?: boolean;
- }
- type APIStructure = Record<string, any>;
- type modulesOption = InterfaceStore<any>;
- function recoveryPageData (key: string, defaultValues = {}) {
- return sessionStorage.getItem(key) ? JSON.parse(sessionStorage.getItem(key) || '') : defaultValues
- }
- function checkType (type: string | number) {
- let typeStr = type
- switch (type) {
- case 1: {
- typeStr = 'word'
- break
- }
- case 2: {
- typeStr = 'pdf'
- break
- }
- case 3: {
- typeStr = 'excel'
- break
- }
- case 4: {
- typeStr = 'ppt'
- break
- }
- case 'doc': {
- typeStr = 'word'
- break
- }
- case 'xls': {
- typeStr = 'excel'
- break
- }
- }
- return typeStr
- }
- function formatData (v: APIStructure) {
- return {
- img: v?.docImg,
- type: checkType(v?.docFileType),
- id: v.docId,
- title: v?.docName || v?.docTitle,
- money: v.price,
- size: v?.docFileSize,
- page: v?.docPageSize,
- down: v?.downTimes,
- contribution: v?.sourceUserId
- }
- }
- const modulesOption: modulesOption = {
- namespaced: true,
- state: {
- // 页面数据缓存(用于跳出页面返回时恢复)
- homePageData: recoveryPageData('jy-docs-home-page'),
- searchPageData: recoveryPageData('jy-docs-search-page'),
- userLib: recoveryPageData('jy-docs-user-lib'),
- loginInfo: {}
- },
- mutations: {
- // 保存首页数据
- saveHomeData (state, data) {
- for (const key in data) {
- Vue.set(state.homePageData, key, data[key])
- }
- sessionStorage.setItem('jy-docs-home-page', JSON.stringify(state.homePageData))
- },
- saveLoginInfo (state, data) {
- state.loginInfo = data.data
- if (data.data.userId) {
- sessionStorage.setItem('jy-login-info', JSON.stringify(data.data))
- } else {
- sessionStorage.removeItem('jy-login-info')
- }
- },
- // 搜索页面数据
- saveSearchPageState (state, data) {
- console.log(data)
- for (const key in data) {
- state.searchPageData[key] = data[key]
- }
- sessionStorage.setItem('jy-docs-search-page', JSON.stringify(data))
- },
- // 清除搜索页面数据
- clearSearchPageState (state) {
- state.searchPageData = {}
- sessionStorage.setItem('jy-docs-search-page', JSON.stringify({}))
- },
- // 我的文库页面数据
- saveMyLibState (state, data) {
- for (const key in data) {
- state.userLib[key] = data[key]
- }
- sessionStorage.setItem('jy-docs-user-lib', JSON.stringify(data))
- },
- // 清除我的文库页面数据
- clearMyLibState (state, data = '') { // clearLib,clearCollections
- if (data === 'clearLib') {
- if (state.userLib && Object.keys(state.userLib).length !== 0) {
- delete state.userLib.myLibListState
- }
- } else if (data === 'clearCollections') {
- if (state.userLib && Object.keys(state.userLib).length !== 0) {
- delete state.userLib.myCollectionListState
- }
- } else {
- state.userLib = {}
- }
- sessionStorage.setItem('jy-docs-user-lib', JSON.stringify(state.userLib))
- }
- },
- actions: {
- // 获取登录状态
- async getLoginStatus (state) {
- try {
- const res = await getUserID()
- state.commit('saveLoginInfo', res)
- return res
- } catch (error) {}
- },
- // 首页数据
- async getHome (state) {
- getHomeHot({ sign: 'new', num: 5 }).then((res: APIStructure) => {
- if (!res.data.error_msg.length) {
- state.commit('saveHomeData', {
- new: res.data.data.map((v: APIStructure) => formatData(v))
- })
- }
- })
- getHomeHot({ sign: 'hot', num: 5 }).then((res: APIStructure) => {
- if (!res.data.error_msg.length) {
- state.commit('saveHomeData', {
- hot: res.data.data.map((v: APIStructure) => formatData(v))
- })
- }
- })
- getHomeActivity({ code: 3, size: 3, num: 1 }).then((res: APIStructure) => {
- if (!res.data.error_msg.length) {
- state.commit('saveHomeData', {
- keep: res.data.data.map((v: APIStructure) => formatData(v))
- })
- }
- })
- },
- async getRecommendList (state) {
- getHomeActivity({ code: 3, size: 3, num: 1 }).then((res: APIStructure) => {
- if (!res.data.error_msg.length) {
- state.commit('saveHomeData', {
- keep: res.data.data.map((v: APIStructure) => formatData(v))
- })
- }
- })
- },
- // 文库查询
- async doSearchDocs (state, data) {
- try {
- const res = await doSearchDocs(data)
- return res.data
- } catch (error) {}
- },
- // 我的文库查询
- async getMyLibList (state, data) {
- try {
- const res = await getMyLibList(data)
- return res.data
- } catch (error) {}
- },
- // 详情
- async getDetails (state, data) {
- try {
- const res = await getDetails(data)
- console.log(res)
- return res.data
- } catch (error) {}
- },
- // 剑鱼积分详情
- async getListDetail (state, data) {
- try {
- const res = await getListDetail(data)
- console.log(res)
- return res.data
- } catch (error) {}
- },
- async getShow (state, data) {
- try {
- const res = await getShow(data)
- console.log(res)
- return res.data
- } catch (error) {}
- },
- async getDown (state, data) {
- try {
- const res = await getDown(data)
- console.log(res)
- return res.data
- } catch (error) {}
- },
- async getShare (state, data) {
- try {
- const res = await getShare(data)
- console.log(res)
- return res.data
- } catch (error) {}
- },
- // 文库购买
- async getDocPay (state, data) {
- try {
- const res = await getDocPay(data)
- return res.data
- } catch (error) {}
- },
- // 文库收藏
- async getAdd (state, data) {
- try {
- const res = await getAdd(data)
- console.log(res)
- return res.data
- } catch (error) {}
- },
- // 文库取消收藏
- async getRemove (state, data) {
- try {
- const res = await getRemove(data)
- console.log(res)
- return res.data
- } catch (error) {}
- },
- // 剑鱼币
- async getCoin (state, data) {
- try {
- const res = await getCoin(data)
- console.log(res)
- return res.data
- } catch (error) {}
- },
- // 剑鱼币
- async getIndexTags () {
- try {
- const res = await getIndexTags()
- console.log(res)
- return res.data
- } catch (error) {}
- },
- // 获取绑定手机号
- async getAccountInfo () {
- try {
- const res = await getAccountInfo()
- return res.data
- } catch (error) {}
- }
- },
- getters: {}
- }
- export default modulesOption
|