123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- Page({
- data: {
- generating: false, // 是否正在生成海报
- currentPoster: null, // 当前选中的海报模板
- currentGoods: null, // 当前选中的商品
- customText: '', // 自定义文案
- showGoodsSelect: false, // 是否显示商品选择
- showCustomText: false, // 是否显示自定义文案
- posterList: [
- {
- id: '1',
- name: '模板一',
- url: '/static/images/poster-1.jpg',
- type: 'goods' // 商品海报
- },
- {
- id: '2',
- name: '模板二',
- url: '/static/images/poster-2.jpg',
- type: 'profile' // 个人名片
- },
- {
- id: '3',
- name: '模板三',
- url: '/static/images/poster-3.jpg',
- type: 'custom' // 自定义海报
- }
- ],
- goodsList: [
- {
- id: '1',
- name: '商品名称商品名称商品名称',
- price: '99.00',
- image: '/static/images/goods-1.jpg'
- },
- {
- id: '2',
- name: '商品名称2',
- price: '199.00',
- image: '/static/images/goods-2.jpg'
- },
- {
- id: '3',
- name: '商品名称3',
- price: '299.00',
- image: '/static/images/goods-3.jpg'
- }
- ]
- },
- onLoad() {
- // 设置默认选中第一个模板
- this.setData({
- currentPoster: this.data.posterList[0]
- })
- this.checkTemplateType(this.data.posterList[0])
- },
- // 选择海报模板
- selectTemplate(e) {
- const id = e.currentTarget.dataset.id
- const poster = this.data.posterList.find(item => item.id === id)
- this.setData({ currentPoster: poster })
- this.checkTemplateType(poster)
- },
- // 检查模板类型,显示对应的选项
- checkTemplateType(poster) {
- this.setData({
- showGoodsSelect: poster.type === 'goods',
- showCustomText: poster.type === 'custom'
- })
- },
- // 选择商品
- selectGoods(e) {
- const id = e.currentTarget.dataset.id
- const goods = this.data.goodsList.find(item => item.id === id)
- this.setData({ currentGoods: goods })
- this.generatePoster()
- },
- // 文案输入
- onTextChange(e) {
- this.setData({
- customText: e.detail.value
- })
- this.generatePoster()
- },
- // 生成海报
- generatePoster() {
- if (this.data.generating) return
- this.setData({ generating: true })
- // TODO: 调用后端API生成海报
- setTimeout(() => {
- this.setData({ generating: false })
- }, 1500)
- },
- // 预览海报
- previewPoster() {
- if (!this.data.currentPoster) return
- wx.previewImage({
- urls: [this.data.currentPoster.url]
- })
- },
- // 保存海报
- savePoster() {
- if (!this.data.currentPoster) {
- return wx.showToast({
- title: '请先生成海报',
- icon: 'none'
- })
- }
- wx.getSetting({
- success: (res) => {
- if (!res.authSetting['scope.writePhotosAlbum']) {
- wx.authorize({
- scope: 'scope.writePhotosAlbum',
- success: () => {
- this.saveImage()
- },
- fail: () => {
- wx.showModal({
- title: '提示',
- content: '需要您授权保存图片到相册',
- success: (res) => {
- if (res.confirm) {
- wx.openSetting()
- }
- }
- })
- }
- })
- } else {
- this.saveImage()
- }
- }
- })
- },
- // 保存图片到相册
- saveImage() {
- wx.showLoading({
- title: '保存中...'
- })
- wx.downloadFile({
- url: this.data.currentPoster.url,
- success: (res) => {
- wx.saveImageToPhotosAlbum({
- filePath: res.tempFilePath,
- success: () => {
- wx.showToast({
- title: '保存成功',
- icon: 'success'
- })
- },
- fail: () => {
- wx.showToast({
- title: '保存失败',
- icon: 'none'
- })
- }
- })
- },
- fail: () => {
- wx.showToast({
- title: '图片下载失败',
- icon: 'none'
- })
- },
- complete: () => {
- wx.hideLoading()
- }
- })
- },
- onShareAppMessage() {
- return {
- title: '邀请你加入分销团队',
- path: '/pages/index/index?inviter=' + wx.getStorageSync('distributionId'),
- imageUrl: this.data.currentPoster?.url || '/static/images/share.jpg'
- }
- }
- })
|