Ver código fonte

feat: 多站点切换统一移至全局

周玉环 2 dias atrás
pai
commit
778d9eb9cd

+ 2 - 2
xinkeaboard-seller/config/config.js

@@ -73,8 +73,8 @@ export default {
   },
   proxy: {
     "/api/": {
-      // target: "http://54.46.9.88:8001/",
-      target: 'http://192.168.0.158:8001/',
+      target: "http://54.46.9.88:8001/",
+      // target: 'http://192.168.0.158:8001/',
       changeOrigin: true,
       pathRewrite: { "^/api": "" },
     },

+ 7 - 4
xinkeaboard-seller/src/components/GlobalHeader/RightContent.js

@@ -4,6 +4,7 @@ import { Tag, Menu, Icon } from 'antd';
 import moment from 'moment';
 import groupBy from 'lodash/groupBy';
 import HeaderDropdown from '../HeaderDropdown';
+import SiteSelector from '../SiteSelector';
 import styles from './index.less';
 import { sldComLanguage } from '@/utils/utils';
 import { specialFlag } from '@/utils/sldconfig';
@@ -93,11 +94,13 @@ export default class GlobalHeaderRight extends PureComponent {
 		}
 		return (
 			<div className={className}>
+				<SiteSelector></SiteSelector>
 				<HeaderDropdown overlay={menu}>
-            <span className={`${styles.action} ${styles.account}`}>
-              <span
-				  className={styles.name} style={{color:'#fff'}}>{(localStorage.getItem('user_info') != '' && localStorage.getItem('user_info') != null) ? JSON.parse(localStorage.getItem('user_info')).user_name : 'admin'}</span>
-            </span>
+					<span className={`${styles.action} ${styles.account}`}>
+						<span className={styles.name} style={{color:'#fff'}}>
+							{(localStorage.getItem('user_info') != '' && localStorage.getItem('user_info') != null) ? JSON.parse(localStorage.getItem('user_info')).user_name : 'admin'}
+						</span>
+					</span>
 				</HeaderDropdown>
 				{/*<SelectLang className={styles.action}/>*/}
 			</div>

+ 4 - 0
xinkeaboard-seller/src/components/GlobalHeader/index.less

@@ -64,8 +64,12 @@
 }
 
 .right {
+  display: flex;
+  justify-content: center;
+  align-items: center;
   float: right;
   height: 100%;
+  padding-right: 20px;
   overflow: hidden;
 
   .action {

+ 30 - 0
xinkeaboard-seller/src/components/SiteSelector/index.js

@@ -0,0 +1,30 @@
+import { Select } from "antd";
+import { connect } from "dva";
+import router from 'umi/router';
+
+const SiteSelector = ({ siteList, currentSite, dispatch }) => {
+  const handleChange = (value) => {
+    dispatch({ type: "global/setCurrentSite", payload: value });
+    // window.location.reload(); // 页面刷新
+  };
+  return (
+    siteList.length && (
+      <Select
+        value={currentSite}
+        style={{ width: 150 }}
+        onChange={handleChange}
+      >
+        {siteList.map((site) => (
+          <Select.Option key={site.name} value={site.value}>
+            {site.title}
+          </Select.Option>
+        ))}
+      </Select>
+    )
+  );
+};
+
+export default connect(({ global }) => ({
+  siteList: global.siteList,
+  currentSite: global.currentSite,
+}))(SiteSelector);

+ 0 - 0
xinkeaboard-seller/src/components/SiteSelector/index.less


+ 6 - 3
xinkeaboard-seller/src/layouts/BasicLayout.js

@@ -62,6 +62,7 @@ class BasicLayout extends React.PureComponent {
       dispatch,
       route: { routes, authority },
     } = this.props;
+    dispatch({ type: 'global/get_site_list_data' });
     dispatch({
       type: 'menu/getMenuData',
       payload: { routes, authority },
@@ -213,12 +214,14 @@ class BasicLayout extends React.PureComponent {
 
 export default connect(({ global, setting, menu }) => ({
   collapsed: global.collapsed,
+  currentSite: global.currentSite,
   layout: setting.layout,
   menuData: menu.menuData,
   breadcrumbNameMap: menu.breadcrumbNameMap,
   ...setting,
 }))(props => (
-  <Media query="(max-width: 599px)">
-    {isMobile => <BasicLayout {...props} isMobile={isMobile} />}
-  </Media>
+   props.currentSite && 
+   <Media query="(max-width: 599px)">
+    {isMobile => <BasicLayout  key={props.currentSite} {...props} isMobile={isMobile} />}
+  </Media> 
 ));

+ 0 - 40
xinkeaboard-seller/src/models/common.js

@@ -8,8 +8,6 @@ export default {
 
   state: {
     notice: [],
-    siteList: [],
-    currentSite: null
   },
 
   effects: {
@@ -229,30 +227,6 @@ export default {
       const response = yield call(sldCommonService, payload, 'get', `v3/system/front/agreement/detail`);
       if (callback) callback(response);
     },
-
-    // 获取站点列表
-    * get_site_list_data({ payload, callback }, { call, put, select }) {
-      const siteList = yield select(state => state.common.siteList);
-      if (siteList.length) {
-        if (callback) callback({data: siteList, state: 200})
-        return;
-      }
-      const response = yield call(sldCommonService, payload, 'get', 'v3/system/seller/setting/getSiteSettingList');
-      if (callback) callback(response);
-      yield put({ type: 'saveSiteList', payload: response.data });
-    },
-
-    // 设置当前站点
-    * set_current_site({ payload }, { put }) {
-      localStorage.setItem('currentSite', JSON.stringify(payload))
-      yield put({ type: 'saveCurrentSite', payload });
-    },
-
-    // // 获取当前站点
-    // * get_current_site({ payload, callback }, { call, put, select }) {
-    //   const currentSite = yield select(state => state.common.currentSite);
-    //   if (callback) callback(currentSite);
-    // }
   },
 
   reducers: {
@@ -262,19 +236,5 @@ export default {
         notice: action.payload,
       };
     },
-
-    saveSiteList(state, action) {
-      return {
-        ...state,
-        siteList: action.payload,
-      };
-    },
-
-    saveCurrentSite(state, action) {
-      return {
-        ...state,
-        currentSite: action.payload,
-      }
-    }
   },
 };

+ 26 - 0
xinkeaboard-seller/src/models/global.js

@@ -6,6 +6,8 @@ export default {
   state: {
     collapsed: false,
     notices: [],
+    siteList: [],
+    currentSite: localStorage.getItem('CURRENT_SITE') || null,
   },
 
   effects: {
@@ -70,9 +72,33 @@ export default {
         },
       });
     },
+
+    // 获取站点列表
+    * get_site_list_data({ payload, callback }, { call, put, select }) {
+      const siteList = yield select(state => state.global.siteList);
+      const response = siteList.length ? {data: siteList, state: 200} : yield call(sldCommonService, payload, 'get', 'v3/system/seller/setting/getSiteSettingList');
+      if (callback) callback(response);
+      yield put({ type: 'saveSiteList', payload: response.data });
+      if (!localStorage.getItem('CURRENT_SITE')) {
+        yield put({type: 'setCurrentSite', payload: response.data[0]?.value})
+      }
+    },
   },
 
   reducers: {
+    saveSiteList(state, action) {
+      return {
+        ...state,
+        siteList: action.payload,
+      };
+    },
+    setCurrentSite(state, { payload }) {
+      localStorage.setItem('CURRENT_SITE', payload);
+      return {
+        ...state,
+        currentSite: payload,
+      };
+    },
     changeLayoutCollapsed(state, { payload }) {
       return {
         ...state,

+ 3 - 0
xinkeaboard-seller/src/models/login.js

@@ -37,6 +37,8 @@ export default {
         }
         localStorage.setItem('cur_top_nav', JSON.stringify(cur_top_nav));
         localStorage.setItem('cur_top_nav_info', JSON.stringify(cur_top_nav_info));
+        localStorage.setItem('vendorId',response.data.vendorId);
+        localStorage.setItem('vendorMobile',response.data.vendorMobile);
       }
       if (callback) callback(response);
       let cur_top_nav = [];//顶部菜单
@@ -44,6 +46,7 @@ export default {
       if (response.state === 200) {
         localStorage.setItem('storeId',response.data.storeId);
         localStorage.setItem('vendorId',response.data.vendorId);
+        localStorage.setItem('vendorMobile',response.data.vendorMobile);
         localStorage.setItem('isStoreAdmin',response.data.isStoreAdmin);
         if (response.data.resourceList.length > 0) {
           localStorage.setItem('sld_menu_data', JSON.stringify(response.data.resourceList));

+ 2 - 0
xinkeaboard-seller/src/pages/User/Login.js

@@ -171,6 +171,8 @@ export default class LoginPage extends Component {
                   saveSettleData('cur_step', 3);
                   router.push('/apply/open_up');
                 }
+              } else {
+                dispatch({ type: 'global/get_site_list_data' });
               }
             } else {
               failTip(res.msg);

+ 0 - 6
xinkeaboard-seller/src/pages/basic/models/home.js

@@ -34,11 +34,5 @@ export default {
       const response = yield call(sldCommonService, payload, 'get', 'v3/statistics/seller/overview/analysis/presentData');
       if (callback) callback(response);
     },
-
-    // 获取站点实时统计
-    * get_site_present_data({ payload, callback }, { call }) {
-      const response = yield call(sldCommonService, payload, 'get', 'v3/statistics/seller/overview/analysis/source/presentData');
-      if (callback) callback(response);
-    }
   },
 };

+ 0 - 96
xinkeaboard-seller/src/pages/basic/simple_stat.js

@@ -94,17 +94,11 @@ export default class Basic extends Component {
         },
       ],
       platformActivityData: { list: [], pagination: {} },
-      siteInfoLoading: true, // 站点违规商品和分配询盘loading
-      siteList: [],
-      currentSite: {},
-      siteListLoading: false, // 站点tab列表loading
-      siteInfoData: simpleStatWaitEventData(),
     };
 
   };
 
   componentDidMount() {
-    this.getSiteList()
     this.get_store_info();
     this.getPayOrderTrend();
     this.getFlowTrend();
@@ -113,41 +107,6 @@ export default class Basic extends Component {
     this.getEnquiryTrend();
   }
 
-  // 获取站点列表
-  getSiteList = () => {
-    this.setState({ siteListLoading: true });
-    const { dispatch } = this.props;
-    dispatch({
-      type: 'common/get_site_list_data',
-      payload: {},
-      callback: (res) => {
-        if (res.state == 200) {
-          this.setState({ siteList: res.data, currentSite: res.data[0], siteListLoading: false })
-          this.getSitePresentData({ source:  res.data[0]?.value});
-        }
-      },
-    });
-  }
-
-  // 获取站点实时统计数据
-  getSitePresentData = (params) => {
-    this.setState({ siteInfoLoading: true });
-    const { dispatch } = this.props;
-    let { siteInfoData } = this.state;
-    dispatch({
-      type: 'home/get_site_present_data',
-      payload: { source: params.source },
-      callback: (res) => {
-        if (res.state == 200) {
-          siteInfoData.forEach(item => {
-            item.num = res.data[item.mapKey];
-          });
-          this.setState({ siteInfoData, siteInfoLoading: false });
-        }
-      },
-    });
-  }
-
   //获取秒杀活动列表
   getActivity = () => {
     this.setState({ activityLoading: true });
@@ -327,12 +286,6 @@ export default class Basic extends Component {
     router.push(path);
   };
 
-  // 切换站点
-  setCurrentSite = (site) => {
-    this.setState({ currentSite: site })
-    this.getSitePresentData({ source: site.value })
-  }
-
   //平台活动查看更多事件
   viewMoreActivity = (type) => {
     if (type == 'seckill') {
@@ -386,13 +339,8 @@ export default class Basic extends Component {
       waitingLoading, 
       baseInfoLoading, 
       activityLoading, 
-      siteInfoLoading,
       loadedFlag, 
       todayLoadedFlag,
-      siteList,
-      siteListLoading,
-      currentSite,
-      siteInfoData
     } = this.state;
     return (
       <div className={`${styles.gray_main} ${styles.new_stat} ${styles.basic_new} ${stat.stat_part}`}
@@ -455,50 +403,6 @@ export default class Basic extends Component {
                 </div>
               </Spin>
             </div>
-            <div style={{ backgroundColor: '#ffffff', marginTop: '10px' }}>
-              <Spin spinning={siteListLoading}>
-                  <div className={ `${styles.site_list}` }>
-                    {siteList.map((site) => (
-                      <div
-                        key={site.name}
-                        onClick={() => this.setCurrentSite(site)}
-                        className={`${styles.site_item} ${site.name === currentSite.name ? styles.site_active : ''}`}
-                      >
-                        {site.title}
-                      </div>
-                    ))}
-                  </div>
-              </Spin>
-            </div>
-            <div style={{ backgroundColor: '#ffffff', marginTop: '10px' }}>
-              <Spin spinning={siteInfoLoading}>
-                  <div className={`${styles.down_goods_info}`}>
-                    <ul className={`${global.flex_row_between_center}`}>
-                      {siteInfoData.map((item, index) => (
-                        <li key={index} onClick={() => (this.menuItemGoPage(item.path))}
-                            className={`${global.flex_column_start_center}`}>
-                          <div className={`${styles.label} ${global.flex_row_start_center}`}>
-                            <span>{(currentSite.title ?? "") + item.label}</span>
-                          </div>
-                          <div className={`${styles.num}`} title={item.num || 0}>
-                            {loadedFlag && (
-                              item.num > 10000
-                                ? formatNum(item.num)
-                                : <TweenOne animation={{
-                                  Children: {
-                                    value: item.num, floatLength: 0,
-                                    formatMoney: true,
-                                  },
-                                  duration: 1000,
-                                }}/>
-                            )}
-                          </div>
-                        </li>
-                      ))}
-                    </ul>
-                </div>
-              </Spin>
-            </div>
             <Spin spinning={todayOverViewLoading}>
               <div className={`${styles.today_info_panel} ${global.flex_com_space_between}`}>
                 {todayData.map((item, index) => (

+ 14 - 24
xinkeaboard-seller/src/pages/goods/add_goods.js

@@ -34,8 +34,8 @@ import product from "@/pages/goods/models/product";
 
 
 let sthis = '';
-@connect(({ product, global, common }) => ({
-  product, global, common
+@connect(({ product, global }) => ({
+  product, global
 }))
 
 
@@ -93,7 +93,6 @@ export default class AddGoods extends Component {
       screentH: '1000',
       selectedRows: [],
       selectedRowKeys: [],//selectedRows的key
-      currentSite: props.common?.currentSite ?? safeJsonParse(localStorage.getItem('currentSite')),
       columns_spec: [
         {
           title: ' ',
@@ -1134,9 +1133,9 @@ export default class AddGoods extends Component {
   handleAttrGroup = async (val, attaData = {}) => {
     //根据属性分组id获取属性列表
     const { dispatch } = this.props;
-    let { store_attr_data, currentSite } = this.state;
+    let { store_attr_data } = this.state;
     let dis_type = 'product/get_attribute_lists_can_use';
-    let payload = { pageSize: list_com_page_more, groupId: val, distributionChannel: currentSite?.value };
+    let payload = { pageSize: list_com_page_more, groupId: val };
     await dispatch({
       type: dis_type,
       payload: payload,
@@ -1723,9 +1722,9 @@ export default class AddGoods extends Component {
   //获取商品标签列表
   get_goods_label_list = () => {
     const { dispatch } = this.props;
-    let { other_data, currentSite } = this.state;
+    let { other_data } = this.state;
     let dis_type = 'product/get_goods_label_lists';
-    let payload = { pageSize: list_com_page_more, distributionChannel: currentSite?.value };
+    let payload = { pageSize: list_com_page_more };
     dispatch({
       type: dis_type,
       payload: payload,
@@ -2473,9 +2472,9 @@ export default class AddGoods extends Component {
   //获取商户可以使用的所有分类列表 goods:商品分类
   getSystemCat = async (grade, categoryId = '') => {
     const { dispatch } = this.props;
-    let { goods_cat, currentSite } = this.state;
+    let { goods_cat } = this.state;
     let dis_type = 'product/get_system_seller_cate_list';
-    let param = { grade: grade, distributionChannel: currentSite?.value };
+    let param = { grade: grade };
     if (categoryId) param.categoryId = categoryId;
     await dispatch({
       type: dis_type,
@@ -2515,10 +2514,10 @@ export default class AddGoods extends Component {
   //根据类型id获取类型详情:绑定的属性、品牌 ,editData为编辑的数据
   get_brand_attr_detail = async (categoryId, editData = []) => {
     const { dispatch } = this.props;
-    let { search_attr_data, goods_base_data, currentSite } = this.state;
+    let { search_attr_data, goods_base_data } = this.state;
     await dispatch({
       type: 'product/get_brand_attr_detail',
-      payload: { categoryId: categoryId, pageSize: list_com_page_more, distributionChannel: currentSite?.value },
+      payload: { categoryId: categoryId, pageSize: list_com_page_more },
       callback: (res) => {
         if (res.state == 200) {
           //品牌信息
@@ -2670,7 +2669,7 @@ export default class AddGoods extends Component {
   //保存并新增事件
   saveData = (editorCon) => {
     const { dispatch } = this.props;
-    const { currentSite, query, sele_goods_cat_data, spec_data_table, goods_img_data, goods_video_data, spec_set_data, seo_data, cur_goods_type, other_data,goods_download_data,goods_download_data2,price_test_date,initSummaryEditorContent,goods_min_order_data } = this.state;
+    const { query, sele_goods_cat_data, spec_data_table, goods_img_data, goods_video_data, spec_set_data, seo_data, cur_goods_type, other_data,goods_download_data,goods_download_data2,price_test_date,initSummaryEditorContent,goods_min_order_data } = this.state;
     this.props.form.validateFieldsAndScroll((err, values) => {
         if (!err) {
           let params = {};
@@ -2954,10 +2953,7 @@ export default class AddGoods extends Component {
           this.setState({ pageLoading: true });
           dispatch({
             type: dis_type,
-            payload: {
-              ...params,
-              distributionChannel: currentSite?.value
-            },
+            payload: params,
             callback: (res) => {
               sthis.setState({ pageLoading: false });
               if (res.state == 200) {
@@ -3148,17 +3144,11 @@ export default class AddGoods extends Component {
   };
 
   render() {
-    const { currentSite, imgModalList,goods_base_data, spec_data_table, columns_spec, query, preview_img, preview_alt_con, show_preview_modal,modal_width, goods_img_data, spec_set_data,seo_data, goods_cat, sele_goods_cat_data, cur_data, express_show, express_data, other_data, top_nav_step, spu_data_table, columns_spu, pageLoading, step, invoice_data, top_bottom_tpl_data, store_attr_data, search_attr_data, show_radio_flag, goods_video_data, goods_download_data,cur_goods_type, initEditorFlag, getEditorContentFlag, initEditorContent,price_test_date,getSummaryEditorContentFlag,initSummaryEditorContent,goods_min_order_data,imgModalvisible,imgModalVidevisible,imgModalfilevisible,goods_download_data2,goods_video_choose,goods_file_choose } = this.state;
+    const { imgModalList,goods_base_data, spec_data_table, columns_spec, query, preview_img, preview_alt_con, show_preview_modal,modal_width, goods_img_data, spec_set_data,seo_data, goods_cat, sele_goods_cat_data, cur_data, express_show, express_data, other_data, top_nav_step, spu_data_table, columns_spu, pageLoading, step, invoice_data, top_bottom_tpl_data, store_attr_data, search_attr_data, show_radio_flag, goods_video_data, goods_download_data,cur_goods_type, initEditorFlag, getEditorContentFlag, initEditorContent,price_test_date,getSummaryEditorContentFlag,initSummaryEditorContent,goods_min_order_data,imgModalvisible,imgModalVidevisible,imgModalfilevisible,goods_download_data2,goods_video_choose,goods_file_choose } = this.state;
     return (
       <div className={`${global.common_page} ${global.com_flex_column}`} style={{ position: 'relative' }}>
-        <div className={` ${global.flex_com_row_start_center} ${global.add_goods_title}`}>
+        <div className={`${global.flex_com_space_between} ${global.add_goods_title}`}>
           {sldLlineRtextAddGoods('#69A2F2', query.id != undefined && query.id * 1 > 0 ? `${sldComLanguage('编辑商品')}` : `${sldComLanguage('发布商品')}`)}
-          { currentSite?.title 
-            && <span className={global.current_site_tip}>
-                <span>{ `( ${sldComLanguage('商品发布渠道为: ')}` }</span>
-                <span className={global.current_site_title}>{ `${currentSite.title} )` }</span>
-               </span>
-          }
         </div>
         <Spin spinning={pageLoading}>
           <div className={`${global.add_goods_top_nav} ${global.flex_row_start_center}`}>

+ 4 - 4
xinkeaboard-seller/src/pages/goods/edit_related_template.js

@@ -8,6 +8,7 @@ import {
   getSldEmptyH,
   sldComLanguage,
   quillEscapeToHtml,
+  safeJsonParse
 } from '@/utils/utils';
 import global from '@/global.less';
 import SldEditFormCom from '@/components/SldEditFormCom/SldEditFormCom';
@@ -15,7 +16,7 @@ import SldUEditor from '@/components/SldUEditor';
 import { Scrollbars } from 'react-custom-scrollbars';
 
 @connect(({ product, global }) => ({
-  product, global,
+  product, global
 }))
 @Form.create()
 export default class EditRelatedTemplate extends Component {
@@ -150,9 +151,8 @@ export default class EditRelatedTemplate extends Component {
   render() {
     const { operate_data, positionData, query, flag, initEditorFlag, getEditorContentFlag, initEditorContent } = this.state;
     return (
-      <div className={global.common_page_20}
-           style={{ display: 'flex', flexDirection: 'column', justifyContent: 'flex-start' }}>
-        {sldLlineRtextAddGoods('#69A2F2', `${sldComLanguage('基本信息')}`)}
+      <div className={global.common_page_20} style={{ display: 'flex', flexDirection: 'column', justifyContent: 'flex-start' }}>
+                {sldLlineRtextAddGoods('#69A2F2', `${sldComLanguage('基本信息')}`)}
         <Scrollbars
           autoHeight
           autoHeightMin={100}

+ 9 - 84
xinkeaboard-seller/src/pages/goods/goods_check_lists_title.js

@@ -152,15 +152,6 @@ export default class GoodsCheckLists extends Component {
           },
         },
         {
-          title: `${sldComLanguage('发布渠道')}`,
-          dataIndex: 'distributionChannel',
-          align: 'center',
-          width: 100,
-          render: (text, record, index) => {
-            return this.state.siteList.find(item => item.value === text)?.title;
-          }
-        },
-        {
           title: `${sldComLanguage('店铺分类')}`,
           dataIndex: 'innerLabelList',
           align: 'center',
@@ -232,10 +223,7 @@ export default class GoodsCheckLists extends Component {
             </Fragment>
           ),
         },
-      ],
-      siteList: [],
-      currentSite: {},
-      siteListLoading: false, // 站点tab列表loading
+      ]
     };
   }
 
@@ -294,7 +282,7 @@ export default class GoodsCheckLists extends Component {
   ];
 
   componentDidMount() {
-    this.getSiteList()
+    this.get_list({pageSize})
     this.getTemplateList();
     this.getStoreCat();//获取店铺分类
     this.resize();
@@ -305,26 +293,6 @@ export default class GoodsCheckLists extends Component {
     window.removeEventListener('resize', this.resize);
   }
 
-  // 获取站点列表
-  getSiteList = () => {
-    this.setState({ siteListLoading: true });
-    const { dispatch } = this.props;
-    dispatch({
-      type: 'common/get_site_list_data',
-      callback: (res) => {
-        if (res.state == 200) {
-          this.setState({ siteList: res.data, currentSite: res.data[0], siteListLoading: false })
-          // 设置当前站点
-          dispatch({
-            type: 'common/set_current_site',
-            payload: res.data[0]
-          })
-          this.get_list({ pageSize: pageSize, distributionChannel: res.data[0]?.value });
-        }
-      },
-    });
-  }
-
   resize = () =>{
     const {search_height} = this.state;
     if(this.refs.search_part!=undefined){
@@ -368,15 +336,10 @@ export default class GoodsCheckLists extends Component {
 
   //设置关联版式
   setTemplate = () => {
-    let { addData, currentSite} = this.state;
+    let { addData} = this.state;
     this.setState({
       operateData: JSON.parse(JSON.stringify(addData)),
-      // title:`${sldComLanguage('设置关联版式')}`,
-      title: <span style={{ color: '#fff' }}>
-                <span style={{ fontSize: '16px' }}>{ `${sldComLanguage('设置关联版式')}` } </span>
-                <span style={{ fontSize: '12px' }}>{ `( ${sldComLanguage('商品发布渠道为: ')}` }</span>
-                <span style={{ fontSize: '12px' }} >{ `${currentSite.title} )` }</span>
-              </span>,
+      title:`${sldComLanguage('设置关联版式')}`,
       modal_width: 500,
       modalVisible: true,
       type: 'template',
@@ -412,7 +375,7 @@ export default class GoodsCheckLists extends Component {
   //商品操作
   operateGoods = (id, type) => {
     this.setState({submiting:true});
-    const { params, currentSite } = this.state;
+    const { params } = this.state;
     const { dispatch } = this.props;
     let param_data = {};
     let dis_type = '';
@@ -429,7 +392,6 @@ export default class GoodsCheckLists extends Component {
       dis_type = 'product/set_related_template';
       param_data = id
     }
-    param_data.distributionChannel = currentSite.value;
     dispatch({
       type: dis_type,
       payload: param_data,
@@ -452,9 +414,6 @@ export default class GoodsCheckLists extends Component {
 
   //获取数据列表
   get_list = (params) => {
-    if (!params.distributionChannel) {
-      params.distributionChannel = this.state.currentSite.value;
-    }
     this.setState({ initLoading: true });
     const { dispatch } = this.props;
     dispatch({
@@ -524,8 +483,8 @@ export default class GoodsCheckLists extends Component {
     this.setState({ [type]: datas });
   };
 
-  // 处理筛选数据
-  parseSearchData = (data) => {
+  //搜索事件
+  search = (data) => {
     const values = { ...data };
     //时间处理
     if (values.search_create_time) {
@@ -538,13 +497,6 @@ export default class GoodsCheckLists extends Component {
         delete values[i];
       }
     }
-  
-    return values;
-  }
-
-  //搜索事件
-  search = (data) => {
-    const values = this.parseSearchData(data);
     this.setState({
       formValues: values,
       params: { pageSize: pageSize }
@@ -575,42 +527,15 @@ export default class GoodsCheckLists extends Component {
     }
   }
 
-  // 切换站点
-  setCurrentSite = (site) => {
-    const { dispatch } = this.props;
-    const data = this.searchRef.getFieldsValue(); // 调用子组件方法
-    const values = this.parseSearchData(data)
-    this.setState({ currentSite: site })
-    dispatch({
-      type: 'common/set_current_site',
-      payload: site
-    })
-    this.get_list({ pageSize: pageSize, distributionChannel: site.value, ...values });
-  }
-
   render() {
-    const { siteListLoading, siteList, currentSite, selectedRows, selectedRowKeys, search_data, columns, initLoading, data, modalVisible,operateData,title,modal_width,show_foot,submiting, search_height } = this.state;
+    const { selectedRows, selectedRowKeys, search_data, columns, initLoading, data, modalVisible,operateData,title,modal_width,show_foot,submiting, search_height } = this.state;
     return (
       <div className={global.common_page} style={{ flex: 1,}}>
         {sldLlineRtextAddGoodsAddMargin('#69A2F2', `${sldComLanguage('待审核商品')}`, 0, 0, 10)}
         <div className={global.tableListForm} ref={'search_part'}>
-          <Search wrappedComponentRef={search => this.searchRef = search} search_data={search_data} moreSearchToggle={() => this.moreSearchToggle()}
+          <Search search_data={search_data} moreSearchToggle={() => this.moreSearchToggle()}
                   seaSubmit={(data) => this.search(data)} seaReset={() => this.seaReset()}/>
         </div>
-        {/* 站点tab列表 */}
-        <Spin spinning={siteListLoading}>
-          <div className={global.site_list}>
-            {siteList.map((site) => (
-              <div
-                key={site.name}
-                onClick={() => this.setCurrentSite(site)}
-                className={`${global.site_item} ${site.name === currentSite.name ? global.site_active : ''}`}
-              >
-                {site.title}
-              </div>
-            ))}
-          </div>
-        </Spin>
         {/*公共功能条-start*/}
         <div className={global.operate_bg}
              style={{ display: 'flex', flexDirection: 'row', justifyContent: 'space-between' }}>

+ 4 - 59
xinkeaboard-seller/src/pages/goods/goods_offline_lists.js

@@ -35,7 +35,6 @@ let pageSize = list_com_page_size_10;
 export default class GoodsOfflineLists extends Component {
   constructor(props) {
     super(props);
-    this.searchRef = React.createRef(); // 创建 ref
     this.state = {
       search_height:0,
       modal_width:700,
@@ -201,9 +200,6 @@ export default class GoodsOfflineLists extends Component {
           ),
         },
       ],
-      siteList: [],
-      currentSite: {},
-      siteListLoading: false, // 站点tab列表loading
     };
   }
 
@@ -262,7 +258,7 @@ export default class GoodsOfflineLists extends Component {
   ];
 
   componentDidMount() {
-    this.getSiteList()
+    this.get_list({ pageSize: pageSize });
     this.getStoreCat();//获取店铺分类
     this.resize();
     window.addEventListener('resize', this.resize);
@@ -272,22 +268,6 @@ export default class GoodsOfflineLists extends Component {
     window.removeEventListener('resize', this.resize);
   }
 
-  // 获取站点列表
-  getSiteList = () => {
-    this.setState({ siteListLoading: true });
-    const { dispatch } = this.props;
-    dispatch({
-      type: 'common/get_site_list_data',
-      payload: {  },
-      callback: (res) => {
-        if (res.state == 200) {
-          this.setState({ siteList: res.data, currentSite: res.data[0], siteListLoading: false })
-          this.get_list({ pageSize: pageSize, distributionChannel: res.data[0]?.value });
-        }
-      },
-    });
-  }
-
   resize = () =>{
     const {search_height} = this.state;
     if(this.refs.search_part!=undefined){
@@ -409,9 +389,6 @@ export default class GoodsOfflineLists extends Component {
 
   //获取数据列表
   get_list = (params) => {
-    if (!params.distributionChannel) {
-      params.distributionChannel = this.state.currentSite.value;
-    }
     this.setState({ initLoading: true });
     const { dispatch } = this.props;
     dispatch({
@@ -456,21 +433,14 @@ export default class GoodsOfflineLists extends Component {
     this.setState({ [type]: datas });
   };
 
-  // 处理筛选数据
-  parseSearchData = (data) => {
+  //搜索事件
+  search = (data) => {
     const values = { ...data };
     for (let i in values) {
       if (values[i] == '') {
         delete values[i];
       }
     }
-
-    return values;
-  }
-
-  //搜索事件
-  search = (data) => {
-    const values = this.parseSearchData(data)
     this.setState({
       formValues: values,
       params: { pageSize: pageSize }
@@ -491,14 +461,6 @@ export default class GoodsOfflineLists extends Component {
     this.setState({ modalVisible: false });
   };
 
-  // 切换站点
-  setCurrentSite = (site) => {
-    const data = this.searchRef.current.getFieldsValue(); // 调用子组件方法
-    const values = this.parseSearchData(data)
-    this.setState({ currentSite: site })
-    this.get_list({ pageSize: pageSize, distributionChannel: site.value, ...values });
-  }
-
   render() {
     const { 
       selectedRows, 
@@ -514,30 +476,13 @@ export default class GoodsOfflineLists extends Component {
       show_foot,
       submiting, 
       search_height,
-      siteList,
-      siteListLoading,
-      currentSite
     } = this.state;
     return (
       <div className={global.common_page} style={{ flex: 1,padding:0 }}>
         <div className={global.tableListForm} ref={'search_part'}>
-          <Search ref={this.searchRef} search_data={search_data}
+          <Search search_data={search_data}
                   seaSubmit={(data) => this.search(data)} seaReset={() => this.seaReset()}/>
         </div>
-        {/* 站点tab列表 */}
-        <Spin spinning={siteListLoading}>
-          <div className={global.site_list}>
-            {siteList.map((site) => (
-              <div
-                key={site.name}
-                onClick={() => this.setCurrentSite(site)}
-                className={`${global.site_item} ${site.name === currentSite.name ? global.site_active : ''}`}
-              >
-                {site.title}
-              </div>
-            ))}
-          </div>
-        </Spin>
         {/*公共功能条-start*/}
         <div className={global.operate_bg}>
           {selectedRowKeys.length == 0 ? sldIconBtn(() => {

+ 9 - 88
xinkeaboard-seller/src/pages/goods/goods_online_lists.js

@@ -148,15 +148,6 @@ export default class GoodsOnlineLists extends Component {
           },
         },
         {
-          title: `${sldComLanguage('发布渠道')}`,
-          dataIndex: 'distributionChannel',
-          align: 'center',
-          width: 100,
-          render: (text, record, index) => {
-            return this.state.siteList.find(item => item.value === text)?.title;
-          }
-        },
-        {
           title: `${sldComLanguage('店铺分类')}`,
           dataIndex: 'innerLabelList',
           align: 'center',
@@ -248,10 +239,7 @@ export default class GoodsOnlineLists extends Component {
             </Fragment>
           ),
         },
-      ],
-      siteList: [],
-      currentSite: {},
-      siteListLoading: false, // 站点tab列表loading
+      ]
     };
   }
 
@@ -313,7 +301,7 @@ export default class GoodsOnlineLists extends Component {
   ];
 
   componentDidMount() {
-    this.getSiteList()
+    this.get_list({ pageSize })
     this.getTemplateList();
     this.getStoreCat();//获取店铺分类
     this.resize();
@@ -333,26 +321,6 @@ export default class GoodsOnlineLists extends Component {
     }
   }
 
-  // 获取站点列表
-  getSiteList = () => {
-    this.setState({ siteListLoading: true });
-    const { dispatch } = this.props;
-    dispatch({
-      type: 'common/get_site_list_data',
-      callback: (res) => {
-        if (res.state == 200) {
-          this.setState({ siteList: res.data, currentSite: res.data[0], siteListLoading: false })
-          // 设置当前站点
-          dispatch({
-            type: 'common/set_current_site',
-            payload: res.data[0]
-          })
-          this.get_list({ pageSize: pageSize, distributionChannel: res.data[0]?.value });
-        }
-      },
-    });
-  }
-
   //获取店铺分类
   getStoreCat = () => {
     const { dispatch } = this.props;
@@ -386,15 +354,10 @@ export default class GoodsOnlineLists extends Component {
 
   //设置关联版式
   setTemplate = () => {
-    let { addData, currentSite } = this.state;
+    let { addData } = this.state;
     this.setState({
       operateData: JSON.parse(JSON.stringify(addData)),
-      // title: `${sldComLanguage('设置关联版式')}`,
-      title: <span style={{ color: '#fff' }}>
-              <span style={{ fontSize: '16px' }}>{ `${sldComLanguage('设置关联版式')}` } </span>
-              <span style={{ fontSize: '12px' }}>{ `( ${sldComLanguage('商品发布渠道为: ')}` }</span>
-              <span style={{ fontSize: '12px' }} >{ `${currentSite.title} )` }</span>
-             </span>,
+      title: `${sldComLanguage('设置关联版式')}`,
       modal_width: 500,
       modalVisible: true,
       type: 'template',
@@ -430,7 +393,7 @@ export default class GoodsOnlineLists extends Component {
   //商品操作
   operateGoods = (id, type) => {
     this.setState({ submiting: true });
-    const { params, currentSite } = this.state;
+    const { params } = this.state;
     const { dispatch } = this.props;
     let param_data = {};
     let dis_type = '';
@@ -446,7 +409,6 @@ export default class GoodsOnlineLists extends Component {
     } else if (type == 'template') {
       dis_type = 'product/set_related_template';
       param_data = id;
-      param_data.distributionChannel = currentSite.value;
     }
     dispatch({
       type: dis_type,
@@ -470,9 +432,6 @@ export default class GoodsOnlineLists extends Component {
 
   //获取数据列表
   get_list = (params) => {
-    if (!params.distributionChannel) {
-      params.distributionChannel = this.state.currentSite.value;
-    }
     this.setState({ initLoading: true });
     const { dispatch } = this.props;
     dispatch({
@@ -545,8 +504,8 @@ export default class GoodsOnlineLists extends Component {
     this.setState({ [type]: datas });
   };
 
-  // 处理筛选数据
-  parseSearchData = (data) => {
+  //搜索事件
+  search = (data) => {
     const values = { ...data };
     //时间处理
     if (values.search_create_time) {
@@ -559,13 +518,6 @@ export default class GoodsOnlineLists extends Component {
         delete values[i];
       }
     }
-
-    return values;
-  }
-
-  //搜索事件
-  search = (data) => {
-    const values = this.parseSearchData(data)
     this.setState({
       formValues: values,
       params: { pageSize: pageSize }
@@ -614,19 +566,6 @@ export default class GoodsOnlineLists extends Component {
     }
   }
 
-  // 切换站点
-  setCurrentSite = (site) => {
-    const { dispatch } = this.props;
-    const data = this.searchRef.getFieldsValue(); // 调用子组件方法
-    const values = this.parseSearchData(data)
-    this.setState({ currentSite: site })
-    dispatch({
-      type: 'common/set_current_site',
-      payload: site
-    })
-    this.get_list({ pageSize: pageSize, distributionChannel: site.value, ...values });
-  }
-
   render() {
     const { 
       selectedRows, 
@@ -641,32 +580,14 @@ export default class GoodsOnlineLists extends Component {
       modal_width, 
       show_foot, 
       submiting, 
-      search_height,
-      siteList,
-      siteListLoading,
-      currentSite
+      search_height
     } = this.state;
     return (
       <div className={global.common_page} style={{ flex: 1, padding: 0 }}>
         <div className={global.tableListForm} ref={'search_part'}>
-          <Search wrappedComponentRef={search => this.searchRef = search} search_data={search_data} moreSearchToggle={() => this.moreSearchToggle()}
+          <Search search_data={search_data} moreSearchToggle={() => this.moreSearchToggle()}
                   seaSubmit={(data) => this.search(data)} seaReset={() => this.seaReset()}/>
         </div>
-         {/* 站点tab列表 */}
-         <Spin spinning={siteListLoading}>
-            <div className={global.site_list}>
-              {siteList.map((site) => (
-                <div
-                  key={site.name}
-                  onClick={() => this.setCurrentSite(site)}
-                  className={`${global.site_item} ${site.name === currentSite.name ? global.site_active : ''}`}
-                >
-                  {site.title}
-                </div>
-              ))}
-            </div>
-         </Spin>
-        
         {/*公共功能条-start*/}
         <div className={global.operate_bg}
              style={{ display: 'flex', flexDirection: 'row', justifyContent: 'space-between' }}>

+ 8 - 83
xinkeaboard-seller/src/pages/goods/goods_storage_lists_title.js

@@ -148,15 +148,6 @@ export default class GoodsStorageLists extends Component {
           },
         },
         {
-          title: `${sldComLanguage('发布渠道')}`,
-          dataIndex: 'distributionChannel',
-          align: 'center',
-          width: 100,
-          render: (text, record, index) => {
-            return this.state.siteList.find(item => item.value === text)?.title;
-          }
-        },
-        {
           title: `${sldComLanguage('店铺分类')}`,
           dataIndex: 'innerLabelList',
           align: 'center',
@@ -229,9 +220,6 @@ export default class GoodsStorageLists extends Component {
           ),
         },
       ],
-      siteList: [],
-      currentSite: {},
-      siteListLoading: false, // 站点tab列表loading
     };
   }
 
@@ -290,7 +278,7 @@ export default class GoodsStorageLists extends Component {
   ];
 
   componentDidMount() {
-    this.getSiteList()
+    this.get_list({ pageSize: pageSize });
     this.getTemplateList();
     this.getStoreCat();//获取店铺分类
     this.resize();
@@ -301,26 +289,6 @@ export default class GoodsStorageLists extends Component {
     window.removeEventListener('resize', this.resize);
   }
 
-  // 获取站点列表
-  getSiteList = () => {
-    this.setState({ siteListLoading: true });
-    const { dispatch } = this.props;
-    dispatch({
-      type: 'common/get_site_list_data',
-      callback: (res) => {
-        if (res.state == 200) {
-          this.setState({ siteList: res.data, currentSite: res.data[0], siteListLoading: false })
-          // 设置当前站点
-          dispatch({
-            type: 'common/set_current_site',
-            payload: res.data[0]
-          })
-          this.get_list({ pageSize: pageSize, distributionChannel: res.data[0]?.value });
-        }
-      },
-    });
-  }
-
   resize = () =>{
     const {search_height} = this.state;
     if(this.refs.search_part!=undefined){
@@ -364,15 +332,10 @@ export default class GoodsStorageLists extends Component {
 
   //设置关联版式
   setTemplate = () => {
-    let { addData, currentSite} = this.state;
+    let { addData} = this.state;
     this.setState({
       operateData: JSON.parse(JSON.stringify(addData)),
-      // title:`${sldComLanguage('设置关联版式')}`,
-      title: <span style={{ color: '#fff' }}>
-              <span style={{ fontSize: '16px' }}>{ `${sldComLanguage('设置关联版式')}` } </span>
-              <span style={{ fontSize: '12px' }}>{ `( ${sldComLanguage('商品发布渠道为: ')}` }</span>
-              <span style={{ fontSize: '12px' }} >{ `${currentSite.title} )` }</span>
-              </span>,
+      title:`${sldComLanguage('设置关联版式')}`,
       modal_width: 500,
       modalVisible: true,
       type: 'template',
@@ -408,7 +371,7 @@ export default class GoodsStorageLists extends Component {
   //商品操作
   operateGoods = (id, type) => {
     this.setState({submiting:true});
-    const { params, currentSite } = this.state;
+    const { params } = this.state;
     const { dispatch } = this.props;
     let param_data = {};
     let dis_type = '';
@@ -425,7 +388,6 @@ export default class GoodsStorageLists extends Component {
       dis_type = 'product/set_related_template';
       param_data = id;
     }
-    param_data.distributionChannel = currentSite.value;
     dispatch({
       type: dis_type,
       payload: param_data,
@@ -448,9 +410,6 @@ export default class GoodsStorageLists extends Component {
 
   //获取数据列表
   get_list = (params) => {
-    if (!params.distributionChannel) {
-      params.distributionChannel = this.state.currentSite.value;
-    }
     this.setState({ initLoading: true });
     const { dispatch } = this.props;
     dispatch({
@@ -520,8 +479,8 @@ export default class GoodsStorageLists extends Component {
     this.setState({ [type]: datas });
   };
 
-  // 处理筛选数据
-  parseSearchData = (data) => {
+  //搜索事件
+  search = (data) => {
     const values = { ...data };
     //时间处理
     if (values.search_create_time) {
@@ -534,13 +493,6 @@ export default class GoodsStorageLists extends Component {
         delete values[i];
       }
     }
-  
-    return values;
-  }
-
-  //搜索事件
-  search = (data) => {
-    const values = this.parseSearchData(data);
     this.setState({
       formValues: values,
       params: { pageSize: pageSize }
@@ -571,42 +523,15 @@ export default class GoodsStorageLists extends Component {
     }
   }
 
-  // 切换站点
-  setCurrentSite = (site) => {
-    const { dispatch } = this.props;
-    const data = this.searchRef.getFieldsValue(); // 调用子组件方法
-    const values = this.parseSearchData(data)
-    this.setState({ currentSite: site })
-    dispatch({
-      type: 'common/set_current_site',
-      payload: site
-    })
-    this.get_list({ pageSize: pageSize, distributionChannel: site.value, ...values });
-  }
-
   render() {
-    const { siteListLoading, siteList, currentSite, selectedRows, selectedRowKeys, search_data, columns, initLoading, data, modalVisible,operateData,title,modal_width,show_foot,submiting, search_height } = this.state;
+    const { selectedRows, selectedRowKeys, search_data, columns, initLoading, data, modalVisible,operateData,title,modal_width,show_foot,submiting, search_height } = this.state;
     return (
       <div className={global.common_page} style={{ flex: 1,}}>
         {sldLlineRtextAddGoodsAddMargin('#69A2F2', `${sldComLanguage('仓库中商品')}`, 0, 0, 10)}
         <div className={global.tableListForm} ref={'search_part'}>
-          <Search wrappedComponentRef={search => this.searchRef = search} search_data={search_data} moreSearchToggle={() => this.moreSearchToggle()}
+          <Search search_data={search_data} moreSearchToggle={() => this.moreSearchToggle()}
                   seaSubmit={(data) => this.search(data)} seaReset={() => this.seaReset()}/>
         </div>
-        {/* 站点tab列表 */}
-        <Spin spinning={siteListLoading}>
-          <div className={global.site_list}>
-            {siteList.map((site) => (
-              <div
-                key={site.name}
-                onClick={() => this.setCurrentSite(site)}
-                className={`${global.site_item} ${site.name === currentSite.name ? global.site_active : ''}`}
-              >
-                {site.title}
-              </div>
-            ))}
-          </div>
-        </Spin>
         {/*公共功能条-start*/}
         <div className={global.operate_bg}
              style={{ display: 'flex', flexDirection: 'row', justifyContent: 'space-between' }}>

+ 12 - 1
xinkeaboard-seller/src/pages/goods/related_template.js

@@ -267,7 +267,18 @@ export default class RelatedTemplate extends Component {
   };
 
   render() {
-    const { selectedRows, search_data, columns, initLoading, data, submiting, operateData, modalVisible, title, search_con } = this.state;
+    const { 
+      selectedRows, 
+      search_data, 
+      columns, 
+      initLoading, 
+      data, 
+      submiting, 
+      operateData, 
+      modalVisible, 
+      title, 
+      search_con,
+    } = this.state;
     return (
       <div className={global.common_page} style={{ flex: 1 }}>
         {sldLlineRtextAddGoodsAddMargin('#69A2F2', `${sldComLanguage('关联版式')}`, 0, 0, 10)}

+ 1 - 1
xinkeaboard-seller/src/pages/settledManage/baseInfo/index.js

@@ -363,7 +363,7 @@ export default class BaseInfo extends Component {
   initData = async () => {
     let { cur_apply_type, apply_type, personal_base_info, personal_front_card_img, personal_back_card_img, company_base_info, business_license_img, legal_front_card_img, legal_back_card_img, replenish_1_img, replenish_2_img, replenish_3_img, show_apply_type_flag } = this.state;
     let tmp_data = getSettleData('baseInfo');
-    const localVendorMobile = getSettleData('user_info')?.vendorMobile ?? "";
+    const localVendorMobile = getSettleData('user_info')?.vendorMobile || getSettleData('vendorMobile');
     if (!tmp_data) {
       this.setState({ show_apply_type_flag: true });
       if (cur_apply_type === 0) {

+ 26 - 3
xinkeaboard-seller/src/pages/settledManage/businessInfo/index.less

@@ -1,4 +1,4 @@
-@import '../../../../src/themeColor.less';
+@import "../../../../src/themeColor.less";
 
 .title {
   display: flex;
@@ -10,7 +10,6 @@
   border-radius: 15px;
   .third_party {
     font-size: 12px;
-
   }
 }
 .content {
@@ -26,7 +25,7 @@
     text-align: left;
     color: #333;
     font-size: 14px;
-    border-bottom: 1px solid rgba(0,0,0, .05);
+    border-bottom: 1px solid rgba(0, 0, 0, 0.05);
     padding-bottom: 15px;
   }
 
@@ -39,3 +38,27 @@
   }
 }
 
+.site_list {
+  display: flex;
+
+  .site_item {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+
+    .site_item_title {
+      width: 120px;
+      height: 35px;
+      text-align: center;
+      line-height: 35px;
+      border: 1px solid #d9d9d9;
+      border-radius: 5px;
+      margin-right: 10px;
+      border-color: @theme-color;
+      background-color: @theme-color;
+      color: #fff;
+      font-weight: bold;
+    }
+  }
+}

+ 5 - 6
xinkeaboard-seller/src/utils/utils.js

@@ -1377,12 +1377,11 @@ export function getSldStatYTitle() {
  * params 参数
  * data_type json json格式 默认是表单提交
  * */
-export function sldComRequest(method, url, params, data_type = '') {
+export function sldComRequest(method, url, params = {}, data_type = '') {
+  params = Object.assign({}, params, { distributionChannel: localStorage.getItem("CURRENT_SITE"), source: localStorage.getItem("CURRENT_SITE")})
   if (method == 'get') {
     let tmp_url = apiUrl + `${url}`;
-    if (params != undefined) {
-      tmp_url += `?${stringify(params)}`;
-    }
+    tmp_url += `?${stringify(params)}`;
     return request(tmp_url);
   } else if (method == 'post') {
     if (data_type == 'json') {
@@ -1527,9 +1526,9 @@ export function sldtbaleOpeBtnText(text, callback, svgW = 14, svgH = 14) {
     ? <span className={styles.tableOperateText}>
 			{text}
 		</span>
-    : <a className={styles.tableOperateText} onClick={(e) => { e.preventDefault()}} onClick={callback}>
+    : <span className={styles.tableOperateText} onClick={callback}>
       {text}
-    </a>;
+    </span>;
 }