Files
ai-human/miniprogram/pages/index/index.ts
T
2026-07-10 16:14:31 +08:00

198 lines
5.8 KiB
TypeScript

import { analysis, tasksearch, polishScript, createTask } from "../../utils/request"
const sampleText = '解析中...'
const checkinStorageKey = 'lastCheckinDate'
function getTodayKey() {
const now = new Date()
const year = now.getFullYear()
const month = String(now.getMonth() + 1).padStart(2, '0')
const day = String(now.getDate()).padStart(2, '0')
return `${year}-${month}-${day}`
}
Component({
data: {
parsed: false,
videoLink: '',
scriptText: sampleText,
showCheckinPopup: false,
taskId: '',
parseId: '',
polishing: false
},
lifetimes: {
attached() {
const today = getTodayKey()
const lastCheckinDate = wx.getStorageSync(checkinStorageKey)
if (lastCheckinDate !== today) {
this.setData({ showCheckinPopup: true })
}
},
},
methods: {
handleInput(e: any) {
this.setData({
videoLink: e.detail.value,
})
},
onUnload() {
this.setData({ videoLink: '', parsed: false, scriptText: '' })
},
handlePaste() {
wx.getClipboardData({
success: (res) => {
this.setData({
videoLink: res.data || '0.58 J@i.cN 08/24 :0pm ULw:/ # 新到 # 国五排放 # 货车出售转让 https://v.douyin.com/tHoCmTcQT2Q/ 复制此链接,打开Dou音搜索,直接观看视频!',
})
},
fail: () => {
this.setData({
videoLink: '0.58 J@i.cN 08/24 :0pm ULw:/ # 新到 # 国五排放 # 货车出售转让 https://v.douyin.com/tHoCmTcQT2Q/ 复制此链接,打开Dou音搜索,直接观看视频!',
})
},
})
},
handleParse() {
if (this.data.videoLink == '') {
wx.showModal({
title: '温馨提示',
content: '解析链接不能为空',
showCancel: false
})
return;
}
wx.showLoading({ title: '解析中.' });
analysis(this.data.videoLink).then((res: any) => {
console.log(res);
wx.hideLoading();
if (!res.code) {
this.setData({
parsed: true,
taskId: '',
parseId: String(res.data.parseId || res.data.taskId || '')
})
wx.showLoading({ title: '等待结果中...', mask: true });
this.tasksearch(String(res.data.parseId || res.data.taskId || ''))
} else {
wx.showModal({
title: '温馨提示',
content: '解析失败,请确认链接的有效性',
showCancel: false
})
}
}).catch((err) => {
console.log(err)
wx.hideLoading();
wx.showModal({
title: '温馨提示',
content: '解析失败,请重试',
showCancel: false
})
})
},
tasksearch(taskId: string) {
let that = this;
tasksearch(taskId).then((res: any) => {
if (!res.code) {
wx.hideLoading();
this.setData({ scriptText: (res.data && res.data.scriptText) || '' })
} else {
setTimeout(() => that.tasksearch(taskId), 500);
}
})
},
handleReset() {
this.setData({
parsed: false,
scriptText: '',
})
this.handleParse();
},
handleCopy() {
wx.setClipboardData({
data: this.data.scriptText,
fail(err) {
console.log(err);
wx.showModal({
title: '温馨提示',
content: '您还未授于剪切板权限'
})
}
})
},
handlePolish() {
if (!(this.data.parseId || this.data.taskId) || !this.data.scriptText) {
wx.showToast({ title: '暂无可润色文案', icon: 'none' })
return
}
if (this.data.polishing) return
this.setData({ polishing: true })
wx.showLoading({ title: '润色中...', mask: true })
polishScript(this.data.parseId || this.data.taskId, this.data.scriptText, 'optimize').then((res: any) => {
wx.hideLoading()
this.setData({ polishing: false })
if (!res.code) {
this.setData({ scriptText: res.data.scriptText })
wx.showToast({ title: '已润色', icon: 'success' })
return
}
wx.showModal({ title: '温馨提示', content: res.message || '润色失败,请稍后再试', showCancel: false })
}).catch((err) => {
console.log(err)
wx.hideLoading()
this.setData({ polishing: false })
wx.showModal({ title: '温馨提示', content: '润色失败,请稍后再试', showCancel: false })
})
},
handleGoCreate() {
const parseId = this.data.parseId || this.data.taskId
if (!parseId || !this.data.scriptText) {
wx.showToast({ title: '请先完成文案提取', icon: 'none' })
return
}
wx.showLoading({ title: '创建任务中', mask: true })
createTask(parseId, this.data.scriptText).then((res: any) => {
wx.hideLoading()
if (!res.code && res.data && res.data.taskId) {
this.setData({ taskId: res.data.taskId })
wx.navigateTo({
url: '/pages/aiPackage/preview/index?taskId=' + res.data.taskId,
})
return
}
wx.showModal({ title: '温馨提示', content: res.message || '创建任务失败,请稍后再试', showCancel: false })
}).catch(() => {
wx.hideLoading()
wx.showModal({ title: '温馨提示', content: '网络异常,请稍后再试', showCancel: false })
})
},
handleExperience() {
this.setData({
videoLink: 'https://v.douyin.com/example/',
parsed: true,
})
},
handleCheckinClose() {
wx.setStorageSync(checkinStorageKey, getTodayKey())
this.setData({ showCheckinPopup: false })
},
handleCheckinRule() {
wx.showToast({ title: '每日签到可领取金币', icon: 'none' })
},
},
})