chore:增加名片删除按钮
This commit is contained in:
@@ -35,6 +35,7 @@ export const CARD_API_URL = {
|
||||
CARD_RECOGNIZE: '/card/api/card/recognize',
|
||||
CARD_RETRY: '/card/api/card/retry',
|
||||
CARD_RECOGNIZE_BATCH: '/card/api/card/recognizeBatch',
|
||||
CARD_DELETE: '/card/api/card/delete', // 删除自己的名片(软删, 2.11.91)
|
||||
|
||||
// === 跟进完成态 2.11.3 /card/api/card/* ===
|
||||
CARD_FOLLOW_DONE: '/card/api/card/followDone',
|
||||
@@ -208,6 +209,18 @@ const CardApi = {
|
||||
Http.sendJson(Object.assign({ url: CARD_API_URL.CARD_FAVORITE }, p || {}));
|
||||
},
|
||||
|
||||
/**
|
||||
* 删除自己的名片(软删, 2.11.91)
|
||||
* 文档: CARD_DELETE_API.md(POST /card/api/card/delete,token 自动带,不传 site_id)
|
||||
* 通道: 与 cardClaim/cardFollowDone 同款 sendRequest(表单编码);只需 card_id 一个字段
|
||||
* 交互: 调用前页面必须已做二次确认;成功后 toast「已删除」并刷新列表(接口不再返回该卡)
|
||||
* 口径: 「卡片不存在」是故意模糊(他人/已删/不存在同一文案),前端统一按 message toast,不特殊处理
|
||||
* @param {Object} p { data: { card_id }, success, fail }
|
||||
*/
|
||||
cardDelete(p) {
|
||||
Http.sendRequest(Object.assign({ url: CARD_API_URL.CARD_DELETE }, p || {}));
|
||||
},
|
||||
|
||||
/**
|
||||
* 识别建卡
|
||||
* @param {Object} p { media_path, media_type?, source_type?, success, fail }
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
@tap.stop="toggleFavorite">{{ item.is_favorite == 1 ? '★' : '☆' }}</text>
|
||||
<view v-if="followTab === 'due' && item.follow_up_done != 1" class="card-done-btn"
|
||||
:data-index="index" @tap.stop="markDone">完成</view>
|
||||
<view class="card-del-btn" :data-index="index" @tap.stop="deleteCard">删除</view>
|
||||
<view class="card-arrow">›</view>
|
||||
</view>
|
||||
|
||||
@@ -310,6 +311,50 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
/**
|
||||
* 删除名片(软删, 2.11.91, 与 CARD_DELETE_API.md 同步)
|
||||
* 行级归属: 只能删自己名下卡; 删他人/已删/不存在统一后端报「卡片不存在」。
|
||||
* 流程: 二次确认(danger 样式) → cardDelete → 成功 toast「已删除」并刷新列表
|
||||
* (列表接口立即不再返回该卡, 刷新即移除, 无需手动 splice)。
|
||||
* 失败口径同收口规范第 3 条: 统一 toast(message), 不刷新。
|
||||
*/
|
||||
deleteCard(payload) {
|
||||
const item = this.resolveItem(payload);
|
||||
if (!item) return;
|
||||
const cardId = this.cardIdOf(item);
|
||||
if (!cardId) {
|
||||
uni.showToast({ title: '该名片缺少编号,无法删除', icon: 'none' });
|
||||
return;
|
||||
}
|
||||
const name = item.name || '未命名名片';
|
||||
uni.showModal({
|
||||
title: '删除名片',
|
||||
content: '删除后名片将立即失效,分享链接也会不可访问。确定删除「' + name + '」?',
|
||||
confirmText: '删除',
|
||||
confirmColor: '#e54d42',
|
||||
success: m => {
|
||||
if (!m.confirm) return;
|
||||
uni.showLoading({ title: '删除中…' });
|
||||
this.$cardApi.cardDelete({
|
||||
data: { card_id: cardId },
|
||||
success: res => {
|
||||
uni.hideLoading();
|
||||
if (res.code == 0) {
|
||||
uni.showToast({ title: '已删除', icon: 'success' });
|
||||
this.refresh();
|
||||
} else {
|
||||
// 「卡片不存在」模糊口径: 统一按 message 提示, 不特殊处理
|
||||
this.handleApiError(res);
|
||||
}
|
||||
},
|
||||
fail: () => {
|
||||
uni.hideLoading();
|
||||
uni.showToast({ title: '网络异常,请稍后重试', icon: 'none' });
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
// 空态: 查询我的建卡申请状态(2.11.15)
|
||||
loadApplyStatus() {
|
||||
this.$cardApi.applyStatus({
|
||||
@@ -801,6 +846,21 @@ export default {
|
||||
border-radius: 24rpx;
|
||||
}
|
||||
|
||||
/* 删除名片按钮(2.11.91): danger 红, 与完成按钮同构的小药丸 */
|
||||
.card-del-btn {
|
||||
flex-shrink: 0;
|
||||
margin-left: 16rpx;
|
||||
padding: 8rpx 20rpx;
|
||||
background-color: #fdeceb;
|
||||
color: #e54d42;
|
||||
font-size: 24rpx;
|
||||
border-radius: 24rpx;
|
||||
|
||||
&:active {
|
||||
background-color: #f9d6d3;
|
||||
}
|
||||
}
|
||||
|
||||
/* 首屏加载占位(替代"先闪空态") */
|
||||
.first-loading {
|
||||
text-align: center;
|
||||
|
||||
Reference in New Issue
Block a user