完成订单重构
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\Order;
|
||||||
use app\admin\model\OrderDispatch;
|
use app\admin\model\OrderDispatch;
|
||||||
use app\admin\model\OrderDispatchLog;
|
use app\admin\model\OrderDispatchLog;
|
||||||
|
use app\admin\model\Worker;
|
||||||
use app\common\controller\Backend;
|
use app\common\controller\Backend;
|
||||||
use app\common\Logic\OrderLogic;
|
use app\common\Logic\OrderLogic;
|
||||||
use think\Db;
|
use think\Db;
|
||||||
|
|
@ -253,12 +254,17 @@ class Dispatch2 extends Backend
|
||||||
$this->view->assign('row', $row);
|
$this->view->assign('row', $row);
|
||||||
$this->view->assign('order', $order);
|
$this->view->assign('order', $order);
|
||||||
$this->view->assign('action','finish');
|
$this->view->assign('action','finish');
|
||||||
|
|
||||||
|
$workerRate = Worker::where('id',$row->worker_id)->value('rate');
|
||||||
|
$this->view->assign('rate', $workerRate);
|
||||||
return $this->view->fetch('edit');
|
return $this->view->fetch('edit');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$params = $this->request->post('row/a');
|
$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', ''));
|
$this->error(__('Parameter %s can not be empty', ''));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -285,19 +291,43 @@ class Dispatch2 extends Backend
|
||||||
$params['status'] = OrderDispatch::STATUS_FINISH;
|
$params['status'] = OrderDispatch::STATUS_FINISH;
|
||||||
$params['finish_time'] = date('Y-m-d H:i:s');
|
$params['finish_time'] = date('Y-m-d H:i:s');
|
||||||
$params['follow'] = 2;
|
$params['follow'] = 2;
|
||||||
|
$params['material_cost'] = $orderParsms['material_cost'];
|
||||||
|
|
||||||
if($row->admin_id == 0){
|
if($row->admin_id == 0){
|
||||||
$params['admin_id'] = $this->auth->id;
|
$params['admin_id'] = $this->auth->id;
|
||||||
$params['admin_user'] = $this->auth->admin_user;
|
$params['admin_user'] = $this->auth->admin_user;
|
||||||
$order->dispatch_admin_id = $this->auth->id;
|
$orderParsms['dispatch_admin_id'] = $this->auth->id;
|
||||||
$order->save();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $row->allowField(true)->save($params);
|
$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 = 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();
|
Db::commit();
|
||||||
} catch (ValidateException | PDOException | Exception $e) {
|
} catch (ValidateException | PDOException | Exception $e) {
|
||||||
Db::rollback();
|
Db::rollback();
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label col-xs-12 col-sm-2">{:__('当前进度')}:</label>
|
<label class="control-label col-xs-12 col-sm-2">{:__('当前进度')}:</label>
|
||||||
<div class="col-xs-12 col-sm-8">
|
<div class="col-xs-12 col-sm-8">
|
||||||
|
|
@ -78,6 +77,8 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label col-xs-12 col-sm-2">{:__('线上预付')}:</label>
|
<label class="control-label col-xs-12 col-sm-2">{:__('线上预付')}:</label>
|
||||||
<div class="col-xs-12 col-sm-8">
|
<div class="col-xs-12 col-sm-8">
|
||||||
|
|
@ -172,6 +173,51 @@
|
||||||
</div>
|
</div>
|
||||||
</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">
|
<div class="form-group layer-footer">
|
||||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||||
|
|
|
||||||
|
|
@ -36,12 +36,19 @@ class OrderLogic
|
||||||
* @throws ModelNotFoundException
|
* @throws ModelNotFoundException
|
||||||
* @throws Exception
|
* @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();
|
$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 = [
|
$orderUpdate = [
|
||||||
|
|
@ -50,15 +57,16 @@ class OrderLogic
|
||||||
$orderDispatch->follow = 2; //结束跟进
|
$orderDispatch->follow = 2; //结束跟进
|
||||||
$orderDispatch->save();
|
$orderDispatch->save();
|
||||||
|
|
||||||
if($orderDispatch->is_receipt == 1){ //要收款,计算确认尾款
|
if(!$byAdmin){
|
||||||
$offline_amount = $orderDispatch->total;
|
if($orderDispatch->is_receipt == 1){ //要收款,计算确认尾款
|
||||||
$total = bcadd($order->online_amount,$offline_amount,2);
|
$offline_amount = $orderDispatch->total;
|
||||||
$orderUpdate['offline_amount'] = $offline_amount;
|
$total = bcadd($order->online_amount,$offline_amount,2);
|
||||||
$orderUpdate['total'] = $total;
|
$orderUpdate['offline_amount'] = $offline_amount;
|
||||||
//$orderUpdate['offline_amount_type'] = $orderDispatch->offline_total_type;
|
$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['role'] = $roleInfo['role'];
|
||||||
$params['auth'] = $roleInfo['auth'];
|
$params['auth'] = $roleInfo['auth'];
|
||||||
$params['order']= $order;
|
$params['order']= $order;
|
||||||
|
|
|
||||||
|
|
@ -129,12 +129,23 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'echarts', 'echarts-t
|
||||||
const headers = response[0];
|
const headers = response[0];
|
||||||
const units = ['元', '%', '%', '']; // 如果你有单位可以一起拼接
|
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 barChart = Echarts.init(document.getElementById('bar-chart'), 'walden');
|
||||||
var option = {
|
var option = {
|
||||||
legend: {},
|
legend: {},
|
||||||
tooltip: {},
|
tooltip: {},
|
||||||
dataset: {
|
dataset: {
|
||||||
source: response
|
source: datasetSource
|
||||||
},
|
},
|
||||||
xAxis: {
|
xAxis: {
|
||||||
type: 'category',
|
type: 'category',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user