group-edit.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <template>
  2. <view class="page group-edit">
  3. <nav-bar back>修改群资料</nav-bar>
  4. <uni-card :is-shadow="false" is-full :border="false">
  5. <uni-forms ref="form" :modelValue="group" :rules="rules" validate-trigger="bind" label-position="top"
  6. label-width="100%">
  7. <uni-forms-item name="headImage" class="avatar">
  8. <image-upload v-if="isOwner" :onSuccess="onUnloadImageSuccess">
  9. <image :src="group.headImageThumb" class="group-image"></image>
  10. </image-upload>
  11. <head-image v-if="!isOwner" :name="group.showGroupName" :url="group.headImageThumb"
  12. :size="200"></head-image>
  13. </uni-forms-item>
  14. <uni-forms-item label="群聊名称" name="name" :required="true">
  15. <uni-easyinput type="text" v-model="group.name" :disabled="!isOwner" placeholder="请输入群聊名称" />
  16. </uni-forms-item>
  17. <uni-forms-item label="群聊备注" name="remarkGroupName">
  18. <uni-easyinput v-model="group.remarkGroupName" type="text" :placeholder="group.name" />
  19. </uni-forms-item>
  20. <uni-forms-item label="我在本群的昵称" name="remarkNickName">
  21. <uni-easyinput v-model="group.remarkNickName" type="text"
  22. :placeholder="userStore.userInfo.nickName" />
  23. </uni-forms-item>
  24. <uni-forms-item label="群公告" name="notice">
  25. <uni-easyinput type="textarea" v-model="group.notice" :disabled="!isOwner" placeholder="请输入群公告" />
  26. </uni-forms-item>
  27. </uni-forms>
  28. </uni-card>
  29. <button class="bottom-btn" type="primary" @click="submit()">提交</button>
  30. </view>
  31. </template>
  32. <script>
  33. export default {
  34. data() {
  35. return {
  36. group: {},
  37. rules: {
  38. name: {
  39. rules: [{
  40. required: true,
  41. errorMessage: '请输入群聊名称',
  42. }]
  43. }
  44. }
  45. }
  46. },
  47. methods: {
  48. submit() {
  49. if (this.group.id) {
  50. this.modifyGroup();
  51. } else {
  52. this.createNewGroup();
  53. }
  54. },
  55. onUnloadImageSuccess(file, res) {
  56. this.group.headImage = res.data.originUrl;
  57. this.group.headImageThumb = res.data.thumbUrl;
  58. },
  59. modifyGroup() {
  60. this.$http({
  61. url: "/group/modify",
  62. method: "PUT",
  63. data: this.group
  64. }).then((group) => {
  65. this.groupStore.updateGroup(group);
  66. uni.showToast({
  67. title: "修改群聊信息成功",
  68. icon: 'none'
  69. });
  70. setTimeout(() => {
  71. let pages = getCurrentPages();
  72. let prevPage = pages[pages.length - 2];
  73. prevPage.$vm.loadGroupInfo();
  74. uni.navigateBack();
  75. }, 1000);
  76. })
  77. },
  78. createNewGroup() {
  79. this.$http({
  80. url: "/group/create",
  81. method: 'POST',
  82. data: this.group
  83. }).then((group) => {
  84. this.groupStore.addGroup(group);
  85. uni.showToast({
  86. title: `群聊创建成功,快邀请小伙伴进群吧`,
  87. icon: 'none',
  88. duration: 1500
  89. });
  90. setTimeout(() => {
  91. uni.navigateTo({
  92. url: "/pages/group/group-info?id=" + group.id
  93. });
  94. }, 1500)
  95. })
  96. },
  97. loadGroupInfo(id) {
  98. this.$http({
  99. url: `/group/find/${id}`,
  100. method: 'GET'
  101. }).then((group) => {
  102. this.group = group;
  103. // 更新聊天页面的群聊信息
  104. this.chatStore.updateChatFromGroup(group);
  105. // 更新聊天列表的群聊信息
  106. this.groupStore.updateGroup(group);
  107. });
  108. },
  109. initNewGroup() {
  110. let userInfo = this.userStore.userInfo;
  111. this.group = {
  112. name: `${userInfo.userName}创建的群聊`,
  113. headImage: userInfo.headImage,
  114. headImageThumb: userInfo.headImageThumb,
  115. ownerId: this.userStore.userInfo.id
  116. }
  117. }
  118. },
  119. computed: {
  120. isOwner() {
  121. return this.userStore.userInfo.id == this.group.ownerId
  122. }
  123. },
  124. onLoad(options) {
  125. if (options.id) {
  126. // 修改群聊
  127. this.loadGroupInfo(options.id);
  128. } else {
  129. // 创建群聊
  130. this.initNewGroup();
  131. }
  132. }
  133. }
  134. </script>
  135. <style lang="scss" scoped>
  136. .group-edit {
  137. //padding: 20rpx;
  138. .group-image {
  139. width: 200rpx;
  140. height: 200rpx;
  141. border: 1px solid #ccc;
  142. border-radius: 5%;
  143. }
  144. }
  145. .avatar {
  146. margin-top: -30px;
  147. }
  148. </style>