announcement.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <template>
  2. <page-meta :page-font-size="fontValue+'px'" :root-font-size="fontValue+'px'"></page-meta>
  3. <cu-custom bgImage="/static/bg.png" :isBack="true">
  4. <template v-slot:content>
  5. <text class="text-black">群公告</text>
  6. </template>
  7. </cu-custom>
  8. <view class="padding">
  9. <uni-forms ref="groupForm" :model="group" :rules="rules">
  10. <uni-forms-item name="announcement">
  11. <uni-easyinput placeholder="请输入群公告" type="textarea" v-model="group.announcement" rows="5"></uni-easyinput>
  12. </uni-forms-item>
  13. <view class="cu-bar bg-white">
  14. <button class="cu-btn bg-zblue border lg margin-top" style="width: 100%;" @tap="update">保存</button>
  15. </view>
  16. </uni-forms>
  17. </view>
  18. </template>
  19. <script setup lang="ts">
  20. import {reactive, ref} from "vue";
  21. import type Group from "@/mode/Group";
  22. import UniForms from "@/uni_modules/uni-forms/components/uni-forms/uni-forms.vue";
  23. import UniFormsItem from "@/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue";
  24. import {onLoad} from "@dcloudio/uni-app";
  25. import GroupApi from "@/api/GroupApi";
  26. import MessageUtils from "@/utils/MessageUtils";
  27. import SendCode from "@/utils/SendCode";
  28. import ChatType from "@/utils/ChatType";
  29. import MessageType from "@/utils/MessageType";
  30. import {useWsStore} from "@/store/WsStore";
  31. import UniEasyinput from "@/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue";
  32. import CuCustom from "@/colorui/components/cu-custom.vue";
  33. import Auth from "@/api/Auth";
  34. const fontValue=ref(Auth.getfontSize());
  35. const rules = {
  36. announcement: {
  37. rules: [
  38. {
  39. required: true,
  40. errorMessage: '请输入公告',
  41. },
  42. {
  43. minLength: 5,
  44. maxLength: 100,
  45. errorMessage: '公告长度在 {minLength} 到 {maxLength} 个字符',
  46. }
  47. ]
  48. }
  49. }
  50. const group = reactive<Group>({} as Group)
  51. const groupForm = ref();
  52. onLoad((opt) => {
  53. if (opt?.id) {
  54. group.id = opt.id;
  55. GroupApi.get(group.id)
  56. .then((res) => {
  57. group.id = res.data.id;
  58. group.name = res.data.name;
  59. group.master = res.data.master;
  60. group.avatar = res.data.avatar;
  61. group.openInvite = res.data.openInvite;
  62. group.inviteCheck = res.data.inviteCheck;
  63. group.prohibition = res.data.prohibition;
  64. group.prohibitFriend = res.data.prohibitFriend;
  65. })
  66. }
  67. })
  68. const update = () => {
  69. groupForm.value.validate().then(() => {
  70. GroupApi.update(group.id, group.name, group.avatar, group.openInvite, group.inviteCheck,group.prohibition,group.prohibitFriend, group.announcement)
  71. .then(() => {
  72. const sendInfo = {
  73. code: SendCode.MESSAGE,
  74. message: {
  75. mine: true,
  76. fromId: group.master,
  77. chatId: group.id,
  78. type: ChatType.GROUP,
  79. messageType: MessageType.text,
  80. content: `@[所有人] 群公告:${group.announcement}`,
  81. timestamp: new Date().getTime(),
  82. extend: {
  83. atAll: true
  84. }
  85. }
  86. }
  87. useWsStore().send(JSON.stringify(sendInfo))
  88. MessageUtils.message('更新成功')
  89. uni.navigateTo({
  90. url: '/pages/group/group?id=' + group.id
  91. })
  92. })
  93. .catch((err) => {
  94. MessageUtils.error(err)
  95. })
  96. })
  97. }
  98. </script>
  99. <style scoped>
  100. </style>