更改
This commit is contained in:
+8
-153
@@ -1,160 +1,15 @@
|
||||
<template>
|
||||
<div class="container">
|
||||
<el-card class="box-card">
|
||||
<template #header>
|
||||
<div class="card-header">
|
||||
<span>📈 股票涨停回落分析工具</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<div class="filter-bar">
|
||||
<el-form :inline="true">
|
||||
<el-form-item label="开始日期">
|
||||
<el-date-picker
|
||||
v-model="startDate"
|
||||
type="date"
|
||||
placeholder="请选择"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
:disabled-date="disabledStartDate"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="结束日期">
|
||||
<el-date-picker
|
||||
v-model="endDate"
|
||||
type="date"
|
||||
placeholder="请选择"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
:disabled-date="disabledEndDate"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="handleSearch"
|
||||
:loading="loading"
|
||||
icon="Search"
|
||||
>
|
||||
查询分析
|
||||
</el-button>
|
||||
<el-button @click="resetFilter">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<el-table
|
||||
:data="tableData"
|
||||
style="width: 100%; margin-top: 10px"
|
||||
v-loading="loading"
|
||||
stripe
|
||||
:default-sort="{ prop: 'drop_pct', order: 'descending' }"
|
||||
>
|
||||
<el-table-column prop="code" label="代码" width="100" />
|
||||
<el-table-column prop="name" label="名称" width="120" />
|
||||
<el-table-column prop="day_open" label="当日开盘" />
|
||||
<el-table-column prop="max_high" label="区间最高" sortable />
|
||||
<el-table-column prop="max_date" label="最高日期" width="120" />
|
||||
<el-table-column prop="post_min_low" label="见顶后最低" />
|
||||
|
||||
<el-table-column prop="drop_pct" label="最大回落幅%" sortable>
|
||||
<template #default="scope">
|
||||
<b style="color: #f56c6c">{{ scope.row.drop_pct?.toFixed(2) }}%</b>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="rebound_pct" label="低位反弹%" sortable>
|
||||
<template #default="scope">
|
||||
<span
|
||||
:style="{
|
||||
color: scope.row.rebound_pct > 0 ? '#67c23a' : '#909399',
|
||||
}"
|
||||
>
|
||||
{{ scope.row.rebound_pct?.toFixed(2) }}%
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
</div>
|
||||
<router-view />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from "vue";
|
||||
import axios from "axios";
|
||||
import { ElMessage } from "element-plus";
|
||||
|
||||
// 1. 将范围数组拆分为两个独立状态
|
||||
const startDate = ref("2024-09-24");
|
||||
const endDate = ref("2026-04-23");
|
||||
const tableData = ref([]);
|
||||
const loading = ref(false);
|
||||
|
||||
// 2. 逻辑约束:开始日期不能晚于结束日期
|
||||
const disabledStartDate = (time) => {
|
||||
if (!endDate.value) return false;
|
||||
return time.getTime() > new Date(endDate.value).getTime();
|
||||
};
|
||||
|
||||
// 3. 逻辑约束:结束日期不能早于开始日期
|
||||
const disabledEndDate = (time) => {
|
||||
if (!startDate.value) return false;
|
||||
return time.getTime() < new Date(startDate.value).getTime();
|
||||
};
|
||||
|
||||
// 重置功能
|
||||
const resetFilter = () => {
|
||||
startDate.value = "";
|
||||
endDate.value = "";
|
||||
};
|
||||
|
||||
const handleSearch = async () => {
|
||||
// 校验非空
|
||||
if (!startDate.value || !endDate.value) {
|
||||
ElMessage.warning("请完整选择开始和结束日期");
|
||||
return;
|
||||
}
|
||||
|
||||
loading.value = true;
|
||||
try {
|
||||
const response = await axios.get(
|
||||
"http://localhost:18080/api/v1/stock/analyze",
|
||||
{
|
||||
params: {
|
||||
start_date: startDate.value,
|
||||
end_date: endDate.value,
|
||||
},
|
||||
},
|
||||
);
|
||||
tableData.value = response.data;
|
||||
ElMessage.success(`查询成功,共计 ${tableData.value.length} 条记录`);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
ElMessage.error("获取数据失败,请检查后端服务");
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
};
|
||||
// 全局入口,无需额外逻辑
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.container {
|
||||
padding: 20px;
|
||||
background-color: #f5f7fa;
|
||||
min-height: 100vh;
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
background-color: #f0f2f5;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
}
|
||||
.card-header {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.filter-bar {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
/* 调整表单间距 */
|
||||
:deep(.el-form-item) {
|
||||
margin-right: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
Reference in New Issue
Block a user