y%_1QI>9&}=!)e+M%KHgT_^nqFR}8^H-I$MCL`C;i*)_2%US{xAV&|s#jQkDO
zi>LQ|f(gc;-FW*(xCMb<&?Q4RAs;pVDR@Dsc*m6B45SUB%?+ipDr!NwaWR#RqDr2l
zu3tZ85N%tRl|X0{XBaNmlk0yB6y{5LOr=C}fw1At3EKpCdS9_mc6Q(p;1?;tv!~()
z@onlu&q-8uf%XOl4)j9~Dqx?4WipM83>jNrT$`8C4}Q=*O%QoXxg1brxOzQpZcZ7}m0q{kIvlJ!0YHnYEC-6(PQ
zwRr=J%-8CKMUA$eefN(k;ZX~eM905N qMkZ+J29FeH`8Z>(^y&{N1@hHeutko&vI;aE@!|!fyt6IcSIQRxBg-z9tfCa^YD4bdfSY36NE
z$_gRXPBP3W4y0=PHI&MQKTuJja1K&9eO3}S%ZaBx$^2!i=a*}Pf(`$T*`{}9iEwtfTkL9@3!W-_2%=HU-=bV)e=SGy+o=!nu=a2f%etT9
zh-TQ^Ih0A(@?|tk-DQWrouO3bUSKpVq-Pv@
z-CYsEH(MIq_1uY*fPm5Wues|J&b;l&2INR1&s{^afzB3Wf*op+7*UwFD#|It8L)tiBJUTc?m@z+gq$~Ngj`_hZ9syYLn<5$Tn+si>uz0Q=?u4G;-9??or
z;87whQqg>=sBIc>g?P*}7WA`9YnfSG3cqD#)m37sB7krHY%=2GNKE-dY>R4Hl@k&3
z?Dw?e?_*@>x@8DgD;q7<2ObCZ>N$37$POJ#%f0J4bg#{hC1isxO1-6G<&1RSQAp)+
z>CXrpZIMufMv|@Fq<1PQZrF6SU5rASh>&iCd9Sz5H+RI}#RKeOWH2@ixCCIDNr&sq
zB3%luji1Be+e|s>q%}rCu`jAq&Dk?xghlIIl!>$WYEhX1S75dj+t07o!EPHDAU>NR
z;te!E`CuczRkU0EBGRVtg)~vKJBr
zUqQFCN<$4Vg@M(54(DY3e67V-h>K`RH{A(3rH=+aYccMV)$Jk^_y-y><{Qkh;kkL?
zq>pp-WQ@7gZt`8O2;Qg0TqExDbRzS#_Tvx9ELtQV%xq8RSEjquc-y*ph>5VHdO-Kw
z_4kh?JV5HdA)zD;({GLB6g*yV3ZZ&D8OIob3IeT!582t@ZD~Y3q|m4k)}|IZhIh3l
zIyySIFMXaWj@Ol8wU47SU?<+1P!NNn9^br{|jdG6@vIlRq)V>~TG
zCtOg(PLIW>zwT-G$=uGw@v>>zA>MxP$YIJxX`a`nuPT<}b@0VR;X+s1PMCh6?FC5+
z=Ea<9nI$92T}{4SMx`NMDqnoFCYj%~T48
zeD|`mQyuB0(Qvno_`EcZ^=IE)(@K6HjCG2C42{_{`Kq`OM3L#wAf0oKXgYl^5J)c^
z71315=k{J<6-$rB#_PGAhePNO0>C%K<@XPsMC3`7T8U`f4kJD^GL?f8uPNLKN^#XYE4iNgRajo?o6B-6T}5}
zl;u4!?bKn$AGd3-R{*aKWzzN&Hf4>W=FSh~Nv|&^1SGK5iJ77>Q+#P&RRBPmmyMoz
z6PJItf}84>W@{TRcPSf<_T&d~C9K5q;e^jYofiQezs+%Yrk*)4I5@B{fWxO6_cH<)
z9K&9We<{@`G9bJ63UxN}@vYz5lfk!**9qA}EYY862g#jx-hDz(G(!P<(iNH_i!yk{
zKdA?qPCO4?`FD4Xwis)PYMmEwF!_U0K3@fPsuc0J9Kdnu>FpYr6t>bG_#F6lF4V^y
zC-PsF`+URoaT9l1&Mfou|2r~|A|POiA+utSD4RUIuPl8q(D}W7Wedc~Dox(#wbPXC
zEzvXlC^+JBWZ*3`GlF3OKPl)ML8$Z*F3HQfvSwxc-8o5ul+&(St14Zxsom+-Ri`Z8
zGJ@Ivp(YyvZEX~l!bi*=A^ngY`@a4`ygEM}WE1FZ!0yy6S;0NKBLc0jDXa{n7R1{W
z@rECz^~S1Kde5&sN^qZ=riC8$lODpQ4=A_dn?k}9A5V^E;h|)&t!o!z
z)j5{d6|d*5>f3;3yRpkzpUwQ1)n2zaKcilXs3PwocW1C16_sE4t{sy0G^kDHTgc8}
z@DV&hzjl5}zhN@P88f7_ftN
zlK>;P!*Nu-$H^rA#h>I?`k1kK_jx^qXF^6TuK8~npS36Re@$Dk$S#2#FW3g<7kb26
z59dBC&+#S7)ktr4s=2fjzc8qxT)sxII{VpS5@3M8(o0i3g)IB6I7Aw5EN_f|GUxrW
z>}Nn`PM}UW{bqkS=rEy=NkPCg38!eSOn*p*BBaFjJB@X7i}Y@$eZacn{Eca>^x_;4
zX@H<`H)@la#sMbUSDQNJ#FHZnld=MnpFX~R|S);3Gw4DiDN{cs~kCRcE}jHmM^$5
z;3SdRe{2lFXdqoOXZ4xq>LVpqFENDn1hn6fC)lG5Pj>!BG+qiO>+(yST5t=*XGeA<
z9K`wo55{67^~(&|`IlI9H(M0ie#i@A6NL6f0=d17?3$SFL*}J26>0)t`Ad8=k-{{M
zHwpe%fFuGG{txbAZK&QMOCHG!RvP@T*l{il#P4uW?MqIZW_Zc5T>2ydC=q+#GVDwAriPwryEIQ=`o{ObD!q-j0{g&FlR$>oU*EKR(smi<@c&E*-LkO>N|Gy0}&LIk0b|FCS7H
zuAN&rchlZzCrp%hn1io)RjB$BIq)ym*bzBYF?gOo2D8y#g&YVgZ0_|;Q
zILzT8u(EJs3c0bl^$pSvl23=9jWrsweytyU5I4RzZ%XU0daO)S0A^g6s~etm@e`t
z-%Y0^w%bZF|E7JA4&S|jMBSBfHz4pbk)1^2c*Ff#f+1Hq4yZhaw?9SyP}+CQCfZO_8x9iK5UzVe4oETm5s1;J~48`+Cd(JsCPD;PuWU@84~VKp*_
z!J&&v>kJ>Sxrw&(e-zX(Z#%htJ0gxNl`@g!=mJ?Od|$p9&UCrXSwdXTH+7(Fw+p
zZZ19fKAIOlbSL2}*Ucr2W`GJ2wr1az#y^(5S{nElu4{gOIe{|{Ar%&SOn2F}S>c%@
zXgJdsGn7NZAD;^TP(M)0DCi%GP^*5oS-20cQS4w}LvTh$(zSPOI$x^FNNemeU*otY
zz)1MZ+lN`lbe2WPh{YBBI1G34Ja!h^5PiuwmzjhvKT5fz&1NzUpP64^f*b=iNYBG*
zm<41mvsBv#jp9zKIuY~-DhhwBTp4)xAJNDh_LG3ZUl=c})49HDVcVbe^Y~9gZy^7g
z({O3`uPJ+H`Tlno(|~W>$hq}+5y@b1j<9haFmaDsZ@JIPweI^#1w0qFIZ#iz_Ix_Z
zhe;h*XlT!2W8!GtF{GM^``G2Dkp{g=x
zPzO=}^a6WWbR4`Z(ZG4-dqt@f!!=QJk-opow@)+}F#6i;?E=Mb7N0ou@pWuVbo6<+
zQyuw>zT@!+B5R9}yi!n7b{d*SdL8!W0?sRwfu%+0cNWTS-vyXPo}8`svj3TDble1d
z)7YI1$x~Bu%J@W8fDCj4NpiGg(Z<7xG`&d&7>0e=qVcP#xCF~2{@&VA_^wmM$Uy!3
z`)?ZA>Dp|~*(foNwIG%{ivlEyE0ok{my6jgO{BM
z6bz^-wYFk4Q9Pg3GBWM#@Jvv|hD1?)sBIsvK7M35kr*nK+{T;9OePVXQs)(5
zBH%2{+K|E%W8bk7L`#oml7NJMWv3bHo9JmW^nW$%)1jdR9okMDBzJazttO^Z6gzLf
z{(IEfG3>Stv3~vv7V{}bTmD5JOLP<>avFKee$}N&9CyYe65-_Pv=SMRp{n+%oD^YVa7mmEo;R`t+nu5`Kq<2UoBEBus6!PdhrGAT2RzSa
z`nXBdcpSg%^+Y0HxoI+}ia9$UK0-Spm=vKgKMC*qb3$%W{nGqF17~x5E?Grt@|bm4N+^!7iXgv=hf!{t$4<
z;GtqESH2U+$QrE*IwX~ti4!J2TdT{#z_NP>;6Jhs^U>$)Ds{W_l?@)XQK}jnf_(oq
zNr%_b{%A}tAUS*IfIM3NvKoC;Ny+TDV61w0ZNJYGc~ZscU*SecC>B_m223xyv~wkw
zN#aI35wC9^U(EkW4Vt}1)>xp!)A87O-ScJ1I&ORVbNqiA_5bwiyJ6L`nB+dgi)T;6
zzIu}HMcF$twb1+hT2V`NMmt#Q@&5BU9E}|vW_0Bl48DPQ=%Bl1Q~Q=#XM&|Wu+qr2
zg52t0gp+wj6?!o#9HZyGb7P&?7x@o4;$T(A7O@Sdc5oJkR<9}mbKPe<<*H>w{7NMI
zAL_nVBvPAL=o)a1m)Z7g8+SuDe
zXU&7?C!dVF%O^PdE*YAv_c!eHnk^}tS^fPXG+Eksl_^x*H^;f$|Lyg@1!uXPCAeA&
zd6R4~E?e*^)YePyViu{XM9HYr#@_daoTy=E<5XwKeb&VMqi!})vv;i`dSz=hJIWjl
z31Rh>8Wz^W_>C1iG8{rY$G@CaQp|{W2R3=m$5q?4&1V6JbLsk;fN2D$dhyHR_CNgXlU~PzziKAozfxLKf>%AlgO#UOtXW8``rUB
z9sX9@`S%h#4W6aSY}Ds^CLZqnEY+1c^pg^7ylh?NX;A*__5Se5p0pWz-rLUChNMm0
z#Qr)(?Zc*{IzXSx^?3|wGayAU^6_)JlKb2#m*$RT4>vzYsKTBf;%^vlS|c%=F4DPP
ziW>NA-hn30xVdMSOGPP$Gcxs6o*jhoxTX_q^?J=k(}j3z>^E|DH0gcpIkKbdlz%t3
z2*Op>4e#(+$8eEqLm9-6;WBa4ct;qioZy847
zc~HlNQGkA)l)IaP(JBoz!~N?UO0VJE*9$RG5j5n#g5V29WqtpnB;7siYjxk!M|G%l
ze_-~FQEa8175FS*qqx0nv-MXI1KazEcwF$LcFzf{J@+f$Ei#<{DG%|84Mn6}MUvlV
zA#N-6c5@Aadyz}NkGU27J2t`jfG@M^7B>3x$3cq2FCkm)ymy*S{DQ)V@g-x>3-Vu8
z$+r-8e)g-wKWrHOALLF6r1Lnv9O1ad*{8VI0jM9zPb3w5cU(A&Qgw9rYnTpadXLOM
zo^5Jg^WC5kOM*JO^Qiwom;cTI#!J>!6I)V4``~AH4M6|jh@J@2?_#1Bd*?j55B>+<
zLJ>xL?PZ=oThLv__p8MAE~j?QcguMH35Os~2c&2A!B6hY5XZd@xH%>PmE0j!TArZ0>&lfb{%_K_(BsB<{QMq@j8I-&leM*8kuaF9Y#2
z=@)l+xol~&^e<49rnlw?hX93bMQ$jtQmL7jxv3La69?DexC7T$|JQ(nMwE6YY?aFh
z;k%_x0h$0rNJzg(x-Blh)6v}gcardHMrKZxTilI~Z(rZar*YYmuwWTMb*JINSVE{E
zCUa_LH33PuYl+bAaFI1*3D?B((>twHkDc|w*TsR|Ag;SA)BGwsl{=}1^X>nPV!;2Pe_EZHf62$e{|yL^CEeq%81zS;7yk|%X>Xb4
zHNow^MWG)=vhP_sUGc@0pnt|mpw^xKO$MhnnWv*K>;5~gEV6qW=PV=4@6tH(wMD0W
zmq3|whvRusM9*E#Zl^Vd;B^EE$mTyQVSyWxX{h@CHr2B1XM#o6?pw^9FK)}D1H2d~
zApQ~ur?{ITi-4l!D`i>FHqRa_-i@jFQgs;lGRIC2)S=D%Hy{o(7v<&(1?%I%?4=mB2DC4}#=0Hj$JFwB$
gQQPh=XcRN@a5XD5^2P`KVk {
+export const getLiveList = (params) => {
   return getRequest('/broadcast/studio', params)
 }
+// 添加直播间
+export const addLive = (params) => {
+  return postRequest('/broadcast/studio', params)
+}
+
+// 获取直播间详情
+export const getLiveInfo = (studioId) => {
+  return getRequest(`/broadcast/studio/studioInfo/${studioId}`)
+}
+
+// 修改直播间
+export const editLive = (params) => {
+  return putRequest('/broadcast/studio/edit', params)
+}
 
 // 获取店铺直播商品
 export const getLiveGoods = (params) => {
   return getRequest('/broadcast/commodity', params)
 }
 
+// 店铺直播间删除商品
+export const delLiveGoods = (goodsId) => {
+  return deleteRequest(`/broadcast/commodity/${goodsId}`)
+}
+
+// 直播间删除商品
+export const delRoomLiveGoods = (roomId,liveGoodsId) => {
+  return deleteRequest(`/broadcast/studio/deleteInRoom/${roomId}/${liveGoodsId}`)
+}
+
 // 添加店铺直播商品
-export const addLiveGoods = (params) => {
+export const addLiveStoreGoods = (params) => {
   return postRequestWithNoForm('/broadcast/commodity', params)
 }
 
+// 店铺直播间添加
+export const addLiveGoods = (params) => {
 
+  return putRequest(`/broadcast/studio/push/${params.roomId}/${params.liveGoodsId}`)
+}
 
 // 获取拼团列表
 export const getPintuanList = (params) => {
diff --git a/seller/src/config/index.js b/seller/src/config/index.js
index d0a31bb8..f468ec53 100644
--- a/seller/src/config/index.js
+++ b/seller/src/config/index.js
@@ -22,10 +22,10 @@ export default {
     // buyer: 'https://buyer-api.pickmall.cn',
     // seller: 'https://store-api.pickmall.cn',
     // manager: 'https://admin-api.pickmall.cn'
-    common: 'http://192.168.0.103:8890',
-    buyer: 'http://192.168.0.103:8888',
-    seller: 'http://192.168.0.103:8889',
-    manager: 'http://192.168.0.103:8887'
+    common: 'http://192.168.0.109:8890',
+    buyer: 'http://192.168.0.109:8888',
+    seller: 'http://192.168.0.109:8889',
+    manager: 'http://192.168.0.109:8887'
   },
   api_prod: {
     common: 'https://common-api.pickmall.cn',
diff --git a/seller/src/views/goods/goods-seller/goods.vue b/seller/src/views/goods/goods-seller/goods.vue
index 165f9944..8e12694d 100644
--- a/seller/src/views/goods/goods-seller/goods.vue
+++ b/seller/src/views/goods/goods-seller/goods.vue
@@ -718,6 +718,9 @@ export default {
       });
     },
   },
+  mounted () {
+     this.init();
+  },
   activated () {
     this.init();
   },
diff --git a/seller/src/views/promotion/live/addLive.vue b/seller/src/views/promotion/live/addLive.vue
index a345e731..cfa0c37e 100644
--- a/seller/src/views/promotion/live/addLive.vue
+++ b/seller/src/views/promotion/live/addLive.vue
@@ -1,8 +1,9 @@
 
   
-    
+    
+       
       
-        创建直播
+
         
           为了方便在创建直播间时从选择商品,请尽量提前提审直播商品
          
@@ -10,21 +11,23 @@
 
           
           
+            :on-format-error="handleFormatError" :max-size="1024" :on-exceeded-size="handleMaxSize" type="drag" :action="action" :headers="accessToken" style="display: inline-block;width:58px;">
             
                
             
@@ -59,28 +61,77 @@
             
                
               
-                 
-                 
+                 
+                 
               
              
           
           
+            :on-format-error="handleFormatError" :max-size="2048" :on-exceeded-size="handleMaxSize" type="drag" :action="action" :headers="accessToken" style="display: inline-block;width:58px;">
             
                
             
            
            直播间背景图,图片规则:建议像素1080*1920,大小不超过2M
         
-        
-          添加商品 
-          
+
+        
+        
+
+          
+            
+               
+              
+                 
+                 
+              
+             
+          
 
+          
+            
+               
+            
+           
+           直播间分享图,图片规则:建议像素800*640,大小不超过1M
+         
+
+        
+          添加商品 
+          
+            
+              
+                
+                
+                {{ row.goodsName || row.name }}
+              
 
+             
+            
+              
+                
{{row.price | unitPrice('¥')}}
+                
{{row.price | unitPrice('¥')}}至{{row.price2 | unitPrice('¥')}}
+                
{{row.price | unitPrice('¥')}}{{row.price2 | unitPrice('¥')}} 
+              
 
+             
+            
+              {{row.quantity}}
+             
+            
+              
+                删除 
+                上移 
+                下移 
+              
+             
+          
+          
+            直播间商品中前两个商品将自动被选为封面,伴随直播间在直播列表中显示
+          
          
 
         
           保存 
-          取消 
+
          
       
     
@@ -88,19 +139,37 @@
     
        
      
+
+    
+       
+     
   
    
 
 
 
 
diff --git a/seller/src/views/promotion/live/liveGoods.vue b/seller/src/views/promotion/live/liveGoods.vue
index 62c7780f..0073af23 100644
--- a/seller/src/views/promotion/live/liveGoods.vue
+++ b/seller/src/views/promotion/live/liveGoods.vue
@@ -1,72 +1,102 @@
 
   
     
-      
+       
+        搜索 
+      
+      
+        由于直播商品需经过小程序直播平台的审核,你需要在此先提审商品,为了不影响直播间选取商品,请提前1天提审商品;
+       
 
       
-        
+        
           
-
            
-
          
        
 
-      选择商品 
+      选择商品 
+      更新状态 
+      
+        
+         
+        
 
-      
-        
-          
-            
-            {{ row.goodsName }}
-          
 
-         
-        
-          
-              
+            
+              
+                一口价: 
+                 
+              
+              
+                区间价:  
+                   至
+                   
+                 
+              
+              
+                折扣价:  原价 现价
+                   
+                 
+              
+             
+            
+              
{{row.price | unitPrice('¥')}}
+              
{{row.price | unitPrice('¥')}}至{{row.price2 | unitPrice('¥')}}
+              
{{row.price | unitPrice('¥')}}{{row.price2 | unitPrice('¥')}} 
+            
 
+
+          
+
+          
+            {liveGoodsData.splice(index,1)}">删除 
+            {$router.push({path:'/goods-operation-edit',query:{id:row.goodsId}})}">查看 
+            {{row.__selected ? '已':''}}选择 
+           
+        
+        
+          
+
+        
+      
 
      
     
-    
 
 
 
 
 
diff --git a/seller/src/views/promotion/seckill/seckill.vue b/seller/src/views/promotion/seckill/seckill.vue
index b2448ac9..7516938c 100644
--- a/seller/src/views/promotion/seckill/seckill.vue
+++ b/seller/src/views/promotion/seckill/seckill.vue
@@ -2,29 +2,12 @@
   
     
       
-        
 
       
-        
+        
           
             {{ unixDate(row.applyEndTime) }}
            
@@ -63,36 +33,14 @@
             }}
           
           
-            管理 
-            查看 
+            管理 
+            查看 
            
         
       
       
-         
+         
       
     
   
@@ -193,8 +141,8 @@ export default {
       this.getDataList();
     },
     handleReset() {
-      this.searchForm = {}
-      this.selectDate = ''
+      this.searchForm = {};
+      this.selectDate = "";
       this.searchForm.pageNumber = 0;
       this.searchForm.pageSize = 10;
       this.getDataList();
@@ -234,9 +182,12 @@ export default {
       return hourArr;
     },
   },
-  activated () {
+  activated() {
     this.init();
-  }
+  },
+  mounted() {
+    this.init();
+  },
 };
 
 
diff --git a/manager/src/views/my-components/verify/verify.js b/manager/src/views/my-components/verify/verify.js
new file mode 100644
index 00000000..9282f5b3
--- /dev/null
+++ b/manager/src/views/my-components/verify/verify.js
@@ -0,0 +1,13 @@
+
+import {commonUrl, getRequestWithNoToken, postRequestWithNoToken} from '@/libs/axios';
+
+
+// 获取拼图验证
+export const getVerifyImg = (verificationEnums) => {
+  return getRequestWithNoToken(`${commonUrl}/common/slider/${verificationEnums}`);
+};
+
+// 拼图验证
+export const postVerifyImg = (params) => {
+  return postRequestWithNoToken(`${commonUrl}/common/slider/${params.verificationEnums}`, params);
+};
diff --git a/seller/package.json b/seller/package.json
index 39448129..dee8c0ed 100644
--- a/seller/package.json
+++ b/seller/package.json
@@ -44,7 +44,8 @@
     "vuex": "^3.4.0",
     "wangeditor": "^4.6.13",
     "xlsx": "^0.16.2",
-    "xss": "^1.0.7"
+    "xss": "^1.0.7",
+    "uuid": "^8.3.2"
   },
   "devDependencies": {
     "@vue/cli-plugin-babel": "^4.4.4",
diff --git a/seller/src/App.vue b/seller/src/App.vue
index 2a6fc3f5..1f841906 100644
--- a/seller/src/App.vue
+++ b/seller/src/App.vue
@@ -5,13 +5,15 @@
 
 
 
 
diff --git a/seller/src/libs/axios.js b/seller/src/libs/axios.js
index 037a4c0f..56d3afd8 100644
--- a/seller/src/libs/axios.js
+++ b/seller/src/libs/axios.js
@@ -24,6 +24,8 @@ service.interceptors.request.use(
         ...config.params
       }
     }
+    const uuid = getStore('uuid');
+    config.headers['uuid'] = uuid;
     return config;
   },
   err => {
diff --git a/seller/src/router/router.js b/seller/src/router/router.js
index 1a1828a3..5bb9b88e 100644
--- a/seller/src/router/router.js
+++ b/seller/src/router/router.js
@@ -5,7 +5,7 @@ export const loginRouter = {
   path: "/login",
   name: "login",
   meta: {
-    title: "登录 - lili "
+    title: "登录 - lili商家后台 "
   },
   component: () => import("@/views/login.vue")
 };
diff --git a/seller/src/views/login.vue b/seller/src/views/login.vue
index 8f9dd33d..93747100 100644
--- a/seller/src/views/login.vue
+++ b/seller/src/views/login.vue
@@ -55,6 +55,13 @@
 
         
         
+        
+         
       
       
     
@@ -72,11 +79,13 @@ import Header from "@/views/main-components/header";
 import Footer from "@/views/main-components/footer";
 import LangSwitch from "@/views/main-components/lang-switch";
 import util from "@/libs/util.js";
+import verify from '@/views/my-components/verify';
 export default {
   components: {
     LangSwitch,
     Header,
     Footer,
+    verify
   },
   data() {
     return {
@@ -154,23 +163,27 @@ export default {
         }
       });
     },
-    submitLogin() {
-      // 正常逻辑
+    submitLogin() { // 登录提交
       this.$refs.usernameLoginForm.validate((valid) => {
         if (valid) {
-          this.loading = true;
-          login({
-            username: this.form.username,
-            password: this.md5(this.form.password),
-          }).then((res) => {
-            this.loading = false;
-            if (res && res.success) {
-              this.afterLogin(res);
-            }
-          }).catch(()=>{this.loading = false})
+          this.$refs.verify.show = true;
         }
       })
     },
+    verifyChange (con) { // 拼图验证码回显
+      if (!con.status) return;
+      
+      this.loading = true;
+      login({
+        username: this.form.username,
+        password: this.md5(this.form.password),
+      }).then((res) => {
+        this.loading = false;
+        if (res && res.success) {
+          this.afterLogin(res);
+        }
+      }).catch(()=>{this.loading = false})
+    }
   }
 };
 
@@ -203,6 +216,12 @@ export default {
     display: flex;
     flex-direction: column !important;
   }
+  .verify-con{
+    position: absolute;
+    top: 126px;
+    z-index: 10;
+    left: 20px;
+  }
   .form {
     padding-top: 1vh;
 
diff --git a/seller/src/views/my-components/verify/README.md b/seller/src/views/my-components/verify/README.md
new file mode 100644
index 00000000..b1fa811e
--- /dev/null
+++ b/seller/src/views/my-components/verify/README.md
@@ -0,0 +1,14 @@
+### 滑动拼图验证
+
+### 在页面中引入 .vue文件
+
+#### 参数  
+
+#### 在组件上添加v-if来判断组件显隐 
+
+#### verifyType 验证格式[ 'LOGIN' ,'REGISTER' ]   
+
+#### @change方法  获取回调,参数为对象 {status:false,distance:100}   status 为回调状态,distance为移动距离
+
+
+####     
\ No newline at end of file
diff --git a/seller/src/views/my-components/verify/index.vue b/seller/src/views/my-components/verify/index.vue
new file mode 100644
index 00000000..2ce1ef45
--- /dev/null
+++ b/seller/src/views/my-components/verify/index.vue
@@ -0,0 +1,185 @@
+
+  
+    
+      
+      
+      
+    
+    
+       
+      
+         
+       
+      {{verifyText}} 
+    
+  
 
+ 
+
+
diff --git a/seller/src/views/my-components/verify/verify.js b/seller/src/views/my-components/verify/verify.js
new file mode 100644
index 00000000..9282f5b3
--- /dev/null
+++ b/seller/src/views/my-components/verify/verify.js
@@ -0,0 +1,13 @@
+
+import {commonUrl, getRequestWithNoToken, postRequestWithNoToken} from '@/libs/axios';
+
+
+// 获取拼图验证
+export const getVerifyImg = (verificationEnums) => {
+  return getRequestWithNoToken(`${commonUrl}/common/slider/${verificationEnums}`);
+};
+
+// 拼图验证
+export const postVerifyImg = (params) => {
+  return postRequestWithNoToken(`${commonUrl}/common/slider/${params.verificationEnums}`, params);
+};
From e1c14af914ffdfe69de7b54d990058f757420a84 Mon Sep 17 00:00:00 2001
From: mabo 
Date: Thu, 3 Jun 2021 16:17:11 +0800
Subject: [PATCH 08/26] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B9=B0=E5=AE=B6?=
 =?UTF-8?q?=E7=AB=AF=E6=B3=A8=E9=87=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 buyer/src/components/drawer/Drawer.vue        |   2 -
 buyer/src/components/drawer/Main.vue          |   6 +-
 buyer/src/components/empty/Main.vue           |   5 -
 buyer/src/components/footer/Footer.vue        |   2 +-
 .../src/components/goodsDetail/Promotion.vue  |   8 +-
 .../src/components/goodsDetail/ShowGoods.vue  |  23 ++-
 .../goodsDetail/ShowGoodsDetail.vue           |  35 ++--
 .../goodsDetail/ShowGoodsQuestion.vue         |  53 ------
 .../goodsDetail/ShowProductWarranty.vue       |  85 ---------
 buyer/src/components/header/Header.vue        |  18 +-
 buyer/src/components/header/ShopHeader.vue    |   2 +-
 buyer/src/components/header/hoverSearch.vue   |   2 +-
 .../indexDecorate/modelList/carousel.vue      |   4 +-
 .../modelList/firstPageAdvert.vue             |   1 -
 .../indexDecorate/modelList/notEnough.vue     |   3 +-
 .../indexDecorate/modelList/seckill.vue       |   2 +-
 buyer/src/pages/PointGoods.vue                | 171 ------------------
 buyer/src/pages/PointMall.vue                 |   6 +-
 18 files changed, 56 insertions(+), 372 deletions(-)
 delete mode 100644 buyer/src/components/goodsDetail/ShowGoodsQuestion.vue
 delete mode 100644 buyer/src/components/goodsDetail/ShowProductWarranty.vue
 delete mode 100644 buyer/src/pages/PointGoods.vue
diff --git a/buyer/src/components/drawer/Drawer.vue b/buyer/src/components/drawer/Drawer.vue
index 54db455f..d7990232 100644
--- a/buyer/src/components/drawer/Drawer.vue
+++ b/buyer/src/components/drawer/Drawer.vue
@@ -151,8 +151,6 @@ export default {
       ]
     };
   },
-  components: {},
-  mounted () {},
   methods: {
     getCartList () { // 获取购物车列表
       this.loading = true
diff --git a/buyer/src/components/drawer/Main.vue b/buyer/src/components/drawer/Main.vue
index c5c32162..78252f5a 100644
--- a/buyer/src/components/drawer/Main.vue
+++ b/buyer/src/components/drawer/Main.vue
@@ -44,12 +44,12 @@ export default {
     }
   },
   methods: {
-    showCartNum (item) {
+    showCartNum (item) { // 获取购物车数量
       if (this.userInfo && item.title === '购物车') {
         this.getCartList()
       }
     },
-    clickBar (val) {
+    clickBar (val) { // tabbar点击操作
       if (!this.userInfo) {
         this.$Modal.confirm({
           title: '请登录',
@@ -83,7 +83,7 @@ export default {
         }
       }
     },
-    openBlank (path) {
+    openBlank (path) { // 新页面打开地址
       let routerUrl = this.$router.resolve({
         path: path
       })
diff --git a/buyer/src/components/empty/Main.vue b/buyer/src/components/empty/Main.vue
index a1af93a8..4b0a0555 100644
--- a/buyer/src/components/empty/Main.vue
+++ b/buyer/src/components/empty/Main.vue
@@ -13,11 +13,6 @@
 
 
@@ -283,14 +276,12 @@ export default {
 }
 .item-intro-detail{
   margin: 0  30px;
-  // min-height: 1500px;
   width: 100%;
 }
 .item-intro-nav{
   width: 100%;
   height: 38px;
   background-color: #F7F7F7;
-  // border-bottom: 1px solid $theme_color;
 }
 .item-intro-nav ul{
   margin: 0px;
@@ -329,8 +320,6 @@ export default {
   width: 240px;
   height: 36px;
   font-size: 14px;
-  /* text-align: center; */
-  /* background-color: #ccc; */
 }
 .item-param-title {
   color: #232323;
diff --git a/buyer/src/components/goodsDetail/ShowGoodsQuestion.vue b/buyer/src/components/goodsDetail/ShowGoodsQuestion.vue
deleted file mode 100644
index bd70c809..00000000
--- a/buyer/src/components/goodsDetail/ShowGoodsQuestion.vue
+++ /dev/null
@@ -1,53 +0,0 @@
-
-  
-    
-      
-        
-        
-          
-            问 
-            有屏幕调节亮度吗
-          
-          
2020年10月21日17:03:35
-        
-        
-        
-          
-            答 
-            能调节,点屏幕上方有一条调整带,可正负2调整。
-          
-          
2020年10月21日17:03:35
-        
-      
-    
-    
-       
-    
-  
 
- 
-
-
diff --git a/buyer/src/components/goodsDetail/ShowProductWarranty.vue b/buyer/src/components/goodsDetail/ShowProductWarranty.vue
deleted file mode 100644
index 3bbb7550..00000000
--- a/buyer/src/components/goodsDetail/ShowProductWarranty.vue
+++ /dev/null
@@ -1,85 +0,0 @@
-
-  
-    
-    
-      
-        
-           
-          卖家服务 
-        
-        
-          高品质敢承诺:7天无理由退货,30天免费换新,质量问题商家承担来回运费换新;如需发票,请在确认收货无误后联系商家开出。(注*发票不随货品一同发出)
-        
-      
-      
-        
-           
-          平台承诺 
-        
-        
-          平台卖家销售并发货的商品,由平台卖家提供发票和相应的售后服务。请您放心购买!  注:因厂家会在没有任何提前通知的情况下更改产品包装、产地或者一些附件,本司不能确保客户收到的货物与商城图片、产地、附件说明完全一致。只能确保为原厂正货!并且保证与当时市场上同样主流新品一致。若本商城没有及时更新,请大家谅解!
-        
-      
-      
-        
-           
-          正品行货 
-        
-        
-          BIT商城向您保证所售商品均为正品行货,BIT自营商品开具机打发票或电子发票。
-        
-      
-      
-        
-           
-          全国联保 
-        
-        
-          凭质保证书及BIT商城发票,可享受全国联保服务(奢侈品、钟表除外;奢侈品、钟表由BIT联系保修,享受法定三包售后服务),与您亲临商场选购的商品享受相同的质量保证。BIT商城还为您提供具有竞争力的商品价格和运费政策,请您放心购买!  注:因厂家会在没有任何提前通知的情况下更改产品包装、产地或者一些附件,本司不能确保客户收到的货物与商城图片、产地、附件说明完全一致。只能确保为原厂正货!并且保证与当时市场上同样主流新品一致。若本商城没有及时更新,请大家谅解!
-        
-      
-    
-  
 
- 
-
-
-
-
diff --git a/buyer/src/components/header/Header.vue b/buyer/src/components/header/Header.vue
index 8293b17a..55281fbf 100644
--- a/buyer/src/components/header/Header.vue
+++ b/buyer/src/components/header/Header.vue
@@ -25,7 +25,6 @@
         
       
       
-        
         
           
             请登录 
@@ -148,31 +147,22 @@ export default {
     }
   },
   methods: {
-    handleClickTheme () {
-      this.themeType === 'light'
-        ? (this.themeType = 'dark')
-        : (this.themeType = 'light');
-      window.document.documentElement.setAttribute(
-        'data-theme',
-        this.themeType
-      );
-    },
-    changeCity (city) {
+    changeCity (city) { // 选择所在城市
       this.city = city;
     },
-    goToPay () {
+    goToPay () { // 跳转购物车
       let url = this.$router.resolve({
         path: '/cart'
       })
       window.open(url.href, '_blank')
     },
-    myInfo () {
+    myInfo () { // 跳转会员中心
       let url = this.$router.resolve({
         path: '/home'
       })
       window.open(url.href, '_blank')
     },
-    signOutFun () {
+    signOutFun () { // 退出登录
       storage.removeItem('accessToken');
       storage.removeItem('refreshToken');
       storage.removeItem('userInfo');
diff --git a/buyer/src/components/header/ShopHeader.vue b/buyer/src/components/header/ShopHeader.vue
index 0b2bda67..33f32a02 100644
--- a/buyer/src/components/header/ShopHeader.vue
+++ b/buyer/src/components/header/ShopHeader.vue
@@ -20,7 +20,7 @@ export default {
     }
   },
   computed: {
-    storeDetail () {
+    storeDetail () { // 店铺详情
       return this.detail;
     }
   }
diff --git a/buyer/src/components/header/hoverSearch.vue b/buyer/src/components/header/hoverSearch.vue
index 5c9e21a0..a81980b8 100644
--- a/buyer/src/components/header/hoverSearch.vue
+++ b/buyer/src/components/header/hoverSearch.vue
@@ -23,7 +23,7 @@ export default {
     }
   },
   methods: {
-    goCartList () {
+    goCartList () { // 跳转购物车页面
       let routerUrl = this.$router.resolve({
         path: '/cart'
       })
diff --git a/buyer/src/components/indexDecorate/modelList/carousel.vue b/buyer/src/components/indexDecorate/modelList/carousel.vue
index 0c737399..45c6be95 100644
--- a/buyer/src/components/indexDecorate/modelList/carousel.vue
+++ b/buyer/src/components/indexDecorate/modelList/carousel.vue
@@ -67,14 +67,14 @@ export default {
     };
   },
   methods: {
-    getArticleList () {
+    getArticleList () { // 获取常见问题列表
       articleList(this.params).then(res => {
         if (res.success) {
           this.articleList = res.result.records
         }
       })
     },
-    goArticle (id) {
+    goArticle (id) { // 跳转文章详情
       let routeUrl = this.$router.resolve({
         path: '/article',
         query: {id}
diff --git a/buyer/src/components/indexDecorate/modelList/firstPageAdvert.vue b/buyer/src/components/indexDecorate/modelList/firstPageAdvert.vue
index 270e6377..7d35c935 100644
--- a/buyer/src/components/indexDecorate/modelList/firstPageAdvert.vue
+++ b/buyer/src/components/indexDecorate/modelList/firstPageAdvert.vue
@@ -32,7 +32,6 @@ export default {
       options: this.data.options // 装修数据
     };
   },
-  methods: {}
 };
 
 
diff --git a/buyer/src/pages/PointMall.vue b/buyer/src/pages/PointMall.vue
index 7cf5ae32..e72d219b 100644
--- a/buyer/src/pages/PointMall.vue
+++ b/buyer/src/pages/PointMall.vue
@@ -63,7 +63,8 @@ export default {
         pageNumber: 1,
         pageSize: 20,
         pointsGoodsCategoryId: ''
-      }
+      },
+      total: 0 // 商品总数
     }
   },
   mounted () {
@@ -76,6 +77,7 @@ export default {
       pointGoods(this.params).then(res => {
         if (res.success) {
           this.goodsList = res.result.records
+          this.total = res.result.total
         }
       })
     },
@@ -94,7 +96,7 @@ export default {
     goGoodsDetail (skuId, goodsId) { // 跳转商品详情
       let routerUrl = this.$router.resolve({
         path: '/goodsDetail',
-        query: {skuId, goodsId}
+        query: {skuId, goodsId, way: 'POINT'}
       })
       window.open(routerUrl.href, '_blank')
     },
From f97282ad44299878a6fdc86e19e5c4146d224dda Mon Sep 17 00:00:00 2001
From: mabo 
Date: Thu, 3 Jun 2021 17:32:38 +0800
Subject: [PATCH 09/26] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 buyer/src/components/Search.vue               |  6 +-
 .../indexDecorate/modelList/seckill.vue       |  2 +-
 buyer/src/components/invoiceModal/README.md   |  2 -
 buyer/src/components/invoiceModal/index.vue   |  4 +-
 buyer/src/components/map/index.vue            |  2 +-
 buyer/src/components/map/region.vue           |  6 +-
 buyer/src/components/nav/GoodsClassNav.vue    |  3 +-
 buyer/src/components/verify/index.vue         | 10 +-
 buyer/src/pages/GoodsDetail.vue               |  1 +
 .../pages/home/memberCenter/AccountBind.vue   |  7 --
 .../pages/home/memberCenter/AccountSafe.vue   | 98 +------------------
 .../pages/home/memberCenter/CommentList.vue   | 13 +--
 .../home/memberCenter/ComplainDetail.vue      |  8 +-
 .../pages/home/memberCenter/ComplainList.vue  | 12 +--
 .../pages/home/memberCenter/Distribution.vue  | 10 +-
 .../src/pages/home/memberCenter/Favorites.vue | 14 +--
 buyer/src/pages/home/memberCenter/Invoice.vue |  6 +-
 .../home/memberCenter/evaluation/AddEval.vue  | 14 +--
 .../memberCenter/evaluation/EvalDetail.vue    |  6 +-
 .../goods/goods-seller/goodsOperation.vue     |  2 +-
 20 files changed, 60 insertions(+), 166 deletions(-)
diff --git a/buyer/src/components/Search.vue b/buyer/src/components/Search.vue
index 3a3653a1..0354bcf4 100644
--- a/buyer/src/components/Search.vue
+++ b/buyer/src/components/Search.vue
@@ -63,17 +63,17 @@ export default {
     };
   },
   methods: {
-    selectTags (item) {
+    selectTags (item) { // 选择热门标签
       this.searchData = item;
       this.search();
     },
-    search () {
+    search () { // 全平台搜索商品
       this.$router.push({
         path: '/goodsList',
         query: { keyword: this.searchData }
       });
     },
-    searchStore () {
+    searchStore () { // 店铺搜索商品
       this.$emit('search', this.searchData)
     }
   },
diff --git a/buyer/src/components/indexDecorate/modelList/seckill.vue b/buyer/src/components/indexDecorate/modelList/seckill.vue
index 5c8efd83..c1f16dd8 100644
--- a/buyer/src/components/indexDecorate/modelList/seckill.vue
+++ b/buyer/src/components/indexDecorate/modelList/seckill.vue
@@ -139,7 +139,7 @@ export default {
         }, 1000);
       }
     },
-    goPromotion () {
+    goPromotion () { // 跳转秒杀页面
       let routeUrl = this.$router.resolve({
         path: '/seckill'
       });
diff --git a/buyer/src/components/invoiceModal/README.md b/buyer/src/components/invoiceModal/README.md
index 3abb8783..94507dbe 100644
--- a/buyer/src/components/invoiceModal/README.md
+++ b/buyer/src/components/invoiceModal/README.md
@@ -1,3 +1 @@
 ## 此组件为结算页面修改发票信息使用 后续可以复用到个人信息添加发票页面
-
-### 目前没有参数,之后会设置一个参数接收历史的单位发票数据
\ No newline at end of file
diff --git a/buyer/src/components/invoiceModal/index.vue b/buyer/src/components/invoiceModal/index.vue
index e332635b..7c44115e 100644
--- a/buyer/src/components/invoiceModal/index.vue
+++ b/buyer/src/components/invoiceModal/index.vue
@@ -69,7 +69,7 @@ export default {
         receiptContent: '不开发票', // 发票内容
         type: 1 // 1 个人 2 单位
       },
-      ruleInline: {
+      ruleInline: { // 验证规则
         receiptTitle: [{ required: true, message: '请填写公司名称' }],
         taxpayerId: [
           { required: true, message: '请填写纳税人识别号' },
@@ -79,7 +79,7 @@ export default {
     };
   },
   methods: {
-    save () {
+    save () { // 保存发票
       if (this.invoiceForm.type === 1) {
         // 个人
         let flag = true;
diff --git a/buyer/src/components/map/index.vue b/buyer/src/components/map/index.vue
index 534a3f68..f408d1e8 100644
--- a/buyer/src/components/map/index.vue
+++ b/buyer/src/components/map/index.vue
@@ -85,7 +85,7 @@ export default {
         this.$emit('getAddress', this.addrContent);
       }
     },
-    init () {
+    init () { // 初始化地图
       AMapLoader.load({
         key: 'b440952723253aa9fe483e698057bf7d', // 申请好的Web端开发者Key,首次调用 load 时必填
         version: '', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
diff --git a/buyer/src/components/map/region.vue b/buyer/src/components/map/region.vue
index f7682cb2..3545e7d8 100644
--- a/buyer/src/components/map/region.vue
+++ b/buyer/src/components/map/region.vue
@@ -21,7 +21,7 @@ export default {
   props: ['addressId'],
   mounted () {},
   methods: {
-    change (val, selectedData) {
+    change (val, selectedData) { // 选择地区
       /**
        * @returns [regionId,region]
        */
@@ -30,7 +30,7 @@ export default {
         selectedData[selectedData.length - 1].__label.split('/')
       ]);
     },
-    loadData (item, callback) {
+    loadData (item, callback) { // 加载数据
       item.loading = true;
       getRegion(item.value).then((res) => {
         if (res.result.length <= 0) {
@@ -59,7 +59,7 @@ export default {
         }
       });
     },
-    async init () {
+    async init () { // 初始化地图数据
       let data = await getRegion(0);
       let arr = [];
       data.result.forEach((item) => {
diff --git a/buyer/src/components/nav/GoodsClassNav.vue b/buyer/src/components/nav/GoodsClassNav.vue
index 134de723..43457c2c 100644
--- a/buyer/src/components/nav/GoodsClassNav.vue
+++ b/buyer/src/components/nav/GoodsClassNav.vue
@@ -209,7 +209,7 @@ export default {
       },
       deep: true
     },
-    '$route': {
+    '$route': { // 监听路由
       handler (val, oVal) {
         if (this.$route.query.categoryId) {
           let cateId = this.$route.query.categoryId.split(',')
@@ -373,6 +373,7 @@ export default {
     }
   },
   mounted () {
+    // 有分类id就根据id搜索
     if (this.$route.query.categoryId) {
       let cateId = this.$route.query.categoryId.split(',')
       Object.assign(this.params, this.$route.query)
diff --git a/buyer/src/components/verify/index.vue b/buyer/src/components/verify/index.vue
index 2ce1ef45..6fb6b735 100644
--- a/buyer/src/components/verify/index.vue
+++ b/buyer/src/components/verify/index.vue
@@ -43,11 +43,11 @@ export default {
     };
   },
   methods: {
-    mouseDown (e) {
+    mouseDown (e) { // 鼠标按下操作,
       this.downX = e.clientX;
       this.flag = true;
     },
-    mouseMove (e) {
+    mouseMove (e) { // 鼠标移动
       if (this.flag) {
         let offset = e.clientX - this.downX;
 
@@ -60,7 +60,7 @@ export default {
         }
       }
     },
-    mouseUp () {
+    mouseUp () { // 鼠标抬起
       if (!this.flag) return false;
       this.flag = false;
       let params = {
@@ -83,7 +83,7 @@ export default {
         }
       });
     },
-    refresh () {
+    refresh () { // 刷新验证图片
       this.flag = false;
       this.downX = 0;
       this.distance = 0;
@@ -91,7 +91,7 @@ export default {
       this.verifyText = '拖动滑块解锁';
       this.getImg();
     },
-    getImg () {
+    getImg () { // 获取验证图片
       getVerifyImg(this.type).then(res => {
         this.data = res.result;
       });
diff --git a/buyer/src/pages/GoodsDetail.vue b/buyer/src/pages/GoodsDetail.vue
index f065d152..9f5fff3b 100644
--- a/buyer/src/pages/GoodsDetail.vue
+++ b/buyer/src/pages/GoodsDetail.vue
@@ -78,6 +78,7 @@ export default {
               name: cateName[index]
             });
           });
+          console.log(cateArr);
           this.categoryBar = cateArr;
           this.goodsMsg = res.result;
           // 判断是否收藏
diff --git a/buyer/src/pages/home/memberCenter/AccountBind.vue b/buyer/src/pages/home/memberCenter/AccountBind.vue
index 114f7d90..f645538c 100644
--- a/buyer/src/pages/home/memberCenter/AccountBind.vue
+++ b/buyer/src/pages/home/memberCenter/AccountBind.vue
@@ -25,13 +25,6 @@
 
 
diff --git a/buyer/src/pages/home/memberCenter/AccountSafe.vue b/buyer/src/pages/home/memberCenter/AccountSafe.vue
index b39ff66c..61d7b9a4 100644
--- a/buyer/src/pages/home/memberCenter/AccountSafe.vue
+++ b/buyer/src/pages/home/memberCenter/AccountSafe.vue
@@ -1,7 +1,6 @@
 
   
     
-
     
       
       
@@ -16,102 +15,11 @@
           修改密码 
         
       
-      
-      
-      
-      
-      
-      
-      
-      
     
    
  
 
 
-
-
diff --git a/manager/src/views/lili-floor-renovation/wap/advertising.vue b/manager/src/views/lili-floor-renovation/wap/advertising.vue
index a6b5c53b..adfe9a9e 100644
--- a/manager/src/views/lili-floor-renovation/wap/advertising.vue
+++ b/manager/src/views/lili-floor-renovation/wap/advertising.vue
@@ -8,7 +8,7 @@
           
              
            
-         
+
         
       
     
@@ -16,7 +16,7 @@
       
         全屏广告
 
-       
+
 
         
           
 
 
-
\ No newline at end of file
diff --git a/manager/src/views/lili-floor-renovation/wap/index.js b/manager/src/views/lili-floor-renovation/wap/index.js
index c7aa1a99..37aa9768 100644
--- a/manager/src/views/lili-floor-renovation/wap/index.js
+++ b/manager/src/views/lili-floor-renovation/wap/index.js
@@ -1,5 +1,5 @@
 import index from './index.vue' //首页
-import btn from './btn.vue' //按钮
+
 import advertising from './advertising.vue' //全屏活动
 import alertAdvertising from './alertAdvertising.vue' //弹窗活动
 
@@ -7,7 +7,7 @@ import alertAdvertising from './alertAdvertising.vue' //弹窗活动
 
 const templates = {
 	index,
-	btn,
+
 	advertising,
 	alertAdvertising
 }
diff --git a/manager/src/views/lili-floor-renovation/wap/navbar.vue b/manager/src/views/lili-floor-renovation/wap/navbar.vue
index a777e892..20be9547 100644
--- a/manager/src/views/lili-floor-renovation/wap/navbar.vue
+++ b/manager/src/views/lili-floor-renovation/wap/navbar.vue
@@ -67,11 +67,7 @@ export default {
           name: "index",
           selected: true,
         },
-        {
-          title: "悬浮按钮",
-          name: "btn",
-          selected: false,
-        },
+
         {
           title: "全屏广告",
           name: "advertising",
diff --git a/manager/src/views/member/list/index.vue b/manager/src/views/member/list/index.vue
index 73d13435..fec0be21 100644
--- a/manager/src/views/member/list/index.vue
+++ b/manager/src/views/member/list/index.vue
@@ -21,11 +21,11 @@
         
添加会员 
       
 
-        
+      
       
-         
+         
       
     
 
@@ -137,12 +137,14 @@ export default {
       loading: true, // 表单加载状态
       addFlag: false, // modal显隐控制
       updateRegion: false, // 地区
-      addMemberForm: { // 添加用户表单
+      addMemberForm: {
+        // 添加用户表单
         mobile: "",
         username: "",
         password: "",
       },
-      searchForm: { // 请求参数
+      searchForm: {
+        // 请求参数
         pageNumber: 1,
         pageSize: 10,
         order: "desc",
@@ -152,7 +154,8 @@ export default {
       },
       picModelFlag: false, // 选择图片
       formValidate: {}, // 表单数据
-      addRule: { // 验证规则
+      addRule: {
+        // 验证规则
         mobile: [
           { required: true, message: "请输入手机号码" },
           {
@@ -229,6 +232,7 @@ export default {
                   {
                     props: {
                       size: "small",
+                      type: params.row.___selected ? "primary" : "",
                     },
                     style: {
                       marginRight: "5px",
@@ -236,11 +240,11 @@ export default {
                     },
                     on: {
                       click: () => {
-                        this.callback(params.row);
+                        this.callback(params.row, params.index);
                       },
                     },
                   },
-                  "选择"
+                  params.row.___selected ? "已选择" : "选择"
                 ),
 
                 h(
@@ -251,7 +255,8 @@ export default {
                       size: "small",
                     },
                     style: {
-                      marginRight: "5px", display: this.selectedMember ? "none" : "block",
+                      marginRight: "5px",
+                      display: this.selectedMember ? "none" : "block",
                     },
                     on: {
                       click: () => {
@@ -270,7 +275,8 @@ export default {
                       ghost: true,
                     },
                     style: {
-                      marginRight: "5px", display: this.selectedMember ? "none" : "block",
+                      marginRight: "5px",
+                      display: this.selectedMember ? "none" : "block",
                     },
                     on: {
                       click: () => {
@@ -308,9 +314,17 @@ export default {
       total: 0, // 表单数据总数
     };
   },
+  props: {
+    // 是否为选中模式
+    selectedMember: {
+      type: Boolean,
+      default: false,
+    },
+  },
   methods: {
     // 回调给父级
-    callback(val) {
+    callback(val, index) {
+      val.___selected = !val.___selected;
       this.$emit("callback", val);
     },
     init() {
@@ -378,6 +392,9 @@ export default {
       API_Member.getMemberListData(this.searchForm).then((res) => {
         if (res.result.records) {
           this.loading = false;
+          res.result.records.forEach((item) => {
+            item.___selected = false;
+          });
           this.data = res.result.records;
           this.total = res.result.total;
         }
@@ -476,7 +493,7 @@ export default {
 /deep/ .ivu-table-wrapper {
   width: 100%;
 }
-/deep/ .ivu-card{
+/deep/ .ivu-card {
   width: 100%;
 }
 .face {
diff --git a/manager/src/views/promotion/coupon/coupon.vue b/manager/src/views/promotion/coupon/coupon.vue
index 5ea885b3..c10a40a7 100644
--- a/manager/src/views/promotion/coupon/coupon.vue
+++ b/manager/src/views/promotion/coupon/coupon.vue
@@ -4,21 +4,10 @@
       
         
       
       
-        添加 
+        添加优惠券 
+        {$router.push({path:'/promotion/add-coupon-specify'})}">精准发劵 
         批量下架 
         
       
-      
-        
-          编辑
-           
-          下架
-           
+      
+        
+          编辑
+           
+          下架
+           
+          {{row.___selected ?'已':''}}选中
+           
          
       
       
-         
+         
       
     
   
@@ -94,7 +47,6 @@
 
+
+
+
diff --git a/manager/src/views/promotion/seckill/seckill.vue b/manager/src/views/promotion/seckill/seckill.vue
index c22f8af0..3b2531ab 100644
--- a/manager/src/views/promotion/seckill/seckill.vue
+++ b/manager/src/views/promotion/seckill/seckill.vue
@@ -2,29 +2,12 @@
   
     
       
-        
       
       
         添加活动 
       
+      
+        
+          
+            
+              编辑 
 
-        
-          
-            编辑 
+              查看 
 
-            查看 
+              管理 
 
-            管理 
-
-            
-            下架 
-             
-            删除 
-           
-        
+              " class="mr_5" @click="off(row)">下架
+               
+              删除 
+             
+          
+
+          
+             
+          
+         
+        
+
+           
+         
+       
 
-      
-         
-      
      
    
  
 
 
 
diff --git a/manager/src/views/promotion/seckill/setupSeckill.vue b/manager/src/views/promotion/seckill/setupSeckill.vue
new file mode 100644
index 00000000..9ad7c77b
--- /dev/null
+++ b/manager/src/views/promotion/seckill/setupSeckill.vue
@@ -0,0 +1,151 @@
+
+  
+ 
+
+
+
+
diff --git a/manager/src/views/seller/shop/shopOperation.vue b/manager/src/views/seller/shop/shopOperation.vue
index 05295e05..ccafc805 100644
--- a/manager/src/views/seller/shop/shopOperation.vue
+++ b/manager/src/views/seller/shop/shopOperation.vue
@@ -224,7 +224,6 @@ import memberLayout from "@/views/member/list/index";
 import ossManage from "@/views/sys/oss-manage/ossManage";
 import { getCategoryTree } from "@/api/goods";
 import { shopDetail, shopAdd, shopEdit, getShopByMemberId } from "@/api/shops";
-import * as filters from "@/utils/filters";
 import uploadPicInput from "@/views/my-components/lili/upload-pic-input";
 import region from "@/views/lili-components/region";
 import liliMap from "@/views/my-components/map/index";
diff --git a/manager/src/views/sys/message/sms.vue b/manager/src/views/sys/message/sms.vue
index b863d8ee..3583b5f5 100644
--- a/manager/src/views/sys/message/sms.vue
+++ b/manager/src/views/sys/message/sms.vue
@@ -116,7 +116,7 @@
                     
 
                        
         
@@ -181,7 +181,7 @@ export default {
             this.liveGoodsData.forEach((item, index) => {
               val.forEach((callback) => {
                 if (item.id == callback.id) {
-                  this.$set(this.liveGoodsData[index], "__selected", true);
+                  this.$set(this.liveGoodsData[index], "___selected", true);
                   // this.selectedGoods.push(item);
                 }
               });
@@ -208,15 +208,15 @@ export default {
      * 回调参数补充
      */
     selectedLiveGoods(val, index) {
-      if (!val.__selected) {
-        val.__selected = true;
-        this.$set(this.liveGoodsData[index], "__selected", true);
+      if (!val.___selected) {
+        val.___selected = true;
+        this.$set(this.liveGoodsData[index], "___selected", true);
         this.selectedGoods.push(this.liveGoodsData[index]);
       } else {
         this.$nextTick(() => {
-          val.__selected = false;
+          val.___selected = false;
 
-          this.$set(this.liveGoodsData[index], "__selected", true);
+          this.$set(this.liveGoodsData[index], "___selected", true);
           this.selectedGoods.splice(index, 1);
         });
       }
diff --git a/seller/src/views/statistics/traffic.vue b/seller/src/views/statistics/traffic.vue
index 236e381e..131f30f0 100644
--- a/seller/src/views/statistics/traffic.vue
+++ b/seller/src/views/statistics/traffic.vue
@@ -64,8 +64,8 @@ export default {
     return {
       // 时间
 
-      uvs: "", // 访客数
-      pvs: "", // 浏览量
+      uvs: 0, // 访客数
+      pvs: 0, // 浏览量
 
       dateList: [
         // 日期选择列表
@@ -198,8 +198,8 @@ export default {
         if (res.result) {
           this.data = res.result;
           res.result.forEach((item) => {
-            this.uvs += item.uvNum;
-            this.pvs += item.pvNum;
+            this.uvs += parseInt(item.uvNum);
+            this.pvs += parseInt(item.pvNum);
           });
 
           if (!this.orderChart) {
From c9ea7ba8986766042663e0d1d20f598ef0773ff0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?lemon=E6=A9=AA?= <17633066053@163.com>
Date: Thu, 10 Jun 2021 18:31:54 +0800
Subject: [PATCH 12/26] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86?=
 =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E9=97=AE=E9=A2=98=EF=BC=8C=E6=96=B0=E5=A2=9E?=
 =?UTF-8?q?=E9=83=A8=E5=88=86=E5=8A=9F=E8=83=BD=EF=BC=8C=E8=A7=A3=E5=86=B3?=
 =?UTF-8?q?=E5=8F=91=E7=8E=B0=E7=9A=84bug=EF=BC=8C=E6=9A=82=E6=9C=AA?=
 =?UTF-8?q?=E5=AE=8C=E5=85=A8=E6=B5=8B=E8=AF=95=E9=80=9A=E8=BF=87=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 buyer/src/plugins/request.js                  | 281 +++---
 .../lili-floor-renovation/wap/navbar.vue      |  32 +-
 .../wap/template/tpl.scss                     |   4 +-
 .../wap/template/tpl_flex_five.vue            |  19 +-
 .../wap/template/tpl_flex_four.vue            |  11 +-
 .../wap/template/tpl_flex_three.vue           |   6 +-
 .../wap/template/tpl_left_one_right_two.vue   |   4 +-
 .../wap/template/tpl_left_two_right_one.vue   |  14 +-
 manager/src/views/login.vue                   |  50 +-
 manager/src/views/main-components/header.vue  |   5 +-
 .../src/views/my-components/lili/editor.vue   |  63 +-
 .../views/page/article-manage/articleList.vue |  30 +-
 .../src/views/sys/app-version/appVersion.vue  |   1 +
 seller/src/api/order.js                       |  17 +-
 seller/src/assets/download.png                | Bin 0 -> 2620 bytes
 seller/src/assets/goodsType1.png              | Bin 0 -> 2900 bytes
 seller/src/assets/goodsType2.png              | Bin 0 -> 754 bytes
 seller/src/assets/goodsTypeTpl.png            | Bin 0 -> 3697 bytes
 seller/src/assets/logo.png                    | Bin 239866 -> 398960 bytes
 seller/src/assets/success.png                 | Bin 0 -> 4471 bytes
 seller/src/assets/upload.png                  | Bin 0 -> 2506 bytes
 seller/src/config/index.js                    |   8 +-
 seller/src/router/router.js                   |   7 +
 .../views/goods/goods-seller/addGoods.scss    | 125 ++-
 .../goods/goods-seller/goodsOperation.vue     | 809 +++++++-----------
 seller/src/views/login.vue                    | 138 ++-
 seller/src/views/main-components/header.vue   |   6 +-
 .../views/order/order/exportOrderDeliver.vue  | 122 +++
 seller/src/views/order/order/orderDetail.vue  |   2 +-
 seller/src/views/order/order/orderList.vue    | 520 +++++------
 30 files changed, 1143 insertions(+), 1131 deletions(-)
 create mode 100644 seller/src/assets/download.png
 create mode 100644 seller/src/assets/goodsType1.png
 create mode 100644 seller/src/assets/goodsType2.png
 create mode 100644 seller/src/assets/goodsTypeTpl.png
 create mode 100644 seller/src/assets/success.png
 create mode 100644 seller/src/assets/upload.png
 create mode 100644 seller/src/views/order/order/exportOrderDeliver.vue
diff --git a/buyer/src/plugins/request.js b/buyer/src/plugins/request.js
index c2c2b108..d650d2a7 100644
--- a/buyer/src/plugins/request.js
+++ b/buyer/src/plugins/request.js
@@ -1,77 +1,133 @@
 // import Vue from 'vue';
-import axios from 'axios';
-import https from 'https';
-import {
-  Message,
-  Spin,
-  Modal
-} from 'view-design';
-import Storage from './storage';
-import config from '@/config';
-import router from '../router/index.js';
-import store from '../vuex/store';
-import {
-  handleRefreshToken
-} from '@/api/index';
-const qs = require('qs');
-
-export const buyerUrl = (process.env.NODE_ENV === 'development' ? config.api_dev.buyer : config.api_prod.buyer);
-export const commonUrl = (process.env.NODE_ENV === 'development' ? config.api_dev.common : config.api_prod.common);
-export const managerUrl = (process.env.NODE_ENV === 'development' ? config.api_dev.manager : config.api_prod.manager);
-export const sellerUrl = (process.env.NODE_ENV === 'development' ? config.api_dev.seller : config.api_prod.seller);
+import axios from "axios";
+import https from "https";
+import { Message, Spin, Modal } from "view-design";
+import Storage from "./storage";
+import config from "@/config";
+import router from "../router/index.js";
+import store from "../vuex/store";
+import { handleRefreshToken } from "@/api/index";
+const qs = require("qs");
+export const buyerUrl =
+  process.env.NODE_ENV === "development"
+    ? config.api_dev.buyer
+    : config.api_prod.buyer;
+export const commonUrl =
+  process.env.NODE_ENV === "development"
+    ? config.api_dev.common
+    : config.api_prod.common;
+export const managerUrl =
+  process.env.NODE_ENV === "development"
+    ? config.api_dev.manager
+    : config.api_prod.manager;
+export const sellerUrl =
+  process.env.NODE_ENV === "development"
+    ? config.api_dev.seller
+    : config.api_prod.seller;
 // 创建axios实例
 var isRefreshToken = 0;
-const refreshToken = getTokenDebounce()
+const refreshToken = getTokenDebounce();
 const service = axios.create({
   timeout: 10000, // 请求超时时间
   baseURL: buyerUrl, // API
   httpsAgent: new https.Agent({
     rejectUnauthorized: false
   }),
-  paramsSerializer: params => qs.stringify(params, {
-    arrayFormat: 'repeat'
-  })
+  paramsSerializer: params =>
+    qs.stringify(params, {
+      arrayFormat: "repeat"
+    })
 });
 
 // request拦截器
-service.interceptors.request.use(config => {
-  const {
-    loading
-  } = config;
-  // 如果是put/post请求,用qs.stringify序列化参数
-  const isPutPost = config.method === 'put' || config.method === 'post';
-  const isJson = config.headers['Content-Type'] === 'application/json';
-  const isFile = config.headers['Content-Type'] === 'multipart/form-data';
-  if (isPutPost && isJson) {
-    config.data = JSON.stringify(config.data);
+service.interceptors.request.use(
+  config => {
+    const { loading } = config;
+    // 如果是put/post请求,用qs.stringify序列化参数
+    const isPutPost = config.method === "put" || config.method === "post";
+    const isJson = config.headers["Content-Type"] === "application/json";
+    const isFile = config.headers["Content-Type"] === "multipart/form-data";
+    if (isPutPost && isJson) {
+      config.data = JSON.stringify(config.data);
+    }
+    if (isPutPost && !isFile && !isJson) {
+      config.data = qs.stringify(config.data, {
+        arrayFormat: "repeat"
+      });
+    }
+    /** 配置全屏加载 */
+    if (process.client && loading !== false) {
+      config.loading = Spin.show();
+    }
+
+    const uuid = Storage.getItem("uuid");
+    config.headers["uuid"] = uuid;
+
+    // 获取访问Token
+    let accessToken = Storage.getItem("accessToken");
+    if (accessToken && config.needToken) {
+      config.headers["accessToken"] = accessToken;
+      // 解析当前token时间
+      let jwtData = JSON.parse(
+        decodeURIComponent(escape(window.atob(accessToken.split(".")[1])))
+      );
+      if (jwtData.exp < new Date().getTime() / 1000) {
+        refresh()
+      }
+    }
+
+    return config;
+  },
+  error => {
+    Promise.reject(error);
   }
-  if (isPutPost && !isFile && !isJson) {
-    config.data = qs.stringify(config.data, {
-      arrayFormat: 'repeat'
+);
+
+async function refresh() {
+  const getTokenRes = await refreshToken();
+  if (getTokenRes === "success") {
+    // 刷新token
+    if (isRefreshToken === 1) {
+      error.response.config.headers.accessToken = Storage.getItem(
+        "accessToken"
+      );
+      return service(error.response.config);
+    } else {
+      router.go(0);
+    }
+  } else {
+    Storage.removeItem("accessToken");
+    Storage.removeItem("refreshToken");
+    Storage.removeItem("userInfo");
+    Storage.setItem("cartNum", 0);
+    store.commit("SET_CARTNUM", 0);
+    console.log("1111");
+    Modal.confirm({
+      title: "请登录",
+      content: "
请登录后执行此操作
",
+      okText: "立即登录",
+      cancelText: "继续浏览",
+      onOk: () => {
+        router.push({
+          path: "/login",
+          query: {
+            rePath: router.history.current.path,
+            query: JSON.stringify(router.history.current.query)
+          }
+        });
+      },
+      onCancel: () => {
+        Modal.remove();
+      }
     });
   }
-  /** 配置全屏加载 */
-  if (process.client && loading !== false) {
-    config.loading = Spin.show();
-  }
-
-  const uuid = Storage.getItem('uuid');
-  config.headers['uuid'] = uuid;
-
-  // 获取访问Token
-  let accessToken = Storage.getItem('accessToken');
-  if (accessToken && config.needToken) {
-    config.headers['accessToken'] = accessToken;
-  }
-  return config;
-}, error => {
-  Promise.reject(error);
-});
+}
 
 // respone拦截器
 service.interceptors.response.use(
   async response => {
     await closeLoading(response);
+
     return response.data;
   },
   async error => {
@@ -84,45 +140,15 @@ service.interceptors.response.use(
       isRefreshToken++;
 
       if (isRefreshToken === 1) {
-        const getTokenRes = await refreshToken();
-        if (getTokenRes === 'success') { // 刷新token
-          if (isRefreshToken === 1) {
-            error.response.config.headers.accessToken = Storage.getItem('accessToken')
-            return service(error.response.config)
-          } else {
-            router.go(0)
-          }
-        } else {
-          Storage.removeItem('accessToken');
-          Storage.removeItem('refreshToken');
-          Storage.removeItem('userInfo');
-          Storage.setItem('cartNum', 0)
-          store.commit('SET_CARTNUM', 0)
-          console.log('1111');
-          Modal.confirm({
-            title: '请登录',
-            content: '
请登录后执行此操作
',
-            okText: '立即登录',
-            cancelText: '继续浏览',
-            onOk: () => {
-              router.push({
-                path: '/login',
-                query: {
-                  rePath: router.history.current.path,
-                  query: JSON.stringify(router.history.current.query)
-                }
-              });
-            },
-            onCancel: () => {
-              Modal.remove();
-            }
-          });
-        }
-        isRefreshToken = 0
+        refresh()
+        isRefreshToken = 0;
       }
     } else {
       if (error.message) {
-        let _message = error.code === 'ECONNABORTED' ? '连接超时,请稍候再试!' : '网络错误,请稍后再试!';
+        let _message =
+          error.code === "ECONNABORTED"
+            ? "连接超时,请稍候再试!"
+            : "网络错误,请稍后再试!";
         Message.error(errorData.message || _message);
       }
     }
@@ -134,7 +160,7 @@ service.interceptors.response.use(
  * 关闭全局加载
  * @param target
  */
-const closeLoading = (target) => {
+const closeLoading = target => {
   if (!target.config || !target.config.loading) return true;
   return new Promise((resolve, reject) => {
     setTimeout(() => {
@@ -145,13 +171,13 @@ const closeLoading = (target) => {
 };
 
 export const Method = {
-  GET: 'get',
-  POST: 'post',
-  PUT: 'put',
-  DELETE: 'delete'
+  GET: "get",
+  POST: "post",
+  PUT: "put",
+  DELETE: "delete"
 };
 
-export default function request (options) {
+export default function request(options) {
   // 如果是服务端或者是请求的刷新token,不需要检查token直接请求。
   //   if (process.server || options.url.indexOf('passport/token') !== -1) {
   return service(options);
@@ -160,47 +186,46 @@ export default function request (options) {
 }
 
 // 防抖闭包来一波
-function getTokenDebounce () {
-  let lock = false
-  let success = false
-  return function () {
+function getTokenDebounce() {
+  let lock = false;
+  let success = false;
+  return function() {
     if (!lock) {
-      lock = true
-      let oldRefreshToken = Storage.getItem('refreshToken');
-      handleRefreshToken(oldRefreshToken).then(res => {
-        if (res.success) {
-          let {
-            accessToken,
-            refreshToken
-          } = res.result;
-          Storage.setItem('accessToken', accessToken);
-          Storage.setItem('refreshToken', refreshToken);
+      lock = true;
+      let oldRefreshToken = Storage.getItem("refreshToken");
+      handleRefreshToken(oldRefreshToken)
+        .then(res => {
+          if (res.success) {
+            let { accessToken, refreshToken } = res.result;
+            Storage.setItem("accessToken", accessToken);
+            Storage.setItem("refreshToken", refreshToken);
 
-          success = true
-          lock = false
-        } else {
-          success = false
-          lock = false
-          // router.push('/login')
-        }
-      }).catch((err) => {
-        console.log(err);
-        success = false
-        lock = false
-      })
+            success = true;
+            lock = false;
+          } else {
+            success = false;
+            lock = false;
+            // router.push('/login')
+          }
+        })
+        .catch(err => {
+          console.log(err);
+          success = false;
+          lock = false;
+        });
     }
     return new Promise(resolve => {
       // 一直看lock,直到请求失败或者成功
       const timer = setInterval(() => {
         if (!lock) {
-          clearInterval(timer)
+          clearInterval(timer);
           if (success) {
-            resolve('success')
+            resolve("success");
           } else {
-            resolve('fail')
+            resolve("fail");
           }
         }
-      }, 500) // 轮询时间间隔
-    })
-  }
+      }, 500); // 轮询时间间隔
+    });
+  };
 }
diff --git a/manager/src/views/lili-floor-renovation/wap/navbar.vue b/manager/src/views/lili-floor-renovation/wap/navbar.vue
index 20be9547..ef7050c5 100644
--- a/manager/src/views/lili-floor-renovation/wap/navbar.vue
+++ b/manager/src/views/lili-floor-renovation/wap/navbar.vue
@@ -3,13 +3,7 @@
   
     店铺装修
     
-      
+      
         {{ item.title }}
        
      
@@ -21,17 +15,9 @@
           
          
       
-      
保存模板 
+      
保存模板 
 
-      
+      
         
           
             模板名称 
@@ -61,7 +47,8 @@ export default {
       progress: true, // 展示进度
       num: 20, // 提交进度
       saveDialog: false, // 加载状态
-      way: [ // 装修tab栏切换
+      way: [
+        // 装修tab栏切换
         {
           title: "首页",
           name: "index",
@@ -80,7 +67,8 @@ export default {
         },
       ],
       qrcode: "", // 二维码
-      submitWay: { // 表单信息
+      submitWay: {
+        // 表单信息
         pageShow: this.$route.query.type || false,
         name: this.$route.query.name || "模板名称",
         pageClientType: "H5",
@@ -124,11 +112,13 @@ export default {
 
     // 更新
     update() {
-         this.progress = false;
+      this.progress = false;
       API_Other.updateHome(this.$route.query.id, {
         pageData: JSON.stringify(this.$store.state.styleStore),
         name: this.submitWay.name,
         pageShow: this.submitWay.pageShow,
+        pageType: "INDEX",
+        pageClientType: "H5",
       })
         .then((res) => {
           this.num = 50;
@@ -171,7 +161,7 @@ export default {
               this.goback();
             }, 1000);
           } else {
-             this.progress = true;
+            this.progress = true;
             this.saveDialog = false;
             this.$Message.error("保存失败,请稍后重试");
           }
diff --git a/manager/src/views/lili-floor-renovation/wap/template/tpl.scss b/manager/src/views/lili-floor-renovation/wap/template/tpl.scss
index b8e63cf7..638dd1cc 100644
--- a/manager/src/views/lili-floor-renovation/wap/template/tpl.scss
+++ b/manager/src/views/lili-floor-renovation/wap/template/tpl.scss
@@ -1,6 +1,6 @@
 .image-mode {
-    max-width: 100%;
-    height: auto;
+    width: 100%;
+    height: 100%;
     display: block;
     padding: 1px;
 }
diff --git a/manager/src/views/lili-floor-renovation/wap/template/tpl_flex_five.vue b/manager/src/views/lili-floor-renovation/wap/template/tpl_flex_five.vue
index 8abfba18..7b405c4a 100644
--- a/manager/src/views/lili-floor-renovation/wap/template/tpl_flex_five.vue
+++ b/manager/src/views/lili-floor-renovation/wap/template/tpl_flex_five.vue
@@ -1,11 +1,11 @@
 
 
   
  
 
@@ -13,21 +13,18 @@
 export default {
   title: "五列单行图片模块",
   props: ["res"],
-  mounted() {
-    console.log(this.res);
-  }
 };
 
 
\ No newline at end of file
+
diff --git a/manager/src/views/lili-floor-renovation/wap/template/tpl_flex_four.vue b/manager/src/views/lili-floor-renovation/wap/template/tpl_flex_four.vue
index 4ef37368..a3ac9350 100644
--- a/manager/src/views/lili-floor-renovation/wap/template/tpl_flex_four.vue
+++ b/manager/src/views/lili-floor-renovation/wap/template/tpl_flex_four.vue
@@ -12,21 +12,22 @@
 export default {
   title: "四列单行图片模块",
   props: ["res"],
-  mounted() {
-    console.log(this.res);
-  }
+
 };
 
 
\ No newline at end of file
+
diff --git a/manager/src/views/lili-floor-renovation/wap/template/tpl_flex_three.vue b/manager/src/views/lili-floor-renovation/wap/template/tpl_flex_three.vue
index 262313ce..e0916e1b 100644
--- a/manager/src/views/lili-floor-renovation/wap/template/tpl_flex_three.vue
+++ b/manager/src/views/lili-floor-renovation/wap/template/tpl_flex_three.vue
@@ -11,14 +11,12 @@
 export default {
   title: "三列单行图片模块",
   props: ["res"],
-  mounted() {
-    console.log(this.res);
-  }
 };
 
 
\ No newline at end of file
+
diff --git a/manager/src/views/lili-floor-renovation/wap/template/tpl_left_one_right_two.vue b/manager/src/views/lili-floor-renovation/wap/template/tpl_left_one_right_two.vue
index 378b07a3..fcf0936f 100644
--- a/manager/src/views/lili-floor-renovation/wap/template/tpl_left_one_right_two.vue
+++ b/manager/src/views/lili-floor-renovation/wap/template/tpl_left_one_right_two.vue
@@ -20,7 +20,7 @@ export default {
   title: "左一右二",
   props: ["res"],
   mounted() {
-    console.log(this.res);
+
   }
 };
 
@@ -34,4 +34,4 @@ export default {
   background-size: cover;
 }
 
-
\ No newline at end of file
+
diff --git a/manager/src/views/lili-floor-renovation/wap/template/tpl_left_two_right_one.vue b/manager/src/views/lili-floor-renovation/wap/template/tpl_left_two_right_one.vue
index 884c01a3..e77470cf 100644
--- a/manager/src/views/lili-floor-renovation/wap/template/tpl_left_two_right_one.vue
+++ b/manager/src/views/lili-floor-renovation/wap/template/tpl_left_two_right_one.vue
@@ -10,7 +10,7 @@
       
 
      
     
-      
+      
 
      
     
 
@@ -21,18 +21,22 @@ export default {
   props: ["res"],
   mounted() {
     console.log(this.res);
-  }
+  },
 };
 
 
\ No newline at end of file
+.view-height-75 {
+  .image-mode {
+    height: 75px;
+  }
+}
+
diff --git a/manager/src/views/login.vue b/manager/src/views/login.vue
index d2ea2e2f..f428e847 100644
--- a/manager/src/views/login.vue
+++ b/manager/src/views/login.vue
@@ -23,12 +23,7 @@
 
       
       
-      
+      
 
       
          
       
@@ -48,7 +43,7 @@ import LangSwitch from "@/views/main-components/lang-switch";
 import RectLoading from "@/views/my-components/lili/rect-loading";
 import CountDownButton from "@/views/my-components/lili/count-down-button";
 import util from "@/libs/util.js";
-import verify from '@/views/my-components/verify';
+import verify from "@/views/my-components/verify";
 
 export default {
   components: {
@@ -57,18 +52,20 @@ export default {
     LangSwitch,
     Header,
     Footer,
-    verify
+    verify,
   },
   data() {
     return {
       loading: false, // 加载状态
-      form: { // 表单数据
+      form: {
+        // 表单数据
         username: "",
         password: "",
         mobile: "",
         code: "",
       },
-      rules: { // 验证规则
+      rules: {
+        // 验证规则
         username: [
           {
             required: true,
@@ -88,7 +85,8 @@ export default {
   },
   methods: {
     mounted() {},
-    afterLogin(res) { // 登录成功后处理
+    afterLogin(res) {
+      // 登录成功后处理
       let accessToken = res.result.accessToken;
       let refreshToken = res.result.refreshToken;
       this.setStore("accessToken", accessToken);
@@ -109,28 +107,35 @@ export default {
         }
       });
     },
-    submitLogin() { // 登录操作
+    submitLogin() {
+      // 登录操作
       this.$refs.usernameLoginForm.validate((valid) => {
         if (valid) {
           this.$refs.verify.show = true;
         }
       });
     },
-    verifyChange (con) { // 拼图验证码回显
+    verifyChange(con) {
+      // 拼图验证码回显
       if (!con.status) return;
-      
+
       this.loading = true;
       login({
         username: this.form.username,
         password: this.md5(this.form.password),
-      }).then((res) => {
-        if (res && res.success) {
-          this.afterLogin(res);
-        } else {
+      })
+        .then((res) => {
+          if (res && res.success) {
+            this.afterLogin(res);
+          } else {
+            this.loading = false;
+          }
+        })
+        .catch(() => {
           this.loading = false;
-        }
-      }).catch(()=>{this.loading = false});
-    }
+        });
+      this.$refs.verify.show = false;
+    },
   },
 };
 
@@ -154,7 +159,7 @@ export default {
     position: relative;
     zoom: 1;
   }
-  .verify-con{
+  .verify-con {
     position: absolute;
     top: 90px;
     z-index: 10;
@@ -198,5 +203,4 @@ export default {
 .flex {
   justify-content: center;
 }
-
 
diff --git a/manager/src/views/main-components/header.vue b/manager/src/views/main-components/header.vue
index dcfef0bd..1eeb107b 100644
--- a/manager/src/views/main-components/header.vue
+++ b/manager/src/views/main-components/header.vue
@@ -2,7 +2,6 @@
   
     
   
 
@@ -15,13 +14,13 @@ export default {
 
 
diff --git a/manager/src/views/my-components/lili/editor.vue b/manager/src/views/my-components/lili/editor.vue
index bc7811a2..697bc9ed 100644
--- a/manager/src/views/my-components/lili/editor.vue
+++ b/manager/src/views/my-components/lili/editor.vue
@@ -15,20 +15,8 @@
       
 
      
 
-    
-       
+    
+       
        
       
         全屏开/关 
@@ -56,21 +44,21 @@ export default {
   props: {
     id: {
       type: String,
-      default: "editor"
+      default: "editor",
     },
     value: String,
     base64: {
       type: Boolean,
-      default: false
+      default: false,
     },
     showExpand: {
       type: Boolean,
-      default: true
+      default: true,
     },
     openXss: {
       type: Boolean,
-      default: false
-    }
+      default: false,
+    },
   },
   data() {
     return {
@@ -79,16 +67,17 @@ export default {
       dataEdit: "", // 编辑数据
       showHTMLModal: false, // 显示html
       full: false, // html全屏开关
-      fullscreenModal: false // 显示全屏预览
+      fullscreenModal: false, // 显示全屏预览
     };
   },
   methods: {
+
     initEditor() {
       let that = this;
       // 详见wangeditor3官网文档 https://www.kancloud.cn/wangfupeng/wangeditor3/332599
       editor = new E(`#${this.id}`);
       // 编辑内容绑定数据
-      editor.config.onchange = html => {
+      editor.config.onchange = (html) => {
         if (this.openXss) {
           this.data = xss(html);
         } else {
@@ -108,30 +97,30 @@ export default {
         editor.config.uploadImgServer = uploadFile;
         // lili如要header中传入token鉴权
         editor.config.uploadImgHeaders = {
-          accessToken: that.getStore("accessToken")
+          accessToken: that.getStore("accessToken"),
         };
         editor.config.uploadFileName = "file";
         editor.config.uploadImgHooks = {
-          before: function(xhr, editor, files) {
+          before: function (xhr, editor, files) {
             // 图片上传之前触发
           },
-          success: function(xhr, editor, result) {
+          success: function (xhr, editor, result) {
             // 图片上传并返回结果,图片插入成功之后触发
           },
-          fail: function(xhr, editor, result) {
+          fail: function (xhr, editor, result) {
             // 图片上传并返回结果,但图片插入错误时触发
             that.$Message.error("上传图片失败");
           },
-          error: function(xhr, editor) {
+          error: function (xhr, editor) {
             // 图片上传出错时触发
             that.$Message.error("上传图片出错");
           },
-          timeout: function(xhr, editor) {
+          timeout: function (xhr, editor) {
             // 图片上传超时时触发
             that.$Message.error("上传图片超时");
           },
           // 如果服务器端返回的不是 {errno:0, data: [...]} 这种格式,可使用该配置
-          customInsert: function(insertImg, result, editor) {
+          customInsert: function (insertImg, result, editor) {
             if (result.success == true) {
               let url = result.result;
               insertImg(url);
@@ -139,10 +128,11 @@ export default {
             } else {
               that.$Message.error(result.message);
             }
-          }
+          },
         };
       }
-      editor.config.customAlert = function(info) {
+
+      editor.config.customAlert = function (info) {
         // info 是需要提示的内容
         // that.$Message.info(info);
       };
@@ -156,8 +146,8 @@ export default {
           // type -> 'emoji' / 'image'
           type: "image",
           // content -> 数组
-          content: sina
-        }
+          content: sina,
+        },
       ];
       editor.create();
       if (this.value) {
@@ -187,7 +177,7 @@ export default {
           editor.txt.html(this.data);
           this.$emit("input", this.data);
           this.$emit("on-change", this.data);
-        }
+        },
       });
     },
     setData(value) {
@@ -200,22 +190,21 @@ export default {
         this.$emit("input", this.data);
         this.$emit("on-change", this.data);
       }
-    }
+    },
   },
   watch: {
     value(val) {
       this.setData(val);
-    }
+    },
   },
   mounted() {
     this.initEditor();
-  }
+  },
 };
 
 
 
diff --git a/seller/src/views/main-components/header.vue b/seller/src/views/main-components/header.vue
index e3727242..5f3bac1a 100644
--- a/seller/src/views/main-components/header.vue
+++ b/seller/src/views/main-components/header.vue
@@ -1,7 +1,7 @@
 
   
     
   
  
@@ -14,13 +14,13 @@ export default {
 
 
diff --git a/seller/src/views/order/order/exportOrderDeliver.vue b/seller/src/views/order/order/exportOrderDeliver.vue
new file mode 100644
index 00000000..ab0d7c51
--- /dev/null
+++ b/seller/src/views/order/order/exportOrderDeliver.vue
@@ -0,0 +1,122 @@
+
+  
+    
+      
+        
+        
+          
{{item.title}} 
+        
+      
+    
 
+
+    
+      
+      
+
+        下载导入模板 
+      
+      
+      
+      
+      
+
+    
 
+
+   
+ 
+
+
+
+
diff --git a/seller/src/views/order/order/orderDetail.vue b/seller/src/views/order/order/orderDetail.vue
index cfda0899..740dfa33 100644
--- a/seller/src/views/order/order/orderDetail.vue
+++ b/seller/src/views/order/order/orderDetail.vue
@@ -527,7 +527,7 @@ export default {
     orderTakeSubmit() {
       this.$refs.orderTakeForm.validate((valid) => {
         if (valid) {
-          API_Order.orderTake(this.sn, this.orderTakeForm).then((res) => {
+          API_Order.orderTake(this.sn, this.orderTakeForm.qrCode).then((res) => {
             if (res.success) {
               this.$Message.success("订单核销成功");
               this.orderTakeModal = false;
diff --git a/seller/src/views/order/order/orderList.vue b/seller/src/views/order/order/orderList.vue
index 7b53d2c3..9451e16f 100644
--- a/seller/src/views/order/order/orderList.vue
+++ b/seller/src/views/order/order/orderList.vue
@@ -4,22 +4,10 @@
       
         
       
-      
+      
+        
+          批量发货
+           
+         
+        
+          
+            核验订单
+           
+          
+         
+
+      
+      
       
-         
+         
       
     
    
 
 
 
 
From eb2b3a66a06da41c20d7d7f3234306a81fa08d30 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?lemon=E6=A9=AA?= <17633066053@163.com>
Date: Fri, 11 Jun 2021 09:52:47 +0800
Subject: [PATCH 13/26] =?UTF-8?q?=E5=90=88=E5=B9=B6Master?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 manager/src/config/index.js                 | 16 ++++++++--------
 manager/src/views/order/order/orderList.vue |  3 ---
 2 files changed, 8 insertions(+), 11 deletions(-)
diff --git a/manager/src/config/index.js b/manager/src/config/index.js
index 8b6b162f..680fb1b1 100644
--- a/manager/src/config/index.js
+++ b/manager/src/config/index.js
@@ -17,14 +17,14 @@ export default {
    * @description api请求基础路径
    */
   api_dev: {
-    // common: "https://common-api.pickmall.cn",
-    // buyer: "https://buyer-api.pickmall.cn",
-    // seller: "https://store-api.pickmall.cn",
-    // manager: "https://admin-api.pickmall.cn"
-    common: 'http://192.168.0.109:8890',
-    buyer: 'http://192.168.0.109:8888',
-    seller: 'http://192.168.0.109:8889',
-    manager: 'http://192.168.0.109:8887'
+    common: "https://common-api.pickmall.cn",
+    buyer: "https://buyer-api.pickmall.cn",
+    seller: "https://store-api.pickmall.cn",
+    manager: "https://admin-api.pickmall.cn"
+    // common: 'http://192.168.0.109:8890',
+    // buyer: 'http://192.168.0.109:8888',
+    // seller: 'http://192.168.0.109:8889',
+    // manager: 'http://192.168.0.109:8887'
   },
   api_prod: {
     common: "https://common-api.pickmall.cn",
diff --git a/manager/src/views/order/order/orderList.vue b/manager/src/views/order/order/orderList.vue
index 144cbb69..e3112e29 100644
--- a/manager/src/views/order/order/orderList.vue
+++ b/manager/src/views/order/order/orderList.vue
@@ -56,10 +56,7 @@ export default {
   },
   data() {
     return {
-
       // 表格的表头以及内容
-
-
       fields:{
         "订单编号":"sn",
         "下单时间":"createTime",
From 0837f5d9d9f986af28c00f80730689299c0acf37 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?lemon=E6=A9=AA?= <17633066053@163.com>
Date: Fri, 11 Jun 2021 19:01:05 +0800
Subject: [PATCH 14/26] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=B8=80=E4=BA=9B?=
 =?UTF-8?q?=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 buyer/src/plugins/request.js                  |   2 +-
 manager/src/views/order/order/orderList.vue   | 206 +++++++++++-------
 manager/src/views/promotion/coupon/coupon.vue |   2 -
 .../goods/goods-seller/goodsOperation.vue     |   1 +
 .../views/order/order/exportOrderDeliver.vue  |  16 +-
 seller/src/views/order/order/orderList.vue    |  16 +-
 6 files changed, 149 insertions(+), 94 deletions(-)
diff --git a/buyer/src/plugins/request.js b/buyer/src/plugins/request.js
index d650d2a7..b937df34 100644
--- a/buyer/src/plugins/request.js
+++ b/buyer/src/plugins/request.js
@@ -71,7 +71,7 @@ service.interceptors.request.use(
       let jwtData = JSON.parse(
         decodeURIComponent(escape(window.atob(accessToken.split(".")[1])))
       );
-      if (jwtData.exp < new Date().getTime() / 1000) {
+      if (jwtData.exp < Math.round(new Date() / 1000)) {
         refresh()
       }
     }
diff --git a/manager/src/views/order/order/orderList.vue b/manager/src/views/order/order/orderList.vue
index e3112e29..19bb9905 100644
--- a/manager/src/views/order/order/orderList.vue
+++ b/manager/src/views/order/order/orderList.vue
@@ -1,47 +1,58 @@
 
   
 
-      
-        
-          
-        
+      
 
-          
-
-        
-           
-        
-       
+      
+         
+      
+    
 
   
 
  
@@ -57,49 +68,53 @@ export default {
   data() {
     return {
       // 表格的表头以及内容
-      fields:{
-        "订单编号":"sn",
-        "下单时间":"createTime",
-        "客户名称":"memberName",
-        "客户账号":"",
-        "收货人":"",
-        "收货人手机号":"",
-        "收货人地址":"",
-        "支付方式":{
+      fields: {
+        订单编号: "sn",
+        下单时间: "createTime",
+        客户名称: "memberName",
+        客户账号: "",
+        收货人: "",
+        收货人手机号: "",
+        收货人地址: "",
+        支付方式: {
           field: "clientType",
-          callback:value=>{
+          callback: (value) => {
             if (value == "H5") {
-              return "移动端"
+              return "移动端";
             } else if (value == "PC") {
-              return "PC端"
-            } else if (value== "WECHAT_MP") {
-              return "小程序端"
+              return "PC端";
+            } else if (value == "WECHAT_MP") {
+              return "小程序端";
             } else if (value == "APP") {
-              return "移动应用端"
+              return "移动应用端";
             } else {
               return value;
             }
-          }
+          },
         },
-        "配送方式":"",
-        "配送费用":"",
-        "订单商品金额":"",
-        "订单优惠金额":"",
-        "订单应付金额":"",
-        "商品SKU编号":"",
-        "商品数量":"groupNum",
-        "买家备注":"",
-        "订单状态":"",
-        "付款状态":{
-          field:"payStatus",
-          callback:value=>{
-            return  value == "UNPAID" ? "未付款" : value == "PAID" ? "已付款" : ""
-          }
+        配送方式: "",
+        配送费用: "",
+        订单商品金额: "",
+        订单优惠金额: "",
+        订单应付金额: "",
+        商品SKU编号: "",
+        商品数量: "groupNum",
+        买家备注: "",
+        订单状态: "",
+        付款状态: {
+          field: "payStatus",
+          callback: (value) => {
+            return value == "UNPAID"
+              ? "未付款"
+              : value == "PAID"
+              ? "已付款"
+              : "";
+          },
         },
-        "发货状态":"",
-        "发票类型":"",
-        "发票抬头":"",
-        "店铺":"storeName",
+        发货状态: "",
+        发票类型: "",
+        发票抬头: "",
+        店铺: "storeName",
       },
       loading: true, // 表单加载状态
       searchForm: {
@@ -123,18 +138,14 @@ export default {
         {
           title: "订单号",
           key: "sn",
-          minWidth: 230,
+          minWidth: 240,
           tooltip: true,
         },
-        {
-          title: "下单时间",
-          key: "createTime",
-          width: 200,
-        },
+
         {
           title: "订单来源",
           key: "clientType",
-          width: 95,
+          width: 120,
           render: (h, params) => {
             if (params.row.clientType == "H5") {
               return h("div", {}, "移动端");
@@ -149,15 +160,34 @@ export default {
             }
           },
         },
+        {
+          title: "订单类型",
+          key: "orderType",
+          width: 120,
+          render: (h, params) => {
+            if (params.row.orderType == "NORMAL") {
+              return h("div", [h("span", {}, "普通订单")]);
+            } else if (params.row.orderType == "PINTUAN") {
+              return h("div", [h("span", {}, "拼团订单")]);
+            } else if (params.row.orderType == "GIFT") {
+              return h("div", [h("span", {}, "赠品订单")]);
+            } else if (params.row.orderType == "VIRTUAL") {
+              return h("div", [h("tag", {}, "核验订单")]);
+            }
+          },
+        },
         {
           title: "买家名称",
           key: "memberName",
-          width: 130,
+          minWidth: 130,
+          tooltip: true,
         },
+
         {
           title: "订单金额",
           key: "flowPrice",
-          minWidth: 120,
+          minWidth: 100,
+          tooltip: true,
           render: (h, params) => {
             return h(
               "div",
@@ -169,7 +199,7 @@ export default {
         {
           title: "订单状态",
           key: "orderStatus",
-          width: 95,
+          minWidth: 100,
           render: (h, params) => {
             if (params.row.orderStatus == "UNPAID") {
               return h("div", [h("span", {}, "未付款")]);
@@ -188,12 +218,19 @@ export default {
             }
           },
         },
+        {
+          title: "下单时间",
+          key: "createTime",
+          width: 170,
+          sortable: true,
+          sortType: "desc",
+        },
 
         {
           title: "操作",
           key: "action",
           align: "center",
-          width: 180,
+          width: 100,
           render: (h, params) => {
             return h("div", [
               h(
@@ -337,4 +374,11 @@ export default {
 
diff --git a/manager/src/views/promotion/coupon/coupon.vue b/manager/src/views/promotion/coupon/coupon.vue
index c49959e7..9e439e8b 100644
--- a/manager/src/views/promotion/coupon/coupon.vue
+++ b/manager/src/views/promotion/coupon/coupon.vue
@@ -232,9 +232,7 @@ export default {
   methods: {
     // 选中优惠券 父级传值
     check(val,index) {
-
       this.data[index].___selected = !this.data[index].___selected
-
       this.$emit("selected", val);
     },
     init() {
diff --git a/seller/src/views/goods/goods-seller/goodsOperation.vue b/seller/src/views/goods/goods-seller/goodsOperation.vue
index dfcac8cc..fc7417d4 100644
--- a/seller/src/views/goods/goods-seller/goodsOperation.vue
+++ b/seller/src/views/goods/goods-seller/goodsOperation.vue
@@ -381,6 +381,7 @@
             
              
         
+        
       
     
     
diff --git a/seller/src/views/order/order/exportOrderDeliver.vue b/seller/src/views/order/order/exportOrderDeliver.vue
index cac35602..2340a62b 100644
--- a/seller/src/views/order/order/exportOrderDeliver.vue
+++ b/seller/src/views/order/order/exportOrderDeliver.vue
@@ -17,8 +17,8 @@
       
       
       
-        
+        
           
              
             选择或拖拽文件上传 
@@ -42,12 +42,15 @@
 
+
diff --git a/manager/src/views/lili-dialog/index.vue b/manager/src/views/lili-dialog/index.vue
index 49b3b1c1..bc5a47d8 100644
--- a/manager/src/views/lili-dialog/index.vue
+++ b/manager/src/views/lili-dialog/index.vue
@@ -1,7 +1,7 @@
 
   
     
-       {goodsData = val;}" 
+       {goodsData = val;}"
         v-if="goodsFlag" ref="goodsDialog" :selectedWay='goodsData'/>
        {
@@ -14,10 +14,12 @@
 
+
+
diff --git a/manager/src/views/promotion/coupon/coupon.vue b/manager/src/views/promotion/coupon/coupon.vue
index c10a40a7..8be37e1a 100644
--- a/manager/src/views/promotion/coupon/coupon.vue
+++ b/manager/src/views/promotion/coupon/coupon.vue
@@ -4,7 +4,7 @@
       
         
           
-             
+             
            
           
             
@@ -15,30 +15,32 @@
              
            
           
-             
+             
            
           搜索 
          
       
       
         添加优惠券 
-        {$router.push({path:'/promotion/add-coupon-specify'})}">精准发劵 
         批量下架 
         
       
-      
+      
         
-          编辑
+          编辑
            
-          下架
-           
-          {{row.___selected ?'已':''}}选中
+          下架
            
            
       
       
-         
+         
       
     
   
@@ -53,6 +55,7 @@ import {
 export default {
   name: "coupon",
   components: {},
+
   data() {
     return {
       loading: true, // 表单加载状态
@@ -65,6 +68,7 @@ export default {
         pageSize: 10, // 页面大小
         sort: "startTime", // 默认排序字段
         order: "desc", // 默认排序方式
+        getType: '', // 默认排序方式
       },
       form: {
         // 添加或编辑表单对象初始化数据
@@ -73,7 +77,7 @@ export default {
       // 表单验证规则
       formValidate: {
         promotionName: [
-          { required: true, message: "不能为空", trigger: "blur" },
+          {required: true, message: "不能为空", trigger: "blur"},
         ],
       },
       submitLoading: false, // 添加或编辑提交状态
@@ -162,11 +166,16 @@ export default {
           title: "活动时间",
           width: 120,
           render: (h, params) => {
-            return h("div", {
-              domProps: {
-                innerHTML: params.row.startTime + " " + params.row.endTime,
-              },
-            });
+
+            if (params.row.getType === "ACTIVITY") {
+              return h("div", "长期有效");
+            } else {
+              return h("div", {
+                domProps: {
+                  innerHTML: params.row.startTime + " " + params.row.endTime,
+                },
+              });
+            }
           },
         },
         {
@@ -221,6 +230,16 @@ export default {
       type: Boolean,
       default: false,
     },
+    //优惠券类型 查询参数
+    getType: {
+      type: String,
+      default: ''
+    },
+    //已选择优惠券
+    selectList: {
+      type: Array,
+      default: []
+    }
   },
   watch: {
     $route(to, from) {
@@ -231,24 +250,21 @@ export default {
   },
   methods: {
     // 选中优惠券 父级传值
-    check(val,index) {
-
-      this.data[index].___selected = !this.data[index].___selected
-
-      this.$emit("selected", val);
+    check() {
+      this.$emit("selected", this.selectList);
     },
     init() {
       this.getDataList();
     },
     add() {
-      this.$router.push({ name: "add-platform-coupon" });
+      this.$router.push({name: "add-platform-coupon"});
     },
     /** 跳转至领取详情页面 */
     receiveInfo(v) {
-      this.$router.push({ name: "member-receive-coupon", query: { id: v.id } });
+      this.$router.push({name: "member-receive-coupon", query: {id: v.id}});
     },
     info(v) {
-      this.$router.push({ name: "platform-coupon-info", query: { id: v.id } });
+      this.$router.push({name: "platform-coupon-info", query: {id: v.id}});
     },
     changePage(v) {
       this.searchForm.pageNumber = v - 1;
@@ -278,6 +294,7 @@ export default {
     changeSelect(e) {
       this.selectList = e;
       this.selectCount = e.length;
+      this.checked ? this.check() : '';
     },
     getDataList() {
       this.loading = true;
@@ -292,7 +309,7 @@ export default {
       getPlatformCouponList(this.searchForm).then((res) => {
         this.loading = false;
         if (res.success) {
-          res.result.records.forEach(item=>{
+          res.result.records.forEach(item => {
             item.___selected = false
           })
           this.data = res.result.records;
@@ -336,7 +353,7 @@ export default {
       });
     },
     edit(v) {
-      this.$router.push({ name: "edit-platform-coupon", query: { id: v.id } });
+      this.$router.push({name: "edit-platform-coupon", query: {id: v.id}});
     },
     remove(v) {
       this.$Modal.confirm({
@@ -425,6 +442,10 @@ export default {
     },
   },
   mounted() {
+    //如果作为组件方式,传入了类型值,则搜索参数附加类型
+    if (this.getType) {
+      this.searchForm.getType = this.getType;
+    }
     this.init();
   },
 };
diff --git a/manager/src/views/promotion/coupon/couponPublish.vue b/manager/src/views/promotion/coupon/couponPublish.vue
index 9eb93caf..7b06efec 100644
--- a/manager/src/views/promotion/coupon/couponPublish.vue
+++ b/manager/src/views/promotion/coupon/couponPublish.vue
@@ -6,10 +6,10 @@
           基本信息 
           
             
-               
+               
              
             
-               
+               
              
             
               
@@ -18,11 +18,11 @@
                
              
             
-               
+               
               请输入0-10之间数字,可以输入一位小数 
              
             
-               
+               
              
             
               
@@ -33,21 +33,25 @@
 
             
                
-              % 
+                % 
               
               店铺承担比例,输入0-100之间数值 
              
-            
-               
+            
+               
+             
+            
+               
+             
+            
+               
              
              
           使用限制 
           
               
                 
-                   
+                   
                  
               
             
 
             
 
-               
+               
 
              
-
-            
-               
-             
             
               返回 
               提交 
@@ -118,8 +120,8 @@ import {
   getPlatformCoupon,
   editPlatformCoupon,
 } from "@/api/promotion";
-import { getCategoryTree } from "@/api/goods";
-import { regular } from "@/utils";
+import {getCategoryTree} from "@/api/goods";
+import {regular} from "@/utils";
 import skuSelect from "@/views/lili-dialog";
 
 export default {
@@ -167,7 +169,7 @@ export default {
         /** 店铺承担比例 */
         storeCommission: 0,
         /** 发行数量 */
-        publishNum: 1,
+        publishNum: 0,
         /** 运费承担者 */
         scopeType: "ALL",
         /** 限领数量 */
@@ -193,38 +195,37 @@ export default {
         value: "id",
       }, // 级联选择器配置项
       formRule: {
-        promotionName: [{ required: true, message: "活动名称不能为空" }],
-        couponName: [{ required: true, message: "优惠券名称不能为空" }],
-        couponLimitNum: [{ required: true, message: "领取限制不能为空" }],
+        promotionName: [{required: true, message: "活动名称不能为空"}],
+        couponName: [{required: true, message: "优惠券名称不能为空"}],
         price: [
-          { required: true, message: "请输入面额" },
-          { validator: checkPrice },
+          {required: true, message: "请输入面额"},
+          {validator: checkPrice},
         ],
-        rangeTime: [{ required: true, message: "请选择优惠券有效期" }],
+        rangeTime: [{required: true, message: "请选择优惠券有效期"}],
         consumeThreshold: [
-          { required: true, message: "请输入消费门槛" },
-          { validator: checkWeight },
+          {required: true, message: "请输入消费门槛"},
+          {validator: checkWeight},
         ],
         couponDiscount: [
-          { required: true, message: "请输入折扣" },
+          {required: true, message: "请输入折扣"},
           {
             pattern: regular.discount,
             message: "请输入0-10的数字,可有一位小数",
           },
         ],
         storeCommission: [
-          { required: true, message: "请输入店铺承担比例" },
-          { pattern: regular.rate, message: "请输入0-100的正整数" },
+          {required: true, message: "请输入店铺承担比例"},
+          {pattern: regular.rate, message: "请输入0-100的正整数"},
         ],
         publishNum: [
-          { required: true, message: "请输入发放数量" },
-          { pattern: regular.integer, message: "请输入正整数" },
+          {required: true, message: "请输入发放数量"},
+          {pattern: regular.integer, message: "请输入正整数"},
         ],
         couponLimitNum: [
-          { required: true, message: "请输入领取限制" },
-          { pattern: regular.integer, message: "请输入正整数" },
+          {required: true, message: "领取限制不能为空"},
+          {pattern: regular.integer, message: "请输入正整数"},
         ],
-        description: [{ required: true, message: "请输入范围描述" }],
+        description: [{required: true, message: "请输入范围描述"}],
       },
       columns: [
         {
@@ -301,6 +302,7 @@ export default {
         if (!data.promotionGoodsList) data.promotionGoodsList = [];
         if (data.scopeType == "PORTION_GOODS_CATEGORY") {
           let prevCascader = data.scopeId.split(",");
+
           // console.log(prevCascader);
           function next(params, prev) {
             for (let i = 0; i < params.length; i++) {
@@ -325,6 +327,7 @@ export default {
               }
             }
           }
+
           next(this.goodsCategoryList, []);
           data.scopeIdGoods = prevCascader;
         }
@@ -338,7 +341,7 @@ export default {
       this.$refs.form.validate((valid) => {
         if (valid) {
           const params = JSON.parse(JSON.stringify(this.form));
-           // 判断当前活动类型
+          // 判断当前活动类型
           params.getType != "ACTIVITY" ? delete params.effectiveDays : "";
 
           //判断当前时间类型
@@ -363,7 +366,7 @@ export default {
             (!params.promotionGoodsList ||
               params.promotionGoodsList.length == 0)
           ) {
-            this.$Modal.warning({ title: "提示", content: "请选择指定商品" });
+            this.$Modal.warning({title: "提示", content: "请选择指定商品"});
             return;
           }
 
@@ -371,7 +374,7 @@ export default {
             params.scopeType == "PORTION_GOODS_CATEGORY" &&
             (!params.scopeIdGoods || params.scopeIdGoods.length == 0)
           ) {
-            this.$Modal.warning({ title: "提示", content: "请选择商品分类" });
+            this.$Modal.warning({title: "提示", content: "请选择商品分类"});
             return;
           }
 
@@ -516,7 +519,7 @@ export default {
             }
           });
         }
-        return { value: item.id, label: item.name, children: item.children };
+        return {value: item.id, label: item.name, children: item.children};
       });
     },
     filterCategory(list) {
@@ -558,14 +561,17 @@ h4 {
   line-height: 40px;
   text-align: left;
 }
+
 .describe {
   font-size: 12px;
   margin-left: 10px;
   color: #999;
 }
+
 .effectiveDays {
   font-size: 12px;
   color: #999;
+
   > * {
     margin: 0 4px;
   }
diff --git a/manager/src/views/promotion/couponActivity/coupon.vue b/manager/src/views/promotion/couponActivity/coupon.vue
new file mode 100644
index 00000000..0be79c4a
--- /dev/null
+++ b/manager/src/views/promotion/couponActivity/coupon.vue
@@ -0,0 +1,360 @@
+
+  
+ 
+
+
+
diff --git a/manager/src/views/promotion/couponActivity/couponInfo.vue b/manager/src/views/promotion/couponActivity/couponInfo.vue
new file mode 100644
index 00000000..87061b89
--- /dev/null
+++ b/manager/src/views/promotion/couponActivity/couponInfo.vue
@@ -0,0 +1,240 @@
+
+  
+    
+      
+        
+          
平台券活动详情 
+          
+            
+              {{ form.promotionName }} 
+             
+            
+              {{
+                getCouponType(form.couponType)
+              }} 
+             
+            
+               ¥{{ form.price | unitPrice }} 
+             
+            
+              {{ form.description }} 
+             
+            
+              {{ form.publishNum }} 
+             
+            
+              {{ form.limitNum }} 
+             
+            
+              {{ form.startTime }} 
+             
+            
+              {{
+                form.consumptionLimit
+              }} 
+             
+            
+              {{ form.startTime }} 至 {{ form.endTime }} 
+             
+            
+              {{
+                getScopeType(form.scopeType)
+              }} 
+             
+            
+              {{ form.couponName }} 
+             
+            
+              {{
+                getStatus(form.status)
+              }} 
+             
+            
+              {{
+                getType(form.getType)
+              }} 
+             
+            
+              {{ form.createTime }} 
+             
+            
+              {{ form.updateTime }} 
+             
+            
+              {{ form.updateBy }} 
+             
+            
+              {{ form.receivedNum }} 
+             
+            
+              {{ form.usedNum }} 
+             
+          
+          
适用品类范围 
+          
+        
 
+       
+    
+
+    
+  
 
+ 
+
+
+
+
+
diff --git a/manager/src/views/promotion/couponActivity/couponPublish.scss b/manager/src/views/promotion/couponActivity/couponPublish.scss
new file mode 100644
index 00000000..a4eb33ed
--- /dev/null
+++ b/manager/src/views/promotion/couponActivity/couponPublish.scss
@@ -0,0 +1,257 @@
+/*选择商品品类*/
+.content-goods-publish {
+  padding: 15px;
+  margin: 0 auto;
+  text-align: center;
+  border: 1px solid #ddd;
+  background: none repeat 0 0 #fff;
+  height: 100%;
+  margin-bottom: 20px;
+
+  /*商品品类*/
+  .goods-category {
+    text-align: left;
+    padding: 10px;
+    background: #fafafa;
+    border: 1px solid #e6e6e6;
+
+    ul {
+      padding: 8px 4px 8px 8px;
+      list-style: none;
+      width: 300px;
+      background: none repeat 0 0 #fff;
+      border: 1px solid #e6e6e6;
+      display: inline-block;
+      letter-spacing: normal;
+      margin-right: 15px;
+      vertical-align: top;
+      word-spacing: normal;
+
+      li {
+        line-height: 20px;
+        padding: 5px;
+        cursor: pointer;
+        color: #333;
+        font-size: 12px;
+        display: flex;
+        flex-wrap: nowrap;
+        flex-direction: row;
+        justify-content: space-between;
+        align-items: center;
+      }
+    }
+  }
+
+  /** 当前品类被选中的样式 */
+  .activeClass {
+    background-color: #d9edf7;
+    border: 1px solid #bce8f1;
+    color: #3a87ad;
+  }
+
+  /*!*当前选择的商品品类文字*!*/
+  .current-goods-category {
+    text-align: left;
+    padding: 10px;
+    width: 100%;
+    border: 1px solid #fbeed5;
+    color: #c09853;
+    background-color: #fcf8e3;
+    margin: 10px auto;
+    padding: 8px 35px 8px 14px;
+    text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+    font-size: 12px;
+    font-weight: bold;
+  }
+}
+
+/*编辑基本信息*/
+.el-form {
+  padding-bottom: 80px;
+
+  .el-form-item {
+    width: 100%;
+    color: gray;
+    text-align: left;
+  }
+}
+
+div.base-info-item {
+
+  h4 {
+    margin-bottom: 10px;
+    padding: 0 10px;
+    border: 1px solid #ddd;
+    background-color: #f8f8f8;
+    font-weight: bold;
+    color: #333;
+    font-size: 14px;
+    line-height: 40px;
+    text-align: left;
+  }
+
+  .form-item-view {
+    display: flex;
+    flex-direction: column;
+    align-items: flex-start;
+    justify-content: space-between;
+    padding-left: 80px;
+
+    .shop-category-text {
+      font-size: 12px;
+    }
+  }
+
+  .item-goods-properts-row {
+    display: flex;
+    flex-direction: row;
+    word-break: break-all;
+    white-space: normal;
+    width: 300px;
+    height: 100px;
+  }
+
+  .item-goods-properts {
+    display: flex;
+    flex-direction: row;
+    margin-bottom: 10px;
+  }
+
+  .form-item {
+    display: flex;
+    align-items: center;
+  }
+
+
+  /** 审核信息-拒绝原因 */
+  .auth-info {
+    color: red;
+  }
+
+  .el-form-item {
+    width: 30%;
+    min-width: 300px;
+  }
+
+  .goods-name-width {
+    width: 50%;
+    min-width: 300px;
+  }
+
+  .el-form-item__content {
+    margin-left: 120px;
+    text-align: left;
+  }
+
+  p.goods-group-manager {
+    padding-left: 7.5%;
+    text-align: left;
+    color: #999;
+    font-size: 13px;
+  }
+
+  /*teatarea*/
+  /deep/ .el-textarea {
+    width: 150%;
+  }
+
+  .seo-text {
+    width: 150%;
+  }
+}
+
+/*折叠面板*/
+.el-collapse-item {
+  /deep/ .el-collapse-item__header {
+    text-align: left;
+    background-color: #f8f8f8;
+    padding: 0 10px;
+    font-weight: bold;
+    color: #333;
+    font-size: 14px;
+  }
+
+  .el-form-item {
+    margin-left: 5%;
+    width: 25%;
+  }
+
+  /deep/ .el-form-item__content {
+    margin-left: 120px;
+    text-align: left;
+  }
+
+  p.goods-group-manager {
+    padding-left: 12%;
+    text-align: left;
+    color: #999;
+  }
+
+  /deep/ .el-collapse-item__content {
+    padding: 10px 0;
+    text-align: left;
+  }
+}
+
+/*商品描述*/
+.goods-intro {
+  line-height: 40;
+}
+
+/** 底部步骤 */
+.footer {
+  width: 88.7%;
+  padding: 10px;
+  background-color: #ffc;
+  position: fixed;
+  bottom: 0px;
+  left: 10%;
+  text-align: center;
+  z-index: 9999;
+}
+
+/*图片上传组件第一张图设置封面*/
+.goods-images {
+  /deep/ li.el-upload-list__item:first-child {
+    position: relative;
+  }
+
+  /deep/ li.el-upload-list__item:first-child:after {
+    content: "封";
+    color: #fff;
+    font-weight: bold;
+    font-size: 12px;
+    position: absolute;
+    left: -15px;
+    top: -6px;
+    width: 40px;
+    height: 24px;
+    padding-top: 6px;
+    background: #13ce66;
+    text-align: center;
+    -webkit-transform: rotate(-45deg);
+    transform: rotate(-45deg);
+    -webkit-box-shadow: 0 0 1pc 1px rgba(0, 0, 0, 0.2);
+    box-shadow: 0 0 1pc 1px rgba(0, 0, 0, 0.2);
+  }
+}
+
+.el-form-item__label {
+  word-break: break-all;
+}
+
+.step-view {
+  width: 33%;
+  height: 40px;
+  font-size: 19px;
+  text-align: center;
+  display: flex;
+  background-color: #fff;
+  justify-content: center;
+  align-items: center;
+}
+
+.page {
+  margin-top: 2vh;
+  margin-bottom: 5vh;
+}
diff --git a/manager/src/views/promotion/couponActivity/couponPublish.vue b/manager/src/views/promotion/couponActivity/couponPublish.vue
new file mode 100644
index 00000000..1e42bf67
--- /dev/null
+++ b/manager/src/views/promotion/couponActivity/couponPublish.vue
@@ -0,0 +1,354 @@
+
+  
+    
+      
+        
+          
活动信息 
+          
+            
+               
+             
+
+            
+              
+               
+             
+
+            
+              
+                新人发券 
+                精确发券 
+               
+             
+            
+              
+                全部会员 
+                指定会员 
+               
+             
+            
+              选择会员 
+             
+            {{ selectedMember }}
+
+            
+               
+             
+          
+          
配置优惠券 
+          
+        
 
+       
+     
+    
+       
+     
+
+    
+       
+     
+  
 
+ 
+
+
+
+
+
diff --git a/manager/src/views/promotion/couponActivity/couponSpecify.vue b/manager/src/views/promotion/couponActivity/couponSpecify.vue
new file mode 100644
index 00000000..a4553e87
--- /dev/null
+++ b/manager/src/views/promotion/couponActivity/couponSpecify.vue
@@ -0,0 +1,172 @@
+
+  
+    
+      
+        
+          
优惠券将在指定发放时间发放到用户账号中 
+          
+
+          
+            返回 
+            提交 
+          
+
+        
 
+       
+      
+         
+       
+      
+         
+       
+     
+
+  
 
+ 
+
+
+
+
+
diff --git a/manager/src/views/promotion/couponActivity/memberReceiveCoupon.vue b/manager/src/views/promotion/couponActivity/memberReceiveCoupon.vue
new file mode 100644
index 00000000..4291c1e3
--- /dev/null
+++ b/manager/src/views/promotion/couponActivity/memberReceiveCoupon.vue
@@ -0,0 +1,250 @@
+
+  
+    
+      
+        
+          {{ row.startTime }} ~ {{ row.endTime }}
+         
+        
+          作废 
+         
+      
+      
+         
+      
+     
+  
 
+ 
+
+
+
diff --git a/manager/src/views/sys/menu-manage/menuManage.vue b/manager/src/views/sys/menu-manage/menuManage.vue
index b2e07467..57bfcd58 100644
--- a/manager/src/views/sys/menu-manage/menuManage.vue
+++ b/manager/src/views/sys/menu-manage/menuManage.vue
@@ -70,7 +70,7 @@
                   size="16"
                   style="margin-right: 5px"
                 >
-                
顶部菜单 
+                
顶级菜单 
                
               
                  
-            顶部菜单 
+            顶级菜单 
           
           
             
Date: Wed, 16 Jun 2021 18:21:11 +0800
Subject: [PATCH 17/26] =?UTF-8?q?=E6=8E=A8=E8=8D=90=E7=9B=B4=E6=92=AD?=
 =?UTF-8?q?=E9=97=B4=EF=BC=8C=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86=E4=BB=A3?=
 =?UTF-8?q?=E7=A0=81=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=8A=B5=E6=B4=BB=E5=8A=A8?=
 =?UTF-8?q?=E4=B8=80=E4=BA=9B=E9=83=A8=E5=88=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 manager/src/api/promotion.js                  |   2 +-
 manager/src/config/index.js                   |   8 +-
 .../lili-floor-renovation/renovation.vue      | 320 +++++++++---------
 .../shrinkable-menu/shrinkable-menu.vue       |   1 +
 manager/src/views/member/list/index.vue       |  63 +++-
 manager/src/views/promotion/coupon/coupon.vue |  84 ++---
 .../couponActivity/couponPublish.vue          | 151 ++++++---
 .../src/views/{ => promotion}/live/live.vue   |  24 +-
 .../views/{ => promotion}/live/liveDetail.vue |   0
 seller/src/config/index.js                    |   8 +-
 .../goods/goods-seller/goodsOperation.vue     |   2 +
 seller/src/views/promotion/live/addLive.vue   |   1 -
 seller/src/views/promotion/live/liveGoods.vue |   4 +-
 13 files changed, 394 insertions(+), 274 deletions(-)
 rename manager/src/views/{ => promotion}/live/live.vue (92%)
 rename manager/src/views/{ => promotion}/live/liveDetail.vue (100%)
diff --git a/manager/src/api/promotion.js b/manager/src/api/promotion.js
index fca59f8a..9c0ccdd0 100644
--- a/manager/src/api/promotion.js
+++ b/manager/src/api/promotion.js
@@ -14,7 +14,7 @@ export const getPromotionSeckill = params => {
 
 // 是否推荐直播间
 export const whetherStar = params => {
-  return getRequest(`/broadcast/studio/id/${params.id}&recommend=${params.recommend}`);
+  return putRequest(`/broadcast/studio/recommend/${params.id}`,params);
 };
 
 // 添加优惠券活动
diff --git a/manager/src/config/index.js b/manager/src/config/index.js
index 1a28698c..8b6b162f 100644
--- a/manager/src/config/index.js
+++ b/manager/src/config/index.js
@@ -21,10 +21,10 @@ export default {
     // buyer: "https://buyer-api.pickmall.cn",
     // seller: "https://store-api.pickmall.cn",
     // manager: "https://admin-api.pickmall.cn"
-    common: 'http://192.168.0.100:8890',
-    buyer: 'http://192.168.0.100:8888',
-    seller: 'http://192.168.0.100:8889',
-    manager: 'http://192.168.0.100:8887'
+    common: 'http://192.168.0.109:8890',
+    buyer: 'http://192.168.0.109:8888',
+    seller: 'http://192.168.0.109:8889',
+    manager: 'http://192.168.0.109:8887'
   },
   api_prod: {
     common: "https://common-api.pickmall.cn",
diff --git a/manager/src/views/lili-floor-renovation/renovation.vue b/manager/src/views/lili-floor-renovation/renovation.vue
index d5074863..dc969508 100644
--- a/manager/src/views/lili-floor-renovation/renovation.vue
+++ b/manager/src/views/lili-floor-renovation/renovation.vue
@@ -1,172 +1,180 @@
 
-    
-        
-        
-            
基础模块
-            
-                
-                     
-                    {{model.name}} 
-                 
-             
-        
-        
-        
-             
-        
-        
-        
保存模板  还原模板 
+  
+    
+    
+      
基础模块
+      
+        
+           
+          {{model.name}} 
+         
+       
     
+    
+    
+       
+    
+    
+    
保存模板  还原模板 
+  
 
 
 
\ No newline at end of file
+.show-content {
+  margin-left: 150px;
+  margin-top: 60px;
+}
+.ghost {
+  background: #fff;
+  height: 30px;
+  position: relative;
+  &::after {
+    content: "松开鼠标添加模块";
+    position: absolute;
+    background: #fff;
+    border: 1px dashed #409eff;
+    color: #409eff;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 50px;
+    text-align: center;
+    line-height: 50px;
+  }
+}
+.btn-bar {
+  position: fixed;
+  width: 100%;
+  background: #fff;
+  height: 50px;
+  padding: 10px;
+  box-shadow: 1px 1px 10px #999;
+  z-index: 99;
+  top: 100px;
+}
+
diff --git a/manager/src/views/main-components/shrinkable-menu/shrinkable-menu.vue b/manager/src/views/main-components/shrinkable-menu/shrinkable-menu.vue
index 68738da7..aabb380e 100644
--- a/manager/src/views/main-components/shrinkable-menu/shrinkable-menu.vue
+++ b/manager/src/views/main-components/shrinkable-menu/shrinkable-menu.vue
@@ -55,6 +55,7 @@ export default {
   },
   methods: {
     changeMenu(name) { //二级路由点击
+    console.log(name)
       this.$router.push({
         name: name
       });
diff --git a/manager/src/views/member/list/index.vue b/manager/src/views/member/list/index.vue
index fec0be21..fdffb632 100644
--- a/manager/src/views/member/list/index.vue
+++ b/manager/src/views/member/list/index.vue
@@ -312,6 +312,7 @@ export default {
       ],
       data: [], // 表单数据
       total: 0, // 表单数据总数
+      selectMember: [], //保存选中的用户
     };
   },
   props: {
@@ -320,18 +321,66 @@ export default {
       type: Boolean,
       default: false,
     },
+    // 已选择用户数据
+    selectedList: {
+      type: null,
+      default: "",
+    },
+  },
+  watch: {
+    selectedList: {
+      handler(val) {
+        this.$set(this, "selectMember", JSON.parse(JSON.stringify(val)));
+        this.init(this.data);
+        // 将父级数据与当前组件数据进行匹配
+
+      },
+      deep: true,
+      immediate: true,
+    },
   },
   methods: {
     // 回调给父级
     callback(val, index) {
-      val.___selected = !val.___selected;
+      this.$set(val, "___selected", !val.___selected);
+      console.log(val.___selected);
+      let findUser = this.selectMember.find((item) => {
+        return item.id == val.id;
+      });
+      // 如果没有则添加
+      if (!findUser) {
+        this.selectMember.push(val);
+      } else {
+        // 有重复数据就删除
+        this.selectMember.map((item, index) => {
+          if (item.id == findUser.id) {
+            this.selectMember.splice(index, 1);
+          }
+        });
+      }
+
       this.$emit("callback", val);
     },
-    init() {
-      this.getData();
+    // 初始化信息
+    init(data) {
+      data.forEach((item) => {
+        if (this.selectMember.length != 0) {
+          this.selectMember.forEach((member) => {
+            if (member.id == item.id) {
+              this.$set(item, "___selected", true);
+            }
+          });
+        } else {
+          this.$set(item, "___selected", false);
+        }
+      });
+      this.data = data;
     },
     changePage(v) {
       this.searchForm.pageNumber = v;
+      // 此处如果是父子级传值的时候需要做一下处理
+      //selectedMember
+
       this.getData();
     },
     changePageSize(v) {
@@ -387,15 +436,13 @@ export default {
         }
       });
     },
+
     //查询会员列表
     getData() {
       API_Member.getMemberListData(this.searchForm).then((res) => {
         if (res.result.records) {
           this.loading = false;
-          res.result.records.forEach((item) => {
-            item.___selected = false;
-          });
-          this.data = res.result.records;
+          this.init(res.result.records);
           this.total = res.result.total;
         }
       });
@@ -484,7 +531,7 @@ export default {
     },
   },
   mounted() {
-    this.init();
+    this.getData();
   },
 };
 
diff --git a/manager/src/views/promotion/coupon/coupon.vue b/manager/src/views/promotion/coupon/coupon.vue
index 262d3588..7db021f4 100644
--- a/manager/src/views/promotion/coupon/coupon.vue
+++ b/manager/src/views/promotion/coupon/coupon.vue
@@ -4,7 +4,7 @@
       
         
           
-             
+             
            
           
             
@@ -15,8 +15,7 @@
              
            
           
-             
+             
            
           搜索 
          
@@ -26,21 +25,17 @@
         批量下架 
         
       
-      
+      
       
-         
+         
       
     
   
@@ -68,7 +63,7 @@ export default {
         pageSize: 10, // 页面大小
         sort: "startTime", // 默认排序字段
         order: "desc", // 默认排序方式
-        getType: '', // 默认排序方式
+        getType: "", // 默认排序方式
       },
       form: {
         // 添加或编辑表单对象初始化数据
@@ -77,7 +72,7 @@ export default {
       // 表单验证规则
       formValidate: {
         promotionName: [
-          {required: true, message: "不能为空", trigger: "blur"},
+          { required: true, message: "不能为空", trigger: "blur" },
         ],
       },
       submitLoading: false, // 添加或编辑提交状态
@@ -94,15 +89,16 @@ export default {
         {
           title: "活动名称",
           key: "promotionName",
-          width: 120,
+          minWidth: 100,
           fixed: "left",
         },
         {
           title: "优惠券名称",
           key: "couponName",
-          width: 120,
-          tooltip: true
-        }, {
+          minWidth: 100,
+          tooltip: true,
+        },
+        {
           title: "面额/折扣",
           key: "price",
           width: 120,
@@ -124,9 +120,11 @@ export default {
           width: 150,
           render: (h, params) => {
             return h(
-              "div", params.row.receivedNum + "/" + params.row.publishNum)
+              "div",
+              params.row.receivedNum + "/" + params.row.publishNum
+            );
           },
-          minWidth:130,
+          minWidth: 130,
         },
         {
           title: "优惠券类型",
@@ -162,20 +160,19 @@ export default {
         },
         {
           title: "活动时间",
-          width: 120,
-          render: (h, params) => {
 
+          render: (h, params) => {
             if (params.row.getType === "ACTIVITY") {
               return h("div", "长期有效");
             } else {
               return h("div", {
                 domProps: {
-                  innerHTML: params.row.startTime + " " + params.row.endTime,
+                  innerHTML:
+                    params.row.startTime + " " + params.row.endTime,
                 },
               });
             }
           },
-          minWidth:150,
         },
         {
           title: "状态",
@@ -210,14 +207,14 @@ export default {
               ),
             ]);
           },
-          minWidth:70,
+          minWidth: 70,
         },
         {
           title: "操作",
           slot: "action",
           align: "center",
           fixed: "right",
-          minWidth: 140
+          maxWidth: 140,
         },
       ],
       data: [], // 表单数据
@@ -233,13 +230,13 @@ export default {
     //优惠券类型 查询参数
     getType: {
       type: String,
-      default: ''
+      default: "",
     },
     //已选择优惠券
-    selectList: {
+    selectedList: {
       type: Array,
-      default: []
-    }
+      default: [],
+    },
   },
   watch: {
     $route(to, from) {
@@ -255,16 +252,27 @@ export default {
     },
     init() {
       this.getDataList();
+
+      // 判断是否是父级回调给自己已选择优惠券
+      if (this.selectedList.length != 0) {
+        // console.log(this.selectedList);
+        this.selectedList.forEach((item) => {
+          item._checked = true;
+          item.___selected = true;
+        });
+        this.$set(this, "data", this.selectedList);
+        console.log(this.data);
+      }
     },
     add() {
-      this.$router.push({name: "add-platform-coupon"});
+      this.$router.push({ name: "add-platform-coupon" });
     },
     /** 跳转至领取详情页面 */
     receiveInfo(v) {
-      this.$router.push({name: "member-receive-coupon", query: {id: v.id}});
+      this.$router.push({ name: "member-receive-coupon", query: { id: v.id } });
     },
     info(v) {
-      this.$router.push({name: "platform-coupon-info", query: {id: v.id}});
+      this.$router.push({ name: "platform-coupon-info", query: { id: v.id } });
     },
     changePage(v) {
       this.searchForm.pageNumber = v - 1;
@@ -294,7 +302,7 @@ export default {
     changeSelect(e) {
       this.selectList = e;
       this.selectCount = e.length;
-      this.checked ? this.check() : '';
+      this.checked ? this.check() : "";
     },
     getDataList() {
       this.loading = true;
@@ -309,9 +317,9 @@ export default {
       getPlatformCouponList(this.searchForm).then((res) => {
         this.loading = false;
         if (res.success) {
-          res.result.records.forEach(item => {
-            item.___selected = false
-          })
+          res.result.records.forEach((item) => {
+            item.___selected = false;
+          });
           this.data = res.result.records;
           this.total = res.result.total;
         }
@@ -353,7 +361,7 @@ export default {
       });
     },
     edit(v) {
-      this.$router.push({name: "edit-platform-coupon", query: {id: v.id}});
+      this.$router.push({ name: "edit-platform-coupon", query: { id: v.id } });
     },
     remove(v) {
       this.$Modal.confirm({
diff --git a/manager/src/views/promotion/couponActivity/couponPublish.vue b/manager/src/views/promotion/couponActivity/couponPublish.vue
index 1e42bf67..61fbc7bc 100644
--- a/manager/src/views/promotion/couponActivity/couponPublish.vue
+++ b/manager/src/views/promotion/couponActivity/couponPublish.vue
@@ -6,12 +6,11 @@
           活动信息 
           
           配置优惠券 
@@ -47,8 +47,8 @@
 
               
             
@@ -61,12 +61,12 @@
         
       
     
-    
-       
+    {this.showCouponSelect = false}" @on-cancel="()=>{this.showCouponSelect = false}" v-model="showCouponSelect" width="80%">
+       
      
 
     
-       
+       
      
   
 
@@ -76,10 +76,7 @@ import couponTemplate from "@/views/promotion/coupon/coupon";
 
 import userList from "@/views/member/list/index";
 
-import {
-  saveActivityCoupon,
-  updateCouponActivity,
-} from "@/api/promotion";
+import { saveActivityCoupon, updateCouponActivity } from "@/api/promotion";
 
 export default {
   name: "addCouponActivity",
@@ -89,30 +86,72 @@ export default {
   },
   data() {
     return {
-      showCouponSelect: false,//显示优惠券选择框
+      showCouponSelect: false, //显示优惠券选择框
       modalType: 0, // 是否编辑
-      rangeTime: '',//时间区间
-      checkUserList: false,//会员选择器
-      selectedMember: [],//选择的会员
+      rangeTime: "", //时间区间
+      checkUserList: false, //会员选择器
+      selectedMember: [], //选择的会员
       form: {
-        promotionName: '', //活动名称
-        activityScope: 'ALL',  //活动范围
-        couponActivityType: 'REGISTERED', //触发活动方式
-        activityScopeInfo: '', //活动描述
-        startTime: '', //开始时间
-        endTime: '', //结束时间
-        couponActivityItems: []
-
+        promotionName: "", //活动名称
+        activityScope: "ALL", //活动范围
+        couponActivityType: "REGISTERED", //触发活动方式
+        activityScopeInfo: "", //活动描述
+        startTime: "", //开始时间
+        endTime: "", //结束时间
+        couponActivityItems: [],
       }, // 表单
       id: this.$route.query.id, // 优惠券活动id
       submitLoading: false, // 添加或编辑提交状态
-      selectCouponList: [],//选择的优惠券列表
+      selectCouponList: [], //选择的优惠券列表
       formRule: {
-        promotionName: [{required: true, message: "活动名称不能为空"}],
-        rangeTime: [{required: true, message: "请选择活动有效期"}],
-        description: [{required: true, message: "请输入范围描述"}],
+        promotionName: [{ required: true, message: "活动名称不能为空" }],
+        rangeTime: [{ required: true, message: "请选择活动有效期" }],
+        description: [{ required: true, message: "请输入范围描述" }],
       },
-      //优惠券表哥
+      // 用户表格
+      userColumns: [
+        {
+          title: "用户名称",
+          key: "nickName",
+          minWidth: 120,
+        },
+        {
+          title: "手机号",
+          key: "mobile",
+          render: (h, params) => {
+            return h("div", params.row.mobile || "暂未填写");
+          },
+        },
+        {
+          title: "最后登录时间",
+          key: "lastLoginDate",
+        },
+        {
+          title: "操作",
+          key: "action",
+          minWidth: 50,
+          align: "center",
+          render: (h, params) => {
+            return h(
+              "Button",
+              {
+                props: {
+                  size: "small",
+                  type: "error",
+                  ghost: true,
+                },
+                on: {
+                  click: () => {
+                    this.delUser(params.index);
+                  },
+                },
+              },
+              "删除"
+            );
+          },
+        },
+      ],
+      //优惠券表格
       columns: [
         {
           title: "优惠券名称",
@@ -175,7 +214,7 @@ export default {
                 },
                 on: {
                   click: () => {
-                    // this.delGoods(params.index);
+                    this.delCoupon(params.index);
                   },
                 },
               },
@@ -194,14 +233,32 @@ export default {
     }
   },
   methods: {
+    // 删除选择的优惠券
+    delUser(index) {
+      this.selectedMember.splice(index, 1);
+    },
+    // 删除选择的优惠券
+    delCoupon(index) {
+      this.selectCouponList.splice(index, 1);
+    },
 
     // 返回已选择的用户
     callbackSelectUser(val) {
-      let index = this.selectedMember.indexOf(val)
-      if (index > 0) {
-        this.selectedMember.remove(val);
+      // 每次将返回的数据回调判断
+      let findUser = this.selectedMember.find((item) => {
+        return item.id == val.id;
+      });
+      // 如果没有则添加
+      if (!findUser) {
+        this.selectedMember.push(val);
+      } else {
+        // 有重复数据就删除
+        this.selectedMember.map((item, index) => {
+          if (item.id == findUser.id) {
+            this.selectedMember.splice(index, 1);
+          }
+        });
       }
-      this.selectedMember.push(val);
     },
 
     // 添加指定用户
@@ -218,17 +275,16 @@ export default {
     /**
      * 返回优惠券*/
     selectedCoupon(val) {
-      this.selectCouponList = val
+      this.selectCouponList = val;
       //清空原有数据
       this.form.couponActivityItems = [];
       val.forEach((item, index) => {
-
         this.form.couponActivityItems.push({
           num: 0,
-          couponId: item.id
-        })
-      })
-      console.log(val)
+          couponId: item.id,
+        });
+      });
+      console.log(val);
     },
 
     getCoupon() {
@@ -276,7 +332,6 @@ export default {
     },
     /** 保存平台优惠券 */
     handleSubmit() {
-
       this.form.startTime = this.$options.filters.unixToDate(
         this.rangeTime[0] / 1000
       );
@@ -287,7 +342,7 @@ export default {
       this.$refs.form.validate((valid) => {
         if (valid) {
           const params = JSON.parse(JSON.stringify(this.form));
-          console.log(params)
+          console.log(params);
           this.submitLoading = true;
           if (this.modalType === 0) {
             // 添加 避免编辑后传入id等数据 记得删除
@@ -318,7 +373,7 @@ export default {
         this.$store.state.app.pageOpenedList
       );
       this.$router.go(-1);
-    }
+    },
   },
 };
 
diff --git a/manager/src/views/live/live.vue b/manager/src/views/promotion/live/live.vue
similarity index 92%
rename from manager/src/views/live/live.vue
rename to manager/src/views/promotion/live/live.vue
index 25614680..b7d7498c 100644
--- a/manager/src/views/live/live.vue
+++ b/manager/src/views/promotion/live/live.vue
@@ -93,7 +93,7 @@ export default {
                   },
                   on: {
                     "on-change": () => {
-                      this.star(params.row,params.index);
+                      this.star(params.row, params.index);
                     },
                   },
                 },
@@ -183,19 +183,19 @@ export default {
     /**
      * 是否推荐
      */
-    async star(val,index) {
-      let switched
-      if(this.liveData[index].recommend){
-        this.$set(this.liveData[index],'recommend',false)
-        switched = false
-      }
-      else{
-
-        this.$set(this.liveData[index],'recommend',true)
-        switched = true
+    async star(val, index) {
+      let switched;
+      if (this.liveData[index].recommend) {
+        this.$set(this.liveData[index], "recommend", false);
+        switched = false;
+      } else {
+        this.$set(this.liveData[index], "recommend", true);
+        switched = true;
       }
 
-       await whetherStar({id:val.id,recommend:switched});
+      await whetherStar({ id: val.id, recommend: switched });
+
+      this.getStoreLives();
     },
 
     /**
diff --git a/manager/src/views/live/liveDetail.vue b/manager/src/views/promotion/live/liveDetail.vue
similarity index 100%
rename from manager/src/views/live/liveDetail.vue
rename to manager/src/views/promotion/live/liveDetail.vue
diff --git a/seller/src/config/index.js b/seller/src/config/index.js
index 17f824e8..27da5927 100644
--- a/seller/src/config/index.js
+++ b/seller/src/config/index.js
@@ -22,10 +22,10 @@ export default {
     // buyer: 'https://buyer-api.pickmall.cn',
     // seller: 'https://store-api.pickmall.cn',
     // manager: 'https://admin-api.pickmall.cn',
-    common: 'http://192.168.0.100:8890',
-    buyer: 'http://192.168.0.100:8888',
-    seller: 'http://192.168.0.100:8889',
-    manager: 'http://192.168.0.100:8887'
+    common: 'http://192.168.0.109:8890',
+    buyer: 'http://192.168.0.109:8888',
+    seller: 'http://192.168.0.109:8889',
+    manager: 'http://192.168.0.109:8887'
   },
   api_prod: {
     common: 'https://common-api.pickmall.cn',
diff --git a/seller/src/views/goods/goods-seller/goodsOperation.vue b/seller/src/views/goods/goods-seller/goodsOperation.vue
index fc7417d4..5c434575 100644
--- a/seller/src/views/goods/goods-seller/goodsOperation.vue
+++ b/seller/src/views/goods/goods-seller/goodsOperation.vue
@@ -25,6 +25,8 @@
 
      
 
+
+
     
       
         
diff --git a/seller/src/views/promotion/live/addLive.vue b/seller/src/views/promotion/live/addLive.vue
index cfa0c37e..f2d9327f 100644
--- a/seller/src/views/promotion/live/addLive.vue
+++ b/seller/src/views/promotion/live/addLive.vue
@@ -153,7 +153,6 @@ import {
   addLiveGoods,
   editLive,
   getLiveInfo,
-  delLiveGoods,
   delRoomLiveGoods,
 } from "@/api/promotion";
 import liveGoods from "./liveGoods";
diff --git a/seller/src/views/promotion/live/liveGoods.vue b/seller/src/views/promotion/live/liveGoods.vue
index 31fcf0e4..eb2def25 100644
--- a/seller/src/views/promotion/live/liveGoods.vue
+++ b/seller/src/views/promotion/live/liveGoods.vue
@@ -276,10 +276,10 @@ export default {
     async saveLiveGoods() {
       this.saveGoodsLoading = true;
       let submit = this.liveGoodsData.map((element) => {
-        console.log(element.priceType);
+        console.log(element);
         return {
           goodsId: element.goodsId, //商品id
-          goodsImage: element.small, //商品图片
+          goodsImage: element.small, //商品图片  必须为 300 * 300
           name: element.goodsName, //商品昵称
           price: parseInt(element.price), //商品价格
           quantity: element.quantity, //库存
From 44da0ec700bdda4b744d22028c3dd2bd43164919 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?lemon=E6=A9=AA?= <17633066053@163.com>
Date: Thu, 17 Jun 2021 09:09:19 +0800
Subject: [PATCH 18/26] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=94=99=E8=AF=AF?=
 =?UTF-8?q?=E8=B7=AF=E5=BE=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 manager/src/router/router.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/manager/src/router/router.js b/manager/src/router/router.js
index bdc3d361..65cb5f1b 100644
--- a/manager/src/router/router.js
+++ b/manager/src/router/router.js
@@ -332,7 +332,7 @@ export const otherRouter = {
       path: "liveDetail",
       title: "查看直播",
       name: "liveDetail",
-      component: () => import("@/views/live/liveDetail.vue")
+      component: () => import("@/views/promotion/live/liveDetail.vue")
     }
   ]
 };
From 63e5808a6b0b2a4379afec1ed2c27eceefb4e23f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?lemon=E6=A9=AA?= <17633066053@163.com>
Date: Thu, 17 Jun 2021 10:42:10 +0800
Subject: [PATCH 19/26] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8A=B5=E6=B4=BB?=
 =?UTF-8?q?=E5=8A=A8=E7=9A=84=E4=BC=98=E6=83=A0=E5=88=B8=E5=9B=9E=E6=98=BE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 manager/src/config/index.js                   |  8 +-
 manager/src/views/promotion/coupon/coupon.vue | 75 ++++++++++++++-----
 .../couponActivity/couponPublish.vue          |  2 +-
 3 files changed, 61 insertions(+), 24 deletions(-)
diff --git a/manager/src/config/index.js b/manager/src/config/index.js
index 8b6b162f..1a28698c 100644
--- a/manager/src/config/index.js
+++ b/manager/src/config/index.js
@@ -21,10 +21,10 @@ export default {
     // buyer: "https://buyer-api.pickmall.cn",
     // seller: "https://store-api.pickmall.cn",
     // manager: "https://admin-api.pickmall.cn"
-    common: 'http://192.168.0.109:8890',
-    buyer: 'http://192.168.0.109:8888',
-    seller: 'http://192.168.0.109:8889',
-    manager: 'http://192.168.0.109:8887'
+    common: 'http://192.168.0.100:8890',
+    buyer: 'http://192.168.0.100:8888',
+    seller: 'http://192.168.0.100:8889',
+    manager: 'http://192.168.0.100:8887'
   },
   api_prod: {
     common: "https://common-api.pickmall.cn",
diff --git a/manager/src/views/promotion/coupon/coupon.vue b/manager/src/views/promotion/coupon/coupon.vue
index 7db021f4..7f2ae93d 100644
--- a/manager/src/views/promotion/coupon/coupon.vue
+++ b/manager/src/views/promotion/coupon/coupon.vue
@@ -25,7 +25,7 @@
         
批量下架 
         
       
-      
+      
       
-         
+         
       
     
   
@@ -59,7 +59,7 @@ export default {
       modalTitle: "", // 添加或编辑标题
       searchForm: {
         // 搜索框初始化对象
-        pageNumber: 0, // 当前页数
+        pageNumber: 1, // 当前页数
         pageSize: 10, // 页面大小
         sort: "startTime", // 默认排序字段
         order: "desc", // 默认排序方式
@@ -219,6 +219,7 @@ export default {
       ],
       data: [], // 表单数据
       total: 0, // 表单数据总数
+      selectCoupon: [], //本级选中的优惠券
     };
   },
   props: {
@@ -247,22 +248,22 @@ export default {
   },
   methods: {
     // 选中优惠券 父级传值
+    selectedList: {
+      handler(val) {
+        // 判断是否是父级回调给自己已选择优惠券
+        if (val.length != 0) {
+          this.selectCoupon = val;
+        }
+      },
+      deep: true,
+      immediate: true,
+    },
     check() {
-      this.$emit("selected", this.selectList);
+      // this.selectCoupon.push(this.selectList)
+      this.$emit("selected", this.selectCoupon);
     },
     init() {
       this.getDataList();
-
-      // 判断是否是父级回调给自己已选择优惠券
-      if (this.selectedList.length != 0) {
-        // console.log(this.selectedList);
-        this.selectedList.forEach((item) => {
-          item._checked = true;
-          item.___selected = true;
-        });
-        this.$set(this, "data", this.selectedList);
-        console.log(this.data);
-      }
     },
     add() {
       this.$router.push({ name: "add-platform-coupon" });
@@ -275,9 +276,9 @@ export default {
       this.$router.push({ name: "platform-coupon-info", query: { id: v.id } });
     },
     changePage(v) {
-      this.searchForm.pageNumber = v - 1;
+      this.searchForm.pageNumber = v;
       this.getDataList();
-      this.clearSelectAll();
+      // this.clearSelectAll();
     },
     changePageSize(v) {
       this.searchForm.pageSize = v;
@@ -299,10 +300,37 @@ export default {
     clearSelectAll() {
       this.$refs.table.selectAll(false);
     },
+
+    /**
+     * 取消已选择的数据
+     */
+    cancelSelect(selection, row) {
+      console.log(row)
+      let findCoupon = this.selectCoupon.find((item) => {
+        return item.id == row.id;
+      });
+      // 如果没有则添加
+      if (!findCoupon) {
+        this.selectCoupon.push(row);
+      } else {
+        // 有重复数据就删除
+        this.selectCoupon.map((item, index) => {
+          if (item.id == findCoupon.id) {
+            this.selectCoupon.splice(index, 1);
+          }
+        });
+      }
+    },
+    /**
+     * 选择优惠券
+     */
     changeSelect(e) {
+      if (this.checked && e.length != 0) {
+        this.selectCoupon.push(...e);
+        this.check();
+      }
       this.selectList = e;
       this.selectCount = e.length;
-      this.checked ? this.check() : "";
     },
     getDataList() {
       this.loading = true;
@@ -318,8 +346,17 @@ export default {
         this.loading = false;
         if (res.success) {
           res.result.records.forEach((item) => {
+            if (this.selectCoupon.length != 0) {
+              this.selectCoupon.forEach((child) => {
+                if (item.id == child.id) {
+                  item.___selected = true;
+                  item._checked = true;
+                }
+              });
+            }
             item.___selected = false;
           });
+
           this.data = res.result.records;
           this.total = res.result.total;
         }
diff --git a/manager/src/views/promotion/couponActivity/couponPublish.vue b/manager/src/views/promotion/couponActivity/couponPublish.vue
index 61fbc7bc..1f7077e5 100644
--- a/manager/src/views/promotion/couponActivity/couponPublish.vue
+++ b/manager/src/views/promotion/couponActivity/couponPublish.vue
@@ -62,7 +62,7 @@
       
     
     {this.showCouponSelect = false}" @on-cancel="()=>{this.showCouponSelect = false}" v-model="showCouponSelect" width="80%">
-       
+       
      
 
     
From 76d09c05595a71ec87957bccdc612ff2b42796a1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?lemon=E6=A9=AA?= <17633066053@163.com>
Date: Thu, 17 Jun 2021 14:45:14 +0800
Subject: [PATCH 20/26] =?UTF-8?q?=E5=8A=B5=E6=B4=BB=E5=8A=A8=E6=96=B0?=
 =?UTF-8?q?=E5=A2=9E=E6=B4=BB=E5=8A=A8=E8=8C=83=E5=9B=B4=E5=88=A4=E6=96=AD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 manager/src/config/index.js                               | 8 ++++----
 .../src/views/promotion/couponActivity/couponPublish.vue  | 7 ++++++-
 2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/manager/src/config/index.js b/manager/src/config/index.js
index 1a28698c..8b6b162f 100644
--- a/manager/src/config/index.js
+++ b/manager/src/config/index.js
@@ -21,10 +21,10 @@ export default {
     // buyer: "https://buyer-api.pickmall.cn",
     // seller: "https://store-api.pickmall.cn",
     // manager: "https://admin-api.pickmall.cn"
-    common: 'http://192.168.0.100:8890',
-    buyer: 'http://192.168.0.100:8888',
-    seller: 'http://192.168.0.100:8889',
-    manager: 'http://192.168.0.100:8887'
+    common: 'http://192.168.0.109:8890',
+    buyer: 'http://192.168.0.109:8888',
+    seller: 'http://192.168.0.109:8889',
+    manager: 'http://192.168.0.109:8887'
   },
   api_prod: {
     common: "https://common-api.pickmall.cn",
diff --git a/manager/src/views/promotion/couponActivity/couponPublish.vue b/manager/src/views/promotion/couponActivity/couponPublish.vue
index 1f7077e5..677ee392 100644
--- a/manager/src/views/promotion/couponActivity/couponPublish.vue
+++ b/manager/src/views/promotion/couponActivity/couponPublish.vue
@@ -10,7 +10,7 @@
             
 
             
-              
+              
                
               
 
@@ -86,6 +86,11 @@ export default {
   },
   data() {
     return {
+      options: {
+        disabledDate(date) {
+          return date && date.valueOf() < Date.now() - 86400000;
+        },
+      },
       showCouponSelect: false, //显示优惠券选择框
       modalType: 0, // 是否编辑
       rangeTime: "", //时间区间
From b3fda143220289c90ed553a6f68e4293164defa8 Mon Sep 17 00:00:00 2001
From: Chopper 
Date: Fri, 18 Jun 2021 16:38:10 +0800
Subject: [PATCH 21/26] =?UTF-8?q?=E5=88=B8=E6=B4=BB=E5=8A=A8=E5=AE=8C?=
 =?UTF-8?q?=E5=96=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 manager/src/api/promotion.js                  |   4 +-
 manager/src/router/router.js                  |   8 +-
 .../views/promotion/couponActivity/coupon.vue | 175 ++----------
 .../promotion/couponActivity/couponInfo.vue   | 261 +++++-------------
 .../couponActivity/couponPublish.scss         |   4 -
 .../couponActivity/couponPublish.vue          | 185 +++++--------
 .../couponActivity/couponSpecify.vue          | 172 ------------
 .../couponActivity/memberReceiveCoupon.vue    | 250 -----------------
 8 files changed, 180 insertions(+), 879 deletions(-)
 delete mode 100644 manager/src/views/promotion/couponActivity/couponSpecify.vue
 delete mode 100644 manager/src/views/promotion/couponActivity/memberReceiveCoupon.vue
diff --git a/manager/src/api/promotion.js b/manager/src/api/promotion.js
index 9c0ccdd0..42173562 100644
--- a/manager/src/api/promotion.js
+++ b/manager/src/api/promotion.js
@@ -119,8 +119,8 @@ export const getCouponActivityList = params => {
   return getRequest("/promotion/couponActivity", params);
 };
 //  作废优惠券
-export const deleteCouponActivity = ids => {
-  return deleteRequest(`/promotion/couponActivity/${ids}`);
+export const closeActivity = id => {
+  return deleteRequest(`/promotion/couponActivity/${id}`);
 };
 //  更新优惠券活动
 export const updateCouponActivity = params => {
diff --git a/manager/src/router/router.js b/manager/src/router/router.js
index 65cb5f1b..d60e240f 100644
--- a/manager/src/router/router.js
+++ b/manager/src/router/router.js
@@ -251,10 +251,16 @@ export const otherRouter = {
     },
     {
       path: "coupon-activity/edit",
-      title: "编辑平台优惠券",
+      title: "编辑平台优惠券活动",
       name: "edit-coupon-activity",
       component: () => import("@/views/promotion/couponActivity/couponPublish.vue")
     },
+    {
+      path: "promotion/coupon-activity-info",
+      title: "券活动详情",
+      name: "coupon-activity-info",
+      component: () => import("@/views/promotion/couponActivity/couponInfo.vue")
+    },
     {
       path: "promotion/member-receive-coupon",
       title: "领取详情",
diff --git a/manager/src/views/promotion/couponActivity/coupon.vue b/manager/src/views/promotion/couponActivity/coupon.vue
index 0be79c4a..aac1d820 100644
--- a/manager/src/views/promotion/couponActivity/coupon.vue
+++ b/manager/src/views/promotion/couponActivity/coupon.vue
@@ -4,8 +4,17 @@
       
         添加活动 
       
-      
+      
       
         
 import {
   getCouponActivityList,
-  updatePlatformCouponStatus,
+  closeActivity,
 } from "@/api/promotion";
 
 export default {
-  name: "coupon",
+  name: "couponActivity",
   components: {},
   data() {
     return {
@@ -148,63 +157,36 @@ export default {
       default: false,
     },
   },
-  watch: {
-    $route(to, from) {
-      if (to.fullPath == "/promotion/manager-coupon") {
-        this.init();
-      }
-    },
-  },
   methods: {
-    // 选中优惠券 父级传值
-    check(val, index) {
-
-      this.data[index].___selected = !this.data[index].___selected
-
-      this.$emit("selected", val);
-    },
+    //获取数据 初始化
     init() {
       this.getDataList();
     },
+    //增加券活动
     add() {
       this.$router.push({name: "add-coupon-activity"});
     },
-    /** 跳转至领取详情页面 */
-    receiveInfo(v) {
-      this.$router.push({name: "member-receive-coupon", query: {id: v.id}});
-    },
+    //查看详情
     info(v) {
-      this.$router.push({name: "platform-coupon-info", query: {id: v.id}});
+      this.$router.push({name: "coupon-activity-info", query: {id: v.id}});
     },
+    //跳转页面
     changePage(v) {
       this.searchForm.pageNumber = v - 1;
       this.getDataList();
-      this.clearSelectAll();
     },
+    //修改分页
     changePageSize(v) {
       this.searchForm.pageSize = v;
       this.getDataList();
     },
+    //搜索活动
     handleSearch() {
       this.searchForm.pageNumber = 0;
       this.searchForm.pageSize = 10;
       this.getDataList();
     },
-    changeSort(e) {
-      this.searchForm.sort = e.key;
-      this.searchForm.order = e.order;
-      if (e.order === "normal") {
-        this.searchForm.order = "";
-      }
-      this.getDataList();
-    },
-    clearSelectAll() {
-      this.$refs.table.selectAll(false);
-    },
-    changeSelect(e) {
-      this.selectList = e;
-      this.selectCount = e.length;
-    },
+    //数据获取
     getDataList() {
       this.loading = true;
       if (this.selectDate && this.selectDate[0] && this.selectDate[1]) {
@@ -218,133 +200,32 @@ export default {
       getCouponActivityList(this.searchForm).then((res) => {
         this.loading = false;
         if (res.success) {
-          res.result.records.forEach(item => {
-            item.___selected = false
-          })
           this.data = res.result.records;
           this.total = res.result.total;
         }
       });
-      this.total = this.data.length;
       this.loading = false;
     },
-    handleSubmit() {
-      this.$refs.form.validate((valid) => {
-        if (valid) {
-          this.submitLoading = true;
-          if (this.modalType === 0) {
-            // 添加 避免编辑后传入id等数据 记得删除
-            delete this.form.id;
-            this.postRequest("/coupon/insertOrUpdate", this.form).then(
-              (res) => {
-                this.submitLoading = false;
-                if (res.success) {
-                  this.$Message.success("操作成功");
-                  this.getDataList();
-                  this.modalVisible = false;
-                }
-              }
-            );
-          } else {
-            // 编辑
-            this.postRequest("/coupon/insertOrUpdate", this.form).then(
-              (res) => {
-                this.submitLoading = false;
-                if (res.success) {
-                  this.$Message.success("操作成功");
-                  this.getDataList();
-                  this.modalVisible = false;
-                }
-              }
-            );
-          }
-        }
-      });
-    },
+    //跳转编辑
     edit(v) {
       this.$router.push({name: "edit-platform-coupon", query: {id: v.id}});
     },
+    //下架活动
     remove(v) {
       this.$Modal.confirm({
         title: "确认下架",
         // 记得确认修改此处
-        content: "确认要下架此优惠券么?",
+        content: "确认要下架此优惠券活动么?下架活动只能重新创建",
         loading: true,
         onOk: () => {
           // 删除
-          updatePlatformCouponStatus({
-            couponIds: v.id,
-            promotionStatus: "CLOSE",
-          })
-            .then((res) => {
-              this.$Modal.remove();
-              if (res.success) {
-                this.$Message.success("优惠券已作废");
-                this.getDataList();
-              }
-            })
-            .catch(() => {
-              this.$Modal;
-            });
-        },
-      });
-    },
-    delAll() {
-      if (this.selectCount <= 0) {
-        this.$Message.warning("您还未选择要下架的优惠券");
-        return;
-      }
-      this.$Modal.confirm({
-        title: "确认下架",
-        content: "您确认要下架所选的 " + this.selectCount + " 条数据?",
-        loading: true,
-        onOk: () => {
-          let ids = [];
-          this.selectList.forEach(function (e) {
-            ids.push(e.id);
-          });
-          let params = {
-            couponIds: ids.toString(),
-            promotionStatus: "CLOSE",
-          };
-          // 批量删除
-          updatePlatformCouponStatus(params).then((res) => {
-            this.$Modal.remove();
+          closeActivity(v.id).then((res) => {
             if (res.success) {
-              this.$Message.success("下架成功");
-              this.clearSelectAll();
-              this.getDataList();
-            }
-          });
-        },
-      });
-    },
-    upAll() {
-      if (this.selectCount <= 0) {
-        this.$Message.warning("请选择要上架的优惠券");
-        return;
-      }
-      this.$Modal.confirm({
-        title: "确认上架",
-        content: "您确认要上架所选的 " + this.selectCount + " 条数据?",
-        loading: true,
-        onOk: () => {
-          let ids = [];
-          this.selectList.forEach(function (e) {
-            ids.push(e.id);
-          });
-          let params = {
-            couponIds: ids.toString(),
-            promotionStatus: "START",
-          };
-          // 批量上架
-          updatePlatformCouponStatus(params).then((res) => {
-            this.$Modal.remove();
-            if (res.success) {
-              this.$Message.success("上架成功");
-              this.clearSelectAll();
+              this.$Message.success("优惠券活动已作废");
               this.getDataList();
             }
+          }).catch(() => {
+            this.$Modal;
           });
         },
       });
diff --git a/manager/src/views/promotion/couponActivity/couponInfo.vue b/manager/src/views/promotion/couponActivity/couponInfo.vue
index 87061b89..2b800adf 100644
--- a/manager/src/views/promotion/couponActivity/couponInfo.vue
+++ b/manager/src/views/promotion/couponActivity/couponInfo.vue
@@ -3,81 +3,37 @@
     
       
         
-          
平台券活动详情 
+          
优惠券活动详情 
           
             
-              {{ form.promotionName }} 
+              {{ couponActivity.promotionName }} 
              
             
-              {{
-                getCouponType(form.couponType)
-              }} 
+              新人发券 
+              精确发券 
              
-            
-               ¥{{ form.price | unitPrice }} 
+            
+              全部会员 
+              指定会员 
              
-            
-              {{ form.description }} 
+            
+              {{ couponActivity.startTime }}~{{ couponActivity.endTime }} 
              
-            
-              {{ form.publishNum }} 
-             
-            
-              {{ form.limitNum }} 
-             
-            
-              {{ form.startTime }} 
-             
-            
-              {{
-                form.consumptionLimit
-              }} 
-             
-            
-              {{ form.startTime }} 至 {{ form.endTime }} 
-             
-            
-              {{
-                getScopeType(form.scopeType)
-              }} 
-             
-            
-              {{ form.couponName }} 
-             
-            
-              {{
-                getStatus(form.status)
-              }} 
-             
-            
-              {{
-                getType(form.getType)
-              }} 
-             
-            
-              {{ form.createTime }} 
-             
-            
-              {{ form.updateTime }} 
-             
-            
-              {{ form.updateBy }} 
-             
-            
-              {{ form.receivedNum }} 
-             
-            
-              {{ form.usedNum }} 
+            
+
+              新建 
+              已开始 
+              已结束 
+              已废弃 
              
              
-          
适用品类范围 
-          
+          
优惠券列表 
+          
+          
会员列表列表 
+          
          
        
      
@@ -89,145 +45,78 @@
 
 
 
-
-
-
diff --git a/manager/src/views/promotion/couponActivity/memberReceiveCoupon.vue b/manager/src/views/promotion/couponActivity/memberReceiveCoupon.vue
deleted file mode 100644
index 4291c1e3..00000000
--- a/manager/src/views/promotion/couponActivity/memberReceiveCoupon.vue
+++ /dev/null
@@ -1,250 +0,0 @@
-
-  
-    
-      
-        
-          {{ row.startTime }} ~ {{ row.endTime }}
-         
-        
-          作废 
-         
-      
-      
-         
-      
-     
-  
 
- 
-
-
-
From c4cc07868023e086eecf40198974cf1651274cfd Mon Sep 17 00:00:00 2001
From: Chopper 
Date: Fri, 18 Jun 2021 17:06:25 +0800
Subject: [PATCH 22/26] =?UTF-8?q?=E5=88=86=E7=B1=BB=E4=BF=A1=E6=81=AF?=
 =?UTF-8?q?=E7=BC=93=E5=AD=98=E6=9B=B4=E6=96=B0=E6=97=B6=E9=97=B4=E8=AE=BE?=
 =?UTF-8?q?=E5=AE=9A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 buyer/src/components/nav/cateNav.vue | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/buyer/src/components/nav/cateNav.vue b/buyer/src/components/nav/cateNav.vue
index e4fd092c..07a6b4eb 100644
--- a/buyer/src/components/nav/cateNav.vue
+++ b/buyer/src/components/nav/cateNav.vue
@@ -93,6 +93,11 @@ export default {
       getCategory(0).then(res => {
         if (res.success) {
           this.cateList = res.result;
+          // 过期时间
+          var expirationTime = new Date().setHours(new Date().getHours() + 1);
+          // 存放过期时间
+          localStorage.setItem('category_expiration_time', expirationTime);
+          // 存放分类信息
           localStorage.setItem('category', JSON.stringify(res.result))
         }
       });
@@ -117,7 +122,12 @@ export default {
     }
   },
   mounted () {
-    if (localStorage.getItem('category')) {
+    if (localStorage.getItem('category') && localStorage.getItem('category_expiration_time')) {
+      // 如果缓存过期,则获取最新的信息
+      if (new Date() > localStorage.getItem('category_expiration_time')) {
+        this.getCate();
+        return;
+      }
       this.cateList = JSON.parse(localStorage.getItem('category'))
     } else {
       this.getCate()
From be42bfcf4018c1f24d5ad6df47d047f1d9c3e107 Mon Sep 17 00:00:00 2001
From: pikachu <1321288662@qq.com>
Date: Sat, 19 Jun 2021 16:10:55 +0800
Subject: [PATCH 23/26] =?UTF-8?q?=E8=99=9A=E6=8B=9F=E8=AE=A2=E5=8D=95?=
 =?UTF-8?q?=E5=92=8C=E5=95=86=E5=93=81=E8=AE=A2=E5=8D=95=E5=8C=BA=E5=88=86?=
 =?UTF-8?q?=E5=BC=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 seller/src/libs/routerJson.js                 |  14 +
 seller/src/views/order/order/orderList.vue    |  46 +--
 .../views/order/order/virtualOrderList.vue    | 300 ++++++++++++++++++
 3 files changed, 316 insertions(+), 44 deletions(-)
 create mode 100644 seller/src/views/order/order/virtualOrderList.vue
diff --git a/seller/src/libs/routerJson.js b/seller/src/libs/routerJson.js
index 994f24e6..b020ba62 100644
--- a/seller/src/libs/routerJson.js
+++ b/seller/src/libs/routerJson.js
@@ -143,6 +143,20 @@ export const result = [
             url: "",
             children: null,
             permTypes: []
+          },
+          {
+            name: "virtualOrderList",
+            showAlways: true,
+            level: 2,
+            type: 0,
+            title: "虚拟订单",
+            path: "virtualOrderList",
+            component: "order/order/virtualOrderList",
+            icon: "md-person",
+            isMenu: true,
+            url: "",
+            children: null,
+            permTypes: []
           }
         ]
       },
diff --git a/seller/src/views/order/order/orderList.vue b/seller/src/views/order/order/orderList.vue
index bbda4d7d..ec8987a5 100644
--- a/seller/src/views/order/order/orderList.vue
+++ b/seller/src/views/order/order/orderList.vue
@@ -8,14 +8,6 @@
           
           
              
-           
-              
-            
-              普通订单 
-              拼团订单 
-              赠品订单 
-              核验订单 
-             
            
           
             
@@ -35,26 +27,7 @@
           重置 
         
           
-      
-        
-          批量发货
-           
-         
-        
-          
-            核验订单
-           
-          
-         
-
-      
 
-      
+      
       
          
@@ -83,6 +56,7 @@ export default {
         orderSn: "",
         buyerName: "",
         orderStatus: "",
+        orderType:"NORMAL"
       },
       selectDate: null,
       form: {
@@ -123,22 +97,6 @@ export default {
             }
           },
         },
-        {
-          title: "订单类型",
-          key: "orderType",
-          width: 120,
-          render: (h, params) => {
-            if (params.row.orderType == "NORMAL") {
-              return h("div", [h("span", {}, "普通订单")]);
-            } else if (params.row.orderType == "PINTUAN") {
-              return h("div", [h("span", {}, "拼团订单")]);
-            } else if (params.row.orderType == "GIFT") {
-              return h("div", [h("span", {}, "赠品订单")]);
-            } else if (params.row.orderType == "VIRTUAL") {
-              return h("div", [h("tag", {}, "核验订单")]);
-            }
-          },
-        },
         {
           title: "买家名称",
           key: "memberName",
diff --git a/seller/src/views/order/order/virtualOrderList.vue b/seller/src/views/order/order/virtualOrderList.vue
new file mode 100644
index 00000000..2eb671c3
--- /dev/null
+++ b/seller/src/views/order/order/virtualOrderList.vue
@@ -0,0 +1,300 @@
+
+  
+ 
+
+
+
From 861c7f905a3b333960598a92b3677421a601c02b Mon Sep 17 00:00:00 2001
From: pikachu <1321288662@qq.com>
Date: Sat, 19 Jun 2021 16:25:17 +0800
Subject: [PATCH 24/26] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=8C=BA=E5=88=86?=
 =?UTF-8?q?=E5=95=86=E5=93=81=E8=AE=A2=E5=8D=95=E5=92=8C=E8=99=9A=E6=8B=9F?=
 =?UTF-8?q?=E8=AE=A2=E5=8D=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 seller/src/views/order/order/orderDetail.vue     |  3 ++-
 seller/src/views/order/order/orderList.vue       |  8 ++++++--
 .../src/views/order/order/virtualOrderList.vue   | 16 +---------------
 3 files changed, 9 insertions(+), 18 deletions(-)
diff --git a/seller/src/views/order/order/orderDetail.vue b/seller/src/views/order/order/orderDetail.vue
index 740dfa33..e758ffd2 100644
--- a/seller/src/views/order/order/orderDetail.vue
+++ b/seller/src/views/order/order/orderDetail.vue
@@ -94,7 +94,7 @@
           {{ orderInfo.order.remark }}
         
 
-      
+      
         配送方式:
         
           {{
@@ -521,6 +521,7 @@ export default {
     },
     //弹出订单核销框
     orderTake() {
+      this.orderTakeForm.qrCode = this.orderInfo.order.verificationCode
       this.orderTakeModal = true;
     },
     //订单核销提交
diff --git a/seller/src/views/order/order/orderList.vue b/seller/src/views/order/order/orderList.vue
index ec8987a5..b6458775 100644
--- a/seller/src/views/order/order/orderList.vue
+++ b/seller/src/views/order/order/orderList.vue
@@ -16,7 +16,6 @@
               
待发货 
               已发货 
               已完成 
-              
待核验 
               已取消 
             
           
@@ -27,7 +26,12 @@
           
重置 
         
       
-      
+      
+        
+          批量发货
+         
+      
+      
       
          
diff --git a/seller/src/views/order/order/virtualOrderList.vue b/seller/src/views/order/order/virtualOrderList.vue
index 2eb671c3..a95e5875 100644
--- a/seller/src/views/order/order/virtualOrderList.vue
+++ b/seller/src/views/order/order/virtualOrderList.vue
@@ -13,8 +13,6 @@
             
               未付款 
               已付款 
-              待发货 
-              已发货 
               已完成 
               待核验 
               已取消 
@@ -28,16 +26,12 @@
         
        
       
-        
-          批量发货
-           
-         
         
           
             核验订单
            
           
-            
核验订单号 
+            
核验码 
             
                
               核验 
@@ -214,14 +208,6 @@ export default {
         });
       }
     },
-    /**
-     * 批量发货
-     */
-    expressOrderDeliver() {
-      this.$router.push({
-        path: "/export-order-deliver",
-      });
-    },
     init() {
       this.getDataList();
     },
From 85bfb48c0cb21204a100546f26e4397dada0b223 Mon Sep 17 00:00:00 2001
From: pikachu <1321288662@qq.com>
Date: Sun, 20 Jun 2021 10:32:35 +0800
Subject: [PATCH 25/26] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E9=83=A8=E5=AE=8C?=
 =?UTF-8?q?=E6=88=90=E4=B8=8D=E8=83=BD=E6=89=8B=E5=8A=A8=E7=82=B9=E5=87=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 .../src/views/order/order/exportOrderDeliver.vue   | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/seller/src/views/order/order/exportOrderDeliver.vue b/seller/src/views/order/order/exportOrderDeliver.vue
index e22e8777..b2c4b69d 100644
--- a/seller/src/views/order/order/exportOrderDeliver.vue
+++ b/seller/src/views/order/order/exportOrderDeliver.vue
@@ -44,7 +44,7 @@ import JsonExcel from "vue-json-excel";
 import { downLoadDeliverExcel, uploadDeliverExcel } from "@/api/order.js";
 import { baseUrl } from "@/libs/axios.js";
 export default {
-  components: {
+   components: {
     "download-excel": JsonExcel,
   },
   data() {
@@ -79,10 +79,14 @@ export default {
   methods: {
     // 点击选择步骤
     handleCheckStep(val) {
-      this.stepList.map((item) => {
-        item.checked = false;
-      });
-      val.checked = true;
+      if(val.title.search('3') == -1){
+        console.warn(val)
+        this.stepList.map((item) => {
+          item.checked = false;
+        });
+        val.checked = true;
+      }
+
     },
 
 
From c3be931218922dc257c660f42bada20a135babdf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?lemon=E6=A9=AA?= <17633066053@163.com>
Date: Mon, 21 Jun 2021 14:15:52 +0800
Subject: [PATCH 26/26] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=89=B9=E9=87=8F?=
 =?UTF-8?q?=E5=8F=91=E8=B4=A7=E6=B2=A1=E6=9C=89=E8=B7=B3=E8=BD=AC=E7=9A=84?=
 =?UTF-8?q?Bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 seller/src/libs/routerJson.js                 | 72 ++++++++++-------
 .../views/order/order/exportOrderDeliver.vue  | 53 ++++++++++---
 seller/src/views/order/order/orderList.vue    |  7 +-
 seller/src/views/promotion/live/addLive.vue   | 79 +++++++++++++++----
 4 files changed, 154 insertions(+), 57 deletions(-)
diff --git a/seller/src/libs/routerJson.js b/seller/src/libs/routerJson.js
index b020ba62..2016930c 100644
--- a/seller/src/libs/routerJson.js
+++ b/seller/src/libs/routerJson.js
@@ -395,6 +395,49 @@ export const result = [
           }
         ]
       },
+      {
+        name: "lives",
+        showAlways: true,
+        level: 1,
+        type: 0,
+        title: "直播活动",
+        path: "/promotion",
+        component: "Main",
+        icon: "md-person",
+        isMenu: true,
+        url: "",
+        permTypes: [],
+        children: [
+          {
+            name: "live",
+            showAlways: true,
+            level: 2,
+            type: 0,
+            title: "直播管理",
+            path: "live",
+            component: "promotion/live/live",
+            icon: "md-person",
+            isMenu: true,
+            url: "",
+            permTypes: [],
+            children: null
+          },
+          {
+            name: "liveGoods",
+            showAlways: true,
+            level: 2,
+            type: 0,
+            title: "直播商品",
+            path: "liveGoods",
+            component: "promotion/live/liveGoods",
+            icon: "md-person",
+            isMenu: true,
+            url: "",
+            permTypes: [],
+            children: null
+          }
+        ]
+      },
       {
         name: "storePromotion",
         showAlways: true,
@@ -436,34 +479,7 @@ export const result = [
             permTypes: [],
             children: null
           },
-          {
-            name: "live",
-            showAlways: true,
-            level: 2,
-            type: 0,
-            title: "直播管理",
-            path: "live",
-            component: "promotion/live/live",
-            icon: "md-person",
-            isMenu: true,
-            url: "",
-            permTypes: [],
-            children: null
-          },
-          {
-            name: "liveGoods",
-            showAlways: true,
-            level: 2,
-            type: 0,
-            title: "直播商品",
-            path: "liveGoods",
-            component: "promotion/live/liveGoods",
-            icon: "md-person",
-            isMenu: true,
-            url: "",
-            permTypes: [],
-            children: null
-          }
+
         ]
       },
       {
diff --git a/seller/src/views/order/order/exportOrderDeliver.vue b/seller/src/views/order/order/exportOrderDeliver.vue
index b2c4b69d..cc2ba500 100644
--- a/seller/src/views/order/order/exportOrderDeliver.vue
+++ b/seller/src/views/order/order/exportOrderDeliver.vue
@@ -17,8 +17,8 @@
       
       
       
-        
+        
           
              
             
选择或拖拽文件上传 
@@ -26,11 +26,13 @@
         
       
       
-      
+      
+
         
发货完成 
 
         
-          关闭页面 
+          关闭页面 
+          商品订单 
         
       
 
@@ -44,7 +46,7 @@ import JsonExcel from "vue-json-excel";
 import { downLoadDeliverExcel, uploadDeliverExcel } from "@/api/order.js";
 import { baseUrl } from "@/libs/axios.js";
 export default {
-   components: {
+  components: {
     "download-excel": JsonExcel,
   },
   data() {
@@ -79,32 +81,50 @@ export default {
   methods: {
     // 点击选择步骤
     handleCheckStep(val) {
-      if(val.title.search('3') == -1){
-        console.warn(val)
+      if (val.title.search("3") == -1) {
+        console.warn(val);
         this.stepList.map((item) => {
           item.checked = false;
         });
         val.checked = true;
       }
-
     },
 
-
     handleUpload(file) {
       this.file = file;
       this.upload();
       return false;
     },
 
+    navigationToGoodsOrder() {
+      this.$router.push({
+        path: "/order/orderList",
+      });
+    },
+
+    close() {
+      this.$store.commit("removeTag", "export-order-deliver");
+      localStorage.storeOpenedList = JSON.stringify(
+        this.$store.state.app.storeOpenedList
+      );
+      this.$router.go(-1);
+    },
+
     /**
      * 上传文件
      */
     async upload() {
       let fd = new FormData();
       fd.append("files", this.file);
-      await uploadDeliverExcel(fd);
-    },
+      let res = await uploadDeliverExcel(fd);
+      if (res.success) {
+        this.stepList.map((item) => {
+          item.checked = false;
+        });
 
+        this.stepList[2].checked = true;
+      }
+    },
 
     /**
      * 下载excel
@@ -176,4 +196,15 @@ img {
   width: 100px;
   height: 100px;
 }
+.success {
+  align-items: center;
+  flex-direction: column;
+  > h1 {
+    font-size: 28px;
+    margin: 10px;
+  }
+  /deep/ .btn {
+    margin: 10px;
+  }
+}
 
diff --git a/seller/src/views/order/order/orderList.vue b/seller/src/views/order/order/orderList.vue
index b6458775..4bc99a0b 100644
--- a/seller/src/views/order/order/orderList.vue
+++ b/seller/src/views/order/order/orderList.vue
@@ -60,7 +60,7 @@ export default {
         orderSn: "",
         buyerName: "",
         orderStatus: "",
-        orderType:"NORMAL"
+        orderType: "NORMAL",
       },
       selectDate: null,
       form: {
@@ -191,8 +191,6 @@ export default {
       let result = await verificationCode(this.orderCode);
 
       if (result.success) {
-
-
         this.$router.push({
           name: "order-detail",
           query: { sn: result.result.sn || this.orderCode },
@@ -271,6 +269,9 @@ export default {
       });
     },
   },
+  mounted() {
+    this.init();
+  },
   activated() {
     this.init();
   },
diff --git a/seller/src/views/promotion/live/addLive.vue b/seller/src/views/promotion/live/addLive.vue
index f2d9327f..5b5d0090 100644
--- a/seller/src/views/promotion/live/addLive.vue
+++ b/seller/src/views/promotion/live/addLive.vue
@@ -172,6 +172,7 @@ export default {
       // 不能选择今天以前的时间
       optionsTime: {
         disabledDate(date) {
+          // console.log(data)
           return date && date.valueOf() < Date.now() - 86400000;
         },
       },
@@ -191,7 +192,7 @@ export default {
         startTime: [
           {
             required: true,
-            message: "请输入开始时间以及结束时间",
+            message: "请正确输入开始时间以及结束时间",
           },
         ],
         feedsImg: [
@@ -331,8 +332,9 @@ export default {
      * dialog点击确定时判断
      */
     addGoods() {
-      this.liveData.forEach((item) => {
-        this.commodityList.forEach((oldVal) => {
+      this.liveData.forEach((item, index) => {
+        this.commodityList.forEach((oldVal, i) => {
+          // 如果商品里面没有商品,以及添加商品为第一次的话
           if (oldVal.liveGoodsId != item.liveGoodsId) {
             addLiveGoods({
               roomId: this.$route.query.roomId,
@@ -389,21 +391,66 @@ export default {
       this.liveForm.coverImg = res.result;
     },
 
+    tipsDateError() {
+      this.$Message.error({
+        content:
+          "直播开播时间需要在当前时间的10分钟后并且,开始时间不能在6个月后,直播计划结束时间(开播时间和结束时间间隔不得短于30分钟,不得超过24小时)",
+        duration: 5,
+      });
+    },
+
     /**
      * 选择时间后的回调
      */
     handleChangeTime(daterange) {
-      this.times = daterange;
-      this.$set(
-        this.liveForm,
-        "startTime",
-        new Date(daterange[0]).getTime() / 1000
-      );
-      this.$set(
-        this.liveForm,
-        "endTime",
-        new Date(daterange[1]).getTime() / 1000
-      );
+      /**
+       * 直播开播时间需要在当前时间的10分钟后
+       * 此处设置默认为15分钟方便调整
+       */
+      let siteTime = new Date().getTime() / 1000;
+      let selectTime = new Date(daterange[0]).getTime() / 1000;
+      let currentTime = this.$options.filters.unixToDate(siteTime);
+      /**
+       * 开播时间和结束时间间隔不得短于30分钟,不得超过24小时
+       * 判断用户设置的结束时间
+       */
+      let endTime = new Date(daterange[1]).getTime() / 1000;
+      if (selectTime <= siteTime + 15 * 60) {
+        this.tipsDateError();
+        return false;
+      } else if (selectTime + 30 * 60 >= endTime) {
+        // 不能小于30分钟
+
+        this.tipsDateError();
+        return false;
+      } else if (selectTime + 24 * 60 * 60 <= endTime) {
+        // 不能超过24小时
+
+        this.tipsDateError();
+        return false;
+      } else if (
+        // 不能超过6个月
+        siteTime >=
+        new Date().getTime() + 6 * 31 * 24 * 3600 * 1000 + 86400000
+      ) {
+        this.tipsDateError();
+        return false;
+      } else {
+        this.$set(this.times, [0], currentTime);
+        this.times[1] = daterange[1];
+
+        // this.times = daterange;
+        this.$set(
+          this.liveForm,
+          "startTime",
+          new Date(daterange[0]).getTime() / 1000
+        );
+        this.$set(
+          this.liveForm,
+          "endTime",
+          new Date(daterange[1]).getTime() / 1000
+        );
+      }
     },
 
     /**
@@ -448,7 +495,9 @@ export default {
           // 需判断当前是否是添加商品
           if (this.$route.query.id && this.liveData.length != 0) {
             this.spinShow = true;
-             this.liveForm.commodityList = JSON.stringify(this.liveForm.commodityList);
+            this.liveForm.commodityList = JSON.stringify(
+              this.liveForm.commodityList
+            );
             // 将当前直播间修改
             editLive(this.liveForm).then((res) => {
               if (res.success) {