You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							147 lines
						
					
					
						
							4.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							147 lines
						
					
					
						
							4.1 KiB
						
					
					
				
								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';
							 | 
						|
								
							 | 
						|
								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');
							 | 
						|
								      }
							 | 
						|
								
							 | 
						|
								      // 加载装修配置
							 | 
						|
								      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.0',
							 | 
						|
								          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;
							 |