common.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. import { routerRedux } from 'dva/router';
  2. import { sldCommonService } from '@/utils/utils';
  3. import { reloadAuthorized } from '@/utils/Authorized';
  4. import { getPageQuery, failTip,sldComLanguage } from '@/utils/utils';
  5. export default {
  6. namespace: 'common',
  7. state: {
  8. notice: [],
  9. },
  10. effects: {
  11. //slodon_获取图形验证码
  12. * get_captcha({ payload, callback }, { call }) {
  13. const response = yield call(sldCommonService, payload, 'get', 'v3/captcha/common/getCaptcha');
  14. if (callback) callback(response);
  15. },
  16. //slodon_获取短信验证码
  17. * get_sms_code({ payload, callback }, { call }) {
  18. const response = yield call(sldCommonService, payload, 'post', 'v3/msg/seller/commons/smsCode');
  19. if (callback) callback(response);
  20. },
  21. //slodon_获取店铺运费模板列表
  22. * get_transport_lists({ payload, callback }, { call }) {
  23. const response = yield call(sldCommonService, payload, 'get', 'v3/goods/seller/goodsFreightTemplate/list');
  24. if (callback) callback(response);
  25. },
  26. //slodon_获取系统设置信息
  27. * getSetting({ payload, callback }, { call }) {
  28. const response = yield call(sldCommonService, {...payload, isAll: true }, 'get', 'v3/system/seller/setting/getSettingList');
  29. if (callback) callback(response);
  30. },
  31. //slodon_批量保存设置信息
  32. * saveSetting({ payload, callback }, { call }) {
  33. const response = yield call(sldCommonService, payload, 'post', 'v3/system/seller/setting/updateSettingList');
  34. if (callback) callback(response);
  35. },
  36. //slodon_获取商品销售排行TOP10
  37. * get_goods_sales_rank({ payload, callback }, { call }) {
  38. const response = yield call(sldCommonService, payload, 'get', 'v3/statistics/seller/trade/analysis/goodsSalesRank');
  39. if (callback) callback(response);
  40. },
  41. //slodon_获取支付/下单金额趋势数据
  42. * get_pay_order_trend({ payload, callback }, { call }) {
  43. const response = yield call(sldCommonService, payload, 'get', 'v3/statistics/seller/overview/analysis/payOrderTrend');
  44. if (callback) callback(response);
  45. },
  46. //slodon_获取询盘趋势数据
  47. * get_enquiry_trend({ payload, callback }, { call }) {
  48. const response = yield call(sldCommonService, payload, 'get', 'v3/statistics/seller/overview/analysis/enquiryTrend');
  49. if (callback) callback(response);
  50. },
  51. //slodon_获取流量趋势数据
  52. * get_flow_trend({ payload, callback }, { call }) {
  53. const response = yield call(sldCommonService, payload, 'get', 'v3/statistics/seller/overview/analysis/flowTrend');
  54. if (callback) callback(response);
  55. },
  56. //slodon_获取会员偏好商品排行-TOP10数据
  57. * get_goods_prefer_rank({ payload, callback }, { call }) {
  58. const response = yield call(sldCommonService, payload, 'get', 'v3/statistics/seller/member/analysis/preferGoodsRank');
  59. if (callback) callback(response);
  60. },
  61. //slodon_获取商品销售变化趋势-TOP10数据
  62. * get_goods_sales_trend_top({ payload, callback }, { call }) {
  63. const response = yield call(sldCommonService, payload, 'get', 'v3/statistics/seller/goods/analysis/goodsSalesRank');
  64. if (callback) callback(response);
  65. },
  66. //slodon_获取所有秒杀活动列表
  67. * get_all_seckill_list({ payload, callback }, { call }) {
  68. const response = yield call(sldCommonService, payload, 'get', 'v3/promotion/seller/seckill/list');
  69. callback && callback(response);
  70. },
  71. //单点登录
  72. * sso_seller({ payload, callback }, { call, put }) {
  73. const response = yield call(sldCommonService, payload, 'post', 'v3/open/api/sso/login/seller');
  74. // Login successfully
  75. if (response.state == 267) {
  76. let cur_top_nav = ['apply'];//顶部菜单
  77. let cur_top_nav_info = [{
  78. top_nav: 'apply',
  79. name: `${sldComLanguage('商户入驻')}`,
  80. left_icon: require('../assets/nav/store.png'),
  81. path: '/apply/settled_protocol',
  82. }];//顶部菜单详细信息
  83. if (response.data.resourceList.length > 0) {
  84. localStorage.setItem('sld_menu_data', JSON.stringify(response.data.resourceList));
  85. let sld_all_routes = [];//所有页面的路由
  86. response.data.resourceList.map(item => {
  87. item.children.map(child => {
  88. sld_all_routes.push(child.frontPath);
  89. });
  90. });
  91. localStorage.setItem('sld_all_routes', JSON.stringify(sld_all_routes));
  92. }
  93. localStorage.setItem('cur_top_nav', JSON.stringify(cur_top_nav));
  94. localStorage.setItem('cur_top_nav_info', JSON.stringify(cur_top_nav_info));
  95. }
  96. if (callback) callback(response);
  97. let cur_top_nav = [];//顶部菜单
  98. let cur_top_nav_info = [];//顶部菜单详细信息
  99. if (response.state === 200) {
  100. localStorage.setItem('storeId', response.data.storeId);
  101. localStorage.setItem('vendorId', response.data.vendorId);
  102. localStorage.setItem('isStoreAdmin', response.data.isStoreAdmin);
  103. if (response.data.resourceList.length > 0) {
  104. localStorage.setItem('sld_menu_data', JSON.stringify(response.data.resourceList));
  105. let sld_all_routes = [];//所有页面的路由
  106. response.data.resourceList.map(item => {
  107. item.children.map(child => {
  108. sld_all_routes.push(child.frontPath);
  109. });
  110. });
  111. localStorage.setItem('sld_all_routes', JSON.stringify(sld_all_routes));
  112. let tmp_data = response.data.resourceList;
  113. for (let i in tmp_data) {
  114. let split_first = tmp_data[i].frontPath.split('/');
  115. let target = split_first[1];
  116. if (cur_top_nav.indexOf(target) == -1) {
  117. let target_data = {};
  118. target_data.top_nav = target;
  119. target_data.path = tmp_data[i].children[0].frontPath;
  120. if (target == 'basic') {
  121. target_data.name = '概况';
  122. target_data.left_icon = require('../assets/nav/basic.png');
  123. } else if (target == 'goods') {
  124. target_data.name = '商品';
  125. target_data.left_icon = require('../assets/nav/goods.png');
  126. } else if (target == 'order') {
  127. target_data.name = '询盘';
  128. target_data.left_icon = require('../assets/nav/order.png');
  129. } else if (target == 'store') {
  130. target_data.name = '店铺';
  131. target_data.left_icon = require('../assets/nav/store.png');
  132. }
  133. // else if (target == 'bill') {
  134. // target_data.name = '结算';
  135. // target_data.left_icon = require('../assets/nav/bill.png');
  136. // } else if (target == 'point') {
  137. // target_data.name = '积分商城';
  138. // target_data.left_icon = require('../assets/nav/point.png');
  139. // } else if (target == 'im') {
  140. // target_data.name = '客服';
  141. // target_data.left_icon = require('../assets/nav/point.png');
  142. // } else if (target == 'spreader') {
  143. // target_data.name = '推手';
  144. // target_data.left_icon = require('../assets/nav/spreader.png');
  145. // }
  146. else if (target == 'statistics') {
  147. target_data.name = '统计';
  148. target_data.left_icon = require('../assets/nav/statistics.png');
  149. }
  150. // else if (target == 'marketing') {
  151. // target_data.name = '应用';
  152. // target_data.left_icon = require('../assets/nav/marketing.png');
  153. // }
  154. cur_top_nav.push(target);
  155. cur_top_nav_info.push(target_data);
  156. }
  157. }
  158. localStorage.setItem('cur_top_nav', JSON.stringify(cur_top_nav));
  159. localStorage.setItem('cur_top_nav_info', JSON.stringify(cur_top_nav_info));
  160. } else {
  161. failTip(`${sldComLanguage('抱歉,该账号未授予权限,请先授予权限~')}`);
  162. return false;
  163. }
  164. if (callback) callback(response);
  165. reloadAuthorized();
  166. const urlParams = new URL(window.location.href);
  167. const params = getPageQuery();
  168. let { redirect } = params;
  169. let all_routes = JSON.parse(localStorage.sld_all_routes);
  170. //如果只有客服得权限,则直接跳转到客服页面
  171. if (cur_top_nav_info.length == 1 && cur_top_nav_info[0].top_nav == 'im') {
  172. window.location.href = apiUrl + 'im/';
  173. return false;
  174. }
  175. if (redirect) {
  176. //如果上次路由是入驻的话,需要进入已有路由的第一个页面
  177. if (redirect.indexOf('/apply') > -1) {
  178. window.location.href = JSON.parse(localStorage.sld_all_routes)[0];
  179. return false;
  180. }
  181. const redirectUrlParams = new URL(redirect);
  182. if (redirectUrlParams.origin === urlParams.origin) {
  183. redirect = redirect.substr(urlParams.origin.length);
  184. if (redirect.match(/^\/.*#/)) {
  185. redirect = redirect.substr(redirect.indexOf('#') + 1);
  186. }
  187. } else {
  188. window.location.href = redirect;
  189. return;
  190. }
  191. } else {
  192. yield put(routerRedux.replace(all_routes[0]));
  193. return;
  194. }
  195. //如果redirect在用户拥有的路由内,则跳转,否则跳转第一个页面
  196. let contain_redirect_flag = false;
  197. for (let i = 0; i < all_routes.length; i++) {
  198. if (redirect.indexOf(all_routes[i]) > -1) {
  199. contain_redirect_flag = true;
  200. break;
  201. }
  202. }
  203. if (!contain_redirect_flag) {
  204. redirect = all_routes[0];
  205. }
  206. yield put(routerRedux.replace(redirect));
  207. }
  208. },
  209. //slodon_帮助文档列表
  210. * get_help_article_list({ payload, callback }, { call }) {
  211. const response = yield call(sldCommonService, payload, 'get', `v3/cms/doc/seller/list`);
  212. if (callback) callback(response);
  213. },
  214. //slodon_帮助文档详情
  215. * get_help_article_detail({ payload, callback }, { call }) {
  216. const response = yield call(sldCommonService, payload, 'get', `v3/cms/doc/detail`);
  217. if (callback) callback(response);
  218. },
  219. //slodon_协议详情
  220. * get_agree_detail({ payload, callback }, { call }) {
  221. const response = yield call(sldCommonService, payload, 'get', `v3/system/front/agreement/detail`);
  222. if (callback) callback(response);
  223. },
  224. },
  225. reducers: {
  226. saveNotice(state, action) {
  227. return {
  228. ...state,
  229. notice: action.payload,
  230. };
  231. },
  232. },
  233. };