问题修复
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\common\controller\Backend;
|
||||
use app\common\Logic\OrderLogic;
|
||||
use Carbon\Carbon;
|
||||
use Carbon\Traits\Creator;
|
||||
use fast\Tree;
|
||||
use think\Db;
|
||||
use think\Exception;
|
||||
|
|
@ -146,6 +148,7 @@ class Order extends Backend
|
|||
'receive_type',
|
||||
'plan_time',
|
||||
'coupon_id',
|
||||
'create_time',
|
||||
'total',
|
||||
'online_amount',
|
||||
'aftersale_id'
|
||||
|
|
@ -153,18 +156,33 @@ class Order extends Backend
|
|||
->where($where);
|
||||
$filter = (array)json_decode(input()['filter'] ?? '', true);
|
||||
$admin_filter = $filter['user.nickname'] ?? false;
|
||||
|
||||
$is_timeout = $filter['is_timeout'] ?? null;
|
||||
// dd($create_time,$filter);
|
||||
if ($admin_filter) {
|
||||
$admin_ids = Admin::where('nickname', 'like', '%' . $admin_filter . '%')->column('id');
|
||||
$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) {
|
||||
$build->where('status', '>=', 0);
|
||||
}
|
||||
|
||||
if ($type == 2) {
|
||||
}elseif ($type == 2) {
|
||||
$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) {
|
||||
// 生成 SQL 语句
|
||||
|
|
@ -449,7 +467,7 @@ class Order extends Backend
|
|||
$insert [] = [
|
||||
'to_id' => $re,
|
||||
'type' => 1,
|
||||
'title' => '订单报错通知',
|
||||
'title' => '催单通知',
|
||||
'content' => '【催单通知】您有一条订单号为' . $order->order_no . '的订单被催单,请立即派单!'
|
||||
];
|
||||
}
|
||||
|
|
@ -823,7 +841,7 @@ class Order extends Backend
|
|||
$index = 0;
|
||||
|
||||
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)) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ use think\exception\DbException;
|
|||
use think\exception\PDOException;
|
||||
use think\exception\ValidateException;
|
||||
use think\Hook;
|
||||
use think\Loader;
|
||||
|
||||
/**
|
||||
* 派单列管理
|
||||
|
|
@ -68,12 +69,16 @@ class Dispatch2 extends Backend
|
|||
return $this->selectpage();
|
||||
}
|
||||
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
|
||||
->with(['orderb','lastRecord'])
|
||||
->auth($this->auth)
|
||||
->where($where)
|
||||
->order($sort, $order)
|
||||
->where($where);
|
||||
|
||||
$list = $list->order($sort, $order)
|
||||
->paginate($limit);
|
||||
|
||||
foreach ($list as &$row) {
|
||||
|
|
@ -488,4 +493,192 @@ class Dispatch2 extends Backend
|
|||
$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 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-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>
|
||||
|
||||
-->
|
||||
<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-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>
|
||||
<table id="table" class="table table-striped table-bordered table-hover table-nowrap"
|
||||
data-operate-edit="{:$auth->check('message/edit')}"
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
<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)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>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -16,40 +16,40 @@
|
|||
</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 id="c-customer" readonly class="form-control" type="text" value="{$order.customer|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 id="c-customer" readonly class="form-control" type="text" value="{$order.customer|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 id="c-tel" readonly class="form-control" type="text" value="{$order.tel|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 id="c-tel" readonly class="form-control" type="text" value="{$order.tel|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 id="c-address" readonly class="form-control" type="text" value="{$order.area.short_merge_name|htmlentities} {$order.address|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 id="c-address" readonly class="form-control" type="text" value="{$order.area.short_merge_name|htmlentities} {$order.address|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 id="c-item_title" readonly class="form-control" type="text" value="{$order.item_title|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 id="c-item_title" readonly class="form-control" type="text" value="{$order.item_title|htmlentities}">-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Order.detail')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-detail" readonly class="form-control" type="text" value="{$order.detail|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="form-group">-->
|
||||
<!-- <label class="control-label col-xs-12 col-sm-2">{:__('Order.detail')}:</label>-->
|
||||
<!-- <div class="col-xs-12 col-sm-8">-->
|
||||
<!-- <input id="c-detail" readonly class="form-control" type="text" value="{$order.detail|htmlentities}">-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
|
||||
{notempty name ='action'}
|
||||
|
||||
|
|
@ -69,12 +69,15 @@
|
|||
</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>
|
||||
</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>-->
|
||||
<!-- </div>-->
|
||||
|
||||
|
||||
|
||||
|
|
@ -135,7 +138,7 @@
|
|||
<label for="c-image" 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-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">
|
||||
<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>
|
||||
|
|
@ -148,8 +151,29 @@
|
|||
|
||||
{/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">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('完成图片')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
|
@ -166,12 +190,7 @@
|
|||
</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">
|
||||
<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="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<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">
|
||||
<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 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>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<div class="panel-heading">
|
||||
{:build_heading(null, FALSE)}
|
||||
<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>
|
||||
</li>
|
||||
<li class="{:$Think.get.type == '2' ? 'active' : ''}">
|
||||
|
|
|
|||
|
|
@ -54,6 +54,20 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|||
|
||||
// 为表格绑定事件
|
||||
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 () {
|
||||
Controller.api.bindevent();
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'cascader'], function
|
|||
fixed: true,
|
||||
searchList: {
|
||||
"0": __('Status 0'),
|
||||
"10": __('Status 10'),
|
||||
"10": __('Status 10'),
|
||||
"20": __('Status 20'),
|
||||
"30": __('Status 30'),
|
||||
"40": __('Status 40'),
|
||||
|
|
@ -101,6 +101,33 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'cascader'], function
|
|||
"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',
|
||||
title: '派单方式',
|
||||
|
|
@ -219,24 +246,6 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'cascader'], function
|
|||
},
|
||||
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",
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','layer'], function ($,
|
|||
// {field: 'worker_id', title: __('Worker_id')},
|
||||
{field: 'worker_name', title: __('Worker_name'), 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'
|
||||
},
|
||||
|
||||
|
|
@ -186,7 +186,24 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','layer'], function ($,
|
|||
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',
|
||||
text:"跟进",
|
||||
|
|
@ -231,7 +248,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','layer'], function ($,
|
|||
|
||||
dropdown: "更多",
|
||||
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 false;
|
||||
|
|
@ -250,7 +268,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','layer'], function ($,
|
|||
refresh:true,
|
||||
dropdown: "更多",
|
||||
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 false;
|
||||
|
|
@ -268,7 +287,26 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','layer'], function ($,
|
|||
dropdown: "更多",
|
||||
|
||||
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 false;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user