Watermark.vue 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <template>
  2. <view class="watermark" >
  3. <view class="watermark-box">
  4. <view class="text" v-for="(item, index) in count" :key="index">
  5. <view>{{localUserInfo.nickName || '' }}</view>
  6. <view>{{utils.parsePhone(localUserInfo.phonenumber)}}</view>
  7. </view>
  8. </view>
  9. </view>
  10. </template>
  11. <script>
  12. export default {
  13. name: 'Watermark',
  14. props: {
  15. userInfo: {
  16. type: Object,
  17. default: null
  18. }
  19. },
  20. data() {
  21. return {
  22. count:40,
  23. localUserInfo: this.userInfo || this.getUserInfo()
  24. };
  25. },
  26. watch: {
  27. // 监听props中的userInfo变化,当变化时更新本地userInfo
  28. userInfo: {
  29. handler(newVal) {
  30. this.localUserInfo = newVal || this.getUserInfo();
  31. },
  32. deep: true
  33. }
  34. },
  35. onShow() {
  36. // 如果没有通过props传递userInfo,则从本地存储获取
  37. if (!this.userInfo) {
  38. this.localUserInfo = this.getUserInfo();
  39. }
  40. },
  41. onLoad() {
  42. // 如果没有通过props传递userInfo,则从本地存储获取
  43. if (!this.userInfo) {
  44. this.localUserInfo = this.getUserInfo();
  45. }
  46. },
  47. methods: {
  48. getUserInfo() {
  49. try {
  50. const userInfo = uni.getStorageSync('userInfo');
  51. if (userInfo) {
  52. // 尝试解析JSON字符串
  53. return userInfo|| {};
  54. }
  55. return {};
  56. } catch (error) {
  57. console.error('获取用户信息失败:', error);
  58. return {};
  59. }
  60. }
  61. }
  62. }
  63. </script>
  64. <style scoped>
  65. .watermark {
  66. position: fixed;
  67. top: 0;
  68. left: 0;
  69. width: 100vw;
  70. height: 100vh;
  71. pointer-events: none;
  72. z-index: 999999;
  73. overflow: hidden;
  74. font-size: 40rpx;
  75. }
  76. .watermark-box {
  77. width: 200%;
  78. height: 150%;
  79. display: flex;
  80. flex-wrap: wrap;
  81. justify-content: space-between;
  82. align-items: flex-start;
  83. transform: rotate(-20deg) translate(-25%, -25%);
  84. color: rgba(196, 196, 196, 0.5);
  85. padding: 0;
  86. }
  87. .text {
  88. margin: 20rpx 15rpx;
  89. font-weight: bold;
  90. flex: 0 0 calc(20% - 30rpx);
  91. text-align: center;
  92. }
  93. </style>