fix: 处理屏幕初始化问题
This commit is contained in:
parent
392157111c
commit
91e4a89ae3
28
App.vue
28
App.vue
|
|
@ -1,15 +1,7 @@
|
||||||
<script>
|
<script>
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
created() {
|
|
||||||
},
|
|
||||||
beforeMount() {
|
|
||||||
plus.screen.lockOrientation( 'landscape-primary');
|
|
||||||
},
|
|
||||||
beforeCreate() {
|
|
||||||
plus.screen.lockOrientation( 'landscape-primary');
|
|
||||||
},
|
|
||||||
onLoad() {
|
onLoad() {
|
||||||
uni.onNetworkStatusChange((res) => {
|
uni.onNetworkStatusChange((res) => {
|
||||||
console.log('网络类型变化:', res.networkType);
|
console.log('网络类型变化:', res.networkType);
|
||||||
|
|
@ -64,16 +56,16 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
// 刷新页面适配平板
|
// 刷新页面适配平板
|
||||||
if (this.$store.getters['api/getApiToken']) {
|
// if (this.$store.getters['api/getApiToken']) {
|
||||||
setTimeout(() => {
|
// setTimeout(() => {
|
||||||
uni.reLaunch({
|
// uni.reLaunch({
|
||||||
url: '/pages/index/index'
|
// url: '/pages/index/index'
|
||||||
})
|
// })
|
||||||
}, 1000)
|
// console.log('刷新')
|
||||||
}
|
// }, 1000)
|
||||||
|
// }
|
||||||
},
|
},
|
||||||
onHide: function() {
|
onHide: function() {
|
||||||
|
|
||||||
console.log('App 关闭')
|
console.log('App 关闭')
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
@ -156,7 +148,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
body{
|
body{
|
||||||
background: #fff !important;
|
background: #fff !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,18 @@
|
||||||
<view :class="'list'" v-for="(item, index) in dataList" :key="index" @click="goInfo(index)">
|
<view :class="'list'" v-for="(item, index) in dataList" :key="index" @click="goInfo(index)">
|
||||||
<view v-if="!customType.includes(activeType)" class="row" >
|
<view v-if="!customType.includes(activeType)" class="row" >
|
||||||
<view class="data">
|
<view class="data">
|
||||||
<image src="https://img.agrimedia.cn/apptest/%E6%89%8B%E8%A1%A8-%E7%BA%BF%E6%80%A73-0.png" mode="widthFix"></image>
|
<image class="data-icon" src="https://img.agrimedia.cn/apptest/%E6%89%8B%E8%A1%A8-%E7%BA%BF%E6%80%A73-0.png" mode="widthFix"></image>
|
||||||
|
<view v-if="activeType == 'SleepDatas'">
|
||||||
|
<view>睡眠时长:
|
||||||
|
{{getHours(item.data_msg[0].sleepTotalTime, 0)}}
|
||||||
|
<text class="unit">时</text>
|
||||||
|
{{getHours(item.data_msg[0].sleepTotalTime, 1)}}
|
||||||
|
<text class="unit">分</text>
|
||||||
|
</view>
|
||||||
|
<view>深度睡眠: {{item.data_msg[0].deepSleepTime}}
|
||||||
|
<text class="unit">分钟</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
<view v-if="activeType == 'stepIndex'">
|
<view v-if="activeType == 'stepIndex'">
|
||||||
步数:{{item.data_msg.stepCount}}
|
步数:{{item.data_msg.stepCount}}
|
||||||
</view>
|
</view>
|
||||||
|
|
@ -70,7 +81,7 @@
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="time">
|
<view class="time">
|
||||||
{{item.date_str}} {{item.hour_minute}}
|
{{item.date_str}} {{item.hour_minute}}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="" v-else>
|
<view class="" v-else>
|
||||||
|
|
@ -134,7 +145,8 @@
|
||||||
ECGData: '心电图',
|
ECGData: '心电图',
|
||||||
stepIndex: '步数',
|
stepIndex: '步数',
|
||||||
bodyData:'身体成分',
|
bodyData:'身体成分',
|
||||||
bloodLiquidAll: '血脂'
|
bloodLiquidAll: '血脂',
|
||||||
|
SleepDatas: '睡眠'
|
||||||
},
|
},
|
||||||
time: new Date().toISOString().substring(0, 10),
|
time: new Date().toISOString().substring(0, 10),
|
||||||
flag: true,
|
flag: true,
|
||||||
|
|
@ -191,6 +203,8 @@
|
||||||
type = 'step_split'
|
type = 'step_split'
|
||||||
} else if (this.activeType == 'bloodLiquidAll') {
|
} else if (this.activeType == 'bloodLiquidAll') {
|
||||||
type = 'bloodLiquid'
|
type = 'bloodLiquid'
|
||||||
|
} else if (this.activeType == 'SleepDatas') {
|
||||||
|
type = 'SleepDatas'
|
||||||
} else {
|
} else {
|
||||||
type = this.activeType
|
type = this.activeType
|
||||||
};
|
};
|
||||||
|
|
@ -221,11 +235,26 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
back() {
|
back() {
|
||||||
if (this.activeType == 'ECGData' || this.activeType == 'bodyData') {
|
if (this.activeType == 'ECGData' || this.activeType == 'bodyData' || this.activeType == 'SleepDatas') {
|
||||||
this.$emit('back', 1)
|
this.$emit('back', 1)
|
||||||
} else {
|
} else {
|
||||||
this.$emit('back', 2)
|
this.$emit('back', 2)
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
getHours(minutes, type) {
|
||||||
|
if (type == 0) {
|
||||||
|
return Math.floor((minutes / 60).toFixed(2));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type == 1) {
|
||||||
|
var minutes = minutes % 60;
|
||||||
|
|
||||||
|
if (minutes < 10) {
|
||||||
|
minutes = '0' + minutes;
|
||||||
|
}
|
||||||
|
return minutes;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -284,6 +313,9 @@
|
||||||
width: 50rpx;
|
width: 50rpx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.data-icon {
|
||||||
|
margin-right: 20rpx;
|
||||||
|
}
|
||||||
.time {
|
.time {
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
<template>
|
<template>
|
||||||
<view>
|
<view>
|
||||||
<tm-nav-bar left-icon="arrow-left" title="睡眠" @clickLeft="back" :rbgs="false"/>
|
<tm-nav-bar
|
||||||
|
left-icon="arrow-left"
|
||||||
|
title="睡眠"
|
||||||
|
@clickLeft="back"
|
||||||
|
:rightText="`全部数据`"
|
||||||
|
@clickRight="goAllPath" />
|
||||||
<view class="flx jcsb ac" style="height: 40rpx;background-color: #fff;padding: 20rpx;">
|
<view class="flx jcsb ac" style="height: 40rpx;background-color: #fff;padding: 20rpx;">
|
||||||
<view class="" style="font-size: 40rpx;font-weight: bold;">
|
<view class="" style="font-size: 40rpx;font-weight: bold;">
|
||||||
|
|
||||||
|
|
@ -261,6 +266,11 @@
|
||||||
this.$emit('back', 1)
|
this.$emit('back', 1)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 全部数据
|
||||||
|
goAllPath() {
|
||||||
|
this.$emit('allData', 3)
|
||||||
|
},
|
||||||
|
|
||||||
getDataList(){
|
getDataList(){
|
||||||
let type = 'SleepDatas'
|
let type = 'SleepDatas'
|
||||||
let res = this.$store.dispatch('api/getDeviceListDays', {
|
let res = this.$store.dispatch('api/getDeviceListDays', {
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ export default () => {
|
||||||
config.baseURL = readBaseUrl; // 测试地址
|
config.baseURL = readBaseUrl; // 测试地址
|
||||||
}
|
}
|
||||||
|
|
||||||
// #ifdef APP-PLUS
|
// #ifdef APP-PLUS
|
||||||
config.baseURL = baseUrl; // 测试地址
|
config.baseURL = baseUrl; // 测试地址
|
||||||
// #endif
|
// #endif
|
||||||
return config
|
return config
|
||||||
|
|
@ -41,10 +41,10 @@ export default () => {
|
||||||
let ob = (config.method == 'GET'? config.params : config.data)
|
let ob = (config.method == 'GET'? config.params : config.data)
|
||||||
const custom = config.custom.hideLoading || false
|
const custom = config.custom.hideLoading || false
|
||||||
if(!custom){
|
if(!custom){
|
||||||
uni.showLoading({
|
// uni.showLoading({
|
||||||
mask: true,
|
// mask: true,
|
||||||
title:"加载中..."
|
// title:"加载中..."
|
||||||
});
|
// });
|
||||||
}
|
}
|
||||||
|
|
||||||
return config
|
return config
|
||||||
|
|
@ -113,7 +113,7 @@ export default () => {
|
||||||
}, (response) => {
|
}, (response) => {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
mask: true,
|
mask: true,
|
||||||
title: '服务器响应失败' + response.statusCode,
|
title: '网络断开',
|
||||||
icon: 'none'
|
icon: 'none'
|
||||||
})
|
})
|
||||||
return Promise.reject(response)
|
return Promise.reject(response)
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,9 @@
|
||||||
|
|
||||||
<!-- 视频 -->
|
<!-- 视频 -->
|
||||||
<div class="video-wrap">
|
<div class="video-wrap">
|
||||||
|
<div id="shadow">
|
||||||
|
<div id="shadow-text">模型正在启动……</div>
|
||||||
|
</div>
|
||||||
<video id="myVideo" muted loop autoplay playsinline>
|
<video id="myVideo" muted loop autoplay playsinline>
|
||||||
<source src="https://img.agrimedia.cn/bmsc/%E9%A3%9E%E4%B9%A620240918-175041.mp4" type="video/mp4">
|
<source src="https://img.agrimedia.cn/bmsc/%E9%A3%9E%E4%B9%A620240918-175041.mp4" type="video/mp4">
|
||||||
</video>
|
</video>
|
||||||
|
|
@ -124,7 +127,7 @@
|
||||||
dataLines.push(line.trim());
|
dataLines.push(line.trim());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const dataJson = dataLines.join('');
|
const dataJson = dataLines.join('');
|
||||||
try {
|
try {
|
||||||
if (dataJson) {
|
if (dataJson) {
|
||||||
|
|
@ -151,8 +154,37 @@
|
||||||
var endTime = 10; // 结束时间(以秒为单位)
|
var endTime = 10; // 结束时间(以秒为单位)
|
||||||
var timeUpdateListener; // 保存timeupdate事件的监听器
|
var timeUpdateListener; // 保存timeupdate事件的监听器
|
||||||
|
|
||||||
|
var onLine = 'false';
|
||||||
|
|
||||||
|
// 在线离线
|
||||||
|
function checkNetworkStatus() {
|
||||||
|
if (navigator.onLine) {
|
||||||
|
onLine = true;
|
||||||
|
console.log('在线');
|
||||||
|
} else {
|
||||||
|
onLine = false;
|
||||||
|
console.log('离线');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 初始检查网络状态
|
||||||
|
checkNetworkStatus();
|
||||||
|
|
||||||
|
// 遮罩视频
|
||||||
|
var shadowDom = document.getElementById('shadow');
|
||||||
|
var shadowText = document.getElementById('shadow-text');
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
if (onLine) {
|
||||||
|
shadowDom.style.display = 'none';
|
||||||
|
} else {
|
||||||
|
shadowText.innerHTML = '环境异常,请检查网络'
|
||||||
|
}
|
||||||
|
}, 500);
|
||||||
|
|
||||||
|
|
||||||
// 指定段落
|
// 指定段落
|
||||||
function playVideoSegment(startTime, endTime) {
|
function playVideoSegment(startTime, endTime) {
|
||||||
videoElement.currentTime = startTime;
|
videoElement.currentTime = startTime;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
videoElement.play();
|
videoElement.play();
|
||||||
|
|
@ -264,42 +296,44 @@
|
||||||
apiKey: '0b17a761b6b7174b789f639119d7e29a',
|
apiKey: '0b17a761b6b7174b789f639119d7e29a',
|
||||||
onWillStatusChange: function (oldStatus, newStatus) {},
|
onWillStatusChange: function (oldStatus, newStatus) {},
|
||||||
onTextChange: function (text) {
|
onTextChange: function (text) {
|
||||||
// 监听识别结果的变化
|
// 2秒钟内没有说话,就自动关闭
|
||||||
voiceTxt.innerText = text;
|
|
||||||
marquee("marquee", "voice-txt");
|
|
||||||
// 3秒钟内没有说话,就自动关闭
|
|
||||||
|
|
||||||
// 如果已有定时器在运行,则清除它
|
// 如果已有定时器在运行,则清除它
|
||||||
if (gaptime) {
|
if (gaptime) {
|
||||||
clearInterval(gaptime);
|
clearInterval(gaptime);
|
||||||
gaptime = null;
|
gaptime = null;
|
||||||
};
|
};
|
||||||
// 重置倒计时
|
// 重置倒计时
|
||||||
seconds = 10;
|
seconds = 5;
|
||||||
|
|
||||||
gaptime = setInterval(() => {
|
gaptime = setInterval(() => {
|
||||||
seconds--;
|
seconds--;
|
||||||
if (voiceTxt.innerText) {
|
if (text) {
|
||||||
clearInterval(gaptime);
|
clearInterval(gaptime);
|
||||||
gaptime = null;
|
gaptime = null;
|
||||||
seconds = 10;
|
seconds = 5;
|
||||||
|
|
||||||
// 3秒钟内没有说话,就自动关闭
|
// 2秒钟内没有说话,就自动关闭
|
||||||
if (text) {
|
if (text) {
|
||||||
if (!isCallbackExecuted) {
|
if (!isCallbackExecuted) {
|
||||||
clearTimeout(times);
|
clearTimeout(times);
|
||||||
times = setTimeout(() => {
|
times = setTimeout(() => {
|
||||||
|
// 监听识别结果的变化
|
||||||
|
voiceTxt.innerText = text;
|
||||||
|
marquee("marquee", "voice-txt");
|
||||||
statusTxt.value = '正在听…';
|
statusTxt.value = '正在听…';
|
||||||
|
|
||||||
const params = { msg: text };
|
console.log(new Date().getTime(), '收到文字')
|
||||||
|
|
||||||
|
const params = { msg: text };
|
||||||
|
|
||||||
// 判断关键字是否存在
|
// 判断关键字是否存在
|
||||||
const result = parseHealthQuery(params.msg);
|
const result = parseHealthQuery(params.msg);
|
||||||
isCallbackExecuted = true;
|
isCallbackExecuted = true;
|
||||||
|
console.log(new Date().getTime(), 1)
|
||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
DetailDay(result.dataKey, result.date).then(res => {
|
DetailDay(result.dataKey, result.date).then(res => {
|
||||||
let TargetData = res.data.data;
|
let TargetData = res.data.data;
|
||||||
|
|
||||||
if (result.dataKey == 'ECGData') {
|
if (result.dataKey == 'ECGData') {
|
||||||
TargetData.map(item => {
|
TargetData.map(item => {
|
||||||
|
|
@ -307,13 +341,14 @@
|
||||||
delete item.data_msg.list;
|
delete item.data_msg.list;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result.dataKey == 'bloodLiquid') {
|
if (result.dataKey == 'bloodLiquid') {
|
||||||
TargetData.map(item => {
|
TargetData.map(item => {
|
||||||
item.data_msg.cholesterol = item.data_msg.cholesterol/100;
|
item.data_msg.cholesterol = (item.data_msg.cholesterol/100).toFixed(2);
|
||||||
item.data_msg.highDensity = item.data_msg.highDensity/100;
|
item.data_msg.highDensity = (item.data_msg.highDensity/100).toFixed(2);
|
||||||
item.data_msg.triacylglycerol = item.data_msg.triacylglycerol/100;
|
item.data_msg.triacylglycerol = (item.data_msg.triacylglycerol/100).toFixed(2);
|
||||||
item.data_msg.uricAcidVal = item.data_msg.uricAcidVal/10000;
|
item.data_msg.uricAcidVal = (item.data_msg.uricAcidVal/10000).toFixed(2);
|
||||||
item.data_msg.lowDensity = item.data_msg.lowDensity/100;
|
item.data_msg.lowDensity = (item.data_msg.lowDensity/100).toFixed(2);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -321,7 +356,6 @@
|
||||||
|
|
||||||
console.log(Question, '问题=========================问题');
|
console.log(Question, '问题=========================问题');
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 调用接口 传递关键信息 文字转语音
|
* 调用接口 传递关键信息 文字转语音
|
||||||
*/
|
*/
|
||||||
|
|
@ -462,7 +496,7 @@
|
||||||
isCallbackExecuted = true;
|
isCallbackExecuted = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}, 3000);
|
}, 2000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (seconds == 0){
|
} else if (seconds == 0){
|
||||||
|
|
@ -616,7 +650,7 @@
|
||||||
startRec.style.display = "none";
|
startRec.style.display = "none";
|
||||||
endRec.style.display = "block";
|
endRec.style.display = "block";
|
||||||
stopRec.style.display = "block";
|
stopRec.style.display = "block";
|
||||||
|
voiceTxt.innerText = '';
|
||||||
NextPlayVideo(response, filterString(Subtitles, ['*', ' ']));
|
NextPlayVideo(response, filterString(Subtitles, ['*', ' ']));
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
hideModal();
|
hideModal();
|
||||||
|
|
@ -642,6 +676,8 @@
|
||||||
// 播放音频
|
// 播放音频
|
||||||
audioElement.play();
|
audioElement.play();
|
||||||
|
|
||||||
|
console.log(new Date().getTime(), '播放音频')
|
||||||
|
|
||||||
// 循环视频
|
// 循环视频
|
||||||
replayVideoSegment(60, 120);
|
replayVideoSegment(60, 120);
|
||||||
|
|
||||||
|
|
@ -679,15 +715,15 @@
|
||||||
demoData = {
|
demoData = {
|
||||||
bloodGlucose: "血糖",
|
bloodGlucose: "血糖",
|
||||||
SleepDatas: "睡眠",
|
SleepDatas: "睡眠",
|
||||||
bloodOxygen: "血氧",
|
bloodOxygen: ['血氧', '血氧饱和度'],
|
||||||
bloodPressure: '血压',
|
bloodPressure: '血压',
|
||||||
meiTuo: '梅脱',
|
meiTuo: '梅脱',
|
||||||
pulseReat: '心率',
|
pulseReat: '心率',
|
||||||
bodyTemperature: '体温',
|
bodyTemperature: '体温',
|
||||||
ECGData: '心电图',
|
ECGData: '心电图',
|
||||||
bloodLiquid: ['血脂', '血液', '尿酸'],
|
bloodLiquid: ['血脂', '血液', '尿酸', '胆固醇', '甘油三脂', '高密度脂蛋白', '低密度脂蛋白'],
|
||||||
bodyData: '身体成分',
|
bodyData: '身体成分',
|
||||||
stepIndex: ['运动', '步数']
|
stepIndex: ['运动', '步数']
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -716,7 +752,7 @@
|
||||||
|
|
||||||
// 在查询逻辑中使用这个辅助函数
|
// 在查询逻辑中使用这个辅助函数
|
||||||
for (let key in demoData) {
|
for (let key in demoData) {
|
||||||
if (typeof demoData[key] === 'object' && key === 'bloodLiquid' || typeof demoData[key] === 'object' && key === 'stepIndex' ) {
|
if (typeof demoData[key] === 'object' && key === 'bloodLiquid' || typeof demoData[key] === 'object' && key === 'stepIndex' || typeof demoData[key] === 'object' && key === 'bloodOxygen' ) {
|
||||||
if (isBloodLiquidMatch(demoData[key], query)) {
|
if (isBloodLiquidMatch(demoData[key], query)) {
|
||||||
key === 'stepIndex'? key = 'step_split' : ''; // 修改步数参数
|
key === 'stepIndex'? key = 'step_split' : ''; // 修改步数参数
|
||||||
return {
|
return {
|
||||||
|
|
@ -768,6 +804,30 @@
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#shadow {
|
||||||
|
position: fixed;
|
||||||
|
z-index: 99999;
|
||||||
|
width: 100%;
|
||||||
|
height: 100vh;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
background-color: #06193a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#shadow-text {
|
||||||
|
width: 100%;
|
||||||
|
height: 100vh;
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 100vh;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
margin: 0 auto;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
#myVideo {
|
#myVideo {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100% !important;
|
height: 100% !important;
|
||||||
|
|
|
||||||
|
|
@ -23,8 +23,7 @@
|
||||||
},
|
},
|
||||||
/* 应用发布信息 */
|
/* 应用发布信息 */
|
||||||
"distribute" : {
|
"distribute" : {
|
||||||
/* android打包配置 */
|
/* android打包配置 */// "screenOrientation" : "landscape-primary", // 竖屏,或者 "landscape" 横屏
|
||||||
"screenOrientation" : "landscape-primary", // 竖屏,或者 "landscape" 横屏
|
|
||||||
"android" : {
|
"android" : {
|
||||||
"permissions" : [
|
"permissions" : [
|
||||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||||
|
|
@ -45,7 +44,6 @@
|
||||||
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>"
|
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
// "orientation": "portrait",
|
|
||||||
/* ios打包配置 */
|
/* ios打包配置 */
|
||||||
"ios" : {
|
"ios" : {
|
||||||
"dSYMs" : false
|
"dSYMs" : false
|
||||||
|
|
|
||||||
16
pages.json
16
pages.json
|
|
@ -1,5 +1,9 @@
|
||||||
{
|
{
|
||||||
"pages": [ //pages数组中第一项表示应用启动页,
|
"pages": [ //pages数组中第一项表示应用启动页,
|
||||||
|
{
|
||||||
|
"path": "pages/index/blank",
|
||||||
|
"style": {}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/index/index",
|
"path": "pages/index/index",
|
||||||
"style": {}
|
"style": {}
|
||||||
|
|
@ -77,6 +81,13 @@
|
||||||
{
|
{
|
||||||
"navigationBarTitleText" : ""
|
"navigationBarTitleText" : ""
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path" : "pages/index/indexs/indexs",
|
||||||
|
"style" :
|
||||||
|
{
|
||||||
|
"navigationBarTitleText" : ""
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
// "tabBar": {
|
// "tabBar": {
|
||||||
|
|
@ -93,11 +104,10 @@
|
||||||
// }]
|
// }]
|
||||||
// },
|
// },
|
||||||
"globalStyle": {
|
"globalStyle": {
|
||||||
"navigationBarTextStyle": "black",
|
"navigationBarTextStyle": "black",
|
||||||
"navigationBarTitleText": "中鼎云医",
|
"navigationBarTitleText": "中鼎云医",
|
||||||
"navigationBarBackgroundColor": "#F8F8F8",
|
"navigationBarBackgroundColor": "#F8F8F8",
|
||||||
"backgroundColor": "#F8F8F8",
|
"backgroundColor": "#F8F8F8",
|
||||||
"navigationStyle": "custom",
|
"navigationStyle": "custom"
|
||||||
"pageOrientation":"portrait"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
<!-- 这个页面可以解决屏幕初始化问题 -->
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<view class="main"></view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
mounted() {
|
||||||
|
setTimeout(() => {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/index/index'
|
||||||
|
})
|
||||||
|
}, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.main {
|
||||||
|
width: 100%;
|
||||||
|
height: 100vh;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -1,18 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<view>
|
<view>
|
||||||
<view class="skeleton flx" v-if="loading">
|
|
||||||
<view style="width: 60%">
|
|
||||||
<x-skeleton type="banner" :loading="loading"></x-skeleton>
|
|
||||||
<x-skeleton type="banner" :loading="loading"></x-skeleton>
|
|
||||||
<x-skeleton type="banner" :loading="loading"></x-skeleton>
|
|
||||||
<x-skeleton type="banner" :loading="loading"></x-skeleton>
|
|
||||||
<x-skeleton type="banner" :loading="loading"></x-skeleton>
|
|
||||||
</view>
|
|
||||||
<view style="width: 40%">
|
|
||||||
<x-skeleton :loading="loading" :configs="customConfigs" fadeOut></x-skeleton>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="content">
|
<view class="content">
|
||||||
<!-- 首页数据 -->
|
<!-- 首页数据 -->
|
||||||
<view class="content-wrap" v-if="Sindex == 1">
|
<view class="content-wrap" v-if="Sindex == 1">
|
||||||
|
|
@ -24,17 +11,16 @@
|
||||||
<echartsData :pageData="pageData" @back="back" @allData="allData"></echartsData>
|
<echartsData :pageData="pageData" @back="back" @allData="allData"></echartsData>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 日期筛选 全部数据 -->
|
<!-- 日期筛选全部数据 -->
|
||||||
<view class="content-wrap" v-if="Sindex == 3">
|
<view class="content-wrap" v-if="Sindex == 3">
|
||||||
<allData @back="back" :activeType="activeType"></allData>
|
<allData @back="back" :activeType="activeType"></allData>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 睡眠 -->
|
<!-- 睡眠 -->
|
||||||
<view class="content-wrap" v-if="Sindex == 4">
|
<view class="content-wrap" v-if="Sindex == 4">
|
||||||
<sleep-info ref="sleep" @back="back"></sleep-info>
|
<sleep-info ref="sleep" @back="back" @allData="allData"></sleep-info>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
|
||||||
<!-- 数字人webview原生页面 -->
|
<!-- 数字人webview原生页面 -->
|
||||||
<view class="right">
|
<view class="right">
|
||||||
<web-view :src="urlLink"></web-view>
|
<web-view :src="urlLink"></web-view>
|
||||||
|
|
@ -98,7 +84,6 @@
|
||||||
type: ''
|
type: ''
|
||||||
},
|
},
|
||||||
|
|
||||||
loading: true,
|
|
||||||
customConfigs: {
|
customConfigs: {
|
||||||
padding: '30rpx', //内边距
|
padding: '30rpx', //内边距
|
||||||
gridRows: 2, //行数
|
gridRows: 2, //行数
|
||||||
|
|
@ -214,7 +199,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
this.urlLink = `/hybrid/html/ai.html?data=${JSON.stringify(this.dataListsNew)}&user=${JSON.stringify(this.getUserInfo)}&token=${store.getters['api/getApiToken']}&deviceId=${this.getActiceDevice.device_id}`;
|
this.urlLink = `/hybrid/html/ai.html?data=${JSON.stringify(this.dataListsNew)}&user=${JSON.stringify(this.getUserInfo)}&token=${store.getters['api/getApiToken']}&deviceId=${this.getActiceDevice.device_id}`;
|
||||||
this.loading = false;
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
@ -234,6 +218,7 @@
|
||||||
return
|
return
|
||||||
} else if (str == 'SleepDatas') {
|
} else if (str == 'SleepDatas') {
|
||||||
this.Sindex = 4;
|
this.Sindex = 4;
|
||||||
|
this.activeType = str;
|
||||||
} else {
|
} else {
|
||||||
this.Sindex = 2;
|
this.Sindex = 2;
|
||||||
this.activeType = str;
|
this.activeType = str;
|
||||||
|
|
@ -288,6 +273,7 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
allData(index) {
|
allData(index) {
|
||||||
|
console.log(index)
|
||||||
this.Sindex = index;
|
this.Sindex = index;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,6 @@
|
||||||
<view class="circle" style="background-color:#e933dd ;">
|
<view class="circle" style="background-color:#e933dd ;">
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -27,6 +27,9 @@
|
||||||
|
|
||||||
<!-- 视频 -->
|
<!-- 视频 -->
|
||||||
<div class="video-wrap">
|
<div class="video-wrap">
|
||||||
|
<div id="shadow">
|
||||||
|
<div id="shadow-text">模型正在启动……</div>
|
||||||
|
</div>
|
||||||
<video id="myVideo" muted loop autoplay playsinline>
|
<video id="myVideo" muted loop autoplay playsinline>
|
||||||
<source src="https://img.agrimedia.cn/bmsc/%E9%A3%9E%E4%B9%A620240918-175041.mp4" type="video/mp4">
|
<source src="https://img.agrimedia.cn/bmsc/%E9%A3%9E%E4%B9%A620240918-175041.mp4" type="video/mp4">
|
||||||
</video>
|
</video>
|
||||||
|
|
@ -124,7 +127,7 @@
|
||||||
dataLines.push(line.trim());
|
dataLines.push(line.trim());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const dataJson = dataLines.join('');
|
const dataJson = dataLines.join('');
|
||||||
try {
|
try {
|
||||||
if (dataJson) {
|
if (dataJson) {
|
||||||
|
|
@ -151,8 +154,37 @@
|
||||||
var endTime = 10; // 结束时间(以秒为单位)
|
var endTime = 10; // 结束时间(以秒为单位)
|
||||||
var timeUpdateListener; // 保存timeupdate事件的监听器
|
var timeUpdateListener; // 保存timeupdate事件的监听器
|
||||||
|
|
||||||
|
var onLine = 'false';
|
||||||
|
|
||||||
|
// 在线离线
|
||||||
|
function checkNetworkStatus() {
|
||||||
|
if (navigator.onLine) {
|
||||||
|
onLine = true;
|
||||||
|
console.log('在线');
|
||||||
|
} else {
|
||||||
|
onLine = false;
|
||||||
|
console.log('离线');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 初始检查网络状态
|
||||||
|
checkNetworkStatus();
|
||||||
|
|
||||||
|
// 遮罩视频
|
||||||
|
var shadowDom = document.getElementById('shadow');
|
||||||
|
var shadowText = document.getElementById('shadow-text');
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
if (onLine) {
|
||||||
|
shadowDom.style.display = 'none';
|
||||||
|
} else {
|
||||||
|
shadowText.innerHTML = '环境异常,请检查网络'
|
||||||
|
}
|
||||||
|
}, 500);
|
||||||
|
|
||||||
|
|
||||||
// 指定段落
|
// 指定段落
|
||||||
function playVideoSegment(startTime, endTime) {
|
function playVideoSegment(startTime, endTime) {
|
||||||
videoElement.currentTime = startTime;
|
videoElement.currentTime = startTime;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
videoElement.play();
|
videoElement.play();
|
||||||
|
|
@ -264,11 +296,7 @@
|
||||||
apiKey: '0b17a761b6b7174b789f639119d7e29a',
|
apiKey: '0b17a761b6b7174b789f639119d7e29a',
|
||||||
onWillStatusChange: function (oldStatus, newStatus) {},
|
onWillStatusChange: function (oldStatus, newStatus) {},
|
||||||
onTextChange: function (text) {
|
onTextChange: function (text) {
|
||||||
// 监听识别结果的变化
|
// 2秒钟内没有说话,就自动关闭
|
||||||
voiceTxt.innerText = text;
|
|
||||||
marquee("marquee", "voice-txt");
|
|
||||||
// 3秒钟内没有说话,就自动关闭
|
|
||||||
|
|
||||||
// 如果已有定时器在运行,则清除它
|
// 如果已有定时器在运行,则清除它
|
||||||
if (gaptime) {
|
if (gaptime) {
|
||||||
clearInterval(gaptime);
|
clearInterval(gaptime);
|
||||||
|
|
@ -279,27 +307,30 @@
|
||||||
|
|
||||||
gaptime = setInterval(() => {
|
gaptime = setInterval(() => {
|
||||||
seconds--;
|
seconds--;
|
||||||
if (voiceTxt.innerText) {
|
if (text) {
|
||||||
clearInterval(gaptime);
|
clearInterval(gaptime);
|
||||||
gaptime = null;
|
gaptime = null;
|
||||||
seconds = 10;
|
seconds = 10;
|
||||||
|
|
||||||
// 3秒钟内没有说话,就自动关闭
|
// 2秒钟内没有说话,就自动关闭
|
||||||
if (text) {
|
if (text) {
|
||||||
if (!isCallbackExecuted) {
|
if (!isCallbackExecuted) {
|
||||||
clearTimeout(times);
|
clearTimeout(times);
|
||||||
times = setTimeout(() => {
|
times = setTimeout(() => {
|
||||||
|
// 监听识别结果的变化
|
||||||
|
voiceTxt.innerText = text;
|
||||||
|
marquee("marquee", "voice-txt");
|
||||||
statusTxt.value = '正在听…';
|
statusTxt.value = '正在听…';
|
||||||
|
|
||||||
const params = { msg: text };
|
const params = { msg: text };
|
||||||
|
console.log(JSON.stringify(params))
|
||||||
// 判断关键字是否存在
|
// 判断关键字是否存在
|
||||||
const result = parseHealthQuery(params.msg);
|
const result = parseHealthQuery(params.msg);
|
||||||
isCallbackExecuted = true;
|
isCallbackExecuted = true;
|
||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
DetailDay(result.dataKey, result.date).then(res => {
|
DetailDay(result.dataKey, result.date).then(res => {
|
||||||
let TargetData = res.data.data;
|
let TargetData = res.data.data;
|
||||||
|
|
||||||
if (result.dataKey == 'ECGData') {
|
if (result.dataKey == 'ECGData') {
|
||||||
TargetData.map(item => {
|
TargetData.map(item => {
|
||||||
|
|
@ -307,13 +338,14 @@
|
||||||
delete item.data_msg.list;
|
delete item.data_msg.list;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result.dataKey == 'bloodLiquid') {
|
if (result.dataKey == 'bloodLiquid') {
|
||||||
TargetData.map(item => {
|
TargetData.map(item => {
|
||||||
item.data_msg.cholesterol = item.data_msg.cholesterol/100;
|
item.data_msg.cholesterol = (item.data_msg.cholesterol/100).toFixed(2);
|
||||||
item.data_msg.highDensity = item.data_msg.highDensity/100;
|
item.data_msg.highDensity = (item.data_msg.highDensity/100).toFixed(2);
|
||||||
item.data_msg.triacylglycerol = item.data_msg.triacylglycerol/100;
|
item.data_msg.triacylglycerol = (item.data_msg.triacylglycerol/100).toFixed(2);
|
||||||
item.data_msg.uricAcidVal = item.data_msg.uricAcidVal/10000;
|
item.data_msg.uricAcidVal = (item.data_msg.uricAcidVal/10000).toFixed(2);
|
||||||
item.data_msg.lowDensity = item.data_msg.lowDensity/100;
|
item.data_msg.lowDensity = (item.data_msg.lowDensity/100).toFixed(2);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -321,7 +353,6 @@
|
||||||
|
|
||||||
console.log(Question, '问题=========================问题');
|
console.log(Question, '问题=========================问题');
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 调用接口 传递关键信息 文字转语音
|
* 调用接口 传递关键信息 文字转语音
|
||||||
*/
|
*/
|
||||||
|
|
@ -462,7 +493,7 @@
|
||||||
isCallbackExecuted = true;
|
isCallbackExecuted = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}, 3000);
|
}, 2000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (seconds == 0){
|
} else if (seconds == 0){
|
||||||
|
|
@ -616,7 +647,7 @@
|
||||||
startRec.style.display = "none";
|
startRec.style.display = "none";
|
||||||
endRec.style.display = "block";
|
endRec.style.display = "block";
|
||||||
stopRec.style.display = "block";
|
stopRec.style.display = "block";
|
||||||
|
voiceTxt.innerText = '';
|
||||||
NextPlayVideo(response, filterString(Subtitles, ['*', ' ']));
|
NextPlayVideo(response, filterString(Subtitles, ['*', ' ']));
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
hideModal();
|
hideModal();
|
||||||
|
|
@ -626,6 +657,7 @@
|
||||||
|
|
||||||
// 字幕播放视频等操作
|
// 字幕播放视频等操作
|
||||||
async function NextPlayVideo(response, str) {
|
async function NextPlayVideo(response, str) {
|
||||||
|
console.log(str, '233333333333')
|
||||||
const content_bytes = await response.arrayBuffer();
|
const content_bytes = await response.arrayBuffer();
|
||||||
const blob = new Blob([content_bytes], { type: 'audio/mp3' });
|
const blob = new Blob([content_bytes], { type: 'audio/mp3' });
|
||||||
const blobUrl = URL.createObjectURL(blob);
|
const blobUrl = URL.createObjectURL(blob);
|
||||||
|
|
@ -679,15 +711,15 @@
|
||||||
demoData = {
|
demoData = {
|
||||||
bloodGlucose: "血糖",
|
bloodGlucose: "血糖",
|
||||||
SleepDatas: "睡眠",
|
SleepDatas: "睡眠",
|
||||||
bloodOxygen: "血氧",
|
bloodOxygen: ['血氧', '血氧饱和度'],
|
||||||
bloodPressure: '血压',
|
bloodPressure: '血压',
|
||||||
meiTuo: '梅脱',
|
meiTuo: '梅脱',
|
||||||
pulseReat: '心率',
|
pulseReat: '心率',
|
||||||
bodyTemperature: '体温',
|
bodyTemperature: '体温',
|
||||||
ECGData: '心电图',
|
ECGData: '心电图',
|
||||||
bloodLiquid: ['血脂', '血液', '尿酸'],
|
bloodLiquid: ['血脂', '血液', '尿酸', '胆固醇', '甘油三脂', '高密度脂蛋白', '低密度脂蛋白'],
|
||||||
bodyData: '身体成分',
|
bodyData: '身体成分',
|
||||||
stepIndex: ['运动', '步数']
|
stepIndex: ['运动', '步数']
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -716,7 +748,7 @@
|
||||||
|
|
||||||
// 在查询逻辑中使用这个辅助函数
|
// 在查询逻辑中使用这个辅助函数
|
||||||
for (let key in demoData) {
|
for (let key in demoData) {
|
||||||
if (typeof demoData[key] === 'object' && key === 'bloodLiquid' || typeof demoData[key] === 'object' && key === 'stepIndex' ) {
|
if (typeof demoData[key] === 'object' && key === 'bloodLiquid' || typeof demoData[key] === 'object' && key === 'stepIndex' || typeof demoData[key] === 'object' && key === 'bloodOxygen' ) {
|
||||||
if (isBloodLiquidMatch(demoData[key], query)) {
|
if (isBloodLiquidMatch(demoData[key], query)) {
|
||||||
key === 'stepIndex'? key = 'step_split' : ''; // 修改步数参数
|
key === 'stepIndex'? key = 'step_split' : ''; // 修改步数参数
|
||||||
return {
|
return {
|
||||||
|
|
@ -768,6 +800,30 @@
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#shadow {
|
||||||
|
position: fixed;
|
||||||
|
z-index: 99999;
|
||||||
|
width: 100%;
|
||||||
|
height: 100vh;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
background-color: #06193a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#shadow-text {
|
||||||
|
width: 100%;
|
||||||
|
height: 100vh;
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 100vh;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
margin: 0 auto;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
#myVideo {
|
#myVideo {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100% !important;
|
height: 100% !important;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
forceInstall
|
||||||
Binary file not shown.
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
var isReady=false;var onReadyCallbacks=[];
|
var isReady=false;var onReadyCallbacks=[];
|
||||||
var isServiceReady=false;var onServiceReadyCallbacks=[];
|
var isServiceReady=false;var onServiceReadyCallbacks=[];
|
||||||
var __uniConfig = {"pages":["pages/index/index","pages/login/login","pages/index/detail","pages/login/forget","pages/login/register","pages/device/device","pages/my/my","pages/login/explain","pages/index/echarts","pages/only_test/only_test","pages/only_test/ot1","pages/only_test/ot2","pages/only_test/ot3","pages/only_test/ot5"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"中鼎云医","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8","navigationStyle":"custom","pageOrientation":"portrait"},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"中鼎云医","compilerVersion":"4.15","entryPagePath":"pages/index/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
|
var __uniConfig = {"pages":["pages/index/index","pages/login/login","pages/index/detail","pages/login/forget","pages/login/register","pages/device/device","pages/my/my","pages/login/explain","pages/index/echarts","pages/only_test/only_test","pages/only_test/ot1","pages/only_test/ot2","pages/only_test/ot3","pages/only_test/ot5"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"中鼎云医","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8","navigationStyle":"custom"},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"中鼎云医","compilerVersion":"4.15","entryPagePath":"pages/index/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
|
||||||
var __uniRoutes = [{"path":"/pages/index/index","meta":{"isQuit":true},"window":{}},{"path":"/pages/login/login","meta":{},"window":{}},{"path":"/pages/index/detail","meta":{},"window":{}},{"path":"/pages/login/forget","meta":{},"window":{}},{"path":"/pages/login/register","meta":{},"window":{}},{"path":"/pages/device/device","meta":{},"window":{}},{"path":"/pages/my/my","meta":{},"window":{}},{"path":"/pages/login/explain","meta":{},"window":{}},{"path":"/pages/index/echarts","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/only_test","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/ot1","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/ot2","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/ot3","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/ot5","meta":{},"window":{"navigationBarTitleText":""}}];
|
var __uniRoutes = [{"path":"/pages/index/index","meta":{"isQuit":true},"window":{}},{"path":"/pages/login/login","meta":{},"window":{}},{"path":"/pages/index/detail","meta":{},"window":{}},{"path":"/pages/login/forget","meta":{},"window":{}},{"path":"/pages/login/register","meta":{},"window":{}},{"path":"/pages/device/device","meta":{},"window":{}},{"path":"/pages/my/my","meta":{},"window":{}},{"path":"/pages/login/explain","meta":{},"window":{}},{"path":"/pages/index/echarts","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/only_test","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/ot1","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/ot2","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/ot3","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/ot5","meta":{},"window":{"navigationBarTitleText":""}}];
|
||||||
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||||
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -27,6 +27,9 @@
|
||||||
|
|
||||||
<!-- 视频 -->
|
<!-- 视频 -->
|
||||||
<div class="video-wrap">
|
<div class="video-wrap">
|
||||||
|
<div id="shadow">
|
||||||
|
<div id="shadow-text">模型正在启动……</div>
|
||||||
|
</div>
|
||||||
<video id="myVideo" muted loop autoplay playsinline>
|
<video id="myVideo" muted loop autoplay playsinline>
|
||||||
<source src="https://img.agrimedia.cn/bmsc/%E9%A3%9E%E4%B9%A620240918-175041.mp4" type="video/mp4">
|
<source src="https://img.agrimedia.cn/bmsc/%E9%A3%9E%E4%B9%A620240918-175041.mp4" type="video/mp4">
|
||||||
</video>
|
</video>
|
||||||
|
|
@ -124,7 +127,7 @@
|
||||||
dataLines.push(line.trim());
|
dataLines.push(line.trim());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const dataJson = dataLines.join('');
|
const dataJson = dataLines.join('');
|
||||||
try {
|
try {
|
||||||
if (dataJson) {
|
if (dataJson) {
|
||||||
|
|
@ -151,8 +154,37 @@
|
||||||
var endTime = 10; // 结束时间(以秒为单位)
|
var endTime = 10; // 结束时间(以秒为单位)
|
||||||
var timeUpdateListener; // 保存timeupdate事件的监听器
|
var timeUpdateListener; // 保存timeupdate事件的监听器
|
||||||
|
|
||||||
|
var onLine = 'false';
|
||||||
|
|
||||||
|
// 在线离线
|
||||||
|
function checkNetworkStatus() {
|
||||||
|
if (navigator.onLine) {
|
||||||
|
onLine = true;
|
||||||
|
console.log('在线');
|
||||||
|
} else {
|
||||||
|
onLine = false;
|
||||||
|
console.log('离线');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 初始检查网络状态
|
||||||
|
checkNetworkStatus();
|
||||||
|
|
||||||
|
// 遮罩视频
|
||||||
|
var shadowDom = document.getElementById('shadow');
|
||||||
|
var shadowText = document.getElementById('shadow-text');
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
if (onLine) {
|
||||||
|
shadowDom.style.display = 'none';
|
||||||
|
} else {
|
||||||
|
shadowText.innerHTML = '环境异常,请检查网络'
|
||||||
|
}
|
||||||
|
}, 500);
|
||||||
|
|
||||||
|
|
||||||
// 指定段落
|
// 指定段落
|
||||||
function playVideoSegment(startTime, endTime) {
|
function playVideoSegment(startTime, endTime) {
|
||||||
videoElement.currentTime = startTime;
|
videoElement.currentTime = startTime;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
videoElement.play();
|
videoElement.play();
|
||||||
|
|
@ -264,42 +296,44 @@
|
||||||
apiKey: '0b17a761b6b7174b789f639119d7e29a',
|
apiKey: '0b17a761b6b7174b789f639119d7e29a',
|
||||||
onWillStatusChange: function (oldStatus, newStatus) {},
|
onWillStatusChange: function (oldStatus, newStatus) {},
|
||||||
onTextChange: function (text) {
|
onTextChange: function (text) {
|
||||||
// 监听识别结果的变化
|
// 2秒钟内没有说话,就自动关闭
|
||||||
voiceTxt.innerText = text;
|
|
||||||
marquee("marquee", "voice-txt");
|
|
||||||
// 3秒钟内没有说话,就自动关闭
|
|
||||||
|
|
||||||
// 如果已有定时器在运行,则清除它
|
// 如果已有定时器在运行,则清除它
|
||||||
if (gaptime) {
|
if (gaptime) {
|
||||||
clearInterval(gaptime);
|
clearInterval(gaptime);
|
||||||
gaptime = null;
|
gaptime = null;
|
||||||
};
|
};
|
||||||
// 重置倒计时
|
// 重置倒计时
|
||||||
seconds = 10;
|
seconds = 5;
|
||||||
|
|
||||||
gaptime = setInterval(() => {
|
gaptime = setInterval(() => {
|
||||||
seconds--;
|
seconds--;
|
||||||
if (voiceTxt.innerText) {
|
if (text) {
|
||||||
clearInterval(gaptime);
|
clearInterval(gaptime);
|
||||||
gaptime = null;
|
gaptime = null;
|
||||||
seconds = 10;
|
seconds = 5;
|
||||||
|
|
||||||
// 3秒钟内没有说话,就自动关闭
|
// 2秒钟内没有说话,就自动关闭
|
||||||
if (text) {
|
if (text) {
|
||||||
if (!isCallbackExecuted) {
|
if (!isCallbackExecuted) {
|
||||||
clearTimeout(times);
|
clearTimeout(times);
|
||||||
times = setTimeout(() => {
|
times = setTimeout(() => {
|
||||||
|
// 监听识别结果的变化
|
||||||
|
voiceTxt.innerText = text;
|
||||||
|
marquee("marquee", "voice-txt");
|
||||||
statusTxt.value = '正在听…';
|
statusTxt.value = '正在听…';
|
||||||
|
|
||||||
const params = { msg: text };
|
console.log(new Date().getTime(), '收到文字')
|
||||||
|
|
||||||
|
const params = { msg: text };
|
||||||
|
|
||||||
// 判断关键字是否存在
|
// 判断关键字是否存在
|
||||||
const result = parseHealthQuery(params.msg);
|
const result = parseHealthQuery(params.msg);
|
||||||
isCallbackExecuted = true;
|
isCallbackExecuted = true;
|
||||||
|
console.log(new Date().getTime(), 1)
|
||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
DetailDay(result.dataKey, result.date).then(res => {
|
DetailDay(result.dataKey, result.date).then(res => {
|
||||||
let TargetData = res.data.data;
|
let TargetData = res.data.data;
|
||||||
|
|
||||||
if (result.dataKey == 'ECGData') {
|
if (result.dataKey == 'ECGData') {
|
||||||
TargetData.map(item => {
|
TargetData.map(item => {
|
||||||
|
|
@ -307,13 +341,14 @@
|
||||||
delete item.data_msg.list;
|
delete item.data_msg.list;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result.dataKey == 'bloodLiquid') {
|
if (result.dataKey == 'bloodLiquid') {
|
||||||
TargetData.map(item => {
|
TargetData.map(item => {
|
||||||
item.data_msg.cholesterol = item.data_msg.cholesterol/100;
|
item.data_msg.cholesterol = (item.data_msg.cholesterol/100).toFixed(2);
|
||||||
item.data_msg.highDensity = item.data_msg.highDensity/100;
|
item.data_msg.highDensity = (item.data_msg.highDensity/100).toFixed(2);
|
||||||
item.data_msg.triacylglycerol = item.data_msg.triacylglycerol/100;
|
item.data_msg.triacylglycerol = (item.data_msg.triacylglycerol/100).toFixed(2);
|
||||||
item.data_msg.uricAcidVal = item.data_msg.uricAcidVal/10000;
|
item.data_msg.uricAcidVal = (item.data_msg.uricAcidVal/10000).toFixed(2);
|
||||||
item.data_msg.lowDensity = item.data_msg.lowDensity/100;
|
item.data_msg.lowDensity = (item.data_msg.lowDensity/100).toFixed(2);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -321,7 +356,6 @@
|
||||||
|
|
||||||
console.log(Question, '问题=========================问题');
|
console.log(Question, '问题=========================问题');
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 调用接口 传递关键信息 文字转语音
|
* 调用接口 传递关键信息 文字转语音
|
||||||
*/
|
*/
|
||||||
|
|
@ -462,7 +496,7 @@
|
||||||
isCallbackExecuted = true;
|
isCallbackExecuted = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}, 3000);
|
}, 2000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (seconds == 0){
|
} else if (seconds == 0){
|
||||||
|
|
@ -616,7 +650,7 @@
|
||||||
startRec.style.display = "none";
|
startRec.style.display = "none";
|
||||||
endRec.style.display = "block";
|
endRec.style.display = "block";
|
||||||
stopRec.style.display = "block";
|
stopRec.style.display = "block";
|
||||||
|
voiceTxt.innerText = '';
|
||||||
NextPlayVideo(response, filterString(Subtitles, ['*', ' ']));
|
NextPlayVideo(response, filterString(Subtitles, ['*', ' ']));
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
hideModal();
|
hideModal();
|
||||||
|
|
@ -642,6 +676,8 @@
|
||||||
// 播放音频
|
// 播放音频
|
||||||
audioElement.play();
|
audioElement.play();
|
||||||
|
|
||||||
|
console.log(new Date().getTime(), '播放音频')
|
||||||
|
|
||||||
// 循环视频
|
// 循环视频
|
||||||
replayVideoSegment(60, 120);
|
replayVideoSegment(60, 120);
|
||||||
|
|
||||||
|
|
@ -679,15 +715,15 @@
|
||||||
demoData = {
|
demoData = {
|
||||||
bloodGlucose: "血糖",
|
bloodGlucose: "血糖",
|
||||||
SleepDatas: "睡眠",
|
SleepDatas: "睡眠",
|
||||||
bloodOxygen: "血氧",
|
bloodOxygen: ['血氧', '血氧饱和度'],
|
||||||
bloodPressure: '血压',
|
bloodPressure: '血压',
|
||||||
meiTuo: '梅脱',
|
meiTuo: '梅脱',
|
||||||
pulseReat: '心率',
|
pulseReat: '心率',
|
||||||
bodyTemperature: '体温',
|
bodyTemperature: '体温',
|
||||||
ECGData: '心电图',
|
ECGData: '心电图',
|
||||||
bloodLiquid: ['血脂', '血液', '尿酸'],
|
bloodLiquid: ['血脂', '血液', '尿酸', '胆固醇', '甘油三脂', '高密度脂蛋白', '低密度脂蛋白'],
|
||||||
bodyData: '身体成分',
|
bodyData: '身体成分',
|
||||||
stepIndex: ['运动', '步数']
|
stepIndex: ['运动', '步数']
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -716,7 +752,7 @@
|
||||||
|
|
||||||
// 在查询逻辑中使用这个辅助函数
|
// 在查询逻辑中使用这个辅助函数
|
||||||
for (let key in demoData) {
|
for (let key in demoData) {
|
||||||
if (typeof demoData[key] === 'object' && key === 'bloodLiquid' || typeof demoData[key] === 'object' && key === 'stepIndex' ) {
|
if (typeof demoData[key] === 'object' && key === 'bloodLiquid' || typeof demoData[key] === 'object' && key === 'stepIndex' || typeof demoData[key] === 'object' && key === 'bloodOxygen' ) {
|
||||||
if (isBloodLiquidMatch(demoData[key], query)) {
|
if (isBloodLiquidMatch(demoData[key], query)) {
|
||||||
key === 'stepIndex'? key = 'step_split' : ''; // 修改步数参数
|
key === 'stepIndex'? key = 'step_split' : ''; // 修改步数参数
|
||||||
return {
|
return {
|
||||||
|
|
@ -768,6 +804,30 @@
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#shadow {
|
||||||
|
position: fixed;
|
||||||
|
z-index: 99999;
|
||||||
|
width: 100%;
|
||||||
|
height: 100vh;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
background-color: #06193a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#shadow-text {
|
||||||
|
width: 100%;
|
||||||
|
height: 100vh;
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 100vh;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
margin: 0 auto;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
#myVideo {
|
#myVideo {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100% !important;
|
height: 100% !important;
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__24DA8DD","name":"中鼎云医","version":{"name":"1.2.5","code":125},"description":"中鼎云医","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"VideoPlayer":{},"Record":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"render":"always","id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#F8F8F8"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"screenOrientation":"landscape-primary","icons":{"android":{"hdpi":"unpackage/res/icons/72x72.png","xhdpi":"unpackage/res/icons/96x96.png","xxhdpi":"unpackage/res/icons/144x144.png","xxxhdpi":"unpackage/res/icons/192x192.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"}}},"google":{"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>","<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>"]},"apple":{"dSYMs":false},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"uniStatistics":{"enable":false},"allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"4.15","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"launch_path":"__uniappview.html"},"screenOrientation":["portrait-primary","portrait-secondary"]}
|
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__24DA8DD","name":"中鼎云医","version":{"name":"1.2.5","code":125},"description":"中鼎云医","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"VideoPlayer":{},"Record":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"render":"always","id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#F8F8F8"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"icons":{"android":{"hdpi":"unpackage/res/icons/72x72.png","xhdpi":"unpackage/res/icons/96x96.png","xxhdpi":"unpackage/res/icons/144x144.png","xxxhdpi":"unpackage/res/icons/192x192.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"}}},"google":{"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>","<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>"]},"apple":{"dSYMs":false},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"uniStatistics":{"enable":false},"allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"4.15","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"launch_path":"__uniappview.html"}}
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
var isReady=false;var onReadyCallbacks=[];
|
var isReady=false;var onReadyCallbacks=[];
|
||||||
var isServiceReady=false;var onServiceReadyCallbacks=[];
|
var isServiceReady=false;var onServiceReadyCallbacks=[];
|
||||||
var __uniConfig = {"pages":["pages/index/index","pages/login/login","pages/index/detail","pages/login/forget","pages/login/register","pages/device/device","pages/my/my","pages/login/explain","pages/index/echarts","pages/only_test/only_test","pages/only_test/ot1","pages/only_test/ot2","pages/only_test/ot3","pages/only_test/ot5"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"中鼎云医","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8","navigationStyle":"custom","pageOrientation":"portrait"},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"中鼎云医","compilerVersion":"4.15","entryPagePath":"pages/index/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
|
var __uniConfig = {"pages":["pages/index/blank","pages/index/index","pages/login/login","pages/index/detail","pages/login/forget","pages/login/register","pages/device/device","pages/my/my","pages/login/explain","pages/index/echarts","pages/only_test/only_test","pages/only_test/ot1","pages/only_test/ot2","pages/only_test/ot3","pages/only_test/ot5","pages/index/indexs/indexs"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"中鼎云医","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8","navigationStyle":"custom"},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"中鼎云医","compilerVersion":"4.15","entryPagePath":"pages/index/blank","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
|
||||||
var __uniRoutes = [{"path":"/pages/index/index","meta":{"isQuit":true},"window":{}},{"path":"/pages/login/login","meta":{},"window":{}},{"path":"/pages/index/detail","meta":{},"window":{}},{"path":"/pages/login/forget","meta":{},"window":{}},{"path":"/pages/login/register","meta":{},"window":{}},{"path":"/pages/device/device","meta":{},"window":{}},{"path":"/pages/my/my","meta":{},"window":{}},{"path":"/pages/login/explain","meta":{},"window":{}},{"path":"/pages/index/echarts","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/only_test","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/ot1","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/ot2","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/ot3","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/ot5","meta":{},"window":{"navigationBarTitleText":""}}];
|
var __uniRoutes = [{"path":"/pages/index/blank","meta":{"isQuit":true},"window":{}},{"path":"/pages/index/index","meta":{},"window":{}},{"path":"/pages/login/login","meta":{},"window":{}},{"path":"/pages/index/detail","meta":{},"window":{}},{"path":"/pages/login/forget","meta":{},"window":{}},{"path":"/pages/login/register","meta":{},"window":{}},{"path":"/pages/device/device","meta":{},"window":{}},{"path":"/pages/my/my","meta":{},"window":{}},{"path":"/pages/login/explain","meta":{},"window":{}},{"path":"/pages/index/echarts","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/only_test","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/ot1","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/ot2","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/ot3","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/only_test/ot5","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/index/indexs/indexs","meta":{},"window":{"navigationBarTitleText":""}}];
|
||||||
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||||
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||||
service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}});
|
service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}});
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -27,6 +27,9 @@
|
||||||
|
|
||||||
<!-- 视频 -->
|
<!-- 视频 -->
|
||||||
<div class="video-wrap">
|
<div class="video-wrap">
|
||||||
|
<div id="shadow">
|
||||||
|
<div id="shadow-text">模型正在启动……</div>
|
||||||
|
</div>
|
||||||
<video id="myVideo" muted loop autoplay playsinline>
|
<video id="myVideo" muted loop autoplay playsinline>
|
||||||
<source src="https://img.agrimedia.cn/bmsc/%E9%A3%9E%E4%B9%A620240918-175041.mp4" type="video/mp4">
|
<source src="https://img.agrimedia.cn/bmsc/%E9%A3%9E%E4%B9%A620240918-175041.mp4" type="video/mp4">
|
||||||
</video>
|
</video>
|
||||||
|
|
@ -124,7 +127,7 @@
|
||||||
dataLines.push(line.trim());
|
dataLines.push(line.trim());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const dataJson = dataLines.join('');
|
const dataJson = dataLines.join('');
|
||||||
try {
|
try {
|
||||||
if (dataJson) {
|
if (dataJson) {
|
||||||
|
|
@ -151,8 +154,37 @@
|
||||||
var endTime = 10; // 结束时间(以秒为单位)
|
var endTime = 10; // 结束时间(以秒为单位)
|
||||||
var timeUpdateListener; // 保存timeupdate事件的监听器
|
var timeUpdateListener; // 保存timeupdate事件的监听器
|
||||||
|
|
||||||
|
var onLine = 'false';
|
||||||
|
|
||||||
|
// 在线离线
|
||||||
|
function checkNetworkStatus() {
|
||||||
|
if (navigator.onLine) {
|
||||||
|
onLine = true;
|
||||||
|
console.log('在线');
|
||||||
|
} else {
|
||||||
|
onLine = false;
|
||||||
|
console.log('离线');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 初始检查网络状态
|
||||||
|
checkNetworkStatus();
|
||||||
|
|
||||||
|
// 遮罩视频
|
||||||
|
var shadowDom = document.getElementById('shadow');
|
||||||
|
var shadowText = document.getElementById('shadow-text');
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
if (onLine) {
|
||||||
|
shadowDom.style.display = 'none';
|
||||||
|
} else {
|
||||||
|
shadowText.innerHTML = '环境异常,请检查网络'
|
||||||
|
}
|
||||||
|
}, 500);
|
||||||
|
|
||||||
|
|
||||||
// 指定段落
|
// 指定段落
|
||||||
function playVideoSegment(startTime, endTime) {
|
function playVideoSegment(startTime, endTime) {
|
||||||
videoElement.currentTime = startTime;
|
videoElement.currentTime = startTime;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
videoElement.play();
|
videoElement.play();
|
||||||
|
|
@ -264,42 +296,44 @@
|
||||||
apiKey: '0b17a761b6b7174b789f639119d7e29a',
|
apiKey: '0b17a761b6b7174b789f639119d7e29a',
|
||||||
onWillStatusChange: function (oldStatus, newStatus) {},
|
onWillStatusChange: function (oldStatus, newStatus) {},
|
||||||
onTextChange: function (text) {
|
onTextChange: function (text) {
|
||||||
// 监听识别结果的变化
|
// 2秒钟内没有说话,就自动关闭
|
||||||
voiceTxt.innerText = text;
|
|
||||||
marquee("marquee", "voice-txt");
|
|
||||||
// 3秒钟内没有说话,就自动关闭
|
|
||||||
|
|
||||||
// 如果已有定时器在运行,则清除它
|
// 如果已有定时器在运行,则清除它
|
||||||
if (gaptime) {
|
if (gaptime) {
|
||||||
clearInterval(gaptime);
|
clearInterval(gaptime);
|
||||||
gaptime = null;
|
gaptime = null;
|
||||||
};
|
};
|
||||||
// 重置倒计时
|
// 重置倒计时
|
||||||
seconds = 10;
|
seconds = 5;
|
||||||
|
|
||||||
gaptime = setInterval(() => {
|
gaptime = setInterval(() => {
|
||||||
seconds--;
|
seconds--;
|
||||||
if (voiceTxt.innerText) {
|
if (text) {
|
||||||
clearInterval(gaptime);
|
clearInterval(gaptime);
|
||||||
gaptime = null;
|
gaptime = null;
|
||||||
seconds = 10;
|
seconds = 5;
|
||||||
|
|
||||||
// 3秒钟内没有说话,就自动关闭
|
// 2秒钟内没有说话,就自动关闭
|
||||||
if (text) {
|
if (text) {
|
||||||
if (!isCallbackExecuted) {
|
if (!isCallbackExecuted) {
|
||||||
clearTimeout(times);
|
clearTimeout(times);
|
||||||
times = setTimeout(() => {
|
times = setTimeout(() => {
|
||||||
|
// 监听识别结果的变化
|
||||||
|
voiceTxt.innerText = text;
|
||||||
|
marquee("marquee", "voice-txt");
|
||||||
statusTxt.value = '正在听…';
|
statusTxt.value = '正在听…';
|
||||||
|
|
||||||
const params = { msg: text };
|
console.log(new Date().getTime(), '收到文字')
|
||||||
|
|
||||||
|
const params = { msg: text };
|
||||||
|
|
||||||
// 判断关键字是否存在
|
// 判断关键字是否存在
|
||||||
const result = parseHealthQuery(params.msg);
|
const result = parseHealthQuery(params.msg);
|
||||||
isCallbackExecuted = true;
|
isCallbackExecuted = true;
|
||||||
|
console.log(new Date().getTime(), 1)
|
||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
DetailDay(result.dataKey, result.date).then(res => {
|
DetailDay(result.dataKey, result.date).then(res => {
|
||||||
let TargetData = res.data.data;
|
let TargetData = res.data.data;
|
||||||
|
|
||||||
if (result.dataKey == 'ECGData') {
|
if (result.dataKey == 'ECGData') {
|
||||||
TargetData.map(item => {
|
TargetData.map(item => {
|
||||||
|
|
@ -307,13 +341,14 @@
|
||||||
delete item.data_msg.list;
|
delete item.data_msg.list;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result.dataKey == 'bloodLiquid') {
|
if (result.dataKey == 'bloodLiquid') {
|
||||||
TargetData.map(item => {
|
TargetData.map(item => {
|
||||||
item.data_msg.cholesterol = item.data_msg.cholesterol/100;
|
item.data_msg.cholesterol = (item.data_msg.cholesterol/100).toFixed(2);
|
||||||
item.data_msg.highDensity = item.data_msg.highDensity/100;
|
item.data_msg.highDensity = (item.data_msg.highDensity/100).toFixed(2);
|
||||||
item.data_msg.triacylglycerol = item.data_msg.triacylglycerol/100;
|
item.data_msg.triacylglycerol = (item.data_msg.triacylglycerol/100).toFixed(2);
|
||||||
item.data_msg.uricAcidVal = item.data_msg.uricAcidVal/10000;
|
item.data_msg.uricAcidVal = (item.data_msg.uricAcidVal/10000).toFixed(2);
|
||||||
item.data_msg.lowDensity = item.data_msg.lowDensity/100;
|
item.data_msg.lowDensity = (item.data_msg.lowDensity/100).toFixed(2);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -321,7 +356,6 @@
|
||||||
|
|
||||||
console.log(Question, '问题=========================问题');
|
console.log(Question, '问题=========================问题');
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 调用接口 传递关键信息 文字转语音
|
* 调用接口 传递关键信息 文字转语音
|
||||||
*/
|
*/
|
||||||
|
|
@ -462,7 +496,7 @@
|
||||||
isCallbackExecuted = true;
|
isCallbackExecuted = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}, 3000);
|
}, 2000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (seconds == 0){
|
} else if (seconds == 0){
|
||||||
|
|
@ -616,7 +650,7 @@
|
||||||
startRec.style.display = "none";
|
startRec.style.display = "none";
|
||||||
endRec.style.display = "block";
|
endRec.style.display = "block";
|
||||||
stopRec.style.display = "block";
|
stopRec.style.display = "block";
|
||||||
|
voiceTxt.innerText = '';
|
||||||
NextPlayVideo(response, filterString(Subtitles, ['*', ' ']));
|
NextPlayVideo(response, filterString(Subtitles, ['*', ' ']));
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
hideModal();
|
hideModal();
|
||||||
|
|
@ -642,6 +676,8 @@
|
||||||
// 播放音频
|
// 播放音频
|
||||||
audioElement.play();
|
audioElement.play();
|
||||||
|
|
||||||
|
console.log(new Date().getTime(), '播放音频')
|
||||||
|
|
||||||
// 循环视频
|
// 循环视频
|
||||||
replayVideoSegment(60, 120);
|
replayVideoSegment(60, 120);
|
||||||
|
|
||||||
|
|
@ -679,15 +715,15 @@
|
||||||
demoData = {
|
demoData = {
|
||||||
bloodGlucose: "血糖",
|
bloodGlucose: "血糖",
|
||||||
SleepDatas: "睡眠",
|
SleepDatas: "睡眠",
|
||||||
bloodOxygen: "血氧",
|
bloodOxygen: ['血氧', '血氧饱和度'],
|
||||||
bloodPressure: '血压',
|
bloodPressure: '血压',
|
||||||
meiTuo: '梅脱',
|
meiTuo: '梅脱',
|
||||||
pulseReat: '心率',
|
pulseReat: '心率',
|
||||||
bodyTemperature: '体温',
|
bodyTemperature: '体温',
|
||||||
ECGData: '心电图',
|
ECGData: '心电图',
|
||||||
bloodLiquid: ['血脂', '血液', '尿酸'],
|
bloodLiquid: ['血脂', '血液', '尿酸', '胆固醇', '甘油三脂', '高密度脂蛋白', '低密度脂蛋白'],
|
||||||
bodyData: '身体成分',
|
bodyData: '身体成分',
|
||||||
stepIndex: ['运动', '步数']
|
stepIndex: ['运动', '步数']
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -716,7 +752,7 @@
|
||||||
|
|
||||||
// 在查询逻辑中使用这个辅助函数
|
// 在查询逻辑中使用这个辅助函数
|
||||||
for (let key in demoData) {
|
for (let key in demoData) {
|
||||||
if (typeof demoData[key] === 'object' && key === 'bloodLiquid' || typeof demoData[key] === 'object' && key === 'stepIndex' ) {
|
if (typeof demoData[key] === 'object' && key === 'bloodLiquid' || typeof demoData[key] === 'object' && key === 'stepIndex' || typeof demoData[key] === 'object' && key === 'bloodOxygen' ) {
|
||||||
if (isBloodLiquidMatch(demoData[key], query)) {
|
if (isBloodLiquidMatch(demoData[key], query)) {
|
||||||
key === 'stepIndex'? key = 'step_split' : ''; // 修改步数参数
|
key === 'stepIndex'? key = 'step_split' : ''; // 修改步数参数
|
||||||
return {
|
return {
|
||||||
|
|
@ -768,6 +804,30 @@
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#shadow {
|
||||||
|
position: fixed;
|
||||||
|
z-index: 99999;
|
||||||
|
width: 100%;
|
||||||
|
height: 100vh;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
background-color: #06193a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#shadow-text {
|
||||||
|
width: 100%;
|
||||||
|
height: 100vh;
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 100vh;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
margin: 0 auto;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
#myVideo {
|
#myVideo {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100% !important;
|
height: 100% !important;
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__24DA8DD","name":"中鼎云医","version":{"name":"1.2.5","code":125},"description":"中鼎云医","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"VideoPlayer":{},"Record":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"render":"always","id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#F8F8F8"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"screenOrientation":"landscape-primary","icons":{"android":{"hdpi":"unpackage/res/icons/72x72.png","xhdpi":"unpackage/res/icons/96x96.png","xxhdpi":"unpackage/res/icons/144x144.png","xxxhdpi":"unpackage/res/icons/192x192.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"}}},"google":{"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>","<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>"]},"apple":{"dSYMs":false},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"uniStatistics":{"enable":false},"allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"4.15","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"launch_path":"__uniappview.html"},"screenOrientation":["portrait-primary","portrait-secondary"]}
|
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__24DA8DD","name":"中鼎云医","version":{"name":"1.2.5","code":125},"description":"中鼎云医","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"VideoPlayer":{},"Record":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"render":"always","id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#F8F8F8"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"icons":{"android":{"hdpi":"unpackage/res/icons/72x72.png","xhdpi":"unpackage/res/icons/96x96.png","xxhdpi":"unpackage/res/icons/144x144.png","xxxhdpi":"unpackage/res/icons/192x192.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"}}},"google":{"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>","<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>"]},"apple":{"dSYMs":false},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"uniStatistics":{"enable":false},"allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"4.15","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"launch_path":"__uniappview.html"}}
|
||||||
Binary file not shown.
Loading…
Reference in New Issue