fix(admin-ui): 修复线索状态更新后详情弹窗未关闭,优化管家顾问页面文案与格式
- 为LeadsPage的submitStatus函数的finally块添加关闭详情弹窗的逻辑,确保更新状态后自动关闭弹窗 - 修正ConciergePage页面的介绍文案,将原表述"停用后不会进入 Public API"调整为"停用后不会进入小程序显示" - 格式化两个页面的Vue模板代码,拆分长行并统一缩进,提升代码可读性
This commit is contained in:
@@ -111,11 +111,40 @@ onMounted(load);
|
||||
|
||||
<template>
|
||||
<div class="page-stack">
|
||||
<div class="page-intro site-config-intro"><div><p class="eyebrow">SERVICE / CONCIERGE</p><h2>管家顾问</h2><p>维护前台顾问卡片、服务详情和二维码;停用后不会进入 Public API。</p></div><el-button v-permission="'admin:concierge:read'" type="primary" @click="openCreate">新增管家</el-button></div>
|
||||
<el-alert v-if="error" :title="error" type="error" show-icon :closable="false"><template #default><el-button link type="primary" @click="load">重试</el-button></template></el-alert>
|
||||
<div class="page-intro site-config-intro">
|
||||
<div>
|
||||
<p class="eyebrow">SERVICE / CONCIERGE</p>
|
||||
<h2>管家顾问</h2>
|
||||
<p>维护前台顾问卡片、服务详情和二维码;停用后不会进入小程序显示。</p>
|
||||
</div><el-button v-permission="'admin:concierge:read'" type="primary" @click="openCreate">新增管家</el-button>
|
||||
</div>
|
||||
<el-alert v-if="error" :title="error" type="error" show-icon :closable="false"><template #default><el-button link
|
||||
type="primary" @click="load">重试</el-button></template></el-alert>
|
||||
<el-skeleton v-if="loading" :rows="7" animated />
|
||||
<el-empty v-else-if="!advisors.length" description="暂无管家顾问"><el-button v-permission="'admin:concierge:read'" type="primary" @click="openCreate">创建第一位顾问</el-button></el-empty>
|
||||
<el-card v-else shadow="never" class="panel-card"><div class="concierge-list"><div v-for="(advisor, index) in advisors" :key="advisor.id" class="concierge-row"><div class="concierge-summary"><el-avatar :size="48" :src="resolveAdminMediaUrl(advisor.avatar)">{{ advisor.name.slice(0, 1) }}</el-avatar><div><strong>{{ advisor.name }}</strong><span>{{ advisor.role }} · {{ advisor.details?.length ?? 0 }} 条服务详情</span></div></div><div class="concierge-actions"><el-tag :type="advisor.isActive ? 'success' : 'info'" effect="plain">{{ advisor.isActive ? "启用" : "停用" }}</el-tag><el-button v-permission="'admin:concierge:read'" link :disabled="index === 0 || Boolean(savingKey)" @click="move(advisor, -1)">上移</el-button><el-button v-permission="'admin:concierge:read'" link :disabled="index === advisors.length - 1 || Boolean(savingKey)" @click="move(advisor, 1)">下移</el-button><el-button v-permission="'admin:concierge:read'" link type="primary" @click="openEdit(advisor)">编辑</el-button><el-button v-permission="'admin:concierge:read'" link type="danger" :disabled="Boolean(savingKey)" @click="remove(advisor)">删除</el-button></div></div></div></el-card>
|
||||
<el-drawer v-model="editorOpen" class="editor-drawer" size="min(720px, 100%)" :with-header="false" :show-close="false" :close-on-press-escape="!savingKey" @close="closeEditor"><ConciergeAdvisorEditor v-if="editorOpen" :advisor="editing" :editing="Boolean(editing)" :saving="savingKey === 'advisor'" @save="save" @cancel="closeEditor" /></el-drawer>
|
||||
<el-empty v-else-if="!advisors.length" description="暂无管家顾问"><el-button v-permission="'admin:concierge:read'"
|
||||
type="primary" @click="openCreate">创建第一位顾问</el-button></el-empty>
|
||||
<el-card v-else shadow="never" class="panel-card">
|
||||
<div class="concierge-list">
|
||||
<div v-for="(advisor, index) in advisors" :key="advisor.id" class="concierge-row">
|
||||
<div class="concierge-summary"><el-avatar :size="48" :src="resolveAdminMediaUrl(advisor.avatar)">{{
|
||||
advisor.name.slice(0, 1) }}</el-avatar>
|
||||
<div><strong>{{ advisor.name }}</strong><span>{{ advisor.role }} · {{ advisor.details?.length ?? 0 }}
|
||||
条服务详情</span></div>
|
||||
</div>
|
||||
<div class="concierge-actions"><el-tag :type="advisor.isActive ? 'success' : 'info'" effect="plain">{{
|
||||
advisor.isActive ? "启用" : "停用" }}</el-tag><el-button v-permission="'admin:concierge:read'" link
|
||||
:disabled="index === 0 || Boolean(savingKey)" @click="move(advisor, -1)">上移</el-button><el-button
|
||||
v-permission="'admin:concierge:read'" link :disabled="index === advisors.length - 1 || Boolean(savingKey)"
|
||||
@click="move(advisor, 1)">下移</el-button><el-button v-permission="'admin:concierge:read'" link
|
||||
type="primary" @click="openEdit(advisor)">编辑</el-button><el-button v-permission="'admin:concierge:read'"
|
||||
link type="danger" :disabled="Boolean(savingKey)" @click="remove(advisor)">删除</el-button></div>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
<el-drawer v-model="editorOpen" class="editor-drawer" size="min(720px, 100%)" :with-header="false"
|
||||
:show-close="false" :close-on-press-escape="!savingKey" @close="closeEditor">
|
||||
<ConciergeAdvisorEditor v-if="editorOpen" :advisor="editing" :editing="Boolean(editing)"
|
||||
:saving="savingKey === 'advisor'" @save="save" @cancel="closeEditor" />
|
||||
</el-drawer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -65,6 +65,7 @@ async function submitStatus(lead: Lead) {
|
||||
ElMessage.error(updateError instanceof Error ? updateError.message : "线索状态更新失败");
|
||||
} finally {
|
||||
updatingId.value = "";
|
||||
detailOpen.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,7 +126,7 @@ onMounted(load);
|
||||
<el-table-column label="状态" width="110"><template #default="{ row }"><el-tag :type="statusTagType(row.status)"
|
||||
effect="plain">{{ leadStatusLabel(row.status) }}</el-tag></template></el-table-column>
|
||||
<el-table-column label="提交时间" min-width="175"><template #default="{ row }">{{ formatDate(row.createdAt)
|
||||
}}</template></el-table-column>
|
||||
}}</template></el-table-column>
|
||||
<el-table-column label="操作" width="110" fixed="right"><template #default="{ row }"><el-button link
|
||||
type="primary" @click="openDetail(row)">查看详情</el-button></template></el-table-column>
|
||||
</el-table>
|
||||
|
||||
Reference in New Issue
Block a user