app.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. import appApi from '@/sheep/api/app';
  2. import diyTemplateApi from '@/sheep/api/promotion/diy/template';
  3. import { defineStore } from 'pinia';
  4. import $platform from '@/sheep/platform';
  5. import $router from '@/sheep/router';
  6. import user from './user';
  7. import sys from './sys';
  8. const app = defineStore({
  9. id: 'app',
  10. state: () => ({
  11. info: {
  12. // 应用信息
  13. name: '', // 商城名称
  14. logo: '', // logo
  15. version: '', // 版本号
  16. copyright: '', // 版权信息 I
  17. copytime: '', // 版权信息 II
  18. cdnurl: '', // 云存储域名
  19. filesystem: '', // 云存储平台
  20. },
  21. platform: {
  22. share: {
  23. methods: [], // 支持的分享方式
  24. forwardInfo: {}, // 默认转发信息
  25. posterInfo: {}, // 海报信息
  26. linkAddress: '', // 复制链接地址
  27. },
  28. bind_mobile: 0, // 登陆后绑定手机号提醒 (弱提醒,可手动关闭)
  29. },
  30. chat: {},
  31. template: {
  32. // 店铺装修模板
  33. basic: {}, // 基本信息
  34. home: {
  35. // 首页模板
  36. style: {},
  37. data: [],
  38. },
  39. user: {
  40. // 个人中心模板
  41. style: {},
  42. data: [],
  43. },
  44. },
  45. shareInfo: {}, // 全局分享信息
  46. has_wechat_trade_managed: 0 // 小程序发货信息管理 0 没有 || 1 有
  47. }),
  48. actions: {
  49. // 获取Shopro应用配置和模板
  50. async init(templateId = null) {
  51. // 检查网络
  52. const networkStatus = await $platform.checkNetwork();
  53. if (!networkStatus) {
  54. $router.error('NetworkError');
  55. }
  56. // 加载装修配置
  57. await adaptTemplate(this.template, templateId)
  58. // TODO 芋艿:未来支持管理后台可配;对应 https://api.shopro.sheepjs.com/shop/api/init
  59. if (true) {
  60. this.info = {
  61. name: '芋道商城',
  62. logo: 'https://static.iocoder.cn/ruoyi-vue-pro-logo.png',
  63. version: '1.1.13',
  64. copyright: '全部开源,个人与企业可 100% 免费使用',
  65. copytime: 'Copyright© 2018-2024',
  66. cdnurl: 'https://file.sheepjs.com', // 云存储域名
  67. filesystem: 'qcloud', // 云存储平台
  68. };
  69. this.platform = {
  70. share: {
  71. methods: [ "poster", "link" ],
  72. linkAddress: "https://shopro.sheepjs.com/#/",
  73. posterInfo: {
  74. "user_bg": "/static/img/shop/config/user-poster-bg.png",
  75. "goods_bg": "/static/img/shop/config/goods-poster-bg.png",
  76. "groupon_bg": "/static/img/shop/config/groupon-poster-bg.png"
  77. }
  78. },
  79. bind_mobile: 0
  80. };
  81. this.chat = {
  82. chat_domain: "https://api.shopro.sheepjs.com/chat",
  83. room_id: "admin"
  84. }
  85. this.has_wechat_trade_managed = 0;
  86. // 加载主题
  87. const sysStore = sys();
  88. sysStore.setTheme();
  89. // 模拟用户登录
  90. const userStore = user();
  91. if (userStore.isLogin) {
  92. userStore.loginAfter();
  93. }
  94. return Promise.resolve(true);
  95. } else {
  96. $router.error('InitError', res.msg || '加载失败');
  97. }
  98. },
  99. },
  100. persist: {
  101. enabled: true,
  102. strategies: [
  103. {
  104. key: 'app-store',
  105. },
  106. ],
  107. },
  108. });
  109. // todo: @owen 先做数据适配,后期重构
  110. const adaptTemplate = async (appTemplate, templateId) => {
  111. const { data: diyTemplate } = templateId
  112. // 查询指定模板,一般是预览时使用
  113. ? await diyTemplateApi.getDiyTemplate(templateId)
  114. : await diyTemplateApi.getUsedDiyTemplate();
  115. // 模板不存在
  116. if (!diyTemplate) {
  117. $router.error('TemplateError');
  118. return
  119. }
  120. const tabBar = diyTemplate?.property?.tabBar;
  121. if (tabBar) {
  122. appTemplate.basic.tabbar = tabBar
  123. if (tabBar?.theme) {
  124. appTemplate.basic.theme = tabBar?.theme;
  125. }
  126. }
  127. appTemplate.home = diyTemplate?.home;
  128. appTemplate.user = diyTemplate?.user;
  129. }
  130. export default app;