group-edit.vue 4.3 KB

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