完成订单重构
This commit is contained in:
parent
6d69f99d5a
commit
37a39dbe5d
|
|
@ -5,6 +5,7 @@ namespace app\admin\controller\orders;
|
|||
use app\admin\model\Order;
|
||||
use app\admin\model\OrderDispatch;
|
||||
use app\admin\model\OrderDispatchLog;
|
||||
use app\admin\model\Worker;
|
||||
use app\common\controller\Backend;
|
||||
use app\common\Logic\OrderLogic;
|
||||
use think\Db;
|
||||
|
|
@ -253,12 +254,17 @@ class Dispatch2 extends Backend
|
|||
$this->view->assign('row', $row);
|
||||
$this->view->assign('order', $order);
|
||||
$this->view->assign('action','finish');
|
||||
|
||||
$workerRate = Worker::where('id',$row->worker_id)->value('rate');
|
||||
$this->view->assign('rate', $workerRate);
|
||||
return $this->view->fetch('edit');
|
||||
}
|
||||
|
||||
|
||||
$params = $this->request->post('row/a');
|
||||
if (empty($params)) {
|
||||
|
||||
$orderParsms = $this->request->post('order/a');
|
||||
if (empty($params) || empty($orderParsms)) {
|
||||
$this->error(__('Parameter %s can not be empty', ''));
|
||||
}
|
||||
|
||||
|
|
@ -285,19 +291,43 @@ class Dispatch2 extends Backend
|
|||
$params['status'] = OrderDispatch::STATUS_FINISH;
|
||||
$params['finish_time'] = date('Y-m-d H:i:s');
|
||||
$params['follow'] = 2;
|
||||
$params['material_cost'] = $orderParsms['material_cost'];
|
||||
|
||||
if($row->admin_id == 0){
|
||||
$params['admin_id'] = $this->auth->id;
|
||||
$params['admin_user'] = $this->auth->admin_user;
|
||||
$order->dispatch_admin_id = $this->auth->id;
|
||||
$order->save();
|
||||
$orderParsms['dispatch_admin_id'] = $this->auth->id;
|
||||
}
|
||||
|
||||
$result = $row->allowField(true)->save($params);
|
||||
|
||||
//计算价格
|
||||
$data = [
|
||||
'online_amount_last' => $row->online_total, //线上尾款
|
||||
'offline_amount' => $row->total, //线下尾款
|
||||
'cost' => $orderParsms['cost'],
|
||||
'cost_rate' => $orderParsms['cost_rate'],
|
||||
'offline_amount_type'=> $row->offline_total_type,
|
||||
];
|
||||
|
||||
if($row->type == 1){ //手动
|
||||
$data['status'] = Order::STATUS_AUDITING;
|
||||
}else{
|
||||
$data['status'] = Order::STATUS_CHECKING;
|
||||
}
|
||||
$data = array_merge($data,$orderParsms);
|
||||
$last_amount = bcadd($data['online_amount_last'],$data['offline_amount'],2);
|
||||
|
||||
$cost = bcadd($data['cost'],$data['material_cost'],2);
|
||||
|
||||
$data['total'] = bcadd($order->online_amount,$last_amount,2);
|
||||
$data['real_amount'] = $data['total'];
|
||||
$data['performance'] = bcsub($data['real_amount'],$cost,2);
|
||||
$order->allowField(true)->save($data);
|
||||
|
||||
//修改订单状态
|
||||
$OrderLogic = new OrderLogic();
|
||||
$OrderLogic -> dispachFinishAfter($row,['role'=>1,'auth'=>$this->auth,'remark'=>'后台完成任务,操作人:'.$this->auth->nickname]);
|
||||
$OrderLogic -> dispachFinishAfter($row,['role'=>1,'auth'=>$this->auth,'remark'=>'后台完成任务,操作人:'.$this->auth->nickname],true);
|
||||
Db::commit();
|
||||
} catch (ValidateException | PDOException | Exception $e) {
|
||||
Db::rollback();
|
||||
|
|
|
|||
|
|
@ -69,7 +69,6 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('当前进度')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
|
@ -78,6 +77,8 @@
|
|||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('线上预付')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
|
@ -172,6 +173,51 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('师傅提点(%)')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input data-rule="required" name="order[cost_rate]" type="number" min="0" max="100" step="1" class="form-control" value="{$rate|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('师傅提成')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input data-rule="required" name="order[cost]" type="number" min="0" max="100" step="1" class="form-control" value="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('分成备注')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input data-rule="required" name="order[cost_remark]" type="text" class="form-control" value="{$order.cost_remark}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('材料成本(¥)')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input data-rule="required" name="order[material_cost]" min="1" step="0.01" type="number" class="form-control" value="{$order.material_cost}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('材料凭证')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<div class="input-group">
|
||||
<input id="c-material_images" class="form-control" size="50" value="{$order.material_images}" name="order[material_images]" type="text">
|
||||
<div class="input-group-addon no-border no-padding">
|
||||
<span><button type="button" id="faupload-material_images" class="btn btn-danger faupload" data-input-id="c-material_images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="true" data-preview-id="p-material_images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
|
||||
<span><button type="button" id="fachoose-material_images" class="btn btn-primary fachoose" data-input-id="c-material_images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
|
||||
</div>
|
||||
<span class="msg-box n-right" for="c-material_images"></span>
|
||||
</div>
|
||||
<ul class="row list-inline faupload-preview" id="p-material_images"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
|
|
|
|||
|
|
@ -36,12 +36,19 @@ class OrderLogic
|
|||
* @throws ModelNotFoundException
|
||||
* @throws Exception
|
||||
*/
|
||||
public function dispachFinishAfter(OrderDispatch $orderDispatch,$roleInfo=[]): void
|
||||
public function dispachFinishAfter(OrderDispatch $orderDispatch,$roleInfo=[],$byAdmin=false): void
|
||||
{
|
||||
|
||||
$order = $this->OrderModel->where('id',$orderDispatch->order_id)->find();
|
||||
if($order->status != Order::STATUS_DISPATCHED){
|
||||
throw new Exception('订单状态不允许当前操作');
|
||||
|
||||
if(!$byAdmin){
|
||||
if($order->status != Order::STATUS_DISPATCHED){
|
||||
throw new Exception('订单状态不允许当前操作');
|
||||
}
|
||||
}else{
|
||||
if(in_array($order->status ,[Order::STATUS_FINISHED,Order::STATUS_CANCEL])) {
|
||||
throw new Exception('订单状态不允许当前操作');
|
||||
}
|
||||
}
|
||||
|
||||
$orderUpdate = [
|
||||
|
|
@ -50,15 +57,16 @@ class OrderLogic
|
|||
$orderDispatch->follow = 2; //结束跟进
|
||||
$orderDispatch->save();
|
||||
|
||||
if($orderDispatch->is_receipt == 1){ //要收款,计算确认尾款
|
||||
$offline_amount = $orderDispatch->total;
|
||||
$total = bcadd($order->online_amount,$offline_amount,2);
|
||||
$orderUpdate['offline_amount'] = $offline_amount;
|
||||
$orderUpdate['total'] = $total;
|
||||
//$orderUpdate['offline_amount_type'] = $orderDispatch->offline_total_type;
|
||||
if(!$byAdmin){
|
||||
if($orderDispatch->is_receipt == 1){ //要收款,计算确认尾款
|
||||
$offline_amount = $orderDispatch->total;
|
||||
$total = bcadd($order->online_amount,$offline_amount,2);
|
||||
$orderUpdate['offline_amount'] = $offline_amount;
|
||||
$orderUpdate['total'] = $total;
|
||||
//$orderUpdate['offline_amount_type'] = $orderDispatch->offline_total_type;
|
||||
}
|
||||
$order->allowField(true)->save($orderUpdate);
|
||||
}
|
||||
$order->allowField(true)->save($orderUpdate);
|
||||
|
||||
$params['role'] = $roleInfo['role'];
|
||||
$params['auth'] = $roleInfo['auth'];
|
||||
$params['order']= $order;
|
||||
|
|
|
|||
|
|
@ -129,12 +129,23 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'echarts', 'echarts-t
|
|||
const headers = response[0];
|
||||
const units = ['元', '%', '%', '']; // 如果你有单位可以一起拼接
|
||||
|
||||
// 如果 response 没有实际数据(只有表头),则补一行空数据
|
||||
let datasetSource = response;
|
||||
if (response.length <= 1) {
|
||||
// 构造一个“暂无数据”的空行,数量与 headers 相同
|
||||
const emptyRow = [ '暂无数据' ];
|
||||
for (let i = 1; i < headers.length; i++) {
|
||||
emptyRow.push(0);
|
||||
}
|
||||
datasetSource = [ headers, emptyRow ];
|
||||
}
|
||||
|
||||
var barChart = Echarts.init(document.getElementById('bar-chart'), 'walden');
|
||||
var option = {
|
||||
legend: {},
|
||||
tooltip: {},
|
||||
dataset: {
|
||||
source: response
|
||||
source: datasetSource
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user