Browse Source

STM32智能AI家居系统接口对接

znjjxt
lzp 3 months ago
parent
commit
ca1f535f66
  1. 3
      App.vue
  2. 103
      common/api.js
  3. 4
      common/config.js
  4. 11
      manifest.json
  5. 23
      pages.json
  6. 831
      pages/healthService/healthService6.vue
  7. BIN
      pages/index/CO2.png
  8. 102
      pages/index/details.vue
  9. BIN
      pages/index/gzqd.png
  10. 818
      pages/index/index.vue
  11. BIN
      pages/index/sd.png
  12. BIN
      pages/index/sfyr.png
  13. BIN
      pages/index/sgbj.png
  14. BIN
      pages/index/tvoc-copy.png
  15. BIN
      pages/index/wd.png
  16. BIN
      pages/index/ywnd.png
  17. BIN
      pages/index/zhenliao_n@1x.png
  18. BIN
      unpackage/cache/apk/__UNI__FBDBEC9_cm.apk
  19. 2
      unpackage/cache/apk/apkurl
  20. 2
      unpackage/cache/apk/cmManifestCache.json
  21. 6
      unpackage/cache/wgt/__UNI__FBDBEC9/app-service.js
  22. 2
      unpackage/cache/wgt/__UNI__FBDBEC9/app-view.js
  23. BIN
      unpackage/cache/wgt/__UNI__FBDBEC9/assets/xyj.eb2ea444.png
  24. BIN
      unpackage/cache/wgt/__UNI__FBDBEC9/assets/xyj1.eec3d849.png
  25. 2
      unpackage/cache/wgt/__UNI__FBDBEC9/manifest.json
  26. 0
      unpackage/dist/build/.automator/h5/.automator.json
  27. 6
      unpackage/dist/build/app-plus/app-service.js
  28. 2
      unpackage/dist/build/app-plus/app-view.js
  29. BIN
      unpackage/dist/build/app-plus/assets/xyj.eb2ea444.png
  30. BIN
      unpackage/dist/build/app-plus/assets/xyj1.eec3d849.png
  31. 2
      unpackage/dist/build/app-plus/manifest.json
  32. BIN
      unpackage/dist/build/web.zip
  33. BIN
      unpackage/dist/build/web/assets/icon_tianjia.fd407734.png
  34. BIN
      unpackage/dist/build/web/assets/wz.aec04fd2.png
  35. BIN
      unpackage/dist/build/web/assets/xyj.eb2ea444.png
  36. BIN
      unpackage/dist/build/web/assets/xyj1.eec3d849.png
  37. 5
      unpackage/dist/build/web/index.html
  38. 363
      unpackage/dist/build/web/static/common/js/touch-emulator.js
  39. 1
      unpackage/dist/build/web/static/index.css
  40. 24
      unpackage/dist/build/web/static/js/chunk-vendors.bf77a967.js
  41. 1
      unpackage/dist/build/web/static/js/index.1cf01358.js
  42. 1
      unpackage/dist/build/web/static/js/pages-healthService-healthService.d1610b06.js
  43. 1
      unpackage/dist/build/web/static/js/pages-healthService-healthService2.ba0819c7.js
  44. 1
      unpackage/dist/build/web/static/js/pages-healthService-healthService2~pages-healthService-healthService3~pages-healthService-healthServ~f595f003.ceb1105a.js
  45. 1
      unpackage/dist/build/web/static/js/pages-healthService-healthService3.4b70c5d0.js
  46. 1
      unpackage/dist/build/web/static/js/pages-healthService-healthService4.7cdc1b8d.js
  47. 1
      unpackage/dist/build/web/static/js/pages-healthService-healthService5.e888e398.js
  48. 1
      unpackage/dist/build/web/static/js/pages-healthService-healthService6.1432621b.js
  49. 1
      unpackage/dist/build/web/static/js/pages-healthService-healthService~pages-healthService-healthService2~pages-healthService-healthServi~3462a3b5.29d6f65c.js
  50. 1
      unpackage/dist/build/web/static/js/pages-healthService-healthService~pages-healthService-healthService4~pages-healthService-healthServi~25040ae4.f1b243da.js
  51. 1
      unpackage/dist/build/web/static/js/pages-healthService-healthService~pages-healthService-healthService5.c173610e.js
  52. 1
      unpackage/dist/build/web/static/js/pages-healthService-healthService~pages-login-login~pages-patientAdd-patientAdd.db7dfd3f.js
  53. 1
      unpackage/dist/build/web/static/js/pages-index-index.ac417a51.js
  54. 1
      unpackage/dist/build/web/static/js/pages-login-login.6788d721.js
  55. 1
      unpackage/dist/build/web/static/js/pages-patientAdd-patientAdd.fc8886e1.js
  56. BIN
      unpackage/dist/build/web/static/uview/common/favicon.ico
  57. BIN
      unpackage/dist/build/web/static/uview/common/gray-logo.png
  58. BIN
      unpackage/dist/build/web/static/uview/common/logo.png
  59. BIN
      unpackage/dist/build/web/static/uview/example/component.png
  60. BIN
      unpackage/dist/build/web/static/uview/example/component_select.png
  61. BIN
      unpackage/dist/build/web/static/uview/example/js.png
  62. BIN
      unpackage/dist/build/web/static/uview/example/js_bak.png
  63. BIN
      unpackage/dist/build/web/static/uview/example/js_select.png
  64. BIN
      unpackage/dist/build/web/static/uview/example/template.png
  65. BIN
      unpackage/dist/build/web/static/uview/example/template_select.png
  66. BIN
      unpackage/dist/build/web/uni_modules/v-sign/static/image/clear.png
  67. 1
      unpackage/dist/build/web/uni_modules/v-sign/static/image/clear.svg
  68. BIN
      unpackage/dist/build/web/uni_modules/v-sign/static/image/next.png
  69. 1
      unpackage/dist/build/web/uni_modules/v-sign/static/image/next.svg
  70. BIN
      unpackage/dist/build/web/uni_modules/v-sign/static/image/prev.png
  71. 1
      unpackage/dist/build/web/uni_modules/v-sign/static/image/prev.svg
  72. BIN
      unpackage/dist/build/web/uni_modules/v-sign/static/image/save.png
  73. 1
      unpackage/dist/build/web/uni_modules/v-sign/static/image/save.svg
  74. 2
      unpackage/dist/dev/app-plus/manifest.json
  75. BIN
      unpackage/release/apk/老年健康v1.0.0.2.apk
  76. 36
      util/request/requestInterceptors.js
  77. 64
      util/request/responseInterceptors.js

3
App.vue

@ -72,6 +72,9 @@
border: none;
height: 40px
}
.view-form-item .form-item-input_name .uni-input-input{
color: #c8c9cc;
}
.view-form-item .uni-input-input ,.view-form-item .uni-input-placeholder,
.view-form-item .u-form-item__body__right__message{
text-align: right;

103
common/api.js

@ -1,74 +1,101 @@
// 通过患者ID查询患者详情
export function upload(params){
return uni.$u.http.post('/common/upload', params)
export function upload(params) {
return uni.$u.http.post("/common/upload", params);
}
// 登录
export function userlogin(params){
return uni.$u.http.post('/login', params)
export function userlogin(params) {
return uni.$u.http.post("/login", params);
}
// 获取验证码
export function getSmsCode(params){
return uni.$u.http.get('/user/getSmsCode', params)
export function getSmsCode(params) {
return uni.$u.http.get("/user/getSmsCode", params);
}
// 用户用户信息
export function userInfo(params){
return uni.$u.http.get('/getInfo', params)
export function userInfo(params) {
return uni.$u.http.get("/getInfo", params);
}
// 患者列表
export function patientQuery(params){
return uni.$u.http.post('/patient/query', params)
export function patientQuery(params) {
return uni.$u.http.post("/patient/query", params);
}
// 查询统计数量
export function queryNum(params){
return uni.$u.http.post('/patient/queryNum', params)
export function queryNum(params) {
return uni.$u.http.post("/patient/queryNum", params);
}
// 新增患者
export function queryAdd(params){
return uni.$u.http.post('/patient/add', params)
export function queryAdd(params) {
return uni.$u.http.post("/patient/add", params);
}
// 新增患者
export function queryUpd(params){
return uni.$u.http.post('/patient/upd', params)
export function queryUpd(params) {
return uni.$u.http.post("/patient/upd", params);
}
// 通过患者ID查询患者详情
export function queryById(params){
return uni.$u.http.post('/patient/queryById', params)
export function queryById(params) {
return uni.$u.http.post("/patient/queryById", params);
}
// 通过患者ID获取测评ID
export function patientRegist(params){
return uni.$u.http.post('/patient/regist', params)
export function patientRegist(params) {
return uni.$u.http.post("/patient/regist", params);
}
// 评估结果查询
export function pgQuery(params){
return uni.$u.http.post('/evaluation/pg/query', params)
export function pgQuery(params) {
return uni.$u.http.post("/evaluation/pg/query", params);
}
// 评估信息提交
export function pgSubmit(params){
return uni.$u.http.post('/evaluation/pg/submit', params)
export function pgSubmit(params) {
return uni.$u.http.post("/evaluation/pg/submit", params);
}
// AD8结果查询
export function ad8Query(params){
return uni.$u.http.post('/evaluation/ad8/query', params)
export function ad8Query(params) {
return uni.$u.http.post("/evaluation/ad8/query", params);
}
// AD8信息提交
export function ad8Submit(params){
return uni.$u.http.post('/evaluation/ad8/submit', params)
export function ad8Submit(params) {
return uni.$u.http.post("/evaluation/ad8/submit", params);
}
// 登记详情接口
export function detailSubmit(params){
return uni.$u.http.post('/evaluation/detail/submit', params)
export function detailSubmit(params) {
return uni.$u.http.post("/evaluation/detail/submit", params);
}
// 登记详情接口
export function detailQuery(params){
return uni.$u.http.post('/evaluation/detail/query', params)
export function detailQuery(params) {
return uni.$u.http.post("/evaluation/detail/query", params);
}
// 提交签名
export function complete(params){
return uni.$u.http.post('/evaluation/complete', params)
export function complete(params) {
return uni.$u.http.post("/evaluation/complete", params);
}
// 查询签名
export function completeById(params){
return uni.$u.http.post('/evaluation/queryById', params)
}
export function completeById(params) {
return uni.$u.http.post("/evaluation/queryById", params);
}
// ------ 智能家居 ------
// 登录
export function login(params) {
return uni.$u.http.post("/app/user/login", params);
}
// 根据项目key查找项目id
export function queryProjectInfoByKey(params) {
return uni.$u.http.get(
`/app/device/queryProjectInfoByKey?projectKey=${params.projectKey}`
);
}
// 根据项目id查找设备列表
export function deviceList(params) {
return uni.$u.http.get(`/app/device/list?projectId=${params.projectId}`);
}
// 获取设备信息
export function attributes(params) {
return uni.$u.http.get(`/app/device/attributes?deviceId=${params.deviceId}`);
}
// 下发属性
export function sendAttribute(params) {
return uni.$u.http.post("/app/device/sendAttribute", params);
}
// 下发命令
export function sendCommand(params) {
return uni.$u.http.post("/app/device/sendCommand", params);
}

4
common/config.js

@ -1,3 +1,3 @@
module.exports = {
baseUrl: 'http://116.204.98.79:40010/elderlyHealth/admin/'
}
baseUrl: "http://121.37.81.216/multimodal/",
};

11
manifest.json

@ -2,7 +2,7 @@
"name" : "老年健康",
"appid" : "__UNI__FBDBEC9",
"description" : "多平台快速开发的UI框架",
"versionName" : "1.0.0.1",
"versionName" : "1.0.0.2",
"versionCode" : 1,
"transformPx" : false,
"app-plus" : {
@ -131,14 +131,14 @@
"template" : "template.h5.html",
"router" : {
"mode" : "history",
"base" : ""
"base" : "/elderlyHealth/client/"
},
"optimization" : {
"treeShaking" : {
"enable" : false
}
},
"title" : "uView UI",
"title" : "老年健康",
"sdkConfigs" : {
"maps" : {
"qqmap" : {
@ -146,6 +146,9 @@
}
}
},
"domain" : ""
"domain" : "",
"devServer" : {
"https" : false
}
}
}

23
pages.json

@ -7,26 +7,19 @@
// "query": "" //onLoad
// }]
// },
"pages": [ //pageshttps://uniapp.dcloud.io/collocation/pages
"pages": [
//pageshttps://uniapp.dcloud.io/collocation/pages
{
"path": "pages/index/index" //
},{
},
{
"path": "pages/login/login" //
},{
"path": "pages/healthService/healthService" //
},{
"path": "pages/healthService/healthService2" //
},{
"path": "pages/healthService/healthService3" // Ad8
},{
"path": "pages/healthService/healthService4" //
},{
"path": "pages/healthService/healthService5" //
},{
"path": "pages/patientAdd/patientAdd" //
},
{
"path": "pages/index/details" //
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uView",

831
pages/healthService/healthService6.vue

@ -0,0 +1,831 @@
<template>
<view class="container" style="min-height:100vh">
<view class="header" @click="handleBack">
<image class="header-back-img" src="../../imgs/back.png"></image>
{{ registerType == 1 ? '失能老年人医养结合和健康服务登记' : '高龄老人医养结合服务登记'}}
<view></view>
</view>
<view class="view-step">
<view>
<image src="../../imgs/icon_wanc.png" class="step-img"></image>
<p style="color:#3D3D3D">信息</p>
</view>
<h1></h1>
<view>
<image src="../../imgs/icon_wanc.png" class="step-img"></image>
<p style="color:#3D3D3D">评估</p>
</view>
<h1></h1>
<view>
<image src="../../imgs/icon_wanc.png" class="step-img"></image>
<p style="color:#3D3D3D">筛查</p>
</view>
<h1></h1>
<view>
<image src="../../imgs/icon_wanc.png" class="step-img"></image>
<p style="color:#3D3D3D;width: 40px;flex-shrink: 0;">高血压</p>
</view>
<h1></h1>
<view>
<image src="../../imgs/icon_moren.png" class="step-img"></image>
<p>登记</p>
</view>
<h1></h1>
<view>
<image src="../../imgs/icon_moren.png" class="step-img"></image>
<p>确认</p>
</view>
</view>
<view style="flex: 1; position: relative;margin-top: 20px;">
<scroll-view class="view-scroll" scroll-y="true" :lower-threshold="50" scroll-with-animation >
<view class="view-modal">
<view class="slot-content">
<h1 class="view-modal-h1">血压分类与心血管危险分层</h1>
<!-- <p class="view-modal-p">AD8筛查0~1分者为认知正常>1存在认知障碍风险</p> -->
<view class="view-modal-ul">
<view class="view-modal-li" style="margin-bottom: 0;">
<view class="modal-li-p" style="display: flex;justify-content: space-between;align-items: center;">性别
<view class="modal-li-options">
<u-radio-group v-model="form.sex" active-color="#ff981f">
<view class="li-options-item" style="margin-right: 10px;margin-bottom: 0;" >
<u-radio
:wrap="true"
:label-disabled="false"
:disabled="true"
name="0"
label="男"
>
</u-radio>
</view>
<view class="li-options-item" style="margin-right: 10px;margin-bottom: 0;" >
<u-radio
:wrap="true"
:label-disabled="false"
:disabled="true"
name="1"
label="女"
>
</u-radio>
</view>
</u-radio-group>
</view>
</view>
</view>
<view class="view-form-item">
<view class="view-modal-li view-modal-li1" >
<view class="modal-li-options" style="margin-bottom: 14px;">
<p class="modal-li-p" style="margin-bottom: 0;">年龄</p>
<view>
<u-input
class="form-item-input form-item-input_name"
placeholder="请填写"
v-model="form['DJ02_4']"
></u-input>
</view>
</view>
</view>
</view>
<view class="view-modal-li" >
<p class="modal-li-p">基于诊室血压的血压分类和高血压分级</p>
<view class="modal-li-options">
<u-radio-group
v-model="form.aaa"
placement="column"
active-color="#ff981f"
>
<view class="li-options-item" style="margin-right: 10px;" >
<u-radio
:customStyle="{marginBottom: '8px'}"
name="正常血压"
label="正常血压"
>
</u-radio>
</view>
<view class="li-options-item" style="margin-right: 10px;" >
<u-radio
:customStyle="{marginBottom: '8px'}"
name="正常高值"
label="正常高值"
>
</u-radio>
</view>
<view class="li-options-item" style="margin-right: 10px;" >
<u-radio
:customStyle="{marginBottom: '8px'}"
name="1级高血压"
label="1级高血压"
>
</u-radio>
</view>
<view class="li-options-item" style="margin-right: 10px;" >
<u-radio
:customStyle="{marginBottom: '8px'}"
name="2级高血压"
label="2级高血压"
>
</u-radio>
</view>
<view class="li-options-item" style="margin-right: 10px;" >
<u-radio
:customStyle="{marginBottom: '8px'}"
name="3级高血压"
label="3级高血压"
>
</u-radio>
</view>
<view class="li-options-item" style="margin-right: 10px;" >
<u-radio
:customStyle="{marginBottom: '8px'}"
name="单纯收缩期高血压"
label="单纯收缩期高血压"
>
</u-radio>
</view>
<view class="li-options-item" style="margin-right: 10px;" >
<u-radio
:customStyle="{marginBottom: '8px'}"
name="单纯舒张期高血压"
label="单纯舒张期高血压"
>
</u-radio>
</view>
</u-radio-group>
</view>
</view>
<view v-for="(i,ind) in testList">
<h1 style="font-size: 22px;margin-bottom: 10px;" v-if="i.title">{{i.title}}</h1>
<view class="view-modal-li" v-for="(item,index) in i.list">
<h3 style="font-size: 20px;margin-bottom: 10px;" v-if="item.title">{{item.title}}</h3>
<p class="modal-li-p" >{{item.name}}</p>
<view class="modal-li-options" v-if="item.type == 'checkbox'">
<u-checkbox-group
v-model="form[item.code]"
placement="column"
active-color="#ff981f"
>
<view class="li-options-item" style="margin-right: 10px;" v-for="(row, index) in item.options" :key="index">
<u-checkbox
:customStyle="{marginBottom: '8px'}"
:name="row.score"
:label="row.name"
>
</u-checkbox>
</view>
</u-checkbox-group>
</view>
<view class="modal-li-options" v-else>
<u-radio-group v-model="form[item.code]" active-color="#ff981f">
<view class="li-options-item" style="margin-right: 10px;" v-for="(row, index) in item.options" :key="index">
<u-radio
:wrap="true"
:label-disabled="false"
:disabled="row.disabled1"
@change="radioChange(item,row)"
:name="row.score"
:label="row.name"
>
<!-- <span>{{row.name}}</span> -->
</u-radio>
</view>
</u-radio-group>
</view>
</view>
</view>
</view>
</view>
</view>
</scroll-view>
</view>
<view class="view-modal-but" @click="handleSubmit">下一步</view>
</view>
</template>
<script>
import {ad8Submit, ad8Query } from '@/common/api.js';
export default {
data() {
return {
testList: [
{
title:'危险因素',
list:[
{
name: '1. 高血压(1-3级)',
code:'q222',
options:[{
name:'1级',
disabled: false,
disabled1:true,
score: '1'
},{
name:'2级',
disabled: false,
disabled1:true,
score: '2'
},{
name:'3级',
disabled: false,
disabled1:true,
score: '3'
}]
},
{
name: '2. 年龄',
code:'q333',
options:[{
name:'男性>55岁',
disabled: false,
disabled1:true,
score: '1'
},{
name:'女性>65岁',
disabled: false,
disabled1:true,
score: '2'
}]
},
{
name: '3.吸烟或被动吸烟',
code:'q1',
options:[{
name:'是',
disabled: false,
score: '1'
},{
name:'否',
disabled: false,
score: '0'
}]
},
{
name: '4. 糖耐量受损(2h血糖7.8~11.0mmol/L)和/或空腹血糖异常(6.1~6.9mmol/L)',
code:'q2',
options:[{
name:'是',
disabled: false,
score: '1'
},{
name:'否',
disabled: false,
score: '0'
}]
},
{
name: '5. 血脂异常(总胆固醇≥5.2mmol/L或LDL-C≥3.4mmol/L或 HDL-C<1.0mmol/L)',
code:'q3',
options:[{
name:'是',
disabled: false,
score: '1'
},{
name:'否',
disabled: false,
score: '0'
}]
},
{
name: '6. 早发心血管疾病家族史(一级亲属发病年龄<50岁)',
code:'q4',
options:[{
name:'是',
disabled: false,
score: '1'
},{
name:'否',
disabled: false,
score: '0'
}]
},
{
name: '7. 腹型肥胖(腰围:男性≥90cm,女性≥85cm)或肥胖(体重指数≥28kg/m²)',
code:'q5',
options:[{
name:'是',
disabled: false,
score: '1'
},{
name:'否',
disabled: false,
score: '0'
}]
},
{
name: '8. 高同型半胱氨酸血症',
code:'q6',
options:[{
name:'是',
disabled: false,
score: '1'
},{
name:'否',
disabled: false,
score: '0'
}]
},
{
name: '9. 高尿酸血症(血尿酸:男性≥420μmol/L,女性≥360μmol/L)',
code:'q7',
options:[{
name:'是',
disabled: false,
score: '1'
},{
name:'否',
disabled: false,
score: '0'
}]
},
{
name: '10. 心率增快(静息心率>80次/min)',
code:'q8',
options:[{
name:'是',
disabled: false,
score: '1'
},{
name:'否',
disabled: false,
score: '0'
}]
},
],
},
{
title:'靶器官损害',
list:[
{
name: '1. 左心室肥厚:心电图Sokolow-Lyon电压>3.8mV或Cornell乘积>244mV·ms,或超声心动图LVMI男≥109g/m²,女≥105g/m²',
code:'q9',
options:[{
name:'是',
disabled: false,
score: '1'
},{
name:'否',
disabled: false,
score: '0'
}]
},
{
name: '2. 颈动脉超声IMT≥0.9mm或动脉粥样斑块',
code:'q10',
options:[{
name:'是',
disabled: false,
score: '1'
},{
name:'否',
disabled: false,
score: '0'
}]
},
{
name: '3. cfPWV≥10m/s或baPWV≥18m/s',
code:'q11',
options:[{
name:'是',
disabled: false,
score: '1'
},{
name:'否',
disabled: false,
score: '0'
}]
},
{
name: '4. ABI<0.9',
code:'q12',
options:[{
name:'是',
disabled: false,
score: '1'
},{
name:'否',
disabled: false,
score: '0'
}]
},
{
name: '5. eGFR30~59mL/(min·1.73m²)或血清肌酐轻度升高(男性115~133μmol/L,女性107~124μmol/L)',
code:'q13',
options:[{
name:'是',
disabled: false,
score: '1'
},{
name:'否',
disabled: false,
score: '0'
}]
},
{
name: '6. 微量白蛋白尿:尿白蛋白与肌酐比值30~300mg/g或白蛋白排泌率30~300mg/24h',
code:'q14',
options:[{
name:'是',
disabled: false,
score: '1'
},{
name:'否',
disabled: false,
score: '0'
}]
},
],
},
{
title:'临床并发症与合并症',
list:[
{
name: '1. 脑血管病',
code:'q15',
type:'checkbox',
options:[{
name:'脑出血',
disabled: false,
score: '1'
},{
name:'缺血性脑卒中',
disabled: false,
score: '2'
},{
name:'短暂性脑缺血发作',
disabled: false,
score: '3'
}]
},
{
name: '2. 心脏疾病',
code:'q16',
type:'checkbox',
options:[{
name:'心肌梗死史',
disabled: false,
score: '1'
},{
name:'心绞痛',
disabled: false,
score: '2'
},{
name:'冠状动脉血运重建',
disabled: false,
score: '3'
},{
name:'慢性心力衰竭',
disabled: false,
score: '4'
},{
name:'房颤',
disabled: false,
score: '5'
}]
},
{
name: '3. 肾脏疾病',
code:'q17',
type:'checkbox',
options:[{
name:'糖尿病肾病',
disabled: false,
score: '1'
},{
name:'肾功能受损',
disabled: false,
score: '2'
},{
name:'血肌酐升高',
disabled: false,
score: '0'
},{
name:'蛋白尿',
disabled: false,
score: '3'
}]
},
{
name: '4. 外周血管疾病',
code:'q18',
type:'radio',
options:[{
name:'是',
disabled: false,
score: '1'
},{
name:'否',
disabled: false,
score: '0'
}]
},
{
name: '5. 视网膜病变',
code:'q18',
type:'checkbox',
options:[{
name:'眼底出血或渗出',
disabled: false,
score: '1'
},{
name:'视乳头水肿',
disabled: false,
score: '0'
}]
},{
name: '6. 糖尿病',
code:'q20',
type:'radio',
options:[{
name:'是',
disabled: false,
score: '1'
},{
name:'否',
disabled: false,
score: '0'
}]
}
],
}
],
form:{
"evaId": "",
"reslut": "",
"q1":"",
"q2":"",
"q3":"",
"q4":"",
"q5":"",
"q6":"",
"q7":"",
"q8":"",
"q111":"3",
"q222":"1",
"q333":"1",
"score":"",
"sex":"0",
},
evaId:""
}
},
methods: {
//
async handleSubmit() {
// 0~1>1
if (this.form.score <= 1) {
this.form.result = '认知正常';
} else {
this.form.result = '存在认知障碍风险';
}
//
const res = await ad8Submit(this.form);
if (res.code == 200) {
uni.navigateTo({ url: `/pages/healthService/healthService4?evaId=${this.evaId}&djType=${this.registerType}` });
}
},
//
async getpgQuery(){
const res = await ad8Query({evaId: this.evaId})
if(res.code == 200){
this.form = res.data || {
"evaId": this.evaId,
"reslut": "",
"q1":"",
"q2":"",
"q3":"",
"q4":"",
"q5":"",
"q6":"",
"q7":"",
"q8":"",
"score":""
}
}
},
// radio
radioChange(_item,row) {
this.form[_item.code] = row.score
let data = JSON.parse(JSON.stringify(this.form))
let totalScore = 0; // 0
// q1 q8
for (let i = 1; i <= 8; i++) {
const questionKey = `q${i}`; // q1, q2, ... q8
const questionValue = this.form[questionKey]; //
totalScore += questionValue - 0;
}
// form.score
this.form.score = totalScore;
},
handleChange(){
console.log(1111)
},
//
handleBack(){
uni.navigateBack({
delta: 1,
});
},
},
created() {
},
async mounted (){
},
onLoad(data) {
this.evaId = data.evaId
this.registerType = data.djType
console.log('this.registerType',this.registerType)
this.getpgQuery()
},
}
</script>
<style lang="scss">
.view-modal-li1{
display: flex;
justify-content: space-between;
line-height: 52px;
.modal-li-p{
font-size: 15px;
color: #3D3D3D;
margin-bottom: 0;
width: 100px;
}
.modal-li-options{
margin-bottom: 0 !important;
}
view{
flex:1;
display: flex;
}
span{
font-size: 15px;
color: #3D3D3D;
}
}
.view-modal-but{
height: 45px;
background: #FF981F;
border-radius: 23px;
font-size: 15px;
color: #FFFFFF;
line-height: 45px;
text-align: center;
margin-top: 14px;
font-size: 15px;
color: #FFFFFF;
}
.view-modal-ul{
.view-modal-li{
border-bottom: 1px solid #EDEDED;
margin-bottom: 14px;
//padding: 0 14px ;
// padding-bottom: 10px;
}
}
.li-options-item{
margin-bottom: 10px;
// span{
// font-size: 15px;
// color: #555555;
// }
}
.view-modal{
padding: 14px;
background: #fff;
border-radius: 10px;
.view-modal-h1{
font-size: 20px;
color: #3D3D3D;
text-align: center;
margin-bottom: 10px;
}
.modal-li-p{
font-size: 17px;
color: #3D3D3D;
margin-bottom: 10px;
// font-weight: bold;
}
.view-modal-p{
font-size: 14px;
color: #999999;
margin: 10px 0;
}
}
.view-form1{
margin-top: 20px;
.view-form-li1{
p{
flex:1
}
.form-li-right{
view{
width: 100%;
text-align: right;
color:#FF981F;
line-height: 52px;
}
.li-right-unit{
font-size: 16px;
}
}
}
}
.view-form{
padding: 14px;
background: #fff;
.view-form-title{
font-size: 16px;
color:#FF981F;
margin-bottom: 10px;
}
.view-form-ul{
.view-form-li{
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #E2E2E2;
.form-li-right{
flex: 1;
display: flex;
align-items: center;
.form-li-input{
flex: 1;
border: none;
text-align: right;
height: 40px;
}
}
p{
font-size: 18px;
width: 120px;
}
}
// .view-form-li:last-child{
// border: none;
// }
}
}
.uploat_img{
padding: 14px 0 0 22px;
background: #fff;
border-radius: 8px;
margin-bottom: 10px ;
.uploat_img-ul{
display: flex;
flex-wrap: wrap;
.uploat_img-li{
width: 90px !important;
height: 90px !important;
border-radius: 10px !important;
border: 1px dashed #CACACA;
margin-right: 18px;
margin-bottom: 14px;
}
}
p{
font-size: 16px;
color:#FF981F;
margin-bottom: 10px;
}
}
.header{
font-size: 16px;
color: #3D3D3D;
display: flex;
align-items: center;
justify-content: space-between;
.header-back-img{
width: 18px;
height: 18px;
}
view{
width: 20px;
}
}
.container{
display: flex;
flex-direction: column;
box-sizing: border-box;
padding: 46px 16px 20px 16px;
background: linear-gradient(130deg,#ffe8cc 8%,#fcfcfc,#fcfcfc,#fcfcfc);
}
</style>
<style>
.u-modal__button-group__wrapper{
display: none !important;
}
.view-scroll {
height: 100%;
position: absolute;
}
.u-radio-group--row{
flex-wrap: wrap;
}
</style>

BIN
pages/index/CO2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

102
pages/index/details.vue

@ -0,0 +1,102 @@
<template>
<view class="container">
<!-- 头部标题 -->
<!-- <view class="title">STM32智能AI家居系统</view> -->
<u-navbar class="navbar" title="阈值设定" fixed @leftClick="handleBack">
</u-navbar>
<view class="view-data">
<u--input
type="number"
placeholder="请输入内容"
border="surround"
v-model="value"
></u--input>
<view class="but-box">
<u-button
@click="handleSubmit"
type="primary"
:plain="true"
text="确 认"
></u-button>
</view>
</view>
<u-toast ref="uToast"></u-toast>
</view>
</template>
<script>
import { sendAttribute } from "@/common/api.js";
export default {
data() {
return {
value: 30,
name: "",
deviceId: "",
};
},
methods: {
handleBack() {
console.log("返回");
uni.navigateBack({
delta: 1,
});
},
/** 下发属性 */
async handleSubmit() {
const res = await sendAttribute({
deviceId: this.deviceId, // id
// JSON
attributeAndValues: [
{
attributeIdentifier: this.name,
attributeValue: this.value,
},
],
});
const { data, code } = res;
if (code == 200) {
// this.$modal.msgSuccess("");
this.$refs.uToast.show({
type: "success",
message: "操作成功",
});
}
},
},
created() {},
onShow() {},
onLoad(options) {
console.log("options", options);
this.name = options.name; //
this.value = options.value; //
this.deviceId = options.deviceId; // id
},
};
</script>
<style lang="scss" scoped>
.but-box {
width: 50%;
margin: 0 auto;
margin-top: 50px;
}
.view-data {
padding: 14px;
margin-top: 44px;
border-radius: 10px;
background: #fff;
}
.container {
padding: 16px;
box-sizing: border-box;
min-height: 100vh;
background: #fcfcfc;
}
.title {
line-height: 40px;
font-size: 18px;
text-align: center;
background: #fff;
}
</style>
<style></style>

BIN
pages/index/gzqd.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

818
pages/index/index.vue

@ -1,295 +1,537 @@
<template>
<view class="container" style="height:100vh">
<view>
<h1 class="header-h1">{{userInfo.nickName}}</h1>
<view style="display: flex;justify-content: space-between;align-items: center;margin-bottom: 17px;">
<h2 class="header-h2">老年健康与医养结合服务</h2>
<!-- <view class="view-export" @click="handleExport">导出</view> -->
</view>
<view class="view-search">
<image class="view-search-img" src="./icon_search.png"></image>
<u-input class='view-search-input' v-model="queryParam.param.name" placeholder="请输入首字母/姓名" />
</view>
<!-- 类型查询条件 -->
<view class="type-search">
<view :class="queryParam.param.type == 0 ? 'type-search-select':''" @click="handleType(0)">全部({{listNum.totality}})</view>
<view :class="queryParam.param.type == 1 ? 'type-search-select':''" @click="handleType(1)">失能老人({{listNum.disability}})</view>
<view :class="queryParam.param.type == 2 ? 'type-search-select':''" @click="handleType(2)">80岁及以上老人({{listNum.advancedAgeNum}})</view>
</view>
</view>
<!-- 列表 -->
<view style="flex: 1; position: relative;">
<scroll-view scroll-y="true" :lower-threshold="50" scroll-with-animation @scrolltolower="scrolltolower">
<view class="view-ul">
<view class="view-li" v-for="(item,index) in listData" :key="index">
<view class="view-li-left">
<!-- 姓名性别年龄 -->
<view class="li-left-header">
<h1>{{item.name}}</h1>
<p><span>{{!item.sex ? '男' : '女'}} </span> <b>|</b> <span> {{item.age}}</span></p>
</view>
<!-- 身份证手机号地址 -->
<view class="li-left-info">
<view><image class="left-info-img" src="../../imgs/sfz.png"></image>{{item.idCard}} </view>
<view><image class="left-info-img" src="../../imgs/sjh.png"></image>{{item.phone}} </view>
<view style="margin-bottom: 0;"><image class="left-info-img" src="../../imgs/wz.png"></image>{{item.address}} </view>
</view>
</view>
<view class="view-li-iright">
<view class="li-iright-but" :class="item.snStatus ? 'li-iright-sn':''" @click="handlePatientRegister(item,1)">失能登记</view>
<view class="li-iright-but" :class="item.gldjStatus ? 'li-iright-gl':''" @click="handlePatientRegister(item,2)" v-if="item.glFlag">高龄登记</view>
</view>
</view>
</view>
</scroll-view>
</view>
<!-- 新增按钮 -->
<view class="listadd" @click="handlePatientAdd">
<image class="listadd-img" src="../../imgs/icon_tianjia.png"></image>
</view>
</view>
<view class="container">
<!-- 头部标题 -->
<!-- <view class="title">STM32智能AI家居系统</view> -->
<u-navbar class="navbar" title="STM32智能AI家居系统" fixed> </u-navbar>
<!-- 显示数据部分温度湿度Co2Tvoc烟雾浓度光照强度是否有人声光报警状态 -->
<view class="view-data">
<!-- 温度 -->
<view class="view-data-item">
<view class="data-item-img-box">
<image class="data-item-img" src="./wd.png" mode="widthFix"></image>
</view>
<view class="data-item-text"
>{{ deviceInfo.temperature }}<span>°C</span>
</view>
</view>
<!-- 湿度 -->
<view class="view-data-item">
<view class="data-item-img-box">
<image class="data-item-img" src="./sd.png" mode="widthFix"></image>
</view>
<view class="data-item-text"
>{{ deviceInfo.humidity }}<span>%RH</span>
</view>
</view>
<!-- Co2 -->
<view class="view-data-item">
<view class="data-item-img-box">
<image class="data-item-img" src="./CO2.png" mode="widthFix"></image>
</view>
<view class="data-item-text"
>{{ deviceInfo.Co2 }}<span>ppm</span>
</view>
</view>
<!-- Tvoc -->
<view class="view-data-item">
<view class="data-item-img-box">
<image
class="data-item-img"
src="./tvoc-copy.png"
mode="widthFix"
></image>
</view>
<view class="data-item-text">27<span>ppb</span> </view>
</view>
<!-- 烟雾浓度 -->
<view class="view-data-item">
<view class="data-item-img-box">
<image class="data-item-img" src="./ywnd.png" mode="widthFix"></image>
</view>
<view class="data-item-text">27<span>%LEL</span> </view>
</view>
<!-- 光照强度 -->
<view class="view-data-item">
<view class="data-item-img-box">
<image class="data-item-img" src="./gzqd.png" mode="widthFix"></image>
</view>
<view class="data-item-text"
>{{ deviceInfo.light }}<span>Lux</span>
</view>
</view>
<!-- 是否有人 -->
<view class="view-data-item">
<view class="data-item-img-box">
<image class="data-item-img" src="./sfyr.png" mode="widthFix"></image>
</view>
<view class="data-item-text">有人</view>
</view>
<!-- 声光报警状态 -->
<view class="view-data-item">
<view class="data-item-img-box">
<image class="data-item-img" src="./sgbj.png" mode="widthFix"></image>
</view>
<view class="data-item-text"
>{{ deviceInfo.alarm == 1 ? "报警开启" : "报警关闭" }}<span></span>
</view>
</view>
</view>
<!-- 控制部分 -->
<view class="control">
<view class="view-data-item" style="width: 100%">
<view class="data-item-img-box">
<image class="data-item-img" src="./wd.png" mode="widthFix"></image>
</view>
<view class="data-item-text">
LED{{ deviceInfo.LED }}%
<u-slider
style="width: 100%"
v-model="deviceInfo.LED"
min="0"
max="100"
:step="20"
@change="handleAttribute()"
></u-slider>
</view>
</view>
<view
class="view-data-item"
@click="handleCommand('statusMotor', 'curtain')"
:class="deviceInfo.curtain == 0 ? 'view-filter' : ''"
>
<view class="data-item-img-box">
<image class="data-item-img" src="./sd.png" mode="widthFix"></image>
</view>
<view class="data-item-text"
>窗帘
<view>{{ deviceInfo.curtain == 0 ? "OFF" : "NO" }}</view>
</view>
</view>
<view
class="view-data-item"
@click="handleCommand('statusHumidifier', 'humidifier')"
:class="deviceInfo.humidifier == 0 ? 'view-filter' : ''"
>
<view class="data-item-img-box">
<image class="data-item-img" src="./CO2.png" mode="widthFix"></image>
</view>
<view class="data-item-text"
>加湿器
<view>{{ deviceInfo.humidifier == 0 ? "OFF" : "NO" }}</view>
</view>
</view>
<view
class="view-data-item"
@click="handleCommand('statusFan', 'fan')"
:class="deviceInfo.fan == 0 ? 'view-filter' : ''"
>
<view class="data-item-img-box">
<image
class="data-item-img"
src="./tvoc-copy.png"
mode="widthFix"
></image>
</view>
<view class="data-item-text"
>风扇
<view>{{ deviceInfo.fan == 0 ? "OFF" : "NO" }}</view>
</view>
</view>
<view
class="view-data-item"
@click="handleCommand('statusAircleaner', 'airCleaner')"
:class="deviceInfo.airCleaner == 0 ? 'view-filter' : ''"
>
<view class="data-item-img-box">
<image class="data-item-img" src="./ywnd.png" mode="widthFix"></image>
</view>
<view class="data-item-text"
>空气净化器
<view>{{ deviceInfo.airCleaner == 0 ? "OFF" : "NO" }}</view>
</view>
</view>
</view>
<!-- 阈值设定部分 -->
<view class="threshold">
<u-cell-group>
<u-cell
title="光照阈值"
:value="deviceInfo.lightThreshold"
isLink
@click="handleSettingThreshold('lightThreshold', 'lightThreshold')"
></u-cell>
<u-cell
title="湿度下限阈值"
:value="deviceInfo.humidityLowerThreshold"
isLink
@click="
handleSettingThreshold('humiLowThreshold', 'humiLowThreshold')
"
></u-cell>
<u-cell
title="湿度上限阈值"
:value="deviceInfo.humidityUpperThreshold"
isLink
@click="
handleSettingThreshold('humiHighThreshold', 'humiHighThreshold')
"
></u-cell>
<u-cell
title="空气质量阈值"
:value="deviceInfo.airQualityThreshold"
isLink
@click="handleSettingThreshold('tvocThreshold', 'tvocThreshold')"
></u-cell>
</u-cell-group>
</view>
</view>
</template>
<script>
import {userInfo,patientQuery,queryNum} from '@/common/api.js';
export default {
data() {
return {
userInfo:{},
listData:[
// {
// name:'',
// sex:0,
// age:'82',
// idCard:'142734********0011',
// phone:'13704551289',
// address:'',
// },
],
queryParam: {
pageNum: 1,
pageSize: 20,
param: {
name: '',
type: 0, // 01 2 80
},
},
listNum:{}
}
},
methods: {
//
async getQueryNum(){
const res = await queryNum()
if(res.code == 200){
this.listNum = res.data
}
},
//
async getUserInfo(){
const res = await userInfo()
if(res.code == 200){
this.userInfo = res.user
}
},
//
handleExport(){},
//
handlePatientRegister(_item,_type){
uni.navigateTo({ url: `/pages/healthService/healthService?id=${_item.id}&type=${_type}` });
},
//
handlePatientAdd(){
uni.navigateTo({
url: '/pages/patientAdd/patientAdd'
})
},
//
handleType(_type){
this.queryParam.param.type = _type
this.getList(true)
},
//
async getList(_type) {
if (_type) {
this.listData = [];
}
const res = await patientQuery(this.queryParam)
if (res.code == 200) {
// pageNUm-1
if (!res.data.list.length && this.queryParam.pageNum > 1) {
this.queryParam.pageNum--;
}
this.listData = [...this.listData, ...res.data.list];
}
},
//
scrolltolower() {
this.queryParam.pageNum++;
console.log(this.queryParam.pageNum)
this.getList()
},
},
created() {
},
onShow() {
this.getUserInfo()
this.getList(true)
this.getQueryNum()
}
}
<script>
import {
login,
queryProjectInfoByKey,
deviceList,
attributes,
sendAttribute,
sendCommand,
} from "@/common/api.js";
export default {
data() {
return {
value: 30,
deviceId: "", // id
// 湿Co2Tvoc
deviceInfo: {
temperature: 27, //
humidity: 27, // 湿
co: 27, // CO
tvoc: 27, // Tvoc
smoke: 27, //
light: 27, //
person: 27, //
alarm: 27, //
},
};
},
methods: {
//
handleSettingThreshold(_name, _valueName) {
let value = this.deviceInfo[_valueName];
uni.navigateTo({
url: `/pages/index/details?name=${_name}&value=${value}&deviceId=${this.deviceId}`,
}); //
},
/** 下发属性 */
async handleAttribute() {
const res = await sendAttribute({
deviceId: this.deviceId, // id
// JSON
attributeAndValues: [
{
attributeIdentifier: "statusLed",
attributeValue: this.deviceInfo.LED,
},
],
});
const { data, code } = res;
if (code == 200) {
this.getAttributes(this.deviceId); // id
// this.$refs.uToast.show({
// type: "success",
// message: "",
// });
}
},
//
async handleCommand(_name, _valueName) {
this.deviceInfo[_valueName] = this.deviceInfo[_valueName] == 0 ? 1 : 0;
let commandParams = { [_name]: this.deviceInfo[_valueName] }; // 0 1 ,
console.log("commandParams", commandParams);
const res = await sendCommand({
commandId: "447242774207232", // ID,
commandParams: JSON.stringify(commandParams), // ,
deviceId: this.deviceId,
});
const { data, code } = res;
if (code == 200) {
this.getAttributes(this.deviceId); // id
}
},
// ID
async handleLogin() {
this.fileList = [];
const res = await login({
code: "3",
password: "admin123",
username: "yf_test",
});
const { data, code } = res;
if (code == 200) {
uni.setStorageSync("userToken", data.token);
this.getqueryProjectInfoByKey();
}
},
// ID
async getqueryProjectInfoByKey() {
this.fileList = [];
const res = await queryProjectInfoByKey({ projectKey: "qKStHKKt" });
const { data, code } = res;
if (code == 200) {
this.getDeviceList(data.id); // id
}
},
// id
async getDeviceList(_id) {
const res = await deviceList({ projectId: _id });
const { rows, code } = res;
if (code == 200) {
const w2Device = rows.find((device) => device.deviceName === "H1");
this.deviceId = w2Device.id;
this.getAttributes(this.deviceId); // id
}
},
// id
async getAttributes(_id) {
const res = await attributes({ deviceId: _id });
const { data, code } = res;
if (code == 200) {
this.loading = false;
let deviceAttributesList = data.deviceAttributesList;
// {id: 448053828969475, belongType: "1", attributeName: "C02", attributeType: "1",},
// {id: 448053828969476, belongType: "1", attributeName: "CO", attributeType: "1",},
// {id: 448053828969473, belongType: "1", attributeName: "湿", attributeType: "1",},
// {id: 448058657266432, belongType: "1", attributeName: "湿", attributeType: "2",},
// {id: 448058581624832, belongType: "1", attributeName: "湿", attributeType: "2",},
// {id: 448053828969477, belongType: "1", attributeName: "", attributeType: "1",},
// {id: 448058556146688, belongType: "1", attributeName: "", attributeType: "2",},
// {id: 448053828969484, belongType: "1", attributeName: "", attributeType: "1",},
// {id: 448053828969478, belongType: "1", attributeName: "", attributeType: "1",},
// {id: 448053828969483, belongType: "1", attributeName: "湿", attributeType: "1",},
// {id: 448053828969482, belongType: "1", attributeName: "湿", attributeType: "1",},
// {id: 448053828969479, belongType: "1", attributeName: "", attributeType: "1",},
// {id: 448053828969480, belongType: "1", attributeName: "LED", attributeType: "1",},
// {id: 448053828969481, belongType: "1", attributeName: "", attributeType: "1",},
// {id: 448053828969472, belongType: "1", attributeName: "", attributeType: "1",},
// {id: 448053828969474, belongType: "1", attributeName: "", attributeType: "1",},
// {id: 448058718225664, belongType: "1", attributeName: "", attributeType: "2",},
// ------ ------
// 湿Co2Tvoc
//
let temperature = deviceAttributesList.find(
(row) => row.id === 448053828969472
)?.attributeValue;
// 湿
let humidity = deviceAttributesList.find(
(row) => row.id === 448053828969473
)?.attributeValue;
// Co2
let Co2 = deviceAttributesList.find(
(row) => row.id === 448053828969475
)?.attributeValue;
// Tvoc
//
//
let light = deviceAttributesList.find(
(row) => row.id === 448053828969477
)?.attributeValue;
//
//
let alarm = deviceAttributesList.find(
(row) => row.id === 448053828969478
)?.attributeValue;
// ------ ------
// LED湿
// LED
let LED = deviceAttributesList.find(
(row) => row.id === 448053828969480
)?.attributeValue;
//
let curtain = deviceAttributesList.find(
(row) => row.id === 448053828969481
)?.attributeValue;
// 湿
let humidifier = deviceAttributesList.find(
(row) => row.id === 448053828969482
)?.attributeValue;
//
let fan = deviceAttributesList.find(
(row) => row.id === 448053828969483
)?.attributeValue;
//
let airCleaner = deviceAttributesList.find(
(row) => row.id === 448053828969484
)?.attributeValue;
// ------ ------
// 湿湿
//
let lightThreshold = deviceAttributesList.find(
(row) => row.id === 448058556146688
)?.attributeValue;
// 湿
let humidityLowerThreshold = deviceAttributesList.find(
(row) => row.id === 448058581624832
)?.attributeValue;
// 湿
let humidityUpperThreshold = deviceAttributesList.find(
(row) => row.id === 448058657266432
)?.attributeValue;
//
let airQualityThreshold = deviceAttributesList.find(
(row) => row.id === 448058718225664
)?.attributeValue;
this.deviceInfo = {
temperature, //
humidity, // 湿
Co2, // Co2
light, //
alarm, //
LED, // LED
curtain, //
humidifier, // 湿
fan, //
airCleaner, //
lightThreshold, //
humidityLowerThreshold, // 湿
humidityUpperThreshold, // 湿
airQualityThreshold, //
};
}
},
},
created() {
this.handleLogin();
},
onShow() {},
};
</script>
<style lang="scss">
.view-export{
width: 44px;
height: 31px;
line-height: 31px;
font-size: 10px;
color: #FFFFFF;
background: #1B7FEB;
border-radius: 4px;
text-align: center;
}
.listadd{
position: fixed;
right: 0px;
bottom: 20px;
width: 100px;
height: 100px;
.listadd-img{
width: 100%;
height: 100%;
}
}
.view-li{
padding: 12px;
border-radius: 8px 8px 8px 8px;
background: #FFFFFF;
display: flex;
justify-content: space-between;
margin-bottom: 14px;
.view-li-iright{
.li-iright-but{
width: 84px;
height: 31px;
line-height: 31px;
text-align: center;
font-size: 12px;
border-radius: 15px;
margin-bottom: 15px;
border: 1px solid #999999;
}
.li-iright-sn{
color: #1B7FEB;
background: rgba(27,127,235,0.08);
border: 1px solid #1B7FEB;
}
.li-iright-gl{
color: #FF981F;
background: rgba(255,152,31,0.08);
border: 1px solid #FF981F;
}
}
.view-li-left{
flex:1;
.li-left-info{
font-size: 12px;
color: #3D3D3D;
view{
margin-bottom: 10px;
display: flex;
align-items: center;
}
.left-info-img{
width: 20px;
height: 20px;
margin-right: 10px;
}
}
.li-left-header{
display: flex;
align-items: flex-end;
margin-bottom: 12px;
h1{
font-size: 15px;
color: #3D3D3D;
margin-right: 5px;
}
p{
font-size: 12px;
color: #888888;
b{
font-weight: 500;
margin: 0 5px;
}
}
}
}
}
.type-search{
background: #fcf2e6;
height: 32px;
line-height: 32px;
border-radius: 16px;
display: flex;
justify-content: space-between;
margin-bottom: 16px;
view{
padding: 0 10px;
font-size: 12px;
color: #3D3D3D;
}
.type-search-select{
background: #FF981F;
border-radius: 16px;
color: #fff;
}
}
.view-search{
height: 35px;
line-height: 35px;
border: 1px solid rgba(255,152,31,0.2);
background: #fff;
display: flex;
align-items: center;
margin-bottom: 16px;
.view-search-img{
width: 16px;
height: 16px;
margin-left:10px;
}
.view-search-input{
border: none;
}
}
.header-h1{
font-size: 18px;
color: #3D3D3D;
margin-bottom: 29px;
}
.header-h2{
font-size: 20px;
color: #3D3D3D;
}
.container{
display: flex;
flex-direction: column;
box-sizing: border-box;
padding: 46px 16px 20px 16px;
background: linear-gradient(130deg,#ffe8cc 8%,#fcfcfc,#fcfcfc,#fcfcfc);
}
<style lang="scss" scoped>
.threshold {
margin-top: 16px; //
background: #fff;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
border-radius: 10px;
}
.view-threshold {
margin-top: 16px;
.view-threshold-item {
margin-bottom: 6px;
.threshold-item-title {
font-size: 18px;
}
}
}
.view-filter {
filter: grayscale(100%); //
}
.control {
margin-top: 16px;
display: flex;
grid-template-columns: repeat(2, 1fr); //
gap: 14px; //
flex-wrap: wrap;
justify-content: space-between;
.view-data-item {
width: 48%;
display: flex;
align-items: center;
box-sizing: border-box;
padding: 12px;
background: #fff;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
border-radius: 10px;
.data-item-img-box {
width: 38px;
height: 38px;
border-radius: 50%;
background: rgb(138 213 255 / 10%);
display: flex;
justify-content: center;
align-items: center;
margin-right: 10px;
.data-item-img {
width: 22px;
height: 22px;
}
}
.data-item-text {
flex: 1;
color: #999;
font-size: 18px;
}
}
}
.view-data {
padding: 14px;
margin-top: 45px;
border-radius: 10px;
background: linear-gradient(130deg, #cff3ff, #7bacef);
display: grid;
grid-template-columns: repeat(2, 1fr); //
gap: 6px 14px; //
.view-data-item {
display: flex;
align-items: center;
padding: 8px 0;
.data-item-img-box {
width: 38px;
height: 38px;
border-radius: 50%;
background: #fff;
display: flex;
justify-content: center;
align-items: center;
margin-right: 14px;
.data-item-img {
width: 22px;
height: 22px;
margin: 10rx;
}
}
.data-item-text {
color: #3d7ccd;
font-size: 28px;
span {
font-size: 16px;
font-weight: normal;
}
}
}
}
.container {
padding: 16px;
box-sizing: border-box;
min-height: 100vh;
background: #fcfcfc;
}
.title {
line-height: 40px;
font-size: 18px;
text-align: center;
background: #fff;
}
</style>
<style>
scroll-view {
height: 100%;
position: absolute;
}
</style>
/deep/ uni-slider {
margin: 0;
}
/deep/ uni-slider .uni-slider-handle-wrapper {
height: 10px;
}
.navbar /deep/ .u-navbar__content__left {
display: none !important;
}
scroll-view {
height: 100%;
position: absolute;
}
</style>

BIN
pages/index/sd.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

BIN
pages/index/sfyr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
pages/index/sgbj.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
pages/index/tvoc-copy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

BIN
pages/index/wd.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

BIN
pages/index/ywnd.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
pages/index/zhenliao_n@1x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 963 B

BIN
unpackage/cache/apk/__UNI__FBDBEC9_cm.apk

Binary file not shown.

2
unpackage/cache/apk/apkurl

@ -1 +1 @@
https://app.liuyingyong.cn/build/download/a94b5860-7eec-11ef-9ea0-a7ec3065f928
https://app.liuyingyong.cn/build/download/079ccb20-877c-11ef-a502-956739106ca5

2
unpackage/cache/apk/cmManifestCache.json

File diff suppressed because one or more lines are too long

6
unpackage/cache/wgt/__UNI__FBDBEC9/app-service.js

File diff suppressed because one or more lines are too long

2
unpackage/cache/wgt/__UNI__FBDBEC9/app-view.js

File diff suppressed because one or more lines are too long

BIN
unpackage/cache/wgt/__UNI__FBDBEC9/assets/xyj.eb2ea444.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
unpackage/cache/wgt/__UNI__FBDBEC9/assets/xyj1.eec3d849.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

2
unpackage/cache/wgt/__UNI__FBDBEC9/manifest.json

@ -1 +1 @@
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__FBDBEC9","name":"老年健康","version":{"name":"1.0.0.1","code":1},"description":"多平台快速开发的UI框架","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"Webview-x5":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"autoclose":true,"delay":0,"target":"id:1","waiting":true},"popGesture":"close","launchwebview":{"render":"always","id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#FFFFFF"},"optimization":{"subPackages":true},"safearea":{"bottom":{"offset":"none"}},"usingComponents":true,"nvueCompiler":"uni-app","compilerVersion":3,"distribute":{"icons":{"android":{"hdpi":"icon-android-hdpi.png","xhdpi":"icon-android-xhdpi.png","xxhdpi":"icon-android-xxhdpi.png","xxxhdpi":"icon-android-xxxhdpi.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"},"prerendered":"false"}},"google":{"abiFilters":["armeabi-v7a","arm64-v8a"],"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.CALL_PHONE\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"],"packagename":"uni.UNIFBDBEC9","aliasname":"","password":"","keystore":"html5plus://test","custompermissions":true},"apple":{"dSYMs":false,"idfa":false,"devices":"universal"},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}},"orientation":"portrait-primary"},"allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"4.29","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"launch_path":"__uniappview.html","adid":"128096300305"}}
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__FBDBEC9","name":"老年健康","version":{"name":"1.0.0.2","code":1},"description":"多平台快速开发的UI框架","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"Webview-x5":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"autoclose":true,"delay":0,"target":"id:1","waiting":true},"popGesture":"close","launchwebview":{"render":"always","id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#FFFFFF"},"optimization":{"subPackages":true},"safearea":{"bottom":{"offset":"none"}},"usingComponents":true,"nvueCompiler":"uni-app","compilerVersion":3,"distribute":{"icons":{"android":{"hdpi":"icon-android-hdpi.png","xhdpi":"icon-android-xhdpi.png","xxhdpi":"icon-android-xxhdpi.png","xxxhdpi":"icon-android-xxxhdpi.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"},"prerendered":"false"}},"google":{"abiFilters":["armeabi-v7a","arm64-v8a"],"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.CALL_PHONE\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"],"packagename":"uni.UNIFBDBEC9","aliasname":"","password":"","keystore":"html5plus://test","custompermissions":true},"apple":{"dSYMs":false,"idfa":false,"devices":"universal"},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}},"orientation":"portrait-primary"},"allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"4.29","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"launch_path":"__uniappview.html","adid":"128096300305"}}

0
unpackage/dist/build/.automator/h5/.automator.json

6
unpackage/dist/build/app-plus/app-service.js

File diff suppressed because one or more lines are too long

2
unpackage/dist/build/app-plus/app-view.js

File diff suppressed because one or more lines are too long

BIN
unpackage/dist/build/app-plus/assets/xyj.eb2ea444.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
unpackage/dist/build/app-plus/assets/xyj1.eec3d849.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

2
unpackage/dist/build/app-plus/manifest.json

@ -1 +1 @@
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__FBDBEC9","name":"老年健康","version":{"name":"1.0.0.1","code":1},"description":"多平台快速开发的UI框架","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"Webview-x5":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"render":"always","id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#FFFFFF"},"optimization":{"subPackages":true},"safearea":{"bottom":{"offset":"none"}},"usingComponents":true,"nvueCompiler":"uni-app","compilerVersion":3,"distribute":{"icons":{"android":{"hdpi":"unpackage/res/icons/72x72.png","xhdpi":"unpackage/res/icons/96x96.png","xxhdpi":"unpackage/res/icons/144x144.png","xxxhdpi":"unpackage/res/icons/192x192.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"}}},"google":{"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.CALL_PHONE\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"],"abiFilters":["armeabi-v7a","arm64-v8a"]},"apple":{"idfa":false,"dSYMs":false},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"4.29","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"launch_path":"__uniappview.html"}}
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__FBDBEC9","name":"老年健康","version":{"name":"1.0.0.2","code":1},"description":"多平台快速开发的UI框架","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"Webview-x5":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"render":"always","id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#FFFFFF"},"optimization":{"subPackages":true},"safearea":{"bottom":{"offset":"none"}},"usingComponents":true,"nvueCompiler":"uni-app","compilerVersion":3,"distribute":{"icons":{"android":{"hdpi":"unpackage/res/icons/72x72.png","xhdpi":"unpackage/res/icons/96x96.png","xxhdpi":"unpackage/res/icons/144x144.png","xxxhdpi":"unpackage/res/icons/192x192.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"}}},"google":{"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.CALL_PHONE\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"],"abiFilters":["armeabi-v7a","arm64-v8a"]},"apple":{"idfa":false,"dSYMs":false},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"4.29","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"launch_path":"__uniappview.html"}}

BIN
unpackage/dist/build/web.zip

Binary file not shown.

BIN
unpackage/dist/build/web/assets/icon_tianjia.fd407734.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

BIN
unpackage/dist/build/web/assets/wz.aec04fd2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
unpackage/dist/build/web/assets/xyj.eb2ea444.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
unpackage/dist/build/web/assets/xyj1.eec3d849.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

5
unpackage/dist/build/web/index.html

@ -0,0 +1,5 @@
<!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><link rel="shortcut icon" type=image/x-icon href=https://cdn.uviewui.com/uview/common/favicon.webp><meta name=viewport content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1"><title>老年健康</title><script src=/static/common/js/touch-emulator.js></script><script>TouchEmulator();</script><style>::-webkit-scrollbar{
display: none;
}</style><script>document.addEventListener('DOMContentLoaded', function() {
document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px'
})</script><link rel=stylesheet href=/elderlyHealth/client/static/index.css></head><body><noscript><strong>本站点必须要开启JavaScript才能运行</strong></noscript><div id=app></div><script>/*BAIDU_STAT*/</script><script src=/elderlyHealth/client/static/js/chunk-vendors.bf77a967.js></script><script src=/elderlyHealth/client/static/js/index.1cf01358.js></script></body></html>

363
unpackage/dist/build/web/static/common/js/touch-emulator.js

@ -0,0 +1,363 @@
(function (window, document, exportName, undefined) {
"use strict";
var isMultiTouch = false;
var multiTouchStartPos;
var eventTarget;
var touchElements = {};
// polyfills
if (!document.createTouch) {
document.createTouch = function (view, target, identifier, pageX, pageY, screenX, screenY, clientX, clientY) {
// auto set
if (clientX == undefined || clientY == undefined) {
clientX = pageX - window.pageXOffset;
clientY = pageY - window.pageYOffset;
}
return new Touch(target, identifier, {
pageX: pageX,
pageY: pageY,
screenX: screenX,
screenY: screenY,
clientX: clientX,
clientY: clientY
});
};
}
if (!document.createTouchList) {
document.createTouchList = function () {
var touchList = new TouchList();
for (var i = 0; i < arguments.length; i++) {
touchList[i] = arguments[i];
}
touchList.length = arguments.length;
return touchList;
};
}
/**
* create an touch point
* @constructor
* @param target
* @param identifier
* @param pos
* @param deltaX
* @param deltaY
* @returns {Object} touchPoint
*/
function Touch(target, identifier, pos, deltaX, deltaY) {
deltaX = deltaX || 0;
deltaY = deltaY || 0;
this.identifier = identifier;
this.target = target;
this.clientX = pos.clientX + deltaX;
this.clientY = pos.clientY + deltaY;
this.screenX = pos.screenX + deltaX;
this.screenY = pos.screenY + deltaY;
this.pageX = pos.pageX + deltaX;
this.pageY = pos.pageY + deltaY;
}
/**
* create empty touchlist with the methods
* @constructor
* @returns touchList
*/
function TouchList() {
var touchList = [];
touchList.item = function (index) {
return this[index] || null;
};
// specified by Mozilla
touchList.identifiedTouch = function (id) {
return this[id + 1] || null;
};
return touchList;
}
/**
* Simple trick to fake touch event support
* this is enough for most libraries like Modernizr and Hammer
*/
function fakeTouchSupport() {
var objs = [window, document.documentElement];
var props = ['ontouchstart', 'ontouchmove', 'ontouchcancel', 'ontouchend'];
for (var o = 0; o < objs.length; o++) {
for (var p = 0; p < props.length; p++) {
if (objs[o] && objs[o][props[p]] == undefined) {
objs[o][props[p]] = null;
}
}
}
}
/**
* we don't have to emulate on a touch device
* @returns {boolean}
*/
function hasTouchSupport() {
return ("ontouchstart" in window) || // touch events
(window.Modernizr && window.Modernizr.touch) || // modernizr
(navigator.msMaxTouchPoints || navigator.maxTouchPoints) > 2; // pointer events
}
/**
* disable mouseevents on the page
* @param ev
*/
function preventMouseEvents(ev) {
// 注释启用默认事件
// ev.preventDefault();
// ev.stopPropagation();
}
/**
* only trigger touches when the left mousebutton has been pressed
* @param touchType
* @returns {Function}
*/
function onMouse(touchType) {
return function (ev) {
// prevent mouse events
preventMouseEvents(ev);
if (ev.which !== 1) {
return;
}
// The EventTarget on which the touch point started when it was first placed on the surface,
// even if the touch point has since moved outside the interactive area of that element.
// also, when the target doesnt exist anymore, we update it
if (ev.type == 'mousedown' || !eventTarget || (eventTarget && !eventTarget.dispatchEvent)) {
eventTarget = ev.target;
}
// shiftKey has been lost, so trigger a touchend
if (isMultiTouch && !ev.shiftKey) {
triggerTouch('touchend', ev);
isMultiTouch = false;
}
triggerTouch(touchType, ev);
// we're entering the multi-touch mode!
if (!isMultiTouch && ev.shiftKey) {
isMultiTouch = true;
multiTouchStartPos = {
pageX: ev.pageX,
pageY: ev.pageY,
clientX: ev.clientX,
clientY: ev.clientY,
screenX: ev.screenX,
screenY: ev.screenY
};
triggerTouch('touchstart', ev);
}
// reset
if (ev.type == 'mouseup') {
multiTouchStartPos = null;
isMultiTouch = false;
eventTarget = null;
}
}
}
/**
* trigger a touch event
* @param eventName
* @param mouseEv
*/
function triggerTouch(eventName, mouseEv) {
var touchEvent = document.createEvent('Event');
touchEvent.initEvent(eventName, true, true);
touchEvent.altKey = mouseEv.altKey;
touchEvent.ctrlKey = mouseEv.ctrlKey;
touchEvent.metaKey = mouseEv.metaKey;
touchEvent.shiftKey = mouseEv.shiftKey;
touchEvent.touches = getActiveTouches(mouseEv, eventName);
touchEvent.targetTouches = getActiveTouches(mouseEv, eventName);
touchEvent.changedTouches = getChangedTouches(mouseEv, eventName);
eventTarget.dispatchEvent(touchEvent);
}
/**
* create a touchList based on the mouse event
* @param mouseEv
* @returns {TouchList}
*/
function createTouchList(mouseEv) {
var touchList = new TouchList();
if (isMultiTouch) {
var f = TouchEmulator.multiTouchOffset;
var deltaX = multiTouchStartPos.pageX - mouseEv.pageX;
var deltaY = multiTouchStartPos.pageY - mouseEv.pageY;
touchList.push(new Touch(eventTarget, 1, multiTouchStartPos, (deltaX * -1) - f, (deltaY * -1) + f));
touchList.push(new Touch(eventTarget, 2, multiTouchStartPos, deltaX + f, deltaY - f));
} else {
touchList.push(new Touch(eventTarget, 1, mouseEv, 0, 0));
}
return touchList;
}
/**
* receive all active touches
* @param mouseEv
* @returns {TouchList}
*/
function getActiveTouches(mouseEv, eventName) {
// empty list
if (mouseEv.type == 'mouseup') {
return new TouchList();
}
var touchList = createTouchList(mouseEv);
if (isMultiTouch && mouseEv.type != 'mouseup' && eventName == 'touchend') {
touchList.splice(1, 1);
}
return touchList;
}
/**
* receive a filtered set of touches with only the changed pointers
* @param mouseEv
* @param eventName
* @returns {TouchList}
*/
function getChangedTouches(mouseEv, eventName) {
var touchList = createTouchList(mouseEv);
// we only want to return the added/removed item on multitouch
// which is the second pointer, so remove the first pointer from the touchList
//
// but when the mouseEv.type is mouseup, we want to send all touches because then
// no new input will be possible
if (isMultiTouch && mouseEv.type != 'mouseup' &&
(eventName == 'touchstart' || eventName == 'touchend')) {
touchList.splice(0, 1);
}
return touchList;
}
/**
* show the touchpoints on the screen
*/
function showTouches(ev) {
var touch, i, el, styles;
// first all visible touches
for (i = 0; i < ev.touches.length; i++) {
touch = ev.touches[i];
el = touchElements[touch.identifier];
if (!el) {
el = touchElements[touch.identifier] = document.createElement("div");
document.body.appendChild(el);
}
styles = TouchEmulator.template(touch);
for (var prop in styles) {
el.style[prop] = styles[prop];
}
}
// remove all ended touches
if (ev.type == 'touchend' || ev.type == 'touchcancel') {
for (i = 0; i < ev.changedTouches.length; i++) {
touch = ev.changedTouches[i];
el = touchElements[touch.identifier];
if (el) {
el.parentNode.removeChild(el);
delete touchElements[touch.identifier];
}
}
}
}
/**
* TouchEmulator initializer
*/
function TouchEmulator() {
if (hasTouchSupport()) {
return;
}
fakeTouchSupport();
window.addEventListener("mousedown", onMouse('touchstart'), true);
window.addEventListener("mousemove", onMouse('touchmove'), true);
window.addEventListener("mouseup", onMouse('touchend'), true);
window.addEventListener("mouseenter", preventMouseEvents, true);
window.addEventListener("mouseleave", preventMouseEvents, true);
window.addEventListener("mouseout", preventMouseEvents, true);
window.addEventListener("mouseover", preventMouseEvents, true);
// it uses itself!
window.addEventListener("touchstart", showTouches, true);
window.addEventListener("touchmove", showTouches, true);
window.addEventListener("touchend", showTouches, true);
window.addEventListener("touchcancel", showTouches, true);
}
// start distance when entering the multitouch mode
TouchEmulator.multiTouchOffset = 75;
/**
* css template for the touch rendering
* @param touch
* @returns object
*/
TouchEmulator.template = function (touch) {
var size = 0;
var transform = 'translate(' + (touch.clientX - (size / 2)) + 'px, ' + (touch.clientY - (size / 2)) + 'px)';
return {
position: 'fixed',
left: 0,
top: 0,
background: '#fff',
border: 'solid 1px #999',
opacity: .6,
borderRadius: '100%',
height: size + 'px',
width: size + 'px',
padding: 0,
margin: 0,
display: 'block',
overflow: 'hidden',
pointerEvents: 'none',
webkitUserSelect: 'none',
mozUserSelect: 'none',
userSelect: 'none',
webkitTransform: transform,
mozTransform: transform,
transform: transform,
zIndex: 100
}
};
// export
if (typeof define == "function" && define.amd) {
define(function () {
return TouchEmulator;
});
} else if (typeof module != "undefined" && module.exports) {
module.exports = TouchEmulator;
} else {
window[exportName] = TouchEmulator;
}
})(window, document, "TouchEmulator");

1
unpackage/dist/build/web/static/index.css

File diff suppressed because one or more lines are too long

24
unpackage/dist/build/web/static/js/chunk-vendors.bf77a967.js

File diff suppressed because one or more lines are too long

1
unpackage/dist/build/web/static/js/index.1cf01358.js

File diff suppressed because one or more lines are too long

1
unpackage/dist/build/web/static/js/pages-healthService-healthService.d1610b06.js

File diff suppressed because one or more lines are too long

1
unpackage/dist/build/web/static/js/pages-healthService-healthService2.ba0819c7.js

File diff suppressed because one or more lines are too long

1
unpackage/dist/build/web/static/js/pages-healthService-healthService2~pages-healthService-healthService3~pages-healthService-healthServ~f595f003.ceb1105a.js

File diff suppressed because one or more lines are too long

1
unpackage/dist/build/web/static/js/pages-healthService-healthService3.4b70c5d0.js

File diff suppressed because one or more lines are too long

1
unpackage/dist/build/web/static/js/pages-healthService-healthService4.7cdc1b8d.js

File diff suppressed because one or more lines are too long

1
unpackage/dist/build/web/static/js/pages-healthService-healthService5.e888e398.js

File diff suppressed because one or more lines are too long

1
unpackage/dist/build/web/static/js/pages-healthService-healthService6.1432621b.js

File diff suppressed because one or more lines are too long

1
unpackage/dist/build/web/static/js/pages-healthService-healthService~pages-healthService-healthService2~pages-healthService-healthServi~3462a3b5.29d6f65c.js

File diff suppressed because one or more lines are too long

1
unpackage/dist/build/web/static/js/pages-healthService-healthService~pages-healthService-healthService4~pages-healthService-healthServi~25040ae4.f1b243da.js

File diff suppressed because one or more lines are too long

1
unpackage/dist/build/web/static/js/pages-healthService-healthService~pages-healthService-healthService5.c173610e.js

File diff suppressed because one or more lines are too long

1
unpackage/dist/build/web/static/js/pages-healthService-healthService~pages-login-login~pages-patientAdd-patientAdd.db7dfd3f.js

File diff suppressed because one or more lines are too long

1
unpackage/dist/build/web/static/js/pages-index-index.ac417a51.js

File diff suppressed because one or more lines are too long

1
unpackage/dist/build/web/static/js/pages-login-login.6788d721.js

File diff suppressed because one or more lines are too long

1
unpackage/dist/build/web/static/js/pages-patientAdd-patientAdd.fc8886e1.js

File diff suppressed because one or more lines are too long

BIN
unpackage/dist/build/web/static/uview/common/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
unpackage/dist/build/web/static/uview/common/gray-logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
unpackage/dist/build/web/static/uview/common/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
unpackage/dist/build/web/static/uview/example/component.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
unpackage/dist/build/web/static/uview/example/component_select.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1005 B

BIN
unpackage/dist/build/web/static/uview/example/js.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
unpackage/dist/build/web/static/uview/example/js_bak.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
unpackage/dist/build/web/static/uview/example/js_select.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
unpackage/dist/build/web/static/uview/example/template.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
unpackage/dist/build/web/static/uview/example/template_select.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
unpackage/dist/build/web/uni_modules/v-sign/static/image/clear.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

1
unpackage/dist/build/web/uni_modules/v-sign/static/image/clear.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1639214313546" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="827" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M274.56 798.997333l19.434667-25.130666-33.792 68.565333a18.133333 18.133333 0 0 0 11.562666 25.536l59.733334 16a18.133333 18.133333 0 0 0 17.28-4.48c20.522667-19.818667 35.626667-35.989333 45.290666-48.469333l19.456-25.130667-33.813333 68.565333a18.133333 18.133333 0 0 0 11.562667 25.536l84.48 22.634667a18.133333 18.133333 0 0 0 17.28-4.48c20.522667-19.84 35.626667-35.989333 45.269333-48.469333l19.456-25.130667-33.813333 68.565333A18.133333 18.133333 0 0 0 535.530667 938.666667l72.106666 19.328a18.133333 18.133333 0 0 0 17.28-4.48c20.522667-19.84 35.626667-36.010667 45.269334-48.490667l19.456-25.130667-33.813334 68.586667a18.133333 18.133333 0 0 0 11.584 25.514667l86.421334 23.338666 3.84-0.213333c13.269333-0.704 29.056-5.034667 43.84-12.8 29.781333-15.701333 48.170667-43.2 52.181333-78.250667 2.133333-18.517333 4.778667-38.549333 8.405333-63.530666 1.642667-11.221333 2.944-20.010667 6.229334-41.834667 11.050667-73.322667 14.634667-101.034667 17.130666-133.674667l0.938667-12.373333 2.837333-2.922667 12.330667-1.344a41.813333 41.813333 0 0 0 24.810667-11.221333c10.730667-10.24 14.805333-25.386667 11.093333-42.197333l-37.546667-171.584c-3.029333-13.696-11.264-27.946667-23.146666-39.829334-11.648-11.626667-25.92-20.138667-39.893334-23.893333L723.626667 331.306667l-2.261334-3.925334L774.250667 130.133333c8.32-31.061333-11.754667-63.744-44.970667-72.64l-79.509333-21.312c-33.194667-8.896-66.922667 9.365333-75.264 40.426667l-52.842667 197.269333-3.925333 2.261334-118.101334-31.637334c-13.994667-3.754667-30.634667-3.498667-46.506666 0.746667-16.256 4.352-30.506667 12.586667-39.957334 22.933333l-118.314666 129.792c-11.605333 12.714667-15.658667 27.84-11.52 42.090667 4.16 14.229333 15.850667 25.194667 32.896 30.528l13.610666 4.266667 2.133334 3.882666-3.626667 13.802667c-21.12 79.850667-52.885333 136.917333-85.717333 150.890667-47.530667 20.202667-72.938667 49.429333-78.421334 85.034666-5.034667 32.682667 9.28 67.114667 37.589334 91.541334l22.037333 8.341333 74.666667 20.010667a42.666667 42.666667 0 0 0 41.216-11.050667c15.274667-15.274667 26.88-28.032 34.837333-38.293333z m551.381333-396.565333c14.144 3.797333 29.952 19.2 32.768 32l34.56 157.781333a10.666667 10.666667 0 0 1-13.184 12.586667L240.64 433.493333a10.666667 10.666667 0 0 1-5.12-17.493333l108.8-119.36c8.832-9.685333 30.229333-15.146667 44.373333-11.349333l141.333334 37.866666a21.333333 21.333333 0 0 0 26.133333-15.082666l58.304-217.642667a21.333333 21.333333 0 0 1 26.133333-15.082667l77.056 20.650667a21.333333 21.333333 0 0 1 15.082667 26.133333l-58.325333 217.642667a21.333333 21.333333 0 0 0 15.082666 26.112l136.448 36.565333zM315.456 701.568c-33.664 45.141333-64.597333 79.082667-92.8 101.802667l-5.909333 4.778666-2.837334 0.597334-88.106666-24.106667-2.922667-3.2c-13.034667-14.165333-19.370667-31.04-16.981333-46.592 3.285333-21.333333 22.058667-39.338667 53.205333-52.586667 31.722667-13.482667 59.818667-47.104 82.922667-99.904 10.026667-22.954667 18.88-48.725333 26.389333-76.586666l3.882667-14.4 3.904-2.261334 566.165333 151.701334 2.346667 3.306666-0.789334 12.224c-1.984 30.592-30.336 229.397333-32.128 244.906667-2.346667 20.416-11.306667 34.986667-27.605333 44.394667a73.237333 73.237333 0 0 1-21.397333 8.106666l-5.013334 0.725334-60.373333-16.170667 11.242667-20.288c8.277333-14.976 22.656-43.84 43.093333-86.613333a21.12 21.12 0 0 0-9.962667-28.16l-3.136-1.493334a21.333333 21.333333 0 0 0-26.261333 6.485334c-33.642667 45.056-64.533333 78.912-92.672 101.546666l-5.909333 4.757334-2.837334 0.597333-52.544-14.08 11.114667-20.266667c3.562667-6.485333 7.04-13.013333 10.453333-19.626666 7.04-13.504 17.898667-35.797333 32.597334-66.816a21.290667 21.290667 0 0 0-9.984-28.309334l-3.029334-1.450666a21.333333 21.333333 0 0 0-26.368 6.442666c-33.6 45.013333-64.469333 78.826667-92.608 101.482667l-5.909333 4.757333-2.837333 0.597334-52.138667-13.973334 11.114667-20.266666c3.242667-5.888 6.72-12.416 10.453333-19.626667 6.997333-13.461333 17.962667-35.946667 32.896-67.434667a20.970667 20.970667 0 0 0-10.112-28.010666l-3.328-1.536a21.333333 21.333333 0 0 0-26.069333 6.613333c-33.642667 45.056-64.554667 78.976-92.778667 101.696l-5.909333 4.757333-2.837334 0.597334-32.64-8.746667 11.093334-20.245333c3.541333-6.506667 7.04-13.034667 10.453333-19.626667 6.976-13.482667 17.941333-35.968 32.874667-67.456a21.056 21.056 0 0 0-10.069334-28.074667l-3.242666-1.514666a21.333333 21.333333 0 0 0-26.154667 6.549333z" fill="#333333" p-id="828"></path></svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
unpackage/dist/build/web/uni_modules/v-sign/static/image/next.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

1
unpackage/dist/build/web/uni_modules/v-sign/static/image/next.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1639214327673" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1119" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M588.8 934.4c-17.066667-4.266667-25.6-21.333333-25.6-38.4v-204.8c-68.266667-8.533333-128-4.266667-192 12.8-76.8 21.333333-170.666667 93.866667-273.066667 213.333333-12.8 17.066667-34.133333 21.333333-51.2 12.8-17.066667-8.533333-29.866667-25.6-25.6-42.666666 17.066667-162.133333 76.8-298.666667 187.733334-405.333334 98.133333-98.133333 213.333333-153.6 349.866666-166.4V128c0-17.066667 8.533333-34.133333 25.6-38.4 17.066667-8.533333 34.133333-4.266667 46.933334 8.533333l358.4 375.466667c17.066667 17.066667 17.066667 42.666667 0 59.733333l-358.4 392.533334c-8.533333 8.533333-21.333333 12.8-29.866667 12.8-4.266667 0-8.533333 0-12.8-4.266667z m55.466667-699.733333v123.733333c0 21.333333-17.066667 42.666667-42.666667 42.666667-132.266667 0-243.2 46.933333-337.066667 140.8-59.733333 59.733333-102.4 128-128 204.8 72.533333-68.266667 145.066667-110.933333 209.066667-128 85.333333-21.333333 166.4-25.6 260.266667-8.533334 21.333333 4.266667 34.133333 21.333333 34.133333 42.666667v132.266667l256-281.6-251.733333-268.8z" fill="#333333" p-id="1120"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
unpackage/dist/build/web/uni_modules/v-sign/static/image/prev.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

1
unpackage/dist/build/web/uni_modules/v-sign/static/image/prev.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1639214320974" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="973" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M422.4 938.666667c-12.8 0-21.333333-4.266667-29.866667-12.8L34.133333 533.333333c-17.066667-17.066667-12.8-42.666667 0-59.733333l358.4-375.466667c8.533333-12.8 25.6-17.066667 42.666667-8.533333s25.6 21.333333 25.6 38.4v187.733333c136.533333 8.533333 256 64 354.133333 166.4 106.666667 106.666667 170.666667 243.2 187.733334 405.333334 0 17.066667-8.533333 38.4-25.6 42.666666-17.066667 8.533333-38.4 4.266667-51.2-12.8-98.133333-119.466667-192-196.266667-273.066667-213.333333-64-17.066667-123.733333-21.333333-192-12.8V896c0 17.066667-12.8 34.133333-25.6 38.4-4.266667 4.266667-8.533333 4.266667-12.8 4.266667z m-298.666667-435.2l256 281.6v-132.266667c0-21.333333 17.066667-38.4 34.133334-42.666667 93.866667-17.066667 174.933333-12.8 260.266666 8.533334 64 17.066667 136.533333 59.733333 209.066667 128-25.6-76.8-72.533333-149.333333-128-204.8-93.866667-93.866667-204.8-140.8-337.066667-140.8-21.333333 0-42.666667-21.333333-42.666666-42.666667V234.666667l-251.733334 268.8z" fill="#333333" p-id="974"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
unpackage/dist/build/web/uni_modules/v-sign/static/image/save.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

1
unpackage/dist/build/web/uni_modules/v-sign/static/image/save.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1639214153477" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="861" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M62.848 60.992h704v64h-704zM62.848 640.832h543.936v64H62.848z" fill="#333333" p-id="862"></path><path d="M702.848 60.992h64v320h-64zM62.848 113.536h64v527.296h-64z" fill="#333333" p-id="863"></path><path d="M70.528 498.304l218.24-117.312 30.4 56.32-218.304 117.376z" fill="#333333" p-id="864"></path><path d="M298.432 375.04l144.896 274.176-56.576 29.888L241.92 404.928zM512 194.176h126.592v127.168H512zM663.296 448.448h128v320h-128z" fill="#333333" p-id="865"></path><path d="M599.36 764.992l127.936 128 128.064-128z" fill="#333333" p-id="866"></path></svg>

After

Width:  |  Height:  |  Size: 934 B

2
unpackage/dist/dev/app-plus/manifest.json

@ -1 +1 @@
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__FBDBEC9","name":"老年健康","version":{"name":"1.0.0.1","code":1},"description":"多平台快速开发的UI框架","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"Webview-x5":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"render":"always","id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#FFFFFF"},"optimization":{"subPackages":true},"safearea":{"bottom":{"offset":"none"}},"usingComponents":true,"nvueCompiler":"uni-app","compilerVersion":3,"distribute":{"icons":{"android":{"hdpi":"unpackage/res/icons/72x72.png","xhdpi":"unpackage/res/icons/96x96.png","xxhdpi":"unpackage/res/icons/144x144.png","xxxhdpi":"unpackage/res/icons/192x192.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"}}},"google":{"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.CALL_PHONE\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"],"abiFilters":["armeabi-v7a","arm64-v8a"]},"apple":{"idfa":false,"dSYMs":false},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"4.29","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"launch_path":"__uniappview.html"}}
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__FBDBEC9","name":"老年健康","version":{"name":"1.0.0.2","code":1},"description":"多平台快速开发的UI框架","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"Webview-x5":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"render":"always","id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#FFFFFF"},"optimization":{"subPackages":true},"safearea":{"bottom":{"offset":"none"}},"usingComponents":true,"nvueCompiler":"uni-app","compilerVersion":3,"distribute":{"icons":{"android":{"hdpi":"unpackage/res/icons/72x72.png","xhdpi":"unpackage/res/icons/96x96.png","xxhdpi":"unpackage/res/icons/144x144.png","xxxhdpi":"unpackage/res/icons/192x192.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"}}},"google":{"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.CALL_PHONE\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"],"abiFilters":["armeabi-v7a","arm64-v8a"]},"apple":{"idfa":false,"dSYMs":false},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"4.29","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"launch_path":"__uniappview.html"}}

BIN
unpackage/release/apk/老年健康v1.0.0.2.apk

Binary file not shown.

36
util/request/requestInterceptors.js

@ -3,17 +3,25 @@
* @param {Object} http
*/
module.exports = (vm) => {
uni.$u.http.interceptors.request.use((config) => {
// 可使用async await 做异步操作
let token = uni.getStorageSync('userToken')
if(token){
config.header.Authorization = `Bearer ${token}`;
}
// 初始化请求拦截器时,会执行此方法,此时data为undefined,赋予默认{}
config.data = config.data || {}
// 可以在此通过vm引用vuex中的变量,具体值在vm.$store.state中
// console.log(vm.$store.state);
return config
}, (config) => // 可使用async await 做异步操作
Promise.reject(config))
}
uni.$u.http.interceptors.request.use(
(config) => {
uni.showLoading({
title: "加载中...",
mask: true,
});
// 可使用async await 做异步操作
let token = uni.getStorageSync("userToken");
if (token && !config.url.includes("login")) {
config.header.Authorization = `Bearer ${token}`;
}
// 初始化请求拦截器时,会执行此方法,此时data为undefined,赋予默认{}
config.data = config.data || {};
// 可以在此通过vm引用vuex中的变量,具体值在vm.$store.state中
// console.log(vm.$store.state);
return config;
},
(
config // 可使用async await 做异步操作
) => Promise.reject(config)
);
};

64
util/request/responseInterceptors.js

@ -1,30 +1,42 @@
/**
* 响应拦截
* @param {Object} http
* @param {Object} http
*/
module.exports = (vm) => {
uni.$u.http.interceptors.response.use((response) => { /* 对响应成功做点什么 可使用async await 做异步操作*/
// console.log('response',response)
const data = response.data
// 自定义参数
const custom = response.config?.custom
if (data.code == 200) { // 服务端返回的状态码不等于200,则reject()
}
if (data.code == 401) { // 服务端返回的状态码不等于200,则reject()
uni.$u.toast('登录失效,请重新登录')
uni.removeStorageSync('userToken')
setTimeout(() => {
uni.reLaunch({
url: '/pages/login/login',
});
}, 100);
}
if (data.code == 500) { // 服务端返回的状态码不等于200,则reject()
uni.$u.toast(data.msg || '')
}
return data || {}
}, (response) => { /* 对响应错误做点什么 (statusCode !== 200)*/
return Promise.reject(response)
})
}
uni.$u.http.interceptors.response.use(
(response) => {
/* 对响应成功做点什么 可使用async await 做异步操作*/
// console.log('response',response)
const data = response.data;
// 自定义参数
const custom = response.config?.custom;
if (data.code == 200) {
// 服务端返回的状态码不等于200,则reject()
}
if (data.code == 401) {
// 服务端返回的状态码不等于200,则reject()
uni.$u.toast("登录失效,请重新登录");
uni.removeStorageSync("userToken");
setTimeout(() => {
uni.reLaunch({
url: "/pages/login/login",
});
}, 100);
}
if (data.code == 500) {
// 服务端返回的状态码不等于200,则reject()
uni.$u.toast(data.msg || "");
}
uni.hideLoading();
return data || {};
},
(response) => {
uni.$u.toast("请求错误");
setTimeout(() => {
uni.hideLoading();
}, 1000);
/* 对响应错误做点什么 (statusCode !== 200)*/
return Promise.reject(response);
}
);
};

Loading…
Cancel
Save