154 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			154 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
| import DiyApi from '@/sheep/api/promotion/diy';
 | |
| import { defineStore } from 'pinia';
 | |
| import $platform from '@/sheep/platform';
 | |
| import $router from '@/sheep/router';
 | |
| import user from './user';
 | |
| import sys from './sys';
 | |
| import { baseUrl } from '@/sheep/config';
 | |
| 
 | |
| const app = defineStore({
 | |
|   id: 'app',
 | |
|   state: () => ({
 | |
|     info: {
 | |
|       // 应用信息
 | |
|       name: '', // 商城名称
 | |
|       logo: '', // logo
 | |
|       version: '', // 版本号
 | |
|       copyright: '', // 版权信息 I
 | |
|       copytime: '', // 版权信息 II
 | |
| 
 | |
|       cdnurl: '', // 云存储域名
 | |
|       filesystem: '', // 云存储平台
 | |
|     },
 | |
|     platform: {
 | |
|       share: {
 | |
|         methods: [], // 支持的分享方式
 | |
|         forwardInfo: {}, // 默认转发信息
 | |
|         posterInfo: {}, // 海报信息
 | |
|         linkAddress: '', // 复制链接地址
 | |
|       },
 | |
|       bind_mobile: 0, // 登陆后绑定手机号提醒 (弱提醒,可手动关闭)
 | |
|     },
 | |
|     template: {
 | |
|       // 店铺装修模板
 | |
|       basic: {}, // 基本信息
 | |
|       home: {
 | |
|         // 首页模板
 | |
|         style: {},
 | |
|         data: [],
 | |
|       },
 | |
|       user: {
 | |
|         // 个人中心模板
 | |
|         style: {},
 | |
|         data: [],
 | |
|       },
 | |
|     },
 | |
|     shareInfo: {}, // 全局分享信息
 | |
|     has_wechat_trade_managed: 0, // 小程序发货信息管理  0 没有 || 1 有
 | |
|   }),
 | |
|   actions: {
 | |
|     // 获取Shopro应用配置和模板
 | |
|     async init(templateId = null) {
 | |
|       // 检查网络
 | |
|       const networkStatus = await $platform.checkNetwork();
 | |
|       if (!networkStatus) {
 | |
|         $router.error('NetworkError');
 | |
|       }
 | |
| 
 | |
|       // 检查配置
 | |
|       if (typeof baseUrl === 'undefined') {
 | |
|         $router.error('EnvError');
 | |
|       }
 | |
| 
 | |
|       // 加载装修配置
 | |
|       await adaptTemplate(this.template, templateId);
 | |
| 
 | |
|       // TODO 芋艿:未来支持管理后台可配;对应 https://api.shopro.sheepjs.com/shop/api/init
 | |
|       if (true) {
 | |
|         this.info = {
 | |
|           name: '芋道商城',
 | |
|           logo: 'https://static.iocoder.cn/ruoyi-vue-pro-logo.png',
 | |
|           version: '2.4.2',
 | |
|           copyright: '全部开源,个人与企业可 100% 免费使用',
 | |
|           copytime: 'Copyright© 2018-2024',
 | |
| 
 | |
|           cdnurl: 'https://file.sheepjs.com', // 云存储域名
 | |
|           filesystem: 'qcloud', // 云存储平台
 | |
|         };
 | |
|         this.platform = {
 | |
|           share: {
 | |
|             methods: ['forward', 'poster', 'link'],
 | |
|             linkAddress: 'http://127.0.0.1:3000', // TODO 芋艿:可以考虑改到 .env 那
 | |
|             posterInfo: {
 | |
|               user_bg: '/static/img/shop/config/user-poster-bg.png',
 | |
|               goods_bg: '/static/img/shop/config/goods-poster-bg.png',
 | |
|               groupon_bg: '/static/img/shop/config/groupon-poster-bg.png',
 | |
|             },
 | |
|             forwardInfo: {
 | |
|               title: '',
 | |
|               image: '',
 | |
|               desc: '',
 | |
|             },
 | |
|           },
 | |
|           bind_mobile: 0,
 | |
|         };
 | |
|         this.has_wechat_trade_managed = 0;
 | |
| 
 | |
|         // 加载主题
 | |
|         const sysStore = sys();
 | |
|         sysStore.setTheme();
 | |
| 
 | |
|         // 模拟用户登录
 | |
|         const userStore = user();
 | |
|         if (userStore.isLogin) {
 | |
|           userStore.loginAfter();
 | |
|         }
 | |
|         return Promise.resolve(true);
 | |
|       } else {
 | |
|         $router.error('InitError', res.msg || '加载失败');
 | |
|       }
 | |
|     },
 | |
|   },
 | |
|   persist: {
 | |
|     enabled: true,
 | |
|     strategies: [
 | |
|       {
 | |
|         key: 'app-store',
 | |
|       },
 | |
|     ],
 | |
|   },
 | |
| });
 | |
| 
 | |
| // todo: @owen 先做数据适配,后期重构
 | |
| const adaptTemplate = async (appTemplate, templateId) => {
 | |
|   const { data: diyTemplate } = templateId
 | |
|     ? // 查询指定模板,一般是预览时使用
 | |
|       await DiyApi.getDiyTemplate(templateId)
 | |
|     : await DiyApi.getUsedDiyTemplate();
 | |
|   // 模板不存在
 | |
|   if (!diyTemplate) {
 | |
|     $router.error('TemplateError');
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   const tabBar = diyTemplate?.property?.tabBar;
 | |
|   if (tabBar) {
 | |
|     appTemplate.basic.tabbar = tabBar;
 | |
|     // TODO 商城装修没有对 tabBar 进行角标配置,测试角标需打开以下注释
 | |
|     // appTemplate.basic.tabbar.items.forEach((tabBar) => {
 | |
|     //   tabBar.dot = false
 | |
|     //   tabBar.badge = 100
 | |
|     // })
 | |
|     // appTemplate.basic.tabbar.badgeStyle = {
 | |
|     //   backgroundColor: '#882222',
 | |
|     // }
 | |
|     if (tabBar?.theme) {
 | |
|       appTemplate.basic.theme = tabBar?.theme;
 | |
|     }
 | |
|   }
 | |
|   appTemplate.home = diyTemplate?.home;
 | |
|   appTemplate.user = diyTemplate?.user;
 | |
| };
 | |
| 
 | |
| export default app;
 |