彩票猪手1.1
This commit is contained in:
@@ -2,8 +2,8 @@ import axios from 'axios'
|
|||||||
|
|
||||||
// 创建axios实例
|
// 创建axios实例
|
||||||
const api = axios.create({
|
const api = axios.create({
|
||||||
baseURL: 'http://localhost:8123/api',
|
// baseURL: 'http://localhost:8123/api',
|
||||||
// baseURL: 'https://www.jingcaishuju.com/api',
|
baseURL: 'https://www.jingcaishuju.com/api',
|
||||||
timeout: 300000, // 5分钟超时时间(300秒)
|
timeout: 300000, // 5分钟超时时间(300秒)
|
||||||
withCredentials: true, // 关键:支持跨域携带cookie和session
|
withCredentials: true, // 关键:支持跨域携带cookie和session
|
||||||
headers: {
|
headers: {
|
||||||
|
|||||||
@@ -38,7 +38,6 @@
|
|||||||
@click="formData.level = pos.value"
|
@click="formData.level = pos.value"
|
||||||
>
|
>
|
||||||
<div class="position-title">{{ pos.label }}</div>
|
<div class="position-title">{{ pos.label }}</div>
|
||||||
<div class="position-desc">{{ pos.desc }}</div>
|
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -176,31 +175,12 @@
|
|||||||
|
|
||||||
<!-- 推测期号输入框 -->
|
<!-- 推测期号输入框 -->
|
||||||
<div class="input-section">
|
<div class="input-section">
|
||||||
<label>请输入推测期号:</label>
|
<label>推测期号:</label>
|
||||||
<el-select
|
<el-input
|
||||||
v-model="formData.predictDrawId"
|
v-model="formData.predictDrawId"
|
||||||
placeholder="请选择或输入推测期号"
|
placeholder="自动填充"
|
||||||
filterable
|
disabled
|
||||||
allow-create
|
|
||||||
default-first-option
|
|
||||||
:disabled="!formData.level"
|
|
||||||
clearable
|
|
||||||
class="draw-id-select"
|
class="draw-id-select"
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in predictDrawIdOptions"
|
|
||||||
:key="item"
|
|
||||||
:label="item"
|
|
||||||
:value="item"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
<el-alert
|
|
||||||
v-if="predictDrawIdError"
|
|
||||||
:title="predictDrawIdError"
|
|
||||||
type="error"
|
|
||||||
show-icon
|
|
||||||
:closable="false"
|
|
||||||
style="margin-top: 10px;"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -247,7 +227,7 @@
|
|||||||
<div v-if="analyzedRedBalls.length > 0" class="balls-display">
|
<div v-if="analyzedRedBalls.length > 0" class="balls-display">
|
||||||
<el-alert
|
<el-alert
|
||||||
type="success"
|
type="success"
|
||||||
title="以下是推荐的首球号码"
|
title="彩票猪手为您推荐了11个数据向好的红球,请参考!"
|
||||||
:closable="false"
|
:closable="false"
|
||||||
style="margin-bottom: 15px;"
|
style="margin-bottom: 15px;"
|
||||||
/>
|
/>
|
||||||
@@ -396,7 +376,7 @@
|
|||||||
<div v-if="followAnalyzedBalls.length > 0" class="balls-display">
|
<div v-if="followAnalyzedBalls.length > 0" class="balls-display">
|
||||||
<el-alert
|
<el-alert
|
||||||
type="success"
|
type="success"
|
||||||
title="以下是推荐的随球号码"
|
title="彩票猪手为您推荐了8个数据向好的红球,请参考!"
|
||||||
:closable="false"
|
:closable="false"
|
||||||
style="margin-bottom: 15px;"
|
style="margin-bottom: 15px;"
|
||||||
/>
|
/>
|
||||||
@@ -571,7 +551,7 @@
|
|||||||
<div v-if="analyzedBlueBalls.length > 0" class="balls-display">
|
<div v-if="analyzedBlueBalls.length > 0" class="balls-display">
|
||||||
<el-alert
|
<el-alert
|
||||||
type="success"
|
type="success"
|
||||||
title="以下是推荐的篮球号码:"
|
title="彩票猪手为您推荐了4个数据向好的蓝球,请参考!"
|
||||||
:closable="false"
|
:closable="false"
|
||||||
style="margin-bottom: 15px;"
|
style="margin-bottom: 15px;"
|
||||||
class="blue-ball-alert"
|
class="blue-ball-alert"
|
||||||
@@ -724,12 +704,12 @@
|
|||||||
<!-- 成功提交弹窗 -->
|
<!-- 成功提交弹窗 -->
|
||||||
<el-dialog
|
<el-dialog
|
||||||
v-model="showSuccessModal"
|
v-model="showSuccessModal"
|
||||||
title="推测记录提交成功!"
|
title="本次推测已完成!"
|
||||||
width="500px"
|
width="500px"
|
||||||
center
|
center
|
||||||
>
|
>
|
||||||
<Trophy class="success-icon" />
|
<Trophy class="success-icon" />
|
||||||
<p>您的第{{ formData.predictDrawId }}期推测号码已成功提交,祝您好运!</p>
|
<p>您的第{{ formData.predictDrawId }}期推测号码已完成,祝您好运!</p>
|
||||||
<div class="success-balls">
|
<div class="success-balls">
|
||||||
<div class="success-red-balls">
|
<div class="success-red-balls">
|
||||||
<span class="ball-red">{{ String(formData.firstBall).padStart(2, '0') }}</span>
|
<span class="ball-red">{{ String(formData.firstBall).padStart(2, '0') }}</span>
|
||||||
@@ -845,9 +825,9 @@ export default {
|
|||||||
showFinalBlueBallSelector: false, // 最终蓝球选择弹窗显示状态
|
showFinalBlueBallSelector: false, // 最终蓝球选择弹窗显示状态
|
||||||
steps: ['推测准备', '推测首球', '推测随球', '推测蓝球', '确定推测'],
|
steps: ['推测准备', '推测首球', '推测随球', '推测蓝球', '确定推测'],
|
||||||
positions: [
|
positions: [
|
||||||
{ value: 'H', label: '高位值', desc: '高位投注算法' },
|
{ value: 'H', label: '高区位', desc: '高位投注算法' },
|
||||||
{ value: 'M', label: '中位值', desc: '中位投注算法' },
|
{ value: 'M', label: '中区位', desc: '中位投注算法' },
|
||||||
{ value: 'L', label: '低位值', desc: '低位投注算法' }
|
{ value: 'L', label: '低区位', desc: '低位投注算法' }
|
||||||
],
|
],
|
||||||
formData: {
|
formData: {
|
||||||
level: '',
|
level: '',
|
||||||
@@ -868,7 +848,6 @@ export default {
|
|||||||
agreeToTerms: false, // 用户服务协议勾选状态
|
agreeToTerms: false, // 用户服务协议勾选状态
|
||||||
recentDrawIds: [], // 存储近10期开奖期号
|
recentDrawIds: [], // 存储近10期开奖期号
|
||||||
drawIdOptions: [], // 用于el-select的选项
|
drawIdOptions: [], // 用于el-select的选项
|
||||||
predictDrawIdOptions: [], // 推测期号选项
|
|
||||||
latestDrawId: null // 最新开奖期号
|
latestDrawId: null // 最新开奖期号
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -882,25 +861,13 @@ export default {
|
|||||||
this.loadFormDataFromCache()
|
this.loadFormDataFromCache()
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
predictDrawIdError() {
|
|
||||||
if (this.formData.predictDrawId && this.latestDrawId) {
|
|
||||||
if (parseInt(this.formData.predictDrawId, 10) <= parseInt(this.latestDrawId, 10)) {
|
|
||||||
return `推测期号必须晚于最新开奖期号 ${this.latestDrawId}`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return '';
|
|
||||||
},
|
|
||||||
canProceedStep1() {
|
canProceedStep1() {
|
||||||
const isPredictDrawIdValid = this.formData.predictDrawId &&
|
|
||||||
this.latestDrawId &&
|
|
||||||
parseInt(this.formData.predictDrawId, 10) > parseInt(this.latestDrawId, 10);
|
|
||||||
|
|
||||||
return this.userVerified &&
|
return this.userVerified &&
|
||||||
this.formData.level &&
|
this.formData.level &&
|
||||||
this.formData.drawId &&
|
this.formData.drawId &&
|
||||||
this.formData.lastRedBalls.every(ball => ball !== '') &&
|
this.formData.lastRedBalls.every(ball => ball !== '') &&
|
||||||
this.formData.lastBlueBall &&
|
this.formData.lastBlueBall &&
|
||||||
isPredictDrawIdValid;
|
this.formData.predictDrawId;
|
||||||
},
|
},
|
||||||
canProceedStep2() {
|
canProceedStep2() {
|
||||||
return this.formData.firstBall && this.formData.followBalls.every(ball => ball !== '')
|
return this.formData.firstBall && this.formData.followBalls.every(ball => ball !== '')
|
||||||
@@ -1407,11 +1374,8 @@ export default {
|
|||||||
if (this.recentDrawIds.length > 0) {
|
if (this.recentDrawIds.length > 0) {
|
||||||
this.latestDrawId = this.recentDrawIds[0]
|
this.latestDrawId = this.recentDrawIds[0]
|
||||||
const latestId = parseInt(this.latestDrawId, 10)
|
const latestId = parseInt(this.latestDrawId, 10)
|
||||||
const options = []
|
// 自动设置推测期号为最新一期的下一期
|
||||||
for (let i = 1; i <= 11; i++) {
|
this.formData.predictDrawId = String(latestId + 1)
|
||||||
options.push(String(latestId + i))
|
|
||||||
}
|
|
||||||
this.predictDrawIdOptions = options
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.showMessage('获取期号失败', response.message, 'error')
|
this.showMessage('获取期号失败', response.message, 'error')
|
||||||
@@ -1682,7 +1646,6 @@ export default {
|
|||||||
|
|
||||||
.position-title {
|
.position-title {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
margin-bottom: 8px;
|
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
color: #333;
|
color: #333;
|
||||||
transition: all 0.3s;
|
transition: all 0.3s;
|
||||||
@@ -1754,11 +1717,6 @@ export default {
|
|||||||
box-shadow: 0 4px 12px rgba(33, 150, 243, 0.3) !important;
|
box-shadow: 0 4px 12px rgba(33, 150, 243, 0.3) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.blue-ball-display.selected {
|
|
||||||
background: linear-gradient(135deg, #4caf50, #66bb6a) !important;
|
|
||||||
box-shadow: 0 3px 8px rgba(76, 175, 80, 0.3) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.blue-option {
|
.blue-option {
|
||||||
background: #e3f2fd !important;
|
background: #e3f2fd !important;
|
||||||
color: #1976d2 !important;
|
color: #1976d2 !important;
|
||||||
@@ -1799,11 +1757,6 @@ export default {
|
|||||||
box-shadow: 0 5px 15px rgba(229, 62, 62, 0.4);
|
box-shadow: 0 5px 15px rgba(229, 62, 62, 0.4);
|
||||||
}
|
}
|
||||||
|
|
||||||
.ball-number-display.selected {
|
|
||||||
background: linear-gradient(135deg, #4caf50, #66bb6a);
|
|
||||||
box-shadow: 0 3px 8px rgba(76, 175, 80, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.ball-number-display.disabled {
|
.ball-number-display.disabled {
|
||||||
background: linear-gradient(135deg, #e0e0e0, #bdbdbd);
|
background: linear-gradient(135deg, #e0e0e0, #bdbdbd);
|
||||||
color: #999;
|
color: #999;
|
||||||
@@ -1826,16 +1779,6 @@ export default {
|
|||||||
box-shadow: 0 4px 12px rgba(229, 62, 62, 0.3) !important;
|
box-shadow: 0 4px 12px rgba(229, 62, 62, 0.3) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 红球选中状态 */
|
|
||||||
.red-balls-selector .ball-number-display.selected,
|
|
||||||
.first-ball-selector .ball-number-display.selected,
|
|
||||||
.follow-balls-selector .ball-number-display.selected,
|
|
||||||
.first-ball-display .ball-number-display.selected,
|
|
||||||
.selected-balls-selector .ball-number-display.selected {
|
|
||||||
background: linear-gradient(135deg, #4caf50, #66bb6a) !important;
|
|
||||||
box-shadow: 0 3px 8px rgba(76, 175, 80, 0.3) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 首球选择器样式 */
|
/* 首球选择器样式 */
|
||||||
.first-ball-selector {
|
.first-ball-selector {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -168,7 +168,7 @@
|
|||||||
<div class="table-wrapper">
|
<div class="table-wrapper">
|
||||||
<div class="table-title-row">
|
<div class="table-title-row">
|
||||||
<div class="table-title-cell">
|
<div class="table-title-cell">
|
||||||
<span class="highlight-ball">{{masterBall}}</span>号{{isMasterRed() ? '红' : '蓝'}}球与<span class="highlight-ball">{{slaveBall}}</span>号{{isSlaveRed() ? '红' : '蓝'}}球接续性分析报告
|
<span class="highlight-ball" :class="{ 'blue-text': !isMasterRed() }">{{masterBall}}</span>号{{isMasterRed() ? '红' : '蓝'}}球与<span class="highlight-ball" :class="{ 'blue-text': !isSlaveRed() }">{{slaveBall}}</span>号{{isSlaveRed() ? '红' : '蓝'}}球接续性分析报告
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<table class="analysis-table">
|
<table class="analysis-table">
|
||||||
@@ -178,26 +178,26 @@
|
|||||||
<td class="value-cell">{{resultData[0]?.latestDrawId || '-'}}期</td>
|
<td class="value-cell">{{resultData[0]?.latestDrawId || '-'}}期</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="label-cell">两号接续性系数</td>
|
<td class="label-cell">两号接续系数</td>
|
||||||
<td class="value-cell">{{resultData[0]?.lineCoefficient || '-'}}</td>
|
<td class="value-cell">{{resultData[0]?.lineCoefficient || '-'}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="label-cell">同号组最高系数球号及系数</td>
|
<td class="label-cell">同号组最高系数球号及系数</td>
|
||||||
<td class="value-cell">
|
<td class="value-cell">
|
||||||
<span class="highlight-ball">{{resultData[0]?.highestBall || '--'}}</span>
|
<span class="highlight-ball" :class="{ 'blue-text': !isSlaveRed() }">{{resultData[0]?.highestBall || '--'}}</span>
|
||||||
<span class="coefficient-value">{{resultData[0]?.highestCoefficient || '-'}}</span>
|
<span class="coefficient-value">{{resultData[0]?.highestCoefficient || '-'}}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="label-cell">同号组最低系数球号及系数</td>
|
<td class="label-cell">同号组最低系数球号及系数</td>
|
||||||
<td class="value-cell">
|
<td class="value-cell">
|
||||||
<span class="highlight-ball">{{resultData[0]?.lowestBall || '--'}}</span>
|
<span class="highlight-ball" :class="{ 'blue-text': !isSlaveRed() }">{{resultData[0]?.lowestBall || '--'}}</span>
|
||||||
<span class="coefficient-value">{{resultData[0]?.lowestCoefficient || '-'}}</span>
|
<span class="coefficient-value">{{resultData[0]?.lowestCoefficient || '-'}}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="label-cell">同号组平均系数</td>
|
<td class="label-cell">同号组平均系数</td>
|
||||||
<td class="value-cell">{{resultData[0]?.averageCoefficient || '-'}}</td>
|
<td class="value-cell">{{ (resultData[0]?.averageCoefficient && Number(resultData[0].averageCoefficient).toFixed(2)) || '-' }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="label-cell">建议</td>
|
<td class="label-cell">建议</td>
|
||||||
@@ -689,10 +689,14 @@ export default {
|
|||||||
|
|
||||||
.highlight-ball {
|
.highlight-ball {
|
||||||
color: #e74c3c;
|
color: #e74c3c;
|
||||||
font-weight: normal;
|
font-weight: bold;
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.highlight-ball.blue-text {
|
||||||
|
color: #3498db; /* 蓝色文字 */
|
||||||
|
}
|
||||||
|
|
||||||
.coefficient-value {
|
.coefficient-value {
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
color: #333;
|
color: #333;
|
||||||
|
|||||||
@@ -14,45 +14,45 @@
|
|||||||
<!-- 账号 -->
|
<!-- 账号 -->
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="formData.username"
|
v-model="formData.username"
|
||||||
placeholder="请输入账号"
|
placeholder="请输入账号"
|
||||||
:error="errors.username"
|
:error="errors.username"
|
||||||
prefix-icon="User"
|
prefix-icon="User"
|
||||||
size="large"
|
size="large"
|
||||||
@blur="validateUsername"
|
@blur="validateUsername"
|
||||||
clearable
|
clearable
|
||||||
/>
|
/>
|
||||||
<div v-if="errors.username" class="error-text">{{ errors.username }}</div>
|
<div v-if="errors.username" class="error-text">{{ errors.username }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 昵称 -->
|
<!-- 昵称 -->
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="formData.nickname"
|
v-model="formData.nickname"
|
||||||
placeholder="请输入昵称"
|
placeholder="请输入昵称"
|
||||||
:error="errors.nickname"
|
:error="errors.nickname"
|
||||||
prefix-icon="Avatar"
|
prefix-icon="Avatar"
|
||||||
size="large"
|
size="large"
|
||||||
@blur="validateNickname"
|
@blur="validateNickname"
|
||||||
clearable
|
clearable
|
||||||
/>
|
/>
|
||||||
<div v-if="errors.nickname" class="error-text">{{ errors.nickname }}</div>
|
<div v-if="errors.nickname" class="error-text">{{ errors.nickname }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 手机号 -->
|
<!-- 手机号 -->
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="formData.phone"
|
v-model="formData.phone"
|
||||||
type="tel"
|
type="tel"
|
||||||
placeholder="请输入手机号"
|
placeholder="请输入手机号"
|
||||||
:error="errors.phone"
|
:error="errors.phone"
|
||||||
prefix-icon="Iphone"
|
prefix-icon="Iphone"
|
||||||
size="large"
|
size="large"
|
||||||
maxlength="11"
|
maxlength="11"
|
||||||
@input="validatePhoneInput"
|
@input="validatePhoneInput"
|
||||||
@blur="validatePhoneOnBlur"
|
@blur="validatePhoneOnBlur"
|
||||||
clearable
|
clearable
|
||||||
/>
|
/>
|
||||||
<div v-if="errors.phone" class="error-text">{{ errors.phone }}</div>
|
<div v-if="errors.phone" class="error-text">{{ errors.phone }}</div>
|
||||||
<div v-else-if="formData.phone && formData.phone.length > 0 && formData.phone.length < 11" class="tip-text">请输入11位手机号码</div>
|
<div v-else-if="formData.phone && formData.phone.length > 0 && formData.phone.length < 11" class="tip-text">请输入11位手机号码</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -60,19 +60,19 @@
|
|||||||
<!-- 验证码 -->
|
<!-- 验证码 -->
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="formData.code"
|
v-model="formData.code"
|
||||||
placeholder="请输入验证码"
|
placeholder="请输入验证码"
|
||||||
prefix-icon="Key"
|
prefix-icon="Key"
|
||||||
size="large"
|
size="large"
|
||||||
@blur="validateCode"
|
@blur="validateCode"
|
||||||
>
|
>
|
||||||
<template #append>
|
<template #append>
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
:disabled="codeBtnDisabled"
|
:disabled="codeBtnDisabled"
|
||||||
@click="sendVerificationCode"
|
@click="sendVerificationCode"
|
||||||
>
|
>
|
||||||
{{ codeButtonText }}
|
{{ codeButtonText }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
@@ -82,32 +82,32 @@
|
|||||||
<!-- 密码 -->
|
<!-- 密码 -->
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="formData.password"
|
v-model="formData.password"
|
||||||
placeholder="请输入密码"
|
placeholder="请输入密码"
|
||||||
:error="errors.password"
|
:error="errors.password"
|
||||||
prefix-icon="Lock"
|
prefix-icon="Lock"
|
||||||
size="large"
|
size="large"
|
||||||
:type="showPassword ? 'text' : 'password'"
|
:type="showPassword ? 'text' : 'password'"
|
||||||
:show-password="true"
|
:show-password="true"
|
||||||
autocomplete="new-password"
|
autocomplete="new-password"
|
||||||
@blur="validatePassword"
|
@blur="validatePassword"
|
||||||
/>
|
/>
|
||||||
<div v-if="errors.password" class="error-text">{{ errors.password }}</div>
|
<div v-if="errors.password" class="error-text">{{ errors.password }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 确认密码 -->
|
<!-- 确认密码 -->
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="formData.confirmPassword"
|
v-model="formData.confirmPassword"
|
||||||
placeholder="请确认密码"
|
placeholder="请确认密码"
|
||||||
:error="errors.confirmPassword"
|
:error="errors.confirmPassword"
|
||||||
prefix-icon="Lock"
|
prefix-icon="Lock"
|
||||||
size="large"
|
size="large"
|
||||||
:type="showConfirmPassword ? 'text' : 'password'"
|
:type="showConfirmPassword ? 'text' : 'password'"
|
||||||
:show-password="true"
|
:show-password="true"
|
||||||
autocomplete="new-password"
|
autocomplete="new-password"
|
||||||
@blur="validateConfirmPassword"
|
@blur="validateConfirmPassword"
|
||||||
/>
|
/>
|
||||||
<div v-if="errors.confirmPassword" class="error-text">{{ errors.confirmPassword }}</div>
|
<div v-if="errors.confirmPassword" class="error-text">{{ errors.confirmPassword }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -65,6 +65,14 @@
|
|||||||
|
|
||||||
<!-- 号码选择和分析区域 -->
|
<!-- 号码选择和分析区域 -->
|
||||||
<el-card v-if="analysisType" class="analysis-container" shadow="never">
|
<el-card v-if="analysisType" class="analysis-container" shadow="never">
|
||||||
|
<el-alert
|
||||||
|
v-if="selectionError"
|
||||||
|
:title="selectionError"
|
||||||
|
type="warning"
|
||||||
|
show-icon
|
||||||
|
@close="selectionError = null"
|
||||||
|
style="margin-bottom: 20px;"
|
||||||
|
/>
|
||||||
<div class="number-selection">
|
<div class="number-selection">
|
||||||
<h3>{{ getSelectionTitle() }}</h3>
|
<h3>{{ getSelectionTitle() }}</h3>
|
||||||
|
|
||||||
@@ -153,7 +161,7 @@
|
|||||||
<div class="table-wrapper">
|
<div class="table-wrapper">
|
||||||
<div class="table-title-row">
|
<div class="table-title-row">
|
||||||
<div class="table-title-cell">
|
<div class="table-title-cell">
|
||||||
<span class="highlight-ball">{{masterBall}}</span>号{{isMasterRed() ? '红' : '蓝'}}球与<span class="highlight-ball">{{slaveBall}}</span>号{{isSlaveRed() ? '红' : '蓝'}}球组合性分析报告
|
<span class="highlight-ball" :class="{ 'blue-text': !isMasterRed() }">{{masterBall}}</span>号{{isMasterRed() ? '红' : '蓝'}}球与<span class="highlight-ball" :class="{ 'blue-text': !isSlaveRed() }">{{slaveBall}}</span>号{{isSlaveRed() ? '红' : '蓝'}}球组合性分析报告
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<table class="analysis-table">
|
<table class="analysis-table">
|
||||||
@@ -163,26 +171,26 @@
|
|||||||
<td class="value-cell">{{resultData[0]?.latestDrawId || '-'}}期</td>
|
<td class="value-cell">{{resultData[0]?.latestDrawId || '-'}}期</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="label-cell">两号组合性系数</td>
|
<td class="label-cell">两号组合系数</td>
|
||||||
<td class="value-cell">{{resultData[0]?.faceCoefficient || '-'}}</td>
|
<td class="value-cell">{{resultData[0]?.faceCoefficient || '-'}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="label-cell">同号组最高系数球号及系数</td>
|
<td class="label-cell">同号组最高系数球号及系数</td>
|
||||||
<td class="value-cell">
|
<td class="value-cell">
|
||||||
<span class="highlight-ball">{{resultData[0]?.highestBall || '--'}}</span>
|
<span class="highlight-ball" :class="{ 'blue-text': !isSlaveRed() }">{{resultData[0]?.highestBall || '--'}}</span>
|
||||||
<span class="coefficient-value">{{resultData[0]?.highestCoefficient || '-'}}</span>
|
<span class="coefficient-value">{{resultData[0]?.highestCoefficient || '-'}}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="label-cell">同号组最低系数球号及系数</td>
|
<td class="label-cell">同号组最低系数球号及系数</td>
|
||||||
<td class="value-cell">
|
<td class="value-cell">
|
||||||
<span class="highlight-ball">{{resultData[0]?.lowestBall || '--'}}</span>
|
<span class="highlight-ball" :class="{ 'blue-text': !isSlaveRed() }">{{resultData[0]?.lowestBall || '--'}}</span>
|
||||||
<span class="coefficient-value">{{resultData[0]?.lowestCoefficient || '-'}}</span>
|
<span class="coefficient-value">{{resultData[0]?.lowestCoefficient || '-'}}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="label-cell">同号组平均系数</td>
|
<td class="label-cell">同号组平均系数</td>
|
||||||
<td class="value-cell">{{resultData[0]?.averageCoefficient || '-'}}</td>
|
<td class="value-cell">{{ (resultData[0]?.averageCoefficient && Number(resultData[0].averageCoefficient).toFixed(2)) || '-' }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="label-cell">建议</td>
|
<td class="label-cell">建议</td>
|
||||||
@@ -287,7 +295,8 @@ export default {
|
|||||||
slaveBall: null,
|
slaveBall: null,
|
||||||
loading: false,
|
loading: false,
|
||||||
result: null,
|
result: null,
|
||||||
error: null
|
error: null,
|
||||||
|
selectionError: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -331,6 +340,7 @@ export default {
|
|||||||
this.slaveBall = null
|
this.slaveBall = null
|
||||||
this.result = null
|
this.result = null
|
||||||
this.error = null
|
this.error = null
|
||||||
|
this.selectionError = null
|
||||||
},
|
},
|
||||||
|
|
||||||
getSelectionTitle() {
|
getSelectionTitle() {
|
||||||
@@ -383,15 +393,25 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
selectMasterBall(num) {
|
selectMasterBall(num) {
|
||||||
|
if (this.analysisType === 'red-red' && num === this.slaveBall) {
|
||||||
|
this.selectionError = '主球和随球不能是同一个号码'
|
||||||
|
return
|
||||||
|
}
|
||||||
this.masterBall = num
|
this.masterBall = num
|
||||||
this.result = null
|
this.result = null
|
||||||
this.error = null
|
this.error = null
|
||||||
|
this.selectionError = null
|
||||||
},
|
},
|
||||||
|
|
||||||
selectSlaveBall(num) {
|
selectSlaveBall(num) {
|
||||||
|
if (this.analysisType === 'red-red' && num === this.masterBall) {
|
||||||
|
this.selectionError = '主球和随球不能是同一个号码'
|
||||||
|
return
|
||||||
|
}
|
||||||
this.slaveBall = num
|
this.slaveBall = num
|
||||||
this.result = null
|
this.result = null
|
||||||
this.error = null
|
this.error = null
|
||||||
|
this.selectionError = null
|
||||||
},
|
},
|
||||||
|
|
||||||
async performAnalysis() {
|
async performAnalysis() {
|
||||||
@@ -765,7 +785,12 @@ export default {
|
|||||||
|
|
||||||
.highlight-ball {
|
.highlight-ball {
|
||||||
color: #e74c3c; /* 红色文字 */
|
color: #e74c3c; /* 红色文字 */
|
||||||
font-weight: normal;
|
font-weight: bold;
|
||||||
|
margin-right: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-ball.blue-text {
|
||||||
|
color: #3498db; /* 蓝色文字 */
|
||||||
}
|
}
|
||||||
|
|
||||||
.coefficient-value {
|
.coefficient-value {
|
||||||
|
|||||||
Reference in New Issue
Block a user