ソースを参照

1324 & 1241 需求

kevin_zhangl 3 年 前
コミット
bf914d25ac

+ 20 - 5
frontendApi/modules/v1/controllers/ShopController.php

@@ -15,6 +15,7 @@ use common\models\DecOrder;
 use common\models\forms\DeclarationForm;
 use common\models\forms\OrderForm;
 use common\models\Order;
+use common\models\OrderGoods;
 use common\models\ReceiveAddress;
 use common\models\Region;
 use common\models\ShopGoods;
@@ -43,7 +44,12 @@ class ShopController extends BaseController {
             'from' => ShopGoods::tableName(),
         ]);
         foreach ($data['list'] as $key => $value) {
-            $data['list'][$key]['DISCOUNT'] = ShopGoods::GOODS_TYPE[$value['TYPE']]['discount'];
+            if ($value['TYPE'] == 1 || $value['TYPE'] == 2) {
+                $data['list'][$key]['DISCOUNT'] = ShopGoods::GOODS_TYPE[$value['TYPE']]['discount'];
+            } else {
+                $data['list'][$key]['DISCOUNT'] = $value['SELL_DISCOUNT']*100;
+            }
+            // $data['list'][$key]['DISCOUNT'] = ShopGoods::GOODS_TYPE[$value['TYPE']]['discount'];
         }
         return static::notice($data);
     }
@@ -79,10 +85,12 @@ class ShopController extends BaseController {
         }
         $userBalance = [
             'points' => 0,
-            'cash' => 0
+            'cash' => 0,
+            'exchange' => 0
         ];
         if ($userBonusResult = UserBonus::findOneAsArray(['USER_ID' => $userId])) {
             $userBalance['points'] = $userBonusResult['RECONSUME_POINTS'];
+            $userBalance['exchange'] = $userBonusResult['EXCHANGE_POINTS'];
         }
         if ($userCashResult = UserWallet::findOneAsArray(['USER_ID' => $userId])) {
             $userBalance['cash'] = $userCashResult['CASH'];
@@ -130,13 +138,14 @@ class ShopController extends BaseController {
         $condition = ' AND USER_ID=:USER_ID AND IS_DEL=0';
         $params[':USER_ID'] = \Yii::$app->user->id;
         $data = DecOrder::lists($condition, $params, [
-            'select' => 'DO.*,U.USER_NAME USER_NAME,U.REAL_NAME REAL_NAME,RU.USER_NAME REC_USER_NAME,RU.REAL_NAME REC_REAL_NAME,CU.USER_NAME CON_USER_NAME,CU.REAL_NAME CON_REAL_NAME',
+            'select' => 'DO.*,U.USER_NAME USER_NAME,U.REAL_NAME REAL_NAME,RU.USER_NAME REC_USER_NAME,RU.REAL_NAME REC_REAL_NAME,CU.USER_NAME CON_USER_NAME,CU.REAL_NAME CON_REAL_NAME,OG.*',
             'orderBy' => 'DO.CREATED_AT DESC',
             'from' => DecOrder::tableName() . ' AS DO',
             'join' => [
                 ['LEFT JOIN', User::tableName() . ' AS U', 'DO.TO_USER_ID=U.ID'],
                 ['LEFT JOIN', User::tableName() . ' AS RU', 'DO.REC_USER_ID=RU.ID'],
                 ['LEFT JOIN', User::tableName() . ' AS CU', 'DO.CON_USER_ID=CU.ID'],
+                ['LEFT JOIN', OrderGoods::tableName() . ' AS OG', 'OG.ORDER_SN=DO.ORDER_SN'],
             ],
         ]);
         return static::notice($data);
@@ -152,11 +161,12 @@ class ShopController extends BaseController {
         $condition = " AND ORDER_TYPE='FX' AND (USER_ID=:USER_ID OR CREATE_USER='$uname')";
         $params[':USER_ID'] = \Yii::$app->user->id;
         $data = Order::lists($condition, $params, [
-            'select' => 'O.*,U.REAL_NAME',
+            'select' => 'O.*,U.REAL_NAME,OG.*',
             'orderBy' => 'O.CREATED_AT DESC',
             'from' => Order::tableName() . ' AS O',
             'join' => [
                 ['LEFT JOIN', User::tableName() . ' AS U', 'U.ID=O.USER_ID'],
+                ['LEFT JOIN', OrderGoods::tableName() . ' AS OG', 'OG.ORDER_SN=O.SN'],
             ],
         ]);
         foreach ($data['list'] as $key => $value) {
@@ -178,7 +188,12 @@ class ShopController extends BaseController {
             'from' => ShopGoods::tableName(),
         ]);
         foreach ($data['list'] as $key => $value) {
-            $data['list'][$key]['DISCOUNT'] = ShopGoods::GOODS_TYPE[$value['TYPE']]['discount'];
+            if ($value['TYPE'] == 1 || $value['TYPE'] == 2) {
+                $data['list'][$key]['DISCOUNT'] = ShopGoods::GOODS_TYPE[$value['TYPE']]['discount'];
+            } else {
+                $data['list'][$key]['DISCOUNT'] = $value['SELL_DISCOUNT']*100;
+            }
+            //$data['list'][$key]['DISCOUNT'] = ShopGoods::GOODS_TYPE[$value['TYPE']]['discount'];
         }
         return static::notice($data);
     }

+ 34 - 28
frontendEle/src/views/shop/dec-order-list.vue

@@ -1,31 +1,22 @@
 <template>
     <div v-loading="loading">
         <div class="white-box">
-            <el-table class="withdraw-table" :data="tableData" stripe style="width: 100%;">
+            <el-table class="withdraw-table" :data="tableData" style="width: 100%;" :span-method="objectSpanMethod">
+                <el-table-column label="商品编号" prop="SKU_CODE"></el-table-column>
+                <el-table-column label="商品名称" prop="GOODS_TITLE"></el-table-column>
+                <el-table-column label="数量" prop="BUY_NUMS"></el-table-column>
+                <el-table-column label="报单金额" prop="REAL_PRICE"></el-table-column>
+                <el-table-column label="报单PV" prop="REAL_PV"></el-table-column>
+                <el-table-column label="报单编号" prop="DEC_SN"></el-table-column>
+                <el-table-column label="订单编号" prop="DEC_SN"></el-table-column>
+                <el-table-column label="会员编号" prop="USER_NAME"></el-table-column>
+                <el-table-column label="会员姓名" prop="REAL_NAME"></el-table-column>
+                <el-table-column label="接点人编号" prop="CON_USER_NAME"></el-table-column>
                 <el-table-column label="创建时间">
                     <template slot-scope="scope">
                         {{tool.formatDate(scope.row.CREATED_AT)}}
                     </template>
                 </el-table-column>
-                <el-table-column label="报单编号" prop="DEC_SN">
-
-                </el-table-column>
-                <el-table-column label="订单编号" prop="DEC_SN">
-
-                </el-table-column>
-
-                <el-table-column label="会员编号" prop="USER_NAME">
-                </el-table-column>
-                <el-table-column label="会员姓名" prop="REAL_NAME">
-                </el-table-column>
-                <!--<el-table-column label="推荐人编号" prop="REC_USER_NAME">-->
-                <!--</el-table-column>-->
-                <el-table-column label="接点人编号" prop="CON_USER_NAME">
-                </el-table-column>
-                <el-table-column label="报单金额" prop="DEC_AMOUNT">
-                </el-table-column>
-                <el-table-column label="报单PV" prop="DEC_PV">
-                </el-table-column>
             </el-table>
             <div class="white-box-footer">
                 <pagination :total="totalCount" :page_size="pageSize" @size-change="handleSizeChange" @current-change="handleCurrentChange"></pagination>
@@ -67,25 +58,40 @@
                 this.getData(this.currentPage, pageSize)
             },
             getData(page, pageSize) {
-                network.getPageData(this, 'shop/dec-order-list', page, pageSize, {type: this.type}, function (response) {
+                let _this = this
+                network.getPageData(_this, 'shop/dec-order-list', page, pageSize, {type: this.type}, function (response) {
                 //network.getData(`shop/dec-order-list`).then(response => {
-                    console.log(response)
-                    this.loading = false;
-                    this.list = response.list;
-                    let settingObj=this.list;
+                    _this.loading = false;
+                    _this.list = response.list;
+                    let settingObj = _this.list;
+
                     let settingArr = Object.keys(settingObj).map(key => {
                         //console.log(key); //为每个键名
                         return settingObj[key];  //把每个对象返回出去生成一个新的数组中相当于0:{id:1}
                     } );
-                    this.tableData=settingArr;
-                    console.log(this.tableData)
 
+                    _this.tableData=settingArr;
                 });
             },
+            objectSpanMethod({ row, column, rowIndex, columnIndex }) {
+              if (columnIndex > 4) {
+                if (rowIndex % 2 === 0) {
+                  return {
+                    rowspan: 2,
+                    colspan: 1
+                  };
+                } else {
+                  return {
+                    rowspan: 0,
+                    colspan: 0
+                  };
+                }
+              }
+            },
         }
     }
 </script>
 
 <style scoped>
 
-</style>
+</style>

+ 38 - 26
frontendEle/src/views/shop/order-list.vue

@@ -1,30 +1,26 @@
 <template>
     <div v-loading="loading">
         <div class="white-box">
-            <el-table class="withdraw-table" :data="tableData" stripe style="width: 100%;">
-                <el-table-column label="创建时间">
-                    <template slot-scope="scope">
-                        {{tool.formatDate(scope.row.CREATED_AT)}}
+            <el-table class="withdraw-table" :data="tableData" style="width: 100%;" :span-method="objectSpanMethod">
+              <el-table-column label="商品编号" prop="SKU_CODE"></el-table-column>
+              <el-table-column label="商品名称" prop="GOODS_TITLE"></el-table-column>
+                <el-table-column label="数量" prop="BUY_NUMS"></el-table-column>
+                <el-table-column label="会员价格">
+                    <template slot-scope="props">
+                        {{ props.row.REAL_PRICE * props.row.BUY_NUMS }}
                     </template>
                 </el-table-column>
-                <el-table-column label="订单编号" prop="SN">
+                <el-table-column label="会员PV">
+                    <template slot-scope="props">
+                        {{ props.row.REAL_PV * props.row.BUY_NUMS }}
+                    </template>
                 </el-table-column>
-              <!--  <el-table-column label="会员ID" prop="USER_ID">
-
-                </el-table-column>-->
+                <el-table-column label="订单编号" prop="SN"></el-table-column>
                 <el-table-column label="会员编号" prop="USER_NAME"></el-table-column>
                 <el-table-column label="会员姓名" prop="REAL_NAME"></el-table-column>
-
-                <el-table-column label="订单金额" prop="ORDER_AMOUNT">
-                </el-table-column>
-                <el-table-column label="订单PV" prop="PV">
-                </el-table-column>
-                <el-table-column label="收货人" prop="CONSIGNEE">
-                </el-table-column>
-                <el-table-column label="收货电话" prop="MOBILE">
-                </el-table-column>
-                <el-table-column label="支付时间" prop="PAY_AT">
-                </el-table-column>
+                <el-table-column label="收货人" prop="CONSIGNEE"></el-table-column>
+                <el-table-column label="收货电话" prop="MOBILE"></el-table-column>
+                <el-table-column label="支付时间" prop="PAY_AT"></el-table-column>
             </el-table>
             <div class="white-box-footer">
                 <pagination :total="totalCount" :page_size="pageSize" @size-change="handleSizeChange" @current-change="handleCurrentChange"></pagination>
@@ -59,6 +55,21 @@
             }
         },
         methods: {
+            objectSpanMethod({ row, column, rowIndex, columnIndex }) {
+              if (columnIndex > 4) {
+                if (rowIndex % 2 === 0) {
+                  return {
+                    rowspan: 2,
+                    colspan: 1
+                  };
+                } else {
+                  return {
+                    rowspan: 0,
+                    colspan: 0
+                  };
+                }
+              }
+            },
             handleCurrentChange (page) {
                 this.getData(page, this.pageSize)
             },
@@ -66,16 +77,17 @@
                 this.getData(this.currentPage, pageSize)
             },
             getData(page, pageSize) {
-                network.getPageData(this, 'shop/order-list', page, pageSize, {type: this.type}, function (response) {
-                    console.log(response)
-                    this.loading = false;
-                    this.list = response.list;
-                    let settingObj=this.list;
+                let _this = this
+                network.getPageData(_this, 'shop/order-list', page, pageSize, {type: this.type}, function (response) {
+                    _this.loading = false;
+                    _this.list = response.list;
+                    let settingObj=_this.list;
+
                     let settingArr = Object.keys(settingObj).map(key => {
                         //console.log(key); //为每个键名
                         return settingObj[key];  //把每个对象返回出去生成一个新的数组中相当于0:{id:1}
                     } );
-                    this.tableData=settingArr;
+                    _this.tableData=settingArr;
                     console.log(this.tableData)
 
 
@@ -86,4 +98,4 @@
 </script>
 <style scoped>
 
-</style>
+</style>

+ 43 - 8
frontendEle/src/views/shop/order.vue

@@ -4,7 +4,9 @@
             <div class="table">
                 <el-table
                     :data="goods"
-                    style="width: 100%">
+                    style="width: 100%"
+                    show-summary
+                    :summary-method="getSummaries">
                      <el-table-column label="商品名称" prop="GOODS_NAME">
                     </el-table-column>
 
@@ -14,19 +16,20 @@
                         </template>
                     </el-table-column>
 
-                    <el-table-column label="商品价格" prop="SELL_PRICE">
+                    <el-table-column label="会员价格" prop="member_price">
                     </el-table-column>
-                    <el-table-column label="价格PV" prop="PRICE_PV">
-                    </el-table-column>
-                    <el-table-column label="库存" prop="STORE_NUMS">
+                    <el-table-column label="会员PV" prop="member_pv">
                     </el-table-column>
+<!--                    <el-table-column label="库存" prop="STORE_NUMS">-->
+<!--                    </el-table-column>-->
 
                     <el-table-column label="数量" prop="chose_num">
 
                     </el-table-column>
-                    <el-table-column label="合计金额" prop="num_plus">
+                    <el-table-column label="会员价格合计金额" prop="member_price_plus">
 
                     </el-table-column>
+                    <el-table-column label="合计PV" prop="member_pv_plus"></el-table-column>
                 </el-table>
             </div>
             <div class="address_box">
@@ -71,6 +74,10 @@
                         <div>账户余额</div>
                         <div>¥{{balance.cash}}元</div>
                     </div>
+                    <div class="sum_box">
+                        <div>无业绩兑换券</div>
+                        <div>{{balance.exchange}}</div>
+                    </div>
                 </div>
             </div>
             <div>
@@ -102,7 +109,6 @@
                 goodsNum:'',
                 payPassword:'',
                 submitButtonStat:false,
-
             }
         },
         created(){
@@ -118,7 +124,13 @@
 
                     pageList.map((pageData, index)=>{
                         if( Number(pageData.chose_num) > 0 ) {
-                            pageData.num_plus = pageData.SELL_PRICE * Number(pageData.chose_num);
+                            let discount = pageData.DISCOUNT / 100;
+                            pageData.member_price = pageData.SELL_PRICE * discount;
+                            pageData.member_price_plus = pageData.SELL_PRICE * Number(pageData.chose_num) * discount;
+
+                            pageData.member_pv = pageData.PRICE_PV * discount;
+                            pageData.member_pv_plus = pageData.PRICE_PV * Number(pageData.chose_num) * discount;
+
                             this.goods.push(pageData)
                         }
                     })
@@ -128,6 +140,29 @@
             }
         },
         methods:{
+            getSummaries(param) {
+              const { columns, data } = param;
+              const sums = [];
+              columns.forEach((column, index) => {
+                if (index === 0) {
+                  sums[index] = '合计';
+                  return;
+                }
+                const values = data.map(item => Number(item[column.property]));
+                if ((!values.every(value => isNaN(value))) && [4, 5, 6].includes(index)) {
+                  sums[index] = values.reduce((prev, curr) => {
+                    const value = Number(curr);
+                    if (!isNaN(value)) {
+                      return prev + curr;
+                    } else {
+                      return prev;
+                    }
+                  }, 0);
+                }
+              });
+
+              return sums;
+            },
             goToAccounts(){
                 this.submitButtonStat = true
                 // let path = 'sure-order'

+ 39 - 7
frontendEle/src/views/shop/reconsume-order.vue

@@ -4,7 +4,9 @@
             <div class="table">
                 <el-table
                     :data="goods"
-                    style="width: 100%">
+                    style="width: 100%"
+                    show-summary
+                    :summary-method="getSummaries">
                      <el-table-column label="商品名称" prop="GOODS_NAME">
                     </el-table-column>
 
@@ -14,19 +16,20 @@
                         </template>
                     </el-table-column>
 
-                    <el-table-column label="商品价格" prop="SELL_PRICE">
+                    <el-table-column label="会员价格" prop="member_price">
                     </el-table-column>
-                    <el-table-column label="价格PV" prop="PRICE_PV">
-                    </el-table-column>
-                    <el-table-column label="库存" prop="STORE_NUMS">
+                    <el-table-column label="会员PV" prop="member_pv">
                     </el-table-column>
+<!--                    <el-table-column label="库存" prop="STORE_NUMS">-->
+<!--                    </el-table-column>-->
 
                     <el-table-column label="数量" prop="chose_num">
 
                     </el-table-column>
-                    <el-table-column label="合计金额" prop="num_plus">
+                    <el-table-column label="会员价格合计金额" prop="member_price_plus">
 
                     </el-table-column>
+                    <el-table-column label="合计PV" prop="member_pv_plus"></el-table-column>
                 </el-table>
             </div>
             <!--<div class="sum">-->
@@ -192,7 +195,13 @@
 
                     pageList.map((pageData, index)=>{
                         if( Number(pageData.chose_num) > 0 ) {
-                            pageData.num_plus = pageData.SELL_PRICE * Number(pageData.chose_num);
+                            let discount = pageData.DISCOUNT / 100;
+                            pageData.member_price = pageData.SELL_PRICE * discount;
+                            pageData.member_price_plus = pageData.SELL_PRICE * Number(pageData.chose_num) * discount;
+
+                            pageData.member_pv = pageData.PRICE_PV * discount;
+                            pageData.member_pv_plus = pageData.PRICE_PV * Number(pageData.chose_num) * discount;
+
                             this.goods.push(pageData)
                         }
                     })
@@ -244,6 +253,29 @@
                 })
 
             },
+            getSummaries(param) {
+              const { columns, data } = param;
+              const sums = [];
+              columns.forEach((column, index) => {
+                if (index === 0) {
+                  sums[index] = '合计';
+                  return;
+                }
+                const values = data.map(item => Number(item[column.property]));
+                if ((!values.every(value => isNaN(value))) && [4, 5, 6].includes(index)) {
+                  sums[index] = values.reduce((prev, curr) => {
+                    const value = Number(curr);
+                    if (!isNaN(value)) {
+                      return prev + curr;
+                    } else {
+                      return prev;
+                    }
+                  }, 0);
+                }
+              });
+
+              return sums;
+            },
             getSumMoney(){
                 // let points_plus_sum=[];
                 let cash_plus_sum=[];