feat(tkpurchase): 협력업체 포털/이력에 프로젝트 정보 배지 추가
- 포털 스케줄 카드에 프로젝트명·job_no 초록 배지 표시 - 이력 카드에 프로젝트명·job_no 초록 배지 표시 - checkinModel.findHistoryByCompany에 LEFT JOIN projects 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -158,9 +158,10 @@ async function findHistoryByCompany(companyId, { dateFrom, dateTo, page = 1, lim
|
||||
const db = getPool();
|
||||
|
||||
// 1. 체크인 페이지네이션 조회
|
||||
let sql = `SELECT pc.*, ps.work_description, ps.workplace_name, ps.start_date, ps.end_date
|
||||
let sql = `SELECT pc.*, ps.work_description, ps.workplace_name, ps.start_date, ps.end_date, p.project_name, p.job_no
|
||||
FROM partner_work_checkins pc
|
||||
LEFT JOIN partner_schedules ps ON pc.schedule_id = ps.id
|
||||
LEFT JOIN projects p ON ps.project_id = p.project_id
|
||||
WHERE pc.company_id = ?`;
|
||||
const params = [companyId];
|
||||
if (dateFrom) { sql += ' AND DATE(pc.check_in_time) >= ?'; params.push(dateFrom); }
|
||||
|
||||
@@ -109,7 +109,10 @@ function renderHistoryList(checkins) {
|
||||
<span class="text-sm font-semibold text-gray-800">${checkinDate}</span>
|
||||
${statusHtml}
|
||||
</div>
|
||||
<span class="text-xs text-gray-500">${escapeHtml(c.workplace_name || '')}</span>
|
||||
<div class="flex items-center gap-2">
|
||||
${c.project_name ? `<span class="inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-emerald-100 text-emerald-700 text-xs font-medium"><i class="fas fa-project-diagram text-[10px]"></i>${escapeHtml(c.project_name)}${c.job_no ? ' · ' + escapeHtml(c.job_no) : ''}</span>` : ''}
|
||||
<span class="text-xs text-gray-500">${escapeHtml(c.workplace_name || '')}</span>
|
||||
</div>
|
||||
</div>
|
||||
${c.work_description ? `<p class="text-sm text-gray-600 mb-2">${escapeHtml(c.work_description)}</p>` : ''}
|
||||
<div class="flex gap-4 text-xs text-gray-500 mb-2">
|
||||
|
||||
@@ -79,7 +79,10 @@ async function renderScheduleCards() {
|
||||
<!-- 일정 정보 -->
|
||||
<div class="p-5 border-b">
|
||||
<div class="flex items-center justify-between mb-2">
|
||||
<h3 class="text-base font-semibold text-gray-800">${escapeHtml(s.workplace_name || '작업장 미지정')}</h3>
|
||||
<div>
|
||||
${s.project_name ? `<div class="inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-emerald-100 text-emerald-700 text-xs font-medium mb-1"><i class="fas fa-project-diagram text-[10px]"></i>${escapeHtml(s.project_name)}${s.job_no ? ' · ' + escapeHtml(s.job_no) : ''}</div>` : ''}
|
||||
<h3 class="text-base font-semibold text-gray-800">${escapeHtml(s.workplace_name || '작업장 미지정')}</h3>
|
||||
</div>
|
||||
${dateBadge}
|
||||
</div>
|
||||
${!isToday ? `<div class="text-xs text-gray-400 mb-1"><i class="fas fa-calendar-alt mr-1"></i>${formatDate(s.start_date)}${formatDate(s.start_date) !== formatDate(s.end_date) ? ' ~ ' + formatDate(s.end_date) : ''}</div>` : ''}
|
||||
|
||||
Reference in New Issue
Block a user