' . wpautop(esc_html((string) $ticket['content'])) . '
';
$html .= $this->ticket_attachments_html((array) $ticket['attachment']);
$html .= '$ticket */ private function render_ticket_detail_panel(array $ticket): string { $id = (int) $ticket['id']; $repo = \AKSRT\Ticket\TicketRepository::get_instance(); $replies = $repo->replies($id); $notes = \AKSRT\Ticket\TicketNoteService::for_ticket($id); $closed = !empty($ticket['is_closed']); $html = '
' . esc_html__('暂无沟通记录', 'aksrt') . '
'; } else { $html .= '' . esc_html(!empty($quote['is_deleted']) ? __('原回复已删除', 'aksrt') : (string) $quote['content']) . ''; } $html .= '
' . esc_html__('工单已关闭,无法继续回复。', 'aksrt') . '
'; } else { $html .= $this->ticket_reply_form($id); } $html .= '' . esc_html((string) $ticket['ticket_num']) . '',
__('状态', 'aksrt') => ''
. esc_html((string) $ticket['status_label']) . '',
__('用户', 'aksrt') => $this->ticket_user_chip((int) $ticket['user_id'], (string) $ticket['user_name']),
__('部门', 'aksrt') => esc_html((string) $ticket['ticket_type_name'] !== '' ? (string) $ticket['ticket_type_name'] : '—'),
__('跟进人', 'aksrt') => (int) $ticket['admin_id'] > 0
? esc_html((string) $ticket['admin_name'])
: '' . esc_html__('未指派', 'aksrt') . '',
];
if ((string) $ticket['order_number'] !== '') {
$rows[__('关联订单', 'aksrt')] = '' . esc_html((string) $ticket['order_number']) . '';
}
$rows[__('提交时间', 'aksrt')] = esc_html((string) $ticket['post_time']);
$rows[__('最后回复', 'aksrt')] = esc_html((string) $ticket['last_reply_time'] !== '' ? (string) $ticket['last_reply_time'] : '—');
if ((int) $ticket['urge_count'] > 0) {
$rows[__('催单', 'aksrt')] = '' . esc_html(sprintf(
/* translators: %d urge count */
__('%d 次', 'aksrt'),
(int) $ticket['urge_count']
)) . ' ' . esc_html(sprintf(
/* translators: %s last urge time */
__('最近 %s', 'aksrt'),
(string) $ticket['last_urge_time']
)) . '';
}
$html = '