|
@@ -14,7 +14,7 @@
|
|
|
</view>
|
|
</view>
|
|
|
<span class="nickname">{{ userInfo.nickname }}</span>
|
|
<span class="nickname">{{ userInfo.nickname }}</span>
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="avatar-func" v-if="loginStatus">修改</view>
|
|
|
|
|
|
|
+ <view class="avatar-func" v-if="loginStatus" @click="modifyNickname">修改</view>
|
|
|
<view class="avatar-func" v-else @click="login()">登录</view>
|
|
<view class="avatar-func" v-else @click="login()">登录</view>
|
|
|
</view>
|
|
</view>
|
|
|
</template>
|
|
</template>
|
|
@@ -49,6 +49,24 @@
|
|
|
</uni-list>
|
|
</uni-list>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
|
|
+ <!-- 修改昵称弹出框 -->
|
|
|
|
|
+ <uni-popup ref="nicknameInputDialog" type="dialog" :is-mask-click="false">
|
|
|
|
|
+ <uni-popup-dialog mode="input" :before-close="true" title="修改昵称" confirmText="保存" @confirm="nicknameFormConfirm"
|
|
|
|
|
+ @close="nicknameFormClose">
|
|
|
|
|
+ <view class=".nickname-dialog">
|
|
|
|
|
+ <input class=".nickname" v-model="nicknameFormData.nickname" placeholder="请输入昵称" />
|
|
|
|
|
+ </view>
|
|
|
|
|
+
|
|
|
|
|
+ <view style="display: none">
|
|
|
|
|
+ <uni-forms ref="nicknameForm" :modelValue="nicknameFormData" :rules="nicknameFormRules" label-position="top"
|
|
|
|
|
+ :label-width="150" err-show-type="modal">
|
|
|
|
|
+ <uni-forms-item name="nickname">
|
|
|
|
|
+ <uni-easyinput type="text" placeholder="请输入昵称" v-model="nicknameFormData.nickname"></uni-easyinput>
|
|
|
|
|
+ </uni-forms-item>
|
|
|
|
|
+ </uni-forms>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </uni-popup-dialog>
|
|
|
|
|
+ </uni-popup>
|
|
|
</view>
|
|
</view>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
@@ -60,6 +78,16 @@ import router from "@/common/router.js";
|
|
|
import { userApi } from "@/apis/apis.js";
|
|
import { userApi } from "@/apis/apis.js";
|
|
|
import Avatar from 'vue-avatar/src/Avatar.vue';
|
|
import Avatar from 'vue-avatar/src/Avatar.vue';
|
|
|
|
|
|
|
|
|
|
+// 组件
|
|
|
|
|
+/**
|
|
|
|
|
+ * 昵称弹出框
|
|
|
|
|
+ */
|
|
|
|
|
+const nicknameInputDialog = ref(null);
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 昵称表单
|
|
|
|
|
+ */
|
|
|
|
|
+const nicknameForm = ref(null);
|
|
|
|
|
|
|
|
// 属性
|
|
// 属性
|
|
|
/**
|
|
/**
|
|
@@ -74,6 +102,31 @@ const userInfo = ref({
|
|
|
nickname: ''
|
|
nickname: ''
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+/**
|
|
|
|
|
+ * 昵称表单数据
|
|
|
|
|
+ */
|
|
|
|
|
+const nicknameFormData = ref({
|
|
|
|
|
+ nickname: null,
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 昵称表单验证规则
|
|
|
|
|
+ */
|
|
|
|
|
+const nicknameFormRules = ref({
|
|
|
|
|
+ nickname: {
|
|
|
|
|
+ rules: [
|
|
|
|
|
+ {
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ errorMessage: "昵称不能为空",
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ maxLength: 30,
|
|
|
|
|
+ errorMessage: "昵称不能超过{maxLength}个字符",
|
|
|
|
|
+ },
|
|
|
|
|
+ ],
|
|
|
|
|
+ },
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
// 方法
|
|
// 方法
|
|
|
/**
|
|
/**
|
|
|
* 登录
|
|
* 登录
|
|
@@ -96,7 +149,10 @@ const logout = () => {
|
|
|
if (res.cancel) {
|
|
if (res.cancel) {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
+ // 移除用户信息
|
|
|
uni.removeStorageSync(cacheKey.TOKEN);
|
|
uni.removeStorageSync(cacheKey.TOKEN);
|
|
|
|
|
+ uni.removeStorageSync(cacheKey.NICKNAME);
|
|
|
|
|
+ // 跳转到主页
|
|
|
uni.reLaunch({
|
|
uni.reLaunch({
|
|
|
url: router.SUBSCRIPTION_SOURCE_MARKET_PAGE,
|
|
url: router.SUBSCRIPTION_SOURCE_MARKET_PAGE,
|
|
|
});
|
|
});
|
|
@@ -111,6 +167,35 @@ const fetchUserInfo = async () => {
|
|
|
userInfo.value = await userApi.queryUserInfo();
|
|
userInfo.value = await userApi.queryUserInfo();
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+/**
|
|
|
|
|
+ * 修改昵称
|
|
|
|
|
+ */
|
|
|
|
|
+const modifyNickname = (e) => {
|
|
|
|
|
+ nicknameFormData.value.nickname = userInfo.value.nickname;
|
|
|
|
|
+ nicknameInputDialog.value.open();
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 昵称修改表单 提交
|
|
|
|
|
+ */
|
|
|
|
|
+const nicknameFormConfirm = async () => {
|
|
|
|
|
+ let data = await nicknameForm.value.validate();
|
|
|
|
|
+ await userApi.modifyNickname(data);
|
|
|
|
|
+ userInfo.value.nickname = nicknameFormData.value.nickname;
|
|
|
|
|
+ nicknameInputDialog.value.close();
|
|
|
|
|
+ uni.showToast({
|
|
|
|
|
+ title: "修改成功",
|
|
|
|
|
+ icon: "success",
|
|
|
|
|
+ });
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 昵称修改表单 关闭
|
|
|
|
|
+ */
|
|
|
|
|
+const nicknameFormClose = async () => {
|
|
|
|
|
+ nicknameInputDialog.value.close();
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
// 生命周期
|
|
// 生命周期
|
|
|
onShow(() => {
|
|
onShow(() => {
|
|
|
// 根据登录凭据判断登录状态
|
|
// 根据登录凭据判断登录状态
|
|
@@ -161,4 +246,25 @@ onShow(() => {
|
|
|
color: #000000;
|
|
color: #000000;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+.nickname-dialog {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 100rpx;
|
|
|
|
|
+ border-radius: 8px;
|
|
|
|
|
+ background: #ffffff;
|
|
|
|
|
+ // 阴影
|
|
|
|
|
+ border: 0.5px solid #e4e4e4;
|
|
|
|
|
+
|
|
|
|
|
+ input {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ font-size: 36rpx;
|
|
|
|
|
+ font-weight: 700;
|
|
|
|
|
+ letter-spacing: 0rpx;
|
|
|
|
|
+ line-height: 52.13rpx;
|
|
|
|
|
+ color: #000000;
|
|
|
|
|
+ border-radius: 24rpx;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
</style>
|
|
</style>
|