refactor: update orchestrator service and travel form view
- services/orchestrator.py: update orchestrator service - views/TravelReimbursementCreateView.vue: update travel form view - views/scripts/TravelReimbursementCreateView.js: update travel form script
This commit is contained in:
@@ -120,6 +120,100 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
v-if="message.role === 'assistant' && !message.reviewPayload && message.queryPayload?.resultType === 'expense_claim_list'"
|
||||
class="message-detail-block expense-query-block"
|
||||
>
|
||||
<strong>{{ message.queryPayload.recentWindowApplied ? '近 10 日单据' : '单据明细' }}</strong>
|
||||
|
||||
<p v-if="buildExpenseQueryWindowLabel(message.queryPayload)" class="expense-query-window-label">
|
||||
{{ buildExpenseQueryWindowLabel(message.queryPayload) }}
|
||||
</p>
|
||||
|
||||
<div v-if="message.queryPayload.statusGroups?.length" class="expense-query-summary-row">
|
||||
<span
|
||||
v-for="item in message.queryPayload.statusGroups"
|
||||
:key="`${message.id}-${item.key}`"
|
||||
class="expense-query-summary-chip"
|
||||
:class="item.key"
|
||||
>
|
||||
{{ item.label }} {{ item.count }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div v-if="message.queryPayload.records?.length" class="expense-query-record-list compact">
|
||||
<button
|
||||
v-for="record in getExpenseQueryVisibleRecords(message.queryPayload)"
|
||||
:key="`${message.id}-${record.claimId}`"
|
||||
type="button"
|
||||
class="expense-query-record-card"
|
||||
@click="openExpenseQueryRecord(record)"
|
||||
>
|
||||
<div class="expense-query-record-main">
|
||||
<div class="expense-query-record-top">
|
||||
<strong>{{ record.claimNo }}</strong>
|
||||
<span class="expense-query-record-status" :class="record.statusGroup || 'other'">
|
||||
{{ record.statusLabel }}
|
||||
</span>
|
||||
</div>
|
||||
<p>{{ record.summary }}</p>
|
||||
<div class="expense-query-record-meta">
|
||||
<span>{{ record.expenseTypeLabel }}</span>
|
||||
<span>{{ record.dateDisplay }}</span>
|
||||
<span>{{ record.amountDisplay }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<i class="mdi mdi-chevron-right"></i>
|
||||
</button>
|
||||
|
||||
<div
|
||||
v-if="getExpenseQueryTotalPages(message.queryPayload) > 1"
|
||||
class="expense-query-pager"
|
||||
>
|
||||
<button
|
||||
type="button"
|
||||
class="expense-query-pager-btn"
|
||||
:disabled="getExpenseQueryActivePage(message.queryPayload) === 1"
|
||||
aria-label="上一页"
|
||||
@click="shiftExpenseQueryPage(message, -1)"
|
||||
>
|
||||
<i class="mdi mdi-chevron-left"></i>
|
||||
</button>
|
||||
|
||||
<div class="expense-query-pager-dots" aria-label="单据分页">
|
||||
<button
|
||||
v-for="page in getExpenseQueryTotalPages(message.queryPayload)"
|
||||
:key="`${message.id}-query-page-${page}`"
|
||||
type="button"
|
||||
class="expense-query-pager-dot"
|
||||
:class="{ active: getExpenseQueryActivePage(message.queryPayload) === page }"
|
||||
:aria-label="`第 ${page} 页`"
|
||||
@click="setExpenseQueryPage(message, page)"
|
||||
></button>
|
||||
</div>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
class="expense-query-pager-btn"
|
||||
:disabled="getExpenseQueryActivePage(message.queryPayload) === getExpenseQueryTotalPages(message.queryPayload)"
|
||||
aria-label="下一页"
|
||||
@click="shiftExpenseQueryPage(message, 1)"
|
||||
>
|
||||
<i class="mdi mdi-chevron-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-else class="expense-query-empty">
|
||||
<i class="mdi mdi-file-search-outline"></i>
|
||||
<span>当前没有可直接展开的近期待办单据。</span>
|
||||
</div>
|
||||
|
||||
<p v-if="buildExpenseQueryHint(message.queryPayload)" class="expense-query-hint">
|
||||
{{ buildExpenseQueryHint(message.queryPayload) }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div v-if="message.role === 'assistant' && message.reviewPayload" class="message-detail-block review-message-block">
|
||||
<div class="review-card-shell">
|
||||
<div class="review-card-head">
|
||||
|
||||
Reference in New Issue
Block a user