|
|
- <template>
- <view class="page">
- <navbar title="群组管理" bgColor="#5baaff" color="#fff" leftClick @leftClick="$utils.navigateBack" />
-
- <!-- 群组信息 -->
- <view class="group-info">
- <image :src="groupInfo.avatar || '/static/image/logo.jpg'" class="group-avatar" mode="aspectFill"></image>
- <view class="group-details">
- <view class="group-name">{{ groupInfo.name || '群组名称' }}</view>
- <view class="member-count">{{ groupInfo.memberCount || 0 }}人</view>
- </view>
- </view>
-
- <!-- 管理选项 -->
- <view class="manage-options">
- <view class="option-item" @click="editGroupInfo">
- <view class="option-left">
- <uv-icon name="edit-pen" size="40rpx" color="#5baaff"></uv-icon>
- <text>编辑群组信息</text>
- </view>
- <uv-icon name="arrow-right" size="30rpx" color="#ccc"></uv-icon>
- </view>
-
- <view class="option-item" @click="uploadQrCode">
- <view class="option-left">
- <uv-icon name="scan" size="40rpx" color="#5baaff"></uv-icon>
- <text>上传群聊二维码</text>
- </view>
- <uv-icon name="arrow-right" size="30rpx" color="#ccc"></uv-icon>
- </view>
-
- <view class="option-item" @click="manageMembers">
- <view class="option-left">
- <uv-icon name="account" size="40rpx" color="#5baaff"></uv-icon>
- <text>成员管理</text>
- </view>
- <uv-icon name="arrow-right" size="30rpx" color="#ccc"></uv-icon>
- </view>
-
- <view class="option-item" @click="editAnnouncement">
- <view class="option-left">
- <uv-icon name="volume" size="40rpx" color="#5baaff"></uv-icon>
- <text>群组公告</text>
- </view>
- <uv-icon name="arrow-right" size="30rpx" color="#ccc"></uv-icon>
- </view>
-
- <view class="option-item" @click="groupSettings">
- <view class="option-left">
- <uv-icon name="setting" size="40rpx" color="#5baaff"></uv-icon>
- <text>群组设置</text>
- </view>
- <uv-icon name="arrow-right" size="30rpx" color="#ccc"></uv-icon>
- </view>
- </view>
-
- <!-- 危险操作 -->
- <view class="danger-zone">
- <view class="danger-title">危险操作</view>
- <view class="danger-item" @click="transferGroup">
- <view class="danger-left">
- <uv-icon name="account" size="40rpx" color="#ff4757"></uv-icon>
- <text>转让群主</text>
- </view>
- <uv-icon name="arrow-right" size="30rpx" color="#ccc"></uv-icon>
- </view>
-
- <view class="danger-item" @click="dissolveGroup">
- <view class="danger-left">
- <uv-icon name="close" size="40rpx" color="#ff4757"></uv-icon>
- <text>解散群组</text>
- </view>
- <uv-icon name="arrow-right" size="30rpx" color="#ccc"></uv-icon>
- </view>
- </view>
- </view>
- </template>
-
- <script>
- export default {
- data() {
- return {
- groupId: '',
- groupInfo: {
- id: 1,
- name: '江华同城交流群',
- avatar: '/static/image/logo.jpg',
- memberCount: 1280
- }
- }
- },
- onLoad(options) {
- if (options.id) {
- this.groupId = options.id
- this.getGroupInfo()
- }
- },
- methods: {
- // 获取群组信息
- getGroupInfo() {
- // 模拟群组信息
- const mockGroupInfo = {
- 1: {
- id: 1,
- name: '江华同城交流群',
- avatar: '/static/image/logo.jpg',
- memberCount: 1280
- },
- 2: {
- id: 2,
- name: '江华美食分享群',
- avatar: '/static/image/logo.jpg',
- memberCount: 856
- },
- 3: {
- id: 3,
- name: '江华租房信息群',
- avatar: '/static/image/logo.jpg',
- memberCount: 2341
- },
- 4: {
- id: 4,
- name: '江华求职招聘群',
- avatar: '/static/image/logo.jpg',
- memberCount: 1567
- },
- 5: {
- id: 5,
- name: '江华旅游攻略群',
- avatar: '/static/image/logo.jpg',
- memberCount: 623
- },
- 6: {
- id: 6,
- name: '江华学习交流群',
- avatar: '/static/image/logo.jpg',
- memberCount: 445
- },
- 7: {
- id: 7,
- name: '江华二手交易群',
- avatar: '/static/image/logo.jpg',
- memberCount: 1890
- },
- 8: {
- id: 8,
- name: '江华宠物交流群',
- avatar: '/static/image/logo.jpg',
- memberCount: 567
- },
- 9: {
- id: 9,
- name: '江华汽车交流群',
- avatar: '/static/image/logo.jpg',
- memberCount: 892
- },
- 10: {
- id: 10,
- name: '江华宝妈交流群',
- avatar: '/static/image/logo.jpg',
- memberCount: 1234
- },
- 11: {
- id: 11,
- name: '江华IT技术交流群',
- avatar: '/static/image/logo.jpg',
- memberCount: 345
- },
- 12: {
- id: 12,
- name: '江华健身运动群',
- avatar: '/static/image/logo.jpg',
- memberCount: 678
- },
- 13: {
- id: 13,
- name: '江华摄影爱好者群',
- avatar: '/static/image/logo.jpg',
- memberCount: 456
- },
- 14: {
- id: 14,
- name: '江华创业交流群',
- avatar: '/static/image/logo.jpg',
- memberCount: 789
- },
- 15: {
- id: 15,
- name: '江华医疗健康群',
- avatar: '/static/image/logo.jpg',
- memberCount: 1123
- },
- 16: {
- id: 16,
- name: '江华读书会',
- avatar: '/static/image/logo.jpg',
- memberCount: 234
- },
- 17: {
- id: 17,
- name: '江华音乐爱好者群',
- avatar: '/static/image/logo.jpg',
- memberCount: 567
- },
- 18: {
- id: 18,
- name: '江华电商交流群',
- avatar: '/static/image/logo.jpg',
- memberCount: 890
- },
- 19: {
- id: 19,
- name: '江华园艺爱好者群',
- avatar: '/static/image/logo.jpg',
- memberCount: 345
- },
- 20: {
- id: 20,
- name: '江华法律咨询群',
- avatar: '/static/image/logo.jpg',
- memberCount: 678
- }
- }
-
- setTimeout(() => {
- this.groupInfo = mockGroupInfo[this.groupId] || this.groupInfo
- }, 300)
- },
-
- // 编辑群组信息
- editGroupInfo() {
- this.$utils.navigateTo('/pages_order/group/editGroup?id=' + this.groupId)
- },
-
- // 上传群聊二维码
- uploadQrCode() {
- uni.chooseImage({
- count: 1,
- sizeType: ['original', 'compressed'],
- sourceType: ['album', 'camera'],
- success: (res) => {
- const tempFilePath = res.tempFilePaths[0]
-
- // 显示预览
- uni.previewImage({
- urls: [tempFilePath],
- success: () => {
- // 确认上传
- uni.showModal({
- title: '确认上传',
- content: '确定要上传这张二维码图片吗?',
- success: (modalRes) => {
- if (modalRes.confirm) {
- this.uploadQrCodeImage(tempFilePath)
- }
- }
- })
- }
- })
- },
- fail: (err) => {
- uni.showToast({
- title: '选择图片失败',
- icon: 'none'
- })
- }
- })
- },
-
- // 上传二维码图片
- uploadQrCodeImage(filePath) {
- uni.showLoading({
- title: '上传中...'
- })
-
- // 模拟上传过程
- setTimeout(() => {
- uni.hideLoading()
- uni.showToast({
- title: '上传成功',
- icon: 'success'
- })
-
- // 这里可以调用实际的上传API
- // uni.uploadFile({
- // url: 'your-upload-api',
- // filePath: filePath,
- // name: 'qrcode',
- // formData: {
- // groupId: this.groupId
- // },
- // success: (uploadRes) => {
- // // 处理上传成功
- // }
- // })
- }, 2000)
- },
-
- // 成员管理
- manageMembers() {
- this.$utils.navigateTo('/pages_order/group/memberManage?id=' + this.groupId)
- },
-
- // 编辑公告
- editAnnouncement() {
- uni.showModal({
- title: '编辑群组公告',
- content: '请输入新的群组公告',
- editable: true,
- placeholderText: '请输入公告内容',
- success: (res) => {
- if (res.confirm && res.content) {
- this.updateAnnouncement(res.content)
- }
- }
- })
- },
-
- // 更新公告
- updateAnnouncement(content) {
- // 模拟更新公告
- setTimeout(() => {
- uni.showToast({
- title: '公告更新成功',
- icon: 'success'
- })
- }, 500)
- },
-
- // 群组设置
- groupSettings() {
- this.$utils.navigateTo('/pages_order/group/groupSettings?id=' + this.groupId)
- },
-
- // 转让群主
- transferGroup() {
- uni.showModal({
- title: '转让群主',
- content: '确定要转让群主身份吗?转让后将失去群主权限。',
- success: (res) => {
- if (res.confirm) {
- // 跳转到选择新群主页面
- this.$utils.navigateTo('/pages_order/group/transferGroup?id=' + this.groupId)
- }
- }
- })
- },
-
- // 解散群组
- dissolveGroup() {
- uni.showModal({
- title: '解散群组',
- content: '确定要解散该群组吗?解散后所有成员将被移出群组,且无法恢复。',
- success: (res) => {
- if (res.confirm) {
- // 模拟解散群组
- setTimeout(() => {
- uni.showToast({
- title: '群组已解散',
- icon: 'success'
- })
- setTimeout(() => {
- this.$utils.navigateBack()
- }, 1500)
- }, 500)
- }
- }
- })
- }
- }
- }
- </script>
-
- <style scoped lang="scss">
- .page {
- background-color: #f5f5f5;
- min-height: 100vh;
-
- .group-info {
- background-color: #fff;
- padding: 30rpx;
- margin-bottom: 20rpx;
- display: flex;
- align-items: center;
-
- .group-avatar {
- width: 100rpx;
- height: 100rpx;
- border-radius: 20rpx;
- margin-right: 20rpx;
- }
-
- .group-details {
- flex: 1;
-
- .group-name {
- font-size: 32rpx;
- font-weight: bold;
- color: #333;
- margin-bottom: 8rpx;
- }
-
- .member-count {
- font-size: 24rpx;
- color: #999;
- }
- }
- }
-
- .manage-options, .danger-zone {
- background-color: #fff;
- margin-bottom: 20rpx;
-
- .option-item, .danger-item {
- display: flex;
- justify-content: space-between;
- align-items: center;
- padding: 30rpx;
- border-bottom: 1rpx solid #f0f0f0;
-
- &:last-child {
- border-bottom: none;
- }
-
- .option-left, .danger-left {
- display: flex;
- align-items: center;
-
- text {
- margin-left: 20rpx;
- font-size: 28rpx;
- color: #333;
- }
- }
- }
- }
-
- .danger-zone {
- .danger-title {
- padding: 20rpx 30rpx;
- font-size: 28rpx;
- color: #ff4757;
- font-weight: bold;
- border-bottom: 1rpx solid #f0f0f0;
- }
-
- .danger-item {
- .danger-left {
- text {
- color: #ff4757;
- }
- }
- }
- }
- }
- </style>
|