commit
54bf3839a1
2963 changed files with 660126 additions and 0 deletions
@ -0,0 +1,5 @@ |
|||||
|
<IfModule mod_rewrite.c> |
||||
|
RewriteEngine on |
||||
|
RewriteCond %{REQUEST_URI} !^/public/ |
||||
|
RewriteRule ^(.*)$ /public/$1 [L] |
||||
|
</IfModule> |
||||
@ -0,0 +1,26 @@ |
|||||
|
<!doctype html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> |
||||
|
<title>404</title> |
||||
|
<style> |
||||
|
body{ |
||||
|
background-color:#444; |
||||
|
font-size:14px; |
||||
|
} |
||||
|
h3{ |
||||
|
font-size:60px; |
||||
|
color:#eee; |
||||
|
text-align:center; |
||||
|
padding-top:30px; |
||||
|
font-weight:normal; |
||||
|
} |
||||
|
</style> |
||||
|
</head> |
||||
|
|
||||
|
<body> |
||||
|
<h3>404,您请求的文件不存在!</h3> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1 @@ |
|||||
|
deny from all |
||||
@ -0,0 +1,4 @@ |
|||||
|
<?php |
||||
|
return [ |
||||
|
'pathinfo_depr' => '/', |
||||
|
]; |
||||
@ -0,0 +1,164 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use think\Db; |
||||
|
use think\facade\Request; |
||||
|
class Ad extends Common |
||||
|
{ |
||||
|
public function initialize(){ |
||||
|
parent::initialize(); |
||||
|
} |
||||
|
//广告列表 |
||||
|
public function index(){ |
||||
|
if(Request::isAjax()) { |
||||
|
$key = input('post.key'); |
||||
|
$this->assign('testkey', $key); |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = Db::table(config('database.prefix') . 'ad')->alias('a') |
||||
|
->join(config('database.prefix') . 'adsense at', 'a.as_id = at.as_id', 'left') |
||||
|
->field('a.*,at.name as typename') |
||||
|
->where('a.title', 'like', "%" . $key . "%") |
||||
|
->order('a.sort') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
foreach ($list['data'] as $k=>$v){ |
||||
|
$list['data'][$k]['addtime'] = date('Y-m-d H:s',$v['addtime']); |
||||
|
} |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function add(){ |
||||
|
if(Request::isAjax()) { |
||||
|
//构建数组 |
||||
|
$data = Request::except('file'); |
||||
|
$data['addtime'] = time(); |
||||
|
db('ad')->insert($data); |
||||
|
$result['code'] = 1; |
||||
|
$result['msg'] = '广告添加成功!'; |
||||
|
cache('adList', NULL); |
||||
|
$result['url'] = url('index'); |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$adtypeList=db('adsense')->order('sort')->select(); |
||||
|
$this->assign('adtypeList',json_encode($adtypeList,true)); |
||||
|
|
||||
|
$this->assign('title',lang('add').lang('ad')); |
||||
|
$this->assign('info','null'); |
||||
|
$this->assign('selected', 'null'); |
||||
|
return $this->fetch('form'); |
||||
|
} |
||||
|
} |
||||
|
public function edit(){ |
||||
|
if(Request::isAjax()) { |
||||
|
$data = Request::except('file'); |
||||
|
db('ad')->update($data); |
||||
|
$result['code'] = 1; |
||||
|
$result['msg'] = '广告修改成功!'; |
||||
|
cache('adList', NULL); |
||||
|
$result['url'] = url('index'); |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$adtypeList=db('adsense')->order('sort')->select(); |
||||
|
$id=input('id'); |
||||
|
$adInfo=db('ad')->where(array('id'=>$id))->find(); |
||||
|
$this->assign('adtypeList',json_encode($adtypeList,true)); |
||||
|
|
||||
|
$selected = db('adsense')->where('as_id',$adInfo['as_id'])->find(); |
||||
|
$this->assign('selected',json_encode($selected,true)); |
||||
|
|
||||
|
$this->assign('info',json_encode($adInfo,true)); |
||||
|
$this->assign('title',lang('edit').lang('ad')); |
||||
|
return $this->fetch('form'); |
||||
|
} |
||||
|
} |
||||
|
//设置广告状态 |
||||
|
public function editState(){ |
||||
|
$id=input('post.id'); |
||||
|
$open=input('post.open'); |
||||
|
if(db('ad')->where('id='.$id)->update(['open'=>$open])!==false){ |
||||
|
return ['status'=>1,'msg'=>'设置成功!']; |
||||
|
}else{ |
||||
|
return ['status'=>0,'msg'=>'设置失败!']; |
||||
|
} |
||||
|
} |
||||
|
public function adOrder(){ |
||||
|
$ad=db('ad'); |
||||
|
$data = input('post.'); |
||||
|
if($ad->update($data)!==false){ |
||||
|
cache('adList', NULL); |
||||
|
return $result = ['msg' => '操作成功!','url'=>url('index'), 'code' =>1]; |
||||
|
}else{ |
||||
|
return $result = ['code'=>0,'msg'=>'操作失败!']; |
||||
|
} |
||||
|
} |
||||
|
public function del(){ |
||||
|
db('ad')->where(array('id'=>input('id')))->delete(); |
||||
|
cache('adList', NULL); |
||||
|
return ['code'=>1,'msg'=>'删除成功!']; |
||||
|
} |
||||
|
public function delall(){ |
||||
|
$map[] =array('id','in',input('param.ids/a')); |
||||
|
db('ad')->where($map)->delete(); |
||||
|
cache('adList', NULL); |
||||
|
$result['msg'] = '删除成功!'; |
||||
|
$result['code'] = 1; |
||||
|
$result['url'] = url('index'); |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
/***************************位置*****************************/ |
||||
|
//位置 |
||||
|
public function type(){ |
||||
|
if(Request::isAjax()) { |
||||
|
$key = input('key'); |
||||
|
$this->assign('testkey', $key); |
||||
|
$list = db('adsense')->where('name', 'like', "%" . $key . "%")->order('sort')->select(); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list,'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function typeOrder(){ |
||||
|
$ad_type=db('adsense'); |
||||
|
$data = input('post.'); |
||||
|
if($ad_type->update($data)!==false){ |
||||
|
return $result = ['msg' => '操作成功!','url'=>url('type'), 'code' =>1]; |
||||
|
}else{ |
||||
|
return $result = ['code'=>0,'msg'=>'操作失败!']; |
||||
|
} |
||||
|
} |
||||
|
public function addType(){ |
||||
|
if(Request::isAjax()) { |
||||
|
db('adsense')->insert(input('post.')); |
||||
|
$result['code'] = 1; |
||||
|
$result['msg'] = '广告位保存成功!'; |
||||
|
$result['url'] = url('type'); |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$this->assign('title',lang('add').lang('ad').'位'); |
||||
|
$this->assign('info','null'); |
||||
|
return $this->fetch('typeForm'); |
||||
|
} |
||||
|
} |
||||
|
public function editType(){ |
||||
|
if(Request::isAjax()) { |
||||
|
db('adsense')->update(input('post.')); |
||||
|
$result['code'] = 1; |
||||
|
$result['msg'] = '广告位修改成功!'; |
||||
|
$result['url'] = url('type'); |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$as_id=input('param.as_id'); |
||||
|
$info=db('adsense')->where('as_id',$as_id)->find(); |
||||
|
$this->assign('title',lang('edit').lang('ad').'位'); |
||||
|
$this->assign('info',json_encode($info,true)); |
||||
|
return $this->fetch('typeForm'); |
||||
|
} |
||||
|
} |
||||
|
public function delType(){ |
||||
|
$map['as_id'] = input('param.as_id'); |
||||
|
db('adsense')->where($map)->delete();//删除广告位 |
||||
|
db('ad')->where($map)->delete();//删除该广告位所有广告 |
||||
|
return ['code'=>1,'msg'=>'删除成功!']; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,17 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
//use think\{Controller,Db,Input};// |
||||
|
use think\Controller; |
||||
|
use think\Db; |
||||
|
use think\Input; |
||||
|
|
||||
|
class Ajax extends Common{ |
||||
|
public function getRegion(){ |
||||
|
$Region=db("region"); |
||||
|
$map['pid']=input("pid"); |
||||
|
$map['type']=input("type"); |
||||
|
$list=$Region->where($map)->select(); |
||||
|
echo json_encode($list); |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,350 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use function MongoDB\BSON\toJSON; |
||||
|
use think\Db; |
||||
|
use clt\Leftnav; |
||||
|
use app\admin\model\Admin; |
||||
|
use app\admin\model\AuthGroup; |
||||
|
use app\admin\model\authRule; |
||||
|
use think\facade\Request; |
||||
|
use think\Validate; |
||||
|
use think\facade\Session; |
||||
|
class Auth extends Common |
||||
|
{ |
||||
|
//管理员列表 |
||||
|
public function adminList(){ |
||||
|
if(Request::isAjax()){ |
||||
|
$val=input('val'); |
||||
|
$url['val'] = $val; |
||||
|
$this->assign('testval',$val); |
||||
|
$map=''; |
||||
|
if($val){ |
||||
|
$map['username|email|tel']= array('like',"%".$val."%"); |
||||
|
} |
||||
|
if (session('aid')!=1){ |
||||
|
$map='admin_id='.session('aid'); |
||||
|
|
||||
|
} |
||||
|
$list=Db::table(config('database.prefix').'admin')->alias('a') |
||||
|
->join(config('database.prefix').'auth_group ag','a.group_id = ag.group_id','left') |
||||
|
->field('a.*,ag.title') |
||||
|
->where($map) |
||||
|
->select(); |
||||
|
if(!empty($list)){ |
||||
|
foreach($list as $k=>$v){ |
||||
|
$curname = Session::get('username'); |
||||
|
$curget = Db::table('admin')->where(['username'=>$v['username']])->field('custlimit')->find(); |
||||
|
$custlimit= $curget['custlimit']; |
||||
|
if(!$custlimit){ |
||||
|
$sysinfo = Db::table('system')->where(['id'=>1])->field('maxgetnum,custlimit')->find(); |
||||
|
$custlimit = $sysinfo['custlimit']; |
||||
|
} |
||||
|
$wherecust = []; |
||||
|
$wherecust['pr_user'] = $v['username']; |
||||
|
$wherecust['status'] = 1; |
||||
|
$wherecust['ispublic'] = 3; |
||||
|
$wherecust['issuccess'] = -1; |
||||
|
$num = Db::table('crm_leads')->where($wherecust)->count('id'); |
||||
|
$list[$k]['lrnum'] = $num; |
||||
|
$list[$k]['slrnum'] = $custlimit - $num; |
||||
|
} |
||||
|
} |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list,'rel'=>1]; |
||||
|
} |
||||
|
return view(); |
||||
|
} |
||||
|
|
||||
|
public function adminAdd(){ |
||||
|
if(Request::isAjax()){ |
||||
|
$data = input('post.'); |
||||
|
$check_user = Admin::get(['username'=>$data['username']]); |
||||
|
if ($check_user) { |
||||
|
return $result = ['code'=>0,'msg'=>'用户已存在,请重新输入用户名!']; |
||||
|
} |
||||
|
$data['pwd'] = input('post.pwd', '', 'md5'); |
||||
|
$data['add_time'] = time(); |
||||
|
$data['ip'] = request()->ip(); |
||||
|
//验证 |
||||
|
$msg = $this->validate($data,'app\admin\validate\Admin'); |
||||
|
if($msg!='true'){ |
||||
|
return $result = ['code'=>0,'msg'=>$msg]; |
||||
|
} |
||||
|
//单独验证密码 |
||||
|
$checkPwd = Validate::make([input('post.pwd')=>'require']); |
||||
|
if (false === $checkPwd) { |
||||
|
return $result = ['code'=>0,'msg'=>'密码不能为空!']; |
||||
|
} |
||||
|
//添加 |
||||
|
if (Admin::create($data)) { |
||||
|
return ['code'=>1,'msg'=>'管理员添加成功!','url'=>url('adminList')]; |
||||
|
} else { |
||||
|
return ['code'=>0,'msg'=>'管理员添加失败!']; |
||||
|
} |
||||
|
}else{ |
||||
|
$auth_group = AuthGroup::all(); |
||||
|
$this->assign('authGroup',$auth_group); |
||||
|
$this->assign('title',lang('add').lang('admin')); |
||||
|
$this->assign('info','null'); |
||||
|
$this->assign('selected', 'null'); |
||||
|
return view('adminForm'); |
||||
|
} |
||||
|
} |
||||
|
//删除管理员 |
||||
|
public function adminDel(){ |
||||
|
$admin_id=input('post.admin_id'); |
||||
|
if (session('aid')==1){ |
||||
|
Admin::where('admin_id','=',$admin_id)->delete(); |
||||
|
return $result = ['code'=>1,'msg'=>'删除成功!']; |
||||
|
}else{ |
||||
|
return $result = ['code'=>0,'msg'=>'您没有删除管理员的权限!']; |
||||
|
} |
||||
|
} |
||||
|
//修改管理员状态 |
||||
|
public function adminState(){ |
||||
|
$id=input('post.id'); |
||||
|
$is_open=input('post.is_open'); |
||||
|
if (empty($id)){ |
||||
|
$result['status'] = 0; |
||||
|
$result['info'] = '用户ID不存在!'; |
||||
|
$result['url'] = url('adminList'); |
||||
|
return $result; |
||||
|
} |
||||
|
db('admin')->where('admin_id='.$id)->update(['is_open'=>$is_open]); |
||||
|
$result['status'] = 1; |
||||
|
$result['info'] = '用户状态修改成功!'; |
||||
|
$result['url'] = url('adminList'); |
||||
|
return $result; |
||||
|
} |
||||
|
//更新管理员信息 |
||||
|
public function adminEdit(){ |
||||
|
if(request()->isPost()){ |
||||
|
//return $result = ['code'=>0,'msg'=>'当前为演示系统无法修改信息!']; |
||||
|
$data = input('post.'); |
||||
|
$pwd=input('post.pwd'); |
||||
|
$map[] = ['admin_id','<>',$data['admin_id']]; |
||||
|
$where['admin_id'] = $data['admin_id']; |
||||
|
|
||||
|
if($data['username']){ |
||||
|
$map[] = ['username','=',$data['username']]; |
||||
|
$check_user = Admin::where($map)->find(); |
||||
|
if ($check_user) { |
||||
|
return $result = ['code'=>0,'msg'=>'用户已存在,请重新输入用户名!']; |
||||
|
} |
||||
|
} |
||||
|
if ($pwd){ |
||||
|
$data['pwd']=input('post.pwd','','md5'); |
||||
|
}else{ |
||||
|
unset($data['pwd']); |
||||
|
} |
||||
|
$msg = $this->validate($data,'app\admin\validate\Admin'); |
||||
|
if($msg!='true'){ |
||||
|
return $result = ['code'=>0,'msg'=>$msg]; |
||||
|
} |
||||
|
Admin::update($data,$where); |
||||
|
if( $data['admin_id'] == session('aid')){ |
||||
|
session('username',$data['username']); |
||||
|
$avatar = $data['avatar']==''?'/static/admin/images/0.jpg':$data['avatar']; |
||||
|
session('avatar',$avatar); |
||||
|
} |
||||
|
return $result = ['code'=>1,'msg'=>'管理员修改成功!','url'=>url('adminList')]; |
||||
|
}else{ |
||||
|
$auth_group = AuthGroup::all(); |
||||
|
$admin = new Admin(); |
||||
|
$info = $admin->getInfo(input('admin_id')); |
||||
|
$this->assign('info', json_encode($info,true)); |
||||
|
$this->assign('authGroup',$auth_group); |
||||
|
$this->assign('title',lang('edit').lang('admin')); |
||||
|
return view('adminForm'); |
||||
|
} |
||||
|
} |
||||
|
/*-----------------------用户组管理----------------------*/ |
||||
|
//用户组管理 |
||||
|
public function adminGroup(){ |
||||
|
if(request()->isPost()){ |
||||
|
$list = AuthGroup::all(); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list,'rel'=>1]; |
||||
|
} |
||||
|
return view(); |
||||
|
} |
||||
|
//删除管理员分组 |
||||
|
public function groupDel(){ |
||||
|
AuthGroup::where('group_id','=',input('id'))->delete(); |
||||
|
return $result = ['code'=>1,'msg'=>'删除成功!']; |
||||
|
} |
||||
|
//添加分组 |
||||
|
public function groupAdd(){ |
||||
|
if(request()->isPost()){ |
||||
|
$data=input('post.'); |
||||
|
$data['addtime']=time(); |
||||
|
AuthGroup::create($data); |
||||
|
$result['msg'] = '用户组添加成功!'; |
||||
|
$result['url'] = url('adminGroup'); |
||||
|
$result['code'] = 1; |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$this->assign('title','添加用户组'); |
||||
|
$this->assign('info','null'); |
||||
|
return $this->fetch('groupForm'); |
||||
|
} |
||||
|
} |
||||
|
//修改分组 |
||||
|
public function groupEdit(){ |
||||
|
if(request()->isPost()) { |
||||
|
$data=input('post.'); |
||||
|
$where['group_id'] = $data['group_id']; |
||||
|
AuthGroup::update($data,$where); |
||||
|
$result = ['code'=>1,'msg'=>'用户组修改成功!','url'=>url('adminGroup')]; |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$id = input('id'); |
||||
|
$info = AuthGroup::get(['group_id'=>$id]); |
||||
|
$this->assign('info', json_encode($info,true)); |
||||
|
$this->assign('title','编辑用户组'); |
||||
|
return $this->fetch('groupForm'); |
||||
|
} |
||||
|
} |
||||
|
//分组配置规则 |
||||
|
public function groupAccess(){ |
||||
|
$nav = new Leftnav(); |
||||
|
$admin_rule=db('auth_rule')->field('id,pid,title')->order('sort asc')->select(); |
||||
|
$rules = db('auth_group')->where('group_id',input('id'))->value('rules'); |
||||
|
$arr = $nav->auth($admin_rule,$pid=0,$rules); |
||||
|
$arr[] = array( |
||||
|
"id"=>0, |
||||
|
"pid"=>0, |
||||
|
"title"=>"全部", |
||||
|
"open"=>true |
||||
|
); |
||||
|
$this->assign('data',json_encode($arr,true)); |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function groupSetaccess(){ |
||||
|
$rules = input('post.rules'); |
||||
|
if(empty($rules)){ |
||||
|
return array('msg'=>'请选择权限!','code'=>0); |
||||
|
} |
||||
|
$data = input('post.'); |
||||
|
$where['group_id'] = $data['group_id']; |
||||
|
if(AuthGroup::update($data,$where)){ |
||||
|
return array('msg'=>'权限配置成功!','url'=>url('adminGroup'),'code'=>1); |
||||
|
}else{ |
||||
|
return array('msg'=>'保存错误','code'=>0); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/********************************权限管理*******************************/ |
||||
|
public function adminRule(){ |
||||
|
if(request()->isPost()){ |
||||
|
$arr = cache('authRuleList'); |
||||
|
if(!$arr){ |
||||
|
$arr = Db::name('authRule')->order('pid asc,sort asc')->select(); |
||||
|
foreach($arr as $k=>$v){ |
||||
|
$arr[$k]['lay_is_open']=false; |
||||
|
} |
||||
|
cache('authRuleList', $arr, 3600); |
||||
|
} |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$arr,'is'=>true,'tip'=>'操作成功']; |
||||
|
} |
||||
|
return view(); |
||||
|
} |
||||
|
public function clear(){ |
||||
|
$arr = Db::name('authRule')->where('pid','neq',0)->select(); |
||||
|
foreach ($arr as $k=>$v){ |
||||
|
$p = Db::name('authRule')->where('id',$v['pid'])->find(); |
||||
|
if(!$p){ |
||||
|
Db::name('authRule')->where('id',$v['id'])->delete(); |
||||
|
} |
||||
|
} |
||||
|
cache('authRule', NULL); |
||||
|
cache('authRuleList', NULL); |
||||
|
$this->success('清除成功'); |
||||
|
} |
||||
|
public function ruleAdd(){ |
||||
|
if(request()->isPost()){ |
||||
|
$data = input('post.'); |
||||
|
$data['addtime'] = time(); |
||||
|
authRule::create($data); |
||||
|
cache('authRule', NULL); |
||||
|
cache('authRuleList', NULL); |
||||
|
cache('addAuthRuleList', NULL); |
||||
|
return $result = ['code'=>1,'msg'=>'权限添加成功!','url'=>url('adminRule')]; |
||||
|
}else{ |
||||
|
$nav = new Leftnav(); |
||||
|
$arr = cache('addAuthRuleList'); |
||||
|
if(!$arr){ |
||||
|
$authRule = authRule::all(function($query){ |
||||
|
$query->order('sort', 'asc'); |
||||
|
}); |
||||
|
$arr = $nav->menu($authRule); |
||||
|
cache('addAuthRuleList', $arr, 3600); |
||||
|
} |
||||
|
$this->assign('admin_rule',$arr);//权限列表 |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
} |
||||
|
public function ruleOrder(){ |
||||
|
$auth_rule=db('auth_rule'); |
||||
|
$data = input('post.'); |
||||
|
if($auth_rule->update($data)!==false){ |
||||
|
cache('authRuleList', NULL); |
||||
|
cache('authRule', NULL); |
||||
|
cache('addAuthRuleList', NULL); |
||||
|
return $result = ['code'=>1,'msg'=>'排序更新成功!','url'=>url('adminRule')]; |
||||
|
}else{ |
||||
|
return $result = ['code'=>0,'msg'=>'排序更新失败!']; |
||||
|
} |
||||
|
} |
||||
|
//设置权限菜单显示或者隐藏 |
||||
|
public function ruleState(){ |
||||
|
$id=input('post.id'); |
||||
|
$menustatus=input('post.menustatus'); |
||||
|
if(db('auth_rule')->where('id='.$id)->update(['menustatus'=>$menustatus])!==false){ |
||||
|
cache('authRule', NULL); |
||||
|
cache('authRuleList', NULL); |
||||
|
cache('addAuthRuleList', NULL); |
||||
|
return ['status'=>1,'msg'=>'设置成功!']; |
||||
|
}else{ |
||||
|
return ['status'=>0,'msg'=>'设置失败!']; |
||||
|
} |
||||
|
} |
||||
|
//设置权限是否验证 |
||||
|
public function ruleTz(){ |
||||
|
$id=input('post.id'); |
||||
|
$authopen=input('post.authopen'); |
||||
|
if(db('auth_rule')->where('id='.$id)->update(['authopen'=>$authopen])!==false){ |
||||
|
cache('authRule', NULL); |
||||
|
cache('authRuleList', NULL); |
||||
|
cache('addAuthRuleList', NULL); |
||||
|
return ['status'=>1,'msg'=>'设置成功!']; |
||||
|
}else{ |
||||
|
return ['status'=>0,'msg'=>'设置失败!']; |
||||
|
} |
||||
|
} |
||||
|
public function ruleDel(){ |
||||
|
authRule::destroy(['id'=>input('param.id')]); |
||||
|
cache('authRule', NULL); |
||||
|
cache('authRuleList', NULL); |
||||
|
cache('addAuthRuleList', NULL); |
||||
|
return $result = ['code'=>1,'msg'=>'删除成功!']; |
||||
|
} |
||||
|
|
||||
|
public function ruleEdit(){ |
||||
|
if(request()->isPost()) { |
||||
|
$datas = input('post.'); |
||||
|
if(authRule::update($datas)) { |
||||
|
cache('authRule', NULL); |
||||
|
cache('authRuleList', NULL); |
||||
|
cache('addAuthRuleList', NULL); |
||||
|
return json(['code' => 1, 'msg' => '保存成功!', 'url' => url('adminRule')]); |
||||
|
} else { |
||||
|
return json(['code' => 0, 'msg' =>'保存失败!']); |
||||
|
} |
||||
|
}else{ |
||||
|
$admin_rule = authRule::get(function($query){ |
||||
|
$query->where(['id'=>input('id')])->field('id,href,title,icon,sort,menustatus'); |
||||
|
}); |
||||
|
$this->assign('rule',$admin_rule); |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,342 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use think\Db; |
||||
|
use clt\Tree; |
||||
|
use think\facade\Request; |
||||
|
use think\facade\Env; |
||||
|
class Category extends Common |
||||
|
{ |
||||
|
protected $dao, $categorys , $module,$groupId; |
||||
|
function initialize() |
||||
|
{ |
||||
|
parent::initialize(); |
||||
|
foreach ((array)$this->module as $rw){ |
||||
|
if($rw['type']==1 && $rw['status']==1){ |
||||
|
$data['module'][$rw['id']] = $rw; |
||||
|
} |
||||
|
} |
||||
|
$this->module=$data['module']; |
||||
|
$this->assign($data); |
||||
|
unset($data); |
||||
|
$this->dao = db('category'); |
||||
|
$this->groupId = Db::name('admin')->where('admin_id',session('aid'))->value('group_id'); |
||||
|
} |
||||
|
public function index() |
||||
|
{ |
||||
|
if ($this->categorys) { |
||||
|
foreach ($this->categorys as $r) { |
||||
|
if(session('aid')==1){ |
||||
|
if ($r['module'] == 'page') { |
||||
|
$r['str_manage'] = '<a class="orange" href="' . url('page/edit', array('id' => $r['id'])) . '" title="修改内容"><i class="icon icon-file-text2"></i></a> | '; |
||||
|
} else { |
||||
|
$r['str_manage'] = ''; |
||||
|
} |
||||
|
$r['str_manage'] .= '<a class="blue" title="添加子栏目" href="' . url('Category/add', array('pid' => $r['id'])) . '"> <i class="icon icon-plus"></i></a> | <a class="green" href="' . url('Category/edit', array('id' => $r['id'])) . '" title="修改"><i class="icon icon-pencil2"></i></a> | <a class="red" href="javascript:del(\'' . $r['id'] . '\')" title="删除"><i class="icon icon-bin"></i></a> '; |
||||
|
|
||||
|
$r['modulename'] = $this->module[$r['moduleid']]['title']; |
||||
|
|
||||
|
$r['dis'] = $r['ismenu'] == 1 ? '<font color="green">显示</font>' : '<font color="red">不显示</font>'; |
||||
|
$array[] = $r; |
||||
|
}else{ |
||||
|
$groupArr = explode(',',$r['readgroup']); |
||||
|
if(in_array($this->groupId,$groupArr)){ |
||||
|
if ($r['module'] == 'page') { |
||||
|
$r['str_manage'] = '<a class="orange" href="' . url('page/edit', array('id' => $r['id'])) . '" title="修改内容"><i class="icon icon-file-text2"></i></a> | '; |
||||
|
} else { |
||||
|
$r['str_manage'] = ''; |
||||
|
} |
||||
|
$r['str_manage'] .= '<a class="blue" title="添加子栏目" href="' . url('Category/add', array('pid' => $r['id'])) . '"> <i class="icon icon-plus"></i></a> | <a class="green" href="' . url('Category/edit', array('id' => $r['id'])) . '" title="修改"><i class="icon icon-pencil2"></i></a> | <a class="red" href="javascript:del(\'' . $r['id'] . '\')" title="删除"><i class="icon icon-bin"></i></a> '; |
||||
|
|
||||
|
$r['modulename'] = $this->module[$r['moduleid']]['title']; |
||||
|
|
||||
|
$r['dis'] = $r['ismenu'] == 1 ? '<font color="green">显示</font>' : '<font color="red">不显示</font>'; |
||||
|
$array[] = $r; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
$str = "<tr><td class='visible-lg visible-md'>\$id</td>"; |
||||
|
$str .= "<td class='text-left'>\$spacer<a href='/admin/\$module/\$action/\$files/\$id.html' class='green' title='查看内容'>\$catname </a> </td>"; |
||||
|
|
||||
|
$str .= "<td class='visible-lg visible-md'>\$modulename</td><td class='visible-lg visible-md'>\$dis</td>"; |
||||
|
$str .= "<td><input type='text' size='10' data-id='\$id' value='\$sort' class='layui-input list_order'></td><td>\$str_manage</td></tr>"; |
||||
|
$tree = new Tree ($array); |
||||
|
$tree->icon = array(' │ ', ' ├─ ', ' └─ '); |
||||
|
$tree->nbsp = ' '; |
||||
|
$categorys = $tree->get_tree(0, $str); |
||||
|
|
||||
|
$this->assign('categorys', $categorys); |
||||
|
} |
||||
|
$this->assign('title','栏目列表'); |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
|
||||
|
public function add(){ |
||||
|
$pid = input('param.pid'); |
||||
|
//模型列表 |
||||
|
$module = db('module')->where('status',1)->field('id,title,name')->select(); |
||||
|
$this->assign('modulelist',$module); |
||||
|
|
||||
|
//父级模型ID |
||||
|
//父级模型ID |
||||
|
if($pid){ |
||||
|
$vo['moduleid'] =$this->categorys[$pid]['moduleid']; |
||||
|
$this->assign('module', $vo); |
||||
|
} |
||||
|
//栏目选择列表 |
||||
|
foreach($this->categorys as $r) { |
||||
|
$array[] = $r; |
||||
|
} |
||||
|
$str = "<option value='\$id' \$selected>\$spacer \$catname</option>"; |
||||
|
$tree = new Tree ($array); |
||||
|
$categorys = $tree->get_tree(0, $str,$pid); |
||||
|
$this->assign('categorys', $categorys); |
||||
|
//模版 |
||||
|
$templates= template_file(); |
||||
|
$this->assign ( 'templates',$templates ); |
||||
|
//管理员权限组 |
||||
|
$usergroup=db('auth_group')->select(); |
||||
|
$this->assign('rlist',$usergroup); |
||||
|
$this->assign('title','添加栏目'); |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function insert(){ |
||||
|
$data = $data = Request::except('file'); |
||||
|
if(!empty($data['readgroup'])){ |
||||
|
$data['readgroup'] = implode(',',$data['readgroup']); |
||||
|
}else{ |
||||
|
$data['readgroup'] = $this->groupId; |
||||
|
} |
||||
|
$data['module'] = $this->module[$data['moduleid']]['name']; |
||||
|
$data['child'] = isset($data['child'])?1:0; |
||||
|
$id = db('category')->insertGetId($data); |
||||
|
if($id) { |
||||
|
if($data['module']=='page'){ |
||||
|
$data2['id']=$id; |
||||
|
if($data['title']==''){ |
||||
|
$data2['title'] = $data['catname']; |
||||
|
$data2['content'] = ''; |
||||
|
} |
||||
|
$page=db('page'); |
||||
|
$page->insert($data2); |
||||
|
} |
||||
|
$this->repair(); |
||||
|
$this->repair(); |
||||
|
savecache('Category'); |
||||
|
$result['msg'] = '栏目添加成功!'; |
||||
|
cache('cate', NULL); |
||||
|
$result['url'] = url('index'); |
||||
|
$result['code'] = 1; |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$result['msg'] = '栏目添加失败!'; |
||||
|
$result['code'] = 0; |
||||
|
return $result; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public function edit(){ |
||||
|
$id = input('id'); |
||||
|
$this->assign('module',$this->categorys[$id]['moduleid']); |
||||
|
$module = db('module')->field('id,title,name')->select(); |
||||
|
$this->assign('modulelist',$module); |
||||
|
|
||||
|
$record = $this->categorys[$id]; |
||||
|
$record['imgUrl'] = imgUrl($record['image']); |
||||
|
|
||||
|
$record['readgroup'] = explode(',',$record['readgroup']); |
||||
|
|
||||
|
$pid = intval($record['pid']); |
||||
|
$result = $this->categorys; |
||||
|
foreach($result as $r) { |
||||
|
if($r['type']==1) continue; |
||||
|
$r['selected'] = $r['id'] == $pid ? 'selected' : ''; |
||||
|
$array[] = $r; |
||||
|
} |
||||
|
$str = "<option value='\$id' \$selected>\$spacer \$catname</option>"; |
||||
|
$tree = new Tree ($array); |
||||
|
$categorys = $tree->get_tree(0, $str,$pid); |
||||
|
$this->assign('categorys', $categorys); |
||||
|
$this->assign('record', $record); |
||||
|
$usergroup=db('auth_group')->select(); |
||||
|
$this->assign('rlist',$usergroup); |
||||
|
$this->assign('title','编辑栏目'); |
||||
|
//模版 |
||||
|
$templates= template_file(); |
||||
|
$this->assign ( 'templates',$templates ); |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function catUpdate(){ |
||||
|
$data = $data = Request::except('file'); |
||||
|
$data['module'] = Db::name('module')->where(array('id'=>$data['moduleid']))->value('name'); |
||||
|
if(!empty($data['readgroup'])){ |
||||
|
$data['readgroup'] = implode(',',$_POST['readgroup']); |
||||
|
}else{ |
||||
|
if(session('aid')==1){ |
||||
|
$data['readgroup']=''; |
||||
|
} |
||||
|
} |
||||
|
$data['arrparentid'] = $this->get_arrparentid($data['id']); |
||||
|
$data['child'] = isset($data['child']) ? '1' : '0'; |
||||
|
|
||||
|
if (false !==db('category')->update($data)) { |
||||
|
if($data['child']==1){ |
||||
|
$arrchildid = $this->get_arrchildid($data['id']); |
||||
|
$data2['ismenu'] = $data['ismenu']; |
||||
|
$data2['pagesize'] = $data['pagesize']; |
||||
|
if($data['readgroup']!=''){ |
||||
|
$data2['readgroup'] = $data['readgroup']; |
||||
|
} |
||||
|
db('category')->where( ' id in ('.$arrchildid.')')->update($data2); |
||||
|
} |
||||
|
$this->repair(); |
||||
|
$this->repair(); |
||||
|
savecache('Category'); |
||||
|
$result['msg'] = '栏目修改成功!'; |
||||
|
cache('cate', NULL); |
||||
|
$result['url'] = url('index'); |
||||
|
$result['code'] = 1; |
||||
|
return $result; |
||||
|
} else { |
||||
|
$result['msg'] = '栏目修改失败!'; |
||||
|
$result['code'] = 0; |
||||
|
return $result; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
public function repair() { |
||||
|
@set_time_limit(500); |
||||
|
$this->categorys = $categorys = array(); |
||||
|
$categorys = db('category')->where("pid=0")->order('sort ASC,id ASC')->select(); |
||||
|
$this->set_categorys($categorys); |
||||
|
if(is_array($this->categorys)) { |
||||
|
foreach($this->categorys as $id => $cat) { |
||||
|
if($id == 0 || $cat['type']==1) continue; |
||||
|
$this->categorys[$id]['arrparentid'] = $arrparentid = $this->get_arrparentid($id); |
||||
|
$this->categorys[$id]['arrchildid'] = $arrchildid = $this->get_arrchildid($id); |
||||
|
$this->categorys[$id]['parentdir'] = $parentdir = $this->get_parentdir($id); |
||||
|
db('category')->update(array('parentdir'=>$parentdir,'arrparentid'=>$arrparentid,'arrchildid'=>$arrchildid,'id'=>$id)); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
public function set_categorys($categorys = array()) { |
||||
|
if (is_array($categorys) && !empty($categorys)) { |
||||
|
foreach ($categorys as $id => $c) { |
||||
|
$this->categorys[$c['id']] = $c; |
||||
|
$r = db('category')->where(array("pid"=>$c['id']))->Order('sort ASC,id ASC')->select(); |
||||
|
$this->set_categorys($r); |
||||
|
} |
||||
|
} |
||||
|
return true; |
||||
|
} |
||||
|
public function get_arrparentid($id, $arrparentid = '') { |
||||
|
if(!is_array($this->categorys) || !isset($this->categorys[$id])) return false; |
||||
|
$pid = $this->categorys[$id]['pid']; |
||||
|
$arrparentid = $arrparentid ? $pid.','.$arrparentid : $pid; |
||||
|
if($pid) { |
||||
|
$arrparentid = $this->get_arrparentid($pid, $arrparentid); |
||||
|
} else { |
||||
|
$this->categorys[$id]['arrparentid'] = $arrparentid; |
||||
|
} |
||||
|
return $arrparentid; |
||||
|
} |
||||
|
public function get_arrchildid($id) { |
||||
|
$arrchildid = $id; |
||||
|
if(is_array($this->categorys)) { |
||||
|
foreach($this->categorys as $catid => $cat) { |
||||
|
if($cat['pid'] && $id != $catid) { |
||||
|
$arrparentids = explode(',', $cat['arrparentid']); |
||||
|
if(in_array($id, $arrparentids)){ |
||||
|
$arrchildid .= ','.$catid; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
return $arrchildid; |
||||
|
} |
||||
|
public function get_parentdir($id) { |
||||
|
if($this->categorys[$id]['pid']==0){ |
||||
|
return ''; |
||||
|
} |
||||
|
$arrparentid = $this->categorys[$id]['arrparentid']; |
||||
|
unset($r); |
||||
|
if ($arrparentid) { |
||||
|
$arrparentid = explode(',', $arrparentid); |
||||
|
$arrcatdir = array(); |
||||
|
foreach($arrparentid as $pid) { |
||||
|
if($pid==0) continue; |
||||
|
$arrcatdir[] = $this->categorys[$pid]['catdir']; |
||||
|
} |
||||
|
return implode('/', $arrcatdir).'/'; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
public function del() { |
||||
|
$catid = input('param.id'); |
||||
|
$modules = $this->categorys[$catid]['module']; |
||||
|
|
||||
|
$modulesId = $this->categorys[$catid]['moduleid']; |
||||
|
$scount = $this->dao->where(array('pid'=>$catid))->count(); |
||||
|
|
||||
|
if($scount){ |
||||
|
$result['info'] = '请先删除其子栏目!'; |
||||
|
$result['status'] = 0; |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
$module = db($modules); |
||||
|
$arrchildid = $this->categorys[$catid]['arrchildid']; |
||||
|
|
||||
|
if($modules != 'page'){ |
||||
|
$fields = cache($modulesId.'_Field'); |
||||
|
$fieldse=array(); |
||||
|
foreach ($fields as $k=>$v){ |
||||
|
$fieldse[] = $k; |
||||
|
} |
||||
|
if(in_array('catid',$fieldse)){ |
||||
|
$count = $module->where('catid','in',$arrchildid)->count(); |
||||
|
}else{ |
||||
|
$count = $module->count(); |
||||
|
} |
||||
|
if($count){ |
||||
|
$result['info'] = '请先删除该栏目下所有数据!'; |
||||
|
$result['status'] = 0; |
||||
|
return $result; |
||||
|
} |
||||
|
} |
||||
|
$pid = $this->categorys[$catid]['pid']; |
||||
|
|
||||
|
$scat = $this->dao->where(array('pid'=>$pid))->count(); |
||||
|
if($scat==1){ |
||||
|
db('category')->where(array('id'=>$pid))->update(array('child'=>0)); |
||||
|
} |
||||
|
db('category')->where('id','in',$arrchildid)->delete(); |
||||
|
$arr=explode(',',$arrchildid); |
||||
|
foreach((array)$arr as $r){ |
||||
|
if($this->categorys[$r]['module']=='page'){ |
||||
|
$module=db('page'); |
||||
|
$module->delete($r); |
||||
|
} |
||||
|
} |
||||
|
$this->repair(); |
||||
|
savecache('Category'); |
||||
|
$result['info'] = '栏目删除成功!'; |
||||
|
cache('cate', NULL); |
||||
|
$result['url'] = url('index'); |
||||
|
$result['status'] = 1; |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
public function cOrder(){ |
||||
|
$data = input('post.'); |
||||
|
$this->dao->update($data); |
||||
|
$result = ['msg' => '排序成功!', 'code' => 1,'url'=>url('index')]; |
||||
|
savecache('Category'); |
||||
|
cache('cate', NULL); |
||||
|
return $result; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,902 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
|
||||
|
use think\Db; |
||||
|
use think\facade\Request; |
||||
|
use think\facade\Session; |
||||
|
use think\facade\Env; |
||||
|
class Client extends Common{ |
||||
|
//客户列表 |
||||
|
public function index(){ |
||||
|
if(request()->isPost()){ |
||||
|
$key=input('post.key'); |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = db('crm_leads') |
||||
|
->where(['status'=>1,'issuccess'=>-1]) |
||||
|
->order('ut_time desc') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
if(!empty($list['data'])){ |
||||
|
foreach($list['data'] as $k=>$v){ |
||||
|
$list['data'][$k]['bn'] = $v['building'].'-'.$v['number']; |
||||
|
} |
||||
|
} |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
|
||||
|
$khRankList = Db::table('crm_client_rank')->select(); |
||||
|
$khStatusList = Db::table('crm_client_status')->select(); |
||||
|
$xsSourceList = Db::table('crm_clues_source')->select(); |
||||
|
|
||||
|
//查询所有管理员(去除admin) |
||||
|
$adminResult = Db::name('admin')->where('group_id','<>', 1)->field('admin_id,username')->select(); |
||||
|
$this -> assign('adminResult',$adminResult); |
||||
|
|
||||
|
$this -> assign('khRankList',$khRankList); |
||||
|
$this -> assign('khStatusList',$khStatusList); |
||||
|
$this -> assign('xsSourceList',$xsSourceList); //线索/客户来源 |
||||
|
|
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
|
||||
|
//(我的客户)列表 |
||||
|
public function perCliList(){ |
||||
|
|
||||
|
if(request()->isPost()){ |
||||
|
$key=input('post.key'); |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = db('crm_leads') |
||||
|
->where(['status'=>1,'issuccess'=>-1]) |
||||
|
->where(['pr_user'=> Session::get('username')]) |
||||
|
->order('ut_time desc') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
if(!empty($list['data'])){ |
||||
|
foreach($list['data'] as $k=>$v){ |
||||
|
$list['data'][$k]['bn'] = $v['building'].'-'.$v['number']; |
||||
|
} |
||||
|
} |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
|
||||
|
$khRankList = Db::table('crm_client_rank')->select(); |
||||
|
$khStatusList = Db::table('crm_client_status')->select(); |
||||
|
$xsSourceList = Db::table('crm_clues_source')->select(); |
||||
|
|
||||
|
$this -> assign('khRankList',$khRankList); |
||||
|
$this -> assign('khStatusList',$khStatusList); |
||||
|
$this -> assign('xsSourceList',$xsSourceList); //线索/客户来源 |
||||
|
|
||||
|
return $this->fetch('personclient/index'); |
||||
|
} |
||||
|
|
||||
|
//成交客户列表 |
||||
|
public function successCliList(){ |
||||
|
|
||||
|
if(request()->isPost()){ |
||||
|
$where = []; |
||||
|
$where['issuccess'] = 1; |
||||
|
if(session('aid')!=1){ |
||||
|
$where['pr_user'] = Session::get('username'); |
||||
|
} |
||||
|
$key=input('post.key'); |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = db('crm_leads') |
||||
|
->where($where) |
||||
|
->order('ut_time desc') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
|
||||
|
$khRankList = Db::table('crm_client_rank')->select(); |
||||
|
$khStatusList = Db::table('crm_client_status')->select(); |
||||
|
$xsSourceList = Db::table('crm_clues_source')->select(); |
||||
|
|
||||
|
$this -> assign('khRankList',$khRankList); |
||||
|
$this -> assign('khStatusList',$khStatusList); |
||||
|
$this -> assign('xsSourceList',$xsSourceList); //线索/客户来源 |
||||
|
//查询所有管理员(去除admin) |
||||
|
$adminResult = Db::name('admin')->where('group_id','<>', 1)->field('admin_id,username')->select(); |
||||
|
$this -> assign('adminResult',$adminResult); |
||||
|
return $this->fetch('client/chengjiao'); |
||||
|
} |
||||
|
//批量导入,客户上传 |
||||
|
public function xlsUpload(){ |
||||
|
|
||||
|
$xlsFile = Request::file('xlsFile'); |
||||
|
// 移动到框架应用根目录/public/uploads/ 目录下 |
||||
|
$info = $xlsFile -> move(Env::get('root_path'). 'public' .DIRECTORY_SEPARATOR.'uploads'); |
||||
|
if ($info) { |
||||
|
$result = importExecl(Env::get('root_path'). 'public' .DIRECTORY_SEPARATOR.'uploads/'.$info -> getSaveName()); |
||||
|
|
||||
|
|
||||
|
$count = count($result); //统计总数据 |
||||
|
if ($count>1000){ |
||||
|
$msg = ['code' => -200,'msg'=>'数据量过大,请分批导入!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
unset($result[1]); //移除标题 |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
//$userExists = []; //已存在的线索 |
||||
|
foreach ($result as $key =>&$value){ |
||||
|
|
||||
|
//看下手机号是否存在。将存在的手机号保存在数组里。 |
||||
|
$userExist = db('crm_leads')->where('phone', $value['J'])->find(); |
||||
|
if ($userExist){ |
||||
|
// array_push($userExists, $result[$key]['A']); |
||||
|
unset($result[$key]); |
||||
|
}else{ |
||||
|
//客户名称、地区、行业类别、联系人、联系号码、客户级别、客户状态、用户名、备注 |
||||
|
$value['kh_name'] = $value['A'];//A客户名称 |
||||
|
unset($value['A']); |
||||
|
$value['pro'] = $value['B'];//B 省 |
||||
|
unset($value['B']); |
||||
|
$value['city'] = $value['C'];//C 市 |
||||
|
unset($value['C']); |
||||
|
$value['area'] = $value['D'];//D 区(县) |
||||
|
unset($value['D']); |
||||
|
|
||||
|
$value['house'] = $value['E'];//E 小区名称 |
||||
|
unset($value['E']); |
||||
|
|
||||
|
$value['building'] = $value['F'];//F 楼栋 |
||||
|
unset($value['F']); |
||||
|
|
||||
|
$value['number'] = $value['G'];//G 门牌号 |
||||
|
unset($value['G']); |
||||
|
|
||||
|
//$value['xs_area'] = $value['B'];//B 地区 |
||||
|
//unset($value['B']); |
||||
|
|
||||
|
$value['kh_hangye'] = $value['H'];//H 行业类别 |
||||
|
unset($value['H']); |
||||
|
$value['kh_contact'] = $value['I'];//I 联系人 |
||||
|
unset($value['I']); |
||||
|
$value['phone'] = $value['J'];//J 联系号码 |
||||
|
unset($value['J']); |
||||
|
|
||||
|
$value['kh_rank'] = $value['K'];//K 客户级别 |
||||
|
unset($value['K']); |
||||
|
$value['kh_status'] = $value['L'];//L 客户状态 |
||||
|
unset($value['L']); |
||||
|
$value['kh_username'] = $value['M'];//M 用户名 |
||||
|
unset($value['M']); |
||||
|
$value['remark'] = $value['N'];//N 备注 |
||||
|
unset($value['N']); |
||||
|
$value['pr_user'] = Session::get('username');//H 负责人 |
||||
|
|
||||
|
$value['ut_time'] = date("Y-m-d H:i:s",time());//Q更新于 |
||||
|
$value['at_time'] = date("Y-m-d H:i:s",time());//R创建时间 |
||||
|
$value['at_user'] = Session::get('username');//T创建人 |
||||
|
$value['status'] = 1; |
||||
|
//导入客户 |
||||
|
//A客户名称,B客户级别,C客户状态,D最新跟进记录,E实际跟进时间,F下次跟进时间,G手机 |
||||
|
//H微信号,I未跟进天数,J客户来源,K备注,L负责人,M所属公海,N划入公海时间 |
||||
|
//O前所属部门,P所属部门,Q更新于,R创建时间,S客户需求,T创建人,U前负责人 |
||||
|
|
||||
|
// $value['kh_name'] = $value['A'];//A客户名称 |
||||
|
// unset($value['A']); |
||||
|
// $value['kh_rank'] = $value['B'];//B客户级别 |
||||
|
// unset($value['B']); |
||||
|
// $value['kh_status'] = $value['C'];//C客户状态 |
||||
|
// unset($value['C']); |
||||
|
// $value['last_up_records'] = $value['D'];//D最新跟进记录 |
||||
|
// unset($value['D']); |
||||
|
// $value['last_up_time'] = $value['E'];//E实际跟进时间 |
||||
|
// unset($value['E']); |
||||
|
// $value['next_up_time'] = $value['F'];//F下次跟进时间 |
||||
|
// unset($value['F']); |
||||
|
// $value['phone'] = $value['G'];//G手机 |
||||
|
// unset($value['G']); |
||||
|
// $value['wechat'] = $value['H'];//H微信号 |
||||
|
// unset($value['H']); |
||||
|
// //$value['未跟进天数'] = $value['I'];//I未跟进天数(不入库,直接过滤) |
||||
|
// unset($value['I']); |
||||
|
// $value['xs_source'] = $value['J'];//J客户来源/线索来源 |
||||
|
// unset($value['J']); |
||||
|
// $value['remark'] = $value['K'];//K备注 |
||||
|
// unset($value['K']); |
||||
|
// $value['pr_user'] = $value['L'] ? $value['L']: Session::get('username');//L负责人 |
||||
|
// unset($value['L']); |
||||
|
// $value['pr_gh_type'] = $value['M'];//M所属公海 |
||||
|
// unset($value['M']); |
||||
|
// $value['to_gh_time'] = $value['N'];//N划入公海时间 |
||||
|
// unset($value['N']); |
||||
|
// $value['pr_dep_bef'] = $value['O'];//O前所属部门 |
||||
|
// unset($value['O']); |
||||
|
// $value['pr_dep'] = $value['P'];//P所属部门 |
||||
|
// unset($value['P']); |
||||
|
// $value['ut_time'] = $value['Q'] ? $value['Q'] : date("Y-m-d H:i:s",time());//Q更新于 |
||||
|
// unset($value['Q']); |
||||
|
// $value['at_time'] = $value['R'] ? $value['R'] : date("Y-m-d H:i:s",time());//R创建时间 |
||||
|
// unset($value['R']); |
||||
|
// $value['kh_need'] = $value['S'];//S客户需求 |
||||
|
// unset($value['S']); |
||||
|
// $value['at_user'] = $value['T'] ? $value['T']: Session::get('username');//T创建人 |
||||
|
// unset($value['T']); |
||||
|
// $value['pr_user_bef'] = $value['U'] ? $value['U']: Session::get('username'); //U前负责人 |
||||
|
// unset($value['U']); |
||||
|
//$value['status'] = 1; //导入客户 |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
$failcount = count($result); //最终的总数 |
||||
|
$insertAll = Db::table('crm_leads')->insertAll($result); |
||||
|
|
||||
|
if ($insertAll){ |
||||
|
$msg = ['code' => 0,'msg'=>'导入'.$failcount.'条数据成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'客户导入失败,不可重复导入!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
//新建客户 |
||||
|
public function add(){ |
||||
|
|
||||
|
if(request()->isPost()){ |
||||
|
//dump($_POST);EXIT; |
||||
|
// <!-- 客户名称、地区、行业类别、联系人、联系号码、客户级别、客户状态、用户名、备注 --> |
||||
|
$data['phone'] = Request::param('phone'); |
||||
|
$data['kh_name'] = Request::param('kh_name'); |
||||
|
$data['xs_area'] = Request::param('xs_area'); |
||||
|
$data['kh_hangye'] = Request::param('kh_hangye'); |
||||
|
$data['kh_contact'] = Request::param('kh_contact'); |
||||
|
$data['kh_rank'] = Request::param('kh_rank'); |
||||
|
$data['kh_status'] = Request::param('kh_status'); |
||||
|
// $data['kh_username'] = Request::param('kh_username'); |
||||
|
$data['remark'] = Request::param('remark'); |
||||
|
|
||||
|
// $data['kh_need'] = Request::param('kh_need'); |
||||
|
$data['at_user'] = Session::get('username'); |
||||
|
$data['pr_user'] = Session::get('username'); |
||||
|
$data['pr_user_bef'] = Session::get('username'); |
||||
|
$data['ut_time'] = date("Y-m-d H:i:s",time()); |
||||
|
$data['at_time'] = date("Y-m-d H:i:s",time()); |
||||
|
$data['status'] = 1; |
||||
|
$data['ispublic'] = 3; |
||||
|
|
||||
|
//新增字段 |
||||
|
$data['pro'] = Request::param('pro'); |
||||
|
$data['city'] = Request::param('city'); |
||||
|
$data['area'] = Request::param('area'); |
||||
|
$data['house'] = Request::param('house'); |
||||
|
$data['building'] = Request::param('building'); |
||||
|
$data['number'] = Request::param('number'); |
||||
|
|
||||
|
$wdata = array( |
||||
|
'pro'=>$data['pro'], |
||||
|
'city'=>$data['city'], |
||||
|
'area'=>$data['area'], |
||||
|
'house'=>$data['house'], |
||||
|
'building'=>$data['building'], |
||||
|
'number'=>$data['number'] |
||||
|
); |
||||
|
$userExist = db('crm_leads')->where($wdata)->count(); |
||||
|
if ($userExist){ |
||||
|
$data['sort'] = $userExist; |
||||
|
}else{ |
||||
|
$data['sort'] = 0; |
||||
|
} |
||||
|
|
||||
|
// $userExist = db('crm_leads')->where('phone', $data['phone'])->find(); |
||||
|
// if ($userExist){ |
||||
|
// $msg = ['code' => -200,'msg'=>'抱歉,重复号码不可添加!','data'=>[]]; |
||||
|
// return json($msg); |
||||
|
// } |
||||
|
|
||||
|
|
||||
|
// 检测当前客户数最大数量 |
||||
|
$curname = Session::get('username'); |
||||
|
$curget = Db::table('admin')->where(['username'=>$curname])->field('custlimit')->find(); |
||||
|
$custlimit = $curget['custlimit']; |
||||
|
if(!$custlimit){ |
||||
|
$sysinfo = Db::table('system')->where(['id'=>1])->field('custlimit')->find(); |
||||
|
$custlimit = $sysinfo['custlimit']; |
||||
|
} |
||||
|
|
||||
|
$wherecust = []; |
||||
|
$wherecust['pr_user'] = $curname; |
||||
|
$wherecust['status'] = 1; |
||||
|
$wherecust['ispublic'] = 3; |
||||
|
$wherecust['issuccess'] = -1; |
||||
|
$maxcustnum = Db::table('crm_leads')->where($wherecust)->count('id'); |
||||
|
if($maxcustnum>=$custlimit){ |
||||
|
$msg = ['code' => -200,'msg'=>'抱歉,您的客户数量已达上限'.$custlimit.'!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
|
||||
|
$result = Db::table('crm_leads')->insert($data); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'添加成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'添加失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
// $xsSourceList = Db::table('crm_clues_source')->select(); |
||||
|
$khRankList = Db::table('crm_client_rank')->select(); |
||||
|
$khStatusList = Db::table('crm_client_status')->select(); |
||||
|
$xsAreaList = Db::table('crm_clues_area')->select(); |
||||
|
$xsHangyeList = Db::table('crm_client_hangye')->select(); |
||||
|
$this -> assign('xsHangyeList',$xsHangyeList); |
||||
|
$this -> assign('xsAreaList',$xsAreaList); |
||||
|
$this -> assign('khRankList',$khRankList); |
||||
|
$this -> assign('khStatusList',$khStatusList); |
||||
|
|
||||
|
return $this->fetch('client/add'); |
||||
|
} |
||||
|
//编辑客户 |
||||
|
public function edit(){ |
||||
|
if (Request::isAjax()){ |
||||
|
$data = Request::param(); |
||||
|
$data['ut_time'] = date("Y-m-d H:i:s",time()); |
||||
|
$wdata = array( |
||||
|
'pro'=>$data['pro'], |
||||
|
'city'=>$data['city'], |
||||
|
'area'=>$data['area'], |
||||
|
'house'=>$data['house'], |
||||
|
'building'=>$data['building'], |
||||
|
'number'=>$data['number'] |
||||
|
); |
||||
|
//$userExist = db('crm_leads')->where($wdata)->fetchSql()->count(); |
||||
|
//$userExist = db('crm_leads')->where($wdata)->whereOr(['phone'=>$data['phone']])->where([['id', '<>', $data['id']]])->fetchSql()->count(); |
||||
|
$userExist = db('crm_leads')->where($wdata)->count(); |
||||
|
|
||||
|
if ($userExist){ |
||||
|
if($userExist >= 1){ |
||||
|
$userExist -=1; |
||||
|
}else{ |
||||
|
$userExist =0; |
||||
|
} |
||||
|
$data['sort'] = $userExist; |
||||
|
} |
||||
|
|
||||
|
$result = Db::table('crm_leads')->where(['id'=>$data['id']])->where('status',1)->update($data); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'编辑成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'编辑失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
$result = Db::table('crm_leads') ->where(['id' => Request::param('id')])->find(); |
||||
|
|
||||
|
$this -> assign('result',$result); |
||||
|
|
||||
|
// $xsSourceList = Db::table('crm_clues_source')->select(); |
||||
|
$khRankList = Db::table('crm_client_rank')->select(); |
||||
|
$khStatusList = Db::table('crm_client_status')->select(); |
||||
|
$xsAreaList = Db::table('crm_clues_area')->select(); |
||||
|
$xsHangyeList = Db::table('crm_client_hangye')->select(); |
||||
|
$this -> assign('xsHangyeList',$xsHangyeList); |
||||
|
$this -> assign('xsAreaList',$xsAreaList); |
||||
|
// $this -> assign('xsSourceList',$xsSourceList); |
||||
|
$this -> assign('khRankList',$khRankList); |
||||
|
$this -> assign('khStatusList',$khStatusList); |
||||
|
|
||||
|
return $this -> fetch('client/edit'); |
||||
|
} |
||||
|
//删除客户 |
||||
|
public function del(){ |
||||
|
$id = Request::param('id'); |
||||
|
$result = Db::table('crm_leads')->where('id',$id)->where('status',1)->delete(); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'删除成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'删除失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//客户级别 |
||||
|
public function rankList(){ |
||||
|
if(request()->isPost()){ |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = db('crm_client_rank') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
//添加客户级别 |
||||
|
public function rankAdd(){ |
||||
|
if(request()->isPost()){ |
||||
|
$data['rank_name'] = Request::param('rank_name'); |
||||
|
$data['add_time'] = time(); |
||||
|
$result = Db::table('crm_client_rank')->insert($data); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'添加成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'添加失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
return $this->fetch('client/rank_list_add'); |
||||
|
} |
||||
|
//编辑客户级别 |
||||
|
public function rankEdit(){ |
||||
|
if (Request::isAjax()){ |
||||
|
$data = Request::param(); |
||||
|
// 获取原状态 |
||||
|
$oldstatus = Db::table('crm_client_rank')->where(['id'=>$data['id']])->find(); |
||||
|
$oldstatusname = $oldstatus['rank_name']; |
||||
|
$ischange = false; |
||||
|
if ($oldstatusname == $data['rank_name']) { |
||||
|
$msg = ['code' => -200,'msg'=>'没有变化无需修改','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$ischange = true; |
||||
|
} |
||||
|
|
||||
|
$result = Db::table('crm_client_rank')->where(['id'=>$data['id']])->update($data); |
||||
|
if ($result){ |
||||
|
// 状态修改后 客户编辑的原来状态都必须修改 |
||||
|
if ($ischange) { |
||||
|
// 所有的客户状态全部膝盖 |
||||
|
$result2 = Db::table('crm_leads')->where(['kh_rank'=>$oldstatusname])->update(['kh_rank'=>$data['rank_name']]); |
||||
|
} |
||||
|
$msg = ['code' => 0,'msg'=>'编辑成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'编辑失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$result = Db::table('crm_client_rank') ->where(['id' => Request::param('id')])->find(); |
||||
|
$this -> assign('result',$result); |
||||
|
return $this -> fetch('client/rank_list_edit'); |
||||
|
} |
||||
|
//删除客户级别 |
||||
|
public function rankDel(){ |
||||
|
$id = Request::param('id'); |
||||
|
// 获取原状态 |
||||
|
$oldstatus = Db::table('crm_client_rank')->where(['id'=>$data['id']])->find(); |
||||
|
$oldstatusname = $oldstatus['rank_name']; |
||||
|
|
||||
|
$result = Db::table('crm_client_rank')->where('id',$id)->delete(); |
||||
|
if ($result){ |
||||
|
// 所有的客户状态全部膝盖 |
||||
|
$result2 = Db::table('crm_leads')->where(['kh_rank'=>$oldstatusname])->update(['kh_rank'=>'']); |
||||
|
$msg = ['code' => 0,'msg'=>'删除成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'删除失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
//客户状态 |
||||
|
public function statusList(){ |
||||
|
if(request()->isPost()){ |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = db('crm_client_status') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
//添加客户状态 |
||||
|
public function statusAdd(){ |
||||
|
if(request()->isPost()){ |
||||
|
$data['status_name'] = Request::param('status_name'); |
||||
|
$data['add_time'] = time(); |
||||
|
$result = Db::table('crm_client_status')->insert($data); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'添加成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'添加失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
return $this->fetch('client/status_list_add'); |
||||
|
} |
||||
|
//编辑客户状态 |
||||
|
public function statusEdit(){ |
||||
|
if (Request::isAjax()){ |
||||
|
$data = Request::param(); |
||||
|
// 获取原状态 |
||||
|
$oldstatus = Db::table('crm_client_status')->where(['id'=>$data['id']])->find(); |
||||
|
$oldstatusname = $oldstatus['status_name']; |
||||
|
$newstatusname = $data['status_name']; |
||||
|
$ischange = false; |
||||
|
if ($oldstatusname == $newstatusname) { |
||||
|
$msg = ['code' => -200,'msg'=>'状态没有变化无需修改','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$ischange = true; |
||||
|
} |
||||
|
$result = Db::table('crm_client_status')->where(['id'=>$data['id']])->update($data); |
||||
|
if ($result){ |
||||
|
// 状态修改后 客户编辑的原来状态都必须修改 |
||||
|
if ($ischange) { |
||||
|
// 所有的客户状态全部膝盖 |
||||
|
$result2 = Db::table('crm_leads')->where(['kh_status'=>$oldstatusname])->update(['kh_status'=>$newstatusname]); |
||||
|
} |
||||
|
$msg = ['code' => 0,'msg'=>'编辑成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'编辑失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
$result = Db::table('crm_client_status') ->where(['id' => Request::param('id')])->find(); |
||||
|
$this -> assign('result',$result); |
||||
|
return $this -> fetch('client/status_list_edit'); |
||||
|
} |
||||
|
//删除客户状态 |
||||
|
public function statusDel(){ |
||||
|
$id = Request::param('id'); |
||||
|
// 获取原状态 |
||||
|
$oldstatus = Db::table('crm_client_status')->where(['id'=>$data['id']])->find(); |
||||
|
$oldstatusname = $oldstatus['status_name']; |
||||
|
// $ischange = false; |
||||
|
// if ($oldstatusname == $data['status_name']) { |
||||
|
// $msg = ['code' => -200,'msg'=>'状态没有变化无需修改','data'=>[]]; |
||||
|
// return json($msg); |
||||
|
// }else{ |
||||
|
// $ischange = true; |
||||
|
// } |
||||
|
$result = Db::table('crm_client_status')->where('id',$id)->delete(); |
||||
|
if ($result){ |
||||
|
// 所有的客户状态全部膝盖 |
||||
|
$result2 = Db::table('crm_leads')->where(['kh_status'=>$oldstatusname])->update(['kh_status'=>'']); |
||||
|
$msg = ['code' => 0,'msg'=>'删除成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'删除失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
//移入公海 |
||||
|
public function toMoveGh(){ |
||||
|
//1,获取提交的线索ID 【1,2,3,4,】 |
||||
|
$ids = Request::param('ids'); |
||||
|
$this -> assign('ids',$ids); |
||||
|
if (Request::isAjax()){ |
||||
|
$pr_gh_type = Request::param('pr_gh_type'); |
||||
|
$idsArr = explode(",",$ids); |
||||
|
|
||||
|
|
||||
|
$count = 0; |
||||
|
foreach ($idsArr as $key => $value){ |
||||
|
// $data['pr_user_bef'] = Db::table('crm_leads')->where(['id'=>$value])->field('pr_user')->find(); |
||||
|
// $data['pr_user'] = $username; |
||||
|
// $data['id'] = $value; |
||||
|
// $insertAll = Db::name('crm_leads')->update($data); |
||||
|
$data['pr_gh_type'] = $pr_gh_type; |
||||
|
$data['to_gh_time'] = date("Y-m-d H:i:s",time()); |
||||
|
$data['status'] = 2;//0-线索,1客户,2公海 |
||||
|
$data['id'] = $value; |
||||
|
$result = Db::table('crm_leads')->where(['id'=>$value])->update($data); |
||||
|
if ($result){ |
||||
|
$count ++; |
||||
|
} |
||||
|
} |
||||
|
if ($count > 0){ |
||||
|
$msg = ['code' => 0,'msg'=>$count.'个客户移入公海成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'转入公海失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
// $data['pr_gh_type'] = Request::param('pr_gh_type'); |
||||
|
// $data['to_gh_time'] = date("Y-m-d H:i:s",time()); |
||||
|
// $data['status'] = 2;//0-线索,1客户,2公海 |
||||
|
// $data['id'] = Request::param('id'); |
||||
|
// $result = Db::table('crm_leads')->where(['id'=>$data['id']])->update($data); |
||||
|
// if ($result){ |
||||
|
// $msg = ['code' => 0,'msg'=>'移入公海成功!','data'=>[]]; |
||||
|
// return json($msg); |
||||
|
// }else{ |
||||
|
// $msg = ['code' => -200,'msg'=>'抱歉,移入公海失败!','data'=>[]]; |
||||
|
// return json($msg); |
||||
|
// } |
||||
|
} |
||||
|
|
||||
|
|
||||
|
$libTypeList = Db::table('crm_liberum_type')->select(); |
||||
|
|
||||
|
$this -> assign('libTypeList',$libTypeList); |
||||
|
|
||||
|
// $result = Db::table('crm_leads') ->where(['id' => Request::param('id')])->find(); |
||||
|
// $this -> assign('result',$result); |
||||
|
return $this -> fetch('client/move_gh'); |
||||
|
} |
||||
|
//客户搜索 |
||||
|
public function clientSearch(){ |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$limit =input('limit')?input('limit'):config('pageSize'); |
||||
|
$keyword = Request::param('keyword'); |
||||
|
$list= model('client') -> getClientSearchList($page,$limit,$keyword); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
|
||||
|
} |
||||
|
//(我的客户)搜索 |
||||
|
public function personClientSearch(){ |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$limit =input('limit')?input('limit'):config('pageSize'); |
||||
|
$keyword = Request::param('keyword'); |
||||
|
$list= model('client') -> getPersonClientSearchList($page,$limit,$keyword); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
|
||||
|
} |
||||
|
//(我的客户)搜索 |
||||
|
public function chengjiaoClientSearch(){ |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$limit =input('limit')?input('limit'):config('pageSize'); |
||||
|
$keyword = Request::param('keyword'); |
||||
|
$list= model('client') -> getChengjiaoClientSearchList($page,$limit,$keyword); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
|
||||
|
} |
||||
|
//写跟进 |
||||
|
public function dialogue(){ |
||||
|
$result = Db::table('crm_leads')->where(['id'=>Request::param('id')])->find(); |
||||
|
|
||||
|
$result['comment']= Db::table('crm_comment')->alias('com')->join('admin adm','com.user_id = adm.admin_id')->where(['leads_id'=>Request::param('id')])->field('com.*,adm.username,adm.avatar')->select(); |
||||
|
foreach ($result['comment'] as $k => $v){ |
||||
|
$result['comment'][$k]['reply'] = Db::table('crm_reply')->where(['comment_id'=>$v['id']])->select(); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
$cid = Session::get('aid'); //获取当前登录账号 |
||||
|
$curname = Session::get('username'); //获取当前登录账号 |
||||
|
|
||||
|
|
||||
|
|
||||
|
//$this ->assign('cid',$cid); //获取当前登录账号$data['id'] |
||||
|
$group_id = Db::table('admin')->where(['admin_id'=>$cid])->field('group_id')->find(); |
||||
|
|
||||
|
|
||||
|
$this ->assign('group_id',$group_id['group_id']); //获取当前登录权限组账号 |
||||
|
|
||||
|
$this ->assign('curname',$curname); //获取当前登录账号 |
||||
|
|
||||
|
$this ->assign('result',$result); |
||||
|
//$this ->assign('result1',integer($result['id'])); //跟进上一个 下一个 获取当前id。 |
||||
|
return $this -> fetch('client/dialogue'); |
||||
|
} |
||||
|
|
||||
|
//评论 |
||||
|
public function comment(){ |
||||
|
|
||||
|
$data['leads_id'] = Request::param('leads_id'); |
||||
|
$data['user_id'] = Session::get('aid'); |
||||
|
$data['reply_msg'] = Request::param('reply_msg'); |
||||
|
$data['create_date'] = time(); |
||||
|
|
||||
|
//更新跟进记录 |
||||
|
$genjin['last_up_records'] = $data['reply_msg']; |
||||
|
$genjin['last_up_time'] = date("Y-m-d H:i:s",$data['create_date']); |
||||
|
$genjin['ut_time'] = date("Y-m-d H:i:s",time()); |
||||
|
|
||||
|
Db::table('crm_leads')->where(['id'=>$data['leads_id']])->update($genjin); |
||||
|
|
||||
|
$result = Db::table('crm_comment')->insert($data); |
||||
|
$data['create_date'] = date("Y年m月d日 H:i",$data['create_date']); |
||||
|
|
||||
|
if ($result){ |
||||
|
return json(['code'=> 0,'msg'=>'评论成功!','data'=>$data]); |
||||
|
}else{ |
||||
|
return json(['code'=>1,'msg'=>'评论失败!']); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//回复 |
||||
|
public function reply(){ |
||||
|
|
||||
|
$data['comment_id'] = Request::param('cid'); |
||||
|
$data['from_user_id'] = Session::get('user.id'); |
||||
|
$data['to_user_id'] = Request::param('to_uid'); |
||||
|
$data['reply_msg'] = Request::param('reply_msg'); |
||||
|
$data['create_date'] = time(); |
||||
|
|
||||
|
$result = Db::table('crm_reply')->insert($data); |
||||
|
$data['create_date'] = date("Y年m月d日 H:i",$data['create_date']); |
||||
|
if ($result){ |
||||
|
return json(['code'=> 0,'msg'=>'回复成功!','data'=>$data]); |
||||
|
}else{ |
||||
|
|
||||
|
return json(['code'=>1,'msg'=>'回复失败!']); |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
//客户转移,变更负责人 |
||||
|
public function alterPrUser(){ |
||||
|
//1,获取提交的线索ID 【1,2,3,4,】 |
||||
|
$ids = Request::param('ids'); |
||||
|
$this -> assign('ids',$ids); |
||||
|
|
||||
|
|
||||
|
//查询所有管理员(去除admin) |
||||
|
$adminResult = Db::name('admin')->where('group_id','<>', 1)->field('admin_id,username')->select(); |
||||
|
$this -> assign('adminResult',$adminResult); |
||||
|
|
||||
|
if (Request::isAjax()){ |
||||
|
$username = Request::param('username'); |
||||
|
$idsArr = explode(",",$ids); |
||||
|
|
||||
|
|
||||
|
$count = 0; |
||||
|
foreach ($idsArr as $key => $value){ |
||||
|
$data['pr_user_bef'] = Db::table('crm_leads')->where(['id'=>$value])->field('pr_user')->find(); |
||||
|
$data['pr_user'] = $username; |
||||
|
$data['id'] = $value; |
||||
|
$insertAll = Db::name('crm_leads')->update($data); |
||||
|
if ($insertAll){ |
||||
|
$count ++; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
if ($count > 0){ |
||||
|
$msg = ['code' => 0,'msg'=>'转移'.$count.'个客户成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'转移失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return $this -> fetch('client/alter_pr_user'); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
//客户转移,变更负责人(个人) |
||||
|
public function alterPrUserPri(){ |
||||
|
//1,获取提交的线索ID 【1,2,3,4,】 |
||||
|
$ids = Request::param('ids'); |
||||
|
$this -> assign('ids',$ids); |
||||
|
|
||||
|
|
||||
|
//查询所有管理员(去除admin) |
||||
|
$adminResult = Db::name('admin')->where('group_id','<>', 1)->field('admin_id,username')->select(); |
||||
|
$this -> assign('adminResult',$adminResult); |
||||
|
|
||||
|
if (Request::isAjax()){ |
||||
|
$username = Request::param('username'); |
||||
|
$idsArr = explode(",",$ids); |
||||
|
|
||||
|
|
||||
|
$count = 0; |
||||
|
foreach ($idsArr as $key => $value){ |
||||
|
$data['pr_user_bef'] = Db::table('crm_leads')->where(['id'=>$value])->field('pr_user')->find(); |
||||
|
$data['pr_user'] = $username; |
||||
|
$data['id'] = $value; |
||||
|
$insertAll = Db::name('crm_leads')->update($data); |
||||
|
if ($insertAll){ |
||||
|
$count ++; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
if ($count > 0){ |
||||
|
$msg = ['code' => 0,'msg'=>'转移'.$count.'个客户成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'转移失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return $this -> fetch('personclient/alter_pr_user'); |
||||
|
} |
||||
|
|
||||
|
//客户行业 |
||||
|
public function hangyeList(){ |
||||
|
if(request()->isPost()){ |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = db('crm_client_hangye') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
//添加客户级别 |
||||
|
public function hangyeAdd(){ |
||||
|
if(request()->isPost()){ |
||||
|
$data['hy_name'] = Request::param('hy_name'); |
||||
|
$data['add_time'] = time(); |
||||
|
$result = Db::table('crm_client_hangye')->insert($data); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'添加成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'添加失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
return $this->fetch('client/hangye_list_add'); |
||||
|
} |
||||
|
//编辑客户级别 |
||||
|
public function hangyeEdit(){ |
||||
|
if (Request::isAjax()){ |
||||
|
$data = Request::param(); |
||||
|
// 获取原状态 |
||||
|
$oldstatus = Db::table('crm_client_hangye')->where(['id'=>$data['id']])->find(); |
||||
|
$oldstatusname = $oldstatus['hy_name']; |
||||
|
$ischange = false; |
||||
|
if ($oldstatusname == $data['hy_name']) { |
||||
|
$msg = ['code' => -200,'msg'=>'没有变化无需修改','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$ischange = true; |
||||
|
} |
||||
|
|
||||
|
$result = Db::table('crm_client_hangye')->where(['id'=>$data['id']])->update($data); |
||||
|
if ($result){ |
||||
|
// 状态修改后 客户编辑的原来状态都必须修改 |
||||
|
if ($ischange) { |
||||
|
// 所有的客户状态全部膝盖 |
||||
|
$result2 = Db::table('crm_leads')->where(['kh_hangye'=>$oldstatusname])->update(['kh_hangye'=>$data['hy_name']]); |
||||
|
} |
||||
|
$msg = ['code' => 0,'msg'=>'编辑成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'编辑失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$result = Db::table('crm_client_hangye') ->where(['id' => Request::param('id')])->find(); |
||||
|
$this -> assign('result',$result); |
||||
|
return $this -> fetch('client/hangye_list_edit'); |
||||
|
} |
||||
|
//删除客户级别 |
||||
|
public function hangyeDel(){ |
||||
|
$id = Request::param('id'); |
||||
|
// 获取原状态 |
||||
|
$oldstatus = Db::table('crm_client_hangye')->where(['id'=>$data['id']])->find(); |
||||
|
$oldstatusname = $oldstatus['hy_name']; |
||||
|
|
||||
|
$result = Db::table('crm_client_hangye')->where('id',$id)->delete(); |
||||
|
if ($result){ |
||||
|
// 所有的客户状态全部膝盖 |
||||
|
$result2 = Db::table('crm_leads')->where(['kh_hangye'=>$oldstatusname])->update(['kh_hangye'=>'']); |
||||
|
$msg = ['code' => 0,'msg'=>'删除成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'删除失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,711 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use think\facade\Request; |
||||
|
use think\facade\Env; |
||||
|
use think\Db; |
||||
|
use PhpOffice\PhpSpreadsheet\Spreadsheet; |
||||
|
use PhpOffice\PhpSpreadsheet\IOFactory; |
||||
|
use think\facade\Session; |
||||
|
|
||||
|
class Clues extends Common{ |
||||
|
//线索列表 |
||||
|
public function index(){ |
||||
|
if(request()->isPost()){ |
||||
|
$key=input('post.key'); |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = db('crm_leads') |
||||
|
->where(['status'=>0,'issuccess'=>-1]) |
||||
|
->order('ut_time desc') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
// 手机号加密处理 |
||||
|
foreach ($list['data'] as $key => $value) { |
||||
|
$value['phone'] = mb_substr($value['phone'], 0, 3).'****'. mb_substr($value['phone'], 7, 11); |
||||
|
$list['data'][$key] = $value; |
||||
|
} |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
|
||||
|
$xsSourceList = Db::table('crm_clues_source')->select(); |
||||
|
$xsStatusList = Db::table('crm_clues_status')->select(); |
||||
|
|
||||
|
$this -> assign('xsSourceList',$xsSourceList); |
||||
|
$this -> assign('xsStatusList',$xsStatusList); |
||||
|
|
||||
|
|
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
|
||||
|
//(我的线索)列表 |
||||
|
public function perClulist(){ |
||||
|
if(request()->isPost()){ |
||||
|
$key=input('post.key'); |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
|
||||
|
$list = db('crm_leads') |
||||
|
->where(['status'=>0,'issuccess'=>-1]) |
||||
|
->where(['pr_user'=> Session::get('username')]) |
||||
|
->order('ut_time desc') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
|
||||
|
$xsSourceList = Db::table('crm_clues_source')->select(); |
||||
|
$xsStatusList = Db::table('crm_clues_status')->select(); |
||||
|
|
||||
|
$this -> assign('xsSourceList',$xsSourceList); |
||||
|
$this -> assign('xsStatusList',$xsStatusList); |
||||
|
|
||||
|
|
||||
|
return $this->fetch('personclues/index'); |
||||
|
} |
||||
|
|
||||
|
//批量导入,线索上传 |
||||
|
public function xlsUpload(){ |
||||
|
|
||||
|
$xlsFile = Request::file('xlsFile'); |
||||
|
// 移动到框架应用根目录/public/uploads/ 目录下 |
||||
|
$info = $xlsFile -> move(Env::get('root_path'). 'public' .DIRECTORY_SEPARATOR.'uploads'); |
||||
|
if ($info) { |
||||
|
$result = importExecl(Env::get('root_path'). 'public' .DIRECTORY_SEPARATOR.'uploads/'.$info -> getSaveName()); |
||||
|
|
||||
|
|
||||
|
$count = count($result); //统计总数据 |
||||
|
if ($count>1000){ |
||||
|
$msg = ['code' => -200,'msg'=>'数据量过大,请分批导入!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
unset($result[1]); //移除标题 |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
//$userExists = []; //已存在的线索 |
||||
|
foreach ($result as $key =>&$value){ |
||||
|
|
||||
|
//看下手机号是否存在。将存在的手机号保存在数组里。 |
||||
|
$userExist = db('crm_leads')->where('phone', $value['G'])->find(); |
||||
|
if ($userExist){ |
||||
|
// array_push($userExists, $result[$key]['A']); |
||||
|
unset($result[$key]); |
||||
|
}else{ |
||||
|
//客户名称、地区、行业类别、联系人、联系号码、客户级别、客户状态、用户名、备注 |
||||
|
$value['xs_name'] = $value['A'];//A线索名称 |
||||
|
unset($value['A']); |
||||
|
$value['xs_status'] = $value['B'];//B线索状态 |
||||
|
unset($value['B']); |
||||
|
$value['xs_source'] = $value['C'];//C线索来源 |
||||
|
unset($value['C']); |
||||
|
$value['xs_area'] = $value['D'];//B 地区 |
||||
|
unset($value['D']); |
||||
|
$value['kh_hangye'] = $value['E'];//C 行业类别 |
||||
|
unset($value['E']); |
||||
|
$value['kh_contact'] = $value['F'];//D 联系人 |
||||
|
unset($value['F']); |
||||
|
$value['phone'] = $value['G'];//E 联系号码 |
||||
|
unset($value['G']); |
||||
|
|
||||
|
// $value['kh_rank'] = $value['H'];//E 客户级别 |
||||
|
// unset($value['H']); |
||||
|
// $value['kh_status'] = $value['I'];//G 客户状态 |
||||
|
// unset($value['I']); |
||||
|
// $value['kh_username'] = $value['J'];//G 用户名 |
||||
|
// unset($value['J']); |
||||
|
$value['remark'] = $value['H'];//G 备注 |
||||
|
unset($value['H']); |
||||
|
$value['pr_user'] = Session::get('username');//H 负责人 |
||||
|
|
||||
|
$value['ut_time'] = date("Y-m-d H:i:s",time());//Q更新于 |
||||
|
$value['at_time'] = date("Y-m-d H:i:s",time());//R创建时间 |
||||
|
$value['at_user'] = Session::get('username');//T创建人 |
||||
|
$value['status'] = 0; |
||||
|
//A线索名称,B手机,C线索状态,D线索来源,E最新跟进记录,F实际跟进时间,G下次跟进时间 |
||||
|
//H微信号,I未跟进天数,J地区来源,K备注,L负责人,M前所属部门,N所属部门 |
||||
|
//O更新于,P创建时间,Q客户需求,R创建人,S前负责人 |
||||
|
|
||||
|
// $value['xs_name'] = $value['A'];//A线索名称 |
||||
|
// unset($value['A']); |
||||
|
// $value['phone'] = $value['B'];//B手机 |
||||
|
// unset($value['B']); |
||||
|
// $value['xs_status'] = $value['C'];//C线索状态 |
||||
|
// unset($value['C']); |
||||
|
// $value['xs_source'] = $value['D'];//D客户来源/线索来源 |
||||
|
// unset($value['D']); |
||||
|
// $value['last_up_records'] = $value['E'];//E最新跟进记录 |
||||
|
// unset($value['E']); |
||||
|
// $value['last_up_time'] = $value['F'];//F实际跟进时间 |
||||
|
// unset($value['F']); |
||||
|
// $value['next_up_time'] = $value['G'];//G下次跟进时间 |
||||
|
// unset($value['G']); |
||||
|
// $value['wechat'] = $value['H'];//H微信号 |
||||
|
// unset($value['H']); |
||||
|
// //$value['未跟进天数'] = $value['I'];//I未跟进天数(不入库,直接过滤) |
||||
|
// unset($value['I']); |
||||
|
// $value['xs_area'] = $value['J'];//J地区来源 |
||||
|
// unset($value['J']); |
||||
|
// $value['remark'] = $value['K'];//K备注 |
||||
|
// unset($value['K']); |
||||
|
// $value['pr_user'] = $value['L'] ? $value['L'] : Session::get('username');//L负责人 |
||||
|
// unset($value['L']); |
||||
|
// $value['pr_dep_bef'] = $value['M'];//M前所属部门 |
||||
|
// unset($value['M']); |
||||
|
// $value['pr_dep'] = $value['N'];//N所属部门 |
||||
|
// unset($value['N']); |
||||
|
// $value['ut_time'] = $value['O'] ? $value['O'] : date("Y-m-d H:i:s",time());//O更新于 |
||||
|
// unset($value['O']); |
||||
|
// $value['at_time'] = $value['P'] ? $value['P'] : date("Y-m-d H:i:s",time());//P创建时间 |
||||
|
// unset($value['P']); |
||||
|
// $value['kh_need'] = $value['Q'];//Q客户需求 |
||||
|
// unset($value['Q']); |
||||
|
// $value['at_user'] = $value['R'];//R创建人 |
||||
|
// unset($value['R']); |
||||
|
// $value['pr_user_bef'] = $value['S'] ? $value['S'] : Session::get('username');//S前负责人 |
||||
|
// unset($value['S']); |
||||
|
//$value['status'] = 0;//导入线索 |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
$failcount = count($result); //最终的总数 |
||||
|
$insertAll = Db::table('crm_leads')->insertAll($result); |
||||
|
|
||||
|
if ($insertAll){ |
||||
|
$msg = ['code' => 0,'msg'=>'导入'.$failcount.'条数据成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'线索导入失败,不可重复导入!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
//新建线索 |
||||
|
public function add(){ |
||||
|
if(request()->isPost()){ |
||||
|
// <!-- 线索名称、地区、行业类别、线索来源、联系人、联系号码、用户名、线索状态、备注 --> |
||||
|
$data['xs_name'] = Request::param('xs_name'); |
||||
|
$data['xs_area'] = Request::param('xs_area'); |
||||
|
$data['kh_hangye'] = Request::param('kh_hangye'); |
||||
|
$data['kh_contact'] = Request::param('kh_contact'); |
||||
|
// $data['kh_username'] = Request::param('kh_username'); |
||||
|
$data['phone'] = Request::param('phone'); |
||||
|
|
||||
|
$data['xs_source'] = Request::param('xs_source'); |
||||
|
$data['xs_status'] = Request::param('xs_status'); |
||||
|
$data['remark'] = Request::param('remark'); |
||||
|
|
||||
|
$data['at_user'] = Session::get('username'); |
||||
|
$data['at_time'] = date("Y-m-d H:i:s",time()); |
||||
|
$data['ut_time'] = date("Y-m-d H:i:s",time()); |
||||
|
$data['pr_user'] = Session::get('username'); |
||||
|
$data['pr_user_bef'] = Session::get('username'); |
||||
|
|
||||
|
$userExist = db('crm_leads')->where('phone', $data['phone'])->find(); |
||||
|
if ($userExist){ |
||||
|
$msg = ['code' => -200,'msg'=>'抱歉,重复线索不可添加!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
|
||||
|
$result = Db::table('crm_leads')->insert($data); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'添加成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'添加失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
$xsSourceList = Db::table('crm_clues_source')->select(); |
||||
|
$xsStatusList = Db::table('crm_clues_status')->select(); |
||||
|
$xsAreaList = Db::table('crm_clues_area')->select(); |
||||
|
$xsHangyeList = Db::table('crm_client_hangye')->select(); |
||||
|
$this -> assign('xsHangyeList',$xsHangyeList); |
||||
|
$this -> assign('xsAreaList',$xsAreaList); |
||||
|
|
||||
|
$this -> assign('xsSourceList',$xsSourceList); |
||||
|
$this -> assign('xsStatusList',$xsStatusList); |
||||
|
|
||||
|
return $this->fetch('clues/add'); |
||||
|
} |
||||
|
//编辑线索 |
||||
|
public function edit(){ |
||||
|
if (Request::isAjax()){ |
||||
|
$data = Request::param(); |
||||
|
$data['ut_time'] = date("Y-m-d H:i:s",time()); |
||||
|
|
||||
|
$result = Db::table('crm_leads')->where(['id'=>$data['id']])->where('status',0)->update($data); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'编辑成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'编辑失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
$result = Db::table('crm_leads') ->where(['id' => Request::param('id')])->find(); |
||||
|
$this -> assign('result',$result); |
||||
|
|
||||
|
$xsSourceList = Db::table('crm_clues_source')->select(); |
||||
|
$xsStatusList = Db::table('crm_clues_status')->select(); |
||||
|
$xsAreaList = Db::table('crm_clues_area')->select(); |
||||
|
$xsHangyeList = Db::table('crm_client_hangye')->select(); |
||||
|
$this -> assign('xsHangyeList',$xsHangyeList); |
||||
|
$this -> assign('xsAreaList',$xsAreaList); |
||||
|
$this -> assign('xsSourceList',$xsSourceList); |
||||
|
$this -> assign('xsStatusList',$xsStatusList); |
||||
|
|
||||
|
return $this -> fetch('clues/edit'); |
||||
|
} |
||||
|
//删除线索 |
||||
|
public function del(){ |
||||
|
$id = Request::param('id'); |
||||
|
$result = Db::table('crm_leads')->where('id',$id)->where('status',0)->delete(); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'删除成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'删除失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
//线索状态 |
||||
|
public function statusList(){ |
||||
|
if(request()->isPost()){ |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = db('crm_clues_status') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
//添加线索状态 |
||||
|
public function statusAdd(){ |
||||
|
if(request()->isPost()){ |
||||
|
$data['status_name'] = Request::param('status_name'); |
||||
|
$data['add_time'] = time(); |
||||
|
$result = Db::table('crm_clues_status')->insert($data); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'添加成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'添加失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
return $this->fetch('clues/status_list_add'); |
||||
|
} |
||||
|
//编辑线索状态 |
||||
|
public function statusEdit(){ |
||||
|
if (Request::isAjax()){ |
||||
|
$data = Request::param(); |
||||
|
$result = Db::table('crm_clues_status')->where(['id'=>$data['id']])->update($data); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'编辑成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'编辑失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
$result = Db::table('crm_clues_status') ->where(['id' => Request::param('id')])->find(); |
||||
|
$this -> assign('result',$result); |
||||
|
return $this -> fetch('clues/status_list_edit'); |
||||
|
} |
||||
|
//删除线索状态 |
||||
|
public function statusDel(){ |
||||
|
$id = Request::param('id'); |
||||
|
$result = Db::table('crm_clues_status')->where('id',$id)->delete(); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'删除成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'删除失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
//线索来源 |
||||
|
public function sourceList(){ |
||||
|
if(request()->isPost()){ |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = db('crm_clues_source') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
//添加线索来源 |
||||
|
public function sourceAdd(){ |
||||
|
if(request()->isPost()){ |
||||
|
$data['source_name'] = Request::param('source_name'); |
||||
|
$data['add_time'] = time(); |
||||
|
$result = Db::table('crm_clues_source')->insert($data); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'添加成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'添加失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
return $this->fetch('clues/source_list_add'); |
||||
|
} |
||||
|
//编辑线索来源 |
||||
|
public function sourceEdit(){ |
||||
|
if (Request::isAjax()){ |
||||
|
$data = Request::param(); |
||||
|
$result = Db::table('crm_clues_source')->where(['id'=>$data['id']])->update($data); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'编辑成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'编辑失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
$result = Db::table('crm_clues_source') ->where(['id' => Request::param('id')])->find(); |
||||
|
$this -> assign('result',$result); |
||||
|
return $this -> fetch('clues/source_list_edit'); |
||||
|
} |
||||
|
//删除线索来源 |
||||
|
public function sourceDel(){ |
||||
|
$id = Request::param('id'); |
||||
|
$result = Db::table('crm_clues_source')->where('id',$id)->delete(); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'删除成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'删除失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
//地区来源 |
||||
|
public function areaList(){ |
||||
|
if(request()->isPost()){ |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = db('crm_clues_area') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
//添加地区来源 |
||||
|
public function areaAdd(){ |
||||
|
if(request()->isPost()){ |
||||
|
$data['area_name'] = Request::param('area_name'); |
||||
|
$data['add_time'] = time(); |
||||
|
$result = Db::table('crm_clues_area')->insert($data); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'添加成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'添加失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
return $this->fetch('clues/area_list_add'); |
||||
|
} |
||||
|
//编辑地区来源 |
||||
|
public function areaEdit(){ |
||||
|
if (Request::isAjax()){ |
||||
|
$data = Request::param(); |
||||
|
$result = Db::table('crm_clues_area')->where(['id'=>$data['id']])->update($data); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'编辑成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'编辑失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
$result = Db::table('crm_clues_area') ->where(['id' => Request::param('id')])->find(); |
||||
|
$this -> assign('result',$result); |
||||
|
return $this -> fetch('clues/area_list_edit'); |
||||
|
} |
||||
|
//删除地区来源 |
||||
|
public function areaDel(){ |
||||
|
$id = Request::param('id'); |
||||
|
$result = Db::table('crm_clues_area')->where('id',$id)->delete(); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'删除成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'删除失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
//转成客户 |
||||
|
public function toTurnKh(){ |
||||
|
// 检测当前剩余抢的次数 |
||||
|
$curname = Session::get('username'); |
||||
|
$curget = Db::table('admin')->where(['username'=>$curname])->field('curgetnum')->find(); |
||||
|
$curgetnum = $curget['curgetnum']; |
||||
|
$sysinfo = Db::table('system')->where(['id'=>1])->field('maxgetnum,custlimit')->find(); |
||||
|
$maxgetnum = $sysinfo['maxgetnum']; |
||||
|
$custlimit = $sysinfo['custlimit']; |
||||
|
|
||||
|
if ($curgetnum>=$maxgetnum) { |
||||
|
$msg = ['code' => -200,'msg'=>'抱歉,您当月抢的次数已经达到上限'.$maxgetnum.'次!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
// 检测当前客户数最大数量 |
||||
|
$wherecust = []; |
||||
|
$wherecust['pr_user'] = $curname; |
||||
|
$wherecust['status'] = 1; |
||||
|
$wherecust['ispublic'] = 2; |
||||
|
$wherecust['issuccess'] = -1; |
||||
|
$maxcustnum = Db::table('crm_leads')->where($wherecust)->count('id'); |
||||
|
if($maxcustnum>=$custlimit){ |
||||
|
$msg = ['code' => -200,'msg'=>'抱歉,您抢得的客户数量已达上限'.$custlimit.'!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
|
||||
|
if (Request::isAjax()){ |
||||
|
$data['kh_name'] = Request::param('kh_name'); |
||||
|
$data['kh_rank'] = Request::param('kh_rank'); |
||||
|
$data['kh_status'] = Request::param('kh_status'); |
||||
|
$data['kh_need'] = Request::param('kh_need'); |
||||
|
$data['to_kh_time'] = date("Y-m-d H:i:s",time()); |
||||
|
$data['status'] = 1;//0-线索,1客户,2公海 |
||||
|
// 状态变化 设置私人公共变化 |
||||
|
// 抢到客户名称为自己 |
||||
|
$data['pr_user_bef'] = Db::table('crm_leads')->where(['id'=>$value])->field('pr_user')->find(); |
||||
|
$data['pr_user'] = Session::get('username'); |
||||
|
$data['ispublic'] = 2;//1 公共 2私人抢夺 3 私人添加 |
||||
|
$data['id'] = Request::param('id'); |
||||
|
$result = Db::table('crm_leads')->where(['id'=>$data['id']])->update($data); |
||||
|
if ($result){ |
||||
|
// 抢的次数增加1 |
||||
|
$curgetnum = $curgetnum + 1; |
||||
|
$curgetnum = Db::table('admin')->where(['username'=>$curname])->update(['curgetnum'=>$curgetnum]); |
||||
|
|
||||
|
$msg = ['code' => 0,'msg'=>'线上客户抢成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'抱歉,线索客户抢失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$khRankList = Db::table('crm_client_rank')->select(); |
||||
|
$khStatusList = Db::table('crm_client_status')->select(); |
||||
|
|
||||
|
$this -> assign('khRankList',$khRankList); |
||||
|
$this -> assign('khStatusList',$khStatusList); |
||||
|
|
||||
|
$result = Db::table('crm_leads') ->where(['id' => Request::param('id')])->find(); |
||||
|
$this -> assign('result',$result); |
||||
|
return $this -> fetch('clues/turn_kh'); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
//抢客户 |
||||
|
public function toTurnKh2(){ |
||||
|
$data['id'] = Request::param('id'); |
||||
|
//抢客户之前,先去判断是否可抢 |
||||
|
// 检测当前剩余抢的次数 |
||||
|
$curname = Session::get('username'); |
||||
|
$curget = Db::table('admin')->where(['username'=>$curname])->field('curgetnum')->find(); |
||||
|
$curgetnum = $curget['curgetnum']; |
||||
|
$sysinfo = Db::table('system')->where(['id'=>1])->field('maxgetnum,custlimit')->find(); |
||||
|
$maxgetnum = $sysinfo['maxgetnum']; |
||||
|
$custlimit = $sysinfo['custlimit']; |
||||
|
|
||||
|
if ($curgetnum>=$maxgetnum) { |
||||
|
$msg = ['code' => -200,'msg'=>'抱歉,您当月抢的次数已经达到上限'.$maxgetnum.'次!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
// 检测当前客户数最大数量 |
||||
|
$wherecust = []; |
||||
|
$wherecust['pr_user'] = $curname; |
||||
|
$wherecust['status'] = 1; |
||||
|
$wherecust['ispublic'] = 2; |
||||
|
$wherecust['issuccess'] = -1; |
||||
|
$maxcustnum = Db::table('crm_leads')->where($wherecust)->count('id'); |
||||
|
if($maxcustnum>=$custlimit){ |
||||
|
$msg = ['code' => -200,'msg'=>'抱歉,您抢得的客户数量已达上限'.$custlimit.'!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
|
||||
|
$gh_client = Db::table('crm_leads')->where(['id' => $data['id']])->where(['status' => 0])->find(); |
||||
|
if ($gh_client){ |
||||
|
// $data['to_kh_time'] = date("Y-m-d H:i:s",time()); |
||||
|
// $data['status'] = 1;//0-线索,1客户,2公海 |
||||
|
// $data['pr_user_bef'] = $gh_client['pr_user']; |
||||
|
// $data['pr_user'] = Session::get('username'); |
||||
|
// // 状态变化 设置私人公共变化 |
||||
|
// $data['ispublic'] = 2;//1 公共 2私人抢夺 3 私人添加 |
||||
|
|
||||
|
$data['kh_name'] = $gh_client['xs_name']; |
||||
|
$data['kh_rank'] = ''; |
||||
|
$data['kh_status'] = ''; |
||||
|
$data['to_kh_time'] = date("Y-m-d H:i:s",time()); |
||||
|
$data['ut_time'] = date("Y-m-d H:i:s",time()); |
||||
|
$data['status'] = 1;//0-线索,1客户,2公海 |
||||
|
// 状态变化 设置私人公共变化 |
||||
|
// 抢到客户名称为自己 |
||||
|
$data['pr_user_bef'] = Db::table('crm_leads')->where(['id'=>$value])->field('pr_user')->find(); |
||||
|
$data['pr_user'] = Session::get('username'); |
||||
|
$data['ispublic'] = 2;//1 公共 2私人抢夺 3 私人添加 |
||||
|
$data['id'] = $data['id']; |
||||
|
|
||||
|
|
||||
|
$result = Db::table('crm_leads')->where(['id'=>$data['id']])->update($data); |
||||
|
if ($result){ |
||||
|
// 抢的次数增加1 |
||||
|
$curgetnum = $curgetnum + 1; |
||||
|
$curgetnum = Db::table('admin')->where(['username'=>$curname])->update(['curgetnum'=>$curgetnum]); |
||||
|
|
||||
|
$msg = ['code' => 0,'msg'=>'抢客户成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'抢客户失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'抱歉,该客户已被抢走!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
//线索搜索 |
||||
|
public function cluesSearch(){ |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$limit =input('limit')?input('limit'):config('pageSize'); |
||||
|
$keyword = Request::param('keyword'); |
||||
|
$list= model('clues') -> getCluesSearchList($page,$limit,$keyword); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
//(我的线索)搜索 |
||||
|
public function personCluesSearch(){ |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$limit =input('limit')?input('limit'):config('pageSize'); |
||||
|
$keyword = Request::param('keyword'); |
||||
|
$list= model('clues') -> getPersonCluesSearchList($page,$limit,$keyword); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
//线索转移,变更负责人 |
||||
|
public function alterPrUser(){ |
||||
|
//1,获取提交的线索ID 【1,2,3,4,】 |
||||
|
$ids = Request::param('ids'); |
||||
|
$this -> assign('ids',$ids); |
||||
|
|
||||
|
|
||||
|
//查询所有管理员(去除admin) |
||||
|
$adminResult = Db::name('admin')->where('group_id','<>', 1)->field('admin_id,username')->select(); |
||||
|
$this -> assign('adminResult',$adminResult); |
||||
|
|
||||
|
if (Request::isAjax()){ |
||||
|
$username = Request::param('username'); |
||||
|
$idsArr = explode(",",$ids); |
||||
|
|
||||
|
|
||||
|
$count = 0; |
||||
|
foreach ($idsArr as $key => $value){ |
||||
|
$data['pr_user_bef'] = Db::table('crm_leads')->where(['id'=>$value])->field('pr_user')->find(); |
||||
|
$data['pr_user'] = $username; |
||||
|
$data['id'] = $value; |
||||
|
$insertAll = Db::name('crm_leads')->update($data); |
||||
|
if ($insertAll){ |
||||
|
$count ++; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
if ($count > 0){ |
||||
|
$msg = ['code' => 0,'msg'=>'转移'.$count.'条线索成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'转移失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return $this -> fetch('clues/alter_pr_user'); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
//线索转移,变更负责人(个人) |
||||
|
public function alterPrUserPri(){ |
||||
|
//1,获取提交的线索ID 【1,2,3,4,】 |
||||
|
$ids = Request::param('ids'); |
||||
|
$this -> assign('ids',$ids); |
||||
|
|
||||
|
|
||||
|
//查询所有管理员(去除admin) |
||||
|
$adminResult = Db::name('admin')->where('group_id','<>', 1)->field('admin_id,username')->select(); |
||||
|
$this -> assign('adminResult',$adminResult); |
||||
|
|
||||
|
if (Request::isAjax()){ |
||||
|
$username = Request::param('username'); |
||||
|
$idsArr = explode(",",$ids); |
||||
|
|
||||
|
|
||||
|
$count = 0; |
||||
|
foreach ($idsArr as $key => $value){ |
||||
|
$data['pr_user_bef'] = Db::table('crm_leads')->where(['id'=>$value])->field('pr_user')->find(); |
||||
|
$data['pr_user'] = $username; |
||||
|
$data['id'] = $value; |
||||
|
$insertAll = Db::name('crm_leads')->update($data); |
||||
|
if ($insertAll){ |
||||
|
$count ++; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
if ($count > 0){ |
||||
|
$msg = ['code' => 0,'msg'=>'转移'.$count.'条线索成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'转移失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return $this -> fetch('clues/alter_pr_user'); |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,52 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use think\Db; |
||||
|
use think\Controller; |
||||
|
class Common extends Controller |
||||
|
{ |
||||
|
protected $mod,$role,$system,$nav,$menudata,$cache_model,$categorys,$module,$moduleid,$adminRules,$HrefId; |
||||
|
public function initialize() |
||||
|
{ |
||||
|
//判断管理员是否登录 |
||||
|
if (!session('aid')) { |
||||
|
$this->redirect('admin/login/index'); |
||||
|
} |
||||
|
define('MODULE_NAME',strtolower(request()->controller())); |
||||
|
define('ACTION_NAME',strtolower(request()->action())); |
||||
|
//权限管理 |
||||
|
//当前操作权限ID |
||||
|
if(session('aid')!=1){ |
||||
|
$this->HrefId = db('auth_rule')->where('href',MODULE_NAME.'/'.ACTION_NAME)->value('id'); |
||||
|
//当前管理员权限 |
||||
|
$map['a.admin_id'] = session('aid'); |
||||
|
$rules=Db::table(config('database.prefix').'admin')->alias('a') |
||||
|
->join(config('database.prefix').'auth_group ag','a.group_id = ag.group_id','left') |
||||
|
->where($map) |
||||
|
->value('ag.rules'); |
||||
|
$this->adminRules = explode(',',$rules); |
||||
|
if($this->HrefId){ |
||||
|
if(!in_array($this->HrefId,$this->adminRules)){ |
||||
|
$this->error('您无此操作权限'); |
||||
|
|
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
$this->cache_model=array('Module','AuthRule','Category','Posid','Field','System','cm'); |
||||
|
foreach($this->cache_model as $r){ |
||||
|
if(!cache($r)){ |
||||
|
savecache($r); |
||||
|
} |
||||
|
} |
||||
|
$this->system = cache('System'); |
||||
|
$this->categorys = cache('Category'); |
||||
|
$this->module = cache('Module'); |
||||
|
$this->mod = cache('Mod'); |
||||
|
$this->rule = cache('AuthRule'); |
||||
|
$this->cm = cache('cm'); |
||||
|
} |
||||
|
//空操作 |
||||
|
public function _empty(){ |
||||
|
return $this->error('空操作,返回上次访问页面中...'); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,94 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use think\Db; |
||||
|
use \tp5er\Backup; |
||||
|
class Database extends Common |
||||
|
{ |
||||
|
protected $db = '', $datadir; |
||||
|
function initialize(){ |
||||
|
parent::initialize(); |
||||
|
$this->config=array( |
||||
|
'path' => './Data/',//数据库备份路径 |
||||
|
'part' => 20971520,//数据库备份卷大小 |
||||
|
'compress' => 0,//数据库备份文件是否启用压缩 0不压缩 1 压缩 |
||||
|
'level' => 9 //数据库备份文件压缩级别 1普通 4 一般 9最高 |
||||
|
); |
||||
|
$this->db = new Backup($this->config); |
||||
|
} |
||||
|
public function database(){ |
||||
|
if(request()->isPost()){ |
||||
|
$list = $this->db->dataList(); |
||||
|
$total = 0; |
||||
|
foreach ($list as $k => $v) { |
||||
|
$list[$k]['size'] = format_bytes($v['data_length']); |
||||
|
$total += $v['data_length']; |
||||
|
} |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list,'total'=>format_bytes($total),'tableNum'=>count($list),'rel'=>1]; |
||||
|
} |
||||
|
return view(); |
||||
|
} |
||||
|
//优化 |
||||
|
public function optimize() { |
||||
|
$tables = input('tables/a'); |
||||
|
if (empty($tables)) { |
||||
|
return ['code'=>0,'msg'=>'请选择要优化的表!']; |
||||
|
} |
||||
|
if($this->db->optimize($tables)){ |
||||
|
return ['code'=>1,'msg'=>'数据表优化成功!']; |
||||
|
}else{ |
||||
|
return ['code'=>0,'msg'=>'数据表优化出错请重试!']; |
||||
|
} |
||||
|
} |
||||
|
//修复 |
||||
|
public function repair() { |
||||
|
$tables = input('tables/a'); |
||||
|
if (empty($tables)) { |
||||
|
return ['code'=>0,'msg'=>'请选择要修复的表!']; |
||||
|
} |
||||
|
if($this->db->repair($tables)){ |
||||
|
return ['code'=>1,'msg'=>'数据表修复成功!']; |
||||
|
}else{ |
||||
|
return ['code'=>0,'msg'=>'数据表修复出错请重试!']; |
||||
|
} |
||||
|
} |
||||
|
//备份 |
||||
|
public function backup(){ |
||||
|
$tables = input('post.tables/a'); |
||||
|
if (!empty($tables)) { |
||||
|
foreach ($tables as $table) { |
||||
|
$this->db->setFile()->backup($table, 0); |
||||
|
} |
||||
|
return ['code'=>1,'msg'=>'备份成功!']; |
||||
|
} else { |
||||
|
return ['code'=>0,'msg'=>'请选择要备份的表!']; |
||||
|
} |
||||
|
} |
||||
|
//备份列表 |
||||
|
public function restore(){ |
||||
|
if(request()->isPost()){ |
||||
|
$list = $this->db->fileList(); |
||||
|
return ['code'=>0,'msg'=>'获取成功!','data'=>$list,'rel'=>1]; |
||||
|
} |
||||
|
return view(); |
||||
|
} |
||||
|
//执行还原数据库操作 |
||||
|
public function import($time) { |
||||
|
$list = $this->db->getFile('timeverif',$time); |
||||
|
$this->db->setFile($list)->import(1); |
||||
|
return ['code'=>1,'msg'=>'还原成功!']; |
||||
|
} |
||||
|
|
||||
|
//下载 |
||||
|
public function downFile($time) { |
||||
|
$this->db->downloadFile($time); |
||||
|
} |
||||
|
//删除sql文件 |
||||
|
public function delSqlFiles() { |
||||
|
$time = input('post.time'); |
||||
|
if($this->db->delFile($time)){ |
||||
|
return ['code'=>1,'msg'=>"备份文件删除成功!"]; |
||||
|
}else{ |
||||
|
return ['code'=>0,'msg'=>"备份文件删除失败,请检查权限!"]; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,143 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use think\Db; |
||||
|
use think\facade\Request; |
||||
|
class Debris extends Common |
||||
|
{ |
||||
|
public function index(){ |
||||
|
if(Request::isAjax()) { |
||||
|
$key = input('post.key'); |
||||
|
$this->assign('testkey', $key); |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = Db::table(config('database.prefix') . 'debris')->alias('d') |
||||
|
->join(config('database.prefix') . 'debris_type dt', 'd.type_id = dt.id', 'left') |
||||
|
->field('d.*,dt.title as typename') |
||||
|
->where('d.title', 'like', "%" . $key . "%") |
||||
|
->order('d.type_id desc,d.sort asc') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
foreach ($list['data'] as $k=>$v){ |
||||
|
$list['data'][$k]['addtime'] = date('Y-m-d H:s',$v['addtime']); |
||||
|
} |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function add(){ |
||||
|
if(Request::isAjax()) { |
||||
|
//构建数组 |
||||
|
$data = Request::except('file'); |
||||
|
$data['addtime'] = time(); |
||||
|
db('debris')->insert($data); |
||||
|
$result['code'] = 1; |
||||
|
$result['msg'] = '碎片添加成功!'; |
||||
|
$result['url'] = url('index'); |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$debrisTypeList=db('debris_type')->order('sort')->select();//获取所有广告位 |
||||
|
$this->assign('debrisTypeList',$debrisTypeList); |
||||
|
|
||||
|
$this->assign('title',lang('add').lang('debris')); |
||||
|
$this->assign('info','null'); |
||||
|
return $this->fetch('form'); |
||||
|
} |
||||
|
} |
||||
|
public function edit(){ |
||||
|
if(Request::isAjax()) { |
||||
|
$data = Request::except('file'); |
||||
|
db('debris')->where('id',$data['id'])->update($data); |
||||
|
$result['code'] = 1; |
||||
|
$result['msg'] = '碎片修改成功!'; |
||||
|
$result['url'] = url('index'); |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$id=input('id'); |
||||
|
$info=db('debris')->where(array('id'=>$id))->find(); |
||||
|
$this->assign('info',json_encode($info,true)); |
||||
|
|
||||
|
$debrisTypeList=db('debris_type')->order('sort')->select();//获取所有广告位 |
||||
|
$this->assign('debrisTypeList',$debrisTypeList); |
||||
|
|
||||
|
$this->assign('title',lang('edit').lang('debris')); |
||||
|
return $this->fetch('form'); |
||||
|
} |
||||
|
} |
||||
|
public function del(){ |
||||
|
db('debris')->where('id',input('post.id'))->delete(); |
||||
|
return ['code'=>1,'msg'=>'删除成功!']; |
||||
|
} |
||||
|
public function debrisOrder(){ |
||||
|
$data = input('post.'); |
||||
|
if(db('debris')->update($data)!==false){ |
||||
|
return $result = ['msg' => '操作成功!','url'=>url('index'), 'code' =>1]; |
||||
|
}else{ |
||||
|
return $result = ['code'=>0,'msg'=>'操作失败!']; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public function delall(){ |
||||
|
$map['id'] =array('in',input('param.ids/a')); |
||||
|
db('debris')->where($map)->delete(); |
||||
|
|
||||
|
$result['msg'] = '删除成功!'; |
||||
|
$result['code'] = 1; |
||||
|
$result['url'] = url('index'); |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
/*************************类别*************************/ |
||||
|
public function type(){ |
||||
|
if(request()->isPost()) { |
||||
|
$key = input('key'); |
||||
|
$this->assign('testkey', $key); |
||||
|
$list = db('debris_type')->where('title', 'like', "%" . $key . "%")->order('sort')->select(); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list,'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function addType(){ |
||||
|
if(request()->isPost()) { |
||||
|
db('debris_type')->insert(input('post.')); |
||||
|
$result['code'] = 1; |
||||
|
$result['msg'] = '碎片分类保存成功!'; |
||||
|
$result['url'] = url('type'); |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$this->assign('title',lang('add').'碎片分类'); |
||||
|
$this->assign('info','null'); |
||||
|
return $this->fetch('typeForm'); |
||||
|
} |
||||
|
} |
||||
|
public function editType(){ |
||||
|
if(request()->isPost()) { |
||||
|
db('debris_type')->update(input('post.')); |
||||
|
$result['code'] = 1; |
||||
|
$result['msg'] = '碎片分类修改成功!'; |
||||
|
$result['url'] = url('type'); |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$id=input('param.id'); |
||||
|
$info=db('debris_type')->where('id',$id)->find(); |
||||
|
$this->assign('title',lang('edit').'碎片分类'); |
||||
|
$this->assign('info',json_encode($info,true)); |
||||
|
return $this->fetch('typeForm'); |
||||
|
} |
||||
|
} |
||||
|
public function typeOrder(){ |
||||
|
$debris_type=db('debris_type'); |
||||
|
$data = input('post.'); |
||||
|
if($debris_type->update($data)!==false){ |
||||
|
return $result = ['msg' => '操作成功!','url'=>url('type'), 'code' =>1]; |
||||
|
}else{ |
||||
|
return $result = ['code'=>0,'msg'=>'操作失败!']; |
||||
|
} |
||||
|
} |
||||
|
public function delType(){ |
||||
|
$id = input('post.id'); |
||||
|
db('debris_type')->where(['id'=>$id])->delete();//删除广告位 |
||||
|
db('debris')->where(['type_id'=>$id])->delete();//删除该广告位所有广告 |
||||
|
return ['code'=>1,'msg'=>'删除成功!']; |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,69 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use think\facade\Request; |
||||
|
class Donation extends Common |
||||
|
{ |
||||
|
//捐赠列表 |
||||
|
public function index(){ |
||||
|
if(Request::isAjax()) { |
||||
|
$key=input('post.key'); |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = db('donation') |
||||
|
->where('name', 'like', "%" . $key . "%") |
||||
|
->order('addtime desc') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
foreach ($list['data'] as $k=>$v){ |
||||
|
$list['data'][$k]['addtime'] = date('Y-m-d H:s',$v['addtime']); |
||||
|
$list['data'][$k]['mnum'] = $v['money']*100; |
||||
|
} |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function add(){ |
||||
|
if(Request::isAjax()) { |
||||
|
//构建数组 |
||||
|
$data = input('post.'); |
||||
|
$data['addtime'] = time(); |
||||
|
db('donation')->insert($data); |
||||
|
$result['code'] = 1; |
||||
|
$result['msg'] = '捐赠名单添加成功!'; |
||||
|
$result['url'] = url('index'); |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$this->assign('title',lang('add').'捐赠名单'); |
||||
|
$this->assign('info','null'); |
||||
|
return $this->fetch('form'); |
||||
|
} |
||||
|
} |
||||
|
public function edit(){ |
||||
|
if(Request::isAjax()) { |
||||
|
$data = input('post.'); |
||||
|
db('donation')->update($data); |
||||
|
$result['code'] = 1; |
||||
|
$result['msg'] = '捐赠名单修改成功!'; |
||||
|
$result['url'] = url('index'); |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$id=input('id'); |
||||
|
$info=db('donation')->where(array('id'=>$id))->find(); |
||||
|
$this->assign('info',json_encode($info,true)); |
||||
|
$this->assign('title',lang('edit').'捐赠名单'); |
||||
|
return $this->fetch('form'); |
||||
|
} |
||||
|
} |
||||
|
public function del(){ |
||||
|
db('donation')->where(array('id'=>input('id')))->delete(); |
||||
|
return ['code'=>1,'msg'=>'删除成功!']; |
||||
|
} |
||||
|
public function delall(){ |
||||
|
$map[] =array('id','in',input('param.ids/a')); |
||||
|
db('donation')->where($map)->delete(); |
||||
|
$result['msg'] = '删除成功!'; |
||||
|
$result['code'] = 1; |
||||
|
$result['url'] = url('index'); |
||||
|
return $result; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,451 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use think\Db; |
||||
|
use think\facade\Request; |
||||
|
use clt\Form; |
||||
|
use app\admin\model\Tags as Tags; |
||||
|
class EmptyController extends Common{ |
||||
|
protected $dao,$fields; |
||||
|
public function initialize() |
||||
|
{ |
||||
|
parent::initialize(); |
||||
|
$this->moduleid = $this->mod[MODULE_NAME]; |
||||
|
$this->dao = db(MODULE_NAME); |
||||
|
$fields = cache($this->moduleid.'_Field'); |
||||
|
foreach($fields as $key => $res){ |
||||
|
$res['setup']=string2array($res['setup']); |
||||
|
$this->fields[$key]=$res; |
||||
|
} |
||||
|
unset($fields); |
||||
|
unset($res); |
||||
|
$this->assign ('fields',$this->fields); |
||||
|
} |
||||
|
public function index(){ |
||||
|
if(Request::isAjax()){ |
||||
|
$request = Request::instance(); |
||||
|
$modelname = strtolower($request->controller()); |
||||
|
$model = db($modelname); |
||||
|
$keyword=input('post.key'); |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$order = "sort asc,id desc"; |
||||
|
if (input('post.catid')) { |
||||
|
$catids = db('category')->where(array('pid'=>input('post.catid')))->column('id'); |
||||
|
if($catids){ |
||||
|
$catid = input('post.catid').','.implode(',',$catids); |
||||
|
}else{ |
||||
|
$catid = input('post.catid'); |
||||
|
} |
||||
|
} |
||||
|
$cinfo= db('category')->where(array('id'=>input('post.catid')))->field('catdir,is_show')->find(); |
||||
|
if(!empty($keyword) ){ |
||||
|
$map[]=array('title','like','%'.$keyword.'%'); |
||||
|
} |
||||
|
$prefix=config('database.prefix'); |
||||
|
$Fields=Db::getConnection()->getFields($prefix.$modelname); |
||||
|
foreach ($Fields as $k=>$v){ |
||||
|
$field[$k] = $k; |
||||
|
} |
||||
|
if(in_array('catid',$field)){ |
||||
|
$map[]=array('catid','in',$catid); |
||||
|
} |
||||
|
$list = $model |
||||
|
->where($map) |
||||
|
->order($order) |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
$rsult['code'] = 0; |
||||
|
$rsult['msg'] = "获取成功"; |
||||
|
$lists = $list['data']; |
||||
|
foreach ($lists as $k=>$v ){ |
||||
|
$lists[$k]['createtime'] = date('Y-m-d H:i:s',$v['createtime']); |
||||
|
$lists[$k]['catdir'] = $cinfo['catdir']; |
||||
|
$lists[$k]['is_show'] = $cinfo['is_show']; |
||||
|
$lists[$k]['url'] = url('home/'.$cinfo['catdir'].'/info',['id'=>$v['id'],'catId'=>$v['catid']]); |
||||
|
} |
||||
|
$rsult['data'] = $lists; |
||||
|
$rsult['count'] = $list['total']; |
||||
|
$rsult['rel'] = 1; |
||||
|
return $rsult; |
||||
|
}else{ |
||||
|
return $this->fetch ('content/index'); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public function edit(){ |
||||
|
$id = input('id'); |
||||
|
$request = Request::instance(); |
||||
|
$controllerName = $request->controller(); |
||||
|
if($controllerName=='Page'){ |
||||
|
$p = $this->dao->where('id',$id)->find(); |
||||
|
if(empty($p)){ |
||||
|
$data['id']=$id; |
||||
|
$data['title'] = $this->categorys[$id]['catname']; |
||||
|
$data['keywords'] = $this->categorys[$id]['keywords']; |
||||
|
$this->dao->insert($data); |
||||
|
} |
||||
|
} |
||||
|
$info = $this->dao->where('id',$id)->find(); |
||||
|
$form=new Form($info); |
||||
|
$returnData['vo'] = $info; |
||||
|
$returnData['form'] = $form; |
||||
|
$this->assign ('info', $info ); |
||||
|
$this->assign ( 'form', $form ); |
||||
|
$this->assign ( 'title', '编辑内容' ); |
||||
|
return $this->fetch('content/edit'); |
||||
|
} |
||||
|
function update(){ |
||||
|
$request = Request::instance(); |
||||
|
|
||||
|
$controllerName = $request->controller(); |
||||
|
$model = $this->dao; |
||||
|
$fields = $this->fields; |
||||
|
$data = $this->checkfield($fields,Request::except('file')); |
||||
|
if(isset($data['code'])){ |
||||
|
return ['code'=>0,'msg'=>$data['msg']]; |
||||
|
} |
||||
|
if(isset($fields['updatetime'])) { |
||||
|
$data['userid'] = session('aid'); |
||||
|
} |
||||
|
|
||||
|
if(isset($fields['updatetime'])) { |
||||
|
$data['updatetime'] = time(); |
||||
|
} |
||||
|
|
||||
|
$title_style =''; |
||||
|
if (isset($data['style_color'])) { |
||||
|
$title_style .= 'color:' . $data['style_color'].';'; |
||||
|
unset($data['style_color']); |
||||
|
}else{ |
||||
|
$title_style .= 'color:#222;'; |
||||
|
} |
||||
|
if (isset($data['style_bold'])) { |
||||
|
$title_style .= 'font-weight:' . $data['style_bold'].';'; |
||||
|
unset($data['style_bold']); |
||||
|
}else{ |
||||
|
$title_style .= 'font-weight:normal;'; |
||||
|
} |
||||
|
if($fields['title']['setup']['style']==1) { |
||||
|
$data['title_style'] = $title_style; |
||||
|
} |
||||
|
if($controllerName!='Page') { |
||||
|
$data['updatetime'] = time(); |
||||
|
} |
||||
|
unset($data['aid']); |
||||
|
unset($data['pics_name']); |
||||
|
//编辑多图和多文件 |
||||
|
foreach ($fields as $k=>$v){ |
||||
|
if($v['type']=='files' ){ |
||||
|
if(!$data[$k]){ |
||||
|
$data[$k]=''; |
||||
|
} |
||||
|
$data[$v['field']] = $data['images']; |
||||
|
} |
||||
|
if($v['type']=='images'){ |
||||
|
if(!isset($data[$k])){ |
||||
|
$data[$k]=''; |
||||
|
} |
||||
|
if($data[$k]){ |
||||
|
$data[$v['field']] = implode(';',$data[$k]); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
$list=$model->strict(false)->update($data); |
||||
|
if (false !== $list) { |
||||
|
if($controllerName=='Page'){ |
||||
|
$result['url'] = url("admin/category/index"); |
||||
|
}else{ |
||||
|
$result['url'] = url("admin/".$controllerName."/index",array('catid'=>$data['catid'])); |
||||
|
} |
||||
|
//标签 |
||||
|
if(isset($data['tags'])){ |
||||
|
$tags = array_filter(explode(',', $data['tags'])); |
||||
|
if ($tags) { |
||||
|
$tagsId = Db::name('article_tags')->where('article_id',$data['id'])->column('tag_id'); |
||||
|
if($tagsId){ |
||||
|
//如果存在,则全部删除后,重新添加 |
||||
|
//统计减1 |
||||
|
Tags::where('id', 'in', $tagsId)->setDec('nums'); |
||||
|
//删除全部 |
||||
|
Db::name('article_tags')->where('article_id',$data['id'])->delete(); |
||||
|
//重新添加 |
||||
|
foreach ($tags as $k => $v) { |
||||
|
$info = Tags::where('name', $v)->find(); |
||||
|
if($info){ |
||||
|
Tags::where('name', $v)->setInc('nums'); |
||||
|
$data3['tag_id'] = $info['id']; |
||||
|
}else{ |
||||
|
$data2 = ['name' => $v, 'nums' => 1]; |
||||
|
$data3['tag_id'] = model('tags')->insertGetId($data2); |
||||
|
} |
||||
|
$data3['article_id'] = $data['id']; |
||||
|
Db::name('article_tags')->insert($data3); |
||||
|
} |
||||
|
}else{ |
||||
|
//如果不存在 |
||||
|
$tagslist = Tags::where('name', 'in', $tags)->select(); |
||||
|
if(count($tagslist)>0){ |
||||
|
foreach ($tagslist as $k => $v) { |
||||
|
$data3['tag_id'] = $v['id']; |
||||
|
$data3['article_id'] = $data['id']; |
||||
|
Db::name('article_tags')->insert($data3); |
||||
|
$v->nums++; |
||||
|
$v->save(); |
||||
|
$tags = array_diff($tags, [$v['name']]); |
||||
|
} |
||||
|
foreach ($tags as $k => $v) { |
||||
|
$data2 = ['name' => $v, 'nums' => 1]; |
||||
|
$data3['tag_id'] = model('tags')->insertGetId($data2); |
||||
|
$data3['article_id'] = $data['id']; |
||||
|
Db::name('article_tags')->insert($data3); |
||||
|
} |
||||
|
}else{ |
||||
|
foreach ($tags as $k => $v) { |
||||
|
$data2 = ['name' => $v, 'nums' => 1]; |
||||
|
$data3['tag_id'] = model('tags')->insertGetId($data2); |
||||
|
$data3['article_id'] = $data['id']; |
||||
|
Db::name('article_tags')->insert($data3); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$result['msg'] = '修改成功!'; |
||||
|
$result['code'] = 1; |
||||
|
return $result; |
||||
|
} else { |
||||
|
$result['msg'] = '修改失败!'; |
||||
|
$result['code'] = 0; |
||||
|
return $result; |
||||
|
} |
||||
|
} |
||||
|
public function set_categorys($categorys = array()) { |
||||
|
if (is_array($categorys) && !empty($categorys)) { |
||||
|
foreach ($categorys as $id => $c) { |
||||
|
$this->categorys[$c['id']] = $c; |
||||
|
$r = db('category')->where("pid = $c[id]")->order('listorder ASC,id ASC')->select(); |
||||
|
$this->set_categorys($r); |
||||
|
} |
||||
|
} |
||||
|
return true; |
||||
|
} |
||||
|
function checkfield($fields,$post){ |
||||
|
foreach ( $post as $key => $val ) { |
||||
|
if(isset($fields[$key])){ |
||||
|
$setup=$fields[$key]['setup']; |
||||
|
if(!empty($fields[$key]['required']) && empty($post[$key])){ |
||||
|
$result['msg'] = $fields[$key]['errormsg']?$fields[$key]['errormsg']:'缺少必要参数!'; |
||||
|
$result['code'] = 0; |
||||
|
return $result; |
||||
|
} |
||||
|
if(isset($setup['multiple'])){ |
||||
|
if(is_array($post[$key])){ |
||||
|
$post[$key] = implode(',',$post[$key]); |
||||
|
} |
||||
|
} |
||||
|
if(isset($setup['inputtype'])){ |
||||
|
if($setup['inputtype']=='checkbox'){ |
||||
|
$post[$key] = implode(',',$post[$key]); |
||||
|
} |
||||
|
} |
||||
|
if(isset($setup['fieldtype'])){ |
||||
|
if($fields[$key]['type']=='checkbox'){ |
||||
|
$post[$key] = implode(',',$post[$key]); |
||||
|
} |
||||
|
} |
||||
|
if($fields[$key]['type']=='datetime'){ |
||||
|
$post[$key] =strtotime($post[$key]); |
||||
|
}elseif($fields[$key]['type']=='textarea'){ |
||||
|
$post[$key]=addslashes($post[$key]); |
||||
|
}elseif($fields[$key]['type']=='linkage'){ |
||||
|
if($post[$key][0]){ |
||||
|
$post[$key] = implode(',',$post[$key]); |
||||
|
}else{ |
||||
|
unset($post[$key]); |
||||
|
} |
||||
|
}elseif($fields[$key]['type']=='editor'){ |
||||
|
if(isset($post['add_description']) && $post['description'] == '' && isset($post['content'])) { |
||||
|
$content = stripslashes($post['content']); |
||||
|
$description_length = intval($post['description_length']); |
||||
|
$post['description'] = str_cut(str_replace(array("\r\n","\t",'[page]','[/page]','“','”'), '', strip_tags($content)),$description_length); |
||||
|
$post['description'] = addslashes($post['description']); |
||||
|
} |
||||
|
if(isset($post['auto_thumb']) && $post['thumb'] == '' && isset($post['content'])) { |
||||
|
$content = $content ? $content : stripslashes($post['content']); |
||||
|
$auto_thumb_no = intval($post['auto_thumb_no']) * 3; |
||||
|
if(preg_match_all("/(src)=([\"|']?)([^ \"'>]+\.(gif|jpg|jpeg|bmp|png))\\2/i", $content, $matches)) { |
||||
|
$post['thumb'] = $matches[$auto_thumb_no][0]; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
return $post; |
||||
|
} |
||||
|
|
||||
|
public function add(){ |
||||
|
$form=new Form(); |
||||
|
$this->assign ( 'form', $form ); |
||||
|
$this->assign ( 'title', '添加内容' ); |
||||
|
return $this->fetch('content/edit'); |
||||
|
} |
||||
|
public function insert(){ |
||||
|
$request = Request::instance(); |
||||
|
$controllerName = $request->controller(); |
||||
|
$model = $this->dao; |
||||
|
$fields = $this->fields; |
||||
|
$data = $this->checkfield($fields,Request::except('file')); |
||||
|
if(isset($data['code']) && $data['code']==0){ |
||||
|
return $data; |
||||
|
} |
||||
|
if(isset($fields['createtime']) && !isset($data['createtime']) ){ |
||||
|
$data['createtime'] = time(); |
||||
|
} |
||||
|
if(isset($fields['updatetime']) && !isset($data['updatetime']) ) { |
||||
|
$data['updatetime'] = time(); |
||||
|
} |
||||
|
if($controllerName!='Page') { |
||||
|
if (isset($fields['updatetime'])){ |
||||
|
$data['updatetime'] = $data['createtime']; |
||||
|
} |
||||
|
} |
||||
|
$data['userid'] = session('aid'); |
||||
|
$data['username'] = session('username'); |
||||
|
|
||||
|
$title_style =''; |
||||
|
if (isset($data['style_color'])) { |
||||
|
$title_style .= 'color:' . $data['style_color'].';'; |
||||
|
unset($data['style_color']); |
||||
|
}else{ |
||||
|
$title_style .= 'color:#222;'; |
||||
|
} |
||||
|
if (isset($data['style_bold'])) { |
||||
|
$title_style .= 'font-weight:' . $data['style_bold'].';'; |
||||
|
unset($data['style_bold']); |
||||
|
}else{ |
||||
|
$title_style .= 'font-weight:normal;'; |
||||
|
} |
||||
|
if($fields['title']['setup']['style']==1) { |
||||
|
$data['title_style'] = $title_style; |
||||
|
} |
||||
|
|
||||
|
unset($data['style_color']); |
||||
|
unset($data['style_bold']); |
||||
|
unset($data['aid']); |
||||
|
unset($data['pics_name']); |
||||
|
//编辑多图和多文件 |
||||
|
foreach ($fields as $k=>$v){ |
||||
|
if($v['type']=='files' ){ |
||||
|
if(!$data[$k]){ |
||||
|
$data[$k]=''; |
||||
|
} |
||||
|
$data[$v['field']] = $data['images']; |
||||
|
} |
||||
|
if($v['type']=='images'){ |
||||
|
if(!isset($data[$k])){ |
||||
|
$data[$k]=''; |
||||
|
} |
||||
|
if($data[$k]){ |
||||
|
$data[$v['field']] = implode(';',$data[$k]); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
$id= $model->insertGetId($data); |
||||
|
if ($id !==false) { |
||||
|
if($controllerName=='page'){ |
||||
|
$result['url'] = url("admin/category/index"); |
||||
|
}else{ |
||||
|
$result['url'] = url("admin/".$controllerName."/index",array('catid'=>$data['catid'])); |
||||
|
} |
||||
|
|
||||
|
//标签 |
||||
|
if(isset($data['tags'])){ |
||||
|
$tags = array_filter(explode(',', $data['tags'])); |
||||
|
if ($tags) { |
||||
|
$tagslist = Tags::where('name', 'in', $tags)->select(); |
||||
|
if(count($tagslist)>0){ |
||||
|
foreach ($tagslist as $k => $v) { |
||||
|
$data3['tag_id'] = $v['id']; |
||||
|
$data3['article_id'] = $id; |
||||
|
Db::name('article_tags')->insert($data3); |
||||
|
$v->nums++; |
||||
|
$v->save(); |
||||
|
$tags = array_diff($tags, [$v['name']]); |
||||
|
} |
||||
|
foreach ($tags as $k => $v) { |
||||
|
$data2 = ['name' => $v, 'nums' => 1]; |
||||
|
$data3['tag_id'] = model('tags')->insertGetId($data2); |
||||
|
$data3['article_id'] = $id; |
||||
|
Db::name('article_tags')->insert($data3); |
||||
|
} |
||||
|
}else{ |
||||
|
foreach ($tags as $k => $v) { |
||||
|
$data2 = ['name' => $v, 'nums' => 1]; |
||||
|
$data3['tag_id'] = model('tags')->insertGetId($data2); |
||||
|
$data3['article_id'] = $id; |
||||
|
Db::name('article_tags')->insert($data3); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
$result['msg'] = '添加成功!'; |
||||
|
$result['code'] = 1; |
||||
|
return $result; |
||||
|
} else { |
||||
|
$result['msg'] = '添加失败!'; |
||||
|
$result['code'] = 0; |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
public function listDel(){ |
||||
|
$id = input('post.id'); |
||||
|
$model = $this->dao; |
||||
|
$model->where(array('id'=>$id))->delete();//转入回收站 |
||||
|
return ['code'=>1,'msg'=>'删除成功!']; |
||||
|
} |
||||
|
public function delAll(){ |
||||
|
$map[] =array('id','in',input('post.ids/a')); |
||||
|
$model = $this->dao; |
||||
|
$model->where($map)->delete(); |
||||
|
$result['code'] = 1; |
||||
|
$result['msg'] = '删除成功!'; |
||||
|
$result['url'] = url('index',array('catid'=>input('post.catid'))); |
||||
|
return $result; |
||||
|
} |
||||
|
public function listorder(){ |
||||
|
$model = $this->dao; |
||||
|
$catid = input('catid'); |
||||
|
$data = input('post.'); |
||||
|
$model->update($data); |
||||
|
$result = ['msg' => '排序成功!','url'=>url('index',array('catid'=>$catid)), 'code' => 1]; |
||||
|
return $result; |
||||
|
} |
||||
|
public function delImg(){ |
||||
|
if(!input('post.url')){ |
||||
|
return ['code'=>0,'请指定要删除的图片资源']; |
||||
|
} |
||||
|
$file = ROOT_PATH.__PUBLIC__.input('post.url'); |
||||
|
if(file_exists($file) && trim(input('post.url'))!=''){ |
||||
|
is_dir($file) ? dir_delete($file) : unlink($file); |
||||
|
} |
||||
|
if(input('post.id')){ |
||||
|
$picurl = input('post.picurl'); |
||||
|
$picurlArr = explode(':',$picurl); |
||||
|
$pics = substr(implode(":::",$picurlArr),0,-3); |
||||
|
$model = $this->dao; |
||||
|
$map['id'] =input('post.id'); |
||||
|
$model->where($map)->update(array('pics'=>$pics)); |
||||
|
} |
||||
|
$result['msg'] = '删除成功!'; |
||||
|
$result['code'] = 1; |
||||
|
return $result; |
||||
|
} |
||||
|
public function getRegion(){ |
||||
|
$Region=db("region"); |
||||
|
$map['pid'] = input("pid"); |
||||
|
$list=$Region->where($map)->select(); |
||||
|
return $list; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,153 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use think\Db; |
||||
|
use think\Request; |
||||
|
use think\Controller; |
||||
|
class Feast extends Common |
||||
|
{ |
||||
|
public function index(){ |
||||
|
if(request()->isPost()) { |
||||
|
$key = input('post.key'); |
||||
|
$this->assign('testkey', $key); |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = Db::name('feast') |
||||
|
->where('title', 'like', "%" . $key . "%") |
||||
|
->order('sort') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
foreach ($list['data'] as $k=>$v){ |
||||
|
$list['data'][$k]['addtime'] = date('Y-m-d H:i',$v['addtime']); |
||||
|
$list['data'][$k]['type'] = $v['type']==1?'阳历':'农历'; |
||||
|
} |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function add(){ |
||||
|
if(request()->isPost()) { |
||||
|
//构建数组 |
||||
|
$data = input('post.'); |
||||
|
$data['addtime'] = time(); |
||||
|
db('feast')->insert($data); |
||||
|
return ['code'=>1,'msg'=>'节日添加成功!','url'=>url('index')]; |
||||
|
}else{ |
||||
|
$this->assign('title',lang('add').'节日'); |
||||
|
$this->assign('info','null'); |
||||
|
return $this->fetch('form'); |
||||
|
} |
||||
|
} |
||||
|
public function edit(){ |
||||
|
if(request()->isPost()) { |
||||
|
$data = input('post.'); |
||||
|
if(db('feast')->update($data)!==false){ |
||||
|
return ['code'=>1,'msg'=>'节日修改成功!','url'=>url('index')]; |
||||
|
}else{ |
||||
|
return ['code'=>0,'msg'=>'节日修改失败!']; |
||||
|
} |
||||
|
}else{ |
||||
|
$id=input('id'); |
||||
|
$adInfo=db('feast')->where(array('id'=>$id))->find(); |
||||
|
$this->assign('info',json_encode($adInfo,true)); |
||||
|
$this->assign('title',lang('edit').'节日'); |
||||
|
return $this->fetch('form'); |
||||
|
} |
||||
|
} |
||||
|
//设置节日状态 |
||||
|
public function editState(){ |
||||
|
$id=input('post.id'); |
||||
|
$open=input('post.open'); |
||||
|
if(db('feast')->where('id='.$id)->update(['open'=>$open])!==false){ |
||||
|
return ['status'=>1,'msg'=>'设置成功!']; |
||||
|
}else{ |
||||
|
return ['status'=>0,'msg'=>'设置失败!']; |
||||
|
} |
||||
|
} |
||||
|
public function feastOrder(){ |
||||
|
$feast=db('feast'); |
||||
|
$data = input('post.'); |
||||
|
if($feast->update($data)!==false){ |
||||
|
return $result = ['msg' => '操作成功!','url'=>url('index'), 'code' =>1]; |
||||
|
}else{ |
||||
|
return $result = ['code'=>0,'msg'=>'操作失败!']; |
||||
|
} |
||||
|
} |
||||
|
public function del(){ |
||||
|
db('feast')->where(array('id'=>input('id')))->delete(); |
||||
|
return ['code'=>1,'msg'=>'删除成功!']; |
||||
|
} |
||||
|
/***********************节日元素列表****************************************************************/ |
||||
|
public function element(){ |
||||
|
if(request()->isPost()) { |
||||
|
$key = input('post.key'); |
||||
|
$this->assign('testkey', $key); |
||||
|
|
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pid = input('pid'); |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = Db::name('feast_element') |
||||
|
->where([['title','like', "%" . $key . "%"],['pid','=',$pid]]) |
||||
|
->order('sort') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
foreach ($list['data'] as $k=>$v){ |
||||
|
$list['data'][$k]['addtime'] = date('Y-m-d H:i',$v['addtime']); |
||||
|
} |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function add_element(){ |
||||
|
if(request()->isPost()) { |
||||
|
//构建数组 |
||||
|
$data = input('post.'); |
||||
|
$data['addtime'] = time(); |
||||
|
$data['pid'] = input('pid'); |
||||
|
db('feast_element')->insert($data); |
||||
|
return ['code'=>1,'msg'=>'节日元素添加成功!','url'=>url('element',array('pid'=>input('pid')))]; |
||||
|
}else{ |
||||
|
$this->assign('title',lang('add').'节日元素'); |
||||
|
$this->assign('info','null'); |
||||
|
return $this->fetch('element_form'); |
||||
|
} |
||||
|
} |
||||
|
public function edit_element(){ |
||||
|
if(request()->isPost()) { |
||||
|
$data = input('post.'); |
||||
|
if(db('feast_element')->update($data)!==false){ |
||||
|
return ['code'=>1,'msg'=>'节日元素修改成功!','url'=>url('element',array('pid'=>input('pid')))]; |
||||
|
}else{ |
||||
|
return ['code'=>0,'msg'=>'节日元素修改失败!']; |
||||
|
} |
||||
|
}else{ |
||||
|
$id=input('id'); |
||||
|
$adInfo=db('feast_element')->where(array('id'=>$id))->find(); |
||||
|
$this->assign('info',json_encode($adInfo,true)); |
||||
|
$this->assign('title',lang('edit').'节日元素'); |
||||
|
return $this->fetch('element_form'); |
||||
|
} |
||||
|
} |
||||
|
//设置节日元素状态 |
||||
|
public function elementState(){ |
||||
|
$id=input('post.id'); |
||||
|
$open=input('post.open'); |
||||
|
if(db('feast_element')->where('id='.$id)->update(['open'=>$open])!==false){ |
||||
|
return ['status'=>1,'msg'=>'设置成功!']; |
||||
|
}else{ |
||||
|
return ['status'=>0,'msg'=>'设置失败!']; |
||||
|
} |
||||
|
} |
||||
|
public function elementOrder(){ |
||||
|
$data = input('post.'); |
||||
|
if(db('feast_element')->update($data)!==false){ |
||||
|
return $result = ['msg' => '操作成功!', 'code' =>1]; |
||||
|
}else{ |
||||
|
return $result = ['code'=>0,'msg'=>'操作失败!']; |
||||
|
} |
||||
|
} |
||||
|
public function delElement(){ |
||||
|
db('feast_element')->where(array('id'=>input('id')))->delete(); |
||||
|
return ['code'=>1,'msg'=>'删除成功!']; |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,248 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use think\Db; |
||||
|
use think\facade\Env; |
||||
|
use think\facade\Request; |
||||
|
use think\facade\Session; |
||||
|
class Index extends Common |
||||
|
{ |
||||
|
public function initialize(){ |
||||
|
parent::initialize(); |
||||
|
} |
||||
|
public function index(){ |
||||
|
//导航 |
||||
|
// 获取缓存数据 |
||||
|
$authRule = cache('authRule'); |
||||
|
if(!$authRule){ |
||||
|
$authRule = db('auth_rule')->where('menustatus=1')->order('sort')->select(); |
||||
|
cache('authRule', $authRule, 3600); |
||||
|
} |
||||
|
//声明数组 |
||||
|
$menus = array(); |
||||
|
foreach ($authRule as $key=>$val){ |
||||
|
$authRule[$key]['href'] = url($val['href']); |
||||
|
if($val['pid']==0){ |
||||
|
if(session('aid')!=1){ |
||||
|
if(in_array($val['id'],$this->adminRules)){ |
||||
|
$menus[] = $val; |
||||
|
} |
||||
|
}else{ |
||||
|
$menus[] = $val; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
foreach ($menus as $k=>$v){ |
||||
|
foreach ($authRule as $kk=>$vv){ |
||||
|
if($v['id']==$vv['pid']){ |
||||
|
if(session('aid')!=1) { |
||||
|
if (in_array($vv['id'], $this->adminRules)) { |
||||
|
$menus[$k]['children'][] = $vv; |
||||
|
} |
||||
|
}else{ |
||||
|
$menus[$k]['children'][] = $vv; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
// |
||||
|
$curname = Session::get('username'); |
||||
|
$curget = Db::table('admin')->where(['username'=>$curname])->field('custlimit')->find(); |
||||
|
$custlimit= $curget['custlimit']; |
||||
|
if(!$custlimit){ |
||||
|
$sysinfo = Db::table('system')->where(['id'=>1])->field('maxgetnum,custlimit')->find(); |
||||
|
$custlimit = $sysinfo['custlimit']; |
||||
|
} |
||||
|
$wherecust = []; |
||||
|
$wherecust['pr_user'] = $curname; |
||||
|
$wherecust['status'] = 1; |
||||
|
$wherecust['ispublic'] = 3; |
||||
|
$wherecust['issuccess'] = -1; |
||||
|
$num = Db::table('crm_leads')->where($wherecust)->count('id'); |
||||
|
|
||||
|
$this->assign('curgetnum',($custlimit - $num)); |
||||
|
$this->assign('menus',json_encode($menus,true)); |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function main(){ |
||||
|
|
||||
|
//0 线索,1客户,2公海 |
||||
|
$cluesCount = Db::table('crm_leads')->where(['status'=> 0])->count(); |
||||
|
$clientCount = Db::table('crm_leads')->where(['status'=> 1])->count(); |
||||
|
$liberumCount = Db::table('crm_leads')->where(['status'=> 2])->count(); |
||||
|
// 区别管理员和业务员 |
||||
|
|
||||
|
$this->assign('cluesCount', $cluesCount); |
||||
|
$this->assign('clientCount', $clientCount); |
||||
|
$this->assign('liberumCount', $liberumCount); |
||||
|
|
||||
|
|
||||
|
//获取本周线索 ->whereTime('at_time', 'week') |
||||
|
$cluesCount_week = Db::table('crm_leads')->where(['status'=> 0,'pr_user'=>Session::get('username')])->count(); |
||||
|
//获取本月转客户数据 ->whereTime('to_kh_time', 'month') |
||||
|
$clientCount_month = Db::table('crm_leads')->where(['status'=> 1,'issuccess'=> -1,'pr_user'=>Session::get('username')])->count(); |
||||
|
//获取今年公海数据 ->whereTime('to_gh_time', 'year') |
||||
|
$liberumCount_year = Db::table('crm_leads')->where(['status'=> 2])->count(); |
||||
|
//成交数 TODO |
||||
|
$clientCount_cj = Db::table('crm_leads')->where(['status'=> 1,'issuccess'=> 1,'pr_user'=>Session::get('username')])->count(); |
||||
|
$this->assign('clientCount_cj', $clientCount_cj); |
||||
|
|
||||
|
//月度排名(名)、月目标(元)、已成交(元)、完成率(%)、已成交(单)、提成点(%), |
||||
|
//管理员添加业绩设置权限。 |
||||
|
$userlist = Db::name('admin')->where('group_id','<>', 1)->field('admin_id,username,mubiao,ticheng')->select(); |
||||
|
|
||||
|
//所有业务员 |
||||
|
foreach ($userlist as $key => $value) { |
||||
|
$wheretoday = []; |
||||
|
$wheretoday['pr_user'] = $value['username']; |
||||
|
$wheretoday['status'] = '审核通过'; |
||||
|
$money_month = Db::name('crm_client_order') |
||||
|
->where($wheretoday) |
||||
|
->whereTime('create_time','month') |
||||
|
->sum('money'); |
||||
|
|
||||
|
$value['money_month'] = $money_month; |
||||
|
if ($value['mubiao']>0) { |
||||
|
$value['wanchenglv'] = round($money_month/$value['mubiao']*100,2); |
||||
|
}else{ |
||||
|
$value['wanchenglv']=0; |
||||
|
} |
||||
|
|
||||
|
$number_month = Db::table('crm_client_order')->where($wheretoday)->whereTime('create_time','month')->count('id'); |
||||
|
$value['number_month'] = $number_month; |
||||
|
$userlist[$key] = $value; |
||||
|
} |
||||
|
|
||||
|
// 数组排序 |
||||
|
array_multisort(array_column($userlist,'money_month'),SORT_DESC,$userlist); |
||||
|
|
||||
|
$this->assign('userlist', $userlist); |
||||
|
|
||||
|
//本人跟进动态 |
||||
|
//最近跟进动态 |
||||
|
$result = Db::table('crm_leads') |
||||
|
->alias('l') |
||||
|
->join('crm_comment c','c.leads_id = l.id') |
||||
|
->join('admin a','c.user_id = a.admin_id') |
||||
|
->field('l.id,a.username,a.avatar,l.kh_name,c.reply_msg,c.create_date') |
||||
|
->order('c.create_date desc') |
||||
|
->where(['l.pr_user'=> Session::get('username')]) |
||||
|
->limit(10)->select(); |
||||
|
$this->assign('result', $result); |
||||
|
|
||||
|
|
||||
|
$strTimeToString = "000111222334455556666667"; |
||||
|
$strWenhou = array('夜深了,','凌晨了,','早上好!','上午好!','中午好!','下午好!','晚上好!','夜深了,'); |
||||
|
//echo $strWenhou[(int)$strTimeToString[(int)date('G',time())]]; |
||||
|
$this->assign('wenhou', '尊敬的管理员'. $strWenhou[(int)$strTimeToString[(int)date('G',time())]]); |
||||
|
|
||||
|
|
||||
|
|
||||
|
$this->assign('cluesCount_week', $cluesCount_week); |
||||
|
$this->assign('clientCount_month', $clientCount_month); |
||||
|
$this->assign('liberumCount_year', $liberumCount_year); |
||||
|
// 获取待办事项 |
||||
|
//今日已跟进客户*个,未跟进*个,跟进率*% |
||||
|
//last_up_time |
||||
|
|
||||
|
$wheretoday = []; |
||||
|
$wheretoday['pr_user'] = Session::get('username'); |
||||
|
$wheretoday['status'] = 1; |
||||
|
$wheretoday['issuccess'] = -1; |
||||
|
$all_count = Db::table('crm_leads')->where($wheretoday)->count(); |
||||
|
$today_count = Db::table('crm_leads')->where($wheretoday)->whereTime('last_up_time','today')->count(); |
||||
|
if ($all_count > 0) { |
||||
|
$genjinlv = $today_count/$all_count*100; |
||||
|
}else{ |
||||
|
$genjinlv = 0; |
||||
|
} |
||||
|
|
||||
|
$this->assign('all_count', $all_count-$today_count); |
||||
|
$this->assign('today_count', $today_count); |
||||
|
$this->assign('genjinlv', round($genjinlv,2)); |
||||
|
|
||||
|
$version = Db::query('SELECT VERSION() AS ver'); |
||||
|
$config = [ |
||||
|
'url' => $_SERVER['HTTP_HOST'], |
||||
|
'document_root' => $_SERVER['DOCUMENT_ROOT'], |
||||
|
'server_os' => PHP_OS, |
||||
|
'server_port' => $_SERVER['SERVER_PORT'], |
||||
|
'server_ip' => $_SERVER['SERVER_ADDR'], |
||||
|
'server_soft' => $_SERVER['SERVER_SOFTWARE'], |
||||
|
'php_version' => PHP_VERSION, |
||||
|
'mysql_version' => $version[0]['ver'], |
||||
|
'max_upload_size' => ini_get('upload_max_filesize') |
||||
|
]; |
||||
|
$this->assign('config', $config); |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function navbar(){ |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function nav(){ |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function clear(){ |
||||
|
$R = Env::get('runtime_path'); |
||||
|
if ($this->_deleteDir($R)) { |
||||
|
$result['info'] = '清除缓存成功!'; |
||||
|
$result['status'] = 1; |
||||
|
} else { |
||||
|
$result['info'] = '清除缓存失败!'; |
||||
|
$result['status'] = 0; |
||||
|
} |
||||
|
$result['url'] = url('admin/index/index'); |
||||
|
return $result; |
||||
|
} |
||||
|
private function _deleteDir($R) |
||||
|
{ |
||||
|
$handle = opendir($R); |
||||
|
while (($item = readdir($handle)) !== false) { |
||||
|
if ($item != '.' and $item != '..') { |
||||
|
if (is_dir($R . '/' . $item)) { |
||||
|
$this->_deleteDir($R . '/' . $item); |
||||
|
} else { |
||||
|
if (!unlink($R . '/' . $item)) |
||||
|
die('error!'); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
closedir($handle); |
||||
|
return rmdir($R); |
||||
|
} |
||||
|
|
||||
|
//退出登陆 |
||||
|
public function logout(){ |
||||
|
session(null); |
||||
|
$this->redirect('login/index'); |
||||
|
} |
||||
|
|
||||
|
//修改密码 |
||||
|
public function editpwd(){ |
||||
|
if(request()->isPost()){ |
||||
|
//return $result = ['code'=>0,'msg'=>'当前为演示系统无法修改信息!']; |
||||
|
$data = input('post.'); |
||||
|
$pwd=input('post.pwd'); |
||||
|
$aid = Session::get('aid'); |
||||
|
$wherecust = []; |
||||
|
$wherecust['admin_id'] = $aid; |
||||
|
$wherecust['pwd'] = input('post.pwd','','md5'); |
||||
|
$res = Db::table('admin')->where($wherecust)->find(); |
||||
|
|
||||
|
if(!$res){ |
||||
|
return $result = ['code'=>0,'msg'=>'历史密码错误,请重新输入!']; |
||||
|
}else{ |
||||
|
if($data['pwd1'] == $data['pwd2']){ |
||||
|
$result = Db::table('admin')->where(['admin_id'=>$aid])->update(['pwd'=>md5($data['pwd2'])]); |
||||
|
return $result = ['code'=>1,'msg'=>'管理员密码修改成功!','url'=>url('index')]; |
||||
|
}else{ |
||||
|
return $result = ['code'=>0,'msg'=>'新密码2次输入不一致,请重新输入!']; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
}else{ |
||||
|
return view('add'); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,175 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use think\facade\Request; |
||||
|
use think\Db; |
||||
|
use think\facade\Session; |
||||
|
|
||||
|
class Liberum extends Common{ |
||||
|
|
||||
|
//公海列表 |
||||
|
public function index(){ |
||||
|
if(request()->isPost()){ |
||||
|
$key=input('post.key'); |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = db('crm_leads') |
||||
|
->where(['status'=>2,'issuccess'=>-1]) |
||||
|
->order('ut_time desc') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
|
||||
|
$ghTypeList = Db::table('crm_liberum_type')->select(); |
||||
|
|
||||
|
|
||||
|
|
||||
|
$this -> assign('ghTypeList',$ghTypeList); |
||||
|
|
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
//公海类型 |
||||
|
public function libTypeList(){ |
||||
|
if(request()->isPost()){ |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = db('crm_liberum_type') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch('liberum/lib_type_list'); |
||||
|
} |
||||
|
//添加公海类型 |
||||
|
public function libTypeAdd(){ |
||||
|
if(request()->isPost()){ |
||||
|
$data['type_name'] = Request::param('type_name'); |
||||
|
$data['add_time'] = time(); |
||||
|
$result = Db::table('crm_liberum_type')->insert($data); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'添加成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'添加失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
return $this->fetch('liberum/lib_type_add'); |
||||
|
} |
||||
|
//编辑公海类型 |
||||
|
public function libTypeEdit(){ |
||||
|
if (Request::isAjax()){ |
||||
|
$data = Request::param(); |
||||
|
$result = Db::table('crm_liberum_type')->where(['id'=>$data['id']])->update($data); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'编辑成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'编辑失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
$result = Db::table('crm_liberum_type') ->where(['id' => Request::param('id')])->find(); |
||||
|
$this -> assign('result',$result); |
||||
|
return $this -> fetch('liberum/lib_type_edit'); |
||||
|
} |
||||
|
//删除公海类型 |
||||
|
public function libTypeDel(){ |
||||
|
$id = Request::param('id'); |
||||
|
$result = Db::table('crm_liberum_type')->where('id',$id)->delete(); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'删除成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'删除失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
//公海搜索 |
||||
|
public function liberumSearch(){ |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$limit =input('limit')?input('limit'):config('pageSize'); |
||||
|
$keyword = Request::param('keyword'); |
||||
|
$list= model('liberum') -> getLiberumSearchList($page,$limit,$keyword); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
//写跟进 |
||||
|
public function libdialog(){ |
||||
|
$result = Db::table('crm_leads')->where(['id'=>Request::param('id')])->find(); |
||||
|
|
||||
|
$result['comment']= Db::table('crm_comment')->alias('com')->join('admin adm','com.user_id = adm.admin_id')->where(['leads_id'=>Request::param('id')])->field('com.*,adm.username,adm.avatar')->select(); |
||||
|
foreach ($result['comment'] as $k => $v){ |
||||
|
$result['comment'][$k]['reply'] = Db::table('crm_reply')->where(['comment_id'=>$v['id']])->select(); |
||||
|
} |
||||
|
|
||||
|
$this ->assign('result',$result); |
||||
|
return $this -> fetch('liberum/libdialog'); |
||||
|
} |
||||
|
//抢客户 |
||||
|
public function robClient(){ |
||||
|
$data['id'] = Request::param('id'); |
||||
|
//抢客户之前,先去判断是否可抢 |
||||
|
// 检测当前剩余抢的次数 |
||||
|
$curname = Session::get('username'); |
||||
|
$curget = Db::table('admin')->where(['username'=>$curname])->field('curgetnum')->find(); |
||||
|
$curgetnum = $curget['curgetnum']; |
||||
|
$sysinfo = Db::table('system')->where(['id'=>1])->field('maxgetnum,custlimit')->find(); |
||||
|
$maxgetnum = $sysinfo['maxgetnum']; |
||||
|
$custlimit = $sysinfo['custlimit']; |
||||
|
|
||||
|
if ($curgetnum>=$maxgetnum) { |
||||
|
$msg = ['code' => -200,'msg'=>'抱歉,您当月抢的次数已经达到上限'.$maxgetnum.'次!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
// 检测当前客户数最大数量 |
||||
|
$wherecust = []; |
||||
|
$wherecust['pr_user'] = $curname; |
||||
|
$wherecust['status'] = 1; |
||||
|
$wherecust['ispublic'] = 2; |
||||
|
$wherecust['issuccess'] = -1; |
||||
|
$maxcustnum = Db::table('crm_leads')->where($wherecust)->count('id'); |
||||
|
if($maxcustnum>=$custlimit){ |
||||
|
$msg = ['code' => -200,'msg'=>'抱歉,您抢得的客户数量已达上限'.$custlimit.'!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
|
||||
|
$gh_client = Db::table('crm_leads')->where(['id' => $data['id']])->where(['status'=> 2])->find(); |
||||
|
if ($gh_client){ |
||||
|
$data['to_kh_time'] = date("Y-m-d H:i:s",time()); |
||||
|
$data['ut_time'] = date("Y-m-d H:i:s",time()); |
||||
|
|
||||
|
$data['status'] = 1;//0-线索,1客户,2公海 |
||||
|
$data['pr_user_bef'] = $gh_client['pr_user']; |
||||
|
$data['pr_user'] = Session::get('username'); |
||||
|
// 状态变化 设置私人公共变化 |
||||
|
$data['ispublic'] = 2;//1 公共 2私人抢夺 3 私人添加 |
||||
|
|
||||
|
$result = Db::table('crm_leads')->where(['id'=>$data['id']])->update($data); |
||||
|
if ($result){ |
||||
|
// 抢的次数增加1 公海不增加次数 |
||||
|
// $curgetnum = $curgetnum + 1; |
||||
|
// $curgetnum = Db::table('admin')->where(['username'=>$curname])->update(['curgetnum'=>$curgetnum]); |
||||
|
|
||||
|
$msg = ['code' => 0,'msg'=>'抢客户成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'抢客户失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'抱歉,该客户已被抢走!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
||||
@ -0,0 +1,88 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
class Link extends Common |
||||
|
{ |
||||
|
public function index(){ |
||||
|
if(request()->isPost()) { |
||||
|
$val=input('post.val'); |
||||
|
$map = ''; |
||||
|
if (!empty($val)){ |
||||
|
$map['title|url'] = array('like',"%".$val."%"); |
||||
|
} |
||||
|
$link=db('link')->where($map)->order('sort')->select(); |
||||
|
foreach ($link as $k=>$v){ |
||||
|
$link[$k]['addtime'] = date('Y-m-d H:s',$v['addtime']); |
||||
|
} |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$link,'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
//修改友情链接状态 |
||||
|
public function linkState(){ |
||||
|
$id=input('post.id'); |
||||
|
$open=input('post.open'); |
||||
|
if(db('link')->where('id='.$id)->update(['open'=>$open])!==false){ |
||||
|
return ['status'=>1,'msg'=>'设置成功!']; |
||||
|
}else{ |
||||
|
return ['status'=>0,'msg'=>'设置失败!']; |
||||
|
} |
||||
|
} |
||||
|
public function listOrder(){ |
||||
|
$data = input('post.'); |
||||
|
if(db('link')->update($data)!==false){ |
||||
|
cache('linkList', NULL); |
||||
|
return $result = ['msg' => '操作成功!','url'=>url('index'), 'code' => 1]; |
||||
|
}else{ |
||||
|
return $result = ['code'=>0,'msg'=>'操作失败!']; |
||||
|
} |
||||
|
} |
||||
|
//添加 |
||||
|
public function add(){ |
||||
|
if(request()->isPost()){ |
||||
|
$data = input('post.'); |
||||
|
$data['addtime'] = time(); |
||||
|
db('link')->insert($data); |
||||
|
$result['code'] = 1; |
||||
|
$result['msg'] = '友情链接添加成功!'; |
||||
|
$result['url'] = url('index'); |
||||
|
cache('linkList', NULL); |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$this->assign('title',lang('add').lang('link')); |
||||
|
$this->assign('info','null'); |
||||
|
return $this->fetch('form'); |
||||
|
} |
||||
|
} |
||||
|
//修改友情链接 |
||||
|
public function edit(){ |
||||
|
if(request()->isPost()){ |
||||
|
$data = input('post.'); |
||||
|
db('link')->update($data); |
||||
|
$result['code'] = 1; |
||||
|
$result['msg'] = '友情链接修改成功!'; |
||||
|
$result['url'] = url('index'); |
||||
|
cache('linkList', NULL); |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$id=input('param.id'); |
||||
|
$info=db('link')->where(array('id'=>$id))->find(); |
||||
|
$this->assign('info',json_encode($info,true)); |
||||
|
$this->assign('title',lang('edit').lang('link')); |
||||
|
return $this->fetch('form'); |
||||
|
} |
||||
|
} |
||||
|
public function del(){ |
||||
|
db('link')->where(array('id'=>input('id')))->delete(); |
||||
|
cache('linkList', NULL); |
||||
|
return ['code'=>1,'msg'=>'删除成功!']; |
||||
|
} |
||||
|
public function delall(){ |
||||
|
$map[] =array('id','IN',input('param.ids/a')); |
||||
|
db('link')->where($map)->delete(); |
||||
|
$result['msg'] = '删除成功!'; |
||||
|
$result['code'] = 1; |
||||
|
$result['url'] = url('index'); |
||||
|
cache('linkList', NULL); |
||||
|
return $result; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,45 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use think\Controller; |
||||
|
use app\admin\model\Admin; |
||||
|
use think\captcha\Captcha; |
||||
|
class Login extends Controller |
||||
|
{ |
||||
|
private $cache_model,$system; |
||||
|
public function initialize(){ |
||||
|
if (session('aid')) { |
||||
|
$this->redirect('admin/index/index'); |
||||
|
} |
||||
|
$this->cache_model=array('Module','AuthRule','Category','Posid','Field','System'); |
||||
|
$this->system = cache('System'); |
||||
|
$this->assign('system',$this->system); |
||||
|
if(empty($this->system)){ |
||||
|
foreach($this->cache_model as $r){ |
||||
|
savecache($r); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
public function index(){ |
||||
|
if(request()->isPost()) { |
||||
|
$data = input('post.'); |
||||
|
$admin = new Admin(); |
||||
|
$return = $admin->login($data,$this->system['code']); |
||||
|
return ['code' => $return['code'], 'msg' => $return['msg']]; |
||||
|
}else{ |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
} |
||||
|
public function verify(){ |
||||
|
$config = [ |
||||
|
// 验证码字体大小 |
||||
|
'fontSize' => 25, |
||||
|
// 验证码位数 |
||||
|
'length' => 4, |
||||
|
// 关闭验证码杂点 |
||||
|
'useNoise' => false, |
||||
|
'bg' => [255,255,255], |
||||
|
]; |
||||
|
$captcha = new Captcha($config); |
||||
|
return $captcha->entry(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,36 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
class Message extends Common |
||||
|
{ |
||||
|
public function index(){ |
||||
|
if(request()->isPost()) { |
||||
|
$key=input('post.key'); |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = db('message') |
||||
|
->where('name|tel|content', 'like', "%" . $key . "%") |
||||
|
->order('addtime desc') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
foreach ($list['data'] as $k=>$v){ |
||||
|
$list['data'][$k]['addtime'] = date('Y-m-d H:s',$v['addtime']); |
||||
|
} |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
//删除留言 |
||||
|
public function del(){ |
||||
|
$map['message_id']=input('message_id'); |
||||
|
db('message')->where($map)->delete(); |
||||
|
return $result = ['code'=>1,'msg'=>'删除成功!']; |
||||
|
} |
||||
|
public function delall(){ |
||||
|
$map[] =array('message_id','IN',input('param.ids/a')); |
||||
|
db('message')->where($map)->delete(); |
||||
|
$result['msg'] = '删除成功!'; |
||||
|
$result['code'] = 1; |
||||
|
$result['url'] = url('index'); |
||||
|
return $result; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,559 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use think\Db; |
||||
|
use think\facade\Request; |
||||
|
class Module extends Common |
||||
|
{ |
||||
|
protected $dao; |
||||
|
function initialize() |
||||
|
{ |
||||
|
parent::initialize(); |
||||
|
$this->dao=db('module'); |
||||
|
$field_pattern = [ |
||||
|
['name'=>'defaul','title'=>'默认'], |
||||
|
['name'=>'email','title'=>'电子邮件'], |
||||
|
['name'=>'url','title'=>'网址'], |
||||
|
['name'=>'date','title'=>'日期'], |
||||
|
['name'=>'number','title'=>'有效的数值'], |
||||
|
['name'=>'digits','title'=>'数字'], |
||||
|
['name'=>'creditcard','title'=>'信用卡号码'], |
||||
|
['name'=>'equalTo','title'=>'再次输入相同的值'], |
||||
|
['name'=>'ip4','title'=>'IP'], |
||||
|
['name'=>'mobile','title'=>'手机号码'], |
||||
|
['name'=>'zipcode','title'=>'邮编'], |
||||
|
['name'=>'qq','title'=>'QQ'], |
||||
|
['name'=>'idcard','title'=>'身份证号'], |
||||
|
['name'=>'chinese','title'=>'中文字符'], |
||||
|
['name'=>'cn_username','title'=>'中文英文数字和下划线'], |
||||
|
['name'=>'tel','title'=>'电话号码'], |
||||
|
['name'=>'english','title'=>'英文'], |
||||
|
['name'=>'en_num','title'=>'英文数字和下划线'], |
||||
|
]; |
||||
|
$this->assign('pattern', json_encode($field_pattern,true)); |
||||
|
} |
||||
|
public function index(){ |
||||
|
if(Request::isAjax()) { |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$sort_by = input('sort_order') ? input('sort_by') : 'id'; |
||||
|
$sort_order = input('sort_order') ? input('sort_order') : 'asc'; |
||||
|
$list = db('module')->order($sort_by.' '.$sort_order) |
||||
|
->paginate($pageSize) |
||||
|
->toArray(); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
}else{ |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
} |
||||
|
public function edit(){ |
||||
|
if(request()->isPost()){ |
||||
|
$data = Request::except('name'); |
||||
|
if(db('module')->update($data)!==false){ |
||||
|
savecache('Module'); |
||||
|
return array('code'=>1,'url'=>url('index'),'msg'=>'修改成功!'); |
||||
|
}else{ |
||||
|
return array('code'=>0,'url'=>url('index'),'msg'=>'修改失败!'); |
||||
|
} |
||||
|
}else{ |
||||
|
$map['id'] = input('param.id'); |
||||
|
$info = db('module')->field('id,title,name,description,listfields')->where($map)->find(); |
||||
|
$this->assign('title',lang('edit').lang('module')); |
||||
|
$this->assign('info', json_encode($info,true)); |
||||
|
return $this->fetch('form'); |
||||
|
} |
||||
|
} |
||||
|
public function add(){ |
||||
|
if(request()->isPost()){ |
||||
|
//获取数据库所有表名 |
||||
|
$tables = Db::getConnection()->getTables(); |
||||
|
|
||||
|
//组装表名 |
||||
|
$prefix = config('database.prefix'); |
||||
|
$tablename = $prefix.input('post.name'); |
||||
|
//判断表名是否已经存在 |
||||
|
if(in_array($tablename,$tables)){ |
||||
|
$result['code'] = 0; |
||||
|
$result['info'] = '该表已经存在!'; |
||||
|
return $result; |
||||
|
} |
||||
|
$name = ucfirst(input('post.name')); |
||||
|
$data = Request::except('emptytable'); |
||||
|
$data['type'] = 1; |
||||
|
|
||||
|
$moduleid = db('module')->insertGetId($data); |
||||
|
if(empty($moduleid)){ |
||||
|
$result['code'] = 0; |
||||
|
$result['msg'] = '添加模型失败!'; |
||||
|
return $result; |
||||
|
} |
||||
|
$emptytable =input('post.emptytable'); |
||||
|
if($emptytable=='0'){ |
||||
|
Db::execute("CREATE TABLE `".$tablename."` ( |
||||
|
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', |
||||
|
`catid` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '分类ID', |
||||
|
`userid` int(8) unsigned NOT NULL DEFAULT '0' COMMENT '用户ID', |
||||
|
`username` varchar(40) NOT NULL DEFAULT '' COMMENT '用户名', |
||||
|
`title` varchar(120) NOT NULL DEFAULT '' COMMENT '标题', |
||||
|
`title_style` varchar(225) NOT NULL DEFAULT '' COMMENT '标题样式', |
||||
|
`thumb` varchar(225) NOT NULL DEFAULT '' COMMENT '缩略图', |
||||
|
`keywords` varchar(120) NOT NULL DEFAULT '' COMMENT '关键词', |
||||
|
`description` mediumtext NOT NULL COMMENT '描述', |
||||
|
`content` mediumtext NOT NULL COMMENT '内容', |
||||
|
`template` varchar(40) NOT NULL DEFAULT '' COMMENT '模板', |
||||
|
`posid` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '推荐位', |
||||
|
`status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '状态', |
||||
|
`recommend` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '允许评论', |
||||
|
`readgroup` varchar(100) NOT NULL DEFAULT '' COMMENT '访问权限', |
||||
|
`readpoint` smallint(5) NOT NULL DEFAULT '0' COMMENT '阅读权限', |
||||
|
`sort` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '排序', |
||||
|
`hits` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '点击', |
||||
|
`createtime` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间', |
||||
|
`updatetime` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间', |
||||
|
PRIMARY KEY (`id`), |
||||
|
KEY `status` (`id`,`status`,`sort`), |
||||
|
KEY `catid` (`id`,`catid`,`status`), |
||||
|
KEY `sort` (`id`,`catid`,`status`,`sort`) |
||||
|
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'catid', '栏目', '', '1', '1', '6', '', '必须选择一个栏目', '', 'catid', '','1','', '1', '1', '1')"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'title', '标题', '', '1', '1', '80', '', '标题必须为1-80个字符', '', 'title', 'array (\n \'thumb\' => \'1\',\n \'style\' => \'1\',\n \'size\' => \'55\',\n)','1','', '2', '1', '1')"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'keywords', '关键词', '', '0', '0', '80', '', '', '', 'text', 'array (\n \'size\' => \'55\',\n \'default\' => \'\',\n \'ispassword\' => \'0\',\n \'fieldtype\' => \'varchar\',\n)','1','', '3', '1', '1')"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'description', 'SEO简介', '', '0', '0', '0', '', '', '', 'textarea', 'array (\n \'fieldtype\' => \'mediumtext\',\n \'rows\' => \'4\',\n \'cols\' => \'55\',\n \'default\' => \'\',\n)','1','', '4', '1', '1')"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'content', '内容', '', '0', '0', '0', '', '', '', 'editor', 'array (\n \'toolbar\' => \'full\',\n \'default\' => \'\',\n \'height\' => \'\',\n \'showpage\' => \'1\',\n \'enablekeylink\' => \'0\',\n \'replacenum\' => \'\',\n \'enablesaveimage\' => \'0\',\n \'flashupload\' => \'1\',\n \'alowuploadexts\' => \'\',\n)','1','', '5', '1', '1')"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'createtime', '发布时间', '', '1', '0', '0', 'date', '', 'createtime', 'datetime', '','1','', '6', '1', '1')"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'status', '状态', '', '0', '0', '0', '', '', '', 'radio', 'array (\n \'options\' => \'发布|1\r\n定时发布|0\',\n \'fieldtype\' => \'tinyint\',\n \'numbertype\' => \'1\',\n \'labelwidth\' => \'75\',\n \'default\' => \'1\',\n)','1','','7', '1', '1')"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'recommend', '允许评论', '', '0', '0', '1', '', '', '', 'radio', 'array (\n \'options\' => \'允许评论|1\r\n不允许评论|0\',\n \'fieldtype\' => \'tinyint\',\n \'numbertype\' => \'1\',\n \'labelwidth\' => \'\',\n \'default\' => \'\',\n)','1','', '8', '0', '0')"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'readpoint', '阅读收费', '', '0', '0', '5', '', '', '', 'number', 'array (\n \'size\' => \'5\',\n \'numbertype\' => \'1\',\n \'decimaldigits\' => \'0\',\n \'default\' => \'0\',\n)','1','', '9', '0', '0')"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'hits', '点击次数', '', '0', '0', '8', '', '', '', 'number', 'array (\n \'size\' => \'10\',\n \'numbertype\' => \'1\',\n \'decimaldigits\' => \'0\',\n \'default\' => \'0\',\n)','1','', '10', '0', '0')"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'readgroup', '访问权限', '', '0', '0', '0', '', '', '', 'groupid', 'array (\n \'inputtype\' => \'checkbox\',\n \'fieldtype\' => \'tinyint\',\n \'labelwidth\' => \'85\',\n \'default\' => \'\',\n)','1','', '11', '0', '1')"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'posid', '推荐位', '', '0', '0', '0', '', '', '', 'posid', '','1','', '12', '1', '1')"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'template', '模板', '', '0', '0', '0', '', '', '', 'template', '','1','', '13', '1', '1')"); |
||||
|
|
||||
|
}else{ |
||||
|
Db::execute("CREATE TABLE `".$tablename."` ( |
||||
|
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', |
||||
|
`catid` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '分类ID', |
||||
|
`title` varchar(120) NOT NULL DEFAULT '' COMMENT '标题', |
||||
|
`title_style` varchar(225) NOT NULL DEFAULT '' COMMENT '标题样式', |
||||
|
`thumb` varchar(225) NOT NULL DEFAULT '' COMMENT '缩略图', |
||||
|
`hits` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '点击', |
||||
|
`status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '状态', |
||||
|
`userid` int(8) unsigned NOT NULL DEFAULT '0' COMMENT '用户ID', |
||||
|
`username` varchar(40) NOT NULL DEFAULT '' COMMENT '用户名', |
||||
|
`sort` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '排序', |
||||
|
`createtime` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间', |
||||
|
`updatetime` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间', |
||||
|
`lang` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '语言', |
||||
|
`template` varchar(40) NOT NULL DEFAULT '' COMMENT '模板', |
||||
|
PRIMARY KEY (`id`) |
||||
|
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'catid', '栏目', '', '1', '1', '6', '', '必须选择一个栏目', '', 'catid', '','1','', '1', '1', '1')"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ('".$moduleid."', 'title', '标题', '', '1', '1', '80', '', '标题必须为1-80个字符', '', 'title', 'array (\n \'thumb\' => \'1\',\n \'style\' => \'1\',\n \'size\' => \'55\',\n)','1','', '2', '1', '1')"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'hits', '点击次数', '', '0', '0', '8', '', '', '', 'number', 'array (\n \'size\' => \'10\',\n \'numbertype\' => \'1\',\n \'decimaldigits\' => \'0\',\n \'default\' => \'0\',\n)','1','', '8', '0', '0')"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'createtime', '发布时间', '', '1', '0', '0', 'date', '', 'createtime', 'datetime', '','1','', '97', '1', '1')"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'template', '模板', '', '0', '0', '0', '', '', '', 'template', '','1','', '99', '1', '1')"); |
||||
|
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'status', '状态', '', '0', '0', '0', '', '', '', 'radio', 'array (\n \'options\' => \'发布|1\r\n定时发布|0\',\n \'fieldtype\' => \'tinyint\',\n \'numbertype\' => \'1\',\n \'labelwidth\' => \'75\',\n \'default\' => \'1\',\n)','1','', '98', '1', '1')"); |
||||
|
} |
||||
|
if ($moduleid !==false) { |
||||
|
savecache('Module'); |
||||
|
$result['code'] = 1; |
||||
|
$result['msg'] = '添加模型成功!'; |
||||
|
$result['url'] = url('index'); |
||||
|
return $result; |
||||
|
} |
||||
|
}else{ |
||||
|
$this->assign('title',lang('add').lang('module')); |
||||
|
$this->assign('info','null'); |
||||
|
return $this->fetch('form'); |
||||
|
} |
||||
|
} |
||||
|
//模型状态 |
||||
|
public function moduleState(){ |
||||
|
$id=input('post.id'); |
||||
|
$status=input('post.status'); |
||||
|
if(db('module')->where('id='.$id)->update(['status'=>$status])!==false){ |
||||
|
return ['status'=>1,'msg'=>'设置成功!']; |
||||
|
}else{ |
||||
|
return ['status'=>0,'msg'=>'设置失败!']; |
||||
|
} |
||||
|
} |
||||
|
//删除模型 |
||||
|
function del() { |
||||
|
$id =input('param.id'); |
||||
|
$r = db('module')->find($id); |
||||
|
if(!empty($r)){ |
||||
|
$tablename = config('database.prefix').$r['name']; |
||||
|
|
||||
|
$m = db('module')->delete($id); |
||||
|
if($m){ |
||||
|
Db::execute("DROP TABLE IF EXISTS `".$tablename."`"); |
||||
|
db('Field')->where(array('moduleid'=>$id))->delete(); |
||||
|
} |
||||
|
} |
||||
|
savecache('Module'); |
||||
|
return ['code'=>1,'msg'=>'删除成功!']; |
||||
|
} |
||||
|
|
||||
|
/****************************模型字段******************************/ |
||||
|
public function field(){ |
||||
|
if(request()->isPost()){ |
||||
|
$nodostatus = array('catid','title','status','createtime'); |
||||
|
$sysfield = array('catid','userid','username','title','thumb','keywords','description','posid','status','createtime','url','template'); |
||||
|
|
||||
|
$list = db('field')->where("moduleid=".input('param.id'))->order('sort asc,id asc')->select(); |
||||
|
foreach ($list as $k=>$v){ |
||||
|
if($v['status']==1){ |
||||
|
if(in_array($v['field'],$nodostatus)){ |
||||
|
$list[$k]['disable']=2; |
||||
|
}else{ |
||||
|
$list[$k]['disable']=0; |
||||
|
} |
||||
|
}else{ |
||||
|
$list[$k]['disable']=1; |
||||
|
} |
||||
|
|
||||
|
if(in_array($v['field'],$sysfield)){ |
||||
|
$list[$k]['delStatus']=1; |
||||
|
}else{ |
||||
|
$list[$k]['delStatus']=0; |
||||
|
} |
||||
|
} |
||||
|
$this->assign('list', $list); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list,'rel'=>1]; |
||||
|
}else{ |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
} |
||||
|
//修改状态 |
||||
|
public function fieldStatus(){ |
||||
|
$map['id']=input('post.id'); |
||||
|
//判断当前状态情况 |
||||
|
$field = db('field'); |
||||
|
$status=$field->where($map)->value('status'); |
||||
|
if($status==1){ |
||||
|
$data['status'] = 0; |
||||
|
}else{ |
||||
|
$data['status'] = 1; |
||||
|
} |
||||
|
$field->where($map)->setField($data); |
||||
|
return $data; |
||||
|
} |
||||
|
//添加字段 |
||||
|
public function fieldAdd(){ |
||||
|
if(Request::isAjax()){ |
||||
|
if(input('isajax')) { |
||||
|
$this->assign(input('get.')); |
||||
|
$this->assign(input('post.')); |
||||
|
$name = db('module')->where(array('id' => input('moduleid')))->value('name'); |
||||
|
if (input('name')) { |
||||
|
$files = Db::getTableFields(config('database.prefix') . $name); |
||||
|
if(isset($files['type'][input('name')])){ |
||||
|
$fieldtype = $files['type'][input('name')]; |
||||
|
}else{ |
||||
|
$fieldtype = ''; |
||||
|
} |
||||
|
$this->assign('fieldtype', $fieldtype); |
||||
|
return view('fieldType'); |
||||
|
} else { |
||||
|
return view('fieldAddType'); |
||||
|
} |
||||
|
}else{ |
||||
|
$data = input('post.'); |
||||
|
$fieldName=$data['field']; |
||||
|
$prefix=config('database.prefix'); |
||||
|
$name = db('module')->where(array('id'=>$data['moduleid']))->value('name'); |
||||
|
$tablename=$prefix.$name; |
||||
|
$Fields=Db::getTableFields($tablename); |
||||
|
if(in_array($fieldName,$Fields)){ |
||||
|
$result['msg'] = '字段名已经存在!'; |
||||
|
$result['code'] = 0; |
||||
|
return $result; |
||||
|
} |
||||
|
$addfieldsql =$this->get_tablesql($data,'add'); |
||||
|
if(isset($data['setup'])) { |
||||
|
$data['setup'] = array2string($data['setup']); |
||||
|
} |
||||
|
$data['status'] =1; |
||||
|
if($data['pattern']=='?'){ |
||||
|
$data['pattern'] = 'defaul'; |
||||
|
}else{ |
||||
|
$pattern= explode(':',$data['pattern']); |
||||
|
$data['pattern'] = $pattern[1]; |
||||
|
} |
||||
|
if(empty($data['class'])){ |
||||
|
$data['class'] = $data['field']; |
||||
|
} |
||||
|
$model = db('field'); |
||||
|
if ($model->insert($data) !==false) { |
||||
|
savecache('Field',$data['moduleid']); |
||||
|
if(is_array($addfieldsql)){ |
||||
|
foreach($addfieldsql as $sql){ |
||||
|
$model->execute($sql); |
||||
|
} |
||||
|
}else{ |
||||
|
$model->execute($addfieldsql); |
||||
|
} |
||||
|
$result['msg'] = '添加成功!'; |
||||
|
$result['code'] = 1; |
||||
|
$result['url'] = url('field',array('id'=>input('post.moduleid'))); |
||||
|
return $result; |
||||
|
} else { |
||||
|
$result['msg'] = '添加失败!'; |
||||
|
$result['code'] = 0; |
||||
|
return $result; |
||||
|
} |
||||
|
} |
||||
|
}else{ |
||||
|
$moduleid =input('moduleid'); |
||||
|
$this->assign('moduleid',$moduleid); |
||||
|
$this->assign('title',lang('add').lang('field')); |
||||
|
$this->assign('info','null'); |
||||
|
return $this->fetch('fieldForm'); |
||||
|
} |
||||
|
} |
||||
|
//编辑字段 |
||||
|
public function fieldEdit(){ |
||||
|
if(Request::isAjax()){ |
||||
|
$data = Request::except('oldfield'); |
||||
|
$oldfield = input('oldfield'); |
||||
|
$fieldName=$data['field']; |
||||
|
$name = db('module')->where(array('id'=>$data['moduleid']))->value('name'); |
||||
|
$prefix=config('database.prefix'); |
||||
|
if($this->_iset_field($prefix.$name,$fieldName) && $oldfield!=$fieldName){ |
||||
|
$result['msg'] = '字段名重复!'; |
||||
|
$result['code'] = 0; |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
$editfieldsql =$this->get_tablesql(input('post.'),'edit'); |
||||
|
if($data['setup']){ |
||||
|
$data['setup']=array2string($data['setup']); |
||||
|
} |
||||
|
if(!empty($data['unpostgroup'])){ |
||||
|
$data['setup'] = implode(',',$data['unpostgroup']); |
||||
|
} |
||||
|
if($data['pattern']=='?'){ |
||||
|
$data['pattern'] = 'defaul'; |
||||
|
}else{ |
||||
|
$pattern= explode(':',$data['pattern']); |
||||
|
$data['pattern'] = $pattern[1]; |
||||
|
} |
||||
|
if(empty($data['class'])){ |
||||
|
$data['class'] = $data['field']; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
$model = db('field'); |
||||
|
if (false !== $model->update($data)) { |
||||
|
savecache('Field',$data['moduleid']); |
||||
|
if(is_array($editfieldsql)){ |
||||
|
foreach($editfieldsql as $sql){ |
||||
|
$model->execute($sql); |
||||
|
} |
||||
|
}else{ |
||||
|
$editfieldsql; |
||||
|
$model->execute($editfieldsql); |
||||
|
} |
||||
|
$result['msg'] = '修改成功!'; |
||||
|
$result['code'] = 1; |
||||
|
$result['url'] = url('field',array('id'=>input('post.moduleid'))); |
||||
|
return $result; |
||||
|
} else { |
||||
|
$result['msg'] = '修改失败!'; |
||||
|
$result['code'] = 0; |
||||
|
return $result; |
||||
|
} |
||||
|
}else{ |
||||
|
$model = db('field'); |
||||
|
$id = input('param.id'); |
||||
|
if(empty($id)){ |
||||
|
$result['msg'] = '缺少必要的参数!'; |
||||
|
$result['code'] = 0; |
||||
|
return $result; |
||||
|
} |
||||
|
$fieldInfo = $model->where(array('id'=>$id))->find(); |
||||
|
if($fieldInfo['setup']) $fieldInfo['setup']=string2array($fieldInfo['setup']); |
||||
|
$this->assign('info',json_encode($fieldInfo,true)); |
||||
|
$this->assign('title',lang('edit').lang('field')); |
||||
|
$this->assign('moduleid', input('param.moduleid')); |
||||
|
return $this->fetch('fieldForm'); |
||||
|
} |
||||
|
} |
||||
|
//字段排序 |
||||
|
public function listOrder(){ |
||||
|
$model =db('field'); |
||||
|
$data = input('post.'); |
||||
|
if($model->update($data)!==false){ |
||||
|
return $result = ['msg' => '操作成功!','url'=>url('field',array('id'=>input('post.moduleid'))), 'code' => 1]; |
||||
|
}else{ |
||||
|
return $result = ['code'=>0,'msg'=>'操作失败!']; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function fieldDel() { |
||||
|
$id=input('id'); |
||||
|
$r = db('field')->find($id); |
||||
|
db('field')->delete($id); |
||||
|
|
||||
|
$moduleid = $r['moduleid']; |
||||
|
|
||||
|
$field = $r['field']; |
||||
|
|
||||
|
$prefix=config('database.prefix'); |
||||
|
$name = db('module')->where(array('id'=>$moduleid))->value('name'); |
||||
|
$tablename=$prefix.$name; |
||||
|
|
||||
|
db('field')->execute("ALTER TABLE `$tablename` DROP `$field`"); |
||||
|
|
||||
|
return ['code'=>1,'msg'=>'删除成功!']; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
public function get_tablesql($info,$do){ |
||||
|
$comment = $info['name']; |
||||
|
$fieldtype = $info['type']; |
||||
|
if(isset($info['setup']['fieldtype'])){ |
||||
|
$fieldtype=$info['setup']['fieldtype']; |
||||
|
} |
||||
|
$moduleid = $info['moduleid']; |
||||
|
$default = ''; |
||||
|
if(isset($info['setup']['default'])){ |
||||
|
$default=$info['setup']['default']; |
||||
|
} |
||||
|
$field = $info['field']; |
||||
|
$prefix = config('database.prefix'); |
||||
|
$name = db('module')->where(array('id'=>$moduleid))->value('name'); |
||||
|
$tablename=$prefix.$name; |
||||
|
$maxlength = intval($info['maxlength']); |
||||
|
$minlength = intval($info['minlength']); |
||||
|
$numbertype = ''; |
||||
|
if(isset($info['setup']['numbertype'])){ |
||||
|
$numbertype=$info['setup']['numbertype']; |
||||
|
} |
||||
|
|
||||
|
$isnull = $info['required']==0?'NULL':"NOT NULL"; |
||||
|
if($do=='add'){ |
||||
|
$do = ' ADD '; |
||||
|
}else{ |
||||
|
$oldfield = $info['oldfield']; |
||||
|
$do = " CHANGE `".$oldfield."` "; |
||||
|
} |
||||
|
switch($fieldtype) { |
||||
|
case 'varchar': |
||||
|
if(!$maxlength){$maxlength = 255;} |
||||
|
$maxlength = min($maxlength, 255); |
||||
|
$sql = "ALTER TABLE `$tablename` $do `$field` VARCHAR( $maxlength ) $isnull DEFAULT '$default' COMMENT '$comment'"; |
||||
|
break; |
||||
|
case 'title': |
||||
|
$thumb = $info['setup']['thumb']; |
||||
|
$style = $info['setup']['style']; |
||||
|
if(!$maxlength){$maxlength = 255;} |
||||
|
$maxlength = min($maxlength, 255); |
||||
|
$sql[] = "ALTER TABLE `$tablename` $do `$field` VARCHAR( $maxlength ) $isnull DEFAULT '$default' COMMENT '$comment'"; |
||||
|
|
||||
|
|
||||
|
if(!$this->_iset_field($tablename,'thumb')){ |
||||
|
if($thumb==1) { |
||||
|
$sql[] = "ALTER TABLE `$tablename` ADD `thumb` VARCHAR( 100 ) $isnull DEFAULT '' COMMENT '缩略图'"; |
||||
|
} |
||||
|
}else{ |
||||
|
if($thumb==0) { |
||||
|
$sql[] = "ALTER TABLE `$tablename` drop column `thumb`"; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if(!$this->_iset_field($tablename,'title_style')){ |
||||
|
if($style==1) { |
||||
|
$sql[] = "ALTER TABLE `$tablename` ADD `title_style` VARCHAR( 100 )$isnull DEFAULT '' COMMENT '标题样式'"; |
||||
|
} |
||||
|
}else{ |
||||
|
if($style==0) { |
||||
|
$sql[] = "ALTER TABLE `$tablename` drop column `title_style`"; |
||||
|
} |
||||
|
} |
||||
|
break; |
||||
|
case 'catid': |
||||
|
$sql = "ALTER TABLE `$tablename` $do `$field` SMALLINT(5) UNSIGNED $isnull DEFAULT '0' COMMENT '$comment'"; |
||||
|
break; |
||||
|
|
||||
|
case 'number': |
||||
|
$decimaldigits = $info['setup']['decimaldigits']; |
||||
|
$default = $decimaldigits == 0 ? intval($default) : floatval($default); |
||||
|
$sql = "ALTER TABLE `$tablename` $do `$field` ".($decimaldigits == 0 ? 'INT' : 'decimal( 10,'.$decimaldigits.' )')." ".($numbertype ==1 ? 'UNSIGNED' : '')." $isnull DEFAULT '$default' COMMENT '$comment'"; |
||||
|
break; |
||||
|
|
||||
|
case 'tinyint': |
||||
|
if(!$maxlength) $maxlength = 3; |
||||
|
$maxlength = min($maxlength,3); |
||||
|
$default = intval($default); |
||||
|
$sql = "ALTER TABLE `$tablename` $do `$field` TINYINT( $maxlength ) ".($numbertype ==1 ? 'UNSIGNED' : '')." $isnull DEFAULT '$default' COMMENT '$comment'"; |
||||
|
break; |
||||
|
|
||||
|
|
||||
|
case 'smallint': |
||||
|
$default = intval($default); |
||||
|
$sql = "ALTER TABLE `$tablename` $do `$field` SMALLINT ".($numbertype ==1 ? 'UNSIGNED' : '')." $isnull DEFAULT '$default' COMMENT '$comment'"; |
||||
|
break; |
||||
|
|
||||
|
case 'int': |
||||
|
$default = intval($default); |
||||
|
$sql = "ALTER TABLE `$tablename` $do `$field` INT ".($numbertype ==1 ? 'UNSIGNED' : '')." $isnull DEFAULT '$default' COMMENT '$comment'"; |
||||
|
break; |
||||
|
|
||||
|
case 'mediumint': |
||||
|
$default = intval($default); |
||||
|
$sql = "ALTER TABLE `$tablename` $do `$field` INT ".($numbertype ==1 ? 'UNSIGNED' : '')." $isnull DEFAULT '$default' COMMENT '$comment'"; |
||||
|
break; |
||||
|
|
||||
|
case 'mediumtext': |
||||
|
$sql = "ALTER TABLE `$tablename` $do `$field` MEDIUMTEXT $isnull COMMENT '$comment'"; |
||||
|
break; |
||||
|
|
||||
|
case 'text': |
||||
|
$sql = "ALTER TABLE `$tablename` $do `$field` TEXT $isnull COMMENT '$comment'"; |
||||
|
break; |
||||
|
|
||||
|
case 'posid': |
||||
|
$sql = "ALTER TABLE `$tablename` $do `$field` TINYINT(2) UNSIGNED $isnull DEFAULT '0' COMMENT '$comment'"; |
||||
|
break; |
||||
|
|
||||
|
//case 'typeid': |
||||
|
//$sql = "ALTER TABLE `$tablename` $do `$field` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0'"; |
||||
|
//break; |
||||
|
|
||||
|
case 'datetime': |
||||
|
$sql = "ALTER TABLE `$tablename` $do `$field` INT(11) UNSIGNED $isnull DEFAULT '0' COMMENT '$comment'"; |
||||
|
break; |
||||
|
|
||||
|
case 'editor': |
||||
|
$sql = "ALTER TABLE `$tablename` $do `$field` TEXT $isnull COMMENT '$comment'"; |
||||
|
break; |
||||
|
|
||||
|
case 'image': |
||||
|
$sql = "ALTER TABLE `$tablename` $do `$field` VARCHAR( 80 ) $isnull DEFAULT '' COMMENT '$comment'"; |
||||
|
break; |
||||
|
|
||||
|
case 'images': |
||||
|
$sql = "ALTER TABLE `$tablename` $do `$field` MEDIUMTEXT $isnull COMMENT '$comment'"; |
||||
|
break; |
||||
|
|
||||
|
case 'file': |
||||
|
$sql = "ALTER TABLE `$tablename` $do `$field` VARCHAR( 80 ) $isnull DEFAULT '' COMMENT '$comment'"; |
||||
|
break; |
||||
|
|
||||
|
case 'files': |
||||
|
$sql = "ALTER TABLE `$tablename` $do `$field` MEDIUMTEXT $isnull COMMENT '$comment'"; |
||||
|
break; |
||||
|
case 'template': |
||||
|
$sql = "ALTER TABLE `$tablename` $do `$field` VARCHAR( 80 ) $isnull DEFAULT '' COMMENT '$comment'"; |
||||
|
break; |
||||
|
case 'linkage': |
||||
|
$sql = "ALTER TABLE `$tablename` $do `$field` VARCHAR( 80 ) $isnull DEFAULT '' COMMENT '$comment'"; |
||||
|
break; |
||||
|
} |
||||
|
return $sql; |
||||
|
} |
||||
|
protected function _iset_field($table,$field){ |
||||
|
$fields = Db::getTableFields($table); |
||||
|
return array_search($field,$fields); |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,267 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
|
||||
|
use think\Db; |
||||
|
use think\facade\Request; |
||||
|
use think\facade\Session; |
||||
|
use think\facade\Env; |
||||
|
class Order extends Common{ |
||||
|
//客户列表 |
||||
|
public function index(){ |
||||
|
if(request()->isPost()){ |
||||
|
$key=input('post.key'); |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = db('crm_client_order') |
||||
|
->order('create_time desc') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
|
||||
|
//查询所有管理员(去除admin) |
||||
|
$adminResult = Db::name('admin')->where('group_id','<>', 1)->field('admin_id,username')->select(); |
||||
|
$this -> assign('adminResult',$adminResult); |
||||
|
|
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
|
||||
|
//(我的客户)列表 |
||||
|
public function personindex(){ |
||||
|
|
||||
|
if(request()->isPost()){ |
||||
|
$key=input('post.key'); |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = db('crm_client_order') |
||||
|
->where(['pr_user'=> Session::get('username')]) |
||||
|
->order('create_time desc') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
//新建客户 |
||||
|
public function add(){ |
||||
|
if(request()->isPost()){ |
||||
|
$data['cphone'] = Request::param('cphone'); |
||||
|
$data['cname'] = Request::param('cname'); |
||||
|
|
||||
|
if(Request::param('pr_user')){ |
||||
|
$data['pr_user'] = Request::param('pr_user'); |
||||
|
}else{ |
||||
|
$data['pr_user'] = Session::get('username'); |
||||
|
} |
||||
|
$data['money'] = Request::param('money'); |
||||
|
$data['ticheng'] = Request::param('ticheng'); |
||||
|
$data['remark'] = Request::param('remark'); |
||||
|
$data['create_time'] = date("Y-m-d H:i:s",time()); |
||||
|
$data['status'] = '待审核'; |
||||
|
|
||||
|
// $userExist = db('crm_leads')->where('phone', $data['phone'])->find(); |
||||
|
// if ($userExist){ |
||||
|
// $msg = ['code' => -200,'msg'=>'抱歉,重复号码不可添加!','data'=>[]]; |
||||
|
// return json($msg); |
||||
|
// } |
||||
|
|
||||
|
$result = Db::table('crm_client_order')->insert($data); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'添加成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'添加失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$userlist = Db::name('admin')->where('group_id','<>', 1)->field('admin_id,username')->select(); |
||||
|
$this -> assign('userlist',$userlist); |
||||
|
// $userlist = Db::name('admin')->select(); |
||||
|
// var_dump($userlist); |
||||
|
$this->assign('username',Session::get('username')); |
||||
|
|
||||
|
return $this->fetch('order/add'); |
||||
|
} |
||||
|
public function changeyewu(){ |
||||
|
$data = Request::param(); |
||||
|
$custphone = $data['cphone']; |
||||
|
$where=[]; |
||||
|
$where['phone'] = $custphone; |
||||
|
$custinfo = Db::name('crm_leads')->where($where)->find(); |
||||
|
if ($custinfo) { |
||||
|
if ($custinfo['issuccess'] == 1) { |
||||
|
$res['code'] = 0; |
||||
|
$res['msg'] = "该客户已经成交了,请检查客户手机信息"; |
||||
|
}else{ |
||||
|
$res['code'] = 1; |
||||
|
$res['custname'] = $custinfo['kh_name']; |
||||
|
$res['kh_username'] = $custinfo['kh_username']; |
||||
|
$res['pr_user'] = $custinfo['pr_user']; |
||||
|
$res['msg'] = "客户名称:".$custinfo['kh_name'].",所属业务员:".$custinfo['pr_user']; |
||||
|
} |
||||
|
}else{ |
||||
|
$res['code'] = 0; |
||||
|
$res['msg'] = "该客户信息没用找到"; |
||||
|
} |
||||
|
|
||||
|
$this->success($res); |
||||
|
} |
||||
|
//编辑客户 |
||||
|
public function edit(){ |
||||
|
if (Request::isAjax()){ |
||||
|
$data = Request::param(); |
||||
|
$data['ut_time'] = date("Y-m-d H:i:s",time()); |
||||
|
|
||||
|
$result = Db::table('crm_client_order')->where(['id'=>$data['id']])->update($data); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'编辑成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'编辑失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
$result = Db::table('crm_client_order') ->where(['id' => Request::param('id')])->find(); |
||||
|
|
||||
|
$this -> assign('result',$result); |
||||
|
|
||||
|
$userlist = Db::name('admin')->where('group_id','<>', 1)->field('admin_id,username')->select(); |
||||
|
$this -> assign('userlist',$userlist); |
||||
|
|
||||
|
return $this -> fetch('order/edit'); |
||||
|
} |
||||
|
//删除客户 |
||||
|
public function del(){ |
||||
|
$id = Request::param('id'); |
||||
|
// 对应的客户修改状态 |
||||
|
$orderinfo = Db::table('crm_client_order')->where('id',$id)->find(); |
||||
|
$custphone = $orderinfo['cphone']; |
||||
|
$updatearr = []; |
||||
|
$updatearr['issuccess'] = -1; |
||||
|
Db::table('crm_leads')->where('phone',$custphone)->update($updatearr); |
||||
|
$result = Db::table('crm_client_order')->where('id',$id)->delete(); |
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'删除成功!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'删除失败!','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
public function shenhe(){ |
||||
|
$id = Request::param('id'); |
||||
|
|
||||
|
$orderinfo = Db::table('crm_client_order')->where('id',$id)->find(); |
||||
|
$custphone = $orderinfo['cphone']; |
||||
|
$custinfo = Db::table('crm_leads')->where('phone',$custphone)->find(); |
||||
|
if ($custinfo['issuccess'] == 1) { |
||||
|
$msg = ['code' => -200,'msg'=>'该客户已成交,业绩请勿重复添加','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
$updatearr = []; |
||||
|
$updatearr['issuccess'] = 1; |
||||
|
Db::table('crm_leads')->where('id',$custinfo['id'])->update($updatearr); |
||||
|
$result = Db::table('crm_client_order')->where('id',$id)->update(['status'=>'审核通过']); |
||||
|
|
||||
|
if ($result){ |
||||
|
$msg = ['code' => 0,'msg'=>'审核成功','data'=>[]]; |
||||
|
return json($msg); |
||||
|
}else{ |
||||
|
$msg = ['code' => -200,'msg'=>'审核已成功','data'=>[]]; |
||||
|
return json($msg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//客户搜索 |
||||
|
public function clientSearch(){ |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$limit =input('limit')?input('limit'):config('pageSize'); |
||||
|
$keyword = Request::param('keyword'); |
||||
|
|
||||
|
$mapAtTime = []; //添加时间 |
||||
|
$mapKhName = [];//客户名称 |
||||
|
$mapXsSource = [];//线索/客户来源 |
||||
|
$mapPrUser = [];//业务员/负责人 |
||||
|
if ($keyword['create_time']!= ''){ |
||||
|
$at = $keyword['create_time'];//日期 |
||||
|
$end_at =date('Y-m-d',strtotime("$at+1day")); |
||||
|
$mapAtTime = [['create_time','between time',[strtotime($at),strtotime($end_at)]]]; |
||||
|
} |
||||
|
if ($keyword['cname'] != ''){ |
||||
|
$mapKhName = [['cname','like','%'.$keyword['cname'].'%']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['status']!= ''){ |
||||
|
|
||||
|
$mapXsSource = ['status' => $keyword['status']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['pr_user'] != ''){ |
||||
|
$mapPrUser = [['pr_user','like','%'.$keyword['pr_user'].'%']]; |
||||
|
} |
||||
|
$list = Db::table('crm_client_order') |
||||
|
->where($mapKhName) |
||||
|
->where($mapXsSource) |
||||
|
->where($mapPrUser) |
||||
|
->where($mapAtTime) |
||||
|
->whereTime('create_time',$keyword['timebucket'] ? $keyword['timebucket'] : null) |
||||
|
->order('create_time desc') |
||||
|
->paginate(array('list_rows'=>$limit,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
//var_dump($list); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
|
||||
|
} |
||||
|
//(我的客户)搜索 |
||||
|
public function personClientSearch(){ |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$limit =input('limit')?input('limit'):config('pageSize'); |
||||
|
$keyword = Request::param('keyword'); |
||||
|
|
||||
|
$mapAtTime = []; //添加时间 |
||||
|
$mapKhName = [];//客户名称 |
||||
|
$mapXsSource = [];//线索/客户来源 |
||||
|
$mapPrUser = [];//业务员/负责人 |
||||
|
if ($keyword['create_time']!= ''){ |
||||
|
$at = $keyword['create_time'];//日期 |
||||
|
$end_at =date('Y-m-d',strtotime("$at+1day")); |
||||
|
$mapAtTime = [['create_time','between time',[strtotime($at),strtotime($end_at)]]]; |
||||
|
} |
||||
|
if ($keyword['cname'] != ''){ |
||||
|
$mapKhName = [['cname','like','%'.$keyword['cname'].'%']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['status']!= ''){ |
||||
|
|
||||
|
$mapXsSource = ['status' => $keyword['status']]; |
||||
|
} |
||||
|
|
||||
|
// if ($keyword['uname'] != ''){ |
||||
|
// $mapPrUser = [['uname','like','%'.$keyword['uname'].'%']]; |
||||
|
// } |
||||
|
$mapPrUser['pr_user'] = Session::get('username'); |
||||
|
$list = Db::table('crm_client_order') |
||||
|
->where($mapKhName) |
||||
|
->where($mapXsSource) |
||||
|
->where($mapPrUser) |
||||
|
->where($mapAtTime) |
||||
|
->whereTime('create_time',$keyword['timebucket'] ? $keyword['timebucket'] : null) |
||||
|
->order('create_time desc') |
||||
|
->paginate(array('list_rows'=>$limit,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
//var_dump($list); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
||||
@ -0,0 +1,170 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use think\facade\Request; |
||||
|
use think\facade\Env; |
||||
|
class Plugin extends Common{ |
||||
|
public function initialize(){ |
||||
|
parent::initialize(); |
||||
|
// 更新插件 |
||||
|
$this->insertPlugin($this->scanPlugin()); |
||||
|
} |
||||
|
public function index(){ |
||||
|
if(Request::isAjax()) { |
||||
|
$list = db('plugin')->select(); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list,'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function set(){ |
||||
|
$condition['type'] = input('param.type'); |
||||
|
$condition['code'] = input('param.code'); |
||||
|
$model = db('plugin'); |
||||
|
$info = $model->where($condition)->find(); |
||||
|
if(!$info){ |
||||
|
exit($this->error("不存在该插件")); |
||||
|
} |
||||
|
$this->assign('title','配置登录插件'); |
||||
|
$info['config'] = unserialize($info['config']); |
||||
|
$this->assign('info',$info); |
||||
|
$this->assign('config_value',unserialize($info['config_value'])); |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function update(){ |
||||
|
$condition['type'] = input('post.type'); |
||||
|
$condition['code'] = input('post.code'); |
||||
|
$model = db('plugin'); |
||||
|
$config = input('post.config/a'); |
||||
|
//空格过滤 |
||||
|
$config = trim_array_element($config); |
||||
|
if($config){ |
||||
|
$config = serialize($config); |
||||
|
} |
||||
|
|
||||
|
$row = $model->where($condition)->update(array('config_value'=>$config)); |
||||
|
if($row!==false){ |
||||
|
$result['code'] = 1; |
||||
|
$result['msg'] = '修改成功!'; |
||||
|
}else{ |
||||
|
$result['code'] = 0; |
||||
|
$result['msg'] = '修改失败!'; |
||||
|
} |
||||
|
return $result; |
||||
|
|
||||
|
} |
||||
|
/** |
||||
|
* 插件安装卸载 |
||||
|
*/ |
||||
|
public function install(){ |
||||
|
$condition['type'] = input('post.type'); |
||||
|
$condition['code'] = input('post.code'); |
||||
|
$update['status'] = input('post.install'); |
||||
|
$model = db('plugin'); |
||||
|
//卸载插件时 删除配置信息 |
||||
|
if($update['status']==0){ |
||||
|
$row = db('plugin')->where($condition)->delete(); |
||||
|
}else{ |
||||
|
$row = $model->where($condition)->update($update); |
||||
|
} |
||||
|
if($row){ |
||||
|
$info['code'] = 1; |
||||
|
$info['url'] = url($condition['type']); |
||||
|
$info['msg'] = $update['status'] ? '安装成功!' : '卸载成功!'; |
||||
|
}else{ |
||||
|
$info['code'] = 0; |
||||
|
$info['msg'] = $update['status'] ? '安装失败' : '卸载失败'; |
||||
|
} |
||||
|
return $info; |
||||
|
} |
||||
|
/** |
||||
|
* 插件目录扫描 |
||||
|
* @return array 返回目录数组 |
||||
|
*/ |
||||
|
private function scanPlugin(){ |
||||
|
$plugin_field = array(); |
||||
|
$field = Env::get('root_path')."/plugins"; |
||||
|
$plugin_field = $this->dirscan($field); |
||||
|
$plugin_list=array(); |
||||
|
foreach($plugin_field as $k=>$v){ |
||||
|
$plugin_list[$v] = $this->dirscan($field.'/'.$v); |
||||
|
} |
||||
|
foreach($plugin_list as $k=>$v){ |
||||
|
foreach($v as $k2=>$v2){ |
||||
|
if(!file_exists(Env::get('root_path').'/plugins/'.$k.'/'.$v2.'/config.php')){ |
||||
|
unset($plugin_list[$k][$k2]); |
||||
|
}else { |
||||
|
$plugin_list[$k][$v2] = include(Env::get('root_path').'/plugins/'.$k.'/'.$v2.'/config.php'); |
||||
|
unset($plugin_list[$k][$k2]); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
//dump($plugin_list); |
||||
|
return $plugin_list; |
||||
|
} |
||||
|
/** |
||||
|
* 获取插件目录列表 |
||||
|
* @param $dir |
||||
|
* @return array |
||||
|
*/ |
||||
|
private function dirscan($dir){ |
||||
|
$dirArray = array(); |
||||
|
if (false != ($handle = opendir($dir))) { |
||||
|
$i=0; |
||||
|
while ( false !== ($file = readdir ( $handle )) ) { |
||||
|
//去掉"“.”、“..”以及带“.xxx”后缀的文件 |
||||
|
if ($file != "." && $file != ".."&&!strpos($file,".")) { |
||||
|
$dirArray[$i]=$file; |
||||
|
$i++; |
||||
|
} |
||||
|
} |
||||
|
//关闭句柄 |
||||
|
closedir ( $handle ); |
||||
|
} |
||||
|
return $dirArray; |
||||
|
} |
||||
|
/** |
||||
|
* 更新插件到数据库 |
||||
|
* @param $plugin_list 本地插件数组 |
||||
|
*/ |
||||
|
private function insertPlugin($plugin_list){ |
||||
|
$d_list = db('plugin')->field('code,type')->select(); // 数据库 |
||||
|
|
||||
|
$cv = array(); |
||||
|
$new_arr = array(); // 本地 |
||||
|
//插件类型 |
||||
|
foreach($plugin_list as $pt=>$pv){ |
||||
|
// 本地对比数据库 |
||||
|
foreach($pv as $t=>$v){ |
||||
|
foreach ($v['config'] as $key=>$val){ |
||||
|
$cv[$val['name']] = $val['value']; |
||||
|
} |
||||
|
$tmp['code'] = $v['code']; |
||||
|
$tmp['type'] = $pt; |
||||
|
$new_arr[] = $tmp; |
||||
|
// 对比数据库 本地有 数据库没有 |
||||
|
$is_exit = db('plugin')->where(array('type'=>$pt,'code'=>$v['code']))->find(); |
||||
|
if(empty($is_exit)){ |
||||
|
$add['code'] = $v['code']; |
||||
|
$add['name'] = $v['name']; |
||||
|
$add['version'] = $v['version']; |
||||
|
$add['icon'] = $v['icon']; |
||||
|
$add['author'] = $v['author']; |
||||
|
$add['desc'] = $v['desc']; |
||||
|
if(isset($v['bank_code'])){ |
||||
|
$add['bank_code'] = serialize($v['bank_code']); |
||||
|
} |
||||
|
$add['type'] = $pt; |
||||
|
$add['scene'] = $v['scene']; |
||||
|
$add['config'] = empty($v['config']) ? '' : serialize($v['config']); |
||||
|
$add['config_value'] = empty($cv) ? '' : serialize($cv); |
||||
|
db('plugin')->insert($add); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
foreach($d_list as $k=>$v){ |
||||
|
if(!in_array($v,$new_arr)){ |
||||
|
db('plugin')->where($v)->delete(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,56 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use think\Db; |
||||
|
use think\facade\Request; |
||||
|
class System extends Common |
||||
|
{ |
||||
|
/********************************站点管理*******************************/ |
||||
|
//站点设置 |
||||
|
public function system($sys_id=1){ |
||||
|
$table = db('system'); |
||||
|
if(Request::isAjax()) { |
||||
|
$data = Request::except('file'); |
||||
|
if($table->where('id',1)->update($data)!==false) { |
||||
|
savecache('System'); |
||||
|
return json(['code' => 1, 'msg' => '站点设置保存成功!', 'url' => url('system/system')]); |
||||
|
} else { |
||||
|
return json(array('code' => 0, 'msg' =>'站点设置保存失败!')); |
||||
|
} |
||||
|
}else{ |
||||
|
$system = $table->find($sys_id); |
||||
|
$this->assign('system', json_encode($system,true)); |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
} |
||||
|
public function email(){ |
||||
|
if(Request::isAjax()) { |
||||
|
$datas = input('post.'); |
||||
|
foreach ($datas as $k=>$v){ |
||||
|
Db::name('config')->where([['name','=',$k],['inc_type','=','smtp']])->update(['value'=>$v]); |
||||
|
} |
||||
|
return json(['code' => 1, 'msg' => '邮箱设置成功!', 'url' => url('system/email')]); |
||||
|
}else{ |
||||
|
$smtp = Db::name('config')->where('inc_type','smtp')->select(); |
||||
|
$info = convert_arr_kv($smtp,'name','value'); |
||||
|
$this->assign('info', json_encode($info,true)); |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
} |
||||
|
public function trySend(){ |
||||
|
$sender = input('email'); |
||||
|
//检查是否邮箱格式 |
||||
|
if (!is_email($sender)) { |
||||
|
return json(['code' => 0, 'msg' => '测试邮箱码格式有误']); |
||||
|
} |
||||
|
$arr = db('config')->where('inc_type','smtp')->select(); |
||||
|
$config = convert_arr_kv($arr,'name','value'); |
||||
|
$content = $config['test_eamil_info']; |
||||
|
$send = send_email($sender, '测试邮件',$content); |
||||
|
if ($send) { |
||||
|
return json(['code' => 1, 'msg' => '邮件发送成功!']); |
||||
|
} else { |
||||
|
return json(['code' => 0, 'msg' => '邮件发送失败!']); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,177 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use think\facade\Env; |
||||
|
class Template extends Common{ |
||||
|
protected $filepath,$publicpath,$viewSuffix; |
||||
|
function initialize() |
||||
|
{ |
||||
|
parent::initialize(); |
||||
|
$viewPath = config('template.view_path'); |
||||
|
$this->viewSuffix = config('template.view_suffix'); |
||||
|
$viewPath = $viewPath ? $viewPath : 'view'; |
||||
|
$this->filepath = Env::get('app_path').strtolower(config('default_module')).'/'.$viewPath.'/'; |
||||
|
$this->publicpath = 'static/home/'; |
||||
|
$this->assign ( 'viewSuffix',$this->viewSuffix ); |
||||
|
} |
||||
|
public function index(){ |
||||
|
$type= input('param.type') ? input('param.type') : $this->viewSuffix; |
||||
|
if($type==$this->viewSuffix){ |
||||
|
$path=$this->filepath; |
||||
|
}else{ |
||||
|
$path=$this->publicpath.$type.'/'; |
||||
|
} |
||||
|
$files = dir_list($path,$type); |
||||
|
$templates = array(); |
||||
|
foreach ($files as $key=>$file){ |
||||
|
$filename = basename($file); |
||||
|
$templates[$key]['value'] = substr($filename,0,strrpos($filename, '.')); |
||||
|
$templates[$key]['filename'] = $filename; |
||||
|
$templates[$key]['filepath'] = $file; |
||||
|
$templates[$key]['filesize']=byte_format(filesize($file)); |
||||
|
$templates[$key]['filemtime']=filemtime($file); |
||||
|
$templates[$key]['ext'] = strtolower(substr($filename,strrpos($filename, '.')-strlen($filename))); |
||||
|
} |
||||
|
$this->assign ( 'templates',$templates ); |
||||
|
|
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
|
||||
|
public function add(){ |
||||
|
$this->assign ( 'title','添加模版' ); |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function insert(){ |
||||
|
$filename = input('post.file'); |
||||
|
$type = input('post.type'); |
||||
|
$path = $type==$this->viewSuffix ? $this->filepath : $this->publicpath.$type.'/'; |
||||
|
$file = $path.$filename.'.'.$type; |
||||
|
if(file_exists($file)){ |
||||
|
$result['msg'] = '文件已经存在!'; |
||||
|
$result['status'] = 0; |
||||
|
return $result; |
||||
|
} |
||||
|
file_put_contents($file,stripslashes(input('post.content'))); |
||||
|
$result['msg'] = '添加成功!'; |
||||
|
if($type==$this->viewSuffix){ |
||||
|
$result['url'] = url('index'); |
||||
|
}else{ |
||||
|
$result['url'] = url('index',array('type'=>$type)); |
||||
|
} |
||||
|
$result['code'] = 1; |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
public function edit(){ |
||||
|
$filename = input('param.file'); |
||||
|
if(input('param.type')){ |
||||
|
$type = input('param.type'); |
||||
|
}else{ |
||||
|
$type = strtolower(substr($filename,strrpos($filename, '.')-strlen($filename)+1)); |
||||
|
} |
||||
|
$path = $type==$this->viewSuffix ? $this->filepath : $this->publicpath.$type.'/'; |
||||
|
$file = $path.$filename; |
||||
|
if(file_exists($file)){ |
||||
|
$file=iconv('gb2312','utf-8',$file); |
||||
|
$content = file_get_contents($file); |
||||
|
$this->assign ( 'filename',$filename ); |
||||
|
$this->assign ( 'title','修改模版内容' ); |
||||
|
$this->assign ( 'file',$file ); |
||||
|
$this->assign ( 'content',$content ); |
||||
|
}else{ |
||||
|
$this->error('文件不存在!'); |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function update(){ |
||||
|
$filename = input('post.file'); |
||||
|
$type= input('param.type') ? input('param.type') : $this->viewSuffix; |
||||
|
$path = $type==$this->viewSuffix ? $this->filepath : $this->publicpath.$type.'/'; |
||||
|
$file = $path.$filename; |
||||
|
if(file_exists($file)){ |
||||
|
file_put_contents($file,stripslashes(input('content'))); |
||||
|
$result['msg'] = '修改成功!'; |
||||
|
if($type==$this->viewSuffix){ |
||||
|
$result['url'] = url('index'); |
||||
|
}else{ |
||||
|
$result['url'] = url('index',array('type'=>$type)); |
||||
|
} |
||||
|
$result['code'] = 1; |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$result['msg'] = '文件不存在!'; |
||||
|
$result['code'] = 0; |
||||
|
return $result; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public function delete(){ |
||||
|
$filename = input('param.file'); |
||||
|
$type = strtolower(substr($filename,strrpos($filename, '.')-strlen($filename)+1)); |
||||
|
$path = $type==$this->viewSuffix ? $path=$this->filepath : $this->publicpath.$type.'/'; |
||||
|
$file = $path.$filename; |
||||
|
if(file_exists($file)){ |
||||
|
unlink($file); |
||||
|
if($type==$this->viewSuffix){ |
||||
|
$this->redirect('index'); |
||||
|
}else{ |
||||
|
$this->redirect('index',array('type'=>$type)); |
||||
|
} |
||||
|
}else{ |
||||
|
if($type==$this->viewSuffix){ |
||||
|
$this->redirect('index'); |
||||
|
}else{ |
||||
|
$this->redirect('index',array('type'=>$type)); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public function images(){ |
||||
|
$path = $this->publicpath.'images/'.input('folder').'/'; |
||||
|
$uppath = explode('/',input('folder')); |
||||
|
$leve = count($uppath)-1; |
||||
|
unset($uppath[$leve]); |
||||
|
if($leve>1){ |
||||
|
unset($uppath[$leve-1]); |
||||
|
$uppath = implode('/',$uppath).'/'; |
||||
|
}else{ |
||||
|
$uppath = ''; |
||||
|
} |
||||
|
$this->assign ( 'leve',$leve); |
||||
|
$this->assign ( 'uppath',$uppath); |
||||
|
$files = glob($path.'*'); |
||||
|
$folders=array(); |
||||
|
foreach($files as $key => $file) { |
||||
|
$filename = basename($file); |
||||
|
if(is_dir($file)){ |
||||
|
$folders[$key]['filename'] = $filename; |
||||
|
$folders[$key]['filepath'] = $file; |
||||
|
$folders[$key]['ext'] = 'folder'; |
||||
|
}else{ |
||||
|
$templates[$key]['filename'] = $filename; |
||||
|
$templates[$key]['filepath'] = $file; |
||||
|
$templates[$key]['ext'] = strtolower(substr($filename,strrpos($filename, '.')-strlen($filename)+1)); |
||||
|
if(!in_array($templates[$key]['ext'],array('gif','jpg','png','bmp'))) $templates[$key]['ico'] =1; |
||||
|
} |
||||
|
} |
||||
|
$this->assign ( 'title','媒体文件' ); |
||||
|
$this->assign ( 'path',$path); |
||||
|
$this->assign ( 'folders',$folders ); |
||||
|
$this->assign ( 'files',$templates ); |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function imgDel(){ |
||||
|
$path = $this->publicpath.'images/'.input('post.folder'); |
||||
|
$file=$path.input('post.filename'); |
||||
|
if(file_exists($file)){ |
||||
|
is_dir($file) ? dir_delete($file) : unlink($file); |
||||
|
|
||||
|
$result['msg'] = '删除成功!'; |
||||
|
$result['code'] = 1; |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$result['msg'] = '文件不存在!'; |
||||
|
$result['code'] = 0; |
||||
|
return $result; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,150 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use think\Db; |
||||
|
use think\Request; |
||||
|
use think\Controller; |
||||
|
use think\facade\Env; |
||||
|
class UpFiles extends Common |
||||
|
{ |
||||
|
public function upload(){ |
||||
|
// 获取上传文件表单字段名 |
||||
|
$fileKey = array_keys(request()->file()); |
||||
|
// 获取表单上传文件 |
||||
|
$file = request()->file($fileKey['0']); |
||||
|
// 移动到框架应用根目录/public/uploads/ 目录下 |
||||
|
|
||||
|
$info = $file->validate(['ext' => 'jpg,png,gif,jpeg'])->move('uploads'); |
||||
|
if($info){ |
||||
|
$result['code'] = 1; |
||||
|
$result['info'] = '图片上传成功!'; |
||||
|
$path=str_replace('\\','/',$info->getSaveName()); |
||||
|
$result['url'] = '/uploads/'. $path; |
||||
|
return $result; |
||||
|
}else{ |
||||
|
// 上传失败获取错误信息 |
||||
|
|
||||
|
$result['code'] =0; |
||||
|
$result['info'] = $file->getError(); |
||||
|
$result['url'] = ''; |
||||
|
return $result; |
||||
|
} |
||||
|
} |
||||
|
public function file(){ |
||||
|
$fileKey = array_keys(request()->file()); |
||||
|
// 获取表单上传文件 例如上传了001.jpg |
||||
|
$file = request()->file($fileKey['0']); |
||||
|
// 移动到框架应用根目录/public/uploads/ 目录下 |
||||
|
$info = $file->validate(['ext' => 'zip,rar,pdf,swf,ppt,psd,ttf,txt,xls,doc,docx'])->move('uploads'); |
||||
|
if($info){ |
||||
|
$result['code'] = 0; |
||||
|
$result['info'] = '文件上传成功!'; |
||||
|
$path=str_replace('\\','/',$info->getSaveName()); |
||||
|
|
||||
|
$result['url'] = '/uploads/'. $path; |
||||
|
$result['ext'] = $info->getExtension(); |
||||
|
$result['size'] = byte_format($info->getSize(),2); |
||||
|
return $result; |
||||
|
}else{ |
||||
|
// 上传失败获取错误信息 |
||||
|
$result['code'] =1; |
||||
|
$result['info'] = '文件上传失败!'; |
||||
|
$result['url'] = ''; |
||||
|
return $result; |
||||
|
} |
||||
|
} |
||||
|
public function pic(){ |
||||
|
// 获取上传文件表单字段名 |
||||
|
$fileKey = array_keys(request()->file()); |
||||
|
// 获取表单上传文件 |
||||
|
$file = request()->file($fileKey['0']); |
||||
|
// 移动到框架应用根目录/public/uploads/ 目录下 |
||||
|
$info = $file->validate(['ext' => 'jpg,png,gif,jpeg'])->move(Env::get('root_path') . 'public/uploads'); |
||||
|
if($info){ |
||||
|
$result['code'] = 1; |
||||
|
$result['info'] = '图片上传成功!'; |
||||
|
$path=str_replace('\\','/',$info->getSaveName()); |
||||
|
$result['url'] = '/uploads/'. $path; |
||||
|
return json_encode($result,true); |
||||
|
}else{ |
||||
|
// 上传失败获取错误信息 |
||||
|
$result['code'] =0; |
||||
|
$result['info'] = '图片上传失败!'; |
||||
|
$result['url'] = ''; |
||||
|
return json_encode($result,true); |
||||
|
} |
||||
|
} |
||||
|
/** |
||||
|
* 后台:wangEditor |
||||
|
* @return \think\response\Json |
||||
|
*/ |
||||
|
public function editUpload(){ |
||||
|
// 获取上传文件表单字段名 |
||||
|
$fileKey = array_keys(request()->file()); |
||||
|
// 获取表单上传文件 |
||||
|
$file = request()->file($fileKey['0']); |
||||
|
// 移动到框架应用根目录/public/uploads/ 目录下 |
||||
|
$info = $file->validate(['ext' => 'jpg,png,gif,jpeg'])->move('uploads'); |
||||
|
if($info){ |
||||
|
$path=str_replace('\\','/',$info->getSaveName()); |
||||
|
return '/uploads/'. $path; |
||||
|
}else{ |
||||
|
// 上传失败获取错误信息 |
||||
|
$result['code'] =1; |
||||
|
$result['msg'] = '图片上传失败!'; |
||||
|
$result['data'] = ''; |
||||
|
return json_encode($result,true); |
||||
|
} |
||||
|
} |
||||
|
//多图上传 |
||||
|
public function upImages(){ |
||||
|
$fileKey = array_keys(request()->file()); |
||||
|
// 获取表单上传文件 |
||||
|
$file = request()->file($fileKey['0']); |
||||
|
// 移动到框架应用根目录/public/uploads/ 目录下 |
||||
|
$info = $file->validate(['ext' => 'jpg,png,gif,jpeg'])->move(Env::get('root_path') . 'public/uploads'); |
||||
|
if($info){ |
||||
|
$result['code'] = 0; |
||||
|
$result['msg'] = '图片上传成功!'; |
||||
|
$path=str_replace('\\','/',$info->getSaveName()); |
||||
|
$result["src"] = '/uploads/'. $path; |
||||
|
return $result; |
||||
|
}else{ |
||||
|
// 上传失败获取错误信息 |
||||
|
$result['code'] =1; |
||||
|
$result['msg'] = '图片上传失败!'; |
||||
|
return $result; |
||||
|
} |
||||
|
} |
||||
|
/** |
||||
|
* 后台:NKeditor |
||||
|
* @return \think\response\Json |
||||
|
*/ |
||||
|
public function editimg(){ |
||||
|
$allowExtesions = array( |
||||
|
'image' => 'gif,jpg,jpeg,png,bmp', |
||||
|
'flash' => 'swf,flv', |
||||
|
'media' => 'swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb', |
||||
|
'file' => 'doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2', |
||||
|
); |
||||
|
// 获取上传文件表单字段名 |
||||
|
$fileKey = array_keys(request()->file()); |
||||
|
// 获取表单上传文件 |
||||
|
$file = request()->file($fileKey['0']); |
||||
|
// 移动到框架应用根目录/public/uploads/ 目录下 |
||||
|
$info = $file->validate(['ext'=>$allowExtesions[input('fileType')]])->move('./uploads'); |
||||
|
if($info){ |
||||
|
$path=str_replace('\\','/',$info->getSaveName()); |
||||
|
$url = '/uploads/'. $path; |
||||
|
$result['code'] = '000'; |
||||
|
$result['message'] = '图片上传成功!'; |
||||
|
$result['item'] = ['url'=>$url]; |
||||
|
return json($result); |
||||
|
}else{ |
||||
|
// 上传失败获取错误信息 |
||||
|
$result['code'] =001; |
||||
|
$result['message'] = $file->getError(); |
||||
|
$result['url'] = ''; |
||||
|
return json($result); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,161 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\controller; |
||||
|
use app\admin\model\Users as UsersModel; |
||||
|
class Users extends Common{ |
||||
|
//会员列表 |
||||
|
public function index(){ |
||||
|
if(request()->isPost()){ |
||||
|
$key=input('post.key'); |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list=db('users')->alias('u') |
||||
|
->join(config('database.prefix').'user_level ul','u.level = ul.level_id','left') |
||||
|
->field('u.*,ul.level_name') |
||||
|
->where('u.email|u.mobile|u.username','like',"%".$key."%") |
||||
|
->order('u.id desc') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
foreach ($list['data'] as $k=>$v){ |
||||
|
$list['data'][$k]['reg_time'] = date('Y-m-d H:s',$v['reg_time']); |
||||
|
} |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
//设置会员状态 |
||||
|
public function usersState(){ |
||||
|
$id=input('post.id'); |
||||
|
$is_lock=input('post.is_lock'); |
||||
|
if(db('users')->where('id='.$id)->update(['is_lock'=>$is_lock])!==false){ |
||||
|
return ['status'=>1,'msg'=>'设置成功!']; |
||||
|
}else{ |
||||
|
return ['status'=>0,'msg'=>'设置失败!']; |
||||
|
} |
||||
|
} |
||||
|
public function edit($id=''){ |
||||
|
if(request()->isPost()){ |
||||
|
$user = db('users'); |
||||
|
$data = input('post.'); |
||||
|
$level =explode(':',$data['level']); |
||||
|
$data['level'] = $level[1]; |
||||
|
$province =explode(':',$data['province']); |
||||
|
$data['province'] = isset( $province[1])?$province[1]:''; |
||||
|
$city =explode(':',$data['city']); |
||||
|
$data['city'] = isset( $city[1])?$city[1]:''; |
||||
|
$district =explode(':',$data['district']); |
||||
|
$data['district'] = isset( $district[1])?$district[1]:''; |
||||
|
if(empty($data['password'])){ |
||||
|
unset($data['password']); |
||||
|
}else{ |
||||
|
$data['password'] = md5($data['password']); |
||||
|
} |
||||
|
if ($user->update($data)!==false) { |
||||
|
$result['msg'] = '会员修改成功!'; |
||||
|
$result['url'] = url('index'); |
||||
|
$result['code'] = 1; |
||||
|
} else { |
||||
|
$result['msg'] = '会员修改失败!'; |
||||
|
$result['code'] = 0; |
||||
|
} |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$province = db('Region')->where ( array('pid'=>1) )->select (); |
||||
|
$user_level=db('user_level')->order('sort')->select(); |
||||
|
$info = UsersModel::get($id); |
||||
|
$this->assign('info',json_encode($info,true)); |
||||
|
$this->assign('title',lang('edit').lang('user')); |
||||
|
$this->assign('province',json_encode($province,true)); |
||||
|
$this->assign('user_level',json_encode($user_level,true)); |
||||
|
|
||||
|
$city = db('Region')->where ( array('pid'=>$info['province']) )->select (); |
||||
|
$this->assign('city',json_encode($city,true)); |
||||
|
$district = db('Region')->where ( array('pid'=>$info['city']) )->select (); |
||||
|
$this->assign('district',json_encode($district,true)); |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public function getRegion(){ |
||||
|
$Region=db("region"); |
||||
|
$pid = input("pid"); |
||||
|
$arr = explode(':',$pid); |
||||
|
$map['pid']=$arr[1]; |
||||
|
$list=$Region->where($map)->select(); |
||||
|
return $list; |
||||
|
} |
||||
|
|
||||
|
public function usersDel(){ |
||||
|
db('users')->delete(['id'=>input('id')]); |
||||
|
db('oauth')->delete(['uid'=>input('id')]); |
||||
|
return $result = ['code'=>1,'msg'=>'删除成功!']; |
||||
|
} |
||||
|
public function delall(){ |
||||
|
$map[] =array('id','IN',input('param.ids/a')); |
||||
|
db('users')->where($map)->delete(); |
||||
|
$result['msg'] = '删除成功!'; |
||||
|
$result['code'] = 1; |
||||
|
$result['url'] = url('index'); |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
/***********************************会员组***********************************/ |
||||
|
public function userGroup(){ |
||||
|
if(request()->isPost()){ |
||||
|
$userLevel=db('user_level'); |
||||
|
$list=$userLevel->order('sort')->select(); |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list,'rel'=>1]; |
||||
|
} |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function groupAdd(){ |
||||
|
if(request()->isPost()){ |
||||
|
$data = input('post.'); |
||||
|
db('user_level')->insert($data); |
||||
|
$result['msg'] = '会员组添加成功!'; |
||||
|
$result['url'] = url('userGroup'); |
||||
|
$result['code'] = 1; |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$this->assign('title',lang('add')."会员组"); |
||||
|
$this->assign('info','null'); |
||||
|
return $this->fetch('groupForm'); |
||||
|
} |
||||
|
} |
||||
|
public function groupEdit(){ |
||||
|
if(request()->isPost()) { |
||||
|
$data = input('post.'); |
||||
|
db('user_level')->update($data); |
||||
|
$result['msg'] = '会员组修改成功!'; |
||||
|
$result['url'] = url('userGroup'); |
||||
|
$result['code'] = 1; |
||||
|
return $result; |
||||
|
}else{ |
||||
|
$map['level_id'] = input('param.level_id'); |
||||
|
$info = db('user_level')->where($map)->find(); |
||||
|
$this->assign('title',lang('edit')."会员组"); |
||||
|
$this->assign('info',json_encode($info,true)); |
||||
|
return $this->fetch('groupForm'); |
||||
|
} |
||||
|
} |
||||
|
public function groupDel(){ |
||||
|
$level_id=input('level_id'); |
||||
|
if (empty($level_id)){ |
||||
|
return ['code'=>0,'msg'=>'会员组ID不存在!']; |
||||
|
} |
||||
|
db('user_level')->where(array('level_id'=>$level_id))->delete(); |
||||
|
return ['code'=>1,'msg'=>'删除成功!']; |
||||
|
} |
||||
|
public function groupOrder(){ |
||||
|
$userLevel=db('user_level'); |
||||
|
$data = input('post.'); |
||||
|
$userLevel->update($data); |
||||
|
$result['msg'] = '排序更新成功!'; |
||||
|
$result['url'] = url('userGroup'); |
||||
|
$result['code'] = 1; |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
||||
@ -0,0 +1,882 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace app\admin\controller; |
||||
|
use think\Db; |
||||
|
use clt\WchatOauth; |
||||
|
use think\facade\Request; |
||||
|
class Wechat extends Common{ |
||||
|
private $return = array(); |
||||
|
protected $instance_id; |
||||
|
/** |
||||
|
* 微信账户设置 |
||||
|
*/ |
||||
|
public function config() |
||||
|
{ |
||||
|
$info = db('wx_mp')->where([ 'key' => 'SHOPWCHAT'])->field('value')->find(); |
||||
|
if (empty($info['value'])) { |
||||
|
$info= array( |
||||
|
'value' => array( |
||||
|
'appid' => '', |
||||
|
'appsecret' => '', |
||||
|
'token' => '' |
||||
|
), |
||||
|
'is_use' => 1 |
||||
|
); |
||||
|
} else { |
||||
|
$info['value'] = json_decode($info['value'], true); |
||||
|
} |
||||
|
$wchat_config = $info; |
||||
|
// 获取当前域名 |
||||
|
$domain_name = Request::domain(); |
||||
|
$url = $domain_name.Request::root(); |
||||
|
// 去除链接的http://头部 |
||||
|
$url_top = substr($url, 7); |
||||
|
// 去除链接的尾部index.php |
||||
|
$url_top = str_replace('/index.php', '', $url_top); |
||||
|
$call_back_url = $domain_name.'/wchat/wchat/relateWeixin'; |
||||
|
$this->assign("url", $url_top); |
||||
|
$this->assign("call_back_url", $call_back_url); |
||||
|
$this->assign('wchat_config', $wchat_config["value"]); |
||||
|
$this->assign('title', '微信账户设置'); |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function setWechatConfig(){ |
||||
|
$data = input('post.'); |
||||
|
$value['value'] = json_encode($data); |
||||
|
$value['modify_time'] = time(); |
||||
|
$value['is_use'] = 1; |
||||
|
$value['qrcode'] = $data['qrcode']; |
||||
|
db('wx_mp')->where([ 'key' => 'SHOPWCHAT'])->update($value); |
||||
|
return json(['code' => 1, 'msg' => '设置成功!', 'url' => url('config')]); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
*微信菜单 |
||||
|
*/ |
||||
|
function getInstanceWchatMenu($instance_id) |
||||
|
{ |
||||
|
$wx_menu = db('wx_menu'); |
||||
|
$foot_menu = $wx_menu->where(['instance_id'=>$instance_id,'pid'=>0])->order('sort asc')->select(); |
||||
|
if (! empty($foot_menu)) { |
||||
|
foreach ($foot_menu as $k => $v) { |
||||
|
$foot_menu[$k]['child'] = ''; |
||||
|
$second_menu = $wx_menu->where(['instance_id'=>$instance_id,'pid'=>$v['menu_id']])->order('sort asc')->select(); |
||||
|
if (! empty($second_menu)) { |
||||
|
$foot_menu[$k]['child'] = $second_menu; |
||||
|
$foot_menu[$k]['child_count'] = count($second_menu); |
||||
|
} else { |
||||
|
$foot_menu[$k]['child_count'] = 0; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
return $foot_menu; |
||||
|
} |
||||
|
public function menu(){ |
||||
|
error_reporting(0); |
||||
|
$menu_list = $this->getInstanceWchatMenu(0); |
||||
|
$default_menu_info = array(); // 默认显示菜单 |
||||
|
$menu_list_count = count($menu_list); |
||||
|
$class_index = count($menu_list); |
||||
|
if ($class_index > 0) { |
||||
|
if ($class_index == MAX_MENU_LENGTH) { |
||||
|
$class_index = MAX_MENU_LENGTH - 1; |
||||
|
} |
||||
|
} |
||||
|
if ($menu_list_count > 0) { |
||||
|
$default_menu_info = $menu_list[$menu_list_count - 1]; |
||||
|
} else { |
||||
|
$default_menu_info["menu_name"] = ""; |
||||
|
$default_menu_info["menu_id"] = 0; |
||||
|
$default_menu_info["child_count"] = 0; |
||||
|
$default_menu_info["media_id"] = 0; |
||||
|
$default_menu_info["menu_event_url"] = ""; |
||||
|
$default_menu_info["menu_event_type"] = 1; |
||||
|
} |
||||
|
$media_detail = array(); |
||||
|
if ($default_menu_info["media_id"]) { |
||||
|
// 查询图文消息 |
||||
|
$media_detail = $this->gwmd($default_menu_info["media_id"]); |
||||
|
$media_detail["item_list_count"] = count($media_detail["item_list"]); |
||||
|
} else { |
||||
|
$media_detail["create_time"] = ""; |
||||
|
$media_detail["title"] = ""; |
||||
|
$media_detail["item_list_count"] = 0; |
||||
|
} |
||||
|
$default_menu_info["media_list"] = $media_detail; |
||||
|
$this->assign("wx_name",$this->system['name']); |
||||
|
$this->assign("pagesize",2); |
||||
|
$this->assign("menu_list", $menu_list); |
||||
|
$this->assign("MAX_MENU_LENGTH", MAX_MENU_LENGTH); // 一级菜单数量 |
||||
|
$this->assign("MAX_SUB_MENU_LENGTH", MAX_SUB_MENU_LENGTH); // 二级菜单数量 |
||||
|
$this->assign("menu_list_count", $menu_list_count); |
||||
|
//dump($default_menu_info); |
||||
|
$this->assign("default_menu_info", $default_menu_info); |
||||
|
$this->assign("class_index", $class_index); |
||||
|
return $this->fetch(); |
||||
|
} |
||||
|
public function getweixinmediadetail() |
||||
|
{ |
||||
|
$media_id = input('media_id'); |
||||
|
$res = $this->gwmd($media_id); |
||||
|
return $res; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
public function gwmd($media_id) |
||||
|
{ |
||||
|
$wx_media = db('wx_media'); |
||||
|
$weixin_media_info = $wx_media->find($media_id); |
||||
|
$weixin_media_info['create_time'] = toDate($weixin_media_info['create_time'],'Y-m-d H:i:s'); |
||||
|
if (! empty($weixin_media_info)) { |
||||
|
$item_list = db('wx_media_item')->where(['media_id' => $media_id])->select(); |
||||
|
$weixin_media_info['item_list'] = $item_list; |
||||
|
} |
||||
|
return $weixin_media_info; |
||||
|
} |
||||
|
public function addweixinmenu(){ |
||||
|
$menu = input('menu'); |
||||
|
if (! empty($menu)) { |
||||
|
$menu = json_decode($menu, true); |
||||
|
$instance_id = 0; |
||||
|
$menu_name = $menu["menu_name"]; // 菜单名称 |
||||
|
$ico = ""; // 菜图标单 |
||||
|
$pid = $menu["pid"]; // 父级菜单(一级菜单) |
||||
|
$menu_event_type = $menu["menu_event_type"]; // '1普通url 2 图文素材 3 功能', |
||||
|
$menu_event_url = $menu["menu_event_url"]; // '菜单url', |
||||
|
$media_id = $menu["media_id"]; // '图文消息ID', |
||||
|
$sort = $menu["sort"]; // 排序 |
||||
|
$res = $this->addwm($instance_id, $menu_name, $ico, $pid, $menu_event_type, $menu_event_url, $media_id, $sort); |
||||
|
return $res; |
||||
|
} |
||||
|
return - 1; |
||||
|
} |
||||
|
public function addwm($instance_id, $menu_name, $ico, $pid, $menu_event_type, $menu_event_url, $media_id, $sort) |
||||
|
{ |
||||
|
$data = array( |
||||
|
'instance_id' => $instance_id, |
||||
|
'menu_name' => $menu_name, |
||||
|
'ico' => $ico, |
||||
|
'pid' => $pid, |
||||
|
'menu_event_type' => $menu_event_type, |
||||
|
'menu_event_url' => $menu_event_url, |
||||
|
'media_id' => $media_id, |
||||
|
'sort' => $sort, |
||||
|
'create_date' => time() |
||||
|
); |
||||
|
return db('wx_menu')->insertGetId($data); |
||||
|
} |
||||
|
public function updateweixinmenuname() |
||||
|
{ |
||||
|
$wx_menu = db('wx_menu'); |
||||
|
$data = input('post.'); |
||||
|
if(! empty($data['menu_name'])){ |
||||
|
$retval = $wx_menu->update($data); |
||||
|
return $retval; |
||||
|
} |
||||
|
return -1; |
||||
|
} |
||||
|
public function deleteWeixinMenu() |
||||
|
{ |
||||
|
$menu_id = input('menu_id'); |
||||
|
if (! empty($menu_id)) { |
||||
|
$res = db('wx_menu')->where("menu_id=$menu_id or pid=$menu_id")->delete(); |
||||
|
return $res; |
||||
|
} |
||||
|
return - 1; |
||||
|
} |
||||
|
public function updateweixinmenueventtype() |
||||
|
{ |
||||
|
$data = input('post.'); |
||||
|
if (! empty($data['menu_event_type'])) { |
||||
|
$retval = db('wx_menu')->update($data); |
||||
|
return $retval; |
||||
|
} |
||||
|
return - 1; |
||||
|
} |
||||
|
public function updateweixinmenumessage() |
||||
|
{ |
||||
|
$menu_event_type = request()->post('menu_event_type', ''); |
||||
|
$menu_id = request()->post('menu_id', ''); |
||||
|
$media_id = request()->post('media_id', ''); |
||||
|
if (! empty($menu_event_type)) { |
||||
|
$retval =db('wx_menu')->where(['menu_id'=>$menu_id])->update(["media_id" => $media_id, "menu_event_type" => $menu_event_type]); |
||||
|
return $retval; |
||||
|
} |
||||
|
return - 1; |
||||
|
} |
||||
|
public function updateweixinmenuurl() |
||||
|
{ |
||||
|
$data = input('post.'); |
||||
|
if (! empty($data['menu_event_url'])) { |
||||
|
$retval = db('wx_menu')->update($data); |
||||
|
return $retval; |
||||
|
} |
||||
|
return - 1; |
||||
|
} |
||||
|
public function updateweixinmenuSort() |
||||
|
{ |
||||
|
$menu_id_arr = input('menu_id_arr'); |
||||
|
if (! empty($menu_id_arr)) { |
||||
|
$weixin_menu = db('wx_menu'); |
||||
|
$menu_id_arr = explode(",", $menu_id_arr); |
||||
|
$retval = 0; |
||||
|
foreach ($menu_id_arr as $k => $v) { |
||||
|
$data = array( |
||||
|
'sort' => $k + 1, |
||||
|
'modify_date' => time(), |
||||
|
'menu_id'=>$v |
||||
|
); |
||||
|
$retval += $weixin_menu->update($data); |
||||
|
} |
||||
|
return $retval; |
||||
|
} |
||||
|
return - 1; |
||||
|
} |
||||
|
//ajax 加载 选择素材 弹框数据 |
||||
|
public function onloadMaterial() |
||||
|
{ |
||||
|
$type = request()->post('type', 0); |
||||
|
$search_text = request()->post('search_text', ''); |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$condition = array(); |
||||
|
if ($type != 0) { |
||||
|
$condition[] = ['type','=',$type]; |
||||
|
} |
||||
|
$condition[] = array('title','like', '%' . $search_text . '%'); |
||||
|
$wx_media = Db::name('wx_media'); |
||||
|
$list = $wx_media->where($condition)->order('sort')->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
if (! empty($list)) { |
||||
|
foreach ($list['data'] as $k => $v) { |
||||
|
$item_list = Db::name('wx_media_item')->where(['media_id' => $v['media_id']])->select(); |
||||
|
$list['data'][$k]['item_list'] = $item_list; |
||||
|
$list['data'][$k]['create_time'] = toDate($v['create_time']); |
||||
|
} |
||||
|
} |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
/** |
||||
|
* 添加 消息 |
||||
|
*/ |
||||
|
public function addmedia() |
||||
|
{ |
||||
|
if (request()->isAjax()) { |
||||
|
$type = request()->post('type', ''); |
||||
|
$title = request()->post('title', ''); |
||||
|
$content = request()->post('content', ''); |
||||
|
$sort = 0; |
||||
|
|
||||
|
$res = $this->addWeixinMedia($title, 0, $type, $sort, $content); |
||||
|
return $res; |
||||
|
} |
||||
|
return view('addmedia'); |
||||
|
} |
||||
|
|
||||
|
public function addWeixinMedia($title, $instance_id, $type, $sort, $content) |
||||
|
{ |
||||
|
$wx_media = db('wx_media'); |
||||
|
$wx_media->startTrans(); |
||||
|
try { |
||||
|
$data_media = array( |
||||
|
'title' => $title, |
||||
|
'instance_id' => $instance_id, |
||||
|
'type' => $type, |
||||
|
'sort' => $sort, |
||||
|
'create_time' => time() |
||||
|
); |
||||
|
$media_id = $wx_media->insertGetId($data_media); |
||||
|
if ($type == 1) { |
||||
|
$this->addWeixinMediaItem($media_id, $title, '', '', '', '', '', '', 0); |
||||
|
} else if ($type == 2) { |
||||
|
$info = explode('`|`', $content); |
||||
|
$this->addWeixinMediaItem($media_id, $info[0], $info[1], $info[2], $info[3], $info[4], $info[5], $info[6], 0); |
||||
|
} else if ($type == 3) { |
||||
|
$list = explode('`$`', $content); |
||||
|
foreach ($list as $k => $v) { |
||||
|
$arr = Array(); |
||||
|
$arr = explode('`|`', $v); |
||||
|
$this->addWeixinMediaItem($media_id, $arr[0], $arr[1], $arr[2], $arr[3], $arr[4], $arr[5], $arr[6], 0); |
||||
|
} |
||||
|
} |
||||
|
$wx_media->commit(); |
||||
|
return ['code'=>1,'message'=>'添加成功!','url'=>url('menu')]; |
||||
|
} catch (\Exception $e) { |
||||
|
$wx_media->rollback(); |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
// TODO Auto-generated method stub |
||||
|
} |
||||
|
public function addWeixinMediaItem($media_id, $title, $author, $cover, $show_cover_pic, $summary, $content, $content_source_url, $sort) |
||||
|
{ |
||||
|
$weixin_media_item = db('wx_media_item'); |
||||
|
$data = array( |
||||
|
'media_id' => $media_id, |
||||
|
'title' => $title, |
||||
|
'author' => $author, |
||||
|
'cover' => $cover, |
||||
|
'show_cover_pic' => $show_cover_pic, |
||||
|
'summary' => $summary, |
||||
|
'content' => $content, |
||||
|
'content_source_url' => $content_source_url, |
||||
|
'sort' => $sort |
||||
|
); |
||||
|
$retval = $weixin_media_item->insert($data); |
||||
|
return $retval; |
||||
|
} |
||||
|
public function upload(){ |
||||
|
// 获取上传文件表单字段名 |
||||
|
$fileKey = array_keys(request()->file()); |
||||
|
// 获取表单上传文件 |
||||
|
$file = request()->file($fileKey['0']); |
||||
|
// 移动到框架应用根目录/public/uploads/ 目录下 |
||||
|
$info = $file->validate(['ext' => 'jpg,png,gif,jpeg'])->move('uploads'); |
||||
|
if($info){ |
||||
|
$this->return['code'] = 1; |
||||
|
$this->return['message'] = '图片上传成功!'; |
||||
|
$path=str_replace('\\','/',$info->getSaveName()); |
||||
|
$this->return['data'] = '/uploads/'. $path; |
||||
|
}else{ |
||||
|
// 上传失败获取错误信息 |
||||
|
$this->return['code'] =0; |
||||
|
$this->return['message'] = '图片上传失败!'; |
||||
|
$this->return['url'] = ''; |
||||
|
} |
||||
|
$this->ajaxFileReturn(); |
||||
|
} |
||||
|
/** |
||||
|
* 上传文件后,ajax返回信息 |
||||
|
* |
||||
|
* 2017年6月9日 19:54:46 王永杰 |
||||
|
* |
||||
|
* @param array $return |
||||
|
*/ |
||||
|
private function ajaxFileReturn() |
||||
|
{ |
||||
|
if (empty($this->return['code']) || null == $this->return['code'] || "" == $this->return['code']) { |
||||
|
$this->return['code'] = 0; // 错误码 |
||||
|
} |
||||
|
|
||||
|
if (empty($this->return['message']) || null == $this->return['message'] || "" == $this->return['message']) { |
||||
|
$this->return['message'] = ""; // 消息 |
||||
|
} |
||||
|
|
||||
|
if (empty($this->return['data']) || null == $this->return['data'] || "" == $this->return['data']) { |
||||
|
$this->return['data'] = ""; // 数据 |
||||
|
} |
||||
|
echo json_encode($this->return); |
||||
|
//return json_encode($this->return); |
||||
|
} |
||||
|
public function materialmessage() |
||||
|
{ |
||||
|
if (request()->isAjax()) { |
||||
|
$type = request()->post('type', 0); |
||||
|
$search_text = request()->post('search_text', ''); |
||||
|
$page =input('page',1); |
||||
|
$pageSize =input('limit',config('pageSize')); |
||||
|
$condition = array(); |
||||
|
if ($type != 0) { |
||||
|
$condition[] = ['type','=',$type]; |
||||
|
} |
||||
|
$condition[] = array('title','like', '%' . $search_text . '%'); |
||||
|
|
||||
|
$condition = array_filter($condition); |
||||
|
$list = db('wx_media')->where($condition)->order('create_time desc') |
||||
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
if (! empty($list)) { |
||||
|
foreach ($list['data'] as $k => $v) { |
||||
|
$item_list = db('wx_media_item')->where(['media_id'=>$v['media_id']])->column('title'); |
||||
|
$list['data'][$k]['item_list'] = $item_list; |
||||
|
$list['data'][$k]['create_time'] = toDate($v['create_time']); |
||||
|
} |
||||
|
} |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
$type = input('param.type',0); |
||||
|
$child_menu_list = array( |
||||
|
array( |
||||
|
'url' => url('materialmessage'), |
||||
|
'menu_name' => "全部", |
||||
|
"active" => $type == 0 ? 1 : 0 |
||||
|
), |
||||
|
array( |
||||
|
'url' => url('materialmessage',['type'=>1]), |
||||
|
'menu_name' => "文本", |
||||
|
"active" => $type == 1 ? 1 : 0 |
||||
|
), |
||||
|
array( |
||||
|
'url' => url('materialmessage',['type'=>2]), |
||||
|
'menu_name' => "单图文", |
||||
|
"active" => $type == 2 ? 1 : 0 |
||||
|
), |
||||
|
array( |
||||
|
'url' => url('materialmessage',['type'=>3]), |
||||
|
'menu_name' => "多图文", |
||||
|
"active" => $type == 3 ? 1 : 0 |
||||
|
) |
||||
|
); |
||||
|
|
||||
|
$this->assign('type', $type); |
||||
|
$this->assign('child_menu_list', $child_menu_list); |
||||
|
return view('materialmessage'); |
||||
|
} |
||||
|
public function updatemedia(){ |
||||
|
if (request()->isAjax()) { |
||||
|
$media_id = request()->post('media_id', 0); |
||||
|
$type = request()->post('type', ''); |
||||
|
$title = request()->post('title', ''); |
||||
|
$content = request()->post('content', ''); |
||||
|
$sort = 0; |
||||
|
$res = $this->updateWeixinMedia($media_id, $title, 0, $type, $sort, $content); |
||||
|
return json($res); |
||||
|
} |
||||
|
$media_id = input('media_id', 0); |
||||
|
$weixin_media = db('wx_media'); |
||||
|
$weixin_media_info = $weixin_media->where(['media_id'=>$media_id])->find(); |
||||
|
if (! empty($weixin_media_info)) { |
||||
|
$weixin_media_item = db('wx_media_item'); |
||||
|
$item_list = $weixin_media_item->where(['media_id' => $media_id])->select(); |
||||
|
$weixin_media_info['item_list'] = $item_list; |
||||
|
} |
||||
|
$this->assign('info', $weixin_media_info); |
||||
|
return view(); |
||||
|
} |
||||
|
public function updateWeixinMedia($media_id, $title, $instance_id, $type, $sort, $content) |
||||
|
{ |
||||
|
$weixin_media = db('wx_media'); |
||||
|
$weixin_media->startTrans(); |
||||
|
try { |
||||
|
// 先修改 图文消息表 |
||||
|
$data_media = array( |
||||
|
'title' => $title, |
||||
|
'instance_id' => $instance_id, |
||||
|
'type' => $type, |
||||
|
'sort' => $sort, |
||||
|
'create_time' => time() |
||||
|
); |
||||
|
$weixin_media->where(['media_id' => $media_id])->update($data_media); |
||||
|
// 修改 图文消息内容的时候 先删除了图文消息内容再添加一次 |
||||
|
$weixin_media_item = db('wx_media_item'); |
||||
|
$weixin_media_item->where(['media_id'=>$media_id])->delete(); |
||||
|
if ($type == 1) { |
||||
|
$this->addWeixinMediaItem($media_id, $title, '', '', '', '', '', '', 0); |
||||
|
} else if ($type == 2) { |
||||
|
$info = explode('`|`', $content); |
||||
|
$this->addWeixinMediaItem($media_id, $info[0], $info[1], $info[2], $info[3], $info[4], $info[5], $info[6], 0); |
||||
|
} else if ($type == 3) { |
||||
|
$list = explode('`$`', $content); |
||||
|
foreach ($list as $k => $v) { |
||||
|
$arr = Array(); |
||||
|
$arr = explode('`|`', $v); |
||||
|
$this->addWeixinMediaItem($media_id, $arr[0], $arr[1], $arr[2], $arr[3], $arr[4], $arr[5], $arr[6], 0); |
||||
|
} |
||||
|
} |
||||
|
$weixin_media->commit(); |
||||
|
return ['code'=>1,'message'=>'修改成功!']; |
||||
|
} catch (\Exception $e) { |
||||
|
$weixin_media->rollback(); |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
} |
||||
|
public function deleteweixinmediadetail(){ |
||||
|
$id = input('id', ''); |
||||
|
$res = 0; |
||||
|
if (! empty($id)) { |
||||
|
$weixin_media_item = db('wx_media_item'); |
||||
|
$res = $weixin_media_item->where("id=$id")->delete(); |
||||
|
return $res; |
||||
|
} |
||||
|
return $res; |
||||
|
} |
||||
|
public function updatemenutoweixin(){ |
||||
|
$this->instance_id=0; |
||||
|
$result = $this->updateInstanceMenuToWeixin($this->instance_id); |
||||
|
$auth_info = $this->getInstanceWchatConfig($this->instance_id); |
||||
|
$res=''; |
||||
|
if (! empty($auth_info['value']['appid']) && ! empty($auth_info['value']['appsecret'])) { |
||||
|
$wchat_auth = new WchatOauth(); |
||||
|
$res = $wchat_auth->menu_create($result); |
||||
|
if (! empty($res)) { |
||||
|
$res = json_decode($res, true); |
||||
|
if ($res['errcode'] == 0) { |
||||
|
$retval = 1; |
||||
|
} else { |
||||
|
$retval = $res['errmsg']; |
||||
|
} |
||||
|
} else { |
||||
|
$retval = 0; |
||||
|
} |
||||
|
} else { |
||||
|
$retval = "当前未配置微信授权"; |
||||
|
} |
||||
|
return ['code' => $retval,'wxcode'=>$res['errcode'], 'message' => '操作成功']; |
||||
|
} |
||||
|
|
||||
|
public function getInstanceWchatConfig($instance_id) |
||||
|
{ |
||||
|
$info = db('wx_mp')->where(['key' => 'SHOPWCHAT', 'instance_id' => $instance_id])->field('value')->find(); |
||||
|
if (empty($info['value'])) { |
||||
|
return array( |
||||
|
'value' => array( |
||||
|
'appid' => '', |
||||
|
'appsecret' => '' |
||||
|
), |
||||
|
'is_use' => 1 |
||||
|
); |
||||
|
} else { |
||||
|
$info['value'] = json_decode($info['value'], true); |
||||
|
return $info; |
||||
|
} |
||||
|
} |
||||
|
public function updateInstanceMenuToWeixin($instance_id) |
||||
|
{ |
||||
|
$menu = array(); |
||||
|
$menu_list = $this->getInstanceWchatMenu($instance_id); |
||||
|
if (! empty($menu_list)) { |
||||
|
|
||||
|
foreach ($menu_list as $k => $v) { |
||||
|
if (! empty($v)) { |
||||
|
$menu_item = array( |
||||
|
'name' => '' |
||||
|
); |
||||
|
$menu_item['name'] = $v['menu_name']; |
||||
|
if (! empty($v['child'])) { |
||||
|
|
||||
|
foreach ($v['child'] as $k_child => $v_child) { |
||||
|
if (! empty($v_child)) { |
||||
|
$sub_menu = array(); |
||||
|
$sub_menu['name'] = $v_child['menu_name']; |
||||
|
if ($v_child['menu_event_type'] == 1) { |
||||
|
$sub_menu['type'] = 'view'; |
||||
|
$sub_menu['url'] = $v_child['menu_event_url']; |
||||
|
} else { |
||||
|
$sub_menu['type'] = 'click'; |
||||
|
$sub_menu['key'] = $v_child['menu_id']; |
||||
|
} |
||||
|
|
||||
|
$menu_item['sub_button'][] = $sub_menu; |
||||
|
} |
||||
|
} |
||||
|
} else { |
||||
|
if ($v['menu_event_type'] == 1) { |
||||
|
$menu_item['type'] = 'view'; |
||||
|
$menu_item['url'] = $v['menu_event_url']; |
||||
|
} else { |
||||
|
$menu_item['type'] = 'click'; |
||||
|
$menu_item['key'] = $v['menu_id']; |
||||
|
} |
||||
|
} |
||||
|
$menu[] = $menu_item; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
$menu_array = array(); |
||||
|
$menu_array['button'] = array(); |
||||
|
foreach ($menu as $k => $v) { |
||||
|
$menu_array['button'][] = $v; |
||||
|
} |
||||
|
$menu_array = json_encode($menu_array,JSON_UNESCAPED_UNICODE); |
||||
|
return $menu_array; |
||||
|
} |
||||
|
|
||||
|
/*******************************回复设置********************************/ |
||||
|
/** |
||||
|
* 关键字 回复 |
||||
|
*/ |
||||
|
public function keyReplayList() |
||||
|
{ |
||||
|
$page =input('page')?input('page'):1; |
||||
|
$pageSize =input('limit')?input('limit'):config('pageSize'); |
||||
|
$list = db('wx_key_replay')->order('sort')->paginate(array('list_rows'=>$pageSize,'page'=>$page))->toArray(); |
||||
|
if (! empty($list)) { |
||||
|
foreach ($list['data'] as $k => $v) { |
||||
|
|
||||
|
$list['data'][$k]['match_type'] = $v['match_type']==2?'全部匹配':'模糊匹配'; |
||||
|
$list['data'][$k]['create_time'] = toDate($v['create_time']); |
||||
|
} |
||||
|
} |
||||
|
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
public function replay(){ |
||||
|
$type = input('type', 1); |
||||
|
$child_menu_list = array( |
||||
|
array( |
||||
|
'url' => url('replay',['type'=>1]), |
||||
|
'menu_name' => "关注时回复", |
||||
|
"active" => $type == 1 ? 1 : 0 |
||||
|
), |
||||
|
array( |
||||
|
'url' => url('replay',['type'=>2]), |
||||
|
'menu_name' => "关键字回复", |
||||
|
"active" => $type == 2 ? 1 : 0 |
||||
|
), |
||||
|
array( |
||||
|
'url' => url('replay',['type'=>3]), |
||||
|
'menu_name' => "默认回复", |
||||
|
"active" => $type == 3 ? 1 : 0 |
||||
|
) |
||||
|
); |
||||
|
$this->assign('child_menu_list', $child_menu_list); |
||||
|
$this->assign('type', $type); |
||||
|
if ($type == 1) { |
||||
|
$info = db('wxFollowReplay')->where(['instance_id' => 0])->find(); |
||||
|
if ($info['reply_media_id'] > 0) { |
||||
|
$weixin_media_info = db('wx_media')->where(['media_id'=>$info['reply_media_id']])->find(); |
||||
|
if (! empty($weixin_media_info)) { |
||||
|
$item_list = db('wx_media_item')->where(['media_id'=>$info['reply_media_id']])->select(); |
||||
|
$weixin_media_info['item_list'] = $item_list; |
||||
|
} |
||||
|
$info['media_info'] = $weixin_media_info; |
||||
|
} |
||||
|
$this->assign('info', $info); |
||||
|
} else if ($type == 2) { |
||||
|
} else if ($type == 3) { |
||||
|
$info = db('wx_default_replay')->where(['instance_id' => 0])->find(); |
||||
|
if ($info['reply_media_id'] > 0) { |
||||
|
$weixin_media_info = db('wx_media')->where(['media_id' => $info['reply_media_id']])->find(); |
||||
|
if (!empty($weixin_media_info)) { |
||||
|
$item_list = db('wx_media_item')->where(['media_id' => $info['reply_media_id']])->select(); |
||||
|
$weixin_media_info['item_list'] = $item_list; |
||||
|
} |
||||
|
$info['media_info'] = $weixin_media_info; |
||||
|
} |
||||
|
$this->assign('info', $info); |
||||
|
} |
||||
|
return view(); |
||||
|
} |
||||
|
/** |
||||
|
* 添加 或 修改 关注时回复 |
||||
|
*/ |
||||
|
public function addorupdatefollowreply() |
||||
|
{ |
||||
|
$id = input('id',0); |
||||
|
$replay_media_id = input('media_id', 0); |
||||
|
if($id==0){ |
||||
|
if ($replay_media_id > 0) { |
||||
|
$res = $this->addFollowReplay(0, $replay_media_id, 0); |
||||
|
} else { |
||||
|
return ['code'=>0,'msg'=>'添加失败']; |
||||
|
} |
||||
|
}else{ |
||||
|
if ($replay_media_id > 0) { |
||||
|
$res = $this->updateFollowReplay($id, 0, $replay_media_id, 0); |
||||
|
} else { |
||||
|
return ['code'=>0,'msg'=>'修改失败']; |
||||
|
} |
||||
|
} |
||||
|
return $res; |
||||
|
} |
||||
|
public function addFollowReplay($instance_id, $replay_media_id, $sort) |
||||
|
{ |
||||
|
$data = array( |
||||
|
'instance_id' => $instance_id, |
||||
|
'reply_media_id' => $replay_media_id, |
||||
|
'sort' => $sort, |
||||
|
'create_time' => time() |
||||
|
); |
||||
|
$id = db('wx_follow_replay')->insertGetId($data); |
||||
|
if($id){ |
||||
|
return ['code'=>$id,'msg'=>'添加成功']; |
||||
|
}else{ |
||||
|
return ['code'=>0,'msg'=>'添加失败']; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
public function updateFollowReplay($id, $instance_id, $replay_media_id, $sort) |
||||
|
{ |
||||
|
$data = array( |
||||
|
'instance_id' => $instance_id, |
||||
|
'reply_media_id' => $replay_media_id, |
||||
|
'sort' => $sort, |
||||
|
'modify_time' => time() |
||||
|
); |
||||
|
if(db('wx_follow_replay')->where(['id' => $id])->update($data)!==false){ |
||||
|
return ['code'=>1,'msg'=>'修改成功']; |
||||
|
}else{ |
||||
|
return ['code'=>0,'msg'=>'修改失败']; |
||||
|
} |
||||
|
} |
||||
|
/** |
||||
|
* 删除 回复 |
||||
|
* @return unknown[] |
||||
|
*/ |
||||
|
public function delReply() |
||||
|
{ |
||||
|
$type = request()->post('type', ''); |
||||
|
if ($type == '') { |
||||
|
return ['code'=>0]; |
||||
|
} else { |
||||
|
if ($type == 1) { |
||||
|
db('wx_follow_replay')->where(['instance_id'=>0])->delete(); |
||||
|
return ['code'=>1,'msg'=>'删除成功!','url'=>url('replay',['type'=>1])]; |
||||
|
} else if ($type == 3) { |
||||
|
// 删除 默认回复 |
||||
|
db('wx_default_replay')->where(['instance_id'=>0])->delete(); |
||||
|
return ['code'=>1,'msg'=>'删除成功!','url'=>url('replay',['type'=>3])]; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
/** |
||||
|
* 添加 或 修改 默认回复 |
||||
|
*/ |
||||
|
public function addOrUpdateDefaultReply() |
||||
|
{ |
||||
|
$id = input('id',0); |
||||
|
$replay_media_id = input('media_id', 0); |
||||
|
if ($id == 0) { |
||||
|
if ($replay_media_id > 0) { |
||||
|
$res = $this->addDefaultReplay(0, $replay_media_id, 0); |
||||
|
} else { |
||||
|
return ['code'=>0,'msg'=>'添加失败']; |
||||
|
} |
||||
|
} else{ |
||||
|
if ($replay_media_id > 0) { |
||||
|
$res = $this->updateDefaultReplay($id, 0, $replay_media_id, 0); |
||||
|
} else { |
||||
|
return ['code'=>0,'msg'=>'修改失败']; |
||||
|
} |
||||
|
} |
||||
|
return $res; |
||||
|
} |
||||
|
public function updateDefaultReplay($id, $instance_id, $replay_media_id, $sort) |
||||
|
{ |
||||
|
$data = array( |
||||
|
'instance_id' => $instance_id, |
||||
|
'reply_media_id' => $replay_media_id, |
||||
|
'sort' => $sort, |
||||
|
'modify_time' => time() |
||||
|
); |
||||
|
if(db('wx_default_replay')->where(['id' => $id])->update($data)!==false){ |
||||
|
return ['code'=>1,'msg'=>'修改成功']; |
||||
|
}else{ |
||||
|
return ['code'=>0,'msg'=>'修改失败']; |
||||
|
} |
||||
|
} |
||||
|
public function addDefaultReplay($instance_id, $replay_media_id, $sort) |
||||
|
{ |
||||
|
$data = array( |
||||
|
'instance_id' => $instance_id, |
||||
|
'reply_media_id' => $replay_media_id, |
||||
|
'sort' => $sort, |
||||
|
'create_time' => time() |
||||
|
); |
||||
|
$id = db('wx_default_replay')->insertGetId($data); |
||||
|
if($id){ |
||||
|
return ['code'=>$id,'msg'=>'添加成功']; |
||||
|
}else{ |
||||
|
return ['code'=>0,'msg'=>'添加失败']; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 添加 或 修改 关键字 回复 |
||||
|
*/ |
||||
|
public function addorupdatekeyreplay() |
||||
|
{ |
||||
|
if (request()->isAjax()) { |
||||
|
$id = input('id'); |
||||
|
$key = input('key', ''); |
||||
|
$match_type = input('match_type', 1); |
||||
|
$replay_media_id = input('media_id', 0); |
||||
|
$sort = 0; |
||||
|
if ($id > 0) { |
||||
|
$res = $this->updateKeyReplay($id, 0, $key, $match_type, $replay_media_id, $sort); |
||||
|
}else{ |
||||
|
$res = $this->addKeyReplay(0, $key, $match_type, $replay_media_id, $sort); |
||||
|
} |
||||
|
return $res; |
||||
|
} |
||||
|
$id = input('id',0); |
||||
|
$this->assign('id', $id); |
||||
|
$info = array( |
||||
|
'key' => '', |
||||
|
'match_type' => 1, |
||||
|
'reply_media_id' => 0, |
||||
|
'madie_info' => array() |
||||
|
); |
||||
|
if ($id > 0) { |
||||
|
$info = Db::name('wx_key_replay')->where('id',$id)->find(); |
||||
|
if ($info['reply_media_id'] > 0) { |
||||
|
$weixin_media_info = Db::name('wx_media')->where('media_id',$info['reply_media_id'])->find(); |
||||
|
if (! empty($weixin_media_info)) { |
||||
|
$item_list = Db::name('wx_media_item')->where('media_id' ,$info['reply_media_id'])->select(); |
||||
|
$weixin_media_info['item_list'] = $item_list; |
||||
|
} |
||||
|
$info['media_info'] = $weixin_media_info; |
||||
|
} |
||||
|
} |
||||
|
$secend_menu['module_name'] = "编辑回复"; |
||||
|
$this->assign("title", "编辑回复"); |
||||
|
$child_menu_list = array( |
||||
|
array( |
||||
|
'url' => "Wchat/addOrUpdateKeyReplay.html?id=" . $id, |
||||
|
'menu_name' => "编辑回复", |
||||
|
"active" => 1 |
||||
|
) |
||||
|
); |
||||
|
if (! empty($id)) { |
||||
|
$this->assign("secend_menu", $secend_menu); |
||||
|
$this->assign('child_menu_list', $child_menu_list); |
||||
|
} |
||||
|
$this->assign('info', $info); |
||||
|
return view(); |
||||
|
} |
||||
|
public function updateKeyReplay($id, $instance_id, $key, $match_type, $replay_media_id, $sort) |
||||
|
{ |
||||
|
$data = array( |
||||
|
'instance_id' => $instance_id, |
||||
|
'key' => $key, |
||||
|
'match_type' => $match_type, |
||||
|
'reply_media_id' => $replay_media_id, |
||||
|
'sort' => $sort, |
||||
|
'create_time' => time() |
||||
|
); |
||||
|
if(db('wx_key_replay')->where('id' , $id)->update($data)!==false){ |
||||
|
return ['code'=>1,'msg'=>'修改成功']; |
||||
|
}else{ |
||||
|
return ['code'=>0,'msg'=>'修改失败']; |
||||
|
} |
||||
|
} |
||||
|
public function addKeyReplay($instance_id, $key, $match_type, $replay_media_id, $sort) |
||||
|
{ |
||||
|
$data = array( |
||||
|
'instance_id' => $instance_id, |
||||
|
'key' => $key, |
||||
|
'match_type' => $match_type, |
||||
|
'reply_media_id' => $replay_media_id, |
||||
|
'sort' => $sort, |
||||
|
'create_time' => time() |
||||
|
); |
||||
|
$id = db('wx_key_replay')->insertGetId($data); |
||||
|
if($id){ |
||||
|
return ['code'=>$id,'msg'=>'添加成功']; |
||||
|
}else{ |
||||
|
return ['code'=>0,'msg'=>'添加失败']; |
||||
|
} |
||||
|
} |
||||
|
/** |
||||
|
* 删除图文消息 |
||||
|
* |
||||
|
* @return number |
||||
|
*/ |
||||
|
public function deleteWeixinMedia(){ |
||||
|
$media_id = input('media_id', ''); |
||||
|
db('wx_media')->where(['media_id'=>$media_id])->delete(); |
||||
|
return ['code'=>1,'msg'=>'删除成功']; |
||||
|
} |
||||
|
/** |
||||
|
* 删除 回复 |
||||
|
* |
||||
|
* @return unknown[] |
||||
|
*/ |
||||
|
public function delKeyReply() |
||||
|
{ |
||||
|
$id = input('id'); |
||||
|
db('wx_key_replay')->where(['id'=>$id])->delete(); |
||||
|
return ['code'=>1,'msg'=>'删除成功']; |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,79 @@ |
|||||
|
<?php |
||||
|
return [ |
||||
|
'hello' => '欢迎使用CLTPHP', |
||||
|
'adminInfo' => '个人信息', |
||||
|
'logout' =>'注销', |
||||
|
'editpwd' =>'修改密码', |
||||
|
'home' =>'浏览网站', |
||||
|
'clearCache' =>'清除缓存', |
||||
|
|
||||
|
'pleaseEnter' =>'请输入', |
||||
|
'systemInfo' =>'系统信息', |
||||
|
'system' =>'系统', |
||||
|
'systemSet' =>'系统设置', |
||||
|
'websiteName' =>'网站名称', |
||||
|
'WebsiteUrl' =>'网站地址', |
||||
|
'seoTitle' =>'SEO标题', |
||||
|
'seoKeyword' =>'SEO关键字', |
||||
|
'description' =>'SEO描述', |
||||
|
'recordNum' =>'备案号', |
||||
|
'companyAddress' =>'公司地址', |
||||
|
|
||||
|
'admin'=>'管理员', |
||||
|
'module'=>'模型', |
||||
|
|
||||
|
'user'=>'会员', |
||||
|
'nickname'=>'昵称', |
||||
|
'man'=>'男', |
||||
|
'woman'=>'女', |
||||
|
|
||||
|
'message'=>'留言', |
||||
|
'link'=>'链接', |
||||
|
'ad'=>'广告', |
||||
|
|
||||
|
'back'=>'返回', |
||||
|
'submit'=>'提交', |
||||
|
'reset'=>'重置', |
||||
|
'open'=>'开启', |
||||
|
'enabled'=>'已开启', |
||||
|
'close'=>'关闭', |
||||
|
'disabled'=>'已禁用', |
||||
|
'yes'=>'是', |
||||
|
'no'=>'否', |
||||
|
'edit'=>'编辑', |
||||
|
'del'=>'删除', |
||||
|
'add'=>'添加', |
||||
|
'list'=>'列表', |
||||
|
'field'=>'字段', |
||||
|
'search'=>'搜索', |
||||
|
'debris'=>'碎片', |
||||
|
'hit'=>'点击', |
||||
|
|
||||
|
'name'=>'名称', |
||||
|
'table'=>'表名', |
||||
|
'detail'=>'详述', |
||||
|
'username'=>'用户名', |
||||
|
'userGroup'=>'用户组', |
||||
|
|
||||
|
'pwd'=>'密码', |
||||
|
'email'=>'邮箱账号', |
||||
|
'tel'=>'联系电话', |
||||
|
'sex'=>'性别', |
||||
|
'qq'=>'QQ', |
||||
|
'status'=>'状态', |
||||
|
'ip'=>'IP地址', |
||||
|
'action'=>'操作', |
||||
|
'icon'=>'图标', |
||||
|
'order'=>'排序', |
||||
|
'id'=>'编号', |
||||
|
'address'=>'地址', |
||||
|
'content'=>'内容', |
||||
|
'time'=>'时间', |
||||
|
'title'=>'标题', |
||||
|
|
||||
|
|
||||
|
'Super administrator cannot be deleted'=>'超级管理员不可删除!', |
||||
|
'Are you sure you want to delete it'=>'你确定要删除吗?' |
||||
|
|
||||
|
|
||||
|
]; |
||||
@ -0,0 +1,39 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\model; |
||||
|
use think\Model; |
||||
|
use think\Db; |
||||
|
class Admin extends Model |
||||
|
{ |
||||
|
protected $pk = 'admin_id'; |
||||
|
public function login($data,$code){ |
||||
|
if($code=='open'){ |
||||
|
if(!$this->check($data['vercode'])){ |
||||
|
return ['code' => 0, 'msg' => '验证码错误']; |
||||
|
} |
||||
|
} |
||||
|
$user=Db::name('admin')->where('username',$data['username'])->find(); |
||||
|
if($user) { |
||||
|
if ($user['is_open']==1 && $user['pwd'] == md5($data['password'])){ |
||||
|
session('username', $user['username']); |
||||
|
session('aid', $user['admin_id']); |
||||
|
session('gid', $user['group_id']); |
||||
|
$avatar = $user['avatar'] == '' ? '/static/admin/images/0.jpg' : $user['avatar']; |
||||
|
session('avatar', $avatar); |
||||
|
return ['code' => 1, 'msg' => '登录成功!']; //信息正确 |
||||
|
}else{ |
||||
|
return ['code' => 0, 'msg' => '用户名或者密码错误,重新输入!']; //密码错误 |
||||
|
} |
||||
|
}else{ |
||||
|
return ['code' => 0, 'msg' => '用户不存在!']; //用户不存在 |
||||
|
} |
||||
|
} |
||||
|
public function getInfo($admin_id){ |
||||
|
$info = Db::name('admin')->field('pwd',true)->find($admin_id); |
||||
|
return $info; |
||||
|
} |
||||
|
public function check($code){ |
||||
|
return captcha_check($code); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
@ -0,0 +1,10 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\model; |
||||
|
use think\Model; |
||||
|
class AuthGroup extends Model |
||||
|
{ |
||||
|
protected $type = [ |
||||
|
// 设置addtime为时间戳类型(整型) |
||||
|
'addtime' => 'timestamp:Y-m-d H:i:s', |
||||
|
]; |
||||
|
} |
||||
@ -0,0 +1,242 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\model; |
||||
|
use think\Model; |
||||
|
use think\Db; |
||||
|
class Client extends Model |
||||
|
{ |
||||
|
//查询 |
||||
|
public function getClientSearchList($page,$limit,$keyword){ |
||||
|
|
||||
|
|
||||
|
$mapAtTime = []; //添加时间 |
||||
|
$mapKhRank = []; //客户级别 |
||||
|
$mapKhStatus = []; //客户状态 |
||||
|
$mapPhone = []; //手机号模糊查询 |
||||
|
$mapKhName = [];//客户名称 |
||||
|
$mapHouse = [];//小区名称 |
||||
|
$mapXsSource = [];//线索/客户来源 |
||||
|
$mapPrUser = [];//业务员/负责人 |
||||
|
|
||||
|
|
||||
|
if ($keyword['at_time']!= ''){ |
||||
|
$at = $keyword['at_time'];//日期 |
||||
|
$end_at =date('Y-m-d',strtotime("$at+1day")); |
||||
|
$mapAtTime = [['at_time','between time',[strtotime($at),strtotime($end_at)]]]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['kh_rank']!= ''){ |
||||
|
|
||||
|
$mapKhRank = ['kh_rank' => $keyword['kh_rank']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['kh_status']!= ''){ |
||||
|
|
||||
|
$mapKhStatus = ['kh_status' => $keyword['kh_status']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['phone'] != ''){ |
||||
|
$mapPhone = [['phone','like','%'.$keyword['phone'].'%']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['kh_name'] != ''){ |
||||
|
$mapKhName = [['kh_name','like','%'.$keyword['kh_name'].'%']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['house'] != ''){ |
||||
|
$mapHouse = [['house','like','%'.$keyword['house'].'%']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['xs_source']!= ''){ |
||||
|
|
||||
|
$mapXsSource = ['xs_source' => $keyword['xs_source']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['pr_user'] != ''){ |
||||
|
$mapPrUser = [['pr_user','like','%'.$keyword['pr_user'].'%']]; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
$result = Db::table('crm_leads') |
||||
|
->where($mapPhone) |
||||
|
->where($mapKhName) |
||||
|
->where($mapHouse) |
||||
|
->where($mapKhStatus) |
||||
|
->where($mapKhRank) |
||||
|
->where($mapXsSource) |
||||
|
->where($mapPrUser) |
||||
|
->where($mapAtTime) |
||||
|
->where(['status'=>1,'issuccess'=>-1]) |
||||
|
->whereTime('at_time',$keyword['timebucket'] ? $keyword['timebucket'] : null) |
||||
|
//->whereTime('at_time',$keyword['timebucket'] ? $keyword['timebucket'] : '') |
||||
|
->order('ut_time desc') |
||||
|
->paginate(array('list_rows'=>$limit,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
//数据集判断方式 |
||||
|
//if($result->isEmpty()){return null;} |
||||
|
if($result['total'] == 0){ |
||||
|
return null; |
||||
|
}else{ |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
//个人查询 |
||||
|
public function getPersonClientSearchList($page,$limit,$keyword){ |
||||
|
|
||||
|
|
||||
|
$mapAtTime = []; //添加时间 |
||||
|
$mapKhRank = []; //客户级别 |
||||
|
$mapKhStatus = []; //客户状态 |
||||
|
$mapPhone = []; //手机号模糊查询 |
||||
|
$mapKhName = [];//客户名称 |
||||
|
$mapHouse = [];//小区名称 |
||||
|
$mapXsSource = [];//线索/客户来源 |
||||
|
|
||||
|
|
||||
|
|
||||
|
if ($keyword['at_time']!= ''){ |
||||
|
$at = $keyword['at_time'];//日期 |
||||
|
$end_at =date('Y-m-d',strtotime("$at+1day")); |
||||
|
$mapAtTime = [['at_time','between time',[strtotime($at),strtotime($end_at)]]]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['kh_rank']!= ''){ |
||||
|
|
||||
|
$mapKhRank = ['kh_rank' => $keyword['kh_rank']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['kh_status']!= ''){ |
||||
|
|
||||
|
$mapKhStatus = ['kh_status' => $keyword['kh_status']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['phone'] != ''){ |
||||
|
$mapPhone = [['phone','like','%'.$keyword['phone'].'%']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['kh_name'] != ''){ |
||||
|
$mapKhName = [['kh_name','like','%'.$keyword['kh_name'].'%']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['house'] != ''){ |
||||
|
$mapHouse = [['house','like','%'.$keyword['house'].'%']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['xs_source']!= ''){ |
||||
|
|
||||
|
$mapXsSource = ['xs_source' => $keyword['xs_source']]; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
$result = Db::table('crm_leads') |
||||
|
->where($mapPhone) |
||||
|
->where($mapKhName) |
||||
|
->where($mapHouse) |
||||
|
->where($mapKhStatus) |
||||
|
->where($mapKhRank) |
||||
|
->where($mapXsSource) |
||||
|
->where($mapAtTime) |
||||
|
->where(['status'=>1,'issuccess'=>-1]) //0 线索,1客户,2公海 |
||||
|
->where(['pr_user' => session('username')]) //负责人 |
||||
|
->whereTime('at_time',$keyword['timebucket'] ? $keyword['timebucket'] : null) |
||||
|
->order('ut_time desc') |
||||
|
->paginate(array('list_rows'=>$limit,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
|
||||
|
//数据集判断方式 |
||||
|
//if($result->isEmpty()){return null;} |
||||
|
if($result['total'] == 0){ |
||||
|
return null; |
||||
|
}else{ |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
//成交客户查询 |
||||
|
public function getChengjiaoClientSearchList($page,$limit,$keyword){ |
||||
|
|
||||
|
|
||||
|
$mapAtTime = []; //添加时间 |
||||
|
$mapKhRank = []; //客户级别 |
||||
|
$mapKhStatus = []; //客户状态 |
||||
|
$mapPhone = []; //手机号模糊查询 |
||||
|
$mapKhName = [];//客户名称 |
||||
|
$mapXsSource = [];//线索/客户来源 |
||||
|
$mapPrUser = [];//业务员/负责人 |
||||
|
|
||||
|
if ($keyword['pr_user'] != ''){ |
||||
|
$mapPrUser['pr_user'] = $keyword['pr_user']; |
||||
|
//$mapPrUser = [['pr_user','like','%'.$keyword['pr_user'].'%']]; |
||||
|
}else{ |
||||
|
if (session('aid') == 1) { |
||||
|
|
||||
|
}else{ |
||||
|
$mapPrUser['pr_user'] =session('username'); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
if ($keyword['at_time']!= ''){ |
||||
|
$at = $keyword['at_time'];//日期 |
||||
|
$end_at =date('Y-m-d',strtotime("$at+1day")); |
||||
|
$mapAtTime = [['at_time','between time',[strtotime($at),strtotime($end_at)]]]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['kh_rank']!= ''){ |
||||
|
|
||||
|
$mapKhRank = ['kh_rank' => $keyword['kh_rank']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['kh_status']!= ''){ |
||||
|
|
||||
|
$mapKhStatus = ['kh_status' => $keyword['kh_status']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['phone'] != ''){ |
||||
|
$mapPhone = [['phone','like','%'.$keyword['phone'].'%']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['kh_name'] != ''){ |
||||
|
$mapKhName = [['kh_name','like','%'.$keyword['kh_name'].'%']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['xs_source']!= ''){ |
||||
|
|
||||
|
$mapXsSource = ['xs_source' => $keyword['xs_source']]; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
$result = Db::table('crm_leads') |
||||
|
->where($mapPhone) |
||||
|
->where($mapKhName) |
||||
|
->where($mapKhStatus) |
||||
|
->where($mapKhRank) |
||||
|
->where($mapXsSource) |
||||
|
->where($mapAtTime) |
||||
|
->where($mapPrUser) |
||||
|
->where(['status'=>1,'issuccess'=>1]) //0 线索,1客户,2公海 |
||||
|
// ->where(['pr_user' => session('username')]) //负责人 |
||||
|
->whereTime('at_time',$keyword['timebucket'] ? $keyword['timebucket'] : null) |
||||
|
->order('ut_time desc') |
||||
|
->paginate(array('list_rows'=>$limit,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
|
||||
|
//数据集判断方式 |
||||
|
//if($result->isEmpty()){return null;} |
||||
|
if($result['total'] == 0){ |
||||
|
return null; |
||||
|
}else{ |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
@ -0,0 +1,111 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\model; |
||||
|
use think\Model; |
||||
|
use think\Db; |
||||
|
class Clues extends Model |
||||
|
{ |
||||
|
//查询 |
||||
|
public function getCluesSearchList($page,$limit,$keyword){ |
||||
|
|
||||
|
|
||||
|
$mapAtTime = []; //添加时间 |
||||
|
$mapXsSource = []; //线索来源 |
||||
|
$mapPhone = []; //手机号模糊查询 |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
if ($keyword['at_time']!= ''){ |
||||
|
$at = $keyword['at_time'];//日期 |
||||
|
$end_at =date('Y-m-d',strtotime("$at+1day")); |
||||
|
$mapAtTime = [['at_time','between time',[strtotime($at),strtotime($end_at)]]]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['xs_source']!= ''){ |
||||
|
|
||||
|
$mapXsSource = ['xs_source' => $keyword['xs_source']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['phone'] != ''){ |
||||
|
$mapPhone = [['phone','like','%'.$keyword['phone'].'%']]; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
$result = Db::table('crm_leads') |
||||
|
->where($mapPhone) |
||||
|
->where($mapXsSource) |
||||
|
->where($mapAtTime) |
||||
|
->where(['status'=>0]) |
||||
|
->whereTime('at_time',$keyword['timebucket'] ? $keyword['timebucket'] : null) |
||||
|
->order('ut_time desc') |
||||
|
->paginate(array('list_rows'=>$limit,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
|
||||
|
//数据集判断方式 |
||||
|
//if($result->isEmpty()){return null;} |
||||
|
if($result['total'] == 0){ |
||||
|
return null; |
||||
|
}else{ |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
//个人查询 |
||||
|
public function getPersonCluesSearchList($page,$limit,$keyword){ |
||||
|
|
||||
|
|
||||
|
$mapAtTime = []; //添加时间 |
||||
|
$mapXsSource = []; //线索来源 |
||||
|
$mapPhone = []; //手机号模糊查询 |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
if ($keyword['at_time']!= ''){ |
||||
|
$at = $keyword['at_time'];//日期 |
||||
|
$end_at =date('Y-m-d',strtotime("$at+1day")); |
||||
|
$mapAtTime = [['at_time','between time',[strtotime($at),strtotime($end_at)]]]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['xs_source']!= ''){ |
||||
|
|
||||
|
$mapXsSource = ['xs_source' => $keyword['xs_source']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['phone'] != ''){ |
||||
|
$mapPhone = [['phone','like','%'.$keyword['phone'].'%']]; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
$result = Db::table('crm_leads') |
||||
|
->where($mapPhone) |
||||
|
->where($mapXsSource) |
||||
|
->where($mapAtTime) |
||||
|
->where(['status'=>0]) //0 线索,1客户,2公海 |
||||
|
->where(['pr_user' => session('username')]) //负责人 |
||||
|
->whereTime('at_time',$keyword['timebucket'] ? $keyword['timebucket'] : null) |
||||
|
->order('ut_time desc') |
||||
|
->paginate(array('list_rows'=>$limit,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
|
||||
|
//数据集判断方式 |
||||
|
//if($result->isEmpty()){return null;} |
||||
|
if($result['total'] == 0){ |
||||
|
return null; |
||||
|
}else{ |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
@ -0,0 +1,64 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\model; |
||||
|
use think\Model; |
||||
|
use think\Db; |
||||
|
class Liberum extends Model |
||||
|
{ |
||||
|
//查询 |
||||
|
public function getLiberumSearchList($page,$limit,$keyword){ |
||||
|
|
||||
|
|
||||
|
$mapAtTime = []; //添加时间 |
||||
|
$mapXsSource = []; //线索来源 |
||||
|
$mapPhone = []; //手机号模糊查询 |
||||
|
$mapKhName = [];//客户名称 |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
if ($keyword['at_time']!= ''){ |
||||
|
$at = $keyword['at_time'];//日期 |
||||
|
$end_at =date('Y-m-d',strtotime("$at+1day")); |
||||
|
$mapAtTime = [['to_gh_time','between time',[strtotime($at),strtotime($end_at)]]]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['pr_gh_type']!= ''){ |
||||
|
|
||||
|
$mapXsSource = ['pr_gh_type' => $keyword['pr_gh_type']]; |
||||
|
} |
||||
|
|
||||
|
if ($keyword['phone'] != ''){ |
||||
|
$mapPhone = [['phone','like','%'.$keyword['phone'].'%']]; |
||||
|
} |
||||
|
if ($keyword['kh_name'] != ''){ |
||||
|
$mapKhName = [['kh_name','like','%'.$keyword['kh_name'].'%']]; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
$result = Db::table('crm_leads') |
||||
|
->where($mapPhone) |
||||
|
->where($mapKhName) |
||||
|
->where($mapXsSource) |
||||
|
->where($mapAtTime) |
||||
|
->where(['status'=>2]) //0-线索,1-客户,2-公海 |
||||
|
->whereTime('to_gh_time',$keyword['timebucket'] ? $keyword['timebucket'] : null) |
||||
|
->order('to_gh_time desc') |
||||
|
->paginate(array('list_rows'=>$limit,'page'=>$page)) |
||||
|
->toArray(); |
||||
|
|
||||
|
//数据集判断方式 |
||||
|
//if($result->isEmpty()){return null;} |
||||
|
if($result['total'] == 0){ |
||||
|
return null; |
||||
|
}else{ |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
@ -0,0 +1,10 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\model; |
||||
|
|
||||
|
use think\Model; |
||||
|
|
||||
|
class System extends Model |
||||
|
{ |
||||
|
protected $name = 'system'; |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,10 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\model; |
||||
|
|
||||
|
use think\Model; |
||||
|
|
||||
|
class Tags extends Model |
||||
|
{ |
||||
|
protected $name = 'tags'; |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,18 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\model; |
||||
|
|
||||
|
use think\Model; |
||||
|
|
||||
|
class Users extends Model |
||||
|
{ |
||||
|
protected $name = 'users'; |
||||
|
protected $type = [ |
||||
|
// 设置addtime为时间戳类型(整型) |
||||
|
'reg_time' => 'timestamp:Y-m-d H:i:s', |
||||
|
]; |
||||
|
// birthday修改器 |
||||
|
protected function setpwdAttr($value){ |
||||
|
return md5($value); |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,7 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\model; |
||||
|
use think\Model; |
||||
|
class authRule extends Model |
||||
|
{ |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,17 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\validate; |
||||
|
|
||||
|
use think\Validate; |
||||
|
|
||||
|
class Admin extends Validate |
||||
|
{ |
||||
|
protected $rule = [ |
||||
|
'username' => 'require|length:2,25', |
||||
|
// 'email' =>'email' |
||||
|
]; |
||||
|
protected $message = [ |
||||
|
'username.require' => '用户名不能为空', |
||||
|
'username.length' => '用户名在2到25个字符之间', |
||||
|
// 'email.email' => '邮箱格式不正确', |
||||
|
]; |
||||
|
} |
||||
@ -0,0 +1,24 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\validate; |
||||
|
|
||||
|
use think\Validate; |
||||
|
|
||||
|
class Member extends Validate |
||||
|
{ |
||||
|
protected $rule = [ |
||||
|
['group_id', 'require', '会员所属用户组必须选择'], |
||||
|
['username', 'require', '用户名不能为空'], |
||||
|
['pwd', 'require|length:6,25', '登录密码不能为空|登录密码位数不能少于6位或者大于15位'], |
||||
|
['petname', 'require', '昵称不能为空'], |
||||
|
['tel', 'checkName:tel|unique:member', '手机号码格式不正确|该手机已注册'], |
||||
|
['email', 'email|unique:member', '邮箱格式不正确|该邮箱已注册'], |
||||
|
]; |
||||
|
// 自定义验证规则 |
||||
|
protected function checkName($value,$rule,$data){ |
||||
|
if(is_mobile_phone($value)){ |
||||
|
return true; |
||||
|
}else{ |
||||
|
return '手机号码格式不正确'; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
<?php |
||||
|
namespace app\admin\validate; |
||||
|
|
||||
|
use think\Validate; |
||||
|
|
||||
|
class Sys extends Validate |
||||
|
{ |
||||
|
protected $rule = [ |
||||
|
['sys_name', 'require', '站点名称不能为空!'], |
||||
|
['sys_url', 'require', '站点网址不能为空!'] |
||||
|
]; |
||||
|
} |
||||
@ -0,0 +1,124 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>{$title}</legend> |
||||
|
</fieldset> |
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">所属位置</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<select name="as_id" lay-verify="required" ng-model="selected" ng-options="v.as_id as v.name for v in group track by v.as_id"> |
||||
|
<option value="">请选择所属广告位</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">广告名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="title" ng-model="field.title" lay-verify="required" placeholder="{:lang('pleaseEnter')}广告名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">广告图片</label> |
||||
|
<input type="hidden" name="pic" id="pic" value="{{field.pic}}"> |
||||
|
<div class="layui-input-block"> |
||||
|
<div class="layui-upload"> |
||||
|
<button type="button" class="layui-btn layui-btn-primary" id="adBtn"><i class="icon icon-upload3"></i>点击上传</button> |
||||
|
<div class="layui-upload-list"> |
||||
|
<img class="layui-upload-img" id="adPic"> |
||||
|
<p id="demoText"></p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">{:lang('ad')}URL</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="url" ng-model="field.url" lay-verify="url" placeholder="{:lang('pleaseEnter')}{:lang('ad')}URL" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">是否审核</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<input type="radio" name="open" ng-model="field.open" ng-checked="field.open==1" ng-value="1" title="{:lang('open')}"> |
||||
|
<input type="radio" name="open" ng-model="field.open" ng-checked="field.open==0" ng-value="0" title="{:lang('close')}"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">{:lang('order')}</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="sort" ng-model="field.sort" value="" placeholder="从小到大排序" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item layui-form-text"> |
||||
|
<label class="layui-form-label">内容</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<textarea ng-model="field.content" placeholder="请输广告内容" name="content" class="layui-textarea"></textarea> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">{:lang('submit')}</button> |
||||
|
<a href="{:url('index')}" class="layui-btn layui-btn-primary">{:lang('back')}</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script src="/static/common/js/angular.min.js"></script> |
||||
|
<script> |
||||
|
var m = angular.module('hd',[]); |
||||
|
m.controller('ctrl',['$scope',function($scope) { |
||||
|
$scope.field = '{$info|raw}'!='null'?{$info|raw}:{as_id:'',id:'',name:'',url:'',open:1,sort:50,pic:'',content:''}; |
||||
|
$scope.group = {$adtypeList|raw}; |
||||
|
$scope.selected = {$selected|raw}; |
||||
|
layui.use(['form', 'layer','upload'], function () { |
||||
|
var form = layui.form, $ = layui.jquery, upload = layui.upload; |
||||
|
if($scope.field.pic){ |
||||
|
adPic.src = $scope.field.pic; |
||||
|
} |
||||
|
form.on('submit(submit)', function (data) { |
||||
|
// 提交到方法 默认为本身 |
||||
|
data.field.id = $scope.field.id; |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("", data.field, function (res) { |
||||
|
layer.close(loading); |
||||
|
if (res.code > 0) { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 1}, function () { |
||||
|
location.href = res.url; |
||||
|
}); |
||||
|
} else { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 2}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
//普通图片上传 |
||||
|
var uploadInst = upload.render({ |
||||
|
elem: '#adBtn' |
||||
|
,url: '{:url("UpFiles/upload")}' |
||||
|
,before: function(obj){ |
||||
|
//预读本地文件示例,不支持ie8 |
||||
|
obj.preview(function(index, file, result){ |
||||
|
$('#adPic').attr('src', result); //图片链接(base64) |
||||
|
}); |
||||
|
}, |
||||
|
done: function(res){ |
||||
|
if(res.code>0){ |
||||
|
$('#pic').val(res.url); |
||||
|
}else{ |
||||
|
//如果上传失败 |
||||
|
return layer.msg('上传失败'); |
||||
|
} |
||||
|
} |
||||
|
,error: function(){ |
||||
|
//演示失败状态,并实现重传 |
||||
|
var demoText = $('#demoText'); |
||||
|
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-mini demo-reload">重试</a>'); |
||||
|
demoText.find('.demo-reload').on('click', function(){ |
||||
|
uploadInst.upload(); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
}]); |
||||
|
</script> |
||||
@ -0,0 +1,133 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>{:lang('ad')}管理</legend> |
||||
|
</fieldset> |
||||
|
<div class="demoTable"> |
||||
|
<div class="layui-inline"> |
||||
|
<input class="layui-input" name="key" id="key" placeholder="{:lang('pleaseEnter')}关键字"> |
||||
|
</div> |
||||
|
<button class="layui-btn" id="search" data-type="reload">{:lang('search')}</button> |
||||
|
<a href="{:url('index')}" class="layui-btn">显示全部</a> |
||||
|
<button type="button" class="layui-btn layui-btn-danger" id="delAll">批量删除</button> |
||||
|
<a href="{:url('add')}" class="layui-btn" style="float:right;"><i class="fa fa-plus" aria-hidden="true"></i>{:lang('add')}{:lang('ad')}</a> |
||||
|
<div style="clear: both;"></div> |
||||
|
</div> |
||||
|
<table class="layui-table" id="list" lay-filter="list"></table> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script type="text/html" id="title"> |
||||
|
{{d.title}}{{# if(d.pic){ }}<img src="/static/admin/images/image.gif" onmouseover="layer.tips('<img src={{d.pic}}>',this,{tips: [1, '#fff']});" onmouseout="layer.closeAll();">{{# } }} |
||||
|
</script> |
||||
|
<script type="text/html" id="order"> |
||||
|
<input name="{{d.id}}" data-id="{{d.id}}" class="list_order layui-input" value=" {{d.sort}}" size="10"/> |
||||
|
</script> |
||||
|
<script type="text/html" id="open"> |
||||
|
<input type="checkbox" name="open" value="{{d.id}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="open" {{ d.open == 1 ? 'checked' : '' }}> |
||||
|
</script> |
||||
|
<script type="text/html" id="action"> |
||||
|
<a href="{:url('edit')}?id={{d.id}}" class="layui-btn layui-btn-xs">编辑</a> |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> |
||||
|
</script> |
||||
|
<script> |
||||
|
layui.use(['table','form'], function() { |
||||
|
var table = layui.table,form = layui.form,$ = layui.jquery; |
||||
|
var tableIn = table.render({ |
||||
|
id: 'ad', |
||||
|
elem: '#list', |
||||
|
url: '{:url("index")}', |
||||
|
method: 'post', |
||||
|
page:true, |
||||
|
cols: [[ |
||||
|
{checkbox: true, fixed: true}, |
||||
|
{field: 'id', title: '{:lang("id")}', width: 80, fixed: true}, |
||||
|
{field: 'title', title: '广告名称', width: 400,templet: '#title'}, |
||||
|
{field: 'typename', title: '所属位置', width: 160}, |
||||
|
{field: 'addtime', title: '{:lang("add")}{:lang("time")}',width: 150}, |
||||
|
{field: 'sort', align: 'center', title: '{:lang("order")}', width: 120, templet: '#order'}, |
||||
|
{field: 'open', align: 'center', title: '{:lang("status")}', width: 100, toolbar: '#open'}, |
||||
|
{width: 160, align: 'center', toolbar: '#action'} |
||||
|
]], |
||||
|
limit:10 |
||||
|
}); |
||||
|
form.on('switch(open)', function(obj){ |
||||
|
loading =layer.load(1, {shade: [0.1,'#fff']}); |
||||
|
var id = this.value; |
||||
|
var open = obj.elem.checked===true?1:0; |
||||
|
$.post('{:url("editState")}',{'id':id,'open':open},function (res) { |
||||
|
layer.close(loading); |
||||
|
if (res.status==1) { |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg(res.msg,{time:1000,icon:2}); |
||||
|
return false; |
||||
|
} |
||||
|
}) |
||||
|
}); |
||||
|
//搜索 |
||||
|
$('#search').on('click', function () { |
||||
|
var key = $('#key').val(); |
||||
|
if ($.trim(key) === '') { |
||||
|
layer.msg('{:lang("pleaseEnter")}关键字!', {icon: 0}); |
||||
|
return; |
||||
|
} |
||||
|
tableIn.reload({ page: {page: 1}, where: {key: key}}); |
||||
|
}); |
||||
|
table.on('tool(list)', function(obj) { |
||||
|
var data = obj.data; |
||||
|
if (obj.event === 'del'){ |
||||
|
layer.confirm('您确定要删除该广告吗?', function(index){ |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('del')}",{id:data.id},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code===1){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg('操作失败!',{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
$('body').on('blur','.list_order',function() { |
||||
|
var id = $(this).attr('data-id'); |
||||
|
var sort = $(this).val(); |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post('{:url("adOrder")}',{id:id,sort:sort},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code === 1){ |
||||
|
layer.msg(res.msg, {time: 1000, icon: 1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg(res.msg,{time:1000,icon:2}); |
||||
|
} |
||||
|
}) |
||||
|
}); |
||||
|
$('#delAll').click(function(){ |
||||
|
layer.confirm('确认要删除选中的广告吗?', {icon: 3}, function(index) { |
||||
|
layer.close(index); |
||||
|
var checkStatus = table.checkStatus('ad'); //test即为参数id设定的值 |
||||
|
var ids = []; |
||||
|
$(checkStatus.data).each(function (i, o) { |
||||
|
ids.push(o.id); |
||||
|
}); |
||||
|
if(ids==''){ |
||||
|
layer.msg('请选择要删除的数据!', {time: 1000, icon: 2}); |
||||
|
return false; |
||||
|
} |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('delall')}", {ids: ids}, function (data) { |
||||
|
layer.close(loading); |
||||
|
if (data.code === 1) { |
||||
|
layer.msg(data.msg, {time: 1000, icon: 1}); |
||||
|
tableIn.reload(); |
||||
|
} else { |
||||
|
layer.msg(data.msg, {time: 1000, icon: 2}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
}) |
||||
|
}) |
||||
|
</script> |
||||
@ -0,0 +1,85 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>{:lang('ad')}位管理</legend> |
||||
|
</fieldset> |
||||
|
<div class="demoTable"> |
||||
|
<div class="layui-inline"> |
||||
|
<input class="layui-input" name="key" id="key" placeholder="{:lang('pleaseEnter')}关键字"> |
||||
|
</div> |
||||
|
<button class="layui-btn" id="search" data-type="reload">{:lang('search')}</button> |
||||
|
<a href="{:url('type')}" class="layui-btn">显示全部</a> |
||||
|
<a href="{:url('addType')}" class="layui-btn" style="float:right;"><i class="fa fa-plus" aria-hidden="true"></i>{:lang('add')}{:lang('ad')}位</a> |
||||
|
<div style="clear: both;"></div> |
||||
|
</div> |
||||
|
<table class="layui-table" id="list" lay-filter="list"></table> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script type="text/html" id="order"> |
||||
|
<input name="{{d.as_id}}" data-id="{{d.as_id}}" class="list_order layui-input" value=" {{d.sort}}" size="10"/> |
||||
|
</script> |
||||
|
<script type="text/html" id="action"> |
||||
|
<a href="{:url('editType')}?as_id={{d.as_id}}" class="layui-btn layui-btn-xs">编辑</a> |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> |
||||
|
</script> |
||||
|
<script> |
||||
|
layui.use('table', function() { |
||||
|
var table = layui.table, $ = layui.jquery; |
||||
|
var tableIn = table.render({ |
||||
|
id: 'type', |
||||
|
elem: '#list', |
||||
|
url: '{:url("type")}', |
||||
|
method: 'post', |
||||
|
cols: [[ |
||||
|
{field: 'as_id', title: '{:lang("id")}', width: 80, fixed: true, sort: true}, |
||||
|
{field: 'name', title: '广告位名称', width: 400, templet: '#name'}, |
||||
|
{field: 'sort', align: 'center', title: '{:lang("order")}', width: 120, templet: '#order', sort: true}, |
||||
|
{width: 160, align: 'center', toolbar: '#action'} |
||||
|
]] |
||||
|
}); |
||||
|
//搜索 |
||||
|
$('#search').on('click', function () { |
||||
|
var key = $('#key').val(); |
||||
|
if ($.trim(key) === '') { |
||||
|
layer.msg('{:lang("pleaseEnter")}关键字!', {icon: 0}); |
||||
|
return; |
||||
|
} |
||||
|
tableIn.reload({ |
||||
|
where: {key: key} |
||||
|
}); |
||||
|
}); |
||||
|
//排序 |
||||
|
$('body').on('blur','.list_order',function() { |
||||
|
var as_id = $(this).attr('data-id'); |
||||
|
var sort = $(this).val(); |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post('{:url("typeOrder")}',{as_id:as_id,sort:sort},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code === 1){ |
||||
|
layer.msg(res.msg, {time: 1000, icon: 1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg(res.msg,{time:1000,icon:2}); |
||||
|
} |
||||
|
}) |
||||
|
}); |
||||
|
table.on('tool(list)', function(obj) { |
||||
|
var data = obj.data; |
||||
|
if(obj.event === 'del'){ |
||||
|
layer.confirm('您确定要删除该广告分类吗?', function(index){ |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('delType')}",{as_id:data.as_id},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code===1){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg('操作失败!',{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
@ -0,0 +1,53 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>{$title}</legend> |
||||
|
</fieldset> |
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">广告位名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="name" ng-model="field.name" lay-verify="required" placeholder="{:lang('pleaseEnter')}广告位名称" class="layui-input"> |
||||
|
</div> |
||||
|
<div class="layui-form-mid layui-word-aux">建议格式: 【首页】顶部通栏</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">{:lang('order')}</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="sort" ng-model="field.sort" value="" placeholder="从小到大排序" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">{:lang('submit')}</button> |
||||
|
<a href="{:url('type')}" class="layui-btn layui-btn-primary">{:lang('back')}</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script src="/static/common/js/angular.min.js"></script> |
||||
|
<script> |
||||
|
var m = angular.module('hd',[]); |
||||
|
m.controller('ctrl',['$scope',function($scope) { |
||||
|
$scope.field = '{$info|raw}'!='null'?{$info|raw}:{as_id:'',name:'',sort:50}; |
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, $ = layui.jquery; |
||||
|
form.on('submit(submit)', function (data) { |
||||
|
// 提交到方法 默认为本身 |
||||
|
data.field.as_id = $scope.field.as_id; |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("", data.field, function (res) { |
||||
|
layer.close(loading); |
||||
|
if (res.code > 0) { |
||||
|
layer.msg(res.msg, {time: 1000, icon: 1}, function () { |
||||
|
location.href = res.url; |
||||
|
}); |
||||
|
} else { |
||||
|
layer.msg(res.msg, {time: 1000, icon: 2}); |
||||
|
} |
||||
|
}); |
||||
|
}) |
||||
|
}); |
||||
|
}]); |
||||
|
</script> |
||||
@ -0,0 +1,144 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>{$title}</legend> |
||||
|
</fieldset> |
||||
|
<form class="layui-form layui-form-pane" lay-filter="form"> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">所属用户组</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<select name="group_id" lay-verify="required"> |
||||
|
<option value="">请选择用户组</option> |
||||
|
{volist name="authGroup" id="vo"} |
||||
|
<option value="{$vo.group_id}">{$vo.title}</option> |
||||
|
{/volist} |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- <div class="layui-form-item">--> |
||||
|
<!-- <label class="layui-form-label">业绩月目标</label>--> |
||||
|
<!-- <div class="layui-input-4">--> |
||||
|
<!-- <input type="text" name="mubiao" lay-verify="required" placeholder="月目标金额" class="layui-input">--> |
||||
|
<!-- </div>--> |
||||
|
<!-- </div>--> |
||||
|
<!-- <div class="layui-form-item">--> |
||||
|
<!-- <label class="layui-form-label">提成点</label>--> |
||||
|
<!-- <div class="layui-input-4">--> |
||||
|
<!-- <input type="text" name="ticheng" lay-verify="required" placeholder="提成点" class="layui-input">--> |
||||
|
<!-- </div>--> |
||||
|
<!-- </div>--> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">{:lang('username')}</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="username" lay-verify="required" placeholder="{:lang('pleaseEnter')}登录用户名" class="layui-input"> |
||||
|
</div> |
||||
|
<div class="layui-form-mid layui-word-aux"> |
||||
|
用户名在4到25个字符之间。 |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">{:lang('pwd')}</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="password" name="pwd" placeholder="{:lang('pleaseEnter')}登录密码" {if condition="ACTION_NAME eq 'adminadd'"}lay-verify="required"{/if} class="layui-input"> |
||||
|
</div> |
||||
|
<div class="layui-form-mid layui-word-aux"> |
||||
|
密码必须大于6位,小于15位。 |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">头像</label> |
||||
|
<input type="hidden" name="avatar" id="avatar"> |
||||
|
<div class="layui-input-block"> |
||||
|
<div class="layui-upload"> |
||||
|
<button type="button" class="layui-btn layui-btn-primary" id="adBtn"><i class="icon icon-upload3"></i>点击上传</button> |
||||
|
<div class="layui-upload-list"> |
||||
|
<img class="layui-upload-img" id="adPic"> |
||||
|
<p id="demoText"></p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- <div class="layui-form-item">--> |
||||
|
<!-- <label class="layui-form-label">{:lang('email')}</label>--> |
||||
|
<!-- <div class="layui-input-4">--> |
||||
|
<!-- <input type="text" name="email" lay-verify="email" placeholder="{:lang('pleaseEnter')}用户邮箱" class="layui-input">--> |
||||
|
<!-- </div>--> |
||||
|
<!-- <div class="layui-form-mid layui-word-aux">--> |
||||
|
<!-- 用于密码找回,请认真填写。--> |
||||
|
<!-- </div>--> |
||||
|
<!-- </div>--> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">{:lang('tel')}</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="tel" lay-verify="phone" value="" placeholder="{:lang('pleaseEnter')}手机号" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户数上限</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text"name="custlimit" lay-verify="number" placeholder="{:lang('pleaseEnter')}客户数上限" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<input type="hidden" name="admin_id"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">{:lang('submit')}</button> |
||||
|
<a href="{:url('adminList')}" class="layui-btn layui-btn-primary">{:lang('back')}</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script> |
||||
|
layui.use(['form', 'layer','upload'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery,upload = layui.upload; |
||||
|
var info = {$info|raw}; |
||||
|
form.val("form", info); |
||||
|
if(info){ |
||||
|
$('#adPic').attr('src',info.avatar); |
||||
|
} |
||||
|
form.render(); |
||||
|
form.on('submit(submit)', function (data) { |
||||
|
loading =layer.load(1, {shade: [0.1,'#fff']}); |
||||
|
$.post("", data.field, function (res) { |
||||
|
layer.close(loading); |
||||
|
if (res.code > 0) { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 1}, function () { |
||||
|
location.href = res.url; |
||||
|
}); |
||||
|
} else { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 2}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
//普通图片上传 |
||||
|
var uploadInst = upload.render({ |
||||
|
elem: '#adBtn' |
||||
|
,url: '{:url("UpFiles/upload")}' |
||||
|
,before: function(obj){ |
||||
|
//预读本地文件示例,不支持ie8 |
||||
|
obj.preview(function(index, file, result){ |
||||
|
$('#adPic').attr('src', result); //图片链接(base64) |
||||
|
}); |
||||
|
}, |
||||
|
done: function(res){ |
||||
|
if(res.code>0){ |
||||
|
$('#avatar').val(res.url); |
||||
|
}else{ |
||||
|
//如果上传失败 |
||||
|
return layer.msg('上传失败'); |
||||
|
} |
||||
|
} |
||||
|
,error: function(){ |
||||
|
//演示失败状态,并实现重传 |
||||
|
var demoText = $('#demoText'); |
||||
|
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-mini demo-reload">重试</a>'); |
||||
|
demoText.find('.demo-reload').on('click', function(){ |
||||
|
uploadInst.upload(); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
@ -0,0 +1,56 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>用户组列表</legend> |
||||
|
</fieldset> |
||||
|
<table class="layui-table" id="list" lay-filter="list"></table> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script type="text/html" id="action"> |
||||
|
<a href="{:url('groupAccess')}?id={{d.group_id}}" class="layui-btn layui-btn-xs layui-btn-normal">配置规则</a> |
||||
|
<a href="{:url('groupEdit')}?id={{d.group_id}}" class="layui-btn layui-btn-warm layui-btn-xs">{:lang('edit')}</a> |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">{:lang('del')}</a> |
||||
|
</script> |
||||
|
<script type="text/html" id="topBtn"> |
||||
|
<a href="{:url('groupAdd')}" class="layui-btn layui-btn-sm">{:lang('add')}用户组</a> |
||||
|
</script> |
||||
|
<script> |
||||
|
|
||||
|
layui.use('table', function() { |
||||
|
var table = layui.table,$ = layui.jquery; |
||||
|
table.render({ |
||||
|
elem: '#list', |
||||
|
url: '{:url("adminGroup")}', |
||||
|
method:'post', |
||||
|
toolbar: '#topBtn', |
||||
|
title:'用户组列表', |
||||
|
cols: [[ |
||||
|
{field:'group_id', title: '{:lang("id")}',width:80, fixed: true,sort: true}, |
||||
|
{field:'title', title: '用户组名', width:180}, |
||||
|
{field:'addtime', title: '添加时间', width:200,sort: true}, |
||||
|
{width:260, align:'center',toolbar:'#action'} |
||||
|
]] |
||||
|
}); |
||||
|
table.on('tool(list)', function(obj){ |
||||
|
var data = obj.data; |
||||
|
if(obj.event === 'del'){ |
||||
|
layer.confirm('你确定要删除该分组吗?', function(index){ |
||||
|
loading =layer.load(1, {shade: [0.1,'#fff']}); |
||||
|
$.post("{:url('groupDel')}",{id:data.group_id},function(res){ |
||||
|
layer.close(loading); |
||||
|
layer.close(index); |
||||
|
if(res.code==1){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1}); |
||||
|
obj.del(); |
||||
|
}else{ |
||||
|
layer.msg(res.msg,{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,87 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>{:lang('admin')}{:lang('list')}</legend> |
||||
|
</fieldset> |
||||
|
<table class="layui-table" id="list" lay-filter="list"></table> |
||||
|
</div> |
||||
|
|
||||
|
{include file="common/foot"/} |
||||
|
<script type="text/html" id="barDemo"> |
||||
|
<a href="{:url('adminEdit')}?admin_id={{d.admin_id}}" class="layui-btn layui-btn-xs">{:lang('edit')}</a> |
||||
|
{{# if(d.admin_id==1){ }} |
||||
|
<a href="#" class="layui-btn layui-btn-xs layui-btn-disabled">{:lang('del')}</a> |
||||
|
{{# }else{ }} |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">{:lang('del')}</a> |
||||
|
{{# } }} |
||||
|
</script> |
||||
|
<script type="text/html" id="open"> |
||||
|
{{# if(d.admin_id==1){ }} |
||||
|
<input type="checkbox" disabled name="is_open" value="{{d.admin_id}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="open" checked> |
||||
|
{{# }else{ }} |
||||
|
<input type="checkbox" name="is_open" value="{{d.admin_id}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="open" {{ d.is_open == 1 ? 'checked' : '' }}> |
||||
|
{{# } }} |
||||
|
</script> |
||||
|
|
||||
|
<script type="text/html" id="topBtn"> |
||||
|
<a href="{:url('adminAdd')}" class="layui-btn layui-btn-sm">{:lang('add')}{:lang('admin')}</a> |
||||
|
</script> |
||||
|
<script> |
||||
|
layui.use(['table','form'], function() { |
||||
|
var table = layui.table,form = layui.form,$ = layui.jquery; |
||||
|
var tableIn = table.render({ |
||||
|
elem: '#list', |
||||
|
url: '{:url("adminList")}', |
||||
|
method:'post', |
||||
|
toolbar: '#topBtn', |
||||
|
title:'{:lang("admin")}{:lang("list")}', |
||||
|
cols: [[ |
||||
|
{field:'admin_id', title: '编号', width:60,fixed: true} |
||||
|
,{field:'username', title: '用户名', width:120} |
||||
|
,{field:'title', title: '{:lang("userGroup")}', width:200} |
||||
|
,{field:'lrnum', title: '录入数', width:80} |
||||
|
,{field:'slrnum', title: '剩余数', width:80} |
||||
|
// ,{field:'email', title: '邮箱', width:200} |
||||
|
//,{field: 'mubiao', title: '业绩月目标', width: 200} |
||||
|
//,{field: 'ticheng', title: '提成点%', width: 200} |
||||
|
,{field:'tel', title: '{:lang("tel")}', width:150} |
||||
|
,{field:'ip', title: '{:lang("ip")}',width:150,hide:true} |
||||
|
,{field:'is_open', title: '{:lang("status")}',width:150,toolbar: '#open'} |
||||
|
,{width:160, align:'center', toolbar: '#barDemo'} |
||||
|
]] |
||||
|
}); |
||||
|
form.on('switch(open)', function(obj){ |
||||
|
loading =layer.load(1, {shade: [0.1,'#fff']}); |
||||
|
var id = this.value; |
||||
|
var is_open = obj.elem.checked===true?1:0; |
||||
|
$.post('{:url("adminState")}',{'id':id,'is_open':is_open},function (res) { |
||||
|
layer.close(loading); |
||||
|
if (res.status==1) { |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg(res.msg,{time:1000,icon:2}); |
||||
|
return false; |
||||
|
} |
||||
|
}) |
||||
|
}); |
||||
|
table.on('tool(list)', function(obj){ |
||||
|
var data = obj.data; |
||||
|
if(obj.event === 'del'){ |
||||
|
layer.confirm('{:lang("Are you sure you want to delete it")}', function(index){ |
||||
|
$.post("{:url('adminDel')}",{admin_id:data.admin_id},function(res){ |
||||
|
if(res.code==1){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1}); |
||||
|
obj.del(); |
||||
|
}else{ |
||||
|
layer.msg(res.msg,{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,16 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>权限{:lang('list')}</legend> |
||||
|
</fieldset> |
||||
|
<blockquote class="layui-elem-quote"> |
||||
|
|
||||
|
<a class="layui-btn layui-btn-sm layui-btn-danger">尊敬的vip请5星+10字好评后开启权限页面!技术微信17501005354</a> |
||||
|
|
||||
|
</blockquote> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
|
||||
@ -0,0 +1,46 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main fadeInUp animated" ng-app="hd" ng-controller="ctrl"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>{$title}</legend> |
||||
|
</fieldset> |
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">用户组名</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="title" ng-model="field.title" lay-verify="required" placeholder="{:lang('pleaseEnter')}用户组名" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">{:lang('submit')}</button> |
||||
|
<a href="{:url('adminGroup')}" class="layui-btn layui-btn-primary">{:lang('back')}</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script src="/static/common/js/angular.min.js"></script> |
||||
|
<script> |
||||
|
var m = angular.module('hd',[]); |
||||
|
m.controller('ctrl',['$scope',function($scope) { |
||||
|
$scope.field = '{$info|raw}'!='null'?{$info|raw}:{title:''}; |
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
form.on('submit(submit)', function (data) { |
||||
|
loading = layer.load(1,{shade:[0.1,'#fff']}); |
||||
|
// 提交到方法 默认为本身 |
||||
|
data.field.group_id = $scope.field.group_id; |
||||
|
$.post("", data.field, function (res) { |
||||
|
layer.close(loading); |
||||
|
if (res.code > 0) { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 1}, function () { |
||||
|
location.href = res.url; |
||||
|
}); |
||||
|
} else { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 2}); |
||||
|
} |
||||
|
}); |
||||
|
}) |
||||
|
}); |
||||
|
}]); |
||||
|
</script> |
||||
@ -0,0 +1,62 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<link rel="stylesheet" href="/static/plugins/zTree/css/zTreeStyle.css" type="text/css"> |
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
<fieldset class="layui-elem-field"> |
||||
|
<legend>配置权限</legend> |
||||
|
<div class="layui-field-box"> |
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
<ul id="treeDemo" class="ztree"></ul> |
||||
|
<div class="layui-form-item text-center"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">{:lang('submit')}</button> |
||||
|
<button class="layui-btn layui-btn-danger" type="button" onclick="window.history.back()">{:lang('back')}</button> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
</fieldset> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script type="text/javascript" src="/static/common/js/jquery.2.1.1.min.js"></script> |
||||
|
<script type="text/javascript" src="/static/plugins/zTree/js/jquery.ztree.core.min.js"></script> |
||||
|
<script type="text/javascript" src="/static/plugins/zTree/js/jquery.ztree.excheck.min.js"></script> |
||||
|
<script type="text/javascript"> |
||||
|
var setting = { |
||||
|
check:{enable: true}, |
||||
|
view: {showLine: false, showIcon: false, dblClickExpand: false}, |
||||
|
data: { |
||||
|
simpleData: {enable: true, pIdKey:'pid', idKey:'id'}, |
||||
|
key:{name:'title'} |
||||
|
} |
||||
|
}; |
||||
|
var zNodes ={$data|raw}; |
||||
|
function setCheck() { |
||||
|
var zTree = $.fn.zTree.getZTreeObj("treeDemo"); |
||||
|
zTree.setting.check.chkboxType = { "Y":"ps", "N":"ps"}; |
||||
|
|
||||
|
} |
||||
|
$.fn.zTree.init($("#treeDemo"), setting, zNodes); |
||||
|
setCheck(); |
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer; |
||||
|
form.on('submit(submit)', function () { |
||||
|
loading =layer.load(1, {shade: [0.1,'#fff']}); |
||||
|
// 提交到方法 默认为本身 |
||||
|
var treeObj=$.fn.zTree.getZTreeObj("treeDemo"), |
||||
|
nodes=treeObj.getCheckedNodes(true), |
||||
|
v=""; |
||||
|
for(var i=0;i<nodes.length;i++){ |
||||
|
v+=nodes[i].id + ","; |
||||
|
} |
||||
|
var id = "{:input('id')}"; |
||||
|
$.post("{:url('groupSetaccess')}", {'rules':v,'group_id':id}, function (res) { |
||||
|
layer.close(loading); |
||||
|
if (res.code > 0) { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 1}, function () { |
||||
|
location.href = res.url; |
||||
|
}); |
||||
|
} else { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 2}); |
||||
|
} |
||||
|
}); |
||||
|
}) |
||||
|
}); |
||||
|
</script> |
||||
@ -0,0 +1,78 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div style="margin: 15px;" class="fadeInUp animated"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>添加权限</legend> |
||||
|
</fieldset> |
||||
|
<blockquote class="layui-elem-quote"> |
||||
|
1、《控/方》:意思是 控制器/方法; 例如 Sys/sysList<br/> |
||||
|
2、图标名称为左侧导航栏目的图标样式,具体可查看<a href="https://icomoon.io/app/#/select" target="_blank">premium</a>图标 |
||||
|
</blockquote> |
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">父级</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<select name="pid" lay-verify="required" lay-filter="pid" > |
||||
|
<option value="0">默认顶级</option> |
||||
|
{volist name="admin_rule" id="vo"} |
||||
|
<option value="{$vo.id}">{$vo.lefthtml}{$vo.title}</option> |
||||
|
{/volist} |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">权限名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="title" lay-verify="required" placeholder="{:lang('pleaseEnter')}权限名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">控制器/方法</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="href" lay-verify="required" placeholder="{:lang('pleaseEnter')}控制器/方法" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">图标名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="icon" placeholder="{:lang('pleaseEnter')}图标名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">菜单状态</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<input type="radio" name="menustatus" lay-filter="menustatus" checked value="1" title="开启"> |
||||
|
<input type="radio" name="menustatus" lay-filter="menustatus" value="0" title="关闭"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">排序</label> |
||||
|
<div class="layui-input-2"> |
||||
|
<input type="text" name="sort" value="50" placeholder="{:lang('pleaseEnter')}排序编号" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="auth">立即提交</button> |
||||
|
<a href="{:url('adminRule')}" class="layui-btn layui-btn-primary">返回</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script> |
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form,layer = layui.layer,$= layui.jquery; |
||||
|
form.on('submit(auth)', function (data) { |
||||
|
// 提交到方法 默认为本身 |
||||
|
$.post("{:url('ruleAdd')}",data.field,function(res){ |
||||
|
if(res.code > 0){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1},function(){ |
||||
|
location.href = res.url; |
||||
|
}); |
||||
|
}else{ |
||||
|
layer.msg(res.msg,{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
}) |
||||
|
}); |
||||
|
</script> |
||||
@ -0,0 +1,70 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>编辑权限</legend> |
||||
|
</fieldset> |
||||
|
<blockquote class="layui-elem-quote"> |
||||
|
1、《控/方》:意思是 控制器/方法; 例如 Sys/sysList<br/> |
||||
|
2、图标名称为左侧导航栏目的图标样式,具体可查看<a href="https://icomoon.io/app/#/select" target="_blank">premium</a>图标 |
||||
|
</blockquote> |
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
<input type="hidden" name="id" value="{$rule.id}"> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">权限名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="title" value="{$rule.title}" lay-verify="required" placeholder="{:lang('pleaseEnter')}权限名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">控制器/方法</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="href" value="{$rule.href}" lay-verify="required" placeholder="{:lang('pleaseEnter')}控制器/方法" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">图标名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="icon" value="{$rule.icon}" placeholder="{:lang('pleaseEnter')}图标名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">菜单状态</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<input type="radio" name="menustatus" {if condition="$rule['menustatus'] eq 1"}checked{/if} value="1" title="开启"> |
||||
|
<input type="radio" name="menustatus" {if condition="$rule['menustatus'] eq 0"}checked{/if} value="0" title="关闭"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">排序</label> |
||||
|
<div class="layui-input-2"> |
||||
|
<input type="text" name="sort" value="{$rule.sort}" placeholder="{:lang('pleaseEnter')}排序编号" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="auth">立即提交</button> |
||||
|
<a href="{:url('adminRule')}" class="layui-btn layui-btn-primary">返回</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script> |
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form,layer = layui.layer,$ = layui.jquery; |
||||
|
form.on('submit(auth)', function (data) { |
||||
|
// 提交到方法 默认为本身 |
||||
|
$.post("{:url('ruleEdit')}",data.field,function(res){ |
||||
|
if(res.code > 0){ |
||||
|
layer.msg(res.msg,{time:1800,icon:1},function(){ |
||||
|
location.href = res.url; |
||||
|
}); |
||||
|
}else{ |
||||
|
layer.msg(res.msg,{time:1800,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
}) |
||||
|
}) |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,235 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main fadeInUp animated"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>{$title}</legend> |
||||
|
</fieldset> |
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">请选择模型</label> |
||||
|
<div class="layui-input-3"> |
||||
|
<select name="moduleid" lay-verify="required" lay-filter="moduleid" id="moduleid"> |
||||
|
{volist name="modulelist" id="vo"} |
||||
|
{if (isset($module['moduleid']))} |
||||
|
<option value="{$vo.id}" {if condition="$module['moduleid'] eq $vo['id']"}selected{/if}>{$vo.title}</option> |
||||
|
{else /} |
||||
|
<option value="{$vo.id}" >{$vo.title}</option> |
||||
|
{/if} |
||||
|
{/volist} |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">上级栏目</label> |
||||
|
<div class="layui-input-3"> |
||||
|
<select name="pid" id="pid"> |
||||
|
<option value="">作为一级栏目</option> |
||||
|
{$categorys|raw} |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">栏目名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="catname" lay-verify="required" placeholder="{:lang('pleaseEnter')}栏目名称" class="layui-input"> |
||||
|
</div> |
||||
|
<div class="layui-form-mid layui-word-aux red">*</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">栏目目录</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="catdir" placeholder="{:lang('pleaseEnter')}栏目目录" lay-verify="required" class="layui-input"> |
||||
|
</div> |
||||
|
<div class="layui-form-mid layui-word-aux red">*</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">栏目图片</label> |
||||
|
<input type="hidden" name="image" id="image"> |
||||
|
<div class="layui-input-block"> |
||||
|
<div class="layui-upload"> |
||||
|
<button type="button" class="layui-btn layui-btn-primary" id="cateBtn"><i class="icon icon-upload3"></i>点击上传</button> |
||||
|
<div class="layui-upload-list"> |
||||
|
<img class="layui-upload-img" id="cateImage"> |
||||
|
<p id="demoText"></p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">SEO标题</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<input type="text" name="title" placeholder="{:lang('pleaseEnter')}SEO标题" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item layui-form-text"> |
||||
|
<label class="layui-form-label">SEO关键字</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<textarea placeholder="{:lang('pleaseEnter')}SEO关键字" name="keywords" class="layui-textarea"></textarea> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item layui-form-text"> |
||||
|
<label class="layui-form-label">SEO描述</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<textarea placeholder="{:lang('pleaseEnter')}SEO描述" name="description" class="layui-textarea"></textarea> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">多栏目设置</label> |
||||
|
<div class="layui-input-1"> |
||||
|
<input type="checkbox" name="child" value="1" lay-skin="switch" title="多栏目设置"> |
||||
|
</div> |
||||
|
<div class="layui-form-mid layui-word-aux">打开后,其下将不能添加内容。</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">导航</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<input type="radio" name="ismenu" lay-filter="is_open" checked value="1" title="{:lang('yes')}"> |
||||
|
<input type="radio" name="ismenu" lay-filter="is_open" value="0" title="{:lang('no')}"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">预览</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<input type="radio" name="is_show" lay-filter="is_show" checked value="1" title="开启"> |
||||
|
<input type="radio" name="is_show" lay-filter="is_show" value="0" checked title="关闭"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">访问权限</label> |
||||
|
<div class="layui-input-block"> |
||||
|
{volist name="rlist" id="item" key="i"} |
||||
|
<input type="checkbox" name="readgroup[{$i}]" value="{$item.group_id}" title="{$item.title}"> |
||||
|
{/volist} |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label">分页条数</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<input type="number" name="pagesize" class="layui-input"> |
||||
|
</div> |
||||
|
<div class="layui-form-mid layui-word-aux">为空时默认值为系统设置的值</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item tlist"> |
||||
|
<label class="layui-form-label">列表页模板</label> |
||||
|
<div class="layui-input-3"> |
||||
|
<select name="template_list" id="template_list"> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">内容页模板</label> |
||||
|
<div class="layui-input-3"> |
||||
|
<select name="template_show" id="template_show"> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">{:lang('submit')}</button> |
||||
|
<a href="{:url('index')}" class="layui-btn layui-btn-primary">{:lang('back')}</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script src="/static/common/js/jquery.2.1.1.min.js"></script> |
||||
|
<script> |
||||
|
var modulearr = new Array(); |
||||
|
{volist name="modulelist" id="mdate"} |
||||
|
modulearr[{$mdate['id']}] = "{$mdate['name']}"; |
||||
|
{/volist} |
||||
|
var templatearr = new Array(); |
||||
|
{volist name="templates" id="tem"} |
||||
|
templatearr[{$i}] = "{$tem['value']},{$tem['filename']}"; |
||||
|
{/volist} |
||||
|
|
||||
|
|
||||
|
var datas = "<option value=''>请选择</option>"; |
||||
|
var moduleid = $('#moduleid').val(); |
||||
|
var image = ''; |
||||
|
|
||||
|
layui.use(['form','upload'], function () { |
||||
|
var form = layui.form,upload = layui.upload; |
||||
|
//普通图片上传 |
||||
|
var uploadInst = upload.render({ |
||||
|
elem: '#cateBtn', |
||||
|
url: '{:url("UpFiles/upload")}', |
||||
|
done: function(res){ |
||||
|
if(res.code>0){ |
||||
|
$('#image').val(res.url); |
||||
|
$('#cateImage').attr('src', res.url); |
||||
|
}else{ |
||||
|
//如果上传失败 |
||||
|
return layer.msg('上传失败'); |
||||
|
} |
||||
|
}, |
||||
|
error: function(){ |
||||
|
//演示失败状态,并实现重传 |
||||
|
var demoText = $('#demoText'); |
||||
|
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-mini demo-reload">重试</a>'); |
||||
|
demoText.find('.demo-reload').on('click', function(){ |
||||
|
uploadInst.upload(); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
form.on('submit(submit)', function (data) { |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('insert')}", data.field, function (res) { |
||||
|
layer.close(loading); |
||||
|
if (res.code > 0) { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 1}, function () { |
||||
|
location.href = res.url; |
||||
|
}); |
||||
|
} else { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 2}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
form.on('select(moduleid)', function(data){ |
||||
|
showtemplist(data.value,0,form); |
||||
|
}); |
||||
|
}); |
||||
|
function showtemplist(m,t,form){ |
||||
|
var type='_list'; |
||||
|
if(t){ |
||||
|
type='_index'; |
||||
|
} |
||||
|
var mtlist = modulearr[m]+type; |
||||
|
var mtshow = modulearr[m]+'_show'; |
||||
|
|
||||
|
if(modulearr[m]=='page'){ |
||||
|
$('.tlist').hide(); |
||||
|
mtlist=mtshow ='page'; |
||||
|
}else{ |
||||
|
$('.tlist').show(); |
||||
|
} |
||||
|
|
||||
|
if(modulearr[m]=='page'){ |
||||
|
mtlist=mtshow ='page'; |
||||
|
} |
||||
|
$('#template_list').html(datas); |
||||
|
$('#template_show').html(datas); |
||||
|
|
||||
|
listdatas = showdatas =''; |
||||
|
for(i=1;i<templatearr.length;i++){ |
||||
|
data = templatearr[i].split(','); |
||||
|
if(data[0].indexOf(mtlist) >= 0){ |
||||
|
listdatas ="<option value='"+data[0]+"'>"+data[1]+"</option>"; |
||||
|
$('#template_list').append(listdatas); |
||||
|
} |
||||
|
if(data[0].indexOf(mtshow) >= 0){ |
||||
|
showdatas ="<option value='"+data[0]+"'>"+data[1]+"</option>"; |
||||
|
$('#template_show').append(showdatas); |
||||
|
} |
||||
|
} |
||||
|
if(form){ |
||||
|
form.render() |
||||
|
} |
||||
|
} |
||||
|
showtemplist(moduleid,{if condition="empty($record['listtype'])"}0{else /}{$record.listtype}{/if}); |
||||
|
</script> |
||||
@ -0,0 +1,237 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main fadeInUp animated"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>{$title}</legend> |
||||
|
</fieldset> |
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
<input TYPE="hidden" name="id" value="{$record.id}"> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">请选择模型</label> |
||||
|
<div class="layui-input-3"> |
||||
|
<select name="moduleid" lay-verify="required" lay-filter="moduleid" id="moduleid"> |
||||
|
{volist name="modulelist" id="vo"} |
||||
|
<option value="{$vo.id}" {if condition="$module eq $vo['id']"}selected{/if}>{$vo.title}</option> |
||||
|
{/volist} |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">上级栏目</label> |
||||
|
<div class="layui-input-3"> |
||||
|
<select name="pid" id="pid"> |
||||
|
<option value="">作为一级栏目</option> |
||||
|
{$categorys|raw} |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">栏目名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="catname" lay-verify="required" value="{$record.catname}" placeholder="{:lang('pleaseEnter')}栏目名称" class="layui-input"> |
||||
|
</div> |
||||
|
<div class="layui-form-mid layui-word-aux red">*</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">栏目目录</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="catdir" lay-verify="required" value="{$record.catdir}" placeholder="{:lang('pleaseEnter')}栏目目录" class="layui-input"> |
||||
|
</div> |
||||
|
<div class="layui-form-mid layui-word-aux red">*</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">栏目图片</label> |
||||
|
<input type="hidden" name="image" id="image" value="{$record['image']}"> |
||||
|
<div class="layui-input-block"> |
||||
|
<div class="layui-upload"> |
||||
|
<button type="button" class="layui-btn layui-btn-primary" id="cateBtn"><i class="icon icon-upload3"></i>点击上传</button> |
||||
|
<div class="layui-upload-list"> |
||||
|
<img class="layui-upload-img" src="{$record['imgUrl']}" id="cateImage"> |
||||
|
<p id="demoText"></p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">SEO标题</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<input type="text" name="title" value="{$record.title}" placeholder="{:lang('pleaseEnter')}SEO标题" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item layui-form-text"> |
||||
|
<label class="layui-form-label">SEO关键字</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<textarea placeholder="{:lang('pleaseEnter')}SEO关键字" name="keywords" class="layui-textarea">{$record.keywords}</textarea> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item layui-form-text"> |
||||
|
<label class="layui-form-label">SEO描述</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<textarea placeholder="{:lang('pleaseEnter')}SEO描述" name="description" class="layui-textarea">{$record.description}</textarea> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">多栏目设置</label> |
||||
|
<div class="layui-input-1"> |
||||
|
<input type="checkbox" name="child" value="1" {if condition="$record['child'] eq 1"} checked{/if} lay-skin="switch" title="多栏目设置"> |
||||
|
</div> |
||||
|
<div class="layui-form-mid layui-word-aux">打开后,其下将不能添加内容。</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">导航</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<input type="radio" name="ismenu" lay-filter="is_open" checked value="1" {if condition="$record['ismenu'] eq 1"}checked{/if} title="{:lang('yes')}"> |
||||
|
<input type="radio" name="ismenu" lay-filter="is_open" value="0" {if condition="$record['ismenu'] eq 0"}checked{/if} title="{:lang('no')}"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">预览</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<input type="radio" name="is_show" lay-filter="is_show" checked value="1" {if condition="$record['is_show'] eq 1"}checked{/if} title="开启"> |
||||
|
<input type="radio" name="is_show" lay-filter="is_show" value="0" {if condition="$record['is_show'] eq 0"}checked{/if} title="关闭"> |
||||
|
</div> |
||||
|
</div> |
||||
|
{if session('aid') eq 1} |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">访问权限</label> |
||||
|
<div class="layui-input-block"> |
||||
|
{volist name="rlist" id="item" key="i"} |
||||
|
<input type="checkbox" {if condition="in_array($item['group_id'],$record['readgroup'])"}checked{/if} name="readgroup[{$i}]" value="{$item.group_id}" title="{$item.title}"> |
||||
|
{/volist} |
||||
|
</div> |
||||
|
</div> |
||||
|
{/if} |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label">分页条数</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<input type="number" name="pagesize" value="{$record.pagesize}" class="layui-input"> |
||||
|
</div> |
||||
|
<div class="layui-form-mid layui-word-aux">为空时默认值为系统设置的值</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item tlist"> |
||||
|
<label class="layui-form-label">列表页模板</label> |
||||
|
<div class="layui-input-3"> |
||||
|
<select name="template_list" id="template_list"> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">内容页模板</label> |
||||
|
<div class="layui-input-3"> |
||||
|
<select name="template_show" id="template_show"> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">{:lang('submit')}</button> |
||||
|
<a href="{:url('index')}" class="layui-btn layui-btn-primary">{:lang('back')}</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script src="/static/common/js/jquery.2.1.1.min.js"></script> |
||||
|
<script> |
||||
|
var modulearr = new Array(); |
||||
|
{volist name="modulelist" id="mdate"} |
||||
|
modulearr[{$mdate['id']}] = "{$mdate['name']}"; |
||||
|
{/volist} |
||||
|
var templatearr = new Array(); |
||||
|
{volist name="templates" id="tem"} |
||||
|
templatearr[{$i}] = "{$tem['value']},{$tem['filename']}"; |
||||
|
{/volist} |
||||
|
var datas = "<option value=''>请选择</option>"; |
||||
|
var moduleid = $('#moduleid').val(); |
||||
|
var image = '{$record.image}'; |
||||
|
|
||||
|
layui.use(['form','upload'], function () { |
||||
|
var form = layui.form,upload = layui.upload; |
||||
|
|
||||
|
var uploadInst = upload.render({ |
||||
|
elem: '#cateBtn' |
||||
|
,url: '{:url("UpFiles/upload")}', |
||||
|
done: function(res){ |
||||
|
if(res.code>0){ |
||||
|
$('#image').val(res.url); |
||||
|
$('#cateImage').attr('src', res.url); |
||||
|
}else{ |
||||
|
return layer.msg('上传失败'); |
||||
|
} |
||||
|
}, |
||||
|
error: function(){ |
||||
|
//演示失败状态,并实现重传 |
||||
|
var demoText = $('#demoText'); |
||||
|
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-mini demo-reload">重试</a>'); |
||||
|
demoText.find('.demo-reload').on('click', function(){ |
||||
|
uploadInst.upload(); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
form.on('submit(submit)', function (data) { |
||||
|
// 提交到方法 默认为本身 |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('catUpdate')}", data.field, function (res) { |
||||
|
layer.close(loading); |
||||
|
if (res.code > 0) { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 1}, function () { |
||||
|
location.href = res.url; |
||||
|
}); |
||||
|
} else { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 2}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
form.on('select(moduleid)', function(data){ |
||||
|
showtemplist(data.value,0,form); |
||||
|
}); |
||||
|
}); |
||||
|
function showtemplist(m,t,form){ |
||||
|
|
||||
|
var type='_list'; |
||||
|
if(t){ |
||||
|
type='_index'; |
||||
|
} |
||||
|
var mtlist = modulearr[m]+type; |
||||
|
var mtshow = modulearr[m]+'_show'; |
||||
|
|
||||
|
if(modulearr[m]=='page'){ |
||||
|
$('.tlist').hide(); |
||||
|
mtlist=mtshow ='page'; |
||||
|
}else{ |
||||
|
$('.tlist').show(); |
||||
|
} |
||||
|
$('#template_list').html(datas); |
||||
|
$('#template_show').html(datas); |
||||
|
|
||||
|
listdatas = showdatas =''; |
||||
|
for(i=1;i<templatearr.length;i++){ |
||||
|
data = templatearr[i].split(','); |
||||
|
if(data[0].indexOf(mtlist) >= 0){ |
||||
|
listdatas ="<option value='"+data[0]+"'>"+data[1]+"</option>"; |
||||
|
$('#template_list').append(listdatas); |
||||
|
} |
||||
|
if(data[0].indexOf(mtshow) >= 0){ |
||||
|
showdatas ="<option value='"+data[0]+"'>"+data[1]+"</option>"; |
||||
|
$('#template_show').append(showdatas); |
||||
|
} |
||||
|
} |
||||
|
$("#template_list").val('{$record.template_list}'); |
||||
|
$("#template_show").val('{$record.template_show}'); |
||||
|
if(form){ |
||||
|
form.render() |
||||
|
} |
||||
|
} |
||||
|
showtemplist(moduleid,{if condition="empty($record['listtype'])"}0{else /}{$record.listtype}{/if}); |
||||
|
function templatetype(){ |
||||
|
var moduleid = $('#moduleid').val(); |
||||
|
if($("#listtype").attr('checked')==true){ |
||||
|
showtemplist(moduleid,1); |
||||
|
}else{ |
||||
|
showtemplist(moduleid,0); |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
@ -0,0 +1,63 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>{$title}</legend> |
||||
|
</fieldset> |
||||
|
<blockquote class="layui-elem-quote"> |
||||
|
<a href="{:url('add')}" class="layui-btn layui-btn-sm">{:lang('add')}栏目</a> |
||||
|
</blockquote> |
||||
|
<table class="layui-table"> |
||||
|
<thead> |
||||
|
<tr> |
||||
|
<th>编号</th> |
||||
|
<th>栏目名称<span id="cateNameMsg">(点击查看内容)</span></th> |
||||
|
<th>所属模型</th> |
||||
|
<th>导航</th> |
||||
|
<th>{:lang('order')}</th> |
||||
|
<th>操作</th> |
||||
|
</tr> |
||||
|
</thead> |
||||
|
<tbody id="con"> |
||||
|
{$categorys|raw} |
||||
|
</tbody> |
||||
|
<tfoot> |
||||
|
</table> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script src="/static/common/js/jquery.2.1.1.min.js"></script> |
||||
|
<script> |
||||
|
var layer; |
||||
|
layui.use('table', function(){ |
||||
|
var $= layui.jquery,layer= layui.layer; |
||||
|
$('body').on('blur','.list_order',function() { |
||||
|
var id = $(this).attr('data-id'); |
||||
|
var sort = $(this).val(); |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post('{:url("cOrder")}',{id:id,sort:sort},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code === 1){ |
||||
|
layer.msg(res.msg, {time: 1000, icon: 1}, function () { |
||||
|
location.href = res.url; |
||||
|
}); |
||||
|
}else{ |
||||
|
layer.msg(res.msg,{time:1000,icon:2}); |
||||
|
} |
||||
|
}) |
||||
|
}); |
||||
|
}); |
||||
|
function del(id) { |
||||
|
layer.confirm('你确定要删除该栏目及其子栏目吗?', {icon: 3}, function (index) { |
||||
|
$.post('{:url("del")}', {id: id}, function (data) { |
||||
|
if (data.status === 1) { |
||||
|
layer.alert(data.info, {icon: 6}, function(index){ |
||||
|
layer.close(index); |
||||
|
window.location.href=data.url; |
||||
|
}); |
||||
|
}else{ |
||||
|
layer.msg(data.info,{icon:5}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
} |
||||
|
</script> |
||||
@ -0,0 +1,268 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<title>{:config('sys_name')}后台管理</title> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black"> |
||||
|
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
|
<meta name="format-detection" content="telephone=no"> |
||||
|
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css" media="all" /> |
||||
|
<link rel="stylesheet" href="/static/admin/css/global.css" media="all"> |
||||
|
<link rel="stylesheet" href="/static/common/css/font.css" media="all"> |
||||
|
<style> |
||||
|
|
||||
|
.layui-form-pane .layui-form-label { |
||||
|
width: 110px; |
||||
|
padding: 8px 15px; |
||||
|
height: 38px; |
||||
|
line-height: 20px; |
||||
|
border-width: 0px; |
||||
|
border-style: none; |
||||
|
border-radius: 2px 0 0 2px; |
||||
|
text-align: center; |
||||
|
background-color: #FBFBFB; |
||||
|
overflow: hidden; |
||||
|
box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
.form-inliness .form-group { |
||||
|
|
||||
|
display: inline-block; |
||||
|
margin-bottom: 0; |
||||
|
vertical-align: middle; |
||||
|
} |
||||
|
.form-group { |
||||
|
margin-bottom: 15px; |
||||
|
} |
||||
|
.sr-only { |
||||
|
position: absolute; |
||||
|
width: 1px; |
||||
|
height: 1px; |
||||
|
padding: 0; |
||||
|
margin: -1px; |
||||
|
overflow: hidden; |
||||
|
clip: rect(0, 0, 0, 0); |
||||
|
border: 0; |
||||
|
} |
||||
|
.form-inliness .form-control { |
||||
|
display: inline-block; |
||||
|
width: 160px; |
||||
|
vertical-align: middle; |
||||
|
} |
||||
|
.form-control { |
||||
|
display: block; |
||||
|
width: 100%; |
||||
|
height: 34px; |
||||
|
padding: 6px 12px; |
||||
|
font-size: 14px; |
||||
|
line-height: 1.42857143; |
||||
|
color: #555; |
||||
|
background-color: #fff; |
||||
|
background-image: none; |
||||
|
border: 1px solid #ccc; |
||||
|
border-radius: 4px; |
||||
|
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); |
||||
|
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); |
||||
|
-webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; |
||||
|
-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; |
||||
|
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; |
||||
|
} |
||||
|
#distpicker5 .layui-unselect{ |
||||
|
display: none; |
||||
|
width: 100%; |
||||
|
height: 34px; |
||||
|
padding: 6px 12px; |
||||
|
font-size: 14px; |
||||
|
line-height: 1.42857143; |
||||
|
color: #555; |
||||
|
background-color: #fff; |
||||
|
background-image: none; |
||||
|
border: 1px solid #ccc; |
||||
|
border-radius: 4px; |
||||
|
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); |
||||
|
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); |
||||
|
-webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; |
||||
|
-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; |
||||
|
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; |
||||
|
} |
||||
|
</style> |
||||
|
</head> |
||||
|
<body class="skin-<?php if(!empty($_COOKIE['skin'])){echo $_COOKIE['skin'];}else{echo '0';setcookie('skin','0');}?>"> |
||||
|
|
||||
|
<!-- 客户名称、地区、行业类别、联系人、联系号码、客户级别、客户状态、用户名、备注 --> |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane form-inliness"> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="kh_name" name="kh_name" lay-verify="required" placeholder="请输入客户名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">省市区</label> |
||||
|
<div id="distpicker5"> |
||||
|
<div class="form-group"> |
||||
|
<label class="sr-only" for="province10">Province</label> |
||||
|
<select class="form-control" id="province10" name="pro" lay-verify="required" disabled></select> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="sr-only" for="city10">City</label> |
||||
|
<select class="form-control" id="city10" name="city" lay-verify="required"></select> |
||||
|
</div> |
||||
|
<div class="form-group" id="district_css"> |
||||
|
<label class="sr-only" for="district10">District</label> |
||||
|
<select class="form-control" id="district10" name="area" lay-verify="required"></select> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">小区名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="house" lay-verify="required" placeholder="请输入小区名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">门牌号</label> |
||||
|
<div class="layui-input-inline" style="width: 200px;"> |
||||
|
<input type="text" name="building" lay-verify="required" placeholder="楼栋" autocomplete="off" class="layui-input"> |
||||
|
</div> |
||||
|
<div class="layui-form-mid">-</div> |
||||
|
<div class="layui-input-inline" style="width: 200px;"> |
||||
|
<input type="text" name="number" lay-verify="required" placeholder="门牌号" autocomplete="off" class="layui-input"> |
||||
|
</div> |
||||
|
<div class="layui-form-mid layui-word-aux">例如:你住在18栋101,请输入【18-103】</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- <div class="layui-form-item">--> |
||||
|
<!-- <label class="layui-form-label">行业类别</label>--> |
||||
|
<!-- <div class="layui-input-4">--> |
||||
|
<!-- <input type="text" id="kh_hangye" name="kh_hangye" lay-verify="required" placeholder="请输入行业类别" class="layui-input">--> |
||||
|
<!-- <!– <select name="kh_hangye" id="kh_hangye">--> |
||||
|
<!-- <option value="">请选择行业类别</option>--> |
||||
|
|
||||
|
<!-- {volist name='xsHangyeList' id='vo'}--> |
||||
|
<!-- <option value="{$vo.hy_name}">{$vo.hy_name}</option>--> |
||||
|
<!-- {/volist}--> |
||||
|
|
||||
|
<!-- </select> –>--> |
||||
|
<!-- </div>--> |
||||
|
<!-- </div>--> |
||||
|
<!-- <div class="layui-form-item">--> |
||||
|
<!-- <label class="layui-form-label">微信号</label>--> |
||||
|
<!-- <div class="layui-input-4">--> |
||||
|
<!-- <input type="text" id="kh_contact" name="kh_contact" lay-verify="required" placeholder="请输入微信号" class="layui-input">--> |
||||
|
<!-- </div>--> |
||||
|
<!-- </div>--> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">联系号码</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="phone" name="phone" lay-verify="required" placeholder="请输入手机号码" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户级别</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<select name="kh_rank" id="kh_rank"> |
||||
|
<option value="">请选择客户级别</option> |
||||
|
|
||||
|
{volist name='khRankList' id='vo'} |
||||
|
<option value="{$vo.rank_name}">{$vo.rank_name}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户状态</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<select name="kh_status" id="kh_status"> |
||||
|
<option value="">请选择客户状态</option> |
||||
|
|
||||
|
{volist name='khStatusList' id='vo'} |
||||
|
<option value="{$vo.status_name}">{$vo.status_name}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- <div class="layui-form-item"> |
||||
|
<label class="layui-form-label">用户名</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="kh_username" name="kh_username" lay-verify="required" placeholder="请输入用户名" class="layui-input"> |
||||
|
</div> |
||||
|
</div> --> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">备注</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<textarea placeholder="请输入备注信息" class="layui-textarea" name="remark"></textarea> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">提交保存</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</form> |
||||
|
</div> |
||||
|
<script src="http://www.jq22.com/jquery/1.11.1/jquery.min.js"></script> |
||||
|
<script src="http://www.jq22.com/jquery/bootstrap-3.3.4.js"></script> |
||||
|
{include file="common/foot"/} |
||||
|
<script type="text/javascript" src="/static/admin/citypicker/js/distpicker.data.js?v={:time()}"></script> |
||||
|
<script type="text/javascript" src="/static/admin/citypicker/js/distpicker.js?v={:time()}"></script> |
||||
|
<script type="text/javascript" src="/static/admin/citypicker/js/main.js?v={:time()}"></script> |
||||
|
<script> |
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
$.post("{:url('Client/add')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
layer.close(layer.index); |
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
var ua = navigator.userAgent; |
||||
|
|
||||
|
var ipad = ua.match(/(iPad).*OS\s([\d_]+)/), |
||||
|
|
||||
|
isIphone =!ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/), |
||||
|
|
||||
|
isAndroid = ua.match(/(Android)\s+([\d.]+)/), |
||||
|
|
||||
|
isMobile = isIphone || isAndroid; |
||||
|
|
||||
|
//判断 |
||||
|
|
||||
|
if(isMobile){ |
||||
|
$('#district_css').attr('style',"margin-left:110px;") |
||||
|
}else{ |
||||
|
$('#district_css').attr('style',""); |
||||
|
} |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,76 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="ids" name="ids" disabled value="{$ids}" lay-verify="required" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">负责人</label> |
||||
|
<div class="layui-input-4" > |
||||
|
<select id="username" name="username" lay-verify="required"> |
||||
|
<option value="">请选择负责人</option> |
||||
|
{volist name='adminResult' id='vo'} |
||||
|
<option value="{$vo.username}">{$vo.username}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">确认分配</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
/*layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
$.post("{:url('Client/alterPrUser')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:1000},function () { |
||||
|
var index = parent.layer.getFrameIndex(window.name); //获取窗口索引 |
||||
|
parent.layer.close(index); // 关闭layer |
||||
|
}); |
||||
|
|
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,469 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<title>{:config('sys_name')}后台管理</title> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black"> |
||||
|
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
|
<meta name="format-detection" content="telephone=no"> |
||||
|
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css" media="all" /> |
||||
|
<link rel="stylesheet" href="/static/admin/css/global.css" media="all"> |
||||
|
<link rel="stylesheet" href="/static/common/css/font.css" media="all"> |
||||
|
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> |
||||
|
<script src="https://cdn.bootcss.com/layer/2.3/layer.js"></script> |
||||
|
<style> |
||||
|
|
||||
|
.filtrate-warp{ |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .title{ |
||||
|
padding: 5px 12px 7px 12px; |
||||
|
font-size: 14px; |
||||
|
font-weight: normal; |
||||
|
text-align: left; |
||||
|
cursor: pointer; |
||||
|
width: 90px; |
||||
|
background-color: transparent!important; |
||||
|
color: black!important; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .title:hover{ |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .flag{ |
||||
|
padding: 6px 12px 6px 12px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .flag:hover{ |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .layui-badge:hover{ |
||||
|
color: white!important; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
|
|
||||
|
</head> |
||||
|
<body class="skin-<?php if(!empty($_COOKIE['skin'])){echo $_COOKIE['skin'];}else{echo '0';setcookie('skin','0');}?>"> |
||||
|
|
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
|
||||
|
|
||||
|
<fieldset class="layui-elem-field " > |
||||
|
<legend>高级查询</legend> |
||||
|
|
||||
|
<div class="layui-card" style="box-shadow: none;margin-top: 10px"> |
||||
|
<div class="layui-form layui-card-header layuiadmin-card-header-auto" style="border-bottom: transparent;height: auto" > |
||||
|
|
||||
|
<div class="layui-form-item" style="text-align: left;padding-left: 20px;"> |
||||
|
|
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label">日期查询:</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<input type="text" class="layui-input" autocomplete="off" name="at_time" id="at_time" placeholder="请输入日期查询"> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<!-- <div class="layui-inline">--> |
||||
|
<!-- <label class="layui-form-label">客户级别:</label>--> |
||||
|
<!-- <div class="layui-input-inline">--> |
||||
|
<!-- <select name="kh_rank" id="kh_rank">--> |
||||
|
<!-- <option value="">请选择客户级别</option>--> |
||||
|
|
||||
|
<!-- {volist name='khRankList' id='vo'}--> |
||||
|
<!-- <option value="{$vo.rank_name}">{$vo.rank_name}</option>--> |
||||
|
<!-- {/volist}--> |
||||
|
|
||||
|
<!-- </select>--> |
||||
|
<!-- </div>--> |
||||
|
<!-- </div>--> |
||||
|
|
||||
|
<!-- <div class="layui-inline">--> |
||||
|
<!-- <label class="layui-form-label">客户状态:</label>--> |
||||
|
<!-- <div class="layui-input-inline">--> |
||||
|
<!-- <select name="kh_status" id="kh_status">--> |
||||
|
<!-- <option value="">请选择客户状态</option>--> |
||||
|
|
||||
|
<!-- {volist name='khStatusList' id='vo'}--> |
||||
|
<!-- <option value="{$vo.status_name}">{$vo.status_name}</option>--> |
||||
|
<!-- {/volist}--> |
||||
|
|
||||
|
<!-- </select>--> |
||||
|
<!-- </div>--> |
||||
|
<!-- </div>--> |
||||
|
|
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label">手机:</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<input type="text" id="phone" name="phone" placeholder="请输入手机号码" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- <div class="layui-inline"> |
||||
|
<label class="layui-form-label">时间查询:</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<select name="timebucket"> |
||||
|
<option value="">请选择时间</option> |
||||
|
<option value="today">今天</option> |
||||
|
<option value="yesterday">昨天</option> |
||||
|
<option value="week">本周</option> |
||||
|
<option value="last week">上周</option> |
||||
|
<option value="month">本月</option> |
||||
|
<option value="last month">上月</option> |
||||
|
<option value="year">今年</option> |
||||
|
<option value="last year">去年</option> |
||||
|
<option value="-2 hours">两个小时内</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> --> |
||||
|
|
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label" style="">客户名称:</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<input type="text" id="kh_name" name="kh_name" placeholder="请输入客户名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- <div class="layui-inline"> |
||||
|
<label class="layui-form-label">客户来源:</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<select name="xs_source" id="xs_source"> |
||||
|
<option value="">请选择客户来源</option> |
||||
|
|
||||
|
{volist name='xsSourceList' id='vo'} |
||||
|
<option value="{$vo.source_name}">{$vo.source_name}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> |
||||
|
</div> |
||||
|
</div> --> |
||||
|
|
||||
|
{if $Think.session.aid == 1} |
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label">业务员:</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<select name="pr_user" id="pr_user"> |
||||
|
<option value="">请选择业务员</option> |
||||
|
|
||||
|
{volist name='adminResult' id='vo'} |
||||
|
<option value="{$vo.username}">{$vo.username}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
{/if} |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<div class="layui-inline" style="float: right;padding-bottom: 15px"> |
||||
|
<button class="layui-btn layuiadmin-btn-list" lay-submit lay-filter="LAY-app-contlist-search"> |
||||
|
<i class="layui-icon layui-icon-search layuiadmin-button-btn" style="vertical-align: sub;"></i>查询数据 |
||||
|
</button> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
</fieldset> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<table class="layui-table" id="table-list" lay-filter="table-list"></table> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<!-- <script type="text/html" id="action"> |
||||
|
|
||||
|
<a class="layui-btn layui-btn-primary layui-btn-xs" href="{:url('dialogue')}?id={{d.id}}"><i class="layui-icon"></i>写跟进</a> |
||||
|
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="alter"><i class="layui-icon"></i>转移</a> |
||||
|
<a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon"></i>编辑</a> |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon"></i>删除</a> |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<script type="text/html" id="topBtn"> |
||||
|
<button type="button" class="layui-btn layui-btn-primary layui-btn-radius layui-btn-sm" id="add"><i class="layui-icon"></i>添加客户</button> |
||||
|
<button type="button" class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm" id="toAll" style="margin-right: 10px"><i class="layui-icon"></i>导入客户</button> |
||||
|
<button type="button" class="layui-btn layui-btn-danger layui-btn-radius layui-btn-sm" id="moveGh" lay-event="moveGh"><i class="layui-icon"></i>移入公海</button> |
||||
|
<button type="button" class="layui-btn layui-btn-primary layui-btn-radius layui-btn-sm" id="alterAll" lay-event="alterAll"><i class="layui-icon"></i>转移客户</button> |
||||
|
|
||||
|
</script> --> |
||||
|
<!-- 客户名称、地区、行业类别、联系人、联系号码、客户级别、客户状态、用户名、备注 --> |
||||
|
|
||||
|
{include file="common/foot"/} |
||||
|
<script> |
||||
|
layui.use(['table','form','upload','util','laydate'], function() { |
||||
|
var table = layui.table,form = layui.form,laydate = layui.laydate, $ = layui.jquery,upload = layui.upload,util = layui.util; |
||||
|
var tableIn = table.render({ |
||||
|
elem: '#table-list', |
||||
|
url: '{:url("successCliList")}', |
||||
|
method: 'post', |
||||
|
// toolbar: '#topBtn', |
||||
|
defaultToolbar:['filter','print','exports'], |
||||
|
cols: [[ |
||||
|
{checkbox:true,fixed: true}, |
||||
|
{field: 'id', title: 'ID', width: 80, fixed: true,hide:true}, |
||||
|
{field: 'kh_name', title: '客户名称',templet:function (res) { |
||||
|
return "<a href='{:url('dialogue')}?id="+res.id+"'>"+res.kh_name+"</a>"; |
||||
|
}}, |
||||
|
{field: 'pro', templet: function (d) { |
||||
|
var returnHtml = ''; |
||||
|
returnHtml += d.pro ; |
||||
|
returnHtml += d.city ; |
||||
|
returnHtml += d.area ; |
||||
|
return returnHtml |
||||
|
}, title: '地区' |
||||
|
}, |
||||
|
{field: 'house', title: '小区名称'}, |
||||
|
{field: 'building', templet: function (d) { |
||||
|
var returnHtml = ''; |
||||
|
returnHtml += d.building ; |
||||
|
returnHtml += '-'; |
||||
|
returnHtml += d.number ; |
||||
|
return returnHtml |
||||
|
}, title: '门牌号' |
||||
|
}, |
||||
|
{field: 'kh_contact', title: '联系人'}, |
||||
|
{field: 'phone', title: '联系号码' }, |
||||
|
{field: 'kh_rank', title: '客户级别',hide:true}, |
||||
|
{field: 'kh_status', title: '客户状态',hide:true }, |
||||
|
{field: 'issuccess', title: '成交状态',templet:function (res) { |
||||
|
var issuccess = res.issuccess; |
||||
|
if (issuccess == 1) { |
||||
|
return '已成交'; |
||||
|
}else{ |
||||
|
return '未成交'; |
||||
|
} |
||||
|
} }, |
||||
|
// {field: 'next_up_time', title: '下次跟进时间',hide:true }, |
||||
|
{field: 'xs_source', title: '客户来源',hide:true}, |
||||
|
{field: 'remark', title: '备注',hide:true}, |
||||
|
{field: 'pr_user', title: '负责人',hide:false }, |
||||
|
{field: 'pr_gh_type', title: '所属公海',hide:true }, |
||||
|
{field: 'to_gh_time', title: '划入公海时间',hide:true }, |
||||
|
{field: 'ut_time', title: '更新于',hide:true}, |
||||
|
{field: 'at_time', title: '创建时间', }, |
||||
|
{field: 'at_user', title: '创建人',hide:true}, |
||||
|
{field: 'pr_user_bef', title: '前负责人',hide:true }, |
||||
|
// {width: 320, align: 'center', toolbar: '#action'} |
||||
|
]], |
||||
|
limit: 100, //每页默认显示的数量 |
||||
|
|
||||
|
page: {limits:[10, 20, 30, 40, 50,100,9999999]}, |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
table.on('tool(table-list)', function(obj) { |
||||
|
var data = obj.data; |
||||
|
|
||||
|
if (obj.event === 'del') { |
||||
|
layer.confirm('您确定要删除这个客户吗?', function(index){ |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('del')}",{id:data.id},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code===0){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg('操作失败!',{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
} |
||||
|
else if(obj.event === 'edit'){ |
||||
|
layer_add("编辑客户","{:url('Client/edit')}?id="+data.id); |
||||
|
}else if(obj.event === 'alter'){ |
||||
|
layer_add("转移客户","{:url('Client/alterPrUser')}?ids="+data.id) |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
$('body').on('click','#add',function() { |
||||
|
var indexOpen = layer.open({ |
||||
|
type: 2, |
||||
|
title: '添加客户', |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['100%','86%'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: false, //开启最大化最小化按钮 |
||||
|
content: ["{:url('Client/add')}"] |
||||
|
}); |
||||
|
}) |
||||
|
|
||||
|
|
||||
|
|
||||
|
//监听事件 |
||||
|
table.on('toolbar(table-list)', function(obj){ |
||||
|
|
||||
|
var checkStatus = table.checkStatus(obj.config.id) |
||||
|
,data = checkStatus.data; //获取选中的数据 |
||||
|
switch(obj.event){ |
||||
|
case 'moveGh': |
||||
|
if(data.length === 0){ |
||||
|
layer.msg('请选择一行'); |
||||
|
// } else if(data.length > 1){ |
||||
|
// layer.msg('只能同时编辑一个'); |
||||
|
} else { |
||||
|
//console.log(data); |
||||
|
alterList = []; //定义需要转移的数组 |
||||
|
data.forEach(function (obj,index) { |
||||
|
alterList.push(obj.id); |
||||
|
}); |
||||
|
var currConfirm = layer.confirm('您确定这'+data.length+'个客户转入公海吗?',function (index) { |
||||
|
|
||||
|
/*layer.alert('编辑 [id]:'+ checkStatus.data[0]['id']);*/ |
||||
|
var indexOpen = layer.open({ |
||||
|
type: 2, |
||||
|
title: '移入公海', |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['100%','86%'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: false, //开启最大化最小化按钮 |
||||
|
content: ["{:url('Client/toMoveGh')}?ids="+alterList] |
||||
|
}); |
||||
|
}); |
||||
|
} |
||||
|
break; |
||||
|
case 'alterAll': |
||||
|
var checkStatus = table.checkStatus(obj.config.id) |
||||
|
,data=checkStatus.data;//获取选中的数据 |
||||
|
|
||||
|
if(data.length > 0){ |
||||
|
alterList = []; //定义需要转移的数组 |
||||
|
data.forEach(function (obj,index) { |
||||
|
alterList.push(obj.id); |
||||
|
}); |
||||
|
|
||||
|
var currConfirm = layer.confirm('您确定要转移这'+data.length+'个客户吗?',function (index) { |
||||
|
|
||||
|
|
||||
|
layer.close(currConfirm); |
||||
|
var indexOpen = layer.open({ |
||||
|
type: 2, |
||||
|
title: '转移客户', |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['100%','86%'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: false, //开启最大化最小化按钮 |
||||
|
content: ["{:url('Client/alterPrUser')}?ids="+alterList] |
||||
|
|
||||
|
}); |
||||
|
|
||||
|
|
||||
|
}); |
||||
|
|
||||
|
|
||||
|
}else { |
||||
|
layer.msg("请选择需要转移的客户"); |
||||
|
} |
||||
|
break; |
||||
|
}; |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
//监听搜索 |
||||
|
form.on('submit(LAY-app-contlist-search)', function(data){ |
||||
|
var field = data.field; |
||||
|
|
||||
|
/* layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
|
||||
|
table.reload('table-list', { |
||||
|
url:"{:url('Client/chengjiaoClientSearch')}", |
||||
|
where: { |
||||
|
keyword: data.field |
||||
|
}, |
||||
|
page:{ |
||||
|
curr:1 |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
}); |
||||
|
|
||||
|
laydate.render({ |
||||
|
elem: '#at_time' |
||||
|
}); |
||||
|
|
||||
|
//批量导入 |
||||
|
var indexMsg; |
||||
|
//上传xls文件 |
||||
|
upload.render({ //允许上传的文件后缀 |
||||
|
elem: '#toAll' |
||||
|
,url: "{:url('Client/xlsUpload')}" |
||||
|
,accept: 'file' //普通文件 |
||||
|
,field:'xlsFile' |
||||
|
,exts: 'xls|xlsx' //只允许上传压缩文件 |
||||
|
|
||||
|
,before: function(obj){ //obj参数包含的信息,跟 choose回调完全一致,可参见上文。 |
||||
|
indexMsg = layer.msg('正在导入数据,请稍等...', { |
||||
|
icon: 16, |
||||
|
shade: 0.04, |
||||
|
time:false //取消自动关闭 |
||||
|
}); |
||||
|
} |
||||
|
,done: function(res){ |
||||
|
layer.close(indexMsg); //关闭信息框 |
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg, {time: 1800, icon: 1}, function () { |
||||
|
location.reload() |
||||
|
}); |
||||
|
}else { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 2}); |
||||
|
} |
||||
|
} |
||||
|
,error: function(index, upload){ |
||||
|
layer.close(indexMsg); //关闭信息框 |
||||
|
layer.msg('系统繁忙,请稍后...', {time: 1800, icon: 1}); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
}); |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
/*添加*/ |
||||
|
function layer_add(title,url){ |
||||
|
|
||||
|
var indexOpen = layer.open({ |
||||
|
type: 2, |
||||
|
title: title, |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['100%','80%'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: true, //开启最大化最小化按钮 |
||||
|
content:[url], |
||||
|
|
||||
|
|
||||
|
|
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> |
||||
|
|
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,355 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<title>{:config('sys_name')}后台管理</title> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black"> |
||||
|
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
|
<meta name="format-detection" content="telephone=no"> |
||||
|
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css" media="all" /> |
||||
|
<link rel="stylesheet" href="/static/admin/css/global.css" media="all"> |
||||
|
<link rel="stylesheet" href="/static/common/css/font.css" media="all"> |
||||
|
<style> |
||||
|
.layui-upload-img { |
||||
|
width: 120px; |
||||
|
height: 100px; |
||||
|
margin: 0 10px 0px 0; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
|
</head> |
||||
|
<body class="skin-<?php if(!empty($_COOKIE['skin'])){echo $_COOKIE['skin'];}else{echo '0';setcookie('skin','0');}?>"> |
||||
|
|
||||
|
|
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
<a href="javascript:window.history.back(-1)" class="layui-btn layui-btn-primary">返回上一页</a> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>写跟进</legend> |
||||
|
</fieldset> |
||||
|
|
||||
|
<div class="layui-row" style=""> |
||||
|
<div class="layui-col-xs6" style=""> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">ID</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" disabled value="{$result.id}" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" disabled value="{$result.kh_name}" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">地区</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" disabled value="{$result.xs_area}" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">行业类别</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" disabled value="{$result.kh_hangye}" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">微信号</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" disabled value="{$result.kh_contact}" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">联系方式</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" disabled value="{$result.phone}" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户状态</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" disabled value="{$result.kh_status}" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户级别</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" disabled value="{$result.kh_rank}" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- <div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户需求</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" disabled value="{$result.kh_need}" class="layui-input"> |
||||
|
</div> |
||||
|
</div> --> |
||||
|
|
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">跟进时间</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" disabled value="{$result.last_up_time}" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">跟进记录</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<textarea disabled class="layui-textarea">{$result.last_up_records}</textarea> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">负责人</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" disabled value="{$result.pr_user}" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">线索来源</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" disabled value="{$result.xs_source}" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">备注信息</label> |
||||
|
<div class="layui-input-4"> |
||||
|
|
||||
|
<textarea disabled class="layui-textarea">{$result.kh_need}</textarea> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">创建人</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" disabled value="{$result.at_user}" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">创建时间</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" disabled value="{$result.at_time}" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-col-xs6" style="padding: 0px 10px 0px 10px;"> |
||||
|
|
||||
|
<fieldset class="layui-elem-field " style="padding: 15px 15px 0px 15px"> |
||||
|
<legend>跟进记录</legend> |
||||
|
<ul class="layui-timeline"> |
||||
|
|
||||
|
{volist name='$result.comment' id='vo' } |
||||
|
<li class="layui-timeline-item"> |
||||
|
<i class="layui-icon layui-timeline-axis"></i> |
||||
|
<div class="layui-timeline-content layui-text"> |
||||
|
<h3 class="layui-timeline-title" style="color: rosybrown;font-size: 15px"> |
||||
|
|
||||
|
{$vo.create_date|date='Y年m月d日 H:i'}</h3> |
||||
|
<p> |
||||
|
<div style="display: inline-block"> |
||||
|
<img src="{$vo.avatar}"alt="" style="width: 30px;height: 30px;border-radius: 50%"> |
||||
|
<strong>{$vo.username}:</strong> |
||||
|
</div> |
||||
|
{$vo.reply_msg} |
||||
|
|
||||
|
</p> |
||||
|
</div> |
||||
|
</li> |
||||
|
{/volist} |
||||
|
|
||||
|
</ul> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<div class="layui-form layui-form-pane"> |
||||
|
|
||||
|
<div class="layui-form-item layui-form-text"> |
||||
|
<a name="comment"></a> |
||||
|
<div class="layui-input-block"> |
||||
|
<textarea name="reply_msg" id="reply_msg" required lay-verify="required" placeholder="请输入内容" class="layui-textarea fly-editor" style="height: 150px;"></textarea> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<input type="hidden" name="leads_id" value="{$result.id}"> |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
{if condition="$group_id eq 1 "} |
||||
|
<button class="layui-btn" lay-filter="btn_comment" lay-submit>提交记录</button> |
||||
|
{elseif condition="$result.pr_user eq $curname " /} |
||||
|
<button class="layui-btn" lay-filter="btn_comment" lay-submit>提交记录</button> |
||||
|
{else/} |
||||
|
<button class="layui-btn" lay-submit>禁止提交 </button> |
||||
|
{/if} |
||||
|
|
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
</fieldset> |
||||
|
<!--{:url('dialogue')}?id={{d.id}}--> |
||||
|
<div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
{if condition="$result.pr_user eq $curname OR $group_id eq 1 "} |
||||
|
|
||||
|
{if condition="$result.id eq 0 "} |
||||
|
|
||||
|
|
||||
|
|
||||
|
<a class="layui-btn layui-btn-primary">没有了!</a> |
||||
|
{else/} |
||||
|
|
||||
|
{if condition="$result.id eq 1 "} |
||||
|
<a class="layui-btn layui-btn-primary">最前!</a> |
||||
|
{else/} |
||||
|
<a href="{:url('dialogue')}?id={$result.id+1}" class="layui-btn layui-btn-primary">跟进上一个</a> |
||||
|
|
||||
|
{/if} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
{if condition="$result.id eq null "} |
||||
|
<a class="layui-btn layui-btn-primary">没有了!</a> |
||||
|
{else/} |
||||
|
<a href="{:url('dialogue')}?id={$result.id-1}" class="layui-btn layui-btn-primary">跟进下一个</a> |
||||
|
|
||||
|
{/if} |
||||
|
|
||||
|
{/if} |
||||
|
|
||||
|
|
||||
|
{else/} |
||||
|
<a class="layui-btn layui-btn-primary">没有权限!</a> |
||||
|
{/if} |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> |
||||
|
|
||||
|
<script> |
||||
|
layui.use(['form', 'layer','jquery'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$ = layui.jquery; |
||||
|
|
||||
|
|
||||
|
form.on('submit(btn_comment)',function (data) { |
||||
|
console.log(data.elem) //被执行事件的元素DOM对象,一般为button对象 |
||||
|
console.log(data.form) //被执行提交的form对象,一般在存在form标签时才会返回 |
||||
|
console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value} |
||||
|
$.ajax( |
||||
|
{ |
||||
|
method:'post', |
||||
|
url:"{:url('Client/comment')}", |
||||
|
async:false, |
||||
|
data:data.field, |
||||
|
success:function (res) { |
||||
|
layer.msg(res.msg,function () { |
||||
|
/* window.location = "{:url('Index/index')}" |
||||
|
return false;*/ |
||||
|
$('#reply_msg').val(''); |
||||
|
|
||||
|
$('.layui-timeline').append("<li class=\"layui-timeline-item\">\n" + |
||||
|
" <i class=\"layui-icon layui-timeline-axis\"></i>\n" + |
||||
|
" <div class=\"layui-timeline-content layui-text\">\n" + |
||||
|
" <h3 class=\"layui-timeline-title\" style=\"color: rosybrown;font-size: 15px\">\n" + |
||||
|
"\n" + |
||||
|
" "+res.data.create_date+"</h3>\n" + |
||||
|
" <p>\n" + |
||||
|
" <div style=\"display: inline-block\">\n" + |
||||
|
" <img src=\"{$Think.session.avatar}\"alt=\"\" style=\"width: 30px;height: 30px;border-radius: 50%\">\n" + |
||||
|
" <strong>{$Think.session.username}:</strong>\n" + |
||||
|
" </div>\n" + |
||||
|
" "+ res.data.reply_msg+"\n" + |
||||
|
"\n" + |
||||
|
" </p>\n" + |
||||
|
" </div>\n" + |
||||
|
" </li>"); |
||||
|
|
||||
|
}); |
||||
|
}, |
||||
|
error:function (res) { |
||||
|
|
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。 |
||||
|
}) |
||||
|
|
||||
|
form.on('submit(btn_reply)',function (data) { |
||||
|
console.log(data.elem) //被执行事件的元素DOM对象,一般为button对象 |
||||
|
console.log(data.form) //被执行提交的form对象,一般在存在form标签时才会返回 |
||||
|
console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value} |
||||
|
$.ajax( |
||||
|
{ |
||||
|
method:'post', |
||||
|
url:"{:url('Index/reply')}", |
||||
|
async:false, |
||||
|
data:data.field, |
||||
|
success:function (res) { |
||||
|
layer.msg(res.msg,function () { |
||||
|
/* window.location = "{:url('Index/index')}" |
||||
|
return false;*/ |
||||
|
$('#reply_msg').val(''); |
||||
|
|
||||
|
$('.layui-timeline').append(" <li class=\"layui-timeline-item\">\n" + |
||||
|
" <i class=\"layui-icon layui-timeline-axis\"></i>\n" + |
||||
|
" <div class=\"layui-timeline-content layui-text\">\n" + |
||||
|
" <h3 class=\"layui-timeline-title\">"+res.data.user_id+"</h3>\n" + |
||||
|
" <p>\n" + res.data.reply_msg+"<small>"+res.data.create_date+"</small>\n" + |
||||
|
" </p>\n" + |
||||
|
" </div>\n" + |
||||
|
" </li>") |
||||
|
|
||||
|
}); |
||||
|
}, |
||||
|
error:function (res) { |
||||
|
|
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。 |
||||
|
}) |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
}); |
||||
|
|
||||
|
|
||||
|
|
||||
|
</script> |
||||
@ -0,0 +1,287 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<title>{:config('sys_name')}后台管理</title> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black"> |
||||
|
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
|
<meta name="format-detection" content="telephone=no"> |
||||
|
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css" media="all" /> |
||||
|
<link rel="stylesheet" href="/static/admin/css/global.css" media="all"> |
||||
|
<link rel="stylesheet" href="/static/common/css/font.css" media="all"> |
||||
|
<style> |
||||
|
|
||||
|
.layui-form-pane .layui-form-label { |
||||
|
width: 110px; |
||||
|
padding: 8px 15px; |
||||
|
height: 38px; |
||||
|
line-height: 20px; |
||||
|
border-width: 0px; |
||||
|
border-style: none; |
||||
|
border-radius: 2px 0 0 2px; |
||||
|
text-align: center; |
||||
|
background-color: #FBFBFB; |
||||
|
overflow: hidden; |
||||
|
box-sizing: border-box; |
||||
|
} |
||||
|
.form-inliness .form-group { |
||||
|
|
||||
|
display: inline-block; |
||||
|
margin-bottom: 0; |
||||
|
vertical-align: middle; |
||||
|
} |
||||
|
.form-group { |
||||
|
margin-bottom: 15px; |
||||
|
} |
||||
|
.sr-only { |
||||
|
position: absolute; |
||||
|
width: 1px; |
||||
|
height: 1px; |
||||
|
padding: 0; |
||||
|
margin: -1px; |
||||
|
overflow: hidden; |
||||
|
clip: rect(0, 0, 0, 0); |
||||
|
border: 0; |
||||
|
} |
||||
|
.form-inliness .form-control { |
||||
|
display: inline-block; |
||||
|
width: 160px; |
||||
|
vertical-align: middle; |
||||
|
} |
||||
|
.form-control { |
||||
|
display: block; |
||||
|
width: 100%; |
||||
|
height: 34px; |
||||
|
padding: 6px 12px; |
||||
|
font-size: 14px; |
||||
|
line-height: 1.42857143; |
||||
|
color: #555; |
||||
|
background-color: #fff; |
||||
|
background-image: none; |
||||
|
border: 1px solid #ccc; |
||||
|
border-radius: 4px; |
||||
|
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); |
||||
|
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); |
||||
|
-webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; |
||||
|
-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; |
||||
|
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; |
||||
|
} |
||||
|
#distpicker5 .layui-unselect{ |
||||
|
display: none; |
||||
|
width: 100%; |
||||
|
height: 34px; |
||||
|
padding: 6px 12px; |
||||
|
font-size: 14px; |
||||
|
line-height: 1.42857143; |
||||
|
color: #555; |
||||
|
background-color: #fff; |
||||
|
background-image: none; |
||||
|
border: 1px solid #ccc; |
||||
|
border-radius: 4px; |
||||
|
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); |
||||
|
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); |
||||
|
-webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; |
||||
|
-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; |
||||
|
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; |
||||
|
} |
||||
|
</style> |
||||
|
</head> |
||||
|
<body class="skin-<?php if(!empty($_COOKIE['skin'])){echo $_COOKIE['skin'];}else{echo '0';setcookie('skin','0');}?>"> |
||||
|
|
||||
|
|
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane form-inliness"> |
||||
|
|
||||
|
|
||||
|
<input type="hidden" id="id" name="id" lay-verify="required" value="{$result.id}" class="layui-input"> |
||||
|
|
||||
|
<!-- 客户名称、地区、行业类别、联系人、联系号码、客户级别、客户状态、用户名、备注 --> |
||||
|
|
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="kh_name" name="kh_name" value="{$result.kh_name}" lay-verify="required" placeholder="请输入客户名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">省市区</label> |
||||
|
<div id="distpicker5"> |
||||
|
<div class="form-group"> |
||||
|
<label class="sr-only" for="province10">Province</label> |
||||
|
<select class="form-control" id="province10" name="pro" lay-verify="required" disabled></select> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="sr-only" for="city10">City</label> |
||||
|
<select class="form-control" id="city10" name="city" lay-verify="required"></select> |
||||
|
</div> |
||||
|
<div class="form-group" id="district_css"> |
||||
|
<label class="sr-only" for="district10">District</label> |
||||
|
<select class="form-control" id="district10" name="area" lay-verify="required"></select> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">小区名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="house" value="{$result.house}" lay-verify="required" placeholder="请输入小区名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">门牌号</label> |
||||
|
<div class="layui-input-inline" style="width: 200px;"> |
||||
|
<input type="text" name="building" value="{$result.building}" lay-verify="required" placeholder="楼栋" autocomplete="off" class="layui-input"> |
||||
|
</div> |
||||
|
<div class="layui-form-mid">-</div> |
||||
|
<div class="layui-input-inline" style="width: 200px;"> |
||||
|
<input type="text" name="number" value="{$result.number}" lay-verify="required" placeholder="门牌号" autocomplete="off" class="layui-input"> |
||||
|
</div> |
||||
|
<div class="layui-form-mid layui-word-aux">例如:你住在18栋101,请输入【18-103】</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- <div class="layui-form-item">--> |
||||
|
<!-- <label class="layui-form-label">行业类别</label>--> |
||||
|
<!-- <div class="layui-input-4">--> |
||||
|
<!-- <input type="text" id="kh_hangye" name="kh_hangye" lay-verify="required" placeholder="请输入行业类别" class="layui-input" value="{$result.kh_hangye}">--> |
||||
|
<!-- <!– <select name="kh_hangye" id="kh_hangye">--> |
||||
|
<!-- <option value="">请选择行业类别</option>--> |
||||
|
|
||||
|
<!-- {volist name='xsHangyeList' id='vo'}--> |
||||
|
<!-- <option value="{$vo.hy_name}" {in name="$result.kh_hangye" value="$vo.hy_name"} selected {/in}>{$vo.hy_name}</option>--> |
||||
|
<!-- {/volist}--> |
||||
|
|
||||
|
<!-- </select> –>--> |
||||
|
<!-- </div>--> |
||||
|
<!-- </div>--> |
||||
|
<!-- <div class="layui-form-item">--> |
||||
|
<!-- <label class="layui-form-label">微信号</label>--> |
||||
|
<!-- <div class="layui-input-4">--> |
||||
|
<!-- <input type="text" id="kh_contact" name="kh_contact" value="{$result.kh_contact}" lay-verify="required" placeholder="请输入微信号" class="layui-input">--> |
||||
|
<!-- </div>--> |
||||
|
<!-- </div>--> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">联系号码</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="phone" name="phone" disabled value="{$result.phone}" lay-verify="required" placeholder="请输入手机号码" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户级别</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<select name="kh_rank" id="kh_rank"> |
||||
|
<option value="">请选择客户级别</option> |
||||
|
|
||||
|
{volist name='khRankList' id='vo'} |
||||
|
<option value="{$vo.rank_name}" {in name="$result.kh_rank" value="$vo.rank_name"} selected {/in}>{$vo.rank_name}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户状态</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<select name="kh_status" id="kh_status"> |
||||
|
<option value="">请选择客户状态</option> |
||||
|
|
||||
|
{volist name='khStatusList' id='vo'} |
||||
|
<option value="{$vo.status_name}" {in name="$result.kh_status" value="$vo.status_name"} selected {/in} >{$vo.status_name}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- <div class="layui-form-item"> |
||||
|
<label class="layui-form-label">用户名</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="kh_username" name="kh_username" lay-verify="required" placeholder="请输入用户名" value="{$result.kh_username}" class="layui-input"> |
||||
|
</div> |
||||
|
</div> --> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">备注</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<textarea placeholder="请输入备注信息" class="layui-textarea" name="remark">{$result.remark}</textarea> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">提交保存</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
</form> |
||||
|
</div> |
||||
|
<script src="http://www.jq22.com/jquery/1.11.1/jquery.min.js"></script> |
||||
|
<script src="http://www.jq22.com/jquery/bootstrap-3.3.4.js"></script> |
||||
|
{include file="common/foot"/} |
||||
|
<script type="text/javascript" src="/static/admin/citypicker/js/distpicker.data.js?v={:time()}"></script> |
||||
|
<script type="text/javascript" src="/static/admin/citypicker/js/distpicker.js?v={:time()}"></script> |
||||
|
<script type="text/javascript" src="/static/admin/citypicker/js/main.js?v={:time()}"></script> |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
$.post("{:url('Client/edit')}",data.field,function (res) { |
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
layer.close(layer.index); |
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
var province = '{$result.pro}'; |
||||
|
var city = '{$result.city}'; |
||||
|
var area = '{$result.area|default="---- 所在区 ----"}'; |
||||
|
$('#distpicker5').distpicker({ |
||||
|
autoSelect: false, |
||||
|
province: province, |
||||
|
city: city, |
||||
|
district: area |
||||
|
}); |
||||
|
|
||||
|
var ua = navigator.userAgent; |
||||
|
|
||||
|
var ipad = ua.match(/(iPad).*OS\s([\d_]+)/), |
||||
|
|
||||
|
isIphone =!ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/), |
||||
|
|
||||
|
isAndroid = ua.match(/(Android)\s+([\d.]+)/), |
||||
|
|
||||
|
isMobile = isIphone || isAndroid; |
||||
|
|
||||
|
//判断 |
||||
|
|
||||
|
if(isMobile){ |
||||
|
$('#district_css').attr('style',"margin-left:110px;") |
||||
|
}else{ |
||||
|
$('#district_css').attr('style',""); |
||||
|
} |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,160 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<title>{:config('sys_name')}后台管理</title> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black"> |
||||
|
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
|
<meta name="format-detection" content="telephone=no"> |
||||
|
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css" media="all" /> |
||||
|
<link rel="stylesheet" href="/static/admin/css/global.css" media="all"> |
||||
|
<link rel="stylesheet" href="/static/common/css/font.css" media="all"> |
||||
|
|
||||
|
<style> |
||||
|
|
||||
|
.filtrate-warp{ |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .title{ |
||||
|
padding: 5px 12px 7px 12px; |
||||
|
font-size: 14px; |
||||
|
font-weight: normal; |
||||
|
text-align: left; |
||||
|
cursor: pointer; |
||||
|
width: 90px; |
||||
|
background-color: transparent!important; |
||||
|
color: black!important; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .title:hover{ |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .flag{ |
||||
|
padding: 6px 12px 6px 12px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .flag:hover{ |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .layui-badge:hover{ |
||||
|
color: white!important; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
|
|
||||
|
</head> |
||||
|
<body class="skin-<?php if(!empty($_COOKIE['skin'])){echo $_COOKIE['skin'];}else{echo '0';setcookie('skin','0');}?>"> |
||||
|
|
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
|
||||
|
<table class="layui-table" id="table-list" lay-filter="table-list"></table> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<script type="text/html" id="action"> |
||||
|
<a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon"></i>编辑</a> |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon"></i>删除</a> |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<script type="text/html" id="topBtn"> |
||||
|
<button type="button" class="layui-btn layui-btn-primary layui-btn-radius layui-btn-sm" id="add"><i class="layui-icon"></i>添加行业类别</button> |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
{include file="common/foot"/} |
||||
|
<script> |
||||
|
layui.use(['table','form','upload','util','laydate'], function() { |
||||
|
var table = layui.table,form = layui.form,laydate = layui.laydate, $ = layui.jquery,upload = layui.upload,util = layui.util; |
||||
|
var tableIn = table.render({ |
||||
|
elem: '#table-list', |
||||
|
url: '{:url("hangyeList")}', |
||||
|
method: 'post', |
||||
|
toolbar: '#topBtn', |
||||
|
page: true, |
||||
|
cols: [[ |
||||
|
{checkbox:true,fixed: true}, |
||||
|
{field: 'id', title: 'ID', width: 120, fixed: true}, |
||||
|
{field: 'hy_name', title: '行业类别', }, |
||||
|
{field: 'add_time', title:'创建时间',templet:function (res) { |
||||
|
return util.toDateString(res.add_time = (res.add_time * 1000)); |
||||
|
}}, |
||||
|
{title:'操作',width: 260, align: 'center', toolbar: '#action'} |
||||
|
]], |
||||
|
limit: 10 //每页默认显示的数量 |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
table.on('tool(table-list)', function(obj) { |
||||
|
var data = obj.data; |
||||
|
|
||||
|
if (obj.event === 'del') { |
||||
|
layer.confirm('您确定要删除吗?', function(index){ |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('hangyeDel')}",{id:data.id},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code===0){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg('操作失败!',{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
}else if(obj.event === 'edit'){ |
||||
|
layer_add("编辑行业类别","{:url('Client/hangyeEdit')}?id="+data.id); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
$('body').on('click','#add',function() { |
||||
|
var indexOpen = layer.open({ |
||||
|
type: 2, |
||||
|
title: '添加行业类别', |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['500px','260px'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: false, //开启最大化最小化按钮 |
||||
|
content: ["{:url('Client/hangyeAdd')}"] |
||||
|
}); |
||||
|
}) |
||||
|
|
||||
|
|
||||
|
}); |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
/*添加*/ |
||||
|
function layer_add(title,url){ |
||||
|
var index = layer.open({ |
||||
|
type: 2, |
||||
|
title: title, |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['550px', '350px'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: true, //开启最大化最小化按钮 |
||||
|
content: [url,'no'] |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,56 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">行业类别</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="hy_name" name="hy_name" lay-verify="required" placeholder="请输入行业类别名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">提交保存</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
/* layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
$.post("{:url('Client/hangyeAdd')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
layer.close(layer.index); |
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,58 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
|
||||
|
<input type="hidden" name="id" value="{$result.id}"> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">行业类别</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="hy_name" name="hy_name" value="{$result.hy_name}" lay-verify="required" placeholder="请输入行业类别名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">提交保存</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
/* layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
$.post("{:url('Client/hangyeEdit')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
layer.close(layer.index); |
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,474 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<title>{:config('sys_name')}后台管理</title> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black"> |
||||
|
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
|
<meta name="format-detection" content="telephone=no"> |
||||
|
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css" media="all" /> |
||||
|
<link rel="stylesheet" href="/static/admin/css/global.css" media="all"> |
||||
|
<link rel="stylesheet" href="/static/common/css/font.css" media="all"> |
||||
|
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> |
||||
|
<script src="https://cdn.bootcss.com/layer/2.3/layer.js"></script> |
||||
|
<style> |
||||
|
|
||||
|
.filtrate-warp{ |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .title{ |
||||
|
padding: 5px 12px 7px 12px; |
||||
|
font-size: 14px; |
||||
|
font-weight: normal; |
||||
|
text-align: left; |
||||
|
cursor: pointer; |
||||
|
width: 90px; |
||||
|
background-color: transparent!important; |
||||
|
color: black!important; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .title:hover{ |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .flag{ |
||||
|
padding: 6px 12px 6px 12px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .flag:hover{ |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .layui-badge:hover{ |
||||
|
color: white!important; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
|
|
||||
|
</head> |
||||
|
<body class="skin-<?php if(!empty($_COOKIE['skin'])){echo $_COOKIE['skin'];}else{echo '0';setcookie('skin','0');}?>"> |
||||
|
|
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
|
||||
|
|
||||
|
<fieldset class="layui-elem-field " > |
||||
|
<legend>高级查询</legend> |
||||
|
|
||||
|
<div class="layui-card" style="box-shadow: none;margin-top: 10px"> |
||||
|
<div class="layui-form layui-card-header layuiadmin-card-header-auto" style="border-bottom: transparent;height: auto" > |
||||
|
|
||||
|
<div class="layui-form-item" style="text-align: left;padding-left: 20px;"> |
||||
|
|
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label">日期查询:</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<input type="text" class="layui-input" autocomplete="off" name="at_time" id="at_time" placeholder="请输入日期查询"> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<!-- <div class="layui-inline">--> |
||||
|
<!-- <label class="layui-form-label">客户级别:</label>--> |
||||
|
<!-- <div class="layui-input-inline">--> |
||||
|
<!-- <select name="kh_rank" id="kh_rank">--> |
||||
|
<!-- <option value="">请选择客户级别</option>--> |
||||
|
|
||||
|
<!-- {volist name='khRankList' id='vo'}--> |
||||
|
<!-- <option value="{$vo.rank_name}">{$vo.rank_name}</option>--> |
||||
|
<!-- {/volist}--> |
||||
|
|
||||
|
<!-- </select>--> |
||||
|
<!-- </div>--> |
||||
|
<!-- </div>--> |
||||
|
|
||||
|
<!-- <div class="layui-inline">--> |
||||
|
<!-- <label class="layui-form-label">客户状态:</label>--> |
||||
|
<!-- <div class="layui-input-inline">--> |
||||
|
<!-- <select name="kh_status" id="kh_status">--> |
||||
|
<!-- <option value="">请选择客户状态</option>--> |
||||
|
|
||||
|
<!-- {volist name='khStatusList' id='vo'}--> |
||||
|
<!-- <option value="{$vo.status_name}">{$vo.status_name}</option>--> |
||||
|
<!-- {/volist}--> |
||||
|
|
||||
|
<!-- </select>--> |
||||
|
<!-- </div>--> |
||||
|
<!-- </div>--> |
||||
|
|
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label">手机:</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<input type="text" id="phone" name="phone" placeholder="请输入手机号码" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- <div class="layui-inline"> |
||||
|
<label class="layui-form-label">时间查询:</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<select name="timebucket"> |
||||
|
<option value="">请选择时间</option> |
||||
|
<option value="today">今天</option> |
||||
|
<option value="yesterday">昨天</option> |
||||
|
<option value="week">本周</option> |
||||
|
<option value="last week">上周</option> |
||||
|
<option value="month">本月</option> |
||||
|
<option value="last month">上月</option> |
||||
|
<option value="year">今年</option> |
||||
|
<option value="last year">去年</option> |
||||
|
<option value="-2 hours">两个小时内</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> --> |
||||
|
|
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label" style="">客户名称:</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<input type="text" id="kh_name" name="kh_name" placeholder="请输入客户名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label" style="">小区名称:</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<input type="text" id="house" name="house" placeholder="请输入小区名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- <div class="layui-inline"> |
||||
|
<label class="layui-form-label">客户来源:</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<select name="xs_source" id="xs_source"> |
||||
|
<option value="">请选择客户来源</option> |
||||
|
|
||||
|
{volist name='xsSourceList' id='vo'} |
||||
|
<option value="{$vo.source_name}">{$vo.source_name}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> |
||||
|
</div> |
||||
|
</div> --> |
||||
|
|
||||
|
|
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label">业务员:</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<select name="pr_user" id="pr_user"> |
||||
|
<option value="">请选择业务员</option> |
||||
|
|
||||
|
{volist name='adminResult' id='vo'} |
||||
|
<option value="{$vo.username}">{$vo.username}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<div class="layui-inline" style="float: right;padding-bottom: 15px"> |
||||
|
<button class="layui-btn layuiadmin-btn-list" lay-submit lay-filter="LAY-app-contlist-search"> |
||||
|
<i class="layui-icon layui-icon-search layuiadmin-button-btn" style="vertical-align: sub;"></i>查询数据 |
||||
|
</button> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
</fieldset> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<table class="layui-table" id="table-list" lay-filter="table-list"></table> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<script type="text/html" id="action"> |
||||
|
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="alter"><i class="layui-icon"></i>转移</a> |
||||
|
<a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon"></i>编辑</a> |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon"></i>删除</a> |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<script type="text/html" id="topBtn"> |
||||
|
<button type="button" class="layui-btn layui-btn-primary layui-btn-radius layui-btn-sm" id="add"><i class="layui-icon"></i>添加客户</button> |
||||
|
<button type="button" class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm" id="toAll" style="margin-right: 10px"><i class="layui-icon"></i>导入客户</button> |
||||
|
<button type="button" class="layui-btn layui-btn-danger layui-btn-radius layui-btn-sm" id="moveGh" lay-event="moveGh"><i class="layui-icon"></i>移入公海</button> |
||||
|
<button type="button" class="layui-btn layui-btn-primary layui-btn-radius layui-btn-sm" id="alterAll" lay-event="alterAll"><i class="layui-icon"></i>转移客户</button> |
||||
|
|
||||
|
</script> |
||||
|
<!-- 客户名称、地区、行业类别、联系人、联系号码、客户级别、客户状态、用户名、备注 --> |
||||
|
|
||||
|
{include file="common/foot"/} |
||||
|
<script> |
||||
|
layui.use(['table','form','upload','util','laydate'], function() { |
||||
|
var table = layui.table,form = layui.form,laydate = layui.laydate, $ = layui.jquery,upload = layui.upload,util = layui.util; |
||||
|
var tableIn = table.render({ |
||||
|
elem: '#table-list', |
||||
|
url: '{:url("index")}', |
||||
|
method: 'post', |
||||
|
toolbar: '#topBtn', |
||||
|
defaultToolbar:['filter','print','exports'], |
||||
|
cols: [[ |
||||
|
{checkbox:true,fixed: true}, |
||||
|
{field: 'id', title: 'ID', width: 80, fixed: true,hide:true}, |
||||
|
{field: 'kh_name', title: '客户名称',templet:function (res) { |
||||
|
return "<a href='{:url('dialogue')}?id="+res.id+"'>"+res.kh_name+"</a>"; |
||||
|
},minWidth: 120}, |
||||
|
|
||||
|
{field: 'pro', templet: function (d) { |
||||
|
var returnHtml = ''; |
||||
|
returnHtml += d.pro ; |
||||
|
returnHtml += d.city ; |
||||
|
returnHtml += d.area ; |
||||
|
return returnHtml |
||||
|
}, title: '地区',minWidth: 210 |
||||
|
}, |
||||
|
{field: 'house', title: '小区名称',minWidth: 150}, |
||||
|
{field: 'bn', templet: function (d) { |
||||
|
var returnHtml = ''; |
||||
|
returnHtml += d.building ; |
||||
|
returnHtml += '-'; |
||||
|
returnHtml += d.number ; |
||||
|
return returnHtml |
||||
|
}, title: '门牌号',minWidth: 100 |
||||
|
}, |
||||
|
{field: 'phone', title: '联系号码',width: 120 }, |
||||
|
{field: 'kh_rank', title: '客户级别',hide:true}, |
||||
|
{field: 'kh_status', title: '客户状态',hide:true }, |
||||
|
{field: 'issuccess', title: '成交状态',templet:function (res) { |
||||
|
var issuccess = res.issuccess; |
||||
|
if (issuccess == 1) { |
||||
|
return '已成交'; |
||||
|
}else{ |
||||
|
return '未成交'; |
||||
|
} |
||||
|
} ,hide:true}, |
||||
|
// {field: 'next_up_time', title: '下次跟进时间',hide:true }, |
||||
|
{field: 'xs_source', title: '客户来源',hide:true}, |
||||
|
{field: 'remark', title: '备注',hide:true}, |
||||
|
{field: 'pr_user', title: '负责人',hide:false,minWidth: 100 }, |
||||
|
{field: 'pr_gh_type', title: '所属公海',hide:true }, |
||||
|
{field: 'to_gh_time', title: '划入公海时间',hide:true }, |
||||
|
{field: 'ut_time', title: '更新于',hide:true}, |
||||
|
{field: 'at_time', title: '创建时间',minWidth: 150 }, |
||||
|
{field: 'at_user', title: '创建人',hide:true}, |
||||
|
{field: 'pr_user_bef', title: '前负责人',hide:true }, |
||||
|
{field: 'sort', title: '等级',width: 60}, |
||||
|
{width: 220, align: 'center', toolbar: '#action'} |
||||
|
]], |
||||
|
limit: 100, //每页默认显示的数量 |
||||
|
|
||||
|
page: {limits:[10, 20, 30, 40, 50,100,9999999]}, |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
table.on('tool(table-list)', function(obj) { |
||||
|
var data = obj.data; |
||||
|
|
||||
|
if (obj.event === 'del') { |
||||
|
layer.confirm('您确定要删除这个客户吗?', function(index){ |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('del')}",{id:data.id},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code===0){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg('操作失败!',{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
} |
||||
|
else if(obj.event === 'edit'){ |
||||
|
layer_add("编辑客户","{:url('Client/edit')}?id="+data.id); |
||||
|
}else if(obj.event === 'alter'){ |
||||
|
layer_add("转移客户","{:url('Client/alterPrUser')}?ids="+data.id) |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
$('body').on('click','#add',function() { |
||||
|
var indexOpen = layer.open({ |
||||
|
type: 2, |
||||
|
title: '添加客户', |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['100%','86%'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: false, //开启最大化最小化按钮 |
||||
|
content: ["{:url('Client/add')}"] |
||||
|
}); |
||||
|
}) |
||||
|
|
||||
|
|
||||
|
|
||||
|
//监听事件 |
||||
|
table.on('toolbar(table-list)', function(obj){ |
||||
|
|
||||
|
var checkStatus = table.checkStatus(obj.config.id) |
||||
|
,data = checkStatus.data; //获取选中的数据 |
||||
|
switch(obj.event){ |
||||
|
case 'moveGh': |
||||
|
if(data.length === 0){ |
||||
|
layer.msg('请选择一行'); |
||||
|
// } else if(data.length > 1){ |
||||
|
// layer.msg('只能同时编辑一个'); |
||||
|
} else { |
||||
|
//console.log(data); |
||||
|
alterList = []; //定义需要转移的数组 |
||||
|
data.forEach(function (obj,index) { |
||||
|
alterList.push(obj.id); |
||||
|
}); |
||||
|
var currConfirm = layer.confirm('您确定这'+data.length+'个客户转入公海吗?',function (index) { |
||||
|
|
||||
|
/*layer.alert('编辑 [id]:'+ checkStatus.data[0]['id']);*/ |
||||
|
var indexOpen = layer.open({ |
||||
|
type: 2, |
||||
|
title: '移入公海', |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['100%','86%'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: false, //开启最大化最小化按钮 |
||||
|
content: ["{:url('Client/toMoveGh')}?ids="+alterList] |
||||
|
}); |
||||
|
}); |
||||
|
} |
||||
|
break; |
||||
|
case 'alterAll': |
||||
|
var checkStatus = table.checkStatus(obj.config.id) |
||||
|
,data=checkStatus.data;//获取选中的数据 |
||||
|
|
||||
|
if(data.length > 0){ |
||||
|
alterList = []; //定义需要转移的数组 |
||||
|
data.forEach(function (obj,index) { |
||||
|
alterList.push(obj.id); |
||||
|
}); |
||||
|
|
||||
|
var currConfirm = layer.confirm('您确定要转移这'+data.length+'个客户吗?',function (index) { |
||||
|
|
||||
|
|
||||
|
layer.close(currConfirm); |
||||
|
var indexOpen = layer.open({ |
||||
|
type: 2, |
||||
|
title: '转移客户', |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['100%','86%'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: false, //开启最大化最小化按钮 |
||||
|
content: ["{:url('Client/alterPrUser')}?ids="+alterList] |
||||
|
|
||||
|
}); |
||||
|
|
||||
|
|
||||
|
}); |
||||
|
|
||||
|
|
||||
|
}else { |
||||
|
layer.msg("请选择需要转移的客户"); |
||||
|
} |
||||
|
break; |
||||
|
}; |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
//监听搜索 |
||||
|
form.on('submit(LAY-app-contlist-search)', function(data){ |
||||
|
var field = data.field; |
||||
|
|
||||
|
/* layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
|
||||
|
table.reload('table-list', { |
||||
|
url:"{:url('Client/clientSearch')}", |
||||
|
where: { |
||||
|
keyword: data.field |
||||
|
}, |
||||
|
page:{ |
||||
|
curr:1 |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
}); |
||||
|
|
||||
|
laydate.render({ |
||||
|
elem: '#at_time' |
||||
|
}); |
||||
|
|
||||
|
//批量导入 |
||||
|
var indexMsg; |
||||
|
//上传xls文件 |
||||
|
upload.render({ //允许上传的文件后缀 |
||||
|
elem: '#toAll' |
||||
|
,url: "{:url('Client/xlsUpload')}" |
||||
|
,accept: 'file' //普通文件 |
||||
|
,field:'xlsFile' |
||||
|
,exts: 'xls|xlsx' //只允许上传压缩文件 |
||||
|
|
||||
|
,before: function(obj){ //obj参数包含的信息,跟 choose回调完全一致,可参见上文。 |
||||
|
indexMsg = layer.msg('正在导入数据,请稍等...', { |
||||
|
icon: 16, |
||||
|
shade: 0.04, |
||||
|
time:false //取消自动关闭 |
||||
|
}); |
||||
|
} |
||||
|
,done: function(res){ |
||||
|
layer.close(indexMsg); //关闭信息框 |
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg, {time: 1800, icon: 1}, function () { |
||||
|
location.reload() |
||||
|
}); |
||||
|
}else { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 2}); |
||||
|
} |
||||
|
} |
||||
|
,error: function(index, upload){ |
||||
|
layer.close(indexMsg); //关闭信息框 |
||||
|
layer.msg('系统繁忙,请稍后...', {time: 1800, icon: 1}); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
}); |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
/*添加*/ |
||||
|
function layer_add(title,url){ |
||||
|
|
||||
|
var indexOpen = layer.open({ |
||||
|
type: 2, |
||||
|
title: title, |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['100%','80%'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: true, //开启最大化最小化按钮 |
||||
|
content:[url], |
||||
|
|
||||
|
|
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> |
||||
|
|
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,124 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<title>{:config('sys_name')}后台管理</title> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black"> |
||||
|
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
|
<meta name="format-detection" content="telephone=no"> |
||||
|
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css" media="all" /> |
||||
|
<link rel="stylesheet" href="/static/admin/css/global.css" media="all"> |
||||
|
<link rel="stylesheet" href="/static/common/css/font.css" media="all"> |
||||
|
<style> |
||||
|
|
||||
|
.layui-form-pane .layui-form-label { |
||||
|
width: 110px; |
||||
|
padding: 8px 15px; |
||||
|
height: 38px; |
||||
|
line-height: 20px; |
||||
|
border-width: 0px; |
||||
|
border-style: none; |
||||
|
border-radius: 2px 0 0 2px; |
||||
|
text-align: center; |
||||
|
background-color: #FBFBFB; |
||||
|
overflow: hidden; |
||||
|
box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
|
</head> |
||||
|
<body class="skin-<?php if(!empty($_COOKIE['skin'])){echo $_COOKIE['skin'];}else{echo '0';setcookie('skin','0');}?>"> |
||||
|
|
||||
|
|
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
|
||||
|
<!-- <input type="hidden" id="id" name="id" lay-verify="required" value="{$result.id}" class="layui-input"> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">手机</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" disabled id="phone" disabled name="phone" value="{$result.phone}" lay-verify="required" placeholder="请输入手机号码" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="kh_name" disabled name="kh_name" value="{$result.kh_name}" lay-verify="required" placeholder="请输入客户名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> --> |
||||
|
|
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="ids" name="ids" disabled value="{$ids}" lay-verify="required" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">公海类型</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<select name="pr_gh_type" id="pr_gh_type"> |
||||
|
<option value="">请选择公海类型</option> |
||||
|
|
||||
|
{volist name='libTypeList' id='vo'} |
||||
|
<option value="{$vo.type_name}">{$vo.type_name}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">提交保存</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
/* layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
$.post("{:url('Client/toMoveGh')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
layer.close(layer.index); |
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,160 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<title>{:config('sys_name')}后台管理</title> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black"> |
||||
|
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
|
<meta name="format-detection" content="telephone=no"> |
||||
|
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css" media="all" /> |
||||
|
<link rel="stylesheet" href="/static/admin/css/global.css" media="all"> |
||||
|
<link rel="stylesheet" href="/static/common/css/font.css" media="all"> |
||||
|
|
||||
|
<style> |
||||
|
|
||||
|
.filtrate-warp{ |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .title{ |
||||
|
padding: 5px 12px 7px 12px; |
||||
|
font-size: 14px; |
||||
|
font-weight: normal; |
||||
|
text-align: left; |
||||
|
cursor: pointer; |
||||
|
width: 90px; |
||||
|
background-color: transparent!important; |
||||
|
color: black!important; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .title:hover{ |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .flag{ |
||||
|
padding: 6px 12px 6px 12px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .flag:hover{ |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .layui-badge:hover{ |
||||
|
color: white!important; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
|
|
||||
|
</head> |
||||
|
<body class="skin-<?php if(!empty($_COOKIE['skin'])){echo $_COOKIE['skin'];}else{echo '0';setcookie('skin','0');}?>"> |
||||
|
|
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
|
||||
|
<table class="layui-table" id="table-list" lay-filter="table-list"></table> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<script type="text/html" id="action"> |
||||
|
<a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon"></i>编辑</a> |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon"></i>删除</a> |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<script type="text/html" id="topBtn"> |
||||
|
<button type="button" class="layui-btn layui-btn-primary layui-btn-radius layui-btn-sm" id="add"><i class="layui-icon"></i>添加客户级别</button> |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
{include file="common/foot"/} |
||||
|
<script> |
||||
|
layui.use(['table','form','upload','util','laydate'], function() { |
||||
|
var table = layui.table,form = layui.form,laydate = layui.laydate, $ = layui.jquery,upload = layui.upload,util = layui.util; |
||||
|
var tableIn = table.render({ |
||||
|
elem: '#table-list', |
||||
|
url: '{:url("rankList")}', |
||||
|
method: 'post', |
||||
|
toolbar: '#topBtn', |
||||
|
page: true, |
||||
|
cols: [[ |
||||
|
{checkbox:true,fixed: true}, |
||||
|
{field: 'id', title: 'ID', width: 120, fixed: true}, |
||||
|
{field: 'rank_name', title: '客户级别', }, |
||||
|
{field: 'add_time', title:'创建时间',templet:function (res) { |
||||
|
return util.toDateString(res.add_time = (res.add_time * 1000)); |
||||
|
}}, |
||||
|
{title:'操作',width: 260, align: 'center', toolbar: '#action'} |
||||
|
]], |
||||
|
limit: 10 //每页默认显示的数量 |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
table.on('tool(table-list)', function(obj) { |
||||
|
var data = obj.data; |
||||
|
|
||||
|
if (obj.event === 'del') { |
||||
|
layer.confirm('您确定要删除吗?', function(index){ |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('rankDel')}",{id:data.id},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code===0){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg('操作失败!',{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
}else if(obj.event === 'edit'){ |
||||
|
layer_add("编辑客户级别","{:url('Client/rankEdit')}?id="+data.id); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
$('body').on('click','#add',function() { |
||||
|
var indexOpen = layer.open({ |
||||
|
type: 2, |
||||
|
title: '添加客户级别', |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['500px','260px'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: false, //开启最大化最小化按钮 |
||||
|
content: ["{:url('Client/rankAdd')}"] |
||||
|
}); |
||||
|
}) |
||||
|
|
||||
|
|
||||
|
}); |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
/*添加*/ |
||||
|
function layer_add(title,url){ |
||||
|
var index = layer.open({ |
||||
|
type: 2, |
||||
|
title: title, |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['550px', '350px'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: true, //开启最大化最小化按钮 |
||||
|
content: [url,'no'] |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,56 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户级别</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="rank_name" name="rank_name" lay-verify="required" placeholder="请输入客户级别名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">提交保存</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
/* layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
$.post("{:url('Client/rankAdd')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
layer.close(layer.index); |
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,58 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
|
||||
|
<input type="hidden" name="id" value="{$result.id}"> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户级别</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="rank_name" name="rank_name" value="{$result.rank_name}" lay-verify="required" placeholder="请输入客户级别名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">提交保存</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
/* layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
$.post("{:url('Client/rankEdit')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
layer.close(layer.index); |
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,156 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<title>{:config('sys_name')}后台管理</title> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black"> |
||||
|
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
|
<meta name="format-detection" content="telephone=no"> |
||||
|
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css" media="all" /> |
||||
|
<link rel="stylesheet" href="/static/admin/css/global.css" media="all"> |
||||
|
<link rel="stylesheet" href="/static/common/css/font.css" media="all"> |
||||
|
|
||||
|
<style> |
||||
|
|
||||
|
.filtrate-warp{ |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .title{ |
||||
|
padding: 5px 12px 7px 12px; |
||||
|
font-size: 14px; |
||||
|
font-weight: normal; |
||||
|
text-align: left; |
||||
|
cursor: pointer; |
||||
|
width: 90px; |
||||
|
background-color: transparent!important; |
||||
|
color: black!important; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .title:hover{ |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .flag{ |
||||
|
padding: 6px 12px 6px 12px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .flag:hover{ |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .layui-badge:hover{ |
||||
|
color: white!important; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
|
|
||||
|
</head> |
||||
|
<body class="skin-<?php if(!empty($_COOKIE['skin'])){echo $_COOKIE['skin'];}else{echo '0';setcookie('skin','0');}?>"> |
||||
|
|
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
|
||||
|
<table class="layui-table" id="table-list" lay-filter="table-list"></table> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<script type="text/html" id="action"> |
||||
|
|
||||
|
<a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon"></i>编辑</a> |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon"></i>删除</a> |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<script type="text/html" id="topBtn"> |
||||
|
<button type="button" class="layui-btn layui-btn-primary layui-btn-radius layui-btn-sm" id="add"><i class="layui-icon"></i>添加客户状态</button> |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
{include file="common/foot"/} |
||||
|
<script> |
||||
|
layui.use(['table','form','upload','util','laydate'], function() { |
||||
|
var table = layui.table,form = layui.form,laydate = layui.laydate, $ = layui.jquery,upload = layui.upload,util = layui.util; |
||||
|
var tableIn = table.render({ |
||||
|
elem: '#table-list', |
||||
|
url: '{:url("statusList")}', |
||||
|
method: 'post', |
||||
|
toolbar: '#topBtn', |
||||
|
page: true, |
||||
|
cols: [[ |
||||
|
{checkbox:true,fixed: true}, |
||||
|
{field: 'id', title: 'ID', width: 120, fixed: true}, |
||||
|
{field: 'status_name', title: '客户状态', }, |
||||
|
{field: 'add_time', title:'创建时间',templet:function (res) { |
||||
|
return util.toDateString(res.add_time = (res.add_time * 1000)); |
||||
|
}}, |
||||
|
{title:'操作',width: 260, align: 'center', toolbar: '#action'} |
||||
|
]], |
||||
|
limit: 10 //每页默认显示的数量 |
||||
|
}); |
||||
|
|
||||
|
$('body').on('click','#add',function() { |
||||
|
var indexOpen = layer.open({ |
||||
|
type: 2, |
||||
|
title: '添加客户状态', |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['500px','260px'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: false, //开启最大化最小化按钮 |
||||
|
content: ["{:url('Client/statusAdd')}"] |
||||
|
}); |
||||
|
}) |
||||
|
|
||||
|
|
||||
|
table.on('tool(table-list)', function(obj) { |
||||
|
var data = obj.data; |
||||
|
|
||||
|
if (obj.event === 'del') { |
||||
|
layer.confirm('您确定要删除吗?', function(index){ |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('statusDel')}",{id:data.id},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code===0){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg('操作失败!',{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
}else if(obj.event === 'edit'){ |
||||
|
layer_add("编辑客户状态","{:url('Client/statusEdit')}?id="+data.id); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
}); |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
/*添加*/ |
||||
|
function layer_add(title,url){ |
||||
|
var index = layer.open({ |
||||
|
type: 2, |
||||
|
title: title, |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['550px', '350px'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: true, //开启最大化最小化按钮 |
||||
|
content: [url,'no'] |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,56 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户状态</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="status_name" name="status_name" lay-verify="required" placeholder="请输入客户状态名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">提交保存</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
/* layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
$.post("{:url('Client/statusAdd')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
layer.close(layer.index); |
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,58 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
|
||||
|
<input type="hidden" name="id" value="{$result.id}"> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户状态</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="status_name" name="status_name" value="{$result.status_name}" lay-verify="required" placeholder="请输入客户状态名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">提交保存</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
/* layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
$.post("{:url('Client/statusEdit')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
layer.close(layer.index); |
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,169 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<title>{:config('sys_name')}后台管理</title> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black"> |
||||
|
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
|
<meta name="format-detection" content="telephone=no"> |
||||
|
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css" media="all" /> |
||||
|
<link rel="stylesheet" href="/static/admin/css/global.css" media="all"> |
||||
|
<link rel="stylesheet" href="/static/common/css/font.css" media="all"> |
||||
|
<style> |
||||
|
|
||||
|
.layui-form-pane .layui-form-label { |
||||
|
width: 110px; |
||||
|
padding: 8px 15px; |
||||
|
height: 38px; |
||||
|
line-height: 20px; |
||||
|
border-width: 0px; |
||||
|
border-style: none; |
||||
|
border-radius: 2px 0 0 2px; |
||||
|
text-align: center; |
||||
|
background-color: #FBFBFB; |
||||
|
overflow: hidden; |
||||
|
box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
|
</head> |
||||
|
<body class="skin-<?php if(!empty($_COOKIE['skin'])){echo $_COOKIE['skin'];}else{echo '0';setcookie('skin','0');}?>"> |
||||
|
|
||||
|
|
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
<!-- 线索名称、地区、行业类别、线索来源、联系人、联系号码、用户名、线索状态、备注 --> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">线索名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="xs_name" name="xs_name" lay-verify="required" placeholder="请输入线索名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">地区</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="xs_area" name="xs_area" lay-verify="required" placeholder="请输入地区" class="layui-input"> |
||||
|
<!-- <select name="xs_area" id="xs_area"> |
||||
|
<option value="">请选择地区</option> |
||||
|
|
||||
|
{volist name='xsAreaList' id='vo'} |
||||
|
<option value="{$vo.area_name}">{$vo.area_name}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> --> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">行业类别</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="kh_hangye" name="kh_hangye" lay-verify="required" placeholder="请输入行业类别" class="layui-input"> |
||||
|
<!-- <select name="kh_hangye" id="kh_hangye"> |
||||
|
<option value="">请选择行业类别</option> |
||||
|
|
||||
|
{volist name='xsHangyeList' id='vo'} |
||||
|
<option value="{$vo.hy_name}">{$vo.hy_name}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> --> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">线索来源</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<select name="xs_source" id="xs_source"> |
||||
|
<option value="">请选择线索来源</option> |
||||
|
|
||||
|
{volist name='xsSourceList' id='vo'} |
||||
|
<option value="{$vo.source_name}">{$vo.source_name}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">微信号</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="kh_contact" name="kh_contact" lay-verify="required" placeholder="请输入微信号" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">联系号码</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="phone" name="phone" lay-verify="required" placeholder="请输入联系号码" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">线索状态</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<select name="xs_status" id="xs_status"> |
||||
|
<option value="">请选择线索状态</option> |
||||
|
|
||||
|
{volist name='xsStatusList' id='vo'} |
||||
|
<option value="{$vo.status_name}">{$vo.status_name}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- <div class="layui-form-item"> |
||||
|
<label class="layui-form-label">用户名</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="kh_username" name="kh_username" lay-verify="required" placeholder="请输入用户名" class="layui-input"> |
||||
|
</div> |
||||
|
</div> --> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">备注</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<textarea placeholder="请输入备注信息" class="layui-textarea" name="remark"></textarea> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">提交保存</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
/* layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
$.post("{:url('Clues/add')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
layer.close(layer.index); |
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,76 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">线索</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="ids" name="ids" disabled value="{$ids}" lay-verify="required" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">负责人</label> |
||||
|
<div class="layui-input-4" > |
||||
|
<select id="username" name="username" lay-verify="required"> |
||||
|
<option value="">请选择负责人</option> |
||||
|
{volist name='adminResult' id='vo'} |
||||
|
<option value="{$vo.username}">{$vo.username}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">确认分配</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
/*layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
$.post("{:url('Clues/alterPrUser')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:1000},function () { |
||||
|
var index = parent.layer.getFrameIndex(window.name); //获取窗口索引 |
||||
|
parent.layer.close(index); // 关闭layer |
||||
|
}); |
||||
|
|
||||
|
//window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,156 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<title>{:config('sys_name')}后台管理</title> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black"> |
||||
|
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
|
<meta name="format-detection" content="telephone=no"> |
||||
|
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css" media="all" /> |
||||
|
<link rel="stylesheet" href="/static/admin/css/global.css" media="all"> |
||||
|
<link rel="stylesheet" href="/static/common/css/font.css" media="all"> |
||||
|
|
||||
|
<style> |
||||
|
|
||||
|
.filtrate-warp{ |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .title{ |
||||
|
padding: 5px 12px 7px 12px; |
||||
|
font-size: 14px; |
||||
|
font-weight: normal; |
||||
|
text-align: left; |
||||
|
cursor: pointer; |
||||
|
width: 90px; |
||||
|
background-color: transparent!important; |
||||
|
color: black!important; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .title:hover{ |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .flag{ |
||||
|
padding: 6px 12px 6px 12px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .flag:hover{ |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .layui-badge:hover{ |
||||
|
color: white!important; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
|
|
||||
|
</head> |
||||
|
<body class="skin-<?php if(!empty($_COOKIE['skin'])){echo $_COOKIE['skin'];}else{echo '0';setcookie('skin','0');}?>"> |
||||
|
|
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
|
||||
|
<table class="layui-table" id="table-list" lay-filter="table-list"></table> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<script type="text/html" id="action"> |
||||
|
|
||||
|
<a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon"></i>编辑</a> |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon"></i>删除</a> |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<script type="text/html" id="topBtn"> |
||||
|
<button type="button" class="layui-btn layui-btn-primary layui-btn-radius layui-btn-sm" id="add"><i class="layui-icon"></i>添加地区来源</button> |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
{include file="common/foot"/} |
||||
|
<script> |
||||
|
layui.use(['table','form','upload','util','laydate'], function() { |
||||
|
var table = layui.table,form = layui.form,laydate = layui.laydate, $ = layui.jquery,upload = layui.upload,util = layui.util; |
||||
|
var tableIn = table.render({ |
||||
|
elem: '#table-list', |
||||
|
url: '{:url("areaList")}', |
||||
|
method: 'post', |
||||
|
toolbar: '#topBtn', |
||||
|
page: true, |
||||
|
cols: [[ |
||||
|
{checkbox:true,fixed: true}, |
||||
|
{field: 'id', title: 'ID', width: 120, fixed: true}, |
||||
|
{field: 'area_name', title: '地区来源', }, |
||||
|
{field: 'add_time', title:'创建时间',templet:function (res) { |
||||
|
return util.toDateString(res.add_time = (res.add_time * 1000)); |
||||
|
}}, |
||||
|
{title:'操作',width: 260, align: 'center', toolbar: '#action'} |
||||
|
]], |
||||
|
limit: 10 //每页默认显示的数量 |
||||
|
}); |
||||
|
|
||||
|
$('body').on('click','#add',function() { |
||||
|
var indexOpen = layer.open({ |
||||
|
type: 2, |
||||
|
title: '添加地区来源', |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['500px','260px'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: false, //开启最大化最小化按钮 |
||||
|
content: ["{:url('Clues/areaAdd')}"] |
||||
|
}); |
||||
|
}) |
||||
|
|
||||
|
|
||||
|
table.on('tool(table-list)', function(obj) { |
||||
|
var data = obj.data; |
||||
|
|
||||
|
if (obj.event === 'del') { |
||||
|
layer.confirm('您确定要删除吗?', function(index){ |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('areaDel')}",{id:data.id},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code===0){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg('操作失败!',{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
}else if(obj.event === 'edit'){ |
||||
|
layer_add("编辑地区来源","{:url('Clues/areaEdit')}?id="+data.id); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
}); |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
/*添加*/ |
||||
|
function layer_add(title,url){ |
||||
|
var index = layer.open({ |
||||
|
type: 2, |
||||
|
title: title, |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['550px', '350px'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: true, //开启最大化最小化按钮 |
||||
|
content: [url,'no'] |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,56 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">地区来源</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="area_name" name="area_name" lay-verify="required" placeholder="请输入地区来源名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">提交保存</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
/* layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
$.post("{:url('Clues/areaAdd')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
layer.close(layer.index); |
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,58 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
|
||||
|
<input type="hidden" name="id" value="{$result.id}"> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">地区来源</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="area_name" name="area_name" value="{$result.area_name}" lay-verify="required" placeholder="请输入线索状态名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">提交保存</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
/* layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
$.post("{:url('Clues/areaEdit')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
layer.close(layer.index); |
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,172 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<title>{:config('sys_name')}后台管理</title> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black"> |
||||
|
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
|
<meta name="format-detection" content="telephone=no"> |
||||
|
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css" media="all" /> |
||||
|
<link rel="stylesheet" href="/static/admin/css/global.css" media="all"> |
||||
|
<link rel="stylesheet" href="/static/common/css/font.css" media="all"> |
||||
|
<style> |
||||
|
|
||||
|
.layui-form-pane .layui-form-label { |
||||
|
width: 110px; |
||||
|
padding: 8px 15px; |
||||
|
height: 38px; |
||||
|
line-height: 20px; |
||||
|
border-width: 0px; |
||||
|
border-style: none; |
||||
|
border-radius: 2px 0 0 2px; |
||||
|
text-align: center; |
||||
|
background-color: #FBFBFB; |
||||
|
overflow: hidden; |
||||
|
box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
|
</head> |
||||
|
<body class="skin-<?php if(!empty($_COOKIE['skin'])){echo $_COOKIE['skin'];}else{echo '0';setcookie('skin','0');}?>"> |
||||
|
|
||||
|
|
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
|
||||
|
|
||||
|
<input type="hidden" id="id" name="id" lay-verify="required" value="{$result.id}" class="layui-input"> |
||||
|
|
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">线索名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="xs_name" name="xs_name" value="{$result.xs_name}" lay-verify="required" placeholder="请输入线索名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">地区</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="xs_area" name="xs_area" lay-verify="required" placeholder="请输入地区" class="layui-input" value="{$result.xs_area}"> |
||||
|
<!-- <select name="xs_area" id="xs_area"> |
||||
|
<option value="">请选择地区</option> |
||||
|
|
||||
|
{volist name='xsAreaList' id='vo'} |
||||
|
<option value="{$vo.area_name}" {in name="$result.xs_area" value="$vo.area_name"} selected {/in}>{$vo.area_name}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> --> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">行业类别</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="kh_hangye" name="kh_hangye" lay-verify="required" placeholder="请输入地区" class="layui-input" value="{$result.kh_hangye}"> |
||||
|
<!-- <select name="kh_hangye" id="kh_hangye"> |
||||
|
<option value="">请选择行业类别</option> |
||||
|
|
||||
|
{volist name='xsHangyeList' id='vo'} |
||||
|
<option value="{$vo.hy_name}" {in name="$result.kh_hangye" value="$vo.hy_name"} selected {/in}>{$vo.hy_name}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> --> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">线索来源</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<select name="xs_source" id="xs_source"> |
||||
|
<option value="">请选择线索来源</option> |
||||
|
|
||||
|
{volist name='xsSourceList' id='vo'} |
||||
|
<option value="{$vo.source_name}" {in name="$result.xs_source" value="$vo.source_name"} selected {/in}>{$vo.source_name}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">微信号</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="kh_contact" name="kh_contact" value="{$result.kh_contact}" lay-verify="required" placeholder="请输入微信号" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">联系号码</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" disabled id="phone" name="phone" value="{$result.phone}" lay-verify="required" placeholder="请输入联系号码" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">线索状态</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<select name="xs_status" id="xs_status"> |
||||
|
<option value="">请选择线索状态</option> |
||||
|
|
||||
|
{volist name='xsStatusList' id='vo'} |
||||
|
<option value="{$vo.status_name}" {in name="$result.xs_status" value="$vo.status_name"} selected {/in}>{$vo.status_name}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- <div class="layui-form-item"> |
||||
|
<label class="layui-form-label">用户名</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="kh_username" name="kh_username" lay-verify="required" placeholder="请输入用户名" value="{$result.kh_username}" class="layui-input"> |
||||
|
</div> |
||||
|
</div> --> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">备注</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<textarea placeholder="请输入备注信息" class="layui-textarea" name="remark">{$result.remark}</textarea> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">提交保存</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
$.post("{:url('Clues/edit')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
layer.close(layer.index); |
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,330 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<title>{:config('sys_name')}后台管理</title> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black"> |
||||
|
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
|
<meta name="format-detection" content="telephone=no"> |
||||
|
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css" media="all" /> |
||||
|
<link rel="stylesheet" href="/static/admin/css/global.css" media="all"> |
||||
|
<link rel="stylesheet" href="/static/common/css/font.css" media="all"> |
||||
|
|
||||
|
<style> |
||||
|
|
||||
|
.filtrate-warp{ |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .title{ |
||||
|
padding: 5px 12px 7px 12px; |
||||
|
font-size: 14px; |
||||
|
font-weight: normal; |
||||
|
text-align: left; |
||||
|
cursor: pointer; |
||||
|
width: 90px; |
||||
|
background-color: transparent!important; |
||||
|
color: black!important; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .title:hover{ |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .flag{ |
||||
|
padding: 6px 12px 6px 12px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .flag:hover{ |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .layui-badge:hover{ |
||||
|
color: white!important; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
|
|
||||
|
</head> |
||||
|
<body class="skin-<?php if(!empty($_COOKIE['skin'])){echo $_COOKIE['skin'];}else{echo '0';setcookie('skin','0');}?>"> |
||||
|
|
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
|
||||
|
|
||||
|
<fieldset class="layui-elem-field " > |
||||
|
<legend>高级查询</legend> |
||||
|
|
||||
|
<div class="layui-card" style="box-shadow: none;margin-top: 10px"> |
||||
|
<div class="layui-form layui-card-header layuiadmin-card-header-auto" style="border-bottom: transparent;height: auto" > |
||||
|
|
||||
|
<div class="layui-form-item" style="text-align: left;padding-left: 20px;"> |
||||
|
|
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label">日期查询:</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<input type="text" class="layui-input" autocomplete="off" name="at_time" id="at_time" placeholder="请输入日期查询"> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label" style="margin-left: 5px">线索来源:</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<select name="xs_source" id="xs_source"> |
||||
|
<option value="">请选择线索来源</option> |
||||
|
|
||||
|
{volist name='xsSourceList' id='vo'} |
||||
|
<option value="{$vo.source_name}">{$vo.source_name}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label" style="">手机:</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<input type="text" id="phone" name="phone" placeholder="请输入手机号码" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label" style="">时间查询:</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<select name="timebucket"> |
||||
|
<option value="">请选择时间</option> |
||||
|
<option value="today">今天</option> |
||||
|
<option value="yesterday">昨天</option> |
||||
|
<option value="week">本周</option> |
||||
|
<option value="last week">上周</option> |
||||
|
<option value="month">本月</option> |
||||
|
<option value="last month">上月</option> |
||||
|
<option value="year">今年</option> |
||||
|
<option value="last year">去年</option> |
||||
|
<option value="-2 hours">两个小时内</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<div class="layui-inline" style="float: right;padding-bottom: 15px"> |
||||
|
<button class="layui-btn layuiadmin-btn-list" lay-submit lay-filter="LAY-app-contlist-search"> |
||||
|
<i class="layui-icon layui-icon-search layuiadmin-button-btn" style="vertical-align: sub;"></i>查询数据 |
||||
|
</button> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
</fieldset> |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
<table class="layui-table" id="table-list" lay-filter="table-list"></table> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<script type="text/html" id="action"> |
||||
|
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="alter"><i class="layui-icon"></i>抢</a> |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<script type="text/html" id="topBtn"> |
||||
|
{if $Think.session.aid == 1} |
||||
|
<button type="button" class="layui-btn layui-btn-primary layui-btn-radius layui-btn-sm" id="add"><i class="layui-icon"></i>添加线索</button> |
||||
|
<button type="button" class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm" id="toAll" style="margin-right: 10px"><i class="layui-icon"></i>导入线索</button> |
||||
|
{/if} |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
{include file="common/foot"/} |
||||
|
<script> |
||||
|
layui.use(['table','form','upload','util','laydate'], function() { |
||||
|
var table = layui.table,form = layui.form,laydate = layui.laydate, $ = layui.jquery,upload = layui.upload,util = layui.util; |
||||
|
|
||||
|
var tableIn = table.render({ |
||||
|
elem: '#table-list', |
||||
|
url: '{:url("index")}', |
||||
|
method: 'post', |
||||
|
toolbar: '#topBtn', |
||||
|
//page: true, |
||||
|
|
||||
|
cols: [[ |
||||
|
{checkbox:true,fixed: true}, |
||||
|
{field: 'id', title: 'ID', width: 80, fixed: true,hide:true}, |
||||
|
// {field: 'xs_name', title: '线索名称', }, |
||||
|
{field: 'xs_name', title: '线索名称'}, |
||||
|
{field: 'phone', title: '手机', }, |
||||
|
{field: 'xs_status', title: '线索状态', }, |
||||
|
{field: 'xs_source', title: '线索来源', }, |
||||
|
{field: 'xs_area', title: '地区来源', }, |
||||
|
// {field: 'last_up_records', title: '最新跟进记录',hide:true }, |
||||
|
{field: 'last_up_time', title: '实际跟进时间',hide:true }, |
||||
|
// {field: 'next_up_time', title: '下次跟进时间',hide:true }, |
||||
|
// {field: 'wechat', title: '微信号',hide:true }, |
||||
|
/* {field: 'no_day', title: '未跟进天数', },*/ |
||||
|
{field: 'remark', title: '备注', }, |
||||
|
// {field: 'pr_dep_bef', title: '前所属部门',hide:true }, |
||||
|
// {field: 'pr_dep', title: '所属部门',hide:true }, |
||||
|
{field: 'at_user', title: '创建人',hide:true}, |
||||
|
{field: 'pr_user', title: '负责人',hide:false }, |
||||
|
{field: 'pr_user_bef', title: '前负责人',hide:true }, |
||||
|
{field: 'ut_time', title: '更新于',hide:true}, |
||||
|
{field: 'at_time', title: '创建时间', }, |
||||
|
{field: 'kh_need', title: '客户需求',hide:true }, |
||||
|
{width: 100, align: 'center', toolbar: '#action'} |
||||
|
]], |
||||
|
limit: 100, //每页默认显示的数量 |
||||
|
|
||||
|
page: {limits:[10, 20, 30, 40, 50,100,9999999]}, |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
table.on('tool(table-list)', function(obj) { |
||||
|
var data = obj.data; |
||||
|
|
||||
|
if (obj.event === 'del') { |
||||
|
|
||||
|
} |
||||
|
else if(obj.event === 'alter'){ |
||||
|
layer.confirm('您确定要抢这个客户吗?', function(index){ |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('Clues/toTurnKh2')}",{id:data.id},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code===0){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg('操作失败!',{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
// 转为我的客户 |
||||
|
//layer_add("转移线索","{:url('Clues/toTurnKh')}?id="+data.id) |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
$('body').on('click','#add',function() { |
||||
|
var indexOpen = layer.open({ |
||||
|
type: 2, |
||||
|
title: '添加线索', |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['100%','86%'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: false, //开启最大化最小化按钮 |
||||
|
content: ["{:url('Clues/add')}"] |
||||
|
}); |
||||
|
}) |
||||
|
|
||||
|
|
||||
|
//监听搜索 |
||||
|
form.on('submit(LAY-app-contlist-search)', function(data){ |
||||
|
var field = data.field; |
||||
|
|
||||
|
/* layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
|
||||
|
table.reload('table-list', { |
||||
|
url:"{:url('Clues/cluesSearch')}", |
||||
|
where: { |
||||
|
keyword: data.field |
||||
|
}, |
||||
|
page:{ |
||||
|
curr:1 |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
}); |
||||
|
|
||||
|
|
||||
|
|
||||
|
laydate.render({ |
||||
|
elem: '#at_time' |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
//批量导入 |
||||
|
var indexMsg; |
||||
|
//上传xls文件 |
||||
|
upload.render({ //允许上传的文件后缀 |
||||
|
elem: '#toAll' |
||||
|
,url: "{:url('Clues/xlsUpload')}" |
||||
|
,accept: 'file' //普通文件 |
||||
|
,field:'xlsFile' |
||||
|
,exts: 'xls|xlsx' //只允许上传压缩文件 |
||||
|
|
||||
|
,before: function(obj){ //obj参数包含的信息,跟 choose回调完全一致,可参见上文。 |
||||
|
indexMsg = layer.msg('正在导入数据,请稍等...', { |
||||
|
icon: 16, |
||||
|
shade: 0.04, |
||||
|
time:false //取消自动关闭 |
||||
|
}); |
||||
|
} |
||||
|
,done: function(res){ |
||||
|
layer.close(indexMsg); //关闭信息框 |
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg, {time: 1800, icon: 1}, function () { |
||||
|
location.reload() |
||||
|
}); |
||||
|
}else { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 2}); |
||||
|
} |
||||
|
} |
||||
|
,error: function(index, upload){ |
||||
|
layer.close(indexMsg); //关闭信息框 |
||||
|
layer.msg('系统繁忙,请稍后...', {time: 1800, icon: 1}); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
|
||||
|
}); |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
/*添加*/ |
||||
|
function layer_add(title,url){ |
||||
|
var indexOpen = layer.open({ |
||||
|
type: 2, |
||||
|
title: title, |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['100%','80%'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: true, //开启最大化最小化按钮 |
||||
|
content: [url] |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,156 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<title>{:config('sys_name')}后台管理</title> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black"> |
||||
|
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
|
<meta name="format-detection" content="telephone=no"> |
||||
|
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css" media="all" /> |
||||
|
<link rel="stylesheet" href="/static/admin/css/global.css" media="all"> |
||||
|
<link rel="stylesheet" href="/static/common/css/font.css" media="all"> |
||||
|
|
||||
|
<style> |
||||
|
|
||||
|
.filtrate-warp{ |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .title{ |
||||
|
padding: 5px 12px 7px 12px; |
||||
|
font-size: 14px; |
||||
|
font-weight: normal; |
||||
|
text-align: left; |
||||
|
cursor: pointer; |
||||
|
width: 90px; |
||||
|
background-color: transparent!important; |
||||
|
color: black!important; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .title:hover{ |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .flag{ |
||||
|
padding: 6px 12px 6px 12px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .flag:hover{ |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .layui-badge:hover{ |
||||
|
color: white!important; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
|
|
||||
|
</head> |
||||
|
<body class="skin-<?php if(!empty($_COOKIE['skin'])){echo $_COOKIE['skin'];}else{echo '0';setcookie('skin','0');}?>"> |
||||
|
|
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
|
||||
|
<table class="layui-table" id="table-list" lay-filter="table-list"></table> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<script type="text/html" id="action"> |
||||
|
|
||||
|
<a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon"></i>编辑</a> |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon"></i>删除</a> |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<script type="text/html" id="topBtn"> |
||||
|
<button type="button" class="layui-btn layui-btn-primary layui-btn-radius layui-btn-sm" id="add"><i class="layui-icon"></i>添加线索来源</button> |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
{include file="common/foot"/} |
||||
|
<script> |
||||
|
layui.use(['table','form','upload','util','laydate'], function() { |
||||
|
var table = layui.table,form = layui.form,laydate = layui.laydate, $ = layui.jquery,upload = layui.upload,util = layui.util; |
||||
|
var tableIn = table.render({ |
||||
|
elem: '#table-list', |
||||
|
url: '{:url("sourceList")}', |
||||
|
method: 'post', |
||||
|
toolbar: '#topBtn', |
||||
|
page: true, |
||||
|
cols: [[ |
||||
|
{checkbox:true,fixed: true}, |
||||
|
{field: 'id', title: 'ID', width: 120, fixed: true}, |
||||
|
{field: 'source_name', title: '线索来源', }, |
||||
|
{field: 'add_time', title:'创建时间',templet:function (res) { |
||||
|
return util.toDateString(res.add_time = (res.add_time * 1000)); |
||||
|
}}, |
||||
|
{title:'操作',width: 260, align: 'center', toolbar: '#action'} |
||||
|
]], |
||||
|
limit: 10 //每页默认显示的数量 |
||||
|
}); |
||||
|
|
||||
|
$('body').on('click','#add',function() { |
||||
|
var indexOpen = layer.open({ |
||||
|
type: 2, |
||||
|
title: '添加线索来源', |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['500px','260px'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: false, //开启最大化最小化按钮 |
||||
|
content: ["{:url('Clues/sourceAdd')}"] |
||||
|
}); |
||||
|
}) |
||||
|
|
||||
|
|
||||
|
table.on('tool(table-list)', function(obj) { |
||||
|
var data = obj.data; |
||||
|
|
||||
|
if (obj.event === 'del') { |
||||
|
layer.confirm('您确定要删除吗?', function(index){ |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('sourceDel')}",{id:data.id},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code===0){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg('操作失败!',{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
}else if(obj.event === 'edit'){ |
||||
|
layer_add("编辑线索来源","{:url('Clues/sourceEdit')}?id="+data.id); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
}); |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
/*添加*/ |
||||
|
function layer_add(title,url){ |
||||
|
var index = layer.open({ |
||||
|
type: 2, |
||||
|
title: title, |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['550px', '350px'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: true, //开启最大化最小化按钮 |
||||
|
content: [url,'no'] |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,56 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">线索来源</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="source_name" name="source_name" lay-verify="required" placeholder="请输入线索来源名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">提交保存</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
/* layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
$.post("{:url('Clues/sourceAdd')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
layer.close(layer.index); |
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,58 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
|
||||
|
<input type="hidden" name="id" value="{$result.id}"> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">线索来源</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="source_name" name="source_name" value="{$result.source_name}" lay-verify="required" placeholder="请输入线索状态名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">提交保存</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
/* layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
$.post("{:url('Clues/sourceEdit')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
layer.close(layer.index); |
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,156 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<title>{:config('sys_name')}后台管理</title> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black"> |
||||
|
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
|
<meta name="format-detection" content="telephone=no"> |
||||
|
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css" media="all" /> |
||||
|
<link rel="stylesheet" href="/static/admin/css/global.css" media="all"> |
||||
|
<link rel="stylesheet" href="/static/common/css/font.css" media="all"> |
||||
|
|
||||
|
<style> |
||||
|
|
||||
|
.filtrate-warp{ |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .title{ |
||||
|
padding: 5px 12px 7px 12px; |
||||
|
font-size: 14px; |
||||
|
font-weight: normal; |
||||
|
text-align: left; |
||||
|
cursor: pointer; |
||||
|
width: 90px; |
||||
|
background-color: transparent!important; |
||||
|
color: black!important; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .title:hover{ |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .flag{ |
||||
|
padding: 6px 12px 6px 12px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .flag:hover{ |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.filtrate-warp .layui-badge:hover{ |
||||
|
color: white!important; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
|
|
||||
|
</head> |
||||
|
<body class="skin-<?php if(!empty($_COOKIE['skin'])){echo $_COOKIE['skin'];}else{echo '0';setcookie('skin','0');}?>"> |
||||
|
|
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
|
||||
|
<table class="layui-table" id="table-list" lay-filter="table-list"></table> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<script type="text/html" id="action"> |
||||
|
|
||||
|
<a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon"></i>编辑</a> |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon"></i>删除</a> |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<script type="text/html" id="topBtn"> |
||||
|
<button type="button" class="layui-btn layui-btn-primary layui-btn-radius layui-btn-sm" id="add"><i class="layui-icon"></i>添加线索状态</button> |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
{include file="common/foot"/} |
||||
|
<script> |
||||
|
layui.use(['table','form','upload','util','laydate'], function() { |
||||
|
var table = layui.table,form = layui.form,laydate = layui.laydate, $ = layui.jquery,upload = layui.upload,util = layui.util; |
||||
|
var tableIn = table.render({ |
||||
|
elem: '#table-list', |
||||
|
url: '{:url("statusList")}', |
||||
|
method: 'post', |
||||
|
toolbar: '#topBtn', |
||||
|
page: true, |
||||
|
cols: [[ |
||||
|
{checkbox:true,fixed: true}, |
||||
|
{field: 'id', title: 'ID', width: 120, fixed: true}, |
||||
|
{field: 'status_name', title: '线索状态', }, |
||||
|
{field: 'add_time', title:'创建时间',templet:function (res) { |
||||
|
return util.toDateString(res.add_time = (res.add_time * 1000)); |
||||
|
}}, |
||||
|
{title:'操作',width: 260, align: 'center', toolbar: '#action'} |
||||
|
]], |
||||
|
limit: 10 //每页默认显示的数量 |
||||
|
}); |
||||
|
|
||||
|
$('body').on('click','#add',function() { |
||||
|
var indexOpen = layer.open({ |
||||
|
type: 2, |
||||
|
title: '添加线索状态', |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['500px','260px'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: false, //开启最大化最小化按钮 |
||||
|
content: ["{:url('Clues/statusAdd')}"] |
||||
|
}); |
||||
|
}) |
||||
|
|
||||
|
|
||||
|
table.on('tool(table-list)', function(obj) { |
||||
|
var data = obj.data; |
||||
|
|
||||
|
if (obj.event === 'del') { |
||||
|
layer.confirm('您确定要删除吗?', function(index){ |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('statusDel')}",{id:data.id},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code===0){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg('操作失败!',{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
}else if(obj.event === 'edit'){ |
||||
|
layer_add("编辑线索状态","{:url('Clues/statusEdit')}?id="+data.id); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
}); |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
/*添加*/ |
||||
|
function layer_add(title,url){ |
||||
|
var index = layer.open({ |
||||
|
type: 2, |
||||
|
title: title, |
||||
|
closeBtn: 1, //是否显示关闭按钮 |
||||
|
area: ['550px', '350px'], |
||||
|
anim: 2, //动画 |
||||
|
shadeClose: false, //点击空白处是否关闭 |
||||
|
maxmin: true, //开启最大化最小化按钮 |
||||
|
content: [url,'no'] |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,56 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">线索状态</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="status_name" name="status_name" lay-verify="required" placeholder="请输入线索状态名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">提交保存</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
/* layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
$.post("{:url('Clues/statusAdd')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
layer.close(layer.index); |
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,58 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
|
||||
|
<input type="hidden" name="id" value="{$result.id}"> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">线索状态</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="status_name" name="status_name" value="{$result.status_name}" lay-verify="required" placeholder="请输入线索状态名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">提交保存</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
/* layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
$.post("{:url('Clues/statusEdit')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
layer.close(layer.index); |
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,149 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<title>{:config('sys_name')}后台管理</title> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black"> |
||||
|
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
|
<meta name="format-detection" content="telephone=no"> |
||||
|
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css" media="all" /> |
||||
|
<link rel="stylesheet" href="/static/admin/css/global.css" media="all"> |
||||
|
<link rel="stylesheet" href="/static/common/css/font.css" media="all"> |
||||
|
<style> |
||||
|
|
||||
|
.layui-form-pane .layui-form-label { |
||||
|
width: 110px; |
||||
|
padding: 8px 15px; |
||||
|
height: 38px; |
||||
|
line-height: 20px; |
||||
|
border-width: 0px; |
||||
|
border-style: none; |
||||
|
border-radius: 2px 0 0 2px; |
||||
|
text-align: center; |
||||
|
background-color: #FBFBFB; |
||||
|
overflow: hidden; |
||||
|
box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
|
</head> |
||||
|
<body class="skin-<?php if(!empty($_COOKIE['skin'])){echo $_COOKIE['skin'];}else{echo '0';setcookie('skin','0');}?>"> |
||||
|
|
||||
|
|
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
|
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
|
||||
|
<input type="hidden" id="id" name="id" lay-verify="required" value="{$result.id}" class="layui-input"> |
||||
|
|
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">线索名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="xs_name" disabled name="xs_name" value="{$result.xs_name}" lay-verify="required" placeholder="请输入线索名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">联系号码</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" disabled id="phone" disabled name="phone" value="{$result.phone}" lay-verify="required" placeholder="请输入联系号码" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" id="kh_name" name="kh_name" lay-verify="required" placeholder="请输入客户名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户级别</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<select name="kh_rank" id="kh_rank"> |
||||
|
<option value="">请选择客户级别</option> |
||||
|
|
||||
|
{volist name='khRankList' id='vo'} |
||||
|
<option value="{$vo.rank_name}">{$vo.rank_name}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户状态</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<select name="kh_status" id="kh_status"> |
||||
|
<option value="">请选择客户状态</option> |
||||
|
|
||||
|
{volist name='khStatusList' id='vo'} |
||||
|
<option value="{$vo.status_name}">{$vo.status_name}</option> |
||||
|
{/volist} |
||||
|
|
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">客户需求</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<textarea placeholder="请输入客户需求" class="layui-textarea" name="kh_need"></textarea> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">提交保存</button> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
|
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery; |
||||
|
|
||||
|
|
||||
|
//监听提交 |
||||
|
form.on('submit(submit)', function(data){ |
||||
|
|
||||
|
/* layer.alert(JSON.stringify(data.field), { |
||||
|
title: '最终的提交信息' |
||||
|
}) |
||||
|
return false;*/ |
||||
|
|
||||
|
$.post("{:url('Clues/toTurnKh')}",data.field,function (res) { |
||||
|
|
||||
|
|
||||
|
if (res.code == 0){ |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
layer.close(layer.index); |
||||
|
window.parent.location.reload(); |
||||
|
}else { |
||||
|
layer.msg(res.msg,{time:2000}); |
||||
|
} |
||||
|
|
||||
|
},'json') |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,2 @@ |
|||||
|
<script type="text/javascript" src="/static/plugins/layui/layui.js"></script> |
||||
|
|
||||
@ -0,0 +1,18 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<title>{:config('sys_name')}后台管理</title> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black"> |
||||
|
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
|
<meta name="format-detection" content="telephone=no"> |
||||
|
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css" media="all" /> |
||||
|
<link rel="stylesheet" href="/static/admin/css/global.css" media="all"> |
||||
|
<link rel="stylesheet" href="/static/common/css/font.css" media="all"> |
||||
|
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> |
||||
|
<script src="https://cdn.bootcss.com/layer/2.3/layer.js"></script> |
||||
|
</head> |
||||
|
<body class="skin-<?php if(!empty($_COOKIE['skin'])){echo $_COOKIE['skin'];}else{echo '0';setcookie('skin','0');}?>"> |
||||
@ -0,0 +1,134 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<link rel="stylesheet" href="/static/plugins/spectrum/spectrum.css"> |
||||
|
<style> |
||||
|
.edui-editor{z-index: 1!important;} |
||||
|
</style> |
||||
|
<script> |
||||
|
var ADMIN = '/static/admin'; |
||||
|
var UPURL = "{:url('UpFiles/upImages')}"; |
||||
|
var PUBLIC = "__PUBLIC__"; |
||||
|
var imgClassName,fileClassName; |
||||
|
</script> |
||||
|
{include file="common/foot"/} |
||||
|
<script src="/static/common/js/jquery.2.1.1.min.js"></script> |
||||
|
<script> |
||||
|
var edittext=new Array(); |
||||
|
</script> |
||||
|
{js href='/static/kindeditor/NKeditor-all-min.js' /} |
||||
|
{js href='/static/kindeditor/libs/JDialog/JDialog.min.js' /} |
||||
|
<link rel="stylesheet" href="/static/wangEditor/css/wangEditor.min.css"> |
||||
|
<script type="text/javascript" src="/static/wangEditor/js/wangEditor.min.js"></script> |
||||
|
|
||||
|
<script src="/static/ueditor/ueditor.config.js" type="text/javascript"></script> |
||||
|
<script src="/static/ueditor/ueditor.all.min.js" type="text/javascript"></script> |
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>{$title}</legend> |
||||
|
</fieldset> |
||||
|
<form class="layui-form" method="post"> |
||||
|
{if (isset($info['id']))} |
||||
|
<input TYPE="hidden" name="id" value="{$info.id}"> |
||||
|
{/if} |
||||
|
{volist name="fields" id="r"} |
||||
|
{if condition="!empty($r['status'])"} |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">{$r.name}</label> |
||||
|
<div class="layui-input-4" id="box_{$r['field']}"> |
||||
|
{$r,input($r['field'])|getform=$form,###|raw} |
||||
|
</div> |
||||
|
</div> |
||||
|
{/if} |
||||
|
{/volist} |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">{:lang('submit')}</button> |
||||
|
{if condition="MODULE_NAME eq 'page'"} |
||||
|
<a href="{:url('category/index')}" class="layui-btn layui-btn-primary">{:lang('back')}</a> |
||||
|
{else /} |
||||
|
<a href="{:url('index',['catid'=>input('catid')])}" class="layui-btn layui-btn-primary">{:lang('back')}</a> |
||||
|
{/if} |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
<script src='/static/plugins/spectrum/spectrum.js'></script> |
||||
|
<script src='/static/admin/js/edit.js'></script> |
||||
|
<script src='/static/common/js/layui-mz-min.js'></script> |
||||
|
<script> |
||||
|
var thumb,pic,file; |
||||
|
{if condition="ACTION_NAME=='add'"} |
||||
|
var url= "{:url('insert')}"; |
||||
|
{else /} |
||||
|
var url= "{:url('update')}"; |
||||
|
{/if} |
||||
|
|
||||
|
layui.use(['form','upload','layedit','laydate','jquery'], function () { |
||||
|
|
||||
|
var form = layui.form,upload = layui.upload,layedit = layui.layedit,laydate = layui.laydate,$ = layui.jquery; |
||||
|
|
||||
|
form.on('select(province)', function(data) { |
||||
|
var pid = data.value; |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.get("{:url('getRegion')}?pid=" + pid, function (data) { |
||||
|
layer.close(loading); |
||||
|
var html='<option value="">请选择市</option>'; |
||||
|
$.each(data, function (i, value) { |
||||
|
html += '<option value="'+value.id+'">'+value.name+'</option>'; |
||||
|
}); |
||||
|
$('#city').html(html); |
||||
|
$('#district').html('<option value="">请选择县/区</option>'); |
||||
|
form.render() |
||||
|
}); |
||||
|
}); |
||||
|
form.on('select(city)', function(data) { |
||||
|
var pid = data.value; |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.get("{:url('getRegion')}?pid=" + pid, function (data) { |
||||
|
layer.close(loading); |
||||
|
var html='<option value="">请选择县/区</option>'; |
||||
|
$.each(data, function (i, value) { |
||||
|
html += '<option value="'+value.id+'">'+value.name+'</option>'; |
||||
|
}); |
||||
|
$('#district').html(html); |
||||
|
|
||||
|
form.render() |
||||
|
}); |
||||
|
}); |
||||
|
layui.selMeltiple($); |
||||
|
//缩略图上传 |
||||
|
upload.render({ |
||||
|
elem: '#thumbBtn' |
||||
|
,url: '{:url("UpFiles/upload")}' |
||||
|
,accept: 'images' //普通文件 |
||||
|
,exts: 'jpg|png|gif' //只允许上传压缩文件 |
||||
|
,done: function(res){ |
||||
|
console.log(res); |
||||
|
$('#cltThumb').attr('src',res.url); |
||||
|
$('#thumb').val(res.url); |
||||
|
} |
||||
|
}); |
||||
|
//日期 |
||||
|
|
||||
|
form.on('submit(submit)', function (data) { |
||||
|
|
||||
|
$.post(url, data.field, function (res) { |
||||
|
if (res.code > 0) { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 1}, function () { |
||||
|
location.href = res.url; |
||||
|
}); |
||||
|
} else { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 2}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
$('.layui-row').on('click','.delimg',function(){ |
||||
|
var thisimg = $(this); |
||||
|
|
||||
|
layer.confirm('你确定要删除该图片吗?', function(index){ |
||||
|
thisimg.parents('.layui-col-md3').remove(); |
||||
|
layer.close(index); |
||||
|
}) |
||||
|
}) |
||||
|
}); |
||||
|
|
||||
|
</script> |
||||
@ -0,0 +1,122 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>{:lang('list')}</legend> |
||||
|
</fieldset> |
||||
|
<div class="demoTable"> |
||||
|
<div class="layui-inline"> |
||||
|
<input class="layui-input" name="key" id="key" placeholder="{:lang('pleaseEnter')}关键字"> |
||||
|
</div> |
||||
|
<button class="layui-btn" id="search" data-type="reload">{:lang('search')}</button> |
||||
|
<a href="{:url('index',['catid'=>input('catid')])}" class="layui-btn">显示全部</a> |
||||
|
|
||||
|
<div style="clear: both;"></div> |
||||
|
</div> |
||||
|
<table class="layui-table" id="list" lay-filter="list"></table> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script type="text/html" id="order"> |
||||
|
<input name="{{d.id}}" data-id="{{d.id}}" class="list_order layui-input" value=" {{d.sort}}" size="10"/> |
||||
|
</script> |
||||
|
<script type="text/html" id="title"> |
||||
|
<span style="{{d.title_style}}">{{d.title}}</span> |
||||
|
{{# if(d.thumb){ }}<img src="/static/admin/images/image.gif" onmouseover="layer.tips('<img src={{d.thumb}}>',this,{tips: [1, '#fff']});" onmouseout="layer.closeAll();">{{# } }} |
||||
|
</script> |
||||
|
<script type="text/html" id="action"> |
||||
|
{{# if(d.is_show==1){ }} |
||||
|
<a href="{{d.url}}" target="_blank" class="layui-btn layui-btn-xs layui-btn-normal">预览</a> |
||||
|
{{# } }} |
||||
|
<a href="{:url('edit')}?id={{d.id}}&catid={{d.catid}}" class="layui-btn layui-btn-xs">编辑</a> |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> |
||||
|
</script> |
||||
|
<script type="text/html" id="topBtn"> |
||||
|
<a href="{:url('add',array('catid'=>input('catid')))}" class="layui-btn layui-btn-sm">{:lang('add')}</a> |
||||
|
<button type="button" class="layui-btn layui-btn-danger layui-btn-sm" id="delAll">批量删除</button> |
||||
|
<a href="{:url('Category/index')}" class="layui-btn layui-btn-normal layui-btn-sm">返回栏目</a> |
||||
|
</script> |
||||
|
<script> |
||||
|
layui.use('table', function() { |
||||
|
var table = layui.table, $ = layui.jquery; |
||||
|
var tableIn = table.render({ |
||||
|
id: 'content', |
||||
|
elem: '#list', |
||||
|
url: '{:url("index")}', |
||||
|
where:{catid:'{:input("catid")}'}, |
||||
|
method: 'post', |
||||
|
toolbar: '#topBtn', |
||||
|
page: true, |
||||
|
cols: [[ |
||||
|
{type: "checkbox", fixed: true}, |
||||
|
{field: 'id', title: '{:lang("id")}', width: 80, fixed: true}, |
||||
|
{field: 'title', title: '{:lang("title")}', width: 400, templet: '#title'}, |
||||
|
{field: 'hits', title: '{:lang("hit")}', width: 80}, |
||||
|
{field: 'createtime', title: '{:lang("add")}{:lang("time")}', width: 180}, |
||||
|
{field: 'sort', align: 'center', title: '{:lang("order")}', width: 120, templet: '#order'}, |
||||
|
{width: 160, align: 'center', toolbar: '#action',title:'操作'} |
||||
|
]], |
||||
|
limit: 10 |
||||
|
}); |
||||
|
//搜索 |
||||
|
$('#search').on('click', function () { |
||||
|
var key = $('#key').val(); |
||||
|
if ($.trim(key) === '') { |
||||
|
layer.msg('{:lang("pleaseEnter")}关键字!', {icon: 0}); |
||||
|
return; |
||||
|
} |
||||
|
tableIn.reload({ page: {page: 1}, where: {key: key,catid:'{:input("catid")}'} }); |
||||
|
}); |
||||
|
$('body').on('blur','.list_order',function() { |
||||
|
var id = $(this).attr('data-id'); |
||||
|
var sort = $(this).val(); |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post('{:url("listorder")}',{id:id,sort:sort,catid:'{:input("catid")}'},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code === 1){ |
||||
|
layer.msg(res.msg, {time: 1000, icon: 1}, function () { |
||||
|
location.href = res.url; |
||||
|
}); |
||||
|
}else{ |
||||
|
layer.msg(res.msg,{time:1000,icon:2}); |
||||
|
} |
||||
|
}) |
||||
|
}); |
||||
|
table.on('tool(list)', function(obj) { |
||||
|
var data = obj.data; |
||||
|
if(obj.event === 'del'){ |
||||
|
layer.confirm('您确定要删除该内容吗?', function(index){ |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('listDel')}",{id:data.id},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code===1){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1}); |
||||
|
tableIn.reload({where:{catid:'{:input("catid")}'}}); |
||||
|
}else{ |
||||
|
layer.msg('操作失败!',{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
$('body').on('click','#delAll',function() { |
||||
|
layer.confirm('确认要删除选中的内容吗?', {icon: 3}, function(index) { |
||||
|
layer.close(index); |
||||
|
var checkStatus = table.checkStatus('content'); //content即为参数id设定的值 |
||||
|
var ids = []; |
||||
|
$(checkStatus.data).each(function (i, o) { |
||||
|
ids.push(o.id); |
||||
|
}); |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('delAll')}", {ids: ids,catid:'{:input("catid")}'}, function (data) { |
||||
|
layer.close(loading); |
||||
|
if (data.code === 1) { |
||||
|
layer.msg(data.msg, {time: 1000, icon: 1}); |
||||
|
tableIn.reload({where:{catid:'{:input("catid")}'}}); |
||||
|
} else { |
||||
|
layer.msg(data.msg, {time: 1000, icon: 2}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
}) |
||||
|
}); |
||||
|
</script> |
||||
@ -0,0 +1,106 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>数据{:lang('list')}</legend> |
||||
|
</fieldset> |
||||
|
<blockquote class="layui-elem-quote"> |
||||
|
数据库中共有<i class="count"></i>张表,共计<i class="size"></i> |
||||
|
<a href="javascript:void(0)" id="backUp" class="layui-btn layui-btn-sm pull-right">备份</a> |
||||
|
<a href="javascript:void(0)" id="optimize" class="layui-btn layui-btn-sm pull-right layui-btn-normal">优化</a> |
||||
|
<a href="javascript:void(0)" id="repair" class="layui-btn layui-btn-sm pull-right layui-btn-warm">修复</a> |
||||
|
</blockquote> |
||||
|
<table class="layui-table" id="list" lay-filter="list"></table> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script type="text/html" id="size"> |
||||
|
{{d.size}} |
||||
|
</script> |
||||
|
<script> |
||||
|
layui.use(['table','util'], function() { |
||||
|
var table = layui.table, $ = layui.jquery,util = layui.util; |
||||
|
util.fixbar(); |
||||
|
var tableIn = table.render({ |
||||
|
id: 'database', |
||||
|
elem: '#list', |
||||
|
url: '{:url("database")}', |
||||
|
method: 'post', |
||||
|
cols: [[ |
||||
|
{checkbox:true,fixed: true}, |
||||
|
{field: 'name', title: '数据库表', width: 150, fixed: true,sort: true}, |
||||
|
{field: 'rows', title: '记录条数', width: 150,sort: true}, |
||||
|
{field: 'size', title: '占用空间', width: 150,templet:'#size',sort: true}, |
||||
|
{field: 'engine', title: '类型', width: 110,sort: true}, |
||||
|
{field: 'collation', title: '编码', width: 150,sort: true}, |
||||
|
{field: 'create_time', title: '创建时间', width: 180,sort: true}, |
||||
|
{field: 'comment', title: '说明', width: 180}, |
||||
|
]], |
||||
|
done: function(res, curr, count){ |
||||
|
$('.count').html(res.tableNum); |
||||
|
$('.size').html(res.total); |
||||
|
} |
||||
|
}); |
||||
|
$('#backUp').click(function(){ |
||||
|
var obj = $(this); |
||||
|
var checkStatus = table.checkStatus('database'); //test即为参数id设定的值 |
||||
|
var a = []; |
||||
|
$(checkStatus.data).each(function(i,o){ |
||||
|
a.push(o.name); |
||||
|
}); |
||||
|
obj.addClass('layui-btn-disabled'); |
||||
|
obj.html('备份进行中...'); |
||||
|
$.post("{:url('database/backup')}",{tables:a},function(data){ |
||||
|
if(data.code==1){ |
||||
|
layer.msg(data.msg,{time:1000,icon:1},function(){ |
||||
|
tableIn.reload(); |
||||
|
}); |
||||
|
}else{ |
||||
|
layer.msg(data.msg,{time:1000,icon:2}); |
||||
|
} |
||||
|
obj.removeClass('layui-btn-disabled'); |
||||
|
obj.html('备份'); |
||||
|
}); |
||||
|
}); |
||||
|
$('#optimize').click(function(){ |
||||
|
var obj = $(this); |
||||
|
var checkStatus = table.checkStatus('database'); //test即为参数id设定的值 |
||||
|
var a = []; |
||||
|
$(checkStatus.data).each(function(i,o){ |
||||
|
a.push(o.name); |
||||
|
}); |
||||
|
obj.addClass('layui-btn-disabled'); |
||||
|
obj.html('优化进行中...'); |
||||
|
$.post("{:url('database/optimize')}",{tables:a},function(data){ |
||||
|
if(data.code==1){ |
||||
|
layer.msg(data.msg,{time:1000,icon:1},function(){ |
||||
|
tableIn.reload(); |
||||
|
}); |
||||
|
}else{ |
||||
|
layer.msg(data.msg,{time:1000,icon:2}); |
||||
|
} |
||||
|
obj.removeClass('layui-btn-disabled'); |
||||
|
obj.html('优化'); |
||||
|
}); |
||||
|
}); |
||||
|
$('#repair').click(function(){ |
||||
|
var obj = $(this); |
||||
|
var checkStatus = table.checkStatus('database'); //test即为参数id设定的值 |
||||
|
var a = []; |
||||
|
$(checkStatus.data).each(function(i,o){ |
||||
|
a.push(o.name); |
||||
|
}); |
||||
|
obj.addClass('layui-btn-disabled'); |
||||
|
obj.html('修复进行中...'); |
||||
|
$.post("{:url('database/repair')}",{tables:a},function(data){ |
||||
|
if(data.code==1){ |
||||
|
layer.msg(data.msg,{time:1000,icon:1},function(){ |
||||
|
tableIn.reload(); |
||||
|
}); |
||||
|
}else{ |
||||
|
layer.msg(data.msg,{time:1000,icon:2}); |
||||
|
} |
||||
|
obj.removeClass('layui-btn-disabled'); |
||||
|
obj.html('修复'); |
||||
|
}); |
||||
|
}) |
||||
|
}); |
||||
|
</script> |
||||
@ -0,0 +1,60 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>备份文件列表</legend> |
||||
|
</fieldset> |
||||
|
<table class="layui-table" id="list" lay-filter="list"></table> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script type="text/html" id="action"> |
||||
|
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="recover">恢复</a> |
||||
|
<a href="{:url('downFile')}?time={{d.time}}" class="layui-btn layui-btn-xs">下载</a> |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">{:lang('del')}</a> |
||||
|
</script> |
||||
|
<script> |
||||
|
layui.use('table', function() { |
||||
|
var table = layui.table, $ = layui.jquery; |
||||
|
table.render({ |
||||
|
elem: '#list' |
||||
|
,url: '{:url("restore")}', |
||||
|
method:'post' |
||||
|
,cols: [[ |
||||
|
{field:'name', title: '文件名称', width:250} |
||||
|
,{field:'size', title: '文件大小', width:200,sort:true} |
||||
|
,{field:'addtime', title: '备份时间', width:200,sort:true} |
||||
|
,{width:160, align:'center', toolbar: '#action'} |
||||
|
]] |
||||
|
}); |
||||
|
table.on('tool(list)', function(obj) { |
||||
|
var data = obj.data; |
||||
|
if (obj.event === 'recover') { |
||||
|
layer.confirm('确认要导入数据吗?',{icon: 0}, function (index) { |
||||
|
loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('import')}",{time:data.time},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code==1){ |
||||
|
layer.msg(res.msg, {time: 1000,icon:1}); |
||||
|
}else{ |
||||
|
layer.msg(res.msg, {time: 1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
}else if(obj.event === 'del'){ |
||||
|
layer.confirm('确认要删除该备份文件吗?', {icon: 3}, function (index) { |
||||
|
loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post('{:url("delSqlFiles")}',{time: data.time}, function (res) { |
||||
|
layer.close(loading); |
||||
|
if (res.code == 1) { |
||||
|
layer.msg(res.msg, {time: 1000,icon:1}); |
||||
|
obj.del(); |
||||
|
}else{ |
||||
|
layer.msg(res.msg,{time: 1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
@ -0,0 +1,119 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>{$title}</legend> |
||||
|
</fieldset> |
||||
|
<form class="layui-form layui-form-pane" lay-filter="form"> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">所属位置</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<select name="type_id" lay-verify="required" > |
||||
|
<option value="">请选择所属碎片分类</option> |
||||
|
{volist name="debrisTypeList" id="vo"} |
||||
|
<option value="{$vo.id}">{$vo.title}</option> |
||||
|
{/volist} |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">{:lang('title')}</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="title" lay-verify="required" placeholder="{:lang('pleaseEnter')}碎片标题" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">{:lang('link')}</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="url" lay-verify="required" placeholder="{:lang('pleaseEnter')}碎片标题" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">图片</label> |
||||
|
<input type="hidden" name="pic" id="pic"> |
||||
|
<div class="layui-input-block"> |
||||
|
<div class="layui-upload"> |
||||
|
<button type="button" class="layui-btn layui-btn-primary" id="picBtn"><i class="icon icon-upload3"></i>点击上传</button> |
||||
|
<div class="layui-upload-list"> |
||||
|
<img class="layui-upload-img" id="picPic"> |
||||
|
<p id="demoText"></p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item layui-form-text"> |
||||
|
<label class="layui-form-label">{:lang('content')}</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<textarea class="layui-textarea" name="content" lay-verify="content" id="content"></textarea> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<input type="hidden" name="id"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">{:lang('submit')}</button> |
||||
|
<a href="{:url('index')}" class="layui-btn layui-btn-primary">{:lang('back')}</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script> |
||||
|
layui.use(['form','upload','layer','layedit'], function () { |
||||
|
var form = layui.form, layer = layui.layer,$= layui.jquery,upload = layui.upload,layedit = layui.layedit; |
||||
|
|
||||
|
var info = {$info|raw}; |
||||
|
form.val("form", info); |
||||
|
if(info){ |
||||
|
$('#picPic').attr('src',info.pic); |
||||
|
} |
||||
|
layedit.set({ |
||||
|
uploadImage: { |
||||
|
url: "{:url('UpFiles/editUpload')}", |
||||
|
type: 'post' |
||||
|
} |
||||
|
}); |
||||
|
var layeCon = layedit.build('content'); |
||||
|
|
||||
|
form.on('submit(submit)', function (data) { |
||||
|
// 提交到方法 默认为本身 |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
data.field.content = layedit.getContent(layeCon); |
||||
|
$.post("", data.field, function (res) { |
||||
|
layer.close(loading); |
||||
|
if (res.code > 0) { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 1}, function () { |
||||
|
location.href = res.url; |
||||
|
}); |
||||
|
} else { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 2}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
//普通图片上传 |
||||
|
var uploadInst = upload.render({ |
||||
|
elem: '#picBtn' |
||||
|
,url: '{:url("UpFiles/upload")}' |
||||
|
,before: function(obj){ |
||||
|
//预读本地文件示例,不支持ie8 |
||||
|
obj.preview(function(index, file, result){ |
||||
|
$('#picPic').attr('src', result); //图片链接(base64) |
||||
|
}); |
||||
|
}, |
||||
|
done: function(res){ |
||||
|
if(res.code>0){ |
||||
|
$('#pic').val(res.url); |
||||
|
}else{ |
||||
|
//如果上传失败 |
||||
|
return layer.msg('上传失败'); |
||||
|
} |
||||
|
} |
||||
|
,error: function(){ |
||||
|
//演示失败状态,并实现重传 |
||||
|
var demoText = $('#demoText'); |
||||
|
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-mini demo-reload">重试</a>'); |
||||
|
demoText.find('.demo-reload').on('click', function(){ |
||||
|
uploadInst.upload(); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
@ -0,0 +1,109 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>碎片管理</legend> |
||||
|
</fieldset> |
||||
|
<div class="demoTable"> |
||||
|
<div class="layui-inline"> |
||||
|
<input class="layui-input" name="key" id="key" placeholder="{:lang('pleaseEnter')}关键字"> |
||||
|
</div> |
||||
|
<button class="layui-btn" id="search" data-type="reload">{:lang('search')}</button> |
||||
|
<a href="{:url('index')}" class="layui-btn">显示全部</a> |
||||
|
<button type="button" class="layui-btn layui-btn-danger" id="delAll">批量删除</button> |
||||
|
<a href="{:url('add')}" class="layui-btn" style="float:right;"><i class="fa fa-plus" aria-hidden="true"></i>{:lang('add')}碎片</a> |
||||
|
<div style="clear: both;"></div> |
||||
|
</div> |
||||
|
<table class="layui-table" id="list" lay-filter="list"></table> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script type="text/html" id="order"> |
||||
|
<input name="{{d.id}}" data-id="{{d.id}}" class="list_order layui-input" value=" {{d.sort}}" size="10"/> |
||||
|
</script> |
||||
|
<script type="text/html" id="action"> |
||||
|
<a href="{:url('edit')}?id={{d.id}}" class="layui-btn layui-btn-xs">编辑</a> |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> |
||||
|
</script> |
||||
|
<script> |
||||
|
layui.use('table', function() { |
||||
|
var table = layui.table, $ = layui.jquery; |
||||
|
var tableIn = table.render({ |
||||
|
id: 'debris', |
||||
|
elem: '#list', |
||||
|
url: '{:url("index")}', |
||||
|
method: 'post', |
||||
|
page:true, |
||||
|
cols: [[ |
||||
|
{checkbox: true, fixed: true}, |
||||
|
{field: 'id', title: '{:lang("id")}', width: 80, fixed: true}, |
||||
|
{field: 'title', title: '碎片标题', width: 400}, |
||||
|
{field: 'typename', title: '碎片位置', width: 300}, |
||||
|
{field: 'addtime', title: '{:lang("add")}{:lang("time")}',width: 150}, |
||||
|
{field: 'sort', align: 'center', title: '{:lang("order")}', width: 120, templet: '#order'}, |
||||
|
{width: 160, align: 'center', toolbar: '#action'} |
||||
|
]], |
||||
|
limit:10 |
||||
|
}); |
||||
|
//搜索 |
||||
|
$('#search').on('click', function () { |
||||
|
var key = $('#key').val(); |
||||
|
if ($.trim(key) === '') { |
||||
|
layer.msg('{:lang("pleaseEnter")}关键字!', {icon: 0}); |
||||
|
return; |
||||
|
} |
||||
|
tableIn.reload({ page: {page: 1}, where: {key: key}}); |
||||
|
}); |
||||
|
table.on('tool(list)', function(obj) { |
||||
|
var data = obj.data; |
||||
|
if(obj.event === 'del'){ |
||||
|
layer.confirm('您确定要删除该碎片吗?', function(index){ |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('del')}",{id:data.id},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code===1){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg('操作失败!',{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
//排序 |
||||
|
$('body').on('blur','.list_order',function() { |
||||
|
var id = $(this).attr('data-id'); |
||||
|
var sort = $(this).val(); |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post('{:url("debrisOrder")}',{id:id,sort:sort},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code === 1){ |
||||
|
layer.msg(res.msg, {time: 1000, icon: 1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg(res.msg,{time:1000,icon:2}); |
||||
|
} |
||||
|
}) |
||||
|
}); |
||||
|
$('#delAll').click(function(){ |
||||
|
layer.confirm('确认要删除选中的信息吗?', {icon: 3}, function(index) { |
||||
|
layer.close(index); |
||||
|
var checkStatus = table.checkStatus('debris'); //test即为参数id设定的值 |
||||
|
var ids = []; |
||||
|
$(checkStatus.data).each(function (i, o) { |
||||
|
ids.push(o.id); |
||||
|
}); |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('delall')}", {ids: ids}, function (data) { |
||||
|
layer.close(loading); |
||||
|
if (data.code === 1) { |
||||
|
layer.msg(data.msg, {time: 1000, icon: 1}); |
||||
|
tableIn.reload(); |
||||
|
} else { |
||||
|
layer.msg(data.msg, {time: 1000, icon: 2}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
}) |
||||
|
}) |
||||
|
</script> |
||||
@ -0,0 +1,83 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>碎片分类管理</legend> |
||||
|
</fieldset> |
||||
|
<div class="demoTable"> |
||||
|
<div class="layui-inline"> |
||||
|
<input class="layui-input" name="key" id="key" placeholder="{:lang('pleaseEnter')}关键字"> |
||||
|
</div> |
||||
|
<button class="layui-btn" id="search" data-type="reload">{:lang('search')}</button> |
||||
|
<a href="{:url('type')}" class="layui-btn">显示全部</a> |
||||
|
<a href="{:url('addType')}" class="layui-btn" style="float:right;"><i class="fa fa-plus" aria-hidden="true"></i>{:lang('add')}碎片分类</a> |
||||
|
<div style="clear: both;"></div> |
||||
|
</div> |
||||
|
<table class="layui-table" id="list" lay-filter="list"></table> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script type="text/html" id="order"> |
||||
|
<input name="{{d.id}}" data-id="{{d.id}}" class="list_order layui-input" value=" {{d.sort}}" size="10"/> |
||||
|
</script> |
||||
|
<script type="text/html" id="action"> |
||||
|
<a href="{:url('editType')}?id={{d.id}}" class="layui-btn layui-btn-xs">编辑</a> |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> |
||||
|
</script> |
||||
|
<script> |
||||
|
layui.use('table', function() { |
||||
|
var table = layui.table, $ = layui.jquery; |
||||
|
var tableIn = table.render({ |
||||
|
id: 'type', |
||||
|
elem: '#list', |
||||
|
url: '{:url("type")}', |
||||
|
method: 'post', |
||||
|
cols: [[ |
||||
|
{field: 'id', title: '{:lang("id")}', width: 80, fixed: true, sort: true}, |
||||
|
{field: 'title', title: '碎片分类名称', width: 400}, |
||||
|
{field: 'sort', align: 'center', title: '{:lang("order")}', width: 120, templet: '#order', sort: true}, |
||||
|
{width: 160, align: 'center', toolbar: '#action'} |
||||
|
]] |
||||
|
}); |
||||
|
//搜索 |
||||
|
$('#search').on('click', function () { |
||||
|
var key = $('#key').val(); |
||||
|
if ($.trim(key) === '') { |
||||
|
layer.msg('{:lang("pleaseEnter")}关键字!', {icon: 0}); |
||||
|
return; |
||||
|
} |
||||
|
tableIn.reload({where: {key: key}}); |
||||
|
}); |
||||
|
//排序 |
||||
|
$('body').on('blur','.list_order',function() { |
||||
|
var id = $(this).attr('data-id'); |
||||
|
var sort = $(this).val(); |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post('{:url("typeOrder")}',{id:id,sort:sort},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code === 1){ |
||||
|
layer.msg(res.msg, {time: 1000, icon: 1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg(res.msg,{time:1000,icon:2}); |
||||
|
} |
||||
|
}) |
||||
|
}); |
||||
|
table.on('tool(list)', function(obj) { |
||||
|
var data = obj.data; |
||||
|
if(obj.event === 'del'){ |
||||
|
layer.confirm('您确定要删除该碎片分类吗?', function(index){ |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('delType')}",{id:data.id},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code===1){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1}); |
||||
|
obj.del(); |
||||
|
}else{ |
||||
|
layer.msg('操作失败!',{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
@ -0,0 +1,53 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>{$title}</legend> |
||||
|
</fieldset> |
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">分类名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="title" ng-model="field.title" lay-verify="required" placeholder="{:lang('pleaseEnter')}碎片分类名称" class="layui-input"> |
||||
|
</div> |
||||
|
<div class="layui-form-mid layui-word-aux">建议格式: 【首页】中部碎片</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">{:lang('order')}</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="sort" ng-model="field.sort" value="" placeholder="从小到大排序" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">{:lang('submit')}</button> |
||||
|
<a href="{:url('type')}" class="layui-btn layui-btn-primary">{:lang('back')}</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script src="/static/common/js/angular.min.js"></script> |
||||
|
<script> |
||||
|
var m = angular.module('hd',[]); |
||||
|
m.controller('ctrl',['$scope',function($scope) { |
||||
|
$scope.field = '{$info|raw}'!='null'?{$info|raw}:{id:'',name:'',sort:50}; |
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, $ = layui.jquery; |
||||
|
form.on('submit(submit)', function (data) { |
||||
|
// 提交到方法 默认为本身 |
||||
|
data.field.id = $scope.field.id; |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("", data.field, function (res) { |
||||
|
layer.close(loading); |
||||
|
if (res.code > 0) { |
||||
|
layer.msg(res.msg, {time: 1000, icon: 1}, function () { |
||||
|
location.href = res.url; |
||||
|
}); |
||||
|
} else { |
||||
|
layer.msg(res.msg, {time: 1000, icon: 2}); |
||||
|
} |
||||
|
}); |
||||
|
}) |
||||
|
}); |
||||
|
}]); |
||||
|
</script> |
||||
@ -0,0 +1,52 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit" ng-app="hd" ng-controller="ctrl"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>{$title}</legend> |
||||
|
</fieldset> |
||||
|
<form class="layui-form layui-form-pane"> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">名称</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="name" ng-model="field.name" lay-verify="required" placeholder="{:lang('pleaseEnter')}名称" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label">金额</label> |
||||
|
<div class="layui-input-4"> |
||||
|
<input type="text" name="money" ng-model="field.money" lay-verify="required" placeholder="{:lang('pleaseEnter')}金额" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-input-block"> |
||||
|
<button type="button" class="layui-btn" lay-submit="" lay-filter="submit">{:lang('submit')}</button> |
||||
|
<a href="{:url('index')}" class="layui-btn layui-btn-primary">{:lang('back')}</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script src="/static/common/js/angular.min.js"></script> |
||||
|
<script> |
||||
|
var m = angular.module('hd',[]); |
||||
|
m.controller('ctrl',['$scope',function($scope) { |
||||
|
$scope.field = '{$info|raw}'!='null'?{$info|raw}:{id:'',name:'',money:''}; |
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form, $ = layui.jquery; |
||||
|
form.on('submit(submit)', function (data) { |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
// 提交到方法 默认为本身 |
||||
|
data.field.id = $scope.field.id; |
||||
|
$.post("", data.field, function (res) { |
||||
|
layer.close(loading); |
||||
|
if (res.code > 0) { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 1}, function () { |
||||
|
location.href = res.url; |
||||
|
}); |
||||
|
} else { |
||||
|
layer.msg(res.msg, {time: 1800, icon: 2}); |
||||
|
} |
||||
|
}); |
||||
|
}) |
||||
|
}); |
||||
|
}]); |
||||
|
</script> |
||||
@ -0,0 +1,92 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>捐赠{:lang('list')}</legend> |
||||
|
</fieldset> |
||||
|
<div class="demoTable"> |
||||
|
<div class="layui-inline"> |
||||
|
<input class="layui-input" name="key" id="key" placeholder="{:lang('pleaseEnter')}关键字"> |
||||
|
</div> |
||||
|
<button class="layui-btn" id="search" data-type="reload">{:lang('search')}</button> |
||||
|
<a href="{:url('index')}" class="layui-btn">显示全部</a> |
||||
|
<button type="button" class="layui-btn layui-btn-danger" id="delAll">批量删除</button> |
||||
|
<a href="{:url('add')}" class="layui-btn" style="float:right;"><i class="fa fa-plus" aria-hidden="true"></i>{:lang('add')}捐赠名单</a> |
||||
|
<div style="clear: both;"></div> |
||||
|
</div> |
||||
|
<table class="layui-table" id="list" lay-filter="list"></table> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script type="text/html" id="action"> |
||||
|
<a href="{:url('edit')}?id={{d.id}}" class="layui-btn layui-btn-xs">编辑</a> |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> |
||||
|
</script> |
||||
|
<script type="text/html" id="money"> |
||||
|
{{d.money}} |
||||
|
</script> |
||||
|
<script> |
||||
|
layui.use('table', function() { |
||||
|
var table = layui.table, $ = layui.jquery; |
||||
|
var tableIn = table.render({ |
||||
|
id: 'donation', |
||||
|
elem: '#list', |
||||
|
url: '{:url("index")}', |
||||
|
method: 'post', |
||||
|
page: true, |
||||
|
cols: [[ |
||||
|
{checkbox: true, fixed: true}, |
||||
|
{field: 'name', title: '{:lang("name")}', width: 150, fixed: true}, |
||||
|
{field: 'mnum', title: '金额', width: 100,templet:'#money'}, |
||||
|
{field: 'addtime', title: '{:lang("time")}', width: 150}, |
||||
|
{width: 160, align: 'center', toolbar: '#action'} |
||||
|
]], |
||||
|
limit: 10 |
||||
|
}); |
||||
|
//搜索 |
||||
|
$('#search').on('click', function () { |
||||
|
var key = $('#key').val(); |
||||
|
if ($.trim(key) === '') { |
||||
|
layer.msg('{:lang("pleaseEnter")}关键字!', {icon: 0}); |
||||
|
return; |
||||
|
} |
||||
|
tableIn.reload({ page: {page: 1}, where: {key: key}}); |
||||
|
}); |
||||
|
table.on('tool(list)', function(obj) { |
||||
|
var data = obj.data; |
||||
|
if(obj.event === 'del'){ |
||||
|
layer.confirm('您确定要删除该信息吗?', function(index){ |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('del')}",{id:data.id},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code===1){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg('操作失败!',{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
$('#delAll').click(function(){ |
||||
|
layer.confirm('确认要删除选中的广告吗?', {icon: 3}, function(index) { |
||||
|
layer.close(index); |
||||
|
var checkStatus = table.checkStatus('donation'); //test即为参数id设定的值 |
||||
|
var ids = []; |
||||
|
$(checkStatus.data).each(function (i, o) { |
||||
|
ids.push(o.id); |
||||
|
}); |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('delall')}", {ids: ids}, function (data) { |
||||
|
layer.close(loading); |
||||
|
if (data.code === 1) { |
||||
|
layer.msg(data.msg, {time: 1000, icon: 1}); |
||||
|
tableIn.reload(); |
||||
|
} else { |
||||
|
layer.msg(data.msg, {time: 1000, icon: 2}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
}) |
||||
|
}); |
||||
|
</script> |
||||
@ -0,0 +1,105 @@ |
|||||
|
{include file="common/head"/} |
||||
|
<div class="admin-main layui-anim layui-anim-upbit"> |
||||
|
<fieldset class="layui-elem-field layui-field-title"> |
||||
|
<legend>节日元素管理</legend> |
||||
|
</fieldset> |
||||
|
<div class="demoTable"> |
||||
|
<div class="layui-inline"> |
||||
|
<input class="layui-input" name="key" id="key" placeholder="{:lang('pleaseEnter')}关键字"> |
||||
|
</div> |
||||
|
<button class="layui-btn" id="search" data-type="reload">{:lang('search')}</button> |
||||
|
<a href="{:url('index')}" class="layui-btn">显示全部</a> |
||||
|
<a href="{:url('index')}" class="layui-btn layui-btn-normal" style="float:right;">返回节日列表</a> |
||||
|
<a href="{:url('add_element',array('pid'=>input('pid')))}" class="layui-btn" style="float:right;">{:lang('add')}节日元素</a> |
||||
|
<div style="clear: both;"></div> |
||||
|
</div> |
||||
|
<table class="layui-table" id="list" lay-filter="list"></table> |
||||
|
</div> |
||||
|
{include file="common/foot"/} |
||||
|
<script type="text/html" id="order"> |
||||
|
<input name="{{d.id}}" data-id="{{d.id}}" class="list_order layui-input" value=" {{d.sort}}" size="10"/> |
||||
|
</script> |
||||
|
<script type="text/html" id="open"> |
||||
|
<input type="checkbox" name="open" value="{{d.id}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="open" {{ d.open == 1 ? 'checked' : '' }}> |
||||
|
</script> |
||||
|
<script type="text/html" id="action"> |
||||
|
<a href="{:url('edit_element')}?id={{d.id}}&pid={{d.pid}}" class="layui-btn layui-btn-xs">编辑</a> |
||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> |
||||
|
</script> |
||||
|
<script> |
||||
|
layui.use(['table','form'], function() { |
||||
|
var table = layui.table,form = layui.form,$ = layui.jquery; |
||||
|
var tableIn = table.render({ |
||||
|
id: 'ad', |
||||
|
elem: '#list', |
||||
|
url: '{:url("element")}', |
||||
|
method: 'post', |
||||
|
where: {pid: "{:input('pid')}"}, |
||||
|
page:true, |
||||
|
cols: [[ |
||||
|
{field: 'id', title: '{:lang("id")}', width: 80, fixed: true}, |
||||
|
{field: 'title', title: '节日元素名称', width: 400}, |
||||
|
{field: 'sort', align: 'center', title: '{:lang("order")}', width: 120, templet: '#order'}, |
||||
|
{field: 'open', align: 'center', title: '{:lang("status")}', width: 100, toolbar: '#open'}, |
||||
|
{field: 'addtime', title: '{:lang("add")}{:lang("time")}',width: 150}, |
||||
|
{width: 180, align: 'center', toolbar: '#action'} |
||||
|
]], |
||||
|
limit:10 |
||||
|
}); |
||||
|
form.on('switch(open)', function(obj){ |
||||
|
loading =layer.load(1, {shade: [0.1,'#fff']}); |
||||
|
var id = this.value; |
||||
|
var open = obj.elem.checked===true?1:0; |
||||
|
$.post('{:url("elementState")}',{'id':id,'open':open},function (res) { |
||||
|
layer.close(loading); |
||||
|
if (res.status==1) { |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg(res.msg,{time:1000,icon:2}); |
||||
|
return false; |
||||
|
} |
||||
|
}) |
||||
|
}); |
||||
|
//搜索 |
||||
|
$('#search').on('click', function () { |
||||
|
var key = $('#key').val(); |
||||
|
if ($.trim(key) === '') { |
||||
|
layer.msg('{:lang("pleaseEnter")}关键字!', {icon: 0}); |
||||
|
return; |
||||
|
} |
||||
|
tableIn.reload({ page: {page: 1}, where: {key: key}}); |
||||
|
}); |
||||
|
table.on('tool(list)', function(obj) { |
||||
|
var data = obj.data; |
||||
|
if (obj.event === 'del'){ |
||||
|
layer.confirm('您确定要删除该节日元素吗?', function(index){ |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post("{:url('delElement')}",{id:data.id},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code===1){ |
||||
|
layer.msg(res.msg,{time:1000,icon:1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg('操作失败!',{time:1000,icon:2}); |
||||
|
} |
||||
|
}); |
||||
|
layer.close(index); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
$('body').on('blur','.list_order',function() { |
||||
|
var id = $(this).attr('data-id'); |
||||
|
var sort = $(this).val(); |
||||
|
var loading = layer.load(1, {shade: [0.1, '#fff']}); |
||||
|
$.post('{:url("elementOrder")}',{id:id,sort:sort},function(res){ |
||||
|
layer.close(loading); |
||||
|
if(res.code === 1){ |
||||
|
layer.msg(res.msg, {time: 1000, icon: 1}); |
||||
|
tableIn.reload(); |
||||
|
}else{ |
||||
|
layer.msg(res.msg,{time:1000,icon:2}); |
||||
|
} |
||||
|
}) |
||||
|
}); |
||||
|
}) |
||||
|
</script> |
||||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue