Compare commits

..

8 Commits

Author SHA1 Message Date
qcl_123 94efac76af 修复测量记录显示问题 2026-04-10 10:08:27 +08:00
qcl_123 73ef550930 测量记录显示问题 2026-04-10 10:00:18 +08:00
qcl_123 93bde995c3 测量记录显示问题 2026-04-10 09:56:25 +08:00
qcl_123 2a4300b000 配置项 2026-04-07 17:20:10 +08:00
qcl_123 c0726ad4d9 pcl22新增单位斤 2026-04-07 17:10:57 +08:00
qcl_123 8a21bd69b0 PCL22新增单位斤 2026-04-07 15:40:35 +08:00
qcl_123 8f77aa2c1e PCL22对接新单位斤 2026-04-07 15:30:03 +08:00
qcl_123 94c6cee544 123 2026-04-02 09:09:37 +08:00
905 changed files with 8728 additions and 19611 deletions

3
.gitignore vendored
View File

@ -1 +1,2 @@
node_modules node_modules/
unpackage/

75
App.vue
View File

@ -36,8 +36,6 @@
console.log('App Launch') console.log('App Launch')
}, },
onShow: function() { onShow: function() {
let that = this
that.handleTabBarItem()
uni.switchTab({ uni.switchTab({
url: "/pages/index/index" url: "/pages/index/index"
}) })
@ -55,53 +53,82 @@
handleoginversion() { handleoginversion() {
let that = this let that = this
that.$model.getLoginVersion({}).then(res => { that.$model.getLoginVersion({}).then(res => {
let language = res.data.language
uni.setLocale(language)
that.$i18n.locale = language
that.$store.commit('changeLocale', language)
uni.setStorageSync('language', language)
that.$store.dispatch("getCardAllList") //
that.$store.dispatch("getPublicRecord") //
that.$store.dispatch("getHomeConfig") // that.$store.dispatch("getHomeConfig") //
if (res.code == 0) { if (res.code == 0) {
that.$tools.handleUserList() that.$tools.handleUserList()
} else { } else {
uni.setStorageSync('token', "") uni.setStorageSync('token', "")
uni.setStorageSync('aan_id', null) uni.setStorageSync('aan_id', null)
// #ifdef APP-PLUS||APP
setTimeout(() => { setTimeout(() => {
uni.reLaunch({ uni.reLaunch({
url: '/body/login/login', url: '/body/login/login',
}) })
}, 500); }, 500);
// #endif
} }
// #ifdef APP-PLUS||APP
that.$store.commit('changePhoneInfo', { that.$store.commit('changePhoneInfo', {
versionUrl: res.data versionUrl: res.data
}) })
return that.$tools.compareVersions(SystemVersion, res.data.version) //
let version = that.$tools.compareVersions(SystemVersion, res.data.version)
console.log("是否登录及版本号", res, res.data.version, SystemVersion, version)
if (version == -1) { // 01-1
uni.showModal({
title: '发现新版本',
content: '检查到新版本' + res.data.version + ',是否更新?',
success: (modalRes) => {
if (modalRes.confirm) { //
if (platform === 'android') { //
uni.setStorageSync('VERSION', res.data.version)
uni.navigateTo({
url: "/body/me/about"
})
} else { //ios
plus.runtime.launchApplication({
action: `itms-apps://itunes.apple.com/cn/app/id6654906497?mt=8`
})
}
} else {
that.$tools.msg("稍后可在'关于我们'内更新程序!")
}
}
});
}
// #endif
}).catch(error => { }).catch(error => {
// console.error('Error fetching data:', error); // console.error('Error fetching data:', error);
}); });
}, },
handleTabBarItem() { //
updataWeiXin() {
let that = this let that = this
uni.setTabBarItem({ const updateManager = uni.getUpdateManager()
index: 0, //
text: that.$t('titleHealth') updateManager.onCheckForUpdate(function(res) {
// console.log("", res.hasUpdate)
}) })
uni.setTabBarItem({ updateManager.onUpdateReady(function() {
index: 1, uni.showModal({
text: that.$t('titleDiet') title: '更新提示',
content: '新版本已经准备好,是否重启应用?',
success: function(res) {
if (res.confirm) {
// applyUpdate
updateManager.applyUpdate()
}
}
}) })
uni.setTabBarItem({
index: 2,
text: that.$t('titleExercise')
}) })
uni.setTabBarItem({ updateManager.onUpdateFailed(function() {
index: 3, uni.showModal({
text: that.$t('titleMe') title: '新版本更新失败',
content: '请退出并移除小程序,重新打开...',
}) })
}, })
}
} }
} }
</script> </script>

View File

@ -5,7 +5,7 @@
<!-- 早午晚餐 --> <!-- 早午晚餐 -->
<view class="everyDay"> <view class="everyDay">
<view class="title"> <view class="title">
<view><text class="quan"></text>{{$t("countCalorieAnalysis")}}</view> <view><text class="quan"></text>卡路里分析</view>
</view> </view>
<div class="chart-wrap"> <div class="chart-wrap">
<qiun-data-charts type="ring" :opts="opts" :chartData="chartData" :canvas2d="true" canvasId="everyDay01"/> <qiun-data-charts type="ring" :opts="opts" :chartData="chartData" :canvas2d="true" canvasId="everyDay01"/>
@ -23,15 +23,15 @@
<!--营养元素分析 --> <!--营养元素分析 -->
<view class="everyDay"> <view class="everyDay">
<view class="title"> <view class="title">
<view><text class="quan"></text>{{$t("countNutrientElementEnergyProportion")}}</view> <view><text class="quan"></text>营养元素能量占比</view>
</view> </view>
<div class="chart-wrap"> <div class="chart-wrap">
<qiun-data-charts type="ring" :opts="opts2" :chartData="chartData2" :canvas2d="true" canvasId="everyDay02"/> <qiun-data-charts type="ring" :opts="opts2" :chartData="chartData2" :canvas2d="true" canvasId="everyDay02"/>
</div> </div>
<view class="foodtools"> <view class="foodtools">
<view class="top"> <view class="top">
<view>{{$t("countNutritionClassification")}}</view> <view>营养分类</view>
<view>{{$t("countIntake")}}</view> <view>摄入</view>
</view> </view>
<view class="type"> <view class="type">
<view class="name"> <view class="name">
@ -66,7 +66,7 @@
<!--营养元素排行榜 --> <!--营养元素排行榜 -->
<view class="everyDay"> <view class="everyDay">
<view class="title"> <view class="title">
<view><text class="quan"></text>{{$t("countNutritionElementRankingList")}}</view> <view><text class="quan"></text>营养元素排行榜</view>
</view> </view>
<view class="foodtools rank_list"> <view class="foodtools rank_list">
<view class="topname">{{details.carbohydrate.name}}</view> <view class="topname">{{details.carbohydrate.name}}</view>
@ -169,9 +169,6 @@
onLoad(options) { onLoad(options) {
let that = this let that = this
that.handleList() that.handleList()
uni.setNavigationBarTitle({
title: this.$t('titleEveryMeal')
})
}, },
methods: { methods: {
handleList() { handleList() {

View File

@ -12,7 +12,7 @@
<!-- 成分统计 --> <!-- 成分统计 -->
<view class="everyDay"> <view class="everyDay">
<view class="title"> <view class="title">
<view><text class="quan"></text>{{$t('countComponentStatistics')}}</view> <view><text class="quan"></text>成分统计</view>
</view> </view>
<view class="progress"> <view class="progress">
<div class="chart-wrap"> <div class="chart-wrap">
@ -36,7 +36,7 @@
<view class="foodtools"> <view class="foodtools">
<view class="type"> <view class="type">
<view class="title"> <view class="title">
<view><text class="quan"></text>{{$t('countFoodTypes')}}</view> <view><text class="quan"></text>食物类型</view>
</view> </view>
<view class="list" v-if="info.list.length"> <view class="list" v-if="info.list.length">
<uni-swipe-action> <uni-swipe-action>
@ -54,13 +54,13 @@
</view> </view>
<view v-else class="nolist"> <view v-else class="nolist">
<image src="/static/none.png"></image> <image src="/static/none.png"></image>
<view>{{$t('countNoFood')}}</view> <view>暂无食物</view>
</view> </view>
</view> </view>
</view> </view>
<!-- 添加食物 --> <!-- 添加食物 -->
<view class="add" @click="handleAddFood()"> <view class="add" @click="handleAddFood()">
<text>+</text>{{$t('countAddFood')}} <text>+</text>添加食物
</view> </view>
</view> </view>
</view> </view>
@ -74,11 +74,11 @@
<image :src="activeFoodDetail.pic_url" mode="aspectFill"></image> <image :src="activeFoodDetail.pic_url" mode="aspectFill"></image>
<view class="info"> <view class="info">
<view class="name">{{activeFoodDetail.name}}</view> <view class="name">{{activeFoodDetail.name}}</view>
<view class="kcal">{{activeFoodDetail.val}}kcal</view> <view class="kcal">{{activeFoodDetail.val}}千卡</view>
</view> </view>
</view> </view>
<view class="foodContent"> <view class="foodContent">
<view class="title">{{$t('CaloriesAndnutrients')}}</view> <view class="title">热量和营养</view>
<view class="progress"> <view class="progress">
<div class="chart-wrap"> <div class="chart-wrap">
<qiun-data-charts type="ring" :opts="opts2" <qiun-data-charts type="ring" :opts="opts2"
@ -94,8 +94,8 @@
</view> </view>
</view> </view>
<view class="tips"> <view class="tips">
<text>{{$t('Nutrients')}}</text> <text>营养素</text>
<text>{{activeFoodDetail.weight}}{{$t('Content')}}</text> <text>{{activeFoodDetail.weight}}含量</text>
</view> </view>
<view class="foodDetailList"> <view class="foodDetailList">
<view class="foodDetailItem" v-for="(item,index) in activeFoodDetail.nutrients_list" <view class="foodDetailItem" v-for="(item,index) in activeFoodDetail.nutrients_list"
@ -140,7 +140,7 @@
drawerVisible: false, drawerVisible: false,
chartVisible: false, // chartVisible: false, //
actionOptions: [{ actionOptions: [{
text: this.$t('btnDelete'), text: '删除',
style: { style: {
backgroundColor: '#dd524d', backgroundColor: '#dd524d',
borderRadius: '10rpx' borderRadius: '10rpx'
@ -169,9 +169,6 @@
let that = this let that = this
that.index = options.index that.index = options.index
that.bgimage = that.foodItem[options.index].icon_bg that.bgimage = that.foodItem[options.index].icon_bg
uni.setNavigationBarTitle({
title: this.$t('titleEveryMeal')
})
that.handleInfo() that.handleInfo()
}, },
watch: { watch: {
@ -246,9 +243,7 @@
delAcitionItem(item) { delAcitionItem(item) {
let that = this let that = this
uni.showModal({ uni.showModal({
content: that.$t("WhetherTodelete") + item.name, content: `是否删除[${item.name}]`,
cancelText: that.$t("btnSancellation"),//
confirmText: that.$t("btnConfirm"),//
success: (res) => { success: (res) => {
if (res.confirm) { if (res.confirm) {
this.$model.delCEatAction({ this.$model.delCEatAction({

View File

@ -13,11 +13,11 @@
</view> </view>
<view class="serach-box"> <view class="serach-box">
<view class="searchInput"> <view class="searchInput">
<input :placeholder="$t('verifyRecord')" class="city-serach-input" v-model="search_value" /> <input placeholder="请输入..." class="city-serach-input" v-model="search_value" />
<icon v-if="search_value" class="iconfont icon-error" @click="handlecolse" size="30"></icon> <icon v-if="search_value" class="iconfont icon-error" @click="handlecolse" size="30"></icon>
</view> </view>
<view class="searchBtn"> <view class="searchBtn">
<view @click="handleSerach">{{$t("Search")}}</view> <view @click="handleSerach">搜索</view>
</view> </view>
</view> </view>
</view> </view>
@ -25,7 +25,7 @@
<view class="content-box" v-if="!search_list.length"> <view class="content-box" v-if="!search_list.length">
<view v-if="history_food.length" class="search-history"> <view v-if="history_food.length" class="search-history">
<view class="title"> <view class="title">
<view class="quan mr-5"></view>{{$t("HistoricalSearch")}} <view class="quan mr-5"></view>历史搜索
</view> </view>
<view class="button-container" @click="showAll =! showAll" v-if="history_food.length>10"> <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> <image :src="showAll?'/static/arrow-up.png':'/static/arrow-down.png'"></image>
@ -40,7 +40,7 @@
</view> </view>
<view class="popular-container"> <view class="popular-container">
<view class="title"> <view class="title">
<view class="quan mr-5"></view>{{$t("wantSearch")}} <view class="quan mr-5"></view>猜你想搜
</view> </view>
<view class="popular-food-item" v-for="(ite,index) in popular_food" :key="index"> <view class="popular-food-item" v-for="(ite,index) in popular_food" :key="index">
<view class="food-title">{{ite.title}}</view> <view class="food-title">{{ite.title}}</view>
@ -64,6 +64,17 @@
<image src="/static/arrow-down.png"></image> <image src="/static/arrow-down.png"></image>
</view> </view>
</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>
<!-- 搜索列表 --> <!-- 搜索列表 -->
<view class="search_list" v-if="search_list.length"> <view class="search_list" v-if="search_list.length">
@ -74,7 +85,7 @@
<text>100g/{{ite.kcal}}kcal</text> <text>100g/{{ite.kcal}}kcal</text>
</view> </view>
</view> </view>
<view class="endtext" v-if="!lastPage || page >= lastPage"> {{$t("msgBottom")}} </view> <view class="endtext" v-if="!lastPage || page >= lastPage"> 到底了看看别的吧 </view>
</view> </view>
<!-- 购物车弹框 --> <!-- 购物车弹框 -->
<view class="wrapper activeList" v-if="isShop"> <view class="wrapper activeList" v-if="isShop">
@ -90,13 +101,13 @@
canvasId="search02" /> canvasId="search02" />
</view> </view>
<view class="center"> <view class="center">
{{$t("countIntake")}} 摄入
<text>{{foodInfo[0].today_intake}}</text> <text>{{foodInfo[0].today_intake}}</text>
<view class="unit">Kcal</view> <view class="unit">Kcal</view>
</view> </view>
</view> </view>
<view class="mubiao"> <view class="mubiao">
{{$t("titleBody")}}<text>{{foodInfo[0].suggestion}}</text>kcal 目标<text>{{foodInfo[0].suggestion}}</text>kcal
</view> </view>
</view> </view>
<view class="right"> <view class="right">
@ -129,8 +140,8 @@
</view> </view>
</view> </view>
<view class="box_list_item" v-if="ActiveList.length"> <view class="box_list_item" v-if="ActiveList.length">
<view class="length">{{$t("total")}}<text <view class="length"><text
class="red">{{ActiveList.filter(ite => ite.meals_type == foodName).length}}</text>{{$t("records")}} class="red">{{ActiveList.filter(ite => ite.meals_type == foodName).length}}</text>条记录
</view> </view>
<view class="item" v-for="(ite,ind) in ActiveList" :key="ind" <view class="item" v-for="(ite,ind) in ActiveList" :key="ind"
v-if="ite.meals_type==foodName"> v-if="ite.meals_type==foodName">
@ -147,7 +158,7 @@
</view> </view>
<view v-else class="nolist list"> <view v-else class="nolist list">
<icon class="iconfont icon-wancan"></icon> <icon class="iconfont icon-wancan"></icon>
<text>{{$t('countNoFood')}}</text> <text>还没有添加食物</text>
</view> </view>
</view> </view>
</view> </view>
@ -165,7 +176,7 @@
<image :src="activeType.pic_url" mode="aspectFill"></image> <image :src="activeType.pic_url" mode="aspectFill"></image>
<view class="info"> <view class="info">
<view class="name">{{activeType.name}}</view> <view class="name">{{activeType.name}}</view>
<view class="kcal">{{activeType.kcal}}kcal/100</view> <view class="kcal">{{activeType.kcal}}千卡/100</view>
</view> </view>
</view> </view>
</view> </view>
@ -192,8 +203,8 @@
<view class="foodDetail"> <view class="foodDetail">
<view class="foodContent"> <view class="foodContent">
<view class="tips"> <view class="tips">
<text>{{$t('Nutrients')}}</text> <text>营养素</text>
<text>{{(activeType.weight).toFixed(1)}}g{{$t('Content')}}</text> <text>{{(activeType.weight).toFixed(1)}}克含量</text>
</view> </view>
<view class="foodDetailList"> <view class="foodDetailList">
<view class="foodDetailItem" v-for="(item,index) in activeType.nutrients_list" <view class="foodDetailItem" v-for="(item,index) in activeType.nutrients_list"
@ -210,6 +221,30 @@
</view> </view>
</view> </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> </view>
</template> </template>
@ -217,6 +252,9 @@
import { import {
mapState mapState
} from "vuex"; } from "vuex";
// #ifdef MP-WEIXIN
const plugin = requirePlugin("WechatSI")
// #endif
import blueTooth from "@/components/foodIndex/bluetooth_food.vue" import blueTooth from "@/components/foodIndex/bluetooth_food.vue"
import qiunDataCharts from '@/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue'; import qiunDataCharts from '@/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue';
export default { export default {
@ -267,9 +305,6 @@
that.handleList() that.handleList()
that.showScanCodeDlg = false that.showScanCodeDlg = false
that.time = that.countFoodInfo.date that.time = that.countFoodInfo.date
uni.setNavigationBarTitle({
title: this.$t('titleCountSearch')
})
that.foodName = options.name that.foodName = options.name
}, },
watch: { watch: {
@ -283,11 +318,25 @@
deep: true 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() { onReachBottom() {
let that = this let that = this
if (!this.lastPage || this.page >= this.lastPage) { if (!this.lastPage || this.page >= this.lastPage) {
uni.showToast({ uni.showToast({
title: this.$t('noMoreData'), title: '没有更多数据!',
icon: 'none' icon: 'none'
}) })
return return
@ -307,6 +356,35 @@
} }
}) })
}, },
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) { handleToggle(name) {
this.search_value = "" this.search_value = ""
@ -411,7 +489,7 @@
let that = this let that = this
that.search_list = [] that.search_list = []
if (that.search_value == "") { if (that.search_value == "") {
that.$tools.msg(this.$t('searchkeywords')) that.$tools.msg("输入关键字后搜索")
return return
} }
that.$model.getFoodSearch({ that.$model.getFoodSearch({
@ -449,9 +527,7 @@
handledelactive(ite) { handledelactive(ite) {
let that = this let that = this
uni.showModal({ uni.showModal({
content: this.$t('WhetherTodelete') + ite.name, content: `是否删除[${ite.name}]`,
cancelText: that.$t("btnSancellation"),//
confirmText: that.$t("btnConfirm"),//
success: (res) => { success: (res) => {
if (res.confirm) { if (res.confirm) {
this.$model.delCEatAction({ this.$model.delCEatAction({
@ -496,9 +572,9 @@
}, },
unitConversion(unit) { unitConversion(unit) {
if (unit == 'kcal') { if (unit == 'kcal') {
return 'kcal' return '千卡'
} else if (unit == 'g') { } else if (unit == 'g') {
return 'g' return ''
} }
return unit return unit
}, },

View File

@ -3,7 +3,7 @@
<!-- --> <!-- -->
<view class="kcal"> <view class="kcal">
<view class="set"> <view class="set">
<input type="digit" v-model="weight" :placeholder="$t('verifyRecord')" :focus="focus" @blur="handleBlur"> <input type="digit" v-model="weight" placeholder="请输入" :focus="focus" @blur="handleBlur">
<uni-icons v-if="weight!=''" type="close" size="24" class="uni-iocns" color="#999" <uni-icons v-if="weight!=''" type="close" size="24" class="uni-iocns" color="#999"
@click="handleclear"></uni-icons> @click="handleclear"></uni-icons>
<view class="num"> <view class="num">
@ -17,7 +17,7 @@
<!-- --> <!-- -->
<view class="kcal"> <view class="kcal">
<view class="text"> <view class="text">
{{$t('countNutritionalProportion')}} 营养占比
</view> </view>
<view class="slider" v-if="isShow"> <view class="slider" v-if="isShow">
<llt-slider-range :model-value="rangeValue" @change="handleChange" /> <llt-slider-range :model-value="rangeValue" @change="handleChange" />
@ -36,7 +36,7 @@
<text>{{ite}}</text> <text>{{ite}}</text>
</view> </view>
</view> </view>
<view class="subbtn" @click="handleEditKcal">{{$t('btnSubmit')}}</view> <view class="subbtn" @click="handleEditKcal">保存</view>
</view> </view>
</template> </template>
@ -69,9 +69,6 @@
} }
}, },
onLoad() { onLoad() {
uni.setNavigationBarTitle({
title: this.$t('titleSet')
});
this.handleList() this.handleList()
}, },
components: { components: {
@ -136,7 +133,7 @@
handleEditKcal() { handleEditKcal() {
let that = this let that = this
if (that.weight == '' || Number(that.weight) <= 0) { if (that.weight == '' || Number(that.weight) <= 0) {
that.$tools.msg(that.$t('verifyCalorie')) that.$tools.msg("请输入卡路里")
return return
} }
that.$model.getCountSetUserKcal({ that.$model.getCountSetUserKcal({
@ -150,7 +147,7 @@
fat_p: that.fat_p, fat_p: that.fat_p,
}).then(res => { }).then(res => {
if (res.code == 0) { if (res.code == 0) {
that.$tools.msg(that.$t('msgSetSuccess')) that.$tools.msg("设置成功")
that.$store.dispatch('getUserInfo', { that.$store.dispatch('getUserInfo', {
aud_id: that.user.aud_id aud_id: that.user.aud_id
}) })

View File

@ -21,7 +21,7 @@
</view> </view>
<view class="title title2"> <view class="title title2">
<view class="">{{$t('RecipeType')}}</view> <view class="">菜谱类型</view>
<view>{{menu[cookIndex].name}}</view> <view>{{menu[cookIndex].name}}</view>
</view> </view>
<!-- 食材 --> <!-- 食材 -->
@ -36,7 +36,7 @@
</view> </view>
<view class="close" @click="handleWeight"> <view class="close" @click="handleWeight">
<image src="../../static/lianjie.png"></image> <image src="../../static/lianjie.png"></image>
{{$t('linkWeighing')}} 连接测量
</view> </view>
</view> </view>
<view class="foodlist"> <view class="foodlist">
@ -71,7 +71,7 @@
<view class="item" @click="handleCang()"> <view class="item" @click="handleCang()">
<uni-icons :type="info.collect_status=='yes'?'heart-filled':'heart'" size="20" <uni-icons :type="info.collect_status=='yes'?'heart-filled':'heart'" size="20"
:color="info.collect_status=='yes'?'red':'#999'"></uni-icons> :color="info.collect_status=='yes'?'red':'#999'"></uni-icons>
<text>{{$t('Collection')}}</text> <text>收藏</text>
</view> </view>
<!-- <view class="item" v-if="type=='我的菜谱'" @click="handleEdit()"> <!-- <view class="item" v-if="type=='我的菜谱'" @click="handleEdit()">
<icon class="iconfont icon-bianji"></icon> <icon class="iconfont icon-bianji"></icon>
@ -89,12 +89,12 @@
<icon class="iconfont icon-error" @click='isBle = false'></icon> <icon class="iconfont icon-error" @click='isBle = false'></icon>
<view class="foodlist" @click.stop> <view class="foodlist" @click.stop>
<view class="text"> <view class="text">
<text style="width: 30%;">{{$t('Ingredients')}}</text> <text style="width: 30%;">食材</text>
<text style="width: 18%;">{{$t('Suggestions')}}</text> <text style="width: 18%;">建议</text>
<view class="kcal"> <view class="kcal">
<text>{{$t('Weight')}}</text> <text>重量</text>
<text>{{$t('Calories')}}</text> <text>热量</text>
<text>{{$t('remeasure2')}}</text> <text>重秤</text>
</view> </view>
</view> </view>
<view class="item" v-for="(ite,ind) in info.tags[0].list" :key="ind" <view class="item" v-for="(ite,ind) in info.tags[0].list" :key="ind"
@ -105,7 +105,7 @@
{{ite.weight}}{{ite.unit}} {{ite.weight}}{{ite.unit}}
</view> </view>
<view class="kcal" v-if="activeType.id&&activeType.id ==ite.id&&!ite.newweight"> <view class="kcal" v-if="activeType.id&&activeType.id ==ite.id&&!ite.newweight">
{{$t('CurrentlyWeighing')}}... 正在测量...
</view> </view>
<view class="kcal" v-else> <view class="kcal" v-else>
<view class="num" v-if="ite.newweight"> <view class="num" v-if="ite.newweight">
@ -114,7 +114,8 @@
<view class="num" v-if="ite.newkcal"> <view class="num" v-if="ite.newkcal">
{{ite.newkcal}} {{ite.newkcal}}
</view> </view>
<view class="refreshempty" @click="handlechongzhi(ite,ind)" v-if="ite.newweight"> <view class="refreshempty
" @click="handlechongzhi(ite,ind)" v-if="ite.newweight">
<uni-icons type="refreshempty" size="22"></uni-icons> <uni-icons type="refreshempty" size="22"></uni-icons>
</view> </view>
</view> </view>
@ -130,14 +131,14 @@
</view> </view>
<view class="saveFood" v-if="showSaveFood"> <view class="saveFood" v-if="showSaveFood">
<view class="saveFoodInner"> <view class="saveFoodInner">
<view class="title">{{$t('TodayMeals')}}</view> <view class="title">是否保存至计食为今日饮食</view>
<view class="types"> <view class="types">
<view class="type-item" :class="{'active':selectSaveType == index}" v-for="(item,index) in foodItem" <view class="type-item" :class="{'active':selectSaveType == index}" v-for="(item,index) in foodItem"
:key="index" @click="selectSaveType=index">{{item.name}}</view> :key="index" @click="selectSaveType=index">{{item.name}}</view>
</view> </view>
<view class="btn-wrap"> <view class="btn-wrap">
<view class="confirm" @click="confirmSaveFood">{{$t('Save')}}</view> <view class="confirm" @click="confirmSaveFood">确定</view>
<view class="cancel" @click="showSaveFood=false">{{$t('btnSancellation')}}</view> <view class="cancel" @click="showSaveFood=false">取消</view>
</view> </view>
</view> </view>
</view> </view>
@ -186,9 +187,14 @@
}, },
onLoad(options) { onLoad(options) {
let that = this let that = this
uni.setNavigationBarTitle({ let info = {}
title: that.$t('titleDetail') if (options && options.info) {
}); info = JSON.parse(options.info)
that.type = info.pageName
that.info = info
} else {
that.type = options.title
}
that.id = options.id that.id = options.id
that.handleHomeInfo(options.id) that.handleHomeInfo(options.id)
}, },
@ -297,11 +303,12 @@
time: that.$tools.getDate("start") time: that.$tools.getDate("start")
}) })
uni.showToast({ uni.showToast({
title:that.$t("SavedSuccessfully"), title: '保存成功',
icon: 'success' icon: 'success'
}) })
that.$store.commit("changehomeCard", 1);
uni.switchTab({ uni.switchTab({
url: "pages/count/count" url: "/pages/index/index"
}) })
}) })
} }
@ -325,6 +332,30 @@
url: "/Food/me/menuEdit?info=" + JSON.stringify(this.info) url: "/Food/me/menuEdit?info=" + JSON.stringify(this.info)
}) })
}, },
handledel() {
let that = this
uni.showModal({
title: '友情提示',
content: '是否删除当前菜谱?',
success: function(res) {
if (res.confirm) {
that.$model.getMyCookbookDel({
aud_id: that.user.aud_id,
cookbook_id: that.id,
}).then((res) => {
if (res.code != 0) {
that.$tools.msg(res.message)
return
}
that.$tools.msg("删除成功")
uni.navigateBack()
})
} else if (res.cancel) {
that.$tools.msg("您已取消操作!");
}
},
})
}
} }
} }
</script> </script>

View File

@ -22,10 +22,10 @@
</view> </view>
</view> </view>
</view> </view>
<view class="endtext" v-if="(!lastPage || page >= lastPage)&&menuList.length"> {{$t('msgBottom')}} </view> <view class="endtext" v-if="(!lastPage || page >= lastPage)&&menuList.length"> 到底了看看别的吧 </view>
<view v-if="!menuList.length" class="nolist"> <view v-if="!menuList.length" class="nolist">
<image src="../../static/none.png"></image> <icon class="iconfont icon-wancan"></icon>
<text>{{$t('msgNoMoreData')}}</text> <text>还没有记录哦</text>
</view> </view>
</view> </view>
</template> </template>
@ -54,10 +54,11 @@
return this.user return this.user
} }
}, },
onLoad() { onLoad(option) {
let that = this let that = this
that.type = option.pageName
uni.setNavigationBarTitle({ uni.setNavigationBarTitle({
title: that.$t('infoMyCollection') title: option.pageName
}); });
}, },
@ -72,7 +73,7 @@
let that = this let that = this
if (!this.lastPage || this.page >= this.lastPage) { if (!this.lastPage || this.page >= this.lastPage) {
uni.showToast({ uni.showToast({
title: that.$t('noMoreData'), title: '没有更多数据!',
icon: 'none' icon: 'none'
}) })
return return
@ -96,7 +97,7 @@
// //
handleDetail(id) { handleDetail(id) {
uni.navigateTo({ uni.navigateTo({
url: "/Food/me/menudetail?id=" + id url: "/Food/me/menudetail?id=" + id + '&title=' + this.type
}) })
}, },
// //

View File

@ -1,11 +1,11 @@
<template> <template>
<view class="content"> <view class="content">
<!-- 列表 --> <!-- 列表 -->
<view class="box" v-if="infoList.length"> <view class="box">
<view class="list" v-for="(item,ind) in infoList" :key="ind" @click="handleDetail(item)"> <view class="list" v-for="(item,ind) in infoList" :key="ind" @click="handleDetail(item)">
<view class="time">{{item.time}}</view> <view class="time">{{item.time}}</view>
<view class="kcal"> <view class="kcal">
<view>{{$t('countIntake')}}{{$t('kcal')}}<text>{{item.val}}</text>{{item.unit}}</view> <view>摄入卡路里<text>{{item.val}}</text>{{item.unit}}</view>
<view class="status"> <view class="status">
<text class="quan0" :style="'background:'+item.color"></text> <text class="quan0" :style="'background:'+item.color"></text>
{{item.describe}} {{item.describe}}
@ -13,13 +13,12 @@
<uni-icons type="forward" size="20" color="#666"></uni-icons> <uni-icons type="forward" size="20" color="#666"></uni-icons>
</view> </view>
</view> </view>
<view class="endtext" v-if="!lastPage || page >= lastPage"> {{$t('msgBottom')}} </view> <view class="endtext" v-if="!lastPage || page >= lastPage"> 到底了看看别的吧 </view>
</view>
<view v-if="!infoList.length" class="nolist"> <view v-if="!infoList.length" class="nolist">
<image src="../../static/none.png"></image> <icon class="iconfont icon-wancan"></icon>
<text>{{$t('msgNoMoreData')}}</text> <text>还没有记录哦</text>
</view>
</view> </view>
</view> </view>
</template> </template>
@ -47,9 +46,6 @@
}, },
onLoad() { onLoad() {
let that = this let that = this
uni.setNavigationBarTitle({
title: that.$t('titleHistory')
})
that.page = 1 that.page = 1
that.handleList() that.handleList()
}, },
@ -57,7 +53,7 @@
let that = this let that = this
if (!this.lastPage || this.page >= this.lastPage) { if (!this.lastPage || this.page >= this.lastPage) {
uni.showToast({ uni.showToast({
title: that.$t('noMoreData'), title: '没有更多数据!',
icon: 'none' icon: 'none'
}) })
return return
@ -84,8 +80,8 @@
aud_id: that.user.aud_id, aud_id: that.user.aud_id,
time: item.time time: item.time
}) })
uni.switchTab({ uni.navigateTo({
url: '/pages/count/count' url: '/Food/me/recordetail'
}); });
} }

35
Food/me/recordetail.vue Normal file
View File

@ -0,0 +1,35 @@
<template>
<view>
<food></food>
</view>
</template>
<script>
import {
mapState
} from "vuex";
import food from "@/components/foodIndex/foodHome.vue"
export default {
data() {
return {}
},
components: {
food,
},
computed: {
...mapState(["user", "countFoodInfo"]),
foodInfo() {
return this.countFoodInfo
}
},
onLoad(options) {
let that = this
},
methods: {
}
}
</script>
<style scoped lang="scss">
</style>

View File

@ -13,17 +13,16 @@
<text class="overflow">{{it.create_user_nickname}}</text> <text class="overflow">{{it.create_user_nickname}}</text>
</view> </view>
<view class="zan"> <view class="zan">
<uni-icons :type="it.is_me_like_it=='yes'?'heart-filled':'heart'" size="20" <uni-icons :type="it.is_me_like_it=='yes'?'heart-filled':'heart'" size="20" :color="it.is_me_like_it=='yes'?'red':'#999'"></uni-icons>
:color="it.is_me_like_it=='yes'?'red':'#999'"></uni-icons>
<text>{{it.likes_num}}</text> <text>{{it.likes_num}}</text>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<view class="endtext" v-if="!lastPage || Page >= lastPage"> {{$t('msgBottom')}} </view> <view class="endtext" v-if="!lastPage || Page >= lastPage"> 到底了看看别的吧 </view>
<view v-if="!food_search_list.length" class="nolist"> <view v-if="!food_search_list.length" class="nolist">
<icon class="iconfont icon-wancan"></icon> <icon class="iconfont icon-wancan"></icon>
<text>{{$t('msgNoMoreData')}}</text> <text>还没有记录哦</text>
</view> </view>
</view> </view>
</template> </template>
@ -65,7 +64,7 @@
console.log("onReachBottom", this.lastPage) console.log("onReachBottom", this.lastPage)
if (!this.lastPage || this.Page >= this.lastPage) { if (!this.lastPage || this.Page >= this.lastPage) {
uni.showToast({ uni.showToast({
title: that.$t('noMoreData'), title: '没有更多数据!',
icon: 'none' icon: 'none'
}) })
return return
@ -90,7 +89,7 @@
handleDetail(id) { handleDetail(id) {
let that = this let that = this
if (that.user.aud_id == '') { if (that.user.aud_id == '') {
that.$tools.msg(that.$t("ImproveData")) that.$tools.msg("完善资料后查看更多")
return return
} }
uni.navigateTo({ uni.navigateTo({

View File

@ -1,7 +1,7 @@
<template> <template>
<view class="content"> <view class="content">
<view class="search"> <view class="search">
<input type="text" v-model="search_value" :placeholder="$t('KeyWords')" /> <input type="text" v-model="search_value" placeholder="输入关键字匹配食谱" />
<icon v-if="search_value" class="iconfont icon-error" @click="handlecolse"></icon> <icon v-if="search_value" class="iconfont icon-error" @click="handlecolse"></icon>
<image src="/static/28.png" @click="handleSearchHistory(search_value)"></image> <image src="/static/28.png" @click="handleSearchHistory(search_value)"></image>
</view> </view>
@ -10,7 +10,7 @@
<!-- 历史搜索 --> <!-- 历史搜索 -->
<view v-if="history_food.length" class="search-history"> <view v-if="history_food.length" class="search-history">
<view class="title"> <view class="title">
<view class="quan mr-5"></view>{{$t("HistoricalSearch")}} <view class="quan mr-5"></view>历史搜索
</view> </view>
<view class="button-container" @click="showAll =! showAll" v-if="history_food.length>8"> <view class="button-container" @click="showAll =! showAll" v-if="history_food.length>8">
<image :src="showAll?'/static/arrow-up.png':'/static/arrow-down.png'"></image> <image :src="showAll?'/static/arrow-up.png':'/static/arrow-down.png'"></image>
@ -26,7 +26,7 @@
<!-- 猜你想搜 --> <!-- 猜你想搜 -->
<view class="popular-container"> <view class="popular-container">
<view class="title"> <view class="title">
<view class="quan mr-5"></view>{{$t("wantSearch")}} <view class="quan mr-5"></view>猜你想搜
</view> </view>
<view class="popular-food-item" v-for="(ite,index) in popular_food" :key="index"> <view class="popular-food-item" v-for="(ite,index) in popular_food" :key="index">
<view class="food-title">{{ite.title}}</view> <view class="food-title">{{ite.title}}</view>
@ -39,13 +39,13 @@
</view> </view>
</view> </view>
<!-- 语音 --> <!-- 语音 -->
<!-- <view class="footBtn"> <view class="footBtn">
<view class="mic-icon" @touchstart="onVoiceTouchStart" @touchend="onVoiceTouchEnd" <view class="mic-icon" @touchstart="onVoiceTouchStart" @touchend="onVoiceTouchEnd"
@touchcancel="cancelRecording"> @touchcancel="cancelRecording">
<uni-icons type="mic-filled" size="20" color="#fff"></uni-icons> <uni-icons type="mic-filled" size="20" color="#fff"></uni-icons>
语音搜索 语音搜索
</view> </view>
</view> --> </view>
<!-- 语音弹框 --> <!-- 语音弹框 -->
<view class="wrapper" v-if="showAutoSearchDlg"> <view class="wrapper" v-if="showAutoSearchDlg">
<view class="auto-search-dialog"> <view class="auto-search-dialog">
@ -68,7 +68,7 @@
import { import {
mapState mapState
} from "vuex"; } from "vuex";
// const plugin = requirePlugin("WechatSI") const plugin = requirePlugin("WechatSI")
export default { export default {
data() { data() {
return { return {
@ -91,22 +91,19 @@
// return this.configInfo.search_history.cookbook // return this.configInfo.search_history.cookbook
// } // }
}, },
onLoad() { onShow() {
this.handleList() this.handleList()
uni.setNavigationBarTitle({
title: this.$t('Search')
})
}, },
mounted() { mounted() {
let that = this let that = this
// that.voiceManager = plugin.getRecordRecognitionManager() that.voiceManager = plugin.getRecordRecognitionManager()
// that.voiceManager.onStop = function(res) { that.voiceManager.onStop = function(res) {
// that.handleSearchHistory(res.result.replace('', '')) that.handleSearchHistory(res.result.replace('。', ''))
// } }
// that.voiceManager.onError = function(res) { that.voiceManager.onError = function(res) {
// console.error("error msg", res.retcode) console.error("error msg", res.retcode)
// } }
// that.voiceManager.stop() that.voiceManager.stop()
}, },
methods: { methods: {
// //
@ -125,28 +122,28 @@
toggleShowAll() { toggleShowAll() {
this.showAll = !this.showAll this.showAll = !this.showAll
}, },
// onVoiceTouchStart() { onVoiceTouchStart() {
// let that = this let that = this
// that.showAutoSearchDlg = true that.showAutoSearchDlg = true
// that.voiceManager.start({ that.voiceManager.start({
// duration: 60000, duration: 60000,
// lang: "zh_CN" lang: "zh_CN"
// }) })
// }, },
// onVoiceTouchEnd() { onVoiceTouchEnd() {
// let that = this let that = this
// that.showAutoSearchDlg = false that.showAutoSearchDlg = false
// that.voiceManager.stop() that.voiceManager.stop()
// }, },
// // //
// cancelRecording() { cancelRecording() {
// // #ifdef MP-WEIXIN // #ifdef MP-WEIXIN
// if (this.voiceManager) { if (this.voiceManager) {
// this.voiceManager.stop() this.voiceManager.stop()
// this.showAutoSearchDlg = false this.showAutoSearchDlg = false
// } }
// // #endif // #endif
// }, },
handlecolse() { handlecolse() {
console.log("取消搜索") console.log("取消搜索")
this.search_value = "" this.search_value = ""
@ -156,10 +153,10 @@
handleSearchHistory(text) { handleSearchHistory(text) {
let that = this let that = this
if (text == "") { if (text == "") {
that.$tools.msg(that.$t("KeyWordsSearch")) that.$tools.msg("输入关键字后搜索")
return return
} }
uni.redirectTo({ uni.navigateTo({
url: "/Food/search/list?name=" + text url: "/Food/search/list?name=" + text
}) })
} }

View File

@ -32,7 +32,7 @@
<view class="line" v-else> <view class="line" v-else>
<view class="nolist"> <view class="nolist">
<image src="../../static/none.png"></image> <image src="../../static/none.png"></image>
<text>{{$t("msgNoMoreData")}}</text> <text>暂无数据请手动添加~</text>
</view> </view>
</view> </view>
</view> </view>
@ -57,7 +57,7 @@
<view class="box" v-else> <view class="box" v-else>
<view class="nolist"> <view class="nolist">
<image src="../../static/none.png"></image> <image src="../../static/none.png"></image>
<text>{{$t("msgNoMoreData")}}</text> <text>暂无数据</text>
</view> </view>
</view> </view>
</view> </view>
@ -68,28 +68,28 @@
<view class="val"> <view class="val">
{{target_weight}}<text>kg</text> {{target_weight}}<text>kg</text>
</view> </view>
<view class="name">{{$t("target_weight")}}<uni-icons class="iconfont icon-bianji" color="#FEC407"></uni-icons> <view class="name">目标体重<uni-icons class="iconfont icon-bianji" color="#FEC407"></uni-icons>
</view> </view>
</view> </view>
<view class="item"> <view class="item">
<view class="val"> <view class="val">
{{Math.abs(calculate_val)}}<text>kg</text> {{Math.abs(calculate_val)}}<text>kg</text>
</view> </view>
<view class="name" v-if="Number(calculate_val)>0">{{$t("cumulative_weight_gain")}}</view> <view class="name" v-if="Number(calculate_val)>0">累计增重</view>
<view class="name" v-else>{{$t("cumulative_weight")}}</view> <view class="name" v-else>累计减重</view>
</view> </view>
<view class="item" @click="handleClick(2)"> <view class="item" @click="handleClick(2)">
<view class="val"> <view class="val">
{{initial_weight}}<text>kg</text> {{initial_weight}}<text>kg</text>
</view> </view>
<view class="name">{{$t("initial_weight")}}<uni-icons class="iconfont icon-bianji" color="#FEC407"></uni-icons> <view class="name">初始体重<uni-icons class="iconfont icon-bianji" color="#FEC407"></uni-icons>
</view> </view>
</view> </view>
<view class="item"> <view class="item">
<view class="val"> <view class="val">
{{calculate_time}}<text></text> {{calculate_time}}<text></text>
</view> </view>
<view class="name">{{$t("cumulative_day")}}</view> <view class="name">减重天数</view>
</view> </view>
</view> </view>
</view> </view>
@ -146,9 +146,6 @@
}, },
onLoad() { onLoad() {
let that = this let that = this
uni.setNavigationBarTitle({
title: this.$t('titleCharts')
})
that.handleLabelList(that.endDate, that.startDate) that.handleLabelList(that.endDate, that.startDate)
// #ifdef APP-PLUS // #ifdef APP-PLUS
that.fields = "time" that.fields = "time"
@ -206,12 +203,12 @@
let that = this let that = this
if (that.endTime) { if (that.endTime) {
if (Date.parse(e.detail.value) > Date.parse(that.endTime)) { if (Date.parse(e.detail.value) > Date.parse(that.endTime)) {
that.$tools.msg(that.$t("verifyBodyDate")) that.$tools.msg("请选择正确的时间")
return return
} }
} else { } else {
if (Date.parse(e.detail.value) > Date.parse(that.endDate)) { if (Date.parse(e.detail.value) > Date.parse(that.endDate)) {
that.$tools.msg(that.$t("verifyBodyDate")) that.$tools.msg("请选择正确的时间")
return return
} }
} }
@ -224,12 +221,12 @@
let that = this let that = this
if (that.startTime) { if (that.startTime) {
if (Date.parse(e.detail.value) < Date.parse(that.startTime)) { if (Date.parse(e.detail.value) < Date.parse(that.startTime)) {
that.$tools.msg(that.$t("verifyBodyDate")) that.$tools.msg("请选择正确的时间")
return return
} }
} else { } else {
if (Date.parse(e.detail.value) < Date.parse(that.startDate)) { if (Date.parse(e.detail.value) < Date.parse(that.startDate)) {
that.$tools.msg(that.$t("verifyBodyDate")) that.$tools.msg("请选择正确的时间")
return return
} }
} }

View File

@ -17,11 +17,11 @@
</uni-swipe-action-item> </uni-swipe-action-item>
</uni-swipe-action> </uni-swipe-action>
</view> </view>
<view class="endtext" v-if="!lastPage || page >= lastPage"> {{$t('msgBottom')}} </view> <view class="endtext" v-if="!lastPage || page >= lastPage"> 到底了看看别的吧 </view>
</view> </view>
<view class="nolist" v-if="!ranklist.length||!lastPage"> <view class="nolist" v-if="!ranklist.length||!lastPage">
<image src="../../static/none.png"></image> <image src="../../static/none.png"></image>
<text>{{$t('msgNoMoreData')}}</text> <text>暂无数据</text>
</view> </view>
</view> </view>
</template> </template>
@ -53,16 +53,13 @@
that.lastPage = "" that.lastPage = ""
that.ranklist = [] that.ranklist = []
that.getList() that.getList()
uni.setNavigationBarTitle({
title: this.$t('measuringRecord')
})
}, },
onReachBottom() { onReachBottom() {
let that = this let that = this
console.log("onReachBottom", this.lastPage) console.log("onReachBottom", this.lastPage)
if (!this.lastPage || this.page >= this.lastPage) { if (!this.lastPage || this.page >= this.lastPage) {
uni.showToast({ uni.showToast({
title: that.$t('noMoreData'), title: '没有更多数据!',
icon: 'none' icon: 'none'
}) })
return return
@ -75,10 +72,8 @@
let that = this let that = this
let id = that.ranklist[index].id let id = that.ranklist[index].id
uni.showModal({ uni.showModal({
title: that.$t("msgTitle"), title: '友情提示',
content: that.$t("verifyDeleteHistory"), content: '是否删除当前测量记录?',
cancelText: that.$t("btnSancellation"),//
confirmText: that.$t("btnConfirm"),//
success: function(res) { success: function(res) {
if (res.confirm) { if (res.confirm) {
that.$model.gethistorydelete({ that.$model.gethistorydelete({
@ -90,15 +85,15 @@
} }
that.ranklist.splice(index, 1) that.ranklist.splice(index, 1)
that.$store.dispatch("getUserInfo", { that.$store.dispatch("getUserInfo", {
aud_id:that.user.aud_id aud_id: that.user.aud_id
}) })
that.$store.dispatch("getResult", { that.$store.dispatch("getResult", {
aud_id: that.user.aud_id aud_id: that.user.aud_id
}) })
that.$tools.msg(that.$t("msgDelete")) that.$tools.msg("删除成功")
}) })
} else if (res.cancel) { } else if (res.cancel) {
that.$tools.msg(that.$t("msgCancel")); that.$tools.msg("您已取消操作!");
} }
}, },
}) })
@ -118,7 +113,7 @@
console.log("历史记录", res) console.log("历史记录", res)
if (res.code != 0) return if (res.code != 0) return
let options = [{ let options = [{
text: that.$t("btnDelete"), text: '删除',
style: { style: {
backgroundColor: '#dd524d' backgroundColor: '#dd524d'
} }

View File

@ -35,9 +35,6 @@
// }, // },
onLoad(options) { onLoad(options) {
let that = this let that = this
uni.setNavigationBarTitle({
title: this.$t('titleDetail')
})
that.id = options.id that.id = options.id
that.getList() that.getList()
}, },

View File

@ -20,9 +20,9 @@
<view class="val">{{item.value?item.value:'0'}}{{item.unit}}</view> <view class="val">{{item.value?item.value:'0'}}{{item.unit}}</view>
<view class="level"> <view class="level">
<view class="btnf" <view class="btnf"
:style="{backgroundColor:(item.standard=='异常'||item.standard==''?'#F8595D':item.standard_color)}" :style="{backgroundColor:(item.standard=='异常'?'#FFF':item.standard_color)}"
:class="[item.standard=='异常'||item.standard==''?'btnC':'']"> :class="[item.standard=='异常'?'btnC':'']">
{{item.standard=='异常'||item.standard==''?'-':item.standard}} {{item.standard=='异常'?'-':item.standard}}
</view> </view>
</view> </view>
</view> </view>
@ -30,7 +30,7 @@
<view class="desc"> <view class="desc">
<view v-if="item.description" class="ming size12">{{item.description}}</view> <view v-if="item.description" class="ming size12">{{item.description}}</view>
<view :class="[item.standard_list.length?'statuevue':'']" v-if="item.standard_list"> <view :class="[item.standard_list.length?'statuevue':'']" v-if="item.standard_list">
<view class="bi" v-if="item.key_name!='kcal'"> <view class="bi" v-if="item.title!='基础代谢'">
<view :style="'left:'+item.offset+'%'" class="peobox"> <view :style="'left:'+item.offset+'%'" class="peobox">
<view class="xx"></view> <view class="xx"></view>
</view> </view>
@ -43,7 +43,7 @@
</view> </view>
<view v-else> <view v-else>
<view class="kcalClass" v-if="item.standard_list&&item.standard_list.length"> <view class="kcalClass" v-if="item.standard_list&&item.standard_list.length">
{{$t("StandardValue")}}:{{item.standard_list[0].max_val}}kcal 标准值:{{item.standard_list[0].max_val}}kcal
</view> </view>
</view> </view>
</view> </view>
@ -78,9 +78,7 @@
}, },
onLoad(options) { onLoad(options) {
this.to = options.to this.to = options.to
uni.setNavigationBarTitle({ console.log("to", this.to)
title: this.$t('bodyData')
})
this.handleResultDetail() this.handleResultDetail()
}, },
methods: { methods: {

View File

@ -4,30 +4,30 @@
<view class="login"> <view class="login">
<view class="editem"> <view class="editem">
<view class="item"> <view class="item">
<view class="text">{{$t("infoEmail")}}</view> <view class="text">手机号/邮箱</view>
<view class="input"> <view class="input">
<input v-model="phone" type="email" :placeholder="$t('verifyEmail')"/> <input v-model="phone" type="text"/>
</view> </view>
</view> </view>
<view class="item "> <view class="item ">
<view class="text">{{$t("titleCode")}}</view> <view class="text">验证码</view>
<view class="input yanzhengma"> <view class="input yanzhengma">
<input class="uni-input" v-model="code" :placeholder="$t('verifyCode')"/> <input class="uni-input" v-model="code" />
<button class="code" type="none" @click="handleCode" v-model="code" <button class="code" type="none" @click="handleCode" v-model="code"
:disabled="disabled">{{second<60 ? second+$t("titleSendCodeRetry"):$t("titleSendCode")}} :disabled="disabled">{{second<60 ? second+'S后重发':'验证码'}}
</button> </button>
</view> </view>
</view> </view>
<view class="item"> <view class="item">
<view class="text">{{$t("titlePassword")}}</view> <view class="text">密码</view>
<view class="input"> <view class="input">
<input class="uni-input" v-model="password" :placeholder="$t('verifyPassword')"/> <input class="uni-input" v-model="password" />
</view> </view>
</view> </view>
<view class="item"> <view class="item">
<view class="text">{{$t("titleConfirmPassword")}}</view> <view class="text">确认密码</view>
<view class="input"> <view class="input">
<input class="uni-input" v-model="password2" :placeholder="$t('verifyPasswordTwo')"/> <input class="uni-input" v-model="password2" />
</view> </view>
</view> </view>
</view> </view>
@ -39,7 +39,7 @@
</label> </label>
</checkbox-group> </checkbox-group>
</view> --> </view> -->
<view class="btnlogin" @click="handleTelLogin">{{$t("btnSubmit")}}</view> <view class="btnlogin" @click="handleTelLogin">确认</view>
</view> </view>
</view> </view>
</template> </template>
@ -59,11 +59,7 @@
} }
}, },
onLoad(options) { onLoad(options) {
let that = this
this.type = options.type //1 this.type = options.type //1
uni.setNavigationBarTitle({
title: that.type=='register'?that.$t('titleRegister'):that.$t('titleSetPassword')
})
}, },
methods: { methods: {
checkboxChange(e) { checkboxChange(e) {
@ -72,36 +68,40 @@
// //
handleTelLogin() { handleTelLogin() {
let that = this let that = this
let phoneType = that.phone.indexOf("@") !== -1
if (that.value == 0) { if (that.value == 0) {
that.$tools.msg(that.$t("verifyAgreement")) that.$tools.msg("请先确认勾选协议")
return return
} }
if (!(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(that.phone))) { if (!phoneType && !(/^1[3456789]\d{9}$/.test(that.phone))) {
that.$tools.msg(that.$t("verifyEmailCorrect")) that.$tools.msg("请输入正确的手机号")
return
}
if (phoneType && !(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(that.phone))) {
that.$tools.msg("请输入正确的邮箱")
return return
} }
if (!that.code) { if (!that.code) {
that.$tools.msg(that.$t("verifyCode")) that.$tools.msg("请填写验证码")
return return
} }
if (!that.password) { if (!that.password) {
that.$tools.msg(that.$t("verifyPassword")) that.$tools.msg("请填写密码")
return return
} }
if (!that.password2) { if (!that.password2) {
that.$tools.msg(that.$t("verifyPassword")) that.$tools.msg("请确认密码")
return return
} }
if (that.password2 != that.password) { if (that.password2 != that.password) {
that.$tools.msg(that.$t("verifyPasswordCorrect")) that.$tools.msg("请确认两次密码填写一致")
return return
} }
let account = { let account = {
data: that.phone, data: that.phone,
password: that.password, password: that.password,
confirm_password: that.password2, c_password: that.password2,
code: that.code, code: that.code
language: uni.getStorageSync('language')
} }
let https = that.type == 'register' ? that.$model.getregister(account) : that.$model.getResetPassword( let https = that.type == 'register' ? that.$model.getregister(account) : that.$model.getResetPassword(
account) account)
@ -114,7 +114,7 @@
uni.setStorageSync('token', res.data.token) uni.setStorageSync('token', res.data.token)
uni.setStorageSync('aan_id', res.data.aan_id) uni.setStorageSync('aan_id', res.data.aan_id)
that.$tools.handleUserList() that.$tools.handleUserList()
that.$tools.msg(that.$t("msgSetPasswordSuccess")) that.$tools.msg("设置成功,进入程序中")
setTimeout(function() { setTimeout(function() {
uni.reLaunch({ uni.reLaunch({
url: "/pages/index/index" url: "/pages/index/index"
@ -125,13 +125,19 @@
// //
handleCode() { handleCode() {
let that = this let that = this
if (!(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(that.phone))) { let phoneType = that.phone.indexOf("@") !== -1
that.$tools.msg(that.$t("verifyEmailCorrect")) 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("请输入正确的邮箱")
return return
} }
// //
that.$model.getSendCode({ that.$model.getSendCode({
data: that.phone, data: that.phone,
type: that.type
}).then(res => { }).then(res => {
console.log(res) console.log(res)
if (res.code != 0) { if (res.code != 0) {
@ -149,6 +155,7 @@
}, 60000) }, 60000)
}).catch(err => {}) }).catch(err => {})
}, },
handlexieyi() {}
} }
} }
</script> </script>
@ -174,15 +181,15 @@
} }
.login { .login {
width: calc(100% - 60rpx); width: calc(100% - 30px);
height: auto; height: auto;
background: #fff; background: #fff;
border-radius: 20rpx; border-radius: 10px;
padding: 30rpx; padding: 15px;
background-color: #fff; background-color: #fff;
z-index: 99; z-index: 99;
// position: relative; // position: relative;
// margin-left: calc(10% - 80rpx); // margin-left: calc(10% - 40px);
// box-shadow: 0px 1px 5px 2px #dfe2e1fc; // box-shadow: 0px 1px 5px 2px #dfe2e1fc;
.title { .title {
@ -190,7 +197,7 @@
color: #333; color: #333;
font-size: 40rpx; font-size: 40rpx;
font-weight: bold; font-weight: bold;
margin-bottom: 30rpx; margin-bottom: 15px;
} }
@ -208,54 +215,51 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
margin-bottom: 20rpx; margin-bottom: 15px;
flex-wrap: wrap;
.text { .text {
width: 100%; width: 240rpx;
height: 70rpx; height: 40px;
line-height: 70rpx; line-height: 40px;
font-size: 32rpx; font-size: 32rpx;
font-weight: bold;
} }
.input { .input {
width: 100%; width: calc(100% - 240rpx);
height: 35px; height: 35px;
line-height: 35px; line-height: 35px;
display: flex; display: flex;
position: relative; position: relative;
border: #dfdfdf 1px solid; border: #dfdfdf 1px solid;
border-radius: 5px; border-radius: 5px;
padding: 0 20rpx; padding: 0 10px;
background-color: #f7f7f7; background-color: #f7f7f7;
} }
input { input {
height: 80rpx; height: 40px;
line-height: 80rpx; line-height: 40px;
position: absolute; position: absolute;
left: 20rpx; left: 10px;
right: 0px; right: 0px;
z-index: 88; z-index: 88;
font-size: 28rpx; font-size:28rpx;
} }
.yanzhengma { .yanzhengma {
input { input {
right: 180px; right: 220rpx;
font-size: 28rpx; font-size:28rpx;
} }
} }
} }
.code { .code {
color: #333; width: 220rpx;
width: 180px;
background: #dfdfdf; background: #dfdfdf;
font-size: 28rpx; font-size: 28rpx;
margin: 0; margin: 0;
line-height: 80rpx; line-height: 40px;
border-radius: 5px; border-radius: 5px;
text-align: center; text-align: center;
position: absolute; position: absolute;
@ -287,12 +291,12 @@
.btnlogin { .btnlogin {
width: 100%; width: 100%;
margin: 30rpx 0; margin: 15px 0;
height: 42px; height: 42px;
line-height: 42px; line-height: 42px;
background: $btncolor; background: $btncolor;
font-weight: 700; font-weight: 700;
border-radius: 30rpx; border-radius: 15px;
text-align: center; text-align: center;
color: #fff !important; color: #fff !important;
} }

View File

@ -2,74 +2,78 @@
<view class="content"> <view class="content">
<view class="bg"></view> <view class="bg"></view>
<view class="top"> <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> <image src="../../static/logo2.png"></image>
<text>Reedaw</text> <text>Reedaw</text>
</view> </view>
</view>
<view class="login box_shadow"> <view class="login box_shadow">
<view class="title">{{$t("titleLogin")}}</view> <view class="title">登录</view>
<view class="toggle cblue" @click="handleToggle"> <view class="toggle cblue" @click="handleToggle">
{{$t("titleToggleLogin")}} 切换登录
</view> </view>
<view class="editem"> <view class="editem">
<view class="item"> <view class="item">
<view class="text">{{$t("infoEmail")}}</view> <view class="text">手机号/邮箱</view>
<view class="input"> <view class="input">
<input v-model="phone" type="email" :placeholder="$t('verifyEmail')"/> <input v-model="phone" />
</view> </view>
</view> </view>
<!-- 验证码登录 --> <!-- 验证码登录 -->
<view class="item " v-if="isCode"> <view class="item " v-if="isCode">
<view class="text">{{$t("titleCode")}}</view> <view class="text">验证码</view>
<view class="input yanzhengma"> <view class="input yanzhengma">
<input class="uni-input" v-model="code" :placeholder="$t('verifyCode')"/> <input class="uni-input" v-model="code" />
<button class="code" type="none" @click="handleCode" v-model="code" <button class="code" type="none" @click="handleCode" v-model="code"
:disabled="disabled">{{second<60 ? second+$t("titleSendCodeRetry"):$t("titleSendCode")}} :disabled="disabled">{{second<60 ? second+'S后重发':'获取验证码'}}
</button> </button>
</view> </view>
</view> </view>
<!-- 密码登录 --> <!-- 密码登录 -->
<view class="item " v-else> <view class="item " v-else>
<view class="text">{{$t("titlePassword")}}</view> <view class="text">密码</view>
<view class="input"> <view class="input">
<input class="uni-input" v-model="password" :placeholder="$t('verifyPassword')"/> <input class="uni-input" v-model="password" />
</view> </view>
</view> </view>
<view class="forget " v-if="!isCode"> <view class="forget " v-if="!isCode">
<text @click="handlePassword('forgetPassword')">{{$t("titleForgotPassword")}}</text> <text @click="handlePassword('forgetPassword')">忘记密码?</text>
</view> </view>
</view> </view>
<view class="xieyi"> <view class="xieyi">
<checkbox-group @change="checkboxChange" class="group"> <checkbox-group @change="checkboxChange" class="group">
<label> <label>
<checkbox :value="1" style="transform:scale(0.7)" />{{$t("titleAgreementText")}} <checkbox :value="1" style="transform:scale(0.7)" />阅读并同意
<text @click.stop @click="handlexieyi" class="blue">{{$t("titleAgreementContntText")}}</text> <!-- <text @click.stop @click="handleUserXieyi" class="blue">用户协议</text> -->
<text @click.stop @click="handlexieyi" class="blue">隐私协议</text>
</label> </label>
</checkbox-group> </checkbox-group>
</view> </view>
<view class="btnlogin" @click="handleTelLogin">{{$t("titleLogin")}}</view> <view class="btnlogin" @click="handleTelLogin">登录</view>
<view class="btngroup" @click="handlePassword('register')"> <view class="btngroup" @click="handlePassword('register')">
<text>{{$t("titleRegister")}}</text> <text>注册</text>
</view> </view>
</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> </view>
</template> </template>
<script> <script>
import {
mapState
} from "vuex";
export default { export default {
data() { data() {
return { return {
@ -83,92 +87,49 @@
loginCode: "" 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() { onLoad() {
let that = this // #ifdef MP-WEIXIN
uni.setNavigationBarTitle({ this.login()
title: that.$t('titleLogin') // #endif
})
}, },
methods: { methods: {
// //
checkboxChange(e) { checkboxChange(e) {
this.value = e.detail.value.length ? e.detail.value[0] : "0" 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('titleHealth')
})
uni.setTabBarItem({
index: 1,
text: that.$t('titleDiet')
})
uni.setTabBarItem({
index: 2,
text: that.$t('titleExercise')
})
uni.setTabBarItem({
index: 3,
text: that.$t('titleMe')
})
},
// //
handleTelLogin() { handleTelLogin() {
let that = this let that = this
let phoneType = that.phone.indexOf("@") !== -1
if (that.value == 0) { if (that.value == 0) {
that.$tools.msg(that.$t("verifyAgreement")) that.$tools.msg("请先确认勾选协议")
return return
} }
if (!(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(that.phone))) { if (!phoneType && !(/^1[3456789]\d{9}$/.test(that.phone))) {
that.$tools.msg(that.$t("verifyEmailCorrect")) that.$tools.msg("请输入正确的手机号")
return
}
if (phoneType && !(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(that.phone))) {
that.$tools.msg("请输入正确的邮箱")
return return
} }
if (that.isCode && !that.code) { if (that.isCode && !that.code) {
that.$tools.msg(that.$t("verifyCode")) that.$tools.msg("请输入验证码")
return return
} }
if (!that.isCode && !that.password) { if (!that.isCode && !that.password) {
that.$tools.msg(that.$t("verifyPassword")) that.$tools.msg('请输入正确密码')
return return
} }
let val = that.languageList[that.levelInd].val
this.$model.getonlogin({ this.$model.getonlogin({
data: that.phone, data: that.phone,
validate_data: that.isCode ? that.code : that.password, validate_data: that.isCode ? that.code : that.password,
validate_type: that.isCode ? 'code' : 'password', validate_type: that.isCode ? 'code' : 'password'
language: val
}).then(res => { }).then(res => {
console.log("data", res.data) console.log("data", res.data)
that.$tools.msg(res.msg) that.$tools.msg(res.msg)
if (res.code != 0) return if (res.code != 0) return
that.$tools.msg(that.$t("msgLoginSuccess")) that.$tools.msg("登录成功")
uni.setStorageSync('token', res.data.token) uni.setStorageSync('token', res.data.token)
uni.setStorageSync('aan_id', res.data.aan_id) uni.setStorageSync('aan_id', res.data.aan_id)
that.$tools.handleUserList() that.$tools.handleUserList()
@ -182,8 +143,13 @@
// //
handleCode() { handleCode() {
let that = this let that = this
if (!(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(that.phone))) { let phoneType = that.phone.indexOf("@") !== -1
that.$tools.msg(that.$t("verifyEmailCorrect")) 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("请输入正确的邮箱")
return return
} }
// //
@ -210,10 +176,45 @@
// //
handleIsTel() { handleIsTel() {
if (this.value == 0) { if (this.value == 0) {
this.$tools.msg(that.$t("verifyAgreement")) this.$tools.msg("请先确认勾选协议")
return 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() { handleToggle() {
this.phone = "" this.phone = ""
this.isCode = !this.isCode this.isCode = !this.isCode
@ -303,21 +304,4 @@
border-radius: 50%; border-radius: 50%;
} }
} }
.language {
position: absolute;
top: 0;
left: 15px;
background: #fff;
padding: 5px 20px;
border-radius: 10px;
picker {
width: 100%;
view {
display: flex;
align-items: center;
}
}
}
</style> </style>

View File

@ -2,22 +2,21 @@
<view class="content"> <view class="content">
<view class="info"> <view class="info">
<view class="logo"> <view class="logo">
<image :src="configInfo.app_icon"></image> <image src="../../static/logo2.png"></image>
<view>{{configInfo.app_name}}</view> <view>Reedaw</view>
<text>V{{phoneInfo.info.version}}</text> <text>V{{phoneInfo.info.version}}</text>
</view> </view>
<view class="list"> <view class="list">
<view class="item" @click="handleVersion"> <view class="item" @click="handleVersion">
<view class="left">{{$t("titleVersionUpdate")}}</view> <view class="left">版本更新</view>
<view class="right"> <view class="right">
<text class="new" <text class="new" v-if="version==-1">新版本{{phoneInfo.versionUrl.version}}</text>
v-if="version==-1">{{$t("titleNewVersion")}}{{phoneInfo.versionUrl.version}}</text>
<uni-icons type="right"></uni-icons> <uni-icons type="right"></uni-icons>
</view> </view>
</view> </view>
<view class="item"> <view class="item">
<a href="https://tc.pcxbc.com/reedaw/privacy_policy" class="href"> <a href="https://tc.pcxbc.com/reedaw/privacy_policy" class="href">
<text class="left">{{$t("titleAgreementContntText")}}</text> <text class="left">隐私协议</text>
<uni-icons type="right"></uni-icons> <uni-icons type="right"></uni-icons>
</a> </a>
</view> </view>
@ -38,14 +37,10 @@
} }
}, },
computed: { computed: {
...mapState(["phoneInfo", "configInfo"]), ...mapState(["phoneInfo"]),
}, },
onLoad() { onLoad() {
let that = this let that = this
uni.setNavigationBarTitle({
title: this.$t('titleAboutUs')
});
console.log("11111111", phoneInfo)
if (!that.phoneInfo.versionUrl) { if (!that.phoneInfo.versionUrl) {
that.handleoginversion() that.handleoginversion()
} else { } else {
@ -68,7 +63,7 @@
if (that.version == -1) { if (that.version == -1) {
if (that.phoneInfo.platform === 'android') { if (that.phoneInfo.platform === 'android') {
uni.setStorageSync('VERSION', that.phoneInfo.versionUrl.version) uni.setStorageSync('VERSION', that.phoneInfo.versionUrl.version)
let showLoading = plus.nativeUI.showWaiting(that.$t("msgDownloading")) let showLoading = plus.nativeUI.showWaiting('正在下载')
dtask = uni.downloadFile({ dtask = uni.downloadFile({
url: that.phoneInfo.versionUrl.url, url: that.phoneInfo.versionUrl.url,
success: (downloadRes) => { success: (downloadRes) => {
@ -89,13 +84,13 @@
}, },
fail: () => { fail: () => {
uni.showToast({ uni.showToast({
title: that.$t("msgUpgradeFail"), title: '升级失败',
icon: 'none' icon: 'none'
}); });
} }
}); });
dtask.onProgressUpdate((res) => { dtask.onProgressUpdate((res) => {
showLoading.setTitle(that.$t("msgDownloading") + res.progress + "% "); showLoading.setTitle(" 正在下载" + res.progress + "% ");
}); });
} else { } else {
plus.runtime.launchApplication({ plus.runtime.launchApplication({
@ -103,7 +98,7 @@
}) })
} }
} else { } else {
that.$tools.msg(that.$t("msgLatestVersion")) that.$tools.msg("已经是最新版本了!")
} }
}, },
// //

View File

@ -1,7 +1,7 @@
<template> <template>
<view class="common"> <view class="common">
<view class="add" @click="handleAddUser"> <view class="add" @click="handleAddUser">
<icon class="iconfont icon-tianjia"></icon>{{$t('titleManageAdd')}} <icon class="iconfont icon-tianjia"></icon>添加成员
</view> </view>
<view class="box" v-if="familayList.lenght!=0"> <view class="box" v-if="familayList.lenght!=0">
<view class="list"> <view class="list">
@ -16,13 +16,13 @@
{{item.nickname}} {{item.nickname}}
</view> </view>
<view class="title2"> <view class="title2">
<text>{{item.gender==1?$t('infoMan'):$t('infoWoman')}}</text> <text>{{item.gender==1?'男':'女'}}</text>
<text>{{item.age}}{{$t('infoAgeunit')}}</text> <text>{{item.age}}</text>
</view> </view>
</view> </view>
</view> </view>
<view class="right" @click.stop> <view class="right" @click.stop>
<view class="blueBtn" @click="editorInfo(item)">{{$t('btnEdit')}}</view> <view class="blueBtn" @click="editorInfo(item)">编辑</view>
</view> </view>
</view> </view>
</uni-swipe-action-item> </uni-swipe-action-item>
@ -30,7 +30,7 @@
</view> </view>
</view> </view>
<view v-else> <view v-else>
{{$t("noMoreData")}} 没有数据了
</view> </view>
</view> </view>
</template> </template>
@ -48,11 +48,6 @@
computed: { computed: {
...mapState(["familayList"]) ...mapState(["familayList"])
}, },
onLoad() {
uni.setNavigationBarTitle({
title: this.$t('titleManage')
});
},
onPullDownRefresh() { onPullDownRefresh() {
let that = this let that = this
that.handleUserList() that.handleUserList()
@ -66,22 +61,20 @@
let that = this let that = this
that.id = that.familayList[ind].id that.id = that.familayList[ind].id
uni.showModal({ uni.showModal({
title: that.$t('msgTitle'), title: '友情提示',
content: that.$t("verifyDeleteUser"), content: '确定删除该成员吗',
cancelText: that.$t('btnSancellation'),
confirmText: that.$t('btnConfirm'),
success: function(res) { success: function(res) {
if (res.confirm) { if (res.confirm) {
that.$model.getDelUser({ that.$model.getDelUser({
aud_id: that.id, aud_id: that.id,
}).then(res => { }).then(res => {
if (res.code != 0) return if (res.code != 0) return
that.$tools.msg(that.$t('msgDelete')); that.$tools.msg("删除成功!");
that.familayList.splice(ind, 1) that.familayList.splice(ind, 1)
that.handleUserList() that.handleUserList()
}) })
} else if (res.cancel) { } else if (res.cancel) {
that.$tools.msg(that.$t('msgCancel')); that.$tools.msg("您已取消删除!");
} }
} }
}); });
@ -96,10 +89,11 @@
return return
} }
that.$store.commit('changeFamilay', res.data.user_list) that.$store.commit('changeFamilay', res.data.user_list)
console.log("删除", that.id, uni.getStorageSync('userid')) console.log("删除", that.id, uni.getStorageSync('userid'))
// //
if (that.id == uni.getStorageSync('userid') || !res.data.user_list.length) { if (that.id == uni.getStorageSync('userid')) {
let userid = !res.data.user_list.length ? "" : res.data.user_list[0].id let userid = res.data.user_list[0].id
uni.setStorageSync('userid', userid) uni.setStorageSync('userid', userid)
that.$store.dispatch('getUserInfo', { that.$store.dispatch('getUserInfo', {
aud_id: userid aud_id: userid
@ -109,9 +103,17 @@
aud_id: userid, aud_id: userid,
time: that.$tools.getDate("start") time: that.$tools.getDate("start")
}) })
//
that.$store.dispatch("getCardAllList", {
aud_id: userid
})
//
that.$store.dispatch("getResult", { that.$store.dispatch("getResult", {
aud_id: userid aud_id: userid
}) })
that.$store.dispatch("getPublicRecord", {
aud_id: userid
})
} }
}).catch(err => {}) }).catch(err => {})
}, },

View File

@ -8,68 +8,66 @@
</view> </view>
</view> </view>
<view class="lan border-bottom"> <view class="lan border-bottom">
<view class="left">{{$t('infoNickname')}}</view> <view class="left">姓名</view>
<view class="right"> <view class="right">
<input name="name" type="text" v-model="memInfo.nickname" :placeholder="$t('verifyRecord')" /> <input name="name" type="text" v-model="memInfo.nickname" placeholder="请输入姓名" />
<uni-icons type="clear" color="#999" v-if="memInfo.nickname" @click="memInfo.nickname=''" <uni-icons type="clear" color="#999" v-if="memInfo.nickname" @click="memInfo.nickname=''"
size="20"></uni-icons> size="20"></uni-icons>
</view> </view>
</view> </view>
<view class="lan border-bottom"> <view class="lan border-bottom">
<view class="left">{{$t('infoGender')}}</view> <view class="left">性别</view>
<view class="right"> <view class="right">
<view class="radio"> <view class="radio">
<uni-icons :type="memInfo.gender==1?'checkbox-filled':'circle'" @click="memInfo.gender=1" <uni-icons :type="memInfo.gender==1?'checkbox-filled':'circle'" @click="memInfo.gender=1"
size="24" :color="memInfo.gender==1?'#fea606':'#dfdfdf'"></uni-icons>{{$t('infoMan')}} size="24" :color="memInfo.gender==1?'#fea606':'#dfdfdf'"></uni-icons>
</view> </view>
<view class="radio ml-15"> <view class="radio ml-15">
<uni-icons :type="memInfo.gender==2?'checkbox-filled':'circle'" @click="memInfo.gender=2" <uni-icons :type="memInfo.gender==2?'checkbox-filled':'circle'" @click="memInfo.gender=2"
size="24" :color="memInfo.gender==2?'#fea606':'#dfdfdf'"></uni-icons>{{$t('infoWoman')}} size="24" :color="memInfo.gender==2?'#fea606':'#dfdfdf'"></uni-icons>
</view> </view>
</view> </view>
</view> </view>
<view class="lan border-bottom"> <view class="lan border-bottom">
<view class="left">{{$t('infoHeight')}}</view> <view class="left">身高</view>
<view class="right"> <view class="right">
<input name="name" class="mr-5" type="digit" v-model="memInfo.height" <input name="name" class="mr-5" type="digit" v-model="memInfo.height" placeholder="请输入身高" />CM
:placeholder="$t('verifyRecord')" />CM
<uni-icons type="clear" color="#999" v-if="memInfo.height" @click="memInfo.height=''" <uni-icons type="clear" color="#999" v-if="memInfo.height" @click="memInfo.height=''"
size="20"></uni-icons> size="20"></uni-icons>
</view> </view>
</view> </view>
<view class="lan border-bottom"> <view class="lan border-bottom">
<view class="left">{{$t('infoWeight')}}</view> <view class="left">体重</view>
<view class="right"> <view class="right">
<input name="name" type="digit" class="mr-5" v-model="memInfo.weight" <input name="name" type="digit" class="mr-5" v-model="memInfo.weight" placeholder="请输入体重" />KG
:placeholder="$t('verifyRecord')" />KG
<uni-icons type="clear" color="#999" v-if="memInfo.weight" @click="memInfo.weight=''" <uni-icons type="clear" color="#999" v-if="memInfo.weight" @click="memInfo.weight=''"
size="20"></uni-icons> size="20"></uni-icons>
</view> </view>
</view> </view>
<view class="lan border-bottom"> <view class="lan border-bottom">
<view class="left">{{$t('infoBirthday')}}</view> <view class="left">出生日期</view>
<view class="right"> <view class="right">
<picker mode="date" :end="endDate" @change="maskClick" <picker mode="date" :end="endDate" @change="maskClick"
:value="memInfo.birthday?memInfo.birthday:endDate" :fields="fields"> :value="memInfo.birthday?memInfo.birthday:endDate" :fields="fields">
<view class="uni-input">{{memInfo.birthday?memInfo.birthday:$t('verifyPicker')}}</view> <view class="uni-input">{{memInfo.birthday?memInfo.birthday:'请选择'}}</view>
<icon class="iconfont icon-arrow-down-bold"></icon> <icon class="iconfont icon-arrow-down-bold"></icon>
</picker> </picker>
</view> </view>
</view> </view>
<view class="lan border-bottom"> <view class="lan border-bottom">
<view class="left">{{$t('infoActivityCoefficient')}}</view> <view class="left">活动系数</view>
<view class="right"> <view class="right">
<picker mode="selector" @change="changeClickType" :range="activityLevel" range-key="name" <picker mode="selector" @change="changeClickType" :range="activityLevel" range-key="name"
:value="levelInd"> :value="levelInd">
<view> <view>
{{memInfo.activity_level?activityLevel[levelInd].name:$t('verifyRecord')}} {{memInfo.activity_level?activityLevel[levelInd].name:'请选择'}}
<icon class="iconfont icon-arrow-down-bold"></icon> <icon class="iconfont icon-arrow-down-bold"></icon>
</view> </view>
</picker> </picker>
</view> </view>
</view> </view>
</view> </view>
<view class="btn" @click="confirmInfo">{{$t('btnSubmit')}}</view> <view class="btn" @click="confirmInfo">提交</view>
</view> </view>
</template> </template>
<script> <script>
@ -80,8 +78,8 @@
data() { data() {
return { return {
sexItem: [ sexItem: [
this.$t("infoMan"), "男",
this.$t("infoWoman") "女"
], ],
memInfo: { memInfo: {
birthday: "", birthday: "",
@ -108,9 +106,6 @@
}, },
onLoad(options) { onLoad(options) {
let that = this let that = this
uni.setNavigationBarTitle({
title: that.$t('infoPersonalProfile')
})
if (options.info) { // if (options.info) { //
let info = JSON.parse(options.info) let info = JSON.parse(options.info)
that.memInfo = info that.memInfo = info
@ -129,33 +124,30 @@
confirmInfo() { confirmInfo() {
let that = this let that = this
if (!that.memInfo.nickname) { if (!that.memInfo.nickname) {
that.$tools.msg(that.$t('verifyNickName')) that.$tools.msg("请输入姓名")
return;
}
if (!that.memInfo.gender) {
this.$tools.msg(that.$t('verifyGender'))
return; return;
} }
if (!that.memInfo.height) { if (!that.memInfo.height) {
that.$tools.msg(that.$t('verifyHeight')) that.$tools.msg("请选择身高")
return; return;
} }
if (!that.memInfo.weight) { if (!that.memInfo.weight) {
that.$tools.msg(that.$t('verifyWeight')) that.$tools.msg("请选择体重")
return; return;
} }
if (!that.memInfo.birthday) { if (!that.memInfo.birthday) {
that.$tools.msg(that.$t('verifyBirthday')) that.$tools.msg("请选择出生日期")
return;
}
if (!that.memInfo.activity_level) {
that.$tools.msg("请选择活动系数")
return; return;
} }
// if (!that.memInfo.activity_level) {
// that.$tools.msg("")
// return;
// }
let https = that.isEdit ? that.$model.getEditUser(that.memInfo) : that.$model.getAddUser(that.memInfo) let https = that.isEdit ? that.$model.getEditUser(that.memInfo) : that.$model.getAddUser(that.memInfo)
return https.then(res => { return https.then(res => {
console.log("成功", res, that.isEdit, uni.getStorageSync('userid')) console.log("成功", res, that.isEdit, uni.getStorageSync('userid'))
if (res.code == 0) { if (res.code == 0) {
that.$tools.msg("提交成功");
if (!that.isEdit) { if (!that.isEdit) {
that.addID = res.data.aud_id that.addID = res.data.aud_id
} }
@ -178,7 +170,6 @@
that.$store.commit('changeFamilay', res.data.user_list) that.$store.commit('changeFamilay', res.data.user_list)
// //
if (!that.isEdit) { if (!that.isEdit) {
console.log('新增', that.addID)
let userid = that.addID let userid = that.addID
uni.setStorageSync('userid', that.addID) uni.setStorageSync('userid', that.addID)
that.$store.dispatch('getUserInfo', { that.$store.dispatch('getUserInfo', {
@ -223,7 +214,7 @@
}, },
// //
onsexArr(e) { onsexArr(e) {
this.memInfo.gender = this.sexItem[e.target.value] == this.$t("infoMan") ? 1 : 2 this.memInfo.gender = this.sexItem[e.target.value] == "男" ? 1 : 2
}, },
changeClickType(e) { changeClickType(e) {
this.levelInd = e.target.value this.levelInd = e.target.value

View File

@ -7,21 +7,21 @@
<image :src="depthInfo.user_data.head_pic"></image> <image :src="depthInfo.user_data.head_pic"></image>
<view> <view>
<text class="bold size14 name">{{depthInfo.user_data.nickname}}</text> <text class="bold size14 name">{{depthInfo.user_data.nickname}}</text>
<text>{{$t("infoGender")}}:{{depthInfo.user_data.gender==2?$t("infoWoman"):$t("infoMan")}}</text> <text>性别:{{depthInfo.user_data.gender==2?'女':'男'}}</text>
</view> </view>
</view> </view>
</view> </view>
<view class="info"> <view class="info">
<view class="text_l"> <view class="text_l">
<text>{{$t("infoAge")}}</text> <text>年龄</text>
<text class="size20 bold">{{depthInfo.user_data.age}}</text> <text class="size20 bold">{{depthInfo.user_data.age}}</text>
</view> </view>
<view class="line text_c"> <view class="line text_c">
<text>{{$t("infoHeight")}}</text> <text>身高</text>
<text class="size20 bold">{{depthInfo.user_data.height}}</text> <text class="size20 bold">{{depthInfo.user_data.height}}</text>
</view> </view>
<view class="text_r"> <view class="text_r">
<text class="text_c">{{$t("infoWeight")}}</text> <text class="text_c">体重</text>
<text class="size20 bold">{{depthInfo.user_data.weight}}</text> <text class="size20 bold">{{depthInfo.user_data.weight}}</text>
</view> </view>
</view> </view>
@ -33,7 +33,7 @@
</view> </view>
<view class="score"> <view class="score">
<text>{{depthInfo.user_data.score}}</text> <text>{{depthInfo.user_data.score}}</text>
{{$t("HealthScore")}} 健康评分
</view> </view>
</view> </view>
</view> </view>
@ -121,9 +121,9 @@
<view class="val">{{item.value?item.value:'0'}}{{item.unit}}</view> <view class="val">{{item.value?item.value:'0'}}{{item.unit}}</view>
<view class="level"> <view class="level">
<view class="btnf" <view class="btnf"
:style="{backgroundColor:(item.standard=='异常'||item.standard==''?'#F8595D':item.standard_color)}" :style="{backgroundColor:(item.standard=='异常'?'#FFF':item.standard_color)}"
:class="[item.standard=='异常'||item.standard==''?'btnC':'']"> :class="[item.standard=='异常'?'btnC':'']">
{{item.standard=='异常'||item.standard==''?'-':item.standard}} {{item.standard=='异常'?'-':item.standard}}
</view> </view>
</view> </view>
</view> </view>
@ -189,9 +189,9 @@
<view class="val">{{item.value?item.value:'0'}}{{item.unit}}</view> <view class="val">{{item.value?item.value:'0'}}{{item.unit}}</view>
<view class="level"> <view class="level">
<view class="btnf" <view class="btnf"
:style="{backgroundColor:(item.standard=='异常'||item.standard==''?'#F8595D':item.standard_color)}" :style="{backgroundColor:(item.standard=='异常'?'#FFF':item.standard_color)}"
:class="[item.standard=='异常'||item.standard==''?'btnC':'']"> :class="[item.standard=='异常'?'btnC':'']">
{{item.standard=='异常'||item.standard==''?'-':item.standard}} {{item.standard=='异常'?'-':item.standard}}
</view> </view>
</view> </view>
</view> </view>
@ -312,7 +312,7 @@
name: "", name: "",
}, },
subtitle: { subtitle: {
name: this.$t("infoWeight") + "(kg)" name: "体重(kg)"
} }
}, },
chartData: {}, chartData: {},
@ -340,9 +340,6 @@
}, },
}, },
onLoad() { onLoad() {
uni.setNavigationBarTitle({
title: this.$t('titleDepthReport')
});
this.handleLabelList() this.handleLabelList()
}, },
methods: { methods: {
@ -373,7 +370,7 @@
this.chartData2 = JSON.parse(JSON.stringify({ this.chartData2 = JSON.parse(JSON.stringify({
series: [{ series: [{
name: that.$t("HealthScore"), name: "健康评分",
data: Number(that.depthInfo.user_data.score) / 100 data: Number(that.depthInfo.user_data.score) / 100
}] }]
})); }));

View File

@ -3,22 +3,22 @@
<view class="login"> <view class="login">
<view class="editem"> <view class="editem">
<view class="item"> <view class="item">
<view class="text">{{$t("infoEmail")}}</view> <view class="text">邮箱</view>
<view class="input"> <view class="input">
<input v-model="phone" :placeholder="$t('verifyEmail')" /> <input v-model="phone" placeholder="请输入邮箱" />
</view> </view>
</view> </view>
<view class="item "> <view class="item ">
<view class="text">{{$t("titleCode")}}</view> <view class="text">验证码</view>
<view class="input yanzhengma"> <view class="input yanzhengma">
<input class="uni-input" v-model="code" :placeholder="$t('verifyCode')"/> <input class="uni-input" v-model="code" />
<button class="code" type="none" @click="handleCode" v-model="code" <button class="code" type="none" @click="handleCode" v-model="code"
:disabled="disabled">{{second<60 ? second+$t("titleSendCodeRetry"):$t("titleSendCode")}} :disabled="disabled">{{second<60 ? second+'S后重发':'获取验证码'}}
</button> </button>
</view> </view>
</view> </view>
</view> </view>
<view class="btnlogin" @click="handleOutLogin">{{$t("btnConfirm")}}</view> <view class="btnlogin" @click="handleTelLogin">确认</view>
</view> </view>
</view> </view>
</template> </template>
@ -33,52 +33,45 @@
second: 60, second: 60,
} }
}, },
onLoad() {
let that = this
uni.setNavigationBarTitle({
title: that.$t('btnDeleteAccount')
})
},
methods: { methods: {
// //
handleOutLogin() { handleTelLogin() {
let that = this let that = this
uni.showModal({ if (!(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(that.phone))) {
title: that.$t("msgTitle"), that.$tools.msg("请输入正确的邮箱")
content: that.$t("verifyDeleteAccount"), return
cancelText: that.$t("btnSancellation"),//
confirmText: that.$t("btnConfirm"),//
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', "")
uni.setStorageSync('aan_id', null)
uni.clearStorageSync()
setTimeout(() => {
uni.reLaunch({
url: "/pageTwo/login/login"
})
}, 3000);
})
} else if (res.cancel) {
that.$tools.msg(that.$t("msgCancel"));
} }
}, 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.redirectTo({
url: "/body/setting/setting"
})
}
}).catch(err => {})
}, },
// //
handleCode() { handleCode() {
let that = this let that = this
if (!that.phone) { if (!that.phone) {
that.$tools.msg(that.$t("verifyEmail")) that.$tools.msg("请输入邮箱")
return return
} }
if (!(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(that.phone))) { if (!(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(that.phone))) {
that.$tools.msg(that.$t("verifyEmailCorrect")) that.$tools.msg("请输入正确的邮箱")
return return
} }
// //
@ -110,16 +103,16 @@
.content { .content {
width: 100%; width: 100%;
height: 100vh; height: 100vh;
background-color: #fff; background: #fff;
} }
.login { .login {
width: calc(100% - 60rpx); width: calc(100% - 30px);
height: auto; height: auto;
background: #fff; background: #fff;
border-radius: 20rpx; border-radius: 10px;
padding: 30rpx; padding: 15px;
background-color: #fff;
z-index: 99; z-index: 99;
.title { .title {
@ -127,7 +120,7 @@
color: #333; color: #333;
font-size: 40rpx; font-size: 40rpx;
font-weight: bold; font-weight: bold;
margin-bottom: 30rpx; margin-bottom: 15px;
} }
@ -143,36 +136,34 @@
.item { .item {
width: 100%; width: 100%;
display: flex; display: flex;
flex-wrap: wrap;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
margin-bottom: 30rpx; margin-bottom: 15px;
.text { .text {
width: 100%; width: 80px;
height: 80rpx; height: 40px;
line-height: 80rpx; line-height: 40px;
font-size: 32rpx; font-size: 32rpx;
font-weight: bold;
} }
.input { .input {
width: 100%; width: calc(100% - 100px);
height: 35px; height: 35px;
line-height: 35px; line-height: 35px;
display: flex; display: flex;
position: relative; position: relative;
border: #dfdfdf 1px solid; border: #dfdfdf 1px solid;
border-radius: 5px; border-radius: 5px;
padding: 0 20rpx; padding: 0 10px;
background-color: #f7f7f7; background-color: #f7f7f7;
} }
input { input {
height: 80rpx; height: 40px;
line-height: 80rpx; line-height: 40px;
position: absolute; position: absolute;
left: 20rpx; left: 10px;
right: 0px; right: 0px;
z-index: 88; z-index: 88;
font-size: 32rpx; font-size: 32rpx;
@ -180,19 +171,18 @@
.yanzhengma { .yanzhengma {
input { input {
right: 180px; right: 120px;
font-size: 32rpx; font-size: 32rpx;
} }
} }
} }
.code { .code {
color: #333; width: 110px;
width: 180px;
background: #dfdfdf; background: #dfdfdf;
font-size: 14px; font-size: 32rpx;
margin: 0; margin: 0;
line-height: 80rpx; line-height: 40px;
border-radius: 5px; border-radius: 5px;
text-align: center; text-align: center;
position: absolute; position: absolute;
@ -207,12 +197,12 @@
.btnlogin { .btnlogin {
width: 100%; width: 100%;
margin: 30rpx 0; margin: 15px 0;
height: 42px; height: 42px;
line-height: 42px; line-height: 42px;
background: $btncolor; background: $btncolor;
font-weight: 700; font-weight: 700;
border-radius: 30rpx; border-radius: 15px;
text-align: center; text-align: center;
color: #fff !important; color: #fff !important;
} }

View File

@ -3,34 +3,19 @@
<view class="login"> <view class="login">
<view class="editem"> <view class="editem">
<view class="item"> <view class="item">
<view class="text">{{$t("infoEmail")}}</view> <view class="text">密码</view>
<view class="input"> <view class="input">
<input v-model="phone" type="email" :placeholder="$t('verifyEmail')" /> <input class="uni-input" v-model="password" placeholder="请输入密码" />
</view>
</view>
<view class="item ">
<view class="text">{{$t("titleCode")}}</view>
<view class="input yanzhengma">
<input class="uni-input" v-model="code" :placeholder="$t('verifyCode')"/>
<button class="code" type="none" @click="handleCode" v-model="code"
:disabled="disabled">{{second<60 ? second+$t("titleSendCodeRetry"):$t("titleSendCode")}}
</button>
</view> </view>
</view> </view>
<view class="item"> <view class="item">
<view class="text">{{$t('titlePassword')}}</view> <view class="text">确认密码</view>
<view class="input"> <view class="input">
<input class="uni-input" v-model="password" :placeholder="$t('verifyPassword')" /> <input class="uni-input" v-model="password2" placeholder="请输入确认密码" />
</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>
</view> </view>
<view class="btnlogin" @click="handleTelLogin">{{$t('btnSubmit')}}</view> <view class="btnlogin" @click="handleTelLogin">确认</view>
</view> </view>
</view> </view>
</template> </template>
@ -41,45 +26,26 @@
return { return {
password: "", password: "",
password2: "", password2: "",
phone: "",
code: "",
disabled: false,
second: 60,
} }
}, },
onLoad() { onLoad() {},
let that = this
uni.setNavigationBarTitle({
title: that.$t('titleSetPassword')
})
},
methods: { methods: {
// //
handleTelLogin() { handleTelLogin() {
let that = this 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) { if (!that.password) {
that.$tools.msg(that.$t('verifyPassword')) that.$tools.msg("请填写密码")
return return
} }
if (!that.password2) { if (!that.password2) {
that.$tools.msg(that.$t('verifyPasswordTwo')) that.$tools.msg("请确认密码")
return return
} }
if (that.password2 != that.password) { if (that.password2 != that.password) {
that.$tools.msg(that.$t('verifyPasswordCorrect')) that.$tools.msg("请确认两次密码填写一致")
return return
} }
that.$model.getAccountPassword({ that.$model.getAccountPassword({
data: that.phone,
code: that.code,
password: that.password, password: that.password,
c_password: that.password2, c_password: that.password2,
}).then(res => { }).then(res => {
@ -87,10 +53,11 @@
if (res.code != 0) { if (res.code != 0) {
that.$tools.msg(res.msg) that.$tools.msg(res.msg)
} else { } else {
that.$tools.msg(that.$t('msgSetSuccess')) that.$tools.msg("密码设置成功,请重新登录")
that.$model.getloginOut({}).then((res) => { that.$model.getloginOut({}).then((res) => {
if (res.code != 0) return if (res.code != 0) return
uni.setStorageSync('token', "") console.log('确定退出', res)
uni.setStorageSync('token', null)
uni.setStorageSync('aan_id', null) uni.setStorageSync('aan_id', null)
uni.clearStorageSync() uni.clearStorageSync()
setTimeout(function() { setTimeout(function() {
@ -105,37 +72,6 @@
} }
}).catch(err => {}) }).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> </script>
@ -144,15 +80,16 @@
.content { .content {
width: 100%; width: 100%;
height: 100vh; height: 100vh;
background-color: #fff; background: #fff;
} }
.login { .login {
width: calc(100% - 60rpx); width: calc(100% - 30px);
height: auto; height: auto;
background: #fff; background: #fff;
border-radius: 20rpx; border-radius: 10px;
padding: 30rpx; padding: 15px;
background-color: #fff;
z-index: 99; z-index: 99;
.editem { .editem {
@ -167,70 +104,49 @@
.item { .item {
width: 100%; width: 100%;
display: flex; display: flex;
flex-wrap: wrap;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
margin-bottom: 20rpx; margin-bottom: 15px;
.text { .text {
width: 100%; width: 80px;
height: 80rpx; height: 40px;
line-height: 80rpx; line-height: 40px;
font-size: 32rpx; font-size: 32rpx;
font-weight: bold;
} }
.input { .input {
width: 100%; width: calc(100% - 100px);
height: 35px; height: 35px;
line-height: 35px; line-height: 35px;
display: flex; display: flex;
position: relative; position: relative;
border: #dfdfdf 1px solid; border: #dfdfdf 1px solid;
border-radius: 5px; border-radius: 5px;
padding: 0 20rpx; padding: 0 10px;
background-color: #f7f7f7; background-color: #f7f7f7;
} }
input { input {
height: 80rpx; height: 40px;
line-height: 80rpx; line-height: 40px;
position: absolute; position: absolute;
left: 20rpx; left: 10px;
right: 0px; right: 0px;
z-index: 88; z-index: 88;
font-size: 28rpx; 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 { .btnlogin {
width: 100%; width: 100%;
margin: 30rpx 0; margin: 15px 0;
height: 42px; height: 42px;
line-height: 42px; line-height: 42px;
background: $btncolor; background: $btncolor;
font-weight: 700; font-weight: 700;
border-radius: 30rpx; border-radius: 15px;
text-align: center; text-align: center;
color: #fff !important; color: #fff !important;
} }

View File

@ -3,22 +3,22 @@
<view class="login"> <view class="login">
<view class="editem"> <view class="editem">
<view class="item"> <view class="item">
<view class="text">{{$t('infoMobile')}}</view> <view class="text">手机号</view>
<view class="input"> <view class="input">
<input v-model="phone" :placeholder="$t('verifyMobile')" /> <input v-model="phone" placeholder="请输入手机号" />
</view> </view>
</view> </view>
<view class="item "> <view class="item ">
<view class="text">{{$t('titleCode')}}</view> <view class="text">验证码</view>
<view class="input yanzhengma"> <view class="input yanzhengma">
<input class="uni-input" v-model="code" :placeholder="$t('verifyCode')"/> <input class="uni-input" v-model="code" />
<button class="code" type="none" @click="handleCode" v-model="code" <button class="code" type="none" @click="handleCode" v-model="code"
:disabled="disabled">{{second<60 ? second+$t('titleSendCodeRetry'):$t('titleSendCode')}} :disabled="disabled">{{second<60 ? second+'S后重发':'获取验证码'}}
</button> </button>
</view> </view>
</view> </view>
</view> </view>
<view class="btnlogin" @click="handleTelLogin">{{$t('btnSubmit')}}</view> <view class="btnlogin" @click="handleTelLogin">确认</view>
</view> </view>
</view> </view>
</template> </template>
@ -33,22 +33,16 @@
second: 60, second: 60,
} }
}, },
onLoad() {
let that = this
uni.setNavigationBarTitle({
title: that.$t('titlePhone')
})
},
methods: { methods: {
// //
handleTelLogin() { handleTelLogin() {
let that = this let that = this
if (!(/^1[3456789]\d{9}$/.test(that.phone))) { if (!(/^1[3456789]\d{9}$/.test(that.phone))) {
that.$tools.msg(that.$t('verifyMobileCorrect')) that.$tools.msg("请输入正确的手机号")
return return
} }
if (!that.code) { if (!that.code) {
that.$tools.msg(that.$t('verifyCode')) that.$tools.msg("请填写验证码")
return return
} }
that.$model.getAccountMsg({ that.$model.getAccountMsg({
@ -59,15 +53,13 @@
that.$tools.msg(res.msg) that.$tools.msg(res.msg)
return return
} else { } else {
that.$tools.msg(that.$t('msgSetSuccess')) that.$tools.msg("设置成功!")
that.$store.commit('changeAccountNumber', { that.$store.commit('changeAccountNumber', {
my_tel: that.phone my_tel: that.phone
}) })
setTimeout(function() {
uni.redirectTo({ uni.redirectTo({
url: "/body/setting/setting" url: "/body/setting/setting"
}) })
}, 1000)
} }
}).catch(err => {}) }).catch(err => {})
}, },
@ -75,16 +67,17 @@
handleCode() { handleCode() {
let that = this let that = this
if (!that.phone) { if (!that.phone) {
that.$tools.msg(that.$t('verifyMobile')) that.$tools.msg("请输入手机号")
return return
} }
if (!(/^1[3456789]\d{9}$/.test(that.phone))) { if (!(/^1[3456789]\d{9}$/.test(that.phone))) {
that.$tools.msg(that.$t('verifyMobileCorrect')) that.$tools.msg("请输入正确的手机号")
return return
} }
// //
that.$model.getSendCode({ that.$model.getSendCode({
data: that.phone, data: that.phone,
// type: that.type
}).then(res => { }).then(res => {
console.log(res) console.log(res)
if (res.code != 0) { if (res.code != 0) {
@ -125,7 +118,7 @@
.title { .title {
text-align: left; text-align: left;
color: #333; color: #333;
font-size: 40rpx; font-size:40rpx;
font-weight: bold; font-weight: bold;
margin-bottom: 15px; margin-bottom: 15px;
} }
@ -135,7 +128,7 @@
position: relative; position: relative;
display: flex; display: flex;
align-items: center; align-items: center;
font-size: 28rpx; font-size:28rpx;
justify-content: space-between; justify-content: space-between;
flex-wrap: wrap; flex-wrap: wrap;
@ -151,7 +144,7 @@
width: 80px; width: 80px;
height: 40px; height: 40px;
line-height: 40px; line-height: 40px;
font-size: 28rpx; font-size:28rpx;
} }
.input { .input {
@ -173,7 +166,7 @@
left: 10px; left: 10px;
right: 0px; right: 0px;
z-index: 88; z-index: 88;
font-size: 28rpx; font-size:28rpx;
} }
.yanzhengma { .yanzhengma {

View File

@ -1,33 +1,37 @@
<template> <template>
<view class="content"> <view class="content">
<view class="caritem"> <view class="caritem">
<view class="text">{{$t('infoAvatar')}}</view> <view class="text">头像</view>
<image :src="user.head_pic" class="image"></image> <image :src="user.head_pic" class="image"></image>
</view> </view>
<view class="caritem"> <view class="caritem">
<view class="text">{{$t('infoNickname')}}</view> <view class="text">昵称</view>
<view class="text_r"> <view class="text_r">
<text v-if="!isEdit">{{user.nickname}}</text> <text v-if="!isEdit">{{user.nickname}}</text>
<input v-else type="text" v-model='nickname' @blur="handleBlur" /> <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> <uni-icons type="compose" color="#FEC407" @click="isEdit=true" class="ml-10" size="22"></uni-icons>
</view> </view>
</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">手机号</view>
<view class="text_r"> <view class="text_r">
<text>{{user.my_tel}}</text> <text>{{user.my_tel}}</text>
<uni-icons type="right"></uni-icons> <uni-icons type="right"></uni-icons>
</view> </view>
</view> -->
<view class="caritem" @click="navTo('/body/setting/password')">
<view class="text">{{$t('titleSetPassword')}}</view>
<uni-icons type="right"></uni-icons>
</view> </view>
<view class="caritem" @click="navTo('/body/setting/email')"> <view class="caritem" @click="navTo('/body/setting/email')">
<view class="text">{{$t('btnDeleteAccount')}}</view> <view class="text">邮箱</view>
<uni-icons type="forward" size="20" color="#666"></uni-icons> <view class="text_r">
<text>{{user.my_email}}</text>
<uni-icons type="right"></uni-icons>
</view> </view>
</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> </template>
<script> <script>
@ -42,11 +46,6 @@
nickname: "" nickname: ""
}; };
}, },
onLoad() {
uni.setNavigationBarTitle({
title: this.$t('titleSet')
})
},
computed: { computed: {
...mapState(["accountNumber"]), ...mapState(["accountNumber"]),
user() { user() {
@ -54,6 +53,32 @@
} }
}, },
methods: { 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() { handleBlur() {
let that = this let that = this

View File

@ -14,6 +14,7 @@
let that = this let that = this
let token = uni.getStorageSync('token') let token = uni.getStorageSync('token')
let url = options.url + '?token=' + token + '&id=' + options.id let url = options.url + '?token=' + token + '&id=' + options.id
console.log("11111", options, url, this.webviewUrl)
that.webviewUrl = decodeURIComponent(url); that.webviewUrl = decodeURIComponent(url);
console.log("11111", options, url, this.webviewUrl) console.log("11111", options, url, this.webviewUrl)
} }

View File

@ -0,0 +1,247 @@
<template>
<view 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>
<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>
</template>
<script>
import {
mapState
} from "vuex";
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 {
components: {
record,
qiunDataCharts,
},
data() {
return {
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,
},
}
};
},
computed: {
...mapState(["user", "MeasureResult"]),
info() {
return this.user
},
// Measure() {
// let that = this
// return this.MeasureResult
// }
},
watch: {
MeasureResult: {
handler(newVal, oldVal) {
let that = this
that.handTrue = false
this.$nextTick(() => {
that.handTrue = true
that.Measure = newVal
})
},
deep: true,
immediate: true
}
},
methods: {
//
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>
<style scoped lang="scss">
.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;
}
}
</style>

View File

@ -15,11 +15,11 @@
<view class="overflow"> <view class="overflow">
{{item.nickname}} {{item.nickname}}
</view> </view>
<view class="dangqian" v-if="item.id == userinfo.aud_id">{{$t("infoNowUser")}}</view> <view class="dangqian" v-if="item.id == userinfo.aud_id">当前</view>
</view> </view>
<view class="info"> <view class="info">
<view>{{item.gender==1?$t("infoMan"):$t("infoWoman")}}</view> <view>{{item.gender==1?'男':'女'}}</view>
<view>{{item.age}}{{$t("infoAgeunit")}}</view> <view>{{item.age}}</view>
</view> </view>
</view> </view>
</view> </view>

View File

@ -2,24 +2,24 @@
<view v-if="isFirst" class="wrapper wrapperbg"> <view v-if="isFirst" class="wrapper wrapperbg">
<view class="bg" @click="onTap"> <view class="bg" @click="onTap">
<view class="edit" @click.stop> <view class="edit" @click.stop>
<view class="title">{{$t("initial_weight")}}</view> <view class="title">初始体重</view>
<view class="editem"> <view class="editem">
<view class="name">{{$t("titleDate")}}</view> <view class="name">日期</view>
<view class="right"> <view class="right">
<picker mode="date" :end="endDate" @change="changeLog" :fields="fields"> <picker mode="date" :end="endDate" @change="changeLog" :fields="fields">
<view class="uni-input">{{regTime?regTime:$t("verifyPicker")}}</view> <view class="uni-input">{{regTime?regTime:'请选择'}}</view>
<icon class="iconfont icon-arrow-down-bold"></icon> <icon class="iconfont icon-arrow-down-bold"></icon>
</picker> </picker>
</view> </view>
</view> </view>
<view class="editem"> <view class="editem">
<view class="name">{{$t("infoWeight")}}</view> <view class="name">体重</view>
<view class="right"> <view class="right">
<input v-model="weight" type="digit" :placeholder="$t('verifyWeight')" />kg <input v-model="weight" type="digit" placeholder="请输入" />kg
</view> </view>
</view> </view>
<view class="btn close" @click="onTap()">{{$t("btnSancellation")}}</view> <view class="btn close" @click="onTap()">取消</view>
<view class="btn" @click="handleTarget">{{$t("btnConfirm")}}</view> <view class="btn" @click="handleTarget">确定</view>
</view> </view>
</view> </view>
</view> </view>
@ -60,11 +60,11 @@
handleTarget() { handleTarget() {
let that = this let that = this
if (!that.regTime) { if (!that.regTime) {
that.$tools.msg(that.$t("verifyDate")) that.$tools.msg("请选择测量日期")
return return
} }
if (!that.weight) { if (!that.weight) {
that.$tools.msg(that.$t("verifyWeight")) that.$tools.msg("请输入测量体重")
return return
} }
that.$model.getfirstweight({ that.$model.getfirstweight({

View File

@ -2,12 +2,12 @@
<view class="wrapper" v-if="isRecord"> <view class="wrapper" v-if="isRecord">
<view class="bg" @click="onTap"> <view class="bg" @click="onTap">
<view class="edit" @click.stop> <view class="edit" @click.stop>
<view class="title">{{$t("manualRecording")}}</view> <view class="title">手动记录</view>
<view class="editem"> <view class="editem">
<view class="left">{{$t("titleDate")}}</view> <view class="left">日期</view>
<view class="right"> <view class="right">
<picker mode="date" :end="endDate" @change="changeLog" :fields="fields"> <picker mode="date" :end="endDate" @change="changeLog" :fields="fields">
<view class="uni-input">{{regTime?regTime:$t("verifyPicker")}}</view> <view class="uni-input">{{regTime?regTime:'请选择'}}</view>
<icon class="iconfont icon-arrow-down-bold"></icon> <icon class="iconfont icon-arrow-down-bold"></icon>
</picker> </picker>
</view> </view>
@ -15,26 +15,26 @@
<!-- 身体 --> <!-- 身体 -->
<view> <view>
<view class="editem" v-if="userInfo&&userInfo.height"> <view class="editem" v-if="userInfo&&userInfo.height">
<view class="name">{{$t("infoHeight")}}</view> <view class="name">身高</view>
<view class="right"> <view class="right">
<input type="digit" v-model="height" :placeholder="$t('verifyHeight')" />cm <input type="digit" v-model="height" placeholder="请输入身高" />cm
</view> </view>
</view> </view>
<view class="editem" v-if="userInfo&&userInfo.weight"> <view class="editem" v-if="userInfo&&userInfo.weight">
<view class="name">{{$t("infoWeight")}}</view> <view class="name">体重</view>
<view class="right"> <view class="right">
<input type="digit" v-model="weight" :placeholder="$t('verifyWeight')">kg <input type="digit" v-model="weight" placeholder="请输入体重">kg
</view> </view>
</view> </view>
<view class="editem" v-if="userInfo.stage==3"> <view class="editem" v-if="userInfo.stage==3">
<view class="left">{{$t("infoHead")}}</view> <view class="left">头围</view>
<view class="right"> <view class="right">
<input v-model="head" type="digit" :placeholder="$t('verifyHead')" />cm <input v-model="head" type="digit" placeholder="请输入" />cm
</view> </view>
</view> </view>
</view> </view>
<view class="btn close" @click="onTap()">{{$t("btnSancellation")}}</view> <view class="btn close" @click="onTap()">取消</view>
<view class="btn" @click="handleinsertmeasure()">{{$t("btnConfirm")}}</view> <view class="btn" @click="handleinsertmeasure()">确定</view>
</view> </view>
</view> </view>
</view> </view>
@ -80,15 +80,15 @@
handleinsertmeasure() { handleinsertmeasure() {
let that = this let that = this
if (!that.regTime) { if (!that.regTime) {
that.$tools.msg(that.$t('verifyBodyDate')) that.$tools.msg("请选择测量日期")
return return
} }
if (!that.height) { if (!that.height) {
that.$tools.msg(that.$t('verifyHeight')) that.$tools.msg("请输入测量身高")
return return
} }
if (!that.weight) { if (!that.weight) {
that.$tools.msg(that.$t('verifyWeight')) that.$tools.msg("请输入测量体重")
return return
} }
that.$model.getinsertmeasure({ that.$model.getinsertmeasure({

View File

@ -2,15 +2,15 @@
<view v-if="isTarget" class="wrapper"> <view v-if="isTarget" class="wrapper">
<view class="bg" @click="onTap"> <view class="bg" @click="onTap">
<view class="edit" @click.stop> <view class="edit" @click.stop>
<view class="title">{{$t("target_weight")}}</view> <view class="title">目标体重</view>
<view class="editem"> <view class="editem">
<view class="left">{{$t("target_weight")}}</view> <view class="left">目标体重</view>
<view class="right"> <view class="right">
<input class="text" type="digit" :placeholder="$t('verifyRecord')" v-model="inputvalue" />kg <input class="text" type="digit" placeholder="请输入" v-model="inputvalue" />kg
</view> </view>
</view> </view>
<view class="btn close" @click="onTap()">{{$t("btnSancellation")}}</view> <view class="btn close" @click="onTap()">取消</view>
<view class="btn" @click="handleWeight">{{$t("btnConfirm")}}</view> <view class="btn" @click="handleWeight">确定</view>
</view> </view>
</view> </view>
</view> </view>
@ -40,7 +40,7 @@
handleWeight() { handleWeight() {
let that = this let that = this
if (!that.inputvalue) { if (!that.inputvalue) {
that.$tools.msg(that.$t("justDta")) that.$tools.msg("请输入目标体重")
return return
} }
that.$model.getTargetweight({ that.$model.getTargetweight({
@ -51,6 +51,9 @@
that.$tools.msg(res.msg) that.$tools.msg(res.msg)
that.$store.commit("changeTarget", false); that.$store.commit("changeTarget", false);
that.$emit("handleLabelList", that.endDate, that.startDate) that.$emit("handleLabelList", that.endDate, that.startDate)
// that.$store.dispatch('getUserInfo', {
// aud_id: that.user.aud_id
// })
that.inputvalue = "" that.inputvalue = ""
}) })
}, },

View File

@ -3,19 +3,19 @@
<view class="cardList"> <view class="cardList">
<view class="caritem" @click="handleNavTol('/pageTwo/charts/charts')"> <view class="caritem" @click="handleNavTol('/pageTwo/charts/charts')">
<image src="/static/q5.png"></image> <image src="/static/q5.png"></image>
<view>{{$t('titleCharts')}}</view> <view>曲线</view>
</view> </view>
<view class="caritem" @click="handleNavTol('/pageTwo/compk/contrast')"> <view class="caritem" @click="handleNavTol('/pageTwo/compk/contrast')">
<image src="/static/q3.png"></image> <image src="/static/q3.png"></image>
<view>{{$t('titleContrast')}}</view> <view>数据对比</view>
</view> </view>
<view class="caritem" @click="handlerRecord"> <view class="caritem" @click="handlerRecord">
<image src="/static/q7.png"></image> <image src="/static/q7.png"></image>
<view>{{$t('addRecord')}}</view> <view>添加记录</view>
</view> </view>
<view class="caritem" @click="handleNavTol('/pageTwo/history/history')"> <view class="caritem" @click="handleNavTol('/pageTwo/history/history')">
<image src="/static/q8.png"></image> <image src="/static/q8.png"></image>
<view>{{$t('HistoricalRcord')}}</view> <view>历史记录</view>
</view> </view>
</view> </view>
@ -23,34 +23,20 @@
<view class="item" v-for="(ite,ind) in cardList.chosen_fixed" @click="handleNavTol(ite.page_jump)"> <view class="item" v-for="(ite,ind) in cardList.chosen_fixed" @click="handleNavTol(ite.page_jump)">
<view class="info"> <view class="info">
<image :src="ite.icon"></image> <image :src="ite.icon"></image>
<text>{{ite.name}}</text> <view>{{ite.name}}</view>
</view> </view>
</view> </view>
<view class="item" v-for="(ite,ind) in cardList.chosen_yes" @click="handleNavItem(ite)"> <view class="item" v-for="(ite,ind) in cardList.chosen_yes" @click="handleNavTol(ite.page_jump)">
<view class="info"> <view class="info">
<image :src="ite.icon"></image> <image :src="ite.icon"></image>
<text>{{ite.name}}</text> <view>{{ite.name}}</view>
</view> </view>
</view> </view>
</view> </view>
<!-- 通用卡片新增数据 --> <view class="setCard" @click="handleSetCard">
<view class="wrapper" v-if="isPublicCard"> 工具设置
<view class="bg" @click="onTap">
<view class="edit" @click.stop>
<view class="title">{{name}}</view>
<!-- 项目内容 -->
<view class="editem">
<view class="left">{{$t('TimeSpent')}}</view>
<view class="right">
<input type="number" v-model="number" :placeholder="$t('verifyRecord')">
<text style="width: 60px;">{{$t('minutes')}}</text>
</view>
</view>
<view class="btn close" @click="onTap()">{{$t('btnSancellation')}}</view>
<view class="btn" @click="handlepublicmeasure">{{$t('btnConfirm')}}</view>
</view>
</view>
</view> </view>
<!-- 手动记录 -->
<record></record> <record></record>
</view> </view>
</template> </template>
@ -63,10 +49,7 @@
export default { export default {
data() { data() {
return { return {
name: "",
isPublicCard: false,
number: "",
key_word: ""
} }
}, },
components: { components: {
@ -84,58 +67,17 @@
return this.CardList return this.CardList
} }
}, },
onLoad() {
let that = this
uni.setNavigationBarTitle({
title: this.$t('titleExercise'),
})
},
methods: { methods: {
// //
handlerRecord() { handlerRecord() {
this.$store.commit('changeTsPublicRecord', true) this.$store.commit('changeTsPublicRecord', true)
}, },
handleNavItem(ite) {
if (ite.page_jump) {
uni.navigateTo({
url: ite.page_jump
})
} else {
this.name = ite.name
this.key_word = ite.id
this.isPublicCard = true
}
},
handleNavTol(url) { handleNavTol(url) {
uni.navigateTo({ uni.navigateTo({
url: url url: url
}) })
}, },
handlepublicmeasure() {
let that = this
if (!that.number) {
that.$tools.msg(that.$t('verifyTime'))
return
}
that.$model.getpublicmeasurecard({
aud_id: that.user.aud_id,
card_id: that.key_word,
time_m: that.number
}).then(res => {
if (res.code != 0) return
that.$tools.msg(res.msg)
that.number = ""
that.key_word = ""
that.isPublicCard = false
})
},
onTap() {
let that = this
that.name = ""
that.number = ""
that.key_word = ""
that.isPublicCard = false
},
handleSetCard() { handleSetCard() {
uni.navigateTo({ uni.navigateTo({
url: "/pageTwo/cardList/card" url: "/pageTwo/cardList/card"
@ -147,7 +89,6 @@
<style scoped lang="scss"> <style scoped lang="scss">
.cardContent { .cardContent {
min-height: 100vh;
background: #F7F7F7; background: #F7F7F7;
padding: 5px 0 15PX; padding: 5px 0 15PX;
} }
@ -181,7 +122,7 @@
margin: 15px 10px; margin: 15px 10px;
.item { .item {
width: 48%; width: 47%;
background-color: #fff; background-color: #fff;
margin-bottom: 15px; margin-bottom: 15px;
position: relative; position: relative;
@ -190,42 +131,22 @@
border-radius: 5px; border-radius: 5px;
.info { .info {
width: calc(100% - 20px); width: 100%;
padding: 0 10px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center;
image { image {
width: 30px; width: 30px;
height: 30px; height: 30px;
background-color: #f2f2f2; background-color: #f2f2f2;
border-radius: 50%;
float: left;
margin-right: 10px; margin-right: 10px;
} border-radius: 50%;
text {
width: calc(100% - 35px);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
} }
} }
} }
} }
.btn {
width: 40%;
float: right;
margin-top: 15px;
background: $maincolor !important;
}
.close {
background: #dfdfdf !important;
float: left;
}
.setCard { .setCard {
color: $maincolor; color: $maincolor;
margin: 15px; margin: 15px;

View File

@ -2,13 +2,13 @@
<view class="wrapper" v-if="isPublicRecord"> <view class="wrapper" v-if="isPublicRecord">
<view class="bg" @click="onTap"> <view class="bg" @click="onTap">
<view class="edit" @click.stop> <view class="edit" @click.stop>
<view class="title">{{$t("addRecord")}}</view> <view class="title">添加记录</view>
<view class="editem"> <view class="editem">
<view class="left">{{$t("option")}}</view> <view class="left">选择项目</view>
<view class="right"> <view class="right">
<picker mode="selector" @change="bindPickerChange" :value="index" :range="publicRecordInfo" <picker mode="selector" @change="bindPickerChange" :value="index" :range="publicRecordInfo"
range-key="name"> range-key="name">
<view class="uni-input">{{index!=-1?publicRecordInfo[index].name:$t("verifyPicker")}}</view> <view class="uni-input">{{index!=-1?publicRecordInfo[index].name:'请选择'}}</view>
<icon class="iconfont icon-arrow-down-bold"></icon> <icon class="iconfont icon-arrow-down-bold"></icon>
</picker> </picker>
</view> </view>
@ -21,7 +21,7 @@
<picker mode="date" :end="endDate" @change="changeLog($event,ind)" :fields="fields" <picker mode="date" :end="endDate" @change="changeLog($event,ind)" :fields="fields"
:value="RecordList[ind].value"> :value="RecordList[ind].value">
<view class="uni-input"> <view class="uni-input">
{{RecordList[ind].value?RecordList[ind].value:$t("verifyPicker")}} {{RecordList[ind].value?RecordList[ind].value:'请选择'}}
</view> </view>
<icon class="iconfont icon-arrow-down-bold"></icon> <icon class="iconfont icon-arrow-down-bold"></icon>
</picker> </picker>
@ -31,27 +31,27 @@
<picker mode="multiSelector" :value="timesTndex" :range="timeList" <picker mode="multiSelector" :value="timesTndex" :range="timeList"
@change="bindTimeChange($event,ind)"> @change="bindTimeChange($event,ind)">
<view class="size16"> <view class="size16">
{{RecordList[ind].value?RecordList[ind].value:$t("verifyPicker")}}{{ite.unit}} {{RecordList[ind].value?RecordList[ind].value:'请选择'}}{{ite.unit}}
</view> </view>
</picker> </picker>
<uni-icons type="bottom" class="ml-15 c666"></uni-icons> <uni-icons type="bottom" class="ml-15 c666"></uni-icons>
</view> </view>
<!-- 数字输入框 --> <!-- 数字输入框 -->
<view class="right" v-if="ite.type == 'number'"> <view class="right" v-if="ite.type == 'number'">
<input type="number" v-model="ite.value" :placeholder="$t('verifyRecord')">{{ite.unit}} <input type="number" v-model="ite.value" placeholder="请输入">{{ite.unit}}
</view> </view>
<!-- 小数输入框 --> <!-- 小数输入框 -->
<view class="right" v-if="ite.type == 'digit'"> <view class="right" v-if="ite.type == 'digit'">
<input type="digit" v-model="ite.value" :placeholder="$t('verifyRecord')">{{ite.unit}} <input type="digit" v-model="ite.value" placeholder="请输入">{{ite.unit}}
</view> </view>
<!-- 文本输入框 --> <!-- 文本输入框 -->
<view class="right" v-if="ite.type == 'text'"> <view class="right" v-if="ite.type == 'text'">
<input type="text" v-model="ite.value" :placeholder="$t('verifyRecord')">{{ite.unit}} <input type="text" v-model="ite.value" placeholder="请输入">{{ite.unit}}
</view> </view>
</view> </view>
<view class="btn close" @click="onTap()">{{$t("btnSancellation")}}</view> <view class="btn close" @click="onTap()">取消</view>
<view class="btn" @click="handlepublicmeasure">{{$t("btnConfirm")}}</view> <view class="btn" @click="handlepublicmeasure">确定</view>
</view> </view>
</view> </view>
</view> </view>
@ -123,12 +123,12 @@
handlepublicmeasure() { handlepublicmeasure() {
let that = this let that = this
if (that.index == -1) { if (that.index == -1) {
that.$tools.msg(that.$t("verifyOption")) that.$tools.msg("请选择项目")
return return
} }
for (let i = 0; i < that.RecordList.length; i++) { for (let i = 0; i < that.RecordList.length; i++) {
if (that.RecordList[i].value == "") { if (that.RecordList[i].value == "") {
that.$tools.msg(that.$t("justDta")) that.$tools.msg("请输入正确信息")
break; break;
} }
break; break;

View File

@ -6,7 +6,7 @@
<text @click="openBluetoothAdapter">{{bleTipsText}}</text> <text @click="openBluetoothAdapter">{{bleTipsText}}</text>
</view> </view>
<view class="duan" @click="handleBack" v-if="isShow&&isConnection == 2"> <view class="duan" @click="handleBack" v-if="isShow&&isConnection == 2">
{{$t("Disconnect")}} 断开连接
</view> </view>
</view> </view>
<view class="name">{{name}}</view> <view class="name">{{name}}</view>
@ -27,19 +27,19 @@
<view class="right"> <view class="right">
<picker mode="selector" :range="unitA" @change="changleUnits" :value="unitListIndex"> <picker mode="selector" :range="unitA" @change="changleUnits" :value="unitListIndex">
<view class="uni-input"> <view class="uni-input">
{{$t("UnitBtn")}} 单位
</view> </view>
</picker> </picker>
</view> </view>
</view> </view>
</view> </view>
<view class="btn" @click="handleDetailSub" :style="{'width':!stopblue?'20%':'45%'}">{{$t("Save")}}</view> <view class="btn" @click="handleDetailSub" :style="{'width':!stopblue?'20%':'45%'}">保存</view>
<view class="btn" @click="handleDetailNext" v-if="!stopblue">{{$t("nextFlavor")}}</view> <view class="btn" @click="handleDetailNext" v-if="!stopblue">下一味</view>
<view class="btn qingling" @click="handleqingling">{{$t("resetBtn")}}</view> <view class="btn qingling" @click="handleqingling">清零</view>
</view> </view>
<view> <view>
<uni-popup ref="popup" type="dialog"> <uni-popup ref="popup" type="dialog">
<uni-popup-dialog mode="input" :title="$t('Weight')" :placeholder="$t('RecordWeight')" @close="close" <uni-popup-dialog mode="input" title="重量" placeholder="请输入食物重量" @close="close"
@confirm="confirm"></uni-popup-dialog> @confirm="confirm"></uni-popup-dialog>
</uni-popup> </uni-popup>
</view> </view>
@ -137,7 +137,7 @@
if (that.isConnection != 1) return if (that.isConnection != 1) return
that.kcal = "" that.kcal = ""
that.$store.commit('changeBluetoothValue', { that.$store.commit('changeBluetoothValue', {
bleTipsText: that.$t("SearchBluetooth"), bleTipsText: "蓝牙搜索中",
isConnectStatus: 0, isConnectStatus: 0,
deviceId: "", deviceId: "",
serviceId: "", serviceId: "",
@ -173,7 +173,7 @@
that.$store.commit("changeBluetoothValue", { that.$store.commit("changeBluetoothValue", {
foodType: 1, foodType: 1,
isConnectStatus: 1, isConnectStatus: 1,
bleTipsText: that.$t("ConnectionTimeout"), bleTipsText: "连接超时,点击重新连接",
}) })
console.log('获取特征值失败:', JSON.stringify(res)) console.log('获取特征值失败:', JSON.stringify(res))
} }
@ -193,7 +193,7 @@
serviceId: that.serviceId, serviceId: that.serviceId,
foodNotify: that.notify, foodNotify: that.notify,
foodWrite: that.write, foodWrite: that.write,
bleTipsText: that.$t("Measuring"), bleTipsText: "测量中,请将食物放到秤上",
isConnectStatus: 2 isConnectStatus: 2
}) })
uni.onBLECharacteristicValueChange(function(res) { uni.onBLECharacteristicValueChange(function(res) {
@ -275,7 +275,7 @@
if (Number(that.weight) > 0) { if (Number(that.weight) > 0) {
that.$emit("handleDetailSub", that.weight, that.unit, that.kcal) that.$emit("handleDetailSub", that.weight, that.unit, that.kcal)
} else { } else {
that.$tools.msg(that.$t("Remeasure")) that.$tools.msg("数据异常,请清零后重新测量!")
} }
}, },
// //
@ -284,7 +284,7 @@
if (Number(that.weight) > 0) { if (Number(that.weight) > 0) {
that.$emit("handleDetailNext", that.weight, that.unit, that.kcal) that.$emit("handleDetailNext", that.weight, that.unit, that.kcal)
} else { } else {
that.$tools.msg(that.$t("Remeasure")) that.$tools.msg("数据异常,请清零后重新测量!")
} }
}, },
changleUnits(e) { changleUnits(e) {
@ -340,7 +340,7 @@
let that = this let that = this
that.unitA = that.$json.unitMinus that.unitA = that.$json.unitMinus
that.$store.commit("changeBluetoothValue", { that.$store.commit("changeBluetoothValue", {
bleTipsText: that.$t("ConnectionTimeout"), bleTipsText: "连接失败,点击重新连接",
unitList: that.$json.unitMinus, unitList: that.$json.unitMinus,
isConnectStatus: 1, isConnectStatus: 1,
foodType: 1 foodType: 1

View File

@ -6,7 +6,7 @@
<text @click="openBluetoothAdapter">{{bleTipsText}}</text> <text @click="openBluetoothAdapter">{{bleTipsText}}</text>
</view> </view>
<view class="duan" @click="handleBack" v-if="isShow&&isConnection == 2"> <view class="duan" @click="handleBack" v-if="isShow&&isConnection == 2">
{{$t("Disconnect")}} 断开连接
</view> </view>
</view> </view>
<!-- --> <!-- -->
@ -24,20 +24,20 @@
<view class="right"> <view class="right">
<picker mode="selector" :range="unitA" @change="changleUnits" :value="unitListIndex"> <picker mode="selector" :range="unitA" @change="changleUnits" :value="unitListIndex">
<view class="uni-input"> <view class="uni-input">
{{$t("UnitBtn")}} 单位
</view> </view>
</picker> </picker>
</view> </view>
</view> </view>
</view> </view>
<view class="btn addbtn size14" @click="handlesub" v-if="btnType==2">{{$t("Save")}}</view> <view class="btn addbtn size14" @click="handlesub" v-if="btnType==2">保存</view>
<view class="btn addbtn" @click="handleAddFood" v-if="btnType==1">+</view> <view class="btn addbtn" @click="handleAddFood" v-if="btnType==1">+</view>
<view class="btn qingling" @click="handleqingling">{{$t("resetBtn")}}</view> <view class="btn qingling" @click="handleqingling">清零</view>
</view> </view>
<!-- --> <!-- -->
<view> <view>
<uni-popup ref="popup" type="dialog"> <uni-popup ref="popup" type="dialog">
<uni-popup-dialog mode="input" :title="$t('Weight')" :placeholder="$t('RecordWeight')" @close="close" <uni-popup-dialog mode="input" title="重量" placeholder="请输入食物重量" @close="close"
@confirm="confirm"></uni-popup-dialog> @confirm="confirm"></uni-popup-dialog>
</uni-popup> </uni-popup>
</view> </view>
@ -127,7 +127,7 @@
if (that.isConnection != 1) return if (that.isConnection != 1) return
that.kcal = "" that.kcal = ""
that.$store.commit('changeBluetoothValue', { that.$store.commit('changeBluetoothValue', {
bleTipsText: that.$t("SearchBluetooth"), bleTipsText: "蓝牙搜索中",
isConnectStatus: 0, isConnectStatus: 0,
deviceId: "", deviceId: "",
serviceId: "", serviceId: "",
@ -164,7 +164,7 @@
that.$store.commit("changeBluetoothValue", { that.$store.commit("changeBluetoothValue", {
foodType: 1, foodType: 1,
isConnectStatus: 1, isConnectStatus: 1,
bleTipsText: that.$t("ConnectionTimeout"), bleTipsText: "连接超时,点击重新连接",
}) })
console.log('获取特征值失败:', JSON.stringify(res)) console.log('获取特征值失败:', JSON.stringify(res))
} }
@ -184,7 +184,7 @@
serviceId: that.serviceId, serviceId: that.serviceId,
foodNotify: that.notify, foodNotify: that.notify,
foodWrite: that.write, foodWrite: that.write,
bleTipsText: that.$t("Measuring"), bleTipsText: "测量中,请将食物放到秤上",
isConnectStatus: 2 isConnectStatus: 2
}) })
uni.onBLECharacteristicValueChange(function(res) { uni.onBLECharacteristicValueChange(function(res) {
@ -319,13 +319,13 @@
if (Number(that.weight) > 0) { if (Number(that.weight) > 0) {
that.$emit("handleBle", that.weight, that.unit, that.kcal) that.$emit("handleBle", that.weight, that.unit, that.kcal)
} else { } else {
that.$tools.msg(that.$t("Remeasure")) that.$tools.msg("数据异常,请清零后重新测量!")
} }
}, },
handleBack() { handleBack() {
let that = this let that = this
that.$store.commit("changeBluetoothValue", { that.$store.commit("changeBluetoothValue", {
bleTipsText: that.$t("ConnectionTimeout"), bleTipsText: "连接失败,点击重新连接",
unitList: that.$json.unitMinus, unitList: that.$json.unitMinus,
isConnectStatus: 1, isConnectStatus: 1,
foodType: 1 foodType: 1

View File

@ -1,54 +1,42 @@
<template> <template>
<view class="content"> <view class="content-box">
<view v-if="!token" class="list2" @click="handleLogin()">
<view class="nolist">
<icon class="iconfont icon-zanwushuju"></icon>
<text>{{$t('msgLoginTips')}}</text>
</view>
<view class="btn">{{$t('titleLogin')}}</view>
</view>
<view v-else class="content_box">
<!-- 每日摄入 -->
<view class="box" v-if="user.aud_id!=''">
<!-- 日期选择 --> <!-- 日期选择 -->
<view class="data"> <view class="data">
<picker mode="date" fields="day" :end="endDate" @change="changeClickDate" <picker mode="date" :end="endDate" @change="changeClickDate" :value="data?data:endDate">
:value="data?data:endDate">
<view> <view>
{{data?data:$t("verifyPicker")}} {{data?data:"请选择"}}
<image src="/static/qie.png"></image> <image src="/static/qie.png"></image>
</view> </view>
</picker> </picker>
</view> </view>
<!-- 称重 --> <!-- 称重 -->
<view class="blue-tooth" v-if="user.aud_id!=''&& isBle"> <view class="blue-tooth" v-if="user.aud_id!=''">
<blue-tooth :btnType="btnType"></blue-tooth> <blue-tooth :btnType="btnType"></blue-tooth>
</view> </view>
<!-- 能量摄入 --> <!-- 能量摄入 -->
<view class="everyDay box_shadow"> <view class="everyDay">
<view class="title"> <view class="title">
<view><text class="quan"></text>{{$t("countCalorieIntake")}}</view> <view><text class="quan"></text>热量摄入</view>
<view class="icon" @click="handleSet"> <view class="icon" @click="handleSet">
<uni-icons type="gear" size="26"></uni-icons> <uni-icons type="gear" size="26"></uni-icons>
</view> </view>
</view> </view>
<view class="jishiqi"> <view class="jishiqi">
<view class="left" v-if="foodInfo.list.length"> <view class="left">
<view class="chart-wrap"> <view class="chart-wrap">
<view class="charts-box"> <view class="charts-box" v-if="handTrue">
<qiun-data-charts type="arcbar" :chartData="chartData" :canvas2d="true" <qiun-data-charts type="arcbar" :chartData="chartData" :canvas2d="true"
canvasId="foodCharts01" /> canvasId="foodCharts01" />
</view> </view>
<view class="center"> <view class="center">
{{$t("countIntake")}} 摄入
<text>{{foodInfo.nutrients_four[0].today_intake}}</text> <text>{{foodInfo.nutrients_four[0].today_intake}}</text>
<view class="unit">Kcal</view> <view class="unit">Kcal</view>
</view> </view>
</view> </view>
<view class="mubiao"> <view class="mubiao">
{{$t("target")}}<text>{{foodInfo.nutrients_four[0].suggestion}}</text>kcal 目标<text>{{foodInfo.nutrients_four[0].suggestion}}</text>kcal
</view> </view>
</view> </view>
<view class="right"> <view class="right">
@ -83,14 +71,14 @@
<text>{{item.val}}{{item.unit}}</text> <text>{{item.val}}{{item.unit}}</text>
</view> </view>
<view class="detail"> <view class="detail">
{{$t("titleEveryMeal")}} 餐食详情
<uni-icons type="forward" size="20" color="#999"></uni-icons> <uni-icons type="forward" size="20" color="#999"></uni-icons>
</view> </view>
</view> </view>
<view class="list"> <view class="list">
<uni-swipe-action> <uni-swipe-action>
<uni-swipe-action-item v-for="(ite,ind) in item.list" :key="ind" <uni-swipe-action-item v-for="(ite,ind) in item.list" :key="ind" :right-options="actionOptions"
:right-options="actionOptions" @click="delAcitionItem(ite)"> @click="delAcitionItem(ite)">
<view class="item" @click="showFoodDetail(ite)"> <view class="item" @click="showFoodDetail(ite)">
<image :src="ite.pic_url" mode="aspectFill"></image> <image :src="ite.pic_url" mode="aspectFill"></image>
<view class="weight"> <view class="weight">
@ -101,39 +89,28 @@
</uni-swipe-action-item> </uni-swipe-action-item>
</uni-swipe-action> </uni-swipe-action>
<view class="add" @click="handleAddFood(item.name)"> <view class="add" @click="handleAddFood(item.name)">
<text>+</text>{{$t("countAddFood")}} <text>+</text>添加食物
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<!-- 营养分析 --> <view class="fenxi" @click="navTo('/Food/count/everyDay?page=count')">
<view class="fenxi box_shadow" @click="navTo('/Food/count/everyDay?page=count')">
<image src="/static/fenxi.png"></image> <image src="/static/fenxi.png"></image>
{{$t("titleeveryDay")}} 营养分析
</view> </view>
<!-- 搜索 --> <!-- 搜索 -->
<view class="serachBox "> <view class="serachBox">
<view class="title"> <view class="title">
<view class="quan mr-5"></view>{{$t("teach")}} <view class="quan mr-5"></view>教你做
</view> </view>
<view class="searchInput box_shadow"> <view class="searchInput">
<div class="search-wrap" @click="navTo('/Food/search/search')"> <div class="search-wrap" @click="navTo('/Food/search/search')">
<text>{{$t("SearchRecipes")}}</text> <text>输入食材快速搜索菜谱</text>
<image src="/static/28.png"></image> <image src="/static/28.png"></image>
</div> </div>
</view> </view>
</view> </view>
</view>
<!-- m没有成员时先添加成员 -->
<view v-else class="list2" @click="handleEditUser()">
<view class="nolist">
<image src="/static/none.png"></image>
<text>{{$t('msgAddUser')}}</text>
</view>
<view class="btn">{{$t('ImproveInformation')}}</view>
</view>
</view>
<!-- 营养含量分析 --> <!-- 营养含量分析 -->
<view v-if="drawerVisible" class="drawerVisible"> <view v-if="drawerVisible" class="drawerVisible">
<view class="bgVisible" @click="handleDrawerClose"></view> <view class="bgVisible" @click="handleDrawerClose"></view>
@ -144,11 +121,11 @@
<image :src="activeFoodDetail.pic_url" mode="aspectFill"></image> <image :src="activeFoodDetail.pic_url" mode="aspectFill"></image>
<view class="info"> <view class="info">
<view class="name">{{activeFoodDetail.name}}</view> <view class="name">{{activeFoodDetail.name}}</view>
<view class="kcal">{{activeFoodDetail.val}}kcal</view> <view class="kcal">{{activeFoodDetail.val}}千卡</view>
</view> </view>
</view> </view>
<view class="foodContent"> <view class="foodContent">
<view class="title">{{$t("CaloriesAndnutrients")}}</view> <view class="title">热量和营养</view>
<view class="progress"> <view class="progress">
<div class="chart-wrap" v-if="chartVisible"> <div class="chart-wrap" v-if="chartVisible">
<qiun-data-charts type="ring" :opts="opts" :chartData="chartData2" :cHeight="280" <qiun-data-charts type="ring" :opts="opts" :chartData="chartData2" :cHeight="280"
@ -164,8 +141,8 @@
</view> </view>
</view> </view>
<view class="tips"> <view class="tips">
<text>{{$t("Nutrients")}}</text> <text>营养素</text>
<text>{{activeFoodDetail.weight}}{{$t("Content")}}</text> <text>{{activeFoodDetail.weight}}含量</text>
</view> </view>
<view class="foodDetailList"> <view class="foodDetailList">
<view class="foodDetailItem" v-for="(item,index) in activeFoodDetail.nutrients_list" <view class="foodDetailItem" v-for="(item,index) in activeFoodDetail.nutrients_list"
@ -180,13 +157,6 @@
</scroll-view> </scroll-view>
</view> </view>
</view> </view>
<view class="f_banner footbox" v-if="configInfo.bannerFoot.length">
<swiper class="swiper" circular="true">
<swiper-item v-for="(ite,index) in configInfo.bannerFoot" @click="$tools.NewsPtype(ite)">
<image :src="ite.pic" mode="aspectFill"></image>
</swiper-item>
</swiper>
</view>
</view> </view>
</template> </template>
@ -216,14 +186,14 @@
}] }]
}, },
data: '', data: '',
isBle: false, isBle: true,
handTrue: false, handTrue: false,
chartData2: {}, chartData2: {},
activeFoodDetail: {}, activeFoodDetail: {},
drawerVisible: false, drawerVisible: false,
chartVisible: false, // chartVisible: false, //
actionOptions: [{ actionOptions: [{
text: this.$t("btnDelete"), text: '删除',
style: { style: {
backgroundColor: '#dd524d', backgroundColor: '#dd524d',
borderRadius: '10rpx' borderRadius: '10rpx'
@ -248,35 +218,15 @@
}, },
foodInfo() { foodInfo() {
let that = this let that = this
that.handTrue = false
that.$nextTick(() => { that.$nextTick(() => {
that.isBle = true that.handTrue = true
that.chartData.series[0].data = that.user.aud_id ? Number(that.countFoodInfo.nutrients_four[0] that.chartData.series[0].data = that.user.aud_id ? Number(that.countFoodInfo.nutrients_four[0].proportion) / 100 : 0
.proportion) / 100 : 0
}) })
that.data = that.user.aud_id ? that.countFoodInfo.date : that.$tools.getDate("start") 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 return that.user.aud_id ? that.countFoodInfo : that.configInfo.default_count_foot
} }
}, },
onLoad() {
let that = this
uni.setNavigationBarTitle({
title: this.$t('titleDiet'),
})
},
onShow() {
let that = this
that.token = uni.getStorageSync('token')
},
onPullDownRefresh() {
let that = this
that.$store.dispatch("getCountFoodInfo", {
aud_id: that.user.aud_id,
time: that.tools.getDate("start")
})
setTimeout(function() {
uni.stopPullDownRefresh();
}, 500);
},
methods: { methods: {
// //
showFoodDetail(item) { showFoodDetail(item) {
@ -338,12 +288,6 @@
url url
}) })
}, },
//
handleEditUser() {
uni.navigateTo({
url: "/body/my/userInfo.vue"
})
},
handleDrawerClose() { handleDrawerClose() {
// //
this.chartVisible = false this.chartVisible = false
@ -353,9 +297,7 @@
delAcitionItem(item) { delAcitionItem(item) {
let that = this let that = this
uni.showModal({ uni.showModal({
content: that.$t("WhetherTodelete") + item.name + '', content: `是否删除[${item.name}]`,
cancelText: that.$t("btnSancellation"), //
confirmText: that.$t("btnConfirm"), //
success: (res) => { success: (res) => {
if (res.confirm) { if (res.confirm) {
this.$model.delCEatAction({ this.$model.delCEatAction({
@ -381,9 +323,10 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.content_box { .content-box {
width: 100%; padding-top: 15px;
margin: 15px 0; padding-bottom: 15px;
background: #f7f7f7;
} }
.serachBox { .serachBox {
@ -526,7 +469,6 @@
} }
} }
} }
.charts-box { .charts-box {
width: 250rpx; width: 250rpx;
height: 250rpx; height: 250rpx;

View File

@ -3,7 +3,7 @@
<view class="serachBox"> <view class="serachBox">
<view class="serach-box"> <view class="serach-box">
<view class="searchInput"> <view class="searchInput">
<input :placeholder="$t('verifyPicker')" class="city-serach-input" v-model="name" /> <input placeholder="请输入..." class="city-serach-input" v-model="name" />
<icon v-if="name" class="iconfont icon-error" @click="handlecolse"></icon> <icon v-if="name" class="iconfont icon-error" @click="handlecolse"></icon>
<view class="voice" v-if="voice && !name"> <view class="voice" v-if="voice && !name">
<uni-icons class="mic" type="mic-filled" size="26" @click="onMic"></uni-icons> <uni-icons class="mic" type="mic-filled" size="26" @click="onMic"></uni-icons>
@ -11,7 +11,7 @@
</view> </view>
</view> </view>
<view class="searchBtn"> <view class="searchBtn">
<view @click="handleSerach">{{$t("Search")}}</view> <view @click="handleSerach">搜索</view>
</view> </view>
</view> </view>
</view> </view>

View File

@ -0,0 +1,147 @@
<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>

View File

@ -0,0 +1,223 @@
<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>

View File

@ -0,0 +1,376 @@
<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>

View File

@ -0,0 +1,148 @@
<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>

View File

@ -0,0 +1,133 @@
<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>

View File

@ -4,7 +4,7 @@
<view class="pre" @click="changeMonth('pre')"> <view class="pre" @click="changeMonth('pre')">
<uni-icons type="back" size="26"></uni-icons> <uni-icons type="back" size="26"></uni-icons>
</view> </view>
<view>{{y+'-'+formatNum(m)}}</view> <view>{{y+''+formatNum(m)+'月'}}</view>
<view class="next" @click="changeMonth('next')"> <view class="next" @click="changeMonth('next')">
<uni-icons type="forward" size="26"></uni-icons> <uni-icons type="forward" size="26"></uni-icons>
</view> </view>

View File

@ -1,192 +0,0 @@
{
"友情提示",
"升级失败",
"正在下载",
"已经是最新版本了!",
"您已取消操作!",
"登录成功!",
"删除成功",
"设置成功",
"到底了,看看别的吧",
"暂无数据!",
"密码设置成功,进入程序中!",
"暂无成员,请先添加",
"请输入昵称",
"未来日期不可选",
"请选择测量日期",
"请选择出生日期",
"请输入身高",
"请输入体重",
"请选择性别",
"请选择数据",
"请选择正确的时间",
"请输入",
"请选择",
"请输入正确的手机号或邮箱",
"请输入邮箱",
"请输入正确的邮箱",
"请输入手机号",
"请输入正确的手机号",
"请输入验证码",
"请输入密码",
"请输入用时",
"请确认密码",
"请确认两次密码填写一致",
"请先确认并勾选协议",
"是否退出登录?",
"是否删除该成员?",
"是否删除当前测量记录?",
"删除成功后,该账号的所有关联信息将被清空且无法找回,是否删除?",
"确定",
"提交",
"取消",
"继续",
"返回",
"删除",
"连接失败,点击重新连接",
"测量中,请将食物放到秤上",
"连接成功",
"请先连接设备",
"重量",
"请输入食物重量",
"蓝牙连接中",
"蓝牙搜索中",
"数据异常,请重新测量!",
"数据异常,请清零后重新测量!",
"重新测量",
"稳定重量",
"您的稳定体重是:",
"实时重量",
"您的实时体重是:",
"您的身高是",
"清零",
"锁定",
"保存结果",
"测量结果提示",
"本次测量体重是",
"上次测量身高是:",
"上次测量体重是:",
"本次测量身高是:",
"上次测量头围是:",
"操作错误,请重新测量",
"断开连接",
"清零",
"单位",
"首页",
"菜谱",
"添加食谱",
"搜索菜谱",
"计食",
"食材库",
"自定义卡路里",
"餐食详情",
"食材搜索",
"营养分析",
"我的",
"详情",
"饮食记录",
"绑定手机号",
"绑定邮箱",
"修改密码",
"设置",
"日期",
"资料",
"成员管理",
"添加成员",
"关于我们",
"设置密码",
"密码",
"确认密码",
"忘记密码",
"验证码",
"语言设置",
"获取验证码",
"S后重发",
"登录",
"注册",
"切换登录",
"手机号/邮箱",
"阅读并同意",
"隐私协议",
"版本更新",
"新版本",
"活动系数",
"个人资料",
"我的菜谱",
"我的收藏",
"头像",
"昵称",
"手机号",
"邮箱",
"年龄",
"岁",
"性别",
"男",
"女",
"未知",
"出生日期",
"身高",
"体重",
"编辑",
"添加",
"查看详情",
"删除账号",
"退出登录",
"摄入",
"热量摄入",
"餐食详情",
"添加食物",
"营养占比",
"成分统计",
"卡路里分析",
"营养元素能量占比",
"营养分类",
"营养元素排行榜",
"食物类型",
"共",
"条记录",
"搜索",
"语音搜索",
"保存",
"没有更多数据了",
"历史搜索",
"猜你想搜",
"请输入卡路里",
"卡路里",
"暂无食物",
"登录后查看更多",
"营养素",
"含量",
"热量和营养",
"完善信息",
"是否删除",
"商务合作",
"请选择活动系数",
"设备未登记,请联系出售方进行系统认证",
"千克",
"克",
"盎司",
"毫升",
"磅",
"milkml",
"Waterml",
"floz",
"lboz",
"st:lb",
"健康",
"饮食",
"运动",
"中招估分",
"开始估分",
"本次估分成绩",
"深度报告",
"头围",
"请输入头围",
"请输入爸爸身高",
"请输入妈妈身高",
"请选择测量项目",
"请输入时长",
"请输入个数",
"测量记录",
}

192
key.json
View File

@ -1,192 +0,0 @@
{
"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",
"verifyTime",
"verifyPasswordTwo",
"verifyPasswordCorrect",
"verifyAgreement",
"verifyOutLogin",
"verifyDeleteUser",
"verifyDeleteHistory",
"verifyDeleteAccount",
"btnConfirm",
"btnSubmit",
"btnSancellation",
"btnContinue",
"btnBack",
"btnDelete",
"ConnectionTimeout",
"Measuring",
"ConnectionSuccessful",
"connectingDevice",
"Weight",
"RecordWeight",
"connectBluetooth",
"SearchBluetooth",
"Remeasure",
"reset",
"remeasure",
"StableWeight",
"StableWeightText": ":",
"realTimeWeight",
"realTimeWeightText",
"heightText",
"zeroBtn",
"LockBtn",
"SaveResult",
"measureResultTips",
"nowWeight",
"lastHeight",
"lastWeight",
"nowHeight",
"lastHead",
"errorOperation",
"Disconnect",
"resetBtn",
"UnitBtn",
"titleHome",
"titleMenu",
"titleMenuAdd",
"titleMenuSearch",
"titleCount",
"titleCountList",
"titleCustomKcal",
"titleEveryMeal",
"titleCountSearch",
"titleeveryDay",
"titleMe",
"titleDetail",
"titleHistory",
"titlePhone",
"titleEmail",
"titlePasswordEdit",
"titleSet",
"titleDate",
"titleMember",
"titleManage",
"titleManageAdd",
"titleAboutUs",
"titleSetPassword",
"titlePassword",
"titleConfirmPassword",
"titleForgotPassword",
"titleCode",
"titleLanguage",
"titleSendCode",
"titleSendCodeRetry",
"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",
"Waterml",
"floz",
"lboz",
"st",
"titleHealth",
"titleDiet",
"titleExercise",
"titleScore",
"titleStartScore",
"titleScoreResult",
"titleDepthReport",
"infoHead",
"verifyHead",
"verifyHeightDad",
"verifyHeightMom",
"verifyRecordType",
"verifyRecordTime",
"verifyRecordNumber",
"measuringRecord",
}

View File

@ -1,319 +0,0 @@
{
"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": "الرجاء إدخال كلمة المرور",
"verifyTime": "الرجاء إدخال الوقت المستغرق",
"verifyPasswordTwo": "الرجاء تأكيد كلمة المرور",
"verifyPasswordCorrect": "الرجاء التأكد من تطابق كلمتي المرور",
"verifyAgreement": "الرجاء الموافقة والاختيار على الاتفاقية أولاً",
"verifyOutLogin": "هل تريد تسجيل الخروج؟",
"verifyDeleteUser": "هل تريد حذف هذا العضو؟",
"verifyDeleteHistory": "هل تريد حذف سجل القياس الحالي؟",
"verifyDeleteAccount": "بعد الحذف بنجاح، سيتم مسح جميع المعلومات المرتبطة بهذا الحساب ولا يمكن استردادها، هل تريد الحذف؟",
"btnConfirm": "تأكيد",
"btnSubmit": "إرسال",
"btnSancellation": "إلغاء",
"btnContinue": "متابعة",
"btnBack": "رجوع",
"btnDelete": "حذف",
"ConnectionTimeout": "فشل الاتصال، انقر لإعادة الاتصال",
"Measuring": "جارٍ القياس، الرجاء وضع الطعام على الميزان",
"ConnectionSuccessful": "تم الاتصال بنجاح",
"connectingDevice": "الرجاء توصيل الجهاز أولاً",
"Weight": "الوزن",
"RecordWeight": "الرجاء إدخال وزن الطعام",
"connectBluetooth": "جارٍ الاتصال بالبلوتوث",
"SearchBluetooth": "جارٍ البحث عن البلوتوث",
"Remeasure": "البيانات غير طبيعية، الرجاء القياس مرة أخرى!",
"reset": "البيانات غير طبيعية، الرجاء الضبط على الصفر ثم القياس مرة أخرى!",
"remeasure": "إعادة القياس",
"StableWeight": "الوزن المستقر",
"StableWeightText": "وزنك المستقر هو:",
"realTimeWeight": "الوزن اللحظي",
"realTimeWeightText": "وزنك اللحظي هو:",
"heightText": "طولك هو",
"zeroBtn": "ضبط الصفر",
"LockBtn": "قفل",
"SaveResult": "حفظ النتيجة",
"measureResultTips": "تلميحات نتيجة القياس",
"nowWeight": "وزن هذا القياس هو",
"lastHeight": "طول القياس السابق هو:",
"lastWeight": "وزن القياس السابق هو:",
"nowHeight": "طول هذا القياس هو:",
"lastHead": "محيط رأس القياس السابق هو:",
"errorOperation": "خطأ في العملية، الرجاء القياس مرة أخرى",
"Disconnect": "قطع الاتصال",
"resetBtn": "ضبط الصفر",
"UnitBtn": "الوحدة",
"titleHome": "الصفحة الرئيسية",
"titleMenu": "الوصفات",
"titleMenuAdd": "إضافة وصفة",
"titleMenuSearch": "بحث عن وصفات",
"titleCount": "عد الطعام",
"titleCountList": "مخزن المكونات",
"titleCustomKcal": "تخصيص السعرات الحرارية",
"titleEveryMeal": "تفاصيل الوجبة",
"titleCountSearch": "بحث عن المكونات",
"titleeveryDay": "تحليل التغذية",
"titleMe": "حسابي",
"titleDetail": "التفاصيل",
"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": "مليلتر حليب",
"Waterml": "مليلتر ماء",
"floz": "أونصة سائلة",
"lboz": "رطل:أونصة",
"st": "ستون:رطل",
"titleHealth": "الصحة",
"titleDiet": "النظام الغذائي",
"titleExercise": "التمارين",
"titleScore": "تقدير درجة الاختبار",
"titleStartScore": "بدء التقدير",
"titleScoreResult": "نتيجة التقدير هذه",
"titleDepthReport": "تقرير مفصل",
"infoHead": "محيط الرأس",
"verifyHead": "الرجاء إدخال محيط الرأس",
"verifyHeightDad": "الرجاء إدخال طول الأب",
"verifyHeightMom": "الرجاء إدخال طول الأم",
"verifyRecordType": "الرجاء اختيار عنصر القياس",
"verifyRecordTime": "الرجاء إدخال المدة",
"verifyRecordNumber": "الرجاء إدخال العدد",
"measuringRecord": "سجل القياسات",
"newVersion": "تم اكتشاف إصدار جديد",
"IsUpdate": "هل تريد التحديث؟",
"msgCalculating": "جارٍ الحساب",
"titleSkipping": "بيانات القفز بالحبل",
"titlevVitalcapacity": "بيانات السعة الحيوية",
"titleCharts": "منحنى التمارين",
"titleContrast": "مقارنة البيانات",
"UpdateProgram": "يمكن تحديث التطبيق لاحقاً في 'معلومات عنا'!",
"lungsuctionspeed": "سرعة الشهيق",
"averagelungsuction": "متوسط سعة الشهيق",
"isMarginal": "هل يستوفي المعيار",
"today_jump_num": "عدد اليوم",
"today_jump_time": "مدة اليوم",
"today_jump_kcal": "سعرة حرارية",
"jumpFree": "قفز حر",
"backwardCount": "عد تنازلي",
"Countdown": "عد تنازلي",
"jumpFreedom": "حر",
"jumpFreeDegree": "مرات حرة",
"jumpFreeNumber": "العدد",
"jumpTargetDegree": "عدد المرات المستهدف",
"jumpUnlimited": "غير محدود",
"jumpTarget": "تعديل الهدف",
"jumpTargetTime": "الوقت المستهدف دقيقة:ثانية",
"MinuteSecond": "دقيقة:ثانية",
"Consumed": "مستهلك",
"LongpressEnd": "اضغط مطولاً للإنهاء",
"AverageSpeed": "متوسط السرعة",
"Unit": "عدد/الدقيقة",
"Numberofinterrupts": "عدد الانقطاعات",
"Times": "مرة",
"LongestConsecutive": "أطول تتابع",
"Number": "عدد",
"trainingsNumber": "عدد التدريبات",
"complete": "إكمال",
"instructStart": "بدء",
"instructContinuous": "مستمر",
"instructStop": "توقف",
"instructEnd": "نهاية",
"instructContinue": "متابعة",
"instructPause": "إيقاف مؤقت",
"linkBluetoothFail": "تم قطع الاتصال",
"deviceDisconnection": "انقطع الاتصال بالجهاز أثناء التدريب، الرجاء إعادة الاتصال بالجهاز قبل بدء التدريب",
"ToggleTrainingsTips": "الرجاء عدم تبديل التدريبات أثناء التدريب، العودة للتدريب",
"NOComplete": "مدة القفز بالحبل هذه أقل من 10 ثوانٍ، لن يتم حفظ التسجيل؟",
"growthAdvice": "نصيحة النمو",
"nutrition": "التغذية",
"sleep": "النوم",
"movement": "الحركة",
"emotion": "المشاعر",
"manualRecording": "تسجيل يدوي",
"inheritHeighet.title": "توقع الطول",
"inheritHeighet.dad": "طول الأب",
"inheritHeighet.mom": "طول الأم",
"inheritHeighet.geneticheight": "الطول القياسي الحالي",
"inheritHeighet.adultheight": "توقع الطول عند البلوغ",
"inheritHeighet.tips0": "لضمان دقة البيانات، يرجى ملء المعلومات الحقيقية بعناية",
"inheritHeighet.tips1": "إذا كان الطول الفعلي الحالي < الطول القياسي الحالي",
"inheritHeighet.tips2": "بيئة النمو الخلفية غير مواتية للنمو. يرجى التحقق من النظام الغذائي والنوم والرياضة والمشاعر وغيرها. عزز إدارة العوامل الخلفية لمساعدة الطفل على تحقيق أفضل حالة نمو.",
"inheritHeighet.tips3": "إذا كان الطول الفعلي الحالي > الطول القياسي الحالي",
"inheritHeighet.tips4": "بيئة النمو الخلفية مواتية للنمو. الرجاء الحفاظ عليها، وتعزيز إدارة العوامل الخلفية، فقد يكون طول الطفل عند البلوغ أعلى بـ 10 سم من المعيار.",
"time": "الزمن (بالأيام)",
"weightdiff": "فقدان الوزن",
"weightdiffAugment": "زيادة الوزن",
"fatWdiff": "فقدان الدهون",
"fatWdiffAugment": "زيادة الدهون",
"changeData": "تغيير البيانات",
"trend": "الاتجاه",
"before": "قبل",
"after": "بعد",
"target_weight": "الوزن المستهدف",
"cumulative_weight_gain": "إجمالي زيادة الوزن",
"cumulative_weight": "إجمالي فقدان الوزن",
"initial_weight": "الوزن الأولي",
"cumulative_day": "أيام فقدان الوزن",
"chartsDay": "اليوم",
"chartsMonth": "شهرياً",
"chartsYear": "سنوياً",
"recordType": "العنصر",
"recordTime": "المدة",
"recordNumber": "العدد",
"recordNumberFirst": "الأولى",
"recordNumberSecond": "الثانية",
"recordNumberThird": "الثالثة",
"linkBluetoothFail2": "انقطع اتصال البلوتوث، الرجاء إعادة الاتصال ثم القياس",
"Ideal": "مثالي",
"addRecord": "إضافة سجل",
"HistoricalRcord": "السجل التاريخي",
"TimeSpent": "الوقت المستغرق",
"minutes": "دقيقة",
"btnBMI": "احسب الآن",
"Record": "سجل",
"depthReport": "تقرير مفصل",
"Enter": "دخول",
"target": "الهدف",
"teach": "أعلمك كيفية القيام بذلك",
"SearchRecipes": "أدخل المكونات للبحث السريع عن الوصفات",
"RecipeType": "نوع الوصفة",
"linkWeighing": "الاتصال للقياس",
"Collection": "المحفوظات",
"Ingredients": "المكونات",
"Suggestions": "اقتراحات",
"Calories": "السعرات الحرارية",
"remeasure2": "إعادة الوزن",
"CurrentlyWeighing": "جارٍ الوزن",
"TodayMeals": "هل تريد الحفظ كطعام اليوم؟",
"SavedSuccessfully": "تم الحفظ بنجاح",
"ImproveData": "اكمل بياناتك لمشاهدة المزيد",
"KeyWords": "أدخل الكلمات الرئيسية للبحث عن الوصفات",
"KeyWordsSearch": "أدخل الكلمات الرئيسية ثم ابحث",
"nextFlavor": "النكهة التالية",
"option": "اختيار العنصر",
"verifyOption": "الرجاء اختيار العنصر",
"justDta": "الرجاء إدخال بيانات صحيحة",
"infoNowUser": "حالي",
"HealthScore": "درجة الصحة",
"StandardValue": "القيمة القياسية",
"bodyData": "بيانات الجسم",
"titleInheritHeighet": "توقع الطول",
"titleBmi": "تقييم مؤشر كتلة الجسم",
"linkBluetoothSuccess": "تم الاتصال بنجاح، الرجاء الوقوف على الميزان للقياس",
"onDeviceBluetoothTips": "تأكد من تشغيل الجهاز",
"openDeviceeMeasureTips": "تأكد من تشغيل البلوتوث ومعلومات الموقع على الهاتف",
"msgSuccess": "تم القياس بنجاح",
"msgFail": "فشل القياس",
"msgResetData": "جارٍ إعادة تعيين البيانات",
"FatFailure":"فشل قياس دهون الجسم، هل تريد حفظ نتيجة هذا القياس؟",
"waive":"تخلي"
}

View File

@ -1,319 +0,0 @@
{
"msgTitle": "Freundlicher Hinweis",
"msgUpgradeFail": "Aktualisierung fehlgeschlagen",
"msgDownloading": "Wird heruntergeladen",
"msgLatestVersion": "Bereits die neueste Version!",
"msgCancel": "Sie haben den Vorgang abgebrochen!",
"msgLoginSuccess": "Anmeldung erfolgreich!",
"msgDelete": "Erfolgreich gelöscht",
"msgSetSuccess": "Einstellung erfolgreich",
"msgBottom": "Ende erreicht, sehen Sie sich etwas anderes an",
"msgNoMoreData": "Derzeit keine Daten verfügbar!",
"msgSetPasswordSuccess": "Passwort erfolgreich gesetzt, Eintritt in das Programm!",
"msgAddUser": "Keine Mitglieder vorhanden, bitte zuerst hinzufügen",
"verifyNickName": "Bitte geben Sie einen Spitznamen ein",
"verifyNotOptional": "Zukünftige Daten sind nicht auswählbar",
"verifyDate": "Bitte wählen Sie das Messdatum",
"verifyBirthday": "Bitte wählen Sie das Geburtsdatum",
"verifyHeight": "Bitte geben Sie die Körpergröße ein",
"verifyWeight": "Bitte geben Sie das Gewicht ein",
"verifyGender": "Bitte wählen Sie das Geschlecht",
"verifyBontrast": "Bitte wählen Sie Daten aus",
"verifyBodyDate": "Bitte wählen Sie die richtige Zeit",
"verifyRecord": "Bitte eingeben",
"verifyPicker": "Bitte wählen Sie",
"verifyAccount": "Bitte geben Sie eine korrekte Handynummer oder E-Mail-Adresse ein",
"verifyEmail": "Bitte geben Sie eine E-Mail-Adresse ein",
"verifyEmailCorrect": "Bitte geben Sie eine korrekte E-Mail-Adresse ein",
"verifyMobile": "Bitte geben Sie eine Handynummer ein",
"verifyMobileCorrect": "Bitte geben Sie eine korrekte Handynummer ein",
"verifyCode": "Bitte geben Sie den Bestätigungscode ein",
"verifyPassword": "Bitte geben Sie ein Passwort ein",
"verifyTime": "Bitte geben Sie die benötigte Zeit ein",
"verifyPasswordTwo": "Bitte bestätigen Sie das Passwort",
"verifyPasswordCorrect": "Bitte stellen Sie sicher, dass beide Passwörter übereinstimmen",
"verifyAgreement": "Bitte bestätigen und stimmen Sie zuerst der Vereinbarung zu",
"verifyOutLogin": "Möchten Sie sich abmelden?",
"verifyDeleteUser": "Möchten Sie dieses Mitglied löschen?",
"verifyDeleteHistory": "Möchten Sie den aktuellen Messverlauf löschen?",
"verifyDeleteAccount": "Nach erfolgreicher Löschung werden alle mit diesem Konto verknüpften Informationen gelöscht und können nicht wiederhergestellt werden. Möchten Sie es löschen?",
"btnConfirm": "Bestätigen",
"btnSubmit": "Absenden",
"btnSancellation": "Abbrechen",
"btnContinue": "Fortsetzen",
"btnBack": "Zurück",
"btnDelete": "Löschen",
"ConnectionTimeout": "Verbindung fehlgeschlagen, zum erneuten Verbinden tippen",
"Measuring": "Messen, bitte legen Sie das Essen auf die Waage",
"ConnectionSuccessful": "Verbindung erfolgreich",
"connectingDevice": "Bitte verbinden Sie zuerst das Gerät",
"Weight": "Gewicht",
"RecordWeight": "Bitte geben Sie das Lebensmittelgewicht ein",
"connectBluetooth": "Bluetooth-Verbindung wird hergestellt",
"SearchBluetooth": "Bluetooth wird gesucht",
"Remeasure": "Daten abnormal, bitte erneut messen!",
"reset": "Daten abnormal, bitte zurücksetzen und erneut messen!",
"remeasure": "Erneut messen",
"StableWeight": "Stabiles Gewicht",
"StableWeightText": "Ihr stabiles Gewicht beträgt:",
"realTimeWeight": "Echtzeitgewicht",
"realTimeWeightText": "Ihr Echtzeitgewicht beträgt:",
"heightText": "Ihre Körpergröße beträgt",
"zeroBtn": "Zurücksetzen",
"LockBtn": "Sperren",
"SaveResult": "Ergebnis speichern",
"measureResultTips": "Messergebnishinweis",
"nowWeight": "Das diesmal gemessene Gewicht beträgt",
"lastHeight": "Die zuletzt gemessene Körpergröße beträgt:",
"lastWeight": "Das zuletzt gemessene Gewicht beträgt:",
"nowHeight": "Die diesmal gemessene Körpergröße beträgt:",
"lastHead": "Der zuletzt gemessene Kopfumfang beträgt:",
"errorOperation": "Bedienungsfehler, bitte erneut messen",
"Disconnect": "Verbindung trennen",
"resetBtn": "Zurücksetzen",
"UnitBtn": "Einheit",
"titleHome": "Startseite",
"titleMenu": "Rezepte",
"titleMenuAdd": "Rezept hinzufügen",
"titleMenuSearch": "Rezepte suchen",
"titleCount": "Essen zählen",
"titleCountList": "Zutatenbibliothek",
"titleCustomKcal": "Kalorien anpassen",
"titleEveryMeal": "Mahlzeitendetails",
"titleCountSearch": "Zutaten suchen",
"titleeveryDay": "Ernährungsanalyse",
"titleMe": "Mein",
"titleDetail": "Details",
"titleHistory": "Ernährungsverlauf",
"titlePhone": "Handynummer binden",
"titleEmail": "E-Mail binden",
"titlePasswordEdit": "Passwort ändern",
"titleSet": "Einstellungen",
"titleDate": "Datum",
"titleMember": "Profil",
"titleManage": "Mitgliederverwaltung",
"titleManageAdd": "Mitglied hinzufügen",
"titleAboutUs": "Über uns",
"titleSetPassword": "Passwort festlegen",
"titlePassword": "Passwort",
"titleConfirmPassword": "Passwort bestätigen",
"titleForgotPassword": "Passwort vergessen",
"titleCode": "Bestätigungscode",
"titleLanguage": "Spracheinstellung",
"titleSendCode": "Code anfordern",
"titleSendCodeRetry": "Erneut senden in S",
"titleLogin": "Anmelden",
"titleRegister": "Registrieren",
"titleToggleLogin": "Anmeldung wechseln",
"titleAccountText": "Handynummer/E-Mail",
"titleAgreementText": "Lesen und zustimmen",
"titleAgreementContntText": "Datenschutzvereinbarung",
"titleVersionUpdate": "Version aktualisieren",
"titleNewVersion": "Neue Version",
"infoActivityCoefficient": "Aktivitätskoeffizient",
"infoPersonalProfile": "Persönliches Profil",
"infoMyRecipes": "Meine Rezepte",
"infoMyCollection": "Meine Sammlung",
"infoAvatar": "Profilbild",
"infoNickname": "Spitzname",
"infoMobile": "Handynummer",
"infoEmail": "E-Mail",
"infoAge": "Alter",
"infoAgeunit": "Jahre",
"infoGender": "Geschlecht",
"infoMan": "Männlich",
"infoWoman": "Weiblich",
"infoUnknown": "Unbekannt",
"infoBirthday": "Geburtsdatum",
"infoHeight": "Körpergröße",
"infoWeight": "Gewicht",
"btnEdit": "Bearbeiten",
"btnAdd": "Hinzufügen",
"btnDetail": "Details anzeigen",
"btnDeleteAccount": "Konto löschen",
"btnLogOut": "Abmelden",
"countIntake": "Aufnahme",
"countCalorieIntake": "Kalorienaufnahme",
"countMealdetails": "Mahlzeitendetails",
"countAddFood": "Essen hinzufügen",
"countNutritionalProportion": "Nährstoffanteil",
"countComponentStatistics": "Komponentenstatistik",
"countCalorieAnalysis": "Kalorienanalyse",
"countNutrientElementEnergyProportion": "Energieanteil der Nährstoffe",
"countNutritionClassification": "Nährstoffklassifizierung",
"countNutritionElementRankingList": "Nährstoff-Rangliste",
"countFoodTypes": "Lebensmitteltyp",
"total": "Insgesamt",
"records": "Einträge",
"Search": "Suchen",
"VoiceSearch": "Sprachsuche",
"Save": "Speichern",
"noMoreData": "Keine weiteren Daten",
"HistoricalSearch": "Suchverlauf",
"wantSearch": "Vielleicht suchen Sie nach",
"verifyCalorie": "Bitte geben Sie die Kalorien ein",
"kcal": "Kalorien",
"countNoFood": "Derzeit keine Lebensmittel",
"msgLoginTips": "Nach der Anmeldung mehr anzeigen",
"Nutrients": "Nährstoffe",
"Content": "Gehalt",
"CaloriesAndnutrients": "Kalorien und Nährstoffe",
"ImproveInformation": "Informationen vervollständigen",
"WhetherTodelete": "Ob löschen",
"BusinessCooperation": "Geschäftliche Zusammenarbeit",
"verifyActivityCoefficient": "Bitte wählen Sie den Aktivitätskoeffizienten",
"devicesTips": "Gerät nicht registriert, bitte wenden Sie sich an den Verkäufer zur Systemzertifizierung",
"kg": "Kilogramm",
"g": "Gramm",
"oz": "Unze",
"ml": "Milliliter",
"lb": "Pfund",
"milkml": "Milch ml",
"Waterml": "Wasser ml",
"floz": "Flüssigunze",
"lboz": "Pfund:Unze",
"st": "st:lb",
"titleHealth": "Gesundheit",
"titleDiet": "Ernährung",
"titleExercise": "Sport",
"titleScore": "Punktschätzung",
"titleStartScore": "Punkte schätzen",
"titleScoreResult": "Dieses geschätzte Ergebnis",
"titleDepthReport": "Detaillierter Bericht",
"infoHead": "Kopfumfang",
"verifyHead": "Bitte geben Sie den Kopfumfang ein",
"verifyHeightDad": "Bitte geben Sie die Größe des Vaters ein",
"verifyHeightMom": "Bitte geben Sie die Größe der Mutter ein",
"verifyRecordType": "Bitte wählen Sie den Messpunkt",
"verifyRecordTime": "Bitte geben Sie die Dauer ein",
"verifyRecordNumber": "Bitte geben Sie die Anzahl ein",
"measuringRecord": "Messverlauf",
"newVersion": "Neue Version gefunden",
"IsUpdate": "Aktualisieren?",
"msgCalculating": "Wird berechnet",
"titleSkipping": "Seilspringdaten",
"titlevVitalcapacity": "Lungenkapazitätsdaten",
"titleCharts": "Sportkurve",
"titleContrast": "Datengleichstellung",
"UpdateProgram": "Später können Sie das Programm unter 'Über uns' aktualisieren!",
"lungsuctionspeed": "Einatmungsgeschwindigkeit",
"averagelungsuction": "Durchschnittliche Einatmungslungenkapazität",
"isMarginal": "Erfüllt den Standard",
"today_jump_num": "Heutige Anzahl",
"today_jump_time": "Heutige Dauer",
"today_jump_kcal": "Kalorien",
"jumpFree": "Freies Springen",
"backwardCount": "Rückwärtszählung",
"Countdown": "Countdown",
"jumpFreedom": "Frei",
"jumpFreeDegree": "Freie Anzahl",
"jumpFreeNumber": "Anzahl",
"jumpTargetDegree": "Zielanzahl",
"jumpUnlimited": "Keine Beschränkung",
"jumpTarget": "Ziel anpassen",
"jumpTargetTime": "Zieldauer Min:Sek",
"MinuteSecond": "Min:Sek",
"Consumed": "Verbraucht",
"LongpressEnd": "Zum Beenden lange drücken",
"AverageSpeed": "Durchschnittsgeschwindigkeit",
"Unit": "pro Minute",
"Numberofinterrupts": "Unterbrechungen",
"Times": "Mal",
"LongestConsecutive": "Längste Serie",
"Number": "Stück",
"trainingsNumber": "Trainingsanzahl",
"complete": "Abgeschlossen",
"instructStart": "Start",
"instructContinuous": "Fortlaufend",
"instructStop": "Stopp",
"instructEnd": "Ende",
"instructContinue": "Weiter",
"instructPause": "Pause",
"linkBluetoothFail": "Verbindung getrennt",
"deviceDisconnection": "Die Verbindung zum Gerät wurde während des Trainings unterbrochen, bitte verbinden Sie das Gerät erneut, bevor Sie mit dem Training beginnen",
"ToggleTrainingsTips": "Bitte wechseln Sie nicht während des Trainings, zurück zum Training",
"NOComplete": "Die Seilspringzeit betrug weniger als 10 Sekunden, der Eintrag wird nicht gespeichert?",
"growthAdvice": "Wachstumsempfehlung",
"nutrition": "Ernährung",
"sleep": "Schlaf",
"movement": "Bewegung",
"emotion": "Emotionen",
"manualRecording": "Manuelle Aufzeichnung",
"inheritHeighet.title": "Größenvorhersage",
"inheritHeighet.dad": "Größe des Vaters",
"inheritHeighet.mom": "Größe der Mutter",
"inheritHeighet.geneticheight": "Aktuelle Standardgröße",
"inheritHeighet.adultheight": "Vorhersage der Erwachsenengröße",
"inheritHeighet.tips0": "Für genaue Daten, geben Sie bitte sorgfältig korrekte Informationen ein",
"inheritHeighet.tips1": "Wenn die aktuelle tatsächliche Größe < aktuelle Standardgröße",
"inheritHeighet.tips2": "Das nachgeburtliche Wachstumsumfeld des Kindes ist ungünstig für das Wachstum. Bitte überprüfen Sie Ernährung, Schlaf, Bewegung, Emotionen usw. Verbessern Sie das Management der nachgeburtlichen Faktoren, um das Kind in den besten Wachstumszustand zu versetzen.",
"inheritHeighet.tips3": "Wenn die aktuelle tatsächliche Größe > aktuelle Standardgröße",
"inheritHeighet.tips4": "Das nachgeburtliche Wachstumsumfeld des Kindes ist günstig für das Wachstum. Bitte halten Sie dies aufrecht, verbessern Sie das Management der nachgeburtlichen Faktoren, das Kind kann im Erwachsenenalter mehr als 10 cm über dem Standard liegen.",
"time": "Zeit (Tage)",
"weightdiff": "Gewichtsabnahme",
"weightdiffAugment": "Gewichtszunahme",
"fatWdiff": "Fettabbau",
"fatWdiffAugment": "Fettzunahme",
"changeData": "Datenaenderung",
"trend": "Trend",
"before": "Vorher",
"after": "Nachher",
"target_weight": "Zielgewicht",
"cumulative_weight_gain": "Kumulierte Gewichtszunahme",
"cumulative_weight": "Kumulierte Gewichtsabnahme",
"initial_weight": "Anfangsgewicht",
"cumulative_day": "Tage der Gewichtsabnahme",
"chartsDay": "Heute",
"chartsMonth": "Monatlich",
"chartsYear": "Jährlich",
"recordType": "Projekt",
"recordTime": "Dauer",
"recordNumber": "Anzahl",
"recordNumberFirst": "Erstes Mal",
"recordNumberSecond": "Zweites Mal",
"recordNumberThird": "Drittes Mal",
"linkBluetoothFail2": "Bluetooth-Verbindung getrennt, bitte erneut verbinden und messen",
"Ideal": "Ideal",
"addRecord": "Eintrag hinzufügen",
"HistoricalRcord": "Verlauf",
"TimeSpent": "Benötigte Zeit",
"minutes": "Minuten",
"btnBMI": "Jetzt berechnen",
"Record": "Aufzeichnung",
"depthReport": "Detaillierter Bericht",
"Enter": "Eintreten",
"target": "Ziel",
"teach": "Lernen Sie, wie",
"SearchRecipes": "Zutaten eingeben, um schnell Rezepte zu finden",
"RecipeType": "Rezepttyp",
"linkWeighing": "Zum Messen verbinden",
"Collection": "Sammlung",
"Ingredients": "Zutaten",
"Suggestions": "Vorschläge",
"Calories": "Kalorien",
"remeasure2": "Erneut wiegen",
"CurrentlyWeighing": "Wird gerade gewogen",
"TodayMeals": "Als heutige Mahlzeit speichern?",
"SavedSuccessfully": "Erfolgreich gespeichert",
"ImproveData": "Nach Vervollständigung der Daten mehr anzeigen",
"KeyWords": "Schlüsselwörter eingeben, um Rezepte zu finden",
"KeyWordsSearch": "Nach Eingabe von Schlüsselwörtern suchen",
"nextFlavor": "Nächster Geschmack",
"option": "Projekt auswählen",
"verifyOption": "Bitte wählen Sie ein Projekt",
"justDta": "Bitte geben Sie korrekte Daten ein",
"infoNowUser": "Aktuell",
"HealthScore": "Gesundheitsbewertung",
"StandardValue": "Standardwert",
"bodyData": "Körperdaten",
"titleInheritHeighet": "Größenvorhersage",
"titleBmi": "BMI-Bewertung",
"linkBluetoothSuccess": "Verbindung erfolgreich, bitte auf die Waage steigen",
"onDeviceBluetoothTips": "Bitte stellen Sie sicher, dass das Gerät eingeschaltet ist",
"openDeviceeMeasureTips": "Bitte stellen Sie sicher, dass Bluetooth und Standort auf dem Handy aktiviert sind",
"msgSuccess": "Messung erfolgreich",
"msgFail": "Messung fehlgeschlagen",
"msgResetData": "Daten werden zurückgesetzt",
"FatFailure": "Körperfettmessung fehlgeschlagen, möchten Sie dieses Messergebnis speichern?",
"waive": "Verzichten"
}

View File

@ -1,637 +0,0 @@
{
"msgTitle": "Friendly Reminder",
"msgUpgradeFail": "Update Failed",
"msgDownloading": "Downloading",
"msgLatestVersion": "Already the latest version!",
"msgCancel": "You have canceled the operation!",
"msgLoginSuccess": "Login successful!",
"msgDelete": "Delete successful",
"msgSetSuccess": "Set successfully",
"msgBottom": "End of content, browse something else",
"msgNoMoreData": "No data available yet!",
"msgSetPasswordSuccess": "Password set successfully, entering the program!",
"msgAddUser": "No members yet, please add first",
"verifyNickName": "Please enter nickname",
"verifyNotOptional": "Future dates are not selectable",
"verifyDate": "Please select measurement date",
"verifyBirthday": "Please select date of birth",
"verifyHeight": "Please enter height",
"verifyWeight": "Please enter weight",
"verifyGender": "Please select gender",
"verifyBontrast": "Please select data",
"verifyBodyDate": "Please select correct time",
"verifyRecord": "Please enter",
"verifyPicker": "Please select",
"verifyAccount": "Please enter correct phone number or email",
"verifyEmail": "Please enter email",
"verifyEmailCorrect": "Please enter correct email address",
"verifyMobile": "Please enter phone number",
"verifyMobileCorrect": "Please enter correct phone number",
"verifyCode": "Please enter verification code",
"verifyPassword": "Please enter password",
"verifyTime": "Please enter duration",
"verifyPasswordTwo": "Please confirm password",
"verifyPasswordCorrect": "Please ensure the two passwords match",
"verifyAgreement": "Please confirm and check the agreement first",
"verifyOutLogin": "Confirm to log out?",
"verifyDeleteUser": "Confirm to delete this member?",
"verifyDeleteHistory": "Confirm to delete current measurement record?",
"verifyDeleteAccount": "After successful deletion, all associated information of this account will be cleared and cannot be recovered. Confirm deletion?",
"btnConfirm": "Confirm",
"btnSubmit": "Submit",
"btnSancellation": "Cancel",
"btnContinue": "Continue",
"btnBack": "Back",
"btnDelete": "Delete",
"ConnectionTimeout": "Connection failed, tap to reconnect",
"Measuring": "Measuring, please place the food on the scale",
"ConnectionSuccessful": "Connection successful",
"connectingDevice": "Please connect the device first",
"Weight": "Weight",
"RecordWeight": "Please enter food weight",
"connectBluetooth": "Connecting Bluetooth",
"SearchBluetooth": "Searching Bluetooth",
"Remeasure": "Data abnormal, please remeasure!",
"reset": "Data abnormal, please reset and remeasure!",
"remeasure": "Remeasure",
"StableWeight": "Stable weight",
"StableWeightText": "Your stable weight is:",
"realTimeWeight": "Real-time weight",
"realTimeWeightText": "Your real-time weight is:",
"heightText": "Your height is",
"zeroBtn": "Zero",
"LockBtn": "Lock",
"SaveResult": "Save result",
"measureResultTips": "Measurement result prompt",
"nowWeight": "This measurement weight is",
"lastHeight": "Last measured height:",
"lastWeight": "Last measured weight:",
"nowHeight": "This measurement height is:",
"lastHead": "Last measured head circumference:",
"errorOperation": "Operation error, please remeasure",
"Disconnect": "Disconnect",
"resetBtn": "Zero",
"UnitBtn": "Unit",
"titleHome": "Home",
"titleMenu": "Recipes",
"titleMenuAdd": "Add Recipe",
"titleMenuSearch": "Search Recipes",
"titleCount": "Count",
"titleCountList": "Food Library",
"titleCustomKcal": "Custom Calories",
"titleEveryMeal": "Meal Details",
"titleCountSearch": "Search Food",
"titleeveryDay": "Nutrition Analysis",
"titleMe": "Me",
"titleDetail": "Details",
"titleHistory": "Diet Record",
"titlePhone": "Bind Phone Number",
"titleEmail": "Bind Email",
"titlePasswordEdit": "Change Password",
"titleSet": "Settings",
"titleDate": "Date",
"titleMember": "Profile",
"titleManage": "Member Management",
"titleManageAdd": "Add Member",
"titleAboutUs": "About Us",
"titleSetPassword": "Set Password",
"titlePassword": "Password",
"titleConfirmPassword": "Confirm Password",
"titleForgotPassword": "Forgot Password",
"titleCode": "Verification Code",
"titleLanguage": "Language Settings",
"titleSendCode": "Get Verification Code",
"titleSendCodeRetry": "Retry in S seconds",
"titleLogin": "Login",
"titleRegister": "Register",
"titleToggleLogin": "Switch Login",
"titleAccountText": "Phone/Email",
"titleAgreementText": "Read and agree to the",
"titleAgreementContntText": "Privacy Agreement",
"titleVersionUpdate": "Version Update",
"titleNewVersion": "New Version",
"infoActivityCoefficient": "Activity Coefficient",
"infoPersonalProfile": "Personal Profile",
"infoMyRecipes": "My Recipes",
"infoMyCollection": "My Collection",
"infoAvatar": "Avatar",
"infoNickname": "Nickname",
"infoMobile": "Phone",
"infoEmail": "Email",
"infoAge": "Age",
"infoAgeunit": "years old",
"infoGender": "Gender",
"infoMan": "Male",
"infoWoman": "Female",
"infoUnknown": "Unknown",
"infoBirthday": "Date of Birth",
"infoHeight": "Height",
"infoWeight": "Weight",
"btnEdit": "Edit",
"btnAdd": "Add",
"btnDetail": "View Details",
"btnDeleteAccount": "Delete Account",
"btnLogOut": "Log Out",
"countIntake": "Intake",
"countCalorieIntake": "Calorie Intake",
"countMealdetails": "Meal Details",
"countAddFood": "Add Food",
"countNutritionalProportion": "Nutrition Proportion",
"countComponentStatistics": "Component Statistics",
"countCalorieAnalysis": "Calorie Analysis",
"countNutrientElementEnergyProportion": "Nutrient Element Energy Proportion",
"countNutritionClassification": "Nutrition Classification",
"countNutritionElementRankingList": "Nutrition Element Ranking",
"countFoodTypes": "Food Types",
"total": "Total",
"records": "records",
"Search": "Search",
"VoiceSearch": "Voice Search",
"Save": "Save",
"noMoreData": "No more data",
"HistoricalSearch": "Search History",
"wantSearch": "You may want to search",
"verifyCalorie": "Please enter calories",
"kcal": "Calories",
"countNoFood": "No food yet",
"msgLoginTips": "Log in to see more",
"Nutrients": "Nutrients",
"Content": "Content",
"CaloriesAndnutrients": "Calories and Nutrients",
"ImproveInformation": "Improve Information",
"WhetherTodelete": "Confirm deletion",
"BusinessCooperation": "Business Cooperation",
"verifyActivityCoefficient": "Please select activity coefficient",
"devicesTips": "Device not registered, please contact seller for system authentication",
"kg": "kg",
"g": "g",
"oz": "oz",
"ml": "ml",
"lb": "lb",
"milkml": "milkml",
"Waterml": "Waterml",
"floz": "fl oz",
"lboz": "lb:oz",
"st": "st:lb",
"titleHealth": "Health",
"titleDiet": "Diet",
"titleExercise": "Exercise",
"titleScore": "Score Prediction",
"titleStartScore": "Start Prediction",
"titleScoreResult": "This Prediction Score",
"titleDepthReport": "Deep Report",
"infoHead": "Head Circumference",
"verifyHead": "Please enter head circumference",
"verifyHeightDad": "Please enter father's height",
"verifyHeightMom": "Please enter mother's height",
"verifyRecordType": "Please select measurement item",
"verifyRecordTime": "Please enter duration",
"verifyRecordNumber": "Please enter number",
"measuringRecord": "Measurement Record",
"newVersion": "New version found",
"IsUpdate": "Update now?",
"msgCalculating": "Calculating",
"titleSkipping": "Jump Rope Data",
"titlevVitalcapacity": "Lung Capacity Data",
"titleCharts": "Activity Chart",
"titleContrast": "Data Comparison",
"UpdateProgram": "You can update the program later in 'About Us'!",
"lungsuctionspeed": "Inhalation Speed",
"averagelungsuction": "Average Inhalation Capacity",
"isMarginal": "Meets Standard",
"today_jump_num": "Today's Count",
"today_jump_time": "Today's Duration",
"today_jump_kcal": "Calories",
"jumpFree": "Free Jump",
"backwardCount": "Countdown",
"Countdown": "Countdown",
"jumpFreedom": "Free",
"jumpFreeDegree": "Free Count",
"jumpFreeNumber": "Number",
"jumpTargetDegree": "Target Count",
"jumpUnlimited": "Unlimited",
"jumpTarget": "Adjust Target",
"jumpTargetTime": "Target Duration min:sec",
"MinuteSecond": "min:sec",
"Consumed": "Consumed",
"LongpressEnd": "Long press to end",
"AverageSpeed": "Average Speed",
"Unit": "per minute",
"Numberofinterrupts": "Interruptions",
"Times": "times",
"LongestConsecutive": "Longest Consecutive",
"Number": "",
"trainingsNumber": "Training Count",
"complete": "Complete",
"instructStart": "Start",
"instructContinuous": "Continuous",
"instructStop": "Stop",
"instructEnd": "End",
"instructContinue": "Continue",
"instructPause": "Pause",
"linkBluetoothFail": "Connection disconnected",
"deviceDisconnection": "Connection with device interrupted during training, please reconnect and start again",
"ToggleTrainingsTips": "Please do not switch training during a session, return to training",
"NOComplete": "Jump rope time less than 10 seconds, record will not be saved?",
"growthAdvice": "Growth Advice",
"nutrition": "Nutrition",
"sleep": "Sleep",
"movement": "Exercise",
"emotion": "Emotion",
"manualRecording": "Manual Record",
"inheritHeighet.title": "Height Prediction",
"inheritHeighet.dad": "Father's Height",
"inheritHeighet.mom": "Mother's Height",
"inheritHeighet.geneticheight": "Current Standard Height",
"inheritHeighet.adultheight": "Adult Height Prediction",
"inheritHeighet.tips0": "Please fill in accurate information for precise data",
"inheritHeighet.tips1": "If current actual height < Current Standard Height",
"inheritHeighet.tips2": "Child's environment is not optimal for growth. Check diet, sleep, exercise, and emotions. Improve postnatal management for optimal growth.",
"inheritHeighet.tips3": "If current actual height > Current Standard Height",
"inheritHeighet.tips4": "Child's environment is favorable for growth. Maintain and enhance postnatal management; child may exceed standard adult height by 10cm or more.",
"time": "Time (days)",
"weightdiff": "Weight loss",
"weightdiffAugment": "Weight gain",
"fatWdiff": "Fat loss",
"fatWdiffAugment": "Fat gain",
"changeData": "Data change",
"trend": "Trend",
"before": "Before",
"after": "After",
"target_weight": "Target weight",
"cumulative_weight_gain": "Cumulative weight gain",
"cumulative_weight": "Cumulative weight loss",
"initial_weight": "Initial weight",
"cumulative_day": "Weight loss days",
"chartsDay": "Today",
"chartsMonth": "Monthly",
"chartsYear": "Yearly",
"recordType": "Item",
"recordTime": "Duration",
"recordNumber": "Number",
"recordNumberFirst": "First",
"recordNumberSecond": "Second",
"recordNumberThird": "Third",
"linkBluetoothFail2": "Bluetooth connection lost, please reconnect and measure",
"Ideal": "Ideal",
"addRecord": "Add Record",
"HistoricalRcord": "Historical Records",
"TimeSpent": "Time spent",
"minutes": "minutes",
"btnBMI": "Calculate Now",
"Record": "Record",
"depthReport": "Deep Report",
"Enter": "Enter",
"target": "Target",
"teach": "How to make",
"SearchRecipes": "Enter ingredients to search recipes",
"RecipeType": "Recipe Type",
"linkWeighing": "Connect and measure",
"Collection": "Collection",
"Ingredients": "Ingredients",
"Suggestions": "Suggestions",
"Calories": "Calories",
"remeasure2": "Re-weigh",
"CurrentlyWeighing": "Weighing",
"TodayMeals": "Save as today's meals?",
"SavedSuccessfully": "Save successful",
"ImproveData": "Improve profile to see more",
"KeyWords": "Enter keywords to match recipes",
"KeyWordsSearch": "Enter keywords to search",
"nextFlavor": "Next flavor",
"option": "Select item",
"verifyOption": "Please select an item",
"justDta": "Please enter correct data",
"infoNowUser": "Current",
"HealthScore": "Health Score",
"StandardValue": "Standard value",
"bodyData": "Body data",
"titleInheritHeighet": "Height Prediction",
"titleBmi": "BMI Assessment",
"linkBluetoothSuccess": "Connected, please step on the scale to measure",
"onDeviceBluetoothTips": "Please ensure device is turned on",
"openDeviceeMeasureTips": "Please ensure phone Bluetooth and location are enabled",
"msgSuccess": "Measurement successful",
"msgFail": "Measurement failed",
"msgResetData": "Resetting data",
"FatFailure": "Body fat measurement failed, save this result?",
"waive": "Discard"
}

View File

@ -1,319 +0,0 @@
{
"msgTitle": "Aviso amistoso",
"msgUpgradeFail": "Actualización fallida",
"msgDownloading": "Descargando",
"msgLatestVersion": "¡Ya es la versión más reciente!",
"msgCancel": "¡Has cancelado la operación!",
"msgLoginSuccess": "¡Inicio de sesión exitoso!",
"msgDelete": "Eliminado con éxito",
"msgSetSuccess": "Configuración exitosa",
"msgBottom": "Llegaste al final, mira algo más",
"msgNoMoreData": "¡No hay datos por el momento!",
"msgSetPasswordSuccess": "¡Contraseña establecida con éxito, ingresando al programa!",
"msgAddUser": "No hay miembros aún, por favor agrega primero",
"verifyNickName": "Por favor ingresa un apodo",
"verifyNotOptional": "Las fechas futuras no están disponibles",
"verifyDate": "Por favor selecciona la fecha de medición",
"verifyBirthday": "Por favor selecciona la fecha de nacimiento",
"verifyHeight": "Por favor ingresa la altura",
"verifyWeight": "Por favor ingresa el peso",
"verifyGender": "Por favor selecciona el género",
"verifyBontrast": "Por favor selecciona los datos",
"verifyBodyDate": "Por favor selecciona la hora correcta",
"verifyRecord": "Por favor ingresa",
"verifyPicker": "Por favor selecciona",
"verifyAccount": "Por favor ingresa un número de teléfono o correo electrónico correcto",
"verifyEmail": "Por favor ingresa un correo electrónico",
"verifyEmailCorrect": "Por favor ingresa un correo electrónico válido",
"verifyMobile": "Por favor ingresa un número de teléfono",
"verifyMobileCorrect": "Por favor ingresa un número de teléfono válido",
"verifyCode": "Por favor ingresa el código de verificación",
"verifyPassword": "Por favor ingresa la contraseña",
"verifyTime": "Por favor ingresa el tiempo empleado",
"verifyPasswordTwo": "Por favor confirma la contraseña",
"verifyPasswordCorrect": "Por favor asegúrate de que las contraseñas coincidan",
"verifyAgreement": "Por favor confirma y marca el acuerdo primero",
"verifyOutLogin": "¿Deseas cerrar sesión?",
"verifyDeleteUser": "¿Deseas eliminar a este miembro?",
"verifyDeleteHistory": "¿Deseas eliminar el registro de medición actual?",
"verifyDeleteAccount": "Después de la eliminación exitosa, toda la información asociada a esta cuenta será borrada y no se podrá recuperar. ¿Deseas eliminar?",
"btnConfirm": "Confirmar",
"btnSubmit": "Enviar",
"btnSancellation": "Cancelar",
"btnContinue": "Continuar",
"btnBack": "Regresar",
"btnDelete": "Eliminar",
"ConnectionTimeout": "Conexión fallida, haz clic para volver a conectar",
"Measuring": "Midiendo, por favor coloca la comida en la báscula",
"ConnectionSuccessful": "Conexión exitosa",
"connectingDevice": "Por favor conecta el dispositivo primero",
"Weight": "Peso",
"RecordWeight": "Por favor ingresa el peso de la comida",
"connectBluetooth": "Conectando Bluetooth",
"SearchBluetooth": "Buscando Bluetooth",
"Remeasure": "¡Datos anormales, por favor vuelve a medir!",
"reset": "¡Datos anormales, por favor pon a cero y vuelve a medir!",
"remeasure": "Volver a medir",
"StableWeight": "Peso estable",
"StableWeightText": "Tu peso estable es:",
"realTimeWeight": "Peso en tiempo real",
"realTimeWeightText": "Tu peso en tiempo real es:",
"heightText": "Tu altura es",
"zeroBtn": "Poner a cero",
"LockBtn": "Bloquear",
"SaveResult": "Guardar resultado",
"measureResultTips": "Consejos de resultado de medición",
"nowWeight": "El peso de esta medición es",
"lastHeight": "La altura de la última medición fue:",
"lastWeight": "El peso de la última medición fue:",
"nowHeight": "La altura de esta medición es:",
"lastHead": "El perímetro cefálico de la última medición fue:",
"errorOperation": "Operación incorrecta, por favor vuelve a medir",
"Disconnect": "Desconectar",
"resetBtn": "Poner a cero",
"UnitBtn": "Unidad",
"titleHome": "Inicio",
"titleMenu": "Recetas",
"titleMenuAdd": "Agregar receta",
"titleMenuSearch": "Buscar receta",
"titleCount": "Conteo de comidas",
"titleCountList": "Biblioteca de ingredientes",
"titleCustomKcal": "Calorías personalizadas",
"titleEveryMeal": "Detalles de la comida",
"titleCountSearch": "Buscar ingredientes",
"titleeveryDay": "Análisis nutricional",
"titleMe": "Mi perfil",
"titleDetail": "Detalles",
"titleHistory": "Registro de dieta",
"titlePhone": "Vincular número de teléfono",
"titleEmail": "Vincular correo electrónico",
"titlePasswordEdit": "Cambiar contraseña",
"titleSet": "Configuración",
"titleDate": "Fecha",
"titleMember": "Perfil",
"titleManage": "Gestión de miembros",
"titleManageAdd": "Agregar miembro",
"titleAboutUs": "Sobre nosotros",
"titleSetPassword": "Establecer contraseña",
"titlePassword": "Contraseña",
"titleConfirmPassword": "Confirmar contraseña",
"titleForgotPassword": "Olvidé mi contraseña",
"titleCode": "Código de verificación",
"titleLanguage": "Configuración de idioma",
"titleSendCode": "Obtener código de verificación",
"titleSendCodeRetry": "Reenviar en S segundos",
"titleLogin": "Iniciar sesión",
"titleRegister": "Registrarse",
"titleToggleLogin": "Cambiar inicio de sesión",
"titleAccountText": "Teléfono/Correo",
"titleAgreementText": "Leer y aceptar",
"titleAgreementContntText": "Acuerdo de privacidad",
"titleVersionUpdate": "Actualización de versión",
"titleNewVersion": "Nueva versión",
"infoActivityCoefficient": "Coeficiente de actividad",
"infoPersonalProfile": "Perfil personal",
"infoMyRecipes": "Mis recetas",
"infoMyCollection": "Mis favoritos",
"infoAvatar": "Avatar",
"infoNickname": "Apodo",
"infoMobile": "Número de teléfono",
"infoEmail": "Correo electrónico",
"infoAge": "Edad",
"infoAgeunit": "años",
"infoGender": "Género",
"infoMan": "Hombre",
"infoWoman": "Mujer",
"infoUnknown": "Desconocido",
"infoBirthday": "Fecha de nacimiento",
"infoHeight": "Altura",
"infoWeight": "Peso",
"btnEdit": "Editar",
"btnAdd": "Agregar",
"btnDetail": "Ver detalles",
"btnDeleteAccount": "Eliminar cuenta",
"btnLogOut": "Cerrar sesión",
"countIntake": "Ingesta",
"countCalorieIntake": "Ingesta calórica",
"countMealdetails": "Detalles de la comida",
"countAddFood": "Agregar comida",
"countNutritionalProportion": "Proporción nutricional",
"countComponentStatistics": "Estadísticas de componentes",
"countCalorieAnalysis": "Análisis de calorías",
"countNutrientElementEnergyProportion": "Proporción de energía de nutrientes",
"countNutritionClassification": "Clasificación nutricional",
"countNutritionElementRankingList": "Ranking de elementos nutricionales",
"countFoodTypes": "Tipos de comida",
"total": "Total",
"records": "registros",
"Search": "Buscar",
"VoiceSearch": "Búsqueda por voz",
"Save": "Guardar",
"noMoreData": "No hay más datos",
"HistoricalSearch": "Historial de búsqueda",
"wantSearch": "Quizás quieras buscar",
"verifyCalorie": "Por favor ingresa calorías",
"kcal": "Calorías",
"countNoFood": "Sin comida por el momento",
"msgLoginTips": "Inicia sesión para ver más",
"Nutrients": "Nutrientes",
"Content": "Contenido",
"CaloriesAndnutrients": "Calorías y nutrientes",
"ImproveInformation": "Completar información",
"WhetherTodelete": "¿Eliminar?",
"BusinessCooperation": "Cooperación comercial",
"verifyActivityCoefficient": "Por favor selecciona el coeficiente de actividad",
"devicesTips": "Dispositivo no registrado, por favor contacta al vendedor para autenticación del sistema",
"kg": "Kilogramos",
"g": "Gramos",
"oz": "Onzas",
"ml": "Mililitros",
"lb": "Libras",
"milkml": "Leche ml",
"Waterml": "Agua ml",
"floz": "Onzas fluidas",
"lboz": "Libras:Onzas",
"st": "st:lb",
"titleHealth": "Salud",
"titleDiet": "Dieta",
"titleExercise": "Ejercicio",
"titleScore": "Estimación de puntuación",
"titleStartScore": "Comenzar estimación",
"titleScoreResult": "Resultado de esta estimación",
"titleDepthReport": "Reporte detallado",
"infoHead": "Perímetro cefálico",
"verifyHead": "Por favor ingresa el perímetro cefálico",
"verifyHeightDad": "Por favor ingresa la altura del papá",
"verifyHeightMom": "Por favor ingresa la altura de la mamá",
"verifyRecordType": "Por favor selecciona el ítem de medición",
"verifyRecordTime": "Por favor ingresa la duración",
"verifyRecordNumber": "Por favor ingresa la cantidad",
"measuringRecord": "Registro de medición",
"newVersion": "Nueva versión disponible",
"IsUpdate": "¿Actualizar?",
"msgCalculating": "Calculando",
"titleSkipping": "Datos de salto de cuerda",
"titlevVitalcapacity": "Datos de capacidad pulmonar",
"titleCharts": "Curva de ejercicio",
"titleContrast": "Comparación de datos",
"UpdateProgram": "¡Puedes actualizar el programa más tarde en 'Sobre nosotros'!",
"lungsuctionspeed": "Velocidad de inhalación",
"averagelungsuction": "Capacidad pulmonar promedio de inhalación",
"isMarginal": "¿Cumple estándares?",
"today_jump_num": "Número de hoy",
"today_jump_time": "Duración de hoy",
"today_jump_kcal": "Calorías",
"jumpFree": "Salto libre",
"backwardCount": "Cuenta regresiva",
"Countdown": "Cuenta atrás",
"jumpFreedom": "Libre",
"jumpFreeDegree": "Número de saltos libres",
"jumpFreeNumber": "Cantidad",
"jumpTargetDegree": "Número objetivo",
"jumpUnlimited": "Sin límite",
"jumpTarget": "Ajustar objetivo",
"jumpTargetTime": "Duración objetivo min:seg",
"MinuteSecond": "min:seg",
"Consumed": "Consumido",
"LongpressEnd": "Mantén presionado para terminar",
"AverageSpeed": "Velocidad promedio",
"Unit": "unidades/minuto",
"Numberofinterrupts": "Número de interrupciones",
"Times": "veces",
"LongestConsecutive": "Más largo consecutivo",
"Number": "unidades",
"trainingsNumber": "Número de entrenamientos",
"complete": "Completado",
"instructStart": "Comenzar",
"instructContinuous": "Continuo",
"instructStop": "Detener",
"instructEnd": "Terminar",
"instructContinue": "Continuar",
"instructPause": "Pausa",
"linkBluetoothFail": "Conexión perdida",
"deviceDisconnection": "La conexión con el dispositivo se perdió durante el entrenamiento. Por favor vuelve a conectar antes de comenzar",
"ToggleTrainingsTips": "Por favor no cambies de entrenamiento durante la sesión, regresa al entrenamiento",
"NOComplete": "El tiempo de salto esta vez es inferior a 10 segundos, ¿no se guardará el registro?",
"growthAdvice": "Consejos de crecimiento",
"nutrition": "Nutrición",
"sleep": "Sueño",
"movement": "Movimiento",
"emotion": "Emoción",
"manualRecording": "Registro manual",
"inheritHeighet.title": "Predicción de altura",
"inheritHeighet.dad": "Altura del papá",
"inheritHeighet.mom": "Altura de la mamá",
"inheritHeighet.geneticheight": "Altura estándar actual",
"inheritHeighet.adultheight": "Predicción de altura adulta",
"inheritHeighet.tips0": "Para garantizar la precisión de los datos, por favor completa la información real cuidadosamente",
"inheritHeighet.tips1": "Si la altura actual real < altura estándar actual",
"inheritHeighet.tips2": "El entorno de crecimiento posterior no es favorable para el aumento de estatura. Por favor verifica aspectos como dieta, sueño, ejercicio, emociones. Fortalece la gestión de factores posteriores para que el niño esté en el mejor estado de crecimiento.",
"inheritHeighet.tips3": "Si la altura actual real > altura estándar actual",
"inheritHeighet.tips4": "El entorno de crecimiento posterior es favorable para el aumento de estatura. Por favor mantén y fortalece la gestión de factores posteriores, el niño puede ser más de 10 cm más alto que el estándar al ser adulto.",
"time": "Tiempo (días)",
"weightdiff": "Pérdida de peso",
"weightdiffAugment": "Aumento de peso",
"fatWdiff": "Pérdida de grasa",
"fatWdiffAugment": "Aumento de grasa",
"changeData": "Cambio de datos",
"trend": "Tendencia",
"before": "Antes",
"after": "Después",
"target_weight": "Peso objetivo",
"cumulative_weight_gain": "Aumento acumulado de peso",
"cumulative_weight": "Pérdida acumulada de peso",
"initial_weight": "Peso inicial",
"cumulative_day": "Días de pérdida de peso",
"chartsDay": "Día actual",
"chartsMonth": "Mensual",
"chartsYear": "Anual",
"recordType": "Ítem",
"recordTime": "Duración",
"recordNumber": "Cantidad",
"recordNumberFirst": "Primera vez",
"recordNumberSecond": "Segunda vez",
"recordNumberThird": "Tercera vez",
"linkBluetoothFail2": "La conexión Bluetooth se ha perdido, por favor reconecta y mide nuevamente",
"Ideal": "Ideal",
"addRecord": "Agregar registro",
"HistoricalRcord": "Historial",
"TimeSpent": "Tiempo empleado",
"minutes": "minutos",
"btnBMI": "Calcular ahora",
"Record": "Registrar",
"depthReport": "Reporte detallado",
"Enter": "Entrar",
"target": "Objetivo",
"teach": "Te enseño a hacer",
"SearchRecipes": "Ingresa ingredientes para buscar recetas rápido",
"RecipeType": "Tipo de receta",
"linkWeighing": "Conectar y pesar",
"Collection": "Favoritos",
"Ingredients": "Ingredientes",
"Suggestions": "Sugerencias",
"Calories": "Calorías",
"remeasure2": "Volver a pesar",
"CurrentlyWeighing": "Pesando actualmente",
"TodayMeals": "¿Guardar como dieta de hoy?",
"SavedSuccessfully": "Guardado exitosamente",
"ImproveData": "Completa tu perfil para ver más",
"KeyWords": "Ingresa palabras clave para coincidir recetas",
"KeyWordsSearch": "Buscar después de ingresar palabras clave",
"nextFlavor": "Siguiente sabor",
"option": "Seleccionar ítem",
"verifyOption": "Por favor selecciona un ítem",
"justDta": "Por favor ingresa datos correctos",
"infoNowUser": "Actual",
"HealthScore": "Puntuación de salud",
"StandardValue": "Valor estándar",
"bodyData": "Datos corporales",
"titleInheritHeighet": "Predicción de altura",
"titleBmi": "Evaluación BMI",
"linkBluetoothSuccess": "Conexión exitosa, por favor sube a la báscula para medir",
"onDeviceBluetoothTips": "Por favor asegúrate de que el dispositivo esté encendido",
"openDeviceeMeasureTips": "Por favor asegúrate de que el Bluetooth y la ubicación del teléfono estén activados",
"msgSuccess": "Medición exitosa",
"msgFail": "Medición fallida",
"msgResetData": "Reiniciando datos",
"FatFailure": "Medición de grasa corporal fallida, ¿deseas guardar este resultado?",
"waive": "Descartar"
}

View File

@ -1,319 +0,0 @@
{
"msgTitle": "Rappel amical",
"msgUpgradeFail": "Échec de la mise à jour",
"msgDownloading": "Téléchargement en cours",
"msgLatestVersion": "Déjà la dernière version !",
"msgCancel": "Vous avez annulé l'opération !",
"msgLoginSuccess": "Connexion réussie !",
"msgDelete": "Suppression réussie",
"msgSetSuccess": "Paramétrage réussi",
"msgBottom": "Fin de la liste, explorez autre chose",
"msgNoMoreData": "Aucune donnée pour le moment !",
"msgSetPasswordSuccess": "Mot de passe défini avec succès, entrée dans l'application !",
"msgAddUser": "Aucun membre pour l'instant, veuillez d'abord en ajouter",
"verifyNickName": "Veuillez saisir un pseudonyme",
"verifyNotOptional": "Date future non sélectionnable",
"verifyDate": "Veuillez sélectionner la date de mesure",
"verifyBirthday": "Veuillez sélectionner la date de naissance",
"verifyHeight": "Veuillez saisir la taille",
"verifyWeight": "Veuillez saisir le poids",
"verifyGender": "Veuillez sélectionner le sexe",
"verifyBontrast": "Veuillez sélectionner des données",
"verifyBodyDate": "Veuillez sélectionner l'heure correcte",
"verifyRecord": "Veuillez saisir",
"verifyPicker": "Veuillez sélectionner",
"verifyAccount": "Veuillez saisir un numéro de téléphone ou une adresse e-mail correct(e)",
"verifyEmail": "Veuillez saisir une adresse e-mail",
"verifyEmailCorrect": "Veuillez saisir une adresse e-mail valide",
"verifyMobile": "Veuillez saisir un numéro de téléphone",
"verifyMobileCorrect": "Veuillez saisir un numéro de téléphone valide",
"verifyCode": "Veuillez saisir le code de vérification",
"verifyPassword": "Veuillez saisir le mot de passe",
"verifyTime": "Veuillez saisir la durée",
"verifyPasswordTwo": "Veuillez confirmer le mot de passe",
"verifyPasswordCorrect": "Veuillez vérifier que les deux mots de passe sont identiques",
"verifyAgreement": "Veuillez d'abord accepter 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 suppression, toutes les informations associées à ce compte seront effacées et irrécupérables. Confirmez-vous la suppression ?",
"btnConfirm": "Confirmer",
"btnSubmit": "Soumettre",
"btnSancellation": "Annuler",
"btnContinue": "Continuer",
"btnBack": "Retour",
"btnDelete": "Supprimer",
"ConnectionTimeout": "Échec de connexion, cliquez pour réessayer",
"Measuring": "Mesure en cours, veuillez placer l'aliment sur la balance",
"ConnectionSuccessful": "Connexion réussie",
"connectingDevice": "Veuillez d'abord connecter l'appareil",
"Weight": "Poids",
"RecordWeight": "Veuillez saisir le poids de l'aliment",
"connectBluetooth": "Connexion Bluetooth en cours",
"SearchBluetooth": "Recherche Bluetooth en cours",
"Remeasure": "Données anormales, veuillez mesurer à nouveau !",
"reset": "Données anormales, veuillez remettre à zéro et mesurer à nouveau !",
"remeasure": "Mesurer à nouveau",
"StableWeight": "Poids stable",
"StableWeightText": "Votre poids stable est :",
"realTimeWeight": "Poids en temps réel",
"realTimeWeightText": "Votre poids en temps réel est :",
"heightText": "Votre taille est",
"zeroBtn": "Remise à zéro",
"LockBtn": "Verrouiller",
"SaveResult": "Sauvegarder le résultat",
"measureResultTips": "Conseil sur le résultat de la mesure",
"nowWeight": "Le poids mesuré cette fois est",
"lastHeight": "La taille mesurée la dernière fois était :",
"lastWeight": "Le poids mesuré la dernière fois était :",
"nowHeight": "La taille mesurée cette fois est :",
"lastHead": "Le tour de tête mesuré la dernière fois était :",
"errorOperation": "Erreur d'opération, veuillez mesurer à nouveau",
"Disconnect": "Déconnecter",
"resetBtn": "Remise à zéro",
"UnitBtn": "Unité",
"titleHome": "Accueil",
"titleMenu": "Recettes",
"titleMenuAdd": "Ajouter une recette",
"titleMenuSearch": "Rechercher une recette",
"titleCount": "Compteur alimentaire",
"titleCountList": "Base d'ingrédients",
"titleCustomKcal": "Calories personnalisées",
"titleEveryMeal": "Détails du repas",
"titleCountSearch": "Recherche d'ingrédients",
"titleeveryDay": "Analyse nutritionnelle",
"titleMe": "Moi",
"titleDetail": "Détails",
"titleHistory": "Historique alimentaire",
"titlePhone": "Lier le numéro de téléphone",
"titleEmail": "Lier l'e-mail",
"titlePasswordEdit": "Modifier le mot de passe",
"titleSet": "Paramètres",
"titleDate": "Date",
"titleMember": "Profil",
"titleManage": "Gestion des membres",
"titleManageAdd": "Ajouter un membre",
"titleAboutUs": "À propos de nous",
"titleSetPassword": "Définir le mot de passe",
"titlePassword": "Mot de passe",
"titleConfirmPassword": "Confirmer le mot de passe",
"titleForgotPassword": "Mot de passe oublié",
"titleCode": "Code de vérification",
"titleLanguage": "Paramètres de langue",
"titleSendCode": "Obtenir le code",
"titleSendCodeRetry": "Renvoyer dans S s",
"titleLogin": "Connexion",
"titleRegister": "Inscription",
"titleToggleLogin": "Changer de connexion",
"titleAccountText": "Numéro de téléphone/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": "Mes recettes",
"infoMyCollection": "Mes favoris",
"infoAvatar": "Photo de profil",
"infoNickname": "Pseudonyme",
"infoMobile": "Numéro de téléphone",
"infoEmail": "E-mail",
"infoAge": "Âge",
"infoAgeunit": "ans",
"infoGender": "Sexe",
"infoMan": "Homme",
"infoWoman": "Femme",
"infoUnknown": "Inconnu",
"infoBirthday": "Date de naissance",
"infoHeight": "Taille",
"infoWeight": "Poids",
"btnEdit": "Modifier",
"btnAdd": "Ajouter",
"btnDetail": "Voir les détails",
"btnDeleteAccount": "Supprimer le compte",
"btnLogOut": "Déconnexion",
"countIntake": "Apport",
"countCalorieIntake": "Apport calorique",
"countMealdetails": "Détails du repas",
"countAddFood": "Ajouter un aliment",
"countNutritionalProportion": "Proportion nutritionnelle",
"countComponentStatistics": "Statistiques des composants",
"countCalorieAnalysis": "Analyse des calories",
"countNutrientElementEnergyProportion": "Proportion énergétique des nutriments",
"countNutritionClassification": "Classification nutritionnelle",
"countNutritionElementRankingList": "Classement des nutriments",
"countFoodTypes": "Types d'aliments",
"total": "Total",
"records": "enregistrements",
"Search": "Rechercher",
"VoiceSearch": "Recherche vocale",
"Save": "Sauvegarder",
"noMoreData": "Plus de données",
"HistoricalSearch": "Historique de recherche",
"wantSearch": "Suggestions de recherche",
"verifyCalorie": "Veuillez saisir des calories",
"kcal": "Calories",
"countNoFood": "Aucun aliment pour l'instant",
"msgLoginTips": "Connectez-vous pour voir plus",
"Nutrients": "Nutriments",
"Content": "Teneur",
"CaloriesAndnutrients": "Calories et nutrition",
"ImproveInformation": "Compléter les informations",
"WhetherTodelete": "Voulez-vous supprimer ?",
"BusinessCooperation": "Coopération commerciale",
"verifyActivityCoefficient": "Veuillez sélectionner le coefficient d'activité",
"devicesTips": "Appareil non enregistré, veuillez contacter le vendeur pour l'authentification système",
"kg": "Kilogramme",
"g": "Gramme",
"oz": "Once",
"ml": "Millilitre",
"lb": "Livre",
"milkml": "milkml",
"Waterml": "Waterml",
"floz": "floz",
"lboz": "lboz",
"st": "st:lb",
"titleHealth": "Santé",
"titleDiet": "Alimentation",
"titleExercise": "Exercice",
"titleScore": "Estimation du score",
"titleStartScore": "Commencer l'estimation",
"titleScoreResult": "Résultat de cette estimation",
"titleDepthReport": "Rapport détaillé",
"infoHead": "Tour de tête",
"verifyHead": "Veuillez saisir le tour de tête",
"verifyHeightDad": "Veuillez saisir la taille du père",
"verifyHeightMom": "Veuillez saisir la taille de la mère",
"verifyRecordType": "Veuillez sélectionner l'élément de mesure",
"verifyRecordTime": "Veuillez saisir la durée",
"verifyRecordNumber": "Veuillez saisir le nombre",
"measuringRecord": "Enregistrement de mesure",
"newVersion": "Nouvelle version détectée",
"IsUpdate": "Mettre à jour ?",
"msgCalculating": "Calcul en cours",
"titleSkipping": "Données de saut à la corde",
"titlevVitalcapacity": "Données de capacité pulmonaire",
"titleCharts": "Courbe d'exercice",
"titleContrast": "Comparaison de données",
"UpdateProgram": "Vous pourrez mettre à jour le programme plus tard dans 'À propos de nous' !",
"lungsuctionspeed": "Vitesse d'inhalation",
"averagelungsuction": "Capacité pulmonaire moyenne d'inhalation",
"isMarginal": "Atteint la norme",
"today_jump_num": "Nombre aujourd'hui",
"today_jump_time": "Durée aujourd'hui",
"today_jump_kcal": "Calories",
"jumpFree": "Saut libre",
"backwardCount": "Compte à rebours",
"Countdown": "Décompte",
"jumpFreedom": "Libre",
"jumpFreeDegree": "Nombre libre",
"jumpFreeNumber": "Nombre",
"jumpTargetDegree": "Nombre cible",
"jumpUnlimited": "Illimité",
"jumpTarget": "Ajuster l'objectif",
"jumpTargetTime": "Durée cible min:sec",
"MinuteSecond": "min:sec",
"Consumed": "Consommé",
"LongpressEnd": "Maintenir appuyé pour terminer",
"AverageSpeed": "Vitesse moyenne",
"Unit": "nbr/min",
"Numberofinterrupts": "Nombre d'interruptions",
"Times": "fois",
"LongestConsecutive": "Plus longue série",
"Number": "nbr",
"trainingsNumber": "Nombre d'entraînements",
"complete": "Terminer",
"instructStart": "Démarrer",
"instructContinuous": "Continuer",
"instructStop": "Arrêter",
"instructEnd": "Terminer",
"instructContinue": "Reprendre",
"instructPause": "Pause",
"linkBluetoothFail": "Connexion interrompue",
"deviceDisconnection": "La connexion avec l'appareil a été interrompue pendant l'entraînement. Veuillez vous reconnecter avant de reprendre.",
"ToggleTrainingsTips": "Ne changez pas d'entraînement pendant la session. Retour à l'entraînement.",
"NOComplete": "Cette session de saut à la corde a duré moins de 10 secondes, l'enregistrement ne sera pas sauvegardé ?",
"growthAdvice": "Conseils de croissance",
"nutrition": "Nutrition",
"sleep": "Sommeil",
"movement": "Mouvement",
"emotion": "Émotion",
"manualRecording": "Enregistrement manuel",
"inheritHeighet.title": "Prédiction de taille",
"inheritHeighet.dad": "Taille du père",
"inheritHeighet.mom": "Taille de la mère",
"inheritHeighet.geneticheight": "Taille standard actuelle",
"inheritHeighet.adultheight": "Prédiction de taille adulte",
"inheritHeighet.tips0": "Pour des données précises, veuillez remplir les informations réelles avec soin",
"inheritHeighet.tips1": "Si la taille actuelle réelle < taille standard actuelle",
"inheritHeighet.tips2": "L'environnement de croissance de l'enfant est défavorable. Vérifiez l'alimentation, le sommeil, l'exercice, les émotions, etc. Renforcez la gestion des facteurs postnataux pour un état de croissance optimal.",
"inheritHeighet.tips3": "Si la taille actuelle réelle > taille standard actuelle",
"inheritHeighet.tips4": "L'environnement de croissance de l'enfant est favorable. Continuez ainsi et renforcez la gestion pour dépasser la norme de plus de 10 cm à l'âge adulte.",
"time": "Temps (jours)",
"weightdiff": "Perte de poids",
"weightdiffAugment": "Prise de poids",
"fatWdiff": "Perte de graisse",
"fatWdiffAugment": "Prise de graisse",
"changeData": "Changement de données",
"trend": "Tendance",
"before": "Avant",
"after": "Après",
"target_weight": "Poids cible",
"cumulative_weight_gain": "Prise de poids cumulative",
"cumulative_weight": "Perte de poids cumulative",
"initial_weight": "Poids initial",
"cumulative_day": "Jours de perte de poids",
"chartsDay": "Quotidien",
"chartsMonth": "Mensuel",
"chartsYear": "Annuel",
"recordType": "Élément",
"recordTime": "Durée",
"recordNumber": "Nombre",
"recordNumberFirst": "Première",
"recordNumberSecond": "Deuxième",
"recordNumberThird": "Troisième",
"linkBluetoothFail2": "La connexion Bluetooth est interrompue, veuillez vous reconnecter pour mesurer",
"Ideal": "Idéal",
"addRecord": "Ajouter un enregistrement",
"HistoricalRcord": "Historique",
"TimeSpent": "Durée",
"minutes": "minutes",
"btnBMI": "Calculer maintenant",
"Record": "Enregistrer",
"depthReport": "Rapport détaillé",
"Enter": "Entrer",
"target": "Objectif",
"teach": "Apprendre à faire",
"SearchRecipes": "Saisir un ingrédient pour rechercher rapidement une recette",
"RecipeType": "Type de recette",
"linkWeighing": "Connecter et mesurer",
"Collection": "Favoris",
"Ingredients": "Ingrédients",
"Suggestions": "Suggestions",
"Calories": "Calories",
"remeasure2": "Repeser",
"CurrentlyWeighing": "Pesée en cours",
"TodayMeals": "Sauvegarder comme repas d'aujourd'hui ?",
"SavedSuccessfully": "Sauvegarde réussie",
"ImproveData": "Complétez votre profil pour voir plus",
"KeyWords": "Saisir un mot-clé pour trouver des recettes",
"KeyWordsSearch": "Saisir un mot-clé pour rechercher",
"nextFlavor": "Saveur suivante",
"option": "Sélectionner un élément",
"verifyOption": "Veuillez sélectionner un élément",
"justDta": "Veuillez saisir des données correctes",
"infoNowUser": "Actuel",
"HealthScore": "Score de santé",
"StandardValue": "Valeur standard",
"bodyData": "Données corporelles",
"titleInheritHeighet": "Prédiction de taille",
"titleBmi": "Évaluation IMC",
"linkBluetoothSuccess": "Connexion réussie, montez sur la balance pour mesurer",
"onDeviceBluetoothTips": "Assurez-vous que l'appareil est allumé",
"openDeviceeMeasureTips": "Assurez-vous que le Bluetooth et la localisation du téléphone sont activés",
"msgSuccess": "Mesure réussie",
"msgFail": "Échec de la mesure",
"msgResetData": "Réinitialisation des données en cours",
"FatFailure": "Échec de la mesure de la masse grasse, voulez-vous sauvegarder ce résultat ?",
"waive": "Abandonner"
}

View File

@ -1,32 +0,0 @@
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,
}

View File

@ -1,637 +0,0 @@
{
"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": "パスワードを入力してください",
"verifyTime": "所要時間を入力してください",
"verifyPasswordTwo": "パスワードを確認入力してください",
"verifyPasswordCorrect": "2回入力したパスワードが一致することを確認してください",
"verifyAgreement": "まず規約を確認し、同意にチェックを入れてください",
"verifyOutLogin": "ログアウトしますか?",
"verifyDeleteUser": "このメンバーを削除しますか?",
"verifyDeleteHistory": "この測定記録を削除しますか?",
"verifyDeleteAccount": "削除後、このアカウントの関連情報はすべて消去され、復元できません。削除しますか?",
"btnConfirm": "確定",
"btnSubmit": "送信",
"btnSancellation": "キャンセル",
"btnContinue": "続ける",
"btnBack": "戻る",
"btnDelete": "削除",
"ConnectionTimeout": "接続失敗、タップして再接続",
"Measuring": "測定中、食品をスケールに載せてください",
"ConnectionSuccessful": "接続成功",
"connectingDevice": "まずデバイスを接続してください",
"Weight": "重量",
"RecordWeight": "食品重量を入力してください",
"connectBluetooth": "Bluetooth接続中",
"SearchBluetooth": "Bluetooth検索中",
"Remeasure": "データ異常、再測定してください!",
"reset": "データ異常、ゼロリセットして再測定してください!",
"remeasure": "再測定",
"StableWeight": "安定重量",
"StableWeightText": "安定重量は:",
"realTimeWeight": "リアルタイム重量",
"realTimeWeightText": "リアルタイム重量は:",
"heightText": "身長は",
"zeroBtn": "ゼロ",
"LockBtn": "ロック",
"SaveResult": "結果を保存",
"measureResultTips": "測定結果の注意事項",
"nowWeight": "今回の測定体重は",
"lastHeight": "前回の測定身長は:",
"lastWeight": "前回の測定体重は:",
"nowHeight": "今回の測定身長は:",
"lastHead": "前回の測定頭囲は:",
"errorOperation": "操作エラー、再測定してください",
"Disconnect": "接続を切断",
"resetBtn": "ゼロリセット",
"UnitBtn": "単位",
"titleHome": "ホーム",
"titleMenu": "レシピ",
"titleMenuAdd": "レシピを追加",
"titleMenuSearch": "レシピを検索",
"titleCount": "食事記録",
"titleCountList": "食材ライブラリ",
"titleCustomKcal": "カロリーをカスタマイズ",
"titleEveryMeal": "食事の詳細",
"titleCountSearch": "食材検索",
"titleeveryDay": "栄養分析",
"titleMe": "マイ",
"titleDetail": "詳細",
"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": "牛乳ml",
"Waterml": "水ml",
"floz": "液量オンス",
"lboz": "ポンド:オンス",
"st": "ストーン:ポンド",
"titleHealth": "健康",
"titleDiet": "食事",
"titleExercise": "運動",
"titleScore": "受験予想得点",
"titleStartScore": "予想得点を開始",
"titleScoreResult": "今回の予想得点",
"titleDepthReport": "詳細レポート",
"infoHead": "頭囲",
"verifyHead": "頭囲を入力してください",
"verifyHeightDad": "父親の身長を入力してください",
"verifyHeightMom": "母親の身長を入力してください",
"verifyRecordType": "測定項目を選択してください",
"verifyRecordTime": "所要時間を入力してください",
"verifyRecordNumber": "回数を入力してください",
"measuringRecord": "測定記録",
"newVersion": "新しいバージョンが見つかりました",
"IsUpdate": "更新しますか?",
"msgCalculating": "計算中",
"titleSkipping": "縄跳びデータ",
"titlevVitalcapacity": "肺活量データ",
"titleCharts": "運動曲線",
"titleContrast": "データ比較",
"UpdateProgram": "後ほど「私たちについて」内でアップデートできます!",
"lungsuctionspeed": "吸気速度",
"averagelungsuction": "平均吸気肺活量",
"isMarginal": "達成基準を満たしているか",
"today_jump_num": "本日の回数",
"today_jump_time": "本日の時間",
"today_jump_kcal": "カロリー",
"jumpFree": "フリージャンプ",
"backwardCount": "カウントダウン",
"Countdown": "カウントダウン",
"jumpFreedom": "自由",
"jumpFreeDegree": "自由回数",
"jumpFreeNumber": "回数",
"jumpTargetDegree": "目標回数",
"jumpUnlimited": "無制限",
"jumpTarget": "目標を調整",
"jumpTargetTime": "目標時間 分:秒",
"MinuteSecond": "分:秒",
"Consumed": "消費",
"LongpressEnd": "長押しで終了",
"AverageSpeed": "平均速度",
"Unit": "回/分",
"Numberofinterrupts": "中断回数",
"Times": "回",
"LongestConsecutive": "最長連続",
"Number": "回",
"trainingsNumber": "トレーニング回数",
"complete": "完了",
"instructStart": "開始",
"instructContinuous": "連続",
"instructStop": "停止",
"instructEnd": "終了",
"instructContinue": "続ける",
"instructPause": "一時停止",
"linkBluetoothFail": "接続が切断されました",
"deviceDisconnection": "トレーニング中にデバイスとの接続が切断されました。デバイスを再接続してからトレーニングを再開してください。",
"ToggleTrainingsTips": "トレーニング中のモード切り替えはできません。トレーニングに戻ります。",
"NOComplete": "今回の縄跳び時間が10秒未満の場合、記録は保存されません。よろしいですか",
"growthAdvice": "成長アドバイス",
"nutrition": "栄養",
"sleep": "睡眠",
"movement": "運動",
"emotion": "感情",
"manualRecording": "手動記録",
"inheritHeighet.title": "身長予測",
"inheritHeighet.dad": "父親の身長",
"inheritHeighet.mom": "母親の身長",
"inheritHeighet.geneticheight": "現在の標準身長",
"inheritHeighet.adultheight": "成人身長予測",
"inheritHeighet.tips0": "データの正確性を保証するため、正しい情報を入力してください。",
"inheritHeighet.tips1": "現在の実際の身長﹤現在の標準身長の場合",
"inheritHeighet.tips2": "子供の後天的な成長環境が身長の伸びに不利です。食事、睡眠、運動、感情などの側面から原因を探り、後天的要因の管理を強化し、子供を最適な成長状態に保ちましょう。",
"inheritHeighet.tips3": "現在の実際の身長﹥現在の標準身長の場合",
"inheritHeighet.tips4": "子供の後天的な成長環境が身長の伸びに有利です。引き続き維持し、後天的要因の管理を強化すれば、成人時に標準より10cm以上高くなる可能性があります。",
"time": "時間(日)",
"weightdiff": "減量",
"weightdiffAugment": "増量",
"fatWdiff": "減脂肪",
"fatWdiffAugment": "増脂肪",
"changeData": "データ変化",
"trend": "傾向",
"before": "前",
"after": "後",
"target_weight": "目標体重",
"cumulative_weight_gain": "累計増量",
"cumulative_weight": "累計減量",
"initial_weight": "初期体重",
"cumulative_day": "減量日数",
"chartsDay": "当日",
"chartsMonth": "月次",
"chartsYear": "年次",
"recordType": "項目",
"recordTime": "所要時間",
"recordNumber": "回数",
"recordNumberFirst": "1回目",
"recordNumberSecond": "2回目",
"recordNumberThird": "3回目",
"linkBluetoothFail2": "Bluetooth接続が切断されました。再接続して測定してください。",
"Ideal": "理想",
"addRecord": "記録を追加",
"HistoricalRcord": "履歴記録",
"TimeSpent": "所要時間",
"minutes": "分",
"btnBMI": "今すぐ計算",
"Record": "記録",
"depthReport": "詳細レポート",
"Enter": "入る",
"target": "目標",
"teach": "作り方を教える",
"SearchRecipes": "食材を入力してレシピを検索",
"RecipeType": "レシピタイプ",
"linkWeighing": "測定に接続",
"Collection": "コレクション",
"Ingredients": "食材",
"Suggestions": "提案",
"Calories": "カロリー",
"remeasure2": "再計量",
"CurrentlyWeighing": "計量中",
"TodayMeals": "本日の食事として保存しますか?",
"SavedSuccessfully": "保存成功",
"ImproveData": "プロフィールを充実させるとさらに表示されます",
"KeyWords": "キーワードを入力してレシピをマッチ",
"KeyWordsSearch": "キーワード入力後、検索",
"nextFlavor": "次の食材",
"option": "項目を選択",
"verifyOption": "項目を選択してください",
"justDta": "正しいデータを入力してください",
"infoNowUser": "現在",
"HealthScore": "健康スコア",
"StandardValue": "標準値",
"bodyData": "身体データ",
"titleInheritHeighet": "身長予測",
"titleBmi": "BMI評価",
"linkBluetoothSuccess": "接続成功、体重計に乗って測定してください",
"onDeviceBluetoothTips": "デバイスの電源が入っていることを確認してください",
"openDeviceeMeasureTips": "携帯電話のBluetoothと位置情報がオンになっていることを確認してください",
"msgSuccess": "測定成功",
"msgFail": "測定失敗",
"msgResetData": "データリセット中",
"FatFailure": "体脂肪測定に失敗しました。今回の測定結果を保存しますか?",
"waive": "破棄"
}

View File

@ -1,319 +0,0 @@
{
"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": "비밀번호를 입력해주세요",
"verifyTime": "소요 시간을 입력해주세요",
"verifyPasswordTwo": "비밀번호를 다시 입력해주세요",
"verifyPasswordCorrect": "두 비밀번호가 일치하는지 확인해주세요",
"verifyAgreement": "먼저 약관에 동의해주세요",
"verifyOutLogin": "로그아웃 하시겠습니까?",
"verifyDeleteUser": "이 멤버를 삭제하시겠습니까?",
"verifyDeleteHistory": "현재 측정 기록을 삭제하시겠습니까?",
"verifyDeleteAccount": "삭제 후, 해당 계정의 모든 연관 정보가 삭제되며 복구할 수 없습니다. 삭제하시겠습니까?",
"btnConfirm": "확인",
"btnSubmit": "제출",
"btnSancellation": "취소",
"btnContinue": "계속",
"btnBack": "돌아가기",
"btnDelete": "삭제",
"ConnectionTimeout": "연결 실패, 클릭하여 재연결",
"Measuring": "측정 중입니다. 음식을 저울에 올려주세요",
"ConnectionSuccessful": "연결 성공",
"connectingDevice": "먼저 기기를 연결해주세요",
"Weight": "무게",
"RecordWeight": "음식 무게를 입력해주세요",
"connectBluetooth": "블루투스 연결 중",
"SearchBluetooth": "블루투스 검색 중",
"Remeasure": "데이터 이상, 다시 측정해주세요!",
"reset": "데이터 이상, 초기화 후 다시 측정해주세요!",
"remeasure": "다시 측정",
"StableWeight": "안정 무게",
"StableWeightText": "안정된 체중은:",
"realTimeWeight": "실시간 무게",
"realTimeWeightText": "실시간 체중은:",
"heightText": "신장은",
"zeroBtn": "초기화",
"LockBtn": "잠금",
"SaveResult": "결과 저장",
"measureResultTips": "측정 결과 안내",
"nowWeight": "이번 측정 체중은",
"lastHeight": "지난 측정 신장:",
"lastWeight": "지난 측정 체중:",
"nowHeight": "이번 측정 신장:",
"lastHead": "지난 측정 두위:",
"errorOperation": "작업 오류, 다시 측정해주세요",
"Disconnect": "연결 해제",
"resetBtn": "초기화",
"UnitBtn": "단위",
"titleHome": "홈",
"titleMenu": "레시피",
"titleMenuAdd": "레시피 추가",
"titleMenuSearch": "레시피 검색",
"titleCount": "식사 기록",
"titleCountList": "식재료 목록",
"titleCustomKcal": "칼로리 사용자 지정",
"titleEveryMeal": "식사 상세",
"titleCountSearch": "식재료 검색",
"titleeveryDay": "영양 분석",
"titleMe": "마이페이지",
"titleDetail": "상세",
"titleHistory": "식사 기록",
"titlePhone": "휴대폰 번호 등록",
"titleEmail": "이메일 등록",
"titlePasswordEdit": "비밀번호 변경",
"titleSet": "설정",
"titleDate": "날짜",
"titleMember": "프로필",
"titleManage": "멤버 관리",
"titleManageAdd": "멤버 추가",
"titleAboutUs": "회사 소개",
"titleSetPassword": "비밀번호 설정",
"titlePassword": "비밀번호",
"titleConfirmPassword": "비밀번호 확인",
"titleForgotPassword": "비밀번호 찾기",
"titleCode": "인증번호",
"titleLanguage": "언어 설정",
"titleSendCode": "인증번호 받기",
"titleSendCodeRetry": "초 후 재발송",
"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": "우유 ml",
"Waterml": "물 ml",
"floz": "액량 온스",
"lboz": "파운드:온스",
"st": "스톤:파운드",
"titleHealth": "건강",
"titleDiet": "식단",
"titleExercise": "운동",
"titleScore": "중등학교 입시 예상 점수",
"titleStartScore": "예상 점수 시작",
"titleScoreResult": "이번 예상 점수 결과",
"titleDepthReport": "심층 리포트",
"infoHead": "두위",
"verifyHead": "두위를 입력해주세요",
"verifyHeightDad": "아버지 신장을 입력해주세요",
"verifyHeightMom": "어머니 신장을 입력해주세요",
"verifyRecordType": "측정 항목을 선택해주세요",
"verifyRecordTime": "소요 시간을 입력해주세요",
"verifyRecordNumber": "개수를 입력해주세요",
"measuringRecord": "측정 기록",
"newVersion": "새 버전 발견",
"IsUpdate": "업데이트 하시겠습니까?",
"msgCalculating": "계산 중",
"titleSkipping": "줄넘기 데이터",
"titlevVitalcapacity": "폐활량 데이터",
"titleCharts": "운동 곡선",
"titleContrast": "데이터 비교",
"UpdateProgram": "나중에 '회사 소개'에서 업데이트 가능합니다!",
"lungsuctionspeed": "흡기 속도",
"averagelungsuction": "평균 흡기 폐활량",
"isMarginal": "달성 여부",
"today_jump_num": "오늘 횟수",
"today_jump_time": "오늘 시간",
"today_jump_kcal": "칼로리",
"jumpFree": "자유 줄넘기",
"backwardCount": "카운트 다운",
"Countdown": "카운트다운",
"jumpFreedom": "자유",
"jumpFreeDegree": "자유 횟수",
"jumpFreeNumber": "횟수",
"jumpTargetDegree": "목표 횟수",
"jumpUnlimited": "무제한",
"jumpTarget": "목표 설정",
"jumpTargetTime": "목표 시간 분:초",
"MinuteSecond": "분:초",
"Consumed": "소모",
"LongpressEnd": "길게 눌러 종료",
"AverageSpeed": "평균 속도",
"Unit": "회/분",
"Numberofinterrupts": "중단 횟수",
"Times": "회",
"LongestConsecutive": "최장 연속",
"Number": "개",
"trainingsNumber": "훈련 횟수",
"complete": "완료",
"instructStart": "시작",
"instructContinuous": "연속",
"instructStop": "중지",
"instructEnd": "종료",
"instructContinue": "계속",
"instructPause": "일시 정지",
"linkBluetoothFail": "연결이 끊어졌습니다",
"deviceDisconnection": "훈련 중 기기 연결이 끊어졌습니다. 기기를 다시 연결한 후 훈련을 시작해주세요",
"ToggleTrainingsTips": "훈련 중에는 훈련을 전환하지 마세요. 훈련으로 돌아가기",
"NOComplete": "이번 줄넘기 시간이 10초 미만이어서 기록이 저장되지 않습니다.",
"growthAdvice": "성장 조언",
"nutrition": "영양",
"sleep": "수면",
"movement": "운동",
"emotion": "정서",
"manualRecording": "수동 기록",
"inheritHeighet.title": "신장 예측",
"inheritHeighet.dad": "아버지 신장",
"inheritHeighet.mom": "어머니 신장",
"inheritHeighet.geneticheight": "현재 표준 신장",
"inheritHeighet.adultheight": "성인 신장 예측",
"inheritHeighet.tips0": "정확한 데이터를 위해 정확한 정보를 입력해주세요",
"inheritHeighet.tips1": "만약 현재 실제 신장 < 현재 표준 신장",
"inheritHeighet.tips2": "아이의 후천적 성장 환경이 키 성장에 불리합니다. 식단, 수면, 운동, 정서 등을 점검해주세요. 후천적 요인 관리를 강화해 아이의 성장 환경을 최상으로 유지해주세요.",
"inheritHeighet.tips3": "만약 현재 실제 신장 > 현재 표준 신장",
"inheritHeighet.tips4": "아이의 후천적 성장 환경이 키 성장에 유리합니다. 현재 상태를 유지하고 후천적 요인 관리를 강화하면 아이의 성인 신장이 표준보다 10cm 이상 더 클 수 있습니다.",
"time": "시간(일)",
"weightdiff": "체중 감량",
"weightdiffAugment": "체중 증가",
"fatWdiff": "체지방 감소",
"fatWdiffAugment": "체지방 증가",
"changeData": "데이터 변화",
"trend": "추세",
"before": "이전",
"after": "이후",
"target_weight": "목표 체중",
"cumulative_weight_gain": "누적 증량",
"cumulative_weight": "누적 감량",
"initial_weight": "초기 체중",
"cumulative_day": "감량 일수",
"chartsDay": "당일",
"chartsMonth": "월간",
"chartsYear": "연간",
"recordType": "항목",
"recordTime": "소요 시간",
"recordNumber": "개수",
"recordNumberFirst": "첫 번째",
"recordNumberSecond": "두 번째",
"recordNumberThird": "세 번째",
"linkBluetoothFail2": "블루투스 연결이 끊어졌습니다. 다시 연결 후 측정해주세요",
"Ideal": "이상",
"addRecord": "기록 추가",
"HistoricalRcord": "기록 내역",
"TimeSpent": "소요 시간",
"minutes": "분",
"btnBMI": "지금 계산",
"Record": "기록",
"depthReport": "심층 리포트",
"Enter": "진입",
"target": "목표",
"teach": "만드는 법",
"SearchRecipes": "식재료를 입력하여 빠르게 레시피 검색",
"RecipeType": "레시피 종류",
"linkWeighing": "연결 측정",
"Collection": "컬렉션",
"Ingredients": "재료",
"Suggestions": "제안",
"Calories": "칼로리",
"remeasure2": "재측정",
"CurrentlyWeighing": "계량 중",
"TodayMeals": "오늘의 식사로 저장하시겠습니까?",
"SavedSuccessfully": "저장 성공",
"ImproveData": "정보 수정 후 더 보기",
"KeyWords": "키워드 입력하여 레시피 검색",
"KeyWordsSearch": "키워드 입력 후 검색",
"nextFlavor": "다음 맛",
"option": "항목 선택",
"verifyOption": "항목을 선택해주세요",
"justDta": "올바른 데이터를 입력해주세요",
"infoNowUser": "현재",
"HealthScore": "건강 점수",
"StandardValue": "표준값",
"bodyData": "신체 데이터",
"titleInheritHeighet": "신장 예측",
"titleBmi": "BMI 평가",
"linkBluetoothSuccess": "연결 성공, 체중계에 올라가 측정해주세요",
"onDeviceBluetoothTips": "기기가 켜져 있는지 확인해주세요",
"openDeviceeMeasureTips": "휴대폰 블루투스와 위치 정보가 켜져 있는지 확인해주세요",
"msgSuccess": "측정 성공",
"msgFail": "측정 실패",
"msgResetData": "데이터 재설정 중",
"FatFailure": "체지방 측정 실패, 이번 측정 결과를 저장하시겠습니까?",
"waive": "포기"
}

View File

@ -1,319 +0,0 @@
{
"msgTitle": "Dica",
"msgUpgradeFail": "Falha na atualização",
"msgDownloading": "Baixando",
"msgLatestVersion": "Já é a versão mais recente!",
"msgCancel": "Você cancelou a operação!",
"msgLoginSuccess": "Login bem-sucedido!",
"msgDelete": "Excluído com sucesso",
"msgSetSuccess": "Configurado com sucesso",
"msgBottom": "Fim, veja outros",
"msgNoMoreData": "Sem dados no momento!",
"msgSetPasswordSuccess": "Senha definida com sucesso, acessando o programa!",
"msgAddUser": "Nenhum membro, adicione primeiro",
"verifyNickName": "Por favor, insira um apelido",
"verifyNotOptional": "Data futura não disponível",
"verifyDate": "Por favor, selecione a data da medição",
"verifyBirthday": "Por favor, selecione a data de nascimento",
"verifyHeight": "Por favor, insira a altura",
"verifyWeight": "Por favor, insira o peso",
"verifyGender": "Por favor, selecione o gênero",
"verifyBontrast": "Por favor, selecione os dados",
"verifyBodyDate": "Por favor, selecione o tempo correto",
"verifyRecord": "Por favor, insira",
"verifyPicker": "Por favor, selecione",
"verifyAccount": "Por favor, insira o número de telefone ou e-mail correto",
"verifyEmail": "Por favor, insira o e-mail",
"verifyEmailCorrect": "Por favor, insira um e-mail válido",
"verifyMobile": "Por favor, insira o número de telefone",
"verifyMobileCorrect": "Por favor, insira um número de telefone válido",
"verifyCode": "Por favor, insira o código de verificação",
"verifyPassword": "Por favor, insira a senha",
"verifyTime": "Por favor, insira o tempo gasto",
"verifyPasswordTwo": "Por favor, confirme a senha",
"verifyPasswordCorrect": "Por favor, certifique-se de que as duas senhas coincidem",
"verifyAgreement": "Por favor, confirme e marque o acordo primeiro",
"verifyOutLogin": "Deseja sair?",
"verifyDeleteUser": "Deseja excluir este membro?",
"verifyDeleteHistory": "Deseja excluir o registro de medição atual?",
"verifyDeleteAccount": "Após a exclusão, todas as informações associadas a esta conta serão limpas e não poderão ser recuperadas. Confirmar exclusão?",
"btnConfirm": "Confirmar",
"btnSubmit": "Enviar",
"btnSancellation": "Cancelar",
"btnContinue": "Continuar",
"btnBack": "Voltar",
"btnDelete": "Excluir",
"ConnectionTimeout": "Falha na conexão, clique para reconectar",
"Measuring": "Medindo, coloque o alimento na balança",
"ConnectionSuccessful": "Conexão bem-sucedida",
"connectingDevice": "Conecte o dispositivo primeiro",
"Weight": "Peso",
"RecordWeight": "Por favor, insira o peso do alimento",
"connectBluetooth": "Conectando Bluetooth",
"SearchBluetooth": "Pesquisando Bluetooth",
"Remeasure": "Dados anômalos, meça novamente!",
"reset": "Dados anômalos, zere e meça novamente!",
"remeasure": "Medir novamente",
"StableWeight": "Peso estável",
"StableWeightText": "Seu peso estável é:",
"realTimeWeight": "Peso em tempo real",
"realTimeWeightText": "Seu peso em tempo real é:",
"heightText": "Sua altura é",
"zeroBtn": "Zerar",
"LockBtn": "Travar",
"SaveResult": "Salvar resultado",
"measureResultTips": "Dica de resultado de medição",
"nowWeight": "Peso desta medição",
"lastHeight": "Altura da medição anterior:",
"lastWeight": "Peso da medição anterior:",
"nowHeight": "Altura desta medição:",
"lastHead": "Circunferência da cabeça da medição anterior:",
"errorOperation": "Operação incorreta, meça novamente",
"Disconnect": "Desconectar",
"resetBtn": "Zerar",
"UnitBtn": "Unidade",
"titleHome": "Início",
"titleMenu": "Receitas",
"titleMenuAdd": "Adicionar receita",
"titleMenuSearch": "Buscar receita",
"titleCount": "Contar calorias",
"titleCountList": "Biblioteca de ingredientes",
"titleCustomKcal": "Calorias personalizadas",
"titleEveryMeal": "Detalhes da refeição",
"titleCountSearch": "Buscar ingredientes",
"titleeveryDay": "Análise nutricional",
"titleMe": "Meu",
"titleDetail": "Detalhes",
"titleHistory": "Registro alimentar",
"titlePhone": "Vincular número de telefone",
"titleEmail": "Vincular e-mail",
"titlePasswordEdit": "Alterar senha",
"titleSet": "Configurações",
"titleDate": "Data",
"titleMember": "Perfil",
"titleManage": "Gerenciamento de membros",
"titleManageAdd": "Adicionar membro",
"titleAboutUs": "Sobre nós",
"titleSetPassword": "Definir senha",
"titlePassword": "Senha",
"titleConfirmPassword": "Confirmar senha",
"titleForgotPassword": "Esqueci a senha",
"titleCode": "Código de verificação",
"titleLanguage": "Configurações de idioma",
"titleSendCode": "Obter código",
"titleSendCodeRetry": "Reenviar em S",
"titleLogin": "Entrar",
"titleRegister": "Registrar",
"titleToggleLogin": "Alternar login",
"titleAccountText": "Telefone/E-mail",
"titleAgreementText": "Ler e concordar com",
"titleAgreementContntText": "Política de Privacidade",
"titleVersionUpdate": "Atualização de versão",
"titleNewVersion": "Nova versão",
"infoActivityCoefficient": "Coeficiente de atividade",
"infoPersonalProfile": "Perfil pessoal",
"infoMyRecipes": "Minhas receitas",
"infoMyCollection": "Meus favoritos",
"infoAvatar": "Avatar",
"infoNickname": "Apelido",
"infoMobile": "Número de telefone",
"infoEmail": "E-mail",
"infoAge": "Idade",
"infoAgeunit": "anos",
"infoGender": "Gênero",
"infoMan": "Masculino",
"infoWoman": "Feminino",
"infoUnknown": "Desconhecido",
"infoBirthday": "Data de nascimento",
"infoHeight": "Altura",
"infoWeight": "Peso",
"btnEdit": "Editar",
"btnAdd": "Adicionar",
"btnDetail": "Ver detalhes",
"btnDeleteAccount": "Excluir conta",
"btnLogOut": "Sair",
"countIntake": "Ingestão",
"countCalorieIntake": "Ingestão calórica",
"countMealdetails": "Detalhes da refeição",
"countAddFood": "Adicionar alimento",
"countNutritionalProportion": "Proporção nutricional",
"countComponentStatistics": "Estatísticas de componentes",
"countCalorieAnalysis": "Análise de calorias",
"countNutrientElementEnergyProportion": "Proporção de energia dos elementos nutricionais",
"countNutritionClassification": "Classificação nutricional",
"countNutritionElementRankingList": "Ranking de elementos nutricionais",
"countFoodTypes": "Tipos de alimento",
"total": "Total",
"records": "registros",
"Search": "Buscar",
"VoiceSearch": "Busca por voz",
"Save": "Salvar",
"noMoreData": "Não há mais dados",
"HistoricalSearch": "Busca histórica",
"wantSearch": "Talvez você queira buscar",
"verifyCalorie": "Por favor, insira calorias",
"kcal": "Calorias",
"countNoFood": "Sem alimentos no momento",
"msgLoginTips": "Entre para ver mais",
"Nutrients": "Nutrientes",
"Content": "Conteúdo",
"CaloriesAndnutrients": "Calorias e nutrientes",
"ImproveInformation": "Melhorar informações",
"WhetherTodelete": "Excluir?",
"BusinessCooperation": "Cooperação comercial",
"verifyActivityCoefficient": "Por favor, selecione o coeficiente de atividade",
"devicesTips": "Dispositivo não registrado, entre em contato com o vendedor para autenticação do sistema",
"kg": "Quilograma",
"g": "Grama",
"oz": "Onça",
"ml": "Mililitro",
"lb": "Libra",
"milkml": "Leite ml",
"Waterml": "Água ml",
"floz": "Onça fluida",
"lboz": "Libra:Onça",
"st": "st:lb",
"titleHealth": "Saúde",
"titleDiet": "Dieta",
"titleExercise": "Exercício",
"titleScore": "Estimativa de pontuação",
"titleStartScore": "Iniciar estimativa",
"titleScoreResult": "Resultado desta estimativa",
"titleDepthReport": "Relatório detalhado",
"infoHead": "Circunferência da cabeça",
"verifyHead": "Por favor, insira a circunferência da cabeça",
"verifyHeightDad": "Por favor, insira a altura do pai",
"verifyHeightMom": "Por favor, insira a altura da mãe",
"verifyRecordType": "Por favor, selecione o item de medição",
"verifyRecordTime": "Por favor, insira a duração",
"verifyRecordNumber": "Por favor, insira a quantidade",
"measuringRecord": "Registro de medição",
"newVersion": "Nova versão encontrada",
"IsUpdate": "Atualizar?",
"msgCalculating": "Calculando",
"titleSkipping": "Dados de pular corda",
"titlevVitalcapacity": "Dados de capacidade pulmonar",
"titleCharts": "Curva de exercício",
"titleContrast": "Comparação de dados",
"UpdateProgram": "Pode atualizar mais tarde em 'Sobre nós'!",
"lungsuctionspeed": "Velocidade de inspiração",
"averagelungsuction": "Capacidade pulmonar média de inspiração",
"isMarginal": "Atende ao padrão?",
"today_jump_num": "Quantidade de hoje",
"today_jump_time": "Duração de hoje",
"today_jump_kcal": "Calorias",
"jumpFree": "Pular livremente",
"backwardCount": "Contagem regressiva",
"Countdown": "Contagem regressiva",
"jumpFreedom": "Livre",
"jumpFreeDegree": "Vezes livres",
"jumpFreeNumber": "Quantidade",
"jumpTargetDegree": "Vezes alvo",
"jumpUnlimited": "Ilimitado",
"jumpTarget": "Ajustar objetivo",
"jumpTargetTime": "Duração alvo min:seg",
"MinuteSecond": "min:seg",
"Consumed": "Consumido",
"LongpressEnd": "Pressione para terminar",
"AverageSpeed": "Velocidade média",
"Unit": "unidades/minuto",
"Numberofinterrupts": "Número de interrupções",
"Times": "vezes",
"LongestConsecutive": "Mais longo consecutivo",
"Number": "unidades",
"trainingsNumber": "Número de treinamentos",
"complete": "Concluído",
"instructStart": "Iniciar",
"instructContinuous": "Contínuo",
"instructStop": "Parar",
"instructEnd": "Fim",
"instructContinue": "Continuar",
"instructPause": "Pausar",
"linkBluetoothFail": "Conexão perdida",
"deviceDisconnection": "A conexão com o dispositivo foi perdida durante o treinamento, reconecte o dispositivo para continuar",
"ToggleTrainingsTips": "Não alterne o treinamento durante o processo, retorne ao treinamento",
"NOComplete": "Este salto durou menos de 10 segundos, o registro não será salvo?",
"growthAdvice": "Conselhos de crescimento",
"nutrition": "Nutrição",
"sleep": "Sono",
"movement": "Movimento",
"emotion": "Emoção",
"manualRecording": "Registro manual",
"inheritHeighet.title": "Previsão de altura",
"inheritHeighet.dad": "Altura do pai",
"inheritHeighet.mom": "Altura da mãe",
"inheritHeighet.geneticheight": "Altura padrão atual",
"inheritHeighet.adultheight": "Previsão de altura adulta",
"inheritHeighet.tips0": "Para garantir a precisão dos dados, preencha informações reais com cuidado",
"inheritHeighet.tips1": "Se a altura atual real < altura padrão atual",
"inheritHeighet.tips2": "O ambiente de crescimento pós-natal da criança não é favorável para crescer. Verifique a dieta, sono, exercício, emoções, etc. Reforce a gestão de fatores pós-natais para colocar a criança no melhor estado de crescimento.",
"inheritHeighet.tips3": "Se a altura atual real > altura padrão atual",
"inheritHeighet.tips4": "O ambiente de crescimento pós-natal da criança é favorável para crescer. Continue assim, reforçando a gestão de fatores pós-natais, e a criança pode ser mais de 10cm mais alta que o padrão quando adulta.",
"time": "Tempo (dias)",
"weightdiff": "Perda de peso",
"weightdiffAugment": "Ganho de peso",
"fatWdiff": "Perda de gordura",
"fatWdiffAugment": "Ganho de gordura",
"changeData": "Mudança de dados",
"trend": "Tendência",
"before": "Antes",
"after": "Depois",
"target_weight": "Peso alvo",
"cumulative_weight_gain": "Ganho de peso acumulado",
"cumulative_weight": "Perda de peso acumulada",
"initial_weight": "Peso inicial",
"cumulative_day": "Dias de perda de peso",
"chartsDay": "Hoje",
"chartsMonth": "Mensal",
"chartsYear": "Anual",
"recordType": "Item",
"recordTime": "Duração",
"recordNumber": "Quantidade",
"recordNumberFirst": "Primeira",
"recordNumberSecond": "Segunda",
"recordNumberThird": "Terceira",
"linkBluetoothFail2": "Conexão Bluetooth perdida, reconecte para medir",
"Ideal": "Ideal",
"addRecord": "Adicionar registro",
"HistoricalRcord": "Registro histórico",
"TimeSpent": "Tempo gasto",
"minutes": "minutos",
"btnBMI": "Calcular agora",
"Record": "Registro",
"depthReport": "Relatório detalhado",
"Enter": "Entrar",
"target": "Objetivo",
"teach": "Ensinar a fazer",
"SearchRecipes": "Insira ingredientes para buscar receitas rapidamente",
"RecipeType": "Tipo de receita",
"linkWeighing": "Conectar e pesar",
"Collection": "Favoritos",
"Ingredients": "Ingredientes",
"Suggestions": "Sugestões",
"Calories": "Calorias",
"remeasure2": "Repesar",
"CurrentlyWeighing": "Pesando",
"TodayMeals": "Salvar como refeição de hoje?",
"SavedSuccessfully": "Salvo com sucesso",
"ImproveData": "Complete os dados para ver mais",
"KeyWords": "Insira palavras-chave para buscar receitas",
"KeyWordsSearch": "Buscar após inserir palavras-chave",
"nextFlavor": "Próximo sabor",
"option": "Selecionar item",
"verifyOption": "Por favor, selecione o item",
"justDta": "Por favor, insira dados corretos",
"infoNowUser": "Atual",
"HealthScore": "Pontuação de saúde",
"StandardValue": "Valor padrão",
"bodyData": "Dados corporais",
"titleInheritHeighet": "Previsão de altura",
"titleBmi": "Avaliação de IMC",
"linkBluetoothSuccess": "Conexão bem-sucedida, suba na balança para medir",
"onDeviceBluetoothTips": "Verifique se o dispositivo está ligado",
"openDeviceeMeasureTips": "Verifique se o Bluetooth e a localização do telefone estão ativados",
"msgSuccess": "Medição bem-sucedida",
"msgFail": "Falha na medição",
"msgResetData": "Reiniciando dados",
"FatFailure": "Falha na medição de gordura corporal, salvar este resultado?",
"waive": "Desistir"
}

View File

@ -1,319 +0,0 @@
{
"msgTitle": "Важное напоминание",
"msgUpgradeFail": "Ошибка обновления",
"msgDownloading": "Идет загрузка",
"msgLatestVersion": "У вас уже последняя версия!",
"msgCancel": "Вы отменили действие!",
"msgLoginSuccess": "Успешный вход!",
"msgDelete": "Удаление успешно",
"msgSetSuccess": "Настройка успешно сохранена",
"msgBottom": "Достигнут конец, посмотрите что-нибудь ещё",
"msgNoMoreData": "Нет данных!",
"msgSetPasswordSuccess": "Пароль успешно установлен, переходим в программу!",
"msgAddUser": "Пока нет участников, сначала добавьте",
"verifyNickName": "Введите псевдоним",
"verifyNotOptional": "Будущие даты недоступны",
"verifyDate": "Выберите дату измерения",
"verifyBirthday": "Выберите дату рождения",
"verifyHeight": "Введите рост",
"verifyWeight": "Введите вес",
"verifyGender": "Выберите пол",
"verifyBontrast": "Выберите данные",
"verifyBodyDate": "Выберите правильное время",
"verifyRecord": "Введите",
"verifyPicker": "Выберите",
"verifyAccount": "Введите правильный номер телефона или email",
"verifyEmail": "Введите адрес электронной почты",
"verifyEmailCorrect": "Введите правильный адрес электронной почты",
"verifyMobile": "Введите номер телефона",
"verifyMobileCorrect": "Введите правильный номер телефона",
"verifyCode": "Введите проверочный код",
"verifyPassword": "Введите пароль",
"verifyTime": "Введите затраченное время",
"verifyPasswordTwo": "Подтвердите пароль",
"verifyPasswordCorrect": "Убедитесь, что оба поля пароля совпадают",
"verifyAgreement": "Сначала подтвердите и отметьте соглашение",
"verifyOutLogin": "Выйти из системы?",
"verifyDeleteUser": "Удалить этого участника?",
"verifyDeleteHistory": "Удалить текущую запись измерения?",
"verifyDeleteAccount": "После удаления вся связанная информация этой учетной записи будет очищена и не подлежит восстановлению. Удалить?",
"btnConfirm": "Подтвердить",
"btnSubmit": "Отправить",
"btnSancellation": "Отмена",
"btnContinue": "Продолжить",
"btnBack": "Назад",
"btnDelete": "Удалить",
"ConnectionTimeout": "Ошибка подключения. Нажмите для повторного подключения",
"Measuring": "Идет измерение, поместите еду на весы",
"ConnectionSuccessful": "Подключение успешно",
"connectingDevice": "Сначала подключите устройство",
"Weight": "Вес",
"RecordWeight": "Введите вес еды",
"connectBluetooth": "Идет подключение Bluetooth",
"SearchBluetooth": "Идет поиск Bluetooth",
"Remeasure": "Данные неверны, выполните измерение заново!",
"reset": "Данные неверны, сбросьте и выполните измерение заново!",
"remeasure": "Повторное измерение",
"StableWeight": "Стабильный вес",
"StableWeightText": "Ваш стабильный вес:",
"realTimeWeight": "Вес в реальном времени",
"realTimeWeightText": "Ваш вес в реальном времени:",
"heightText": "Ваш рост",
"zeroBtn": "Сбросить",
"LockBtn": "Заблокировать",
"SaveResult": "Сохранить результат",
"measureResultTips": "Подсказка о результате измерения",
"nowWeight": "Вес текущего измерения",
"lastHeight": "Рост при прошлом измерении:",
"lastWeight": "Вес при прошлом измерении:",
"nowHeight": "Рост текущего измерения:",
"lastHead": "Обхват головы при прошлом измерении:",
"errorOperation": "Ошибка операции, выполните измерение заново",
"Disconnect": "Отключить",
"resetBtn": "Сбросить",
"UnitBtn": "Единицы",
"titleHome": "Главная",
"titleMenu": "Рецепты",
"titleMenuAdd": "Добавить рецепт",
"titleMenuSearch": "Поиск рецептов",
"titleCount": "Подсчет еды",
"titleCountList": "База продуктов",
"titleCustomKcal": "Настроить калории",
"titleEveryMeal": "Детали приема пищи",
"titleCountSearch": "Поиск продуктов",
"titleeveryDay": "Анализ питания",
"titleMe": "Моё",
"titleDetail": "Подробности",
"titleHistory": "История питания",
"titlePhone": "Привязать номер телефона",
"titleEmail": "Привязать email",
"titlePasswordEdit": "Изменить пароль",
"titleSet": "Настройки",
"titleDate": "Дата",
"titleMember": "Профиль",
"titleManage": "Управление участниками",
"titleManageAdd": "Добавить участника",
"titleAboutUs": "О нас",
"titleSetPassword": "Установить пароль",
"titlePassword": "Пароль",
"titleConfirmPassword": "Подтвердить пароль",
"titleForgotPassword": "Забыли пароль",
"titleCode": "Проверочный код",
"titleLanguage": "Настройки языка",
"titleSendCode": "Получить код",
"titleSendCodeRetry": "Повторить через S сек.",
"titleLogin": "Вход",
"titleRegister": "Регистрация",
"titleToggleLogin": "Переключить вход",
"titleAccountText": "Номер телефона/Email",
"titleAgreementText": "Прочитайте и согласитесь с",
"titleAgreementContntText": "Политикой конфиденциальности",
"titleVersionUpdate": "Обновление версии",
"titleNewVersion": "Новая версия",
"infoActivityCoefficient": "Коэффициент активности",
"infoPersonalProfile": "Личные данные",
"infoMyRecipes": "Мои рецепты",
"infoMyCollection": "Мои избранные",
"infoAvatar": "Аватар",
"infoNickname": "Псевдоним",
"infoMobile": "Номер телефона",
"infoEmail": "Email",
"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": "молоко мл",
"Waterml": "вода мл",
"floz": "жидк. унция",
"lboz": "фунт:унция",
"st": "ст:фунт",
"titleHealth": "Здоровье",
"titleDiet": "Питание",
"titleExercise": "Спорт",
"titleScore": "Оценка баллов ЦЗ",
"titleStartScore": "Начать оценку",
"titleScoreResult": "Результат этой оценки",
"titleDepthReport": "Подробный отчет",
"infoHead": "Обхват головы",
"verifyHead": "Введите обхват головы",
"verifyHeightDad": "Введите рост отца",
"verifyHeightMom": "Введите рост матери",
"verifyRecordType": "Выберите проект измерения",
"verifyRecordTime": "Введите продолжительность",
"verifyRecordNumber": "Введите количество",
"measuringRecord": "Запись измерений",
"newVersion": "Обнаружена новая версия",
"IsUpdate": "Обновить?",
"msgCalculating": "Идет вычисление",
"titleSkipping": "Данные по скакалке",
"titlevVitalcapacity": "Данные жизненной емкости легких",
"titleCharts": "График активности",
"titleContrast": "Сравнение данных",
"UpdateProgram": "Позже вы сможете обновить программу в разделе 'О нас'!",
"lungsuctionspeed": "Скорость вдоха",
"averagelungsuction": "Средняя жизненная емкость легких на вдохе",
"isMarginal": "Соответствует ли норме",
"today_jump_num": "Количество за сегодня",
"today_jump_time": "Продолжительность за сегодня",
"today_jump_kcal": "Калории",
"jumpFree": "Свободные прыжки",
"backwardCount": "Обратный отсчет",
"Countdown": "Обратный отсчет",
"jumpFreedom": "Свободный",
"jumpFreeDegree": "Свободное количество",
"jumpFreeNumber": "Количество",
"jumpTargetDegree": "Целевое количество",
"jumpUnlimited": "Без ограничений",
"jumpTarget": "Настроить цель",
"jumpTargetTime": "Целевая продолжительность мин:сек",
"MinuteSecond": "мин:сек",
"Consumed": "Потрачено",
"LongpressEnd": "Удерживайте для завершения",
"AverageSpeed": "Средняя скорость",
"Unit": "раз/мин",
"Numberofinterrupts": "Количество прерываний",
"Times": "раз",
"LongestConsecutive": "Самая длинная серия",
"Number": "шт.",
"trainingsNumber": "Количество тренировок",
"complete": "Завершено",
"instructStart": "Начать",
"instructContinuous": "Непрерывный",
"instructStop": "Остановить",
"instructEnd": "Завершить",
"instructContinue": "Продолжить",
"instructPause": "Пауза",
"linkBluetoothFail": "Подключение разорвано",
"deviceDisconnection": "Во время тренировки соединение с устройством прервано. Переподключите устройство, чтобы продолжить тренировку",
"ToggleTrainingsTips": "Не переключайте тренировку во время её выполнения. Вернитесь к тренировке",
"NOComplete": "Продолжительность этой тренировки со скакалкой менее 10 секунд. Запись не будет сохранена?",
"growthAdvice": "Советы по развитию",
"nutrition": "Питание",
"sleep": "Сон",
"movement": "Движение",
"emotion": "Эмоции",
"manualRecording": "Ручная запись",
"inheritHeighet.title": "Прогноз роста",
"inheritHeighet.dad": "Рост отца",
"inheritHeighet.mom": "Рост матери",
"inheritHeighet.geneticheight": "Текущий стандартный рост",
"inheritHeighet.adultheight": "Прогноз взрослого роста",
"inheritHeighet.tips0": "Для точности данных, пожалуйста, внимательно заполняйте реальную информацию",
"inheritHeighet.tips1": "Если текущий фактический рост < текущего стандартного роста",
"inheritHeighet.tips2": "Среда для роста ребенка неблагоприятна для увеличения роста. Проверьте факторы питания, сна, движения, эмоций. Улучшите управление внешними факторами, чтобы ребенок находился в оптимальном состоянии для роста.",
"inheritHeighet.tips3": "Если текущий фактический рост > текущего стандартного роста",
"inheritHeighet.tips4": "Среда для роста ребенка благоприятна для увеличения роста. Продолжайте в том же духе, улучшайте управление внешними факторами, и рост ребенка во взрослом возрасте может превысить стандарт более чем на 10 см.",
"time": "Время (дни)",
"weightdiff": "Похудение",
"weightdiffAugment": "Набор веса",
"fatWdiff": "Потеря жира",
"fatWdiffAugment": "Набор жира",
"changeData": "Изменение данных",
"trend": "Тенденция",
"before": "До",
"after": "После",
"target_weight": "Целевой вес",
"cumulative_weight_gain": "Суммарный набор веса",
"cumulative_weight": "Суммарная потеря веса",
"initial_weight": "Исходный вес",
"cumulative_day": "Дней похудения",
"chartsDay": "За день",
"chartsMonth": "За месяц",
"chartsYear": "За год",
"recordType": "Проект",
"recordTime": "Продолжительность",
"recordNumber": "Количество",
"recordNumberFirst": "Первый",
"recordNumberSecond": "Второй",
"recordNumberThird": "Третий",
"linkBluetoothFail2": "Соединение Bluetooth разорвано, переподключитесь и выполните измерение заново",
"Ideal": "Идеальный",
"addRecord": "Добавить запись",
"HistoricalRcord": "История записей",
"TimeSpent": "Затраченное время",
"minutes": "минут",
"btnBMI": "Рассчитать сейчас",
"Record": "Запись",
"depthReport": "Подробный отчет",
"Enter": "Войти",
"target": "Цель",
"teach": "Научим",
"SearchRecipes": "Введите продукт для быстрого поиска рецептов",
"RecipeType": "Тип рецепта",
"linkWeighing": "Подключить и измерить",
"Collection": "Избранное",
"Ingredients": "Ингредиенты",
"Suggestions": "Рекомендации",
"Calories": "Калории",
"remeasure2": "Взвесить снова",
"CurrentlyWeighing": "Идет взвешивание",
"TodayMeals": "Сохранить как сегодняшний рацион?",
"SavedSuccessfully": "Успешно сохранено",
"ImproveData": "Заполните профиль, чтобы увидеть больше",
"KeyWords": "Введите ключевые слова для поиска рецептов",
"KeyWordsSearch": "Введите ключевые слова для поиска",
"nextFlavor": "Следующий вкус",
"option": "Выберите проект",
"verifyOption": "Выберите проект",
"justDta": "Введите правильные данные",
"infoNowUser": "Текущий",
"HealthScore": "Оценка здоровья",
"StandardValue": "Стандартное значение",
"bodyData": "Данные тела",
"titleInheritHeighet": "Прогноз роста",
"titleBmi": "Оценка ИМТ",
"linkBluetoothSuccess": "Подключение успешно, встаньте на весы для измерения",
"onDeviceBluetoothTips": "Убедитесь, что устройство включено",
"openDeviceeMeasureTips": "Убедитесь, что Bluetooth и службы геолокации на телефоне включены",
"msgSuccess": "Измерение успешно",
"msgFail": "Ошибка измерения",
"msgResetData": "Идет сброс данных",
"FatFailure":"Ошибка измерения жира. Сохранить этот результат измерения?",
"waive":"Отменить"
}

View File

@ -1,15 +0,0 @@
{
"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"
}

View File

@ -1,320 +0,0 @@
{
"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": "请输入密码",
"verifyTime": "请输入用时",
"verifyPasswordTwo": "请确认密码",
"verifyPasswordCorrect": "请确认两次密码填写一致",
"verifyAgreement": "请先确认并勾选协议",
"verifyOutLogin": "是否退出登录?",
"verifyDeleteUser": "是否删除该成员?",
"verifyDeleteHistory": "是否删除当前测量记录?",
"verifyDeleteAccount": "删除成功后,该账号的所有关联信息将被清空且无法找回,是否删除?",
"btnConfirm": "确定",
"btnSubmit": "提交",
"btnSancellation": "取消",
"btnContinue": "继续",
"btnBack": "返回",
"btnDelete": "删除",
"ConnectionTimeout": "连接失败,点击重新连接",
"Measuring": "测量中,请将食物放到秤上",
"ConnectionSuccessful": "连接成功",
"connectingDevice": "请先连接设备",
"Weight": "重量",
"RecordWeight": "请输入食物重量",
"connectBluetooth": "蓝牙连接中",
"SearchBluetooth": "蓝牙搜索中",
"Remeasure": "数据异常,请重新测量!",
"reset": "数据异常,请清零后重新测量!",
"remeasure": "重新测量",
"StableWeight": "稳定重量",
"StableWeightText": "您的稳定体重是:",
"realTimeWeight": "实时重量",
"realTimeWeightText": "您的实时体重是:",
"heightText": "您的身高是",
"zeroBtn": "清零",
"LockBtn": "锁定",
"SaveResult": "保存结果",
"measureResultTips": "测量结果提示",
"nowWeight": "本次测量体重是",
"lastHeight": "上次测量身高是:",
"lastWeight": "上次测量体重是:",
"nowHeight": "本次测量身高是:",
"lastHead": "上次测量头围是:",
"errorOperation": "操作错误,请重新测量",
"Disconnect": "断开连接",
"resetBtn": "清零",
"UnitBtn": "单位",
"titleHome": "首页",
"titleMenu": "菜谱",
"titleMenuAdd": "添加食谱",
"titleMenuSearch": "搜索菜谱",
"titleCount": "计食",
"titleCountList": "食材库",
"titleCustomKcal": "自定义卡路里",
"titleEveryMeal": "餐食详情",
"titleCountSearch": "食材搜索",
"titleeveryDay": "营养分析",
"titleMe": "我的",
"titleDetail": "详情",
"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",
"titleHealth": "健康",
"titleDiet": "饮食",
"titleExercise": "运动",
"titleScore": "中招估分",
"titleStartScore": "开始估分",
"titleScoreResult": "本次估分成绩",
"titleDepthReport": "深度报告",
"infoHead": "头围",
"verifyHead": "请输入头围",
"verifyHeightDad": "请输入爸爸身高",
"verifyHeightMom": "请输入妈妈身高",
"verifyRecordType": "请选择测量项目",
"verifyRecordTime": "请输入时长",
"verifyRecordNumber": "请输入个数",
"measuringRecord": "测量记录",
"newVersion": "发现新版本",
"IsUpdate": "是否更新?",
"msgCalculating": "计算中",
"titleSkipping": "跳绳数据",
"titlevVitalcapacity": "肺活量数据",
"titleCharts": "运动曲线",
"titleContrast": "数据对比",
"UpdateProgram": "稍后可在'关于我们'内更新程序!",
"lungsuctionspeed": "吸气速度",
"averagelungsuction": "平均吸气肺活量",
"isMarginal": "是否达标",
"today_jump_num": "今日个数",
"today_jump_time": "今日时长",
"today_jump_kcal": "卡路里",
"jumpFree": "自由跳",
"backwardCount": "倒计数",
"Countdown": "倒计时",
"jumpFreedom": "自由",
"jumpFreeDegree": "自由次数",
"jumpFreeNumber": "个数",
"jumpTargetDegree": "目标次数",
"jumpUnlimited": "无限制",
"jumpTarget": "调整目标",
"jumpTargetTime": "目标时长 分:秒",
"MinuteSecond": "分:秒",
"Consumed": "消耗",
"LongpressEnd": "长按结束",
"AverageSpeed": "平均速度",
"Unit": "个/分钟",
"Numberofinterrupts": "中断次数",
"Times": "次",
"LongestConsecutive": "最长连续",
"Number": "个",
"trainingsNumber": "训练个数",
"complete": "完成",
"instructStart": "开始",
"instructContinuous": "连续",
"instructStop": "停止",
"instructEnd": "结束",
"instructContinue": "继续",
"instructPause": "暂停",
"linkBluetoothFail": "连接已断开",
"deviceDisconnection": "训练过程中已与设备连接中断,请重新连接设备再开始训练",
"ToggleTrainingsTips": "训练过程中请勿切换训练,返回训练",
"NOComplete": "本次跳绳时间低于10秒记录将不会被保存",
"growthAdvice": "成长建议",
"nutrition": "营养",
"sleep": "睡眠",
"movement": "运动",
"emotion": "情绪",
"manualRecording": "手动记录",
"inheritHeighet.title": "身高预测",
"inheritHeighet.dad": "爸爸身高",
"inheritHeighet.mom": "妈妈身高",
"inheritHeighet.geneticheight": "当前标准身高",
"inheritHeighet.adultheight": "成年身高预测",
"inheritHeighet.tips0": "为保证数据准确定,请认真填写真实信息",
"inheritHeighet.tips1": "如果当前实际身高﹤当前标准身高",
"inheritHeighet.tips2": "孩子后天生长环境不利长高。请从饮食、睡眠、运动、情绪等方面排查。加强后天因素管理,让孩子处于最佳长高状态。",
"inheritHeighet.tips3": "如果当前实际身高﹥当前标准身高",
"inheritHeighet.tips4": "孩子后天生长环境有利长高。请继续保持加强后天因素管理孩子成年可比标准高10cm以上。",
"time": "时间(天)",
"weightdiff": "减重",
"weightdiffAugment": "增重",
"fatWdiff": "减脂",
"fatWdiffAugment": "增脂",
"changeData": "数据变化",
"trend": "趋势",
"before": "之前",
"after": "之后",
"target_weight": "目标体重",
"cumulative_weight_gain": "累计增重",
"cumulative_weight": "累计减重",
"initial_weight": "初始体重",
"cumulative_day": "减重天数",
"chartsDay": "当天",
"chartsMonth": "月度",
"chartsYear": "年度",
"recordType": "项目",
"recordTime": "时长",
"recordNumber": "个数",
"recordNumberFirst": "第一次",
"recordNumberSecond": "第二次",
"recordNumberThird": "第三次",
"linkBluetoothFail2": "蓝牙连接已断开,请重新连接后测量",
"Ideal": "理想",
"addRecord": "添加记录",
"HistoricalRcord": "历史记录",
"TimeSpent": "用时",
"minutes": "分钟",
"btnBMI": "立即计算",
"Record": "记录",
"depthReport": "深度报告",
"Enter": "进入",
"target": "目标",
"teach": "教你做",
"SearchRecipes": "输入食材快速搜索菜谱",
"RecipeType": "菜谱类型",
"linkWeighing": "连接测量",
"Collection": "收藏",
"Ingredients": "食材",
"Suggestions": "建议",
"Calories": "热量",
"remeasure2": "重秤",
"CurrentlyWeighing": "正在称重",
"TodayMeals": "是否保存为今日饮食",
"SavedSuccessfully": "保存成功",
"ImproveData": "完善资料后查看更多",
"KeyWords": "输入关键字匹配食谱",
"KeyWordsSearch": "输入关键字后搜索",
"nextFlavor": "下一味",
"option": "选择项目",
"verifyOption": "请选择项目",
"justDta": "请输入正确数据",
"infoNowUser": "当前",
"HealthScore": "健康评分",
"StandardValue": "标准值",
"bodyData": "身体数据",
"titleInheritHeighet": "身高预测",
"titleBmi": "BMI测评",
"linkBluetoothSuccess": "连接成功,请上称测量",
"onDeviceBluetoothTips": "请确定设备已开机",
"openDeviceeMeasureTips": "请确定手机蓝牙及位置信息已打开",
"msgSuccess": "测量成功",
"msgFail": "测量失败",
"msgResetData": "数据重置中",
"FatFailure":"体脂测量失败,是否保存本次测量结果?",
"waive":"放弃"
}

21
main.js
View File

@ -14,15 +14,9 @@ Vue.prototype.$model = model;
// 蓝牙js // 蓝牙js
import useBluetooth from "@/toolJs/Bluetooth.js"; import useBluetooth from "@/toolJs/Bluetooth.js";
Vue.prototype.$ble = useBluetooth; 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' import json from '@/content.json'
@ -30,13 +24,9 @@ Vue.prototype.$json = json;
// #ifndef VUE3 // #ifndef VUE3
import Vue from 'vue' import Vue from 'vue'
import VueI18n from 'vue-i18n'
Vue.use(VueI18n)
const i18n = new VueI18n(i18nConfig)
Vue.config.productionTip = false Vue.config.productionTip = false
App.mpType = 'app' App.mpType = 'app'
const app = new Vue({ const app = new Vue({
i18n,
...App ...App
}) })
app.$mount() app.$mount()
@ -46,13 +36,8 @@ app.$mount()
import { import {
createSSRApp createSSRApp
} from 'vue' } from 'vue'
import {
createI18n
} from 'vue-i18n'
const i18n = createI18n(i18nConfig)
export function createApp() { export function createApp() {
const app = createSSRApp(App) const app = createSSRApp(App)
app.use(i18n)
return { return {
app app
} }

View File

@ -1,37 +1,37 @@
<template> <template>
<view class="content"> <view class="content">
<view class="editem"> <view class="editem">
<view class="name">{{$t("infoHeight")}}</view> <view class="name">身高</view>
<view class="right"> <view class="right">
<input type="digit" v-model="PostData.height" :placeholder="$t('verifyHeight')" <input type="digit" v-model="PostData.height" placeholder="请输入身高"
placeholder-style="font-size:13px;color:#666" />cm placeholder-style="font-size:13px;color:#666" />cm
</view> </view>
</view> </view>
<view class="editem"> <view class="editem">
<view class="name">{{$t("infoWeight")}}</view> <view class="name">体重</view>
<view class="right"> <view class="right">
<input type="digit" v-model="PostData.weight" :placeholder="$t('verifyWeight')" <input type="digit" v-model="PostData.weight" placeholder="请输入体重"
placeholder-style="font-size:13px;color:#666" />kg placeholder-style="font-size:13px;color:#666" />kg
</view> </view>
</view> </view>
<view class="editem"> <view class="editem">
<view class="name">{{$t("infoGender")}}</view> <view class="name">性别</view>
<view class="right radio2"> <view class="right radio2">
<view class="radio" @click="PostData.sex = 1"> <view class="radio" @click="PostData.sex = 1">
<uni-icons :type="PostData.sex==1?'checkbox-filled':'circle'" size="24" <uni-icons :type="PostData.sex==1?'checkbox-filled':'circle'" size="24"
:color="PostData.sex==1?'#fea606':'#dfdfdf'"></uni-icons>{{$t("infoMan")}} :color="PostData.sex==1?'#fea606':'#dfdfdf'"></uni-icons>
</view> </view>
<view class="radio ml-15" @click="PostData.sex = 2"> <view class="radio ml-15" @click="PostData.sex = 2">
<uni-icons :type="PostData.sex==2?'checkbox-filled':'circle'" size="24" <uni-icons :type="PostData.sex==2?'checkbox-filled':'circle'" size="24"
:color="PostData.sex==2?'#fea606':'#dfdfdf'"></uni-icons>{{$t("infoWoman")}} :color="PostData.sex==2?'#fea606':'#dfdfdf'"></uni-icons>
</view> </view>
</view> </view>
</view> </view>
<view class="editem"> <view class="editem">
<view class="name">{{$t("infoBirthday")}}</view> <view class="name">出生日期</view>
<view class="right"> <view class="right">
<picker mode="date" :value="PostData.birthday" :end="endDate" @change="bindDateChange" :fields="fields"> <picker mode="date" :value="PostData.birthday" :end="endDate" @change="bindDateChange" :fields="fields">
<view class="text">{{PostData.birthday?PostData.birthday:$t('verifyBirthday')}}</view> <view class="text">{{PostData.birthday?PostData.birthday:"请选择出生日期"}}</view>
<icon class="iconfont icon-arrow-down-bold"></icon> <icon class="iconfont icon-arrow-down-bold"></icon>
</picker> </picker>
</view> </view>
@ -66,12 +66,13 @@
</view> </view>
</view> </view>
<view class="tip"> <view class="tip">
BMI是身体质量指数,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准.
<view class="text" v-for="(ite,ind) in configInfo.literature.bmi_evaluation" <view class="text" v-for="(ite,ind) in configInfo.literature.bmi_evaluation"
v-if="configInfo.literature.bmi_evaluation.length"> v-if="configInfo.literature.bmi_evaluation.length">
{{ite}} {{ite}}
</view> </view>
</view> </view>
<view class="btn mt-20" @click="submit">{{$t("btnBMI")}}</view> <view class="btn mt-20" @click="submit"> 立即计算</view>
</view> </view>
</template> </template>
@ -109,9 +110,6 @@
}, },
onLoad() { onLoad() {
let that = this let that = this
uni.setNavigationBarTitle({
title: this.$t('titleBmi'),
})
// #ifdef APP-PLUS // #ifdef APP-PLUS
that.fields = "time" that.fields = "time"
// #endif // #endif
@ -127,20 +125,20 @@
//bmi //bmi
submit() { submit() {
var that = this; var that = this;
if (!that.PostData.height) { if (!that.PostData.weight) {
this.$tools.msg(that.$t("verifyHeight")) this.$tools.msg("请输入体重")
return; return;
} }
if (!that.PostData.weight) { if (!that.PostData.height) {
this.$tools.msg(that.$t("verifyWeight")) this.$tools.msg("请输入身高")
return; return;
} }
if (!that.PostData.sex) { if (!that.PostData.sex) {
this.$tools.msg(that.$t("verifyGender")) this.$tools.msg("请选择性别")
return; return;
} }
if (!that.PostData.birthday) { if (!that.PostData.birthday) {
this.$tools.msg(that.$t("verifyBirthday")) this.$tools.msg("请选择年龄")
return; return;
} }
that.$model.calcbmi(that.PostData).then(res => { that.$model.calcbmi(that.PostData).then(res => {

View File

@ -10,9 +10,9 @@
</view> </view>
<view class="TrendPage"> <view class="TrendPage">
<view class="listC"> <view class="listC">
<view @click="handleActive(1)" :class="[active==1?'active':'']">{{$t("chartsDay")}}</view> <view @click="handleActive(1)" :class="[active==1?'active':'']">当天</view>
<view @click="handleActive(2)" :class="[active==2?'active':'']">{{$t("chartsMonth")}}</view> <view @click="handleActive(2)" :class="[active==2?'active':'']">月度</view>
<view @click="handleActive(3)" :class="[active==3?'active':'']">{{$t("chartsYear")}}</view> <view @click="handleActive(3)" :class="[active==3?'active':'']">年度</view>
</view> </view>
<view class="box"> <view class="box">
<!-- 时间选择 --> <!-- 时间选择 -->
@ -33,7 +33,7 @@
<view class="line" v-else> <view class="line" v-else>
<view class="nolist"> <view class="nolist">
<image src="../../static/none.png"></image> <image src="../../static/none.png"></image>
<text>{{$t("msgNoMoreData")}}</text> <text>暂无数据请手动添加~</text>
</view> </view>
</view> </view>
</view> </view>
@ -53,7 +53,6 @@
return { return {
weightList: [], weightList: [],
handTrue: true, handTrue: true,
index: 0,
active: 1, active: 1,
time: "", time: "",
} }
@ -76,9 +75,6 @@
}, },
onShow() { onShow() {
let that = this let that = this
uni.setNavigationBarTitle({
title: this.$t('titleCharts'),
})
that.active = 1 that.active = 1
that.index = 0 that.index = 0
that.time = that.startDate that.time = that.startDate
@ -90,7 +86,7 @@
that.index = ind that.index = ind
that.active = 1 that.active = 1
that.time = that.startDate that.time = that.startDate
that.handleActive(that.active) that.handleActive(that.index)
}, },
getList() { getList() {
let that = this let that = this

View File

@ -43,7 +43,7 @@
</view> </view>
</view> </view>
<view class="pkclass" v-if="length==2">vs</view> <view class="pkclass" v-if="length==2">vs</view>
<view :class="{'active':length!=2}" class="btn" @click="handlePK">{{$t("titleContrast")}}</view> <view :class="{'active':length!=2}" class="btn" @click="handlePK">对比</view>
</view> </view>
</view> </view>
</view> </view>
@ -86,9 +86,6 @@
}, },
onLoad() { onLoad() {
let that = this let that = this
uni.setNavigationBarTitle({
title: that.$t('titleContrast')
})
that.handlonLoad() that.handlonLoad()
}, },
methods: { methods: {
@ -170,7 +167,7 @@
handlePK() { handlePK() {
let that = this let that = this
if (that.isActive.length != 2) { if (that.isActive.length != 2) {
that.$tools.msg(that.$t('verifyBontrast')) that.$tools.msg("请先选择数据!")
return return
} }
let info = {} let info = {}
@ -222,7 +219,7 @@
} }
} }
.calendar { .calendar{
margin-top: 50px; margin-top: 50px;
} }
</style> </style>

View File

@ -7,32 +7,30 @@
<view class="right"> <view class="right">
<view class="name">{{memInfo.name?memInfo.name:memInfo.nickname}}</view> <view class="name">{{memInfo.name?memInfo.name:memInfo.nickname}}</view>
<view class="top"> <view class="top">
<view> <view>性别{{memInfo.gender=='0'?'未知':memInfo.gender=='1'?'男':'女'}}</view>
{{$t("infoGender")}}{{memInfo.gender=='0'?$t("infoUnknown"):memInfo.gender=='1'?$t("infoMan"):$t("infoWoman")}} <view class="ml-15">年龄{{user.age}}</view>
</view>
<view class="ml-15">{{$t("infoAge")}}{{user.age}}{{$t("infoAgeunit")}}</view>
</view> </view>
</view> </view>
</view> </view>
<view class="box" v-if="acd_id==2"> <view class="box" v-if="acd_id==2">
<view class="item"> <view class="item">
<view>{{memInfo.day?memInfo.day:'0'}}</view> <view>{{memInfo.day?memInfo.day:'0'}}</view>
<text>{{$t("time")}}</text> <text>时间()</text>
</view> </view>
<view class="item"> <view class="item">
<view>{{memInfo.weightdiff?Math.abs(memInfo.weightdiff):0}}</view> <view>{{memInfo.weightdiff?Math.abs(memInfo.weightdiff):0}}</view>
<text v-if="Number(memInfo.weightdiff)>0">{{$t("weightdiffAugment")}}(kg)</text> <text v-if="Number(memInfo.weightdiff)>0">增重(kg)</text>
<text v-else>{{$t("weightdiff")}}(kg)</text> <text v-else>减重(kg)</text>
</view> </view>
<view class="item"> <view class="item">
<view>{{memInfo.fat_wdiff?Math.abs(memInfo.fat_wdiff):0}}</view> <view>{{memInfo.fat_wdiff?Math.abs(memInfo.fat_wdiff):0}}</view>
<text v-if="Number(memInfo.fat_wdiff)>0">{{$t("fatWdiffAugment")}}(kg)</text> <text v-if="Number(memInfo.fat_wdiff)>0">增脂(kg)</text>
<text v-else>{{$t("fatWdiff")}}(kg)</text> <text v-else>减脂(kg)</text>
</view> </view>
<view class="time"> <view class="time">
<view> <view>
<uni-icons class="t-icon t-icon-shijian-mianxing-0"></uni-icons>{{memInfo.time}} <uni-icons class="t-icon t-icon-shijian-mianxing-0"></uni-icons>{{memInfo.time}}
</view>{{$t("changeData")}} </view>数据变化
</view> </view>
</view> </view>
<view class="boxTime" v-else> <view class="boxTime" v-else>
@ -40,15 +38,15 @@
<uni-icons class="t-icon t-icon-shijian-mianxing-0 mr-10 size18"></uni-icons> <uni-icons class="t-icon t-icon-shijian-mianxing-0 mr-10 size18"></uni-icons>
{{memInfo.time}} {{memInfo.time}}
</view> </view>
{{$t("changeData")}} 数据变化
</view> </view>
<view class="control"> <view class="control">
<!-- 名称 --> <!-- 名称 -->
<view class="title"> <view class="title">
<view class="name"></view> <view class="name"></view>
<view>{{$t("trend")}}</view> <view>趋势</view>
<view>{{$t("before")}}</view> <view>之前</view>
<view>{{$t("after")}}</view> <view>之后</view>
</view> </view>
<view v-for="(ite,ind) in listStr" :key="ind" class="li"> <view v-for="(ite,ind) in listStr" :key="ind" class="li">
<view class="name"> <view class="name">
@ -91,11 +89,6 @@
computed: { computed: {
...mapState(["user"]), ...mapState(["user"]),
}, },
onLoad() {
uni.setNavigationBarTitle({
title: this.$t('titleDetail'),
})
},
methods: { methods: {
handleSharepic(info) { handleSharepic(info) {
let that = this let that = this

View File

@ -6,34 +6,34 @@
<view> <view>
<text class="weight">{{weight?weight:'0.00'}}</text>{{unit}} <text class="weight">{{weight?weight:'0.00'}}</text>{{unit}}
</view> </view>
<view class="typeInfo" v-if="typeInfo!=0">{{typeInfo==2?$t("StableWeight"):$t("realTimeWeight")}}</view> <view class="typeInfo" v-if="typeInfo!=0">{{typeInfo==2?'稳定重量':'实时重量'}}</view>
</view> </view>
<view class="btnGroup" v-if="isSave"> <view class="btnGroup" v-if="isSave">
<view :class="[IsLing?'disabled':'btnClose']" @click="handleIsLing">{{$t("zeroBtn")}}</view> <view :class="[IsLing?'disabled':'btnClose']" @click="handleIsLing">清零</view>
<view class="baocun" @click="handleIsNum">{{$t("LockBtn")}}</view> <view class="baocun" @click="handleIsNum">锁定</view>
</view> </view>
<view class="tips"> <view class="tips">
<text>{{$t("msgTitle")}}</text> <text>提示</text>
<text>1.{{$t("onDeviceBluetoothTips")}}</text> <text>1.请确定设备是开机状态</text>
<text>2.{{$t("openDeviceeMeasureTips")}}</text> <text>2.请确定手机蓝牙位置信息已打开</text>
</view> </view>
</view> </view>
<!-- 手动记录 --> <!-- 手动记录 -->
<view class="wrapper" v-if="isHeight"> <view class="wrapper" v-if="isHeight">
<view class="bg"></view> <view class="bg"></view>
<view class="Blue"> <view class="Blue">
<view class="h4">{{$t("measureResultTips")}}</view> <view class="h4">测量结果提示</view>
<view class="Blue-box"> <view class="Blue-box">
{{$t("nowWeight")}}<text>{{weight}}{{unit}}</text> 本次测量体重是<text>{{weight}}{{unit}}</text>
</view> </view>
<view class="Blue-box"> <view class="Blue-box">
{{$t("lastHeight")}}<input v-model="height" type="digit" :placeholder="$t('verifyHeight')" />cm 上次测量身高是<input v-model="height" type="digit" placeholder="请输入身高" />cm
</view> </view>
<view class="Blue-box" v-if="userInfo.stage==3"> <view class="Blue-box" v-if="userInfo.stage==3">
{{$t("lastHead")}}<input v-model="head" type="digit" :placeholder="$t('verifyHead')" />cm 上次测量头围是<input v-model="head" type="digit" placeholder="请输入头围" />cm
</view> </view>
<view class="Blue-btn Blue-close" @click="handleBack">{{$t("remeasure")}}</view> <view class="Blue-btn Blue-close" @click="handleBack">重新测量</view>
<view class="Blue-btn" @click="handleGetMeasure">{{$t("SaveResult")}}</view> <view class="Blue-btn" @click="handleGetMeasure">保存结果</view>
</view> </view>
</view> </view>
</view> </view>
@ -90,7 +90,7 @@
isBluetoothTyle: function() { isBluetoothTyle: function() {
let that = this let that = this
if (!that.isBluetoothTyle) { if (!that.isBluetoothTyle) {
that.$tools.showModal(that.$t("linkBluetoothFail2")) that.$tools.showModal('蓝牙连接已断开,请重新连接后测量')
} }
}, },
bleValue: { bleValue: {
@ -142,7 +142,7 @@
that.$store.commit("changeBluetoothValue", { that.$store.commit("changeBluetoothValue", {
type: 1, type: 1,
isConnectStatus: 2, isConnectStatus: 2,
bleTipsText:that.$t("linkBluetoothSuccess"), bleTipsText: "蓝牙连接成功,请上秤测量",
}) })
uni.notifyBLECharacteristicValueChange({ uni.notifyBLECharacteristicValueChange({
deviceId: that.deviceId, deviceId: that.deviceId,
@ -283,7 +283,7 @@
handleGetMeasure() { handleGetMeasure() {
let that = this let that = this
if (!that.height) { if (!that.height) {
this.$tools.msg(that.$t("verifyHeight")) this.$tools.msg("请输入身高")
return return
} }
that.$model.getmeasurefunit({ that.$model.getmeasurefunit({
@ -302,9 +302,9 @@
that.$store.dispatch("getResult", { that.$store.dispatch("getResult", {
aud_id: that.user.aud_id aud_id: that.user.aud_id
}) })
that.$tools.msg(that.$t("msgSuccess")) that.$tools.msg("测量成功")
} else { } else {
that.$tools.msg(that.$t("msgFail")) that.$tools.msg("测量失败")
} }
setTimeout(function() { setTimeout(function() {
@ -329,7 +329,7 @@
success: res => { success: res => {
console.log('下发指令成功', res.errMsg) console.log('下发指令成功', res.errMsg)
uni.showToast({ uni.showToast({
title: that.$t("msgResetData"), title: '数据重置中',
icon: "none" icon: "none"
}) })
console.log("重置", that.typeInfo, that.weight) console.log("重置", that.typeInfo, that.weight)

View File

@ -7,24 +7,24 @@
<image src="/pageTwo/static/HC.png" class="image3"></image> <image src="/pageTwo/static/HC.png" class="image3"></image>
</view> </view>
<view class="tips"> <view class="tips">
<text>{{$t("msgTitle")}}</text> <view>提示</view>
<text>1.{{$t("onDeviceBluetoothTips")}}</text> <text>1.请确定设备已开机</text>
<text>2.{{$t("openDeviceeMeasureTips")}}</text> <text>2.请确定手机蓝牙及位置信息已打开</text>
</view> </view>
</view> </view>
<!-- 手动记录 --> <!-- 手动记录 -->
<view class="wrapper" v-if="isHeight"> <view class="wrapper" v-if="isHeight">
<view class="bg"></view> <view class="bg"></view>
<view class="Blue"> <view class="Blue">
<view class="h4">{{$t("measureResultTips")}}</view> <view class="h4">测量结果提示</view>
<view class="Blue-box"> <view class="Blue-box">
{{$t("nowHeight")}}<text>{{height}}{{unit}}</text> 本次测量身高为<text>{{height}}{{unit}}</text>
</view> </view>
<view class="Blue-box"> <view class="Blue-box">
{{$t("lastWeight")}}<input v-model="weight" type="digit" :placeholder="$t('verifyWeight')" />kg 上次测量体重为<input v-model="weight" type="digit" placeholder="请输入体重" />kg
</view> </view>
<view class="Blue-btn Blue-close" @click="handleHeight">{{$t("remeasure")}}</view> <view class="Blue-btn Blue-close" @click="handleHeight">重新测量</view>
<view class="Blue-btn" @click="handleGetMeasure">{{$t("SaveResult")}}</view> <view class="Blue-btn" @click="handleGetMeasure">保存测量结果</view>
</view> </view>
</view> </view>
</view> </view>
@ -78,7 +78,7 @@
isBluetoothTyle: function() { isBluetoothTyle: function() {
let that = this let that = this
if (!that.isBluetoothTyle) { if (!that.isBluetoothTyle) {
that.$tools.showModal(that.$t("linkBluetoothFail2")) that.$tools.showModal('蓝牙连接已断开,请重新连接后测量')
} }
}, },
bleValue: { bleValue: {
@ -116,7 +116,7 @@
that.$store.commit("changeBluetoothValue", { that.$store.commit("changeBluetoothValue", {
type: 1, type: 1,
isConnectStatus: 2, isConnectStatus: 2,
bleTipsText: $t("linkBluetoothSuccess"), bleTipsText: "蓝牙连接成功,请开始测量",
}) })
uni.notifyBLECharacteristicValueChange({ uni.notifyBLECharacteristicValueChange({
deviceId: that.deviceId, deviceId: that.deviceId,
@ -167,7 +167,7 @@
that.unit = "ft" that.unit = "ft"
} }
if (Number(data) < 20) { if (Number(data) < 20) {
that.text = that.$t("errorOperation") that.text = "操作错误,请重新测量"
} else { } else {
if (unit == "2") { if (unit == "2") {
let data1 = data / 12 let data1 = data / 12
@ -178,7 +178,7 @@
that.height2 = data that.height2 = data
that.height = data that.height = data
} }
that.text = that.$t("heightText") + that.height + that.unit that.text = "您的身高是:" + that.height + that.unit
that.isHeight = true that.isHeight = true
} }
console.log("G02", value, unit, data, that.height, that.height2) console.log("G02", value, unit, data, that.height, that.height2)
@ -194,7 +194,7 @@
let that = this let that = this
let height = 0 let height = 0
if (!that.weight) { if (!that.weight) {
that.$tools.msg(that.$t("verifyWeight")) that.$tools.msg("请输入体重")
return return
} }
if (that.unit == 'ft') { if (that.unit == 'ft') {
@ -217,9 +217,9 @@
that.$store.dispatch("getResult", { that.$store.dispatch("getResult", {
aud_id: that.user.aud_id aud_id: that.user.aud_id
}) })
that.$tools.msg(that.$t("msgSuccess")) that.$tools.msg("测量成功")
} else { } else {
that.$tools.msg(that.$t("msgFail")) that.$tools.msg("测量失败")
} }
setTimeout(function() { setTimeout(function() {
uni.switchTab({ uni.switchTab({

View File

@ -1,30 +1,30 @@
<template> <template>
<view class="weightPages"> <view class="weightPages">
<view class="content "> <view class="content ">
<view class="title">{{$t("linkBluetoothSuccess")}}</view> <view class="title">连接成功开始测量</view>
<view class="text">{{text}}</view> <view class="text">{{text}}</view>
<view class="image"> <view class="image">
<image src="/pageTwo/static/PCL.gif" class="image3"></image> <image src="/pageTwo/static/PCL.gif" class="image3"></image>
</view> </view>
<view class="tips"> <view class="tips">
<text>{{$t("msgTitle")}}:</text> <view>提示</view>
<text>1.{{$t("onDeviceBluetoothTips")}}</text> <text>1.请确定设备已开机</text>
<text>2.{{$t("openDeviceeMeasureTips")}}</text> <text>2.请确定手机蓝牙及位置信息已打开</text>
</view> </view>
</view> </view>
<!-- 手动记录 --> <!-- 手动记录 -->
<view class="wrapper" v-if="isHeight"> <view class="wrapper" v-if="isHeight">
<view class="bg"></view> <view class="bg"></view>
<view class="Blue"> <view class="Blue">
<view class="h4">{{$t("measureResultTips")}}</view> <view class="h4">测量结果提示</view>
<view class="Blue-box"> <view class="Blue-box">
{{$t("nowWeight")}}<text>{{weight}}{{unit}}</text> 本次测量体重为<text>{{weight}}{{unit}}</text>
</view> </view>
<view class="Blue-box"> <view class="Blue-box">
{{$t("lastHeight")}}<input v-model="height" type="digit" :placeholder="$t('verifyHeight')" />cm 上次测量身高为<input v-model="height" type="digit" placeholder="请输入身高" />cm
</view> </view>
<view class="Blue-btn Blue-close" @click="handleBack">{{$t("remeasure")}}</view> <view class="Blue-btn Blue-close" @click="handleBack">取消</view>
<view class="Blue-btn" @click="handleGetMeasure">{{$t("SaveResult")}}</view> <view class="Blue-btn" @click="handleGetMeasure">保存测量结果</view>
</view> </view>
</view> </view>
</view> </view>
@ -67,7 +67,7 @@
that.$store.commit("changeBluetoothValue", { that.$store.commit("changeBluetoothValue", {
isFood: false, isFood: false,
isConnectStatus: 1, isConnectStatus: 1,
bleTipsText: that.$t("ConnectionTimeout"), bleTipsText: "点击重新连接",
}) })
that.$store.commit("changehomeCard", 0); that.$store.commit("changehomeCard", 0);
that.$ble.stopBluetoothDevicesDiscovery() // that.$ble.stopBluetoothDevicesDiscovery() //
@ -76,7 +76,7 @@
isBluetoothTyle: function() { isBluetoothTyle: function() {
let that = this let that = this
if (!that.isBluetoothTyle) { if (!that.isBluetoothTyle) {
that.$tools.showModal(that.$t("linkBluetoothFail2")) that.$tools.showModal('蓝牙连接已断开,请重新连接后测量')
} }
}, },
stopblue: function() { stopblue: function() {
@ -120,9 +120,9 @@
data = data / 100 data = data / 100
} }
} }
that.text = that.$t("realTimeWeight") + data + that.unit that.text = "您的实时体重是:" + data + that.unit
if (type == "1") { if (type == "1") {
that.text = that.$t("StableWeight") + data + that.unit that.text = "您的稳定体重是:" + data + that.unit
that.imp = parseInt(value.substring(8, 12), 16) / 10 that.imp = parseInt(value.substring(8, 12), 16) / 10
that.deviceId = device.deviceId that.deviceId = device.deviceId
that.weight = data that.weight = data
@ -139,7 +139,7 @@
handleGetMeasure() { handleGetMeasure() {
let that = this let that = this
if (!that.height) { if (!that.height) {
this.$tools.msg(that.$t("verifyHeight")) this.$tools.msg("请输入身高")
return return
} }
that.$model.getmeasurefunit({ that.$model.getmeasurefunit({
@ -156,9 +156,9 @@
that.$store.dispatch("getResult", { that.$store.dispatch("getResult", {
aud_id: that.user.aud_id aud_id: that.user.aud_id
}) })
that.$tools.msg(that.$t("msgSuccess")) that.$tools.msg("测量成功")
} else { } else {
that.$tools.msg(that.$t("msgFail")) that.$tools.msg("测量失败")
} }
setTimeout(function() { setTimeout(function() {
that.handleBack() that.handleBack()

View File

@ -1,30 +1,30 @@
<template> <template>
<view class="weightPages"> <view class="weightPages">
<view class="content "> <view class="content ">
<view class="title">{{$t("linkBluetoothSuccess")}}</view> <view class="title">连接成功开始测量</view>
<view class="text">{{text}}</view> <view class="text">{{text}}</view>
<view class="image"> <view class="image">
<image src="/pageTwo/static/PCL.gif" class="image3"></image> <image src="/pageTwo/static/PCL.gif" class="image3"></image>
</view> </view>
<view class="tips"> <view class="tips">
<text>{{$t("msgTitle")}}:</text> <view>提示</view>
<text>1.{{$t("onDeviceBluetoothTips")}}</text> <text>1.请确定设备已开机</text>
<text>2.{{$t("openDeviceeMeasureTips")}}</text> <text>2.请确定手机蓝牙及位置信息已打开</text>
</view> </view>
</view> </view>
<!-- 手动记录 --> <!-- 手动记录 -->
<view class="wrapper" v-if="isHeight"> <view class="wrapper" v-if="isHeight">
<view class="bg"></view> <view class="bg"></view>
<view class="Blue"> <view class="Blue">
<view class="h4">{{$t("measureResultTips")}}</view> <view class="h4">测量结果提示</view>
<view class="Blue-box"> <view class="Blue-box">
{{$t("nowWeight")}}<text>{{weight}}{{unit}}</text> 本次测量体重为<text>{{weight}}{{unit}}</text>
</view> </view>
<view class="Blue-box"> <view class="Blue-box">
{{$t("lastHeight")}}<input v-model="height" type="digit" :placeholder="$t('verifyHeight')" />cm 上次测量身高为<input v-model="height" type="digit" placeholder="请输入身高" />cm
</view> </view>
<view class="Blue-btn Blue-close" @click="handleBack">{{$t("remeasure")}}</view> <view class="Blue-btn Blue-close" @click="handleBack">取消</view>
<view class="Blue-btn" @click="handleGetMeasure">{{$t("SaveResult")}}</view> <view class="Blue-btn" @click="handleGetMeasure">保存测量结果</view>
</view> </view>
</view> </view>
</view> </view>
@ -50,7 +50,7 @@
} }
}, },
computed: { computed: {
...mapState(["user", "bleValue", "isBluetoothTyle"]), ...mapState(["user", "bleValue"]),
info() { info() {
return this.user return this.user
}, },
@ -68,18 +68,12 @@
that.$store.commit("changeBluetoothValue", { that.$store.commit("changeBluetoothValue", {
isFood: false, isFood: false,
isConnectStatus: 1, isConnectStatus: 1,
bleTipsText: that.$t("ConnectionTimeout"), bleTipsText: "点击重新连接",
}) })
that.$store.commit("changehomeCard", 0); that.$store.commit("changehomeCard", 0);
that.$ble.stopBluetoothDevicesDiscovery() // that.$ble.stopBluetoothDevicesDiscovery() //
}, },
watch: { watch: {
isBluetoothTyle: function() {
let that = this
if (!that.isBluetoothTyle) {
that.$tools.showModal(that.$t("linkBluetoothFail2"))
}
},
stopblue: function() { stopblue: function() {
let that = this let that = this
if (!that.stopblue) { if (!that.stopblue) {
@ -114,12 +108,12 @@
if (unit == "10") { if (unit == "10") {
that.unit = "lb" that.unit = "lb"
} }
if (unit == "01") {
that.unit = "斤"
}
if (num == "00") { if (num == "00") {
weight = weight / 10 weight = weight / 10
} }
if (num == "01") {
that.unit = "斤"
}
if (num == "10") { if (num == "10") {
if (unit == "10") { if (unit == "10") {
that.unit = "lb" that.unit = "lb"
@ -131,14 +125,14 @@
if (status == "0") { if (status == "0") {
that.typeInfo = 0 that.typeInfo = 0
that.stopblue = false that.stopblue = false
that.text = that.$t("realTimeWeight") + weight + that.unit that.text = "您的实时体重是:" + weight + that.unit
} }
if (status == "1") { if (status == "1") {
if (type == '1') { if (type == '1') {
that.imp = parseInt(value.substring(8, 12), 16) / 10 that.imp = parseInt(value.substring(8, 12), 16) / 10
} }
that.typeInfo = 1 that.typeInfo = 1
that.text = that.$t("StableWeight")+ weight + that.unit that.text = "您的稳定体重是:" + weight + that.unit
that.weight = weight that.weight = weight
that.stopblue = true that.stopblue = true
that.$ble.stopBluetoothDevicesDiscovery() // that.$ble.stopBluetoothDevicesDiscovery() //
@ -153,7 +147,7 @@
handleGetMeasure() { handleGetMeasure() {
let that = this let that = this
if (!that.height) { if (!that.height) {
this.$tools.msg(that.$t("verifyHeight")) this.$tools.msg("请输入身高")
return return
} }
that.$model.getmeasurefunit({ that.$model.getmeasurefunit({
@ -170,9 +164,9 @@
that.$store.dispatch("getResult", { that.$store.dispatch("getResult", {
aud_id: that.user.aud_id aud_id: that.user.aud_id
}) })
that.$tools.msg(that.$t("msgSuccess")) that.$tools.msg("测量成功")
} else { } else {
that.$tools.msg(that.$t("msgFail")) that.$tools.msg("测量失败")
} }
setTimeout(function() { setTimeout(function() {
that.handleBack() that.handleBack()

View File

@ -1,30 +1,30 @@
<template> <template>
<view class="weightPages"> <view class="weightPages">
<view class="content "> <view class="content ">
<view class="title">{{$t("linkBluetoothSuccess")}}</view> <view class="title">连接成功开始测量</view>
<view class="text">{{text}}</view> <view class="text">{{text}}</view>
<view class="image"> <view class="image">
<image src="/pageTwo/static/PCL.gif" class="image3"></image> <image src="/pageTwo/static/PCL.gif" class="image3"></image>
</view> </view>
<view class="tips"> <view class="tips">
<text>{{$t("msgTitle")}}:</text> <view>提示</view>
<text>1.{{$t("onDeviceBluetoothTips")}}</text> <text>1.请确定设备已开机</text>
<text>2.{{$t("openDeviceeMeasureTips")}}</text> <text>2.请确定手机蓝牙及位置信息已打开</text>
</view> </view>
</view> </view>
<!-- 手动记录 --> <!-- 手动记录 -->
<view class="wrapper" v-if="isHeight"> <view class="wrapper" v-if="isHeight">
<view class="bg"></view> <view class="bg"></view>
<view class="Blue"> <view class="Blue">
<view class="h4">{{$t("measureResultTips")}}</view> <view class="h4">测量结果提示</view>
<view class="Blue-box"> <view class="Blue-box">
{{$t("nowWeight")}}<text>{{weight}}{{unit}}</text> 本次测量体重为<text>{{weight}}{{unit}}</text>
</view> </view>
<view class="Blue-box"> <view class="Blue-box">
{{$t("lastHeight")}}<input v-model="height" type="digit" :placeholder="$t('verifyHeight')" />cm 上次测量身高为<input v-model="height" type="digit" placeholder="请输入身高" />cm
</view> </view>
<view class="Blue-btn Blue-close" @click="handleBack">{{$t("remeasure")}}</view> <view class="Blue-btn Blue-close" @click="handleBack">取消</view>
<view class="Blue-btn" @click="handleGetMeasure">{{$t("SaveResult")}}</view> <view class="Blue-btn" @click="handleGetMeasure">保存测量结果</view>
</view> </view>
</view> </view>
</view> </view>
@ -69,8 +69,9 @@
that.$store.commit("changeBluetoothValue", { that.$store.commit("changeBluetoothValue", {
isFood: false, isFood: false,
isConnectStatus: 1, isConnectStatus: 1,
bleTipsText: that.$t("ConnectionTimeout"), bleTipsText: "点击重新连接",
}) })
that.$store.commit("changehomeCard", 0);
that.$ble.stopBluetoothDevicesDiscovery() // that.$ble.stopBluetoothDevicesDiscovery() //
}, },
watch: { watch: {
@ -104,11 +105,11 @@
if (type == "d") { if (type == "d") {
that.typeInfo = 0 that.typeInfo = 0
that.stopblue = false that.stopblue = false
that.text = that.$t("realTimeWeight") + weight + 'kg' that.text = "您的实时体重是:" + weight + 'kg'
} }
if (type == "e") { if (type == "e") {
that.typeInfo = 1 that.typeInfo = 1
that.text = that.$t("StableWeight") + weight + 'kg' that.text = "您的稳定体重是:" + weight + 'kg'
that.imp = !isNaN(type2) ? parseInt(value.substring(6, 10), 16) : '' that.imp = !isNaN(type2) ? parseInt(value.substring(6, 10), 16) : ''
that.weight = weight that.weight = weight
that.stopblue = true that.stopblue = true
@ -124,7 +125,7 @@
handleGetMeasure() { handleGetMeasure() {
let that = this let that = this
if (!that.height) { if (!that.height) {
this.$tools.msg(that.$t("verifyHeight")) this.$tools.msg("请输入身高")
return return
} }
that.$model.getmeasurefunit({ that.$model.getmeasurefunit({
@ -142,9 +143,9 @@
that.$store.dispatch("getResult", { that.$store.dispatch("getResult", {
aud_id: that.user.aud_id aud_id: that.user.aud_id
}) })
that.$tools.msg(that.$t("msgSuccess")) that.$tools.msg("测量成功")
} else { } else {
that.$tools.msg(that.$t("msgFail")) that.$tools.msg("测量失败")
} }
setTimeout(function() { setTimeout(function() {
that.handleBack() that.handleBack()

View File

@ -1,38 +1,38 @@
<template> <template>
<view class="content skipping"> <view class="content skipping">
<!--自由训练 --> <!--自由训练 -->
<view class="title">{{info.active==1?$t("jumpFree"):info.active==2?$t("Countdown"):$t("backwardCount")}}</view> <view class="title">{{info.active==1?'自由跳':info.active==2?'倒计时':'倒计数'}}</view>
<view class="skiptop"> <view class="skiptop">
<view class="item"> <view class="item">
<view class="item-ite">{{info.active==1?$t("jumpFreeDegree"):info.active==2?$t("jumpFreeNumber"):$t("jumpTargetDegree")}}<text>{{weight}}</text> <view class="item-ite">{{info.active==1?'自由次数':info.active==2?"个数":'目标次数'}}<text>{{weight}}</text>
</view> </view>
<view class="item-ite"> <view class="item-ite">
{{info.active==2?$t("jumpTargetTime"):$t("MinuteSecond")}}<text>{{time_m?time_m:'00'}}:{{time_s?time_s:'00'}}</text> {{info.active==2?'目标时长 分:秒':"分:秒"}}<text>{{time_m?time_m:'00'}}:{{time_s?time_s:'00'}}</text>
</view> </view>
<view class="item-ite">{{$t("Consumed")}}/kcal<text>{{Math.floor(kcal)}}</text></view> <view class="item-ite">消耗/kcal<text>{{Math.floor(kcal)}}</text></view>
</view> </view>
</view> </view>
<view class="image"> <view class="image">
<image src="/pageTwo/static/t01.gif"></image> <image src="/pageTwo/static/t01.gif"></image>
</view> </view>
<view class="end" @longpress="onlongpress">{{$t("LongpressEnd")}}</view> <view class="end" @longpress="onlongpress">长按结束</view>
<!-- 报告 --> <!-- 报告 -->
<view class="wrapper" v-if="iswrapper"> <view class="wrapper" v-if="iswrapper">
<view class="bg"> <view class="bg">
<view class="edit"> <view class="edit">
<view class="editem"> <view class="editem">
<view>{{$t("AverageSpeed")}}<text class="cyello Blue size20 mr-5">{{bpm.toFixed(1)}}</text>bpm</view> <view>平均速度<text class="cyello Blue size20 mr-5">{{bpm.toFixed(1)}}</text>bpm</view>
<view class="size12 c999 ">(bpm= {{$t("Unit")}})</view> <view class="size12 c999 ">(bpm=/分钟)</view>
</view> </view>
<view class="center"> <view class="center">
<view class="left"> <view class="left">
<image src="/pageTwo/static/duan.png"></image> <image src="/pageTwo/static/duan.png"></image>
<view class="name"> <view class="name">
<view> <view>
{{$t("Numberofinterrupts")}} 中断次数
</view> </view>
<view> <view>
<text class="cyello Blue size20 mr-5">{{Bcount}}</text>{{$t("Times")}} <text class="cyello Blue size20 mr-5">{{Bcount}}</text>
</view> </view>
</view> </view>
</view> </view>
@ -41,20 +41,20 @@
<image src="/pageTwo/static/xu.png"></image> <image src="/pageTwo/static/xu.png"></image>
<view class="name"> <view class="name">
<view> <view>
{{$t("LongestConsecutive")}} 最长连续
</view> </view>
<view> <view>
<text class="cyello Blue size20 mr-5">{{continuous}}</text>{{$t("Number")}} <text class="cyello Blue size20 mr-5">{{continuous}}</text>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<view class="item"> <view class="item">
<view class="item-ite"><text>{{weight}}</text>{{$t("trainingsNumber")}}</view> <view class="item-ite"><text>{{weight}}</text>训练个数</view>
<view class="item-ite"><text>{{time_m?time_m:'00'}}:{{time_s?time_s:'00'}}</text>{{$t("MinuteSecond")}}</view> <view class="item-ite"><text>{{time_m?time_m:'00'}}:{{time_s?time_s:'00'}}</text>:</view>
<view class="item-ite"><text>{{Math.floor(kcal)}}</text>{{$t("Consumed")}}/kcal</view> <view class="item-ite"><text>{{Math.floor(kcal)}}</text>消耗/kcal</view>
</view> </view>
<view class="btn" @click="handleTarget">{{$t("complete")}}</view> <view class="btn" @click="handleTarget">完成</view>
</view> </view>
</view> </view>
</view> </view>
@ -89,8 +89,12 @@
computed: { computed: {
...mapState(["bleValue", "user", "isBluetoothTyle"]), ...mapState(["bleValue", "user", "isBluetoothTyle"]),
}, },
onHide() {
console.log("PCT01返回onHide", innerAudioContext)
},
onLoad(options) { onLoad(options) {
let that = this let that = this
innerAudioContext = uni.createInnerAudioContext()
if (options && options.info) { if (options && options.info) {
let info = options.info let info = options.info
that.info = JSON.parse(info) that.info = JSON.parse(info)
@ -102,20 +106,22 @@
that.handleStart('连续') that.handleStart('连续')
}, 1200) }, 1200)
} }
that.handleAudioStart()
}, },
onUnload: function() { onUnload: function() {
let that = this let that = this
innerAudioContext.destroy();
that.handleEnd() that.handleEnd()
console.log("PCT01返回onUnload", innerAudioContext)
}, },
watch: { watch: {
isBluetoothTyle: function() { isBluetoothTyle: function() {
let that = this let that = this
if (!that.isBluetoothTyle) { if (!that.isBluetoothTyle) {
uni.showModal({ uni.showModal({
title:that.$t("linkBluetoothFail"), title: '连接已断开',
content: that.$t("deviceDisconnection"), content: '训练过程中已与设备连接中断,请重新连接设备再开始训练',
showCancel: false, showCancel: false,
confirmText: that.$t("btnConfirm"),
success: function(res) { success: function(res) {
if (res.confirm) { if (res.confirm) {
that.handleTarget() that.handleTarget()
@ -125,15 +131,22 @@
console.log("蓝牙是否连接", that.isBluetoothTyle) console.log("蓝牙是否连接", that.isBluetoothTyle)
} }
}, },
//
isStart: function() {
let that = this
if (that.isStart) {
that.handleAudio()
}
},
// //
isToggle: function() { isToggle: function() {
let that = this let that = this
if (that.isToggle) { if (that.isToggle) {
uni.showModal({ uni.showModal({
title: that.$t("msgTitle"), title: '友情提示',
content: that.$t("ToggleTrainingsTips"), content: '训练过程中请勿切换训练,返回训练',
showCancel: false, showCancel: false,
confirmText: that.$t("btnConfirm"),
success: function(res) { success: function(res) {
if (res.confirm) { if (res.confirm) {
setTimeout(function() { setTimeout(function() {
@ -159,8 +172,93 @@
}, 400) }, 400)
} }
}, },
//
weight: function() {
let that = this
if (that.info.active == 1) {
that.$video.video.forEach(ite => {
if (Number(ite.name) == that.weight) {
innerAudioContext.autoplay = true;
innerAudioContext.loop = false;
innerAudioContext.src = ite.video;
innerAudioContext.play()
setTimeout(function() {
innerAudioContext.stop();
that.handleAudio()
}, 3000)
}
})
}
if (that.info.active == 2) {
let time = that.time_m * 60 + that.time_s
that.$video.video.forEach(ite => {
if ((Number(ite.name) == that.weight) && (Number(time) > 10)) {
innerAudioContext.autoplay = true;
innerAudioContext.loop = false;
innerAudioContext.src = ite.video;
innerAudioContext.play()
setTimeout(function() {
innerAudioContext.stop();
that.handleAudio()
}, 3000)
}
})
if (that.time_m == "00" && that.time_s == "10") {
innerAudioContext.autoplay = true;
innerAudioContext.loop = false;
innerAudioContext.src = '/pageTwo/static/time.mp3';
innerAudioContext.play()
setTimeout(function() {
innerAudioContext.stop();
that.handleAudio()
}, 3000)
}
}
if (that.info.active == 3) {
that.$video.video.forEach(ite => {
if ((Number(ite.name) == (Number(that.Ycount) - Number(that.weight))) && Number(that
.weight) != 0) {
innerAudioContext.autoplay = true;
innerAudioContext.loop = false;
innerAudioContext.src = ite.video;
innerAudioContext.play()
setTimeout(function() {
innerAudioContext.stop();
that.handleAudio()
}, 3000)
}
})
if (Number(that.weight) == 10) {
innerAudioContext.autoplay = true;
innerAudioContext.loop = false;
innerAudioContext.src = '/pageTwo/static/number.mp3';
innerAudioContext.play()
setTimeout(function() {
innerAudioContext.stop();
that.handleAudio()
}, 3000)
}
}
},
}, },
methods: { methods: {
handleAudioStart() {
let that = this
innerAudioContext.autoplay = true;
innerAudioContext.loop = false;
innerAudioContext.src = '/pageTwo/static/Start.mp3';
innerAudioContext.play()
setTimeout(function() {
innerAudioContext.stop();
that.handleAudio()
}, 5000)
},
handleAudio() {
innerAudioContext.autoplay = true;
innerAudioContext.loop = true;
innerAudioContext.src = '/pageTwo/static/flight.mp3';
innerAudioContext.play()
},
// //
notifyBLECharacteristicValue() { notifyBLECharacteristicValue() {
let that = this; let that = this;
@ -248,14 +346,14 @@
console.log('短震动'); console.log('短震动');
if (Number(that.time) < 10) { if (Number(that.time) < 10) {
uni.showModal({ uni.showModal({
title: that.$t("msgTitle"), title: '友情提示',
content: that.$t("NOComplete"), content: '本次跳绳时间低于10秒记录将不会被保存',
confirmText: that.$t("btnContinue"), confirmText: "继续",
cancelText: that.$t("btnBack"), cancelText: "返回",
success: function(res) { success: function(res) {
if (res.cancel) { if (res.cancel) {
that.isStart = false that.isStart = false
// innerAudioContext.stop(); innerAudioContext.stop();
uni.navigateBack({ // uni.navigateBack({ //
delta: 1 delta: 1
}) })
@ -304,7 +402,7 @@
}).then(res => { }).then(res => {
console.log("保存", that.time, res) console.log("保存", that.time, res)
that.isStart = false that.isStart = false
// innerAudioContext.stop() innerAudioContext.stop()
if (res.code == 0) { if (res.code == 0) {
that.bpm = that.weight / (that.time / 60) that.bpm = that.weight / (that.time / 60)
that.iswrapper = true that.iswrapper = true
@ -355,7 +453,7 @@
}, },
handleTarget() { handleTarget() {
let that = this let that = this
// innerAudioContext.stop(); innerAudioContext.stop();
uni.navigateBack({ // uni.navigateBack({ //
delta: 1 delta: 1
}) })

View File

@ -6,12 +6,12 @@
<view> <view>
<text class="weight">{{weightPage?weightPage:'0.00'}}</text> <text class="weight">{{weightPage?weightPage:'0.00'}}</text>
</view> </view>
<view class="typeInfo" v-if="typeInfo!=0">{{typeInfo==2?$t('StableWeight'):$t('realTimeWeight')}}</view> <view class="typeInfo" v-if="typeInfo!=0">{{typeInfo==2?'稳定重量':'实时重量'}}</view>
</view> </view>
<view class="tips"> <view class="tips">
<text>{{$t("msgTitle")}}:</text> <text>提示</text>
<text>1.{{$t("onDeviceBluetoothTips")}}</text> <text>1.请确定设备是开机状态</text>
<text>2.{{$t("openDeviceeMeasureTips")}}</text> <text>2.请确定手机蓝牙位置信息已打开</text>
</view> </view>
</view> </view>
</view> </view>
@ -67,7 +67,7 @@
isBluetoothTyle() { isBluetoothTyle() {
let that = this let that = this
if (!that.isBluetoothTyle) { if (!that.isBluetoothTyle) {
that.$tools.showModal(that.$t("linkBluetoothFail2")) that.$tools.showModal('蓝牙连接已断开,请重新连接后测量')
} }
}, },
bleValue: { bleValue: {
@ -88,10 +88,10 @@
if (that.imp == 0 || that.leftHandImp == 0 || that.rightHandImp == if (that.imp == 0 || that.leftHandImp == 0 || that.rightHandImp ==
0 || that.leftFootImp == 0 || that.rightFootImp == 0) { 0 || that.leftFootImp == 0 || that.rightFootImp == 0) {
uni.showModal({ uni.showModal({
title: that.$t("msgTitle"), title: '提示',
content: that.$t("FatFailure"), content: "体脂测量失败,是否保存本次测量结果?",
cancelText: that.$t("waive"), cancelText: "放弃",
confirmText: that.$t("Save"), confirmText: "保存",
success(res) { success(res) {
if (res.confirm) { if (res.confirm) {
that.imp = 0 that.imp = 0
@ -131,7 +131,7 @@
that.$store.commit("changeBluetoothValue", { that.$store.commit("changeBluetoothValue", {
type: 1, type: 1,
isConnectStatus: 2, isConnectStatus: 2,
bleTipsText: that.$t("linkBluetoothSuccess"), bleTipsText: "蓝牙连接成功,请上秤测量",
}) })
uni.notifyBLECharacteristicValueChange({ uni.notifyBLECharacteristicValueChange({
deviceId: that.deviceId, deviceId: that.deviceId,
@ -259,7 +259,7 @@
handleGetMeasure() { handleGetMeasure() {
let that = this let that = this
if (!that.height) { if (!that.height) {
this.$tools.msg(that.$t("verifyHeight")) this.$tools.msg("请输入身高")
return return
} }
that.$model.getmeasurefunit({ that.$model.getmeasurefunit({
@ -281,9 +281,9 @@
that.$store.dispatch("getResult", { that.$store.dispatch("getResult", {
aud_id: that.user.aud_id aud_id: that.user.aud_id
}) })
that.$tools.msg(that.$t("msgSuccess")) that.$tools.msg("测量成功")
} else { } else {
that.$tools.msg(that.$t("msgFail")) that.$tools.msg("测量失败")
} }
setTimeout(function() { setTimeout(function() {
uni.switchTab({ uni.switchTab({

View File

@ -25,11 +25,11 @@
</uni-swipe-action-item> </uni-swipe-action-item>
</uni-swipe-action> </uni-swipe-action>
</view> </view>
<view class="endtext" v-if="!lastPage || page >= lastPage"> {{$t("msgBottom")}} </view> <view class="endtext" v-if="!lastPage || page >= lastPage"> 到底了看看别的吧 </view>
</view> </view>
<view class="nolist" v-if="!lastPage"> <view class="nolist" v-if="!lastPage">
<image src="../../static/none.png"></image> <image src="../../static/none.png"></image>
<text>{{$t("msgNoMoreData")}}</text> <text>暂无数据</text>
</view> </view>
</view> </view>
</template> </template>
@ -57,9 +57,6 @@
}, },
onLoad() { onLoad() {
let that = this let that = this
uni.setNavigationBarTitle({
title: this.$t('HistoricalRcord'),
})
that.$nextTick(() => { that.$nextTick(() => {
that.getList() that.getList()
}) })
@ -69,7 +66,7 @@
console.log("onReachBottom", this.lastPage) console.log("onReachBottom", this.lastPage)
if (!this.lastPage || this.page >= this.lastPage) { if (!this.lastPage || this.page >= this.lastPage) {
uni.showToast({ uni.showToast({
title: that.$t("noMoreData"), title: '没有更多数据!',
icon: 'none' icon: 'none'
}) })
return return
@ -82,10 +79,8 @@
let that = this let that = this
let id = that.ranklist[index].id let id = that.ranklist[index].id
uni.showModal({ uni.showModal({
title: that.$t("msgTitle"), title: '友情提示',
content: that.$t("verifyDeleteHistory"), content: '是否删除当前测量记录?',
cancelText: that.$t("btnSancellation"), //
confirmText: that.$t("btnConfirm"), //
success: function(res) { success: function(res) {
if (res.confirm) { if (res.confirm) {
that.$model.getPublicHistoryDel({ that.$model.getPublicHistoryDel({
@ -97,10 +92,10 @@
return return
} }
that.ranklist.splice(index, 1) that.ranklist.splice(index, 1)
that.$tools.msg(that.$t("msgDelete")) that.$tools.msg("删除成功")
}) })
} else if (res.cancel) { } else if (res.cancel) {
that.$tools.msg(that.$t("msgCancel")); that.$tools.msg("您已取消操作!");
} }
}, },
}) })
@ -126,13 +121,13 @@
let that = this let that = this
that.$model.getPublicHistory({ that.$model.getPublicHistory({
aud_id: that.user.aud_id, aud_id: that.user.aud_id,
page_num: that.page, page: that.page,
type: that.publicRecordInfo[that.index].key_word, type: that.publicRecordInfo[that.index].key_word,
}).then((res) => { }).then((res) => {
console.log("历史记录", res) console.log("历史记录", res)
if (res.code != 0) return if (res.code != 0) return
let options = [{ let options = [{
text: that.$t("btnDelete"), text: '删除',
style: { style: {
backgroundColor: '#dd524d' backgroundColor: '#dd524d'
} }

View File

@ -36,9 +36,6 @@
// }, // },
onLoad(options) { onLoad(options) {
let that = this let that = this
uni.setNavigationBarTitle({
title: this.$t('titleDetail'),
})
that.id = options.id that.id = options.id
that.type = options.type that.type = options.type
that.getList() that.getList()

View File

@ -1,51 +1,51 @@
<template> <template>
<view class="content"> <view class="content">
<view class="top"> <view class="top">
<text>{{$t("inheritHeighet.title")}}</text> <text>成年身高预测</text>
{{$t("inheritHeighet.tips0")}} 为保证数据准确定请认真填写真实信息
</view> </view>
<view class="table"> <view class="table">
<view class="tr"> <view class="tr">
<view class="text">{{$t("infoGender")}}</view> <view class="text">性别</view>
<view class="td"> <view class="td">
<view class="radio"> <view class="radio">
<uni-icons :type="sex==1?'checkbox-filled':'circle'" @click="sex=1" size="24" <uni-icons :type="sex==1?'checkbox-filled':'circle'" @click="sex=1" size="24"
:color="sex==1?'#fea606':'#dfdfdf'"></uni-icons>{{$t("infoMan")}} :color="sex==1?'#fea606':'#dfdfdf'"></uni-icons>
</view> </view>
<view class="radio ml-10"> <view class="radio ml-10">
<uni-icons :type="sex==2?'checkbox-filled':'circle'" @click="sex=2" size="24" <uni-icons :type="sex==2?'checkbox-filled':'circle'" @click="sex=2" size="24"
:color="sex==2?'#fea606':'#dfdfdf'"></uni-icons>{{$t("infoWoman")}} :color="sex==2?'#fea606':'#dfdfdf'"></uni-icons>
</view> </view>
</view> </view>
</view> </view>
<view class="tr"> <view class="tr">
<view class="text">{{$t("infoBirthday")}}</view> <view class="text">出生日期</view>
<view class="td"> <view class="td">
<picker mode="date" :end="endDate" @change="maskClick" :value="birthday?birthday:endDate" <picker mode="date" :end="endDate" @change="maskClick" :value="birthday?birthday:endDate"
:fields="fields"> :fields="fields">
<view class="uni-input"> <view class="uni-input">
{{birthday?birthday:$t("verifyPicker")}} {{birthday?birthday:'请选择'}}
<icon class="iconfont icon-arrow-down-bold"></icon> <icon class="iconfont icon-arrow-down-bold"></icon>
</view> </view>
</picker> </picker>
</view> </view>
</view> </view>
<view class="tr"> <view class="tr">
<view class="text">{{$t("inheritHeighet.dad")}}</view> <view class="text">爸爸身高</view>
<view class="td"> <view class="td">
<input class="input" type="digit" v-model="dadheight " :placeholder="$t('verifyPicker')">cm <input class="input" type="digit" v-model="dadheight " placeholder="请输入">cm
</view> </view>
</view> </view>
<view class="tr"> <view class="tr">
<view class="text">{{$t("inheritHeighet.mom")}}</view> <view class="text">妈妈身高</view>
<view class="td"> <view class="td">
<input class="input" type="digit" v-model="momheight" :placeholder="$t('verifyPicker')">cm <input class="input" type="digit" v-model="momheight" placeholder="请输入">cm
</view> </view>
</view> </view>
</view> </view>
<view class="table table2"> <view class="table table2">
<view class="text">{{$t("inheritHeighet.geneticheight")}}</view> <view class="text">当前标准身高</view>
<view class="text">{{$t("inheritHeighet.adultheight")}}</view> <view class="text">成年身高预测</view>
<view class="td"> <view class="td">
<text>{{geneticheight}}</text>cm <text>{{geneticheight}}</text>cm
</view> </view>
@ -54,12 +54,12 @@
<text class="text2" v-if="errorvalue">±{{errorvalue}}</text> cm <text class="text2" v-if="errorvalue">±{{errorvalue}}</text> cm
</view> </view>
</view> </view>
<view class="btn mb-15" @click="handleClick">{{$t("btnBMI")}}</view> <view class="btn mb-15" @click="handleClick">立即计算</view>
<view class="title mt-20"> <view class="title mt-20">
<view class="h5">{{$t("inheritHeighet.tips1")}}</view> <view class="h5">如果当前实际身高当前标准身高</view>
<view class="con">{{$t("inheritHeighet.tips2")}}</view> <view class="con">孩子后天生长环境不利长高请从饮食睡眠运动情绪等方面排查加强后天因素管理让孩子处于最佳长高状态</view>
<view class="h5">{{$t("inheritHeighet.tips3")}}</view> <view class="h5">如果当前实际身高当前标准身高</view>
<view class="con">{{$t("inheritHeighet.tips4")}}</view> <view class="con">孩子后天生长环境有利长高请继续保持加强后天因素管理孩子成年可比标准高10cm以上</view>
<view class="con" v-for="(ite,ind) in configInfo.literature.height_prediction" <view class="con" v-for="(ite,ind) in configInfo.literature.height_prediction"
v-if="configInfo.literature.height_prediction.length"> v-if="configInfo.literature.height_prediction.length">
{{ite}} {{ite}}
@ -94,9 +94,6 @@
}, },
onLoad() { onLoad() {
let that = this let that = this
uni.setNavigationBarTitle({
title: this.$t('inheritHeighet.title'),
})
// #ifdef APP-PLUS // #ifdef APP-PLUS
that.fields = "time" that.fields = "time"
// #endif // #endif
@ -108,19 +105,15 @@
handleClick() { handleClick() {
let that = this let that = this
if (!that.dadheight) { if (!that.dadheight) {
that.$tools.msg(that.$t("verifyHeightDad")); that.$tools.msg("请输入爸爸身高!");
return return
} }
if (!that.momheight) { if (!that.momheight) {
that.$tools.msg(that.$t("verifyHeightMom")); that.$tools.msg("请输入妈妈身高!");
return
}
if (!that.birthday) {
that.$tools.msg(that.$t("verifyBirthday"));
return return
} }
uni.showLoading({ uni.showLoading({
title:that.$t("msgCalculating") title: '计算中'
}); });
that.$model.GetPredictheight({ that.$model.GetPredictheight({
dadHeight: that.dadheight, dadHeight: that.dadheight,

View File

@ -2,15 +2,17 @@
<view class="content"> <view class="content">
<!-- --> <!-- -->
<view class="skiptop"> <view class="skiptop">
<!-- <view class="status" @click="$Bluetooth.handleDevicesMac(isdevice,acd_id)"><text>设备连接</text></view> -->
<view class="item"> <view class="item">
<view class="item-ite">{{$t("averagelungsuction")}}<text>{{info?info.average:'--'}}</text></view> <view class="item-ite">平均吸气肺活量<text>{{info?info.average:'--'}}</text></view>
<view class="item-ite">{{$t("lungsuctionspeed")}}<text>--</text></view> <view class="item-ite">吸气速度<text>--</text></view>
<view class="item-ite">{{$t("isMarginal")}}<text>{{info?info.level:'--'}}</text></view> <view class="item-ite">是否达标<text>{{info?info.level:'--'}}</text></view>
</view> </view>
</view> </view>
<!--自由训练 --> <!--自由训练 -->
<view class="box1"> <view class="box1">
<view class="time">{{info?info.time:''}}</view> <view class="time">{{info?info.time:''}}</view>
<!-- <view class="LiuS">吸气速度 <text class="cgreen ml-5">{{info?info.flow_val:'--'}}L/min</text></view> -->
<view class="item"> <view class="item">
<view class="image"> <view class="image">
<image src="../../static/bae.png" mode="widthFix"></image> <image src="../../static/bae.png" mode="widthFix"></image>
@ -25,10 +27,10 @@
</view> </view>
</view> </view>
</view> </view>
<!-- <view class="val" v-if="info"> <view class="val" v-if="info">
<text>{{info.average}}</text> <text>{{info.average}}</text>
吸气肺活量平均值{{$t("infoGender")}} 吸气肺活量平均值
</view> --> </view>
</view> </view>
</view> </view>
</template> </template>
@ -52,9 +54,6 @@
}, },
onLoad(options) { onLoad(options) {
let that = this let that = this
uni.setNavigationBarTitle({
title: this.$t('titlevVitalcapacity'),
})
that.$store.dispatch("getLungResult", { that.$store.dispatch("getLungResult", {
aud_id: that.user.aud_id aud_id: that.user.aud_id
}) })

View File

@ -1,26 +1,26 @@
<template> <template>
<view class="content"> <view class="content">
<view class="lan box_shadow" @click="visible = true"> <view class="lan box_shadow" @click="visible = true">
<view class="left">{{$t("infoAddress")}}:</view> <view class="left">地区</view>
<view class="right">{{region?region:$t('verifyPicker')}}<uni-icons type="bottom"></uni-icons></view> <view class="right">{{region?region:'请选择'}}<uni-icons type="bottom"></uni-icons></view>
</view> </view>
<view class="lan box_shadow"> <view class="lan box_shadow">
<view class="left">{{$t("infoGender")}}:</view> <view class="left">性别</view>
<view class="right"> <view class="right">
<picker mode="selector" :range="sexItem" @change="onsexArr"> <picker mode="selector" :range="sexItem" @change="onsexArr">
<view class="uni-input">{{gender==1?$t('infoMan'):$t('infoWoman')}}</view> <view class="uni-input">{{gender==1?'男':'女'}}</view>
<icon class="iconfont icon-arrow-down-bold"></icon> <icon class="iconfont icon-arrow-down-bold"></icon>
</picker> </picker>
</view> </view>
</view> </view>
<!-- 估分 --> <!-- 估分 -->
<view class="box"> <view class="box">
<view class="title bold">{{$t("titleScoreResult")}}</view> <view class="title bold">本次估分成绩为</view>
<view class="charts mt-15"> <view class="charts mt-15">
<qiun-data-charts type="arcbar" :chartData="chartData" :Height="140" :Width="140" :canvas2d="true" /> <qiun-data-charts type="arcbar" :chartData="chartData" :Height="140" :Width="140" :canvas2d="true" />
<view class="name">{{score?score:'--'}}</view> <view class="name">{{score?score:'--'}}</view>
</view> </view>
<view class="title bold Max_score" v-if="Max_score">{{$t("MaxScore")}}:{{Max_score}}</view> <view class="title bold Max_score" v-if="Max_score">该地区体育总成绩为:{{Max_score}}</view>
</view> </view>
<!-- --> <!-- -->
<view v-if="selectllist.length" style="width: 100%;"> <view v-if="selectllist.length" style="width: 100%;">
@ -47,18 +47,18 @@
<view class="weight"> <view class="weight">
<view class="input"> <view class="input">
<!-- 整数类型 --> <!-- 整数类型 -->
<input type="number" v-model="it.value" confirm-type="done" :placeholder="$t('verifyRecord')" <input type="number" v-model="it.value" confirm-type="done" placeholder="请输入"
v-if="it.type ==1" :style="{'color':it.inputStyle}" v-if="it.type ==1" :style="{'color':it.inputStyle}"
@input="changeDisabled(it)" /> @input="changeDisabled(it)" />
<!-- 小数类型 --> <!-- 小数类型 -->
<input type="digit" v-model="it.value" confirm-type="done" :placeholder="$t('verifyRecord')" <input type="digit" v-model="it.value" confirm-type="done" placeholder="请输入"
maxlength="4" v-else-if="it.type ==2||it.type ==3" maxlength="4" v-else-if="it.type ==2||it.type ==3"
:style="{'color':it.inputStyle}" @input="changeDisabled(it)" /> :style="{'color':it.inputStyle}" @input="changeDisabled(it)" />
<!-- 分秒类型 --> <!-- 分秒类型 -->
<picker mode="multiSelector" :range="timeList" @change="bindTimeChange($event,it)" <picker mode="multiSelector" :range="timeList" @change="bindTimeChange($event,it)"
v-else-if="it.type ==4" :style="{'color':it.inputStyle}" v-else-if="it.type ==4" :style="{'color':it.inputStyle}"
@input="changeDisabled(it)"> @input="changeDisabled(it)">
<view>{{it.value?it.value:$t('verifyPicker')}}</view> <view>{{it.value?it.value:'请选择'}}</view>
<uni-icons type="down" color="#999" size="20" class="down"></uni-icons> <uni-icons type="down" color="#999" size="20" class="down"></uni-icons>
</picker> </picker>
<uni-icons type="clear" color="#999" v-if="it.value &&it.type !='4'" <uni-icons type="clear" color="#999" v-if="it.value &&it.type !='4'"
@ -81,8 +81,8 @@
</view> </view>
</view> </view>
</view> </view>
<view class="gfbtn" v-if="isSports" @click="handleNewScore()">{{$t("titleAnewScore")}}</view> <view class="gfbtn" v-if="isSports" @click="handleNewScore()">重新估分</view>
<view class="gfbtn" @click="handlescore()" v-else>{{$t("titleStartScore")}}</view> <view class="gfbtn" @click="handlescore()" v-else>开始估分</view>
</view> </view>
<!-- --> <!-- -->
<view class="nolist" v-else> <view class="nolist" v-else>
@ -98,7 +98,7 @@
<!-- 单选 --> <!-- 单选 -->
<view class="edit" @click.stop> <view class="edit" @click.stop>
<view class="title">{{$t("verifyRecord")}}<text class="choice">({{List.length}}/{{choice}})</text></view> <view class="title">请选择<text class="choice">({{List.length}}{{choice}})</text></view>
<view class="item" v-for="(item, index) in List" :key="index" @click="toggle(item)"> <view class="item" v-for="(item, index) in List" :key="index" @click="toggle(item)">
<!-- d单选 --> <!-- d单选 -->
<uni-icons :type="isActive.name==item.name?'circle-filled':'circle'" size="22" <uni-icons :type="isActive.name==item.name?'circle-filled':'circle'" size="22"
@ -115,16 +115,16 @@
</view> </view>
</view> </view>
</view> </view>
<view class="btn close" @click="onTap">{{$t("btnSancellation")}}</view> <view class="btn close" @click="onTap">取消</view>
<view class="btn" @click="handleTarget">{{$t("btnConfirm")}}</view> <view class="btn" @click="handleTarget">确定</view>
</view> </view>
</view> </view>
<!-- --> <!-- -->
<view v-if="visible" class="visible" @click="visible=false"> <view v-if="visible" class="visible" @click="visible=false">
<view @click.stop class="item"> <view @click.stop class="item">
<view class="groupBtn"> <view class="groupBtn">
<view @click="visible=false">{{$t("btnSancellation")}}</view> <view @click="visible=false">取消</view>
<view @click="handlesure()" class="sure">{{$t("btnConfirm")}}</view> <view @click="handlesure()" class="sure">确定</view>
</view> </view>
<picker-view @change="bindChange" :value="value" class="picker-view" :indicator-style="indicatorStyle"> <picker-view @change="bindChange" :value="value" class="picker-view" :indicator-style="indicatorStyle">
<picker-view-column> <picker-view-column>
@ -157,14 +157,14 @@
isTips: false, isTips: false,
chartData: { chartData: {
series: [{ series: [{
name: "", name: "正确率",
color: "#4687F9", color: "#4687F9",
data: 0.8 data: 0.8
}] }]
}, },
sexItem: [ sexItem: [
this.$t("infoMan"), "男",
this.$t("infoWoman") "女"
], ],
value: [1, 0], value: [1, 0],
visible: false, visible: false,
@ -187,7 +187,7 @@
timeList: [], timeList: [],
timesTndex: [0, 0], timesTndex: [0, 0],
isSports: false, isSports: false,
msg: this.$t("msgNoMoreData"), msg: "暂无信息",
isresult: false, isresult: false,
choice: 0, choice: 0,
isRefresh: false, isRefresh: false,
@ -205,9 +205,6 @@
}, },
onLoad() { onLoad() {
let that = this let that = this
uni.setNavigationBarTitle({
title: this.$t('titleScore'),
})
that.province = that.configInfo.area_list that.province = that.configInfo.area_list
that.city = that.province[1].list that.city = that.province[1].list
let defaultRegion = [that.province[that.value[0]].name, that.city[that.value[1]]] let defaultRegion = [that.province[that.value[0]].name, that.city[that.value[1]]]
@ -326,7 +323,7 @@
}, },
// //
onsexArr(e) { onsexArr(e) {
this.gender = this.sexItem[e.target.value] == this.$t("infoMan") ? 1 : 2 this.gender = this.sexItem[e.target.value] == "男" ? 1 : 2
}, },
// //
handleActiveState(item, ite, ind) { handleActiveState(item, ite, ind) {

View File

@ -8,26 +8,24 @@
<image v-if="islink==2" src="../../static/dui.png"></image> <image v-if="islink==2" src="../../static/dui.png"></image>
</view> </view>
<view class="item"> <view class="item">
<view class="item-ite">{{$t("today_jump_num")}}<text>{{info?info.today_jump_num:'--'}}</text></view> <view class="item-ite">今日个数<text>{{info?info.today_jump_num:'--'}}</text></view>
<view class="item-ite">{{$t("today_jump_time")}}<text>{{info?info.today_jump_time:'--'}}</text> <view class="item-ite">今日时长<text>{{info?info.today_jump_time:'--'}}</text></view>
</view> <view class="item-ite">卡路里/kcal<text>{{info?info.today_jump_kcal:'--'}}</text></view>
<view class="item-ite">{{$t("today_jump_kcal")}}/kcal<text>{{info?info.today_jump_kcal:'--'}}</text>
</view>
</view> </view>
</view> </view>
<!-- --> <!-- -->
<view class="tabbar"> <view class="tabbar">
<view @click="active=1" :class="[active==1?'active':'']">{{$t("jumpFree")}}</view> <view @click="active=1" :class="[active==1?'active':'']">自由跳</view>
<view @click="active=3" :class="[active==3?'active':'']">{{$t("backwardCount")}}</view> <view @click="active=3" :class="[active==3?'active':'']">倒计数</view>
<view @click="active=2" :class="[active==2?'active':'']">{{$t("Countdown")}}</view> <view @click="active=2" :class="[active==2?'active':'']">倒计时</view>
</view> </view>
<!--自由训练 --> <!--自由训练 -->
<view class="box1 box" v-if="active==1"> <view class="box1 box" v-if="active==1">
<view class="item"> <view class="item">
<text class="item-set item-set0">{{$t("jumpFreedom")}}</text> <text class="item-set item-set0">自由</text>
<text class="tips">{{$t("jumpUnlimited")}}</text> <text class="tips">无限制</text>
</view> </view>
<view :class="[islink==2?'start':'start Nstart']" @click="handleStart(1)">{{$t("instructStart")}}</view> <view :class="[islink==2?'start':'start Nstart']" @click="handleStart(1)">开始</view>
</view> </view>
<!--定时训练 --> <!--定时训练 -->
<view class="box1 box" v-if="active==2"> <view class="box1 box" v-if="active==2">
@ -39,11 +37,11 @@
</view> </view>
<view class="tips"> <view class="tips">
<picker mode="multiSelector" :range="timeList" :value="timesTndex" @change="bindTimeChange"> <picker mode="multiSelector" :range="timeList" :value="timesTndex" @change="bindTimeChange">
<view>{{$t("jumpTarget")}}</view> <view>调整目标</view>
</picker> </picker>
</view> </view>
</view> </view>
<view :class="[islink==2?'start':'start Nstart']" @click="handleStart(2)">{{$t("instructStart")}}</view> <view :class="[islink==2?'start':'start Nstart']" @click="handleStart(2)">开始</view>
</view> </view>
<!--定数训练 --> <!--定数训练 -->
<view class="box1 box" v-if="active==3"> <view class="box1 box" v-if="active==3">
@ -54,9 +52,9 @@
<input type="number" v-model="weight" focus="true" v-else @blur="disabled=false"> <input type="number" v-model="weight" focus="true" v-else @blur="disabled=false">
<text @click="handleWeightEdit('加')"></text> <text @click="handleWeightEdit('加')"></text>
</view> </view>
<text class="tips" @click="disabled=true">{{$t("jumpTarget")}}</text> <text class="tips" @click="disabled=true">调整目标</text>
</view> </view>
<view :class="[islink==2?'start':'start Nstart']" @click="handleStart(3)">{{$t("instructStart")}}</view> <view :class="[islink==2?'start':'start Nstart']" @click="handleStart(3)">开始</view>
</view> </view>
<!-- --> <!-- -->
</view> </view>
@ -101,9 +99,6 @@
}, },
mounted() { mounted() {
let that = this let that = this
uni.setNavigationBarTitle({
title: this.$t('titleSkipping'),
})
that.timeList = that.$tools.gethms() that.timeList = that.$tools.gethms()
that.time_m = that.timeList[0][1].substring(0, 2) that.time_m = that.timeList[0][1].substring(0, 2)
that.time_s = that.timeList[1][0].substring(0, 2) that.time_s = that.timeList[1][0].substring(0, 2)
@ -147,7 +142,7 @@
uni.$off("updateData") uni.$off("updateData")
setTimeout(() => { setTimeout(() => {
uni.switchTab({ uni.switchTab({
url: '/pages/card/card' url: '/pages/index/index'
}) })
}, 300) }, 300)
console.log("返回首页onUnload") console.log("返回首页onUnload")
@ -157,7 +152,7 @@
let that = this let that = this
if (!that.isBluetoothTyle) { if (!that.isBluetoothTyle) {
that.$store.commit("changeBluetoothValue", { that.$store.commit("changeBluetoothValue", {
bleTipsText: that.$t('ConnectionTimeout'), bleTipsText: "连接失败,点击重新连接",
isConnectStatus: 1, isConnectStatus: 1,
}) })
} }
@ -181,7 +176,7 @@
let that = this let that = this
if (that.islink == 2) return if (that.islink == 2) return
that.$store.commit('changeBluetoothValue', { that.$store.commit('changeBluetoothValue', {
bleTipsText: that.$t('SearchBluetooth'), bleTipsText: "蓝牙搜索中",
isConnectStatus: 0, isConnectStatus: 0,
deviceId: "", deviceId: "",
serviceId: "", serviceId: "",
@ -252,7 +247,7 @@
serviceId: that.serviceId, serviceId: that.serviceId,
foodNotify: that.notify, foodNotify: that.notify,
foodWrite: that.write, foodWrite: that.write,
bleTipsText: that.$t('ConnectionSuccessful'), bleTipsText: "连接成功",
isConnectStatus: 2 isConnectStatus: 2
}) })
uni.onBLECharacteristicValueChange(function(res) { uni.onBLECharacteristicValueChange(function(res) {
@ -306,7 +301,7 @@
let m = null let m = null
let send = null let send = null
if (that.islink != 2) { if (that.islink != 2) {
that.$tools.msg(that.$t('connectingDevice')) that.$tools.msg("请先连接设备!")
return return
} }
if (ind == 1) { // 1 if (ind == 1) { // 1

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Some files were not shown because too many files have changed in this diff Show More