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

This commit is contained in:
From-wh 2023-03-31 10:24:20 +08:00
commit 50f9d3c47b
23 changed files with 122 additions and 77 deletions

View File

@ -72,7 +72,8 @@ class ExportExcel extends AuthController
['label_id', ''],
['now_money', 'normal'],
['field_key', ''],
['isMember', '']
['isMember', ''],
['ids', []]
]);
return app('json')->success($this->service->exportUserList($where));
}

View File

@ -182,7 +182,11 @@ class StoreCombination extends AuthController
/**
* 拼团人列表
* @param $id
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function order_pink($id)
{
@ -207,12 +211,20 @@ class StoreCombination extends AuthController
* 活动参与人
* @param $id
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function combinationStatisticsList($id)
{
$where = $this->request->getMore([
['real_name', '', '', 'keyword'],
['status', '']
]);
$where['cid'] = $id;
/** @var StorePinkServices $storePinkServices */
$storePinkServices = app()->make(StorePinkServices::class);
$list = $storePinkServices->systemPage(['cid' => $id]);
$list = $storePinkServices->systemPage($where);
return app('json')->success($list);
}

View File

@ -37,7 +37,11 @@ class UserLabel extends AuthController
/**
* 标签列表
* @param int $label_cate
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function index($label_cate = 0)
{
@ -60,8 +64,10 @@ class UserLabel extends AuthController
/**
* 保存标签表单数据
* @param int $id
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function save()
{

View File

@ -238,7 +238,7 @@ class StoreOrderController
$start = $middle;
}
$space = bcsub($stop, $start, 0);//间隔时间段
$front = bcsub($start, $space, 0);//第一个时间段
$front = bcsub($start, $space, 0) - 1;//第一个时间段
/** @var StoreOrderServices $orderService */
$orderService = app()->make(StoreOrderServices::class);
$order_where = [
@ -246,10 +246,11 @@ class StoreOrderController
'paid' => 1,
'refund_status' => [0, 3],
'is_del' => 0,
'is_system_del' => 0];
'is_system_del' => 0
];
if ($type == 1) {//销售额
$frontPrice = $orderService->sum($order_where + ['time' => [$front, $start]], 'pay_price', true);
$frontPrice = $orderService->sum($order_where + ['time' => [$front, $start - 1]], 'pay_price', true);
$afterPrice = $orderService->sum($order_where + ['time' => [$start, $stop]], 'pay_price', true);
$chartInfo = $orderService->chartTimePrice($start, $stop);
$data['chart'] = $chartInfo;//营业额图表数据
@ -262,7 +263,7 @@ class StoreOrderController
$data['increase_time'] = abs($increase); //同比上个时间区间增长营业额
$data['increase_time_status'] = $increase >= 0 ? 1 : 2; //同比上个时间区间增长营业额增长 1 减少 2
} else {//订单数
$frontNumber = $orderService->count($order_where + ['time' => [$front, $start]]);
$frontNumber = $orderService->count($order_where + ['time' => [$front, $start - 1]]);
$afterNumber = $orderService->count($order_where + ['time' => [$start, $stop]]);
$chartInfo = $orderService->chartTimeNumber($start, $stop);
$data['chart'] = $chartInfo;//订单数图表数据

View File

@ -56,6 +56,8 @@ class StorePinkDao extends BaseDao
{
return $this->search($where)->when($where['k_id'] != 0, function ($query) use ($where) {
$query->whereOr('id', $where['k_id']);
})->when(isset($where['keyword']) && $where['keyword'] != '', function ($query) use ($where) {
$query->where('uid|nickname', 'like', '%' . $where['keyword'] . '%');
})->with('getProduct')->when($page != 0, function ($query) use ($page, $limit) {
$query->page($page, $limit);
})->order('add_time desc')->select()->toArray();

View File

@ -967,9 +967,9 @@ class StoreOrderDao extends BaseDao
*/
public function combinationStatisticsOrder($id, $where, $page = 0, $limit = 0)
{
return $this->search($where)->where('combination_id', $id)
return $this->search($where)->where('combination_id', $id)->where('paid', 1)->whereIn('refund_type', [0, 3])->where('is_del', 0)
->when($page && $limit, function ($query) use ($page, $limit) {
$query->page($page, $limit);
})->field(['order_id', 'real_name', 'status', 'pay_price', 'total_num', 'add_time', 'pay_time', 'paid'])->select()->toArray();
})->field(['uid', 'order_id', 'real_name', 'status', 'pay_price', 'total_num', 'add_time', 'pay_time', 'paid'])->order('add_time desc')->select()->toArray();
}
}

View File

@ -244,6 +244,10 @@ class UserWechatUserDao extends BaseDao
if (isset($where['is_del'])) {
$model->where($userAlias . 'is_del', $where['is_del']);
}
if (isset($where['ids']) && count($where['ids'])) {
$model->whereIn($userAlias . 'uid', $where['ids']);
}
return $field ? $model->field($field) : $model;
}

View File

@ -643,8 +643,8 @@ class StoreCombinationServices extends BaseServices
$spread_count = $pinkServices->getDistinctCount([['cid', '=', $id], ['k_id', '>', 0]], 'uid', false);
$start_count = $pinkServices->count(['cid' => $id, 'k_id' => 0]);
$success_count = $pinkServices->count(['cid' => $id, 'k_id' => 0, 'status' => 2]);
$pay_price = $orderServices->sum(['combination_id' => $id, 'paid' => 1], 'pay_price', true);
$pay_count = $orderServices->getDistinctCount([['combination_id', '=', $id], ['paid', '=', 1]], 'uid', false);
$pay_price = $orderServices->sum([['combination_id', '=', $id], ['paid', '=', 1], ['refund_type', 'in', [0, 3]], ['is_del', '=', 0]], 'pay_price', false);
$pay_count = $orderServices->getDistinctCount([['combination_id', '=', $id], ['paid', '=', 1], ['refund_type', 'in', [0, 3]], ['is_del', '=', 0]], 'uid', false);
return compact('people_count', 'spread_count', 'start_count', 'success_count', 'pay_price', 'pay_count');
}

View File

@ -56,6 +56,9 @@ class StorePinkServices extends BaseServices
/**
* @param array $where
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function systemPage(array $where)
{

View File

@ -160,8 +160,7 @@ class StoreIntegralOrderServices extends BaseServices
if (!$addressId) {
throw new ApiException(410045);
}
if (!$addressInfo = $addressServices->getOne(['uid' => $uid, 'id' => $addressId, 'is_del' => 0]))
throw new ApiException(410046);
if (!$addressInfo = $addressServices->getOne(['uid' => $uid, 'id' => $addressId, 'is_del' => 0])) throw new ApiException(410046);
$addressInfo = $addressInfo->toArray();
$total_price = bcmul($productInfo['price'], $num, 2);
/** @var UserBillServices $userBillServices */
@ -226,7 +225,7 @@ class StoreIntegralOrderServices extends BaseServices
$res2 = false !== $userServices->bcDec($userInfo['uid'], 'integral', $priceIntegral, 'uid');
/** @var UserBillServices $userBillServices */
$userBillServices = app()->make(UserBillServices::class);
$res3 = $userBillServices->income('storeIntegral_use_integral', $uid, $priceIntegral, $userInfo['integral'], $orderId);
$res3 = $userBillServices->income('storeIntegral_use_integral', $uid, $priceIntegral, $userInfo['integral'] - $priceIntegral, $orderId);
$res2 = $res2 && false != $res3;
}
if (!$res2) {
@ -334,7 +333,7 @@ class StoreIntegralOrderServices extends BaseServices
/** @var StoreProductAttrValueServices $StoreProductAttrValueServices */
$StoreProductAttrValueServices = app()->make(StoreProductAttrValueServices::class);
$attrValue = $StoreProductAttrValueServices->uniqueByField($unique, 'product_id,suk,price,image,unique');
if(!$attrValue || !isset($attrValue['storeIntegral']) || !$attrValue['storeIntegral']){
if (!$attrValue || !isset($attrValue['storeIntegral']) || !$attrValue['storeIntegral']) {
throw new ApiException(410295);
}
$data = [];
@ -734,7 +733,7 @@ class StoreIntegralOrderServices extends BaseServices
if (!$remark) throw new AdminException(400106);
if (!$id) throw new AdminException(100100);
if (!$order = $this->dao->get($id)) {
throw new AdminException(100025);
throw new AdminException(100025);
}
$order->remark = $remark;

View File

@ -245,7 +245,7 @@ class StoreOrderRefundServices extends BaseServices
$this->storeOrderServices->update($splitOrderInfo['id'], [
'status' => -2,
'refund_status' => 2,
'refund_type' => $orderRefundInfo['refund_type'],
'refund_type' => 6,
'refund_express' => $orderRefundInfo['refund_express'],
'refund_express_name' => $orderRefundInfo['refund_express_name'],
'refund_reason_wap_img' => $orderRefundInfo['refund_img'],

View File

@ -548,7 +548,9 @@ a:link, a:visited, a:hover, a:active {
background-position: left top !important;
display: flex;
}
.wrapper-box .foot-box {
text-align: center !important;
}
.content {
display: none;
}

View File

@ -24,7 +24,7 @@
<div class="box">
<div class="box-item" v-for="(item, index) in goodsList" :key="index">
<img :src="item.image" alt="" />
<Icon type="ios-close-circle" size="20" @click="bindDelete(index,item)" />
<Icon type="ios-close-circle" size="20" @click="bindDelete(index, item)" />
</div>
<div class="upload-box" @click="selectGoods">
<Icon type="ios-camera-outline" size="36" />
@ -155,7 +155,7 @@ export default {
this.selectIds = this.goodsList.map((i) => {
return i.product_id;
});
console.log(this.selectIds,this.goodsList)
console.log(this.selectIds, this.goodsList);
},
// 生成直播商品
liveGoods() {
@ -182,17 +182,21 @@ export default {
}, 300);
});
},
bindDelete(index,item) {
bindDelete(index, item) {
this.goodsList.splice(index, 1);
if (this.tabList.length) {
let i = this.tabList.findIndex((e) => e.id == item.product_id);
this.tabList.splice(i, 1);
let i = this.tabList.findIndex((e) => e.id == item.product_id);
this.tabList.splice(i, 1);
if (!this.goodsList.length) {
this.isShowBox = false;
}
},
del(row, index) {
this.tabList.splice(index, 1);
let i = this.goodsList.findIndex((e) => e.product_id == row.id);
this.goodsList.splice(i, 1);
if (!this.tabList.length) {
this.isShowBox = false;
}
},
// 提交
bindSub() {

View File

@ -66,7 +66,7 @@
</Col>
<Col span="24">
<div style="display: flex">
<FormItem label="分享图:">
<FormItem label="分享图:" prop="name">
<div @click="modalPicTap(1)" class="box">
<img :src="formValidate.share_img" alt="" v-if="formValidate.share_img" />
<div class="upload-box" v-else>
@ -117,7 +117,7 @@
/>
</FormItem>
</Col>
<Col span="24">
<!-- <Col span="24">
<FormItem label="显示样式:">
<RadioGroup v-model="formValidate.screen_type">
<Radio :label="item.label" v-for="(item, index) in screen_type" :key="index">
@ -125,7 +125,7 @@
</Radio>
</RadioGroup>
</FormItem>
</Col>
</Col> -->
<Col span="24">
<FormItem label="直播间类型:">
<RadioGroup v-model="formValidate.type">

View File

@ -42,7 +42,7 @@
search
enter-button
v-model="pagination.real_name"
placeholder="请输入用户姓名|手机号|UID"
:placeholder="type == 1 ? '请输入用户|订单号|UID' : '请输入用户姓名|UID'"
@on-search="searchList"
/>
</FormItem>
@ -292,7 +292,7 @@ export default {
},
{
title: '金额',
key: 'price',
key: 'total_price',
},
{
title: '订单状态',

View File

@ -214,7 +214,7 @@ export default {
minWidth: 120,
},
{
title: '变化前积分',
title: '变化后积分',
key: 'balance',
minWidth: 120,
},

View File

@ -1043,6 +1043,9 @@ export default {
});
this.userFrom.label_id = activeIds.join(',');
}
if (this.ids.length) {
this.userFrom.ids = this.ids;
}
this.userFrom.user_type = this.userFrom.user_type || '';
this.userFrom.status = this.userFrom.status || '';
this.userFrom.sex = this.userFrom.sex || '';
@ -1353,14 +1356,15 @@ img {
color: #808695;
}
}
.demo-drawer-footer{
width: 100%;
position: absolute;
bottom: 0;
left: 0;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
background: #fff;
}
.demo-drawer-footer {
width: 100%;
position: absolute;
bottom: 0;
left: 0;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
background: #fff;
}
</style>

View File

@ -1,7 +1,7 @@
<template>
<view style="background-color: var(--view-theme);padding-bottom: 50rpx;" :style="colorStyle">
<view class="bargain">
<!-- #ifndef APP-PLUS -->
<!-- #ifndef APP-PLUS || MP -->
<view class="iconfont icon-xiangzuo" v-if="retunTop" @tap="goBack" :style="'top:' + navH + 'px'"></view>
<!-- #endif -->
<view :style="'background-image: url('+(bargainUid != userInfo.uid ?picUrl.support:picUrl.barga)+');'"

View File

@ -22,14 +22,14 @@
<view class="item acea-row row-between-wrapper">
<view>{{$t(`发货方式`)}}</view>
<view class="mode acea-row row-middle row-right">
<view class="goods" :class="active === item.key ? 'on' : ''" v-for="(item, index) in types"
<view class="goods" :class="active === index ? 'on' : ''" v-for="(item, index) in types"
:key="index" @click="changeType(item, index)">
{{ item.title }}<span class="iconfont icon-xuanzhong2"></span>
</view>
</view>
</view>
<block v-if="logistics.length>0">
<view class="list" v-show="active === 1">
<view class="list" v-show="active === 0">
<view class="item acea-row row-between-wrapper" v-if="delivery.config_export_open == 1">
<view>{{$t(`发货类型`)}}</view>
<view class="mode acea-row row-middle row-right">
@ -101,7 +101,7 @@
</view>
</block>
<view class="list" v-show="active === 2">
<view class="list" v-show="active === 1">
<view class="item acea-row row-between-wrapper">
<view>{{$t(`送货人`)}}</view>
<view class="select-box" v-if="postPeople.length>0">
@ -113,7 +113,7 @@
</view>
</view>
</view>
<textarea v-show="active === 3" v-model="fictitious_content" class="textarea" @blur="bindTextAreaBlur"
<textarea v-show="active === 2" v-model="fictitious_content" class="textarea" @blur="bindTextAreaBlur"
:placeholder="$t(`备注`)" :maxlength="500" auto-height />
</view>
<view style="height:1.2rem;"></view>
@ -143,7 +143,11 @@
title: this.$t(`发货`),
key: 1
},
{
type: "send",
title: this.$t(`送货`),
key: 2
},
{
type: "fictitious",
title: this.$t(`无需物流`),
@ -160,7 +164,7 @@
},
],
curExpress: 1,
active: 1,
active: 0,
order_id: "",
delivery: [],
logistics: [],
@ -235,14 +239,7 @@
// 获取配送员列表
geTorderOrderDelivery() {
orderOrderDelivery().then(res => {
if (res.data.length) {
this.postPeople = res.data
this.types.push({
type: "send",
title: this.$t(`送货`),
key: 2
})
}
this.postPeople = res.data
})
},
// 配送员选择
@ -255,7 +252,7 @@
this.getLogistics(index || '');
},
changeType: function(item, index) {
this.active = item.key;
this.active = index;
this.delivery_type = item.key;
},
getIndex: function() {

View File

@ -3,7 +3,7 @@
<view class="header acea-row row-middle">
<view class="state">{{ $t(title) }}</view>
<view class="data">
<view class="order-num">{{$t(`订单号`)}}:{{ orderInfo.order_id }}</view>
<view class="order-num">{{$t(`订单`)}}:{{ orderInfo.order_id }}</view>
<view>
<span class="time">{{ orderInfo._add_time }}</span>
</view>
@ -44,7 +44,7 @@
</navigator>
</view>
<view class="public-total">
{{$t(`共`)}}{{ orderInfo.total_num }}{{$t(`件商品`)}}
{{$t(`共`)}}{{ orderInfo.total_num }}{{$t(`件商品,应支付`)}}
<span class="money">{{$t(`¥`)}}{{ orderInfo.pay_price }}</span> ( {{$t(`邮费`)}} {{$t(`¥`)}}{{
orderInfo.pay_postage
}}
@ -52,7 +52,7 @@
</view>
<view class="wrapper">
<view class="item acea-row row-between">
<view>{{$t(`订单号`)}}:</view>
<view>{{$t(`订单编号`)}}:</view>
<view class="conter acea-row row-middle row-right">
{{ orderInfo.order_id
}}
@ -90,25 +90,33 @@
</view>
</view>
<view class="wrapper">
<view class="item acea-row row-between">
<view>{{$t(`支付金额`)}}:</view>
<view class="conter">{{$t(`¥`)}}{{ orderInfo.total_price }}</view>
<view class='item acea-row row-between'>
<view>{{$t(`商品总价`)}}:</view>
<view class='conter'>
{{$t(`¥`)}}{{(parseFloat(orderInfo.total_price)+parseFloat(orderInfo.vip_true_price)).toFixed(2)}}
</view>
</view>
<view class='item acea-row row-between' v-if='orderInfo.coupon_id'>
<view class='item acea-row row-between' v-if="orderInfo.pay_postage > 0">
<view>{{$t(`配送运费`)}}:</view>
<view class='conter'>{{$t(`¥`)}}{{parseFloat(orderInfo.pay_postage).toFixed(2)}}</view>
</view>
<view v-if="orderInfo.levelPrice > 0" class='item acea-row row-between'>
<view>{{$t(`用户等级优惠`)}}:</view>
<view class='conter'>-{{$t(`¥`)}}{{parseFloat(orderInfo.levelPrice).toFixed(2)}}</view>
</view>
<view v-if="orderInfo.memberPrice > 0" class='item acea-row row-between'>
<view>{{$t(`付费会员优惠`)}}:</view>
<view class='conter'>-{{$t(`¥`)}}{{parseFloat(orderInfo.memberPrice).toFixed(2)}}</view>
</view>
<view class='item acea-row row-between' v-if='orderInfo.coupon_price > 0'>
<view>{{$t(`优惠券抵扣`)}}:</view>
<view class='conter'>-{{$t(`¥`)}}{{orderInfo.coupon_price}}</view>
<view class='conter'>-{{$t(`¥`)}}{{parseFloat(orderInfo.coupon_price).toFixed(2)}}</view>
</view>
<view class='item acea-row row-between' v-if="orderInfo.use_integral > 0">
<view>{{$t(`积分抵扣`)}}:</view>
<view class='conter'>-{{$t(`¥`)}}{{orderInfo.deduction_price}}</view>
</view>
<view class='item acea-row row-between' v-if="orderInfo.pay_postage > 0">
<view>{{$t(`运费`)}}:</view>
<view class='conter'>{{$t(`¥`)}}{{orderInfo.pay_postage}}</view>
</view>
<view class="actualPay acea-row row-right">
{{$t(`实际支付`)}}:<span class="money">{{$t(`¥`)}}{{ orderInfo.pay_price }}</span>
<view class='conter'>-{{$t(`¥`)}}{{parseFloat(orderInfo.deduction_price).toFixed(2)}}</view>
</view>
<view class='actualPay acea-row row-right'>{{$t(`实付款`)}}:<text class='money'>{{$t(`¥`)}}{{parseFloat(orderInfo.pay_price).toFixed(2)}}</text></view>
</view>
<view class="wrapper" v-if="
orderInfo.delivery_type != 'fictitious' && orderInfo._status._type === 2

View File

@ -9,7 +9,7 @@
<view class='text acea-row row-between'>
<view class='name line3'>{{productInfo.store_name}}</view>
<view class='money'>
<view>{{$t(`¥`)}}{{productInfo.price}}</view>
<view>{{$t(`¥`)}}{{productInfo.attrInfo.price}}</view>
<view class='num'>x{{cart_num}}</view>
</view>
</view>

View File

@ -122,7 +122,9 @@
title: this.$t(`领取成功`)
});
this.addressModel = false
this.where.page = 1
this.where.page = 1
this.loadend = false;
this.lotteryList = [];
this.getLotteryList()
}).catch(err => {
this.$util.Tips({

View File

@ -145,9 +145,9 @@
<view class='wrapper'>
<view class='item acea-row row-between'>
<view>{{$t(`支付金额`)}}:</view>
<view class='conter'>{{$t(`¥`)}}{{orderInfo.total_price}}</view>
<view class='conter'>{{$t(`¥`)}}{{orderInfo.pay_price}}</view>
</view>
<view class='item acea-row row-between' v-if='orderInfo.coupon_id'>
<!-- <view class='item acea-row row-between' v-if='orderInfo.coupon_id'>
<view>{{$t(`优惠券抵扣`)}}:</view>
<view class='conter'>-{{$t(`¥`)}}{{orderInfo.coupon_price}}</view>
</view>
@ -158,7 +158,7 @@
<view class='item acea-row row-between' v-if="orderInfo.pay_postage > 0">
<view>{{$t(`运费`)}}:</view>
<view class='conter'>{{$t(`¥`)}}{{orderInfo.pay_postage}}</view>
</view>
</view> -->
</view>
</view>
<!-- #ifndef MP -->