|
|
import http from '../../../utils/api';const baseUrl = require('../../../utils/baseUrl');
Page({ data: { baseUrl: baseUrl, // 表单数据
formData: { title: '', summary: '', categoryName: '', tags: '', // 改为字符串格式,如 "传染病,疫苗"
content: '' }, // 分类列表 - 直接从接口返回的 rows 赋值
categoryList: [], categoryIndex: -1, // 标签列表 - 直接从接口返回的 rows 赋值
tagList: [], // 已选中的标签对象数组
selectedTags: [], // 提交状态
submitting: false },
onLoad(options) { this.getCategoryList(); this.getTagList(); },
// 输入处理
onInput(e) { const { field } = e.currentTarget.dataset; const { value } = e.detail; this.setData({ [`formData.${field}`]: value }); },
// 获取文章分类 - 直接使用 res.rows
getCategoryList() { http.articleZd({ data: { dictType: 'vet_experience_category' }, success: (res) => { // 直接使用 res.rows 赋值
if (res.rows && Array.isArray(res.rows)) { this.setData({ categoryList: res.rows }); } else { console.error('分类数据格式错误', res); wx.showToast({ title: '分类加载失败', icon: 'none' }); } }, fail: (err) => { console.error('分类接口异常', err); wx.showToast({ title: '网络错误', icon: 'none' }); } }); },
// 获取文章标签 - 直接使用 res.rows
getTagList() { http.videoZd({ data: { dictType: 'vet_experience_tag' }, success: (res) => { // 直接使用 res.rows 赋值
if (res.rows && Array.isArray(res.rows)) { this.setData({ tagList: res.rows }); } else { console.error('标签数据格式错误', res); wx.showToast({ title: '标签加载失败', icon: 'none' }); } }, fail: (err) => { console.error('标签接口异常', err); wx.showToast({ title: '网络错误', icon: 'none' }); } }); },
// 分类选择
onCategoryChange(e) { const index = parseInt(e.detail.value, 10); const selectedCategory = this.data.categoryList[index]; this.setData({ categoryIndex: index, [`formData.categoryName`]: selectedCategory.dictLabel }); },
// 标签点击切换
toggleTag(e) { const tagItem = e.currentTarget.dataset.item; let selectedTags = [...this.data.selectedTags]; const index = selectedTags.findIndex(t => t.dictValue === tagItem.dictValue); if (index > -1) { selectedTags.splice(index, 1); } else { selectedTags.push(tagItem); } // 生成逗号分隔的标签字符串,如 "传染病,疫苗"
const tagString = selectedTags.map(item => item.dictLabel).join(','); this.setData({ selectedTags: selectedTags, [`formData.tags`]: tagString }); },
// 表单提交
formSubmit(e) { const { title, categoryName, content } = this.data.formData; // 表单验证
if (!title || title.trim() === '') { this.showError('请填写文章标题'); return; } if (!categoryName) { this.showError('请选择文章分类'); return; } if (this.data.selectedTags.length === 0) { this.showError('请至少选择一个标签'); return; } if (!content || content.trim() === '') { this.showError('请填写文章内容'); return; }
this.setData({ submitting: true });
// 构建提交数据 - tags 已经是字符串格式
const postData = { title: this.data.formData.title, summary: this.data.formData.summary || '', categoryName: this.data.formData.categoryName, tags: this.data.formData.tags, // 已经是 "传染病,疫苗" 格式
content: this.data.formData.content };
console.log('提交数据:', postData); // 调试用
http.shareAdd({ data: postData, success: (res) => { if(res.code == 200){ wx.showToast({ title: '发布成功', icon: 'success', duration: 2000, success: () => { setTimeout(() => { wx.navigateBack(); }, 1500); } }) }else{ console.error('发布失败', err); this.showError('发布失败,请重试'); this.setData({ submitting: false }); } }, fail: (err) => { console.error('发布失败', err); this.showError('发布失败,请重试'); this.setData({ submitting: false }); }, complete: () => { setTimeout(() => { this.setData({ submitting: false }); }, 3000); } }); },
// 错误提示
showError(msg) { wx.showToast({ title: msg, icon: 'none', duration: 2000 }); }});
|