window.ContactsPage = (function() { 'use strict'; let currentPage = 1, pageSize = 20; let companyMap = {}; async function render() { await loadCompanies(); return buildPage(); } async function loadCompanies() { try { const res = await API.get('/companies?page=1&page_size=500'); const items = (res.data && res.data.items) || []; companyMap = {}; items.forEach(c => { companyMap[c.id] = c.company_name; }); } catch (e) { /* ignore */ } } async function buildPage(companyId, keyword) { let params = `?page=${currentPage}&page_size=${pageSize}`; if (companyId) params += `&company_id=${encodeURIComponent(companyId)}`; if (keyword) params += `&keyword=${encodeURIComponent(keyword)}`; let html = '
| 姓名 | 职位 | 部门 | 客户 | 手机 | 权力 | 态度 | 关键人 | 操作 | '; html += '
|---|---|---|---|---|---|---|---|---|
| ${esc(c.name)} | ${esc(c.title)} | ${esc(c.department)} | ${esc(c.company_name || companyMap[c.company_id] || c.company_id)} | ${esc(c.mobile)} | ${UI.badge(UI.POWER_MAP[c.power_level] || c.power_level, c.power_level==='A'?'decision':c.power_level==='B'?'warning':'normal')} | ${UI.badge(UI.ATTITUDE_MAP[c.attitude] || c.attitude, c.attitude==='supporter'?'success':c.attitude==='opponent'?'danger':'normal')} | ${c.is_key_person ? UI.badge('关键', 'key') : '-'} |