Browse Source

注册模块接口联调

main
kola 7 months ago
parent
commit
7bb576f01d
  1. 9
      .neoconf.json
  2. 6
      .prettierrc
  3. 24
      index.d.ts
  4. 60
      project.private.config.json
  5. BIN
      src/.DS_Store
  6. 6
      src/app.json
  7. 103
      src/app.ts
  8. 4
      src/components/doctorAvatar/index.wxml
  9. 20
      src/components/pagination/index.js
  10. 6
      src/components/pagination/index.json
  11. 6
      src/components/pagination/index.scss
  12. 6
      src/components/pagination/index.wxml
  13. 14
      src/components/popupDoctorDetail/index.ts
  14. 32
      src/components/popupDoctorDetail/index.wxml
  15. 77
      src/components/uploadFile/index.ts
  16. 6
      src/components/uploadFile/index.wxml
  17. BIN
      src/images/none.png
  18. BIN
      src/images/none_1.png
  19. BIN
      src/images/user.png
  20. 31
      src/module1/pages/auditDoctorDetail/index.scss
  21. 113
      src/module1/pages/auditDoctorDetail/index.ts
  22. 79
      src/module1/pages/auditDoctorDetail/index.wxml
  23. 4
      src/module1/pages/auditDoctorList/index.json
  24. 73
      src/module1/pages/auditDoctorList/index.ts
  25. 45
      src/module1/pages/auditDoctorList/index.wxml
  26. 5
      src/module1/pages/cDoctor/index.json
  27. 37
      src/module1/pages/cDoctor/index.ts
  28. 50
      src/module1/pages/cDoctor/index.wxml
  29. 6
      src/module1/pages/cDoctorResult/index.ts
  30. 8
      src/module1/pages/cHostipal/index.json
  31. 0
      src/module1/pages/cHostipal/index.scss
  32. 155
      src/module1/pages/cHostipal/index.ts
  33. 100
      src/module1/pages/cHostipal/index.wxml
  34. 0
      src/module1/pages/cHostipalResult/index.json
  35. 0
      src/module1/pages/cHostipalResult/index.scss
  36. 24
      src/module1/pages/cHostipalResult/index.ts
  37. 7
      src/module1/pages/cHostipalResult/index.wxml
  38. 10
      src/module1/pages/login/index.scss
  39. 127
      src/module1/pages/login/index.ts
  40. 25
      src/module1/pages/login/index.wxml
  41. 21
      src/module1/pages/loginProtool/index.ts
  42. 382
      src/module1/pages/loginProtool/index.wxml
  43. 7
      src/module1/pages/sDoctor/index.json
  44. 11
      src/module1/pages/sDoctor/index.ts
  45. 32
      src/module1/pages/sDoctor/index.wxml
  46. 10
      src/module1/pages/sHostipal/index.json
  47. 0
      src/module1/pages/sHostipal/index.scss
  48. 137
      src/module1/pages/sHostipal/index.ts
  49. 58
      src/module1/pages/sHostipal/index.wxml
  50. 5
      src/module1/pages/setDoctor/index.json
  51. 46
      src/module1/pages/setDoctor/index.scss
  52. 233
      src/module1/pages/setDoctor/index.ts
  53. 106
      src/module1/pages/setDoctor/index.wxml
  54. 28
      src/module1/pages/setInfo/index.scss
  55. 190
      src/module1/pages/setInfo/index.ts
  56. 63
      src/module1/pages/setInfo/index.wxml
  57. 32
      src/module1/pages/setInfoResult/index.ts
  58. 11
      src/module1/pages/setInfoResult/index.wxml
  59. 8
      src/pages/home/index.ts
  60. 5
      src/pages/home/index.wxml
  61. 8
      src/pages/start/index.ts
  62. 2
      src/pages/start/index.wxml
  63. 71
      typings/index.d.ts

9
.neoconf.json

@ -1,10 +1,3 @@ @@ -1,10 +1,3 @@
{
"emmet_language_server": {
"init_options": {
"preferences": {
"css.intUnit": "rpx",
"css.floatUnitr": "rpx"
}
}
}
"usingComponents": {}
}

6
.prettierrc

@ -1,10 +1,10 @@ @@ -1,10 +1,10 @@
{
"$schema": "http://json.schemastore.org/prettierrc",
"$schema":"https://json.schemastore.org/prettierrc.json",
"printWidth": 120,
"tabWidth": 2,
"useTabs": false,
"semi": false,
"singleQuote": true,
"semi": true,
"singleQuote": false,
"bracketSpacing": true,
"trailingComma": "all",
"arrowParens": "always",

24
index.d.ts vendored

@ -1,23 +1,3 @@ @@ -1,23 +1,3 @@
interface IAppOption {
globalData: {
userInfo?: WechatMiniprogram.UserInfo
url: string
upFileUrl: string
imageUrl: string
}
userInfoReadyCallback?: WechatMiniprogram.GetUserInfoSuccessCallback
waitLogin: () => Promise<any>
getMenuInfo: (arg0: WechatMiniprogram.Page.Instance<any, any>) => void
}
interface IAgaxParams extends WechatMiniprogram.RequestOption {
showMsg?: boolean
loading?: boolean
isJSON?: boolean
}
declare namespace WechatMiniprogram {
export interface Wx {
ajax: (arg0: IAgaxParams) => Promise<any>
}
{
"usingComponents": {}
}

60
project.private.config.json

@ -9,6 +9,34 @@ @@ -9,6 +9,34 @@
"miniprogram": {
"list": [
{
"name": "指派医生",
"pathName": "module1/pages/setDoctor/index",
"query": "id=5",
"launchMode": "default",
"scene": null
},
{
"name": "医生审核详情",
"pathName": "module1/pages/auditDoctorDetail/index",
"query": "id=5",
"launchMode": "default",
"scene": null
},
{
"name": "医生认证结果页",
"pathName": "module1/pages/setInfoResult/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "选择医院",
"pathName": "module1/pages/sHostipal/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "聊天室",
"pathName": "module1/pages/chatRoom/index",
"query": "",
@ -114,20 +142,6 @@ @@ -114,20 +142,6 @@
"scene": null
},
{
"name": "指派医生",
"pathName": "module1/pages/setDoctor/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "医生审核详情",
"pathName": "module1/pages/auditDoctorDetail/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "医生审核列表",
"pathName": "module1/pages/auditDoctorList/index",
"query": "",
@ -135,29 +149,15 @@ @@ -135,29 +149,15 @@
"scene": null
},
{
"name": "医生认证结果页",
"pathName": "module1/pages/setInfoResult/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "创建医院结果页",
"pathName": "module1/pages/cDoctorResult/index",
"pathName": "module1/pages/cHostipalResult/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "创建医院",
"pathName": "module1/pages/cDoctor/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "选择医院",
"pathName": "module1/pages/sDoctor/index",
"pathName": "module1/pages/cHostipal/index",
"query": "",
"launchMode": "default",
"scene": null

BIN
src/.DS_Store vendored

Binary file not shown.

6
src/app.json

@ -14,9 +14,9 @@ @@ -14,9 +14,9 @@
"pages/invite/index",
"pages/setInfo/index",
"pages/setInfoResult/index",
"pages/sDoctor/index",
"pages/cDoctor/index",
"pages/cDoctorResult/index",
"pages/sHostipal/index",
"pages/cHostipal/index",
"pages/cHostipalResult/index",
"pages/auditDoctorList/index",
"pages/auditDoctorDetail/index",
"pages/setDoctor/index",

103
src/app.ts

@ -1,52 +1,107 @@ @@ -1,52 +1,107 @@
import component from '@/utils/component'
import relativeTime from '@/utils/dayjs/relativeTime.js'
import page from '@/utils/page'
import component from "@/utils/component";
import relativeTime from "@/utils/dayjs/relativeTime.js";
import page from "@/utils/page";
import { request } from '@/utils/request'
import { request } from "@/utils/request";
const dayjs = require('dayjs')
const licia = require('miniprogram-licia')
require('/utils/dayjs/day-zh-cn.js')
const dayjs = require("dayjs");
const licia = require("miniprogram-licia");
require("/utils/dayjs/day-zh-cn.js");
dayjs.locale('zh-cn') // 全局使用
dayjs.extend(relativeTime)
dayjs.locale("zh-cn"); // 全局使用
dayjs.extend(relativeTime);
App<IAppOption>({
globalData: {
// 测试号 wx2b0bb13edf717c1d
// dev
// appid:wxaae50c206446a964
url: 'https://m.takeda.hbraas.com',
upFileUrl: 'https://m.takeda.hbraas.com/',
imageUrl: 'https://m.takeda.hbraas.com/wt/',
url: "https://m.takeda.hbraas.com",
upFileUrl: "https://m.takeda.hbraas.com/",
imageUrl: "https://m.takeda.hbraas.com/wt/",
// pro
// appid:wx96f45ca4f1fa36ec
// url: 'https://m.takeda.hbraas.com',
// upFileUrl: 'https://m.takeda.hbraas.com/',
// imageUrl: 'https://m.takeda.hbraas.com/zd/',
loginState: "",
isLogin: 0,
doctorId: null,
},
onLaunch() {
Page = page as WechatMiniprogram.Page.Constructor
Component = component as WechatMiniprogram.Component.Constructor
Page = page as WechatMiniprogram.Page.Constructor;
Component = component as WechatMiniprogram.Component.Constructor;
wx.ajax = licia.curry(request)({ gUrl: this.globalData.url })
wx.ajax = licia.curry(request)({ gUrl: this.globalData.url });
wx.login({
success: (res) => {
console.log('code', res)
wx.ajax({
method: "GET",
url: "?r=takeda/user/init-login",
data: {
code: res.code,
},
}).then((res) => {
this.globalData.loginState = res.loginState;
this.globalData.isLogin = res.isLogin;
this.globalData.doctorId = res.doctorId;
this.globalData.doctorAuditId = res.doctorAuditId;
});
},
})
});
},
waitLogin() {
waitLogin(waitLoginState = false) {
let time: number;
return new Promise((resolve, reject) => {
resolve(true)
reject(false)
})
time = setInterval(() => {
if (this.globalData.loginState) {
clearInterval(time);
if (waitLoginState) {
resolve(true);
} else if (this.globalData.isLogin === 0) {
reject(new Error("未登录"));
wx.reLaunch({ url: "/module1/pages/login/index" });
} else if (this.globalData.doctorId === null) {
this.getApplyDoctor().then((applyDoctorInfo) => {
if (applyDoctorInfo.AuditStatus === 0) {
wx.reLaunch({ url: "/module1/pages/setInfoResult/index" });
reject(new Error("还在审核中"));
} else {
wx.reLaunch({ url: "/module1/pages/setInfo/index" });
reject(new Error("还不是医生"));
}
});
} else {
resolve(true);
}
}
}, 500);
});
},
getApplyDoctor() {
return wx.ajax({
method: "GET",
url: "?r=takeda/reg/get-apply-doctor",
});
},
getUserInfo(self: WechatMiniprogram.Page.Instance<any, any>, callback?: (res: any) => void) {
wx.ajax({
method: "GET",
url: "?r=takeda/account/info",
data: {},
}).then((res) => {
self.setData({
userInfo: res,
});
callback?.(res);
});
},
getMenuInfo(self) {
const menuButtonInfo = wx.getMenuButtonBoundingClientRect()
const menuButtonInfo = wx.getMenuButtonBoundingClientRect();
self.setData({
menuButtonInfo,
})
});
},
})
});

4
src/components/doctorAvatar/index.wxml

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
<view class="avatar">
<image class="a-img" src="{{src}}"></image>
<image class="mask" wx:if="{{level===3}}" src="/images/doctor-level3.png"></image>
<image class="mask" wx:elif="{{level===2}}" src="/images/doctor-level3.png"></image>
<image class="mask" wx:if="{{level==3}}" src="/images/doctor-level3.png"></image>
<image class="mask" wx:elif="{{level==2}}" src="/images/doctor-level2.png"></image>
</view>

20
src/components/pagination/index.js

@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
const app = getApp();
Component({
properties: {
pagination: {
type: Object,
value() {
return {};
},
},
},
data: {
imageUrl: app.globalData.imageUrl,
},
methods: {
handleTouchmove() {
return false;
},
},
});

6
src/components/pagination/index.json

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
{
"component": true,
"usingComponents": {
"van-divider": "@vant/weapp/divider/index"
}
}

6
src/components/pagination/index.scss

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
/* components/pagination/index.wxss */
.none {
display: block;
margin: 30rpx auto;
width: 80%;
}

6
src/components/pagination/index.wxml

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
<image class="none" src="/images/none.png" wx:if="{{pagination.count==0}}"></image>
<van-divider contentPosition="center" wx:elif="{{pagination.page<pagination.pages}}">
<van-loading />
加载中...
</van-divider>
<van-divider contentPosition="center" wx:elif="{{pagination.page>=pagination.pages}}">没有更多了</van-divider>

14
src/components/popupDoctorDetail/index.ts

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
const _app = getApp<IAppOption>()
const _app = getApp<IAppOption>();
// pages/story/a.ts
Component({
@ -10,6 +10,10 @@ Component({ @@ -10,6 +10,10 @@ Component({
type: Boolean,
value: false,
},
params: {
type: Object,
value: () => {},
},
},
/**
@ -20,5 +24,9 @@ Component({ @@ -20,5 +24,9 @@ Component({
/**
*
*/
methods: {},
})
methods: {
onClose() {
this.triggerEvent("close");
},
},
});

32
src/components/popupDoctorDetail/index.wxml

@ -1,45 +1,37 @@ @@ -1,45 +1,37 @@
<van-popup show="{{ show }}" bind:close="onClose" custom-style="background:transparent">
<view class="doctor-detail">
<van-icon class="close" name="cross" />
<van-icon class="close" name="cross" bind:tap="onClose" />
<view class="title">医生详情</view>
<view class="user">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{3}}"
></doctorAvatar>
<doctorAvatar class="avatar" src="{{params.DoctorImg}}" level="{{params.DoctorLevel}}"></doctorAvatar>
<view class="wrap">
<view class="name">徐萌</view>
<view class="name">{{params.DoctorName}}</view>
<view class="w-footer">
<view class="label">主任医师</view>
<view class="label">{{params.DoctorTitleName}}</view>
<block wx:for-item="depart" wx:for="{{params.department}}" wx:key="DepartmentId">
<view class="line"></view>
<view class="label">心内科</view>
<view class="label">{{depart.DepartmentName}}</view>
</block>
</view>
</view>
</view>
<view class="row">
<view class="label">所在医院</view>
<view class="hostipal">
<view class="h-name">四川华西医院</view>
<view class="h-tag">三甲</view>
<view class="h-site">成都市/金牛区</view>
<view class="h-name">{{params.HospitalName}}</view>
<view class="h-tag">{{params.HospitalClassificationName}}{{params.HospitalLevelName}}</view>
<view class="h-site">{{params.CityName}}/{{params.CountyName}}</view>
</view>
</view>
<view class="row">
<view class="label">专长</view>
<view class="specialty">
<div class="s-tag">冠心病</div>
<div class="s-tag">冠心病</div>
<div class="s-tag">冠心病</div>
<div class="s-tag">冠心病</div>
<div class="s-tag" wx:for="{{params.specialty}}" wx:key="SpecialtyId">{{item.SpecialtyName}}</div>
</view>
</view>
<view class="row">
<view class="label">简介</view>
<view class="brief-introduction">
曾任华西医院急诊科副主任、
血管疾病腔内治疗中心副主任。目前担任心脏和大血管外科教授、主任医师,硕士研究生导师。曾任华西医院急诊科副主任、血管疾病腔内治疗中心副主任。目前担任心脏和大血管外科教授、主任医师,硕士研究生导师。
</view>
<view class="brief-introduction">{{params.Introduce}}</view>
</view>
</view>
</van-popup>

77
src/components/uploadFile/index.ts

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
const _app = getApp<IAppOption>()
const app = getApp<IAppOption>();
// pages/story/a.ts
Component({
@ -20,5 +20,76 @@ Component({ @@ -20,5 +20,76 @@ Component({
/**
*
*/
methods: {},
})
methods: {
GetExtensionFileName(pathfilename) {
const reg = /(\\+)/g;
const pString = pathfilename.replace(reg, "#"); //用正则表达式来将\或\\替换成#
const arr = pString.split("#"); // 以“#”为分隔符,将字符分解为数组 例如 D Program Files bg.png
const lastString = arr[arr.length - 1]; //取最后一个字符
const arr2 = lastString.split("."); // 再以"."作为分隔符
return arr2[arr2.length - 1]; //将后缀名返回出来
},
handleAfterRead(e) {
this.uploadFile(e.detail.file).then((res) => {
this.triggerEvent("file", res as object);
});
},
handleChooseAvatar(e) {
this.uploadFile({
fileType: "image",
tempFilePath: e.detail.avatarUrl,
size: 0,
}).then((res) => {
this.triggerEvent("file", res as object);
});
},
uploadFile(item) {
wx.showLoading({
title: "正在上传",
});
return new Promise((resolve, reject) => {
let url = `${app.globalData.upFileUrl}?r=file-service/upload-`;
if (item.fileType === "image") {
url += "img";
} else if (item.fileType === "video") {
url += "video";
} else if (item.fileType === "audio") {
url += "audio";
} else {
url += "doc";
}
wx.uploadFile({
filePath: item.tempFilePath,
name: "file",
url,
success: (res) => {
wx.hideLoading();
const data = JSON.parse(res.data);
const expandJson = {
fileId: "",
name: data.data.Url,
size: (item.size / 1024).toFixed(2),
fileUrl: data.data.Url,
suffix: this.GetExtensionFileName(data.data.Url),
type: item.fileType,
imgUrl: "",
};
if (item.fileType === "image") {
expandJson.imgUrl = data.data.Url;
}
if (item.fileType === "video") {
expandJson.imgUrl = data.data.SnapshotUrl;
}
resolve(expandJson);
},
fail() {
wx.hideLoading();
reject(new Error("上传失败"));
},
});
});
},
},
});
export {};

6
src/components/uploadFile/index.wxml

@ -1,4 +1,6 @@ @@ -1,4 +1,6 @@
<button class="button" wx:if="{{chooseAvatar}}" open-type="chooseAvatar"><slot></slot></button>
<van-uploader wx:else max-count="{{1}}">
<button class="button" wx:if="{{chooseAvatar}}" open-type="chooseAvatar" bindchooseavatar="handleChooseAvatar">
<slot></slot>
</button>
<van-uploader wx:else max-count="{{1}}" bind:after-read="handleAfterRead">
<slot></slot>
</van-uploader>

BIN
src/images/none.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

BIN
src/images/none_1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

BIN
src/images/user.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

31
src/module1/pages/auditDoctorDetail/index.scss

@ -195,7 +195,7 @@ page { @@ -195,7 +195,7 @@ page {
}
}
}
.content{
.content {
margin-top: 24rpx;
padding: 32rpx;
width: 100%;
@ -207,32 +207,3 @@ page { @@ -207,32 +207,3 @@ page {
}
}
}
.resolve {
background-color: transparent;
.r-badge {
position: relative;
z-index: 1;
display: block;
margin: 0 auto;
width: 152rpx;
height: 152rpx;
}
.r-container {
margin-top: -76rpx;
padding: 78rpx 32rpx 40rpx;
background-color: #fff;
border-radius: 32rpx 32rpx 0 0;
.title {
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
font-weight: bold;
text-align: center;
}
.content {
margin-top: 32rpx;
font-size: 30rpx;
color: rgba(153, 153, 153, 1);
line-height: 44rpx;
}
}
}

113
src/module1/pages/auditDoctorDetail/index.ts

@ -1,20 +1,115 @@ @@ -1,20 +1,115 @@
const _app = getApp<IAppOption>()
const app = getApp<IAppOption>();
Page({
data: {
show: false,
showReject: true,
showReject: false,
showResolve: false,
id: "",
userInfo: {},
detail: {} as any,
RejectReason: "",
},
onLoad() {},
handleDialogClose() {
onLoad(options) {
this.setData({
show: false,
})
id: options.id,
onBeforeReject: (e) => {
if (e === "confirm") {
if (!this.data.RejectReason && e === "confirm") {
wx.showToast({
title: "请填写驳回原因",
icon: "none",
});
return false;
}
this.onConfirmReject();
}
return true;
},
});
app.waitLogin().then(() => {
this.getDetail();
app.getUserInfo(this);
});
},
getDetail() {
wx.ajax({
method: "GET",
url: "?r=takeda/doctor/audit-detail",
data: {
AuditId: this.data.id,
},
}).then((res) => {
this.setData({
detail: {
...res,
},
});
});
},
handleReject() {
this.setData({
showReject: true,
});
},
handleAddReject(e: any) {
const { value } = e.currentTarget.dataset;
this.setData({
RejectReason: this.data.RejectReason + value,
});
},
onConfirmReject() {
const { RejectReason, detail } = this.data;
wx.ajax({
method: "POST",
url: "?r=takeda/doctor/audit-reject",
data: {
AuditId: detail.AuditId,
RejectReason,
},
}).then(() => {
wx.navigateBack();
});
},
handleResolve() {
this.setData({
show: true,
});
},
handleSubmit() {
const { detail } = this.data;
wx.ajax({
method: "POST",
url: "?r=takeda/doctor/audit-pass",
data: {
AuditId: detail.AuditId,
InviteDoctorId: 0,
},
}).then(() => {
wx.navigateBack();
});
},
handleSetDoctor() {
const { detail } = this.data;
wx.navigateTo({
url: '/module1/pages/setDoctor/index',
})
url: `/module1/pages/setDoctor/index?id=${detail.AuditId}`,
});
},
handleDialogClose() {
this.setData({
show: false,
});
},
})
handlePreview(e: any) {
const { url } = e.currentTarget.dataset;
wx.previewImage({
urls: [url],
});
},
});
export {};

79
src/module1/pages/auditDoctorDetail/index.wxml

@ -2,23 +2,20 @@ @@ -2,23 +2,20 @@
<view class="card">
<view class="row">
<view class="label">提交人</view>
<view class="content">王军</view>
<view class="content">{{detail.Name}}</view>
</view>
<view class="row">
<view class="label">提交时间</view>
<view class="content">2024-6-1 13:34:34</view>
<view class="content">{{detail.SubmitTime}}</view>
</view>
</view>
<view class="card">
<view class="user">
<image
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
<image class="avatar" src="{{detail.Img}}"></image>
</view>
<view class="row">
<view class="label">姓名</view>
<view class="content">王军</view>
<view class="content">{{detail.Name}}</view>
</view>
<view class="row">
<view class="label">头衔</view>
@ -29,14 +26,28 @@ @@ -29,14 +26,28 @@
<view class="photo-wrap">
<image
class="photo"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
src="{{detail.RegisterImg}}"
mode="aspectFill"
catch:tap="handlePreview"
data-url="{{detail.RegisterImg}}"
>
<view class="preview">预览</view>
</image>
<image
class="photo"
src="{{detail.QualificationImg}}"
mode="aspectFill"
catch:tap="handlePreview"
data-url="{{detail.QualificationImg}}"
>
<view class="preview">预览</view>
</image>
<image
class="photo"
src="{{detail.PositionImg}}"
mode="aspectFill"
catch:tap="handlePreview"
data-url="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
wx:for="{{3}}"
wx:for-item="photo"
wx:for-index="photo-index"
wx:key="photo-index"
data-url="{{detail.PositionImg}}"
>
<view class="preview">预览</view>
</image>
@ -44,23 +55,23 @@ @@ -44,23 +55,23 @@
</view>
<view class="row">
<view class="label">所在医院</view>
<view class="content">北医三院</view>
<view class="content">{{detail.HospitalName}}</view>
</view>
</view>
<view class="footer">
<view class="cancel">驳回</view>
<view class="submit" bind:tap="handleSubmit">通过</view>
<view class="cancel" bind:tap="handleReject">驳回</view>
<view class="submit" bind:tap="handleResolve">通过</view>
</view>
</view>
<van-dialog use-slot show="{{ show }}" bind:close="onClose" show-confirm-button="{{false}}">
<view class="dialog">
<view class="d-title">确认通过王欢医生的审核信息?</view>
<view class="btn1">
<view class="title">确认通过王欢医生的审核信息?</view>
<view class="explanation">您将成为王欢医生的直接上级医生</view>
<view class="d-title">确认通过{{detail.Name}}医生的审核信息?</view>
<view class="btn1" bind:tap="handleSubmit">
<view class="title">确认通过{{detail.Name}}医生的审核信息?</view>
<view class="explanation">您将成为{{detail.Name}}医生的直接上级医生</view>
</view>
<view class="btn2" bind:tap="handleSetDoctor">
<view wx:if="{{userInfo.DoctorLevel>=3}}" class="btn2" bind:tap="handleSetDoctor">
<view class="title">指派核心医生后通过</view>
<view class="explanation">被指派医生将帮您提前审核病历</view>
</view>
@ -75,7 +86,7 @@ @@ -75,7 +86,7 @@
show="{{ showReject }}"
showCancelButton
confirm-button-color="rgba(0, 180, 197, 1)"
bind:close="onClose"
before-close="{{onBeforeReject}}"
>
<view class="reject">
<image class="r-badge" src="/images/icon-reject.png"></image>
@ -83,28 +94,10 @@ @@ -83,28 +94,10 @@
<view class="title">确认审核不通过?</view>
<view class="tip">请选择驳回原因</view>
<view class="select-wrap">
<view class="btn active">资料不符合要求</view>
<view class="btn">地区不合适</view>
</view>
<textarea auto-height class="content" placeholder="请输入"></textarea>
</view>
<view class="btn" bind:tap="handleAddReject" data-value="资料不符合要求">资料不符合要求</view>
<view class="btn" bind:tap="handleAddReject" data-value="地区不合适">地区不合适</view>
</view>
</van-dialog>
<!-- 审核通过 -->
<van-dialog
custom-style="background:transparent"
use-slot
show="{{ showResolve }}"
showCancelButton
confirm-button-color="rgba(0, 180, 197, 1)"
bind:close="onClose"
>
<view class="resolve">
<image class="r-badge" src="/images/icon-resolve.png"></image>
<view class="r-container">
<view class="title">确定审核通过?</view>
<view class="content">审核通过后,当前医生将成为您的邀约医生,他上传的病历将可以指定您一起讨论病历</view>
<textarea model:value="{{RejectReason}}" auto-height class="content" placeholder="请输入"></textarea>
</view>
</view>
</van-dialog>

4
src/module1/pages/auditDoctorList/index.json

@ -1,5 +1,7 @@ @@ -1,5 +1,7 @@
{
"navigationStyle": "default",
"navigationBarTitleText": "待审核医生",
"usingComponents": {}
"usingComponents": {
"pagination": "/components/pagination/index"
}
}

73
src/module1/pages/auditDoctorList/index.ts

@ -1,17 +1,72 @@ @@ -1,17 +1,72 @@
const _app = getApp<IAppOption>()
const app = getApp<IAppOption>();
Page({
data: {
pagination: {
page: 1,
pages: 1,
count: 1,
},
list: [],
DoctorTitleType: {},
},
onLoad() {
app.waitLogin().then(() => {
this.getList();
});
},
getDoctorDict() {
wx.ajax({
method: "GET",
url: "?r=takeda/reg/doctor-dict",
data: {},
onLoad() {},
handlePreview(e: WechatMiniprogram.BaseEvent) {
const { url } = e.currentTarget.dataset
}).then((res) => {
this.setData({
DoctorTitleType: res.DoctorTitleType,
});
});
},
getList(newPage = 1) {
wx.ajax({
method: "GET",
url: "?r=takeda/doctor/audit-list",
data: {
page: newPage,
},
}).then((res) => {
res.list.forEach((item: any) => {
item.SubmitTime = item.SubmitTime.split(" ")[0];
});
const list = res.page === 1 ? res.list : [...this.data.list, ...res.list];
this.setData({
list,
pagination: {
page: res.page,
pages: res.pages,
count: res.count,
},
});
});
},
onReachBottom() {
const { page, pages } = this.data.pagination;
if (pages > page) {
this.getList(page + 1);
}
},
handlePreview(e) {
const { url } = e.currentTarget.dataset;
wx.previewImage({
urls: [url],
})
});
},
handleDetail() {
handleDetail(e) {
const { index } = e.currentTarget.dataset;
const { AuditId } = this.data.list[index];
wx.navigateTo({
url: '/module1/pages/auditDoctorDetail/index',
})
url: `/module1/pages/auditDoctorDetail/index?id=${AuditId}`,
});
},
})
});
export {};

45
src/module1/pages/auditDoctorList/index.wxml

@ -1,41 +1,50 @@ @@ -1,41 +1,50 @@
<view class="notice">10位医生待您审核</view>
<view class="notice" wx:if="{{list.length}}">{{pagination.count}}位医生待您审核</view>
<view class="page">
<view class="list">
<view class="list-item" bind:tap="handleDetail">
<view class="list-item" wx:for="{{list}}" wx:key="AuditId">
<view class="user">
<image
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
<image class="avatar" src="{{item.Img}}"></image>
<view class="wrap">
<view class="w-header">
<view class="name">刘青</view>
<view class="label">主任医院</view>
<view class="name">{{item.Name}}</view>
<view class="label" wx:if="{{item.TitleType==='99'}}">{{item.OtherTitle}}</view>
<view class="label" wx:else>{{DoctorTitleType[item.TitleType]}}</view>
</view>
<view class="w-footer">
北医三院
<view class="tag">三甲</view>
{{item.HospitalName}}
<view class="tag">{{item.HospitalClassificationName}}{{item.HospitalLevelName}}</view>
</view>
</view>
</view>
<view class="photo-wrap">
<image
class="photo"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
src="{{item.RegisterImg}}"
mode="aspectFill"
catch:tap="handlePreview"
data-url="{{item.RegisterImg}}"
></image>
<image
class="photo"
src="{{item.QualificationImg}}"
mode="aspectFill"
catch:tap="handlePreview"
data-url="{{item.QualificationImg}}"
></image>
<image
class="photo"
src="{{item.PositionImg}}"
mode="aspectFill"
catch:tap="handlePreview"
data-url="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
wx:for="{{3}}"
wx:for-item="photo"
wx:for-index="photo-index"
wx:key="photo-index"
data-url="{{item.PositionImg}}"
></image>
</view>
<view class="l-footer">
<view class="date">提交时间:2024-09-19</view>
<view class="btn">审核</view>
<view class="date">提交时间:{{item.SubmitTime}}</view>
<view class="btn" bind:tap="handleDetail" data-index="{{index}}">审核</view>
</view>
</view>
<pagination pagination="{{pagination}}"></pagination>
</view>
</view>

5
src/module1/pages/cDoctor/index.json

@ -1,5 +0,0 @@ @@ -1,5 +0,0 @@
{
"navigationBarTitleText": "提交新医院",
"navigationStyle": "default",
"usingComponents": {}
}

37
src/module1/pages/cDoctor/index.ts

@ -1,37 +0,0 @@ @@ -1,37 +0,0 @@
const _app = getApp<IAppOption>()
Page({
data: {
selectList1: [
{
name: '一级',
},
{
name: '二级',
},
{
name: '三级',
},
],
selectList2: [
{
name: '特等',
},
{
name: '甲等',
},
{
name: '乙等',
},
{
name: '丙等',
},
],
},
onLoad() {},
handleSubmit() {
wx.navigateTo({
url: '/module1/pages/cDoctorResult/index',
})
},
})

50
src/module1/pages/cDoctor/index.wxml

@ -1,50 +0,0 @@ @@ -1,50 +0,0 @@
<view class="reject">
<image class="icon" src="/images/icon-error.png"></image>
审核不通过原因:提交信息有误。</view>
<view class="page">
<view class="form">
<view class="row">
<view class="label required">医院名称</view>
<view class="content">
<input placeholder="请输入医院名称" type="text" class="input" placeholder-class="place-input" />
</view>
</view>
<view class="row">
<view class="label">医院简称</view>
<view class="content">
<input placeholder="请输入医院简称" type="text" class="input" placeholder-class="place-input" />
</view>
</view>
<view class="row">
<view class="label required">城市地区</view>
<picker class="select-wrap">
<view class="select">
<view class="content" data-place="请选择省份/城市/地区"></view>
<image class="icon" src="/images/triangle-down.png"></image>
</view>
</picker>
</view>
<view class="row">
<view class="label">详细地址</view>
<view class="content">
<input placeholder="请输入详细地址" type="text" class="input" placeholder-class="place-input" />
</view>
</view>
<view class="row">
<view class="label">医院分级</view>
<view class="select-btn">
<view class="btn {{index===0&&'active'}}" wx:for="{{selectList1}}" wx:key="index">{{item.name}}</view>
</view>
</view>
<view class="row">
<view class="label">医院分等</view>
<view class="select-btn">
<view class="btn {{index===0&&'active'}}" wx:for="{{selectList2}}" wx:key="index">{{item.name}}</view>
</view>
</view>
</view>
<view class="footer">
<view class="cancel">取消</view>
<view class="submit" bind:tap="handleSubmit">提交</view>
</view>
</view>

6
src/module1/pages/cDoctorResult/index.ts

@ -1,6 +0,0 @@ @@ -1,6 +0,0 @@
const _app = getApp<IAppOption>();
Page({
data: {},
onLoad() {},
});

8
src/module1/pages/cHostipal/index.json

@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
{
"navigationBarTitleText": "提交新医院",
"navigationStyle": "default",
"usingComponents": {
"van-cascader": "@vant/weapp/cascader/index",
"van-popup": "@vant/weapp/popup/index"
}
}

0
src/module1/pages/cDoctor/index.scss → src/module1/pages/cHostipal/index.scss

155
src/module1/pages/cHostipal/index.ts

@ -0,0 +1,155 @@ @@ -0,0 +1,155 @@
const app = getApp<IAppOption>();
Page({
data: {
hospitalClassification: {},
hospitalLevel: {},
applyHostipal: null,
showArea: false,
area: [],
fieldNames: { text: "label", value: "value", children: "children" },
ProvinceName: "",
CityName: "",
CountyName: "",
AuditId: 0,
Name: "",
ShortName: "",
ProvinceId: "",
CityId: "",
CountyId: "",
Address: "",
HospitalClassification: "",
HospitalLevel: "",
},
onLoad() {
app.waitLogin(true).then(() => {
this.getHospitalDict();
this.getArea();
this.getApplyHostipal();
});
},
getApplyHostipal() {
wx.ajax({
method: "GET",
url: "?r=takeda/reg/last-apply-hospital",
data: {},
}).then((res) => {
if (!Array.isArray(res)) {
this.setData({
applyHostipal: res,
AuditId: res.AuditId,
Name: res.Name,
ShortName: res.ShortName,
ProvinceId: res.ProvinceId,
CityId: res.CityId,
CountyId: res.CountyId,
Address: res.Address,
HospitalClassification: `${res.HospitalClassification}`,
HospitalLevel: `${res.HospitalLevel}`,
ProvinceName: res.ProvinceName,
CityName: res.CityName,
CountyName: res.CountyName,
});
}
});
},
getHospitalDict() {
wx.ajax({
method: "GET",
url: "?r=takeda/reg/hospital-dict",
data: {},
}).then((res) => {
this.setData({
hospitalClassification: res.hospitalClassification,
hospitalLevel: res.hospitalLevel,
});
});
},
getArea() {
wx.ajax({
method: "GET",
url: "/js/area.json",
isJSON: true,
}).then((res) => {
this.setData({
area: res,
});
});
},
handleArea() {
this.setData({
showArea: true,
});
},
onClose() {
this.setData({
showArea: false,
});
},
onFinish(e: any) {
this.setData({
ProvinceId: e.detail.selectedOptions[0].value,
ProvinceName: e.detail.selectedOptions[0].label,
CityId: e.detail.selectedOptions[1].value,
CityName: e.detail.selectedOptions[1].label,
CountyId: e.detail.selectedOptions[2].value,
CountyName: e.detail.selectedOptions[2].label,
showArea: false,
});
},
handleSelect(e) {
const { value, key } = e.currentTarget.dataset;
this.setData({
[key]: value,
});
},
handleSubmit() {
const { AuditId, Name, ShortName, ProvinceId, CityId, CountyId, Address, HospitalClassification, HospitalLevel } =
this.data;
if (!Name) {
wx.showToast({
title: "请输入医院名称",
icon: "none",
});
return;
}
if (!ProvinceId) {
wx.showToast({
title: "请选择城市地区",
icon: "none",
});
return;
}
wx.ajax({
method: "POST",
url: "?r=takeda/reg/apply-hospital",
data: {
AuditId,
Name,
ShortName,
ProvinceId,
CityId,
CountyId,
Address,
HospitalClassification,
HospitalLevel,
},
}).then((res) => {
wx.redirectTo({
url: `/module1/pages/cHostipalResult/index?isf=${res.isFollow}`,
});
});
},
handleCancel() {
wx.navigateBack();
},
});
export {};

100
src/module1/pages/cHostipal/index.wxml

@ -0,0 +1,100 @@ @@ -0,0 +1,100 @@
<view class="reject" wx:if="{{applyHostipal && applyHostipal.AuditStatus===2}}">
<image class="icon" src="/images/icon-error.png"></image>
审核不通过原因:{{applyHostipal.RejectReason}}。
</view>
<view class="page">
<view class="form">
<view class="row">
<view class="label required">医院名称</view>
<view class="content">
<input
model:value="{{Name}}"
placeholder="请输入医院名称"
type="text"
class="input"
placeholder-class="place-input"
/>
</view>
</view>
<view class="row">
<view class="label">医院简称</view>
<view class="content">
<input
model:value="{{ShortName}}"
placeholder="请输入医院简称"
type="text"
class="input"
placeholder-class="place-input"
/>
</view>
</view>
<view class="row">
<view class="label required">城市地区</view>
<view class="select-wrap" bind:tap="handleArea">
<view class="select">
<!-- prettier-ignore -->
<view class="content" data-place="请选择省份/城市/地区">{{ProvinceName ? ProvinceName+'/' :''}}{{CityName ? CityName+'/' : ''}}{{CountyName}}</view>
<image class="icon" src="/images/triangle-down.png"></image>
</view>
</view>
</view>
<view class="row">
<view class="label">详细地址</view>
<view class="content">
<input
model:value="{{Address}}"
placeholder="请输入详细地址"
type="text"
class="input"
placeholder-class="place-input"
/>
</view>
</view>
<view class="row">
<view class="label">医院分级</view>
<view class="select-btn">
<view
class="btn {{index===HospitalClassification&&'active'}}"
wx:for="{{hospitalClassification}}"
wx:key="index"
bind:tap="handleSelect"
data-key="HospitalClassification"
data-value="{{index}}"
>
{{item}}
</view>
</view>
</view>
<view class="row">
<view class="label">医院分等</view>
<view class="select-btn">
<view
class="btn {{index===HospitalLevel&&'active'}}"
wx:for="{{hospitalLevel}}"
wx:key="index"
bind:tap="handleSelect"
data-key="HospitalLevel"
data-value="{{index}}"
>
{{item}}
</view>
</view>
</view>
</view>
<view class="footer">
<view class="cancel" bind:tap="handleCancel">取消</view>
<view class="submit" bind:tap="handleSubmit">提交</view>
</view>
</view>
<van-popup show="{{ showArea }}" round position="bottom">
<van-cascader
wx:if="{{ showArea }}"
value="{{ cascaderValue }}"
title="请选择所在地区"
options="{{ area }}"
field-names="{{fieldNames}}"
bind:close="onClose"
bind:finish="onFinish"
/>
</van-popup>

0
src/module1/pages/cDoctorResult/index.json → src/module1/pages/cHostipalResult/index.json

0
src/module1/pages/cDoctorResult/index.scss → src/module1/pages/cHostipalResult/index.scss

24
src/module1/pages/cHostipalResult/index.ts

@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
const app = getApp<IAppOption>();
Page({
data: {
isf: 0,
codeUrl: "",
},
onLoad(options) {
app.waitLogin(true).then(() => {
const { url, loginState } = app.globalData;
this.setData({
isf: Number(options.isf),
codeUrl: `${url}?r=takeda/common/get-channel-wx-code&ChannelType=1&loginState=${loginState}`,
});
});
},
handleBack() {
wx.redirectTo({
url: "/module1/pages/setInfo/index",
});
},
});
export {};

7
src/module1/pages/cDoctorResult/index.wxml → src/module1/pages/cHostipalResult/index.wxml

@ -5,14 +5,11 @@ @@ -5,14 +5,11 @@
<view class="container">
<image class="result" src="/images/c-doctor-result.png"></image>
<view class="title">医院信息提交成功</view>
<image
class="code"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
<image class="code" src="{{codeUrl}}" show-menu-by-longpress></image>
<view class="tip">
<view>扫码关注公众号</view>
<view>获取审核通知</view>
</view>
</view>
<view class="back-home">回到首页</view>
<view class="back-home" bind:tap="handleBack">回到首页</view>
</view>

10
src/module1/pages/login/index.scss

@ -1,4 +1,14 @@ @@ -1,4 +1,14 @@
.page {
position: relative;
.page-line {
position: absolute;
right: 0;
width: 186rpx;
height: 16rpx;
background: #00b4c5;
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.container {
padding: 234rpx 30rpx 80rpx;
.title {

127
src/module1/pages/login/index.ts

@ -1,8 +1,131 @@ @@ -1,8 +1,131 @@
const app = getApp<IAppOption>()
const app = getApp<IAppOption>();
let timer = 0;
Page({
data: {
menuButtonInfo: {},
mobile: "",
code: "",
protool: false,
codeText: "发送验证码",
},
onLoad() {},
})
getCode() {
if (timer) return;
const mobile = this.data.mobile;
if (!mobile) {
wx.showToast({
title: "手机号不能为空",
icon: "none",
});
return;
}
// 验证手机号
if (!/^1[3-9,]\d{9}$/.test(mobile)) {
wx.showToast({
title: "手机号格式不正确",
icon: "none",
});
return;
}
wx.ajax({
method: "POST",
url: "?r=takeda/login/send-verify-code",
data: {
mobile,
},
}).then(() => {
wx.showToast({
icon: "none",
title: "验证码已发送~",
});
let time = 60;
timer = setInterval(() => {
time--;
this.setData({
codeText: `${time}s后重新发送`,
});
if (time <= 0) {
clearInterval(timer as number);
timer = null;
this.setData({
codeText: "发送验证码",
});
}
}, 1000);
});
},
handleSubmit() {
const { mobile, code, protool } = this.data;
if (!protool) {
wx.showToast({
title: "请先勾选协议",
icon: "none",
});
return;
}
if (!mobile) {
wx.showToast({
title: "请输入手机号",
icon: "none",
});
return;
}
if (!code) {
wx.showToast({
title: "请输入验证码",
icon: "none",
});
return;
}
wx.ajax({
method: "POST",
url: "?r=takeda/login/reg-login",
data: {
mobile,
code,
},
}).then((_res) => {
this.submitCallback();
});
},
handleWxSubmit(e: any) {
const { protool } = this.data;
const { iv, encryptedData } = e.detail;
if (!protool) {
wx.showToast({
title: "请先勾选协议",
icon: "none",
});
return;
}
if (iv && encryptedData) {
wx.ajax({
method: "POST",
url: "?r=takeda/login/wx-reg-login",
data: {
iv: encodeURIComponent(iv),
encryptedData: encodeURIComponent(encryptedData),
},
}).then((_res) => {
this.submitCallback();
});
}
},
submitCallback() {
app.globalData.isLogin = 1;
app.waitLogin().then(() => {
wx.reLaunch({ url: "/module1/pages/index/index" });
});
},
handleProtool() {
this.setData({
protool: !this.data.protool,
});
},
handleNavProtool() {
wx.navigateTo({ url: "/module1/pages/loginProtool/index" });
},
});
export {};

25
src/module1/pages/login/index.wxml

@ -2,17 +2,30 @@ @@ -2,17 +2,30 @@
class="page"
style="background: url({{imageUrl}}login-bg.png?r={{Timestamp}}) no-repeat top center/100% 300rpx;padding-top:{{menuButtonInfo.bottom}}px;"
>
<!-- <view class="page-line" style="top:{{menuButtonInfo.bottom+94}}px"></view> -->
<view class="container">
<image class="title" src="/images/login-title.png"></image>
<view class="form">
<view class="tel">
<input class="input" placeholder-class="place-input" type="tel" placeholder="请输入手机号" />
<input
model:value="{{mobile}}"
class="input"
placeholder-class="place-input"
type="tel"
placeholder="请输入手机号"
/>
</view>
<view class="code">
<input class="input" placeholder-class="place-input" type="number" placeholder="请输入验证码" />
<view class="btn">发送验证码</view>
<input
class="input"
placeholder-class="place-input"
model:value="{{code}}"
type="number"
placeholder="请输入验证码"
/>
<view class="btn" bind:tap="getCode">{{codeText}}</view>
</view>
<view class="submit">立即加入</view>
<view class="submit" bind:tap="handleSubmit">立即加入</view>
</view>
<view class="or">
<van-divider contentPosition="center" custom-style="color:rgba(153, 153, 153, 1);font-size:28rpx;">
@ -24,9 +37,9 @@ @@ -24,9 +37,9 @@
手机号快捷登录
</button>
<view class="protool">
<radio class="radio"></radio>
<radio class="radio" checked="{{protool}}" bind:tap="handleProtool"></radio>
我已阅读并同意
<text class="link">《用户隐私协议》</text>
<text class="link" bind:tap="handleNavProtool">《用户隐私协议》</text>
</view>
</view>
</view>

21
src/module1/pages/loginProtool/index.ts

@ -1,5 +1,3 @@ @@ -1,5 +1,3 @@
const app = getApp<IAppOption>()
Page({
data: {
menuButtonInfo: {},
@ -7,10 +5,23 @@ Page({ @@ -7,10 +5,23 @@ Page({
},
onLoad() {},
handleScrollToLower(e) {
if (e.detail.direction === 'bottom') {
if (e.detail.direction === "bottom") {
this.setData({
wait: false,
})
});
}
},
})
handleCancel() {
wx.navigateBack();
},
handleOk() {
const pages = getCurrentPages(); //获取当前页面js里面的pages里的所有信息。
const prevPage = pages[pages.length - 2];
prevPage.setData({
protool: true,
});
this.handleCancel();
},
});
export {};

382
src/module1/pages/loginProtool/index.wxml

@ -46,390 +46,12 @@ @@ -46,390 +46,12 @@
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti
blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde
neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis
deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias
quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa
reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae
molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas
fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam
quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam
corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium
veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit
laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae,
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti
blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde
neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis
deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias
quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa
reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae
molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas
fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam
quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam
corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium
veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit
laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae,
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti
blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde
neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis
deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias
quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa
reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae
molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas
fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam
quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam
corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium
veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit
laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae,
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti
blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde
neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis
deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias
quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa
reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae
molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas
fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam
quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam
corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium
veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit
laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae,
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti
blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde
neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis
deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias
quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa
reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae
molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas
fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam
quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam
corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium
veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit
laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae,
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti
blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde
neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis
deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias
quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa
reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae
molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas
fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam
quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam
corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium
veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit
laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae,
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti
blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde
neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis
deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias
quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa
reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae
molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas
fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam
quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam
corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium
veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit
laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae,
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti
blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde
neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis
deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias
quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa
reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae
molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas
fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam
quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam
corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium
veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit
laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae,
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti
blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde
neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis
deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias
quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa
reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae
molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas
fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam
quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam
corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium
veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit
laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae,
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti
blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde
neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis
deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias
quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa
reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae
molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas
fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam
quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam
corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium
veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit
laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae,
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti
blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde
neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis
deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias
quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa
reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae
molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas
fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam
quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam
corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium
veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit
laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae,
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti
blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde
neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis
deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias
quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa
reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae
molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas
fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam
quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam
corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium
veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit
laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae,
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti
blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde
neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis
deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias
quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa
reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae
molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas
fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam
quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam
corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium
veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit
laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae,
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti
blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde
neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis
deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias
quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa
reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae
molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas
fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam
quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam
corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium
veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit
laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae,
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti
blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde
neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis
deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias
quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa
reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae
molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas
fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam
quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam
corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium
veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit
laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae,
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti
blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde
neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis
deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias
quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa
reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae
molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas
fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam
quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam
corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium
veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit
laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae,
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti
blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde
neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis
deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias
quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa
reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae
molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas
fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam
quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam
corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium
veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit
laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae,
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti
blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde
neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis
deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias
quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa
reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae
molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam quas
fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam corporis quisquam
quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium veniam
corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit laudantium
veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae, reprehenderit
laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique cumque. Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis sit vitae,
reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et, similique
cumque. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Architecto ipsa reiciendis deleniti blanditiis
sit vitae, reprehenderit laudantium veniam corporis quisquam quas fugiat. Beatae molestias quos unde neque et,
similique cumque.
</scroll-view>
<view class="footer">
<view class="cancel">不同意</view>
<view class="cancel" bind:tap="handleCancel">不同意</view>
<view wx:if="{{wait}}" class="wait">请上滑阅读完成</view>
<view wx:else class="sure">同意</view>
<view wx:else class="sure" bind:tap="handleOk">同意</view>
</view>
</view>
</view>

7
src/module1/pages/sDoctor/index.json

@ -1,7 +0,0 @@ @@ -1,7 +0,0 @@
{
"navigationBarTitleText": "选择医院",
"navigationStyle": "default",
"usingComponents": {
"van-icon": "@vant/weapp/icon/index"
}
}

11
src/module1/pages/sDoctor/index.ts

@ -1,11 +0,0 @@ @@ -1,11 +0,0 @@
const _app = getApp<IAppOption>()
Page({
data: {},
onLoad() {},
handlePushDoctor() {
wx.navigateTo({
url: '/module1/pages/cDoctor/index',
})
},
})

32
src/module1/pages/sDoctor/index.wxml

@ -1,32 +0,0 @@ @@ -1,32 +0,0 @@
<view class="page">
<view class="header">
<view class="region">
地区
<van-icon name="arrow-down" />
</view>
<view class="search">
<image class="icon" src="/images/icon-search.png"></image>
<input class="input" placeholder-class="搜索医院名称" type="text" placeholder="搜索" />
</view>
</view>
<view class="tip">
没找到您的医院?
<text class="link" bind:tap="handlePushDoctor">这里录入</text>
</view>
<view class="list">
<view class="list-item">
<view class="title">
<view class="name">
中山大学附属第一医院
<view class="tag">三甲</view>
</view>
</view>
<view class="site">广东省广州市越秀区中山二路58号</view>
</view>
</view>
<view class="empty">
<image class="e-img" src="/images/empty-1.png"></image>
<view class="e-tip">没有找到您搜索的医院哦!</view>
<view class="e-submit" bind:tap="handlePushDoctor">提交新医院</view>
</view>
</view>

10
src/module1/pages/sHostipal/index.json

@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
{
"navigationBarTitleText": "选择医院",
"navigationStyle": "default",
"usingComponents": {
"van-icon": "@vant/weapp/icon/index",
"pagination": "/components/pagination/index",
"van-cascader": "@vant/weapp/cascader/index",
"van-popup": "@vant/weapp/popup/index"
}
}

0
src/module1/pages/sDoctor/index.scss → src/module1/pages/sHostipal/index.scss

137
src/module1/pages/sHostipal/index.ts

@ -0,0 +1,137 @@ @@ -0,0 +1,137 @@
const app = getApp<IAppOption>();
Page({
data: {
prev: "",
showArea: false,
fieldNames: { text: "label", value: "value", children: "children" },
hospitalClassification: {},
hospitalLevel: {},
search: "",
ProvinceId: "",
CityId: "",
CountyId: "",
ProvinceName: "",
CityName: "",
CountyName: "",
pagination: {
page: 1,
pages: 1,
count: 1,
},
list: [],
area: [],
},
onLoad(options) {
if (options.prev) {
this.setData({
prev: decodeURIComponent(options.prev),
});
}
app.waitLogin(true).then(() => {
this.getHostipalDict();
this.getList();
this.getArea();
});
},
getHostipalDict() {
wx.ajax({
method: "GET",
url: "?r=takeda/reg/hospital-dict",
data: {},
}).then((res) => {
this.setData({
hospitalClassification: res.hospitalClassification,
hospitalLevel: res.hospitalLevel,
});
});
},
handleSearch() {
this.setData({
list: [],
});
this.getList();
},
getList(newPage = 1) {
wx.ajax({
method: "GET",
url: "?r=takeda/reg/hospitals",
data: {
page: newPage,
ProvinceId: this.data.ProvinceId,
CityId: this.data.CityId,
CountyId: this.data.CountyId,
Search: this.data.search,
},
}).then((res) => {
const list = res.page === 1 ? res.list : [...this.data.list, ...res.list];
this.setData({
list,
pagination: {
page: res.page,
pages: res.pages,
count: res.count,
},
});
});
},
onReachBottom() {
const { page, pages } = this.data.pagination;
if (pages > page) {
this.getList(page + 1);
}
},
getArea() {
wx.ajax({
method: "GET",
url: "/js/area.json",
isJSON: true,
}).then((res) => {
this.setData({
area: res,
});
});
},
handleArea() {
this.setData({
showArea: true,
});
},
onClose() {
this.setData({
showArea: false,
});
},
onFinish(e: any) {
this.setData({
ProvinceId: e.detail.selectedOptions[0].value,
ProvinceName: e.detail.selectedOptions[0].label,
CityId: e.detail.selectedOptions[1].value,
CityName: e.detail.selectedOptions[1].label,
CountyId: e.detail.selectedOptions[2].value,
CountyName: e.detail.selectedOptions[2].label,
showArea: false,
});
this.handleSearch();
},
handleSelect(e: any) {
const { index } = e.currentTarget.dataset;
const item: any = this.data.list[index];
const isParams = this.data.prev.includes("?");
wx.redirectTo({
url: `${this.data.prev}${isParams ? "&" : "?"}hid=${item.HospitalId}&hname=${item.ShortName || item.Name}`,
});
},
handlePushDoctor() {
wx.navigateTo({
url: "/module1/pages/cHostipal/index",
});
},
});
export {};

58
src/module1/pages/sHostipal/index.wxml

@ -0,0 +1,58 @@ @@ -0,0 +1,58 @@
<view class="page">
<view class="header">
<view class="region" bind:tap="handleArea">
{{CountyName || '地区'}}
<van-icon name="arrow-down" />
</view>
<view class="search">
<image class="icon" src="/images/icon-search.png"></image>
<input
model:value="{{search}}"
class="input"
placeholder-class="搜索医院名称"
type="text"
placeholder="搜索"
confirm-type="search"
bindconfirm="handleSearch"
/>
</view>
</view>
<view class="tip" wx:if="{{list.length}}">
没找到您的医院?
<text class="link" bind:tap="handlePushDoctor">这里录入</text>
</view>
<view class="list">
<view class="list-item" wx:for="{{list}}" wx:key="HospitalId" bind:tap="handleSelect" data-index="{{index}}">
<view class="title">
<view class="name">
{{item.ShortName || item.Name}}
<view class="tag">
{{hospitalClassification[item.HospitalClassification]}}{{hospitalLevel[item.HospitalLevel]}}
</view>
</view>
</view>
<view class="site">
{{item.ProvinceName === item.CityName ? '':item.ProvinceName}}
{{item.CityName}}{{item.CountyName}}{{item.Address}}
</view>
</view>
<view class="empty" wx:if="{{(search || ProvinceId ) && pagination.count===0}}">
<image class="e-img" src="/images/empty-1.png"></image>
<view class="e-tip">没有找到您搜索的医院哦!</view>
<view class="e-submit" bind:tap="handlePushDoctor">提交新医院</view>
</view>
<pagination wx:else pagination="{{pagination}}"></pagination>
</view>
</view>
<van-popup show="{{ showArea }}" round position="bottom">
<van-cascader
wx:if="{{ showArea }}"
value="{{ cascaderValue }}"
title="请选择所在地区"
options="{{ area }}"
field-names="{{fieldNames}}"
bind:close="onClose"
bind:finish="onFinish"
/>
</van-popup>

5
src/module1/pages/setDoctor/index.json

@ -3,6 +3,9 @@ @@ -3,6 +3,9 @@
"navigationStyle": "default",
"usingComponents": {
"popupDoctorDetail": "/components/popupDoctorDetail/index",
"doctorAvatar":"/components/doctorAvatar/index"
"doctorAvatar": "/components/doctorAvatar/index",
"van-cascader": "@vant/weapp/cascader/index",
"van-popup": "@vant/weapp/popup/index",
"van-dialog": "@vant/weapp/dialog/index"
}
}

46
src/module1/pages/setDoctor/index.scss

@ -45,6 +45,14 @@ page { @@ -45,6 +45,14 @@ page {
display: flex;
align-items: center;
justify-content: center;
.option-text {
max-width: 4em;
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.icon {
width: 24rpx;
height: 24rpx;
@ -75,19 +83,21 @@ page { @@ -75,19 +83,21 @@ page {
}
.wrap {
.w-header {
display: flex;
align-items: baseline;
gap: 16rpx;
.name {
margin-right: 10rpx;
display: inline;
font-size: 36rpx;
color: rgba(20, 21, 21, 1);
font-weight: bold;
}
.label {
display: inline;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.line {
margin: 0 10rpx;
display: inline-block;
width: 1px;
height: 24rpx;
background-color: rgba(205, 205, 205, 1);
@ -178,3 +188,33 @@ page { @@ -178,3 +188,33 @@ page {
}
}
}
.resolve {
background-color: transparent;
.r-badge {
position: relative;
z-index: 1;
display: block;
margin: 0 auto;
width: 152rpx;
height: 152rpx;
}
.r-container {
margin-top: -76rpx;
padding: 78rpx 32rpx 40rpx;
background-color: #fff;
border-radius: 32rpx 32rpx 0 0;
.title {
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
font-weight: bold;
text-align: center;
}
.content {
margin-top: 32rpx;
font-size: 30rpx;
color: rgba(153, 153, 153, 1);
line-height: 44rpx;
}
}
}

233
src/module1/pages/setDoctor/index.ts

@ -1,6 +1,235 @@ @@ -1,6 +1,235 @@
const _app = getApp<IAppOption>();
const app = getApp<IAppOption>();
Page({
data: {
showDetail: false,
popupDoctorDetail: {},
showResolve: false,
showArea: false,
fieldNames: { text: "label", value: "value", children: "children" },
area: [],
id: "",
DoctorTitleType: {},
hospitalClassification: {},
hospitalLevel: {},
SpecialtyList: [],
Search: "",
HospitalId: "",
HospitalName: "",
ProvinceId: "",
CityId: "",
CountyId: "",
ProvinceName: "",
CityName: "",
CountyName: "",
SpecialtyId: "",
SpecialtyName: "",
detail: {},
list: [],
DoctorId: "",
},
onLoad(options) {
this.setData({
id: options.id,
});
if (options.hid) {
this.setData({
HospitalId: options.hid,
HospitalName: options.hname,
});
}
app.waitLogin().then(() => {
this.getDetail();
this.getList();
this.getDoctorDict();
this.getHostipalDict();
this.getArea();
});
},
getDoctorDict() {
wx.ajax({
method: "GET",
url: "?r=takeda/reg/doctor-dict",
data: {},
}).then((res) => {
const SpecialtyList: any = [];
res.DoctorSpecialtyLabel.forEach((item: any) => {
SpecialtyList.push(...item.options);
});
this.setData({
DoctorTitleType: res.DoctorTitleType,
SpecialtyList,
});
});
},
getHostipalDict() {
wx.ajax({
method: "GET",
url: "?r=takeda/reg/hospital-dict",
data: {},
onLoad() {},
}).then((res) => {
this.setData({
hospitalClassification: res.hospitalClassification,
hospitalLevel: res.hospitalLevel,
});
});
},
getArea() {
wx.ajax({
method: "GET",
url: "/js/area.json",
isJSON: true,
}).then((res) => {
this.setData({
area: res,
});
});
},
getDetail() {
wx.ajax({
method: "GET",
url: "?r=takeda/doctor/audit-detail",
data: {
AuditId: this.data.id,
},
}).then((res) => {
this.setData({
detail: res,
});
});
},
handleSearch() {
this.setData({
list: [],
});
this.getList();
},
getList() {
const { Search, HospitalId, ProvinceId, CityId, CountyId, SpecialtyId } = this.data;
wx.ajax({
method: "GET",
url: "?r=takeda/doctor/second-doctor-list",
data: {
Search,
HospitalId,
ProvinceId,
CityId,
CountyId,
SpecialtyId,
},
}).then((res) => {
this.setData({
list: res.list,
});
});
},
handlePopupDetail(e) {
const { index } = e.currentTarget.dataset;
const { list, DoctorTitleType, hospitalClassification, hospitalLevel } = this.data;
const item: any = list[index];
this.setData({
showDetail: true,
popupDoctorDetail: {
DoctorLevel: item.DoctorLevel,
DoctorImg: item.DoctorImg,
DoctorName: item.DoctorName,
DoctorTitleName: item.DoctorTitleType === "99" ? item.DoctorOtherTitle : DoctorTitleType[item.DoctorTitleType],
HospitalName: item.HospitalName,
HospitalClassificationName: hospitalClassification[item.HospitalClassification],
HospitalLevelName: hospitalLevel[item.HospitalLevel],
CityName: item.CityName,
CountyName: item.CountyName,
Introduce: item.Introduce,
department: item.department,
specialty: item.specialty,
},
});
},
handlePopupClose() {
this.setData({
showDetail: false,
});
},
handleHostipal() {
const prev = encodeURIComponent(`/module1/pages/setDoctor/index?id=${this.data.id}`);
wx.redirectTo({
url: `/module1/pages/sHostipal/index?prev=${prev}}`,
});
},
handleArea() {
this.setData({
showArea: true,
});
},
onClose() {
this.setData({
showArea: false,
showResolve: false,
});
},
onFinish(e: any) {
this.setData({
ProvinceId: e.detail.selectedOptions[0].value,
ProvinceName: e.detail.selectedOptions[0].label,
CityId: e.detail.selectedOptions[1].value,
CityName: e.detail.selectedOptions[1].label,
CountyId: e.detail.selectedOptions[2].value,
CountyName: e.detail.selectedOptions[2].label,
showArea: false,
});
this.handleSearch();
},
handleSpecialChange(e: any) {
const index = e.detail.value;
const { SpecialtyList } = this.data;
const item: any = SpecialtyList[index];
this.setData({
SpecialtyId: item.value,
SpecialtyName: item.label,
});
this.handleSearch();
},
handleRadio(e) {
const { index } = e.currentTarget.dataset;
const { list } = this.data;
this.setData({
DoctorId: (list as any)[index].DoctorId,
});
},
handleResolve() {
const { DoctorId } = this.data;
if (!DoctorId) {
wx.showToast({
title: "请选择指派医生",
icon: "none",
});
return;
}
this.setData({
showResolve: true,
});
},
handleSubmit() {
const { id, DoctorId } = this.data;
wx.ajax({
method: "POST",
url: "?r=takeda/doctor/audit-pass",
data: { AuditId: id, InviteDoctorId: DoctorId },
}).then(() => {
wx.navigateBack();
});
},
handleBack() {
wx.navigateBack();
},
});
export {};

106
src/module1/pages/setDoctor/index.wxml

@ -2,73 +2,117 @@ @@ -2,73 +2,117 @@
<view class="header">
<view class="tip">
您将为
<text class="link">王欢医生</text>
<text class="link">{{detail.Name}}医生</text>
指派核心医生,帮助TA一起反馈病历
</view>
<view class="search">
<image class="icon" src="/images/icon-search.png"></image>
<input class="input" placeholder-class="place-input" placeholder="搜索医生名" type="text" />
<input
model:value="{{Search}}"
class="input"
placeholder-class="place-input"
placeholder="搜索医生名"
type="text"
confirm-type="search"
bindconfirm="handleSearch"
/>
</view>
<view class="options">
<picker class="option-wrap">
<view class="option-wrap" bind:tap="handleHostipal">
<view class="option">
<text class="option-text">医院</text>
<text class="option-text">{{HospitalName || '医院'}}</text>
<image class="icon" src="/images/triangle-down.png"></image>
</view>
</picker>
<picker class="option-wrap">
</view>
<view class="option-wrap" bind:tap="handleArea">
<view class="option">
<text class="option-text">地区</text>
<text class="option-text">{{CountyName || '地区'}}</text>
<image class="icon" src="/images/triangle-down.png"></image>
</view>
</picker>
<picker class="option-wrap">
</view>
<picker class="option-wrap" range="{{SpecialtyList}}" range-key="label" bindchange="handleSpecialChange">
<view class="option">
<text class="option-text">医生专长</text>
<text class="option-text">{{SpecialtyName || '医生专长'}}</text>
<image class="icon" src="/images/triangle-down.png"></image>
</view>
</picker>
</view>
</view>
<view class="container">
<radio-group>
<view class="list">
<view class="list-item">
<radio class="radio"></radio>
<view class="card">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{3}}"
></doctorAvatar>
<view class="list-item" wx:for="{{list}}" wx:key="DoctorId">
<radio class="radio" value="{{item.DoctorId}}" bind:tap="handleRadio" data-index="{{index}}"></radio>
<view class="card" bind:tap="handlePopupDetail" data-index="{{index}}">
<doctorAvatar class="avatar" src="{{item.DoctorImg}}" level="{{item.DoctorLevel}}"></doctorAvatar>
<view class="wrap">
<view class="w-header">
<view class="name">徐萌</view>
<view class="label">主任医师</view>
<view class="name">{{item.DoctorName}}</view>
<view class="label" wx:if="{{item.DoctorTitleType==='99'}}">{{item.DoctorOtherTitle}}</view>
<view class="label" wx:else>{{DoctorTitleType[item.DoctorTitleType]}}</view>
<block wx:for-item="depart" wx:for="{{item.department}}" wx:key="DepartmentId">
<view class="line"></view>
<view class="label">心内科</view>
<view class="label">{{depart.DepartmentName}}</view>
</block>
</view>
<view class="w-container">
<text class="hostipal">北京天坛医院</text>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
<text class="hostipal">{{item.HospitalName}}</text>
<view class="tag">
{{hospitalClassification[item.HospitalClassification]}}{{hospitalLevel[item.HospitalLevel]}}
</view>
<view class="site">{{item.CityName}}/{{item.CountyName}}</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag" wx:for="{{item.specialty}}" wx:for-item="spec" wx:key="SpecialtyId">
{{spec.SpecialtyName}}
</view>
</view>
</view>
</view>
</view>
</view>
</radio-group>
</view>
<view class="footer">
<view class="cancel">返回</view>
<view class="submit" bind:tap="handleSubmit">指派并审核通过</view>
<view class="cancel" bind:tap="handleBack">返回</view>
<view class="submit" bind:tap="handleResolve">指派并审核通过</view>
</view>
</view>
<popupDoctorDetail show="{{true}}"></popupDoctorDetail>
<popupDoctorDetail
show="{{showDetail}}"
params="{{popupDoctorDetail}}"
bind:close="handlePopupClose"
></popupDoctorDetail>
<van-popup show="{{ showArea }}" round position="bottom">
<van-cascader
wx:if="{{ showArea }}"
value="{{ cascaderValue }}"
title="请选择所在地区"
options="{{ area }}"
field-names="{{fieldNames}}"
bind:close="onClose"
bind:finish="onFinish"
/>
</van-popup>
<!-- 审核通过 -->
<van-dialog
custom-style="background:transparent"
use-slot
show="{{ showResolve }}"
showCancelButton
confirm-button-color="rgba(0, 180, 197, 1)"
bind:close="onClose"
bind:confirm="handleSubmit"
>
<view class="resolve">
<image class="r-badge" src="/images/icon-resolve.png"></image>
<view class="r-container">
<view class="title">确定审核通过?</view>
<view class="content">审核通过后,当前医生将成为您的邀约医生,他上传的病历将可以指定您一起讨论病历</view>
</view>
</view>
</van-dialog>

28
src/module1/pages/setInfo/index.scss

@ -23,7 +23,7 @@ @@ -23,7 +23,7 @@
border-bottom: 1px solid rgba(224, 224, 224, 0.5);
.label {
flex-shrink: 0;
width: 6rem;
width: 5.5rem;
font-size: 32rpx;
color: rgba(133, 133, 133, 1);
&.required {
@ -33,7 +33,7 @@ @@ -33,7 +33,7 @@
&::before {
margin-right: 10rpx;
flex-shrink: 0;
content: '*';
content: "*";
font-size: 32rpx;
color: rgba(206, 52, 31, 1);
}
@ -77,6 +77,7 @@ @@ -77,6 +77,7 @@
}
}
.select-btn {
.wrap {
display: flex;
gap: 16rpx 20rpx;
flex-wrap: wrap;
@ -92,6 +93,19 @@ @@ -92,6 +93,19 @@
}
}
}
.other {
padding: 24rpx;
margin-top: 16rpx;
border-radius: 16rpx;
background: #f6f6f6;
font-size: 28rpx;
line-height: 32rpx;
color: #000;
}
.place-other {
color: rgba(205, 205, 205, 1);
}
}
.credentials {
flex: 1;
.c-title {
@ -116,12 +130,12 @@ @@ -116,12 +130,12 @@
.upload {
padding: 16rpx;
background: #f6f6f6;
box-sizing: border-box;
border-radius: 16rpx 16rpx 16rpx 16rpx;
height: 116rpx;
.u-img {
display: block;
width: 160rpx;
height: 103rpx;
width: 180rpx;
height: 116rpx;
}
}
}
@ -135,6 +149,10 @@ @@ -135,6 +149,10 @@
.u-img {
width: 160rpx;
height: 160rpx;
display: block;
}
.u-img-round {
border-radius: 50%;
}
}
}

190
src/module1/pages/setInfo/index.ts

@ -1,34 +1,182 @@ @@ -1,34 +1,182 @@
const app = getApp<IAppOption>()
const app = getApp<IAppOption>();
Page({
data: {
titleList: [
{
name: '主任医师',
applyDoctorInfo: null,
applyHostipalInfo: null,
invite: false,
DoctorLevel: {},
DoctorTitleType: {},
AuditId: "",
Name: "",
HospitalId: "",
TitleType: "",
OtherTitle: "",
InviteDoctorId: "",
Img: "",
QualificationImg: "",
RegisterImg: "",
PositionImg: "",
},
{
name: '副主任医师',
onLoad(options) {
if (options.hid) {
this.setData({
HospitalId: options.hid,
HospitalName: options.hname,
});
}
app.waitLogin(true).then(() => {
this.getApplyDoctor();
this.getLoastApplyHostipal();
this.getDoctorDict();
});
},
{
name: '主治医师',
getApplyDoctor() {
app.getApplyDoctor().then((res) => {
if (!Array.isArray(res)) {
this.setData({
applyDoctorInfo: res,
InviteDoctorName: res.InviteDoctorName,
HospitalName: res.HospitalName,
AuditId: res.AuditId,
Name: res.Name,
HospitalId: res.HospitalId,
TitleType: `${res.TitleType}`,
OtherTitle: res.OtherTitle,
InviteDoctorId: res.InviteDoctorId,
Img: res.Img,
QualificationImg: res.QualificationImg,
RegisterImg: res.RegisterImg,
PositionImg: res.PositionImg,
});
}
});
},
{
name: '住院医师',
getLoastApplyHostipal() {
wx.ajax({
method: "GET",
url: "?r=takeda/reg/last-apply-hospital",
data: {},
}).then((res) => {
this.setData({
applyHostipalInfo: Array.isArray(res) ? null : res,
});
});
},
{
name: '其他',
getDoctorDict() {
wx.ajax({
method: "GET",
url: "?r=takeda/reg/doctor-dict",
data: {},
}).then((res) => {
this.setData({
DoctorLevel: res.DoctorLevel,
DoctorTitleType: res.DoctorTitleType,
});
});
},
],
handleFile(e) {
const { key } = e.currentTarget.dataset;
this.setData({
[key]: e.detail.imgUrl,
});
},
onLoad() {},
handleDoctor() {
wx.navigateTo({
url: '/module1/pages/sDoctor/index',
})
handleHostipal() {
wx.redirectTo({
url: `/module1/pages/sHostipal/index?prev=${encodeURIComponent("/module1/pages/setInfo/index")}`,
});
},
handleTitleType(e) {
const { value } = e.currentTarget.dataset;
this.setData({
TitleType: value,
});
},
handleSubmit() {
const {
AuditId,
Name,
HospitalId,
TitleType,
OtherTitle,
InviteDoctorId,
Img,
QualificationImg,
RegisterImg,
PositionImg,
} = this.data;
if (!Name) {
wx.showToast({
title: "请输入姓名",
icon: "none",
});
return;
}
if (!HospitalId) {
wx.showToast({
title: "请选择医院",
icon: "none",
});
return;
}
if (!TitleType) {
wx.showToast({
title: "请选择头衔",
icon: "none",
});
return;
}
if (TitleType === "99" && !OtherTitle) {
wx.showToast({
title: "请输入自定义头衔",
icon: "none",
});
return;
}
if (!RegisterImg) {
wx.showToast({
icon: "none",
title: "请上传注册证",
});
return;
}
if (!QualificationImg) {
wx.showToast({
title: "请上传从业资格证",
icon: "none",
});
return;
}
if (!PositionImg) {
wx.showToast({
title: "请上传任职证书",
});
return;
}
wx.ajax({
method: "POST",
url: "?r=takeda/reg/apply-doctor",
data: {
AuditId,
Name,
HospitalId,
TitleType,
OtherTitle,
InviteDoctorId,
Img,
QualificationImg,
RegisterImg,
PositionImg,
},
}).then((res) => {
wx.navigateTo({
url: '/module1/pages/setInfoResult/index',
})
url: `/module1/pages/setInfoResult/index?isf=${res.isFollow}&iname=${res.InviteDoctorName}`,
});
});
},
})
});
export {};

63
src/module1/pages/setInfo/index.wxml

@ -3,48 +3,80 @@ @@ -3,48 +3,80 @@
style="background: url({{imageUrl}}set-info-bg.png?r={{Timestamp}}) no-repeat top center/100% 356rpx;"
>
<view class="container">
<view class="invite">刘玉医生为您的邀约医生</view>
<view class="invite" wx:if="{{invite}}">刘玉医生为您的邀约医生</view>
<view class="card">
<view class="row">
<view class="label required">您的姓名</view>
<view class="content">
<input class="input" placeholder-class="place-input" placeholder="请输入您的真实姓名" type="text" />
<input
model:value="{{Name}}"
class="input"
placeholder-class="place-input"
placeholder="请输入您的真实姓名"
type="text"
/>
</view>
</view>
<view class="row">
<view class="label required">所在医院</view>
<view class="error-wrap">
<view class="select-wrap" bind:tap="handleDoctor">
<view class="select" data-place="请选择您所在医院"></view>
<view class="select-wrap" bind:tap="handleHostipal">
<view class="select" data-place="请选择您所在医院">{{HospitalName}}</view>
<image class="icon" src="/images/triangle-down.png"></image>
</view>
<view class="error">您提交的北京市第三人民医院医院信息待审核</view>
<view class="error" wx:if="{{applyHostipalInfo && applyHostipalInfo.AuditStatus===0}}">
您提交的{{applyHostipalInfo.ShortName || applyHostipalInfo.Name}}医院信息待审核
</view>
<view class="error" wx:if="{{applyHostipalInfo && applyHostipalInfo.AuditStatus===2}}">
您提交的{{applyHostipalInfo.ShortName || applyHostipalInfo.Name}}医院信息已驳回 去修改>
</view>
</view>
</view>
<view class="row">
<view class="label required">您的头衔</view>
<view class="select-btn">
<view class="btn {{index===0 && 'active'}}" wx:for="{{titleList}}">{{item.name}}</view>
<view class="wrap">
<view
class="btn {{index===TitleType && 'active'}}"
wx:for="{{DoctorTitleType}}"
wx:key="index"
bind:tap="handleTitleType"
data-value="{{index}}"
>
{{item}}
</view>
</view>
<input
wx:if="{{TitleType === '99'}}"
class="other"
placeholder-class="place-other"
type="text"
placeholder="请输入"
model:value="{{OtherTitle}}"
/>
</view>
</view>
</view>
<view class="card">
<view class="row">
<view class="label required">您的姓名</view>
<view class="label required">您的证件</view>
<view class="credentials">
<view class="c-title">
<view class="tip">请上传高清图片</view>
<view class="ex">查看示例</view>
</view>
<view class="files">
<uploadFile class="upload">
<image class="u-img" src="/images/credentials1.png"></image>
<uploadFile class="upload" bind:file="handleFile" data-key="RegisterImg">
<image wx:if="{{RegisterImg}}" class="u-img" src="{{RegisterImg}}"></image>
<image wx:else class="u-img" src="/images/credentials1.png"></image>
</uploadFile>
<uploadFile class="upload">
<image class="u-img" src="/images/credentials2.png"></image>
<uploadFile class="upload" bind:file="handleFile" data-key="QualificationImg">
<image wx:if="{{QualificationImg}}" class="u-img" src="{{QualificationImg}}"></image>
<image wx:else class="u-img" src="/images/credentials2.png"></image>
</uploadFile>
<uploadFile class="upload">
<image class="u-img" src="/images/credentials3.png"></image>
<uploadFile class="upload" bind:file="handleFile" data-key="PositionImg">
<image wx:if="{{PositionImg}}" class="u-img" src="{{PositionImg}}"></image>
<image wx:else class="u-img" src="/images/credentials3.png"></image>
</uploadFile>
</view>
</view>
@ -55,8 +87,9 @@ @@ -55,8 +87,9 @@
<view class="label">您的头像</view>
<view class="avatar-wrap">
<view class="avatar">
<uploadFile class="upload" chooseAvatar>
<image class="u-img" src="/images/user.png"></image>
<uploadFile class="upload" chooseAvatar bind:file="handleFile" data-key="Img">
<image wx:if="{{Img}}" class="u-img u-img-round" src="{{Img}}"></image>
<image wx:else class="u-img" src="/images/user.png"></image>
</uploadFile>
</view>
</view>

32
src/module1/pages/setInfoResult/index.ts

@ -1,6 +1,32 @@ @@ -1,6 +1,32 @@
const _app = getApp<IAppOption>();
const app = getApp<IAppOption>();
Page({
data: {},
onLoad() {},
data: {
isFollow: 0,
InviteDoctorName: "",
codeUrl: "",
},
onLoad(options) {
console.log("DEBUGPRINT[6]: index.ts:9: options=", options)
app.waitLogin(true).then(() => {
const { url, loginState } = app.globalData;
this.setData({
isFollow: Number(options.isf),
InviteDoctorName: options.iname,
codeUrl: `${url}?r=takeda/common/get-channel-wx-code&ChannelType=2&loginState=${loginState}`,
});
if (!options.iname) {
this.getApplyDoctor();
}
});
},
getApplyDoctor() {
app.getApplyDoctor().then((res) => {
this.setData({
InviteDoctorName: res.InviteDoctorName,
});
});
},
});
export {};

11
src/module1/pages/setInfoResult/index.wxml

@ -2,20 +2,17 @@ @@ -2,20 +2,17 @@
class="page"
style="background: url({{imageUrl}}invite-bg.png?r={{Timestamp}}) no-repeat top right/832rpx 1714rpx;padding-top:{{menuButtonInfo.bottom}}px;"
>
<image class="p-title" src="/images/set-info-result-title.png"></image>
<view class="container">
<image class="result" src="/images/c-doctor-result.png"></image>
<view class="title">医院信息提交成功</view>
<view class="notice">
<view wx:if="{{InviteDoctorName}}">
已将信息提交给
<text class="link">王大志医生</text>
<view></view>
<text class="link">{{InviteDoctorName}}医生</text>
</view>
审核通过后,您可进入罕心守护项目
</view>
<image
class="code"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
<image class="code" src="{{codeUrl}}" show-menu-by-longpress></image>
<view class="tip">
<view>扫码关注公众号</view>
<view>获取审核通知</view>

8
src/pages/home/index.ts

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
const _app = getApp<IAppOption>()
const app = getApp<IAppOption>();
export {};
Page({
data: {
@ -8,6 +9,7 @@ Page({ @@ -8,6 +9,7 @@ Page({
onLoad() {
this.getTabBar().setData({
active: 1,
})
});
app.waitLogin().then(() => {});
},
})
});

5
src/pages/home/index.wxml

@ -15,7 +15,10 @@ @@ -15,7 +15,10 @@
style="background: url({{imageUrl}}home-bind-doctor-bg.png?r={{Timestamp}}) no-repeat top center/100%;"
>
<view class="container">
<view class="title">您已绑定<text class="name">陈艺莉医生</text></view>
<view class="title">
您已绑定
<text class="name">陈艺莉医生</text>
</view>
<view class="content">
作为您的合作医生
<view></view>

8
src/pages/start/index.ts

@ -1,6 +1,8 @@ @@ -1,6 +1,8 @@
const app = getApp<IAppOption>()
const app = getApp<IAppOption>();
Page({
data: {},
onLoad() {},
})
onLoad() {
app.waitLogin();
},
});

2
src/pages/start/index.wxml

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
<view class="page" style="background: url({{imageUrl}}start-bg.png?r={{Timestamp}}) no-repeat top center/100% 1624rpx;">
<view class="container">
<image class="title" src="/images/start-title.png"></image>
<view class="btn">欢迎进入</view>
<view class="btn" bind:tap="handleStart">欢迎进入</view>
</view>
</view>

71
typings/index.d.ts vendored

@ -1,24 +1,69 @@ @@ -1,24 +1,69 @@
interface IAppOption {
globalData: {
userInfo?: WechatMiniprogram.UserInfo
url: string
upFileUrl: string
imageUrl: string
}
userInfoReadyCallback?: WechatMiniprogram.GetUserInfoSuccessCallback
waitLogin: () => Promise<any>
getMenuInfo: (arg0: WechatMiniprogram.Page.Instance<any, any>) => void
userInfo?: IUserInfo;
url: string;
upFileUrl: string;
imageUrl: string;
loginState: string;
isLogin: number;
doctorId: null | number;
doctorAuditId: number;
};
userInfoReadyCallback?: WechatMiniprogram.GetUserInfoSuccessCallback;
waitLogin: (waitLoginState?: boolean) => Promise<any>;
getMenuInfo: (arg0: WechatMiniprogram.Page.Instance<any, any>) => void;
getUserInfo: (arg0: WechatMiniprogram.Page.Instance<any, any>, arg1?: (arg0: any) => void) => void;
getApplyDoctor: () => Promise<any>;
}
interface IAgaxParams extends WechatMiniprogram.RequestOption {
showMsg?: boolean
loading?: boolean
isJSON?: boolean
showMsg?: boolean;
loading?: boolean;
isJSON?: boolean;
}
declare namespace WechatMiniprogram {
export interface Wx {
ajax: (arg0: IAgaxParams) => Promise<any>
ajax: (arg0: IAgaxParams) => Promise<any>;
}
}
interface IUserInfo {
UserId: string;
IsDoctor: number;
DoctorId: number;
Name: string;
Img: string;
Telephone: string;
HospitalId: string;
TitleType: number;
OtherTitle: string;
DoctorLevel: number;
Introduce: string;
Department: IDepartment[];
DepartmentId: string[];
Specialty: ISpecialty[];
SpecialtyId: string[];
HospitalName: string;
HospitalClassification: string;
HospitalLevel: string;
ProvinceName: string;
CityName: string;
CountyName: string;
Address: string;
HospitalClassificationName: string;
HospitalLevelName: string;
}
interface IDepartment {
DepartmentId: string;
DepartmentName: string;
DoctorId: string;
}
interface ISpecialty {
SpecialtyId: string;
SpecialtyName: string;
DepartmentId: string;
DoctorId: string;
}

Loading…
Cancel
Save