|
|
- <template>
- <view class="user-info flex-1">
- <view class="row">
- <text>头像</text>
- <view class="pic_box">
- <view class="pic_box">
- <button open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar">
- <u-avatar size="80" :src="form.headUrl || ''" @click="selectFile"></u-avatar>
- </button>
- </view>
- </view>
- </view>
- <view class="row" @click="toPage">
- <text>昵称</text>
- <u-input v-model="form.nickName" disabled input-align="right" placeholder="请设置姓名" @click="toPage" />
- </view>
- <view class="row flex align-center">
- <text>手机号码</text>
- <u-input v-model="form.phone" disabled input-align="right" placeholder="请设置手机号码" />
- <!-- <text>{{ form.phone }}</text> -->
- </view>
- <view class="row flex align-center">
- <text>性别</text>
- <view class="flex align-center" @click="showPopup('sexShow')">
- <u-input v-model="form.sex" disabled placeholder="请设置性别" input-align="right"
- @click="showPopup('sexShow')" />
- <u-icon name="arrow-right" class="m-l-10"></u-icon>
- </view>
- </view>
- <view class="row flex align-center">
- <text>生日</text>
- <view class="flex-1 flex align-center justify-end" @click="showPopup('birthdayShow')">
- <u-input v-model="form.birthday" disabled placeholder="您还未设置生日" input-align="right"
- @click="showPopup('birthdayShow')" />
- <u-icon name="arrow-right" class="m-l-10"></u-icon>
- </view>
- </view>
- <u-select v-model="sexShow" :list="sexList" @confirm="sexConfirm" />
- <u-picker mode="time" v-model="birthdayShow" @confirm="birthdayConfirm" confirm-color="#01AEEA" />
- </view>
- </template>
-
- <script>
- const defaultAvatarUrl =
- 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
- import {
- mapState
- } from "vuex";
- import config_img from "@/utils/js/config.js";
- import {
- UPLOAD_IMG
- } from '@/config/settings.js'
- import {
- TOKEN_HEADER_NAME
- } from '@/config/settings.js'
- export default {
- data() {
- return {
- uploadUrl: UPLOAD_IMG,
- status: 'watch',
- img_url: config_img.img_url,
- form: {
- nickName: '',
- sex: '',
- phone: '',
- headUrl: '',
- birthday: ''
- },
- sexShow: false,
- birthdayShow: false,
- sexList: [{
- value: "1",
- label: "男",
- },
- {
- value: "2",
- label: "女",
- },
- ],
- };
- },
- onLoad() {
- console.log(this.userInfo)
- const getUserInfo = this.$storage.getStorage("__user_info")
- this.form = getUserInfo
- this.form.birthday = this.form.birthday.substr(0, 10)
- uni.$on('EDITNAME', val => {
- this.form.nickName = val
- this.editUserInfo({
- nickName: val
- })
- })
- },
- computed: {
- // ...mapState({
- // userInfo: (state) => state.userInfo,
- // }),
- // disabled () {
- // return this.status === 'edit' ? false : true
- // },
- // btnTxt () {
- // return this.status === 'edit' ? '保存' : '修改'
- // }
- },
- onUnload() {
- this.$off('EDITNAME')
- },
-
- methods: {
- onChooseAvatar(e) {
- console.log("===================")
- console.log(e)
- },
- preserve() {
- if (this.status === 'watch') return this.status = 'edit'
- console.log(this.$refs.uUpload.lists, this.fileList)
- },
- onSuccess(data) {
- this.setUserInfo({
- headUrl: data.result
- });
- },
- sexConfirm(arr) {
- this.form.sex = arr[0].label
- this.editUserInfo({
- sex: this.form.sex
- })
- },
- birthdayConfirm(time) {
- let {
- year,
- month,
- day
- } = time;
- this.form.birthday = `${year}-${month}-${day}`;
- this.editUserInfo({
- birthday: this.form.birthday
- })
- },
- showPopup(key) {
- if (!this.disabled) this[key] = true
- },
- toPage() {
- this.$tools.navigateTo({
- url: `/pages/my/information/editName?name=${this.form.nickName}`
- })
- },
- editUserInfo(params = {}, status = 0) {
- uni.showLoading();
- this.$api('editUserInfo', params)
- .then(res => {
- uni.hideLoading();
- let {
- code,
- message,
- result
- } = res
- this.$Toast(message)
- if (code === 200) {
- if (status == 1) {
- // 上传图片
- console.log(params.headUrl, 12313)
- this.form.headUrl = params.headUrl
- }
- // 更新用户信息
- this.getUserInfo();
- }
- }).catch(err => {
- uni.hideLoading();
- this.$Toast(err.message)
- })
- },
- selectFile(e) {
- console.log(e)
- // disabled
- uni.showActionSheet({
- itemList: ['拍照', '选择一张照片'],
- success: res => {
- this.chooseImage(res.tapIndex)
- },
- fail: err => {
- // this.$Toast(err.errMsg);
- }
- })
- },
- // 更新用户信息
- getUserInfo() {
- return new Promise((resolve, reject) => {
- this.$api('getUserInfo').then(res => {
- let {
- code,
- result,
- message
- } = res;
- if (code == 200) {
- this.$storage.removeStorage('__user_info')
- let userInfo = {
- ...result.account,
- ...result.userInfo
- }
- // 更新用户信息缓存
- // this.userInfo = userInfo
- this.$storage.setStorage("__user_info", userInfo)
- // this.getAddressInfo();
- resolve(result)
- } else {
- reject(message)
- }
- }).catch(err => {
- reject(err.message)
- })
- })
- },
- chooseImage() {
- uni.chooseImage({
- count: 1,
- sourceType: ['album', 'camera'],
- sizeType: ['original', 'compressed'],
- success: res => {
- res.tempFiles.map((val, index) => {
- // this.fileList.push({
- // url: val.path,
- // progress: 0,
- // error: false,
- // file: val,
- // });
-
- uni.uploadFile({
- url: this.uploadUrl,
- filePath: val.path,
- name: 'file',
- header: {
- [TOKEN_HEADER_NAME]: this.$store.state.userToken
- },
- success: res => {
- console.log(res)
- const img = JSON.parse(res.data)
- this.editUserInfo({
- headUrl: img.result
- }, 1)
- },
- fail: err => {
- console.log(err)
- }
- })
- });
- },
- fail: error => {
- this.$Toast(error);
- }
- })
- }
- },
- };
- </script>
-
- <style lang="scss" scoped>
- .user-info {
- padding-bottom: 140rpx;
-
- &-footer {
- z-index: 1;
- height: 120rpx;
- bottom: 0;
- left: 0;
- width: 100%;
- background: #fff;
-
- /deep/.u-btn {
- width: 660rpx;
- height: 80rpx;
- }
- }
- }
-
- .pic_box {
- display: flex;
- flex-direction: column;
- align-items: center;
-
- /deep/.u-list-item {
- margin: 0;
- width: 89rpx !important;
- height: 89rpx !important;
- border-radius: 50%;
-
- .u-preview-image {
- width: 89rpx;
- height: 89rpx;
- border-radius: 50%;
- }
-
- image {
- width: 89rpx;
- height: 89rpx;
- border-radius: 50%;
- overflow: hidden;
- // border: 1px solid #707070;
- }
- }
-
- image {
- width: 89rpx;
- height: 89rpx;
- border-radius: 50%;
- // border: 1px solid #707070;
- }
- }
-
- /deep/ .u-calendar__action {
- display: flex;
- justify-content: center;
- align-items: center;
- }
-
- .row {
- width: 691rpx;
- height: 110rpx;
- margin: 0 auto;
- font-size: 32rpx;
- color: #000000;
- padding-left: 10rpx;
- padding-right: 37rpx;
- box-sizing: border-box;
- display: flex;
- justify-content: space-between;
- align-items: center;
- border-bottom: 1px solid #ccc;
-
- .data_time {
- padding-right: 30rpx;
- }
- }
-
- .content {
- width: 520rpx;
- height: 300rpx;
- background-color: #fff;
- border-radius: 20rpx;
- overflow: hidden;
-
- .contentRow {
- display: flex;
- flex-direction: column;
-
- text {
- margin-left: 18rpx;
- margin-top: 20rpx;
- font-size: 45rpx;
- font-weight: bold;
- }
-
- /deep/ u-input {
- flex: 1;
- margin: 10rpx 30rpx 10rpx;
- }
- }
-
- .btn_box {
- display: flex;
-
- .close {
- width: 180rpx;
- color: #707070;
- }
-
- .change {
- background-color: #01aeea;
- color: #fff;
- width: 180rpx;
- display: flex;
- justify-content: center;
- align-items: center;
- font-size: 32rpx;
- font-weight: bold;
- }
- }
- }
- </style>
|