第一次
63
App.vue
Normal file
@ -0,0 +1,63 @@
|
||||
<script>
|
||||
export default {
|
||||
onLaunch: function() {},
|
||||
onShow: function() {},
|
||||
onHide: function() {}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
/*每个页面公共css */
|
||||
@import "uview-ui/index.scss";
|
||||
|
||||
.app {
|
||||
background-color: #F4F5F7;
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
// position: relative;
|
||||
color: #000000;
|
||||
padding: 30rpx 0 200rpx 0;
|
||||
|
||||
.cards {
|
||||
width: 94%;
|
||||
box-shadow: 0px 0px 30rpx 0px rgba(108, 99, 255, 0.16);
|
||||
background-color: #fff;
|
||||
position: absolute;
|
||||
top: 3%;
|
||||
left: 3%;
|
||||
display: flex;
|
||||
justify-content: space-evenly;
|
||||
flex-wrap: wrap;
|
||||
padding: 40rpx 0 200rpx 0;
|
||||
border-radius: 25rpx;
|
||||
|
||||
.item {
|
||||
width: 43%;
|
||||
height: 300rpx;
|
||||
margin-bottom: 40rpx;
|
||||
border-radius: 25rpx;
|
||||
position: relative;
|
||||
|
||||
.title {
|
||||
width: 70%;
|
||||
text-align: center;
|
||||
font-size: 46rpx;
|
||||
color: #FCFCFC;
|
||||
position: absolute;
|
||||
top: 58%;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
|
||||
image {
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
position: absolute;
|
||||
top: 20%;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
24
api/Modifyinformation/Modifyinformation.js
Normal file
@ -0,0 +1,24 @@
|
||||
import request from "../request.js"
|
||||
|
||||
export function userPassWord(data) {
|
||||
return request({
|
||||
url: `/nurseApp/PersonLogin/userPassWord`,
|
||||
method: 'POST',
|
||||
data,
|
||||
})
|
||||
}
|
||||
export function updateHeadAvatarHead(userId,File) {
|
||||
return request({
|
||||
url: `/nurseApp/PersonLogin/updateHeadAvatarHead?userId=${userId}&File=${File}`,
|
||||
method: 'POST',
|
||||
data,
|
||||
})
|
||||
}
|
||||
export function nursePerson(phonenumber,password) {
|
||||
return request({
|
||||
url: `/nurseApp/PersonLogin/nursePerson?phonenumber=${phonenumber}&password=${password}`,
|
||||
method: 'GET'
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
10
api/Mymission.js
Normal file
@ -0,0 +1,10 @@
|
||||
import request from "./request.js"
|
||||
|
||||
|
||||
export function selectMission(nursePersonId,orderStatus,pageNum,pageSize) {
|
||||
return request({
|
||||
url: `/nurseApp/personLogin/selectMission?nursePersonId=${nursePersonId}&orderStatus=${orderStatus}&pageNum=${pageNum}&pageSize=${pageSize}`,
|
||||
method: 'GET'
|
||||
})
|
||||
}
|
||||
|
||||
4
api/baseurl.js
Normal file
@ -0,0 +1,4 @@
|
||||
var baseurl = "http://192.168.16.30:8081";
|
||||
// var baseurl = "http://192.168.16.48:8081";
|
||||
// var baseurl = "http://192.168.16.76:8080";
|
||||
export default baseurl
|
||||
9
api/forgotPassword/forgotPassword.js
Normal file
@ -0,0 +1,9 @@
|
||||
import request from "../request.js"
|
||||
|
||||
export function updatePassword(phonenumber, password,) {
|
||||
return request({
|
||||
url: `/nurseApp/PersonLogin/updatePassword?phonenumber=${phonenumber}&password=${password}`,
|
||||
method: 'POST'
|
||||
})
|
||||
}
|
||||
|
||||
9
api/login/index.js
Normal file
@ -0,0 +1,9 @@
|
||||
import request from "../request.js"
|
||||
|
||||
//密码
|
||||
export function appLogin(phonenumber, password) {
|
||||
return request({
|
||||
url: `/nurseApp/PersonLogin/appLogin?phonenumber=${phonenumber}&password=${password}`,
|
||||
method: 'POST'
|
||||
})
|
||||
}
|
||||
7
api/personnal/personal.js
Normal file
@ -0,0 +1,7 @@
|
||||
import request from "../request.js"
|
||||
export function nursePerson(phonenumber,password) {
|
||||
return request({
|
||||
url: `/nurseApp/PersonLogin/nursePerson?phonenumber=${phonenumber}&password=${password}`,
|
||||
method: 'GET'
|
||||
})
|
||||
}
|
||||
16
api/register/index.js
Normal file
@ -0,0 +1,16 @@
|
||||
import request from "../request.js"
|
||||
|
||||
export function nurseAppLoginSysUser(data) {
|
||||
return request({
|
||||
url: `/nurseApp/PersonLogin/nurseAppLoginSysUser`,
|
||||
method: 'POST',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
export function personNurseStationLists(pageNum,pageSize) {
|
||||
return request({
|
||||
url: `/nurseApp/PersonLogin/personNurseStationLists?pageNum=${pageNum}&pageSize=${pageSize}`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
49
api/request.js
Normal file
@ -0,0 +1,49 @@
|
||||
import baseurl from './baseurl.js'
|
||||
|
||||
var request = function(config) {
|
||||
return new Promise((resolve, rejected) => {
|
||||
uni.showLoading({
|
||||
title: ''
|
||||
});
|
||||
uni.request({
|
||||
url: baseurl + config.url,
|
||||
data: config.data,
|
||||
method: config.method,
|
||||
timeout: 10000,
|
||||
// header: {
|
||||
// token: uni.getStorageSync('token')
|
||||
// },
|
||||
success(res) {
|
||||
// if (res.data.code == 20002) {
|
||||
// uni.showModal({
|
||||
// title: "登录提示",
|
||||
// content: res.data.message,
|
||||
// success(res1) {
|
||||
// if (res1.confirm) {
|
||||
// uni.navigateTo({
|
||||
// url: '/pages/user/login/login'
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
// })
|
||||
// } else {
|
||||
// if (res.data.success) {
|
||||
uni.hideLoading();
|
||||
resolve(res.data)
|
||||
// } else {
|
||||
// uni.showToast({
|
||||
// title: res.data.message,
|
||||
// icon: "none"
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
},
|
||||
fail(err) {
|
||||
uni.hideLoading();
|
||||
rejected(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export default request
|
||||
11
api/taskDetails.js
Normal file
@ -0,0 +1,11 @@
|
||||
import request from "./request.js"
|
||||
|
||||
// 任务详情
|
||||
|
||||
export function taskDetails(orderDetailsId) {
|
||||
return request({
|
||||
url: `/nurseApp/personLogin/taskDetails?&orderDetailsId=${orderDetailsId}`,
|
||||
method: 'GET'
|
||||
})
|
||||
}
|
||||
|
||||
20
index.html
Normal file
@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<script>
|
||||
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
|
||||
CSS.supports('top: constant(a)'))
|
||||
document.write(
|
||||
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
|
||||
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
|
||||
</script>
|
||||
<title></title>
|
||||
<!--preload-links-->
|
||||
<!--app-context-->
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"><!--app-html--></div>
|
||||
<script type="module" src="/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
23
main.js
Normal file
@ -0,0 +1,23 @@
|
||||
import App from './App'
|
||||
|
||||
// #ifndef VUE3
|
||||
import Vue from 'vue'
|
||||
import uView from "uview-ui";
|
||||
Vue.use(uView);
|
||||
Vue.config.productionTip = false
|
||||
App.mpType = 'app'
|
||||
const app = new Vue({
|
||||
...App
|
||||
})
|
||||
app.$mount()
|
||||
// #endif
|
||||
|
||||
// #ifdef VUE3
|
||||
import { createSSRApp } from 'vue'
|
||||
export function createApp() {
|
||||
const app = createSSRApp(App)
|
||||
return {
|
||||
app
|
||||
}
|
||||
}
|
||||
// #endif
|
||||
72
manifest.json
Normal file
@ -0,0 +1,72 @@
|
||||
{
|
||||
"name" : "NursingrecipientAPP",
|
||||
"appid" : "",
|
||||
"description" : "",
|
||||
"versionName" : "1.0.0",
|
||||
"versionCode" : "100",
|
||||
"transformPx" : false,
|
||||
/* 5+App特有相关 */
|
||||
"app-plus" : {
|
||||
"usingComponents" : true,
|
||||
"nvueStyleCompiler" : "uni-app",
|
||||
"compilerVersion" : 3,
|
||||
"splashscreen" : {
|
||||
"alwaysShowBeforeRender" : true,
|
||||
"waiting" : true,
|
||||
"autoclose" : true,
|
||||
"delay" : 0
|
||||
},
|
||||
/* 模块配置 */
|
||||
"modules" : {},
|
||||
/* 应用发布信息 */
|
||||
"distribute" : {
|
||||
/* android打包配置 */
|
||||
"android" : {
|
||||
"permissions" : [
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||
]
|
||||
},
|
||||
/* ios打包配置 */
|
||||
"ios" : {},
|
||||
/* SDK配置 */
|
||||
"sdkConfigs" : {}
|
||||
}
|
||||
},
|
||||
/* 快应用特有相关 */
|
||||
"quickapp" : {},
|
||||
/* 小程序特有相关 */
|
||||
"mp-weixin" : {
|
||||
"appid" : "",
|
||||
"setting" : {
|
||||
"urlCheck" : false
|
||||
},
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-alipay" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-baidu" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-toutiao" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"uniStatistics" : {
|
||||
"enable" : false
|
||||
},
|
||||
"vueVersion" : "2"
|
||||
}
|
||||
24
package-lock.json
generated
Normal file
@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Attendantapp",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"dependencies": {
|
||||
"uview-ui": "^1.8.4"
|
||||
}
|
||||
},
|
||||
"node_modules/uview-ui": {
|
||||
"version": "1.8.4",
|
||||
"resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-1.8.4.tgz",
|
||||
"integrity": "sha512-Zr+D5dFdNy6CdHQLBEXeGq/w0LkjxzBtsgaaDwLl0P58g67H7fBBDvy6AzWK/k0c7dwPYMBiK7I4Tr9p92+0DA=="
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"uview-ui": {
|
||||
"version": "1.8.4",
|
||||
"resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-1.8.4.tgz",
|
||||
"integrity": "sha512-Zr+D5dFdNy6CdHQLBEXeGq/w0LkjxzBtsgaaDwLl0P58g67H7fBBDvy6AzWK/k0c7dwPYMBiK7I4Tr9p92+0DA=="
|
||||
}
|
||||
}
|
||||
}
|
||||
5
package.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"uview-ui": "^1.8.4"
|
||||
}
|
||||
}
|
||||
106
pages.json
Normal file
@ -0,0 +1,106 @@
|
||||
{
|
||||
"easycom": {
|
||||
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
|
||||
},
|
||||
"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
|
||||
{
|
||||
"path": "pages/login/login",
|
||||
"style": {
|
||||
"navigationBarTitleText": "登录",
|
||||
"navigationBarBackgroundColor": "#ffffff" //背景颜色
|
||||
}
|
||||
},{
|
||||
"path": "pages/personal/personal",
|
||||
"style": {
|
||||
"navigationBarTitleText": "个人信息",
|
||||
"enablePullDownRefresh": false,
|
||||
"navigationBarBackgroundColor": "#4C7BC9",
|
||||
"navigationBarTextStyle": "white"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/forgotPassword/forgotPassword",
|
||||
"style": {
|
||||
"navigationBarTitleText": "忘记密码",
|
||||
"navigationBarBackgroundColor": "#ffffff" //背景颜色
|
||||
}
|
||||
},{
|
||||
"path": "pages/register/register",
|
||||
"style": {
|
||||
"navigationBarTitleText": "注册账号",
|
||||
"navigationBarBackgroundColor": "#ffffff" //背景颜色
|
||||
}
|
||||
},{
|
||||
"path": "pages/homepage/homepage",
|
||||
"style": {
|
||||
"navigationBarTitleText": "泉医到家",
|
||||
"navigationBarBackgroundColor": "#ffffff" //背景颜色
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/confirmCompletion/confirmCompletion",
|
||||
"style": {
|
||||
"navigationBarTitleText": "完成确认",
|
||||
"navigationBarBackgroundColor": "#ffffff" //背景颜色
|
||||
}
|
||||
},{
|
||||
"path" : "pages/taskReturn/taskReturn",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText": "任务退回",
|
||||
"enablePullDownRefresh": false,
|
||||
"navigationBarBackgroundColor": "#ffffff" //背景颜色
|
||||
}
|
||||
|
||||
},{
|
||||
"path": "pages/Mymission/Mymission",
|
||||
"style": {
|
||||
"navigationBarTitleText": "我的任务",
|
||||
|
||||
"enablePullDownRefresh": false,
|
||||
"navigationBarBackgroundColor": "#ffffff" //背景颜色
|
||||
}
|
||||
|
||||
},{
|
||||
"path" : "pages/taskDetails/taskDetails",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText": "任务详情",
|
||||
"enablePullDownRefresh": false,
|
||||
"navigationBarBackgroundColor": "#ffffff" //背景颜色
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
"path": "pages/Modifyinformation/Modifyinformation",
|
||||
"style": {
|
||||
"navigationBarTitleText": "修改信息",
|
||||
"enablePullDownRefresh": false,
|
||||
"navigationBarBackgroundColor": "#ffffff" //背景颜色
|
||||
// "navigationBarTextStyle": "white"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/startup/startup",
|
||||
"style": {
|
||||
"navigationBarTitleText": "启动页"
|
||||
}
|
||||
}
|
||||
|
||||
,{
|
||||
"path" : "pages/confirmCompletion/confirmCompletion",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText": "",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
|
||||
}
|
||||
],
|
||||
"globalStyle": {
|
||||
"navigationBarTextStyle": "black",
|
||||
"navigationBarTitleText": "uni-app",
|
||||
"navigationBarBackgroundColor": "#F8F8F8",
|
||||
"backgroundColor": "#F8F8F8"
|
||||
},
|
||||
"uniIdRouter": {}
|
||||
}
|
||||
218
pages/Modifyinformation/Modifyinformation.vue
Normal file
@ -0,0 +1,218 @@
|
||||
<template>
|
||||
<view class="app">
|
||||
<view class="centercontent">
|
||||
<view class="Commodity" @tap="uploadImag()">
|
||||
头像
|
||||
<image class="picture" :src="baseurl+appPersonallist.avatar" mode=""></image>
|
||||
<image class="pictureA" src="../../static/jiantou.png" mode=""></image>
|
||||
</view>
|
||||
<view class="content">
|
||||
<view class="name">昵称:
|
||||
<input type="text" placeholder="请填写" v-model="appPersonallist.userName" />
|
||||
</view>
|
||||
<view class="name">姓名:
|
||||
<input type="text" placeholder="请输入" v-model="appPersonallist.nickName" />
|
||||
</view>
|
||||
<view class="name">电话:
|
||||
<input type="text" placeholder="请输入" v-model="appPersonallist.phonenumber" />
|
||||
</view>
|
||||
<view class="nursetype name" style="border: none;" >
|
||||
护理站:{{getNurseStationName(appPersonallist)}}
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
<view class="finish" @tap="gofinish()">完成
|
||||
</view>
|
||||
</view>
|
||||
<u-toast ref="uToast" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
userPassWord,
|
||||
nursePerson
|
||||
} from '@/api/Modifyinformation/Modifyinformation.js';
|
||||
import baseurl from '@/api/baseurl.js'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
baseurl: '', //url
|
||||
appPersonallist: {
|
||||
userId: '',
|
||||
userName: '',
|
||||
nickName: '',
|
||||
phonenumber: '',
|
||||
avatar: '',
|
||||
File: '',
|
||||
},
|
||||
|
||||
}
|
||||
},
|
||||
computed:{
|
||||
getNurseStationName() {
|
||||
return data => data?.nurseStationSysUserVOList?.[0]?.nurseStationName || ''
|
||||
},
|
||||
},
|
||||
onLoad(options) {
|
||||
this.baseurl = baseurl;
|
||||
const that = this
|
||||
this.baseurl = baseurl;
|
||||
uni.getStorage({
|
||||
key: 'phonenumber',
|
||||
success: function(res) {
|
||||
that.phonenumber = res.data
|
||||
console.log(that.phonenumber)
|
||||
}
|
||||
});
|
||||
uni.getStorage({
|
||||
key: 'password',
|
||||
success: function(res) {
|
||||
that.password = res.data
|
||||
console.log(that.password)
|
||||
}
|
||||
});
|
||||
console.log(that.password, '-----', that.phonenumber)
|
||||
this.myInfo()
|
||||
},
|
||||
methods: {
|
||||
//上传头像
|
||||
uploadImag() {
|
||||
var that = this;
|
||||
uni.chooseImage({
|
||||
count: 1,
|
||||
sizeType: ['original'],
|
||||
sourceType: ['album'],
|
||||
success(res) {
|
||||
//blob
|
||||
console.log(res)
|
||||
uni.uploadFile({
|
||||
url: baseurl + '/nurseApp/PersonLogin/updateHeadAvatarHead',
|
||||
filePath: res.tempFilePaths[0], //file: 二进制(filePath)
|
||||
name: 'file',
|
||||
formData: { //多余值
|
||||
'userId': '13',
|
||||
},
|
||||
timeout: 5000,
|
||||
success(res) {
|
||||
console.log(JSON.parse(res.data))
|
||||
that.appPersonallist.avatar = JSON.parse(res.data).imgUrl
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 引入一下
|
||||
myInfo() {
|
||||
nursePerson(this.phonenumber, this.password).then(res => {
|
||||
console.log(res, 'resresres')
|
||||
this.appPersonallist = res.data
|
||||
console.log(this.appPersonallist)
|
||||
})
|
||||
},
|
||||
gofinish() {
|
||||
// this.appPersonallist = JSON.stringify(this.appPersonallist)
|
||||
// console.log(this.appPersonallist, 'this.appPersonallist')
|
||||
userPassWord(this.appPersonallist).then(res => {
|
||||
if (res.code == 200) {
|
||||
this.$refs.uToast.show({
|
||||
title: '修改成功',
|
||||
type: 'success',
|
||||
url: '/pages/personal/personal',
|
||||
duration: '1500'
|
||||
})
|
||||
} else {
|
||||
console.log(res)
|
||||
this.$refs.uToast.show({
|
||||
title: res.msg,
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.app {
|
||||
background-color: #F4F5F7;
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
color: #000000;
|
||||
padding: 3%;
|
||||
font-size: 36rpx;
|
||||
|
||||
.centercontent {
|
||||
width: 99%;
|
||||
height: 521rpx;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0rpx 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
|
||||
border-radius: 20rpx;
|
||||
margin: 0 auto;
|
||||
|
||||
.finish {
|
||||
width: 217rpx;
|
||||
font-size: 32rpx;
|
||||
color: #FFFFFF;
|
||||
height: 68rpx;
|
||||
line-height: 68rpx;
|
||||
text-align: center;
|
||||
margin-top: 60%;
|
||||
margin-left: 70%;
|
||||
background: #4C7BC9;
|
||||
border-radius: 26rpx;
|
||||
}
|
||||
|
||||
.content {
|
||||
line-height: 100rpx;
|
||||
|
||||
.name {
|
||||
margin-left: 5%;
|
||||
height: 100rpx;
|
||||
border-bottom: 1rpx solid #D8D4D4;
|
||||
|
||||
input {
|
||||
font-size: 36rpx;
|
||||
margin-top: -11%;
|
||||
margin-left: 15%;
|
||||
}
|
||||
}
|
||||
|
||||
.nursetype {
|
||||
input {
|
||||
margin-left: 25%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.Commodity {
|
||||
line-height: 110rpx;
|
||||
margin-left: 5%;
|
||||
border-bottom: 1rpx solid #D8D4D4;
|
||||
|
||||
.picture {
|
||||
vertical-align: middle;
|
||||
margin-left: 60%;
|
||||
width: 103rpx;
|
||||
height: 103rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.pictureA {
|
||||
margin-left: 3%;
|
||||
width: 18rpx;
|
||||
height: 27rpx;
|
||||
}
|
||||
|
||||
.head {
|
||||
line-height: 140rpx;
|
||||
margin-left: 5%;
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
296
pages/Mymission/Mymission.vue
Normal file
@ -0,0 +1,296 @@
|
||||
<template>
|
||||
<view class="app">
|
||||
<view class="inputs">
|
||||
<i class="icon"></i>
|
||||
<input type="text" name="" id="" class="input" placeholder="请输入搜索内容">
|
||||
</view>
|
||||
<view class="tab">
|
||||
<view class="tab-item" @tap="testTabClick(index)" v-for="(item,index) in tabList"
|
||||
:class="tabIndex == index?'active':''">
|
||||
{{item.name}}
|
||||
</view>
|
||||
<view class="Apayment" v-if='choicetab==0' v-for="(item,index) in list" :key="item.id">
|
||||
<view class="names">{{item.serviceDate}} {{item.serviceStartTime}}-{{item.serviceEndTime}}
|
||||
<span>待完成</span>
|
||||
</view>
|
||||
<image :src="baseurl+item.itemPictureUrl" mode=""></image>
|
||||
<view class="detailsinfo">
|
||||
<view class="change">
|
||||
{{item.nurseItemName}}
|
||||
</view>
|
||||
<view class="time">
|
||||
服务时长:{{item.itemServeDurationUnit}}
|
||||
</view>
|
||||
<view class="price">
|
||||
¥{{item.totalPrice}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="anniu">
|
||||
<view class="logistics" @tap='gotask(item)'>详情</view>
|
||||
<view class="logistics harvest">去完成</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="Apayment" v-if='choicetab==1' v-for="(item,uindex) in list" :key="uindex">
|
||||
<view class="names">{{item.serviceDate}} {{item.serviceStartTime}}-{{item.serviceEndTime}}
|
||||
<span>已完成</span>
|
||||
</view>
|
||||
<image src="../../static/fuwutu.png" mode=""></image>
|
||||
<view class="detailsinfo">
|
||||
<view class="change">
|
||||
{{item.nurseItemName}}
|
||||
</view>
|
||||
<view class="time">
|
||||
服务时长:{{item.itemServeDurationUnit}}
|
||||
</view>
|
||||
<view class="price">
|
||||
¥{{item.totalPrice}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="anniu">
|
||||
<view class="evaluate">查看评价</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
selectMission
|
||||
} from '@/api/Mymission.js'
|
||||
import baseurl from '@/api/baseurl.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
baseurl: '',
|
||||
choicetab: 0, //切换
|
||||
tabIndex: 0, //切换
|
||||
tabList: [{
|
||||
name: "待完成"
|
||||
}, {
|
||||
name: "已完成"
|
||||
}, ],
|
||||
nursePersonId: 2, //护理员id
|
||||
orderStatus: 'NOT_FINISH', // orderStatus:订单状态 未完成:NOT_FINISH,服务完成:COMPLETE
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
//未完成任务
|
||||
list: [],
|
||||
total: 0,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
//任务list
|
||||
selectMissioninfo() {
|
||||
selectMission(this.nursePersonId, this.orderStatus, this.pageNum, this.pageSize).then(res => {
|
||||
this.list = res.rows
|
||||
this.total = res.total
|
||||
})
|
||||
},
|
||||
//跳转详情页
|
||||
gotask(item) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/taskDetails/taskDetails?orderDetailsId=${item.id}`
|
||||
})
|
||||
},
|
||||
//任务切换
|
||||
testTabClick(index) {
|
||||
this.list = []
|
||||
this.tabIndex = index
|
||||
this.choicetab = index
|
||||
this.pageNum == 1
|
||||
if (this.choicetab == 0) {
|
||||
this.orderStatus = 'NOT_FINISH'
|
||||
} else {
|
||||
this.orderStatus = 'COMPLETE'
|
||||
}
|
||||
selectMission(this.nursePersonId, this.orderStatus, this.pageNum, this.pageSize).then(res => {
|
||||
this.list = res.rows
|
||||
this.total = res.total
|
||||
})
|
||||
},
|
||||
// goorderdetails() {
|
||||
// uni.navigateTo({
|
||||
// url: '/pages/orderDetails/orderDetails'
|
||||
// })
|
||||
// },
|
||||
},
|
||||
onLoad() { //开局调用
|
||||
this.baseurl = baseurl
|
||||
this.selectMissioninfo();
|
||||
},
|
||||
onReachBottom() { //下滑加载
|
||||
if (this.list.length >= this.total) {} else {
|
||||
this.pageNum++
|
||||
selectMission(this.nursePersonId, this.orderStatus, this.pageNum, this.pageSize).then(res => {
|
||||
res.rows.forEach(e => {
|
||||
this.list.push(e)
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
onPullDownRefresh() { //下拉刷新
|
||||
this.pageNum = 1;
|
||||
selectMission(this.nursePersonId, this.orderStatus, this.PageNum, this.PageSize).then(res => {
|
||||
this.list = res.rows
|
||||
this.total = res.total
|
||||
})
|
||||
setTimeout(function() {
|
||||
uni.stopPullDownRefresh();
|
||||
}, 1000);
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.app {
|
||||
background-color: #F4F5F7;
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
padding: 1rpx 3%;
|
||||
|
||||
.tab .active {
|
||||
background: #4C7BC9;
|
||||
}
|
||||
|
||||
// 切换
|
||||
.tab-item {
|
||||
width: 50%;
|
||||
text-align: center;
|
||||
line-height: 70rpx;
|
||||
color: #ffffff;
|
||||
background: #BAB7B8;
|
||||
display: inline-block;
|
||||
box-shadow: 0rpx 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
|
||||
border-radius: 20rpx;
|
||||
font-size: 34rpx;
|
||||
}
|
||||
|
||||
.Apayment {
|
||||
width: 100%;
|
||||
height: 391rpx;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0rpx 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
|
||||
border-radius: 20rpx;
|
||||
line-height: 70rpx;
|
||||
padding: 1%;
|
||||
font-size: 30rpx;
|
||||
color: #969394;
|
||||
margin-top: 20rpx;
|
||||
position: relative;
|
||||
|
||||
image {
|
||||
display: block;
|
||||
width: 170rpx;
|
||||
height: 170rpx;
|
||||
border-radius: 10rpx;
|
||||
margin: 30rpx 0 0 20rpx;
|
||||
}
|
||||
|
||||
.anniu {
|
||||
// width: 375rpx;
|
||||
float: right;
|
||||
margin: 30rpx 20rpx 0 0;
|
||||
|
||||
.evaluate {
|
||||
background: #4C7BC9;
|
||||
width: 216rpx;
|
||||
height: 68rpx;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
border-radius: 26rpx;
|
||||
}
|
||||
|
||||
.logistics {
|
||||
width: 175rpx;
|
||||
height: 68rpx;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
background: #E1AE3C;
|
||||
border-radius: 26rpx;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.harvest {
|
||||
background: #4C7BC9;
|
||||
margin: 0 0 0 15rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.detailsinfo {
|
||||
width: 60%;
|
||||
height: 200rpx;
|
||||
border-radius: 10rpx;
|
||||
position: absolute;
|
||||
top: 25%;
|
||||
left: 35%;
|
||||
|
||||
.change {
|
||||
width: 100%;
|
||||
color: #000000;
|
||||
font-size: 34rpx;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.time {
|
||||
width: 100%;
|
||||
font-size: 32rpx;
|
||||
color: #999999;
|
||||
position: absolute;
|
||||
top: 32%;
|
||||
}
|
||||
|
||||
.price {
|
||||
width: 100%;
|
||||
font-size: 30rpx;
|
||||
color: #D43953;
|
||||
position: absolute;
|
||||
top: 65%;
|
||||
}
|
||||
}
|
||||
|
||||
.names {
|
||||
width: 95%;
|
||||
margin-left: 20rpx;
|
||||
border-bottom: 1rpx solid #D8D4D4;
|
||||
|
||||
span {
|
||||
color: #4C7BC9;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.inputs {
|
||||
box-shadow: 0rpx 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
|
||||
border: 1rpx solid #f0f0f0;
|
||||
width: 99%;
|
||||
height: 65rpx;
|
||||
margin: 20rpx auto;
|
||||
border-radius: 20rpx;
|
||||
background-color: #Ffffff;
|
||||
position: relative;
|
||||
|
||||
.input {
|
||||
position: absolute;
|
||||
height: 65rpx;
|
||||
left: 10%;
|
||||
line-height: 65rpx;
|
||||
font-size: 26rpx;
|
||||
color: #BEBEC0;
|
||||
}
|
||||
|
||||
.icon {
|
||||
background: url(@/static/sousuo.png) no-repeat;
|
||||
width: 30rpx;
|
||||
height: 28rpx;
|
||||
background-size: cover;
|
||||
position: absolute;
|
||||
top: 30%;
|
||||
left: 5%;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
147
pages/confirmCompletion/confirmCompletion.vue
Normal file
@ -0,0 +1,147 @@
|
||||
<template>
|
||||
<view class="app">
|
||||
<view class="picture">
|
||||
<view class="attendantImg">
|
||||
护理员到岗照片
|
||||
</view>
|
||||
<view class="uppicture">
|
||||
<u-upload class="slot-btn" width="530" height="130"></u-upload>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<view class="picture" style="height: 330rpx;">
|
||||
<view class="attendantImg">
|
||||
服务进行中视频(不少于1min)<span>*选填</span>
|
||||
</view>
|
||||
<view class="uppicture">
|
||||
<u-upload class="slot-btn" width="530" height="130"></u-upload>
|
||||
</view>
|
||||
<view class="user">
|
||||
<image src="../../static/radio.png" mode=""></image>
|
||||
用户不同意拍摄
|
||||
</view>
|
||||
</view>
|
||||
<view class="picture">
|
||||
<view class="attendantImg">
|
||||
服务结束照片
|
||||
</view>
|
||||
<view class="uppicture">
|
||||
<u-upload class="slot-btn" width="530" height="130"></u-upload>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<view class="picture" style="height: 350rpx;">
|
||||
<view class="attendantImg" style="border-bottom: 1rpx solid #BAB7B8;">
|
||||
用户签名确认
|
||||
</view>
|
||||
<view class="receive">
|
||||
我确认已接受服务
|
||||
</view>
|
||||
<view class="uppicture">
|
||||
<image src="../../static/autograph.png" mode=""></image>
|
||||
<span>点此签名</span>
|
||||
<!-- <u-upload class="slot-btn" :action="action" :file-list="fileList" width="620" height="130"></u-upload> -->
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<view class="submit">
|
||||
<view class="finish">
|
||||
去完成
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.app {
|
||||
height: 100%;
|
||||
padding: 3%;
|
||||
font-size: 36rpx;
|
||||
.picture {
|
||||
width: 95%;
|
||||
height: 272rpx;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
|
||||
border-radius: 20px;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 20rpx;
|
||||
.attendantImg {
|
||||
color: #000000;
|
||||
height: 88rpx;
|
||||
line-height: 88rpx;
|
||||
margin-left: 30rpx;
|
||||
span {
|
||||
color: #BAB7B8;
|
||||
}
|
||||
}
|
||||
.uppicture {
|
||||
border: 1rpx dashed #818181;
|
||||
width: 90%;
|
||||
height: 150rpx;
|
||||
margin: 0 auto;
|
||||
::v-deep .u-list-item[data-v-49deb6f2] {
|
||||
background: #FFFFFF;
|
||||
}
|
||||
|
||||
image {
|
||||
width: 36rpx;
|
||||
height: 36rpx;
|
||||
margin-left: 40%;
|
||||
margin-top: 8%;
|
||||
}
|
||||
span {
|
||||
|
||||
font-size: 35rpx;
|
||||
color: #969394;
|
||||
}
|
||||
}
|
||||
.user{
|
||||
height: 88rpx;
|
||||
line-height: 88rpx;
|
||||
color: #969394;
|
||||
margin-left: 30rpx;
|
||||
image{
|
||||
width: 34rpx;
|
||||
height: 34rpx;
|
||||
}
|
||||
|
||||
}
|
||||
.receive {
|
||||
height: 88rpx;
|
||||
line-height: 88rpx;
|
||||
color: #969394;
|
||||
margin-left: 30rpx;
|
||||
|
||||
}
|
||||
}
|
||||
.submit{
|
||||
height: 68rpx;
|
||||
font-size: 32rpx;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
margin-left: 60%;
|
||||
.finish{
|
||||
width: 217rpx;
|
||||
height: 68rpx;
|
||||
line-height: 68rpx;
|
||||
background: #4C7BC9;
|
||||
border-radius: 26rpx;
|
||||
margin-left: 30rpx;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
74
pages/forgotPassword/forgotPassword.scss
Normal file
@ -0,0 +1,74 @@
|
||||
.app {
|
||||
height: 100vh;
|
||||
padding: 20rpx 0;
|
||||
|
||||
.item {
|
||||
font-size: 34rpx;
|
||||
margin: 0 auto 20rpx;
|
||||
width: 94%;
|
||||
height: 100rpx;
|
||||
line-height: 100rpx;
|
||||
background-color: #fff;
|
||||
box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
|
||||
border-radius: 20rpx;
|
||||
position: relative;
|
||||
|
||||
.lefttext {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
left: 3%;
|
||||
}
|
||||
|
||||
.righttext {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
left: 18%;
|
||||
height: 100rpx;
|
||||
}
|
||||
|
||||
.lefttext,
|
||||
.righttext {
|
||||
::v-deep .uni-input-input {
|
||||
font-size: 34rpx;
|
||||
}
|
||||
|
||||
::v-deep .uni-input-wrapper {
|
||||
height: 100rpx;
|
||||
line-height: 100rpx;
|
||||
}
|
||||
|
||||
::v-deep .uni-input-placeholder {
|
||||
line-height: 100rpx;
|
||||
font-size: 34rpx;
|
||||
font-weight: 400;
|
||||
color: #C3C1C1;
|
||||
}
|
||||
}
|
||||
|
||||
.obtaincode {
|
||||
text-align: center;
|
||||
font-size: 36rpx;
|
||||
color: #4C7BC9;
|
||||
line-height: 100rpx;
|
||||
position: absolute;
|
||||
right: 5%;
|
||||
top: 0%;
|
||||
}
|
||||
}
|
||||
|
||||
.loginbtn {
|
||||
width: 80%;
|
||||
height: 100rpx;
|
||||
text-align: center;
|
||||
line-height: 100rpx;
|
||||
background: #4C7BC9;
|
||||
border-radius: 51rpx;
|
||||
font-size: 41rpx;
|
||||
color: #FFFFFF;
|
||||
position: absolute;
|
||||
top: 40%;
|
||||
left: 10%;
|
||||
}
|
||||
}
|
||||
122
pages/forgotPassword/forgotPassword.vue
Normal file
@ -0,0 +1,122 @@
|
||||
<template>
|
||||
<view class="app">
|
||||
<view class="item">
|
||||
<view class="lefttext">
|
||||
输入新密码
|
||||
</view>
|
||||
<u-input class='righttext' style='left:30%' placeholder="请输入密码" maxlength="10" type="password"
|
||||
:border="false" :password-icon="true" v-model="newpassword" />
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="lefttext">
|
||||
重复新密码
|
||||
</view>
|
||||
<u-input class='righttext' style='left:30%' placeholder="请再次输入密码" maxlength="10" type="password"
|
||||
:border="false" :password-icon="true" v-model="password" />
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="lefttext">
|
||||
手机号
|
||||
</view>
|
||||
<input class="righttext" style='left:23%' type="text" placeholder="请输入" maxlength="11" v-model="phonenumber"/>
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="lefttext">
|
||||
验证码
|
||||
</view>
|
||||
<input class="righttext" style='left:23%' type="text" placeholder="" maxlength="6" v-model="verification" />
|
||||
<view class="obtaincode" :style="{'color':getCodeBtnColor}" @click.stop="getCode()">
|
||||
{{getCodeText}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="loginbtn" @tap='pwdlogin'>
|
||||
登录
|
||||
</view>
|
||||
<u-toast ref="uToast" />
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
updatePassword
|
||||
} from '@/api/forgotPassword/forgotPassword.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
phonenumber: '18963146613',
|
||||
password: '23456',
|
||||
newpassword: '',
|
||||
getCodeText: '获取验证码', //获取验证码的文字
|
||||
getCodeBtnColor: "#4C7BC9", //获取验证码的color
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
pwdlogin() {
|
||||
updatePassword(this.phonenumber, this.password, this.verification).then(res => {
|
||||
if (this.password !== this.newpassword) {
|
||||
this.$refs.uToast.show({
|
||||
title: '密码输入不一致,请重新输入',
|
||||
type: 'error',
|
||||
duration: '1500'
|
||||
})
|
||||
} else {
|
||||
this.$refs.uToast.show({
|
||||
title: '密码修改成功',
|
||||
type: 'success',
|
||||
url: '/pages/login/login',
|
||||
duration: '1500'
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
//点击获取验证码
|
||||
getCode() {
|
||||
uni.hideKeyboard() //隐藏已经显示的软键盘,如果软键盘没有显示则不做任何操作。
|
||||
if (this.getCodeisWaiting) { //是否在倒计时中
|
||||
return;
|
||||
}
|
||||
if (!(/^1(3|4|5|6|7|8|9)\d{9}$/.test(this.phonenumber))) { //校验手机号码是否有误
|
||||
uni.showToast({
|
||||
title: '请填写正确手机号码',
|
||||
icon: "none"
|
||||
});
|
||||
return false;
|
||||
}
|
||||
this.getCodeText = "发送中..." //发送验证码
|
||||
this.getCodeisWaiting = true;
|
||||
this.getCodeBtnColor = "rgba(138,139,133,1)" //追加样式,修改颜色
|
||||
//示例用定时器模拟请求效果
|
||||
//setTimeout(()用于在指定的毫秒数后调用函数或计算表达式
|
||||
setTimeout(() => {
|
||||
uni.showToast({
|
||||
title: '验证码已发送',
|
||||
icon: "none"
|
||||
}); //弹出提示框
|
||||
// this.code = '1234'; //发送验证码,进行填入 示例默认1234,生产中请删除这一句。
|
||||
this.setTimer(); //调用定时器方法
|
||||
}, 1000)
|
||||
},
|
||||
//获取验证码的倒计时 setTimer: 需要每隔一段时间执行一件事的的时候就需要使用SetTimer函数
|
||||
setTimer() {
|
||||
let holdTime = 60; //定义变量并赋值
|
||||
this.getCodeText = "重新获取(60)"
|
||||
//setInterval()是一个实现定时调用的函数,可按照指定的周期(以毫秒计)来调用函数或计算表达式。
|
||||
//setInterval方法会不停地调用函数,直到 clearInterval被调用或窗口被关闭。
|
||||
this.Timer = setInterval(() => {
|
||||
if (holdTime <= 0) {
|
||||
this.getCodeisWaiting = false;
|
||||
this.getCodeBtnColor = "#4C7BC9";
|
||||
this.getCodeText = "获取验证码"
|
||||
clearInterval(this.Timer); //清除该函数
|
||||
return; //返回前面
|
||||
}
|
||||
this.getCodeText = "重新获取(" + holdTime + ")"
|
||||
holdTime--;
|
||||
}, 1000)
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
@import "./forgotPassword.scss";
|
||||
</style>
|
||||
56
pages/homepage/homepage.vue
Normal file
@ -0,0 +1,56 @@
|
||||
<template>
|
||||
<view class="app">
|
||||
<view class="cards">
|
||||
<view class="item" style="background: #D43953;" @tap='gomymission'>
|
||||
<image src="../../static/dingdan.png" mode=""></image>
|
||||
<view class="title">
|
||||
我的任务
|
||||
</view>
|
||||
</view>
|
||||
<view class=" item" style="background: #4C7BC9; "@tap='gopersonal'>
|
||||
|
||||
<image src="../../static/user.png" mode=""></image>
|
||||
<view class="title">
|
||||
个人信息
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
methods: {
|
||||
gomymission() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/Mymission/Mymission'
|
||||
})
|
||||
},
|
||||
gopersonal(){
|
||||
uni.navigateTo({
|
||||
url: '/pages/personal/personal'
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.app {
|
||||
.cards {
|
||||
height: 1029rpx;
|
||||
|
||||
.item {
|
||||
height: 295rpx;
|
||||
|
||||
.title {
|
||||
width: 80%;
|
||||
top: 60%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
89
pages/login/login.scss
Normal file
@ -0,0 +1,89 @@
|
||||
.app {
|
||||
font-family: DengXian;
|
||||
color: #C3C1C1;
|
||||
font-weight: 400;
|
||||
|
||||
.switch {
|
||||
text-align: center;
|
||||
height: 100rpx;
|
||||
color: #46ABD7;
|
||||
position: absolute;
|
||||
top: 67%;
|
||||
left: 10%;
|
||||
}
|
||||
|
||||
.loginbtn {
|
||||
width: 80%;
|
||||
height: 100rpx;
|
||||
text-align: center;
|
||||
line-height: 100rpx;
|
||||
background: #4C7BC9;
|
||||
border-radius: 51rpx;
|
||||
font-size: 41rpx;
|
||||
color: #FFFFFF;
|
||||
position: absolute;
|
||||
top: 57%;
|
||||
left: 10%;
|
||||
}
|
||||
|
||||
.loginphone {
|
||||
background-color: #fff;
|
||||
width: 80%;
|
||||
height: 162rpx;
|
||||
position: absolute;
|
||||
left: 10%;
|
||||
top: 23%;
|
||||
|
||||
input {
|
||||
font-size: 45rpx;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
::v-deep .uni-input-placeholder {
|
||||
padding-left: 40rpx;
|
||||
font-size: 41rpx;
|
||||
font-weight: 400;
|
||||
color: #C3C1C1;
|
||||
}
|
||||
|
||||
.phone {
|
||||
padding-left: 40rpx;
|
||||
height: 100%;
|
||||
box-shadow: 0px 9px 31px 9px rgba(0, 0, 0, 0.03);
|
||||
}
|
||||
}
|
||||
|
||||
.logincode {
|
||||
position: absolute;
|
||||
left: 10%;
|
||||
|
||||
.obtaincode {
|
||||
text-align: center;
|
||||
font-size: 37rpx;
|
||||
color: #4C7BC9;
|
||||
line-height: 162rpx;
|
||||
position: absolute;
|
||||
left: 65%;
|
||||
top: 0%;
|
||||
}
|
||||
|
||||
::v-deep .u-input__input {
|
||||
padding-left: 20rpx;
|
||||
color: #000000;
|
||||
font-size: 42rpx;
|
||||
font-weight: 400;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.title {
|
||||
height: 50rpx;
|
||||
font-size: 52rpx;
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
line-height: 44rpx;
|
||||
position: absolute;
|
||||
top: 13%;
|
||||
left: 13%;
|
||||
}
|
||||
}
|
||||
179
pages/login/login.vue
Normal file
@ -0,0 +1,179 @@
|
||||
<template>
|
||||
<view class="app">
|
||||
<view class="title">
|
||||
账号登录
|
||||
</view>
|
||||
<view class="loginphone">
|
||||
<input class="phone" type="text" placeholder="手机号码" maxlength="11" v-model="phonenumber" />
|
||||
</view>
|
||||
<view class="logincode loginphone" style="top: 40%;">
|
||||
<u-input class='code phone' placeholder="密码" maxlength="10" v-model="password" type="password"
|
||||
:border="true" :password-icon="true" />
|
||||
</view>
|
||||
<view class="forget" @tap='forgetpassword'>
|
||||
忘记密码
|
||||
</view>
|
||||
<!-- <u-checkbox-group>
|
||||
<u-checkbox v-model="checked" shape="circle">记住密码</u-checkbox>
|
||||
</u-checkbox-group> -->
|
||||
<view class="loginbtn" @tap='pwdlogin'>
|
||||
登录
|
||||
</view>
|
||||
<view class="loginbtn" style="top: 65%; color: #969394;background-color: #ffffff;" @tap='goregister'>
|
||||
注册
|
||||
</view>
|
||||
<u-toast ref="uToast" />
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
appLogin
|
||||
} from '../../api/login/index.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
checked: false,
|
||||
phonenumber: '',
|
||||
password: '',
|
||||
userId:'',
|
||||
};
|
||||
},
|
||||
//获取到传值
|
||||
|
||||
onLoad(options) {
|
||||
console.log(options)
|
||||
},
|
||||
methods: {
|
||||
|
||||
//密码登录
|
||||
pwdlogin() {
|
||||
appLogin(this.phonenumber, this.password).then(res => {
|
||||
console.log(res)
|
||||
|
||||
if (res.code == 200) {
|
||||
this.$refs.uToast.show({
|
||||
title: '登录成功',
|
||||
type: 'success',
|
||||
url: '/pages/homepage/homepage',
|
||||
duration: '1500'
|
||||
})
|
||||
} else {
|
||||
console.log(res)
|
||||
this.$refs.uToast.show({
|
||||
title: res.msg,
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
|
||||
})
|
||||
},
|
||||
//跳转注册页
|
||||
goregister() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/register/register'
|
||||
})
|
||||
},
|
||||
forgetpassword() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/forgotPassword/forgotPassword'
|
||||
})
|
||||
},
|
||||
},
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.app {
|
||||
font-family: DengXian;
|
||||
color: #C3C1C1;
|
||||
font-weight: 400;
|
||||
height: 100vh;
|
||||
|
||||
.forget {
|
||||
position: absolute;
|
||||
top: 53%;
|
||||
left: 70%;
|
||||
color: #46ABD7;
|
||||
|
||||
}
|
||||
|
||||
.loginbtn {
|
||||
width: 80%;
|
||||
height: 100rpx;
|
||||
text-align: center;
|
||||
line-height: 100rpx;
|
||||
background: #4C7BC9;
|
||||
border-radius: 51rpx;
|
||||
font-size: 41rpx;
|
||||
color: #FFFFFF;
|
||||
position: absolute;
|
||||
top: 56%;
|
||||
left: 10%;
|
||||
|
||||
}
|
||||
|
||||
// ::v-deep .u-checkbox {
|
||||
// margin-top: 345%;
|
||||
// margin-left: 50%;
|
||||
// font-size: 32rpx;
|
||||
// color: #BFBFBF;
|
||||
// }
|
||||
|
||||
.loginphone {
|
||||
background-color: #fff;
|
||||
width: 80%;
|
||||
height: 150rpx;
|
||||
position: absolute;
|
||||
left: 10%;
|
||||
top: 23%;
|
||||
|
||||
input {
|
||||
font-size: 45rpx;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
::v-deep .uni-input-placeholder {
|
||||
padding-left: 40rpx;
|
||||
font-size: 41rpx;
|
||||
font-weight: 400;
|
||||
color: #C3C1C1;
|
||||
}
|
||||
|
||||
.phone {
|
||||
padding-left: 40rpx;
|
||||
height: 150rpx;
|
||||
box-shadow: 0px 9px 31px 9px rgba(0, 0, 0, 0.03);
|
||||
}
|
||||
}
|
||||
|
||||
.logincode {
|
||||
position: absolute;
|
||||
left: 10%;
|
||||
|
||||
::v-deep .u-input {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
::v-deep .u-input__input {
|
||||
padding-left: 20rpx;
|
||||
color: #000000;
|
||||
font-size: 42rpx;
|
||||
font-weight: 400;
|
||||
height: 100%;
|
||||
// line-height: 150rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.title {
|
||||
height: 50rpx;
|
||||
font-size: 52rpx;
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
line-height: 44rpx;
|
||||
position: absolute;
|
||||
top: 13%;
|
||||
left: 13%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
222
pages/personal/personal.vue
Normal file
@ -0,0 +1,222 @@
|
||||
<template>
|
||||
<view class="app">
|
||||
<view class="user">
|
||||
<view class="img">
|
||||
<image :src="baseurl+appPersonallist.avatar" mode=""></image>
|
||||
</view>
|
||||
<view class="phone">
|
||||
电话:{{appPersonallist.phonenumber}}
|
||||
</view>
|
||||
<view class="nickname">
|
||||
点此设置昵称
|
||||
</view>
|
||||
<view class="modify" @tap='updatainfo()'>
|
||||
修改信息
|
||||
<u-icon name="arrow-right" color="#ffffff" size="32"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
<view class="information">
|
||||
<view class="item">
|
||||
姓名:{{appPersonallist.nickName}}
|
||||
</view>
|
||||
<view class="item">
|
||||
电话:{{appPersonallist.phonenumber }}
|
||||
</view>
|
||||
<view class="item" style="height:100%">
|
||||
|
||||
</view>
|
||||
<view class="item" style="border:none;" v-if="appPersonallist.nurseStationSysUserVOList">
|
||||
护理站: {{appPersonallist.nurseStationSysUserVOList[0].nurseStationName}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="External" style="margin: 100rpx auto 0;">
|
||||
<view class="lefttext">
|
||||
我的设备
|
||||
</view>
|
||||
<view class="righttext">
|
||||
</view>
|
||||
<image src="../../static/jiantou.png" mode=""></image>
|
||||
</view>
|
||||
<view class="External">
|
||||
<view class="lefttext">
|
||||
修改密码
|
||||
</view>
|
||||
<view class="righttext">
|
||||
</view>
|
||||
<image src="../../static/jiantou.png" mode=""></image>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
nursePerson,
|
||||
} from '@/api/personnal/personal.js';
|
||||
import baseurl from '@/api/baseurl.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
baseurl: '', //url
|
||||
phonenumber: '',
|
||||
avatar:'',
|
||||
password: '',
|
||||
userId:'',
|
||||
appPersonallist: [], //获取个人信息
|
||||
nurseStationSysUserVOList: [],
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
onLoad(options) {
|
||||
//获取传值
|
||||
const that=this
|
||||
this.baseurl = baseurl;
|
||||
uni.getStorage({
|
||||
key: 'phonenumber',
|
||||
success: function(res) {
|
||||
that.phonenumber = res.data
|
||||
console.log(that.phonenumber)
|
||||
}
|
||||
});
|
||||
uni.getStorage({
|
||||
key: 'password',
|
||||
success: function(res) {
|
||||
that.password = res.data
|
||||
console.log(that.password)
|
||||
}
|
||||
});
|
||||
console.log(that.password,'-----',that.phonenumber)
|
||||
this.myInfo()
|
||||
},
|
||||
methods: {
|
||||
myInfo() {
|
||||
console.log(this.phonenumber)
|
||||
nursePerson(this.phonenumber, this.password).then(res => {
|
||||
this.appPersonallist = res.data
|
||||
})
|
||||
},
|
||||
updatainfo() {
|
||||
console.log()
|
||||
uni.navigateTo({
|
||||
url: `/pages/Modifyinformation/Modifyinformation`
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.app {
|
||||
padding: 0;
|
||||
font-size: 35rpx;
|
||||
height: 100vh;
|
||||
|
||||
.External {
|
||||
width: 94%;
|
||||
height: 100rpx;
|
||||
line-height: 100rpx;
|
||||
margin: 20rpx auto;
|
||||
padding-left: 5%;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
|
||||
border-radius: 20rpx;
|
||||
position: relative;
|
||||
|
||||
.righttext {
|
||||
position: absolute;
|
||||
right: 12%;
|
||||
top: 50%;
|
||||
color: #969394;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
image {
|
||||
width: 18rpx;
|
||||
height: 27rpx;
|
||||
position: absolute;
|
||||
right: 5%;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
.lefttext,
|
||||
.righttext {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
.information {
|
||||
width: 94%;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
|
||||
border-radius: 20rpx;
|
||||
position: absolute;
|
||||
top: 18%;
|
||||
left: 3%;
|
||||
color: #000000;
|
||||
padding-left: 5%;
|
||||
overflow: hidden;
|
||||
font-size: 35rpx;
|
||||
|
||||
.item {
|
||||
// height: 110rpx;
|
||||
line-height: 110rpx;
|
||||
border-bottom: 1rpx solid #D8D4D4;
|
||||
|
||||
.address {
|
||||
height: 40rpx;
|
||||
// font-size: 30rpx;
|
||||
line-height: 40rpx;
|
||||
display: inline-block;
|
||||
width: 80%;
|
||||
margin-left: 30rpx;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.user {
|
||||
width: 100%;
|
||||
height: 500rpx;
|
||||
background: #4C7BC9;
|
||||
position: relative;
|
||||
color: #FFFFFF;
|
||||
|
||||
.modify {
|
||||
font-size: 32rpx;
|
||||
position: absolute;
|
||||
right: 3%;
|
||||
top: 22%;
|
||||
}
|
||||
|
||||
.nickname {
|
||||
position: absolute;
|
||||
top: 26%;
|
||||
left: 33%;
|
||||
}
|
||||
|
||||
.phone {
|
||||
position: absolute;
|
||||
top: 13%;
|
||||
left: 33%;
|
||||
}
|
||||
|
||||
.img {
|
||||
width: 150rpx;
|
||||
height: 150rpx;
|
||||
position: absolute;
|
||||
top: 10%;
|
||||
left: 8%;
|
||||
|
||||
image {
|
||||
border-radius: 50%;
|
||||
width: 130rpx;
|
||||
margin-left: 50%;
|
||||
margin-top: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
height: 130rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
80
pages/register/register.scss
Normal file
@ -0,0 +1,80 @@
|
||||
.app {
|
||||
font-family: DengXian;
|
||||
color: #C3C1C1;
|
||||
font-weight: 400;
|
||||
|
||||
.switch {
|
||||
text-align: center;
|
||||
line-height: 60rpx;
|
||||
color: #46ABD7;
|
||||
position: absolute;
|
||||
top: 66%;
|
||||
left: 10%;
|
||||
}
|
||||
|
||||
.loginbtn {
|
||||
width: 80%;
|
||||
height: 100rpx;
|
||||
text-align: center;
|
||||
line-height: 100rpx;
|
||||
background: #4C7BC9;
|
||||
border-radius: 51rpx;
|
||||
font-size: 41rpx;
|
||||
color: #FFFFFF;
|
||||
position: absolute;
|
||||
top: 57%;
|
||||
left: 10%;
|
||||
}
|
||||
|
||||
.loginphone {
|
||||
background-color: #fff;
|
||||
width: 80%;
|
||||
height: 162rpx;
|
||||
position: absolute;
|
||||
left: 10%;
|
||||
top: 23%;
|
||||
|
||||
input {
|
||||
font-size: 40rpx;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
::v-deep .uni-input-placeholder {
|
||||
padding-left: 40rpx;
|
||||
font-size: 41rpx;
|
||||
font-weight: 400;
|
||||
color: #C3C1C1;
|
||||
}
|
||||
|
||||
.phone {
|
||||
padding-left: 40rpx;
|
||||
height: 100%;
|
||||
box-shadow: 0px 9px 31px 9px rgba(0, 0, 0, 0.03);
|
||||
}
|
||||
}
|
||||
|
||||
.logincode {
|
||||
position: absolute;
|
||||
left: 10%;
|
||||
|
||||
::v-deep .u-input__input {
|
||||
padding-left: 20rpx;
|
||||
color: #000000;
|
||||
font-size: 41rpx;
|
||||
font-weight: 400;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.title {
|
||||
height: 50rpx;
|
||||
font-size: 52rpx;
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
line-height: 44rpx;
|
||||
position: absolute;
|
||||
top: 13%;
|
||||
left: 13%;
|
||||
}
|
||||
}
|
||||
301
pages/register/register.vue
Normal file
@ -0,0 +1,301 @@
|
||||
<template>
|
||||
<view class="app">
|
||||
<view class="item">
|
||||
<view class="lefttext">
|
||||
姓名
|
||||
</view>
|
||||
<input class="righttext" type="text" placeholder="请输入" v-model="appPersonallist.nickName" />
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="lefttext">
|
||||
输入密码
|
||||
</view>
|
||||
<u-input class='righttext' style='left:30%' placeholder="请输入密码" maxlength="10"
|
||||
v-model="appPersonallist.password" type="password" :border="false" :password-icon="true" />
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="lefttext">
|
||||
重复密码
|
||||
</view>
|
||||
<u-input class='righttext' style='left:30%' placeholder="请再次输入密码" maxlength="10"
|
||||
v-model="appPersonallist.newpassword" type="password" :border="false" :password-icon="true" />
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="lefttext">
|
||||
手机号
|
||||
</view>
|
||||
<input class="righttext" style='left:23%' type="text" placeholder="请输入" maxlength="11"
|
||||
v-model="appPersonallist.phonenumber" />
|
||||
</view>
|
||||
<view class="item" @tap='show=true'>
|
||||
<span>护理站</span>
|
||||
<text class='addition'>{{nurseStationName}}</text>
|
||||
<u-select v-model="show" mode="single-column" :list="listinfo" @confirm="confirm"></u-select>
|
||||
</view>
|
||||
<view class="radio-content" @tap="changeRadio">
|
||||
<view class="radio-right">
|
||||
<view class="radio" :class="radio == 2 ? 'radio-default':''">
|
||||
<view :class="radio == 2 ? 'radio-active':''"></view>
|
||||
</view>
|
||||
</view>
|
||||
<text class="agreement">我已阅读并同意</text>
|
||||
<text @tap='maskshow=true;showRegectAgreeButton=false'>《用户协议》</text>
|
||||
</view>
|
||||
<view class="loginbtn" @tap='getInfo'>
|
||||
注册
|
||||
</view>
|
||||
<view class="switch" style="right:5%" @tap='gologin'>
|
||||
已有账号,去登录
|
||||
</view>
|
||||
<u-toast ref="uToast" />
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
nurseAppLoginSysUser,
|
||||
personNurseStationLists
|
||||
} from '../../api/register/index.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
listinfo: [],
|
||||
show: false,
|
||||
radio: 1, //用户协议
|
||||
nickName: '',
|
||||
userId: 13,
|
||||
userName: 123,
|
||||
nurseStationName: '',
|
||||
pageSize: 999,
|
||||
pageNum: 1,
|
||||
total: 0,
|
||||
appPersonallist: {
|
||||
nickName: '',
|
||||
newpassword: '',
|
||||
phonenumber: '',
|
||||
password: '',
|
||||
nurseStationIds: '',
|
||||
}
|
||||
|
||||
};
|
||||
},
|
||||
onLoad() {
|
||||
this.info()
|
||||
},
|
||||
onReachBottom() { //下滑加载
|
||||
if (this.listinfo.length >= this.total) {} else {
|
||||
this.pageNum++
|
||||
personNurseStationLists(this.pageNum, this.pageSize).then(res => {
|
||||
res.rows.forEach(e => {
|
||||
this.list.push(e)
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
onPullDownRefresh() { //下拉刷新
|
||||
this.pageNum = 1;
|
||||
personNurseStationLists(this.PageNum, this.pageSize).then(res => {
|
||||
this.listinfo = res.rows
|
||||
this.total = res.total
|
||||
})
|
||||
setTimeout(function() {
|
||||
uni.stopPullDownRefresh();
|
||||
}, 1000);
|
||||
},
|
||||
|
||||
methods: {
|
||||
//护理站
|
||||
info() {
|
||||
personNurseStationLists(this.pageNum, this.pageSize).then(res => {
|
||||
console.log(res)
|
||||
this.total = res.total
|
||||
|
||||
this.listinfo = res.rows.map((e) => {
|
||||
return {
|
||||
value: e.id,
|
||||
label: e.nurseStationName,
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
confirm(e) {
|
||||
console.log(e);
|
||||
this.appPersonallist.nurseStationIds = e[0].value
|
||||
this.nurseStationName = e[0]['label']
|
||||
console.log(e[0]['label'])
|
||||
},
|
||||
|
||||
//注册功能
|
||||
getInfo() {
|
||||
this.appPersonallist.nurseStationIds = JSON.stringify(this.appPersonallist.nurseStationIds)
|
||||
nurseAppLoginSysUser(this.appPersonallist).then(res => {
|
||||
console.log(res)
|
||||
if (this.password !== this.newpassword) {
|
||||
this.$refs.uToast.show({
|
||||
title: '密码输入不一致,请重新输入',
|
||||
type: 'error',
|
||||
duration: '1500'
|
||||
})
|
||||
} else if (res.code == 200) {
|
||||
this.$refs.uToast.show({
|
||||
title: '注册成功,前往登录',
|
||||
type: 'success',
|
||||
url: '/pages/login/login',
|
||||
duration: '1500'
|
||||
})
|
||||
} else if (this.radio == 1) {
|
||||
this.$refs.uToast.show({
|
||||
title: '请审核并同意用户协议',
|
||||
type: 'error'
|
||||
})
|
||||
} else {
|
||||
this.$refs.uToast.show({
|
||||
title: res.msg,
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
|
||||
})
|
||||
},
|
||||
//跳转登录页
|
||||
gologin() {
|
||||
uni.navigateTo({
|
||||
url: `/pages/login/login?phonenumber=${this.phonenumber}&password=${this.password}`
|
||||
})
|
||||
},
|
||||
|
||||
changeRadio() {
|
||||
if (this.radio == 1) {
|
||||
this.radio = 2;
|
||||
} else {
|
||||
this.radio = 1;
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.app {
|
||||
height: 100vh;
|
||||
padding: 20rpx 0;
|
||||
|
||||
.item {
|
||||
font-size: 34rpx;
|
||||
margin: 0 auto 20rpx;
|
||||
width: 94%;
|
||||
height: 100rpx;
|
||||
line-height: 100rpx;
|
||||
background-color: #fff;
|
||||
box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
|
||||
border-radius: 20rpx;
|
||||
position: relative;
|
||||
|
||||
span {
|
||||
margin-left: 3%;
|
||||
}
|
||||
|
||||
.addition {
|
||||
line-height: 100rpx;
|
||||
font-size: 34rpx;
|
||||
font-weight: 400;
|
||||
margin-left: 3%;
|
||||
}
|
||||
|
||||
.lefttext {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
left: 3%;
|
||||
}
|
||||
|
||||
.righttext {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
left: 18%;
|
||||
height: 100rpx;
|
||||
}
|
||||
|
||||
.lefttext,
|
||||
.righttext {
|
||||
::v-deep .uni-input-input {
|
||||
font-size: 34rpx;
|
||||
}
|
||||
|
||||
::v-deep .uni-input-wrapper {
|
||||
height: 100rpx;
|
||||
line-height: 100rpx;
|
||||
}
|
||||
|
||||
::v-deep .uni-input-placeholder {
|
||||
line-height: 100rpx;
|
||||
font-size: 34rpx;
|
||||
font-weight: 400;
|
||||
color: #C3C1C1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
.radio-content {
|
||||
padding-top: 50rpx;
|
||||
height: 80rpx;
|
||||
line-height: 11rpx;
|
||||
font-size: 28rpx;
|
||||
|
||||
.agreement {
|
||||
color: #878987;
|
||||
margin-left: 25%;
|
||||
}
|
||||
|
||||
.radio-right {
|
||||
margin-left: 20%;
|
||||
|
||||
.radio-default {
|
||||
border: 2rpx solid #0fbda6;
|
||||
}
|
||||
|
||||
.radio {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
border-radius: 70%;
|
||||
border: 2rpx solid #178ffb;
|
||||
margin: 6px 25px -20rpx -5rpx;
|
||||
|
||||
.radio-active {
|
||||
width: 16rpx;
|
||||
height: 16rpx;
|
||||
border-radius: 50%;
|
||||
background-color: #178ffb;
|
||||
margin-left: 22%;
|
||||
margin-top: 22%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.switch {
|
||||
text-align: center;
|
||||
line-height: 60rpx;
|
||||
color: #46ABD7;
|
||||
position: absolute;
|
||||
top: 70%;
|
||||
}
|
||||
|
||||
.loginbtn {
|
||||
width: 70%;
|
||||
height: 100rpx;
|
||||
text-align: center;
|
||||
line-height: 100rpx;
|
||||
background: #4C7BC9;
|
||||
border-radius: 51rpx;
|
||||
font-size: 41rpx;
|
||||
color: #FFFFFF;
|
||||
position: absolute;
|
||||
top: 57%;
|
||||
left: 15%;
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
||||
53
pages/startup/startup.vue
Normal file
@ -0,0 +1,53 @@
|
||||
<template>
|
||||
<view class="app">
|
||||
<image src="../../static/启动页.png" mode=""></image>
|
||||
<view class="title">
|
||||
泉医到家
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.info();
|
||||
},
|
||||
methods: {
|
||||
info() {
|
||||
setTimeout(() => {
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/login'
|
||||
});
|
||||
}, 2000);
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
image {
|
||||
width: 50%;
|
||||
height: 200rpx;
|
||||
position: absolute;
|
||||
left: 25%;
|
||||
top: 28%;
|
||||
}
|
||||
|
||||
.title {
|
||||
width: 80%;
|
||||
height: 48rpx;
|
||||
font-size: 49rpx;
|
||||
text-align: center;
|
||||
font-family: DengXian;
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 10%;
|
||||
}
|
||||
</style>
|
||||
209
pages/taskDetails/taskDetails.vue
Normal file
@ -0,0 +1,209 @@
|
||||
<template>
|
||||
<view class="app">
|
||||
<view class="details">
|
||||
<image :src="baseurl+list.itemPictureUrl" mode=""></image>
|
||||
<view class="detailsinfo">
|
||||
<view class="change">
|
||||
{{list.nurseItemName}}
|
||||
</view>
|
||||
<view class="time">
|
||||
服务时长: {{list.itemServeDurationUnit}}
|
||||
</view>
|
||||
<view class="price">
|
||||
¥ {{list.totalPrice}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="info">
|
||||
<view class="item">
|
||||
姓名: {{list.patientName}}
|
||||
</view>
|
||||
<view class="item">
|
||||
电话:{{list.phone}}
|
||||
</view>
|
||||
<view class="item" style="border:none;">
|
||||
<view class="add" style="display:inline-block;">
|
||||
地址:
|
||||
</view>
|
||||
<view class="address">
|
||||
{{list.serviceAddress}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit">
|
||||
<view class="return" @tap='goreturn'>
|
||||
任务退回
|
||||
</view>
|
||||
<view class="finish" @tap='gocomplete'>
|
||||
去完成
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
taskDetails
|
||||
} from '@/api/taskDetails.js'
|
||||
import baseurl from '@/api/baseurl.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
baseurl: '',
|
||||
list: {},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
//详情接口
|
||||
taskDetailsinfo(orderDetailsId) {
|
||||
taskDetails(orderDetailsId).then(res => {
|
||||
this.list = res.data
|
||||
console.log(this.list)
|
||||
})
|
||||
},
|
||||
goreturn() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/taskReturn/taskReturn'
|
||||
})
|
||||
},
|
||||
gocomplete() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/confirmCompletion/confirmCompletion'
|
||||
})
|
||||
},
|
||||
},
|
||||
onLoad(options) {
|
||||
this.baseurl = baseurl
|
||||
this.taskDetailsinfo(options.orderDetailsId)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.app {
|
||||
padding: 0;
|
||||
// font-size: 35rpx;
|
||||
height: 100vh;
|
||||
padding: 3%;
|
||||
|
||||
.details {
|
||||
width: 100%;
|
||||
height: 250rpx;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0rpx 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
|
||||
border-radius: 20rpx;
|
||||
margin: 0 auto;
|
||||
position: relative;
|
||||
|
||||
image {
|
||||
width: 170rpx;
|
||||
height: 170rpx;
|
||||
border-radius: 10rpx;
|
||||
margin: 20rpx 0 0 30rpx;
|
||||
}
|
||||
|
||||
.detailsinfo {
|
||||
width: 60%;
|
||||
height: 200rpx;
|
||||
border-radius: 10rpx;
|
||||
position: absolute;
|
||||
top: 12%;
|
||||
left: 35%;
|
||||
|
||||
.change {
|
||||
width: 100%;
|
||||
color: #000000;
|
||||
font-size: 34rpx;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.time {
|
||||
width: 100%;
|
||||
font-size: 32rpx;
|
||||
color: #999999;
|
||||
position: absolute;
|
||||
top: 32%;
|
||||
}
|
||||
|
||||
.price {
|
||||
width: 100%;
|
||||
font-size: 30rpx;
|
||||
color: #D43953;
|
||||
position: absolute;
|
||||
top: 65%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.info {
|
||||
width: 100%;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
|
||||
border-radius: 20rpx;
|
||||
position: relative;
|
||||
top: 20rpx;
|
||||
|
||||
|
||||
.item {
|
||||
line-height: 110rpx;
|
||||
border-bottom: 1rpx solid #D8D4D4;
|
||||
font-size: 32rpx;
|
||||
color: #000000;
|
||||
margin-left: 30rpx;
|
||||
|
||||
.add {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.address {
|
||||
height: 100rpx;
|
||||
line-height: 40rpx;
|
||||
display: inline-block;
|
||||
width: 80%;
|
||||
margin-left: 100rpx;
|
||||
margin-top: 30rpx;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.submit {
|
||||
width: 100%;
|
||||
height: 100rpx;
|
||||
height: 68rpx;
|
||||
font-size: 32rpx;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
position: fixed;
|
||||
bottom: 80rpx;
|
||||
// background-color: red;
|
||||
left: 15%;
|
||||
// padding: 20rpx;
|
||||
|
||||
.return {
|
||||
width: 216rpx;
|
||||
height: 68rpx;
|
||||
background: #E1AE3C;
|
||||
border-radius: 26rpx;
|
||||
line-height: 68rpx;
|
||||
display: inline-block;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.finish {
|
||||
width: 217rpx;
|
||||
height: 68rpx;
|
||||
line-height: 68rpx;
|
||||
background: #4C7BC9;
|
||||
border-radius: 26rpx;
|
||||
display: inline-block;
|
||||
margin-left: 30rpx;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
76
pages/taskReturn/taskReturn.vue
Normal file
@ -0,0 +1,76 @@
|
||||
<template>
|
||||
<view class="app">
|
||||
<view class="return">
|
||||
<view class="reason">
|
||||
退回原因
|
||||
</view>
|
||||
<view class="reason" style="border: none;margin: 20rpx 0 0 50rpx;">
|
||||
<input type="text" placeholder="请填写" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit">
|
||||
<view class="finish">
|
||||
去完成
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.app {
|
||||
padding: 0;
|
||||
// font-size: 35rpx;
|
||||
height: 100vh;
|
||||
padding: 3%;
|
||||
|
||||
.return {
|
||||
width: 98%;
|
||||
height: 342rpx;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
|
||||
border-radius: 20rpx;
|
||||
margin: 0 auto;
|
||||
|
||||
.reason {
|
||||
width: 93%;
|
||||
height: 80rpx;
|
||||
font-size: 30rpx;
|
||||
color: #030303;
|
||||
line-height: 80rpx;
|
||||
border-bottom: 1rpx solid #D8D4D4;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
.submit{
|
||||
height: 68rpx;
|
||||
font-size: 32rpx;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
position: fixed;
|
||||
bottom: 80rpx;
|
||||
left: 60%;
|
||||
.finish{
|
||||
width: 217rpx;
|
||||
height: 68rpx;
|
||||
line-height: 68rpx;
|
||||
background: #4C7BC9;
|
||||
border-radius: 26rpx;
|
||||
margin-left: 30rpx;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
BIN
static/autograph.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
static/detailed.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
static/dingdan.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
static/evaluated.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
static/finished.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
static/fuwutu.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
static/gb.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
static/headportrait.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
static/home.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
static/home1.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
static/homepagew.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
static/homepagews.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
static/jiantou.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
static/order.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
static/person.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
static/pic.png
Normal file
|
After Width: | Height: | Size: 729 B |
BIN
static/radio.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
static/rowsright.png
Normal file
|
After Width: | Height: | Size: 638 B |
BIN
static/shopping.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
static/sousuo.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
static/user.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
static/users.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
static/启动页.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
77
uni.scss
Normal file
@ -0,0 +1,77 @@
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
|
||||
/* 颜色变量 */
|
||||
|
||||
/* 行为相关颜色 */
|
||||
@import 'uview-ui/theme.scss';
|
||||
$uni-color-primary: #007aff;
|
||||
$uni-color-success: #4cd964;
|
||||
$uni-color-warning: #f0ad4e;
|
||||
$uni-color-error: #dd524d;
|
||||
|
||||
/* 文字基本颜色 */
|
||||
$uni-text-color:#333;//基本色
|
||||
$uni-text-color-inverse:#fff;//反色
|
||||
$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
|
||||
$uni-text-color-placeholder: #808080;
|
||||
$uni-text-color-disable:#c0c0c0;
|
||||
|
||||
/* 背景颜色 */
|
||||
$uni-bg-color:#ffffff;
|
||||
$uni-bg-color-grey:#f8f8f8;
|
||||
$uni-bg-color-hover:#f1f1f1;//点击状态颜色
|
||||
$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
|
||||
|
||||
/* 边框颜色 */
|
||||
$uni-border-color:#c8c7cc;
|
||||
|
||||
/* 尺寸变量 */
|
||||
|
||||
/* 文字尺寸 */
|
||||
$uni-font-size-sm:12px;
|
||||
$uni-font-size-base:14px;
|
||||
$uni-font-size-lg:16;
|
||||
|
||||
/* 图片尺寸 */
|
||||
$uni-img-size-sm:20px;
|
||||
$uni-img-size-base:26px;
|
||||
$uni-img-size-lg:40px;
|
||||
|
||||
/* Border Radius */
|
||||
$uni-border-radius-sm: 2px;
|
||||
$uni-border-radius-base: 3px;
|
||||
$uni-border-radius-lg: 6px;
|
||||
$uni-border-radius-circle: 50%;
|
||||
|
||||
/* 水平间距 */
|
||||
$uni-spacing-row-sm: 5px;
|
||||
$uni-spacing-row-base: 10px;
|
||||
$uni-spacing-row-lg: 15px;
|
||||
|
||||
/* 垂直间距 */
|
||||
$uni-spacing-col-sm: 4px;
|
||||
$uni-spacing-col-base: 8px;
|
||||
$uni-spacing-col-lg: 12px;
|
||||
|
||||
/* 透明度 */
|
||||
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
|
||||
|
||||
/* 文章场景相关 */
|
||||
$uni-color-title: #2C405A; // 文章标题颜色
|
||||
$uni-font-size-title:20px;
|
||||
$uni-color-subtitle: #555555; // 二级标题颜色
|
||||
$uni-font-size-subtitle:26px;
|
||||
$uni-color-paragraph: #3F536E; // 文章段落颜色
|
||||
$uni-font-size-paragraph:15px;
|
||||