完成device接口调整,调整弹窗设置,优化Headerbar

This commit is contained in:
Ran_Chen
2025-04-02 15:38:04 +08:00
parent c811beadb4
commit bdedc48aca
9 changed files with 99 additions and 89 deletions
@@ -0,0 +1,54 @@
import RequestService from '../httpRequest'
import {getServiceUrl} from '../api'
export default {
// 已绑设备
getAgentBindDevices(agentId, callback) {
RequestService.sendRequest()
.url(`${getServiceUrl()}/api/v1/device/bind/${agentId}`)
.method('GET')
.success((res) => {
RequestService.clearRequestTime();
callback(res);
})
.fail((err) => {
console.error('获取设备列表失败:', err);
RequestService.reAjaxFun(() => {
this.getAgentBindDevices(agentId, callback);
});
}).send();
},
// 解绑设备
unbindDevice(device_id, callback) {
RequestService.sendRequest()
.url(`${getServiceUrl()}/api/v1/device/unbind`)
.method('POST')
.data({ deviceId: device_id })
.success((res) => {
RequestService.clearRequestTime();
callback(res);
})
.fail((err) => {
console.error('解绑设备失败:', err);
RequestService.reAjaxFun(() => {
this.unbindDevice(device_id, callback);
});
}).send();
},
// 绑定设备
bindDevice(agentId, deviceCode, callback) {
RequestService.sendRequest()
.url(`${getServiceUrl()}/api/v1/device/bind/${agentId}/${deviceCode}`)
.method('POST')
.success((res) => {
RequestService.clearRequestTime();
callback(res);
})
.fail((err) => {
console.error('绑定设备失败:', err);
RequestService.reAjaxFun(() => {
this.bindDevice(agentId, deviceCode, callback);
});
}).send();
},
}
-52
View File
@@ -21,7 +21,6 @@ export default {
}, },
// 获取验证码 // 获取验证码
getCaptcha(uuid, callback) { getCaptcha(uuid, callback) {
RequestService.sendRequest() RequestService.sendRequest()
.url(`${getServiceUrl()}/api/v1/user/captcha?uuid=${uuid}`) .url(`${getServiceUrl()}/api/v1/user/captcha?uuid=${uuid}`)
.method('GET') .method('GET')
@@ -52,7 +51,6 @@ export default {
.fail(() => { .fail(() => {
}).send() }).send()
}, },
// 保存设备配置 // 保存设备配置
saveDeviceConfig(device_id, configData, callback) { saveDeviceConfig(device_id, configData, callback) {
RequestService.sendRequest() RequestService.sendRequest()
@@ -106,54 +104,4 @@ export default {
}) })
.send(); .send();
}, },
// 已绑设备
getAgentBindDevices(agentId, callback) {
RequestService.sendRequest()
.url(`${getServiceUrl()}/api/v1/user/agent/device/bind/${agentId}`)
.method('GET')
.success((res) => {
RequestService.clearRequestTime();
callback(res);
})
.fail((err) => {
console.error('获取设备列表失败:', err);
RequestService.reAjaxFun(() => {
this.getAgentBindDevices(agentId, callback);
});
}).send();
},
// 解绑设备
unbindDevice(device_id, callback) {
RequestService.sendRequest()
.url(`${getServiceUrl()}/api/v1/user/device/unbind/${device_id}`)
.method('PUT')
.success((res) => {
RequestService.clearRequestTime();
callback(res);
})
.fail((err) => {
console.error('解绑设备失败:', err);
RequestService.reAjaxFun(() => {
this.unbindDevice(device_id, callback);
});
}).send();
},
// 绑定设备
bindDevice(agentId, code, callback) {
RequestService.sendRequest()
.url(`${getServiceUrl()}/api/v1/user/agent/device/bind/${agentId}`)
.method('POST')
.data({ code })
.success((res) => {
RequestService.clearRequestTime();
callback(res);
})
.fail((err) => {
console.error('绑定设备失败:', err);
RequestService.reAjaxFun(() => {
this.bindDevice(agentId, code, callback);
});
}).send();
},
} }
@@ -49,8 +49,8 @@ export default {
return; return;
} }
this.loading = true; this.loading = true;
import('@/apis/module/user').then(({ default: userApi }) => { import('@/apis/module/device').then(({ default: deviceApi }) => {
userApi.bindDevice( deviceApi.bindDevice(
this.agentId, this.agentId,
this.deviceCode, ({data}) => { this.deviceCode, ({data}) => {
this.loading = false; this.loading = false;
@@ -1,9 +1,11 @@
<template> <template>
<form> <form>
<el-dialog :visible.sync="value" width="400px" center> <el-dialog :visible.sync="value" width="400px" center>
<div <div style="margin: 0 10px 10px;display: flex;align-items: center;gap: 10px;font-weight: 700;font-size: 20px;text-align: left;color: #3d4566;">
style="width: 40px;height: 40px;border-radius: 50%;background: #5778ff;display: flex;align-items: center;justify-content: center;"> <div style="width: 40px;height: 40px;border-radius: 50%;background: #5778ff;display: flex;align-items: center;justify-content: center;">
<img loading="lazy" src="@/assets/login/shield.png" alt="" style="width: 19px;height: 23px; filter: brightness(0) invert(1);" /> <img loading="lazy" src="@/assets/login/shield.png" alt="" style="width: 19px;height: 23px; filter: brightness(0) invert(1);" />
</div>
修改密码
</div> </div>
<div style="height: 1px;background: #e8f0ff;"/> <div style="height: 1px;background: #e8f0ff;"/>
<div style="margin: 22px 15px;"> <div style="margin: 22px 15px;">
@@ -109,7 +111,6 @@ export default {
<style scoped> <style scoped>
.input-46 { .input-46 {
border: 1px solid #e4e6ef;
background: #f6f8fb; background: #f6f8fb;
border-radius: 15px; border-radius: 15px;
} }
@@ -10,9 +10,7 @@
<!-- 中间导航菜单 --> <!-- 中间导航菜单 -->
<div class="header-center"> <div class="header-center">
<div class="equipment-management" :class="{ 'active-tab': $route.path === '/home' }" @click="goHome"> <div class="equipment-management" :class="{ 'active-tab': $route.path === '/home' }" @click="goHome">
<img loading="lazy" alt="" src="@/assets/header/robot.png" :style="{ filter: $route.path === '/home' ? 'brightness(0) invert(1)' : 'None' }"/> <img loading="lazy" alt="" src="@/assets/header/robot.png" :style="{ filter: $route.path === '/home' ? 'brightness(0) invert(1)' : 'None' }"/>
智能体管理 智能体管理
</div> </div>
<div class="equipment-management" :class="{ 'active-tab': $route.path === '/user-management' }" @click="goUserManagement"> <div class="equipment-management" :class="{ 'active-tab': $route.path === '/user-management' }" @click="goUserManagement">
@@ -43,7 +41,6 @@
{{ userInfo.username || '加载中...' }}<i class="el-icon-arrow-down el-icon--right"></i> {{ userInfo.username || '加载中...' }}<i class="el-icon-arrow-down el-icon--right"></i>
</span> </span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item icon="el-icon-plus" @click.native="">个人中心</el-dropdown-item>
<el-dropdown-item icon="el-icon-circle-plus" @click.native="showChangePasswordDialog">修改密码</el-dropdown-item> <el-dropdown-item icon="el-icon-circle-plus" @click.native="showChangePasswordDialog">修改密码</el-dropdown-item>
<el-dropdown-item icon="el-icon-circle-plus-outline" @click.native="handleLogout">退出登录</el-dropdown-item> <el-dropdown-item icon="el-icon-circle-plus-outline" @click.native="handleLogout">退出登录</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
@@ -128,9 +125,7 @@ export default {
try { try {
// 调用 Vuex 的 logout action // 调用 Vuex 的 logout action
await this.logout(); await this.logout();
this.$message.success('退出登录成功'); this.$message.success('退出登录成功');
this.$router.push('/login'); this.$router.push('/login');
} catch (error) { } catch (error) {
console.error('退出登录失败:', error); console.error('退出登录失败:', error);
+8 -1
View File
@@ -1,5 +1,5 @@
<template> <template>
<el-dialog :visible.sync="visible" width="80%" @close="handleClose"> <el-dialog :visible.sync="localVisible" width="80%" @close="handleClose">
<el-row class="main-container"> <el-row class="main-container">
<el-col :span="4"> <el-col :span="4">
<el-menu class="model-menu" :default-active="activeModel" mode="vertical" @select="handleModelSelect"> <el-menu class="model-menu" :default-active="activeModel" mode="vertical" @select="handleModelSelect">
@@ -57,6 +57,7 @@ export default {
}, },
data() { data() {
return { return {
localVisible: this.visible,
activeModel: 'EdgeTTS', activeModel: 'EdgeTTS',
searchQuery: '', searchQuery: '',
editDialogVisible: false, editDialogVisible: false,
@@ -72,6 +73,11 @@ export default {
total: 20 total: 20
}; };
}, },
watch: {
visible(newVal) {
this.localVisible = newVal;
}
},
computed: { computed: {
filteredTtsModels() { filteredTtsModels() {
return this.ttsModels.filter(model => return this.ttsModels.filter(model =>
@@ -81,6 +87,7 @@ export default {
}, },
methods: { methods: {
handleClose() { handleClose() {
this.localVisible = false;
this.$emit('update:visible', false); this.$emit('update:visible', false);
}, },
handleModelSelect(index) { handleModelSelect(index) {
+1
View File
@@ -8,6 +8,7 @@ import 'element-ui/lib/theme-chalk/index.css';
import './styles/global.scss' import './styles/global.scss'
Vue.use(ElementUI); Vue.use(ElementUI);
Vue.config.productionTip = false Vue.config.productionTip = false
new Vue({ new Vue({
+6 -3
View File
@@ -54,7 +54,8 @@ export function showDanger(msg) {
} }
Message({ Message({
message: msg, message: msg,
type: 'error' type: 'error',
showClose: true
}) })
} }
@@ -68,7 +69,8 @@ export function showWarning(msg) {
} }
Message({ Message({
message: msg, message: msg,
type: 'warning' type: 'warning',
showClose: true
}); });
} }
@@ -81,7 +83,8 @@ export function showWarning(msg) {
export function showSuccess(msg) { export function showSuccess(msg) {
Message({ Message({
message: msg, message: msg,
type: 'success' type: 'success',
showClose: true
}) })
} }
+23 -22
View File
@@ -124,31 +124,32 @@ export default {
handleCurrentChange(val) { handleCurrentChange(val) {
this.currentPage = val; this.currentPage = val;
}, },
fetchBindDevices(agentId) { fetchBindDevices(agentId) {
this.loading = true; this.loading = true;
import('@/apis/module/user').then(({ default: userApi }) => { import('@/apis/module/device').then(({ default: deviceApi }) => {
userApi.getAgentBindDevices(agentId, ({ data }) => { deviceApi.getAgentBindDevices(agentId, ({ data }) => {
this.loading = false; this.loading = false;
if (data.code === 0) { if (data.code === 0) {
this.deviceList = data.data[0].list.map(device => ({ this.deviceList = data.data.map(device => ({
device_id: device.id, device_id: device.id,
model: device.device_type, model: device.board,
firmwareVersion: device.app_version, firmwareVersion: device.appVersion,
macAddress: device.mac_address, macAddress: device.macAddress,
lastConversation: device.recent_chat_time, bindTime: device.createDate,
remark: '', lastConversation: device.lastConnectedAt,
isEdit: false, remark: device.alias,
otaSwitch: device.ota_upgrade === 1 isEdit: false,
})); otaSwitch: device.autoUpdate === 1
} else { }));
this.$message.error(data.msg || '获取设备列表失败'); } else {
} this.$message.error(data.msg || '获取设备列表失败');
}); }
}).catch(error => {
console.error('模块加载失败:', error);
this.$message.error('功能模块加载失败');
}); });
}, }).catch(error => {
console.error('模块加载失败:', error);
this.$message.error('功能模块加载失败');
});
},
} }
}; };
</script> </script>