Browse Source

初始化项目

master
ahbmz 3 years ago
commit
54bf3839a1
  1. 5
      .htaccess
  2. 26
      404.html
  3. 1
      application/.htaccess
  4. 4
      application/admin/config.php
  5. 164
      application/admin/controller/Ad.php
  6. 17
      application/admin/controller/Ajax.php
  7. 350
      application/admin/controller/Auth.php
  8. 342
      application/admin/controller/Category.php
  9. 902
      application/admin/controller/Client.php
  10. 711
      application/admin/controller/Clues.php
  11. 52
      application/admin/controller/Common.php
  12. 94
      application/admin/controller/Database.php
  13. 143
      application/admin/controller/Debris.php
  14. 69
      application/admin/controller/Donation.php
  15. 451
      application/admin/controller/EmptyController.php
  16. 153
      application/admin/controller/Feast.php
  17. 248
      application/admin/controller/Index.php
  18. 175
      application/admin/controller/Liberum.php
  19. 88
      application/admin/controller/Link.php
  20. 45
      application/admin/controller/Login.php
  21. 36
      application/admin/controller/Message.php
  22. 559
      application/admin/controller/Module.php
  23. 267
      application/admin/controller/Order.php
  24. 170
      application/admin/controller/Plugin.php
  25. 56
      application/admin/controller/System.php
  26. 177
      application/admin/controller/Template.php
  27. 150
      application/admin/controller/UpFiles.php
  28. 161
      application/admin/controller/Users.php
  29. 882
      application/admin/controller/Wechat.php
  30. 79
      application/admin/lang/zh-cn.php
  31. 39
      application/admin/model/Admin.php
  32. 10
      application/admin/model/AuthGroup.php
  33. 242
      application/admin/model/Client.php
  34. 111
      application/admin/model/Clues.php
  35. 64
      application/admin/model/Liberum.php
  36. 10
      application/admin/model/System.php
  37. 10
      application/admin/model/Tags.php
  38. 18
      application/admin/model/Users.php
  39. 7
      application/admin/model/authRule.php
  40. 17
      application/admin/validate/Admin.php
  41. 24
      application/admin/validate/Member.php
  42. 12
      application/admin/validate/Sys.php
  43. 124
      application/admin/view/ad/form.html
  44. 133
      application/admin/view/ad/index.html
  45. 85
      application/admin/view/ad/type.html
  46. 53
      application/admin/view/ad/typeForm.html
  47. 144
      application/admin/view/auth/adminForm.html
  48. 56
      application/admin/view/auth/admin_group.html
  49. 87
      application/admin/view/auth/admin_list.html
  50. 16
      application/admin/view/auth/admin_rule.html
  51. 46
      application/admin/view/auth/groupForm.html
  52. 62
      application/admin/view/auth/group_access.html
  53. 78
      application/admin/view/auth/rule_add.html
  54. 70
      application/admin/view/auth/rule_edit.html
  55. 235
      application/admin/view/category/add.html
  56. 237
      application/admin/view/category/edit.html
  57. 63
      application/admin/view/category/index.html
  58. 268
      application/admin/view/client/add.html
  59. 76
      application/admin/view/client/alter_pr_user.html
  60. 469
      application/admin/view/client/chengjiao.html
  61. 355
      application/admin/view/client/dialogue.html
  62. 287
      application/admin/view/client/edit.html
  63. 160
      application/admin/view/client/hangye_list.html
  64. 56
      application/admin/view/client/hangye_list_add.html
  65. 58
      application/admin/view/client/hangye_list_edit.html
  66. 474
      application/admin/view/client/index.html
  67. 124
      application/admin/view/client/move_gh.html
  68. 160
      application/admin/view/client/rank_list.html
  69. 56
      application/admin/view/client/rank_list_add.html
  70. 58
      application/admin/view/client/rank_list_edit.html
  71. 156
      application/admin/view/client/status_list.html
  72. 56
      application/admin/view/client/status_list_add.html
  73. 58
      application/admin/view/client/status_list_edit.html
  74. 169
      application/admin/view/clues/add.html
  75. 76
      application/admin/view/clues/alter_pr_user.html
  76. 156
      application/admin/view/clues/area_list.html
  77. 56
      application/admin/view/clues/area_list_add.html
  78. 58
      application/admin/view/clues/area_list_edit.html
  79. 172
      application/admin/view/clues/edit.html
  80. 330
      application/admin/view/clues/index.html
  81. 156
      application/admin/view/clues/source_list.html
  82. 56
      application/admin/view/clues/source_list_add.html
  83. 58
      application/admin/view/clues/source_list_edit.html
  84. 156
      application/admin/view/clues/status_list.html
  85. 56
      application/admin/view/clues/status_list_add.html
  86. 58
      application/admin/view/clues/status_list_edit.html
  87. 149
      application/admin/view/clues/turn_kh.html
  88. 2
      application/admin/view/common/foot.html
  89. 18
      application/admin/view/common/head.html
  90. 134
      application/admin/view/content/edit.html
  91. 122
      application/admin/view/content/index.html
  92. 106
      application/admin/view/database/database.html
  93. 60
      application/admin/view/database/restore.html
  94. 119
      application/admin/view/debris/form.html
  95. 109
      application/admin/view/debris/index.html
  96. 83
      application/admin/view/debris/type.html
  97. 53
      application/admin/view/debris/typeForm.html
  98. 52
      application/admin/view/donation/form.html
  99. 92
      application/admin/view/donation/index.html
  100. 105
      application/admin/view/feast/element.html

5
.htaccess

@ -0,0 +1,5 @@
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/$1 [L]
</IfModule>

26
404.html

@ -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>

1
application/.htaccess

@ -0,0 +1 @@
deny from all

4
application/admin/config.php

@ -0,0 +1,4 @@
<?php
return [
'pathinfo_depr' => '/',
];

164
application/admin/controller/Ad.php

@ -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'=>'删除成功!'];
}
}

17
application/admin/controller/Ajax.php

@ -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);
}
}

350
application/admin/controller/Auth.php

@ -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();
}
}
}

342
application/admin/controller/Category.php

@ -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>&nbsp;</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('&nbsp;&nbsp;&nbsp;│ ', '&nbsp;&nbsp;&nbsp;├─ ', '&nbsp;&nbsp;&nbsp;└─ ');
$tree->nbsp = '&nbsp;&nbsp;&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;
}
}

902
application/admin/controller/Client.php

@ -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);
}
}
}

711
application/admin/controller/Clues.php

@ -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');
}
}

52
application/admin/controller/Common.php

@ -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('空操作,返回上次访问页面中...');
}
}

94
application/admin/controller/Database.php

@ -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'=>"备份文件删除失败,请检查权限!"];
}
}
}

143
application/admin/controller/Debris.php

@ -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'=>'删除成功!'];
}
}

69
application/admin/controller/Donation.php

@ -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;
}
}

451
application/admin/controller/EmptyController.php

@ -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]','&ldquo;','&rdquo;'), '', 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;
}
}

153
application/admin/controller/Feast.php

@ -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'=>'删除成功!'];
}
}

248
application/admin/controller/Index.php

@ -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');
}
}
}

175
application/admin/controller/Liberum.php

@ -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);
}
}
}

88
application/admin/controller/Link.php

@ -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;
}
}

45
application/admin/controller/Login.php

@ -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();
}
}

36
application/admin/controller/Message.php

@ -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;
}
}

559
application/admin/controller/Module.php

@ -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);
}
}

267
application/admin/controller/Order.php

@ -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];
}
}

170
application/admin/controller/Plugin.php

@ -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();
}
}
}
}

56
application/admin/controller/System.php

@ -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' => '邮件发送失败!']);
}
}
}

177
application/admin/controller/Template.php

@ -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;
}
}
}

150
application/admin/controller/UpFiles.php

@ -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);
}
}
}

161
application/admin/controller/Users.php

@ -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;
}
}

882
application/admin/controller/Wechat.php

@ -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'=>'删除成功'];
}
}

79
application/admin/lang/zh-cn.php

@ -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'=>'你确定要删除吗?'
];

39
application/admin/model/Admin.php

@ -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);
}
}

10
application/admin/model/AuthGroup.php

@ -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',
];
}

242
application/admin/model/Client.php

@ -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;
}
}
}

111
application/admin/model/Clues.php

@ -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;
}
}
}

64
application/admin/model/Liberum.php

@ -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;
}
}
}

10
application/admin/model/System.php

@ -0,0 +1,10 @@
<?php
namespace app\admin\model;
use think\Model;
class System extends Model
{
protected $name = 'system';
}

10
application/admin/model/Tags.php

@ -0,0 +1,10 @@
<?php
namespace app\admin\model;
use think\Model;
class Tags extends Model
{
protected $name = 'tags';
}

18
application/admin/model/Users.php

@ -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);
}
}

7
application/admin/model/authRule.php

@ -0,0 +1,7 @@
<?php
namespace app\admin\model;
use think\Model;
class authRule extends Model
{
}

17
application/admin/validate/Admin.php

@ -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' => '邮箱格式不正确',
];
}

24
application/admin/validate/Member.php

@ -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 '手机号码格式不正确';
}
}
}

12
application/admin/validate/Sys.php

@ -0,0 +1,12 @@
<?php
namespace app\admin\validate;
use think\Validate;
class Sys extends Validate
{
protected $rule = [
['sys_name', 'require', '站点名称不能为空!'],
['sys_url', 'require', '站点网址不能为空!']
];
}

124
application/admin/view/ad/form.html

@ -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>

133
application/admin/view/ad/index.html

@ -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>

85
application/admin/view/ad/type.html

@ -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>

53
application/admin/view/ad/typeForm.html

@ -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>

144
application/admin/view/auth/adminForm.html

@ -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>

56
application/admin/view/auth/admin_group.html

@ -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>

87
application/admin/view/auth/admin_list.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>

16
application/admin/view/auth/admin_rule.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"/}

46
application/admin/view/auth/groupForm.html

@ -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>

62
application/admin/view/auth/group_access.html

@ -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>

78
application/admin/view/auth/rule_add.html

@ -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>

70
application/admin/view/auth/rule_edit.html

@ -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>

235
application/admin/view/category/add.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>

237
application/admin/view/category/edit.html

@ -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>

63
application/admin/view/category/index.html

@ -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>

268
application/admin/view/client/add.html

@ -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">-->
<!-- &lt;!&ndash; <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> &ndash;&gt;-->
<!-- </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>

76
application/admin/view/client/alter_pr_user.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>

469
application/admin/view/client/chengjiao.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">&#xe654;</i>写跟进</a>
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="alter"><i class="layui-icon">&#xe60e;</i>转移</a>
<a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon">&#xe642;</i>编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon">&#xe640;</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">&#xe608;</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">&#xe681;</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">&#xe770;</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">&#xe60e;</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>

355
application/admin/view/client/dialogue.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>

287
application/admin/view/client/edit.html

@ -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}">-->
<!-- &lt;!&ndash; <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> &ndash;&gt;-->
<!-- </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>

160
application/admin/view/client/hangye_list.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">&#xe642;</i>编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon">&#xe640;</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">&#xe608;</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>

56
application/admin/view/client/hangye_list_add.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>

58
application/admin/view/client/hangye_list_edit.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>

474
application/admin/view/client/index.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">&#xe60e;</i>转移</a>
<a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon">&#xe642;</i>编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon">&#xe640;</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">&#xe608;</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">&#xe681;</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">&#xe770;</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">&#xe60e;</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>

124
application/admin/view/client/move_gh.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>

160
application/admin/view/client/rank_list.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">&#xe642;</i>编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon">&#xe640;</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">&#xe608;</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>

56
application/admin/view/client/rank_list_add.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>

58
application/admin/view/client/rank_list_edit.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>

156
application/admin/view/client/status_list.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">&#xe642;</i>编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon">&#xe640;</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">&#xe608;</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>

56
application/admin/view/client/status_list_add.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>

58
application/admin/view/client/status_list_edit.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>

169
application/admin/view/clues/add.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>

76
application/admin/view/clues/alter_pr_user.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>

156
application/admin/view/clues/area_list.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">&#xe642;</i>编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon">&#xe640;</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">&#xe608;</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>

56
application/admin/view/clues/area_list_add.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>

58
application/admin/view/clues/area_list_edit.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>

172
application/admin/view/clues/edit.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>

330
application/admin/view/clues/index.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">&#xe60e;</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">&#xe608;</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">&#xe681;</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>

156
application/admin/view/clues/source_list.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">&#xe642;</i>编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon">&#xe640;</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">&#xe608;</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>

56
application/admin/view/clues/source_list_add.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>

58
application/admin/view/clues/source_list_edit.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>

156
application/admin/view/clues/status_list.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">&#xe642;</i>编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon">&#xe640;</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">&#xe608;</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>

56
application/admin/view/clues/status_list_add.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>

58
application/admin/view/clues/status_list_edit.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>

149
application/admin/view/clues/turn_kh.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>

2
application/admin/view/common/foot.html

@ -0,0 +1,2 @@
<script type="text/javascript" src="/static/plugins/layui/layui.js"></script>

18
application/admin/view/common/head.html

@ -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');}?>">

134
application/admin/view/content/edit.html

@ -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>

122
application/admin/view/content/index.html

@ -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>

106
application/admin/view/database/database.html

@ -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>

60
application/admin/view/database/restore.html

@ -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>

119
application/admin/view/debris/form.html

@ -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>

109
application/admin/view/debris/index.html

@ -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>

83
application/admin/view/debris/type.html

@ -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>

53
application/admin/view/debris/typeForm.html

@ -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>

52
application/admin/view/donation/form.html

@ -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>

92
application/admin/view/donation/index.html

@ -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>

105
application/admin/view/feast/element.html

@ -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…
Cancel
Save