You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1289 lines
45 KiB

<template>
<div class="rightClass">
<el-row :gutter="8">
<el-col :span="9">
<el-card style="height: 100%;">
<template #header>
<span>原始文本</span>
<el-button type="primary" @click="zhantie" text style="float: right;margin-top: -7px;">粘贴</el-button>
</template>
<div>
<el-input v-model="leftText" :rows="rowLines" type="textarea" :placeholder="placeholderLeftText" />
</div>
<template #footer>
<div style="text-align: center;">
<!-- <el-button text type="primary" @click="extractTcNumbers">体福</el-button> -->
<el-button text type="primary" @click="leftTongji">统计</el-button>
<el-button text type="danger" @click="leftClear">清空</el-button>
<el-button text type="success" @click="setFuwufei">服务费</el-button>
</div>
</template>
</el-card>
</el-col>
<el-col :span="6">
<el-card style="height: 100%;">
<template #header>
<span>代理人列表</span>
</template>
<div :style="`height: ${tableHeight}px;`">
<el-auto-resizer>
<template #default="{ height, width }">
<el-table-v2 ref="tableRef" :columns="headerList" :data="dailishangList" :width="width"
:height="height + 50" fixed>
<!-- 超出显示的内容 可以不要,会自动有原生的 -->
<template #row="{ rowData }">
<div v-bind="rowData" @click="checkRow(rowData)"
:class="rowData.check ? 'cellChecked everyCell' : 'everyCell'">
<span> {{ rowData.name }}{{ rowData.dailifei ? `(${rowData.dailifei}%)` : "(0%)" }}</span>
</div>
</template>
</el-table-v2>
</template>
</el-auto-resizer>
</div>
<el-select-v2 v-model="changciValue" :options="changciList" size="large" />
<template #footer>
<div style="text-align: center;">
<!-- <el-button type="danger" @click="minYuce">预测</el-button>
<el-button type="danger" @click="midTongji">统计</el-button> -->
<el-button text type="danger" @click="midTongji">预测</el-button>
<el-button text type="danger" @click="midClear">清空</el-button>
</div>
</template>
</el-card>
</el-col>
<el-col :span="9">
<el-card style="height: 100%;">
<template #header>
<span>{{ resultTitle }}&nbsp;</span>
</template>
<div>
<el-input v-model="rightText" :rows="rowLines" type="textarea" disabled placeholder="请点击左侧的统计数据" />
</div>
<template #footer>
<div style="text-align: center;">
<el-button text type="danger" @click="rightClear">清空</el-button>
</div>
</template>
</el-card>
</el-col>
</el-row>
</div>
<el-dialog v-model="dialogForm.visible" width="70%">
<template #header>
<div class="my-header">
<h4>{{ dialogForm.title }} <el-button text @click="jietu" style="margin-top:-7px ;float: right;">截图</el-button>
</h4>
</div>
</template>
<div>
<screen-short v-if="screenshotStatus" @get-image-data="getImg" @destroy-component="destroyComponent">
</screen-short>
<el-descriptions :title="checkDailishangRaw.name" direction="vertical" :column="7" size="large" border>
<el-descriptions-item>
<template #label>
<div class="cell-item">
开奖
</div>
</template>
{{ selectChangci.jiangxiang }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="cell-item">
总押注
</div>
</template>
{{ tongjiValue || 0 }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="cell-item">
代理费
</div>
</template>
{{ (((tongjiValue || 0) * (checkDailishangRaw.dailifei || 0)) / 100).toFixed(2) }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="cell-item">
中奖数
</div>
</template>
{{ zhongjiangshucount }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="cell-item">
中奖赔付
</div>
</template>
{{
zhongjiangshuTotal - Number((((tongjiValue || 0) * (checkDailishangRaw.dailifei || 0)) /
100).toFixed(2)) - Number(((tongjiValue * (fuwufei.fuwufeiValue || 0)) / 100).toFixed(2))
}}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="cell-item">
服务费
</div>
</template>
{{ ((tongjiValue * (fuwufei.fuwufeiValue || 0)) / 100).toFixed(2) }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="cell-item">
输赢
</div>
</template>
{{ ((tongjiValue || 0) - Number((((tongjiValue || 0) * ((checkDailishangRaw.dailifei || 0))) /
100).toFixed(2)) - zhongjiangshuTotal
- Number(((tongjiValue * (fuwufei.fuwufeiValue || 0)) / 100).toFixed(2))).toFixed(2)
}}
</el-descriptions-item>
</el-descriptions>
<!-- <el-descriptions :title="selectChangci.title" direction="vertical" :column="6" size="large" border>
<el-descriptions-item>
<template #label>
<div class="cell-item">
代理商姓名
</div>
</template>
{{ checkDailishangRaw.name }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="cell-item">
代理费(%)
</div>
</template>
{{ checkDailishangRaw.dailifei || 0 }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="cell-item">
联系方式
</div>
</template>
{{ checkDailishangRaw.phone }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="cell-item">
总金额
</div>
</template>
{{ _.sum(_.values(this.dataObj)) }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="cell-item">
代理费
</div>
</template>
{{ ((_.sum(_.values(this.dataObj)) * ((checkDailishangRaw.dailifei || 0))) / 100).toFixed(2) }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="cell-item">
剩余金额
</div>
</template>
{{ ((_.sum(_.values(this.dataObj)) * (100 - (checkDailishangRaw.dailifei || 0))) / 100).toFixed(2) }}
</el-descriptions-item>
</el-descriptions> -->
</div>
<template #footer>
<div class="dialog-footer">
<el-button text @click="closeDialog">关闭</el-button>
</div>
</template>
</el-dialog>
<el-dialog v-model="fuwufei.visible" title="设置服务费">
<div>
<span>服务费设置:</span>
<el-input-number v-model="fuwufei.fuwufeiValue" :min="0" :max="100">
<template #decrease-icon>
<el-icon>
<ArrowDown />
</el-icon>
</template>
<template #increase-icon>
<el-icon>
<ArrowUp />
</el-icon>
</template>
</el-input-number>
</div>
<template #footer>
<div class="dialog-footer">
<el-button text @click="submitFuwufei">确认</el-button>
<el-button text @click="closeFuwufei">关闭</el-button>
</div>
</template>
</el-dialog>
</template>
<script>
import _ from 'lodash'
import { myDatabase } from '../assets/js/db.js'
import dayjs from 'dayjs'
import { ElMessage, ElMessageBox } from 'element-plus'
export default {
name: 'shujufenxi',
components: {},
data() {
return {
_: _,
dayjs: dayjs,
leftText: "",
placeholderLeftText:
`一单一组:684,784,876共12
单:784,961,637共6元
组:214,315共4元
组六:1269共10元
组六:12069共10元
组六:120769共10元
组三:874共10元
毒:6共10元
双飞:98共10元
定位:324共10元
全包对子:共10元
`,
// leftText: `一单一组:684,784,876共12
// 单:784,961,637共6
// 组:214,315共4
// 组六:1269共10
// 组六:12069共10
// 组六:120769共10
// 组三:874共10
// 毒:6
// 双飞:98共10
// 定位:324共共10
// 全包对子:共10元`,
rightText: "",
resultTitle: "",
changciList: [],
changciValue: "",
headerList: [],
dailishangList: [],
dialogForm: {
visible: false,
title: "统计",
},
checkDailishangRaw: {},
selectChangci: {},
dataObj: {},
zhongjiangshu: {},
zhongjiangshucount: 0,
zhongjiangshuTotal: 0,
tongjiValue: 0,
tableHeight: 500,
rowLines: 24,
fuwufei: {
visible: false,
fuwufeiValue: 0,
},
form: {},
formLocal: {
caipiaotype: "1",
danxuan: 900,
zuxuan: 150,
shuangfei: 15,
dudan: 3.3,
dingwei1: 9,
dingwei2: 80,
budingwei: 0,
fushi: 150,
quanbaoduizi: 3.3,
zuliu4: 35,
zuliu5: 15,
zuliu6: 7,
zuliu7: 4,
zusan4: 24,
zusan5: 15,
zusan6: 8,
zusan7: 6,
// bai: 0,
// shi: 0,
// ge: 0
},
screenshotStatus: false,
yidanyizu: /一单一组[:|:]*([\d,.\s]+)(?=合计|共*)/,
yizuliu: /组六[:|:]*([\d,.\s]+)(?=合计|共*)/,
yizusan: /组三[:|:]*([\d,.\s]+)(?=合计|共*)/,
yidu: /毒[:|:]*([\d,.\s]+)(?=合计|共*)/,
yishuangfei: /双飞[:|:]*([\d,.\s]+)(?=合计|共*)/,
yidingwei: /定位[:|:]*([\d,.\s]+)(?=合计|共*)/,
yibudingwei: /不定位[:|:]*([\d,.\s]+)(?=合计|共*)/,
yifushi: /复式[:|:]*([\d,.\s]+)(?=合计|共*)/,
yiquanbaoduizi: /全包对子/,
yidan: /单[:|:]*([\d,.\s]+)(?=合计|共*)/,
yizu: /组[:|:]*([\d,.\s]+)(?=合计|共*)/,
jine: /[合计|共]+(\d+)元*/
}
},
watch: {},
computed: {},
async mounted() {
await this.init()
// 获取窗口高度
let height = document.documentElement.clientHeight
},
methods: {
// 初始化
async init() {
await this.getChangci()
await this.getDailishang()
this.fuwufei.fuwufeiValue = localStorage.getItem("fuwufei") || 0
let height = document.documentElement.clientHeight
this.tableHeight = height - 224
// 根据高度设置行数
this.rowLines = Math.ceil((height - 200) / 21)
},
// 获取场次数据
async getChangci() {
this.changciList = []
let changciListRes = await myDatabase.changci.toArray()
for (let i = 0; i < changciListRes.length; i++) {
let element = changciListRes[i];
this.changciList.push({
label: element.xuhao,
xuhao: element.xuhao,
value: element.id,
first: element.first,
second: element.second,
third: element.third,
title: `${element.xuhao}:${element.first}-${element.second}-${element.third}`,
jiangxiang: `${element.first}-${element.second}-${element.third}`
})
}
},
// 获取代理人数据
async getDailishang() {
let checkRaw = _.cloneDeep(_.find(this.dailishangList, { check: true }))
this.dailishangList = []
let dalishangListRes = await myDatabase.dailishang.toArray()
for (let i = 0; i < dalishangListRes.length; i++) {
let element = dalishangListRes[i];
this.dailishangList.push({
name: element.name,
check: (checkRaw || {}).id === element.id,
dailifei: element.dailifei,
phone: element.phone,
id: element.id,
})
}
},
// 粘贴
async zhantie() {
let text = await navigator.clipboard.readText()
this.leftText = text
},
// 清空选中数据
clearCheck() {
for (let i = 0; i < this.dailishangList.length; i++) {
let element = this.dailishangList[i];
element.check = false
}
},
// 选中数据
checkRow(rowData) {
this.clearCheck()
rowData.check = !rowData.check
},
// 左侧统计数据
leftTongji() {
// 按照换行符分割
let leftTextArr = this.leftText.split("\n")
// 将分割后的每个字符串剔除含有日期的字符串和带退的行
leftTextArr = leftTextArr.filter(item => { return !(item.match(/\d{2}:\d{2}:\d{2}/g) || item.includes("退")) })
// 将剩下的字符串末尾最多两个汉字的最后一个数字取出
leftTextArr = leftTextArr.map(item => {
let lastNum = item.match(/\d+[\u4e00-\u9fa5]{0,2}$/)
if (lastNum) {
return Number(parseFloat(lastNum[0]))
}
})
leftTextArr = _.compact(leftTextArr)
this.rightText = _.sum(leftTextArr)
this.tongjizhongjiang()
return this.rightText
// let lastNum = (this.leftText.match(/\d+/g) || []).pop()
// this.rightText = (Number(this.rightText || 0) + Number(lastNum || 0)) || 0
},
// 左侧清空数据
leftClear() {
this.leftText = ""
},
// 中间预测
minYuce() {
if (!this.changciValue) {
ElMessage.error("请选择场次")
return
}
// let checkedList = this.dailishangList.filter(item => item.check)
// if (!checkedList.length) {
// ElMessage.error("请选择代理人")
// return
// }
let changciRow = this.changciList.find(item => item.value == this.changciValue)
// 替换所有的中文:为英文:
let dataObj = this.dealLeftData(changciRow)
this.rightText = this.jsonToTextLines(dataObj).join('\n') || "无"
},
// 统计中间数据
tongjizhongjiang() {
// 按照换行符分割
let leftTextArr = this.leftText.split("\n")
// 将分割后的每个字符串剔除含有日期的字符串和带退的行
leftTextArr = leftTextArr.filter(item => { return !(item.match(/\d{2}:\d{2}:\d{2}/g) || item.includes("退")) })
// 将剩下的字符串末尾最多两个汉字的最后一个数字取出
let dataObj = {}
leftTextArr = leftTextArr.map(item => {
let itemStr = item.replaceAll(":", ":")
// 以:或者:分割
let itemArr = _.split(itemStr, ":")
if (itemArr.length > 1) {
let lastNum = itemArr[1].match(/\d+[\u4e00-\u9fa5]{0,2}$/)
if (lastNum) {
dataObj[itemArr[0]] = Number(parseFloat(lastNum[0]))
return Number(parseFloat(lastNum[0]))
}
}
})
leftTextArr = _.compact(leftTextArr)
this.zhongjiangshu = dataObj
},
dealLeftData(changciRow) {
let leftTextTemp = this.leftText.replaceAll(":", ":")
let extraList = this.extractNumbers(changciRow.first || 0, changciRow.second || 0, changciRow.third || 0, leftTextTemp)
let dataList = []
let dataObj = {}
for (let i = 0; i < extraList.length; i++) {
let element = extraList[i];
let spitArr = element.split(":")
dataList.push({
key: spitArr[0],
value: Number(spitArr[1])
})
}
let groupData = _.groupBy(dataList, "key")
for (let key in groupData) {
let value = groupData[key]
dataObj[key] = Number(_.sumBy(value, "value"))
}
return dataObj
},
// 中间统计
midTongji() {
if (!this.changciValue) {
ElMessage.error("请选择场次")
return
}
let checkedList = this.dailishangList.filter(item => item.check)
if (!checkedList.length) {
ElMessage.error("请选择代理人")
return
}
if (!this.leftText) {
ElMessage.error("请填写内容后预测")
return
}
this.checkDailishangRaw = _.find(this.dailishangList, { check: true })
this.selectChangci = _.find(this.changciList, { value: this.changciValue })
// this.tongjiValue = this.leftTongji()
this.extractTcNumbers()
// this.zhongjiangshuTotal = Number(this.zhongjiangshu[this.selectChangci.first] || 0) + Number(this.zhongjiangshu[this.selectChangci.second] || 0) + Number(this.zhongjiangshu[this.selectChangci.third] || 0)
this.dialogForm.visible = true
},
// 设置服务费
setFuwufei() {
this.fuwufei.visible = true
this.fuwufei.fuwufeiValue = localStorage.getItem("fuwufei") || 0
},
// 确认服务费
submitFuwufei() {
localStorage.setItem("fuwufei", this.fuwufei.fuwufeiValue)
this.closeFuwufei()
},
// 取消设置
closeFuwufei() {
this.fuwufei.visible = false
},
// 关闭弹窗
closeDialog() {
this.dialogForm.visible = false
this.checkDailishangRaw = {}
this.selectChangci = {}
this.dataObj = {}
},
// 中间清空数据
midClear() {
this.changciValue = ""
this.clearCheck()
},
// 右侧清空数据
rightClear() {
this.rightText = ""
},
// 提取数字
extractNumbers(key1, key2, key3, str) {
let timeRegex = /\b\d{2}:\d{2}:\d{2}\b/g;
let strTemp = str.replaceAll(timeRegex, '');
let keys = [key1, key2, key3].filter(key => key !== undefined).join('|');
let regex = new RegExp(`(?<![\\d])(${keys})[:∶]\\d+`, 'g')
// 执行匹配
let matches = strTemp.match(regex);
// 如果没有找到匹配项,则返回空数组
return matches || [];
},
// 将 JSON 对象转换为文本行
jsonToTextLines(jsonObj) {
// 将 JSON 对象转换为文本行
function convert(obj, prefix = '') {
if (typeof obj === 'object' && obj !== null) {
let lines = [];
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
let value = obj[key];
let newPrefix = prefix ? `${prefix}.${key}` : key;
lines = lines.concat(convert(value, newPrefix));
}
}
return lines;
} else {
return [`${prefix}: ${obj}`];
}
}
return convert(jsonObj);
},
jietu() {
this.screenshotStatus = true;//显示截图插件
},
//截图按了√以后生成64编码
async getImg(base64) {
let uploadlist = []
let image = new Image();
let that = this
image.src = base64;
image.onload = () => {
let canvas = convertImageToCanvas(image);
let url = canvas.toDataURL('image/jpeg');
let name = that.guid();
uploadlist.push({ image: url, name: name });
};
},
//生成文件唯一编码作为name 方便后续删除图片时查找对象
guid() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
let r = (Math.random() * 16) | 0,
v = c == 'x' ? r : (r & 0x3) | 0x8;
return v.toString(16);
});
},
//取消截图 显示弹窗 隐藏截图插件
destroyComponent() {
this.screenshotStatus = false;
},
// 提取体彩和福彩的数字和金额
extractTcNumbers() {
if (!this.changciValue) {
ElMessage.error("请选择场次")
return
}
let checkedList = this.dailishangList.filter(item => item.check)
if (!checkedList.length) {
ElMessage.error("请选择代理人")
return
}
if (!this.leftText) {
ElMessage.error("请填写内容后预测")
return
}
let formData = JSON.parse(localStorage.getItem('peifu') || "{}")
if (_.isEmpty(formData)) {
formData = this.formLocal
} else {
formData = { ...this.formLocal, ...formData }
}
let haomaList = []
// 按照换行符分割
let leftTextArr = this.leftText.split("\n")
// 将分割后的每个字符串剔除含有日期的字符串和带退的行
leftTextArr = leftTextArr.filter(item => { return !(item.match(/\d{2}:\d{2}:\d{2}/g) || item.includes("退")) })
// 将剩下的字符串末尾最多两个汉字的最后一个数字取出
// yidanyizu: /一单一组[:|:]*([\d,.\s]+)(?=合计|共*)/,
// yizuliu: /1组六[:|:]*([\d,.\s]+)(?=合计|共*)/,
// yizusan: /1组三[:|:]*([\d,.\s]+)(?=合计|共*)/,
// yidu: /1毒[:|:]*([\d,.\s]+)(?=合计|共*)/,
// yishuangfei: /1双飞[:|:]*([\d,.\s]+)(?=合计|共*)/,
// yidingwei: /1定位[:|:]*([\d,.\s]+)(?=合计|共*)/,
// yibudingwei: /1不定位[:|:]*([\d,.\s]+)(?=合计|共*)/,
// yifushi: /1复式[:|:]*([\d,.\s]+)(?=合计|共*)/,
// yiquanbaoduizi: /1全包对子[:|:]*([\d,.\s]+)(?=合计|共*)/,
// yidan: /1单[:|:]*([\d,.\s]+)(?=合计|共*)/,
// yizu: /1组[:|:]*([\d,.\s]+)(?=合计|共*)/,
// jine: /[合计|共]+(\d+)元*/
for (let i = 0; i < leftTextArr.length; i++) {
let item = leftTextArr[i];
let type = "体彩"
if (item.includes("福彩")) {
type = "福彩"
}
let jine = item.match(this.jine)
if (jine) {
jine = Number(jine[1])
} else {
continue
}
let haoma = []
// 一单一组
if (item.match(this.yidanyizu)) {
let match = item.match(this.yidanyizu)
let numbers = match[1].replace(/\s+/g, '').replace(/[,\.]+/g, ',');
haoma = _.compact(_.split(numbers, ","))
let danxuanList = []
let zuxuanList = []
for (let j = 0; j < haoma.length; j++) {
let numberItem = haoma[j];
danxuanList.push({
type: "danxuan",
value: [`${numberItem}`],
jine: (jine / 2) / (haoma.length)
})
zuxuanList.push({
type: "zuxuan",
value: [`${numberItem}`],
jine: (jine / 2) / (haoma.length)
})
}
haomaList.push({
type: type,
name: "1单",
numbers: danxuanList,
})
haomaList.push({
type: type,
name: "1组",
numbers: zuxuanList,
})
}
// 1组六
else if (item.match(this.yizuliu)) {
let match = item.match(this.yizuliu)
let numbers = match[1].replace(/\s+/g, '').replace(/[,\.]+/g, ',');
haoma = _.compact(_.split(numbers, ","))
let groupBy = _.groupBy(haoma, o => { return `${o}`.length });
for (let key in groupBy) {
haomaList.push({
type: type,
name: `1组六${key}`,
numbers: [{
type: `zuliu${key}`,
value: groupBy[key],
jine: (jine / haoma.length) * (groupBy[key].length)
}],
})
}
}
// 1组三
else if (item.match(this.yizusan)) {
let match = item.match(this.yizusan)
let numbers = match[1].replace(/\s+/g, '').replace(/[,\.]+/g, ',');
haoma = _.compact(_.split(numbers, ","))
let groupBy = _.groupBy(haoma, o => { return `${o}`.length });
for (let key in groupBy) {
haomaList.push({
type: type,
name: `1组三${key}`,
numbers: [{
type: `zusan${key}`,
value: groupBy[key],
jine: (jine / haoma.length) * (groupBy[key].length)
}],
})
}
}
// 1毒
else if (item.match(this.yidu)) {
let match = item.match(this.yidu)
let numbers = match[1].replace(/\s+/g, '').replace(/[,\.]+/g, ',');
haoma = _.compact(_.split(numbers, ","))
let duslist = []
for (let j = 0; j < haoma.length; j++) {
let numberItem = haoma[j];
duslist.push({
type: "dudan",
value: [`${numberItem}`],
jine: jine / (haoma.length)
})
}
haomaList.push({
type: type,
name: "1毒",
numbers: duslist,
})
}
// 1双飞
else if (item.match(this.yishuangfei)) {
let match = item.match(this.yishuangfei)
let numbers = match[1].replace(/\s+/g, '').replace(/[,\.]+/g, ',');
haoma = _.compact(_.split(numbers, ","))
let shaungfeislist = []
for (let j = 0; j < haoma.length; j++) {
let numberItem = haoma[j];
shaungfeislist.push({
type: "shuangfei",
value: [`${numberItem}`],
jine: jine / (haoma.length)
})
}
haomaList.push({
type: type,
name: "1双飞",
numbers: shaungfeislist,
})
}
// 1定位
else if (item.match(this.yidingwei)) {
let match = item.match(this.yidingwei)
let numbers = match[1].replace(/\s+/g, '').replace(/[,\.]+/g, ',');
haoma = _.compact(_.split(numbers, ","))
let dingweislist = []
for (let j = 0; j < haoma.length; j++) {
let numberItem = haoma[j];
dingweislist.push({
type: "dingwei",
value: [`${numberItem}`],
jine: jine / (haoma.length)
})
}
haomaList.push({
type: type,
name: "1定位",
numbers: dingweislist,
})
}
// 1不定位
else if (item.match(this.yibudingwei)) {
let match = item.match(this.yibudingwei)
let numbers = match[1].replace(/\s+/g, '').replace(/[,\.]+/g, ',');
haoma = _.compact(_.split(numbers, ","))
let budingweislist = []
for (let j = 0; j < haoma.length; j++) {
let numberItem = haoma[j];
budingweislist.push({
type: "budingwei",
value: [`${numberItem}`],
jine: jine / (haoma.length)
})
}
haomaList.push({
type: type,
name: "1不定位",
numbers: budingweislist,
})
}
// 1复式
else if (item.match(this.yifushi)) {
let match = item.match(this.yifushi)
let numbers = match[1].replace(/\s+/g, '').replace(/[,\.]+/g, ',');
haoma = _.compact(_.split(numbers, ","))
let budingweislist = []
for (let j = 0; j < haoma.length; j++) {
let numberItem = haoma[j];
budingweislist.push({
type: "fushi",
value: [`${numberItem}`],
jine: jine / (haoma.length)
})
}
haomaList.push({
type: type,
name: "1复式",
numbers: budingweislist,
})
}
// 1全包对子
else if (item.match(this.yiquanbaoduizi)) {
let quanbaoduizislist = [{
type: "quanbaoduizi",
value: [],
jine: jine
}]
haomaList.push({
type: type,
name: "1全包对子",
numbers: quanbaoduizislist,
})
}
// 1单
else if (item.match(this.yidan)) {
let match = item.match(this.yidan)
let numbers = match[1].replace(/\s+/g, '').replace(/[,\.]+/g, ',');
haoma = _.compact(_.split(numbers, ","))
let danxuanList = []
for (let j = 0; j < haoma.length; j++) {
let numberItem = haoma[j];
danxuanList.push({
type: "danxuan",
value: [`${numberItem}`],
jine: jine / (haoma.length)
})
}
haomaList.push({
type: type,
name: "1单",
numbers: danxuanList,
})
}
// 1组
else if (item.match(this.yizu)) {
let match = item.match(this.yizu)
let numbers = match[1].replace(/\s+/g, '').replace(/[,\.]+/g, ',');
haoma = _.compact(_.split(numbers, ","))
let zuxuanList = []
for (let j = 0; j < haoma.length; j++) {
let numberItem = haoma[j];
zuxuanList.push({
type: "zuxuan",
value: [`${numberItem}`],
jine: jine / (haoma.length)
})
}
haomaList.push({
type: type,
name: "1组",
numbers: zuxuanList,
})
}
// 其他情况继续下一个循环
else {
continue
}
}
// 选中的代理商
let checkDailishangRaw = _.find(this.dailishangList, { check: true })
// 选中的场次
let selectChangci = _.find(this.changciList, { value: this.changciValue })
this.checkDailishangRaw = checkDailishangRaw
this.selectChangci = selectChangci
// 中奖号码
let zhonghaoma = `${selectChangci.first}${selectChangci.second}${selectChangci.third}`
// 选中的代理商的代理费
// let selectdailifei = Number(checkDailishangRaw.dailifei / 100)
let alljine = []
let jinegroupBy = _.groupBy(haomaList, o => `${o.type}:${o.name}`)
for (let key in jinegroupBy) {
let value = jinegroupBy[key];
let jineList = []
let keyLocal = key
for (let i = 0; i < value.length; i++) {
let element = value[i];
for (let j = 0; j < element.numbers.length; j++) {
let item = element.numbers[j];
keyLocal = item.type
jineList.push({
...item
})
}
}
alljine.push({
key: keyLocal,
name: key,
data: jineList
})
}
//alljine= [{"key":"danxuan","name":"体彩:1单","data":[{"type":"danxuan","value":["684"],"jine":2},{"type":"danxuan","value":["784"],"jine":2},{"type":"danxuan","value":["876"],"jine":2},{"type":"danxuan","value":["784"],"jine":6}]},{"key":"zuxuan","name":"体彩:1组","data":[{"type":"zuxuan","value":["684"],"jine":2},{"type":"zuxuan","value":["784"],"jine":2},{"type":"zuxuan","value":["876"],"jine":2},{"type":"zuxuan","value":["214"],"jine":4}]},{"key":"zuliu4","name":"体彩:1组六4码","data":[{"type":"zuliu4","numbers":["1269"],"jine":10}]},{"key":"zuliu5","name":"体彩:1组六5码","data":[{"type":"zuliu5","numbers":["12069"],"jine":10}]},{"key":"zuliu6","name":"体彩:1组六6码","data":[{"type":"zuliu6","numbers":["120769"],"jine":10}]},{"key":"zusan3","name":"体彩:1组三3码","data":[{"type":"zusan3","numbers":["874"],"jine":10}]},{"key":"shuangfei","name":"体彩:1双飞","data":[{"type":"shuangfei","value":["98"],"jine":10}]},{"key":"dingwei","name":"体彩:1定位","data":[{"type":"dingwei","value":["324"],"jine":10}]}]
let alljineLocal = {}
for (let i = 0; i < alljine.length; i++) {
let element = alljine[i]
// 处理1单的玩法
if (element.key == 'danxuan') {
let dataObj = {
all: 0,
zhong: 0
}
for (let j = 0; j < element.data.length; j++) {
let item = element.data[j];
dataObj.all += Number(item.jine)
for (let k = 0; k < item.value.length; k++) {
let xiangmu = `${item.value[k]}`;
if (xiangmu === zhonghaoma) {
dataObj.zhong += Number(item.jine) * Number(formData[element.key])
}
}
}
alljineLocal[element.key] = dataObj
}
// 处理1组的玩法
else if (element.key == 'zuxuan') {
let dataObj = {
all: 0,
zhong: 0
}
for (let j = 0; j < element.data.length; j++) {
let item = element.data[j];
dataObj.all += Number(item.jine)
for (let k = 0; k < item.value.length; k++) {
let xiangmu = `${item.value[k]}`;
let xiangmuArr = xiangmu.split('');
let zhonghaomaArr = zhonghaoma.split('');
if (_.difference(zhonghaomaArr, xiangmuArr).length === 0) {
dataObj.zhong += Number(item.jine) * Number(formData[element.key])
}
}
}
alljineLocal[element.key] = dataObj
}
// 处理组六4码的玩法
else if (element.key == 'zuliu4') {
let dataObj = {
all: 0,
zhong: 0
}
for (let j = 0; j < element.data.length; j++) {
let item = element.data[j];
dataObj.all += Number(item.jine)
for (let k = 0; k < item.value.length; k++) {
let xiangmu = `${item.value[k]}`;
let xiangmuArr = xiangmu.split('');
let zhonghaomaArr = zhonghaoma.split('');
if (_.difference(zhonghaomaArr, xiangmuArr).length === 0) {
dataObj.zhong += Number(item.jine) * Number(formData[element.key])
}
}
}
alljineLocal[element.key] = dataObj
}
// 处理组六5码的玩法
else if (element.key == 'zuliu5') {
let dataObj = {
all: 0,
zhong: 0
}
for (let j = 0; j < element.data.length; j++) {
let item = element.data[j];
dataObj.all += Number(item.jine)
for (let k = 0; k < item.value.length; k++) {
let xiangmu = `${item.value[k]}`;
let xiangmuArr = xiangmu.split('');
let zhonghaomaArr = zhonghaoma.split('');
if (_.difference(zhonghaomaArr, xiangmuArr).length === 0) {
dataObj.zhong += Number(item.jine) * Number(formData[element.key])
}
}
}
alljineLocal[element.key] = dataObj
}
// 处理组六6码的玩法
else if (element.key == 'zuliu6') {
let dataObj = {
all: 0,
zhong: 0
}
for (let j = 0; j < element.data.length; j++) {
let item = element.data[j];
dataObj.all += Number(item.jine)
for (let k = 0; k < item.value.length; k++) {
let xiangmu = `${item.value[k]}`;
let xiangmuArr = xiangmu.split('');
let zhonghaomaArr = zhonghaoma.split('');
if (_.difference(zhonghaomaArr, xiangmuArr).length === 0) {
dataObj.zhong += Number(item.jine) * Number(formData[element.key])
}
}
}
alljineLocal[element.key] = dataObj
}
// 处理组六7码的玩法
else if (element.key == 'zuliu7') {
let dataObj = {
all: 0,
zhong: 0
}
for (let j = 0; j < element.data.length; j++) {
let item = element.data[j];
dataObj.all += Number(item.jine)
for (let k = 0; k < item.value.length; k++) {
let xiangmu = `${item.value[k]}`;
let xiangmuArr = xiangmu.split('');
let zhonghaomaArr = zhonghaoma.split('');
if (_.difference(zhonghaomaArr, xiangmuArr).length === 0) {
dataObj.zhong += Number(item.jine) * Number(formData[element.key])
}
}
}
alljineLocal[element.key] = dataObj
}
// 处理组三4码的玩法
else if (element.key == 'zusan4') {
let dataObj = {
all: 0,
zhong: 0
}
for (let j = 0; j < element.data.length; j++) {
let item = element.data[j];
dataObj.all += Number(item.jine)
for (let k = 0; k < item.value.length; k++) {
let xiangmu = `${item.value[k]}`;
let xiangmuArr = xiangmu.split('');
let zhonghaomaArr = zhonghaoma.split('');
if (_.difference(zhonghaomaArr, xiangmuArr).length <= 1) {
dataObj.zhong += Number(item.jine) * Number(formData[element.key])
}
}
}
alljineLocal[element.key] = dataObj
}
// 处理组三5码的玩法
else if (element.key == 'zusan5') {
let dataObj = {
all: 0,
zhong: 0
}
for (let j = 0; j < element.data.length; j++) {
let item = element.data[j];
dataObj.all += Number(item.jine)
for (let k = 0; k < item.value.length; k++) {
let xiangmu = `${item.value[k]}`;
let xiangmuArr = xiangmu.split('');
let zhonghaomaArr = zhonghaoma.split('');
if (_.difference(zhonghaomaArr, xiangmuArr).length <= 1) {
dataObj.zhong += Number(item.jine) * Number(formData[element.key])
}
}
}
alljineLocal[element.key] = dataObj
}
// 处理组三6码的玩法
else if (element.key == 'zusan6') {
let dataObj = {
all: 0,
zhong: 0
}
for (let j = 0; j < element.data.length; j++) {
let item = element.data[j];
dataObj.all += Number(item.jine)
for (let k = 0; k < item.value.length; k++) {
let xiangmu = `${item.value[k]}`;
let xiangmuArr = xiangmu.split('');
let zhonghaomaArr = zhonghaoma.split('');
if (_.difference(zhonghaomaArr, xiangmuArr).length <= 1) {
dataObj.zhong += Number(item.jine) * Number(formData[element.key])
}
}
}
alljineLocal[element.key] = dataObj
}
// 处理组三7码的玩法
else if (element.key == 'zusan7') {
let dataObj = {
all: 0,
zhong: 0
}
for (let j = 0; j < element.data.length; j++) {
let item = element.data[j];
dataObj.all += Number(item.jine)
for (let k = 0; k < item.value.length; k++) {
let xiangmu = `${item.value[k]}`;
let xiangmuArr = xiangmu.split('');
let zhonghaomaArr = zhonghaoma.split('');
if (_.difference(zhonghaomaArr, xiangmuArr).length <= 1) {
dataObj.zhong += Number(item.jine) * Number(formData[element.key])
}
}
}
alljineLocal[element.key] = dataObj
}
// 处理毒胆的玩法
else if (element.key == 'dudan') {
let dataObj = {
all: 0,
zhong: 0
}
for (let j = 0; j < element.data.length; j++) {
let item = element.data[j];
dataObj.all += Number(item.jine)
for (let k = 0; k < item.value.length; k++) {
let xiangmu = `${item.value[k]}`;
let xiangmuArr = xiangmu.split('');
let zhonghaomaArr = zhonghaoma.split('');
if (_.difference(zhonghaomaArr, xiangmuArr).length === 2) {
dataObj.zhong += Number(item.jine) * Number(formData[element.key])
}
}
}
alljineLocal[element.key] = dataObj
}
// 处理定位的玩法
else if (element.key == 'dingwei') {
let dataObj = {
all: 0,
zhong: 0
}
for (let j = 0; j < element.data.length; j++) {
let item = element.data[j];
dataObj.all += Number(item.jine)
for (let k = 0; k < item.value.length; k++) {
let xiangmu = `${item.value[k]}`;
let xiangmuArr = xiangmu.split('');
let zhonghaomaArr = zhonghaoma.split('');
let count = 0
for (let l = 0; l < zhonghaomaArr.length; l++) {
if (`${xiangmuArr[l]}` === `${zhonghaomaArr[l]}`) {
count++
}
}
if (count === 1) {
dataObj.zhong += Number(item.jine) * Number(formData[`${element.key}1`])
} else if (count > 1) {
dataObj.zhong += Number(item.jine) * Number(formData[`${element.key}2`])
}
}
}
alljineLocal[element.key] = dataObj
}
// 处理不定位的玩法
// else if (element.key == 'budingwei') {
// let dataObj = {
// all: 0,
// zhong: 0
// }
// for (let j = 0; j < element.data.length; j++) {
// let item = element.data[j];
// dataObj.all += Number(item.jine)
// for (let k = 0; k < item.value.length; k++) {
// let xiangmu = `${item.value[k]}`;
// let xiangmuArr = xiangmu.split('');
// let zhonghaomaArr = zhonghaoma.split('');
// let count = 0
// for (let l = 0; l < zhonghaomaArr.length; l++) {
// if (xiangmuArr.includes(zhonghaomaArr[l])) {
// count++
// }
// }
// if (count >= 1) {
// dataObj.zhong += Number(item.jine) * 9
// }
// }
// }
// alljineLocal[element.key] = dataObj
// }
// 处理双飞的玩法
else if (element.key == 'shuangfei') {
let dataObj = {
all: 0,
zhong: 0
}
for (let j = 0; j < element.data.length; j++) {
let item = element.data[j];
dataObj.all += Number(item.jine)
for (let k = 0; k < item.value.length; k++) {
let xiangmu = `${item.value[k]}`;
let xiangmuArr = xiangmu.split('');
let zhonghaomaArr = zhonghaoma.split('');
let count = 0
for (let l = 0; l < zhonghaomaArr.length; l++) {
if (xiangmuArr.includes(zhonghaomaArr[l])) {
count++
}
}
if (count >= 2) {
dataObj.zhong += Number(item.jine) * Number(formData[element.key])
}
}
}
alljineLocal[element.key] = dataObj
}
// 处理复式的玩法
else if (element.key == 'fushi') {
let dataObj = {
all: 0,
zhong: 0
}
for (let j = 0; j < element.data.length; j++) {
let item = element.data[j];
dataObj.all += Number(item.jine)
for (let k = 0; k < item.value.length; k++) {
let xiangmu = `${item.value[k]}`;
let xiangmuArr = xiangmu.split('');
let zhonghaomaArr = zhonghaoma.split('');
let count = 0
for (let l = 0; l < zhonghaomaArr.length; l++) {
if (xiangmuArr.includes(zhonghaomaArr[l])) {
count++
}
}
if (count >= 3) {
dataObj.zhong += Number(item.jine) * Number(formData[element.key])
}
}
}
alljineLocal[element.key] = dataObj
}
// 处理全包对子的玩法
else if (element.key == 'quanbaoduizi') {
let dataObj = {
all: 0,
zhong: 0
}
for (let j = 0; j < element.data.length; j++) {
let item = element.data[j];
dataObj.all += Number(item.jine)
let zhonghaomaArr = zhonghaoma.split('');
zhonghaomaArr = _.uniq(zhonghaomaArr)
if (zhonghaomaArr.length < 3) {
dataObj.zhong += Number(item.jine) * Number(formData[element.key])
}
}
alljineLocal[element.key] = dataObj
}
}
this.tongjiValue = 0
this.zhongjiangshuTotal = 0
this.zhongjiangshucount = 0
for (let key in alljineLocal) {
this.tongjiValue += alljineLocal[key].all
this.zhongjiangshuTotal += alljineLocal[key].zhong
if (alljineLocal[key].zhong > 0) {
this.zhongjiangshucount++
}
}
// console.log(alljineLocal)
// ElMessage({
// type: 'success',
// message: JSON.stringify(haomaList),
// duration: 3000
// })
return haomaList
},
},
}
</script>
<style scoped>
.rightClass {
padding: 8px;
}
.cellChecked {
background-color: #edf5ff;
}
.everyCell {
display: block;
width: 100%;
height: 100%;
text-align: center;
line-height: 50px;
}
</style>