diff --git a/bocai.db b/bocai.db index 8107f70..2d18136 100644 Binary files a/bocai.db and b/bocai.db differ diff --git a/frontend/src/components/index.vue b/frontend/src/components/index.vue index 6daeefe..56cb350 100644 --- a/frontend/src/components/index.vue +++ b/frontend/src/components/index.vue @@ -7,15 +7,21 @@ import * as echarts from 'echarts'; const input1 = ref(''); const input2 = ref(''); +// 登录模态框数据 +const loginDialogVisible = ref(false); +const isLoggedIn = ref(false); +const username = ref('用户名'); +const accountBalance = ref('账户余额'); +const loginForm = ref({ + username: '', + password: '', + loginUrl: 'https://4701268539-esh.qdk63ayw8g.com' +}); +const loginLoading = ref(false); +const loginError = ref(''); + // 表格数据 -const tableData = ref([ - { id: 1, name: '项目1', value: 120, status: '正常' }, - { id: 2, name: '项目2', value: 230, status: '警告' }, - { id: 3, name: '项目3', value: 180, status: '正常' }, - { id: 4, name: '项目4', value: 90, status: '异常' }, - { id: 5, name: '项目5', value: 320, status: '正常' }, - { id: 6, name: '项目6', value: 270, status: '警告' }, -]); +const tableData = ref([]); const tableLoading = ref(false); const tableError = ref(''); @@ -34,21 +40,34 @@ const chart2 = ref(null); // 初始化ECharts图表 function initCharts() { + console.log('开始初始化图表'); + console.log('chart1Ref.value:', chart1Ref.value); + console.log('chart2Ref.value:', chart2Ref.value); + // 初始化图表1 if (chart1Ref.value) { + console.log('初始化图表1'); chart1.value = echarts.init(chart1Ref.value); updateChart1(); } // 初始化图表2 if (chart2Ref.value) { + console.log('初始化图表2'); chart2.value = echarts.init(chart2Ref.value); updateChart2(); } + + console.log('图表初始化完成'); } // 更新图表1 function updateChart1() { + console.log('更新图表1'); + console.log('chart1.value:', chart1.value); + console.log('chartData1.value:', chartData1.value); + console.log('chartLabels.value:', chartLabels.value); + if (!chart1.value) return; const option = { @@ -107,11 +126,18 @@ function updateChart1() { ] }; + console.log('设置图表1选项'); chart1.value.setOption(option); + console.log('图表1更新完成'); } // 更新图表2 function updateChart2() { + console.log('更新图表2'); + console.log('chart2.value:', chart2.value); + console.log('chartData2.value:', chartData2.value); + console.log('chartLabels.value:', chartLabels.value); + if (!chart2.value) return; const option = { @@ -170,7 +196,9 @@ function updateChart2() { ] }; + console.log('设置图表2选项'); chart2.value.setOption(option); + console.log('图表2更新完成'); } // 监听窗口大小变化 @@ -181,31 +209,54 @@ function handleResize() { // 从后端获取折线图数据 async function fetchChartData() { + console.log('开始获取图表数据'); loading.value = true; error.value = ''; try { // 获取折线图1数据 + console.log('获取折线图1数据'); const response1 = await axios.get('http://localhost:8080/api/charts/line1'); + console.log('折线图1数据响应:', response1.data); if (response1.data) { - chartData1.value = response1.data.data; - chartLabels.value = response1.data.labels; + chartData1.value = response1.data.data || chartData1.value; + chartLabels.value = response1.data.labels || chartLabels.value; } // 获取折线图2数据 + console.log('获取折线图2数据'); const response2 = await axios.get('http://localhost:8080/api/charts/line2'); + console.log('折线图2数据响应:', response2.data); if (response2.data) { - chartData2.value = response2.data.data; + chartData2.value = response2.data.data || chartData2.value; } + console.log('图表数据获取完成'); + console.log('chartData1.value:', chartData1.value); + console.log('chartData2.value:', chartData2.value); + console.log('chartLabels.value:', chartLabels.value); + // 更新图表 nextTick(() => { + console.log('更新图表数据'); updateChart1(); updateChart2(); }); } catch (err) { + console.error('获取图表数据失败:', err); error.value = '获取图表数据失败,请刷新页面重试'; - console.error('Error fetching chart data:', err); + // 使用默认数据 + console.log('使用默认数据'); + console.log('默认 chartData1.value:', chartData1.value); + console.log('默认 chartData2.value:', chartData2.value); + console.log('默认 chartLabels.value:', chartLabels.value); + + // 更新图表 + nextTick(() => { + console.log('使用默认数据更新图表'); + updateChart1(); + updateChart2(); + }); } finally { loading.value = false; } @@ -243,6 +294,145 @@ onMounted(() => { window.addEventListener('resize', handleResize); }); +// 处理登录 +async function handleLogin() { + loginError.value = ''; + loginLoading.value = true; + + try { + console.log('登录信息:', loginForm.value); + + // 验证表单 + if (!loginForm.value.username || !loginForm.value.password || !loginForm.value.loginUrl) { + loginError.value = '请填写完整登录信息'; + return; + } + + // 构建登录API地址 + const loginApiUrl = `http://localhost:8080/api/ocr/saveUserInfo`; + console.log('登录API地址:', loginApiUrl); + + // 调用登录API + const response = await axios.post(loginApiUrl, { + username: loginForm.value.username, + password: loginForm.value.password + }); + + // 处理登录结果 + if (response.data && response.data.code === 1) { + // 登录成功 + loginLoading.value = false; + loginDialogVisible.value = false; + isLoggedIn.value = true; + + // 更新用户名和账户余额 + username.value = loginForm.value.username; + accountBalance.value = response.data.balance || '¥10000.00'; + + // 保存登录信息(可选) + if (response.data.token) { + localStorage.setItem('token', response.data.token); + } + + // 重置表单 + loginForm.value = { + username: '', + password: '', + loginUrl: 'https://4701268539-esh.qdk63ayw8g.com' + }; + + console.log('登录成功:', response.data); + } else { + // 登录失败 + loginError.value = response.data.message || '登录失败,请检查输入信息'; + console.error('登录失败:', response.data); + } + + } catch (err) { + loginError.value = '登录失败,请检查网络连接或登录地址'; + console.error('登录失败:', err); + } finally { + loginLoading.value = false; + } +} + +// 处理退出登录 +function handleLogout() { + console.log('退出登录'); + isLoggedIn.value = false; + // 重置用户名和账户余额 + username.value = '用户名'; + accountBalance.value = '账户余额'; + // 清除登录状态 + localStorage.removeItem('token'); + // 这里可以添加其他清理逻辑 + // 1. 清除用户信息 + // 2. 重置相关数据 + // 3. 调用退出登录API(可选) +} + +// 处理确认按钮点击 +async function handleConfirm() { + console.log('确认按钮点击,止盈点:', input1.value, '止亏点:', input2.value); + + // 验证输入 + if (!input1.value || !input2.value) { + alert('请填写完整的止盈止亏点'); + return; + } + + try { + // 构建提交数据 + const submitData = { + winNum: input1.value, + loseNum: input2.value + }; + + console.log('提交数据:', submitData); + + // 调用后端API + const response = await axios.post('http://localhost:8080/api/ocr/saveUserInfo', submitData); + + // 处理响应结果 + if (response.data && response.data.code === 1) { + console.log('提交成功:', response.data); + alert('设置保存成功'); + } else { + console.error('提交失败:', response.data); + alert('设置保存失败: ' + (response.data.message || '未知错误')); + } + + } catch (err) { + console.error('提交失败:', err); + alert('设置保存失败,请检查网络连接'); + } +} + +// 处理停止按钮点击 +async function handleStop() { + console.log('停止按钮点击'); + + try { + // 调用后端停止API + const response = await axios.post('http://localhost:8080/api/ocr/saveUserInfo', { + onOff: 0 + }); + + // 处理响应结果 + if (response.data && response.data.code === 1) { + console.log('停止成功:', response.data); + alert('停止操作成功'); + } else { + console.error('停止失败:', response.data); + alert('停止操作失败: ' + (response.data.message || '未知错误')); + } + + } catch (err) { + console.error('停止失败:', err); + alert('停止操作失败,请检查网络连接'); + } +} + onUnmounted(() => { // 销毁图表 chart1.value?.dispose(); @@ -261,28 +451,65 @@ onUnmounted(() => {