From 663d86ca0d09862c689424043e5149f70b1060f6 Mon Sep 17 00:00:00 2001 From: ZhaoYang <565837861@qq.com> Date: Tue, 3 Mar 2026 16:38:39 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=8F=E9=AA=8C=E5=88=86=E4=BA=AB=E5=8F=91?= =?UTF-8?q?=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 3 +- pagesA/pages/releaseSuffer/releaseSuffer.js | 191 ++++++++++++ pagesA/pages/releaseSuffer/releaseSuffer.json | 4 + pagesA/pages/releaseSuffer/releaseSuffer.wxml | 109 +++++++ pagesA/pages/releaseSuffer/releaseSuffer.wxss | 278 ++++++++++++++++++ pagesB/pages/experienceList/experienceList.js | 7 + .../pages/experienceList/experienceList.wxml | 8 + .../pages/experienceList/experienceList.wxss | 61 ++++ utils/api.js | 10 +- 9 files changed, 669 insertions(+), 2 deletions(-) create mode 100644 pagesA/pages/releaseSuffer/releaseSuffer.js create mode 100644 pagesA/pages/releaseSuffer/releaseSuffer.json create mode 100644 pagesA/pages/releaseSuffer/releaseSuffer.wxml create mode 100644 pagesA/pages/releaseSuffer/releaseSuffer.wxss 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 @@ + +
+ + + + 📝 + 文章标题 + 必填 + + + + + + + + + + + + 📋 + 文章摘要 + 选填 + + + +