123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357 |
- <template>
- <view >
- <image mode="widthFix" src="/static/wd_bg_login.jpg" class="login_full_img"></image>
-
-
- <view class="loginBox">
- <view style="display: flex;height: 160rpx;justify-content: center;" >
- <view style="text-align: center;">
- <image @click="editAvatar" :src="form.avatar?$method.splitImgHost(form.avatar, true):''" class="avatar"></image>
- <view class="nick">{{form.realname}}</view>
- <view>
- <view class="item">
- <view>我的昵称</view>
- <view @click="editNickName">{{form.nickname}}<u-icon name="arrow-right" color="#999999" size="28"></u-icon></view>
- </view>
- <view class="item">
- <view>性别</view>
- <view class="rBox">
- <picker @change="bindPickerChangeSex" :value="form.sex" :range="array_sex">
- <view class="picker">{{ array_sex[form.sex] }}</view>
- </picker>
- <u-icon name="arrow-right" color="#999999" size="28"></u-icon></view>
- </view>
- <view class="item">
- <view>年龄</view>
- <view class="rBox">
- <picker mode="date" :value="form.userBirth" @change="bindDateChange">
- <view class="picker">{{ $method.getYears(form.userBirth) }} 岁</view>
- </picker>
- <u-icon name="arrow-right" color="#999999" size="28"></u-icon></view>
- </view>
- <view class="item">
- <view>关联学员身份</view>
- <view style="display: flex;" @click="editIdCard">
- <view style="text-align: right;">
- <view>{{ form.realname }}</view>
- <view>{{ form.idCard }}</view>
- </view>
- <u-icon name="arrow-right" color="#999999" size="28"></u-icon></view>
- </view>
- <view class="item">
- <view>所在城市</view>
- <view class="rBox">
- <pick-regions :defaultRegion="defaultRegionCode" @getRegion="handleGetRegion2">
- <view class="picker">{{ form.province || '-' }} {{ form.city || '-' }} {{ form.district || '-' }}</view>
- </pick-regions>
- <u-icon name="arrow-right" color="#999999" size="28"></u-icon></view>
- </view>
- <view class="item">
- <view>手机号码</view>
- <view>{{ form.telphone }}<u-icon name="arrow-right" color="#999999" size="28"></u-icon></view>
- </view>
- <!-- <view class="item">
- <view>微信绑定</view>
- <view>{{ form.gzh_open_id }}<u-icon name="arrow-right" color="#999999" size="28"></u-icon></view>
- </view> -->
- </view>
- </view>
- </view>
-
- </view>
- <u-modal v-model="n_show" @confirm="confirmNick" :show-cancel-button="true" title="修改昵称">
- <view class="slot-content">
- <u-input v-model="nickname" placeholder="请输入昵称" />
- </view>
- </u-modal>
- <u-modal v-model="id_show" @confirm="confirmId" :show-cancel-button="true" title="修改关联信息">
- <view class="slot-content">
- <u-input v-model="realname" placeholder="请输入真实姓名" />
- <u-input v-model="idCard" placeholder="请输入身份证" />
- </view>
- </u-modal>
- <u-navbar title="我的资料" :border-bottom="false" background="{ background: '#ffffff',opacity:0.4; }" title-color="#ffffff" back-icon-color="#ffffff">
-
- </u-navbar>
- </view>
- </template>
- <script>
- import {mapGetters} from 'vuex';
- export default {
- data() {
- return {
- form:{avatar:''},
- array_sex: ['男', '女'],
- n_show:false,
- defaultRegionCode: '440112',
- id_show:false,
- nickname:'',
- realname:'',
- idCard:'',
- avatarUrl:'',
- avatarOssKey:''
-
- };
- },
- onShow(){
- this.form = this.userInfo
- console.log(this.form)
- },
- onLoad(option) {
-
- },
- methods: {
- bindPickerChangeSex(e) {
- let data = {sex:e.detail.value}
- this.submitForm(data)
- },
- uploadFile(options, int) {
- var self = this;
- return new Promise((resolve, reject) => {
- var data = {
- imageStatus: int
- };
- self.$api.aliyunpolicy(data).then(res => {
- console.log(res.data,6)
- if(res.data.code!=200){
- self.$method.showToast('签名错误'+JSON.stringify(res.data))
- return
- }
- var ossToken = res.data.data.resultContent;
- if(ossToken.host==null||ossToken.host==undefined){
- self.$method.showToast('上传路径报错'+JSON.stringify(res.data))
- return
- }
- uni.uploadFile({
- url: ossToken.host,
- name: 'file',
- filePath: options,
- fileType: 'image',
- header: {
- AuthorizationToken: 'WX ' + uni.getStorageSync('token')
- },
- formData: {
- key: ossToken.dir,
- OSSAccessKeyId: ossToken.accessid,
- policy: ossToken.policy,
- Signature: ossToken.signature,
- callback: ossToken.callback,
- success_action_status: 200
- },
- success: result => {
- if (result.statusCode === 200) {
- self.avatarOssKey = ossToken.dir;
- resolve();
- } else {
- uni.showToast({
- title: '上传失败',
- icon: 'none'
- });
- return;
- }
- },
- fail: error => {
- uni.showToast({
- title: '上传接口报错'+error,
- icon: 'none'
- });
- return;
- }
- });
- });
- });
- },
- imageInfos(){
- var self = this
- return new Promise((resolve, reject) => {
- uni.getImageInfo({
- src: self.avatarUrl,
- success: async res => {
- let canvasWidth = res.width; //图片原始长宽
- let canvasHeight = res.height;
- if (canvasWidth > 1000 || canvasHeight > 1000) {
- uni.compressImage({
- src: self.avatarUrl,
- quality: 75,
- width: '50%',
- height: '50%',
- success: async rest => {
- const waitUpload = await self.uploadFile(rest.tempFilePath, 0);
- resolve()
- }
- });
- } else {
- console.log('无需压缩');
- const waitUpload = await self.uploadFile(self.avatarUrl, 0);
- resolve()
- }
- }
- });
- });
- },
- async submitAvatar(){
- const waitYS = await this.imageInfos();
- let data = {avatar:this.avatarOssKey}
- this.submitForm(data)
- },
- editAvatar(){
- let that = this
- uni.chooseImage({
- count: 1, //默认9
- sizeType: [ 'compressed'], //可以指定是原图还是压缩图,默认二者都有
- success: function (res) {
- that.avatarUrl = res.tempFilePaths[0]
- that.submitAvatar()
- }
- });
- },
- //城市
- handleGetRegion2(region) {
- let data = {province:region[0].name,city:region[1].name,district:region[2].name}
- this.submitForm(data)
- },
- bindDateChange(e) {
- let data = {userBirth:e.detail.value}
- this.submitForm(data)
- },
- editIdCard(){
- this.id_show = true
- this.realname = this.form.realname
- this.idCard = this.form.idCard
- },
- confirmId(){
- if(this.realname==''){
- uni.showModal({
- title: "提示",
- content: '真实姓名不能为空',
- showCancel: false
- })
- return
- }
- if(this.idCard==''){
- uni.showModal({
- title: "提示",
- content: '身份证ID不能为空',
- showCancel: false
- })
- return
- }
- let data = {realname:this.realname,idCard:this.idCard}
- this.submitForm(data)
- },
- confirmNick(){
- if(this.nickname==''){
- uni.showModal({
- title: "提示",
- content: '昵称不能为空',
- showCancel: false
- })
- return
- }
- let data = {nickname:this.nickname}
- this.submitForm(data)
- },
- editNickName(){
- this.n_show = true
- this.nickname = this.form.nickname
- },
- submitForm(data){
- let self = this
- this.$api.appuserInfo(data).then(res => {
- if (res.data.code === 200) {
- setTimeout(()=>{
- uni.showToast({
- title: '提交成功',
- icon: 'none'
- });
- },500);
- self.$api.refreshUserInfo()
- }else{
- uni.showToast({
- title: res.data.msg,
- icon: 'none'
- });
- }
- });
- }
- },
- computed: {...mapGetters(['userInfo'])},
- watch:{
- userInfo(val, oldVal){//普通的watch监听
- if(val){
- this.form = this.userInfo
- }
- },
- }
-
- };
- </script>
- <style >
- page{
- background-color: #F0F1F5;
- }
-
- </style>
- <style scope>
- .slot-content{
- margin: 30rpx;
- color: #606266;
- }
- .rBox{
- display: flex;
- }
- .item{
- width: 686rpx;
- height: 80rpx;
- background: #FFFFFF;
- border-radius: 24rpx;
- display: flex;
- color: #666666;
- align-items: center;
- justify-content: space-between;
- padding: 0 20rpx;
- margin-top: 30rpx;
- font-size: 24rpx;
- }
- .nick{
- font-size: 36rpx;
- font-weight: bold;
- color: #007AFF;
- margin-top: 20rpx;
- }
- .loginBox{
- position: relative;
- top: -80rpx;
- }
- .avatar{
- width: 160rpx;
- height: 160rpx;
- border-radius: 50%;
- }
- .login_full_img {
- display: block;
- width: 100%;
- height: 140px !important;
- z-index: -999;
- top: 0;
- }
- .full_img {
- display: block;
- width: 100%;
- z-index: -999;
- top: 0;
- }
- .loginBtn{
- width: 526rpx;
- height: 80rpx;
- background: linear-gradient(90deg, #015EEA, #00C0FA);
- box-shadow: 0rpx 10rpx 16rpx 4rpx rgba(1, 99, 235, 0.04);
- border-radius: 40rpx;
- color: #FFFFFF;
- line-height: 80rpx;
- margin: 0 auto;
- margin-top: 50rpx;
- }
- </style>
|