qsj 2 years ago
commit 8dad09f77d

@ -12,26 +12,18 @@ export default defineAppConfig({
"pages/userInfo/userInfo",
"pages/userInfoDetail/userInfoDetail",
"pages/register/register",
"pages/instrument/instrument",
"pages/instrument/intro",
"pages/instrument_manage/index",
"pages/instrument_detail/index",
"pages/instrumentClickinUpload/index",
"pages/privacyPolicy/privacyPolicy",
"pages/userPolicy/userPolicy",
"pages/about/about",
"pages/message/message",
"pages/consultant/consultant",
"pages/integral_list/integral_list",
"pages/recording/recording",
"pages/webViewPage/webViewPage",
'pages/template/template',
'pages/face_report/face_report',
'pages/face_report_one/face_report_one',
'pages/face_report_AllDevice/face_report_AllDevice',
"pages/template/template",
"pages/face_report/face_report",
"pages/face_report_AllDevice/face_report_AllDevice",
"pages/connection_help/connection_help",
"pages/errorpage/errorpage",
"pages/moisture_test_report/moisture_test_report",
],
tabBar: {
custom: true,
@ -88,5 +80,23 @@ export default defineAppConfig({
root: "moduleIOT",
pages: ["pages/iotCarePlan/WL200", "pages/iotCarePlan/FR200"],
},
{
root: "recoding",
pages: [
"pages/recording/recording",
"pages/face_report_one/face_report_one",
"pages/moisture_test_report/moisture_test_report",
],
},
{
root: "instrument",
pages: [
"pages/instrument/instrument",
"pages/instrument/intro",
"pages/instrument_manage/index",
"pages/instrument_detail/index",
"pages/instrumentClickinUpload/index",
],
},
],
});

@ -529,7 +529,7 @@ export default class Instrument extends Component<any, any> {
confirm={this.closeDev}
/> */}
<Navbar
titleSlot="仪器绑定"
titleSlot='仪器绑定'
isBack
isCustomBack
customBack={this.customBack}
@ -546,74 +546,74 @@ export default class Instrument extends Component<any, any> {
/>
<PopupAlert
isShow={isBindingError}
title="提示"
content="序列号库仍在更新,请联系微信助手"
confirmButtonText="知道了"
textAlgin="center"
title='提示'
content='序列号库仍在更新,请联系微信助手'
confirmButtonText='知道了'
textAlgin='center'
close={this.onBindErrorClose}
confirm={this.onBindErrorConfirm}
></PopupAlert>
<PopupAlert
isShow={isBindingError203}
title="提示"
content="序列码已被别人绑定,请联系微信助手"
confirmButtonText="知道了"
textAlgin="center"
title='提示'
content='序列码已被别人绑定,请联系微信助手'
confirmButtonText='知道了'
textAlgin='center'
close={this.onBindErrorClose203}
confirm={this.onBindErrorConfirm203}
></PopupAlert>
<PopupAlert
isShow={isBindingCheckError}
title="提示"
content="您选择的仪器有误,请重新选择确认"
confirmButtonText="知道了"
textAlgin="center"
title='提示'
content='您选择的仪器有误,请重新选择确认'
confirmButtonText='知道了'
textAlgin='center'
close={this.onBindCheckErrorClose}
confirm={this.onBindCheckErrorClose}
></PopupAlert>
</View>
<Canvas
style="position: fixed;left:-10000px;max-width: 1024px;max-height: 768px;"
id="compressImage"
canvasId="compressImage"
type="2d"
style='position: fixed;left:-10000px;max-width: 1024px;max-height: 768px;'
id='compressImage'
canvasId='compressImage'
type='2d'
></Canvas>
<View></View>
<View className="main">
<View className="top">
<View className="top_title"></View>
<View className="top_tips">
<View className='main'>
<View className='top'>
<View className='top_title'></View>
<View className='top_tips'>
</View>
<View className="top_tips"></View>
<View className='top_tips'></View>
</View>
<View className="banner_list">
<View className='banner_list'>
{inputType === 1 ? (
<Video
className="banner_item"
className='banner_item'
autoplay
loop
objectFit="cover"
objectFit='cover'
enablePlayGesture
showFullscreenBtn={false}
playBtnPosition="center"
playBtnPosition='center'
src={channelInfo.manualCodeBinding}
/>
) : (
<Image
className="banner_item"
className='banner_item'
src={channelInfo.scanCodeBinding}
mode="aspectFill"
mode='aspectFill'
></Image>
)}
</View>
<View className="form">
<View className="form_item is-instrument">
<View className="label_box">
<View className='form'>
<View className='form_item is-instrument'>
<View className='label_box'>
<View
className="label"
style="font-size: 32rpx; margin: 0 0 0rpx 2rpx"
className='label'
style='font-size: 32rpx; margin: 0 0 0rpx 2rpx'
>
<Text style={{ color: "#EB5858", marginLeft: "20rpx" }}>
@ -623,11 +623,11 @@ export default class Instrument extends Component<any, any> {
</View>
<ScrollView
scrollX={true}
className="instrument_list"
style="width: 100%; white-space: nowrap;"
scrollX
className='instrument_list'
style='width: 100%; white-space: nowrap;'
scrollIntoView={"scroll" + channelInfo.id}
scrollIntoViewAlignment={"center"}
scrollIntoViewAlignment='center'
>
{equipmentList.length > 0 &&
equipmentList.map((item, index) => {
@ -641,11 +641,11 @@ export default class Instrument extends Component<any, any> {
onClick={this.onSelectChange.bind(this, item)}
>
<Image
className="instrument_img"
className='instrument_img'
src={item.banner}
mode="aspectFill"
mode='aspectFill'
></Image>
<View className="desc">{item.name}</View>
<View className='desc'>{item.name}</View>
</View>
);
})}
@ -659,8 +659,8 @@ export default class Instrument extends Component<any, any> {
)}
</ScrollView>
</View>
<View className="form_item is-tab">
<View className="tab_list">
<View className='form_item is-tab'>
<View className='tab_list'>
<View
className={classnames("tab_item", {
"is-active": inputType === 1,
@ -668,7 +668,7 @@ export default class Instrument extends Component<any, any> {
onClick={this.onTabTap.bind(this, 1)}
>
<Text></Text>
<View className="tab_active_line"></View>
<View className='tab_active_line'></View>
</View>
{channelInfo.isScanCode === 1 && (
<View
@ -678,7 +678,7 @@ export default class Instrument extends Component<any, any> {
onClick={this.onTabTap.bind(this, 2)}
>
<Text></Text>
<View className="tab_active_line"></View>
<View className='tab_active_line'></View>
</View>
)}
</View>
@ -686,38 +686,38 @@ export default class Instrument extends Component<any, any> {
{inputType == 1 && (
<Block>
<View className="inputCode_box">
<View className="form_item is-inputCode">
<View className="label_box">
<View className="label">
<View className='inputCode_box'>
<View className='form_item is-inputCode'>
<View className='label_box'>
<View className='label'>
<Text style={{ color: "#EB5858", marginLeft: "20rpx" }}>
*
</Text>
</View>
<View className="label_text" onClick={this.onTipShow}>
<Text className="label-tips"></Text>
<View className='label_text' onClick={this.onTipShow}>
<Text className='label-tips'></Text>
<Image
className="right_icon"
src={require("../../img/index-right.png")}
mode="aspectFill"
className='right_icon'
src={require("@/img/index-right.png")}
mode='aspectFill'
/>
</View>
</View>
<View className="ipt_box">
<View className='ipt_box'>
<Input
maxlength={50}
className="ipt"
placeholder="例如FR10*********1"
className='ipt'
placeholder='例如FR10*********1'
placeholder-style={style}
onInput={this.onSerial}
value={channelInfo.serialCode}
></Input>
</View>
</View>
<View className="form_item">
<View className="label_box">
<View className="label">
<View className='form_item'>
<View className='label_box'>
<View className='label'>
<Text style={{ color: "#EB5858", marginLeft: "20rpx" }}>
*
@ -725,20 +725,20 @@ export default class Instrument extends Component<any, any> {
</View>
</View>
<View
className="photo_box"
className='photo_box'
onClick={this.onChangeImg.bind(this)}
>
{channelInfo.serialImage && (
<Image
src={channelInfo.serialImage}
mode="aspectFill"
mode='aspectFill'
></Image>
)}
{!channelInfo.serialImage && (
<Image
className="add"
src={require("../../img/welcome/add.png")}
mode="aspectFit"
className='add'
src={require("@/img/welcome/add.png")}
mode='aspectFit'
></Image>
)}
</View>
@ -748,10 +748,10 @@ export default class Instrument extends Component<any, any> {
)}
</View>
</View>
<View className="footer">
<View className='footer'>
{inputType == 1 && (
<View
className="btn"
className='btn'
onClick={throttle(this.onSubmit.bind(this), 300)}
>
@ -759,10 +759,10 @@ export default class Instrument extends Component<any, any> {
)}
{inputType == 2 && (
<View className="btn footer-btn-scan" onClick={this.onScanTap}>
<View className='btn footer-btn-scan' onClick={this.onScanTap}>
<Image
className="footer-btn-scan-img"
src={require("../../img/icon-scan.png")}
className='footer-btn-scan-img'
src={require("@/img/icon-scan.png")}
></Image>
</View>

@ -319,84 +319,84 @@ export default class InstrumentClickInUpload extends Component<any, any> {
} = this.state;
return (
<Block>
<Navbar titleSlot="打卡上传" isBack />
<Navbar titleSlot='打卡上传' isBack />
<Canvas
style="position: fixed;left:-10000px;"
id="compressImage"
canvasId="compressImage"
type="2d"
style='position: fixed;left:-10000px;'
id='compressImage'
canvasId='compressImage'
type='2d'
></Canvas>
<View catchMove>
<PopupAlert
isShow={isModeLock}
title="提示"
content="该模式即将上线,敬请期待"
confirmButtonText="我知道了"
textAlgin="center"
title='提示'
content='该模式即将上线,敬请期待'
confirmButtonText='我知道了'
textAlgin='center'
isClose={false}
close={this.onModeLockClose}
confirm={this.onModeLockClose}
/>
<PopupInstrumentUploadTips
isShow={isTipShow}
title="打卡介绍"
title='打卡介绍'
data={nurseInfo}
close={this.onTipShowClose}
confirm={this.onTipShowClose}
/>
</View>
<View className="infobox1 flex aitems jcenter">
<View className="img">
<View className='infobox1 flex aitems jcenter'>
<View className='img'>
<Video
src={currentInfo.modeVideo}
id="myVideo"
id='myVideo'
enableProgressGesture={false}
controls
// autoplay={false}
direction={0}
loop={false}
showMuteBtn
referrerPolicy="origin"
referrerPolicy='origin'
onTimeUpdate={this.videoBindTimeUpdate}
onEnded={this.videoEnded}
onPause={this.videoPause}
onPlay={this.videoPlay}
showCenterPlayBtn={false}
onLoadedMetaData={this.videoLoadedMetaData}
style="width: 100%; height: 100%;border-radius: 30rpx;"
style='width: 100%; height: 100%;border-radius: 30rpx;'
/>
{showVideoPlayBtn && (
<View className="video-cover">
<View className='video-cover'>
<Image
className="video-cover-icon"
src={require("../../img/fr200/play.png")}
className='video-cover-icon'
src={require("@/img/fr200/play.png")}
onClick={this.onPlayTap}
></Image>
{duration && (
<View className="video-cover-time">{duration}</View>
<View className='video-cover-time'>{duration}</View>
)}
</View>
)}
</View>
</View>
<View className="infobox3">
<View className='infobox3'>
<ScrollView
style="white-space: nowrap; height: 100%;"
style='white-space: nowrap; height: 100%;'
scroll-x
scroll-left={scrollleft}
>
{modeInfo.map((item, index) => {
return (
<View
className="info1"
className='info1'
onClick={this.bindMoshi.bind(this, index)}
key={index}
>
<View
className="flex aitems modebox"
className='flex aitems modebox'
style={{
height: "100%",
background:
@ -405,33 +405,33 @@ export default class InstrumentClickInUpload extends Component<any, any> {
: "",
}}
>
<View className="block1">
<View className="block1_1 flex aitems ">
<View className="tip1">{item.modeName}</View>
<View className="tip2">{item.modeDesc}</View>
<View className='block1'>
<View className='block1_1 flex aitems '>
<View className='tip1'>{item.modeName}</View>
<View className='tip2'>{item.modeDesc}</View>
{!item.lock && zkmoshiindex !== index && (
<View className="quan1"></View>
<View className='quan1'></View>
)}
{!item.lock && zkmoshiindex == index && (
<View className="quan1 is-select flex aitems jcenter">
<View className="quan2"></View>
<View className='quan1 is-select flex aitems jcenter'>
<View className='quan2'></View>
</View>
)}
{item.lock && (
<View className="icon">
<View className='icon'>
<Image
src={require("../../img/fr200/suo.png")}
mode="aspectFill"
src={require("@/img/fr200/suo.png")}
mode='aspectFill'
></Image>
</View>
)}
</View>
</View>
{item.modeBanner && index == zkmoshiindex && (
<View className="info1_img">
<Image src={item.modeBanner} mode="aspectFill" />
<View className='info1_img'>
<Image src={item.modeBanner} mode='aspectFill' />
</View>
)}
</View>
@ -441,32 +441,32 @@ export default class InstrumentClickInUpload extends Component<any, any> {
</ScrollView>
</View>
<View className="infobox2">
<View className="infobox2_info">
<View className="info4">
<View className="upload_header flex aitems sb">
<View className="upload_title"></View>
<View className="icon" onClick={this.onTipShowOpen}>
<View className='infobox2'>
<View className='infobox2_info'>
<View className='info4'>
<View className='upload_header flex aitems sb'>
<View className='upload_title'></View>
<View className='icon' onClick={this.onTipShowOpen}>
<Image
src={require("../../img/clock_in_upload/info.png")}
mode="aspectFill"
src={require("@/img/clock_in_upload/info.png")}
mode='aspectFill'
></Image>
</View>
</View>
<View className="imgbox flex aitems">
<View className='imgbox flex aitems'>
{punchInInfo.clockImageList.length > 0 &&
punchInInfo.clockImageList.map((item, index) => {
return (
<View className="img" key={"clickin_" + index}>
<View className='img' key={"clickin_" + index}>
<Image src={item}></Image>
<View
className="close flex aitems jcenter"
className='close flex aitems jcenter'
data-index={index}
onClick={this.handleDeleteImage}
>
<Image
src={require("../../img/fr200/close_white.png")}
mode="widthFix"
src={require("@/img/fr200/close_white.png")}
mode='widthFix'
></Image>
</View>
</View>
@ -475,23 +475,23 @@ export default class InstrumentClickInUpload extends Component<any, any> {
{punchInInfo.clockImageList.length < 3 && (
<View
className="img2 flex aitems jcenter"
className='img2 flex aitems jcenter'
onClick={this.handleChooseImage}
>
<Image
src={require("../../img/fr200/add-Image.png")}
mode="aspectFill"
src={require("@/img/fr200/add-Image.png")}
mode='aspectFill'
></Image>
</View>
)}
</View>
<View className="content">
<View className='content'>
<Textarea
placeholder-className="placeh和给g'holder"
maxlength={100}
onInput={this.handleTextareaInput}
value={punchInInfo.clockContent}
placeholder="请记录一下今天打卡的心得吧~"
placeholder='请记录一下今天打卡的心得吧~'
></Textarea>
{/* {tipshow && (
<View className="Textarea">
@ -500,7 +500,7 @@ export default class InstrumentClickInUpload extends Component<any, any> {
: "请记录一下今天打卡的心得吧~"}
</View>
)} */}
<View className="tips-num">
<View className='tips-num'>
{punchInInfo.clockContent.length}/100
{/* {punchInInfo.clockContent.length}/100 */}
</View>
@ -509,16 +509,16 @@ export default class InstrumentClickInUpload extends Component<any, any> {
</View>
</View>
<View style="height: 150rpx"></View>
<View style='height: 150rpx'></View>
{!isSubmit && (
<View className="confirm_btn flex aitems" onClick={this.handleSubmit}>
<View className="btn"></View>
<View className='confirm_btn flex aitems' onClick={this.handleSubmit}>
<View className='btn'></View>
</View>
)}
{isSubmit && (
<View className="confirm_btn flex aitems">
<View className="btn"></View>
<View className='confirm_btn flex aitems'>
<View className='btn'></View>
</View>
)}
</Block>

@ -5,7 +5,7 @@ import dayjs from "dayjs";
import { Component, PropsWithChildren, useEffect, useState } from "react";
import { Block, View, Text, Image, Input, Button } from "@tarojs/components";
import Navbar from "../../components/navbar/navbar";
import Navbar from "../../../components/navbar/navbar";
import "./index.less";
import { getStorageSync } from "@/utils/traoAPI";

@ -15,10 +15,10 @@ import {
} from "@tarojs/components";
import "./index.less";
import Navbar from "../../components/navbar/navbar";
import Navbar from "../../../components/navbar/navbar";
import { InstrumentInfo } from "../../utils/Interface";
import { go, msg, setStorageSync } from "../../utils/traoAPI";
import { InstrumentInfo } from "../../../utils/Interface";
import { go, msg, setStorageSync } from "../../../utils/traoAPI";
export default class InstrumentManage extends Component<any, any> {
constructor(props) {
@ -177,7 +177,7 @@ export default class InstrumentManage extends Component<any, any> {
<View className="tips"></View>
<View className="right">
<Image
src={require("../../img/index/right.png")}
src={require("@/img/index/right.png")}
mode="widthFix"
style="height: 20rpx;"
/>
@ -229,7 +229,7 @@ export default class InstrumentManage extends Component<any, any> {
<View className="tips"></View>
<View className="right">
<Image
src={require("../../img/index/right.png")}
src={require("@/img/index/right.png")}
mode="widthFix"
style="height: 20rpx;"
/>

@ -7,7 +7,6 @@
padding: 35rpx 25rpx 25rpx 35rpx;
box-sizing: border-box;
position: relative;
z-index: 0;
}
.box_background {
position: absolute;
@ -40,7 +39,7 @@
position: relative;
height: 18rpx;
.bottom_line {
border-bottom: 1rpx #ccc dashed;
// border-bottom: 1rpx #ccc dashed;
width: 550rpx;
margin-left: 20rpx;
position: absolute;

@ -15,36 +15,6 @@ interface Props {
}
function Index() {
const stepIndex = 0;
const testIndex = 1;
const stepList = [
{
value: "Step1",
name: "额头",
finish: false,
},
{
value: "Step2",
name: "左脸颊",
finish: false,
},
{
value: "Step3",
name: "右脸颊",
finish: false,
},
];
const gearLevel = {
currentGear: null,
//现在工作的档位
currentGearMode: "forehead",
//现在工作模式
forehead: 5,
leftCheek: 5,
rightCheek: 5,
};
const echartsRef = useRef<EchartsHandle>(null);
const option: EChartOption = {
@ -55,10 +25,6 @@ function Index() {
right: "28rpx",
bottom: "17rpx",
},
legend: {
show: false,
zlevel: -1,
},
xAxis: {
// name: '',
// nameGap: 5,
@ -101,7 +67,7 @@ function Index() {
max: 8,
splitNumber: 8,
splitLine: {
show: false,
show: true,
lineStyle: {
color: "#cccccc",
type: [4, 2],
@ -296,7 +262,7 @@ function Index() {
ref={echartsRef}
// isPage={false}
// style自定义设置echarts宽高
style={{ width: "630rpx", height: "260rpx" }}
style={{ width: "630rpx", height: "260rpx", zIndex: 1 }}
/>
<View className='box_background'>
<Image className='full' src={require("@/img/full-scran.png")}></Image>
@ -304,7 +270,7 @@ function Index() {
{level.map((item) => (
<View className='line' key={item}>
<View className='number'>{item}</View>
<View className='bottom_line'>8</View>
<View className='bottom_line'></View>
</View>
))}
<View className='line'>

@ -420,7 +420,7 @@ class Index extends Component<any, any> {
};
GetSiteAddTag = async (id) => {
go("/pages/moisture_test_report/moisture_test_report");
go("/recoding/pages/moisture_test_report/moisture_test_report")
let res = await GetSiteAddTag(id);
if (res.data.code === 200) {
console.log("点击自动上报,不需要逻辑处理");
@ -485,7 +485,7 @@ class Index extends Component<any, any> {
toNursingRecords = () => {
let { ViewAddInstrument } = this.state;
// go(`/pages/recording/recording?param1=${param1Value}`);
go(`/pages/recording/recording?param=${ViewAddInstrument}`);
go(`/recoding/pages/recording/recording?param=${ViewAddInstrument}`);
};
gourl = async (e) => {

@ -189,7 +189,7 @@ class Initiate extends Component<any, any> {
<View className="middle">
<Image
className="logo_middle"
src={require("../../img/welcome/top-logo.png")}
src={require("@/img/welcome/top-logo.png")}
mode="aspectFill"
></Image>
<View className="title"></View>

@ -1,21 +1,24 @@
import Taro from "@tarojs/taro";
import classnames from "classnames";
import { Component, PropsWithChildren, useEffect, useState } from "react";
import { Progress } from "@antmjs/vantui";
import { showModal } from "../../utils/traoAPI";
import { Tab, Tabs, Dialog, Popup } from "@antmjs/vantui";
import { Progress , Tab, Tabs, Dialog, Popup } from "@antmjs/vantui";
import { showModal } from "@/utils/traoAPI";
import {
Block, View, Text, Image, Input, Button, Textarea,
} from "@tarojs/components";
import { date, getdates, previewImage } from "../../utils/util";
import { date, getdates, previewImage } from "@/utils/util";
/** 自定义组件 **/
import Navbar from "../../components/navbar/navbar";
import PopupAlert from "../../components/popup/popup-alert";
import { InstrumentInfo } from "../../utils/Interface";
import Navbar from "@/components/navbar/navbar";
import PopupAlert from "@/components/popup/popup-alert";
import { InstrumentInfo } from "@/utils/Interface";
// 引入ecahrts图表
import EchartsForm from '../../moduleIOT/pages/iotCarePlan/components/Echart_face'
// import EchartsForm from '@/moduleIOT/pages/iotCarePlan/components/Echart_face'
import EchartsForm from '../../../moduleIOT/pages/iotCarePlan/components/Echart_face'
/** 自定义组件 **/
import "./face_report_one.less";
@ -29,7 +32,7 @@ export default class Index extends Component<any, any> {
statistics: {},
recordList: [],
recordData: {
modeImage:require("@/img/face-report/face.png")
modeImage: require("@/img/face-report/face.png")
},
year: new Date().getFullYear(),
show: false,
@ -285,45 +288,45 @@ export default class Index extends Component<any, any> {
let { name, statistics, recordList, recordData, show, clockStatistics, punchInInfo, monthTime, reportShow, face_Tyep } = this.state;
return (
<Block>
<Navbar isBack titleSlot="护理报告"></Navbar>
<View className="statistic m-x-30 flex aitems">
<View className="statistic_item">
<View className="statistic_title">
<Navbar isBack titleSlot='护理报告'></Navbar>
<View className='statistic m-x-30 flex aitems'>
<View className='statistic_item'>
<View className='statistic_title'>
<text>{statistics.nursingNum}</text>
<text className="num"></text>
<text className='num'></text>
</View>
<View className="statistic_desc"></View>
<View className='statistic_desc'></View>
</View>
<View className="statistic_item">
<View className="statistic_title">{statistics.nursingTime}</View>
<View className="statistic_desc"></View>
<View className='statistic_item'>
<View className='statistic_title'>{statistics.nursingTime}</View>
<View className='statistic_desc'></View>
</View>
{/* </block> */}
</View>
<View className="main m-x-30">
<View className="products_item" style="border: none">
<View className='main m-x-30'>
<View className='products_item' style='border: none'>
<View className="products_middle flex">
<View className="left">
<View className='products_middle flex'>
<View className='left'>
<Image
className="cover"
className='cover'
src={recordData.modeImage}
mode="aspectFill"
mode='aspectFill'
></Image>
<View className="face_type">{face_Tyep}</View>
<View className='face_type'>{face_Tyep}</View>
</View>
<View className="content">
<View className="content_top">
<View className='content'>
<View className='content_top'>
<View className="desc_box">
<View className="desc">{recordData.modeName}</View>
<View className="desc">
<View className='desc_box'>
<View className='desc'>{recordData.modeName}</View>
<View className='desc'>
{recordData.nursingTime}
</View>
<View className="desc">
<View className='desc'>
{recordData.nursingTime}
</View>
<View className="desc">
<View className='desc'>
{recordData.nursingTime}
</View>
</View>
@ -332,93 +335,93 @@ export default class Index extends Component<any, any> {
</View>
</View>
</View>
<View className="main_title">-{face_Tyep}</View>
<View className="eacharts">
<EchartsForm></EchartsForm>
<View className='main_title'>-{face_Tyep}</View>
<View className='eacharts'>
<EchartsForm></EchartsForm>
</View>
</View>
<View className="bottom-title">
<View className="text-title">[1] :1,使11
<View className='bottom-title'>
<View className='text-title'>[1] :1,使11
</View>
<View className="text-title">[2]: 使</View>
<View className="text-title">[3]:使<br /></View>
<View className="text-title">[4]:<br /></View>
<View className="text-title">
[5]:</View>
<View className='text-title'>[2]: 使</View>
<View className='text-title'>[3]:使<br /></View>
<View className='text-title'>[4]:<br /></View>
<View className='text-title'>
[5]:</View>
</View>
{reportShow ? (
<View className="footer flex aitems">
<View className="btn" onClick={this.setShow.bind(this, true)}></View>
<View className="text flex aitems">
<View className='footer flex aitems'>
<View className='btn' onClick={this.setShow.bind(this, true)}></View>
<View className='text flex aitems'>
<View onClick={this.GoIndex}></View>
<Image
src={require("../../img/right.png")}
mode="aspectFill"
src={require("@/img/right.png")}
mode='aspectFill'
></Image>
</View>
</View>
) : null}
<Popup show={show} onClose={() => this.setState({ show: false })}>
<View className="popBox">
<View className='popBox'>
<Image
className="close_icon"
src={require("../../img/close.png")}
mode="widthFix"
className='close_icon'
src={require("@/img/close.png")}
mode='widthFix'
onClick={this.setShow.bind(this, false)}
></Image>
<View className="popTitle"></View>
<View className="popSubtitle">
<View className='popTitle'></View>
<View className='popSubtitle'>
<View className="bold">{clockStatistics[0]?.clockNum}</View>{" "}
<View className='bold'>{clockStatistics[0]?.clockNum}</View>{" "}
<View className="bold">
<View className='bold'>
{(clockStatistics[0]?.percentage * 100).toFixed(1)}%
</View>
</View>
<View className="img_box">
<View className='img_box'>
{punchInInfo.clockImageList.map((item, index) => (
<View key={item} className="img">
<Image className="showImg" src={item} mode="widthFix"></Image>
<View key={item} className='img'>
<Image className='showImg' src={item} mode='widthFix'></Image>
<Image
className="closeImg"
src={require("../../img/close1.png")}
mode="widthFix"
className='closeImg'
src={require("@/img/close1.png")}
mode='widthFix'
onClick={this.delImg.bind(this, index)}
></Image>
</View>
))}
{punchInInfo.clockImageList.length < 3 && (
<View
className="addBox"
className='addBox'
onClick={this.handleChooseImage.bind(this)}
>
<Image
className="showImg"
src={require("../../img/clock_in_upload/add-image.png")}
mode="widthFix"
className='showImg'
src={require("@/img/clock_in_upload/add-image.png")}
mode='widthFix'
></Image>
</View>
)}
</View>
<View className="info4">
<View className="content">
<View className='info4'>
<View className='content'>
<Textarea
placeholderStyle="color: #ccc; font-size: 26rpx;font-weight: 400;font-family: PingFang SC;"
placeholder="请记录一下今天的护理心得吧"
placeholderStyle='color: #ccc; font-size: 26rpx;font-weight: 400;font-family: PingFang SC;'
placeholder='请记录一下今天的护理心得吧'
maxlength={120}
onInput={this.handleTextareaInput.bind(this)}
value={punchInInfo.clockContent}
></Textarea>
</View>
<View className="tip">
<View className='tip'>
{"" + (punchInInfo.clockContent.length || 0) + "/120"}
</View>
</View>
<View className="popbtnbox flex aitems jcenter">
<View className="btn1" onClick={this.submit.bind(this)}>
<View className='popbtnbox flex aitems jcenter'>
<View className='btn1' onClick={this.submit.bind(this)}>
</View>
</View>

@ -0,0 +1,100 @@
import Taro from "@tarojs/taro";
import classnames from "classnames";
import { Block, View, Image, Text, Input } from "@tarojs/components";
import { Popup, Progress, Slider } from "@antmjs/vantui";
import { useRef } from "react";
import Echarts, { EChartOption, EchartsHandle } from "taro-react-echarts";
import echarts from "@/utils/echarts.min.js";
import "./index.less";
interface Props {
Electricity: any;
matrixElectricity: any;
facialMaskConnectStatus: any;
}
function Index() {
const echartsRef = useRef<EchartsHandle>(null);
const option: EChartOption = {
grid: {
// 让图表占满容器
top: "28rpx",
left: "30rpx",
right: "35rpx",
bottom: "38rpx",
},
title: {
left: 'center',
},
xAxis: {
type: 'category',
boundaryGap: false,
splitLine: {
show: true,
},
data: ['6.17', '6.18', '6.19', '6.20', '6.21', '6.22', '6.23'],
axisTick: {
show: false
},
axisLine: {
lineStyle: {
color: '#ccc'
}
},
axisLabel: {
fontSize: 9
}
},
yAxis: {
type: 'value',
show: false
},
series: [
{
type: 'line',
itemStyle: {
color: 'rgb(168, 222, 244)'
},
symbolSize: 0,
label: {
show: true,
distance: 8,
formatter: function (params) {
return params.value + '级';
}
},
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: 'rgb(220, 240, 248)'
},
{
offset: 1,
color: 'rgb(248, 253, 255)'
}
])
},
data: [5, 3, 4, 6, 3, 4, 3],
}
]
};
return (
<Block>
<View className='box'>
<Echarts
echarts={echarts}
option={option}
ref={echartsRef}
// isPage={false}
// style自定义设置echarts宽高
style={{ width: "100%", height: "260rpx" }}
/>
</View>
</Block>
);
}
export default Index;

@ -7,8 +7,9 @@ page {
}
.moisture_test_report .time {
font-family: Poppins, Poppins;
font-size: 36rpx;
font-weight: 500;
font-weight: 700;
color: #000000;
line-height: 1;
padding: 38rpx 0;
@ -245,7 +246,7 @@ page {
.report_chart {
width: 100%;
height: 500rpx;
height: 328rpx;
background: #FFFFFF;
border-radius: 30rpx;
margin: 20rpx 0;

@ -7,11 +7,10 @@ import Taro from "@tarojs/taro";
/*** redux ***/
import { connect } from "react-redux";
import { setMobile } from "../../store/features/userInfo";
import { setMobile } from "@/store/features/userInfo";
/*** redux end ***/
import { WCUserLogin } from "../../utils/Interface";
import Navbar from "@/components/navbar/navbar";
import Echarts from "./Echarts/index";
import "./moisture_test_report.less";
class MoistureTestReport extends Component<any, any> {
@ -49,7 +48,7 @@ class MoistureTestReport extends Component<any, any> {
};
}
async onLoad() { }
componentDidMount() { }
componentWillUnmount() { }
@ -58,6 +57,9 @@ class MoistureTestReport extends Component<any, any> {
componentDidHide() { }
async onLoad() {
}
async initData() { }
getStatusData(level) {
@ -121,16 +123,18 @@ class MoistureTestReport extends Component<any, any> {
render() {
let { name, imgUrl, reportData, bgCssData, isClock, xinde, imglist, id, show } = this.state
return (
<Block>
<View className='moisture_test_report'>
<View className='time'>{reportData.curDate || ''}</View>
<Navbar isBack titleSlot='水分测试报告'></Navbar>
<View className='moisture_test_report'>
<View className='time'>2023.6.23</View>
<View className='report_data'>
<View className='forehead moisture_block flex' style='{util.getStatusData(reportData.shuifenLevel.head).bg}'>
<View className='forehead moisture_block flex' style={this.getStatusData(reportData.shuifenLevel.head).bg}>
<Image className='moisture_img' src={`/img/fr200/${this.getStatusData(reportData.shuifenLevel.head)}.img}.png`} mode='aspectFill'></Image>
<View className='pos_info'>
<View className='top'></View>
{/* <View className='bottom'>{this.getStatusData(7).title}</View> */}
<View className='bottom'>{this.getStatusData(7).title}</View>
<View className='bottom'></View>
</View>
@ -217,7 +221,7 @@ class MoistureTestReport extends Component<any, any> {
<View className='report_chart'>
<View className='chart_title common_title'></View>
<View className='container'>
{/* <ec-canvas id='mychart' style='width: 100%;height: 100%' canvas-id='mychart-line' ec='{ ec }'></ec-canvas> */}
<Echarts></Echarts>
</View>
</View>

@ -0,0 +1,112 @@
// 获取当前连接状态Text
var getConnectionStatusTitle = function (isError, isConnection, deviceType, isStand) {
if (isError) {
return '蓝牙连接失败'
}
if (!isConnection) return '蓝牙连接指引'
// 1: FR200 2: MATRIX 3: WL200 4: FR380 5: FR390 6: M01
switch (deviceType) {
case 1:
case 2:
case 4:
case 5:
case 6:
return '蓝牙连接中'
case 3:
return isStand ? '支架模式启动中' : '面罩模式启动中'
default:
return '蓝牙已连接'
}
}
var getHttpsUrl = function (url) {
if (!url) return;
if ((url.indexOf('http') || url.indexOf('https')) > -1) {
return url;
}
return 'https://oss.flossom.com' + url;
}
var getStatusData = function (level) {
var bgCssData = {
serious: 'background: #FFE3E3',
moderate: 'background: #FFEBDC',
slight: 'background: #F6FCFF',
normal: 'background: #F8F8F8',
sufficient: 'background: #F8F8F8'
}
var progressBgData = {
serious: 'background: #FF9393',
moderate: 'background: #FFC58C',
slight: 'background: #E5F3F9',
normal: 'background: #C2E5F3',
sufficient: 'background: #9FDBF3'
}
if (level >= 1 && level <= 2) {
return {
bg: bgCssData.serious,
title: '严重缺水',
gear: 1,
img: 'serious',
progressBg: progressBgData.serious
}
} else if (level >= 3 && level <= 4) {
return {
bg: bgCssData.moderate,
title: '中度缺水',
gear: 2,
img: 'moderate',
progressBg: progressBgData.moderate
}
} else if (level >= 5 && level <= 6) {
return {
bg: bgCssData.slight,
title: '轻微缺水',
gear: 3,
img: 'slight',
progressBg: progressBgData.slight
}
} else if (level >= 7 && level <= 8) {
return {
bg: bgCssData.normal,
title: '水分正常',
gear: 4,
img: 'normal',
progressBg: progressBgData.normal
}
} else if (level >= 9 && level <= 10) {
return {
bg: bgCssData.sufficient,
title: '水分充足',
gear: 5,
img: 'sufficient',
progressBg: progressBgData.sufficient
}
}
}
var formatDuration = function (string) {
return string.slice(0, 2) + '分' + string.slice(-2) + '秒'
}
var formatEnergy = function (string, type) {
if (!string) return;
var minutes = parseInt(string.slice(0, 2));
var seconds = parseInt(string.slice(-2));
var energy = minutes * 60 + seconds
if (type === 'face') {
return energy >= 360 ? 360 : energy
}
if (type === 'eye') {
return energy >= 240 ? 240 : energy
}
return energy >= 600 ? 600 : energy
}
module.exports = {
getConnectionStatusTitle,
getStatusData,
getHttpsUrl,
formatDuration,
formatEnergy
}

@ -17,12 +17,12 @@ import { go } from "@/utils/traoAPI";
import { Tab, Tabs, Dialog, Popup } from "@antmjs/vantui";
/** 自定义组件 **/
import Navbar from "../../components/navbar/navbar";
import PopupClock from "../../components/popup/popup-clock";
import Navbar from "@/components/navbar/navbar";
import PopupClock from "@/components/popup/popup-clock";
/** 自定义组件 **/
import { InstrumentInfo } from "../../utils/Interface";
import { date, getdates, previewImage } from "../../utils/util";
import { showModal } from "../../utils/traoAPI.js";
import { InstrumentInfo } from "@/utils/Interface";
import { date, getdates, previewImage } from "@/utils/util";
import { showModal } from "@/utils/traoAPI.js";
import "./recording.less";
@ -294,16 +294,16 @@ export default class Recording extends Component<any, any> {
};
// 跳转到护理报告
toReport(id, recordId, item) {
console.log(item, '查看类型', item.jumpType );
item.jumpType =1
switch (item.jumpType ) {
console.log(item, '查看类型', item.jumpType);
item.jumpType = 1
switch (item.jumpType) {
case 1:
this.One(item);
break;
case 2:
this.two(item); break;
case 3:
case 3:
this.three(item); break;
default:
@ -315,19 +315,19 @@ export default class Recording extends Component<any, any> {
// 打开第一种类型
One = async (item) => {
console.log('打开第一种类型', item);
let report =false
go("/pages/face_report_one/face_report_one?id=" + item.id + "&recordId=" + item.recordId+ "&report=" + report );
let report = false
go("/recoding/pages/face_report_one/face_report_one?id=" + item.id + "&recordId=" + item.recordId + "&report=" + report);
}
// 打开第二种类型
// 打开第二种类型
two = async (item) => {
console.log('打开第二种类型', item);
}
// 打开第二种类型
three = async (item) => {
console.log('打开第二种类型', item);
}
// 打开第二种类型
three = async (item) => {
console.log('打开第二种类型', item);
}
// 打开其他类型
AllDevice = async (item) => {
console.log('打开其他类型', item);
@ -427,8 +427,8 @@ export default class Recording extends Component<any, any> {
return (
<Block>
<Navbar isBack titleSlot="护理记录"></Navbar>
<View className="tabs">
<Navbar isBack titleSlot='护理记录'></Navbar>
<View className='tabs'>
<View
className={classnames("tab", {
tab_active: current === 0,
@ -449,7 +449,7 @@ export default class Recording extends Component<any, any> {
</View>
</View>
{current === 0 && (
<ScrollView className="products_list" scroll-x="true">
<ScrollView className='products_list' scroll-x='true'>
<View
className={classnames("all", {
products_item_active: !curIndex,
@ -467,11 +467,11 @@ export default class Recording extends Component<any, any> {
onClick={this.onChangeProduct.bind(this, item.id)}
>
<Image
className="products_cover"
src={require("../../img/test/1706692819894.jpg")}
mode="aspectFit"
className='products_cover'
src={require("@/img/test/1706692819894.jpg")}
mode='aspectFit'
></Image>
<View className="products_title"></View>
<View className='products_title'></View>
</View>
))}
</ScrollView>
@ -479,17 +479,17 @@ export default class Recording extends Component<any, any> {
{current === 0 && recordList.length === 0 && (
<View>
<View className="nodata">
<View className='nodata'>
<Image
className="nodata_img"
src={require("../../img/nodata.png")}
className='nodata_img'
src={require("@/img/nodata.png")}
></Image>
<View className="nodata_text"></View>
<View className='nodata_text'></View>
</View>
</View>
)}
{current === 0 && (
<View style="padding-bottom:200px">
<View style='padding-bottom:200px'>
{/* <View className='instrument_item' >
<View className='instrument_top flex sb aitems'>
<View className='time_box flex aitems'>
@ -516,12 +516,12 @@ export default class Recording extends Component<any, any> {
</View>
</View> */}
<View className="instrument_list ">
<View className='instrument_list '>
{recordList.map((item: any, index: any) => (
<View className="recording-box" key={item.id}>
<View className="box-top">
<View className="top-left">
<View className="date">{item.createTime}</View>
<View className='recording-box' key={item.id}>
<View className='box-top'>
<View className='top-left'>
<View className='date'>{item.createTime}</View>
<View
className={classnames("tip", {
tag_active: item.online === 2,
@ -532,7 +532,7 @@ export default class Recording extends Component<any, any> {
</View>
{item.instrumentType === 2 && (
<View
className="top-right"
className='top-right'
onClick={this.toReport.bind(
this,
item.instrumentId,
@ -542,23 +542,23 @@ export default class Recording extends Component<any, any> {
>
<Image
className="arrow_icon"
src={require("../../img/index/right.png")}
mode="aspectFill"
className='arrow_icon'
src={require("@/img/index/right.png")}
mode='aspectFill'
></Image>
</View>
)}
</View>
<View className="box-bottom">
<View className='box-bottom'>
<Image
className="recording_img"
className='recording_img'
src={item.modeImage}
></Image>
<View className="bottom-right">
<View className="title">{item.instrumentName}</View>
<View className="subtitle-box">
<View className="subtitle">{item.modeName}</View>
<View className="subtitle">
<View className='bottom-right'>
<View className='title'>{item.instrumentName}</View>
<View className='subtitle-box'>
<View className='subtitle'>{item.modeName}</View>
<View className='subtitle'>
{item.nursingTime}
</View>
</View>
@ -570,7 +570,7 @@ export default class Recording extends Component<any, any> {
</View>
)}
{current === 1 && (
<View style="padding-bottom:200px">
<View style='padding-bottom:200px'>
{/* <View className='nodata'>
<Image
className='nodata_img'
@ -578,52 +578,52 @@ export default class Recording extends Component<any, any> {
></Image>
<View className='nodata_text'></View>
</View> */}
<View style="height: 30rpx; background: #F8F8F8"></View>
<View className="clock_in_statistics m-x-30 flex sb">
<View className="flex sb ab">
<View className="clock_in_statistics_title"></View>
<View style='height: 30rpx; background: #F8F8F8'></View>
<View className='clock_in_statistics m-x-30 flex sb'>
<View className='flex sb ab'>
<View className='clock_in_statistics_title'></View>
<Picker
mode="date"
fields="year"
mode='date'
fields='year'
onChange={this.onChangeYear.bind(this)}
value="{{year}}"
end="{{today}}"
value='{{year}}'
end='{{today}}'
>
<View className="clock_in_statistics_date flex aitems">
<View className='clock_in_statistics_date flex aitems'>
<View>{year}</View>
<Image
className="more_icon"
src={require("../../img/arrow-down.png")}
mode="widthFix"
className='more_icon'
src={require("@/img/arrow-down.png")}
mode='widthFix'
></Image>
</View>
</Picker>
</View>
<View className="chart flex sb">
<View className='chart flex sb'>
{monthTime.map((item) => (
<View className="flex fc aitems" key={item.month}>
<View className='flex fc aitems' key={item.month}>
{item.time > 0 && (
<View className="buoy">{item.time}</View>
<View className='buoy'>{item.time}</View>
)}
<View
className="column"
className='column'
style={{ height: `calc(186/31*${item.time}rpx)` }}
></View>
<View className="month">{item.month}</View>
<View className='month'>{item.month}</View>
</View>
))}
</View>
</View>
<View style="padding-bottom: env(safe-area-inset-bottom)">
<View className="month_box m-x-30">
<View style='padding-bottom: env(safe-area-inset-bottom)'>
<View className='month_box m-x-30'>
{clockStatistics.map((item) => (
<View className="month_statistics" key={item.id}>
<View className="flex aitems sb">
<View className="time">
<View className='month_statistics' key={item.id}>
<View className='flex aitems sb'>
<View className='time'>
{item.year}{item.month}
</View>
<View
className="more_box flex aitems"
className='more_box flex aitems'
onClick={this.onChangeMore.bind(
this,
item.id,
@ -631,7 +631,7 @@ export default class Recording extends Component<any, any> {
item.month
)}
>
<View className="more_text">
<View className='more_text'>
{" "}
{!item.isMore ? "展开更多" : "收起更多"}
</View>
@ -641,49 +641,49 @@ export default class Recording extends Component<any, any> {
? "rotate(180deg)"
: "rotate(0deg)",
}}
className="more_icon"
src={require("../../img/arrow-down.png")}
mode="widthFix"
className='more_icon'
src={require("@/img/arrow-down.png")}
mode='widthFix'
></Image>
</View>
</View>
<View style="height: 59rpx"></View>
<View className="statistic">
<View className="statistic_item">
<View className="statistic_num">{item.clockNum}</View>
<View className="statistic_desc"></View>
<View style='height: 59rpx'></View>
<View className='statistic'>
<View className='statistic_item'>
<View className='statistic_num'>{item.clockNum}</View>
<View className='statistic_desc'></View>
</View>
<View className="statistic_item">
<View className="statistic_num">
<View className='statistic_item'>
<View className='statistic_num'>
{(item.percentage * 100).toFixed(2)}%
</View>
<View className="statistic_desc"></View>
<View className='statistic_desc'></View>
</View>
<View className="border"></View>
<View className='border'></View>
</View>
{item.isMore && item.detail && (
<View>
{item.detail.map((obj) => (
<View key={obj}>
<View style="height: 57rpx"></View>
<View className="month_item">
<View className="month_item_date">
<View style='height: 57rpx'></View>
<View className='month_item'>
<View className='month_item_date'>
{obj.updateTime}
</View>
<View className="month_image_box flex sb">
<View className='month_image_box flex sb'>
{obj.clockImg.map((img) => (
<Image
key={img}
className="month_item_cover"
className='month_item_cover'
src={img}
></Image>
))}
</View>
<View className="month_item_date">
<View className='month_item_date'>
{/* 小紫弹智能射频仪、花至抗老射频仪PRO{" "} */}
{obj.instrumentName === null ? "" : obj.instrumentName}
</View>
<View className="month_item_note">
<View className='month_item_note'>
{obj.clockContent}
</View>
</View>
@ -699,8 +699,8 @@ export default class Recording extends Component<any, any> {
)}
{
!clockShow && ViewAddInstrument === "true" && (
<View className="footer flex aitems">
<View className="btn" onClick={this.setShow.bind(this, true)}>
<View className='footer flex aitems'>
<View className='btn' onClick={this.setShow.bind(this, true)}>
</View>
{/* <View className="text" onClick={this.back}>
@ -711,65 +711,65 @@ export default class Recording extends Component<any, any> {
}
<Popup show={show} onClose={() => this.setState({ show: false })}>
<View className="popBox">
<View className='popBox'>
<Image
className="close_icon"
src={require("../../img/close.png")}
mode="widthFix"
className='close_icon'
src={require("@/img/close.png")}
mode='widthFix'
onClick={this.setShow.bind(this, false)}
></Image>
<View className="popTitle"></View>
<View className="popSubtitle">
<View className='popTitle'></View>
<View className='popSubtitle'>
<View className="bold">{clockStatistics[0]?.clockNum}</View>{" "}
<View className='bold'>{clockStatistics[0]?.clockNum}</View>{" "}
<View className="bold">
<View className='bold'>
{(clockStatistics[0]?.percentage * 100).toFixed(1)}%
</View>
</View>
<View className="img_box">
<View className='img_box'>
{punchInInfo.clockImageList.map((item, index) => (
<View key={item} className="img">
<Image className="showImg" src={item} mode="widthFix"></Image>
<View key={item} className='img'>
<Image className='showImg' src={item} mode='widthFix'></Image>
<Image
className="closeImg"
src={require("../../img/close1.png")}
mode="widthFix"
className='closeImg'
src={require("@/img/close1.png")}
mode='widthFix'
onClick={this.delImg.bind(this, index)}
></Image>
</View>
))}
{punchInInfo.clockImageList.length < 3 && (
<View
className="addBox"
className='addBox'
onClick={this.handleChooseImage.bind(this)}
>
<Image
className="showImg"
src={require("../../img/clock_in_upload/add-image.png")}
mode="widthFix"
className='showImg'
src={require("@/img/clock_in_upload/add-image.png")}
mode='widthFix'
></Image>
</View>
)}
</View>
<View className="info4">
<View className="content">
<View className='info4'>
<View className='content'>
<Textarea
placeholderStyle="color: #ccc; font-size: 26rpx;font-weight: 400;font-family: PingFang SC;"
placeholder="请记录一下今天的护理心得吧"
placeholderStyle='color: #ccc; font-size: 26rpx;font-weight: 400;font-family: PingFang SC;'
placeholder='请记录一下今天的护理心得吧'
maxlength={120}
onInput={this.handleTextareaInput.bind(this)}
value={punchInInfo.clockContent}
></Textarea>
</View>
<View className="tip">
<View className='tip'>
{"" + (punchInInfo.clockContent.length || 0) + "/120"}
</View>
</View>
<View className="popbtnbox flex aitems jcenter">
<View className="btn1" onClick={this.submit.bind(this)}>
<View className='popbtnbox flex aitems jcenter'>
<View className='btn1' onClick={this.submit.bind(this)}>
</View>
</View>
Loading…
Cancel
Save