Compare commits
5 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
485e2f72c5 | |
|
|
4ba6974cbf | |
|
|
5b62d3ab22 | |
|
|
433bb6c897 | |
|
|
73334b4ee1 |
|
|
@ -1,2 +1 @@
|
|||
node_modules/
|
||||
unpackage/
|
||||
node_modules
|
||||
|
|
|
|||
50
App.vue
|
|
@ -53,6 +53,12 @@
|
|||
handleoginversion() {
|
||||
let that = this
|
||||
that.$model.getLoginVersion({}).then(res => {
|
||||
// let language = res.data.language == "zh" ? 'zh-Hans' : res.data.language
|
||||
let language = "zh"
|
||||
uni.setLocale(language)
|
||||
that.$i18n.locale = language
|
||||
that.$store.commit('changeLocale', language)
|
||||
uni.setStorageSync('language', language)
|
||||
that.$store.dispatch("getHomeConfig") //配置接口信息
|
||||
if (res.code == 0) {
|
||||
that.$tools.handleUserList()
|
||||
|
|
@ -78,6 +84,8 @@
|
|||
uni.showModal({
|
||||
title: '发现新版本',
|
||||
content: '检查到新版本' + res.data.version + ',是否更新?',
|
||||
cancelText: that.$t('btnSancellation'),
|
||||
confirmText: that.$t('btnConfirm'),
|
||||
success: (modalRes) => {
|
||||
if (modalRes.confirm) { //确定更新
|
||||
if (platform === 'android') { //安卓更新
|
||||
|
|
@ -102,33 +110,21 @@
|
|||
// console.error('Error fetching data:', error);
|
||||
});
|
||||
},
|
||||
// 微信小程序更新
|
||||
updataWeiXin() {
|
||||
let that = this
|
||||
const updateManager = uni.getUpdateManager()
|
||||
// 请求完新版本信息的回调
|
||||
updateManager.onCheckForUpdate(function(res) {
|
||||
// console.log("是否有新版本", res.hasUpdate)
|
||||
})
|
||||
updateManager.onUpdateReady(function() {
|
||||
uni.showModal({
|
||||
title: '更新提示',
|
||||
content: '新版本已经准备好,是否重启应用?',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
|
||||
updateManager.applyUpdate()
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
updateManager.onUpdateFailed(function() {
|
||||
uni.showModal({
|
||||
title: '新版本更新失败',
|
||||
content: '请退出并移除小程序,重新打开...',
|
||||
})
|
||||
})
|
||||
}
|
||||
// handleTabBarItem() {
|
||||
// let that = this
|
||||
// uni.setTabBarItem({
|
||||
// index: 0,
|
||||
// text: that.$t('titleHome')
|
||||
// })
|
||||
// uni.setTabBarItem({
|
||||
// index: 1,
|
||||
// text: that.$t('titleCount')
|
||||
// })
|
||||
// uni.setTabBarItem({
|
||||
// index: 2,
|
||||
// text: that.$t('titleMe')
|
||||
// })
|
||||
// }
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
<!-- 早午晚餐 -->
|
||||
<view class="everyDay">
|
||||
<view class="title">
|
||||
<view><text class="quan"></text>卡路里分析</view>
|
||||
<view><text class="quan"></text>{{$t("countCalorieAnalysis")}}</view>
|
||||
</view>
|
||||
<div class="chart-wrap">
|
||||
<qiun-data-charts type="ring" :opts="opts" :chartData="chartData" :canvas2d="true" canvasId="everyDay01"/>
|
||||
|
|
@ -23,15 +23,15 @@
|
|||
<!--营养元素分析 -->
|
||||
<view class="everyDay">
|
||||
<view class="title">
|
||||
<view><text class="quan"></text>营养元素能量占比</view>
|
||||
<view><text class="quan"></text>{{$t("countNutrientElementEnergyProportion")}}</view>
|
||||
</view>
|
||||
<div class="chart-wrap">
|
||||
<qiun-data-charts type="ring" :opts="opts2" :chartData="chartData2" :canvas2d="true" canvasId="everyDay02"/>
|
||||
</div>
|
||||
<view class="foodtools">
|
||||
<view class="top">
|
||||
<view>营养分类</view>
|
||||
<view>摄入</view>
|
||||
<view>{{$t("countNutritionClassification")}}</view>
|
||||
<view>{{$t("countIntake")}}</view>
|
||||
</view>
|
||||
<view class="type">
|
||||
<view class="name">
|
||||
|
|
@ -66,7 +66,7 @@
|
|||
<!--营养元素排行榜 -->
|
||||
<view class="everyDay">
|
||||
<view class="title">
|
||||
<view><text class="quan"></text>营养元素排行榜</view>
|
||||
<view><text class="quan"></text>{{$t("countNutritionElementRankingList")}}</view>
|
||||
</view>
|
||||
<view class="foodtools rank_list">
|
||||
<view class="topname">{{details.carbohydrate.name}}</view>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
<!-- 成分统计 -->
|
||||
<view class="everyDay">
|
||||
<view class="title">
|
||||
<view><text class="quan"></text>成分统计</view>
|
||||
<view><text class="quan"></text>{{$t('countComponentStatistics')}}</view>
|
||||
</view>
|
||||
<view class="progress">
|
||||
<div class="chart-wrap">
|
||||
|
|
@ -36,7 +36,7 @@
|
|||
<view class="foodtools">
|
||||
<view class="type">
|
||||
<view class="title">
|
||||
<view><text class="quan"></text>食物类型</view>
|
||||
<view><text class="quan"></text>{{$t('countFoodTypes')}}</view>
|
||||
</view>
|
||||
<view class="list" v-if="info.list.length">
|
||||
<uni-swipe-action>
|
||||
|
|
@ -54,13 +54,13 @@
|
|||
</view>
|
||||
<view v-else class="nolist">
|
||||
<image src="/static/none.png"></image>
|
||||
<view>暂无食物</view>
|
||||
<view>{{$t('countNoFood')}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 添加食物 -->
|
||||
<view class="add" @click="handleAddFood()">
|
||||
<text>+</text>添加食物
|
||||
<text>+</text>{{$t('countAddFood')}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -74,11 +74,11 @@
|
|||
<image :src="activeFoodDetail.pic_url" mode="aspectFill"></image>
|
||||
<view class="info">
|
||||
<view class="name">{{activeFoodDetail.name}}</view>
|
||||
<view class="kcal">{{activeFoodDetail.val}}千卡</view>
|
||||
<view class="kcal">{{activeFoodDetail.val}}kcal</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="foodContent">
|
||||
<view class="title">热量和营养</view>
|
||||
<view class="title">{{$t('CaloriesAndnutrients')}}</view>
|
||||
<view class="progress">
|
||||
<div class="chart-wrap">
|
||||
<qiun-data-charts type="ring" :opts="opts2"
|
||||
|
|
@ -94,8 +94,8 @@
|
|||
</view>
|
||||
</view>
|
||||
<view class="tips">
|
||||
<text>营养素</text>
|
||||
<text>{{activeFoodDetail.weight}}含量</text>
|
||||
<text>{{$t('Nutrients')}}</text>
|
||||
<text>{{activeFoodDetail.weight}}{{$t('Content')}}</text>
|
||||
</view>
|
||||
<view class="foodDetailList">
|
||||
<view class="foodDetailItem" v-for="(item,index) in activeFoodDetail.nutrients_list"
|
||||
|
|
@ -140,7 +140,7 @@
|
|||
drawerVisible: false,
|
||||
chartVisible: false, // 单独控制图表显示
|
||||
actionOptions: [{
|
||||
text: '删除',
|
||||
text: this.$t('btnDelete'),
|
||||
style: {
|
||||
backgroundColor: '#dd524d',
|
||||
borderRadius: '10rpx'
|
||||
|
|
@ -169,6 +169,9 @@
|
|||
let that = this
|
||||
that.index = options.index
|
||||
that.bgimage = that.foodItem[options.index].icon_bg
|
||||
uni.setNavigationBarTitle({
|
||||
title: this.$t('titleEveryMeal')
|
||||
})
|
||||
that.handleInfo()
|
||||
},
|
||||
watch: {
|
||||
|
|
@ -243,7 +246,7 @@
|
|||
delAcitionItem(item) {
|
||||
let that = this
|
||||
uni.showModal({
|
||||
content: `是否删除[${item.name}]?`,
|
||||
content: that.$t("WhetherTodelete") + item.name,
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
this.$model.delCEatAction({
|
||||
|
|
|
|||
|
|
@ -13,11 +13,11 @@
|
|||
</view>
|
||||
<view class="serach-box">
|
||||
<view class="searchInput">
|
||||
<input placeholder="请输入..." class="city-serach-input" v-model="search_value" />
|
||||
<input :placeholder="$t('verifyRecord')" class="city-serach-input" v-model="search_value" />
|
||||
<icon v-if="search_value" class="iconfont icon-error" @click="handlecolse" size="30"></icon>
|
||||
</view>
|
||||
<view class="searchBtn">
|
||||
<view @click="handleSerach">搜索</view>
|
||||
<view @click="handleSerach">{{$t("Search")}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
<view class="content-box" v-if="!search_list.length">
|
||||
<view v-if="history_food.length" class="search-history">
|
||||
<view class="title">
|
||||
<view class="quan mr-5"></view>历史搜索
|
||||
<view class="quan mr-5"></view>{{$t("HistoricalSearch")}}
|
||||
</view>
|
||||
<view class="button-container" @click="showAll =! showAll" v-if="history_food.length>10">
|
||||
<image :src="showAll?'/static/arrow-up.png':'/static/arrow-down.png'"></image>
|
||||
|
|
@ -40,7 +40,7 @@
|
|||
</view>
|
||||
<view class="popular-container">
|
||||
<view class="title">
|
||||
<view class="quan mr-5"></view>猜你想搜
|
||||
<view class="quan mr-5"></view>{{$t("wantSearch")}}
|
||||
</view>
|
||||
<view class="popular-food-item" v-for="(ite,index) in popular_food" :key="index">
|
||||
<view class="food-title">{{ite.title}}</view>
|
||||
|
|
@ -64,17 +64,6 @@
|
|||
<image src="/static/arrow-down.png"></image>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view class="mic-icon" @touchstart="onVoiceTouchStart" @touchend="onVoiceTouchEnd"
|
||||
@touchcancel="cancelRecording">
|
||||
<uni-icons type="mic-filled" size="20" color="#fff"></uni-icons>
|
||||
语音搜索
|
||||
</view>
|
||||
<!-- <view class="mic-icon mic-icon2" @click="scanCode">
|
||||
<uni-icons type="scan" size="20" color="#fff"></uni-icons>
|
||||
扫一扫
|
||||
</view> -->
|
||||
<!-- #endif -->
|
||||
</view>
|
||||
<!-- 搜索列表 -->
|
||||
<view class="search_list" v-if="search_list.length">
|
||||
|
|
@ -85,7 +74,7 @@
|
|||
<text>100g/{{ite.kcal}}kcal</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="endtext" v-if="!lastPage || page >= lastPage">—— 到底了,看看别的吧 ——</view>
|
||||
<view class="endtext" v-if="!lastPage || page >= lastPage">—— {{$t("msgBottom")}} ——</view>
|
||||
</view>
|
||||
<!-- 购物车弹框 -->
|
||||
<view class="wrapper activeList" v-if="isShop">
|
||||
|
|
@ -101,13 +90,13 @@
|
|||
canvasId="search02" />
|
||||
</view>
|
||||
<view class="center">
|
||||
摄入
|
||||
{{$t("countIntake")}}
|
||||
<text>{{foodInfo[0].today_intake}}</text>
|
||||
<view class="unit">Kcal</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="mubiao">
|
||||
目标:<text>{{foodInfo[0].suggestion}}</text>kcal
|
||||
{{$t("titleBody")}}:<text>{{foodInfo[0].suggestion}}</text>kcal
|
||||
</view>
|
||||
</view>
|
||||
<view class="right">
|
||||
|
|
@ -140,8 +129,8 @@
|
|||
</view>
|
||||
</view>
|
||||
<view class="box_list_item" v-if="ActiveList.length">
|
||||
<view class="length">共<text
|
||||
class="red">{{ActiveList.filter(ite => ite.meals_type == foodName).length}}</text>条记录
|
||||
<view class="length">{{$t("total")}}<text
|
||||
class="red">{{ActiveList.filter(ite => ite.meals_type == foodName).length}}</text>{{$t("records")}}
|
||||
</view>
|
||||
<view class="item" v-for="(ite,ind) in ActiveList" :key="ind"
|
||||
v-if="ite.meals_type==foodName">
|
||||
|
|
@ -158,7 +147,7 @@
|
|||
</view>
|
||||
<view v-else class="nolist list">
|
||||
<icon class="iconfont icon-wancan"></icon>
|
||||
<text>还没有添加食物</text>
|
||||
<text>{{$t('countNoFood')}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -176,7 +165,7 @@
|
|||
<image :src="activeType.pic_url" mode="aspectFill"></image>
|
||||
<view class="info">
|
||||
<view class="name">{{activeType.name}}</view>
|
||||
<view class="kcal">{{activeType.kcal}}千卡/100克</view>
|
||||
<view class="kcal">{{activeType.kcal}}kcal/100克</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -203,8 +192,8 @@
|
|||
<view class="foodDetail">
|
||||
<view class="foodContent">
|
||||
<view class="tips">
|
||||
<text>营养素</text>
|
||||
<text>{{(activeType.weight).toFixed(1)}}克含量</text>
|
||||
<text>{{$t('Nutrients')}}</text>
|
||||
<text>{{(activeType.weight).toFixed(1)}}g{{$t('Content')}}</text>
|
||||
</view>
|
||||
<view class="foodDetailList">
|
||||
<view class="foodDetailItem" v-for="(item,index) in activeType.nutrients_list"
|
||||
|
|
@ -221,30 +210,6 @@
|
|||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 语音弹框 -->
|
||||
<view class="wrapper" v-if="showAutoSearchDlg">
|
||||
<view class="auto-search-dialog">
|
||||
<view class="auto-search-inner">
|
||||
<view class="voice-wave">
|
||||
<view class="wave-bar"></view>
|
||||
<view class="wave-bar"></view>
|
||||
<view class="wave-bar"></view>
|
||||
<view class="wave-bar"></view>
|
||||
<view class="wave-bar"></view>
|
||||
<view class="wave-bar"></view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- s扫一扫弹框 -->
|
||||
<view class="wrapper wrapperScan" v-if="showScanCodeDlg">
|
||||
<view class="auto-search-dialog" @click="showScanCodeDlg = false">
|
||||
<view class="auto-search-inner">
|
||||
<text>提示</text>
|
||||
{{ScanCodeMsg}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
|
@ -252,9 +217,6 @@
|
|||
import {
|
||||
mapState
|
||||
} from "vuex";
|
||||
// #ifdef MP-WEIXIN
|
||||
const plugin = requirePlugin("WechatSI")
|
||||
// #endif
|
||||
import blueTooth from "@/components/foodIndex/bluetooth_food.vue"
|
||||
import qiunDataCharts from '@/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue';
|
||||
export default {
|
||||
|
|
@ -305,6 +267,9 @@
|
|||
that.handleList()
|
||||
that.showScanCodeDlg = false
|
||||
that.time = that.countFoodInfo.date
|
||||
uni.setNavigationBarTitle({
|
||||
title: this.$t('titleCountSearch')
|
||||
})
|
||||
that.foodName = options.name
|
||||
},
|
||||
watch: {
|
||||
|
|
@ -318,25 +283,11 @@
|
|||
deep: true
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
let that = this
|
||||
// #ifdef MP-WEIXIN
|
||||
that.voiceManager = plugin.getRecordRecognitionManager()
|
||||
that.voiceManager.onStop = function(res) {
|
||||
that.search_value = res.result.replace('。', '')
|
||||
that.handleSerach()
|
||||
}
|
||||
that.voiceManager.onError = function(res) {
|
||||
console.error("error msg", res.retcode)
|
||||
}
|
||||
that.voiceManager.stop()
|
||||
// #endif
|
||||
},
|
||||
onReachBottom() {
|
||||
let that = this
|
||||
if (!this.lastPage || this.page >= this.lastPage) {
|
||||
uni.showToast({
|
||||
title: '没有更多数据!',
|
||||
title: this.$t('noMoreData'),
|
||||
icon: 'none'
|
||||
})
|
||||
return
|
||||
|
|
@ -356,35 +307,6 @@
|
|||
}
|
||||
})
|
||||
},
|
||||
scanCode() {
|
||||
let that = this
|
||||
uni.scanCode({
|
||||
onlyFromCamera: true,
|
||||
success: function(res) {
|
||||
console.log('条码类型:' + res.scanType);
|
||||
console.log('条码内容:' + res.result);
|
||||
uni.showLoading({
|
||||
title: '搜索中'
|
||||
});
|
||||
that.$model.getPhotoSearch({
|
||||
barcode: res.result,
|
||||
}).then(res => {
|
||||
uni.hideLoading();
|
||||
console.log("1111111111111", res)
|
||||
if (res.code != 0) {
|
||||
that.ScanCodeMsg = res.msg
|
||||
that.showScanCodeDlg = true
|
||||
return
|
||||
}
|
||||
that.handleDetail(res.data)
|
||||
})
|
||||
},
|
||||
fail: res => {
|
||||
that.$api.msg("您已取消操作")
|
||||
return
|
||||
}
|
||||
});
|
||||
},
|
||||
// 购物车早午晚餐切换
|
||||
handleToggle(name) {
|
||||
this.search_value = ""
|
||||
|
|
@ -489,7 +411,7 @@
|
|||
let that = this
|
||||
that.search_list = []
|
||||
if (that.search_value == "") {
|
||||
that.$tools.msg("输入关键字后搜索")
|
||||
that.$tools.msg(this.$t('searchkeywords'))
|
||||
return
|
||||
}
|
||||
that.$model.getFoodSearch({
|
||||
|
|
@ -527,7 +449,7 @@
|
|||
handledelactive(ite) {
|
||||
let that = this
|
||||
uni.showModal({
|
||||
content: `是否删除[${ite.name}]?`,
|
||||
content: this.$t('WhetherTodelete') + ite.name,
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
this.$model.delCEatAction({
|
||||
|
|
@ -572,9 +494,9 @@
|
|||
},
|
||||
unitConversion(unit) {
|
||||
if (unit == 'kcal') {
|
||||
return '千卡'
|
||||
return 'kcal'
|
||||
} else if (unit == 'g') {
|
||||
return '克'
|
||||
return 'g'
|
||||
}
|
||||
return unit
|
||||
},
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<!-- -->
|
||||
<view class="kcal">
|
||||
<view class="set">
|
||||
<input type="digit" v-model="weight" placeholder="请输入" :focus="focus" @blur="handleBlur">
|
||||
<input type="digit" v-model="weight" :placeholder="$t('verifyRecord')" :focus="focus" @blur="handleBlur">
|
||||
<uni-icons v-if="weight!=''" type="close" size="24" class="uni-iocns" color="#999"
|
||||
@click="handleclear"></uni-icons>
|
||||
<view class="num">
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
<!-- -->
|
||||
<view class="kcal">
|
||||
<view class="text">
|
||||
营养占比
|
||||
{{$t('countNutritionalProportion')}}
|
||||
</view>
|
||||
<view class="slider" v-if="isShow">
|
||||
<llt-slider-range :model-value="rangeValue" @change="handleChange" />
|
||||
|
|
@ -36,7 +36,7 @@
|
|||
<text>{{ite}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="subbtn" @click="handleEditKcal">保存</view>
|
||||
<view class="subbtn" @click="handleEditKcal">{{$t('btnSubmit')}}</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
|
@ -133,7 +133,7 @@
|
|||
handleEditKcal() {
|
||||
let that = this
|
||||
if (that.weight == '' || Number(that.weight) <= 0) {
|
||||
that.$tools.msg("请输入卡路里")
|
||||
that.$tools.msg(that.$t('verifyCalorie'))
|
||||
return
|
||||
}
|
||||
that.$model.getCountSetUserKcal({
|
||||
|
|
@ -147,7 +147,7 @@
|
|||
fat_p: that.fat_p,
|
||||
}).then(res => {
|
||||
if (res.code == 0) {
|
||||
that.$tools.msg("设置成功")
|
||||
that.$tools.msg(that.$t('msgSetSuccess'))
|
||||
that.$store.dispatch('getUserInfo', {
|
||||
aud_id: that.user.aud_id
|
||||
})
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
<view class="list" v-for="(item,ind) in infoList" :key="ind" @click="handleDetail(item)">
|
||||
<view class="time">{{item.time}}</view>
|
||||
<view class="kcal">
|
||||
<view>摄入卡路里<text>{{item.val}}</text>{{item.unit}}</view>
|
||||
<view>{{$t('countIntake')}}{{$t('kcal')}}<text>{{item.val}}</text>{{item.unit}}</view>
|
||||
<view class="status">
|
||||
<text class="quan0" :style="'background:'+item.color"></text>
|
||||
{{item.describe}}
|
||||
|
|
@ -13,10 +13,10 @@
|
|||
<uni-icons type="forward" size="20" color="#666"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
<view class="endtext" v-if="!lastPage || page >= lastPage">—— 到底了,看看别的吧 ——</view>
|
||||
<view class="endtext" v-if="!lastPage || page >= lastPage">—— {{$t('msgBottom')}} ——</view>
|
||||
<view v-if="!infoList.length" class="nolist">
|
||||
<icon class="iconfont icon-wancan"></icon>
|
||||
<text>还没有记录哦</text>
|
||||
<text>{{$t('msgNoMoreData')}}</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
|
@ -46,6 +46,9 @@
|
|||
},
|
||||
onLoad() {
|
||||
let that = this
|
||||
uni.setNavigationBarTitle({
|
||||
title: that.$t('titleHistory')
|
||||
})
|
||||
that.page = 1
|
||||
that.handleList()
|
||||
},
|
||||
|
|
@ -53,7 +56,7 @@
|
|||
let that = this
|
||||
if (!this.lastPage || this.page >= this.lastPage) {
|
||||
uni.showToast({
|
||||
title: '没有更多数据!',
|
||||
title: that.$t('noMoreData'),
|
||||
icon: 'none'
|
||||
})
|
||||
return
|
||||
|
|
|
|||
|
|
@ -2,78 +2,74 @@
|
|||
<view class="content">
|
||||
<view class="bg"></view>
|
||||
<view class="top">
|
||||
<view class="language">
|
||||
<picker mode="selector" @change="changeClickLanguage" :range="languageList" range-key="name"
|
||||
:value="levelInd">
|
||||
<view>
|
||||
{{$t('titleLanguage')}}
|
||||
<icon class="iconfont icon-arrow-down"></icon>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="logo">
|
||||
<image src="../../static/logo2.png"></image>
|
||||
<text>Reedaw</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="login box_shadow">
|
||||
<view class="title">登录</view>
|
||||
<view class="title">{{$t("titleLogin")}}</view>
|
||||
<view class="toggle cblue" @click="handleToggle">
|
||||
切换登录
|
||||
{{$t("titleToggleLogin")}}
|
||||
</view>
|
||||
<view class="editem">
|
||||
<view class="item">
|
||||
<view class="text">手机号/邮箱</view>
|
||||
<view class="text">{{$t("infoEmail")}}</view>
|
||||
<view class="input">
|
||||
<input v-model="phone" />
|
||||
</view>
|
||||
</view>
|
||||
<!-- 验证码登录 -->
|
||||
<view class="item " v-if="isCode">
|
||||
<view class="text">验证码</view>
|
||||
<view class="text">{{$t("titleCode")}}</view>
|
||||
<view class="input yanzhengma">
|
||||
<input class="uni-input" v-model="code" />
|
||||
<button class="code" type="none" @click="handleCode" v-model="code"
|
||||
:disabled="disabled">{{second<60 ? second+'S后重发':'获取验证码'}}
|
||||
:disabled="disabled">{{second<60 ? second+$t("titleSendCodeRetry"):$t("titleSendCode")}}
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 密码登录 -->
|
||||
<view class="item " v-else>
|
||||
<view class="text">密码</view>
|
||||
<view class="text">{{$t("titlePassword")}}</view>
|
||||
<view class="input">
|
||||
<input class="uni-input" v-model="password" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="forget " v-if="!isCode">
|
||||
<text @click="handlePassword('forgetPassword')">忘记密码?</text>
|
||||
<text @click="handlePassword('forgetPassword')">{{$t("titleForgotPassword")}}</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="xieyi">
|
||||
<checkbox-group @change="checkboxChange" class="group">
|
||||
<label>
|
||||
<checkbox :value="1" style="transform:scale(0.7)" />阅读并同意
|
||||
<!-- <text @click.stop @click="handleUserXieyi" class="blue">《用户协议》</text>和 -->
|
||||
<text @click.stop @click="handlexieyi" class="blue">《隐私协议》</text>
|
||||
<checkbox :value="1" style="transform:scale(0.7)" />{{$t("titleAgreementText")}}
|
||||
<text @click.stop @click="handlexieyi" class="blue">《{{$t("titleAgreementContntText")}}》</text>
|
||||
</label>
|
||||
</checkbox-group>
|
||||
</view>
|
||||
<view class="btnlogin" @click="handleTelLogin">登录</view>
|
||||
<view class="btnlogin" @click="handleTelLogin">{{$t("titleLogin")}}</view>
|
||||
<view class="btngroup" @click="handlePassword('register')">
|
||||
<text>注册</text>
|
||||
<text>{{$t("titleRegister")}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view class="wxbtn">
|
||||
<button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber" v-if="value==1">
|
||||
<view>
|
||||
<image src="../../static/phone.png"></image>
|
||||
</view>
|
||||
<text>手机号快捷登录</text>
|
||||
</button>
|
||||
<button v-else @click="handleIsTel">
|
||||
<view>
|
||||
<image src="../../static/phone.png"></image>
|
||||
</view>
|
||||
<text>手机号快捷登录</text>
|
||||
</button>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mapState
|
||||
} from "vuex";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
|
@ -87,49 +83,88 @@
|
|||
loginCode: ""
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapState(["user", 'configInfo', "setLocale"]),
|
||||
languageList() {
|
||||
let that = this
|
||||
let languageList = this.configInfo.language_arr
|
||||
that.levelInd = languageList.findIndex(ite => ite.key == this.setLocale)
|
||||
return languageList
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
// #ifdef MP-WEIXIN
|
||||
this.login()
|
||||
// #endif
|
||||
let that = this
|
||||
uni.setNavigationBarTitle({
|
||||
title: that.$t('titleLogin')
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
// 勾选协议
|
||||
checkboxChange(e) {
|
||||
this.value = e.detail.value.length ? e.detail.value[0] : "0"
|
||||
},
|
||||
// 语言切换
|
||||
changeClickLanguage(e) {
|
||||
let that = this
|
||||
let key = that.languageList[e.target.value].key
|
||||
let val = that.languageList[e.target.value].val
|
||||
that.levelInd = e.target.value
|
||||
that.$model.getSetLanguage({
|
||||
language: val,
|
||||
}).then(res => {
|
||||
that.$i18n.locale = key
|
||||
uni.setStorageSync('language', key)
|
||||
that.$store.commit('changeLocale', key)
|
||||
that.$store.dispatch("getHomeConfig")
|
||||
that.$tools.handleUserList()
|
||||
that.handleTabBarItem()
|
||||
})
|
||||
},
|
||||
handleTabBarItem() {
|
||||
let that = this
|
||||
uni.setTabBarItem({
|
||||
index: 0,
|
||||
text: that.$t('titleHome')
|
||||
})
|
||||
uni.setTabBarItem({
|
||||
index: 1,
|
||||
text: that.$t('titleCount')
|
||||
})
|
||||
uni.setTabBarItem({
|
||||
index: 2,
|
||||
text: that.$t('titleMe')
|
||||
})
|
||||
},
|
||||
// 登录、
|
||||
handleTelLogin() {
|
||||
let that = this
|
||||
let phoneType = that.phone.indexOf("@") !== -1
|
||||
if (that.value == 0) {
|
||||
that.$tools.msg("请先确认勾选协议")
|
||||
that.$tools.msg(that.$t("verifyAgreement"))
|
||||
return
|
||||
}
|
||||
if (!phoneType && !(/^1[3456789]\d{9}$/.test(that.phone))) {
|
||||
that.$tools.msg("请输入正确的手机号")
|
||||
return
|
||||
}
|
||||
if (phoneType && !(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(that.phone))) {
|
||||
that.$tools.msg("请输入正确的邮箱")
|
||||
if (!(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(that.phone))) {
|
||||
that.$tools.msg(that.$t("verifyEmailCorrect"))
|
||||
return
|
||||
}
|
||||
if (that.isCode && !that.code) {
|
||||
that.$tools.msg("请输入验证码")
|
||||
that.$tools.msg(that.$t("verifyCode"))
|
||||
return
|
||||
}
|
||||
if (!that.isCode && !that.password) {
|
||||
that.$tools.msg('请输入正确密码')
|
||||
that.$tools.msg(that.$t("verifyPassword"))
|
||||
return
|
||||
}
|
||||
let val = that.languageList[that.levelInd].val
|
||||
this.$model.getonlogin({
|
||||
data: that.phone,
|
||||
validate_data: that.isCode ? that.code : that.password,
|
||||
validate_type: that.isCode ? 'code' : 'password'
|
||||
validate_type: that.isCode ? 'code' : 'password',
|
||||
language: val
|
||||
}).then(res => {
|
||||
console.log("data", res.data)
|
||||
that.$tools.msg(res.msg)
|
||||
if (res.code != 0) return
|
||||
that.$tools.msg("登录成功")
|
||||
that.$tools.msg(that.$t("msgLoginSuccess"))
|
||||
uni.setStorageSync('token', res.data.token)
|
||||
uni.setStorageSync('aan_id', res.data.aan_id)
|
||||
that.$tools.handleUserList()
|
||||
|
|
@ -143,13 +178,8 @@
|
|||
// 获取验证码
|
||||
handleCode() {
|
||||
let that = this
|
||||
let phoneType = that.phone.indexOf("@") !== -1
|
||||
if (!phoneType && !(/^1[3456789]\d{9}$/.test(that.phone))) {
|
||||
that.$tools.msg("请输入正确的手机号")
|
||||
return
|
||||
}
|
||||
if (phoneType && !(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(that.phone))) {
|
||||
that.$tools.msg("请输入正确的邮箱")
|
||||
if (!(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(that.phone))) {
|
||||
that.$tools.msg(that.$t("verifyEmailCorrect"))
|
||||
return
|
||||
}
|
||||
//
|
||||
|
|
@ -176,45 +206,10 @@
|
|||
//
|
||||
handleIsTel() {
|
||||
if (this.value == 0) {
|
||||
this.$tools.msg("请先确认勾选协议")
|
||||
this.$tools.msg(that.$t("verifyAgreement"))
|
||||
return
|
||||
}
|
||||
},
|
||||
// 获取code
|
||||
login() {
|
||||
let that = this
|
||||
uni.login({
|
||||
success(res) {
|
||||
if (res.code) {
|
||||
if (res.errMsg = "login:ok") {
|
||||
that.loginCode = res.code
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// 授权
|
||||
getPhoneNumber(res) {
|
||||
const that = this
|
||||
if (res.detail.errMsg == 'getPhoneNumber:ok') {
|
||||
this.$model.getRegisterPhone({
|
||||
code: that.loginCode,
|
||||
encryptedData: res.detail.encryptedData,
|
||||
iv: res.detail.iv,
|
||||
}).then(res => {
|
||||
if (res.code != 0) return
|
||||
that.value = 1
|
||||
uni.setStorageSync('token', res.data.token)
|
||||
uni.setStorageSync('aan_id', res.data.aan_id)
|
||||
that.$tools.handleUserList()
|
||||
setTimeout(function() {
|
||||
uni.reLaunch({
|
||||
url: "/pages/index/index"
|
||||
})
|
||||
}, 1000)
|
||||
})
|
||||
}
|
||||
},
|
||||
handleToggle() {
|
||||
this.phone = ""
|
||||
this.isCode = !this.isCode
|
||||
|
|
|
|||
|
|
@ -8,15 +8,15 @@
|
|||
</view>
|
||||
<view class="list">
|
||||
<view class="item" @click="handleVersion">
|
||||
<view class="left">版本更新</view>
|
||||
<view class="left">{{$t("titleVersionUpdate")}}</view>
|
||||
<view class="right">
|
||||
<text class="new" v-if="version==-1">新版本{{phoneInfo.versionUrl.version}}</text>
|
||||
<text class="new" v-if="version==-1">{{$t("titleNewVersion")}}{{phoneInfo.versionUrl.version}}</text>
|
||||
<uni-icons type="right"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<a href="https://tc.pcxbc.com/reedaw/privacy_policy" class="href">
|
||||
<text class="left">隐私协议</text>
|
||||
<text class="left">{{$t("titleAgreementContntText")}}</text>
|
||||
<uni-icons type="right"></uni-icons>
|
||||
</a>
|
||||
</view>
|
||||
|
|
@ -63,7 +63,7 @@
|
|||
if (that.version == -1) {
|
||||
if (that.phoneInfo.platform === 'android') {
|
||||
uni.setStorageSync('VERSION', that.phoneInfo.versionUrl.version)
|
||||
let showLoading = plus.nativeUI.showWaiting('正在下载')
|
||||
let showLoading = plus.nativeUI.showWaiting(that.$t("msgDownloading"))
|
||||
dtask = uni.downloadFile({
|
||||
url: that.phoneInfo.versionUrl.url,
|
||||
success: (downloadRes) => {
|
||||
|
|
@ -84,13 +84,13 @@
|
|||
},
|
||||
fail: () => {
|
||||
uni.showToast({
|
||||
title: '升级失败',
|
||||
title: that.$t("msgUpgradeFail"),
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
});
|
||||
dtask.onProgressUpdate((res) => {
|
||||
showLoading.setTitle(" 正在下载" + res.progress + "% ");
|
||||
showLoading.setTitle(that.$t("msgDownloading") + res.progress + "% ");
|
||||
});
|
||||
} else {
|
||||
plus.runtime.launchApplication({
|
||||
|
|
@ -98,7 +98,7 @@
|
|||
})
|
||||
}
|
||||
} else {
|
||||
that.$tools.msg("已经是最新版本了!")
|
||||
that.$tools.msg(that.$t("msgLatestVersion"))
|
||||
}
|
||||
},
|
||||
// 版本信息
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<view class="common">
|
||||
<view class="add" @click="handleAddUser">
|
||||
<icon class="iconfont icon-tianjia"></icon>添加成员
|
||||
<icon class="iconfont icon-tianjia"></icon>{{$t('titleManageAdd')}}
|
||||
</view>
|
||||
<view class="box" v-if="familayList.lenght!=0">
|
||||
<view class="list">
|
||||
|
|
@ -16,13 +16,13 @@
|
|||
{{item.nickname}}
|
||||
</view>
|
||||
<view class="title2">
|
||||
<text>{{item.gender==1?'男':'女'}}</text>
|
||||
<text>{{item.age}}岁</text>
|
||||
<text>{{item.gender==1?$t('infoMan'):$t('infoWoman')}}</text>
|
||||
<text>{{item.age}}{{$t('infoAgeunit')}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="right" @click.stop>
|
||||
<view class="blueBtn" @click="editorInfo(item)">编辑</view>
|
||||
<view class="blueBtn" @click="editorInfo(item)">{{$t('btnEdit')}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</uni-swipe-action-item>
|
||||
|
|
@ -30,7 +30,7 @@
|
|||
</view>
|
||||
</view>
|
||||
<view v-else>
|
||||
没有数据了!
|
||||
{{$t("noMoreData")}}
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
|
@ -61,20 +61,22 @@
|
|||
let that = this
|
||||
that.id = that.familayList[ind].id
|
||||
uni.showModal({
|
||||
title: '友情提示',
|
||||
content: '确定删除该成员吗',
|
||||
title: that.$t('msgTitle'),
|
||||
content: that.$t("verifyDeleteUser"),
|
||||
cancelText: that.$t('btnSancellation'),
|
||||
confirmText: that.$t('btnConfirm'),
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
that.$model.getDelUser({
|
||||
aud_id: that.id,
|
||||
}).then(res => {
|
||||
if (res.code != 0) return
|
||||
that.$tools.msg("删除成功!");
|
||||
that.$tools.msg(that.$t('msgDelete'));
|
||||
that.familayList.splice(ind, 1)
|
||||
that.handleUserList()
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
that.$tools.msg("您已取消删除!");
|
||||
that.$tools.msg(that.$t('msgCancel'));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -8,66 +8,66 @@
|
|||
</view>
|
||||
</view>
|
||||
<view class="lan border-bottom">
|
||||
<view class="left">姓名</view>
|
||||
<view class="left">{{$t('infoNickname')}}</view>
|
||||
<view class="right">
|
||||
<input name="name" type="text" v-model="memInfo.nickname" placeholder="请输入姓名" />
|
||||
<input name="name" type="text" v-model="memInfo.nickname" :placeholder="$t('verifyRecord')" />
|
||||
<uni-icons type="clear" color="#999" v-if="memInfo.nickname" @click="memInfo.nickname=''"
|
||||
size="20"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
<view class="lan border-bottom">
|
||||
<view class="left">性别</view>
|
||||
<view class="left">{{$t('infoGender')}}</view>
|
||||
<view class="right">
|
||||
<view class="radio">
|
||||
<uni-icons :type="memInfo.gender==1?'checkbox-filled':'circle'" @click="memInfo.gender=1"
|
||||
size="24" :color="memInfo.gender==1?'#fea606':'#dfdfdf'"></uni-icons>男
|
||||
size="24" :color="memInfo.gender==1?'#fea606':'#dfdfdf'"></uni-icons>{{$t('infoMan')}}
|
||||
</view>
|
||||
<view class="radio ml-15">
|
||||
<uni-icons :type="memInfo.gender==2?'checkbox-filled':'circle'" @click="memInfo.gender=2"
|
||||
size="24" :color="memInfo.gender==2?'#fea606':'#dfdfdf'"></uni-icons>女
|
||||
size="24" :color="memInfo.gender==2?'#fea606':'#dfdfdf'"></uni-icons>{{$t('infoWoman')}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="lan border-bottom">
|
||||
<view class="left">身高</view>
|
||||
<view class="left">{{$t('infoHeight')}}</view>
|
||||
<view class="right">
|
||||
<input name="name" class="mr-5" type="digit" v-model="memInfo.height" placeholder="请输入身高" />CM
|
||||
<input name="name" class="mr-5" type="digit" v-model="memInfo.height" :placeholder="$t('verifyRecord')"/>CM
|
||||
<uni-icons type="clear" color="#999" v-if="memInfo.height" @click="memInfo.height=''"
|
||||
size="20"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
<view class="lan border-bottom">
|
||||
<view class="left">体重</view>
|
||||
<view class="left">{{$t('infoWeight')}}</view>
|
||||
<view class="right">
|
||||
<input name="name" type="digit" class="mr-5" v-model="memInfo.weight" placeholder="请输入体重" />KG
|
||||
<input name="name" type="digit" class="mr-5" v-model="memInfo.weight" :placeholder="$t('verifyRecord')" />KG
|
||||
<uni-icons type="clear" color="#999" v-if="memInfo.weight" @click="memInfo.weight=''"
|
||||
size="20"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
<view class="lan border-bottom">
|
||||
<view class="left">出生日期</view>
|
||||
<view class="left">{{$t('infoBirthday')}}</view>
|
||||
<view class="right">
|
||||
<picker mode="date" :end="endDate" @change="maskClick"
|
||||
:value="memInfo.birthday?memInfo.birthday:endDate" :fields="fields">
|
||||
<view class="uni-input">{{memInfo.birthday?memInfo.birthday:'请选择'}}</view>
|
||||
<view class="uni-input">{{memInfo.birthday?memInfo.birthday:$t('verifyPicker')}}}}</view>
|
||||
<icon class="iconfont icon-arrow-down-bold"></icon>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="lan border-bottom">
|
||||
<view class="left">活动系数</view>
|
||||
<view class="left">{{$t('infoActivityCoefficient')}}</view>
|
||||
<view class="right">
|
||||
<picker mode="selector" @change="changeClickType" :range="activityLevel" range-key="name"
|
||||
:value="levelInd">
|
||||
<view>
|
||||
{{memInfo.activity_level?activityLevel[levelInd].name:'请选择'}}
|
||||
{{memInfo.activity_level?activityLevel[levelInd].name:$t('verifyRecord')}}}}
|
||||
<icon class="iconfont icon-arrow-down-bold"></icon>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="btn" @click="confirmInfo">提交</view>
|
||||
<view class="btn" @click="confirmInfo">{{$t('btnSubmit')}}</view>
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
|
|
@ -78,8 +78,8 @@
|
|||
data() {
|
||||
return {
|
||||
sexItem: [
|
||||
"男",
|
||||
"女"
|
||||
this.$t("infoMan"),
|
||||
this.$t("infoWoman")
|
||||
],
|
||||
memInfo: {
|
||||
birthday: "",
|
||||
|
|
@ -106,6 +106,9 @@
|
|||
},
|
||||
onLoad(options) {
|
||||
let that = this
|
||||
uni.setNavigationBarTitle({
|
||||
title: that.$t('infoPersonalProfile')
|
||||
})
|
||||
if (options.info) { //编辑
|
||||
let info = JSON.parse(options.info)
|
||||
that.memInfo = info
|
||||
|
|
@ -124,30 +127,33 @@
|
|||
confirmInfo() {
|
||||
let that = this
|
||||
if (!that.memInfo.nickname) {
|
||||
that.$tools.msg("请输入姓名")
|
||||
that.$tools.msg(that.$t('verifyNickName'))
|
||||
return;
|
||||
}
|
||||
if (!that.memInfo.gender) {
|
||||
this.$tools.msg(that.$t('verifyGender'))
|
||||
return;
|
||||
}
|
||||
if (!that.memInfo.height) {
|
||||
that.$tools.msg("请选择身高")
|
||||
that.$tools.msg(that.$t('verifyHeight'))
|
||||
return;
|
||||
}
|
||||
if (!that.memInfo.weight) {
|
||||
that.$tools.msg("请选择体重")
|
||||
that.$tools.msg(that.$t('verifyWeight'))
|
||||
return;
|
||||
}
|
||||
if (!that.memInfo.birthday) {
|
||||
that.$tools.msg("请选择出生日期")
|
||||
return;
|
||||
}
|
||||
if (!that.memInfo.activity_level) {
|
||||
that.$tools.msg("请选择活动系数")
|
||||
that.$tools.msg(that.$t('verifyBirthday'))
|
||||
return;
|
||||
}
|
||||
// if (!that.memInfo.activity_level) {
|
||||
// that.$tools.msg("请选择活动系数")
|
||||
// return;
|
||||
// }
|
||||
let https = that.isEdit ? that.$model.getEditUser(that.memInfo) : that.$model.getAddUser(that.memInfo)
|
||||
return https.then(res => {
|
||||
console.log("成功", res, that.isEdit, uni.getStorageSync('userid'))
|
||||
if (res.code == 0) {
|
||||
that.$tools.msg("提交成功");
|
||||
if (!that.isEdit) {
|
||||
that.addID = res.aud_id
|
||||
}
|
||||
|
|
@ -214,7 +220,7 @@
|
|||
},
|
||||
//确定性别
|
||||
onsexArr(e) {
|
||||
this.memInfo.gender = this.sexItem[e.target.value] == "男" ? 1 : 2
|
||||
this.memInfo.gender = this.sexItem[e.target.value] == this.$t("infoMan") ? 1 : 2
|
||||
},
|
||||
changeClickType(e) {
|
||||
this.levelInd = e.target.value
|
||||
|
|
|
|||
|
|
@ -3,22 +3,22 @@
|
|||
<view class="login">
|
||||
<view class="editem">
|
||||
<view class="item">
|
||||
<view class="text">邮箱</view>
|
||||
<view class="text">{{$t("infoEmail")}}</view>
|
||||
<view class="input">
|
||||
<input v-model="phone" placeholder="请输入邮箱" />
|
||||
<input v-model="phone" :placeholder="$t('verifyEmail')" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="item ">
|
||||
<view class="text">验证码</view>
|
||||
<view class="text">{{$t("titleCode")}}</view>
|
||||
<view class="input yanzhengma">
|
||||
<input class="uni-input" v-model="code" />
|
||||
<button class="code" type="none" @click="handleCode" v-model="code"
|
||||
:disabled="disabled">{{second<60 ? second+'S后重发':'获取验证码'}}
|
||||
:disabled="disabled">{{second<60 ? second+$t("titleSendCodeRetry"):$t("titleSendCode")}}
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="btnlogin" @click="handleTelLogin">确认</view>
|
||||
<view class="btnlogin" @click="handleOutLogin">{{$t("btnConfirm")}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
|
@ -33,45 +33,51 @@
|
|||
second: 60,
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
let that = this
|
||||
uni.setNavigationBarTitle({
|
||||
title: that.$t('btnDeleteAccount')
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
// 登录、
|
||||
handleTelLogin() {
|
||||
handleOutLogin() {
|
||||
let that = this
|
||||
if (!(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(that.phone))) {
|
||||
that.$tools.msg("请输入正确的邮箱")
|
||||
return
|
||||
}
|
||||
if (!that.code) {
|
||||
that.$tools.msg("请填写验证码")
|
||||
return
|
||||
}
|
||||
that.$model.getAccountMsg({
|
||||
data: that.phone,
|
||||
code: that.code,
|
||||
}).then(res => {
|
||||
if (res.code != 0) {
|
||||
that.$tools.msg(res.msg)
|
||||
return
|
||||
} else {
|
||||
that.$tools.msg("设置成功!")
|
||||
that.$store.commit('changeAccountNumber', {
|
||||
my_email: that.phone
|
||||
uni.showModal({
|
||||
title: that.$t("msgTitle"),
|
||||
confirmText: that.$t("btnDelete"),
|
||||
content: that.$t("verifyDeleteAccount"),
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
that.$model.getDeleteAccount({
|
||||
code: that.code
|
||||
}).then((res) => {
|
||||
if (res.code != 0) return
|
||||
that.$tools.msg(that.$t('msgDelete'));
|
||||
uni.setStorageSync('token', null)
|
||||
uni.setStorageSync('aan_id', null)
|
||||
uni.clearStorageSync()
|
||||
setTimeout(() => {
|
||||
uni.reLaunch({
|
||||
url: "/pageTwo/login/login"
|
||||
})
|
||||
uni.redirectTo({
|
||||
url: "/body/setting/setting"
|
||||
}, 3000);
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
that.$tools.msg(that.$t("msgCancel"));
|
||||
}
|
||||
}).catch(err => {})
|
||||
},
|
||||
})
|
||||
},
|
||||
// 获取验证码
|
||||
handleCode() {
|
||||
let that = this
|
||||
if (!that.phone) {
|
||||
that.$tools.msg("请输入邮箱")
|
||||
that.$tools.msg(that.$t("verifyEmail"))
|
||||
return
|
||||
}
|
||||
if (!(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(that.phone))) {
|
||||
that.$tools.msg("请输入正确的邮箱")
|
||||
that.$tools.msg(that.$t("verifyEmailCorrect"))
|
||||
return
|
||||
}
|
||||
//
|
||||
|
|
@ -103,16 +109,16 @@
|
|||
.content {
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
background: #fff;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.login {
|
||||
width: calc(100% - 30px);
|
||||
width: calc(100% - 60rpx);
|
||||
height: auto;
|
||||
background: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 15px;
|
||||
background-color: #fff;
|
||||
border-radius: 20rpx;
|
||||
padding: 30rpx;
|
||||
|
||||
z-index: 99;
|
||||
|
||||
.title {
|
||||
|
|
@ -120,7 +126,7 @@
|
|||
color: #333;
|
||||
font-size: 40rpx;
|
||||
font-weight: bold;
|
||||
margin-bottom: 15px;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -136,34 +142,36 @@
|
|||
.item {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 15px;
|
||||
margin-bottom: 30rpx;
|
||||
|
||||
.text {
|
||||
width: 80px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
width: 100%;
|
||||
height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.input {
|
||||
width: calc(100% - 100px);
|
||||
width: 100%;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
display: flex;
|
||||
position: relative;
|
||||
border: #dfdfdf 1px solid;
|
||||
border-radius: 5px;
|
||||
padding: 0 10px;
|
||||
padding: 0 20rpx;
|
||||
background-color: #f7f7f7;
|
||||
}
|
||||
|
||||
input {
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
left: 20rpx;
|
||||
right: 0px;
|
||||
z-index: 88;
|
||||
font-size: 32rpx;
|
||||
|
|
@ -171,18 +179,19 @@
|
|||
|
||||
.yanzhengma {
|
||||
input {
|
||||
right: 120px;
|
||||
right: 180px;
|
||||
font-size: 32rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.code {
|
||||
width: 110px;
|
||||
color: #333;
|
||||
width: 180px;
|
||||
background: #dfdfdf;
|
||||
font-size: 32rpx;
|
||||
font-size: 14px;
|
||||
margin: 0;
|
||||
line-height: 40px;
|
||||
line-height: 80rpx;
|
||||
border-radius: 5px;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
|
|
@ -197,12 +206,12 @@
|
|||
|
||||
.btnlogin {
|
||||
width: 100%;
|
||||
margin: 15px 0;
|
||||
margin: 30rpx 0;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
background: $btncolor;
|
||||
font-weight: 700;
|
||||
border-radius: 15px;
|
||||
border-radius: 30rpx;
|
||||
text-align: center;
|
||||
color: #fff !important;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,19 +3,34 @@
|
|||
<view class="login">
|
||||
<view class="editem">
|
||||
<view class="item">
|
||||
<view class="text">密码</view>
|
||||
<view class="text">{{$t("infoEmail")}}</view>
|
||||
<view class="input">
|
||||
<input class="uni-input" v-model="password" placeholder="请输入密码" />
|
||||
<input v-model="phone" :placeholder="$t('verifyEmail')" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="item ">
|
||||
<view class="text">确认密码</view>
|
||||
<view class="text">{{$t("titleCode")}}</view>
|
||||
<view class="input yanzhengma">
|
||||
<input class="uni-input" v-model="code" />
|
||||
<button class="code" type="none" @click="handleCode" v-model="code"
|
||||
:disabled="disabled">{{second<60 ? second+$t("titleSendCodeRetry"):$t("titleSendCode")}}
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="text">{{$t('titlePassword')}}</view>
|
||||
<view class="input">
|
||||
<input class="uni-input" v-model="password2" placeholder="请输入确认密码" />
|
||||
<input class="uni-input" v-model="password" :placeholder="$t('verifyPassword')" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="text">{{$t('titleConfirmPassword')}}</view>
|
||||
<view class="input">
|
||||
<input class="uni-input" v-model="password2" :placeholder="$t('verifyPasswordTwo')" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="btnlogin" @click="handleTelLogin">确认</view>
|
||||
<view class="btnlogin" @click="handleTelLogin">{{$t('btnSubmit')}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
|
@ -26,26 +41,45 @@
|
|||
return {
|
||||
password: "",
|
||||
password2: "",
|
||||
phone: "",
|
||||
code: "",
|
||||
disabled: false,
|
||||
second: 60,
|
||||
}
|
||||
},
|
||||
onLoad() {},
|
||||
onLoad() {
|
||||
let that = this
|
||||
uni.setNavigationBarTitle({
|
||||
title: that.$t('titlePasswordEdit')
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
// 登录、
|
||||
handleTelLogin() {
|
||||
let that = this
|
||||
if (!(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(that.phone))) {
|
||||
that.$tools.msg(that.$t("verifyEmailCorrect"))
|
||||
return
|
||||
}
|
||||
if (!that.code) {
|
||||
that.$tools.msg(that.$t("verifyCode"))
|
||||
return
|
||||
}
|
||||
if (!that.password) {
|
||||
that.$tools.msg("请填写密码")
|
||||
that.$tools.msg(that.$t('verifyPassword'))
|
||||
return
|
||||
}
|
||||
if (!that.password2) {
|
||||
that.$tools.msg("请确认密码")
|
||||
that.$tools.msg(that.$t('verifyPasswordTwo'))
|
||||
return
|
||||
}
|
||||
if (that.password2 != that.password) {
|
||||
that.$tools.msg("请确认两次密码填写一致")
|
||||
that.$tools.msg(that.$t('verifyPasswordCorrect'))
|
||||
return
|
||||
}
|
||||
that.$model.getAccountPassword({
|
||||
data: that.phone,
|
||||
code: that.code,
|
||||
password: that.password,
|
||||
c_password: that.password2,
|
||||
}).then(res => {
|
||||
|
|
@ -53,10 +87,9 @@
|
|||
if (res.code != 0) {
|
||||
that.$tools.msg(res.msg)
|
||||
} else {
|
||||
that.$tools.msg("密码设置成功,请重新登录")
|
||||
that.$tools.msg(that.$t('msgSetSuccess'))
|
||||
that.$model.getloginOut({}).then((res) => {
|
||||
if (res.code != 0) return
|
||||
console.log('确定退出', res)
|
||||
uni.setStorageSync('token', null)
|
||||
uni.setStorageSync('aan_id', null)
|
||||
uni.clearStorageSync()
|
||||
|
|
@ -72,6 +105,37 @@
|
|||
}
|
||||
}).catch(err => {})
|
||||
},
|
||||
// 获取验证码
|
||||
handleCode() {
|
||||
let that = this
|
||||
if (!that.phone) {
|
||||
that.$tools.msg(that.$t("verifyEmail"))
|
||||
return
|
||||
}
|
||||
if (!(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(that.phone))) {
|
||||
that.$tools.msg(that.$t("verifyEmailCorrect"))
|
||||
return
|
||||
}
|
||||
//
|
||||
that.$model.getSendCode({
|
||||
data: that.phone,
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
if (res.code != 0) {
|
||||
that.$tools.msg(res.msg)
|
||||
return
|
||||
}
|
||||
that.disabled = true
|
||||
let interval = setInterval(() => {
|
||||
--that.second
|
||||
}, 1000)
|
||||
setTimeout(() => {
|
||||
clearInterval(interval)
|
||||
that.disabled = false
|
||||
that.second = 60
|
||||
}, 60000)
|
||||
}).catch(err => {})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
@ -80,16 +144,15 @@
|
|||
.content {
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
background: #fff;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.login {
|
||||
width: calc(100% - 30px);
|
||||
width: calc(100% - 60rpx);
|
||||
height: auto;
|
||||
background: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 15px;
|
||||
background-color: #fff;
|
||||
border-radius: 20rpx;
|
||||
padding: 30rpx;
|
||||
z-index: 99;
|
||||
|
||||
.editem {
|
||||
|
|
@ -104,49 +167,70 @@
|
|||
.item {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 15px;
|
||||
margin-bottom: 20rpx;
|
||||
|
||||
.text {
|
||||
width: 80px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
width: 100%;
|
||||
height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.input {
|
||||
width: calc(100% - 100px);
|
||||
width: 100%;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
display: flex;
|
||||
position: relative;
|
||||
border: #dfdfdf 1px solid;
|
||||
border-radius: 5px;
|
||||
padding: 0 10px;
|
||||
padding: 0 20rpx;
|
||||
background-color: #f7f7f7;
|
||||
}
|
||||
|
||||
input {
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
left: 20rpx;
|
||||
right: 0px;
|
||||
z-index: 88;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
.yanzhengma {
|
||||
input {
|
||||
right: 180px;
|
||||
font-size: 32rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.code {
|
||||
color: #333;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
height: 35px;
|
||||
font-size: 14px;
|
||||
box-sizing: border-box;
|
||||
width: 180px;
|
||||
z-index: 999;
|
||||
}
|
||||
|
||||
.btnlogin {
|
||||
width: 100%;
|
||||
margin: 15px 0;
|
||||
margin: 30rpx 0;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
background: $btncolor;
|
||||
font-weight: 700;
|
||||
border-radius: 15px;
|
||||
border-radius: 30rpx;
|
||||
text-align: center;
|
||||
color: #fff !important;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,22 +3,22 @@
|
|||
<view class="login">
|
||||
<view class="editem">
|
||||
<view class="item">
|
||||
<view class="text">手机号</view>
|
||||
<view class="text">{{$t('infoMobile')}}</view>
|
||||
<view class="input">
|
||||
<input v-model="phone" placeholder="请输入手机号" />
|
||||
<input v-model="phone" :placeholder="$t('verifyMobile')" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="item ">
|
||||
<view class="text">验证码</view>
|
||||
<view class="text">{{$t('titleCode')}}</view>
|
||||
<view class="input yanzhengma">
|
||||
<input class="uni-input" v-model="code" />
|
||||
<button class="code" type="none" @click="handleCode" v-model="code"
|
||||
:disabled="disabled">{{second<60 ? second+'S后重发':'获取验证码'}}
|
||||
:disabled="disabled">{{second<60 ? second+$t('titleSendCodeRetry'):$t('titleSendCode')}}
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="btnlogin" @click="handleTelLogin">确认</view>
|
||||
<view class="btnlogin" @click="handleTelLogin">{{$t('btnSubmit')}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
|
@ -33,16 +33,22 @@
|
|||
second: 60,
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
let that = this
|
||||
uni.setNavigationBarTitle({
|
||||
title: that.$t('titlePhone')
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
// 登录、
|
||||
handleTelLogin() {
|
||||
let that = this
|
||||
if (!(/^1[3456789]\d{9}$/.test(that.phone))) {
|
||||
that.$tools.msg("请输入正确的手机号")
|
||||
that.$tools.msg(that.$t('verifyMobileCorrect'))
|
||||
return
|
||||
}
|
||||
if (!that.code) {
|
||||
that.$tools.msg("请填写验证码")
|
||||
that.$tools.msg(that.$t('verifyCode'))
|
||||
return
|
||||
}
|
||||
that.$model.getAccountMsg({
|
||||
|
|
@ -53,13 +59,15 @@
|
|||
that.$tools.msg(res.msg)
|
||||
return
|
||||
} else {
|
||||
that.$tools.msg("设置成功!")
|
||||
that.$tools.msg(that.$t('msgSetSuccess'))
|
||||
that.$store.commit('changeAccountNumber', {
|
||||
my_tel: that.phone
|
||||
})
|
||||
setTimeout(function() {
|
||||
uni.redirectTo({
|
||||
url: "/body/setting/setting"
|
||||
})
|
||||
}, 1000)
|
||||
}
|
||||
}).catch(err => {})
|
||||
},
|
||||
|
|
@ -67,17 +75,16 @@
|
|||
handleCode() {
|
||||
let that = this
|
||||
if (!that.phone) {
|
||||
that.$tools.msg("请输入手机号")
|
||||
that.$tools.msg(that.$t('verifyMobile'))
|
||||
return
|
||||
}
|
||||
if (!(/^1[3456789]\d{9}$/.test(that.phone))) {
|
||||
that.$tools.msg("请输入正确的手机号")
|
||||
that.$tools.msg(that.$t('verifyMobileCorrect'))
|
||||
return
|
||||
}
|
||||
//
|
||||
that.$model.getSendCode({
|
||||
data: that.phone,
|
||||
// type: that.type
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
if (res.code != 0) {
|
||||
|
|
|
|||
|
|
@ -1,37 +1,33 @@
|
|||
<template>
|
||||
<view class="content">
|
||||
<view class="caritem">
|
||||
<view class="text">头像</view>
|
||||
<view class="text">{{$t('infoAvatar')}}</view>
|
||||
<image :src="user.head_pic" class="image"></image>
|
||||
</view>
|
||||
<view class="caritem">
|
||||
<view class="text">昵称</view>
|
||||
<view class="text">{{$t('infoNickname')}}</view>
|
||||
<view class="text_r">
|
||||
<text v-if="!isEdit">{{user.nickname}}</text>
|
||||
<input v-else type="text" v-model='nickname' @blur="handleBlur" />
|
||||
<uni-icons type="compose" color="#FEC407" @click="isEdit=true" class="ml-10" size="22"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
<view class="caritem" @click="navTo('/body/setting/phone')">
|
||||
<!-- <view class="caritem" @click="navTo('/body/setting/phone')">
|
||||
<view class="text">手机号</view>
|
||||
<view class="text_r">
|
||||
<text>{{user.my_tel}}</text>
|
||||
<uni-icons type="right"></uni-icons>
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="caritem" @click="navTo('/body/setting/password')">
|
||||
<view class="text">{{$t('titleSetPassword')}}</view>
|
||||
<uni-icons type="right"></uni-icons>
|
||||
</view>
|
||||
<view class="caritem" @click="navTo('/body/setting/email')">
|
||||
<view class="text">邮箱</view>
|
||||
<view class="text_r">
|
||||
<text>{{user.my_email}}</text>
|
||||
<uni-icons type="right"></uni-icons>
|
||||
<view class="text">{{$t('btnDeleteAccount')}}</view>
|
||||
<uni-icons type="forward" size="20" color="#666"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
<view class="caritem" @click="navTo('/body/setting/password')">
|
||||
<view class="text">设置密码</view>
|
||||
<uni-icons type="right"></uni-icons>
|
||||
</view>
|
||||
<view class="btn mb-15" @click="handleOutLogin">删除账号</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
|
@ -53,32 +49,6 @@
|
|||
}
|
||||
},
|
||||
methods: {
|
||||
handleOutLogin() {
|
||||
let that = this
|
||||
uni.showModal({
|
||||
title: '友情提示',
|
||||
confirmText: '删除',
|
||||
content: '删除成功后,该账号的所有关联信息将被清空且无法找回,是否删除?',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
that.$model.getdeleteAccount({}).then((res) => {
|
||||
if (res.code != 0) return
|
||||
that.$tools.msg("删除成功!");
|
||||
uni.setStorageSync('token', null)
|
||||
uni.setStorageSync('aan_id', null)
|
||||
uni.clearStorageSync()
|
||||
setTimeout(() => {
|
||||
uni.reLaunch({
|
||||
url: "/body/login/login"
|
||||
})
|
||||
}, 3000);
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
that.$tools.msg("您已取消操作!");
|
||||
}
|
||||
},
|
||||
})
|
||||
},
|
||||
// 修改昵称
|
||||
handleBlur() {
|
||||
let that = this
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@
|
|||
let that = this
|
||||
let token = uni.getStorageSync('token')
|
||||
let url = options.url + '?token=' + token + '&id=' + options.id
|
||||
console.log("11111", options, url, this.webviewUrl)
|
||||
that.webviewUrl = decodeURIComponent(url);
|
||||
console.log("11111", options, url, this.webviewUrl)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,147 +0,0 @@
|
|||
<template>
|
||||
<view class="wrapper" v-if="isRecord">
|
||||
<view class="bg" @click="onTap">
|
||||
<view class="edit" @click.stop>
|
||||
<view class="title">手动记录</view>
|
||||
<!-- -->
|
||||
<view class="editem" @click="hideKeyboard">
|
||||
<view class="left">日期</view>
|
||||
<view class="right">
|
||||
<picker mode="date" :end="endDate" @change="changeLog" :fields="fields">
|
||||
<view class="uni-input">{{regTime?regTime:'请选择'}}</view>
|
||||
<icon class="iconfont icon-arrow-down-bold"></icon>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="">
|
||||
<view class="editem">
|
||||
<view class="name">第一次</view>
|
||||
<view class="right">
|
||||
<input type="digit" v-model="number1" placeholder="请输入">ml
|
||||
</view>
|
||||
</view>
|
||||
<view class="editem">
|
||||
<view class="name">第二次</view>
|
||||
<view class="right">
|
||||
<input type="digit" v-model="number2" placeholder="请输入">ml
|
||||
</view>
|
||||
</view>
|
||||
<view class="editem">
|
||||
<view class="name">第三次</view>
|
||||
<view class="right">
|
||||
<input type="digit" v-model="number3" placeholder="请输入">ml
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="btn close" @click="onTap()">取消</view>
|
||||
<view class="btn" @click="handleTarget">确定</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mapState
|
||||
} from "vuex";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
regTime: "",
|
||||
number1: '',
|
||||
number2: "",
|
||||
number3: "",
|
||||
fields: "",
|
||||
}
|
||||
},
|
||||
props: {
|
||||
rtype: null,
|
||||
},
|
||||
computed: {
|
||||
...mapState(["user","isRecord"]),
|
||||
endDate() {
|
||||
return this.$tools.getDate("start")
|
||||
},
|
||||
startDate() {
|
||||
return this.$tools.GetDateStr(-90);
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
// 手动记录
|
||||
handleTarget() {
|
||||
let that = this
|
||||
if (!that.regTime) {
|
||||
that.$tools.msg("请选择测量日期")
|
||||
return
|
||||
}
|
||||
if (!that.number1) {
|
||||
that.$tools.msg("请输入第一次吸气值")
|
||||
return
|
||||
}
|
||||
if (!that.number2) {
|
||||
that.$tools.msg("请输入第二次吸气值")
|
||||
return
|
||||
}
|
||||
if (!that.number3) {
|
||||
that.$tools.msg("请输入第三次吸气值")
|
||||
return
|
||||
}
|
||||
that.$model.getLungmeasure({
|
||||
aud_id: uni.getStorageSync('userid'),
|
||||
time: that.regTime,
|
||||
one: that.number1,
|
||||
two: that.number2,
|
||||
three: that.number3
|
||||
}).then(res => {
|
||||
if (res.code != 0) return
|
||||
that.$tools.msg(res.msg)
|
||||
that.$store.commit("changeRecord", false);
|
||||
that.$store.dispatch("getUserInfo", {
|
||||
aud_id: uni.getStorageSync('userid')
|
||||
})
|
||||
that.$store.dispatch("getLungResult", {
|
||||
aud_id: uni.getStorageSync('userid')
|
||||
})
|
||||
that.regTime = ""
|
||||
that.number1 = ""
|
||||
that.number2 = ""
|
||||
that.number3 = ""
|
||||
that.onTap()
|
||||
})
|
||||
},
|
||||
//
|
||||
changeLog(e) {
|
||||
this.regTime = e.detail.value
|
||||
},
|
||||
onTap() {
|
||||
this.regTime = ""
|
||||
this.number1 = ""
|
||||
this.number2 = ""
|
||||
this.number3 = ""
|
||||
this.$store.commit("changeRecord", false);
|
||||
},
|
||||
hideKeyboard() {
|
||||
uni.hideKeyboard()
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.btn {
|
||||
width: 40%;
|
||||
float: right;
|
||||
margin-top: 15px;
|
||||
background: $maincolor !important;
|
||||
}
|
||||
|
||||
.edit {
|
||||
top: 20%
|
||||
}
|
||||
|
||||
.close {
|
||||
background: #fff !important;
|
||||
float: left;
|
||||
color: #333;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -1,223 +0,0 @@
|
|||
<template>
|
||||
<view class="wrapper" v-if="isPublicRecord">
|
||||
<view class="bg" @click="onTap">
|
||||
<view class="edit" @click.stop>
|
||||
<view class="title">手动记录</view>
|
||||
<view class="editem">
|
||||
<view class="left">项目</view>
|
||||
<view class="right">
|
||||
{{labelName}}
|
||||
</view>
|
||||
</view>
|
||||
<!-- -->
|
||||
<view class="editem">
|
||||
<view class="left">日期</view>
|
||||
<view class="right">
|
||||
<picker mode="date" :end="endDate" @change="changeLog" :fields="fields">
|
||||
<view class="uni-input">{{regTime?regTime:'请选择'}}</view>
|
||||
<icon class="iconfont icon-arrow-down-bold"></icon>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="editem" v-if="info&&info.list.length&&listType">
|
||||
<view class="name">{{describe}}</view>
|
||||
<view class="right" v-if="listType==4">
|
||||
<picker mode="multiSelector" :range="timeList" :value="timesTndex" @change="bindTimeChange">
|
||||
<view class="size16">{{time_m?time_m+':':'请选择'}}{{time_s?time_s:''}}</view>
|
||||
</picker>
|
||||
<uni-icons type="bottom" class="ml-10 c666"></uni-icons>
|
||||
</view>
|
||||
<view class="right" v-if="listType!=4">
|
||||
<input :type="listType==1?'number':'digit'" v-model="number" placeholder="请输入">
|
||||
{{unit}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="editem" v-if="info&&info.time">
|
||||
<view class="name">时长</view>
|
||||
<view class="right">
|
||||
<picker mode="multiSelector" :range="timeList" :value="timesTndex" @change="bindTimeChange">
|
||||
<view class="size16">{{time_m?time_m+':':'请选择'}}{{time_s?time_s:''}}</view>
|
||||
</picker>
|
||||
<uni-icons type="bottom" class="ml-15 c666"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
<view class="editem" v-if="info&&info.number">
|
||||
<view class="name">个数</view>
|
||||
<view class="right">
|
||||
<input type="number" v-model="number" placeholder="请输入">个
|
||||
</view>
|
||||
</view>
|
||||
<view class="btn close" @click="onTap()">取消</view>
|
||||
<view class="btn" @click="handleTarget">确定</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mapState
|
||||
} from "vuex";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
name: "",
|
||||
regTime: "",
|
||||
number: '',
|
||||
timeList: [],
|
||||
time_m: "",
|
||||
time_s: "",
|
||||
fields: "",
|
||||
listType: null,
|
||||
describe: "",
|
||||
unit: "",
|
||||
timesTndex: [1, 0],
|
||||
lableTndex: 0,
|
||||
labelName: "",
|
||||
}
|
||||
},
|
||||
props: {
|
||||
rtype: null,
|
||||
active: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
...mapState(["PublicRecord", "isPublicRecord"]),
|
||||
info() {
|
||||
let that = this
|
||||
let info = {
|
||||
height: false,
|
||||
weight: false,
|
||||
number: false,
|
||||
time: false,
|
||||
list: []
|
||||
}
|
||||
if (that.PublicRecord.length) {
|
||||
that.PublicRecord.forEach(ite => {
|
||||
if (ite.id == that.rtype) {
|
||||
info = ite
|
||||
}
|
||||
})
|
||||
if (info && info.list.length) {
|
||||
// console.log("8888888", that.PublicRecord, info, that.active)
|
||||
that.labelName = info.list[that.active].name
|
||||
that.listType = info.list[that.active].type
|
||||
that.describe = info.list[that.active].describe
|
||||
that.unit = info.list[that.active].unit
|
||||
// console.log("手动内容", info, that.active)
|
||||
}
|
||||
|
||||
}
|
||||
return that.PublicRecord.length ? info : null
|
||||
},
|
||||
endDate() {
|
||||
return this.$tools.getDate("start")
|
||||
},
|
||||
startDate() {
|
||||
return this.$tools.GetDateStr(-90);
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
// console.log("999999", that.labelName, that.PublicRecord)
|
||||
},
|
||||
mounted() {
|
||||
let that = this
|
||||
that.timeList = this.$tools.gethms()
|
||||
// #ifdef APP-PLUS
|
||||
that.fields = "time"
|
||||
// #endif
|
||||
// #ifndef APP-PLUS
|
||||
that.fields = "day"
|
||||
// #endif
|
||||
},
|
||||
methods: {
|
||||
bindTimeChange(e) {
|
||||
let that = this
|
||||
let m = e.target.value[0]
|
||||
let s = e.target.value[1]
|
||||
let time_m = Number(that.timeList[0][m].substring(0, 2)) * 60
|
||||
let time_s = Number(that.timeList[1][s].substring(0, 2))
|
||||
that.timesTndex = e.target.value
|
||||
that.time_m = that.timeList[0][m].substring(0, 2)
|
||||
that.time_s = that.timeList[1][s].substring(0, 2)
|
||||
console.log("时长", that.time_m, that.time_s)
|
||||
},
|
||||
// 手动记录
|
||||
handleTarget() {
|
||||
let that = this
|
||||
if (!that.regTime) {
|
||||
that.$tools.msg("请选择日期")
|
||||
return
|
||||
}
|
||||
if (that.listType == 4 && (!that.time_m || !that.time_s)) {
|
||||
that.$tools.msg("请输入时长")
|
||||
return
|
||||
}
|
||||
if (that.listType != 4 && !that.number) {
|
||||
let msg = that.listType == 1 ? '请输入个数' : '请输入时长'
|
||||
that.$tools.msg(msg)
|
||||
return
|
||||
}
|
||||
let time_m = that.time_m + ':' + that.time_s
|
||||
that.$model.getpublicmeasure({
|
||||
acd_id: that.rtype,
|
||||
name: that.labelName,
|
||||
record_time: that.regTime,
|
||||
data: that.listType == 4 ? time_m : that.number,
|
||||
aud_id: uni.getStorageSync('userid')
|
||||
}).then(res => {
|
||||
if (res.code != 0) return
|
||||
that.$tools.msg(res.msg)
|
||||
that.$store.commit("changeRecord", false);
|
||||
that.$store.dispatch("getUserInfo", {
|
||||
aud_id: uni.getStorageSync('userid'),
|
||||
})
|
||||
that.$store.dispatch("getPublicContent", {
|
||||
acd_id: that.rtype,
|
||||
aud_id: uni.getStorageSync('userid')
|
||||
})
|
||||
that.onTap()
|
||||
})
|
||||
},
|
||||
bindTimeChange(e) {
|
||||
let that = this
|
||||
let m = e.target.value[0]
|
||||
let s = e.target.value[1]
|
||||
that.timesTndex = e.target.value
|
||||
let time_m = Number(that.timeList[0][m].substring(0, 2)) * 60
|
||||
let time_s = Number(that.timeList[1][s].substring(0, 2))
|
||||
that.time_m = that.timeList[0][m].substring(0, 2)
|
||||
that.time_s = that.timeList[1][s].substring(0, 2)
|
||||
},
|
||||
//
|
||||
changeLog(e) {
|
||||
this.regTime = e.detail.value
|
||||
},
|
||||
onTap() {
|
||||
this.regTime = ""
|
||||
this.$store.commit("changePublicAdd", false);
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.btn {
|
||||
width: 40%;
|
||||
float: right;
|
||||
margin-top: 15px;
|
||||
background: $maincolor !important;
|
||||
}
|
||||
|
||||
.edit {
|
||||
top: 20%
|
||||
}
|
||||
|
||||
.close {
|
||||
background: #fff !important;
|
||||
float: left;
|
||||
color: #333;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -1,376 +0,0 @@
|
|||
<template>
|
||||
<view class="wrapper" v-if="isRecord">
|
||||
<view class="bg" @click="onTap">
|
||||
<view class="edit" @click.stop>
|
||||
<view class="title">手动记录</view>
|
||||
<view class="editem">
|
||||
<view class="left">日期</view>
|
||||
<view class="right">
|
||||
<picker mode="date" :end="endDate" @change="changeLog" :fields="fields">
|
||||
<view class="uni-input">{{regTime?regTime:'请选择'}}</view>
|
||||
<icon class="iconfont icon-arrow-down-bold"></icon>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="rtype!=8&&rtype!=2">
|
||||
<!-- 项目 -->
|
||||
<view class="editem" v-if="info&&info.list.length">
|
||||
<view class="left">项目</view>
|
||||
<view class="right">
|
||||
<picker :range="info.list" range-key="name" :value="lableTndex" @change="bindLableChange">
|
||||
<view class="uni-input">{{name?name:'请选择'}}</view>
|
||||
<icon class="iconfont icon-arrow-down-bold"></icon>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 项目时长类型 -->
|
||||
<view class="editem" v-if="info&&info.list.length&&listType">
|
||||
<view class="name">{{describe}}</view>
|
||||
<view class="right" v-if="listType==4">
|
||||
<picker mode="multiSelector" :range="timeList" :value="timesTndex" @change="bindTimeChange">
|
||||
<view class="size16">{{time_m?time_m+':':'请选择'}}{{time_s?time_s:''}}</view>
|
||||
</picker>
|
||||
<uni-icons type="bottom" class="ml-15 c666"></uni-icons>
|
||||
</view>
|
||||
<view class="right" v-if="listType!=4">
|
||||
<input :type="listType==1?'number':'digit'" v-model="number" placeholder="请输入">
|
||||
{{unit}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="editem" v-if="info&&info.time">
|
||||
<view class="name">时长</view>
|
||||
<view class="right">
|
||||
<picker mode="multiSelector" :range="timeList" :value="timesTndex" @change="bindTimeChange">
|
||||
<view class="size16">{{time_m?time_m+':':'请选择'}}{{time_s?time_s:''}}</view>
|
||||
</picker>
|
||||
<uni-icons type="bottom" class="ml-15 c666"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
<view class="editem" v-if="info&&info.number">
|
||||
<view class="name">个数</view>
|
||||
<view class="right">
|
||||
<input type="number" v-model="number" placeholder="请输入">个
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 身体 -->
|
||||
<view class="" v-if="rtype==2">
|
||||
<view class="editem" v-if="info&&info.height">
|
||||
<view class="name">身高</view>
|
||||
<view class="right">
|
||||
<input type="digit" v-model="height" placeholder="请输入身高" />cm
|
||||
</view>
|
||||
</view>
|
||||
<view class="editem" v-if="info&&info.weight">
|
||||
<view class="name">体重</view>
|
||||
<view class="right">
|
||||
<input type="digit" v-model="weight" placeholder="请输入体重">kg
|
||||
</view>
|
||||
</view>
|
||||
<view class="editem" v-if="userInfo.stage=='婴儿'">
|
||||
<view class="left">头围</view>
|
||||
<view class="right">
|
||||
<input v-model="head" type="digit" placeholder="请输入" />cm
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 肺活量 -->
|
||||
<view class="" v-if="rtype==8">
|
||||
<view class="editem">
|
||||
<view class="name">第一次</view>
|
||||
<view class="right">
|
||||
<input type="digit" v-model="number1" placeholder="请输入">ml
|
||||
</view>
|
||||
</view>
|
||||
<view class="editem">
|
||||
<view class="name">第二次</view>
|
||||
<view class="right">
|
||||
<input type="digit" v-model="number2" placeholder="请输入">ml
|
||||
</view>
|
||||
</view>
|
||||
<view class="editem">
|
||||
<view class="name">第三次</view>
|
||||
<view class="right">
|
||||
<input type="digit" v-model="number3" placeholder="请输入">ml
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="btn close" @click="onTap()">取消</view>
|
||||
<view class="btn" @click="handleTarget">确定</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mapState
|
||||
} from "vuex";
|
||||
export default {
|
||||
props: {
|
||||
rtype: null,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
name: "",
|
||||
number: '',
|
||||
regTime: "",
|
||||
number1: '',
|
||||
number2: "",
|
||||
number3: "",
|
||||
time_m: "",
|
||||
time_s: "",
|
||||
weight: "",
|
||||
height: '',
|
||||
timeList: [],
|
||||
lableTndex: 0,
|
||||
timesTndex: [1, 0],
|
||||
listType: null,
|
||||
describe: "",
|
||||
unit: "",
|
||||
fields: "",
|
||||
head: ""
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapState(["user", "isRecord", "PublicRecord", "labelList"]),
|
||||
userInfo() {
|
||||
return this.user
|
||||
},
|
||||
info() {
|
||||
let that = this
|
||||
let info = {
|
||||
height: false,
|
||||
weight: false,
|
||||
number: false,
|
||||
time: false,
|
||||
list: []
|
||||
}
|
||||
if (that.PublicRecord.length) {
|
||||
that.PublicRecord.forEach(ite => {
|
||||
if (ite.id == that.rtype) {
|
||||
info = ite
|
||||
}
|
||||
})
|
||||
}
|
||||
return that.PublicRecord.length ? info : null
|
||||
},
|
||||
endDate() {
|
||||
return this.$tools.getDate("start")
|
||||
},
|
||||
startDate() {
|
||||
return this.$tools.GetDateStr(-90);
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
let that = this
|
||||
that.timeList = that.$tools.gethms()
|
||||
// #ifdef APP-PLUS
|
||||
that.fields = "time"
|
||||
// #endif
|
||||
// #ifndef APP-PLUS
|
||||
that.fields = "day"
|
||||
// #endif
|
||||
},
|
||||
methods: {
|
||||
// 手动记录
|
||||
handleTarget() {
|
||||
let that = this
|
||||
if (that.rtype == 2) {
|
||||
that.handleinsertmeasure()
|
||||
} else if (that.rtype == 6) {
|
||||
that.handleskipmeasure()
|
||||
} else if (that.rtype == 8) {
|
||||
that.handleLungmeasure()
|
||||
} else {
|
||||
that.handlepublicmeasure()
|
||||
}
|
||||
},
|
||||
// 通用
|
||||
handlepublicmeasure() {
|
||||
let that = this
|
||||
if (!that.name) {
|
||||
that.$tools.msg("请选择测量项目")
|
||||
return
|
||||
}
|
||||
if (!that.regTime) {
|
||||
that.$tools.msg("请选择日期")
|
||||
return
|
||||
}
|
||||
if (that.listType == 4 && (!that.time_m || !that.time_s)) {
|
||||
that.$tools.msg("请输入时长")
|
||||
return
|
||||
}
|
||||
if (that.listType != 4 && !that.number) {
|
||||
let msg = that.listType == 1 ? '请输入个数' : '请输入时长'
|
||||
that.$tools.msg(msg)
|
||||
return
|
||||
}
|
||||
let time_m = that.time_m + ':' + that.time_s
|
||||
that.$model.getpublicmeasure({
|
||||
acd_id: that.rtype,
|
||||
name: that.name,
|
||||
record_time: that.regTime,
|
||||
data: that.listType == 4 ? time_m : that.number,
|
||||
aud_id: uni.getStorageSync('userid')
|
||||
}).then(res => {
|
||||
if (res.code != 0) return
|
||||
that.$tools.msg(res.msg)
|
||||
that.$store.dispatch("getUserInfo", {
|
||||
aud_id: uni.getStorageSync('userid'),
|
||||
})
|
||||
that.$store.dispatch("getPublicContent", {
|
||||
acd_id: that.rtype,
|
||||
aud_id: uni.getStorageSync('userid')
|
||||
})
|
||||
that.onTap()
|
||||
})
|
||||
},
|
||||
// 肺活量
|
||||
handleLungmeasure() {
|
||||
let that = this
|
||||
if (!that.regTime) {
|
||||
that.$tools.msg("请选择测量日期")
|
||||
return
|
||||
}
|
||||
if (!that.number1) {
|
||||
that.$tools.msg("请输入第一次吸气值")
|
||||
return
|
||||
}
|
||||
if (!that.number2) {
|
||||
that.$tools.msg("请输入第二次吸气值")
|
||||
return
|
||||
}
|
||||
if (!that.number3) {
|
||||
that.$tools.msg("请输入第三次吸气值")
|
||||
return
|
||||
}
|
||||
that.$model.getLungmeasure({
|
||||
aud_id: uni.getStorageSync('userid'),
|
||||
time: that.regTime,
|
||||
one: that.number1,
|
||||
two: that.number2,
|
||||
three: that.number3
|
||||
}).then(res => {
|
||||
if (res.code != 0) return
|
||||
that.$tools.msg(res.msg)
|
||||
that.$store.dispatch("getLungResult", {
|
||||
aud_id: uni.getStorageSync('userid')
|
||||
})
|
||||
that.onTap()
|
||||
})
|
||||
},
|
||||
// 跳绳
|
||||
handleskipmeasure() {
|
||||
let that = this
|
||||
if (!that.regTime) {
|
||||
that.$tools.msg("请选择测量日期")
|
||||
return
|
||||
}
|
||||
if (!that.number) {
|
||||
that.$tools.msg("请输入跳绳个数")
|
||||
return
|
||||
}
|
||||
that.$model.getskipmeasure({
|
||||
aud_id: uni.getStorageSync('userid'),
|
||||
num: that.number,
|
||||
r_time: that.regTime,
|
||||
time_m: that.time_m,
|
||||
time_s: that.time_s,
|
||||
type: "free",
|
||||
}).then(res => {
|
||||
if (res.code != 0) return
|
||||
that.$tools.msg(res.msg)
|
||||
that.$store.dispatch("getSkipResult", {
|
||||
aud_id: uni.getStorageSync('userid'),
|
||||
})
|
||||
that.onTap()
|
||||
})
|
||||
},
|
||||
// 身体
|
||||
handleinsertmeasure() {
|
||||
let that = this
|
||||
if (!that.regTime) {
|
||||
that.$tools.msg("请选择测量日期")
|
||||
return
|
||||
}
|
||||
if (!that.height) {
|
||||
that.$tools.msg("请输入测量身高")
|
||||
return
|
||||
}
|
||||
if (!that.weight) {
|
||||
that.$tools.msg("请输入测量体重")
|
||||
return
|
||||
}
|
||||
that.$model.getinsertmeasure({
|
||||
aud_id: uni.getStorageSync('userid'),
|
||||
time: that.regTime,
|
||||
weight: that.weight,
|
||||
height: that.height,
|
||||
head_data: that.head ? that.head : 0
|
||||
}).then(res => {
|
||||
if (res.code != 0) return
|
||||
that.$tools.msg(res.msg)
|
||||
that.$store.dispatch("getResult", {
|
||||
aud_id: uni.getStorageSync('userid')
|
||||
})
|
||||
that.$store.dispatch("getUserInfo", {
|
||||
aud_id: uni.getStorageSync('userid')
|
||||
})
|
||||
that.onTap()
|
||||
})
|
||||
},
|
||||
bindTimeChange(e) {
|
||||
let that = this
|
||||
let m = e.target.value[0]
|
||||
let s = e.target.value[1]
|
||||
that.timesTndex = e.target.value
|
||||
let time_m = Number(that.timeList[0][m].substring(0, 2)) * 60
|
||||
let time_s = Number(that.timeList[1][s].substring(0, 2))
|
||||
that.time_m = that.timeList[0][m].substring(0, 2)
|
||||
that.time_s = that.timeList[1][s].substring(0, 2)
|
||||
},
|
||||
bindLableChange(e) {
|
||||
console.log("e", e)
|
||||
this.name = this.info.list[e.detail.value].name
|
||||
this.listType = this.info.list[e.detail.value].type
|
||||
this.describe = this.info.list[e.detail.value].describe
|
||||
this.unit = this.info.list[e.detail.value].unit
|
||||
},
|
||||
changeLog(e) {
|
||||
this.regTime = e.detail.value
|
||||
},
|
||||
onTap() {
|
||||
let that = this
|
||||
that.name = ""
|
||||
that.weight = ""
|
||||
that.height = ""
|
||||
that.regTime = ""
|
||||
that.number1 = ""
|
||||
that.number2 = ""
|
||||
that.number3 = ""
|
||||
that.number = ''
|
||||
that.time_m = ""
|
||||
that.time_s = ""
|
||||
that.lableTndex = 0
|
||||
that.timesTndex = [1, 0]
|
||||
that.listType = null
|
||||
that.$store.commit("changeRecord", false);
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.btn {
|
||||
width: 40%;
|
||||
float: right;
|
||||
margin-top: 15px;
|
||||
background: $maincolor !important;
|
||||
}
|
||||
|
||||
.close {
|
||||
background: #dfdfdf !important;
|
||||
float: left;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -1,148 +0,0 @@
|
|||
<template>
|
||||
<view class="wrapper">
|
||||
<view class="bg" @click="onTap">
|
||||
<view class="edit" @click.stop>
|
||||
<view class="title">手动记录</view>
|
||||
<!-- -->
|
||||
<view class="editem" @click="hideKeyboard">
|
||||
<view class="left">日期</view>
|
||||
<view class="right">
|
||||
<picker mode="date" :end="endDate" @change="changeLog" :fields="fields">
|
||||
<view class="uni-input">{{regTime?regTime:'请选择'}}</view>
|
||||
<icon class="iconfont icon-arrow-down-bold"></icon>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="">
|
||||
<view class="editem">
|
||||
<view class="name">时长</view>
|
||||
<view class="right">
|
||||
<picker mode="multiSelector" :range="timeList" :value="timesTndex" @change="bindTimeChange">
|
||||
<view class="size16">{{time_m?time_m+':':'请选择'}}{{time_s?time_s:''}}</view>
|
||||
</picker>
|
||||
<uni-icons type="bottom" class="ml-15 c666"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
<view class="editem">
|
||||
<view class="name">个数</view>
|
||||
<view class="right">
|
||||
<input type="number" v-model="number" placeholder="请输入">个
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="btn close" @click="onTap()">取消</view>
|
||||
<view class="btn" @click="handleTarget">确定</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mapState
|
||||
} from "vuex";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
regTime: "",
|
||||
number: '',
|
||||
timeList: [],
|
||||
time_m: "",
|
||||
time_s: "",
|
||||
timesTndex: [1, 0]
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapState(["user"]),
|
||||
endDate() {
|
||||
return this.$tools.getDate("start")
|
||||
},
|
||||
startDate() {
|
||||
return this.$tools.GetDateStr(-90);
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.timeList = this.$tools.gethms()
|
||||
},
|
||||
methods: {
|
||||
bindTimeChange(e) {
|
||||
let that = this
|
||||
let m = e.target.value[0]
|
||||
let s = e.target.value[1]
|
||||
that.timesTndex = e.target.value
|
||||
let time_m = Number(that.timeList[0][m].substring(0, 2)) * 60
|
||||
let time_s = Number(that.timeList[1][s].substring(0, 2))
|
||||
if (Number(time_m + time_s) < 30) {
|
||||
that.time_m = '00'
|
||||
that.time_s = '30'
|
||||
} else {
|
||||
that.time_m = that.timeList[0][m].substring(0, 2)
|
||||
that.time_s = that.timeList[1][s].substring(0, 2)
|
||||
}
|
||||
},
|
||||
// 手动记录
|
||||
handleTarget() {
|
||||
let that = this
|
||||
if (!that.regTime) {
|
||||
that.$tools.msg("请选择测量日期")
|
||||
return
|
||||
}
|
||||
if (!that.number) {
|
||||
that.$tools.msg("请输入跳绳个数")
|
||||
return
|
||||
}
|
||||
that.$model.getskipmeasure({
|
||||
aud_id: uni.getStorageSync('userid'),
|
||||
r_time: that.regTime,
|
||||
num: that.number,
|
||||
time_m: that.time_m,
|
||||
time_s: that.time_s,
|
||||
type: "free",
|
||||
}).then(res => {
|
||||
if (res.code != 0) return
|
||||
that.$tools.msg(res.msg)
|
||||
that.$store.commit("changeRecord", false);
|
||||
that.$store.dispatch("getUserInfo", {
|
||||
aud_id: uni.getStorageSync('userid'),
|
||||
})
|
||||
that.$store.dispatch("getSkipResult", {
|
||||
aud_id: uni.getStorageSync('userid'),
|
||||
})
|
||||
that.regTime = ""
|
||||
that.weight = ""
|
||||
})
|
||||
},
|
||||
//
|
||||
changeLog(e) {
|
||||
this.regTime = e.detail.value
|
||||
},
|
||||
onTap() {
|
||||
this.regTime = ""
|
||||
this.weight = ""
|
||||
this.$store.commit("changeRecord", false);
|
||||
},
|
||||
hideKeyboard() {
|
||||
uni.hideKeyboard()
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.btn {
|
||||
width: 40%;
|
||||
float: right;
|
||||
margin-top: 15px;
|
||||
background: $maincolor !important;
|
||||
}
|
||||
|
||||
.edit {
|
||||
top: 20%
|
||||
}
|
||||
|
||||
.close {
|
||||
background: #fff !important;
|
||||
float: left;
|
||||
color: #333;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -1,133 +0,0 @@
|
|||
<template>
|
||||
<view class="wrapper wrapperbg">
|
||||
<view class="bg" @click="onTap">
|
||||
<view class="edit" @click.stop>
|
||||
<view class="title">手动记录</view>
|
||||
<!-- -->
|
||||
<view class="editem" @click="hideKeyboard">
|
||||
<view class="left">日期</view>
|
||||
<view class="right">
|
||||
<picker mode="date" :end="endDate" @change="changeLog" :fields="fields">
|
||||
<view class="uni-input">{{regTime?regTime:'请选择'}}</view>
|
||||
<icon class="iconfont icon-arrow-down-bold"></icon>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="">
|
||||
<view class="editem">
|
||||
<view class="name">身高</view>
|
||||
<view class="right">
|
||||
<input type="digit" v-model="height" placeholder="请输入身高" />cm
|
||||
</view>
|
||||
</view>
|
||||
<view class="editem">
|
||||
<view class="name">体重</view>
|
||||
<view class="right">
|
||||
<input type="digit" v-model="weight" placeholder="请输入体重">kg
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="btn close" @click="onTap()">取消</view>
|
||||
<view class="btn" @click="handleTarget">确定</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mapState
|
||||
} from "vuex";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
regTime: "",
|
||||
weight: "",
|
||||
height: ''
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapState(["user", "isWeight"]),
|
||||
endDate() {
|
||||
return this.$tools.getDate("start")
|
||||
},
|
||||
startDate() {
|
||||
return this.$tools.GetDateStr(-90);
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
// 手动记录
|
||||
handleTarget() {
|
||||
let that = this
|
||||
if (!that.regTime) {
|
||||
that.$tools.msg("请选择测量日期")
|
||||
return
|
||||
}
|
||||
if (!that.height) {
|
||||
that.$tools.msg("请输入测量身高")
|
||||
return
|
||||
}
|
||||
if (!that.weight) {
|
||||
that.$tools.msg("请输入测量体重")
|
||||
return
|
||||
}
|
||||
that.$store.commit("changeRecord", false);
|
||||
that.$model.getinsertmeasure({
|
||||
aud_id: uni.getStorageSync('userid'),
|
||||
time: that.regTime,
|
||||
weight: that.weight,
|
||||
height: that.height,
|
||||
}).then(res => {
|
||||
if (res.code != 0) return
|
||||
that.$tools.msg(res.msg)
|
||||
that.$store.dispatch("getResult", {
|
||||
aud_id: uni.getStorageSync('userid')
|
||||
})
|
||||
that.$store.dispatch("getUserInfo", {
|
||||
aud_id: uni.getStorageSync('userid')
|
||||
})
|
||||
that.$store.dispatch("GetBodyTrendList", {
|
||||
aud_id: uni.getStorageSync('userid'),
|
||||
s_time: that.startDate,
|
||||
e_time: that.endDate
|
||||
})
|
||||
that.regTime = ""
|
||||
that.weight = ""
|
||||
that.height = ""
|
||||
})
|
||||
},
|
||||
//
|
||||
changeLog(e) {
|
||||
this.regTime = e.detail.value
|
||||
},
|
||||
onTap() {
|
||||
this.regTime = ""
|
||||
this.weight = ""
|
||||
this.height = ""
|
||||
this.$store.commit("changeRecord", false);
|
||||
},
|
||||
hideKeyboard() {
|
||||
uni.hideKeyboard()
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.btn {
|
||||
width: 40%;
|
||||
float: right;
|
||||
margin-top: 15px;
|
||||
background: $maincolor !important;
|
||||
}
|
||||
|
||||
.edit {
|
||||
top: 20%
|
||||
}
|
||||
|
||||
.close {
|
||||
background: #fff !important;
|
||||
float: left;
|
||||
color: #333;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,163 @@
|
|||
{
|
||||
|
||||
"msgTitle": "نصيحة ودية",
|
||||
"msgUpgradeFail": "فشل الترقية",
|
||||
"msgDownloading": "جاري التحميل",
|
||||
"msgLatestVersion": "هي بالفعل أحدث إصدار!",
|
||||
"msgCancel": "لقد ألغيت العملية!",
|
||||
"msgLoginSuccess": "تم تسجيل الدخول بنجاح!",
|
||||
"msgDelete": "تم الحذف بنجاح",
|
||||
"msgSetSuccess": "تم الإعداد بنجاح",
|
||||
"msgBottom": "النهاية، انتقل إلى شيء آخر",
|
||||
"msgNoMoreData": "لا توجد المزيد من البيانات!",
|
||||
"msgSetPasswordSuccess": "تم تعيين كلمة المرور بنجاح، ادخل إلى البرنامج!",
|
||||
"msgAddUser": "لا يوجد أعضاء حالياً، يرجى إضافتهم أولاً",
|
||||
"verifyNickName": "الرجاء إدخال الاسم المستعار",
|
||||
"verifyNotOptional": "التاريخ المستقبلي غير قابل للاختيار",
|
||||
"verifyDate": "يرجى اختيار تاريخ القياس",
|
||||
"verifyBirthday": "الرجاء اختيار تاريخ الميلاد",
|
||||
"verifyHeight": "من فضلك أدخل الطول",
|
||||
"verifyWeight": "الرجاء إدخال الوزن",
|
||||
"verifyGender": "الرجاء اختيار الجنس",
|
||||
"verifyBontrast": "يرجى اختيار البيانات",
|
||||
"verifyBodyDate": "الرجاء اختيار الوقت الصحيح",
|
||||
"verifyRecord": "الرجاء إدخال",
|
||||
"verifyPicker": "الرجاء الاختيار",
|
||||
"verifyAccount": "يرجى إدخال رقم الهاتف أو البريد الإلكتروني الصحيح",
|
||||
"verifyEmail": "الرجاء إدخال البريد الإلكتروني",
|
||||
"verifyEmailCorrect": "من فضلك أدخل البريد الإلكتروني الصحيح",
|
||||
"verifyMobile": "الرجاء إدخال رقم الهاتف",
|
||||
"verifyMobileCorrect": "الرجاء إدخال رقم الهاتف الصحيح",
|
||||
"verifyCode": "กรุณาป้อนรหัสยืนยัน",
|
||||
"verifyPassword": "الرجاء إدخال كلمة المرور",
|
||||
"verifyPasswordTwo": "الرجاء إدخال كلمة المرور المؤكدة",
|
||||
"verifyPasswordCorrect": "يرجى التأكد من أن كلمة المرور المكتوبة مطابقة في المرةين",
|
||||
"verifyAgreement": "يرجى تأكيد واختيار الاتفاقية أولاً",
|
||||
"verifyOutLogin": "هل ترغب في تسجيل الخروج؟",
|
||||
"verifyDeleteUser": "هل تريد حذف هذا العضو؟",
|
||||
"verifyDeleteHistory": "هل تريد حذف سجل القياس الحالي؟",
|
||||
"verifyDeleteAccount": "بعد الحذف بنجاح، سيتم مسح جميع المعلومات المرتبطة بهذه الحساب ولا يمكن استعادتها، هل ترغب في الحذف؟",
|
||||
"btnConfirm": "تأكيد",
|
||||
"btnSubmit": "إرسال",
|
||||
"btnSancellation": "إلغاء",
|
||||
"btnContinue": "استمر",
|
||||
"btnBack": "عودة",
|
||||
"btnDelete": "حذف",
|
||||
"ConnectionTimeout": "انتهت مهلة الاتصال، انقر لإعادة الاتصال",
|
||||
"Measuring": "في القياس، يرجى وضع الطعام على الميزان",
|
||||
"Weight": "الوزن",
|
||||
"RecordWeight": "يرجى إدخال وزن الطعام",
|
||||
"SearchBluetooth": "البحث عن البلوتوث جاري",
|
||||
"Remeasure": "البيانات غير طبيعية، يرجى إعادة القياس!",
|
||||
"reset": "البيانات غير طبيعية، يرجى إعادة القياس بعد معاودة الصفر!",
|
||||
"Disconnect": "قطع الاتصال",
|
||||
"remeasure": "إعادة القياس",
|
||||
"resetBtn": "إعادة الضبط",
|
||||
"UnitBtn": "وحدة",
|
||||
"SaveResult": "حفظ",
|
||||
"titleHome": "الصفحة الرئيسية",
|
||||
"titleMenu": "وصفة",
|
||||
"titleMenuAdd": "إضافة الوصفة",
|
||||
"titleMenuSearch": "البحث عن وصفات",
|
||||
"titleCount": "حساب الطعام",
|
||||
"titleCountList": "مستودع المكونات",
|
||||
"titleCustomKcal": "سعرات حرارية مخصصة",
|
||||
"titleEveryMeal": "تفاصيل الوجبة",
|
||||
"titleCountSearch": "البحث عن المكونات",
|
||||
"titleeveryDay": "تحليل التغذية",
|
||||
"titleMe": "لي",
|
||||
"titleDetail": "التفاصيل",
|
||||
"titleBody": "الهدف",
|
||||
"titleHistory": "سجل الأكل",
|
||||
"titlePhone": "ربط رقم الهاتف",
|
||||
"titleEmail": "ربط البريد الإلكتروني",
|
||||
"titlePasswordEdit": "تغيير كلمة المرور",
|
||||
"titleSet": "إعداد",
|
||||
"titleDate": "تاريخ",
|
||||
"titleMember": "المواد",
|
||||
"titleManage": "إدارة الأعضاء",
|
||||
"titleManageAdd": "إضافة عضو",
|
||||
"titleAboutUs": "معلومات عنا",
|
||||
"titleSetPassword": "تعيين كلمة المرور",
|
||||
"titlePassword": "كلمة المرور",
|
||||
"titleConfirmPassword": "تأكيد كلمة المرور",
|
||||
"titleForgotPassword": "نسيت كلمة المرور",
|
||||
"titleCode": "رمز التحقق",
|
||||
"titleLanguage": "اللغة",
|
||||
"titleSendCode": "الحصول على رمز التحقق",
|
||||
"titleSendCodeRetry": "إعادة إرسال بعد S",
|
||||
"titleLogin": "تسجيل الدخول",
|
||||
"titleRegister": "التسجيل",
|
||||
"titleToggleLogin": "التبديل إلى تسجيل الدخول",
|
||||
"titleAccountText": "رقم الهاتف/البريد الإلكتروني",
|
||||
"titleAgreementText": "القراءة والموافقة",
|
||||
"titleAgreementContntText": "اتفاقية الخصوصية",
|
||||
"titleVersionUpdate": "تحديث الإصدار",
|
||||
"titleNewVersion": "النسخة الجديدة",
|
||||
"infoActivityCoefficient": "معامل النشاط",
|
||||
"infoPersonalProfile": "الملف الشخصي",
|
||||
"infoMyRecipes": "وصفاتي",
|
||||
"infoMyCollection": "مجموعتي",
|
||||
"infoAvatar": "صورة الملف الشخصي",
|
||||
"infoNickname": "الاسم المستعار",
|
||||
"infoMobile": "رقم الهاتف",
|
||||
"infoEmail": "البريد الإلكتروني",
|
||||
"infoAge": "العمر",
|
||||
"infoAgeunit": "سنة",
|
||||
"infoGender": "الجنس",
|
||||
"infoMan": "رجل",
|
||||
"infoWoman": "أنثى",
|
||||
"infoUnknown": "مجهول",
|
||||
"infoBirthday": "تاريخ الميلاد",
|
||||
"infoHeight": "الطول",
|
||||
"infoWeight": "الوزن",
|
||||
"btnEdit": "تحرير",
|
||||
"btnAdd": "إضافة",
|
||||
"btnDetail": "عرض التفاصيل",
|
||||
"btnDeleteAccount": "حذف الحساب",
|
||||
"btnLogOut": "تسجيل الخروج",
|
||||
"countIntake": "الاستهلاك",
|
||||
"countCalorieIntake": "معدل استهلاك السعرات الحرارية",
|
||||
"countMealdetails": "تفاصيل الوجبة",
|
||||
"countAddFood": "إضافة الطعام",
|
||||
"countNutritionalProportion": "نسبة التغذية",
|
||||
"countComponentStatistics": "إحصاء المكونات",
|
||||
"countCalorieAnalysis": "تحليل السعرات الحرارية",
|
||||
"countNutrientElementEnergyProportion": "نسبة الطاقة للمغذيات",
|
||||
"countNutritionClassification": "تصنيف التغذية",
|
||||
"countNutritionElementRankingList": "ترتيب العناصر الغذائية",
|
||||
"countFoodTypes": "أنواع الطعام",
|
||||
|
||||
"total": "ما مجموعه",
|
||||
"records": "السجلات",
|
||||
"Search": "البحث",
|
||||
"VoiceSearch": "بحث صوتي",
|
||||
"Save": "حفظ",
|
||||
"noMoreData": "لا مزيد من البيانات",
|
||||
"HistoricalSearch": "بحث تاريخي",
|
||||
"wantSearch": "أعتقد أنك تريد تفتيش",
|
||||
"verifyCalorie": "يرجى إدخال السعرات الحرارية",
|
||||
"kcal": "السعرات الحرارية",
|
||||
"countNoFood": "لا يوجد طعام",
|
||||
"msgLoginTips": "انظر المزيد بعد تسجيل الدخول",
|
||||
"Nutrients": "مغذيات",
|
||||
"Content": "المحتوى",
|
||||
"CaloriesAndnutrients": "السعرات الحرارية والتغذية",
|
||||
"ImproveInformation": "تحسين المعلومات",
|
||||
"WhetherTodelete": "هل حذف",
|
||||
"BusinessCooperation": "التعاون التجاري",
|
||||
"verifyActivityCoefficient": "يرجى تحديد معامل النشاط",
|
||||
"devicesTips":"لم يتم تسجيل الجهاز، يرجى التواصل مع البائع لإجراء التحقق من النظام",
|
||||
|
||||
"kg": "kg",
|
||||
"g": "g",
|
||||
"oz": "oz",
|
||||
"ml": "ml",
|
||||
"lb": "lb",
|
||||
"milkml": "milkml",
|
||||
"Waterml": "Waterml",
|
||||
"floz": "floz",
|
||||
"lboz": "lboz",
|
||||
"st": "st:lb"
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,162 @@
|
|||
{
|
||||
"msgTitle": "Freundlicher Hinweis",
|
||||
"msgUpgradeFail": "Aktualisierung fehlgeschlagen",
|
||||
"msgDownloading": "Wird heruntergeladen",
|
||||
"msgLatestVersion": "Es ist bereits die neueste Version!",
|
||||
"msgCancel": "Sie haben die Aktion abgebrochen!",
|
||||
"msgLoginSuccess": "Anmeldung erfolgreich!",
|
||||
"msgDelete": "Erfolgreich gelöscht",
|
||||
"msgSetSuccess": "Erfolgreich eingestellt",
|
||||
"msgBottom": "Ende, schau dir etwas anderes an.",
|
||||
"msgNoMoreData": "Keine weiteren Daten mehr!",
|
||||
"msgSetPasswordSuccess": "Passwort erfolgreich gesetzt, gehen Sie in das Programm!",
|
||||
"msgAddUser": "Keine Mitglieder vorhanden, bitte fügen Sie zunächst hinzu",
|
||||
"verifyNickName": "Bitte geben Sie einen Spitznamen ein",
|
||||
"verifyNotOptional": "Zukünftige Daten können nicht ausgewählt werden",
|
||||
"verifyDate": "Bitte wählen Sie das Messdatum aus",
|
||||
"verifyBirthday": "Bitte wählen Sie das Geburtsdatum aus",
|
||||
"verifyHeight": "Bitte geben Sie Ihre Körpergröße ein.",
|
||||
"verifyWeight": "Geben Sie Ihr Gewicht ein.",
|
||||
"verifyGender": "Bitte wählen Sie Ihr Geschlecht",
|
||||
"verifyBontrast": "Bitte wählen Sie Daten aus",
|
||||
"verifyBodyDate": "Bitte wählen Sie die richtige Zeit aus",
|
||||
"verifyRecord": "Bitte eingeben",
|
||||
"verifyPicker": "Bitte wählen Sie",
|
||||
"verifyAccount": "Bitte geben Sie eine korrekte Handynummer oder E-Mail-Adresse ein",
|
||||
"verifyEmail": "Bitte geben Sie Ihre E-Mail ein",
|
||||
"verifyEmailCorrect": "Bitte geben Sie eine korrekte E-Mail-Adresse ein.",
|
||||
"verifyMobile": "Bitte geben Sie die Handynummer ein.",
|
||||
"verifyMobileCorrect": "Bitte geben Sie die korrekte Handynummer ein.",
|
||||
"verifyCode": "Bitte geben Sie den Sicherheitscode ein.",
|
||||
"verifyPassword": "Bitte geben Sie das Passwort ein",
|
||||
"verifyPasswordTwo": "Bitte geben Sie das Passwort zur Bestätigung ein",
|
||||
"verifyPasswordCorrect": "Bitte bestätigen Sie, dass die beiden Passwörter übereinstimmen.",
|
||||
"verifyAgreement": "Bitte bestätigen und das Abkommen ankreuzen.",
|
||||
"verifyOutLogin": "Sollen Sie sich abmelden?",
|
||||
"verifyDeleteUser": "Soll dieser Mitglied gelöscht werden?",
|
||||
"verifyDeleteHistory": "Sollen die aktuellen Messaufzeichnungen gelöscht werden?",
|
||||
"verifyDeleteAccount": "Nach erfolgreicher Löschung werden alle mit diesem Konto verbundenen Informationen gelöscht und können nicht wiederhergestellt werden. Möchten Sie das Konto löschen?",
|
||||
"btnConfirm": "Bestätigung",
|
||||
"btnSubmit": "einreichen",
|
||||
"btnSancellation": "stornieren",
|
||||
"btnContinue": "fortsetzen",
|
||||
"btnBack": "Zurückkehren",
|
||||
"btnDelete": "löschen",
|
||||
"ConnectionTimeout": "Verbindungszeitüberschreitung, klicken Sie auf erneute Verbindung",
|
||||
"Measuring": "Während der Messung, legen Sie das Essen auf die Waage.",
|
||||
"Weight": "Gewicht",
|
||||
"RecordWeight": "Geben Sie das Gewicht der Lebensmittel ein.",
|
||||
"SearchBluetooth": "Bluetooth-Suche läuft",
|
||||
"Remeasure": "Daten sind abnorm, bitte messen Sie neu!",
|
||||
"reset": "Datenanomalie, bitte zählen Sie zurück und messen Sie neu!",
|
||||
"Disconnect": "Verbindung trennen",
|
||||
"remeasure": "Neue Messung",
|
||||
"resetBtn": "Nullsetzen",
|
||||
"UnitBtn": "Einheit",
|
||||
"SaveResult": "speichern",
|
||||
"titleHome": "Startseite",
|
||||
"titleMenu": "Rezept",
|
||||
"titleMenuAdd": "Rezept hinzufügen",
|
||||
"titleMenuSearch": "Rezepte suchen",
|
||||
"titleCount": "Essensplanung",
|
||||
"titleCountList": "Zutatenlager",
|
||||
"titleCustomKcal": "Benutzerdefinierte Kalorien",
|
||||
"titleEveryMeal": "Detaillierte Speiseinformationen",
|
||||
"titleCountSearch": "Zutaten-Suche",
|
||||
"titleeveryDay": "Ernährungsanalyse",
|
||||
"titleMe": "mein",
|
||||
"titleDetail": "Einzelheiten",
|
||||
"titleBody": "Ziel",
|
||||
"titleHistory": "Essensaufzeichnung",
|
||||
"titlePhone": "Handynummer binden",
|
||||
"titleEmail": "E-Mail-Bindung",
|
||||
"titlePasswordEdit": "Passwort ändern",
|
||||
"titleSet": "Einstellung",
|
||||
"titleDate": "Datum",
|
||||
"titleMember": "Daten",
|
||||
"titleManage": "Mitgliedermanagement",
|
||||
"titleManageAdd": "Mitglied hinzufügen",
|
||||
"titleAboutUs": "Über uns",
|
||||
"titleSetPassword": "Passwort festlegen",
|
||||
"titlePassword": "Passwort",
|
||||
"titleConfirmPassword": "Passwort bestätigen",
|
||||
"titleForgotPassword": "Passwort vergessen",
|
||||
"titleCode": "Bestätigungscode",
|
||||
"titleLanguage": "Sprache.",
|
||||
"titleSendCode": "CAPTCHA-Code abrufen",
|
||||
"titleSendCodeRetry": "Nach S erneut senden",
|
||||
"titleLogin": "Anmelden",
|
||||
"titleRegister": "Registrierung",
|
||||
"titleToggleLogin": "Anmeldungswechsel",
|
||||
"titleAccountText": "Handynummer/E-Mail",
|
||||
"titleAgreementText": "Lesen und zustimmen",
|
||||
"titleAgreementContntText": "Datenschutzrichtlinie",
|
||||
"titleVersionUpdate": "Versionsupdate",
|
||||
"titleNewVersion": "Neue Version",
|
||||
"infoActivityCoefficient": "Aktivitätskoeffizient",
|
||||
"infoPersonalProfile": "Persönliche Daten",
|
||||
"infoMyRecipes": "Mein Rezeptbuch",
|
||||
"infoMyCollection": "Meine Sammlung",
|
||||
"infoAvatar": "Profilbild",
|
||||
"infoNickname": "Spitzname",
|
||||
"infoMobile": "Handynummer",
|
||||
"infoEmail": "E-Mail",
|
||||
"infoAge": "Alter",
|
||||
"infoAgeunit": "Jahr",
|
||||
"infoGender": "Geschlecht",
|
||||
"infoMan": "Mann",
|
||||
"infoWoman": "Frau",
|
||||
"infoUnknown": "Unbekannt",
|
||||
"infoBirthday": "Geburtsdatum",
|
||||
"infoHeight": "Körpergröße",
|
||||
"infoWeight": "Körpergewicht",
|
||||
"btnEdit": "Redaktion",
|
||||
"btnDelete": "löschen",
|
||||
"btnAdd": "hinzufügen",
|
||||
"btnDetail": "Details anzeigen",
|
||||
"btnDeleteAccount": "Konto löschen",
|
||||
"btnLogOut": "Ausloggen",
|
||||
"countIntake": "Aufnahme",
|
||||
"countCalorieIntake": "Wärmeaufnahme",
|
||||
"countMealdetails": "Essensdetails",
|
||||
"countAddFood": "Futtermittel hinzufügen",
|
||||
"countNutritionalProportion": "Anteil der Nährstoffe",
|
||||
"countComponentStatistics": "Zusammensetzung statistik",
|
||||
"countCalorieAnalysis": "Kalorienanalyse",
|
||||
"countNutrientElementEnergyProportion": "Anteil der Nährstoffenergie",
|
||||
"countNutritionClassification": "Ernährungsgruppeneinteilung",
|
||||
"countNutritionElementRankingList": "Ranking der Nährstoffe",
|
||||
"countFoodTypes": "Lebensmitteltyp",
|
||||
|
||||
"total": "mit",
|
||||
"records": "Notiert",
|
||||
"Search": "Suche läuft.",
|
||||
"VoiceSearch": "Jetzt die suche.",
|
||||
"Save": "Intakt",
|
||||
"noMoreData": "Keine weiteren daten",
|
||||
"HistoricalSearch": "Suche in der geschichte",
|
||||
"wantSearch": "Durchsuch das ziel",
|
||||
"verifyCalorie": "Geben sie kalorien ein.",
|
||||
"kcal": "Kalorien",
|
||||
"countNoFood": "Vorübergehende lebensmittelknappheit.",
|
||||
"msgLoginTips": "Loggen sie sich ein und sehen sie mehr nach",
|
||||
"Nutrients": "Spender",
|
||||
"Content": "Hüllen",
|
||||
"CaloriesAndnutrients": "Kalorien und ernährung",
|
||||
"ImproveInformation": "Nachrichten verbessern.",
|
||||
"WhetherTodelete": "Ist sie gelöscht",
|
||||
"BusinessCooperation": "Kooperation seitens der händler",
|
||||
"verifyActivityCoefficient": "Bitte wählen sie die multiplikatoren",
|
||||
"devicesTips":"Gerät nicht registriert. Bitte wenden Sie sich an den Verkäufer zur Systemzertifizierung.",
|
||||
"kg": "kg",
|
||||
"g": "g",
|
||||
"oz": "oz",
|
||||
"ml": "ml",
|
||||
"lb": "lb",
|
||||
"milkml": "milkml",
|
||||
"Waterml": "Waterml",
|
||||
"floz": "floz",
|
||||
"lboz": "lboz",
|
||||
"st": "st:lb"
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,161 @@
|
|||
{
|
||||
"msgTitle": "Friendly Reminder",
|
||||
"msgUpgradeFail": "Upgrade failed",
|
||||
"msgDownloading": "Downloading",
|
||||
"msgLatestVersion": "It's already the latest version!",
|
||||
"msgCancel": "You have canceled the operation!",
|
||||
"msgLoginSuccess": "Login successful!",
|
||||
"msgDelete": "Deleted successfully",
|
||||
"msgSetSuccess": "Setup successful",
|
||||
"msgBottom": "That's it, let's look at something else",
|
||||
"msgNoMoreData": "No more data available!",
|
||||
"msgSetPasswordSuccess": "Password set successfully, entering the program!",
|
||||
"msgAddUser": "Currently, there are no members. Please add one first",
|
||||
"verifyNickName": "Please enter a nickname",
|
||||
"verifyNotOptional": "Future dates are not selectable",
|
||||
"verifyDate": "Please select the measurement date",
|
||||
"verifyBirthday": "Please select your date of birth",
|
||||
"verifyHeight": "Please enter your height",
|
||||
"verifyWeight": "Please enter your weight",
|
||||
"verifyGender": "Please select gender",
|
||||
"verifyBontrast": "Please select data",
|
||||
"verifyBodyDate": "Please choose the correct time",
|
||||
"verifyRecord": "Please enter",
|
||||
"verifyPicker": "Please select",
|
||||
"verifyAccount": "Please enter a correct phone number or email address",
|
||||
"verifyEmail": "Please enter your email",
|
||||
"verifyEmailCorrect": "Please enter a correct email address",
|
||||
"verifyMobile": "Please enter your phone number",
|
||||
"verifyMobileCorrect": "Please enter a correct phone number",
|
||||
"verifyCode": "Please enter the verification code",
|
||||
"verifyPassword": "Please enter the password",
|
||||
"verifyPasswordTwo": "Please enter the confirmation password",
|
||||
"verifyPasswordCorrect": "Please confirm that the passwords entered are identical",
|
||||
"verifyAgreement": "Please confirm and check the agreement first",
|
||||
"verifyOutLogin": "Are you sure you want to log out?",
|
||||
"verifyDeleteUser": "Should this member be deleted?",
|
||||
"verifyDeleteHistory": "Do you want to delete the current measurement record?",
|
||||
"verifyDeleteAccount": "After successful deletion, all associated information of the account will be cleared and cannot be retrieved. Are you sure you want to delete?",
|
||||
"btnConfirm": "confirm",
|
||||
"btnSubmit": "submit",
|
||||
"btnSancellation": "Cancel",
|
||||
"btnContinue": "continue",
|
||||
"btnBack": "return",
|
||||
"ConnectionTimeout": "Connection timed out, click to reconnect",
|
||||
"Measuring": "During the measurement, please place the food on the scale",
|
||||
"Weight": "weight",
|
||||
"RecordWeight": "Please enter food weight",
|
||||
"SearchBluetooth": "In Bluetooth search",
|
||||
"Remeasure": "Data anomaly, please re-measure!",
|
||||
"reset": "Data anomaly, please reset and measure again!",
|
||||
"Disconnect": "Disconnect",
|
||||
"remeasure": "remeasure",
|
||||
"resetBtn": "Tare",
|
||||
"UnitBtn": "unit",
|
||||
"SaveResult": "save",
|
||||
"titleHome": "home",
|
||||
"titleMenu": "recipe",
|
||||
"titleMenuAdd": "Add recipe",
|
||||
"titleMenuSearch": "Search for recipes",
|
||||
"titleCount": "Count food",
|
||||
"titleCountList": "Ingredient library",
|
||||
"titleCustomKcal": "Custom calorie",
|
||||
"titleEveryMeal": "Meal details",
|
||||
"titleCountSearch": "Ingredient search",
|
||||
"titleeveryDay": "Nutritional Analysis",
|
||||
"titleMe": "my",
|
||||
"titleDetail": "Details",
|
||||
"titleBody": "target",
|
||||
"titleHistory": "Diet record",
|
||||
"titlePhone": "Bind mobile number",
|
||||
"titleEmail": "Bind email",
|
||||
"titlePasswordEdit": "Change password",
|
||||
"titleSet": "Settings",
|
||||
"titleDate": "date",
|
||||
"titleMember": "data",
|
||||
"titleManage": "Member Management",
|
||||
"titleManageAdd": "Add member",
|
||||
"titleAboutUs": "About Us",
|
||||
"titleSetPassword": "set password",
|
||||
"titlePassword": "password",
|
||||
"titleConfirmPassword": "Confirm Password",
|
||||
"titleForgotPassword": "Forgot password",
|
||||
"titleCode": "CAPTCHA",
|
||||
"titleLanguage": "Language",
|
||||
"titleSendCode": "Get Verification code",
|
||||
"titleSendCodeRetry": "Resend after S",
|
||||
"titleLogin": "login",
|
||||
"titleRegister": "register",
|
||||
"titleToggleLogin": "Switch login",
|
||||
"titleAccountText": "Mobile phone number/Email",
|
||||
"titleAgreementText": "Read and agree",
|
||||
"titleAgreementContntText": "Privacy Policy",
|
||||
"titleVersionUpdate": "Version Update",
|
||||
"titleNewVersion": "new version",
|
||||
"infoActivityCoefficient": "Activity coefficient",
|
||||
"infoPersonalProfile": "Personal Profile",
|
||||
"infoMyRecipes": "My recipe",
|
||||
"infoMyCollection": "My Collection",
|
||||
"infoAvatar": "avatar",
|
||||
"infoNickname": "nickname",
|
||||
"infoMobile": "mobile phone number",
|
||||
"infoEmail": "email",
|
||||
"infoAge": "age",
|
||||
"infoAgeunit": "year",
|
||||
"infoGender": "gender",
|
||||
"infoMan": "male",
|
||||
"infoWoman": "female",
|
||||
"infoUnknown": "unknown",
|
||||
"infoBirthday": "Birthday",
|
||||
"infoHeight": "height",
|
||||
"infoWeight": "weight",
|
||||
"btnEdit": "edit",
|
||||
"btnDelete": "delete",
|
||||
"btnAdd": "add",
|
||||
"btnDetail": "View details",
|
||||
"btnDeleteAccount": "Delete account",
|
||||
"btnLogOut": "Log out",
|
||||
"countIntake": "intake",
|
||||
"countCalorieIntake": "caloric intake",
|
||||
"countMealdetails": "Meal details",
|
||||
"countAddFood": "Add food",
|
||||
"countNutritionalProportion": "Nutrient composition",
|
||||
"countComponentStatistics": "Ingredient statistics",
|
||||
"countCalorieAnalysis": "Calorie analysis",
|
||||
"countNutrientElementEnergyProportion": "Energy proportion",
|
||||
"countNutritionClassification": "Nutrition classification",
|
||||
"countNutritionElementRankingList": "Nutrient Rankings",
|
||||
"countFoodTypes": "Food type",
|
||||
|
||||
"total": "Total of",
|
||||
"records": "records",
|
||||
"Search": "Search",
|
||||
"VoiceSearch": "VoiceSearch",
|
||||
"Save": "Save",
|
||||
"noMoreData": "There is no more data",
|
||||
"HistoricalSearch": "Historical search",
|
||||
"wantSearch": "I guess you want to search",
|
||||
"verifyCalorie": "Please enter calories",
|
||||
"kcal": "Calorie",
|
||||
"countNoFood": "NO Food Yet",
|
||||
"msgLoginTips": "Log in to view more",
|
||||
"Nutrients": "Nutrients",
|
||||
"Content": "Content",
|
||||
"CaloriesAndnutrients": "Calories and nutrients",
|
||||
"ImproveInformation": "Improve information",
|
||||
"WhetherTodelete": "Whether to delete",
|
||||
"BusinessCooperation": "Businesscooperation",
|
||||
"verifyActivityCoefficient": "Please select the activity coefficient",
|
||||
"devicesTips":"The equipment has not been registered. Please contact the seller for system certification.",
|
||||
"kg": "kg",
|
||||
"g": "g",
|
||||
"oz": "oz",
|
||||
"ml": "ml",
|
||||
"lb": "lb",
|
||||
"milkml": "milkml",
|
||||
"Waterml": "Waterml",
|
||||
"floz": "floz",
|
||||
"lboz": "lboz",
|
||||
"st": "st:lb"
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,163 @@
|
|||
{
|
||||
|
||||
"msgTitle": "Consejo amistoso",
|
||||
"msgUpgradeFail": "Actualización fallida",
|
||||
"msgDownloading": "Descargando",
|
||||
"msgLatestVersion": "Ya es la versión más reciente!",
|
||||
"msgCancel": "Ha cancelado la operación!",
|
||||
"msgLoginSuccess": "Inicio de sesión exitoso!",
|
||||
"msgDelete": "Eliminado con éxito",
|
||||
"msgSetSuccess": "Configuración exitosa",
|
||||
"msgBottom": "Hasta aquí, veamos algo más",
|
||||
"msgNoMoreData": "No hay más datos disponibles!",
|
||||
"msgSetPasswordSuccess": "La configuración de la contraseña ha tenido éxito, entra en el programa!",
|
||||
"msgAddUser": "No hay miembros por el momento, por favor añádelos primero.",
|
||||
"verifyNickName": "Por favor, ingrese un nombre de usuario",
|
||||
"verifyNotOptional": "No se puede seleccionar una fecha futura",
|
||||
"verifyDate": "Por favor, seleccione la fecha de medición",
|
||||
"verifyBirthday": "Por favor, seleccione la fecha de nacimiento",
|
||||
"verifyHeight": "Por favor, ingrese su altura",
|
||||
"verifyWeight": "Por favor, ingrese su peso",
|
||||
"verifyGender": "Por favor, seleccione el género",
|
||||
"verifyBontrast": "Por favor, seleccione los datos",
|
||||
"verifyBodyDate": "Por favor, seleccione la hora correcta",
|
||||
"verifyRecord": "Por favor, ingrese",
|
||||
"verifyPicker": "Por favor, elija",
|
||||
"verifyAccount": "Por favor, ingrese un número de teléfono o correo electrónico correcto",
|
||||
"verifyEmail": "Por favor, introduzca el correo electrónico",
|
||||
"verifyEmailCorrect": "Por favor, ingrese un correo electrónico válido",
|
||||
"verifyMobile": "Por favor, ingrese su número de teléfono",
|
||||
"verifyMobileCorrect": "Por favor, ingrese el número de teléfono correcto.",
|
||||
"verifyCode": "Por favor, ingrese el código de verificación",
|
||||
"verifyPassword": "Por favor, introduzca la contraseña",
|
||||
"verifyPasswordTwo": "Por favor, ingrese la contraseña de confirmación",
|
||||
"verifyPasswordCorrect": "Por favor, confirme que las contraseñas ingresadas coinciden.",
|
||||
"verifyAgreement": "Por favor, confirme y marque el acuerdo primero.",
|
||||
"verifyOutLogin": "¿Deseas cerrar sesión?",
|
||||
"verifyDeleteUser": "¿Eliminar a este miembro?",
|
||||
"verifyDeleteHistory": "¿Eliminar el registro de medición actual?",
|
||||
"verifyDeleteAccount": "Una vez eliminado, toda la información asociada a esta cuenta se borrará y no se podrá recuperar. ¿Desea eliminarla?",
|
||||
"btnConfirm": "confirmar",
|
||||
"btnSubmit": "enviar",
|
||||
"btnSancellation": "Cancelar",
|
||||
"btnContinue": "Continuar",
|
||||
"btnBack": "volver",
|
||||
"btnDelete": "eliminar",
|
||||
"ConnectionTimeout": "Tiempo de espera de conexión agotado, haga clic para reconectar",
|
||||
"Measuring": "Durante la medición, coloque la comida en la báscula.",
|
||||
"Weight": "peso",
|
||||
"RecordWeight": "Ingrese el peso de la comida",
|
||||
"SearchBluetooth": "Buscando Bluetooth",
|
||||
"Remeasure": "Los datos son anómalos, vuelva a medirlos!",
|
||||
"reset": "Los datos son anómalos, por favor reinicie y vuelva a medir!",
|
||||
"Disconnect": "Desconectar",
|
||||
"remeasure": "Volver a medir",
|
||||
"resetBtn": "eliminación",
|
||||
"UnitBtn": "unidad",
|
||||
"SaveResult": "guardar",
|
||||
"titleHome": "Página de inicio",
|
||||
"titleMenu": "Receta",
|
||||
"titleMenuAdd": "Añadir receta",
|
||||
"titleMenuSearch": "Buscar recetas",
|
||||
"titleCount": "Control de alimentos",
|
||||
"titleCountList": "Almacén de ingredientes",
|
||||
"titleCustomKcal": "Calorías personalizadas",
|
||||
"titleEveryMeal": "Detalles de la comida",
|
||||
"titleCountSearch": "Búsqueda de ingredientes",
|
||||
"titleeveryDay": "Análisis nutricional",
|
||||
"titleMe": "mi",
|
||||
"titleDetail": "detalles",
|
||||
"titleBody": "Objetivo",
|
||||
"titleHistory": "Registro de la dieta",
|
||||
"titlePhone": "Vincular número de teléfono",
|
||||
"titleEmail": "Vincular correo electrónico",
|
||||
"titlePasswordEdit": "cambiar la contraseña",
|
||||
"titleSet": "configuración",
|
||||
"titleDate": "fecha",
|
||||
"titleMember": "Materiales",
|
||||
"titleManage": "Gestión de miembros",
|
||||
"titleManageAdd": "Añadir miembros",
|
||||
"titleAboutUs": "Sobre nosotros",
|
||||
"titleSetPassword": "Establecer contraseña",
|
||||
"titlePassword": "contraseña",
|
||||
"titleConfirmPassword": "Confirmar contraseña",
|
||||
"titleForgotPassword": "Olvidé la contraseña",
|
||||
"titleCode": "código de verificación",
|
||||
"titleLanguage": "El lenguaje",
|
||||
"titleSendCode": "Obtener código de verificación",
|
||||
"titleSendCodeRetry": "Reenvío posterior a S",
|
||||
"titleLogin": "Iniciar sesión",
|
||||
"titleRegister": "registro",
|
||||
"titleToggleLogin": "Cambiar de inicio de sesión",
|
||||
"titleAccountText": "Número de teléfono/correo electrónico",
|
||||
"titleAgreementText": "Leer y aceptar",
|
||||
"titleAgreementContntText": "Acuerdo de privacidad",
|
||||
"titleVersionUpdate": "Actualización de versión",
|
||||
"titleNewVersion": "Nueva versión",
|
||||
"infoActivityCoefficient": "factor de actividad",
|
||||
"infoPersonalProfile": "Perfil personal",
|
||||
"infoMyRecipes": "Mi recetario",
|
||||
"infoMyCollection": "Mi colección",
|
||||
"infoAvatar": "Avatar",
|
||||
"infoNickname": "Apodo",
|
||||
"infoMobile": "número de teléfono móvil",
|
||||
"infoEmail": "correo electrónico",
|
||||
"infoAge": "edad",
|
||||
"infoAgeunit": "año",
|
||||
"infoGender": "Género",
|
||||
"infoMan": "hombre",
|
||||
"infoWoman": "mujer",
|
||||
"infoUnknown": "desconocido",
|
||||
"infoBirthday": "Fecha de nacimiento",
|
||||
"infoHeight": "altura",
|
||||
"infoWeight": "Peso",
|
||||
"btnEdit": "editar",
|
||||
"btnDelete": "eliminar",
|
||||
"btnAdd": "añadir",
|
||||
"btnDetail": "Ver detalles",
|
||||
"btnDeleteAccount": "Eliminar la cuenta",
|
||||
"btnLogOut": "Cerrar sesión",
|
||||
"countIntake": "Ingestión",
|
||||
"countCalorieIntake": "Ingesta de calorías",
|
||||
"countMealdetails": "Detalles de la comida",
|
||||
"countAddFood": "Añadir alimentos",
|
||||
"countNutritionalProportion": "Proporción de nutrientes",
|
||||
"countComponentStatistics": "Estadística de componentes",
|
||||
"countCalorieAnalysis": "Análisis de calorías",
|
||||
"countNutrientElementEnergyProportion": "Proporción de energía de los nutrientes",
|
||||
"countNutritionClassification": "Clasificación nutricional",
|
||||
"countNutritionElementRankingList": "Ranking de elementos nutricionales",
|
||||
"countFoodTypes": "Tipo de alimento",
|
||||
|
||||
"total": "total",
|
||||
"records": "Los registros",
|
||||
"Search": "búsqueda",
|
||||
"VoiceSearch": "Búsqueda por voz",
|
||||
"Save": "guardar",
|
||||
"noMoreData": "No hay más datos",
|
||||
"HistoricalSearch": "Búsqueda en historia",
|
||||
"wantSearch": "Supongo que quieres buscar",
|
||||
"verifyCalorie": "Por favor, introduzca calorías",
|
||||
"kcal": "caloría",
|
||||
"countNoFood": "No hay comida todavía",
|
||||
"msgLoginTips": "Iniciar sesión para ver más",
|
||||
"Nutrients": "nutriente",
|
||||
"Content": "Elcontenido",
|
||||
"CaloriesAndnutrients": "Calorías y nutrición",
|
||||
"ImproveInformation": "Perfeccionando el mensaje",
|
||||
"WhetherTodelete": "Eliminar sí no",
|
||||
"BusinessCooperation": "Cooperación empresarial",
|
||||
"verifyActivityCoefficient": "Por favor seleccione el coeficiente de actividad",
|
||||
"devicesTips":"El equipo no está registrado. Por favor, contacte al vendedor para realizar la autenticación del sistema.",
|
||||
"kg": "kg",
|
||||
"g": "g",
|
||||
"oz": "oz",
|
||||
"ml": "ml",
|
||||
"lb": "lb",
|
||||
"milkml": "milkml",
|
||||
"Waterml": "Waterml",
|
||||
"floz": "floz",
|
||||
"lboz": "lboz",
|
||||
"st": "st:lb"
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,161 @@
|
|||
{
|
||||
"msgTitle": "Conseil amical",
|
||||
"msgUpgradeFail": "Mise à niveau échouée",
|
||||
"msgDownloading": "En cours de téléchargement",
|
||||
"msgLatestVersion": "C'est déjà la dernière version !",
|
||||
"msgCancel": "Vous avez annulé l'opération !",
|
||||
"msgLoginSuccess": "Connexion réussie !",
|
||||
"msgDelete": "Suppression réussie",
|
||||
"msgSetSuccess": "Paramètres réussis",
|
||||
"msgBottom": "C'est la fin, regarde quelque chose d'autre.",
|
||||
"msgNoMoreData": "Plus de données disponibles !",
|
||||
"msgSetPasswordSuccess": "Mot de passe configuré avec succès, accédez au programme !",
|
||||
"msgAddUser": "Aucun membre pour le moment, veuillez en ajouter d'abord.",
|
||||
"verifyNickName": "Veuillez entrer un pseudonyme",
|
||||
"verifyNotOptional": "La date future ne peut pas être sélectionnée",
|
||||
"verifyDate": "Veuillez sélectionner la date de mesure",
|
||||
"verifyBirthday": "Veuillez sélectionner la date de naissance",
|
||||
"verifyHeight": "Veuillez entrer votre taille",
|
||||
"verifyWeight": "Veuillez entrer votre poids",
|
||||
"verifyGender": "Veuillez choisir le sexe",
|
||||
"verifyBontrast": "Veuillez sélectionner les données",
|
||||
"verifyBodyDate": "Veuillez choisir l'heure correcte",
|
||||
"verifyRecord": "Veuillez entrer",
|
||||
"verifyPicker": "Veuillez choisir",
|
||||
"verifyAccount": "Veuillez saisir un numéro de téléphone ou une adresse e-mail corrects",
|
||||
"verifyEmail": "Veuillez saisir une adresse e-mail",
|
||||
"verifyEmailCorrect": "Veuillez entrer une adresse e-mail valide.",
|
||||
"verifyMobile": "Veuillez entrer votre numéro de téléphone",
|
||||
"verifyMobileCorrect": "Veuillez saisir un numéro de téléphone correct",
|
||||
"verifyCode": "Veuillez entrer le code de vérification",
|
||||
"verifyPassword": "Veuillez entrer le mot de passe",
|
||||
"verifyPasswordTwo": "Veuillez saisir le mot de passe de confirmation",
|
||||
"verifyPasswordCorrect": "Veuillez confirmer que les deux mots de passe saisis sont identiques.",
|
||||
"verifyAgreement": "Veuillez d'abord confirmer et cocher l'accord.",
|
||||
"verifyOutLogin": "Voulez-vous vous déconnecter ?",
|
||||
"verifyDeleteUser": "Voulez-vous supprimer ce membre ?",
|
||||
"verifyDeleteHistory": "Voulez-vous supprimer l'enregistrement de mesure actuel ?",
|
||||
"verifyDeleteAccount": "Après la suppression réussie, toutes les informations associées à ce compte seront effacées et ne pourront pas être récupérées. Voulez-vous vraiment supprimer ?",
|
||||
"btnConfirm": "confirmer",
|
||||
"btnSubmit": "Soumettre",
|
||||
"btnSancellation": "Annuler",
|
||||
"btnContinue": "Continuer",
|
||||
"btnBack": "retourner",
|
||||
"btnDelete": "supprimer",
|
||||
"ConnectionTimeout": "Déconnexion, cliquez pour se reconnecter",
|
||||
"Measuring": "En cours de mesure, veuillez placer la nourriture sur la balance.",
|
||||
"Weight": "poids",
|
||||
"RecordWeight": "Veuillez entrer le poids de la nourriture",
|
||||
"SearchBluetooth": "Recherche Bluetooth en cours",
|
||||
"Remeasure": "Données anormales, veuillez reprendre la mesure !",
|
||||
"reset": "Données anormales, veuillez les réinitialiser et recommencer la mesure !",
|
||||
"Disconnect": "Déconnexion",
|
||||
"remeasure": "Re-mesurer",
|
||||
"resetBtn": "Réinitialisation",
|
||||
"UnitBtn": "unité",
|
||||
"SaveResult": "sauvegarder",
|
||||
"titleHome": "Page d'accueil",
|
||||
"titleMenu": "Recette",
|
||||
"titleMenuAdd": "Ajouter une recette",
|
||||
"titleMenuSearch": "Rechercher des recettes",
|
||||
"titleCount": "Compter les calories",
|
||||
"titleCountList": "Répertoire des ingrédients",
|
||||
"titleCustomKcal": "Calories personnalisées",
|
||||
"titleEveryMeal": "Détails du repas",
|
||||
"titleCountSearch": "Recherche d'ingrédients",
|
||||
"titleeveryDay": "Analyse nutritionnelle",
|
||||
"titleMe": "mon",
|
||||
"titleDetail": "Détails",
|
||||
"titleBody": "Objectif",
|
||||
"titleHistory": "Journal alimentaire",
|
||||
"titlePhone": "Lier un numéro de téléphone",
|
||||
"titleEmail": "Lier une adresse e-mail",
|
||||
"titlePasswordEdit": "Modifier le mot de passe",
|
||||
"titleSet": "Paramétrage",
|
||||
"titleDate": "date",
|
||||
"titleMember": "Données",
|
||||
"titleManage": "Gestion des membres",
|
||||
"titleManageAdd": "Ajouter un membre",
|
||||
"titleAboutUs": "À propos de nous",
|
||||
"titleSetPassword": "Définir un mot de passe",
|
||||
"titlePassword": "mot de passe",
|
||||
"titleConfirmPassword": "Confirmer le mot de passe",
|
||||
"titleForgotPassword": "Mot de passe oublié",
|
||||
"titleCode": "Code de vérification",
|
||||
"titleLanguage": "Langue (S)",
|
||||
"titleSendCode": "Obtenir le code de vérification",
|
||||
"titleSendCodeRetry": "Réémission après S",
|
||||
"titleLogin": "Connexion",
|
||||
"titleRegister": "Inscription",
|
||||
"titleToggleLogin": "Changer de connexion",
|
||||
"titleAccountText": "Numéro de téléphone / Adresse e-mail",
|
||||
"titleAgreementText": "Lire et accepter",
|
||||
"titleAgreementContntText": "Politique de confidentialité",
|
||||
"titleVersionUpdate": "Mise à jour de version",
|
||||
"titleNewVersion": "Nouvelle version",
|
||||
"infoActivityCoefficient": "Coefficient d'activité",
|
||||
"infoPersonalProfile": "Profil personnel",
|
||||
"infoMyRecipes": "Ma recette",
|
||||
"infoMyCollection": "Ma collection",
|
||||
"infoAvatar": "Avatar",
|
||||
"infoNickname": "Pseudonyme",
|
||||
"infoMobile": "numéro de téléphone portable",
|
||||
"infoEmail": "boîte aux lettres",
|
||||
"infoAge": "Âge",
|
||||
"infoAgeunit": "Année",
|
||||
"infoGender": "Genre",
|
||||
"infoMan": "homme",
|
||||
"infoWoman": "femme",
|
||||
"infoUnknown": "Inconnu",
|
||||
"infoBirthday": "Date de naissance",
|
||||
"infoHeight": "taille",
|
||||
"infoWeight": "poids",
|
||||
"btnEdit": "Éditer",
|
||||
"btnDelete": "supprimer",
|
||||
"btnAdd": "Ajouter",
|
||||
"btnDetail": "Voir les détails",
|
||||
"btnDeleteAccount": "Supprimer le compte",
|
||||
"btnLogOut": "Se déconnecter",
|
||||
"countIntake": "Absorption",
|
||||
"countCalorieIntake": "L'apport calorique",
|
||||
"countMealdetails": "Détails du repas",
|
||||
"countAddFood": "Ajouter des aliments",
|
||||
"countNutritionalProportion": "Proportion nutritionnelle",
|
||||
"countComponentStatistics": "Statistiques des composants",
|
||||
"countCalorieAnalysis": "Analyse des calories",
|
||||
"countNutrientElementEnergyProportion": "La proportion d'énergie des éléments nutritifs",
|
||||
"countNutritionClassification": "Classification nutritionnelle",
|
||||
"countNutritionElementRankingList": "Classement des éléments nutritifs",
|
||||
"countFoodTypes": "Type d'alimentation",
|
||||
|
||||
"total ": "total",
|
||||
"Records ": " un enregistrement",
|
||||
"Search": "rechercher ",
|
||||
"VoiceSearch": "recherche vocale",
|
||||
"Save": "Save",
|
||||
"NoMoreData ": "plus de données",
|
||||
"HistoricalSearch": "recherche historique",
|
||||
"WantSearch ": "devinez que vous voulez rechercher",
|
||||
"VerifyCalorie ": "s’il vous plaît entrer des calories ",
|
||||
"Kcal ": "calories",
|
||||
"CountNoFood ": "pas de nourriture pour le moment ",
|
||||
"MsgLoginTips ": "voir plus après connexion ",
|
||||
"Nutriments ": "nutriments ",
|
||||
"Content": "contenu ",
|
||||
"CaloriesAndnutrients": "calories et nutrition ",
|
||||
"Améliorer l’information ": " améliorer l’information ",
|
||||
"WhetherTodelete": "supprimer ou non ",
|
||||
"BusinessCooperation": "coopération commerciale ",
|
||||
"verifyActivityCoefficient ": "veuillez sélectionner des coefficients d’activité.",
|
||||
"devicesTips":"L'équipement n'est pas enregistré. Veuillez contacter le vendeur pour une authentification du système.",
|
||||
"kg": "kg",
|
||||
"g": "g",
|
||||
"oz": "oz",
|
||||
"ml": "ml",
|
||||
"lb": "lb",
|
||||
"milkml": "milkml",
|
||||
"Waterml": "Waterml",
|
||||
"floz": "floz",
|
||||
"lboz": "lboz",
|
||||
"st": "st:lb"
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
import en from './en.json'
|
||||
import zh from './zh.json'
|
||||
import zhHant from './zh-Hant.json'
|
||||
import ja from './ja.json'
|
||||
import fr from './fr.json'
|
||||
import de from './de.json'
|
||||
import ko from './ko.json'
|
||||
import ru from './ru.json'
|
||||
import pt from './pt.json'
|
||||
import es from './es.json'
|
||||
import ar from './ar.json'
|
||||
export default {
|
||||
zh, //中文
|
||||
ar, //阿拉伯
|
||||
de, //德语
|
||||
en, // 英语
|
||||
es, //西班牙
|
||||
fr, //法语
|
||||
ja, //日语
|
||||
ko, //韩语
|
||||
pt, //葡萄牙
|
||||
ru, //俄语
|
||||
"zh-Hans": zh, //中文
|
||||
'zh-Hant': zhHant, //繁体
|
||||
"en-CN": en,
|
||||
"jp":ja,
|
||||
"fra":fr,
|
||||
"kor":ko,
|
||||
"spa":es,
|
||||
"ara":ar,
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,162 @@
|
|||
{
|
||||
|
||||
"msgTitle": "友情のヒント",
|
||||
"msgUpgradeFail": "アップグレード失敗",
|
||||
"msgDownloading": "ダウンロード中",
|
||||
"msgLatestVersion": "最新バージョンですよ!",
|
||||
"msgCancel": "操作をキャンセルしました!",
|
||||
"msgLoginSuccess": "ログイン成功!",
|
||||
"msgDelete": "削除に成功しました",
|
||||
"msgSetSuccess": "設定完了",
|
||||
"msgBottom": "これ以上ありません。他のものを見てみましょう",
|
||||
"msgNoMoreData": "これ以上データはありません!",
|
||||
"msgSetPasswordSuccess": "パスワード設定完了、プログラムに入ります!",
|
||||
"msgAddUser": "メンバーがまだいません。まず追加してください",
|
||||
"verifyNickName": "ニックネームを入力してください",
|
||||
"verifyNotOptional": "将来の日付は選択できません",
|
||||
"verifyDate": "測定日を選択してください",
|
||||
"verifyBirthday": "生年月日を選択してください",
|
||||
"verifyHeight": "身長を入力してください",
|
||||
"verifyWeight": "体重を入力してください",
|
||||
"verifyGender": "性別を選択してください",
|
||||
"verifyBontrast": "データを選択してください",
|
||||
"verifyBodyDate": "正しい時間を選択してください",
|
||||
"verifyRecord": "入力してください",
|
||||
"verifyPicker": "選択してください",
|
||||
"verifyAccount": "正しい携帯電話番号またはメールアドレスを入力してください",
|
||||
"verifyEmail": "メールアドレスを入力してください",
|
||||
"verifyEmailCorrect": "正しいメールアドレスを入力してください",
|
||||
"verifyMobile": "携帯電話番号を入力してください",
|
||||
"verifyMobileCorrect": "正しい携帯電話番号を入力してください",
|
||||
"verifyCode": "認証コードを入力してください",
|
||||
"verifyPassword": "パスワードを入力してください",
|
||||
"verifyPasswordTwo": "確認用パスワードを入力してください",
|
||||
"verifyPasswordCorrect": "パスワードが一致しているか確認してください",
|
||||
"verifyAgreement": "まず、同意書を確認してチェックしてください",
|
||||
"verifyOutLogin": "ログアウトしますか?",
|
||||
"verifyDeleteUser": "このメンバーを削除しますか?",
|
||||
"verifyDeleteHistory": "現在の測定記録を削除しますか?",
|
||||
"verifyDeleteAccount": "削除に成功すると、そのアカウントに関連するすべての情報が消去され、復元できません。削除しますか?",
|
||||
"btnConfirm": "確認",
|
||||
"btnSubmit": "提出",
|
||||
"btnSancellation": "キャンセル",
|
||||
"btnContinue": "続ける",
|
||||
"btnBack": "戻る",
|
||||
"ConnectionTimeout": "接続タイムアウト、再接続をクリックしてください",
|
||||
"Measuring": "測定中は、食べ物をはかりの上に置いてください",
|
||||
"Weight": "重量",
|
||||
"RecordWeight": "食品の重量を入力してください",
|
||||
"SearchBluetooth": "Bluetooth検索中",
|
||||
"Remeasure": "データに異常があります。再度計測してください!",
|
||||
"reset": "データ異常です。ゼロにしてから再度測定してください!",
|
||||
"Disconnect": "接続を切断",
|
||||
"remeasure": "再測定",
|
||||
"resetBtn": "ゼロクリア",
|
||||
"UnitBtn": "単位",
|
||||
"SaveResult": "保存",
|
||||
"titleHome": "ホームページ",
|
||||
"titleMenu": "レシシピ",
|
||||
"titleMenuAdd": "レシピを追加",
|
||||
"titleMenuSearch": "レシピ検索",
|
||||
"titleCount": "食事の計算",
|
||||
"titleCountList": "食材庫(しょかいく)",
|
||||
"titleCustomKcal": "カスタムカロリー",
|
||||
"titleEveryMeal": "食事の詳細",
|
||||
"titleCountSearch": "食材検索",
|
||||
"titleeveryDay": "栄養分析",
|
||||
"titleMe": "私の",
|
||||
"titleDetail": "詳細",
|
||||
"titleBody": "目標",
|
||||
"titleHistory": "食事記録",
|
||||
"titlePhone": "携帯電話番号の紐付け",
|
||||
"titleEmail": "メールアドレスの紐付け",
|
||||
"titlePasswordEdit": "パスワードを変更する",
|
||||
"titleSet": "設定",
|
||||
"titleDate": "日付",
|
||||
"titleMember": "資料",
|
||||
"titleManage": "メンバー管理",
|
||||
"titleManageAdd": "メンバー追加",
|
||||
"titleAboutUs": "私たちについて",
|
||||
"titleSetPassword": "パスワードを設定する",
|
||||
"titlePassword": "パスワード",
|
||||
"titleConfirmPassword": "確認用パスワード",
|
||||
"titleForgotPassword": "パスワードを忘れた",
|
||||
"titleCode": "認証コード",
|
||||
"titleLanguage": "言語です",
|
||||
"titleSendCode": "認証コードを取得する",
|
||||
"titleSendCodeRetry": "S後再送",
|
||||
"titleLogin": "ログイン",
|
||||
"titleRegister": "登録",
|
||||
"titleToggleLogin": "ログイン切り替え",
|
||||
"titleAccountText": "携帯電話番号/メールアドレス",
|
||||
"titleAgreementText": "読み、同意する",
|
||||
"titleAgreementContntText": "プライバシーポリシー",
|
||||
"titleVersionUpdate": "バージョンアップデート",
|
||||
"titleNewVersion": "新バージョン",
|
||||
"infoActivityCoefficient": "活動係数",
|
||||
"infoPersonalProfile": "個人情報",
|
||||
"infoMyRecipes": "私のレシピ",
|
||||
"infoMyCollection": "私のコレクション",
|
||||
"infoAvatar": "アバター",
|
||||
"infoNickname": "ニックネーム",
|
||||
"infoMobile": "携帯電話番号",
|
||||
"infoEmail": "メールボックス",
|
||||
"infoAge": "年齢",
|
||||
"infoAgeunit": "歳",
|
||||
"infoGender": "性別",
|
||||
"infoMan": "男",
|
||||
"infoWoman": "女(おんな)",
|
||||
"infoUnknown": "未知(みちゅう)",
|
||||
"infoBirthday": "生年月日",
|
||||
"infoHeight": "身長",
|
||||
"infoWeight": "体重",
|
||||
"btnEdit": "編集",
|
||||
"btnDelete": "削除",
|
||||
"btnAdd": "追加",
|
||||
"btnDetail": "詳細を見る",
|
||||
"btnDeleteAccount": "アカウント削除",
|
||||
"btnLogOut": "ログアウト",
|
||||
"countIntake": "摂取",
|
||||
"countCalorieIntake": "熱量摂取",
|
||||
"countMealdetails": "食事の詳細",
|
||||
"countAddFood": "食品を追加する",
|
||||
"countNutritionalProportion": "栄養の割合",
|
||||
"countComponentStatistics": "成分統計",
|
||||
"countCalorieAnalysis": "カロリー分析",
|
||||
"countNutrientElementEnergyProportion": "栄養素のエネルギー割合",
|
||||
"countNutritionClassification": "栄養分類",
|
||||
"countNutritionElementRankingList": "栄養素ランキング",
|
||||
"countFoodTypes": "食品タイプ",
|
||||
|
||||
"total": "共です",
|
||||
"records": "記録します",
|
||||
"Search": "検索します",
|
||||
"VoiceSearch": "音声検索です",
|
||||
"Save": "保存します",
|
||||
"noMoreData": "これ以上のデータはありません",
|
||||
"HistoricalSearch": "履歴検索です",
|
||||
"wantSearch": "あなたが探していると思います",
|
||||
"verifyCalorie": "カロリー入力お願いします。",
|
||||
"kcal": "カロリーです",
|
||||
"countNoFood": "しばらく食べ物がありません",
|
||||
"msgLoginTips": "ログインしてもっと見ます",
|
||||
"Nutrients": "栄養素です",
|
||||
"Content": "含有量です",
|
||||
"CaloriesAndnutrients": "カロリーと栄養です",
|
||||
"ImproveInformation": "情報を補完します",
|
||||
"WhetherTodelete": "削除しますか",
|
||||
"BusinessCooperation": "ビジネス提携です",
|
||||
"verifyActivityCoefficient": "活動係数を選択します",
|
||||
"devicesTips":"機器は登録されていません。販売者に連絡してシステム認証を行ってください。",
|
||||
"kg": "kg",
|
||||
"g": "g",
|
||||
"oz": "oz",
|
||||
"ml": "ml",
|
||||
"lb": "lb",
|
||||
"milkml": "milkml",
|
||||
"Waterml": "Waterml",
|
||||
"floz": "floz",
|
||||
"lboz": "lboz",
|
||||
"st": "st:lb"
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,161 @@
|
|||
{
|
||||
"msgTitle": "친절한 안내",
|
||||
"msgUpgradeFail": "업그레이드 실패",
|
||||
"msgDownloading": "다운로드 중입니다",
|
||||
"msgLatestVersion": "이미 최신 버전입니다!",
|
||||
"msgCancel": "작업을 취소하셨습니다!",
|
||||
"msgLoginSuccess": "로그인 성공!",
|
||||
"msgDelete": "삭제 성공",
|
||||
"msgSetSuccess": "설정 성공",
|
||||
"msgBottom": "끝이에요, 다른 걸 봐요",
|
||||
"msgNoMoreData": "더 이상의 데이터가 없습니다!",
|
||||
"msgSetPasswordSuccess": "비밀번호 설정이 성공적으로 완료되었습니다. 프로그램으로 들어가세요!",
|
||||
"msgAddUser": "멤버가 없습니다. 먼저 추가해 주세요.",
|
||||
"verifyNickName": "닉네임을 입력해 주세요",
|
||||
"verifyNotOptional": "미래 날짜는 선택할 수 없습니다.",
|
||||
"verifyDate": "측정 날짜를 선택해 주세요",
|
||||
"verifyBirthday": "생년월일을 선택해 주세요",
|
||||
"verifyHeight": "키를 입력해 주세요",
|
||||
"verifyWeight": "체중을 입력해 주세요",
|
||||
"verifyGender": "성별을 선택해 주세요",
|
||||
"verifyBontrast": "데이터를 선택해 주세요",
|
||||
"verifyBodyDate": "올바른 시간을 선택해 주세요",
|
||||
"verifyRecord": "입력해 주세요",
|
||||
"verifyPicker": "선택해 주세요",
|
||||
"verifyAccount": "올바른 휴대폰 번호 또는 이메일을 입력해 주세요.",
|
||||
"verifyEmail": "이메일을 입력해 주세요",
|
||||
"verifyEmailCorrect": "올바른 이메일을 입력해 주세요.",
|
||||
"verifyMobile": "휴대폰 번호를 입력해 주세요",
|
||||
"verifyMobileCorrect": "올바른 휴대폰 번호를 입력해 주세요.",
|
||||
"verifyCode": "인증번호를 입력해 주세요",
|
||||
"verifyPassword": "비밀번호를 입력하세요",
|
||||
"verifyPasswordTwo": "비밀번호를 다시 입력해 주세요",
|
||||
"verifyPasswordCorrect": "비밀번호가 일치하는지 확인해 주세요.",
|
||||
"verifyAgreement": "먼저 약관을 확인하고 체크해 주세요.",
|
||||
"verifyOutLogin": "로그아웃 하시겠습니까?",
|
||||
"verifyDeleteUser": "해당 멤버를 삭제하시겠습니까?",
|
||||
"verifyDeleteHistory": "현재 측정 기록을 삭제하시겠습니까?",
|
||||
"verifyDeleteAccount": "삭제 성공 후, 해당 계정의 모든 연관 정보가 지워지고 복구할 수 없으니, 정말로 삭제하시겠습니까?",
|
||||
"btnConfirm": "확인",
|
||||
"btnSubmit": "제출",
|
||||
"btnSancellation": "취소",
|
||||
"btnContinue": "계속",
|
||||
"btnBack": "돌아가다",
|
||||
"btnDelete": "삭제",
|
||||
"ConnectionTimeout": "연결 시간 초과, 재연결을 클릭하세요",
|
||||
"Measuring": "측정 중, 음식을 저울 위에 놓아주세요.",
|
||||
"Weight": "무게",
|
||||
"RecordWeight": "음식 무게를 입력해 주세요",
|
||||
"SearchBluetooth": "블루투스 검색 중",
|
||||
"Remeasure": "데이터 이상, 재측정해 주세요!",
|
||||
"reset": "데이터 이상, 초기화 후 재측정해 주세요!",
|
||||
"Disconnect": "연결 끊기",
|
||||
"remeasure": "재측정",
|
||||
"resetBtn": "제로화",
|
||||
"UnitBtn": "단위",
|
||||
"SaveResult": "저장",
|
||||
"titleHome": "홈페이지",
|
||||
"titleMenu": "레시피",
|
||||
"titleMenuAdd": "레시피 추가",
|
||||
"titleMenuSearch": "레시피 검색",
|
||||
"titleCount": "계식",
|
||||
"titleCountList": "재료 창고",
|
||||
"titleCustomKcal": "사용자 정의 칼로리",
|
||||
"titleEveryMeal": "식사 상세",
|
||||
"titleCountSearch": "재료 검색",
|
||||
"titleeveryDay": "영양 분석",
|
||||
"titleMe": "나의",
|
||||
"titleDetail": "상세",
|
||||
"titleBody": "목표",
|
||||
"titleHistory": "식단 기록",
|
||||
"titlePhone": "휴대폰 번호 바인딩",
|
||||
"titleEmail": "이메일 바인딩",
|
||||
"titlePasswordEdit": "비밀번호 변경",
|
||||
"titleSet": "설정",
|
||||
"titleDate": "날짜",
|
||||
"titleMember": "자료",
|
||||
"titleManage": "멤버 관리",
|
||||
"titleManageAdd": "멤버 추가",
|
||||
"titleAboutUs": "회사 소개",
|
||||
"titleSetPassword": "비밀번호 설정",
|
||||
"titlePassword": "비밀번호",
|
||||
"titleConfirmPassword": "비밀번호 확인",
|
||||
"titleForgotPassword": "비밀번호를 잊어버렸어요",
|
||||
"titleCode": "인증 코드",
|
||||
"titleLanguage": "언어",
|
||||
"titleSendCode": "인증번호 받기",
|
||||
"titleSendCodeRetry": "S 후 재발송",
|
||||
"titleLogin": "로그인",
|
||||
"titleRegister": "등록",
|
||||
"titleToggleLogin": "로그인 전환",
|
||||
"titleAccountText": "휴대폰 번호/이메일",
|
||||
"titleAgreementText": "읽고 동의합니다",
|
||||
"titleAgreementContntText": "개인정보 처리방침",
|
||||
"titleVersionUpdate": "버전 업데이트",
|
||||
"titleNewVersion": "새 버전",
|
||||
"infoActivityCoefficient": "활동 계수",
|
||||
"infoPersonalProfile": "개인 정보",
|
||||
"infoMyRecipes": "내 레시피",
|
||||
"infoMyCollection": "내 컬렉션",
|
||||
"infoAvatar": "프로필 사진",
|
||||
"infoNickname": "별명",
|
||||
"infoMobile": "휴대폰 번호",
|
||||
"infoEmail": "이메일",
|
||||
"infoAge": "나이",
|
||||
"infoAgeunit": "살",
|
||||
"infoGender": "성별",
|
||||
"infoMan": "남자",
|
||||
"infoWoman": "여자",
|
||||
"infoUnknown": "미지",
|
||||
"infoBirthday": "생년월일",
|
||||
"infoHeight": "키",
|
||||
"infoWeight": "체중",
|
||||
"btnEdit": "편집",
|
||||
"btnAdd": "추가",
|
||||
"btnDetail": "상세 내용 확인",
|
||||
"btnDeleteAccount": "계정 삭제",
|
||||
"btnLogOut": "로그아웃",
|
||||
"countIntake": "섭취",
|
||||
"countCalorieIntake": "열량 섭취",
|
||||
"countMealdetails": "식사 상세",
|
||||
"countAddFood": "음식 추가",
|
||||
"countNutritionalProportion": "영양 비율",
|
||||
"countComponentStatistics": "성분 통계",
|
||||
"countCalorieAnalysis": "칼로리 분석",
|
||||
"countNutrientElementEnergyProportion": "영양소 에너지 비율",
|
||||
"countNutritionClassification": "영양 분류",
|
||||
"countNutritionElementRankingList": "영양소 순위표",
|
||||
"countFoodTypes": "음식 유형",
|
||||
|
||||
"total": "모두",
|
||||
"records": "조목 기록",
|
||||
"Search": "검색",
|
||||
"VoiceSearch": "음성 검색",
|
||||
"Save": "저장",
|
||||
"noMoreData": "더 이상 자료가 없습니다",
|
||||
"HistoricalSearch": "과거 기록 검색",
|
||||
"wantSearch": "검색해 보세요",
|
||||
"verifyCalorie": "칼로리를 입력하십시오",
|
||||
"kcal": "칼로리",
|
||||
"countNoFood": "잠시 음식물이 없다.",
|
||||
"msgLoginTips": "로그인 후 더 많은 것을 볼 수 있습니다",
|
||||
"Nutrients": "영양소",
|
||||
"Content": "함량이",
|
||||
"CaloriesAndnutrients": "열량과 영양",
|
||||
"ImproveInformation": "정보를 완벽하게하다.",
|
||||
"WhetherTodelete": "삭제할지 여부",
|
||||
"BusinessCooperation": "상무 합작",
|
||||
"verifyActivityCoefficient": "활동지수를 선택하십시오",
|
||||
"devicesTips":"장비 등록이 되지 않았습니다. 판매자에게 연락하여 시스템 인증을 진행해 주세요.",
|
||||
"kg": "kg",
|
||||
"g": "g",
|
||||
"oz": "oz",
|
||||
"ml": "ml",
|
||||
"lb": "lb",
|
||||
"milkml": "milkml",
|
||||
"Waterml": "Waterml",
|
||||
"floz": "floz",
|
||||
"lboz": "lboz",
|
||||
"st": "st:lb"
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,162 @@
|
|||
{
|
||||
"msgTitle": "Aviso Amigo",
|
||||
"msgUpgradeFail": "Falha na atualização",
|
||||
"msgDownloading": "Em download",
|
||||
"msgLatestVersion": "Já é a versão mais recente!",
|
||||
"msgCancel": "Você cancelou a operação!",
|
||||
"msgLoginSuccess": "Login efetuado com sucesso!",
|
||||
"msgDelete": "Excluir com sucesso",
|
||||
"msgSetSuccess": "Configurações bem-sucedidas",
|
||||
"msgBottom": "Fim da linha, veja outro",
|
||||
"msgNoMoreData": "Não há mais dados!",
|
||||
"msgSetPasswordSuccess": "Senha definida com sucesso,entre no programa!",
|
||||
"msgAddUser": "Nenhum membro por enquanto, adicione um",
|
||||
"verifyNickName": "Por favor insira um apelido",
|
||||
"verifyNotOptional": "Futuras datas não podem ser selecionadas",
|
||||
"verifyDate": "Por favor selecione a data da medição",
|
||||
"verifyBirthday": "Por favor selecione a data de nascimento",
|
||||
"verifyHeight": "Por favor, insira a altura",
|
||||
"verifyWeight": "Digite seu peso",
|
||||
"verifyGender": "Por favor selecione o género",
|
||||
"verifyBontrast": "Por favor selecione dados",
|
||||
"verifyBodyDate": "Por favor selecione o horário correto",
|
||||
"verifyRecord": "Por favor, insira",
|
||||
"verifyPicker": "Por favor, escolha",
|
||||
"verifyAccount": "Por favor insira o número de telemóvel ou e-mail correto",
|
||||
"verifyEmail": "Insira o e-mail",
|
||||
"verifyEmailCorrect": "Insira um e-mail válido",
|
||||
"verifyMobile": "Por favor insira o número de telemóvel",
|
||||
"verifyMobileCorrect": "Por favor insira um número de telemóvel correto",
|
||||
"verifyCode": "Por favor insira o código de verificação",
|
||||
"verifyPassword": "Por favor, insira a senha",
|
||||
"verifyPasswordTwo": "Por favor insira a confirmação da palavra-passe",
|
||||
"verifyPasswordCorrect": "Por favor, confirme que as duas senhas escritas estão iguais",
|
||||
"verifyAgreement": "Por favor, confirme e marque o acordo",
|
||||
"verifyOutLogin": "Sair da sessão?",
|
||||
"verifyDeleteUser": "Tem certeza que deseja excluir o membro?",
|
||||
"verifyDeleteHistory": "Excluir a medida atual?",
|
||||
"verifyDeleteAccount": "Após a exclusão, todos os dados vinculados a esta conta serão apagados e não poderá recuperá-los. Excluir?",
|
||||
"btnConfirm": "confirmar",
|
||||
"btnSubmit": "Enviar a sua candidatura",
|
||||
"btnSancellation": "cancelar",
|
||||
"btnContinue": "Continuar",
|
||||
"btnBack": "Voltar",
|
||||
"btnDelete": "excluir",
|
||||
"ConnectionTimeout": "Tempo de conexão esgotado, clique para reconectar",
|
||||
"Measuring": "Medindo, coloque o alimento na balança",
|
||||
"Weight": "peso",
|
||||
"RecordWeight": "Informe o peso do alimento",
|
||||
"SearchBluetooth": "Pesquisa Bluetooth em",
|
||||
"Remeasure": "Dados anormais, faça a medição novamente!",
|
||||
"reset": "Dados anormais, por favor zerar e medir novamente!",
|
||||
"Disconnect": "Desconectar",
|
||||
"remeasure": "Re-Medir a",
|
||||
"resetBtn": "reinicialização",
|
||||
"UnitBtn": "unidade",
|
||||
"SaveResult": "guardar",
|
||||
"titleHome": "Página inicial",
|
||||
"titleMenu": "receitas de pratos",
|
||||
"titleMenuAdd": "Adicionar Receita",
|
||||
"titleMenuSearch": "Pesquisa de Receitas",
|
||||
"titleCount": "contagem de alimentos",
|
||||
"titleCountList": "Banco de Ingredientes",
|
||||
"titleCustomKcal": "Calorias Personalizadas",
|
||||
"titleEveryMeal": "Detalhes do Almoço",
|
||||
"titleCountSearch": "Busca de Ingredientes",
|
||||
"titleeveryDay": "Análise Nutricional",
|
||||
"titleMe": "meu",
|
||||
"titleDetail": "Detalhes",
|
||||
"titleBody": "Objetivos",
|
||||
"titleHistory": "Registo de dietas e alimentação",
|
||||
"titlePhone": "Vincular o número de telefone",
|
||||
"titleEmail": "Vincular e-mail",
|
||||
"titlePasswordEdit": "Alterar a palavra-passe",
|
||||
"titleSet": "configuração",
|
||||
"titleDate": "data",
|
||||
"titleMember": "Documentos para o",
|
||||
"titleManage": "Administração de Membros",
|
||||
"titleManageAdd": "Adicionar um membro",
|
||||
"titleAboutUs": "Sobre nós",
|
||||
"titleSetPassword": "Definir uma senha",
|
||||
"titlePassword": "Senha",
|
||||
"titleConfirmPassword": "Confirme a Senha",
|
||||
"titleForgotPassword": "Esqueceu a senha",
|
||||
"titleCode": "código de verificação",
|
||||
"titleLanguage": "línguas",
|
||||
"titleSendCode": "Obter código de verificação",
|
||||
"titleSendCodeRetry": "Reenvio posterior S",
|
||||
"titleLogin": "Iniciar sessão",
|
||||
"titleRegister": "Registre-se",
|
||||
"titleToggleLogin": "Alterar o login",
|
||||
"titleAccountText": "Número de celular/email",
|
||||
"titleAgreementText": "Ler e aceitar",
|
||||
"titleAgreementContntText": "Termo de privacidade",
|
||||
"titleVersionUpdate": "Atualização de versão",
|
||||
"titleNewVersion": "nova versão",
|
||||
"infoActivityCoefficient": "Fator de atividade",
|
||||
"infoPersonalProfile": "Perfil",
|
||||
"infoMyRecipes": "As minhas receitas",
|
||||
"infoMyCollection": "Minha Coleção",
|
||||
"infoAvatar": "Foto de perfil",
|
||||
"infoNickname": "Nome do apelido",
|
||||
"infoMobile": "Nº de Telefone",
|
||||
"infoEmail": "caixa de correio",
|
||||
"infoAge": "idade",
|
||||
"infoAgeunit": "Ano",
|
||||
"infoGender": "Gênero",
|
||||
"infoMan": "homem",
|
||||
"infoWoman": "Mulher",
|
||||
"infoUnknown": "Desconhecido",
|
||||
"infoBirthday": "Data de nascimento",
|
||||
"infoHeight": "altura",
|
||||
"infoWeight": "Peso corporal",
|
||||
"btnEdit": "Editores",
|
||||
"btnDelete": "excluir",
|
||||
"btnAdd": "Adicionar",
|
||||
"btnDetail": "Detalhes de Visualização",
|
||||
"btnDeleteAccount": "Excluir conta",
|
||||
"btnLogOut": "Sair",
|
||||
"countIntake": "ingestão",
|
||||
"countCalorieIntake": "intake de calorias",
|
||||
"countMealdetails": "Detalhes dos pratos",
|
||||
"countAddFood": "Adicionar alimentos",
|
||||
"countNutritionalProportion": "Contribuição percentual de nutrientes",
|
||||
"countComponentStatistics": "Estatística de Ingredientes",
|
||||
"countCalorieAnalysis": "Análise de calorias",
|
||||
"countNutrientElementEnergyProportion": "Porcentagem de energia dos nutrientes",
|
||||
"countNutritionClassification": "Classificação nutricional",
|
||||
"countNutritionElementRankingList": "Ranking de nutrientes",
|
||||
"countFoodTypes": "Tipos de alimentos",
|
||||
|
||||
"total": "total",
|
||||
"records": "Um registo",
|
||||
"Search": "busca",
|
||||
"VoiceSearch": "Pesquisa por voz",
|
||||
"Save": "conservação",
|
||||
"noMoreData": "Não há mais dados",
|
||||
"HistoricalSearch": "Pesquisa no histórico",
|
||||
"wantSearch": "Acho que você quer pesquisar",
|
||||
"verifyCalorie": "Por favor, insira calorias",
|
||||
"kcal": "Caloria em calorias",
|
||||
"countNoFood": "Sem comida ainda",
|
||||
"msgLoginTips": "Faça login para ver mais",
|
||||
"Nutrients": "nutriente",
|
||||
"Content": "conteúdo",
|
||||
"CaloriesAndnutrients": "Calorias e nutrição",
|
||||
"ImproveInformation": "Aperfeiçoe a mensagem",
|
||||
"WhetherTodelete": "Apagar sim não",
|
||||
"BusinessCooperation": "Cooperação de negócios",
|
||||
"verifyActivityCoefficient": "Por favor, selecione o coeficiente de atividade",
|
||||
"devicesTips":"O equipamento não foi registrado. Por favor, entre em contato com o vendedor para realizar a autenticação no sistema.",
|
||||
"kg": "kg",
|
||||
"g": "g",
|
||||
"oz": "oz",
|
||||
"ml": "ml",
|
||||
"lb": "lb",
|
||||
"milkml": "milkml",
|
||||
"Waterml": "Waterml",
|
||||
"floz": "floz",
|
||||
"lboz": "lboz",
|
||||
"st": "st:lb"
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,161 @@
|
|||
{
|
||||
"msgTitle": "Дружеское напоминание",
|
||||
"msgUpgradeFail": "Обновление не удалось",
|
||||
"msgDownloading": "Скачивается",
|
||||
"msgLatestVersion": "Это уже самая новая версия!",
|
||||
"msgCancel": "Вы отменили операцию!",
|
||||
"msgLoginSuccess": "Вход выполнен успешно!",
|
||||
"msgDelete": "Удаление успешно",
|
||||
"msgSetSuccess": "Настройка успешно завершена",
|
||||
"msgBottom": "Вот и конец, посмотрим что-то другое.",
|
||||
"msgNoMoreData": "Больше данных нет!",
|
||||
"msgSetPasswordSuccess": "Пароль успешно установлен, вход в программу!",
|
||||
"msgAddUser": "Пока нет участников, сначала добавьте",
|
||||
"verifyNickName": "Введите никнейм",
|
||||
"verifyNotOptional": "Будущие даты нельзя выбрать",
|
||||
"verifyDate": "Пожалуйста, выберите дату измерения",
|
||||
"verifyBirthday": "Пожалуйста, выберите дату рождения",
|
||||
"verifyHeight": "Введите рост",
|
||||
"verifyWeight": "Введите вес",
|
||||
"verifyGender": "Пожалуйста, выберите пол",
|
||||
"verifyBontrast": "Пожалуйста, выберите данные",
|
||||
"verifyBodyDate": "Пожалуйста, выберите правильное время",
|
||||
"verifyRecord": "Пожалуйста, введите",
|
||||
"verifyPicker": "Пожалуйста, выберите",
|
||||
"verifyAccount": "Введите правильный номер телефона или электронную почту",
|
||||
"verifyEmail": "Введите электронную почту",
|
||||
"verifyEmailCorrect": "Введите правильный адрес электронной почты",
|
||||
"verifyMobile": "Введите номер телефона",
|
||||
"verifyMobileCorrect": "Введите правильный номер телефона",
|
||||
"verifyCode": "Введите код подтверждения",
|
||||
"verifyPassword": "Введите пароль",
|
||||
"verifyPasswordTwo": "Пожалуйста, введите подтверждение пароля",
|
||||
"verifyPasswordCorrect": "Пожалуйста, убедитесь, что пароли введены одинаково.",
|
||||
"verifyAgreement": "Пожалуйста, сначала подтвердите и отметьте соглашение.",
|
||||
"verifyOutLogin": "Выйти из учетной записи?",
|
||||
"verifyDeleteUser": "Удалить этого участника?",
|
||||
"verifyDeleteHistory": "Удалить текущую запись измерений?",
|
||||
"verifyDeleteAccount": "После успешного удаления все связанная информация с этого аккаунта будет очищена и не будет восстановлена. Удалить?",
|
||||
"btnConfirm": "подтверждение",
|
||||
"btnSubmit": "отправить",
|
||||
"btnSancellation": "отменить",
|
||||
"btnContinue": "продолжать",
|
||||
"btnBack": "возвращаться",
|
||||
"btnDelete": "удалить",
|
||||
"ConnectionTimeout": "Тайм-аут подключения, нажмите для повторного подключения",
|
||||
"Measuring": "При измерении, пожалуйста, положите еду на весы.",
|
||||
"Weight": "вес",
|
||||
"RecordWeight": "Введите вес еды",
|
||||
"SearchBluetooth": "Поиск Bluetooth",
|
||||
"Remeasure": "Аномальные данные, проведите повторное измерение!",
|
||||
"reset": "Аномальные данные, очистите и проведите повторное измерение!",
|
||||
"Disconnect": "Отключение",
|
||||
"remeasure": "Пересчитать",
|
||||
"resetBtn": "обнуление",
|
||||
"UnitBtn": "единица",
|
||||
"SaveResult": "сохранить",
|
||||
"titleHome": "Главная страница",
|
||||
"titleMenu": "рецепт",
|
||||
"titleMenuAdd": "Добавить рецепт",
|
||||
"titleMenuSearch": "Поиск рецептов",
|
||||
"titleCount": "Планирование питания",
|
||||
"titleCountList": "Склад продуктов",
|
||||
"titleCustomKcal": "Пользовательские калории",
|
||||
"titleEveryMeal": "Детали питания",
|
||||
"titleCountSearch": "Поиск ингредиентов",
|
||||
"titleeveryDay": "анализ питательных веществ",
|
||||
"titleMe": "Мой",
|
||||
"titleDetail": "подробности",
|
||||
"titleBody": "цель",
|
||||
"titleHistory": "Пищевой дневник",
|
||||
"titlePhone": "Привязка номера телефона",
|
||||
"titleEmail": "Привязать электронную почту",
|
||||
"titlePasswordEdit": "изменить пароль",
|
||||
"titleSet": "настройка",
|
||||
"titleDate": "дата",
|
||||
"titleMember": "материалы",
|
||||
"titleManage": "Управление участниками",
|
||||
"titleManageAdd": "Добавить участника",
|
||||
"titleAboutUs": "О нас",
|
||||
"titleSetPassword": "Установить пароль",
|
||||
"titlePassword": "пароль",
|
||||
"titleConfirmPassword": "Подтверждение пароля",
|
||||
"titleForgotPassword": "Забыли пароль",
|
||||
"titleCode": "капча",
|
||||
"titleLanguage": "язык",
|
||||
"titleSendCode": "Получить код подтверждения",
|
||||
"titleSendCodeRetry": "S повторная отправка",
|
||||
"titleLogin": "Войти",
|
||||
"titleRegister": "регистрация",
|
||||
"titleToggleLogin": "Переключение входа",
|
||||
"titleAccountText": "Мобильный номер/электронная почта",
|
||||
"titleAgreementText": "Прочитать и согласиться",
|
||||
"titleAgreementContntText": "Политика конфиденциальности",
|
||||
"titleVersionUpdate": "Обновление версии",
|
||||
"titleNewVersion": "Новая версия",
|
||||
"infoActivityCoefficient": "коэффициент активности",
|
||||
"infoPersonalProfile": "Личные данные",
|
||||
"infoMyRecipes": "Мои рецепты",
|
||||
"infoMyCollection": "Моя коллекция",
|
||||
"infoAvatar": "аватар",
|
||||
"infoNickname": "никнейм",
|
||||
"infoMobile": "номер телефона",
|
||||
"infoEmail": "почта",
|
||||
"infoAge": "возраст",
|
||||
"infoAgeunit": "год",
|
||||
"infoGender": "пол",
|
||||
"infoMan": "мужчина",
|
||||
"infoWoman": "женщина",
|
||||
"infoUnknown": "неизвестный",
|
||||
"infoBirthday": "Дата рождения",
|
||||
"infoHeight": "рост",
|
||||
"infoWeight": "вес",
|
||||
"btnEdit": "редактировать",
|
||||
"btnAdd": "добавить",
|
||||
"btnDetail": "Подробнее",
|
||||
"btnDeleteAccount": "Удалить аккаунт",
|
||||
"btnLogOut": "Выйти из системы",
|
||||
"countIntake": "Потребление",
|
||||
"countCalorieIntake": "Потребление калорий",
|
||||
"countMealdetails": "Детали питания",
|
||||
"countAddFood": "Добавить еду",
|
||||
"countNutritionalProportion": "доля питательных веществ",
|
||||
"countComponentStatistics": "статистика компонентов",
|
||||
"countCalorieAnalysis": "Анализ калорий",
|
||||
"countNutrientElementEnergyProportion": "Доля энергии питательных веществ",
|
||||
"countNutritionClassification": "Классификация питательных веществ",
|
||||
"countNutritionElementRankingList": "Рейтинг питательных элементов",
|
||||
"countFoodTypes": "Типы пищи",
|
||||
|
||||
"total": "на",
|
||||
"records": "Запись.",
|
||||
"Search": "поиск",
|
||||
"VoiceSearch": "Поиск голоса",
|
||||
"Save": "сохран",
|
||||
"noMoreData": "Больше данных нет",
|
||||
"HistoricalSearch": "Поиск истории",
|
||||
"wantSearch": "Полагаю, вы хотите обыскать",
|
||||
"verifyCalorie": "Введите калории.",
|
||||
"kcal": "Калории.",
|
||||
"countNoFood": "Пока нет еды.",
|
||||
"msgLoginTips": "Проверьте больше после входа",
|
||||
"Nutrients": "Питательные вещества.",
|
||||
"Content": "содержан",
|
||||
"CaloriesAndnutrients": "Тепло и питание",
|
||||
"ImproveInformation": "Усовершенствовать информацию",
|
||||
"WhetherTodelete": "Удалить",
|
||||
"BusinessCooperation": "Деловое сотрудничество.",
|
||||
"verifyActivityCoefficient": "Пожалуйста, выберите коэффициент активности",
|
||||
"devicesTips":"Устройство не зарегистрировано, пожалуйста, свяжитесь с продавцом для системной аутентификации",
|
||||
"kg": "kg",
|
||||
"g": "g",
|
||||
"oz": "oz",
|
||||
"ml": "ml",
|
||||
"lb": "lb",
|
||||
"milkml": "milkml",
|
||||
"Waterml": "Waterml",
|
||||
"floz": "floz",
|
||||
"lboz": "lboz",
|
||||
"st": "st:lb"
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"index.title": "Hello i18n",
|
||||
"index.home": "主頁",
|
||||
"index.component": "組件",
|
||||
"index.api": "API",
|
||||
"index.schema": "Schema",
|
||||
"index.demo": "uni-app 國際化演示",
|
||||
"index.demo-description": "包含 uni-framework、manifest.json、pages.json、tabbar、頁面、組件、API、Schema",
|
||||
"index.detail": "詳情",
|
||||
"index.language": "語言",
|
||||
"index.language-info": "語言信息",
|
||||
"index.system-language": "系統語言",
|
||||
"index.application-language": "應用語言",
|
||||
"index.language-change-confirm": "應用此設置將重啟App"
|
||||
}
|
||||
|
|
@ -0,0 +1,164 @@
|
|||
{
|
||||
"msgTitle": "友情提示",
|
||||
"msgUpgradeFail": "升级失败",
|
||||
"msgDownloading": "正在下载",
|
||||
"msgLatestVersion": "已经是最新版本了!",
|
||||
"msgCancel": "您已取消操作!",
|
||||
"msgLoginSuccess": "登录成功!",
|
||||
"msgDelete": "删除成功",
|
||||
"msgSetSuccess": "设置成功",
|
||||
"msgBottom": "到底了,看看别的吧",
|
||||
"msgNoMoreData": "暂无数据!",
|
||||
"msgSetPasswordSuccess": "密码设置成功,进入程序中!",
|
||||
"msgAddUser": "暂无成员,请先添加",
|
||||
"verifyNickName": "请输入昵称",
|
||||
"verifyNotOptional": "未来日期不可选",
|
||||
"verifyDate": "请选择测量日期",
|
||||
"verifyBirthday": "请选择出生日期",
|
||||
"verifyHeight": "请输入身高",
|
||||
"verifyWeight": "请输入体重",
|
||||
"verifyGender": "请选择性别",
|
||||
"verifyBontrast": "请选择数据",
|
||||
"verifyBodyDate": "请选择正确的时间",
|
||||
"verifyRecord": "请输入",
|
||||
"verifyPicker": "请选择",
|
||||
"verifyAccount": "请输入正确的手机号或邮箱",
|
||||
"verifyEmail": "请输入邮箱",
|
||||
"verifyEmailCorrect": "请输入正确的邮箱",
|
||||
"verifyMobile": "请输入手机号",
|
||||
"verifyMobileCorrect": "请输入正确的手机号",
|
||||
"verifyCode": "请输入验证码",
|
||||
"verifyPassword": "请输入密码",
|
||||
"verifyPasswordTwo": "请输入确认密码",
|
||||
"verifyPasswordCorrect": "请确认两次密码填写一致",
|
||||
"verifyAgreement": "请先确认并勾选协议",
|
||||
"verifyOutLogin": "是否退出登录?",
|
||||
"verifyDeleteUser": "是否删除该成员?",
|
||||
"verifyDeleteHistory": "是否删除当前测量记录?",
|
||||
"verifyDeleteAccount": "删除成功后,该账号的所有关联信息将被清空且无法找回,是否删除?",
|
||||
"btnConfirm": "确认",
|
||||
"btnSubmit": "提交",
|
||||
"btnSancellation": "取消",
|
||||
"btnContinue": "继续",
|
||||
"btnBack": "返回",
|
||||
"btnDelete": "删除",
|
||||
"ConnectionTimeout": "连接超时,点击重新连接",
|
||||
"Measuring": "测量中,请将食物放到秤上",
|
||||
"Weight": "重量",
|
||||
"RecordWeight": "请输入食物重量",
|
||||
"SearchBluetooth": "蓝牙搜索中",
|
||||
"Remeasure": "数据异常,请重新测量!",
|
||||
"reset": "数据异常,请清零后重新测量!",
|
||||
"Disconnect": "断开连接",
|
||||
"remeasure": "重新测量",
|
||||
"resetBtn": "清零",
|
||||
"UnitBtn": "单位",
|
||||
"titleHome": "首页",
|
||||
"titleMenu": "菜谱",
|
||||
"titleMenuAdd": "添加食谱",
|
||||
"titleMenuSearch": "搜索菜谱",
|
||||
"titleCount": "计食",
|
||||
"titleCountList": "食材库",
|
||||
"titleCustomKcal": "自定义卡路里",
|
||||
"titleEveryMeal": "餐食详情",
|
||||
"titleCountSearch": "食材搜索",
|
||||
"titleeveryDay": "营养分析",
|
||||
"titleMe": "我的",
|
||||
"titleDetail": "详情",
|
||||
"titleBody": "目标",
|
||||
"titleHistory": "饮食记录",
|
||||
"titlePhone": "绑定手机号",
|
||||
"titleEmail": "绑定邮箱",
|
||||
"titlePasswordEdit": "修改密码",
|
||||
"titleSet": "设置",
|
||||
"titleDate": "日期",
|
||||
"titleMember": "资料",
|
||||
"titleManage": "成员管理",
|
||||
"titleManageAdd": "添加成员",
|
||||
"titleAboutUs": "关于我们",
|
||||
"titleSetPassword": "设置密码",
|
||||
"titlePassword": "密码",
|
||||
"titleConfirmPassword": "确认密码",
|
||||
"titleForgotPassword": "忘记密码",
|
||||
"titleCode": "验证码",
|
||||
"titleLanguage": "语言设置",
|
||||
"titleSendCode": "获取验证码",
|
||||
"titleSendCodeRetry": "S后重发",
|
||||
"titleLogin": "登录",
|
||||
"titleRegister": "注册",
|
||||
"titleToggleLogin": "切换登录",
|
||||
"titleAccountText": "手机号/邮箱",
|
||||
"titleAgreementText": "阅读并同意",
|
||||
"titleAgreementContntText": "隐私协议",
|
||||
"titleVersionUpdate": "版本更新",
|
||||
"titleNewVersion": "新版本",
|
||||
"infoActivityCoefficient": "活动系数",
|
||||
"infoPersonalProfile": "个人资料",
|
||||
"infoMyRecipes": "我的菜谱",
|
||||
"infoMyCollection": "我的收藏",
|
||||
"infoAvatar": "头像",
|
||||
"infoNickname": "昵称",
|
||||
"infoMobile": "手机号",
|
||||
"infoEmail": "邮箱",
|
||||
"infoAge": "年龄",
|
||||
"infoAgeunit": "岁",
|
||||
"infoGender": "性别",
|
||||
"infoMan": "男",
|
||||
"infoWoman": "女",
|
||||
"infoUnknown": "未知",
|
||||
"infoBirthday": "出生日期",
|
||||
"infoHeight": "身高",
|
||||
"infoWeight": "体重",
|
||||
"btnEdit": "编辑",
|
||||
"btnAdd": "添加",
|
||||
"btnDetail": "查看详情",
|
||||
"btnDeleteAccount": "删除账号",
|
||||
"btnLogOut": "退出登录",
|
||||
"countIntake": "摄入",
|
||||
"countCalorieIntake": "热量摄入",
|
||||
"countMealdetails": "餐食详情",
|
||||
"countAddFood": "添加食物",
|
||||
"countNutritionalProportion": "营养占比",
|
||||
"countComponentStatistics": "成分统计",
|
||||
"countCalorieAnalysis": "卡路里分析",
|
||||
"countNutrientElementEnergyProportion": "营养元素能量占比",
|
||||
"countNutritionClassification": "营养分类",
|
||||
"countNutritionElementRankingList": "营养元素排行榜",
|
||||
"countFoodTypes": "食物类型",
|
||||
"total": "共",
|
||||
"records": "条记录",
|
||||
"Search": "搜索",
|
||||
"VoiceSearch": "语音搜索",
|
||||
"Save": "保存",
|
||||
"noMoreData": "没有更多数据了",
|
||||
"HistoricalSearch": "历史搜索",
|
||||
"wantSearch": "猜你想搜",
|
||||
"verifyCalorie": "请输入卡路里",
|
||||
"kcal": "卡路里",
|
||||
"countNoFood": "暂无食物",
|
||||
"msgLoginTips": "登录后查看更多",
|
||||
"Nutrients": "营养素",
|
||||
"Content": "含量",
|
||||
"CaloriesAndnutrients": "热量和营养",
|
||||
"ImproveInformation": "完善信息",
|
||||
"WhetherTodelete": "是否删除",
|
||||
"BusinessCooperation": "商务合作",
|
||||
"verifyActivityCoefficient": "请选择活动系数",
|
||||
"devicesTips": "设备未登记,请联系出售方进行系统认证",
|
||||
"kg": "千克",
|
||||
"g": "克",
|
||||
"oz": "盎司",
|
||||
"ml": "毫升",
|
||||
"lb": "磅",
|
||||
"milkml": "milkml",
|
||||
"Waterml": "Waterml",
|
||||
"floz": "floz",
|
||||
"lboz": "lboz",
|
||||
"st": "st:lb",
|
||||
|
||||
|
||||
"measuringRecord": "测量记录",
|
||||
"newVersion": "发现新版本",
|
||||
"IsUpdate": "是否更新?",
|
||||
"UpdateProgram":"稍后可在'关于我们'内更新程序!"
|
||||
}
|
||||
18
main.js
|
|
@ -18,15 +18,28 @@ Vue.prototype.$ble = useBluetooth;
|
|||
import video from '@/video.json'
|
||||
Vue.prototype.$video = video;
|
||||
|
||||
|
||||
// 语言
|
||||
import messages from '@/language/index.js'
|
||||
|
||||
let i18nConfig = {
|
||||
locale: uni.getLocale(),
|
||||
messages
|
||||
}
|
||||
|
||||
//模拟数据
|
||||
import json from '@/content.json'
|
||||
Vue.prototype.$json = json;
|
||||
|
||||
// #ifndef VUE3
|
||||
import Vue from 'vue'
|
||||
import VueI18n from 'vue-i18n'
|
||||
Vue.use(VueI18n)
|
||||
const i18n = new VueI18n(i18nConfig)
|
||||
Vue.config.productionTip = false
|
||||
App.mpType = 'app'
|
||||
const app = new Vue({
|
||||
i18n,
|
||||
...App
|
||||
})
|
||||
app.$mount()
|
||||
|
|
@ -36,8 +49,13 @@ app.$mount()
|
|||
import {
|
||||
createSSRApp
|
||||
} from 'vue'
|
||||
import {
|
||||
createI18n
|
||||
} from 'vue-i18n'
|
||||
const i18n = createI18n(i18nConfig)
|
||||
export function createApp() {
|
||||
const app = createSSRApp(App)
|
||||
app.use(i18n)
|
||||
return {
|
||||
app
|
||||
}
|
||||
|
|
|
|||
|
|
@ -108,12 +108,12 @@
|
|||
if (unit == "10") {
|
||||
that.unit = "lb"
|
||||
}
|
||||
if (unit == "01") {
|
||||
that.unit = "斤"
|
||||
}
|
||||
if (num == "00") {
|
||||
weight = weight / 10
|
||||
}
|
||||
if (num == "01") {
|
||||
that.unit = "斤"
|
||||
}
|
||||
if (num == "10") {
|
||||
if (unit == "10") {
|
||||
that.unit = "lb"
|
||||
|
|
|
|||
34
pages.json
|
|
@ -17,10 +17,22 @@
|
|||
|
||||
}
|
||||
},
|
||||
// {
|
||||
// "path": "pages/target/target",
|
||||
// "style": {
|
||||
// "navigationBarTitleText": "优选"
|
||||
// }
|
||||
// },
|
||||
{
|
||||
"path": "pages/target/target",
|
||||
"path": "pages/card/card",
|
||||
"style": {
|
||||
"navigationBarTitleText": ""
|
||||
"navigationBarTitleText": "运动"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/count/count",
|
||||
"style": {
|
||||
"navigationBarTitleText": "饮食"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
|
@ -345,14 +357,18 @@
|
|||
"pagePath": "pages/index/index",
|
||||
"iconPath": "static/shou.png",
|
||||
"selectedIconPath": "static/shou2.png",
|
||||
"text": "首页"
|
||||
"text": "健康"
|
||||
}, {
|
||||
"pagePath": "pages/count/count",
|
||||
"iconPath": "static/yinshi.png",
|
||||
"selectedIconPath": "static/yinshi2.png",
|
||||
"text": "饮食"
|
||||
}, {
|
||||
"pagePath": "pages/card/card",
|
||||
"iconPath": "static/yundong.png",
|
||||
"selectedIconPath": "static/yundong2.png",
|
||||
"text": "运动"
|
||||
},{
|
||||
"pagePath": "pages/target/target",
|
||||
"iconPath": "static/ping.png",
|
||||
"selectedIconPath": "static/ping2.png",
|
||||
"text": "优选"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/my/me",
|
||||
"iconPath": "static/wo.png",
|
||||
"selectedIconPath": "static/wo2.png",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,161 @@
|
|||
<template>
|
||||
<view class="cardContent">
|
||||
<view class="cardList">
|
||||
<view class="caritem" @click="handleNavTol('/pageTwo/charts/charts')">
|
||||
<image src="/static/q5.png"></image>
|
||||
<view>曲线</view>
|
||||
</view>
|
||||
<view class="caritem" @click="handleNavTol('/pageTwo/compk/contrast')">
|
||||
<image src="/static/q3.png"></image>
|
||||
<view>数据对比</view>
|
||||
</view>
|
||||
<view class="caritem" @click="handlerRecord">
|
||||
<image src="/static/q7.png"></image>
|
||||
<view>添加记录</view>
|
||||
</view>
|
||||
<view class="caritem" @click="handleNavTol('/pageTwo/history/history')">
|
||||
<image src="/static/q8.png"></image>
|
||||
<view>历史记录</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="cardListchosen">
|
||||
<view class="item" v-for="(ite,ind) in cardList.chosen_fixed" @click="handleNavTol(ite.page_jump)">
|
||||
<view class="info">
|
||||
<image :src="ite.icon"></image>
|
||||
<view>{{ite.name}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="item" v-for="(ite,ind) in cardList.chosen_yes" @click="handleNavTol(ite.page_jump)">
|
||||
<view class="info">
|
||||
<image :src="ite.icon"></image>
|
||||
<view>{{ite.name}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="setCard" @click="handleSetCard">
|
||||
工具设置
|
||||
</view> -->
|
||||
<!-- 手动记录 -->
|
||||
<record></record>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mapState
|
||||
} from "vuex";
|
||||
import record from '@/components/cardIndex/record.vue';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
||||
}
|
||||
},
|
||||
components: {
|
||||
record,
|
||||
},
|
||||
computed: {
|
||||
...mapState(['user', "CardList"]),
|
||||
endDate() {
|
||||
return this.$tools.getDate("start")
|
||||
},
|
||||
startDate() {
|
||||
return this.$tools.GetDateStr(-90);
|
||||
},
|
||||
cardList() {
|
||||
return this.CardList
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
// 手动
|
||||
handlerRecord() {
|
||||
this.$store.commit('changeTsPublicRecord', true)
|
||||
},
|
||||
handleNavTol(url) {
|
||||
uni.navigateTo({
|
||||
url: url
|
||||
})
|
||||
},
|
||||
handleSetCard() {
|
||||
uni.navigateTo({
|
||||
url: "/pageTwo/cardList/card"
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.cardContent {
|
||||
min-height: 100vh;
|
||||
background: #F7F7F7;
|
||||
padding: 5px 0 15PX;
|
||||
}
|
||||
|
||||
.cardList {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
background: #fff;
|
||||
margin: 10px;
|
||||
padding: 10px;
|
||||
border-radius: 10px;
|
||||
|
||||
.caritem {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
image {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.cardListchosen {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
margin: 15px 10px;
|
||||
|
||||
.item {
|
||||
width: 47%;
|
||||
background-color: #fff;
|
||||
margin-bottom: 15px;
|
||||
position: relative;
|
||||
height: 60px;
|
||||
line-height: 60px;
|
||||
border-radius: 5px;
|
||||
|
||||
.info {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
image {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
background-color: #f2f2f2;
|
||||
margin-right: 10px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.setCard {
|
||||
color: $maincolor;
|
||||
margin: 15px;
|
||||
text-align: center;
|
||||
border: 1px solid $maincolor;
|
||||
border-radius: 10px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
background: #fff;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,476 @@
|
|||
<template>
|
||||
<view class="content-box">
|
||||
<!-- 日期选择 -->
|
||||
<view class="data">
|
||||
<picker mode="date" :end="endDate" @change="changeClickDate" :value="data?data:endDate">
|
||||
<view>
|
||||
{{data?data:"请选择"}}
|
||||
<image src="/static/qie.png"></image>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
|
||||
<!-- 称重 -->
|
||||
<view class="blue-tooth" v-if="user.aud_id!=''">
|
||||
<blue-tooth :btnType="btnType"></blue-tooth>
|
||||
</view>
|
||||
<!-- 能量摄入 -->
|
||||
<view class="everyDay">
|
||||
<view class="title">
|
||||
<view><text class="quan"></text>热量摄入</view>
|
||||
<view class="icon" @click="handleSet">
|
||||
<uni-icons type="gear" size="26"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
<view class="jishiqi">
|
||||
<view class="left">
|
||||
<view class="chart-wrap">
|
||||
<view class="charts-box" v-if="handTrue">
|
||||
<qiun-data-charts type="arcbar" :chartData="chartData" :canvas2d="true"
|
||||
canvasId="foodCharts01" />
|
||||
</view>
|
||||
<view class="center">
|
||||
摄入
|
||||
<text>{{foodInfo.nutrients_four[0].today_intake}}</text>
|
||||
<view class="unit">Kcal</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="mubiao">
|
||||
目标:<text>{{foodInfo.nutrients_four[0].suggestion}}</text>kcal
|
||||
</view>
|
||||
</view>
|
||||
<view class="right">
|
||||
<view class="item" v-for="(ite,ind) in foodInfo.nutrients_four.slice(1)">
|
||||
<view class="left-icon">
|
||||
<image :src="ite.icon"></image>
|
||||
<view class="val" :style="{color:ite.color}">{{ite.proportion_fp||0}}%</view>
|
||||
</view>
|
||||
<view class="right-info">
|
||||
<view class="right-info-top">
|
||||
<text class="name">{{ite.name}}</text>
|
||||
<text class="">
|
||||
{{ite.today_intake||0}}/{{ite.suggestion||0}}g
|
||||
</text>
|
||||
</view>
|
||||
<view class="right-info-bottom">
|
||||
<view class="val" :style="{ width: ite.proportion + '%',background:ite.color}">
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 早午晚餐 -->
|
||||
<view class="foodtools">
|
||||
<view class="type" v-for="(item,index) in foodInfo.list">
|
||||
<view class="title" @click="handledetail(index)">
|
||||
<view class="text">
|
||||
<image :src="item.icon"></image>
|
||||
<view>{{item.name}}</view>
|
||||
<text>{{item.val}}{{item.unit}}</text>
|
||||
</view>
|
||||
<view class="detail">
|
||||
餐食详情
|
||||
<uni-icons type="forward" size="20" color="#999"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
<view class="list">
|
||||
<uni-swipe-action>
|
||||
<uni-swipe-action-item v-for="(ite,ind) in item.list" :key="ind" :right-options="actionOptions"
|
||||
@click="delAcitionItem(ite)">
|
||||
<view class="item" @click="showFoodDetail(ite)">
|
||||
<image :src="ite.pic_url" mode="aspectFill"></image>
|
||||
<view class="weight">
|
||||
<view>{{ite.name}}</view>
|
||||
<view class="size12 c999">{{ite.weight}}<text>|</text>{{ite.val}}kcal</view>
|
||||
</view>
|
||||
</view>
|
||||
</uni-swipe-action-item>
|
||||
</uni-swipe-action>
|
||||
<view class="add" @click="handleAddFood(item.name)">
|
||||
<text>+</text>添加食物
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="fenxi" @click="navTo('/Food/count/everyDay?page=count')">
|
||||
<image src="/static/fenxi.png"></image>
|
||||
营养分析
|
||||
</view>
|
||||
|
||||
<!-- 搜索 -->
|
||||
<view class="serachBox">
|
||||
<view class="title">
|
||||
<view class="quan mr-5"></view>教你做
|
||||
</view>
|
||||
<view class="searchInput">
|
||||
<div class="search-wrap" @click="navTo('/Food/search/search')">
|
||||
<text>输入食材快速搜索菜谱</text>
|
||||
<image src="/static/28.png"></image>
|
||||
</div>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 营养含量分析 -->
|
||||
<view v-if="drawerVisible" class="drawerVisible">
|
||||
<view class="bgVisible" @click="handleDrawerClose"></view>
|
||||
<view class="infoVisible">
|
||||
<scroll-view style="height: 100%;" scroll-y="true">
|
||||
<view class="foodDetail">
|
||||
<view class="foodInfo">
|
||||
<image :src="activeFoodDetail.pic_url" mode="aspectFill"></image>
|
||||
<view class="info">
|
||||
<view class="name">{{activeFoodDetail.name}}</view>
|
||||
<view class="kcal">{{activeFoodDetail.val}}千卡</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="foodContent">
|
||||
<view class="title">热量和营养</view>
|
||||
<view class="progress">
|
||||
<div class="chart-wrap" v-if="chartVisible">
|
||||
<qiun-data-charts type="ring" :opts="opts" :chartData="chartData2" :cHeight="280"
|
||||
:cWidth="280" :canvas2d="true" canvasId="foodCharts02" />
|
||||
</div>
|
||||
<view class="info" v-if="activeFoodDetail.nutrients_four">
|
||||
<view class="info-item"
|
||||
v-for="(item,index) in activeFoodDetail.nutrients_four.slice(1)" :key="index">
|
||||
<view class="color" :style="{'background-color':`${item.color}`}">
|
||||
</view>
|
||||
<view>{{item.name}}:{{item.proportion}}%</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="tips">
|
||||
<text>营养素</text>
|
||||
<text>{{activeFoodDetail.weight}}含量</text>
|
||||
</view>
|
||||
<view class="foodDetailList">
|
||||
<view class="foodDetailItem" v-for="(item,index) in activeFoodDetail.nutrients_list"
|
||||
:key="index">
|
||||
<view class="name">{{item.name_ch}}</view>
|
||||
<view class="value">{{item.value}}{{item.unit}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mapState
|
||||
} from "vuex";
|
||||
import blueTooth from "@/components/foodIndex/bluetooth_food.vue"
|
||||
import qiunDataCharts from '@/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue';
|
||||
export default {
|
||||
name: "food",
|
||||
data() {
|
||||
return {
|
||||
btnType: 1,
|
||||
token: "",
|
||||
index: 0,
|
||||
opts: {
|
||||
background: "transparent",
|
||||
title: {
|
||||
name: "",
|
||||
},
|
||||
},
|
||||
chartData: {
|
||||
series: [{
|
||||
data: 0,
|
||||
color: "#3CB383"
|
||||
}]
|
||||
},
|
||||
data: '',
|
||||
isBle: true,
|
||||
handTrue: false,
|
||||
chartData2: {},
|
||||
activeFoodDetail: {},
|
||||
drawerVisible: false,
|
||||
chartVisible: false, // 单独控制图表显示
|
||||
actionOptions: [{
|
||||
text: '删除',
|
||||
style: {
|
||||
backgroundColor: '#dd524d',
|
||||
borderRadius: '10rpx'
|
||||
}
|
||||
}]
|
||||
};
|
||||
},
|
||||
components: {
|
||||
blueTooth,
|
||||
qiunDataCharts
|
||||
},
|
||||
computed: {
|
||||
...mapState(["configInfo", "user", "countFoodInfo", "bleValue"]),
|
||||
info() {
|
||||
return this.user
|
||||
},
|
||||
kcalVal() {
|
||||
return this.configInfo.kcal_data
|
||||
},
|
||||
endDate() {
|
||||
return this.$tools.getDate("start")
|
||||
},
|
||||
foodInfo() {
|
||||
let that = this
|
||||
that.handTrue = false
|
||||
that.$nextTick(() => {
|
||||
that.handTrue = true
|
||||
that.chartData.series[0].data = that.user.aud_id ? Number(that.countFoodInfo.nutrients_four[0].proportion) / 100 : 0
|
||||
})
|
||||
that.data = that.user.aud_id ? that.countFoodInfo.date : that.$tools.getDate("start")
|
||||
return that.user.aud_id ? that.countFoodInfo : that.configInfo.default_count_foot
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 详情
|
||||
showFoodDetail(item) {
|
||||
console.log("item", item)
|
||||
let that = this
|
||||
let chart_data = []
|
||||
that.drawerVisible = true;
|
||||
that.opts.color = []
|
||||
that.activeFoodDetail = item
|
||||
for (let i = 1; i < item.nutrients_four.length; ++i) {
|
||||
that.opts.color.push(item.nutrients_four[i].color)
|
||||
chart_data.push({
|
||||
name: item.nutrients_four[i].name,
|
||||
value: Number(item.nutrients_four[i].proportion),
|
||||
})
|
||||
}
|
||||
that.opts.title.name = that.activeFoodDetail.val
|
||||
that.chartData2 = JSON.parse(JSON.stringify({
|
||||
series: [{
|
||||
data: chart_data
|
||||
}]
|
||||
}));
|
||||
that.$nextTick(() => {
|
||||
// 延迟显示图表,确保容器已渲染
|
||||
setTimeout(() => {
|
||||
that.chartVisible = true
|
||||
}, 100)
|
||||
})
|
||||
},
|
||||
// 餐食详情
|
||||
handledetail(index) {
|
||||
uni.navigateTo({
|
||||
url: "/Food/count/everyMeal?index=" + index
|
||||
})
|
||||
},
|
||||
// 设置
|
||||
handleSet() {
|
||||
uni.navigateTo({
|
||||
url: "/Food/count/setting"
|
||||
})
|
||||
},
|
||||
changeClickDate(e) {
|
||||
this.data = e.detail.value
|
||||
this.$store.dispatch("getCountFoodInfo", {
|
||||
aud_id: this.info.aud_id,
|
||||
time: e.detail.value
|
||||
})
|
||||
},
|
||||
// 添加食物
|
||||
handleAddFood(name) {
|
||||
this.isShow = false
|
||||
uni.navigateTo({
|
||||
url: "/Food/count/search?name=" + name + "&time=" + this.date
|
||||
})
|
||||
},
|
||||
// 功能页面跳转
|
||||
navTo(url) {
|
||||
uni.navigateTo({
|
||||
url
|
||||
})
|
||||
},
|
||||
handleDrawerClose() {
|
||||
// 先隐藏图表,再隐藏抽屉
|
||||
this.chartVisible = false
|
||||
this.drawerVisible = false;
|
||||
},
|
||||
// 删除食材
|
||||
delAcitionItem(item) {
|
||||
let that = this
|
||||
uni.showModal({
|
||||
content: `是否删除[${item.name}]?`,
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
this.$model.delCEatAction({
|
||||
aud_id: that.info.aud_id,
|
||||
eat_log_id: item.id
|
||||
}).then(res => {
|
||||
// 删除最新一天食物
|
||||
if (that.foodInfo.date == that.info.food_count.date) {
|
||||
that.$store.dispatch("getUserInfoFood")
|
||||
} else {
|
||||
that.$store.dispatch("getCountFoodInfo", {
|
||||
aud_id: that.info.aud_id,
|
||||
time: that.foodInfo.date
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content-box {
|
||||
padding-top: 15px;
|
||||
padding-bottom: 15px;
|
||||
background: #f7f7f7;
|
||||
}
|
||||
|
||||
.serachBox {
|
||||
position: initial;
|
||||
margin-bottom: 10px;
|
||||
height: auto;
|
||||
overflow: hidden;
|
||||
|
||||
.searchInput {
|
||||
background: #fff;
|
||||
padding: 10px;
|
||||
width: calc(100% - 20px);
|
||||
position: initial;
|
||||
margin: 10px 0;
|
||||
border-radius: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.data {
|
||||
width: 100%;
|
||||
background: #fff;
|
||||
height: 90rpx;
|
||||
box-shadow: 0px 1px 5px 2px #dfe2e1fc;
|
||||
margin: 10px;
|
||||
width: calc(100% - 20px);
|
||||
border-radius: 10px;
|
||||
margin-top: 0;
|
||||
|
||||
picker {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
height: 90rpx;
|
||||
position: relative;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: bold;
|
||||
|
||||
view {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
display: flex;
|
||||
bottom: 0;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
image {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.blue-tooth {
|
||||
padding: 10px;
|
||||
background: #fff;
|
||||
border-radius: 10px;
|
||||
margin: 0 10px;
|
||||
box-shadow: 0px 1px 5px 2px #dfe2e1fc;
|
||||
}
|
||||
|
||||
.foodtools {
|
||||
margin-top: 30rpx;
|
||||
|
||||
.type {
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
padding: 20rpx;
|
||||
margin: 0 20rpx 20rpx;
|
||||
|
||||
.title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
image {
|
||||
width: 60rpx;
|
||||
height: 60rpx;
|
||||
}
|
||||
|
||||
.text {
|
||||
width: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
view {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
margin: 0 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.detail {
|
||||
color: #999;
|
||||
display: flex;
|
||||
font-size: 24rpx;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
.list {
|
||||
width: 100%;
|
||||
margin-top: 30rpx;
|
||||
|
||||
.item {
|
||||
display: flex;
|
||||
padding: 20rpx 0;
|
||||
border-bottom: 1px solid #f7f7f7;
|
||||
|
||||
image {
|
||||
width: 90rpx;
|
||||
height: 90rpx;
|
||||
border-radius: 50%;
|
||||
border: 1px solid #f7f7f7;
|
||||
}
|
||||
|
||||
.weight {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
margin-left: 20rpx;
|
||||
|
||||
text {
|
||||
margin: 0 20rpx;
|
||||
color: #dfdfdf;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.add {
|
||||
width: 100%;
|
||||
margin-top: 20rpx;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
.charts-box {
|
||||
width: 250rpx;
|
||||
height: 250rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -33,17 +33,60 @@
|
|||
登录后查看更多
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 数据 -->
|
||||
<view class="toggle">
|
||||
<view :class="{'active':toolsIndex==0}" class="toolsItem" @click="handleToolsIndex(0)">身体数据</view>
|
||||
<view :class="{'active':toolsIndex==1}" class="toolsItem" @click="handleToolsIndex(1)">饮食数据</view>
|
||||
<view :class="{'active':toolsIndex==2}" class="toolsItem" @click="handleToolsIndex(2)">健康工具</view>
|
||||
<view v-if="token&&Measure.top_list.length" class="body">
|
||||
<view class="top">
|
||||
<view class="info box_shadow" v-for="(ite,ind) in Measure.top_list"
|
||||
:style="{'backgroundColor':ite.bk_color}" @click="handelCurveDetailed">
|
||||
<view class="title">
|
||||
<view class="bold">{{ite.name}}</view>
|
||||
<view class="c999">
|
||||
{{ite.time}}
|
||||
<uni-icons type="right" class="ml-10" color="#999"></uni-icons>
|
||||
</view>
|
||||
<view v-if="token">
|
||||
<bodypage v-if="toolsIndex==0"></bodypage>
|
||||
<food v-if="toolsIndex==1"></food>
|
||||
<card v-if="toolsIndex==2"></card>
|
||||
</view>
|
||||
<view class="weight">
|
||||
<view class="left">
|
||||
<view class="number"><text class="size26 bold">{{ite.value}}</text>{{ite.unit}}</view>
|
||||
<view class="standard bold size16" :style="{'color':ite.standard_color}">{{ite.standard}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="charts" v-if="handTrue&&ite.curve_list.line.categories.length">
|
||||
<qiun-data-charts type="area" :chartData="ite.curve_list.line" :Width="140" :Height="40"
|
||||
:canvas2d="true" :canvasId="ite.key_name+ind" :opts="opts" :tapLegend="false"
|
||||
:tooltipShow="false" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="Ideal c999" v-if="ite.ideal_weight">
|
||||
<text>理想{{ite.name}}</text>
|
||||
<text>{{ite.ideal_weight}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- -->
|
||||
<view class="function mt-15">
|
||||
<view @click="handlerRecord">
|
||||
<image src="/static/shoudong.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view @click="handReport">
|
||||
<image src="/static/shendu.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<!-- -->
|
||||
<view class="tools">
|
||||
<view class="item box_shadow" v-for="(ite,ind) in Measure.card_list"
|
||||
@click="handleTools(ite.key_name)">
|
||||
<view class="top">
|
||||
<image :src="ite.icon"></image>{{ite.name}}
|
||||
</view>
|
||||
<view class="number">
|
||||
<text class="bold"
|
||||
:class="[ite.key_name=='body_level'||ite.key_name=='body_type'?'size14':'size20']">{{ite.value}}</text>{{ite.unit}}
|
||||
</view>
|
||||
<view class="bold size14" :style="{'color':ite.standard_color}">{{ite.standard}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 手动记录 -->
|
||||
<record></record>
|
||||
</view>
|
||||
<view class="nolist" v-else>
|
||||
<image src="/static/none.png"></image>
|
||||
|
|
@ -58,26 +101,47 @@
|
|||
import {
|
||||
mapState
|
||||
} from "vuex";
|
||||
import bodypage from "@/components/bodyIndex/bodyHome.vue"
|
||||
import food from "@/components/foodIndex/foodHome.vue"
|
||||
import card from "@/components/cardIndex/cardHome.vue"
|
||||
import drawer from "@/components/bodyIndex/drawer.vue"
|
||||
import record from '@/components/bodyIndex/record.vue';
|
||||
import qiunDataCharts from '@/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
token: "",
|
||||
// toolsIndex: 0
|
||||
handTrue: false,
|
||||
// Measure: {
|
||||
// card_list: [],
|
||||
// top_list: []
|
||||
// },
|
||||
opts: {
|
||||
padding: [5, 0, 0, 0],
|
||||
dataLabel: false,
|
||||
enableScroll: false,
|
||||
xAxis: {
|
||||
disabled: true,
|
||||
axisLine: false,
|
||||
disableGrid: true,
|
||||
itemCount: 5
|
||||
},
|
||||
yAxis: {
|
||||
gridType: "dash",
|
||||
dashLength: 2,
|
||||
disabled: true,
|
||||
axisLine: false,
|
||||
disableGrid: true,
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
food,
|
||||
bodypage,
|
||||
card,
|
||||
record,
|
||||
drawer,
|
||||
qiunDataCharts
|
||||
},
|
||||
computed: {
|
||||
...mapState(["user", "familayList", 'isBluetoothTyle', "isConnected", "configInfo", "bleValue",
|
||||
"homeCardIndex"]),
|
||||
"MeasureResult"
|
||||
]),
|
||||
info() {
|
||||
return this.user
|
||||
},
|
||||
|
|
@ -93,8 +157,13 @@
|
|||
bleTipsText() {
|
||||
return this.bleValue.bleTipsText
|
||||
},
|
||||
toolsIndex() {
|
||||
return this.homeCardIndex
|
||||
Measure() {
|
||||
let that = this
|
||||
that.handTrue = false
|
||||
that.$nextTick(() => {
|
||||
that.handTrue = true
|
||||
})
|
||||
return this.MeasureResult
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
|
|
@ -121,7 +190,6 @@
|
|||
onShow() {
|
||||
let that = this
|
||||
that.token = uni.getStorageSync('token')
|
||||
console.log("token",that.token)
|
||||
uni.onBluetoothAdapterStateChange(function(res) {
|
||||
that.$store.commit("changeBluetooth", res.available);
|
||||
})
|
||||
|
|
@ -145,12 +213,6 @@
|
|||
})
|
||||
}
|
||||
},
|
||||
'bleValue.isFood'() {
|
||||
let that = this
|
||||
if (that.bleValue.isFood) {
|
||||
that.$store.commit("changehomeCard", 1);
|
||||
}
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
|
||||
|
|
@ -185,14 +247,36 @@
|
|||
that.$tools("登录后查看更多")
|
||||
}
|
||||
},
|
||||
handleToolsIndex(ind) {
|
||||
this.$store.commit("changehomeCard", ind);
|
||||
},
|
||||
handleLogin() {
|
||||
uni.navigateTo({
|
||||
url: "/body/login/login"
|
||||
})
|
||||
},
|
||||
// 详情
|
||||
handleTools(name) {
|
||||
uni.navigateTo({
|
||||
url: "/body/home/body?to=" + name
|
||||
})
|
||||
},
|
||||
// 深度
|
||||
handReport() {
|
||||
uni.navigateTo({
|
||||
url: "/body/report/report"
|
||||
})
|
||||
},
|
||||
// 趋势
|
||||
handelCurveDetailed() {
|
||||
let that = this
|
||||
setTimeout(function() {
|
||||
uni.navigateTo({
|
||||
url: "/body/curve/curve"
|
||||
})
|
||||
}, 200)
|
||||
},
|
||||
// 手动
|
||||
handlerRecord() {
|
||||
this.$store.commit('changeRecord', true)
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
@ -202,6 +286,104 @@
|
|||
background: #ffc800 !important;
|
||||
}
|
||||
|
||||
.body {
|
||||
background: #f7f7f7;
|
||||
|
||||
|
||||
.info {
|
||||
margin: 15px 10px;
|
||||
padding: 10px;
|
||||
height: auto;
|
||||
overflow: hidden;
|
||||
border-radius: 10px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.title {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.weight {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
margin-top: 10px;
|
||||
justify-content: space-between;
|
||||
|
||||
.left {
|
||||
width: 40%;
|
||||
height: 60px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
|
||||
.target {
|
||||
color: #999;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
|
||||
.charts {
|
||||
width: 50%;
|
||||
height: 60px;
|
||||
}
|
||||
|
||||
.function {
|
||||
display: flex;
|
||||
margin: 0 5px;
|
||||
width: calc(100% - 10px);
|
||||
justify-content: space-between;
|
||||
|
||||
view {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
image {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.tools {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding: 0 0 10px;
|
||||
padding-left: 3%;
|
||||
width: 97%;
|
||||
background: #f7f7f7;
|
||||
box-shadow: none;
|
||||
justify-content: space-between;
|
||||
|
||||
.item {
|
||||
width: 40%;
|
||||
background: #fff;
|
||||
margin-bottom: 15px;
|
||||
border-radius: 10px;
|
||||
padding: 10px 3%;
|
||||
margin-right: 3%;
|
||||
}
|
||||
|
||||
.top {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
image {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.number {
|
||||
margin: 5px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.header {
|
||||
width: 100%;
|
||||
padding: 15px 0;
|
||||
|
|
|
|||
104
pages/my/me.vue
|
|
@ -9,14 +9,14 @@
|
|||
<text class="t-icon t-icon-arrow-right-bold"></text>
|
||||
</view>
|
||||
<view class="top top2" v-else @click="handleLogin">
|
||||
登录后查看更多
|
||||
{{$t('msgLoginTips')}}
|
||||
</view>
|
||||
<!-- -->
|
||||
<view class="wxlist borderRadius">
|
||||
<view class="list" @click="navTo('/body/my/manage')">
|
||||
<view class="item border-bottom">
|
||||
<view class="left">
|
||||
<view class="name">成员管理</view>
|
||||
<view class="name">{{$t('titleManage')}}</view>
|
||||
</view>
|
||||
<view class="right">
|
||||
<uni-icons type="right"></uni-icons>
|
||||
|
|
@ -27,7 +27,7 @@
|
|||
<view class="list" @click="navTo('/body/history/history')">
|
||||
<view class="item border-bottom">
|
||||
<view class="left">
|
||||
<view class="name">测量记录</view>
|
||||
<view class="name">{{$t('measuringRecord')}}</view>
|
||||
</view>
|
||||
<view class="right">
|
||||
<uni-icons type="right"></uni-icons>
|
||||
|
|
@ -37,7 +37,7 @@
|
|||
<view class="list" @click="navTo('/Food/me/mymenu?pageName=我的收藏')">
|
||||
<view class="item border-bottom">
|
||||
<view class="left">
|
||||
<view class="name">我的收藏</view>
|
||||
<view class="name">{{$t('infoMyCollection')}}</view>
|
||||
</view>
|
||||
<view class="right">
|
||||
<uni-icons type="right"></uni-icons>
|
||||
|
|
@ -47,25 +47,39 @@
|
|||
<view class="list" @click="navTo('/Food/me/record')">
|
||||
<view class="item border-bottom">
|
||||
<view class="left">
|
||||
<view class="name">饮食记录</view>
|
||||
<view class="name">{{$t('titleHistory')}}</view>
|
||||
</view>
|
||||
<view class="right">
|
||||
<uni-icons type="right"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #ifdef APP-PLUS -->
|
||||
<view class="list" @click="navTo('/body/my/about')">
|
||||
<view class="item border-bottom">
|
||||
<view class="left">
|
||||
<view class="name">关于我们</view>
|
||||
<view class="name">{{$t('titleAboutUs')}}</view>
|
||||
</view>
|
||||
<view class="right">
|
||||
<uni-icons type="right"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<view class="list">
|
||||
<view class="item border-bottom">
|
||||
<view class="left">
|
||||
<view class="name">{{$t('titleLanguage')}}</view>
|
||||
</view>
|
||||
<view class="right">
|
||||
<picker mode="selector" @change="changeClickLanguage" :range="languageList" range-key="name"
|
||||
:value="levelInd">
|
||||
<view>
|
||||
{{languageList[levelInd].name}}
|
||||
<uni-icons type="right"></uni-icons>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="list" v-for="(ite,ind) in CooperationUrl" :key="ind">
|
||||
<view class="item border-bottom" @click="navTo('/body/webview/webview?url=' + ite.url)">
|
||||
<view class="left">
|
||||
|
|
@ -77,7 +91,7 @@
|
|||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="btn mb-15" v-if="token" @click="handleOutLogin">退出登录</view>
|
||||
<view class="btn mb-15" v-if="token" @click="handleOutLogin">{{$t('btnLogOut')}}</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
|
@ -89,16 +103,29 @@
|
|||
data() {
|
||||
return {
|
||||
token: "",
|
||||
user: {}
|
||||
user: {},
|
||||
levelInd: 0,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapState(["accountNumber", "familayList", "CooperationUrl", ]),
|
||||
...mapState(["accountNumber", "familayList", "CooperationUrl", "setLocale", "configInfo"]),
|
||||
nickname() {
|
||||
return this.accountNumber.nickname
|
||||
},
|
||||
userList() {
|
||||
return this.familayList
|
||||
},
|
||||
languageList() {
|
||||
let that = this
|
||||
let languageList = this.configInfo.language_arr
|
||||
that.levelInd = languageList.findIndex(ite => ite.key == that.setLocale)
|
||||
return this.configInfo.language_arr
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
nickname() {
|
||||
this.user = {}
|
||||
this.user = this.accountNumber
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
|
|
@ -106,11 +133,9 @@
|
|||
that.token = uni.getStorageSync('token')
|
||||
that.handleAccountNumber()
|
||||
},
|
||||
watch: {
|
||||
nickname() {
|
||||
this.user = {}
|
||||
this.user = this.accountNumber
|
||||
}
|
||||
onShow() {
|
||||
let that = this
|
||||
that.token = uni.getStorageSync('token')
|
||||
},
|
||||
onPullDownRefresh() {
|
||||
let that = this
|
||||
|
|
@ -136,8 +161,10 @@
|
|||
handleOutLogin() {
|
||||
let that = this
|
||||
uni.showModal({
|
||||
title: '友情提示',
|
||||
content: '是否退出登录?',
|
||||
title: that.$t('msgTitle'),
|
||||
content: that.$t('verifyOutLogin'),
|
||||
cancelText: that.$t('btnSancellation'),
|
||||
confirmText: that.$t('btnConfirm'),
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
that.$model.getloginOut({}).then((res) => {
|
||||
|
|
@ -152,11 +179,48 @@
|
|||
})
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
that.$tools.msg("您已取消操作!");
|
||||
that.$tools.msg($t('msgCancel'));
|
||||
}
|
||||
},
|
||||
})
|
||||
},
|
||||
// 语言切换
|
||||
changeClickLanguage(e) {
|
||||
let that = this
|
||||
let key = that.languageList[e.target.value].key
|
||||
let val = that.languageList[e.target.value].val
|
||||
that.levelInd = e.target.value
|
||||
that.$model.getSetLanguage({
|
||||
language: val,
|
||||
}).then(res => {
|
||||
that.$i18n.locale = key
|
||||
uni.setStorageSync('language', key)
|
||||
that.$store.commit('changeLocale', key)
|
||||
that.$store.dispatch("getHomeConfig")
|
||||
that.$tools.handleUserList()
|
||||
that.handleTabBarItem()
|
||||
setTimeout(() => {
|
||||
uni.reLaunch({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
}, 500)
|
||||
})
|
||||
},
|
||||
handleTabBarItem() {
|
||||
let that = this
|
||||
uni.setTabBarItem({
|
||||
index: 0,
|
||||
text: that.$t('titleHome')
|
||||
})
|
||||
uni.setTabBarItem({
|
||||
index: 1,
|
||||
text: that.$t('titleCount')
|
||||
})
|
||||
uni.setTabBarItem({
|
||||
index: 2,
|
||||
text: that.$t('titleMe')
|
||||
})
|
||||
},
|
||||
handleLogin() {
|
||||
uni.navigateTo({
|
||||
url: "/body/login/login"
|
||||
|
|
@ -166,7 +230,7 @@
|
|||
navTo(url) {
|
||||
let that = this
|
||||
if (!that.token) {
|
||||
that.$tools.msg("登录后查看更多!")
|
||||
that.$tools.msg(that.$t('msgLoginTips'))
|
||||
return
|
||||
}
|
||||
uni.navigateTo({
|
||||
|
|
|
|||
BIN
static/add.png
|
Before Width: | Height: | Size: 9.7 KiB |
BIN
static/ping.png
|
Before Width: | Height: | Size: 3.3 KiB |
BIN
static/ping2.png
|
Before Width: | Height: | Size: 4.5 KiB |
BIN
static/shou.png
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 6.5 KiB |
BIN
static/shou2.png
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 5.4 KiB |
BIN
static/wo2.png
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 5.9 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
|
@ -8,6 +8,47 @@ export default {
|
|||
dispatch
|
||||
}) {
|
||||
return model.getHomeConfig({}).then(res => {
|
||||
res.data.language_arr = [{
|
||||
"name": "中文",
|
||||
"val": "zh",
|
||||
"key": "zh"
|
||||
}, {
|
||||
"name": "English",
|
||||
"val": "en",
|
||||
"key": "en"
|
||||
}, {
|
||||
"name": "日本語(Japanese)",
|
||||
"val": "jp",
|
||||
"key": "ja"
|
||||
}, {
|
||||
"name": "Français(French)",
|
||||
"val": "fra",
|
||||
"key": "fr"
|
||||
}, {
|
||||
"name": "Deutsch(German)",
|
||||
"val": "de",
|
||||
"key": "de"
|
||||
}, {
|
||||
"name": "한국어(Korean)",
|
||||
"val": "kor",
|
||||
"key": "ko"
|
||||
}, {
|
||||
"name": "Русский(Russian)",
|
||||
"val": "ru",
|
||||
"key": "ru"
|
||||
}, {
|
||||
"name": "Português(Portuguese)",
|
||||
"val": "pt",
|
||||
"key": "pt"
|
||||
}, {
|
||||
"name": "Español(Spanish)",
|
||||
"val": "spa",
|
||||
"key": "es"
|
||||
}, {
|
||||
"name": "Arabic(العربية)",
|
||||
"val": "ara",
|
||||
"key": "ar"
|
||||
}]
|
||||
commit('changeConfigInfo', res.data)
|
||||
return res.data
|
||||
})
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ export default new Vuex.Store({
|
|||
area_list: [],
|
||||
banner: [],
|
||||
meal_list: [],
|
||||
language_arr: [],
|
||||
literature: {
|
||||
index: [],
|
||||
bmi_evaluation: [],
|
||||
|
|
@ -76,27 +77,7 @@ export default new Vuex.Store({
|
|||
nickname: "",
|
||||
},
|
||||
MeasureResult: {
|
||||
body_type_name: "",
|
||||
body_type_unit: "",
|
||||
body_type_value: "",
|
||||
bottom_list: [],
|
||||
cplist: {
|
||||
moodlist: [],
|
||||
nutritionlist: [],
|
||||
sleeplist: [],
|
||||
sportlist: []
|
||||
},
|
||||
literature: [],
|
||||
record_time: "",
|
||||
score_name: "",
|
||||
score_unit: "",
|
||||
score_value: "",
|
||||
target_current: {
|
||||
target_weight: 0,
|
||||
initial_weight: "",
|
||||
cumulative_weight: "",
|
||||
cumulative_day: ""
|
||||
},
|
||||
card_list: [],
|
||||
top_list: []
|
||||
},
|
||||
phoneInfo: {
|
||||
|
|
@ -122,6 +103,7 @@ export default new Vuex.Store({
|
|||
isPublicRecord: false, //公共手动记录弹框
|
||||
isBluetoothTyle: false,
|
||||
isConnected: false,
|
||||
setLocale: "zh",
|
||||
trendInfo: {
|
||||
weightList: [],
|
||||
target_weight: "",
|
||||
|
|
@ -227,6 +209,11 @@ export default new Vuex.Store({
|
|||
state.isPublicRecord = newData
|
||||
},
|
||||
|
||||
// 设置语言
|
||||
changeLocale(state, newData) {
|
||||
state.setLocale = newData
|
||||
},
|
||||
|
||||
// 计时
|
||||
changeConfigInfo(state, newData) {
|
||||
state.configInfo = newData
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import $store from '@/store'
|
||||
import $tools from '@/toolJs/tools.js'
|
||||
import $model from '@/toolJs/model.js'
|
||||
import messages from '@/language/index.js'
|
||||
export default {
|
||||
msg,
|
||||
toHex,
|
||||
|
|
@ -79,10 +80,13 @@ function msg(str) {
|
|||
}
|
||||
|
||||
function showModal(text) {
|
||||
let Language = $store.state.setLocale
|
||||
let $t = messages[Language]
|
||||
uni.showModal({
|
||||
title: "提示",
|
||||
title: $t('msgTitle'),
|
||||
content: text,
|
||||
showCancel: false,
|
||||
confirmText: $t('btnConfirm'),
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.switchTab({ //返回
|
||||
|
|
@ -95,6 +99,8 @@ function showModal(text) {
|
|||
// 版本对比
|
||||
function compareVersions(version1, version2) {
|
||||
console.log("版本对比", version1, version2)
|
||||
let Language = $store.state.setLocale
|
||||
let $t = messages[Language]
|
||||
// 将版本号拆分成数字数组
|
||||
var arr1 = version1.split('.').map(Number);
|
||||
var arr2 = version2.split('.').map(Number);
|
||||
|
|
@ -108,8 +114,8 @@ function compareVersions(version1, version2) {
|
|||
if (num1 < num2) {
|
||||
// 版本1小于版本2
|
||||
return uni.showModal({
|
||||
title: '发现新版本',
|
||||
content: '检查到新版本' + version2 + ',是否更新?',
|
||||
title: that.$t('newVersion'),
|
||||
content: that.$t('newVersion') + version2 + that.$t('IsUpdate'),
|
||||
success: (modalRes) => {
|
||||
if (modalRes.confirm) { //确定更新
|
||||
if (platform === 'android') { //安卓更新
|
||||
|
|
@ -122,7 +128,7 @@ function compareVersions(version1, version2) {
|
|||
})
|
||||
}
|
||||
} else {
|
||||
that.$tools.msg("稍后可在'关于我们'内更新程序!")
|
||||
that.$tools.msg(that.$t('UpdateProgram'))
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||