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

This commit is contained in:
liaofei 2023-02-27 17:25:48 +08:00
commit 2cc5010bfb
39 changed files with 934 additions and 758 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

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