This commit is contained in:
evoxwht 2026-01-23 11:41:13 +08:00
parent a01bf0807a
commit a24a96ab34
45 changed files with 261 additions and 124 deletions

View File

@ -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">
[![zread](https://img.shields.io/badge/Ask_Zread-_.svg?style=flat&color=00b0aa&labelColor=000000&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuOTYxNTYgMS42MDAxSDIuMjQxNTZDMS44ODgxIDEuNjAwMSAxLjYwMTU2IDEuODg2NjQgMS42MDE1NiAyLjI0MDFWNC45NjAxQzEuNjAxNTYgNS4zMTM1NiAxLjg4ODEgNS42MDAxIDIuMjQxNTYgNS42MDAxSDQuOTYxNTZDNS4zMTUwMiA1LjYwMDEgNS42MDE1NiA1LjMxMzU2IDUuNjAxNTYgNC45NjAxVjIuMjQwMUM1LjYwMTU2IDEuODg2NjQgNS4zMTUwMiAxLjYwMDEgNC45NjE1NiAxLjYwMDFaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik00Ljk2MTU2IDEwLjM5OTlIMi4yNDE1NkMxLjg4ODEgMTAuMzk5OSAxLjYwMTU2IDEwLjY4NjQgMS42MDE1NiAxMS4wMzk5VjEzLjc1OTlDMS42MDE1NiAxNC4xMTM0IDEuODg4MSAxNC4zOTk5IDIuMjQxNTYgMTQuMzk5OUg0Ljk2MTU2QzUuMzE1MDIgMTQuMzk5OSA1LjYwMTU2IDE0LjExMzQgNS42MDE1NiAxMy43NTk5VjExLjAzOTlDNS42MDE1NiAxMC42ODY0IDUuMzE1MDIgMTAuMzk5OSA0Ljk2MTU2IDEwLjM5OTlaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik0xMy43NTg0IDEuNjAwMUgxMS4wMzg0QzEwLjY4NSAxLjYwMDEgMTAuMzk4NCAxLjg4NjY0IDEwLjM5ODQgMi4yNDAxVjQuOTYwMUMxMC4zOTg0IDUuMzEzNTYgMTAuNjg1IDUuNjAwMSAxMS4wMzg0IDUuNjAwMUgxMy43NTg0QzE0LjExMTkgNS42MDAxIDE0LjM5ODQgNS4zMTM1NiAxNC4zOTg0IDQuOTYwMVYyLjI0MDFDMTQuMzk4NCAxLjg4NjY0IDE0LjExMTkgMS42MDAxIDEzLjc1ODQgMS42MDAxWiIgZmlsbD0iI2ZmZiIvPgo8cGF0aCBkPSJNNCAxMkwxMiA0TDQgMTJaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik00IDEyTDEyIDQiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8L3N2Zz4K&logoColor=ffffff)](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协议** 免费商
### 📱 系统演示 ### 📱 系统演示
![输入图片说明](readme/pic/contact.jpg) ![输入图片说明](readme/pic/contact2.jpg)
管理后台: 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开源技术交流群扫码进群可领取开源版接口文档、产品功能清单、思维脑图
![输入图片说明](readme/pic/开源群.jpg) ![输入图片说明](readme/pic/开源群php.jpg)
#### 技术社区找方法、提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版
[![输入图片说明](readme/pic/PRO版.jpg)](https://www.crmeb.com/index/pro) [![输入图片说明](readme/pic/PRO版2.jpg)](https://www.crmeb.com/index/pro?from=giteephp)
### 📕 CRMEB 多商户版 ### 📕 CRMEB 多商户版
[![输入图片说明](readme/pic/duoshanghu.jpg)](https://www.crmeb.com/index/merchant) [![输入图片说明](readme/pic/duoshanghu2.jpg)](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)

View File

@ -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

View File

@ -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')],
]; ];
} }

View File

@ -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 = [];

View File

@ -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);
} }

View File

@ -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);

View File

@ -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' => '系统相关']);
/** /**

View File

@ -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;

View File

@ -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();
} }

View File

@ -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']

View File

@ -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;
} }

View File

@ -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');
} }
/** /**

View File

@ -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');
} }
/** /**

View File

@ -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]);

View File

@ -1435,4 +1435,4 @@ class StoreOrderRefundServices extends BaseServices
//拒绝退款处理 //拒绝退款处理
$this->refuseRefund($id, $refundData, $orderRefundInfo); $this->refuseRefund($id, $refundData, $orderRefundInfo);
} }
} }

View File

@ -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');

View File

@ -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;
} }
} }

View File

@ -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;
} }
} }

View File

@ -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
View File

@ -0,0 +1 @@
crmeb/backup 目录在CRMEB项目中的主要作用是用于保存备份文件和数据库文件的。

View File

@ -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

View File

@ -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';

View File

@ -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 => {

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

View File

@ -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);
}
});
}); });
} }
} }

View File

@ -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

View File

@ -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);
})(); })();

View File

@ -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">

View File

@ -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: [], //

View File

@ -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('请完善您的信息');
} }

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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;
}); });
}); });

View File

@ -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' ? '物流信息' : '送货人信息' }}

View File

@ -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;

View File

@ -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;

View File

@ -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)) {

View File

@ -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>

View File

@ -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;

View File

@ -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

Binary file not shown.