|
|
@@ -1,4 +1,4 @@
|
|
|
-import { View, Text, Textarea,Image } from "@tarojs/components";
|
|
|
+import { View, Text, Textarea, Image, Input } from "@tarojs/components";
|
|
|
import Taro, { useRouter } from "@tarojs/taro";
|
|
|
import { useTranslation } from "react-i18next";
|
|
|
import './AddMoment.scss'
|
|
|
@@ -12,6 +12,8 @@ import dayjs from "dayjs";
|
|
|
import TimePicker from "@/features/common/TimePicker";
|
|
|
import { MainColorType } from "@/context/themes/color";
|
|
|
import { createMoment } from "@/services/health";
|
|
|
+import { useSelector } from "react-redux";
|
|
|
+import { getThemeColor } from "@/features/health/hooks/health_hooks";
|
|
|
|
|
|
|
|
|
let useRoute;
|
|
|
@@ -24,14 +26,17 @@ if (process.env.TARO_ENV == 'rn') {
|
|
|
|
|
|
export default function AddMoment() {
|
|
|
const [desc, setDesc] = useState('')
|
|
|
+ const [title, setTitle] = useState('')
|
|
|
const { t } = useTranslation()
|
|
|
const [imgUrl, setImgUrl] = useState('')
|
|
|
const [startTime, setStartTime] = useState(0)
|
|
|
const [endTime, setEndTime] = useState(0)
|
|
|
- const [showPicker,setShowPicker] = useState(false)
|
|
|
- const [durationPicker,setDurationPicker] = useState(false)
|
|
|
+ const [showPicker, setShowPicker] = useState(false)
|
|
|
+ const [durationPicker, setDurationPicker] = useState(false)
|
|
|
+
|
|
|
+ const health = useSelector((state: any) => state.health);
|
|
|
+
|
|
|
|
|
|
-
|
|
|
|
|
|
let router
|
|
|
let navigation;
|
|
|
@@ -46,14 +51,14 @@ export default function AddMoment() {
|
|
|
router = useRouter()
|
|
|
}
|
|
|
|
|
|
- const [moment,setMoment] = useState(JSON.parse(router.params.moment))
|
|
|
+ const [moment, setMoment] = useState(JSON.parse(router.params.moment))
|
|
|
|
|
|
useEffect(() => {
|
|
|
// var obj = JSON.parse(router.params.moment)
|
|
|
// var start = dayjs(obj.target.timestamp).format('HH:mm')
|
|
|
// setStartTime(start)
|
|
|
// setEndTime(obj.target_end_time)
|
|
|
- }, [])
|
|
|
+ }, [])
|
|
|
|
|
|
function getIntervalHoursAndMinutes(time1, time2) {
|
|
|
// 将时间字符串转换为 Date 对象
|
|
|
@@ -76,17 +81,20 @@ export default function AddMoment() {
|
|
|
return { hours, minutes };
|
|
|
}
|
|
|
|
|
|
- // function duration() {
|
|
|
- // const { hours, minutes } = getIntervalHoursAndMinutes(meal.schedule_end_time, meal.schedule_start_time)
|
|
|
- // var time = ''
|
|
|
- // if (hours > 0) {
|
|
|
- // time = hours + '小时'
|
|
|
- // }
|
|
|
- // if (minutes > 0) {
|
|
|
- // time = minutes + '分钟'
|
|
|
- // }
|
|
|
- // return time
|
|
|
- // }
|
|
|
+ function duration() {
|
|
|
+ const seconds = moment.target.duration/1000
|
|
|
+ var hours = Math.floor(seconds/3600)
|
|
|
+ var minutes = Math.floor((seconds%3600)/60)
|
|
|
+ // const { hours, minutes } = getIntervalHoursAndMinutes(meal.schedule_end_time, meal.schedule_start_time)
|
|
|
+ var time = ''
|
|
|
+ if (hours > 0) {
|
|
|
+ time = hours + '小时'
|
|
|
+ }
|
|
|
+ if (minutes > 0) {
|
|
|
+ time = minutes + '分钟'
|
|
|
+ }
|
|
|
+ return time
|
|
|
+ }
|
|
|
|
|
|
function tapTime() {
|
|
|
setShowPicker(true)
|
|
|
@@ -112,34 +120,44 @@ export default function AddMoment() {
|
|
|
}
|
|
|
|
|
|
function save() {
|
|
|
- if (desc.length ==0 && imgUrl.length==0){
|
|
|
+ if (desc.length == 0 && imgUrl.length == 0) {
|
|
|
Taro.showToast({
|
|
|
- icon:'none',
|
|
|
- title:'请输入描述或添加图片'
|
|
|
+ icon: 'none',
|
|
|
+ title: '请输入描述或添加图片'
|
|
|
})
|
|
|
return
|
|
|
}
|
|
|
- var params:any = {
|
|
|
+ var params: any = {
|
|
|
schedule_id: moment.schedule_id,
|
|
|
- title:moment.title,
|
|
|
+ title: moment.title,
|
|
|
description: desc,
|
|
|
start: {
|
|
|
- date:dayjs(moment.target.timestamp).format('YYYYMMDD'),
|
|
|
- timestamp:moment.target.timestamp
|
|
|
+ date: dayjs(moment.target.timestamp).format('YYYYMMDD'),
|
|
|
+ timestamp: moment.target.timestamp
|
|
|
},
|
|
|
+
|
|
|
// real_end_time: meal.target_end_time,
|
|
|
}
|
|
|
|
|
|
- if (imgUrl.length>0){
|
|
|
+ if (title.length>0){
|
|
|
+ params.title = title
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if (imgUrl.length > 0) {
|
|
|
params.media = [{
|
|
|
- url:imgUrl,
|
|
|
+ url: imgUrl,
|
|
|
type: imgUrl.indexOf('mp4') != -1 ? 'video' : 'image',
|
|
|
source: 'album'
|
|
|
}]
|
|
|
}
|
|
|
- if (moment.event_id){
|
|
|
+ if (moment.event_id) {
|
|
|
params.event_id = moment.event_id
|
|
|
}
|
|
|
+ if (moment.target.duration){
|
|
|
+ params.duration = moment.target.duration
|
|
|
+ }
|
|
|
createMoment(params).then(res => {
|
|
|
if (process.env.TARO_ENV == 'weapp') {
|
|
|
Taro.navigateBack();
|
|
|
@@ -230,7 +248,7 @@ export default function AddMoment() {
|
|
|
</Modal>
|
|
|
}
|
|
|
|
|
|
- function pickerContent(){
|
|
|
+ function pickerContent() {
|
|
|
const timestamp = moment.target.timestamp
|
|
|
const strTime = dayjs(timestamp).format('HH:mm')
|
|
|
return <TimePicker time={strTime}
|
|
|
@@ -244,43 +262,66 @@ export default function AddMoment() {
|
|
|
}} />
|
|
|
}
|
|
|
|
|
|
- function confirmPickerTime(e){
|
|
|
+ function confirmPickerTime(e) {
|
|
|
const list = e.split(':')
|
|
|
const date = new Date()
|
|
|
date.setHours(list[0])
|
|
|
date.setMinutes(list[1])
|
|
|
-
|
|
|
+
|
|
|
+ console.log(date)
|
|
|
+
|
|
|
// const duration = meal.target_end_time-meal.target_start_time
|
|
|
// const endDate = date.getTime()+duration;
|
|
|
var data = JSON.parse(JSON.stringify(moment))
|
|
|
- data.target.timestamp = e
|
|
|
+ data.target.timestamp = date.getTime()
|
|
|
// data.schedule_end_time = dayjs(endDate).format('HH:mm')
|
|
|
- data.target_start_time = date.getTime()
|
|
|
+ // data.target_starts_time = date.getTime()
|
|
|
// data.target_end_time = date.getTime()+duration
|
|
|
setMoment(data)
|
|
|
setShowPicker(false)
|
|
|
}
|
|
|
|
|
|
- function durationContent(){
|
|
|
+ function durationContent() {
|
|
|
return <View></View>
|
|
|
}
|
|
|
|
|
|
|
|
|
return <View>
|
|
|
- <View className="header">
|
|
|
- <Text className="time1" onClick={tapTime}>{dayjs(moment.target.timestamp).format('HH:mm')}</Text>
|
|
|
- {/* <Text className="time1" onClick={tapDuration}>{duration()}</Text> */}
|
|
|
- </View>
|
|
|
- <View>
|
|
|
- <Textarea placeholder="简单描述(选填)" className="textarea" onInput={e => {
|
|
|
- setDesc(e.detail.value)
|
|
|
- }} />
|
|
|
- </View>
|
|
|
{
|
|
|
- imgUrl.length>0?<Image src={imgUrl} mode="aspectFill" className="cover" onClick={addImage}/>:<Text onClick={addImage}>添加图片</Text>
|
|
|
+ health.mode != 'FAST' && health.mode != 'SLEEP' &&
|
|
|
+ <View className="addmoment_header">
|
|
|
+ <Text className="header_time" onClick={tapTime} style={{ color: getThemeColor(health.mode) }}>{dayjs(moment.target.timestamp).format('HH:mm')}</Text>
|
|
|
+ {
|
|
|
+ health.mode == 'EAT' && <View className="header_line"/>
|
|
|
+ }
|
|
|
+ {
|
|
|
+ health.mode == 'EAT' && <Text className="header_time" style={{ color: getThemeColor(health.mode) }} onClick={tapDuration}>{duration()}</Text>
|
|
|
+ }
|
|
|
+ </View>
|
|
|
}
|
|
|
-
|
|
|
- <View className="save" onClick={save}>Save</View>
|
|
|
+
|
|
|
+ <View className="form">
|
|
|
+ <View>
|
|
|
+ {
|
|
|
+ (health.mode == 'FAST' || health.mode == 'SLEEP') &&
|
|
|
+ <Input className="input_title" placeholder="标题文字" onInput={(e: any) => {
|
|
|
+ setTitle(e.target.value)
|
|
|
+ }} />
|
|
|
+ }
|
|
|
+ <Textarea placeholder="简单描述(选填)" className="textarea" onInput={e => {
|
|
|
+ setDesc(e.detail.value)
|
|
|
+ }} />
|
|
|
+ </View>
|
|
|
+ {
|
|
|
+ imgUrl.length > 0 ? <Image src={imgUrl} mode="aspectFill" className="cover" onClick={addImage} /> :
|
|
|
+ <View className="cover" onClick={addImage}>
|
|
|
+ <Image src={require('@assets/images/add3.png')} style={{ width: 24, height: 24 }} />
|
|
|
+ </View>
|
|
|
+ }
|
|
|
+
|
|
|
+ </View>
|
|
|
+
|
|
|
+ <View className="save" style={{ backgroundColor: getThemeColor(health.mode) }} onClick={save}>Save</View>
|
|
|
{
|
|
|
showPicker && timeContent()
|
|
|
}
|