linwu 2 лет назад
Родитель
Сommit
a35da44b5a

+ 202 - 0
app/agent/controller/MobileFollow.php

@@ -0,0 +1,202 @@
+<?php
+
+namespace app\agent\controller;
+
+use app\agent\BaseController;
+use app\common\model\MobileFollow as MobileFollowModel;
+use app\common\model\MobileFollowLog as MobileFollowLogModel;
+
+class MobileFollow extends BaseController
+{
+
+    public function followList()
+    {
+        $status_list = MobileFollowModel::$statusText;
+        return view('mobilefollow/followlist', ['status_list' => $status_list]);
+    }
+
+    public function followForm()
+    {
+        $id          = input('id/d, 0');
+        $follow      = MobileFollowModel::findOrEmpty($id);
+        $status_list = MobileFollowModel::$statusText;
+        return view('mobilefollow/followform', [
+            'status_list' => $status_list,
+            'follow'      => $follow,
+        ]);
+    }
+
+    public function editFollow()
+    {
+        $agent = $this->access_agent;
+        $id    = input('id/d', 0);
+        $data  = [
+            'agent_id'     => $agent['id'],
+            'mobile'       => input('mobile/s', ""),
+            'content'      => input('content/s', ""),
+            'receive_time' => input('receive_time/s', ""),
+            'status'       => input('status/d', 1),
+        ];
+
+
+        if (empty($id)) {
+            MobileFollowModel::create($data);
+        } else {
+            $broker = MobileFollowModel::find($id);
+            $broker->save($data);
+        }
+
+        exit(json_encode([
+            'code' => 0,
+        ]));
+    }
+
+    public function delFollow()
+    {
+        $idarr        = input('idarr/a');
+        $follow_check = MobileFollowLogModel::whereIn('follow_id', $idarr)->find();
+        if (!empty($follow_check)) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "该记录下有跟进记录,无法删除",
+            ]));
+        }
+        $follow = MobileFollowModel::whereIn('id', $idarr)->select();
+        $result = $follow->delete();
+        if ($result) {
+            exit(json_encode([
+                'code' => 0,
+                'msg'  => "",
+            ]));
+        }
+        exit(json_encode([
+            'code' => 1,
+            'msg'  => "删除失败,请稍后重试",
+        ]));
+    }
+
+    public function listFollow()
+    {
+        $agentid  = $this->access_agent['id'];
+        $limit    = input('limit/d', 20);
+        $page     = input('page/d', 1);
+        $map      = [];
+        $map[]    = ['agent_id', '=', $agentid];
+        $keywords = input('keywords/s');
+        if (!empty($keywords)) {
+            $map[] = ['mobile', 'like', '%' . $keywords . '%'];
+        }
+        $status = input('status/d');
+        if (!empty($status)) {
+            $map[] = ['status', '=', $status];
+        }
+        $list  = MobileFollowModel::with(['user'])->where($map)->order('receive_time', 'DESC')->limit($limit)->page($page)->append(['status_text'])->select();
+        $count = MobileFollowModel::where($map)->count();
+        foreach ($list as $v) {
+            $v['is_register'] = empty($v['user']) ? '否' : '是';
+        }
+        if ($count == 0) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
+        exit(json_encode([
+            'code'  => 0,
+            'msg'   => "",
+            'count' => $count,
+            'data'  => $list,
+        ]));
+    }
+
+    public function importView()
+    {
+        return view('mobilefollow/importview');
+    }
+
+    public function import()
+    {
+        $file_url = input('file_url/s', "");
+        if (!file_exists($file_url)) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "文件不存在",
+            ]));
+        }
+
+        $agentid = $this->access_agent['id'];
+        $time    = time();
+        $data    = ['account', 'mobile', 'content', 'receive_time'];
+        $list    = importExecl($file_url, $data, 1);
+
+        $create = [];
+        foreach ($list as $k => $v) {
+            $empty_check = [
+                'mobile'       => '回复手机',
+                'content'      => '回复内容',
+                'receive_time' => '接收时间',
+            ];
+            foreach ($empty_check as $key => $value) {
+                if (empty($v[$key])) {
+                    exit(json_encode([
+                        'code' => 1,
+                        'msg'  => '第' . ($k + 2) . '行的' . $value . '不能为空',
+                    ]));
+                }
+            }
+
+            $item                 = [];
+            $item['agent_id']     = $agentid;
+            $item['mobile']       = $v['mobile'];
+            $item['content']      = $v['content'];
+            $item['receive_time'] = strtotime($v['receive_time']) ?: $time;
+            $item['status']       = 1;
+
+            $create[] = $item;
+        }
+
+        foreach ($create as $v) {
+            MobileFollowModel::create($v);
+        }
+
+        exit(json_encode(['code' => 0]));
+    }
+
+    // 用户跟进记录
+    public function follow()
+    {
+        $follow_id  = input('follow_id/d');
+        $follow    = MobileFollowModel::findOrEmpty($follow_id);
+        $followlist = MobileFollowLogModel::where('follow_id', $follow_id)->order('id', 'desc')->limit(100)->select();
+        $type_list = MobileFollowLogModel::$typeText;
+        return view('mobilefollow/follow', [
+            'follow' => $follow,
+            'followlist' => $followlist,
+            'type_list' => $type_list,
+        ]);
+    }
+
+    public function editFollowLog()
+    {
+        $follow_id = input('follow_id/d', 0);
+        $follow    = MobileFollowModel::findOrEmpty($follow_id);
+        if ($follow->isEmpty()) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "记录不存在。",
+            ]));
+        }
+        MobileFollowLogModel::create([
+            'follow_id'  => $follow_id,
+            'type'       => input('type/d', 1),
+            'remark'     => input('remark/s', ""),
+            'createtime' => time(),
+        ]);
+        $follow->save([
+            'status' => 2,
+        ]);
+        exit(json_encode([
+            'code' => 0,
+        ]));
+    }
+}

+ 6 - 0
app/agent/view/index.html

@@ -83,6 +83,12 @@
 							<cite>报备管理</cite>
 						</a>
 					</li>
+					<li data-name="broker" class="layui-nav-item">
+						<a lay-href="{:url('/mobilefollow/followList')}" lay-tips="电话跟进">
+							<i class="layui-icon layui-icon-user"></i>
+							<cite>电话跟进</cite>
+						</a>
+					</li>
 					<!--<li data-name="report" class="layui-nav-item">
 						<a href="javascript:;" lay-tips="报备" lay-direction="2">
 							<i class="layui-icon layui-icon-upload-drag"></i>

+ 100 - 0
app/agent/view/mobilefollow/follow.html

@@ -0,0 +1,100 @@
+<div class="layui-fluid">
+	<div class="layui-card">
+		<div class="layui-card-header">跟进信息</div>
+		<div class="layui-card-body">
+
+			<div class="layui-form layui-form-pane" lay-filter="LAY-user-follow-edit">
+				<input type="hidden" name="follow_id" value="{$follow.id}">
+				<div class="layui-form-item">
+					<label class="layui-form-label">手机号</label>
+					<div class="layui-input-block">
+						<input type="text" name="mobile" value="{$follow.mobile}" readonly class="layui-input layui-disabled">
+					</div>
+				</div>
+				<div class="layui-form-item" pane>
+					<label class="layui-form-label">跟进方式</label>
+					<div class="layui-input-block">
+						{volist name="type_list" id="vo" key="k"}
+						<input type="radio" name="type" value="{$k}" title="{$vo}" {eq name="k" value="1" }checked{/eq} />
+						{/volist}
+					</div>
+				</div>
+				<div class="layui-form-item">
+					<label class="layui-form-label"><span style="color:#f90c05;">*</span>跟进备注</label>
+					<div class="layui-input-block">
+						<textarea name="remark" lay-verify="required" placeholder="请输入..." class="layui-textarea"></textarea>
+					</div>
+				</div>
+				<div class="layui-form-item">
+					<div class="layui-input-block">
+						<input type="button" lay-submit lay-filter="LAY-user-follow-edit-submit" value="确认" class="layui-btn">
+					</div>
+				</div>
+			</div>
+
+			<fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
+				<legend>以往跟进记录</legend>
+			</fieldset>
+			<ul class="layui-timeline">
+				{volist name="followlist" 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">
+							{$vo.createtime} 【{$vo.type_text}】
+						</h3>
+						<p>{$vo.remark}</p>
+					</div>
+				</li>
+				{/volist}
+				<li class="layui-timeline-item">
+					<i class="layui-icon layui-timeline-axis"></i>
+					<div class="layui-timeline-content layui-text">
+						<div class="layui-timeline-title">已加载完 ( 最多显示最近100条跟进记录 )</div>
+					</div>
+				</li>
+			</ul>
+
+
+		</div>
+	</div>
+</div>
+
+<script>
+	layui.config({
+		base: '/static/echoui/' //静态资源所在路径
+	}).extend({
+		index: 'lib/index' //主入口模块
+	}).use(['index', 'form', 'set', 'table'], function() {
+		var $ = layui.$,
+			setter = layui.setter,
+			admin = layui.admin,
+			form = layui.form,
+			table = layui.table;
+		form.render();
+
+		form.on('submit(LAY-user-follow-edit-submit)', function(obj) {
+			var index = parent.layer.getFrameIndex(window.name);
+			admin.req({
+				url: setter.baseAgentUrl + 'mobilefollow/editfollowlog',
+				data: obj.field,
+				done: function(res) {
+					layer.msg("提交成功", {
+						icon: 1
+					});
+					var findex = parent.layer.open({
+						type: 2,
+						title: '用户【{$follow.mobile}】跟进记录',
+						content: 'follow.html?follow_id={$follow.id}',
+						maxmin: true,
+						area: ['750px', '550px']
+					});
+					parent.layui.table.reload('LAY-follow-followlist-table');
+					parent.layer.close(index);
+					parent.layer.full(findex);
+				}
+			});
+		});
+
+	});
+</script>

+ 86 - 0
app/agent/view/mobilefollow/followform.html

@@ -0,0 +1,86 @@
+<div class="layui-fluid">
+	<div class="layui-row layui-col-space15">
+		<div class="layui-col-md12">
+			<div class="layui-card">
+				<div class="layui-card-header">电话跟进</div>
+				<div class="layui-card-body" pad15>
+
+					<div class="layui-form layui-form-pane" lay-filter="LAY-follow-followform-edit">
+						<input type="hidden" name="id" value="{$follow.id}">
+						<div class="layui-form-item">
+							<label class="layui-form-label"><span style="color:#f90c05;">*</span>手机号</label>
+							<div class="layui-input-block">
+								<input type="text" name="mobile" lay-verify="required|phone" value="{$follow.mobile}" placeholder="请输入..." autocomplete="off"
+							    class="layui-input">
+							</div>
+						</div>
+						<div class="layui-form-item">
+							<label class="layui-form-label"><span style="color:#f90c05;">*</span>内容</label>
+							<div class="layui-input-block">
+								<input type="text" name="content" value="{$follow.content}" lay-verify="required" placeholder="请输入..." autocomplete="off"
+								 class="layui-input">
+							</div>
+						</div>
+						<div class="layui-form-item">
+							<label class="layui-form-label"><span style="color:#f90c05;">*</span>创建时间</label>
+							<div class="layui-input-block">
+								<input type="text" name="receive_time" id="receive_time" lay-verify="required" value="{$follow.receive_time}"
+									   placeholder="请输入创建时间" lay-verify="required" autocomplete="off" class="layui-input">
+							</div>
+						</div>
+						<div class="layui-form-item" pane>
+							<label class="layui-form-label">状态</label>
+							<div class="layui-input-block">
+								{volist name="status_list" id="vo" key="k"}
+								<input type="radio" name="status" value="{$k}" title="{$vo}" {eq name="$follow.status|default=1" value="$k" }checked{/eq} />
+								{/volist}
+							</div>
+						</div>
+
+						<div class="layui-form-item">
+							<div class="layui-input-block">
+								<input type="button" lay-submit lay-filter="LAY-follow-followform-edit-submit" value="确认提交" class="layui-btn">
+							</div>
+						</div>
+					</div>
+
+
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+
+<script>
+	layui.config({
+		base: '/static/echoui/' //静态资源所在路径
+	}).extend({
+		index: 'lib/index' //主入口模块
+	}).use(['index', 'form', 'set', 'laydate'], function() {
+		var $ = layui.$,
+			setter = layui.setter,
+			admin = layui.admin,
+			laydate = layui.laydate,
+			form = layui.form;
+		form.render();
+		laydate.render({
+			elem: '#receive_time',
+			type: 'datetime'
+		});
+
+		form.on('submit(LAY-follow-followform-edit-submit)', function(obj) {
+			var index = parent.layer.getFrameIndex(window.name);
+			admin.req({
+				url: setter.baseAgentUrl + 'mobilefollow/editfollow',
+				data: obj.field,
+				done: function(res) {
+					layer.msg("提交成功", {
+						icon: 1
+					});
+					parent.layui.table.reload('LAY-follow-followlist-table'); //重载表格
+					parent.layer.close(index);
+				}
+			});
+		});
+	});
+</script>

+ 183 - 0
app/agent/view/mobilefollow/followlist.html

@@ -0,0 +1,183 @@
+<div class="layui-fluid">
+	<div class="layui-card">
+		<div class="layui-form layui-form-pane layui-card-header layuiadmin-card-header-auto" lay-filter="LAY-follow-followlist-search">
+			<div class="layui-form-item">
+				<div class="layui-inline">
+					<label class="layui-form-label">手机号</label>
+					<div class="layui-input-block">
+						<input type="text" name="keywords" placeholder="请输入" autocomplete="off" class="layui-input">
+					</div>
+				</div>
+				<div class="layui-inline">
+					<label class="layui-form-label">状态</label>
+					<div class="layui-input-block">
+						<select name="status">
+							<option value="">全部状态</option>
+							{volist name="status_list" id="vo" key="k"}
+								<option value="{$k}">{$vo}</option>
+							{/volist}
+						</select>
+					</div>
+				</div>
+				<div class="layui-inline">
+					<button class="layui-btn" lay-submit lay-filter="LAY-follow-followlist-btn">
+						<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
+					</button>
+				</div>
+			</div>
+		</div>
+
+		<div class="layui-card-body">
+			<div style="padding-bottom: 10px;">
+				<button class="layui-btn layuiadmin-btn" data-type="batchdel">删除</button>
+				<button class="layui-btn layuiadmin-btn" data-type="add">添加</button>
+				<button class="layui-btn layuiadmin-btn" data-type="import">批量导入</button>
+			</div>
+
+			<table id="LAY-follow-followlist-table" lay-filter="LAY-follow-followlist-table"></table>
+			<script type="text/html" id="registerTpl">
+				{{d.user ? '是' : '否'}}
+			</script>
+			<script type="text/html" id="setTpl">
+				<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="follow"><i class="layui-icon layui-icon-engine"></i>跟进</a>
+				<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
+				<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
+			</script>
+		</div>
+	</div>
+</div>
+
+<script>
+	layui.config({
+		base: '/static/echoui/' //静态资源所在路径
+	}).extend({
+		index: 'lib/index' //主入口模块
+	}).use(['index', 'form', 'set', 'table'], function() {
+		var $ = layui.$,
+			setter = layui.setter,
+			admin = layui.admin,
+			form = layui.form,
+			table = layui.table;
+		form.render();
+
+		table.render({
+			elem: '#LAY-follow-followlist-table',
+			url: setter.baseAgentUrl + 'mobilefollow/listfollow',
+			cols: [
+				[
+					{ type: 'checkbox', fixed: 'left' },
+					{ field: 'id', width: 80, title: '表ID', sort: true },
+					{ field: 'mobile', title: '手机号' },
+					{ field: 'content', title: '回复内容'},
+					{ field: 'receive_time', width: 200, title: '回复时间'},
+					{ field: 'is_register', width: 100, title: '是否注册'},
+					{ field: 'status_text', width: 100, title: '状态'},
+					{ title: '操作', width: 220, align: 'center', fixed: 'right', toolbar: '#setTpl' }
+				]
+			],
+			page: true,
+			limit: 50,
+			cellMinWidth: 150,
+			text: '对不起,加载出现异常!'
+		});
+
+		form.on('submit(LAY-follow-followlist-btn)', function(data) {
+			table.reload('LAY-follow-followlist-table', {
+				where: data.field,
+				page: {
+					curr: 1
+				}
+			});
+		});
+
+		var active = {
+			batchdel: function() {
+				var checkStatus = table.checkStatus('LAY-follow-followlist-table'),
+					checkData = checkStatus.data; //得到选中的数据
+				if (checkData.length === 0) {
+					return layer.msg('请选择数据');
+				}
+				var idarr = [];
+				for (var i = 0; i < checkData.length; i++) {
+					idarr.push(checkData[i].id);
+				}
+				layer.confirm('确定删除此记录吗?', function(index) {
+					admin.req({
+						url: setter.baseAgentUrl + 'mobilefollow/delfollow',
+						data: {
+							idarr: idarr
+						},
+						done: function(res) {
+							obj.del();
+							layer.msg('已删除');
+						}
+					});
+					table.reload('LAY-follow-followlist-table');
+					layer.msg('已删除');
+				});
+			},
+			add: function() {
+				var index = layer.open({
+					type: 2,
+					title: '添加跟进',
+					content: 'followform.html?id=0',
+					maxmin: true,
+					area: ['750px', '480px']
+				});
+				layer.full(index);
+			},
+			import: function() {
+				layer.open({
+					type: 2,
+					title: '批量导入',
+					content: 'importView.html',
+					maxmin: true,
+					area: ['750px', '300px']
+				});
+			},
+		};
+
+		table.on('tool(LAY-follow-followlist-table)', function(obj) {
+			var data = obj.data;
+			if (obj.event === 'del') {
+				layer.confirm('确定删除此记录吗?', function(index) {
+					admin.req({
+						url: setter.baseAgentUrl + 'mobilefollow/delfollow',
+						data: {
+							idarr: [data.id]
+						},
+						done: function(res) {
+							obj.del();
+							layer.msg('已删除');
+						}
+					});
+					layer.close(index);
+				});
+			} else if (obj.event === 'edit') {
+				var index = layer.open({
+					type: 2,
+					title: '编辑电话跟进',
+					content: 'followform.html?id=' + data.id,
+					maxmin: true,
+					area: ['750px', '480px']
+				});
+				layer.full(index);
+			} else if  (obj.event === 'follow') {
+				var index = layer.open({
+					type: 2,
+					title: '用户【' + data.mobile + '】跟进记录',
+					content: 'follow.html?follow_id=' + data.id,
+					maxmin: true,
+					area: ['750px', '550px']
+				});
+				layer.full(index);
+			}
+		});
+
+		$('.layui-btn.layuiadmin-btn').on('click', function() {
+			var type = $(this).data('type');
+			active[type] ? active[type].call(this) : '';
+		});
+
+	});
+</script>

+ 68 - 0
app/agent/view/mobilefollow/importview.html

@@ -0,0 +1,68 @@
+<div class="layui-fluid">
+	<div class="layui-row layui-col-space15">
+		<div class="layui-col-md12">
+			<div class="layui-card">
+				<div class="layui-card-header">导入</div>
+				<div class="layui-card-body" pad15>
+					<div class="layui-form layui-form-pane" lay-filter="LAY-follow-followform-upload">
+						<div class="layui-form-item">
+							<label class="layui-form-label">文件名</label>
+							<div class="layui-input-block">
+								<input type="text" id="file_name" autocomplete="off" readonly placeholder="请点击上传文件按钮" class="layui-input">
+							</div>
+						</div>
+						<input type="hidden" name="file_url" value="" id="file_url">
+						<div class="layui-form-item">
+							<div class="layui-input-block">
+								<a href="/static/exl/follow_import.xlsx" target="_blank">
+									<button type="button" class="layui-btn layui-btn-normal" id="test3">下载模板</button>
+								</a>
+								<button type="button" class="layui-btn layui-btn-normal" id="upload"><i class="layui-icon"></i>上传文件</button>
+								<input type="button" lay-submit lay-filter="LAY-follow-followform-upload-submit" value="确认提交" class="layui-btn">
+							</div>
+						</div>
+					</div>
+
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+
+
+<script>
+	layui.config({
+		base: '/static/echoui/' //静态资源所在路径
+	}).extend({
+		index: 'lib/index' //主入口模块
+	}).use(['index', 'form', 'upload'], function() {
+		var $ = layui.$,setter = layui.setter, admin = layui.admin, upload = layui.upload,form = layui.form;
+		form.render();
+
+		form.on('submit(LAY-follow-followform-upload-submit)', function(obj) {
+			var index = parent.layer.getFrameIndex(window.name);
+			admin.req({
+				url: setter.baseAgentUrl + 'mobile_follow/import',
+				data: obj.field,
+				type: 'post',
+				done: function(res) {
+					layer.msg("导入成功", {
+						icon: 1
+					});
+					parent.layui.table.reload('LAY-follow-followlist-table'); //重载表格
+					parent.layer.close(index);
+				}
+			});
+		});
+
+		upload.render({
+			elem: '#upload'
+			,url: setter.baseAgentUrl + 'attachment/tplFieldFile' //此处配置你自己的上传接口即可
+			,accept: 'file' //普通文件
+			,done: function(res){
+				$('#file_url').val(res.data.path);
+				$('#file_name').val(res.data.title);
+			}
+		});
+	});
+</script>

+ 36 - 0
app/common/model/MobileFollow.php

@@ -0,0 +1,36 @@
+<?php
+
+namespace app\common\model;
+
+use think\Model;
+
+class MobileFollow extends Model
+{
+    // 设置字段信息
+    protected $schema = [
+        'id'           => 'int',
+        'agent_id'     => 'int',
+        'mobile'       => 'string',
+        'content'      => 'string',
+        'receive_time' => 'int',
+        'status'       => 'int',
+    ];
+
+    // 设置字段自动转换类型
+    protected $type = [
+        'receive_time' => 'timestamp:Y-m-d H:i:s',
+    ];
+
+    // 关联User
+    public function user()
+    {
+        return $this->hasOne(User::class, "mobile", "mobile");
+    }
+
+    public static $statusText = [1 => '待跟进', 2 => '跟进中', 3 => '跟进完成'];
+
+    public function getStatusTextAttr($value, $data)
+    {
+        return self::$statusText[$data['status']];
+    }
+}

+ 29 - 0
app/common/model/MobileFollowLog.php

@@ -0,0 +1,29 @@
+<?php
+
+namespace app\common\model;
+
+use think\Model;
+
+class MobileFollowLog extends Model
+{
+    // 设置字段信息
+    protected $schema = [
+        'id'         => 'int',
+        'follow_id'  => 'int',
+        'type'       => 'int',
+        'remark'     => 'string',
+        'createtime' => 'int',
+    ];
+
+    // 设置字段自动转换类型
+    protected $type = [
+        'createtime' => 'timestamp:Y-m-d H:i:s',
+    ];
+
+    public static $typeText = [1 => '电话跟进', 2 => '微信跟进', 3 => '面谈'];
+
+    public function getTypeTextAttr($value, $data)
+    {
+        return self::$typeText[$data['type']];
+    }
+}

+ 0 - 36
app/common/model/UserFollow.php

@@ -1,36 +0,0 @@
-<?php
-namespace app\common\model;
-
-use think\Model;
-
-class UserFollow extends Model
-{
-	// 设置字段信息
-    protected $schema = [
-        'id'          		=> 'int',
-		'userid'			=> 'int',
-		'ftype'				=> 'string',
-		'fstatus'			=> 'tinyint',
-		'remark'			=> 'string',
-		'createtime'  		=> 'int'
-    ];
-	
-	// 设置字段自动转换类型
-	protected $type = [
-		'createtime'  => 'timestamp:Y-m-d H:i:s'
-    ];
-	
-	public function getFstatusTextAttr($value,$data)
-	{
-		$fstatus = [1=>'未跟进', 2=>'未面试', 3=>'面试通过', 4=>'面试未通过', 5=>'用户放弃', 6=>'已入职', 7=>'已离职'];
-		return $fstatus[$data['fstatus']];
-	}
-
-	// 关联User
-	public function user()
-	{
-	    return $this->hasOne(User::class, "id", "userid");
-	}
-	
-	
-}

+ 35 - 35
app/worker/controller/Home.php

@@ -1,18 +1,9 @@
 <?php
+
 namespace app\worker\controller;
 
-use think\facade\Session;
 use app\worker\BaseController;
 
-use app\common\model\User as UserModel;
-use app\common\model\Agent as AgentModel;
-use app\common\model\Broker as BrokerModel;
-
-use app\common\model\ReportEntry as ReportEntryModel;
-
-use app\common\model\Admin as AdminModel;
-use app\common\model\Menu as MenuModel;
-
 use app\common\model\Worker as WorkerModel;
 use app\common\model\Comjobs as ComjobsModel;
 use app\common\model\Demand as DemandModel;
@@ -20,44 +11,53 @@ use app\common\model\Supply as SupplyModel;
 
 class Home extends BaseController
 {
-	
-	public function index()
-	{
-		return view('index', [
-			'access_worker'  => session('access_worker')
-		]);
-	}
+
+    public function index()
+    {
+        $access_worker = session('access_worker');
+        $worker_list   = [];
+        if (!empty($access_worker['userid'])) {
+            $worker_list = WorkerModel::where('userid', $access_worker['userid'])
+                ->where('id', '<>', $access_worker['id'])
+                ->where('status', '<>', 2)
+                ->select();
+        }
+        return view('index', [
+            'access_worker' => $access_worker,
+            'worker_list'   => $worker_list,
+        ]);
+    }
 
     public function console()
     {
         $workerid = $this->access_worker['id'];
-        $where = array();
-        $where[] = ['workerid', '=', $workerid];
+        $where    = [];
+        $where[]  = ['workerid', '=', $workerid];
 
-        $comjobstol['today'] = ComjobsModel::whereDay('createtime')->where($where)->count();
+        $comjobstol['today']     = ComjobsModel::whereDay('createtime')->where($where)->count();
         $comjobstol['yesterday'] = ComjobsModel::whereDay('createtime', 'yesterday')->where($where)->count();
-        $comjobstol['week'] = ComjobsModel::whereWeek('createtime')->where($where)->count();
-        $comjobstol['month'] = ComjobsModel::whereMonth('createtime')->where($where)->count();
+        $comjobstol['week']      = ComjobsModel::whereWeek('createtime')->where($where)->count();
+        $comjobstol['month']     = ComjobsModel::whereMonth('createtime')->where($where)->count();
 
-        $demandtol['today'] = DemandModel::whereDay('createtime')->where($where)->count();
+        $demandtol['today']     = DemandModel::whereDay('createtime')->where($where)->count();
         $demandtol['yesterday'] = DemandModel::whereDay('createtime', 'yesterday')->where($where)->count();
-        $demandtol['week'] = DemandModel::whereWeek('createtime')->where($where)->count();
-        $demandtol['month'] = DemandModel::whereMonth('createtime')->where($where)->count();
+        $demandtol['week']      = DemandModel::whereWeek('createtime')->where($where)->count();
+        $demandtol['month']     = DemandModel::whereMonth('createtime')->where($where)->count();
 
-        $supplytol['today'] = SupplyModel::whereDay('createtime')->where($where)->count();
+        $supplytol['today']     = SupplyModel::whereDay('createtime')->where($where)->count();
         $supplytol['yesterday'] = SupplyModel::whereDay('createtime', 'yesterday')->where($where)->count();
-        $supplytol['week'] = SupplyModel::whereWeek('createtime')->where($where)->count();
-        $supplytol['month'] = SupplyModel::whereMonth('createtime')->where($where)->count();
+        $supplytol['week']      = SupplyModel::whereWeek('createtime')->where($where)->count();
+        $supplytol['month']     = SupplyModel::whereMonth('createtime')->where($where)->count();
 
 
-        return view('home/console',[
-            'domain' 			=> request()->domain(),
-            'access_admin'  	=> session('access_admin'),
-            'comjobstol'		=> $comjobstol,
-            'demandtol'			=> $demandtol,
-            'supplytol'			=> $supplytol
+        return view('home/console', [
+            'domain'       => request()->domain(),
+            'access_admin' => session('access_admin'),
+            'comjobstol'   => $comjobstol,
+            'demandtol'    => $demandtol,
+            'supplytol'    => $supplytol,
         ]);
     }
-	
+
 
 }

+ 37 - 6
app/worker/controller/Login.php

@@ -47,14 +47,20 @@ class Login
         if ($mobile) {
             $data = Db::name('worker')
                 ->where('mobile', $mobile)
+                ->where('status', '<>', 2)
                 ->find();
+            if (empty($data)) {
+                $data = Db::name('worker')
+                    ->where('mobile', $mobile)
+                    ->find();
+            }
 
-            if ($data['status'] == 2) {
-                $code = 1;
-                $msg  = '该账号已经被禁用,请联系管理员';
-            } elseif (empty($data)) {
+            if (empty($data)) {
                 $code = 1;
                 $msg  = '该手机号未注册,请先注册';
+            } elseif ($data['status'] == 2) {
+                $code = 1;
+                $msg  = '该账号已经被禁用,请联系管理员';
             } else {
                 $code = 0;
                 $msg  = '该手机号正确';
@@ -121,7 +127,7 @@ class Login
         } else {
             if (preg_match($preg_phone, $mobile)) {
                 $sms = new SmsService();
-                $res = $sms->send($mobile,'verification',[$rand]);
+                $res = $sms->send($mobile, 'verification', [$rand]);
 
                 if ($res['code'] == 0) {
                     $rtn['code'] = 0;
@@ -179,10 +185,35 @@ class Login
 
     }
 
+    public function change()
+    {
+        $id = input('id',0);
+        if (empty($id)) {
+            session(null);
+            return redirect(url('/login/index'));
+        }
+
+        //用户不存在
+        $workeradmin = WorkerModel::where(['id' => $id])->findOrEmpty()->toArray();
+        if (empty($workeradmin)) {
+            session(null);
+            return redirect(url('/login/index'));
+        }
+
+        //非常登录其他用户
+        $access_worker = session('access_worker');
+        if ($workeradmin['userid'] != $access_worker['userid']) {
+            session(null);
+            return redirect(url('/login/index'));
+        }
+
+        //登录成功
+        session('access_worker', $workeradmin);
+        return redirect(url('/home/index'));
+    }
 
     public function logout()
     {
-
         session(null);
         return redirect(url('/login/index'));
     }

+ 4 - 2
app/worker/view/index.html

@@ -38,11 +38,13 @@
 				</li>
 				<li class="layui-nav-item" lay-unselect>
 					<a href="javascript:;">
-<!--						<cite>{$access_worker['mobile']}【{$access_worker['title']}</cite>-->
+						<cite>{$access_worker['title']}</cite>
 						<cite></cite>
 					</a>
 					<dl class="layui-nav-child">
-						<dd style="text-align: center;"><a lay-href="{:url('/worker/workerform')}">修改资料</a></dd>
+						{volist name="worker_list" id="worker_item"}
+						<dd style="text-align: center;"><a href="{:url('/login/change')}?id={$worker_item.id}" target="_top">{$worker_item.title}</a></dd>
+						{/volist}
 						<hr>
 						<dd style="text-align: center;"><a href="{:url('/login/logout')}">退出</a></dd>
 					</dl>

BIN
public/static/exl/follow_import.xlsx