!173 优化更新

Merge pull request !173 from 赵世界/develop
This commit is contained in:
赵世界 2023-05-19 13:22:33 +00:00 committed by Gitee
commit 54db186860
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
31 changed files with 106 additions and 34 deletions

View File

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

View File

@ -9,6 +9,11 @@ class BusinessOrderFilter extends Filters
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)
{
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\Resources\GoodsSkuResource;
use App\Imports\CombinationGoodsImport;
use App\Models\BusinessOrderItem;
use App\Models\CombinationGood;
use App\Models\Goods;
use App\Models\GoodsSku;
@ -20,7 +21,7 @@ class GoodsCombinationController extends Controller
public function index(Request $request)
{
// ToDo
// 可通过子商查找主商品
// 可通过子商查找主商品
$skus = GoodsSku::query()
->with([
'combinationGoods:id,goods_sku_id,item_id,item_num',
@ -29,9 +30,41 @@ class GoodsCombinationController extends Controller
])
->where('is_combination', 1)
->filter()
->orderBy('stock', 'desc')
->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) {
$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) {
$items[] = [
'cost' => 0,
@ -48,6 +81,9 @@ class GoodsCombinationController extends Controller
'title' => $combinationItem['goodsSkuItem']['goods']['title'] . $combinationItem['goodsSkuItem']['title'],
'updated_at' => $combinationItem['goodsSkuItem']['updated_at'],
'yesterday_num' => $combinationItem['goodsSkuItem']['yesterday_num'],
'order_goods_num' => '请在商品列表查看',
'order_detail' => [],
'total_orders_num' => '不显示',
];
}
$item['children'] = $items;

View File

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

View File

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

View File

@ -0,0 +1 @@
.table[data-v-03040447]{margin-top:20px;position:relative}.btn[data-v-03040447]{float:right}[data-v-03040447] .cell{display:flex;align-items:center}.commodityimg[data-v-03040447]{width:59px;height:59px;background:hsla(0,0%,89%,.39);opacity:1;display:block;margin-right:12px}.Img[data-v-03040447]{width:100%;height:100%}.confirmbtn[data-v-03040447]{width:114px;height:44px;border-radius:3px;margin-top:21px;margin-bottom:8px}.import-right[data-v-03040447]{margin-top:30px}.import-right a[data-v-03040447]{text-decoration:none;color:#000}[data-v-03040447] .btn11{padding:0;width:14px;height:14px}[data-v-03040447] .btn11 img{width:100%;height:100%}.page[data-v-03040447]{margin-top:20px}

View File

@ -1 +0,0 @@
.table[data-v-78ea60ca]{margin-top:20px;position:relative}.btn[data-v-78ea60ca]{float:right}[data-v-78ea60ca] .cell{display:flex;align-items:center}.commodityimg[data-v-78ea60ca]{width:59px;height:59px;background:hsla(0,0%,89%,.39);opacity:1;display:block;margin-right:12px}.Img[data-v-78ea60ca]{width:100%;height:100%}[data-v-78ea60ca] .btn11{padding:0;width:14px;height:14px}[data-v-78ea60ca] .btn11 img{width:100%;height:100%}.page[data-v-78ea60ca]{margin-top:20px}

View File

@ -0,0 +1 @@
.table[data-v-5ba5084c]{margin-top:20px;position:relative}.btn[data-v-5ba5084c]{float:right}[data-v-5ba5084c] .cell{display:flex;align-items:center}.commodityimg[data-v-5ba5084c]{width:59px;height:59px;background:hsla(0,0%,89%,.39);opacity:1;display:block;margin-right:12px}.Img[data-v-5ba5084c]{width:100%;height:100%}[data-v-5ba5084c] .btn11{padding:0;width:14px;height:14px}[data-v-5ba5084c] .btn11 img{width:100%;height:100%}.page[data-v-5ba5084c]{margin-top:20px}

View File

@ -0,0 +1 @@
.block[data-v-b7f74846]{margin-top:20px}

View File

@ -1 +0,0 @@
.block[data-v-f275e28e]{margin-top:20px}

View File

@ -1 +0,0 @@
.table[data-v-e8253a8a]{margin-top:20px;position:relative}.btn[data-v-e8253a8a]{float:right}[data-v-e8253a8a] .cell{display:flex;align-items:center}.commodityimg[data-v-e8253a8a]{width:59px;height:59px;background:hsla(0,0%,89%,.39);opacity:1;display:block;margin-right:12px}.Img[data-v-e8253a8a]{width:100%;height:100%}.confirmbtn[data-v-e8253a8a]{width:114px;height:44px;border-radius:3px;margin-top:21px;margin-bottom:8px}.import-right[data-v-e8253a8a]{margin-top:30px}.import-right a[data-v-e8253a8a]{text-decoration:none;color:#000}[data-v-e8253a8a] .btn11{padding:0;width:14px;height:14px}[data-v-e8253a8a] .btn11 img{width:100%;height:100%}.page[data-v-e8253a8a]{margin-top:20px}

View File

@ -1 +1 @@
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>erp</title><link href="css/chunk-086a167d.daab9de2.css" rel="prefetch"><link href="css/chunk-088acbde.902ebb66.css" rel="prefetch"><link href="css/chunk-0cbcaa56.e05858e7.css" rel="prefetch"><link href="css/chunk-2225440f.839b850a.css" rel="prefetch"><link href="css/chunk-26daa808.62429343.css" rel="prefetch"><link href="css/chunk-32da4b3e.d9ee7431.css" rel="prefetch"><link href="css/chunk-35db73ce.1f9c10ff.css" rel="prefetch"><link href="css/chunk-41cd4e14.4e6d7a5a.css" rel="prefetch"><link href="css/chunk-4caed774.ad94328f.css" rel="prefetch"><link href="css/chunk-52fcdd7c.51e3ffbd.css" rel="prefetch"><link href="css/chunk-6ae0a0d3.84a02b23.css" rel="prefetch"><link href="css/chunk-743f0316.fb5066fb.css" rel="prefetch"><link href="css/chunk-75426f71.902ebb66.css" rel="prefetch"><link href="css/chunk-7cdb40b2.e7ded070.css" rel="prefetch"><link href="css/chunk-904e5abc.902ebb66.css" rel="prefetch"><link href="css/chunk-a3ddd952.902ebb66.css" rel="prefetch"><link href="css/chunk-ab4d3e40.d941d6ef.css" rel="prefetch"><link href="css/chunk-e35186f0.902ebb66.css" rel="prefetch"><link href="css/chunk-f35dfe36.ea52b615.css" rel="prefetch"><link href="css/chunk-fc9299b8.6760bfdb.css" rel="prefetch"><link href="js/chunk-086a167d.0cb8b81f.js" rel="prefetch"><link href="js/chunk-088acbde.4e79f6d0.js" rel="prefetch"><link href="js/chunk-0cbcaa56.46e3dd42.js" rel="prefetch"><link href="js/chunk-2225440f.1c72527f.js" rel="prefetch"><link href="js/chunk-26daa808.9e326ce2.js" rel="prefetch"><link href="js/chunk-32da4b3e.0151c647.js" rel="prefetch"><link href="js/chunk-35db73ce.ae2590c3.js" rel="prefetch"><link href="js/chunk-41cd4e14.a0cd0f1b.js" rel="prefetch"><link href="js/chunk-4caed774.d65d1796.js" rel="prefetch"><link href="js/chunk-52fcdd7c.0070e388.js" rel="prefetch"><link href="js/chunk-63c1eac8.59f3df74.js" rel="prefetch"><link href="js/chunk-6ae0a0d3.ee4aa3e0.js" rel="prefetch"><link href="js/chunk-743f0316.d043435c.js" rel="prefetch"><link href="js/chunk-75426f71.128f599c.js" rel="prefetch"><link href="js/chunk-7cdb40b2.3804e4d8.js" rel="prefetch"><link href="js/chunk-904e5abc.e6a5edbe.js" rel="prefetch"><link href="js/chunk-a3ddd952.0482ce75.js" rel="prefetch"><link href="js/chunk-ab4d3e40.0c286099.js" rel="prefetch"><link href="js/chunk-e35186f0.a9d70f92.js" rel="prefetch"><link href="js/chunk-f35dfe36.e7038b09.js" rel="prefetch"><link href="js/chunk-fc9299b8.5fc76239.js" rel="prefetch"><link href="css/app.6c30acd7.css" rel="preload" as="style"><link href="css/chunk-vendors.9181e156.css" rel="preload" as="style"><link href="js/app.ccd3e7a6.js" rel="preload" as="script"><link href="js/chunk-vendors.524d6b36.js" rel="preload" as="script"><link href="css/chunk-vendors.9181e156.css" rel="stylesheet"><link href="css/app.6c30acd7.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but erp doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.524d6b36.js"></script><script src="js/app.ccd3e7a6.js"></script></body></html>
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>erp</title><link href="css/chunk-003f4a7a.111dfff8.css" rel="prefetch"><link href="css/chunk-086a167d.daab9de2.css" rel="prefetch"><link href="css/chunk-088acbde.902ebb66.css" rel="prefetch"><link href="css/chunk-0cbcaa56.e05858e7.css" rel="prefetch"><link href="css/chunk-1103d586.ad94328f.css" rel="prefetch"><link href="css/chunk-2273ddc8.d350d067.css" rel="prefetch"><link href="css/chunk-26daa808.62429343.css" rel="prefetch"><link href="css/chunk-32da4b3e.d9ee7431.css" rel="prefetch"><link href="css/chunk-35db73ce.1f9c10ff.css" rel="prefetch"><link href="css/chunk-41cd4e14.4e6d7a5a.css" rel="prefetch"><link href="css/chunk-52fcdd7c.51e3ffbd.css" rel="prefetch"><link href="css/chunk-64d6ef70.826b5f9e.css" rel="prefetch"><link href="css/chunk-6ae0a0d3.84a02b23.css" rel="prefetch"><link href="css/chunk-743f0316.fb5066fb.css" rel="prefetch"><link href="css/chunk-75426f71.902ebb66.css" rel="prefetch"><link href="css/chunk-904e5abc.902ebb66.css" rel="prefetch"><link href="css/chunk-a3ddd952.902ebb66.css" rel="prefetch"><link href="css/chunk-ab4d3e40.d941d6ef.css" rel="prefetch"><link href="css/chunk-e35186f0.902ebb66.css" rel="prefetch"><link href="css/chunk-f35dfe36.ea52b615.css" rel="prefetch"><link href="js/chunk-003f4a7a.bf5f2a22.js" rel="prefetch"><link href="js/chunk-086a167d.0cb8b81f.js" rel="prefetch"><link href="js/chunk-088acbde.4e79f6d0.js" rel="prefetch"><link href="js/chunk-0cbcaa56.46e3dd42.js" rel="prefetch"><link href="js/chunk-1103d586.3eb50bc2.js" rel="prefetch"><link href="js/chunk-2273ddc8.48b0def5.js" rel="prefetch"><link href="js/chunk-26daa808.9e326ce2.js" rel="prefetch"><link href="js/chunk-32da4b3e.0151c647.js" rel="prefetch"><link href="js/chunk-35db73ce.ae2590c3.js" rel="prefetch"><link href="js/chunk-41cd4e14.a0cd0f1b.js" rel="prefetch"><link href="js/chunk-52fcdd7c.0070e388.js" rel="prefetch"><link href="js/chunk-63c1eac8.59f3df74.js" rel="prefetch"><link href="js/chunk-64d6ef70.42b3f332.js" rel="prefetch"><link href="js/chunk-6ae0a0d3.ee4aa3e0.js" rel="prefetch"><link href="js/chunk-743f0316.d043435c.js" rel="prefetch"><link href="js/chunk-75426f71.128f599c.js" rel="prefetch"><link href="js/chunk-904e5abc.e6a5edbe.js" rel="prefetch"><link href="js/chunk-a3ddd952.0482ce75.js" rel="prefetch"><link href="js/chunk-ab4d3e40.0c286099.js" rel="prefetch"><link href="js/chunk-e35186f0.a9d70f92.js" rel="prefetch"><link href="js/chunk-f35dfe36.e7038b09.js" rel="prefetch"><link href="css/app.6c30acd7.css" rel="preload" as="style"><link href="css/chunk-vendors.9181e156.css" rel="preload" as="style"><link href="js/app.ac132cd3.js" rel="preload" as="script"><link href="js/chunk-vendors.524d6b36.js" rel="preload" as="script"><link href="css/chunk-vendors.9181e156.css" rel="stylesheet"><link href="css/app.6c30acd7.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but erp doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.524d6b36.js"></script><script src="js/app.ac132cd3.js"></script></body></html>

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

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

@ -11,11 +11,11 @@
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleChoose(1)">筛选</el-button>
<el-upload ref="myUpload" action="/api/combination/goods" :multiple="false" name="combinationGoods"
:show-file-list="false" :on-success="uploadSuccess" :before-upload="beforeUpload"
:on-error="uploadError" style="display:inline-block;margin: 0 10px 0 10px;">
<el-button type="primary" plain>组合商品导入</el-button>
</el-upload>
<el-upload ref="myUpload" action="/api/combination/goods" :multiple="false" name="combinationGoods"
:show-file-list="false" :on-success="uploadSuccess" :before-upload="beforeUpload"
:on-error="uploadError" style="display:inline-block;margin: 0 10px 0 10px;">
<el-button type="primary" plain>组合商品导入</el-button>
</el-upload>
</el-form-item>
</el-form>
</div>
@ -44,7 +44,25 @@
</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="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 label="操作" width="130">
<template slot-scope="scope">
@ -58,7 +76,7 @@
<!-- 分页功能 -->
<div class="page">
<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">
</el-pagination>
</div>

View File

@ -224,11 +224,10 @@
<div v-if="stock">
<el-input v-model="scope.row.daily.inventory"></el-input>
</div>
<el-popover placement="right-start" trigger="hover" :content="
scope.row.daily.inventory_time
<el-popover placement="right-start" trigger="hover" :content="scope.row.daily.inventory_time
? scope.row.daily.inventory_time
: ''
">
">
<div v-if="!stock" slot="reference">
{{ scope.row.daily.inventory }}
</div>
@ -257,7 +256,7 @@
<!-- 分页功能 -->
<div class="page">
<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">
</el-pagination>
</div>

View File

@ -50,6 +50,13 @@
</el-select>
</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-button type="primary" @click="handleChoose">筛选</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="cancel_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="商品信息">
<template slot-scope="scope">
<div v-for="item in scope.row.items" :key="item.id">
@ -134,6 +142,8 @@ export default {
is_supplier: "",
cancel_status: "",
after_sales_status: "",
supply_participate_no: "",
participate_no: "",
},
dialogVisible: false,
loading: true,
@ -219,6 +229,8 @@ export default {
is_supplier: "",
cancel_status: "",
after_sales_status: "",
supply_participate_no: "",
participate_no: "",
};
this.getPlatOrderList();
},