diff --git a/app.json b/app.json index 3e73cbe..19a3480 100644 --- a/app.json +++ b/app.json @@ -22,7 +22,8 @@ "pages/noticeList/noticeList", "pages/noticeListDetails/noticeListDetails", "pages/todayInquiry/todayInquiry", - "pages/carouselDetail/carouselDetail" + "pages/carouselDetail/carouselDetail", + "pages/releaseSuffer/releaseSuffer" ] }, { diff --git a/pagesA/pages/releaseSuffer/releaseSuffer.js b/pagesA/pages/releaseSuffer/releaseSuffer.js new file mode 100644 index 0000000..583bf39 --- /dev/null +++ b/pagesA/pages/releaseSuffer/releaseSuffer.js @@ -0,0 +1,191 @@ +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 + }); + } +}); \ No newline at end of file diff --git a/pagesA/pages/releaseSuffer/releaseSuffer.json b/pagesA/pages/releaseSuffer/releaseSuffer.json new file mode 100644 index 0000000..7b8bc36 --- /dev/null +++ b/pagesA/pages/releaseSuffer/releaseSuffer.json @@ -0,0 +1,4 @@ +{ + "navigationBarTitleText":"发布文章", + "usingComponents": {} +} \ No newline at end of file diff --git a/pagesA/pages/releaseSuffer/releaseSuffer.wxml b/pagesA/pages/releaseSuffer/releaseSuffer.wxml new file mode 100644 index 0000000..b558f51 --- /dev/null +++ b/pagesA/pages/releaseSuffer/releaseSuffer.wxml @@ -0,0 +1,109 @@ + +
+ + + + 📝 + 文章标题 + 必填 + + + + + + + + + + + + 📋 + 文章摘要 + 选填 + + + +