This commit is contained in:
LittleBoy 2019-06-23 11:37:44 +08:00
parent 0175c02241
commit 3ef98415b0
18 changed files with 382 additions and 79 deletions

22
app.js
View File

@ -7,15 +7,18 @@ App({
// var logs = wx.getStorageSync('logs') || []
// logs.unshift(Date.now())
// wx.setStorageSync('logs', logs)
this.globalData.openId = wx.getStorageSync('openId') || '';
var openId = this.globalData.openId = wx.getStorageSync('openId') || '';
// 登录
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
console.log('login==>', res);
}
})
// wx.login({
// success: res => {
// // 发送 res.code 到后台换取 openId, sessionKey, unionId
// console.log('login==>', res);
// }
// })
if (openId){
return;
}
// 获取用户信息
wx.getSetting({
success: res => {
@ -25,8 +28,8 @@ App({
wx.getUserInfo({
success: res => {
// 可以将 res 发送给后台解码出 unionId
this.globalData.userInfo = res.userInfo
this.globalData.wxuserInfo = res.userInfo
// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
// 所以此处加入 callback 以防止这种情况
if (this.userInfoReadyCallback) {
@ -40,6 +43,7 @@ App({
},
globalData: {
wxuserInfo:null,
userInfo: null,
openId: ''
}

View File

@ -1,8 +1,9 @@
{
"pages": [
"pages/user/index",
"pages/index/index",
"pages/user/result",
"pages/user/evaluation",
"pages/user/index",
"pages/init/userinfo",
"pages/init/agreement"
],

View File

@ -106,6 +106,14 @@ checkbox .wx-checkbox-input.wx-checkbox-input-checked::before {
display: block;
margin-bottom: 20rpx;
}
.form-group radio{
margin-right:10rpx;
position: relative;
top:-2rpx;
}
.form-group radio-group label{
display: inline-block;
}
input, .select-input {
border-radius: 4px 4px 4px 4px;

1
assets/head.svg Normal file
View File

@ -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="1561257774112" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2555" width="200" height="200" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M712.704 591.872c-6.144-6.144-16.384-6.144-20.48 0-6.144 6.144-6.144 14.336 0 20.48 45.056 45.056 71.68 106.496 71.68 169.984 0 8.192 6.144 14.336 14.336 14.336s14.336-6.144 14.336-14.336C792.576 710.656 763.904 643.072 712.704 591.872zM520.192 184.32c-100.352 0-182.272 79.872-182.272 180.224 0 71.68 40.96 131.072 102.4 161.792-43.008 12.288-79.872 34.816-112.64 67.584-51.2 51.2-79.872 118.784-79.872 190.464 0 8.192 6.144 14.336 14.336 14.336 8.192 0 14.336-6.144 14.336-14.336 0-63.488 24.576-124.928 71.68-169.984 45.056-45.056 104.448-69.632 167.936-69.632 0 0 2.048 0 2.048 0 100.352 0 182.272-79.872 182.272-180.224S618.496 184.32 520.192 184.32zM520.192 514.048C520.192 514.048 520.192 514.048 520.192 514.048c-2.048 0-2.048 0-4.096 0-81.92-2.048-149.504-67.584-149.504-149.504 0-81.92 67.584-149.504 151.552-149.504 83.968 0 151.552 67.584 151.552 149.504C669.696 446.464 604.16 514.048 520.192 514.048z" p-id="2556" fill="#d81e06"></path></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -7,7 +7,9 @@ Page({
data: {
motto: 'Hello World',
userInfo: {
avatarUrl: 'http://thirdwx.qlogo.cn/mmopen/vi_32/9xkaQhBrbjIsJNJkxKicKayJiajy2ZsKFHM7vhibPjic0sLhn0cxCicxgQUl9VDF9o02NsQlcxZicJPWb4K9RibQJ8ibDQ/132'
avatarUrl: '/assets/head.svg',
realname:'张二娃',
lastEvaluation:'2019-06-23 09:43'
},
hasUserInfo: false,
canIUse: wx.canIUse('button.open-type.getUserInfo')
@ -25,12 +27,13 @@ Page({
})
},
onLoad: function() {
// 加载
if (app.globalData.userInfo) {
this.setData({
userInfo: app.globalData.userInfo,
hasUserInfo: true
})
} else if (this.data.canIUse) {
} else if (this.data.canIUse) { // 可以获取用户信息
// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
// 所以此处加入 callback 以防止这种情况
app.userInfoReadyCallback = res => {
@ -54,10 +57,15 @@ Page({
},
getUserInfo: function(e) {
console.log(e)
app.globalData.userInfo = e.detail.userInfo
app.globalData.wxuserInfo = e.detail.userInfo
this.setData({
userInfo: e.detail.userInfo,
hasUserInfo: true
})
},
gotoEvaluation(){
wx.navigateTo({
url: './../user/evaluation',
})
}
})

View File

@ -1,14 +1,16 @@
<!--index.wxml-->
<view class="container page-user">
<view class="cu-list menu-avatar user-info">
<view hidden="{{!hasUserInfo}}" class="cu-list menu-avatar user-info">
<view class="cu-item" bindtap="onUserInfoTap">
<view class="cu-avatar round lg" style="background-image:url({{userInfo.avatarUrl}});"></view>
<view class="content">
<view class="text-grey">
<text class="text-cut">张二娃</text>
<text class="text-cut">{{userInfo.realname}}</text>
</view>
<view class="text-gray text-sm flex">
<text class="text-cut">评估时间: <text>2019/06/01 12:22</text></text>
<view class="text-cut">
评估时间:<text>{{userInfo.lastEvaluation}}</text>
</view>
</view>
</view>
<view class="action">
@ -26,7 +28,7 @@
<image src="/assets/index.png"></image>
</view>
<view>
<button wx:if="{{hasUserInfo}}" class="btn-green btn-single btn-round" open-type="getUserInfo" bindgetuserinfo="getUserInfo">开始自评</button>
<button wx:if="{{hasUserInfo}}" class="btn-green btn-single btn-round" bindtap="gotoEvaluation">开始自评</button>
<button wx:else class="btn-green btn-single btn-round" open-type="getUserInfo" bindgetuserinfo="getUserInfo">开始自评</button>
</view>
</view>

View File

@ -1,11 +1,14 @@
// pages/user/evaluation.js
import {createEvaluation} from './../../utils/api.js';
Page({
/**
* 页面的初始数据
*/
data: {
subjects: [{
subjects: [
{
"title": "您是否感到头疼不适?",
"subject": "headache",
"options": [{
@ -73,14 +76,43 @@ Page({
"score": 3
}]
}
]
],
createModel:{
headache: -1,
gastrointestinal: -1,
tired: -1,
dizzy:-1
}
},
onRadioChange(e){
let subj = e.currentTarget.dataset.subject;
var model = this.data.createModel;
model[subj] = e.detail.value;
this.setData({
createModel: model
})
},
async onSubmit(){
for(var k in this.data.createModel){
if(this.data.createModel[k] == -1){
wx.showToast({
title: '请选择所有选项后再提交', icon:'none'
});
return;
}
}
let data = await createEvaluation(this.data.createModel);
console.log(data);
wx.hideLoading();
wx.redirectTo({
url: 'result?id=' + data.id,
});
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function(options) {
},
/**

View File

@ -9,19 +9,18 @@
<text class="text-red text-big">6-72</text>
<text class="text-red">小时内</text>
,判断是否具有以下症状:
</view>
<view class="card"wx:for="{{subjects}}">
</view>
<view class="card" wx:for="{{subjects}}" wx:key="card">
<view class="form-group" >
<label>{{index+1}}、{{item.title}}</label>
<radio-group>
<view class="item" wx:for="{{item.options}}" wx:for-index="idx" wx:for-item="itemName">
<label>
<radio value="{{idx}}" />{{itemName.text}}</label>
<radio-group bindchange="onRadioChange" data-subject="{{item.subject}}">
<view class="item" wx:for="{{item.options}}" wx:for-index="idx" wx:for-item="itemName" wx:key="item">
<label><radio value="{{idx}}" />{{itemName.text}}</label>
</view>
</radio-group>
</view>
</view>
<view class="text-center container-card">
<button class="btn-green btn-single go-to-next btn-round">提交自评</button>
<button bindtap="onSubmit" class="btn-green btn-single go-to-next btn-round">提交自评</button>
</view>
</view>

View File

@ -7,5 +7,11 @@
}
.form-group picker, radio-group .item, checkbox-group .item {
margin-bottom: 30rpx;
margin-top: 30rpx;
}
radio-group .item:first-child{
margin-top: 10rpx;
}
.form-group{
margin-bottom: 0rpx;
}

View File

@ -41,30 +41,7 @@ Page({
value: ''
},
userDetail: {},
dataList: Array(2).fill({
create_time: '2019-06-20 12:20',
totalScore: 4,
headache: {
subject: '头痛',
text: '无头痛',
score: '0'
},
gastrointestinal: {
subject: '胃肠道症状',
text: '食欲不振或恶心',
score: '2'
},
tired: {
subject: '劳累或虚弱',
text: '轻度疲劳或虚弱',
score: '2'
},
dizzy: {
subject: '头晕或眩晕',
text: '无头晕或眩晕',
score: '0'
},
}),
dataList: [],
collapseTags: []
},
@ -77,31 +54,32 @@ Page({
async initUserData() {
let evaluationData = await api.queryAllEvaluation();
var tags = [];
evaluationData.data.forEach((o,i) => {
console.log(evaluationData);
evaluationData.forEach((o,i) => {
tags.push(true);
let level = 0;
// 判断结果
if(o.options[0].score == 0 || o.score < 3){
// 没有高反
level = 0;
} else if (o.score <= 5) {
level = 1;
} else if (o.score <= 9) {
level = 2;
} else if (o.score <= 12) {
level = 3;
} else {
level = 4;
}
evaluationData.data[i]['level'] = level;
// let level = 0;
// // 判断结果
// if(o.options[0].score == 0 || o.score < 3){
// // 没有高反
// level = 0;
// } else if (o.score <= 5) {
// level = 1;
// } else if (o.score <= 9) {
// level = 2;
// } else if (o.score <= 12) {
// level = 3;
// } else {
// level = 4;
// }
// evaluationData.data[i]['level'] = level;
})
this.setData({
dataList: evaluationData.data,
dataList: evaluationData,
collapseTags: tags
});
let userDetail = await api.queryUserDetail();
this.setData({
userDetail: userDetail.data
userDetail: userDetail
});
},
switchView() {

View File

@ -51,19 +51,19 @@
<view class="result">
<view class="level-0" wx:if="{{item.level == 0}}">
<view>自评结果:{{item.result}} - {{item.level}}</view>
<view>自评结果:{{item.result}}</view>
<view hidden="{{item.level == 0}}">医疗建议:{{item.suggest}}</view>
</view>
<view class="level-1" wx:if="{{item.level == 1}}">
<view>自评结果:{{item.result}} - {{item.level}}</view>
<view>自评结果:{{item.result}}</view>
<view hidden="{{item.level == 0}}">医疗建议:{{item.suggest}}</view>
</view>
<view class="level-2" wx:if="{{item.level == 2}}">
<view>自评结果:{{item.result}} - {{item.level}}</view>
<view>自评结果:{{item.result}}</view>
<view hidden="{{item.level == 0}}">医疗建议:{{item.suggest}}</view>
</view>
<view class="level-3" wx:if="{{item.level == 3}}">
<view>自评结果:{{item.result}} - {{item.level}}</view>
<view>自评结果:{{item.result}}</view>
<view hidden="{{item.level == 0}}">医疗建议:{{item.suggest}}</view>
</view>

View File

@ -1,13 +1,15 @@
/* pages/user/index.wxss */
@import 'vars.wxss';
page {
--tableDataPaddding: 20rpx;
--subjectWidth: 160rpx;
--scoreWidth: 100rpx;
--nameSize: 34rpx;
--dataTextSize: 24rpx;
--headerBg:#2ec7a5;
--headerColor: #fff;
}
.user-info .cu-item {
background: #2ec7a5 !important;
color: #fff;

71
pages/user/result.js Normal file
View File

@ -0,0 +1,71 @@
// pages/user/result.js
import {queryEvaluationById} from './../../utils/api.js';
Page({
/**
* 页面的初始数据
*/
data: {
item:{}
},
/**
* 生命周期函数--监听页面加载
*/
async onLoad(options) {
let id = options.id ?options.id:4;
let data = await queryEvaluationById(id);
this.setData({
item:data
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

3
pages/user/result.json Normal file
View File

@ -0,0 +1,3 @@
{
"usingComponents": {}
}

50
pages/user/result.wxml Normal file
View File

@ -0,0 +1,50 @@
<!--pages/user/result.wxml-->
<view class="cu-list menu-avatar user-info">
<view class="result-info text-center page-green-header">
<view class='title'>自评结果</view>
<view class="score">
<text>{{item.score}}</text>
<text class="tag">分</text>
</view>
<view class="result-type">
<text class="level-0" wx:if="{{item.level == 0}}">没有高原反应</text>
<text class="level-1" wx:if="{{item.level == 1}}">轻度高原反应</text>
<text class="level-2" wx:if="{{item.level == 2}}">中度高原反应</text>
<text class="level-3" wx:if="{{item.level == 3}}">重度高原反应</text>
</view>
</view>
<view class="result-detail content collapse">
<view class="table-list">
<view class="row header">
<view class="subject">症状</view>
<view class="col">程度</view>
<view class="score">得分</view>
</view>
<view class="row" wx:for="{{item.options}}" wx:key="op" wx:for-item="op">
<view class="subject">{{op.subject}}</view>
<view class="col">{{op.text}}</view>
<view class="score">{{op.score}}</view>
</view>
</view>
<view class="result">
<view class="level-0" wx:if="{{item.level == 0}}">
<view>自评结果:{{item.result}}</view>
<view hidden="{{item.level == 0}}">医疗建议:{{item.suggest}}</view>
</view>
<view class="level-1" wx:if="{{item.level == 1}}">
<view>自评结果:{{item.result}}</view>
<view hidden="{{item.level == 0}}">医疗建议:{{item.suggest}}</view>
</view>
<view class="level-2" wx:if="{{item.level == 2}}">
<view>自评结果:{{item.result}}</view>
<view hidden="{{item.level == 0}}">医疗建议:{{item.suggest}}</view>
</view>
<view class="level-3" wx:if="{{item.level == 3}}">
<view>自评结果:{{item.result}}</view>
<view hidden="{{item.level == 0}}">医疗建议:{{item.suggest}}</view>
</view>
</view>
</view>
</view>

108
pages/user/result.wxss Normal file
View File

@ -0,0 +1,108 @@
/* pages/user/result.wxss */
@import 'vars.wxss';
page {
--colorBorder:#eaeaea;
--border:solid 1px #eaeaea;
--bgColor:rgba(17, 223, 177, 0.07);
--tableDataPaddding:8rpx 20rpx;
}
.result-info{
padding:30rpx 0;
}
.result-info .title{
font-size: 40rpx;
}
.result-info .score{
font-size: 100rpx;
padding:40rpx 0 50rpx;
}
.result-info .tag{
font-size: 24rpx;
margin-left:6rpx;
}
.result-info .result-type text{
background-color: #259b24;
border-radius: 8rpx;
color: #fff;
display: inline-block;
padding: 2px 6px;
line-height: 40rpx;
}
.result-info .level-0 {
color: #000;
background: none;
}
.result-info .level-1 {
background-color: #259b24;
}
.result-info .level-2 {
background-color: #ff9800;
}
.result-info .level-3 {
background-color: #e51c23;
}
.table-list {
border-top: var(--border);
}
.table-list .row, .item {
border-bottom: var(--border);
}
.item:last-child .content .result {
border-bottom: none;
}
.collapse {
line-height: 30px;
}
.collapse .title {
background: rgba(0, 0, 0, 0.04);
}
.collapse .row view {
padding: var(--tableDataPaddding);
}
.collapse .item .title .col {
/* padding: 0 var(--tableDataPaddding); */
margin: 0;
}
.content .row {
font-size: var(--dataTextSize);
}
.row .subject {
width: var(--subjectWidth);
}
.row .score {
width: var(--scoreWidth);
text-align: center;
}
.result{
background-color:var(--bgColor);
border-bottom: var(--border);
line-height: 40rpx;
padding: 20rpx;
font-weight: bold;
}
.header{
background-color:var(--bgColor);
}
.result .level-1 {
color: #259b24;
}
.result .level-2 {
color: #ff9800;
}
.result .level-3 {
color: #e51c23;
}

14
pages/user/vars.wxss Normal file
View File

@ -0,0 +1,14 @@
page {
--tableDataPaddding: 20rpx;
--subjectWidth: 160rpx;
--scoreWidth: 100rpx;
--nameSize: 34rpx;
--dataTextSize: 24rpx;
--headerBg:#2ec7a5;
--headerColor: #fff;
}
.page-green-header{
background: var(--headerBg) !important;
color: var(--headerColor);
}

View File

@ -1,4 +1,4 @@
const API_URL = 'http://192.168.10.80:8000';
const API_URL = 'http://127.0.0.1:8000';
const app = getApp();
const openId = app.globalData.openId;
const requestApi = (api, data = {}, method = "GET") => {
@ -7,18 +7,31 @@ const requestApi = (api, data = {}, method = "GET") => {
wx.showLoading({
title: '请求数据中...',
});
// let headers = {};
// if(method.toLocaleLowerCase() == 'post'){
// headers['content-type']
// }
wx.request({
url: API_URL + api,
data,
header: {
'content-type': 'application/json' // 默认值
'content-type': 'application/x-www-form-urlencoded' // 默认值
},
method,
dataType: 'json',
responseType: 'text',
success: function(res) {
wx.hideLoading();
resolve(res);
if(res.statusCode != 200){
reject(res);
} else {
if(res.data.code && res.data.code != 0){
wx.showModal({ title: res.data.message, showCancel: false })
//reject(res);
}else{
resolve(res.data);
}
}
},
fail: function(res) {
wx.hideLoading();
@ -45,6 +58,9 @@ export function queryUserDetail() {
export function queryAllEvaluation() {
return requestApi('/evaluation/all');
}
export function queryEvaluationById(id){
return requestApi('/evaluation/detail',{id});
}
/**
* 创建用户评估数据
*/