Просмотр исходного кода

feat: 商城管理多站点逻辑完善

周玉环 1 неделя назад
Родитель
Сommit
827ceddfea

+ 12 - 0
xinkeaboard-admin/src/global.less

@@ -2339,5 +2339,17 @@ body {
     background-color: @theme-color;
     color: #fff;
   }
+
+  
+}
+
+.site_info_list {
+  .site_info_item {
+    display: none;
+  }
+
+  .site_info_active {
+    display: block;
+  }
 }
 

+ 2 - 1
xinkeaboard-admin/src/pages/manage/article/article_cat_lists.js

@@ -128,11 +128,11 @@ export default class Article_cat_lists extends Component {
   //获取数据列表
   get_list = (params) => {
     const { dispatch } = this.props;
+    this.setState({ loading: true });
     dispatch({
       type: 'article/get_article_cat_lists',
       payload: params,
       callback: (res) => {
-        this.setState({ loading: false });
         if (res.state == 200) {
           if (res.data.list.length == 0 && this.state.params.current > 1) {
             params.current = params.current - 1;
@@ -143,6 +143,7 @@ export default class Article_cat_lists extends Component {
             });
           }
         }
+        this.setState({ loading: false });
       },
     });
   };

+ 2 - 1
xinkeaboard-admin/src/pages/manage/article/article_list_content.js

@@ -164,11 +164,11 @@ export default class ArticleListContent extends Component {
   //获取数据列表
   get_list = (params) => {
     const { dispatch } = this.props;
+    this.setState({ loading: true });
     dispatch({
       type: 'article/get_article_lists',
       payload: params,
       callback: (res) => {
-        this.setState({ loading: false });
         if (res.state == 200) {
           if (res.data.list.length == 0 && this.state.params.current > 1) {
             params.current = params.current - 1;
@@ -180,6 +180,7 @@ export default class ArticleListContent extends Component {
             });
           }
         }
+        this.setState({ loading: false });
       },
     });
   };

+ 2 - 1
xinkeaboard-admin/src/pages/manage/help/article_list_content.js

@@ -164,11 +164,11 @@ export default class ArticleListContent extends Component {
   //获取数据列表
   get_list = (params) => {
     const { dispatch } = this.props;
+    this.setState({ loading: true });
     dispatch({
       type: 'helpArticle/get_article_lists',
       payload: params,
       callback: (res) => {
-        this.setState({ loading: false });
         if (res.state == 200) {
           if (res.data.list.length == 0 && this.state.params.current > 1) {
             params.current = params.current - 1;
@@ -180,6 +180,7 @@ export default class ArticleListContent extends Component {
             });
           }
         }
+        this.setState({ loading: false });
       },
     });
   };

+ 2 - 2
xinkeaboard-admin/src/pages/manage/models/store.js

@@ -78,7 +78,7 @@ export default {
     },
     //slodon_审核入驻店铺
     * check_store({ payload, callback }, { call }) {
-      const response = yield call(sldCommonService, payload, 'post', 'v3/seller/admin/storeAudit/audit');
+      const response = yield call(sldCommonService, payload, 'post', 'v3/seller/admin/storeAudit/audit', 'json');
       if (callback) callback(response);
     },
     //slodon_获取入驻店铺列表
@@ -113,7 +113,7 @@ export default {
     },
     //slodon_编辑入驻店铺信息
     * edit_settled_store_info({ payload, callback }, { call }) {
-      const response = yield call(sldCommonService, payload, 'post', 'v3/seller/admin/store/edit');
+      const response = yield call(sldCommonService, payload, 'post', 'v3/seller/admin/store/edit', 'json');
       if (callback) callback(response);
     },
     //slodon_获取临效期店铺列表

+ 15 - 5
xinkeaboard-admin/src/pages/manage/product/goods_detail.js

@@ -20,8 +20,8 @@ import SldPreviewImg from '@/components/SldPreviewImg/SldPreviewImg';
 import defaultSettings from '@/defaultSettings';
 
 let pageSize = list_com_page_size_10;
-@connect(({ product }) => ({
-  product,
+@connect(({ product, global }) => ({
+  product,global
 }))
 @Form.create()
 export default class GoodsDetail extends Component {
@@ -32,6 +32,7 @@ export default class GoodsDetail extends Component {
       params: { pageSize: pageSize },//搜索条件
       preview_img: '',
       show_preview_modal: false,
+      currentSite: props.global.currentSite,
       goods_base_data: [/*{
         type: 'show_text',
         label: `${sldComLanguage('商品类型')}:`,
@@ -74,7 +75,16 @@ export default class GoodsDetail extends Component {
         extra: ``,
         item_height: 42,
         text: ``,
-      }],//商品基本信息
+      },
+      {
+        type: 'show_text',
+        label: `${sldComLanguage('商品中文名称')}:`,
+        name: 'goodsNameCn',
+        extra: ``,
+        item_height: 42,
+        text: ``,
+      }
+      ],//商品基本信息
       price_test_data: [{
         type: 'show_text',
         label: `${sldComLanguage('商品价格')}`,
@@ -421,7 +431,7 @@ export default class GoodsDetail extends Component {
   };
 
   render() {
-    const { goods_base_data, goods_img_data, goods_detail_data, columns_spec, preview_img, show_preview_modal, other_data, express_data, invoice_data, goods_video_data ,goods_download_data,price_test_data,goods_min_order_data} = this.state;
+    const { currentSite, goods_base_data, goods_img_data, goods_detail_data, columns_spec, preview_img, show_preview_modal, other_data, express_data, invoice_data, goods_video_data ,goods_download_data,price_test_data,goods_min_order_data} = this.state;
     return (
       <div className={global.common_page} style={{ flex: 1 }}>
         <div className={global.flex_com_space_between} style={{ margin: 10, marginTop: 0 }}>
@@ -435,7 +445,7 @@ export default class GoodsDetail extends Component {
           autoHeightMax={document.body.clientHeight - 130}>
           {sldCommonTitle(sldComLanguage('基本信息'), '#333', 5, 12, 15)}
           <SldTableRowTwo r_color={'#333'} l_color={'#999'} l_fontw={500} r_fontw={600} form={this.props.form}
-                          data={goods_base_data}/>
+                          data={goods_base_data.filter(item => currentSite === '1' ? item : item.name !== 'goodsNameCn')}/>
 
           {(goods_detail_data.goodsSummary)
             ?<Fragment>

+ 121 - 40
xinkeaboard-admin/src/pages/manage/store/apply_store_detail.js

@@ -16,6 +16,7 @@ import {
   getSldEmptyH,
   sucTip,
   sldSvgIcon,
+  list_com_page_more
 } from '@/utils/utils';
 import global from '@/global.less';
 import router from 'umi/router';
@@ -106,17 +107,21 @@ export default class ApplyStoreDetail extends Component {
         label: `${sldComLanguage('店铺名称')}`,
         name: 'storeName',
         extra: ``,
-        item_height: 42,
         text: ``,
       }, {
-        type: 'show_text',
-        label: `${sldComLanguage('店铺等级')}`,
-        name: 'storeGradeName',
-        extra: ``,
-        item_height: 42,
-        text: ``,
-      },
-
+          type: 'select',
+          label: `${sldComLanguage('店铺等级')}`,
+          name: 'storeGradeId',
+          sel_data: [],
+          sele_key: 'gradeId',
+          sele_name: 'gradeName',
+          diy: true,
+          required: true,
+          rules: [{
+            required: true,
+            message: `${sldComLanguage('请选择店铺等级')}`,
+          }],
+        },
         {
           type: 'select',
           label: `${sldComLanguage('开店时长')}`,
@@ -234,19 +239,40 @@ export default class ApplyStoreDetail extends Component {
       titleName: '',
       submiting: false,
       modal_width: 500,
+      gradeList: [],
     };
   }
 
   componentDidMount() {
+    this.get_store_grade();
+    this.getStoreOpenTime();
     this.props.dispatch({
       type: 'global/getLayoutCollapsed',
     });
     const { query } = this.state;
-    this.getStoreOpenTime();
     this.get_detail({ applyId: query.id });
     this.get_reason_list();//获取审核拒绝的理由
   }
 
+  //获取店铺等级
+  get_store_grade = () => {
+    let { store_business_info } = this.state;
+    const { dispatch } = this.props;
+    dispatch({
+      type: 'store/get_grade_lists',
+      payload: { pageSize: list_com_page_more },
+      callback: (res) => {
+        if (res.state == 200) {
+          let tar_data = store_business_info.filter(item => item.name == 'storeGradeId')[0];
+          tar_data.sel_data = res.data.list;
+          this.setState({
+            store_business_info,
+          });
+        }
+      },
+    });
+  };
+
   //获取开店时长列表
   getStoreOpenTime =  () => {
     let { store_business_info } = this.state;
@@ -321,25 +347,41 @@ export default class ApplyStoreDetail extends Component {
           //身份证信息-end
 
           //店铺经营信息-start
-          store_business_info.map(item => {
-            if (item.name == 'applyYear') {
-              item.text = `${store_detail[item.name]}${sldComLanguage('年')}`;
-            } else {
-              item.text = store_detail[item.name];
-            }
-          });
+          // store_business_info.map(item => {
+          //   if (item.name == 'applyYear') {
+          //     item.text = `${store_detail[item.name]}${sldComLanguage('年')}`;
+          //   } else {
+          //     item.text = store_detail[item.name];
+          //   }
+          // });
 
-          store_business_info_chakan.map(item => {
-            if (item.name == 'applyYear') {
-              item.text = `${store_detail[item.name]}${sldComLanguage('年')}`;
-            } else {
-              item.text = store_detail[item.name];
-            }
-          });
+          // store_business_info_chakan.map(item => {
+          //   if (item.name == 'applyYear') {
+          //     item.text = `${store_detail[item.name]}${sldComLanguage('年')}`;
+          //   } else {
+          //     item.text = store_detail[item.name];
+          //   }
+          // });
           //店铺经营信息-end
 
           // 店铺经营类型区分站点--start
-          const { storeGoodsCateVOList } = store_detail;
+          // store_detail.storeBusinessVOList = [
+          //   {
+          //     storeGradeId: 1,
+          //     storeGradeName: '5颗星',
+          //     openTime: null,
+          //     webSite: '1',
+          //     storeName: '111',
+          //   },
+          //   {
+          //     storeGradeId: 2,
+          //     storeGradeName: '4颗星',
+          //     openTime: null,
+          //     webSite: '2',
+          //     storeName: '22'
+          //   }
+          // ]
+          const { storeGoodsCateVOList, storeBusinessVOList } = store_detail;
           const siteListData = [];
           storeGoodsCateVOList?.forEach(item => {
             if (!siteListData.find(site => site.webSite === item.webSite)) {
@@ -350,6 +392,23 @@ export default class ApplyStoreDetail extends Component {
             }
           });
           if (siteListData.length) {
+            siteListData.forEach(item => {
+              const matchItem = storeBusinessVOList.find(vo => vo.webSite === item.webSite);
+              if (matchItem) {
+                item.store_business_info = store_business_info.map(info => ({
+                  ...info,
+                  name: `${info.name}_${matchItem.webSite}`,
+                  text: matchItem[info.name] ?? '',
+                  // initialValue: matchItem[info.name]
+                })) 
+                item.store_business_info_chakan = store_business_info_chakan.map(info => ({
+                  ...info,
+                  name: `${info.name}_${matchItem.webSite}`,
+                  text: matchItem[info.name] ?? "",
+                  // initialValue: matchItem[info.name]
+                }))
+              }
+            })
             const sortSiteList = siteListData.sort((a, b) => Number(a.webSite) - Number(b.webSite));
             this.setState({siteList: sortSiteList});
             this.setState({currentSite: siteListData[0]})
@@ -357,11 +416,11 @@ export default class ApplyStoreDetail extends Component {
           // 店铺经营类型区分站点--end
 
           this.setState({
-            store_base_info,
+            // store_base_info,
             store_detail,
             card_data,
             store_business_info,
-            store_business_info_chakan,
+            // store_business_info_chakan,
             business_data,
             more_qualification_data,
           });
@@ -482,7 +541,7 @@ export default class ApplyStoreDetail extends Component {
 
   //审核通过
   agree = () => {
-    const { store_detail } = this.state;
+    const { store_detail, currentSite, siteList } = this.state;
     let scalingBindIdsArray = [];
     store_detail.storeGoodsCateVOList.map(item => {
       scalingBindIdsArray.push(`${item.bindId}-${item.scaling}`);
@@ -492,8 +551,23 @@ export default class ApplyStoreDetail extends Component {
     param.scalingBindIds = scalingBindIdsArray.join(',');
     this.props.form.validateFieldsAndScroll((err, values) => {
       if(!err){
-        param.openTime = values.openTime
+        param.storeBusinessVOList = store_detail.storeBusinessVOList.map(item => ({
+            storeGradeId: values[`storeGradeId_${item.webSite}`],
+          //  storeGradeName: '5颗星',
+            openTime: values[`openTime_${item.webSite}`],
+            webSite: item.webSite,
+            // storeName: item.storeName,
+        }))
         this.operate(param);
+      } else {
+        const errorKeys = Object.keys(err);
+        const firstKeyBelongSite = errorKeys[0].replace(/^[^_]*_/, "");
+        if(currentSite.webSite !== firstKeyBelongSite) {
+          this.setCurrentSite({
+            webSite: firstKeyBelongSite,
+            webSiteName: siteList.find(site => site.webSite === firstKeyBelongSite)?.webSiteName
+          })
+        }
       }
     })
 
@@ -556,17 +630,24 @@ export default class ApplyStoreDetail extends Component {
               </div>
             ))}
           </div>
-          {sldCommonTitle(`${sldComLanguage('店铺经营信息')}`, '#333', 5, 15, 15)}
-          {store_detail.state == 1 &&
-          <SldTableRowTwo r_color={'#333'} l_color={'#999'} l_fontw={500} r_fontw={600} form={this.props.form}
-                          data={store_business_info}/>
-          }
-
-          {store_detail.state == 3 &&
-          <SldTableRowTwo r_color={'#333'} l_color={'#999'} l_fontw={500} r_fontw={600} form={this.props.form}
-                          data={store_business_info_chakan}/>
-          }
-
+          <div className={global.site_info_list}>
+            {sldCommonTitle(`${sldComLanguage('店铺经营信息')}`, '#333', 5, 15, 15)}
+            {siteList.map((site) => (
+              <div
+                key={site.webSite}
+                className={`${global.site_info_item} ${site.webSite === currentSite.webSite ? global.site_info_active : ''}`}
+              >
+                <SldTableRowTwo
+                    r_color={'#333'} 
+                    l_color={'#999'} 
+                    l_fontw={500} 
+                    r_fontw={600} 
+                    form={this.props.form}
+                    data={store_detail.state == 1 ? site.store_business_info : site.store_business_info_chakan}
+                 />
+              </div>
+            ))}
+          </div>
           {sldCommonTitle(`${sldComLanguage('经营类目')}`, '#333', 5, 15, 15)}
           {/*{store_detail.state == 1 &&*/}
           {/*<div className={`${global.flex_row_end_end}`} style={{ paddingBottom: 10, marginTop: -40 }}>*/}

+ 96 - 19
xinkeaboard-admin/src/pages/manage/store/edit_settled_store.js

@@ -46,6 +46,8 @@ export default class EditSettledStore extends Component {
       preview_alt_con: '',//预览图片内容
       show_radio_flag: false,
       query: props.location.query,
+      siteList: [],
+      currentSite: {}, // 当前站点
       store_detail: {},
       store_base_info: [{ //店铺信息
         type: 'show_text',
@@ -521,15 +523,15 @@ export default class EditSettledStore extends Component {
           //营业执照信息-end
 
           //店铺经营信息-start
-          store_business_info.map(item => {
-            if (item.name == 'storeName') {
-              item.text = store_detail[item.name];
-            } else if (item.name == 'billCycle') {
-              item.initialValue = 1;
-            } else {
-              item.initialValue = store_detail[item.name];
-            }
-          });
+          // store_business_info.map(item => {
+          //   if (item.name == 'storeName') {
+          //     item.text = store_detail[item.name];
+          //   } else if (item.name == 'billCycle') {
+          //     item.initialValue = 1;
+          //   } else {
+          //     item.initialValue = store_detail[item.name];
+          //   }
+          // });
           //店铺经营信息-end
 
           //结算信息-start
@@ -549,10 +551,37 @@ export default class EditSettledStore extends Component {
           }
           //结算信息-end
 
+          const { storeGoodsCateVOList, storeBusinessVOList } = store_detail;
+          const siteListData = [];
+          storeGoodsCateVOList?.forEach(item => {
+            if (!siteListData.find(site => site.webSite === item.webSite)) {
+              siteListData.push({
+                webSite: item.webSite,
+                webSiteName: item.webSiteName
+              })
+            }
+          });
+          if (siteListData.length) {
+            siteListData.forEach(item => {
+              const matchItem = storeBusinessVOList.find(vo => vo.webSite === item.webSite);
+              if (matchItem) {
+                item.store_business_info = store_business_info.map(info => ({
+                  ...info,
+                  name: `${info.name}_${matchItem.webSite}`,
+                  text: matchItem[info.name] ?? '',
+                  initialValue: matchItem[info.name]
+                })).map(this.parseSiteItem)
+              }
+            })
+            const sortSiteList = siteListData.sort((a, b) => Number(a.webSite) - Number(b.webSite));
+            this.setState({siteList: sortSiteList});
+            this.setState({currentSite: siteListData[0]})
+          }
+
           this.setState({
             store_base_info,
             store_detail,
-            store_business_info,
+            // store_business_info,
             replenish_img,
             business_license_img,
             personal_front_card_img,
@@ -566,6 +595,14 @@ export default class EditSettledStore extends Component {
     });
   };
 
+  parseSiteItem = (item) => {
+    if (item.name == 'billCycle') {
+     item.initialValue = 1;
+    }
+
+   return item;
+  }
+
   //表格编辑事件
   handleFieldChange(val, fieldName, record) {
     let { store_detail } = this.state;
@@ -608,8 +645,7 @@ export default class EditSettledStore extends Component {
 
   //保存
   save = () => {
-    let { store_detail, business_license_img, replenish_img, personal_front_card_img } = this.state;
-    const { query } = this.state;
+    let { query, siteList, store_detail, business_license_img, replenish_img, personal_front_card_img } = this.state;
     this.props.form.validateFieldsAndScroll((err, values) => {
       if(!err){
         let params = { ...values };
@@ -658,6 +694,20 @@ export default class EditSettledStore extends Component {
           params.personCardDown = personal_front_card_img[1].fileList[0].response.data.path;//身份证反面图片
         }
 
+        // 处理店铺等级以及开店时长
+        params.storeBusinessVOList = store_detail.storeBusinessVOList.map(item => ({
+            storeGradeId: values[`storeGradeId_${item.webSite}`],
+          //  storeGradeName: '5颗星',
+            openTime: values[`openTime_${item.webSite}`],
+            webSite: item.webSite,
+            // storeName: item.storeName,
+        }))
+
+        siteList.forEach(site => {
+          delete params[`storeGradeId_${site.webSite}`];
+          delete params[`openTime_${site.webSite}`]
+        })
+        
         this.props.dispatch({
           type: 'store/edit_settled_store_info',
           payload: params,
@@ -682,9 +732,14 @@ export default class EditSettledStore extends Component {
     });
   };
 
+  // 切换站点
+  setCurrentSite = (site) => {
+    this.setState({ currentSite: site })
+  }
+
   render() {
     const {
-      store_base_info, personal_front_card_img, store_business_info, columns, store_detail, business_license_img, replenish_img, show_radio_flag, settle_info, preview_img, show_preview_modal, preview_alt_con,
+      siteList, currentSite, store_base_info, personal_front_card_img, store_business_info, columns, store_detail, business_license_img, replenish_img, show_radio_flag, settle_info, preview_img, show_preview_modal, preview_alt_con,
     } = this.state;
     return (
       <div className={global.common_page}
@@ -723,13 +778,35 @@ export default class EditSettledStore extends Component {
                             data={replenish_img}/>
           </Fragment>
           }
-          {show_radio_flag &&
-          <Fragment>
+          <div className={global.site_list}>
+            {siteList.map((site) => (
+              <div
+                key={site.webSite}
+                onClick={() => this.setCurrentSite(site)}
+                className={`${global.site_item} ${site.webSite === currentSite.webSite ? global.site_active : ''}`}
+              >
+                {site.webSiteName}
+              </div>
+            ))}
+          </div>
+          <div className={global.site_info_list}>
             {sldCommonTitle(`${sldComLanguage('店铺经营信息')}`, '#333', 5, 15, 15)}
-            <SldTableRowTwo r_color={'#333'} l_color={'#999'} l_fontw={500} r_fontw={600} form={this.props.form}
-                            data={store_business_info}/>
-          </Fragment>
-          }
+            {siteList.map((site) => (
+              <div
+                key={site.webSite}
+                className={`${global.site_info_item} ${site.webSite === currentSite.webSite ? global.site_info_active : ''}`}
+              >
+                {show_radio_flag && <SldTableRowTwo 
+                  r_color={'#333'} 
+                  l_color={'#999'} 
+                  l_fontw={500} 
+                  r_fontw={600} 
+                  form={this.props.form}
+                  data={site.store_business_info}
+                />}
+              </div>
+            ))}
+          </div>
 
           {/*{show_radio_flag &&*/}
           {/*<Fragment>*/}

+ 87 - 18
xinkeaboard-admin/src/pages/manage/store/settled_store_detail.js

@@ -34,6 +34,8 @@ export default class ApplyStoreDetail extends Component {
     } = props;
     this.state = {
       query: props.location.query,
+      siteList: [],
+      currentSite: {}, // 当前站点
       store_detail: {},
       store_base_info: [{ //店铺信息
         type: 'show_text',
@@ -240,24 +242,49 @@ export default class ApplyStoreDetail extends Component {
           //身份证信息-end
 
           //店铺经营信息-start
-          store_business_info.map(item => {
-            if (item.name == 'openTime') {
-              item.text = `${store_detail[item.name]}${sldComLanguage('年')}`;
-            } else if (item.name == 'payAmount') {
-              item.text = `${store_detail[item.name]}${sldComLanguage('元')}`;
-            } else if (item.name == 'billCycle') {
-              item.text = `${store_detail[item.name]?store_detail[item.name]:`${sldComLanguage('系统默认')}`}`;
-            } else {
-              item.text = store_detail[item.name];
+          // store_business_info.map(item => {
+          //   if (item.name == 'openTime') {
+          //     item.text = `${store_detail[item.name]}${sldComLanguage('年')}`;
+          //   } else if (item.name == 'payAmount') {
+          //     item.text = `${store_detail[item.name]}${sldComLanguage('元')}`;
+          //   } else if (item.name == 'billCycle') {
+          //     item.text = `${store_detail[item.name]?store_detail[item.name]:`${sldComLanguage('系统默认')}`}`;
+          //   } else {
+          //     item.text = store_detail[item.name];
+          //   }
+          // });
+          //店铺经营信息-end
+          const { storeGoodsCateVOList, storeBusinessVOList } = store_detail;
+          const siteListData = [];
+          storeGoodsCateVOList?.forEach(item => {
+            if (!siteListData.find(site => site.webSite === item.webSite)) {
+              siteListData.push({
+                webSite: item.webSite,
+                webSiteName: item.webSiteName
+              })
             }
           });
-          //店铺经营信息-end
-
+          if (siteListData.length) {
+            siteListData.forEach(item => {
+              const matchItem = storeBusinessVOList.find(vo => vo.webSite === item.webSite);
+              if (matchItem) {
+                item.store_business_info = store_business_info.map(info => ({
+                  ...info,
+                  name: `${info.name}_${matchItem.webSite}`,
+                  text: this.parseText(matchItem[info.name], info.name),
+                  initialValue: matchItem[info.name]
+                })) 
+              }
+            })
+            const sortSiteList = siteListData.sort((a, b) => Number(a.webSite) - Number(b.webSite));
+            this.setState({siteList: sortSiteList});
+            this.setState({currentSite: siteListData[0]})
+          }
           this.setState({
             store_base_info,
             store_detail,
             card_data,
-            store_business_info,
+            // store_business_info,
             business_data,
             more_qualification_data,
           });
@@ -268,6 +295,18 @@ export default class ApplyStoreDetail extends Component {
     });
   };
 
+  parseText = (text, name) => {
+    let newText = text;
+    if (name == 'openTime') {
+      newText = `${text}${sldComLanguage('年')}`;
+    } else if (name == 'payAmount') {
+      newText = `${text}${sldComLanguage('元')}`;
+    } else if (name == 'billCycle') {
+      newText = `${text ?? `${sldComLanguage('系统默认')}`}`;
+    }
+    return newText ?? '';
+  }
+
   //表格编辑事件
   handleFieldChange(val, fieldName, record) {
     let { store_detail } = this.state;
@@ -280,9 +319,14 @@ export default class ApplyStoreDetail extends Component {
     }
   }
 
+  // 切换站点
+  setCurrentSite = (site) => {
+    this.setState({ currentSite: site })
+  }
+
   render() {
     const {
-      store_base_info, card_data, store_business_info, columns, store_detail,  business_data, more_qualification_data,
+      siteList, currentSite, store_base_info, card_data, store_business_info, columns, store_detail,  business_data, more_qualification_data,
     } = this.state;
     return (
       <div className={global.common_page}
@@ -321,16 +365,41 @@ export default class ApplyStoreDetail extends Component {
                             data={more_qualification_data}/>
           </Fragment>
           }
-          {sldCommonTitle(`${sldComLanguage('店铺经营信息')}`, '#333', 5, 15, 15)}
-          <SldTableRowTwo r_color={'#333'} l_color={'#999'} l_fontw={500} r_fontw={600} form={this.props.form}
-                          data={store_business_info}/>
+          <div className={global.site_list}>
+            {siteList.map((site) => (
+              <div
+                key={site.webSite}
+                onClick={() => this.setCurrentSite(site)}
+                className={`${global.site_item} ${site.webSite === currentSite.webSite ? global.site_active : ''}`}
+              >
+                {site.webSiteName}
+              </div>
+            ))}
+          </div>
+          <div className={global.site_info_list}>
+            {sldCommonTitle(`${sldComLanguage('店铺经营信息')}`, '#333', 5, 15, 15)}
+            {siteList.map((site) => (
+              <div
+                key={site.webSite}
+                className={`${global.site_info_item} ${site.webSite === currentSite.webSite ? global.site_info_active : ''}`}
+              >
+                <SldTableRowTwo 
+                  r_color={'#333'} 
+                  l_color={'#999'} 
+                  l_fontw={500} 
+                  r_fontw={600} 
+                  form={this.props.form}
+                  data={site.store_business_info}
+                />
+              </div>
+            ))}
+          </div>
           {sldCommonTitle(`${sldComLanguage('经营类目')}`, '#333', 5, 15, 15)}
-
           <div style={{ width: '98%', maxHeight: 300 }}>
             <Scrollbars autoHeight
                         autoHeightMax={300}>
               <Table rowKey={'bindId'} pagination={false} columns={columns}
-                     dataSource={store_detail.storeGoodsCateVOList} size={'small'}/>
+                     dataSource={store_detail.storeGoodsCateVOList?.filter(item => item.webSite === currentSite.webSite)} size={'small'}/>
             </Scrollbars>
           </div>
           {getSldEmptyH(40)}