问题修复
This commit is contained in:
parent
d619f3a376
commit
d0938fc804
|
|
@ -148,4 +148,33 @@ class Message extends Backend
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function markallread(){
|
||||||
|
$list = $this->model
|
||||||
|
->where('type',1)
|
||||||
|
->where('to_id',$this->auth->id)
|
||||||
|
//->auth($this->auth)
|
||||||
|
//->whereRaw("FIND_IN_SET(?, read_uid) = 0 OR read_uid IS NULL OR read_uid = ''", [$this->auth->id])
|
||||||
|
->whereRaw("FIND_IN_SET({$this->auth->id}, read_uid) = 0 OR read_uid = '' or read_uid is null")
|
||||||
|
->whereTime('create_time', '>=', '-3 days')
|
||||||
|
->select();
|
||||||
|
$update = [];
|
||||||
|
foreach ($list as &$item){
|
||||||
|
$readUids = explode(',',$item->read_uid??'');
|
||||||
|
$item->status = 1;
|
||||||
|
if(!in_array($this->auth->id,$readUids)){
|
||||||
|
$readUids[] = $this->auth->id;
|
||||||
|
$update[] = [
|
||||||
|
'id' => $item->id,
|
||||||
|
'read_uid' => implode(',',$readUids),
|
||||||
|
'update_time' => date('Y-m-d H:i:s')
|
||||||
|
];
|
||||||
|
$item->status = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if($update){
|
||||||
|
$this->batchUpdateByIdSimple('fa_message',$update);
|
||||||
|
}
|
||||||
|
$this->success("全部已读");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,8 @@ use app\admin\model\Worker;
|
||||||
use app\admin\model\WorkerItem;
|
use app\admin\model\WorkerItem;
|
||||||
use app\common\controller\Backend;
|
use app\common\controller\Backend;
|
||||||
use app\common\Logic\OrderLogic;
|
use app\common\Logic\OrderLogic;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use Carbon\Traits\Creator;
|
||||||
use fast\Tree;
|
use fast\Tree;
|
||||||
use think\Db;
|
use think\Db;
|
||||||
use think\Exception;
|
use think\Exception;
|
||||||
|
|
@ -146,6 +148,7 @@ class Order extends Backend
|
||||||
'receive_type',
|
'receive_type',
|
||||||
'plan_time',
|
'plan_time',
|
||||||
'coupon_id',
|
'coupon_id',
|
||||||
|
'create_time',
|
||||||
'total',
|
'total',
|
||||||
'online_amount',
|
'online_amount',
|
||||||
'aftersale_id'
|
'aftersale_id'
|
||||||
|
|
@ -153,18 +156,33 @@ class Order extends Backend
|
||||||
->where($where);
|
->where($where);
|
||||||
$filter = (array)json_decode(input()['filter'] ?? '', true);
|
$filter = (array)json_decode(input()['filter'] ?? '', true);
|
||||||
$admin_filter = $filter['user.nickname'] ?? false;
|
$admin_filter = $filter['user.nickname'] ?? false;
|
||||||
|
$is_timeout = $filter['is_timeout'] ?? null;
|
||||||
|
// dd($create_time,$filter);
|
||||||
if ($admin_filter) {
|
if ($admin_filter) {
|
||||||
$admin_ids = Admin::where('nickname', 'like', '%' . $admin_filter . '%')->column('id');
|
$admin_ids = Admin::where('nickname', 'like', '%' . $admin_filter . '%')->column('id');
|
||||||
$build->whereIn('admin_id', $admin_ids);
|
$build->whereIn('admin_id', $admin_ids);
|
||||||
}
|
}
|
||||||
|
if (!is_null($is_timeout)) {
|
||||||
|
if ($is_timeout == 1){
|
||||||
|
$build->where('status', '>=', \app\admin\model\Order::STATUS_DISPATCHING)
|
||||||
|
->where('create_time', '<=', (new Carbon())->subMinutes(20)
|
||||||
|
->format('Y-m-d H:i:s'));
|
||||||
|
}else{
|
||||||
|
$build->where('status', '>=', \app\admin\model\Order::STATUS_DISPATCHING)
|
||||||
|
->where('create_time', '>', (new Carbon())->subMinutes(20)
|
||||||
|
->format('Y-m-d H:i:s'));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if ($type == 1) {
|
if ($type == 1) {
|
||||||
$build->where('status', '>=', 0);
|
$build->where('status', '>=', 0);
|
||||||
}
|
}elseif ($type == 2) {
|
||||||
|
|
||||||
if ($type == 2) {
|
|
||||||
$build->where('status', '<', 0);
|
$build->where('status', '<', 0);
|
||||||
|
}elseif ($type == 3){
|
||||||
|
$build->where('status', '>=', \app\admin\model\Order::STATUS_DISPATCHING)
|
||||||
|
->where('create_time', '<=', (new Carbon())->subMinutes(20)
|
||||||
|
->format('Y-m-d H:i:s'));
|
||||||
}
|
}
|
||||||
if ($group == 2 || $group == 6) {
|
if ($group == 2 || $group == 6) {
|
||||||
// 生成 SQL 语句
|
// 生成 SQL 语句
|
||||||
|
|
@ -449,7 +467,7 @@ class Order extends Backend
|
||||||
$insert [] = [
|
$insert [] = [
|
||||||
'to_id' => $re,
|
'to_id' => $re,
|
||||||
'type' => 1,
|
'type' => 1,
|
||||||
'title' => '订单报错通知',
|
'title' => '催单通知',
|
||||||
'content' => '【催单通知】您有一条订单号为' . $order->order_no . '的订单被催单,请立即派单!'
|
'content' => '【催单通知】您有一条订单号为' . $order->order_no . '的订单被催单,请立即派单!'
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
@ -823,7 +841,7 @@ class Order extends Backend
|
||||||
$index = 0;
|
$index = 0;
|
||||||
|
|
||||||
foreach ($filter as $k => $v) {
|
foreach ($filter as $k => $v) {
|
||||||
if ($k == 'user.nickname') continue;
|
if ($k == 'user.nickname' || $k =='is_timeout') continue;
|
||||||
if (!preg_match('/^[a-zA-Z0-9_\-\.]+$/', $k)) {
|
if (!preg_match('/^[a-zA-Z0-9_\-\.]+$/', $k)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ use think\exception\DbException;
|
||||||
use think\exception\PDOException;
|
use think\exception\PDOException;
|
||||||
use think\exception\ValidateException;
|
use think\exception\ValidateException;
|
||||||
use think\Hook;
|
use think\Hook;
|
||||||
|
use think\Loader;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 派单列管理
|
* 派单列管理
|
||||||
|
|
@ -68,12 +69,16 @@ class Dispatch2 extends Backend
|
||||||
return $this->selectpage();
|
return $this->selectpage();
|
||||||
}
|
}
|
||||||
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
|
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
|
||||||
|
// $filter = (array)json_decode(input()['filter'] ?? '', true);
|
||||||
|
// $type = $filter['dispatch_type'] ?? false;
|
||||||
|
// dd($where,$filter);
|
||||||
|
|
||||||
$list = $this->model
|
$list = $this->model
|
||||||
->with(['orderb','lastRecord'])
|
->with(['orderb','lastRecord'])
|
||||||
->auth($this->auth)
|
->auth($this->auth)
|
||||||
->where($where)
|
->where($where);
|
||||||
->order($sort, $order)
|
|
||||||
|
$list = $list->order($sort, $order)
|
||||||
->paginate($limit);
|
->paginate($limit);
|
||||||
|
|
||||||
foreach ($list as &$row) {
|
foreach ($list as &$row) {
|
||||||
|
|
@ -488,4 +493,192 @@ class Dispatch2 extends Backend
|
||||||
$this->success(__('取消成功'));
|
$this->success(__('取消成功'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成查询所需要的条件,排序方式
|
||||||
|
* @param mixed $searchfields 快速查询的字段
|
||||||
|
* @param boolean $relationSearch 是否关联查询
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function buildparams($searchfields = null, $relationSearch = null)
|
||||||
|
{
|
||||||
|
$searchfields = is_null($searchfields) ? $this->searchFields : $searchfields;
|
||||||
|
$relationSearch = is_null($relationSearch) ? $this->relationSearch : $relationSearch;
|
||||||
|
$search = $this->request->get("search", '');
|
||||||
|
$filter = $this->request->get("filter", '');
|
||||||
|
$op = $this->request->get("op", '', 'trim');
|
||||||
|
$sort = $this->request->get("sort", !empty($this->model) && $this->model->getPk() ? $this->model->getPk() : 'id');
|
||||||
|
$order = $this->request->get("order", "DESC");
|
||||||
|
$offset = max(0, $this->request->get("offset/d", 0));
|
||||||
|
$limit = max(0, $this->request->get("limit/d", 0));
|
||||||
|
$limit = $limit ?: 999999;
|
||||||
|
//新增自动计算页码
|
||||||
|
$page = $limit ? intval($offset / $limit) + 1 : 1;
|
||||||
|
if ($this->request->has("page")) {
|
||||||
|
$page = max(0, $this->request->get("page/d", 1));
|
||||||
|
}
|
||||||
|
$this->request->get([config('paginate.var_page') => $page]);
|
||||||
|
$filter = (array)json_decode($filter, true);
|
||||||
|
$op = (array)json_decode($op, true);
|
||||||
|
$filter = $filter ? $filter : [];
|
||||||
|
$where = [];
|
||||||
|
$alias = [];
|
||||||
|
$bind = [];
|
||||||
|
$name = '';
|
||||||
|
$aliasName = '';
|
||||||
|
if (!empty($this->model) && $relationSearch) {
|
||||||
|
$name = $this->model->getTable();
|
||||||
|
$alias[$name] = Loader::parseName(basename(str_replace('\\', '/', get_class($this->model))));
|
||||||
|
$aliasName = $alias[$name] . '.';
|
||||||
|
}
|
||||||
|
$sortArr = explode(',', $sort);
|
||||||
|
foreach ($sortArr as $index => & $item) {
|
||||||
|
$item = stripos($item, ".") === false ? $aliasName . trim($item) : $item;
|
||||||
|
}
|
||||||
|
unset($item);
|
||||||
|
$sort = implode(',', $sortArr);
|
||||||
|
$adminIds = $this->getDataLimitAdminIds();
|
||||||
|
if (is_array($adminIds)) {
|
||||||
|
$where[] = [$aliasName . $this->dataLimitField, 'in', $adminIds];
|
||||||
|
}
|
||||||
|
if ($search) {
|
||||||
|
$searcharr = is_array($searchfields) ? $searchfields : explode(',', $searchfields);
|
||||||
|
foreach ($searcharr as $k => &$v) {
|
||||||
|
$v = stripos($v, ".") === false ? $aliasName . $v : $v;
|
||||||
|
}
|
||||||
|
unset($v);
|
||||||
|
$where[] = [implode("|", $searcharr), "LIKE", "%{$search}%"];
|
||||||
|
}
|
||||||
|
$index = 0;
|
||||||
|
if (!isset($filter['type'])){
|
||||||
|
$filter['type'] = 1;
|
||||||
|
}
|
||||||
|
foreach ($filter as $k => $v) {
|
||||||
|
if (!preg_match('/^[a-zA-Z0-9_\-\.]+$/', $k)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$sym = $op[$k] ?? '=';
|
||||||
|
if (stripos($k, ".") === false) {
|
||||||
|
$k = $aliasName . $k;
|
||||||
|
}
|
||||||
|
$v = !is_array($v) ? trim($v) : $v;
|
||||||
|
$sym = strtoupper($op[$k] ?? $sym);
|
||||||
|
//null和空字符串特殊处理
|
||||||
|
if (!is_array($v)) {
|
||||||
|
if (in_array(strtoupper($v), ['NULL', 'NOT NULL'])) {
|
||||||
|
$sym = strtoupper($v);
|
||||||
|
}
|
||||||
|
if (in_array($v, ['""', "''"])) {
|
||||||
|
$v = '';
|
||||||
|
$sym = '=';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ($sym) {
|
||||||
|
case '=':
|
||||||
|
case '<>':
|
||||||
|
$where[] = [$k, $sym, (string)$v];
|
||||||
|
break;
|
||||||
|
case 'LIKE':
|
||||||
|
case 'NOT LIKE':
|
||||||
|
case 'LIKE %...%':
|
||||||
|
case 'NOT LIKE %...%':
|
||||||
|
$where[] = [$k, trim(str_replace('%...%', '', $sym)), "%{$v}%"];
|
||||||
|
break;
|
||||||
|
case '>':
|
||||||
|
case '>=':
|
||||||
|
case '<':
|
||||||
|
case '<=':
|
||||||
|
$where[] = [$k, $sym, intval($v)];
|
||||||
|
break;
|
||||||
|
case 'FINDIN':
|
||||||
|
case 'FINDINSET':
|
||||||
|
case 'FIND_IN_SET':
|
||||||
|
$v = is_array($v) ? $v : explode(',', str_replace(' ', ',', $v));
|
||||||
|
$findArr = array_values($v);
|
||||||
|
foreach ($findArr as $idx => $item) {
|
||||||
|
$bindName = "item_" . $index . "_" . $idx;
|
||||||
|
$bind[$bindName] = $item;
|
||||||
|
$where[] = "FIND_IN_SET(:{$bindName}, `" . str_replace('.', '`.`', $k) . "`)";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'IN':
|
||||||
|
case 'IN(...)':
|
||||||
|
case 'NOT IN':
|
||||||
|
case 'NOT IN(...)':
|
||||||
|
$where[] = [$k, str_replace('(...)', '', $sym), is_array($v) ? $v : explode(',', $v)];
|
||||||
|
break;
|
||||||
|
case 'BETWEEN':
|
||||||
|
case 'NOT BETWEEN':
|
||||||
|
$arr = array_slice(explode(',', $v), 0, 2);
|
||||||
|
if (stripos($v, ',') === false || !array_filter($arr, function ($v) {
|
||||||
|
return $v != '' && $v !== false && $v !== null;
|
||||||
|
})) {
|
||||||
|
continue 2;
|
||||||
|
}
|
||||||
|
//当出现一边为空时改变操作符
|
||||||
|
if ($arr[0] === '') {
|
||||||
|
$sym = $sym == 'BETWEEN' ? '<=' : '>';
|
||||||
|
$arr = $arr[1];
|
||||||
|
} elseif ($arr[1] === '') {
|
||||||
|
$sym = $sym == 'BETWEEN' ? '>=' : '<';
|
||||||
|
$arr = $arr[0];
|
||||||
|
}
|
||||||
|
$where[] = [$k, $sym, $arr];
|
||||||
|
break;
|
||||||
|
case 'RANGE':
|
||||||
|
case 'NOT RANGE':
|
||||||
|
$v = str_replace(' - ', ',', $v);
|
||||||
|
$arr = array_slice(explode(',', $v), 0, 2);
|
||||||
|
if (stripos($v, ',') === false || !array_filter($arr)) {
|
||||||
|
continue 2;
|
||||||
|
}
|
||||||
|
//当出现一边为空时改变操作符
|
||||||
|
if ($arr[0] === '') {
|
||||||
|
$sym = $sym == 'RANGE' ? '<=' : '>';
|
||||||
|
$arr = $arr[1];
|
||||||
|
} elseif ($arr[1] === '') {
|
||||||
|
$sym = $sym == 'RANGE' ? '>=' : '<';
|
||||||
|
$arr = $arr[0];
|
||||||
|
}
|
||||||
|
$tableArr = explode('.', $k);
|
||||||
|
if (count($tableArr) > 1 && $tableArr[0] != $name && !in_array($tableArr[0], $alias)
|
||||||
|
&& !empty($this->model) && $this->relationSearch) {
|
||||||
|
//修复关联模型下时间无法搜索的BUG
|
||||||
|
$relation = Loader::parseName($tableArr[0], 1, false);
|
||||||
|
$alias[$this->model->$relation()->getTable()] = $tableArr[0];
|
||||||
|
}
|
||||||
|
$where[] = [$k, str_replace('RANGE', 'BETWEEN', $sym) . ' TIME', $arr];
|
||||||
|
break;
|
||||||
|
case 'NULL':
|
||||||
|
case 'IS NULL':
|
||||||
|
case 'NOT NULL':
|
||||||
|
case 'IS NOT NULL':
|
||||||
|
$where[] = [$k, strtolower(str_replace('IS ', '', $sym))];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$index++;
|
||||||
|
}
|
||||||
|
if (!empty($this->model)) {
|
||||||
|
$this->model->alias($alias);
|
||||||
|
}
|
||||||
|
$model = $this->model;
|
||||||
|
$where = function ($query) use ($where, $alias, $bind, &$model) {
|
||||||
|
if (!empty($model)) {
|
||||||
|
$model->alias($alias);
|
||||||
|
$model->bind($bind);
|
||||||
|
}
|
||||||
|
foreach ($where as $k => $v) {
|
||||||
|
if (is_array($v)) {
|
||||||
|
call_user_func_array([$query, 'where'], $v);
|
||||||
|
} else {
|
||||||
|
$query->where($v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return [$where, $sort, $order, $offset, $limit, $page, $alias, $bind];
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,13 @@
|
||||||
<div class="widget-body no-padding">
|
<div class="widget-body no-padding">
|
||||||
<div id="toolbar" class="toolbar">
|
<div id="toolbar" class="toolbar">
|
||||||
<a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
|
<a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
|
||||||
<!-- <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('message/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
|
<a href="javascript:;" class="btn btn-success btn-all-read"><i class="fa fa-check-square-o"></i> 全部标记已读</a>
|
||||||
<a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('message/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
|
|
||||||
<a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('message/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
|
<!-- <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('message/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
|
||||||
|
<a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('message/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
|
||||||
-->
|
<a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('message/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
|
||||||
|
|
||||||
|
-->
|
||||||
</div>
|
</div>
|
||||||
<table id="table" class="table table-striped table-bordered table-hover table-nowrap"
|
<table id="table" class="table table-striped table-bordered table-hover table-nowrap"
|
||||||
data-operate-edit="{:$auth->check('message/edit')}"
|
data-operate-edit="{:$auth->check('message/edit')}"
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
<ul class="nav nav-tabs" data-field="status">
|
<ul class="nav nav-tabs" data-field="status">
|
||||||
<li class="{:$Think.get.status === (string)1 ? 'active' : ''}"><a href="#t-active" data-value="1" data-toggle="tab">正常订单</a></li>
|
<li class="{:$Think.get.status === (string)1 ? 'active' : ''}"><a href="#t-active" data-value="1" data-toggle="tab">正常订单</a></li>
|
||||||
<li class="{:$Think.get.status === (string)2 ? 'active' : ''}"><a href="#t-cancel" data-value="2" data-toggle="tab">取消订单</a></li>
|
<li class="{:$Think.get.status === (string)2 ? 'active' : ''}"><a href="#t-cancel" data-value="2" data-toggle="tab">取消订单</a></li>
|
||||||
|
<li class="{:$Think.get.status === (string)2 ? 'active' : ''}"><a href="#t-overtime" data-value="3" data-toggle="tab">超时订单</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,40 +16,40 @@
|
||||||
</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">-->
|
||||||
<input id="c-customer" readonly class="form-control" type="text" value="{$order.customer|htmlentities}">
|
<!-- <input id="c-customer" readonly class="form-control" type="text" value="{$order.customer|htmlentities}">-->
|
||||||
</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">-->
|
||||||
<input id="c-tel" readonly class="form-control" type="text" value="{$order.tel|htmlentities}">
|
<!-- <input id="c-tel" readonly class="form-control" type="text" value="{$order.tel|htmlentities}">-->
|
||||||
</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">-->
|
||||||
<input id="c-address" readonly class="form-control" type="text" value="{$order.area.short_merge_name|htmlentities} {$order.address|htmlentities}">
|
<!-- <input id="c-address" readonly class="form-control" type="text" value="{$order.area.short_merge_name|htmlentities} {$order.address|htmlentities}">-->
|
||||||
</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">-->
|
||||||
<input id="c-item_title" readonly class="form-control" type="text" value="{$order.item_title|htmlentities}">
|
<!-- <input id="c-item_title" readonly class="form-control" type="text" value="{$order.item_title|htmlentities}">-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
|
|
||||||
<div class="form-group">
|
<!-- <div class="form-group">-->
|
||||||
<label class="control-label col-xs-12 col-sm-2">{:__('Order.detail')}:</label>
|
<!-- <label class="control-label col-xs-12 col-sm-2">{:__('Order.detail')}:</label>-->
|
||||||
<div class="col-xs-12 col-sm-8">
|
<!-- <div class="col-xs-12 col-sm-8">-->
|
||||||
<input id="c-detail" readonly class="form-control" type="text" value="{$order.detail|htmlentities}">
|
<!-- <input id="c-detail" readonly class="form-control" type="text" value="{$order.detail|htmlentities}">-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
|
|
||||||
{notempty name ='action'}
|
{notempty name ='action'}
|
||||||
|
|
||||||
|
|
@ -69,12 +69,15 @@
|
||||||
</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 readonly type="text" class="form-control" value="{$row.status_text|htmlentities}">
|
<!-- <div class="form-group">-->
|
||||||
</div>
|
<!-- <label class="control-label col-xs-12 col-sm-2">{:__('当前进度')}:</label>-->
|
||||||
</div>
|
<!-- <div class="col-xs-12 col-sm-8">-->
|
||||||
|
<!-- <input readonly type="text" class="form-control" value="{$row.status_text|htmlentities}">-->
|
||||||
|
<!-- </div>-->
|
||||||
|
<!-- </div>-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -135,7 +138,7 @@
|
||||||
<label for="c-image" class="control-label col-xs-12 col-sm-2">{:__('收款凭据')}:</label>
|
<label for="c-image" 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">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input id="c-image" class="form-control" size="35" name="row[image]" type="text" value="">
|
<input id="c-image" data-rule="required" class="form-control" size="35" name="row[image]" type="text" value="">
|
||||||
<div class="input-group-addon no-border no-padding">
|
<div class="input-group-addon no-border no-padding">
|
||||||
<span><button type="button" id="faupload-image" class="btn btn-danger faupload" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
|
<span><button type="button" id="faupload-image" class="btn btn-danger faupload" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
|
||||||
<span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
|
<span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
|
||||||
|
|
@ -148,8 +151,29 @@
|
||||||
|
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-xs-12 col-sm-2">{:__('材料成本(¥)')}:</label>
|
||||||
|
<div class="col-xs-12 col-sm-8">
|
||||||
|
<input 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">
|
<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">
|
||||||
|
|
@ -166,12 +190,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="control-label col-xs-12 col-sm-2">{:__('Remark')}:</label>
|
|
||||||
<div class="col-xs-12 col-sm-8">
|
|
||||||
<textarea class="form-control" data-rule="required" placeholder="备注" name="row[remark]" >{$row.remark|htmlentities}</textarea>
|
|
||||||
</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>
|
||||||
|
|
@ -193,31 +212,13 @@
|
||||||
<input data-rule="required" name="order[cost]" type="number" min="0" max="100" step="1" class="form-control" value="">
|
<input data-rule="required" name="order[cost]" type="number" min="0" max="100" step="1" class="form-control" value="">
|
||||||
</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">{:__('Remark')}:</label>
|
||||||
<div class="col-xs-12 col-sm-8">
|
<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}">
|
<textarea class="form-control" placeholder="备注" name="row[remark]" >{$row.remark|htmlentities}</textarea>
|
||||||
</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">
|
|
||||||
<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>
|
||||||
<div class="col-xs-12 col-sm-8">
|
<div class="col-xs-12 col-sm-8">
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
{:build_heading(null, FALSE)}
|
{:build_heading(null, FALSE)}
|
||||||
<ul class="nav nav-tabs" data-field="type">
|
<ul class="nav nav-tabs" data-field="type">
|
||||||
<li class="{:$Think.get.type === null || $Think.get.type == '1' ? 'active' : ''}">
|
<li class="{:$Think.get.type === null || $Think.get.type == '1'|| $Think.get.type == '0' ? 'active' : ''}">
|
||||||
<a href="#t-1" data-value="1" data-toggle="tab">手动派单</a>
|
<a href="#t-1" data-value="1" data-toggle="tab">手动派单</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="{:$Think.get.type == '2' ? 'active' : ''}">
|
<li class="{:$Think.get.type == '2' ? 'active' : ''}">
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,20 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
||||||
|
|
||||||
// 为表格绑定事件
|
// 为表格绑定事件
|
||||||
Table.api.bindevent(table);
|
Table.api.bindevent(table);
|
||||||
|
|
||||||
|
|
||||||
|
$(".btn-all-read").click(function () {
|
||||||
|
Layer.confirm("确定要将所有消息标记为已读吗?", function (index) {
|
||||||
|
Fast.api.ajax({
|
||||||
|
url: 'message/markallread',
|
||||||
|
},function (){
|
||||||
|
Layer.close(index);
|
||||||
|
table.bootstrapTable('refresh');
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
},
|
},
|
||||||
add: function () {
|
add: function () {
|
||||||
Controller.api.bindevent();
|
Controller.api.bindevent();
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'cascader'], function
|
||||||
fixed: true,
|
fixed: true,
|
||||||
searchList: {
|
searchList: {
|
||||||
"0": __('Status 0'),
|
"0": __('Status 0'),
|
||||||
"10": __('Status 10'),
|
"10": __('Status 10'),
|
||||||
"20": __('Status 20'),
|
"20": __('Status 20'),
|
||||||
"30": __('Status 30'),
|
"30": __('Status 30'),
|
||||||
"40": __('Status 40'),
|
"40": __('Status 40'),
|
||||||
|
|
@ -101,6 +101,33 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'cascader'], function
|
||||||
"10": "my_dispatch"
|
"10": "my_dispatch"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
field: 'is_timeout',
|
||||||
|
title: '是否超时',
|
||||||
|
formatter: function (value, row) {
|
||||||
|
value = row.create_time;
|
||||||
|
|
||||||
|
if (row.status !== 10 || !value) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
// 解析 create_time 时间戳或字符串为时间对象
|
||||||
|
var createTime = typeof value === 'string' ? new Date(value.replace(/-/g, '/')) : new Date(value * 1000); // 兼容时间戳和时间字符串
|
||||||
|
var now = new Date();
|
||||||
|
var diffMinutes = (now - createTime) / (1000 * 60); // 计算分钟差
|
||||||
|
|
||||||
|
return diffMinutes > 20 ? '<span style="color: red;">超时</span>' : '<span class="label label-success">未超时</span>';;
|
||||||
|
},
|
||||||
|
searchList: {
|
||||||
|
"1": '超时',
|
||||||
|
"0": '未超时',
|
||||||
|
},
|
||||||
|
searchable: true,
|
||||||
|
custom: {
|
||||||
|
'1': 'danger',
|
||||||
|
'0': 'success'
|
||||||
|
},
|
||||||
|
operate: '=',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
field: 'dispatch_type',
|
field: 'dispatch_type',
|
||||||
title: '派单方式',
|
title: '派单方式',
|
||||||
|
|
@ -219,24 +246,6 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'cascader'], function
|
||||||
},
|
},
|
||||||
dropdown: "更多"
|
dropdown: "更多"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: "dispatch",
|
|
||||||
text: "派单",
|
|
||||||
title: "派单",
|
|
||||||
extend: 'data-toggle="tooltip" data-container="body"',
|
|
||||||
classname: 'btn btn-xs btn-info btn-dialog',
|
|
||||||
icon: 'fa fa-add',
|
|
||||||
url: function (row) {
|
|
||||||
return 'orders/dispatch/add?order_id=' + row.id;
|
|
||||||
},
|
|
||||||
visible: function (row) {
|
|
||||||
if (row.status == 10) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
refresh: true,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
{
|
||||||
name: "warning",
|
name: "warning",
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','layer'], function ($,
|
||||||
// {field: 'worker_id', title: __('Worker_id')},
|
// {field: 'worker_id', title: __('Worker_id')},
|
||||||
{field: 'worker_name', title: __('Worker_name'), operate: 'LIKE'},
|
{field: 'worker_name', title: __('Worker_name'), operate: 'LIKE'},
|
||||||
{field: 'worker_tel', title: __('Worker_tel'), operate: 'LIKE'},
|
{field: 'worker_tel', title: __('Worker_tel'), operate: 'LIKE'},
|
||||||
{field: 'type', title: __('Type'), searchList: {"1":__('Type 1'),"2":__('自动')}, formatter: Table.api.formatter.normal,
|
{field: 'type', title: __('Type'), searchList: {"1":__('Type 1'),"2":__('自动')}, formatter: Table.api.formatter.normal
|
||||||
// defaultValue: '1'
|
// defaultValue: '1'
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -186,7 +186,24 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','layer'], function ($,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
// {
|
||||||
|
// name: "dispatch",
|
||||||
|
// text: "派单",
|
||||||
|
// title: "派单",
|
||||||
|
// extend: 'data-toggle="tooltip" data-container="body"',
|
||||||
|
// classname: 'btn btn-xs btn-info btn-dialog',
|
||||||
|
// icon: 'fa fa-add',
|
||||||
|
// url: function (row) {
|
||||||
|
// return 'orders/dispatch/add?order_id=' + row.order_id;
|
||||||
|
// },
|
||||||
|
// visible: function (row) {
|
||||||
|
// if (row.type == 2) {
|
||||||
|
// return true;
|
||||||
|
// }
|
||||||
|
// return false;
|
||||||
|
// },
|
||||||
|
// refresh: true,
|
||||||
|
// },
|
||||||
{
|
{
|
||||||
name: 'addrecord',
|
name: 'addrecord',
|
||||||
text:"跟进",
|
text:"跟进",
|
||||||
|
|
@ -231,7 +248,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','layer'], function ($,
|
||||||
|
|
||||||
dropdown: "更多",
|
dropdown: "更多",
|
||||||
visible: function (row) {
|
visible: function (row) {
|
||||||
if (row.orderb.status >= 0 && row.orderb.status < 60 && row.status >0 && row.status < 60) {
|
return true;
|
||||||
|
if (row.orderb.status >= 0 && row.orderb.status < 60 && row.status >=0 && row.status < 60) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -250,7 +268,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','layer'], function ($,
|
||||||
refresh:true,
|
refresh:true,
|
||||||
dropdown: "更多",
|
dropdown: "更多",
|
||||||
visible: function (row) {
|
visible: function (row) {
|
||||||
if (row.orderb.status != 60 && row.status > 0 && row.status < 60) {
|
return true;
|
||||||
|
if (row.orderb.status != 60 && row.status >=0 && row.status < 60) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -268,7 +287,26 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','layer'], function ($,
|
||||||
dropdown: "更多",
|
dropdown: "更多",
|
||||||
|
|
||||||
visible: function (row) {
|
visible: function (row) {
|
||||||
if (row.orderb.status == 60 && row.status>0) {
|
return true;
|
||||||
|
if (row.orderb.status == 60 && row.status>=0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'aftersale',
|
||||||
|
text: '申请售后',
|
||||||
|
title: '申请售后',
|
||||||
|
classname: 'btn btn-dialog',
|
||||||
|
icon: 'fa fa-phone-square',
|
||||||
|
url: function(row){
|
||||||
|
return 'aftersales/aftersale/add/'+row.order_id;
|
||||||
|
},
|
||||||
|
dropdown: "更多",
|
||||||
|
visible: function (row) {
|
||||||
|
return true;
|
||||||
|
if (row.orderb.status !== -10 && row.orderb.status !== 70) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user