Переглянути джерело

Merge branch 'master' of http://18.167.157.193:1026/guanli/ngds into feature/1540-theo-auto-mesure-up

theo 3 роки тому
батько
коміт
4320601177
100 змінених файлів з 1176 додано та 725 видалено
  1. 4 4
      backendApi/config/menu.php
  2. 2 2
      backendApi/modules/v1/controllers/AtlasController.php
  3. 40 40
      backendApi/modules/v1/controllers/BonusController.php
  4. 6 6
      backendApi/modules/v1/controllers/FinanceController.php
  5. 1 1
      backendApi/modules/v1/controllers/LogController.php
  6. 3 3
      backendApi/modules/v1/controllers/ReconsumeController.php
  7. 5 5
      backendApi/modules/v1/controllers/ShopController.php
  8. 9 8
      backendApi/modules/v1/controllers/UserController.php
  9. 5 5
      backendApi/modules/v1/models/lists/bonus/PerfOrderList.php
  10. 60 60
      backendApi/modules/v1/models/lists/bonus/PeriodBonusList.php
  11. 11 11
      backendApi/modules/v1/models/lists/shop/OrderList.php
  12. 81 64
      backendApi/modules/v1/models/lists/user/IndexList.php
  13. 13 13
      backendApi/modules/v1/models/lists/user/MoveList.php
  14. 293 294
      backendEle/src/components/FilterUser.vue
  15. 1 1
      backendEle/src/components/WithdrawTable.vue
  16. 26 26
      backendEle/src/router/index.js
  17. 1 1
      backendEle/src/views/atlas/emp-user-line.vue
  18. 1 1
      backendEle/src/views/atlas/emp-user-list.vue
  19. 1 1
      backendEle/src/views/atlas/network-line-opt.vue
  20. 1 1
      backendEle/src/views/atlas/relation-list.vue
  21. 1 1
      backendEle/src/views/bonus/cf-lx-audit-list.vue
  22. 1 1
      backendEle/src/views/bonus/flow-cf.vue
  23. 1 1
      backendEle/src/views/bonus/flow-lx.vue
  24. 1 1
      backendEle/src/views/bonus/flow-rp.vue
  25. 1 1
      backendEle/src/views/bonus/perf-order.vue
  26. 1 1
      backendEle/src/views/bonus/perf-standard.vue
  27. 1 1
      backendEle/src/views/bonus/period-perf.vue
  28. 2 2
      backendEle/src/views/bonus/resend-qy-audit-list.vue
  29. 1 1
      backendEle/src/views/bonus/resend-qy-list.vue
  30. 1 1
      backendEle/src/views/bonus/trace-bt.vue
  31. 1 1
      backendEle/src/views/bonus/trace-down-bd.vue
  32. 1 1
      backendEle/src/views/bonus/trace-down-fx.vue
  33. 1 1
      backendEle/src/views/bonus/trace-down-gl.vue
  34. 1 1
      backendEle/src/views/bonus/trace-down-gx.vue
  35. 1 1
      backendEle/src/views/bonus/trace-down-qy.vue
  36. 1 1
      backendEle/src/views/bonus/trace-down-tg.vue
  37. 1 1
      backendEle/src/views/bonus/trace-down-xf.vue
  38. 1 1
      backendEle/src/views/bonus/trace-down-yc.vue
  39. 1 1
      backendEle/src/views/bonus/trace-down-yj.vue
  40. 1 1
      backendEle/src/views/bonus/trace-fl.vue
  41. 1 1
      backendEle/src/views/bonus/trace-fw.vue
  42. 1 1
      backendEle/src/views/bonus/trace-up-bd.vue
  43. 1 1
      backendEle/src/views/bonus/trace-up-fx.vue
  44. 1 1
      backendEle/src/views/bonus/trace-up-gl.vue
  45. 1 1
      backendEle/src/views/bonus/trace-up-gx.vue
  46. 1 1
      backendEle/src/views/bonus/trace-up-qy.vue
  47. 1 1
      backendEle/src/views/bonus/trace-up-tg.vue
  48. 1 1
      backendEle/src/views/bonus/trace-up-xf.vue
  49. 1 1
      backendEle/src/views/bonus/trace-up-yc.vue
  50. 1 1
      backendEle/src/views/bonus/trace-up-yj.vue
  51. 9 2
      backendEle/src/views/config/bonus-opt.vue
  52. 1 1
      backendEle/src/views/finance/history-bonus.vue
  53. 2 2
      backendEle/src/views/finance/perf-audit-list.vue
  54. 1 1
      backendEle/src/views/finance/recharge.vue
  55. 1 1
      backendEle/src/views/finance/withdraw.vue
  56. 1 1
      backendEle/src/views/reconsume/change-audit-list.vue
  57. 1 1
      backendEle/src/views/reconsume/flow-list.vue
  58. 1 1
      backendEle/src/views/reconsume/pool-list.vue
  59. 1 1
      backendEle/src/views/report/dec-table.vue
  60. 1 1
      backendEle/src/views/user/bind.vue
  61. 1 1
      backendEle/src/views/user/change-show-emp-level.vue
  62. 1 1
      backendEle/src/views/user/group.vue
  63. 3 3
      backendEle/src/views/user/index.vue
  64. 1 1
      backendEle/src/views/user/status-audit-list.vue
  65. 1 1
      backendEle/src/views/user/system.vue
  66. 1 1
      backendEle/src/views/user/teamwork.vue
  67. 13 13
      backendEle/src/views/user/user-add-opt.vue
  68. 1 1
      backendEle/src/views/user/year-highest-emp-lv.vue
  69. 5 1
      common/config/params.php
  70. 186 43
      common/helpers/bonus/BonusCalc.php
  71. 14 2
      common/helpers/bonus/BonusSend.php
  72. 22 0
      common/helpers/bonus/CalcCache.php
  73. 1 1
      common/helpers/bonus/PerfCalc.php
  74. 23 3
      common/helpers/user/Balance.php
  75. 3 3
      common/libs/export/BaseExport.php
  76. 5 1
      common/models/BalanceAudit.php
  77. 6 4
      common/models/CalcBonus.php
  78. 6 1
      common/models/CalcBonusGarage.php
  79. 5 0
      common/models/CalcBonusTourism.php
  80. 78 0
      common/models/CalcBonusVilla.php
  81. 6 3
      common/models/DealType.php
  82. 1 1
      common/models/DeclarationPackage.php
  83. 81 0
      common/models/FlowVillaPoints.php
  84. 1 1
      common/models/PerfOrder.php
  85. 19 4
      common/models/ShopGoods.php
  86. 10 5
      common/models/UserBonus.php
  87. 2 2
      common/models/forms/AdminAddUserForm.php
  88. 1 1
      common/models/forms/DecPackageForm.php
  89. 2 0
      common/models/forms/OrderForm.php
  90. 1 1
      common/models/forms/RechargeForm.php
  91. 9 9
      common/models/forms/ShopGoodsForm.php
  92. 18 6
      frontendApi/modules/v1/controllers/BonusController.php
  93. 11 7
      frontendApi/modules/v1/controllers/ShopController.php
  94. 2 2
      frontendEle/src/utils/tool.js
  95. 2 2
      frontendEle/src/views/shop/dec-order-list.vue
  96. 3 2
      frontendEle/src/views/shop/index.vue
  97. 2 3
      frontendEle/src/views/shop/order-list.vue
  98. 10 4
      frontendEle/src/views/shop/order.vue
  99. 3 1
      frontendEle/src/views/user/dec.vue
  100. 2 0
      frontendEle/src/views/user/upgrade.vue

+ 4 - 4
backendApi/config/menu.php

@@ -86,9 +86,9 @@ return [
             ['name'=>'修改个人资料', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'modify-profile', 'routePath'=>'user/modify-profile', 'show'=>0,],
             ['name'=>'会员状态', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'modify-status', 'routePath'=>'user/modify-status', 'show'=>0,],
             ['name'=>'密码修改状态', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'is-modify-password-status', 'routePath'=>'user/is-modify-password-status', 'show'=>0,],
-            ['name'=>'Empty order operation', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'user-add-opt', 'routePath'=>'user/user-add-opt', 'show'=>1,],//空单操作
+//            ['name'=>'Empty order operation', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'user-add-opt', 'routePath'=>'user/user-add-opt', 'show'=>1,],//空单操作
             ['name'=>'空单添加', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'user-add', 'routePath'=>'user/user-add', 'show'=>0,],
-            ['name'=>'Empty list', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'empty-list', 'routePath'=>'user/empty-list', 'show'=>1,],//空单列表
+//            ['name'=>'Empty list', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'empty-list', 'routePath'=>'user/empty-list', 'show'=>0,], // 空单列表
 //            ['name'=>'空单批量1导入', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'import-users-to-excel-table', 'routePath'=>'user/import-users-to-excel-table', 'show'=>0,],
 //            ['name'=>'空单批量2添加', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'import-users-add', 'routePath'=>'user/import-users-add', 'show'=>0,],
 //            ['name'=>'空单删除', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'user-del', 'routePath'=>'user/user-del', 'show'=>0,],
@@ -109,7 +109,7 @@ return [
             //['name'=>'体系导出', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'system-export', 'routePath'=>'user/system-export', 'show'=>0,],
             //['name'=>'团队领导人列表', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'group', 'routePath'=>'user/group', 'show'=>1,],
             //['name'=>'团队领导人列表导出', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'group-export', 'routePath'=>'user/group-export', 'show'=>0,],
-            ['name'=>'Mobile network management', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'move', 'routePath'=>'user/move', 'show'=>1,],//移网管理
+            ['name'=>'Move network management', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'move', 'routePath'=>'user/move', 'show'=>1,],//移网管理
             ['name'=>'申请移网', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'move-add', 'routePath'=>'user/move-add', 'show'=>0,],
             ['name'=>'移网修改并审核', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'move-pass', 'routePath'=>'user/move-pass', 'show'=>0,],
             ['name'=>'移网审核', 'class'=>'', 'icon'=>'', 'controller'=>'user', 'action'=>'move-audit', 'routePath'=>'user/move-audit', 'show'=>0,],
@@ -269,7 +269,7 @@ return [
 //            ['name'=>'报单中心货补追溯导出', 'class'=>'', 'icon'=>'', 'controller'=>'bonus', 'action'=>'trace-fl-export', 'routePath'=>'bonus/trace-fl-export', 'show'=>0,],
 //            ['name'=>'区域业绩提成追溯', 'class'=>'', 'icon'=>'', 'controller'=>'bonus', 'action'=>'trace-fw', 'routePath'=>'bonus/trace-fw', 'show'=>1,],
 //            ['name'=>'区域业绩提成追溯导出', 'class'=>'', 'icon'=>'', 'controller'=>'bonus', 'action'=>'trace-fw-export', 'routePath'=>'bonus/trace-fw-export', 'show'=>0,],
-            ['name'=>'Performance sheet', 'class'=>'', 'icon'=>'', 'controller'=>'bonus', 'action'=>'perf-order', 'routePath'=>'bonus/perf-order', 'show'=>1,],//业绩单
+            ['name'=>'Sales Record', 'class'=>'', 'icon'=>'', 'controller'=>'bonus', 'action'=>'perf-order', 'routePath'=>'bonus/perf-order', 'show'=>1,],//业绩单
             ['name'=>'业绩单导出', 'class'=>'', 'icon'=>'', 'controller'=>'bonus', 'action'=>'perf-order-export', 'routePath'=>'bonus/perf-order-export', 'show'=>0,],
 //            ['name'=>'会员实时业绩', 'class'=>'', 'icon'=>'', 'controller'=>'bonus', 'action'=>'real-time-perf', 'routePath'=>'bonus/real-time-perf', 'show'=>1,],
             ['name'=>'Period performance', 'class'=>'', 'icon'=>'', 'controller'=>'bonus', 'action'=>'perf-period-list', 'routePath'=>'bonus/perf-period-list', 'show'=>1,],//期业绩

+ 2 - 2
backendApi/modules/v1/controllers/AtlasController.php

@@ -149,7 +149,7 @@ class AtlasController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -214,7 +214,7 @@ class AtlasController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**

+ 40 - 40
backendApi/modules/v1/controllers/BonusController.php

@@ -287,7 +287,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -342,7 +342,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
 
@@ -394,7 +394,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
 
@@ -450,7 +450,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -505,7 +505,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -562,7 +562,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -619,7 +619,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -670,7 +670,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -823,7 +823,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -905,7 +905,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -1063,7 +1063,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -1106,7 +1106,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -1156,7 +1156,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -1206,7 +1206,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
 
@@ -1257,7 +1257,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -1307,7 +1307,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -1357,7 +1357,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -1407,7 +1407,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -1457,7 +1457,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -1507,7 +1507,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
 
@@ -1558,7 +1558,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -1608,7 +1608,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -1658,7 +1658,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -1708,7 +1708,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -1758,7 +1758,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -1808,7 +1808,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
 
@@ -1859,7 +1859,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -1909,7 +1909,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -2022,7 +2022,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -2100,7 +2100,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -2194,7 +2194,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -2264,7 +2264,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -2324,7 +2324,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -2384,7 +2384,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -2458,7 +2458,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -2502,7 +2502,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -2548,7 +2548,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -2592,7 +2592,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
 
@@ -2639,7 +2639,7 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
 
@@ -2768,6 +2768,6 @@ class BonusController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 }

+ 6 - 6
backendApi/modules/v1/controllers/FinanceController.php

@@ -129,7 +129,7 @@ class FinanceController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -311,7 +311,7 @@ class FinanceController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -477,7 +477,7 @@ class FinanceController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -743,7 +743,7 @@ class FinanceController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -1079,7 +1079,7 @@ class FinanceController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -1125,7 +1125,7 @@ class FinanceController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**

+ 1 - 1
backendApi/modules/v1/controllers/LogController.php

@@ -100,7 +100,7 @@ class LogController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**

+ 3 - 3
backendApi/modules/v1/controllers/ReconsumeController.php

@@ -68,7 +68,7 @@ class ReconsumeController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -123,7 +123,7 @@ class ReconsumeController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -391,7 +391,7 @@ class ReconsumeController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**

+ 5 - 5
backendApi/modules/v1/controllers/ShopController.php

@@ -97,7 +97,7 @@ class ShopController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -356,7 +356,7 @@ class ShopController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     // 删除订单
@@ -417,7 +417,7 @@ class ShopController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -690,7 +690,7 @@ class ShopController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -719,7 +719,7 @@ class ShopController extends BaseController {
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**

+ 9 - 8
backendApi/modules/v1/controllers/UserController.php

@@ -207,7 +207,7 @@ class UserController extends BaseController
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -320,7 +320,7 @@ class UserController extends BaseController
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -447,7 +447,7 @@ class UserController extends BaseController
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -568,7 +568,7 @@ class UserController extends BaseController
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -681,7 +681,7 @@ class UserController extends BaseController
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -749,7 +749,7 @@ class UserController extends BaseController
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -887,6 +887,7 @@ class UserController extends BaseController
             $userInfo['EXCHANGE_POINTS'] = Balance::getBalanceExchangePoints($userInfo['ID']);
             $userInfo['TOURISM_POINTS'] = Balance::getAccountBalance($userInfo['ID'], 'tourism_points');
             $userInfo['GARAGE_POINTS'] = Balance::getAccountBalance($userInfo['ID'], 'garage_points');
+            $userInfo['VILLA_POINTS'] = Balance::getAccountBalance($userInfo['ID'], 'villa_points');
             return static::notice($userInfo);
         }else{
             return static::notice('Member number does not exist', 400);//会员编号不存在
@@ -1910,7 +1911,7 @@ class UserController extends BaseController
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**
@@ -2207,7 +2208,7 @@ class UserController extends BaseController
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
-        return static::notice('导出开始,请到文件管理-导出文件查看');
+        return static::notice('Starting exporting, please go to File Management - Export Files to view.'); // 导出开始,请到文件管理-导出文件查看
     }
 
     /**

+ 5 - 5
backendApi/modules/v1/models/lists/bonus/PerfOrderList.php

@@ -67,7 +67,7 @@ class PerfOrderList extends \common\libs\dataList\DataList implements DataListIn
                     ],
                 ],
                 'SN' => [
-                    'header' => 'Sales No.',//业绩单编号
+                    'header' => 'Sales No',//业绩单编号
                     'value' => function($row) {
                         return "\t".$row['SN'];
                     },
@@ -82,7 +82,7 @@ class PerfOrderList extends \common\libs\dataList\DataList implements DataListIn
                     ],
                     'value' => function($row){
                         $decTypes = [
-                            'ZC'=> 'First purchase order',//首购单
+                            'ZC'=> 'Welcome Pack order',//首购单
                             'YH'=> 'Coupon',//优惠单
                             'ZG'=> 'Additional purchase order',//增购单
                             'LS'=> 'Retail order',//零售单
@@ -150,7 +150,7 @@ class PerfOrderList extends \common\libs\dataList\DataList implements DataListIn
                     ],
                 ],
                 'FROM_TABLES' => [
-                    'header' => '订单来源',
+                    'header' => 'Order Source',
                     'headerOther' => [
                         'width' => '250',
                     ],
@@ -178,8 +178,8 @@ class PerfOrderList extends \common\libs\dataList\DataList implements DataListIn
         if(!$this->filterTypes){
             $this->filterTypes = [
                 'PERIOD_NUM'=> ['isUserTable'=> false, 'name'=> 'Pay Cycle(PC)'], // 结算期数
-                'SN'=> ['isUserTable'=> false, 'name'=> 'Performance sheet No'], // 业绩单编号
-                'DEC_STATUS_NAME'=> ['isUserTable'=> false, 'name'=> 'Performance sheet status','other'=> 'select',
+                'SN'=> ['isUserTable'=> false, 'name'=> 'Sales No'], // 业绩单编号
+                'DEC_STATUS_NAME'=> ['isUserTable'=> false, 'name'=> 'Status','other'=> 'select',
                  'selectData'=> [['id'=> 1, 'name'=> 'Reviewed'], ['id'=> 2, 'name'=> 'Waste disposal']],], // 业绩单状态,已审核,置废
                 'USER_NAME'=> ['isUserTable'=> false, 'name'=> 'Member code'], // 会员编号
                 'REAL_NAME'=> ['isUserTable'=> false, 'name'=> 'Member name'], // 会员姓名

+ 60 - 60
backendApi/modules/v1/models/lists/bonus/PeriodBonusList.php

@@ -294,18 +294,18 @@ class PeriodBonusList extends \common\libs\dataList\DataList implements DataList
                         'prop'=>'BONUS_TG',
                     ],
                 ],
-                'ORI_BONUS_TG' => [
-                    'header' => 'Original amount of Welcome Bonus',//销售奖金原金额
-                    'value' => function($row) {
-                        return (new Price([
-                            'value' => $row['ORI_BONUS_TG'],
-                        ]))->result();
-                    },
-                    'headerOther' => [
-                        'width' => '120',
-                        'prop'=>'ORI_BONUS_TG',
-                    ],
-                ],
+//                'ORI_BONUS_TG' => [
+//                    'header' => 'Original amount of Welcome Bonus',//销售奖金原金额
+//                    'value' => function($row) {
+//                        return (new Price([
+//                            'value' => $row['ORI_BONUS_TG'],
+//                        ]))->result();
+//                    },
+//                    'headerOther' => [
+//                        'width' => '120',
+//                        'prop'=>'ORI_BONUS_TG',
+//                    ],
+//                ],
                 'BONUS_QY' => [
                     'header' => 'Team Bonus',//绩效奖金
                     'value' => function($row) {
@@ -318,18 +318,18 @@ class PeriodBonusList extends \common\libs\dataList\DataList implements DataList
                         'prop'=>'BONUS_QY',
                     ],
                 ],
-                'ORI_BONUS_QY' => [
-                    'header' => 'Original amount of Team Bonus',//绩效奖金原金额
-                    'value' => function($row) {
-                        return (new Price([
-                            'value' => $row['ORI_BONUS_QY'],
-                        ]))->result();
-                    },
-                    'headerOther' => [
-                        'width' => '120',
-                        'prop'=>'ORI_BONUS_QY',
-                    ],
-                ],
+//                'ORI_BONUS_QY' => [
+//                    'header' => 'Original amount of Team Bonus',//绩效奖金原金额
+//                    'value' => function($row) {
+//                        return (new Price([
+//                            'value' => $row['ORI_BONUS_QY'],
+//                        ]))->result();
+//                    },
+//                    'headerOther' => [
+//                        'width' => '120',
+//                        'prop'=>'ORI_BONUS_QY',
+//                    ],
+//                ],
                 'ORI_CAPPED_BONUS_QY' => [
                     'header' => 'Uncapped amount of Team Award',//绩效奖未封顶金额
                     'value' => function($row) {
@@ -366,18 +366,18 @@ class PeriodBonusList extends \common\libs\dataList\DataList implements DataList
                         'prop'=>'BONUS_BS',
                     ],
                 ],
-                'ORI_BONUS_BS' => [
-                    'header' => 'Original amount of Director Bonus',
-                    'value' => function($row) {
-                        return (new Price([
-                            'value' => $row['ORI_BONUS_BS'],
-                        ]))->result();
-                    },
-                    'headerOther' => [
-                        'width' => '120',
-                        'prop'=>'ORI_BONUS_BS',
-                    ],
-                ],
+//                'ORI_BONUS_BS' => [
+//                    'header' => 'Original amount of Director Bonus',
+//                    'value' => function($row) {
+//                        return (new Price([
+//                            'value' => $row['ORI_BONUS_BS'],
+//                        ]))->result();
+//                    },
+//                    'headerOther' => [
+//                        'width' => '120',
+//                        'prop'=>'ORI_BONUS_BS',
+//                    ],
+//                ],
                 // 'REAL_BONUS_BS' => [
                 //     'header' => '实发蓝星管理奖',
                 //     'value' => function($row) {
@@ -486,18 +486,18 @@ class PeriodBonusList extends \common\libs\dataList\DataList implements DataList
                         'prop'=>'BONUS_BD',
                     ],
                 ],
-                'ORI_BONUS_BD' => [
-                    'header' => 'Original amount of Stockist Commission',//服务奖原金额
-                    'value' => function($row) {
-                        return (new Price([
-                            'value' => $row['ORI_BONUS_BD'],
-                        ]))->result();
-                    },
-                    'headerOther' => [
-                        'width' => '120',
-                        'prop'=>'ORI_BONUS_BD',
-                    ],
-                ],
+//                'ORI_BONUS_BD' => [
+//                    'header' => 'Original amount of Stockist Commission',//服务奖原金额
+//                    'value' => function($row) {
+//                        return (new Price([
+//                            'value' => $row['ORI_BONUS_BD'],
+//                        ]))->result();
+//                    },
+//                    'headerOther' => [
+//                        'width' => '120',
+//                        'prop'=>'ORI_BONUS_BD',
+//                    ],
+//                ],
                 'REAL_BONUS_QUARTER' => [
                     'header' => 'Quarterly Bonus',// 季度分红
                     'value' => function($row) {
@@ -510,18 +510,18 @@ class PeriodBonusList extends \common\libs\dataList\DataList implements DataList
                         'prop'=>'REAL_BONUS_QUARTER',
                     ],
                 ],
-                'ORI_BONUS_QUARTER' => [
-                    'header' => 'Original amount of Quarterly Bonus',//季度分红原金额
-                    'value' => function($row) {
-                        return (new Price([
-                            'value' => $row['ORI_BONUS_QUARTER'],
-                        ]))->result();
-                    },
-                    'headerOther' => [
-                        'width' => '120',
-                        'prop'=>'ORI_BONUS_QUARTER',
-                    ],
-                ],
+//                'ORI_BONUS_QUARTER' => [
+//                    'header' => 'Original amount of Quarterly Bonus',//季度分红原金额
+//                    'value' => function($row) {
+//                        return (new Price([
+//                            'value' => $row['ORI_BONUS_QUARTER'],
+//                        ]))->result();
+//                    },
+//                    'headerOther' => [
+//                        'width' => '120',
+//                        'prop'=>'ORI_BONUS_QUARTER',
+//                    ],
+//                ],
                 'BONUS_REAL' => [
                     'header' => 'Actual Bonus',//实发奖金
                     'value' => function($row) {

+ 11 - 11
backendApi/modules/v1/models/lists/shop/OrderList.php

@@ -190,7 +190,7 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                     ],
                 ],
                 'PERIOD_NUM' => [
-                    'header' => 'Number of periods',//期数
+                    'header' => 'Period',//期数
                 ],
                 'ORDER_TYPE' => [
                     'header' => 'Order type',//订单类型
@@ -206,9 +206,9 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                         }
                     },
                 ],
-                'WAREHOUSE' => [
-                    'header' => 'Delivery warehouse',//发货仓
-                ],
+//                'WAREHOUSE' => [
+//                    'header' => 'Delivery warehouse',//发货仓
+//                ],
                 'CREATED_AT' => [
                     'header' => 'Creation time',//创建时间
                     'value' => function ($row) {
@@ -244,7 +244,7 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                     'headerOther' => ['width' => '190'],
                 ],
                 'REAL_PRICE' => [
-                    'header' => 'item pricing',//商品单价
+                    'header' => 'Item Pricing',//商品单价
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -272,7 +272,7 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                     },
                 ],
                 'PAY_FREIGHT' => [
-                    'header' => 'freight',//运费
+                    'header' => 'Freight',//运费
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -286,7 +286,7 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                     },
                 ],
                 'TAX_RATE' => [
-                    'header' => 'Tax rate',//税率
+                    'header' => 'Tax Rate',//税率
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -318,18 +318,18 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                     'headerOther' => ['width' => '150'],
                 ],
                 'ORDER_TRACK_NO' => [
-                    'header' => 'courier number',//快递单号
+                    'header' => 'Courier Number',//快递单号
                     'headerOther' => ['width' => '200'],
                 ],
                 'EXPRESS_TYPE' => [
-                    'header' => 'Shipping method',//发货方式
+                    'header' => 'Shipping Method',//发货方式
                     'headerOther' => ['width' => '150'],
                     'value' => function ($row) {
                         return $row['EXPRESS_TYPE']==0 ? 'mailing ':' auto pick ';//'邮寄' : '自提'
                     },
                 ],
                 'FRONT_REMARK' => [
-                    'header' => 'Member notes',//会员备注
+                    'header' => 'Member Notes',//会员备注
                     'headerOther' => [
                         'width' => '200',
                     ],
@@ -342,7 +342,7 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                 ],
                 'DELIVERY_STATUS' => null,
                 'DELIVERY_STATUS_NAME' => [
-                    'header' => 'Shipment status',//发货状态
+                    'header' => 'Shipment Status',//发货状态
                     'headerOther' => [
                         'width' => '110',
                     ],

+ 81 - 64
backendApi/modules/v1/models/lists/user/IndexList.php

@@ -81,6 +81,7 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
     public function getColumn(){
         $decLevelConfig = Cache::getDecLevelConfig();
         $empLevelConfig = Cache::getEmpLevelConfig();
+        $starLevelConfig = Cache::getStarCrownLevelConfig();
         $decRoleConfig = DecRole::getAllData();
         $systemConfig = UserSystem::getAllSystems();
         $openBankConfig = OpenBank::getAllOpenBank();
@@ -110,7 +111,7 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                     'headerOther' => ['width' => '110'],
                 ],
                 'STATUS' => [
-                    'header' => 'status',//状态
+                    'header' => 'Status',//状态
                     'value' => function($row) {
                         return $row['STATUS'] == 1 ? 'activate': 'lock';//'激活' : '锁定'
                     },
@@ -126,11 +127,14 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                     },
                     'headerOther' => ['width' => '170'],
                 ],
-                'PERIOD_AT' => 'Joining Period',//加入期数
+                'PERIOD_AT' => [
+                    'header' => 'Joining Period',//加入期数
+                    'headerOther' => ['width' => '180'],
+                ],
                 'DEC_LV_NAME' => [
                     'header' => 'Real time membership level',//实时会员级别
                     'headerOther' => [
-                        'width' => '110',
+                        'width' => '120',
                     ],
                     'value' => function($row) use($decLevelConfig) {
                         return $decLevelConfig[$row['DEC_LV']]['LEVEL_NAME'];
@@ -146,7 +150,7 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                             'value' => $row['DEC_LV_UPDATED_AT'],
                         ]))->result();
                     },
-                    'headerOther' => ['width' => '170'],
+                    'headerOther' => ['width' => '160'],
                 ],
                 'LAST_DEC_LV_NAME' => [
                     'header' => 'Member level at settlement',//结算时会员级别
@@ -176,6 +180,18 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                         'tag'=>['type'=>'warning', 'size' => 'small', 'class'=>'no-border']
                     ],
                 ],
+                'STAR_LV_NAME' => [
+                    'header' => 'Real time crown', // 实时星级
+                    'headerOther' => [
+                        'width' => '130',
+                    ],
+                    'value' => function($row) use($starLevelConfig) {
+                        return isset($starLevelConfig[$row['STAR_LV']])?$starLevelConfig[$row['STAR_LV']]['LEVEL_NAME']:'';
+                    },
+                    'valueOther' => [
+                        'tag'=>['type'=>'warning', 'size' => 'small', 'class'=>'no-border']
+                    ],
+                ],
 //                'HIGHEST_EMP_LV_NAME' => [
 //                    'header' => '历史最高聘级',
 //                    'value' => function($row) use($empLevelConfig) {
@@ -278,24 +294,24 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                         ];
                     },
                 ],
-                'IS_STUDIO' => [
-                    'header' => 'Studio or not',//是否工作室
-                    'value' => function($row) {
-                        return (new YesNo([
-                            'value' => $row['IS_STUDIO'],
-                        ]))->result();
-                    },
-                    'headerOther' => function($row) {
-                        return [
-                            'width' => '120',
-                        ];
-                    },
-                    'valueOther' => function($row) {
-                        return [
-                            'tag'=>['type'=>(isset($row['IS_STUDIO']) && $row['IS_STUDIO'] )? 'success' : 'info', 'size' => 'small']
-                        ];
-                    },
-                ],
+//                'IS_STUDIO' => [
+//                    'header' => 'Studio or not',//是否工作室
+//                    'value' => function($row) {
+//                        return (new YesNo([
+//                            'value' => $row['IS_STUDIO'],
+//                        ]))->result();
+//                    },
+//                    'headerOther' => function($row) {
+//                        return [
+//                            'width' => '120',
+//                        ];
+//                    },
+//                    'valueOther' => function($row) {
+//                        return [
+//                            'tag'=>['type'=>(isset($row['IS_STUDIO']) && $row['IS_STUDIO'] )? 'success' : 'info', 'size' => 'small']
+//                        ];
+//                    },
+//                ],
                 'IS_ATLAS' => [
                     'header' => 'Whether the atlas is displayed',//是否显示图谱
                     'value' => function($row) {
@@ -500,13 +516,13 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
 //                        ];
 //                    },
 //                ],
-                'BIRTHDAY' => [
-                    'header' => 'birthday',//生日
-                    'value' => function($row) {
-                        return date('Y-m-d', strtotime($row['BIRTHDAY']));
-                    },
-                    'headerOther' => ['width' => '110'],
-                ],
+//                'BIRTHDAY' => [
+//                    'header' => 'birthday',//生日
+//                    'value' => function($row) {
+//                        return date('Y-m-d', strtotime($row['BIRTHDAY']));
+//                    },
+//                    'headerOther' => ['width' => '110'],
+//                ],
                 'ALLOW_TRANSFER' => [
                     'header' => 'Enable "Transfer"', // 转账功能开启
                     'value' => function($row) {
@@ -523,40 +539,40 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                         ];
                     },
                 ],
-                'DEC_CLOSED' => [
-                    'header' => 'Close entry',//是否关闭报单
-                    'value' => function($row) {
-                        return (new YesNo([
-                            'value' => $row['DEC_CLOSED'],
-                        ]))->result();
-                    },
-                    'headerOther' => function($row) {
-                        return [
-                            'width' => '120',
-                        ];
-                    },
-                    'valueOther' => function($row) {
-                        return [
-                            'tag'=>['type'=>(isset($row['DEC_CLOSED']) && $row['DEC_CLOSED']) ? 'info' : 'success', 'size' => 'small']
-                        ];
-                    },
-                ],
-                'IS_MODIFY_PASSWORD' => [
-                    'header' => 'Edit Password', // 密码修改状态
-                    'value' => function($row) {
-                        return $row['IS_MODIFY_PASSWORD'] == 1 ? 'on': 'off';//'开启' : '关闭'
-                    },
-                    'headerOther' => function($row) {
-                        return [
-                            'width' => '120',
-                        ];
-                    },
-                    'valueOther' => function($row) {
-                        return [
-                            'tag'=>['type'=>(isset($row['IS_MODIFY_PASSWORD']) && $row['IS_MODIFY_PASSWORD'] )? 'success' : 'info', 'size' => 'small']
-                        ];
-                    },
-                ],
+//                'DEC_CLOSED' => [
+//                    'header' => 'Close entry',//是否关闭报单
+//                    'value' => function($row) {
+//                        return (new YesNo([
+//                            'value' => $row['DEC_CLOSED'],
+//                        ]))->result();
+//                    },
+//                    'headerOther' => function($row) {
+//                        return [
+//                            'width' => '120',
+//                        ];
+//                    },
+//                    'valueOther' => function($row) {
+//                        return [
+//                            'tag'=>['type'=>(isset($row['DEC_CLOSED']) && $row['DEC_CLOSED']) ? 'info' : 'success', 'size' => 'small']
+//                        ];
+//                    },
+//                ],
+//                'IS_MODIFY_PASSWORD' => [
+//                    'header' => 'Edit Password', // 密码修改状态
+//                    'value' => function($row) {
+//                        return $row['IS_MODIFY_PASSWORD'] == 1 ? 'on': 'off';//'开启' : '关闭'
+//                    },
+//                    'headerOther' => function($row) {
+//                        return [
+//                            'width' => '120',
+//                        ];
+//                    },
+//                    'valueOther' => function($row) {
+//                        return [
+//                            'tag'=>['type'=>(isset($row['IS_MODIFY_PASSWORD']) && $row['IS_MODIFY_PASSWORD'] )? 'success' : 'info', 'size' => 'small']
+//                        ];
+//                    },
+//                ],
             ];
         }
         return $this->columns;
@@ -578,7 +594,8 @@ class IndexList extends \common\libs\dataList\DataList implements DataListInterf
                 'DEC_LV_NAME'=> ['name'=> 'Real time membership level', 'other'=> 'decLevel'], // 实时会员级别
 //                'DEC_LV_UPDATED_AT'=> ['name'=> '实时调整日期', 'other'=> 'date'],
 //                'LAST_DEC_LV_NAME'=> ['name'=> '结算时会员级别', 'other'=> 'decLevel'],
-                'EMP_LV_NAME'=> ['name'=> 'Real time employment', 'other'=> 'empLevel'],//实时聘级
+                'EMP_LV_NAME'=> ['name'=> 'Real time employment', 'other'=> 'empLevel'], // 实时聘级
+                'STAR_LV_NAME'=> ['name'=> 'Real time Crown', 'other'=> 'starLevel'], // 实时聘级
 //                'HIGHEST_EMP_LV_NAME'=> ['name'=> '历史最高聘级', 'other'=> 'empLevel'],
 //                'HIGHEST_EMP_LV_PERIOD'=> ['name'=> '首次达到历史最高聘级的期数'],
                 'REC_USER_NAME'=> ['name'=> 'Recommendation No'],//推荐编号

+ 13 - 13
backendApi/modules/v1/models/lists/user/MoveList.php

@@ -61,11 +61,11 @@ class MoveList extends \common\libs\dataList\DataList implements DataListInterfa
                 'ID' => null,
                 'USER_ID' => null,
                 'MOVE_USER_NAME' => [
-                    'header' => 'Mobile members',//移动的会员
+                    'header' => 'Move members', // 移动的会员
                     'headerOther' => ['width' => '150'],
                 ],
                 'MOVE_REAL_NAME' => [
-                    'header' => 'Mobile members name',//移动的会员名字
+                    'header' => 'Move members name', // 移动的会员名字
                     'headerOther' => [
                         'width' => '150',
                     ],
@@ -74,15 +74,15 @@ class MoveList extends \common\libs\dataList\DataList implements DataListInterfa
                     ],
                 ],
                 'FROM_USER_NAME' => [
-                    'header' => 'Move front contact',//移动前接点
+                    'header' => 'Uper member code before moving', // 移动前接点
                     'headerOther' => ['width' => '150'],
                 ],
                 'TO_USER_NAME' => [
-                    'header' => 'Moving rear contact',//移动后接点
+                    'header' => 'Uper member code after moving', // 移动后接点
                     'headerOther' => ['width' => '150'],
                 ],
                 'TYPE' => [
-                    'header' => 'Network transfer type',//移网类型
+                    'header' => 'Type of moving', // 移网类型
                     'headerOther' => [
                         'width' => '120',
                     ],
@@ -91,19 +91,19 @@ class MoveList extends \common\libs\dataList\DataList implements DataListInterfa
                     },
                 ],
                 'LOCATION' => [
-                    'header' => 'Move to position',//移动到位置
+                    'header' => 'Position', // 移动到位置
                     'headerOther' => ['width' => '150'],
                 ],
-                'PERIOD_NUM' => 'Number of periods when moving',//移动时的期数
+                'PERIOD_NUM' => 'Period of moving', // 移动时的期数
                 'IS_MOVING' => [
-                    'header' => 'Are you moving',//是否正在移动
+                    'header' => 'Whether to move', // 是否正在移动
                     'headerOther' => ['width' => '100'],
                 ],
                 'MOVE_PERCENT' => [
-                    'header' => 'Movement percentage',//移动百分比
+                    'header' => 'Percentage', // 移动百分比
                 ],
                 'MOVE_ADMIN_NAME' => [
-                    'header' => 'Mobile administrator',//移网管理员
+                    'header' => 'Administrator of moving',//移网管理员
                     'headerOther' => ['width' => '120'],
                 ],
                 'CREATED_AT' => [
@@ -117,18 +117,18 @@ class MoveList extends \common\libs\dataList\DataList implements DataListInterfa
                 ],
                 'AUDIT_STATUS' => null,
                 'AUDIT_STATUS_NAME' => [
-                    'header' => 'Audit status',//审核状态
+                    'header' => 'Status',//审核状态
                     'headerOther' => ['width' => '100'],
                     'value' => function ($row) {
                         return UserMove::STATUS_NAME[$row['AUDIT_STATUS']];
                     },
                 ],
                 'AUDIT_ADMIN_NAME' => [
-                    'header' => 'Audit administrator',//审核管理员
+                    'header' => 'Administrator of reviewing',//审核管理员
                     'headerOther' => ['width' => '100'],
                 ],
                 'AUDITED_AT' => [
-                    'header' => 'Audit time',//审核时间
+                    'header' => 'Review time',//审核时间
                     'value' => function ($row) {
                         return (new DateTime([
                             'value' => $row['AUDITED_AT'],

+ 293 - 294
backendEle/src/components/FilterUser.vue

@@ -121,330 +121,329 @@
 </template>
 
 <script>
-  import network from '@/utils/network'
-  import baseInfo from '@/utils/baseInfo'
-  import store from '@/utils/vuexStore'
-  import Pagination from './Pagination'
-  import filterHelper from '@/utils/filterHelper'
+import network from '@/utils/network'
+import baseInfo from '@/utils/baseInfo'
+import store from '@/utils/vuexStore'
+import Pagination from './Pagination'
+import filterHelper from '@/utils/filterHelper'
 
-  export default {
-    name: 'FilterUser',
-    components: {Pagination},
-    props: {
-      filterTypes: {
-        type: Object,
-        default() {
-          return {
-            'USER_NAME': {isUserTable: true, name: '会员编号'},
-            'REAL_NAME': {isUserTable: true, name: '会员姓名'},
-            'ID_CARD': {isUserTable: true, name: '身份证'},
-            'MOBILE': {isUserTable: true, name: '手机号'},
-            'CREATED_AT': {isUserTable: true, name: '加入时间', other: 'date'},
-          }
-        },
-      },
-      filterBtnName: {
-        type: String,
-        default() {
-          return 'Select'//筛选
+export default {
+  name: 'FilterUser',
+  components: {Pagination},
+  props: {
+    filterTypes: {
+      type: Object,
+      default () {
+        return {
+          'USER_NAME': {isUserTable: true, name: '会员编号'},
+          'REAL_NAME': {isUserTable: true, name: '会员姓名'},
+          'ID_CARD': {isUserTable: true, name: '身份证'},
+          'MOBILE': {isUserTable: true, name: '手机号'},
+          'CREATED_AT': {isUserTable: true, name: '加入时间', other: 'date'}
         }
       }
     },
-    data() {
-      return {
-        loading: false,
-        filterUserDialogShow: false,
-        tableData: [],
-        currentPage: 1,
-        totalPages: 1,
-        totalCount: 1,
-        pageSize: 20,
-        filterCustomType: {
-          decLevel: {
-            placeholder: '请选择报单级别',
-            labelField: 'LEVEL_NAME',
-            valueField: 'ID',
-            values: baseInfo.decLevels()
-          },
-          empLevel: {
-            placeholder: '请选择聘级',
-            labelField: 'LEVEL_NAME',
-            valueField: 'ID',
-            values: baseInfo.empLevels()
-          },
-          decRole: {
-            placeholder: '请选择报单中心级别',
-            labelField: 'ROLE_NAME',
-            valueField: 'ID',
-            values: baseInfo.decRoles()
-          },
-          subCompany: {
-            placeholder: '请选择分公司',
-            labelField: 'COM_NAME',
-            valueField: 'ID',
-            values: baseInfo.subCompanies()
-          },
-          status: {
-            placeholder: '请选择会员状态',
-            labelField: 'label',
-            valueField: 'value',
-            values: baseInfo.allStatus()
-          },
-          dealTypes: {
-            placeholder: '请选择交易类型',
-            labelField: 'TYPE_NAME',
-            valueField: 'ID',
-            values: baseInfo.dealTypes()
-          },
-          systems: {
-            placeholder: '请选择体系',
-            labelField: 'SYSTEM_NAME',
-            valueField: 'ID',
-            values: baseInfo.systems()
-          },
-          sex: {
-            placeholder: '请选择性别',
-            labelField: 'label',
-            valueField: 'value',
-            values: {
-              '男': {label: '男', value: '男'},
-              '女': {label: '女', value: '女'},
-            }
-          },
-          yesOrNo: {
-            placeholder: '请选择是否',
-            labelField: 'label',
-            valueField: 'value',
-            values: {
-              1: {label: '是', value: 1},
-              0: {label: '否', value: 0},
-            }
-          },
-          banks: {
-            placeholder: '请选择开户行',
-            labelField: 'BANK_NAME',
-            valueField: 'BANK_CODE',
-            values: baseInfo.allOpenBank()
-          },
-          nations: {
-            placeholder: '请选择民族',
-            labelField: 'name',
-            valueField: 'id',
-            values: baseInfo.allNation()
-          },
-          location: {
-            placeholder: '请选择市场',
-            labelField: 'label',
-            valueField: 'value',
-            values: {
-              1: {label: '一市场', value: 1},
-              2: {label: '二市场', value: 2},
-              3: {label: '三市场', value: 3},
-              4: {label: '四市场', value: 4},
-              5: {label: '五市场', value: 5},
-            }
-          },
+    filterBtnName: {
+      type: String,
+      default () {
+        return 'Select' // 筛选
+      }
+    }
+  },
+  data () {
+    return {
+      loading: false,
+      filterUserDialogShow: false,
+      tableData: [],
+      currentPage: 1,
+      totalPages: 1,
+      totalCount: 1,
+      pageSize: 20,
+      filterCustomType: {
+        decLevel: {
+          placeholder: 'Select entry level', // 请选择报单级别
+          labelField: 'LEVEL_NAME',
+          valueField: 'ID',
+          values: baseInfo.decLevels()
         },
-        filterModel: {
-          userId: '',
+        empLevel: {
+          placeholder: 'Select Employee Level', // 请选择聘级
+          labelField: 'LEVEL_NAME',
+          valueField: 'ID',
+          values: baseInfo.empLevels()
         },
-        allFilterTypes: this.filterTypes,
-        filterType: '',
-        filterSymbol: '',
-        filterSymbols: {
-          '=': 'Is equal to', //等于
-          'like': 'Is including',//包含
-          '<>': 'Is not',//不等于
-          'notLike': 'not Is including ',//不包含
-          '>': 'Is greater than',//大于
-          '>=': 'Is greater than or equal to',//大于等于
-          '<': 'Is smaller than',//小于
-          '<=': 'Is smaller than or equal to',//小于等于
+        decRole: {
+          placeholder: 'Select Stockist Level',
+          labelField: 'ROLE_NAME',
+          valueField: 'ID',
+          values: baseInfo.decRoles()
         },
-        filterRelation: 'and',
-        filterRelations: {
-          'and': '并且',
-          'or': '或者',
+        subCompany: {
+          placeholder: '请选择分公司',
+          labelField: 'COM_NAME',
+          valueField: 'ID',
+          values: baseInfo.subCompanies()
         },
-        filterValue: '',
-        filterName: '',
-        filterSelected: [],
-        selectData: [],
-        multipleSelection: [],
-        multipleSelectionUserId: [],
-        regionData: store.state.regionInfo.regionData,
-        filterAreaValue: [],
-        filterRequest: {},
-      }
-    },
-    watch: {
-      filterTypes(newVal) {
-        this.allFilterTypes = this.filterTypes
-      },
-    },
-    methods: {
-      handleFilterTypeChange() {
-        this.filterValue = ''
-      },
-      handleSelectionChange(val) {
-        this.multipleSelection = val
-        this.multipleSelectionUserId = [];
-        for (let i in this.multipleSelection) {
-          this.multipleSelectionUserId.push(this.multipleSelection[i].ID)
+        status: {
+          placeholder: '请选择会员状态',
+          labelField: 'label',
+          valueField: 'value',
+          values: baseInfo.allStatus()
+        },
+        dealTypes: {
+          placeholder: '请选择交易类型',
+          labelField: 'TYPE_NAME',
+          valueField: 'ID',
+          values: baseInfo.dealTypes()
+        },
+        systems: {
+          placeholder: '请选择体系',
+          labelField: 'SYSTEM_NAME',
+          valueField: 'ID',
+          values: baseInfo.systems()
+        },
+        sex: {
+          placeholder: '请选择性别',
+          labelField: 'label',
+          valueField: 'value',
+          values: {
+            '男': {label: '男', value: '男'},
+            '女': {label: '女', value: '女'}
+          }
+        },
+        yesOrNo: {
+          placeholder: 'Select Yes or No',
+          labelField: 'label',
+          valueField: 'value',
+          values: {
+            1: {label: 'Yes', value: 1},
+            0: {label: 'No', value: 0}
+          }
+        },
+        banks: {
+          placeholder: '请选择开户行',
+          labelField: 'BANK_NAME',
+          valueField: 'BANK_CODE',
+          values: baseInfo.allOpenBank()
+        },
+        nations: {
+          placeholder: '请选择民族',
+          labelField: 'name',
+          valueField: 'id',
+          values: baseInfo.allNation()
+        },
+        location: {
+          placeholder: '请选择市场',
+          labelField: 'label',
+          valueField: 'value',
+          values: {
+            1: {label: '一市场', value: 1},
+            2: {label: '二市场', value: 2},
+            3: {label: '三市场', value: 3},
+            4: {label: '四市场', value: 4},
+            5: {label: '五市场', value: 5}
+          }
         }
       },
-      handleCurrentChange(page) {
-        this.getData(this.filterRequest, page, this.pageSize)
+      filterModel: {
+        userId: ''
       },
-      handleSizeChange(pageSize) {
-        this.getData(this.filterRequest, this.currentPage, pageSize)
+      allFilterTypes: this.filterTypes,
+      filterType: '',
+      filterSymbol: '',
+      filterSymbols: {
+        '=': 'Is equal to', // 等于
+        'like': 'Is including', // 包含
+        '<>': 'Is not', // 不等于
+        'notLike': 'not Is including ', // 不包含
+        '>': 'Is greater than', // 大于
+        '>=': 'Is greater than or equal to', // 大于等于
+        '<': 'Is smaller than', // 小于
+        '<=': 'Is smaller than or equal to'// 小于等于
       },
-      remoteMethod(query) {
-        if (query !== '') {
-          this.loading = true
-          network.getData(`user/filter-user`, {kw: query}).then(response => {
-            this.selectData = response
-            this.loading = false
-          }).catch(error => {
-            this.loading = false
-          })
-        }
+      filterRelation: 'and',
+      filterRelations: {
+        'and': '并且',
+        'or': '或者'
       },
-      handleOptionPlus() {
-        if (this.filterType === '' || this.filterSymbol === '' || (this.filterValue === '' && this.filterAreaValue === [])) {
-          this.$message({
-            message: 'please complete the selection',//请填写完整筛选内容
-            type: 'warning'
-          });
-          return false
-        }
-        let valueName = this.filterValue
-        if (this.filterType !== '' && this.allFilterTypes[this.filterType].hasOwnProperty('other')) {
-          //获取下拉筛选时的选中项
-          if(this.allFilterTypes[this.filterType].other === 'select'){
-            let nameObj = []
-            let _this = this
-            if (!Array.isArray(this.allFilterTypes[this.filterType].selectData)) {
-              nameObj[0] = this.allFilterTypes[this.filterType].selectData[_this.filterValue]
-            } else {
-              nameObj = (this.allFilterTypes[this.filterType].selectData).filter(function (item, index, array) {
-                return item.id === _this.filterValue
-              });
-            }
-            valueName = nameObj[0] ? nameObj[0].name : null
+      filterValue: '',
+      filterName: '',
+      filterSelected: [],
+      selectData: [],
+      multipleSelection: [],
+      multipleSelectionUserId: [],
+      regionData: store.state.regionInfo.regionData,
+      filterAreaValue: [],
+      filterRequest: {}
+    }
+  },
+  watch: {
+    filterTypes (newVal) {
+      this.allFilterTypes = this.filterTypes
+    }
+  },
+  methods: {
+    handleFilterTypeChange () {
+      this.filterValue = ''
+    },
+    handleSelectionChange (val) {
+      this.multipleSelection = val
+      this.multipleSelectionUserId = []
+      for (let i in this.multipleSelection) {
+        this.multipleSelectionUserId.push(this.multipleSelection[i].ID)
+      }
+    },
+    handleCurrentChange (page) {
+      this.getData(this.filterRequest, page, this.pageSize)
+    },
+    handleSizeChange (pageSize) {
+      this.getData(this.filterRequest, this.currentPage, pageSize)
+    },
+    remoteMethod (query) {
+      if (query !== '') {
+        this.loading = true
+        network.getData(`user/filter-user`, {kw: query}).then(response => {
+          this.selectData = response
+          this.loading = false
+        }).catch(error => {
+          console.log(error)
+          this.loading = false
+        })
+      }
+    },
+    handleOptionPlus () {
+      if (this.filterType === '' || this.filterSymbol === '' || (this.filterValue === '' && this.filterAreaValue === [])) {
+        this.$message({
+          message: 'please complete the selection', // 请填写完整筛选内容
+          type: 'warning'
+        })
+        return false
+      }
+      let valueName = this.filterValue
+      if (this.filterType !== '' && this.allFilterTypes[this.filterType].hasOwnProperty('other')) {
+        // 获取下拉筛选时的选中项
+        if (this.allFilterTypes[this.filterType].other === 'select') {
+          let nameObj = []
+          let _this = this
+          if (!Array.isArray(this.allFilterTypes[this.filterType].selectData)) {
+            nameObj[0] = this.allFilterTypes[this.filterType].selectData[_this.filterValue]
+          } else {
+            nameObj = (this.allFilterTypes[this.filterType].selectData).filter(function (item, index, array) {
+              return item.id === _this.filterValue
+            })
           }
-          else if(this.allFilterTypes[this.filterType].other === 'area'){
-            if(this.filterSymbol!=='='){
-              this.$message({
-                message: '地区仅限于"等于"的筛选方式',
-                type: 'warning'
-              });
-              return false
-            }
-            this.filterValue = this.filterAreaValue.join(',')
-            valueName = ''
-            for(let i in this.regionData){
-              if(this.regionData[i].value === this.filterAreaValue[0]){
-                valueName += this.regionData[i].label+','
-                for(let j in this.regionData[i].children){
-                  if(this.regionData[i].children[j].value === this.filterAreaValue[1]){
-                    valueName += this.regionData[i].children[j].label+','
-                    for(let h in this.regionData[i].children[j].children){
-                      if(this.regionData[i].children[j].children[h].value === this.filterAreaValue[2]){
-                        valueName += this.regionData[i].children[j].children[h].label
-                        break;
-                      }
+          valueName = nameObj[0] ? nameObj[0].name : null
+        } else if (this.allFilterTypes[this.filterType].other === 'area') {
+          if (this.filterSymbol !== '=') {
+            this.$message({
+              message: '地区仅限于"等于"的筛选方式',
+              type: 'warning'
+            })
+            return false
+          }
+          this.filterValue = this.filterAreaValue.join(',')
+          valueName = ''
+          for (let i in this.regionData) {
+            if (this.regionData[i].value === this.filterAreaValue[0]) {
+              valueName += this.regionData[i].label + ','
+              for (let j in this.regionData[i].children) {
+                if (this.regionData[i].children[j].value === this.filterAreaValue[1]) {
+                  valueName += this.regionData[i].children[j].label + ','
+                  for (let h in this.regionData[i].children[j].children) {
+                    if (this.regionData[i].children[j].children[h].value === this.filterAreaValue[2]) {
+                      valueName += this.regionData[i].children[j].children[h].label
+                      break
                     }
-                    break;
                   }
+                  break
                 }
-                break;
               }
+              break
             }
           }
-          else if(this.filterCustomType.hasOwnProperty(this.allFilterTypes[this.filterType].other)) {
-            let allCustomData = this.filterCustomType[this.allFilterTypes[this.filterType].other].values
-            let customField = this.filterCustomType[this.allFilterTypes[this.filterType].other].labelField
-            valueName = allCustomData[this.filterValue][customField]
-          }
+        } else if (this.filterCustomType.hasOwnProperty(this.allFilterTypes[this.filterType].other)) {
+          let allCustomData = this.filterCustomType[this.allFilterTypes[this.filterType].other].values
+          let customField = this.filterCustomType[this.allFilterTypes[this.filterType].other].labelField
+          valueName = allCustomData[this.filterValue][customField]
         }
-        // 如果是筛选会员编号,则把会员编号转成小写
-        // if(this.filterType === 'USER_NAME'){
-        //   this.filterValue = this.filterValue.toLowerCase()
-        // }
+      }
+      // 如果是筛选会员编号,则把会员编号转成小写
+      // if(this.filterType === 'USER_NAME'){
+      //   this.filterValue = this.filterValue.toLowerCase()
+      // }
 
-        this.filterSelected.push({
-          filterType: this.filterType,
-          filterTypeName: this.allFilterTypes[this.filterType].name,
-          filterSymbol: this.filterSymbol,
-          filterSymbolName: this.filterSymbols[this.filterSymbol],
-          filterValue: this.filterValue,
-          filterRelation: this.filterRelation,
-          filterRelationName: this.filterRelations[this.filterRelation],
-          filterName: valueName,
-          filterOther: this.filterType !== '' && this.allFilterTypes[this.filterType].hasOwnProperty('other') ? this.allFilterTypes[this.filterType].other : null,
-          isUserTable: this.allFilterTypes[this.filterType].isUserTable,
-        })
-      },
-      handleCloseTag(tag) {
-        this.filterSelected.splice(tag, 1)
-      },
-      handleFilterUser() {
-        if (this.filterSelected.length > 0) {
-          this.loading = true
-          this.filterRequest = {}
-          for (let i in this.filterSelected) {
-            if (this.filterSelected[i].isUserTable) {
-              let reqFilterValue = `${this.filterSelected[i].filterSymbol},${this.filterSelected[i].filterValue}`
-              if (this.filterSelected[i].hasOwnProperty('filterOther')) {
-                reqFilterValue += `,${this.filterSelected[i].filterOther}`
-              }
-              let filterType = this.filterSelected[i].filterType
-              if (this.filterRequest[filterType]) {
-                this.$set(this.filterRequest, filterType, (this.filterRequest[filterType] + '|' + reqFilterValue))
-              } else {
-                this.$set(this.filterRequest, filterType, reqFilterValue)
-              }
+      this.filterSelected.push({
+        filterType: this.filterType,
+        filterTypeName: this.allFilterTypes[this.filterType].name,
+        filterSymbol: this.filterSymbol,
+        filterSymbolName: this.filterSymbols[this.filterSymbol],
+        filterValue: this.filterValue,
+        filterRelation: this.filterRelation,
+        filterRelationName: this.filterRelations[this.filterRelation],
+        filterName: valueName,
+        filterOther: this.filterType !== '' && this.allFilterTypes[this.filterType].hasOwnProperty('other') ? this.allFilterTypes[this.filterType].other : null,
+        isUserTable: this.allFilterTypes[this.filterType].isUserTable
+      })
+    },
+    handleCloseTag (tag) {
+      this.filterSelected.splice(tag, 1)
+    },
+    handleFilterUser () {
+      if (this.filterSelected.length > 0) {
+        this.loading = true
+        this.filterRequest = {}
+        for (let i in this.filterSelected) {
+          if (this.filterSelected[i].isUserTable) {
+            let reqFilterValue = `${this.filterSelected[i].filterSymbol},${this.filterSelected[i].filterValue}`
+            if (this.filterSelected[i].hasOwnProperty('filterOther')) {
+              reqFilterValue += `,${this.filterSelected[i].filterOther}`
+            }
+            let filterType = this.filterSelected[i].filterType
+            if (this.filterRequest[filterType]) {
+              this.$set(this.filterRequest, filterType, (this.filterRequest[filterType] + '|' + reqFilterValue))
+            } else {
+              this.$set(this.filterRequest, filterType, reqFilterValue)
             }
-          }
-          if (Object.keys(this.filterRequest).length === 0) {
-            this.handleSelectValue(true)
-          } else {
-            this.getData(this.filterRequest,this.currentPage)
           }
         }
-      },
-      getData(request, page = null, pageSize = null) {
-        network.getPageData(this, 'user/filter-user', page, pageSize, request, response => {
-          this.filterUserDialogShow = true
-        })
-      },
-      handleSelectValue(isAll = false) {
-        let otherFilterTypes = [];
-        for (let i in this.filterSelected) {
-          if (!this.filterSelected[i].isUserTable) {
-            otherFilterTypes.push(this.filterSelected[i])
-          }
+        if (Object.keys(this.filterRequest).length === 0) {
+          this.handleSelectValue(true)
+        } else {
+          this.getData(this.filterRequest, this.currentPage)
         }
-        let userIds = this.multipleSelectionUserId
-        if (isAll) {
-          userIds = 'all'
+      }
+    },
+    getData (request, page = null, pageSize = null) {
+      network.getPageData(this, 'user/filter-user', page, pageSize, request, response => {
+        this.filterUserDialogShow = true
+      })
+    },
+    handleSelectValue (isAll = false) {
+      let otherFilterTypes = []
+      for (let i in this.filterSelected) {
+        if (!this.filterSelected[i].isUserTable) {
+          otherFilterTypes.push(this.filterSelected[i])
         }
-        this.$emit('select-value', {
-          userIds: userIds,
-          otherFilterTypes: otherFilterTypes,
-        })
-        this.filterUserDialogShow = false
-      },
-      handleFilterClear() {
-        Object.assign(this.$data, this.$options.data())
-        this.allFilterTypes = this.filterTypes
-        // 清空地址栏
-        filterHelper.clearFilterOption(this)
-        this.$emit('select-value', {userIds: 'all', otherFilterTypes: []})
       }
+      let userIds = this.multipleSelectionUserId
+      if (isAll) {
+        userIds = 'all'
+      }
+      this.$emit('select-value', {
+        userIds: userIds,
+        otherFilterTypes: otherFilterTypes
+      })
+      this.filterUserDialogShow = false
+    },
+    handleFilterClear () {
+      Object.assign(this.$data, this.$options.data())
+      this.allFilterTypes = this.filterTypes
+      // 清空地址栏
+      filterHelper.clearFilterOption(this)
+      this.$emit('select-value', {userIds: 'all', otherFilterTypes: []})
     }
   }
+}
 </script>
 
 <style scoped>

+ 1 - 1
backendEle/src/components/WithdrawTable.vue

@@ -571,7 +571,7 @@
         this.$refs.multipleTable.toggleRowExpansion(row)
       },
       handleExport() {
-        this.$confirm('确定要导出当前表格中的提现数据吗?', 'Hint', {
+        this.$confirm('Are you sure you want to export the current data?', 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 26 - 26
backendEle/src/router/index.js

@@ -172,30 +172,30 @@ export const constantRouterMap = [
           ],
         },
       },
-      {
-        path: '/user/user-add-opt',
-        component: _import('user/user-add-opt'),
-        name: 'user_user-add-opt',
-        meta: {
-          title: 'Empty order operation', // 空单操作
-          breadcrumb: [
-            {title: 'Dashboard', path: '/dashboard/index'}, // Dashboard
-            {title: 'Member management', path: '/user/index'}, // 会员管理
-          ],
-        },
-      },
-      {
-        path: '/user/empty-list',
-        component: _import('user/empty-list'),
-        name: 'user_empty_list',
-        meta: {
-          title: 'Empty list', // 空单列表
-          breadcrumb: [
-            {title: 'Dashboard', path: '/dashboard/index'}, // Dashboard
-            {title: 'Member management', path: '/user/index'}, // 会员管理
-          ],
-        },
-      },
+      // {
+      //   path: '/user/user-add-opt',
+      //   component: _import('user/user-add-opt'),
+      //   name: 'user_user-add-opt',
+      //   meta: {
+      //     title: 'Empty order operation', // 空单操作
+      //     breadcrumb: [
+      //       {title: 'Dashboard', path: '/dashboard/index'}, // Dashboard
+      //       {title: 'Member management', path: '/user/index'}, // 会员管理
+      //     ],
+      //   },
+      // },
+      // {
+      //   path: '/user/empty-list',
+      //   component: _import('user/empty-list'),
+      //   name: 'user_empty_list',
+      //   meta: {
+      //     title: 'Empty list', // 空单列表
+      //     breadcrumb: [
+      //       {title: 'Dashboard', path: '/dashboard/index'}, // Dashboard
+      //       {title: 'Member management', path: '/user/index'}, // 会员管理
+      //     ],
+      //   },
+      // },
       {
         path: '/user/bind',
         component: _import('user/bind'),
@@ -333,7 +333,7 @@ export const constantRouterMap = [
         component: _import('user/move'),
         name: 'user_move',
         meta: {
-          title: 'Mobile network management', // 移网管理
+          title: 'Move network management', // 移网管理
           breadcrumb: [
             {title: 'Dashboard', path: '/dashboard/index'}, // Dashboard
             {title: 'Member management', path: '/user/index'}, // 会员管理
@@ -1091,7 +1091,7 @@ export const constantRouterMap = [
         component: _import('bonus/perf-order'),
         name: 'bonus_perf-order',
         meta: {
-          title: 'Performance sheet', // 业绩单
+          title: 'Sales Record', // 业绩单
           breadcrumb: [
             {title: 'Dashboard', path: '/dashboard/index'}, // Dashboard
             {title: 'Bonus management', path: '/bonus/period'}, // 奖金管理

+ 1 - 1
backendEle/src/views/atlas/emp-user-line.vue

@@ -138,7 +138,7 @@
           })
       },
       handleExport(){
-          this.$confirm(`确定要导出当前数据吗?`, 'Notice', {
+          this.$confirm(`Are you sure you want to export the current data?`, 'Notice', {
               confirmButtonText: 'confirm', // 确定
               cancelButtonText: 'cancel', // 取消
               type: 'warning'

+ 1 - 1
backendEle/src/views/atlas/emp-user-list.vue

@@ -78,7 +78,7 @@ export default {
       })
     },
     handleExport(){
-      this.$confirm(`确定要导出当前数据吗?`, 'Notice', {
+      this.$confirm(`Are you sure you want to export the current data?`, 'Notice', {
         confirmButtonText: 'confirm', // 确定
         cancelButtonText: 'cancel', // 取消
         type: 'warning'

+ 1 - 1
backendEle/src/views/atlas/network-line-opt.vue

@@ -196,7 +196,7 @@
         //this.getData(this.currentPage, this.pageSize, false)
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Notice', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Notice', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/atlas/relation-list.vue

@@ -124,7 +124,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Notice', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Notice', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/cf-lx-audit-list.vue

@@ -230,7 +230,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Notice', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Notice', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/flow-cf.vue

@@ -73,7 +73,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Notice', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Notice', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/flow-lx.vue

@@ -73,7 +73,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Notice', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Notice', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/flow-rp.vue

@@ -73,7 +73,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Notice', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Notice', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/perf-order.vue

@@ -3,7 +3,7 @@
     <div class="white-box">
       <el-tabs v-model="filterStatus" @tab-click="handleFilterStatusClick">
         <el-tab-pane label="All" name="ALL" :lazy="true"></el-tab-pane><!-- 全部 -->
-        <el-tab-pane label="First purchase order" name="ZC" :lazy="true"></el-tab-pane><!-- 首购单 -->
+        <el-tab-pane label="Welcome Pack order" name="ZC" :lazy="true"></el-tab-pane><!-- 首购单 -->
         <!--<el-tab-pane label="增购单" name="ZG" :lazy="true"></el-tab-pane>-->
         <!--<el-tab-pane label="零售单" name="LS" :lazy="true"></el-tab-pane>-->
         <!--<el-tab-pane label="复销单" name="FX" :lazy="true"></el-tab-pane>-->

+ 1 - 1
backendEle/src/views/bonus/perf-standard.vue

@@ -87,7 +87,7 @@ export default {
       if(window.location.href.indexOf('filter') === -1){
         filterData.filterType = this.filterStatus !== 'ALL' ? `=,${this.filterStatus}` : ''
       }
-      this.$confirm('确定要导出当前表格中的数据吗?', 'Notice', {
+      this.$confirm('Are you sure you want to export the current data?', 'Notice', {
         confirmButtonText: 'confirm', // 确定
         cancelButtonText: 'cancel', // 取消
         type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/period-perf.vue

@@ -88,7 +88,7 @@ export default {
       if(window.location.href.indexOf('filter') === -1){
         filterData.filterType = this.filterStatus !== 'ALL' ? `=,${this.filterStatus}` : ''
       }
-      this.$confirm('确定要导出当前表格中的数据吗?', 'Notice', {
+      this.$confirm('Are you sure you want to export the current data?', 'Notice', {
         confirmButtonText: 'confirm', // 确定
         cancelButtonText: 'cancel', // 取消
         type: 'warning'

+ 2 - 2
backendEle/src/views/bonus/resend-qy-audit-list.vue

@@ -91,7 +91,7 @@ export default {
       baseDecLevels: baseInfo.decLevels(),
       baseEmpLevels: baseInfo.empLevels(),
       filterStatus:'0',
-      auditStatus: ['未审核', '已审核', '已拒绝'],
+      auditStatus: ['not approved', 'Audited', 'Refused'],// 未审核 已审核 已拒绝
     }
   },
   methods: {
@@ -202,7 +202,7 @@ export default {
       })
     },
     handleExport(){
-      this.$confirm(`确定要导出当前数据吗?`, 'Notice', {
+      this.$confirm(`Are you sure you want to export the current data?`, 'Notice', {
         confirmButtonText: 'confirm', // 确定
         cancelButtonText: 'cancel', // 取消
         type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/resend-qy-list.vue

@@ -155,7 +155,7 @@ export default {
       })
     },
     handleExport(){
-      this.$confirm(`确定要导出当前数据吗?`, 'Notice', {
+      this.$confirm(`Are you sure you want to export the current data?`, 'Notice', {
         confirmButtonText: 'confirm', // 确定
         cancelButtonText: 'cancel', // 取消
         type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-bt.vue

@@ -88,7 +88,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Notice', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Notice', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-down-bd.vue

@@ -71,7 +71,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-down-fx.vue

@@ -71,7 +71,7 @@ export default {
       })
     },
     handleExport(){
-      this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+      this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
         confirmButtonText: 'confirm', // 确定
         cancelButtonText: 'cancel', // 取消
         type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-down-gl.vue

@@ -71,7 +71,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-down-gx.vue

@@ -71,7 +71,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-down-qy.vue

@@ -71,7 +71,7 @@ export default {
       })
     },
     handleExport(){
-      this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+      this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
         confirmButtonText: 'confirm', // 确定
         cancelButtonText: 'cancel', // 取消
         type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-down-tg.vue

@@ -71,7 +71,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-down-xf.vue

@@ -71,7 +71,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-down-yc.vue

@@ -71,7 +71,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-down-yj.vue

@@ -71,7 +71,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-fl.vue

@@ -69,7 +69,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-fw.vue

@@ -69,7 +69,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-up-bd.vue

@@ -71,7 +71,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-up-fx.vue

@@ -71,7 +71,7 @@ export default {
       })
     },
     handleExport(){
-      this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+      this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
         confirmButtonText: 'confirm', // 确定
         cancelButtonText: 'cancel', // 取消
         type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-up-gl.vue

@@ -71,7 +71,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-up-gx.vue

@@ -71,7 +71,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-up-qy.vue

@@ -71,7 +71,7 @@ export default {
       })
     },
     handleExport(){
-      this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+      this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
         confirmButtonText: 'confirm', // 确定
         cancelButtonText: 'cancel', // 取消
         type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-up-tg.vue

@@ -71,7 +71,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-up-xf.vue

@@ -71,7 +71,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-up-yc.vue

@@ -71,7 +71,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/bonus/trace-up-yj.vue

@@ -71,7 +71,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 9 - 2
backendEle/src/views/config/bonus-opt.vue

@@ -199,7 +199,7 @@
                 </el-input>
               </template>
             </el-table-column>
-            <el-table-column label="车奖比例">
+            <el-table-column label="车奖比例">
               <template slot-scope="scope">
                 <el-input v-model="scope.row.GARAGE_PERCENT" min="0" max="100">
                   <template slot="append">%</template>
@@ -244,13 +244,20 @@
                               </el-input>
                           </template>
                       </el-table-column>
-                      <el-table-column label="车奖比例">
+                      <el-table-column label="车奖比例">
                           <template slot-scope="scope">
                               <el-input v-model="scope.row.GARAGE_PERCENT" min="0" max="100">
                                   <template slot="append">%</template>
                               </el-input>
                           </template>
                       </el-table-column>
+                      <el-table-column label="房奖比例">
+                          <template slot-scope="scope">
+                              <el-input v-model="scope.row.VILLA_PERCENT" min="0" max="100">
+                                  <template slot="append">%</template>
+                              </el-input>
+                          </template>
+                      </el-table-column>
                   </el-table>
               </div>
               <div class="panel-footer">

+ 1 - 1
backendEle/src/views/finance/history-bonus.vue

@@ -84,7 +84,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'Confirm',
           cancelButtonText: 'Cancel',
           type: 'warning'

+ 2 - 2
backendEle/src/views/finance/perf-audit-list.vue

@@ -206,7 +206,7 @@
           SURPLUS_5L: null,
         },
 
-        auditStatus: ['未审核', '已审核', '已拒绝'],
+        auditStatus: ['not approved', 'Audited', 'Refused'],// 未审核 已审核 已拒绝
       }
     },
     methods: {
@@ -359,7 +359,7 @@
         this.getData(this.currentPage, this.pageSize)
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/finance/recharge.vue

@@ -127,7 +127,7 @@
                 })
             },
             handleExport(){
-                this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+                this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
                     confirmButtonText: 'confirm', // 确定
                     cancelButtonText: 'cancel', // 取消
                     type: 'warning'

+ 1 - 1
backendEle/src/views/finance/withdraw.vue

@@ -353,7 +353,7 @@ export default {
         }
         filterData.selectedIds = selectedIds
       }
-      this.$confirm('确定要导出当前表格中的提现数据吗?', 'Hint', {
+      this.$confirm('Are you sure you want to export the current data?', 'Hint', {
         confirmButtonText: 'confirm', // 确定
         cancelButtonText: 'cancel', // 取消
         type: 'warning'

+ 1 - 1
backendEle/src/views/reconsume/change-audit-list.vue

@@ -377,7 +377,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/reconsume/flow-list.vue

@@ -105,7 +105,7 @@
         })
       },
       handleExport() {
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/reconsume/pool-list.vue

@@ -156,7 +156,7 @@ export default {
       })
     },
     handleExport(){
-      this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+      this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
         confirmButtonText: 'confirm', // 确定
         cancelButtonText: 'cancel', // 取消
         type: 'warning'

+ 1 - 1
backendEle/src/views/report/dec-table.vue

@@ -99,7 +99,7 @@ export default {
   },
   methods: {
     handleExport () {
-      this.$confirm('确定要导出当前表格中的数据吗?', 'Hint', {
+      this.$confirm('Are you sure you want to export the current data?', 'Hint', {
         confirmButtonText: 'confirm', // 确定
         cancelButtonText: 'cancel', // 取消
         type: 'warning'

+ 1 - 1
backendEle/src/views/user/bind.vue

@@ -146,7 +146,7 @@ export default {
       })
     },
     handleExport(){
-      this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+      this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
         confirmButtonText: 'confirm', // 确定
         cancelButtonText: 'cancel', // 取消
         type: 'warning'

+ 1 - 1
backendEle/src/views/user/change-show-emp-level.vue

@@ -14,7 +14,7 @@
           <el-tag type="info">选择重置,前台会显示会员实际聘级</el-tag>
         </el-form-item>
         <el-form-item label="前台显示聘级" v-if="!form.isReset">
-          <el-select v-model="form.levelId" placeholder="请选择聘级">
+          <el-select v-model="form.levelId" placeholder="Select Employee Level"> <!-- 请选择聘级 -->
             <el-option v-for="(item,key) in allEmpLevel" :label="item.LEVEL_NAME" :value="item.ID"
                        :key="key"></el-option>
           </el-select>

+ 1 - 1
backendEle/src/views/user/group.vue

@@ -99,7 +99,7 @@
         })
       },
       handleExport(){
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 3 - 3
backendEle/src/views/user/index.vue

@@ -133,11 +133,11 @@
 
         <el-dropdown size="small" trigger="click" v-show="permission.hasPermission(`user/is-atlas`)">
           <el-button type="primary" size="small" @click.stop="">
-            Atlas management<!-- 图谱管理 --><i class="el-icon-arrow-down el-icon--right"></i>
+            Chart management<!-- 图谱管理 --><i class="el-icon-arrow-down el-icon--right"></i>
           </el-button>
           <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item command="isAtlas" @click.native="handleIsAtlasManage(true)">Display Atlas<!-- 显示图谱 --></el-dropdown-item>
-            <el-dropdown-item command="notAtlas" @click.native="handleIsAtlasManage(false)">Hidden Atlas<!-- 隐藏图谱 -->
+            <el-dropdown-item command="isAtlas" @click.native="handleIsAtlasManage(true)">Display Chart<!-- 显示图谱 --></el-dropdown-item>
+            <el-dropdown-item command="notAtlas" @click.native="handleIsAtlasManage(false)">Hidden Charts<!-- 隐藏图谱 -->
             </el-dropdown-item>
           </el-dropdown-menu>
         </el-dropdown>

+ 1 - 1
backendEle/src/views/user/status-audit-list.vue

@@ -268,7 +268,7 @@
         })
       },
       handleExport() {
-        this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+        this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
           confirmButtonText: 'confirm', // 确定
           cancelButtonText: 'cancel', // 取消
           type: 'warning'

+ 1 - 1
backendEle/src/views/user/system.vue

@@ -168,7 +168,7 @@ export default {
       })
     },
     handleExport(){
-      this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+      this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
         confirmButtonText: 'confirm', // 确定
         cancelButtonText: 'cancel', // 取消
         type: 'warning'

+ 1 - 1
backendEle/src/views/user/teamwork.vue

@@ -146,7 +146,7 @@ export default {
       })
     },
     handleExport(){
-      this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+      this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
         confirmButtonText: 'confirm', // 确定
         cancelButtonText: 'cancel', // 取消
         type: 'warning'

+ 13 - 13
backendEle/src/views/user/user-add-opt.vue

@@ -86,19 +86,19 @@
               </template>
               <el-input v-model="form.realName"></el-input>
             </el-form-item>
-            <el-form-item>
-              <template slot="label">
-                <span class="text-danger">*</span>
-                Identity No.<!-- 身份证号 -->
-              </template>
-              <el-input v-model="form.idCard" maxlength="18" @change="handleChkBirth"></el-input>
-            </el-form-item>
-            <el-form-item>
-              <template slot="label">
-                ID card address<!-- 身份证地址 -->
-              </template>
-              <el-input v-model="form.address"></el-input>
-            </el-form-item>
+<!--            <el-form-item>-->
+<!--              <template slot="label">-->
+<!--                <span class="text-danger">*</span>-->
+<!--                Identity No.&lt;!&ndash; 身份证号 &ndash;&gt;-->
+<!--              </template>-->
+<!--              <el-input v-model="form.idCard" maxlength="18" @change="handleChkBirth"></el-input>-->
+<!--            </el-form-item>-->
+<!--            <el-form-item>-->
+<!--              <template slot="label">-->
+<!--                ID card address&lt;!&ndash; 身份证地址 &ndash;&gt;-->
+<!--              </template>-->
+<!--              <el-input v-model="form.address"></el-input>-->
+<!--            </el-form-item>-->
             <el-form-item>
               <template slot="label">
                 Phone Number<!-- 手机号 -->

+ 1 - 1
backendEle/src/views/user/year-highest-emp-lv.vue

@@ -88,7 +88,7 @@ export default {
       }, isLoading)
     },
     handleExport(){
-      this.$confirm(`确定要导出当前数据吗?`, 'Hint', {
+      this.$confirm(`Are you sure you want to export the current data?`, 'Hint', {
         confirmButtonText: 'confirm', // 确定
         cancelButtonText: 'cancel', // 取消
         type: 'warning'

+ 5 - 1
common/config/params.php

@@ -215,7 +215,11 @@ return [
         ],
         'garage_points' => [
             'name' => 'garage_points',
-            'label' => 'Car/Villa points balance',//车房积分余额
+            'label' => 'Car points balance',//名车积分余额
+        ],
+        'villa_points' => [
+            'name' => 'villa_points',
+            'label' => 'Villa points balance',//豪宅积分余额
         ],
     ],
     'auditStatus' => [

+ 186 - 43
common/helpers/bonus/BonusCalc.php

@@ -31,6 +31,7 @@ use common\models\CalcBonusQY;
 use common\models\CalcBonusStandard;
 use common\models\CalcBonusTG;
 use common\models\CalcBonusTourism;
+use common\models\CalcBonusVilla;
 use common\models\CalcBonusVIP;
 use common\models\CalcBonusXF;
 use common\models\CalcBonusYC;
@@ -303,9 +304,14 @@ class BonusCalc extends BaseObject {
 //            echo('计算旅游奖' . ($this->_sysConfig['openTourism']['VALUE'] ? '完成' : '关闭') . ',耗时:' . round($t21 - $t20, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL);
 //            $this->_updatePercent(68);
 
-            $this->calcBonusGarage();
+            $this->calcBonusVilla();
             $t22 = microtime(true);
-            echo('计算车房奖' . ($this->_sysConfig['openGarage']['VALUE'] ? '完成' : '关闭').',耗时:' . round($t22 - $t21, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL . PHP_EOL);
+            echo('计算房奖' . ($this->_sysConfig['openVilla']['VALUE'] ? '完成' : '关闭').',耗时:' . round($t22 - $t21, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL . PHP_EOL);
+            $this->_updatePercent(69);
+
+            $this->calcBonusGarage();
+            $t23 = microtime(true);
+            echo('计算车奖' . ($this->_sysConfig['openGarage']['VALUE'] ? '完成' : '关闭').',耗时:' . round($t23 - $t22, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL . PHP_EOL);
             $this->_updatePercent(69);
 
 
@@ -347,7 +353,7 @@ class BonusCalc extends BaseObject {
             echo('结算全部完成,共耗时:' . round($t35 - $t34, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL . PHP_EOL);
         } catch (\Exception $e) {
             $this->errorCalcTask();
-            $this->addError('calc', $e->getFile() . '  ' . $e->getLine() . '  ' . $e->getMessage());
+            $this->addError('calc', sprintf('File【%s】, Line【%s】, Msg【%s】', $e->getFile(), $e->getLine(), $e->getMessage()));
             return false;
         }
         return true;
@@ -449,6 +455,7 @@ class BonusCalc extends BaseObject {
             ScoreMonth::pageDeleteAll('PERIOD_NUM='.$this->_periodNum);
             CalcBonusTourism::pageDeleteAll('PERIOD_NUM='.$this->_periodNum);
             CalcBonusGarage::pageDeleteAll('PERIOD_NUM='.$this->_periodNum);
+            CalcBonusVilla::pageDeleteAll('PERIOD_NUM='.$this->_periodNum);
         }
     }
 
@@ -1662,14 +1669,13 @@ class BonusCalc extends BaseObject {
         $mate = $bonusConfig['VALUE'] / 100;
         // 会员级别
         $minDecLevel = $config['OPTIONS']['declarationLevel'] ?? [];
-        // 会员聘级
-        $minEmpLevel = $config['OPTIONS']['employLevel'] ?? [];
-
         // 月度公司总PV
         $monthTotalPV = PerfMonth::find()
             ->yearMonth($this->_calcYearMonth)
             ->where('CALC_MONTH=:CALC_MONTH', [':CALC_MONTH' => $this->_calcYearMonth])
             ->sum('PV_PCS');
+        // 用于分发的奖金总数
+        $transferAmount = $monthTotalPV * $mate;
 
         // 基于蓝星奖结果计算符合获奖条件的会员StarDirector
         $userStarDirector = CalcBonusBS::find()
@@ -1694,6 +1700,8 @@ class BonusCalc extends BaseObject {
         // 合并用户ID,去重
         $bonusUsers = array_unique(array_merge(array_keys($userStarDirectorObj), array_keys($userStarCrownObj)));
 
+        // 奖金点数综合
+        $bonusPointComplex = 0;
         $insertBonusData = [];
         foreach($bonusUsers as $userId) {
             // 计算奖金:取starDirectorPoint和startCrownPoint的大个值
@@ -1701,47 +1709,163 @@ class BonusCalc extends BaseObject {
             $startCrownPoint = $this->_starCrownLevelConfig[$userStarCrownObj[$userId]['LAST_STAR_LV']]['TOURISM_PERCENT'] ?? 0;
             // 奖金比例:
             $bonusPoint = max($starDirectorPoint, $startCrownPoint);
-            // 计算奖金
-            $amount = Tool::formatPrice(($monthTotalPV * $mate * $bonusPoint) / 100);
-            if ($amount <= 0) {
-                continue;
-            }
-
-            // 会员级别+聘级都达到要求才会发放奖金
-            if (in_array($userStarDirectorObj[$userId]['LAST_DEC_LV'], $minDecLevel)) {
-                // 放入缓存
-                CalcCache::tourismBonus($userId, $this->_periodNum, $amount);
-                // 加入月奖的会员
-                CalcCache::addHasMonthBonusUsers($userId, $this->_periodNum);
-            }
 
             $insertBonusData[] = [
                 'ID' => SnowFake::instance()->generateId(),
                 'USER_ID' => $userId,
-                'LEVEL_ID' => $userStarDirectorObj[$userId]['LEVEL_ID'],
                 'LAST_DEC_LV' => $userStarDirectorObj[$userId]['LAST_DEC_LV'],
                 'LAST_EMP_LV' => $userStarDirectorObj[$userId]['LAST_EMP_LV'],
                 'LAST_STATUS' => $userStarDirectorObj[$userId]['LAST_STATUS'],
                 'LAST_STAR_LV' => $userStarCrownObj[$userId]['LAST_STAR_LV'],
-                'AMOUNT_STANDARD' => $amount,
+                'AMOUNT_STANDARD' => 0,
                 'POINT' => $bonusPoint,
                 'PERIOD_NUM' => $this->_periodNum,
                 'CALC_YEAR' => $this->_calcYear,
                 'CALC_MONTH' => $this->_calcYearMonth,
                 'P_CALC_MONTH' => Date::ociToDate($this->_calcYearMonth, Date::OCI_TIME_FORMAT_SHORT_MONTH),
                 'CREATED_AT' => Date::nowTime(),
+                'PERF' => $monthTotalPV,
+                'TRANSFER_RATE' => $mate,
+                'TRANSFER_AMOUNT' => Tool::formatPrice($transferAmount),
+                'CAP_AMOUNT' => 0,
+                'POINT_COMPLEX' => 0,
             ];
+
+            $bonusPointComplex += $bonusPoint;
         }
 
         // 数据写入总表
         if ($insertBonusData) {
+            foreach ($insertBonusData as &$bonusData) {
+                // 计算奖金
+                $amount = Tool::formatPrice($transferAmount * ($bonusData['POINT'] / $bonusPointComplex));
+                if ($amount <= 0) {
+                    continue;
+                }
+
+                // 会员级别达到要求才会发放奖金
+                if ($bonusData['LAST_DEC_LV'] == $minDecLevel) {
+                    // 放入缓存
+                    CalcCache::tourismBonus($bonusData['USER_ID'], $this->_periodNum, $amount);
+                    // 加入月奖的会员
+                    CalcCache::addHasMonthBonusUsers($bonusData['USER_ID'], $this->_periodNum);
+                }
+
+                $bonusData['AMOUNT'] = $amount;
+                $bonusData['POINT_COMPLEX'] = $bonusPointComplex;
+            }
+
             CalcBonusTourism::batchInsert($insertBonusData);
         }
 
         return true;
     }
 
-    // 执行车房奖的计算
+    // 执行房奖的计算
+    public function calcBonusVilla() {
+        // 月结,如果不是月结点,则直接退出
+        if (!$this->_isCalcMonth) {
+            return true;
+        }
+
+        $bonusConfig = $this->_sysConfig['openVilla'];
+        // 达标条件:聘级、级别、奖项比例
+        $config = json_decode($bonusConfig['OPTIONS'], true);
+        // 奖金总比例
+        $mate = $bonusConfig['VALUE'] / 100;
+        // 个人奖金封顶
+        $capBonus = intval($this->_sysConfig['openVillaCap']['VALUE'] ?? 0);
+        // 会员级别
+        $minDecLevel = $config['declarationLevel'] ?? [];
+
+        // 月度公司总PV
+        $monthTotalPV = PerfMonth::find()
+            ->yearMonth($this->_calcYearMonth)
+            ->where('CALC_MONTH=:CALC_MONTH', [':CALC_MONTH' => $this->_calcYearMonth])
+            ->sum('PV_PCS');
+        // 用于分发的奖金总数
+        $transferAmount = $monthTotalPV * $mate;
+
+        // 基于团队奖/绩效奖结果计算会员的StarCrown.StarCrown基于周期计算,一个月会产生多次,取月周期中的最高星级
+        $subQuery = CalcBonusQY::find()
+            ->yearMonth($this->_calcYearMonth)
+            ->where('CALC_MONTH = :CALC_MONTH AND LAST_STAR_LV <> :NO_STAR_LV', [':CALC_MONTH' => $this->_calcYearMonth, ':NO_STAR_LV' => StarCrownLevel::NO_LEVEL_ID])
+            ->select('USER_ID,LAST_DEC_LV,LAST_EMP_LV,LAST_STAR_LV,LAST_STATUS,LEVEL_NAME,SORT')
+            ->joinWith(['starCrown' => function($query) {
+                $query->select(['LEVEL_NAME', 'SORT']);
+            }])
+            ->having(1)
+            ->orderBy('USER_ID ASC, SORT DESC');
+        $userStarCrownObj = (new Query())->from(['u' => $subQuery])->select('USER_ID,LAST_DEC_LV,LAST_EMP_LV,LAST_STAR_LV,LAST_STATUS,LEVEL_NAME,SORT')->groupBy('USER_ID')->indexBy('USER_ID')->all();
+
+        // 奖金点数综合
+        $bonusPointComplex = 0;
+        $insertBonusData = [];
+        foreach($userStarCrownObj as $item) {
+            // 奖金比例
+            $bonusPoint = $this->_starCrownLevelConfig[$item['LAST_STAR_LV']]['VILLA_PERCENT'] ?? 0;
+            if (!$bonusPoint) {
+                continue;
+            }
+
+            $insertBonusData[] = [
+                'ID' => SnowFake::instance()->generateId(),
+                'USER_ID' => $item['USER_ID'],
+                'LAST_DEC_LV' => $item['LAST_DEC_LV'],
+                'LAST_EMP_LV' => $item['LAST_EMP_LV'],
+                'LAST_STATUS' => $item['LAST_STATUS'],
+                'LAST_STAR_LV' => $item['LAST_STAR_LV'],
+                'AMOUNT' => 0,
+                'POINT' => $bonusPoint,
+                'PERIOD_NUM' => $this->_periodNum,
+                'CALC_YEAR' => $this->_calcYear,
+                'CALC_MONTH' => $this->_calcYearMonth,
+                'P_CALC_MONTH' => Date::ociToDate($this->_calcYearMonth, Date::OCI_TIME_FORMAT_SHORT_MONTH),
+                'CREATED_AT' => Date::nowTime(),
+                'PERF' => $monthTotalPV,
+                'TRANSFER_RATE' => $mate,
+                'TRANSFER_AMOUNT' => Tool::formatPrice($transferAmount),
+                'CAP_AMOUNT' => 0,
+                'POINT_COMPLEX' => 0,
+            ];
+
+            $bonusPointComplex += $bonusPoint;
+        }
+
+        // 数据写入总表
+        if ($insertBonusData) {
+            // 计算个人奖金
+            foreach ($insertBonusData as &$bonusData) {
+                // 计算奖金
+                $amount = Tool::formatPrice($transferAmount * ($bonusData['POINT'] / $bonusPointComplex));
+                if ($amount <= 0) {
+                    continue;
+                }
+                // 封顶前奖金数
+                $capAmount = $amount;
+                // 奖金数不能大于封顶值
+                $amount = ($amount > $capBonus) ? $capBonus : $amount;
+
+                // 会员级别达到要求才会发放奖金
+                if ($bonusData['LAST_DEC_LV'] == $minDecLevel) {
+                    // 放入缓存
+                    CalcCache::villaBonus($bonusData['USER_ID'], $this->_periodNum, $amount);
+                    // 加入月奖的会员
+                    CalcCache::addHasMonthBonusUsers($bonusData['USER_ID'], $this->_periodNum);
+                }
+
+                $bonusData['AMOUNT'] = $amount;
+                $bonusData['CAP_AMOUNT'] = $capAmount;
+                $bonusData['POINT_COMPLEX'] = $bonusPointComplex;
+            }
+
+            CalcBonusVilla::batchInsert($insertBonusData);
+        }
+
+        return true;
+    }
+
+    // 执行车奖的计算
     public function calcBonusGarage() {
         // 月结,如果不是月结点,则直接退出
         if (!$this->_isCalcMonth) {
@@ -1754,9 +1878,7 @@ class BonusCalc extends BaseObject {
         // 奖金总比例
         $mate = $bonusConfig['VALUE'] / 100;
         // 会员级别
-        $minDecLevel = $config['OPTIONS']['declarationLevel'] ?? [];
-        // 会员聘级
-        $minEmpLevel = $config['OPTIONS']['employLevel'] ?? [];
+        $minDecLevel = $config['declarationLevel'] ?? [];
         // 个人奖金封顶
         $capBonus = intval($this->_sysConfig['openGarageCap']['VALUE'] ?? 0);
 
@@ -1765,6 +1887,8 @@ class BonusCalc extends BaseObject {
             ->yearMonth($this->_calcYearMonth)
             ->where('CALC_MONTH=:CALC_MONTH', [':CALC_MONTH' => $this->_calcYearMonth])
             ->sum('PV_PCS');
+        // 用于分发的奖金总数
+        $transferAmount = $monthTotalPV * $mate;
 
         // 基于蓝星奖结果计算符合获奖条件的会员StarDirector
         $userStarDirector = CalcBonusBS::find()
@@ -1792,6 +1916,8 @@ class BonusCalc extends BaseObject {
         $bonusUsers = array_unique(array_merge(array_keys($userStarDirectorObj), array_keys($userStarCrownObj)));
         sort($bonusUsers);
 
+        // 奖金点数综合
+        $bonusPointComplex = 0;
         $insertBonusData = [];
         foreach($bonusUsers as $userId) {
             // 计算奖金:取starDirectorPoint和startCrownPoint的大个值
@@ -1799,42 +1925,57 @@ class BonusCalc extends BaseObject {
             $startCrownPoint = !isset($userStarCrownObj[$userId]['LAST_STAR_LV']) ? 0: ($this->_starCrownLevelConfig[$userStarCrownObj[$userId]['LAST_STAR_LV']]['GARAGE_PERCENT'] ?? 0);
             // 奖金比例:
             $bonusPoint = max($starDirectorPoint, $startCrownPoint);
-            // 计算奖金
-            $amount = Tool::formatPrice(($monthTotalPV * $mate * $bonusPoint) / 100);
-            if ($amount <= 0) {
-                continue;
-            }
-            // 奖金数不能大于封顶值
-            $amount = ($amount > $capBonus) ? $capBonus : $amount;
-
-            // 会员级别+聘级都达到要求才会发放奖金
-            if (isset($userStarDirectorObj[$userId]) && in_array($userStarDirectorObj[$userId]['LAST_DEC_LV'], $minDecLevel)) {
-                // 放入缓存
-                CalcCache::garageBonus($userId, $this->_periodNum, $amount);
-                // 加入月奖的会员
-                CalcCache::addHasMonthBonusUsers($userId, $this->_periodNum);
-            }
 
             $insertBonusData[] = [
                 'ID' => SnowFake::instance()->generateId(),
                 'USER_ID' => $userId,
-                'LEVEL_ID' => $userStarDirectorObj[$userId]['LEVEL_ID'] ?? '',
                 'LAST_DEC_LV' => $userStarDirectorObj[$userId]['LAST_DEC_LV'] ?? ($userStarCrownObj[$userId]['LAST_DEC_LV'] ?? ''),
                 'LAST_EMP_LV' => $userStarDirectorObj[$userId]['LAST_EMP_LV'] ?? ($userStarCrownObj[$userId]['LAST_EMP_LV'] ?? ''),
                 'LAST_STATUS' => $userStarDirectorObj[$userId]['LAST_STATUS'] ?? ($userStarCrownObj[$userId]['LAST_STATUS'] ?? 1),
                 'LAST_STAR_LV' => $userStarCrownObj[$userId]['LAST_STAR_LV'] ?? '',
-                'AMOUNT' => $amount,
+                'AMOUNT' => 0,
                 'POINT' => $bonusPoint,
                 'PERIOD_NUM' => $this->_periodNum,
                 'CALC_YEAR' => $this->_calcYear,
                 'CALC_MONTH' => $this->_calcYearMonth,
                 'P_CALC_MONTH' => Date::ociToDate($this->_calcYearMonth, Date::OCI_TIME_FORMAT_SHORT_MONTH),
                 'CREATED_AT' => Date::nowTime(),
+                'PERF' => $monthTotalPV,
+                'TRANSFER_RATE' => $mate,
+                'TRANSFER_AMOUNT' => Tool::formatPrice($transferAmount),
+                'CAP_AMOUNT' => 0,
+                'POINT_COMPLEX' => 0,
             ];
+
+            $bonusPointComplex += $bonusPoint;
         }
 
         // 数据写入总表
         if ($insertBonusData) {
+            foreach ($insertBonusData as &$bonusData) {
+                // 计算奖金
+                $amount = Tool::formatPrice($transferAmount * ($bonusData['POINT'] / $bonusPointComplex));
+                if ($amount <= 0) {
+                    continue;
+                }
+                // 封顶前奖金数
+                $capAmount = $amount;
+                // 奖金数不能大于封顶值
+                $amount = ($amount > $capBonus) ? $capBonus : $amount;
+
+                // 会员级别达到要求才会发放奖金
+                if ($bonusData['LAST_DEC_LV'] == $minDecLevel) {
+                    // 放入缓存
+                    CalcCache::garageBonus($bonusData['USER_ID'], $this->_periodNum, $amount);
+                    // 加入月奖的会员
+                    CalcCache::addHasMonthBonusUsers($bonusData['USER_ID'], $this->_periodNum);
+                }
+
+                $bonusData['AMOUNT'] = $amount;
+                $bonusData['CAP_AMOUNT'] = $capAmount;
+                $bonusData['POINT_COMPLEX'] = $bonusPointComplex;
+            }
+
             CalcBonusGarage::batchInsert($insertBonusData);
         }
 
@@ -3499,6 +3640,7 @@ class BonusCalc extends BaseObject {
         $perfData = CalcCache::nowPeriodPerf($userId, $this->_periodNum);
         $tourismBonus = CalcCache::tourismBonus($userId, $this->_periodNum);
         $garageBonus = CalcCache::garageBonus($userId, $this->_periodNum);
+        $villaBonus = CalcCache::villaBonus($userId, $this->_periodNum);
         $empLv = $baseInfo['EMP_LV'];
 //        if($this->_isCalcMonth){
 //            $empLv = $this->nowMonthPerfData($userId)['LAST_EMP_LV'];
@@ -3675,7 +3817,8 @@ class BonusCalc extends BaseObject {
             'ORI_CAPPED_BONUS_QY' => $bonus['ORI_CAPPED_BONUS_QY'], // 团队奖封顶前的奖金
 
             'BONUS_TOURISM' => $tourismBonus, // 旅游奖
-            'BONUS_GARAGE' => $garageBonus, // 车房奖
+            'BONUS_VILLA' => $villaBonus, // 房奖
+            'BONUS_GARAGE' => $garageBonus, // 车奖
 
             //以下没有用
             'BONUS_FW' => 0,

+ 14 - 2
common/helpers/bonus/BonusSend.php

@@ -261,7 +261,7 @@ class BonusSend extends BaseObject {
             echo('全部奖金发放完成,耗时:'.round($t7 - $t1, 3).',内存使用:'.(round(memory_get_usage()/1024/1024, 3)).'MB'.PHP_EOL);
             $this->_updatePercent(100);
         } catch (\Exception $e) {
-            $this->addError('sendBonus', $e->getMessage());
+            $this->addError('sendBonus', sprintf('File【%s】, Line【%s】, Msg【%s】', $e->getFile(), $e->getLine(), $e->getMessage()));
             return false;
         }
         if (count($this->_errors) > 0) {
@@ -486,7 +486,7 @@ class BonusSend extends BaseObject {
                             'BONUS_ISSUE' => true,
                         ]);
                     }
-                    // 车
+                    // 车奖
                     if ($data['BONUS_GARAGE'] > 0) {
                         Balance::changeUserBonus($data['USER_ID'], 'garage_points', $data['BONUS_GARAGE'], [
                             'CALC_ID' => $data['ID'],
@@ -498,6 +498,18 @@ class BonusSend extends BaseObject {
                             'BONUS_ISSUE' => true,
                         ]);
                     }
+                    // 房奖
+                    if ($data['BONUS_VILLA'] > 0) {
+                        Balance::changeUserBonus($data['USER_ID'], 'villa_points', $data['BONUS_VILLA'], [
+                            'CALC_ID' => $data['ID'],
+                            'REMARK' => 'From Period ' . $periodNum,
+                            'PERIOD_NUM' => $periodNum,
+                            'VILLA_POINTS' => $data['BONUS_VILLA'],
+                            'DEAL_TYPE_ID' => DealType::VILLA_SEND,
+                            'SORT' => $key * 10,
+                            'BONUS_ISSUE' => true,
+                        ]);
+                    }
 
                     //发放重消积分
 //                    if ($data['RECONSUME_POINTS'] > 0) {

+ 22 - 0
common/helpers/bonus/CalcCache.php

@@ -54,6 +54,7 @@ class CalcCache {
     const REDIS_KEY_PREFIX_YC_BONUS = 'calc:yc:bonus_';
     const REDIS_KEY_PREFIX_FW_BONUS = 'calc:fw:bonus_';
     const REDIS_KEY_PREFIX_TOURISM_BONUS = 'calc:tourism:bonus_';
+    const REDIS_KEY_PREFIX_VILLA_BONUS = 'calc:villa:bonus_';
     const REDIS_KEY_PREFIX_GARAGE_BONUS = 'calc:garage:bonus_';
     const REDIS_KEY_PREFIX_HAS_PERF_USER = 'calc:hasPerfUser_';
     const REDIS_KEY_PREFIX_HAS_MONTH_PERF_USER = 'calc:hasMonthPerfUser_';
@@ -1603,6 +1604,27 @@ class CalcCache {
         return $value;
     }
 
+    public static function villaBonus($userId, $periodNum, $bonus = 0.00) {
+        $cacheKey = self::REDIS_KEY_PREFIX_VILLA_BONUS . $periodNum;
+
+        $value = 0.00;
+        if( $bonus > 0 ) {
+            Yii::$app->redis->hset($cacheKey, $userId, $bonus);
+            $value = $bonus;
+            //加入有奖金的会员中
+            self::addHasBonusUsers($userId, $periodNum);
+        }else {
+            $cacheValue = \Yii::$app->redis->hget($cacheKey, $userId);
+            if ($cacheValue) {
+                $value = $cacheValue;
+            }
+            unset($cacheValue);
+        }
+
+        unset($cacheKey, $userId, $periodNum, $bonus);
+        return $value;
+    }
+
     public static function garageBonus($userId, $periodNum, $bonus = 0.00) {
         $cacheKey = self::REDIS_KEY_PREFIX_GARAGE_BONUS . $periodNum;
 

+ 1 - 1
common/helpers/bonus/PerfCalc.php

@@ -304,7 +304,7 @@ class PerfCalc {
             echo('业绩结算全部完成,共耗时:' . round($t10 - $t9, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL . PHP_EOL);
         } catch (\Exception $e) {
             $this->errorCalcTask();
-            $this->addError('calc', $e->getMessage());
+            $this->addError('calc', sprintf('File【%s】, Line【%s】, Msg【%s】', $e->getFile(), $e->getLine(), $e->getMessage()));
             return false;
         }
         return true;

+ 23 - 3
common/helpers/user/Balance.php

@@ -19,6 +19,7 @@ use common\models\FlowGaragePoints;
 use common\models\FlowLX;
 use common\models\FlowReconsumePoints;
 use common\models\FlowTourismPoints;
+use common\models\FlowVillaPoints;
 use common\models\InvoiceFlow;
 use common\models\Period;
 use common\models\DeclarationLevel;
@@ -46,6 +47,7 @@ class Balance {
     const INVOICE_BALANCE_LOCK_KEY = 'Invoice';
     const TOURISM_POINTS_BALANCE_LOCK_KEY = 'tourismPoints';
     const GARAGE_POINTS_BALANCE_LOCK_KEY = 'garagePoints';
+    const VILLA_POINTS_BALANCE_LOCK_KEY = 'villaPoints';
 
     const BALANCE_TYPE = [
         'exchange' => [
@@ -62,10 +64,16 @@ class Balance {
         ],
         'garage_points' => [
             'id'    => 'garage_points',
-            'title' => '车积分',
+            'title' => '车积分',
             'attr'  => 'GARAGE_POINTS',
             'pv'    => false,
         ],
+        'villa_points' => [
+            'id'    => 'villa_points',
+            'title' => '房奖积分',
+            'attr'  => 'VILLA_POINTS',
+            'pv'    => false,
+        ],
     ];
 
     /**
@@ -286,6 +294,9 @@ class Balance {
             case 'GARAGE_POINTS':
                 $lockKey = self::GARAGE_POINTS_BALANCE_LOCK_KEY . $userId;
                 break;
+            case 'VILLA_POINTS':
+                $lockKey = self::VILLA_POINTS_BALANCE_LOCK_KEY . $userId;
+                break;
             default:
                 throw new Exception('流水类型错误');
         }
@@ -348,10 +359,13 @@ class Balance {
                     $paramData['BS_ABBR_TOTAL'] = new Expression('BS_ABBR_TOTAL + ' . ($issueBonus ? $params['BS_ABBR'] * $exchangeRate : $params['BS_ABBR']));
                 }
                 if (isset($params['TOURISM_POINTS'])) {
-                    $paramData['TOURISM_POINTS_TOTAL'] = new Expression('TOURISM_POINTS_TOTAL + ' . $params['TOURISM_POINTS']);
+                    $paramData['TOURISM_POINTS_TOTAL'] = new Expression('TOURISM_POINTS_TOTAL + ' . ($issueBonus ? $params['TOURISM_POINTS'] * $exchangeRate : $params['TOURISM_POINTS']));
                 }
                 if (isset($params['GARAGE_POINTS'])) {
-                    $paramData['GARAGE_POINTS_TOTAL'] = new Expression('GARAGE_POINTS_TOTAL + '.$params['GARAGE_POINTS']);
+                    $paramData['GARAGE_POINTS_TOTAL'] = new Expression('GARAGE_POINTS_TOTAL + ' . ($issueBonus ? $params['GARAGE_POINTS'] * $exchangeRate : $params['GARAGE_POINTS']));
+                }
+                if (isset($params['VILLA_POINTS'])) {
+                    $paramData['VILLA_POINTS_TOTAL'] = new Expression('VILLA_POINTS_TOTAL + ' . ($issueBonus ? $params['VILLA_POINTS'] * $exchangeRate : $params['VILLA_POINTS']));
                 }
                 if (isset($params['RECONSUME_POINTS_TOTAL'])) {
                     $paramData['RECONSUME_POINTS_TOTAL'] = new Expression('RECONSUME_POINTS_TOTAL + ' . ($issueBonus ? $params['RECONSUME_POINTS_TOTAL'] * $exchangeRate : $params['RECONSUME_POINTS_TOTAL']));
@@ -478,6 +492,9 @@ class Balance {
                 if (isset($params['GARAGE_POINTS'])) {
                     $paramData['GARAGE_POINTS_TOTAL'] = $params['GARAGE_POINTS'];
                 }
+                if (isset($params['VILLA_POINTS'])) {
+                    $paramData['VILLA_POINTS_TOTAL'] = $params['VILLA_POINTS'];
+                }
                 if (isset($params['RECONSUME_POINTS_TOTAL'])) {
 //                    $paramData['RECONSUME_POINTS_TOTAL'] = new Expression('RECONSUME_POINTS_TOTAL + '.$params['RECONSUME_POINTS_TOTAL']);
                     $paramData['RECONSUME_POINTS_TOTAL'] = ($issueBonus ? $params['RECONSUME_POINTS_TOTAL'] * $exchangeRate : $params['RECONSUME_POINTS_TOTAL']);
@@ -608,6 +625,9 @@ class Balance {
             } elseif (strtolower($type) == 'garage_points') {
                 $flowInsertData['LAST_STAR_LV'] = $userInfo['LAST_STAR_LV'];
                 FlowGaragePoints::insertOne($flowInsertData);
+            } elseif (strtolower($type) == 'villa_points') {
+                $flowInsertData['LAST_STAR_LV'] = $userInfo['LAST_STAR_LV'];
+                FlowVillaPoints::insertOne($flowInsertData);
             }
 
             unset($flowInsertData, $userInfo, $oneUserBonus);

+ 3 - 3
common/libs/export/BaseExport.php

@@ -786,7 +786,7 @@ ORDER;
             // 设置行高
             $pdf->setCellHeightRatio(1);
             // 设置左、上、右的间距
-            $pdf->SetMargins('10', '10', '10');
+            $pdf->SetMargins('10', '0', '10');
             // 设置是否自动分页  距离底部多少距离时分页
             $pdf->SetAutoPageBreak(TRUE, '15');
             // 设置图像比例因子
@@ -799,8 +799,8 @@ ORDER;
             $pdf->AddPage();
             // 设置字体
             $pdf->SetFont('stsongstdlight', '', 10, '', true);
-//            $image = file_get_contents(\Yii::$app->basePath . '/../frontendEle/src/static/img/ngds-logo.jpg');
-//            $pdf->Image('@' . $image, 165, 5, 20, 10, 'JPG');
+            $image = file_get_contents(\Yii::$app->basePath . '/../frontendEle/src/static/img/ngds-logo.jpg');
+            $pdf->Image('@' . $image, 15, 12, 20, 7, 'JPG');
             $pdf->writeHTML($context);
             $pdf->Output($realFile, 'F');
 

+ 5 - 1
common/models/BalanceAudit.php

@@ -60,7 +60,11 @@ class BalanceAudit extends \common\components\ActiveRecord
 //        ],
         'garage_points' => [
             'name' => 'garage_points',
-            'label' => 'Car/Villa points',//车房积分
+            'label' => 'Car points',// 车奖积分
+        ],
+        'villa_points' => [
+            'name' => 'villa_points',
+            'label' => 'Villa points',// 房奖积分
         ],
     ];
 

+ 6 - 4
common/models/CalcBonus.php

@@ -105,7 +105,8 @@ use Yii;
  * @property string $BONUS_BS 蓝星奖金(即新的管理奖)
  * @property string $ORI_BONUS_BS 蓝星原奖金(即新的管理奖,原奖金)
  * @property string $BONUS_TOURISM 旅游奖奖金
- * @property string $BONUS_GARAGE 车房奖奖金
+ * @property string $BONUS_VILLA 房奖奖金
+ * @property string $BONUS_GARAGE 车奖奖金
  */
 class CalcBonus extends \common\components\ActiveRecord
 {
@@ -125,7 +126,7 @@ class CalcBonus extends \common\components\ActiveRecord
         return [
             [['USER_ID', 'LAST_USER_NAME', 'LAST_REAL_NAME', 'LAST_MOBILE', 'LAST_SYSTEM_ID','LAST_LOCATION', 'PERIOD_NUM', 'CALC_YEAR', 'CALC_MONTH', 'CALCULATED_AT', 'P_CALC_MONTH', 'CREATED_AT'], 'required'],
             [['LAST_STATUS', 'LAST_PERIOD_AT', 'LAST_CREATED_AT', 'LAST_PROVINCE', 'LAST_CITY', 'LAST_COUNTY', 'LAST_IS_DIRECT_SELLER', 'LAST_LOCATION', 'PERIOD_NUM', 'CALC_YEAR', 'CALC_MONTH', 'CALCULATED_AT', 'IS_SENT', 'SENT_AT', 'CREATED_AT'], 'integer'],
-            [['ORI_BONUS_BS','EXCHANGE_POINTS','BONUS_BS','BONUS_QY', 'BONUS_YC', 'BONUS_VIP', 'BONUS_FX', 'BONUS_LS', 'BONUS_FW', 'BONUS_BT', 'BONUS_BT_PROD', 'BONUS_BT_TOOL', 'DEDUCT_ZR', 'BONUS_FL', 'BONUS_CF', 'BONUS_LX', 'SHOULD_QY', 'SHOULD_DEDUCT_ZR', 'PV_1L', 'QY_1L', 'SURPLUS_1L', 'PV_2L', 'QY_2L', 'SURPLUS_2L', 'PV_3L', 'QY_3L', 'SURPLUS_3L', 'PV_4L', 'QY_4L', 'SURPLUS_4L', 'PV_5L', 'QY_5L', 'SURPLUS_5L', 'PV_PCS', 'PV_LS_TOUCH', 'SURPLUS_LS', 'QY_LS', 'PV_TOUCH', 'BONUS_REAL', 'BONUS_TOTAL', 'BONUS_INCOME', 'ORI_BONUS_QY','ORI_BONUS_QY_BD','ORI_BONUS_QY_FX','ORI_BONUS_YC', 'ORI_BONUS_VIP','ORI_BONUS_STANDARD','BONUS_BD','ORI_BONUS_BD','BONUS_TG','ORI_BONUS_TG','BONUS_XF','ORI_BONUS_XF','BONUS_YJ','ORI_BONUS_YJ','ORI_BONUS_YJ_BD','ORI_BONUS_YJ_FX','BONUS_GX','ORI_BONUS_GX','REAL_BONUS_GX','BONUS_GL','ORI_BONUS_GL','REAL_BONUS_GL','ORI_BONUS_GL_BD','ORI_BONUS_GL_FX','RECONSUME_POINTS','MANAGE_TAX', 'BONUS_TOURISM', 'BONUS_GARAGE'], 'number'],
+            [['ORI_BONUS_BS','EXCHANGE_POINTS','BONUS_BS','BONUS_QY', 'BONUS_YC', 'BONUS_VIP', 'BONUS_FX', 'BONUS_LS', 'BONUS_FW', 'BONUS_BT', 'BONUS_BT_PROD', 'BONUS_BT_TOOL', 'DEDUCT_ZR', 'BONUS_FL', 'BONUS_CF', 'BONUS_LX', 'SHOULD_QY', 'SHOULD_DEDUCT_ZR', 'PV_1L', 'QY_1L', 'SURPLUS_1L', 'PV_2L', 'QY_2L', 'SURPLUS_2L', 'PV_3L', 'QY_3L', 'SURPLUS_3L', 'PV_4L', 'QY_4L', 'SURPLUS_4L', 'PV_5L', 'QY_5L', 'SURPLUS_5L', 'PV_PCS', 'PV_LS_TOUCH', 'SURPLUS_LS', 'QY_LS', 'PV_TOUCH', 'BONUS_REAL', 'BONUS_TOTAL', 'BONUS_INCOME', 'ORI_BONUS_QY','ORI_BONUS_QY_BD','ORI_BONUS_QY_FX','ORI_BONUS_YC', 'ORI_BONUS_VIP','ORI_BONUS_STANDARD','BONUS_BD','ORI_BONUS_BD','BONUS_TG','ORI_BONUS_TG','BONUS_XF','ORI_BONUS_XF','BONUS_YJ','ORI_BONUS_YJ','ORI_BONUS_YJ_BD','ORI_BONUS_YJ_FX','BONUS_GX','ORI_BONUS_GX','REAL_BONUS_GX','BONUS_GL','ORI_BONUS_GL','REAL_BONUS_GL','ORI_BONUS_GL_BD','ORI_BONUS_GL_FX','RECONSUME_POINTS','MANAGE_TAX', 'BONUS_TOURISM', 'BONUS_GARAGE', 'BONUS_VILLA'], 'number'],
             [['ID', 'USER_ID', 'LAST_DEC_LV', 'LAST_EMP_LV', 'LAST_SUB_COM_ID', 'LAST_SYSTEM_ID', 'LAST_STAR_LV'], 'string', 'max' => 32],
             [['LAST_USER_NAME', 'LAST_REC_USER_NAME', 'LAST_CON_USER_NAME'], 'string', 'max' => 16],
             [['LAST_REAL_NAME', 'LAST_REC_REAL_NAME', 'LAST_CON_REAL_NAME'], 'string', 'max' => 128],
@@ -243,7 +244,8 @@ class CalcBonus extends \common\components\ActiveRecord
             'BONUS_BS_ABBR' => '蓝星业绩奖',
             'ORI_BONUS_BS_ABBR' => '蓝星业绩奖原奖金',
             'BONUS_TOURISM' => '旅游奖奖金',
-            'BONUS_GARAGE' => '车房奖奖金',
+            'BONUS_GARAGE' => '车奖奖金',
+            'BONUS_VILLA' => '房奖奖金',
         ];
     }
 
@@ -259,7 +261,7 @@ class CalcBonus extends \common\components\ActiveRecord
         $periodYearMonths = Period::getNearlyPeriodYearMonth($num);
         $allBonus = [];
         foreach($periodYearMonths as $data){
-            $allBonus[] = static::findUseSlaves()->yearMonth($data['yearMonth'])->select('USER_ID,BONUS_QY, BONUS_YC, BONUS_FX, BONUS_LS, BONUS_FW, BONUS_BT, BONUS_BT_PROD, BONUS_BT_TOOL, DEDUCT_ZR, BONUS_FL, BONUS_CF, BONUS_LX, SHOULD_QY,BONUS_TOURISM,BONUS_GARAGE')->where('USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM AND IS_SENT=1', [':USER_ID'=>$userId, ':PERIOD_NUM'=>$data['periodNum']])->asArray()->one();
+            $allBonus[] = static::findUseSlaves()->yearMonth($data['yearMonth'])->select('USER_ID,BONUS_QY, BONUS_YC, BONUS_FX, BONUS_LS, BONUS_FW, BONUS_BT, BONUS_BT_PROD, BONUS_BT_TOOL, DEDUCT_ZR, BONUS_FL, BONUS_CF, BONUS_LX, SHOULD_QY,BONUS_TOURISM,BONUS_GARAGE,BONUS_VILLA')->where('USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM AND IS_SENT=1', [':USER_ID'=>$userId, ':PERIOD_NUM'=>$data['periodNum']])->asArray()->one();
         }
         return $allBonus;
     }

+ 6 - 1
common/models/CalcBonusGarage.php

@@ -14,13 +14,18 @@ use Yii;
  * @property string $LAST_STAR_LV 结算时会员星级
  * @property int $LAST_STATUS 结算时状态
  * @property string $AMOUNT 奖金金额
- * @property string $POINT 奖金比例
+ * @property string $POINT 会员提点
  * @property int $PERIOD_NUM 结算期数
  * @property int $CALC_YEAR 所在结算年
  * @property int $CALC_MONTH 所在结算月
  * @property string $P_CALC_MONTH 表分区的日期索引
  * @property string $LOGS 日志
  * @property int $CREATED_AT 创建时间
+ * @property string $PERF 总业绩
+ * @property string $TRANSFER_RATE 奖金总划拨比
+ * @property string $TRANSFER_AMOUNT 划拨奖金
+ * @property string $CAP_AMOUNT 封顶前奖金
+ * @property string $POINT_COMPLEX 总点数
  */
 class CalcBonusGarage extends \common\components\ActiveRecord
 {

+ 5 - 0
common/models/CalcBonusTourism.php

@@ -21,6 +21,11 @@ use Yii;
  * @property string $P_CALC_MONTH 表分区的日期索引
  * @property string $LOGS 日志
  * @property int $CREATED_AT 创建时间
+ * @property string $PERF 总业绩
+ * @property string $TRANSFER_RATE 奖金总划拨比
+ * @property string $TRANSFER_AMOUNT 划拨奖金
+ * @property string $CAP_AMOUNT 封顶前奖金
+ * @property string $POINT_COMPLEX 总点数
  */
 class CalcBonusTourism extends \common\components\ActiveRecord
 {

+ 78 - 0
common/models/CalcBonusVilla.php

@@ -0,0 +1,78 @@
+<?php
+
+namespace common\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "{{%CALC_BONUS_VILLA}}".
+ *
+ * @property string $ID
+ * @property string $USER_ID 会员ID
+ * @property string $LAST_DEC_LV 结算时会员级别
+ * @property string $LAST_EMP_LV 结算时会员聘级
+ * @property string $LAST_STAR_LV 结算时会员星级
+ * @property int $LAST_STATUS 结算时状态
+ * @property string $AMOUNT 奖金金额
+ * @property string $POINT 会员提点
+ * @property int $PERIOD_NUM 结算期数
+ * @property int $CALC_YEAR 所在结算年
+ * @property int $CALC_MONTH 所在结算月
+ * @property string $P_CALC_MONTH 表分区的日期索引
+ * @property string $LOGS 日志
+ * @property int $CREATED_AT 创建时间
+ * @property string $PERF 月总业绩
+ * @property string $TRANSFER_RATE 奖金总划拨比
+ * @property string $TRANSFER_AMOUNT 划拨奖金
+ * @property string $CAP_AMOUNT 封顶前奖金
+ * @property string $POINT_COMPLEX 总点数
+ */
+class CalcBonusVilla extends \common\components\ActiveRecord
+{
+    /**
+     * @inheritdoc
+     */
+    public static function tableName()
+    {
+        return '{{%CALC_BONUS_VILLA}}';
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function rules()
+    {
+        return [
+            [['USER_ID', 'PERIOD_NUM', 'CALC_YEAR', 'CALC_MONTH', 'P_CALC_MONTH', 'CREATED_AT'], 'required'],
+            [['AMOUNT', 'POINT'], 'number'],
+            [['LAST_STATUS', 'PERIOD_NUM', 'CALC_YEAR', 'CALC_MONTH', 'CREATED_AT'], 'integer'],
+            [['ID', 'USER_ID', 'LAST_DEC_LV', 'BONUS_TYPE', 'LAST_STAR_LV'], 'string', 'max' => 32],
+            [['P_CALC_MONTH'], 'safe'],
+            [['LOGS'], 'string', 'max' => 2000],
+            [['ID'], 'unique'],
+        ];
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function attributeLabels()
+    {
+        return [
+            'ID' => 'ID',
+            'USER_ID' => '会员ID',
+            'LAST_DEC_LV' => '结算时会员级别',
+            'LAST_EMP_LV' => '结算时会员聘级',
+            'LAST_STAR_LV' => '结算时会员星级',
+            'LAST_STATUS' => '结算时状态',
+            'AMOUNT' => '奖金金额',
+            'POINT' => '奖金比例',
+            'PERIOD_NUM' => '结算期数',
+            'CALC_YEAR' => '所在结算年',
+            'CALC_MONTH' => '所在结算月',
+            'P_CALC_MONTH' => '表分区的日期索引',
+            'CREATED_AT' => '创建时间',
+            'LOGS' => '日志',
+        ];
+    }
+}

+ 6 - 3
common/models/DealType.php

@@ -48,11 +48,14 @@ class DealType extends \common\components\ActiveRecord
     CONST RECONSUME_POINTS_EXCHANGE = 'YA627DTHN81OBO7NIQ1OP8N3PGZX5C66';//复消积分兑换
     CONST EXCHANGE_POINTS_EXCHANGE = '316872011148300288';//兑换积分兑换
     CONST TOURISM_SEND = '364305038266470400';// 旅游奖奖金发放
-    CONST GARAGE_SEND = '364305160249413632';// 车房奖奖金发放
+    CONST GARAGE_SEND = '364305160249413632';// 车奖奖金发放
+    CONST VILLA_SEND = '390992293622059008';// 房奖奖金发放
     CONST TOURISM_POINTS_EXCHANGE = '365343018452127744'; // 旅游积分兑换
-    CONST GARAGE_POINTS_EXCHANGE = '365343060634243072'; // 车房积分兑换
+    CONST GARAGE_POINTS_EXCHANGE = '365343060634243072'; // 车奖积分兑换
+    CONST VILLA_POINTS_EXCHANGE = '390992212424527872'; // 房奖积分兑换
     CONST TOURISM_POINTS_ADJUST = '365753533326299136'; // 旅游积分余额调整
-    CONST GARAGE_POINTS_ADJUST = '365753643942678528'; // 车房积分余额调整
+    CONST GARAGE_POINTS_ADJUST = '365753643942678528'; // 车奖积分余额调整
+    CONST VILLA_POINTS_ADJUST = '390990784847024128'; // 房奖积分余额调整
 
     /**
      * {@inheritdoc}

+ 1 - 1
common/models/DeclarationPackage.php

@@ -64,7 +64,7 @@ class DeclarationPackage extends \common\components\ActiveRecord
             'PACKAGE_NO' => '套餐编号',
             'LEVEL_ID' => '所属报单级别ID',
             'AMOUNT' => '套餐金额',
-            'AMOUNT_STANDARD' => '标准价格',
+            'AMOUNT_STANDARD' => 'US price',// 标准价格
             'PV' => '套餐BV',
             'PACKAGE_CONTENT' => '套餐内容',
             'CREATED_AT' => '创建时间',

+ 81 - 0
common/models/FlowVillaPoints.php

@@ -0,0 +1,81 @@
+<?php
+
+namespace common\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "{{%FLOW_VILLA_POINTS}}".
+ *
+ * @property string $ID
+ * @property string $USER_ID 会员ID
+ * @property string $CALC_ID 奖金结算表ID
+ * @property string $AMOUNT 金额
+ * @property string $TOTAL 当前总金额
+ * @property int $IS_INCR 是否增加
+ * @property string $REMARK 备注
+ * @property string $ADMIN_NAME 操作人名称
+ * @property int $PERIOD_NUM 所在期数
+ * @property int $CALC_MONTH 所在结算月
+ * @property string $P_MONTH 表分区的日期索引
+ * @property int $CREATED_AT 创建时间
+ * @property int $DELETED 是否删除
+ * @property int $DELETED_AT 删除时间
+ * @property int $SORT 排序
+ * @property string $TRANSFER_SN 转账流水号
+ */
+class FlowVillaPoints extends \common\components\ActiveRecord
+{
+    const INCR_REDUCE = 0;      // 减少
+    const INCR_ADD = 1;         // 增加
+    const INCR_FREEZE = 2;      // 冻结
+    const INCR_UNFREEZE = 3;    // 解冻
+
+    /**
+     * @inheritdoc
+     */
+    public static function tableName()
+    {
+        return '{{%FLOW_VILLA_POINTS}}';
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function rules()
+    {
+        return [
+            [['USER_ID', 'REMARK', 'PERIOD_NUM', 'CALC_MONTH', 'P_MONTH', 'CREATED_AT'], 'required'],
+            [['AMOUNT', 'TOTAL'], 'number'],
+            [['IS_INCR', 'PERIOD_NUM', 'CALC_MONTH', 'CREATED_AT', 'DELETED', 'DELETED_AT', 'SORT'], 'integer'],
+            [['ID', 'USER_ID', 'CALC_ID', 'ADMIN_NAME', 'TRANSFER_SN', 'LAST_STAR_LV'], 'string', 'max' => 32],
+            [['REMARK'], 'string', 'max' => 255],
+            [['ID'], 'unique'],
+        ];
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function attributeLabels()
+    {
+        return [
+            'ID' => 'ID',
+            'USER_ID' => '会员ID',
+            'CALC_ID' => '结算表ID',
+            'AMOUNT' => '交易金额',
+            'TOTAL' => '当前总金额',
+            'IS_INCR' => '是否增加',
+            'REMARK' => '备注',
+            'ADMIN_NAME' => '操作人名称',
+            'PERIOD_NUM' => '所在期数',
+            'CALC_MONTH' => '所在结算月',
+            'P_MONTH' => '表分区的日期索引',
+            'CREATED_AT' => '创建时间',
+            'DELETED' => '是否删除',
+            'DELETED_AT' => '删除时间',
+            'SORT' => '排序',
+            'TRANSFER_SN' => '转账流水号',
+        ];
+    }
+}

+ 1 - 1
common/models/PerfOrder.php

@@ -45,7 +45,7 @@ class PerfOrder extends \common\components\ActiveRecord
     const STATUS_NORMAL = 1; //正常
     const STATUS_CLOSED = 2; //置废
     const STATUS_NAME = [
-      self::STATUS_NORMAL=>'已审核',
+      self::STATUS_NORMAL=>'Audited',//已审核
       self::STATUS_CLOSED=>'置废',
     ];
     /**

+ 19 - 4
common/models/ShopGoods.php

@@ -55,9 +55,14 @@ class ShopGoods extends \common\components\ActiveRecord
         ],
         5 => [
             'id' => 5,
-            'name' => 'Car/Villa Fund',
+            'name' => 'Car Fund',
             'label' => 'garage_points',
         ],
+        6 => [
+            'id' => 6,
+            'name' => 'Villa Fund',
+            'label' => 'villa_points',
+        ],
         7 => [
             'id' => 7,
             'name' => 'PayStack',
@@ -112,11 +117,18 @@ class ShopGoods extends \common\components\ActiveRecord
 //        ],
         [
             'id' => 5,
-            'name' => 'Car/Villa Fund Products',
+            'name' => 'Car Fund Products',
             'sell_type' => [
                 self::SALE_TYPE[5]
             ]
         ],
+        [
+            'id' => 6,
+            'name' => 'Villa Fund Products',
+            'sell_type' => [
+                self::SALE_TYPE[6]
+            ]
+        ],
     ];
     /**
      * @inheritdoc
@@ -164,7 +176,7 @@ class ShopGoods extends \common\components\ActiveRecord
             'IMAGES' => '商品图片',
             'CONTENT' => '商品内容',
             'SELL_PRICE' => '销售价格',
-            'SELL_PRICE_STANDARD' => '标准价格($)',
+            'SELL_PRICE_STANDARD' => 'US price($)',
             'MARKET_PRICE' => '市场价格',
             'PRICE_PV' => '价格PV',
             'TAX_RATE' => '税率',
@@ -226,7 +238,10 @@ class ShopGoods extends \common\components\ActiveRecord
 //                'name'=>'Travel Bonus'
 //            ],
             'garage_points' => [
-                'name' => 'Car/Villa Fund'
+                'name' => 'Car Fund'
+            ],
+            'villa_points' => [
+                'name' => 'Villa Fund'
             ],
             'pay_stack' => [
                 'name' => 'PayStack'

+ 10 - 5
common/models/UserBonus.php

@@ -31,7 +31,8 @@ use common\libs\logging\operate\valueType\Config as ValueTypeConfig;
  * @property string $DEDUCT_ZR_TOTAL 责任业绩扣除累计
  * @property string $FL_TOTAL 形象店货补累计
  * @property string $TOURISM_POINTS_TOTAL 旅游积分累积
- * @property string $GARAGE_POINTS_TOTAL 车房积分累积
+ * @property string $GARAGE_POINTS_TOTAL 车奖积分累积
+ * @property string $VILLA_POINTS_TOTAL 房奖积分累积
  * @property int $VER 乐观锁标识
  * @property int $CREATED_AT 创建时间
  * @property int $BD_TOTAL 服务奖累计
@@ -72,7 +73,7 @@ class UserBonus extends \common\components\ActiveRecord
     {
         return [
             [['USER_ID', 'CREATED_AT'], 'required'],
-            [['BS_TOTAL','ORI_BS_TOTAL','BS','BONUS', 'BONUS_FREEZE', 'CF', 'LX', 'QY_TOTAL', 'YC_TOTAL', 'VIP_TOTAL', 'FX_TOTAL', 'LS_TOTAL', 'FW_TOTAL', 'BT_TOTAL', 'BT_PROD_TOTAL', 'BT_TOOL_TOTAL', 'CF_TOTAL', 'LX_TOTAL', 'DEDUCT_ZR_TOTAL', 'FL_TOTAL', 'BD_TOTAL','TG_TOTAL','YJ_TOTAL','GX_TOTAL','GL_TOTAL', 'ORI_QY_TOTAL','ORI_YC_TOTAL','ORI_YC_TOTAL','ORI_BD_TOTAL','ORI_TG_TOTAL','ORI_YJ_TOTAL','ORI_GX_TOTAL','ORI_GL_TOTAL','RECONSUME_POINTS','MANAGE_TAX', 'RECONSUME_POINTS_EXPIRED', 'RECONSUME_POINTS_TOTAL', 'BONUS_TOTAL', 'TOURISM_POINTS', 'GARAGE_POINTS'], 'number'],
+            [['BS_TOTAL','ORI_BS_TOTAL','BS','BONUS', 'BONUS_FREEZE', 'CF', 'LX', 'QY_TOTAL', 'YC_TOTAL', 'VIP_TOTAL', 'FX_TOTAL', 'LS_TOTAL', 'FW_TOTAL', 'BT_TOTAL', 'BT_PROD_TOTAL', 'BT_TOOL_TOTAL', 'CF_TOTAL', 'LX_TOTAL', 'DEDUCT_ZR_TOTAL', 'FL_TOTAL', 'BD_TOTAL','TG_TOTAL','YJ_TOTAL','GX_TOTAL','GL_TOTAL', 'ORI_QY_TOTAL','ORI_YC_TOTAL','ORI_YC_TOTAL','ORI_BD_TOTAL','ORI_TG_TOTAL','ORI_YJ_TOTAL','ORI_GX_TOTAL','ORI_GL_TOTAL','RECONSUME_POINTS','MANAGE_TAX', 'RECONSUME_POINTS_EXPIRED', 'RECONSUME_POINTS_TOTAL', 'BONUS_TOTAL', 'TOURISM_POINTS', 'GARAGE_POINTS', 'VILLA_POINTS'], 'number'],
             [['VER', 'CREATED_AT'], 'integer'],
             [['ID','USER_ID'], 'string', 'max' => 32],
             [['USER_ID'], 'unique'],
@@ -129,8 +130,10 @@ class UserBonus extends \common\components\ActiveRecord
             'ORI_BS_TOTAL' => '蓝星原奖金累计',
             'TOURISM' => '旅游积分',
             'TOURISM_TOTAL' => '旅游积分累计',
-            'GARAGE' => '车房积分',
-            'GARAGE_TOTAL' => '车房积分累计',
+            'GARAGE' => '车奖积分',
+            'GARAGE_TOTAL' => '车奖积分累计',
+            'VILLA' => '房奖积分',
+            'VILLA_TOTAL' => '房奖积分累计',
         ];
     }
 
@@ -145,7 +148,8 @@ class UserBonus extends \common\components\ActiveRecord
             'CF' => '车房养老奖',
             'LX' => '领袖分红奖',
             'TOURISM' => '旅游积分',
-            'GARAGE' => '车房积分',
+            'GARAGE' => '车奖积分',
+            'VILLA' => '房奖积分',
         ];
     }
 
@@ -173,6 +177,7 @@ class UserBonus extends \common\components\ActiveRecord
                 'LX' => 0,
                 'TOURISM' => 0,
                 'GARAGE' => 0,
+                'VILLA' => 0,
             ];
         }
         return $data;

+ 2 - 2
common/models/forms/AdminAddUserForm.php

@@ -69,13 +69,13 @@ class AdminAddUserForm extends Model {
     public function rules() {
         return [
             [['userName', 'nation', 'realName', 'idCard', 'mobile', 'address', 'openBank', 'bankAddress', 'bankNo', 'bankAreaSelected', 'decLv', 'areaSelected', 'tel', 'isDec', 'decUserName', 'birthday', 'decRoleId', 'conUserName', 'recUserName', 'location', 'delUserName'], 'trim'],
-            [['userName', 'realName', 'idCard', 'decLv', 'decUserName', 'conUserName', 'recUserName', 'location'], 'required'],
+            [['userName', 'realName', /*'idCard',*/ 'decLv', 'decUserName', 'conUserName', 'recUserName', 'location'], 'required'],
             [['userName'], 'unique', 'targetClass' => UserInfo::class, 'targetAttribute' => 'USER_NAME'],
             [['conUserName'], 'exist', 'targetClass' => UserInfo::class, 'targetAttribute' => 'USER_NAME'],
             [['recUserName'], 'exist', 'targetClass' => UserInfo::class, 'targetAttribute' => 'USER_NAME'],
             [['decLv'], 'exist', 'targetClass' => DeclarationLevel::class, 'targetAttribute' => 'ID'],
             [['mobile'], 'mobile'],
-            [['idCard'], 'simpleIdCard'],
+//            [['idCard'], 'simpleIdCard'],
             [['bankNo'], 'string', 'max' => 19],
             [['decUserName'], 'issetDec'],
             [['isDec'], 'issetDecRoleId'],

+ 1 - 1
common/models/forms/DecPackageForm.php

@@ -49,7 +49,7 @@ class DecPackageForm extends Model
             'packageName' => '套餐名称',
             'packageNo' => '套餐编号',
             'amount' => '套餐金额',
-            'amountStandard' => '标准价格',
+            'amountStandard' => 'US price',
             'amountPv' => '套餐BV',
             'levelId' => '所属报单级别',
             'packageContent' => '套餐详情',

+ 2 - 0
common/models/forms/OrderForm.php

@@ -724,6 +724,8 @@ class OrderForm extends Model
             Balance::changeUserBonus(\Yii::$app->user->id, 'tourism_points', -abs($this->_payAmount), ['DEAL_TYPE_ID' => DealType::TOURISM_POINTS_EXCHANGE,'REMARK' => '会员旅游换积分兑换']);
         } else if ($this->payType == 'garage_points') {
             Balance::changeUserBonus(\Yii::$app->user->id, 'garage_points', -abs($this->_payAmount), ['DEAL_TYPE_ID' => DealType::GARAGE_POINTS_EXCHANGE,'REMARK' => '会员名车积分兑换']);
+        }  else if ($this->payType == 'villa_points') {
+            Balance::changeUserBonus(\Yii::$app->user->id, 'villa_points', -abs($this->_payAmount), ['DEAL_TYPE_ID' => DealType::VILLA_POINTS_EXCHANGE,'REMARK' => '会员房奖积分兑换']);
         } else if ($this->payType == 'reconsume_points') {
             Balance::changeUserBonus(\Yii::$app->user->id,'reconsume_points', -abs($this->_payAmount),['DEAL_TYPE_ID' => DealType::RECONSUME_POINTS_EXCHANGE,'REMARK' => '会员复销积分兑换']);
         }

+ 1 - 1
common/models/forms/RechargeForm.php

@@ -268,7 +268,7 @@ class RechargeForm extends Model {
             }
             //待审核->已审核 修改会员现金钱包
             if ($this->auditStatus == Recharge::STATUS_AUDITED) {
-                Cash::changeUserCash($oneRecharge->USER_ID, 'CASH', abs($oneRecharge->AMOUNT), ['REMARK' => '会员充值申请审核']);
+                Cash::changeUserCash($oneRecharge->USER_ID, 'CASH', abs($oneRecharge->AMOUNT), ['REMARK' => 'Review member recharge application']);
             }
             $oneRecharge->REMARK = $this->createRemark ?? '';
             $oneRecharge->AUDIT_ADMIN = \Yii::$app->user->id;

+ 9 - 9
common/models/forms/ShopGoodsForm.php

@@ -67,25 +67,25 @@ class ShopGoodsForm extends Model
     public function attributeLabels()
     {
         return [
-            'selectedIds' => '商品ID',
-            'id' => '产品ID',
+            'selectedIds' => 'ID',
+            'id' => 'Product ID',
             'goodsName' => 'Product Name', // 商品名称
             'sellDiscount' => 'Discount Rate', // 会员折扣
             'giftType' => 'Product Type', // 商品类型
             'categoryType' => 'Product Category', // 商品分类
-            'sellType' => '出售方式',
+            'sellType' => 'SellType', //出售方式
             'goodsNo' => 'Product Code', // 产品编号
-            'unit' => '单位',
-            'cover' => '封面',
+            'unit' => 'Unit', // 单位
+            'cover' => 'Cover',// 封面
             'sellPrice' => 'Price', // 销售价格
-            'sellPriceStandard' => '标准价格',
+            'sellPriceStandard' => 'US price',
             'marketPrice' => 'Market Price', // 市场价格
             'pricePv' => 'BV', // 销售PV
             //'point' => '兑换积分',
             'storeNums' => 'Inventory', // 库存
-            'content' => '产品详情',
-            'listOrder' => '排序',
-            'taxRate' => '税率',
+            'content' => 'Content',
+            'listOrder' => 'Order',// 排序
+            'taxRate' => 'Tax',// 税率
         ];
     }
 

+ 18 - 6
frontendApi/modules/v1/controllers/BonusController.php

@@ -25,6 +25,7 @@ use common\models\FlowGaragePoints;
 use common\models\FlowLX;
 use common\models\FlowReconsumePoints;
 use common\models\FlowTourismPoints;
+use common\models\FlowVillaPoints;
 use common\models\FlowWallet;
 use common\models\PerfMonth;
 use common\models\Period;
@@ -46,7 +47,7 @@ class BonusController extends BaseController {
      */
     public function actionIndex() {
         $userId = \Yii::$app->user->id;
-        $data = UserBonus::findUseSlaves()->select('BONUS,RECONSUME_POINTS,EXCHANGE_POINTS,TOURISM_POINTS,GARAGE_POINTS')->where('USER_ID=:USER_ID', [':USER_ID' => $userId])->asArray()->one();
+        $data = UserBonus::findUseSlaves()->select('BONUS,RECONSUME_POINTS,EXCHANGE_POINTS,TOURISM_POINTS,GARAGE_POINTS,VILLA_POINTS')->where('USER_ID=:USER_ID', [':USER_ID' => $userId])->asArray()->one();
         if (!$data) {
             $data = [
                 'BONUS' => 0,
@@ -54,6 +55,7 @@ class BonusController extends BaseController {
                 'EXCHANGE_POINTS' => 0,
                 'TOURISM_POINTS' => 0,
                 'GARAGE_POINTS' => 0,
+                'VILLA_POINTS' => 0,
             ];
         }
         $data['CASH'] = 0;
@@ -75,7 +77,8 @@ class BonusController extends BaseController {
 //        $wallet[] = ['walletType' => 'point', 'walletName' => '会员积分', 'amount' => Tool::formatPrice($data['RECONSUME_POINTS'])];
 //        $wallet[] = ['walletType' => 'exchange', 'walletName' => 'Exchange points', 'amount' => Tool::formatPrice($data['EXCHANGE_POINTS'])];//兑换点数
 //        $wallet[] = ['walletType' => 'tourism_points', 'walletName' => 'Travel points', 'amount' => Tool::formatPrice($data['TOURISM_POINTS'])];//旅游积分
-        $wallet[] = ['walletType' => 'garage_points', 'walletName' => 'Car/Villa points', 'amount' => Tool::formatPrice($data['GARAGE_POINTS'])];//名车积分
+        $wallet[] = ['walletType' => 'garage_points', 'walletName' => 'Car points', 'amount' => Tool::formatPrice($data['GARAGE_POINTS'])];//车奖积分
+        $wallet[] = ['walletType' => 'villa_points', 'walletName' => 'Villa points', 'amount' => Tool::formatPrice($data['VILLA_POINTS'])];//房奖积分
 //        if ($showCFLX) {
 //            $wallet[] = ['walletType' => 'cf', 'walletName' => '福利积分一', 'amount' => Tool::formatPrice($data['CF'])];
 //            $wallet[] = ['walletType' => 'lx', 'walletName' => '福利积分二', 'amount' => Tool::formatPrice($data['LX'])];
@@ -107,7 +110,7 @@ class BonusController extends BaseController {
      */
     public function actionWalletFlow(){
         $walletType = \Yii::$app->request->get('walletType');
-        if(!in_array($walletType,['bonus', 'cash', 'exchange', 'tourism_points', 'garage_points'])) return static::notice('错误的账户类型',400);
+        if(!in_array($walletType,['bonus', 'cash', 'exchange', 'tourism_points', 'garage_points', 'villa_points'])) return static::notice('walletType error',400);
         $dealType = \Yii::$app->request->get('dealType');
         $createAt = \Yii::$app->request->get('createAt');
         $remark = \Yii::$app->request->get('remark');
@@ -179,13 +182,22 @@ class BonusController extends BaseController {
                 'select' => 'AMOUNT,TOTAL,IS_INCR,REMARK,REMARK_IS_SHOW,PERIOD_NUM,CALC_MONTH,CREATED_AT,DEAL_TYPE_ID,DEAL_TYPE_IS_PRESET',
                 'orderBy' => 'CREATED_AT DESC',
             ]);
+        } else if ($walletType == 'villa_points') {
+            $dealLists = FlowVillaPoints::find()->groupBy('DEAL_TYPE_ID')->select('DEAL_TYPE_ID')->where('USER_ID=:USER_ID',[':USER_ID'=>\Yii::$app->user->id])->asArray()->all();
+            $data = FlowVillaPoints::lists($condition, $params, [
+                'useSlaves' => true,
+                'select' => 'AMOUNT,TOTAL,IS_INCR,REMARK,REMARK_IS_SHOW,PERIOD_NUM,CALC_MONTH,CREATED_AT,DEAL_TYPE_ID,DEAL_TYPE_IS_PRESET',
+                'orderBy' => 'CREATED_AT DESC',
+            ]);
+        } else {
+            return static::notice('walletType error',400);
         }
 
         if($data) {
             if($walletType != 'cash') {
                 foreach ($data['list'] as $key => $value) {
                     if ($value['DEAL_TYPE_IS_PRESET'] == 0) {
-                        $data['list'][$key]['DEAL_TYPE_NAME'] = $value['AMOUNT'] > 0 ? '增加' : '减少';
+                        $data['list'][$key]['DEAL_TYPE_NAME'] = $value['AMOUNT'] > 0 ? 'increase' : 'reduce'; // 增加 减少
                     } else {
                         $data['list'][$key]['DEAL_TYPE_NAME'] = DealType::getAllTypesForShow()[$value['DEAL_TYPE_ID']]['TYPE_NAME'] ?? '';
                     }
@@ -202,8 +214,8 @@ class BonusController extends BaseController {
                 if(!$value['DEAL_TYPE_ID']) continue;
                 $dealType = DealType::getAllTypesForShow()[$value['DEAL_TYPE_ID']];
                 if($dealType['IS_PRESET']==0){
-                    $dealTypes['1'] = '增加';
-                    $dealTypes['2'] = '扣除';
+                    $dealTypes['1'] = 'increase';// 增加
+                    $dealTypes['2'] = 'reduce';// 扣除
                 }else{
                     $dealLists[$key]['DEAL_TYPE_NAME'] = $dealType['TYPE_NAME']??'';
                     $dealTypes[$value['DEAL_TYPE_ID']] = $dealLists[$key]['DEAL_TYPE_NAME'];

+ 11 - 7
frontendApi/modules/v1/controllers/ShopController.php

@@ -477,7 +477,11 @@ class ShopController extends BaseController {
 //            ],
             [
                 'name' => '5',
-                'label' => 'Car/Villa Fund Products',//车房积分商品
+                'label' => 'Car Fund Products',//车奖积分商品
+            ],
+            [
+                'name' => '6',
+                'label' => 'Villa Fund Products',//房奖积分商品
             ],
         ];
         return static::notice($data);
@@ -701,7 +705,7 @@ ORDER;
         // 设置行高
         $pdf->setCellHeightRatio(1);
         // 设置左、上、右的间距
-        $pdf->SetMargins('10', '10', '10');
+        $pdf->SetMargins('10', '0', '10');
         // 设置是否自动分页  距离底部多少距离时分页
         $pdf->SetAutoPageBreak(TRUE, '15');
         // 设置图像比例因子
@@ -714,8 +718,8 @@ ORDER;
         $pdf->AddPage();
         // 设置字体
         $pdf->SetFont('stsongstdlight', '', 10, '', true);
-//        $image = file_get_contents(\Yii::$app->basePath . '/../frontendEle/src/static/img/ngds-logo.jpg');
-//        $pdf->Image('@' . $image, 165, 5, 20, 10, 'JPG');
+        $image = file_get_contents(\Yii::$app->basePath . '/../frontendEle/src/static/img/ngds-logo.jpg');
+        $pdf->Image('@' . $image, 15, 12, 20, 7, 'JPG');
         $pdf->writeHTML($context);
 
         ob_clean();
@@ -947,7 +951,7 @@ ORDER;
         // 设置行高
         $pdf->setCellHeightRatio(1);
         // 设置左、上、右的间距
-        $pdf->SetMargins('10', '10', '10');
+        $pdf->SetMargins('10', '0', '10');
         // 设置是否自动分页  距离底部多少距离时分页
         $pdf->SetAutoPageBreak(TRUE, '15');
         // 设置图像比例因子
@@ -960,8 +964,8 @@ ORDER;
         $pdf->AddPage();
         // 设置字体
         $pdf->SetFont('stsongstdlight', '', 10, '', true);
-//        $image = file_get_contents(\Yii::$app->basePath . '/../frontendEle/src/static/img/ngds-logo.jpg');
-//        $pdf->Image('@' . $image, 165, 5, 20, 10, 'JPG');
+        $image = file_get_contents(\Yii::$app->basePath . '/../frontendEle/src/static/img/ngds-logo.jpg');
+        $pdf->Image('@' . $image, 15, 12, 20, 7, 'JPG');
         $pdf->writeHTML($context);
 
         ob_clean();

+ 2 - 2
frontendEle/src/utils/tool.js

@@ -82,7 +82,7 @@ let tool = {
       userInfo.logout()
     }
     if (todo || status === 402) {
-      message = todo ? '长时间未进行操作,请重新登录':(message === 'Connection not operated for too long' ? '长时间未进行操作,请重新登录' : message)
+      message = todo ? 'No operation has been performed for a long time,please log in again.':(message === 'Connection not operated for too long' ? 'No operation has been performed for a long time,please log in again.' : message) // 长时间未进行操作,请重新登录
       userInfo.logout()
     }
     return {message, todo, status}
@@ -208,7 +208,7 @@ let tool = {
      */
     getTableHeight(hasStatusBar = false) {
         if (hasStatusBar) return window.innerHeight - 320
-        return window.innerHeight - 260
+        return window.innerHeight - 300
     },
   // 计算商品税额
   calculateTax(amount, taxRate, count = 1) {

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

@@ -1,7 +1,7 @@
 <template>
     <div v-loading="loading">
         <div class="white-box">
-            <el-table class="withdraw-table" :data="tableData" style="width: 100%;" :span-method="objectSpanMethod">
+            <el-table class="withdraw-table" :data="tableData" :max-height="maxHeight" style="width: 100%;" :span-method="objectSpanMethod">
 				        <el-table-column width="120" label="Product code" prop="SKU_CODE"></el-table-column><!--商品编号-->
                 <el-table-column width="120" label="Product Name" prop="GOODS_TITLE"></el-table-column><!--商品名称-->
                 <el-table-column width="120" label="Qty" prop="BUY_NUMS"></el-table-column><!--数量-->
@@ -62,7 +62,7 @@
                 //订单号判断
                 spanArr: [], // 用于存放需要合并的行的个数
                 pos: 0, // 记录spanArr数组的下标
-
+                maxHeight: tool.getTableHeight(),
             }
         },
         methods: {

+ 3 - 2
frontendEle/src/views/shop/index.vue

@@ -3,7 +3,7 @@
         <div class="white-box">
             <el-tabs v-model="goodsCategory" @tab-click="handleClick">
                 <el-tab-pane v-for="(item, key) in goodsActive" :key="key" :label="item.label" :name="item.name">
-                    <el-table v-if="numList.length > 0" class="withdraw-table" :data="tableData" stripe style="width: 100%;" ref="multipleTable" @selection-change="handleSelectionChange">
+                    <el-table v-if="numList.length > 0" :max-height="maxHeight" class="withdraw-table" :data="tableData" stripe style="width: 100%;" ref="multipleTable" @selection-change="handleSelectionChange">
                       <el-table-column
                           type="selection"
                           width="55">
@@ -49,7 +49,7 @@
                       <el-table-column label="Inventory" prop="STORE_NUMS"><!--库存-->
                       </el-table-column>
 
-                      <el-table-column label="Quantity"  width="155"><!--数量-->
+                      <el-table-column label="Qty"  width="155"><!--数量-->
                         <template slot-scope="scope">
                           <el-input-number size="mini" v-model="numList[scope.$index]"  :min="0" :max="Number(scope.row.STORE_NUMS)" @change="(val)=>{handleInputNumber(val, scope.row)}"></el-input-number>
                         </template>
@@ -101,6 +101,7 @@
                 selectLock:false,
                 goodsCategory: '1',
                 goodsActive: [],
+                maxHeight: tool.getTableHeight(),
             }
         },
         watch: {

+ 2 - 3
frontendEle/src/views/shop/order-list.vue

@@ -1,7 +1,7 @@
 <template>
     <div v-loading="loading">
         <div class="white-box">
-            <el-table class="withdraw-table" :data="tableData" style="width: 100%;" :span-method="objectSpanMethod">
+            <el-table class="withdraw-table" :data="tableData" :max-height="maxHeight" style="width: 100%;" :span-method="objectSpanMethod">
               <el-table-column width="120" label="Product code" prop="SKU_CODE"></el-table-column><!--商品编号-->
               <el-table-column width="120" label="Product Name" prop="GOODS_TITLE"></el-table-column><!--商品名称-->
                 <el-table-column width="120" label="Quantity" prop="BUY_NUMS"></el-table-column><!--数量-->
@@ -70,8 +70,7 @@
                 //订单号判断
                 spanArr: [], // 用于存放需要合并的行的个数
                 pos: 0, // 记录spanArr数组的下标
-
-
+                maxHeight: tool.getTableHeight(),
             }
         },
 

+ 10 - 4
frontendEle/src/views/shop/order.vue

@@ -130,10 +130,17 @@
 
             <div v-if="category_type === 5">
               <div class="sum_box">
-                <div>Car House bonus</div><!-- 名车积分 -->
+                <div>Car bonus</div><!-- 名车积分 -->
                 <div>{{ balance.garage_points }}</div>
               </div>
             </div>
+
+            <div v-if="category_type === 6">
+              <div class="sum_box">
+                <div>Villa bonus</div><!-- 豪宅积分 -->
+                <div>{{ balance.villa_points }}</div>
+              </div>
+            </div>
           </div>
         </div>
 
@@ -170,9 +177,9 @@
           :currency="form.currency"
           :paystackkey="form.publicKey"
           :reference="reference"
+          :channels="channels"
           :callback="processPayment"
           :close="processClose"
-          :channels="channels"
       >
         <el-button type="primary" size="small">Pay</el-button>
       </paystack>
@@ -225,8 +232,7 @@ export default{
       countdown: 5,
       visible: false,
       payStackLoading: false,
-      // channels: ['card', 'bank', 'USSD', 'QR'],
-      channels: ['card', 'bank'],
+      channels: ["card", "bank", "ussd", "qr"], // eft(南非)  mobile_money(加纳)
       form: {
         publicKey: PAY_STACK_PUBLIC_KEY,
         currency: PAY_STACK_CURRENCY,

+ 3 - 1
frontendEle/src/views/user/dec.vue

@@ -17,7 +17,7 @@
                     </el-select><!--请选择报单级别-->
                 </el-form-item>
                 <el-form-item label="Stockist Code"><!--报单中心编号-->
-                    <el-input v-model="form.decUserName"></el-input>
+                    <el-input v-model="form.decUserName" readonly></el-input>
                 </el-form-item>
 
 
@@ -293,6 +293,7 @@
             :currency="PayStackForm.currency"
             :paystackkey="PayStackForm.publicKey"
             :reference="reference"
+            :channels="channels"
             :callback="processPayment"
             :close="processClose"
           >
@@ -414,6 +415,7 @@
                 countdown: 5,
                 visible: false,
                 payStackLoading: false,
+                channels: ["card", "bank", "ussd", "qr"], // eft(南非)  mobile_money(加纳)
                 PayStackForm: {
                   publicKey: PAY_STACK_PUBLIC_KEY,
                   currency: PAY_STACK_CURRENCY,

+ 2 - 0
frontendEle/src/views/user/upgrade.vue

@@ -216,6 +216,7 @@
             :currency="PayStackForm.currency"
             :paystackkey="PayStackForm.publicKey"
             :reference="reference"
+            :channels="channels"
             :callback="processPayment"
             :close="processClose"
           >
@@ -330,6 +331,7 @@
                 countdown: 5,
                 visible: false,
                 payStackLoading: false,
+                channels: ["card", "bank", "ussd", "qr"], // eft(南非)  mobile_money(加纳)
                 PayStackForm: {
                     publicKey: PAY_STACK_PUBLIC_KEY,
                     currency: PAY_STACK_CURRENCY,

Деякі файли не було показано, через те що забагато файлів було змінено