222 lines
7.4 KiB
PHP
222 lines
7.4 KiB
PHP
<?php namespace App\Support;
|
|
|
|
use DB;
|
|
|
|
class Dialog
|
|
{
|
|
public static $items = [
|
|
'user' => [
|
|
'title' => '用户',
|
|
'table' => 'user',
|
|
'field' => 'name',
|
|
'url' => 'user/user/dialog',
|
|
],
|
|
'role' => [
|
|
'title' => '角色',
|
|
'table' => 'role',
|
|
'field' => 'name',
|
|
'url' => 'user/role/dialog',
|
|
],
|
|
'department' => [
|
|
'title' => '部门',
|
|
'table' => 'department',
|
|
'field' => 'name',
|
|
'url' => 'user/department/dialog',
|
|
],
|
|
'supplier' => [
|
|
'title' => '供应商',
|
|
'table' => 'supplier',
|
|
'join' => 'user',
|
|
'field' => 'user.name',
|
|
'url' => 'supplier/supplier/dialog',
|
|
],
|
|
'customer' => [
|
|
'title' => '客户',
|
|
'table' => 'customer',
|
|
'join' => 'user',
|
|
'field' => 'user.name',
|
|
'url' => 'customer/customer/dialog',
|
|
],
|
|
'customer_contact' => [
|
|
'title' => '客户联系人',
|
|
'table' => 'customer_contact',
|
|
'join' => 'user',
|
|
'field' => 'user.name',
|
|
'url' => 'customer/contact/dialog',
|
|
],
|
|
'supplier_product' => [
|
|
'title' => '商品',
|
|
'table' => 'product',
|
|
'field' => 'name',
|
|
'url' => 'supplier/product/dialog',
|
|
],
|
|
'product' => [
|
|
'title' => '产品',
|
|
'table' => 'product',
|
|
'field' => 'name',
|
|
'url' => 'product/product/dialog',
|
|
],
|
|
'promotion' => [
|
|
'title' => '促销',
|
|
'table' => 'promotion',
|
|
'field' => 'id',
|
|
'url' => 'promotion/promotion/dialog',
|
|
],
|
|
'region' => [
|
|
'title' => '销售组',
|
|
'table' => 'customer_region',
|
|
'field' => 'name',
|
|
'url' => 'customer/region/dialog',
|
|
],
|
|
'hr' => [
|
|
'title' => '人事档案',
|
|
'table' => 'hr',
|
|
'field' => 'name',
|
|
'url' => 'hr/hr/dialog',
|
|
],
|
|
'logistics' => [
|
|
'title' => '物流',
|
|
'table' => 'logistics',
|
|
'field' => 'name',
|
|
'url' => 'order/logistics/dialog',
|
|
],
|
|
];
|
|
|
|
public static function text($item, $value)
|
|
{
|
|
$dialog = self::$items[$item];
|
|
|
|
$rows = '';
|
|
|
|
if ($value) {
|
|
$ids = explode(',', $value);
|
|
|
|
$table = $dialog['table'];
|
|
$join = $dialog['join'];
|
|
|
|
if ($join) {
|
|
$rows = DB::table($table)
|
|
->LeftJoin('user', 'user.id', '=', $table.'.user_id')
|
|
->whereIn($table.'.id', $ids)
|
|
->pluck($dialog['field'])->implode(',');
|
|
} else {
|
|
$rows = DB::table($table)
|
|
->whereIn('id', $ids)
|
|
->pluck($dialog['field'])->implode(',');
|
|
}
|
|
}
|
|
return $rows;
|
|
}
|
|
|
|
public static function show($key, $data, $multi = 0, $readonly = 0)
|
|
{
|
|
$id = $key.'_id';
|
|
$name = $key.'_name';
|
|
|
|
if ($readonly == 0) {
|
|
$html[] = '<div class="select-group input-group">';
|
|
} else {
|
|
$html[] = '<div class="select-group">';
|
|
}
|
|
|
|
if ($readonly == 0) {
|
|
$arrow = $multi == 1 ? 'icon-group' : 'icon-user';
|
|
$option = "dialogShow('$id','$name','$multi');";
|
|
$html[] = '<div class="form-control input-sm" onclick="'.$option .'" id="'.$name.'">'.$data[$name].'</div>';
|
|
|
|
$html[] = '<div class="input-group-btn">';
|
|
$html[] = '<button type="button" onclick="'.$option .'" class="btn btn-sm btn-default"><i class="icon '.$arrow.'"></i></button>';
|
|
$html[] = '</div>';
|
|
} else {
|
|
$html[] = '<div class="form-control input-sm" id="'.$name.'">'.$data[$name].'</div>';
|
|
}
|
|
$html[] = '<input type="hidden" id="'.$id.'" name="'.$id.'" value="'.$data[$id].'">';
|
|
$html[] = '</div>';
|
|
return join("\n", $html);
|
|
}
|
|
|
|
public static function user($item, $name, $value = '', $multi = 0, $readonly = 0, $width = 'auto')
|
|
{
|
|
$rows = '';
|
|
|
|
$dialog = self::$items[$item];
|
|
|
|
if ($value) {
|
|
$ids = explode(',', $value);
|
|
|
|
$table = $dialog['table'];
|
|
$join = $dialog['join'];
|
|
|
|
if ($join) {
|
|
$rows = DB::table($table)
|
|
->LeftJoin('user', 'user.id', '=', $table.'.user_id')
|
|
->whereIn($table.'.id', $ids)
|
|
->pluck($dialog['field'])->implode(',');
|
|
} else {
|
|
$rows = DB::table($table)
|
|
->whereIn('id', $ids)
|
|
->pluck($dialog['field'])->implode(',');
|
|
}
|
|
}
|
|
|
|
$id = str_replace(['[',']'], ['_',''], $name);
|
|
|
|
if ($readonly == 0) {
|
|
$width = is_numeric($width) ? 'width:'.$width.'px;' : '';
|
|
$html[] = '<div class="select-group input-group">';
|
|
} else {
|
|
$html[] = '<div class="select-group">';
|
|
}
|
|
|
|
if ($readonly == 0) {
|
|
$html[] = '<input class="form-control input-sm" data-toggle="dialog-view" data-title="'.$dialog['title'].'" readonly="readonly" data-url="'.$dialog['url'].'" data-id="'.$id.'" data-multi="'.$multi.'" value="'.$rows.'" style="'.$width.'cursor:pointer;" id="'.$id.'_text" />';
|
|
$html[] = '<div class="input-group-btn">';
|
|
$html[] = '<a data-toggle="dialog-clear" data-id="'.$id.'" class="btn btn-sm btn-default"><i class="fa fa-times"></i></a>';
|
|
$html[] = '</div>';
|
|
} else {
|
|
$html[] = '<div class="form-control input-sm" id="'.$id.'_text">'.$rows.'</div>';
|
|
}
|
|
$html[] = '<input type="hidden" id="'.$id.'" name="'.$name.'" value="'.$value.'">';
|
|
$html[] = '</div>';
|
|
return join("\n", $html);
|
|
}
|
|
|
|
public static function search($data, $query)
|
|
{
|
|
$params = [];
|
|
parse_str($query, $params);
|
|
|
|
$defaultParams = [
|
|
'prefix' => 1,
|
|
'multi' => 0,
|
|
'readonly' => 0,
|
|
'width' => '100%',
|
|
'title' => '',
|
|
'url' => 'index/api/dialog',
|
|
];
|
|
|
|
$params = array_merge($defaultParams, $params);
|
|
extract($params);
|
|
|
|
$_id = str_replace(['[',']'], ['_',''], $id);
|
|
$_name = str_replace(['[',']'], ['_',''], $name);
|
|
|
|
$jq = '';
|
|
foreach ($params as $key => $value) {
|
|
$jq .= ' data-'.$key.'="'. $value.'"';
|
|
}
|
|
|
|
$params['id'] = str_replace(['[',']'], ['_',''], $id);
|
|
$params['name'] = str_replace(['[',']'], ['_',''], $name);
|
|
|
|
$e[] = '<div class="select-group input-group">';
|
|
$e[] = '<input class="form-control input-sm" style="width:'.$params['width'].';cursor:pointer;" readonly="readonly" data-toggle="dialog-view"'.$jq.' name="'.$name.'" value="'.$data[$name].'" id="'.$params['id'].'_text" />';
|
|
$e[] = '<div class="input-group-btn">';
|
|
$e[] = '<a data-toggle="dialog-clear" data-id="'.$params['id'].'" class="btn btn-sm btn-default"><i class="fa fa-times"></i></a>';
|
|
$e[] = '</div>';
|
|
$e[] = '<input type="hidden" id="'.$params['id'].'" name="'.$id.'" value="'.$data[$id].'">';
|
|
$e[] = '</div>';
|
|
return join("\n", $e);
|
|
}
|
|
}
|