添加群成员查看功能
This commit is contained in:
@@ -125,3 +125,27 @@ def api_contacts_public():
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"获取公共好友信息失败: {e}")
|
logger.error(f"获取公共好友信息失败: {e}")
|
||||||
return jsonify({"success": False, "error": str(e)}), 500
|
return jsonify({"success": False, "error": str(e)}), 500
|
||||||
|
|
||||||
|
@contacts_bp.route('/api/group/<group_id>/members', methods=['GET'])
|
||||||
|
@login_required
|
||||||
|
def api_group_members(group_id):
|
||||||
|
"""获取指定群组的成员信息API"""
|
||||||
|
try:
|
||||||
|
server = current_app.dashboard_server
|
||||||
|
members = server.contact_manager.get_group_members(group_id)
|
||||||
|
|
||||||
|
if members is None:
|
||||||
|
return jsonify({
|
||||||
|
"success": False,
|
||||||
|
"error": "无法获取群成员信息或群组不存在"
|
||||||
|
}), 404
|
||||||
|
|
||||||
|
return jsonify({
|
||||||
|
"success": True,
|
||||||
|
"data": {
|
||||||
|
"members": members
|
||||||
|
}
|
||||||
|
})
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"获取群组 {group_id} 成员信息失败: {e}")
|
||||||
|
return jsonify({"success": False, "error": str(e)}), 500
|
||||||
@@ -57,7 +57,7 @@ def api_wx_logs():
|
|||||||
else:
|
else:
|
||||||
log_file = os.path.join(project_root, 'wx_info.log')
|
log_file = os.path.join(project_root, 'wx_info.log')
|
||||||
|
|
||||||
logger.info(f"尝试读取日志文件: {log_file}")
|
# logger.info(f"尝试读取日志文件: {log_file}")
|
||||||
|
|
||||||
# 读取日志文件
|
# 读取日志文件
|
||||||
log_content = []
|
log_content = []
|
||||||
|
|||||||
@@ -197,12 +197,33 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<!-- 群组详情对话框 -->
|
<!-- 群组详情对话框 -->
|
||||||
<el-dialog title="群组详情" {% raw %}:visible.sync="groupDetailDialogVisible"{% endraw %} width="50%">
|
<el-dialog title="群组详情" {% raw %}:visible.sync="groupDetailDialogVisible"{% endraw %} width="70%">
|
||||||
<el-descriptions {% raw %}:column="1"{% endraw %} border>
|
<el-descriptions {% raw %}:column="1"{% endraw %} border>
|
||||||
<el-descriptions-item label="群ID">{% raw %}{{ currentGroup.wxid }}{% endraw %}</el-descriptions-item>
|
<el-descriptions-item label="群ID">{% raw %}{{ currentGroup.wxid }}{% endraw %}</el-descriptions-item>
|
||||||
<el-descriptions-item label="群名称">{% raw %}{{ currentGroup.name }}{% endraw %}</el-descriptions-item>
|
<el-descriptions-item label="群名称">{% raw %}{{ currentGroup.name }}{% endraw %}</el-descriptions-item>
|
||||||
<!-- 可以添加更多群组相关信息 -->
|
<!-- 可以添加更多群组相关信息 -->
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
|
|
||||||
|
<div style="margin-top: 20px;">
|
||||||
|
<h3>群成员列表</h3>
|
||||||
|
<div {% raw %}v-if="loadingMembers"{% endraw %} style="text-align: center; padding: 20px;">
|
||||||
|
<el-spinner></el-spinner>
|
||||||
|
<p>加载群成员中...</p>
|
||||||
|
</div>
|
||||||
|
<div {% raw %}v-else-if="groupMembers.length === 0"{% endraw %} style="text-align: center; padding: 20px;">
|
||||||
|
<p>暂无群成员信息</p>
|
||||||
|
</div>
|
||||||
|
<el-table
|
||||||
|
{% raw %}v-else
|
||||||
|
:data="groupMembers"{% endraw %}
|
||||||
|
style="width: 100%"
|
||||||
|
border>
|
||||||
|
<el-table-column type="index" width="50"></el-table-column>
|
||||||
|
<el-table-column prop="wxid" label="成员ID" width="220"></el-table-column>
|
||||||
|
<el-table-column prop="nickname" label="昵称"></el-table-column>
|
||||||
|
<el-table-column prop="displayname" label="群内显示名" width="150"></el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 用户详情对话框 -->
|
<!-- 用户详情对话框 -->
|
||||||
@@ -263,7 +284,9 @@
|
|||||||
currentGroup: {},
|
currentGroup: {},
|
||||||
currentUser: {},
|
currentUser: {},
|
||||||
currentOfficial: {},
|
currentOfficial: {},
|
||||||
currentPublic: {}
|
currentPublic: {},
|
||||||
|
groupMembers: [],
|
||||||
|
loadingMembers: false
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -436,6 +459,34 @@
|
|||||||
viewGroupDetails(group) {
|
viewGroupDetails(group) {
|
||||||
this.currentGroup = group;
|
this.currentGroup = group;
|
||||||
this.groupDetailDialogVisible = true;
|
this.groupDetailDialogVisible = true;
|
||||||
|
this.loadGroupMembers(group.wxid);
|
||||||
|
},
|
||||||
|
loadGroupMembers(groupId) {
|
||||||
|
this.loadingMembers = true;
|
||||||
|
this.groupMembers = [];
|
||||||
|
|
||||||
|
axios.get(`/contacts/api/group/${groupId}/members`)
|
||||||
|
.then(response => {
|
||||||
|
if (response.data.success) {
|
||||||
|
const members = response.data.data.members;
|
||||||
|
this.groupMembers = Object.entries(members).map(([wxid, info]) => {
|
||||||
|
return {
|
||||||
|
wxid: wxid,
|
||||||
|
nickname: info.nickname || '未知',
|
||||||
|
displayname: info.displayname || '未设置'
|
||||||
|
};
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.$message.warning('获取群成员信息失败: ' + response.data.error);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error('加载群成员数据失败:', error);
|
||||||
|
this.$message.error('加载群成员数据失败');
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
this.loadingMembers = false;
|
||||||
|
});
|
||||||
},
|
},
|
||||||
viewUserDetails(user) {
|
viewUserDetails(user) {
|
||||||
this.currentUser = user;
|
this.currentUser = user;
|
||||||
|
|||||||
@@ -77,6 +77,7 @@ def game_question_json(question):
|
|||||||
3. 每个问题应独立,且问题之间无连贯性或延续性。
|
3. 每个问题应独立,且问题之间无连贯性或延续性。
|
||||||
4. 避免重复提问或产生相似的问题,确保问题新颖。
|
4. 避免重复提问或产生相似的问题,确保问题新颖。
|
||||||
5. 对于每个问题,提供难度评分(1-10分)。在问题答对后,用户可以根据难度给出相应的分数。
|
5. 对于每个问题,提供难度评分(1-10分)。在问题答对后,用户可以根据难度给出相应的分数。
|
||||||
|
6. 答案控制长度在20字以内。
|
||||||
|
|
||||||
输出格式要求如下(仅返回JSON格式,确保不添加多余的符号):
|
输出格式要求如下(仅返回JSON格式,确保不添加多余的符号):
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user