blak-kong 2 years ago
commit 0fc7d07689

@ -0,0 +1,4 @@
export default definePageConfig({
navigationBarTitleText: 'FR200',
  enablePageMeta: true
})

@ -1,8 +1,20 @@
@import url(./WL200.less);
.music {
width: 54rpx;
height: 54rpx;
background: rgba(255, 255, 255, 0.6);
border-radius: 50%;
position: absolute;
right: 20rpx;
top: 20rpx;
image {
width: 100%;
height: 100%;
}
}
.fr200-iot-device {
width: 690rpx;
height: 150rpx;
height: 100rpx;
display: flex;
align-items: center;
justify-content: center;

@ -172,7 +172,7 @@ class IotCarePlanFR200 extends Component<any, any> {
isConnectionBlutoot: true, // 是否已连接蓝牙
isShowNurse: true, // 是否开始并显示护理 FR200默认已经开始准备护理
isStopNurse: false, // 是否暂停护理
isEndNurse: false, // 是否结束护理
// isEndNurse: false, // 是否结束护理
errorTips: "", // 错误提示
/** 护理过程 END*/
@ -184,7 +184,7 @@ class IotCarePlanFR200 extends Component<any, any> {
ModeList: [],
ModeType: "all", // all 1基础护理 2专区护理 3专研促渗 4敏期护理 5智能测肤
ActiveModeItem: {
modeType: "",
modeType: "face",
openSourceData: [],
}, // 当前选中模式
SwitchActiveModeItem: {
@ -233,7 +233,7 @@ class IotCarePlanFR200 extends Component<any, any> {
echartsData: "", //传给echarts图表的数据
series: [
{
data: [2, 3, 5, 3, 5, 6, 8, 5, 6, 4],
data: [],
type: "line",
smooth: true,
z: 1,
@ -241,10 +241,10 @@ class IotCarePlanFR200 extends Component<any, any> {
color: "red",
},
{
data: [2, 3, 5, 3, 5, 6, 8, 5, 6, 4],
data: [],
type: "line",
smooth: true,
symbolSize: 10,
symbolSize: 5,
lineStyle: {
color: "#ff8410",
width: 1,
@ -255,9 +255,9 @@ class IotCarePlanFR200 extends Component<any, any> {
},
{
name: "a",
data: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
type: "bar",
barWidth: 22,
barWidth: 12,
z: 2,
stack: "x",
visualMap: false,
@ -267,7 +267,7 @@ class IotCarePlanFR200 extends Component<any, any> {
},
{
name: "b",
data: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
type: "bar",
z: 2,
stack: "x",
@ -278,7 +278,7 @@ class IotCarePlanFR200 extends Component<any, any> {
},
{
name: "c",
data: [0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
type: "bar",
z: 2,
stack: "x",
@ -289,7 +289,7 @@ class IotCarePlanFR200 extends Component<any, any> {
},
{
name: "d",
data: [0, 0, 1, 0, 1, 1, 1, 1, 1, 1],
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
type: "bar",
z: 2,
stack: "x",
@ -300,7 +300,7 @@ class IotCarePlanFR200 extends Component<any, any> {
},
{
name: "e",
data: [0, 0, 1, 0, 1, 1, 1, 1, 1, 0],
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
type: "bar",
z: 2,
stack: "x",
@ -311,7 +311,7 @@ class IotCarePlanFR200 extends Component<any, any> {
},
{
name: "f",
data: [0, 0, 0, 0, 0, 1, 1, 0, 1, 0],
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
type: "bar",
z: 2,
stack: "x",
@ -322,7 +322,7 @@ class IotCarePlanFR200 extends Component<any, any> {
},
{
name: "h",
data: [0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
type: "bar",
z: 2,
stack: "x",
@ -333,7 +333,7 @@ class IotCarePlanFR200 extends Component<any, any> {
},
{
name: "i",
data: [0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
type: "bar",
z: 2,
stack: "x",
@ -343,6 +343,12 @@ class IotCarePlanFR200 extends Component<any, any> {
},
},
],
time: {
min: 0,
second: 0
},
timeArr: [],
videoVoiceStatus: false
};
}
bluetoothContainer: any = null;
@ -403,9 +409,9 @@ class IotCarePlanFR200 extends Component<any, any> {
this.getInstrumentClockSummary();
this.getInstrumentClockDetail();
}
componentDidMount() {}
componentDidMount() { }
componentWillUnmount() {}
componentWillUnmount() { }
componentDidShow() {
console.log("页面显示了");
@ -435,6 +441,24 @@ class IotCarePlanFR200 extends Component<any, any> {
title: obj.name,
});
let sendParams: any = {
// ...deviceCommandSamples.pause,
// workMode: 'moistureTest', // 使用模式
commandType: "DeviceStatusSync",
deviceSyncCommandType: 'onlySyncStatusToDevice',
totalWorkingSeconds: 0,
workStatus: "pause",
workMode: 'face',
};
sendParams.gear = 1;
let pauseArrayBuffer = deviceToolKitInstance.toBleCommand(
sendParams as any
);
sendCommand({
value: pauseArrayBuffer,
}).then((res) => console.log("同步为0=====》", res));
await this.GetModeList(obj?.id);
// 如果不存在设备模式值,则判断为首次进入,弹窗提示
@ -573,7 +597,7 @@ class IotCarePlanFR200 extends Component<any, any> {
* @name /
* */
modeCurrentFun = async (data, isNotCheck = false) => {
let { isShowNurse, activeModeID } = this.state;
let { isShowNurse, activeModeID, series } = this.state;
// 护理检查改变模式,是否提示切换护理模式
// isNotCheck为真时不进行校验直接切换
this.tempModeCurrent = data;
@ -603,6 +627,15 @@ class IotCarePlanFR200 extends Component<any, any> {
currentWorkModeType = 2;
}
series.map(item => {
if (item.type == 'line') {
item.data = []
} else {
item.data = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
}
})
this.setState({
ActiveModeItem: data,
activeModeID: data?.id,
@ -612,6 +645,7 @@ class IotCarePlanFR200 extends Component<any, any> {
MaskModeStepIndex: 0, // 面膜促渗步骤
ModeType: this.ModeTypeArray[data.modeClass],
currentWorkModeType,
series
});
// 切换模式时:重新设置视频地址
@ -860,36 +894,53 @@ class IotCarePlanFR200 extends Component<any, any> {
let textshow = this.state.textshow;
this.setState({ textshow: !textshow });
}
updata() {
let that = this;
let stop = 0;
let time = setInterval(function () {
stop++;
let series = JSON.parse(JSON.stringify(that.state.series));
let num = Math.floor(Math.random() * 9);
let count = 0;
series.map((item) => {
if (item.type === "line") {
updata(level = 1, min = 0, seconds = 0) {
if (seconds == 0 && min == 0) {
return
}
// let that = this;
// let stop = 0;
// let time = setInterval(function () {
// stop++;
let series = JSON.parse(JSON.stringify(this.state.series));
let num = level
let count = 0;
series.map((item) => {
if (item.type === "line") {
if (item.data.length >= 10) {
item.data.splice(0, 1);
item.data.push(num);
}
if (item.type === "bar") {
count++;
item.data.push(num);
}
if (item.type === "bar") {
count++;
if (seconds > 10) {
item.data.splice(0, 1);
if (count <= num) {
item.data.push(1);
} else {
item.data.push(0);
}
} else {
if (count <= num) {
item.data.splice(seconds - 1, 1, 1)
} else {
item.data.splice(seconds - 1, 1, 0)
}
}
});
// 更新图表数据
that.setState({ series });
if (stop >= 20) {
clearInterval(time);
}
}, 1000);
});
let time = JSON.parse(JSON.stringify(this.state.time));
time.min = min
time.second = seconds
// 更新图表数据
this.setState({ series });
this.setState({ time });
// if (stop >= 20) {
// clearInterval(time);
// }
// }, 1000);
}
full() {
@ -1040,6 +1091,7 @@ class IotCarePlanFR200 extends Component<any, any> {
// 更新界面倒计时
this.resetTimer();
if (
sceneTime > totalTime &&
this.isRuning &&
@ -1329,6 +1381,15 @@ class IotCarePlanFR200 extends Component<any, any> {
}
}
/**
*
*/
videoVoiceStatusChange() {
let { videoVoiceStatus } = this.state;
this.setState({ videoVoiceStatus: !videoVoiceStatus })
}
/** @name 精华促渗下一步,根据时间自动调用 */
essencePenetrationNext() {
let {
@ -1843,8 +1904,27 @@ class IotCarePlanFR200 extends Component<any, any> {
Taro.setStorageSync("FR200NursingHistory", params);
console.log("保存setFR200NursingHistory");
};
formatTime(min, sec) {
let mins
if (min < 10) {
mins = '0' + min;
} else {
mins = min;
}
let secs
if (sec < 10) {
secs = '0' + sec;
} else {
secs = sec;
}
return `${mins.toString()}:${secs.toString()}`;
}
/** 更新WL200护理历史运行时间 */
updateFR200NursingHistory = (data: any = null, jsonStatus: any = null) => {
console.log(11111111);
this.FR200NursingHistory = Taro.getStorageSync("FR200NursingHistory");
if (this.FR200NursingHistory) {
@ -1857,6 +1937,19 @@ class IotCarePlanFR200 extends Component<any, any> {
// 设置正确封面
if (!data) {
if (jsonStatus) {
let { timeArr } = this.state
let newTime = this.formatTime(jsonStatus.totalWorkingMinutes, jsonStatus.totalWorkingSeconds)
let flag = false
timeArr.map(item => {
if (newTime === item) {
flag = true
}
})
if (flag) {
return
}
timeArr.push(newTime)
this.setState({ timeArr })
// 缓存每秒数据
if (!params.dataArray) params.dataArray = [];
params.dataArray.push(jsonStatus);
@ -1864,8 +1957,17 @@ class IotCarePlanFR200 extends Component<any, any> {
params.workMode = jsonStatus?.workMode;
params.modeId = this.state.ActiveModeItem?.id;
params.modeName = this.state.ActiveModeItem.modeName;
let impedance = jsonStatus.impedance
let level = impedance - 200
if (level < 0) {
level = 1
} else {
level = Math.ceil(level / 80) + 1
}
console.log('min:', jsonStatus.totalWorkingMinutes, ' ', 'sec', jsonStatus.totalWorkingSeconds);
this.updata(level, jsonStatus.totalWorkingMinutes, jsonStatus.totalWorkingSeconds)
console.log(jsonStatus, 555555555555);
}
} else {
params.jsonStatus = jsonStatus;
@ -2180,11 +2282,11 @@ class IotCarePlanFR200 extends Component<any, any> {
let report = true;
go(
"/recoding/pages/face_report_one/face_report_one?id=" +
ids +
"&report=" +
report +
"&obj=" +
JSON.stringify(obj)
ids +
"&report=" +
report +
"&obj=" +
JSON.stringify(obj)
);
} else if ("moistureTest" === nursingData.workMode) {
console.log("水分测试");
@ -2195,11 +2297,11 @@ class IotCarePlanFR200 extends Component<any, any> {
go(
"/recoding/pages/face_report/face_report?id=" +
deviceid +
"&recordId=" +
currentDevice +
"&report=" +
report
deviceid +
"&recordId=" +
currentDevice +
"&report=" +
report
);
}
};
@ -2387,7 +2489,9 @@ class IotCarePlanFR200 extends Component<any, any> {
echartsData,
isShowReReadRecordConnect,
series,
time,
isFullScreen,
videoVoiceStatus
} = this.state;
return (
@ -2406,19 +2510,19 @@ class IotCarePlanFR200 extends Component<any, any> {
<PopupAlert
isShow={isModeLock}
zIndex={10020}
myClassName="level-up"
title="提示"
content="该模式即将上线,敬请期待"
confirmButtonText="我知道了"
textAlgin="center"
myClassName='level-up'
title='提示'
content='该模式即将上线,敬请期待'
confirmButtonText='我知道了'
textAlgin='center'
close={this.onModeLockClose}
confirm={this.onModeLockClose}
/>
<PopupInstrumentUploadTips
isShow={isFirstTipShow}
zIndex={10020}
myClassName="level-up"
title="打卡介绍"
myClassName='level-up'
title='打卡介绍'
data={nurseInfo}
close={this.onTipShowClose}
confirm={this.onTipShowClose}
@ -2430,11 +2534,11 @@ class IotCarePlanFR200 extends Component<any, any> {
isLarge
isClose
isShow={isEndCarePlan}
title="提示"
content="是否结束护理"
textAlgin="center"
cancelButtonText="取消"
confirmButtonText="确定"
title='提示'
content='是否结束护理'
textAlgin='center'
cancelButtonText='取消'
confirmButtonText='确定'
close={this.cancelEndBtn}
confirm={this.confirmEndBtn}
/>
@ -2442,7 +2546,7 @@ class IotCarePlanFR200 extends Component<any, any> {
isLarge
isClose
isShow={isSwitchActiveMode}
title="护理模式切换"
title='护理模式切换'
content={
<ModeListView
ModeID={ModeID}
@ -2456,9 +2560,9 @@ class IotCarePlanFR200 extends Component<any, any> {
onModeLockOpen={this.onModeLockOpen}
/>
}
textAlgin="center"
cancelButtonText="取消"
confirmButtonText="确定"
textAlgin='center'
cancelButtonText='取消'
confirmButtonText='确定'
close={this.cancelModeSwitchBtn}
confirm={this.confirmModeSwitchBtn}
/>
@ -2468,7 +2572,7 @@ class IotCarePlanFR200 extends Component<any, any> {
isShow={isShowStepTips}
isLarge
isFirstEntry={false}
confirmButtonText="知道了"
confirmButtonText='知道了'
data={ActiveModeItem.openSourceData}
close={this.closeStepTips}
/>
@ -2477,10 +2581,10 @@ class IotCarePlanFR200 extends Component<any, any> {
<PopupAlert
isShow={isNotEnoughTime}
isClose
title="提示"
content="您的本次护理时间不足,请重新护理"
confirmButtonText="确认"
textAlgin="center"
title='提示'
content='您的本次护理时间不足,请重新护理'
confirmButtonText='确认'
textAlgin='center'
close={this.closeNotEnoughTime}
confirm={this.closeNotEnoughTime}
/>
@ -2489,11 +2593,11 @@ class IotCarePlanFR200 extends Component<any, any> {
isShow={isShowErrorTipsText}
isClose
zIndex={10020}
myClassName="level-up"
title="提示"
myClassName='level-up'
title='提示'
content={errorTipsText}
confirmButtonText="知道了"
textAlgin="center"
confirmButtonText='知道了'
textAlgin='center'
close={this.closeErrorTipsText}
confirm={this.closeErrorTipsText}
/>
@ -2502,17 +2606,17 @@ class IotCarePlanFR200 extends Component<any, any> {
isShow={isShowTipsSave}
isClose
zIndex={10020}
myClassName="level-up"
title="提示"
myClassName='level-up'
title='提示'
content={
<Block>
<View></View>
<View></View>
</Block>
}
cancelButtonText="取消"
confirmButtonText="确认"
textAlgin="center"
cancelButtonText='取消'
confirmButtonText='确认'
textAlgin='center'
close={this.closeTipsSave}
cancel={this.cancelTipsSave}
confirm={this.confirmTipsSave}
@ -2521,11 +2625,11 @@ class IotCarePlanFR200 extends Component<any, any> {
<PopupStatus
isShow={isShowNursingSuccess}
isClose
title="您已结束本次护理"
type="success"
content="正在上传护理记录……"
confirmButtonText="知道了"
textAlgin="center"
title='您已结束本次护理'
type='success'
content='正在上传护理记录……'
confirmButtonText='知道了'
textAlgin='center'
close={() => {
/*不需要做处理*/
}}
@ -2536,32 +2640,33 @@ class IotCarePlanFR200 extends Component<any, any> {
deviceInfo={currentDevice}
close={this.connectionClose}
isDisconnect={!isConnectionBlutoot}
offlineChange={() => {}}
offlineChange={() => { }}
pairingChange={this.pairingChange}
upgradeFun={() => {}}
upgradeFun={() => { }}
/>
)}
<Popup
show={isShowHistoryMsg}
className="custom-popup"
className='custom-popup'
overlay={false}
>
<View className="sync-history-msg">...</View>
<View className='sync-history-msg'>...</View>
</Popup>
</View>
<View>
<View className="iot-main">
<View className='iot-main'>
{isFullScreen && (
<View className="banner-box">
<View className='banner-box'>
<View>
<Video
className="video-or-image"
className='video-or-image'
src={currentVideoSrc}
loop
id="myVideo"
objectFit="cover"
id='myVideo'
muted={videoVoiceStatus}
objectFit='cover'
enablePlayGesture
showFullscreenBtn={false}
onLoadedMetaData={this.GetVideosTime}
@ -2569,29 +2674,37 @@ class IotCarePlanFR200 extends Component<any, any> {
{/* <button onClick={this.executePromises}>点击按钮</button> */}
{errorTips && (
<Block>
<View className="msg-tips">
<View className='msg-tips'>
<Image
className="msg-tips-img"
className='msg-tips-img'
src={require("@/img/tips.png")}
/>
<View className="msg-tips-content">{errorTips}</View>
<View className='msg-tips-content'>{errorTips}</View>
</View>
</Block>
)}
</View>
<View className="fr200-iot-device">
<View className="item">
<Text className="device-time">
<View
className='music flex aitems jcenter'
onClick={this.videoVoiceStatusChange.bind(this)}
>
<Image
src={require(`@/img/${videoVoiceStatus ? 'mute' : 'play'}.png`)}
mode='aspectFill'
></Image>
</View>
<View className='fr200-iot-device'>
<View className='item'>
<Text className='device-time'>
<Text className="time">{currentTime}</Text>
<Text className='time'>{currentTime}</Text>
</Text>
</View>
<View className="line" />
<View className="item">
<Text className="gear">{currentGear}</Text>
<View className='line' />
<View className='item'>
<Text className='gear'>{currentGear}</Text>
</View>
<View className="line" />
<View className='line' />
<ElectricityView
Electricity={Electricity}
DeviceConnectStatus={DeviceConnectStatus}
@ -2613,9 +2726,10 @@ class IotCarePlanFR200 extends Component<any, any> {
onModeLockOpen={this.onModeLockOpen}
/>
)}
<button onClick={this.updata.bind(this)}> </button>
<View className={classnames({ show: showEcharts })}>
<Echarts series={series} full={this.full.bind(this)}></Echarts>
{/* <button onClick={this.updata.bind(this)}>模拟数据更新 </button> */}
<View className={classnames({ show: ActiveModeItem?.modeType !== "face" && ActiveModeItem?.modeType !== "eyes" && ActiveModeItem?.modeType !== "nasolabialFold" && ActiveModeItem?.modeType !== "mandibularLine" && ActiveModeItem?.modeType !== "headLiftingPro" })}>
<Echarts series={series} time={time} full={this.full.bind(this)}></Echarts>
</View>
{(ActiveModeItem?.modeType === "maskPenetration" ||

@ -10,33 +10,29 @@
height: 790rpx;
background-color: #fff;
border-radius: 30rpx;
.music-btn {
position: absolute;
top: 17rpx;
right: 17rpx;
.music {
width: 54rpx;
height: 54rpx;
background: #f8f8f8;
background: rgba(255, 255, 255, 0.6);
border-radius: 50%;
z-index: 10;
display: flex;
justify-content: center;
align-items: center;
.music-btn_icon {
width: 54rpx;
height: 54rpx;
position: absolute;
right: 20rpx;
top: 20rpx;
image {
width: 100%;
height: 100%;
}
}
.video-or-image {
display: block;
width: 690rpx;
height: 640rpx;
height: 690rpx;
border-radius: 30rpx;
animation-iteration-count: 1; // gif只播放一次
}
.iot-device {
width: 690rpx;
height: 150rpx;
height: 100rpx;
display: flex;
align-items: center;
justify-content: center;

@ -241,9 +241,9 @@ class IotCarePlanWL200 extends Component<any, any> {
this.getWL200NursingHistory();
this.initData();
}
componentDidMount() {}
componentDidMount() { }
componentWillUnmount() {}
componentWillUnmount() { }
componentDidShow() {
console.log("页面显示了");
@ -588,7 +588,7 @@ class IotCarePlanWL200 extends Component<any, any> {
this.onNursingTap();
// 倒计时弹窗: 倒计时完成后,自动开始,并判断弹窗
let downNum = CountDownTime[this.state.ActiveModeItem.modeType] || 3;
this.showCountdownFun(downNum, () => {});
this.showCountdownFun(downNum, () => { });
}, 500);
return;
@ -620,7 +620,7 @@ class IotCarePlanWL200 extends Component<any, any> {
};
// 绘制能量图
drawProwerPicture() {}
drawProwerPicture() { }
/** 切换光照 */
onSwitchChange = async () => {
@ -1385,7 +1385,7 @@ class IotCarePlanWL200 extends Component<any, any> {
// 仅在切换模式的时候,弹窗倒计时.
if (type === "switch") {
let downNum = CountDownTime[ActiveModeItem.modeType] || 3;
this.showCountdownFun(downNum, () => {}); // 倒计时弹窗
this.showCountdownFun(downNum, () => { }); // 倒计时弹窗
}
// 开始执行护理
@ -1935,7 +1935,7 @@ class IotCarePlanWL200 extends Component<any, any> {
if (currentTimeTimer) clearInterval(currentTimeTimer);
go(
"/recording/pages/face_report/face_report?id=" +
this.state.currentDevice.id
this.state.currentDevice.id
);
};
@ -2128,11 +2128,11 @@ class IotCarePlanWL200 extends Component<any, any> {
<PopupAlert
isShow={isModeLock}
zIndex={10020}
myClassName="level-up"
title="提示"
content="该模式即将上线,敬请期待"
confirmButtonText="我知道了"
textAlgin="center"
myClassName='level-up'
title='提示'
content='该模式即将上线,敬请期待'
confirmButtonText='我知道了'
textAlgin='center'
isClose={false}
close={this.onModeLockClose}
confirm={this.onModeLockClose}
@ -2140,8 +2140,8 @@ class IotCarePlanWL200 extends Component<any, any> {
<PopupInstrumentUploadTips
isShow={isFirstTipShow}
zIndex={10020}
myClassName="level-up"
title="打卡介绍"
myClassName='level-up'
title='打卡介绍'
data={nurseInfo}
close={this.onTipShowClose}
confirm={this.onTipShowClose}
@ -2153,11 +2153,11 @@ class IotCarePlanWL200 extends Component<any, any> {
isLarge
isClose
isShow={isEndCarePlan}
title="提示"
content="是否结束护理"
textAlgin="center"
cancelButtonText="取消"
confirmButtonText="确定"
title='提示'
content='是否结束护理'
textAlgin='center'
cancelButtonText='取消'
confirmButtonText='确定'
close={this.cancelEndBtn}
confirm={this.confirmEndBtn}
/>
@ -2165,7 +2165,7 @@ class IotCarePlanWL200 extends Component<any, any> {
isLarge
isClose
isShow={isSwitchActiveMode}
title="护理模式切换"
title='护理模式切换'
content={
<ModeListView
ModeID={ModeID}
@ -2179,9 +2179,9 @@ class IotCarePlanWL200 extends Component<any, any> {
onModeLockOpen={this.onModeLockOpen}
/>
}
textAlgin="center"
cancelButtonText="取消"
confirmButtonText="确定"
textAlgin='center'
cancelButtonText='取消'
confirmButtonText='确定'
close={this.cancelModeSwitchBtn}
confirm={this.confirmModeSwitchBtn}
/>
@ -2191,7 +2191,7 @@ class IotCarePlanWL200 extends Component<any, any> {
isShow={isShowStepTips}
isLarge
isFirstEntry={false}
confirmButtonText="知道了"
confirmButtonText='知道了'
data={ActiveModeItem.openSourceData}
close={this.closeStepTips}
/>
@ -2200,10 +2200,10 @@ class IotCarePlanWL200 extends Component<any, any> {
<PopupAlert
isShow={isNotEnoughTime}
isClose
title="提示"
content="您的本次护理时间不足,请重新护理"
confirmButtonText="确认"
textAlgin="center"
title='提示'
content='您的本次护理时间不足,请重新护理'
confirmButtonText='确认'
textAlgin='center'
close={this.closeNotEnoughTime}
confirm={this.closeNotEnoughTime}
/>
@ -2212,11 +2212,11 @@ class IotCarePlanWL200 extends Component<any, any> {
isShow={isShowErrorTipsText}
isClose
zIndex={10020}
myClassName="level-up"
title="提示"
myClassName='level-up'
title='提示'
content={errorTipsText}
confirmButtonText="知道了"
textAlgin="center"
confirmButtonText='知道了'
textAlgin='center'
close={this.closeErrorTipsText}
confirm={this.closeErrorTipsText}
/>
@ -2225,17 +2225,17 @@ class IotCarePlanWL200 extends Component<any, any> {
isShow={isShowTipsSave}
isClose
zIndex={10020}
myClassName="level-up"
title="提示"
myClassName='level-up'
title='提示'
content={
<Block>
<View></View>
<View></View>
</Block>
}
cancelButtonText="取消"
confirmButtonText="确认"
textAlgin="center"
cancelButtonText='取消'
confirmButtonText='确认'
textAlgin='center'
close={this.closeTipsSave}
cancel={this.cancelTipsSave}
confirm={this.confirmTipsSave}
@ -2244,11 +2244,11 @@ class IotCarePlanWL200 extends Component<any, any> {
<PopupStatus
isShow={isShowNursingSuccess}
isClose
title="您已结束本次护理"
type="success"
content="正在上传护理记录……"
confirmButtonText="知道了"
textAlgin="center"
title='您已结束本次护理'
type='success'
content='正在上传护理记录……'
confirmButtonText='知道了'
textAlgin='center'
close={() => {
/*不需要做处理*/
}}
@ -2259,31 +2259,31 @@ class IotCarePlanWL200 extends Component<any, any> {
deviceInfo={currentDevice}
close={this.connectionClose}
isDisconnect={!isConnectionBlutoot}
offlineChange={() => {}}
offlineChange={() => { }}
pairingChange={this.pairingChange}
upgradeFun={() => {}}
upgradeFun={() => { }}
/>
)}
<Popup
show={isShowHistoryMsg}
className="custom-popup"
className='custom-popup'
overlay={false}
>
<View className="sync-history-msg">...</View>
<View className='sync-history-msg'>...</View>
</Popup>
</View>
<View>
<View className="iot-main">
<View className="banner-box">
<View className='iot-main'>
<View className='banner-box'>
<View>
{!isShowNurse && (
<Video
className="video-or-image"
className='video-or-image'
src={ActiveModeItem.modeVideo}
loop
id="myVideo"
id='myVideo'
onPlay={this.onPlay}
muted={isMuted}
onTimeUpdate={this.GetVideosTime}
@ -2296,12 +2296,12 @@ class IotCarePlanWL200 extends Component<any, any> {
<Block>
{isStopNurse ? (
<Image
className="video-or-image"
className='video-or-image'
src={currentServiceData.stopSource}
/>
) : (
<Image
className="video-or-image"
className='video-or-image'
src={currentServiceData.startSource}
/>
)}
@ -2309,25 +2309,33 @@ class IotCarePlanWL200 extends Component<any, any> {
)}
{errorTips && (
<Block>
<View className="msg-tips">
<View className='msg-tips'>
<Image
className="msg-tips-img"
className='msg-tips-img'
src={require("@/img/tips.png")}
/>
<View className="msg-tips-content">{errorTips}</View>
<View className='msg-tips-content'>{errorTips}</View>
</View>
</Block>
)}
</View>
<View className="iot-device">
<View className="item">
<Text className="device-time">
<View
className='music flex aitems jcenter'
onClick={this.handleClicksound.bind(this)}
>
<Image
src={require(`@/img/${isMuted ? 'mute' : 'play'}.png`)}
mode='aspectFill'
></Image>
</View>
<View className='iot-device'>
<View className='item'>
<Text className='device-time'>
<Text className="time">{currentTime}</Text>
<Text className='time'>{currentTime}</Text>
</Text>
</View>
<View className="line" />
<View className='line' />
<ElectricityView
Electricity={Electricity}
matrixElectricity={matrixElectricity}

@ -136,6 +136,7 @@ export default class BluetoothContainer {
workMode: jsonStatus?.workMode, // 仅当设备上报模式与小程序一致时,才允许改变小程序变量缓存
});
}
console.log("this.that.isRuning",this.that.isRuning)
// 判断设备是否在运行中(护理中)
// 仅当设备模式与小程序是否一致,才允许更改设备运行时间
if (this.that.isRuning) {

@ -7,86 +7,106 @@
padding: 35rpx 25rpx 25rpx 35rpx;
box-sizing: border-box;
position: relative;
}
.fullscreen {
position: fixed;
top: 450rpx;
left: -450rpx;
right: 0;
bottom: 0;
width: 100vh;
height: 100vw;
z-index: 9999;
background-color: rgba(0, 0, 0, 0.5); /* 背景色 */
transform: rotate(90deg);
// animation: rotate 0s linear;
}
.fullscreen {
position: fixed;
top: 450rpx;
left: -450rpx;
right: 0;
bottom: 0;
@keyframes echartRotate {
from {
width: 690rpx;
height: 320rpx;
transform: rotate(0deg);
}
to {
width: 100vh;
height: 100vw;
z-index: 9999;
background-color: rgba(0, 0, 0, 0.5); /* 背景色 */
transform: rotate(90deg);
// animation: rotate 0s linear;
transform: rotate(0deg);
}
}
@keyframes echartRotate {
from {
width: 690rpx;
height: 320rpx;
transform: rotate(0deg);
}
to {
width: 100vh;
height: 100vw;
transform: rotate(0deg);
}
.box_background {
position: absolute;
top: 0;
left: 0;
width: 690rpx;
height: 320rpx;
border-radius: 30rpx;
background-color: #fff;
.power {
margin: 34rpx 0 28rpx 28rpx;
font-family: PingFang-SC;
font-weight: 500;
font-size: 18rpx;
color: #cccccc;
}
.box_background {
.full {
width: 24rpx;
height: 24rpx;
position: absolute;
top: 0;
left: 0;
width: 690rpx;
height: 320rpx;
border-radius: 30rpx;
background-color: #fff;
.power {
margin: 34rpx 0 28rpx 28rpx;
font-family: PingFang-SC;
font-weight: 500;
font-size: 18rpx;
color: #cccccc;
}
.full {
width: 24rpx;
height: 24rpx;
position: absolute;
top: 32rpx;
right: 26rpx;
z-index: 2;
}
.line {
margin: 0 0 6rpx 35rpx;
font-family: PingFang-SC;
font-size: 14rpx;
color: #cccccc;
display: flex;
position: relative;
height: 18rpx;
.bottom_line {
// border-bottom: 1rpx #ccc dashed;
width: 550rpx;
margin-left: 20rpx;
position: absolute;
bottom: -6rpx;
right: 74rpx;
height: 4rpx;
color: #fff;
}
}
.time {
top: 32rpx;
right: 26rpx;
z-index: 2;
}
.line {
margin: 0 0 6rpx 35rpx;
font-family: PingFang-SC;
font-size: 14rpx;
color: #cccccc;
display: flex;
position: relative;
height: 18rpx;
.bottom_line {
// border-bottom: 1rpx #ccc dashed;
width: 550rpx;
margin-left: 20rpx;
position: absolute;
bottom: 22rpx;
right: 24rpx;
font-family: PingFang-SC;
font-size: 18rpx;
color: #cccccc;
bottom: -6rpx;
right: 74rpx;
height: 4rpx;
color: #fff;
}
}
.time_list {
position: absolute;
bottom: 28rpx;
left: 72rpx;
font-family: PingFang-SC;
font-size: 15rpx;
color: #cccccc;
width: 540rpx;
justify-content: space-around;
}
.time {
position: absolute;
bottom: 22rpx;
right: 24rpx;
font-family: PingFang-SC;
font-size: 18rpx;
color: #cccccc;
}
}
.echart-component-full {
width: 690rpx;
height: 320rpx;
margin: 0rpx auto;
background-color: #fff;
border-radius: 30rpx;
padding: 35rpx 25rpx 25rpx 35rpx;
box-sizing: border-box;
position: relative;
}
page {

@ -11,9 +11,10 @@ import "./index.less";
interface Props {
series: any;
full: any;
time: any
}
function Index({ series, full }: Props) {
function Index({ series, full, time }: Props) {
const echartsRef = useRef<EchartsHandle>(null);
const [options, setOptions] = useState({
animation: false,
@ -49,24 +50,13 @@ function Index({ series, full }: Props) {
},
axisLabel: {
//坐标轴刻度标签的相关设置
color: "#cccccc",
fontSize: 8,
color: "#fff",
fontSize: 1,
},
axisTick: {
show: false,
},
data: [
"00:01",
"00:02",
"00:03",
"00:04",
"00:05",
"00:06",
"00:07",
"00:08",
"00:09",
"00:10",
],
data: [],
},
yAxis: {
type: "value",
@ -143,36 +133,222 @@ function Index({ series, full }: Props) {
color: "#ff8410",
},
},
series: [],
});
series: []
})
// let data = true
// const newParams = {
// animation: false,
// grid: {
// // 让图表占满容器
// // containLabel: true,
// top: "32rpx",
// left: "48rpx",
// right: "86rpx",
// bottom: "38rpx",
// },
// // legend: {
// // itemStyle: {
// // decal: {
// // rotation: 90
// // }
// // }
// // },
// yAxis: {
// // name: '',
// // nameGap: 5,
// // nameTextStyle: {
// // color: '#e4e4e4',
// // fontSize:7
// // },
// type: "category",
// inverse: true,
// axisLine: {
// //坐标轴轴线相关设置。数学上的x轴
// show: true,
// lineStyle: {
// color: "#cccccc",
// },
// },
// axisLabel: {
// //坐标轴刻度标签的相关设置
// color: "#cccccc",
// fontSize: 14,
// rotate: -90,
// margin: 18
// },
// axisTick: {
// show: false,
// },
// data: [
// "00:01",
// "00:02",
// "00:03",
// "00:04",
// "00:05",
// "00:06",
// "00:07",
// "00:08",
// "00:09",
// "00:10",
// ],
// },
// xAxis: {
// type: "value",
// min: 0,
// max: 8,
// splitNumber: 8,
// splitLine: {
// show: true,
// lineStyle: {
// color: "#cccccc",
// type: [4, 2],
// dashOffset: 4,
// },
// },
// axisLine: {
// show: false,
// },
// axisLabel: {
// show: false,
// },
// axisTick: {
// show: false,
// },
// },
// visualMap: {
// z: 1,
// top: 0,
// right: 0,
// seriesIndex: 0,
// show: false,
// dimension: 0,
// pieces: [
// {
// gt: 0,
// lte: 1,
// color: "#fff8c9",
// },
// {
// gt: 1,
// lte: 2,
// color: "#fff0c6",
// },
// {
// gt: 2,
// lte: 3,
// color: "#ffe5c3",
// },
// {
// gt: 3,
// lte: 4,
// color: "#ffdbbf",
// },
// {
// gt: 4,
// lte: 5,
// color: "#ffcfbb",
// },
// {
// gt: 5,
// lte: 6,
// color: "#ffbab5",
// },
// {
// gt: 6,
// lte: 7,
// color: "#ffb4b3",
// },
// {
// gt: 7,
// lte: 8,
// color: "#ffb4b3",
// },
// ],
// outOfRange: {
// color: "#ff8410",
// },
// },
// series: []
// }
const level = [8, 7, 6, 5, 4, 3, 2];
const [isFull, setIsfull] = useState(false)
const [data, setData] = useState([
"00:01",
"00:02",
"00:03",
"00:04",
"00:05",
"00:06",
"00:07",
"00:08",
"00:09",
"00:10",
],)
const [newOptions, setNewOptions] = useState(options);
const updata = useCallback((res) => {
let option = JSON.parse(JSON.stringify(options));
option.series = JSON.parse(JSON.stringify(res));
const updata = useCallback((res, times) => {
if (times.second == 0) {
return
}
// let option
// if (data) {
// option = JSON.parse(JSON.stringify(newParams))
// } else {
// option = JSON.parse(JSON.stringify(options))
// }
let option = JSON.parse(JSON.stringify(options))
let datas = JSON.parse(JSON.stringify(data))
if (times.min > 0 || times.second > 10) {
datas.splice(0, 1)
datas.push(formatTime(times))
}
setData(JSON.parse(JSON.stringify(datas)))
// option.xAxis.data = data
option.series = JSON.parse(JSON.stringify(res))
// 更新图表数据
setNewOptions(option);
}, []);
}, [data]);
function formatTime(times: any) {
let mins
if (times.min < 10) {
mins = '0' + times.min;
} else {
mins = times.min;
}
let secs
if (times.second < 10) {
secs = '0' + times.second;
} else {
secs = times.second;
}
return `${mins.toString()}:${secs.toString()}`;
}
const cancelFull = useCallback((res) => {
full();
}, []);
full()
setIsfull(!isFull)
}, [isFull])
useEffect(() => {
setOptions(newOptions);
}, [newOptions]);
useEffect(() => {
updata(series);
updata(series, time);
}, [series]);
return (
<Block>
<View id="box" className="echart-component">
<View id='box' className={isFull ? "echart-component-full" : "echart-component"}>
<Echarts
force-use-old-canvas="false"
force-use-old-canvas='false'
echarts={echarts}
option={options}
ref={echartsRef}
@ -180,23 +356,30 @@ function Index({ series, full }: Props) {
// style自定义设置echarts宽高
style={{ width: "630rpx", height: "260rpx", zIndex: 1 }}
/>
<View className="box_background">
<View className='box_background'>
<Image
className="full"
className='full'
src={require("@/img/full-scran.png")}
onClick={cancelFull}
></Image>
<View className="power"></View>
<View className='power'></View>
{level.map((item) => (
<View className="line" key={item}>
<View className="number">{item}</View>
<View className="bottom_line"></View>
<View className='line' key={item}>
<View className='number'>{item}</View>
<View className='bottom_line'></View>
</View>
))}
<View className="line">
<View className="number">1</View>
<View className='line'>
<View className='number'>1</View>
</View>
<View className='time_list flex'>
{
data.map((times, index) => (
<View key={index}>{times}</View>
))
}
</View>
<View className="time"></View>
<View className='time'></View>
</View>
</View>
</Block>

@ -25,7 +25,7 @@ function Index({ series, full }: Props) {
top: "32rpx",
left: "48rpx",
right: "86rpx",
bottom: "68rpx",
bottom: "38rpx",
},
// legend: {
// itemStyle: {
@ -164,8 +164,6 @@ function Index({ series, full }: Props) {
}, [])
const cancelFull = useCallback((res) => {
console.log(1111);
full()
}, [])
@ -184,16 +182,17 @@ function Index({ series, full }: Props) {
<Block>
<View id='box' className='box_full'>
<Echarts
force-use-old-canvas='false'
echarts={echarts}
option={options}
ref={echartsRef}
// isPage={false}
// style自定义设置echarts宽高
style={{ width: "620rpx", height: "80vh", zIndex: 1 }}
style={{ width: "620rpx", height: "75vh", zIndex: 1 }}
/>
<View className='box_background1'>
<Image className='part' src={require("@/img/part-scran.png")} onClick={cancelFull}></Image>
<Image className='part' src={require("@/img/part-scran.png")} onClick={cancelFull}></Image>
<View className='power'></View>
{level.map((item) => (
<View className='line' key={item}>

@ -0,0 +1,162 @@
.step-popup-content-box {
margin: 0;
.absolutely-img {
width: 100%;
height: 600rpx;
background-color: #eee;
}
}
.step-absolutely {
width: 600rpx;
height: 720rpx;
text-align: left;
margin: 0 auto;
}
.step-img {
display: block;
width: 600rpx;
height: 600rpx;
border-radius: 30rpx;
}
.common-popup-title-WE {
font-size: 36rpx;
font-family: PingFang SC;
font-weight: bold;
color: #030000;
text-align: center;
}
.whitePop {
background-color: #fff !important;
color: #000 !important;
}
.Newpop {
.center {
// background-color: red;
height: 720rpx;
.page {
color: #dedede;
margin-bottom: 10rpx;
font-size: 25rpx;
}
.titleSlogan{
font-size: 30rpx;
font-family: 700;
margin-bottom: 17rpx;
}
.img {
width: 100%;
height: 500rpx;
background-color: #666;
}
.text {
margin: 20rpx;
font-size: 23rpx;
font-weight: 700;
background-color: #f8f8f8;
// border: 1rpx solid;
border-radius: 45rpx;
padding: 5rpx 24rpx;
}
.black {
color: #000;
display: inline-block;
}
}
}
.site-close {
position: absolute;
right: 16rpx;
top: 16rpx;
color: #000;
font-size: 36rpx;
z-index: 100009;
background-color: transparent;
border-radius: 50%;
padding: 8rpx;
box-sizing: border-box;
}
.step-popup-btn {
position: absolute;
bottom: 100rpx;
left: calc(50% - 120rpx);
width: 240rpx;
height: 70rpx;
line-height: 70rpx;
font-size: 28rpx;
text-align: center;
border: 1rpx solid #000;
border-radius: 40rpx;
background-color: #000;
color: #fff;
box-sizing: border-box;
}
.step-tips-common-box {
padding: 50rpx 35rpx 74rpx 35rpx;
.tips-message {
margin-top: 70rpx;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #030000;
line-height: 60rpx;
}
}
.popup-btn-one {
display: flex;
margin-top: 60rpx;
justify-content: center;
.popup-btn {
width: 270rpx;
height: 90rpx;
line-height: 90rpx;
font-size: 32rpx;
font-weight: 500;
text-align: center;
border: 1rpx solid #000;
border-radius: 45rpx;
color: #fff;
background-color: #000;
font-family: PingFang SC;
}
}
.setp-footer-btn {
display: flex;
justify-content: center;
align-items: center;
text-align: center;
height: 30rpx;
// padding: 10rpx;
margin-top: 50rpx;
.checked {
width: 30rpx;
height: 30rpx;
margin-right: 26rpx;
}
.text {
font-family: PingFang SC;
font-size: 28rpx;
color: #666;
font-weight: 400;
}
}

@ -0,0 +1,199 @@
import classnames from "classnames";
import { Component } from "react";
import {
Block,
View,
Image,
Text,
Button,
PageMeta,
ScrollView,
} from "@tarojs/components";
import { Popup, Checkbox, CheckboxGroup, Steps } from "@antmjs/vantui";
import "@/components/popup/popup.less";
import "@/components/popup/popup-alert.less";
import "./popup-We.less"
import { go } from "@/utils/traoAPI";
/** props
* isLarge
* isShow
* isClose
* title
* content
* confirmButtonText
* textAlgin left right center
* type: 1
* @confirm
*/
class PopupWe extends Component<any, any> {
constructor(props) {
super(props);
this.state = {
name: "确认组件",
// Page:1,
type: "1",
// titleSlogan:'请选择额头区域护理目标'
};
}
async onLoad() {
console.log(this.props, '111111111111');
}
componentDidMount() { }
componentWillUnmount() { }
componentDidShow() { }
componentDidHide() { }
async initData() { }
onClose = () => {
this.props.close();
};
onConfirm = () => {
};
onClickStop = (e) => {
e.stopPropagation();
};
onTouchMove = () => {
return true;
};
html1_3 = () => {
return <View className="img">22222</View>
}
render() {
let {
title,
content,
confirmButtonText,
textAlgin,
isShow,
isClose,
isLarge,
values,
myClassName,
zIndex,
Page,
type,
handlepopupCheck,
WeCurrent,
PreviousStep,
NextStep
} = this.props;
if (!zIndex) zIndex = 10001;
return (
<Block>
<PageMeta pageStyle={isShow ? "overflow: hidden;" : ""} />
<Popup
className={myClassName}
overlayStyle={`width: 100vw;padding: 0;z-index: ${zIndex} !important`}
show={isShow}
closeOnClickOverlay={false}
round
onClick={this.onClickStop}
>
<View
className={classnames("common-box Newpop", {
"common-large": isLarge,
})}
catchMove
>
{title && (
<View
className={classnames("common-popup-title-WE", {
"margin-samll": isLarge,
})}
>
{title}
</View>
)}
<View className="center">
<View className="page">
<View className="black">0{Page}</View>/06
</View>
<View className="titleSlogan">{WeCurrent[Page - 1].titleSlogan}</View>
{Page > 3 ? <View>
<View className="img">22222</View>
<View>
<Steps active={1} steps={[
{
text: '步骤一',
desc: '描述信息',
},
{
text: '步骤二',
desc: '描述信息',
},
{
text: '步骤三',
desc: '描述信息',
},
{
text: '步骤四',
desc: '描述信息',
},
]}></Steps>
</View>
</View> : <View>
<View className="img">
111111
</View>
<View className="Checkbox ">
<CheckboxGroup
value={WeCurrent[Page - 1].values}
onChange={(e) => {
console.info(e, WeCurrent, Page)
handlepopupCheck(e)
}}
>
<View className="text"><Checkbox name="1" shape="square" iconSize="15px" checkedColor="#0089d2"> {WeCurrent[Page - 1].text1} </Checkbox></View>
<View className="text"><Checkbox name="2" shape="square" iconSize="15px" checkedColor="#0089d2">{WeCurrent[Page - 1].text2}</Checkbox></View>
</CheckboxGroup>
</View>
</View>}
</View>
<View className="alert-popup-btns">
{Page !== 1 ? <Button className="alert-popup-btn whitePop" onClick={(e) => {
PreviousStep()
}}>
</Button> : null}
<Button className="alert-popup-btn" disabled={WeCurrent[Page - 1].values.length === 0 ? true : false} onClick={(e) => {
NextStep()
}}>
</Button>
</View>
</View>
</Popup>
</Block>
);
}
}
export default PopupWe;

@ -13,7 +13,7 @@ page {
height: 0;
color: transparent;
}
.message {
position: relative;
width: 40rpx;
@ -519,9 +519,19 @@ page {
.MembraneCloth {
position: relative;
width: 670rpx;
height: 840rpx;
border-radius: 30rpx;
background: #fff;
padding: 52rpx 20rpx 46rpx;
box-sizing: border-box;
.title {
font-weight: bold;
text-align: center;
font-size: 36rpx;
margin-bottom: 36rpx;
color: #030000;
}
.btn1 {
font-style: normal;
width: 270rpx;
@ -532,28 +542,57 @@ page {
border-radius: 45rpx;
font-size: 32rpx;
font-weight: bold;
margin-top: 55rpx;
color: #ffffff;
}
.center{
height: 70%;
background-color: red;
.list{
.center {
margin-bottom: 44rpx;
.list {
width: 100%;
height: 117rpx;
background-color: #41a9fc;
border-bottom: 2rpx solid black;
display: flex;
height: 150rpx;
background: linear-gradient(90deg, #efdcc2, #fff2df);
border-radius: 30rpx;
margin-bottom: 20rpx;
padding: 20rpx 31rpx 20rpx 20rpx;
box-sizing: border-box;
justify-content: space-between;
Image {
width: 120rpx;
height: 120rpx;
border-radius: 20rpx;
}
.name_box {
margin-left: 24rpx;
.name {
font-family: PingFang SC;
font-weight: bold;
font-size: 26rpx;
color: #000000;
margin-bottom: 12rpx;
}
.subTitle {
font-family: PingFang SC;
font-weight: 500;
font-size: 22rpx;
color: #666666;
}
}
.buy {
font-family: PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #666666;
display: flex;
align-items: center;
Image {
height: 20rpx;
width: 20rpx;
margin-left: 10rpx;
}
}
}
}
}
.MembraneCloth .title {
font-weight: bold;
text-align: center;
font-size: 36rpx;
color: #030000;
padding-top: 39rpx;
}
.popbox .title {
font-weight: bold;
text-align: center;

@ -1,5 +1,4 @@
import classnames from "classnames";
setSerial;
import dayjs from "dayjs";
import Taro from "@tarojs/taro";
import { Component } from "react";
@ -12,8 +11,9 @@ import {
SwiperItem,
RichText,
PageMeta,
Radio
} from "@tarojs/components";
import { Popup, Radio } from "@antmjs/vantui";
import { Popup } from "@antmjs/vantui";
/*** redux ***/
import { connect } from "react-redux";
import { userRefresh, tokenRefresh } from "@/store/features/userInfo";
@ -40,6 +40,10 @@ import Navbar from "@/components/navbar/navbar";
import ConnectionBluetoot from "@/components/bluetoot/connection";
import UpdateIotWL200 from "@/components/bluetoot/update-wl200/index";
import UpdateIotFR200 from "@/components/bluetoot/update-fr200/index";
// import PopupWe from "@/moduleIOT/pages/iotCarePlan/components/popup-We/popup-We";
import PopupWe from "../../moduleIOT/pages/iotCarePlan/components/popup-We/popup-We";
/** 自定义组件 **/
import {
@ -67,42 +71,72 @@ import {
// const log = require("@/utils/log");
class Index extends Component<any, any> {
onModeLockClose: any;
constructor(props) {
super(props);
this.state = {
isDisabledClickAddDevice: false, // 是否禁止点击添加设备
isCommonError: false, // 是否显示通用错误提示
commonErrorText: [], // 通用错误提示
showEquipment: false, // 扫码绑定设备弹窗
isRegisterBoolean: false, // 是否已登录
isShowPrivacyPopup: false,
isShowSiteSwiper: false,
isNotRegister: false, // 是否未注册
isDev: false, // 正在开发提示
sitePopupList: [], // 站点管理列表
userinfo: {
mobile: Taro.getStorageSync("mobile"),
},
// 膜布列表
MembraneClothList: [
WeCurrent: [
{
name: "mox名字",
values:[],
text1:' 强效提拉额肌,淡化抬头纹',
text2:'密集水光灌注,胶原直达肌底',
titleSlogan:'请选择额头区域的护理目标(可多选)'
},
{
name: "mox名字",
values:[],
text1:' 强效提拉额肌,淡化抬头纹',
text2:'密集水光灌注,胶原直达肌底',
titleSlogan:'请选择脸颊区域的护理目标(可多选)'
},
{
name: "mox名字",
values:[],
text1:' 强效提拉轮廓,淡化木偶纹',
text2:'密集水光灌注,胶原直达肌底',
titleSlogan:'请选择下颌线区域的护理目标(可多选)'
},
{
name: "mox名字",
values:[],
text1:' 444',
text2:'444',
titleSlogan:'请选择额头区域的护理目标(可多选)'
},
{
name: "mox名字",
values:[],
text1:' 55555',
text2:'55555',
titleSlogan:'请选择额头区域的护理目标(可多选)'
},
{
values:[],
text1:' 6666',
text2:'66666',
titleSlogan:'请选择额头区域的护理目标(可多选)'
}
],
checkedMembraneCloth: "",
WeCurrentPage: 4,
showEquipment: false, // 扫码绑定设备弹窗
isRegisterBoolean: false, // 是否已登录
isShowPrivacyPopup: false,
isShowSiteSwiper: false,
isNotRegister: false, // 是否未注册
isDev: false, // 正在开发提示
sitePopupList: [], // 站点管理列表
userinfo: {
mobile: Taro.getStorageSync("mobile"),
},
isModeLockWE: false,
// 膜布列表
MembraneClothList: [{
name: '集体美容仪'
},
{
name: 'M02美容仪'
}],
checkedMembraneCloth: '',
list: [],
params: "",
messageCount: Taro.getStorageSync("messageCount") || 0,
@ -207,7 +241,7 @@ class Index extends Component<any, any> {
}
}
componentDidMount() {}
componentDidMount() { }
componentWillUnmount() {
// 页面卸载监听
@ -281,7 +315,7 @@ class Index extends Component<any, any> {
this.isSancQrcodeEnter();
}
},
fail: () => {},
fail: () => { },
complete: () => {
// 授权完成运行页面初始化
},
@ -538,8 +572,45 @@ class Index extends Component<any, any> {
this.setState({ isShowSiteSwiper: false });
};
bannerSwiperchange() {}
bannerSwiperchange() { }
// 模拟弹窗
handlepopup = () => {
console.log('当前的state:', this.state,);
let isModeLockWE = this.state.isModeLockWE;
console.log('进入模拟弹窗', isModeLockWE);
// 其他操作...
this.setState({ isModeLockWE: !isModeLockWE })
}
// 复选框
handlepopupCheck = (e) => {
let WeCurrent =this.state.WeCurrent
let WeCurrentPage =this.state.WeCurrentPage
WeCurrent[WeCurrentPage -1].values=[...e.detail]
this.setState({ WeCurrent })
}
// 上一步
PreviousStep = () => {
console.log(1111111);
let WeCurrentPage =this.state.WeCurrentPage
if(WeCurrentPage !== 1){
WeCurrentPage=WeCurrentPage-1
this.setState({
WeCurrentPage
})
}
}
// 下一步
NextStep = () => {
let WeCurrentPage =this.state.WeCurrentPage
if(WeCurrentPage !== 6){
WeCurrentPage=WeCurrentPage+1
this.setState({
WeCurrentPage
})
}
}
gobanner(item) {
// 跳转类型0无跳转、1跳转内部链接、3跳转外部链接、4跳转小程序、5导向视频号、6导向视频号直播间',
/**
@ -1133,7 +1204,10 @@ class Index extends Component<any, any> {
show,
isCommonError,
commonErrorText,
isModeLockWE,
MembraneClothList,
checkedMembraneCloth,
list,
calendarComplete,
calendarInComplete,
currentDate,
@ -1143,7 +1217,8 @@ class Index extends Component<any, any> {
isNotRegister,
isShowSiteSwiper,
isDev,
WeCurrent,
WeCurrentPage,
bannerList,
bannerCurrent,
// 绑定弹窗
@ -1178,7 +1253,7 @@ class Index extends Component<any, any> {
<View catchMove>
<PopupAlert
isShow={isCommonError}
title="提示"
title='提示'
content={
<Block>
{commonErrorText.map((item) => {
@ -1186,60 +1261,60 @@ class Index extends Component<any, any> {
})}
</Block>
}
confirmButtonText="知道了"
textAlgin="center"
confirmButtonText='知道了'
textAlgin='center'
close={this.onCommonErrorFun}
confirm={this.onCommonErrorFun}
/>
<PopupConfirm
isShow={isShowReConnectDeviceRecordWL200}
isClose
title="提示"
title='提示'
zIndex={10020}
myClassName="level-up"
myClassName='level-up'
content={
<Block>
<View></View>
<View></View>
</Block>
}
cancelButtonText="取消"
confirmButtonText="连接设备"
textAlgin="center"
cancelButtonText='取消'
confirmButtonText='连接设备'
textAlgin='center'
close={this.closeReConnectDeviceRecordWL200}
confirm={this.confirmReConnectDeviceRecordWL200}
/>
<PopupAlert
isShow={isBindingError}
title="提示"
title='提示'
content={
<Block>
<View></View>
<View></View>
</Block>
}
confirmButtonText="知道了"
textAlgin="center"
confirmButtonText='知道了'
textAlgin='center'
close={this.onBindErrorClose}
confirm={this.onBindErrorConfirm}
/>
<PopupAlert
isShow={isNotRegister}
isClose
title="提示"
content="暂未授权注册,请点击注册"
confirmButtonText="确定"
textAlgin="center"
type="1"
title='提示'
content='暂未授权注册,请点击注册'
confirmButtonText='确定'
textAlgin='center'
type='1'
close={this.closeAlert}
confirm={this.closeAlert}
/>
<PopupAlert
isShow={isDev}
title="提示"
content="页面正在开发中"
confirmButtonText="确定"
textAlgin="center"
title='提示'
content='页面正在开发中'
confirmButtonText='确定'
textAlgin='center'
close={this.closeDev}
confirm={this.closeDev}
/>
@ -1258,54 +1333,54 @@ class Index extends Component<any, any> {
/>
<PopupAlert
isShow={isBindingError}
title="提示"
title='提示'
content={
<Block>
<View></View>
<View></View>
</Block>
}
confirmButtonText="知道了"
textAlgin="center"
confirmButtonText='知道了'
textAlgin='center'
close={this.onBindErrorClose}
confirm={this.onBindErrorConfirm}
/>
<PopupAlert
isShow={isBeforeBindingError}
title="提示"
title='提示'
content={
BeforeBindingErrorText || "您选择的仪器有误,请重新确认选择"
}
confirmButtonText="知道了"
textAlgin="center"
confirmButtonText='知道了'
textAlgin='center'
close={this.onBeforeBindClose}
confirm={this.onBeforeBindConfirm}
/>
<PopupAlert
isShow={isBindingError203}
title="提示"
content="序列码已被别人绑定,请联系微信助手"
confirmButtonText="知道了"
textAlgin="center"
title='提示'
content='序列码已被别人绑定,请联系微信助手'
confirmButtonText='知道了'
textAlgin='center'
close={this.onBindErrorClose203}
confirm={this.onBindErrorConfirm203}
></PopupAlert>
<PopupAlert
isShow={showEquipment}
title="提示"
title='提示'
content={
<Block>
<View className="mb10">
<View className='mb10'>
{instrumentInfo.instrumentName}
</View>
<View className="mb10">{instrumentInfo.serial}</View>
<View className="mb10"></View>
<View className='mb10'>{instrumentInfo.serial}</View>
<View className='mb10'></View>
</Block>
}
confirmButtonText="知道了"
textAlgin="center"
confirmButtonText='知道了'
textAlgin='center'
close={this.onUnloginClose.bind(this)}
confirm={this.onUnloginConfirm.bind(this)}
></PopupAlert>
@ -1313,9 +1388,9 @@ class Index extends Component<any, any> {
<PopupSiteSwiper
isShow={isShowSiteSwiper}
siteData={sitePopupList}
size="middle"
confirmButtonText="确定"
textAlgin="center"
size='middle'
confirmButtonText='确定'
textAlgin='center'
close={this.closeSiteSwiper}
confirm={this.closeSiteSwiper}
/>
@ -1335,15 +1410,15 @@ class Index extends Component<any, any> {
isLarge
isClose
isShow={isShowUpdateVersionTip}
title="提示"
title='提示'
content={
<Block>
<View></View>
<View></View>
</Block>
}
textAlgin="center"
confirmButtonText="确定"
textAlgin='center'
confirmButtonText='确定'
close={this.cancelUpdateVersionTip}
confirm={this.confirmUpdateVersionTip}
/>
@ -1368,16 +1443,16 @@ class Index extends Component<any, any> {
)}
<PopupAlert
isShow={isShowVersionUpgradFinish}
title="升级内容公告"
title='升级内容公告'
content={
<Block>
<View className="nodes">
<View className='nodes'>
<RichText nodes={versionUpgradFinishNodes} />
</View>
</Block>
}
confirmButtonText="知道了"
textAlgin="left"
confirmButtonText='知道了'
textAlgin='left'
isClose
close={this.onVersionUpgradFinish}
confirm={this.onVersionUpgradFinish}
@ -1389,29 +1464,29 @@ class Index extends Component<any, any> {
leftSlot={
<Block>
<View
className="message"
className='message'
onClick={this.gourl}
data-url="/pages/message/message"
data-url='/pages/message/message'
>
<Image
className="message-img"
className='message-img'
src={require("../../img/index/message.png")}
mode="aspectFill"
mode='aspectFill'
/>
{messagecount ? <View className="tip" /> : ""}
{messagecount ? <View className='tip' /> : ""}
</View>
</Block>
}
/>
<View className="index">
<View className="date-title" onClick={this.toNursingRecords}>
<Text className="text"></Text>
<View className='index'>
<View className='date-title' onClick={this.toNursingRecords}>
<Text className='text'></Text>
<Image
src={require("../../img/index/right.png")}
style="width: 20rpx;height: 20rpx;"
style='width: 20rpx;height: 20rpx;'
/>
</View>
<View className="bg-while">
<View className='bg-while'>
<AtCalendar
hideArrow
isSwiper={false}
@ -1423,40 +1498,41 @@ class Index extends Component<any, any> {
/>
</View>
</View>
<View className="index-infobox5">
<View className='index-infobox5'>
{instrumentList.length > 0 && (
<Block>
<View className="nurse_plan_box flex aitems sb">
<View className="title"></View>
<View
className="txt_box flex jcenter aitems"
data-url="/instrument/pages/instrument/instrument"
className='txt_box flex jcenter aitems'
data-url='/instrument/pages/instrument/instrument'
onClick={this.gourl}
>
<Image
className="right_icon"
className='right_icon'
src={require("../../img/black-add.png")}
mode="aspectFill"
mode='aspectFill'
/>
<View className="txt"></View>
<View className='txt'></View>
</View>
</View>
<View style="overflow-x: auto;">
<View className="device_list flex">
<View style='overflow-x: auto;'>
<View className='device_list flex'>
{instrumentList.map((item, index) => {
return (
<View
key={"instrumentList" + index}
className="device_item"
className='device_item'
onClick={this.goNursing.bind(this, item)}
>
<Image
className="banner_img"
className='banner_img'
src={item.banner}
mode="aspectFill"
mode='aspectFill'
/>
<View className="device_name ellipsis1">
<View className='device_name ellipsis1'>
{item.name}
</View>
</View>
@ -1466,30 +1542,31 @@ class Index extends Component<any, any> {
</View>
</Block>
)}
{/* <button onClick={this.handlepopup}>点击我</button> */}
{instrumentList.length === 0 && (
<Block>
<View className="nurse_plan_box flex aitems sb">
<View className="title"></View>
<View className='nurse_plan_box flex aitems sb'>
<View className='title'></View>
</View>
<View className="add_device flex jcenter aitems bg-while">
<View className="add_device_btn">
<View className="txt_box flex jcenter aitems">
<View className='add_device flex jcenter aitems bg-while'>
<View className='add_device_btn'>
<View className='txt_box flex jcenter aitems'>
<View
className="at-icon at-icon-add"
style="color: #fff;font-size: 30rpx;"
className='at-icon at-icon-add'
style='color: #fff;font-size: 30rpx;'
></View>
<View className="txt" onClick={this.addNewDevice}>
<View className='txt' onClick={this.addNewDevice}>
</View>
</View>
</View>
<View className="tips"></View>
<View className='tips'></View>
</View>
</Block>
)}
</View>
<View className="infobox3">
<View className='infobox3'>
<Swiper
autoplay
onAnimationFinish={this.bannerSwiperchange.bind(this)}
@ -1501,36 +1578,70 @@ class Index extends Component<any, any> {
key={"banner_" + index}
onClick={this.gobanner.bind(this, item)}
>
<Image style="width:100%;height:100%" src={item.fileUrl} />
<Image style='width:100%;height:100%' src={item.fileUrl} />
</SwiperItem>
);
})}
</Swiper>
</View>
<View style="height:200rpx"></View>
<Popup show={show} className="custom-popup" overlay={false}>
<View className="popBox"></View>
<View style='height:200rpx'></View>
<Popup show={show} className='custom-popup' overlay={false}>
<View className='popBox'></View>
</Popup>
<Popup show={false}>
<View className="MembraneCloth">
<View className="title"></View>
<View className="center">
<View className='MembraneCloth'>
<View className='title'></View>
<View className='center '>
{MembraneClothList.map((item, index) => {
return (
<View key={index} className="list">
<Radio name="1" v-model={this.state.checkedMembraneCloth}>
{item.name}
</Radio>
<View
key={index}
className='list flex aitems'
>
<View className='flex aitems'>
<Radio v-model={checkedMembraneCloth} />
<Image src={require('@/img/avater.png')}></Image>
<View className='name_box'>
<View className='name'>
{item.name}
</View>
<View className='subTitle'>
</View>
</View>
</View>
<View className='buy flex aitems'>
<Image src={require('@/img/index-right.png')}></Image>
</View>
</View>
);
})}
</View>
<View className="popbtnbox flex aitems jcenter">
<View className="btn1"></View>
<View className='popbtnbox flex aitems jcenter'>
<View className='btn1' >
</View>
</View>
</View>
</Popup>
<PopupWe
isShow={isModeLockWE}
title="电流定制"
textAlgin="center"
isClose={false}
close={this.handlepopup}
Page={WeCurrentPage}
WeCurrent={WeCurrent}
confirm={this.handlepopup}
handlepopupCheck={this.handlepopupCheck}
PreviousStep={this.PreviousStep}
NextStep={this.NextStep}
/>
{/* </PageMeta> */}
{/* <View
style="position:fixed;width:100vw;height:100vh"

@ -15,8 +15,15 @@ page {
font-weight: 400;
color: #666;
padding: 0 32rpx;
position: sticky;
position: sticky ;
z-index: 9;
width: 100%;
-webkit-user-select: none; /* Safari */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* IE/Edge */
user-select: none; /* 标准语法 */
-webkit-overflow-scrolling:none
}
.tab {
@ -64,6 +71,7 @@ page {
.instrument_list {
padding-bottom: 200rpx;
padding-top: 237rpx;
}
.products_list {

@ -536,11 +536,12 @@ export default class Recording extends Component<any, any> {
return (
<Block>
<Navbar isBack titleSlot="护理记录"></Navbar>
<View
className="tabs"
style={{
top: height + "rpx",
position: "sticky",
position: "fixed",
}}
>
<View
@ -573,7 +574,7 @@ export default class Recording extends Component<any, any> {
// scrollIntoView={"products_item_" + curIndex}
style={{
top: height + 110 + "rpx",
position: "sticky",
position: "fixed",
}}
>
<View>

Loading…
Cancel
Save