sign.uvue 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <template>
  2. <cl-page>
  3. <cl-sign ref="signRef" :height="height" :width="width" :enable-brush="isBrush"></cl-sign>
  4. <view class="p-3">
  5. <cl-list>
  6. <cl-list-item label="操作">
  7. <cl-button type="info" @click="clear">清空</cl-button>
  8. <cl-button @click="preview">预览</cl-button>
  9. </cl-list-item>
  10. <cl-list-item label="大屏">
  11. <cl-switch v-model="isFullscreen" @change="onFullscreenChange"></cl-switch>
  12. </cl-list-item>
  13. <cl-list-item label="毛笔效果">
  14. <cl-switch v-model="isBrush"></cl-switch>
  15. </cl-list-item>
  16. </cl-list>
  17. </view>
  18. </cl-page>
  19. </template>
  20. <script setup lang="ts">
  21. import { ref } from "vue";
  22. const height = ref(0);
  23. const width = ref(0);
  24. const isFullscreen = ref(false);
  25. const isBrush = ref(true);
  26. const signRef = ref<ClSignComponentPublicInstance | null>(null);
  27. function clear() {
  28. signRef.value!.clear();
  29. }
  30. function preview() {
  31. signRef.value!.toPng().then((url) => {
  32. uni.previewImage({
  33. urls: [url]
  34. });
  35. });
  36. }
  37. function onFullscreenChange() {
  38. height.value = isFullscreen.value ? uni.getWindowInfo().windowHeight - 200 : 200;
  39. }
  40. onReady(() => {
  41. const { windowWidth } = uni.getWindowInfo();
  42. height.value = 200;
  43. width.value = windowWidth;
  44. });
  45. </script>