feat: 创作中心改造 - 我的改写/续写Tab展示已发布作品
This commit is contained in:
@@ -636,10 +636,10 @@ export default class ProfileScene extends BaseScene {
|
||||
const promptText = item.userPrompt ? `"「${item.userPrompt}」"` : '';
|
||||
ctx.fillText(this.truncateText(ctx, promptText, w - 100), textX, y + 48);
|
||||
|
||||
// 时间
|
||||
// 时间(放在左下角)
|
||||
ctx.fillStyle = 'rgba(255,255,255,0.35)';
|
||||
ctx.font = '10px sans-serif';
|
||||
ctx.fillText(item.createdAt || '', textX, y + 68);
|
||||
ctx.fillText(item.createdAt || '', textX, y + 72);
|
||||
|
||||
// 未读标记
|
||||
if (!item.isRead && item.status === 'completed') {
|
||||
@@ -649,31 +649,50 @@ export default class ProfileScene extends BaseScene {
|
||||
ctx.fill();
|
||||
}
|
||||
|
||||
// 按钮
|
||||
const btnY = y + 62;
|
||||
|
||||
// 删除按钮(所有状态都显示)
|
||||
ctx.fillStyle = 'rgba(239, 68, 68, 0.2)';
|
||||
this.roundRect(ctx, x + w - 55, btnY, 45, 24, 12);
|
||||
ctx.fill();
|
||||
ctx.fillStyle = '#ef4444';
|
||||
ctx.font = '11px sans-serif';
|
||||
ctx.textAlign = 'center';
|
||||
ctx.fillText('删除', x + w - 32, btnY + 16);
|
||||
// 按钮行(放在右下角)
|
||||
const btnY = y + 60;
|
||||
const btnStartX = x + w - 170; // 从右边开始排列按钮
|
||||
|
||||
// 播放按钮(仅已完成状态)
|
||||
if (item.status === 'completed') {
|
||||
const btnGradient = ctx.createLinearGradient(textX, btnY, textX + 65, btnY);
|
||||
const btnGradient = ctx.createLinearGradient(btnStartX, btnY, btnStartX + 50, btnY);
|
||||
btnGradient.addColorStop(0, '#a855f7');
|
||||
btnGradient.addColorStop(1, '#ec4899');
|
||||
ctx.fillStyle = btnGradient;
|
||||
this.roundRect(ctx, textX + 120, btnY, 60, 24, 12);
|
||||
this.roundRect(ctx, btnStartX, btnY, 50, 26, 13);
|
||||
ctx.fill();
|
||||
ctx.fillStyle = '#ffffff';
|
||||
ctx.font = 'bold 11px sans-serif';
|
||||
ctx.textAlign = 'center';
|
||||
ctx.fillText('播放', textX + 150, btnY + 16);
|
||||
ctx.fillText('播放', btnStartX + 25, btnY + 17);
|
||||
|
||||
// 发布按钮(仅已完成且未发布)
|
||||
if (!item.publishedToCenter) {
|
||||
ctx.fillStyle = 'rgba(34, 197, 94, 0.2)';
|
||||
this.roundRect(ctx, btnStartX + 58, btnY, 50, 26, 13);
|
||||
ctx.fill();
|
||||
ctx.fillStyle = '#22c55e';
|
||||
ctx.font = '11px sans-serif';
|
||||
ctx.fillText('发布', btnStartX + 83, btnY + 17);
|
||||
} else {
|
||||
// 已发布标识
|
||||
ctx.fillStyle = 'rgba(34, 197, 94, 0.15)';
|
||||
this.roundRect(ctx, btnStartX + 58, btnY, 55, 26, 13);
|
||||
ctx.fill();
|
||||
ctx.fillStyle = '#22c55e';
|
||||
ctx.font = '10px sans-serif';
|
||||
ctx.fillText('已发布', btnStartX + 85, btnY + 17);
|
||||
}
|
||||
}
|
||||
|
||||
// 删除按钮(所有状态都显示,最右边)
|
||||
ctx.fillStyle = 'rgba(239, 68, 68, 0.2)';
|
||||
this.roundRect(ctx, x + w - 55, btnY, 45, 26, 13);
|
||||
ctx.fill();
|
||||
ctx.fillStyle = '#ef4444';
|
||||
ctx.font = '11px sans-serif';
|
||||
ctx.textAlign = 'center';
|
||||
ctx.fillText('删除', x + w - 32, btnY + 17);
|
||||
}
|
||||
|
||||
renderSimpleCard(ctx, item, x, y, w, h, index) {
|
||||
@@ -896,23 +915,32 @@ export default class ProfileScene extends BaseScene {
|
||||
|
||||
// AI草稿 Tab 的按钮检测
|
||||
if (this.currentTab === 1) {
|
||||
const btnY = 62;
|
||||
const btnH = 24;
|
||||
const btnY = 60;
|
||||
const btnH = 26;
|
||||
const btnStartX = padding + cardW - 170;
|
||||
|
||||
// 检测删除按钮点击(右侧)
|
||||
// 检测删除按钮点击(最右侧)
|
||||
const deleteBtnX = padding + cardW - 55;
|
||||
if (x >= deleteBtnX && x <= deleteBtnX + 45 && relativeY >= btnY && relativeY <= btnY + btnH) {
|
||||
this.confirmDeleteDraft(item, index);
|
||||
return;
|
||||
}
|
||||
|
||||
// 检测播放按钮点击(左侧,仅已完成状态)
|
||||
// 检测播放按钮点击(仅已完成状态)
|
||||
if (item.status === 'completed') {
|
||||
const playBtnX = padding + 88 + 120;
|
||||
if (x >= playBtnX && x <= playBtnX + 60 && relativeY >= btnY && relativeY <= btnY + btnH) {
|
||||
if (x >= btnStartX && x <= btnStartX + 50 && relativeY >= btnY && relativeY <= btnY + btnH) {
|
||||
this.main.sceneManager.switchScene('story', { storyId: item.storyId, draftId: item.id });
|
||||
return;
|
||||
}
|
||||
|
||||
// 检测发布按钮点击(仅未发布状态)
|
||||
if (!item.publishedToCenter) {
|
||||
const publishBtnX = btnStartX + 58;
|
||||
if (x >= publishBtnX && x <= publishBtnX + 50 && relativeY >= btnY && relativeY <= btnY + btnH) {
|
||||
this.confirmPublishDraft(item, index);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 点击卡片其他区域
|
||||
@@ -1027,6 +1055,31 @@ export default class ProfileScene extends BaseScene {
|
||||
});
|
||||
}
|
||||
|
||||
// 确认发布草稿到创作中心
|
||||
confirmPublishDraft(item, index) {
|
||||
wx.showModal({
|
||||
title: '发布到创作中心',
|
||||
content: `确定要将「${item.title || 'AI改写'}」发布到创作中心吗?`,
|
||||
confirmText: '发布',
|
||||
confirmColor: '#22c55e',
|
||||
cancelText: '取消',
|
||||
success: async (res) => {
|
||||
if (res.confirm) {
|
||||
wx.showLoading({ title: '发布中...' });
|
||||
const success = await this.main.userManager.publishDraft(item.id);
|
||||
wx.hideLoading();
|
||||
if (success) {
|
||||
// 更新本地状态
|
||||
this.drafts[index].publishedToCenter = true;
|
||||
wx.showToast({ title: '发布成功', icon: 'success' });
|
||||
} else {
|
||||
wx.showToast({ title: '发布失败', icon: 'none' });
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 确认删除游玩记录
|
||||
confirmDeleteRecord(item, index) {
|
||||
wx.showModal({
|
||||
|
||||
Reference in New Issue
Block a user