Просмотр исходного кода

Merge remote-tracking branch 'origin/v5.1.0dev' into v5.1.0dev

evoxwht 2 лет назад
Родитель
Сommit
9c47a66b3b
100 измененных файлов с 7290 добавлено и 6978 удалено
  1. 13 0
      crmeb/app/adminapi/controller/v1/file/SystemAttachment.php
  2. 6 2
      crmeb/app/adminapi/controller/v1/setting/SystemAdmin.php
  3. 3 1
      crmeb/app/adminapi/route/file.php
  4. 1 1
      crmeb/app/adminapi/route/product.php
  5. 80 1
      crmeb/app/api/controller/v1/admin/StoreOrderController.php
  6. 1 0
      crmeb/app/api/route/v1.php
  7. 1 1
      crmeb/app/services/activity/coupon/StoreCouponIssueServices.php
  8. 1 1
      crmeb/app/services/order/StoreOrderDeliveryServices.php
  9. 3 3
      crmeb/app/services/order/StoreOrderRefundServices.php
  10. 4 5
      crmeb/app/services/order/StoreOrderServices.php
  11. 2 2
      crmeb/app/services/other/export/ExportServices.php
  12. 6 0
      crmeb/app/services/product/product/StoreProductServices.php
  13. 1 0
      crmeb/app/services/user/UserExtractServices.php
  14. 1 1
      crmeb/crmeb/services/printer/storage/FeiEYun.php
  15. 1 1
      crmeb/crmeb/services/printer/storage/YiLianYun.php
  16. 1 103
      crmeb/crmeb/services/serve/storage/Crmeb.php
  17. 2 1
      crmeb/crmeb/services/upload/storage/Jdoss.php
  18. 1 1
      crmeb/public/admin/index.html
  19. 1 1
      crmeb/public/admin/system_static/css/app.6a93fc63.css
  20. 2 0
      crmeb/public/admin/system_static/css/app.b032f3d2.css
  21. 0 1
      crmeb/public/admin/system_static/css/chunk-150a8868.d466a55c.css
  22. 1 1
      crmeb/public/admin/system_static/css/chunk-261e16c7.8a95a507.css
  23. 1 0
      crmeb/public/admin/system_static/css/chunk-1e7267e4.0cf8926e.css
  24. 1 0
      crmeb/public/admin/system_static/css/chunk-1fa252ba.ab315b92.css
  25. 0 1
      crmeb/public/admin/system_static/css/chunk-3450c950.616298b8.css
  26. 0 0
      crmeb/public/admin/system_static/css/chunk-3c665bcd.8bdf1b85.css
  27. 1 0
      crmeb/public/admin/system_static/css/chunk-46c8de8a.5ce61596.css
  28. 1 0
      crmeb/public/admin/system_static/css/chunk-617c32fe.a3ac02b9.css
  29. 1 1
      crmeb/public/admin/system_static/css/chunk-4e89473d.ed7ee714.css
  30. 1 0
      crmeb/public/admin/system_static/css/chunk-906b1e4a.1858985a.css
  31. 0 1
      crmeb/public/admin/system_static/css/chunk-b1f6b762.3d0bda18.css
  32. 1 0
      crmeb/public/admin/system_static/css/chunk-c0732de6.1690a640.css
  33. 1 1
      crmeb/public/admin/system_static/css/chunk-64e5d11e.e07cc7c4.css
  34. 1 0
      crmeb/public/admin/system_static/css/chunk-fb10e656.dbbbf26c.css
  35. 0 1
      crmeb/public/admin/system_static/js/app.21de0209.js
  36. 1 0
      crmeb/public/admin/system_static/js/app.c0c892c1.js
  37. 1 0
      crmeb/public/admin/system_static/js/app.ca17e545.js
  38. 0 1
      crmeb/public/admin/system_static/js/chunk-150a8868.5ac073d4.js
  39. 1 0
      crmeb/public/admin/system_static/js/chunk-1a21d31b.0a527259.js
  40. 1 0
      crmeb/public/admin/system_static/js/chunk-1e7267e4.1911626f.js
  41. 53 0
      crmeb/public/admin/system_static/js/chunk-1fa252ba.6fbe4b2b.js
  42. 0 1
      crmeb/public/admin/system_static/js/chunk-261e16c7.c6c3fe3e.js
  43. 0 53
      crmeb/public/admin/system_static/js/chunk-3450c950.203dc6f2.js
  44. 1 0
      crmeb/public/admin/system_static/js/chunk-3c665bcd.8c2d8ce2.js
  45. 1 0
      crmeb/public/admin/system_static/js/chunk-46c8de8a.5b5b15cf.js
  46. 0 1
      crmeb/public/admin/system_static/js/chunk-4e89473d.ec62273e.js
  47. 1 0
      crmeb/public/admin/system_static/js/chunk-617c32fe.7cb21ae6.js
  48. 0 1
      crmeb/public/admin/system_static/js/chunk-64e5d11e.41b12d39.js
  49. 0 1
      crmeb/public/admin/system_static/js/chunk-656f65e6.be038fff.js
  50. 1 0
      crmeb/public/admin/system_static/js/chunk-82de29c2.eeec46f6.js
  51. 1 0
      crmeb/public/admin/system_static/js/chunk-8f947984.0416e99c.js
  52. 53 0
      crmeb/public/admin/system_static/js/chunk-906b1e4a.dd045212.js
  53. 0 1
      crmeb/public/admin/system_static/js/chunk-b1f6b762.c3807b48.js
  54. 1 0
      crmeb/public/admin/system_static/js/chunk-c0732de6.b558fd0f.js
  55. 1 0
      crmeb/public/admin/system_static/js/chunk-f2b829c4.33cf7dd8.js
  56. 1 0
      crmeb/public/admin/system_static/js/chunk-fb10e656.d06711d1.js
  57. 1 0
      crmeb/route/route.php
  58. 11 1
      template/admin/src/api/uploadPictures.js
  59. 14 9
      template/admin/src/components/linkaddress/index.vue
  60. 63 25
      template/admin/src/components/uploadImg/index.vue
  61. 1 0
      template/admin/src/layout/navBars/breadcrumb/userNews.vue
  62. 75 33
      template/admin/src/pages/app/upload/index.vue
  63. 73 66
      template/admin/src/pages/notify/smsConfig/index.vue
  64. 1 0
      template/admin/src/pages/order/orderList/components/tableList.vue
  65. 35 21
      template/admin/src/pages/order/orderList/handle/orderSend.vue
  66. 2 10
      template/admin/src/pages/product/productAdd/index.vue
  67. 3 3
      template/admin/src/pages/product/productAdd/taoBao.vue
  68. 2 2
      template/admin/src/pages/product/productList/index.vue
  69. 1 1
      template/admin/src/pages/product/productList/taoBao.vue
  70. 3 6
      template/admin/src/pages/setting/user/index.vue
  71. 42 33
      template/uni-app/App.vue
  72. 7 0
      template/uni-app/api/order.js
  73. 10 1
      template/uni-app/api/public.js
  74. 0 5
      template/uni-app/components/easy-loadimage/easy-loadimage.vue
  75. 0 3
      template/uni-app/components/payment/index.vue
  76. 4 0
      template/uni-app/config/app.js
  77. 0 17
      template/uni-app/libs/login.js
  78. 1 2
      template/uni-app/mixins/sharePoster.js
  79. 0 1
      template/uni-app/pages/activity/goods_combination_details/index.vue
  80. 0 1
      template/uni-app/pages/activity/presell/index.vue
  81. 0 1
      template/uni-app/pages/activity/presell_details/index.vue
  82. 5803 5656
      template/uni-app/pages/admin/components/ucharts/ucharts.js
  83. 0 2
      template/uni-app/pages/admin/custom_date/index.vue
  84. 1 1
      template/uni-app/pages/admin/orderDetail/index.vue
  85. 0 1
      template/uni-app/pages/admin/statistics/index.vue
  86. 0 1
      template/uni-app/pages/annex/components/verify/verifyPoint/verifyPoint.vue
  87. 0 2
      template/uni-app/pages/annex/components/verify/verifySlider/verifySliderPc.vue
  88. 0 1
      template/uni-app/pages/annex/web_view/index.vue
  89. 6 5
      template/uni-app/pages/goods/cashier/index.vue
  90. 7 3
      template/uni-app/pages/goods/goods_logistics/index.vue
  91. 0 1
      template/uni-app/pages/goods/lottery/grids/record.vue
  92. 1 1
      template/uni-app/pages/goods/order_confirm/index.vue
  93. 0 2
      template/uni-app/pages/goods/order_details/index.vue
  94. 1 1
      template/uni-app/pages/goods_cate/goods_cate1.vue
  95. 0 2
      template/uni-app/pages/goods_cate/goods_cate3.vue
  96. 1 3
      template/uni-app/pages/goods_details/index.vue
  97. 0 1
      template/uni-app/pages/index/index.vue
  98. 0 1
      template/uni-app/pages/index/visualization/index.vue
  99. 862 862
      template/uni-app/pages/points_mall/integral_order_details.vue
  100. 0 0
      template/uni-app/pages/users/components/verify/verifyPoint/verifyPoint.vue

+ 13 - 0
crmeb/app/adminapi/controller/v1/file/SystemAttachment.php

@@ -151,6 +151,19 @@ class SystemAttachment extends AuthController
         return app('json')->success(['url' => $url]);
     }
 
+    /**
+     * 删除二维码
+     * @return \think\Response
+     * @author 等风来
+     * @email 136327134@qq.com
+     * @date 2023/6/26
+     */
+    public function removeUploadQrcode()
+    {
+        $this->service->cacheDriver()->delete('scan_upload');
+        return app('json')->success();
+    }
+
     /**
      * 获取扫码上传的图片数据
      * @param $scan_token

+ 6 - 2
crmeb/app/adminapi/controller/v1/setting/SystemAdmin.php

@@ -169,9 +169,13 @@ class SystemAdmin extends AuthController
             ['new_pwd', ''],
             ['conf_pwd', ''],
         ]);
-        if (!preg_match('/^(?![^a-zA-Z]+$)(?!\D+$).{6,}$/', $data['new_pwd'])) {
-            return app('json')->fail(400183);
+
+        if ($data['pwd']) {
+            if (!preg_match('/^(?![^a-zA-Z]+$)(?!\D+$).{6,}$/', $data['new_pwd'])) {
+                return app('json')->fail(400183);
+            }
         }
+
         if ($this->services->updateAdmin($this->adminId, $data))
             return app('json')->success(100001);
         else

+ 3 - 1
crmeb/app/adminapi/route/file.php

@@ -36,7 +36,7 @@ Route::group('file', function () {
             'update' => '修改附件分类管理',
             'delete' => '删除附件分类管理'
         ],
-        
+
     ]);
     //获取上传类型
     Route::get('upload_type', 'v1.file.SystemAttachment/uploadType')->option(['real_name' => '上传类型']);
@@ -45,6 +45,8 @@ Route::group('file', function () {
 
     //获取扫码上传页面链接以及参数
     Route::get('scan_upload/qrcode', 'v1.file.SystemAttachment/scanUploadQrcode')->option(['real_name' => '扫码上传页面链接']);
+    //删除扫码上传token
+    Route::delete('scan_upload/qrcode', 'v1.file.SystemAttachment/removeUploadQrcode')->option(['real_name' => '删除扫码上传页面链接']);
     //获取扫码上传的图片数据
     Route::get('scan_upload/image/:scan_token', 'v1.file.SystemAttachment/scanUploadImage')->option(['real_name' => '获取扫码上传的图片数据']);
     //网络图片上传

+ 1 - 1
crmeb/app/adminapi/route/product.php

@@ -52,7 +52,7 @@ Route::group('product', function () {
         //修改商品状态
         Route::put('product/set_show/:id/:is_show', 'v1.product.StoreProduct/set_show')->option(['real_name' => '修改商品状态']);
         //商品快速编辑
-        Route::put('product/set_product/:id', 'v1.product.StoreProduct/set_product')->option(['real_name' => '商品快速编辑']);
+//        Route::put('product/set_product/:id', 'v1.product.StoreProduct/set_product')->option(['real_name' => '商品快速编辑']);
         //设置批量商品上架
         Route::put('product/product_show', 'v1.product.StoreProduct/product_show')->option(['real_name' => '设置批量商品上架']);
         //设置批量商品下架

+ 80 - 1
crmeb/app/api/controller/v1/admin/StoreOrderController.php

@@ -46,6 +46,84 @@ class StoreOrderController
         $this->service = $services;
     }
 
+
+    /**
+     * 订单 查看物流
+     * @param StoreOrderCartInfoServices $services
+     * @param ExpressServices $expressServices
+     * @param $uni
+     * @param string $type
+     * @return mixed
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public function express(StoreOrderServices $orderServices, StoreOrderCartInfoServices $services, ExpressServices $expressServices, $uni, $type = '')
+    {
+        if ($type == 'refund') {
+            /** @var StoreOrderRefundServices $refundService */
+            $refundService = app()->make(StoreOrderRefundServices::class);
+            $order = $refundService->refundDetail($uni);
+            $express = $order['refund_express'];
+            $cacheName = $uni . $express;
+            $orderInfo = [];
+            $info = [];
+            $cartNew = [];
+            foreach ($order['cart_info'] as $k => $cart) {
+                $cartNew['cart_num'] = $cart['cart_num'];
+                $cartNew['truePrice'] = $cart['truePrice'];
+                $cartNew['postage_price'] = $cart['postage_price'];
+                $cartNew['productInfo']['image'] = $cart['productInfo']['image'];
+                $cartNew['productInfo']['store_name'] = $cart['productInfo']['store_name'];
+                $cartNew['productInfo']['unit_name'] = $cart['productInfo']['unit_name'] ?? '';
+                array_push($info, $cartNew);
+                unset($cart);
+            }
+            $orderInfo['cartInfo'] = $info;
+            $orderInfo['delivery_id'] = $express;
+            $orderInfo['delivery_name'] = $order['refund_express_name'];
+            $orderInfo['delivery_code'] = '';
+        } else {
+            if (!$uni || !($order = $orderServices->getUserOrderDetail($uni, 0, []))) {
+                return app('json')->fail(410173);
+            }
+            if ($type != 'refund' && ($order['delivery_type'] != 'express' || !$order['delivery_id'])) {
+                return app('json')->fail(410206);
+            }
+            $express = $type == 'refund' ? $order['refund_express'] : $order['delivery_id'];
+            $cacheName = $uni . $express;
+            $orderInfo = [];
+            $cartInfo = $services->getCartColunm(['oid' => $order['id']], 'cart_info', 'unique');
+            $info = [];
+            $cartNew = [];
+            foreach ($cartInfo as $k => $cart) {
+                $cart = json_decode($cart, true);
+                $cartNew['cart_num'] = $cart['cart_num'];
+                $cartNew['truePrice'] = $cart['truePrice'];
+                $cartNew['postage_price'] = $cart['postage_price'];
+                $cartNew['productInfo']['image'] = $cart['productInfo']['image'];
+                $cartNew['productInfo']['store_name'] = $cart['productInfo']['store_name'];
+                $cartNew['productInfo']['unit_name'] = $cart['productInfo']['unit_name'] ?? '';
+                array_push($info, $cartNew);
+                unset($cart);
+            }
+            $orderInfo['delivery_id'] = $express;
+            $orderInfo['delivery_name'] = $type == 'refund' ? '用户退回' : $order['delivery_name'];;
+            $orderInfo['delivery_code'] = $type == 'refund' ? '' : $order['delivery_code'];
+            $orderInfo['delivery_type'] = $order['delivery_type'];
+            $orderInfo['user_address'] = $order['user_address'];
+            $orderInfo['user_mark'] = $order['mark'];
+            $orderInfo['cartInfo'] = $info;
+        }
+        return app('json')->success([
+            'order' => $orderInfo,
+            'express' => [
+                'result' => ['list' => $expressServices->query($cacheName, $orderInfo['delivery_id'], $orderInfo['delivery_code'], $order['user_phone'])
+                ]
+            ]
+        ]);
+    }
+
     /**
      * 订单数据统计
      * @param StoreOrderServices $services
@@ -163,7 +241,8 @@ class StoreOrderController
             ['sh_delivery_id', ''],//送货人电话
             ['sh_delivery_uid', ''],//送货人ID
 
-            ['fictitious_content', '']//虚拟发货内容
+            ['fictitious_content', ''],//虚拟发货内容
+            ['pickup_time', []]
         ]);
         if ($data['delivery_type']) {
             $data['delivery_name'] = $data['delivery_type'];

+ 1 - 0
crmeb/app/api/route/v1.php

@@ -81,6 +81,7 @@ Route::group(function () {
     Route::get('admin/order/delivery_info', 'v1.admin.StoreOrderController/getDeliveryInfo')->name('getDeliveryInfo')->option(['real_name' => '获取电子面单默认信息']);//获取电子面单默认信息
     Route::get('admin/order/export_temp', 'v1.admin.StoreOrderController/getExportTemp')->name('getExportTemp')->option(['real_name' => '获取电子面单模板获取']);//获取电子面单模板获取
     Route::get('admin/order/export_all', 'v1.admin.StoreOrderController/getExportAll')->name('getExportAll')->option(['real_name' => '获取物流公司']);//获取物流公司
+    Route::get('admin/order/express/:uni/[:type]', 'v1.admin.StoreOrderController/express')->name('orderExpress')->option(['real_name' => '订单查看物流']); //订单查看物流
 })->middleware(\app\http\middleware\AllowOriginMiddleware::class)
     ->middleware(\app\api\middleware\StationOpenMiddleware::class)
     ->middleware(\app\api\middleware\AuthTokenMiddleware::class, true)

+ 1 - 1
crmeb/app/services/activity/coupon/StoreCouponIssueServices.php

@@ -65,7 +65,7 @@ class StoreCouponIssueServices extends BaseServices
         foreach ($list as &$item) {
             $item['use_time'] = date('Y-m-d', $item['start_use_time']) . ' ~ ' . date('Y-m-d', $item['end_use_time']);
         }
-        unset($where['type'], $where['receive_type']);
+//        unset($where['type'], $where['receive_type']);
         $count = $this->dao->count($where);
         return compact('list', 'count');
     }

+ 1 - 1
crmeb/app/services/order/StoreOrderDeliveryServices.php

@@ -441,7 +441,7 @@ class StoreOrderDeliveryServices extends BaseServices
         $orderInfoServices = app()->make(StoreOrderCartInfoServices::class);
         $storeName = $orderInfoServices->getCarIdByProductTitle((int)$orderInfo->id);
 
-        if (count($data['pickup_time']) == 2) {
+        if (isset($data['pickup_time']) && count($data['pickup_time']) == 2) {
             $data['pickup_start_time'] = $data['pickup_time'][0];
             $data['pickup_end_time'] = $data['pickup_time'][1];
         } else {

+ 3 - 3
crmeb/app/services/order/StoreOrderRefundServices.php

@@ -688,7 +688,7 @@ class StoreOrderRefundServices extends BaseServices
 
             $storeOrderServices->update($oid, ['refund_status' => 0, 'refund_type' => 3]);
             //处理订单商品cart_info
-            $this->cancelOrderRefundCartInfo($id, $oid, $orderRefundInfo);
+            $this->cancelOrderRefundCartInfo($id, $oid, $orderRefundInfo, '不退款原因:' . ($data['refund_reason'] ?? ''));
             //记录
             /** @var StoreOrderStatusServices $statusService */
             $statusService = app()->make(StoreOrderStatusServices::class);
@@ -1277,7 +1277,7 @@ class StoreOrderRefundServices extends BaseServices
      * @throws \think\db\exception\DbException
      * @throws \think\db\exception\ModelNotFoundException
      */
-    public function cancelOrderRefundCartInfo(int $id, int $oid, $orderRefundInfo = [])
+    public function cancelOrderRefundCartInfo(int $id, int $oid, $orderRefundInfo = [], string $title = '')
     {
         if (!$orderRefundInfo) {
             $orderRefundInfo = $this->dao->get(['id' => $id, 'is_cancel' => 0]);
@@ -1306,7 +1306,7 @@ class StoreOrderRefundServices extends BaseServices
         $statusService->save([
             'oid' => $oid,
             'change_type' => 'cancel_refund_order',
-            'change_message' => '取消退款',
+            'change_message' => $title ?: '取消退款',
             'change_time' => time()
         ]);
 

+ 4 - 5
crmeb/app/services/order/StoreOrderServices.php

@@ -101,10 +101,13 @@ class StoreOrderServices extends BaseServices
         foreach ($data as &$item) {
             $refund_num = array_sum(array_column($item['refund'], 'refund_num'));
             $cart_num = 0;
+            $vipTruePrice = 0;
             foreach ($item['_info'] as $items) {
                 $cart_num += $items['cart_info']['cart_num'];
+                $vipTruePrice = bcadd((string)$vipTruePrice, (string)$items['cart_info']['vip_truePrice'], 2);
             }
-            $item['is_all_refund'] = $refund_num == $cart_num ? true : false;
+            $item['total_price'] = bcadd($item['total_price'], $vipTruePrice, 2);
+            $item['is_all_refund'] = $refund_num == $cart_num;
         }
         return compact('data', 'count');
     }
@@ -2692,10 +2695,6 @@ HTML;
             'cancel_msg' => $msg,
         ]);
 
-        if ($res['status'] != 200) {
-            throw new ValidateException($res['msg'] ?? '一号通:取消失败');
-        }
-
         //订单返回原状态
         $this->transaction(function () use ($id, $msg, $orderInfo) {
             app()->make(StoreOrderStatusServices::class)->save([

+ 2 - 2
crmeb/app/services/other/export/ExportServices.php

@@ -358,8 +358,8 @@ class ExportServices extends BaseServices
                 $one_data = [
                     'card_number' => $item['card_number'],
                     'card_password' => $item['card_password'],
-                    'user_name' => $userList[$item['use_uid']]['real_name'] ?: $userList[$item['use_uid']]['nickname'],
-                    'user_phone' => $userList[$item['use_uid']] ? $userList[$item['use_uid']]['phone'] : "",
+                    'user_name' => $userList[$item['use_uid']]['real_name'] ?? $userList[$item['use_uid']]['nickname'] ?? '',
+                    'user_phone' => $userList[$item['use_uid']]['phone'] ?? "",
                     'use_time' => $item['use_time'],
                     'use_uid' => $item['use_uid'] ? '已领取' : '未领取'
                 ];

+ 6 - 0
crmeb/app/services/product/product/StoreProductServices.php

@@ -127,6 +127,9 @@ class StoreProductServices extends BaseServices
         /** @var StoreCategoryServices $categoryService */
         $categoryService = app()->make(StoreCategoryServices::class);
         $cateList = $categoryService->getCateParentAndChildName($cateIds);
+        $preantCateList = $categoryService->getColumn([
+            ['id', 'in', $cateIds]
+        ], 'cate_name', 'id');
         foreach ($list as &$item) {
             $cateName = array_filter($cateList, function ($val) use ($item) {
                 if (in_array($val['id'], explode(',', $item['cate_id']))) {
@@ -137,6 +140,9 @@ class StoreProductServices extends BaseServices
             foreach ($cateName as $k => $v) {
                 $item['cate_name'][] = $v['one'] . '/' . $v['two'];
             }
+            if (!count($item['cate_name']) && isset($preantCateList[$item['cate_id']])) {
+                $item['cate_name'][] = $preantCateList[$item['cate_id']];
+            }
             $item['cate_name'] = is_array($item['cate_name']) ? implode(',', $item['cate_name']) : '';
             $item['stock_attr'] = $item['stock'] > 0;//库存
             $item['product_type'] = $this->productType[$item['virtual_type']];

+ 1 - 0
crmeb/app/services/user/UserExtractServices.php

@@ -300,6 +300,7 @@ class UserExtractServices extends BaseServices
             $f[] = Form::input('alipay_code', '支付宝账号', $UserExtract['alipay_code']);
         } else if ($UserExtract['extract_type'] == 'weixin') {
             $f[] = Form::input('wechat', '微信号', $UserExtract['wechat']);
+        } else if ($UserExtract['extract_type'] == 'balance') {
         } else {
             $f[] = Form::input('bank_code', '银行卡号', $UserExtract['bank_code']);
             $f[] = Form::input('bank_address', '开户行', $UserExtract['bank_address']);

+ 1 - 1
crmeb/crmeb/services/printer/storage/FeiEYun.php

@@ -70,7 +70,7 @@ class FeiEYun extends BasePrinter
         $this->printerContent .= '名称           单价  数量 金额<BR>';
         $this->printerContent .= '--------------------------------<BR>';
         foreach ($product as $item) {
-            $name = $item['productInfo']['store_name'];
+            $name = $item['productInfo']['store_name'] . " | " . $item['productInfo']['attrInfo']['suk'];
             $price = $item['truePrice'];
             $num = $item['cart_num'];
             $prices = bcmul((string)$item['cart_num'], (string)$item['truePrice'], 2);

+ 1 - 1
crmeb/crmeb/services/printer/storage/YiLianYun.php

@@ -72,7 +72,7 @@ class YiLianYun extends BasePrinter
         foreach ($product as $item) {
             $goodsStr .= '<tr>';
             $price = bcmul((string)$item['cart_num'], (string)$item['truePrice'], 2);
-            $goodsStr .= "<td>{$item['productInfo']['store_name']}</td><td>{$item['cart_num']}</td><td>{$item['truePrice']}</td><td>{$price}</td>";
+            $goodsStr .= "<td>{$item['productInfo']['store_name']} | {$item['productInfo']['attrInfo']['suk']}</td><td>{$item['cart_num']}</td><td>{$item['truePrice']}</td><td>{$price}</td>";
             $goodsStr .= '</tr>';
             unset($price);
         }

+ 1 - 103
crmeb/crmeb/services/serve/storage/Crmeb.php

@@ -49,99 +49,7 @@ class Crmeb extends BaseStorage
      */
     public function getUser()
     {
-        return $this->accessToken->httpRequest('user/info');
-    }
-
-    /**
-     * 用户登录
-     * @param string $account
-     * @param string $secret
-     * @return array|mixed
-     */
-    public function login(string $account, string $secret)
-    {
-        return $this->accessToken->httpRequest('user/login', ['account' => $account, 'secret' => $secret], 'POST', false);
-    }
-
-    /**
-     * 注册平台
-     * @param array $data
-     * @return array|mixed
-     */
-    public function register(array $data)
-    {
-        return $this->accessToken->httpRequest('user/register', $data, 'POST', false);
-    }
-
-    /**
-     * 平台用户消息记录
-     * @param int $page
-     * @param int $limit
-     * @return array|mixed
-     */
-    public function userBill(int $page, int $limit)
-    {
-        return $this->accessToken->httpRequest('user/bill', ['page' => $page, 'limit' => $limit]);
-    }
-
-    /**
-     * 找回账号
-     * @param array $data
-     * @return array|mixed
-     */
-    public function forget(array $data)
-    {
-        return $this->accessToken->httpRequest('user/forget', $data, 'POST', false);
-    }
-
-    /**
-     * 修改密码
-     * @param array $data
-     * @return array|mixed
-     */
-    public function modify(array $data)
-    {
-        return $this->accessToken->httpRequest('user/modify', $data, 'POST', false);
-    }
-
-    /**
-     * 获取验证码
-     * @param string $phone
-     * @return array|mixed
-     */
-    public function code(string $phone, $type = 0)
-    {
-        return $this->accessToken->httpRequest('user/code', ['phone' => $phone, 'types' => $type], 'POST', false);
-    }
-
-    /**
-     * 验证验证码
-     * @param string $phone
-     * @return array|mixed
-     */
-    public function checkCode(string $phone, string $verify_code)
-    {
-        return $this->accessToken->httpRequest('user/code/verify', ['phone' => $phone, 'verify_code' => $verify_code], 'POST', false);
-    }
-
-    /**
-     * 套餐列表
-     * @param string $type 套餐类型:sms,短信;query,物流查询;dump,电子面单;copy,产品复制
-     * @return array|mixed
-     */
-    public function mealList(string $type)
-    {
-        return $this->accessToken->httpRequest('meal/list', ['type' => $type]);
-    }
-
-    /**
-     * 套餐支付
-     * @param array $data
-     * @return array|mixed
-     */
-    public function payMeal(array $data)
-    {
-        return $this->accessToken->httpRequest('meal/code', $data);
+        return $this->accessToken->httpRequest('v2/user/info');
     }
 
     /**
@@ -163,14 +71,4 @@ class Crmeb extends BaseStorage
         }
         return $this->accessToken->httpRequest('user/record', $data);
     }
-
-    /**
-     * 修改手机号
-     * @param array $data
-     * @return array|mixed
-     */
-    public function modifyPhone(array $data)
-    {
-        return $this->accessToken->httpRequest('user/modify/phone', $data);
-    }
 }

+ 2 - 1
crmeb/crmeb/services/upload/storage/Jdoss.php

@@ -176,7 +176,8 @@ class Jdoss extends BaseUpload
                 'Key' => $key,
                 'Body' => $fileContent
             ]);
-            if (!isset($uploadInfo['info']['url'])) {
+            $uploadInfo = $uploadInfo->toArray();
+            if (isset($uploadInfo['@metadata']['statusCode']) && $uploadInfo['@metadata']['statusCode'] !== 200) {
                 return $this->setError('Upload failure');
             }
             $this->fileInfo->uploadInfo = $uploadInfo;

Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/admin/index.html


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/admin/system_static/css/app.6a93fc63.css


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
crmeb/public/admin/system_static/css/app.b032f3d2.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/admin/system_static/css/chunk-150a8868.d466a55c.css


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/admin/system_static/css/chunk-261e16c7.8a95a507.css


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/css/chunk-1e7267e4.0cf8926e.css


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/css/chunk-1fa252ba.ab315b92.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/admin/system_static/css/chunk-3450c950.616298b8.css


crmeb/public/admin/system_static/css/chunk-656f65e6.8bdf1b85.css → crmeb/public/admin/system_static/css/chunk-3c665bcd.8bdf1b85.css


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/css/chunk-46c8de8a.5ce61596.css


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/css/chunk-617c32fe.a3ac02b9.css


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/admin/system_static/css/chunk-4e89473d.ed7ee714.css


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/css/chunk-906b1e4a.1858985a.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/admin/system_static/css/chunk-b1f6b762.3d0bda18.css


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/css/chunk-c0732de6.1690a640.css


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/admin/system_static/css/chunk-64e5d11e.e07cc7c4.css


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/css/chunk-fb10e656.dbbbf26c.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/admin/system_static/js/app.21de0209.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/js/app.c0c892c1.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/js/app.ca17e545.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/admin/system_static/js/chunk-150a8868.5ac073d4.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/js/chunk-1a21d31b.0a527259.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/js/chunk-1e7267e4.1911626f.js


Разница между файлами не показана из-за своего большого размера
+ 53 - 0
crmeb/public/admin/system_static/js/chunk-1fa252ba.6fbe4b2b.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/admin/system_static/js/chunk-261e16c7.c6c3fe3e.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 53
crmeb/public/admin/system_static/js/chunk-3450c950.203dc6f2.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/js/chunk-3c665bcd.8c2d8ce2.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/js/chunk-46c8de8a.5b5b15cf.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/admin/system_static/js/chunk-4e89473d.ec62273e.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/js/chunk-617c32fe.7cb21ae6.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/admin/system_static/js/chunk-64e5d11e.41b12d39.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/admin/system_static/js/chunk-656f65e6.be038fff.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/js/chunk-82de29c2.eeec46f6.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/js/chunk-8f947984.0416e99c.js


Разница между файлами не показана из-за своего большого размера
+ 53 - 0
crmeb/public/admin/system_static/js/chunk-906b1e4a.dd045212.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/admin/system_static/js/chunk-b1f6b762.c3807b48.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/js/chunk-c0732de6.b558fd0f.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/js/chunk-f2b829c4.33cf7dd8.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/system_static/js/chunk-fb10e656.d06711d1.js


+ 1 - 0
crmeb/route/route.php

@@ -14,6 +14,7 @@ Route::miss(function () {
     switch (strtolower($appName)) {
         case config('app.admin_prefix', 'admin'):
         case 'kefu':
+        case 'app':
             return view(app()->getRootPath() . 'public' . DS . config('app.admin_prefix', 'admin') . DS . 'index.html');
         case 'home':
             if (request()->isMobile()) {

+ 11 - 1
template/admin/src/api/uploadPictures.js

@@ -104,7 +104,6 @@ export function fileDelApi(ids) {
 }
 /**
  * @description 网络图片上传
- * @param {String} param ids {String} 图片id拼接成的字符串
  */
 export function onlineUpload(data) {
   return request({
@@ -113,3 +112,14 @@ export function onlineUpload(data) {
     data,
   });
 }
+
+/**
+ * @description 清除扫码上传 code
+ */
+export function scanUploadCode() {
+  return request({
+    url: 'scan_upload/qrcode ',
+    method: 'delete'
+  });
+}
+

+ 14 - 9
template/admin/src/components/linkaddress/index.vue

@@ -269,15 +269,19 @@
                   </Radio>
                 </RadioGroup>
               </div>
-              <FormItem label="跳转路径:" prop="url" v-if="customdate.status == 1">
-                <Input v-model="customdate.url" placeholder="请输入正确跳转路径"></Input>
-              </FormItem>
-              <FormItem label="APPID:" prop="appid" v-if="customdate.status == 2">
-                <Input v-model="customdate.appid" placeholder="请输入正确APPID"></Input>
-              </FormItem>
-              <FormItem label="小程序路径:" prop="mpUrl" v-if="customdate.status == 2">
-                <Input v-model="customdate.mpUrl" placeholder="请输入正确小程序路径"></Input>
-              </FormItem>
+              <template v-if="customdate.status == 1">
+                <FormItem label="跳转路径:" prop="url">
+                  <Input v-model="customdate.url" placeholder="请输入正确跳转路径"></Input>
+                </FormItem>
+              </template>
+              <template v-if="customdate.status == 2">
+                <FormItem label="APPID:" prop="appid">
+                  <Input v-model="customdate.appid" placeholder="请输入正确APPID"></Input>
+                </FormItem>
+                <FormItem label="小程序路径:" prop="mpUrl">
+                  <Input v-model="customdate.mpUrl" placeholder="请输入正确小程序路径"></Input>
+                </FormItem>
+              </template>
             </Form>
           </div>
         </div>
@@ -419,6 +423,7 @@ export default {
       ruleValidate: {
         name: [{ required: true, message: '请输入链接名称', trigger: 'blur' }],
         url: [{ required: true, message: '请输入跳转路径', trigger: 'blur' }],
+        appid: [{ required: true, message: '请输入APPID', trigger: 'blur' }],
       },
     };
   },

+ 63 - 25
template/admin/src/components/uploadImg/index.vue

@@ -8,7 +8,7 @@
       width="1024px"
       @closed="closed"
     >
-      <div class="main">
+      <div class="main" v-loading="loading">
         <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
           <el-form-item label="上传方式:" prop="type">
             <el-radio-group v-model="ruleForm.type" @change="radioChange(ruleForm.type)">
@@ -43,6 +43,8 @@
                   :data="uploadData"
                   :headers="header"
                   :before-upload="beforeUpload"
+                  :multiple="true"
+                  :limit="limit"
                 >
                   <i slot="default" class="el-icon-plus"></i>
                   <div
@@ -123,7 +125,7 @@
 </template>
 
 <script>
-import { getCategoryListApi, moveApi, onlineUpload } from '@/api/uploadPictures';
+import { getCategoryListApi, moveApi, onlineUpload, scanUploadCode } from '@/api/uploadPictures';
 import Setting from '@/setting';
 import { getCookies } from '@/libs/util';
 import { fileUpload, scanUploadQrcode, scanUploadGet } from '@/api/setting';
@@ -148,7 +150,7 @@ export default {
         'Authori-zation': 'Bearer ' + getCookies('token'),
       },
       uploadData: {},
-      props: { label: 'title', value: 'id', multiple: false, lazy: true, lazyLoad: this.loadData },
+      props: { label: 'title', value: 'id', multiple: false, checkStrictly: true, lazy: true, lazyLoad: this.loadData },
       disabled: false,
       ruleForm: {
         type: 0,
@@ -158,6 +160,8 @@ export default {
       treeId: '',
       qrcode: '',
       scanToken: '',
+      limit: 20,
+      loading: false,
     };
   },
   created() {},
@@ -166,6 +170,7 @@ export default {
     closed() {
       this.ruleForm.type = 0;
       this.ruleForm.imgList = [];
+      scanUploadCode().then((res) => {});
     },
     radioChange(type) {
       this.ruleForm.type = type;
@@ -189,6 +194,10 @@ export default {
     },
 
     getImg() {
+      if (!this.webImgUrl) {
+        this.$message.error('请先输入图片地址');
+        return;
+      }
       this.ruleForm.imgList.push({
         url: this.webImgUrl,
       });
@@ -198,24 +207,39 @@ export default {
         this.uploadData = {
           pid: this.treeId,
         };
-        for (let i = 0; i < this.ruleForm.imgList.length; i++) {
-          const file = this.ruleForm.imgList[i].raw;
-          await this.uploadItem(file);
-          if (i == this.ruleForm.imgList.length - 1) {
-            this.$Message.success('上传成功');
-            this.$emit('uploadSuccess');
-            this.uploadModal = false;
+        if (this.ruleForm.imgList.length) {
+          if (this.loading) return;
+          this.loading = true;
+          for (let i = 0; i < this.ruleForm.imgList.length; i++) {
+            const file = this.ruleForm.imgList[i].raw;
+            await this.uploadItem(file);
+            if (i == this.ruleForm.imgList.length - 1) {
+              this.$Message.success('上传成功');
+              this.$emit('uploadSuccess');
+              this.uploadModal = false;
+              this.loading = false;
+            }
           }
         }
       } else if (this.ruleForm.type == 1) {
         let urls = this.ruleForm.imgList.map((e) => {
           return e.url;
         });
-        onlineUpload({ pid: this.treeId, images: urls }).then((res) => {
-          this.$Message.success('上传成功');
-          this.$emit('uploadSuccess');
-          this.uploadModal = false;
-        });
+        if (urls.length) {
+          if (this.loading) return;
+          this.loading = true;
+          onlineUpload({ pid: this.treeId, images: urls })
+            .then((res) => {
+              this.$Message.success('上传成功');
+              this.$emit('uploadSuccess');
+              this.uploadModal = false;
+              this.loading = false;
+            })
+            .catch((err) => {
+              this.loading = false;
+              this.$Message.error(err.msg);
+            });
+        }
       } else if (this.ruleForm.type == 2) {
         let attId = this.ruleForm.imgList.map((e) => {
           return e.att_id;
@@ -238,6 +262,7 @@ export default {
               resolve();
               // this.$emit('uploadImgSuccess', res.data);
             } else {
+              this.loading = false;
               this.$message({
                 message: '上传失败',
                 type: 'error',
@@ -246,6 +271,7 @@ export default {
             }
           })
           .catch((err) => {
+            this.loading = false;
             this.$Message.error(err.msg);
           });
       });
@@ -276,12 +302,25 @@ export default {
     handleDownload(file) {
       console.log(file);
     },
-    fileChange(file, fileList) {
-      console.log(file, fileList);
-      this.ruleForm.imgList = fileList;
-      compressImg(file.raw).then((res) => {
-        if (fileList.length) fileList[fileList.length - 1].raw = res;
+    async fileChange(file, fileList) {
+      if (file.size >= 2097152) {
+        await this.comImg(file.raw).then((res) => {
+          fileList.map((e) => {
+            if (e.uid === file.uid) {
+              e.raw = res;
+            }
+          });
+          this.ruleForm.imgList = fileList;
+        });
+      } else {
         this.ruleForm.imgList = fileList;
+      }
+    },
+    comImg(file) {
+      return new Promise((resolve, reject) => {
+        compressImg(file).then((res) => {
+          resolve(res);
+        });
       });
     },
     loadData(item, callback) {
@@ -342,11 +381,10 @@ export default {
 .btndel {
   position: absolute;
   z-index: 1;
-  width: 20px !important;
-  height: 20px !important;
-  left: 52px;
-  top: -4px;
-  color red
+  font-size: 18px;
+  right: -5px;
+  top: -5px;
+  color #999
 }
 .form-width{
     width 280px

+ 1 - 0
template/admin/src/layout/navBars/breadcrumb/userNews.vue

@@ -152,6 +152,7 @@ export default {
     // 全部已读点击
     onAllReadClick() {
       this.newsList = [];
+      this.$emit('haveNews', !!this.newsList.length);
     },
     // 前往通知中心点击
     onGoToGiteeClick() {},

+ 75 - 33
template/admin/src/pages/app/upload/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="main">
+  <div class="main" v-loading="loading">
     <div v-if="uploading">
       <div class="img-list">
         <el-upload
@@ -7,8 +7,11 @@
           :action="fileUrl"
           list-type="picture-card"
           :on-change="fileChange"
+          :on-error="fileError"
           :file-list="imgList"
           :auto-upload="false"
+          :multiple="true"
+          :limit="limit"
         >
           <i slot="default" class="el-icon-plus"></i>
           <div slot="file" slot-scope="{ file }">
@@ -19,9 +22,9 @@
       </div>
 
       <div class="footer">
-        <div>共{{ imgList.length }}张,{{ (allSize / 1000000).toFixed(2) }} M</div>
+        <div>共{{ imgList.length }}/{{ limit }}张,{{ (allSize / 1000000).toFixed(2) }} M</div>
         <div class="upload-btn">
-          <!-- <div class="btn">选择图片</div> -->
+          <div v-if="imgList.length < limit" class="btn" @click="selectImgs">选择图片</div>
           <div class="btn upload" @click="submitUpload">确认上传</div>
         </div>
       </div>
@@ -49,6 +52,8 @@ export default {
       allSize: 0,
       token: '',
       uploading: true,
+      limit: 20,
+      loading: false,
     };
   },
   created() {
@@ -56,30 +61,46 @@ export default {
     document.title = '手机端扫码上传';
   },
   methods: {
+    selectImgs() {
+      if (this.loading) return;
+      this.$refs['upload'].$refs['upload-inner'].handleClick();
+    },
     again() {
       this.uploading = true;
       this.imgList = [];
       this.allSize = 0;
     },
     async submitUpload() {
-      for (let i = 0; i < this.imgList.length; i++) {
-        const file = this.imgList[i].raw;
-        await this.uploadItem(file);
-        if (i == this.imgList.length - 1) {
-          this.uploading = false;
+      if (this.imgList.length) {
+        if (this.loading) return;
+        this.loading = true;
+        for (let i = 0; i < this.imgList.length; i++) {
+          const file = this.imgList[i].raw;
+          await this.uploadItem(file);
+          if (i == this.imgList.length - 1) {
+            this.uploading = false;
+            this.loading = false;
+          }
         }
+      } else {
+        this.$Message.warning('请先选择图片');
       }
     },
     handleRemove(file) {
-      console.log(file);
       let index = this.imgList.findIndex((e) => {
-        e.url == file.url;
+        return e.url == file.url;
       });
       this.imgList.splice(index, 1);
       this.$nextTick((e) => {
-        this.imgList.map((e) => {
-          this.allSize += e.raw.size;
-        });
+        let s = 0;
+        if (this.imgList.length) {
+          this.imgList.map((e) => {
+            s += e.raw.size;
+          });
+          this.allSize = s;
+        } else {
+          this.allSize = 0;
+        }
       });
     },
 
@@ -93,6 +114,7 @@ export default {
             if (res.status == 200) {
               resolve();
             } else {
+              this.loading = false;
               this.$message({
                 message: '上传失败',
                 type: 'error',
@@ -101,29 +123,42 @@ export default {
             }
           })
           .catch((err) => {
+            this.loading = false;
             this.$Message.error(err.msg);
           });
       });
     },
-
-    dataURLtoBlob(dataurl) {
-      const arr = dataurl.split(','),
-        mime = arr[0].match(/:(.*?);/)[1],
-        bstr = atob(arr[1]);
-      let n = bstr.length;
-      const u8arr = new Uint8Array(n);
-      while (n--) {
-        u8arr[n] = bstr.charCodeAt(n);
-      }
-      return new Blob([u8arr], { type: mime });
+    fileError(err, file, fileList) {
+      console.log(err, file, fileList);
     },
-    fileChange(file, fileList) {
-      compressImg(file.raw).then((res) => {
-        if (fileList.length) fileList[fileList.length - 1].raw = res;
+    async fileChange(file, fileList) {
+      if (file.size >= 2097152) {
+        await this.comImg(file.raw).then((res) => {
+          fileList.map((e) => {
+            if (e.uid === file.uid) {
+              this.allSize += res.size;
+              e.raw = res;
+            }
+          });
+          this.imgList = fileList;
+        });
+      } else {
         this.imgList = fileList;
-        this.imgList.map((e) => {
-          console.log(e);
-          this.allSize += e.raw.size;
+        let s = 0;
+        if (this.imgList.length) {
+          this.imgList.map((e) => {
+            s += e.raw.size;
+          });
+          this.allSize = s;
+        } else {
+          this.allSize = 0;
+        }
+      }
+    },
+    comImg(file) {
+      return new Promise((resolve, reject) => {
+        compressImg(file).then((res) => {
+          resolve(res);
         });
       });
     },
@@ -147,6 +182,8 @@ export default {
 }
 .img-list {
   padding: 10px;
+  overflow: scroll;
+  height: calc(100vh - 50px);
 }
 /deep/ .el-upload--picture-card,
 /deep/ .el-upload-list--picture-card .el-upload-list__item {
@@ -165,9 +202,14 @@ export default {
   position: absolute;
   z-index: 1;
   font-size: 18px;
-  right: 1px;
-  top: 1px;
-  color: red;
+  right: 0px;
+  top: 0px;
+  color: #282828;
+  opacity: 0.5;
+}
+/deep/ .el-upload--picture-card:hover,
+.el-upload:focus {
+  border-color: #c0ccda;
 }
 .img-box {
   display: flex;

+ 73 - 66
template/admin/src/pages/notify/smsConfig/index.vue

@@ -79,10 +79,12 @@
     <!--          </div>-->
     <!--        </div>-->
     <!--      </div>-->
-    <Card :bordered="false" dis-hover class="ivu-mt" style="min-height: 600px;">
-
-      <iframe src="https://api_v2.crmeb.net?token=AF37D4579721672220B08CA872586943" style="width: 100%;height: 800px"
-              frameborder="0"></iframe>
+    <Card :bordered="false" dis-hover class="ivu-mt" style="height: 800px">
+      <iframe
+        src="https://api_v2.crmeb.net?token=AF37D4579721672220B08CA872586943"
+        style="width: 100%; height: 800px"
+        frameborder="0"
+      ></iframe>
       <!--        <login-from-->
       <!--          @on-change="onChangePasssword"-->
       <!--          v-if="isShowLogn"-->
@@ -114,11 +116,11 @@ import registerFrom from './components/register';
 import tableList from './tableList';
 import forgetPhone from './components/forgetPhone';
 import request from '@/libs/request';
-import {isLoginApi, logoutApi, smsNumberApi, serveInfoApi} from '@/api/setting';
+import { isLoginApi, logoutApi, smsNumberApi, serveInfoApi } from '@/api/setting';
 
 export default {
   name: 'smsConfig',
-  components: {loginFrom, forgetPassword, registerFrom, tableList, forgetPhone},
+  components: { loginFrom, forgetPassword, registerFrom, tableList, forgetPhone },
   data() {
     return {
       imgUrl: require('@/assets/images/ren.png'),
@@ -131,10 +133,10 @@ export default {
       accountInfo: {},
       isForgetPhone: false, // 修改手机号
       isIndex: false, // 判断忘记密码返回的路径
-      sms: {open: 0}, // 短信信息
-      query: {open: 0}, // 物流查询
-      dump: {open: 0}, // 电子面单打印
-      copy: {open: 0}, // 商品采集
+      sms: { open: 0 }, // 短信信息
+      query: { open: 0 }, // 物流查询
+      dump: { open: 0 }, // 电子面单打印
+      copy: { open: 0 }, // 商品采集
     };
   },
   created() {
@@ -143,7 +145,7 @@ export default {
   },
   beforeDestroy() {
     // 移除事件监听器
-    window.removeEventListener('message', this.handleConfig)
+    window.removeEventListener('message', this.handleConfig);
   },
   methods: {
     handleConfig(data) {
@@ -157,8 +159,7 @@ export default {
             sms_account: data.accessKey,
             sms_token: data.secretKey,
           },
-        }).then(res => {
-        });
+        }).then((res) => {});
       }
     },
     onChangePhone() {
@@ -170,7 +171,7 @@ export default {
       this.$refs.tableLists.onOpenIndex(val);
     },
     mealPay(val) {
-      this.$router.push({path: this.$routeProStr + '/setting/sms/sms_pay/index', query: {type: val}});
+      this.$router.push({ path: this.$routeProStr + '/setting/sms/sms_pay/index', query: { type: val } });
     },
     // 开通服务
     openService(val) {
@@ -193,67 +194,67 @@ export default {
     getServeInfo() {
       this.spinShow = true;
       serveInfoApi()
-          .then(async (res) => {
-            let data = res.data;
-            this.sms = {
-              num: data.sms.num,
-              open: data.sms.open,
-              surp: data.sms.open,
-            };
-            this.query = {
-              num: data.query.num,
-              open: data.query.open,
-              surp: data.query.open,
-            };
-            this.dump = {
-              num: data.dump.num,
-              open: data.dump.open,
-              surp: data.dump.open,
-            };
-            this.copy = {
-              num: data.copy.num,
-              open: data.copy.open,
-              surp: data.copy.open,
-            };
-            this.spinShow = false;
-            this.smsAccount = data.account;
-            this.accountInfo = data;
-          })
-          .catch((res) => {
-            this.$Message.error(res.msg);
-            this.isShowLogn = true;
-            this.isShowList = false;
-            this.spinShow = false;
-          });
+        .then(async (res) => {
+          let data = res.data;
+          this.sms = {
+            num: data.sms.num,
+            open: data.sms.open,
+            surp: data.sms.open,
+          };
+          this.query = {
+            num: data.query.num,
+            open: data.query.open,
+            surp: data.query.open,
+          };
+          this.dump = {
+            num: data.dump.num,
+            open: data.dump.open,
+            surp: data.dump.open,
+          };
+          this.copy = {
+            num: data.copy.num,
+            open: data.copy.open,
+            surp: data.copy.open,
+          };
+          this.spinShow = false;
+          this.smsAccount = data.account;
+          this.accountInfo = data;
+        })
+        .catch((res) => {
+          this.$Message.error(res.msg);
+          this.isShowLogn = true;
+          this.isShowList = false;
+          this.spinShow = false;
+        });
     },
     // 查看是否登录
     onIsLogin() {
       this.spinShow = true;
       isLoginApi()
-          .then(async (res) => {
-            let data = res.data;
-            this.isShowLogn = !data.status;
-            this.isShowList = data.status;
-            this.spinShow = false;
-            if (data.status) {
-              this.getServeInfo();
-            }
-          })
-          .catch((res) => {
-            this.spinShow = false;
-            this.$Message.error(res.msg);
-          });
+        .then(async (res) => {
+          let data = res.data;
+          this.isShowLogn = !data.status;
+          this.isShowList = data.status;
+          this.spinShow = false;
+          if (data.status) {
+            this.getServeInfo();
+          }
+        })
+        .catch((res) => {
+          this.spinShow = false;
+          this.$Message.error(res.msg);
+        });
     },
     // 退出登录
     signOut() {
       logoutApi()
-          .then(async (res) => {
-            this.isShowLogn = true;
-            this.isShowList = false;
-          })
-          .catch((res) => {
-            this.$Message.error(res.msg);
-          });
+        .then(async (res) => {
+          this.isShowLogn = true;
+          this.isShowList = false;
+        })
+        .catch((res) => {
+          this.$Message.error(res.msg);
+        });
     },
     // 修改密码
     onChangePassswordIndex() {
@@ -320,6 +321,12 @@ export default {
 </script>
 
 <style lang="less" scoped>
+/deep/ .layout-container .layout-scrollbar {
+  padding: 0;
+}
+/deep/ .ivu-card-body {
+  padding: 0;
+}
 .picTxt {
   padding: 8px 0 12px;
 }

+ 1 - 0
template/admin/src/pages/order/orderList/components/tableList.vue

@@ -187,6 +187,7 @@
       @clearId="
         () => {
           orderId = 0;
+          virtual_type = null;
         }
       "
     ></order-send>

+ 35 - 21
template/admin/src/pages/order/orderList/handle/orderSend.vue

@@ -23,6 +23,17 @@
           <Radio label="2">电子面单打印</Radio>
         </RadioGroup>
       </FormItem>
+      <template v-if="['2', '3'].includes(formItem.express_record_type) && formItem.type == 1">
+        <FormItem label="寄件人姓名:">
+          <Input v-model="formItem.to_name" placeholder="请输入寄件人姓名" style="width: 80%"></Input>
+        </FormItem>
+        <FormItem label="寄件人电话:">
+          <Input v-model="formItem.to_tel" placeholder="请输入寄件人电话" style="width: 80%"></Input>
+        </FormItem>
+        <FormItem label="寄件人地址:">
+          <Input v-model="formItem.to_addr" placeholder="请输入寄件人地址" style="width: 80%"></Input>
+        </FormItem>
+      </template>
       <div>
         <FormItem label="快递公司:" v-if="formItem.type == 1">
           <Select
@@ -64,14 +75,9 @@
             </Select>
             <Button v-if="formItem.express_temp_id" type="text" @click="preview">预览</Button>
           </FormItem>
-          <FormItem label="寄件人姓名:">
-            <Input v-model="formItem.to_name" placeholder="请输入寄件人姓名" style="width: 80%"></Input>
-          </FormItem>
-          <FormItem label="寄件人电话:">
-            <Input v-model="formItem.to_tel" placeholder="请输入寄件人电话" style="width: 80%"></Input>
-          </FormItem>
-          <FormItem label="寄件人地址:">
-            <Input v-model="formItem.to_addr" placeholder="请输入寄件人地址" style="width: 80%"></Input>
+          <FormItem label="寄件金额计算:" v-if="formItem.express_record_type == 3">
+            <span class="red">{{ sendPrice }}</span>
+            <a class="ml10" @click="watchPrice">立即计算</a>
           </FormItem>
           <FormItem label="取件日期:" v-if="formItem.express_record_type == 3">
             <RadioGroup v-model="formItem.day_type" type="button">
@@ -158,10 +164,6 @@
           </i-table>
         </FormItem>
       </div>
-      <FormItem label="寄件金额计算:" v-if="formItem.express_record_type == 3">
-        <span class="red">{{ sendPrice }}</span>
-        <a class="ml10" @click="watchPrice">立即计算</a>
-      </FormItem>
     </Form>
     <div slot="footer">
       <Button @click="cancel">取消</Button>
@@ -170,7 +172,7 @@
     <!-- <viewer @inited="inited">
             <img :src="temp.pic" style="display:none" />
         </viewer> -->
-    <div ref="viewer" v-viewer v-show="temp">
+    <div ref="viewer" v-viewer>
       <img :src="temp.pic" style="display: none" />
     </div>
   </Modal>
@@ -196,7 +198,10 @@ export default {
     status: Number,
     // total_num: Number,
     pay_type: String,
-    virtual_type: Number,
+    virtual_type: {
+      type: Number,
+      default: 0,
+    },
   },
   data() {
     return {
@@ -306,7 +311,6 @@ export default {
   },
   methods: {
     watchPrice() {
-      console.log(1111);
       let data = {
         kuaidicom: this.formItem.delivery_code,
         send_address: this.formItem.to_addr,
@@ -385,17 +389,17 @@ export default {
     },
     changeExpress(j) {
       switch (j) {
+        case '1':
+          this.formItem.delivery_name = '';
+          this.formItem.delivery_id = '';
+          this.getList(1);
+          break;
         case '2':
           this.formItem.delivery_name = '';
           this.formItem.express_temp_id = '';
           this.expressTemp = [];
           this.getList(2);
           break;
-        case '1':
-          this.formItem.delivery_name = '';
-          this.formItem.delivery_id = '';
-          this.getList(1);
-          break;
         case '3':
           this.formItem.delivery_name = '';
           this.formItem.delivery_id = '';
@@ -545,7 +549,11 @@ export default {
         return;
       }
       this.serviceTypeList = expressItem.types;
+      if (this.formItem.type == 1 && this.formItem.express_record_type == 3) {
+        this.formItem.service_type = expressItem.types.length ? expressItem.types[0] : '';
+      }
       this.formItem.delivery_code = expressItem.code;
+      if (this.formItem.to_name && this.formItem.to_addr) this.watchPrice();
       if (this.formItem.express_record_type === '2') {
         this.expressTemp = [];
         this.formItem.express_temp_id = '';
@@ -554,6 +562,7 @@ export default {
         })
           .then((res) => {
             this.expressTemp = res.data;
+            this.formItem.express_temp_id = res.data.length ? res.data[0].temp_id : '';
             if (!res.data.length) {
               this.$Message.error('请配置你所选快递公司的电子面单');
             }
@@ -563,7 +572,11 @@ export default {
           });
       } else if (this.formItem.express_record_type == '3') {
         this.expressTemp = expressItem.list;
-        console.log(this.expressTemp);
+        if (expressItem.list.length) {
+          this.formItem.express_temp_id = expressItem.list[0].temp_id;
+          this.temp = expressItem.list[0];
+          console.log(expressItem.list[0], 'expressItem.list[0]');
+        }
       }
     },
     getCartInfo(data, orderid) {
@@ -620,6 +633,7 @@ export default {
       if (this.temp === undefined) {
         this.temp = {};
       }
+      console.log(this.temp);
     },
     // inited (viewer) {
     //     this.$viewer = viewer;

+ 2 - 10
template/admin/src/pages/product/productAdd/index.vue

@@ -46,19 +46,12 @@
           </Col>
           <Col span="24">
             <FormItem label="商品分类:" prop="cate_id">
-              <!-- {{ formValidate.cate_id }}
-              <Select v-model="formValidate.cate_id" placeholder="请选择商品分类" multiple class="perW30">
-                <Option v-for="item in treeSelect" :disabled="item.pid === 0" :value="item.id" :key="item.id">{{
-                  item.html + item.cate_name
-                }}</Option>
-              </Select>
-              {{ formValidate.cate_id }} -->
               <el-cascader
                 class="perW30"
                 v-model="formValidate.cate_id"
                 size="small"
                 :options="treeSelect"
-                :props="{ multiple: true, emitPath: false }"
+                :props="{ multiple: true, checkStrictly: true, emitPath: false }"
                 clearable
               ></el-cascader>
               <span class="addfont" @click="addCate">新增分类</span>
@@ -1817,8 +1810,6 @@ export default {
       ],
       columnsInstalM: [],
       moveIndex: '',
-      // aa: [],
-      // openSubimit: false
     };
   },
   computed: {
@@ -2766,6 +2757,7 @@ export default {
             activeIds.push(item.id);
           });
           this.formValidate.label_id = activeIds;
+          if (this.openSubimit) return;
           this.openSubimit = true;
           this.formValidate.description = this.formatRichText(this.content);
           productAddApi(this.formValidate)

+ 3 - 3
template/admin/src/pages/product/productAdd/taoBao.vue

@@ -7,7 +7,7 @@
           >如何配置密钥</a
         >
         <span v-else
-          >您当前剩余{{ copyConfig.copy_num }}条采集次数,<span class="add" @click="mealPay('copy')"
+          >您当前剩余{{ copyConfig.copy_num }}条采集次数,<span class="add" @click="mealPay()"
             >增加采集次数</span
           ></span
         >
@@ -73,8 +73,8 @@ export default {
     this.getCopyConfig();
   },
   methods: {
-    mealPay(val) {
-      this.$router.push({ path: this.$routeProStr + '/setting/sms/sms_pay/index', query: { type: val } });
+    mealPay() {
+      this.$router.push({ path: this.$routeProStr + '/setting/sms/sms_config/index'});
     },
     getCopyConfig() {
       copyConfigApi().then((res) => {

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

@@ -22,7 +22,7 @@
                 v-model="artFrom.cate_id"
                 size="small"
                 :options="treeSelect"
-                :props="{ emitPath: false }"
+                :props="{multiple: false, emitPath: false,checkStrictly: true, }"
                 clearable
               ></el-cascader>
             </FormItem>
@@ -181,7 +181,7 @@
                 v-model="batchFormData.cate_id"
                 size="small"
                 :options="treeSelect"
-                :props="{ emitPath: false }"
+                :props="{ multiple: true, emitPath: false,checkStrictly: true, }"
                 clearable
               ></el-cascader>
             </FormItem>

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

@@ -69,7 +69,7 @@
                   v-model="formValidate.cate_id"
                   size="small"
                   :options="treeSelect"
-                  :props="{ multiple: true, emitPath: false }"
+                  :props="{ multiple: true, emitPath: false,checkStrictly: true, }"
                   clearable
                 ></el-cascader>
               </FormItem>

+ 3 - 6
template/admin/src/pages/setting/user/index.vue

@@ -14,13 +14,13 @@
         <FormItem label="姓名" prop="real_name">
           <Input type="text" v-model="formValidate.real_name" class="input"></Input>
         </FormItem>
-        <FormItem label="原始密码" prop="pwd">
+        <FormItem label="原始密码">
           <Input type="password" v-model="formValidate.pwd" class="input"></Input>
         </FormItem>
-        <FormItem label="新密码" prop="new_pwd">
+        <FormItem label="新密码">
           <Input type="password" v-model="formValidate.new_pwd" class="input"></Input>
         </FormItem>
-        <FormItem label="确认新密码" prop="conf_pwd">
+        <FormItem label="确认新密码">
           <Input type="password" v-model="formValidate.conf_pwd" class="input"></Input>
         </FormItem>
         <FormItem>
@@ -64,9 +64,6 @@ export default {
       },
       ruleValidate: {
         real_name: [{ required: true, message: '您的姓名不能为空', trigger: 'blur' }],
-        pwd: [{ required: true, message: '请输入您的原始密码', trigger: 'blur' }],
-        new_pwd: [{ required: true, message: '请输入您的新密码', trigger: 'blur' }],
-        conf_pwd: [{ required: true, message: '请确认您的新密码', trigger: 'blur' }],
       },
     };
   },

+ 42 - 33
template/uni-app/App.vue

@@ -3,24 +3,22 @@
 		checkLogin
 	} from './libs/login';
 	import {
-		HTTP_REQUEST_URL
+		HTTP_REQUEST_URL,
+		SYSTEM_VERSION
 	} from './config/app';
 	import {
 		getShopConfig,
-		silenceAuth
+		silenceAuth,
+		getSystemVersion
 	} from '@/api/public';
 	import Auth from '@/libs/wechat.js';
 	import Routine from './libs/routine.js';
 	import {
 		silenceBindingSpread
 	} from "@/utils";
-	import {
-		getCartCounts,
-	} from '@/api/order.js';
 	import {
 		colorChange,
 		getCrmebCopyRight,
-
 	} from '@/api/api.js';
 	import {
 		getLangJson,
@@ -97,33 +95,31 @@
 				silenceBindingSpread(this.globalData)
 			}
 			// #ifdef MP
-			if (queryData.query.scene) {
-				let param = this.$util.getUrlParams(decodeURIComponent(queryData.query.scene))
-				console.log(queryData.query.scene)
-				console.log(param)
-				if(param.pid){
-					this.$Cache.set('spread', param.pid);
-					this.globalData.spid = param.pid;
-					this.globalData.pid = param.pid;
-				}else{
-					switch (queryData.scene) {
-						//扫描小程序码
-						case 1047:
-							this.globalData.code = queryData.query.scene;
-							break;
-							//长按图片识别小程序码
-						case 1048:
-							this.globalData.code = queryData.query.scene;
-							break;
-							//手机相册选取小程序码
-						case 1049:
-							this.globalData.code = queryData.query.scene;
-							break;
-							//直接进入小程序
-						case 1001:
-							this.globalData.spid = queryData.query.scene;
-							break;
-					}
+			if (queryData.query.scene) {
+				let param = this.$util.getUrlParams(decodeURIComponent(queryData.query.scene))
+				if (param.pid) {
+					this.$Cache.set('spread', param.pid);
+					this.globalData.spid = param.pid;
+					this.globalData.pid = param.pid;
+				} else {
+					switch (queryData.scene) {
+						//扫描小程序码
+						case 1047:
+							this.globalData.code = queryData.query.scene;
+							break;
+							//长按图片识别小程序码
+						case 1048:
+							this.globalData.code = queryData.query.scene;
+							break;
+							//手机相册选取小程序码
+						case 1049:
+							this.globalData.code = queryData.query.scene;
+							break;
+							//直接进入小程序
+						case 1001:
+							this.globalData.spid = queryData.query.scene;
+							break;
+					}
 				}
 				silenceBindingSpread(this.globalData)
 			}
@@ -282,6 +278,19 @@
 			getCrmebCopyRight().then(res => {
 				uni.setStorageSync('copyRight', res.data)
 			})
+			// #ifdef MP
+			getSystemVersion().then(res => {
+				if (res.data.version_code < SYSTEM_VERSION) {
+					uni.showModal({
+						title: '提示',
+						content: '请重新打包并上传小程序',
+						success: function(res) {
+							if (res.confirm) {}
+						}
+					});
+				}
+			})
+			// #endif
 		},
 		// #ifdef H5
 		onHide() {

+ 7 - 0
template/uni-app/api/order.js

@@ -174,6 +174,13 @@ export function orderTake(uni) {
 export function express(uni, type) {
 	return request.get("order/express/" + uni + `${type?'/refund':''}`);
 }
+/**
+ * 订单查询物流信息
+ * @returns {*}
+ */
+export function adminExpress(uni, type) {
+	return request.get("admin/order/express/" + uni + `${type?'/refund':''}`);
+}
 
 /**
  * 获取退款理由

+ 10 - 1
template/uni-app/api/public.js

@@ -221,7 +221,7 @@ export function getCategoryVersion(name) {
 		noAuth: true
 	});
 }
-
+
 /**
  * 配置信息
  * 
@@ -231,3 +231,12 @@ export function basicConfig(name) {
 		noAuth: true
 	});
 }
+/**
+ * 后台版本信息
+ * 
+ */
+export function getSystemVersion() {
+	return request.get(`version`, {}, {
+		noAuth: true
+	});
+}

+ 0 - 5
template/uni-app/components/easy-loadimage/easy-loadimage.vue

@@ -75,17 +75,12 @@
 				this.$nextTick(this.onScroll)
 			},
 			handleImgLoad(e) {
-				// console.log('success');
 				this.showImg = true;
-				// this.$nextTick(function(){
-				//     this.showTransition = true
-				// })
 				setTimeout(() => {
 					this.showTransition = true
 				}, 50)
 			},
 			handleImgError(e) {
-				// console.log('fail');
 				this.isLoadError = true;
 			},
 			onScroll() {

+ 0 - 3
template/uni-app/components/payment/index.vue

@@ -119,7 +119,6 @@
 				});
 			},
 			goPay: function(number, paytype) {
-				console.log(paytype)
 				if (this.isCall) {
 					return this.$emit('onChangeFun', {
 						action: 'payCheck',
@@ -145,7 +144,6 @@
 						complete: () => {}
 					});
 				}
-				console.log('11111')
 				orderPay({
 					uni: that.order_id,
 					paytype: paytype,
@@ -168,7 +166,6 @@
 					// #endif
 				}).then(res => {
 					let jsConfig = res.data.result.jsConfig;
-					console.log(paytype)
 					if (res.data.status == 'ALLINPAY_PAY') {
 						uni.hideLoading();
 						// #ifdef MP

+ 4 - 0
template/uni-app/config/app.js

@@ -11,6 +11,10 @@ module.exports = {
 	HTTP_REQUEST_URL: window.location.protocol + "//" + window.location.host,
 	// #endif 
 
+
+	// 后台版本号
+	SYSTEM_VERSION: 510,
+	
 	// 以下配置在不做二开的前提下,不需要做任何的修改
 	HEADER: {
 		'content-type': 'application/json',

+ 0 - 17
template/uni-app/libs/login.js

@@ -75,13 +75,6 @@ function _toLogin(push, pathLogin) {
 		} else {
 			urlData += '?go_longin=1';
 		}
-		// if (!Cache.has('snsapiKey')) {
-		// 	auth.oAuth('snsapi_base', urlData);
-		// } else {
-		// 	uni.navigateTo({
-		// 		url: '/pages/users/wechat_login/index',
-		// 	});
-		// }
 		uni.navigateTo({
 			url: '/pages/users/wechat_login/index',
 		});
@@ -97,16 +90,6 @@ function _toLogin(push, pathLogin) {
 	uni.navigateTo({
 		url: '/pages/users/wechat_login/index'
 	})
-	// Routine.getCode()
-	// 	.then(code => {
-	// 		console.log(code)
-	// 		Routine.silenceAuth(code).then(res => {
-	// 			console.log(res)
-	// 		})
-	// 	})
-	// 	.catch(err => {
-	// 		uni.hideLoading();
-	// 	});
 	// #endif
 
 	// #ifdef APP-PLUS

+ 1 - 2
template/uni-app/mixins/sharePoster.js

@@ -189,8 +189,7 @@ export const sharePoster = {
 				});
 			// #endif
 			// #ifdef H5 || APP-PLUS
-			arr2 = [that.posterbackgd, that.storeImageBase64, that.PromotionCode];
-			console.log(arr2)
+			arr2 = [that.posterbackgd, that.storeImageBase64, that.PromotionCode];
 			if (!that.storeImageBase64)
 				return that.$util.Tips({
 					title: i18n.t(`正在下载海报,请稍后再试`),

+ 0 - 1
template/uni-app/pages/activity/goods_combination_details/index.vue

@@ -671,7 +671,6 @@
 					}, 500);
 
 				}).catch(function(err) {
-					console.log(err)
 					that.$util.Tips({
 						title: err
 					}, {

+ 0 - 1
template/uni-app/pages/activity/presell/index.vue

@@ -188,7 +188,6 @@
 				if (that.pageloading) return;
 				this.pageloading = true
 				getPresellList(data).then(res => {
-					console.log(res);
 					var presellList = res.data.list;
 					var loadend = presellList.length < that.limit;
 					that.page++;

+ 0 - 1
template/uni-app/pages/activity/presell_details/index.vue

@@ -706,7 +706,6 @@
 							let obj = res.data.productValue[key];
 							that.skuArr.push(obj);
 						}
-						console.log(that.skuArr)
 						that.$set(that, "selectSku", that.skuArr[0]);
 						var navList = [that.$t(`商品`), that.$t(`评价`), that.$t(`详情`)];
 						if (goodArray.length) {

Разница между файлами не показана из-за своего большого размера
+ 5803 - 5656
template/uni-app/pages/admin/components/ucharts/ucharts.js


+ 0 - 2
template/uni-app/pages/admin/custom_date/index.vue

@@ -22,8 +22,6 @@
 		},
 		methods: {
 			change(e) {
-				console.log(e)
-				
 				const {
 					before,
 					after

+ 1 - 1
template/uni-app/pages/admin/orderDetail/index.vue

@@ -190,7 +190,7 @@
 			</view>
 			<navigator class='bnt cancel'
 				v-if="orderInfo.delivery_type == 'express' && orderInfo.status==1"
-				hover-class='none' :url="'/pages/goods/goods_logistics/index?orderId='+ orderInfo.order_id">
+				hover-class='none' :url="'/pages/goods/goods_logistics/index?is_admin=1&orderId='+ orderInfo.order_id">
 				{{$t(`查看物流`)}}
 			</navigator>
 			<navigator class="bnt delivery"

+ 0 - 1
template/uni-app/pages/admin/statistics/index.vue

@@ -184,7 +184,6 @@
 		},
 		onLoad: function(options) {
 			this.type = options.type;
-			console.log(options)
 			if (options.before) {
 				this.before = options.before;
 			}

+ 0 - 1
template/uni-app/pages/annex/components/verify/verifyPoint/verifyPoint.vue

@@ -236,7 +236,6 @@
             }
         },
 		mounted() {
-			console.log(this.defaultImg)
 		}
   }
 </script>

+ 0 - 2
template/uni-app/pages/annex/components/verify/verifySlider/verifySliderPc.vue

@@ -177,7 +177,6 @@ export default {
     this.$el.onselectstart = function() {
       return false;
     };
-    console.log(this.defaultImg);
   },
   methods: {
     init() {
@@ -226,7 +225,6 @@ export default {
 
     // 鼠标按下
     start: function(e) {
-			console.log(e)
       e.preventDefault();
       e = e || window.event;
       if (!e.touches.length) {

+ 0 - 1
template/uni-app/pages/annex/web_view/index.vue

@@ -17,7 +17,6 @@
 			}
 		},
 		onLoad(option) {
-			console.log(option)
 			this.url = option.url;
 			try {
 				const res = uni.getSystemInfoSync();

+ 6 - 5
template/uni-app/pages/goods/cashier/index.vue

@@ -120,9 +120,11 @@
 							newPayList.push(item)
 						}
 					});
-					this.active = newPayList[0].index;
-					this.paytype = newPayList[0].value;
-					this.number = newPayList[0].number || 0;
+					this.$nextTick(e => {
+						this.active = newPayList[0].index;
+						this.paytype = newPayList[0].value;
+					})
+
 				},
 				immediate: true,
 				deep: true
@@ -135,7 +137,6 @@
 		},
 		onShow() {
 			let options = wx.getEnterOptionsSync();
-			console.log(options)
 			if (options.scene == '1038' && options.referrerInfo.appId == 'wxef277996acc166c3' && this.initIn) {
 				// 代表从收银台小程序返回
 				let extraData = options.referrerInfo.extraData;
@@ -206,12 +207,12 @@
 					title: this.$t(`创建订单中`)
 				});
 				getCashierOrder(this.orderId, this.fromType).then(res => {
-					console.log(res)
 					this.payPrice = this.payPriceShow = res.data.pay_price
 					this.payPostage = res.data.pay_postage
 					this.offlinePostage = res.data.offline_postage
 					this.invalidTime = res.data.invalid_time
 					this.cartArr[2].number = res.data.now_money;
+					this.number = Number(res.data.now_money) || 0;
 					uni.hideLoading();
 				}).catch(err => {
 					uni.hideLoading();

+ 7 - 3
template/uni-app/pages/goods/goods_logistics/index.vue

@@ -51,7 +51,8 @@
 
 <script>
 	import {
-		express
+		express,
+		adminExpress
 	} from '@/api/order.js';
 	import {
 		getProductHot
@@ -82,7 +83,8 @@
 				product: [],
 				orderInfo: {},
 				expressList: [],
-				hostProduct: []
+				hostProduct: [],
+				is_admin: 0
 			};
 		},
 		computed: mapGetters(['isLogin']),
@@ -103,6 +105,7 @@
 			});
 			this.orderId = options.orderId;
 			this.type = options.type;
+			this.is_admin = options.is_admin || 0;
 			if (this.isLogin) {
 				this.getExpress();
 				this.get_host_product();
@@ -142,7 +145,8 @@
 			},
 			getExpress: function() {
 				let that = this;
-				express(that.orderId, that.type).then(function(res) {
+				let met = this.is_admin ? adminExpress : express
+				met(that.orderId, that.type).then(function(res) {
 					let result = res.data.express.result || {};
 					that.$set(that, 'product', res.data.order.cartInfo || []);
 					that.$set(that, 'orderInfo', res.data.order);

+ 0 - 1
template/uni-app/pages/goods/lottery/grids/record.vue

@@ -86,7 +86,6 @@
 		},
 		filters: {
 			typeName(type) {
-				console.log(type)
 				if (type == 2) {
 					return '积分'
 				} else if (type == 3) {

+ 1 - 1
template/uni-app/pages/goods/order_confirm/index.vue

@@ -37,7 +37,7 @@
 					<view class='addressCon' v-else>
 						<view class='setaddress'>{{$t(`设置收货地址`)}}</view>
 					</view>
-					<view class='iconfont icon-jiantou'></view>
+					<view v-if="store_self_mention && is_shipping" class='iconfont icon-jiantou'></view>
 				</view>
 				<view class='address acea-row row-between-wrapper' v-else @tap="showStoreList">
 					<block v-if="storeList.length>0">

+ 0 - 2
template/uni-app/pages/goods/order_details/index.vue

@@ -605,7 +605,6 @@
 				this.getUserInfo();
 				this.getCustomerType();
 				let opt = wx.getEnterOptionsSync();
-				console.log(opt)
 				if (opt.scene == '1038' && opt.referrerInfo.appId == 'wxef277996acc166c3') {
 					// 代表从收银台小程序返回
 					let extraData = opt.referrerInfo.extraData;
@@ -702,7 +701,6 @@
 			},
 			openSubcribe(e) {
 				let page = e;
-				console.log(page)
 				// #ifndef MP
 				uni.navigateTo({
 					url: page,

+ 1 - 1
template/uni-app/pages/goods_cate/goods_cate1.vue

@@ -96,7 +96,7 @@
 		},
 		data() {
 			return {
-				defimg: require('@/static/images/2-002.png'),
+				defimg: require('@/static/images/all_cat.png'),
 				navlist: [],
 				productList: [],
 				navActive: 0,

+ 0 - 2
template/uni-app/pages/goods_cate/goods_cate3.vue

@@ -473,7 +473,6 @@
 				let list = this.cartData.cartList;
 				let num = list[index];
 				let stock = list[index].trueStock;
-				console.log(num, list[index].productInfo.limit_num)
 				if (changeValue && list[index].productInfo.limit_type == 1 && num.cart_num >= list[index].productInfo
 					.limit_num) {
 					this.$set(num, 'cart_num', list[index].productInfo.limit_num)
@@ -604,7 +603,6 @@
 						}
 					})
 					.catch(err => {
-						console.log(that.attr)
 						that.attr.productSelect.cart_num = that.attr.productSelect.limit_num
 						return that.$util.Tips({
 							title: err

+ 1 - 3
template/uni-app/pages/goods_details/index.vue

@@ -955,7 +955,6 @@
 			 */
 			ChangeAttr: function(res) {
 				let productSelect = this.productValue[res];
-				// console.log(productSelect)
 				if (!productSelect) {
 					this.$util.Tips({
 						title: this.$t(`重新选择`),
@@ -1479,7 +1478,6 @@
 						that.attr.productSelect.unique : "",
 					virtual_type: that.storeInfo.virtual_type,
 				};
-				// console.log(q)
 				postCartAdd(q)
 					.then(function(res) {
 						that.isOpen = false;
@@ -1557,6 +1555,7 @@
 			 */
 			listenerActionSheet() {
 				this.currentPage = false
+				this.downloadFilePromotionCode();
 				if (this.isLogin === false) {
 					toLogin();
 				} else {
@@ -1569,7 +1568,6 @@
 						// this.ShareInfo()
 						this.weixinStatus = true;
 					}
-					this.downloadFilePromotionCode();
 					// #endif
 					// #ifdef MP
 					// this.downloadFilePromotionCode();

+ 0 - 1
template/uni-app/pages/index/index.vue

@@ -41,7 +41,6 @@
 			getVersion(name) {
 				uni.$emit('uploadFooter')
 				getVersion(name).then(res => {
-					console.log(res, '11')
 					this.version = res.data.version
 					this.isDiy = res.data.is_diy
 					this.loading = true

+ 0 - 1
template/uni-app/pages/index/visualization/index.vue

@@ -502,7 +502,6 @@
 			diyData() {
 				let that = this;
 				getDiy().then((res) => {
-					console.log('222', res)
 					let data = res.data;
 					that.headerSerch = data.headerSerch;
 					that.swiperBg = data.swiperBg;

Разница между файлами не показана из-за своего большого размера
+ 862 - 862
template/uni-app/pages/points_mall/integral_order_details.vue


+ 0 - 0
template/uni-app/pages/users/components/verify/verifyPoint/verifyPoint.vue


Некоторые файлы не были показаны из-за большого количества измененных файлов