新增【进度分配模式】涉及修改文件
本期新增进度分配模式,举例如下:
比如客服1我设置了 10条,客服2我设置了20条,客服3我设置了30条,第一轮大家的进度都是0,分完了之后第一轮后,第二轮就寻找进度最少的开始分,比如客服1虽然分了一条,但是他的进度达到10%,客服2也分了一条,但是他的进度才5%,客服3也分了一条,但是他的进度才3.3%,那第二轮就从客服3开始,如果客服3分完了,那就是客服2最少,才5%,这样去分,直到每个人都达到100%。
涉及文件system/system.html
<div class="layui-form-item">
<label class="layui-form-label">分配模式</label>
<div class="layui-input-block">
<input type="radio" name="fpmoshi" value="nums" title="数量">
<input type="radio" name="fpmoshi" value="turns" title="轮换">
<input type="radio" name="fpmoshi" value="pace" title="进度">
</div>
<div class="layui-form-mid layui-word-aux">
数量分配模式:每次分配多少条。轮换分配模式:每多少轮分配一次。进度分配模式按照最大限制完成进度分配,
</div>
</div>涉及文件index/main.html
{volist name='kefulist' id='vo'}
<tr>
<td>
<h2 class="table-avatar">
<div class="avatar avatar-sm mr-2 avatar-img rounded-circle" data-username="{$vo['username']}"></div>
{$vo['username']}
</h2>
</td>
<td>{$vo['pace_rate']}</td>
<td>
<span class="badge {$vo['zhuangtai'] == 1 ? 'bg-success-light' : 'bg-danger-light'}">{$vo['zhuangtai'] == 1 ? '可分配' : '无值班'}</span>
</td>
<td>{$vo['is_open'] == 1 ? '正常' : '禁止登录'}</td>
<td>{$vo['ckzhanghu'] == 1 ? '可查看' : '仅编码'}</td>
<td>{$vo['is_ckly'] == 1 ? '可查看' : '仅编码'}</td>
<td class="text-right">
<div class="dropdown dropdown-action">
<span class="badge {$vo['ending'] > 0 ? 'bg-info-light' : 'bg-warning-light'}">
{if condition="$vo['ending'] > 0"}
剩余:{$vo['ending']}
{else /}
已上限
{/if}
</span>
</div>
</td>
</tr>
{/volist} 涉及controller/Index.php文件约153行
$kefulist = cache('kefulist');
if (!$kefulist) {
$kefulist = Db::name('admin')
->where('group_id', 'IN', [8, 11])
->where('is_open', 1)
->order('zhuangtai desc')
->select();
$adminUsernames = array_column($kefulist, 'username');
$fpStats = [];
if (!empty($adminUsernames)) {
$fpStats = Db::name('crm_leads')
->where('pr_user', 'IN', $adminUsernames)
->whereTime('fp_time', 'today')
->field('pr_user, COUNT(pr_user) as pr_user_count')
->group('pr_user')
->select();
}
$fpStatsMap = array_column($fpStats, 'pr_user_count', 'pr_user');
foreach ($kefulist as &$keFu) {
$prUserCount = $fpStatsMap[$keFu['username']] ?? 0;
$keFu['ending'] = $keFu['num_max'] - $prUserCount;
}
cache('kefulist', $kefulist, 600); // 缓存10分钟
}替换为以下内容
$kefulist = Db::name('admin')
->where('group_id', 'IN', [8, 11])
->where('is_open', 1)
->order('zhuangtai desc')
->select();
$adminUsernames = array_column($kefulist, 'username');
$fpStats = [];
if (!empty($adminUsernames)) {
$fpStats = Db::name('crm_leads')
->where('pr_user', 'IN', $adminUsernames)
->whereTime('fp_time', 'today')
->field('pr_user, COUNT(pr_user) as pr_user_count')
->group('pr_user')
->select();
}
$fpStatsMap = array_column($fpStats, 'pr_user_count', 'pr_user');
foreach ($kefulist as &$keFu) {
$prUserCount = $fpStatsMap[$keFu['username']] ?? 0;
$keFu['ending'] = $keFu['num_max'] - $prUserCount;
if ($keFu['num_max'] <= 0) {
$keFu['pace_rate'] = '100%';
} else {
$rate = round($prUserCount / $keFu['num_max'] * 100, 1);
$keFu['pace_rate'] = $rate . '%';
}
}
unset($keFu);涉及修改文件controller/Auth.php约118行,查找$thisfpms=$cxfpms整个行数代码修改为:
$cxfpms = Db::table('system')->where(['id'=> 1])->find();
$thisfpms=$cxfpms['fpmoshi'];
if($thisfpms=="nums"){
$thisfpname="数量";
}elseif($thisfpms=="pace"){
$thisfpname="进度";
}else{
$thisfpname="轮换";
}注:本次修改并打开进度分配模式后轮换与数量设置的数值将不生效!!!只看总上限量。!!