one
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.ruoyi.web.controller.scoring;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
@@ -60,15 +61,33 @@ public class ScoreRoomController extends BaseController
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取【请填写功能名称】详细信息
|
||||
* 获取【roomId】详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:room:query')")
|
||||
@GetMapping(value = "/{roomId}")
|
||||
@GetMapping(value = "/id/{roomId}")
|
||||
public AjaxResult getInfo(@PathVariable("roomId") Long roomId)
|
||||
{
|
||||
return success(scoreRoomService.selectScoreRoomByRoomId(roomId));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取【createUser】详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:room:query1')")
|
||||
@GetMapping(value = "/createUser/{createUser}")
|
||||
public AjaxResult getByCreateUser(@PathVariable("createUser") Long createUser)
|
||||
{
|
||||
List<ScoreRoom> rooms = scoreRoomService.selectScoreRoomBycreateUser(createUser);
|
||||
if (rooms == null || rooms.isEmpty()) {
|
||||
return AjaxResult.success("无历史记录,创建新房间", Collections.emptyList());
|
||||
}
|
||||
|
||||
return AjaxResult.success(rooms);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 新增【请填写功能名称】
|
||||
*/
|
||||
|
||||
@@ -34,6 +34,20 @@ public class ScoreRoomUserController extends BaseController
|
||||
@Autowired
|
||||
private IScoreRoomUserService scoreRoomUserService;
|
||||
|
||||
/**
|
||||
* 获取房间内所有用户及其详细对局记录
|
||||
*/
|
||||
@GetMapping("/user-details/{roomId}")
|
||||
public AjaxResult getUserScoresWithDetails(@PathVariable("roomId") Long roomId) {
|
||||
try {
|
||||
List<ScoreRoomUser> result = scoreRoomUserService.getUserScoresWithDetails(roomId);
|
||||
return AjaxResult.success(result);
|
||||
} catch (Exception e) {
|
||||
logger.error("查询房间{}用户得分详情失败", roomId, e);
|
||||
return AjaxResult.error("查询失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询【请填写功能名称】列表
|
||||
*/
|
||||
@@ -62,13 +76,26 @@ public class ScoreRoomUserController extends BaseController
|
||||
/**
|
||||
* 获取【请填写功能名称】详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:user:query')")
|
||||
@GetMapping(value = "/{roomUserId}")
|
||||
public AjaxResult getInfo(@PathVariable("roomUserId") Long roomUserId)
|
||||
@PreAuthorize("@ss.hasPermi('system:user:query1')")
|
||||
@GetMapping(value = "/userid/{UserId}")
|
||||
public AjaxResult getInfo(@PathVariable("UserId") Long UserId)
|
||||
{
|
||||
return success(scoreRoomUserService.selectScoreRoomUserByRoomUserId(roomUserId));
|
||||
return success(scoreRoomUserService.selectScoreRoomUserByUserId(UserId));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取【请填写功能名称】详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:user:query')")
|
||||
@GetMapping(value = "/RoomUserId/{RoomUserId}")
|
||||
public AjaxResult getInfo1(@PathVariable("RoomUserId") Long RoomUserId)
|
||||
{
|
||||
return success(scoreRoomUserService.selectScoreRoomUserByRoomUserId(RoomUserId));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 新增【请填写功能名称】
|
||||
*/
|
||||
@@ -86,9 +113,15 @@ public class ScoreRoomUserController extends BaseController
|
||||
@PreAuthorize("@ss.hasPermi('system:user:edit')")
|
||||
@Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody ScoreRoomUser scoreRoomUser)
|
||||
public AjaxResult edit(@RequestBody List<ScoreRoomUser> scoreRoomUsers)
|
||||
{
|
||||
return toAjax(scoreRoomUserService.updateScoreRoomUser(scoreRoomUser));
|
||||
try {
|
||||
List<ScoreRoomUser> result = scoreRoomUserService.updateScoreRoomUser(scoreRoomUsers);
|
||||
return AjaxResult.success("得分提交成功!", result);
|
||||
} catch (Exception e) {
|
||||
logger.error("得分提交失败: {}", e.getMessage());
|
||||
return AjaxResult.error("得分提交失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.ruoyi.web.controller.scoring;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.ruoyi.utils.SimpleResult;
|
||||
@@ -66,7 +68,7 @@ public class ScoreUserController extends BaseController
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:user:query')")
|
||||
@GetMapping(value = "/{userId}")
|
||||
public AjaxResult getInfo(@PathVariable("userId") Long userId)
|
||||
public AjaxResult getInfo(@PathVariable("userId") String userId)
|
||||
{
|
||||
return success(scoreUserService.selectScoreUserByUserId(userId));
|
||||
}
|
||||
@@ -76,10 +78,22 @@ public class ScoreUserController extends BaseController
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:user:add')")
|
||||
@Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
@PostMapping("/add")
|
||||
public AjaxResult add(@RequestBody ScoreUser scoreUser)
|
||||
{
|
||||
return toAjax(scoreUserService.insertScoreUser(scoreUser));
|
||||
try {
|
||||
ScoreUser newUser = scoreUserService.insertScoreUser(scoreUser);
|
||||
// 构建返回数据
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("userId", newUser.getUserId());
|
||||
data.put("nickName", newUser.getNickName());
|
||||
data.put("avatars", newUser.getAvatars());
|
||||
data.put("openId", newUser.getOpenId());
|
||||
return AjaxResult.success("用户添加成功", data);
|
||||
|
||||
} catch (Exception e) {
|
||||
return AjaxResult.error("用户添加失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -31,6 +31,10 @@
|
||||
<artifactId>okhttp</artifactId>
|
||||
<version>4.11.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-webmvc</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
||||
@@ -32,7 +32,10 @@ public class ScoreRoom extends BaseEntity
|
||||
|
||||
/** 房主id */
|
||||
@Excel(name = "房主id")
|
||||
private Long boosId;
|
||||
private Long bossId;
|
||||
|
||||
@Excel(name = "房间名称")
|
||||
private String roomName;
|
||||
|
||||
public void setRoomId(Long roomId)
|
||||
{
|
||||
@@ -74,14 +77,22 @@ public class ScoreRoom extends BaseEntity
|
||||
return roomStatus;
|
||||
}
|
||||
|
||||
public void setBoosId(Long boosId)
|
||||
public void setBossId(Long bossId)
|
||||
{
|
||||
this.boosId = boosId;
|
||||
this.bossId = bossId;
|
||||
}
|
||||
|
||||
public Long getBoosId()
|
||||
public Long getBossId()
|
||||
{
|
||||
return boosId;
|
||||
return bossId;
|
||||
}
|
||||
|
||||
public String getRoomName() {
|
||||
return roomName;
|
||||
}
|
||||
|
||||
public void setRoomName(String roomName) {
|
||||
this.roomName = roomName;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -91,7 +102,8 @@ public class ScoreRoom extends BaseEntity
|
||||
.append("createUser", getCreateUser())
|
||||
.append("odds", getOdds())
|
||||
.append("roomStatus", getRoomStatus())
|
||||
.append("boosId", getBoosId())
|
||||
.append("roomName", getRoomName())
|
||||
.append("bossId", getBossId())
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ public class ScoreRoomDetail extends BaseEntity
|
||||
|
||||
/** 详情分数 */
|
||||
@Excel(name = "详情分数")
|
||||
private Long score;
|
||||
private Long detailScore;
|
||||
|
||||
/** 触发时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@@ -41,9 +41,17 @@ public class ScoreRoomDetail extends BaseEntity
|
||||
@Excel(name = "0 胜 1 负")
|
||||
private Long detailType;
|
||||
|
||||
/** 目标玩家id 多人模式给分使用 */
|
||||
@Excel(name = "目标玩家id 多人模式给分使用")
|
||||
private Long getterId;
|
||||
/** 局次 */
|
||||
@Excel(name = "局次")
|
||||
private Long gameTime;
|
||||
|
||||
public Long getGameTime() {
|
||||
return gameTime;
|
||||
}
|
||||
|
||||
public void setGameTime(Long gameTime) {
|
||||
this.gameTime = gameTime;
|
||||
}
|
||||
|
||||
public void setDetailId(Long detailId)
|
||||
{
|
||||
@@ -75,16 +83,6 @@ public class ScoreRoomDetail extends BaseEntity
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setScore(Long score)
|
||||
{
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
public Long getScore()
|
||||
{
|
||||
return score;
|
||||
}
|
||||
|
||||
public void setCreatedTime(Date createdTime)
|
||||
{
|
||||
this.createdTime = createdTime;
|
||||
@@ -105,15 +103,6 @@ public class ScoreRoomDetail extends BaseEntity
|
||||
return detailType;
|
||||
}
|
||||
|
||||
public void setGetterId(Long getterId)
|
||||
{
|
||||
this.getterId = getterId;
|
||||
}
|
||||
|
||||
public Long getGetterId()
|
||||
{
|
||||
return getterId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
@@ -121,10 +110,18 @@ public class ScoreRoomDetail extends BaseEntity
|
||||
.append("detailId", getDetailId())
|
||||
.append("roomId", getRoomId())
|
||||
.append("userId", getUserId())
|
||||
.append("score", getScore())
|
||||
.append("detailScore", getDetailScore())
|
||||
.append("createdTime", getCreatedTime())
|
||||
.append("detailType", getDetailType())
|
||||
.append("getterId", getGetterId())
|
||||
.append("gameTime", getGameTime())
|
||||
.toString();
|
||||
}
|
||||
|
||||
public Long getDetailScore() {
|
||||
return detailScore;
|
||||
}
|
||||
|
||||
public void setDetailScore(Long detailScore) {
|
||||
this.detailScore = detailScore;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,8 @@ import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 【请填写功能名称】对象 score_room_user
|
||||
*
|
||||
@@ -28,7 +30,7 @@ public class ScoreRoomUser extends BaseEntity
|
||||
|
||||
/** 得分 */
|
||||
@Excel(name = "得分")
|
||||
private Long score;
|
||||
private Long totalScore;
|
||||
|
||||
/** 三个值 {'user', 'boot', 'business'} */
|
||||
@Excel(name = "三个值 {'user', 'boot', 'business'}")
|
||||
@@ -42,6 +44,17 @@ public class ScoreRoomUser extends BaseEntity
|
||||
@Excel(name = "玩家头像")
|
||||
private String avatars;
|
||||
|
||||
// 详细对局记录
|
||||
private List<ScoreRoomDetail> details;
|
||||
|
||||
public List<ScoreRoomDetail> getDetails() {
|
||||
return details;
|
||||
}
|
||||
|
||||
public void setDetails(List<ScoreRoomDetail> details) {
|
||||
this.details = details;
|
||||
}
|
||||
|
||||
public void setRoomUserId(Long roomUserId)
|
||||
{
|
||||
this.roomUserId = roomUserId;
|
||||
@@ -72,16 +85,6 @@ public class ScoreRoomUser extends BaseEntity
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setScore(Long score)
|
||||
{
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
public Long getScore()
|
||||
{
|
||||
return score;
|
||||
}
|
||||
|
||||
public void setPlayerType(String playerType)
|
||||
{
|
||||
this.playerType = playerType;
|
||||
@@ -118,10 +121,19 @@ public class ScoreRoomUser extends BaseEntity
|
||||
.append("roomUserId", getRoomUserId())
|
||||
.append("roomId", getRoomId())
|
||||
.append("userId", getUserId())
|
||||
.append("score", getScore())
|
||||
.append("totalScore", getTotalScore())
|
||||
.append("playerType", getPlayerType())
|
||||
.append("nickName", getNickName())
|
||||
.append("avatars", getAvatars())
|
||||
.append("details", getDetails())
|
||||
.toString();
|
||||
}
|
||||
|
||||
public Long getTotalScore() {
|
||||
return totalScore;
|
||||
}
|
||||
|
||||
public void setTotalScore(Long totalScore) {
|
||||
this.totalScore = totalScore;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ public class ScoreUser extends BaseEntity
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 用户id */
|
||||
private Long userId;
|
||||
private String userId;
|
||||
|
||||
/** 微信id */
|
||||
@Excel(name = "微信id")
|
||||
@@ -30,12 +30,12 @@ public class ScoreUser extends BaseEntity
|
||||
@Excel(name = "用户头像")
|
||||
private String avatars;
|
||||
|
||||
public void setUserId(Long userId)
|
||||
public void setUserId(String userId)
|
||||
{
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public Long getUserId()
|
||||
public String getUserId()
|
||||
{
|
||||
return userId;
|
||||
}
|
||||
|
||||
@@ -58,4 +58,8 @@ public interface ScoreRoomMapper
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteScoreRoomByRoomIds(Long[] roomIds);
|
||||
|
||||
|
||||
|
||||
public List<ScoreRoom> selectScoreRoomBycreateUser(Long createUser);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.ruoyi.system.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.system.domain.ScoreRoomUser;
|
||||
import io.lettuce.core.dynamic.annotation.Param;
|
||||
|
||||
/**
|
||||
* 【请填写功能名称】Mapper接口
|
||||
@@ -19,6 +20,20 @@ public interface ScoreRoomUserMapper
|
||||
*/
|
||||
public ScoreRoomUser selectScoreRoomUserByRoomUserId(Long roomUserId);
|
||||
|
||||
|
||||
/**
|
||||
* 查询【请填写功能名称】
|
||||
*
|
||||
* @param UserId 【请填写功能名称】主键
|
||||
* @return 【请填写功能名称】
|
||||
*/
|
||||
public ScoreRoomUser selectScoreRoomUserByUserId(Long UserId);
|
||||
|
||||
|
||||
|
||||
public ScoreRoomUser selectScoreRoomUserPrescore(@Param("userId") Long UserId, @Param("roomId")Long RoomId);
|
||||
|
||||
|
||||
/**
|
||||
* 查询【请填写功能名称】列表
|
||||
*
|
||||
@@ -27,6 +42,7 @@ public interface ScoreRoomUserMapper
|
||||
*/
|
||||
public List<ScoreRoomUser> selectScoreRoomUserList(ScoreRoomUser scoreRoomUser);
|
||||
|
||||
|
||||
/**
|
||||
* 新增【请填写功能名称】
|
||||
*
|
||||
@@ -35,13 +51,7 @@ public interface ScoreRoomUserMapper
|
||||
*/
|
||||
public int insertScoreRoomUser(ScoreRoomUser scoreRoomUser);
|
||||
|
||||
/**
|
||||
* 修改【请填写功能名称】
|
||||
*
|
||||
* @param scoreRoomUser 【请填写功能名称】
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateScoreRoomUser(ScoreRoomUser scoreRoomUser);
|
||||
public List<ScoreRoomUser> updateScoreRoomUser(@Param("list") List<ScoreRoomUser> scoreRoomUser);
|
||||
|
||||
/**
|
||||
* 删除【请填写功能名称】
|
||||
@@ -58,4 +68,10 @@ public interface ScoreRoomUserMapper
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteScoreRoomUserByRoomUserIds(Long[] roomUserIds);
|
||||
|
||||
/**
|
||||
* 通过JOIN查询获取房间内所有用户及其详细对局记录
|
||||
*/
|
||||
public List<ScoreRoomUser> selectUserScoresWithDetails(Long roomId);
|
||||
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ public interface ScoreUserMapper
|
||||
* @param userId 【请填写功能名称】主键
|
||||
* @return 【请填写功能名称】
|
||||
*/
|
||||
public ScoreUser selectScoreUserByUserId(Long userId);
|
||||
public ScoreUser selectScoreUserByUserId(String userId);
|
||||
|
||||
/**
|
||||
* 查询【请填写功能名称】列表
|
||||
|
||||
@@ -58,4 +58,5 @@ public interface IScoreRoomService
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteScoreRoomByRoomId(Long roomId);
|
||||
public List<ScoreRoom> selectScoreRoomBycreateUser(Long createUser);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.ruoyi.system.service;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.system.domain.ScoreRoomUser;
|
||||
import io.lettuce.core.dynamic.annotation.Param;
|
||||
|
||||
/**
|
||||
* 【请填写功能名称】Service接口
|
||||
@@ -19,6 +20,16 @@ public interface IScoreRoomUserService
|
||||
*/
|
||||
public ScoreRoomUser selectScoreRoomUserByRoomUserId(Long roomUserId);
|
||||
|
||||
|
||||
/**
|
||||
* 查询【请填写功能名称】
|
||||
*
|
||||
* @param UserId 【请填写功能名称】主键
|
||||
* @return 【请填写功能名称】
|
||||
*/
|
||||
public ScoreRoomUser selectScoreRoomUserByUserId(Long UserId);
|
||||
|
||||
|
||||
/**
|
||||
* 查询【请填写功能名称】列表
|
||||
*
|
||||
@@ -27,6 +38,13 @@ public interface IScoreRoomUserService
|
||||
*/
|
||||
public List<ScoreRoomUser> selectScoreRoomUserList(ScoreRoomUser scoreRoomUser);
|
||||
|
||||
/**
|
||||
* 查询【请填写功能名称】列表
|
||||
*
|
||||
* @param roomId 【请填写功能名称】
|
||||
* @return 【请填写功能名称】集合
|
||||
*/
|
||||
public List<ScoreRoomUser> getUserScoresWithDetails(Long roomId);
|
||||
/**
|
||||
* 新增【请填写功能名称】
|
||||
*
|
||||
@@ -35,13 +53,8 @@ public interface IScoreRoomUserService
|
||||
*/
|
||||
public int insertScoreRoomUser(ScoreRoomUser scoreRoomUser);
|
||||
|
||||
/**
|
||||
* 修改【请填写功能名称】
|
||||
*
|
||||
* @param scoreRoomUser 【请填写功能名称】
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateScoreRoomUser(ScoreRoomUser scoreRoomUser);
|
||||
|
||||
public List<ScoreRoomUser> updateScoreRoomUser(List<ScoreRoomUser> scoreRoomUsers);
|
||||
|
||||
/**
|
||||
* 批量删除【请填写功能名称】
|
||||
|
||||
@@ -17,7 +17,7 @@ public interface IScoreUserService
|
||||
* @param userId 【请填写功能名称】主键
|
||||
* @return 【请填写功能名称】
|
||||
*/
|
||||
public ScoreUser selectScoreUserByUserId(Long userId);
|
||||
public ScoreUser selectScoreUserByUserId(String userId);
|
||||
|
||||
/**
|
||||
* 查询【请填写功能名称】列表
|
||||
@@ -33,8 +33,7 @@ public interface IScoreUserService
|
||||
* @param scoreUser 【请填写功能名称】
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertScoreUser(ScoreUser scoreUser);
|
||||
|
||||
public ScoreUser insertScoreUser(ScoreUser scoreUser);
|
||||
/**
|
||||
* 修改【请填写功能名称】
|
||||
*
|
||||
|
||||
@@ -31,6 +31,18 @@ public class ScoreRoomServiceImpl implements IScoreRoomService
|
||||
return scoreRoomMapper.selectScoreRoomByRoomId(roomId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询【请填写功能名称】
|
||||
*
|
||||
* @param createUser 【请填写功能名称】主键
|
||||
* @return 【请填写功能名称】
|
||||
*/
|
||||
@Override
|
||||
public List<ScoreRoom> selectScoreRoomBycreateUser(Long createUser)
|
||||
{
|
||||
return scoreRoomMapper.selectScoreRoomBycreateUser(createUser);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询【请填写功能名称】列表
|
||||
*
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
package com.ruoyi.system.service.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import io.lettuce.core.dynamic.annotation.Param;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.system.mapper.ScoreRoomUserMapper;
|
||||
@@ -31,6 +35,20 @@ public class ScoreRoomUserServiceImpl implements IScoreRoomUserService
|
||||
return scoreRoomUserMapper.selectScoreRoomUserByRoomUserId(roomUserId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询【请填写功能名称】
|
||||
*
|
||||
* @param UserId 【请填写功能名称】主键
|
||||
* @return 【请填写功能名称】
|
||||
*/
|
||||
@Override
|
||||
public ScoreRoomUser selectScoreRoomUserByUserId(Long UserId)
|
||||
{
|
||||
return scoreRoomUserMapper.selectScoreRoomUserByUserId(UserId);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询【请填写功能名称】列表
|
||||
*
|
||||
@@ -43,6 +61,17 @@ public class ScoreRoomUserServiceImpl implements IScoreRoomUserService
|
||||
return scoreRoomUserMapper.selectScoreRoomUserList(scoreRoomUser);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询【请填写功能名称】列表
|
||||
*
|
||||
* @param roomId 【请填写功能名称】
|
||||
* @return 【请填写功能名称】
|
||||
*/
|
||||
@Override
|
||||
public List<ScoreRoomUser> getUserScoresWithDetails(Long roomId) {
|
||||
return scoreRoomUserMapper.selectUserScoresWithDetails(roomId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增【请填写功能名称】
|
||||
*
|
||||
@@ -55,16 +84,39 @@ public class ScoreRoomUserServiceImpl implements IScoreRoomUserService
|
||||
return scoreRoomUserMapper.insertScoreRoomUser(scoreRoomUser);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改【请填写功能名称】
|
||||
*
|
||||
* @param scoreRoomUser 【请填写功能名称】
|
||||
* @return 结果
|
||||
*/
|
||||
|
||||
@Override
|
||||
public int updateScoreRoomUser(ScoreRoomUser scoreRoomUser)
|
||||
public List<ScoreRoomUser> updateScoreRoomUser(List<ScoreRoomUser> scoreRoomUsers)
|
||||
{
|
||||
return scoreRoomUserMapper.updateScoreRoomUser(scoreRoomUser);
|
||||
List<ScoreRoomUser> updatedUsers = new ArrayList<>();
|
||||
|
||||
for (ScoreRoomUser playerScore: scoreRoomUsers){
|
||||
// 处理单个用户的得分累加
|
||||
ScoreRoomUser updatedUser = processUserScoreUpdate(playerScore);
|
||||
updatedUsers.add(updatedUser);
|
||||
}
|
||||
|
||||
return scoreRoomUserMapper.updateScoreRoomUser(updatedUsers);
|
||||
}
|
||||
|
||||
private ScoreRoomUser processUserScoreUpdate(ScoreRoomUser newScore) {
|
||||
ScoreRoomUser existingUser = scoreRoomUserMapper.selectScoreRoomUserPrescore(newScore.getUserId(), newScore.getRoomId());
|
||||
|
||||
Long newTotalScore;
|
||||
ScoreRoomUser userToUpdate;
|
||||
|
||||
// 2. 存在记录:历史总分 + 本次得分
|
||||
Long currentScore = existingUser.getTotalScore() != null ? existingUser.getTotalScore() : 0L;
|
||||
Long additionalScore = newScore.getTotalScore() != null ? newScore.getTotalScore() : 0L;
|
||||
|
||||
newTotalScore = currentScore + additionalScore;
|
||||
|
||||
// 使用现有记录进行更新
|
||||
userToUpdate = existingUser;
|
||||
userToUpdate.setTotalScore(newTotalScore);
|
||||
userToUpdate.setUpdateTime(new Date());
|
||||
|
||||
return userToUpdate;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -27,7 +27,7 @@ public class ScoreUserServiceImpl implements IScoreUserService
|
||||
* @return 【请填写功能名称】
|
||||
*/
|
||||
@Override
|
||||
public ScoreUser selectScoreUserByUserId(Long userId)
|
||||
public ScoreUser selectScoreUserByUserId(String userId)
|
||||
{
|
||||
return scoreUserMapper.selectScoreUserByUserId(userId);
|
||||
}
|
||||
@@ -51,16 +51,23 @@ public class ScoreUserServiceImpl implements IScoreUserService
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertScoreUser(ScoreUser scoreUser)
|
||||
public ScoreUser insertScoreUser(ScoreUser scoreUser)
|
||||
{
|
||||
// 判断当前openId是否已经有值了
|
||||
ScoreUser scoreUser1 = scoreUserMapper.selectScoreUserByOpenId(scoreUser.getOpenId());
|
||||
if(scoreUser1 != null) {
|
||||
return 1;
|
||||
throw new RuntimeException("当前openId是否已经有值");
|
||||
}
|
||||
|
||||
scoreUser.setCreateTime(DateUtils.getNowDate());
|
||||
return scoreUserMapper.insertScoreUser(scoreUser);
|
||||
// 插入用户,MyBatis会自动将自增ID设置到user对象的userId属性中
|
||||
int result = scoreUserMapper.insertScoreUser(scoreUser);
|
||||
|
||||
if (result > 0) {
|
||||
// 返回包含自增ID的用户对象
|
||||
return scoreUser;
|
||||
} else {
|
||||
throw new RuntimeException("用户插入失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -9,11 +9,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="createUser" column="create_user" />
|
||||
<result property="odds" column="odds" />
|
||||
<result property="roomStatus" column="room_status" />
|
||||
<result property="boosId" column="boos_id" />
|
||||
<result property="bossId" column="boss_id" />
|
||||
<result property="roomName" column="room_name" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectScoreRoomVo">
|
||||
select room_id, create_user, odds, room_status, boos_id from score_room
|
||||
select room_id, create_user, odds, room_status, boss_id from score_room
|
||||
</sql>
|
||||
|
||||
<select id="selectScoreRoomList" parameterType="ScoreRoom" resultMap="ScoreRoomResult">
|
||||
@@ -22,7 +23,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="createUser != null "> and create_user = #{createUser}</if>
|
||||
<if test="odds != null "> and odds = #{odds}</if>
|
||||
<if test="roomStatus != null "> and room_status = #{roomStatus}</if>
|
||||
<if test="boosId != null "> and boos_id = #{boosId}</if>
|
||||
<if test="bossId != null "> and boss_id = #{bossId}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
@@ -31,19 +32,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
where room_id = #{roomId}
|
||||
</select>
|
||||
|
||||
<select id="selectScoreRoomBycreateUser" parameterType="Long" resultMap="ScoreRoomResult">
|
||||
<include refid="selectScoreRoomVo"/>
|
||||
WHERE room_status IN (0, 1)
|
||||
AND create_user = #{createUser}
|
||||
</select>
|
||||
|
||||
<insert id="insertScoreRoom" parameterType="ScoreRoom" useGeneratedKeys="true" keyProperty="roomId">
|
||||
insert into score_room
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="createUser != null">create_user,</if>
|
||||
<if test="odds != null">odds,</if>
|
||||
<if test="roomStatus != null">room_status,</if>
|
||||
<if test="boosId != null">boos_id,</if>
|
||||
<if test="bossId != null">boss_id,</if>
|
||||
<if test="roomName != null">room_name,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="createUser != null">#{createUser},</if>
|
||||
<if test="odds != null">#{odds},</if>
|
||||
<if test="roomStatus != null">#{roomStatus},</if>
|
||||
<if test="boosId != null">#{boosId},</if>
|
||||
<if test="bossId != null">#{bossId},</if>
|
||||
<if test="roomName != null">#{roomName},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
@@ -53,7 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="createUser != null">create_user = #{createUser},</if>
|
||||
<if test="odds != null">odds = #{odds},</if>
|
||||
<if test="roomStatus != null">room_status = #{roomStatus},</if>
|
||||
<if test="boosId != null">boos_id = #{boosId},</if>
|
||||
<if test="bossId != null">boss_id = #{bossId},</if>
|
||||
</trim>
|
||||
where room_id = #{roomId}
|
||||
</update>
|
||||
|
||||
@@ -8,7 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="roomUserId" column="room_user_id" />
|
||||
<result property="roomId" column="room_id" />
|
||||
<result property="userId" column="user_id" />
|
||||
<result property="score" column="score" />
|
||||
<result property="totalScore" column="score" />
|
||||
<result property="playerType" column="player_type" />
|
||||
<result property="nickName" column="nick_name" />
|
||||
<result property="avatars" column="avatars" />
|
||||
@@ -23,7 +23,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<where>
|
||||
<if test="roomId != null "> and room_id = #{roomId}</if>
|
||||
<if test="userId != null "> and user_id = #{userId}</if>
|
||||
<if test="score != null "> and score = #{score}</if>
|
||||
|
||||
<if test="playerType != null and playerType != ''"> and player_type = #{playerType}</if>
|
||||
<if test="nickName != null and nickName != ''"> and nick_name like concat('%', #{nickName}, '%')</if>
|
||||
<if test="avatars != null and avatars != ''"> and avatars = #{avatars}</if>
|
||||
@@ -35,12 +35,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
where room_user_id = #{roomUserId}
|
||||
</select>
|
||||
|
||||
<select id="selectScoreRoomUserPrescore" resultMap="ScoreRoomUserResult">
|
||||
<include refid="selectScoreRoomUserVo"/>
|
||||
where room_id = #{roomId} and user_id = #{userId}
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectScoreRoomUserByUserId" parameterType="Long" resultMap="ScoreRoomUserResult">
|
||||
<include refid="selectScoreRoomUserVo"/>
|
||||
where user_id = #{UserId}
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
<insert id="insertScoreRoomUser" parameterType="ScoreRoomUser" useGeneratedKeys="true" keyProperty="roomUserId">
|
||||
insert into score_room_user
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="roomId != null">room_id,</if>
|
||||
<if test="userId != null">user_id,</if>
|
||||
<if test="score != null">score,</if>
|
||||
<if test="totalScore != null">score,</if>
|
||||
<if test="playerType != null">player_type,</if>
|
||||
<if test="nickName != null">nick_name,</if>
|
||||
<if test="avatars != null">avatars,</if>
|
||||
@@ -48,24 +61,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="roomId != null">#{roomId},</if>
|
||||
<if test="userId != null">#{userId},</if>
|
||||
<if test="score != null">#{score},</if>
|
||||
<if test="totalScore != null">#{totalScore},</if>
|
||||
<if test="playerType != null">#{playerType},</if>
|
||||
<if test="nickName != null">#{nickName},</if>
|
||||
<if test="avatars != null">#{avatars},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateScoreRoomUser" parameterType="ScoreRoomUser">
|
||||
<update id="updateScoreRoomUser">
|
||||
<foreach collection="list" item="item" index="index" separator=";">
|
||||
update score_room_user
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="roomId != null">room_id = #{roomId},</if>
|
||||
<if test="userId != null">user_id = #{userId},</if>
|
||||
<if test="score != null">score = #{score},</if>
|
||||
<if test="playerType != null">player_type = #{playerType},</if>
|
||||
<if test="nickName != null">nick_name = #{nickName},</if>
|
||||
<if test="avatars != null">avatars = #{avatars},</if>
|
||||
<if test="item.totalScore != null">score = #{item.totalScore},</if>
|
||||
<if test="item.playerType != null">player_type = #{item.playerType},</if>
|
||||
<if test="item.nickName != null">nick_name = #{item.nickName},</if>
|
||||
<if test="item.avatars != null">avatars = #{item.avatars},</if>
|
||||
</trim>
|
||||
where room_user_id = #{roomUserId}
|
||||
where room_id = #{item.roomId} AND user_id = #{item.userId}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<delete id="deleteScoreRoomUserByRoomUserId" parameterType="Long">
|
||||
@@ -78,4 +91,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
#{roomUserId}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<resultMap id="UserScoreDetailResultMap" type="ScoreRoomUser">
|
||||
<!-- 主用户信息映射 -->
|
||||
<id property="userId" column="user_id"/>
|
||||
<result property="nickName" column="nick_name"/>
|
||||
<result property="avatars" column="avatars"/>
|
||||
<result property="totalScore" column="score"/>
|
||||
<result property="roomId" column="room_id" />
|
||||
<!-- 详细对局记录映射 -->
|
||||
<collection property="details" ofType="ScoreRoomDetail">
|
||||
<result property="gameTime" column="game_time"/>
|
||||
<result property="detailScore" column="detail_score"/>
|
||||
<result property="createdTime" column="created_time"/>
|
||||
<result property="roomId" column="room_id" />
|
||||
</collection>
|
||||
</resultMap>
|
||||
|
||||
<select id="selectUserScoresWithDetails" parameterType="Long" resultMap="UserScoreDetailResultMap">
|
||||
SELECT
|
||||
sru.user_id,
|
||||
sru.room_id,
|
||||
sru.nick_name,
|
||||
sru.avatars,
|
||||
sru.score,
|
||||
srd.game_time,
|
||||
srd.detail_score,
|
||||
srd.created_time
|
||||
FROM score_room_user sru
|
||||
LEFT JOIN score_room_detail srd ON sru.room_id = srd.room_id AND sru.user_id = srd.user_id
|
||||
WHERE sru.room_id = #{roomId}
|
||||
ORDER BY srd.game_time
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -26,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectScoreUserByUserId" parameterType="Long" resultMap="ScoreUserResult">
|
||||
<select id="selectScoreUserByUserId" resultMap="ScoreUserResult">
|
||||
<include refid="selectScoreUserVo"/>
|
||||
where user_id = #{userId}
|
||||
</select>
|
||||
|
||||
@@ -1,333 +1,252 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<!-- 顶部表头 -->
|
||||
<view class="table-header">
|
||||
<view class="header-player">玩家</view>
|
||||
<view class="header-result">胜负</view>
|
||||
<view class="header-score">得分</view>
|
||||
<view class="compute">
|
||||
<view class="compute-lan">
|
||||
<text class="player">玩家</text>
|
||||
<text class="vd">胜负</text>
|
||||
<text class="score">得分</text>
|
||||
</view>
|
||||
|
||||
<!-- 玩家信息区域 -->
|
||||
<view class="player-row">
|
||||
<view class="player-info">
|
||||
<view class="player-avatar">
|
||||
<!-- 兔子头像 SVG -->
|
||||
<svg width="30" height="30" viewBox="0 0 30 30">
|
||||
<ellipse cx="15" cy="20" rx="9" ry="6" fill="#ffffff"/>
|
||||
<circle cx="15" cy="12" r="7" fill="#ffffff"/>
|
||||
<ellipse cx="12" cy="8" rx="2" ry="4" fill="#ffffff"/>
|
||||
<ellipse cx="18" cy="8" rx="2" ry="4" fill="#ffffff"/>
|
||||
<ellipse cx="12" cy="8" rx="1" ry="3" fill="#ffb6c1"/>
|
||||
<ellipse cx="18" cy="8" rx="1" ry="3" fill="#ffb6c1"/>
|
||||
<circle cx="13" cy="12" r="1" fill="#333333"/>
|
||||
<circle cx="17" cy="12" r="1" fill="#333333"/>
|
||||
<circle cx="15" cy="14" r="0.8" fill="#ff69b4"/>
|
||||
<path d="M14,16 Q15,17 16,16" stroke="#ff69b4" stroke-width="0.5" fill="none"/>
|
||||
<circle cx="11" cy="13" r="1.5" fill="#ffb6c1" opacity="0.6"/>
|
||||
<circle cx="19" cy="13" r="1.5" fill="#ffb6c1" opacity="0.6"/>
|
||||
<rect x="10" cy="19" width="10" height="4" fill="#4169e1" rx="1"/>
|
||||
<circle cx="20" cy="21" r="2" fill="#ffd700"/>
|
||||
</svg>
|
||||
<view
|
||||
class="compute-detail"
|
||||
v-for="(item,index) in players1"
|
||||
:key="usersData.useId"
|
||||
>
|
||||
<view class="compute-detail-player">
|
||||
<image :src='item.avatars' mode="widthFix"></image>
|
||||
<text>{{item.nickName}}</text>
|
||||
</view>
|
||||
<text class="player-name">玩家59306</text>
|
||||
</view>
|
||||
|
||||
<view class="result-buttons">
|
||||
<view class="compute-detail-vd">
|
||||
<view
|
||||
class="result-btn"
|
||||
:class="{ active: result === 'win' }"
|
||||
@tap="setResult('win')"
|
||||
:class="{ active: item.result === 'win' }"
|
||||
@tap="setResult(index, 'win')"
|
||||
>胜</view>
|
||||
<view
|
||||
class="result-btn"
|
||||
:class="{ active: result === 'lose' }"
|
||||
@tap="setResult('lose')"
|
||||
:class="{ active: item.result === 'lose' }"
|
||||
@tap="setResult(index,'lose')"
|
||||
>负</view>
|
||||
</view>
|
||||
|
||||
<view class="score-display">
|
||||
<text class="score-value">{{ score }}</text>
|
||||
<button class="sum-btn" @tap="sumScore">Σ 合分</button>
|
||||
<view class="compute-detail-score">
|
||||
<input
|
||||
class="score-input"
|
||||
:class="item.result === 'win' ? 'positive' : 'negative'"
|
||||
v-model="item.score"
|
||||
@input="validateScore(index)"
|
||||
placeholder="0"
|
||||
type="number" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="">
|
||||
{{round1}}
|
||||
</view>
|
||||
|
||||
<!-- 固定在底部的数字键盘 -->
|
||||
<view class="keyboard">
|
||||
<view
|
||||
v-for="key in keys"
|
||||
:key="key.value"
|
||||
class="key"
|
||||
:class="{
|
||||
'operator': key.type === 'operator',
|
||||
'minus': key.value === '-',
|
||||
'submit-key': key.type === 'submit'
|
||||
}"
|
||||
@tap="pressKey(key.value, key.type)"
|
||||
>{{ key.display }}</view>
|
||||
</view>
|
||||
<button @click="onsubmit()">
|
||||
提交
|
||||
</button>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from 'vue';
|
||||
import { onMounted, ref, computed } from 'vue';
|
||||
import { onLoad } from '@dcloudio/uni-app';
|
||||
|
||||
const result = ref('win');
|
||||
const score = ref('0');
|
||||
const players1 = ref([]);
|
||||
const round1 = ref();
|
||||
//存储当前局每个玩家的得分
|
||||
const currentScores = ref([]);
|
||||
|
||||
// 键盘布局 - 提交按钮在0的左侧
|
||||
const keys = [
|
||||
{ value: '1', display: '1', type: 'number' },
|
||||
{ value: '2', display: '2', type: 'number' },
|
||||
{ value: '3', display: '3', type: 'number' },
|
||||
{ value: '+', display: '+', type: 'operator' },
|
||||
{ value: '×', display: '×', type: 'delete' },
|
||||
{ value: '4', display: '4', type: 'number' },
|
||||
{ value: '5', display: '5', type: 'number' },
|
||||
{ value: '6', display: '6', type: 'number' },
|
||||
{ value: '-', display: '-', type: 'operator' },
|
||||
{ value: '√', display: '√', type: 'operator' },
|
||||
{ value: '7', display: '7', type: 'number' },
|
||||
{ value: '8', display: '8', type: 'number' },
|
||||
{ value: '9', display: '9', type: 'number' },
|
||||
{ value: 'submit', display: '提交', type: 'submit' }, // 提交按钮在0的左侧
|
||||
{ value: '0', display: '0', type: 'number' }
|
||||
];
|
||||
//设置胜负结果
|
||||
const setResult = (index, result) => {
|
||||
players1.value[index].result = result;
|
||||
//如果有分数则进行跳转
|
||||
if(players1.value[index].score) {
|
||||
validateScore(index);
|
||||
}
|
||||
}
|
||||
|
||||
const setResult = (res) => {
|
||||
result.value = res;
|
||||
};
|
||||
//分数输入验证
|
||||
const validateScore = (index) => {
|
||||
const player = players1.value[index];
|
||||
const score = parseFloat(player.score);
|
||||
//检验是否为有效数字
|
||||
if (isNaN(score)) {
|
||||
player.score = '';
|
||||
return;
|
||||
}
|
||||
//根据胜负结果调整分数
|
||||
if (player.result === 'win' && score <0) {
|
||||
player.score = Math.abs(score).toString();
|
||||
} else if (player.result === 'lose' && score >0) {
|
||||
player.score = (-score).toString();
|
||||
}
|
||||
}
|
||||
|
||||
const pressKey = (key, type) => {
|
||||
if (type === 'submit') {
|
||||
// 提交分数
|
||||
if (score.value !== '0') {
|
||||
uni.showToast({
|
||||
title: `分数 ${score.value} 已提交`,
|
||||
icon: 'success'
|
||||
// 计算最大局数(确保表头列数正确)
|
||||
const maxRounds = computed(() => {
|
||||
if (!players1.value.length) return 0;
|
||||
let max = 0;
|
||||
players1.value.forEach(user => {
|
||||
if (user.details && user.details.length > 0) {
|
||||
user.details.forEach(detail => {
|
||||
if (detail.gameTime > max) max = detail.gameTime;
|
||||
});
|
||||
|
||||
// 实际应用中,这里应该调用API提交分数
|
||||
console.log('提交分数:', score.value);
|
||||
|
||||
// 重置分数
|
||||
setTimeout(() => {
|
||||
score.value = '0';
|
||||
}, 1500);
|
||||
}
|
||||
} else if (key === '×') {
|
||||
// 删除最后一个字符
|
||||
if (score.value.length > 1) {
|
||||
score.value = score.value.slice(0, -1);
|
||||
} else {
|
||||
score.value = '0';
|
||||
}
|
||||
} else if (key === '√') {
|
||||
// 计算平方根
|
||||
});
|
||||
return max;
|
||||
});
|
||||
|
||||
|
||||
|
||||
onMounted( () => {
|
||||
|
||||
})
|
||||
|
||||
onLoad((options) => {
|
||||
try {
|
||||
const result = Math.sqrt(parseFloat(score.value));
|
||||
score.value = result.toString();
|
||||
} catch (error) {
|
||||
score.value = '错误';
|
||||
setTimeout(() => {
|
||||
score.value = '0';
|
||||
}, 1000);
|
||||
}
|
||||
} else {
|
||||
// 添加数字或运算符
|
||||
if (score.value === '0') {
|
||||
score.value = key;
|
||||
} else {
|
||||
score.value += key;
|
||||
}
|
||||
}
|
||||
};
|
||||
const rawData = JSON.parse(decodeURIComponent(options.players));
|
||||
// players1.value = JSON.parse(decodeURIComponent(options.players));
|
||||
round1.value = JSON.parse(decodeURIComponent(options.round));
|
||||
|
||||
const sumScore = () => {
|
||||
uni.showToast({
|
||||
title: '合分功能需要与后端API交互',
|
||||
icon: 'none'
|
||||
});
|
||||
};
|
||||
console.log("round:",round1.value);
|
||||
players1.value = rawData.map(player => ({
|
||||
...player,
|
||||
result: "win",
|
||||
score: "",
|
||||
gameTime: round1.value,
|
||||
}))
|
||||
|
||||
|
||||
// console.log('数据已更新:', updataScore);
|
||||
}
|
||||
|
||||
|
||||
// console.log('数据已更新:', rawData);
|
||||
catch (error) {
|
||||
console.error('解析失败:', error);
|
||||
players1.value = []; // 确保是数组
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
const onsubmit = async () => {
|
||||
const updataScore = players1.value.map(updata => ({
|
||||
roomId: updata.roomId,
|
||||
userId: updata.userId,
|
||||
score: updata.score,
|
||||
}))
|
||||
|
||||
console.log("输入框的值:",updataScore);
|
||||
|
||||
}
|
||||
|
||||
const usersData = ref([
|
||||
{
|
||||
id: 1,
|
||||
nickName: '玩家12324',
|
||||
image: 'https://img1.baidu.com/it/u=3612220943,2414740890&fm=253&app=138&f=JPEG?w=526&h=500',
|
||||
result: 'win',
|
||||
score: '',
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
nickName: '赵云',
|
||||
image: 'https://q3.itc.cn/q_70/images03/20250110/1e71eecf56b34344bcae6a5b85c0bec2.jpeg',
|
||||
result: 'win',
|
||||
score: '',
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
nickName: '刘备',
|
||||
image: 'https://q3.itc.cn/q_70/images03/20250110/1e71eecf56b34344bcae6a5b85c0bec2.jpeg',
|
||||
result: 'win',
|
||||
score: '',
|
||||
}
|
||||
])
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.container {
|
||||
min-height: 100vh;
|
||||
background-color: #f5f5f5;
|
||||
padding-bottom: 240rpx; /* 为底部键盘留出空间 */
|
||||
}
|
||||
|
||||
/* 顶部表头 */
|
||||
.table-header {
|
||||
<style scoped lang="less">
|
||||
.compute{
|
||||
display: flex;
|
||||
background-color: white;
|
||||
padding: 30rpx 40rpx;
|
||||
border-bottom: 1px solid #e0e0e0;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.header-player {
|
||||
flex: 1;
|
||||
font-size: 32rpx;
|
||||
color: #333;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.header-result {
|
||||
width: 200rpx;
|
||||
font-size: 32rpx;
|
||||
color: #333;
|
||||
font-weight: 500;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.header-score {
|
||||
width: 200rpx;
|
||||
font-size: 32rpx;
|
||||
color: #333;
|
||||
font-weight: 500;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* 玩家信息区域 */
|
||||
.player-row {
|
||||
flex-direction: column;
|
||||
.compute-lan{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 30rpx 40rpx;
|
||||
border-bottom: 1px solid #f5f5f5;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.player-info {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.player-avatar {
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
border-radius: 16rpx;
|
||||
background-color: #1e3a8a;
|
||||
padding: 0 15rpx;
|
||||
border-bottom: 1px solid #eee;
|
||||
.player{
|
||||
margin-right: 270rpx;
|
||||
}
|
||||
.vd{
|
||||
margin-right: 210rpx;
|
||||
}
|
||||
}
|
||||
.compute-detail{
|
||||
display: flex;
|
||||
padding: 20rpx 0;
|
||||
align-items: center;
|
||||
margin-top: 10rpx;
|
||||
.compute-detail-player{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
.player-name {
|
||||
font-size: 32rpx;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.result-buttons {
|
||||
width: 200rpx;
|
||||
width: 230rpx;
|
||||
text{
|
||||
font-size: 27rpx;
|
||||
}
|
||||
image{
|
||||
width: 70rpx;
|
||||
padding: 0 16rpx;
|
||||
}
|
||||
}
|
||||
.compute-detail-vd{
|
||||
display: flex;
|
||||
background-color: #f0f0f0;
|
||||
border-radius: 8rpx;
|
||||
padding: 4rpx;
|
||||
}
|
||||
|
||||
.result-btn {
|
||||
align-items: center;
|
||||
width: 200rpx;
|
||||
padding-left: 50rpx;
|
||||
.result-btn {
|
||||
flex: 1;
|
||||
padding: 12rpx 0;
|
||||
text-align: center;
|
||||
font-size: 28rpx;
|
||||
border-radius: 6rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.result-btn.active {
|
||||
background-color: #6a5acd;
|
||||
.result-btn.active {
|
||||
background-color:rgb(55, 47, 172);
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
.compute-detail-score{
|
||||
padding-left: 133rpx;
|
||||
.score-input{
|
||||
width: 50rpx;
|
||||
border-radius: 10rpx;
|
||||
border: 1px solid #eee;
|
||||
padding-left: 30rpx;
|
||||
}
|
||||
.score-input.positive {
|
||||
border-color: #4caf50;
|
||||
background-color: rgba(76, 175, 80, 0.05);
|
||||
}
|
||||
|
||||
.score-display {
|
||||
width: 200rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.score-value {
|
||||
font-size: 36rpx;
|
||||
color: #333;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.sum-btn {
|
||||
background-color: #6a5acd;
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 8rpx;
|
||||
padding: 12rpx 20rpx;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
/* 固定在底部的数字键盘 */
|
||||
.keyboard {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, 1fr);
|
||||
gap: 1px;
|
||||
background-color: #e0e0e0;
|
||||
padding: 1px;
|
||||
.score-input.negative {
|
||||
border-color: #f44336;
|
||||
background-color: rgba(244, 67, 54, 0.05);
|
||||
}
|
||||
}
|
||||
}
|
||||
button{
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
bottom: 40rpx;
|
||||
left: 0;
|
||||
right: 0;
|
||||
max-width: 750rpx;
|
||||
margin: 0 auto;
|
||||
}
|
||||
border-radius: 15rpx;
|
||||
background-color: rgb(55, 47, 172);
|
||||
color: #fff;
|
||||
// margin-top: 30rpx;
|
||||
// margin-left: 450rpx;
|
||||
width: 650rpx;
|
||||
}
|
||||
|
||||
.key {
|
||||
background-color: white;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 120rpx;
|
||||
font-size: 40rpx;
|
||||
}
|
||||
|
||||
.key:active {
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
.operator {
|
||||
color: #6a5acd;
|
||||
}
|
||||
|
||||
.minus {
|
||||
color: #ff4757;
|
||||
}
|
||||
|
||||
.submit-key {
|
||||
background-color: #8a2be2;
|
||||
color: white;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/* 调整键盘布局,使提交按钮在0的左侧 */
|
||||
.keyboard {
|
||||
grid-template-areas:
|
||||
"num1 num2 num3 plus delete"
|
||||
"num4 num5 num6 minus sqrt"
|
||||
"num7 num8 num9 submit num0";
|
||||
}
|
||||
|
||||
.key:nth-child(1) { grid-area: num1; }
|
||||
.key:nth-child(2) { grid-area: num2; }
|
||||
.key:nth-child(3) { grid-area: num3; }
|
||||
.key:nth-child(4) { grid-area: plus; }
|
||||
.key:nth-child(5) { grid-area: delete; }
|
||||
.key:nth-child(6) { grid-area: num4; }
|
||||
.key:nth-child(7) { grid-area: num5; }
|
||||
.key:nth-child(8) { grid-area: num6; }
|
||||
.key:nth-child(9) { grid-area: minus; }
|
||||
.key:nth-child(10) { grid-area: sqrt; }
|
||||
.key:nth-child(11) { grid-area: num7; }
|
||||
.key:nth-child(12) { grid-area: num8; }
|
||||
.key:nth-child(13) { grid-area: num9; }
|
||||
.key:nth-child(14) { grid-area: submit; }
|
||||
.key:nth-child(15) { grid-area: num0; }
|
||||
</style>
|
||||
@@ -62,6 +62,10 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="">
|
||||
{{roomData}}
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
@@ -69,8 +73,47 @@
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { getOpenId } from '@/utils/wxutils.js'
|
||||
import { GET, POST } from '../../utils/request'
|
||||
import StaticValue from '@/utils/StaticValue.js';
|
||||
const loading = ref(false);
|
||||
//定义承接本地用户信息对象
|
||||
const roomData = ref([]);
|
||||
|
||||
const gotoNewPage = () => {
|
||||
onMounted(() => {
|
||||
const getUserInfo = StaticValue.getUserInfo;
|
||||
roomData.value = getUserInfo();
|
||||
})
|
||||
|
||||
|
||||
const gotoNewPage = async () => {
|
||||
//判断有无历史房间记录
|
||||
const response = await GET('/system/room/createUser/'+ roomData.value.userId);
|
||||
//检查是否请求成功
|
||||
if (response.code = 200) {
|
||||
//检查数组是否有对象
|
||||
const dataArray = response.data;
|
||||
if (dataArray && dataArray.length > 0) {
|
||||
console.log(`查询到 ${dataArray.length} 条房间记录`);
|
||||
|
||||
} else {
|
||||
// 数据条数为0,执行B方法
|
||||
console.log('未查询到房间记录,新建个人房间');
|
||||
//创建新房间
|
||||
POST('/system/room', {
|
||||
createUser: roomData.value.userId,
|
||||
odds: 1,
|
||||
roomStatus: 1,
|
||||
bossId: roomData.value.userId,
|
||||
roomName: `${roomData.value.nickName}的房间`,
|
||||
});
|
||||
}
|
||||
} else {
|
||||
console.error('接口请求失败:', response.msg);
|
||||
uni.showToast({
|
||||
title: '查询失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
wx.navigateTo({
|
||||
url: '/pages/single/single'
|
||||
})
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
<view class="info-content">
|
||||
<view class="top-user-name" :style="{'height': topHeight, 'line-height': topHeight}">
|
||||
{{userInfo.nickName}}
|
||||
|
||||
</view>
|
||||
<view class="avatars">
|
||||
<image class="avatar-img" :src="userInfo.avatarUrl ? userInfo.avatarUrl : 'https://pic.rmb.bdstatic.com/bjh/down/1742bc3845cbbcf0c78c01eb59bb1c1a.jpeg'"></image>
|
||||
|
||||
@@ -22,32 +22,37 @@
|
||||
<text class="sing-detail-title">对局记录</text>
|
||||
<text>点击对局分数进行修改</text>
|
||||
</view>
|
||||
<view class="single-score">
|
||||
|
||||
|
||||
<scroll-view class="single-score" scroll-x="true" >
|
||||
<text style="color: red;" class="score-remind">
|
||||
点击头像编辑自己的昵称和性别~
|
||||
</text>
|
||||
<view class="single-score-record">
|
||||
<view class="score-record-player">
|
||||
<text class="score-head">玩家</text>
|
||||
<view v-for="(item,index) in players" :key="index" class="player" @click="gotoNewPage">
|
||||
<image :src="item.avatar" mode="widthFix"></image>
|
||||
<text>{{item.name}}</text>
|
||||
<view class="tab-head">
|
||||
<text class="tab-head-player">玩家</text>
|
||||
<text class="tab-head-total">总分</text>
|
||||
<view class="tab-head-detail" v-for="n in maxRounds" :key="n">
|
||||
第{{n}}局
|
||||
</view>
|
||||
</view>
|
||||
<view class="score-record-all">
|
||||
<text class="score-head">总分</text>
|
||||
<view class="all-score" v-for="(item,index) in allscores" :key="item.id">
|
||||
{{item.allscore}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="score-record-all" v-for="match in matchs" :key="match.id">
|
||||
<text class="score-head">第{{match.gametime}}局</text>
|
||||
<view class="all-score" v-for="(item,index) in match.details" :key="item.id">
|
||||
{{item.score}}
|
||||
</view>
|
||||
<view v-for="(item,index) in userScores" :key="item.userId" class="tab-body">
|
||||
<view class="tab-body-player">
|
||||
<image :src=item.avatars mode="widthFix"></image>
|
||||
<text>{{item.nickName}}</text>
|
||||
</view>
|
||||
<view class="tab-total-score">
|
||||
{{formatScore(item.totalScore)}}
|
||||
</view>
|
||||
<view v-for="detail in item.details" :key="detail.gameTime" class="round-score">
|
||||
{{formatScore(detail.detailScore)}}
|
||||
</view>
|
||||
</view>
|
||||
{{userScores}}
|
||||
</view>
|
||||
</scroll-view>
|
||||
|
||||
|
||||
<view class="single-bottom">
|
||||
<button
|
||||
style="color: aliceblue;
|
||||
@@ -88,12 +93,12 @@
|
||||
</view>
|
||||
<view class="line"></view>
|
||||
<view class="lan-input">
|
||||
<uni-easyinput v-model="value" placeholder="请输入名称" style="width: 500rpx;"></uni-easyinput>
|
||||
<uni-easyinput v-model="newPlayerName" placeholder="请输入名称" style="width: 500rpx;" @confirm="confirmAddPlayer"></uni-easyinput>
|
||||
</view>
|
||||
|
||||
<view class="lan-button">
|
||||
<button @click="closevirtue">取消</button>
|
||||
<button @click="closevirtue">确定</button>
|
||||
<button @click="confirmAddPlayer">确定</button>
|
||||
</view>
|
||||
</view>
|
||||
</l-popup>
|
||||
@@ -113,10 +118,143 @@
|
||||
</view>
|
||||
</view>
|
||||
</l-popup>
|
||||
<!-- 加载提示 -->
|
||||
<uni-load-more v-if="isLoading" status="loading" />
|
||||
</view>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue';
|
||||
import { ref, onMounted, computed} from 'vue';
|
||||
import { GET, POST } from '../../utils/request';
|
||||
import { onLoad } from '@dcloudio/uni-app';
|
||||
import StaticValue from '@/utils/StaticValue.js';
|
||||
//获取本地用户数据
|
||||
|
||||
const roomData = ref([]);
|
||||
|
||||
//加载动画
|
||||
const isLoading = ref(false);
|
||||
//添加玩家输入框
|
||||
const newPlayerName = ref('');
|
||||
//接收后端返回的表格数组
|
||||
const userScores = ref([]);
|
||||
|
||||
//确认添加玩家按钮
|
||||
const confirmAddPlayer = async () => {
|
||||
|
||||
//拿到本地用户所在的房间id
|
||||
const response = await GET('/system/room/createUser/'+ roomData.value.userId);
|
||||
//show信息
|
||||
console.log(response);
|
||||
if (response.code === 200) {
|
||||
uni.showToast({
|
||||
title: '查询roomId成功',
|
||||
icon: 'success'
|
||||
});
|
||||
|
||||
const dataArray = response.data;
|
||||
console.log('dataArray.roomId:', dataArray[0].roomId);
|
||||
// 使用 trim() 去除前后空格
|
||||
const trimmedName = newPlayerName.value.trim();
|
||||
|
||||
const userData = {
|
||||
nickName: trimmedName, // 使用 trim() 处理后的名称
|
||||
avatars: "https://img1.baidu.com/it/u=3612220943,2414740890&fm=253&app=138&f=JPEG?w=526&h=500",
|
||||
openId: generateTenDigitRandom().toString(),
|
||||
};
|
||||
|
||||
const userResponse = await POST('/system/score/user/add', userData);
|
||||
|
||||
if (userResponse.code === 200) {
|
||||
// 关键修改:正确获取后端返回的userId
|
||||
const userId1 = userResponse.data.userId; // 从响应数据的data中获取
|
||||
|
||||
console.log('新创建的用户ID:', userId1);
|
||||
|
||||
// 2. 然后插入 score_room_user 表
|
||||
const roomUserData = {
|
||||
roomId: dataArray[0].roomId,
|
||||
userId: userId1, // 使用后端返回的userId
|
||||
totalScore: 0,
|
||||
playerType: 'robot',
|
||||
nickName: trimmedName,
|
||||
avatars: "https://img1.baidu.com/it/u=3612220943,2414740890&fm=253&app=138&f=JPEG?w=526&h=500",
|
||||
};
|
||||
//插入room_user表中
|
||||
const response = await POST('/system/score/room/user', roomUserData);
|
||||
console.log("返回结果: ", response)
|
||||
if (response.code === 200) {
|
||||
// 2. 插入成功后立即刷新数据
|
||||
fetchUserScores();
|
||||
console.log('添加新玩家成功');
|
||||
uni.showToast({
|
||||
title: '添加成功,数据已更新',
|
||||
icon: 'success'
|
||||
});
|
||||
}
|
||||
virtueplayer.value = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 生成10位随机数(范围:1000000000 - 9999999999)
|
||||
function generateTenDigitRandom() {
|
||||
return Math.floor(Math.random() * 9000000000) + 1000000000;
|
||||
}
|
||||
|
||||
// 计算最大局数(确保表头列数正确)
|
||||
const maxRounds = computed(() => {
|
||||
if (!userScores.value.length) return 0;
|
||||
let max = 0;
|
||||
userScores.value.forEach(user => {
|
||||
if (user.details && user.details.length > 0) {
|
||||
user.details.forEach(detail => {
|
||||
if (detail.gameTime > max) max = detail.gameTime;
|
||||
});
|
||||
}
|
||||
});
|
||||
return max;
|
||||
});
|
||||
|
||||
const round = computed(() => {
|
||||
const rounds = maxRounds.value;
|
||||
return isNaN(rounds) ? 0 : Math.max(0, rounds + 1);
|
||||
});
|
||||
console.log("round:",round);
|
||||
// 分数格式化
|
||||
const formatScore = (score) => {
|
||||
return score > 0 ? `+${score}` : `${score}`;
|
||||
};
|
||||
|
||||
// 获取分数数据的函数
|
||||
const fetchUserScores = async () => {
|
||||
try {
|
||||
//拿到本地用户所在的房间id
|
||||
const response2 = await GET('/system/room/createUser/'+ roomData.value.userId);
|
||||
//show信息
|
||||
console.log(response2);
|
||||
|
||||
const dataArray1 = response2.data;
|
||||
console.log('房间号为:', dataArray1[0].roomId);
|
||||
var roomId1 = dataArray1[0].roomId;
|
||||
|
||||
const response3 = await GET(`/system/score/room/user/user-details/${roomId1}`);
|
||||
if (response3.code === 200) {
|
||||
userScores.value = response3.data;
|
||||
|
||||
console.log('用户得分数据加载成功');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取用户得分失败:', error);
|
||||
}
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
const getUserInfo = StaticValue.getUserInfo;
|
||||
roomData.value = getUserInfo();
|
||||
fetchUserScores();
|
||||
console.log("userScores为:",userScores);
|
||||
})
|
||||
|
||||
//跳转至user-detail
|
||||
const gotoNewPage = () => {
|
||||
wx.navigateTo({
|
||||
@@ -126,8 +264,14 @@ const gotoNewPage = () => {
|
||||
|
||||
//跳转至compute
|
||||
const gotoNewPage1 = () => {
|
||||
const roomUserData1 = ref(userScores);
|
||||
|
||||
|
||||
const encodedPlayers = encodeURIComponent(JSON.stringify(roomUserData1.value));
|
||||
const encodedRound = encodeURIComponent(JSON.stringify(round.value));
|
||||
|
||||
wx.navigateTo({
|
||||
url: '/pages/compute/compute'
|
||||
url: `/pages/compute/compute?players=${encodedPlayers}&round=${encodedRound}`
|
||||
})
|
||||
}
|
||||
|
||||
@@ -177,60 +321,63 @@ const closemultiple = ()=>{
|
||||
isPopupVisible2.value = false;
|
||||
}
|
||||
|
||||
const matchs = ref([
|
||||
{
|
||||
id: 1,
|
||||
gametime: 1,
|
||||
details: [
|
||||
{id: 101, score: "+"+10},
|
||||
{id: 102, score: "+"+20},
|
||||
{id: 103, score: "-"+30}
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
gametime: 2,
|
||||
details: [
|
||||
{id: 201, score: "+"+10},
|
||||
{id: 202, score: "+"+20},
|
||||
{id: 203, score: "-"+30}
|
||||
]
|
||||
}
|
||||
])
|
||||
// const matchs = ref([
|
||||
// {
|
||||
// id: 1,
|
||||
// gametime: 1,
|
||||
// details: [
|
||||
// {id: 101, score: "+"+10},
|
||||
// {id: 102, score: "+"+20},
|
||||
// {id: 103, score: "-"+30}
|
||||
// ],
|
||||
// },
|
||||
// {
|
||||
// id: 2,
|
||||
// gametime: 2,
|
||||
// details: [
|
||||
// {id: 201, score: "+"+10},
|
||||
// {id: 202, score: "+"+20},
|
||||
// {id: 203, score: "-"+30}
|
||||
// ]
|
||||
// }
|
||||
// ])
|
||||
|
||||
const allscores = ref([
|
||||
{
|
||||
id: 301,
|
||||
allscore: "+"+ 20,
|
||||
},
|
||||
{
|
||||
id: 302,
|
||||
allscore: "+"+ 40,
|
||||
},
|
||||
{ id: 303,
|
||||
allscore: "-"+ 60,
|
||||
}
|
||||
])
|
||||
// const allscores = ref([
|
||||
// {
|
||||
// id: 301,
|
||||
// allscore: "+"+ 20,
|
||||
// },
|
||||
// {
|
||||
// id: 302,
|
||||
// allscore: "+"+ 40,
|
||||
// },
|
||||
// { id: 303,
|
||||
// allscore: "-"+ 60,
|
||||
// }
|
||||
// ])
|
||||
// const details = ref(
|
||||
// score[1,2,3]
|
||||
// )
|
||||
const players = ref([
|
||||
{
|
||||
id: 401,
|
||||
name: '刘备',
|
||||
avatar: 'https://img1.baidu.com/it/u=3612220943,2414740890&fm=253&app=138&f=JPEG?w=526&h=500'
|
||||
},
|
||||
{
|
||||
id: 401,
|
||||
name: "赵云",
|
||||
avatar: 'https://q3.itc.cn/q_70/images03/20250110/1e71eecf56b34344bcae6a5b85c0bec2.jpeg'
|
||||
},
|
||||
{
|
||||
id: 401,
|
||||
name: "张飞",
|
||||
avatar: 'https://q1.itc.cn/q_70/images03/20241119/197701bb9ef34b20b6497720081a9972.jpeg'
|
||||
}
|
||||
])
|
||||
// const players = ref([
|
||||
// {
|
||||
// id: 401,
|
||||
// name: '刘备',
|
||||
// avatar: 'https://img1.baidu.com/it/u=3612220943,2414740890&fm=253&app=138&f=JPEG?w=526&h=500',
|
||||
// playerType: 'user'
|
||||
// },
|
||||
// {
|
||||
// id: 401,
|
||||
// name: "赵云",
|
||||
// avatar: 'https://q3.itc.cn/q_70/images03/20250110/1e71eecf56b34344bcae6a5b85c0bec2.jpeg',
|
||||
// playerType: 'user'
|
||||
// },
|
||||
// {
|
||||
// id: 401,
|
||||
// name: "张飞",
|
||||
// avatar: 'https://q1.itc.cn/q_70/images03/20241119/197701bb9ef34b20b6497720081a9972.jpeg',
|
||||
// playerType: 'user'
|
||||
// }
|
||||
// ])
|
||||
|
||||
</script>
|
||||
|
||||
@@ -288,6 +435,64 @@ const players = ref([
|
||||
padding-top: 20rpx;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.single-score-record{
|
||||
display: flex;
|
||||
margin-top: 20rpx;
|
||||
.tab-head{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-left: 20rpx;
|
||||
margin-right: 30rpx;
|
||||
width: 100rpx;
|
||||
align-items: center;
|
||||
.tab-head-player{
|
||||
padding-top: 30rpx;
|
||||
height: 90rpx;
|
||||
width: 100rpx;
|
||||
|
||||
}
|
||||
.tab-head-total{
|
||||
padding-top: 20rpx;
|
||||
width: 100rpx;
|
||||
}
|
||||
.tab-head-detail{
|
||||
margin-top: 60rpx;
|
||||
width: 100rpx;
|
||||
}
|
||||
}
|
||||
.tab-body{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-right: 60rpx;
|
||||
.tab-body-player{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
height: 120rpx;
|
||||
width: 100rpx;
|
||||
image{
|
||||
width: 80rpx;
|
||||
}
|
||||
text{
|
||||
font-size: 30rpx;
|
||||
}
|
||||
}
|
||||
.tab-total-score{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
.round-score{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-top: 60rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.score-remind{
|
||||
align-self: center;
|
||||
font-size: 29rpx;
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
{"version":3,"file":"CommonValues.js","sources":["utils/CommonValues.js"],"sourcesContent":["\r\nexport const BASE_URL = 'http://localhost:8080';\r\n// export const BASE_URL = 'https://www.jianxinghome.cn:8484';\r\n// export const BASE_URL = 'https://www.safeguardfull.cn:8484';\r\n\r\n\r\nexport const WEBSOCKET_URL = 'wss://www.safeguardfull.cn:8484/websocket';\r\nexport default {\r\n\tBASE_URL,\r\n\tWEBSOCKET_URL\r\n}"],"names":[],"mappings":";AACY,MAAC,WAAW;;"}
|
||||
{"version":3,"file":"CommonValues.js","sources":["utils/CommonValues.js"],"sourcesContent":["\r\nexport const BASE_URL = 'http://172.19.45.41:8080';\r\n// export const BASE_URL = 'https://www.jianxinghome.cn:8484';\r\n// export const BASE_URL = 'https://www.safeguardfull.cn:8484';\r\n\r\n\r\nexport const WEBSOCKET_URL = 'wss://www.safeguardfull.cn:8484/websocket';\r\nexport default {\r\n\tBASE_URL,\r\n\tWEBSOCKET_URL\r\n}"],"names":[],"mappings":";AACY,MAAC,WAAW;;"}
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"request.js","sources":["utils/request.js"],"sourcesContent":["import { BASE_URL } from './CommonValues.js';\r\nimport { loginSystem } from '@/api/login.js';\r\n\r\nexport function GET(url, data) {\r\n\treturn SIMPLE(url, data, 'GET');\r\n}\r\nexport function GET_TOKEN(url, data, token) {\r\n\treturn SIMPLE_TOKEN(url, data, token, 'GET');\r\n}\r\n\r\nexport function POST(url, data) {\r\n\treturn SIMPLE(url, data, 'POST');\r\n}\r\n\r\nexport function POST_TOKEN(url, data) {\r\n\treturn SIMPLE_TOKEN(url, data, token, 'POST');\r\n}\r\n\r\nexport function DELETE(url, data) {\r\n\treturn SIMPLE(url, data, 'DELETE');\r\n}\r\n\r\nexport function PUT(url, data) {\r\n\treturn SIMPLE(url, data, 'PUT');\r\n}\r\n\r\nlet requestTime = 0;\r\n\r\nexport async function SIMPLE(url, data, method) {\r\n\t// 防止首次访问没有token\r\n\tif(requestTime == 0) {\r\n\t\ttoken = await loginSystem();\r\n\t\tif(token.data) {\r\n\t\t\t// 如果有code表示没有拿到token\r\n\t\t\tSIMPLE(url, data, method)\r\n\t\t\treturn;\r\n\t\t}\r\n\t\trequestTime += 1;\r\n\t} else {\r\n\t\tvar token = uni.getStorageSync(\"APP_TOKEN\");\r\n\t}\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tuni.request({\r\n\t\t\turl: `${BASE_URL}${url}`,\r\n\t\t\tmethod: method, \r\n\t\t\theader: {\r\n\t\t\t\t\"Content-Type\": \"application/json;charset=utf-8\",\r\n\t\t\t\t\"Authorization\": token\r\n\t\t\t},\r\n\t\t\tdataType: 'json',\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: res => {\r\n\t\t\t\tif(res.data.code == '200' || res.data.statusCode == '200') {\r\n\t\t\t\t\tresolve(res.data)\r\n\t\t\t\t} else {\r\n\t\t\t\t\treject(res)\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tfail: err => {\r\n\t\t\t\treject(err)\r\n\t\t\t}\r\n\t\t})\r\n\t})\r\n}\r\n\r\nexport function SIMPLE_TOKEN(url, data, token, method) {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tuni.request({\r\n\t\t\turl: `${BASE_URL}${url}`,\r\n\t\t\tmethod: method, \r\n\t\t\theader: {\r\n\t\t\t\t\"Content-Type\": \"application/json;charset=utf-8\",\r\n\t\t\t\t\"Authorization\": token\r\n\t\t\t},\r\n\t\t\tdataType: 'json',\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: res => {\r\n\t\t\t\tif(res.data.code == '200' || res.data.statusCode == '200') {\r\n\t\t\t\t\tresolve(res.data)\r\n\t\t\t\t} else {\r\n\t\t\t\t\treject(res)\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tfail: err => {\r\n\t\t\t\treject(err)\r\n\t\t\t}\r\n\t\t})\r\n\t})\r\n}\r\n\r\nexport default {\r\n\tGET,\r\n\tPOST,\r\n\tDELETE,\r\n\tPUT,\r\n\tGET_TOKEN\r\n}"],"names":["loginSystem","uni","BASE_URL"],"mappings":";;;;AAMO,SAAS,UAAU,KAAK,MAAM,OAAO;AAC3C,SAAO,aAAa,KAAK,MAAM,OAAO,KAAK;AAC5C;AAEO,SAAS,KAAK,KAAK,MAAM;AAC/B,SAAO,OAAO,KAAK,MAAM,MAAM;AAChC;AAcA,IAAI,cAAc;AAEX,eAAe,OAAO,KAAK,MAAM,QAAQ;AAE/C,MAAG,eAAe,GAAG;AACpB,YAAQ,MAAMA,UAAAA;AACd,QAAG,MAAM,MAAM;AAEd,aAAO,KAAK,MAAM,MAAM;AACxB;AAAA,IACA;AACD,mBAAe;AAAA,EACjB,OAAQ;AACN,QAAI,QAAQC,cAAAA,MAAI,eAAe,WAAW;AAAA,EAC1C;AACD,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvCA,kBAAAA,MAAI,QAAQ;AAAA,MACX,KAAK,GAAGC,2BAAQ,GAAG,GAAG;AAAA,MACtB;AAAA,MACA,QAAQ;AAAA,QACP,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,MACjB;AAAA,MACD,UAAU;AAAA,MACV;AAAA,MACA,SAAS,SAAO;AACf,YAAG,IAAI,KAAK,QAAQ,SAAS,IAAI,KAAK,cAAc,OAAO;AAC1D,kBAAQ,IAAI,IAAI;AAAA,QACrB,OAAW;AACN,iBAAO,GAAG;AAAA,QACV;AAAA,MACD;AAAA,MACD,MAAM,SAAO;AACZ,eAAO,GAAG;AAAA,MACV;AAAA,IACJ,CAAG;AAAA,EACH,CAAE;AACF;AAEO,SAAS,aAAa,KAAK,MAAM,OAAO,QAAQ;AACtD,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvCD,kBAAAA,MAAI,QAAQ;AAAA,MACX,KAAK,GAAGC,2BAAQ,GAAG,GAAG;AAAA,MACtB;AAAA,MACA,QAAQ;AAAA,QACP,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,MACjB;AAAA,MACD,UAAU;AAAA,MACV;AAAA,MACA,SAAS,SAAO;AACf,YAAG,IAAI,KAAK,QAAQ,SAAS,IAAI,KAAK,cAAc,OAAO;AAC1D,kBAAQ,IAAI,IAAI;AAAA,QACrB,OAAW;AACN,iBAAO,GAAG;AAAA,QACV;AAAA,MACD;AAAA,MACD,MAAM,SAAO;AACZ,eAAO,GAAG;AAAA,MACV;AAAA,IACJ,CAAG;AAAA,EACH,CAAE;AACF;;;"}
|
||||
{"version":3,"file":"request.js","sources":["utils/request.js"],"sourcesContent":["import { BASE_URL } from './CommonValues.js';\r\nimport { loginSystem } from '@/api/login.js';\r\n\r\nexport function GET(url, data) {\r\n\treturn SIMPLE(url, data, 'GET');\r\n}\r\nexport function GET_TOKEN(url, data, token) {\r\n\treturn SIMPLE_TOKEN(url, data, token, 'GET');\r\n}\r\n\r\nexport function POST(url, data) {\r\n\treturn SIMPLE(url, data, 'POST');\r\n}\r\n\r\nexport function POST_TOKEN(url, data) {\r\n\treturn SIMPLE_TOKEN(url, data, token, 'POST');\r\n}\r\n\r\nexport function DELETE(url, data) {\r\n\treturn SIMPLE(url, data, 'DELETE');\r\n}\r\n\r\nexport function PUT(url, data) {\r\n\treturn SIMPLE(url, data, 'PUT');\r\n}\r\n\r\nlet requestTime = 0;\r\n\r\nexport async function SIMPLE(url, data, method) {\r\n\t// 防止首次访问没有token\r\n\tif(requestTime == 0) {\r\n\t\ttoken = await loginSystem();\r\n\t\tif(token.data) {\r\n\t\t\t// 如果有code表示没有拿到token\r\n\t\t\tSIMPLE(url, data, method)\r\n\t\t\treturn;\r\n\t\t}\r\n\t\trequestTime += 1;\r\n\t} else {\r\n\t\tvar token = uni.getStorageSync(\"APP_TOKEN\");\r\n\t}\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tuni.request({\r\n\t\t\turl: `${BASE_URL}${url}`,\r\n\t\t\tmethod: method, \r\n\t\t\theader: {\r\n\t\t\t\t\"Content-Type\": \"application/json;charset=utf-8\",\r\n\t\t\t\t\"Authorization\": token\r\n\t\t\t},\r\n\t\t\tdataType: 'json',\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: res => {\r\n\t\t\t\tif(res.data.code == '200' || res.data.statusCode == '200') {\r\n\t\t\t\t\tresolve(res.data)\r\n\t\t\t\t} else {\r\n\t\t\t\t\treject(res)\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tfail: err => {\r\n\t\t\t\treject(err)\r\n\t\t\t}\r\n\t\t})\r\n\t})\r\n}\r\n\r\nexport function SIMPLE_TOKEN(url, data, token, method) {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tuni.request({\r\n\t\t\turl: `${BASE_URL}${url}`,\r\n\t\t\tmethod: method, \r\n\t\t\theader: {\r\n\t\t\t\t\"Content-Type\": \"application/json;charset=utf-8\",\r\n\t\t\t\t\"Authorization\": token\r\n\t\t\t},\r\n\t\t\tdataType: 'json',\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: res => {\r\n\t\t\t\tif(res.data.code == '200' || res.data.statusCode == '200') {\r\n\t\t\t\t\tresolve(res.data)\r\n\t\t\t\t} else {\r\n\t\t\t\t\treject(res)\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tfail: err => {\r\n\t\t\t\treject(err)\r\n\t\t\t}\r\n\t\t})\r\n\t})\r\n}\r\n\r\nexport default {\r\n\tGET,\r\n\tPOST,\r\n\tDELETE,\r\n\tPUT,\r\n\tGET_TOKEN\r\n}"],"names":["loginSystem","uni","BASE_URL"],"mappings":";;;;AAGO,SAAS,IAAI,KAAK,MAAM;AAC9B,SAAO,OAAO,KAAK,MAAM,KAAK;AAC/B;AACO,SAAS,UAAU,KAAK,MAAM,OAAO;AAC3C,SAAO,aAAa,KAAK,MAAM,OAAO,KAAK;AAC5C;AAEO,SAAS,KAAK,KAAK,MAAM;AAC/B,SAAO,OAAO,KAAK,MAAM,MAAM;AAChC;AAcA,IAAI,cAAc;AAEX,eAAe,OAAO,KAAK,MAAM,QAAQ;AAE/C,MAAG,eAAe,GAAG;AACpB,YAAQ,MAAMA,UAAAA;AACd,QAAG,MAAM,MAAM;AAEd,aAAO,KAAK,MAAM,MAAM;AACxB;AAAA,IACA;AACD,mBAAe;AAAA,EACjB,OAAQ;AACN,QAAI,QAAQC,cAAAA,MAAI,eAAe,WAAW;AAAA,EAC1C;AACD,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvCA,kBAAAA,MAAI,QAAQ;AAAA,MACX,KAAK,GAAGC,2BAAQ,GAAG,GAAG;AAAA,MACtB;AAAA,MACA,QAAQ;AAAA,QACP,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,MACjB;AAAA,MACD,UAAU;AAAA,MACV;AAAA,MACA,SAAS,SAAO;AACf,YAAG,IAAI,KAAK,QAAQ,SAAS,IAAI,KAAK,cAAc,OAAO;AAC1D,kBAAQ,IAAI,IAAI;AAAA,QACrB,OAAW;AACN,iBAAO,GAAG;AAAA,QACV;AAAA,MACD;AAAA,MACD,MAAM,SAAO;AACZ,eAAO,GAAG;AAAA,MACV;AAAA,IACJ,CAAG;AAAA,EACH,CAAE;AACF;AAEO,SAAS,aAAa,KAAK,MAAM,OAAO,QAAQ;AACtD,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvCD,kBAAAA,MAAI,QAAQ;AAAA,MACX,KAAK,GAAGC,2BAAQ,GAAG,GAAG;AAAA,MACtB;AAAA,MACA,QAAQ;AAAA,QACP,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,MACjB;AAAA,MACD,UAAU;AAAA,MACV;AAAA,MACA,SAAS,SAAO;AACf,YAAG,IAAI,KAAK,QAAQ,SAAS,IAAI,KAAK,cAAc,OAAO;AAC1D,kBAAQ,IAAI,IAAI;AAAA,QACrB,OAAW;AACN,iBAAO,GAAG;AAAA,QACV;AAAA,MACD;AAAA,MACD,MAAM,SAAO;AACZ,eAAO,GAAG;AAAA,MACV;AAAA,IACJ,CAAG;AAAA,EACH,CAAE;AACF;;;;"}
|
||||
@@ -7053,9 +7053,9 @@ function isConsoleWritable() {
|
||||
return isWritable;
|
||||
}
|
||||
function initRuntimeSocketService() {
|
||||
const hosts = "192.168.134.168,127.0.0.1";
|
||||
const hosts = "172.19.45.41,127.0.0.1";
|
||||
const port = "8090";
|
||||
const id = "mp-weixin_yHS1qO";
|
||||
const id = "mp-weixin_hNfmC4";
|
||||
const lazy = typeof swan !== "undefined";
|
||||
let restoreError = lazy ? () => {
|
||||
} : initOnError();
|
||||
@@ -8001,6 +8001,14 @@ const createSubpackageApp = initCreateSubpackageApp();
|
||||
wx.createPluginApp = global.createPluginApp = createPluginApp;
|
||||
wx.createSubpackageApp = global.createSubpackageApp = createSubpackageApp;
|
||||
}
|
||||
const createLifeCycleHook = (lifecycle, flag = 0) => (hook, target = getCurrentInstance()) => {
|
||||
!isInSSRComponentSetup && injectHook(lifecycle, hook, target);
|
||||
};
|
||||
const onLoad = /* @__PURE__ */ createLifeCycleHook(
|
||||
ON_LOAD,
|
||||
2
|
||||
/* HookFlags.PAGE */
|
||||
);
|
||||
exports._export_sfc = _export_sfc;
|
||||
exports.computed = computed;
|
||||
exports.createSSRApp = createSSRApp;
|
||||
@@ -8013,6 +8021,7 @@ exports.inject = inject;
|
||||
exports.n = n;
|
||||
exports.nextTick$1 = nextTick$1;
|
||||
exports.o = o;
|
||||
exports.onLoad = onLoad;
|
||||
exports.onMounted = onMounted;
|
||||
exports.p = p;
|
||||
exports.ref = ref;
|
||||
|
||||
@@ -1,197 +1,111 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../../common/vendor.js");
|
||||
if (!Array) {
|
||||
const _component_ellipse = common_vendor.resolveComponent("ellipse");
|
||||
const _component_circle = common_vendor.resolveComponent("circle");
|
||||
const _component_path = common_vendor.resolveComponent("path");
|
||||
const _component_rect = common_vendor.resolveComponent("rect");
|
||||
const _component_svg = common_vendor.resolveComponent("svg");
|
||||
(_component_ellipse + _component_circle + _component_path + _component_rect + _component_svg)();
|
||||
}
|
||||
const _sfc_main = {
|
||||
__name: "compute",
|
||||
setup(__props) {
|
||||
const result = common_vendor.ref("win");
|
||||
const score = common_vendor.ref("0");
|
||||
const keys = [
|
||||
{ value: "1", display: "1", type: "number" },
|
||||
{ value: "2", display: "2", type: "number" },
|
||||
{ value: "3", display: "3", type: "number" },
|
||||
{ value: "+", display: "+", type: "operator" },
|
||||
{ value: "×", display: "×", type: "delete" },
|
||||
{ value: "4", display: "4", type: "number" },
|
||||
{ value: "5", display: "5", type: "number" },
|
||||
{ value: "6", display: "6", type: "number" },
|
||||
{ value: "-", display: "-", type: "operator" },
|
||||
{ value: "√", display: "√", type: "operator" },
|
||||
{ value: "7", display: "7", type: "number" },
|
||||
{ value: "8", display: "8", type: "number" },
|
||||
{ value: "9", display: "9", type: "number" },
|
||||
{ value: "submit", display: "提交", type: "submit" },
|
||||
// 提交按钮在0的左侧
|
||||
{ value: "0", display: "0", type: "number" }
|
||||
];
|
||||
const setResult = (res) => {
|
||||
result.value = res;
|
||||
const players1 = common_vendor.ref([]);
|
||||
const round1 = common_vendor.ref();
|
||||
common_vendor.ref([]);
|
||||
const setResult = (index, result) => {
|
||||
players1.value[index].result = result;
|
||||
if (players1.value[index].score) {
|
||||
validateScore(index);
|
||||
}
|
||||
};
|
||||
const pressKey = (key, type) => {
|
||||
if (type === "submit") {
|
||||
if (score.value !== "0") {
|
||||
common_vendor.index.showToast({
|
||||
title: `分数 ${score.value} 已提交`,
|
||||
icon: "success"
|
||||
const validateScore = (index) => {
|
||||
const player = players1.value[index];
|
||||
const score = parseFloat(player.score);
|
||||
if (isNaN(score)) {
|
||||
player.score = "";
|
||||
return;
|
||||
}
|
||||
if (player.result === "win" && score < 0) {
|
||||
player.score = Math.abs(score).toString();
|
||||
} else if (player.result === "lose" && score > 0) {
|
||||
player.score = (-score).toString();
|
||||
}
|
||||
};
|
||||
common_vendor.computed(() => {
|
||||
if (!players1.value.length)
|
||||
return 0;
|
||||
let max = 0;
|
||||
players1.value.forEach((user) => {
|
||||
if (user.details && user.details.length > 0) {
|
||||
user.details.forEach((detail) => {
|
||||
if (detail.gameTime > max)
|
||||
max = detail.gameTime;
|
||||
});
|
||||
common_vendor.index.__f__("log", "at pages/compute/compute.vue:110", "提交分数:", score.value);
|
||||
setTimeout(() => {
|
||||
score.value = "0";
|
||||
}, 1500);
|
||||
}
|
||||
} else if (key === "×") {
|
||||
if (score.value.length > 1) {
|
||||
score.value = score.value.slice(0, -1);
|
||||
} else {
|
||||
score.value = "0";
|
||||
}
|
||||
} else if (key === "√") {
|
||||
});
|
||||
return max;
|
||||
});
|
||||
common_vendor.onMounted(() => {
|
||||
});
|
||||
common_vendor.onLoad((options) => {
|
||||
try {
|
||||
const result2 = Math.sqrt(parseFloat(score.value));
|
||||
score.value = result2.toString();
|
||||
const rawData = JSON.parse(decodeURIComponent(options.players));
|
||||
round1.value = JSON.parse(decodeURIComponent(options.round));
|
||||
common_vendor.index.__f__("log", "at pages/compute/compute.vue:110", "round:", round1.value);
|
||||
players1.value = rawData.map((player) => ({
|
||||
...player,
|
||||
result: "win",
|
||||
score: "",
|
||||
gameTime: round1.value
|
||||
}));
|
||||
} catch (error) {
|
||||
score.value = "错误";
|
||||
setTimeout(() => {
|
||||
score.value = "0";
|
||||
}, 1e3);
|
||||
common_vendor.index.__f__("error", "at pages/compute/compute.vue:125", "解析失败:", error);
|
||||
players1.value = [];
|
||||
}
|
||||
} else {
|
||||
if (score.value === "0") {
|
||||
score.value = key;
|
||||
} else {
|
||||
score.value += key;
|
||||
}
|
||||
}
|
||||
};
|
||||
const sumScore = () => {
|
||||
common_vendor.index.showToast({
|
||||
title: "合分功能需要与后端API交互",
|
||||
icon: "none"
|
||||
});
|
||||
const onsubmit = async () => {
|
||||
const updataScore = players1.value.map((updata) => ({
|
||||
roomId: updata.roomId,
|
||||
userId: updata.userId,
|
||||
score: updata.score
|
||||
}));
|
||||
common_vendor.index.__f__("log", "at pages/compute/compute.vue:138", "输入框的值:", updataScore);
|
||||
};
|
||||
const usersData = common_vendor.ref([
|
||||
{
|
||||
id: 1,
|
||||
nickName: "玩家12324",
|
||||
image: "https://img1.baidu.com/it/u=3612220943,2414740890&fm=253&app=138&f=JPEG?w=526&h=500",
|
||||
result: "win",
|
||||
score: ""
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
nickName: "赵云",
|
||||
image: "https://q3.itc.cn/q_70/images03/20250110/1e71eecf56b34344bcae6a5b85c0bec2.jpeg",
|
||||
result: "win",
|
||||
score: ""
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
nickName: "刘备",
|
||||
image: "https://q3.itc.cn/q_70/images03/20250110/1e71eecf56b34344bcae6a5b85c0bec2.jpeg",
|
||||
result: "win",
|
||||
score: ""
|
||||
}
|
||||
]);
|
||||
return (_ctx, _cache) => {
|
||||
return {
|
||||
a: common_vendor.p({
|
||||
cx: "15",
|
||||
cy: "20",
|
||||
rx: "9",
|
||||
ry: "6",
|
||||
fill: "#ffffff"
|
||||
}),
|
||||
b: common_vendor.p({
|
||||
cx: "15",
|
||||
cy: "12",
|
||||
r: "7",
|
||||
fill: "#ffffff"
|
||||
}),
|
||||
c: common_vendor.p({
|
||||
cx: "12",
|
||||
cy: "8",
|
||||
rx: "2",
|
||||
ry: "4",
|
||||
fill: "#ffffff"
|
||||
}),
|
||||
d: common_vendor.p({
|
||||
cx: "18",
|
||||
cy: "8",
|
||||
rx: "2",
|
||||
ry: "4",
|
||||
fill: "#ffffff"
|
||||
}),
|
||||
e: common_vendor.p({
|
||||
cx: "12",
|
||||
cy: "8",
|
||||
rx: "1",
|
||||
ry: "3",
|
||||
fill: "#ffb6c1"
|
||||
}),
|
||||
f: common_vendor.p({
|
||||
cx: "18",
|
||||
cy: "8",
|
||||
rx: "1",
|
||||
ry: "3",
|
||||
fill: "#ffb6c1"
|
||||
}),
|
||||
g: common_vendor.p({
|
||||
cx: "13",
|
||||
cy: "12",
|
||||
r: "1",
|
||||
fill: "#333333"
|
||||
}),
|
||||
h: common_vendor.p({
|
||||
cx: "17",
|
||||
cy: "12",
|
||||
r: "1",
|
||||
fill: "#333333"
|
||||
}),
|
||||
i: common_vendor.p({
|
||||
cx: "15",
|
||||
cy: "14",
|
||||
r: "0.8",
|
||||
fill: "#ff69b4"
|
||||
}),
|
||||
j: common_vendor.p({
|
||||
d: "M14,16 Q15,17 16,16",
|
||||
stroke: "#ff69b4",
|
||||
["stroke-width"]: "0.5",
|
||||
fill: "none"
|
||||
}),
|
||||
k: common_vendor.p({
|
||||
cx: "11",
|
||||
cy: "13",
|
||||
r: "1.5",
|
||||
fill: "#ffb6c1",
|
||||
opacity: "0.6"
|
||||
}),
|
||||
l: common_vendor.p({
|
||||
cx: "19",
|
||||
cy: "13",
|
||||
r: "1.5",
|
||||
fill: "#ffb6c1",
|
||||
opacity: "0.6"
|
||||
}),
|
||||
m: common_vendor.p({
|
||||
x: "10",
|
||||
cy: "19",
|
||||
width: "10",
|
||||
height: "4",
|
||||
fill: "#4169e1",
|
||||
rx: "1"
|
||||
}),
|
||||
n: common_vendor.p({
|
||||
cx: "20",
|
||||
cy: "21",
|
||||
r: "2",
|
||||
fill: "#ffd700"
|
||||
}),
|
||||
o: common_vendor.p({
|
||||
width: "30",
|
||||
height: "30",
|
||||
viewBox: "0 0 30 30"
|
||||
}),
|
||||
p: result.value === "win" ? 1 : "",
|
||||
q: common_vendor.o(($event) => setResult("win")),
|
||||
r: result.value === "lose" ? 1 : "",
|
||||
s: common_vendor.o(($event) => setResult("lose")),
|
||||
t: common_vendor.t(score.value),
|
||||
v: common_vendor.o(sumScore),
|
||||
w: common_vendor.f(keys, (key, k0, i0) => {
|
||||
a: common_vendor.f(players1.value, (item, index, i0) => {
|
||||
return {
|
||||
a: common_vendor.t(key.display),
|
||||
b: key.value,
|
||||
c: key.type === "operator" ? 1 : "",
|
||||
d: key.value === "-" ? 1 : "",
|
||||
e: key.type === "submit" ? 1 : "",
|
||||
f: common_vendor.o(($event) => pressKey(key.value, key.type), key.value)
|
||||
a: item.avatars,
|
||||
b: common_vendor.t(item.nickName),
|
||||
c: item.result === "win" ? 1 : "",
|
||||
d: common_vendor.o(($event) => setResult(index, "win"), usersData.value.useId),
|
||||
e: item.result === "lose" ? 1 : "",
|
||||
f: common_vendor.o(($event) => setResult(index, "lose"), usersData.value.useId),
|
||||
g: common_vendor.n(item.result === "win" ? "positive" : "negative"),
|
||||
h: common_vendor.o([($event) => item.score = $event.detail.value, ($event) => validateScore(index)], usersData.value.useId),
|
||||
i: item.score
|
||||
};
|
||||
})
|
||||
}),
|
||||
b: usersData.value.useId,
|
||||
c: common_vendor.t(round1.value),
|
||||
d: common_vendor.o(($event) => onsubmit())
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
<view class="container data-v-5af9b656"><view class="table-header data-v-5af9b656"><view class="header-player data-v-5af9b656">玩家</view><view class="header-result data-v-5af9b656">胜负</view><view class="header-score data-v-5af9b656">得分</view></view><view class="player-row data-v-5af9b656"><view class="player-info data-v-5af9b656"><view class="player-avatar data-v-5af9b656"><svg wx:if="{{o}}" class="data-v-5af9b656" u-s="{{['d']}}" u-i="5af9b656-0" bind:__l="__l" u-p="{{o}}"><ellipse wx:if="{{a}}" class="data-v-5af9b656" u-i="5af9b656-1,5af9b656-0" bind:__l="__l" u-p="{{a}}"/><circle wx:if="{{b}}" class="data-v-5af9b656" u-i="5af9b656-2,5af9b656-0" bind:__l="__l" u-p="{{b}}"/><ellipse wx:if="{{c}}" class="data-v-5af9b656" u-i="5af9b656-3,5af9b656-0" bind:__l="__l" u-p="{{c}}"/><ellipse wx:if="{{d}}" class="data-v-5af9b656" u-i="5af9b656-4,5af9b656-0" bind:__l="__l" u-p="{{d}}"/><ellipse wx:if="{{e}}" class="data-v-5af9b656" u-i="5af9b656-5,5af9b656-0" bind:__l="__l" u-p="{{e}}"/><ellipse wx:if="{{f}}" class="data-v-5af9b656" u-i="5af9b656-6,5af9b656-0" bind:__l="__l" u-p="{{f}}"/><circle wx:if="{{g}}" class="data-v-5af9b656" u-i="5af9b656-7,5af9b656-0" bind:__l="__l" u-p="{{g}}"/><circle wx:if="{{h}}" class="data-v-5af9b656" u-i="5af9b656-8,5af9b656-0" bind:__l="__l" u-p="{{h}}"/><circle wx:if="{{i}}" class="data-v-5af9b656" u-i="5af9b656-9,5af9b656-0" bind:__l="__l" u-p="{{i}}"/><path wx:if="{{j}}" class="data-v-5af9b656" u-i="5af9b656-10,5af9b656-0" bind:__l="__l" u-p="{{j}}"/><circle wx:if="{{k}}" class="data-v-5af9b656" u-i="5af9b656-11,5af9b656-0" bind:__l="__l" u-p="{{k}}"/><circle wx:if="{{l}}" class="data-v-5af9b656" u-i="5af9b656-12,5af9b656-0" bind:__l="__l" u-p="{{l}}"/><rect wx:if="{{m}}" class="data-v-5af9b656" u-i="5af9b656-13,5af9b656-0" bind:__l="__l" u-p="{{m}}"/><circle wx:if="{{n}}" class="data-v-5af9b656" u-i="5af9b656-14,5af9b656-0" bind:__l="__l" u-p="{{n}}"/></svg></view><text class="player-name data-v-5af9b656">玩家59306</text></view><view class="result-buttons data-v-5af9b656"><view class="{{['result-btn', 'data-v-5af9b656', p && 'active']}}" bindtap="{{q}}">胜</view><view class="{{['result-btn', 'data-v-5af9b656', r && 'active']}}" bindtap="{{s}}">负</view></view><view class="score-display data-v-5af9b656"><text class="score-value data-v-5af9b656">{{t}}</text><button class="sum-btn data-v-5af9b656" bindtap="{{v}}">Σ 合分</button></view></view><view class="keyboard data-v-5af9b656"><view wx:for="{{w}}" wx:for-item="key" wx:key="b" class="{{['key', 'data-v-5af9b656', key.c && 'operator', key.d && 'minus', key.e && 'submit-key']}}" bindtap="{{key.f}}">{{key.a}}</view></view></view>
|
||||
<view class="compute data-v-5af9b656"><view class="compute-lan data-v-5af9b656"><text class="player data-v-5af9b656">玩家</text><text class="vd data-v-5af9b656">胜负</text><text class="score data-v-5af9b656">得分</text></view><view wx:for="{{a}}" wx:for-item="item" wx:key="b" class="compute-detail data-v-5af9b656"><view class="compute-detail-player data-v-5af9b656"><image class="data-v-5af9b656" src="{{item.a}}" mode="widthFix"></image><text class="data-v-5af9b656">{{item.b}}</text></view><view class="compute-detail-vd data-v-5af9b656"><view class="{{['result-btn', 'data-v-5af9b656', item.c && 'active']}}" bindtap="{{item.d}}">胜</view><view class="{{['result-btn', 'data-v-5af9b656', item.e && 'active']}}" bindtap="{{item.f}}">负</view></view><view class="compute-detail-score data-v-5af9b656"><input class="{{['score-input', 'data-v-5af9b656', item.g]}}" bindinput="{{item.h}}" placeholder="0" type="number" value="{{item.i}}"/></view></view><view class=" data-v-5af9b656">{{c}}</view><button class="data-v-5af9b656" bindtap="{{d}}"> 提交 </button></view>
|
||||
@@ -1,178 +1,79 @@
|
||||
|
||||
.container.data-v-5af9b656 {
|
||||
min-height: 100vh;
|
||||
background-color: #f5f5f5;
|
||||
padding-bottom: 240rpx; /* 为底部键盘留出空间 */
|
||||
}
|
||||
|
||||
/* 顶部表头 */
|
||||
.table-header.data-v-5af9b656 {
|
||||
.compute.data-v-5af9b656 {
|
||||
display: flex;
|
||||
background-color: white;
|
||||
padding: 30rpx 40rpx;
|
||||
border-bottom: 1px solid #e0e0e0;
|
||||
position: -webkit-sticky;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 10;
|
||||
flex-direction: column;
|
||||
}
|
||||
.header-player.data-v-5af9b656 {
|
||||
flex: 1;
|
||||
font-size: 32rpx;
|
||||
color: #333;
|
||||
font-weight: 500;
|
||||
}
|
||||
.header-result.data-v-5af9b656 {
|
||||
width: 200rpx;
|
||||
font-size: 32rpx;
|
||||
color: #333;
|
||||
font-weight: 500;
|
||||
text-align: center;
|
||||
}
|
||||
.header-score.data-v-5af9b656 {
|
||||
width: 200rpx;
|
||||
font-size: 32rpx;
|
||||
color: #333;
|
||||
font-weight: 500;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* 玩家信息区域 */
|
||||
.player-row.data-v-5af9b656 {
|
||||
.compute .compute-lan.data-v-5af9b656 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 30rpx 40rpx;
|
||||
border-bottom: 1px solid #f5f5f5;
|
||||
background-color: white;
|
||||
}
|
||||
.player-info.data-v-5af9b656 {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.player-avatar.data-v-5af9b656 {
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
border-radius: 16rpx;
|
||||
background-color: #1e3a8a;
|
||||
padding: 0 15rpx;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
.compute .compute-lan .player.data-v-5af9b656 {
|
||||
margin-right: 270rpx;
|
||||
}
|
||||
.compute .compute-lan .vd.data-v-5af9b656 {
|
||||
margin-right: 210rpx;
|
||||
}
|
||||
.compute .compute-detail.data-v-5af9b656 {
|
||||
display: flex;
|
||||
padding: 20rpx 0;
|
||||
align-items: center;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
.compute .compute-detail .compute-detail-player.data-v-5af9b656 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 20rpx;
|
||||
width: 230rpx;
|
||||
}
|
||||
.player-name.data-v-5af9b656 {
|
||||
font-size: 32rpx;
|
||||
color: #333;
|
||||
.compute .compute-detail .compute-detail-player text.data-v-5af9b656 {
|
||||
font-size: 27rpx;
|
||||
}
|
||||
.result-buttons.data-v-5af9b656 {
|
||||
width: 200rpx;
|
||||
.compute .compute-detail .compute-detail-player image.data-v-5af9b656 {
|
||||
width: 70rpx;
|
||||
padding: 0 16rpx;
|
||||
}
|
||||
.compute .compute-detail .compute-detail-vd.data-v-5af9b656 {
|
||||
display: flex;
|
||||
background-color: #f0f0f0;
|
||||
border-radius: 8rpx;
|
||||
padding: 4rpx;
|
||||
align-items: center;
|
||||
width: 200rpx;
|
||||
padding-left: 50rpx;
|
||||
}
|
||||
.result-btn.data-v-5af9b656 {
|
||||
.compute .compute-detail .compute-detail-vd .result-btn.data-v-5af9b656 {
|
||||
flex: 1;
|
||||
padding: 12rpx 0;
|
||||
text-align: center;
|
||||
font-size: 28rpx;
|
||||
border-radius: 6rpx;
|
||||
}
|
||||
.result-btn.active.data-v-5af9b656 {
|
||||
background-color: #6a5acd;
|
||||
.compute .compute-detail .compute-detail-vd .result-btn.active.data-v-5af9b656 {
|
||||
background-color: #372fac;
|
||||
color: white;
|
||||
}
|
||||
.score-display.data-v-5af9b656 {
|
||||
width: 200rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
.compute .compute-detail .compute-detail-score.data-v-5af9b656 {
|
||||
padding-left: 133rpx;
|
||||
}
|
||||
.score-value.data-v-5af9b656 {
|
||||
font-size: 36rpx;
|
||||
color: #333;
|
||||
font-weight: 500;
|
||||
.compute .compute-detail .compute-detail-score .score-input.data-v-5af9b656 {
|
||||
width: 50rpx;
|
||||
border-radius: 10rpx;
|
||||
border: 1px solid #eee;
|
||||
padding-left: 30rpx;
|
||||
}
|
||||
.sum-btn.data-v-5af9b656 {
|
||||
background-color: #6a5acd;
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 8rpx;
|
||||
padding: 12rpx 20rpx;
|
||||
font-size: 28rpx;
|
||||
.compute .compute-detail .compute-detail-score .score-input.positive.data-v-5af9b656 {
|
||||
border-color: #4caf50;
|
||||
background-color: rgba(76, 175, 80, 0.05);
|
||||
}
|
||||
|
||||
/* 固定在底部的数字键盘 */
|
||||
.keyboard.data-v-5af9b656 {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, 1fr);
|
||||
gap: 1px;
|
||||
background-color: #e0e0e0;
|
||||
padding: 1px;
|
||||
.compute .compute-detail .compute-detail-score .score-input.negative.data-v-5af9b656 {
|
||||
border-color: #f44336;
|
||||
background-color: rgba(244, 67, 54, 0.05);
|
||||
}
|
||||
.compute button.data-v-5af9b656 {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
bottom: 40rpx;
|
||||
left: 0;
|
||||
right: 0;
|
||||
max-width: 750rpx;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.key.data-v-5af9b656 {
|
||||
background-color: white;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 120rpx;
|
||||
font-size: 40rpx;
|
||||
}
|
||||
.key.data-v-5af9b656:active {
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
.operator.data-v-5af9b656 {
|
||||
color: #6a5acd;
|
||||
}
|
||||
.minus.data-v-5af9b656 {
|
||||
color: #ff4757;
|
||||
}
|
||||
.submit-key.data-v-5af9b656 {
|
||||
background-color: #8a2be2;
|
||||
color: white;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/* 调整键盘布局,使提交按钮在0的左侧 */
|
||||
.keyboard.data-v-5af9b656 {
|
||||
grid-template-areas:
|
||||
"num1 num2 num3 plus delete"
|
||||
"num4 num5 num6 minus sqrt"
|
||||
"num7 num8 num9 submit num0";
|
||||
}
|
||||
.key.data-v-5af9b656:nth-child(1) { grid-area: num1;
|
||||
}
|
||||
.key.data-v-5af9b656:nth-child(2) { grid-area: num2;
|
||||
}
|
||||
.key.data-v-5af9b656:nth-child(3) { grid-area: num3;
|
||||
}
|
||||
.key.data-v-5af9b656:nth-child(4) { grid-area: plus;
|
||||
}
|
||||
.key.data-v-5af9b656:nth-child(5) { grid-area: delete;
|
||||
}
|
||||
.key.data-v-5af9b656:nth-child(6) { grid-area: num4;
|
||||
}
|
||||
.key.data-v-5af9b656:nth-child(7) { grid-area: num5;
|
||||
}
|
||||
.key.data-v-5af9b656:nth-child(8) { grid-area: num6;
|
||||
}
|
||||
.key.data-v-5af9b656:nth-child(9) { grid-area: minus;
|
||||
}
|
||||
.key.data-v-5af9b656:nth-child(10) { grid-area: sqrt;
|
||||
}
|
||||
.key.data-v-5af9b656:nth-child(11) { grid-area: num7;
|
||||
}
|
||||
.key.data-v-5af9b656:nth-child(12) { grid-area: num8;
|
||||
}
|
||||
.key.data-v-5af9b656:nth-child(13) { grid-area: num9;
|
||||
}
|
||||
.key.data-v-5af9b656:nth-child(14) { grid-area: submit;
|
||||
}
|
||||
.key.data-v-5af9b656:nth-child(15) { grid-area: num0;
|
||||
border-radius: 15rpx;
|
||||
background-color: #372fac;
|
||||
color: #fff;
|
||||
width: 650rpx;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../../common/vendor.js");
|
||||
const utils_request = require("../../utils/request.js");
|
||||
require("../../api/login.js");
|
||||
const utils_StaticValue = require("../../utils/StaticValue.js");
|
||||
if (!Array) {
|
||||
const _easycom_uni_icons2 = common_vendor.resolveComponent("uni-icons");
|
||||
_easycom_uni_icons2();
|
||||
@@ -12,7 +14,35 @@ if (!Math) {
|
||||
const _sfc_main = {
|
||||
__name: "index",
|
||||
setup(__props) {
|
||||
const gotoNewPage = () => {
|
||||
common_vendor.ref(false);
|
||||
const roomData = common_vendor.ref([]);
|
||||
common_vendor.onMounted(() => {
|
||||
const getUserInfo = utils_StaticValue.StaticValue.getUserInfo;
|
||||
roomData.value = getUserInfo();
|
||||
});
|
||||
const gotoNewPage = async () => {
|
||||
const response = await utils_request.GET("/system/room/createUser/" + roomData.value.userId);
|
||||
if (response.code = 200) {
|
||||
const dataArray = response.data;
|
||||
if (dataArray && dataArray.length > 0) {
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:96", `查询到 ${dataArray.length} 条房间记录`);
|
||||
} else {
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:100", "未查询到房间记录,新建个人房间");
|
||||
utils_request.POST("/system/room", {
|
||||
createUser: roomData.value.userId,
|
||||
odds: 1,
|
||||
roomStatus: 1,
|
||||
bossId: roomData.value.userId,
|
||||
roomName: `${roomData.value.nickName}的房间`
|
||||
});
|
||||
}
|
||||
} else {
|
||||
common_vendor.index.__f__("error", "at pages/index/index.vue:111", "接口请求失败:", response.msg);
|
||||
common_vendor.index.showToast({
|
||||
title: "查询失败",
|
||||
icon: "none"
|
||||
});
|
||||
}
|
||||
common_vendor.wx$1.navigateTo({
|
||||
url: "/pages/single/single"
|
||||
});
|
||||
@@ -23,7 +53,8 @@ const _sfc_main = {
|
||||
type: "sound",
|
||||
size: "20"
|
||||
}),
|
||||
b: common_vendor.o(gotoNewPage)
|
||||
b: common_vendor.o(gotoNewPage),
|
||||
c: common_vendor.t(roomData.value)
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
<view class="index data-v-1cf27b2a"><view class="notice data-v-1cf27b2a"><view class="icon data-v-1cf27b2a"><uni-icons wx:if="{{a}}" class="data-v-1cf27b2a" u-i="1cf27b2a-0" bind:__l="__l" u-p="{{a}}"></uni-icons></view><view class="text data-v-1cf27b2a"> 您还有未结束的对局, <text class="underline data-v-1cf27b2a">点击前往</text></view></view><view class="function-list data-v-1cf27b2a"><view class="function-item data-v-1cf27b2a"><view class="function-icon data-v-1cf27b2a"><image class="data-v-1cf27b2a" src="https://t14.baidu.com/it/u=3165460156,649373630&fm=224&app=112&f=JPEG?w=500&h=500"></image></view><view class="function-introduce data-v-1cf27b2a"><view class="function-name data-v-1cf27b2a"> 多人模式 </view><view class="function-desc data-v-1cf27b2a"> 所有玩家自己计分 </view></view></view><view class="function-item data-v-1cf27b2a" bindtap="{{b}}"><view class="function-icon data-v-1cf27b2a"><image class="data-v-1cf27b2a" src="https://pic.rmb.bdstatic.com/bjh/down/1742bc3845cbbcf0c78c01eb59bb1c1a.jpeg"></image></view><view class="function-introduce data-v-1cf27b2a"><view class="function-name data-v-1cf27b2a"> 单人模式 </view><view class="function-desc data-v-1cf27b2a"> 房主给所有玩家计分 </view></view></view><view class="function-item data-v-1cf27b2a"><view class="function-icon data-v-1cf27b2a"><image class="data-v-1cf27b2a" src="https://pic.rmb.bdstatic.com/bjh/down/1742bc3845cbbcf0c78c01eb59bb1c1a.jpeg"></image></view><view class="function-introduce data-v-1cf27b2a"><view class="function-name data-v-1cf27b2a"> 手动进入房间 </view><view class="function-desc data-v-1cf27b2a"> 输入房间id进入房间 </view></view></view><view class="function-item data-v-1cf27b2a"><view class="function-icon data-v-1cf27b2a"><image class="data-v-1cf27b2a" src="https://pic.rmb.bdstatic.com/bjh/down/1742bc3845cbbcf0c78c01eb59bb1c1a.jpeg"></image></view><view class="function-introduce data-v-1cf27b2a"><view class="function-name data-v-1cf27b2a"> 扫码加入房间 </view><view class="function-desc data-v-1cf27b2a"> 扫码房间二维码加入房间 </view></view></view></view></view>
|
||||
<view class="index data-v-1cf27b2a"><view class="notice data-v-1cf27b2a"><view class="icon data-v-1cf27b2a"><uni-icons wx:if="{{a}}" class="data-v-1cf27b2a" u-i="1cf27b2a-0" bind:__l="__l" u-p="{{a}}"></uni-icons></view><view class="text data-v-1cf27b2a"> 您还有未结束的对局, <text class="underline data-v-1cf27b2a">点击前往</text></view></view><view class="function-list data-v-1cf27b2a"><view class="function-item data-v-1cf27b2a"><view class="function-icon data-v-1cf27b2a"><image class="data-v-1cf27b2a" src="https://t14.baidu.com/it/u=3165460156,649373630&fm=224&app=112&f=JPEG?w=500&h=500"></image></view><view class="function-introduce data-v-1cf27b2a"><view class="function-name data-v-1cf27b2a"> 多人模式 </view><view class="function-desc data-v-1cf27b2a"> 所有玩家自己计分 </view></view></view><view class="function-item data-v-1cf27b2a" bindtap="{{b}}"><view class="function-icon data-v-1cf27b2a"><image class="data-v-1cf27b2a" src="https://pic.rmb.bdstatic.com/bjh/down/1742bc3845cbbcf0c78c01eb59bb1c1a.jpeg"></image></view><view class="function-introduce data-v-1cf27b2a"><view class="function-name data-v-1cf27b2a"> 单人模式 </view><view class="function-desc data-v-1cf27b2a"> 房主给所有玩家计分 </view></view></view><view class="function-item data-v-1cf27b2a"><view class="function-icon data-v-1cf27b2a"><image class="data-v-1cf27b2a" src="https://pic.rmb.bdstatic.com/bjh/down/1742bc3845cbbcf0c78c01eb59bb1c1a.jpeg"></image></view><view class="function-introduce data-v-1cf27b2a"><view class="function-name data-v-1cf27b2a"> 手动进入房间 </view><view class="function-desc data-v-1cf27b2a"> 输入房间id进入房间 </view></view></view><view class="function-item data-v-1cf27b2a"><view class="function-icon data-v-1cf27b2a"><image class="data-v-1cf27b2a" src="https://pic.rmb.bdstatic.com/bjh/down/1742bc3845cbbcf0c78c01eb59bb1c1a.jpeg"></image></view><view class="function-introduce data-v-1cf27b2a"><view class="function-name data-v-1cf27b2a"> 扫码加入房间 </view><view class="function-desc data-v-1cf27b2a"> 扫码房间二维码加入房间 </view></view></view><view class=" data-v-1cf27b2a">{{c}}</view></view></view>
|
||||
@@ -1,11 +1,14 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../../common/vendor.js");
|
||||
const common_assets = require("../../common/assets.js");
|
||||
const utils_request = require("../../utils/request.js");
|
||||
const utils_StaticValue = require("../../utils/StaticValue.js");
|
||||
if (!Array) {
|
||||
const _easycom_uni_icons2 = common_vendor.resolveComponent("uni-icons");
|
||||
const _easycom_l_popup2 = common_vendor.resolveComponent("l-popup");
|
||||
const _easycom_uni_easyinput2 = common_vendor.resolveComponent("uni-easyinput");
|
||||
(_easycom_uni_icons2 + _easycom_l_popup2 + _easycom_uni_easyinput2)();
|
||||
const _component_uni_load_more = common_vendor.resolveComponent("uni-load-more");
|
||||
(_easycom_uni_icons2 + _easycom_l_popup2 + _easycom_uni_easyinput2 + _component_uni_load_more)();
|
||||
}
|
||||
const _easycom_uni_icons = () => "../../uni_modules/uni-icons/components/uni-icons/uni-icons.js";
|
||||
const _easycom_l_popup = () => "../../uni_modules/lime-popup/components/l-popup/l-popup.js";
|
||||
@@ -16,14 +19,107 @@ if (!Math) {
|
||||
const _sfc_main = {
|
||||
__name: "single",
|
||||
setup(__props) {
|
||||
const gotoNewPage = () => {
|
||||
common_vendor.wx$1.navigateTo({
|
||||
url: "/pages/user-detail/user-detail"
|
||||
const roomData = common_vendor.ref([]);
|
||||
const isLoading = common_vendor.ref(false);
|
||||
const newPlayerName = common_vendor.ref("");
|
||||
const userScores = common_vendor.ref([]);
|
||||
const confirmAddPlayer = async () => {
|
||||
const response = await utils_request.GET("/system/room/createUser/" + roomData.value.userId);
|
||||
common_vendor.index.__f__("log", "at pages/single/single.vue:147", response);
|
||||
if (response.code === 200) {
|
||||
common_vendor.index.showToast({
|
||||
title: "查询roomId成功",
|
||||
icon: "success"
|
||||
});
|
||||
const dataArray = response.data;
|
||||
common_vendor.index.__f__("log", "at pages/single/single.vue:155", "dataArray.roomId:", dataArray[0].roomId);
|
||||
const trimmedName = newPlayerName.value.trim();
|
||||
const userData = {
|
||||
nickName: trimmedName,
|
||||
// 使用 trim() 处理后的名称
|
||||
avatars: "https://img1.baidu.com/it/u=3612220943,2414740890&fm=253&app=138&f=JPEG?w=526&h=500",
|
||||
openId: generateTenDigitRandom().toString()
|
||||
};
|
||||
const userResponse = await utils_request.POST("/system/score/user/add", userData);
|
||||
if (userResponse.code === 200) {
|
||||
const userId1 = userResponse.data.userId;
|
||||
common_vendor.index.__f__("log", "at pages/single/single.vue:171", "新创建的用户ID:", userId1);
|
||||
const roomUserData = {
|
||||
roomId: dataArray[0].roomId,
|
||||
userId: userId1,
|
||||
// 使用后端返回的userId
|
||||
totalScore: 0,
|
||||
playerType: "robot",
|
||||
nickName: trimmedName,
|
||||
avatars: "https://img1.baidu.com/it/u=3612220943,2414740890&fm=253&app=138&f=JPEG?w=526&h=500"
|
||||
};
|
||||
const response2 = await utils_request.POST("/system/score/room/user", roomUserData);
|
||||
common_vendor.index.__f__("log", "at pages/single/single.vue:184", "返回结果: ", response2);
|
||||
if (response2.code === 200) {
|
||||
fetchUserScores();
|
||||
common_vendor.index.__f__("log", "at pages/single/single.vue:188", "添加新玩家成功");
|
||||
common_vendor.index.showToast({
|
||||
title: "添加成功,数据已更新",
|
||||
icon: "success"
|
||||
});
|
||||
}
|
||||
virtueplayer.value = false;
|
||||
}
|
||||
}
|
||||
};
|
||||
function generateTenDigitRandom() {
|
||||
return Math.floor(Math.random() * 9e9) + 1e9;
|
||||
}
|
||||
const maxRounds = common_vendor.computed(() => {
|
||||
if (!userScores.value.length)
|
||||
return 0;
|
||||
let max = 0;
|
||||
userScores.value.forEach((user) => {
|
||||
if (user.details && user.details.length > 0) {
|
||||
user.details.forEach((detail) => {
|
||||
if (detail.gameTime > max)
|
||||
max = detail.gameTime;
|
||||
});
|
||||
}
|
||||
});
|
||||
return max;
|
||||
});
|
||||
const round = common_vendor.computed(() => {
|
||||
const rounds = maxRounds.value;
|
||||
return isNaN(rounds) ? 0 : Math.max(0, rounds + 1);
|
||||
});
|
||||
common_vendor.index.__f__("log", "at pages/single/single.vue:222", "round:", round);
|
||||
const formatScore = (score) => {
|
||||
return score > 0 ? `+${score}` : `${score}`;
|
||||
};
|
||||
const fetchUserScores = async () => {
|
||||
try {
|
||||
const response2 = await utils_request.GET("/system/room/createUser/" + roomData.value.userId);
|
||||
common_vendor.index.__f__("log", "at pages/single/single.vue:234", response2);
|
||||
const dataArray1 = response2.data;
|
||||
common_vendor.index.__f__("log", "at pages/single/single.vue:237", "房间号为:", dataArray1[0].roomId);
|
||||
var roomId1 = dataArray1[0].roomId;
|
||||
const response3 = await utils_request.GET(`/system/score/room/user/user-details/${roomId1}`);
|
||||
if (response3.code === 200) {
|
||||
userScores.value = response3.data;
|
||||
common_vendor.index.__f__("log", "at pages/single/single.vue:244", "用户得分数据加载成功");
|
||||
}
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("error", "at pages/single/single.vue:247", "获取用户得分失败:", error);
|
||||
}
|
||||
};
|
||||
common_vendor.onMounted(() => {
|
||||
const getUserInfo = utils_StaticValue.StaticValue.getUserInfo;
|
||||
roomData.value = getUserInfo();
|
||||
fetchUserScores();
|
||||
common_vendor.index.__f__("log", "at pages/single/single.vue:255", "userScores为:", userScores);
|
||||
});
|
||||
const gotoNewPage1 = () => {
|
||||
const roomUserData1 = common_vendor.ref(userScores);
|
||||
const encodedPlayers = encodeURIComponent(JSON.stringify(roomUserData1.value));
|
||||
const encodedRound = encodeURIComponent(JSON.stringify(round.value));
|
||||
common_vendor.wx$1.navigateTo({
|
||||
url: "/pages/compute/compute"
|
||||
url: `/pages/compute/compute?players=${encodedPlayers}&round=${encodedRound}`
|
||||
});
|
||||
};
|
||||
const isPopupVisible = common_vendor.ref(false);
|
||||
@@ -52,59 +148,8 @@ const _sfc_main = {
|
||||
const closemultiple = () => {
|
||||
isPopupVisible2.value = false;
|
||||
};
|
||||
const matchs = common_vendor.ref([
|
||||
{
|
||||
id: 1,
|
||||
gametime: 1,
|
||||
details: [
|
||||
{ id: 101, score: "+10" },
|
||||
{ id: 102, score: "+20" },
|
||||
{ id: 103, score: "-30" }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
gametime: 2,
|
||||
details: [
|
||||
{ id: 201, score: "+10" },
|
||||
{ id: 202, score: "+20" },
|
||||
{ id: 203, score: "-30" }
|
||||
]
|
||||
}
|
||||
]);
|
||||
const allscores = common_vendor.ref([
|
||||
{
|
||||
id: 301,
|
||||
allscore: "+20"
|
||||
},
|
||||
{
|
||||
id: 302,
|
||||
allscore: "+40"
|
||||
},
|
||||
{
|
||||
id: 303,
|
||||
allscore: "-60"
|
||||
}
|
||||
]);
|
||||
const players = common_vendor.ref([
|
||||
{
|
||||
id: 401,
|
||||
name: "刘备",
|
||||
avatar: "https://img1.baidu.com/it/u=3612220943,2414740890&fm=253&app=138&f=JPEG?w=526&h=500"
|
||||
},
|
||||
{
|
||||
id: 401,
|
||||
name: "赵云",
|
||||
avatar: "https://q3.itc.cn/q_70/images03/20250110/1e71eecf56b34344bcae6a5b85c0bec2.jpeg"
|
||||
},
|
||||
{
|
||||
id: 401,
|
||||
name: "张飞",
|
||||
avatar: "https://q1.itc.cn/q_70/images03/20241119/197701bb9ef34b20b6497720081a9972.jpeg"
|
||||
}
|
||||
]);
|
||||
return (_ctx, _cache) => {
|
||||
return {
|
||||
return common_vendor.e({
|
||||
a: common_vendor.p({
|
||||
type: "plus"
|
||||
}),
|
||||
@@ -117,32 +162,27 @@ const _sfc_main = {
|
||||
}),
|
||||
f: common_vendor.o(() => {
|
||||
}),
|
||||
g: common_vendor.f(players.value, (item, index, i0) => {
|
||||
g: common_vendor.f(maxRounds.value, (n, k0, i0) => {
|
||||
return {
|
||||
a: item.avatar,
|
||||
b: common_vendor.t(item.name),
|
||||
c: index,
|
||||
d: common_vendor.o(gotoNewPage, index)
|
||||
a: common_vendor.t(n),
|
||||
b: n
|
||||
};
|
||||
}),
|
||||
h: common_vendor.f(allscores.value, (item, index, i0) => {
|
||||
h: common_vendor.f(userScores.value, (item, index, i0) => {
|
||||
return {
|
||||
a: common_vendor.t(item.allscore),
|
||||
b: item.id
|
||||
a: item.avatars,
|
||||
b: common_vendor.t(item.nickName),
|
||||
c: common_vendor.t(formatScore(item.totalScore)),
|
||||
d: common_vendor.f(item.details, (detail, k1, i1) => {
|
||||
return {
|
||||
a: common_vendor.t(formatScore(detail.detailScore)),
|
||||
b: detail.gameTime
|
||||
};
|
||||
}),
|
||||
i: common_vendor.f(matchs.value, (match, k0, i0) => {
|
||||
return {
|
||||
a: common_vendor.t(match.gametime),
|
||||
b: common_vendor.f(match.details, (item, index, i1) => {
|
||||
return {
|
||||
a: common_vendor.t(item.score),
|
||||
b: item.id
|
||||
};
|
||||
}),
|
||||
c: match.id
|
||||
e: item.userId
|
||||
};
|
||||
}),
|
||||
i: common_vendor.t(userScores.value),
|
||||
j: common_vendor.o(gotoNewPage1),
|
||||
k: common_vendor.o(multiple),
|
||||
l: common_assets._imports_0,
|
||||
@@ -158,31 +198,37 @@ const _sfc_main = {
|
||||
closeable: true,
|
||||
modelValue: isPopupVisible1.value
|
||||
}),
|
||||
s: common_vendor.o(($event) => _ctx.value = $event),
|
||||
t: common_vendor.p({
|
||||
s: common_vendor.o(confirmAddPlayer),
|
||||
t: common_vendor.o(($event) => newPlayerName.value = $event),
|
||||
v: common_vendor.p({
|
||||
placeholder: "请输入名称",
|
||||
modelValue: _ctx.value
|
||||
modelValue: newPlayerName.value
|
||||
}),
|
||||
v: common_vendor.o(closevirtue),
|
||||
w: common_vendor.o(closevirtue),
|
||||
x: common_vendor.o(($event) => virtueplayer.value = $event),
|
||||
y: common_vendor.p({
|
||||
x: common_vendor.o(confirmAddPlayer),
|
||||
y: common_vendor.o(($event) => virtueplayer.value = $event),
|
||||
z: common_vendor.p({
|
||||
closeable: true,
|
||||
modelValue: virtueplayer.value
|
||||
}),
|
||||
z: common_vendor.o(($event) => _ctx.value = $event),
|
||||
A: common_vendor.p({
|
||||
A: common_vendor.o(($event) => _ctx.value = $event),
|
||||
B: common_vendor.p({
|
||||
placeholder: "请输入倍率",
|
||||
modelValue: _ctx.value
|
||||
}),
|
||||
B: common_vendor.o(closemultiple),
|
||||
C: common_vendor.o(closemultiple),
|
||||
D: common_vendor.o(($event) => isPopupVisible2.value = $event),
|
||||
E: common_vendor.p({
|
||||
D: common_vendor.o(closemultiple),
|
||||
E: common_vendor.o(($event) => isPopupVisible2.value = $event),
|
||||
F: common_vendor.p({
|
||||
closeable: true,
|
||||
modelValue: isPopupVisible2.value
|
||||
}),
|
||||
G: isLoading.value
|
||||
}, isLoading.value ? {
|
||||
H: common_vendor.p({
|
||||
status: "loading"
|
||||
})
|
||||
};
|
||||
} : {});
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1 +1 @@
|
||||
<view class="single data-v-6410b918"><view class="single-lan data-v-6410b918"><button class="data-v-6410b918" bindtap="{{b}}"><uni-icons wx:if="{{a}}" class="data-v-6410b918" u-i="6410b918-0" bind:__l="__l" u-p="{{a}}"></uni-icons><text class="data-v-6410b918">添加玩家</text></button><button class="data-v-6410b918" bindtap="{{d}}"><uni-icons wx:if="{{c}}" class="data-v-6410b918" u-i="6410b918-1" bind:__l="__l" u-p="{{c}}"></uni-icons><text class="data-v-6410b918">转让计分员</text></button><view class="lan-switch data-v-6410b918"><switch class="data-v-6410b918" bindchange="{{e}}"/><text class="data-v-6410b918">语音播报</text></view><view class="lan-switch data-v-6410b918"><switch class="data-v-6410b918" bindchange="{{f}}"/><text class="data-v-6410b918">台版</text></view></view><view class="single-detail data-v-6410b918"><text class="sing-detail-title data-v-6410b918">对局记录</text><text class="data-v-6410b918">点击对局分数进行修改</text></view><view class="single-score data-v-6410b918"><text style="color:red" class="score-remind data-v-6410b918"> 点击头像编辑自己的昵称和性别~ </text><view class="single-score-record data-v-6410b918"><view class="score-record-player data-v-6410b918"><text class="score-head data-v-6410b918">玩家</text><view wx:for="{{g}}" wx:for-item="item" wx:key="c" class="player data-v-6410b918" bindtap="{{item.d}}"><image class="data-v-6410b918" src="{{item.a}}" mode="widthFix"></image><text class="data-v-6410b918">{{item.b}}</text></view></view><view class="score-record-all data-v-6410b918"><text class="score-head data-v-6410b918">总分</text><view wx:for="{{h}}" wx:for-item="item" wx:key="b" class="all-score data-v-6410b918">{{item.a}}</view></view><view wx:for="{{i}}" wx:for-item="match" wx:key="c" class="score-record-all data-v-6410b918"><text class="score-head data-v-6410b918">第{{match.a}}局</text><view wx:for="{{match.b}}" wx:for-item="item" wx:key="b" class="all-score data-v-6410b918">{{item.a}}</view></view></view></view><view class="single-bottom data-v-6410b918"><button class="data-v-6410b918" style="color:aliceblue;background-color:rgb(55, 47, 172)" bindtap="{{j}}"> 开局计分</button><button class="data-v-6410b918" bindtap="{{k}}">结算房间</button></view><l-popup wx:if="{{o}}" class="data-v-6410b918" u-s="{{['d']}}" u-i="6410b918-2" bind:__l="__l" bindupdateModelValue="{{n}}" u-p="{{o}}"><view class="popup-add data-v-6410b918"><view class="tilte data-v-6410b918"><text class="title data-v-6410b918">扫码加入房间</text></view><view class="line data-v-6410b918"></view><text class="small data-v-6410b918">邀请好友扫描下方二维码加入房间</text><image class="data-v-6410b918" src="{{l}}" mode=""></image><button class="share data-v-6410b918">分享给好友邀请加入房间</button><button class="hand data-v-6410b918" bindtap="{{m}}">手动添加虚拟玩家</button></view></l-popup><l-popup wx:if="{{r}}" class="data-v-6410b918" u-s="{{['d']}}" u-i="6410b918-3" bind:__l="__l" bindupdateModelValue="{{q}}" u-p="{{r}}"><view class="popup-add data-v-6410b918"><view class="tilte data-v-6410b918"><text class="title data-v-6410b918">提示</text></view><view class="line data-v-6410b918"></view><text class="small data-v-6410b918">房间内暂无扫码或分享加入房间的玩家,暂时无法转让计分员</text><button class="data-v-6410b918" bindtap="{{p}}">确定</button></view></l-popup><l-popup wx:if="{{y}}" class="data-v-6410b918" u-s="{{['d']}}" u-i="6410b918-4" bind:__l="__l" bindupdateModelValue="{{x}}" u-p="{{y}}"><view class="popup-virtue data-v-6410b918"><view class="tilte data-v-6410b918"><text class="title data-v-6410b918">添加玩家</text></view><view class="line data-v-6410b918"></view><view class="lan-input data-v-6410b918"><uni-easyinput wx:if="{{t}}" class="data-v-6410b918" style="width:500rpx" u-i="6410b918-5,6410b918-4" bind:__l="__l" bindupdateModelValue="{{s}}" u-p="{{t}}"></uni-easyinput></view><view class="lan-button data-v-6410b918"><button class="data-v-6410b918" bindtap="{{v}}">取消</button><button class="data-v-6410b918" bindtap="{{w}}">确定</button></view></view></l-popup><l-popup wx:if="{{E}}" class="data-v-6410b918" u-s="{{['d']}}" u-i="6410b918-6" bind:__l="__l" bindupdateModelValue="{{D}}" u-p="{{E}}"><view class="popup-virtue data-v-6410b918"><view class="tilte data-v-6410b918"><text class="title data-v-6410b918" style="font-weight:600">输入倍率,快速结算!</text></view><view class="line data-v-6410b918"></view><view class="lan-input data-v-6410b918"><uni-easyinput wx:if="{{A}}" class="data-v-6410b918" style="width:400rpx" u-i="6410b918-7,6410b918-6" bind:__l="__l" bindupdateModelValue="{{z}}" u-p="{{A}}"></uni-easyinput></view><view class="lan-button data-v-6410b918"><button class="data-v-6410b918" bindtap="{{B}}">取消</button><button class="data-v-6410b918" bindtap="{{C}}">确定</button></view></view></l-popup></view>
|
||||
<view class="single data-v-6410b918"><view class="single-lan data-v-6410b918"><button class="data-v-6410b918" bindtap="{{b}}"><uni-icons wx:if="{{a}}" class="data-v-6410b918" u-i="6410b918-0" bind:__l="__l" u-p="{{a}}"></uni-icons><text class="data-v-6410b918">添加玩家</text></button><button class="data-v-6410b918" bindtap="{{d}}"><uni-icons wx:if="{{c}}" class="data-v-6410b918" u-i="6410b918-1" bind:__l="__l" u-p="{{c}}"></uni-icons><text class="data-v-6410b918">转让计分员</text></button><view class="lan-switch data-v-6410b918"><switch class="data-v-6410b918" bindchange="{{e}}"/><text class="data-v-6410b918">语音播报</text></view><view class="lan-switch data-v-6410b918"><switch class="data-v-6410b918" bindchange="{{f}}"/><text class="data-v-6410b918">台版</text></view></view><view class="single-detail data-v-6410b918"><text class="sing-detail-title data-v-6410b918">对局记录</text><text class="data-v-6410b918">点击对局分数进行修改</text></view><scroll-view class="single-score data-v-6410b918" scroll-x="true"><text style="color:red" class="score-remind data-v-6410b918"> 点击头像编辑自己的昵称和性别~ </text><view class="single-score-record data-v-6410b918"><view class="tab-head data-v-6410b918"><text class="tab-head-player data-v-6410b918">玩家</text><text class="tab-head-total data-v-6410b918">总分</text><view wx:for="{{g}}" wx:for-item="n" wx:key="b" class="tab-head-detail data-v-6410b918"> 第{{n.a}}局 </view></view><view wx:for="{{h}}" wx:for-item="item" wx:key="e" class="tab-body data-v-6410b918"><view class="tab-body-player data-v-6410b918"><image class="data-v-6410b918" src="{{item.a}}" mode="widthFix"></image><text class="data-v-6410b918">{{item.b}}</text></view><view class="tab-total-score data-v-6410b918">{{item.c}}</view><view wx:for="{{item.d}}" wx:for-item="detail" wx:key="b" class="round-score data-v-6410b918">{{detail.a}}</view></view> {{i}}</view></scroll-view><view class="single-bottom data-v-6410b918"><button class="data-v-6410b918" style="color:aliceblue;background-color:rgb(55, 47, 172)" bindtap="{{j}}"> 开局计分</button><button class="data-v-6410b918" bindtap="{{k}}">结算房间</button></view><l-popup wx:if="{{o}}" class="data-v-6410b918" u-s="{{['d']}}" u-i="6410b918-2" bind:__l="__l" bindupdateModelValue="{{n}}" u-p="{{o}}"><view class="popup-add data-v-6410b918"><view class="tilte data-v-6410b918"><text class="title data-v-6410b918">扫码加入房间</text></view><view class="line data-v-6410b918"></view><text class="small data-v-6410b918">邀请好友扫描下方二维码加入房间</text><image class="data-v-6410b918" src="{{l}}" mode=""></image><button class="share data-v-6410b918">分享给好友邀请加入房间</button><button class="hand data-v-6410b918" bindtap="{{m}}">手动添加虚拟玩家</button></view></l-popup><l-popup wx:if="{{r}}" class="data-v-6410b918" u-s="{{['d']}}" u-i="6410b918-3" bind:__l="__l" bindupdateModelValue="{{q}}" u-p="{{r}}"><view class="popup-add data-v-6410b918"><view class="tilte data-v-6410b918"><text class="title data-v-6410b918">提示</text></view><view class="line data-v-6410b918"></view><text class="small data-v-6410b918">房间内暂无扫码或分享加入房间的玩家,暂时无法转让计分员</text><button class="data-v-6410b918" bindtap="{{p}}">确定</button></view></l-popup><l-popup wx:if="{{z}}" class="data-v-6410b918" u-s="{{['d']}}" u-i="6410b918-4" bind:__l="__l" bindupdateModelValue="{{y}}" u-p="{{z}}"><view class="popup-virtue data-v-6410b918"><view class="tilte data-v-6410b918"><text class="title data-v-6410b918">添加玩家</text></view><view class="line data-v-6410b918"></view><view class="lan-input data-v-6410b918"><uni-easyinput wx:if="{{v}}" class="data-v-6410b918" style="width:500rpx" bindconfirm="{{s}}" u-i="6410b918-5,6410b918-4" bind:__l="__l" bindupdateModelValue="{{t}}" u-p="{{v}}"></uni-easyinput></view><view class="lan-button data-v-6410b918"><button class="data-v-6410b918" bindtap="{{w}}">取消</button><button class="data-v-6410b918" bindtap="{{x}}">确定</button></view></view></l-popup><l-popup wx:if="{{F}}" class="data-v-6410b918" u-s="{{['d']}}" u-i="6410b918-6" bind:__l="__l" bindupdateModelValue="{{E}}" u-p="{{F}}"><view class="popup-virtue data-v-6410b918"><view class="tilte data-v-6410b918"><text class="title data-v-6410b918" style="font-weight:600">输入倍率,快速结算!</text></view><view class="line data-v-6410b918"></view><view class="lan-input data-v-6410b918"><uni-easyinput wx:if="{{B}}" class="data-v-6410b918" style="width:400rpx" u-i="6410b918-7,6410b918-6" bind:__l="__l" bindupdateModelValue="{{A}}" u-p="{{B}}"></uni-easyinput></view><view class="lan-button data-v-6410b918"><button class="data-v-6410b918" bindtap="{{C}}">取消</button><button class="data-v-6410b918" bindtap="{{D}}">确定</button></view></view></l-popup><uni-load-more wx:if="{{G}}" class="data-v-6410b918" u-i="6410b918-8" bind:__l="__l" u-p="{{H}}"/></view>
|
||||
@@ -51,6 +51,62 @@
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.single .single-score .single-score-record.data-v-6410b918 {
|
||||
display: flex;
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
.single .single-score .single-score-record .tab-head.data-v-6410b918 {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-left: 20rpx;
|
||||
margin-right: 30rpx;
|
||||
width: 100rpx;
|
||||
align-items: center;
|
||||
}
|
||||
.single .single-score .single-score-record .tab-head .tab-head-player.data-v-6410b918 {
|
||||
padding-top: 30rpx;
|
||||
height: 90rpx;
|
||||
width: 100rpx;
|
||||
}
|
||||
.single .single-score .single-score-record .tab-head .tab-head-total.data-v-6410b918 {
|
||||
padding-top: 20rpx;
|
||||
width: 100rpx;
|
||||
}
|
||||
.single .single-score .single-score-record .tab-head .tab-head-detail.data-v-6410b918 {
|
||||
margin-top: 60rpx;
|
||||
width: 100rpx;
|
||||
}
|
||||
.single .single-score .single-score-record .tab-body.data-v-6410b918 {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-right: 60rpx;
|
||||
}
|
||||
.single .single-score .single-score-record .tab-body .tab-body-player.data-v-6410b918 {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
height: 120rpx;
|
||||
width: 100rpx;
|
||||
}
|
||||
.single .single-score .single-score-record .tab-body .tab-body-player image.data-v-6410b918 {
|
||||
width: 80rpx;
|
||||
}
|
||||
.single .single-score .single-score-record .tab-body .tab-body-player text.data-v-6410b918 {
|
||||
font-size: 30rpx;
|
||||
}
|
||||
.single .single-score .single-score-record .tab-body .tab-total-score.data-v-6410b918 {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
.single .single-score .single-score-record .tab-body .round-score.data-v-6410b918 {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-top: 60rpx;
|
||||
}
|
||||
.single .single-score .score-remind.data-v-6410b918 {
|
||||
align-self: center;
|
||||
font-size: 29rpx;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"use strict";
|
||||
const BASE_URL = "http://localhost:8080";
|
||||
const BASE_URL = "http://172.19.45.41:8080";
|
||||
exports.BASE_URL = BASE_URL;
|
||||
//# sourceMappingURL=../../.sourcemap/mp-weixin/utils/CommonValues.js.map
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
const common_vendor = require("../common/vendor.js");
|
||||
const utils_CommonValues = require("./CommonValues.js");
|
||||
const api_login = require("../api/login.js");
|
||||
function GET(url, data) {
|
||||
return SIMPLE(url, data, "GET");
|
||||
}
|
||||
function GET_TOKEN(url, data, token) {
|
||||
return SIMPLE_TOKEN(url, data, token, "GET");
|
||||
}
|
||||
@@ -67,6 +70,7 @@ function SIMPLE_TOKEN(url, data, token, method) {
|
||||
});
|
||||
});
|
||||
}
|
||||
exports.GET = GET;
|
||||
exports.GET_TOKEN = GET_TOKEN;
|
||||
exports.POST = POST;
|
||||
//# sourceMappingURL=../../.sourcemap/mp-weixin/utils/request.js.map
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
export const BASE_URL = 'http://localhost:8080';
|
||||
export const BASE_URL = 'http://172.19.45.41:8080';
|
||||
// export const BASE_URL = 'https://www.jianxinghome.cn:8484';
|
||||
// export const BASE_URL = 'https://www.safeguardfull.cn:8484';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user