feat(AuditView): 删除差旅费报销规则详情的审核按钮并优化显示
- 删除详情中间区域的提交审核、审核通过、驳回版本三个按钮 - 删除底部 footer 的提交审核、审核通过、驳回版本、正式上线四个按钮 - 将下载 Excel 按钮改为下载表格 - 简化电子表格编辑器的 meta 信息显示
This commit is contained in:
@@ -99,26 +99,8 @@
|
|||||||
<span class="spreadsheet-mode-pill">
|
<span class="spreadsheet-mode-pill">
|
||||||
{{ selectedSpreadsheetVersionModeLabel }}
|
{{ selectedSpreadsheetVersionModeLabel }}
|
||||||
</span>
|
</span>
|
||||||
<button
|
</div>
|
||||||
class="mini-btn"
|
</header>
|
||||||
type="button"
|
|
||||||
:disabled="selectedSkill.isPreviewMock"
|
|
||||||
@click="openVersionCompare()"
|
|
||||||
>
|
|
||||||
<i class="mdi mdi-compare-horizontal"></i>
|
|
||||||
<span>版本对比</span>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="mini-btn"
|
|
||||||
type="button"
|
|
||||||
:disabled="selectedSkill.isPreviewMock"
|
|
||||||
@click="openVersionTimeline"
|
|
||||||
>
|
|
||||||
<i class="mdi mdi-timeline-clock-outline"></i>
|
|
||||||
<span>查看流转</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<input
|
<input
|
||||||
ref="spreadsheetUploadInput"
|
ref="spreadsheetUploadInput"
|
||||||
@@ -130,22 +112,19 @@
|
|||||||
|
|
||||||
<div class="spreadsheet-editor-body">
|
<div class="spreadsheet-editor-body">
|
||||||
<section class="spreadsheet-main-stage">
|
<section class="spreadsheet-main-stage">
|
||||||
<div class="spreadsheet-editor-meta">
|
<div class="spreadsheet-editor-meta">
|
||||||
<span><strong>文件</strong>{{ selectedSpreadsheetFileName }}</span>
|
<span><strong>文件</strong>{{ selectedSpreadsheetFileName }}</span>
|
||||||
<span><strong>线上版本</strong>{{ selectedSkill.publishedVersion }}</span>
|
<span><strong>负责人</strong>{{ selectedSkill.owner }}</span>
|
||||||
<span><strong>工作版本</strong>{{ selectedSkill.workingVersion }}</span>
|
<span><strong>最近更新</strong>{{ selectedSkill.updatedAt }}</span>
|
||||||
<span><strong>当前预览</strong>{{ selectedSkill.displayVersion }}</span>
|
</div>
|
||||||
<span><strong>审核状态</strong>{{ selectedSkill.reviewStatusLabel }}</span>
|
|
||||||
<span><strong>负责人</strong>{{ selectedSkill.owner }}</span>
|
|
||||||
<span><strong>最近更新</strong>{{ selectedSkill.updatedAt }}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="spreadsheet-workbench">
|
<div class="spreadsheet-workbench">
|
||||||
<div
|
<div
|
||||||
:id="spreadsheetOnlyOfficeHostId"
|
:key="spreadsheetOnlyOfficeHostId"
|
||||||
class="rule-spreadsheet-host"
|
:id="spreadsheetOnlyOfficeHostId"
|
||||||
:class="{ hidden: !spreadsheetOnlyOfficeReady && !spreadsheetOnlyOfficeError }"
|
class="rule-spreadsheet-host"
|
||||||
></div>
|
:class="{ hidden: !spreadsheetOnlyOfficeReady && !spreadsheetOnlyOfficeError }"
|
||||||
|
></div>
|
||||||
<div v-if="spreadsheetOnlyOfficeLoading" class="rule-spreadsheet-state">
|
<div v-if="spreadsheetOnlyOfficeLoading" class="rule-spreadsheet-state">
|
||||||
<i class="mdi mdi-loading mdi-spin"></i>
|
<i class="mdi mdi-loading mdi-spin"></i>
|
||||||
<span>正在加载 Excel 规则表...</span>
|
<span>正在加载 Excel 规则表...</span>
|
||||||
@@ -156,102 +135,62 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<footer class="spreadsheet-editor-foot">
|
<footer class="spreadsheet-editor-foot">
|
||||||
<span>
|
<span>
|
||||||
{{
|
{{
|
||||||
canEditSpreadsheetInline
|
canEditSpreadsheetInline
|
||||||
? '当前版本可直接编辑;关闭编辑器并保存后,会自动生成新的规则版本快照。'
|
? '可直接在线编辑;保存后,右侧会自动记录本次修改内容。'
|
||||||
: '当前为历史版本预览或只读模式。'
|
: '当前为只读预览模式。'
|
||||||
}}
|
}}
|
||||||
</span>
|
</span>
|
||||||
<span>最近版本说明:{{ selectedSkill.displayVersionChangeNote }}</span>
|
<span>右侧仅展示最近 30 次修改操作。</span>
|
||||||
</footer>
|
</footer>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<aside class="spreadsheet-version-center">
|
<aside class="spreadsheet-version-center">
|
||||||
<header class="version-center-head">
|
<header class="version-center-head">
|
||||||
<div>
|
<div>
|
||||||
<h3>版本中心</h3>
|
<h3>最近修改</h3>
|
||||||
<p>一眼看清线上、工作与最近流转。</p>
|
<p>展示最近 30 次在线编辑保存后的具体改动。</p>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div class="version-pair-grid">
|
<section class="version-center-section version-history-section">
|
||||||
<article class="version-pair-card published">
|
<div v-if="selectedSpreadsheetChangeRecords.length" class="version-center-list">
|
||||||
<span>线上版本</span>
|
<button
|
||||||
<strong>{{ selectedSkill.publishedVersion }}</strong>
|
v-for="item in selectedSpreadsheetChangeRecords"
|
||||||
<b>正式生效</b>
|
:key="`spreadsheet-change-${item.changed_at}-${item.actor}`"
|
||||||
</article>
|
type="button"
|
||||||
<article class="version-pair-card working">
|
class="version-center-item change-record-item"
|
||||||
<span>工作版本</span>
|
@click="openSpreadsheetChangeDetail(item)"
|
||||||
<strong>{{ selectedSkill.workingVersion }}</strong>
|
>
|
||||||
<b>{{ selectedSkill.reviewStatusLabel }}</b>
|
<div class="change-record-head">
|
||||||
</article>
|
<div>
|
||||||
</div>
|
<strong>{{ item.actor }}</strong>
|
||||||
|
<span>{{ item.time }}</span>
|
||||||
<section class="version-center-section version-history-section">
|
</div>
|
||||||
<header>
|
<b>{{ item.changed_cell_count }} 处改动</b>
|
||||||
<strong>最近版本</strong>
|
</div>
|
||||||
<small>最近 5 个</small>
|
<p>{{ item.summary }}</p>
|
||||||
</header>
|
<div v-if="item.previewChanges.length" class="change-record-preview">
|
||||||
<div class="version-center-list">
|
<span
|
||||||
<article
|
v-for="change in item.previewChanges"
|
||||||
v-for="item in selectedSkill.history.slice(0, 5)"
|
:key="`${change.sheet_name}-${change.cell}`"
|
||||||
:key="`spreadsheet-version-${item.version}-${item.time}`"
|
>
|
||||||
class="version-center-item"
|
{{ change.sheet_name }}!{{ change.cell }}:
|
||||||
:class="{ active: item.version === selectedSkill.displayVersion }"
|
{{ change.before_value ?? '-' }} → {{ change.after_value ?? '-' }}
|
||||||
>
|
</span>
|
||||||
<button type="button" @click="openVersionSwitch(item)">
|
</div>
|
||||||
<div>
|
<small v-if="item.remainingChangeCount" class="change-record-more">
|
||||||
<strong>{{ item.version }}</strong>
|
另有 {{ item.remainingChangeCount }} 处改动
|
||||||
<b :class="['version-state', item.lifecycleMeta.tone]">
|
</small>
|
||||||
{{ item.lifecycleMeta.label }}
|
</button>
|
||||||
</b>
|
</div>
|
||||||
</div>
|
<p v-else class="version-flow-empty">暂无修改记录</p>
|
||||||
<span>{{ item.time }}</span>
|
</section>
|
||||||
<p>{{ item.note }}</p>
|
</aside>
|
||||||
</button>
|
</div>
|
||||||
<footer>
|
</section>
|
||||||
<button type="button" @click="openVersionSwitch(item)">查看</button>
|
|
||||||
<button
|
|
||||||
v-if="selectedSkill.publishedVersion && item.version !== selectedSkill.publishedVersion"
|
|
||||||
type="button"
|
|
||||||
@click="openVersionCompare({ baseVersion: selectedSkill.publishedVersion, targetVersion: item.version })"
|
|
||||||
>
|
|
||||||
与线上比
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
v-if="canManageSelected && !item.isWorking"
|
|
||||||
type="button"
|
|
||||||
@click="restoreSelectedVersion(item.version)"
|
|
||||||
>
|
|
||||||
恢复
|
|
||||||
</button>
|
|
||||||
</footer>
|
|
||||||
</article>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="version-center-section compact">
|
|
||||||
<header>
|
|
||||||
<strong>最近流转</strong>
|
|
||||||
<button type="button" @click="openVersionTimeline">查看完整流转</button>
|
|
||||||
</header>
|
|
||||||
<div v-if="recentVersionTimelineItems.length" class="version-flow-preview">
|
|
||||||
<article v-for="item in recentVersionTimelineItems" :key="`${item.event_type}-${item.version}-${item.event_time}`">
|
|
||||||
<i :class="item.meta.icon"></i>
|
|
||||||
<div>
|
|
||||||
<strong>{{ item.meta.label }}</strong>
|
|
||||||
<span>{{ item.version }} · {{ item.actor }}</span>
|
|
||||||
</div>
|
|
||||||
<small>{{ item.timeLabel }}</small>
|
|
||||||
</article>
|
|
||||||
</div>
|
|
||||||
<p v-else class="version-flow-empty">暂无版本流转记录</p>
|
|
||||||
</section>
|
|
||||||
</aside>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<div
|
<div
|
||||||
v-else
|
v-else
|
||||||
@@ -441,42 +380,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="selectedSkillIsRule" class="review-action-strip">
|
|
||||||
<button
|
|
||||||
class="minor-action"
|
|
||||||
type="button"
|
|
||||||
:disabled="!canSubmitReview || detailBusy"
|
|
||||||
@click="reviewSelectedRule('pending')"
|
|
||||||
>
|
|
||||||
<i class="mdi mdi-send-outline"></i>
|
|
||||||
<span>{{ actionState === 'review-pending' ? '提交中...' : '提交审核' }}</span>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="minor-action success-action"
|
|
||||||
type="button"
|
|
||||||
:disabled="!canReviewSelected || detailBusy"
|
|
||||||
@click="reviewSelectedRule('approved')"
|
|
||||||
>
|
|
||||||
<i class="mdi mdi-check-decagram-outline"></i>
|
|
||||||
<span>{{ actionState === 'review-approved' ? '处理中...' : '审核通过' }}</span>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="minor-action danger-action"
|
|
||||||
type="button"
|
|
||||||
:disabled="!canReviewSelected || detailBusy"
|
|
||||||
@click="reviewSelectedRule('rejected')"
|
|
||||||
>
|
|
||||||
<i class="mdi mdi-close-octagon-outline"></i>
|
|
||||||
<span>{{ actionState === 'review-rejected' ? '处理中...' : '驳回版本' }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p v-if="selectedSkillIsRule && activateBlockedReason" class="action-help">
|
|
||||||
{{ activateBlockedReason }}
|
|
||||||
</p>
|
|
||||||
</article>
|
</article>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<aside v-if="selectedSkill.type === 'rules'" class="detail-side skill-review-side">
|
<aside v-if="selectedSkill.type === 'rules'" class="detail-side skill-review-side">
|
||||||
<article class="side-card panel review-card">
|
<article class="side-card panel review-card">
|
||||||
@@ -613,7 +518,7 @@
|
|||||||
@click="downloadSpreadsheetFile"
|
@click="downloadSpreadsheetFile"
|
||||||
>
|
>
|
||||||
<i class="mdi mdi-file-download-outline"></i>
|
<i class="mdi mdi-file-download-outline"></i>
|
||||||
<span>{{ actionState === 'download-spreadsheet' ? '下载中...' : '下载 Excel' }}</span>
|
<span>{{ actionState === 'download-spreadsheet' ? '下载中...' : '下载表格' }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
v-if="selectedSkill.usesSpreadsheetRule"
|
v-if="selectedSkill.usesSpreadsheetRule"
|
||||||
@@ -625,7 +530,7 @@
|
|||||||
<i class="mdi mdi-file-upload-outline"></i>
|
<i class="mdi mdi-file-upload-outline"></i>
|
||||||
<span>{{ actionState === 'upload-spreadsheet' ? '导入中...' : '上传表格' }}</span>
|
<span>{{ actionState === 'upload-spreadsheet' ? '导入中...' : '上传表格' }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
v-else
|
v-else
|
||||||
class="minor-action"
|
class="minor-action"
|
||||||
type="button"
|
type="button"
|
||||||
@@ -635,44 +540,7 @@
|
|||||||
<i class="mdi mdi-content-save-outline"></i>
|
<i class="mdi mdi-content-save-outline"></i>
|
||||||
<span>{{ actionState === 'save-markdown' ? '保存中...' : '保存 Markdown' }}</span>
|
<span>{{ actionState === 'save-markdown' ? '保存中...' : '保存 Markdown' }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button
|
</div>
|
||||||
class="minor-action"
|
|
||||||
type="button"
|
|
||||||
:disabled="!canSubmitReview || detailBusy"
|
|
||||||
@click="reviewSelectedRule('pending')"
|
|
||||||
>
|
|
||||||
<i class="mdi mdi-send-outline"></i>
|
|
||||||
<span>{{ actionState === 'review-pending' ? '提交中...' : '提交审核' }}</span>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="minor-action success-action"
|
|
||||||
type="button"
|
|
||||||
:disabled="!canReviewSelected || detailBusy"
|
|
||||||
@click="reviewSelectedRule('approved')"
|
|
||||||
>
|
|
||||||
<i class="mdi mdi-check-decagram-outline"></i>
|
|
||||||
<span>{{ actionState === 'review-approved' ? '处理中...' : '审核通过' }}</span>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="minor-action danger-action"
|
|
||||||
type="button"
|
|
||||||
:disabled="!canReviewSelected || detailBusy"
|
|
||||||
@click="reviewSelectedRule('rejected')"
|
|
||||||
>
|
|
||||||
<i class="mdi mdi-close-octagon-outline"></i>
|
|
||||||
<span>{{ actionState === 'review-rejected' ? '处理中...' : '驳回版本' }}</span>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="major-action"
|
|
||||||
type="button"
|
|
||||||
:disabled="!canActivateSelected"
|
|
||||||
:title="activateBlockedReason"
|
|
||||||
@click="activateSelectedRule"
|
|
||||||
>
|
|
||||||
<i class="mdi mdi-rocket-launch-outline"></i>
|
|
||||||
<span>{{ actionState === 'activate' ? '上线中...' : selectedSkill.statusValue === 'active' ? '已上线' : '正式上线' }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div v-else class="detail-action-group detail-meta-actions">
|
<div v-else class="detail-action-group detail-meta-actions">
|
||||||
<span class="footer-note">{{ selectedSkill.publishMeta }}</span>
|
<span class="footer-note">{{ selectedSkill.publishMeta }}</span>
|
||||||
@@ -944,61 +812,207 @@
|
|||||||
<strong>{{ versionSwitchTarget.note }}</strong>
|
<strong>{{ versionSwitchTarget.note }}</strong>
|
||||||
<span>{{ versionSwitchTarget.time }}</span>
|
<span>{{ versionSwitchTarget.time }}</span>
|
||||||
</div>
|
</div>
|
||||||
</ConfirmDialog>
|
</ConfirmDialog>
|
||||||
|
|
||||||
|
<ConfirmDialog
|
||||||
|
:open="reviewSubmitOpen"
|
||||||
|
badge="提交审核"
|
||||||
|
badge-tone="info"
|
||||||
|
title="提交规则版本审核"
|
||||||
|
description="请先确认本次送审采用的版本号,并选择负责审核的高级管理员。若填写新的版本号,系统会将当前工作稿固化为该版本后再送审。"
|
||||||
|
cancel-text="取消"
|
||||||
|
confirm-text="确认提交"
|
||||||
|
busy-text="提交中..."
|
||||||
|
confirm-tone="primary"
|
||||||
|
confirm-icon="mdi mdi-send-outline"
|
||||||
|
:busy="actionState === 'review-pending'"
|
||||||
|
@close="closeSubmitReviewDialog"
|
||||||
|
@confirm="submitSelectedRuleForReview"
|
||||||
|
>
|
||||||
|
<div class="review-submit-form">
|
||||||
|
<label>
|
||||||
|
<span>送审版本号</span>
|
||||||
|
<input
|
||||||
|
v-model="reviewSubmitVersion"
|
||||||
|
type="text"
|
||||||
|
placeholder="例如:v1.1.0"
|
||||||
|
:disabled="actionState === 'review-pending'"
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<span>审核人</span>
|
||||||
|
<select
|
||||||
|
v-model="reviewSubmitReviewer"
|
||||||
|
:disabled="reviewSubmitReviewerLoading || actionState === 'review-pending'"
|
||||||
|
>
|
||||||
|
<option value="" disabled>
|
||||||
|
{{ reviewSubmitReviewerLoading ? '加载审核人中...' : '请选择高级管理员' }}
|
||||||
|
</option>
|
||||||
|
<option
|
||||||
|
v-for="item in reviewSubmitReviewerOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
{{ item.label }}
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
<p v-if="!reviewSubmitReviewerLoading && !hasReviewSubmitReviewers" class="review-submit-hint">
|
||||||
|
当前没有可选的高级管理员,请先在员工管理中配置具备管理员角色的员工。
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</ConfirmDialog>
|
||||||
|
|
||||||
<Transition name="drawer-fade">
|
<Transition name="drawer-fade">
|
||||||
<div v-if="versionTimelineOpen" class="rule-drawer-backdrop" @click.self="closeVersionTimeline">
|
<div v-if="versionTimelineOpen" class="rule-drawer-backdrop" @click.self="closeVersionTimeline">
|
||||||
<aside class="rule-drawer timeline-drawer">
|
<aside class="rule-drawer timeline-drawer">
|
||||||
<header class="rule-drawer-head">
|
<header class="rule-drawer-head">
|
||||||
<div>
|
<div>
|
||||||
<span>版本治理</span>
|
<span>修改记录</span>
|
||||||
<h3>版本流转时间线</h3>
|
<h3>文档操作记录</h3>
|
||||||
</div>
|
</div>
|
||||||
<button type="button" @click="closeVersionTimeline">
|
<button type="button" @click="closeVersionTimeline">
|
||||||
<i class="mdi mdi-close"></i>
|
<i class="mdi mdi-close"></i>
|
||||||
</button>
|
</button>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div v-if="versionTimelineLoading" class="rule-drawer-state">
|
<div v-if="versionTimelineLoading" class="rule-drawer-state">
|
||||||
<i class="mdi mdi-loading mdi-spin"></i>
|
<i class="mdi mdi-loading mdi-spin"></i>
|
||||||
<span>正在加载版本流转...</span>
|
<span>正在加载操作记录...</span>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="versionTimelineError" class="rule-drawer-state error">
|
<div v-else-if="versionTimelineError" class="rule-drawer-state error">
|
||||||
<i class="mdi mdi-alert-circle-outline"></i>
|
<i class="mdi mdi-alert-circle-outline"></i>
|
||||||
<span>{{ versionTimelineError }}</span>
|
<span>{{ versionTimelineError }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="selectedVersionTimelineItems.length" class="rule-timeline-list">
|
<div v-else-if="selectedVersionTimelineItems.length" class="rule-timeline-list">
|
||||||
<article
|
<article
|
||||||
v-for="item in selectedVersionTimelineItems"
|
v-for="item in selectedVersionTimelineItems"
|
||||||
:key="`${item.event_type}-${item.version}-${item.event_time}`"
|
:key="`${item.event_type}-${item.version}-${item.event_time}`"
|
||||||
class="rule-timeline-item"
|
class="rule-timeline-item"
|
||||||
>
|
>
|
||||||
<i :class="[item.meta.icon, item.meta.tone]"></i>
|
<i :class="[item.meta.icon, item.meta.tone]"></i>
|
||||||
<div>
|
<div>
|
||||||
<header>
|
<header>
|
||||||
<strong>{{ item.meta.label }}</strong>
|
<strong>{{ item.meta.label }}</strong>
|
||||||
<b>{{ item.version }}</b>
|
<span>{{ item.timeLabel }}</span>
|
||||||
<span>{{ item.timeLabel }}</span>
|
</header>
|
||||||
</header>
|
<p>{{ item.description || item.note || '暂无补充说明' }}</p>
|
||||||
<p>{{ item.description || item.note || '暂无补充说明' }}</p>
|
<small>
|
||||||
<small>
|
操作人:{{ item.actor }}
|
||||||
操作人:{{ item.actor }}
|
<template v-if="item.version"> · 关联版本:{{ item.version }}</template>
|
||||||
<template v-if="item.source_version"> · 来源版本:{{ item.source_version }}</template>
|
<template v-if="item.source_version"> · 来源版本:{{ item.source_version }}</template>
|
||||||
</small>
|
</small>
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="rule-drawer-state">
|
<div v-else class="rule-drawer-state">
|
||||||
<i class="mdi mdi-history"></i>
|
<i class="mdi mdi-history"></i>
|
||||||
<span>暂无版本流转记录</span>
|
<span>暂无操作记录</span>
|
||||||
</div>
|
</div>
|
||||||
</aside>
|
</aside>
|
||||||
</div>
|
</div>
|
||||||
</Transition>
|
</Transition>
|
||||||
|
|
||||||
<Transition name="drawer-fade">
|
<Transition name="drawer-fade">
|
||||||
<div v-if="versionCompareOpen" class="rule-drawer-backdrop" @click.self="closeVersionCompare">
|
<div
|
||||||
<aside class="rule-drawer compare-drawer">
|
v-if="spreadsheetChangeDetailOpen"
|
||||||
|
class="rule-drawer-backdrop"
|
||||||
|
@click.self="closeSpreadsheetChangeDetail"
|
||||||
|
>
|
||||||
|
<aside class="rule-drawer compare-drawer change-detail-drawer">
|
||||||
|
<header class="rule-drawer-head">
|
||||||
|
<div>
|
||||||
|
<span>最近修改</span>
|
||||||
|
<h3>修改详情</h3>
|
||||||
|
</div>
|
||||||
|
<button type="button" @click="closeSpreadsheetChangeDetail">
|
||||||
|
<i class="mdi mdi-close"></i>
|
||||||
|
</button>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div v-if="selectedSpreadsheetChangeRecord" class="compare-content change-detail-content">
|
||||||
|
<section class="change-detail-meta">
|
||||||
|
<article>
|
||||||
|
<span>修改人</span>
|
||||||
|
<strong>{{ selectedSpreadsheetChangeRecord.actor }}</strong>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<span>修改时间</span>
|
||||||
|
<strong>{{ selectedSpreadsheetChangeRecord.time }}</strong>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<span>修改工作表</span>
|
||||||
|
<strong>{{ selectedSpreadsheetChangeRecord.changed_sheet_count }}</strong>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<span>变更单元格</span>
|
||||||
|
<strong>{{ selectedSpreadsheetChangeRecord.changed_cell_count }}</strong>
|
||||||
|
</article>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="compare-panel">
|
||||||
|
<header>
|
||||||
|
<strong>本次修改摘要</strong>
|
||||||
|
</header>
|
||||||
|
<p>{{ selectedSpreadsheetChangeRecord.summary }}</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="compare-panel">
|
||||||
|
<header>
|
||||||
|
<strong>工作表变化</strong>
|
||||||
|
</header>
|
||||||
|
<div v-if="selectedSpreadsheetChangeSheetRows.length" class="compare-sheet-list">
|
||||||
|
<span
|
||||||
|
v-for="item in selectedSpreadsheetChangeSheetRows"
|
||||||
|
:key="`${item.sheet_name}-${item.change_type}`"
|
||||||
|
:class="item.meta.tone"
|
||||||
|
>
|
||||||
|
{{ item.sheet_name }} · {{ item.meta.label }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<p v-else>本次没有新增或删除工作表。</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="compare-panel compare-cell-panel">
|
||||||
|
<header>
|
||||||
|
<strong>单元格差异</strong>
|
||||||
|
<small>最多展示前 500 条</small>
|
||||||
|
</header>
|
||||||
|
<div v-if="selectedSpreadsheetChangeCellRows.length" class="compare-table-wrap">
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>工作表</th>
|
||||||
|
<th>位置</th>
|
||||||
|
<th>类型</th>
|
||||||
|
<th>旧值</th>
|
||||||
|
<th>新值</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr
|
||||||
|
v-for="item in selectedSpreadsheetChangeCellRows"
|
||||||
|
:key="`${item.sheet_name}-${item.cell}`"
|
||||||
|
>
|
||||||
|
<td>{{ item.sheet_name }}</td>
|
||||||
|
<td>{{ item.cell }}</td>
|
||||||
|
<td><b :class="item.meta.tone">{{ item.meta.label }}</b></td>
|
||||||
|
<td>{{ item.before_value ?? '-' }}</td>
|
||||||
|
<td>{{ item.after_value ?? '-' }}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<p v-else>本次没有发现单元格级差异。</p>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
</div>
|
||||||
|
</Transition>
|
||||||
|
|
||||||
|
<Transition name="drawer-fade">
|
||||||
|
<div v-if="versionCompareOpen" class="rule-drawer-backdrop" @click.self="closeVersionCompare">
|
||||||
|
<aside class="rule-drawer compare-drawer">
|
||||||
<header class="rule-drawer-head">
|
<header class="rule-drawer-head">
|
||||||
<div>
|
<div>
|
||||||
<span>版本治理</span>
|
<span>版本治理</span>
|
||||||
@@ -1041,82 +1055,82 @@
|
|||||||
<i class="mdi mdi-loading mdi-spin"></i>
|
<i class="mdi mdi-loading mdi-spin"></i>
|
||||||
<span>正在生成版本差异...</span>
|
<span>正在生成版本差异...</span>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="versionCompareError" class="rule-drawer-state error">
|
<div v-else-if="versionCompareError" class="rule-drawer-state error">
|
||||||
<i class="mdi mdi-alert-circle-outline"></i>
|
<i class="mdi mdi-alert-circle-outline"></i>
|
||||||
<span>{{ versionCompareError }}</span>
|
<span>{{ versionCompareError }}</span>
|
||||||
</div>
|
</div>
|
||||||
<template v-else-if="versionComparePayload">
|
<div v-else-if="versionComparePayload" class="compare-content">
|
||||||
<section class="compare-summary-grid">
|
<section class="compare-summary-grid">
|
||||||
<article>
|
<article>
|
||||||
<span>新增工作表</span>
|
<span>新增工作表</span>
|
||||||
<strong>{{ versionComparePayload.added_sheet_count }}</strong>
|
<strong>{{ versionComparePayload.added_sheet_count }}</strong>
|
||||||
</article>
|
</article>
|
||||||
<article>
|
<article>
|
||||||
<span>删除工作表</span>
|
<span>删除工作表</span>
|
||||||
<strong>{{ versionComparePayload.removed_sheet_count }}</strong>
|
<strong>{{ versionComparePayload.removed_sheet_count }}</strong>
|
||||||
</article>
|
</article>
|
||||||
<article>
|
<article>
|
||||||
<span>修改工作表</span>
|
<span>修改工作表</span>
|
||||||
<strong>{{ versionComparePayload.changed_sheet_count }}</strong>
|
<strong>{{ versionComparePayload.changed_sheet_count }}</strong>
|
||||||
</article>
|
</article>
|
||||||
<article>
|
<article>
|
||||||
<span>变更单元格</span>
|
<span>变更单元格</span>
|
||||||
<strong>{{ versionComparePayload.changed_cell_count }}</strong>
|
<strong>{{ versionComparePayload.changed_cell_count }}</strong>
|
||||||
</article>
|
</article>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="compare-panel">
|
<section class="compare-panel">
|
||||||
<header>
|
<header>
|
||||||
<strong>工作表变化</strong>
|
<strong>工作表变化</strong>
|
||||||
</header>
|
</header>
|
||||||
<div v-if="versionCompareSheetRows.length" class="compare-sheet-list">
|
<div v-if="versionCompareSheetRows.length" class="compare-sheet-list">
|
||||||
<span
|
<span
|
||||||
v-for="item in versionCompareSheetRows"
|
v-for="item in versionCompareSheetRows"
|
||||||
:key="`${item.sheet_name}-${item.change_type}`"
|
:key="`${item.sheet_name}-${item.change_type}`"
|
||||||
:class="item.meta.tone"
|
:class="item.meta.tone"
|
||||||
>
|
>
|
||||||
{{ item.sheet_name }} · {{ item.meta.label }}
|
{{ item.sheet_name }} · {{ item.meta.label }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<p v-else>没有新增或删除工作表。</p>
|
<p v-else>没有新增或删除工作表。</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="compare-panel">
|
<section class="compare-panel compare-cell-panel">
|
||||||
<header>
|
<header>
|
||||||
<strong>单元格差异</strong>
|
<strong>单元格差异</strong>
|
||||||
<small>最多展示前 500 条</small>
|
<small>最多展示前 500 条</small>
|
||||||
</header>
|
</header>
|
||||||
<div v-if="versionCompareCellRows.length" class="compare-table-wrap">
|
<div v-if="versionCompareCellRows.length" class="compare-table-wrap">
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>工作表</th>
|
<th>工作表</th>
|
||||||
<th>位置</th>
|
<th>位置</th>
|
||||||
<th>类型</th>
|
<th>类型</th>
|
||||||
<th>旧值</th>
|
<th>旧值</th>
|
||||||
<th>新值</th>
|
<th>新值</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr
|
<tr
|
||||||
v-for="item in versionCompareCellRows"
|
v-for="item in versionCompareCellRows"
|
||||||
:key="`${item.sheet_name}-${item.cell}`"
|
:key="`${item.sheet_name}-${item.cell}`"
|
||||||
>
|
>
|
||||||
<td>{{ item.sheet_name }}</td>
|
<td>{{ item.sheet_name }}</td>
|
||||||
<td>{{ item.cell }}</td>
|
<td>{{ item.cell }}</td>
|
||||||
<td><b :class="item.meta.tone">{{ item.meta.label }}</b></td>
|
<td><b :class="item.meta.tone">{{ item.meta.label }}</b></td>
|
||||||
<td>{{ item.before_value ?? '-' }}</td>
|
<td>{{ item.before_value ?? '-' }}</td>
|
||||||
<td>{{ item.after_value ?? '-' }}</td>
|
<td>{{ item.after_value ?? '-' }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<p v-else>两个版本内容一致,没有发现单元格级差异。</p>
|
<p v-else>两个版本内容一致,没有发现单元格级差异。</p>
|
||||||
</section>
|
</section>
|
||||||
</template>
|
</div>
|
||||||
</aside>
|
</aside>
|
||||||
</div>
|
</div>
|
||||||
</Transition>
|
</Transition>
|
||||||
</section>
|
</section>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user