Merge branch 'master' into dev-ryan
						commit
						7d5e1811ab
					
				|  | @ -14,9 +14,10 @@ | ||||||
|     "js-cookie": "^2.2.1", |     "js-cookie": "^2.2.1", | ||||||
|     "less": "^3.12.2", |     "less": "^3.12.2", | ||||||
|     "less-loader": "^5.0.0", |     "less-loader": "^5.0.0", | ||||||
|  |     "mv-count-down": "^0.1.15", | ||||||
|     "psl": "^1.8.0", |     "psl": "^1.8.0", | ||||||
|     "qs": "^6.9.4", |     "qs": "^6.9.4", | ||||||
|     "swiper": "^6.4.1", |     "swiper": "^5.2.0", | ||||||
|     "uuid": "^8.3.2", |     "uuid": "^8.3.2", | ||||||
|     "v-distpicker": "^1.0.17", |     "v-distpicker": "^1.0.17", | ||||||
|     "view-design": "^4.3.2", |     "view-design": "^4.3.2", | ||||||
|  |  | ||||||
										
											Binary file not shown.
										
									
								
							|  | @ -11,4 +11,6 @@ | ||||||
| <glyph unicode="" glyph-name="next" horiz-adv-x="1025" d="M1024.951 448c0 2.706-1.097 5.193-1.536 7.826-0.585 3.145-0.658 6.363-1.902 9.362l-0.146 0.366c-1.682 3.95-4.389 7.314-7.022 10.606-1.024 1.317-1.463 2.926-2.706 4.096 0 0-0.146 0-0.146 0.146l-241.591 240.274c-8.15 7.642-19.145 12.336-31.236 12.336-25.247 0-45.714-20.467-45.714-45.714 0-12.218 4.793-23.317 12.602-31.518l-0.018 0.019 162.889-162.085h-821.76c-25.247 0-45.714-20.467-45.714-45.714s20.467-45.714 45.714-45.714h821.76l-162.889-162.085c-8.921-8.364-14.479-20.222-14.479-33.379 0-25.247 20.467-45.714 45.714-45.714 13.029 0 24.785 5.451 33.112 14.196l0.018 0.019 241.737 240.421c1.17 1.243 1.682 2.779 2.706 4.096 2.633 3.291 5.339 6.583 7.022 10.606l0.146 0.366c1.243 2.926 1.317 6.217 1.902 9.362 0.439 2.633 1.463 5.12 1.463 7.753v0.073c0 0.073 0 0 0 0z" /> | <glyph unicode="" glyph-name="next" horiz-adv-x="1025" d="M1024.951 448c0 2.706-1.097 5.193-1.536 7.826-0.585 3.145-0.658 6.363-1.902 9.362l-0.146 0.366c-1.682 3.95-4.389 7.314-7.022 10.606-1.024 1.317-1.463 2.926-2.706 4.096 0 0-0.146 0-0.146 0.146l-241.591 240.274c-8.15 7.642-19.145 12.336-31.236 12.336-25.247 0-45.714-20.467-45.714-45.714 0-12.218 4.793-23.317 12.602-31.518l-0.018 0.019 162.889-162.085h-821.76c-25.247 0-45.714-20.467-45.714-45.714s20.467-45.714 45.714-45.714h821.76l-162.889-162.085c-8.921-8.364-14.479-20.222-14.479-33.379 0-25.247 20.467-45.714 45.714-45.714 13.029 0 24.785 5.451 33.112 14.196l0.018 0.019 241.737 240.421c1.17 1.243 1.682 2.779 2.706 4.096 2.633 3.291 5.339 6.583 7.022 10.606l0.146 0.366c1.243 2.926 1.317 6.217 1.902 9.362 0.439 2.633 1.463 5.12 1.463 7.753v0.073c0 0.073 0 0 0 0z" /> | ||||||
| <glyph unicode="" glyph-name="qq" d="M512 929.009c-265.653 0-480.989-215.345-480.989-481.012 0-265.662 215.335-481.006 480.989-481.006s480.989 215.345 480.989 481.006c-0.001 265.668-215.335 481.012-480.989 481.012v0zM776.822 298.086c-12.422-11.596-33.749 1.033-54.249 29.4-8.901-24.019-20.497-46.171-33.956-66.051 28.987-10.353 47.626-26.505 47.626-44.726 0-31.473-55.699-56.942-124.443-56.942-40.79 0-76.819 8.899-99.593 22.777-22.565-13.877-58.799-22.777-99.59-22.777-68.745 0-124.443 25.469-124.443 56.942 0 18.014 18.637 34.373 47.626 44.726-13.666 19.877-25.056 42.033-33.959 66.051-20.496-28.156-41.822-40.997-54.249-29.4-16.978 15.94-10.555 72.263 14.702 125.688 5.799 12.215 12.010 23.188 18.428 32.716 3.518 155.297 105.805 279.947 231.281 279.947h0.413c125.475 0 227.762-124.443 231.281-279.947 6.417-9.527 12.634-20.501 18.427-32.716 25.055-53.425 31.684-109.748 14.701-125.688v0z" /> | <glyph unicode="" glyph-name="qq" d="M512 929.009c-265.653 0-480.989-215.345-480.989-481.012 0-265.662 215.335-481.006 480.989-481.006s480.989 215.345 480.989 481.006c-0.001 265.668-215.335 481.012-480.989 481.012v0zM776.822 298.086c-12.422-11.596-33.749 1.033-54.249 29.4-8.901-24.019-20.497-46.171-33.956-66.051 28.987-10.353 47.626-26.505 47.626-44.726 0-31.473-55.699-56.942-124.443-56.942-40.79 0-76.819 8.899-99.593 22.777-22.565-13.877-58.799-22.777-99.59-22.777-68.745 0-124.443 25.469-124.443 56.942 0 18.014 18.637 34.373 47.626 44.726-13.666 19.877-25.056 42.033-33.959 66.051-20.496-28.156-41.822-40.997-54.249-29.4-16.978 15.94-10.555 72.263 14.702 125.688 5.799 12.215 12.010 23.188 18.428 32.716 3.518 155.297 105.805 279.947 231.281 279.947h0.413c125.475 0 227.762-124.443 231.281-279.947 6.417-9.527 12.634-20.501 18.427-32.716 25.055-53.425 31.684-109.748 14.701-125.688v0z" /> | ||||||
| <glyph unicode="" glyph-name="wechat" d="M579.6 448.4c-11.7 0-23.4-10.8-23.4-24.2 0-10.8 11.7-21.7 23.4-21.7 17.5 0 30 10.8 30 21.7 0 13.4-12.5 24.2-30 24.2zM502.8 561c18.4 0 30 11.7 30 29.2 0 18.4-11.7 29.2-30 29.2-17.5 0-34.2-10.8-34.2-29.2 0-17.5 16.7-29.2 34.2-29.2zM512 960c-282.8 0-512-229.2-512-512s229.2-512 512-512 512 229.2 512 512-229.2 512-512 512zM415.2 318.3c-30.9 0-53.4 5-82.6 13.3l-84.3-42.5 24.2 71.7c-59.2 41.7-94.3 94.3-94.3 158.5 0 113.5 106.8 200.2 236.9 200.2 115.1 0 217.7-68.4 237.7-165.2-8.3 1.7-15.9 2.5-22.5 2.5-113.5 0-201-85.1-201-187.7 0-17.5 2.5-33.4 6.7-50.1-6.6-0.7-14.1-0.7-20.8-0.7zM763.1 236.5l16.7-60.1-63.4 35.9c-24.2-5-47.5-12.5-71.7-12.5-111.8 0-200.2 76.7-200.2 171.8s88.4 171.8 200.2 171.8c105.9 0 201-76.7 201-171.8 0-53.3-35.9-100.9-82.6-135.1zM337.7 619.4c-17.5 0-35.9-10.8-35.9-29.2 0-17.5 18.4-29.2 35.9-29.2 16.7 0 30 11.7 30 29.2 0 18.4-13.4 29.2-30 29.2zM710.5 448.4c-12.5 0-23.4-10.8-23.4-24.2 0-10.8 10.8-21.7 23.4-21.7 16.7 0 29.2 10.8 29.2 21.7 0 13.4-12.5 24.2-29.2 24.2z" /> | <glyph unicode="" glyph-name="wechat" d="M579.6 448.4c-11.7 0-23.4-10.8-23.4-24.2 0-10.8 11.7-21.7 23.4-21.7 17.5 0 30 10.8 30 21.7 0 13.4-12.5 24.2-30 24.2zM502.8 561c18.4 0 30 11.7 30 29.2 0 18.4-11.7 29.2-30 29.2-17.5 0-34.2-10.8-34.2-29.2 0-17.5 16.7-29.2 34.2-29.2zM512 960c-282.8 0-512-229.2-512-512s229.2-512 512-512 512 229.2 512 512-229.2 512-512 512zM415.2 318.3c-30.9 0-53.4 5-82.6 13.3l-84.3-42.5 24.2 71.7c-59.2 41.7-94.3 94.3-94.3 158.5 0 113.5 106.8 200.2 236.9 200.2 115.1 0 217.7-68.4 237.7-165.2-8.3 1.7-15.9 2.5-22.5 2.5-113.5 0-201-85.1-201-187.7 0-17.5 2.5-33.4 6.7-50.1-6.6-0.7-14.1-0.7-20.8-0.7zM763.1 236.5l16.7-60.1-63.4 35.9c-24.2-5-47.5-12.5-71.7-12.5-111.8 0-200.2 76.7-200.2 171.8s88.4 171.8 200.2 171.8c105.9 0 201-76.7 201-171.8 0-53.3-35.9-100.9-82.6-135.1zM337.7 619.4c-17.5 0-35.9-10.8-35.9-29.2 0-17.5 18.4-29.2 35.9-29.2 16.7 0 30 11.7 30 29.2 0 18.4-13.4 29.2-30 29.2zM710.5 448.4c-12.5 0-23.4-10.8-23.4-24.2 0-10.8 10.8-21.7 23.4-21.7 16.7 0 29.2 10.8 29.2 21.7 0 13.4-12.5 24.2-29.2 24.2z" /> | ||||||
|  | <glyph unicode="" glyph-name="qrcode" d="M445.077 845.495h-290.715c-20.056 0-36.327-16.27-36.327-36.327v-290.715c0-20.056 16.27-36.327 36.327-36.327h290.715c20.056 0 36.327 16.27 36.327 36.327v290.613c0 20.056-16.27 36.429-36.327 36.429zM449.784 518.351c0-2.558-2.149-4.707-4.707-4.707h-290.715c-2.558 0-4.707 2.149-4.707 4.707v290.715c0 2.558 2.149 4.707 4.707 4.707h290.715c2.558 0 4.707-2.149 4.707-4.707v-290.715zM350.219 737.231h-101.1c-12.689 0-22.922-10.335-22.922-22.922v-101.1c0-12.689 10.335-22.922 22.922-22.922h101.1c12.689 0 22.922 10.335 22.922 22.922v101.1c0.102 12.586-10.233 22.922-22.922 22.922zM341.521 621.907h-83.705v83.705h83.705v-83.705zM350.219 306.122h-101.1c-12.689 0-22.922-10.335-22.922-22.922v-101.1c0-12.689 10.335-22.922 22.922-22.922h101.1c12.689 0 22.922 10.335 22.922 22.922v101.1c0.102 12.689-10.233 22.922-22.922 22.922zM341.521 190.798h-83.705v83.705h83.705v-83.705zM673.474 590.288h101.1c12.689 0 22.922 10.335 22.922 22.922v101.1c0 12.689-10.335 22.922-22.922 22.922h-101.1c-12.689 0-22.922-10.335-22.922-22.922v-101.1c0-12.689 10.233-22.922 22.922-22.922zM682.172 705.612h83.705v-83.705h-83.705v83.705zM445.077 417.148h-290.715c-20.056 0-36.327-16.27-36.327-36.327v-290.715c0-20.056 16.27-36.327 36.327-36.327h290.715c20.056 0 36.327 16.27 36.327 36.327v290.715c0 20.056-16.27 36.327-36.327 36.327zM449.784 90.107c0-2.558-2.149-4.707-4.707-4.707h-290.715c-2.558 0-4.707 2.149-4.707 4.707v290.715c0 2.558 2.149 4.707 4.707 4.707h290.715c2.558 0 4.707-2.149 4.707-4.707v-290.715zM580.458 416.022c-20.056 0-36.327-16.27-36.327-36.327v-167.205c0-8.698 7.061-15.861 15.861-15.861 8.698 0 15.861 7.061 15.861 15.861v167.102c0 2.558 2.149 4.707 4.707 4.707h176.005c8.698 0 15.861 7.061 15.861 15.861s-7.061 15.861-15.861 15.861h-176.107zM578.616 482.024h290.715c20.056 0 36.327 16.27 36.327 36.327v290.715c0 20.056-16.27 36.327-36.327 36.327h-290.715c-20.056 0-36.327-16.27-36.327-36.327v-290.715c0-19.954 16.373-36.327 36.327-36.327zM574.011 809.066c0 2.558 2.149 4.707 4.707 4.707h290.715c2.558 0 4.707-2.149 4.707-4.707v-290.715c0-2.558-2.149-4.707-4.707-4.707h-290.817c-2.558 0-4.707 2.149-4.707 4.707v290.715h0.102zM905.964 400.161c0 8.698-7.061 15.861-15.861 15.861h-58.020c-8.698 0-15.861-7.061-15.861-15.861s7.061-15.861 15.861-15.861h42.159v-60.988h-131.492c-8.698 0-15.861-7.061-15.861-15.861 0-8.698 7.061-15.861 15.861-15.861h147.353c8.698 0 15.861 7.061 15.861 15.861v92.71zM614.226 84.888h-38.475v44.104c0 8.698-7.061 15.861-15.861 15.861s-15.861-7.061-15.861-15.861v-59.862c0-8.698 7.061-15.861 15.861-15.861h54.336c8.698 0 15.861 7.061 15.861 15.861 0 8.698-7.061 15.759-15.861 15.759zM789.412 207.579c0 8.698-7.061 15.861-15.861 15.861h-99.975c-8.698 0-15.861-7.061-15.861-15.861v-140.088c0-8.698 7.061-15.861 15.861-15.861s15.861 7.061 15.861 15.861v124.227h84.114c8.8 0 15.861 7.061 15.861 15.861zM890.001 265.088c-8.698 0-15.861-7.061-15.861-15.861v-166.898h-143.26c-8.698 0-15.861-7.061-15.861-15.861 0-8.698 7.061-15.861 15.861-15.861h159.018c8.698 0 15.861 7.061 15.861 15.861v182.758c0 8.8-7.061 15.861-15.759 15.861zM636.431 350.839c-8.698 0-15.861-7.061-15.861-15.861v-51.471c0-8.698 7.061-15.861 15.861-15.861 8.698 0 15.861 7.061 15.861 15.861v51.471c0 8.8-7.163 15.861-15.861 15.861z" /> | ||||||
|  | <glyph unicode="" glyph-name="uniE905" horiz-adv-x="1055" d="M745.891 349.28c0-26.168 21.214-47.382 47.382-47.382s47.382 21.214 47.382 47.382c0 26.168-21.214 47.382-47.382 47.382v0c-26.168 0-47.382-21.214-47.382-47.382v0zM759.195 244.935c-44.978 0.149-81.399 36.571-81.548 81.534v52.143c0.149 44.978 36.571 81.399 81.534 81.548h296.231v168.518c-0.149 44.978-36.571 81.399-81.534 81.548h-892.329c-44.978-0.149-81.399-36.571-81.548-81.534v-611.144c0.149-44.978 36.571-81.399 81.534-81.548h892.329c44.978 0.149 81.399 36.571 81.548 81.534v227.4zM905.15 762.004l-86.061 155.918c-14.23 25.257-40.876 42.035-71.44 42.035-14.412 0-27.953-3.731-39.71-10.279l0.416 0.213-339.907-187.887z" /> | ||||||
| </font></defs></svg> | </font></defs></svg> | ||||||
| Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 8.0 KiB | 
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							|  | @ -1,10 +1,10 @@ | ||||||
| @font-face { | @font-face { | ||||||
|   font-family: 'icomoon'; |   font-family: 'icomoon'; | ||||||
|   src:  url('icomoon.eot?4ejtdc'); |   src:  url('icomoon.eot?jvagvf'); | ||||||
|   src:  url('icomoon.eot?4ejtdc#iefix') format('embedded-opentype'), |   src:  url('icomoon.eot?jvagvf#iefix') format('embedded-opentype'), | ||||||
|     url('icomoon.ttf?4ejtdc') format('truetype'), |     url('icomoon.ttf?jvagvf') format('truetype'), | ||||||
|     url('icomoon.woff?4ejtdc') format('woff'), |     url('icomoon.woff?jvagvf') format('woff'), | ||||||
|     url('icomoon.svg?4ejtdc#icomoon') format('svg'); |     url('icomoon.svg?jvagvf#icomoon') format('svg'); | ||||||
|   font-weight: normal; |   font-weight: normal; | ||||||
|   font-style: normal; |   font-style: normal; | ||||||
|   font-display: block; |   font-display: block; | ||||||
|  | @ -25,6 +25,14 @@ | ||||||
|   -moz-osx-font-smoothing: grayscale; |   -moz-osx-font-smoothing: grayscale; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | .icon-wallet:before { | ||||||
|  |   content: "\e905"; | ||||||
|  |   color: #3c56c6; | ||||||
|  | } | ||||||
|  | .icon-qrcode:before { | ||||||
|  |   content: "\e904"; | ||||||
|  |   color: #999; | ||||||
|  | } | ||||||
| .icon-customer-service:before { | .icon-customer-service:before { | ||||||
|   content: "\e900"; |   content: "\e900"; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -64,7 +64,7 @@ | ||||||
|                   </span> |                   </span> | ||||||
|               </p> |               </p> | ||||||
|             </div> |             </div> | ||||||
|              <!-- 满减展示 --> |             <!-- 满减展示 --> | ||||||
|             <div class="item-price-row" v-if="promotionMap['FULL_DISCOUNT']"> |             <div class="item-price-row" v-if="promotionMap['FULL_DISCOUNT']"> | ||||||
|               <p> |               <p> | ||||||
|                 <span class="item-price-title">促     销</span> |                 <span class="item-price-title">促     销</span> | ||||||
|  | @ -111,7 +111,7 @@ | ||||||
|               <span class="inventory"> 库存{{skuDetail.quantity}}</span> |               <span class="inventory"> 库存{{skuDetail.quantity}}</span> | ||||||
|             </div> |             </div> | ||||||
|           </div> |           </div> | ||||||
|           <div class="item-select"> |           <div class="item-select" v-if="skuDetail.goodsType !== 'VIRTUAL_GOODS'"> | ||||||
|             <div class="item-select-title"> |             <div class="item-select-title"> | ||||||
|               <p>重量</p> |               <p>重量</p> | ||||||
|             </div> |             </div> | ||||||
|  | @ -119,11 +119,11 @@ | ||||||
|               <span class="inventory"> {{skuDetail.weight}}kg</span> |               <span class="inventory"> {{skuDetail.weight}}kg</span> | ||||||
|             </div> |             </div> | ||||||
|           </div> |           </div> | ||||||
|           <div class="add-buy-car" v-if="$route.query.way === 'POINT'"> |           <div class="add-buy-car" v-if="$route.query.way === 'POINT' && skuDetail.isAuth === 'PASS'"> | ||||||
|             <Button type="error" :loading="loading" :disabled="skuDetail.quantity === 0" @click="pointPay">积分购买</Button> |             <Button type="error" :loading="loading" :disabled="skuDetail.quantity === 0" @click="pointPay">积分购买</Button> | ||||||
|           </div> |           </div> | ||||||
|           <div class="add-buy-car" v-else> |           <div class="add-buy-car" v-if="$route.query.way !== 'POINT' && skuDetail.isAuth === 'PASS'"> | ||||||
|             <Button type="error" :loading="loading" :disabled="skuDetail.quantity === 0" @click="addShoppingCartBtn">加入购物车</Button> |             <Button type="error" v-if="skuDetail.goodsType !== 'VIRTUAL_GOODS'" :loading="loading" :disabled="skuDetail.quantity === 0" @click="addShoppingCartBtn">加入购物车</Button> | ||||||
|             <Button type="warning" :loading="loading1" :disabled="skuDetail.quantity === 0" @click="buyNow">立即购买</Button> |             <Button type="warning" :loading="loading1" :disabled="skuDetail.quantity === 0" @click="buyNow">立即购买</Button> | ||||||
|           </div> |           </div> | ||||||
| 
 | 
 | ||||||
|  | @ -151,7 +151,7 @@ export default { | ||||||
|       count: 1, // 商品数量 |       count: 1, // 商品数量 | ||||||
|       imgIndex: 0, // 展示图片下标 |       imgIndex: 0, // 展示图片下标 | ||||||
|       currentSelceted: [], // 当前商品sku |       currentSelceted: [], // 当前商品sku | ||||||
|       imgList: this.detail.data.specList[0].specImage, // 商品图片列表 |       imgList: this.detail.data.specList[0].specImage || [], // 商品图片列表 | ||||||
|       skuDetail: this.detail.data, // sku详情 |       skuDetail: this.detail.data, // sku详情 | ||||||
|       goodsSpecList: this.detail.specs, // 商品spec |       goodsSpecList: this.detail.specs, // 商品spec | ||||||
|       promotionMap: { // 活动状态 |       promotionMap: { // 活动状态 | ||||||
|  | @ -199,7 +199,6 @@ export default { | ||||||
|         skuId: this.skuDetail.id |         skuId: this.skuDetail.id | ||||||
|       }; |       }; | ||||||
|       this.loading = true; |       this.loading = true; | ||||||
|       console.log(11111111); |  | ||||||
|       addCartGoods(params).then(res => { |       addCartGoods(params).then(res => { | ||||||
|         debugger; |         debugger; | ||||||
|         this.loading = false; |         this.loading = false; | ||||||
|  | @ -219,11 +218,15 @@ export default { | ||||||
|         skuId: this.skuDetail.id, |         skuId: this.skuDetail.id, | ||||||
|         cartType: 'BUY_NOW' |         cartType: 'BUY_NOW' | ||||||
|       }; |       }; | ||||||
|  |       // 虚拟商品购买 | ||||||
|  |       if (this.skuDetail.goodsType === 'VIRTUAL_GOODS') { | ||||||
|  |         params.cartType = 'VIRTUAL' | ||||||
|  |       } | ||||||
|       this.loading1 = true; |       this.loading1 = true; | ||||||
|       addCartGoods(params).then(res => { |       addCartGoods(params).then(res => { | ||||||
|         this.loading1 = false; |         this.loading1 = false; | ||||||
|         if (res.success) { |         if (res.success) { | ||||||
|           this.$router.push({path: '/pay', query: {way: 'BUY_NOW'}}); |           this.$router.push({path: '/pay', query: {way: params.cartType}}); | ||||||
|         } else { |         } else { | ||||||
|           this.$Message.warning(res.message); |           this.$Message.warning(res.message); | ||||||
|         } |         } | ||||||
|  | @ -324,6 +327,7 @@ export default { | ||||||
|       }) |       }) | ||||||
|     }, |     }, | ||||||
|     promotion () { // 格式化促销活动,返回当前促销的对象 |     promotion () { // 格式化促销活动,返回当前促销的对象 | ||||||
|  |       if (!this.detail.promotionMap) return false; | ||||||
|       let keysArr = Object.keys(this.detail.promotionMap); |       let keysArr = Object.keys(this.detail.promotionMap); | ||||||
|       if (keysArr.length === 0) return false; |       if (keysArr.length === 0) return false; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -86,6 +86,14 @@ | ||||||
|                 </div> |                 </div> | ||||||
|               </div> |               </div> | ||||||
|             </TabPane> |             </TabPane> | ||||||
|  |             <TabPane label="商品参数"> | ||||||
|  |               <table class="mt_10" border="1" cellpadding='0' cellspacing="0" v-if="skuDetail.goodsParamsList && skuDetail.length"> | ||||||
|  |                 <tr v-for="param in skuDetail.goodsParamsList" :key="param"> | ||||||
|  |                   <td>{{param.paramName}}</td><td>{{param.paramValue}}</td> | ||||||
|  |                 </tr> | ||||||
|  |               </table> | ||||||
|  |               <!-- <div v-else>暂无商品参数</div> --> | ||||||
|  |             </TabPane> | ||||||
|           </Tabs> |           </Tabs> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
|  | @ -475,4 +483,18 @@ export default { | ||||||
| .ivu-rate-star-full:before, .ivu-rate-star-half .ivu-rate-star-content:before { | .ivu-rate-star-full:before, .ivu-rate-star-half .ivu-rate-star-content:before { | ||||||
|   color: $theme_color; |   color: $theme_color; | ||||||
| } | } | ||||||
|  | table{ | ||||||
|  |   border-color: #eee; | ||||||
|  |   color: #999; | ||||||
|  |   width: 70%; | ||||||
|  |   margin-left: 10px; | ||||||
|  |   tr{ | ||||||
|  |     td:nth-child(1){ | ||||||
|  |       width: 200px; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   td{ | ||||||
|  |     padding: 5px; | ||||||
|  |   } | ||||||
|  | } | ||||||
| </style> | </style> | ||||||
|  |  | ||||||
|  | @ -36,7 +36,7 @@ | ||||||
| </template> | </template> | ||||||
| <script> | <script> | ||||||
| import { Swiper, SwiperSlide, directive } from 'vue-awesome-swiper'; | import { Swiper, SwiperSlide, directive } from 'vue-awesome-swiper'; | ||||||
| import 'swiper/swiper-bundle.css'; | // import 'swiper/swiper-bundle.css'; | ||||||
| export default { | export default { | ||||||
|   components: { |   components: { | ||||||
|     Swiper, |     Swiper, | ||||||
|  |  | ||||||
|  | @ -98,14 +98,14 @@ export default { | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   created () { |   created () { | ||||||
|     this.getImg(); |     // this.getImg(); | ||||||
|   }, |   }, | ||||||
|   watch: { |   watch: { | ||||||
|     verifyType: { |     verifyType: { | ||||||
|       immediate: true, |       immediate: true, | ||||||
|       handler: function (v) { |       handler: function (v) { | ||||||
|         this.type = v; |         this.type = v; | ||||||
|         this.refresh(); |         // this.refresh(); | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     show (v) { |     show (v) { | ||||||
|  |  | ||||||
|  | @ -69,7 +69,7 @@ | ||||||
|                 >人评价 |                 >人评价 | ||||||
|               </div> |               </div> | ||||||
|               <div class="goods-show-seller"> |               <div class="goods-show-seller"> | ||||||
|                 <span>{{ item.storeName }}</span> |                 <Tag v-if="item.selfOperated" style="padding:0 4px;" size="small" color="error">自营</Tag><span>{{ item.storeName }}</span> | ||||||
|               </div> |               </div> | ||||||
|             </div> |             </div> | ||||||
|           </div> |           </div> | ||||||
|  |  | ||||||
|  | @ -93,13 +93,13 @@ | ||||||
|     </div> |     </div> | ||||||
|     <div class="foot"> |     <div class="foot"> | ||||||
|       <Row type="flex" justify="space-around" class="help"> |       <Row type="flex" justify="space-around" class="help"> | ||||||
|         <a class="item" href="https://lilishop.com" target="_blank">帮助</a> |         <a class="item" href="https://pickmall.cn/" target="_blank">帮助</a> | ||||||
|         <a class="item" href="https://lilishop.com" target="_blank">隐私</a> |         <a class="item" href="https://pickmall.cn/" target="_blank">隐私</a> | ||||||
|         <a class="item" href="https://lilishop.com" target="_blank">条款</a> |         <a class="item" href="https://pickmall.cn/" target="_blank">条款</a> | ||||||
|       </Row> |       </Row> | ||||||
|       <Row type="flex" justify="center" class="copyright"> |       <Row type="flex" justify="center" class="copyright"> | ||||||
|         Copyright © 2020 - Present |         Copyright © 2020 - Present | ||||||
|         <a href="http://lili.cn" target="_blank" style="margin: 0 5px" |         <a href="https://pickmall.cn/" target="_blank" style="margin: 0 5px" | ||||||
|           >lili-shop</a |           >lili-shop</a | ||||||
|         > |         > | ||||||
|         版权所有 |         版权所有 | ||||||
|  |  | ||||||
|  | @ -30,13 +30,13 @@ | ||||||
|     </div> |     </div> | ||||||
|     <empty v-else /> |     <empty v-else /> | ||||||
|     <!-- 分页 --> |     <!-- 分页 --> | ||||||
|     <div class="page-size mt_10" v-if="paging"> |     <!-- <div class="page-size mt_10" v-if="paging"> | ||||||
|       <Page :total="total" @on-change="changePageNum" |       <Page :total="total" @on-change="changePageNum" | ||||||
|         @on-page-size-change="changePageSize" |         @on-page-size-change="changePageSize" | ||||||
|         :page-size="params.pageSize" |         :page-size="params.pageSize" | ||||||
|         show-sizer> |         show-sizer> | ||||||
|       </Page> |       </Page> | ||||||
|     </div> |     </div> --> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
|  | @ -61,7 +61,7 @@ export default { | ||||||
|       total: 0, // 收藏总数 |       total: 0, // 收藏总数 | ||||||
|       params: { // 请求参数 |       params: { // 请求参数 | ||||||
|         pageNumber: 1, |         pageNumber: 1, | ||||||
|         pageSize: 10, |         pageSize: 100, | ||||||
|         type: 'GOODS' |         type: 'GOODS' | ||||||
|       }, |       }, | ||||||
|       spinShow: false // 加载状态 |       spinShow: false // 加载状态 | ||||||
|  |  | ||||||
|  | @ -44,6 +44,12 @@ | ||||||
|         </tr> |         </tr> | ||||||
|       </table> |       </table> | ||||||
|     </div> |     </div> | ||||||
|  |     <div class="order-card" v-if="afterSale.afterSaleImage"> | ||||||
|  |       <h3 class="mb_10">图片信息</h3> | ||||||
|  |       <div v-for="img in afterSale.afterSaleImage.split(',')" :key="img"> | ||||||
|  |         <img :src="img" width="200" height="200" @click="perviewImg(img)" class="hover-pointer" alt=""> | ||||||
|  |       </div> | ||||||
|  |     </div> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
| <script> | <script> | ||||||
|  | @ -83,6 +89,9 @@ export default { | ||||||
|     filterOrderStatus (status) { // 获取订单状态中文 |     filterOrderStatus (status) { // 获取订单状态中文 | ||||||
|       const ob = this.afterSaleStatusList.filter(e => { return e.status === status }); |       const ob = this.afterSaleStatusList.filter(e => { return e.status === status }); | ||||||
|       return ob[0].name |       return ob[0].name | ||||||
|  |     }, | ||||||
|  |     perviewImg (img) { | ||||||
|  |       window.open(img, '_blank') | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   mounted () { |   mounted () { | ||||||
|  |  | ||||||
|  | @ -16,11 +16,11 @@ | ||||||
|     </template> |     </template> | ||||||
|     </Table> |     </Table> | ||||||
|     <div> |     <div> | ||||||
|       <Form :model="form" ref="form" :rules="rules" :label-width="80"> |       <Form :model="form" ref="form" class="mt_10" :rules="rules" :label-width="80"> | ||||||
|         <FormItem label="售后类别"> |         <FormItem label="售后类别"> | ||||||
|           <RadioGroup v-model="form.serviceType" @on-change="changeReason" type="button" button-style="solid"> |           <RadioGroup v-model="form.serviceType" @on-change="changeReason" type="button" button-style="solid"> | ||||||
|             <Radio label="RETURN_GOODS">退货</Radio> |             <Radio v-if="info.returnGoods" label="RETURN_GOODS">退货</Radio> | ||||||
|             <Radio label="RETURN_MONEY">退款</Radio> |             <Radio v-if="info.returnMoney" label="RETURN_MONEY">退款</Radio> | ||||||
|           </RadioGroup> |           </RadioGroup> | ||||||
|         </FormItem> |         </FormItem> | ||||||
|         <FormItem label="提交数量" prop="num"> |         <FormItem label="提交数量" prop="num"> | ||||||
|  | @ -144,6 +144,10 @@ export default { | ||||||
|         if (res.success) { |         if (res.success) { | ||||||
|           this.info = res.result |           this.info = res.result | ||||||
|           this.goodsData.push(res.result) |           this.goodsData.push(res.result) | ||||||
|  |           if (!this.info.returnGoods && this.info.returnMoney) { | ||||||
|  |             this.form.serviceType = 'RETURN_MONEY' | ||||||
|  |           } | ||||||
|  |           this.getReason(this.form.serviceType) | ||||||
|         } |         } | ||||||
|       }) |       }) | ||||||
|     }, |     }, | ||||||
|  | @ -195,7 +199,6 @@ export default { | ||||||
|   mounted () { |   mounted () { | ||||||
|     this.accessToken.accessToken = storage.getItem('accessToken'); |     this.accessToken.accessToken = storage.getItem('accessToken'); | ||||||
|     this.getInfo() |     this.getInfo() | ||||||
|     this.getReason('RETURN_GOODS') |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
| </script> | </script> | ||||||
|  |  | ||||||
|  | @ -29,7 +29,6 @@ | ||||||
|             <div>{{ filterOrderStatus(order.orderStatus) }}</div> |             <div>{{ filterOrderStatus(order.orderStatus) }}</div> | ||||||
|             <div> |             <div> | ||||||
|               订单号:{{ order.sn }}      {{order.createTime}} |               订单号:{{ order.sn }}      {{order.createTime}} | ||||||
|                  {{ order.memberName | secrecyMobile }} |  | ||||||
|             </div> |             </div> | ||||||
|           </div> |           </div> | ||||||
|           <div> |           <div> | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ | ||||||
|   <div class="order-detail" v-if="order.order"> |   <div class="order-detail" v-if="order.order"> | ||||||
|     <card _Title="订单详情" :_Size="16"></card> |     <card _Title="订单详情" :_Size="16"></card> | ||||||
|     <div class="order-card"> |     <div class="order-card"> | ||||||
|       <p class="global_color fontsize_18">{{ order.orderStatusValue }}</p> |       <p class="global_color fontsize_18">{{ order.orderStatusValue }} <span class="verificationCode" v-if="order.order.verificationCode">核验码:{{order.order.verificationCode}}</span></p> | ||||||
|       <p class="global_color">订单号:{{ order.order.sn }}</p> |       <p class="global_color">订单号:{{ order.order.sn }}</p> | ||||||
|       <div style="color:#999;" class="operation-time">操作时间:{{order.order.updateTime}}</div> |       <div style="color:#999;" class="operation-time">操作时间:{{order.order.updateTime}}</div> | ||||||
|       <Steps class="progress" :current="progressList.length" direction="vertical"> |       <Steps class="progress" :current="progressList.length" direction="vertical"> | ||||||
|  | @ -22,8 +22,8 @@ | ||||||
|     </div> |     </div> | ||||||
|     <div class="order-card"> |     <div class="order-card"> | ||||||
|       <h3>付款信息</h3> |       <h3>付款信息</h3> | ||||||
|       <p>支付方式:在线支付</p> |       <p>支付方式:{{order.paymentMethodValue}}</p> | ||||||
|       <p>付款状态:未付款</p> |       <p>付款状态:{{order.payStatusValue}}</p> | ||||||
|     </div> |     </div> | ||||||
|     <div class="order-card"> |     <div class="order-card"> | ||||||
|       <h3>配送信息</h3> |       <h3>配送信息</h3> | ||||||
|  | @ -234,7 +234,12 @@ table { | ||||||
|     font-size: 20px; |     font-size: 20px; | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | .verificationCode { | ||||||
|  |   font-size: 16px; | ||||||
|  |   margin-left: 240px; | ||||||
|  |   color: rgb(65, 63, 63); | ||||||
|  |   font-weight: bold; | ||||||
|  | } | ||||||
| /** 订单进度条 */ | /** 订单进度条 */ | ||||||
| .progress { | .progress { | ||||||
|   margin: 15px 0; |   margin: 15px 0; | ||||||
|  |  | ||||||
|  | @ -215,7 +215,7 @@ export default { | ||||||
|                       color: 'green' |                       color: 'green' | ||||||
|                     } |                     } | ||||||
|                   }, |                   }, | ||||||
|                   params.row.money |                   this.$options.filters.unitPrice(params.row.money, '+ ¥') | ||||||
|                 ) |                 ) | ||||||
|               ]); |               ]); | ||||||
|             } else if (params.row.money < 0) { |             } else if (params.row.money < 0) { | ||||||
|  | @ -227,7 +227,7 @@ export default { | ||||||
|                       color: 'red' |                       color: 'red' | ||||||
|                     } |                     } | ||||||
|                   }, |                   }, | ||||||
|                   params.row.money |                   this.$options.filters.unitPrice(0 - params.row.money, '- ¥') | ||||||
|                 ) |                 ) | ||||||
|               ]); |               ]); | ||||||
|             } |             } | ||||||
|  | @ -252,7 +252,10 @@ export default { | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: '充值金额', |           title: '充值金额', | ||||||
|           key: 'rechargeMoney' |           key: 'rechargeMoney', | ||||||
|  |           render: (h, params) => { | ||||||
|  |             return h('div', [h('span', this.$options.filters.unitPrice(params.row.rechargeMoney, '¥'))]); | ||||||
|  |           } | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: '支付状态', |           title: '支付状态', | ||||||
|  | @ -281,7 +284,9 @@ export default { | ||||||
|         { |         { | ||||||
|           title: '提现金额', |           title: '提现金额', | ||||||
|           key: 'applyMoney', |           key: 'applyMoney', | ||||||
|           width: 120 |           render: (h, params) => { | ||||||
|  |             return h('div', [h('span', this.$options.filters.unitPrice(params.row.applyMoney, '¥'))]); | ||||||
|  |           } | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: '提现状态', |           title: '提现状态', | ||||||
|  | @ -392,9 +397,10 @@ export default { | ||||||
|         if (valid) { |         if (valid) { | ||||||
|           recharge(this.formData).then((res) => { |           recharge(this.formData).then((res) => { | ||||||
|             if (res.message === 'success') { |             if (res.message === 'success') { | ||||||
|               // TODO 根据返回的值跳转到收银台进行支付,一下是输出sn |               this.$router.push({ | ||||||
|               console.warn(res.result.rechargeSn); |                 path: '/payment', | ||||||
|               this.modal = false; |                 query: { orderType: 'RECHARGE', sn: res.result.rechargeSn } | ||||||
|  |               }); | ||||||
|             } |             } | ||||||
|           }); |           }); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  | @ -15,6 +15,14 @@ | ||||||
|         </span> |         </span> | ||||||
|       </li> |       </li> | ||||||
|     </ul> |     </ul> | ||||||
|  |     <!-- 分页 --> | ||||||
|  |     <div class="page-size"> | ||||||
|  |       <Page :total="total" @on-change="changePageNum" | ||||||
|  |         @on-page-size-change="changePageSize" | ||||||
|  |         :page-size="params.pageSize" | ||||||
|  |         show-sizer> | ||||||
|  |       </Page> | ||||||
|  |     </div> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
|  | @ -25,7 +33,14 @@ export default { | ||||||
|   data () { |   data () { | ||||||
|     return { |     return { | ||||||
|       list: [], // 我的足迹,商品列表 |       list: [], // 我的足迹,商品列表 | ||||||
|       spinShow: false // 控制loading是否加载 |       spinShow: false, // 控制loading是否加载 | ||||||
|  |       params: { | ||||||
|  |         pageNumber: 1, | ||||||
|  |         pageSize: 30, | ||||||
|  |         order: 'desc', | ||||||
|  |         sort: 'createTime' | ||||||
|  |       }, | ||||||
|  |       total: 0 | ||||||
|     }; |     }; | ||||||
|   }, |   }, | ||||||
|   mounted () { |   mounted () { | ||||||
|  | @ -71,7 +86,16 @@ export default { | ||||||
|         } |         } | ||||||
|       }) |       }) | ||||||
|     }, |     }, | ||||||
|     getList () { |     changePageNum (val) { // 修改页码 | ||||||
|  |       this.params.pageNumber = val; | ||||||
|  |       this.getList() | ||||||
|  |     }, | ||||||
|  |     changePageSize (val) { // 修改页数 | ||||||
|  |       this.pageNumber = 1; | ||||||
|  |       this.params.pageSize = val; | ||||||
|  |       this.getList() | ||||||
|  |     }, | ||||||
|  |     getList () { // 获取足迹列表 | ||||||
|       this.spinShow = true; |       this.spinShow = true; | ||||||
|       tracksList(this.params).then(res => { |       tracksList(this.params).then(res => { | ||||||
|         this.spinShow = false |         this.spinShow = false | ||||||
|  |  | ||||||
|  | @ -6,7 +6,8 @@ | ||||||
|     </div> |     </div> | ||||||
|     <div class="pay-btn"> |     <div class="pay-btn"> | ||||||
|       <Button type="primary" @click="$router.push('/')">继续逛逛</Button> |       <Button type="primary" @click="$router.push('/')">继续逛逛</Button> | ||||||
|       <Button type="info" @click="$router.push('home/myOrder')">查看订单</Button> |       <Button type="info" v-if="$route.query.orderType ==='RECHARGE'" @click="$router.push('/home/MoneyManagement')">查看余额</Button> | ||||||
|  |       <Button type="info" v-else @click="$router.push('/home/myOrder')">查看订单</Button> | ||||||
|     </div> |     </div> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
|  |  | ||||||
|  | @ -5,31 +5,64 @@ | ||||||
|       <div class="head-left"> |       <div class="head-left"> | ||||||
|         <div class="left-tips">订单提交成功,请尽快付款!</div> |         <div class="left-tips">订单提交成功,请尽快付款!</div> | ||||||
|         <div class="left-tips-time">请您尽快完成支付,否则订单会被自动取消</div> |         <div class="left-tips-time">请您尽快完成支付,否则订单会被自动取消</div> | ||||||
|  |         <div class="left-tips-count-down"> | ||||||
|  |           <mv-count-down :startTime="startTime" class="count-down" | ||||||
|  |             :endTime="endTime" | ||||||
|  |             :endText="endText" | ||||||
|  |             :dayTxt="'天'" | ||||||
|  |             :hourTxt="'小时'" | ||||||
|  |             :minutesTxt="'分钟'" | ||||||
|  |             :secondsTxt="'秒'" | ||||||
|  |             :isStart="isStart"></mv-count-down> | ||||||
|  | 
 | ||||||
|  |         </div> | ||||||
|       </div> |       </div> | ||||||
|       <div class="head-right"> |       <div class="head-right"> | ||||||
|         <div>应付金额 <span class="price">{{payDetail.price | unitPrice}}</span>元</div> |         <div>应付金额 <span class="price">{{ payDetail.price | unitPrice }}</span>元</div> | ||||||
|       </div> |       </div> | ||||||
|     </div> |     </div> | ||||||
|     <div class="wrapper-box"> |     <div class="wrapper-box"> | ||||||
|       <div class="-box-item" @click="handlePay('ALIPAY')"> |       <div v-if="support.includes('ALIPAY')" class="-box-item" @click="handlePay('ALIPAY')"> | ||||||
|         <img src="https://ss3.bdstatic.com/yrwDcj7w0QhBkMak8IuT_XF5ehU5bvGh7c50/logopic/a9936a369e82e0c6c42112674a5220e8_fullsize.jpg" alt=""> |         <img | ||||||
|  |           src="https://ss3.bdstatic.com/yrwDcj7w0QhBkMak8IuT_XF5ehU5bvGh7c50/logopic/a9936a369e82e0c6c42112674a5220e8_fullsize.jpg" | ||||||
|  |           alt=""> | ||||||
|         <span>支付宝</span> |         <span>支付宝</span> | ||||||
|       </div> |       </div> | ||||||
|       <div  class="-box-item" @click="handlePay('WECHAT')"> |       <div v-if="support.includes('WECHAT')" class="-box-item" @click="handlePay('WECHAT')"> | ||||||
|         <img src="https://dss1.bdstatic.com/6OF1bjeh1BF3odCf/it/u=3774939867,2826752539&fm=74&app=80&f=JPEG&size=f121,121?sec=1880279984&t=796e842a5ef2d16d9edc872d6f1147ef" alt=""> |         <img | ||||||
|  |           src="https://dss1.bdstatic.com/6OF1bjeh1BF3odCf/it/u=3774939867,2826752539&fm=74&app=80&f=JPEG&size=f121,121?sec=1880279984&t=796e842a5ef2d16d9edc872d6f1147ef" | ||||||
|  |           alt=""> | ||||||
|         <span>微信</span> |         <span>微信</span> | ||||||
|       </div> |       </div> | ||||||
|  |       <div v-if="support.includes('WALLET') && $route.query.orderType !== 'RECHARGE'" class="-box-item" @click="handlePay('WALLET')"> | ||||||
|  |         <Icon custom="icomoon icon-wallet" size="60"/> | ||||||
|  |         <span>余额支付</span> | ||||||
|  |         <span>当前剩余({{ walletValue | unitPrice('¥') }})</span> | ||||||
|  |       </div> | ||||||
|     </div> |     </div> | ||||||
|     <BaseFooter></BaseFooter> |     <BaseFooter></BaseFooter> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
| <script> | <script> | ||||||
| import { tradeDetail } from '@/api/pay.js'; | 
 | ||||||
|  | import {tradeDetail, pay} from '@/api/pay.js'; | ||||||
|  | import MvCountDown from 'mv-count-down' | ||||||
|  | import {Message} from 'view-design'; | ||||||
|  | 
 | ||||||
| export default { | export default { | ||||||
|  |   components: { | ||||||
|  |     MvCountDown | ||||||
|  |   }, | ||||||
|   data () { |   data () { | ||||||
|     return { |     return { | ||||||
|       payDetail: {}, // 支付详情 |       payDetail: {}, // 支付详情 | ||||||
|       qrcode: '' // 支付二维码 |       support: [], // 支持配送方式 | ||||||
|  |       walletValue: 0, // 当前余额 | ||||||
|  |       qrcode: '', // 支付二维码 | ||||||
|  |       startTime: new Date().getTime(), // 开始时间(时间戳) | ||||||
|  |       endTime: 0, // 完成的时间(时间戳) | ||||||
|  |       endText: '订单已超时取消', // 倒计时完成的提示文本 | ||||||
|  |       isStart: false // 控制倒计时开始的时机(异步请求完成开启) | ||||||
|     }; |     }; | ||||||
|   }, |   }, | ||||||
|   methods: { |   methods: { | ||||||
|  | @ -39,15 +72,45 @@ export default { | ||||||
|       tradeDetail(params).then(res => { |       tradeDetail(params).then(res => { | ||||||
|         if (res.success) { |         if (res.success) { | ||||||
|           this.payDetail = res.result; |           this.payDetail = res.result; | ||||||
|  |           this.endTime = this.payDetail.autoCancel | ||||||
|  |           this.isStart = true | ||||||
|  |           this.support = this.payDetail.support | ||||||
|  |           this.walletValue = this.payDetail.walletValue | ||||||
|         } |         } | ||||||
|       }); |       }); | ||||||
|     }, |     }, | ||||||
|  |     // 支付 | ||||||
|     handlePay (way) { |     handlePay (way) { | ||||||
|  |       // 余额支付则直接跳转 | ||||||
|  |       if (way === 'WALLET') { | ||||||
|  |         // 如果待支付金额大于余额,则报错 | ||||||
|  |         if (this.payDetail.price > this.walletValue) { | ||||||
|  |           Message.error('余额不足以支付当前订单,如需充值请前往会员中心'); | ||||||
|  |           return; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|       const params = this.$route.query; |       const params = this.$route.query; | ||||||
|       params.paymentMethod = way; |       params.paymentMethod = way; | ||||||
|       params.paymentClient = 'NATIVE'; |       params.paymentClient = 'NATIVE'; | ||||||
|       params.price = this.payDetail.price; |       params.price = this.payDetail.price; | ||||||
|       this.$router.push({path: '/qrpay', query: params}); |       if (way === 'WALLET') { | ||||||
|  |         this.$Modal.confirm({ | ||||||
|  |           title: '支付确认', | ||||||
|  |           content: '<p>确认使用余额支付吗?</p>', | ||||||
|  |           onOk: () => { | ||||||
|  |             pay(params).then(res => { | ||||||
|  |               if (res.success) { | ||||||
|  |                 this.$Message.warning(res.message) | ||||||
|  |                 this.$router.push('/payDone'); | ||||||
|  |               } else { | ||||||
|  |                 this.$Message.warning(res.message) | ||||||
|  |               } | ||||||
|  |             }) | ||||||
|  |           } | ||||||
|  |         }); | ||||||
|  |       } else { | ||||||
|  |         this.$router.push({path: '/qrpay', query: params}); | ||||||
|  |       } | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   mounted () { |   mounted () { | ||||||
|  | @ -56,64 +119,83 @@ export default { | ||||||
| }; | }; | ||||||
| </script> | </script> | ||||||
| <style scoped lang="scss"> | <style scoped lang="scss"> | ||||||
| .head-left{ | .head-left { | ||||||
|     font-weight: bold; |   font-weight: bold; | ||||||
| } | } | ||||||
| .left-tips{ | 
 | ||||||
|     font-size: 21px; | .left-tips { | ||||||
|  |   font-size: 21px; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| .-box-item{ |  | ||||||
|     margin-right: 30px; |  | ||||||
|     display: flex; |  | ||||||
|     font-size: 21px; |  | ||||||
|     font-weight: bold; |  | ||||||
|     align-items: center; |  | ||||||
|     margin: 20px 20px; |  | ||||||
|     cursor: pointer; |  | ||||||
|     @include content_color($light_content_color); |  | ||||||
| 
 | 
 | ||||||
|     &:hover{color: $theme_color;} | .-box-item { | ||||||
|  |   display: flex; | ||||||
|  |   font-size: 18px; | ||||||
|  |   font-weight: bold; | ||||||
|  |   align-items: center; | ||||||
|  |   margin: 20px 20px; | ||||||
|  |   cursor: pointer; | ||||||
|  |   @include content_color($light_content_color); | ||||||
| 
 | 
 | ||||||
|     >span{ |   &:hover { | ||||||
|         margin-left: 10px; |     color: $theme_color; | ||||||
|     } |   } | ||||||
|     >img{ | 
 | ||||||
|         border-radius: 10px; |   > span { | ||||||
|         width: 60px; |     margin-left: 15px; | ||||||
|         height: 60px; |   } | ||||||
|     } | 
 | ||||||
|  |   > img { | ||||||
|  |     border-radius: 10px; | ||||||
|  |     width: 60px; | ||||||
|  |     height: 60px; | ||||||
|  |   } | ||||||
| } | } | ||||||
| .left-tips-time{ | 
 | ||||||
|     font-size: 16px; | .left-tips-time { | ||||||
|  |   font-size: 16px; | ||||||
| } | } | ||||||
| .wrapper-head{ | 
 | ||||||
|     display: flex; | .left-tips-count-down { | ||||||
|     align-items: center; |   font-size: 10px; | ||||||
|     justify-content: space-between; |   color: red; | ||||||
|    line-height: 1.75; |  | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | .wrapper-head { | ||||||
|  |   display: flex; | ||||||
|  |   align-items: center; | ||||||
|  |   justify-content: space-between; | ||||||
|  |   line-height: 1.75; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| .wrapper-head, | .wrapper-head, | ||||||
| .wrapper-box { | .wrapper-box { | ||||||
|   padding: 20px 40px; |   padding: 20px 40px; | ||||||
|   width: 1200px; |   width: 1200px; | ||||||
|   margin: 20px auto; |   margin: 20px auto; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .wrapper-box { | .wrapper-box { | ||||||
|   @include white_background_color(); |   @include white_background_color(); | ||||||
|   height: auto; |   height: auto; | ||||||
|   display: flex; |  | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .wrapper { | .wrapper { | ||||||
|   width: 100%; |   width: 100%; | ||||||
|   height: 100%; |   height: 100%; | ||||||
| } | } | ||||||
| .price{ | 
 | ||||||
|     font-size: 18px; | .price { | ||||||
|     font-weight: bold; |   font-size: 18px; | ||||||
|     color: $theme_color; |   font-weight: bold; | ||||||
|  |   color: $theme_color; | ||||||
| } | } | ||||||
| .head-right{ | 
 | ||||||
|     font-weight: bold; | .head-right { | ||||||
|  |   font-weight: bold; | ||||||
|  |   font-size: 18px; | ||||||
|  | } | ||||||
|  | .count-down{ | ||||||
|  |   font-size: 16px!important; | ||||||
| } | } | ||||||
| </style> | </style> | ||||||
|  |  | ||||||
|  | @ -70,7 +70,7 @@ export default { | ||||||
|       payCallback(params).then(res => { |       payCallback(params).then(res => { | ||||||
|         if (res.result) { |         if (res.result) { | ||||||
|           clearInterval(this.interval); |           clearInterval(this.interval); | ||||||
|           this.$router.push('/payDone'); |           this.$router.push({path: '/payDone', query: {orderType: this.$route.query.orderType}}); | ||||||
|         } |         } | ||||||
|       }); |       }); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -69,10 +69,10 @@ service.interceptors.request.use( | ||||||
|       config.headers['accessToken'] = accessToken; |       config.headers['accessToken'] = accessToken; | ||||||
|       // 解析当前token时间
 |       // 解析当前token时间
 | ||||||
|       let jwtData = JSON.parse( |       let jwtData = JSON.parse( | ||||||
|         decodeURIComponent(escape(window.atob(accessToken.split('.')[1]))) |         decodeURIComponent(escape(window.atob(accessToken.split('.')[1].replace(/-/g, '+').replace(/_/g, '/')))) | ||||||
|       ); |       ); | ||||||
|       if (jwtData.exp < Math.round(new Date() / 1000)) { |       if (jwtData.exp < Math.round(new Date() / 1000)) { | ||||||
|         refresh() |         refresh(config) | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -142,6 +142,8 @@ service.interceptors.response.use( | ||||||
|         refresh(error) |         refresh(error) | ||||||
|         isRefreshToken = 0; |         isRefreshToken = 0; | ||||||
|       } |       } | ||||||
|  |     } else if (errorResponse.status === 404) { | ||||||
|  |       // 避免刷新token时也提示报错信息
 | ||||||
|     } else { |     } else { | ||||||
|       if (error.message) { |       if (error.message) { | ||||||
|         let _message = |         let _message = | ||||||
|  |  | ||||||
|  | @ -2051,7 +2051,7 @@ copy-webpack-plugin@^4.0.1: | ||||||
|     p-limit "^1.0.0" |     p-limit "^1.0.0" | ||||||
|     serialize-javascript "^1.4.0" |     serialize-javascript "^1.4.0" | ||||||
| 
 | 
 | ||||||
| core-js@^2.4.0, core-js@^2.5.0: | core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.5: | ||||||
|   version "2.6.12" |   version "2.6.12" | ||||||
|   resolved "https://registry.npm.taobao.org/core-js/download/core-js-2.6.12.tgz?cache=0&sync_timestamp=1607216048810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" |   resolved "https://registry.npm.taobao.org/core-js/download/core-js-2.6.12.tgz?cache=0&sync_timestamp=1607216048810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" | ||||||
|   integrity sha1-2TM9+nsGXjR8xWgiGdb2kIWcwuw= |   integrity sha1-2TM9+nsGXjR8xWgiGdb2kIWcwuw= | ||||||
|  | @ -5150,6 +5150,16 @@ mute-stream@0.0.7: | ||||||
|   resolved "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" |   resolved "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" | ||||||
|   integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= |   integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= | ||||||
| 
 | 
 | ||||||
|  | mv-count-down@^0.1.15: | ||||||
|  |   version "0.1.15" | ||||||
|  |   resolved "https://registry.npmjs.org/mv-count-down/-/mv-count-down-0.1.15.tgz#a3f3c1677576e592c7710b441b2dda96acac2702" | ||||||
|  |   integrity sha512-7poh86i27D/u4AvE9Ne8QHhy61p4MYAhSf4XAVyxzL0gXVCyccJ0NtJferEOxBP6C2q9jImknpKLGdwnEeJ7qQ== | ||||||
|  |   dependencies: | ||||||
|  |     core-js "^2.6.5" | ||||||
|  |     vue "^2.6.10" | ||||||
|  |     vue-router "^3.0.3" | ||||||
|  |     vuex "^3.0.1" | ||||||
|  | 
 | ||||||
| nan@^2.12.1, nan@^2.13.2: | nan@^2.12.1, nan@^2.13.2: | ||||||
|   version "2.14.2" |   version "2.14.2" | ||||||
|   resolved "https://registry.npm.taobao.org/nan/download/nan-2.14.2.tgz?cache=0&sync_timestamp=1602591700047&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnan%2Fdownload%2Fnan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" |   resolved "https://registry.npm.taobao.org/nan/download/nan-2.14.2.tgz?cache=0&sync_timestamp=1602591700047&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnan%2Fdownload%2Fnan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" | ||||||
|  | @ -8315,6 +8325,11 @@ vue-router@^3.0.1: | ||||||
|   resolved "https://registry.npm.taobao.org/vue-router/download/vue-router-3.4.9.tgz?cache=0&sync_timestamp=1607347231238&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-router%2Fdownload%2Fvue-router-3.4.9.tgz#c016f42030ae2932f14e4748b39a1d9a0e250e66" |   resolved "https://registry.npm.taobao.org/vue-router/download/vue-router-3.4.9.tgz?cache=0&sync_timestamp=1607347231238&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-router%2Fdownload%2Fvue-router-3.4.9.tgz#c016f42030ae2932f14e4748b39a1d9a0e250e66" | ||||||
|   integrity sha1-wBb0IDCuKTLxTkdIs5odmg4lDmY= |   integrity sha1-wBb0IDCuKTLxTkdIs5odmg4lDmY= | ||||||
| 
 | 
 | ||||||
|  | vue-router@^3.0.3: | ||||||
|  |   version "3.5.2" | ||||||
|  |   resolved "https://registry.npmjs.org/vue-router/-/vue-router-3.5.2.tgz#5f55e3f251970e36c3e8d88a7cd2d67a350ade5c" | ||||||
|  |   integrity sha512-807gn82hTnjCYGrnF3eNmIw/dk7/GE4B5h69BlyCK9KHASwSloD1Sjcn06zg9fVG4fYH2DrsNBZkpLtb25WtaQ== | ||||||
|  | 
 | ||||||
| vue-style-loader@^3.0.0, vue-style-loader@^3.0.1: | vue-style-loader@^3.0.0, vue-style-loader@^3.0.1: | ||||||
|   version "3.1.2" |   version "3.1.2" | ||||||
|   resolved "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-3.1.2.tgz#6b66ad34998fc9520c2f1e4d5fa4091641c1597a" |   resolved "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-3.1.2.tgz#6b66ad34998fc9520c2f1e4d5fa4091641c1597a" | ||||||
|  |  | ||||||
|  | @ -31,6 +31,7 @@ | ||||||
|     "sockjs-client": "^1.4.0", |     "sockjs-client": "^1.4.0", | ||||||
|     "stompjs": "^2.3.3", |     "stompjs": "^2.3.3", | ||||||
|     "swiper": "^6.3.5", |     "swiper": "^6.3.5", | ||||||
|  |     "uuid": "^8.3.2", | ||||||
|     "view-design": "^4.2.0", |     "view-design": "^4.2.0", | ||||||
|     "vue": "^2.6.10", |     "vue": "^2.6.10", | ||||||
|     "vue-apexcharts": "^1.5.1", |     "vue-apexcharts": "^1.5.1", | ||||||
|  | @ -48,8 +49,7 @@ | ||||||
|     "vuex": "^3.4.0", |     "vuex": "^3.4.0", | ||||||
|     "wangeditor": "^4.5.3", |     "wangeditor": "^4.5.3", | ||||||
|     "xlsx": "^0.16.2", |     "xlsx": "^0.16.2", | ||||||
|     "xss": "^1.0.7", |     "xss": "^1.0.7" | ||||||
|     "uuid": "^8.3.2" |  | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@vue/cli-plugin-babel": "^4.4.4", |     "@vue/cli-plugin-babel": "^4.4.4", | ||||||
|  |  | ||||||
|  | @ -76,15 +76,15 @@ export const disableCategory = (id, type) => { | ||||||
| 
 | 
 | ||||||
| //  获取商品规格分页列表
 | //  获取商品规格分页列表
 | ||||||
| export const getSpecListData = (params) => { | export const getSpecListData = (params) => { | ||||||
|     return getRequest('/goods/spec/page', params) |     return getRequest('/goods/spec', params) | ||||||
| } | } | ||||||
| //  添加或修改规格设置
 | //  添加或修改规格设置
 | ||||||
| export const insertSpec = (params) => { | export const insertSpec = (params) => { | ||||||
|     return postRequest('/goods/spec', params) |     return postRequest('/goods/spec', params) | ||||||
| } | } | ||||||
| //  添加或修改规格设置
 | //  添加或修改规格设置
 | ||||||
| export const updateSpec = (params) => { | export const updateSpec = (id,params) => { | ||||||
|     return putRequest('/goods/spec', params) |     return putRequest(`/goods/spec/${id}`, params) | ||||||
| } | } | ||||||
| //根据分类id获取关联规格
 | //根据分类id获取关联规格
 | ||||||
| export const getCategorySpecListData = (category_id, params) => { | export const getCategorySpecListData = (category_id, params) => { | ||||||
|  | @ -94,15 +94,6 @@ export const getCategorySpecListData = (category_id, params) => { | ||||||
| export const delSpec = (id, params) => { | export const delSpec = (id, params) => { | ||||||
|     return deleteRequest(`/goods/spec/${id}`, params) |     return deleteRequest(`/goods/spec/${id}`, params) | ||||||
| } | } | ||||||
| //  获取商品规格值列表
 |  | ||||||
| export const getSpecValuesListData = (id, params) => { |  | ||||||
|     return getRequest(`/goods/specValues/values/${id}`, params) |  | ||||||
| } |  | ||||||
| //  添加商品规格值
 |  | ||||||
| export const saveSpecValues = (id, params) => { |  | ||||||
|     return postRequest(`/goods/specValues/save/${id}`, params) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| // 查询某分类下的全部子分类列表
 | // 查询某分类下的全部子分类列表
 | ||||||
| export const getGoodsCategory = (parent_id) => { | export const getGoodsCategory = (parent_id) => { | ||||||
|  |  | ||||||
|  | @ -30,7 +30,7 @@ export const getLiveList = params => { | ||||||
| 
 | 
 | ||||||
| // 获取直播间详情
 | // 获取直播间详情
 | ||||||
| export const getLiveInfo = studioId => { | export const getLiveInfo = studioId => { | ||||||
|   return getRequest(`/broadcast/studio/studioInfo/${studioId}`); |   return getRequest(`/broadcast/studio/${studioId}`); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| // 获取当前进行中的促销活动商品
 | // 获取当前进行中的促销活动商品
 | ||||||
|  |  | ||||||
|  | @ -21,10 +21,10 @@ export default { | ||||||
|     // buyer: "https://buyer-api.pickmall.cn",
 |     // buyer: "https://buyer-api.pickmall.cn",
 | ||||||
|     // seller: "https://store-api.pickmall.cn",
 |     // seller: "https://store-api.pickmall.cn",
 | ||||||
|     // manager: "https://admin-api.pickmall.cn"
 |     // manager: "https://admin-api.pickmall.cn"
 | ||||||
|     common: 'http://192.168.0.100:8890', |     common: 'http://192.168.0.109:8890', | ||||||
|     buyer: 'http://192.168.0.100:8888', |     buyer: 'http://192.168.0.109:8888', | ||||||
|     seller: 'http://192.168.0.100:8889', |     seller: 'http://192.168.0.109:8889', | ||||||
|     manager: 'http://192.168.0.100:8887' |     manager: 'http://192.168.0.109:8887' | ||||||
|   }, |   }, | ||||||
|   api_prod: { |   api_prod: { | ||||||
|     common: "https://common-api.pickmall.cn", |     common: "https://common-api.pickmall.cn", | ||||||
|  |  | ||||||
|  | @ -64,14 +64,6 @@ service.interceptors.response.use( | ||||||
|         } |         } | ||||||
|         return data; |         return data; | ||||||
|         break; |         break; | ||||||
|       case 403: |  | ||||||
|         // 权限不足
 |  | ||||||
|         if (data.message !== null) { |  | ||||||
|           Message.error(data.message); |  | ||||||
|         } else { |  | ||||||
|           Message.error("权限不足"); |  | ||||||
|         } |  | ||||||
|         break; |  | ||||||
|       case 500: |       case 500: | ||||||
|         // 系统异常
 |         // 系统异常
 | ||||||
|         if (data.message !== null) { |         if (data.message !== null) { | ||||||
|  | @ -89,6 +81,8 @@ service.interceptors.response.use( | ||||||
|     if (error.response) { |     if (error.response) { | ||||||
|       if (error.response.status === 401) { |       if (error.response.status === 401) { | ||||||
|         // 这种情况一般调到登录页
 |         // 这种情况一般调到登录页
 | ||||||
|  |       } else if (error.response.status === 404) { | ||||||
|  |         // 避免刷新token报错
 | ||||||
|       } else if (error.response.status === 403) { |       } else if (error.response.status === 403) { | ||||||
|         isRefreshToken++; |         isRefreshToken++; | ||||||
|         if(isRefreshToken === 1) { |         if(isRefreshToken === 1) { | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ import ViewUI from 'view-design' | ||||||
| import './styles/theme.less'; | import './styles/theme.less'; | ||||||
| 
 | 
 | ||||||
| import "core-js/stable" | import "core-js/stable" | ||||||
| import "regenerator-runtime/runtime" | // import "regenerator-runtime/runtime"
 | ||||||
| import App from './App' | import App from './App' | ||||||
| import { router } from './router/index' | import { router } from './router/index' | ||||||
| import store from './store' | import store from './store' | ||||||
|  |  | ||||||
|  | @ -16,6 +16,22 @@ export function unitPrice(val, unit, location) { | ||||||
|   return (unit || '') + price |   return (unit || '') + price | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * 订单来源 | ||||||
|  |  */ | ||||||
|  | export function clientTypeWay(val) { | ||||||
|  |   if (val == "H5") { | ||||||
|  |     return "移动端"; | ||||||
|  |   } else if (val == "PC") { | ||||||
|  |     return "PC端"; | ||||||
|  |   } else if (val == "WECHAT_MP") { | ||||||
|  |     return "小程序端"; | ||||||
|  |   } else if (val == "APP") { | ||||||
|  |     return "移动应用端"; | ||||||
|  |   } else { | ||||||
|  |     return val; | ||||||
|  |   } | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -147,21 +147,13 @@ export default { | ||||||
|           sortable: false, |           sortable: false, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.distributionStatus == "PASS") { |             if (params.row.distributionStatus == "PASS") { | ||||||
|               return h("Badge", { |               return h("Tag", {props: {color: "green",},},"通过"); | ||||||
|                 props: { status: "success", text: "审核通过" }, |  | ||||||
|               }); |  | ||||||
|             } else if (params.row.distributionStatus == "APPLY") { |             } else if (params.row.distributionStatus == "APPLY") { | ||||||
|               return h("Badge", { |               return h("Tag", {props: {color: "geekblue",},},"待审核"); | ||||||
|                 props: { status: "processing", text: "申请中" }, |  | ||||||
|               }); |  | ||||||
|             } else if (params.row.distributionStatus == "RETREAT") { |             } else if (params.row.distributionStatus == "RETREAT") { | ||||||
|               return h("Badge", { |               return h("Tag", {props: {color: "volcano",},},"清退"); | ||||||
|                 props: { status: "warning", text: "已清退" }, |  | ||||||
|               }); |  | ||||||
|             } else if (params.row.distributionStatus == "REFUSE") { |             } else if (params.row.distributionStatus == "REFUSE") { | ||||||
|               return h("Badge", { |               return h("Tag", {props: {color: "red",},},"拒绝"); | ||||||
|                 props: { status: "error", text: "审核拒绝" }, |  | ||||||
|               }); |  | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  |  | ||||||
|  | @ -67,10 +67,12 @@ export default { | ||||||
|         { |         { | ||||||
|           type: "selection", |           type: "selection", | ||||||
|           width: 60, |           width: 60, | ||||||
|           align: "center" |           align: "center", | ||||||
|  |           fixed: "left", | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: "商品图片", |           title: "商品图片", | ||||||
|  |           fixed: "left", | ||||||
|           key: "thumbnail", |           key: "thumbnail", | ||||||
|           width: 120, |           width: 120, | ||||||
|           align: "center", |           align: "center", | ||||||
|  |  | ||||||
|  | @ -38,6 +38,12 @@ | ||||||
|               <Option value="DOWN">下架</Option> |               <Option value="DOWN">下架</Option> | ||||||
|             </Select> |             </Select> | ||||||
|           </Form-item> |           </Form-item> | ||||||
|  |           <Form-item label="商品类型" prop="status"> | ||||||
|  |             <Select v-model="searchForm.goodsType" placeholder="请选择" clearable style="width: 200px"> | ||||||
|  |               <Option value="PHYSICAL_GOODS">实物商品</Option> | ||||||
|  |               <Option value="VIRTUAL_GOODS">虚拟商品</Option> | ||||||
|  |             </Select> | ||||||
|  |           </Form-item> | ||||||
|           <Button @click="handleSearch" class="search-btn" type="primary" icon="ios-search" >搜索</Button> |           <Button @click="handleSearch" class="search-btn" type="primary" icon="ios-search" >搜索</Button> | ||||||
|         </Form> |         </Form> | ||||||
|       </Row> |       </Row> | ||||||
|  | @ -174,29 +180,29 @@ export default { | ||||||
|             ); |             ); | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  |         { | ||||||
|  |           title: "商品类型", | ||||||
|  |           key: "goodsType", | ||||||
|  |           width: 130, | ||||||
|  |           render: (h, params) => { | ||||||
|  |             if (params.row.goodsType === 'PHYSICAL_GOODS') { | ||||||
|  |               return h("Tag", {props: {color: "green",},}, "实物商品"); | ||||||
|  |             } else if (params.row.goodsType === 'VIRTUAL_GOODS') { | ||||||
|  |               return h("Tag", {props: {color: "volcano",},}, "虚拟商品"); | ||||||
|  |             } else { | ||||||
|  |               return h("Tag", {props: {color: "geekblue",},}, "电子卡券"); | ||||||
|  |             } | ||||||
|  |           }, | ||||||
|  |         }, | ||||||
|         { |         { | ||||||
|           title: "状态", |           title: "状态", | ||||||
|           key: "marketEnable", |           key: "marketEnable", | ||||||
|           width: 100, |           width: 100, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.marketEnable == "DOWN") { |             if (params.row.marketEnable == "DOWN") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "green"},},"上架"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "error", |  | ||||||
|                     text: "下架", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.marketEnable == "UPPER") { |             } else if (params.row.marketEnable == "UPPER") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "volcano",},},"下架"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "success", |  | ||||||
|                     text: "上架", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  | @ -206,36 +212,14 @@ export default { | ||||||
|           width: 130, |           width: 130, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.isAuth == "TOBEAUDITED") { |             if (params.row.isAuth == "TOBEAUDITED") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "volcano",},},"待审核"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "error", |  | ||||||
|                     text: "待审核", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.isAuth == "PASS") { |             } else if (params.row.isAuth == "PASS") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "green"},},"通过"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "success", |  | ||||||
|                     text: "审核通过", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.isAuth == "REFUSE") { |             } else if (params.row.isAuth == "REFUSE") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "red",},},"拒绝"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "error", |  | ||||||
|                     text: "审核拒绝", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
| 
 |  | ||||||
|         { |         { | ||||||
|           title: "店铺名称", |           title: "店铺名称", | ||||||
|           key: "storeName", |           key: "storeName", | ||||||
|  |  | ||||||
|  | @ -113,23 +113,9 @@ export default { | ||||||
|           align: "left", |           align: "left", | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.deleteFlag == 0) { |             if (params.row.deleteFlag == 0) { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "green",},},"启用"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "success", |  | ||||||
|                     text: "启用", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.deleteFlag == 1) { |             } else if (params.row.deleteFlag == 1) { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "volcano",},},"禁用"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "error", |  | ||||||
|                     text: "禁用", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|           filters: [ |           filters: [ | ||||||
|  |  | ||||||
|  | @ -261,7 +261,6 @@ export default { | ||||||
|       getCategorySpecListData(v.id).then((res) => { |       getCategorySpecListData(v.id).then((res) => { | ||||||
|         this.categoryId = v.id; |         this.categoryId = v.id; | ||||||
|         this.modalSpecTitle = "规格关联"; |         this.modalSpecTitle = "规格关联"; | ||||||
|         console.log(res); |  | ||||||
|         this.specForm.categorySpecs = res.map((item) => item.id); |         this.specForm.categorySpecs = res.map((item) => item.id); | ||||||
|         this.modalSpecVisible = true; |         this.modalSpecVisible = true; | ||||||
|       }); |       }); | ||||||
|  |  | ||||||
|  | @ -23,8 +23,8 @@ | ||||||
|         </Form> |         </Form> | ||||||
|       </Row> |       </Row> | ||||||
|       <Row class="operation padding-row"> |       <Row class="operation padding-row"> | ||||||
|         <Button @click="add" type="primary" >添加</Button> |         <Button @click="add" type="primary">添加</Button> | ||||||
|         <Button @click="delAll" >批量删除</Button> |         <Button @click="delAll">批量删除</Button> | ||||||
|       </Row> |       </Row> | ||||||
|       <Table |       <Table | ||||||
|         :loading="loading" |         :loading="loading" | ||||||
|  | @ -60,53 +60,33 @@ | ||||||
|     > |     > | ||||||
|       <Form ref="form" :model="form" :label-width="100" :rules="formValidate"> |       <Form ref="form" :model="form" :label-width="100" :rules="formValidate"> | ||||||
|         <FormItem label="规格名称" prop="specName"> |         <FormItem label="规格名称" prop="specName"> | ||||||
|           <Input v-model="form.specName" maxlength="30" clearable style="width: 100%" /> |           <Input v-model="form.specName" maxlength="30" clearable style="width: 100%"/> | ||||||
|  |         </FormItem> | ||||||
|  |         <FormItem label="规格值" prop="specValue"> | ||||||
|  |           <Select | ||||||
|  |             v-model="form.specValue" | ||||||
|  |             placeholder="输入后回车添加" | ||||||
|  |             multiple | ||||||
|  |             filterable | ||||||
|  |             allow-create | ||||||
|  |             :popper-append-to-body="false" | ||||||
|  |             popper-class="spec-values-popper" | ||||||
|  |             style="width: 100%; text-align: left; margin-right: 10px" | ||||||
|  |           > | ||||||
|  |             <Option | ||||||
|  |               v-for="item in specValue" | ||||||
|  |               :value="item" | ||||||
|  |               :label="item" | ||||||
|  |             > | ||||||
|  |             </Option> | ||||||
|  |           </Select> | ||||||
|         </FormItem> |         </FormItem> | ||||||
|       </Form> |       </Form> | ||||||
|       <div slot="footer"> |       <div slot="footer"> | ||||||
|         <Button type="text" @click="modalVisible = false">取消</Button> |         <Button type="text" @click="modalVisible = false">取消</Button> | ||||||
|         <Button type="primary" :loading="submitLoading" @click="saveSpec" |         <Button type="primary" :loading="submitLoading" @click="saveSpec" | ||||||
|           >提交</Button |         >提交 | ||||||
|         > |         </Button | ||||||
|       </div> |  | ||||||
|     </Modal> |  | ||||||
|     <Modal |  | ||||||
|       :title="modalTitle" |  | ||||||
|       v-model="dialogSpecValuesVisible" |  | ||||||
|       :mask-closable="false" |  | ||||||
|       :width="500" |  | ||||||
|       :styles="{ top: '30px' }" |  | ||||||
|       class="permModal" |  | ||||||
|     > |  | ||||||
|       <Form ref="specForm" :model="specForm" :label-width="100"> |  | ||||||
|         <Select |  | ||||||
|           v-model="specForm.specValue" |  | ||||||
|           placeholder="输入后回车添加" |  | ||||||
|           multiple |  | ||||||
|           filterable |  | ||||||
|           allow-create |  | ||||||
|           :popper-append-to-body="false" |  | ||||||
|           popper-class="spec-values-popper" |  | ||||||
|           style="width: 100%; text-align: left; margin-right: 10px" |  | ||||||
|         > |  | ||||||
|           <Option |  | ||||||
|             v-for="item in specValues" |  | ||||||
|             :value="item.specValue" |  | ||||||
|             :key="item.id" |  | ||||||
|             :label="item.specValue" |  | ||||||
|           > |  | ||||||
|           </Option> |  | ||||||
|         </Select> |  | ||||||
|       </Form> |  | ||||||
|       <div slot="footer"> |  | ||||||
|         <Button type="text" @click="dialogSpecValuesVisible = false" |  | ||||||
|           >取消</Button |  | ||||||
|         > |  | ||||||
|         <Button |  | ||||||
|           type="primary" |  | ||||||
|           :loading="submitLoading" |  | ||||||
|           @click="submitSpecValuesForm" |  | ||||||
|           >提交</Button |  | ||||||
|         > |         > | ||||||
|       </div> |       </div> | ||||||
|     </Modal> |     </Modal> | ||||||
|  | @ -118,10 +98,9 @@ import { | ||||||
|   getSpecListData, |   getSpecListData, | ||||||
|   insertSpec, |   insertSpec, | ||||||
|   updateSpec, |   updateSpec, | ||||||
|   delSpec, |   delSpec | ||||||
|   getSpecValuesListData, |  | ||||||
|   saveSpecValues, |  | ||||||
| } from "@/api/goods"; | } from "@/api/goods"; | ||||||
|  | 
 | ||||||
| export default { | export default { | ||||||
|   name: "spec", |   name: "spec", | ||||||
|   components: {}, |   components: {}, | ||||||
|  | @ -131,7 +110,6 @@ export default { | ||||||
|       modalType: 0, // 添加或编辑标识 |       modalType: 0, // 添加或编辑标识 | ||||||
|       modalVisible: false, // 添加或编辑显示 |       modalVisible: false, // 添加或编辑显示 | ||||||
|       modalTitle: "", // 添加或编辑标题 |       modalTitle: "", // 添加或编辑标题 | ||||||
|       dialogSpecValuesVisible: false, // 添加或编辑规格值 |  | ||||||
|       specTitle: "", // 添加或编辑规格值 |       specTitle: "", // 添加或编辑规格值 | ||||||
|       searchForm: { |       searchForm: { | ||||||
|         // 搜索框初始化对象 |         // 搜索框初始化对象 | ||||||
|  | @ -145,9 +123,8 @@ export default { | ||||||
|         specName: "", |         specName: "", | ||||||
|         specValue: "", |         specValue: "", | ||||||
|       }, |       }, | ||||||
|       specForm: {}, |  | ||||||
|       /** 编辑规格值 */ |       /** 编辑规格值 */ | ||||||
|       specValues: [], |       specValue: [], | ||||||
|       // 表单验证规则 |       // 表单验证规则 | ||||||
|       formValidate: {}, |       formValidate: {}, | ||||||
|       submitLoading: false, // 添加或编辑提交状态 |       submitLoading: false, // 添加或编辑提交状态 | ||||||
|  | @ -179,24 +156,7 @@ export default { | ||||||
|           width: 250, |           width: 250, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             return h("div", [ |             return h("div", [ | ||||||
|               h( | 
 | ||||||
|                 "Button", |  | ||||||
|                 { |  | ||||||
|                   props: { |  | ||||||
|                     type: "primary", |  | ||||||
|                     size: "small", |  | ||||||
|                   }, |  | ||||||
|                   style: { |  | ||||||
|                     marginRight: "5px", |  | ||||||
|                   }, |  | ||||||
|                   on: { |  | ||||||
|                     click: () => { |  | ||||||
|                       this.editSpec(params.row); |  | ||||||
|                     }, |  | ||||||
|                   }, |  | ||||||
|                 }, |  | ||||||
|                 "编辑规格值" |  | ||||||
|               ), |  | ||||||
|               h( |               h( | ||||||
|                 "Button", |                 "Button", | ||||||
|                 { |                 { | ||||||
|  | @ -239,23 +199,28 @@ export default { | ||||||
|     }; |     }; | ||||||
|   }, |   }, | ||||||
|   methods: { |   methods: { | ||||||
|  |     //初始化,获取数据 | ||||||
|     init() { |     init() { | ||||||
|       this.getDataList(); |       this.getDataList(); | ||||||
|     }, |     }, | ||||||
|  |     //修改分页 | ||||||
|     changePage(v) { |     changePage(v) { | ||||||
|       this.searchForm.pageNumber = v; |       this.searchForm.pageNumber = v; | ||||||
|       this.getDataList(); |       this.getDataList(); | ||||||
|       this.clearSelectAll(); |       this.clearSelectAll(); | ||||||
|     }, |     }, | ||||||
|  |     //修改页面大小 | ||||||
|     changePageSize(v) { |     changePageSize(v) { | ||||||
|       this.searchForm.pageSize = v; |       this.searchForm.pageSize = v; | ||||||
|       this.getDataList(); |       this.getDataList(); | ||||||
|     }, |     }, | ||||||
|  |     //搜索参数 | ||||||
|     handleSearch() { |     handleSearch() { | ||||||
|       this.searchForm.pageNumber = 1; |       this.searchForm.pageNumber = 1; | ||||||
|       this.searchForm.pageSize = 10; |       this.searchForm.pageSize = 10; | ||||||
|       this.getDataList(); |       this.getDataList(); | ||||||
|     }, |     }, | ||||||
|  |     //重置搜索参数 | ||||||
|     handleReset() { |     handleReset() { | ||||||
|       this.$refs.searchForm.resetFields(); |       this.$refs.searchForm.resetFields(); | ||||||
|       this.searchForm.pageNumber = 1; |       this.searchForm.pageNumber = 1; | ||||||
|  | @ -263,6 +228,7 @@ export default { | ||||||
|       // 重新加载数据 |       // 重新加载数据 | ||||||
|       this.getDataList(); |       this.getDataList(); | ||||||
|     }, |     }, | ||||||
|  |     //更改排序 | ||||||
|     changeSort(e) { |     changeSort(e) { | ||||||
|       this.searchForm.sort = e.key; |       this.searchForm.sort = e.key; | ||||||
|       this.searchForm.order = e.order; |       this.searchForm.order = e.order; | ||||||
|  | @ -271,36 +237,27 @@ export default { | ||||||
|       } |       } | ||||||
|       this.getDataList(); |       this.getDataList(); | ||||||
|     }, |     }, | ||||||
|  |     //清除已选择 | ||||||
|     clearSelectAll() { |     clearSelectAll() { | ||||||
|       this.$refs.table.selectAll(false); |       this.$refs.table.selectAll(false); | ||||||
|     }, |     }, | ||||||
|  |     //修改已选择 | ||||||
|     changeSelect(e) { |     changeSelect(e) { | ||||||
|       this.selectList = e; |       this.selectList = e; | ||||||
|       this.selectCount = e.length; |       this.selectCount = e.length; | ||||||
|     }, |     }, | ||||||
|  |     //获取数据 | ||||||
|     getDataList() { |     getDataList() { | ||||||
|       this.loading = true; |       this.loading = true; | ||||||
|       // 带多条件搜索参数获取表单数据 请自行修改接口 |       // 带多条件搜索参数获取表单数据 请自行修改接口 | ||||||
|       getSpecListData(this.searchForm).then((res) => { |       getSpecListData(this.searchForm).then((res) => { | ||||||
|         this.loading = false; |         this.loading = false; | ||||||
|         if (res.success) { |         this.data = res.records; | ||||||
|           this.data = res.result.records; |         this.total = res.total; | ||||||
|           this.total = res.result.total; |  | ||||||
|         } |  | ||||||
|       }); |       }); | ||||||
|       this.loading = false; |       this.loading = false; | ||||||
|     }, |     }, | ||||||
|     submitSpecValuesForm() { |     //新增规格 | ||||||
|       saveSpecValues(this.specForm.specId, this.specForm).then((res) => { |  | ||||||
|         this.submitLoading = false; |  | ||||||
|         if (res.success) { |  | ||||||
|           this.$Message.success("规格值保存成功"); |  | ||||||
|           this.getDataList(); |  | ||||||
|           this.modalVisible = false; |  | ||||||
|           this.dialogSpecValuesVisible = false; |  | ||||||
|         } |  | ||||||
|       }); |  | ||||||
|     }, |  | ||||||
|     saveSpec() { |     saveSpec() { | ||||||
|       this.$refs.form.validate((valid) => { |       this.$refs.form.validate((valid) => { | ||||||
|         if (valid) { |         if (valid) { | ||||||
|  | @ -318,7 +275,7 @@ export default { | ||||||
|             }); |             }); | ||||||
|           } else { |           } else { | ||||||
|             // 编辑 |             // 编辑 | ||||||
|             updateSpec(this.form).then((res) => { |             updateSpec(this.form.id, this.form).then((res) => { | ||||||
|               this.submitLoading = false; |               this.submitLoading = false; | ||||||
|               if (res.success) { |               if (res.success) { | ||||||
|                 this.$Message.success("操作成功"); |                 this.$Message.success("操作成功"); | ||||||
|  | @ -330,6 +287,7 @@ export default { | ||||||
|         } |         } | ||||||
|       }); |       }); | ||||||
|     }, |     }, | ||||||
|  |     //弹出添加框 | ||||||
|     add() { |     add() { | ||||||
|       this.modalType = 0; |       this.modalType = 0; | ||||||
|       this.modalTitle = "添加"; |       this.modalTitle = "添加"; | ||||||
|  | @ -337,31 +295,31 @@ export default { | ||||||
|       delete this.form.id; |       delete this.form.id; | ||||||
|       this.modalVisible = true; |       this.modalVisible = true; | ||||||
|     }, |     }, | ||||||
|  |     //弹出编辑框 | ||||||
|     edit(v) { |     edit(v) { | ||||||
|       this.modalType = 1; |       this.modalType = 1; | ||||||
|       this.modalTitle = "编辑"; |       this.modalTitle = "编辑"; | ||||||
|       this.$refs.form.resetFields(); |  | ||||||
|       // 转换null为"" |       // 转换null为"" | ||||||
|       for (let attr in v) { |       for (let attr in v) { | ||||||
|         if (v[attr] === null) { |         if (v[attr] === null) { | ||||||
|           v[attr] = ""; |           v[attr] = ""; | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|       let str = JSON.stringify(v); |       let localVal = v.specValue; | ||||||
|       let data = JSON.parse(str); | 
 | ||||||
|       this.form = data; |       this.form.specName = v.specName; | ||||||
|  |       this.form.id = v.id; | ||||||
|  |       this.form.specValue = v.specValue; | ||||||
|  | 
 | ||||||
|  |       if (localVal && localVal.indexOf("," > 0)) { | ||||||
|  |         this.form.specValue = localVal.split(",") | ||||||
|  |         this.specValue = this.form.specValue | ||||||
|  |         this.$set(this, 'specValue', this.form.specValue) | ||||||
|  |       } else { | ||||||
|  |         this.specValue = []; | ||||||
|  |       } | ||||||
|       this.modalVisible = true; |       this.modalVisible = true; | ||||||
|     }, |     }, | ||||||
|     editSpec(v) { |  | ||||||
|       getSpecValuesListData(v.id).then((res) => { |  | ||||||
|         this.modalType = 1; |  | ||||||
|         this.modalTitle = "编辑"; |  | ||||||
|         this.specValues = res.result; |  | ||||||
|         this.specForm.specValue = res.result.map(item => item.specValue) |  | ||||||
|         this.specForm.specId = v.id; |  | ||||||
|         this.dialogSpecValuesVisible = true; |  | ||||||
|       }); |  | ||||||
|     }, |  | ||||||
|     remove(v) { |     remove(v) { | ||||||
|       this.$Modal.confirm({ |       this.$Modal.confirm({ | ||||||
|         title: "确认删除", |         title: "确认删除", | ||||||
|  | @ -415,5 +373,5 @@ export default { | ||||||
| }; | }; | ||||||
| </script> | </script> | ||||||
| <style lang="scss"> | <style lang="scss"> | ||||||
|   @import "@/styles/table-common.scss"; | @import "@/styles/table-common.scss"; | ||||||
| </style> | </style> | ||||||
|  |  | ||||||
|  | @ -135,35 +135,11 @@ export default { | ||||||
|           width: 90, |           width: 90, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.grade == "GOOD") { |             if (params.row.grade == "GOOD") { | ||||||
|               return h( |               return h("Tag", {props: {color: "green",},}, "好评"); | ||||||
|                 "Tag", |  | ||||||
|                 { |  | ||||||
|                   props: { |  | ||||||
|                     color: "success", |  | ||||||
|                   }, |  | ||||||
|                 }, |  | ||||||
|                 "好评" |  | ||||||
|               ); |  | ||||||
|             } else if (params.row.grade == "MODERATE") { |             } else if (params.row.grade == "MODERATE") { | ||||||
|               return h( |               return h("Tag", {props: {color: "orange",},}, "中评"); | ||||||
|                 "Tag", |  | ||||||
|                 { |  | ||||||
|                   props: { |  | ||||||
|                     color: "warning", |  | ||||||
|                   }, |  | ||||||
|                 }, |  | ||||||
|                 "中评" |  | ||||||
|               ); |  | ||||||
|             } else { |             } else { | ||||||
|               return h( |               return h("Tag", {props: {color: "red",},}, "差评"); | ||||||
|                 "Tag", |  | ||||||
|                 { |  | ||||||
|                   props: { |  | ||||||
|                     color: "error", |  | ||||||
|                   }, |  | ||||||
|                 }, |  | ||||||
|                 "差评" |  | ||||||
|               ); |  | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ | ||||||
|     <Row type="flex" justify="center" class="copyright"> |     <Row type="flex" justify="center" class="copyright"> | ||||||
|       Copyright © 2020 - Present |       Copyright © 2020 - Present | ||||||
|       <a |       <a | ||||||
|         href="http://lili.cn" |         href="https://pickmall.cn/" | ||||||
|         target="_blank" |         target="_blank" | ||||||
|         style="margin:0 5px;" |         style="margin:0 5px;" | ||||||
|       >lili-shop</a> {{ $t('rights') }} |       >lili-shop</a> {{ $t('rights') }} | ||||||
|  |  | ||||||
|  | @ -131,23 +131,9 @@ | ||||||
|             sortable: false, |             sortable: false, | ||||||
|             render: (h, params) => { |             render: (h, params) => { | ||||||
|               if (params.row.payStatus == "PAID") { |               if (params.row.payStatus == "PAID") { | ||||||
|                 return h("div", [ |                 return h("Tag", {props: {color: "green",},}, "已付款"); | ||||||
|                   h("Badge", { |               } else { | ||||||
|                     props: { |                 return h("Tag", {props: {color: "red",},}, "未付款"); | ||||||
|                       status: "success", |  | ||||||
|                       text: "已付款", |  | ||||||
|                     }, |  | ||||||
|                   }), |  | ||||||
|                 ]); |  | ||||||
|               } else if (params.row.payStatus == "UNPAID") { |  | ||||||
|                 return h("div", [ |  | ||||||
|                   h("Badge", { |  | ||||||
|                     props: { |  | ||||||
|                       status: "error", |  | ||||||
|                       text: "未付款", |  | ||||||
|                     }, |  | ||||||
|                   }), |  | ||||||
|                 ]); |  | ||||||
|               } |               } | ||||||
|             }, |             }, | ||||||
|           }, |           }, | ||||||
|  |  | ||||||
|  | @ -1,47 +1,48 @@ | ||||||
| <template> | <template> | ||||||
|   <div> |   <div> | ||||||
|     <vuedraggable |     <div class="upload-pic-thumb"> | ||||||
|       :list="uploadList" |       <vuedraggable | ||||||
|       :disabled="!draggable||!multiple" |         :list="uploadList" | ||||||
|       :animation="200" |         :disabled="!draggable||!multiple" | ||||||
|       class="list-group" |         :animation="200" | ||||||
|       ghost-class="thumb-ghost" |         class="list-group" | ||||||
|       @end="onEnd" |         ghost-class="thumb-ghost" | ||||||
|     > |         @end="onEnd" | ||||||
|       <div class="upload-list" v-for="(item, index) in uploadList" :key="index"> |       > | ||||||
|         <div v-if="item.status == 'finished'" style="height:60px;"> |         <div class="upload-list" v-for="(item, index) in uploadList" :key="index"> | ||||||
|           <img :src="item.url" /> |           <div v-if="item.status == 'finished'" style="height:60px;"> | ||||||
|           <div class="upload-list-cover"> |             <img :src="item.url" /> | ||||||
|             <Icon type="ios-eye-outline" @click="handleView(item.url)"></Icon> |             <div class="upload-list-cover"> | ||||||
|             <Icon type="ios-trash-outline" @click="handleRemove(item)"></Icon> |               <Icon type="ios-eye-outline" @click="handleView(item.url)"></Icon> | ||||||
|  |               <Icon type="ios-trash-outline" @click="handleRemove(item)"></Icon> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |           <div v-else> | ||||||
|  |             <Progress v-if="item.showProgress" :percent="item.percentage" hide-info></Progress> | ||||||
|           </div> |           </div> | ||||||
|         </div> |         </div> | ||||||
|         <div v-else> |       </vuedraggable> | ||||||
|           <Progress v-if="item.showProgress" :percent="item.percentage" hide-info></Progress> |       <Upload | ||||||
|  |         ref="upload" | ||||||
|  |         :multiple="multiple" | ||||||
|  |         :show-upload-list="false" | ||||||
|  |         :on-success="handleSuccess" | ||||||
|  |         :on-error="handleError" | ||||||
|  |         :format="['jpg','jpeg','png','gif']" | ||||||
|  |         :max-size="maxSize*1024" | ||||||
|  |         :on-format-error="handleFormatError" | ||||||
|  |         :on-exceeded-size="handleMaxSize" | ||||||
|  |         :before-upload="handleBeforeUpload" | ||||||
|  |         type="drag" | ||||||
|  |         :action="uploadFileUrl" | ||||||
|  |         :headers="accessToken" | ||||||
|  |         style="display: inline-block;width:58px;" | ||||||
|  |       > | ||||||
|  |         <div style="width: 58px;height:58px;line-height: 58px;"> | ||||||
|  |           <Icon type="md-camera" size="20"></Icon> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </Upload> | ||||||
|     </vuedraggable> |     </div> | ||||||
|     <Upload |  | ||||||
|       ref="upload" |  | ||||||
|       :multiple="multiple" |  | ||||||
|       :show-upload-list="false" |  | ||||||
|       :on-success="handleSuccess" |  | ||||||
|       :on-error="handleError" |  | ||||||
|       :format="['jpg','jpeg','png','gif']" |  | ||||||
|       :max-size="maxSize*1024" |  | ||||||
|       :on-format-error="handleFormatError" |  | ||||||
|       :on-exceeded-size="handleMaxSize" |  | ||||||
|       :before-upload="handleBeforeUpload" |  | ||||||
|       type="drag" |  | ||||||
|       :action="uploadFileUrl" |  | ||||||
|       :headers="accessToken" |  | ||||||
|       style="display: inline-block;width:58px;" |  | ||||||
|     > |  | ||||||
|       <div style="width: 58px;height:58px;line-height: 58px;"> |  | ||||||
|         <Icon type="md-camera" size="20"></Icon> |  | ||||||
|       </div> |  | ||||||
|     </Upload> |  | ||||||
| 
 |  | ||||||
|     <Modal title="图片预览" v-model="viewImage" :styles="{top: '30px'}" draggable> |     <Modal title="图片预览" v-model="viewImage" :styles="{top: '30px'}" draggable> | ||||||
|       <img :src="imgUrl" alt="无效的图片链接" style="width: 100%;margin: 0 auto;display: block;" /> |       <img :src="imgUrl" alt="无效的图片链接" style="width: 100%;margin: 0 auto;display: block;" /> | ||||||
|       <div slot="footer"> |       <div slot="footer"> | ||||||
|  | @ -242,6 +243,9 @@ export default { | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
| <style lang="scss" scoped> | <style lang="scss" scoped> | ||||||
|  | .upload-pic-thumb{ | ||||||
|  |   display: flex; | ||||||
|  | } | ||||||
| .upload-list { | .upload-list { | ||||||
|   display: inline-block; |   display: inline-block; | ||||||
|   width: 60px; |   width: 60px; | ||||||
|  | @ -255,6 +259,7 @@ export default { | ||||||
|   position: relative; |   position: relative; | ||||||
|   box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); |   box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); | ||||||
|   margin-right: 5px; |   margin-right: 5px; | ||||||
|  |   vertical-align: middle; | ||||||
| } | } | ||||||
| .upload-list img { | .upload-list img { | ||||||
|   width: 100%; |   width: 100%; | ||||||
|  |  | ||||||
|  | @ -98,14 +98,14 @@ export default { | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   created () { |   created () { | ||||||
|     this.getImg(); |     // this.getImg(); | ||||||
|   }, |   }, | ||||||
|   watch: { |   watch: { | ||||||
|     verifyType: { |     verifyType: { | ||||||
|       immediate: true, |       immediate: true, | ||||||
|       handler: function (v) { |       handler: function (v) { | ||||||
|         this.type = v; |         this.type = v; | ||||||
|         this.refresh(); |         // this.refresh(); | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     show (v) { |     show (v) { | ||||||
|  |  | ||||||
|  | @ -216,11 +216,11 @@ | ||||||
|             width: 100, |             width: 100, | ||||||
|             render: (h, params) => { |             render: (h, params) => { | ||||||
|               if (params.row.serviceType == "RETURN_MONEY") { |               if (params.row.serviceType == "RETURN_MONEY") { | ||||||
|                 return h('div', [h('span', {}, '退款'),]); |                 return h('div', [h('tag', {props: {color: "blue"}}, '退款'),]); | ||||||
|               } else if (params.row.serviceType == "RETURN_GOODS") { |               } else if (params.row.serviceType == "RETURN_GOODS") { | ||||||
|                 return h('div', [h('span', {}, '退货'),]); |                 return h('div', [h('tag', {props: {color: "volcano"}}, '退货'),]); | ||||||
|               } else if (params.row.serviceType == "EXCHANGE_GOODS") { |               } else if (params.row.serviceType == "EXCHANGE_GOODS") { | ||||||
|                 return h('div', [h('span', {}, '换货'),]); |                 return h('div', [h('tag', {props: {color: "green"}}, '换货'),]); | ||||||
|               } |               } | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|  | @ -231,27 +231,23 @@ | ||||||
|             width: 110, |             width: 110, | ||||||
|             render: (h, params) => { |             render: (h, params) => { | ||||||
|               if (params.row.serviceStatus == "APPLY") { |               if (params.row.serviceStatus == "APPLY") { | ||||||
|                 return h('div', [h('span', {}, '申请中'),]); |                 return h('div', [h('tag', {props: {color: "blue"}}, '申请中'),]); | ||||||
|               } else if (params.row.serviceStatus == "PASS") { |               } else if (params.row.serviceStatus == "PASS") { | ||||||
|                 return h('div', [h('span', {}, '通过售后'),]); |                 return h('div', [h('tag', {props: {color: "cyan"}}, '通过售后'),]); | ||||||
|               } else if (params.row.serviceStatus == "REFUSE") { |               } else if (params.row.serviceStatus == "REFUSE") { | ||||||
|                 return h('div', [h('span', {}, '拒绝售后'),]); |                 return h('div', [h('tag', {props: {color: "volcano"}}, '拒绝售后'),]); | ||||||
|               } else if (params.row.serviceStatus == "BUYER_RETURN") { |               } else if (params.row.serviceStatus == "BUYER_RETURN") { | ||||||
|                 return h('div', [h('span', {}, '买家退货,待卖家收货'),]); |                 return h('div', [h('tag', {props: {color: "orange"}}, '买家退货,待卖家收货'),]); | ||||||
|               } else if (params.row.serviceStatus == "SELLER_RE_DELIVERY") { |  | ||||||
|                 return h('div', [h('span', {}, '商家换货/补发'),]); |  | ||||||
|               } else if (params.row.serviceStatus == "SELLER_CONFIRM") { |               } else if (params.row.serviceStatus == "SELLER_CONFIRM") { | ||||||
|                 return h('div', [h('span', {}, '卖家确认收货'),]); |                 return h('div', [h('tag', {props: {color: "gold"}}, '卖家确认收货'),]); | ||||||
|               } else if (params.row.serviceStatus == "SELLER_TERMINATION") { |               } else if (params.row.serviceStatus == "SELLER_TERMINATION") { | ||||||
|                 return h('div', [h('span', {}, '卖家终止售后'),]); |                 return h('div', [h('tag', {props: {color: "lime"}}, '卖家终止售后'),]); | ||||||
|               } else if (params.row.serviceStatus == "BUYER_CONFIRM") { |  | ||||||
|                 return h('div', [h('span', {}, '买家确认收货'),]); |  | ||||||
|               } else if (params.row.serviceStatus == "BUYER_CANCEL") { |               } else if (params.row.serviceStatus == "BUYER_CANCEL") { | ||||||
|                 return h('div', [h('span', {}, '买家取消售后'),]); |                 return h('div', [h('tag', {props: {color: "purple"}}, '买家取消售后'),]); | ||||||
|               } else if (params.row.serviceStatus == "COMPLETE") { |               } else if (params.row.serviceStatus == "COMPLETE") { | ||||||
|                 return h('div', [h('span', {}, '完成售后'),]); |                 return h('div', [h('tag', {props: {color: "green"}}, '完成售后'),]); | ||||||
|               }else if (params.row.serviceStatus == "WAIT_REFUND") { |               }else if (params.row.serviceStatus == "WAIT_REFUND") { | ||||||
|                 return h('div', [h('span', {}, '待平台退款'),]); |                 return h('div', [h('tag', {props: {color: "geekblue"}}, '待平台退款'),]); | ||||||
|               } |               } | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|  |  | ||||||
|  | @ -191,17 +191,17 @@ | ||||||
|             width: 100, |             width: 100, | ||||||
|             render: (h, params) => { |             render: (h, params) => { | ||||||
|               if (params.row.complainStatus == "NEW") { |               if (params.row.complainStatus == "NEW") { | ||||||
|                 return h('div', [h('span', { }, '新投诉'),]); |                 return h('div', [h('tag',{props: {color: "purple"}}, '新投诉'),]); | ||||||
|               } else if (params.row.complainStatus == "CANCEL") { |               } else if (params.row.complainStatus == "CANCEL") { | ||||||
|                 return h('div', [h('span', { }, '已撤销'),]); |                 return h('div', [h('tag', {props: {color: "cyan"}}, '已撤销'),]); | ||||||
|               } else if (params.row.complainStatus == "WAIT_APPEAL") { |               } else if (params.row.complainStatus == "WAIT_APPEAL") { | ||||||
|                 return h('div', [h('span', { }, '待申诉'),]); |                 return h('div', [h('tag', {props: {color: "volcano"}}, '待申诉'),]); | ||||||
|               } else if (params.row.complainStatus == "COMMUNICATION") { |               } else if (params.row.complainStatus == "COMMUNICATION") { | ||||||
|                 return h('div', [h('span', { }, '对话中'),]); |                 return h('div', [h('tag', {props: {color: "orange"}}, '对话中'),]); | ||||||
|               }else if (params.row.complainStatus == "WAIT_ARBITRATION") { |               }else if (params.row.complainStatus == "WAIT_ARBITRATION") { | ||||||
|                 return h('div', [h('span', { }, '等待仲裁'),]); |                 return h('div', [h('tag', {props: {color: "blue"}}, '等待仲裁'),]); | ||||||
|               }else if (params.row.complainStatus == "COMPLETE") { |               }else if (params.row.complainStatus == "COMPLETE") { | ||||||
|                 return h('div', [h('span', { }, '已完成'),]); |                 return h('div', [h('tag', {props: {color: "green"}}, '已完成'),]); | ||||||
|               } |               } | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|  |  | ||||||
|  | @ -72,51 +72,13 @@ export default { | ||||||
|           align: "center", |           align: "center", | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.paymentMethod === "WECHAT") { |             if (params.row.paymentMethod === "WECHAT") { | ||||||
|               return h("div", [ |               return h("div", [h("Tag", {props: {color: "green",},}, "微信"),]); | ||||||
|                 h( |  | ||||||
|                   "Tag", |  | ||||||
|                   { |  | ||||||
|                     props: { |  | ||||||
|                       color: "green", |  | ||||||
|                     }, |  | ||||||
|                   }, |  | ||||||
|                   "微信" |  | ||||||
|                 ), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.paymentMethod === "ALIPAY") { |             } else if (params.row.paymentMethod === "ALIPAY") { | ||||||
|               return h("div", [ |               return h("div", [h("Tag", {props: {color: "blue",},}, "支付宝"),]); | ||||||
|                 h( |  | ||||||
|                   "Tag", |  | ||||||
|                   { |  | ||||||
|                     props: { |  | ||||||
|                       color: "blue", |  | ||||||
|                     }, |  | ||||||
|                   }, |  | ||||||
|                   "支付宝" |  | ||||||
|                 ), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.paymentMethod === "WALLET") { |             } else if (params.row.paymentMethod === "WALLET") { | ||||||
|               return h("div", [ |               return h("div", [h("Tag", {props: {color: "geekblue",},}, "余额支付"),]); | ||||||
|                 h( |  | ||||||
|                   "Tag", |  | ||||||
|                   { |  | ||||||
|                     props: {}, |  | ||||||
|                   }, |  | ||||||
|                   "余额支付" |  | ||||||
|                 ), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.paymentMethod === "BANK_TRANSFER") { |             } else if (params.row.paymentMethod === "BANK_TRANSFER") { | ||||||
|               return h("div", [ |               return h("div", [h("Tag", {props: {color: "orange",},}, "银行转帐"),]); | ||||||
|                 h( |  | ||||||
|                   "Tag", |  | ||||||
|                   { |  | ||||||
|                     props: { |  | ||||||
|                       color: "orange", |  | ||||||
|                     }, |  | ||||||
|                   }, |  | ||||||
|                   "银行转帐" |  | ||||||
|                 ), |  | ||||||
|               ]); |  | ||||||
|             } else { |             } else { | ||||||
|               return h("div", [h("Tag", {}, "暂未付款")]); |               return h("div", [h("Tag", {}, "暂未付款")]); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|  | @ -100,9 +100,9 @@ export default { | ||||||
|           width: 95, |           width: 95, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.isRefund == "1") { |             if (params.row.isRefund == "1") { | ||||||
|               return h("div", [h("span", {}, "已退款")]); |               return h("div", [h("Tag", {props: {color: "green",},}, "已退款")]); | ||||||
|             } else { |             } else { | ||||||
|               return h("div", [h("span", {}, "未退款")]); |               return h("div", [h("Tag", {props: {color: "orange",},}, "未退款")]); | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  |  | ||||||
|  | @ -94,8 +94,8 @@ | ||||||
|           // 搜索框初始化对象 |           // 搜索框初始化对象 | ||||||
|           pageNumber: 1, // 当前页数 |           pageNumber: 1, // 当前页数 | ||||||
|           pageSize: 10, // 页面大小 |           pageSize: 10, // 页面大小 | ||||||
|           sort: "createTime", // 默认排序字段 |           sort: "", // 默认排序字段 | ||||||
|           order: "desc", // 默认排序方式 |           order: "", // 默认排序方式 | ||||||
|           startDate: "", // 起始时间 |           startDate: "", // 起始时间 | ||||||
|           endDate: "", // 终止时间 |           endDate: "", // 终止时间 | ||||||
|           orderType: "FICTITIOUS", |           orderType: "FICTITIOUS", | ||||||
|  | @ -118,8 +118,6 @@ | ||||||
|             title: "下单时间", |             title: "下单时间", | ||||||
|             key: "createTime", |             key: "createTime", | ||||||
|             width: 200, |             width: 200, | ||||||
|             sortable: true, |  | ||||||
|             sortType: "desc", |  | ||||||
|           }, |           }, | ||||||
|           { |           { | ||||||
|             title: "订单来源", |             title: "订单来源", | ||||||
|  | @ -150,19 +148,15 @@ | ||||||
|             width:95, |             width:95, | ||||||
|             render: (h, params) => { |             render: (h, params) => { | ||||||
|               if (params.row.orderStatus == "UNPAID") { |               if (params.row.orderStatus == "UNPAID") { | ||||||
|                 return h('div', [h('span', { }, '未付款'),]); |                 return h("div", [h("tag", {props: {color: "magenta"}}, "未付款")]); | ||||||
|               } else if (params.row.orderStatus == "PAID") { |               } else if (params.row.orderStatus == "PAID") { | ||||||
|                 return h('div', [h('span', { }, '已付款'),]); |                 return h("div", [h("tag", {props: {color: "blue"}}, "已付款")]); | ||||||
|               } else if (params.row.orderStatus == "UNDELIVERED") { |               } else if (params.row.orderStatus == "COMPLETED") { | ||||||
|                 return h('div', [h('span', { }, '待发货'),]); |                 return h("div", [h("tag", {props: {color: "green"}}, "已完成")]); | ||||||
|               } else if (params.row.orderStatus == "DELIVERED") { |               } else if (params.row.orderStatus == "TAKE") { | ||||||
|                 return h('div', [h('span', { }, '已发货'),]); |                 return h("div", [h("tag", {props: {color: "volcano"}}, "待核验")]); | ||||||
|               }else if (params.row.orderStatus == "COMPLETED") { |               } else if (params.row.orderStatus == "CANCELLED") { | ||||||
|                 return h('div', [h('span', { }, '已完成'),]); |                 return h("div", [h("tag", {props: {color: "red"}}, "已取消")]); | ||||||
|               }else if (params.row.orderStatus == "TAKE") { |  | ||||||
|                 return h('div', [h('span', { }, '待核验'),]); |  | ||||||
|               }else if (params.row.orderStatus == "CANCELLED") { |  | ||||||
|                 return h('div', [h('span', { }, '已取消'),]); |  | ||||||
|               } |               } | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|  |  | ||||||
|  | @ -37,7 +37,7 @@ | ||||||
|               <div class="div-item"> |               <div class="div-item"> | ||||||
|                 <div class="div-item-left">订单来源:</div> |                 <div class="div-item-left">订单来源:</div> | ||||||
|                 <div class="div-item-right"> |                 <div class="div-item-right"> | ||||||
|                   {{ orderInfo.order.clientType }} |                   {{ orderInfo.order.clientType  | clientTypeWay}} | ||||||
|                 </div> |                 </div> | ||||||
|               </div> |               </div> | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -40,7 +40,7 @@ | ||||||
|       </Row> |       </Row> | ||||||
|       <div> |       <div> | ||||||
|         <download-excel class="export-excel-wrapper" :data="data" :fields="fields" name="商品订单.xls"> |         <download-excel class="export-excel-wrapper" :data="data" :fields="fields" name="商品订单.xls"> | ||||||
|           <Button type="primary" class="export"> |           <Button type="info" class="export"> | ||||||
|             导出Excel |             导出Excel | ||||||
|           </Button> |           </Button> | ||||||
|         </download-excel> |         </download-excel> | ||||||
|  | @ -72,10 +72,6 @@ export default { | ||||||
|         订单编号: "sn", |         订单编号: "sn", | ||||||
|         下单时间: "createTime", |         下单时间: "createTime", | ||||||
|         客户名称: "memberName", |         客户名称: "memberName", | ||||||
|         客户账号: "", |  | ||||||
|         收货人: "", |  | ||||||
|         收货人手机号: "", |  | ||||||
|         收货人地址: "", |  | ||||||
|         支付方式: { |         支付方式: { | ||||||
|           field: "clientType", |           field: "clientType", | ||||||
|           callback: (value) => { |           callback: (value) => { | ||||||
|  | @ -92,15 +88,7 @@ export default { | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|         配送方式: "", |  | ||||||
|         配送费用: "", |  | ||||||
|         订单商品金额: "", |  | ||||||
|         订单优惠金额: "", |  | ||||||
|         订单应付金额: "", |  | ||||||
|         商品SKU编号: "", |  | ||||||
|         商品数量: "groupNum", |         商品数量: "groupNum", | ||||||
|         买家备注: "", |  | ||||||
|         订单状态: "", |  | ||||||
|         付款状态: { |         付款状态: { | ||||||
|           field: "payStatus", |           field: "payStatus", | ||||||
|           callback: (value) => { |           callback: (value) => { | ||||||
|  | @ -111,9 +99,6 @@ export default { | ||||||
|               : ""; |               : ""; | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|         发货状态: "", |  | ||||||
|         发票类型: "", |  | ||||||
|         发票抬头: "", |  | ||||||
|         店铺: "storeName", |         店铺: "storeName", | ||||||
|       }, |       }, | ||||||
|       loading: true, // 表单加载状态 |       loading: true, // 表单加载状态 | ||||||
|  | @ -166,13 +151,13 @@ export default { | ||||||
|           width: 120, |           width: 120, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.orderType == "NORMAL") { |             if (params.row.orderType == "NORMAL") { | ||||||
|               return h("div", [h("span", {}, "普通订单")]); |               return h("div", [h("tag", {props: {color: "blue"}}, "普通订单")]); | ||||||
|             } else if (params.row.orderType == "PINTUAN") { |             } else if (params.row.orderType == "PINTUAN") { | ||||||
|               return h("div", [h("span", {}, "拼团订单")]); |               return h("div", [h("tag", {props: {color: "volcano"}}, "拼团订单")]); | ||||||
|             } else if (params.row.orderType == "GIFT") { |             } else if (params.row.orderType == "GIFT") { | ||||||
|               return h("div", [h("span", {}, "赠品订单")]); |               return h("div", [h("tag", {props: {color: "green"}}, "赠品订单")]); | ||||||
|             } else if (params.row.orderType == "VIRTUAL") { |             } else if (params.row.orderType == "VIRTUAL") { | ||||||
|               return h("div", [h("tag", {}, "核验订单")]); |               return h("div", [h("tag", {props: {color: "geekblue"}}, "核验订单")]); | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  | @ -202,19 +187,19 @@ export default { | ||||||
|           minWidth: 100, |           minWidth: 100, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.orderStatus == "UNPAID") { |             if (params.row.orderStatus == "UNPAID") { | ||||||
|               return h("div", [h("span", {}, "未付款")]); |               return h("div", [h("tag", {props: {color: "magenta"}}, "未付款")]); | ||||||
|             } else if (params.row.orderStatus == "PAID") { |             } else if (params.row.orderStatus == "PAID") { | ||||||
|               return h("div", [h("span", {}, "已付款")]); |               return h("div", [h("tag", {props: {color: "blue"}}, "已付款")]); | ||||||
|             } else if (params.row.orderStatus == "UNDELIVERED") { |             } else if (params.row.orderStatus == "UNDELIVERED") { | ||||||
|               return h("div", [h("span", {}, "待发货")]); |               return h("div", [h("tag", {props: {color: "geekblue"}}, "待发货")]); | ||||||
|             } else if (params.row.orderStatus == "DELIVERED") { |             } else if (params.row.orderStatus == "DELIVERED") { | ||||||
|               return h("div", [h("span", {}, "已发货")]); |               return h("div", [h("tag", {props: {color: "cyan"}}, "已发货")]); | ||||||
|             } else if (params.row.orderStatus == "COMPLETED") { |             } else if (params.row.orderStatus == "COMPLETED") { | ||||||
|               return h("div", [h("span", {}, "已完成")]); |               return h("div", [h("tag", {props: {color: "green"}}, "已完成")]); | ||||||
|             } else if (params.row.orderStatus == "TAKE") { |             } else if (params.row.orderStatus == "TAKE") { | ||||||
|               return h("div", [h("span", {}, "待核验")]); |               return h("div", [h("tag", {props: {color: "volcano"}}, "待核验")]); | ||||||
|             } else if (params.row.orderStatus == "CANCELLED") { |             } else if (params.row.orderStatus == "CANCELLED") { | ||||||
|               return h("div", [h("span", {}, "已取消")]); |               return h("div", [h("tag", {props: {color: "red"}}, "已取消")]); | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  | @ -222,56 +207,23 @@ export default { | ||||||
|           title: "下单时间", |           title: "下单时间", | ||||||
|           key: "createTime", |           key: "createTime", | ||||||
|           width: 170, |           width: 170, | ||||||
|           sortable: true, |  | ||||||
|           sortType: "desc", |  | ||||||
|         }, |         }, | ||||||
| 
 |  | ||||||
|         { |         { | ||||||
|           title: "操作", |           title: "操作", | ||||||
|           key: "action", |           key: "action", | ||||||
|           align: "center", |           align: "center", | ||||||
|           width: 150, |           width: 150, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             return h("div", [ |             return h("div", [h("Button", {props: {type: "primary", size: "small",}, | ||||||
|               h( |                 attrs: {disabled: params.row.orderStatus == "UNPAID" ? false : true,}, | ||||||
|                 "Button", |                 style: {marginRight: "5px",}, | ||||||
| 
 |                 on: {click: () => {this.confirmPrice(params.row);},}, | ||||||
|                 { |                 }, "收款" | ||||||
|                   props: { |  | ||||||
|                     type: "primary", |  | ||||||
|                     size: "small", |  | ||||||
|                   }, |  | ||||||
|                   attrs: { |  | ||||||
|                     disabled: params.row.orderStatus == "UNPAID" ? false : true, |  | ||||||
|                   }, |  | ||||||
|                   style: { |  | ||||||
|                     marginRight: "5px", |  | ||||||
|                   }, |  | ||||||
|                   on: { |  | ||||||
|                     click: () => { |  | ||||||
|                       this.confirmPrice(params.row); |  | ||||||
|                     }, |  | ||||||
|                   }, |  | ||||||
|                 }, |  | ||||||
|                 "收款" |  | ||||||
|               ), |               ), | ||||||
|               h( |               h("Button", {props: {type: "info", size: "small",}, | ||||||
|                 "Button", |                   style: {marginRight: "5px",}, | ||||||
|                 { |                   on: {click: () => {this.detail(params.row);},}, | ||||||
|                   props: { |                 }, "查看" | ||||||
|                     type: "info", |  | ||||||
|                     size: "small", |  | ||||||
|                   }, |  | ||||||
|                   style: { |  | ||||||
|                     marginRight: "5px", |  | ||||||
|                   }, |  | ||||||
|                   on: { |  | ||||||
|                     click: () => { |  | ||||||
|                       this.detail(params.row); |  | ||||||
|                     }, |  | ||||||
|                   }, |  | ||||||
|                 }, |  | ||||||
|                 "查看" |  | ||||||
|               ), |               ), | ||||||
|             ]); |             ]); | ||||||
|           }, |           }, | ||||||
|  |  | ||||||
|  | @ -57,7 +57,7 @@ | ||||||
|                 <Input type="number" v-model="form.sort" clearable style="width: 10%" /> |                 <Input type="number" v-model="form.sort" clearable style="width: 10%" /> | ||||||
|               </FormItem> |               </FormItem> | ||||||
|               <FormItem class="form-item-view-el" label="文章内容" prop="content"> |               <FormItem class="form-item-view-el" label="文章内容" prop="content"> | ||||||
|                 <editor openXss v-model="form.content"></editor> |                 <editor  openXss v-model="form.content"></editor> | ||||||
|               </FormItem> |               </FormItem> | ||||||
|               <FormItem label="是否展示" prop="openStatus"> |               <FormItem label="是否展示" prop="openStatus"> | ||||||
|                 <i-switch size="large" v-model="form.openStatus" :true-value="open" :false-value="close"> |                 <i-switch size="large" v-model="form.openStatus" :true-value="open" :false-value="close"> | ||||||
|  | @ -435,28 +435,13 @@ export default { | ||||||
|           this.form.categoryId = res.result.categoryId; |           this.form.categoryId = res.result.categoryId; | ||||||
|           this.treeValue = data.articleCategoryName; |           this.treeValue = data.articleCategoryName; | ||||||
|           this.form.id = data.id; |           this.form.id = data.id; | ||||||
|           this.form.content = htmlEscape(res.result.content); |           this.form.content =res.result.content; | ||||||
|           this.form.title = res.result.title; |           this.form.title = res.result.title; | ||||||
|           this.form.sort = res.result.sort; |           this.form.sort = res.result.sort; | ||||||
|           this.form.openStatus = res.result.openStatus; |           this.form.openStatus = res.result.openStatus; | ||||||
|         } |         } | ||||||
|       }); |       }); | ||||||
|     }, |     }, | ||||||
| 
 |  | ||||||
|     htmlEscape(text) { |  | ||||||
|       return text.replace(/[<>"&]/g, function (match, pos, originalText) { |  | ||||||
|         switch (match) { |  | ||||||
|           case "<": |  | ||||||
|             return "<"; |  | ||||||
|           case ">": |  | ||||||
|             return ">"; |  | ||||||
|           case "&": |  | ||||||
|             return "&"; |  | ||||||
|           case '"': |  | ||||||
|             return """; |  | ||||||
|         } |  | ||||||
|       }); |  | ||||||
|     }, |  | ||||||
|     remove(v) { |     remove(v) { | ||||||
|       this.$Modal.confirm({ |       this.$Modal.confirm({ | ||||||
|         title: "确认删除", |         title: "确认删除", | ||||||
|  |  | ||||||
|  | @ -101,7 +101,7 @@ export default { | ||||||
|         { |         { | ||||||
|           title: "面额/折扣", |           title: "面额/折扣", | ||||||
|           key: "price", |           key: "price", | ||||||
|           width: 120, |           width: 100, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.price) { |             if (params.row.price) { | ||||||
|               return h( |               return h( | ||||||
|  | @ -117,27 +117,28 @@ export default { | ||||||
|         { |         { | ||||||
|           title: "领取数量/总数量", |           title: "领取数量/总数量", | ||||||
|           key: "publishNum", |           key: "publishNum", | ||||||
|           width: 150, |           width: 130, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             return h( |             return h( | ||||||
|               "div", |               "div", | ||||||
|               params.row.receivedNum + "/" + params.row.publishNum |               params.row.receivedNum + "/" + params.row.publishNum | ||||||
|             ); |             ); | ||||||
|           }, |           }, | ||||||
|           minWidth: 130, | 
 | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: "优惠券类型", |           title: "优惠券类型", | ||||||
|           key: "couponType", |           key: "couponType", | ||||||
|           width: 120, |           width: 120, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             let text = "未知"; |             let text = ""; | ||||||
|             if (params.row.couponType === "DISCOUNT") { |             if (params.row.couponType === "DISCOUNT") { | ||||||
|               text = "打折"; |               return h("Tag", {props: {color: "blue",},}, "打折"); | ||||||
|             } else if (params.row.couponType === "PRICE") { |             } else if (params.row.couponType === "PRICE") { | ||||||
|               text = "减免现金"; |               return h("Tag", {props: {color: "geekblue",},}, "减免现金"); | ||||||
|  |             }else { | ||||||
|  |               return h("Tag", {props: {color: "purple",},}, "未知"); | ||||||
|             } |             } | ||||||
|             return h("div", [text]); |  | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|  | @ -160,7 +161,7 @@ export default { | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: "活动时间", |           title: "活动时间", | ||||||
| 
 |           width: 150, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.getType === "ACTIVITY") { |             if (params.row.getType === "ACTIVITY") { | ||||||
|               return h("div", "长期有效"); |               return h("div", "长期有效"); | ||||||
|  | @ -184,7 +185,7 @@ export default { | ||||||
|               color = "red"; |               color = "red"; | ||||||
|             if (params.row.promotionStatus == "NEW") { |             if (params.row.promotionStatus == "NEW") { | ||||||
|               text = "未开始"; |               text = "未开始"; | ||||||
|               color = "default"; |               color = "geekblue"; | ||||||
|             } else if (params.row.promotionStatus == "START") { |             } else if (params.row.promotionStatus == "START") { | ||||||
|               text = "已开始"; |               text = "已开始"; | ||||||
|               color = "green"; |               color = "green"; | ||||||
|  |  | ||||||
|  | @ -39,9 +39,11 @@ | ||||||
|             </FormItem> |             </FormItem> | ||||||
|             <FormItem label="发放数量" prop="publishNum" v-if="form.getType==='FREE'"> |             <FormItem label="发放数量" prop="publishNum" v-if="form.getType==='FREE'"> | ||||||
|               <Input v-model="form.publishNum" placeholder="发放数量" style="width: 260px"/> |               <Input v-model="form.publishNum" placeholder="发放数量" style="width: 260px"/> | ||||||
|  |               <div class="tips">如果发放数量为0时,则代表不限制发放数量</div> | ||||||
|             </FormItem> |             </FormItem> | ||||||
|             <FormItem label="领取数量限制" prop="couponLimitNum" v-if="form.getType==='FREE'"> |             <FormItem label="领取数量限制" prop="couponLimitNum" v-if="form.getType==='FREE'"> | ||||||
|               <Input v-model="form.couponLimitNum" placeholder="领取限制" clearable style="width: 260px"/> |               <Input v-model="form.couponLimitNum" placeholder="领取限制" clearable style="width: 260px"/> | ||||||
|  |               <div class="tips">如果领取数量为0时,则代表不限制领取数量</div> | ||||||
|             </FormItem> |             </FormItem> | ||||||
|             <FormItem label="范围描述" prop="description"> |             <FormItem label="范围描述" prop="description"> | ||||||
|               <Input v-model="form.description" type="textarea" :rows="4" maxlength="50" show-word-limit clearable |               <Input v-model="form.description" type="textarea" :rows="4" maxlength="50" show-word-limit clearable | ||||||
|  | @ -576,5 +578,9 @@ h4 { | ||||||
|     margin: 0 4px; |     margin: 0 4px; | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | .tips { | ||||||
|  |   font-size: 12px; | ||||||
|  |   color: #999; | ||||||
|  | } | ||||||
| </style> | </style> | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -44,7 +44,7 @@ export default { | ||||||
|         // 搜索框初始化对象 |         // 搜索框初始化对象 | ||||||
|         pageNumber: 0, // 当前页数 |         pageNumber: 0, // 当前页数 | ||||||
|         pageSize: 10, // 页面大小 |         pageSize: 10, // 页面大小 | ||||||
|         sort: "startTime", // 默认排序字段 |         sort: "createTime", // 默认排序字段 | ||||||
|         order: "desc", // 默认排序方式 |         order: "desc", // 默认排序方式 | ||||||
|       }, |       }, | ||||||
|       form: { |       form: { | ||||||
|  |  | ||||||
|  | @ -132,19 +132,19 @@ export default { | ||||||
|           minWidth: 60, |           minWidth: 60, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             let text = "未知", |             let text = "未知", | ||||||
|               color = "default"; |               color = "purple"; | ||||||
|             if (params.row.promotionStatus == "NEW") { |             if (params.row.promotionStatus == "NEW") { | ||||||
|               text = "未开始"; |               text = "未开始"; | ||||||
|               color = "default"; |               color = "geekblue"; | ||||||
|             } else if (params.row.promotionStatus == "START") { |             } else if (params.row.promotionStatus == "START") { | ||||||
|               text = "已开始"; |               text = "已开始"; | ||||||
|               color = "green"; |               color = "blue"; | ||||||
|             } else if (params.row.promotionStatus == "END") { |             } else if (params.row.promotionStatus == "END") { | ||||||
|               text = "已结束"; |               text = "已结束"; | ||||||
|               color = "blue"; |               color = "green"; | ||||||
|             } else if (params.row.promotionStatus == "CLOSE") { |             } else if (params.row.promotionStatus == "CLOSE") { | ||||||
|               text = "已关闭"; |               text = "已关闭"; | ||||||
|               color = "red"; |               color = "volcano"; | ||||||
|             } |             } | ||||||
|             return h("div", [ |             return h("div", [ | ||||||
|               h( |               h( | ||||||
|  |  | ||||||
|  | @ -119,14 +119,13 @@ export default { | ||||||
|         { |         { | ||||||
|           title: "直播状态", |           title: "直播状态", | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             return h( |             if(params.row.status == "NEW"){ | ||||||
|               "span", |               return h("div", [h("tag", {props: {color: "blue"}}, "未开始")]); | ||||||
|               params.row.status == "NEW" |             }else if(params.row.status == "START"){ | ||||||
|                 ? "未开始" |               return h("div", [h("tag", {props: {color: "green"}}, "直播中")]); | ||||||
|                 : params.row.status == "START" |             }else{ | ||||||
|                 ? "直播中" |               return h("div", [h("tag", {props: {color: "volcano"}}, "已结束")]); | ||||||
|                 : "已结束" |             } | ||||||
|             ); |  | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|  |  | ||||||
|  | @ -122,16 +122,16 @@ export default { | ||||||
|               color = ""; |               color = ""; | ||||||
|             if (params.row.promotionStatus == "NEW") { |             if (params.row.promotionStatus == "NEW") { | ||||||
|               text = "未开始"; |               text = "未开始"; | ||||||
|               color = "default"; |               color = "geekblue"; | ||||||
|             } else if (params.row.promotionStatus == "START") { |             } else if (params.row.promotionStatus == "START") { | ||||||
|               text = "已开始"; |               text = "已开始"; | ||||||
|               color = "green"; |               color = "blue"; | ||||||
|             } else if (params.row.promotionStatus == "END") { |             } else if (params.row.promotionStatus == "END") { | ||||||
|               text = "已结束"; |               text = "已结束"; | ||||||
|               color = "blue"; |               color = "green"; | ||||||
|             } else if (params.row.promotionStatus == "CLOSE") { |             } else if (params.row.promotionStatus == "CLOSE") { | ||||||
|               text = "已关闭"; |               text = "已关闭"; | ||||||
|               color = "red"; |               color = "volcano"; | ||||||
|             } |             } | ||||||
|             return h("div", [ |             return h("div", [ | ||||||
|               h( |               h( | ||||||
|  |  | ||||||
|  | @ -2,78 +2,37 @@ | ||||||
|   <div class="search"> |   <div class="search"> | ||||||
|     <Card> |     <Card> | ||||||
|       <Row> |       <Row> | ||||||
|         <Form |         <Form ref="searchForm" :model="searchForm" inline :label-width="70" class="search-form"> | ||||||
|           ref="searchForm" |  | ||||||
|           :model="searchForm" |  | ||||||
|           inline |  | ||||||
|           :label-width="70" |  | ||||||
|           class="search-form" |  | ||||||
|         > |  | ||||||
|           <Form-item label="商品名称"> |           <Form-item label="商品名称"> | ||||||
|             <Input |             <Input type="text" v-model="searchForm.goodsName" placeholder="请输入商品名称" clearable style="width: 200px" /> | ||||||
|               type="text" |  | ||||||
|               v-model="searchForm.goodsName" |  | ||||||
|               placeholder="请输入商品名称" |  | ||||||
|               clearable |  | ||||||
|               style="width: 200px" |  | ||||||
|             /> |  | ||||||
|           </Form-item> |           </Form-item> | ||||||
|           <Form-item label="积分区间"> |           <Form-item label="积分区间"> | ||||||
|             <Input |             <Input type="text" v-model="searchForm.pointsS" placeholder="请输入开始区间" clearable style="width: 200px" /> | ||||||
|               type="text" |  | ||||||
|               v-model="searchForm.pointsS" |  | ||||||
|               placeholder="请输入开始区间" |  | ||||||
|               clearable |  | ||||||
|               style="width: 200px" |  | ||||||
|             /> |  | ||||||
|             - |             - | ||||||
|             <Input |             <Input type="text" v-model="searchForm.pointsE" placeholder="请输入结束区间" clearable style="width: 200px" /> | ||||||
|               type="text" |  | ||||||
|               v-model="searchForm.pointsE" |  | ||||||
|               placeholder="请输入结束区间" |  | ||||||
|               clearable |  | ||||||
|               style="width: 200px" |  | ||||||
|             /> |  | ||||||
|           </Form-item> |           </Form-item> | ||||||
|           <Form-item label="状态"> |           <Form-item label="状态"> | ||||||
|             <Select v-model="searchForm.promotionStatus" style="width: 200px"> |             <Select v-model="searchForm.promotionStatus" style="width: 200px"> | ||||||
|               <Option |               <Option v-for="item in statusList" :value="item.value" :key="item.value">{{ item.label }}</Option> | ||||||
|                 v-for="item in statusList" |  | ||||||
|                 :value="item.value" |  | ||||||
|                 :key="item.value" |  | ||||||
|                 >{{ item.label }}</Option |  | ||||||
|               > |  | ||||||
|             </Select> |             </Select> | ||||||
|           </Form-item> |           </Form-item> | ||||||
|           <Form-item label="SKU编码"> |           <Form-item label="SKU编码"> | ||||||
|             <Input |             <Input type="text" v-model="searchForm.skuId" placeholder="请输入SKU编码" clearable style="width: 200px" /> | ||||||
|               type="text" |  | ||||||
|               v-model="searchForm.skuId" |  | ||||||
|               placeholder="请输入SKU编码" |  | ||||||
|               clearable |  | ||||||
|               style="width: 200px" |  | ||||||
|             /> |  | ||||||
|           </Form-item> |           </Form-item> | ||||||
|           <Button @click="handleSearch" type="primary" icon="ios-search" class="search-btn">搜索</Button> |           <Button @click="handleSearch" type="primary" icon="ios-search" class="search-btn">搜索</Button> | ||||||
|         </Form> |         </Form> | ||||||
|       </Row> |       </Row> | ||||||
|       <Row class="operation padding-row"> |       <Row class="operation padding-row"> | ||||||
|         <Button @click="addPointsGoods" type="primary" >添加积分商品</Button> |         <Button @click="addPointsGoods" type="primary">添加积分商品</Button> | ||||||
| 
 | 
 | ||||||
|       </Row> |       </Row> | ||||||
|       <Table |       <Table :loading="loading" border :columns="columns" :data="data" ref="table"> | ||||||
|         :loading="loading" |  | ||||||
|         border |  | ||||||
|         :columns="columns" |  | ||||||
|         :data="data" |  | ||||||
|         ref="table" |  | ||||||
|       > |  | ||||||
|         <template slot-scope="{ row }" slot="goodsName"> |         <template slot-scope="{ row }" slot="goodsName"> | ||||||
|           <div> |           <div> | ||||||
|             <a class="mr_10" @click="linkTo(row.goodsSku.goodsId,row.goodsSku.skuId)">{{row.goodsSku.goodsName}}</a> |             <a class="mr_10" @click="linkTo(row.goodsSku.goodsId,row.goodsSku.skuId)">{{row.goodsSku.goodsName}}</a> | ||||||
|             <Poptip trigger="hover" title="扫码在手机中查看" transfer> |             <Poptip trigger="hover" title="扫码在手机中查看" transfer> | ||||||
|               <div slot="content"> |               <div slot="content"> | ||||||
|                 <vue-qr :text="wapLinkTo(row.goodsSku.goodsId,row.goodsSku.skuId)"  :margin="0" colorDark="#000" colorLight="#fff" :size="150"></vue-qr> |                 <vue-qr :text="wapLinkTo(row.goodsSku.goodsId,row.goodsSku.skuId)" :margin="0" colorDark="#000" colorLight="#fff" :size="150"></vue-qr> | ||||||
|               </div> |               </div> | ||||||
|               <img src="../../../assets/qrcode.svg" style="vertical-align:middle;" class="hover-pointer" width="20" height="20" alt=""> |               <img src="../../../assets/qrcode.svg" style="vertical-align:middle;" class="hover-pointer" width="20" height="20" alt=""> | ||||||
|             </Poptip> |             </Poptip> | ||||||
|  | @ -94,48 +53,15 @@ | ||||||
|         </template> |         </template> | ||||||
| 
 | 
 | ||||||
|         <template slot-scope="{ row }" slot="action"> |         <template slot-scope="{ row }" slot="action"> | ||||||
|           <Button |           <Button v-if="row.promotionStatus == 'NEW'" type="info" size="small" @click="edit(row.id)" style="margin-right: 5px">编辑</Button> | ||||||
|             v-if="row.promotionStatus == 'NEW'" |           <Button v-if="row.promotionStatus == 'START'" type="warning" size="small" @click="statusChanged(row.id, 'CLOSE')" style="margin-right: 5px">停用</Button> | ||||||
|             type="info" |           <Button v-if="row.promotionStatus == 'CLOSE'" type="warning" size="small" @click="statusChanged(row.id, 'START')" style="margin-right: 5px">启用</Button> | ||||||
|             size="small" |           <Button type="error" size="small" @click="close(row.id)">删除</Button> | ||||||
|             @click="edit(row.id)" |  | ||||||
|             style="margin-right: 5px" |  | ||||||
|             >编辑</Button |  | ||||||
|           > |  | ||||||
|           <Button |  | ||||||
|             v-if="row.promotionStatus == 'START'" |  | ||||||
|             type="warning" |  | ||||||
|             size="small" |  | ||||||
|             @click="statusChanged(row.id, 'CLOSE')" |  | ||||||
|             style="margin-right: 5px" |  | ||||||
|             >停用</Button |  | ||||||
|           > |  | ||||||
|           <Button |  | ||||||
|             v-if="row.promotionStatus == 'CLOSE'" |  | ||||||
|             type="warning" |  | ||||||
|             size="small" |  | ||||||
|             @click="statusChanged(row.id, 'START')" |  | ||||||
|             style="margin-right: 5px" |  | ||||||
|             >启用</Button |  | ||||||
|           > |  | ||||||
|           <Button type="error" size="small" @click="close(row.id)" |  | ||||||
|             >删除</Button |  | ||||||
|           > |  | ||||||
|         </template> |         </template> | ||||||
|       </Table> |       </Table> | ||||||
|       <Row type="flex" justify="end" class="page"> |       <Row type="flex" justify="end" class="page"> | ||||||
|         <Page |         <Page :current="searchForm.pageNumber" :total="total" :page-size="searchForm.pageSize" @on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]" size="small" | ||||||
|           :current="searchForm.pageNumber" |           show-total show-elevator show-sizer></Page> | ||||||
|           :total="total" |  | ||||||
|           :page-size="searchForm.pageSize" |  | ||||||
|           @on-change="changePage" |  | ||||||
|           @on-page-size-change="changePageSize" |  | ||||||
|           :page-size-opts="[10, 20, 50]" |  | ||||||
|           size="small" |  | ||||||
|           show-total |  | ||||||
|           show-elevator |  | ||||||
|           show-sizer |  | ||||||
|         ></Page> |  | ||||||
|       </Row> |       </Row> | ||||||
|     </Card> |     </Card> | ||||||
|   </div> |   </div> | ||||||
|  | @ -159,78 +85,91 @@ export default { | ||||||
|         pageSize: 10, // 页面大小 |         pageSize: 10, // 页面大小 | ||||||
|         order: "desc", // 默认排序方式 |         order: "desc", // 默认排序方式 | ||||||
|       }, |       }, | ||||||
|       statusList: [ // 活动状态 |       statusList: [ | ||||||
|  |         // 活动状态 | ||||||
|         { label: "未开始", value: "NEW" }, |         { label: "未开始", value: "NEW" }, | ||||||
|         { label: "已开始", value: "START" }, |         { label: "已开始", value: "START" }, | ||||||
|         { label: "已结束", value: "END" }, |         { label: "已结束", value: "END" }, | ||||||
|         { label: "已关闭", value: "CLOSE" }, |         { label: "已关闭", value: "CLOSE" }, | ||||||
|       ], |       ], | ||||||
|       columns: [ // 表头 |       columns: [ | ||||||
|  |         // 表头 | ||||||
|         { |         { | ||||||
|           title: "商品名称", |           title: "商品名称", | ||||||
|           slot: "goodsName", |           slot: "goodsName", | ||||||
|           minWidth: 120, |           minWidth: 150, | ||||||
|  |           fixed: "left", | ||||||
|           tooltip: true, |           tooltip: true, | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: "市场价", |           title: "市场价", | ||||||
|           slot: "price", |           slot: "price", | ||||||
|  |           width: 100, | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: "结算价", |           title: "结算价", | ||||||
|           slot: "settlementPrice", |           slot: "settlementPrice", | ||||||
|  |           width: 100, | ||||||
|         }, |         }, | ||||||
|         { | 
 | ||||||
|           title: "分类", |  | ||||||
|           key: "pointsGoodsCategoryName", |  | ||||||
|         }, |  | ||||||
|         { |         { | ||||||
|           title: "库存数量", |           title: "库存数量", | ||||||
|           slot: "quantity", |           slot: "quantity", | ||||||
|  |           width: 100, | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: "活动剩余库存", |           title: "活动剩余库存", | ||||||
|           key: "activeStock", |           key: "activeStock", | ||||||
|  |           width: 150, | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: "兑换积分", |           title: "兑换积分", | ||||||
|           key: "points", |           key: "points", | ||||||
|  |           width: 100, | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: "所属店铺", |           title: "所属店铺", | ||||||
|           key: "storeName", |           key: "storeName", | ||||||
|  |           width: 100, | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: "活动开始时间", |           title: "活动开始时间", | ||||||
|           slot: "startTime", |           slot: "startTime", | ||||||
|           minWidth:100 |           minWidth: 150, | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: "状态", |           title: "状态", | ||||||
|           key: "promotionStatus", |           key: "promotionStatus", | ||||||
|  |           width: 100, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             let text = "未知", |             let text = "未知", | ||||||
|               color = ""; |               color = ""; | ||||||
|             if (params.row.promotionStatus == "NEW") { |             if (params.row.promotionStatus == "NEW") { | ||||||
|               text = "未开始"; |               text = "未开始"; | ||||||
|               color = "default"; |               color = "geekblue"; | ||||||
|             } else if (params.row.promotionStatus == "START") { |             } else if (params.row.promotionStatus == "START") { | ||||||
|               text = "已开始"; |               text = "已开始"; | ||||||
|               color = "green"; |               color = "blue"; | ||||||
|             } else if (params.row.promotionStatus == "END") { |             } else if (params.row.promotionStatus == "END") { | ||||||
|               text = "已结束"; |               text = "已结束"; | ||||||
|               color = "blue"; |               color = "green"; | ||||||
|             } else if (params.row.promotionStatus == "CLOSE") { |             } else if (params.row.promotionStatus == "CLOSE") { | ||||||
|               text = "已关闭"; |               text = "已关闭"; | ||||||
|               color = "red"; |               color = "volcano"; | ||||||
|             } |             } | ||||||
|             return h("div", [h("Tag", { props: { color: color } }, text)]); |             return h("div", [h("Tag", { props: { color: color } }, text)]); | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  |         { | ||||||
|  |           title: "分类", | ||||||
|  |           key: "pointsGoodsCategoryName", | ||||||
|  |           width: 100, | ||||||
|  |         }, | ||||||
|         { |         { | ||||||
|           title: "操作", |           title: "操作", | ||||||
|           slot: "action", |           slot: "action", | ||||||
|           align: "center", |           align: "center", | ||||||
|  |           fixed: "right", | ||||||
|           width: 150, |           width: 150, | ||||||
|         }, |         }, | ||||||
|       ], |       ], | ||||||
|  | @ -327,5 +266,5 @@ export default { | ||||||
| }; | }; | ||||||
| </script> | </script> | ||||||
| <style lang="scss"> | <style lang="scss"> | ||||||
|   @import "@/styles/table-common.scss"; | @import "@/styles/table-common.scss"; | ||||||
| </style> | </style> | ||||||
|  |  | ||||||
|  | @ -24,78 +24,35 @@ | ||||||
|       <Row class="operation padding-row"> |       <Row class="operation padding-row"> | ||||||
|         <Button type="primary" @click="add">添加活动</Button> |         <Button type="primary" @click="add">添加活动</Button> | ||||||
|       </Row> |       </Row> | ||||||
|       <Table |       <Tabs value="list"  @on-click="clickTabPane"> | ||||||
|         :loading="loading" |         <TabPane label="秒杀活动列表" name="list"> | ||||||
|         border |           <Table :loading="loading" border :columns="columns" :data="data" ref="table" class="page"> | ||||||
|         :columns="columns" |             <template slot-scope="{ row }" slot="action"> | ||||||
|         :data="data" |               <Button type="info" size="small" class="mr_5" v-if="row.promotionStatus == 'NEW'" @click="edit(row)">编辑</Button> | ||||||
|         ref="table" |  | ||||||
|         class="page" |  | ||||||
|       > |  | ||||||
|         <template slot-scope="{ row }" slot="action"> |  | ||||||
|           <Button |  | ||||||
|             type="info" |  | ||||||
|             size="small" |  | ||||||
|             class="mr_5" |  | ||||||
|             v-if="row.promotionStatus == 'NEW'" |  | ||||||
|             @click="edit(row)" |  | ||||||
|             >编辑</Button |  | ||||||
|           > |  | ||||||
| 
 | 
 | ||||||
|           <Button |               <Button type="info" size="small" class="mr_5" v-else @click="manage(row)">查看</Button> | ||||||
|             type="info" |  | ||||||
|             size="small" |  | ||||||
|             class="mr_5" |  | ||||||
|             v-else |  | ||||||
|             @click="manage(row)" |  | ||||||
|             >查看</Button |  | ||||||
|           > |  | ||||||
| 
 | 
 | ||||||
|           <Button |               <Button type="primary" size="small" class="mr_5" v-if="row.promotionStatus == 'NEW'" @click="manage(row)">管理</Button> | ||||||
|             type="primary" |  | ||||||
|             size="small" |  | ||||||
|             class="mr_5" |  | ||||||
|             v-if="row.promotionStatus == 'NEW'" |  | ||||||
|             @click="manage(row)" |  | ||||||
|             >管理</Button |  | ||||||
|           > |  | ||||||
| 
 | 
 | ||||||
|           <!-- <Button type="success" size="small" class="mr_5" v-if="row.promotionStatus == 'NEW' || row.promotionStatus == 'END'" @click="upper(row)">上架</Button>   --> |               <Button type="error" size="small" v-if=" | ||||||
|           <Button |                 row.promotionStatus == 'START' || row.promotionStatus == 'NEW' | ||||||
|             type="error" |               " class="mr_5" @click="off(row)">下架</Button> | ||||||
|             size="small" |                 | ||||||
|             v-if=" |               <Button type="error" size="small" v-if="row.promotionStatus == 'CLOSE'" ghost @click="expire(row)">删除</Button> | ||||||
|               row.promotionStatus == 'START' || row.promotionStatus == 'NEW' |             </template> | ||||||
|             " |           </Table> | ||||||
|             class="mr_5" | 
 | ||||||
|             @click="off(row)" |           <Row type="flex" justify="end" class="page"> | ||||||
|             >下架</Button |             <Page style="margin: 20px 0;" :current="searchForm.pageNumber" :total="total" :page-size="searchForm.pageSize" @on-change="changePage" @on-page-size-change="changePageSize" | ||||||
|           > |               :page-size-opts="[10, 20, 50]" size="small" show-total show-elevator show-sizer></Page> | ||||||
|  |           </Row> | ||||||
|  |         </TabPane> | ||||||
|  |         <TabPane label="秒杀活动设置" name="setup"> | ||||||
|  | 
 | ||||||
|  |           <setupSeckill v-if="setupFlag"></setupSeckill> | ||||||
|  |         </TabPane> | ||||||
|  |       </Tabs> | ||||||
| 
 | 
 | ||||||
|           <Button |  | ||||||
|             type="error" |  | ||||||
|             size="small" |  | ||||||
|             v-if="row.promotionStatus == 'CLOSE'" |  | ||||||
|             ghost |  | ||||||
|             @click="expire(row)" |  | ||||||
|             >删除</Button |  | ||||||
|           > |  | ||||||
|         </template> |  | ||||||
|       </Table> |  | ||||||
|       <Row type="flex" justify="end" class="page"> |  | ||||||
|         <Page |  | ||||||
|           :current="searchForm.pageNumber + 1" |  | ||||||
|           :total="total" |  | ||||||
|           :page-size="searchForm.pageSize" |  | ||||||
|           @on-change="changePage" |  | ||||||
|           @on-page-size-change="changePageSize" |  | ||||||
|           :page-size-opts="[10, 20, 50]" |  | ||||||
|           size="small" |  | ||||||
|           show-total |  | ||||||
|           show-elevator |  | ||||||
|           show-sizer |  | ||||||
|         ></Page> |  | ||||||
|       </Row> |  | ||||||
|     </Card> |     </Card> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
|  | @ -145,41 +102,13 @@ export default { | ||||||
|           width: 100, |           width: 100, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.promotionStatus == "NEW") { |             if (params.row.promotionStatus == "NEW") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "geekblue",},},"新建"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "error", |  | ||||||
|                     text: "新建", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.promotionStatus == "START") { |             } else if (params.row.promotionStatus == "START") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "green",},},"开始"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "success", |  | ||||||
|                     text: "开始", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.promotionStatus == "END") { |             } else if (params.row.promotionStatus == "END") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "volcano",},},"结束"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "error", |  | ||||||
|                     text: "结束", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.promotionStatus == "CLOSE") { |             } else if (params.row.promotionStatus == "CLOSE") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "red",},},"结束"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "error", |  | ||||||
|                     text: "废弃", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  | @ -302,7 +231,7 @@ export default { | ||||||
| </script> | </script> | ||||||
| <style lang="scss"> | <style lang="scss"> | ||||||
| @import "@/styles/table-common.scss"; | @import "@/styles/table-common.scss"; | ||||||
| .mr_5{ | .mr_5 { | ||||||
|   margin: 0 4px; |   margin: 0 5px; | ||||||
| } | } | ||||||
| </style> | </style> | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| <template> | <template> | ||||||
|   <div> |   <div v-if="templateShow"> | ||||||
|     <Form :model="form" :label-width="120"> |     <Form :model="form" :label-width="120"> | ||||||
|       <FormItem label="每日场次设置"> |       <FormItem label="每日场次设置"> | ||||||
|         <Row :gutter="16" class="row"> |         <Row :gutter="16" class="row"> | ||||||
|  | @ -27,6 +27,7 @@ import { getSetting, setSetting } from "@/api/index"; | ||||||
| export default { | export default { | ||||||
|   data() { |   data() { | ||||||
|     return { |     return { | ||||||
|  |       templateShow:false, | ||||||
|       submitLoading: false, |       submitLoading: false, | ||||||
|       selectedTime: [], |       selectedTime: [], | ||||||
|       times: [], //时间集合 1-24点 |       times: [], //时间集合 1-24点 | ||||||
|  | @ -81,6 +82,7 @@ export default { | ||||||
|     async init() { |     async init() { | ||||||
|       let result = await getSetting("SECKILL_SETTING"); |       let result = await getSetting("SECKILL_SETTING"); | ||||||
|       if (result.success) { |       if (result.success) { | ||||||
|  |         this.templateShow = true | ||||||
|         this.form.seckillRule = result.result.seckillRule; |         this.form.seckillRule = result.result.seckillRule; | ||||||
|         this.times=[] |         this.times=[] | ||||||
|         for (let i = 0; i < 24; i++) { |         for (let i = 0; i < 24; i++) { | ||||||
|  |  | ||||||
|  | @ -95,13 +95,13 @@ export default { | ||||||
|           width: 100, |           width: 100, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.billStatus == "OUT") { |             if (params.row.billStatus == "OUT") { | ||||||
|               return h("div", "已出账"); |               return h("Tag", {props: {color: "blue",},},"已出账"); | ||||||
|             } else if (params.row.billStatus == "CHECK") { |             } else if (params.row.billStatus == "CHECK") { | ||||||
|               return h("div", "已对账"); |               return h("Tag", {props: {color: "geekblue",},},"已对账"); | ||||||
|             } else if (params.row.billStatus == "EXAMINE") { |             } else if (params.row.billStatus == "EXAMINE") { | ||||||
|               return h("div", "已审核"); |               return h("Tag", {props: {color: "purple",},},"已审核"); | ||||||
|             } else { |             } else { | ||||||
|               return h("div", "已付款"); |               return h("Tag", {props: {color: "green",},},"已付款"); | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  |  | ||||||
|  | @ -106,13 +106,13 @@ export default { | ||||||
|           width: 100, |           width: 100, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.billStatus == "OUT") { |             if (params.row.billStatus == "OUT") { | ||||||
|               return h("div", "已出账"); |               return h("Tag", {props: {color: "blue",},},"已出账"); | ||||||
|             } else if (params.row.billStatus == "CHECK") { |             } else if (params.row.billStatus == "CHECK") { | ||||||
|               return h("div", "已对账"); |               return h("Tag", {props: {color: "geekblue",},},"已对账"); | ||||||
|             } else if (params.row.billStatus == "EXAMINE") { |             } else if (params.row.billStatus == "EXAMINE") { | ||||||
|               return h("div", "已审核"); |               return h("Tag", {props: {color: "purple",},},"已审核"); | ||||||
|             } else { |             } else { | ||||||
|               return h("div", "已付款"); |               return h("Tag", {props: {color: "green",},},"已付款"); | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  |  | ||||||
|  | @ -126,7 +126,7 @@ export default { | ||||||
|               "Tag", |               "Tag", | ||||||
|               { |               { | ||||||
|                 props: { |                 props: { | ||||||
|                   color: params.row.selfOperated ? "error" : "success", |                   color: params.row.selfOperated ? "volcano" : "green", | ||||||
|                 }, |                 }, | ||||||
|               }, |               }, | ||||||
|               params.row.selfOperated  ? "自营" : "非自营" |               params.row.selfOperated  ? "自营" : "非自营" | ||||||
|  | @ -141,50 +141,15 @@ export default { | ||||||
|           width: 130, |           width: 130, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.storeDisable == "OPEN") { |             if (params.row.storeDisable == "OPEN") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "green",},},"开启中"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "success", |  | ||||||
|                     text: "开启中", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.storeDisable == "CLOSED") { |             } else if (params.row.storeDisable == "CLOSED") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "volcano",},},"已关闭"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "error", |  | ||||||
|                     text: "已关闭", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.storeDisable == "APPLY") { |             } else if (params.row.storeDisable == "APPLY") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "geekblue",},},"申请中"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "error", |  | ||||||
|                     text: "申请中", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.storeDisable == "APPLYING") { |             } else if (params.row.storeDisable == "APPLYING") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "purple",},},"审核中"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "error", |  | ||||||
|                     text: "审核中", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.storeDisable == "REFUSED") { |             } else if (params.row.storeDisable == "REFUSED") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "red",},},"审核拒绝"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "error", |  | ||||||
|                     text: "审核拒绝", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  |  | ||||||
|  | @ -65,13 +65,13 @@ | ||||||
|               <FormItem label="详细地址" prop="salesConsigneeDetail"> |               <FormItem label="详细地址" prop="salesConsigneeDetail"> | ||||||
|                 <Input v-model="shopForm.salesConsigneeDetail" clearable style="width: 350px" /> |                 <Input v-model="shopForm.salesConsigneeDetail" clearable style="width: 350px" /> | ||||||
|               </FormItem> |               </FormItem> | ||||||
|               <!-- <Divider orientation="left">腾讯云智服</Divider> |               <Divider orientation="left">腾讯云智服</Divider> | ||||||
|               <FormItem label="唯一标识" prop="salesConsigneeDetail"> |               <FormItem label="唯一标识" prop="salesConsigneeDetail"> | ||||||
|                 <Input v-model="shopForm.yzfSign" clearable style="width: 350px" /> |                 <Input v-model="shopForm.yzfSign" clearable style="width: 350px" /> | ||||||
|               </FormItem> |               </FormItem> | ||||||
|               <FormItem label="小程序唯一标识" prop="salesConsigneeDetail"> |               <FormItem label="小程序唯一标识" prop="salesConsigneeDetail"> | ||||||
|                 <Input v-model="shopForm.yzfMpSign" clearable style="width: 350px" /> |                 <Input v-model="shopForm.yzfMpSign" clearable style="width: 350px" /> | ||||||
|               </FormItem> --> |               </FormItem> | ||||||
|               <Spin fix v-if="loading"></Spin> |               <Spin fix v-if="loading"></Spin> | ||||||
|             </div> |             </div> | ||||||
|           </TabPane> |           </TabPane> | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
|       <div class="shop-item"> |       <div class="shop-item"> | ||||||
|         <div class="label-item"> |         <div class="label-item"> | ||||||
|           <span>订单来源</span> |           <span>订单来源</span> | ||||||
|           <span>{{res.clientType}}</span> |           <span>{{res.clientType | clientTypeWay}}</span> | ||||||
|         </div> |         </div> | ||||||
|         <div class="label-item"> |         <div class="label-item"> | ||||||
|           <span>订单状态</span> |           <span>订单状态</span> | ||||||
|  |  | ||||||
|  | @ -132,13 +132,13 @@ export const delSpec = (id, params) => { | ||||||
|   return deleteRequest(`/goods/spec/del/${id}`, params); |   return deleteRequest(`/goods/spec/del/${id}`, params); | ||||||
| }; | }; | ||||||
| //  获取商品规格值列表
 | //  获取商品规格值列表
 | ||||||
| export const getSpecValuesListData = (id, params) => { | // export const getSpecValuesListData = (id, params) => {
 | ||||||
|   return getRequest(`/goods/spec-values/values/${id}`, params); | //   return getRequest(`/goods/spec-values/values/${id}`, params);
 | ||||||
| }; | // };
 | ||||||
| //  添加商品规格值
 | //  添加商品规格值
 | ||||||
| export const saveSpecValues = (id, params) => { | // export const saveSpecValues = (id, params) => {
 | ||||||
|   return postRequest(`/goods/spec-values/save/${id}`, params); | //   return postRequest(`/goods/spec-values/save/${id}`, params);
 | ||||||
| }; | // };
 | ||||||
| 
 | 
 | ||||||
| // 查询某分类下的全部子分类列表
 | // 查询某分类下的全部子分类列表
 | ||||||
| export const getGoodsCategory = parent_id => { | export const getGoodsCategory = parent_id => { | ||||||
|  | @ -209,24 +209,19 @@ export const deleteParamsGroup = (id, params) => { | ||||||
|   return deleteRequest(`/goods/category/parameters/${id}`, params); |   return deleteRequest(`/goods/category/parameters/${id}`, params); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| //保存获取关联规格
 |  | ||||||
| export const getGoodsSpecInfo = (category_id, params) => { |  | ||||||
|   return getRequest(`/goods/category/spec/goods/${category_id}`, params); |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| //获取sku列表
 | //获取sku列表
 | ||||||
| export const getSkuPage = params => { | export const getSkuPage = params => { | ||||||
|   return getRequest(`/goodsSku/getByPage`, params); |   return getRequest(`/goodsSku/getByPage`, params); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| //  获取商品规格值列表
 | //  获取商品规格值列表
 | ||||||
| export const getSpecValuesListSellerData = (id, params) => { | // export const getSpecValuesListSellerData = (id, params) => {
 | ||||||
|   return getRequest(`/goods/spec-values/values/${id}`, params); | //   return getRequest(`/goods/spec-values/values/${id}`, params);
 | ||||||
| }; | // };
 | ||||||
| //  添加商品规格值
 | //  添加商品规格值
 | ||||||
| export const saveSpecValuesSeller = (id, params) => { | // export const saveSpecValuesSeller = (id, params) => {
 | ||||||
|   return postRequest(`/goods/spec-values/save/${id}`, params); | //   return postRequest(`/goods/spec-values/save/${id}`, params);
 | ||||||
| }; | // };
 | ||||||
| 
 | 
 | ||||||
| //  获取商品规格分页列表
 | //  获取商品规格分页列表
 | ||||||
| export const getSpecListSellerData = params => { | export const getSpecListSellerData = params => { | ||||||
|  | @ -317,8 +312,8 @@ export const getCategoryParamsListDataSeller = (id, params) => { | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| //保存获取关联规格
 | //保存获取关联规格
 | ||||||
| export const getGoodsSpecInfoSeller = (category_id, params) => { | export const getGoodsSpecInfoSeller = (category_id) => { | ||||||
|   return getRequest(`/goods/category/spec/goods/${category_id}`, params); |   return getRequest(`/goods/spec/${category_id}`); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| //批量设置运费模板
 | //批量设置运费模板
 | ||||||
|  |  | ||||||
|  | @ -22,10 +22,10 @@ export default { | ||||||
|     // buyer: 'https://buyer-api.pickmall.cn',
 |     // buyer: 'https://buyer-api.pickmall.cn',
 | ||||||
|     // seller: 'https://store-api.pickmall.cn',
 |     // seller: 'https://store-api.pickmall.cn',
 | ||||||
|     // manager: 'https://admin-api.pickmall.cn',
 |     // manager: 'https://admin-api.pickmall.cn',
 | ||||||
|     common: 'http://192.168.0.100:8890', |     common: 'http://192.168.0.109:8890', | ||||||
|     buyer: 'http://192.168.0.100:8888', |     buyer: 'http://192.168.0.109:8888', | ||||||
|     seller: 'http://192.168.0.100:8889', |     seller: 'http://192.168.0.109:8889', | ||||||
|     manager: 'http://192.168.0.100:8887' |     manager: 'http://192.168.0.109:8887' | ||||||
|   }, |   }, | ||||||
|   api_prod: { |   api_prod: { | ||||||
|     common: 'https://common-api.pickmall.cn', |     common: 'https://common-api.pickmall.cn', | ||||||
|  |  | ||||||
|  | @ -69,14 +69,6 @@ service.interceptors.response.use( | ||||||
|           router.push("/login"); |           router.push("/login"); | ||||||
|         } |         } | ||||||
|         break; |         break; | ||||||
|       case 403: |  | ||||||
|         // 权限不足
 |  | ||||||
|         if (data.message !== null) { |  | ||||||
|           Message.error(data.message); |  | ||||||
|         } else { |  | ||||||
|           Message.error("权限不足"); |  | ||||||
|         } |  | ||||||
|         break; |  | ||||||
|       case 500: |       case 500: | ||||||
|         // 系统异常
 |         // 系统异常
 | ||||||
|         if (data.message !== null) { |         if (data.message !== null) { | ||||||
|  | @ -94,6 +86,8 @@ service.interceptors.response.use( | ||||||
|     if (error.response) { |     if (error.response) { | ||||||
|       if (error.response.status === 401) { |       if (error.response.status === 401) { | ||||||
|         // 这种情况一般调到登录页
 |         // 这种情况一般调到登录页
 | ||||||
|  |       } else if (error.response.status === 404) { | ||||||
|  |         // 避免刷新token报错
 | ||||||
|       } else if (error.response.status === 403) { |       } else if (error.response.status === 403) { | ||||||
|         isRefreshToken++; |         isRefreshToken++; | ||||||
|         if (isRefreshToken === 1) { |         if (isRefreshToken === 1) { | ||||||
|  |  | ||||||
|  | @ -54,20 +54,20 @@ export const result = [ | ||||||
|             children: null, |             children: null, | ||||||
|             permTypes: [] |             permTypes: [] | ||||||
|           }, |           }, | ||||||
|           { |           // {
 | ||||||
|             name: "daft-goods", |           //   name: "daft-goods",
 | ||||||
|             showAlways: true, |           //   showAlways: true,
 | ||||||
|             level: 2, |           //   level: 2,
 | ||||||
|             type: 0, |           //   type: 0,
 | ||||||
|             title: "草稿商品", |           //   title: "草稿商品",
 | ||||||
|             path: "daft-goods", |           //   path: "daft-goods",
 | ||||||
|             component: "goods/goods-seller/draftGoods", |           //   component: "goods/goods-seller/draftGoods",
 | ||||||
|             icon: "md-person", |           //   icon: "md-person",
 | ||||||
|             isMenu: true, |           //   isMenu: true,
 | ||||||
|             url: "", |           //   url: "",
 | ||||||
|             children: null, |           //   children: null,
 | ||||||
|             permTypes: [] |           //   permTypes: []
 | ||||||
|           }, |           // },
 | ||||||
| 
 | 
 | ||||||
|           { |           { | ||||||
|             path: "template-goods", |             path: "template-goods", | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ export const loginRouter = { | ||||||
|   path: "/login", |   path: "/login", | ||||||
|   name: "login", |   name: "login", | ||||||
|   meta: { |   meta: { | ||||||
|     title: "登录 - lili商家后台 " |     title: "登录 - lili商家后台" | ||||||
|   }, |   }, | ||||||
|   component: () => import("@/views/login.vue") |   component: () => import("@/views/login.vue") | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ import Vue from 'vue'; | ||||||
| const app = { | const app = { | ||||||
|     state: { |     state: { | ||||||
|         shipTemplates:"", |         shipTemplates:"", | ||||||
|  |         regions:[], //此处是在地区选择器时赋值一次
 | ||||||
|         styleStore:"", //移动端楼层装修中选择风格存储
 |         styleStore:"", //移动端楼层装修中选择风格存储
 | ||||||
|         loading: false, // 全局加载动画
 |         loading: false, // 全局加载动画
 | ||||||
|         added: false, // 加载路由标识
 |         added: false, // 加载路由标识
 | ||||||
|  |  | ||||||
|  | @ -6,17 +6,32 @@ | ||||||
|  * @returns {*} |  * @returns {*} | ||||||
|  */ |  */ | ||||||
| export function unitPrice(val, unit, location) { | export function unitPrice(val, unit, location) { | ||||||
|   let price = formatPrice(val) |   let price = formatPrice(val); | ||||||
|   if (location === 'before') { |   if (location === "before") { | ||||||
|     return price.substr(0, price.length - 3) |     return price.substr(0, price.length - 3); | ||||||
|   } |   } | ||||||
|   if (location === 'after') { |   if (location === "after") { | ||||||
|     return price.substr(-2) |     return price.substr(-2); | ||||||
|   } |   } | ||||||
|   return (unit || '') + price |   return (unit || "") + price; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | /** | ||||||
|  |  * 订单来源 | ||||||
|  |  */ | ||||||
|  | export function clientTypeWay(val) { | ||||||
|  |   if (val == "H5") { | ||||||
|  |     return "移动端"; | ||||||
|  |   } else if (val == "PC") { | ||||||
|  |     return "PC端"; | ||||||
|  |   } else if (val == "WECHAT_MP") { | ||||||
|  |     return "小程序端"; | ||||||
|  |   } else if (val == "APP") { | ||||||
|  |     return "移动应用端"; | ||||||
|  |   } else { | ||||||
|  |     return val; | ||||||
|  |   } | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * 货币格式化 |  * 货币格式化 | ||||||
|  | @ -24,8 +39,8 @@ export function unitPrice(val, unit, location) { | ||||||
|  * @returns {string} |  * @returns {string} | ||||||
|  */ |  */ | ||||||
| export function formatPrice(price) { | export function formatPrice(price) { | ||||||
|   if (typeof price !== 'number') return price |   if (typeof price !== "number") return price; | ||||||
|   return String(Number(price).toFixed(2)).replace(/\B(?=(\d{3})+(?!\d))/g, ',') |   return String(Number(price).toFixed(2)).replace(/\B(?=(\d{3})+(?!\d))/g, ","); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  | @ -35,51 +50,60 @@ export function formatPrice(price) { | ||||||
|  * @returns {*|string} |  * @returns {*|string} | ||||||
|  */ |  */ | ||||||
| export function unixToDate(unix, format) { | export function unixToDate(unix, format) { | ||||||
|   let _format = format || 'yyyy-MM-dd hh:mm:ss' |   let _format = format || "yyyy-MM-dd hh:mm:ss"; | ||||||
|   const d = new Date(unix * 1000) |   const d = new Date(unix * 1000); | ||||||
|   const o = { |   const o = { | ||||||
|     'M+': d.getMonth() + 1, |     "M+": d.getMonth() + 1, | ||||||
|     'd+': d.getDate(), |     "d+": d.getDate(), | ||||||
|     'h+': d.getHours(), |     "h+": d.getHours(), | ||||||
|     'm+': d.getMinutes(), |     "m+": d.getMinutes(), | ||||||
|     's+': d.getSeconds(), |     "s+": d.getSeconds(), | ||||||
|     'q+': Math.floor((d.getMonth() + 3) / 3), |     "q+": Math.floor((d.getMonth() + 3) / 3), | ||||||
|     S: d.getMilliseconds() |     S: d.getMilliseconds() | ||||||
|   } |   }; | ||||||
|   if (/(y+)/.test(_format)) _format = _format.replace(RegExp.$1, (d.getFullYear() + '').substr(4 - RegExp.$1.length)) |   if (/(y+)/.test(_format)) | ||||||
|   for (const k in o) if (new RegExp('(' + k + ')').test(_format)) _format = _format.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))) |     _format = _format.replace( | ||||||
|   return _format |       RegExp.$1, | ||||||
|  |       (d.getFullYear() + "").substr(4 - RegExp.$1.length) | ||||||
|  |     ); | ||||||
|  |   for (const k in o) | ||||||
|  |     if (new RegExp("(" + k + ")").test(_format)) | ||||||
|  |       _format = _format.replace( | ||||||
|  |         RegExp.$1, | ||||||
|  |         RegExp.$1.length === 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length) | ||||||
|  |       ); | ||||||
|  |   return _format; | ||||||
| } | } | ||||||
| //是否格式化
 | //是否格式化
 | ||||||
| export function unixWhether(status) { | export function unixWhether(status) { | ||||||
|   switch (status) { |   switch (status) { | ||||||
|       case 'YES': |     case "YES": | ||||||
|         return "是" |       return "是"; | ||||||
|       case 'NO': |     case "NO": | ||||||
|         return "否" |       return "否"; | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export function unixSellerBillStatus(status_code) { | export function unixSellerBillStatus(status_code) { | ||||||
|   switch (status_code) { |   switch (status_code) { | ||||||
|     case 'OUT': |     case "OUT": | ||||||
|       return '已出账' |       return "已出账"; | ||||||
|     case 'CHECK': |     case "CHECK": | ||||||
|       return '已对账' |       return "已对账"; | ||||||
|     case 'EXAMINE': |     case "EXAMINE": | ||||||
|       return '已审核' |       return "已审核"; | ||||||
|     case 'PAY': |     case "PAY": | ||||||
|       return '已结算' |       return "已结算"; | ||||||
|     case 'COMPLETE': |     case "COMPLETE": | ||||||
|       return '已完成' |       return "已完成"; | ||||||
|   } |   } | ||||||
| } | } | ||||||
| export function unixSwitchStatus(status_code) { | export function unixSwitchStatus(status_code) { | ||||||
|   switch (status_code) { |   switch (status_code) { | ||||||
|     case 'OPEN': |     case "OPEN": | ||||||
|       return '开启' |       return "开启"; | ||||||
|     case 'CLOSE': |     case "CLOSE": | ||||||
|       return '关闭' |       return "关闭"; | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -89,30 +113,35 @@ export function unixSwitchStatus(status_code) { | ||||||
|  * @returns {*} |  * @returns {*} | ||||||
|  */ |  */ | ||||||
| export function secrecyMobile(mobile) { | export function secrecyMobile(mobile) { | ||||||
|   mobile = String(mobile) |   mobile = String(mobile); | ||||||
|   if (!/\d{11}/.test(mobile)) { |   if (!/\d{11}/.test(mobile)) { | ||||||
|     return mobile |     return mobile; | ||||||
|   } |   } | ||||||
|   return mobile.replace(/(\d{3})(\d{4})(\d{4})/, '$1****$3') |   return mobile.replace(/(\d{3})(\d{4})(\d{4})/, "$1****$3"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| export function formatDate(date, fmt) { | export function formatDate(date, fmt) { | ||||||
|   if (/(y+)/.test(fmt)) { |   if (/(y+)/.test(fmt)) { | ||||||
|       fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)); |     fmt = fmt.replace( | ||||||
|  |       RegExp.$1, | ||||||
|  |       (date.getFullYear() + "").substr(4 - RegExp.$1.length) | ||||||
|  |     ); | ||||||
|   } |   } | ||||||
|   let o = { |   let o = { | ||||||
|       'M+': date.getMonth() + 1, |     "M+": date.getMonth() + 1, | ||||||
|       'd+': date.getDate(), |     "d+": date.getDate(), | ||||||
|       'h+': date.getHours(), |     "h+": date.getHours(), | ||||||
|       'm+': date.getMinutes(), |     "m+": date.getMinutes(), | ||||||
|       's+': date.getSeconds() |     "s+": date.getSeconds() | ||||||
|   }; |   }; | ||||||
|   for (let k in o) { |   for (let k in o) { | ||||||
|       if (new RegExp(`(${k})`).test(fmt)) { |     if (new RegExp(`(${k})`).test(fmt)) { | ||||||
|           let str = o[k] + ''; |       let str = o[k] + ""; | ||||||
|           fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str)); |       fmt = fmt.replace( | ||||||
|       } |         RegExp.$1, | ||||||
|  |         RegExp.$1.length === 1 ? str : padLeftZero(str) | ||||||
|  |       ); | ||||||
|  |     } | ||||||
|   } |   } | ||||||
|   return fmt; |   return fmt; | ||||||
| }; | } | ||||||
|  |  | ||||||
|  | @ -395,11 +395,11 @@ div.base-info-item { | ||||||
|   text-align: center; |   text-align: center; | ||||||
|   border: 1px solid transparent; |   border: 1px solid transparent; | ||||||
|   border-radius: 4px; |   border-radius: 4px; | ||||||
|   display: inline-flex; |   display: inline-block; | ||||||
|   flex-direction: column; |  | ||||||
|   background: #fff; |   background: #fff; | ||||||
|   position: relative; |   position: relative; | ||||||
|   margin-right: 4px; |   margin-right: 4px; | ||||||
|  |   vertical-align: bottom; | ||||||
| } | } | ||||||
| .demo-upload-list img { | .demo-upload-list img { | ||||||
|   width: 100%; |   width: 100%; | ||||||
|  |  | ||||||
|  | @ -12,6 +12,12 @@ | ||||||
|               <Option value="UPPER">上架</Option> |               <Option value="UPPER">上架</Option> | ||||||
|             </Select> |             </Select> | ||||||
|           </Form-item> |           </Form-item> | ||||||
|  |           <Form-item label="商品类型" prop="status"> | ||||||
|  |             <Select v-model="searchForm.goodsType" placeholder="请选择" clearable style="width: 200px"> | ||||||
|  |               <Option value="PHYSICAL_GOODS">实物商品</Option> | ||||||
|  |               <Option value="VIRTUAL_GOODS">虚拟商品</Option> | ||||||
|  |             </Select> | ||||||
|  |           </Form-item> | ||||||
|           <Form-item label="商品编号" prop="sn"> |           <Form-item label="商品编号" prop="sn"> | ||||||
|             <Input type="text" v-model="searchForm.sn" placeholder="商品编号" clearable style="width: 200px" /> |             <Input type="text" v-model="searchForm.sn" placeholder="商品编号" clearable style="width: 200px" /> | ||||||
|           </Form-item> |           </Form-item> | ||||||
|  | @ -45,11 +51,11 @@ | ||||||
| 
 | 
 | ||||||
|             <div style="margin-left: 13px;"> |             <div style="margin-left: 13px;"> | ||||||
|               <div class="div-zoom"> |               <div class="div-zoom"> | ||||||
|                 <a @click="linkTo(row.id,row.skuId)">{{row.goodsName}}</a> |                 <a @click="linkTo(row.id,row.skuId)">{{ row.goodsName }}</a> | ||||||
|               </div> |               </div> | ||||||
|               <Poptip trigger="hover" title="扫码在手机中查看" transfer> |               <Poptip trigger="hover" title="扫码在手机中查看" transfer> | ||||||
|                 <div slot="content"> |                 <div slot="content"> | ||||||
|                   <vue-qr :text="wapLinkTo(row.id,row.skuId)"  :margin="0" colorDark="#000" colorLight="#fff" :size="150"></vue-qr> |                   <vue-qr :text="wapLinkTo(row.id,row.skuId)" :margin="0" colorDark="#000" colorLight="#fff" :size="150"></vue-qr> | ||||||
|                 </div> |                 </div> | ||||||
|                 <img src="../../../assets/qrcode.svg" class="hover-pointer" width="20" height="20" alt=""> |                 <img src="../../../assets/qrcode.svg" class="hover-pointer" width="20" height="20" alt=""> | ||||||
|               </Poptip> |               </Poptip> | ||||||
|  | @ -66,8 +72,15 @@ | ||||||
|     </Card> |     </Card> | ||||||
| 
 | 
 | ||||||
|     <Modal title="更新库存" v-model="updateStockModalVisible" :mask-closable="false" :width="500"> |     <Modal title="更新库存" v-model="updateStockModalVisible" :mask-closable="false" :width="500"> | ||||||
|       <Input type="number" v-model="stockAllUpdate" placeholder="全部修改,如不需全部修改,则不需输入" /> |       <Tabs value="updateStock"> | ||||||
|       <Table :columns="updateStockColumns" :data="stockList" border :span-method="handleSpan"></Table> |         <TabPane label="手动规格更新" name="updateStock"> | ||||||
|  |           <Table :columns="updateStockColumns" :data="stockList" border :span-method="handleSpan"></Table> | ||||||
|  |         </TabPane> | ||||||
|  |         <TabPane label="批量规格更新" name="stockAll"> | ||||||
|  |           <Input type="number" v-model="stockAllUpdate" placeholder="统一规格修改" /> | ||||||
|  |         </TabPane> | ||||||
|  |       </Tabs> | ||||||
|  | 
 | ||||||
|       <div slot="footer"> |       <div slot="footer"> | ||||||
|         <Button type="text" @click="updateStockModalVisible = false">取消</Button> |         <Button type="text" @click="updateStockModalVisible = false">取消</Button> | ||||||
|         <Button type="primary" @click="updateStock">更新</Button> |         <Button type="primary" @click="updateStock">更新</Button> | ||||||
|  | @ -161,32 +174,11 @@ export default { | ||||||
|           width: 130, |           width: 130, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.isAuth == "TOBEAUDITED") { |             if (params.row.isAuth == "TOBEAUDITED") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "blue",},},"待审核"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "error", |  | ||||||
|                     text: "待审核", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.isAuth == "PASS") { |             } else if (params.row.isAuth == "PASS") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "green",},},"通过"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "success", |  | ||||||
|                     text: "审核通过", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.isAuth == "REFUSE") { |             } else if (params.row.isAuth == "REFUSE") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "red",},},"审核拒绝"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "error", |  | ||||||
|                     text: "审核拒绝", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  | @ -245,6 +237,20 @@ export default { | ||||||
|             ); |             ); | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  |         { | ||||||
|  |           title: "商品类型", | ||||||
|  |           key: "goodsType", | ||||||
|  |           width: 130, | ||||||
|  |           render: (h, params) => { | ||||||
|  |             if (params.row.goodsType === 'PHYSICAL_GOODS') { | ||||||
|  |               return h("Tag", {props: {color: "geekblue"}},"实物商品"); | ||||||
|  |             } else if (params.row.goodsType === 'VIRTUAL_GOODS') { | ||||||
|  |               return h("Tag", {props: {color: "purple"}},"虚拟商品"); | ||||||
|  |             } else { | ||||||
|  |               return h("Tag", {props: {color: "cyan"}},"电子卡券"); | ||||||
|  |             } | ||||||
|  |           }, | ||||||
|  |         }, | ||||||
|         { |         { | ||||||
|           title: "商品价格", |           title: "商品价格", | ||||||
|           key: "price", |           key: "price", | ||||||
|  | @ -274,32 +280,11 @@ export default { | ||||||
|           width: 120, |           width: 120, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.isAuth == "PASS") { |             if (params.row.isAuth == "PASS") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "green"}},"通过"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "success", |  | ||||||
|                     text: "审核通过", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.isAuth == "TOBEAUDITED") { |             } else if (params.row.isAuth == "TOBEAUDITED") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "volcano"}},"待审核"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "error", |  | ||||||
|                     text: "待审核", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.isAuth == "REFUSE") { |             } else if (params.row.isAuth == "REFUSE") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "red"}},"审核拒绝"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "error", |  | ||||||
|                     text: "审核拒绝", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  | @ -310,28 +295,12 @@ export default { | ||||||
|           sortable: false, |           sortable: false, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.marketEnable == "DOWN") { |             if (params.row.marketEnable == "DOWN") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "red"}},"下架"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "error", |  | ||||||
|                     text: "下架", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } else if (params.row.marketEnable == "UPPER") { |             } else if (params.row.marketEnable == "UPPER") { | ||||||
|               return h("div", [ |               return h("Tag", {props: {color: "green"}},"上架"); | ||||||
|                 h("Badge", { |  | ||||||
|                   props: { |  | ||||||
|                     status: "success", |  | ||||||
|                     text: "上架", |  | ||||||
|                   }, |  | ||||||
|                 }), |  | ||||||
|               ]); |  | ||||||
|             } else { |  | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
| 
 |  | ||||||
|         { |         { | ||||||
|           title: "操作", |           title: "操作", | ||||||
|           key: "action", |           key: "action", | ||||||
|  | @ -481,28 +450,28 @@ export default { | ||||||
|         } |         } | ||||||
|       }); |       }); | ||||||
|     }, |     }, | ||||||
|     changePage (v) { |     changePage(v) { | ||||||
|       this.searchForm.pageNumber = v; |       this.searchForm.pageNumber = v; | ||||||
|       this.getDataList(); |       this.getDataList(); | ||||||
|       this.clearSelectAll(); |       this.clearSelectAll(); | ||||||
|     }, |     }, | ||||||
|     changePageSize (v) { |     changePageSize(v) { | ||||||
|       this.searchForm.pageSize = v; |       this.searchForm.pageSize = v; | ||||||
|       this.getDataList(); |       this.getDataList(); | ||||||
|     }, |     }, | ||||||
|     handleSearch () { |     handleSearch() { | ||||||
|       this.searchForm.pageNumber = 1; |       this.searchForm.pageNumber = 1; | ||||||
|       this.searchForm.pageSize = 10; |       this.searchForm.pageSize = 10; | ||||||
|       this.getDataList(); |       this.getDataList(); | ||||||
|     }, |     }, | ||||||
|     handleReset () { |     handleReset() { | ||||||
|       this.searchForm = {}; |       this.searchForm = {}; | ||||||
|       this.searchForm.pageNumber = 1; |       this.searchForm.pageNumber = 1; | ||||||
|       this.searchForm.pageSize = 10; |       this.searchForm.pageSize = 10; | ||||||
|       // 重新加载数据 |       // 重新加载数据 | ||||||
|       this.getDataList(); |       this.getDataList(); | ||||||
|     }, |     }, | ||||||
|     changeSort (e) { |     changeSort(e) { | ||||||
|       this.searchForm.sort = e.key; |       this.searchForm.sort = e.key; | ||||||
|       this.searchForm.order = e.order; |       this.searchForm.order = e.order; | ||||||
|       if (e.order === "normal") { |       if (e.order === "normal") { | ||||||
|  | @ -510,15 +479,15 @@ export default { | ||||||
|       } |       } | ||||||
|       this.getDataList(); |       this.getDataList(); | ||||||
|     }, |     }, | ||||||
|     clearSelectAll () { |     clearSelectAll() { | ||||||
|       this.$refs.table.selectAll(false); |       this.$refs.table.selectAll(false); | ||||||
|     }, |     }, | ||||||
|     changeSelect (e) { |     changeSelect(e) { | ||||||
|       this.selectList = e; |       this.selectList = e; | ||||||
|       this.selectCount = e.length; |       this.selectCount = e.length; | ||||||
|     }, |     }, | ||||||
|     //保存运费模板信息 |     //保存运费模板信息 | ||||||
|     saveShipTemplate () { |     saveShipTemplate() { | ||||||
|       if (this.shipTemplateForm.freightPayer == "STORE") { |       if (this.shipTemplateForm.freightPayer == "STORE") { | ||||||
|         { |         { | ||||||
|           this.shipTemplateForm.templateId = 0; |           this.shipTemplateForm.templateId = 0; | ||||||
|  | @ -716,10 +685,10 @@ export default { | ||||||
|       }); |       }); | ||||||
|     }, |     }, | ||||||
|   }, |   }, | ||||||
|   mounted () { |   mounted() { | ||||||
|      this.init(); |     this.init(); | ||||||
|   }, |   }, | ||||||
|   activated () { |   activated() { | ||||||
|     this.init(); |     this.init(); | ||||||
|   }, |   }, | ||||||
| }; | }; | ||||||
|  |  | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -44,23 +44,27 @@ export default { | ||||||
|      */ |      */ | ||||||
|     open(val, index) { |     open(val, index) { | ||||||
|       if (val) { |       if (val) { | ||||||
|  |         // console.warn(val); | ||||||
|         //已选中的地址 |         //已选中的地址 | ||||||
|         let checkedData = this.$store.state.shipTemplate; |         let checkedData = this.$store.state.shipTemplate; | ||||||
| 
 | 
 | ||||||
|  |         // console.warn(this.$store.state.shipTemplate); | ||||||
|         // 禁止选中的地址 |         // 禁止选中的地址 | ||||||
|         let disabledData = checkedData.filter((item, i) => { |         let disabledData = checkedData.filter((item, i) => { | ||||||
|           return i != index; |           return i != index; | ||||||
|         }); |         }); | ||||||
| 
 |  | ||||||
|         disabledData.forEach((dis) => { |         disabledData.forEach((dis) => { | ||||||
|  |           console.log(dis) | ||||||
|           // 循环出已经选中的地址id |           // 循环出已经选中的地址id | ||||||
|           dis.areaId.split(",").forEach((ids) => { |           dis.areaId.split(",").forEach((ids) => { | ||||||
|             // 循环出省份 |             // 循环出省份 | ||||||
|             this.data.forEach((item) => { |             this.data.forEach((item) => { | ||||||
|               // 如果当前省份下市区全部选中则选中该省份 |               // 如果当前省份下市区全部选中则选中该省份 | ||||||
|  | 
 | ||||||
|               if (dis.selectedAll) { |               if (dis.selectedAll) { | ||||||
|                 dis.area.split(",").forEach((area) => { |                 dis.area.split(",").forEach((area) => { | ||||||
|                   if (area == item.name) { |                   if (area == item.name) { | ||||||
|  |                     console.log(item.name +"选中") | ||||||
|                     this.$set(item, "disabled", true); |                     this.$set(item, "disabled", true); | ||||||
|                   } |                   } | ||||||
|                 }); |                 }); | ||||||
|  | @ -99,7 +103,11 @@ export default { | ||||||
| 
 | 
 | ||||||
|         // 筛选出当前选中的市 |         // 筛选出当前选中的市 | ||||||
|         sort.forEach((sortItem, sortIndex) => { |         sort.forEach((sortItem, sortIndex) => { | ||||||
|           if (item.level != "province" && sortItem.id == item.parentId && !item.disabled) { |           if ( | ||||||
|  |             item.level != "province" && | ||||||
|  |             sortItem.id == item.parentId && | ||||||
|  |             !item.disabled | ||||||
|  |           ) { | ||||||
|             sortItem.selectedList.push({ |             sortItem.selectedList.push({ | ||||||
|               ...item, |               ...item, | ||||||
|             }); |             }); | ||||||
|  | @ -147,6 +155,7 @@ export default { | ||||||
|             this.selectedWay.push({ name: data.title, id: data.id }); |             this.selectedWay.push({ name: data.title, id: data.id }); | ||||||
|           }); |           }); | ||||||
|           console.log(this.data); |           console.log(this.data); | ||||||
|  |           this.$store.state.regions = this.data; | ||||||
|         } |         } | ||||||
|       }); |       }); | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
|  | @ -162,7 +162,7 @@ export default { | ||||||
| } | } | ||||||
| .login { | .login { | ||||||
|   height: 100%; |   height: 100%; | ||||||
|   background: url("../assets/background.svg") no-repeat; |   background: url("../assets/background.png") no-repeat; | ||||||
|   background-size: 100%; |   background-size: 100%; | ||||||
|   background-position-y: bottom; |   background-position-y: bottom; | ||||||
|   background-color: #edf0f3; |   background-color: #edf0f3; | ||||||
|  |  | ||||||
|  | @ -134,21 +134,18 @@ export default { | ||||||
|           key: "name", |           key: "name", | ||||||
|           minWidth: 120 |           minWidth: 120 | ||||||
|         }, |         }, | ||||||
| 
 |  | ||||||
|         { |         { | ||||||
|           title: "状态", |           title: "状态", | ||||||
|           key: "disabled", |           key: "disabled", | ||||||
|           minWidth: 50, |           minWidth: 50, | ||||||
|           render(h, params) { |           render(h, params) { | ||||||
|             return h("Badge", { |             if(params.row.disabled){ | ||||||
|               props: { |               return h("div", [h("tag", {props: {color: "green"}}, "开启")]); | ||||||
|                 status: params.row.disabled ? "success" : "error", |             }else{ | ||||||
|                 text: params.row.disabled ? "开启" : "关闭", |               return h("div", [h("tag", {props: {color: "volcano"}}, "关闭")]); | ||||||
|               }, |             } | ||||||
|             }); |  | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
| 
 |  | ||||||
|         { |         { | ||||||
|           title: "操作", |           title: "操作", | ||||||
|           key: "action", |           key: "action", | ||||||
|  |  | ||||||
|  | @ -1,14 +1,14 @@ | ||||||
| <template> | <template> | ||||||
|   <div class="foot"> |   <div class="foot"> | ||||||
|     <Row type="flex" justify="space-around" class="help"> |     <Row type="flex" justify="space-around" class="help"> | ||||||
|       <a class="item" href="https://lilishop.com" target="_blank">{{ $t('help') }}</a> |       <a class="item" href="https://pickmall.cn/" target="_blank">{{ $t('help') }}</a> | ||||||
|       <a class="item" href="https://lilishop.com" target="_blank">{{ $t('privacy') }}</a> |       <a class="item" href="https://pickmall.cn/" target="_blank">{{ $t('privacy') }}</a> | ||||||
|       <a class="item" href="https://lilishop.com" target="_blank">{{ $t('terms') }}</a> |       <a class="item" href="https://pickmall.cn/" target="_blank">{{ $t('terms') }}</a> | ||||||
|     </Row> |     </Row> | ||||||
|     <Row type="flex" justify="center" class="copyright"> |     <Row type="flex" justify="center" class="copyright"> | ||||||
|       Copyright © 2020 - Present |       Copyright © 2020 - Present | ||||||
|       <a |       <a | ||||||
|         href="http://lili.cn" |         href="https://pickmall.cn/" | ||||||
|         target="_blank" |         target="_blank" | ||||||
|         style="margin:0 5px;" |         style="margin:0 5px;" | ||||||
|       >lili-shop</a> {{ $t('rights') }} |       >lili-shop</a> {{ $t('rights') }} | ||||||
|  |  | ||||||
|  | @ -210,11 +210,11 @@ export default { | ||||||
|           width: 100, |           width: 100, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.grade == "GOOD") { |             if (params.row.grade == "GOOD") { | ||||||
|               return h("Badge", {props: {status: "success", text: "好评"}}) |               return h("Tag", {props: {color: "green",},}, "好评"); | ||||||
|             } else if (params.row.grade == "MODERATE") { |             } else if (params.row.grade == "MODERATE") { | ||||||
|               return h("Badge", {props: {status: "success", text: "中评"}}) |               return h("Tag", {props: {color: "orange",},}, "中评"); | ||||||
|             } else if (params.row.grade == "WORSE") { |             } else { | ||||||
|               return h("Badge", {props: {status: "error", text: "差评"}}) |               return h("Tag", {props: {color: "red",},}, "差评"); | ||||||
|             } |             } | ||||||
|           } |           } | ||||||
|         }, |         }, | ||||||
|  | @ -224,9 +224,9 @@ export default { | ||||||
|           width: 100, |           width: 100, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.status === "OPEN") { |             if (params.row.status === "OPEN") { | ||||||
|               return h("Badge", {props: {status: "success", text: "展示"}}) |               return h("Tag", {props: {color: "green"}},"展示") | ||||||
|             } else { |             } else { | ||||||
|               return h("Badge", {props: {status: "error", text: "隐藏"}}) |               return h("Tag", {props: {color: "red"}},"隐藏") | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  | @ -236,9 +236,9 @@ export default { | ||||||
|           width: 110, |           width: 110, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.replyStatus) { |             if (params.row.replyStatus) { | ||||||
|               return h("Badge", {props: {status: "success", text: "已回复"}}) |               return h("Tag", {props: {color: "green"}},"已回复") | ||||||
|             } else { |             } else { | ||||||
|               return h("Badge", {props: {status: "error", text: "未回复"}}) |               return h("Tag", {props: {color: "blue"}},"未回复") | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  |  | ||||||
|  | @ -1,49 +1,50 @@ | ||||||
| <template> | <template> | ||||||
|   <div> |   <div> | ||||||
|     <vuedraggable |     <div class="upload-pic-thumb"> | ||||||
|       :list="uploadList" |       <vuedraggable | ||||||
|       :disabled="!draggable||!multiple" |         :list="uploadList" | ||||||
|       :animation="200" |         :disabled="!draggable||!multiple" | ||||||
|       class="list-group" |         :animation="200" | ||||||
|       ghost-class="thumb-ghost" |         class="list-group" | ||||||
|       @end="onEnd" |         ghost-class="thumb-ghost" | ||||||
|     > |         @end="onEnd" | ||||||
|       <div class="upload-list" v-for="(item, index) in uploadList" :key="index"> |       > | ||||||
|         <div v-if="item.status == 'finished'"> |         <div class="upload-list" v-for="(item, index) in uploadList" :key="index"> | ||||||
|           <img :src="item.url" /> |           <div v-if="item.status == 'finished'"> | ||||||
|           <div class="upload-list-cover"> |             <img :src="item.url" /> | ||||||
|             <Icon type="ios-eye-outline" @click="handleView(item.url)"></Icon> |             <div class="upload-list-cover"> | ||||||
|             <Icon v-if="remove" type="ios-trash-outline" @click="handleRemove(item)"></Icon> |               <Icon type="ios-eye-outline" @click="handleView(item.url)"></Icon> | ||||||
|  |               <Icon v-if="remove" type="ios-trash-outline" @click="handleRemove(item)"></Icon> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |           <div v-else> | ||||||
|  |             <Progress v-if="item.showProgress" :percent="item.percentage" hide-info></Progress> | ||||||
|           </div> |           </div> | ||||||
|         </div> |         </div> | ||||||
|         <div v-else> |       </vuedraggable> | ||||||
|           <Progress v-if="item.showProgress" :percent="item.percentage" hide-info></Progress> |       <Upload | ||||||
|  |         :disabled="disable" | ||||||
|  |         ref="upload" | ||||||
|  |         :multiple="multiple" | ||||||
|  |         :show-upload-list="false" | ||||||
|  |         :on-success="handleSuccess" | ||||||
|  |         :on-error="handleError" | ||||||
|  |         :format="['jpg','jpeg','png','gif']" | ||||||
|  |         :max-size="maxSize*1024" | ||||||
|  |         :on-format-error="handleFormatError" | ||||||
|  |         :on-exceeded-size="handleMaxSize" | ||||||
|  |         :before-upload="handleBeforeUpload" | ||||||
|  |         type="drag" | ||||||
|  |         :action="uploadFileUrl" | ||||||
|  |         :headers="accessToken" | ||||||
|  |         style="display: inline-block;width:58px;" | ||||||
|  |         v-if="!isView" | ||||||
|  |       > | ||||||
|  |         <div style="width: 58px;height:58px;line-height: 58px;"> | ||||||
|  |           <Icon type="md-camera" size="20"></Icon> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </Upload> | ||||||
|     </vuedraggable> |     </div> | ||||||
|     <Upload |  | ||||||
|       :disabled="disable" |  | ||||||
|       ref="upload" |  | ||||||
|       :multiple="multiple" |  | ||||||
|       :show-upload-list="false" |  | ||||||
|       :on-success="handleSuccess" |  | ||||||
|       :on-error="handleError" |  | ||||||
|       :format="['jpg','jpeg','png','gif']" |  | ||||||
|       :max-size="maxSize*1024" |  | ||||||
|       :on-format-error="handleFormatError" |  | ||||||
|       :on-exceeded-size="handleMaxSize" |  | ||||||
|       :before-upload="handleBeforeUpload" |  | ||||||
|       type="drag" |  | ||||||
|       :action="uploadFileUrl" |  | ||||||
|       :headers="accessToken" |  | ||||||
|       style="display: inline-block;width:58px;" |  | ||||||
|       v-if="!isView" |  | ||||||
|     > |  | ||||||
|       <div style="width: 58px;height:58px;line-height: 58px;"> |  | ||||||
|         <Icon type="md-camera" size="20"></Icon> |  | ||||||
|       </div> |  | ||||||
|     </Upload> |  | ||||||
| 
 |  | ||||||
|     <Modal title="图片预览" v-model="viewImage" :styles="{top: '30px'}" draggable> |     <Modal title="图片预览" v-model="viewImage" :styles="{top: '30px'}" draggable> | ||||||
|       <img :src="imgUrl" alt="无效的图片链接" style="width: 100%;margin: 0 auto;display: block;" /> |       <img :src="imgUrl" alt="无效的图片链接" style="width: 100%;margin: 0 auto;display: block;" /> | ||||||
|       <div slot="footer"> |       <div slot="footer"> | ||||||
|  | @ -252,10 +253,12 @@ export default { | ||||||
|   } |   } | ||||||
| }; | }; | ||||||
| </script> | </script> | ||||||
| 
 |  | ||||||
| <style lang="scss" scoped> | <style lang="scss" scoped> | ||||||
|  | .upload-pic-thumb{ | ||||||
|  |   display: flex; | ||||||
|  | } | ||||||
| .upload-list { | .upload-list { | ||||||
|   display: inline-block; |   display: inline-flex; | ||||||
|   width: 60px; |   width: 60px; | ||||||
|   height: 60px; |   height: 60px; | ||||||
|   text-align: center; |   text-align: center; | ||||||
|  | @ -267,6 +270,7 @@ export default { | ||||||
|   position: relative; |   position: relative; | ||||||
|   box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); |   box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); | ||||||
|   margin-right: 5px; |   margin-right: 5px; | ||||||
|  |   vertical-align: middle; | ||||||
| } | } | ||||||
| .upload-list img { | .upload-list img { | ||||||
|   width: 100%; |   width: 100%; | ||||||
|  |  | ||||||
|  | @ -98,14 +98,14 @@ export default { | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   created () { |   created () { | ||||||
|     this.getImg(); |     // this.getImg(); | ||||||
|   }, |   }, | ||||||
|   watch: { |   watch: { | ||||||
|     verifyType: { |     verifyType: { | ||||||
|       immediate: true, |       immediate: true, | ||||||
|       handler: function (v) { |       handler: function (v) { | ||||||
|         this.type = v; |         this.type = v; | ||||||
|         this.refresh(); |         // this.refresh(); | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     show (v) { |     show (v) { | ||||||
|  |  | ||||||
|  | @ -185,17 +185,17 @@ | ||||||
|             key: "complainStatus", |             key: "complainStatus", | ||||||
|             render: (h, params) => { |             render: (h, params) => { | ||||||
|               if (params.row.complainStatus == "NEW") { |               if (params.row.complainStatus == "NEW") { | ||||||
|                 return h('div', [h('span', { }, '新投诉'),]); |                 return h('div', [h('tag',{props: {color: "purple"}}, '新投诉'),]); | ||||||
|               } else if (params.row.complainStatus == "CANCEL") { |               } else if (params.row.complainStatus == "CANCEL") { | ||||||
|                 return h('div', [h('span', { }, '已撤销'),]); |                 return h('div', [h('tag', {props: {color: "cyan"}}, '已撤销'),]); | ||||||
|               } else if (params.row.complainStatus == "WAIT_APPEAL") { |               } else if (params.row.complainStatus == "WAIT_APPEAL") { | ||||||
|                 return h('div', [h('span', { }, '待申诉'),]); |                 return h('div', [h('tag', {props: {color: "volcano"}}, '待申诉'),]); | ||||||
|               } else if (params.row.complainStatus == "COMMUNICATION") { |               } else if (params.row.complainStatus == "COMMUNICATION") { | ||||||
|                 return h('div', [h('span', { }, '对话中'),]); |                 return h('div', [h('tag', {props: {color: "orange"}}, '对话中'),]); | ||||||
|               }else if (params.row.complainStatus == "WAIT_ARBITRATION") { |               }else if (params.row.complainStatus == "WAIT_ARBITRATION") { | ||||||
|                 return h('div', [h('span', { }, '等待仲裁'),]); |                 return h('div', [h('tag', {props: {color: "blue"}}, '等待仲裁'),]); | ||||||
|               }else if (params.row.complainStatus == "COMPLETE") { |               }else if (params.row.complainStatus == "COMPLETE") { | ||||||
|                 return h('div', [h('span', { }, '已完成'),]); |                 return h('div', [h('tag', {props: {color: "green"}}, '已完成'),]); | ||||||
|               } |               } | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|  |  | ||||||
|  | @ -176,25 +176,23 @@ | ||||||
|             width: 120, |             width: 120, | ||||||
|             render: (h, params) => { |             render: (h, params) => { | ||||||
|               if (params.row.serviceStatus == "APPLY") { |               if (params.row.serviceStatus == "APPLY") { | ||||||
|                 return h('div', [h('span', { }, '申请售后'),]); |                 return h('div', [h('tag', {props: {color: "blue"}}, '申请中'),]); | ||||||
|               } else if (params.row.serviceStatus == "PASS") { |               } else if (params.row.serviceStatus == "PASS") { | ||||||
|                 return h('div', [h('span', { }, '审核通过'),]); |                 return h('div', [h('tag', {props: {color: "cyan"}}, '通过售后'),]); | ||||||
|               } else if (params.row.serviceStatus == "REFUSE") { |               } else if (params.row.serviceStatus == "REFUSE") { | ||||||
|                 return h('div', [h('span', { }, '审核拒绝'),]); |                 return h('div', [h('tag', {props: {color: "volcano"}}, '拒绝售后'),]); | ||||||
|               } else if (params.row.serviceStatus == "BUYER_RETURN") { |               } else if (params.row.serviceStatus == "BUYER_RETURN") { | ||||||
|                 return h('div', [h('span', { }, '买家退货,待卖家收货'),]); |                 return h('div', [h('tag', {props: {color: "orange"}}, '买家退货,待卖家收货'),]); | ||||||
|               }else if (params.row.serviceStatus == "SELLER_RE_DELIVERY") { |               } else if (params.row.serviceStatus == "SELLER_CONFIRM") { | ||||||
|                 return h('div', [h('span', { }, '商家换货/补发'),]); |                 return h('div', [h('tag', {props: {color: "gold"}}, '卖家确认收货'),]); | ||||||
|               }else if (params.row.serviceStatus == "SELLER_CONFIRM") { |               } else if (params.row.serviceStatus == "SELLER_TERMINATION") { | ||||||
|                 return h('div', [h('span', { }, '卖家确认收货'),]); |                 return h('div', [h('tag', {props: {color: "lime"}}, '卖家终止售后'),]); | ||||||
|               }else if (params.row.serviceStatus == "SELLER_TERMINATION") { |               } else if (params.row.serviceStatus == "BUYER_CANCEL") { | ||||||
|                 return h('div', [h('span', { }, '卖家终止售后'),]); |                 return h('div', [h('tag', {props: {color: "purple"}}, '买家取消售后'),]); | ||||||
|               }else if (params.row.serviceStatus == "BUYER_CONFIRM") { |               } else if (params.row.serviceStatus == "COMPLETE") { | ||||||
|                 return h('div', [h('span', { }, '买家确认收货'),]); |                 return h('div', [h('tag', {props: {color: "green"}}, '完成售后'),]); | ||||||
|               }else if (params.row.serviceStatus == "BUYER_CANCEL") { |               }else if (params.row.serviceStatus == "WAIT_REFUND") { | ||||||
|                 return h('div', [h('span', { }, '买家取消售后'),]); |                 return h('div', [h('tag', {props: {color: "geekblue"}}, '待平台退款'),]); | ||||||
|               }else if (params.row.serviceStatus == "COMPLETE") { |  | ||||||
|                 return h('div', [h('span', { }, '完成'),]); |  | ||||||
|               } |               } | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|  |  | ||||||
|  | @ -182,27 +182,17 @@ | ||||||
|             minWidth: 120, |             minWidth: 120, | ||||||
|             render: (h, params) => { |             render: (h, params) => { | ||||||
|               if (params.row.serviceStatus == "APPLY") { |               if (params.row.serviceStatus == "APPLY") { | ||||||
|                 return h('div', [h('span', { }, '申请售后'),]); |                 return h('div', [h('tag', {props: {color: "blue"}}, '申请中'),]); | ||||||
|               } else if (params.row.serviceStatus == "PASS") { |               } else if (params.row.serviceStatus == "PASS") { | ||||||
|                 return h('div', [h('span', { }, '审核通过'),]); |                 return h('div', [h('tag', {props: {color: "cyan"}}, '通过售后'),]); | ||||||
|               } else if (params.row.serviceStatus == "REFUSE") { |               } else if (params.row.serviceStatus == "REFUSE") { | ||||||
|                 return h('div', [h('span', { }, '审核拒绝'),]); |                 return h('div', [h('tag', {props: {color: "volcano"}}, '拒绝售后'),]); | ||||||
|               } else if (params.row.serviceStatus == "BUYER_RETURN") { |               } else if (params.row.serviceStatus == "BUYER_CANCEL") { | ||||||
|                 return h('div', [h('span', { }, '买家退货,待卖家收货'),]); |                 return h('div', [h('tag', {props: {color: "purple"}}, '买家取消售后'),]); | ||||||
|               }else if (params.row.serviceStatus == "SELLER_RE_DELIVERY") { |               } else if (params.row.serviceStatus == "COMPLETE") { | ||||||
|                 return h('div', [h('span', { }, '商家换货/补发'),]); |                 return h('div', [h('tag', {props: {color: "green"}}, '完成售后'),]); | ||||||
|               }else if (params.row.serviceStatus == "SELLER_CONFIRM") { |  | ||||||
|                 return h('div', [h('span', { }, '卖家确认收货'),]); |  | ||||||
|               }else if (params.row.serviceStatus == "SELLER_TERMINATION") { |  | ||||||
|                 return h('div', [h('span', { }, '卖家终止售后'),]); |  | ||||||
|               }else if (params.row.serviceStatus == "BUYER_CONFIRM") { |  | ||||||
|                 return h('div', [h('span', { }, '买家确认收货'),]); |  | ||||||
|               }else if (params.row.serviceStatus == "BUYER_CANCEL") { |  | ||||||
|                 return h('div', [h('span', { }, '买家取消售后'),]); |  | ||||||
|               }else if (params.row.serviceStatus == "WAIT_REFUND") { |               }else if (params.row.serviceStatus == "WAIT_REFUND") { | ||||||
|                 return h('div', [h('span', { }, '等待平台退款'),]); |                 return h('div', [h('tag', {props: {color: "geekblue"}}, '待平台退款'),]); | ||||||
|               }else if (params.row.serviceStatus == "COMPLETE") { |  | ||||||
|                 return h('div', [h('span', { }, '完成'),]); |  | ||||||
|               } |               } | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ | ||||||
|         <div class="div-item"> |         <div class="div-item"> | ||||||
|           <div class="div-item-left">订单来源:</div> |           <div class="div-item-left">订单来源:</div> | ||||||
|           <div class="div-item-right"> |           <div class="div-item-right"> | ||||||
|             {{ orderInfo.order.clientType }} |             {{  orderInfo.order.clientType | clientTypeWay }} | ||||||
|           </div> |           </div> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
|  | @ -53,8 +53,8 @@ export default { | ||||||
|         // 搜索框初始化对象 |         // 搜索框初始化对象 | ||||||
|         pageNumber: 1, // 当前页数 |         pageNumber: 1, // 当前页数 | ||||||
|         pageSize: 10, // 页面大小 |         pageSize: 10, // 页面大小 | ||||||
|         sort: "createTime", // 默认排序字段 |         sort: "", // 默认排序字段 | ||||||
|         order: "desc", // 默认排序方式 |         order: "", // 默认排序方式 | ||||||
|         startDate: "", // 起始时间 |         startDate: "", // 起始时间 | ||||||
|         endDate: "", // 终止时间 |         endDate: "", // 终止时间 | ||||||
|         orderSn: "", |         orderSn: "", | ||||||
|  | @ -80,7 +80,7 @@ export default { | ||||||
|         { |         { | ||||||
|           title: "订单号", |           title: "订单号", | ||||||
|           key: "sn", |           key: "sn", | ||||||
|           minWidth: 240, |           minWidth: 200, | ||||||
|           tooltip: true, |           tooltip: true, | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|  | @ -95,7 +95,7 @@ export default { | ||||||
|             } else if (params.row.clientType == "WECHAT_MP") { |             } else if (params.row.clientType == "WECHAT_MP") { | ||||||
|               return h("div", {}, "小程序端"); |               return h("div", {}, "小程序端"); | ||||||
|             } else if (params.row.clientType == "APP") { |             } else if (params.row.clientType == "APP") { | ||||||
|               return h("div", {}, "移动应用端"); |               return h("div", {}, "APP端"); | ||||||
|             } else { |             } else { | ||||||
|               return h("div", {}, params.row.clientType); |               return h("div", {}, params.row.clientType); | ||||||
|             } |             } | ||||||
|  | @ -126,30 +126,27 @@ export default { | ||||||
|           minWidth: 100, |           minWidth: 100, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.orderStatus == "UNPAID") { |             if (params.row.orderStatus == "UNPAID") { | ||||||
|               return h("div", [h("span", {}, "未付款")]); |               return h("div", [h("tag", {props: {color: "magenta"}}, "未付款")]); | ||||||
|             } else if (params.row.orderStatus == "PAID") { |             } else if (params.row.orderStatus == "PAID") { | ||||||
|               return h("div", [h("span", {}, "已付款")]); |               return h("div", [h("tag", {props: {color: "blue"}}, "已付款")]); | ||||||
|             } else if (params.row.orderStatus == "UNDELIVERED") { |             } else if (params.row.orderStatus == "UNDELIVERED") { | ||||||
|               return h("div", [h("span", {}, "待发货")]); |               return h("div", [h("tag", {props: {color: "geekblue"}}, "待发货")]); | ||||||
|             } else if (params.row.orderStatus == "DELIVERED") { |             } else if (params.row.orderStatus == "DELIVERED") { | ||||||
|               return h("div", [h("span", {}, "已发货")]); |               return h("div", [h("tag", {props: {color: "cyan"}}, "已发货")]); | ||||||
|             } else if (params.row.orderStatus == "COMPLETED") { |             } else if (params.row.orderStatus == "COMPLETED") { | ||||||
|               return h("div", [h("span", {}, "已完成")]); |               return h("div", [h("tag", {props: {color: "green"}}, "已完成")]); | ||||||
|             } else if (params.row.orderStatus == "TAKE") { |             } else if (params.row.orderStatus == "TAKE") { | ||||||
|               return h("div", [h("span", {}, "待核验")]); |               return h("div", [h("tag", {props: {color: "volcano"}}, "待核验")]); | ||||||
|             } else if (params.row.orderStatus == "CANCELLED") { |             } else if (params.row.orderStatus == "CANCELLED") { | ||||||
|               return h("div", [h("span", {}, "已取消")]); |               return h("div", [h("tag", {props: {color: "red"}}, "已取消")]); | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: "下单时间", |           title: "下单时间", | ||||||
|           key: "createTime", |           key: "createTime", | ||||||
|           width: 170, |           width: 170 | ||||||
|           sortable: true, |  | ||||||
|           sortType: "desc", |  | ||||||
|         }, |         }, | ||||||
| 
 |  | ||||||
|         { |         { | ||||||
|           title: "操作", |           title: "操作", | ||||||
|           key: "action", |           key: "action", | ||||||
|  |  | ||||||
|  | @ -69,7 +69,7 @@ export default { | ||||||
|         orderSn: "", |         orderSn: "", | ||||||
|         buyerName: "", |         buyerName: "", | ||||||
|         orderStatus: "", |         orderStatus: "", | ||||||
|         orderType:"VIRTUAL" |         orderType: "VIRTUAL", | ||||||
|       }, |       }, | ||||||
|       selectDate: null, |       selectDate: null, | ||||||
|       form: { |       form: { | ||||||
|  | @ -135,19 +135,19 @@ export default { | ||||||
|           minWidth: 100, |           minWidth: 100, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.orderStatus == "UNPAID") { |             if (params.row.orderStatus == "UNPAID") { | ||||||
|               return h("div", [h("span", {}, "未付款")]); |               return h("div", [h("tag", {props: {color: "magenta"}}, "未付款")]); | ||||||
|             } else if (params.row.orderStatus == "PAID") { |             } else if (params.row.orderStatus == "PAID") { | ||||||
|               return h("div", [h("span", {}, "已付款")]); |               return h("div", [h("tag", {props: {color: "blue"}}, "已付款")]); | ||||||
|             } else if (params.row.orderStatus == "UNDELIVERED") { |             } else if (params.row.orderStatus == "UNDELIVERED") { | ||||||
|               return h("div", [h("span", {}, "待发货")]); |               return h("div", [h("tag", {props: {color: "geekblue"}}, "待发货")]); | ||||||
|             } else if (params.row.orderStatus == "DELIVERED") { |             } else if (params.row.orderStatus == "DELIVERED") { | ||||||
|               return h("div", [h("span", {}, "已发货")]); |               return h("div", [h("tag", {props: {color: "cyan"}}, "已发货")]); | ||||||
|             } else if (params.row.orderStatus == "COMPLETED") { |             } else if (params.row.orderStatus == "COMPLETED") { | ||||||
|               return h("div", [h("span", {}, "已完成")]); |               return h("div", [h("tag", {props: {color: "green"}}, "已完成")]); | ||||||
|             } else if (params.row.orderStatus == "TAKE") { |             } else if (params.row.orderStatus == "TAKE") { | ||||||
|               return h("div", [h("span", {}, "待核验")]); |               return h("div", [h("tag", {props: {color: "volcano"}}, "待核验")]); | ||||||
|             } else if (params.row.orderStatus == "CANCELLED") { |             } else if (params.row.orderStatus == "CANCELLED") { | ||||||
|               return h("div", [h("span", {}, "已取消")]); |               return h("div", [h("tag", {props: {color: "red"}}, "已取消")]); | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|  | @ -200,8 +200,6 @@ export default { | ||||||
|       let result = await verificationCode(this.orderCode); |       let result = await verificationCode(this.orderCode); | ||||||
| 
 | 
 | ||||||
|       if (result.success) { |       if (result.success) { | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|         this.$router.push({ |         this.$router.push({ | ||||||
|           name: "order-detail", |           name: "order-detail", | ||||||
|           query: { sn: result.result.sn || this.orderCode }, |           query: { sn: result.result.sn || this.orderCode }, | ||||||
|  | @ -228,6 +226,7 @@ export default { | ||||||
|       this.searchForm = {}; |       this.searchForm = {}; | ||||||
|       this.searchForm.pageNumber = 1; |       this.searchForm.pageNumber = 1; | ||||||
|       this.searchForm.pageSize = 10; |       this.searchForm.pageSize = 10; | ||||||
|  |       this.searchForm.orderType = "VIRTUAL"; | ||||||
|       this.selectDate = null; |       this.selectDate = null; | ||||||
|       this.searchForm.startDate = ""; |       this.searchForm.startDate = ""; | ||||||
|       this.searchForm.endDate = ""; |       this.searchForm.endDate = ""; | ||||||
|  |  | ||||||
|  | @ -2,39 +2,15 @@ | ||||||
|   <div class="search"> |   <div class="search"> | ||||||
|     <Card> |     <Card> | ||||||
|       <Row @keydown.enter.native="handleSearch"> |       <Row @keydown.enter.native="handleSearch"> | ||||||
|         <Form |         <Form ref="searchForm" :model="searchForm" inline :label-width="70" class="search-form"> | ||||||
|           ref="searchForm" |  | ||||||
|           :model="searchForm" |  | ||||||
|           inline |  | ||||||
|           :label-width="70" |  | ||||||
|           class="search-form" |  | ||||||
|         > |  | ||||||
|           <Form-item label="订单编号" prop="orderSn"> |           <Form-item label="订单编号" prop="orderSn"> | ||||||
|             <Input |             <Input type="text" v-model="searchForm.orderSn" clearable placeholder="请输入订单编号" style="width: 200px" /> | ||||||
|               type="text" |  | ||||||
|               v-model="searchForm.orderSn" |  | ||||||
|               clearable |  | ||||||
|               placeholder="请输入订单编号" |  | ||||||
|               style="width: 200px" |  | ||||||
|             /> |  | ||||||
|           </Form-item> |           </Form-item> | ||||||
|           <Form-item label="会员名称" prop="memberName"> |           <Form-item label="会员名称" prop="memberName"> | ||||||
|             <Input |             <Input type="text" v-model="searchForm.memberName" clearable placeholder="请输入会员名称" style="width: 200px" /> | ||||||
|               type="text" |  | ||||||
|               v-model="searchForm.memberName" |  | ||||||
|               clearable |  | ||||||
|               placeholder="请输入会员名称" |  | ||||||
|               style="width: 200px" |  | ||||||
|             /> |  | ||||||
|           </Form-item> |           </Form-item> | ||||||
|           <Form-item label="发票抬头" prop="receiptTitle"> |           <Form-item label="发票抬头" prop="receiptTitle"> | ||||||
|             <Input |             <Input type="text" v-model="searchForm.receiptTitle" clearable placeholder="请输入发票抬头" style="width: 200px" /> | ||||||
|               type="text" |  | ||||||
|               v-model="searchForm.receiptTitle" |  | ||||||
|               clearable |  | ||||||
|               placeholder="请输入发票抬头" |  | ||||||
|               style="width: 200px" |  | ||||||
|             /> |  | ||||||
|           </Form-item> |           </Form-item> | ||||||
|           <Form-item label="状态" prop="receiptStatus"> |           <Form-item label="状态" prop="receiptStatus"> | ||||||
|             <Select v-model="searchForm.receiptStatus" placeholder="请选择" clearable style="width: 200px"> |             <Select v-model="searchForm.receiptStatus" placeholder="请选择" clearable style="width: 200px"> | ||||||
|  | @ -46,275 +22,280 @@ | ||||||
|           <Button @click="handleReset" class="search-btn">重置</Button> |           <Button @click="handleReset" class="search-btn">重置</Button> | ||||||
|         </Form> |         </Form> | ||||||
|       </Row> |       </Row> | ||||||
|       <Table |       <Table :loading="loading" border :columns="columns" :data="data" ref="table" sortable="custom" @on-sort-change="changeSort" @on-selection-change="changeSelect"> | ||||||
|         :loading="loading" |  | ||||||
|         border |  | ||||||
|         :columns="columns" |  | ||||||
|         :data="data" |  | ||||||
|         ref="table" |  | ||||||
|         sortable="custom" |  | ||||||
|         @on-sort-change="changeSort" |  | ||||||
|         @on-selection-change="changeSelect" |  | ||||||
|       > |  | ||||||
|         <!-- 订单详情格式化 --> |         <!-- 订单详情格式化 --> | ||||||
|         <template slot="orderSlot" slot-scope="scope"> |         <template slot="orderSlot" slot-scope="scope"> | ||||||
|           <a |           <a @click="$router.push({name: 'order-detail',query: {sn: scope.row.orderSn}})">{{scope.row.orderSn}}</a> | ||||||
|             @click="$router.push({name: 'order-detail',query: {sn: scope.row.orderSn}})">{{scope.row.orderSn}}</a> |  | ||||||
|         </template> |         </template> | ||||||
|       </Table> |       </Table> | ||||||
|       <Row type="flex" justify="end" class="page"> |       <Row type="flex" justify="end" class="page"> | ||||||
|         <Page |         <Page :current="searchForm.pageNumber" :total="total" :page-size="searchForm.pageSize" @on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]" size="small" | ||||||
|           :current="searchForm.pageNumber" |           show-total show-elevator show-sizer></Page> | ||||||
|           :total="total" |  | ||||||
|           :page-size="searchForm.pageSize" |  | ||||||
|           @on-change="changePage" |  | ||||||
|           @on-page-size-change="changePageSize" |  | ||||||
|           :page-size-opts="[10, 20, 50]" |  | ||||||
|           size="small" |  | ||||||
|           show-total |  | ||||||
|           show-elevator |  | ||||||
|           show-sizer |  | ||||||
|         ></Page> |  | ||||||
|       </Row> |       </Row> | ||||||
|     </Card> |     </Card> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
| <script> | <script> | ||||||
|   import * as API_Order from "@/api/order"; | import * as API_Order from "@/api/order"; | ||||||
| 
 | 
 | ||||||
|   export default { | export default { | ||||||
|     name: "storeBill", |   name: "storeBill", | ||||||
|     components: {}, |   components: {}, | ||||||
|     data() { |   data() { | ||||||
|       return { |     return { | ||||||
|         loading: true, // 表单加载状态 |       loading: true, // 表单加载状态 | ||||||
|         searchForm: { |       searchForm: { | ||||||
|           // 搜索框初始化对象 |         // 搜索框初始化对象 | ||||||
|           pageNumber: 1, // 当前页数 |         pageNumber: 1, // 当前页数 | ||||||
|           pageSize: 10, // 页面大小 |         pageSize: 10, // 页面大小 | ||||||
|           sort: "createTime", // 默认排序字段 |         sort: "createTime", // 默认排序字段 | ||||||
|           order: "desc", // 默认排序方式 |         order: "desc", // 默认排序方式 | ||||||
|           receiptStatus: "", // 起始时间 |         receiptStatus: "", // 起始时间 | ||||||
|  |       }, | ||||||
|  |       form: { | ||||||
|  |         // 添加或编辑表单对象初始化数据 | ||||||
|  |         sn: "", | ||||||
|  |         sellerName: "", | ||||||
|  |         startTime: "", | ||||||
|  |         endTime: "", | ||||||
|  |         billPrice: "", | ||||||
|  |       }, | ||||||
|  |       // 表单验证规则 | ||||||
|  |       formValidate: {}, | ||||||
|  |       submitLoading: false, // 添加或编辑提交状态 | ||||||
|  |       selectList: [], // 多选数据 | ||||||
|  |       selectCount: 0, // 多选计数 | ||||||
|  |       columns: [ | ||||||
|  |         { | ||||||
|  |           title: "订单号", | ||||||
|  |           key: "orderSn", | ||||||
|  |           minWidth: 120, | ||||||
|  |           slot: "orderSlot", | ||||||
|         }, |         }, | ||||||
|         form: { |         { | ||||||
|           // 添加或编辑表单对象初始化数据 |           title: "会员名称", | ||||||
|           sn: "", |           key: "memberName", | ||||||
|           sellerName: "", |           minWidth: 90, | ||||||
|           startTime: "", |           tooltip: true, | ||||||
|           endTime: "", |  | ||||||
|           billPrice: "", |  | ||||||
|         }, |         }, | ||||||
|         // 表单验证规则 |  | ||||||
|         formValidate: {}, |  | ||||||
|         submitLoading: false, // 添加或编辑提交状态 |  | ||||||
|         selectList: [], // 多选数据 |  | ||||||
|         selectCount: 0, // 多选计数 |  | ||||||
|         columns: [ |  | ||||||
|           { |  | ||||||
|             title: "订单号", |  | ||||||
|             key: "orderSn", |  | ||||||
|             minWidth: 120, |  | ||||||
|             slot: "orderSlot", |  | ||||||
|           }, |  | ||||||
|           { |  | ||||||
|             title: "会员名称", |  | ||||||
|             key: "memberName", |  | ||||||
|             minWidth: 90, |  | ||||||
|             tooltip: true |  | ||||||
|           }, |  | ||||||
| 
 | 
 | ||||||
|           { |         { | ||||||
|             title: "发票抬头", |           title: "发票抬头", | ||||||
|             key: "receiptTitle", |           key: "receiptTitle", | ||||||
|             minWidth: 90, |           minWidth: 90, | ||||||
|             tooltip: true |           tooltip: true, | ||||||
|  |           render: (h, params) => { | ||||||
|  |             return h("div", params.row.receiptTitle || "暂未填写"); | ||||||
|           }, |           }, | ||||||
|           { |         }, | ||||||
|             title: "纳税人识别号", |         { | ||||||
|             key: "taxpayerId", |           title: "纳税人识别号", | ||||||
|             minWidth: 100, |           key: "taxpayerId", | ||||||
|             tooltip: true |           minWidth: 100, | ||||||
| 
 |           tooltip: true, | ||||||
|  |           render: (h, params) => { | ||||||
|  |             return h("div", params.row.taxpayerId || "暂未填写"); | ||||||
|           }, |           }, | ||||||
|           { |         }, | ||||||
|             title: "发票内容", |         { | ||||||
|             key: "receiptContent", |           title: "发票内容", | ||||||
|             minWidth: 120, |           key: "receiptContent", | ||||||
|             tooltip: true |           minWidth: 120, | ||||||
|  |           tooltip: true, | ||||||
|  |           render: (h, params) => { | ||||||
|  |             return h("div", params.row.receiptContent || "暂未填写"); | ||||||
|           }, |           }, | ||||||
|           { |         }, | ||||||
|             title: "发票金额", |         { | ||||||
|             key: "billPrice", |           title: "发票金额", | ||||||
|             width: 90, |           key: "billPrice", | ||||||
|             render: (h, params) => { |           width: 150, | ||||||
|               return h( |           render: (h, params) => { | ||||||
|                 "div", |             return h( | ||||||
|                 this.$options.filters.unitPrice(params.row.receiptPrice, "¥") |               "div", | ||||||
|               ); |               this.$options.filters.unitPrice(params.row.receiptPrice, "¥") | ||||||
|             }, |             ); | ||||||
|           }, |           }, | ||||||
|           { |         }, | ||||||
|             title: "发票状态", |         { | ||||||
|             key: "receiptStatus", |           title: "发票状态", | ||||||
|             width: 90, |           key: "receiptStatus", | ||||||
|             tooltip: true, |           width: 90, | ||||||
|             render: (h, params) => { |           tooltip: true, | ||||||
|               if(params.row.receiptStatus == 0){ |           render: (h, params) => { | ||||||
|                 return h( |             if (params.row.receiptStatus == 0) { | ||||||
|                   "div", |               return h("div", [ | ||||||
|                   "未开票" |                 h("tag", { props: { color: "volcano" } }, "未开票"), | ||||||
|                 ); |               ]); | ||||||
|               }else{ |             } else { | ||||||
|                 return h( |               return h("div", [ | ||||||
|                   "div", |                 h("tag", { props: { color: "green" } }, "未开票"), | ||||||
|                   "已开票" |               ]); | ||||||
|                 ); |  | ||||||
|               } |  | ||||||
| 
 |  | ||||||
|             }, |  | ||||||
|           }, |  | ||||||
|           { |  | ||||||
|             title: "订单状态", |  | ||||||
|             key: "orderStatus", |  | ||||||
|             width: 90, |  | ||||||
|             render: (h, params) => { |  | ||||||
|               if (params.row.orderStatus == "UNPAID") { |  | ||||||
|                 return h('div', [h('span', { }, '未付款'),]); |  | ||||||
|               } else if (params.row.orderStatus == "PAID") { |  | ||||||
|                 return h('div', [h('span', { }, '已付款'),]); |  | ||||||
|               } else if (params.row.orderStatus == "UNDELIVERED") { |  | ||||||
|                 return h('div', [h('span', { }, '待发货'),]); |  | ||||||
|               }else if (params.row.orderStatus == "DELIVERED") { |  | ||||||
|                 return h('div', [h('span', { }, '已发货'),]); |  | ||||||
|               }else if (params.row.orderStatus == "COMPLETED") { |  | ||||||
|                 return h('div', [h('span', { }, '已完成'),]); |  | ||||||
|               }else if (params.row.orderStatus == "TAKE") { |  | ||||||
|                 return h('div', [h('span', { }, '待核验'),]); |  | ||||||
|               }else if (params.row.orderStatus == "CANCELLED") { |  | ||||||
|                 return h('div', [h('span', { }, '已取消'),]); |  | ||||||
|               } |  | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|           { |         }, | ||||||
|             title: "操作", |         { | ||||||
|             key: "action", |           title: "订单状态", | ||||||
|             align: "center", |           key: "orderStatus", | ||||||
|             width: 80, |           width: 90, | ||||||
|             render: (h, params) => { |           render: (h, params) => { | ||||||
|  |             if (params.row.orderStatus == "UNPAID") { | ||||||
|               return h("div", [ |               return h("div", [ | ||||||
|                 h( |                 h("tag", { props: { color: "magenta" } }, "未付款"), | ||||||
|                   "Button", |               ]); | ||||||
|                   { |             } else if (params.row.orderStatus == "PAID") { | ||||||
|                     props: { |               return h("div", [ | ||||||
|                       type: "info", |                 h("tag", { props: { color: "blue" } }, "已付款"), | ||||||
|                       size: "small", |               ]); | ||||||
|                     }, |             } else if (params.row.orderStatus == "UNDELIVERED") { | ||||||
|                     attrs: { |               return h("div", [ | ||||||
|                       disabled: params.row.orderStatus == "COMPLETED"  && params.row.receiptStatus == 0? false : true, |                 h("tag", { props: { color: "geekblue" } }, "待发货"), | ||||||
|                     }, |               ]); | ||||||
|                     style: { |             } else if (params.row.orderStatus == "DELIVERED") { | ||||||
|                       marginRight: "5px", |               return h("div", [ | ||||||
|                     }, |                 h("tag", { props: { color: "cyan" } }, "已发货"), | ||||||
|                     on: { |               ]); | ||||||
|                       click: () => { |             } else if (params.row.orderStatus == "COMPLETED") { | ||||||
|                         this.invoicing(params.row); |               return h("div", [ | ||||||
|                       }, |                 h("tag", { props: { color: "green" } }, "已完成"), | ||||||
|  |               ]); | ||||||
|  |             } else if (params.row.orderStatus == "TAKE") { | ||||||
|  |               return h("div", [ | ||||||
|  |                 h("tag", { props: { color: "volcano" } }, "待核验"), | ||||||
|  |               ]); | ||||||
|  |             } else if (params.row.orderStatus == "CANCELLED") { | ||||||
|  |               return h("div", [ | ||||||
|  |                 h("tag", { props: { color: "red" } }, "已取消"), | ||||||
|  |               ]); | ||||||
|  |             } | ||||||
|  |           }, | ||||||
|  |         }, | ||||||
|  | 
 | ||||||
|  |         { | ||||||
|  |           title: "操作", | ||||||
|  |           key: "action", | ||||||
|  |           align: "center", | ||||||
|  |           width: 80, | ||||||
|  |           render: (h, params) => { | ||||||
|  |             return h("div", [ | ||||||
|  |               h( | ||||||
|  |                 "Button", | ||||||
|  |                 { | ||||||
|  |                   props: { | ||||||
|  |                     type: "info", | ||||||
|  |                     size: "small", | ||||||
|  |                   }, | ||||||
|  |                   attrs: { | ||||||
|  |                     disabled: | ||||||
|  |                       params.row.orderStatus == "COMPLETED" && | ||||||
|  |                       params.row.receiptStatus == 0 | ||||||
|  |                         ? false | ||||||
|  |                         : true, | ||||||
|  |                   }, | ||||||
|  |                   style: { | ||||||
|  |                     marginRight: "5px", | ||||||
|  |                   }, | ||||||
|  |                   on: { | ||||||
|  |                     click: () => { | ||||||
|  |                       this.invoicing(params.row); | ||||||
|                     }, |                     }, | ||||||
|                   }, |                   }, | ||||||
|                   "开票" |                 }, | ||||||
|                 ), |                 "开票" | ||||||
|               ]); |               ), | ||||||
|             }, |             ]); | ||||||
|           }, |           }, | ||||||
|         ], |         }, | ||||||
|         data: [], // 表单数据 |       ], | ||||||
|         total: 0, // 表单数据总数 |       data: [], // 表单数据 | ||||||
|       }; |       total: 0, // 表单数据总数 | ||||||
|  |     }; | ||||||
|  |   }, | ||||||
|  |   methods: { | ||||||
|  |     init() { | ||||||
|  |       this.getData(); | ||||||
|     }, |     }, | ||||||
|     methods: { |     changePage(v) { | ||||||
|       init() { |       this.searchForm.pageNumber = v; | ||||||
|         this.getData(); |       this.getData(); | ||||||
|       }, |       this.clearSelectAll(); | ||||||
|       changePage(v) { |     }, | ||||||
|         this.searchForm.pageNumber = v; |     changePageSize(v) { | ||||||
|         this.getData(); |       this.searchForm.pageSize = v; | ||||||
|         this.clearSelectAll(); |       this.getData(); | ||||||
|       }, |     }, | ||||||
|       changePageSize(v) { |     handleSearch() { | ||||||
|         this.searchForm.pageSize = v; |       this.searchForm.pageNumber = 1; | ||||||
|         this.getData(); |       this.searchForm.pageSize = 10; | ||||||
|       }, |       this.getData(); | ||||||
|       handleSearch() { |     }, | ||||||
|         this.searchForm.pageNumber = 1; |     handleReset() { | ||||||
|         this.searchForm.pageSize = 10; |       this.searchForm = {}; | ||||||
|         this.getData(); |       this.searchForm.pageNumber = 1; | ||||||
|       }, |       this.searchForm.pageSize = 10; | ||||||
|       handleReset() { |       this.getData(); | ||||||
|         this.searchForm = {} |     }, | ||||||
|         this.searchForm.pageNumber = 1; |     changeSort(e) { | ||||||
|         this.searchForm.pageSize = 10; |       this.searchForm.sort = e.key; | ||||||
|         this.getData(); |       this.searchForm.order = e.order; | ||||||
|       }, |       if (e.order === "normal") { | ||||||
|       changeSort(e) { |         this.searchForm.order = ""; | ||||||
|         this.searchForm.sort = e.key; |       } | ||||||
|         this.searchForm.order = e.order; |       this.getData(); | ||||||
|         if (e.order === "normal") { |     }, | ||||||
|           this.searchForm.order = ""; |     clearSelectAll() { | ||||||
|         } |       this.$refs.table.selectAll(false); | ||||||
|         this.getData(); |     }, | ||||||
|       }, |     changeSelect(e) { | ||||||
|       clearSelectAll() { |       this.selectList = e; | ||||||
|         this.$refs.table.selectAll(false); |       this.selectCount = e.length; | ||||||
|       }, |     }, | ||||||
|       changeSelect(e) { |     selectDateRange(v) { | ||||||
|         this.selectList = e; |       if (v) { | ||||||
|         this.selectCount = e.length; |         this.searchForm.startDate = v[0]; | ||||||
|       }, |         this.searchForm.endDate = v[1]; | ||||||
|       selectDateRange(v) { |       } | ||||||
|         if (v) { |     }, | ||||||
|           this.searchForm.startDate = v[0]; |     getData() { | ||||||
|           this.searchForm.endDate = v[1]; |       this.loading = true; | ||||||
|         } |       API_Order.getReceiptPage(this.searchForm).then((res) => { | ||||||
|       }, |  | ||||||
|       getData() { |  | ||||||
|         this.loading = true; |  | ||||||
|         API_Order.getReceiptPage(this.searchForm).then((res) => { |  | ||||||
|           this.loading = false; |  | ||||||
|           if (res.success) { |  | ||||||
|             this.data = res.result.records; |  | ||||||
|             this.total = res.result.total; |  | ||||||
|           } |  | ||||||
|         }); |  | ||||||
|         this.total = this.data.length; |  | ||||||
|         this.loading = false; |         this.loading = false; | ||||||
|       }, |         if (res.success) { | ||||||
|       //开发票 |           this.data = res.result.records; | ||||||
|       invoicing(params){ |           this.total = res.result.total; | ||||||
|         this.$Modal.confirm({ |         } | ||||||
|           title: "确认开票", |       }); | ||||||
|           content: "您确认已经开具发票 ?", |       this.total = this.data.length; | ||||||
|           loading: true, |       this.loading = false; | ||||||
|           onOk: () => { |  | ||||||
|             API_Order.invoicing(params.id).then((res) => { |  | ||||||
|               if (res.success) { |  | ||||||
|                 this.$Message.success("开票成功"); |  | ||||||
|               } |  | ||||||
|               this.$Modal.remove(); |  | ||||||
|               this.getData(); |  | ||||||
|             }); |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           } |  | ||||||
|         }); |  | ||||||
|       }, |  | ||||||
|     }, |     }, | ||||||
|     activated() { |     //开发票 | ||||||
|       this.init(); |     invoicing(params) { | ||||||
|  |       this.$Modal.confirm({ | ||||||
|  |         title: "确认开票", | ||||||
|  |         content: "您确认已经开具发票 ?", | ||||||
|  |         loading: true, | ||||||
|  |         onOk: () => { | ||||||
|  |           API_Order.invoicing(params.id).then((res) => { | ||||||
|  |             if (res.success) { | ||||||
|  |               this.$Message.success("开票成功"); | ||||||
|  |             } | ||||||
|  |             this.$Modal.remove(); | ||||||
|  |             this.getData(); | ||||||
|  |           }); | ||||||
|  |         }, | ||||||
|  |       }); | ||||||
|     }, |     }, | ||||||
|   }; |   }, | ||||||
|  |   mounted() { | ||||||
|  |     this.init(); | ||||||
|  |   }, | ||||||
|  |   activated() { | ||||||
|  |     this.init(); | ||||||
|  |   }, | ||||||
|  | }; | ||||||
| </script> | </script> | ||||||
| <style lang="scss"> | <style lang="scss"> | ||||||
|   // 建议引入通用样式 可删除下面样式代码 | // 建议引入通用样式 可删除下面样式代码 | ||||||
|    @import "@/styles/table-common.scss"; | @import "@/styles/table-common.scss"; | ||||||
| </style> | </style> | ||||||
|  |  | ||||||
|  | @ -2,29 +2,12 @@ | ||||||
|   <div class="search"> |   <div class="search"> | ||||||
|     <Card> |     <Card> | ||||||
|       <Row> |       <Row> | ||||||
|         <Form |         <Form ref="searchForm" :model="searchForm" inline :label-width="100" class="search-form"> | ||||||
|           ref="searchForm" |  | ||||||
|           :model="searchForm" |  | ||||||
|           inline |  | ||||||
|           :label-width="100" |  | ||||||
|           class="search-form" |  | ||||||
|         > |  | ||||||
|           <Form-item label="优惠券名称"> |           <Form-item label="优惠券名称"> | ||||||
|             <Input |             <Input type="text" v-model="searchForm.couponName" placeholder="请输入优惠券名称" clearable style="width: 200px" /> | ||||||
|               type="text" |  | ||||||
|               v-model="searchForm.couponName" |  | ||||||
|               placeholder="请输入优惠券名称" |  | ||||||
|               clearable |  | ||||||
|               style="width: 200px" |  | ||||||
|             /> |  | ||||||
|           </Form-item> |           </Form-item> | ||||||
|           <Form-item label="活动状态" prop="promotionStatus"> |           <Form-item label="活动状态" prop="promotionStatus"> | ||||||
|             <Select |             <Select v-model="searchForm.promotionStatus" placeholder="请选择" clearable style="width: 200px"> | ||||||
|               v-model="searchForm.promotionStatus" |  | ||||||
|               placeholder="请选择" |  | ||||||
|               clearable |  | ||||||
|               style="width: 200px" |  | ||||||
|             > |  | ||||||
|               <Option value="NEW">未开始</Option> |               <Option value="NEW">未开始</Option> | ||||||
|               <Option value="START">已开始/上架</Option> |               <Option value="START">已开始/上架</Option> | ||||||
|               <Option value="END">已结束/下架</Option> |               <Option value="END">已结束/下架</Option> | ||||||
|  | @ -32,21 +15,9 @@ | ||||||
|             </Select> |             </Select> | ||||||
|           </Form-item> |           </Form-item> | ||||||
|           <Form-item label="活动时间"> |           <Form-item label="活动时间"> | ||||||
|             <DatePicker |             <DatePicker v-model="selectDate" type="daterange" clearable placeholder="选择起始时间" style="width: 200px"></DatePicker> | ||||||
|               v-model="selectDate" |  | ||||||
|               type="daterange" |  | ||||||
|               clearable |  | ||||||
|               placeholder="选择起始时间" |  | ||||||
|               style="width: 200px" |  | ||||||
|             ></DatePicker> |  | ||||||
|           </Form-item> |           </Form-item> | ||||||
|           <Button |           <Button @click="handleSearch" type="primary" class="search-btn" icon="ios-search">搜索</Button> | ||||||
|             @click="handleSearch" |  | ||||||
|             type="primary" |  | ||||||
|             class="search-btn" |  | ||||||
|             icon="ios-search" |  | ||||||
|             >搜索</Button |  | ||||||
|           > |  | ||||||
|           <Button @click="handleReset" class="search-btn">重置</Button> |           <Button @click="handleReset" class="search-btn">重置</Button> | ||||||
|         </Form> |         </Form> | ||||||
|       </Row> |       </Row> | ||||||
|  | @ -55,57 +26,22 @@ | ||||||
|         <Button @click="delAll" class="ml_10">批量下架</Button> |         <Button @click="delAll" class="ml_10">批量下架</Button> | ||||||
|         <!-- <Button @click="upAll">批量上架</Button> --> |         <!-- <Button @click="upAll">批量上架</Button> --> | ||||||
|       </Row> |       </Row> | ||||||
|       <Table |       <Table :loading="loading" border :columns="columns" :data="data" ref="table" sortable="custom" @on-sort-change="changeSort" @on-selection-change="changeSelect"> | ||||||
|         :loading="loading" |  | ||||||
|         border |  | ||||||
|         :columns="columns" |  | ||||||
|         :data="data" |  | ||||||
|         ref="table" |  | ||||||
|         sortable="custom" |  | ||||||
|         @on-sort-change="changeSort" |  | ||||||
|         @on-selection-change="changeSelect" |  | ||||||
|       > |  | ||||||
|         <template slot-scope="{ row }" slot="action"> |         <template slot-scope="{ row }" slot="action"> | ||||||
|           <Button |           <Button v-if="row.promotionStatus === 'NEW' || row.promotionStatus === 'CLOSE'" type="info" size="small" style="margin-right: 10px" @click="edit(row)">编辑</Button> | ||||||
|             v-if="row.promotionStatus === 'NEW' || row.promotionStatus === 'CLOSE'" |           <Button v-if="row.promotionStatus !== 'CLOSE'" type="error" size="small" @click="remove(row)">下架</Button> | ||||||
|             type="info" |  | ||||||
|             size="small" |  | ||||||
|             style="margin-right: 10px" |  | ||||||
|             @click="edit(row)" |  | ||||||
|             >编辑</Button |  | ||||||
|           > |  | ||||||
|           <Button |  | ||||||
|             v-if="row.promotionStatus !== 'CLOSE'" |  | ||||||
|             type="error" |  | ||||||
|             size="small" |  | ||||||
|             @click="remove(row)" |  | ||||||
|             >下架</Button |  | ||||||
|           > |  | ||||||
|         </template> |         </template> | ||||||
|       </Table> |       </Table> | ||||||
|       <Row type="flex" justify="end" class="page"> |       <Row type="flex" justify="end" class="page"> | ||||||
|         <Page |         <Page :current="searchForm.pageNumber + 1" :total="total" :page-size="searchForm.pageSize" @on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]" | ||||||
|           :current="searchForm.pageNumber + 1" |           size="small" show-total show-elevator show-sizer></Page> | ||||||
|           :total="total" |  | ||||||
|           :page-size="searchForm.pageSize" |  | ||||||
|           @on-change="changePage" |  | ||||||
|           @on-page-size-change="changePageSize" |  | ||||||
|           :page-size-opts="[10, 20, 50]" |  | ||||||
|           size="small" |  | ||||||
|           show-total |  | ||||||
|           show-elevator |  | ||||||
|           show-sizer |  | ||||||
|         ></Page> |  | ||||||
|       </Row> |       </Row> | ||||||
|     </Card> |     </Card> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
| <script> | <script> | ||||||
| import { | import { getShopCouponList, updateCouponStatus } from "@/api/promotion"; | ||||||
|   getShopCouponList, |  | ||||||
|   updateCouponStatus, |  | ||||||
| } from "@/api/promotion"; |  | ||||||
| 
 | 
 | ||||||
| export default { | export default { | ||||||
|   name: "coupon", |   name: "coupon", | ||||||
|  | @ -143,18 +79,19 @@ export default { | ||||||
|         { |         { | ||||||
|           title: "活动名称", |           title: "活动名称", | ||||||
|           key: "promotionName", |           key: "promotionName", | ||||||
|           width: 120, |           minWidth: 100, | ||||||
|           fixed: "left", |           fixed: "left", | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: "优惠券名称", |           title: "优惠券名称", | ||||||
|           key: "couponName", |           key: "couponName", | ||||||
|           width: 120, |           minWidth: 100, | ||||||
|           tooltip: true |           tooltip: true, | ||||||
|         }, { |         }, | ||||||
|  |         { | ||||||
|           title: "面额/折扣", |           title: "面额/折扣", | ||||||
|           key: "price", |           key: "price", | ||||||
|           width: 120, |           width: 100, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             if (params.row.price) { |             if (params.row.price) { | ||||||
|               return h( |               return h( | ||||||
|  | @ -170,11 +107,13 @@ export default { | ||||||
|         { |         { | ||||||
|           title: "领取数量/总数量", |           title: "领取数量/总数量", | ||||||
|           key: "publishNum", |           key: "publishNum", | ||||||
|  |           width: 130, | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             return h( |             return h( | ||||||
|               "div", params.row.receivedNum + "/" + params.row.publishNum) |               "div", | ||||||
|  |               params.row.receivedNum + "/" + params.row.publishNum | ||||||
|  |             ); | ||||||
|           }, |           }, | ||||||
|           minWidth:130, |  | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: "优惠券类型", |           title: "优惠券类型", | ||||||
|  | @ -210,21 +149,28 @@ export default { | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: "活动时间", |           title: "活动时间", | ||||||
|  | 
 | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             return h("div", { |             if (params.row.getType === "ACTIVITY") { | ||||||
|               domProps: |               return h("div", "长期有效"); | ||||||
|                 {innerHTML: params.row.startTime + "<br/>" + params.row.endTime} |             } else { | ||||||
|             }); |               return h("div", { | ||||||
|  |                 domProps: { | ||||||
|  |                   innerHTML: | ||||||
|  |                     params.row.startTime + "<br/>" + params.row.endTime, | ||||||
|  |                 }, | ||||||
|  |               }); | ||||||
|  |             } | ||||||
|           }, |           }, | ||||||
|           minWidth:150, |  | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: "状态", |           title: "状态", | ||||||
|  |           width: 100, | ||||||
|           key: "promotionStatus", |           key: "promotionStatus", | ||||||
|           fixed: "right", |           fixed: "right", | ||||||
|           render: (h, params) => { |           render: (h, params) => { | ||||||
|             let text = "未知", |             let text = "未知", | ||||||
|               color = ""; |               color = "red"; | ||||||
|             if (params.row.promotionStatus == "NEW") { |             if (params.row.promotionStatus == "NEW") { | ||||||
|               text = "未开始"; |               text = "未开始"; | ||||||
|               color = "default"; |               color = "default"; | ||||||
|  | @ -250,14 +196,14 @@ export default { | ||||||
|               ), |               ), | ||||||
|             ]); |             ]); | ||||||
|           }, |           }, | ||||||
|           minWidth:70, |           minWidth: 70, | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           title: "操作", |           title: "操作", | ||||||
|           slot: "action", |           slot: "action", | ||||||
|           align: "center", |           align: "center", | ||||||
|           fixed: "right", |           fixed: "right", | ||||||
|           minWidth: 140 |           maxWidth: 140, | ||||||
|         }, |         }, | ||||||
|       ], |       ], | ||||||
|       data: [], // 表单数据 |       data: [], // 表单数据 | ||||||
|  | @ -292,8 +238,8 @@ export default { | ||||||
|       this.getDataList(); |       this.getDataList(); | ||||||
|     }, |     }, | ||||||
|     handleReset() { |     handleReset() { | ||||||
|       this.searchForm = {} |       this.searchForm = {}; | ||||||
|       this.selectDate = '' |       this.selectDate = ""; | ||||||
|       this.searchForm.pageNumber = 0; |       this.searchForm.pageNumber = 0; | ||||||
|       this.getDataList(); |       this.getDataList(); | ||||||
|     }, |     }, | ||||||
|  | @ -423,7 +369,7 @@ export default { | ||||||
|       }); |       }); | ||||||
|     }, |     }, | ||||||
|   }, |   }, | ||||||
|   activated () { |   activated() { | ||||||
|     this.init(); |     this.init(); | ||||||
|   }, |   }, | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -6,22 +6,10 @@ | ||||||
|           <h4>基本信息</h4> |           <h4>基本信息</h4> | ||||||
|           <div class="form-item-view"> |           <div class="form-item-view"> | ||||||
|             <FormItem label="活动名称" prop="promotionName"> |             <FormItem label="活动名称" prop="promotionName"> | ||||||
|               <Input |               <Input type="text" v-model="form.promotionName" placeholder="活动名称" clearable style="width: 260px" /> | ||||||
|                 type="text" |  | ||||||
|                 v-model="form.promotionName" |  | ||||||
|                 placeholder="活动名称" |  | ||||||
|                 clearable |  | ||||||
|                 style="width: 260px" |  | ||||||
|               /> |  | ||||||
|             </FormItem> |             </FormItem> | ||||||
|             <FormItem label="优惠券名称" prop="couponName"> |             <FormItem label="优惠券名称" prop="couponName"> | ||||||
|               <Input |               <Input type="text" v-model="form.couponName" placeholder="优惠券名称" clearable style="width: 260px" /> | ||||||
|                 type="text" |  | ||||||
|                 v-model="form.couponName" |  | ||||||
|                 placeholder="优惠券名称" |  | ||||||
|                 clearable |  | ||||||
|                 style="width: 260px" |  | ||||||
|               /> |  | ||||||
|             </FormItem> |             </FormItem> | ||||||
|             <FormItem label="优惠券类型" prop="couponType"> |             <FormItem label="优惠券类型" prop="couponType"> | ||||||
|               <Select v-model="form.couponType" style="width: 260px"> |               <Select v-model="form.couponType" style="width: 260px"> | ||||||
|  | @ -29,32 +17,12 @@ | ||||||
|                 <Option value="PRICE">减免现金</Option> |                 <Option value="PRICE">减免现金</Option> | ||||||
|               </Select> |               </Select> | ||||||
|             </FormItem> |             </FormItem> | ||||||
|             <FormItem |             <FormItem label="折扣" prop="discount" v-if="form.couponType == 'DISCOUNT'"> | ||||||
|               label="折扣" |               <Input type="number" v-model="form.couponDiscount" placeholder="折扣" clearable style="width: 260px" /> | ||||||
|               prop="discount" |  | ||||||
|               v-if="form.couponType == 'DISCOUNT'" |  | ||||||
|             > |  | ||||||
|               <Input |  | ||||||
|                 type="number" |  | ||||||
|                 v-model="form.couponDiscount" |  | ||||||
|                 placeholder="折扣" |  | ||||||
|                 clearable |  | ||||||
|                 style="width: 260px" |  | ||||||
|               /> |  | ||||||
|               <span class="describe">请输入0-10之间数字,可以输入一位小数</span> |               <span class="describe">请输入0-10之间数字,可以输入一位小数</span> | ||||||
|             </FormItem> |             </FormItem> | ||||||
|             <FormItem |             <FormItem label="面额" prop="price" v-if="form.couponType == 'PRICE'"> | ||||||
|               label="面额" |               <Input type="text" v-model="form.price" placeholder="面额" clearable style="width: 260px" /> | ||||||
|               prop="price" |  | ||||||
|               v-if="form.couponType == 'PRICE'" |  | ||||||
|             > |  | ||||||
|               <Input |  | ||||||
|                 type="text" |  | ||||||
|                 v-model="form.price" |  | ||||||
|                 placeholder="面额" |  | ||||||
|                 clearable |  | ||||||
|                 style="width: 260px" |  | ||||||
|               /> |  | ||||||
|             </FormItem> |             </FormItem> | ||||||
|             <FormItem label="活动类型" prop="getType"> |             <FormItem label="活动类型" prop="getType"> | ||||||
|               <Select v-model="form.getType" style="width: 260px"> |               <Select v-model="form.getType" style="width: 260px"> | ||||||
|  | @ -63,42 +31,22 @@ | ||||||
|               </Select> |               </Select> | ||||||
|             </FormItem> |             </FormItem> | ||||||
| 
 | 
 | ||||||
|             <FormItem label="发放数量" prop="publishNum"> |             <FormItem label="发放数量" v-if="form.getType == 'FREE'" prop="publishNum"> | ||||||
|               <Input |               <Input v-model="form.publishNum" placeholder="发放数量" style="width: 260px" /> | ||||||
|                 v-model="form.publishNum" |               <div class="tips">如果发放数量为0时,则代表不限制发放数量</div> | ||||||
|                 placeholder="发放数量" |  | ||||||
|                 style="width: 260px" |  | ||||||
|               /> |  | ||||||
|             </FormItem> |             </FormItem> | ||||||
|           </div> |           </div> | ||||||
|           <h4>使用限制</h4> |           <h4>使用限制</h4> | ||||||
|           <div class="form-item-view"> |           <div class="form-item-view"> | ||||||
|             <FormItem label="消费门槛" prop="consumeThreshold"> |             <FormItem label="消费门槛" prop="consumeThreshold"> | ||||||
|               <Input |               <Input type="text" v-model="form.consumeThreshold" placeholder="消费门槛" clearable style="width: 260px" /> | ||||||
|                 type="text" |  | ||||||
|                 v-model="form.consumeThreshold" |  | ||||||
|                 placeholder="消费门槛" |  | ||||||
|                 clearable |  | ||||||
|                 style="width: 260px" |  | ||||||
|               /> |  | ||||||
|             </FormItem> |             </FormItem> | ||||||
|             <FormItem label="领取限制" prop="couponLimitNum"> |             <FormItem label="领取限制" v-if="form.getType == 'FREE'" prop="couponLimitNum"> | ||||||
|               <Input |               <Input v-model="form.couponLimitNum" placeholder="领取限制" clearable style="width: 260px" /> | ||||||
|                 v-model="form.couponLimitNum" |               <div class="tips">如果领取限制为0时,则代表不限制领取数量</div> | ||||||
|                 placeholder="领取限制" |  | ||||||
|                 clearable |  | ||||||
|                 style="width: 260px" |  | ||||||
|               /> |  | ||||||
|             </FormItem> |             </FormItem> | ||||||
|             <FormItem label="有效期" prop="rangeTime"> |             <FormItem label="有效期" prop="rangeTime"> | ||||||
|               <DatePicker |               <DatePicker type="datetimerange" v-model="form.rangeTime" format="yyyy-MM-dd HH:mm:ss" placeholder="请选择" :options="options" style="width: 260px"> | ||||||
|                 type="datetimerange" |  | ||||||
|                 v-model="form.rangeTime" |  | ||||||
|                 format="yyyy-MM-dd HH:mm:ss" |  | ||||||
|                 placeholder="请选择" |  | ||||||
|                 :options="options" |  | ||||||
|                 style="width: 260px" |  | ||||||
|               > |  | ||||||
|               </DatePicker> |               </DatePicker> | ||||||
|             </FormItem> |             </FormItem> | ||||||
|             <FormItem label="使用范围" prop="scopeType"> |             <FormItem label="使用范围" prop="scopeType"> | ||||||
|  | @ -109,34 +57,14 @@ | ||||||
|               </RadioGroup> |               </RadioGroup> | ||||||
|             </FormItem> |             </FormItem> | ||||||
| 
 | 
 | ||||||
|             <FormItem |             <FormItem style="width: 100%" v-if="form.scopeType == 'PORTION_GOODS'"> | ||||||
|               style="width: 100%" |  | ||||||
|               v-if="form.scopeType == 'PORTION_GOODS'" |  | ||||||
|             > |  | ||||||
|               <div style="display: flex; margin-bottom: 10px"> |               <div style="display: flex; margin-bottom: 10px"> | ||||||
|                 <Button type="primary" @click="openSkuList" |                 <Button type="primary" @click="openSkuList">选择商品</Button> | ||||||
|                   >选择商品</Button> |                 <Button type="error" ghost style="margin-left: 10px" @click="delSelectGoods">批量删除</Button> | ||||||
|                 <Button |  | ||||||
|                   type="error" |  | ||||||
|                   ghost |  | ||||||
|                   style="margin-left: 10px" |  | ||||||
|                   @click="delSelectGoods" |  | ||||||
|                   >批量删除</Button |  | ||||||
|                 > |  | ||||||
|               </div> |               </div> | ||||||
|               <Table |               <Table border :columns="columns" :data="form.promotionGoodsList" @on-selection-change="changeSelect"> | ||||||
|                 border |  | ||||||
|                 :columns="columns" |  | ||||||
|                 :data="form.promotionGoodsList" |  | ||||||
|                 @on-selection-change="changeSelect" |  | ||||||
|               > |  | ||||||
|                 <template slot-scope="{ row }" slot="QRCode"> |                 <template slot-scope="{ row }" slot="QRCode"> | ||||||
|                   <img |                   <img :src="row.QRCode || '../../../assets/lili.png'" width="50px" height="50px" alt="" /> | ||||||
|                     :src="row.QRCode || '../../../assets/lili.png'" |  | ||||||
|                     width="50px" |  | ||||||
|                     height="50px" |  | ||||||
|                     alt="" |  | ||||||
|                   /> |  | ||||||
|                 </template> |                 </template> | ||||||
|               </Table> |               </Table> | ||||||
|             </FormItem> |             </FormItem> | ||||||
|  | @ -147,35 +75,17 @@ | ||||||
|             </FormItem> |             </FormItem> | ||||||
| 
 | 
 | ||||||
|             <FormItem label="范围描述" prop="description"> |             <FormItem label="范围描述" prop="description"> | ||||||
|               <Input |               <Input v-model="form.description" type="textarea" :rows="4" maxlength="50" show-word-limit clearable style="width: 260px" /> | ||||||
|                 v-model="form.description" |  | ||||||
|                 type="textarea" |  | ||||||
|                 :rows="4" |  | ||||||
|                 maxlength="50" |  | ||||||
|                 show-word-limit |  | ||||||
|                 clearable |  | ||||||
|                 style="width: 260px" |  | ||||||
|               /> |  | ||||||
|             </FormItem> |             </FormItem> | ||||||
|             <div> |             <div> | ||||||
|               <Button type="text" @click="$router.push({ name: 'coupon' })" |               <Button type="text" @click="$router.push({ name: 'coupon' })">返回</Button> | ||||||
|                 >返回</Button |               <Button type="primary" :loading="submitLoading" @click="handleSubmit">提交</Button> | ||||||
|               > |  | ||||||
|               <Button |  | ||||||
|                 type="primary" |  | ||||||
|                 :loading="submitLoading" |  | ||||||
|                 @click="handleSubmit" |  | ||||||
|                 >提交</Button |  | ||||||
|               > |  | ||||||
|             </div> |             </div> | ||||||
|           </div> |           </div> | ||||||
|         </div> |         </div> | ||||||
|       </Form> |       </Form> | ||||||
|     </Card> |     </Card> | ||||||
|     <sku-select |     <sku-select ref="skuSelect" @selectedGoodsData="selectedGoodsData"></sku-select> | ||||||
|       ref="skuSelect" |  | ||||||
|       @selectedGoodsData="selectedGoodsData" |  | ||||||
|     ></sku-select> |  | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
|  | @ -232,6 +142,7 @@ export default { | ||||||
|         getType: "FREE", |         getType: "FREE", | ||||||
|         promotionGoodsList: [], |         promotionGoodsList: [], | ||||||
|         scopeIdGoods: [], |         scopeIdGoods: [], | ||||||
|  |         rangeDayType: "FIXEDTIME", | ||||||
|       }, |       }, | ||||||
|       id: this.$route.query.id, |       id: this.$route.query.id, | ||||||
|       submitLoading: false, // 添加或编辑提交状态 |       submitLoading: false, // 添加或编辑提交状态 | ||||||
|  | @ -392,7 +303,11 @@ export default { | ||||||
|           params.endTime = this.$options.filters.unixToDate( |           params.endTime = this.$options.filters.unixToDate( | ||||||
|             this.form.rangeTime[1] / 1000 |             this.form.rangeTime[1] / 1000 | ||||||
|           ); |           ); | ||||||
|           delete params.rangeTime |           if (params.getType == "ACTIVITY") { | ||||||
|  |             params.couponLimitNum = 0; | ||||||
|  |             params.publishNum = 0; | ||||||
|  |           } | ||||||
|  |           delete params.rangeTime; | ||||||
|           let scopeId = []; |           let scopeId = []; | ||||||
|           if ( |           if ( | ||||||
|             params.scopeType == "PORTION_GOODS" && |             params.scopeType == "PORTION_GOODS" && | ||||||
|  | @ -465,12 +380,13 @@ export default { | ||||||
|         name: "coupon", |         name: "coupon", | ||||||
|       }); |       }); | ||||||
|     }, |     }, | ||||||
|     openSkuList() { // 显示商品选择器 |     openSkuList() { | ||||||
|  |       // 显示商品选择器 | ||||||
|       this.$refs.skuSelect.open("goods"); |       this.$refs.skuSelect.open("goods"); | ||||||
|       let data = JSON.parse(JSON.stringify(this.form.promotionGoodsList)) |       let data = JSON.parse(JSON.stringify(this.form.promotionGoodsList)); | ||||||
|       data.forEach(e => { |       data.forEach((e) => { | ||||||
|         e.id = e.skuId |         e.id = e.skuId; | ||||||
|       }) |       }); | ||||||
|       this.$refs.skuSelect.goodsData = data; |       this.$refs.skuSelect.goodsData = data; | ||||||
|     }, |     }, | ||||||
|     changeSelect(e) { |     changeSelect(e) { | ||||||
|  | @ -507,15 +423,15 @@ export default { | ||||||
|       // 回显已选商品 |       // 回显已选商品 | ||||||
|       let list = []; |       let list = []; | ||||||
|       item.forEach((e) => { |       item.forEach((e) => { | ||||||
|           list.push({ |         list.push({ | ||||||
|             goodsName: e.goodsName, |           goodsName: e.goodsName, | ||||||
|             price: e.price, |           price: e.price, | ||||||
|             originalPrice: e.price, |           originalPrice: e.price, | ||||||
|             quantity: e.quantity, |           quantity: e.quantity, | ||||||
|             storeId: e.storeId, |           storeId: e.storeId, | ||||||
|             sellerName: e.sellerName, |           sellerName: e.sellerName, | ||||||
|             skuId: e.id, |           skuId: e.id, | ||||||
|           }); |         }); | ||||||
|       }); |       }); | ||||||
|       this.form.promotionGoodsList = list; |       this.form.promotionGoodsList = list; | ||||||
|     }, |     }, | ||||||
|  | @ -598,11 +514,15 @@ h4 { | ||||||
|   margin-left: 10px; |   margin-left: 10px; | ||||||
|   color: #999; |   color: #999; | ||||||
| } | } | ||||||
| .ivu-form-item{ | .ivu-form-item { | ||||||
|   margin-bottom: 24px !important; |   margin-bottom: 24px !important; | ||||||
| } | } | ||||||
| .wrapper{ | .wrapper { | ||||||
|   min-height: 1000px; |   min-height: 1000px; | ||||||
| } | } | ||||||
|  | .tips { | ||||||
|  |   font-size: 12px; | ||||||
|  |   color: #999; | ||||||
|  | } | ||||||
| </style> | </style> | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -113,9 +113,11 @@ | ||||||
|               >  |               >  | ||||||
|               <Checkbox |               <Checkbox | ||||||
|                 :disabled="form.promotionStatus != 'NEW'" |                 :disabled="form.promotionStatus != 'NEW'" | ||||||
|  |                 v-if="JSON.parse(getStore('userInfo')).selfOperated" | ||||||
|                 v-model="form.isPoint" |                 v-model="form.isPoint" | ||||||
|                 >送积分</Checkbox |                 >送积分</Checkbox | ||||||
|               > |               > | ||||||
|  | 
 | ||||||
|             </FormItem> |             </FormItem> | ||||||
|             <FormItem v-if="form.isCoupon" label="赠送优惠券" prop="couponId"> |             <FormItem v-if="form.isCoupon" label="赠送优惠券" prop="couponId"> | ||||||
|               <Select |               <Select | ||||||
|  |  | ||||||
|  | @ -97,7 +97,7 @@ | ||||||
|         </FormItem> |         </FormItem> | ||||||
| 
 | 
 | ||||||
|         <FormItem label="商品" v-if="$route.query.id"> |         <FormItem label="商品" v-if="$route.query.id"> | ||||||
|           <Button type="primary" :disabled="liveStatus!='NEW'" ghost @click="liveGoodsVisible=true" icon="md-add">添加商品</Button> |           <Button type="primary" ghost @click="liveGoodsVisible=true" :disabled="liveStatus!='NEW'" icon="md-add">添加商品</Button> | ||||||
|           <Table class="goods-table" :columns="liveColumns" :data="liveData"> |           <Table class="goods-table" :columns="liveColumns" :data="liveData"> | ||||||
|             <template slot-scope="{ row,index }" slot="goodsName"> |             <template slot-scope="{ row,index }" slot="goodsName"> | ||||||
|               <div class="flex-goods"> |               <div class="flex-goods"> | ||||||
|  | @ -130,7 +130,7 @@ | ||||||
|         </FormItem> |         </FormItem> | ||||||
| 
 | 
 | ||||||
|         <FormItem> |         <FormItem> | ||||||
|           <Button type="primary" @click="createLives()">保存</Button> |           <Button type="primary" v-if="liveStatus=='NEW'" @click="createLives()">保存</Button> | ||||||
| 
 | 
 | ||||||
|         </FormItem> |         </FormItem> | ||||||
|       </Form> |       </Form> | ||||||
|  | @ -140,8 +140,8 @@ | ||||||
|       <img :src="imageSrc" v-if="imageVisible" style="width: 100%"> |       <img :src="imageSrc" v-if="imageVisible" style="width: 100%"> | ||||||
|     </Modal> |     </Modal> | ||||||
| 
 | 
 | ||||||
|     <Modal width="800" v-model="liveGoodsVisible" @on-ok="addGoods"> |     <Modal width="800" v-model="liveGoodsVisible" footer-hide> | ||||||
|       <liveGoods :init="liveData" @selectedGoods="callBackData" reviewed /> |       <liveGoods @selectedGoods="callBackData" reviewed /> | ||||||
|     </Modal> |     </Modal> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
|  | @ -259,10 +259,14 @@ export default { | ||||||
|      * 删除直播间商品 |      * 删除直播间商品 | ||||||
|      */ |      */ | ||||||
|     async deleteGoods(val, index) { |     async deleteGoods(val, index) { | ||||||
|  |       this.$Spin.show(); | ||||||
|       let res = await delRoomLiveGoods(this.liveForm.roomId, val.liveGoodsId); |       let res = await delRoomLiveGoods(this.liveForm.roomId, val.liveGoodsId); | ||||||
|       if (res.success) { |       if (res.success) { | ||||||
|         this.$Message.success("删除成功!"); |         this.$Message.success("删除成功!"); | ||||||
|         this.liveData.splice(index, 1); |         this.liveData.splice(index, 1); | ||||||
|  |         this.$Spin.hide(); | ||||||
|  |       } else { | ||||||
|  |         this.$Spin.hide(); | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     /** |     /** | ||||||
|  | @ -325,36 +329,19 @@ export default { | ||||||
|      * 回调的商品选择数据 |      * 回调的商品选择数据 | ||||||
|      */ |      */ | ||||||
|     callBackData(way) { |     callBackData(way) { | ||||||
|       this.$set(this, "liveData", way); |       console.log(way); | ||||||
|     }, |       this.liveGoodsVisible = false; | ||||||
| 
 |       this.$Spin.show(); | ||||||
|     /** |  | ||||||
|      * 提交直播间商品 |  | ||||||
|      */ |  | ||||||
|     addGoods() { |  | ||||||
|       addLiveGoods({ |       addLiveGoods({ | ||||||
|         roomId: this.$route.query.roomId, |         roomId: this.$route.query.roomId, | ||||||
|         liveGoodsId: item.liveGoodsId, |         liveGoodsId: way.liveGoodsId, | ||||||
|       }); |       }).then((res) => { | ||||||
|     }, |         if (res.success) { | ||||||
| 
 |           this.liveData.push(way); | ||||||
|     /** |           this.$Spin.hide(); | ||||||
|      * dialog点击确定时判断 |           console.log(this.liveData); | ||||||
|      */ |  | ||||||
|     addGoods() { |  | ||||||
|       console.log(this.commodityList); |  | ||||||
|       this.liveData.forEach((item, index) => { |  | ||||||
|         if (this.commodityList.length == 1 && this.liveData.length == 1) { |  | ||||||
|           addLiveGoods({ |  | ||||||
|             roomId: this.$route.query.roomId, |  | ||||||
|             liveGoodsId: item.liveGoodsId, |  | ||||||
|           }); |  | ||||||
|         } else { |         } else { | ||||||
|           this.commodityList.forEach((oldVal, i) => { |           this.$Spin.hide(); | ||||||
|             // 如果商品里面没有商品,以及添加商品为第一次的话 |  | ||||||
|             if (oldVal.liveGoodsId != item.liveGoodsId) { |  | ||||||
|             } |  | ||||||
|           }); |  | ||||||
|         } |         } | ||||||
|       }); |       }); | ||||||
|     }, |     }, | ||||||
|  | @ -517,7 +504,7 @@ export default { | ||||||
|               if (res.success) { |               if (res.success) { | ||||||
|                 this.$Message.success("修改成功!"); |                 this.$Message.success("修改成功!"); | ||||||
| 
 | 
 | ||||||
|                 this.$router.push({ path: "/storePromotion/live" }); |                 this.$router.push({ path: "/promotion/live" }); | ||||||
|               } |               } | ||||||
|               this.spinShow = false; |               this.spinShow = false; | ||||||
|             }); |             }); | ||||||
|  | @ -528,7 +515,7 @@ export default { | ||||||
|               if (res.success) { |               if (res.success) { | ||||||
|                 this.$Message.success("添加成功!"); |                 this.$Message.success("添加成功!"); | ||||||
| 
 | 
 | ||||||
|                 this.$router.push({ path: "/storePromotion/live" }); |                 this.$router.push({ path: "/promotion/live" }); | ||||||
|               } |               } | ||||||
|               this.spinShow = false; |               this.spinShow = false; | ||||||
|             }); |             }); | ||||||
|  |  | ||||||
|  | @ -208,20 +208,20 @@ export default { | ||||||
|      * 回调参数补充 |      * 回调参数补充 | ||||||
|      */ |      */ | ||||||
|     selectedLiveGoods(val, index) { |     selectedLiveGoods(val, index) { | ||||||
|       if (!val.___selected) { |       // if (!val.___selected) { | ||||||
|         val.___selected = true; |       //   val.___selected = true; | ||||||
|         this.$set(this.liveGoodsData[index], "___selected", true); |       //   this.$set(this.liveGoodsData[index], "___selected", true); | ||||||
|         this.selectedGoods.push(this.liveGoodsData[index]); |       //   this.selectedGoods.push(this.liveGoodsData[index]); | ||||||
|       } else { |       // } else { | ||||||
|         this.$nextTick(() => { |       //   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); |       //     this.selectedGoods.splice(index, 1); | ||||||
|         }); |       //   }); | ||||||
|       } |       // } | ||||||
| 
 | 
 | ||||||
|       this.$emit("selectedGoods", this.selectedGoods); |       this.$emit("selectedGoods", val); | ||||||
|     }, |     }, | ||||||
|     /** |     /** | ||||||
|      * 解决radio数据不回显问题 |      * 解决radio数据不回显问题 | ||||||
|  | @ -279,7 +279,7 @@ export default { | ||||||
|         console.log(element); |         console.log(element); | ||||||
|         return { |         return { | ||||||
|           goodsId: element.goodsId, //商品id |           goodsId: element.goodsId, //商品id | ||||||
|           goodsImage: element.small, //商品图片  必须为 300 * 300 |           goodsImage: element.small, //商品图片  最大为 300 * 300 | ||||||
|           name: element.goodsName, //商品昵称 |           name: element.goodsName, //商品昵称 | ||||||
|           price: parseInt(element.price), //商品价格 |           price: parseInt(element.price), //商品价格 | ||||||
|           quantity: element.quantity, //库存 |           quantity: element.quantity, //库存 | ||||||
|  |  | ||||||
|  | @ -1,41 +1,11 @@ | ||||||
| 
 |  | ||||||
| .search { | .search { | ||||||
|   .operation { |   .operation { | ||||||
|     margin-bottom: 2vh; |     margin-bottom: 2vh; | ||||||
|   } |   } | ||||||
| 
 |  | ||||||
|   .select-count { |  | ||||||
|     font-weight: 600; |  | ||||||
|     color: #40a9ff; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   .select-clear { |  | ||||||
|     margin-left: 10px; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   .page { |   .page { | ||||||
|     margin-top: 2vh; |     margin-top: 2vh; | ||||||
|   } |   } | ||||||
| 
 |  | ||||||
|   .drop-down { |  | ||||||
|     margin-left: 5px; |  | ||||||
|   } |  | ||||||
| } | } | ||||||
| 
 | .row { | ||||||
| .newPromotionView { |   margin-bottom: 5px; | ||||||
|   width: 80%; |  | ||||||
|   flex-direction: column; |  | ||||||
|   align-items: center; |  | ||||||
|   justify-content: center; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|   Input { |  | ||||||
|     flex-direction: row; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   .slotSpan { |  | ||||||
|     flex-direction: column; |  | ||||||
|     align-items: center; |  | ||||||
|     justify-content: center; |  | ||||||
|   } |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -52,6 +52,7 @@ | ||||||
|         @on-selection-change="changeSelect" |         @on-selection-change="changeSelect" | ||||||
|       > |       > | ||||||
|         <template slot-scope="{ row }" slot="action"> |         <template slot-scope="{ row }" slot="action"> | ||||||
|  |           <div  class="row"> | ||||||
|           <Button |           <Button | ||||||
|             type="primary" |             type="primary" | ||||||
|             size="small" |             size="small" | ||||||
|  | @ -97,6 +98,7 @@ | ||||||
|             @click="close(row)" |             @click="close(row)" | ||||||
|             >关闭</Button |             >关闭</Button | ||||||
|           > |           > | ||||||
|  |           </div> | ||||||
|         </template> |         </template> | ||||||
|       </Table> |       </Table> | ||||||
|       <Row type="flex" justify="end" class="page"> |       <Row type="flex" justify="end" class="page"> | ||||||
|  |  | ||||||
|  | @ -105,13 +105,13 @@ export default { | ||||||
|               color = "default"; |               color = "default"; | ||||||
|             if (params.row.promotionStatus == "NEW") { |             if (params.row.promotionStatus == "NEW") { | ||||||
|               text = "未开始"; |               text = "未开始"; | ||||||
|               color = "default"; |               color = "geekblue"; | ||||||
|             } else if (params.row.promotionStatus == "START") { |             } else if (params.row.promotionStatus == "START") { | ||||||
|               text = "已开始"; |               text = "已开始"; | ||||||
|               color = "green"; |               color = "green"; | ||||||
|             } else if (params.row.promotionStatus == "END") { |             } else if (params.row.promotionStatus == "END") { | ||||||
|               text = "已结束"; |               text = "已结束"; | ||||||
|               color = "red"; |               color = "volcano"; | ||||||
|             } else if (params.row.promotionStatus == "CLOSE") { |             } else if (params.row.promotionStatus == "CLOSE") { | ||||||
|               text = "已关闭"; |               text = "已关闭"; | ||||||
|               color = "red"; |               color = "red"; | ||||||
|  |  | ||||||
|  | @ -132,15 +132,13 @@ | ||||||
|             width: 100, |             width: 100, | ||||||
|             render: (h, params) => { |             render: (h, params) => { | ||||||
|               if (params.row.billStatus == "OUT") { |               if (params.row.billStatus == "OUT") { | ||||||
|                 return h( "Badge", {props: { status: "success",text: "已出账" } }) |                 return h("Tag", {props: {color: "blue",},},"已出账"); | ||||||
|               } else if (params.row.billStatus == "EXAMINE") { |  | ||||||
|                 return h( "Badge", {props: { status: "success",text: "已审核" } }) |  | ||||||
|               } else if (params.row.billStatus == "CHECK") { |               } else if (params.row.billStatus == "CHECK") { | ||||||
|                 return h( "Badge", {props: { status: "success",text: "已对账" } }) |                 return h("Tag", {props: {color: "geekblue",},},"已对账"); | ||||||
|               } else if (params.row.billStatus == "PAY") { |               } else if (params.row.billStatus == "EXAMINE") { | ||||||
|                 return h( "Badge", {props: { status: "success",text: "已付款" } }) |                 return h("Tag", {props: {color: "purple",},},"已审核"); | ||||||
|               }else if (params.row.billStatus == "COMPLETE") { |               } else { | ||||||
|                 return h( "Badge", {props: { status: "success",text: "已完成" } }) |                 return h("Tag", {props: {color: "green",},},"已付款"); | ||||||
|               } |               } | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|  |  | ||||||
|  | @ -143,15 +143,13 @@ | ||||||
|             width: 100, |             width: 100, | ||||||
|             render: (h, params) => { |             render: (h, params) => { | ||||||
|               if (params.row.billStatus == "OUT") { |               if (params.row.billStatus == "OUT") { | ||||||
|                 return h( "Badge", {props: { status: "success",text: "已出账" } }) |                 return h("Tag", {props: {color: "blue",},},"已出账"); | ||||||
|               } else if (params.row.billStatus == "EXAMINE") { |  | ||||||
|                 return h( "Badge", {props: { status: "success",text: "已审核" } }) |  | ||||||
|               } else if (params.row.billStatus == "CHECK") { |               } else if (params.row.billStatus == "CHECK") { | ||||||
|                 return h( "Badge", {props: { status: "success",text: "已对账" } }) |                 return h("Tag", {props: {color: "geekblue",},},"已对账"); | ||||||
|               } else if (params.row.billStatus == "PAY") { |               } else if (params.row.billStatus == "EXAMINE") { | ||||||
|                 return h( "Badge", {props: { status: "success",text: "已付款" } }) |                 return h("Tag", {props: {color: "purple",},},"已审核"); | ||||||
|               }else if (params.row.billStatus == "COMPLETE") { |               } else { | ||||||
|                 return h( "Badge", {props: { status: "success",text: "已完成" } }) |                 return h("Tag", {props: {color: "green",},},"已付款"); | ||||||
|               } |               } | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|  |  | ||||||
|  | @ -58,10 +58,10 @@ | ||||||
|             minWidth: 120, |             minWidth: 120, | ||||||
|             sortable: true, |             sortable: true, | ||||||
|             render: (h, params) => { |             render: (h, params) => { | ||||||
|               if (params.row.selected === null || params.row.selected === "") { |               if(params.row.selected === null || params.row.selected === ""){ | ||||||
|                 return h( "Badge", {props: { status: "error",text: "关闭" } }) |                 return h("div", [h("tag", {props: {color: "volcano"}}, "关闭")]); | ||||||
|               } else if (params.row.selected !== "") { |               }else{ | ||||||
|                 return h( "Badge", {props: { status: "success",text: "开启" } }) |                 return h("div", [h("tag", {props: {color: "green"}}, "开启")]); | ||||||
|               } |               } | ||||||
|             } |             } | ||||||
|           }, |           }, | ||||||
|  |  | ||||||
|  | @ -95,8 +95,8 @@ | ||||||
|                             <Input class="text w40" type="text" v-model="item.firstCompany" maxlength="3" clearable /> |                             <Input class="text w40" type="text" v-model="item.firstCompany" maxlength="3" clearable /> | ||||||
|                           </td> |                           </td> | ||||||
|                           <td> |                           <td> | ||||||
|                             <Input class="text w60" type="text" v-model="item.firstPrice" maxlength="6" clearable > |                             <Input class="text w60" type="text" v-model="item.firstPrice" maxlength="6" clearable> | ||||||
|                               <span slot="append">元</span> |                             <span slot="append">元</span> | ||||||
|                             </Input> |                             </Input> | ||||||
|                           </td> |                           </td> | ||||||
|                           <td> |                           <td> | ||||||
|  | @ -104,7 +104,7 @@ | ||||||
|                           </td> |                           </td> | ||||||
|                           <td> |                           <td> | ||||||
|                             <Input class="text w60" type="text" v-model="item.continuedPrice" maxlength="6" clearable> |                             <Input class="text w60" type="text" v-model="item.continuedPrice" maxlength="6" clearable> | ||||||
|                               <span slot="append">元</span> |                             <span slot="append">元</span> | ||||||
|                             </Input> |                             </Input> | ||||||
|                           </td> |                           </td> | ||||||
|                           <td class="nscs-table-handle"> |                           <td class="nscs-table-handle"> | ||||||
|  | @ -135,7 +135,7 @@ | ||||||
|               </div> |               </div> | ||||||
|             </FormItem> |             </FormItem> | ||||||
|             <Form-item> |             <Form-item> | ||||||
|               <Button @click="addShipTemplateChildren(index)" v-if="form.pricingMethod !== 'FREE'" icon="ios-create-outline" >为指定城市设置运费模板 |               <Button @click="addShipTemplateChildren(index)" v-if="form.pricingMethod !== 'FREE'" icon="ios-create-outline">为指定城市设置运费模板 | ||||||
|               </Button> |               </Button> | ||||||
|               <Button @click="handleSubmit" :loading="submitLoading" type="primary" style="margin-right:5px">保存 |               <Button @click="handleSubmit" :loading="submitLoading" type="primary" style="margin-right:5px">保存 | ||||||
|               </Button> |               </Button> | ||||||
|  | @ -163,7 +163,7 @@ export default { | ||||||
| 
 | 
 | ||||||
|   data() { |   data() { | ||||||
|     return { |     return { | ||||||
|       selectedIndex:0, //选中的地址模板下标 |       selectedIndex: 0, //选中的地址模板下标 | ||||||
|       item: "", //运费模板子模板 |       item: "", //运费模板子模板 | ||||||
|       shipInfo: {}, // 运费模板数据 |       shipInfo: {}, // 运费模板数据 | ||||||
|       title: "添加运费模板", // 模态框标题 |       title: "添加运费模板", // 模态框标题 | ||||||
|  | @ -195,6 +195,11 @@ export default { | ||||||
|       }, |       }, | ||||||
|     }; |     }; | ||||||
|   }, |   }, | ||||||
|  |   computed: { | ||||||
|  |     regions() { | ||||||
|  |       return this.$store.state.regions; | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|   methods: { |   methods: { | ||||||
|     init() { |     init() { | ||||||
|       this.getData(); |       this.getData(); | ||||||
|  | @ -224,7 +229,7 @@ export default { | ||||||
|             firstPrice: "", |             firstPrice: "", | ||||||
|             continuedCompany: "1", |             continuedCompany: "1", | ||||||
|             continuedPrice: "", |             continuedPrice: "", | ||||||
|             selectedAll:false |             selectedAll: false, | ||||||
|           }, |           }, | ||||||
|         ], |         ], | ||||||
|       }; |       }; | ||||||
|  | @ -240,12 +245,24 @@ export default { | ||||||
|       this.form = item; |       this.form = item; | ||||||
|     }, |     }, | ||||||
|     //选择地区 |     //选择地区 | ||||||
|     editRegion(item,index) { |     editRegion(item, index) { | ||||||
|       this.selectedIndex = index |       this.selectedIndex = index; | ||||||
|       this.item = item; |       this.item = item; | ||||||
| 
 | 
 | ||||||
|       this.$store.state.shipTemplate =  this.form.freightTemplateChildList |       this.regions.forEach((addr) => { | ||||||
|       this.$refs.region.open(item,index); |         this.form.freightTemplateChildList.forEach((child) => { | ||||||
|  |           child.area.split(",").forEach((area) => { | ||||||
|  |             if (addr.name == area) { | ||||||
|  |               addr.selectedAll = true; | ||||||
|  |               this.$set(child, "selectedAll", true); | ||||||
|  |             } | ||||||
|  |           }); | ||||||
|  |         }); | ||||||
|  |       }); | ||||||
|  | 
 | ||||||
|  |       this.$store.state.shipTemplate = this.form.freightTemplateChildList; | ||||||
|  | 
 | ||||||
|  |       this.$refs.region.open(item, index); | ||||||
|     }, |     }, | ||||||
|     //刷细数据 |     //刷细数据 | ||||||
|     refresh() { |     refresh() { | ||||||
|  | @ -273,9 +290,11 @@ export default { | ||||||
|           if (child.selectedList != "") { |           if (child.selectedList != "") { | ||||||
|             // 只显示省份 |             // 只显示省份 | ||||||
| 
 | 
 | ||||||
|             if(child.selectedAll ){ |             if (child.selectedAll) { | ||||||
|                 area += child.name + "," |               area += child.name + ","; | ||||||
|                 this.form.freightTemplateChildList[this.selectedIndex].selectedAll = true |               this.form.freightTemplateChildList[ | ||||||
|  |                 this.selectedIndex | ||||||
|  |               ].selectedAll = true; | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             child.selectedList.forEach((son) => { |             child.selectedList.forEach((son) => { | ||||||
|  | @ -302,11 +321,16 @@ export default { | ||||||
| 
 | 
 | ||||||
|       this.$refs.form.validate((valid) => { |       this.$refs.form.validate((valid) => { | ||||||
|         const regNumber = /^\+?[1-9][0-9]*$/; |         const regNumber = /^\+?[1-9][0-9]*$/; | ||||||
|         const regMoney = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/; |         const regMoney = | ||||||
|  |           /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/; | ||||||
|         if (valid) { |         if (valid) { | ||||||
|           if (this.form.pricingMethod != 'FREE') { |           if (this.form.pricingMethod != "FREE") { | ||||||
|             //校验运费模板详细信息 |             //校验运费模板详细信息 | ||||||
|             for (let i = 0; i < this.form.freightTemplateChildList.length; i++) { |             for ( | ||||||
|  |               let i = 0; | ||||||
|  |               i < this.form.freightTemplateChildList.length; | ||||||
|  |               i++ | ||||||
|  |             ) { | ||||||
|               if ( |               if ( | ||||||
|                 this.form.freightTemplateChildList[i].area == "" || |                 this.form.freightTemplateChildList[i].area == "" || | ||||||
|                 this.form.freightTemplateChildList[i].firstCompany == "" || |                 this.form.freightTemplateChildList[i].firstCompany == "" || | ||||||
|  | @ -324,8 +348,9 @@ export default { | ||||||
|                 regNumber.test( |                 regNumber.test( | ||||||
|                   this.form.freightTemplateChildList[i].continuedCompany |                   this.form.freightTemplateChildList[i].continuedCompany | ||||||
|                 ) == false || |                 ) == false || | ||||||
|                 regMoney.test(this.form.freightTemplateChildList[i].firstPrice) == |                 regMoney.test( | ||||||
|                   false || |                   this.form.freightTemplateChildList[i].firstPrice | ||||||
|  |                 ) == false || | ||||||
|                 regMoney.test( |                 regMoney.test( | ||||||
|                   this.form.freightTemplateChildList[i].continuedPrice |                   this.form.freightTemplateChildList[i].continuedPrice | ||||||
|                 ) == false |                 ) == false | ||||||
|  | @ -336,7 +361,6 @@ export default { | ||||||
|             } |             } | ||||||
|           } |           } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|           if (this.operation == "ADD") { |           if (this.operation == "ADD") { | ||||||
|             API_Shop.addShipTemplate(this.form, headers).then((res) => { |             API_Shop.addShipTemplate(this.form, headers).then((res) => { | ||||||
|               if (res.success) { |               if (res.success) { | ||||||
|  | @ -372,7 +396,7 @@ export default { | ||||||
|         firstPrice: "", |         firstPrice: "", | ||||||
|         continuedCompany: "1", |         continuedCompany: "1", | ||||||
|         continuedPrice: "", |         continuedPrice: "", | ||||||
|         selectedAll:false |         selectedAll: false, | ||||||
|       }; |       }; | ||||||
|       this.form.freightTemplateChildList.push(params); |       this.form.freightTemplateChildList.push(params); | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue