feat: #10000 更新

This commit is contained in:
赵世界 2023-05-19 21:19:49 +08:00
parent 0fe511bd6e
commit b343b14acd
8 changed files with 86 additions and 14 deletions

View File

@ -37,6 +37,7 @@ class KttOrderQuery extends Command
* Execute the console command. * Execute the console command.
* *
* @return mixed * @return mixed
* @throws \Exception
*/ */
public function handle() public function handle()
{ {

View File

@ -9,6 +9,11 @@ class BusinessOrderFilter extends Filters
return $this->builder->where('participate_no', trim($value)); return $this->builder->where('participate_no', trim($value));
} }
protected function supplyParticipateNo($value)
{
return $this->builder->where('supply_participate_no', trim($value));
}
protected function shopId($value) protected function shopId($value)
{ {
return $this->builder->where('shop_id', $value); return $this->builder->where('shop_id', $value);

View File

@ -6,6 +6,7 @@ use App\Events\StockUpdateEvent;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Resources\GoodsSkuResource; use App\Http\Resources\GoodsSkuResource;
use App\Imports\CombinationGoodsImport; use App\Imports\CombinationGoodsImport;
use App\Models\BusinessOrderItem;
use App\Models\CombinationGood; use App\Models\CombinationGood;
use App\Models\Goods; use App\Models\Goods;
use App\Models\GoodsSku; use App\Models\GoodsSku;
@ -20,7 +21,7 @@ class GoodsCombinationController extends Controller
public function index(Request $request) public function index(Request $request)
{ {
// ToDo // ToDo
// 可通过子商查找主商品 // 可通过子商查找主商品
$skus = GoodsSku::query() $skus = GoodsSku::query()
->with([ ->with([
'combinationGoods:id,goods_sku_id,item_id,item_num', 'combinationGoods:id,goods_sku_id,item_id,item_num',
@ -29,9 +30,41 @@ class GoodsCombinationController extends Controller
]) ])
->where('is_combination', 1) ->where('is_combination', 1)
->filter() ->filter()
->orderBy('stock', 'desc')
->paginate($request->get('per_page')); ->paginate($request->get('per_page'));
$fields = implode(',', [
'shop_id',
'external_sku_id',
'sum(goods_number) as number',
'sum(already_cancel_number) as cancel_number',
]);
foreach ($skus as &$item) { foreach ($skus as &$item) {
$items = []; $items = [];
$lastInventoryTime = date('Y-m-d 07:00:00');
$orderDetail = BusinessOrderItem::query()
->select(DB::raw($fields))
->with(['shop:id,name'])
->where('external_sku_id', $item['external_sku_id'])
->when($lastInventoryTime, function ($query) use ($lastInventoryTime) {
$query->where('created_at', '>', $lastInventoryTime);
})
->groupBy(['shop_id', 'external_sku_id'])
->get()
->toArray();
$addOrderGoodsNum = $reduceOrderGoodsNum = 0;
if ($orderDetail) {
$addOrderGoodsNum = array_sum(array_column($orderDetail, 'number'));
$reduceOrderGoodsNum = array_sum(array_column($orderDetail, 'cancel_number'));
}
$item['order_goods_num'] = $addOrderGoodsNum - $reduceOrderGoodsNum;
$item['order_detail'] = $orderDetail;
$number = BusinessOrderItem::query()
->where('external_sku_id', $item['external_sku_id'])
->sum('goods_number');
$cancelNumber = BusinessOrderItem::query()
->where('external_sku_id', $item['external_sku_id'])
->sum('already_cancel_number');
$item['total_orders_num'] = $number - $cancelNumber;
foreach ($item['combinationGoods'] as $combinationItem) { foreach ($item['combinationGoods'] as $combinationItem) {
$items[] = [ $items[] = [
'cost' => 0, 'cost' => 0,
@ -48,6 +81,9 @@ class GoodsCombinationController extends Controller
'title' => $combinationItem['goodsSkuItem']['goods']['title'] . $combinationItem['goodsSkuItem']['title'], 'title' => $combinationItem['goodsSkuItem']['goods']['title'] . $combinationItem['goodsSkuItem']['title'],
'updated_at' => $combinationItem['goodsSkuItem']['updated_at'], 'updated_at' => $combinationItem['goodsSkuItem']['updated_at'],
'yesterday_num' => $combinationItem['goodsSkuItem']['yesterday_num'], 'yesterday_num' => $combinationItem['goodsSkuItem']['yesterday_num'],
'order_goods_num' => '请在商品列表查看',
'order_detail' => [],
'total_orders_num' => '不显示',
]; ];
} }
$item['children'] = $items; $item['children'] = $items;

View File

@ -52,7 +52,7 @@ class GoodsSkusController extends Controller
$query->where('day', $day); $query->where('day', $day);
}]) }])
->where('is_combination', 0) ->where('is_combination', 0)
->orderBy('updated_at', 'desc') ->orderBy('stock', 'desc')
->paginate($request->get('per_page')); ->paginate($request->get('per_page'));
$fields = implode(',', [ $fields = implode(',', [
'shop_id', 'shop_id',

View File

@ -16,6 +16,7 @@ class BusinessOrder extends Model
'is_supplier', 'is_supplier',
'cancel_status', 'cancel_status',
'after_sales_status', 'after_sales_status',
'supply_participate_no',
]; ];
protected $fillable = [ protected $fillable = [

View File

@ -11,11 +11,11 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="handleChoose(1)">筛选</el-button> <el-button type="primary" @click="handleChoose(1)">筛选</el-button>
<el-upload ref="myUpload" action="/api/combination/goods" :multiple="false" name="combinationGoods" <el-upload ref="myUpload" action="/api/combination/goods" :multiple="false" name="combinationGoods"
:show-file-list="false" :on-success="uploadSuccess" :before-upload="beforeUpload" :show-file-list="false" :on-success="uploadSuccess" :before-upload="beforeUpload"
:on-error="uploadError" style="display:inline-block;margin: 0 10px 0 10px;"> :on-error="uploadError" style="display:inline-block;margin: 0 10px 0 10px;">
<el-button type="primary" plain>组合商品导入</el-button> <el-button type="primary" plain>组合商品导入</el-button>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
@ -44,7 +44,25 @@
</el-table-column> </el-table-column>
<el-table-column prop="num" label="组合数量"></el-table-column> <el-table-column prop="num" label="组合数量"></el-table-column>
<el-table-column prop="reference_price" label="售价"></el-table-column> <el-table-column prop="reference_price" label="售价"></el-table-column>
<el-table-column prop="stock" label="库存"></el-table-column> <el-table-column sortable label="今日7点以后订单">
<template slot-scope="scope">
<div>
<span>{{ scope.row.order_goods_num }}</span>
</div>
<el-popover placement="right-start" trigger="hover" v-if="scope.row.order_detail.length !== 0">
<div>
<span v-for="(j, index) in scope.row.order_detail" :key="index">
<div>{{ j.shop.name }}:{{ j.number }}</div>
</span>
</div>
<el-button class="btn11" type="text" slot="reference"><img src="../../css/img/眼睛.png"
alt="" />
</el-button>
</el-popover>
</template>
</el-table-column>
<el-table-column sortable prop="total_orders_num" label="累计订单"></el-table-column>
<el-table-column sortable prop="stock" label="库存"></el-table-column>
<el-table-column prop="status" label="状态"> </el-table-column> <el-table-column prop="status" label="状态"> </el-table-column>
<el-table-column label="操作" width="130"> <el-table-column label="操作" width="130">
<template slot-scope="scope"> <template slot-scope="scope">
@ -58,7 +76,7 @@
<!-- 分页功能 --> <!-- 分页功能 -->
<div class="page"> <div class="page">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page="current_page" :page-sizes="[15, 50, 100]" :page-size="per_page" :current-page="current_page" :page-sizes="[15, 50, 100, 150, 200]" :page-size="per_page"
layout="total, sizes, prev, pager, next, jumper" :total="Paginationdata.total"> layout="total, sizes, prev, pager, next, jumper" :total="Paginationdata.total">
</el-pagination> </el-pagination>
</div> </div>

View File

@ -224,11 +224,10 @@
<div v-if="stock"> <div v-if="stock">
<el-input v-model="scope.row.daily.inventory"></el-input> <el-input v-model="scope.row.daily.inventory"></el-input>
</div> </div>
<el-popover placement="right-start" trigger="hover" :content=" <el-popover placement="right-start" trigger="hover" :content="scope.row.daily.inventory_time
scope.row.daily.inventory_time
? scope.row.daily.inventory_time ? scope.row.daily.inventory_time
: '' : ''
"> ">
<div v-if="!stock" slot="reference"> <div v-if="!stock" slot="reference">
{{ scope.row.daily.inventory }} {{ scope.row.daily.inventory }}
</div> </div>
@ -257,7 +256,7 @@
<!-- 分页功能 --> <!-- 分页功能 -->
<div class="page"> <div class="page">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page="current_page" :page-sizes="[15, 50, 100]" :page-size="per_page" :current-page="current_page" :page-sizes="[15, 50, 100, 150, 200]" :page-size="per_page"
layout="total, sizes, prev, pager, next, jumper" :total="Paginationdata.total"> layout="total, sizes, prev, pager, next, jumper" :total="Paginationdata.total">
</el-pagination> </el-pagination>
</div> </div>

View File

@ -50,6 +50,13 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="帮卖团跟团号:">
<el-input v-model="form.participate_no" placeholder="帮卖团跟团号"></el-input>
</el-form-item>
<el-form-item label="自卖团跟团号:">
<el-input v-model="form.supply_participate_no" placeholder="自卖团跟团号"></el-input>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="handleChoose">筛选</el-button> <el-button type="primary" @click="handleChoose">筛选</el-button>
<el-button plain @click="handleReChoose">重置筛选</el-button> <el-button plain @click="handleReChoose">重置筛选</el-button>
@ -70,7 +77,8 @@
<el-table-column prop="is_supplier" label="订单类型"></el-table-column> <el-table-column prop="is_supplier" label="订单类型"></el-table-column>
<el-table-column prop="cancel_status" label="订单状态"></el-table-column> <el-table-column prop="cancel_status" label="订单状态"></el-table-column>
<el-table-column prop="after_sales_status" label="售后状态"></el-table-column> <el-table-column prop="after_sales_status" label="售后状态"></el-table-column>
<el-table-column prop="participate_no" label="跟团号"></el-table-column> <el-table-column prop="supply_participate_no" label="自卖团跟团号"></el-table-column>
<el-table-column prop="participate_no" label="帮卖团跟团号"></el-table-column>
<el-table-column label="商品信息"> <el-table-column label="商品信息">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-for="item in scope.row.items" :key="item.id"> <div v-for="item in scope.row.items" :key="item.id">
@ -134,6 +142,8 @@ export default {
is_supplier: "", is_supplier: "",
cancel_status: "", cancel_status: "",
after_sales_status: "", after_sales_status: "",
supply_participate_no: "",
participate_no: "",
}, },
dialogVisible: false, dialogVisible: false,
loading: true, loading: true,
@ -219,6 +229,8 @@ export default {
is_supplier: "", is_supplier: "",
cancel_status: "", cancel_status: "",
after_sales_status: "", after_sales_status: "",
supply_participate_no: "",
participate_no: "",
}; };
this.getPlatOrderList(); this.getPlatOrderList();
}, },