background.vue 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <template>
  2. <div class="w-full h-[100vh] bg-white">
  3. <ChatHeaderBar title="设置当前聊天背景"></ChatHeaderBar>
  4. <div class="pt-50">
  5. <van-cell clickable @click="open" size="large" title="从相册中选择" is-link></van-cell>
  6. <van-cell clickable @click="changeGroupBg" size="large" title="设置成默认背景"></van-cell>
  7. </div>
  8. </div>
  9. </template>
  10. <script setup>
  11. const route = useRoute()
  12. definePageMeta({
  13. layout: false
  14. })
  15. useSeoMeta({
  16. title: '我的消息'
  17. })
  18. const { open, onChange } = useFileDialog({
  19. accept: '.png,.png,.jpeg,.JPG,Png '
  20. })
  21. const bgImage = ref('')
  22. onChange(async (files) => {
  23. if (!files.length) return
  24. const formData = new FormData()
  25. formData.append('uploadFile', files[0])
  26. formData.append('asImage', true)
  27. formData.append('fieldName', 'image')
  28. const maxSize = 20 * 1024 * 1024 // 20 MB
  29. if (files[0].size > maxSize) {
  30. showToast('上传图片过大,请重新上传')
  31. return
  32. } else {
  33. try {
  34. showLoadingToast({
  35. message: '图片上传中...',
  36. duration: 1000000
  37. })
  38. const { data } = await request('/website/tourMessage/upload', {
  39. method: 'post',
  40. body: formData
  41. })
  42. bgImage.value = data.fileUrl
  43. changeGroupBg()
  44. closeToast()
  45. } catch (error) {
  46. closeToast()
  47. showToast('图片上传失败')
  48. }
  49. }
  50. })
  51. // 修改背景图
  52. const changeGroupBg = async () => {
  53. try {
  54. const res = await request('/website/tourMember/updateSingleTourMember', {
  55. method: 'post',
  56. body: {
  57. groupId: route.query.groupId,
  58. groupBackImage: bgImage.value
  59. }
  60. })
  61. if (res && res?.success) {
  62. navigateTo({
  63. path: 'chat/group',
  64. query: route.query.groupId,
  65. replace: true
  66. })
  67. showSuccessToast('聊天背景设置成功')
  68. }
  69. // else {
  70. // showFailToast('聊天背景设置失败')
  71. // }
  72. } catch (error) {}
  73. }
  74. </script>
  75. <style lang="scss" scoped></style>