Commit bba1df0b by lingyu0918

初始化提交

parent cedbc6e4
Showing with 1807 additions and 994 deletions
# Mac
.DS_Store
**/.DS_Store
# vim/vi
*.swp
# JavaScript
node_modules/
.node_modules/
.eslintcache
unpackage/dist/build/
unpackage/dist/dev/
# python
*.pyc
...@@ -15,4 +15,8 @@ export default { ...@@ -15,4 +15,8 @@ export default {
@import '@/themes/base.scss'; @import '@/themes/base.scss';
@import '@/themes/theme.scss'; @import '@/themes/theme.scss';
page {
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
}
</style> </style>
...@@ -7,8 +7,6 @@ export function userLoginToken(data) { ...@@ -7,8 +7,6 @@ export function userLoginToken(data) {
method: 'post', method: 'post',
data: data data: data
}) })
console.log('userLoginToken')
console.log(result)
return result return result
} }
......
<template xlang="wxml" minapp="mpvue">
<view class="tki-qrcode">
<canvas class="tki-qrcode-canvas" :canvas-id="cid" :style="{width:cpSize+'px',height:cpSize+'px'}" />
<image v-show="show" :src="result" :style="{width:cpSize+'px',height:cpSize+'px'}" />
</view>
</template>
<script>
import QRCode from "./qrcode.js"
let qrcode
export default {
name: "tki-qrcode",
props: {
cid: {
type: String,
default: 'tki-qrcode-canvas'
},
size: {
type: Number,
default: 200
},
unit: {
type: String,
default: 'upx'
},
show: {
type: Boolean,
default: true
},
val: {
type: String,
default: ''
},
background: {
type: String,
default: '#ffffff'
},
foreground: {
type: String,
default: '#000000'
},
pdground: {
type: String,
default: '#000000'
},
icon: {
type: String,
default: ''
},
iconSize: {
type: Number,
default: 40
},
lv: {
type: Number,
default: 3
},
onval: {
type: Boolean,
default: false
},
loadMake: {
type: Boolean,
default: false
},
usingComponents: {
type: Boolean,
default: true
},
showLoading: {
type: Boolean,
default: true
},
loadingText: {
type: String,
default: '二维码生成中'
},
},
data() {
return {
result: '',
}
},
methods: {
_makeCode() {
let that = this
if (!this._empty(this.val)) {
qrcode = new QRCode({
context: that, // 上下文环境
canvasId:that.cid, // canvas-id
usingComponents: that.usingComponents, // 是否是自定义组件
showLoading: that.showLoading, // 是否显示loading
loadingText: that.loadingText, // loading文字
text: that.val, // 生成内容
size: that.cpSize, // 二维码大小
background: that.background, // 背景色
foreground: that.foreground, // 前景色
pdground: that.pdground, // 定位角点颜色
correctLevel: that.lv, // 容错级别
image: that.icon, // 二维码图标
imageSize: that.iconSize,// 二维码图标大小
cbResult: function (res) { // 生成二维码的回调
that._result(res)
},
});
} else {
uni.showToast({
title: '二维码内容不能为空',
icon: 'none',
duration: 2000
});
}
},
_clearCode() {
this._result('')
qrcode.clear()
},
_saveCode() {
let that = this;
if (this.result != "") {
uni.saveImageToPhotosAlbum({
filePath: that.result,
success: function () {
uni.showToast({
title: '二维码保存成功',
icon: 'success',
duration: 2000
});
}
});
}
},
_result(res) {
this.result = res;
this.$emit('result', res)
},
_empty(v) {
let tp = typeof v,
rt = false;
if (tp == "number" && String(v) == "") {
rt = true
} else if (tp == "undefined") {
rt = true
} else if (tp == "object") {
if (JSON.stringify(v) == "{}" || JSON.stringify(v) == "[]" || v == null) rt = true
} else if (tp == "string") {
if (v == "" || v == "undefined" || v == "null" || v == "{}" || v == "[]") rt = true
} else if (tp == "function") {
rt = false
}
return rt
}
},
watch: {
size: function (n, o) {
if (n != o && !this._empty(n)) {
this.cSize = n
if (!this._empty(this.val)) {
setTimeout(() => {
this._makeCode()
}, 100);
}
}
},
val: function (n, o) {
if (this.onval) {
if (n != o && !this._empty(n)) {
setTimeout(() => {
this._makeCode()
}, 0);
}
}
}
},
computed: {
cpSize() {
if(this.unit == "upx"){
return uni.upx2px(this.size)
}else{
return this.size
}
}
},
mounted: function () {
if (this.loadMake) {
if (!this._empty(this.val)) {
setTimeout(() => {
this._makeCode()
}, 0);
}
}
},
}
</script>
<style>
.tki-qrcode {
position: relative;
}
.tki-qrcode-canvas {
position: fixed;
top: -99999upx;
left: -99999upx;
z-index: -99999;
}
</style>
...@@ -22,7 +22,7 @@ switch (appId) { ...@@ -22,7 +22,7 @@ switch (appId) {
config.domain = 'https://minzhisheng.mynatapp.cc' config.domain = 'https://minzhisheng.mynatapp.cc'
config.urlBase = 'http://139.159.137.113:9080/api/' config.urlBase = 'http://139.159.137.113:9080/api/'
config.urlUpload = '' config.urlUpload = ''
config.urlRes = '' config.urlRes = '@/static/image/'
config.other.clientId = 'oauth' config.other.clientId = 'oauth'
config.other.clientSecret = 'b1e34c71-3e25-4db4-9c93-2b5a0bf95fe9' config.other.clientSecret = 'b1e34c71-3e25-4db4-9c93-2b5a0bf95fe9'
break break
......
...@@ -3,7 +3,9 @@ ...@@ -3,7 +3,9 @@
"scripts": { "scripts": {
"test": "eslint . --fix" "test": "eslint . --fix"
}, },
"dependencies": {}, "dependencies": {
"tki-qrcode": "^0.1.6"
},
"devDependencies": { "devDependencies": {
"eslint": "^8.2.0", "eslint": "^8.2.0",
"eslint-config-airbnb": "^19.0.0" "eslint-config-airbnb": "^19.0.0"
......
{ {
"pages": [ "pages": [
{ "path": "pages/doctor/home", "style": {} }, { "path": "pages/doctor/home", "style": {} },
{ "path": "pages/doctor/location", "style": {} }, { "path": "pages/doctor/doctor-code", "style": {} },
{ "path": "pages/service/home", "style": {} }, { "path": "pages/doctor/doctor-info", "style": {} },
{ "path": "pages/curriculum/home", "style": {} }, { "path": "pages/doctor/doctor-evaluate", "style": {} },
{ "path": "pages/doctor/inquiry-history", "style": {} },
{ "path": "pages/article/my-article", "style": {} },
{ "path": "pages/article/article", "style": {} },
{ "path": "pages/article/add-article", "style": {} },
{ "path": "pages/article/edit-article", "style": {} },
{ "path": "pages/article/article-detail", "style": {} },
{ "path": "pages/article/article-preview", "style": {} },
{ "path": "pages/useful/useful", "style": {} },
{ "path": "pages/useful/add-useful", "style": {} },
{ "path": "pages/mine/home", "style": {} }, { "path": "pages/mine/home", "style": {} },
{ "path": "pages/login/login", "style": {} } { "path": "pages/login/login", "style": {} },
{ "path": "pages/login/setPwd", "style": {} },
{ "path": "pages/drug/drug", "style": {} }
], ],
"subPackages": [], "subPackages": [],
"globalStyle": { "globalStyle": {
......
<template>
<view class="">
<u-navbar title="新增文章" :placeholder="true"></u-navbar>
<view class="content">
<u--input
placeholder="文章标题"
border="bottom"
v-model="value"
placeholderStyle="{color:#999999}"
fontSize="44rpx"
></u--input>
</view>
<view class="btn-options flex content-between">
<view class="btn-item flex content-center items-center">
插入输入框
</view>
<view class="btn-item flex content-center items-center">
插入图片
</view>
</view>
<view class="btm-opt flex content-between">
<view class="btn-del" >
预览并发布
</view>
<view class="btn-edit">
保存到草稿箱
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
value:''
};
}
};
</script>
<style lang="scss" scoped>
.content{
padding: 16rpx 32rpx;
}
.btn-options{
.btn-item{
width: 336rpx;
height: 84rpx;
background: rgba(0, 74, 194, 0.04);
border-radius: 8rpx;
color: #004AC2;
font-size: 28rpx;
}
}
.btm-opt{
position: fixed;
bottom: 0;
left: 0;
width: 100%;
height: 132rpx;
padding: 32rpx 24rpx 0 24rpx;
background: #fff;
box-shadow: 0px -4px 12px 0px rgba(0, 0, 0, 0.08);
.btn-del{
width: 336rpx;
height: 84rpx;
text-align: center;
line-height: 84rpx;
border-radius: 8rpx;
border: 2rpx solid #F1F1F1;
font-size: 32rpx;
color: #333333;
}
.btn-edit{
width: 336rpx;
height: 84rpx;
text-align: center;
line-height: 84rpx;
border-radius: 8rpx;
background: linear-gradient(135deg, #0B57D2 0%, #77A5FF 100%);
border: 2rpx solid #F1F1F1;
font-size: 32rpx;
color: #fff;
}
}
</style>
<template>
<view class="cont">
<u-navbar title="文章详情" :placeholder="true"></u-navbar>
<view class="cont-title pt20">眼药水可以控制近视吗?</view>
<view class="cont-time">2020-12-12 10:00:00</view>
<view class="cont-html pt38" v-html="content">
</view>
<view class="btm-opt flex content-between">
<view class="btn-del" @click="handleDel">
删除
</view>
<view class="btn-edit">
编辑
</view>
</view>
</view>
</template>
<script>
export default{
data(){
return{
content:'<p>测试内容</p><image src="https://cdn.uviewui.com/uview/album/1.jpg" />'
}
},
onLoad(){
this.content=this.content.replace(/<image/g,'<image style="width:100%"')
},
methods:{
handleDel(){
uni.showModal({
content:'确定要删除该文章吗?',
success:res=>{
if(res.confirm){
}
}
})
},
handleDel(){
uni.showModal({
content:'确定要删除该文章吗?',
success:res=>{
if(res.confirm){
}
}
})
},
}
}
</script>
<style lang="scss" scoped>
.cont{
padding: 0 32rpx;
.cont-title {
font-weight: 600;
color: #333333;
line-height: 40rpx;
}
.cont-time {
padding-top: 24rpx;
font-size: 24rpx;
line-height: 24rpx;
color: #999999;
}
}
.cont-html{
padding-bottom: 142rpx;
}
.btm-opt{
position: fixed;
bottom: 0;
left: 0;
width: 100%;
height: 132rpx;
padding: 32rpx 24rpx 0 24rpx;
background: #fff;
box-shadow: 0px -4px 12px 0px rgba(0, 0, 0, 0.08);
.btn-del{
width: 336rpx;
height: 84rpx;
text-align: center;
line-height: 84rpx;
border-radius: 8rpx;
border: 2rpx solid #F1F1F1;
font-size: 32rpx;
color: #333333;
}
.btn-edit{
width: 336rpx;
height: 84rpx;
text-align: center;
line-height: 84rpx;
border-radius: 8rpx;
background: linear-gradient(135deg, #0B57D2 0%, #77A5FF 100%);
border: 2rpx solid #F1F1F1;
font-size: 32rpx;
color: #fff;
}
}
</style>
<template>
<view class="cont">
<u-navbar title="预览" :placeholder="true"></u-navbar>
<view class="cont-title pt20">眼药水可以控制近视吗?</view>
<view class="cont-time">2020-12-12 10:00:00</view>
<view class="cont-html pt38" v-html="content">
</view>
<view class="btm-opt flex content-between">
<view class="btn-edit">
预览并发布
</view>
</view>
</view>
</template>
<script>
export default{
data(){
return{
content:'<p>测试内容</p><image src="https://cdn.uviewui.com/uview/album/1.jpg" />'
}
},
onLoad(){
this.content=this.content.replace(/<image/g,'<image style="width:100%"')
},
methods:{
handleDel(){
uni.showModal({
content:'确定要删除该文章吗?',
success:res=>{
if(res.confirm){
}
}
})
},
handleDel(){
uni.showModal({
content:'确定要删除该文章吗?',
success:res=>{
if(res.confirm){
}
}
})
},
}
}
</script>
<style lang="scss" scoped>
.cont{
padding: 0 32rpx;
.cont-title {
font-weight: 600;
color: #333333;
line-height: 40rpx;
}
.cont-time {
padding-top: 24rpx;
font-size: 24rpx;
line-height: 24rpx;
color: #999999;
}
}
.cont-html{
padding-bottom: 142rpx;
}
.btm-opt{
position: fixed;
bottom: 0;
left: 0;
width: 100%;
height: 132rpx;
padding: 32rpx 24rpx 0 24rpx;
background: #fff;
box-shadow: 0px -4px 12px 0px rgba(0, 0, 0, 0.08);
.btn-edit{
width: 100%;
height: 84rpx;
text-align: center;
line-height: 84rpx;
border-radius: 8rpx;
background: linear-gradient(135deg, #0B57D2 0%, #77A5FF 100%);
border: 2rpx solid #F1F1F1;
font-size: 32rpx;
color: #fff;
}
}
</style>
<template>
<view class="">
<u-navbar title="我的文章" :placeholder="true"></u-navbar>
<view class="">
<view class="head-tabs flex items-center">
<view class="tabs-nav active" @click="checkTabs(0)">
已发布
<view class="btm-slide" v-if="idx == 0"></view>
</view>
<view class="tabs-nav" @click="checkTabs(1)">
草稿箱
<view class="btm-slide" v-if="idx == 1"></view>
</view>
</view>
</view>
<!-- 列表 -->
<articleList/>
</view>
</template>
<script>
import articleList from './componnets/article-list.vue';
export default {
components:{
articleList
},
data() {
return {
idx: 0
};
},
methods: {
// 切换选项
checkTabs(idx) {
this.idx = idx;
}
}
};
</script>
<style lang="scss" scoped>
.head-tabs {
height: 90rpx;
padding: 0 34rpx;
border-bottom: 2rpx solid #f5f6f7;
.tabs-nav {
position: relative;
margin-right: 44rpx;
color: #666666;
font-size: 30rpx;
line-height: 42rpx;
.btm-slide {
position: absolute;
bottom: -26rpx;
left: 50%;
transform: translateX(-50%);
width: 40rpx;
height: 6rpx;
background: linear-gradient(270deg, #77abff 0%, #035ceb 100%);
border-radius: 4rpx;
}
}
.active {
color: #000000;
font-weight: 500;
}
}
</style>
<template>
<view class="content">
<view class="flex pb32 pt32">
<view class="aticle-img"></view>
<view class="article-cont pl24">
<view class="article-title">眼药水可以控制近视吗?</view>
<view class="article-text text-ellipsis-1" style="width: 448rpx">提到近视提到近视控制的方法控制的方法,很很很</view>
<view class="flex pt42 content-between">
<view class="create-time ">2020-12-12 10:00:00</view>
<view class="record flex items-center">
<image style="width: 20rpx; height: 16rpx;" src="/static/image/record.png"></image>
<text>198</text>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {};
},
created() {
console.log(1);
}
};
</script>
<style lang="scss" scoped>
.content {
border-bottom: 2rpx solid #f5f6f7;
padding: 0 26rpx;
.aticle-img {
flex-shrink: 0;
width: 228rpx;
height: 152rpx;
border-radius: 12px;
background-color: #eee;
}
.article-title {
font-size: 30rpx;
color: #333333;
line-height: 40rpx;
}
.article-text {
font-size: 24rpx;
color: #999999;
line-height: 34rpx;
}
.create-time {
font-size: 24rpx;
color: #999999;
line-height: 24rpx;
}
.record {
width: 70rpx;
height: 28rpx;
background: rgba(239, 43, 45, 0.1);
line-height: 28rpx;
// opacity: 0.1;
border-radius: 4rpx;
font-size: 18rpx;
color: #ef2b2d;
}
}
</style>
<template>
<view class="cont">
<u-navbar title="编辑" :placeholder="true"></u-navbar>
<view class="cont-title pt20">眼药水可以控制近视吗?</view>
<view class="cont-time">2020-12-12 10:00:00</view>
<view class="cont-html pt38" v-html="content">
</view>
<view class="btm-opt flex content-between">
<view class="btn-edit">
预览并保存
</view>
</view>
</view>
</template>
<script>
export default{
data(){
return{
content:'<p>测试内容</p><image src="https://cdn.uviewui.com/uview/album/1.jpg" />'
}
},
onLoad(){
this.content=this.content.replace(/<image/g,'<image style="width:100%"')
},
methods:{
handleDel(){
uni.showModal({
content:'确定要删除该文章吗?',
success:res=>{
if(res.confirm){
}
}
})
},
handleDel(){
uni.showModal({
content:'确定要删除该文章吗?',
success:res=>{
if(res.confirm){
}
}
})
},
}
}
</script>
<style lang="scss" scoped>
.cont{
padding: 0 32rpx;
.cont-title {
font-weight: 600;
color: #333333;
line-height: 40rpx;
}
.cont-time {
padding-top: 24rpx;
font-size: 24rpx;
line-height: 24rpx;
color: #999999;
}
}
.cont-html{
padding-bottom: 142rpx;
}
.btm-opt{
position: fixed;
bottom: 0;
left: 0;
width: 100%;
height: 132rpx;
padding: 32rpx 24rpx 0 24rpx;
background: #fff;
box-shadow: 0px -4px 12px 0px rgba(0, 0, 0, 0.08);
.btn-edit{
width: 100%;
height: 84rpx;
text-align: center;
line-height: 84rpx;
border-radius: 8rpx;
background: linear-gradient(135deg, #0B57D2 0%, #77A5FF 100%);
border: 2rpx solid #F1F1F1;
font-size: 32rpx;
color: #fff;
}
}
</style>
<template>
<view class="">
<u-navbar title="我的文章" :placeholder="true"></u-navbar>
<!-- 列表 -->
<articleList/>
</view>
</template>
<script>
import articleList from './componnets/article-list.vue';
export default {
components:{
articleList
},
data() {
return {
idx: 0
};
},
methods: {
// 切换选项
checkTabs(idx) {
this.idx = idx;
}
}
};
</script>
<style lang="scss" scoped>
.head-tabs {
height: 90rpx;
padding: 0 34rpx;
border-bottom: 2rpx solid #f5f6f7;
.tabs-nav {
position: relative;
margin-right: 44rpx;
color: #666666;
font-size: 30rpx;
line-height: 42rpx;
.btm-slide {
position: absolute;
bottom: -26rpx;
left: 50%;
transform: translateX(-50%);
width: 40rpx;
height: 6rpx;
background: linear-gradient(270deg, #77abff 0%, #035ceb 100%);
border-radius: 4rpx;
}
}
.active {
color: #000000;
font-weight: 500;
}
}
</style>
<template>
<view class="container">
<u-navbar title="找课程" :placeholder="true"></u-navbar>
<view class="main">
<view>
<u--image width="750rpx" height="130rpx" :src="require('@/assets/doctor-help.png')"></u--image>
</view>
<view class="flex row content-between items-center mt30">
<view class="drug card flex content-center items-center">
<text>急速配药</text>
</view>
<view class="flex column content-between items-center">
<view class="consultation card">
<text>图文问诊</text>
</view>
<view class="prescription card">
<text>复诊续方</text>
</view>
</view>
</view>
<view class="mt30">
<u--image width="750rpx" height="160rpx" :src="require('@/assets/doctor-propaganda.png')"></u--image>
</view>
<view class="menu mt30">
<u--image width="750rpx" height="310rpx" :src="require('@/assets/doctor-menu.png')"></u--image>
</view>
<!-- 平台优选 -->
<view class="rcommd card mt30">
<view class="flex row content-between items-center">
<text>视频课程</text>
<view class="flex items-center">
<text class="font-20">查看更多</text>
<u-icon name="arrow-right" size="20" color="#c2ced8"></u-icon>
</view>
</view>
<view class="mt30">
<view class="roll-list-short roll-list flex row content-start">
<template v-for="(item, index) in rcommdList">
<view class="roll-item" :key="index"> </view>
</template>
<view class="roll-item-last"></view>
</view>
</view>
</view>
<!-- 找医院、找医生 -->
<view class="rcommd card mt30">
<view class="flex row content-between items-center">
<text>健康资讯</text>
<view class="flex items-center">
<text class="font-20">查看更多</text>
<u-icon name="arrow-right" size="20" color="#c2ced8"></u-icon>
</view>
</view>
<view class="tabs-box">
<u-tabs :list="tabList" :scrollable="true"></u-tabs>
</view>
<view class="mt30">
<view class="roll-list-short roll-list flex row content-start">
<template v-for="(item, index) in rcommdList">
<view class="roll-item" :key="index"> </view>
</template>
<view class="roll-item-last"></view>
</view>
</view>
</view>
</view>
<u-tabbar value="curriculum" :fixed="true" :placeholder="true" :safeAreaInsetBottom="true">
<u-tabbar-item text="找医生" name="doctor" icon="home" @click="tabbarItem"></u-tabbar-item>
<u-tabbar-item text="找服务" name="service" icon="photo" @click="tabbarItem"></u-tabbar-item>
<u-tabbar-item text="找课程" name="curriculum" icon="play-right" @click="tabbarItem"></u-tabbar-item>
<u-tabbar-item text="个人中心" name="mine" icon="account" @click="tabbarItem"></u-tabbar-item>
</u-tabbar>
</view>
</template>
<script>
export default {
data() {
return {
rcommdList: [1, 2, 3, 4, 5, 6, 7, 8],
tabList: [{ name: '全部' }, { name: '资讯' }, { name: '保健' }, { name: '女性健康' }, { name: '儿童' }, { name: '产后' }, { name: '其他' }]
}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped>
.container {
background: #004bb9;
}
.search-box {
width: 750rpx;
padding: 30rpx;
}
.search-input {
width: 600rpx;
}
.main {
padding: 30rpx 0 0 0;
border-radius: 30rpx 30rpx 0 0;
background: #f5f5f9;
}
.rcommd {
width: 750rpx;
padding: 30rpx;
background: #ffffff;
}
.tabs-box {
max-width: 750rpx;
}
.roll-list {
width: 750rpx;
overflow-x: scroll;
}
.roll-item {
position: relative;
display: inline-block;
min-width: 200rpx;
height: 200rpx;
margin: 0 20rpx 0 0;
border-radius: 10rpx;
overflow: hidden;
background: #808080;
box-shadow: 0 16rpx 20rpx 0 rgba(0, 0, 0, 0.05);
}
.roll-item-last {
min-width: 1px;
margin: 0 0 0 -1px;
}
</style>
<template>
<view class="container">
<u-navbar title="医生主页" :placeholder="true"></u-navbar>
<view class="main"> </view>
</view>
</template>
<script>
export default {
data() {
return {}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped></style>
<template>
<view class="pl28 pr28">
<view class="content flex items-center content-between ">
<view class="flex pt30">
<view class="evaluate-icon">
</view>
<view class="pl16">
<view class="evaluate-name">
刘**
</view>
<view class="score">
<image style="width:22rpx;height: 22rpx;" src="../../../static/image/score1.png" mode=""></image>
<image style="width:22rpx;height: 22rpx;" src="../../../static/image/score1.png" mode=""></image>
<image style="width:22rpx;height: 22rpx;" src="../../../static/image/score1.png" mode=""></image>
<image style="width:22rpx;height: 22rpx;" src="../../../static/image/score1.png" mode=""></image>
<image style="width:22rpx;height: 22rpx;" src="../../../static/image/score2.png" mode=""></image>
</view>
</view>
</view>
<view class="data-time">
2020-12-12 10:00:00
</view>
</view>
<view class="msg pt24 pb32">
医生非常耐心,有问必答,非常感谢!
</view>
</view>
</template>
<script>
</script>
<style lang="scss" scoped>
.content{
.evaluate-icon{
background-color: #eee;
width: 64rpx;
height: 64rpx;
border-radius: 50%;
overflow: hidden;
}
.evaluate-name{
font-size: 28rpx;
color: #333333;
line-height: 24rpx;
}
.data-time{
font-size: 24rpx;
color: #999999;
line-height: 24rpx;
}
}
.msg{
font-size: 28rpx;
color: #333333;
line-height: 28rpx;
border-bottom: 2rpx solid #F5F6F7;
}
</style>
\ No newline at end of file
<template>
<view class="container">
<u-navbar title="医生主页" :placeholder="true"></u-navbar>
<view class="main"> </view>
</view>
</template>
<script>
export default {
data() {
return {}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped></style>
<template>
<view class="container">
<u-navbar title="医生主页" :placeholder="true"></u-navbar>
<view class="main"> </view>
</view>
</template>
<script>
export default {
data() {
return {}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped></style>
<template>
<view class="container">
<u-navbar title="医生主页" :placeholder="true"></u-navbar>
<view class="main"> </view>
</view>
</template>
<script>
export default {
data() {
return {}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped></style>
<template>
<view class="container">
<u-navbar title="医生主页" :placeholder="true"></u-navbar>
<view class="main"> </view>
</view>
</template>
<script>
export default {
data() {
return {}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped></style>
<template>
<view class="container">
<u-navbar title="医生主页" :placeholder="true"></u-navbar>
<view class="main"> </view>
</view>
</template>
<script>
export default {
data() {
return {}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped></style>
<template>
<view class="content">
<u-navbar title="我的二维码" :placeholder="true"></u-navbar>
<view class="head ">
<view class=" content-center items-center" style="display: flex; flex-direction: column;">
<view class="doctor-icon mt40"></view>
<view class="doctor-name pt24">李白</view>
<view class="pt16">
<text class="doctor-tag">呼吸内科,儿童门诊</text>
<text class="doctor-title">主治医师</text>
</view>
<view class="head-doctor-name pt24">厦门弘爱医院</view>
</view>
</view>
<view class="content-code">
<view class="qrimg flex content-center" style="padding: 60rpx; 0">
<tki-qrcode
ref="qrcode"
cid="qrcode2"
:val="val"
:size="size"
:unit="unit"
:background="background"
:foreground="foreground"
:pdground="pdground"
:icon="icon"
:iconSize="iconsize"
:lv="lv"
:onval="onval"
:loadMake="loadMake"
:usingComponents="usingComponents"
:showLoading="true"
:loadingText="'加载中'"
@result="qrR"
/>
</view>
<view class="msg flex content-center pb42">识别二维码使用微信关注我</view>
</view>
</view>
</template>
<script>
import tkiQrcode from '@/components/tki-qrcode/tki-qrcode.vue';
export default {
components: { tkiQrcode },
data() {
return {
ifShow: true,
usingComponents:true,
val: '二维码', // 要生成的二维码值
size: 500, // 二维码大小
unit: 'upx', // 单位
background: '#000000', // 背景色
foreground: '#ffffff', // 前景色
pdground: '#ffffff', // 角标色
icon: '', // 二维码图标
iconsize: 40, // 二维码图标大小
lv: 3, // 二维码容错级别 , 一般不用设置,默认就行
onval: false, // val值变化时自动重新生成二维码
loadMake: true, // 组件加载完成后自动生成二维码
src: '' // 二维码生成后的图片地址或base64
};
},
methods:{
// 二维码生成之后生成一个图片地址
qrR(val){
// console.log(val)
}
}
};
</script>
<style>
page {
background: #f5f6f7;
}
</style>
<style lang="scss" scoped>
.content {
padding: 0 44rpx;
.head {
height: 360rpx;
background-image: url('/static/image/home-bg-color.png');
background-repeat: no-repeat;
background-size: 100%;
.doctor-icon {
width: 120rpx;
height: 120rpx;
border-radius: 50%;
border: 4rpx solid rgba(255, 255, 255, 0.15);
box-shadow: 0px 4px 20px 0px rgba(0, 0, 0, 0.01);
}
.doctor-name {
font-size: 36rpx;
color: #fff;
font-weight: 600;
line-height: 36rpx;
text-shadow: 0rpx 4rpx 20rpx rgba(0, 0, 0, 0.01);
}
.doctor-tag {
padding: 8rpx 24rpx;
background: linear-gradient(180deg, rgba(255, 255, 255, 0.15) 0%, rgba(255, 255, 255, 0.2) 100%);
opacity: 0.43;
line-height: 24rpx;
text-shadow: 0rpx 4rpx 20rpx rgba(0, 0, 0, 0.01);
border-radius: 20rpx;
font-size: 24rpx;
color: #ffffff;
}
.doctor-title {
padding: 8rpx 24rpx;
background: #eff4fb;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.01);
color: #1c62d5;
border-radius: 20rpx;
font-size: 24rpx;
margin-left: 12rpx;
}
.head-doctor-name {
font-size: 24rpx;
color: #ffffff;
line-height: 24rpx;
}
}
.content-code {
background: #fff;
.msg {
line-height: 24rpx;
font-size: 28rpx;
color: #b6b6b6;
}
}
}
</style>
<template>
<view class="">
<u-navbar title="我的评价" :placeholder="true"></u-navbar>
<view class="head-info flex">
<view class="head-icon"></view>
<view class="flex content-center pl22" style="flex-direction: column;">
<view class="flex ">
<text class="doctor-name">李白</text>
<text class="doctor-tag ml12">主治医师</text>
</view>
<view class="doctor-text pt20">呼吸内科,儿童门诊</view>
</view>
</view>
<view class="pl24 pr24">
<view class="flex pt40">
<image style="width: 44rpx; height: 44rpx;" src="/static/image/info5.png" mode=""></image>
<view class="info-title">对医生的印象</view>
</view>
<view class="flex pt28" style="flex-flow: wrap;">
<text class="tags mr24 mb20">全部</text>
<text class="tags mr24 mb20">全部</text>
<text class="tags mr24 mb20">全部</text>
<text class="tags mr24 mb20">全部</text>
<text class="tags mr24 mb20">全部</text>
<text class="tags mr24 mb20">全部</text>
</view>
</view>
<!-- 患者评价列表 -->
<view class="">
<view class="flex pt40">
<image style="width: 44rpx; height: 44rpx;" src="/static/image/info4.png" mode=""></image>
<view class="info-title">对医生的印象</view>
</view>
<evaluate-list></evaluate-list>
</view>
</view>
</template>
<script>
import evaluateList from './componnets/evaluate-list.vue'
export default{
components:{
evaluateList
},
data(){
return{
}
},
methods:{
}
}
</script>
<style lang="scss" scoped>
.head-info {
padding: 28rpx 24rpx 40rpx 24rpx;
border-bottom: 2rpx solid #f5f6f7;
.head-icon {
width: 116rpx;
height: 116rpx;
background: #eee;
border-radius: 50%;
}
.doctor-name {
font-size: 36rpx;
color: #333333;
font-weight: 600;
line-height: 36rpx;
}
.doctor-tag {
padding: 8rpx 14rpx;
background: #eff4fb;
border-radius: 20rpx;
font-size: 24rpx;
color: #1c62d5;
}
.doctor-text {
font-size: 24rpx;
color: #666666;
line-height: 24rpx;
}
}
.info-title {
padding-left: 16rpx;
font-size: 32rpx;
line-height: 44rpx;
color: #333333;
font-weight: 600;
}
.tags {
background-color: #f5f6f7;
padding: 10rpx 36rpx;
border-radius: 28rpx;
color: #555555;
font-size: 24rpx;
}
</style>
<template> <template>
<view class="container"> <view class="">
<u-navbar title="医生主页" :placeholder="true"></u-navbar> <u-navbar title="医生简介" :placeholder="true"></u-navbar>
<view class="head-info flex">
<view class="main"> </view> <view class="head-icon"></view>
</view> <view class="flex content-center pl22" style="flex-direction: column;">
<view class="flex ">
<text class="doctor-name">李白</text>
<text class="doctor-tag ml12">主治医师</text>
</view>
<view class="doctor-text pt20">呼吸内科,儿童门诊</view>
</view>
</view>
<view class="" style="padding: 0 24rpx;">
<view class="pt40">
<view class="doctor-info flex">
<image src="/static/image/info1.png" style="width: 44rpx; height: 44rpx;" mode=""></image>
<view class="doctor-title pl16">坐诊信息</view>
</view>
<view class="doctor-content pt20 text-ellipsis-2">
小儿多动症、癫痫、小儿生长发育迟小儿多动症、癫痫、小儿生长发育迟小儿多动症、癫小儿生长发育迟小儿.....
</view>
</view>
<view style="padding-top: 80rpx;">
<view class="doctor-info flex">
<image src="/static/image/info2.png" style="width: 44rpx; height: 44rpx;" mode=""></image>
<view class="doctor-title pl16">擅长</view>
</view>
<view class="doctor-content pt20 text-ellipsis-2">
小儿多动症、癫痫、小儿生长发育迟小儿多动症、癫痫、小儿生长发育迟小儿多动症、癫小儿生长发育迟小儿.....
</view>
</view>
<view class="" style="padding-top: 80rpx;">
<view class="doctor-info flex">
<image src="/static/image/info3.png" style="width: 44rpx; height: 44rpx;" mode=""></image>
<view class="doctor-title pl16">介绍</view>
</view>
<view class="doctor-content pt20 text-ellipsis-2">
小儿多动症、癫痫、小儿生长发育迟小儿多动症、癫痫、小儿生长发育迟小儿多动症、癫小儿生长发育迟小儿.....
</view>
</view>
</view>
</view>
</template> </template>
<script> <script></script>
export default {
data() {
return {}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped></style> <style lang="scss" scoped>
.head-info {
padding: 28rpx 24rpx 40rpx 24rpx;
border-bottom: 2rpx solid #f5f6f7;
.head-icon {
width: 116rpx;
height: 116rpx;
background: #eee;
border-radius: 50%;
}
.doctor-name {
font-size: 36rpx;
color: #333333;
font-weight: 600;
line-height: 36rpx;
}
.doctor-tag {
padding: 8rpx 14rpx;
background: #eff4fb;
border-radius: 20rpx;
font-size: 24rpx;
color: #1c62d5;
}
.doctor-text {
font-size: 24rpx;
color: #666666;
line-height: 24rpx;
}
}
.doctor-title {
font-size: 32rpx;
font-weight: 600;
line-height: 44rpx;
color: #333333;
}
.doctor-content{
font-size: 28rpx;
color: #666666;
line-height: 40rpx;
}
</style>
<template>
<view class="container">
<u-navbar title="医生主页" :placeholder="true"></u-navbar>
<view class="main"> </view>
</view>
</template>
<script>
export default {
data() {
return {}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped></style>
<template>
<view class="container">
<u-navbar title="医生主页" :placeholder="true"></u-navbar>
<view class="main"> </view>
</view>
</template>
<script>
export default {
data() {
return {}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped></style>
<template>
<view class="container">
<u-navbar title="医生主页" :placeholder="true"></u-navbar>
<view class="main"> </view>
</view>
</template>
<script>
export default {
data() {
return {}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped></style>
<template> <template>
<view class="container"> <view class="container">
<u-navbar title="找医生" :placeholder="true"></u-navbar> 11
</view>
<!-- 搜索 -->
<view class="search-box flex row content-center">
<view class="search-input flex row items-center">
<u-search v-model="search.text" placeholder="搜医院、医生、科室、产品" actionText="搜索" :showAction="false" bgColor="#ffffff"></u-search>
</view>
<u-icon name="chat" size="40" color="#ffffff" @click="toLocation"></u-icon>
</view>
<view class="main">
<view>
<u--image width="750rpx" height="130rpx" :src="require('@/assets/doctor-help.png')"></u--image>
</view>
<view class="flex row content-between items-center mt30">
<view class="drug card flex content-center items-center">
<text>急速配药</text>
</view>
<view class="flex column content-between items-center">
<view class="consultation card">
<text>图文问诊</text>
</view>
<view class="prescription card">
<text>复诊续方</text>
</view>
</view>
</view>
<view class="mt30">
<u--image width="750rpx" height="160rpx" :src="require('@/assets/doctor-propaganda.png')"></u--image>
</view>
<view class="menu mt30">
<u--image width="750rpx" height="310rpx" :src="require('@/assets/doctor-menu.png')"></u--image>
</view>
<!-- 平台优选 -->
<view class="rcommd card mt30">
<view class="flex row content-between items-center">
<text>平台优选</text>
<view class="flex items-center">
<text class="font-20">查看更多</text>
<u-icon name="arrow-right" size="20" color="#c2ced8"></u-icon>
</view>
</view>
<view class="mt30">
<view class="roll-list-short roll-list flex row content-start">
<template v-for="(item, index) in rcommdList">
<view class="roll-item" :key="index"> </view>
</template>
<view class="roll-item-last"></view>
</view>
</view>
</view>
<!-- 找医院、找医生 -->
<view class="rcommd card mt30">
<view class="flex row content-between items-center">
<u-tabs :list="[{ name: '找医院' }, { name: '找医生' }]"></u-tabs>
<view class="flex items-center">
<text class="font-20">查看更多</text>
<u-icon name="arrow-right" size="20" color="#c2ced8"></u-icon>
</view>
</view>
<view class="mt30">
<view class="roll-list-short roll-list flex row content-start">
<template v-for="(item, index) in rcommdList">
<view class="roll-item" :key="index"> </view>
</template>
<view class="roll-item-last"></view>
</view>
</view>
</view>
</view>
<u-tabbar value="doctor" :fixed="true" :placeholder="true" :safeAreaInsetBottom="true">
<u-tabbar-item text="找医生" name="doctor" icon="home" @click="tabbarItem"></u-tabbar-item>
<u-tabbar-item text="找服务" name="service" icon="photo" @click="tabbarItem"></u-tabbar-item>
<u-tabbar-item text="找课程" name="curriculum" icon="play-right" @click="tabbarItem"></u-tabbar-item>
<u-tabbar-item text="个人中心" name="mine" icon="account" @click="tabbarItem"></u-tabbar-item>
</u-tabbar>
</view>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
search: { search: {
text: '' text: ''
}, }
rcommdList: [1, 2, 3, 4, 5, 6, 7, 8] };
} },
}, onShow() {},
onShow() {}, methods: {}
methods: { };
toLocation() {
uni.navigateTo({ url: '/pages/doctor/location' })
},
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.container { .status_bar {
background: #004bb9; height: var(--status-bar-height);
} width: 100%;
.search-box {
width: 750rpx;
padding: 30rpx;
}
.search-input {
width: 600rpx;
}
.main {
padding: 30rpx 0 0 0;
border-radius: 30rpx 30rpx 0 0;
background: #f5f5f9;
}
.drug {
width: 330rpx;
height: 300rpx;
margin: 0 0 0 30rpx;
}
.consultation {
width: 340rpx;
height: 150rpx;
margin: 0 30rpx 30rpx 0;
}
.prescription {
width: 340rpx;
height: 150rpx;
margin: 0 30rpx 0 0;
}
.rcommd {
width: 750rpx;
padding: 30rpx;
background: #ffffff;
}
.roll-list {
width: 750rpx;
overflow-x: scroll;
}
.roll-item {
position: relative;
display: inline-block;
min-width: 200rpx;
height: 200rpx;
margin: 0 20rpx 0 0;
border-radius: 10rpx;
overflow: hidden;
background: #808080;
box-shadow: 0 16rpx 20rpx 0 rgba(0, 0, 0, 0.05);
}
.roll-item-last {
min-width: 1px;
margin: 0 0 0 -1px;
} }
</style> </style>
<template>
<view class="">
<u-navbar title="问诊历史" :placeholder="true"></u-navbar>
<view class=" list pl24 pr24 pt34 pb28" v-for="i in 2" :key="i">
<view class="flex items-center content-between">
<view class="">
<text class="list-type" v-if="i==1">图文</text>
<text class="list-type prescribe" v-else>开药</text>
<text class="list-sex-age pl24">男 | 20岁</text>
</view>
<view class="list-time">2020-12-12 10:00:00</view>
</view>
<view class="list-cont pt22 text-ellipsis-3">请问医生我家宝宝这个鳃漏需要手术吗?</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {};
}
};
</script>
<style lang="scss" scoped>
.list {
border-bottom: 2rpx solid #f5f6f7;
.list-type {
background: linear-gradient(135deg, #1b6ff8 0%, #77a5ff 100%);
width: 40rpx;
height: 24rpx;
padding: 4rpx 6rpx;
border-radius: 4rpx;
font-size: 20rpx;
font-weight: 400;
color: #ffffff;
line-height: 24rpx;
font-size: 20rpx;
}
.list-time {
font-size: 24rpx;
color: #999999;
}
.list-sex-age {
font-size: 24rpx;
line-height: 24rpx;
color: #999999;
}
.list-cont {
font-size: 28rpx;
color: #666666;
line-height: 44rpx;
}
}
.prescribe {
background: linear-gradient(135deg, #05ddbd 0%, #32dfc2 100%) !important;
}
</style>
<template>
<view class="container">
<u-navbar title="选择所在城市" :placeholder="true"></u-navbar>
<!-- 搜索 -->
<view class="search-box flex row content-center">
<view class="search-input flex row items-center">
<u-search v-model="search.text" placeholder="搜医院、医生、科室、产品" actionText="搜索" :showAction="false" bgColor="#ffffff"></u-search>
</view>
</view>
<view class="main">
<u-index-list :index-list="indexList">
<template v-for="(item, index) in itemArr">
<u-index-anchor :text="indexList[index]" :key="index"></u-index-anchor>
<u-index-item :key="index">
<u-index-anchor :text="indexList[index]"></u-index-anchor>
<view class="list-cell" v-for="(cell, index) in item" :key="index"> {{ cell }} </view>
</u-index-item>
</template>
</u-index-list>
</view>
</view>
</template>
<script>
export default {
data() {
return {
search: {
text: ''
},
indexList: ['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C'],
itemArr: [
['列表A1', '列表A2', '列表A3'],
['列表B1', '列表B2', '列表B3'],
['列表C1', '列表C2', '列表C3'],
['列表B1', '列表B2', '列表B3'],
['列表B1', '列表B2', '列表B3'],
['列表B1', '列表B2', '列表B3'],
['列表B1', '列表B2', '列表B3'],
['列表B1', '列表B2', '列表B3'],
['列表B1', '列表B2', '列表B3'],
['列表B1', '列表B2', '列表B3'],
['列表B1', '列表B2', '列表B3'],
['列表B1', '列表B2', '列表B3']
]
}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped>
.container {
background: #004bb9;
}
.search-box {
width: 750rpx;
padding: 30rpx;
}
.search-input {
width: 690rpx;
}
.main {
padding: 30rpx 0 0 0;
border-radius: 30rpx 30rpx 0 0;
background: #f5f5f9;
}
</style>
<template>
<view class="content">
<view class="drug-title">双醋瑞因胶囊50mg*24粒</view>
<view class="drug-company pt16">重庆赛维药业有限公司</view>
<view class="pt24"><text class="tags">弘爱互联网+药房</text></view>
</view>
</template>
<script></script>
<style lang="scss" scoped>
.content {
width: 100%;
padding: 40rpx 24rpx 36rpx 24rpx;
border: 2rpx solid #F5F6F7;
.drug-title {
font-size: 30rpx;
color: #333333;
line-height: 30rpx;
}
.drug-company {
font-weight: 400;
color: #999999;
line-height: 24rpx;
font-size: 24rpx;
}
.tags {
padding: 8rpx;
background-color: #eff4fb;
color: #1c62d5;
line-height: 24rpx;
font-size: 24rpx;
}
}
</style>
<template>
<view class="">
<u-navbar title="药品查询" :placeholder="true"></u-navbar>
<view class="head">
<text class="doctor-title">
弘爱互联网+药房
<view class="btm-slide"></view>
</text>
</view>
<!-- 搜索输入框 -->
<view class="pl24 pr24 pt20">
<view class="search-content flex">
<view class="pl20 pr20" style="line-height: 68rpx;"><img style="width: 28rpx;height: 28rpx;" src="/static/image/search.png" alt="" /></view>
<u--input :fontSize="'24rpx'" placeholder="请输入药品名称" border="none" v-model="value"></u--input>
</view>
</view>
<!-- 药品列表 -->
<drug-list></drug-list>
</view>
</template>
<script>
import drugList from './components/drug-list.vue';
export default {
components:{
drugList
},
data() {
return {
value: ''
};
}
};
</script>
<style lang="scss" scoped>
.head {
height: 90rpx;
border-bottom: 2rpx solid #f5f6f7;
.doctor-title {
position: relative;
padding: 20rpx 34rpx 28rpx 34rpx;
font-weight: 500;
line-height: 42rpx;
font-size: 30rpx;
color: #000000;
}
.btm-slide {
position: absolute;
bottom: -10rpx;
left: 50%;
transform: translateX(-50%);
width: 40rpx;
height: 6rpx;
background: linear-gradient(270deg, #77abff 0%, #035ceb 100%);
border-radius: 4rpx;
}
}
.search-content {
background: #f5f6f7;
width: 100%;
height: 68rpx;
border-radius: 6rpx;
}
</style>
<template> <template>
<view class="container"> <view class="">
<u-navbar title="账号授权" back-text="返回" :placeholder="true" @leftClick="onNavbarLeftClick"></u-navbar> <u-navbar title="" :placeholder="true"></u-navbar>
<u-button type="primary" text="授权登录" @click="onLogin"></u-button> <view class="head">
<u-button type="primary" text="获取信息" @click="onGetUserProfile"></u-button> <view class="head-title flex items-center pl30 pr30">
<u-button type="primary" text="获取手机" open-type="getPhoneNumber" @getphonenumber="onGetPhoneNumber"></u-button> <view class="head-icon"></view>
</view> <view class="head-text">建发健康</view>
</template> </view>
</view>
<script> <!-- 表单 -->
import { userLoginToken, userGetMiniProgramPhone, userGetMiniProgramUserInfo } from '@/api/user.js' <view class="cont-form">
export default { <u--form labelPosition="left" :errorType="errorType" :model="model" :rules="rules" ref="model">
data() { <view class="flex items-center" style="border-bottom: 2rpx solid #EFEFEF;margin-bottom: 28rpx;">
return {} <view class="phone-type flex items-center pl28 colro333 ft28">+86</view>
}, <view class="division"></view>
onLoad() {}, <u-form-item prop="userInfo.mobile" :borderBottom="false" ref="item" style="flex:1">
onShow() { <u--input v-model="model.userInfo.mobile" :placeholderClass="'dep-input'" placeholder="请输入手机号" border="none"></u--input>
uni.hideLoading() </u-form-item>
}, </view>
methods: { <view class="flex items-center" style="border-bottom: 2rpx solid #EFEFEF;">
onLogin() { <view class="phone-type flex items-center pl28 colro333 ft28">验证码</view>
wx.login({ <view class="division"></view>
success: async (result) => { <u-form-item prop="userInfo.code" :borderBottom="false" ref="item" style="flex:1">
const response = await userLoginToken({ <u--input v-model="model.userInfo.code" :placeholderClass="'dep-input'" placeholder="请输入验证码" border="none"></u--input>
code: result.code <text slot="right" class="btn-submit" @click.stop="getCode">{{ tips }}</text>
}) <u-toast ref="uToast"></u-toast>
<u-code :seconds="seconds" @end="end" @start="start" ref="uCode" @change="codeChange"></u-code>
console.log('onLogin response') </u-form-item>
console.log(response) </view>
// 返回数据结构 </u--form>
// accessToken: "b2402ddf-61e4-4d07-bd1b-f22ef0fd3050" <u-button size="30rpx" class="submit" @click="handleSubmit">登录</u-button>
// expiresIn: 6858 <view class="check-login">手机号密码登录</view>
// openId: "oKJUK41TAcesZDVGf8o_Fv1EHlIg" </view>
// refreshToken: "b2bcc403-466f-40dc-9cf8-1f626abe97ee" </view>
// scope: "all,read,write" </template>
// sessionKey: "the/PDm51uVkj2jR4j9rCg=="
// tokenType: "bearer" <script>
// unionId: "ojbkR1KJEKZvEDFb1lUD97Q0aAfc" export default {
data() {
const responseData = response.data return {
uni.setStorageSync('accessToken', responseData.accessToken) errorType: 'toast',
uni.setStorageSync('refreshToken', responseData.refreshToken) model: {
uni.setStorageSync('sessionKey', responseData.sessionKey) userInfo: {
uni.setStorageSync('openId', responseData.openId) mobile: '',
} code: ''
}) }
}, },
onGetUserProfile() { rules: {
wx.getUserProfile({ 'userInfo.mobile': [
desc: '用于完善会员资料', {
success: async (result) => { required: true,
const response = await userGetMiniProgramUserInfo({ message: '请输入手机号',
encryptedData: result.encryptedData, trigger: ['change', 'blur']
iv: result.iv, },
rawData: result.rawData, {
signature: result.signature // 自定义验证函数,见上说明
}) validator: (rule, value, callback) => {
console.log('onGetUserProfile') // 上面有说,返回true表示校验通过,返回false表示不通过
console.log(response) // uni.$u.test.mobile()就是返回true或者false的
return uni.$u.test.mobile(value);
} },
}) message: '手机号码不正确',
}, // 触发器可以同时用blur和change
// 获取手机号 trigger: ['change', 'blur']
async onGetPhoneNumber(event) { }
const result = event.detail ],
const response = await userGetMiniProgramPhone({ 'userInfo.code': {
encryptedData: result.encryptedData, type: 'string',
iv: result.iv required: true,
}) len: 4,
message: '请填写4位验证码',
console.log('onGetPhoneNumber') trigger: ['blur']
console.log(response) }
} },
} tips: '获取验证码',
} seconds: 60
</script> };
},
<style lang="scss" scoped></style> onLoad() {},
onShow() {},
methods: {
handleSubmit() {
this.$refs.model
.validate()
.then(res => {})
.catch(errors => {
// uni.$u.toast('校验失败');
});
},
codeChange(text) {
this.tips = text;
},
getCode() {
// 先判断手机号是否为空
// if(!uni.$u.test.mobile(this.model.userInfo.mobile)){
// return uni.showLoading({
// title: '请输入正确的手机号',
// icon:'none'
// });
// }
if (this.$refs.uCode.canGetCode) {
uni.showModal({
content: '我们将发送短信到这个手机号码:+86' + this.model.userInfo.mobile,
success: res => {
if (res.confirm) {
// 模拟向后端请求验证码
uni.showLoading({
title: '正在获取验证码'
});
setTimeout(() => {
uni.hideLoading();
// 这里此提示会被this.start()方法中的提示覆盖
uni.$u.toast('验证码已发送');
// 通知验证码组件内部开始倒计时
this.$refs.uCode.start();
}, 2000);
}
}
});
} else {
uni.$u.toast('倒计时结束后再发送');
}
},
end() {
uni.$u.toast('倒计时结束');
},
start() {
uni.$u.toast('倒计时开始');
}
}
};
</script>
<style lang="scss" scoped>
.head {
padding-top: 80rpx;
.head-title {
.head-icon {
width: 130rpx;
height: 56rpx;
background: #eee;
}
.head-text {
width: 176rpx;
height: 40rpx;
font-size: 44rpx;
font-weight: 600;
color: #003787;
line-height: 40rpx;
}
}
}
.phone-type {
width: 156rpx;
height: 96rpx;
font-weight: 500;
color: #333333;
line-height: 28px;
}
.cont-form {
margin-top: 70rpx;
padding: 0 34rpx;
.division {
height: 32rpx;
width: 2rpx;
background: #f0f0f0;
margin-right: 28rpx;
}
}
/deep/.dep-input {
color: #999999 !important;
font-size: 28rpx !important;
line-height: 28rpx !important;
}
.btn-submit {
padding: 10rpx 16rpx;
background: #ffffff;
line-height: 44rpx;
border: 2rpx solid #d9d9d9;
border-radius: 10rpx;
font-weight: 400;
color: rgba(0, 0, 0, 0.65);
font-size: 28rpx;
}
.submit {
margin-top: 68rpx;
height: 96rpx;
// background: linear-gradient(135deg, #0B57D2 0%, #77A5FF 100%) #004AC2;
background: #004ac2;
// box-shadow: 0px 8px 12px 0px rgba(0, 74, 194, 0.08), 0px 4px 10px 0px rgba(20, 101, 232, 0.17);
border-radius: 48rpx;
font-size: 30rpx;
font-weight: 600;
color: #ffffff;
line-height: 42rpx;
text-shadow: 0rpx 8rpx 12rpx rgba(0, 74, 194, 0.08);
}
.check-login {
padding-top: 32rpx;
padding-left: 36rpx;
font-size: 24rpx;
font-weight: 400;
color: #333333;
line-height: 40rpx;
}
</style>
<template>
<view class="">
<u-navbar title="" :placeholder="true"></u-navbar>
<view class="cont">
<view class="head-title color333 ft36 flex content-center" style="padding-top: 86rpx;">请设置账号密码</view>
<view class="head-msg pt28">如果您是首次登陆,或者已经忘记账号密码,可以在本页设置账号密码。后续可通过手机号+微信密码登陆账号。</view>
</view>
<view class="cont-form">
<u--form labelPosition="left" :errorType="errorType" :model="model" :rules="rules" ref="model">
<view class="flex items-center" style="border-bottom: 2rpx solid #EFEFEF;margin-bottom: 28rpx;">
<view class="phone-type flex items-center pl28 colro333 ft28">+86</view>
<view class="division"></view>
<u-form-item prop="userInfo.mobile" :borderBottom="false" ref="item" style="flex:1">
<u--input v-model="model.userInfo.mobile" :placeholderClass="'dep-input'" placeholder="请输入手机号" border="none"></u--input>
</u-form-item>
</view>
<view class="flex items-center" style="border-bottom: 2rpx solid #EFEFEF;margin-bottom: 28rpx;">
<view class="phone-type flex items-center pl28 colro333 ft28">密码</view>
<view class="division"></view>
<u-form-item prop="userInfo.password" :borderBottom="false" ref="item" style="flex:1">
<u--input v-model="model.userInfo.password" :placeholderClass="'dep-input'" placeholder="请设置密码" border="none"></u--input>
</u-form-item>
</view>
<view class="flex items-center" style="border-bottom: 2rpx solid #EFEFEF;margin-bottom: 28rpx;">
<view class="phone-type flex items-center pl28 colro333 ft28">确认密码</view>
<view class="division"></view>
<u-form-item prop="userInfo.cnfmPwd" :borderBottom="false" ref="item" style="flex:1">
<u--input v-model="model.userInfo.cnfmPwd" :placeholderClass="'dep-input'" placeholder="请再次设置密码" border="none"></u--input>
</u-form-item>
</view>
</u--form>
<u-button size="30rpx" class="submit" @click="handleSubmit">保存</u-button>
</view>
</view>
</template>
<script>
export default {
data() {
return {
errorType: '',
model: {
userInfo: {
mobile: '',
password:'',
cnfmPwd:''
}
},
rules: {}
};
},
methods: {}
};
</script>
<style lang="scss" scoped>
.cont {
padding: 0 32rpx;
.head-title {
font-weight: 600;
line-height: 40rpx;
}
.head-msg {
font-size: 30rpx;
font-weight: 400;
color: #4e4f50;
line-height: 56rpx;
}
}
.phone-type {
width: 156rpx;
height: 96rpx;
font-weight: 500;
color: #333333;
line-height: 28px;
}
.cont-form {
margin-top: 70rpx;
padding: 0 34rpx;
.division {
height: 32rpx;
width: 2rpx;
background: #f0f0f0;
margin-right: 28rpx;
}
}
/deep/.dep-input {
color: #999999 !important;
font-size: 28rpx !important;
line-height: 28rpx !important;
}
.submit {
margin-top: 68rpx;
height: 96rpx;
// background: linear-gradient(135deg, #0B57D2 0%, #77A5FF 100%) #004AC2;
background: #004ac2;
// box-shadow: 0px 8px 12px 0px rgba(0, 74, 194, 0.08), 0px 4px 10px 0px rgba(20, 101, 232, 0.17);
border-radius: 48rpx;
font-size: 30rpx;
font-weight: 600;
color: #ffffff;
line-height: 42rpx;
text-shadow: 0rpx 8rpx 12rpx rgba(0, 74, 194, 0.08);
}
</style>
<template>
<view class="container">
<u-navbar title="医生主页" :placeholder="true"></u-navbar>
<view class="main"> </view>
</view>
</template>
<script>
export default {
data() {
return {}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped></style>
<template>
<view class="container">
<u-navbar title="医生主页" :placeholder="true"></u-navbar>
<view class="main"> </view>
</view>
</template>
<script>
export default {
data() {
return {}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped></style>
<template>
<view class="container">
<u-navbar title="医生主页" :placeholder="true"></u-navbar>
<view class="main"> </view>
</view>
</template>
<script>
export default {
data() {
return {}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped></style>
<template>
<view class="container">
<u-navbar title="找服务" :placeholder="true"></u-navbar>
<!-- 搜索 -->
<view class="search-box flex row content-center">
<view class="search-input flex row items-center">
<u-search v-model="search.text" placeholder="搜产品、服务" actionText="搜索" :showAction="false" bgColor="#ffffff"></u-search>
</view>
<u-icon name="chat" size="40" color="#ffffff"></u-icon>
<u-icon name="chat" size="40" color="#ffffff"></u-icon>
<u-icon name="chat" size="40" color="#ffffff"></u-icon>
</view>
<view class="main">
<view>
<u--image width="750rpx" height="160rpx" :src="require('@/assets/doctor-propaganda.png')"></u--image>
</view>
<view class="menu">
<view class="menu-item card menu-item-row">
<u-icon name="chat" size="40" color="#ffffff"></u-icon>
<text>急速配药</text>
</view>
<view class="menu-item card">
<u-icon name="chat" size="40" color="#ffffff"></u-icon>
<text>急速配药</text>
</view>
<view class="menu-item card">
<u-icon name="chat" size="40" color="#ffffff"></u-icon>
<text>急速配药</text>
</view>
<view class="menu-item card">
<u-icon name="chat" size="40" color="#ffffff"></u-icon>
<text>急速配药</text>
</view>
<view class="menu-item card">
<u-icon name="chat" size="40" color="#ffffff"></u-icon>
<text>急速配药</text>
</view>
</view>
<view>
<u--image width="750rpx" height="130rpx" :src="require('@/assets/service-other.png')"></u--image>
</view>
<!-- 限时专场、体验专区、餐饮专区 -->
<view class="rcommd card mt30">
<view class="flex row content-between items-center">
<u-tabs :list="[{ name: '限时专场' }, { name: '体验专区' }, { name: '餐饮专区' }]"></u-tabs>
<view class="flex items-center">
<text class="font-20">查看更多</text>
<u-icon name="arrow-right" size="20" color="#c2ced8"></u-icon>
</view>
</view>
<view class="mt30">
<u-list @scrolltolower="scrolltolower">
<u-list-item v-for="(item, index) in rcommdList" :key="index">
<u-cell :title="`列表长度-${index + 1}`">
<u-avatar slot="icon" shape="square" size="35" :src="item.url" customStyle="margin: -3px 5px -3px 0"></u-avatar>
</u-cell>
</u-list-item>
</u-list>
</view>
</view>
</view>
<u-tabbar value="service" :fixed="true" :placeholder="true" :safeAreaInsetBottom="true">
<u-tabbar-item text="找医生" name="doctor" icon="home" @click="tabbarItem"></u-tabbar-item>
<u-tabbar-item text="找服务" name="service" icon="photo" @click="tabbarItem"></u-tabbar-item>
<u-tabbar-item text="找课程" name="curriculum" icon="play-right" @click="tabbarItem"></u-tabbar-item>
<u-tabbar-item text="个人中心" name="mine" icon="account" @click="tabbarItem"></u-tabbar-item>
</u-tabbar>
</view>
</template>
<script>
export default {
data() {
return {
rcommdList: [1, 2, 3],
urls: ['https://cdn.uviewui.com/uview/album/1.jpg', 'https://cdn.uviewui.com/uview/album/2.jpg', 'https://cdn.uviewui.com/uview/album/3.jpg', 'https://cdn.uviewui.com/uview/album/4.jpg', 'https://cdn.uviewui.com/uview/album/5.jpg', 'https://cdn.uviewui.com/uview/album/6.jpg', 'https://cdn.uviewui.com/uview/album/7.jpg', 'https://cdn.uviewui.com/uview/album/8.jpg', 'https://cdn.uviewui.com/uview/album/9.jpg', 'https://cdn.uviewui.com/uview/album/10.jpg']
}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped>
.container {
background: #004bb9;
}
.search-box {
width: 750rpx;
padding: 30rpx;
}
.search-input {
width: 490rpx;
}
.main {
padding: 30rpx 0 0 0;
border-radius: 30rpx 30rpx 0 0;
background: #f5f5f9;
}
.menu {
display: grid;
grid-template-columns: 240rpx 200rpx 200rpx;
grid-gap: 20rpx;
grid-template-rows: 130rpx 130rpx;
width: 750rpx;
margin: 30rpx 0;
padding: 0 30rpx;
}
.menu-item {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background: #289efa;
}
.menu-item-row {
grid-row-start: 1;
grid-row-end: 3;
}
</style>
<template>
<view class="container">
<u-navbar title="医生主页" :placeholder="true"></u-navbar>
<view class="main"> </view>
</view>
</template>
<script>
export default {
data() {
return {}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped></style>
<template>
<view class="container">
<u-navbar title="医生主页" :placeholder="true"></u-navbar>
<view class="main"> </view>
</view>
</template>
<script>
export default {
data() {
return {}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped></style>
<template>
<view class="container">
<u-navbar title="医生主页" :placeholder="true"></u-navbar>
<view class="main"> </view>
</view>
</template>
<script>
export default {
data() {
return {}
},
onShow() {},
methods: {
tabbarItem(itemName) {
console.log(itemName)
uni.navigateTo({ url: '/pages/' + itemName + '/home' })
}
}
}
</script>
<style lang="scss" scoped></style>
<template>
<view class="">
<u-navbar title="新增常用语句" :placeholder="true"></u-navbar>
<view class="content">
<u--textarea v-model="value" placeholder="请输入..." style="background-color: #F5F6F7;min-height: 500rpx;" :autoHeight="true" maxlength="2000" count></u--textarea>
</view>
<view class="btm-opt flex content-between">
<view class="btn-edit">
确定
</view>
</view>
</view>
</template>
<script>
export default{
data(){
return{
value:''
}
}
}
</script>
<style lang="scss" scoped>
.content{
padding: 16rpx 24rpx;
}
.btm-opt{
position: fixed;
bottom: 0;
left: 0;
width: 100%;
height: 132rpx;
padding: 32rpx 24rpx 0 24rpx;
background: #fff;
box-shadow: 0px -4px 12px 0px rgba(0, 0, 0, 0.08);
.btn-edit{
width: 100%;
height: 84rpx;
text-align: center;
line-height: 84rpx;
border-radius: 8rpx;
background: linear-gradient(135deg, #0B57D2 0%, #77A5FF 100%);
border: 2rpx solid #F1F1F1;
font-size: 32rpx;
color: #fff;
}
}
</style>
\ No newline at end of file
<template>
<view class="">
<u-navbar title="常用语" :placeholder="true"></u-navbar>
<view class="list" v-for="i in 3">
糖尿病是一组以高血糖为特征的代谢性疾病。
</view>
<view class="btm-opt flex content-between">
<view class="btn-del" >
管理常用语句
</view>
<view class="btn-edit">
添加常用语
</view>
</view>
</view>
</template>
<script>
</script>
<style lang="scss" scoped>
.list{
padding: 20rpx 24rpx;
font-size: 30rpx;
color: #4E4F50;
line-height: 56rpx;
border-bottom: 2rpx solid #F5F6F7;
}
.btm-opt{
position: fixed;
bottom: 0;
left: 0;
width: 100%;
height: 132rpx;
padding: 32rpx 24rpx 0 24rpx;
background: #fff;
box-shadow: 0px -4px 12px 0px rgba(0, 0, 0, 0.08);
.btn-del{
width: 336rpx;
height: 84rpx;
text-align: center;
line-height: 84rpx;
border-radius: 8rpx;
border: 2rpx solid #F1F1F1;
font-size: 32rpx;
color: #333333;
}
.btn-edit{
width: 336rpx;
height: 84rpx;
text-align: center;
line-height: 84rpx;
border-radius: 8rpx;
background: linear-gradient(135deg, #0B57D2 0%, #77A5FF 100%);
border: 2rpx solid #F1F1F1;
font-size: 32rpx;
color: #fff;
}
}
</style>
\ No newline at end of file
...@@ -232,4 +232,16 @@ ...@@ -232,4 +232,16 @@
.pl44 { padding-left: 44rpx; } .pl44 { padding-left: 44rpx; }
.pl46 { padding-left: 46rpx; } .pl46 { padding-left: 46rpx; }
.pl48 { padding-left: 48rpx; } .pl48 { padding-left: 48rpx; }
.pl50 { padding-left: 50rpx; } .pl50 { padding-left: 50rpx; }
\ No newline at end of file .color333{
color:#333333
}
.ft22{font-size: 22rpx;}
.ft24{font-size: 24rpx;}
.ft26{font-size: 26rpx;}
.ft28{font-size: 28rpx;}
.ft30{font-size: 30rpx;}
.ft32{font-size: 32rpx;}
.ft34{font-size: 34rpx;}
.ft36{font-size: 36rpx;}
.ft38{font-size: 38rpx;}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment