123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512 |
- <?php
- require_once 'conn.php';
- checkLogin();
- // 检查当前用户是否为组长
- $isLeader = false;
- $userInfoQuery = "SELECT em_role, em_permission_role_id FROM employee WHERE id = " . $_SESSION['employee_id'];
- $userResult = $conn->query($userInfoQuery);
- if ($userResult && $userRow = $userResult->fetch_assoc()) {
- // 只有 em_permission_role_id=2 表示该用户是组长
- $isLeader = ($userRow['em_permission_role_id'] == 2);
- }
- // 如果不是组长,直接跳转到客户列表页面
- if (!$isLeader) {
- header('Location: customers.php');
- exit;
- }
- $act = $_GET['act'] ?? '';
- if ($act == 'postchk') {
- $keys = urlencode($_GET['Keys'] ?? '');
- $page = $_GET['Page'] ?? '';
- $chkact = $_POST['chkact'] ?? '';
-
- if (isset($_POST['chkbox'])) {
- $sqlStr = "(" . implode(',', array_map('intval', (array)$_POST['chkbox'])) . ")";
- $count = count($_POST['chkbox']);
-
- // 检查是否为员工转让操作
- if (substr($chkact, 0, 1) === 't') {
- // 从chkact值中提取员工ID
- $employeeId = (int)substr($chkact, 1);
-
- // 获取员工代码和名称
- $stmt = $conn->prepare("SELECT em_code, em_user FROM employee WHERE id = ?");
- $stmt->bind_param("i", $employeeId);
- $stmt->execute();
- $result = $stmt->get_result();
- $employeeCode = '';
- $employeeName = '未知业务员';
- if ($row = $result->fetch_assoc()) {
- $employeeCode = $row['em_code'];
- $employeeName = $row['em_user'];
- }
- $stmt->close();
-
- // 更新客户记录
- $sql = "UPDATE customer SET
- cs_updatetime = NOW(),
- cs_code = REPLACE(cs_code, '-', '/{$employeeCode}-'),
- cs_belong = {$employeeId},
- cs_chain = CONCAT(cs_chain, ',{$employeeId}')
- WHERE id IN {$sqlStr}";
- $conn->query($sql);
-
- // 记录操作日志
- $ids = implode(',', array_map('intval', (array)$_POST['chkbox']));
- $action = "{$_SESSION['employee_name']} 批量转移{$count}个客户({$ids})给组员【{$employeeName}】";
- logAction($action);
-
- } else {
- $chkact = (int)$chkact;
- $sql = "UPDATE customer SET cs_deal = {$chkact} WHERE id IN {$sqlStr}";
- $conn->query($sql);
-
- // 记录跟进阶段变更日志
- $dealStatus = "";
- switch($chkact) {
- case 0: $dealStatus = "无响应"; break;
- case 1: $dealStatus = "背景调查"; break;
- case 2: $dealStatus = "明确需求"; break;
- case 3: $dealStatus = "已成交"; break;
- default: $dealStatus = "未知状态";
- }
- $ids = implode(',', array_map('intval', (array)$_POST['chkbox']));
- $action = "{$_SESSION['employee_name']} 批量将{$count}个客户({$ids})的跟进阶段更改为【{$dealStatus}】";
- logAction($action);
- }
-
- $deleteTag = "DELETE FROM tagtable WHERE customerId IN " . $sqlStr;
- $conn->query($deleteTag);
- }
-
- header("Location: ?Keys=" . $keys . "&Page=" . $page);
- exit;
- }
- // 处理搜索和过滤参数
- $keys = $_GET['Keys'] ?? '';
- $keys = str_replace([" ", "+"], "", $keys);
- $keyscode = textEncode($keys);
- $page = $_GET['Page'] ?? '';
- $filters = [
- 'Country' => $_GET['fliterCountry'] ?? '',
- 'Qudao' => $_GET['fliterQudao'] ?? '',
- 'Deal' => $_GET['fliterDeal'] ?? '',
- 'Business' => $_GET['fliterBusiness'] ?? '',
- 'Contact' => $_GET['fliterContact'] ?? ''
- ];
- $filterStr = "";
- $urlStr = "";
- // 构建过滤条件
- if (!empty($filters['Country'])) {
- $filterStr .= " AND c.cs_country=" . (int)$filters['Country'];
- $urlStr .= "&fliterCountry=" . $filters['Country'];
- }
- if (!empty($filters['Qudao'])) {
- $filterStr .= " AND c.cs_from=" . (int)$filters['Qudao'];
- $urlStr .= "&fliterQudao=" . $filters['Qudao'];
- }
- if (!empty($filters['Deal'])) {
- $filterStr .= " AND c.cs_deal=" . (int)$filters['Deal'];
- $urlStr .= "&fliterDeal=" . $filters['Deal'];
- }
- if (!empty($filters['Business'])) {
- $filterStr .= " AND c.cs_type=" . (int)$filters['Business'];
- $urlStr .= "&fliterBusiness=" . $filters['Business'];
- }
- // 改进联系方式过滤查询
- if (!empty($filters['Contact'])) {
- switch ($filters['Contact']) {
- case "1": $filterStr .= " AND c.id IN (SELECT customer_id FROM customer_contact WHERE tel_1 != '' OR tel_2 != '' OR tel_3 != '')"; break;
- case "2": $filterStr .= " AND c.id IN (SELECT customer_id FROM customer_contact WHERE wechat_1 != '' OR wechat_2 != '' OR wechat_3 != '')"; break;
- case "3": $filterStr .= " AND c.id IN (SELECT customer_id FROM customer_contact WHERE whatsapp_1 != '' OR whatsapp_2 != '' OR whatsapp_3 != '')"; break;
- case "4": $filterStr .= " AND c.id IN (SELECT customer_id FROM customer_contact WHERE email_1 != '' OR email_2 != '' OR email_3 != '')"; break;
- case "5": $filterStr .= " AND c.id IN (SELECT customer_id FROM customer_contact WHERE linkedin_1 != '' OR linkedin_2 != '' OR linkedin_3 != '')"; break;
- case "6": $filterStr .= " AND c.id IN (SELECT customer_id FROM customer_contact WHERE facebook_1 != '' OR facebook_2 != '' OR facebook_3 != '')"; break;
- case "7": $filterStr .= " AND c.id IN (SELECT customer_id FROM customer_contact WHERE alibaba_1 != '' OR alibaba_2 != '' OR alibaba_3 != '')"; break;
- }
- $urlStr .= "&fliterContact=" . $filters['Contact'];
- }
- $keys = urlencode($keys);
- $hrefstr = "?keys=" . $keys;
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>管理区域</title>
- <link rel="stylesheet" href="css/common.css" type="text/css" />
- <link rel="stylesheet" href="css/alert.css" type="text/css" />
- <script src="system/js/jquery-1.7.2.min.js"></script>
- <script src="js/js.js"></script>
- <style>
- body {
- margin: 0;
- padding: 20px;
- background: #fff;
- }
- #man_zone {
- margin-left: 0;
- }
- </style>
- </head>
- <body class="clear">
- <?php // require_once 'panel.php'; ?>
- <div id="man_zone">
- <form id="form1" method="post" action="?act=postchk&Keys=<?= $keys ?>&Page=<?= $page ?>" onSubmit="return false">
- <div class="fastSelect clear">
- <H1>搜索条件</H1>
- <div class="selectItem">
- <label>区域</label>
- <select name="fliterCountry" class="filterSearch">
- <option value="">请选择国家地区</option>
- <?php
- $result = $conn->query("SELECT id, countryName FROM country ORDER BY CONVERT(countryName USING gbk) COLLATE gbk_chinese_ci ASC");
- while ($row = $result->fetch_assoc()) {
- $selected = ($filters['Country'] == $row['id']) ? ' selected="selected"' : '';
- echo "<option value=\"{$row['id']}\"{$selected}>{$row['countryName']}</option>";
- }
- ?>
- </select>
- </div>
- <div class="selectItem">
- <label>来源渠道</label>
- <select name="fliterQudao" class="filterSearch">
- <option value="">请选择渠道</option>
- <?php
- $result = $conn->query("SELECT id, ch_name FROM qudao");
- while ($row = $result->fetch_assoc()) {
- $selected = ($filters['Qudao'] == $row['id']) ? ' selected="selected"' : '';
- echo "<option value=\"{$row['id']}\"{$selected}>{$row['ch_name']}</option>";
- }
- ?>
- </select>
- </div>
- <div class="selectItem">
- <label>跟进阶段</label>
- <select name="fliterDeal" class="filterSearch">
- <option value="">请选择</option>
- <option value="0"<?= ($filters['Deal'] == "0") ? ' selected="selected"' : '' ?>>无响应</option>
- <option value="1"<?= ($filters['Deal'] == "1") ? ' selected="selected"' : '' ?>>背景调查</option>
- <option value="2"<?= ($filters['Deal'] == "2") ? ' selected="selected"' : '' ?>>明确需求</option>
- <option value="3"<?= ($filters['Deal'] == "3") ? ' selected="selected"' : '' ?>>已成交</option>
- </select>
- </div>
- <div class="selectItem">
- <label>客户类型</label>
- <select name="fliterBusiness" class="filterSearch">
- <option value="">请选择</option>
- <?php
- $result = $conn->query("SELECT id, businessType FROM clienttype");
- while ($row = $result->fetch_assoc()) {
- $selected = ($filters['Business'] == $row['id']) ? ' selected="selected"' : '';
- echo "<option value=\"{$row['id']}\"{$selected}>{$row['businessType']}</option>";
- }
- ?>
- </select>
- </div>
- <div class="selectItem">
- <label>联系方式</label>
- <select name="fliterContact" class="filterSearch">
- <option value="">请选择</option>
- <option value="1"<?= ($filters['Contact'] == "1") ? ' selected="selected"' : '' ?>>电话</option>
- <option value="2"<?= ($filters['Contact'] == "2") ? ' selected="selected"' : '' ?>>微信</option>
- <option value="3"<?= ($filters['Contact'] == "3") ? ' selected="selected"' : '' ?>>WhatsApp</option>
- <option value="4"<?= ($filters['Contact'] == "4") ? ' selected="selected"' : '' ?>>邮箱</option>
- <option value="5"<?= ($filters['Contact'] == "5") ? ' selected="selected"' : '' ?>>领英</option>
- <option value="6"<?= ($filters['Contact'] == "6") ? ' selected="selected"' : '' ?>>Facebook</option>
- <option value="7"<?= ($filters['Contact'] == "7") ? ' selected="selected"' : '' ?>>阿里巴巴</option>
- </select>
- </div>
- <div class="inputSearch">
- <input type="text" id="keys" class="inputTxt" placeholder="请输入搜索关键词"
- value="<?= empty($keyscode) ? '' : htmlspecialcharsFix($keyscode) ?>"
- onKeyDown="if(event.keyCode==13){location.href='?Keys='+encodeURIComponent(document.getElementById('keys').value)}" />
- <input type="button" id="searchgo" class="searchgo" value="go"
- onClick="location.href='?Keys='+encodeURIComponent(document.getElementById('keys').value)" />
- </div>
- </div>
- <div width="100%" border="0" cellpadding="3" cellspacing="1" class="table2">
- <div class="theader">
- <div class="col1"><input type="checkbox" name="chkall" id="chkall" onClick="chkboxall(this,'chkbox')" /></div>
- <div class="col2">序号</div>
- <div class="col3">客户编号</div>
- <div class="col4">渠道来源</div>
- <div class="col5">区域</div>
- <div class="col6">客户类型</div>
- <div class="col7">跟进阶段</div>
- <div class="col8">录入时间</div>
- <div class="col9">组员</div>
- </div>
- <?php
- // 优化SQL查询
- $sql = "SELECT c.id, c.cs_code, c.cs_from, c.cs_country, c.cs_type, c.cs_deal, c.cs_addtime, c.cs_belong,
- c.cs_note, c.cs_claimFrom
- FROM customer c
- WHERE c.cs_belong IN (SELECT id FROM employee WHERE em_role=" . $_SESSION['employee_id'] . ")";
- // 构建搜索条件
- $searchPattern = mysqli_real_escape_string($conn, $keyscode);
- if(!empty($searchPattern)) {
- $sql .= " AND (c.cs_code LIKE '%$searchPattern%'
- OR c.id IN (SELECT customer_id FROM customer_contact WHERE
- contact_name LIKE '%$searchPattern%' OR
- tel_1 LIKE '%$searchPattern%' OR
- tel_2 LIKE '%$searchPattern%' OR
- tel_3 LIKE '%$searchPattern%' OR
- email_1 LIKE '%$searchPattern%' OR
- email_2 LIKE '%$searchPattern%' OR
- email_3 LIKE '%$searchPattern%' OR
- wechat_1 LIKE '%$searchPattern%' OR
- wechat_2 LIKE '%$searchPattern%' OR
- wechat_3 LIKE '%$searchPattern%' OR
- whatsapp_1_format LIKE '%$searchPattern%' OR
- whatsapp_2_format LIKE '%$searchPattern%' OR
- whatsapp_3_format LIKE '%$searchPattern%' OR
- linkedin_1 LIKE '%$searchPattern%' OR
- linkedin_2 LIKE '%$searchPattern%' OR
- linkedin_3 LIKE '%$searchPattern%' OR
- facebook_1 LIKE '%$searchPattern%' OR
- facebook_2 LIKE '%$searchPattern%' OR
- facebook_3 LIKE '%$searchPattern%' OR
- alibaba_1 LIKE '%$searchPattern%' OR
- alibaba_2 LIKE '%$searchPattern%' OR
- alibaba_3 LIKE '%$searchPattern%')
- OR c.id IN (SELECT customerId FROM tagtable WHERE tagName LIKE '%$searchPattern%'))";
- }
- // 添加过滤条件
- $sql .= $filterStr . " ORDER BY c.cs_state DESC, c.id DESC";
- // 执行查询
- $result = $conn->query($sql);
- if ($result && $result->num_rows > 0) {
- // 优化分页逻辑
- $pageSize = 15;
- $totalRecords = $result->num_rows;
- $totalPages = ceil($totalRecords / $pageSize);
-
- $page = empty($page) ? 1 : $page;
- $page = ($page === 'end') ? $totalPages : $page;
- $page = (!is_numeric($page) || $page < 1) ? 1 : (int)$page;
- $page = ($page > $totalPages) ? $totalPages : $page;
-
- $offset = $pageSize * ($page - 1);
-
- // 获取记录
- $rows = [];
- while ($row = $result->fetch_assoc()) {
- $rows[] = $row;
- }
-
- $paginatedRows = array_slice($rows, $offset, $pageSize);
- $tempNum = $offset;
-
- foreach ($paginatedRows as $row) {
- $tempNum++;
-
- // 获取联系人信息
- $contactSql = "SELECT * FROM customer_contact WHERE customer_id = " . $row['id'];
- $contactResult = $conn->query($contactSql);
- $contactData = $contactResult->num_rows > 0 ? $contactResult->fetch_assoc() : null;
- ?>
- <div class="tline">
- <div class="col1" align="center"><input type="checkbox" name="chkbox[]" value="<?= $row['id'] ?>" /></div>
- <div class="col2"><?= $tempNum ?></div>
- <div class="col3 slidepanel">
- <?= htmlspecialcharsFix($row['cs_code']) ?>
- <?php if ($row['cs_claimFrom'] > 0): ?>
- <img src="../images/yijiao.png" class="handover">
- <?php endif; ?>
- </div>
- <div class="col4">
- <?php
- $qudaoResult = $conn->query("SELECT ch_name FROM qudao WHERE id=" . (int)$row['cs_from']);
- echo ($qudaoRow = $qudaoResult->fetch_assoc()) ? htmlspecialcharsFix($qudaoRow['ch_name']) : '未填写';
- ?>
- </div>
- <div class="col5">
- <?php
- $countryResult = $conn->query("SELECT countryName FROM country WHERE id=" . (int)$row['cs_country']);
- echo ($countryRow = $countryResult->fetch_assoc()) ? htmlspecialcharsFix($countryRow['countryName']) : '未填写';
- ?>
- </div>
- <div class="col6">
- <?php
- // 使用JOIN查询一次性获取所有业务类型
- $businessTypes = $conn->query("
- SELECT ct.businessType
- FROM customer_business_type cbt
- JOIN clienttype ct ON cbt.business_type_id = ct.id
- WHERE cbt.customer_id = " . (int)$row['id']);
- if ($businessTypes->num_rows > 0) {
- $types = [];
- while ($type = $businessTypes->fetch_assoc()) {
- $types[] = $type['businessType'];
- }
- // 显示所有业务类型,用顿号分隔
- echo implode('、', $types);
- } else {
- echo '未填写';
- }
- ?>
- </div>
- <div class="col7">
- <?php
- if ($row['cs_deal'] == 3) {
- echo "<span style='color:red;'>成交</span>";
- } elseif ($row['cs_deal'] == 2) {
- echo "明确需求";
- } elseif ($row['cs_deal'] == 1) {
- echo "背景调查";
- } else {
- echo "未成交";
- }
- ?>
- </div>
- <div class="col8"><?= $row['cs_addtime'] ?></div>
- <div class="col9">
- <?php
- $employeeResult = $conn->query("SELECT em_user FROM employee WHERE id=" . (int)$row['cs_belong']);
- echo ($employeeRow = $employeeResult->fetch_assoc()) ? htmlspecialcharsFix($employeeRow['em_user']) : '未填写';
- ?>
- </div>
- </div>
- <div class="notepanel clear">
- <div class="noteItem">联系方式</div>
- <div class="lx">
- <?php
- // 展示联系人信息
- if ($contactData) {
- $contactFields = [
- 'tel' => ['电话', false],
- 'email' => ['邮箱', true],
- 'whatsapp' => ['WhatsApp', false],
- 'wechat' => ['微信', false],
- 'linkedin' => ['领英', false],
- 'facebook' => ['Facebook', false],
- 'alibaba' => ['阿里巴巴', false]
- ];
-
- foreach ($contactFields as $fieldBase => $config) {
- $fieldName = $config[0];
- $isEmail = $config[1];
-
- echo "<div class=\"$fieldBase\">";
- for ($i = 1; $i <= 3; $i++) {
- $field = $fieldBase . '_' . $i;
- if (!empty($contactData[$field])) {
- if ($isEmail) {
- echo "<div><a href=\"mailto:" . htmlspecialcharsFix($contactData[$field]) . "\">" .
- htmlspecialcharsFix($contactData[$field]) . "</a></div>";
- } else {
- echo "<div>" . htmlspecialcharsFix($contactData[$field]) . "</div>";
- }
- }
- }
- echo "</div>";
- }
- }
- ?>
- </div>
- <div class="noteItem2">备注</div>
- <div class="notecontent"><?= htmlUnCode($row['cs_note']) ?></div>
- </div>
- <?php
- }
- } else {
- if (empty($keys)) {
- ?>
- <tr>
- <div align="center" colspan="9">Sorry,当前暂无信息</div>
- </tr>
- <?php
- } else {
- ?>
- <tr>
- <div align="center" colspan="9"><a href="?">Sorry,没有找到"<?= htmlspecialcharsFix($keyscode) ?>"相关的信息,点击返回</a></div>
- </tr>
- <?php
- }
- }
- ?>
- <div colspan="9">
- <div class="showpagebox">
- <?php
- if (isset($totalPages) && $totalPages > 1) {
- $pageName = "?Keys=" . $keys . $urlStr . "&";
- $pagelen = 3;
-
- if ($page > 1) {
- echo "<a href=\"{$pageName}Page=1\">首页</a>";
- echo "<a href=\"{$pageName}Page=" . ($page - 1) . "\">上一页</a>";
- }
-
- if ($pagelen * 2 + 1 >= $totalPages) {
- $startPage = 1;
- $endPage = $totalPages;
- } else {
- if ($page <= $pagelen + 1) {
- $startPage = 1;
- $endPage = $pagelen * 2 + 1;
- } else {
- $startPage = $page - $pagelen;
- $endPage = $page + $pagelen;
- }
- if ($page + $pagelen > $totalPages) {
- $startPage = $totalPages - $pagelen * 2;
- $endPage = $totalPages;
- }
- }
-
- for ($i = $startPage; $i <= $endPage; $i++) {
- if ($i == $page) {
- echo "<a class=\"current\">{$i}</a>";
- } else {
- echo "<a href=\"{$pageName}Page={$i}\">{$i}</a>";
- }
- }
-
- if ($page < $totalPages) {
- if ($totalPages - $page > $pagelen) {
- echo "<a href=\"{$pageName}Page={$totalPages}\">...{$totalPages}</a>";
- }
- echo "<a href=\"{$pageName}Page=" . ($page + 1) . "\">下一页</a>";
- echo "<a href=\"{$pageName}Page={$totalPages}\">尾页</a>";
- }
- }
- ?>
- </div>
- <div class="postchkbox">
- <select id="chkact" name="chkact">
- <?php
- $result = $conn->query("SELECT id, em_user FROM employee WHERE em_role=" . $_SESSION['employee_id']);
- while ($row = $result->fetch_assoc()) {
- echo "<option value=\"t{$row['id']}\">转给" . htmlspecialcharsFix($row['em_user']) . "</option>";
- }
- ?>
- </select>
- <input type="button" value="执行" onClick="postchk(1)" class="btn1" />
- </div>
- </div>
- </div>
- </form>
- </div>
- </body>
- </html>
|