Explorar el Código

Merge branch 'v4.7.0dev' of https://gitee.com/ZhongBangKeJi/CRMEB into v4.7.0dev

liaofei hace 2 años
padre
commit
2cc5010bfb
Se han modificado 39 ficheros con 934 adiciones y 758 borrados
  1. 3 0
      crmeb/app/adminapi/controller/v1/setting/SystemConfig.php
  2. 12 13
      crmeb/app/adminapi/controller/v1/user/User.php
  3. 1 3
      crmeb/app/listener/admin/AdminLoginListener.php
  4. 24 4
      crmeb/app/services/agent/AgentLevelServices.php
  5. 158 50
      crmeb/app/services/order/StoreOrderServices.php
  6. 0 4
      crmeb/app/services/product/product/StoreCategoryServices.php
  7. 1 1
      crmeb/app/services/user/UserAuthServices.php
  8. 1 0
      crmeb/app/services/wechat/WechatQrcodeServices.php
  9. 12 2
      crmeb/public/install/crmeb.sql
  10. 10 1
      template/admin/src/components/main/components/header-notice/index.vue
  11. 4 1
      template/admin/src/components/main/components/side-menu/collapsed-menu.vue
  12. 4 3
      template/admin/src/main.js
  13. 25 21
      template/admin/src/pages/agent/agentManage.vue
  14. 2 2
      template/admin/src/pages/cms/articleCategory/index.vue
  15. 1 5
      template/admin/src/pages/finance/balance/index.vue
  16. 1 2
      template/admin/src/pages/finance/capitalFlow/index.vue
  17. 0 1
      template/admin/src/pages/finance/commission/index.vue
  18. 8 6
      template/admin/src/pages/index/components/baseInfo.vue
  19. 1 6
      template/admin/src/pages/marketing/point_record/index.vue
  20. 1 1
      template/admin/src/pages/marketing/point_statistic/index.vue
  21. 0 1
      template/admin/src/pages/marketing/storeBargain/bargainList.vue
  22. 1 1
      template/admin/src/pages/marketing/storeBargain/index.vue
  23. 0 1
      template/admin/src/pages/marketing/storeCombination/combinaList.vue
  24. 1 1
      template/admin/src/pages/marketing/storeIntegralOrder/components/tableList.vue
  25. 0 1
      template/admin/src/pages/order/invoice/index.vue
  26. 2 1
      template/admin/src/pages/order/orderList/index.vue
  27. 3 2
      template/admin/src/pages/order/refund/index.vue
  28. 1 1
      template/admin/src/pages/product/productList/index.vue
  29. 1 1
      template/admin/src/pages/product/productReply/index.vue
  30. 28 7
      template/admin/src/pages/setting/membershipLevel/index.vue
  31. 2 2
      template/admin/src/pages/setting/multiLanguage/country.vue
  32. 3 3
      template/admin/src/pages/setting/multiLanguage/langList.vue
  33. 1 3
      template/admin/src/pages/system/crontab/index.vue
  34. 0 1
      template/admin/src/pages/user/grade/record/index.vue
  35. 14 5
      template/admin/src/pages/user/level/index.vue
  36. 18 10
      template/admin/src/pages/user/list/handle/userEdit.vue
  37. 5 12
      template/uni-app/pages/annex/offline_pay/index.vue
  38. 574 571
      template/uni-app/pages/annex/special/index.vue
  39. 11 8
      template/uni-app/pages/extension/customer_list/chat.vue

+ 3 - 0
crmeb/app/adminapi/controller/v1/setting/SystemConfig.php

@@ -307,6 +307,9 @@ class SystemConfig extends AuthController
                 return app('json')->fail(400763);
             }
         }
+        if (isset($post['uni_brokerage_price']) && preg_match('/\.[0-9]{2,}[1-9][0-9]*$/', (string)$post['uni_brokerage_price']) > 0) {
+            return app('json')->fail(500029);
+        }
 
         //支付接口类型选择,如果有订单就不能再进行切换
 //        if (isset($post['pay_wechat_type'])) {

+ 12 - 13
crmeb/app/adminapi/controller/v1/user/User.php

@@ -123,20 +123,19 @@ class User extends AuthController
         if ($data['card_id']) {
             if (!check_card($data['card_id'])) return app('json')->fail(400315);
         }
-        if ($data['pwd']) {
-            if (!$data['true_pwd']) {
-                return app('json')->fail(400263);
-            }
-            if ($data['pwd'] != $data['true_pwd']) {
-                return app('json')->fail(400264);
-            }
-            if (strlen($data['pwd']) < 6 || strlen($data['pwd']) > 32) {
-                return app('json')->fail(400762);
-            }
-            $data['pwd'] = md5($data['pwd']);
-        } else {
-            unset($data['pwd']);
+        if (!$data['pwd']) {
+            return app('json')->fail(400256);
+        }
+        if (!$data['true_pwd']) {
+            return app('json')->fail(400263);
+        }
+        if ($data['pwd'] != $data['true_pwd']) {
+            return app('json')->fail(400264);
+        }
+        if (strlen($data['pwd']) < 6 || strlen($data['pwd']) > 32) {
+            return app('json')->fail(400762);
         }
+        $data['pwd'] = md5($data['pwd']);
         unset($data['true_pwd']);
         $data['avatar'] = sys_config('h5_avatar');
         $data['adminId'] = $this->adminId;

+ 1 - 3
crmeb/app/listener/admin/AdminLoginListener.php

@@ -35,13 +35,11 @@ class AdminLoginListener
         }
 
         try {
-
             $timerPath = root_path('runtime') . '.timer';
             $timer = file_get_contents($timerPath);
-            if ($timer && $timer <= time() && $timer > (time() - 10)) {
+            if ($timer && $timer <= time() && $timer > (time() - 70)) {
                 $res1 = true;
             }
-
         } catch (\Throwable $e) {
         }
 

+ 24 - 4
crmeb/app/services/agent/AgentLevelServices.php

@@ -66,6 +66,10 @@ class AgentLevelServices extends BaseServices
             $query->field('count(*) as sum');
         }], $page, $limit);
         $count = $this->dao->count($where);
+        foreach ($list as &$item) {
+            $item['one_brokerage_ratio'] = bcdiv(bcmul((string)sys_config('store_brokerage_ratio'), bcadd('100', (string)$item['one_brokerage'], 2), 2), '100', 2);
+            $item['two_brokerage_ratio'] = bcdiv(bcmul((string)sys_config('store_brokerage_two'), bcadd('100', (string)$item['two_brokerage'], 2), 2), '100', 2);
+        }
         return compact('count', 'list');
     }
 
@@ -259,8 +263,16 @@ class AgentLevelServices extends BaseServices
         $field[] = Form::input('name', '等级名称')->maxlength(8)->col(24);
         $field[] = Form::number('grade', '等级', 0)->min(0)->precision(0);
         $field[] = Form::frameImage('image', '背景图', Url::buildUrl('admin/widget.images/index', array('fodder' => 'image')))->icon('ios-add')->width('950px')->height('505px')->modal(['footer-hide' => true]);
-        $field[] = Form::number('one_brokerage', '一级上浮', 0)->info('在分销一级佣金基础上浮(0-1000之间整数)百分比')->min(0)->max(1000)->precision(0);
-        $field[] = Form::number('two_brokerage', '二级上浮', 0)->info('在分销二级佣金基础上浮(0-1000之间整数)百分比')->min(0)->max(1000)->precision(0);
+        $field[] = Form::number('one_brokerage', '一级上浮', 0)->appendRule('suffix', [
+            'type' => 'div',
+            'class' => 'tips-info',
+            'domProps' => ['innerHTML' => '在分销一级佣金基础上浮(0-1000之间整数)百分比,目前一级返佣比率:10%,上浮5%,则返佣比率:一级返佣比率 * (1 + 一级上浮比率) = 10.50%']
+        ])->max(1000)->precision(0);
+        $field[] = Form::number('two_brokerage', '二级上浮', 0)->appendRule('suffix', [
+            'type' => 'div',
+            'class' => 'tips-info',
+            'domProps' => ['innerHTML' => '在分销二级佣金基础上浮(0-1000之间整数)百分比,目前二级返佣比率:10%,上浮2%,则返佣比率:二级返佣比率 * (1 + 二级上浮比率) = 5.10%']
+        ])->min(0)->max(1000)->precision(0);
         $field[] = Form::radio('status', '是否显示', 1)->options([['value' => 1, 'label' => '显示'], ['value' => 0, 'label' => '隐藏']]);
         return create_form('添加分销员等级', $field, Url::buildUrl('/agent/level'), 'POST');
     }
@@ -281,8 +293,16 @@ class AgentLevelServices extends BaseServices
         $field[] = Form::input('name', '等级名称', $levelInfo['name'])->maxlength(8)->col(24);
         $field[] = Form::number('grade', '等级', $levelInfo['grade'])->min(0)->precision(0);
         $field[] = Form::frameImage('image', '背景图', Url::buildUrl('admin/widget.images/index', array('fodder' => 'image')), $levelInfo['image'])->icon('ios-add')->width('950px')->height('505px')->modal(['footer-hide' => true]);
-        $field[] = Form::number('one_brokerage', '一级上浮', $levelInfo['one_brokerage'])->info('在分销一级佣金基础上浮(0-1000之间整数)百分比')->min(0)->max(1000)->precision(0);
-        $field[] = Form::number('two_brokerage', '二级上浮', $levelInfo['two_brokerage'])->info('在分销二级佣金基础上浮(0-1000之间整数)百分比')->min(0)->max(1000)->precision(0);
+        $field[] = Form::number('one_brokerage', '一级上浮', $levelInfo['one_brokerage'])->appendRule('suffix', [
+            'type' => 'div',
+            'class' => 'tips-info',
+            'domProps' => ['innerHTML' => '在分销一级佣金基础上浮(0-1000之间整数)百分比,目前一级返佣比率:10%,上浮5%,则返佣比率:一级返佣比率 * (1 + 一级上浮比率) = 10.50%']
+        ])->min(0)->max(1000)->precision(0);
+        $field[] = Form::number('two_brokerage', '二级上浮', $levelInfo['two_brokerage'])->appendRule('suffix', [
+            'type' => 'div',
+            'class' => 'tips-info',
+            'domProps' => ['innerHTML' => '在分销二级佣金基础上浮(0-1000之间整数)百分比,目前二级返佣比率:10%,上浮2%,则返佣比率:二级返佣比率 * (1 + 二级上浮比率) = 5.10%']
+        ])->min(0)->max(1000)->precision(0);
         $field[] = Form::radio('status', '是否显示', $levelInfo['status'])->options([['value' => 1, 'label' => '显示'], ['value' => 0, 'label' => '隐藏']]);
 
         return create_form('编辑分销员等级', $field, Url::buildUrl('/agent/level/' . $id), 'PUT');

+ 158 - 50
crmeb/app/services/order/StoreOrderServices.php

@@ -988,10 +988,46 @@ HTML;
                     ]
                 ]]
                 ];
+                $series3 = ['normal' => ['color' => [
+                    'x' => 0, 'y' => 0, 'x2' => 0, 'y2' => 1,
+                    'colorStops' => [
+                        [
+                            'offset' => 0,
+                            'color' => '#69cdff'
+                        ],
+                        [
+                            'offset' => 0.5,
+                            'color' => '#3eb3f7'
+                        ],
+                        [
+                            'offset' => 1,
+                            'color' => '#1495eb'
+                        ]
+                    ]
+                ]]
+                ];
+                $series4 = ['normal' => ['color' => [
+                    'x' => 0, 'y' => 0, 'x2' => 0, 'y2' => 1,
+                    'colorStops' => [
+                        [
+                            'offset' => 0,
+                            'color' => '#6fdeab'
+                        ],
+                        [
+                            'offset' => 0.5,
+                            'color' => '#44d693'
+                        ],
+                        [
+                            'offset' => 1,
+                            'color' => '#2cc981'
+                        ]
+                    ]
+                ]]
+                ];
                 $chartdata['series'][] = ['name' => $chartdata['legend'][0], 'type' => 'bar', 'itemStyle' => $series1, 'data' => $data['pre']['price']];//分类1值
-                $chartdata['series'][] = ['name' => $chartdata['legend'][1], 'type' => 'bar', 'itemStyle' => $series1, 'data' => $data['now']['price']];//分类1值
-                $chartdata['series'][] = ['name' => $chartdata['legend'][2], 'type' => 'line', 'itemStyle' => $series2, 'data' => $data['pre']['count'], 'yAxisIndex' => 1];//分类2值
-                $chartdata['series'][] = ['name' => $chartdata['legend'][3], 'type' => 'line', 'itemStyle' => $series2, 'data' => $data['now']['count'], 'yAxisIndex' => 1];//分类2值
+                $chartdata['series'][] = ['name' => $chartdata['legend'][1], 'type' => 'bar', 'itemStyle' => $series2, 'data' => $data['now']['price']];//分类1值
+                $chartdata['series'][] = ['name' => $chartdata['legend'][2], 'type' => 'line', 'itemStyle' => $series3, 'data' => $data['pre']['count'], 'yAxisIndex' => 1];//分类2值
+                $chartdata['series'][] = ['name' => $chartdata['legend'][3], 'type' => 'line', 'itemStyle' => $series4, 'data' => $data['now']['count'], 'yAxisIndex' => 1];//分类2值
 
                 //统计总数上期
                 $pre_total = $this->dao->preTotalFind($datebefor, $dateafter);
@@ -1109,10 +1145,46 @@ HTML;
                     ]
                 ]]
                 ];
+                $series3 = ['normal' => ['color' => [
+                    'x' => 0, 'y' => 0, 'x2' => 0, 'y2' => 1,
+                    'colorStops' => [
+                        [
+                            'offset' => 0,
+                            'color' => '#69cdff'
+                        ],
+                        [
+                            'offset' => 0.5,
+                            'color' => '#3eb3f7'
+                        ],
+                        [
+                            'offset' => 1,
+                            'color' => '#1495eb'
+                        ]
+                    ]
+                ]]
+                ];
+                $series4 = ['normal' => ['color' => [
+                    'x' => 0, 'y' => 0, 'x2' => 0, 'y2' => 1,
+                    'colorStops' => [
+                        [
+                            'offset' => 0,
+                            'color' => '#6fdeab'
+                        ],
+                        [
+                            'offset' => 0.5,
+                            'color' => '#44d693'
+                        ],
+                        [
+                            'offset' => 1,
+                            'color' => '#2cc981'
+                        ]
+                    ]
+                ]]
+                ];
                 $chartdata['series'][] = ['name' => $chartdata['legend'][0], 'type' => 'bar', 'itemStyle' => $series1, 'data' => $data['pre']['price']];//分类1值
-                $chartdata['series'][] = ['name' => $chartdata['legend'][1], 'type' => 'bar', 'itemStyle' => $series1, 'data' => $data['now']['price']];//分类1值
-                $chartdata['series'][] = ['name' => $chartdata['legend'][2], 'type' => 'line', 'itemStyle' => $series2, 'data' => $data['pre']['count'], 'yAxisIndex' => 1];//分类2值
-                $chartdata['series'][] = ['name' => $chartdata['legend'][3], 'type' => 'line', 'itemStyle' => $series2, 'data' => $data['now']['count'], 'yAxisIndex' => 1];//分类2值
+                $chartdata['series'][] = ['name' => $chartdata['legend'][1], 'type' => 'bar', 'itemStyle' => $series2, 'data' => $data['now']['price']];//分类1值
+                $chartdata['series'][] = ['name' => $chartdata['legend'][2], 'type' => 'line', 'itemStyle' => $series3, 'data' => $data['pre']['count'], 'yAxisIndex' => 1];//分类2值
+                $chartdata['series'][] = ['name' => $chartdata['legend'][3], 'type' => 'line', 'itemStyle' => $series4, 'data' => $data['now']['count'], 'yAxisIndex' => 1];//分类2值
 
                 //统计总数上期
                 $pre_total = $this->dao->preTotalFind($datebefor, $dateafter);
@@ -1228,10 +1300,46 @@ HTML;
                     ]
                 ]]
                 ];
+                $series3 = ['normal' => ['color' => [
+                    'x' => 0, 'y' => 0, 'x2' => 0, 'y2' => 1,
+                    'colorStops' => [
+                        [
+                            'offset' => 0,
+                            'color' => '#69cdff'
+                        ],
+                        [
+                            'offset' => 0.5,
+                            'color' => '#3eb3f7'
+                        ],
+                        [
+                            'offset' => 1,
+                            'color' => '#1495eb'
+                        ]
+                    ]
+                ]]
+                ];
+                $series4 = ['normal' => ['color' => [
+                    'x' => 0, 'y' => 0, 'x2' => 0, 'y2' => 1,
+                    'colorStops' => [
+                        [
+                            'offset' => 0,
+                            'color' => '#6fdeab'
+                        ],
+                        [
+                            'offset' => 0.5,
+                            'color' => '#44d693'
+                        ],
+                        [
+                            'offset' => 1,
+                            'color' => '#2cc981'
+                        ]
+                    ]
+                ]]
+                ];
                 $chartdata['series'][] = ['name' => $chartdata['legend'][0], 'type' => 'bar', 'itemStyle' => $series1, 'data' => $data['pre']['price']];//分类1值
-                $chartdata['series'][] = ['name' => $chartdata['legend'][1], 'type' => 'bar', 'itemStyle' => $series1, 'data' => $data['now']['price']];//分类1值
-                $chartdata['series'][] = ['name' => $chartdata['legend'][2], 'type' => 'line', 'itemStyle' => $series2, 'data' => $data['pre']['count'], 'yAxisIndex' => 1];//分类2值
-                $chartdata['series'][] = ['name' => $chartdata['legend'][3], 'type' => 'line', 'itemStyle' => $series2, 'data' => $data['now']['count'], 'yAxisIndex' => 1];//分类2值
+                $chartdata['series'][] = ['name' => $chartdata['legend'][1], 'type' => 'bar', 'itemStyle' => $series2, 'data' => $data['now']['price']];//分类1值
+                $chartdata['series'][] = ['name' => $chartdata['legend'][2], 'type' => 'line', 'itemStyle' => $series3, 'data' => $data['pre']['count'], 'yAxisIndex' => 1];//分类2值
+                $chartdata['series'][] = ['name' => $chartdata['legend'][3], 'type' => 'line', 'itemStyle' => $series4, 'data' => $data['now']['count'], 'yAxisIndex' => 1];//分类2值
 
                 //统计总数上期
                 $pre_total = $this->dao->preTotalFind($datebefor, $dateafter);
@@ -1323,24 +1431,24 @@ HTML;
         $yesterday_sales = $this->dao->todaySales('yesterday');
         //日同比
         $sales_today_ratio = $this->growth($today_sales, $yesterday_sales);
-        //周销售额
-        //本周
-        $this_week_sales = $this->dao->thisWeekSales('week');
-        //上周
-        $last_week_sales = $this->dao->thisWeekSales('last week');
-        //周同比
-        $sales_week_ratio = $this->growth($this_week_sales, $last_week_sales);
+//        //周销售额
+//        //本周
+//        $this_week_sales = $this->dao->thisWeekSales('week');
+//        //上周
+//        $last_week_sales = $this->dao->thisWeekSales('last week');
+//        //周同比
+//        $sales_week_ratio = $this->growth($this_week_sales, $last_week_sales);
         //总销售额
         $total_sales = $this->dao->totalSales('month');
         $sales = [
             'today' => $today_sales,
             'yesterday' => $yesterday_sales,
             'today_ratio' => $sales_today_ratio,
-            'week' => $this_week_sales,
-            'last_week' => $last_week_sales,
-            'week_ratio' => $sales_week_ratio,
+//            'week' => $this_week_sales,
+//            'last_week' => $last_week_sales,
+//            'week_ratio' => $sales_week_ratio,
             'total' => $total_sales . '元',
-            'date' => '日'
+            'date' => '日'
         ];
         //TODO:用户访问量
         //今日访问量
@@ -1349,23 +1457,23 @@ HTML;
         $yesterday_visits = $productLogServices->count(['time' => 'yesterday', 'type' => 'visit']);
         //日同比
         $visits_today_ratio = $this->growth($today_visits, $yesterday_visits);
-        //本周访问量
-        $this_week_visits = $productLogServices->count(['time' => 'week', 'type' => 'visit']);
-        //上周访问量
-        $last_week_visits = $productLogServices->count(['time' => 'last week', 'type' => 'visit']);
-        //周同比
-        $visits_week_ratio = $this->growth($this_week_visits, $last_week_visits);
+//        //本周访问量
+//        $this_week_visits = $productLogServices->count(['time' => 'week', 'type' => 'visit']);
+//        //上周访问量
+//        $last_week_visits = $productLogServices->count(['time' => 'last week', 'type' => 'visit']);
+//        //周同比
+//        $visits_week_ratio = $this->growth($this_week_visits, $last_week_visits);
         //总访问量
         $total_visits = $productLogServices->count(['time' => 'month', 'type' => 'visit']);
         $visits = [
             'today' => $today_visits,
             'yesterday' => $yesterday_visits,
             'today_ratio' => $visits_today_ratio,
-            'week' => $this_week_visits,
-            'last_week' => $last_week_visits,
-            'week_ratio' => $visits_week_ratio,
+//            'week' => $this_week_visits,
+//            'last_week' => $last_week_visits,
+//            'week_ratio' => $visits_week_ratio,
             'total' => $total_visits . 'Pv',
-            'date' => '日'
+            'date' => '日'
         ];
         //TODO 订单量
         //今日订单量
@@ -1374,23 +1482,23 @@ HTML;
         $yesterday_order = $this->dao->todayOrderVisit('yesterday', 1);
         //订单日同比
         $order_today_ratio = $this->growth($today_order, $yesterday_order);
-        //本周订单量
-        $this_week_order = $this->dao->todayOrderVisit('week', 2);
-        //上周订单量
-        $last_week_order = $this->dao->todayOrderVisit('last week', 2);
-        //订单周同比
-        $order_week_ratio = $this->growth($this_week_order, $last_week_order);
+//        //本周订单量
+//        $this_week_order = $this->dao->todayOrderVisit('week', 2);
+//        //上周订单量
+//        $last_week_order = $this->dao->todayOrderVisit('last week', 2);
+//        //订单周同比
+//        $order_week_ratio = $this->growth($this_week_order, $last_week_order);
         //总订单量
         $total_order = $this->dao->count(['time' => 'month', 'paid' => 1, 'refund_status' => 0, 'pid' => 0]);
         $order = [
             'today' => $today_order,
             'yesterday' => $yesterday_order,
             'today_ratio' => $order_today_ratio,
-            'week' => $this_week_order,
-            'last_week' => $last_week_order,
-            'week_ratio' => $order_week_ratio,
+//            'week' => $this_week_order,
+//            'last_week' => $last_week_order,
+//            'week_ratio' => $order_week_ratio,
             'total' => $total_order . '单',
-            'date' => '日'
+            'date' => '日'
         ];
         //TODO 用户
         //今日新增用户
@@ -1399,23 +1507,23 @@ HTML;
         $yesterday_user = $uSercice->todayAddVisits('yesterday', 1);
         //新增用户日同比
         $user_today_ratio = $this->growth($today_user, $yesterday_user);
-        //本周新增用户
-        $this_week_user = $uSercice->todayAddVisits('week', 2);
-        //上周新增用户
-        $last_week_user = $uSercice->todayAddVisits('last week', 2);
-        //新增用户周同比
-        $user_week_ratio = $this->growth($this_week_user, $last_week_user);
+//        //本周新增用户
+//        $this_week_user = $uSercice->todayAddVisits('week', 2);
+//        //上周新增用户
+//        $last_week_user = $uSercice->todayAddVisits('last week', 2);
+//        //新增用户周同比
+//        $user_week_ratio = $this->growth($this_week_user, $last_week_user);
         //所有用户
         $total_user = $uSercice->count(['time' => 'month']);
         $user = [
             'today' => $today_user,
             'yesterday' => $yesterday_user,
             'today_ratio' => $user_today_ratio,
-            'week' => $this_week_user,
-            'last_week' => $last_week_user,
-            'week_ratio' => $user_week_ratio,
+//            'week' => $this_week_user,
+//            'last_week' => $last_week_user,
+//            'week_ratio' => $user_week_ratio,
             'total' => $total_user . '人',
-            'date' => '日'
+            'date' => '日'
         ];
         $info = array_values(compact('sales', 'visits', 'order', 'user'));
         $info[0]['title'] = '销售额';

+ 0 - 4
crmeb/app/services/product/product/StoreCategoryServices.php

@@ -118,7 +118,6 @@ class StoreCategoryServices extends BaseServices
             throw new AdminException(100005);
         } else {
             $this->cacheDriver()->clear();
-            $this->cacheDriver()->set('category_version', uniqid());
         }
     }
 
@@ -206,7 +205,6 @@ class StoreCategoryServices extends BaseServices
         if (!$res) throw new AdminException(100006);
 
         $this->cacheDriver()->clear();
-        $this->cacheDriver()->set('category_version', uniqid());
 
         return (int)$res->id;
     }
@@ -246,7 +244,6 @@ class StoreCategoryServices extends BaseServices
         });
 
         $this->cacheDriver()->clear();
-        $this->cacheDriver()->set('category_version', uniqid());
     }
 
     /**
@@ -262,7 +259,6 @@ class StoreCategoryServices extends BaseServices
         if (!$res) throw new AdminException(100008);
 
         $this->cacheDriver()->clear();
-        $this->cacheDriver()->set('category_version', uniqid());
     }
 
     /**

+ 1 - 1
crmeb/app/services/user/UserAuthServices.php

@@ -50,7 +50,7 @@ class UserAuthServices extends BaseServices
         if ($token === 'undefined') {
             throw new AuthException(110002);
         }
-        if (!$token || !$tokenData = CacheService::get($md5Token, '', NULL, 'api'))
+        if (!$token || !$tokenData = CacheService::get($md5Token))
             throw new AuthException(110002);
 
         if (!is_array($tokenData) || empty($tokenData) || !isset($tokenData['uid'])) {

+ 1 - 0
crmeb/app/services/wechat/WechatQrcodeServices.php

@@ -49,6 +49,7 @@ class WechatQrcodeServices extends BaseServices
             $item['stop'] = $item['end_time'] ? $item['end_time'] > time() ? 1 : -1 : 0;
             $item['label_name'] = $userLabel->getColumn([['id', 'in', $item['label_id']]], 'label_name');
             $item['end_time'] = date('Y-m-d H:i:s', $item['end_time']);
+            $item['add_time'] = date('Y-m-d H:i:s', $item['add_time']);
         }
         $count = $this->dao->count($where);
         return compact('list', 'count');

+ 12 - 2
crmeb/public/install/crmeb.sql

@@ -26520,7 +26520,17 @@ INSERT INTO `eb_lang_code` (`id`, `type_id`, `code`, `remarks`, `lang_explain`,
 (24977, 7, '500028', '请填写邀请码', '초대 코드를 입력하십시오.', 1),
 (24978, 8, '500028', '请填写邀请码', 'Урилгын кодыг бөглөнө үү', 1),
 (24979, 9, '500028', '请填写邀请码', 'กรุณากรอกรหัสเชิญ', 1),
-(24980, 10, '500028', '请填写邀请码', 'Vui lòng điền mã mời', 1);
+(24980, 10, '500028', '请填写邀请码', 'Vui lòng điền mã mời', 1),
+(24981, 1, '500029', '金额最多两位小数', '金额最多两位小数', 1),
+(24982, 2, '500029', '金额最多两位小数', 'Amount Up to two decimal places', 1),
+(24983, 3, '500029', '金额最多两位小数', '金額最多兩位小數', 1),
+(24984, 4, '500029', '金额最多两位小数', 'Montant Jusquà deux décimales', 1),
+(24985, 5, '500029', '金额最多两位小数', 'Importo Fino a due decimali', 1),
+(24986, 6, '500029', '金额最多两位小数', '金額は小数点以下2桁まで', 1),
+(24987, 7, '500029', '金额最多两位小数', '양 소수점 이하 두 자리까지', 1),
+(24988, 8, '500029', '金额最多两位小数', 'Хэмжээ Хоёр аравтын бутархай газар хүртэл', 1),
+(24989, 9, '500029', '金额最多两位小数', 'จำนวนทศนิยมสูงสุดสองตำแหน่ง', 1),
+(24990, 10, '500029', '金额最多两位小数', 'Số tiền tối đa hai chữ số thập phân', 1);
 
 -- --------------------------------------------------------
 
@@ -33839,7 +33849,7 @@ INSERT INTO `eb_system_menus` (`id`, `pid`, `icon`, `menu_name`, `module`, `cont
 (26, 0, 'ios-people', '分销', 'admin', 'agent', '', '', '', '[]', 104, 1, 0, 1, '/agent', '', 1, 'user', 1, 'admin-agent', 0),
 (27, 0, 'ios-paper-plane', '营销', 'admin', 'marketing', '', '', '', '[]', 110, 1, 0, 1, '/marketing', '', 1, 'home', 1, 'admin-marketing', 0),
 (28, 26, '', '分销设置', 'admin', 'setting.system_config', '', '', '', '[]', 1, 1, 0, 1, '/setting/system_config_retail/2/9', '', 1, 'setting', 0, 'setting-system-config', 0),
-(29, 26, '', '分销员管理', 'admin', 'agent.agent_manage', 'index', '', '', '[]', 1, 1, 0, 1, '/agent/agent_manage/index', '', 1, 'user', 0, 'agent-agent-manage', 0),
+(29, 26, '', '分销员管理', 'admin', 'agent.agent_manage', 'index', '', '', '[]', 99, 1, 0, 1, '/agent/agent_manage/index', '', 1, 'user', 0, 'agent-agent-manage', 0),
 (30, 27, '', '优惠券', 'admin', 'marketing.store_coupon', '', '', '', '[]', 100, 1, 0, 1, '/marketing/store_coupon', '27', 1, 'marketing', 0, 'marketing-store_coupon-index', 0),
 (31, 27, '', '砍价管理', 'admin', 'marketing.store_bargain', '', '', '', '[]', 85, 1, 0, 1, '/marketing/store_bargain', '27', 1, 'marketing', 0, 'marketing-store_bargain-index', 0),
 (32, 27, '', '拼团管理', 'admin', 'marketing.store_combination', '', '', '', '[]', 80, 1, 0, 1, '/marketing/store_combination', '27', 1, 'marketing', 0, 'marketing-store_combination-index', 0),

+ 10 - 1
template/admin/src/components/main/components/header-notice/index.vue

@@ -16,6 +16,15 @@
     </Dropdown>
   </div>
 </template>
+<style scoped>
+.ivu-dropdown-item{
+  display: flex;
+  align-items: center;
+}
+.ivu-dropdown-item .iconImg{
+  margin-right: 10px;
+}
+</style>
 <style lang="less">
 .header-notice {
   margin-right: 30px;
@@ -36,7 +45,7 @@
   border-radius: 50%;
   color: #fff;
   font-size: 18px;
-  margin-right: 10px;
+  padding-right: 10px;
   vertical-align: middle;
 }
 .header-notice .ivu-dropdown {

+ 4 - 1
template/admin/src/components/main/components/side-menu/collapsed-menu.vue

@@ -93,7 +93,10 @@ export default {
   justify-content space-between
   width 100%
 }
+/deep/ .ivu-dropdown-rel {
+  width: 75px !important;
+}
 .drop-menu-a /deep/ .ivu-dropdown-rel {
-  min-width: 75px !important;
+  width: 75px !important;
 }
 </style>

+ 4 - 3
template/admin/src/main.js

@@ -199,7 +199,6 @@ new Vue({
       let menus = this.$store.state.menus.menusName;
       const menuSider = menus;
       const headerName = getHeaderName(to, menuSider);
-
       if (headerName !== null) {
         this.$store.commit('menu/setActivePath', path);
         const openNames = getSiderSubmenu(to, menuSider);
@@ -216,9 +215,11 @@ new Vue({
         this.$store.commit('menu/setSider', filterMenuSider[0]?.children || []);
       } else {
         //子路由给默认 如果你没有使用顶部菜单,则设置为默认的(一般为 home)名称即可
-        // this.$store.commit('menu/setHeaderName', 'home');
+        this.$store.commit('menu/setHeaderName', settings.routePre + '/home/');
+        if (to.name == 'home_index') {
+          this.$store.commit('menu/setSider', []);
+        }
         // 指定当前显示的侧边菜单
-        // this.$store.commit('menu/setSider', menuSider);
       }
 
       if (to.meta.kefu) {

+ 25 - 21
template/admin/src/pages/agent/agentManage.vue

@@ -81,11 +81,11 @@
               </a>
               <DropdownMenu slot="list">
                 <DropdownItem name="1">推广订单</DropdownItem>
-                <DropdownItem name="2">推广方式</DropdownItem>
-                <!--                                <DropdownItem name="3">修改上级推广人</DropdownItem>-->
-                <!--                                <DropdownItem name="4">清除上级推广人</DropdownItem>-->
-                <!--                                <DropdownItem name="5">取消推广资格</DropdownItem>-->
-                <DropdownItem name="5">赠送分销等级</DropdownItem>
+                <DropdownItem name="2">推广二维码</DropdownItem>
+                <DropdownItem name="3">修改上级推广人</DropdownItem>
+                <DropdownItem name="4">清除上级推广人</DropdownItem>
+                <DropdownItem name="5">取消推广资格</DropdownItem>
+                <DropdownItem name="6">修改分销等级</DropdownItem>
               </DropdownMenu>
             </Dropdown>
           </template>
@@ -104,7 +104,7 @@
     </Card>
     <!-- 推广人列表-->
     <promoters-list ref="promotersLists"></promoters-list>
-    <!-- 推广方式-->
+    <!-- 推广二维码-->
     <Modal v-model="modals" scrollable footer-hide closable title="推广二维码" :mask-closable="false" width="600">
       <div class="acea-row row-around">
         <div class="acea-row row-column-around row-between-wrapper">
@@ -367,21 +367,25 @@ export default {
     changeMenu(row, name, index) {
       switch (name) {
         case '1':
-          this.promoters(row, 'order');
+          this.promoters(row, 'order');//推广人订单
           break;
         case '2':
-          this.spreadQR(row);
+          this.spreadQR(row);//推广方式二维码
           break;
         case '3':
-          this.editS(row);
+          this.editS(row);//修改上级推广人
           break;
-        case '4':
-          this.del(row, '解除【 ' + row.nickname + ' 】的上级推广人', index);
-        case '5':
+        case '4'://清除上级推广人
+          this.del_parent(row, '清除【 ' + row.nickname + ' 】的上级推广人', index);
+          break;
+        case '5'://取消推广资格
+          this.del_agent(row, '取消【 ' + row.nickname + ' 】的推广资格', index);
+          break;
+        case '6'://修改推广等级
           this.$modalForm(membershipDataAddApi({ uid: row.uid }, '/agent/get_level_form')).then(() => this.getList());
           break;
         default:
-          this.del_open(row, '解除【 ' + row.nickname + ' 】的推广资格', index);
+
           break;
       }
     },
@@ -397,16 +401,16 @@ export default {
       this.formInline.spread_uid = e.uid;
       this.formInline.image = e.image;
     },
-    // 删除
-    del(row, tit, num) {
-      let delfromData = {
-        title: tit,
+    // 清除上级关系
+    del_parent(rows, titile, num) {
+      let delfromDatap = {
+        title: titile,
         num: num,
-        url: `agent/stair/delete_spread/${row.uid}`,
+        url: `agent/stair/delete_spread/${rows.uid}`,
         method: 'PUT',
         ids: '',
       };
-      this.$modalSure(delfromData)
+      this.$modalSure(delfromDatap)
         .then((res) => {
           this.$Message.success(res.msg);
           this.getList();
@@ -415,8 +419,8 @@ export default {
           this.$Message.error(res.msg);
         });
     },
-    // 删除
-    del_open(row, tit, num) {
+    // 取消自己推广资格
+    del_agent(row, tit, num) {
       let delfromData = {
         title: tit,
         num: num,

+ 2 - 2
template/admin/src/pages/cms/articleCategory/index.vue

@@ -36,9 +36,9 @@
           </Col>
         </Row>
       </Form>
-      <Divider dashed />
+      <!-- <Divider dashed /> -->
       <vxe-table
-        class="vxeTable"
+        class="vxeTable mt25"
         highlight-hover-row
         :loading="loading"
         header-row-class-name="false"

+ 1 - 5
template/admin/src/pages/finance/balance/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <Card :bordered="false" dis-hover class="ivu-mt">
+    <Card :bordered="false" dis-hover class="ivu-mt mb10">
       <Form
         ref="formValidate"
         :model="formValidate"
@@ -295,10 +295,6 @@ export default {
   margin: 3px 0;
 }
 
-.tabform {
-  margin-bottom: 10px;
-}
-
 .Refresh {
   font-size: 12px;
   color: #1890FF;

+ 1 - 2
template/admin/src/pages/finance/capitalFlow/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <Card :bordered="false" dis-hover class="ivu-mt">
+    <Card :bordered="false" dis-hover class="ivu-mt mb10">
       <Form
         ref="formValidate"
         :model="formValidate"
@@ -302,7 +302,6 @@ export default {
 }
 
 .tabform {
-  margin-bottom: 10px;
 }
 
 .Refresh {

+ 0 - 1
template/admin/src/pages/finance/commission/index.vue

@@ -54,7 +54,6 @@
         ref="table"
         :columns="columns"
         :data="tabList"
-        class="mt25"
         :loading="loading"
         no-data-text="暂无数据"
         no-filtered-data-text="暂无筛选结果"

+ 8 - 6
template/admin/src/pages/index/components/baseInfo.vue

@@ -8,9 +8,10 @@
         <Tag slot="extra" color="green">{{ item.date }}</Tag>
         <div>
           <!--<Numeral :value="item.yesterday" style=""/>-->
-          <div class="number">{{ item.yesterday }}</div>
+          <div class="number">{{ item.today }}</div>
           <div class="ivu-pt-8" style="height: 42px">
-            <span style="display: inline-block" class="ivu-mr">
+            <span>昨日 {{ item.yesterday }}</span>
+            <span class="ivu-mr">
               <!--日同比 <Trend :flag="Number(item.today_ratio)>=0?'up':'down'">{{Number(item.today_ratio)}}%</Trend>-->
               日环比 {{ Number(item.today_ratio) }}%
               <Icon
@@ -19,15 +20,15 @@
                 :class="Number(item.today_ratio) >= 0 ? ' ' : 'on'"
               />
             </span>
-            <span style="display: inline-block">
-              <!--周同比 <Trend :flag="Number(item.week_ratio)>=0?'up':'down'">{{Number(item.week_ratio)}}%</Trend>-->
+            <!-- <span style="display: inline-block">
+              周同比 <Trend :flag="Number(item.week_ratio)>=0?'up':'down'">{{Number(item.week_ratio)}}%</Trend>
               周环比 {{ Number(item.week_ratio) }}%
               <Icon
                 :type="Number(item.week_ratio) >= 0 ? 'md-arrow-dropup' : 'md-arrow-dropdown'"
                 class="iconColor"
                 :class="Number(item.week_ratio) >= 0 ? ' ' : 'on'"
               />
-            </span>
+            </span> -->
           </div>
           <Divider style="margin: 8px 0" />
           <div>
@@ -95,7 +96,8 @@ export default {
 }
 
 .ivu-mr {
-  margin-right: 16px !important;
+  display: inline-block;
+  margin-left: 16px !important;
 }
 
 .ivu-text-right {

+ 1 - 6
template/admin/src/pages/marketing/point_record/index.vue

@@ -1,12 +1,11 @@
 <template>
   <div>
-    <Card :bordered="false" dis-hover class="ivu-mt">
+    <Card :bordered="false" dis-hover class="ivu-mt mb10">
       <Form
         ref="formValidate"
         :model="formValidate"
         :label-width="labelWidth"
         :label-position="labelPosition"
-        class="tabform"
         @submit.native.prevent
       >
         <Row :gutter="24" type="flex">
@@ -296,10 +295,6 @@ export default {
   margin: 3px 0;
 }
 
-.tabform {
-  margin-bottom: 10px;
-}
-
 .Refresh {
   font-size: 12px;
   color: #1890FF;

+ 1 - 1
template/admin/src/pages/marketing/point_statistic/index.vue

@@ -374,6 +374,6 @@ export default {
 .num {
   white-space: nowrap;
   margin: 0 10px;
-  width: 17px;
+  width: 30px;
 }
 </style>

+ 0 - 1
template/admin/src/pages/marketing/storeBargain/bargainList.vue

@@ -45,7 +45,6 @@
       <Table
         :columns="columns1"
         :data="tableList"
-        class="mt25"
         :loading="loading"
         highlight-row
         no-userFrom-text="暂无数据"

+ 1 - 1
template/admin/src/pages/marketing/storeBargain/index.vue

@@ -194,7 +194,7 @@ export default {
           title: '操作',
           slot: 'action',
           fixed: 'right',
-          minWidth: 130,
+          minWidth: 160,
         },
       ],
       tableList: [],

+ 0 - 1
template/admin/src/pages/marketing/storeCombination/combinaList.vue

@@ -46,7 +46,6 @@
       <Table
         :columns="columns1"
         :data="tableList"
-        class="mt25"
         :loading="loading"
         highlight-row
         no-userFrom-text="暂无数据"

+ 1 - 1
template/admin/src/pages/marketing/storeIntegralOrder/components/tableList.vue

@@ -12,7 +12,7 @@
       @on-select-all="selectAll"
       @on-select-all-cancel="selectAll"
       @on-select-cancel="onSelectCancel"
-      class="orderData mt25"
+      class="orderData"
     >
       <template slot-scope="{ row, index }" slot="order_id">
         <span v-text="row.order_id" style="display: block"></span>

+ 0 - 1
template/admin/src/pages/order/invoice/index.vue

@@ -78,7 +78,6 @@
         :columns="columns"
         :data="orderList"
         ref="table"
-        class="mt25"
         :loading="loading"
         highlight-row
         no-userFrom-text="暂无数据"

+ 2 - 1
template/admin/src/pages/order/orderList/index.vue

@@ -192,8 +192,9 @@ export default {
   margin-bottom: 0px !important;
 }
 
-.i-layout-page-header /deep/ .ivu-badge-count-alone {
+/deep/ .ivu-badge-count-alone {
   top: -7px;
+  right: 2px;
 }
 
 .i-layout-page-header /deep/ .ivu-badge-count {

+ 3 - 2
template/admin/src/pages/order/refund/index.vue

@@ -53,7 +53,6 @@
         :columns="thead"
         :data="tbody"
         ref="table"
-        class="mt25"
         :loading="loading"
         highlight-row
         no-userFrom-text="暂无数据"
@@ -668,7 +667,9 @@ export default {
 .code {
   position: relative;
 }
-
+.ivu-form-item{
+  
+}
 .QRpic {
   width: 180px;
   height: 259px;

+ 1 - 1
template/admin/src/pages/product/productList/index.vue

@@ -73,7 +73,7 @@
         ref="table"
         :columns="artFrom.type !== '1' && artFrom.type !== '2' ? columns2 : columns"
         :data="tableList"
-        class="ivu-mt"
+        class="ivu-mt mt25"
         :loading="loading"
         highlight-row
         @on-select="handleSelectRow"

+ 1 - 1
template/admin/src/pages/product/productReply/index.vue

@@ -76,7 +76,7 @@
         ref="table"
         :columns="columns"
         :data="tableList"
-        class="ivu-mt"
+        class="ivu-mt mt25"
         :loading="loading"
         @on-sort-change="sortMethod"
         no-data-text="暂无数据"

+ 28 - 7
template/admin/src/pages/setting/membershipLevel/index.vue

@@ -26,7 +26,6 @@
         :columns="columns1"
         :data="tabList"
         ref="table"
-        class="mt25"
         :loading="loading"
         highlight-row
         no-userFrom-text="暂无数据"
@@ -39,6 +38,18 @@
             </div>
           </viewer>
         </template>
+        <template slot-scope="{ row }" slot="one_brokerage">
+          <span>{{row.one_brokerage}}%</span>
+        </template>
+        <template slot-scope="{ row }" slot="one_brokerage_ratio">
+           <span>{{row.one_brokerage_ratio}}%</span>
+        </template>
+        <template slot-scope="{ row }" slot="two_brokerage">
+           <span>{{row.two_brokerage}}%</span>
+        </template>
+        <template slot-scope="{ row }" slot="two_brokerage_ratio">
+           <span>{{row.two_brokerage_ratio}}%</span>
+        </template>
         <template slot-scope="{ row }" slot="status">
           <i-switch
             v-model="row.status"
@@ -192,7 +203,7 @@ export default {
         {
           slot: 'image',
           minWidth: 35,
-          title: '图',
+          title: '背景图',
         },
         {
           key: 'name',
@@ -205,14 +216,24 @@ export default {
           title: '等级',
         },
         {
-          key: 'one_brokerage',
+          slot: 'one_brokerage',
           minWidth: 35,
-          title: '一级返佣上浮比例(%)',
+          title: '一级上浮比例',
         },
         {
-          key: 'two_brokerage',
+          slot: 'one_brokerage_ratio',
           minWidth: 35,
-          title: '二级返佣上浮比例(%)',
+          title: '一级分佣比例(上浮后)',
+        },
+        {
+          slot: 'two_brokerage',
+          minWidth: 35,
+          title: '二级上浮比例',
+        },
+        {
+          slot: 'two_brokerage_ratio',
+          minWidth: 35,
+          title: '二级分佣比例(上浮后)',
         },
         {
           slot: 'status',
@@ -220,7 +241,6 @@ export default {
           title: '是否显示',
         },
         {
-          fixed: 'right',
           minWidth: 120,
           slot: 'action',
           title: '操作',
@@ -525,6 +545,7 @@ export default {
 
 .headers {
   background-color: #fff;
+  margin-bottom: 20px;
 }
 
 /deep/ .ivu-modal-mask {

+ 2 - 2
template/admin/src/pages/setting/multiLanguage/country.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <Card :bordered="false" dis-hover class="ivu-mt">
+    <Card :bordered="false" dis-hover class="ivu-mt mb10">
       <Form
         ref="formValidate"
         :model="formValidate"
@@ -37,7 +37,7 @@
         ref="table"
         :columns="columns"
         :data="tabList"
-        class="ivu-mt"
+        class="ivu-mt mt25"
         :loading="loading"
         no-data-text="暂无数据"
         no-filtered-data-text="暂无筛选结果"

+ 3 - 3
template/admin/src/pages/setting/multiLanguage/langList.vue

@@ -55,9 +55,9 @@
       </template>
     </Alert>
     <Card :bordered="false" dis-hover>
-      <Row type="flex">
+      <Row type="flex" class="mb15">
         <Col>
-          <Button type="primary" icon="md-add" @click="add">添加语</Button>
+          <Button type="primary" icon="md-add" @click="add">添加语</Button>
         </Col>
       </Row>
       <Table
@@ -89,7 +89,7 @@
     <Modal
       v-model="addlangModal"
       width="750"
-      title="添加语言"
+      title="添加需要翻译的语句"
       :loading="FormLoading"
       @on-ok="ok"
       @on-cancel="addlangModal = false"

+ 1 - 3
template/admin/src/pages/system/crontab/index.vue

@@ -4,7 +4,7 @@
       <template slot="desc">
         启动定时任务两种方式:<br />
         1、使用命令启动:php think timer start --d<br />
-        2、使用接口触发定时任务,接口地址 https://您的域名/api/crontab/run
+        2、使用接口触发定时任务,建议每分钟调用一次,接口地址 https://您的域名/api/crontab/run
       </template>
     </Alert>
     <Button type="primary" @click="addTask">添加定时任务</Button>
@@ -20,7 +20,6 @@
       </template>
       <template slot-scope="{ row }" slot="action">
         <a @click="edit(row.id)">编辑</a>
-
         <Divider type="vertical" />
         <a @click="handleDelete(row, '删除秒杀商品', index)">删除</a>
       </template>
@@ -76,7 +75,6 @@ export default {
           title: '操作',
           slot: 'action',
           align: 'center',
-          fixed: 'right',
           minWidth: 100,
         },
       ],

+ 0 - 1
template/admin/src/pages/user/grade/record/index.vue

@@ -61,7 +61,6 @@
         :columns="thead"
         :data="tbody"
         ref="table"
-        class="mt25"
         :loading="loading"
         highlight-row
         no-userFrom-text="暂无数据"

+ 14 - 5
template/admin/src/pages/user/level/index.vue

@@ -101,8 +101,8 @@
           </i-switch>
         </template>
         <template slot-scope="{ row, index }" slot="action">
-          <a @click="edit(row)">编辑</a>
-          <Divider type="vertical" />
+<!--          <a @click="edit(row)">编辑</a>-->
+<!--          <Divider type="vertical" />-->
           <template>
             <Dropdown @on-click="changeMenu(row, $event, index)" :transfer="true">
               <a href="javascript:void(0)">
@@ -110,7 +110,8 @@
                 <Icon type="ios-arrow-down"></Icon>
               </a>
               <DropdownMenu slot="list">
-                <!--                                <DropdownItem name="1">等级任务</DropdownItem>-->
+<!--                                                <DropdownItem name="1">等级任务</DropdownItem>-->
+                <DropdownItem name="3">编辑等级</DropdownItem>
                 <DropdownItem name="2">删除等级</DropdownItem>
               </DropdownMenu>
             </Dropdown>
@@ -181,6 +182,11 @@ export default {
           key: 'discount',
           minWidth: 100,
         },
+        {
+          title: '经验值要求',
+          key: 'exp_num',
+          minWidth: 100,
+        },
         // {
         //     title: '有效时间',
         //     key: 'valid_date',
@@ -199,7 +205,7 @@ export default {
         {
           title: '是否显示',
           slot: 'is_shows',
-          minWidth: 120,
+          minWidth: 80,
         },
         // {
         //   title: '等级说明',
@@ -210,7 +216,7 @@ export default {
           title: '操作',
           slot: 'action',
           fixed: 'right',
-          minWidth: 120,
+          minWidth: 80,
         },
       ],
       levelFrom: {
@@ -254,6 +260,9 @@ export default {
           this.$refs.tasks.modals = true;
           this.$refs.tasks.getList();
           break;
+        case '3':
+          this.edit(row);
+          break;
         default:
           this.del(row, '删除等级', num);
       }

+ 18 - 10
template/admin/src/pages/user/list/handle/userEdit.vue

@@ -1,10 +1,10 @@
 <template>
   <div>
-    <Form ref="formItem" :model="formItem" :label-width="100" @submit.native.prevent>
+    <Form ref="formItem" :rules="ruleValidate" :model="formItem" :label-width="100" @submit.native.prevent>
       <FormItem label="编号:" v-if="formItem.uid">
         <Input class="form-sty" disabled v-model="formItem.uid" placeholder="请输入编号" style="width: 80%"></Input>
       </FormItem>
-      <FormItem label="真实姓名:">
+      <FormItem label="真实姓名:" prop="real_name">
         <Input
           class="form-sty"
           v-model.trim="formItem.real_name"
@@ -12,7 +12,7 @@
           style="width: 80%"
         ></Input>
       </FormItem>
-      <FormItem label="手机号码:">
+      <FormItem label="手机号码:" prop="phone">
         <Input class="form-sty" v-model="formItem.phone" placeholder="请输入手机号码" style="width: 80%"></Input>
       </FormItem>
       <FormItem label="生日:">
@@ -35,21 +35,21 @@
       <FormItem label="用户备注:">
         <Input class="form-sty" v-model="formItem.mark" placeholder="请输入用户备注" style="width: 80%"></Input>
       </FormItem>
-      <FormItem label="登录密码:">
+      <FormItem label="登录密码:" prop="pwd">
         <Input
           class="form-sty"
           type="password"
           v-model="formItem.pwd"
-          placeholder="请输入登录密码"
+          placeholder="请输入登录密码(修改用户可不填写,不填写不修改原密码)"
           style="width: 80%"
         ></Input>
       </FormItem>
-      <FormItem label="确认密码:">
+      <FormItem label="确认密码:" prop="true_pwd">
         <Input
           class="form-sty"
           type="password"
           v-model="formItem.true_pwd"
-          placeholder="请输入确认密码"
+          placeholder="请输入确认密码(修改用户可不填写,不填写不修改原密码)"
           style="width: 80%"
         ></Input>
       </FormItem>
@@ -60,7 +60,7 @@
         </Select>
       </FormItem>
       <FormItem label="用户分组:">
-        <Select v-model="formItem.group_id"  class="form-sty" clearable>
+        <Select v-model="formItem.group_id" class="form-sty" clearable>
           <Option v-for="(item, index) in infoData.groupInfo" :key="index" :value="item.id">{{
             item.group_name
           }}</Option>
@@ -180,6 +180,12 @@ export default {
         labelInfo: [],
         levelInfo: [],
       },
+      ruleValidate: {
+        real_name: [{ required: true, message: '请输入真实姓名', trigger: 'blur' }],
+        phone: [{ required: true, message: '请输入手机号码', trigger: 'blur' }],
+        pwd: [{ required: true, message: '请输入登录密码', trigger: 'blur' }],
+        true_pwd: [{ required: true, message: '请输入确认密码', trigger: 'blur' }],
+      },
       dataLabel: [],
     };
   },
@@ -188,7 +194,7 @@ export default {
     this.$set(this.infoData, 'levelInfo', this.userData.levelInfo);
     this.$set(this.infoData, 'labelInfo', this.userData.labelInfo);
     let arr = Object.keys(this.formItem);
-    if (this.userData.userInfo.uid) {
+    if (this.userData.userInfo) {
       arr.map((i) => {
         this.formItem[i] = this.userData.userInfo[i];
       });
@@ -196,6 +202,8 @@ export default {
       if (this.formItem.label_id.length) {
         this.dataLabel = this.formItem.label_id;
       }
+    } else {
+      this.reset();
     }
 
     // this.formItem = this.userData.userInfo;
@@ -233,7 +241,7 @@ export default {
     },
     reset() {
       this.formItem = {
-        uid: 0,
+        uid: '',
         real_name: '',
         phone: '',
         birthday: '',

+ 5 - 12
template/uni-app/pages/annex/offline_pay/index.vue

@@ -7,7 +7,7 @@
 					{{$t(`¥`)}}
 					<input v-model.number="money" class="input" name="money" type="digit" @input="inputChange" placeholder="0.00" />
 				</view>
-				<view v-if="payPrice" class="discount">{{$t(`会员优惠价`)}}:{{$t(`¥`)}}{{ payPrice }}</view>
+				<view v-if="payPrice && show" class="discount">{{$t(`会员优惠价`)}}:{{$t(`¥`)}}{{ payPrice }}</view>
 			</view>
 		</view>
 		<view class="radio-section">
@@ -62,18 +62,10 @@
 				now_money: 0,
 				isWeixin: false,
 				site_name: '',
-				isCommitted: false
+				isCommitted: false,
+				show: false
 			};
 		},
-		watch: {
-			money(newValue, oldValue) {
-				if (newValue && typeof newValue === 'number') {
-					this.checkPrice();
-				} else {
-					this.payPrice = '';
-				}
-			}
-		},
 		computed: mapGetters(['isLogin']),
 		onLoad(options) {
 			if (!this.isLogin) {
@@ -104,7 +96,7 @@
 				e.target.value = (e.target.value.match(/^\d*(.?\d{0,2})/g)[0]) || ""
 				this.$nextTick(() => {
 					this.money = e.target.value
-					this.checkPrice()
+					this.checkPrice();
 				})
 			},
 			getPayType() {
@@ -169,6 +161,7 @@
 					})
 					.then(res => {
 						this.payPrice = res.data.pay_price;
+						this.show = res.data.show
 					})
 					.catch(err => {
 						uni.showToast({

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 574 - 571
template/uni-app/pages/annex/special/index.vue


+ 11 - 8
template/uni-app/pages/extension/customer_list/chat.vue

@@ -306,11 +306,11 @@
 			});
 			// 超时了
 			uni.$once('timeout', () => {
-				uni.showLoading({
-					title: '重连中',
-					mask: true
+				uni.showLoading({
+					title: '重连中',
+					mask: true
 				})
-				this.chatList = []
+				this.chatList = []
 				initSocket()
 			});
 			// 链接成功
@@ -456,8 +456,11 @@
 						this.chatList = [...res.data.serviceList, ...this.chatList];
 
 						this.$nextTick(() => {
-							this.setPageScrollTo(selector);
-							this.isScroll = res.data.serviceList.length >= this.limit;
+							if (this.chatList.length) {
+								this.setPageScrollTo(selector);
+								this.isScroll = res.data.serviceList.length >= this.limit;
+							}
+
 						});
 						this.$socket.send({
 							data: {
@@ -921,14 +924,14 @@
 		font-size: 28rpx;
 		color: #333333;
 		height: 85rpx;
-		font-weight: 800;
+		font-weight: 800;
 		line-height: 40rpx;
 		overflow: hidden;
 		text-overflow: ellipsis;
 		display: -webkit-box;
 		-webkit-line-clamp: 2;
 		-webkit-box-orient: vertical;
-		text-align: left !important;
+		text-align: left !important;
 	}
 
 	.broadcast_details_pic {