From d72bc9ccd8a6afd232ec7887be1cf586a390f8c9 Mon Sep 17 00:00:00 2001 From: wt Date: Fri, 10 Oct 2025 16:28:27 +0800 Subject: [PATCH] fix --- app.json | 23 +++++++- components/count-picker/index.js | 78 +++++++++++++++++++++++++++ components/count-picker/index.json | 9 ++++ components/count-picker/index.wxml | 8 +++ components/count-picker/index.wxss | 1 + pages/index/edit.js | 69 ++++++++++++++++++++++++ pages/index/edit.json | 3 +- pages/index/edit.wxml | 35 +++++++----- pages/index/edit.wxss | 24 ++++++++- pages/index/info.js | 8 ++- pages/today/index.js | 84 +++++++++++++++++++++++++++++ pages/today/index.json | 3 ++ pages/today/index.wxml | 13 +++++ pages/today/index.wxss | 9 ++++ static/img/home.png | Bin 0 -> 2264 bytes static/img/home1.png | Bin 0 -> 4000 bytes 16 files changed, 350 insertions(+), 17 deletions(-) create mode 100644 components/count-picker/index.js create mode 100644 components/count-picker/index.json create mode 100644 components/count-picker/index.wxml create mode 100644 components/count-picker/index.wxss create mode 100644 pages/today/index.js create mode 100644 pages/today/index.json create mode 100644 pages/today/index.wxml create mode 100644 pages/today/index.wxss create mode 100644 static/img/home.png create mode 100644 static/img/home1.png diff --git a/app.json b/app.json index 816e6aa..31ff0d9 100644 --- a/app.json +++ b/app.json @@ -7,7 +7,8 @@ "pages/add/info", "pages/index/info", "pages/index/edit", - "pages/about/index" + "pages/about/index", + "pages/today/index" ], "window": { "navigationBarTextStyle": "black", @@ -15,6 +16,26 @@ "navigationBarBackgroundColor": "#ffffff" }, "darkmode": false, + "tabBar": { + "selectedColor": "#54B87E", + "backgroundColor": "white", + "list": [ + { + "iconPath": "static/img/home.png", + "selectedIconPath": "static/img/home1.png", + "pagePath": "pages/index/index", + "iconSize": 48, + "text": "首页" + }, + { + "iconPath": "static/img/home.png", + "selectedIconPath": "static/img/home1.png", + "pagePath": "pages/today/index", + "iconSize": 48, + "text": "今日农事" + } + ] + }, "componentFramework": "glass-easel", "sitemapLocation": "sitemap.json", "lazyCodeLoading": "requiredComponents", diff --git a/components/count-picker/index.js b/components/count-picker/index.js new file mode 100644 index 0000000..3b11d93 --- /dev/null +++ b/components/count-picker/index.js @@ -0,0 +1,78 @@ +// components/picker/index.js +Component({ + + /** + * 组件的属性列表 + */ + properties: { + title: { + type: String, + require: true + }, + prop: { + type: String, + require: true + }, + value: { + type: String, + require: false + } + }, + + observers: { + // 监听 visible 的变化 + 'value': function (newVal, oldVal) { + if (newVal) { + this.setData({ + result:newVal + }) + } + } + }, + /** + * 组件的初始数据 + */ + data: { + visible: false, + result: '', + counts: [] + }, + + /** + * 组件的方法列表 + */ + methods: { + init() { + var list = [] + for (let index = 1; index < 31; index++) { + const item = { + label: index, + value: index + } + list.push(item) + } + this.setData({ + counts: list + }) + }, + confirm(e) { + const value = e.detail.value[0] + this.setData({ + result: value, + visible:false + }) + this.triggerEvent('ok', { + value: {prop: this.data.prop,value:value} + }); + }, + onVisibleChange() { + const show = !this.data.visible + if (show) { + this.init() + } + this.setData({ + visible: show + }) + }, + } +}) \ No newline at end of file diff --git a/components/count-picker/index.json b/components/count-picker/index.json new file mode 100644 index 0000000..41a14c2 --- /dev/null +++ b/components/count-picker/index.json @@ -0,0 +1,9 @@ +{ + "component": true, + "styleIsolation": "apply-shared", + "usingComponents": { + "t-popup": "tdesign-miniprogram/popup/popup", + "t-picker": "tdesign-miniprogram/picker/picker", + "t-picker-item": "tdesign-miniprogram/picker-item/picker-item" + } +} \ No newline at end of file diff --git a/components/count-picker/index.wxml b/components/count-picker/index.wxml new file mode 100644 index 0000000..d6c1772 --- /dev/null +++ b/components/count-picker/index.wxml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/components/count-picker/index.wxss b/components/count-picker/index.wxss new file mode 100644 index 0000000..033253e --- /dev/null +++ b/components/count-picker/index.wxss @@ -0,0 +1 @@ +/* components/picker/index.wxss */ \ No newline at end of file diff --git a/pages/index/edit.js b/pages/index/edit.js index bc66bb3..0c4f4ca 100644 --- a/pages/index/edit.js +++ b/pages/index/edit.js @@ -1,4 +1,5 @@ // pages/index/edit.js +const config = require("../../config/config") const { api } = require("../../utils/api") Page({ @@ -40,6 +41,64 @@ Page({ onInput(e){ const value = e.detail.value this.setData({newName:value}) + + }, + updateFarms(e){ + const value = e.detail.value + console.log(value); + const user = wx.getStorageSync('user') + var data = {id: this.data.info.farms.id,plantId: this.data.info.farms.plantId,userId:user.id} + data[value.prop] = value.value + api('/plant/updateFarm','POST',data,'json').then(res => { + if (res.code === 200){ + wx.showToast({ + icon:'success', + title: res.msg, + }) + } + }) + }, + + upload(){ + const _this = this + wx.chooseMedia({ + count: 1, + mediaType: ['image'], + sourceType: ['album', 'camera'], + camera: 'back', + success(res) { + const avatarUrl = res.tempFiles[0].tempFilePath + wx.showLoading({ + title: '请稍后...', + }) + wx.uploadFile({ + filePath: avatarUrl, + name: 'file', + header:{ + 'Authorization': 'Bearer ' + wx.getStorageSync('token'), + }, + url: config.baseUrl + '/oss/upload', + success: res => { + var data = JSON.parse(res.data); + if (data.code === 200) { + const params = {ossIds:[data.data.file.id],plantId: _this.data.info.farms.plantId} + api('/plant/uploadImg','POST',params,'json').then(res => { + if (res.code === 200){ + wx.showToast({ + icon:'success', + title: res.msg, + }) + }else { + wx.showModal({ + content: res.msg + }) + } + }) + } + } + }) + } + }) }, update(){ @@ -48,6 +107,16 @@ Page({ data.name = this.data.newName } console.log(data); + api('/plant/updatePlant','POST',data,'json').then(res => { + if (res.code === 200){ + this.fetchInfo() + } else { + wx.showModal({ + content: res.msg + }) + } + this.setData({showDialog:false}) + }) }, del(){ diff --git a/pages/index/edit.json b/pages/index/edit.json index df1ce0a..7772833 100644 --- a/pages/index/edit.json +++ b/pages/index/edit.json @@ -1,6 +1,7 @@ { "usingComponents": { "t-dialog": "tdesign-miniprogram/dialog/dialog", - "t-cell": "tdesign-miniprogram/cell/cell" + "t-cell": "tdesign-miniprogram/cell/cell", + "picker": "/components/count-picker/index" } } \ No newline at end of file diff --git a/pages/index/edit.wxml b/pages/index/edit.wxml index 55cd806..6348313 100644 --- a/pages/index/edit.wxml +++ b/pages/index/edit.wxml @@ -4,7 +4,16 @@ - + + + + + + + + + + {{info.name}} @@ -22,22 +31,22 @@ - - - - - + + + + + - - - 删除植物 - + + + 删除植物 + - - - + + + \ No newline at end of file diff --git a/pages/index/edit.wxss b/pages/index/edit.wxss index e7f9854..a78f93b 100644 --- a/pages/index/edit.wxss +++ b/pages/index/edit.wxss @@ -3,8 +3,30 @@ page { background-color: #F6F6F6; } -.pic{ +.container { + position: relative; width: 150rpx; height: 150rpx; + + padding: 0; + flex-shrink: 0; + overflow: hidden; /* 防止内容溢出 */ +} + +.bg { + width: 100%; + height: 100%; + background-color: rebeccapurple; border-radius: 16rpx; + z-index: 1; + display: block; /* 必须加,否则 image 不会撑满父容器 */ +} + +.tips { + position: absolute; + width: 100%; + height: 100%; + z-index: 3; + display: block; /* 必须加,否则 image 不会撑满父容器 */ + font-size: 28rpx; } \ No newline at end of file diff --git a/pages/index/info.js b/pages/index/info.js index 678173d..a1b8e58 100644 --- a/pages/index/info.js +++ b/pages/index/info.js @@ -19,7 +19,8 @@ Page({ }, fetchInfo(){ - api('/plant/detail','GET',{id: this.data.id}).then(res => { + const data ={id: this.data.id} + api('/plant/detail','GET',data).then(res => { if (res.code === 200){ const tmp = res.data tmp.farms.suitableFertilizer = tmp.farms.suitableFertilizer.split(',') @@ -27,6 +28,11 @@ Page({ console.log(tmp); } }) + api('/plant/todayFarm',data).then(res => { + if (res.code === 200){ + console.log(res); + } + }) }, goEdit(){ diff --git a/pages/today/index.js b/pages/today/index.js new file mode 100644 index 0000000..475c248 --- /dev/null +++ b/pages/today/index.js @@ -0,0 +1,84 @@ +const { api } = require("../../utils/api") + +// pages/today/index.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + user:null, + list:[], + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + this.init() + }, + + init(){ + const tmp = wx.getStorageSync('user') + this.setData({user:tmp}) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.fetchInfo() + }, + + fetchInfo(){ + api('/plant/todayCare','GET',{userId: this.data.user.id}).then(res => { + if (res.code === 200){ + const data = res.data + if (data !== null){ + this.setData({list:data}) + } + } + }) + }, + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/today/index.json b/pages/today/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/today/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/today/index.wxml b/pages/today/index.wxml new file mode 100644 index 0000000..7522869 --- /dev/null +++ b/pages/today/index.wxml @@ -0,0 +1,13 @@ + + + + + + + + 已完成所有任务 + 今天暂无农事需要完成 + + + + \ No newline at end of file diff --git a/pages/today/index.wxss b/pages/today/index.wxss new file mode 100644 index 0000000..6896fbd --- /dev/null +++ b/pages/today/index.wxss @@ -0,0 +1,9 @@ +/* pages/today/index.wxss */ +.empty { + width: 140rpx; + height: 140rpx; + background-color:#F6F6F6 ; + border-radius: 140rpx; + background-image: url("https://res.catter.cn/pub/2025/09/30/20250930143142508.png"); + background-size: cover; +} \ No newline at end of file diff --git a/static/img/home.png b/static/img/home.png new file mode 100644 index 0000000000000000000000000000000000000000..a9786bd4d0da7b26c70b108a70621eb8d579ea23 GIT binary patch literal 2264 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