snow пре 3 месеци
родитељ
комит
85c7a26a2e
1 измењених фајлова са 55 додато и 148 уклоњено
  1. 55 148
      pages/home/index.vue

+ 55 - 148
pages/home/index.vue

@@ -59,7 +59,7 @@
 		<view class="section" v-if="outputData.length > 0">
 
 			<div style="display: flex;justify-content: space-between;" >
-				<text class="section-title">输出, 计算时间 {{}} ms </text>
+				<text class="section-title">输出, 计算时间 {{ time }} ms </text>
 				<span>差额: {{ powerDifference }}</span>
 			</div>
 
@@ -70,13 +70,13 @@
 
 
 				<el-table-column label="目标角色">
-					<el-table-column label="性别" min-width="60px" prop="targetGender" />
-					<el-table-column label="势力" min-width="60px" prop="targetPower" />
+					<el-table-column label="公" min-width="60px" prop="targetMale" />
+					<el-table-column label="母" min-width="60px" prop="targetFemale" />
 				</el-table-column>
 
 				<el-table-column label="备选角色">
-					<el-table-column label="性别" min-width="60px" prop="backupGender" />
-					<el-table-column label="势力" min-width="60px" prop="backupPower" />
+					<el-table-column label="公" min-width="60px" prop="backupMale" />
+					<el-table-column label="母" min-width="60px" prop="backupFemale" />
 				</el-table-column>
 			</el-table>
 		</view>
@@ -114,6 +114,7 @@ import { ElMessage } from "element-plus"
 
 const gender = ref("")
 const powers = ref("")
+const time = ref("")
 
 const malePowers = ref('')
 const feMalePowers = ref('')
@@ -122,130 +123,7 @@ const role = ref("")
 const type = ref('')
 
 const mockData = [
-	{
-		"backupFemale": "180",
-		"backupMale": "174",
-		"targetFemale": "121",
-		"targetMale": "153"
-	},
-	{
-		"backupFemale": "165",
-		"backupMale": "152",
-		"targetFemale": "118",
-		"targetMale": "91"
-	},
-	{
-		"backupFemale": "158",
-		"backupMale": "147",
-		"targetFemale": "115",
-		"targetMale": "77"
-	},
-	{
-		"backupFemale": "154",
-		"backupMale": "102",
-		"targetFemale": "86",
-		"targetMale": "138"
-	},
-	{
-		"backupFemale": "152",
-		"backupMale": "101",
-		"targetFemale": "84",
-		"targetMale": "90"
-	},
-	{
-		"backupFemale": "151",
-		"backupMale": "98",
-		"targetFemale": "84",
-		"targetMale": "80"
-	},
-	{
-		"backupFemale": "150",
-		"backupMale": "98",
-		"targetMale": "60",
-		"targetFemale": "59"
-	},
-	{
-		"backupFemale": "150",
-		"backupMale": "97",
-		"targetMale": "54",
-		"targetFemale": "53"
-	},
-	{
-		"targetMale": "52",
-		"targetFemale": "51",
-		"backupMale": "62",
-		"backupFemale": "102"
-	},
-	{
-		"targetMale": "52",
-		"backupMale": "60",
-		"backupFemale": "101"
-	},
-	{
-		"targetMale": "52",
-		"backupMale": "58",
-		"backupFemale": "101"
-	},
-	{
-		"targetMale": null,
-		"targetFemale": null,
-		"backupMale": "19",
-		"backupFemale": "93"
-	},
-	{
-		"targetMale": null,
-		"targetFemale": null,
-		"backupMale": null,
-		"backupFemale": "61"
-	},
-	{
-		"targetMale": null,
-		"targetFemale": null,
-		"backupMale": null,
-		"backupFemale": "30"
-	},
-	{
-		"targetMale": null,
-		"targetFemale": null,
-		"backupMale": null,
-		"backupFemale": "30"
-	},
-	{
-		"targetMale": null,
-		"targetFemale": null,
-		"backupMale": null,
-		"backupFemale": "29"
-	},
-	{
-		"targetMale": null,
-		"targetFemale": null,
-		"backupMale": null,
-		"backupFemale": "29"
-	},
-	{
-		"targetMale": null,
-		"targetFemale": null,
-		"backupMale": null,
-		"backupFemale": "29"
-	},
-	{
-		"targetMale": null,
-		"targetFemale": null,
-		"backupMale": null,
-		"backupFemale": "27"
-	},
-	{
-		"targetMale": null,
-		"targetFemale": null,
-		"backupMale": null,
-		"backupFemale": "10"
-	},
-	{
-		"targetMale": null,
-		"targetFemale": null,
-		"backupMale": null,
-		"backupFemale": "10"
-	}
+
 ]
 
 const inputData = ref(mockData);
@@ -266,6 +144,7 @@ function editRow(_gender, _role) {
 
 
 function switchRoles(){
+	outputData.value = []
 	// const cloneInputData = inputData.value.map(item => ({ ...item }))
 	const backups = inputData.value.map(item => ({ male: item.backupMale, female: item.backupFemale }))
 	const targets = inputData.value.map(item => ({ male: item.targetMale, female: item.targetFemale }))
@@ -407,6 +286,9 @@ function getCombinations(arr, num) {
 
 
 function calculateBestMatch() {
+	let startTime = new Date().getTime()
+	let endTime = null
+			
 	outputData.value = []
 
 	const targetData = []
@@ -433,6 +315,21 @@ function calculateBestMatch() {
 	// const targetFemale = [86, 84, 84];
 	// const backupMale = [153, 91, 77];
 	// const backupFemale = [121, 118, 115]; 
+	if(targetFemale.length + targetFemale.length > 20){
+		ElMessage.warning('目标角色公数据与母数据的和不能超过20条')
+		return
+	}
+	
+	if(backupMale.length > 20){
+		ElMessage.warning('备选角色的公数据不能超过20条')
+		return
+	}
+	
+	if(backupFemale.length > 20){
+		ElMessage.warning('备选角色的母数据不能超过20条')
+		return
+	}
+	
 
 	if (targetFemale.length > backupMale.length && backupMale.length !== 0){
 		ElMessage.warning('备选角色的公数据长度必须大于或等于目标角色的母数据')
@@ -522,32 +419,42 @@ function calculateBestMatch() {
 
 	bestfemaleCombination && targetMale.forEach((_, index) => {
 		outputData.value.push({
-			targetGender: '公',
-			targetPower: targetMale[index],
-			backupGender: '母',
-			backupPower: bestfemaleCombination[index]
+			targetMale: targetMale[index],
+			targetFemale: null,
+			backupMale: null,
+			backupFemale: bestfemaleCombination[index]
 		})
 	})
-
-	bestMaleCombination && targetFemale.forEach((_, index) => {
-		outputData.value.push({
-			targetGender: '母',
-			targetPower: targetFemale[index],
-			backupGender: '公',
-			backupPower: bestMaleCombination[index]
-		})
-	})
-
-
+	
+	
+	const ml = targetMale.length
+	const fl = targetFemale.length
+	
+	for(let index = 0; index < fl; index ++){
+		if(outputData.value[index]){
+			outputData.value[index].targetFemale = targetFemale[index]
+			outputData.value[index].backupMale = bestMaleCombination[index]
+		} else {
+			outputData.value.push({
+				targetMale: null,
+				targetFemale: targetFemale[index],
+				backupMale: bestMaleCombination[index],
+				backupFemale: null
+			})
+			
+		}
+	}
 
 	outputData.value.push({
-		targetGender: '',
-		targetPower: outputData.value.reduce((prev, current) => prev + current.targetPower,0),
-		backupGender: '',
-		backupPower: outputData.value.reduce((prev, current) => prev + current.backupPower, 0),
+		targetMale: outputData.value.reduce((prev, current) => prev + current.targetMale,0),
+		targetFemale: outputData.value.reduce((prev, current) => prev + current.targetFemale,0),
+		backupMale: outputData.value.reduce((prev, current) => prev + current.backupMale,0),
+		backupFemale: outputData.value.reduce((prev, current) => prev + current.backupFemale,0)
 	})
 
 	powerDifference.value = minDifference
+	 endTime = new Date().getTime()
+	 time.value = endTime - startTime
 }
 </script>