Przeglądaj źródła

报单、BA升级、注册BA会员功能发布

kevin_zhangl 3 lat temu
rodzic
commit
6c2511cbc2

+ 35 - 0
src/api/user.js

@@ -176,3 +176,38 @@ export function fetchUpgradeInfo(data) {
   })
 }
 
+// BA会员查询
+export function fetchBrandAmbassadorInfo(data) {
+  return request({
+    url: '/v1/user/ba-user-info',
+    method: 'get',
+    params: data
+  })
+}
+
+// 自动查询区位
+export function fetchAutoPlace(data) {
+  return request({
+    url: '/v1/user/get-auto-place',
+    method: 'get',
+    params: data
+  })
+}
+
+// 用户报单查询
+export function fetchWelcomePack(data) {
+  return request({
+    url: '/v1/user/dec',
+    method: 'get',
+    params: data
+  })
+}
+
+// 用户报单/BA升级
+export function createWelcomePack(data) {
+  return request({
+    url: '/v1/user/dec',
+    method: 'post',
+    data
+  })
+}

+ 21 - 6
src/lang/en.js

@@ -248,10 +248,10 @@ export default {
   shop: {
     product: 'Product',
     productCode: 'Product Code',
-    productName: 'Product Name',
-    productPicture: 'Product Picture',
-    productPrice: 'Product Price',
-    productBV: 'Product BV',
+    productName: 'Product',
+    productPicture: 'Picture',
+    productPrice: 'Price',
+    productBV: 'BV',
     qty: 'Qty',
     taxRate: 'Tax Rate',
     taxAmount: 'Tax',
@@ -287,8 +287,8 @@ export default {
     inputPasswordTips: 'Please enter your payment password',
     selfPickUp: 'Self Pick-up',
     delivery: 'Delivery',
-    selectAddress: 'Please select the shipping address',
-    selectPayment: 'Please select payment method',
+    selectAddress: 'Shipping Address',
+    selectPayment: 'Payment Method',
     freight: 'Freight',
     paidAmount: 'Amount Paid',
     productsSettlement: 'Products Settlement',
@@ -310,10 +310,22 @@ export default {
     payInfo: 'Pay Info',
     memberInformation: 'Member Information',
     enterMemberCode: 'Please enter member code.',
+    welcomePackWay: 'Welcome Pack Way',
+    normal: 'Normal',
+    BAUpgrade: 'BA Upgrade',
+    entryLevel: 'Entry Level',
+    selectEntryLevel: 'Select entry level',
+    stockistCode: 'Stockist Code',
   },
 
   atlas: {
     networkInformation: 'Network Information',
+    placementCode: 'Placement Code',
+    placementTree: 'Placement Tree',
+    left: 'Left',
+    right: 'Right',
+    placementAutoLeft: 'Placement Auto Location: L',
+    placementAutoRight: 'Placement Auto Location: R',
   },
 
   config: {
@@ -423,5 +435,8 @@ export default {
     printVoucher: 'Recharge Voucher',
     uploadVoucher: 'Upload',
     viewVoucher: 'View',
+    bankInformation: 'Bank Info',
+    selectBank: 'Select Bank',
+    accountName: 'Account Name',
   },
 }

+ 17 - 2
src/lang/zh.js

@@ -285,8 +285,8 @@ export default {
     inputPasswordTips: '请输入支付密码',
     selfPickUp: '自提',
     delivery: '收货地址',
-    selectAddress: '请选择收货地址',
-    selectPayment: '请选择支付方式',
+    selectAddress: '收货地址',
+    selectPayment: '支付方式',
     freight: '运费',
     paidAmount: '实付金额',
     productsSettlement: '商品结算',
@@ -307,10 +307,22 @@ export default {
     payInfo: '支付信息',
     memberInformation: '会员信息',
     enterMemberCode: '请输入会员编号',
+    welcomePackWay: '报单方式',
+    normal: '会员报单',
+    BAUpgrade: 'BA会员升级',
+    entryLevel: '报单级别',
+    selectEntryLevel: '请选择报单级别',
+    stockistCode: '报单中心编号',
   },
 
   atlas: {
     networkInformation: '网络信息',
+    placementCode: '安置人编号',
+    placementTree: '安置区位',
+    left: '左区',
+    right: '右区',
+    placementAutoLeft: '自动安置在左侧',
+    placementAutoRight: '自动安置在右侧',
   },
 
   config: {
@@ -419,5 +431,8 @@ export default {
     printVoucher: '充值凭证',
     uploadVoucher: '上传',
     viewVoucher: '查看',
+    bankInformation: '银行信息',
+    selectBank: '请选择开户行',
+    accountName: '开户支行',
   },
 }

+ 6 - 0
src/router/modules/user.js

@@ -18,6 +18,12 @@ const userRouter = {
       name: 'upgradeManagement',
       meta: { title: 'Upgrade Management', icon: 'user', noCache: true }
     },
+    {
+      path: 'dec',  // 会员报单/BA升级
+      component: () => import('@/views/user/welcome-pack'),
+      name: 'welcomePack',
+      meta: { title: 'Welcome Pack Management', icon: 'user', noCache: true }
+    },
   ]
 }
 export default userRouter

+ 2 - 2
src/utils/index.js

@@ -421,13 +421,13 @@ export function getScreenHeight() {
 export function formatAmount(amount) {
   amount = parseFloat(amount)
   if (amount === 0.00) {
-    return '0';
+    return '0.00';
   }
 
   amount = String(amount);
   let left = amount.split('.')[0]
   let right = amount.split('.')[1]
-  right = right ? '.' + right : ''
+  right = right ? '.' + (right.length < 2 ? right + '0' : right) : '.00'
   let temp = left.split('').reverse().join('').match(/(\d{1,3})/g)
   return (Number(amount) < 0 ? '-' : '') + temp.join(',').split('').reverse().join('') + right
 }

+ 3 - 2
src/views/finance/recharge-list.vue

@@ -7,7 +7,7 @@
 				</template>
 			</el-table-column>
 			<el-table-column align="center" :label="$t('finance.rechargeAmount')" prop="AMOUNT"  width="160px"></el-table-column>
-			<el-table-column align="center" :label="$t('finance.rechargeStatus')" prop="STATUS_NAME" width="120px">
+			<el-table-column align="center" :label="$t('finance.rechargeStatus')" prop="STATUS_NAME" width="150px">
 				<template slot-scope="{row}">
 					<el-tag :type="row.AUDIT_STATUS | statusFilter">{{row.STATUS_NAME}}</el-tag>
 				</template>
@@ -86,10 +86,11 @@ import Pagination from '@/components/Pagination'
 import tool from "@/utils/tool"
 import {getScreenWidth} from "@/utils"
 import {integer, range, required} from "@/utils/rules"
+import LeoUploader from "@/components/Upload/Uploader"
 
 export default {
 	name: 'RechargeDetails',
-	components: { Pagination },
+	components: { Pagination,LeoUploader },
 	directives: { waves },
 	filters: {
 		statusFilter(status) {

+ 77 - 80
src/views/shop/car-fund-products.vue

@@ -16,13 +16,15 @@
 								<el-col :xs="24" :sm="24" :lg="4">
 									<span style="color: #9c9c9c; cursor: pointer;">{{ row.GOODS_NO }}</span>
 								</el-col>
-								<el-col :xs="16" :sm="8" :lg="5">
+								<el-col :xs="24" :sm="24" :lg="5">
+								<span style="font-size: 13px;">
 									<span style="font-weight: bold; color: tomato;">{{ $t('shop.productPrice') }}:{{ row.SELL_PRICE | amountFilter }}</span>
+								</span>
 								</el-col>
-								<el-col :xs="8" :sm="8" :lg="4">
+								<el-col :xs="24" :sm="24" :lg="4">
 									<span style="font-size: 13px;">{{ $t('shop.inventory') }}:{{ row.STORE_NUMS }}</span>
 								</el-col>
-								<el-col :xs="24" :sm="8" :lg="5">
+								<el-col :xs="24" :sm="24" :lg="5">
 									<el-input-number size="mini" v-model="storeNums[$index]" :min="1" :max="Number(row.STORE_NUMS)" @change="handleInputNumber($event, row)"></el-input-number>
 								</el-col>
 							</el-row>
@@ -34,13 +36,13 @@
 
 		<pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
 
-		<div class="white-box-footer" style="margin-top: 7px;" v-show="total>0">
-			<div class="flex data" style="float: left; display: inline-block; margin-top: 10px;">
-				<el-button type="primary" size="mini" @click="settlement()" style="float: left;">{{ $t('shop.checkOut') }}</el-button>
+		<div class="white-box-footer" style="margin-top: 15px;" v-show="total>0">
+			<div class="flex data" style="float: left; display: inline-block; margin-top: 20px;">
+				<el-button type="primary" size="small" @click="settlement()" style="float: left;">{{ $t('shop.checkOut') }}</el-button>
 			</div>
 			<div class="flex data" style="float: right; display: inline-block; line-height: 28px; font-size: 14px; margin-top: 10px; border: 1px solid #dcdfe6; border-radius: 4px; padding: 0 5px;">
-				<div style="margin-right: 1rem; display: inline-block;">{{ $t('shop.productPrice') }}:{{ sellPriceSum }}</div>
-				<div style="display: inline-block;">{{ $t('shop.taxAmount') }}:{{ taxSum }}</div>
+				<div style="margin-right: 2rem; display: inline-block;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ sellPriceSum | amountFilter }}</div>
+				<div style="display: inline-block;">{{ $t('shop.taxAmount') }}:{{ $t('currency.sign') }} {{ taxSum | amountFilter }}</div>
 			</div>
 		</div>
 
@@ -57,20 +59,20 @@
 									</el-aside>
 									<el-main style="padding: 10px 5px; text-align: left;">
 										<el-row :gutter="10">
-											<el-col :xs="24" :sm="9" :lg="9">
+											<el-col :xs="24" :sm="8" :lg="8">
 												<span style="cursor: pointer;" @click="handleProduct(row)">{{ row.GOODS_NAME }}</span>
 											</el-col>
 											<el-col :xs="24" :sm="4" :lg="4">
 												<span style="color: #9c9c9c; cursor: pointer;">{{ row.GOODS_NO }}</span>
 											</el-col>
-											<el-col :xs="20" :sm="4" :lg="4">
-												<span style="font-weight: bold;">{{ $t('shop.productPrice') }}:{{ row.member_price }}</span>
+											<el-col :xs="16" :sm="4" :lg="4">
+												<span style="font-weight: bold;">{{ row.member_price | amountFilter }}</span>
 											</el-col>
-											<el-col :xs="4" :sm="2" :lg="2">
+											<el-col :xs="8" :sm="3" :lg="3">
 												<span style="">x {{ row.chose_num }}</span>
 											</el-col>
 											<el-col :xs="24" :sm="5" :lg="5">
-												<span style="color: tomato; font-weight: bold;">{{ $t('shop.totalPrice') }}:{{ row.member_price_plus }}</span>
+												<span style="color: tomato; font-weight: bold;">{{ row.member_price_plus | amountFilter }}</span>
 											</el-col>
 										</el-row>
 									</el-main>
@@ -79,66 +81,61 @@
 						</el-table-column>
 					</el-table>
 
-					<div class="white-box-footer" style=" padding: 10px; line-height: 10px;">
-						<el-row :gutter="40">
-							<el-col :xs="24" :sm="24" :lg="24">
-								<!-- 订单合计 -->
-								<div class="box address_box">
-									{{ $t('shop.totalOrders') }}:
-									<div class="sum">
-										<div class="sum_box">
-											<div>{{ $t('shop.total') }}</div>
-											<div>{{ pointsSum }}</div>
+					<div class="white-box-footer">
+						<!-- 订单合计 -->
+						<div class="box address_box" style="margin: 15px 0;">
+							<el-row :gutter="20">
+								<el-col :xs="24" :sm="24" :md="10" :lg="10" :xl="10">
+									<span style="font-weight: bold; word-break: normal; white-space: normal; line-height: 28px;">{{ $t('shop.totalOrders') }}:</span>
+								</el-col>
+								<el-col :xs="24" :sm="24" :md="14" :lg="14" :xl="14" style="word-break: normal; white-space: nowrap; line-height: 28px;">
+									<span>{{ $t('shop.total') }}:{{ parseFloat(pointsSum) | amountFilter }}</span>
+									<span style="margin-left: 15px;">{{ $t('shop.freight') }}:{{ pointFreight }}</span>
+								</el-col>
+							</el-row>
+						</div>
+						<!-- 支付方式/账户余额 {{ cashCurrency }}:  -->
+						<div class="box address_box" style="margin: 15px 0;">
+							<el-row :gutter="20" type="flex" style="flex-wrap: wrap;">
+								<el-col :xs="24" :sm="24" :md="10" :lg="810" :xl="10">
+									<span style="font-weight: bold; word-break: normal; white-space: normal; line-height: 28px;">{{ $t('shop.selectPayment') }}:</span>
+								</el-col>
+								<el-col :xs="24" :sm="24" :md="14" :lg="14" :xl="14" style="word-break: normal; white-space: nowrap;">
+									<el-radio-group v-model="payType" @change='chosePayType'>
+										<div v-for="(item, index) in payList" :key='index' class="address">
+											<el-radio :label="item.label" border>
+												{{ item.name }}<span v-if="item.label === payType" style="color: tomato;">({{ userBalance[payType] | amountFilter }})</span>
+											</el-radio>
 										</div>
-										<div class="sum_box">
-											<div>{{ $t('shop.freight') }}</div>
-											<div>{{ pointFreight }}</div>
+									</el-radio-group>
+								</el-col>
+							</el-row>
+						</div>
+
+						<!-- 收货地址 -->
+						<div class="box address_box" style="margin: 15px 0;">
+							<el-row :gutter="20" type="flex" style="flex-wrap: wrap;">
+								<el-col :xs="24" :sm="24" :md="4" :lg="4" :xl="4">
+									<span style="font-weight: bold; word-break: normal; white-space: normal; line-height: 28px;">{{ $t('shop.selectAddress') }}:</span>
+								</el-col>
+								<el-col :xs="24" :sm="24" :md="20" :lg="20" :xl="20" style="word-break: normal; white-space: nowrap;">
+									<el-radio-group v-model="addressId" @change='choseAddress'>
+										<div class="address">
+											<el-radio :label="selfPickUpAddressId">{{ $t('shop.selfPickUp') }}</el-radio>
 										</div>
-									</div>
-								</div>
-								<!-- 支付方式/账户余额 -->
-								<div class="box address_box">
-									<el-row :gutter="20">
-										<el-col :xs="24" :sm="24" :lg="6">
-											<span style="line-height: 25px; display: inline-block; padding: 5px 0 15px 0;">{{ $t('shop.selectPayment') }}:</span>
-										</el-col>
-										<el-col :xs="24" :sm="24" :lg="18">
-											<el-radio-group v-model="payType" @change='chosePayType'>
-												<div v-for="(item, index) in payList" :key='index' class="address">
-													<el-radio :label="item.label" border>
-														{{ item.name }}<span v-if="item.label === payType" style="color: tomato;">({{ userBalance[payType] }})</span>
-													</el-radio>
-												</div>
-											</el-radio-group>
-										</el-col>
-									</el-row>
-								</div>
-								<!-- 收货地址 -->
-								<div class="box address_box">
-									<el-row :gutter="20">
-										<el-col :xs="24" :sm="24" :lg="4">
-											<span style="line-height: 25px; display: inline-block; padding: 5px 0 15px 0;">{{ $t('shop.selectAddress') }}:</span>
-										</el-col>
-										<el-col :xs="24" :sm="24" :lg="20">
-											<el-radio-group v-model="addressId" @change='choseAddress'>
-												<div class="address">
-													<el-radio :label="selfPickUpAddressId" border>{{ $t('shop.selfPickUp') }}</el-radio>
-												</div>
-												<div v-for="(item, index) in shippingAddressList" :key='index' class="address">
-													<el-radio :label="item.ID" border style="word-break: break-all; white-space: normal;">
-														<span>{{item.ADDRESS}}, {{item.LGA_NAME}}, {{item.PROVINCE_NAME}}</span>
-														<el-divider direction="vertical"></el-divider>
-														<span>{{item.MOBILE}}</span>
-														<el-divider direction="vertical"></el-divider>
-														<span>{{item.CONSIGNEE}}</span>
-													</el-radio>
-												</div>
-											</el-radio-group>
-										</el-col>
-									</el-row>
-								</div>
-							</el-col>
-						</el-row>
+										<div v-for="(item, index) in shippingAddressList" :key='index' class="address">
+											<el-radio :label="item.ID" style="word-break: break-all; white-space: normal;">
+												<span>{{item.ADDRESS}}, {{item.LGA_NAME}}, {{item.PROVINCE_NAME}}</span>
+												<el-divider direction="vertical"></el-divider>
+												<span>{{item.MOBILE}}</span>
+												<el-divider direction="vertical"></el-divider>
+												<span>{{item.CONSIGNEE}}</span>
+											</el-radio>
+										</div>
+									</el-radio-group>
+								</el-col>
+							</el-row>
+						</div>
 					</div>
 
 					<div class="white-box-footer" >
@@ -163,9 +160,9 @@
 					<div style="text-align: left; line-height: 50px; font-size: 16px;">
 						<span style="font-weight: bold; font-size: 20px;">{{ product.GOODS_NAME }}</span><br />
 						<span style="font-weight: bold; font-size: 15px;">{{ $t('shop.productCode') }}:{{ product.GOODS_NO }}</span><br />
-						<span style="color: tomato;">{{ $t('shop.productPrice') }}:{{ product.SELL_PRICE }}</span><br />
+						<span style="color: tomato;">{{ $t('shop.productPrice') }}:{{ product.SELL_PRICE | amountFilter }}</span><br />
 						<span>{{ $t('shop.taxRate') }}:{{ product.TAX_RATE / 100 }}</span><br />
-						<span>{{ $t('shop.taxAmount') }}:{{ product.taxAmount }}</span><br />
+						<span>{{ $t('shop.taxAmount') }}:{{ product.taxAmount | amountFilter }}</span><br />
 						<span>{{ $t('shop.inventory') }}:{{ product.STORE_NUMS }}</span>
 					</div>
 				</el-col>
@@ -183,7 +180,7 @@ import Pagination from '@/components/Pagination'
 import usersInfo from "@/utils/usersInfo";
 
 export default {
-	name: 'ProductsList',
+	name: 'CarFundProducts',
 	components: { Pagination },
 	directives: { waves },
 	filters: {
@@ -233,8 +230,8 @@ export default {
 			payList: [],
 			cashCurrency: '',
 			currency: {},
-			pointsSum: '',
-			pointFreight: '',
+			pointsSum: 0,
+			pointFreight: 0,
 			freeShipping: '',
 			goodsId: '',
 			goodsNum: '',
@@ -261,10 +258,10 @@ export default {
 				GOODS_NAME: '',
 				GOODS_NO: '',
 				COVER: '',
-				SELL_PRICE: '',
-				PRICE_PV: '',
-				TAX_RATE: '',
-				taxAmount: '',
+				SELL_PRICE: 0,
+				PRICE_PV: 0,
+				TAX_RATE: 0,
+				taxAmount: 0,
 			},
 			imageStyle: 'margin-top: -50px;',
 		}

+ 76 - 81
src/views/shop/standard-products.vue

@@ -17,18 +17,18 @@
 							<el-col :xs="24" :sm="24" :lg="4">
 								<span style="color: #9c9c9c; cursor: pointer;">{{ row.GOODS_NO }}</span>
 							</el-col>
-							<el-col :xs="16" :sm="8" :lg="5">
+							<el-col :xs="24" :sm="24" :lg="5">
 								<span style="font-size: 13px;">
 									<span style="font-weight: bold; color: tomato;">
 										{{ $t('currency.sign') }} {{ row.SELL_PRICE | amountFilter }}
-										<span style="font-weight:normal; color: #606266;">({{ row.PRICE_PV }}{{ $t('shop.productBV') }})</span>
+										<span style="font-weight:normal; color: #606266;">({{ row.PRICE_PV | amountFilter }}{{ $t('shop.productBV') }})</span>
 									</span>
 								</span>
 							</el-col>
-							<el-col :xs="8" :sm="8" :lg="4">
+							<el-col :xs="24" :sm="24" :lg="4">
 								<span style="font-size: 13px;">{{ $t('shop.inventory') }}:{{ row.STORE_NUMS }}</span>
 							</el-col>
-							<el-col :xs="24" :sm="8" :lg="5">
+							<el-col :xs="24" :sm="24" :lg="5">
 								<el-input-number size="mini" v-model="storeNums[$index]" :min="1" :max="Number(row.STORE_NUMS)" @change="handleInputNumber($event, row)"></el-input-number>
 							</el-col>
 						</el-row>
@@ -45,9 +45,9 @@
 			<el-button type="primary" size="small" @click="settlement()" style="float: left;">{{ $t('shop.checkOut') }}</el-button>
 		</div>
 		<div class="flex data" style="float: right; display: inline-block; line-height: 28px; font-size: 14px; margin-top: 10px; border: 1px solid #dcdfe6; border-radius: 4px; padding: 0 5px;">
-			<div style="margin-right: 2rem; display: inline-block;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ sellPriceSum }}</div>
-			<div style="margin-right: 2rem; display: inline-block;">{{ $t('shop.productBV') }}:{{ $t('currency.sign') }} {{ pricePvSum }}</div>
-			<div style="display: inline-block;">{{ $t('shop.taxAmount') }}:{{ $t('currency.sign') }} {{ taxSum }}</div>
+			<div style="margin-right: 2rem; display: inline-block;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ sellPriceSum | amountFilter }}</div>
+			<div style="margin-right: 2rem; display: inline-block;">{{ $t('shop.productBV') }}:{{ pricePvSum | amountFilter }}</div>
+			<div style="display: inline-block;">{{ $t('shop.taxAmount') }}:{{ $t('currency.sign') }} {{ taxSum | amountFilter }}</div>
 		</div>
 	</div>
 
@@ -64,20 +64,20 @@
 								</el-aside>
 								<el-main style="padding: 10px 5px; text-align: left;">
 									<el-row :gutter="10">
-										<el-col :xs="24" :sm="9" :lg="9">
+										<el-col :xs="24" :sm="8" :lg="8">
 											<span style="cursor: pointer;" @click="handleProduct(row)">{{ row.GOODS_NAME }}</span>
 										</el-col>
 										<el-col :xs="24" :sm="4" :lg="4">
 											<span style="color: #9c9c9c; cursor: pointer;">{{ row.GOODS_NO }}</span>
 										</el-col>
-										<el-col :xs="20" :sm="4" :lg="4">
-											<span style="font-weight: bold;">{{ $t('currency.sign') }} {{ row.member_price }}</span>
+										<el-col :xs="16" :sm="4" :lg="4">
+											<span style="font-weight: bold;">{{ $t('currency.sign') }} {{ row.member_price | amountFilter }}</span>
 										</el-col>
-										<el-col :xs="4" :sm="2" :lg="2">
+										<el-col :xs="8" :sm="3" :lg="3">
 											<span style="">x {{ row.chose_num }}</span>
 										</el-col>
 										<el-col :xs="24" :sm="5" :lg="5">
-											<span style="color: tomato; font-weight: bold;">{{ $t('currency.sign') }} {{ row.member_price_plus }}</span>
+											<span style="color: tomato; font-weight: bold;">{{ $t('currency.sign') }} {{ row.member_price_plus | amountFilter }}</span>
 										</el-col>
 									</el-row>
 								</el-main>
@@ -86,66 +86,61 @@
 					</el-table-column>
 				</el-table>
 
-				<div class="white-box-footer" style="padding: 10px; line-height: 15px;">
-					<el-row :gutter="40">
-						<el-col :xs="24" :sm="24" :lg="24">
-							<!-- 订单合计 -->
-							<div class="box address_box">
-								{{ $t('shop.totalOrders') }}:
-								<div class="sum">
-									<div class="sum_box">
-										<div>{{ $t('shop.total') }}</div>
-										<div>{{ $t('currency.sign') }} {{ payType === "cash" ? cashSum : pointsSum }}</div>
+				<div class="white-box-footer">
+					<!-- 订单合计 -->
+					<div class="box address_box" style="margin: 15px 0;">
+						<el-row :gutter="20">
+							<el-col :xs="24" :sm="8" :md="10" :lg="10" :xl="10">
+								<span style="font-weight: bold; word-break: normal; white-space: normal; line-height: 28px;">{{ $t('shop.totalOrders') }}:</span>
+							</el-col>
+							<el-col :xs="24" :sm="16" :md="14" :lg="14" :xl="14" style="word-break: normal; white-space: nowrap; line-height: 28px;">
+								<span>{{ $t('shop.total') }}:{{ $t('currency.sign') }} {{ parseFloat(cashSum) | amountFilter }}</span>
+								<span style="margin-left: 15px;">{{ $t('shop.freight') }}:{{ $t('currency.sign') }} {{ pointFreight }}</span>
+							</el-col>
+						</el-row>
+					</div>
+					<!-- 支付方式/账户余额 {{ cashCurrency }}:  -->
+					<div class="box address_box" style="margin: 15px 0;">
+						<el-row :gutter="20" type="flex" style="flex-wrap: wrap;">
+							<el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
+								<span style="font-weight: bold; word-break: normal; white-space: normal; line-height: 28px;">{{ $t('shop.selectPayment') }}:</span>
+							</el-col>
+							<el-col :xs="24" :sm="24" :md="16" :lg="16" :xl="16" style="word-break: normal; white-space: nowrap;">
+								<el-radio-group v-model="payType" @change='chosePayType'>
+									<div v-for="(item, index) in payList" :key='index' class="address">
+										<el-radio :label="item.label" border>
+											{{ item.name }}<span v-if="item.label === 'cash'" style="color: tomato;">({{ $t('currency.sign') }} {{ userBalance.cash | amountFilter }})</span>
+										</el-radio>
 									</div>
-									<div class="sum_box">
-										<div>{{ $t('shop.freight') }}</div>
-										<div>{{ $t('currency.sign') }} {{ pointFreight }}</div>
+								</el-radio-group>
+							</el-col>
+						</el-row>
+					</div>
+
+					<!-- 收货地址 -->
+					<div class="box address_box" style="margin: 15px 0;">
+						<el-row :gutter="20" type="flex" style="flex-wrap: wrap;">
+							<el-col :xs="24" :sm="24" :md="4" :lg="4" :xl="4">
+								<span style="font-weight: bold; word-break: normal; white-space: normal; line-height: 28px;">{{ $t('shop.selectAddress') }}:</span>
+							</el-col>
+							<el-col :xs="24" :sm="24" :md="20" :lg="20" :xl="20" style="word-break: normal; white-space: nowrap;">
+								<el-radio-group v-model="addressId" @change='choseAddress'>
+									<div class="address">
+										<el-radio :label="selfPickUpAddressId">{{ $t('shop.selfPickUp') }}</el-radio>
 									</div>
-								</div>
-							</div>
-							<!-- 支付方式/账户余额 {{ cashCurrency }}:  -->
-							<div class="box address_box">
-								<el-row :gutter="20">
-									<el-col :xs="24" :sm="24" :lg="6">
-										<span style="line-height: 25px; display: inline-block; padding: 5px 0 15px 0;">{{ $t('shop.selectPayment') }}:</span>
-									</el-col>
-									<el-col :xs="24" :sm="24" :lg="18">
-										<el-radio-group v-model="payType" @change='chosePayType'>
-											<div v-for="(item, index) in payList" :key='index' class="address">
-												<el-radio :label="item.label" border>
-													{{ item.name }}<span v-if="item.label === 'cash'" style="color: tomato;">({{ $t('currency.sign') }} {{ userBalance.cash }})</span>
-												</el-radio>
-											</div>
-										</el-radio-group>
-									</el-col>
-								</el-row>
-							</div>
-							<!-- 收货地址 -->
-							<div class="box address_box">
-								<el-row :gutter="20">
-									<el-col :xs="24" :sm="24" :lg="4">
-										<span style="line-height: 25px; display: inline-block; padding: 5px 0 15px 0;">{{ $t('shop.selectAddress') }}:</span>
-									</el-col>
-									<el-col :xs="24" :sm="24" :lg="20">
-										<el-radio-group v-model="addressId" @change='choseAddress'>
-											<div class="address">
-												<el-radio :label="selfPickUpAddressId" border>{{ $t('shop.selfPickUp') }}</el-radio>
-											</div>
-											<div v-for="(item, index) in shippingAddressList" :key='index' class="address">
-												<el-radio :label="item.ID" border style="word-break: break-all; white-space: normal;">
-													<span>{{item.ADDRESS}}, {{item.LGA_NAME}}, {{item.PROVINCE_NAME}}</span>
-													<el-divider direction="vertical"></el-divider>
-													<span>{{item.MOBILE}}</span>
-													<el-divider direction="vertical"></el-divider>
-													<span>{{item.CONSIGNEE}}</span>
-												</el-radio>
-											</div>
-										</el-radio-group>
-									</el-col>
-								</el-row>
-							</div>
-						</el-col>
-					</el-row>
+									<div v-for="(item, index) in shippingAddressList" :key='index' class="address">
+										<el-radio :label="item.ID"  style="word-break: break-all; white-space: normal;">
+											<span>{{item.ADDRESS}}, {{item.LGA_NAME}}, {{item.PROVINCE_NAME}}</span>
+											<el-divider direction="vertical"></el-divider>
+											<span>{{item.MOBILE}}</span>
+											<el-divider direction="vertical"></el-divider>
+											<span>{{item.CONSIGNEE}}</span>
+										</el-radio>
+									</div>
+								</el-radio-group>
+							</el-col>
+						</el-row>
+					</div>
 				</div>
 
 				<div class="white-box-footer" >
@@ -211,10 +206,10 @@
 				<div style="text-align: left; line-height: 50px; font-size: 16px;">
 					<span style="font-weight: bold; font-size: 20px;">{{ product.GOODS_NAME }}</span><br />
 					<span style="font-weight: bold; font-size: 15px;">{{ $t('shop.productCode') }}:{{ product.GOODS_NO }}</span><br />
-					<span style="color: tomato;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ product.SELL_PRICE }}</span><br />
-					<span>{{ $t('shop.productBV') }}:{{ product.PRICE_PV }}</span><br />
+					<span style="color: tomato;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ product.SELL_PRICE | amountFilter }}</span><br />
+					<span>{{ $t('shop.productBV') }}:{{ product.PRICE_PV | amountFilter }}</span><br />
 					<span>{{ $t('shop.taxRate') }}:{{ product.TAX_RATE / 100 }}</span><br />
-					<span>{{ $t('shop.taxAmount') }}:{{ $t('currency.sign') }} {{ product.taxAmount }}</span><br />
+					<span>{{ $t('shop.taxAmount') }}:{{ $t('currency.sign') }} {{ product.taxAmount | amountFilter }}</span><br />
 					<span>{{ $t('shop.inventory') }}:{{ product.STORE_NUMS }}</span>
 				</div>
 			</el-col>
@@ -233,7 +228,7 @@
 	import paystack from 'vue-paystack'
 
   export default {
-    name: 'ProductsList',
+    name: 'StandardProducts',
     components: { Pagination, paystack },
     directives: { waves },
 		filters: {
@@ -284,9 +279,9 @@
 				payList: [],
 				cashCurrency: '',
 				currency: {},
-				pointsSum: '',
-				cashSum: '',
-				pointFreight: '',
+				pointsSum: 0,
+				cashSum: 0,
+				pointFreight: 0,
 				freeShipping: '',
 				goodsId: '',
 				goodsNum: '',
@@ -345,10 +340,10 @@
 					GOODS_NAME: '',
 					GOODS_NO: '',
 					COVER: '',
-					SELL_PRICE: '',
-					PRICE_PV: '',
-					TAX_RATE: '',
-					taxAmount: '',
+					SELL_PRICE: 0,
+					PRICE_PV: 0,
+					TAX_RATE: 0,
+					taxAmount: 0,
 				},
 				imageStyle: 'margin-top: -50px;',
       }

+ 78 - 81
src/views/shop/villa-fund-products.vue

@@ -16,13 +16,15 @@
 								<el-col :xs="24" :sm="24" :lg="4">
 									<span style="color: #9c9c9c; cursor: pointer;">{{ row.GOODS_NO }}</span>
 								</el-col>
-								<el-col :xs="16" :sm="8" :lg="5">
+								<el-col :xs="24" :sm="24" :lg="5">
+								<span style="font-size: 13px;">
 									<span style="font-weight: bold; color: tomato;">{{ $t('shop.productPrice') }}:{{ row.SELL_PRICE | amountFilter }}</span>
+								</span>
 								</el-col>
-								<el-col :xs="8" :sm="8" :lg="4">
+								<el-col :xs="24" :sm="24" :lg="4">
 									<span style="font-size: 13px;">{{ $t('shop.inventory') }}:{{ row.STORE_NUMS }}</span>
 								</el-col>
-								<el-col :xs="24" :sm="8" :lg="5">
+								<el-col :xs="24" :sm="24" :lg="5">
 									<el-input-number size="mini" v-model="storeNums[$index]" :min="1" :max="Number(row.STORE_NUMS)" @change="handleInputNumber($event, row)"></el-input-number>
 								</el-col>
 							</el-row>
@@ -34,13 +36,13 @@
 
 		<pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
 
-		<div class="white-box-footer" style="margin-top: 5px;" v-show="total>0">
-			<div class="flex data" style="float: left; display: inline-block; margin-top: 10px;">
-				<el-button type="primary" size="mini" @click="settlement()" style="float: left;">{{ $t('shop.checkOut') }}</el-button>
+		<div class="white-box-footer" style="margin-top: 15px;" v-show="total>0">
+			<div class="flex data" style="float: left; display: inline-block; margin-top: 20px;">
+				<el-button type="primary" size="small" @click="settlement()" style="float: left;">{{ $t('shop.checkOut') }}</el-button>
 			</div>
-			<div class="flex data" style="float: right; display: inline-block; line-height: 28px; font-size: 14px; margin-top: 10px; border: 1px solid #dcdfe6; border-radius: 4px; padding: 0 15px;">
-				<div style="margin-right: 1rem; display: inline-block;">{{ $t('shop.productPrice') }}:{{ sellPriceSum }}</div>
-				<div style="display: inline-block;">{{ $t('shop.taxAmount') }}:{{ taxSum }}</div>
+			<div class="flex data" style="float: right; display: inline-block; line-height: 28px; font-size: 14px; margin-top: 10px; border: 1px solid #dcdfe6; border-radius: 4px; padding: 0 5px;">
+				<div style="margin-right: 2rem; display: inline-block;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ sellPriceSum | amountFilter }}</div>
+				<div style="display: inline-block;">{{ $t('shop.taxAmount') }}:{{ $t('currency.sign') }} {{ taxSum | amountFilter }}</div>
 			</div>
 		</div>
 
@@ -57,20 +59,20 @@
 									</el-aside>
 									<el-main style="padding: 10px 5px; text-align: left;">
 										<el-row :gutter="10">
-											<el-col :xs="24" :sm="9" :lg="9">
+											<el-col :xs="24" :sm="8" :lg="8">
 												<span style="cursor: pointer;" @click="handleProduct(row)">{{ row.GOODS_NAME }}</span>
 											</el-col>
 											<el-col :xs="24" :sm="4" :lg="4">
 												<span style="color: #9c9c9c; cursor: pointer;">{{ row.GOODS_NO }}</span>
 											</el-col>
-											<el-col :xs="20" :sm="4" :lg="4">
-												<span style="font-weight: bold;">{{ $t('shop.productPrice') }}:{{ row.member_price }}</span>
+											<el-col :xs="16" :sm="4" :lg="4">
+												<span style="font-weight: bold;">{{ row.member_price | amountFilter }}</span>
 											</el-col>
-											<el-col :xs="4" :sm="2" :lg="2">
+											<el-col :xs="8" :sm="3" :lg="3">
 												<span style="">x {{ row.chose_num }}</span>
 											</el-col>
 											<el-col :xs="24" :sm="5" :lg="5">
-												<span style="color: tomato; font-weight: bold;">{{ $t('shop.totalPrice') }}:{{ row.member_price_plus }}</span>
+												<span style="color: tomato; font-weight: bold;">{{ row.member_price_plus | amountFilter }}</span>
 											</el-col>
 										</el-row>
 									</el-main>
@@ -79,66 +81,61 @@
 						</el-table-column>
 					</el-table>
 
-					<div class="white-box-footer" style=" padding: 10px; line-height: 10px;">
-						<el-row :gutter="40">
-							<el-col :xs="24" :sm="24" :lg="24">
-								<!-- 订单合计 -->
-								<div class="box address_box">
-									{{ $t('shop.totalOrders') }}:
-									<div class="sum">
-										<div class="sum_box">
-											<div>{{ $t('shop.total') }}</div>
-											<div>{{ pointsSum }}</div>
+					<div class="white-box-footer">
+						<!-- 订单合计 -->
+						<div class="box address_box" style="margin: 15px 0;">
+							<el-row :gutter="20">
+								<el-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8">
+									<span style="font-weight: bold; word-break: normal; white-space: nowrap; line-height: 28px;">{{ $t('shop.totalOrders') }}:</span>
+								</el-col>
+								<el-col :xs="24" :sm="16" :md="16" :lg="16" :xl="16" style="word-break: normal; white-space: nowrap; line-height: 28px;">
+									<span>{{ $t('shop.total') }}:{{ parseFloat(pointsSum) | amountFilter }}</span>
+									<span style="margin-left: 15px;">{{ $t('shop.freight') }}:{{ pointFreight }}</span>
+								</el-col>
+							</el-row>
+						</div>
+						<!-- 支付方式/账户余额 {{ cashCurrency }}:  -->
+						<div class="box address_box" style="margin: 15px 0;">
+							<el-row :gutter="20" type="flex" style="flex-wrap: wrap;">
+								<el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
+									<span style="font-weight: bold; word-break: normal; white-space: nowrap; line-height: 28px;">{{ $t('shop.selectPayment') }}:</span>
+								</el-col>
+								<el-col :xs="24" :sm="24" :md="16" :lg="16" :xl="16" style="word-break: normal; white-space: nowrap;">
+									<el-radio-group v-model="payType" @change='chosePayType'>
+										<div v-for="(item, index) in payList" :key='index' class="address">
+											<el-radio :label="item.label" border>
+												{{ item.name }}<span v-if="item.label === payType" style="color: tomato;">({{ userBalance[payType] | amountFilter }})</span>
+											</el-radio>
 										</div>
-										<div class="sum_box">
-											<div>{{ $t('shop.freight') }}</div>
-											<div>{{ pointFreight }}</div>
+									</el-radio-group>
+								</el-col>
+							</el-row>
+						</div>
+
+						<!-- 收货地址 -->
+						<div class="box address_box" style="margin: 15px 0;">
+							<el-row :gutter="20" type="flex" style="flex-wrap: wrap;">
+								<el-col :xs="24" :sm="24" :md="3" :lg="3" :xl="3">
+									<span style="font-weight: bold; word-break: normal; white-space: nowrap; line-height: 28px;">{{ $t('shop.selectAddress') }}:</span>
+								</el-col>
+								<el-col :xs="24" :sm="24" :md="21" :lg="21" :xl="21" style="word-break: normal; white-space: nowrap;">
+									<el-radio-group v-model="addressId" @change='choseAddress'>
+										<div class="address">
+											<el-radio :label="selfPickUpAddressId">{{ $t('shop.selfPickUp') }}</el-radio>
 										</div>
-									</div>
-								</div>
-								<!-- 支付方式/账户余额 -->
-								<div class="box address_box">
-									<el-row :gutter="20">
-										<el-col :xs="24" :sm="24" :lg="6">
-											<span style="line-height: 25px; display: inline-block; padding: 5px 0 15px 0;">{{ $t('shop.selectPayment') }}:</span>
-										</el-col>
-										<el-col :xs="24" :sm="24" :lg="18">
-											<el-radio-group v-model="payType" @change='chosePayType'>
-												<div v-for="(item, index) in payList" :key='index' class="address">
-													<el-radio :label="item.label" border>
-														{{ item.name }}<span v-if="item.label === payType" style="color: tomato;">({{ userBalance[payType] }})</span>
-													</el-radio>
-												</div>
-											</el-radio-group>
-										</el-col>
-									</el-row>
-								</div>
-								<!-- 收货地址 -->
-								<div class="box address_box">
-									<el-row :gutter="20">
-										<el-col :xs="24" :sm="24" :lg="4">
-											<span style="line-height: 25px; display: inline-block; padding: 5px 0 15px 0;">{{ $t('shop.selectAddress') }}:</span>
-										</el-col>
-										<el-col :xs="24" :sm="24" :lg="20">
-											<el-radio-group v-model="addressId" @change='choseAddress'>
-												<div class="address">
-													<el-radio :label="selfPickUpAddressId" border>{{ $t('shop.selfPickUp') }}</el-radio>
-												</div>
-												<div v-for="(item, index) in shippingAddressList" :key='index' class="address">
-													<el-radio :label="item.ID" border style="word-break: break-all; white-space: normal;">
-														<span>{{item.ADDRESS}}, {{item.LGA_NAME}}, {{item.PROVINCE_NAME}}</span>
-														<el-divider direction="vertical"></el-divider>
-														<span>{{item.MOBILE}}</span>
-														<el-divider direction="vertical"></el-divider>
-														<span>{{item.CONSIGNEE}}</span>
-													</el-radio>
-												</div>
-											</el-radio-group>
-										</el-col>
-									</el-row>
-								</div>
-							</el-col>
-						</el-row>
+										<div v-for="(item, index) in shippingAddressList" :key='index' class="address">
+											<el-radio :label="item.ID" style="word-break: break-all; white-space: normal;">
+												<span>{{item.ADDRESS}}, {{item.LGA_NAME}}, {{item.PROVINCE_NAME}}</span>
+												<el-divider direction="vertical"></el-divider>
+												<span>{{item.MOBILE}}</span>
+												<el-divider direction="vertical"></el-divider>
+												<span>{{item.CONSIGNEE}}</span>
+											</el-radio>
+										</div>
+									</el-radio-group>
+								</el-col>
+							</el-row>
+						</div>
 					</div>
 
 					<div class="white-box-footer" >
@@ -163,9 +160,9 @@
 					<div style="text-align: left; line-height: 50px; font-size: 16px;">
 						<span style="font-weight: bold; font-size: 20px;">{{ product.GOODS_NAME }}</span><br />
 						<span style="font-weight: bold; font-size: 15px;">{{ $t('shop.productCode') }}:{{ product.GOODS_NO }}</span><br />
-						<span style="color: tomato;">{{ $t('shop.productPrice') }}:{{ product.SELL_PRICE }}</span><br />
+						<span style="color: tomato;">{{ $t('shop.productPrice') }}:{{ product.SELL_PRICE | amountFilter }}</span><br />
 						<span>{{ $t('shop.taxRate') }}:{{ product.TAX_RATE / 100 }}</span><br />
-						<span>{{ $t('shop.taxAmount') }}:{{ product.taxAmount }}</span><br />
+						<span>{{ $t('shop.taxAmount') }}:{{ product.taxAmount | amountFilter }}</span><br />
 						<span>{{ $t('shop.inventory') }}:{{ product.STORE_NUMS }}</span>
 					</div>
 				</el-col>
@@ -183,7 +180,7 @@ import Pagination from '@/components/Pagination'
 import usersInfo from "@/utils/usersInfo";
 
 export default {
-	name: 'ProductsList',
+	name: 'VillaFundProducts',
 	components: { Pagination },
 	directives: { waves },
 	filters: {
@@ -233,8 +230,8 @@ export default {
 			payList: [],
 			cashCurrency: '',
 			currency: {},
-			pointsSum: '',
-			pointFreight: '',
+			pointsSum: 0,
+			pointFreight: 0,
 			freeShipping: '',
 			goodsId: '',
 			goodsNum: '',
@@ -261,10 +258,10 @@ export default {
 				GOODS_NAME: '',
 				GOODS_NO: '',
 				COVER: '',
-				SELL_PRICE: '',
-				PRICE_PV: '',
-				TAX_RATE: '',
-				taxAmount: '',
+				SELL_PRICE: 0,
+				PRICE_PV: 0,
+				TAX_RATE: 0,
+				taxAmount: 0,
 			},
 			imageStyle: 'margin-top: -50px;',
 		}

+ 16 - 16
src/views/user/brand-ambassador.vue

@@ -30,8 +30,8 @@
 														<div style="text-align: left; line-height: 25px;">
 															<span style="font-weight: bold; cursor: pointer;" @click="handleProduct(row)">{{ row.GOODS_NAME }}</span><br />
 															<span>{{ row.GOODS_NO }}</span><br />
-															<span style="color: tomato;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ row.SELL_PRICE }}</span><br />
-															<span>{{ $t('shop.productBV') }}:{{ $t('currency.sign') }} {{ row.PRICE_PV }}</span><br />
+															<span style="color: tomato;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ row.SELL_PRICE | amountFilter}}</span><br />
+															<span>{{ $t('shop.productBV') }}:{{ row.PRICE_PV | amountFilter }}</span><br />
 															<span style="display: inline-block; float: right; ">
 																<el-input-number size="mini" v-model="storeNums[$index]" :min="1" :max="Number(row.STORE_NUMS)" @change="handleInputNumber($event, row)"></el-input-number>
 															</span>
@@ -45,9 +45,9 @@
 
 									<div class="white-box-footer">
 										<div class="flex data" style="display: inline-block; line-height: 30px; font-size: 14px; margin-top: 15px; border: 1px solid #dcdfe6; border-radius: 4px; padding: 0 5px;">
-											<div style="margin-right: 1rem; display: inline-block;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ sellPriceSum }}</div>
-											<div style="margin-right: 1rem; display: inline-block;">{{ $t('shop.productBV') }}:{{ $t('currency.sign') }} {{ pricePvSum }}</div>
-											<div style="display: inline-block;">{{ $t('shop.taxAmount') }}:{{ $t('currency.sign') }} {{ taxSum }}</div>
+											<div style="margin-right: 1rem; display: inline-block;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ sellPriceSum | amountFilter }}</div>
+											<div style="margin-right: 1rem; display: inline-block;">{{ $t('shop.productBV') }}:{{ pricePvSum | amountFilter }}</div>
+											<div style="display: inline-block;">{{ $t('shop.taxAmount') }}:{{ $t('currency.sign') }} {{ taxSum | amountFilter }}</div>
 										</div>
 									</div>
 								</el-tab-pane>
@@ -108,7 +108,7 @@
 						<el-form-item :label="$t('shop.paymentMethod')" required>
 							<el-radio-group v-model="form.payType" @change="chosePayType">
 								<el-radio border v-for="(item, index) in payList" :key='index' :label="item.label">
-									{{ item.name }}<span v-if="item.label === 'cash'" style="color: tomato;">({{ $t('currency.sign') }} {{ userBalance.cash }})</span>
+									{{ item.name }}<span v-if="item.label === 'cash'" style="color: tomato;">({{ $t('currency.sign') }} {{ userBalance.cash | amountFilter }})</span>
 								</el-radio>
 							</el-radio-group>
 						</el-form-item>
@@ -172,10 +172,10 @@
 					<div style="text-align: left; line-height: 50px; font-size: 16px;">
 						<span style="font-weight: bold; font-size: 20px;">{{ product.GOODS_NAME }}</span><br />
 						<span style="font-weight: bold; font-size: 15px;">{{ $t('shop.productCode') }}:{{ product.GOODS_NO }}</span><br />
-						<span style="color: tomato;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ product.SELL_PRICE }}</span><br />
-						<span>{{ $t('shop.productBV') }}:{{ product.PRICE_PV }}</span><br />
+						<span style="color: tomato;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ product.SELL_PRICE | amountFilter }}</span><br />
+						<span>{{ $t('shop.productBV') }}:{{ product.PRICE_PV | amountFilter }}</span><br />
 						<span>{{ $t('shop.taxRate') }}:{{ product.TAX_RATE / 100 }}</span><br />
-						<span>{{ $t('shop.taxAmount') }}:{{ $t('currency.sign') }} {{ product.taxAmount }}</span><br />
+						<span>{{ $t('shop.taxAmount') }}:{{ $t('currency.sign') }} {{ product.taxAmount | amountFilter }}</span><br />
 						<span>{{ $t('shop.inventory') }}:{{ product.STORE_NUMS }}</span>
 					</div>
 				</el-col>
@@ -261,9 +261,9 @@ export default {
 
 			cashCurrency: '',
 			currency: {},
-			pointsSum: '',
-			cashSum: '',
-			pointFreight: '',
+			pointsSum: 0,
+			cashSum: 0,
+			pointFreight: 0,
 			freeShipping: '',
 			goodsId: '',
 			goodsNum: '',
@@ -315,10 +315,10 @@ export default {
 				GOODS_NAME: '',
 				GOODS_NO: '',
 				COVER: '',
-				SELL_PRICE: '',
-				PRICE_PV: '',
-				TAX_RATE: '',
-				taxAmount: '',
+				SELL_PRICE: 0,
+				PRICE_PV: 0,
+				TAX_RATE: 0,
+				taxAmount: 0,
 			},
 			imageStyle: 'margin-top: -50px;',
 

+ 16 - 14
src/views/user/member-upgrade.vue

@@ -49,8 +49,8 @@
 																<div style="text-align: left; line-height: 25px;">
 																	<span style="font-weight: bold; cursor: pointer;" @click="handleProduct(row)">{{ row.GOODS_NAME }}</span><br />
 																	<span>{{ row.GOODS_NO }}</span><br />
-																	<span style="color: tomato;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ row.SELL_PRICE }}</span><br />
-																	<span>{{ $t('shop.productBV') }}:{{ $t('currency.sign') }} {{ row.PRICE_PV }}</span><br />
+																	<span style="color: tomato;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ row.SELL_PRICE | amountFilter }}</span><br />
+																	<span>{{ $t('shop.productBV') }}:{{ row.PRICE_PV | amountFilter }}</span><br />
 																	<span style="display: inline-block; float: right; ">
 																	<el-input-number size="mini" v-model="storeNums[$index]" :min="1" :max="Number(row.STORE_NUMS)" @change="handleInputNumber($event, row)"></el-input-number>
 																</span>
@@ -66,8 +66,8 @@
 
 									<div class="white-box-footer">
 										<div class="flex data" style="float: right; display: inline-block; line-height: 30px; font-size: 14px; margin-top: 15px; margin-bottom: 10px; border: 1px solid #dcdfe6; border-radius: 4px; padding: 0 5px;">
-											<div style="margin-right: 1rem; display: inline-block;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ sellPriceSum }}</div>
-											<div style="margin-right: 1rem; display: inline-block;">{{ $t('shop.productBV') }}:{{ $t('currency.sign') }} {{ pricePvSum }}</div>
+											<div style="margin-right: 1rem; display: inline-block;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ sellPriceSum | amountFilter }}</div>
+											<div style="margin-right: 1rem; display: inline-block;">{{ $t('shop.productBV') }}:{{ pricePvSum | amountFilter }}</div>
 											<div style="display: inline-block;">{{ $t('shop.taxAmount') }}:{{ $t('currency.sign') }} {{ taxSum }}</div>
 										</div>
 									</div>
@@ -103,7 +103,7 @@
 							<el-radio-group v-model="form.payType" @change="chosePayType">
 								<el-col :xs="24" :sm="24" :lg="24" style="padding-left: 0;">
 									<el-radio border v-for="(item, index) in payList" :key='index' :label="item.label" >
-										{{ item.name }}<span v-if="item.label === 'cash'" style="color: tomato;">({{ $t('currency.sign') }} {{ userBalance.cash }})</span>
+										{{ item.name }}<span v-if="item.label === 'cash'" style="color: tomato;">({{ $t('currency.sign') }} {{ userBalance.cash | amountFilter }})</span>
 									</el-radio>
 								</el-col>
 							</el-radio-group>
@@ -168,10 +168,10 @@
 					<div style="text-align: left; line-height: 50px; font-size: 16px;">
 						<span style="font-weight: bold; font-size: 20px;">{{ product.GOODS_NAME }}</span><br />
 						<span style="font-weight: bold; font-size: 15px;">{{ $t('shop.productCode') }}:{{ product.GOODS_NO }}</span><br />
-						<span style="color: tomato;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ product.SELL_PRICE }}</span><br />
-						<span>{{ $t('shop.productBV') }}:{{ product.PRICE_PV }}</span><br />
+						<span style="color: tomato;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ product.SELL_PRICE | amountFilter }}</span><br />
+						<span>{{ $t('shop.productBV') }}:{{ product.PRICE_PV | amountFilter }}</span><br />
 						<span>{{ $t('shop.taxRate') }}:{{ product.TAX_RATE / 100 }}</span><br />
-						<span>{{ $t('shop.taxAmount') }}:{{ $t('currency.sign') }} {{ product.taxAmount }}</span><br />
+						<span>{{ $t('shop.taxAmount') }}:{{ $t('currency.sign') }} {{ product.taxAmount | amountFilter }}</span><br />
 						<span>{{ $t('shop.inventory') }}:{{ product.STORE_NUMS }}</span>
 					</div>
 				</el-col>
@@ -333,10 +333,10 @@ export default {
 				GOODS_NAME: '',
 				GOODS_NO: '',
 				COVER: '',
-				SELL_PRICE: '',
-				PRICE_PV: '',
-				TAX_RATE: '',
-				taxAmount: '',
+				SELL_PRICE: 0,
+				PRICE_PV: 0,
+				TAX_RATE: 0,
+				taxAmount: 0,
 			},
 			imageStyle: 'margin-top: -50px;',
 
@@ -351,7 +351,9 @@ export default {
 			storeNums: [],
 			tableData: null,
 			payAmount: 0.00,
-			userBalance: {},
+			userBalance: {
+				cash: 0,
+			},
 		}
   },
   created() {
@@ -566,7 +568,7 @@ export default {
 			}
 			if (!this.toLevel) {
 				this.$message({
-					message: this.$t('user.selectLevel'),
+					message: this.$t('profile.selectLevel'),
 					type: 'error'
 				})
 				return false

+ 812 - 0
src/views/user/welcome-pack.vue

@@ -0,0 +1,812 @@
+<template>
+	<div v-loading="loading">
+		<div class="white-box" style="padding: 0 25px; margin-top: 25px;">
+			<el-row :gutter="20">
+				<el-col :xs="24" :sm="24" :lg="14">
+					<el-form ref="form" label-width="180px" :label-position="labelPosition" class="form-page">
+
+						<el-form-item :label="$t('user.welcomePackWay')">
+							<el-radio-group v-model="form.decType" @change="decTypeChange">
+								<el-radio size="small" label="normal">{{ $t('user.normal') }}</el-radio>
+								<el-radio size="small" label="ba">{{ $t('user.BAUpgrade') }}</el-radio>
+							</el-radio-group>
+						</el-form-item>
+
+						<el-divider content-position="left">{{ $t('user.accountInformation') }}</el-divider>
+						<el-form-item :label="$t('user.newMemberCode')">
+							<el-input v-model.trim="form.insertUserName" @blur="checkBaUser" :readonly="userReadOnly"></el-input>
+						</el-form-item>
+						<el-form-item :label="$t('user.entryLevel')">
+							<el-select v-model="form.decLv" :placeholder="$t('user.selectEntryLevel')" style="width: 100%;">
+								<el-option v-for="item in allDecLevel" :key="item.ID" :label="item.LEVEL_NAME" :value="item.ID"></el-option>
+							</el-select>
+						</el-form-item>
+						<el-form-item :label="$t('user.stockistCode')">
+							<el-input v-model.trim="form.decUserName" readonly></el-input>
+						</el-form-item>
+
+						<el-form-item>
+							<template slot="label">
+								{{ $t('user.selectWelcomePack') }}
+							</template>
+							<el-tabs type="border-card" v-model="decWay" style="position: relative; width: 100%;">
+								<el-tab-pane :label="$t('shop.product')" name="2">
+									<el-collapse accordion>
+										<el-collapse-item>
+											<template slot="title">
+												{{ $t('shop.product') }} <i class="header-icon el-icon-info"></i>
+											</template>
+											<el-table :data="tableData" :show-header="false" @selection-change="handleSelectionChange">
+												<el-table-column type="selection" width="30" align="center" style="top: -30px;"></el-table-column>
+												<el-table-column align="center">
+													<template slot-scope="{row, $index}">
+														<el-container>
+															<el-aside width="80px" style=" padding: 0; margin-bottom: 0; background-color: #ffffff;">
+																<el-image style="width: 80px; height: 80px" :src="tool.getArImage(row.COVER, '/files/')"></el-image>
+															</el-aside>
+															<el-main style="padding: 0;">
+																<div style="text-align: left; line-height: 25px;">
+																	<span style="font-weight: bold; cursor: pointer;" @click="handleProduct(row)">{{ row.GOODS_NAME }}</span><br />
+																	<span>{{ row.GOODS_NO }}</span><br />
+																	<span style="color: tomato;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ row.SELL_PRICE | amountFilter }}</span><br />
+																	<span>{{ $t('shop.productBV') }}:{{ row.PRICE_PV | amountFilter }}</span><br />
+																	<span style="display: inline-block; float: right; ">
+																	<el-input-number size="mini" v-model="storeNums[$index]" :min="1" :max="Number(row.STORE_NUMS)" @change="handleInputNumber($event, row)"></el-input-number>
+																</span>
+																	<br />
+																</div>
+															</el-main>
+														</el-container>
+													</template>
+												</el-table-column>
+											</el-table>
+										</el-collapse-item>
+									</el-collapse>
+
+									<div class="white-box-footer">
+										<div class="flex data" style="float: right; display: inline-block; line-height: 30px; font-size: 14px; margin-top: 15px; margin-bottom: 10px; border: 1px solid #dcdfe6; border-radius: 4px; padding: 0 5px;">
+											<div style="margin-right: 1rem; display: inline-block;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ sellPriceSum | amountFilter }}</div>
+											<div style="margin-right: 1rem; display: inline-block;">{{ $t('shop.productBV') }}:{{ pricePvSum | amountFilter }}</div>
+											<div style="display: inline-block;">{{ $t('shop.taxAmount') }}:{{ $t('currency.sign') }} {{ taxSum }}</div>
+										</div>
+									</div>
+								</el-tab-pane>
+							</el-tabs>
+						</el-form-item>
+
+						<el-divider content-position="left">{{ $t('atlas.networkInformation') }}</el-divider>
+						<el-form-item :label="$t('shop.sponsorCode')">
+							<el-input v-model.trim="form.recUserName" @change="handleChkRecUser" :readonly="recReadOnly">
+								<template slot="append">【{{ recRealName }}】</template>
+							</el-input>
+						</el-form-item>
+						<el-form-item :label="$t('atlas.placementCode')">
+							<el-input v-model.trim="form.conUserName" @change="handleChkConUser"></el-input>
+						</el-form-item>
+						<el-form-item>
+							<el-input placeholder="请输入内容" v-model="conRealName" :disabled="true"></el-input>
+						</el-form-item>
+						<el-form-item :label="$t('atlas.placementTree')">
+							<el-radio-group border v-model="form.location">
+								<el-radio :label="1">{{ $t('atlas.left') }}</el-radio>
+								<el-radio :label="2">{{ $t('atlas.right') }}</el-radio>
+							</el-radio-group>
+						</el-form-item>
+						<el-form-item><!--自动安置区位-->
+							<el-row :gutter="5">
+								<el-col :xs="24" :sm="24" :lg="12">
+									<el-button size="small" type="primary" @click="setAutoPlace('left')">{{ $t('atlas.placementAutoLeft') }}</el-button>
+								</el-col>
+								<el-col :xs="24" :sm="24" :lg="12">
+									<el-button size="small" type="primary" @click="setAutoPlace('right')">{{ $t('atlas.placementAutoRight') }}</el-button>
+								</el-col>
+							</el-row>
+						</el-form-item>
+
+						<el-divider content-position="left">{{ $t('profile.personalInformation') }}</el-divider>
+						<el-form-item :label="$t('shop.memberName')">
+							<el-input v-model.trim="form.realName"></el-input>
+						</el-form-item>
+						<el-form-item :label="$t('shop.phoneNumber')">
+							<el-input v-model.trim="form.mobile"></el-input>
+						</el-form-item>
+						<el-form-item :label="$t('user.email')">
+							<el-input v-model.trim="form.email"></el-input>
+						</el-form-item>
+						<el-form-item :label="$t('profile.loginPassword')">
+							<el-input v-model.trim="form.password" maxlength="32" :placeholder="$t('profile.enterLoginPassword')"></el-input>
+						</el-form-item>
+						<el-form-item :label="$t('profile.paymentPassword')">
+							<el-input v-model.trim="form.payPassword" maxlength="32" :placeholder="$t('profile.enterPaymentPassword')"></el-input>
+						</el-form-item>
+						<el-form-item :label="$t('shop.recipientName')">
+							<el-input v-model.trim="form.consignee"></el-input>
+						</el-form-item>
+						<el-form-item :label="$t('shop.phoneNumber')">
+							<el-input v-model.trim="form.acceptMobile"></el-input>
+						</el-form-item>
+						<el-form-item :label="$t('shop.shipping')">
+							<el-radio-group v-model="form.way" @change="wayChange">
+								<el-radio label="express">{{ $t('shop.delivery') }}</el-radio>
+								<el-radio label="pickup">{{ $t('shop.selfPickUp') }}</el-radio>
+							</el-radio-group>
+						</el-form-item>
+						<el-form-item prop="areaSelected" :label="$t('config.state')">
+							<el-select v-model="form.areaSelected" class="filter-item" style="width: 100%;">
+								<el-option v-for="item in regionData" :key="item.id" :label="item.address" :value="item.id" />
+							</el-select>
+						</el-form-item>
+						<el-form-item :label="$t('config.detailedAddress')">
+							<el-input :disabled="addressDisabled" v-model.trim="form.address"></el-input>
+						</el-form-item>
+						<el-form-item :label="$t('config.city')">
+							<el-input :disabled="addressDisabled" v-model.trim="form.cityName"></el-input>
+						</el-form-item>
+						<el-form-item :label="$t('config.localGovernmentArea')">
+							<el-input :disabled="addressDisabled" v-model.trim="form.lgaName"></el-input>
+						</el-form-item>
+
+						<el-divider content-position="left">{{ $t('finance.bankInformation') }}</el-divider>
+						<el-form-item :label="$t('finance.bankName')">
+							<el-select v-model="form.openBank" :placeholder="$t('finance.selectBank')" style="width: 100%;">
+								<el-option v-for="(item,index) in allOpenBank" :key="index" :label="item.BANK_NAME" :value="item.BANK_CODE"></el-option>
+							</el-select>
+						</el-form-item>
+						<el-form-item :label="$t('finance.accountName')">
+							<el-input v-model.trim="form.bankAddress"></el-input>
+						</el-form-item>
+						<el-form-item :label="$t('finance.bankAccount')">
+							<el-input v-model.number="form.bankNo" maxlength="19"></el-input>
+						</el-form-item>
+
+						<el-divider content-position="left">{{ $t('user.payInfo') }}</el-divider>
+						<el-form-item :label="$t('shop.paymentMethod')" required>
+							<el-radio-group v-model="form.payType" @change="chosePayType" style="margin: 5px 5px;">
+								<el-radio border v-for="(item, index) in payList" :key='index' :label="item.label">
+									{{ item.name }}<span v-if="item.label === 'cash'" style="color: tomato;">({{ $t('currency.sign') }} {{ userBalance.cash }})</span>
+								</el-radio>
+							</el-radio-group>
+						</el-form-item>
+
+						<el-form-item>
+							<el-button size="small" type="primary" @click="onSubmit" :loading="submitButtonStat">{{ $t('common.save') }}</el-button>
+						</el-form-item>
+					</el-form>
+				</el-col>
+			</el-row>
+		</div>
+
+		<!-- payStack模态框 -->
+		<el-dialog :title="$t('shop.goPay')" :visible.sync="visible" :width="payStackScreenWidth" v-loading="payStackLoading" :before-close="handleClose">
+			<section>
+				<el-form :model="payForm">
+					<el-form-item :label="$t('user.email')" label-width="100px" required>
+						<el-input v-model="payForm.email" autocomplete="off"></el-input>
+					</el-form-item>
+					<el-form-item :label="$t('shop.amount')" label-width="100px" required>
+						<el-input v-model="payForm.amount" autocomplete="off" readonly></el-input>
+					</el-form-item>
+				</el-form>
+			</section>
+			<paystack
+				:firstname="payForm.firstname"
+				:lastname="payForm.lastname"
+				:amount="payForm.amount * 100"
+				:email="payForm.email"
+				:metadata="payForm.metadata"
+				:currency="payForm.currency"
+				:paystackkey="payForm.publicKey"
+				:reference="reference"
+				:channels="channels"
+				:callback="processPayment"
+				:close="handleClose"
+			>
+				<el-button type="primary" size="small">{{ $t('shop.goPay') }}</el-button>
+			</paystack>
+			<el-button type="danger" size="small" class="cancelButton" @click="handleClose" style="margin-left: 10px;">{{ $t('common.cancel') }}</el-button>
+		</el-dialog>
+
+		<!-- 倒计时页面 -->
+		<el-dialog :title="$t('common.hint')" :visible.sync="payDialog" :width="payStackScreenWidth" :show-close="false" :close="handleOrderList">
+			<el-card shadow="always">
+				<el-result icon="success" :title="$t('common.successfully')" :subTitle="$t('shop.successOrderTips')">
+					<template slot="extra">
+						<el-button type="primary" size="medium" @click="handleOrderList">{{ $t('shop.goBack') }}({{ countdown }})</el-button>
+					</template>
+				</el-result>
+			</el-card>
+		</el-dialog>
+
+		<!-- 商品详情 -->
+		<el-dialog :title="product.GOODS_NO" :visible.sync="visibleProduct" :width="screenWidth" style="margin-top: -95px;">
+			<el-row :gutter="20">
+				<el-col :xs="24" :sm="12" :lg="12">
+					<el-image style="width: 100%; height: 100%" :style="imageStyle" :src="tool.getArImage(product.COVER, '/files/')"></el-image>
+				</el-col>
+				<el-col :xs="24" :sm="12" :lg="12">
+					<div style="text-align: left; line-height: 50px; font-size: 16px;">
+						<span style="font-weight: bold; font-size: 20px;">{{ product.GOODS_NAME }}</span><br />
+						<span style="font-weight: bold; font-size: 15px;">{{ $t('shop.productCode') }}:{{ product.GOODS_NO }}</span><br />
+						<span style="color: tomato;">{{ $t('shop.productPrice') }}:{{ $t('currency.sign') }} {{ product.SELL_PRICE }}</span><br />
+						<span>{{ $t('shop.productBV') }}:{{ product.PRICE_PV }}</span><br />
+						<span>{{ $t('shop.taxRate') }}:{{ product.TAX_RATE / 100 }}</span><br />
+						<span>{{ $t('shop.taxAmount') }}:{{ $t('currency.sign') }} {{ product.taxAmount }}</span><br />
+						<span>{{ $t('shop.inventory') }}:{{ product.STORE_NUMS }}</span>
+					</div>
+				</el-col>
+			</el-row>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+import {
+	fetchBrandAmbassador,
+	createBrandAmbassador,
+	fetchFullInfo,
+	fetchBrandAmbassadorInfo,
+	fetchAutoPlace, fetchWelcomePack, createWelcomePack
+} from '@/api/user'
+import waves from '@/directive/waves'
+import {formatAmount, getScreenWidth} from "@/utils"
+import Pagination from '@/components/Pagination'
+import paystack from 'vue-paystack'
+import tool from "@/utils/tool"
+import usersInfo from "@/utils/usersInfo"
+import {deleteApproachOrder} from "@/api/shop"
+import {mapGetters} from "vuex"
+
+export default {
+  name: 'welcomePack',
+  components: { Pagination, paystack },
+  directives: { waves },
+	filters: {
+		bvFilter(row) {
+			return tool.calculateBV(row.REAL_PV, row.BUY_NUMS)
+		},
+		taxAmountFilter(row) {
+			return tool.calculateTax(row.REAL_PRICE, row.BUY_NUMS)
+		},
+		priceAmountFilter(row) {
+			return tool.formatPrice(row.REAL_PRICE, row.BUY_NUMS)
+		},
+		amountFilter(amount) {
+			return formatAmount(amount)
+		},
+		statusFilter(status) {
+			const statusMap = {
+				Unpaid: 'info',
+				Paid: 'success'
+			}
+			return statusMap[status]
+		}
+	},
+	computed: {
+		...mapGetters([
+			'regionInfo',
+		]),
+		// PayStack混淆串
+		reference() {
+			let text = ''
+			let possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
+			for (let i = 0; i < 10; i++) {
+				text += possible.charAt(Math.floor(Math.random() * possible.length))
+			}
+			return text
+		}
+	},
+  data() {
+    return {
+			loading: false,
+			tool: tool,
+
+			allGoods: [],
+			numList: [],
+			categoryType: '',
+			sellType: [],
+			payList: [],
+			screenWidth: getScreenWidth() > 600 ? '500px' : getScreenWidth() + 'px',
+			labelPosition: getScreenWidth() > 600 ? 'right' : 'top',
+			payStackScreenWidth: getScreenWidth() > 500 ? '450px' : getScreenWidth() + 'px',
+
+			dialog: false,
+			dialogLoading: false,
+
+			multipleSelection: [],
+			sellPriceSum: 0.00,
+			pricePvSum: 0.00,
+			taxSum: 0.00,
+			storeNums: [],
+			tableData: null,
+			payAmount: 0.00,
+
+			cashCurrency: '',
+			currency: {},
+			pointsSum: 0,
+			cashSum: 0,
+			pointFreight: 0,
+			freeShipping: '',
+			goodsId: '',
+			goodsNum: '',
+			payPassword: '',
+			submitButtonStat: false,
+			sn: '',
+			orderType: '',
+			payDialog: false,
+			countdown: 5,
+			visible: false,
+			totalAmount: 0.00,
+			freight: 0.00,
+			userBalance: {
+				cash: 0,
+			},
+
+			payType: 'cash',
+			payStackLoading: false,
+			channels: ["card", "bank", "ussd", "qr"],
+			payForm: {
+				publicKey: process.env.VUE_APP_BASE_PAY_STACK_PUBLIC_KEY,
+				currency: 'NGN',
+				firstname: usersInfo.userName(),
+				lastname: '',
+				email: usersInfo.userEmail(),
+				amount: 0,
+				orderSn: '',
+				metadata: {
+					cart_id: '',
+					custom_fields: [
+						{
+							display_name: 'orderSn',
+							variable_name: 'orderSn',
+							value: this.sn,
+						},
+						{
+							display_name: 'orderType',
+							variable_name: 'orderType',
+							value: 'baDec'
+						},
+					]
+				},
+			},
+
+			addressId: '',
+			selfPickUpAddressId: '100000000000000000',
+			shippingAddressList: [],
+
+			visibleProduct: false,
+			product: {
+				GOODS_NAME: '',
+				GOODS_NO: '',
+				COVER: '',
+				SELL_PRICE: 0,
+				PRICE_PV: 0,
+				TAX_RATE: 0,
+				taxAmount: 0,
+			},
+			imageStyle: 'margin-top: -50px;',
+
+			decWay: '2',
+			// TODO: 地区需处理
+			regionData: [
+				{
+					id: '10600',
+					address: 'test1',
+				},
+				{
+					id: '10601',
+					address: 'test2',
+				},
+			],
+			form: {
+				decType: 'normal',
+				realName: '',
+				decLv: '',
+				insertUserName: '',
+				decUserName: usersInfo.userName(),
+				recUserName: '',
+				conUserName: '',
+				insertUserIdCard: '',
+				consignee: '',
+				acceptMobile: '',
+				areaSelected: [],
+				address: '',
+				openBank: '',
+				bankAddress: '',
+				bankProvince: '',
+				bankCity: '',
+				bankCounty: '',
+				bankNo: '',
+				bankAreaSelected: [],
+				password: '111111',
+				payPassword: '111111',
+				mobile: '',
+				email: '',
+				packageId: '',
+				goodsId: [],
+				goodsNum: [],
+				province: '',
+				cityName: '',
+				lgaName: '',
+				way: 'express',
+				payType: '',
+				autoPlace: '',
+				location: ''
+			},
+
+			conRealName: '-',
+			recRealName: '-',
+			areaDisabled: false,
+			addressDisabled: false,
+
+			userReadOnly: true,
+			recReadOnly: false,
+			allDecLevel: usersInfo.getBaseInfo().decLevels,
+			allOpenBank: [],
+    }
+  },
+  created() {
+			let regionInfo = this.$store.getters.regionInfo
+		// console.log(this.$store.state.region)
+    this.fetchWelcomePack()
+  },
+  methods: {
+		// 会员报单/BA升级
+		fetchWelcomePack() {
+			this.loading = true
+			fetchWelcomePack().then(response => {
+				this.form.insertUserName = response.data.userName
+				this.allOpenBank = response.data.allOpenBank
+				this.allDecPackage = response.data.allDecPackage
+				this.allGoods = response.data.allGoods
+				this.userBalance = response.data.userBalance
+				this.categoryType = 1
+
+				let settingObj = this.allGoods
+				for (let i in this.allGoods) {
+					this.storeNums[i] = 1
+					settingObj[i].goodsNum = 0
+				}
+
+				this.tableData = Object.values(settingObj)
+				let pageList = this.multipleSelection
+				this.$nextTick(function () {
+					for (let i in this.tableData) {
+						for( let j in  pageList) {
+							if( pageList[j].ID === this.tableData[i].ID ) {
+								this.$data.storeNums[i] = pageList[j].goodsNum
+								this.tableData[i].goodsNum = pageList[j].goodsNum
+								break
+							}
+						}
+					}
+				})
+
+				// 支付方式
+				this.payList = response.data.sellType[0]['sell_type']
+				// 支付方式的第一项默认选中
+				this.form.payType = Object.values(this.payList)[1]['label']
+
+        setTimeout(() => {
+          this.loading = false
+        }, 0.5 * 1000)
+      })
+    },
+		// 商品详情
+		handleProduct(row) {
+			this.product = row
+			this.product.taxAmount = tool.calculateTax(row.SELL_PRICE, row.TAX_RATE)
+			this.visibleProduct = true
+		},
+		// 选择商品计数
+		handleInputNumber(current, row){
+			let pageList = this.multipleSelection
+			let selectStatus = false
+			for (let i in pageList) {
+				if (pageList[i].ID === row.ID) {
+					pageList[i].goodsNum = current
+					selectStatus = true
+					break
+				}
+			}
+			if (selectStatus) {
+				this.multipleSelection = pageList
+				this.handleSureChange()
+			}
+		},
+		// 统计商品
+		handleSureChange() {
+			if (this.multipleSelection.length > 0) {
+				let accumulatorSellPrice = 0, accumulatorPricePv = 0, accumulatorTax = 0
+				this.multipleSelection.forEach(accumulator => {
+					accumulatorSellPrice += accumulator.SELL_PRICE * accumulator.goodsNum;
+					accumulatorPricePv += Number(accumulator.PRICE_PV) * Number(accumulator.goodsNum);
+					accumulatorTax += tool.calculateTax(Number(accumulator.SELL_PRICE), Number(accumulator.TAX_RATE), Number(accumulator.goodsNum));
+				})
+
+				this.sellPriceSum = tool.formatPrice(accumulatorSellPrice)
+				this.pricePvSum = tool.formatPrice(accumulatorPricePv)
+				this.taxSum = tool.formatPrice(accumulatorTax)
+
+				this.display = true
+			} else {
+				this.sellPriceSum = this.pricePvSum = this.taxSum = 0.00
+				this.display = true
+			}
+		},
+		// 选择商品
+		handleSelectionChange(val) {
+			let idx = -1, num
+			for (let i in this.tableData) {
+				for (let v in val){
+					if (val[v].ID === this.tableData[i].ID) {
+						idx = i
+						num = this.storeNums[idx]
+						val[v]['goodsNum'] = num
+						break
+					}
+				}
+			}
+			this.multipleSelection = val
+			// 计算统计
+			this.handleSureChange()
+		},
+		// 选择收货地址
+		choseAddress (addressId) {
+			this.addressId = addressId
+			// 设置运费
+			this.setFreight()
+			// 计算价格
+			this.getSumMoney()
+		},
+		// 切换支付方式
+		chosePayType(type) {
+			this.payType = type
+		},
+		// 关闭支付回调
+		handleClose() {
+			this.$confirm(this.$t('shop.confirmClose')).then(_ => {
+				deleteApproachOrder({ orderSn: this.form.orderSn }).then(() => {
+					// 关闭支付模态框
+					this.visible = false
+					// 关闭购物车
+					this.visibleShoppingCart = false
+					this.submitButtonStat = false
+				})
+			})
+		},
+		// 支付成功回调
+		processPayment() {
+			// 关闭支付页面
+			this.visible = false
+			this.payStackLoading = false
+			// 显示支付成功模态框
+			this.payDialog = true;
+			// 启动支付成功倒计时
+			this.handleCountdown()
+		},
+		// 倒计时结束跳转
+		handleOrderList () {
+			this.$router.push({path: `/shop/dec-order-list`})
+		},
+		// 启动倒计时
+		handleCountdown () {
+			// 创建定时器
+			setInterval(() => {
+				// 每隔1秒把time的值减一,赋值给span标签
+				this.countdown--
+				if (this.countdown === 0) {
+					// 倒计时结束,跳转到订单列表
+					this.$router.push({path: `/shop/dec-order-list`});
+				}
+			}, 1000)
+		},
+		// 会员查询
+		handleChkRecUser() {
+			this.form.conUserName = ''
+			this.conRealName = '-'
+			this.form.autoPlace = ''
+			if (this.form.recUserName) {
+				this.loading = true
+				fetchFullInfo({ userName: this.form.recUserName }).then(response => {
+					this.recRealName = response.data.REAL_NAME
+					this.loading = false
+				}).catch(() => {
+					this.recRealName = '-'
+					this.loading = false
+				})
+			}
+		},
+		// 返回方式
+		wayChange () {
+			if (this.form.way === 'pickup') {
+				this.areaDisabled = true
+				this.addressDisabled = true
+			} else {
+				this.areaDisabled = false
+				this.addressDisabled = false
+			}
+		},
+		// 会员报单/BA升级
+		onSubmit() {
+			if (!this.form.decLv) {
+				this.$message({
+					message: this.$t('profile.selectLevel'),
+					type: 'error'
+				})
+				return false
+			}
+			// 已选择商品
+			this.selectProduct()
+			if (this.multipleSelection.length <= 0) {
+				this.$message.error(this.$t('shop.chooseTips'))
+				return false
+			}
+			// 余额
+			let amountBalance = this.userBalance[this.form.payType] || 0
+			// 余额是否充足
+			if ((this.form.payType === 'cash') && ((amountBalance - this.payAmount) < 0)) {
+				// 账户类型提示信息
+				let accountType = this.currency[this.form.payType].name || ''
+				this.$message({
+					message: accountType + this.$t('shop.balanceNotAllow'),
+					type: 'error'
+				})
+				return false
+			}
+
+			this.submitButtonStat = true
+
+			let params = {
+				consignee: this.form.consignee,
+				acceptMobile: this.form.acceptMobile,
+				province: this.form.areaSelected[0] ? this.form.areaSelected[0] : '',
+				city: this.form.areaSelected[1] ? this.form.areaSelected[1] : '',
+				county: this.form.areaSelected[2] ? this.form.areaSelected[2] : '',
+				address: this.form.address,
+				decType: this.form.decType,
+				insertUserName: this.form.insertUserName,
+				decLv: this.form.decLv,
+				realName: this.form.realName,
+				decUserName: this.form.decUserName,
+				conUserName: this.form.conUserName,
+				recUserName: this.form.recUserName,
+				insertUserIdCard: this.form.insertUserIdCard,
+				openBank: this.form.openBank,
+				bankAddress: this.form.bankAddress,
+				mobile: this.form.mobile,
+				email: this.form.email,
+				cityName: this.form.cityName,
+				lgaName: this.form.lgaName,
+
+				bankProvince: this.form.bankAreaSelected[0] ? this.form.bankAreaSelected[0] : '',
+				bankCity: this.form.bankAreaSelected[1] ? this.form.bankAreaSelected[1] : '',
+				bankCounty: this.form.bankAreaSelected[2] ? this.form.bankAreaSelected[2] : '',
+
+				bankNo: this.form.bankNo,
+				password: this.form.password,
+				payPassword: this.form.payPassword,
+				packageId: this.form.packageId,
+				goodsId: this.form.goodsId,
+				goodsNum: this.form.goodsNum,
+				location: this.form.location,
+				decWay: this.decWay,
+				payType: this.form.payType
+			}
+			createWelcomePack(params).then(response => {
+				if (this.form.payType !== 'pay_stack') {
+					// 余额支付
+					this.$message({
+						message: this.$t('common.successfully'),
+						type: 'success'
+					})
+					this.submitButtonStat = false
+					this.$router.push({path: `/shop/order-list`})
+				} else {
+					this.submitButtonStat = false
+					this.payForm.orderSn = response.data.SN
+					this.payForm.amount = response.data.ORDER_AMOUNT
+					this.payForm.metadata.custom_fields[0].value = response.data.SN
+					if (this.form.decType === 'ba') {
+						this.payForm.metadata.custom_fields[1].value = 'baUpgrade';
+					} else {
+						this.payForm.metadata.custom_fields[1].value = 'userDec';
+					}
+					this.visible = true
+				}
+			})
+		},
+		// 已选择商品
+		selectProduct() {
+			this.payAmount = 0
+			this.form.goodsId = []
+			this.form.goodsNum = []
+			this.multipleSelection.map((item) => {
+				this.form.goodsId.push(item.ID)
+				this.form.goodsNum.push(item.goodsNum)
+				this.payAmount += item.goodsNum * item.SELL_PRICE
+			})
+		},
+		// 报单方式
+		decTypeChange() {
+			if (this.form.decType === 'ba') {
+				this.form.insertUserName = ''
+				this.userReadOnly = false
+			} else {
+				this.form.recUserName = ''
+				this.recRealName = '-'
+				this.recReadOnly = false
+				this.userReadOnly = true
+				this.fetchWelcomePack()
+			}
+		},
+		// BA会员查询
+		checkBaUser() {
+			if (this.form.decType === 'ba' && this.form.insertUserName !== '') {
+				this.loading = true
+				fetchBrandAmbassadorInfo({ userName: this.form.insertUserName }).then(response => {
+					this.form.recUserName = response.data.REC_USER_NAME
+					this.form.realName = response.data.REAL_NAME
+					this.handleChkRecUser()
+					this.recReadOnly = true
+					this.loading = false
+				}).catch(() => {
+					this.loading = false
+				})
+			}
+		},
+		// 查询安置人
+		handleChkConUser() {
+			if (this.form.conUserName) {
+				this.loading = true
+				fetchFullInfo( { userName: this.form.conUserName }).then(response => {
+					this.conRealName = response.data.REAL_NAME + response.data.isLocation
+					this.loading = false
+				}).catch(() => {
+					this.conRealName = '-'
+					this.loading = false
+				})
+			}
+		},
+		// 自动设置区位
+		setAutoPlace(side) {
+			if (this.recRealName !== '-') {
+				this.loading = true
+				fetchAutoPlace( { userName: this.form.recUserName, side: side }).then(response => {
+					this.form.conUserName = response.data.USER_NAME
+					this.handleChkConUser()
+					this.form.location = 1
+					this.form.autoPlace = side
+					this.loading = false
+				}).catch(() => {
+					this.conRealName = '-'
+					this.loading = false
+				})
+			} else {
+				this.form.autoPlace = ''
+				return false
+			}
+		},
+  }
+}
+</script>
+
+<style>
+.el-table th.el-table__cell > .cell {
+	white-space: nowrap;
+}
+
+.el-table td.el-table__cell > .cell {
+	word-break: keep-all;
+	white-space: pre-wrap;
+}
+.el-tabs--border-card > .el-tabs__content {
+	padding: 5px;
+}
+
+.el-radio.is-bordered + .el-radio.is-bordered {
+	margin: 5px 0;
+}
+.el-radio--medium.is-bordered {
+	margin: 5px 0;
+}
+</style>