avatar.vue 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <template>
  2. <view>
  3. <!-- 头像裁剪 -->
  4. <okingtz-cropper
  5. @uploadSuccess="uploadSuccess"
  6. selectButtonBackgroundColor="#2080f0"
  7. saveButtonBackgroundColor="#2080f0"
  8. :image="vk.vuex.get('$user.userInfo.avatar') ? vk.vuex.get('$user.userInfo.avatar') : avatar"
  9. ></okingtz-cropper>
  10. </view>
  11. </template>
  12. <script>
  13. import OkingtzCropper from '@/uni_modules/okingtz-cropper/components/okingtz-cropper/okingtz-cropper';
  14. export default {
  15. components: {
  16. OkingtzCropper
  17. },
  18. data() {
  19. return {
  20. avatar: '/static/logo.png' // 头像地址
  21. };
  22. },
  23. onLoad() {
  24. // 查询上次修改头像时间
  25. let lastTime = vk.vuex.get('$user.history.lastEditAvatarTime');
  26. console.log(lastTime);
  27. if (vk.pubfn.isNotNull(lastTime)) {
  28. // 说明此前已修改过一次,但这个是本地验证,换个设备相当于可以突破限制
  29. let currentTime = Date.parse(new Date()) / 1000; // 秒级
  30. console.log(currentTime);
  31. if (currentTime - lastTime <= 86400) {
  32. vk.alert('头像在每7天内仅允许修改一次', '提示', '确定', function() {
  33. vk.navigateToHome();
  34. });
  35. return;
  36. }
  37. }
  38. },
  39. methods: {
  40. // 头像
  41. uploadSuccess(tempFilePath) {
  42. // 上传至 unicloud云储存
  43. vk.callFunctionUtil.uploadFile({
  44. title: '上传中...',
  45. filePath: tempFilePath,
  46. suffix: 'png', // 不传suffix会自动获取,但H5环境下获取不到后缀,但可以通过file.name 获取
  47. success(res) {
  48. // 上传成功
  49. vk.userCenter.setAvatar({
  50. data: {
  51. avatar: res.url
  52. },
  53. success: function(data) {
  54. // 成功后的逻辑
  55. let currentTime = Date.parse(new Date()) / 1000; // 秒级
  56. console.log(currentTime);
  57. vk.vuex.set('$user.history.lastEditAvatarTime', currentTime); // 写入缓存
  58. vk.alert('头像设置成功', '提示', '确定', function() {
  59. // 点击确定按钮后的回调
  60. vk.navigateToHome();
  61. });
  62. }
  63. });
  64. }
  65. });
  66. }
  67. }
  68. };
  69. </script>
  70. <style></style>