mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-01-24 11:48:13 +00:00
update
This commit is contained in:
parent
a01bf0807a
commit
a24a96ab34
54
README.md
54
README.md
@ -5,10 +5,26 @@
|
|||||||
|
|
||||||
<div align="center" style="font-size: 15px;">
|
<div align="center" style="font-size: 15px;">
|
||||||
|
|
||||||
CRMEB开源商城系统(PHP版)
|
CRMEB高品质开源商城系统(PHP版)
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div align="center" >
|
||||||
|
<a href='https://gitee.com/ZhongBangKeJi/CRMEB/stargazers'>
|
||||||
|
<img src='https://gitee.com/ZhongBangKeJi/CRMEB/badge/star.svg?theme=gvp' alt='star'></img>
|
||||||
|
</a>
|
||||||
|
<a href="http://www.crmeb.com/?from=giteephp">
|
||||||
|
<img src="https://img.shields.io/badge/Licence-apache2.0-green.svg?style=flat" />
|
||||||
|
</a>
|
||||||
|
<a href="http://www.crmeb.com">
|
||||||
|
<img src="https://img.shields.io/badge/Edition-5.6.4-blue.svg" />
|
||||||
|
</a>
|
||||||
|
<a href="https://gitee.com/ZhongBangKeJi/CRMEB/repository/archive/master.zip">
|
||||||
|
<img src="https://img.shields.io/badge/Download-240m-red.svg" />
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
<div align="center" style="font-size: 15px;">
|
<div align="center" style="font-size: 15px;">
|
||||||
用心做开源,我们也很需要你的鼓励!右上角Star🌟,等你点亮
|
用心做开源,我们也很需要你的鼓励!右上角Star🌟,等你点亮
|
||||||
</div>
|
</div>
|
||||||
@ -16,17 +32,20 @@ CRMEB开源商城系统(PHP版)
|
|||||||
|
|
||||||
####
|
####
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
[](https://zread.ai/crmeb/CRMEB)
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||
|
[官网](https://www.crmeb.com/?from=giteephp) |
|
||||||
[官网](https://www.crmeb.com/) |
|
[在线体验](http://v5.crmeb.net/admin/) |
|
||||||
[在线体验](http://v4.crmeb.net/admin/) |
|
|
||||||
[帮助文档](https://doc.crmeb.com/single_open) |
|
[帮助文档](https://doc.crmeb.com/single_open) |
|
||||||
[应用市场](https://www.crmeb.com/market/) |
|
[应用市场](https://www.crmeb.com/market?from=giteephp) |
|
||||||
[技术社区](https://www.crmeb.com/ask/thread/list/147)
|
[技术社区](https://www.crmeb.com/ask/thread/list/147) |
|
||||||
|
[宽屏预览](https://gitee.com/ZhongBangKeJi/CRMEB/blob/master/README.md)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -60,7 +79,7 @@ CRMEB开源商城系统代码100%开源,基于 **Apache-2.0协议** 免费商
|
|||||||
我们致力于打造开发者友好生态,开放源码、持续更新功能模块,并欢迎开发者提交优化建议或贡献代码。通过共享技术成果,降低行业重复造轮子成本,推动开源电商系统的可持续发展。
|
我们致力于打造开发者友好生态,开放源码、持续更新功能模块,并欢迎开发者提交优化建议或贡献代码。通过共享技术成果,降低行业重复造轮子成本,推动开源电商系统的可持续发展。
|
||||||
|
|
||||||
|
|
||||||
🔗 <a href="https://doc.crmeb.com/single_open/open_v54/19855" target="_blank">功能列表</a> | 📩 <a href="https://github.com/crmeb/CRMEB/issues" target="_blank">提交反馈</a> | 📩 <a href="https://github.com/crmeb/CRMEB/pulls" target="_blank">提交代码</a>
|
🔗 <a href="https://doc.crmeb.com/single_open/open_v54/19855" target="_blank">功能列表</a> | 📩 <a href="https://gitee.com/ZhongBangKeJi/CRMEB/issues" target="_blank">提交反馈</a> | 📩 <a href="https://gitee.com/ZhongBangKeJi/CRMEB/pulls" target="_blank">提交代码</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -117,7 +136,7 @@ CRMEB开源商城系统代码100%开源,基于 **Apache-2.0协议** 免费商
|
|||||||
|
|
||||||
### 📱 系统演示
|
### 📱 系统演示
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
管理后台: http://v5.crmeb.net/admin
|
管理后台: http://v5.crmeb.net/admin
|
||||||
|
|
||||||
@ -254,9 +273,9 @@ docker-compose一键部署:https://doc.crmeb.com/single_open/open_v54/20145
|
|||||||
---
|
---
|
||||||
|
|
||||||
### 📞 CRMEB互动
|
### 📞 CRMEB互动
|
||||||
#### CRMEB开源技术交流群(扫码进群可领取开源版接口文档、产品功能清单、高清UI设计图、思维脑图!)
|
#### CRMEB开源技术交流群(扫码进群可领取开源版接口文档、产品功能清单、思维脑图!)
|
||||||

|

|
||||||
#### 技术社区!找方法、提bug、看官方消息、拿活跃大奖!都在 <a href="https://www.crmeb.com/ask" target="_blank">CRMEB 技术社区</a> 应有尽有
|
#### 技术社区!找方法、提bug、看官方消息、拿活跃大奖!都在 <a href="https://www.crmeb.com/ask/?from=giteephp" target="_blank">CRMEB 技术社区</a> 应有尽有
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -265,12 +284,15 @@ docker-compose一键部署:https://doc.crmeb.com/single_open/open_v54/20145
|
|||||||
|
|
||||||
### 📕 CRMEB PRO版
|
### 📕 CRMEB PRO版
|
||||||
|
|
||||||
[](https://www.crmeb.com/index/pro)
|
[](https://www.crmeb.com/index/pro?from=giteephp)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 📕 CRMEB 多商户版
|
### 📕 CRMEB 多商户版
|
||||||
|
|
||||||
[](https://www.crmeb.com/index/merchant)
|
[](https://www.crmeb.com/index/merchant?from=giteephp)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[返回顶部 :fa-arrow-circle-up: ](https://gitee.com/ZhongBangKeJi/CRMEB#%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D)
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
version=CRMEB-KY v5.6.3
|
version=CRMEB-KY v5.6.3.1
|
||||||
version_code=563
|
version_code=563
|
||||||
platform=github
|
platform=github
|
||||||
app_id=ze7x9rxsv09l6pvsyo
|
app_id=ze7x9rxsv09l6pvsyo
|
||||||
|
|||||||
@ -127,18 +127,51 @@ class PublicController
|
|||||||
];
|
];
|
||||||
if (function_exists('exec')) {
|
if (function_exists('exec')) {
|
||||||
$workermanOutput = $timerOutput = $queueOutput = [];
|
$workermanOutput = $timerOutput = $queueOutput = [];
|
||||||
exec("ps aux | grep 'php think workerman' | grep -v grep", $workermanOutput);
|
// exec("ps aux | grep 'php think workerman' | grep -v grep", $workermanOutput);
|
||||||
exec("ps aux | grep 'php think timer' | grep -v grep", $timerOutput);
|
$targetPort = config('workerman.chat.port');
|
||||||
exec("ps aux | grep 'php think queue' | grep -v grep", $queueOutput);
|
$thinkPath = root_path(); // think 文件的绝对路径
|
||||||
|
$checkService = function($service) {
|
||||||
|
if($service === 'queue'){
|
||||||
|
$command = 'queue:listen';
|
||||||
|
// 执行 ps 命令查找队列进程
|
||||||
|
exec("ps aux | grep '{$command}' | grep -v grep", $output);
|
||||||
|
|
||||||
|
// 若输出不为空,说明进程存在
|
||||||
|
return !empty($output);
|
||||||
|
} else {
|
||||||
|
$pidFile = root_path('runtime') . $service . '.pid';
|
||||||
|
// 优先检查PID文件
|
||||||
|
if (!file_exists($pidFile)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果PID文件存在,尝试获取进程状态
|
||||||
|
$pid = trim(file_get_contents($pidFile));
|
||||||
|
if ($pid && is_numeric($pid)) {
|
||||||
|
if (function_exists('posix_kill') && posix_kill($pid, 0)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// 备用检查方法
|
||||||
|
if (function_exists('exec')) {
|
||||||
|
$output = [];
|
||||||
|
exec("ps -ef | grep " . escapeshellarg($pid) . " | grep -v grep", $output);
|
||||||
|
// 判断是否有非 grep 进程的输出
|
||||||
|
return !empty($output);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
$info['process'] = [
|
$info['process'] = [
|
||||||
['name' => '长链接', 'require' => '开启', 'value' => count($workermanOutput) > 0],
|
['name' => '长链接', 'require' => '开启', 'value' => $checkService('workerman')],
|
||||||
['name' => '定时任务', 'require' => '开启', 'value' => count($timerOutput) > 0],
|
['name' => '定时任务', 'require' => '开启', 'value' => $checkService('timer')],
|
||||||
['name' => '消息队列', 'require' => '开启', 'value' => count($queueOutput) > 0],
|
['name' => '消息队列', 'require' => '开启', 'value' => $checkService('queue')],
|
||||||
];
|
];
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$info['process'] = [
|
$info['process'] = [
|
||||||
['name' => '长链接', 'require' => '开启', 'value' => file_exists(root_path('runtime') . 'workerman.pid')],
|
['name' => '长链接', 'require' => '开启', 'value' => file_exists(root_path('runtime') . 'workerman.pid')],
|
||||||
['name' => '定时任务', 'require' => '开启', 'value' => file_exists(root_path('runtime') . '.timer')],
|
['name' => '定时任务', 'require' => '开启', 'value' => file_exists(root_path('runtime') . 'timer.pid')],
|
||||||
['name' => '消息队列', 'require' => '开启', 'value' => file_exists(root_path('runtime') . '.queue')],
|
['name' => '消息队列', 'require' => '开启', 'value' => file_exists(root_path('runtime') . '.queue')],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -538,9 +538,9 @@ class SystemCrud extends AuthController
|
|||||||
if (!$tableName) {
|
if (!$tableName) {
|
||||||
return app('json')->fail('缺少表名');
|
return app('json')->fail('缺少表名');
|
||||||
}
|
}
|
||||||
// if (in_array($tableName, SystemCrudServices::NOT_CRUD_TABANAME)) {
|
if (in_array($tableName, SystemCrudServices::NOT_CRUD_TABANAME)) {
|
||||||
// return app('json')->fail('不允许查看当前表明细');
|
return app('json')->fail('不允许查看当前表明细');
|
||||||
// }
|
}
|
||||||
$tableInfo = $this->services->getColumnNamesList($tableName);
|
$tableInfo = $this->services->getColumnNamesList($tableName);
|
||||||
|
|
||||||
$data = [];
|
$data = [];
|
||||||
|
|||||||
@ -68,6 +68,12 @@ class FlowStatistic extends AuthController
|
|||||||
['type', 'day'],
|
['type', 'day'],
|
||||||
['time', '']
|
['time', '']
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
// 当$where['time']不为空,且格式不是2025/12/01-2025/12/15时,重置$where['time']为空
|
||||||
|
if ($where['time'] != '' && !preg_match('/^\d{4}\/\d{2}\/\d{2}-\d{4}\/\d{2}\/\d{2}$/', $where['time'])) {
|
||||||
|
$where['time'] = '';
|
||||||
|
}
|
||||||
|
|
||||||
$data = $this->services->getFlowRecord($where);
|
$data = $this->services->getFlowRecord($where);
|
||||||
return app('json')->success($data);
|
return app('json')->success($data);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -75,7 +75,19 @@ class SystemDatabackup extends AuthController
|
|||||||
if ($is_field == 0) {
|
if ($is_field == 0) {
|
||||||
$sql = "ALTER TABLE $table COMMENT '$mark'";
|
$sql = "ALTER TABLE $table COMMENT '$mark'";
|
||||||
} else {
|
} else {
|
||||||
$sql = "ALTER TABLE $table MODIFY COLUMN $field $type COMMENT '$mark'";
|
$fieldInfo = Db::query("SHOW FULL COLUMNS FROM `{$table}` WHERE Field = '{$field}'");
|
||||||
|
$sql = "ALTER TABLE $table MODIFY COLUMN ";
|
||||||
|
$sql .= $field . ' ' . $type . ' ';
|
||||||
|
if ($fieldInfo[0]['Null'] == 'NO') {
|
||||||
|
$sql .= 'NOT NULL ';
|
||||||
|
if (!is_null($fieldInfo[0]['Default'])) {
|
||||||
|
$sql .= "DEFAULT '" . $fieldInfo[0]['Default'] . "' ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($fieldInfo[0]['Extra']) {
|
||||||
|
$sql .= $fieldInfo[0]['Extra'] . ' ';
|
||||||
|
}
|
||||||
|
$sql .= "COMMENT '$mark'";
|
||||||
}
|
}
|
||||||
Db::execute($sql);
|
Db::execute($sql);
|
||||||
return app('json')->success(100024);
|
return app('json')->success(100024);
|
||||||
|
|||||||
@ -53,7 +53,7 @@ Route::group(function () {
|
|||||||
Route::get('download/[:key]', 'PublicController/download')->option(['real_name' => '下载文件']);
|
Route::get('download/[:key]', 'PublicController/download')->option(['real_name' => '下载文件']);
|
||||||
})->middleware([
|
})->middleware([
|
||||||
AllowOriginMiddleware::class,
|
AllowOriginMiddleware::class,
|
||||||
// \app\adminapi\middleware\AdminAuthTokenMiddleware::class
|
\app\adminapi\middleware\AdminAuthTokenMiddleware::class
|
||||||
])->option(['mark' => 'system', 'mark_name' => '系统相关']);
|
])->option(['mark' => 'system', 'mark_name' => '系统相关']);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -258,7 +258,7 @@ class StoreOrderController
|
|||||||
CacheService::set('PAY_LOCK_' . $uni, 'PAY_LOCK', 2);
|
CacheService::set('PAY_LOCK_' . $uni, 'PAY_LOCK', 2);
|
||||||
if (!$uni) return app('json')->fail(100100);
|
if (!$uni) return app('json')->fail(100100);
|
||||||
$orderInfo = $this->services->get(['order_id' => $uni]);
|
$orderInfo = $this->services->get(['order_id' => $uni]);
|
||||||
if ($orderInfo->is_del == 1 || $orderInfo->is_system_del == 1) return app('json')->fail('订单已经超过系统支付时间,无法支付,请重新下单');
|
if ($orderInfo->is_cancel == 1 || $orderInfo->is_del == 1 || $orderInfo->is_system_del == 1) return app('json')->fail('订单已经超过系统支付时间,无法支付,请重新下单');
|
||||||
$uid = $type == 1 ? (int)$request->uid() : $orderInfo->uid;
|
$uid = $type == 1 ? (int)$request->uid() : $orderInfo->uid;
|
||||||
$orderInfo->is_channel = $this->getChennel[$request->getFromType()] ?? ($request->isApp() ? 0 : 1);
|
$orderInfo->is_channel = $this->getChennel[$request->getFromType()] ?? ($request->isApp() ? 0 : 1);
|
||||||
$orderInfo->order_id = $uid != $orderInfo->pay_uid ? app()->make(StoreOrderCreateServices::class)->getNewOrderId('cp') : $uni;
|
$orderInfo->order_id = $uid != $orderInfo->pay_uid ? app()->make(StoreOrderCreateServices::class)->getNewOrderId('cp') : $uni;
|
||||||
|
|||||||
@ -204,10 +204,12 @@ class UserWechatUserDao extends BaseDao
|
|||||||
if (isset($where['label_id']) && $where['label_id']) {
|
if (isset($where['label_id']) && $where['label_id']) {
|
||||||
$model = $model->whereIn($userAlias . 'uid', function ($query) use ($where) {
|
$model = $model->whereIn($userAlias . 'uid', function ($query) use ($where) {
|
||||||
if (is_array($where['label_id'])) {
|
if (is_array($where['label_id'])) {
|
||||||
$query->name('user_label_relation')->whereIn('label_id', $where['label_id'])->field('uid')->select();
|
$label_ids = array_map('intval', $where['label_id']);
|
||||||
|
$query->name('user_label_relation')->whereIn('label_id', $label_ids)->field('uid')->select();
|
||||||
} else {
|
} else {
|
||||||
if (strpos($where['label_id'], ',') !== false) {
|
if (strpos($where['label_id'], ',') !== false) {
|
||||||
$query->name('user_label_relation')->whereIn('label_id', explode(',', $where['label_id']))->field('uid')->select();
|
$label_ids = array_map('intval', explode(',', $where['label_id']));
|
||||||
|
$query->name('user_label_relation')->whereIn('label_id', $label_ids)->field('uid')->select();
|
||||||
} else {
|
} else {
|
||||||
$query->name('user_label_relation')->where('label_id', (int)$where['label_id'])->field('uid')->select();
|
$query->name('user_label_relation')->where('label_id', (int)$where['label_id'])->field('uid')->select();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,7 +16,7 @@ class OrderShippingListener implements ListenerInterface
|
|||||||
public function handle($event): void
|
public function handle($event): void
|
||||||
{
|
{
|
||||||
/** @var StoreOrder $order */
|
/** @var StoreOrder $order */
|
||||||
[$order_type, $order, $delivery_type, $delivery_id, $delivery_code] = $event;
|
[$order_type, $order, $delivery_type, $delivery_id, $delivery_name] = $event;
|
||||||
$order_shipping_open = sys_config('order_shipping_open', 0); // 小程序发货信息管理服务开关
|
$order_shipping_open = sys_config('order_shipping_open', 0); // 小程序发货信息管理服务开关
|
||||||
$secs = 0;
|
$secs = 0;
|
||||||
if ($order && $order_shipping_open) {
|
if ($order && $order_shipping_open) {
|
||||||
@ -80,14 +80,27 @@ class OrderShippingListener implements ListenerInterface
|
|||||||
if (!isset($order['shipping_type']) || $order['shipping_type'] == 1) {
|
if (!isset($order['shipping_type']) || $order['shipping_type'] == 1) {
|
||||||
if ($delivery_type == 1) {
|
if ($delivery_type == 1) {
|
||||||
//仅实现默认的快递公司
|
//仅实现默认的快递公司
|
||||||
$expressData = ['韵达快递' => 'YD','顺丰速运' => 'SF','圆通速递' => 'YTO','中通快递' => 'ZTO',
|
$expressData = [
|
||||||
'申通快递' => 'STO','百世快递' => 'HTKY','京东物流' => 'JD','极兔速递' => 'JTSD',
|
'韵达快递' => 'YD',
|
||||||
'邮政快递包裹' => 'YZPY','EMS' => 'EMS','德邦快递' => 'DBL','宅急送' => 'ZJS',
|
'顺丰速运' => 'SF',
|
||||||
|
'圆通速递' => 'YTO',
|
||||||
|
'中通快递' => 'ZTO',
|
||||||
|
'申通快递' => 'STO',
|
||||||
|
'百世快递' => 'HTKY',
|
||||||
|
'京东物流' => 'JD',
|
||||||
|
'极兔速递' => 'JTSD',
|
||||||
|
'邮政快递包裹' => 'YZPY',
|
||||||
|
'EMS' => 'EMS',
|
||||||
|
'德邦快递' => 'DBL',
|
||||||
|
'德邦物流' => 'DBLKY',
|
||||||
|
'宅急送' => 'ZJS',
|
||||||
|
'优速快递' => 'UC',
|
||||||
|
'苏宁物流' => 'SNWL',
|
||||||
];
|
];
|
||||||
$shipping_list = [
|
$shipping_list = [
|
||||||
[
|
[
|
||||||
'tracking_no' => $delivery_id ?? '',
|
'tracking_no' => $delivery_id ?? '',
|
||||||
'express_company' => $delivery_code,
|
'express_company' => $expressData[$delivery_name] ?? '',
|
||||||
'item_desc' => $item_desc,
|
'item_desc' => $item_desc,
|
||||||
'contact' => [
|
'contact' => [
|
||||||
'receiver_contact' => $order['user_phone']
|
'receiver_contact' => $order['user_phone']
|
||||||
|
|||||||
@ -68,7 +68,7 @@ class ArticleServices extends BaseServices
|
|||||||
{
|
{
|
||||||
/** @var ArticleContentServices $articleContentService */
|
/** @var ArticleContentServices $articleContentService */
|
||||||
$articleContentService = app()->make(ArticleContentServices::class);
|
$articleContentService = app()->make(ArticleContentServices::class);
|
||||||
$content['content'] = $data['content'];
|
$content['content'] = htmlspecialchars($data['content']);
|
||||||
$id = $data['id'];
|
$id = $data['id'];
|
||||||
unset($data['content'], $data['id']);
|
unset($data['content'], $data['id']);
|
||||||
$info = $this->transaction(function () use ($id, $data, $articleContentService, $content) {
|
$info = $this->transaction(function () use ($id, $data, $articleContentService, $content) {
|
||||||
@ -105,6 +105,7 @@ class ArticleServices extends BaseServices
|
|||||||
{
|
{
|
||||||
$info = $this->dao->read($id);
|
$info = $this->dao->read($id);
|
||||||
$info['cid'] = (int)$info['cid'];
|
$info['cid'] = (int)$info['cid'];
|
||||||
|
$info['content'] = htmlspecialchars_decode($info['content']);
|
||||||
return compact('info');
|
return compact('info');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,6 +167,7 @@ class ArticleServices extends BaseServices
|
|||||||
$info = $info->toArray();
|
$info = $info->toArray();
|
||||||
$info['visit'] = (int)$info['visit'];
|
$info['visit'] = (int)$info['visit'];
|
||||||
$info['add_time'] = date('Y-m-d', $info['add_time']);
|
$info['add_time'] = date('Y-m-d', $info['add_time']);
|
||||||
|
$info['content'] = htmlspecialchars_decode($info['content']);
|
||||||
}
|
}
|
||||||
return $info;
|
return $info;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -138,7 +138,7 @@ class RoutineTemplateListService extends NoticeService
|
|||||||
'thing2' => $storeTitle,
|
'thing2' => $storeTitle,
|
||||||
'amount3' => $order['pay_price'],
|
'amount3' => $order['pay_price'],
|
||||||
'character_string6' => $data['order_id']
|
'character_string6' => $data['order_id']
|
||||||
], '/pages/goods/order_details/index?order_id=' . $data['order_id'] . '&isReturen=1');
|
], '/pages/goods/order_details/index?order_id=' . $data['order_id'] . '&isReturn=1');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -155,7 +155,7 @@ class RoutineTemplateListService extends NoticeService
|
|||||||
'thing2' => $storeTitle,
|
'thing2' => $storeTitle,
|
||||||
'amount3' => $order['pay_price'],
|
'amount3' => $order['pay_price'],
|
||||||
'character_string6' => $order['order_id']
|
'character_string6' => $order['order_id']
|
||||||
], '/pages/goods/order_details/index?order_id=' . $order['order_id'] . '&isReturen=1');
|
], '/pages/goods/order_details/index?order_id=' . $order['order_id'] . '&isReturn=1');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -151,7 +151,7 @@ class WechatTemplateListService extends NoticeService
|
|||||||
'time5' => date('Y-m-d H:i:s', time()),
|
'time5' => date('Y-m-d H:i:s', time()),
|
||||||
'thing2' => $title,
|
'thing2' => $title,
|
||||||
'amount3' => $order['refund_price'],
|
'amount3' => $order['refund_price'],
|
||||||
], '/pages/goods/order_details/index?order_id=' . $order['refund_no'] . '&isReturen=1');
|
], '/pages/goods/order_details/index?order_id=' . $order['refund_no'] . '&isReturn=1');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -168,7 +168,7 @@ class WechatTemplateListService extends NoticeService
|
|||||||
'thing2' => $title,
|
'thing2' => $title,
|
||||||
'amount3' => $order['refund_price'],
|
'amount3' => $order['refund_price'],
|
||||||
'thing4' => $order['refuse_reason'],
|
'thing4' => $order['refuse_reason'],
|
||||||
], '/pages/goods/order_details/index?order_id=' . $order['refund_no'] . '&isReturen=1');
|
], '/pages/goods/order_details/index?order_id=' . $order['refund_no'] . '&isReturn=1');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -502,7 +502,7 @@ if ($type == 'order') {
|
|||||||
$data['delivery_id'] = uniqid();
|
$data['delivery_id'] = uniqid();
|
||||||
}
|
}
|
||||||
// 小程序订单管理
|
// 小程序订单管理
|
||||||
event('OrderShippingListener', ['product', $orderInfo, $type, $data['delivery_id'], $data['delivery_code']]);
|
event('OrderShippingListener', ['product', $orderInfo, $type, $data['delivery_id'], $data['delivery_name']]);
|
||||||
//到期自动收货
|
//到期自动收货
|
||||||
event('OrderDeliveryListener', [$orderInfo, $storeName, $data, $type]);
|
event('OrderDeliveryListener', [$orderInfo, $storeName, $data, $type]);
|
||||||
|
|
||||||
|
|||||||
@ -1435,4 +1435,4 @@ class StoreOrderRefundServices extends BaseServices
|
|||||||
//拒绝退款处理
|
//拒绝退款处理
|
||||||
$this->refuseRefund($id, $refundData, $orderRefundInfo);
|
$this->refuseRefund($id, $refundData, $orderRefundInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -431,9 +431,10 @@ class StoreOrderTakeServices extends BaseServices
|
|||||||
return $this->backOrderBrokerageTwo($orderInfo, $userInfo, $isSelfBrokerage);
|
return $this->backOrderBrokerageTwo($orderInfo, $userInfo, $isSelfBrokerage);
|
||||||
}
|
}
|
||||||
$brokeragePrice = $orderInfo['one_brokerage'] ?? 0;
|
$brokeragePrice = $orderInfo['one_brokerage'] ?? 0;
|
||||||
// 返佣金额小于等于0 直接返回不返佣金
|
// 一级返佣金额小于等于0 直接跳转二级返佣逻辑
|
||||||
if ($brokeragePrice <= 0) {
|
if ($brokeragePrice <= 0) {
|
||||||
return true;
|
$frozen_time = time() + intval(sys_config('extract_time')) * 86400;
|
||||||
|
return $this->backOrderBrokerageTwo($orderInfo, $userInfo, $isSelfBrokerage, $frozen_time);
|
||||||
}
|
}
|
||||||
// 获取上级推广员信息
|
// 获取上级推广员信息
|
||||||
$spreadPrice = $userServices->value(['uid' => $one_spread_uid], 'brokerage_price');
|
$spreadPrice = $userServices->value(['uid' => $one_spread_uid], 'brokerage_price');
|
||||||
|
|||||||
@ -954,7 +954,7 @@ class StoreProductServices extends BaseServices
|
|||||||
$res = $this->dao->update($id, $data);
|
$res = $this->dao->update($id, $data);
|
||||||
$storeProductCateServices->update(['product_id' => $id], ['status' => 0]);
|
$storeProductCateServices->update(['product_id' => $id], ['status' => 0]);
|
||||||
if (!$res) throw new AdminException(100008);
|
if (!$res) throw new AdminException(100008);
|
||||||
return 100002;
|
return '移动回收站成功';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -994,6 +994,7 @@ class StoreProductServices extends BaseServices
|
|||||||
foreach ($attrs as $items) {
|
foreach ($attrs as $items) {
|
||||||
$item['attrs'][$key] = $items;
|
$item['attrs'][$key] = $items;
|
||||||
$item['attrs'][$key]['suk'] = implode(',', $items['detail']);
|
$item['attrs'][$key]['suk'] = implode(',', $items['detail']);
|
||||||
|
$item['attrs'][$key]['product_price'] = $items['price'];
|
||||||
$key += 1;
|
$key += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -126,7 +126,7 @@ class SystemRoleServices extends BaseServices
|
|||||||
if (isset($auth[$method]) && in_array($rule, $auth[$method])) {
|
if (isset($auth[$method]) && in_array($rule, $auth[$method])) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return true;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1192,8 +1192,8 @@ class UserBillServices extends BaseServices
|
|||||||
$storeOrderServices = app()->make(StoreOrderServices::class);
|
$storeOrderServices = app()->make(StoreOrderServices::class);
|
||||||
[$page, $limit] = $this->getPageValue();
|
[$page, $limit] = $this->getPageValue();
|
||||||
$time = [];
|
$time = [];
|
||||||
$where = ['paid' => 1, 'type' => 6, 'spread_or_uid' => $uid, 'pid' => 0, 'refund_status' => 0];
|
$where = ['paid' => 1, 'type' => 6, 'all_spread' => $uid, 'pid' => 0, 'refund_status' => 0];
|
||||||
$list = $storeOrderServices->getlist($where, ['id,order_id,uid,add_time,spread_uid,status,spread_two_uid,one_brokerage,two_brokerage,pay_price,pid'], $page, $limit, ['split']);
|
$list = $storeOrderServices->getlist($where, ['id,order_id,uid,add_time,spread_uid,status,spread_two_uid,one_brokerage,two_brokerage,pay_price,pid,staff_id,agent_id,division_id,staff_brokerage,agent_brokerage,division_brokerage'], $page, $limit, ['split']);
|
||||||
$result['count'] = $storeOrderServices->count($where);
|
$result['count'] = $storeOrderServices->count($where);
|
||||||
$time_data = [];
|
$time_data = [];
|
||||||
if ($list) {
|
if ($list) {
|
||||||
@ -1202,7 +1202,15 @@ class UserBillServices extends BaseServices
|
|||||||
foreach ($list as &$item) {
|
foreach ($list as &$item) {
|
||||||
$item['avatar'] = $userInfos[$item['uid']]['avatar'] ?? '';
|
$item['avatar'] = $userInfos[$item['uid']]['avatar'] ?? '';
|
||||||
$item['nickname'] = $userInfos[$item['uid']]['nickname'] ?? '';
|
$item['nickname'] = $userInfos[$item['uid']]['nickname'] ?? '';
|
||||||
$item['number'] = $item['spread_uid'] == $uid ? $item['one_brokerage'] : $item['two_brokerage'];
|
if ($item['division_id'] == $uid) {
|
||||||
|
$item['number'] = $item['division_brokerage'];
|
||||||
|
} elseif ($item['agent_id'] == $uid) {
|
||||||
|
$item['number'] = $item['agent_brokerage'];
|
||||||
|
} elseif ($item['staff_id'] == $uid) {
|
||||||
|
$item['number'] = $item['staff_brokerage'];
|
||||||
|
} else {
|
||||||
|
$item['number'] = $item['spread_uid'] == $uid ? $item['one_brokerage'] : $item['two_brokerage'];
|
||||||
|
}
|
||||||
$item['time'] = $item['add_time'] ? date('Y-m-d H:i', $item['add_time']) : '';
|
$item['time'] = $item['add_time'] ? date('Y-m-d H:i', $item['add_time']) : '';
|
||||||
$item['time_key'] = $item['add_time'] ? date('Y-m', $item['add_time']) : '';
|
$item['time_key'] = $item['add_time'] ? date('Y-m', $item['add_time']) : '';
|
||||||
$item['type'] = in_array($item['status'], [2, 3]) ? 'brokerage' : 'number';
|
$item['type'] = in_array($item['status'], [2, 3]) ? 'brokerage' : 'number';
|
||||||
|
|||||||
1
crmeb/backup/readme.md
Normal file
1
crmeb/backup/readme.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
crmeb/backup 目录在CRMEB项目中的主要作用是用于保存备份文件和数据库文件的。
|
||||||
@ -82,7 +82,7 @@ export default {
|
|||||||
this.dialogTableVisible = true;
|
this.dialogTableVisible = true;
|
||||||
this.info = res.data;
|
this.info = res.data;
|
||||||
}).catch(res => {
|
}).catch(res => {
|
||||||
this.$Message.error(res.msg);
|
this.$message.error(res.msg);
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
//修改状态
|
//修改状态
|
||||||
@ -116,7 +116,7 @@ export default {
|
|||||||
})
|
})
|
||||||
.catch((res) => {
|
.catch((res) => {
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
this.$Message.error(res.msg);
|
this.$message.error(res.msg);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
//分页
|
//分页
|
||||||
@ -139,11 +139,11 @@ export default {
|
|||||||
};
|
};
|
||||||
this.$modalSure(delfromData)
|
this.$modalSure(delfromData)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
this.$Message.success(res.msg);
|
this.$message.success(res.msg);
|
||||||
this.getList();
|
this.getList();
|
||||||
})
|
})
|
||||||
.catch((res) => {
|
.catch((res) => {
|
||||||
this.$Message.error(res.msg);
|
this.$message.error(res.msg);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -27,7 +27,17 @@ if (phpversion() >= '8.0.0') {
|
|||||||
date_default_timezone_set('PRC');
|
date_default_timezone_set('PRC');
|
||||||
error_reporting(E_ALL & ~E_NOTICE);
|
error_reporting(E_ALL & ~E_NOTICE);
|
||||||
header('Content-Type: text/html; charset=UTF-8');
|
header('Content-Type: text/html; charset=UTF-8');
|
||||||
|
//mysql数据库配置容器中获取
|
||||||
|
$MYSQL_HOST_IP = getenv('MYSQL_HOST_IP')?:'127.0.0.1';
|
||||||
|
$MYSQL_PORT = getenv('MYSQL_PORT')?:'3306';
|
||||||
|
$MYSQL_USER = getenv('MYSQL_USER')?:'root';
|
||||||
|
$MYSQL_PASSWORD = getenv('MYSQL_PASSWORD')?:'123456';
|
||||||
|
$MYSQL_DATABASE = getenv('MYSQL_DATABASE')?:'crmeb';
|
||||||
|
//redis配置容器中获取
|
||||||
|
$REDIS_HOST_IP = getenv('REDIS_HOST_IP')?:'127.0.0.1';
|
||||||
|
$REDIS_PORT = getenv('REDIS_PORT')?:'6379';
|
||||||
|
$REDIS_DATABASE = getenv('REDIS_DATABASE')?:0;
|
||||||
|
$REDIS_PASSWORD = getenv('REDIS_PASSWORD')?:'';
|
||||||
//数据库
|
//数据库
|
||||||
$sqlFile = 'crmeb.sql';
|
$sqlFile = 'crmeb.sql';
|
||||||
$configFile = '.env';
|
$configFile = '.env';
|
||||||
|
|||||||
@ -29,21 +29,21 @@
|
|||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tar">数据库用户名:</td>
|
<td class="tar">数据库用户名:</td>
|
||||||
<td><input type="text" name="dbuser" id="dbuser" value="root" class="input"></td>
|
<td><input type="text" name="dbuser" id="dbuser" value="<?php echo $MYSQL_USER; ?>" class="input"></td>
|
||||||
<td>
|
<td>
|
||||||
<div id="J_install_tip_dbuser"></div>
|
<div id="J_install_tip_dbuser"></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tar">数据库密码:</td>
|
<td class="tar">数据库密码:</td>
|
||||||
<td><input type="password" name="dbpw" id="dbpw" value="" class="input" autoComplete="off"></td>
|
<td><input type="password" name="dbpw" id="dbpw" value="<?php echo $MYSQL_PASSWORD; ?>" class="input" autoComplete="off"></td>
|
||||||
<td>
|
<td>
|
||||||
<div id="J_install_tip_dbpw"></div>
|
<div id="J_install_tip_dbpw"></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="tar">数据库名:</td>
|
<td class="tar">数据库名:</td>
|
||||||
<td><input type="text" name="dbname" id="dbname" value="crmeb" class="input"></td>
|
<td><input type="text" name="dbname" id="dbname" value="<?php echo $MYSQL_DATABASE; ?>" class="input"></td>
|
||||||
<td>
|
<td>
|
||||||
<div id="J_install_tip_dbname"></div>
|
<div id="J_install_tip_dbname"></div>
|
||||||
</td>
|
</td>
|
||||||
@ -62,14 +62,14 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr v-show="value">
|
<tr v-show="value">
|
||||||
<td class="tar">数据库服务器:</td>
|
<td class="tar">数据库服务器:</td>
|
||||||
<td><input type="text" name="dbhost" id="dbhost" value="127.0.0.1" class="input"></td>
|
<td><input type="text" name="dbhost" id="dbhost" value="<?php echo $MYSQL_HOST_IP; ?>" class="input"></td>
|
||||||
<td>
|
<td>
|
||||||
<div id="J_install_tip_dbhost"></div>
|
<div id="J_install_tip_dbhost"></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr v-show="value">
|
<tr v-show="value">
|
||||||
<td class="tar">数据库端口:</td>
|
<td class="tar">数据库端口:</td>
|
||||||
<td><input type="text" name="dbport" id="dbport" value="3306" class="input"
|
<td><input type="text" name="dbport" id="dbport" value="<?php echo $MYSQL_PORT; ?>" class="input"
|
||||||
onBlur="mysqlDbPwd(0)"></td>
|
onBlur="mysqlDbPwd(0)"></td>
|
||||||
<td>
|
<td>
|
||||||
<div id="J_install_tip_dbport"></div>
|
<div id="J_install_tip_dbport"></div>
|
||||||
@ -81,11 +81,7 @@
|
|||||||
<td><input type="text" name="dbprefix" id="dbprefix" value="eb_" class="input"></td>
|
<td><input type="text" name="dbprefix" id="dbprefix" value="eb_" class="input"></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr v-show="value">
|
|
||||||
<td class="tar">演示数据:</td>
|
|
||||||
<td colspan="2"><input style="width:14px;height:14px;" type="checkbox" id="demo" name="demo"
|
|
||||||
value="demo" checked></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
</table>
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr>
|
<tr>
|
||||||
@ -104,7 +100,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td class="tar">管理员密码:</td>
|
<td class="tar">管理员密码:</td>
|
||||||
<td><input type="password" name="manager_pwd" id="manager_pwd" class="input" autoComplete="off"
|
<td><input type="password" name="manager_pwd" id="manager_pwd" class="input" autoComplete="off"
|
||||||
placeholder="请输入密码(至少6个字符)" placeholder-class="pl-style" onblur="checkForm()">
|
placeholder="请输入密码(至少6个字符)" placeholder-class="pl-style" onblur="checkForm()">
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div id="J_install_tip_manager_pwd"><span class="gray">请输入至少6个字符密码</span></div>
|
<div id="J_install_tip_manager_pwd"><span class="gray">请输入至少6个字符密码</span></div>
|
||||||
@ -118,6 +114,11 @@
|
|||||||
<div id="J_install_tip_manager_ckpwd"></div>
|
<div id="J_install_tip_manager_ckpwd"></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="tar">演示数据:</td>
|
||||||
|
<td colspan="2"><input style="width:14px;height:14px;" type="checkbox" id="demo" name="demo"
|
||||||
|
value="demo" checked></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
<table>
|
<table>
|
||||||
@ -136,14 +137,14 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr v-show="radio == 1">
|
<tr v-show="radio == 1">
|
||||||
<td class="tar">服务器地址:</td>
|
<td class="tar">服务器地址:</td>
|
||||||
<td><input type="text" name="rbhost" id="rbhost" value="127.0.0.1" class="input"></td>
|
<td><input type="text" name="rbhost" id="rbhost" value="<?php echo $REDIS_HOST_IP; ?>" class="input"></td>
|
||||||
<td>
|
<td>
|
||||||
<div id="J_install_redis_host"><span class="gray">redis服务器地址,一般为127.0.0.1</span></div>
|
<div id="J_install_redis_host"><span class="gray">redis服务器地址,一般为127.0.0.1</span></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr v-show="radio == 1">
|
<tr v-show="radio == 1">
|
||||||
<td class="tar">端口号:</td>
|
<td class="tar">端口号:</td>
|
||||||
<td><input type="text" name="rbport" id="rbport" value="6379" class="input" autoComplete="off">
|
<td><input type="text" name="rbport" id="rbport" value="<?php echo $REDIS_PORT; ?>" class="input" autoComplete="off">
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div id="J_install_redis_port"><span class="gray">redis端口,默认为6379</span></div>
|
<div id="J_install_redis_port"><span class="gray">redis端口,默认为6379</span></div>
|
||||||
@ -151,7 +152,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr v-show="radio == 1">
|
<tr v-show="radio == 1">
|
||||||
<td class="tar">数据库:</td>
|
<td class="tar">数据库:</td>
|
||||||
<td><input type="text" name="rbselect" id="rbselect" value="0" class="input" autoComplete="off">
|
<td><input type="text" name="rbselect" id="rbselect" value="<?php echo $REDIS_DATABASE; ?>" class="input" autoComplete="off">
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div id="J_install_redis_select"><span class="gray">redis数据库,默认为0,一般不做更改</span></div>
|
<div id="J_install_redis_select"><span class="gray">redis数据库,默认为0,一般不做更改</span></div>
|
||||||
@ -159,7 +160,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr v-show="radio == 1" id="scrollBtn">
|
<tr v-show="radio == 1" id="scrollBtn">
|
||||||
<td class="tar">数据库密码:</td>
|
<td class="tar">数据库密码:</td>
|
||||||
<td><input type="text" name="rbpw" id="rbpw" value="" class="input" autoComplete="off"></td>
|
<td><input type="text" name="rbpw" id="rbpw" value="<?php echo $REDIS_PASSWORD; ?>" class="input" autoComplete="off"></td>
|
||||||
<td>
|
<td>
|
||||||
<div id="J_install_redis_dbpw"><span class="gray">redis数据库密码</span></div>
|
<div id="J_install_redis_dbpw"><span class="gray">redis数据库密码</span></div>
|
||||||
</td>
|
</td>
|
||||||
@ -273,7 +274,7 @@
|
|||||||
|
|
||||||
|
|
||||||
jumpButton(){
|
jumpButton(){
|
||||||
this.$refs.mianscroll.scrollTop = this.$refs.mianscroll.clientHeight
|
this.$refs.mianscroll.scrollTop = this.$refs.mianscroll.clientHeight
|
||||||
},
|
},
|
||||||
submitForm() {
|
submitForm() {
|
||||||
this.mysqlDbPwd().then(res => {
|
this.mysqlDbPwd().then(res => {
|
||||||
|
|||||||
@ -1,22 +1,10 @@
|
|||||||
crmeb/runtime目录在CRMEB项目中的主要作用是用于保存项目运行期间生成的临时文件。
|
# runtime目录说明
|
||||||
|
|
||||||
ThinkPHP框架在运行过程中会自动生成一些临时文件,比如缓存、日志文件等。这些文件的位置就被设计在runtime目录下。
|
此目录用于存储CRMEB系统运行期间生成的各种临时文件和运行时数据。包含以下子目录:
|
||||||
|
|
||||||
具体来说:
|
- `cache/` - 系统缓存文件
|
||||||
|
- `log/` - 系统日志文件
|
||||||
|
- `session/` - 用户会话数据
|
||||||
|
- `temp/` - 临时文件
|
||||||
|
|
||||||
- 放置缓存compile结果,避免每次都重新编译路由等
|
请勿手动删除此目录下的文件,除非明确知道其用途。
|
||||||
- 缓存模板视图文件,加速模板渲染
|
|
||||||
- 保存日志文件,方便排查问题
|
|
||||||
- Session文件以key-value方式存储
|
|
||||||
- 上传文件临时存放位置
|
|
||||||
|
|
||||||
使用这个目录有以下优点:
|
|
||||||
|
|
||||||
- 实现资源的动态创建与自动清理
|
|
||||||
- 与源代码完全隔离,运行期安全可控
|
|
||||||
- 易于部署式替换整个目录
|
|
||||||
- 一定程度减轻源代码管理优化需要
|
|
||||||
|
|
||||||
总体来说,它承担了项目运行时临时资源的读写工作。
|
|
||||||
|
|
||||||
通过合理利用这个目录,可以改善项目性能和部署运维需求。
|
|
||||||
BIN
readme/pic/开源群php.jpg
Executable file
BIN
readme/pic/开源群php.jpg
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 214 KiB |
@ -66,10 +66,13 @@ export default {
|
|||||||
if (nVal != oVal) {
|
if (nVal != oVal) {
|
||||||
if (nVal.length) {
|
if (nVal.length) {
|
||||||
this.labelList = [];
|
this.labelList = [];
|
||||||
this.listData.map((item) => {
|
// 根据nVal 去listData 中查找 不改变查找出来的顺序
|
||||||
if (nVal.includes(item.id)) {
|
nVal.forEach((item) => {
|
||||||
this.labelList.push(item);
|
this.listData.forEach((item2) => {
|
||||||
}
|
if (item == item2.id) {
|
||||||
|
this.labelList.push(item2);
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,7 +15,7 @@ import Setting from '@/setting';
|
|||||||
import router from '@/router';
|
import router from '@/router';
|
||||||
const service = axios.create({
|
const service = axios.create({
|
||||||
baseURL: Setting.apiBaseURL,
|
baseURL: Setting.apiBaseURL,
|
||||||
timeout: 10000, // 请求超时时间
|
timeout: 100000, // 请求超时时间
|
||||||
});
|
});
|
||||||
|
|
||||||
axios.defaults.withCredentials = true; // 携带cookie
|
axios.defaults.withCredentials = true; // 携带cookie
|
||||||
|
|||||||
@ -190,7 +190,7 @@ Object.keys(filters).forEach((key) => {
|
|||||||
// 添加统计脚本
|
// 添加统计脚本
|
||||||
(function () {
|
(function () {
|
||||||
var hm = document.createElement('script');
|
var hm = document.createElement('script');
|
||||||
hm.src = 'https://cdn.oss.9gt.net/js/es.js?version=bzv5.6.1';
|
hm.src = 'https://cdn.oss.9gt.net/js/es.js?version=kyv5.6.3';
|
||||||
var s = document.getElementsByTagName('script')[0];
|
var s = document.getElementsByTagName('script')[0];
|
||||||
s.parentNode.insertBefore(hm, s);
|
s.parentNode.insertBefore(hm, s);
|
||||||
})();
|
})();
|
||||||
|
|||||||
@ -138,6 +138,11 @@
|
|||||||
<span>{{ scope.row.agent_brokerage || 0 }}</span>
|
<span>{{ scope.row.agent_brokerage || 0 }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="员工返佣金额" min-width="130" v-if="rowsList.division_type == 3">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.row.staff_brokerage || 0 }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</template>
|
</template>
|
||||||
</el-table>
|
</el-table>
|
||||||
<div class="acea-row row-right page">
|
<div class="acea-row row-right page">
|
||||||
|
|||||||
@ -629,7 +629,7 @@ export default {
|
|||||||
attends_user: 1, //参与用户1:所有 2:部分
|
attends_user: 1, //参与用户1:所有 2:部分
|
||||||
user_level: [], //参与用户等级
|
user_level: [], //参与用户等级
|
||||||
user_label: [], //参与用户标签
|
user_label: [], //参与用户标签
|
||||||
is_svip: '-1', //参与用户是否付费会员
|
is_svip: '', //参与用户是否付费会员
|
||||||
prize_num: 0, //奖品数量
|
prize_num: 0, //奖品数量
|
||||||
period: [], //活动时间
|
period: [], //活动时间
|
||||||
prize: [], //奖品数组
|
prize: [], //奖品数组
|
||||||
|
|||||||
@ -710,7 +710,7 @@ export default {
|
|||||||
is_hot: row.is_hot,
|
is_hot: row.is_hot,
|
||||||
status: 0,
|
status: 0,
|
||||||
section_time: [],
|
section_time: [],
|
||||||
description: row.description, // 不取商品中的
|
description: '', // 不取商品中的
|
||||||
rule: '',
|
rule: '',
|
||||||
id: 0,
|
id: 0,
|
||||||
product_id: row.id,
|
product_id: row.id,
|
||||||
@ -830,9 +830,9 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.current += 1;
|
this.current += 1;
|
||||||
setTimeout((e) => {
|
// setTimeout((e) => {
|
||||||
this.formValidate.description += ' ';
|
// this.formValidate.description += ' ';
|
||||||
}, 0);
|
// }, 0);
|
||||||
} else {
|
} else {
|
||||||
return this.$message.warning('请完善您的信息');
|
return this.$message.warning('请完善您的信息');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -763,7 +763,7 @@ export default {
|
|||||||
is_host: row.is_hot,
|
is_host: row.is_hot,
|
||||||
is_show: 0,
|
is_show: 0,
|
||||||
section_time: [],
|
section_time: [],
|
||||||
description: row.description, // 不取商品中的
|
description: '', // 不取商品中的
|
||||||
id: 0,
|
id: 0,
|
||||||
people: 2,
|
people: 2,
|
||||||
num: 1,
|
num: 1,
|
||||||
|
|||||||
@ -507,7 +507,7 @@ export default {
|
|||||||
is_postage: row.is_postage,
|
is_postage: row.is_postage,
|
||||||
is_host: 0,
|
is_host: 0,
|
||||||
is_show: 1,
|
is_show: 1,
|
||||||
description: row.description,
|
description: '',
|
||||||
id: 0,
|
id: 0,
|
||||||
product_id: row.id,
|
product_id: row.id,
|
||||||
temp_id: row.temp_id,
|
temp_id: row.temp_id,
|
||||||
|
|||||||
@ -590,7 +590,7 @@ export default {
|
|||||||
// type: 1,
|
// type: 1,
|
||||||
num: 1,
|
num: 1,
|
||||||
deposit: 1,
|
deposit: 1,
|
||||||
description: row.description, // 不取商品中的
|
description: '', // 不取商品中的
|
||||||
id: 0,
|
id: 0,
|
||||||
num: 1,
|
num: 1,
|
||||||
status: 1,
|
status: 1,
|
||||||
|
|||||||
@ -685,7 +685,7 @@ export default {
|
|||||||
is_postage: row.is_postage,
|
is_postage: row.is_postage,
|
||||||
is_hot: row.is_hot,
|
is_hot: row.is_hot,
|
||||||
status: 0,
|
status: 0,
|
||||||
description: row.description,
|
description: '',
|
||||||
id: 0,
|
id: 0,
|
||||||
product_id: row.id,
|
product_id: row.id,
|
||||||
temp_id: row.temp_id,
|
temp_id: row.temp_id,
|
||||||
|
|||||||
@ -659,7 +659,6 @@ export default {
|
|||||||
item.attrs.forEach((value) => {
|
item.attrs.forEach((value) => {
|
||||||
value.cate_name = item.cate_name;
|
value.cate_name = item.cate_name;
|
||||||
value.store_label = item.store_label;
|
value.store_label = item.store_label;
|
||||||
value.product_price = item.price;
|
|
||||||
value.status = 1;
|
value.status = 1;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -129,6 +129,31 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="section">
|
||||||
|
<div class="title">返佣信息(金额|用户UID)</div>
|
||||||
|
<ul class="list">
|
||||||
|
<li class="item">
|
||||||
|
<div>一级佣金:</div>
|
||||||
|
<div class="value">{{ orderDatalist.orderInfo.one_brokerage }} | {{ orderDatalist.orderInfo.spread_uid }}</div>
|
||||||
|
</li>
|
||||||
|
<li class="item">
|
||||||
|
<div>二级佣金:</div>
|
||||||
|
<div class="value">{{ orderDatalist.orderInfo.two_brokerage }} | {{ orderDatalist.orderInfo.spread_two_uid }}</div>
|
||||||
|
</li>
|
||||||
|
<li class="item">
|
||||||
|
<div>员工返佣:</div>
|
||||||
|
<div class="value">{{ orderDatalist.orderInfo.staff_brokerage }} | {{ orderDatalist.orderInfo.staff_id }}</div>
|
||||||
|
</li>
|
||||||
|
<li class="item">
|
||||||
|
<div>代理商佣金:</div>
|
||||||
|
<div class="value">{{ orderDatalist.orderInfo.agent_brokerage }} | {{ orderDatalist.orderInfo.agent_id }}</div>
|
||||||
|
</li>
|
||||||
|
<li class="item">
|
||||||
|
<div>事业部佣金:</div>
|
||||||
|
<div class="value">{{ orderDatalist.orderInfo.division_brokerage }} | {{ orderDatalist.orderInfo.division_id }}</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
<div class="section" v-if="orderDatalist.orderInfo.delivery_name">
|
<div class="section" v-if="orderDatalist.orderInfo.delivery_name">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
{{ orderDatalist.orderInfo.delivery_type == 'express' ? '物流信息' : '送货人信息' }}
|
{{ orderDatalist.orderInfo.delivery_type == 'express' ? '物流信息' : '送货人信息' }}
|
||||||
|
|||||||
@ -342,7 +342,7 @@
|
|||||||
.ifam {
|
.ifam {
|
||||||
width: 344px;
|
width: 344px;
|
||||||
height: 644px;
|
height: 644px;
|
||||||
background: url('~/assets/images/phonebg.png') no-repeat center top;
|
background: url('~@/assets/images/phonebg.png') no-repeat center top;
|
||||||
background-size: 344px 644px;
|
background-size: 344px 644px;
|
||||||
padding: 40px 20px;
|
padding: 40px 20px;
|
||||||
padding-top: 50px;
|
padding-top: 50px;
|
||||||
|
|||||||
@ -447,7 +447,7 @@ export default {
|
|||||||
confirmButtonClass: 'btn-custom-cancel',
|
confirmButtonClass: 'btn-custom-cancel',
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.$router.push('/admin/setting/pages/devise/0');
|
this.$router.push(this.$routeProStr + '/setting/pages/devise/0');
|
||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
},
|
},
|
||||||
@ -844,7 +844,7 @@ export default {
|
|||||||
if (num == 2) {
|
if (num == 2) {
|
||||||
this.relLoading = false;
|
this.relLoading = false;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
window.location.replace('/admin/setting/pages/devise/0');
|
window.location.replace(this.$routeProStr + '/setting/pages/devise/0');
|
||||||
}, 2000);
|
}, 2000);
|
||||||
} else {
|
} else {
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
|
|||||||
@ -322,15 +322,7 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
item.props.disabled = false;
|
item.props.disabled = false;
|
||||||
item.props.min = 1;
|
item.props.min = 1;
|
||||||
item.validate = [
|
|
||||||
{
|
|
||||||
type: 'number',
|
|
||||||
max: 1000000,
|
|
||||||
min: 0,
|
|
||||||
message: '最大只能输入1000000,最小为0',
|
|
||||||
requred: true,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (['price'].includes(key)) {
|
if (['price'].includes(key)) {
|
||||||
|
|||||||
@ -378,6 +378,11 @@
|
|||||||
<div>{{ scope.row.user_type }}</div>
|
<div>{{ scope.row.user_type }}</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="上级用户" min-width="100">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div>{{ scope.row.spread_uid_nickname }}</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="余额" prop="now_money" min-width="100" :sortable="true">
|
<el-table-column label="余额" prop="now_money" min-width="100" :sortable="true">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div>{{ scope.row.now_money }}</div>
|
<div>{{ scope.row.now_money }}</div>
|
||||||
|
|||||||
@ -55,7 +55,7 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class='evaluate' v-else-if="item.is_reply==1">{{$t(`已评价`)}}</view>
|
<view class='evaluate' v-else-if="item.is_reply==1">{{$t(`已评价`)}}</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="botton-btn">
|
<view class="botton-btn">
|
||||||
@ -220,7 +220,7 @@
|
|||||||
if (item.type == 0) {
|
if (item.type == 0) {
|
||||||
url = `/pages/goods_details/index?id=${item.product_id}`
|
url = `/pages/goods_details/index?id=${item.product_id}`
|
||||||
} else if (item.type == 1) {
|
} else if (item.type == 1) {
|
||||||
url = `/pages/activity/goods_seckill_details/index?id=${item.seckill_id}`
|
url = `/pages/activity/goods_seckill_details/index?id=${item.seckill_id}&time_id=${item.productInfo.time_id}`
|
||||||
} else if (item.type == 2) {
|
} else if (item.type == 2) {
|
||||||
url = `/pages/activity/goods_bargain_details/index?id=${item.bargain_id}&bargain=${this.uid}`
|
url = `/pages/activity/goods_bargain_details/index?id=${item.bargain_id}&bargain=${this.uid}`
|
||||||
} else if (item.type == 3) {
|
} else if (item.type == 3) {
|
||||||
@ -350,9 +350,9 @@
|
|||||||
|
|
||||||
.op {
|
.op {
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.gray {
|
.gray {
|
||||||
filter: grayscale(100%);
|
filter: grayscale(100%);
|
||||||
filter: gray;
|
filter: gray;
|
||||||
|
|||||||
@ -166,6 +166,14 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
toLogin();
|
toLogin();
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
// 分享朋友圈及朋友
|
||||||
|
onShareAppMessage() {
|
||||||
|
return {
|
||||||
|
title: '积分抽奖',
|
||||||
|
path: '/pages/goods/lottery/grids/index?type=' + this.type + '&lottery_id=' + this.lottery_id + '&spread=' + this.$store.state.app.uid,
|
||||||
|
imageUrl: this.image
|
||||||
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
//#ifdef H5
|
//#ifdef H5
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user