update v5.2.1

This commit is contained in:
evoxwht 2023-11-09 15:59:15 +08:00
parent 4512becd44
commit 6e1752992c
1635 changed files with 42244 additions and 17680 deletions

View File

@ -1,4 +1,4 @@
GNU GENERAL PUBLIC LICENSE
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>

View File

@ -13,7 +13,7 @@ CRMEB开源商城系统PHP版
<img src="https://img.shields.io/badge/Licence-GPL3.0-green.svg?style=flat" />
</a>
<a href="http://www.crmeb.com">
<img src="https://img.shields.io/badge/Edition-5.1-blue.svg" />
<img src="https://img.shields.io/badge/Edition-5.2-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" />
@ -115,9 +115,9 @@ Redis
账号demo 密码crmeb.com
H5端http://v5.crmeb.net/(移动端打开)
H5端http://v5.crmeb.net/ (移动端打开)
PC端http://v5.crmeb.net/(电脑端打开)
PC端http://v5.crmeb.net/ (电脑端打开)
APP下载http://app.crmeb.cn/bzv 苹果手机直接在APP Store里搜索CRMEB下载
@ -153,6 +153,9 @@ APP下载http://app.crmeb.cn/bzv 苹果手机直接在APP Store里搜索CR
So~~想要用CRMEB开源商城系统做公益项目的朋友可以来免费申请商业版系统哦有需要的朋友快去找官方客服咨询吧
![输入图片说明](readme/pic/gongyi1.jpg)
![输入图片说明](readme/pic/gongyi2.jpg)
---
### 💎 捐赠
赠人玫瑰手留余香CRMEB诚挚地邀请大家积极参与捐赠我们会将捐赠获得的费用悉数用于支持公益项目让善意无限传递下去

View File

@ -1,5 +1,5 @@
version=CRMEB-KY v5.2.0
version_code=520
version=CRMEB-KY v5.2.1
version_code=521
platform=github
app_id=ze7x9rxsv09l6pvsyo
app_key=fuF7U9zaybLa5gageVQzxtxQMFnvU2OI

File diff suppressed because it is too large Load Diff

View File

@ -69,13 +69,13 @@ class AgentLevel extends AuthController
['name', ''],
['grade', 0],
['image', ''],
['one_brokerage', 0],
['two_brokerage', 0],
['one_brokerage_percent', 0],
['two_brokerage_percent', 0],
['status', 0]]);
if (!$data['name']) return app('json')->fail(400200);
if (!$data['grade']) return app('json')->fail(400201);
if (!$data['image']) return app('json')->fail(400202);
if ($data['two_brokerage'] > $data['one_brokerage']) {
if ($data['two_brokerage_percent'] > $data['one_brokerage_percent']) {
return app('json')->fail(400203);
}
$grade = $this->services->get(['grade' => $data['grade'], 'is_del' => 0]);
@ -121,13 +121,13 @@ class AgentLevel extends AuthController
['name', ''],
['grade', 0],
['image', ''],
['one_brokerage', 0],
['two_brokerage', 0],
['one_brokerage_percent', 0],
['two_brokerage_percent', 0],
['status', 0]]);
if (!$data['name']) return app('json')->fail(400200);
if (!$data['grade']) return app('json')->fail(400201);
if (!$data['image']) return app('json')->fail(400202);
if ($data['two_brokerage'] > $data['one_brokerage']) {
if ($data['two_brokerage_percent'] > $data['one_brokerage_percent']) {
return app('json')->fail(400203);
}
if (!$levelInfo = $this->services->getLevelInfo((int)$id)) return app('json')->fail(400206);
@ -139,8 +139,8 @@ class AgentLevel extends AuthController
$levelInfo->name = $data['name'];
$levelInfo->grade = $data['grade'];
$levelInfo->image = $data['image'];
$levelInfo->one_brokerage = $data['one_brokerage'];
$levelInfo->two_brokerage = $data['two_brokerage'];
$levelInfo->one_brokerage_percent = $data['one_brokerage_percent'];
$levelInfo->two_brokerage_percent = $data['two_brokerage_percent'];
$levelInfo->status = $data['status'];
$levelInfo->save();
return app('json')->success(100001);

View File

@ -75,6 +75,7 @@ class SystemAttachmentCategory extends AuthController
['pid', 0],
['name', '']
]);
if (is_array($data['pid'])) $data['pid'] = end($data['pid']);
if (!$data['name']) {
return app('json')->fail(400100);
}
@ -108,6 +109,9 @@ class SystemAttachmentCategory extends AuthController
if (!$data['name']) {
return app('json')->fail(400100);
}
if ($data['pid'] == $id) {
return app('json')->fail('上级分类不能是自己');
}
$info = $this->service->get($id);
$count = $this->service->count(['pid' => $id]);
if ($count && $info['pid'] != $data['pid']) return app('json')->fail(400105);

View File

@ -87,6 +87,7 @@ class StoreBargain extends AuthController
['postage', 0],//邮费
['custom_form', ''],
['virtual_type', 0],
['is_commission', 0],
]);
$this->validate($data, \app\adminapi\validate\marketing\StoreBargainValidate::class, 'save');
if ($data['section_time']) {

View File

@ -43,6 +43,7 @@ class StoreCouponIssue extends AuthController
['coupon_title', ''],
['receive_type', ''],
['type', ''],
['coupon_type', ''],
]);
$list = $this->services->getCouponIssueList($where);
return app('json')->success($list);
@ -55,6 +56,7 @@ class StoreCouponIssue extends AuthController
public function saveCoupon()
{
$data = $this->request->postMore([
['id', 0],
['coupon_title', ''],
['coupon_price', 0.00],
['use_min_price', 0.00],

View File

@ -87,6 +87,7 @@ class StoreSeckill extends AuthController
['postage', 0],//邮费
['custom_form', ''],
['virtual_type', 0],
['is_commission', 0],
]);
$this->validate($data, \app\adminapi\validate\marketing\StoreSeckillValidate::class, 'save');
$this->services->saveData($id, $data);

View File

@ -14,6 +14,7 @@ use app\adminapi\controller\AuthController;
use app\adminapi\validate\order\StoreOrderValidate;
use app\jobs\OrderExpressJob;
use app\services\serve\ServeServices;
use app\services\wechat\WechatUserServices;
use crmeb\services\FileService;
use app\services\order\{StoreOrderCartInfoServices,
StoreOrderDeliveryServices,
@ -452,7 +453,7 @@ class StoreOrder extends AuthController
if (!$id) {
return app('json')->fail(100100);
}
return app('json')->success($services->refundOrderForm((int)$id));
return app('json')->success($services->refundOrderForm((int)$id, 'order'));
}
/**
@ -467,7 +468,6 @@ class StoreOrder extends AuthController
{
$data = $this->request->postMore([
['refund_price', 0],
['type', 1]
]);
if (!$id) {
return app('json')->fail(100100);
@ -476,44 +476,63 @@ class StoreOrder extends AuthController
if (!$order) {
return app('json')->fail(400118);
}
$refundData = [
'refund_reason' => '后台主动退款',
'refund_explain' => '后台主动退款',
'refund_img' => json_encode([]),
];
$res = $services->applyRefund((int)$id, $order['uid'], $order, [], 1, (float)$data['refund_price'], $refundData);
if (!$res) {
return app('json')->fail('退款单生成失败');
}
$orderRefund = $services->get(['store_order_id' => $id]);
$data['refund_status'] = 2;
$data['refund_type'] = 6;
$data['refunded_time'] = time();
//0元退款
if ($order['pay_price'] == 0 && in_array($order['refund_status'], [0, 1])) {
if ($orderRefund['refund_price'] == 0 && in_array($orderRefund['refund_type'], [1, 5])) {
$refund_price = 0;
} else {
if ($order['pay_price'] == $order['refund_price']) {
return app('json')->fail(400147);
}
if (!$data['refund_price']) {
return app('json')->fail(400146);
}
$refund_price = $data['refund_price'];
$data['refund_price'] = bcadd($data['refund_price'], $order['refund_price'], 2);
$bj = bccomp((string)$order['pay_price'], (string)$data['refund_price'], 2);
if ($bj < 0) {
return app('json')->fail(400148);
if ($orderRefund['refund_price'] == $orderRefund['refunded_price']) {
return app('json')->fail(400147);
}
$refund_price = $data['refund_price'];
}
if ($data['type'] == 1) {
$data['refund_status'] = 2;
} else if ($data['type'] == 2) {
$data['refund_status'] = 0;
$data['refunded_price'] = bcadd($data['refund_price'], $orderRefund['refunded_price'], 2);
$bj = bccomp((string)$orderRefund['refund_price'], (string)$data['refunded_price'], 2);
if ($bj < 0) {
return app('json')->fail(400148);
}
$data['refund_type'] = 6;
$type = $data['type'];
unset($data['type']);
$refund_data['pay_price'] = $order['pay_price'];
$refund_data['refund_price'] = $refund_price;
if ($order['refund_price'] > 0) {
mt_srand();
$refund_data['refund_id'] = $order['order_id'] . rand(100, 999);
}
//退款处理
$services->payOrderRefund($type, $order, $refund_data);
($order['pid'] > 0) ? $refund_data['order_id'] = $this->services->value(['id' => (int)$order['pid']], 'order_id') : $refund_data['order_id'] = $order['order_id'];
/** @var WechatUserServices $wechatUserServices */
$wechatUserServices = app()->make(WechatUserServices::class);
$refund_data['open_id'] = $wechatUserServices->uidToOpenid((int)$order['uid'], 'routine') ?? '';
$refund_data['refund_no'] = $orderRefund['order_id'];
//修改订单退款状态
if ($this->services->update($id, $data)) {
$services->storeProductOrderRefundY($data, $order, $refund_price);
unset($data['refund_price']);
if ($services->agreeRefund($orderRefund['id'], $refund_data)) {
$services->update($orderRefund['id'], $data);
return app('json')->success(400149);
} else {
$services->storeProductOrderRefundYFasle((int)$id, $refund_price);
$services->storeProductOrderRefundYFasle((int)$orderRefund['id'], $refund_price);
return app('json')->fail(400150);
}
}
@ -883,4 +902,24 @@ class StoreOrder extends AuthController
}
return app('json')->success('批量发货成功');
}
/**
* 配货单
* @param $order_id
* @return \think\Response
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
* @author: 吴汐
* @email: 442384644@qq.com
* @date: 2023/10/11
*/
public function printShipping($order_id)
{
if (!$order_id) {
return app('json')->fail('参数错误');
}
$data = $this->services->printShippingData($order_id);
return app('json')->success($data);
}
}

View File

@ -340,7 +340,7 @@ class SystemConfig extends AuthController
if (!is_int($post['sign_give_point']) || $post['sign_give_point'] < 0) return app('json')->fail('签到赠送积分请填写大于等于0的整数');
}
if (isset($post['sign_give_exp'])) {
if (!is_int($post['sign_give_exp']) || $post['sign_give_exp'] < 0) return app('json')->fail('签到赠送经验请填写大于等于0的整数');
if ((int)$post['sign_give_exp'] < 0) return app('json')->fail('签到赠送经验请填写大于等于0的整数');
}
if (isset($post['integral_frozen'])) {
if (!ctype_digit($post['integral_frozen']) || $post['integral_frozen'] < 0) return app('json')->fail('积分冻结天数请填写大于等于0的整数');
@ -358,6 +358,9 @@ class SystemConfig extends AuthController
if (isset($post['customer_phone'])) {
if (!ctype_digit($post['customer_phone']) || strlen($post['customer_phone']) > 11) return app('json')->fail('客服手机号为11位数字');
}
if (isset($post['refund_time_available'])) {
if (!ctype_digit($post['refund_time_available'])) return app('json')->fail('售后期限必须为大于0的整数');
}
foreach ($post as $k => $v) {
$config_one = $this->services->getOne(['menu_name' => $k]);

View File

@ -20,12 +20,15 @@ use app\services\system\log\SystemFileServices;
use app\services\system\SystemCrudDataService;
use app\services\system\SystemCrudServices;
use app\services\system\SystemMenusServices;
use app\services\system\SystemRouteServices;
use crmeb\services\CacheService;
use crmeb\services\crud\enum\FormTypeEnum;
use crmeb\services\crud\Make;
use crmeb\services\crud\Service;
use crmeb\services\FileService;
use think\facade\App;
use think\facade\Db;
use think\facade\Env;
use think\helper\Str;
use think\Response;
@ -548,13 +551,20 @@ class SystemCrud extends AuthController
return app('json')->fail(100026);
}
$services->transaction(function () use ($services, $info) {
if ($info->menu_ids) {
$services->deleteMenus($info->menu_ids);
}
$menusServices = app()->make(SystemMenusServices::class);
if ($info->menu_ids) {
$menusServices->deleteMenus($info->menu_ids);
}
if ($info->menu_id) {
$menusServices->deleteMenus([$info->menu_id]);
}
$info->delete();
});
$routeServices = app()->make(SystemRouteServices::class);
if ($info->route_ids) {
$routeServices->deleteRoutes($info->route_ids);
}
Db::query("DROP TABLE `" . Env::get('database.prefix', 'eb_') . $info->table_name . "`");
if ($info->make_path) {
$errorFile = [];
@ -577,6 +587,8 @@ class SystemCrud extends AuthController
}
}
$info->delete();
return app('json')->success(100002);
}

View File

@ -106,7 +106,7 @@ class SystemRole extends AuthController
if (!$role) {
return app('json')->fail(100100);
}
$menus = $services->getMenus($this->adminInfo['level'] == 0 ? [] : $this->adminInfo['roles']);
$menus = $services->getMenus($this->adminInfo['level'] == 0 ? [] : $this->adminInfo['roles'], explode(',', $role['rules']));
return app('json')->success(['role' => $role->toArray(), 'menus' => $menus]);
}

View File

@ -0,0 +1,69 @@
<?php
namespace app\adminapi\controller\v1\statistic;
use app\adminapi\controller\AuthController;
use app\services\user\UserMoneyServices;
use think\facade\App;
class BalanceStatistic extends AuthController
{
/**
* @param App $app
* @param UserMoneyServices $services
*/
public function __construct(App $app, UserMoneyServices $services)
{
parent::__construct($app);
$this->services = $services;
}
/**
* 余额统计基础信息
* @return mixed
*/
public function getBasic()
{
$data = $this->services->getBasic();
return app('json')->success($data);
}
/**
* 余额统计趋势图
* @return mixed
*/
public function getTrend()
{
$where = $this->request->getMore([
['time', '']
]);
$data = $this->services->getTrend($where);
return app('json')->success($data);
}
/**
* 余额来源
* @return mixed
*/
public function getChannel()
{
$where = $this->request->getMore([
['time', '']
]);
$data = $this->services->getChannel($where);
return app('json')->success($data);
}
/**
* 余额类型
* @return mixed
*/
public function getType()
{
$where = $this->request->getMore([
['time', '']
]);
$data = $this->services->getType($where);
return app('json')->success($data);
}
}

View File

@ -0,0 +1,68 @@
<?php
namespace app\adminapi\controller\v1\statistic;
use app\adminapi\controller\AuthController;
use app\services\statistic\OrderStatisticServices;
use think\facade\App;
class OrderStatistic extends AuthController
{
public function __construct(App $app, OrderStatisticServices $services)
{
parent::__construct($app);
$this->services = $services;
}
/**
* 订单统计基础信息
* @return mixed
*/
public function getBasic()
{
$where = $this->request->getMore([
['time', '']
]);
$data = $this->services->getBasic($where);
return app('json')->success($data);
}
/**
* 订单统计趋势图
* @return mixed
*/
public function getTrend()
{
$where = $this->request->getMore([
['time', '']
]);
$data = $this->services->getTrend($where);
return app('json')->success($data);
}
/**
* 订单来源
* @return mixed
*/
public function getChannel()
{
$where = $this->request->getMore([
['time', '']
]);
$data = $this->services->getChannel($where);
return app('json')->success($data);
}
/**
* 订单类型
* @return mixed
*/
public function getType()
{
$where = $this->request->getMore([
['time', '']
]);
$data = $this->services->getType($where);
return app('json')->success($data);
}
}

View File

@ -0,0 +1,106 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\adminapi\controller\v1\statistic;
use app\adminapi\controller\AuthController;
use app\services\statistic\ProductStatisticServices;
use think\facade\App;
/**
* Class ProductStatistic
* @package app\adminapi\controller\v1\statistic
*/
class ProductStatistic extends AuthController
{
/**
* ProductStatistic constructor.
* @param App $app
* @param ProductStatisticServices $services
*/
public function __construct(App $app, ProductStatisticServices $services)
{
parent::__construct($app);
$this->services = $services;
}
/**
* 商品基础
* @return mixed
*/
public function getBasic()
{
$where = $this->request->getMore([
['data', '', '', 'time']
]);
return app('json')->success($this->services->getBasic($where));
}
/**
* 商品趋势
* @return mixed
*/
public function getTrend()
{
$where = $this->request->getMore([
['data', '', '', 'time']
]);
$where['time'] = $this->getDay($where['time']);
return app('json')->success($this->services->getTrend($where));
}
/**
* 商品排行
* @return mixed
*/
public function getProductRanking()
{
$where = $this->request->getMore([
['data', '', '', 'time'],
['sort', '']
]);
$where['time'] = $this->getDay($where['time']);
return app('json')->success($this->services->getProductRanking($where));
}
/**
* 导出
* @return mixed
*/
public function getExcel()
{
$where = $this->request->getMore([
['data', '', '', 'time']
]);
$where['time'] = $this->getDay($where['time']);
return app('json')->success($this->services->getTrend($where, true));
}
/**
* 格式化时间
* @param $time
* @return string
*/
public function getDay($time)
{
if (strstr($time, '-') !== false) {
[$startTime, $endTime] = explode('-', $time);
if (!$startTime || !$endTime) {
return date("Y/m/d 00:00:00", strtotime("-30 days", time())) . '-' . date("Y/m/d 23:59:59", time());
} else {
return date('Y/m/d 00:00:00', strtotime($startTime)).'-'.date('Y/m/d 23:59:59', strtotime($endTime));
}
} else {
return date("Y/m/d 00:00:00", strtotime("-30 days", time())) . '-' . date("Y/m/d 23:59:59", time());
}
}
}

View File

@ -0,0 +1,74 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\adminapi\controller\v1\statistic;
use app\adminapi\controller\AuthController;
use app\services\statistic\TradeStatisticServices;
use think\facade\App;
/**
* Class TradeStatistic
* @package app\controller\admin\v1\statistic
*/
class TradeStatistic extends AuthController
{
/**
* TradeStatistic constructor.
* @param App $app
* @param TradeStatisticServices $services
*/
public function __construct(App $app, TradeStatisticServices $services)
{
parent::__construct($app);
$this->services = $services;
}
/**
* 顶部数据
* @return mixed
*/
public function topTrade()
{
$leftToday = $this->services->getTopLeftTrade(['time' => 'today']);
$leftyestoday = $this->services->getTopLeftTrade(['time' => 'yestoday']);
$rightOne = $this->services->getTopRightOneTrade();
$rightTwo = $this->services->getTopRightTwoTrade();
$right = ['today' => $rightOne, 'month' => $rightTwo];
$totalleft = [$leftToday, $leftyestoday];
$left = [];
foreach ($totalleft as $k => $v) {
$left['name'] = "当日订单金额";
$left['x'] = $v['curve']['x'];
$left['series'][$k]['money'] = round($v['total_money'], 2);
$left['series'][$k]['value'] = array_values($v['curve']['y']);
}
$data['left'] = $left;
$data['right'] = $right;
return app('json')->success($data);
}
/**
* 底部数据
* @return mixed
*/
public function bottomTrade()
{
$day = $this->request->getMore([
['data', ""],
]);
$bottom = $this->services->getBottomTrade($day);
return app('json')->success($bottom);
}
}

View File

@ -0,0 +1,152 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\adminapi\controller\v1\statistic;
use app\adminapi\controller\AuthController;
use app\services\statistic\UserStatisticServices;
use think\facade\App;
/**
* Class UserStatistic
* @package app\adminapi\controller\v1\statistic
*/
class UserStatistic extends AuthController
{
/**
* UserStatistic constructor.
* @param App $app
* @param UserStatisticServices $services
*/
public function __construct(App $app, UserStatisticServices $services)
{
parent::__construct($app);
$this->services = $services;
}
/**
* 用户基础信息
* @return mixed
*/
public function getBasic()
{
$where = $this->request->getMore([
['channel_type', ''],
['data', '', '', 'time']
]);
return app('json')->success($this->services->getBasic($where));
}
/**
* 用户趋势
* @return mixed
*/
public function getTrend()
{
$where = $this->request->getMore([
['channel_type', ''],
['data', '', '', 'time']
]);
$where['time'] = $this->getDay($where['time']);
return app('json')->success($this->services->getTrend($where));
}
/**
* 微信用户信息
* @return mixed
*/
public function getWechat()
{
$where = $this->request->getMore([
['channel_type', ''],
['data', '', '', 'time']
]);
$where['time'] = $this->getDay($where['time']);
return app('json')->success($this->services->getWechat($where));
}
/**
* 微信用户趋势
* @return mixed
*/
public function getWechatTrend()
{
$where = $this->request->getMore([
['channel_type', ''],
['data', '', '', 'time']
]);
$where['time'] = $this->getDay($where['time']);
return app('json')->success($this->services->getWechatTrend($where));
}
/**
* 用户地域
* @return mixed
*/
public function getRegion()
{
$where = $this->request->getMore([
['channel_type', ''],
['data', '', '', 'time'],
['sort', 'allNum']
]);
$where['time'] = $this->getDay($where['time']);
return app('json')->success($this->services->getRegion($where));
}
/**
* 用户性别
* @return mixed
*/
public function getSex()
{
$where = $this->request->getMore([
['channel_type', ''],
['data', '', '', 'time']
]);
$where['time'] = $this->getDay($where['time']);
return app('json')->success($this->services->getSex($where));
}
/**
* 用户统计导出
* @return mixed
*/
public function getExcel()
{
$where = $this->request->getMore([
['channel_type', ''],
['data', '', '', 'time']
]);
$where['time'] = $this->getDay($where['time']);
return app('json')->success($this->services->getTrend($where, true));
}
/**
* 格式化时间
* @param $time
* @return string
*/
public function getDay($time)
{
if (strstr($time, '-') !== false) {
[$startTime, $endTime] = explode('-', $time);
if (!$startTime || !$endTime) {
return date("Y/m/d 00:00:00", strtotime("-30 days", time())) . '-' . date("Y/m/d 23:59:59", time());
} else {
return date('Y/m/d 00:00:00', strtotime($startTime)).'-'.date('Y/m/d 23:59:59', strtotime($endTime));
}
} else {
return date("Y/m/d 00:00:00", strtotime("-30 days", time())) . '-' . date("Y/m/d 23:59:59", time());
}
}
}

View File

@ -57,6 +57,7 @@ class User extends AuthController
['field_key', ''],
['isMember', '']
]);
$where['label_id'] = stringToIntArray($where['label_id']);
return app('json')->success($this->services->index($where));
}

View File

@ -112,6 +112,8 @@ Route::group('order', function () {
Route::get('delivery/list', 'v1.order.DeliveryService/get_delivery_list')->option(['real_name' => '订单列表获取配送员']);
//电子面单模板列表
Route::get('expr/temp', 'v1.order.StoreOrder/expr_temp')->option(['real_name' => '电子面单模板列表']);
//打印发货单
Route::get('print/shipping/:order_id', 'v1.order.StoreOrder/printShipping')->option(['real_name' => '打印发货单']);
//更多操作打印电子面单
Route::get('order_dump/:order_id', 'v1.order.StoreOrder/order_dump')->option(['real_name' => '更多操作打印电子面单']);

View File

@ -307,10 +307,10 @@ class PublicController
['image', ''],
['code', ''],
], true);
if ($imageUrl !== '' && !preg_match('/.*(\.png|\.jpg|\.jpeg|\.gif)$/', $imageUrl) && strpos($imageUrl, "phar://") !== false) {
if ($imageUrl !== '' && !preg_match('/.*(\.png|\.jpg|\.jpeg|\.gif)$/', $imageUrl) && strpos(strtolower($imageUrl), "phar://") !== false) {
return app('json')->success(['code' => false, 'image' => false]);
}
if ($codeUrl !== '' && !(preg_match('/.*(\.png|\.jpg|\.jpeg|\.gif)$/', $codeUrl) || strpos($codeUrl, 'https://mp.weixin.qq.com/cgi-bin/showqrcode') !== false) && strpos($codeUrl, "phar://") !== false) {
if ($codeUrl !== '' && !(preg_match('/.*(\.png|\.jpg|\.jpeg|\.gif)$/', $codeUrl) || strpos($codeUrl, 'https://mp.weixin.qq.com/cgi-bin/showqrcode') !== false) && strpos(strtolower($codeUrl), "phar://") !== false) {
return app('json')->success(['code' => false, 'image' => false]);
}
try {
@ -319,7 +319,9 @@ class PublicController
if (!$codeTmp) {
$putCodeUrl = put_image($codeUrl);
$code = $putCodeUrl ? image_to_base64(app()->request->domain(true) . '/' . $putCodeUrl) : false;
$code ?? unlink($_SERVER["DOCUMENT_ROOT"] . '/' . $putCodeUrl);
if ($putCodeUrl) {
unlink($_SERVER["DOCUMENT_ROOT"] . '/' . $putCodeUrl);
}
}
return $code;
});
@ -328,7 +330,9 @@ class PublicController
if (!$imageTmp) {
$putImageUrl = put_image($imageUrl);
$image = $putImageUrl ? image_to_base64(app()->request->domain(true) . '/' . $putImageUrl) : false;
$image ?? unlink($_SERVER["DOCUMENT_ROOT"] . '/' . $putImageUrl);
if ($putImageUrl) {
unlink($_SERVER["DOCUMENT_ROOT"] . '/' . $putImageUrl);
}
}
return $image;
});

View File

@ -559,7 +559,8 @@ class StoreOrderController
'unique' => $unique,
'product_id' => $productId,
'add_time' => time(),
'reply_type' => 'product'
'reply_type' => 'product',
'suk' => $cartInfo['cart_info']['productInfo']['attrInfo']['suk']
]);
$res = $replyServices->save($group);

View File

@ -87,6 +87,7 @@ class StoreCartController
} elseif ($where['advanceId']) {
$type = 6;
}
if ($type == 0) $cartService->checkVipGoodsBuy($request->user(), $where['productId']);
$res = $cartService->setCart($request->uid(), $where['productId'], $where['cartNum'], $where['uniqueId'], $type, $new, $where['combinationId'], $where['secKillId'], $where['bargainId'], $where['advanceId']);
if (!$res) return app('json')->fail(100022);
else return app('json')->success(['cartId' => $res]);

View File

@ -220,7 +220,8 @@ if (!function_exists('make_path')) {
} catch (\Exception $e) {
if ($force)
throw new \Exception($e->getMessage());
return '无法创建文件夹,请检查您的上传目录权限:' . app()->getRootPath() . 'public' . DS . 'uploads' . DS . 'attach' . DS;
// return '无法创建文件夹,请检查您的上传目录权限:' . app()->getRootPath() . 'public' . DS . 'uploads' . DS . 'attach' . DS;
return '';
}
}
@ -1110,3 +1111,17 @@ if (!function_exists('dump_sql')) {
});
}
}
if (!function_exists('stringToIntArray')) {
/**
* 处理ids等并过滤参数
* @param string $string
* @param string $separator
* @return array
*/
function stringToIntArray(string $string, string $separator = ',')
{
return !empty($string) ? array_unique(array_diff(array_map('intval', explode($separator, $string)), [0])) : [];
}
}

View File

@ -82,7 +82,7 @@ class StoreOrderDao extends BaseDao
$query->where('paid', 1)->where('status', 0)->where('refund_status', 0)->where('shipping_type', 2)->where('is_del', 0);
break;
case 6://已支付 已核销 没有退款
$query->where('paid', 1)->where('status', 2)->where('refund_status', 0)->where('shipping_type', 2)->where('is_del', 0);
$query->where('paid', 1)->whereIn('status', [2,3])->where('refund_status', 0)->where('shipping_type', 2)->where('is_del', 0);
break;
case -1://退款中
$query->where('paid', 1)->whereIn('refund_status', [1, 4])->where('is_del', 0);
@ -174,7 +174,7 @@ class StoreOrderDao extends BaseDao
}
})->when($realName && !$fieldKey, function ($query) use ($where) {
$query->where(function ($que) use ($where) {
$que->whereLike('order_id|real_name', '%' . $where['real_name'] . '%')->whereOr('uid', 'in', function ($q) use ($where) {
$que->whereLike('order_id|real_name|user_phone', '%' . $where['real_name'] . '%')->whereOr('uid', 'in', function ($q) use ($where) {
$q->name('user')->whereLike('nickname|uid|phone', '%' . $where['real_name'] . '%')->field(['uid'])->select();
})->whereOr('id', 'in', function ($que) use ($where) {
$que->name('store_order_cart_info')->whereIn('product_id', function ($q) use ($where) {

View File

@ -38,7 +38,7 @@ class StoreProductLogDao extends BaseDao
'SUM(pay_num) as pay',
'SUM(pay_price * pay_num) as price',
'SUM(cost_price) as cost',
'ROUND((SUM(pay_price)-SUM(cost_price))/SUM(cost_price),2) as profit',
'ROUND((SUM(pay_price)-SUM(cost_price))/SUM(pay_price),2) as profit',
'SUM(collect_num) as collect',
'ROUND((COUNT(distinct(pay_uid))-1)/COUNT(distinct(uid)),2) as changes',
'COUNT(distinct(pay_uid))-1 as repeats'

View File

@ -73,6 +73,7 @@ class UserBrokerageDao extends BaseDao
public function brokerageRankList(array $where, int $page = 0, int $limit = 0)
{
//SUM(IF(pm=1,`number`,-`number`))
if ($where['pm'] == 1) $where['not_type'] = ['extract_fail'];
return $this->search($where)->field('uid,SUM(number) as brokerage_price')->with(['user' => function ($query) {
$query->field('uid,avatar,nickname');
}])->order('brokerage_price desc')->group('uid')->when($page && $limit, function ($query) use ($page, $limit) {
@ -88,6 +89,7 @@ class UserBrokerageDao extends BaseDao
*/
public function getBrokerageSumColumn(array $where)
{
if ($where['pm'] == 1) $where['not_type'] = ['extract_fail'];
if (isset($where['uid']) && is_array($where['uid'])) {
return $this->search($where)->group('uid')->column('sum(number) as num', 'uid');
} else

View File

@ -134,4 +134,14 @@ class StoreCouponIssue extends BaseModel
{
if ($value) $query->whereLike('coupon_title', '%' . $value . '%');
}
/**
* 优惠券类型
* @param Model $query
* @param $value
*/
public function searchCouponTypeAttr($query, $value)
{
if ($value != '') $query->where('type', $value);
}
}

View File

@ -871,7 +871,7 @@ class StoreBargainServices extends BaseServices
}
/** @var StoreBargainUserServices $services */
$services = app()->make(StoreBargainUserServices::class);
$bargainUser = $services->get(['bargain_id' => $bargainId, 'uid' => $user['uid']], ['price', 'bargain_price_min']);
$bargainUser = $services->get(['bargain_id' => $bargainId, 'uid' => $user['uid'], 'status' => 1], ['price', 'bargain_price_min']);
if (!$bargainUser) {
throw new ApiException(410304);
}
@ -1029,7 +1029,7 @@ class StoreBargainServices extends BaseServices
[$page, $limit] = $this->getPageValue();
$where = $where + ['paid' => 1, 'refund_status' => 0, 'is_del' => 0];
$list = $orderServices->bargainStatisticsOrder($id, $where, $page, $limit);
$count = $orderServices->bargainStatisticsOrderCount($where);
$count = $orderServices->bargainStatisticsOrderCount($id, $where);
foreach ($list as &$item) {
if ($item['status'] == 0) {
if ($item['paid'] == 0) {

View File

@ -662,7 +662,7 @@ class StoreCombinationServices extends BaseServices
[$page, $limit] = $this->getPageValue();
$where = $where + ['paid' => 1, 'refund_status' => 0, 'is_del' => 0];
$list = $orderServices->combinationStatisticsOrder($id, $where, $page, $limit);
$count = $orderServices->combinationStatisticsCount($where);
$count = $orderServices->combinationStatisticsCount($id, $where);
foreach ($list as &$item) {
if ($item['status'] == 0) {
if ($item['paid'] == 0) {

View File

@ -89,6 +89,19 @@ class StoreCouponIssueServices extends BaseServices
*/
public function saveCoupon($data)
{
if ($data['id']) {
$res = $this->dao->update($data['id'], [
'coupon_title' => $data['coupon_title'],
'title' => $data['coupon_title'],
'total_count' => $data['total_count'],
'remain_count' => $data['total_count'],
'receive_limit' => $data['receive_limit'],
'status' => $data['status'],
]);
if (!$res) throw new AdminException(100007);
return (int)$data['id'];
}
if ($data['start_time'] && $data['start_use_time']) {
if ($data['start_time'] < date('Y-m-d 00:00:00')) {

View File

@ -210,46 +210,41 @@ class AgentLevelServices extends BaseServices
/**
* 分销等级上浮
* @param int $uid
* @param array $userInfo
* @param $storeBrokerageRatio
* @param $storeBrokerageTwo
* @param $spread_one_uid
* @param $spread_two_uid
* @return array|int[]
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getAgentLevelBrokerage(int $uid, $userInfo = [])
public function getAgentLevelBrokerage($storeBrokerageRatio, $storeBrokerageTwo, $spread_one_uid, $spread_two_uid)
{
$one_brokerage_up = $two_brokerage_up = $spread_one_uid = $spread_two_uid = 0;
if (!$uid) {
return [$one_brokerage_up, $two_brokerage_up, $spread_one_uid, $spread_two_uid];
}
//商城分销是否开启
if (!sys_config('brokerage_func_status')) {
return [$one_brokerage_up, $two_brokerage_up, $spread_one_uid, $spread_two_uid];
}
/** @var UserServices $userServices */
$userServices = app()->make(UserServices::class);
if (!$userInfo) {
$userInfo = $userServices->getUserInfo($uid);
}
if (!$userInfo) {
return [$one_brokerage_up, $two_brokerage_up, $spread_one_uid, $spread_two_uid];
}
//获取上级uid 开启自购返回自己uid
$spread_one_uid = $userServices->getSpreadUid($uid, $userInfo);
$one_agent_level = 0;
$two_agent_level = 0;
$spread_two_uid = 0;
if ($spread_one_uid > 0 && $one_user_info = $userServices->getUserInfo($spread_one_uid)) {
$one_agent_level = $one_user_info['agent_level'] ?? 0;
$spread_two_uid = $userServices->getSpreadUid($spread_one_uid, $one_user_info, false);
if ($spread_two_uid > 0 && $two_user_info = $userServices->getUserInfo($spread_two_uid)) {
$two_agent_level = $two_user_info['agent_level'] ?? 0;
$one_agent_level = $userServices->value(['uid' => $spread_one_uid], 'agent_level') ?? 0;
$two_agent_level = $userServices->value(['uid' => $spread_two_uid], 'agent_level') ?? 0;
if ($one_agent_level) {
$oneLevelInfo = $this->getLevelInfo($one_agent_level);
if ($oneLevelInfo['one_brokerage_percent'] == '0.00') {
$storeBrokerageRatio = $storeBrokerageRatio + (($storeBrokerageRatio * $oneLevelInfo['one_brokerage'] ?? 0) / 100);
} else {
$storeBrokerageRatio = $oneLevelInfo['one_brokerage_percent'];
}
}
$one_brokerage_up = $one_agent_level ? ($this->getLevelInfo($one_agent_level)['one_brokerage'] ?? 0) : 0;
$two_brokerage_up = $two_agent_level ? ($this->getLevelInfo($two_agent_level)['two_brokerage'] ?? 0) : 0;
return [$one_brokerage_up, $two_brokerage_up, $spread_one_uid, $spread_two_uid];
if ($two_agent_level) {
$twoLevelInfo = $this->getLevelInfo($two_agent_level);
if ($twoLevelInfo['two_brokerage_percent'] == '0.00') {
$storeBrokerageTwo = $storeBrokerageTwo + (($storeBrokerageTwo * $twoLevelInfo['two_brokerage'] ?? 0) / 100);
} else {
$storeBrokerageTwo = $twoLevelInfo['two_brokerage_percent'];
}
}
return [$storeBrokerageRatio, $storeBrokerageTwo];
}
/**
@ -263,16 +258,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(config('app.admin_prefix', 'admin') . '/widget.images/index', array('fodder' => 'image')))->icon('el-icon-picture-outline')->width('950px')->height('560px')->props(['footer' => false]);
$field[] = Form::number('one_brokerage', '一级上浮', 0)->appendRule('suffix', [
$field[] = Form::number('one_brokerage_percent', '一级佣金比例', 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', [
'domProps' => ['innerHTML' => '到达该等级之后,一级分佣按照此比例计算佣金']
])->max(100)->precision(2);
$field[] = Form::number('two_brokerage_percent', '二级佣金比例', 0)->appendRule('suffix', [
'type' => 'div',
'class' => 'tips-info',
'domProps' => ['innerHTML' => '在分销二级佣金基础上浮0-1000之间整数百分比目前二级返佣比率10%上浮2%,则返佣比率:二级返佣比率 * (1 + 二级上浮比率) = 5.10%']
])->min(0)->max(1000)->precision(0);
'domProps' => ['innerHTML' => '到达该等级之后,二级分佣按照此比例计算佣金']
])->min(0)->max(100)->precision(2);
$field[] = Form::radio('status', '是否显示', 1)->options([['value' => 1, 'label' => '显示'], ['value' => 0, 'label' => '隐藏']]);
return create_form('添加分销员等级', $field, Url::buildUrl('/agent/level'), 'POST');
}
@ -293,16 +288,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(config('app.admin_prefix', 'admin') . '/widget.images/index', array('fodder' => 'image')), $levelInfo['image'])->icon('el-icon-picture-outline')->width('950px')->height('560px')->props(['footer' => false]);
$field[] = Form::number('one_brokerage', '一级上浮', $levelInfo['one_brokerage'])->appendRule('suffix', [
$field[] = Form::number('one_brokerage_percent', '一级佣金比例', $levelInfo['one_brokerage_percent'])->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', [
'domProps' => ['innerHTML' => '到达该等级之后,一级分佣按照此比例计算佣金']
])->max(100)->precision(2);
$field[] = Form::number('two_brokerage_percent', '二级佣金比例', $levelInfo['two_brokerage_percent'])->appendRule('suffix', [
'type' => 'div',
'class' => 'tips-info',
'domProps' => ['innerHTML' => '在分销二级佣金基础上浮0-1000之间整数百分比目前二级返佣比率10%上浮2%,则返佣比率:二级返佣比率 * (1 + 二级上浮比率) = 5.10%']
])->min(0)->max(1000)->precision(0);
'domProps' => ['innerHTML' => '到达该等级之后,二级分佣按照此比例计算佣金']
])->min(0)->max(100)->precision(2);
$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

@ -47,6 +47,8 @@ class AgentManageServices extends BaseServices
$data = $userServices->getAgentUserList($where, '*', $is_page);
/** @var UserBrokerageServices $frozenPrices */
$frozenPrices = app()->make(UserBrokerageServices::class);
/** @var StoreOrderServices $orderServices */
$orderServices = app()->make(StoreOrderServices::class);
foreach ($data['list'] as &$item) {
$item['headimgurl'] = $item['avatar'];
$item['extract_count_price'] = $item['extract'][0]['extract_count_price'] ?? 0;
@ -71,6 +73,7 @@ class AgentManageServices extends BaseServices
if (strpos($item['headimgurl'], '/statics/system_images/') !== false) {
$item['headimgurl'] = set_file_url($item['headimgurl']);
}
$item['spread_order'] = $orderServices->get(['spread_uid' => $item['uid'], 'paid' => 1, 'refund_status' => 0, 'pid' => 0], ['sum(pay_price) as order_price','count(id) as order_count']);
}
return $data;
}

View File

@ -14,9 +14,9 @@ use crmeb\exceptions\AdminException;
use crmeb\exceptions\ApiException;
use crmeb\services\FormBuilder as Form;
use app\services\other\UploadService;
use think\facade\Config;
use think\facade\Log;
use think\facade\Route;
use think\facade\Config;
class DivisionAgentApplyServices extends BaseServices
{

View File

@ -726,4 +726,20 @@ class StoreCartServices extends BaseServices
}
return true;
}
/**
* 判断是否非付费会员购买会员专属商品
* @param $user
* @param $pid
* @return bool
* @author: 吴汐
* @email: 442384644@qq.com
* @date: 2023/10/30
*/
public function checkVipGoodsBuy($user, $pid)
{
$is_vip_product = app()->make(StoreProductServices::class)->value(['id' => $pid], 'vip_product');
if ($is_vip_product == 1 && $user['is_money_level'] == 0) throw new ApiException('此商品为付费会员专属,您无权购买');
return true;
}
}

View File

@ -305,9 +305,8 @@ class StoreOrderComputedServices extends BaseServices
* @param array $userInfo
* @return array
*/
public function getOrderPriceGroup($storeFreePostage, $cartInfo, $addr, $userInfo = [])
public function getOrderPriceGroup($storeFreePostage, $cartInfo, $addr, $userInfo = [], $shipping_type = 1)
{
$sumPrice = $totalPrice = $costPrice = $vipPrice = 0;
$storePostage = 0;
$storePostageDiscount = 0;
$isStoreFreePostage = false;//是否满额包邮
@ -321,12 +320,17 @@ class StoreOrderComputedServices extends BaseServices
// 判断商品包邮和固定运费
foreach ($cartInfo as $key => &$item) {
$item['postage_price'] = 0;
if ($item['productInfo']['freight'] == 1) {
$item['postage_price'] = 0;
} elseif ($item['productInfo']['freight'] == 2) {
$item['postage_price'] = bcmul((string)$item['productInfo']['postage'], (string)$item['cart_num'], 2);
$item['origin_postage_price'] = bcmul((string)$item['productInfo']['postage'], (string)$item['cart_num'], 2);
$storePostage = bcadd((string)$storePostage, (string)$item['postage_price'], 2);
if ($shipping_type == 1) {
if ($item['productInfo']['freight'] == 1) {
$item['postage_price'] = 0;
} elseif ($item['productInfo']['freight'] == 2) {
$item['postage_price'] = bcmul((string)$item['productInfo']['postage'], (string)$item['cart_num'], 2);
$item['origin_postage_price'] = bcmul((string)$item['productInfo']['postage'], (string)$item['cart_num'], 2);
$storePostage = bcadd((string)$storePostage, (string)$item['postage_price'], 2);
}
if ($sumPrice >= $storeFreePostage) {
$item['postage_price'] = $item['origin_postage_price'] = $storePostage = 0;
}
}
}
$postageArr = [];

View File

@ -450,9 +450,15 @@ class StoreOrderCreateServices extends BaseServices
$isCommission = 0;
if ($order['combination_id']) {
//检测拼团是否参与返佣
/** @var StoreCombinationServices $combinationServices */
$combinationServices = app()->make(StoreCombinationServices::class);
$isCommission = $combinationServices->value(['id' => $order['combination_id']], 'is_commission');
$isCommission = app()->make(StoreCombinationServices::class)->value(['id' => $order['combination_id']], 'is_commission');
}
if ($order['seckill_id']) {
//检测秒杀是否参与返佣
$isCommission = app()->make(StoreSeckillServices::class)->value(['id' => $order['seckill_id']], 'is_commission');
}
if ($order['bargain_id']) {
//检测砍价是否参与返佣
$isCommission = app()->make(StoreBargainServices::class)->value(['id' => $order['bargain_id']], 'is_commission');
}
if ($cartInfo && (!$activity || $isCommission)) {
/** @var StoreOrderComputedServices $orderComputed */
@ -510,7 +516,7 @@ class StoreOrderCreateServices extends BaseServices
}
}
try {
[$cartInfo, $spread_ids] = $this->computeOrderProductBrokerage($uid, $cartInfo, $orderInfo);
[$cartInfo, $spread_ids] = $this->computeOrderProductBrokerage($uid, $cartInfo);
} catch (\Throwable $e) {
Log::error('订单商品结算失败,File' . $e->getFile() . ',Line' . $e->getLine() . ',Message' . $e->getMessage());
throw new ApiException(410248);
@ -767,19 +773,10 @@ class StoreOrderCreateServices extends BaseServices
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function computeOrderProductBrokerage(int $uid, array $cartInfo, $orderInfo)
public function computeOrderProductBrokerage(int $uid, array $cartInfo)
{
/** @var AgentLevelServices $agentLevelServices */
$agentLevelServices = app()->make(AgentLevelServices::class);
[$one_brokerage_up, $two_brokerage_up, $spread_one_uid, $spread_two_uid] = $agentLevelServices->getAgentLevelBrokerage($uid);
$BrokerageOne = sys_config('store_brokerage_ratio') != '' ? sys_config('store_brokerage_ratio') : 0;
$BrokerageTwo = sys_config('store_brokerage_two') != '' ? sys_config('store_brokerage_two') : 0;
$storeBrokerageRatio = $BrokerageOne + (($BrokerageOne * $one_brokerage_up) / 100);
$storeBrokerageTwo = $BrokerageTwo + (($BrokerageTwo * $two_brokerage_up) / 100);
if (sys_config('brokerage_level') == 1) {
$storeBrokerageTwo = $spread_two_uid = 0;
}
[$storeBrokerageRatio, $storeBrokerageTwo, $spread_one_uid, $spread_two_uid] = $this->getSpreadDate($uid);
/** @var DivisionServices $divisionService */
$divisionService = app()->make(DivisionServices::class);
@ -844,4 +841,52 @@ class StoreOrderCreateServices extends BaseServices
return [$cartInfo, [$spread_one_uid, $spread_two_uid]];
}
/**
* 获取计算好的佣金比例以及返佣人员uid
* @param int $uid
* @return array|int[]
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
* @author: 吴汐
* @email: 442384644@qq.com
* @date: 2023/10/8
*/
public function getSpreadDate(int $uid)
{
//商城分销是否开启用户uid是否存在全部返回0
if (!sys_config('brokerage_func_status') || !$uid) {
return [0, 0, 0, 0];
}
//获取用户信息获取不到全部返回0
/** @var UserServices $userServices */
$userServices = app()->make(UserServices::class);
$userInfo = $userServices->getUserInfo($uid);
if (!$userInfo) {
return [0, 0, 0, 0];
}
//获取系统一二级分佣比例
$storeBrokerageRatio = sys_config('store_brokerage_ratio') != '' ? sys_config('store_brokerage_ratio') : 0;
$storeBrokerageTwo = sys_config('store_brokerage_two') != '' ? sys_config('store_brokerage_two') : 0;
//获取上级和上上级的uid开启自购获取自己和上级的uid
$spread_one_uid = $userServices->getSpreadUid($uid, $userInfo);
$spread_two_uid = 0;
if ($spread_one_uid > 0 && $one_user_info = $userServices->getUserInfo($spread_one_uid)) {
$spread_two_uid = $userServices->getSpreadUid($spread_one_uid, $one_user_info, false);
}
//计算分销等级之后的佣金比例
[$storeBrokerageRatio, $storeBrokerageTwo] = app()->make(AgentLevelServices::class)->getAgentLevelBrokerage($storeBrokerageRatio, $storeBrokerageTwo, $spread_one_uid, $spread_two_uid);
//判断返佣层级为一级时将二级用户uid和二级分佣比例改为0
if (sys_config('brokerage_level') == 1) {
$storeBrokerageTwo = $spread_two_uid = 0;
}
return [$storeBrokerageRatio, $storeBrokerageTwo, $spread_one_uid, $spread_two_uid];
}
}

View File

@ -602,6 +602,7 @@ class StoreOrderRefundServices extends BaseServices
$order['nickname'] = $userInfo['nickname'];
$order['phone'] = $userInfo['phone'];
if (in_array($order['pay_type'], ['weixin', 'alipay', 'allinpay', 'offline'])) {
$order['refund_price'] = $refund_price;
$capitalFlowServices->setFlow($order, 'refund');
}

View File

@ -17,6 +17,7 @@ use app\services\activity\combination\StorePinkServices;
use app\services\activity\seckill\StoreSeckillServices;
use app\services\BaseServices;
use app\services\other\PosterServices;
use app\services\other\UploadService;
use app\services\pay\OrderPayServices;
use app\services\pay\PayServices;
use app\services\product\product\StoreProductLogServices;
@ -34,13 +35,14 @@ use app\services\wechat\WechatUserServices;
use crmeb\exceptions\AdminException;
use crmeb\exceptions\ApiException;
use crmeb\exceptions\PayException;
use crmeb\services\app\MiniProgramService;
use crmeb\services\CacheService;
use crmeb\services\easywechat\orderShipping\MiniOrderService;
use crmeb\services\FormBuilder as Form;
use crmeb\services\printer\Printer;
use crmeb\services\SystemConfigService;
use crmeb\utils\Arr;
use think\exception\ValidateException;
use Guzzle\Http\EntityBody;
use think\facade\Log;
/**
@ -1648,7 +1650,7 @@ HTML;
}
/** @var StoreOrderComputedServices $computedServices */
$computedServices = app()->make(StoreOrderComputedServices::class);
$priceGroup = $computedServices->getOrderPriceGroup($storeFreePostage, $validCartInfo, $addr, $user);
$priceGroup = $computedServices->getOrderPriceGroup($storeFreePostage, $validCartInfo, $addr, $user, $shipping_type);
$validCartInfo = $priceGroup['cartInfo'] ?? $validCartInfo;
$other = [
'offlinePostage' => sys_config('offline_postage'),
@ -2438,22 +2440,61 @@ HTML;
$storeServices = app()->make(SystemStoreServices::class);
$order['system_store'] = $storeServices->getStoreDispose($order['store_id']);
}
$order['code'] = '';
if (($order['shipping_type'] === 2 || $order['delivery_uid'] != 0) && $order['verify_code']) {
$name = $order['verify_code'] . '.jpg';
/** @var SystemAttachmentServices $attachmentServices */
$attachmentServices = app()->make(SystemAttachmentServices::class);
$imageInfo = $attachmentServices->getInfo(['name' => $name]);
$siteUrl = sys_config('site_url');
if (!$imageInfo) {
$imageInfo = PosterServices::getQRCodePath($order['verify_code'], $name);
if (is_array($imageInfo)) {
$attachmentServices->attachmentAdd($imageInfo['name'], $imageInfo['size'], $imageInfo['type'], $imageInfo['dir'], $imageInfo['thumb_path'], 1, $imageInfo['image_type'], $imageInfo['time'], 2);
// $name = $order['verify_code'] . '.jpg';
// /** @var SystemAttachmentServices $attachmentServices */
// $attachmentServices = app()->make(SystemAttachmentServices::class);
// $imageInfo = $attachmentServices->getInfo(['name' => $name]);
// $siteUrl = sys_config('site_url');
// if (!$imageInfo) {
// $imageInfo = PosterServices::getQRCodePath($order['verify_code'], $name);
// if (is_array($imageInfo)) {
// $attachmentServices->attachmentAdd($imageInfo['name'], $imageInfo['size'], $imageInfo['type'], $imageInfo['dir'], $imageInfo['thumb_path'], 1, $imageInfo['image_type'], $imageInfo['time'], 2);
// $url = $imageInfo['dir'];
// } else
// $url = '';
// } else $url = $imageInfo['att_dir'];
// if (isset($imageInfo['image_type']) && $imageInfo['image_type'] == 1) $url = $siteUrl . $url;
// $order['code'] = $url;
try {
$verifyName = 'verify_code_' . $order['verify_code'] . '.jpg';
$data = 'verify_code=' . $order['verify_code'];
/** @var SystemAttachmentServices $systemAttachmentService */
$systemAttachmentService = app()->make(SystemAttachmentServices::class);
$imageInfo = $systemAttachmentService->getOne(['name' => $verifyName]);
$siteUrl = sys_config('site_url');
if (!$imageInfo) {
$res = MiniProgramService::appCodeUnlimitService($data, 'pages/admin/order_cancellation/index', 280);
if (!$res) throw new ApiException('小程序核销码生成失败');
$uploadType = (int)sys_config('upload_type', 1);
$upload = UploadService::init();
$res = (string)EntityBody::factory($res);
$res = $upload->to('routine/product')->validate()->setAuthThumb(false)->stream($res, $verifyName);
if ($res === false) throw new ApiException('小程序核销码生成失败');
$imageInfo = $upload->getUploadInfo();
$imageInfo['image_type'] = $uploadType;
if ($imageInfo['image_type'] == 1) $remoteImage = PosterServices::remoteImage($siteUrl . $imageInfo['dir']);
else $remoteImage = PosterServices::remoteImage($imageInfo['dir']);
if (!$remoteImage['status']) throw new ApiException('小程序核销码生成失败');
$systemAttachmentService->save([
'name' => $imageInfo['name'],
'att_dir' => $imageInfo['dir'],
'satt_dir' => $imageInfo['thumb_path'],
'att_size' => $imageInfo['size'],
'att_type' => $imageInfo['type'],
'image_type' => $imageInfo['image_type'],
'module_type' => 2,
'time' => time(),
'pid' => 1,
'type' => 2
]);
$url = $imageInfo['dir'];
} else
$url = '';
} else $url = $imageInfo['att_dir'];
if (isset($imageInfo['image_type']) && $imageInfo['image_type'] == 1) $url = $siteUrl . $url;
$order['code'] = $url;
} else $url = $imageInfo['att_dir'];
if ($imageInfo['image_type'] == 1) $url = $siteUrl . $url;
$order['code'] = $url;
} catch (\Exception $e) {
}
}
$order['mapKey'] = sys_config('tengxun_map_key');
$order['yue_pay_status'] = (int)sys_config('balance_func_status') && (int)sys_config('yue_pay_status') == 1 ? (int)1 : (int)2;//余额支付 1 开启 2 关闭
@ -2523,9 +2564,31 @@ HTML;
}
}
$orderData['is_refund_available'] = $this->isRefundAvailable((int)$order['id']);
return $orderData;
}
/**
* 检测订单是否能退款
* @param $oid
* @return bool
* @author: 吴汐
* @email: 442384644@qq.com
* @date: 2023/10/11
*/
public function isRefundAvailable($oid)
{
$refundTimeAvailable = (int)sys_config('refund_time_available');
if ($refundTimeAvailable == 0) return true;
$statusInfo = app()->make(StoreOrderStatusServices::class)->get(['oid' => $oid, 'change_type' => 'take_delivery']);
if (!$statusInfo) return true;
$changeTime = preg_match('/^\d+$/', $statusInfo['change_time']) ? intval($statusInfo['change_time']) : strtotime($statusInfo['change_time']);
if (($changeTime + ($refundTimeAvailable * 86400)) < time()) {
return false;
}
return true;
}
/**
* 获取确认订单页面是否展示快递配送和到店自提
* @param $uid
@ -2690,13 +2753,13 @@ HTML;
{
$orderInfo = $this->dao->get($id);
if (!$orderInfo) {
throw new ValidateException('取消的订单不存在');
throw new AdminException('取消的订单不存在');
}
if (!$orderInfo->kuaidi_task_id || !$orderInfo->kuaidi_order_id) {
throw new ValidateException('商家寄件订单信息不存在,无法取消');
throw new AdminException('商家寄件订单信息不存在,无法取消');
}
if ($orderInfo->is_stock_up != 1) {
throw new ValidateException('订单状态不正确,无法取消寄件');
throw new AdminException('订单状态不正确,无法取消寄件');
}
//发起取消商家寄件
@ -2768,4 +2831,48 @@ HTML;
return true;
}
}
/**
* 配货单数据
* @param $oid
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
* @author: 吴汐
* @email: 442384644@qq.com
* @date: 2023/10/11
*/
public function printShippingData($order_id)
{
$orderInfo = $this->dao->get(['order_id' => $order_id]);
if (!$orderInfo) {
throw new AdminException('订单不存在');
}
$orderInfo = $this->tidyOrder($orderInfo->toArray(), true);
$data['user_name'] = $orderInfo['real_name'];
$data['user_phone'] = $orderInfo['user_phone'];
$data['user_address'] = $orderInfo['user_address'];
$data['order_id'] = $orderInfo['order_id'];
$data['pay_time'] = $orderInfo['_pay_time'];
$data['pay_type'] = $orderInfo['_status']['_payType'];
$data['pay_price'] = $orderInfo['pay_price'];
$data['pay_postage'] = $orderInfo['pay_postage'];
$data['deduction_price'] = $orderInfo['deduction_price'];
$data['coupon_price'] = $orderInfo['coupon_price'];
$data['mark'] = $orderInfo['mark'];
$data['product_info'] = [];
$data['vip_price'] = 0;
foreach ($orderInfo['cartInfo'] as $item) {
$data['product_info'][] = [
'name' => $item['productInfo']['store_name'],
'sku' => $item['attrInfo']['suk'],
'price' => $item['sum_price'],
'num' => $item['cart_num'],
'sum_price' => bcmul((string)$item['sum_price'], (string)$item['cart_num'], 2)
];
$data['vip_price'] = bcadd((string)$data['vip_price'], $item['vip_sum_truePrice'], 2);
}
return $data;
}
}

View File

@ -13,8 +13,10 @@ namespace app\services\order;
use app\dao\order\StoreOrderDao;
use app\services\activity\bargain\StoreBargainServices;
use app\services\activity\combination\StoreCombinationServices;
use app\services\activity\combination\StorePinkServices;
use app\services\activity\seckill\StoreSeckillServices;
use app\services\BaseServices;
use app\services\user\member\MemberCardServices;
use app\services\user\UserBillServices;
@ -351,10 +353,12 @@ class StoreOrderTakeServices extends BaseServices
}
}
if (isset($orderInfo['seckill_id']) && $orderInfo['seckill_id']) {
return true;
$seckill_commission = app()->make(StoreSeckillServices::class)->value(['id' => $orderInfo['seckill_id']], 'is_commission');
if (!$seckill_commission) return true;
}
if (isset($orderInfo['bargain_id']) && $orderInfo['bargain_id']) {
return true;
$bargain_commission = app()->make(StoreBargainServices::class)->value(['id' => $orderInfo['bargain_id']], 'is_commission');
if (!$bargain_commission) return true;
}
//绑定失效
if (isset($orderInfo['spread_uid']) && $orderInfo['spread_uid'] == -1) {

View File

@ -74,7 +74,7 @@ class ExportServices extends BaseServices
*/
public function exportOrderList($where)
{
$header = ['订单号', '收货人姓名', '收货人电话', '收货地址', '商品信息', '总价格', '实际支付', '支付状态', '支付时间', '订单状态', '下单时间', '用户备注', '商家备注', '表单信息'];
$header = ['订单号', '收货人姓名', '收货人电话', '收货地址', '商品名称', '规格', '数量', '价格', '总价格', '实际支付', '支付状态', '支付时间', '订单状态', '下单时间', '用户备注', '商家备注', '表单信息'];
$filename = '订单列表_' . date('YmdHis', time());
$export = $fileKey = [];
/** @var StoreOrderServices $orderServices */
@ -136,38 +136,63 @@ class ExportServices extends BaseServices
}
}
$goodsName = [];
// $goodsName = [];
// foreach ($item['_info'] as $value) {
// $_info = $value['cart_info'];
// $sku = '';
// if (isset($_info['productInfo']['attrInfo'])) {
// if (isset($_info['productInfo']['attrInfo']['suk'])) {
// $sku = '(' . $_info['productInfo']['attrInfo']['suk'] . ')';
// }
// }
// if (isset($_info['productInfo']['store_name'])) {
// $goodsName[] = implode(' ',
// [$_info['productInfo']['store_name'],
// $sku,
// "[{$_info['cart_num']} * {$_info['truePrice']}]"
// ]);
// }
// }
// $one_data = [
// 'order_id' => $item['order_id'],
// 'real_name' => $item['real_name'],
// 'user_phone' => $item['user_phone'],
// 'user_address' => $item['user_address'],
// 'goods_name' => $goodsName ? implode("\n", $goodsName) : '',
// 'total_price' => $item['total_price'],
// 'pay_price' => $item['pay_price'],
// 'pay_type_name' => $item['pay_type_name'],
// 'pay_time' => $item['pay_time'] > 0 ? date('Y-m-d H:i', (int)$item['pay_time']) : '暂无',
// 'status_name' => $item['status_name'] ?? '未知状态',
// 'add_time' => $item['add_time'],
// 'mark' => $item['mark'],
// 'remark' => $item['remark'],
// 'custom_form' => $custom_form,
// ];
$goodsInfo = [];
foreach ($item['_info'] as $value) {
$_info = $value['cart_info'];
$sku = '';
if (isset($_info['productInfo']['attrInfo'])) {
if (isset($_info['productInfo']['attrInfo']['suk'])) {
$sku = '(' . $_info['productInfo']['attrInfo']['suk'] . ')';
}
}
if (isset($_info['productInfo']['store_name'])) {
$goodsName[] = implode(' ',
[$_info['productInfo']['store_name'],
$sku,
"[{$_info['cart_num']} * {$_info['truePrice']}]"
]);
}
$goodsInfo[] = [
$value['cart_info']['productInfo']['store_name'],
$value['cart_info']['productInfo']['attrInfo']['suk'],
$value['cart_info']['cart_num'],
$value['cart_info']['truePrice'],
];
}
$one_data = [
'order_id' => $item['order_id'],
'real_name' => $item['real_name'],
'user_phone' => $item['user_phone'],
'user_address' => $item['user_address'],
'goods_name' => $goodsName ? implode("\n", $goodsName) : '',
'total_price' => $item['total_price'],
'pay_price' => $item['pay_price'],
'pay_type_name' => $item['pay_type_name'],
'pay_time' => $item['pay_time'] > 0 ? date('Y-m-d H:i', (int)$item['pay_time']) : '暂无',
'status_name' => $item['status_name'] ?? '未知状态',
'add_time' => $item['add_time'],
'mark' => $item['mark'],
'remark' => $item['remark'],
'custom_form' => $custom_form,
$item['order_id'],
$item['real_name'],
$item['user_phone'],
$item['user_address'],
$goodsInfo,
$item['total_price'],
$item['pay_price'],
$item['pay_type_name'],
$item['pay_time'] > 0 ? date('Y-m-d H:i', (int)$item['pay_time']) : '暂无',
$item['status_name'] ?? '未知状态',
$item['add_time'],
$item['mark'],
$item['remark'],
$custom_form,
];
$export[] = $one_data;
if ($i == 0) {
@ -594,8 +619,8 @@ class ExportServices extends BaseServices
$item['nickname'],
$item['phone'],
$item['spread_count'],
$item['order_count'],
$item['order_price'],
$item['spread_order']['order_count'],
$item['spread_order']['order_price'],
$item['brokerage_money'],
$item['extract_count_price'],
$item['extract_count_num'],
@ -604,7 +629,7 @@ class ExportServices extends BaseServices
];
}
}
$header = ['用户编号', '昵称', '电话号码', '推广用户数量', '订单数量', '推广订单金额', '佣金金额', '已提现金额', '提现次数', '未提现金额', '上级推广人'];
$header = ['用户编号', '昵称', '电话号码', '推广用户数量', '推广订单数量', '推广订单金额', '佣金金额', '已提现金额', '提现次数', '未提现金额', '上级推广人'];
$title = ['推广用户', '推广用户导出' . time(), ' 生成时间:' . date('Y-m-d H:i:s', time())];
$filename = '推广用户_' . date('YmdHis', time());
$suffix = 'xlsx';

View File

@ -47,7 +47,7 @@ class OrderServices extends BaseServices
/** @var StoreOrderServices $order */
$order = app()->make(StoreOrderServices::class);
$data['list'] = $order->getOrderApiList($where, $field, $with);
$data['count'] = $order->count($where);
$data['count'] = $order->dao->count($where, false);
return $data;
}
}

View File

@ -132,6 +132,7 @@ class CopyTaobaoServices extends BaseServices
$productInfo['temp_id'] = 1;
$productInfo['freight'] = 3;
$productInfo['recommend'] = [];
$productInfo['logistics'] = ['1', '2'];
$data['productInfo'] = $productInfo;
return $data;
} else {

View File

@ -1104,7 +1104,7 @@ class StoreProductServices extends BaseServices
unset($where['productId']);
}
$where['vip_user'] = $uid ? app()->make(UserServices::class)->value(['uid' => $uid], 'is_money_level') : 0;
$list = $this->dao->getSearchList($where, $page, $limit, ['id,store_name,cate_id,image,IFNULL(sales, 0) + IFNULL(ficti, 0) as sales,price,stock,activity,ot_price,spec_type,recommend_image,unit_name,is_vip,vip_price,is_virtual,presale,custom_form,virtual_type']);
$list = $this->dao->getSearchList($where, $page, $limit, ['id,store_name,cate_id,image,IFNULL(sales, 0) + IFNULL(ficti, 0) as sales,price,stock,activity,ot_price,spec_type,recommend_image,unit_name,is_vip,vip_price,is_virtual,presale,custom_form,virtual_type,min_qty']);
/** @var MemberCardServices $memberCardService */
$memberCardService = app()->make(MemberCardServices::class);
$vipStatus = $memberCardService->isOpenMemberCard('vip_price');

View File

@ -75,6 +75,7 @@ class StoreProductAttrServices extends BaseServices
} else {
/** @var StoreProductVirtualServices $productVirtual */
$productVirtual = app()->make(StoreProductVirtualServices::class);
$cardStock = 0;
foreach ($data['valueGroup'] as &$item) {
$res = $storeProductAttrValueServices->save($item);
if ($item['is_virtual'] && count($item['virtual_list']) && !$item['coupon_id'] && $item['disk_info'] == '') {
@ -94,8 +95,10 @@ class StoreProductAttrServices extends BaseServices
}
$allStock = $productVirtual->count(['product_id' => $id, 'attr_unique' => $item['unique']]);
$storeProductAttrValueServices->update(['id' => $res['id']], ['stock' => $allStock - $sales, 'sales' => $sales]);
$cardStock = $cardStock + ($allStock - $sales);
}
}
if ($cardStock > 0) $storeProductService->update($id, ['stock' => $cardStock]);
return true;
}
}

View File

@ -82,19 +82,25 @@ class SystemClearServices extends BaseServices
$valueJosn = str_replace('http://', 'http:\\\/\\\/', $url);
$prefix = Config::get('database.connections.' . Config::get('database.default') . '.prefix');
$sql = [
"UPDATE `{$prefix}system_attachment` SET `att_dir` = replace(att_dir ,'{$siteUrl}','{$url}'),`satt_dir` = replace(satt_dir ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}store_product` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`slider_image` = replace(slider_image ,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}store_product_attr_value` SET `image` = replace(image ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}store_seckill` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}store_combination` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}store_bargain` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}system_config` SET `value` = replace(value ,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}article_category` SET `image` = replace(`image` ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}article` SET `image_input` = replace(`image_input` ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}article_category` SET `image` = replace(`image` ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}article_content` SET `content` = replace(`content` ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}store_category` SET `pic` = replace(`pic` ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}diy` SET `value` = replace(value ,'{$siteUrlJosn}','{$valueJosn}'),`default_value` = replace(default_value ,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}luck_lottery` SET `image` = replace(image ,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}luck_prize` SET `image` = replace(image ,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}store_bargain` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}store_category` SET `pic` = replace(`pic` ,'{$siteUrl}','{$url}'),`big_pic` = replace(`big_pic` ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}store_combination` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}store_integral` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}store_product` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`slider_image` = replace(slider_image ,'{$siteUrlJosn}','{$valueJosn}'),`recommend_image` = replace(recommend_image ,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}store_product_attr_result` SET `result` = replace(result ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}store_product_attr_value` SET `image` = replace(image ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}store_product_description` SET `description`= replace(description,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}store_seckill` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}system_attachment` SET `att_dir` = replace(att_dir ,'{$siteUrl}','{$url}'),`satt_dir` = replace(satt_dir ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}system_config` SET `value` = replace(value ,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}system_group_data` SET `value` = replace(value ,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}store_product_description` SET `description`= replace(description,'{$siteUrl}','{$url}')"
"UPDATE `{$prefix}user` SET `avatar` = replace(avatar ,'{$siteUrlJosn}','{$valueJosn}')",
];
return $this->transaction(function () use ($sql) {
try {

View File

@ -243,7 +243,7 @@ class SystemMenusServices extends BaseServices
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getMenus($roles): array
public function getMenus($roles, $check = []): array
{
$field = ['menu_name', 'pid', 'id'];
$where = ['is_del' => 0, 'is_show_path' => 1];
@ -256,6 +256,9 @@ class SystemMenusServices extends BaseServices
$ids = $service->getRoleIds($roles);
$menus = $this->dao->getMenusRoule(['rule' => $ids] + $where, $field);
}
foreach ($menus as &$item) {
$item['checked'] = in_array($item['id'], $check);
}
return $this->tidyMenuTier(false, $menus);
}

View File

@ -54,28 +54,28 @@ class UpgradeServices extends BaseServices
*/
public function __construct(UpgradeLogDao $dao)
{
$versionData = $this->getVersion();
if ($versionData['version_code'] < 450) return true;
if (empty($versionData)) {
throw new AdminException('授权信息丢失');
}
$this->timeStamp = time();
$recVersion = $this->recombinationVersion($versionData['version'] ?? '');
$this->dao = $dao;
$this->requestData = [
'nonce' => mt_rand(111, 999),
'host' => app()->request->host(),
'timestamp' => $this->timeStamp,
'app_id' => trim($versionData['app_id'] ?? ''),
'app_key' => trim($versionData['app_key'] ?? ''),
'version' => implode('.', $recVersion)
];
if (!CacheService::get('upgrade_auth_token')) {
$this->getAuth();
}
// $versionData = $this->getVersion();
// if ($versionData['version_code'] < 450) return true;
// if (empty($versionData)) {
// throw new AdminException('授权信息丢失');
// }
//
// $this->timeStamp = time();
// $recVersion = $this->recombinationVersion($versionData['version'] ?? '');
// $this->dao = $dao;
//
// $this->requestData = [
// 'nonce' => mt_rand(111, 999),
// 'host' => app()->request->host(),
// 'timestamp' => $this->timeStamp,
// 'app_id' => trim($versionData['app_id'] ?? ''),
// 'app_key' => trim($versionData['app_key'] ?? ''),
// 'version' => implode('.', $recVersion)
// ];
//
// if (!CacheService::get('upgrade_auth_token')) {
// $this->getAuth();
// }
}
/**

View File

@ -124,6 +124,9 @@ class SystemAttachmentServices extends BaseServices
}
try {
$path = make_path('attach', 2, true);
if ($path === '') {
throw new AdminException(400555);
}
$upload = UploadService::init($upload_type);
$res = $upload->to($path)->validate()->move($file, $realName);
if ($res === false) {

View File

@ -405,7 +405,7 @@ class SystemConfigServices extends BaseServices
break;
default:
$data['value'] = isset($data['value']) ? json_decode($data['value'], true) : '';
if ($data['menu_name'] == 'api') {
if ($data['menu_name'] == 'api' || $data['menu_name'] == 'routine_api') {
$formbuider[] = $this->builder->input($data['menu_name'], $data['info'], strpos($data['value'], 'http') === false ? sys_config('site_url') . $data['value'] : $data['value'])->appendRule('suffix', [
'type' => 'div',
'class' => 'tips-info',

View File

@ -35,8 +35,8 @@ class LangCodeServices extends BaseServices
$typeList = $langTypeServices->getColumn([['status', '=', 1], ['is_del', '=', 0]], 'language_name,file_name,id', 'id');
$langType = [
'isAdmin' => [
['title' => '用户端页面', 'value' => 0],
['title' => '后端接口', 'value' => 1]
['title' => '页面语言', 'value' => 0],
['title' => '接口语言', 'value' => 1]
]
];
foreach ($typeList as $value) {

View File

@ -310,6 +310,13 @@ class SystemFileServices extends BaseServices
//读取文件
public function openfile($filepath)
{
//根目录
$rootDir = $this->formatPath(app()->getRootPath());
//防止查看站点以外的文件
if (strpos($filepath, $rootDir) === false || $filepath == '') {
throw new AdminException('无法打开站点以外的文件');
}
$filepath = $this->formatPath($filepath);
$content = FileClass::readFile($filepath);//防止页面内嵌textarea标签
$ext = FileClass::getExt($filepath);

View File

@ -773,7 +773,7 @@ class UserBillServices extends BaseServices
}
/** @var UserUserBrokerageServices $userUserBrokerage */
$userUserBrokerage = app()->make(UserUserBrokerageServices::class);
[$count, $list] = $userUserBrokerage->getBrokerageList($where_data, 'b.type,b.pm,sum(IF(b.pm = 1, b.number, 0)) as income,sum(IF(b.pm = 0, b.number, 0)) as pay,u.nickname,u.phone,u.uid,u.now_money,u.brokerage_price,b.add_time as time', $order_string, $limit);
[$count, $list] = $userUserBrokerage->getBrokerageList($where_data, 'b.type,b.pm,sum(IF(b.pm = 1 AND b.type <> \'extract_fail\', b.number, 0)) as income,sum(IF(b.pm = 0, b.number, 0)) as pay,u.nickname,u.phone,u.uid,u.now_money,u.brokerage_price,b.add_time as time', $order_string, $limit);
$uids = array_unique(array_column($list, 'uid'));
/** @var UserExtractServices $userExtract */
$userExtract = app()->make(UserExtractServices::class);

View File

@ -349,6 +349,8 @@ class UserBrokerageServices extends BaseServices
$data['uid'] = $uid;
$data['pm'] = 1;
$data['commissionSum'] = $this->getUsersBokerageSum($data);
$extract_fail = $this->dao->sum(['uid' => $uid, 'pm' => 1, 'type' => 'extract_fail'], 'number');
$data['commissionSum'] = bcadd($data['commissionSum'], $extract_fail, 2);
$data['pm'] = 0;
$data['commissionRefund'] = $this->getUsersBokerageSum($data);
$data['commissionCount'] = $data['commissionSum'] > $data['commissionRefund'] ? bcsub((string)$data['commissionSum'], (string)$data['commissionRefund'], 2) : 0.00;

View File

@ -233,19 +233,8 @@ class UserRechargeServices extends BaseServices
try {
$recharge_type = $UserRecharge['recharge_type'];
if (sys_config('pay_wechat_type')) {
$drivers = 'v3_wechat_pay';
$trade_no = $UserRecharge['trade_no'];
} else {
$drivers = 'wechat_pay';
$trade_no = $UserRecharge['order_id'];
}
/** @var Pay $pay */
$pay = app()->make(Pay::class, [$drivers]);
if ($recharge_type == 'weixin') {
$refund_data['wechat'] = true;
$pay->refund($trade_no, $refund_data);
} else {
$refund_data['trade_no'] = $UserRecharge['trade_no'];
$refund_data['order_id'] = $UserRecharge['order_id'];
@ -256,8 +245,20 @@ class UserRechargeServices extends BaseServices
/** @var StoreOrderCreateServices $storeOrderCreateServices */
$storeOrderCreateServices = app()->make(StoreOrderCreateServices::class);
$refund_data['refund_no'] = $storeOrderCreateServices->getNewOrderId('tk');
$pay->refund($UserRecharge['order_id'], $refund_data);
}
if ($recharge_type == 'allinpay') {
$drivers = 'allin_pay';
$trade_no = $UserRecharge['trade_no'];
} elseif (sys_config('pay_wechat_type')) {
$drivers = 'v3_wechat_pay';
$trade_no = $UserRecharge['trade_no'];
} else {
$drivers = 'wechat_pay';
$trade_no = $UserRecharge['order_id'];
}
/** @var Pay $pay */
$pay = app()->make(Pay::class, [$drivers]);
$pay->refund($trade_no, $refund_data);
} catch (\Exception $e) {
throw new AdminException($e->getMessage());
}

View File

@ -1995,7 +1995,7 @@ class UserServices extends BaseServices
$this->dao->update(['uid' => $uid], ['is_money_level' => 0/*, 'overdue_time' => 0*/]);
return false;
}
return true;
return $userInfo;
}
/**

View File

@ -158,6 +158,8 @@ class UserSignServices extends BaseServices
throw new ApiException(410032);
}
$userServices->offMemberLevel($uid);
//检测今天是否已经签到
if ($this->getIsSign($uid, 'today')) {
throw new ApiException(410293);
@ -257,7 +259,7 @@ class UserSignServices extends BaseServices
/** @var UserBillServices $userBill */
$userBill = app()->make(UserBillServices::class);
$user['sum_integral'] = intval($userBill->getRecordCount($user['uid'], 'integral', 'sign,system_add,gain,lottery_add,product_gain,pay_product_integral_back'));
$user['deduction_integral'] = intval($userBill->getRecordCount($user['uid'], 'integral', 'deduction,lottery_use,order_deduction', '', true) ?? 0);
$user['deduction_integral'] = intval($userBill->getRecordCount($user['uid'], 'integral', 'deduction,lottery_use,order_deduction,storeIntegral_use', '', true) ?? 0);
$user['today_integral'] = intval($userBill->getRecordCount($user['uid'], 'integral', 'sign,system_add,gain,product_gain,lottery_add,pay_product_integral_back', 'today'));
/** @var UserBillServices $userBillServices */
$userBillServices = app()->make(UserBillServices::class);
@ -338,14 +340,14 @@ class UserSignServices extends BaseServices
$nextContinuousDays = 0;
foreach ($nextContinuousSignRewardList as $continuousNext) {
if ($continuousSignDays < $continuousNext['days']) {
$nextContinuousDays = $continuousNext['days'] - $continuousSignDays > 0 ?: 1;
$nextContinuousDays = $continuousNext['days'] - $continuousSignDays > 0 ? $continuousNext['days'] - $continuousSignDays : 1;
break;
}
}
$nextCumulativeDays = 0;
foreach ($nextCumulativeSignRewardList as $cumulativeNext) {
if ($cumulativeSignDays < $cumulativeNext['days']) {
$nextCumulativeDays = $cumulativeNext['days'] - $cumulativeSignDays > 0 ?: 1;
$nextCumulativeDays = $cumulativeNext['days'] - $cumulativeSignDays > 0 ? $cumulativeNext['days'] - $cumulativeSignDays : 1;
break;
}
}

View File

@ -264,7 +264,7 @@ class WechatUserServices extends BaseServices
/**
* 微信授权成功后
* @param array $data
* @param $data
* @return array|mixed|\think\Model|null
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
@ -273,8 +273,9 @@ class WechatUserServices extends BaseServices
* @email 442384644@qq.com
* @date 2023/02/24
*/
public function wechatOauthAfter(array $data)
public function wechatOauthAfter($data)
{
if (!$data) throw new ApiException('用户信息获取失败,请刷新页面重试');
[$openid, $wechatInfo, $spreadId, $login_type, $userType] = $data;
/** @var UserServices $userServices */
$userServices = app()->make(UserServices::class);

View File

@ -989,7 +989,7 @@ class FileService
$t3 = $this->objToStr($sheet->getCellByColumnAndRow(3, $i)->getValue());
$t4 = $this->objToStr($sheet->getCellByColumnAndRow(4, $i)->getValue());
$t5 = $this->objToStr($sheet->getCellByColumnAndRow(5, $i)->getValue());
if ($t3 && $t4 && $t5) {
if ($t3 && $t5) {
$data[] = [
'id' => $t1,
'delivery_name' => $t3,

View File

@ -40,10 +40,6 @@ class SystemConfigService
try {
return $callable();
// if ($isCaChe) {
// return $callable();
// }
// return CacheService::remember($key, $callable);
} catch (\Throwable $e) {
return $default;
}
@ -64,10 +60,7 @@ class SystemConfigService
return Arr::getDefaultValue($keys, $service->getConfigAll($keys));
};
try {
if ($isCaChe)
return $callable();
return CacheService::remember(md5(implode(',', $keys)), $callable);
return $callable();
} catch (\Throwable $e) {
return Arr::getDefaultValue($keys);
}

View File

@ -95,7 +95,7 @@ class MiniProgramService
*/
public static function options()
{
$wechat = SystemConfigService::more(['wechat_app_appsecret', 'wechat_app_appid', 'site_url', 'routine_appId', 'routine_appsecret', 'wechat_token', 'wechat_encodingaeskey']);
$wechat = SystemConfigService::more(['wechat_app_appsecret', 'wechat_app_appid', 'site_url', 'routine_appId', 'routine_appsecret', 'routine_token', 'routine_encodingaeskey']);
$payment = SystemConfigService::more(['pay_weixin_mchid', 'pay_weixin_key', 'pay_weixin_client_cert', 'pay_weixin_client_key', 'pay_weixin_open', 'pay_new_weixin_open', 'pay_new_weixin_mchid']);
$config = [];
if (request()->isApp()) {
@ -106,14 +106,14 @@ class MiniProgramService
$appsecret = isset($wechat['routine_appsecret']) ? trim($wechat['routine_appsecret']) : '';
}
$config = [
'token' => isset($wechat['wechat_token']) ? trim($wechat['wechat_token']) : '',
'aes_key' => isset($wechat['wechat_encodingaeskey']) ? trim($wechat['wechat_encodingaeskey']) : '',
'token' => isset($wechat['routine_token']) ? trim($wechat['routine_token']) : '',
'aes_key' => isset($wechat['routine_encodingaeskey']) ? trim($wechat['routine_encodingaeskey']) : '',
];
$config['mini_program'] = [
'app_id' => $appId,
'secret' => $appsecret,
'token' => isset($wechat['wechat_token']) ? trim($wechat['wechat_token']) : '',
'aes_key' => isset($wechat['wechat_encodingaeskey']) ? trim($wechat['wechat_encodingaeskey']) : ''
'token' => isset($wechat['routine_token']) ? trim($wechat['routine_token']) : '',
'aes_key' => isset($wechat['routine_encodingaeskey']) ? trim($wechat['routine_encodingaeskey']) : ''
];
$config['payment'] = [
'app_id' => $appId,

View File

@ -151,11 +151,11 @@ class FeiEYun extends BasePrinter
unset($price);
}
$this->printerContent .= '--------------------------------<BR>';
$this->printerContent .= '合计:' . number_format($orderInfo['total_price'], 1) . '元<BR>';
$this->printerContent .= '邮费:' . number_format($orderInfo['pay_postage'], 1) . '元<BR>';
$this->printerContent .= '优惠:' . number_format($orderInfo['coupon_price'], 1) . '元<BR>';
$this->printerContent .= '抵扣:' . number_format($orderInfo['deduction_price'], 1) . '元<BR>';
$this->printerContent .= '实际支付:' . number_format($orderInfo['pay_price'], 1) . '元<BR>';
$this->printerContent .= '合计:' . number_format($orderInfo['total_price'], 2) . '元<BR>';
$this->printerContent .= '邮费:' . number_format($orderInfo['pay_postage'], 2) . '元<BR>';
$this->printerContent .= '优惠:' . number_format($orderInfo['coupon_price'], 2) . '元<BR>';
$this->printerContent .= '抵扣:' . number_format($orderInfo['deduction_price'], 2) . '元<BR>';
$this->printerContent .= '实际支付:' . number_format($orderInfo['pay_price'], 2) . '元<BR>';
$this->printerContent .= '<QR>' . $config['url'] . '</QR>';//把解析后的二维码生成的字符串用标签套上即可自动生成二维码
return $this;
}

View File

@ -261,7 +261,10 @@ class Canvas
if ($strlen !== false) {
$path = substr($this->path, 8);
}
make_path($path, 4, true);
if (make_path($path, 4, true) === '') {
throw new \RuntimeException(400555);
}
$save_file = $this->path . $this->fileName . '.' . $this->imageType;
switch ($this->imageType) {

View File

@ -14,8 +14,8 @@ namespace crmeb\utils;
use app\services\other\UploadService;
use crmeb\exceptions\AdminException;
use think\Image;
use think\facade\Config;
use think\Image;
/**
* 下载图片到本地

View File

@ -75,6 +75,11 @@ class Translate extends V4Curl
if ($resp->getStatusCode() != 200) {
throw new ApiException("failed to translate: status_code=%d, resp=%s", $resp->getStatusCode(), $resp->getBody());
}
return json_decode($resp->getBody()->getContents(), true)["TranslationList"];
$result = json_decode($resp->getBody()->getContents(), true);
if (isset($result["TranslationList"])) {
return $result["TranslationList"];
} else {
throw new ApiException("failed to translate: " . $result["ResponseMetadata"]['Error']['Message']);
}
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
.box-container[data-v-7f68792c]{overflow:hidden}.box-container .list[data-v-7f68792c]{float:left;line-height:40px}.box-container .sp[data-v-7f68792c]{width:50%}.box-container .sp3[data-v-7f68792c]{width:33.3333%}.box-container .sp100[data-v-7f68792c]{width:100%}.box-container .list .name[data-v-7f68792c]{display:inline-block;width:150px;text-align:right;color:#606266}.box-container .list .blue[data-v-7f68792c]{color:var(--prev-color-primary)}.box-container .list.image[data-v-7f68792c]{margin-bottom:40px}.box-container .list.image img[data-v-7f68792c]{position:relative;top:40px}.el-textarea[data-v-7f68792c]{width:400px}.item[data-v-a6b38ede]{margin-bottom:10px}.upload-box[data-v-a6b38ede]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:60px;height:60px;background:#ccc}.box[data-v-a6b38ede],.upload-box[data-v-a6b38ede]{display:-webkit-box;display:-ms-flexbox;display:flex}.box[data-v-a6b38ede]{-ms-flex-wrap:wrap;flex-wrap:wrap}.box .box-item[data-v-a6b38ede]{position:relative;margin-right:20px}.box .box-item .ivu-icon[data-v-a6b38ede]{position:absolute;right:-10px;top:-8px;color:#999;cursor:pointer}.box .box-item[data-v-a6b38ede],.box .upload-box[data-v-a6b38ede]{width:60px;height:60px;margin-bottom:10px}.box .box-item img[data-v-a6b38ede],.box .upload-box img[data-v-a6b38ede]{width:100%;height:100%}[data-v-d90f7ce0] .goodList .ivu-input-group{width:200%!important}
.box-container[data-v-7f68792c]{overflow:hidden}.box-container .list[data-v-7f68792c]{float:left;line-height:40px}.box-container .sp[data-v-7f68792c]{width:50%}.box-container .sp3[data-v-7f68792c]{width:33.3333%}.box-container .sp100[data-v-7f68792c]{width:100%}.box-container .list .name[data-v-7f68792c]{display:inline-block;width:150px;text-align:right;color:#606266}.box-container .list .blue[data-v-7f68792c]{color:var(--prev-color-primary)}.box-container .list.image[data-v-7f68792c]{margin-bottom:40px}.box-container .list.image img[data-v-7f68792c]{position:relative;top:40px}.el-textarea[data-v-7f68792c]{width:400px}.item[data-v-a6b38ede]{margin-bottom:10px}.upload-box[data-v-a6b38ede]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:60px;height:60px;background:#ccc}.box[data-v-a6b38ede],.upload-box[data-v-a6b38ede]{display:-webkit-box;display:-ms-flexbox;display:flex}.box[data-v-a6b38ede]{-ms-flex-wrap:wrap;flex-wrap:wrap}.box .box-item[data-v-a6b38ede]{position:relative;margin-right:20px}.box .box-item .ivu-icon[data-v-a6b38ede]{position:absolute;right:-10px;top:-8px;color:#999;cursor:pointer}.box .box-item[data-v-a6b38ede],.box .upload-box[data-v-a6b38ede]{width:60px;height:60px;margin-bottom:10px}.box .box-item img[data-v-a6b38ede],.box .upload-box img[data-v-a6b38ede]{width:100%;height:100%}[data-v-33e3ef7e] .goodList .ivu-input-group{width:200%!important}

View File

@ -0,0 +1 @@
.card_box_cir1[data-v-50f2a66a] .iconfont{font-size:26px;color:#fff}.one[data-v-50f2a66a]{background:#e4ecff}.two[data-v-50f2a66a]{background:#fff3e0}.three[data-v-50f2a66a]{background:#eaf9e1}.four[data-v-50f2a66a]{background:#ffeaf4}.five[data-v-50f2a66a]{background:#f1e4ff}.one1[data-v-50f2a66a]{background:#4d7cfe}.two1[data-v-50f2a66a]{background:#ffab2b}.three1[data-v-50f2a66a]{background:#6dd230}.four1[data-v-50f2a66a]{background:#ff85c0}.five1[data-v-50f2a66a]{background:#b37feb}.card_box[data-v-50f2a66a]{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px}.card_box .card_box_cir[data-v-50f2a66a]{width:60px;height:60px;overflow:hidden;margin-right:20px}.card_box .card_box_cir .card_box_cir1[data-v-50f2a66a],.card_box .card_box_cir[data-v-50f2a66a]{border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.card_box .card_box_cir .card_box_cir1[data-v-50f2a66a]{width:48px;height:48px}.card_box .card_box_txt .sp1[data-v-50f2a66a]{display:block;color:#252631;font-size:24px}.card_box .card_box_txt .sp2[data-v-50f2a66a]{display:block;color:#98a9bc;font-size:12px}.Refresh[data-v-0bad4f21]{font-size:12px;color:var(--prev-color-primary);cursor:pointer}.ivu-form-item[data-v-0bad4f21]{margin-bottom:10px}.tabform[data-v-0bad4f21] .ivu-col{padding:0!important}.tabform[data-v-0bad4f21] .ivu-row-flex{margin:0!important}.withdrawal[data-v-0bad4f21] .item{margin-right:10px}.tab_data[data-v-0bad4f21] .ivu-form-item-content{margin-left:10px!important}.ivu-form-label-left[data-v-0bad4f21] .ivu-form-item-label{text-align:right}.customer[data-v-1ce641b4]{height:100%;background-color:#fff}.tabBox_img[data-v-1ce641b4]{width:36px;height:36px;border-radius:4px;cursor:pointer}.tabBox_img img[data-v-1ce641b4]{width:100%;height:100%}.modelBox .ivu-table-header[data-v-1ce641b4],.modelBox[data-v-1ce641b4]{width:100%!important}.trees-coadd[data-v-1ce641b4]{width:100%;height:385px}.trees-coadd .scollhide[data-v-1ce641b4]{width:100%;height:100%;overflow-x:hidden;overflow-y:scroll}.scollhide[data-v-1ce641b4]::-webkit-scrollbar{display:none}.footer[data-v-1ce641b4]{margin:15px 0;padding-right:20px}[data-v-1ce641b4] .el-form--inline .el-form-item{margin-bottom:0}.picBox[data-v-461cdd99]{display:inline-block;cursor:pointer}.picBox .upLoad[data-v-461cdd99]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02)}.picBox .pictrue[data-v-461cdd99]{width:60px;height:60px;border:1px dotted rgba(0,0,0,.1);margin-right:10px}.picBox .pictrue img[data-v-461cdd99]{width:100%;height:100%}.picBox .iconfont[data-v-461cdd99]{color:#898989}.QRpic[data-v-461cdd99]{width:180px;height:180px}.QRpic img[data-v-461cdd99]{width:100%;height:100%}.QRpic_sp1[data-v-461cdd99]{font-size:13px;color:#19be6b;cursor:pointer}.QRpic_sp2[data-v-461cdd99]{font-size:13px;color:#2d8cf0;cursor:pointer}img[data-v-461cdd99]{height:36px;display:block}.ivu-mt .name .item[data-v-461cdd99]{margin:3px 0}.tabform[data-v-461cdd99]{margin-bottom:10px}.Refresh[data-v-461cdd99]{font-size:12px;color:var(--prev-color-primary);cursor:pointer}.ivu-form-item[data-v-461cdd99]{margin-bottom:10px}

View File

@ -0,0 +1 @@
.radio[data-v-224af4d2]{margin-bottom:14px}.radio[data-v-224af4d2] .name{width:125px;text-align:right;padding-right:12px}

View File

@ -1 +0,0 @@
.tabBox_img[data-v-a1538fac]{width:36px;height:36px;border-radius:4px;cursor:pointer}.tabBox_img img[data-v-a1538fac]{width:100%;height:100%}

View File

@ -1 +0,0 @@
input[data-v-72963ce8]{display:block;height:100%;background:none;color:inherit;opacity:1;-webkit-text-fill-color:currentcolor;font:inherit;line-height:inherit;letter-spacing:inherit;text-align:inherit;text-indent:inherit;text-transform:inherit;text-shadow:inherit;border:none}.priceChange[data-v-72963ce8]{position:fixed;width:5.8rem;height:6.7rem;background-color:#fff;border-radius:.1rem;top:50%;left:50%;margin-left:-2.9rem;margin-top:-3.35rem;z-index:99;transition:all .3s ease-in-out 0s;-webkit-transition:all .3s ease-in-out 0s;-o-transition:all .3s ease-in-out 0s;-moz-transition:all .3s ease-in-out 0s;-webkit-transform:scale(0);transform:scale(0);opacity:0}.priceChange.on[data-v-72963ce8]{opacity:1;transform:scale(1);-webkit-transform:scale(1);-o-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1)}.priceChange .priceTitle[data-v-72963ce8]{background:url(../../system_static/img/pricetitle.d0496d6f.jpg) no-repeat;background-size:100% 100%;width:100%;height:1.6rem;border-radius:.1rem .1rem 0 0;text-align:center;font-size:.4rem;color:#fff;line-height:1.6rem;position:relative}.priceChange .priceTitle .iconfontYI[data-v-72963ce8]{position:absolute;font-size:.4rem;right:.26rem;top:.23rem;width:.4rem;height:.4rem;line-height:.4rem}.priceChange .listChange[data-v-72963ce8]{padding:0 .4rem}.priceChange .listChange .item[data-v-72963ce8]{height:1.03rem;border-bottom:1px solid #e3e3e3;font-size:.32rem;color:#333}.priceChange .listChange .item .money[data-v-72963ce8]{color:#666;width:3rem;text-align:right}.priceChange .listChange .item .money .iconfontYI[data-v-72963ce8]{font-size:.32rem;margin-left:.2rem}.priceChange .listChange .item .money input[data-v-72963ce8]{width:100%;height:100%;text-align:right;color:#ccc;border:none}.priceChange .listChange .item .money input.on[data-v-72963ce8]{color:#666}.priceChange .modify[data-v-72963ce8]{color:#fff;background-color:#2291f8;margin:.53rem auto 0 auto}.priceChange .modify1[data-v-72963ce8],.priceChange .modify[data-v-72963ce8]{font-size:.32rem;width:4.9rem;height:.9rem;text-align:center;line-height:.9rem;border-radius:.45rem}.priceChange .modify1[data-v-72963ce8]{color:#312b2b;background-color:#eee;margin:.3rem auto 0 auto}.priceChange .listChange textarea[data-v-72963ce8]{border:1px solid #eee;width:100%;height:2rem;margin-top:.5rem;border-radius:.1rem;color:#333;padding:.2rem;font-size:.3rem}

View File

@ -0,0 +1 @@
.box[data-v-25599488]{width:100%;height:100%;background:#fff}[data-v-25599488] .el-card__body{min-height:700px;padding:16px 16px 16px 0}[data-v-25599488] .conter .pictrueList{max-width:100%}

View File

@ -1 +0,0 @@
.list[data-v-406d2a02]{height:80%;min-height:500px}.pictrue[data-v-406d2a02]{width:100%;max-width:300px;height:360px}.right[data-v-406d2a02]{padding-right:75px}.left[data-v-406d2a02]{padding-left:75px}.num[data-v-406d2a02]{margin-bottom:24px;color:#515a6e;font-weight:600;font-size:72px;line-height:72px}.desc[data-v-406d2a02]{margin-bottom:16px;color:#808695;font-size:20px;line-height:28px}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
.card_box_cir1[data-v-50f2a66a] .iconfont{font-size:26px;color:#fff}.one[data-v-50f2a66a]{background:#e4ecff}.two[data-v-50f2a66a]{background:#fff3e0}.three[data-v-50f2a66a]{background:#eaf9e1}.four[data-v-50f2a66a]{background:#ffeaf4}.five[data-v-50f2a66a]{background:#f1e4ff}.one1[data-v-50f2a66a]{background:#4d7cfe}.two1[data-v-50f2a66a]{background:#ffab2b}.three1[data-v-50f2a66a]{background:#6dd230}.four1[data-v-50f2a66a]{background:#ff85c0}.five1[data-v-50f2a66a]{background:#b37feb}.card_box[data-v-50f2a66a]{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px}.card_box .card_box_cir[data-v-50f2a66a]{width:60px;height:60px;overflow:hidden;margin-right:20px}.card_box .card_box_cir .card_box_cir1[data-v-50f2a66a],.card_box .card_box_cir[data-v-50f2a66a]{border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.card_box .card_box_cir .card_box_cir1[data-v-50f2a66a]{width:48px;height:48px}.card_box .card_box_txt .sp1[data-v-50f2a66a]{display:block;color:#252631;font-size:24px}.card_box .card_box_txt .sp2[data-v-50f2a66a]{display:block;color:#98a9bc;font-size:12px}.article-manager[data-v-16a342c6]{margin-top:3px}.tabBox_img[data-v-16a342c6]{width:36px;height:36px;border-radius:4px;cursor:pointer}.tabBox_img img[data-v-16a342c6]{width:100%;height:100%}

View File

@ -1 +1 @@
.df-cc[data-v-31821268]{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.df-cc[data-v-31821268],.steps-item[data-v-31821268]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.steps-item[data-v-31821268]{width:-webkit-max-content;width:-moz-max-content;width:max-content}.steps-item .dot[data-v-31821268]{width:28px;height:28px;color:#c0c4cc;border:1px solid #c0c4cc;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:8px}.steps-item .title[data-v-31821268]{font-size:16px;font-weight:400;color:#909399;line-height:16px;white-space:nowrap}.steps-item .line[data-v-31821268]{height:1px;margin:0 20px;background:#ddd}.steps-item .wd160[data-v-31821268]{width:160px}.steps-item .wd120[data-v-31821268]{width:120px}.steps-item .wd100[data-v-31821268]{width:100px}.steps-item.active .title[data-v-31821268]{font-size:16px;font-weight:500;color:#303133;line-height:16px}.steps-item.active .dot[data-v-31821268]{width:28px;height:28px;background:var(--prev-color-primary);border:1px solid var(--prev-color-primary);color:#fff}.grey[data-v-35162228]{color:#999}.maxW[data-v-35162228] .ivu-select-dropdown{max-width:600px}.ivu-table-wrapper[data-v-35162228]{border-left:1px solid #dcdee2;border-top:1px solid #dcdee2}.tabBox_img[data-v-35162228]{width:50px;height:50px}.tabBox_img img[data-v-35162228]{width:100%;height:100%}.priceBox[data-v-35162228]{width:100%}.form .picBox[data-v-35162228],.form .pictrue[data-v-35162228]{display:inline-block;cursor:pointer}.form .pictrue[data-v-35162228]{width:60px;height:60px;border:1px dotted rgba(0,0,0,.1);margin-right:15px;position:relative}.form .pictrue img[data-v-35162228]{width:100%;height:100%}.form .pictrue .btndel[data-v-35162228]{position:absolute;z-index:9;width:20px!important;height:20px!important;left:46px;top:-4px}.form .upLoad[data-v-35162228]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02);cursor:pointer}.form .col[data-v-35162228]{color:#2d8cf0;cursor:pointer}
.df-cc[data-v-31821268]{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.df-cc[data-v-31821268],.steps-item[data-v-31821268]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.steps-item[data-v-31821268]{width:-webkit-max-content;width:-moz-max-content;width:max-content}.steps-item .dot[data-v-31821268]{width:28px;height:28px;color:#c0c4cc;border:1px solid #c0c4cc;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:8px}.steps-item .title[data-v-31821268]{font-size:16px;font-weight:400;color:#909399;line-height:16px;white-space:nowrap}.steps-item .line[data-v-31821268]{height:1px;margin:0 20px;background:#ddd}.steps-item .wd160[data-v-31821268]{width:160px}.steps-item .wd120[data-v-31821268]{width:120px}.steps-item .wd100[data-v-31821268]{width:100px}.steps-item.active .title[data-v-31821268]{font-size:16px;font-weight:500;color:#303133;line-height:16px}.steps-item.active .dot[data-v-31821268]{width:28px;height:28px;background:var(--prev-color-primary);border:1px solid var(--prev-color-primary);color:#fff}.grey[data-v-612103c6]{color:#999}.maxW[data-v-612103c6] .ivu-select-dropdown{max-width:600px}.ivu-table-wrapper[data-v-612103c6]{border-left:1px solid #dcdee2;border-top:1px solid #dcdee2}.tabBox_img[data-v-612103c6]{width:50px;height:50px}.tabBox_img img[data-v-612103c6]{width:100%;height:100%}.priceBox[data-v-612103c6]{width:100%}.form .picBox[data-v-612103c6],.form .pictrue[data-v-612103c6]{display:inline-block;cursor:pointer}.form .pictrue[data-v-612103c6]{width:60px;height:60px;border:1px dotted rgba(0,0,0,.1);margin-right:15px;position:relative}.form .pictrue img[data-v-612103c6]{width:100%;height:100%}.form .pictrue .btndel[data-v-612103c6]{position:absolute;z-index:9;width:20px!important;height:20px!important;left:46px;top:-4px}.form .upLoad[data-v-612103c6]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02);cursor:pointer}.form .col[data-v-612103c6]{color:#2d8cf0;cursor:pointer}

View File

@ -0,0 +1 @@
.picBox[data-v-494d3bec]{display:inline-block;cursor:pointer}.picBox .upLoad[data-v-494d3bec]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02)}.picBox .pictrue[data-v-494d3bec]{width:60px;height:60px;border:1px dotted rgba(0,0,0,.1);margin-right:10px}.picBox .pictrue img[data-v-494d3bec]{width:100%;height:100%}.picBox .iconfont[data-v-494d3bec]{color:#898989}.mapBox[data-v-494d3bec] .ivu-modal-body{height:640px!important}

View File

@ -0,0 +1 @@
.showOn[data-v-52237a78]{color:#2d8cf0;background:#f0faff;z-index:2}[data-v-52237a78] .ivu-menu-vertical .ivu-menu-item-group-title,[data-v-52237a78] .ivu-menu-vertical.ivu-menu-light:after{display:none}.left-wrapper[data-v-52237a78]{height:920px;background:#fff;border-right:1px solid #f2f2f2}.menu-item[data-v-52237a78]{z-index:50;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;word-break:break-all}.menu-item .icon-box[data-v-52237a78]{z-index:3;position:absolute;right:20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:none}.menu-item:hover .icon-box[data-v-52237a78]{display:block}.menu-item .right-menu[data-v-52237a78]{z-index:10;position:absolute;right:-106px;top:-11px;width:auto;min-width:121px}

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
.label-wrapper .list[data-v-37eb90ed]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.label-wrapper .list .label-item[data-v-37eb90ed]{margin:10px 8px 10px 0;padding:3px 8px;background:#eee;color:#333;border-radius:2px;cursor:pointer;font-size:12px}.label-wrapper .list .label-item.on[data-v-37eb90ed]{color:#fff;background:var(--prev-color-primary)}.label-wrapper .footer[data-v-37eb90ed]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-top:40px}.label-wrapper .footer button[data-v-37eb90ed]{margin-left:10px}.btn[data-v-37eb90ed]{width:60px;height:24px}.title[data-v-37eb90ed]{font-size:13px}.list-box[data-v-37eb90ed]{overflow-y:auto;overflow-x:hidden;max-height:240px}.label-box[data-v-37eb90ed]{margin-bottom:10px}.customer[data-v-2f15f824]{height:100%;background-color:#fff}.tabBox_img[data-v-2f15f824]{width:36px;height:36px;border-radius:4px;cursor:pointer}.tabBox_img img[data-v-2f15f824]{width:100%;height:100%}.modelBox .ivu-table-header[data-v-2f15f824],.modelBox[data-v-2f15f824]{width:100%!important}.trees-coadd[data-v-2f15f824]{width:100%;height:385px}.trees-coadd .scollhide[data-v-2f15f824]{width:100%;height:100%;overflow-x:hidden;overflow-y:scroll}.scollhide[data-v-2f15f824]::-webkit-scrollbar{display:none}.footer[data-v-2f15f824]{margin:15px 0;padding-right:20px}[data-v-2f15f824] .el-form--inline .el-form-item{margin-bottom:0}.content_width[data-v-42114b4c]{width:460px}.info[data-v-42114b4c]{color:#888;font-size:12px}.ivu-row[data-v-42114b4c]{border:1px solid #f2f2f2}.ivu-form-item[data-v-42114b4c]{padding:10px 0;max-width:1100px}.ivu-form[data-v-42114b4c] .ivu-form-item-label{font-weight:700;font-size:14px!important}.ivu-input-wrapper[data-v-42114b4c]{width:320px}.ivu-radio-wrapper[data-v-42114b4c]{margin-right:30px;font-size:14px!important}.ivu-radio-wrapper[data-v-42114b4c] .ivu-radio{margin-right:10px}.ivu-input-number[data-v-42114b4c]{width:160px}.ivu-date-picker[data-v-42114b4c]{width:320px}.ivu-icon-ios-camera-outline[data-v-42114b4c]{background-color:rgba(0,0,0,.02);line-height:58px}.ivu-icon-ios-camera-outline[data-v-42114b4c],.upload-list[data-v-42114b4c]{width:58px;height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;cursor:pointer;vertical-align:middle}.upload-list[data-v-42114b4c]{margin-right:15px;display:inline-block;position:relative}.upload-list img[data-v-42114b4c]{display:block;width:100%;height:100%}.ivu-icon-ios-close-circle[data-v-42114b4c]{position:absolute;top:0;right:0;-webkit-transform:translate(50%,-50%);transform:translate(50%,-50%)}.modelBox[data-v-42114b4c] .ivu-modal-body{padding:0 16px 16px 16px!important}.header-save[data-v-42114b4c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.trip[data-v-42114b4c]{color:#ccc}.submit[data-v-42114b4c]{margin:30px 0 30px 50px}textarea[data-v-42114b4c]{padding:0 5px;border-radius:3px;border-color:#c5c8ce;outline-color:#2d8cf0;font-size:14px}.picBox[data-v-42114b4c]{display:inline-block;cursor:pointer}.picBox .upLoad[data-v-42114b4c]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02)}.picBox .pictrue[data-v-42114b4c]{width:60px;height:60px;border:1px dotted rgba(0,0,0,.1);margin-right:10px}.picBox .pictrue img[data-v-42114b4c]{width:100%;height:100%}.picBox .iconfont[data-v-42114b4c]{color:#898989}.addfont[data-v-42114b4c]{display:inline-block;font-size:13px;font-weight:400;color:var(--prev-color-primary);margin-left:14px;cursor:pointer;margin-left:10px}.iconxiayi[data-v-42114b4c]{font-size:14px}.ivu-page-header-title[data-v-42114b4c]{padding-bottom:0}.news-box[data-v-42114b4c]{width:200px;background-color:#f2f2f2;padding:10px;border-radius:10px;margin-top:20px;position:relative}.news-box .news_pic[data-v-42114b4c]{width:100%;height:150px}.news-box .del_icon[data-v-42114b4c]{position:absolute;right:-8px;top:-8px;cursor:pointer}.labelInput[data-v-42114b4c]{border:1px solid #dcdee2;width:460px;padding:0 15px;border-radius:5px;min-height:30px;cursor:pointer}.labelInput .span[data-v-42114b4c]{color:#c5c8ce}.labelInput .ivu-icon-ios-arrow-down[data-v-42114b4c]{font-size:14px;color:#808695}

View File

@ -0,0 +1 @@
.customer[data-v-1ce641b4]{height:100%;background-color:#fff}.tabBox_img[data-v-1ce641b4]{width:36px;height:36px;border-radius:4px;cursor:pointer}.tabBox_img img[data-v-1ce641b4]{width:100%;height:100%}.modelBox .ivu-table-header[data-v-1ce641b4],.modelBox[data-v-1ce641b4]{width:100%!important}.trees-coadd[data-v-1ce641b4]{width:100%;height:385px}.trees-coadd .scollhide[data-v-1ce641b4]{width:100%;height:100%;overflow-x:hidden;overflow-y:scroll}.scollhide[data-v-1ce641b4]::-webkit-scrollbar{display:none}.footer[data-v-1ce641b4]{margin:15px 0;padding-right:20px}[data-v-1ce641b4] .el-form--inline .el-form-item{margin-bottom:0}

View File

@ -1 +1 @@
.label-wrapper .list[data-v-34379f5b]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.label-wrapper .list .label-item[data-v-34379f5b]{margin:10px 8px 10px 0;padding:3px 8px;background:#eee;color:#333;border-radius:2px;cursor:pointer;font-size:12px}.label-wrapper .list .label-item.on[data-v-34379f5b]{color:#fff;background:var(--prev-color-primary)}.label-wrapper .footer[data-v-34379f5b]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-top:40px}.label-wrapper .footer button[data-v-34379f5b]{margin-left:10px}.label-box[data-v-34379f5b]{margin-bottom:10px}.btn[data-v-34379f5b]{width:60px;height:24px}.title[data-v-34379f5b]{font-size:13px}.nonefont[data-v-34379f5b]{text-align:center;padding-top:20px}.pictrueBox[data-v-661be351]{display:inline-block}.pictrue[data-v-661be351]{width:60px;height:60px;border:1px dotted rgba(0,0,0,.1);margin-right:15px;display:inline-block;position:relative;cursor:pointer}.pictrue img[data-v-661be351]{width:100%;height:100%}.pictrue .btndel[data-v-661be351]{position:absolute;z-index:1;width:20px!important;height:20px!important;left:46px;top:-4px}.upload-list[data-v-661be351]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02);cursor:pointer;position:relative}.upload-list .el-icon-error[data-v-661be351]{position:absolute;right:-8px;top:-8px}.upload-list img[data-v-661be351]{display:block;width:100%;height:100%}.upLoad[data-v-661be351]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02);cursor:pointer}.ivu-icon-ios-close-circle[data-v-661be351]{position:absolute;top:0;right:0;-webkit-transform:translate(50%,-50%);transform:translate(50%,-50%)}.grey[data-v-661be351]{color:#999}.content_width[data-v-2bd7abff]{width:460px}[data-v-2bd7abff] .el-tabs__item{height:54px!important;line-height:54px!important}.custom-label[data-v-2bd7abff]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;line-height:1.5}.grey[data-v-2bd7abff]{color:#999}.maxW[data-v-2bd7abff] .ivu-select-dropdown{max-width:600px}.ivu-table-wrapper[data-v-2bd7abff]{border-left:1px solid #dcdee2;border-top:1px solid #dcdee2}.tabBox_img[data-v-2bd7abff]{width:50px;height:50px}.tabBox_img img[data-v-2bd7abff]{width:100%;height:100%}.priceBox[data-v-2bd7abff]{width:100%}.form .picBox[data-v-2bd7abff],.form .pictrue[data-v-2bd7abff]{display:inline-block;cursor:pointer}.form .pictrue[data-v-2bd7abff]{width:58px;height:58px;border:1px dotted rgba(0,0,0,.1);margin-right:0;position:relative}.form .pictrue img[data-v-2bd7abff]{width:100%;height:100%}.form .pictrue .btndel[data-v-2bd7abff]{position:absolute;z-index:9;font-size:20px;left:46px;top:-4px}.form .upLoad[data-v-2bd7abff]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02);cursor:pointer}.labelInput[data-v-2bd7abff]{border:1px solid #dcdee2;padding:0 15px;width:460px;border-radius:5px;min-height:30px;cursor:pointer}.labelInput .span[data-v-2bd7abff]{font-size:12px;color:#c5c8ce}.labelInput .ivu-icon-ios-arrow-down[data-v-2bd7abff]{font-size:14px;color:#808695}
.label-wrapper .list[data-v-34379f5b]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.label-wrapper .list .label-item[data-v-34379f5b]{margin:10px 8px 10px 0;padding:3px 8px;background:#eee;color:#333;border-radius:2px;cursor:pointer;font-size:12px}.label-wrapper .list .label-item.on[data-v-34379f5b]{color:#fff;background:var(--prev-color-primary)}.label-wrapper .footer[data-v-34379f5b]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-top:40px}.label-wrapper .footer button[data-v-34379f5b]{margin-left:10px}.label-box[data-v-34379f5b]{margin-bottom:10px}.btn[data-v-34379f5b]{width:60px;height:24px}.title[data-v-34379f5b]{font-size:13px}.nonefont[data-v-34379f5b]{text-align:center;padding-top:20px}.pictrueBox[data-v-661be351]{display:inline-block}.pictrue[data-v-661be351]{width:60px;height:60px;border:1px dotted rgba(0,0,0,.1);margin-right:15px;display:inline-block;position:relative;cursor:pointer}.pictrue img[data-v-661be351]{width:100%;height:100%}.pictrue .btndel[data-v-661be351]{position:absolute;z-index:1;width:20px!important;height:20px!important;left:46px;top:-4px}.upload-list[data-v-661be351]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02);cursor:pointer;position:relative}.upload-list .el-icon-error[data-v-661be351]{position:absolute;right:-8px;top:-8px}.upload-list img[data-v-661be351]{display:block;width:100%;height:100%}.upLoad[data-v-661be351]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02);cursor:pointer}.ivu-icon-ios-close-circle[data-v-661be351]{position:absolute;top:0;right:0;-webkit-transform:translate(50%,-50%);transform:translate(50%,-50%)}.grey[data-v-661be351]{color:#999}.content_width[data-v-4ac704aa]{width:460px}[data-v-4ac704aa] .el-tabs__item{height:54px!important;line-height:54px!important}.custom-label[data-v-4ac704aa]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;line-height:1.5}.grey[data-v-4ac704aa]{color:#999}.maxW[data-v-4ac704aa].ivu-select-dropdown{max-width:600px}.ivu-table-wrapper[data-v-4ac704aa]{border-left:1px solid #dcdee2;border-top:1px solid #dcdee2}.tabBox_img[data-v-4ac704aa]{width:50px;height:50px}.tabBox_img img[data-v-4ac704aa]{width:100%;height:100%}.priceBox[data-v-4ac704aa]{width:100%}.form .picBox[data-v-4ac704aa],.form .pictrue[data-v-4ac704aa]{display:inline-block;cursor:pointer}.form .pictrue[data-v-4ac704aa]{width:58px;height:58px;border:1px dotted rgba(0,0,0,.1);margin-right:0;position:relative}.form .pictrue img[data-v-4ac704aa]{width:100%;height:100%}.form .pictrue .btndel[data-v-4ac704aa]{position:absolute;z-index:9;font-size:20px;left:46px;top:-4px}.form .upLoad[data-v-4ac704aa]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02);cursor:pointer}.labelInput[data-v-4ac704aa]{border:1px solid #dcdee2;padding:0 15px;width:460px;border-radius:5px;min-height:30px;cursor:pointer}.labelInput .span[data-v-4ac704aa]{font-size:12px;color:#c5c8ce}.labelInput .ivu-icon-ios-arrow-down[data-v-4ac704aa]{font-size:14px;color:#808695}

View File

@ -1 +0,0 @@
.radio[data-v-58fdaf03]{margin-bottom:14px}.radio[data-v-58fdaf03] .name{width:125px;text-align:right;padding-right:12px}

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
.ivu-mt .type .item[data-v-022c298e]{margin:3px 0}.tabform[data-v-022c298e]{margin-bottom:10px}.Refresh[data-v-022c298e]{font-size:12px;color:var(--prev-color-primary);cursor:pointer}.ivu-form-item[data-v-022c298e]{margin-bottom:10px}.status[data-v-022c298e] .item~.item{margin-left:6px}.status[data-v-022c298e] .statusVal{margin-bottom:7px}.type[data-v-022c298e]{padding:3px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.tabBox_img[data-v-022c298e]{width:36px;height:36px;border-radius:4px;cursor:pointer}.tabBox_img img[data-v-022c298e]{width:100%;height:100%}

View File

@ -1 +0,0 @@
.maxInpt[data-v-45e913b4]{max-width:500px;margin-left:auto;margin-right:auto}.index_from[data-v-45e913b4]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.trip[data-v-45e913b4]{width:580px;text-align:left;color:#aaa}.page-account-container[data-v-45e913b4]{text-align:center;padding:200px 0}.page-account-top[data-v-45e913b4]{margin-bottom:50px}.page-account-top-tit[data-v-45e913b4]{font-size:30px;color:var(--prev-color-primary);font-weight:500}.page-account-other[data-v-45e913b4]{text-align:center;color:var(--prev-color-primary);font-size:12px}.page-account-other span[data-v-45e913b4]{cursor:pointe}[data-v-45e913b4] .btn{font-size:15px!important}

View File

@ -1 +1 @@
.card_box_cir1[data-v-0eb9e1a0] .iconfont{font-size:26px;color:#fff}.one[data-v-0eb9e1a0]{background:#e4ecff}.two[data-v-0eb9e1a0]{background:#fff3e0}.three[data-v-0eb9e1a0]{background:#eaf9e1}.four[data-v-0eb9e1a0]{background:#ffeaf4}.five[data-v-0eb9e1a0]{background:#f1e4ff}.one1[data-v-0eb9e1a0]{background:#4d7cfe}.two1[data-v-0eb9e1a0]{background:#ffab2b}.three1[data-v-0eb9e1a0]{background:#6dd230}.four1[data-v-0eb9e1a0]{background:#ff85c0}.five1[data-v-0eb9e1a0]{background:#b37feb}.card_box[data-v-0eb9e1a0]{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px}.card_box .card_box_cir[data-v-0eb9e1a0]{width:60px;height:60px;overflow:hidden;margin-right:20px}.card_box .card_box_cir .card_box_cir1[data-v-0eb9e1a0],.card_box .card_box_cir[data-v-0eb9e1a0]{border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.card_box .card_box_cir .card_box_cir1[data-v-0eb9e1a0]{width:48px;height:48px}.card_box .card_box_txt .sp1[data-v-0eb9e1a0]{display:block;color:#252631;font-size:24px}.card_box .card_box_txt .sp2[data-v-0eb9e1a0]{display:block;color:#98a9bc;font-size:12px}.cl[data-v-1901b596]{margin-right:20px}.code-row-bg[data-v-1901b596]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.code-row-bg .ivu-mt[data-v-1901b596]{width:100%}.ech-box[data-v-1901b596]{margin-top:10px}.change-style[data-v-1901b596]{border:1px solid #ccc;border-radius:15px;padding:0 10px;cursor:pointer}.percent-box[data-v-1901b596]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-right:10px}.line[data-v-1901b596]{width:100%;position:relative}.bg[data-v-1901b596]{position:absolute;width:100%;height:8px;border-radius:8px;background-color:#f2f2f2}.percent[data-v-1901b596]{position:absolute;border-radius:5px;height:8px;background-color:var(--prev-color-primary);z-index:9999}.num[data-v-1901b596]{white-space:nowrap;margin:0 10px;width:20px}
.card_box_cir1[data-v-50f2a66a] .iconfont{font-size:26px;color:#fff}.one[data-v-50f2a66a]{background:#e4ecff}.two[data-v-50f2a66a]{background:#fff3e0}.three[data-v-50f2a66a]{background:#eaf9e1}.four[data-v-50f2a66a]{background:#ffeaf4}.five[data-v-50f2a66a]{background:#f1e4ff}.one1[data-v-50f2a66a]{background:#4d7cfe}.two1[data-v-50f2a66a]{background:#ffab2b}.three1[data-v-50f2a66a]{background:#6dd230}.four1[data-v-50f2a66a]{background:#ff85c0}.five1[data-v-50f2a66a]{background:#b37feb}.card_box[data-v-50f2a66a]{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px}.card_box .card_box_cir[data-v-50f2a66a]{width:60px;height:60px;overflow:hidden;margin-right:20px}.card_box .card_box_cir .card_box_cir1[data-v-50f2a66a],.card_box .card_box_cir[data-v-50f2a66a]{border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.card_box .card_box_cir .card_box_cir1[data-v-50f2a66a]{width:48px;height:48px}.card_box .card_box_txt .sp1[data-v-50f2a66a]{display:block;color:#252631;font-size:24px}.card_box .card_box_txt .sp2[data-v-50f2a66a]{display:block;color:#98a9bc;font-size:12px}.cl[data-v-1901b596]{margin-right:20px}.code-row-bg[data-v-1901b596]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.code-row-bg .ivu-mt[data-v-1901b596]{width:100%}.ech-box[data-v-1901b596]{margin-top:10px}.change-style[data-v-1901b596]{border:1px solid #ccc;border-radius:15px;padding:0 10px;cursor:pointer}.percent-box[data-v-1901b596]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-right:10px}.line[data-v-1901b596]{width:100%;position:relative}.bg[data-v-1901b596]{position:absolute;width:100%;height:8px;border-radius:8px;background-color:#f2f2f2}.percent[data-v-1901b596]{position:absolute;border-radius:5px;height:8px;background-color:var(--prev-color-primary);z-index:9999}.num[data-v-1901b596]{white-space:nowrap;margin:0 10px;width:20px}

View File

@ -0,0 +1 @@
[data-v-5431626c]{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}[data-v-5431626c] .el-card__body{padding:60px 20px}.left[data-v-5431626c]{min-width:390px;min-height:550px;position:relative;padding-left:40px}.top[data-v-5431626c]{position:absolute;top:0}.bottom[data-v-5431626c],.textbot[data-v-5431626c]{position:absolute;bottom:0}.textbot[data-v-5431626c]{left:55px;width:100%}.active[data-v-5431626c]{border:1px solid var(--prev-color-primary)!important;color:var(--prev-color-primary)!important}.li[data-v-5431626c]{float:left;width:92px;height:48px;line-height:48px;border-left:1px solid #e7e7eb;background:#fafafa;text-align:center;cursor:pointer;color:#999;position:relative}.text[data-v-5431626c]{height:50px;white-space:nowrap;width:100%;overflow:hidden;text-overflow:ellipsis;padding:0 5px}.text[data-v-5431626c]:hover{color:#000}.add[data-v-5431626c]{position:absolute;bottom:65px;width:100%;line-height:40px;background:#fafafa}.arrow[data-v-5431626c]{position:absolute;bottom:-16px;left:36px;width:0;height:0;font-size:0;border:8px solid;border-color:#fafafa #f4f5f9 #f4f5f9 #f4f5f9}.tianjia[data-v-5431626c]{position:absolute;bottom:107px;width:100%;line-height:48px;background:#fafafa}.tianjia[data-v-5431626c] :first-child{border:none}.addadd[data-v-5431626c]{width:100%;line-height:40px;border-top:1px solid #f0f0f0;background:#fafafa;height:40px}.right[data-v-5431626c]{background:#fff;min-height:400px}.spwidth[data-v-5431626c]{width:100%}.userAlert[data-v-5431626c]{margin-top:16px!important}

View File

@ -0,0 +1 @@
.showOn[data-v-9c838424]{color:#2d8cf0;background:#f0faff;z-index:2}.tabBox_img[data-v-9c838424]{width:36px;height:36px;border-radius:4px;cursor:pointer}.tabBox_img img[data-v-9c838424]{width:100%;height:100%}.modelBox .ivu-table-header[data-v-9c838424],.modelBox[data-v-9c838424]{width:100%!important}.label-name[data-v-9c838424]{margin:2px 2px}.trees-coadd[data-v-9c838424]{width:100%;height:385px}.trees-coadd .scollhide[data-v-9c838424]{width:100%;height:100%;overflow-x:hidden;overflow-y:scroll}.scollhide[data-v-9c838424]::-webkit-scrollbar{display:none}[data-v-9c838424] .ivu-menu-vertical .ivu-menu-item-group-title,[data-v-9c838424] .ivu-menu-vertical.ivu-menu-light:after{display:none}.left-wrapper[data-v-9c838424]{height:904px;background:#fff;border-right:1px solid #f2f2f2}.menu-item[data-v-9c838424]{z-index:50;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;word-break:break-all}.menu-item .icon-box[data-v-9c838424]{z-index:3;position:absolute;right:20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:none}.menu-item:hover .icon-box[data-v-9c838424]{display:block}.menu-item .right-menu[data-v-9c838424]{z-index:10;position:absolute;right:-106px;top:-11px;width:auto;min-width:121px}

Some files were not shown because too many files have changed in this diff Show More