This commit is contained in:
haomingming
2023-03-14 14:09:21 +08:00
parent 14bcbf1673
commit 959bfc61b1
79 changed files with 1601 additions and 438 deletions
+128 -16
View File
@@ -1,6 +1,7 @@
// commpents/myprofile/index.js
import Toast from '@vant/weapp/toast/toast';
import { API } from './../../utils/network/api'
import { FileUtil } from './../../utils/fileutil'
const api = new API()
const app = getApp()
@@ -88,6 +89,13 @@ Component({
iden_auth_status: 0,
iden_auth_disabled: 0,
iden_auth_status_txt: "未认证",
avatar_reason: "",
department_custom_mobile_reason: "",
brief_introduction_reason: "",
be_good_at_reason: "",
license_cert_reason: "",
qualification_cert_reason: "",
work_cert_reason: "",
},
options: {
@@ -97,6 +105,11 @@ Component({
lifetimes: {
attached(){
let _this = this;
console.log(_this.data.zhicheng_columns);
_this.setData({
"zhicheng_columns[0].text": "AAA"
})
console.log(_this.data.zhicheng_columns);
//获得医师身份认证
api.getDoctorAuthIden().then(response => {
console.log("getDoctorAuthIden: ",response);
@@ -115,6 +128,13 @@ Component({
select_yiyuan_id: response.data.hospital.hospital_id,
hospital: response.data.hospital,
iden_auth_status: response.data.iden_auth_status,
avatar_reason: response.data.avatar_reason,
department_custom_mobile_reason: response.data.department_custom_mobile_reason,
brief_introduction_reason: response.data.brief_introduction_reason,
be_good_at_reason: response.data.be_good_at_reason,
license_cert_reason: response.data.license_cert_reason,
qualification_cert_reason: response.data.qualification_cert_reason,
work_cert_reason: response.data.work_cert_reason,
});
let iden_auth_status = response.data.iden_auth_status;
console.log("iden_auth_status: ",iden_auth_status)
@@ -200,18 +220,24 @@ Component({
let zhicheng_huixian = false;
let area_huixian = false;
//执行回显
let huixian_try_count = 0;
let data_replay = setInterval(() => {
console.log("执行回显。。。")
try {
console.log("执行回显。。。", huixian_try_count);
//回显科室
if(_this.data.doctorauthiden_data_ready && _this.data.basicdepartment_data_ready){
let index = _this.data.keshi_columns.findIndex(item => {
console.log("value: ",item.value);
console.log("select_keshi_id: ", _this.data.select_keshi_id);
return item.value == _this.data.select_keshi_id
})
_this.setData({
select_keshi_index: index,
keshi_note: _this.data.keshi_columns[index].text
})
if(index){
_this.setData({
select_keshi_index: index,
keshi_note: _this.data.keshi_columns[index].text
})
}
keshi_huixian = true;
}
//回显职称
@@ -283,16 +309,19 @@ Component({
area_huixian = true;
}
} catch (error) {
console.error(error)
}
huixian_try_count = huixian_try_count + 1;
//都回显成功后,清除计时器
console.log("keshi_huixian: ", keshi_huixian)
console.log("zhicheng_huixian: ", zhicheng_huixian)
console.log("area_huixian: ", area_huixian)
if(keshi_huixian && zhicheng_huixian && area_huixian){
if((keshi_huixian && zhicheng_huixian && area_huixian) || huixian_try_count > 100){
clearInterval(data_replay);
}
console.log("计时器")
}, 1000);
console.log("计时器");
}, 100);
},
},
@@ -558,12 +587,21 @@ Component({
},
select_zhuanchang(e){
console.log(e);
let expertise_name = e.currentTarget.dataset.expertise_name;
let expertise_id = e.currentTarget.dataset.expertise_id;
let is_selected = e.currentTarget.dataset.is_selected;
let index = e.currentTarget.dataset.index;
let data = "zhuanchang_columns["+index+"].is_selected";
this.setData({[data]: is_selected==1?0:1})
let count = 0
this.data.zhuanchang_columns.forEach(item => {
count = count + 1;
})
if(count < 10){
let is_selected = e.currentTarget.dataset.is_selected;
let index = e.currentTarget.dataset.index;
let data = "zhuanchang_columns["+index+"].is_selected";
this.setData({[data]: is_selected==1?0:1})
}else{
wx.showToast({
title: '最多10个专长',
icon: "error"
})
}
},
zhuanchangConfirm(e){
this.setData({ zhuanchang_show: false });
@@ -617,6 +655,80 @@ Component({
})
}).catch(errors => {console.error(errors);})
}
},
doUploadFile(event) {
console.log("index douploadFIle: ", event);
const scene = event.currentTarget.dataset.scene;
const field_name = event.currentTarget.dataset.field_name;
const file_multiple = event.currentTarget.dataset.file_multiple;//是否为多张图
console.log("scene: ", scene);
console.log("field_name: ", field_name);
console.log("file_multiple: ", file_multiple);
let _this = this;
api.getOssSign({user_type:2,scene:scene}).then(response => {
console.log(response);
const { file } = event.detail;
console.log("file: ", file);
const filename = FileUtil.getFileName(file);
const host = response.data.host;
const signature = response.data.signature;
const ossAccessKeyId = response.data.accessid;
const policy = response.data.policy;
const key = response.data.dir+filename;
const filePath = file.url; // 待上传文件的文件路径。
wx.uploadFile({
url: host, // 开发者服务器的URL。
filePath: filePath,
name: 'file', // 必须填file。
formData: {
key,
policy,
OSSAccessKeyId: ossAccessKeyId,
signature,
},
success: (res) => {
console.log("upload: ", res);
if (res.statusCode === 204) {
if(scene == 1){
this.setData({
is_avatar: true
})
}
wx.showToast({title: '上传成功'})
if(file_multiple == "true"){//多张图
let img = {}
img.url = host+"/"+key;
img.isImg = true;
let img_list = _this.data[field_name];
console.log("img_list: ", img_list);
img_list.push(img);
console.log("img_list: ", img_list);
this.setData({
[field_name]: img_list
});
}else{
this.setData({[field_name]: host+"/"+key});
}
}
},
fail: err => {
console.log(err);
}
});
}).catch(errors => {
console.error(errors);
})
},
doDeleteFile(event){
console.log(event);
let url = event.detail.file.url;
let file_name = event.currentTarget.dataset.field_name;
let img_list = this.data[file_name].filter(item => item.url != url);
this.setData({
[file_name]: img_list
})
},
}
})
+22 -2
View File
@@ -1,4 +1,4 @@
<view class="photo">
<view class="photo" style="border-bottom: {{avatar_reason==''?'1px solid var(--td-cell-border-color, var(--td-gray-color-3, #e7e7e7));':'unset'}}">
<view class="title">头像 <text class="required"> *</text></view>
<van-uploader bind:after-read="doUploadFile" data-scene="1" data-field_name="avatar" data-file_multiple="false">
<view class="right">
@@ -11,6 +11,13 @@
</van-uploader>
</view>
<view class="has_error" wx:if="{{ avatar_reason != '' }}" >
<view class="error_box">
<t-icon color="red" name="close-circle-filled" size="48rpx" data-name="close-circle-filled" />
<text class="error_msg">{{ avatar_reason }}</text>
</view>
</view>
<!-- <t-cell title="头像" hover required arrow note="真人正脸" /> -->
<t-cell title="城市" hover required arrow note="{{ city_note }}" bindtap="onCityShow"/>
@@ -127,7 +134,7 @@
</view>
<view class="zhuanchang_box">
<view class="zhuanchang_box_item {{ data.is_selected==1?'zhuanchang_box_item_checked':'' }}" wx:key="expertise_name" bindtap="select_zhuanchang"
<view class="zhuanchang_box_item {{ data.is_selected==1?'zhuanchang_box_item_checked':'' }}" wx:key="expertise_name" bindtap="select_zhuanchang"
data-expertise_name="{{data.expertise_name}}"
data-expertise_id="{{data.expertise_id}}"
data-is_selected="{{data.is_selected}}"
@@ -160,9 +167,17 @@
input-align="right"
required
clearable
border="{{ department_custom_mobile_reason == '' }}"
custom-style="font-size:30rpx;"
/>
<view class="has_error" wx:if="{{ department_custom_mobile_reason != '' }}" >
<view class="error_box">
<t-icon color="red" name="close-circle-filled" size="48rpx" data-name="close-circle-filled" />
<text class="error_msg">{{ department_custom_mobile_reason }}</text>
</view>
</view>
<view class="zhuanchang" bindtap="onZhuanChangShow">
<view class="title">专长 <text class="required"> *</text></view>
<view class="content">
@@ -185,6 +200,7 @@
bind:showNote="onshowJianJieNote"
textarea_cell_content_placeholder="您的从业经历,职称,所获荣誉等信息(10~1000字)"
textarea_val="{{textarea_jianjie}}"
has_error_content="{{ be_good_at_reason }}"
data-textarea_name="textarea_jianjie" bindTextAreaBlur="getTextAreaVal" />
<m-textarea-cell
@@ -192,6 +208,7 @@
t_icon_name="view-module"
bind:showNote="onshowShanChangNote"
textarea_val="{{textarea_shanchang}}"
has_error_content="{{ brief_introduction_reason }}"
textarea_cell_content_placeholder="您的专业领域、擅长疾病、研究方法等信息(10~1000字)"
textarea_cell_note="查看示例" data-textarea_name="textarea_shanchang" bindTextAreaBlur="getTextAreaVal" />
@@ -208,6 +225,7 @@
bindDeleteFile="doDeleteFile"
upload_cell_desc="请提供清晰的职业证书原件照片,需包含证书编码、加盖钢印的证书照片、姓名、执业范围、最新执业医院,最少上传2张。"
upload_cell_note="查看示例"
has_error_content="{{ license_cert_reason }}"
wx:if="{{indentity}}"
/>
@@ -224,6 +242,7 @@
bind:showNote="onshowZiGeNote"
upload_cell_desc="请提供清晰的资格证书原件照片,需包含证书编码、加盖钢印的证书照片、姓名、职称等,最少上传1张。"
upload_cell_note="查看示例"
has_error_content="{{ qualification_cert_reason }}"
wx:if="{{indentity}}"
/>
@@ -240,6 +259,7 @@
bindDeleteFile="doDeleteFile"
upload_cell_desc="请提供清晰的职称证书原件照片,需包含证书编码、加盖钢印的证书照片、姓名等,最少上传1张。"
upload_cell_note="查看示例"
has_error_content="{{ work_cert_reason }}"
wx:if="{{indentity}}"
/>
+38 -13
View File
@@ -3,25 +3,15 @@
}
.photo{
position: relative;
padding: 32rpx;
padding: 32rpx 32rpx 32rpx 0;
margin-left: 32rpx;
display: flex;
justify-content: space-between;
font-size: 32rpx;
font-weight: 400;
align-items: center;
}
.photo::after {
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 0;
left: 32rpx;
bottom: 0;
border-bottom: 1px solid var(--td-cell-border-color, var(--td-gray-color-3, #e7e7e7));
transform: scaleY(0.5);
left: 32rpx;
}
.title{
font-size: 30rpx;
color: #1C2023;
@@ -187,4 +177,39 @@
.zhuanchang_btn--confirm {
color: #3cc7c0;
}
.error_box{
position: relative;
display: flex;
background-color: #FEF1F1;
width: calc(95vw - 64rpx);
height: 100rpx;
margin: 30rpx auto 0 auto;
align-items: center;
padding-left: 32rpx;
border-radius: 10rpx;
}
.error_box::after{
border-radius: 5rpx;
position: absolute;
width: 0px;
height: 0px;
border-width: 16rpx;
border-style: solid;
border-color: transparent transparent #FEF1F1 transparent;
content: ' ';
left: 50rpx;
top: -30rpx;
}
.error_msg{
position: relative;
margin-left: 10rpx;
color: #FF0000;
letter-spacing: 3rpx;
font-weight: 600;
}
.has_error{
margin-left: 32rpx;
padding-bottom: 20rpx;
border-bottom: 1rpx solid #e7e7e7;
}