104 lines
3.1 KiB
TypeScript
104 lines
3.1 KiB
TypeScript
import { backgroundTemplates, updateTaskBackground } from "../../../utils/request"
|
|
|
|
type Category = {
|
|
id: string
|
|
name: string
|
|
}
|
|
|
|
type BgTemplate = {
|
|
id: number
|
|
name: string
|
|
scene: string
|
|
category: string
|
|
coverUrl?: string
|
|
imageUrl?: string
|
|
videoUrl?: string
|
|
isRecommend?: number
|
|
}
|
|
|
|
function filterTemplates(category: string, templates: BgTemplate[]) {
|
|
if (category === 'all') return templates
|
|
return templates.filter((item) => item.category === category)
|
|
}
|
|
|
|
Page({
|
|
data: {
|
|
taskId: '',
|
|
categories: [] as Category[],
|
|
activeCategory: 'all',
|
|
selectedTemplate: 0,
|
|
allTemplates: [] as BgTemplate[],
|
|
templates: [] as BgTemplate[],
|
|
loading: false,
|
|
},
|
|
|
|
onLoad(options: any) {
|
|
this.setData({ taskId: options.taskId || options.taskid || '' })
|
|
this.loadBackgroundTemplates()
|
|
},
|
|
|
|
loadBackgroundTemplates() {
|
|
this.setData({ loading: true })
|
|
backgroundTemplates().then((res: any) => {
|
|
const categories = res && !res.code && res.data ? (res.data.categories || []) : []
|
|
const templates = res && !res.code && res.data ? (res.data.templates || []) : []
|
|
const selectedTemplate = templates.length ? Number(templates[0].id) : 0
|
|
this.setData({
|
|
categories,
|
|
allTemplates: templates,
|
|
templates: filterTemplates(this.data.activeCategory, templates),
|
|
selectedTemplate,
|
|
loading: false,
|
|
})
|
|
}).catch(() => {
|
|
this.setData({ loading: false })
|
|
wx.showModal({ title: '温馨提示', content: '背景模板加载失败,请稍后再试', showCancel: false })
|
|
})
|
|
},
|
|
|
|
handleBack() {
|
|
wx.navigateBack({
|
|
fail: () => wx.navigateTo({ url: '/pages/aiPackage/record/index' }),
|
|
})
|
|
},
|
|
|
|
handleCategorySelect(e: WechatMiniprogram.TouchEvent) {
|
|
const activeCategory = e.currentTarget.dataset.id
|
|
if (!activeCategory) return
|
|
|
|
const templates = filterTemplates(activeCategory, this.data.allTemplates)
|
|
this.setData({ activeCategory, templates })
|
|
},
|
|
|
|
handleTemplateSelect(e: WechatMiniprogram.TouchEvent) {
|
|
const selectedTemplate = Number(e.currentTarget.dataset.id || 0)
|
|
if (selectedTemplate <= 0) return
|
|
|
|
this.setData({ selectedTemplate })
|
|
},
|
|
|
|
handleConfirm() {
|
|
if (!this.data.taskId) {
|
|
wx.showModal({ title: '温馨提示', content: '创作记录不存在', showCancel: false })
|
|
return
|
|
}
|
|
if (this.data.selectedTemplate <= 0) {
|
|
wx.showModal({ title: '温馨提示', content: '请选择背景模板', showCancel: false })
|
|
return
|
|
}
|
|
|
|
wx.showLoading({ mask: true, title: '保存背景中' })
|
|
updateTaskBackground(this.data.taskId, this.data.selectedTemplate).then((res: any) => {
|
|
wx.hideLoading()
|
|
if (!res.code) {
|
|
wx.redirectTo({ url: '/pages/aiPackage/gen/index?taskId=' + encodeURIComponent(this.data.taskId) })
|
|
} else {
|
|
wx.showModal({ title: '温馨提示', content: res.message || '背景保存失败', showCancel: false })
|
|
}
|
|
}).catch(() => {
|
|
wx.hideLoading()
|
|
wx.showModal({ title: '温馨提示', content: '网络异常,请稍后再试', showCancel: false })
|
|
})
|
|
},
|
|
})
|