Compare commits
No commits in common. "2892ce9efc49fecdfdb04e0356039749212e34b6" and "4e9db1b5a983d7ecbc68fd056fbee37d65ff0580" have entirely different histories.
2892ce9efc
...
4e9db1b5a9
|
|
@ -5341,49 +5341,70 @@ public class AppleOrderController extends BaseController {
|
||||||
if (order.getStatus() == null || order.getStatus() != 1L) {
|
if (order.getStatus() == null || order.getStatus() != 1L) {
|
||||||
return AppletControllerUtil.appletWarning("订单状态不正确,无法接单");
|
return AppletControllerUtil.appletWarning("订单状态不正确,无法接单");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// // 获取当前登录用户(师傅)
|
||||||
|
// String token = request.getHeader("token");
|
||||||
|
// if (StringUtils.isEmpty(token)) {
|
||||||
|
// return AppletControllerUtil.appletdengluWarning("用户未登录");
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//// Users currentUser = AppletLoginUtil.getUserByToken(token);
|
||||||
|
//// if (currentUser == null) {
|
||||||
|
//// return AppletControllerUtil.appletdengluWarning("用户未登录或token无效");
|
||||||
|
//// }
|
||||||
|
// Users currentUser = (Users) userValidation.get("user");
|
||||||
|
// if (currentUser == null) {
|
||||||
|
// return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// // 检查用户是否为师傅
|
||||||
|
// if (!"2".equals(currentUser.getType()) || currentUser.getIsWork() != 1) {
|
||||||
|
// return AppletControllerUtil.appletWarning("只有师傅才能接单");
|
||||||
|
// }
|
||||||
|
|
||||||
// 检查订单是否已被其他师傅接单
|
// 检查订单是否已被其他师傅接单
|
||||||
if (order.getWorkerId() != null && order.getWorkerId() > 0) {
|
if (order.getWorkerId() != null && order.getWorkerId() > 0) {
|
||||||
return AppletControllerUtil.appletWarning("该订单已被其他师傅接单");
|
return AppletControllerUtil.appletWarning("该订单已被其他师傅接单");
|
||||||
}
|
}
|
||||||
DispatchUtil.creatWorkerForOrder(order, currentUser);
|
|
||||||
// // 更新订单状态为2(待服务)并分配师傅
|
// 更新订单状态为2(待服务)并分配师傅
|
||||||
// order.setStatus(2L);
|
order.setStatus(2L);
|
||||||
// order.setWorkerId(currentUser.getId());
|
order.setWorkerId(currentUser.getId());
|
||||||
// order.setReceiveTime(new Date());
|
order.setReceiveTime(new Date());
|
||||||
// order.setReceiveType(1L); // 1:自由抢单
|
order.setReceiveType(1L); // 1:自由抢单
|
||||||
// order.setIsAccept(1); // 1:已经接单
|
order.setIsAccept(1); // 1:已经接单
|
||||||
//
|
|
||||||
// // 如果是第一次接单,设置firstWorkerId
|
// 如果是第一次接单,设置firstWorkerId
|
||||||
// if (order.getFirstWorkerId() == null) {
|
if (order.getFirstWorkerId() == null) {
|
||||||
// order.setFirstWorkerId(currentUser.getId());
|
order.setFirstWorkerId(currentUser.getId());
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// // 更新订单
|
// 更新订单
|
||||||
// int updateResult = orderService.updateOrder(order);
|
int updateResult = orderService.updateOrder(order);
|
||||||
// if (updateResult <= 0) {
|
if (updateResult <= 0) {
|
||||||
// return AppletControllerUtil.appletError("订单状态更新失败");
|
return AppletControllerUtil.appletError("订单状态更新失败");
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// // 添加订单日志
|
// 添加订单日志
|
||||||
// OrderLog orderLog = new OrderLog();
|
OrderLog orderLog = new OrderLog();
|
||||||
// orderLog.setOid(orderId);
|
orderLog.setOid(orderId);
|
||||||
// orderLog.setOrderId(order.getOrderId());
|
orderLog.setOrderId(order.getOrderId());
|
||||||
// orderLog.setLogOrderId(order.getOrderId());
|
orderLog.setLogOrderId(order.getOrderId());
|
||||||
// orderLog.setTitle("师傅接单");
|
orderLog.setTitle("师傅接单");
|
||||||
// orderLog.setType(new BigDecimal("2")); // 2:接单
|
orderLog.setType(new BigDecimal("2")); // 2:接单
|
||||||
// JSONObject content = new JSONObject();
|
JSONObject content = new JSONObject();
|
||||||
// content.put("name", "师傅" + currentUser.getName() + "接单成功");
|
content.put("name", "师傅" + currentUser.getName() + "接单成功");
|
||||||
// orderLog.setContent(content.toJSONString());
|
orderLog.setContent(content.toJSONString());
|
||||||
// orderLog.setWorkerId(currentUser.getId());
|
orderLog.setWorkerId(currentUser.getId());
|
||||||
// orderLog.setWorkerName(currentUser.getName());
|
orderLog.setWorkerName(currentUser.getName());
|
||||||
// orderLog.setFirstWorkerId(currentUser.getId());
|
orderLog.setFirstWorkerId(currentUser.getId());
|
||||||
// orderLog.setOrdertype(1L);
|
orderLog.setOrdertype(1L);
|
||||||
//
|
|
||||||
// int logResult = orderLogService.insertOrderLog(orderLog);
|
int logResult = orderLogService.insertOrderLog(orderLog);
|
||||||
// if (logResult <= 0) {
|
if (logResult <= 0) {
|
||||||
// logger.warn("订单日志添加失败,订单ID:{}", orderId);
|
logger.warn("订单日志添加失败,订单ID:{}", orderId);
|
||||||
// }
|
}
|
||||||
|
|
||||||
return AppletControllerUtil.appletSuccess("接单成功");
|
return AppletControllerUtil.appletSuccess("接单成功");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2726,7 +2726,7 @@ public class AppletController extends BaseController {
|
||||||
|
|
||||||
// 10. 记录积分变动日志
|
// 10. 记录积分变动日志
|
||||||
IntegralLog integralLog = AppletControllerUtil.buildIntegralLog(
|
IntegralLog integralLog = AppletControllerUtil.buildIntegralLog(
|
||||||
user, totalIntegral, order.getOrderId(), product.getTitle());
|
user, -totalIntegral, order.getOrderId(), product.getTitle());
|
||||||
integralLogService.insertIntegralLog(integralLog);
|
integralLogService.insertIntegralLog(integralLog);
|
||||||
|
|
||||||
// 11. 更新商品库存(如果有库存管理)
|
// 11. 更新商品库存(如果有库存管理)
|
||||||
|
|
@ -7120,7 +7120,6 @@ public class AppletController extends BaseController {
|
||||||
// 3. 查询状态为1(待接单)的订单
|
// 3. 查询状态为1(待接单)的订单
|
||||||
Order orderQuery = new Order();
|
Order orderQuery = new Order();
|
||||||
orderQuery.setStatus(1L); // 待接单状态
|
orderQuery.setStatus(1L); // 待接单状态
|
||||||
// orderQuery.setWorkerId(Long.parseLong(request.getHeader("userId")));
|
|
||||||
orderQuery.setQiangdan("1");
|
orderQuery.setQiangdan("1");
|
||||||
List<Order> orderList = orderService.selectOrderList(orderQuery);
|
List<Order> orderList = orderService.selectOrderList(orderQuery);
|
||||||
PageInfo<Order> pageInfo = new PageInfo<>(orderList);
|
PageInfo<Order> pageInfo = new PageInfo<>(orderList);
|
||||||
|
|
|
||||||
|
|
@ -26,8 +26,6 @@ import com.ruoyi.system.service.IDiyCityService;
|
||||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自定义地区Controller
|
* 自定义地区Controller
|
||||||
|
|
@ -39,8 +37,6 @@ import org.slf4j.LoggerFactory;
|
||||||
@RequestMapping("/system/DiyCity")
|
@RequestMapping("/system/DiyCity")
|
||||||
public class DiyCityController extends BaseController
|
public class DiyCityController extends BaseController
|
||||||
{
|
{
|
||||||
private static final Logger logger = LoggerFactory.getLogger(DiyCityController.class);
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IDiyCityService diyCityService;
|
private IDiyCityService diyCityService;
|
||||||
|
|
||||||
|
|
@ -74,61 +70,36 @@ public class DiyCityController extends BaseController
|
||||||
@PreAuthorize("@ss.hasPermi('system:DiyCity:query')")
|
@PreAuthorize("@ss.hasPermi('system:DiyCity:query')")
|
||||||
@GetMapping("/getTreeData")
|
@GetMapping("/getTreeData")
|
||||||
public AjaxResult getTreeData() {
|
public AjaxResult getTreeData() {
|
||||||
try {
|
List<DiyCity> list = diyCityService.selectDiyCityList(new DiyCity());
|
||||||
List<DiyCity> list = diyCityService.selectDiyCityList(new DiyCity());
|
|
||||||
|
|
||||||
if (list == null || list.isEmpty()) {
|
|
||||||
return success(new ArrayList<>());
|
|
||||||
}
|
|
||||||
|
|
||||||
// 使用Map优化查找性能
|
List<Map<String, Object>> rootList = new ArrayList<>();
|
||||||
Map<Long, Map<String, Object>> nodeMap = new HashMap<>();
|
for (DiyCity city : list) {
|
||||||
List<Map<String, Object>> rootList = new ArrayList<>();
|
Long parentId = city.getParentId();
|
||||||
|
Long id = Long.valueOf(city.getId());
|
||||||
// 第一步:创建所有节点
|
// 一级节点
|
||||||
for (DiyCity city : list) {
|
if (parentId == null || parentId == 0L) {
|
||||||
Map<String, Object> node = toMap(city);
|
Map<String, Object> node = toMap(city);
|
||||||
node.put("children", new ArrayList<>());
|
// 组装children
|
||||||
nodeMap.put(city.getId().longValue(), node);
|
List<Map<String, Object>> children = new ArrayList<>();
|
||||||
}
|
for (DiyCity child : list) {
|
||||||
|
Long childParentId = child.getParentId();
|
||||||
// 第二步:构建树形结构
|
if (id != null && Objects.equals(id, childParentId)) {
|
||||||
for (DiyCity city : list) {
|
children.add(toMap(child));
|
||||||
Long parentId = city.getParentId();
|
|
||||||
Long id = city.getId().longValue();
|
|
||||||
|
|
||||||
if (parentId == null || parentId == 0L) {
|
|
||||||
// 根节点
|
|
||||||
rootList.add(nodeMap.get(id));
|
|
||||||
} else {
|
|
||||||
// 子节点,添加到父节点的children中
|
|
||||||
Map<String, Object> parentNode = nodeMap.get(parentId);
|
|
||||||
if (parentNode != null) {
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
List<Map<String, Object>> children = (List<Map<String, Object>>) parentNode.get("children");
|
|
||||||
children.add(nodeMap.get(id));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
node.put("children", children);
|
||||||
|
rootList.add(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
return success(rootList);
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.error("获取树形数据失败", e);
|
|
||||||
return error("获取树形数据失败: " + e.getMessage());
|
|
||||||
}
|
}
|
||||||
|
return success(rootList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, Object> toMap(DiyCity city) {
|
private Map<String, Object> toMap(DiyCity city) {
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> map = new HashMap<>();
|
||||||
map.put("id", city.getId());
|
map.put("id", city.getId());
|
||||||
map.put("label", city.getTitle());
|
map.put("label", city.getTitle());
|
||||||
map.put("title", city.getTitle()); // 兼容前端
|
|
||||||
map.put("parentId", city.getParentId());
|
map.put("parentId", city.getParentId());
|
||||||
map.put("order", city.getOrder());
|
// 其他字段按需添加
|
||||||
map.put("lat", city.getLat());
|
|
||||||
map.put("lng", city.getLng());
|
|
||||||
map.put("createdAt", city.getCreatedAt());
|
|
||||||
map.put("updatedAt", city.getUpdatedAt());
|
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
|
@ -151,34 +122,7 @@ public class DiyCityController extends BaseController
|
||||||
@GetMapping(value = "/{id}")
|
@GetMapping(value = "/{id}")
|
||||||
public AjaxResult getInfo(@PathVariable("id") Integer id)
|
public AjaxResult getInfo(@PathVariable("id") Integer id)
|
||||||
{
|
{
|
||||||
try {
|
return success(diyCityService.selectDiyCityById(id));
|
||||||
DiyCity diyCity = diyCityService.selectDiyCityById(id);
|
|
||||||
if (diyCity == null) {
|
|
||||||
return error("地区不存在");
|
|
||||||
}
|
|
||||||
return success(diyCity);
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.error("获取地区详情失败", e);
|
|
||||||
return error("获取地区详情失败: " + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取指定地区的子地区列表
|
|
||||||
*/
|
|
||||||
@PreAuthorize("@ss.hasPermi('system:DiyCity:query')")
|
|
||||||
@GetMapping("/children/{parentId}")
|
|
||||||
public AjaxResult getChildren(@PathVariable("parentId") Long parentId)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
DiyCity query = new DiyCity();
|
|
||||||
query.setParentId(parentId);
|
|
||||||
List<DiyCity> children = diyCityService.selectDiyCityList(query);
|
|
||||||
return success(children);
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.error("获取子地区列表失败", e);
|
|
||||||
return error("获取子地区列表失败: " + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -189,26 +133,7 @@ public class DiyCityController extends BaseController
|
||||||
@PostMapping
|
@PostMapping
|
||||||
public AjaxResult add(@RequestBody DiyCity diyCity)
|
public AjaxResult add(@RequestBody DiyCity diyCity)
|
||||||
{
|
{
|
||||||
try {
|
return toAjax(diyCityService.insertDiyCity(diyCity));
|
||||||
// 验证必填字段
|
|
||||||
if (diyCity.getTitle() == null || diyCity.getTitle().trim().isEmpty()) {
|
|
||||||
return error("地区名称不能为空");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 检查同级下是否有重名
|
|
||||||
DiyCity query = new DiyCity();
|
|
||||||
query.setParentId(diyCity.getParentId());
|
|
||||||
query.setTitle(diyCity.getTitle());
|
|
||||||
List<DiyCity> existing = diyCityService.selectDiyCityList(query);
|
|
||||||
if (existing != null && !existing.isEmpty()) {
|
|
||||||
return error("同级下已存在相同名称的地区");
|
|
||||||
}
|
|
||||||
|
|
||||||
return toAjax(diyCityService.insertDiyCity(diyCity));
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.error("新增自定义地区失败", e);
|
|
||||||
return error("新增失败: " + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -219,38 +144,7 @@ public class DiyCityController extends BaseController
|
||||||
@PutMapping
|
@PutMapping
|
||||||
public AjaxResult edit(@RequestBody DiyCity diyCity)
|
public AjaxResult edit(@RequestBody DiyCity diyCity)
|
||||||
{
|
{
|
||||||
try {
|
return toAjax(diyCityService.updateDiyCity(diyCity));
|
||||||
// 验证必填字段
|
|
||||||
if (diyCity.getId() == null) {
|
|
||||||
return error("地区ID不能为空");
|
|
||||||
}
|
|
||||||
if (diyCity.getTitle() == null || diyCity.getTitle().trim().isEmpty()) {
|
|
||||||
return error("地区名称不能为空");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 检查是否将父级设置为自己或自己的子级(防止循环引用)
|
|
||||||
if (diyCity.getParentId() != null && diyCity.getParentId().equals(diyCity.getId().longValue())) {
|
|
||||||
return error("不能将父级设置为自己");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 检查同级下是否有重名(排除自己)
|
|
||||||
DiyCity query = new DiyCity();
|
|
||||||
query.setParentId(diyCity.getParentId());
|
|
||||||
query.setTitle(diyCity.getTitle());
|
|
||||||
List<DiyCity> existing = diyCityService.selectDiyCityList(query);
|
|
||||||
if (existing != null && !existing.isEmpty()) {
|
|
||||||
for (DiyCity item : existing) {
|
|
||||||
if (!item.getId().equals(diyCity.getId())) {
|
|
||||||
return error("同级下已存在相同名称的地区");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return toAjax(diyCityService.updateDiyCity(diyCity));
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.error("修改自定义地区失败", e);
|
|
||||||
return error("修改失败: " + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -261,20 +155,7 @@ public class DiyCityController extends BaseController
|
||||||
@DeleteMapping("/{ids}")
|
@DeleteMapping("/{ids}")
|
||||||
public AjaxResult remove(@PathVariable Integer[] ids)
|
public AjaxResult remove(@PathVariable Integer[] ids)
|
||||||
{
|
{
|
||||||
try {
|
return toAjax(diyCityService.deleteDiyCityByIds(ids));
|
||||||
// 检查是否有子节点
|
|
||||||
for (Integer id : ids) {
|
|
||||||
List<DiyCity> children = diyCityService.selectDiyCityList(new DiyCity() {{ setParentId(id.longValue()); }});
|
|
||||||
if (children != null && !children.isEmpty()) {
|
|
||||||
return error("无法删除地区ID " + id + ",该地区下还有子地区,请先删除子地区");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return toAjax(diyCityService.deleteDiyCityByIds(ids));
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.error("删除自定义地区失败", e);
|
|
||||||
return error("删除失败: " + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -113,15 +113,6 @@ public class GoodsOrderController extends BaseController {
|
||||||
for (GoodsOrder order : orders) {
|
for (GoodsOrder order : orders) {
|
||||||
if (order.getProductId() != null) {
|
if (order.getProductId() != null) {
|
||||||
try {
|
try {
|
||||||
UsersPayBefor usersPayBefor = usersPayBeforService.selectUsersPayBeforByOrderId(order.getMainOrderId());
|
|
||||||
if (usersPayBefor != null) {
|
|
||||||
order.setWxmoney(usersPayBefor.getWxmoney());
|
|
||||||
order.setYemoney(usersPayBefor.getYemoney());
|
|
||||||
order.setMembermoney(usersPayBefor.getMembermoney());
|
|
||||||
order.setCouponmoney(usersPayBefor.getCouponmoney());
|
|
||||||
order.setReturnmoney(usersPayBefor.getReturnmoney());
|
|
||||||
}
|
|
||||||
|
|
||||||
ServiceGoods serviceGoods = serviceGoodsService.selectServiceGoodsById(order.getProductId());
|
ServiceGoods serviceGoods = serviceGoodsService.selectServiceGoodsById(order.getProductId());
|
||||||
if (serviceGoods != null) {
|
if (serviceGoods != null) {
|
||||||
// 补充商品详细信息
|
// 补充商品详细信息
|
||||||
|
|
@ -236,14 +227,7 @@ public class GoodsOrderController extends BaseController {
|
||||||
goodsOrderdata.setDeliveryName(siteDelivery.getTitle());
|
goodsOrderdata.setDeliveryName(siteDelivery.getTitle());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UsersPayBefor usersPayBefor = usersPayBeforService.selectUsersPayBeforByOrderId(goodsOrderdata.getMainOrderId());
|
|
||||||
if (usersPayBefor != null) {
|
|
||||||
goodsOrderdata.setWxmoney(usersPayBefor.getWxmoney());
|
|
||||||
goodsOrderdata.setYemoney(usersPayBefor.getYemoney());
|
|
||||||
goodsOrderdata.setMembermoney(usersPayBefor.getMembermoney());
|
|
||||||
goodsOrderdata.setCouponmoney(usersPayBefor.getCouponmoney());
|
|
||||||
goodsOrderdata.setReturnmoney(usersPayBefor.getReturnmoney());
|
|
||||||
}
|
|
||||||
Users users = usersService.selectUsersById(goodsOrderdata.getUid());
|
Users users = usersService.selectUsersById(goodsOrderdata.getUid());
|
||||||
if (users != null) {
|
if (users != null) {
|
||||||
goodsOrderdata.setUname(users.getName());
|
goodsOrderdata.setUname(users.getName());
|
||||||
|
|
|
||||||
|
|
@ -409,10 +409,7 @@ public class OrderController extends BaseController {
|
||||||
logJson.put("type",9);
|
logJson.put("type",9);
|
||||||
orderdata.setLogJson(logJson.toJSONString());
|
orderdata.setLogJson(logJson.toJSONString());
|
||||||
orderdata.setJsonStatus(0);
|
orderdata.setJsonStatus(0);
|
||||||
if(StringUtils.isNotBlank(order.getFileData())){
|
orderdata.setFileData(order.getFileData());
|
||||||
orderdata.setFileData(AppletControllerUtil.convertToJSONArray(order.getFileData()).toJSONString());
|
|
||||||
}
|
|
||||||
//orderdata.setFileData(order.getFileData());
|
|
||||||
orderdata.setOdertype(0);
|
orderdata.setOdertype(0);
|
||||||
orderdata.setReamk(order.getReamk());
|
orderdata.setReamk(order.getReamk());
|
||||||
orderdata.setBigtype(1);
|
orderdata.setBigtype(1);
|
||||||
|
|
|
||||||
|
|
@ -313,10 +313,10 @@ public class UsersController extends BaseController
|
||||||
|
|
||||||
Users newUsers = usersService.selectUsersById(users.getId());
|
Users newUsers = usersService.selectUsersById(users.getId());
|
||||||
System.out.println("###############"+newUsers.getType());
|
System.out.println("###############"+newUsers.getType());
|
||||||
// if (newUsers!=null){
|
if (newUsers.getType().equals("2")&&users.getStatus()==0){
|
||||||
// // newUsers.setType("1");
|
newUsers.setType("1");
|
||||||
// newUsers.setIsWork(0);
|
newUsers.setIsWork(0);
|
||||||
// }
|
}
|
||||||
newUsers.setStatus(users.getStatus());
|
newUsers.setStatus(users.getStatus());
|
||||||
return toAjax(usersService.updateUsers(newUsers));
|
return toAjax(usersService.updateUsers(newUsers));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package com.ruoyi.system.controller;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -129,7 +129,7 @@ public class WorkerMoneyLogController extends BaseController
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量锁住收益
|
* 批量锁住收益
|
||||||
* @param params {ids:[], lockType:'forever'|'days', lockday:int, remark:string}
|
* @param params {ids:[], lockType:'forever'|'timed', lockday:int}
|
||||||
* @return AjaxResult
|
* @return AjaxResult
|
||||||
*/
|
*/
|
||||||
@PreAuthorize("@ss.hasPermi('system:workerMoneyLog:lock')")
|
@PreAuthorize("@ss.hasPermi('system:workerMoneyLog:lock')")
|
||||||
|
|
@ -137,48 +137,34 @@ public class WorkerMoneyLogController extends BaseController
|
||||||
public AjaxResult lockMoney(@RequestBody Map<String, Object> params) {
|
public AjaxResult lockMoney(@RequestBody Map<String, Object> params) {
|
||||||
Object idsObj = params.get("ids");
|
Object idsObj = params.get("ids");
|
||||||
if (idsObj == null) return AjaxResult.error("未选择数据");
|
if (idsObj == null) return AjaxResult.error("未选择数据");
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
List<Integer> ids = (List<Integer>) idsObj;
|
List<Integer> ids = (List<Integer>) idsObj;
|
||||||
String lockType = (String) params.get("lockType");
|
String lockType = (String) params.get("lockType");
|
||||||
Integer lockday = params.get("lockday") == null ? null : Integer.parseInt(params.get("lockday").toString());
|
Integer lockday = params.get("lockday") == null ? null : Integer.parseInt(params.get("lockday").toString());
|
||||||
String remark = (String) params.get("remark");
|
|
||||||
|
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
Date end = null;
|
Date end = null;
|
||||||
|
if ("timed".equals(lockType) && lockday != null && lockday > 0) {
|
||||||
// 如果是按天锁住,计算结束时间
|
|
||||||
if ("days".equals(lockType) && lockday != null && lockday > 0) {
|
|
||||||
LocalDateTime ldt = LocalDateTime.now().plusDays(lockday);
|
LocalDateTime ldt = LocalDateTime.now().plusDays(lockday);
|
||||||
end = Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());
|
end = Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());
|
||||||
}
|
}
|
||||||
// 如果是永久锁住,结束时间设置为null
|
|
||||||
|
|
||||||
for (Integer id : ids) {
|
for (Integer id : ids) {
|
||||||
WorkerMoneyLog log = workerMoneyLogService.selectWorkerMoneyLogById(id);
|
WorkerMoneyLog log = workerMoneyLogService.selectWorkerMoneyLogById(id);
|
||||||
if (log == null) continue;
|
if (log == null) continue;
|
||||||
|
|
||||||
// 检查是否已经锁定
|
|
||||||
if (log.getStatus() != null && log.getStatus() == 1) {
|
|
||||||
continue; // 跳过已锁定的数据
|
|
||||||
}
|
|
||||||
|
|
||||||
log.setStatus(1); // 锁定
|
log.setStatus(1); // 锁定
|
||||||
log.setStatusType(1); // 后台锁定
|
log.setStatusType(1); // 后台锁定
|
||||||
log.setBeginlook(now);
|
log.setBeginlook(now);
|
||||||
log.setLookMoney(log.getPrice());
|
if ("timed".equals(lockType) && end != null) {
|
||||||
log.setAdminUpReamk(remark); // 设置锁住原因
|
|
||||||
|
|
||||||
if ("days".equals(lockType) && end != null) {
|
|
||||||
// 按天锁住:设置结束时间和锁住天数
|
|
||||||
log.setEndlook(end);
|
log.setEndlook(end);
|
||||||
log.setLookday(lockday);
|
log.setLookday(lockday);
|
||||||
} else if ("forever".equals(lockType)) {
|
|
||||||
// 永久锁住:结束时间设置为null,锁住天数设置为null
|
|
||||||
log.setEndlook(null);
|
|
||||||
log.setLookday(null);
|
|
||||||
}
|
}
|
||||||
|
// else {
|
||||||
|
// // 永久锁住
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
log.setLookMoney(log.getPrice());
|
||||||
workerMoneyLogService.updateWorkerMoneyLog(log);
|
workerMoneyLogService.updateWorkerMoneyLog(log);
|
||||||
|
if ("forever".equals(lockType)){
|
||||||
|
workerMoneyLogService.updateWorkerMoneyLogforever(log);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return AjaxResult.success("锁住收益成功");
|
return AjaxResult.success("锁住收益成功");
|
||||||
}
|
}
|
||||||
|
|
@ -193,7 +179,6 @@ public class WorkerMoneyLogController extends BaseController
|
||||||
public AjaxResult unlockMoney(@RequestBody Map<String, Object> params) {
|
public AjaxResult unlockMoney(@RequestBody Map<String, Object> params) {
|
||||||
Object idsObj = params.get("ids");
|
Object idsObj = params.get("ids");
|
||||||
if (idsObj == null) return AjaxResult.error("未选择数据");
|
if (idsObj == null) return AjaxResult.error("未选择数据");
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
List<Integer> ids = (List<Integer>) idsObj;
|
List<Integer> ids = (List<Integer>) idsObj;
|
||||||
for (Integer id : ids) {
|
for (Integer id : ids) {
|
||||||
WorkerMoneyLog log = workerMoneyLogService.selectWorkerMoneyLogById(id);
|
WorkerMoneyLog log = workerMoneyLogService.selectWorkerMoneyLogById(id);
|
||||||
|
|
@ -208,7 +193,7 @@ public class WorkerMoneyLogController extends BaseController
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 调整收益(奖励/扣除)
|
* 调整收益(奖励/扣除)
|
||||||
* @param params {id, type:'reward'|'deduct', amount, remark}
|
* @param params {id, amount, remark}
|
||||||
* @return AjaxResult
|
* @return AjaxResult
|
||||||
*/
|
*/
|
||||||
@PreAuthorize("@ss.hasPermi('system:workerMoneyLog:adjust')")
|
@PreAuthorize("@ss.hasPermi('system:workerMoneyLog:adjust')")
|
||||||
|
|
@ -218,36 +203,10 @@ public class WorkerMoneyLogController extends BaseController
|
||||||
WorkerMoneyLog log = workerMoneyLogService.selectWorkerMoneyLogById(id);
|
WorkerMoneyLog log = workerMoneyLogService.selectWorkerMoneyLogById(id);
|
||||||
if (log == null) return AjaxResult.error("数据不存在");
|
if (log == null) return AjaxResult.error("数据不存在");
|
||||||
if (log.getStatus() == null || log.getStatus() != 1) return AjaxResult.error("只能调整锁定状态的数据");
|
if (log.getStatus() == null || log.getStatus() != 1) return AjaxResult.error("只能调整锁定状态的数据");
|
||||||
|
|
||||||
String type = (String) params.get("type");
|
|
||||||
BigDecimal amount = new BigDecimal(params.get("amount").toString());
|
BigDecimal amount = new BigDecimal(params.get("amount").toString());
|
||||||
String remark = (String) params.get("remark");
|
String remark = (String) params.get("remark");
|
||||||
|
log.setAdminUpPrice(amount);
|
||||||
// 获取当前金额
|
|
||||||
BigDecimal currentPrice = log.getPrice() != null ? log.getPrice() : BigDecimal.ZERO;
|
|
||||||
BigDecimal newPrice;
|
|
||||||
|
|
||||||
if ("reward".equals(type)) {
|
|
||||||
// 奖励:增加金额
|
|
||||||
newPrice = currentPrice.add(amount);
|
|
||||||
log.setAdminUpPrice(amount); // 记录调整金额(正数)
|
|
||||||
} else if ("deduct".equals(type)) {
|
|
||||||
// 扣除:减少金额
|
|
||||||
newPrice = currentPrice.subtract(amount);
|
|
||||||
// 确保金额不为负数
|
|
||||||
if (newPrice.compareTo(BigDecimal.ZERO) < 0) {
|
|
||||||
return AjaxResult.error("扣除金额不能超过当前金额");
|
|
||||||
}
|
|
||||||
log.setAdminUpPrice(amount.negate()); // 记录调整金额(负数)
|
|
||||||
} else {
|
|
||||||
return AjaxResult.error("调整类型参数错误");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 更新价格和备注
|
|
||||||
log.setPrice(newPrice);
|
|
||||||
log.setLookMoney(newPrice); // 同时更新锁单金额
|
|
||||||
log.setAdminUpReamk(remark);
|
log.setAdminUpReamk(remark);
|
||||||
|
|
||||||
workerMoneyLogService.updateWorkerMoneyLog(log);
|
workerMoneyLogService.updateWorkerMoneyLog(log);
|
||||||
return AjaxResult.success("调整收益成功");
|
return AjaxResult.success("调整收益成功");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2577,7 +2577,7 @@ public class AppletControllerUtil {
|
||||||
log.setTitle("积分商品兑换");
|
log.setTitle("积分商品兑换");
|
||||||
log.setMark("兑换商品:" + productTitle + ",订单号:" + orderId); // 使用mark字段
|
log.setMark("兑换商品:" + productTitle + ",订单号:" + orderId); // 使用mark字段
|
||||||
log.setType(2L); // 类型:2-减少
|
log.setType(2L); // 类型:2-减少
|
||||||
log.setOrderId(orderId);
|
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
log.setCreatedAt(now);
|
log.setCreatedAt(now);
|
||||||
log.setUpdatedAt(now);
|
log.setUpdatedAt(now);
|
||||||
|
|
|
||||||
|
|
@ -2975,55 +2975,4 @@ public class DispatchUtil {
|
||||||
return worker;
|
return worker;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//抢单的时候处理有不同的处理逻辑
|
|
||||||
public static Users creatWorkerForOrderQiangDan(Order order,Users worker) throws Exception {
|
|
||||||
|
|
||||||
order.setWorkerId(worker.getId());
|
|
||||||
order.setStatus(1L);
|
|
||||||
order.setIsPause(1);
|
|
||||||
order.setReceiveTime(new Date());
|
|
||||||
order.setWorkerPhone(worker.getPhone());
|
|
||||||
UserAddress userAddress = userAddressService.selectUserAddressById(order.getAddressId());
|
|
||||||
if (userAddress != null){
|
|
||||||
order.setUserPhone(userAddress.getPhone());
|
|
||||||
}
|
|
||||||
// order.setMiddlePhone("18339212639");
|
|
||||||
order.setReceiveType(3l);
|
|
||||||
order.setLogStatus(9);
|
|
||||||
com.alibaba.fastjson2.JSONObject jSONObject = new com.alibaba.fastjson2.JSONObject();
|
|
||||||
jSONObject.put("type", 9);
|
|
||||||
order.setLogJson(jSONObject.toJSONString());
|
|
||||||
orderService.updateOrder(order);
|
|
||||||
|
|
||||||
|
|
||||||
OrderLog orderLognew = new OrderLog();
|
|
||||||
orderLognew.setOid(order.getId());
|
|
||||||
orderLognew.setOrderId(order.getOrderId());
|
|
||||||
orderLognew.setTitle("系统派单");
|
|
||||||
orderLognew.setType(new BigDecimal(1.1));
|
|
||||||
com.alibaba.fastjson2.JSONObject jSONObject1 = new com.alibaba.fastjson2.JSONObject();
|
|
||||||
jSONObject1.put("name", "师傅收到派单信息");
|
|
||||||
orderLognew.setContent(jSONObject1.toJSONString());
|
|
||||||
orderLognew.setWorkerId(worker.getId());
|
|
||||||
orderLognew.setWorkerLogId(worker.getId());
|
|
||||||
orderLogService.insertOrderLog(orderLognew);
|
|
||||||
//绑定虚拟号码
|
|
||||||
//微信推送
|
|
||||||
ServiceGoods serviceGoods = serviceGoodsService.selectServiceGoodsById(order.getProductId());
|
|
||||||
//给师傅派单的时候的推送
|
|
||||||
WXsendMsgUtil.sendMsgForWorkerInfo(worker.getOpenid(), order, serviceGoods);
|
|
||||||
//派单的时候需要绑定虚拟号码
|
|
||||||
Map<String, Object> map= OrderBindWorkerUtil.getOrderBindWorkerQiangDan(order.getId());
|
|
||||||
//电话通知师傅接单
|
|
||||||
YunXinPhoneUtilAPI.httpsAxbTransfer(order.getWorkerPhone(), order.getId());
|
|
||||||
// if (map.get("code").equals("200")) {
|
|
||||||
// //电话通知
|
|
||||||
// YunXinPhoneUtilAPI.httpsAxbTransfer(order.getWorkerPhone());
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
return worker;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -34,100 +34,6 @@ public class OrderBindWorkerUtil {
|
||||||
private static final IAreaService areaService= SpringUtils.getBean(IAreaService.class);
|
private static final IAreaService areaService= SpringUtils.getBean(IAreaService.class);
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单绑定师傅电话号码操作
|
|
||||||
* @param orderId 订单ID
|
|
||||||
* @return 绑定结果Map,包含code和msg
|
|
||||||
*/
|
|
||||||
public static Map<String, Object> getOrderBindWorkerQiangDan(long orderId) {
|
|
||||||
Map<String, Object> result = new HashMap<>();
|
|
||||||
try {
|
|
||||||
// 1. 查询订单
|
|
||||||
Order order = orderService.selectOrderById(orderId);
|
|
||||||
if (order == null) {
|
|
||||||
result.put("code", 404);
|
|
||||||
result.put("msg", "订单不存在");
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
// 2. 查询师傅信息
|
|
||||||
Users workerUser = usersService.selectUsersById(order.getWorkerId());
|
|
||||||
if (workerUser == null) {
|
|
||||||
result.put("code", 404);
|
|
||||||
result.put("msg", "师傅信息不存在");
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
// 3. 查询订单地址
|
|
||||||
UserAddress userAddress = userAddressService.selectUserAddressById(order.getAddressId());
|
|
||||||
if (userAddress == null) {
|
|
||||||
result.put("code", 404);
|
|
||||||
result.put("msg", "订单地址不存在");
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
// 4. 经纬度转城市
|
|
||||||
double lng = Double.parseDouble(userAddress.getLongitude());
|
|
||||||
double lat = Double.parseDouble(userAddress.getLatitude());
|
|
||||||
String city = GaoDeMapUtil.getCityByLocation(lng, lat);
|
|
||||||
if (city == null || city.isEmpty()) {
|
|
||||||
result.put("code", 500);
|
|
||||||
result.put("msg", "无法根据经纬度获取城市信息");
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
// 5. 查询城市编码
|
|
||||||
Area area = new Area();
|
|
||||||
area.setTitle(city);
|
|
||||||
List<Area> areaList = areaService.selectAreaList(area);
|
|
||||||
if (areaList == null || areaList.isEmpty()) {
|
|
||||||
areaList=areaService.selectAreaList(new Area());
|
|
||||||
// result.put("code", 404);
|
|
||||||
// result.put("msg", "未找到城市编码");
|
|
||||||
// return result;
|
|
||||||
}
|
|
||||||
Long cityCode = areaList.get(0).getId();
|
|
||||||
// 6. 查询可用中间号
|
|
||||||
MobileMiddle mobileMiddleQuery = new MobileMiddle();
|
|
||||||
mobileMiddleQuery.setCityId(cityCode);
|
|
||||||
List<MobileMiddle> mobileMiddleList = mobileMiddleService.selectMobileMiddleList(mobileMiddleQuery);
|
|
||||||
if (mobileMiddleList == null || mobileMiddleList.isEmpty()) {
|
|
||||||
mobileMiddleList=mobileMiddleService.selectMobileMiddleList(new MobileMiddle());
|
|
||||||
// result.put("code", 404);
|
|
||||||
// result.put("msg", "该城市暂无可用中间号");
|
|
||||||
// return result;
|
|
||||||
}
|
|
||||||
// 7. 获取用户和师傅手机号
|
|
||||||
String userPhone = userAddress.getPhone();
|
|
||||||
String workerPhone = workerUser.getPhone();
|
|
||||||
if (userPhone == null || workerPhone == null) {
|
|
||||||
result.put("code", 400);
|
|
||||||
result.put("msg", "用户或师傅手机号为空");
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
// 8. 绑定中间号,直到成功
|
|
||||||
for (MobileMiddle middle : mobileMiddleList) {
|
|
||||||
VoiceResponseResult bindResult = YunXinPhoneUtilAPI.httpsPrivacyBindAxb(middle.getPhone(), userPhone, workerPhone);
|
|
||||||
System.out.println(middle.getPhone()+"__________"+userPhone+"__________"+workerPhone);
|
|
||||||
if ("000000".equals(bindResult.getResult())) {
|
|
||||||
// 绑定成功,更新订单
|
|
||||||
order.setMiddlePhone(middle.getPhone());
|
|
||||||
order.setUserPhone(userPhone);
|
|
||||||
order.setWorkerPhone(workerPhone);
|
|
||||||
orderService.updateOrder(order);
|
|
||||||
result.put("code", 200);
|
|
||||||
result.put("msg", "绑定成功");
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 9. 所有中间号都绑定失败
|
|
||||||
result.put("code", 500);
|
|
||||||
result.put("msg", "所有中间号均绑定失败");
|
|
||||||
} catch (Exception e) {
|
|
||||||
result.put("code", 500);
|
|
||||||
result.put("msg", "绑定异常: " + e.getMessage());
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单绑定师傅电话号码操作
|
* 订单绑定师傅电话号码操作
|
||||||
* @param orderId 订单ID
|
* @param orderId 订单ID
|
||||||
|
|
@ -217,5 +123,4 @@ public class OrderBindWorkerUtil {
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -126,7 +126,6 @@ public class ScheduledTaskUtil implements CommandLineRunner {
|
||||||
cleanupSystemData();
|
cleanupSystemData();
|
||||||
healthCheck();
|
healthCheck();
|
||||||
updateWorkerMoneyLook();
|
updateWorkerMoneyLook();
|
||||||
DispatchWorkerForOrder();
|
|
||||||
autoResumeWorkerOrderStatus(); // 添加师傅暂停状态自动恢复任务
|
autoResumeWorkerOrderStatus(); // 添加师傅暂停状态自动恢复任务
|
||||||
log.info("定时任务自动执行完成");
|
log.info("定时任务自动执行完成");
|
||||||
}
|
}
|
||||||
|
|
@ -140,7 +139,7 @@ public class ScheduledTaskUtil implements CommandLineRunner {
|
||||||
* 师傅收益7天定时冻结的解冻
|
* 师傅收益7天定时冻结的解冻
|
||||||
* 每10分钟执行一次
|
* 每10分钟执行一次
|
||||||
*/
|
*/
|
||||||
@Scheduled(fixedRate = 20 * 60 * 1000) // 每10分钟执行一次
|
@Scheduled(fixedRate = 10 * 60 * 1000) // 每10分钟执行一次
|
||||||
public void updateWorkerMoneyLook() {
|
public void updateWorkerMoneyLook() {
|
||||||
String taskName = "订单状态超时检查";
|
String taskName = "订单状态超时检查";
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
|
|
@ -157,32 +156,6 @@ public class ScheduledTaskUtil implements CommandLineRunner {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 派单10分钟一次对没有派单的进行派单
|
|
||||||
* 每10分钟执行一次
|
|
||||||
*/
|
|
||||||
@Scheduled(fixedRate = 10 * 60 * 1000) // 每10分钟执行一次
|
|
||||||
public void DispatchWorkerForOrder() {
|
|
||||||
String taskName = "订单派单检查并重新派单";
|
|
||||||
long startTime = System.currentTimeMillis();
|
|
||||||
try {
|
|
||||||
Order order = new Order();
|
|
||||||
order.setStatus(1L);
|
|
||||||
order.setIsAccept(0);
|
|
||||||
order.setQiangdan("1");
|
|
||||||
List<Order> orders = orderService.selectOrderList(order);
|
|
||||||
for (Order orderdata : orders) {
|
|
||||||
DispatchUtil.dispatchOrder(orderdata.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("{}任务执行失败", taskName, e);
|
|
||||||
updateTaskStatistics(taskName, false, System.currentTimeMillis() - startTime);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单派单超时处理任务
|
* 订单派单超时处理任务
|
||||||
* 每5分钟执行一次,检查派单超过20分钟的订单
|
* 每5分钟执行一次,检查派单超过20分钟的订单
|
||||||
|
|
|
||||||
|
|
@ -834,7 +834,7 @@ public class WorkerCommissionUtil {
|
||||||
BigDecimal newCommission = currentCommission.add(finalCommissionWithDoorFee);
|
BigDecimal newCommission = currentCommission.add(finalCommissionWithDoorFee);
|
||||||
worker.setCommission(newCommission);
|
worker.setCommission(newCommission);
|
||||||
//累计分佣
|
//累计分佣
|
||||||
worker.setTotalComm(worker.getTotalComm().add(finalCommissionWithDoorFee));
|
worker.setTotalComm(worker.getTotalComm().add(newCommission));
|
||||||
|
|
||||||
// 5. 更新师傅信息
|
// 5. 更新师傅信息
|
||||||
int updateResult = usersService.updateUsers(worker);
|
int updateResult = usersService.updateUsers(worker);
|
||||||
|
|
|
||||||
|
|
@ -117,10 +117,6 @@ public class GoodsOrder extends BaseEntity
|
||||||
/** 排序 */
|
/** 排序 */
|
||||||
private Integer forserviceid;
|
private Integer forserviceid;
|
||||||
|
|
||||||
private BigDecimal wxmoney;
|
|
||||||
private BigDecimal yemoney;
|
|
||||||
private BigDecimal membermoney;
|
|
||||||
private BigDecimal couponmoney;
|
|
||||||
|
|
||||||
/** 支付时间 */
|
/** 支付时间 */
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
|
@ -757,38 +753,6 @@ public class GoodsOrder extends BaseEntity
|
||||||
this.deliveryName = deliveryName;
|
this.deliveryName = deliveryName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BigDecimal getCouponmoney() {
|
|
||||||
return couponmoney;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCouponmoney(BigDecimal couponmoney) {
|
|
||||||
this.couponmoney = couponmoney;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BigDecimal getMembermoney() {
|
|
||||||
return membermoney;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMembermoney(BigDecimal membermoney) {
|
|
||||||
this.membermoney = membermoney;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BigDecimal getYemoney() {
|
|
||||||
return yemoney;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setYemoney(BigDecimal yemoney) {
|
|
||||||
this.yemoney = yemoney;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BigDecimal getWxmoney() {
|
|
||||||
return wxmoney;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWxmoney(BigDecimal wxmoney) {
|
|
||||||
this.wxmoney = wxmoney;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||||
|
|
|
||||||
|
|
@ -209,9 +209,6 @@
|
||||||
<if test="dayDate != null and dayDate != ''">
|
<if test="dayDate != null and dayDate != ''">
|
||||||
AND FROM_UNIXTIME(make_time, '%Y-%m-%d') = #{dayDate}
|
AND FROM_UNIXTIME(make_time, '%Y-%m-%d') = #{dayDate}
|
||||||
</if>
|
</if>
|
||||||
<if test="qiangdan != null and qiangdan != ''">
|
|
||||||
AND worker_id is null
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="baojiasf != null and baojiasf != null">
|
<if test="baojiasf != null and baojiasf != null">
|
||||||
and id in (select oid from user_demand_quotation b where b.workerid=#{baojiasf} and b.status=1)
|
and id in (select oid from user_demand_quotation b where b.workerid=#{baojiasf} and b.status=1)
|
||||||
|
|
|
||||||
|
|
@ -32,13 +32,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="parentId != null"> and parent_id=#{parentId}</if>
|
<if test="parentId != null"> and parent_id=#{parentId}</if>
|
||||||
<if test="city != null and city != ''"> and JSON_CONTAINS(city, #{city})</if>
|
<if test="city != null and city != ''"> and JSON_CONTAINS(city, #{city})</if>
|
||||||
</where>
|
</where>
|
||||||
order by sort ASC
|
order by parent_id ASC, sort ASC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectServiceCateCiKaList" resultMap="ServiceCateResult">
|
<select id="selectServiceCateCiKaList" resultMap="ServiceCateResult">
|
||||||
<include refid="selectServiceCateVo"/>
|
<include refid="selectServiceCateVo"/>
|
||||||
where id in (select card.type from user_secondary_card card where card.status='1' )
|
where id in (select card.type from user_secondary_card card where card.status='1' )
|
||||||
order by sort ASC
|
order by parent_id ASC, sort ASC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -46,21 +46,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<select id="selectServiceCatepintuanList" resultMap="ServiceCateResult">
|
<select id="selectServiceCatepintuanList" resultMap="ServiceCateResult">
|
||||||
<include refid="selectServiceCateVo"/>
|
<include refid="selectServiceCateVo"/>
|
||||||
where id in (select card.first_cate_id from service_goods card where card.status='1' and card.type='1' and card.isgroup='1' )
|
where id in (select card.first_cate_id from service_goods card where card.status='1' and card.type='1' and card.isgroup='1' )
|
||||||
order by sort ASC
|
order by parent_id ASC, sort ASC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
<select id="selectServiceCateMiaoshaList" resultMap="ServiceCateResult">
|
<select id="selectServiceCateMiaoshaList" resultMap="ServiceCateResult">
|
||||||
<include refid="selectServiceCateVo"/>
|
<include refid="selectServiceCateVo"/>
|
||||||
where id in (select card.first_cate_id from service_goods card where card.status='1' and card.type='1' and card.isfixed='1' )
|
where id in (select card.first_cate_id from service_goods card where card.status='1' and card.type='1' and card.isfixed='1' )
|
||||||
order by sort ASC
|
order by parent_id ASC, sort ASC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
<select id="selectServiceCateBaojiaList" resultMap="ServiceCateResult">
|
<select id="selectServiceCateBaojiaList" resultMap="ServiceCateResult">
|
||||||
<include refid="selectServiceCateVo"/>
|
<include refid="selectServiceCateVo"/>
|
||||||
where id in (select card.first_cate_id from service_goods card where card.status='1' and card.type='1' and card.servicetype='2' )
|
where id in (select card.first_cate_id from service_goods card where card.status='1' and card.type='1' and card.servicetype='2' )
|
||||||
order by sort ASC
|
order by parent_id ASC, sort ASC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="isgroup != null "> and isgroup = #{isgroup}</if>
|
<if test="isgroup != null "> and isgroup = #{isgroup}</if>
|
||||||
|
|
||||||
</where>
|
</where>
|
||||||
order by sort ASC
|
order by id desc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -97,7 +97,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<foreach collection="ids" item="id" open="(" separator="," close=")">
|
<foreach collection="ids" item="id" open="(" separator="," close=")">
|
||||||
#{id}
|
#{id}
|
||||||
</foreach>
|
</foreach>
|
||||||
order by sort ASC
|
order by created_at desc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ export function delDiyCity(id) {
|
||||||
// 查询城市树结构
|
// 查询城市树结构
|
||||||
export function getDiyCityTree() {
|
export function getDiyCityTree() {
|
||||||
return request({
|
return request({
|
||||||
url: '/system/DiyCity/getTreeData',
|
url: '/system/DiyCity/tree',
|
||||||
method: 'get'
|
method: 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -290,7 +290,7 @@ export default {
|
||||||
},
|
},
|
||||||
handlefenleiStatusChange(row) {
|
handlefenleiStatusChange(row) {
|
||||||
let text = row.status === "0" ? "启用" : "停用"
|
let text = row.status === "0" ? "启用" : "停用"
|
||||||
this.$modal.confirm('确认要操作' + row.title + '状态吗?').then(function() {
|
this.$modal.confirm('确认要"' + text + '""' + row.title + '"状态吗?').then(function() {
|
||||||
return changefenleiStatus(row.id, row.status)
|
return changefenleiStatus(row.id, row.status)
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$modal.msgSuccess(text + "成功")
|
this.$modal.msgSuccess(text + "成功")
|
||||||
|
|
|
||||||
|
|
@ -829,7 +829,7 @@ export default {
|
||||||
// 任务状态修改
|
// 任务状态修改
|
||||||
handleStatusChange(row) {
|
handleStatusChange(row) {
|
||||||
let text = row.status === "0" ? "启用" : "停用"
|
let text = row.status === "0" ? "启用" : "停用"
|
||||||
this.$modal.confirm('确认要操作' + row.title + '状态吗?').then(function() {
|
this.$modal.confirm('确认要"' + text + '""' + row.title + '"状态吗?').then(function() {
|
||||||
return changetypeStatus(row.id, row.status)
|
return changetypeStatus(row.id, row.status)
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$modal.msgSuccess(text + "成功")
|
this.$modal.msgSuccess(text + "成功")
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { listDiyCity, getDiyCity, delDiyCity, addDiyCity, updateDiyCity, getDiyCityTree } from "@/api/system/DiyCity"
|
import { listDiyCity, getDiyCity, delDiyCity, addDiyCity, updateDiyCity,getTreeDataList } from "@/api/system/DiyCity"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "DiyCity",
|
name: "DiyCity",
|
||||||
|
|
@ -152,7 +152,6 @@ export default {
|
||||||
amap: null,
|
amap: null,
|
||||||
marker: null,
|
marker: null,
|
||||||
geocoder: null,
|
geocoder: null,
|
||||||
mapInited: false,
|
|
||||||
defaultProps: {
|
defaultProps: {
|
||||||
children: 'children',
|
children: 'children',
|
||||||
label: 'label'
|
label: 'label'
|
||||||
|
|
@ -208,19 +207,10 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
gettreeDataList(){
|
gettreeDataList(){
|
||||||
// 使用后端的树形数据接口
|
getTreeDataList().then(response => {
|
||||||
getDiyCityTree().then(response => {
|
this.treeDataList=response.data
|
||||||
if (response.data && response.data.length > 0) {
|
|
||||||
this.treeDataList = response.data
|
|
||||||
} else {
|
|
||||||
this.treeDataList = []
|
|
||||||
}
|
|
||||||
// 初始化时不展开任何节点
|
// 初始化时不展开任何节点
|
||||||
this.expandedKeys = []
|
this.expandedKeys = []
|
||||||
}).catch(error => {
|
|
||||||
console.error('获取树数据失败:', error)
|
|
||||||
// 如果树形接口失败,回退到列表接口构建树形结构
|
|
||||||
this.fallbackToBuildTree()
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -265,16 +255,12 @@ export default {
|
||||||
this.$modal.msgSuccess("修改成功")
|
this.$modal.msgSuccess("修改成功")
|
||||||
this.open = false
|
this.open = false
|
||||||
this.getList()
|
this.getList()
|
||||||
this.gettreeDataList() // 刷新树结构
|
|
||||||
this.loadParentOptions() // 刷新父级选项
|
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
addDiyCity(this.form).then(response => {
|
addDiyCity(this.form).then(response => {
|
||||||
this.$modal.msgSuccess("新增成功")
|
this.$modal.msgSuccess("新增成功")
|
||||||
this.open = false
|
this.open = false
|
||||||
this.getList()
|
this.getList()
|
||||||
this.gettreeDataList() // 刷新树结构
|
|
||||||
this.loadParentOptions() // 刷新父级选项
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -283,12 +269,10 @@ export default {
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
handleDelete(row) {
|
handleDelete(row) {
|
||||||
const ids = row.id || this.ids
|
const ids = row.id || this.ids
|
||||||
this.$modal.confirm('是否确认删除自定义地区编号为"' + ids + '"的数据项?').then(() => {
|
this.$modal.confirm('是否确认删除自定义地区编号为"' + ids + '"的数据项?').then(function() {
|
||||||
return delDiyCity(ids)
|
return delDiyCity(ids)
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.getList()
|
this.getList()
|
||||||
this.gettreeDataList() // 刷新树结构
|
|
||||||
this.loadParentOptions() // 刷新父级选项
|
|
||||||
this.$modal.msgSuccess("删除成功")
|
this.$modal.msgSuccess("删除成功")
|
||||||
}).catch(() => {})
|
}).catch(() => {})
|
||||||
},
|
},
|
||||||
|
|
@ -394,61 +378,6 @@ export default {
|
||||||
this.gettreeDataList(); // 重新获取数据
|
this.gettreeDataList(); // 重新获取数据
|
||||||
},
|
},
|
||||||
|
|
||||||
/** 处理节点点击事件 */
|
|
||||||
handleNodeClick(data, node) {
|
|
||||||
// 可以在这里添加节点点击的逻辑
|
|
||||||
console.log('点击节点:', data, node);
|
|
||||||
},
|
|
||||||
|
|
||||||
/** 回退到构建树形结构的方法 */
|
|
||||||
fallbackToBuildTree() {
|
|
||||||
listDiyCity({pageSize: 1000}).then(response => {
|
|
||||||
if (response.rows && response.rows.length > 0) {
|
|
||||||
this.treeDataList = this.buildTreeData(response.rows)
|
|
||||||
} else {
|
|
||||||
this.treeDataList = []
|
|
||||||
}
|
|
||||||
this.expandedKeys = []
|
|
||||||
}).catch(error => {
|
|
||||||
console.error('回退构建树形结构也失败:', error)
|
|
||||||
this.treeDataList = []
|
|
||||||
this.expandedKeys = []
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
/** 构建树形结构数据 */
|
|
||||||
buildTreeData(dataList) {
|
|
||||||
const treeData = []
|
|
||||||
const dataMap = new Map()
|
|
||||||
|
|
||||||
// 先建立ID映射
|
|
||||||
dataList.forEach(item => {
|
|
||||||
dataMap.set(item.id, {
|
|
||||||
id: item.id,
|
|
||||||
label: item.title,
|
|
||||||
parentId: item.parentId,
|
|
||||||
children: []
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
// 构建树形结构
|
|
||||||
dataList.forEach(item => {
|
|
||||||
const node = dataMap.get(item.id)
|
|
||||||
if (item.parentId === null || item.parentId === 0) {
|
|
||||||
// 根节点
|
|
||||||
treeData.push(node)
|
|
||||||
} else {
|
|
||||||
// 子节点
|
|
||||||
const parent = dataMap.get(item.parentId)
|
|
||||||
if (parent) {
|
|
||||||
parent.children.push(node)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
return treeData
|
|
||||||
},
|
|
||||||
|
|
||||||
decreaseOrder() {
|
decreaseOrder() {
|
||||||
if (this.form.order > 0) {
|
if (this.form.order > 0) {
|
||||||
this.form.order--
|
this.form.order--
|
||||||
|
|
@ -464,23 +393,23 @@ export default {
|
||||||
},
|
},
|
||||||
initMap() {
|
initMap() {
|
||||||
// 销毁旧地图和事件,防止重复绑定
|
// 销毁旧地图和事件,防止重复绑定
|
||||||
if (this.amap) {
|
if (this.map) {
|
||||||
this.amap.destroy()
|
this.map.destroy()
|
||||||
this.amap = null
|
this.map = null
|
||||||
this.marker = null
|
this.marker = null
|
||||||
this.geocoder = null
|
this.geocoder = null
|
||||||
this.mapInited = false
|
this.mapInited = false
|
||||||
}
|
}
|
||||||
this.amap = new AMap.Map('map', {
|
this.map = new AMap.Map('map', {
|
||||||
zoom: 16,
|
zoom: 16,
|
||||||
center: [this.form.longitude || 108.94141, this.form.latitude || 34.209883],
|
center: [this.form.longitude || 108.94141, this.form.latitude || 34.209883],
|
||||||
})
|
})
|
||||||
this.geocoder = new AMap.Geocoder()
|
this.geocoder = new AMap.Geocoder()
|
||||||
// if (this.form.longitude && this.form.latitude) {
|
// if (this.form.longitude && this.form.latitude) {
|
||||||
// this.setMapMarker([this.form.longitude, this.form.latitude]);
|
// this.setMapMarker([this.form.longitude, this.form.latitude]);
|
||||||
// this.amap.setCenter([this.form.longitude, this.form.latitude]);
|
// this.map.setCenter([this.form.longitude, this.form.latitude]);
|
||||||
// }
|
// }
|
||||||
this.amap.on('click', (e) => {
|
this.map.on('click', (e) => {
|
||||||
const lnglat = [e.lnglat.lng, e.lnglat.lat]
|
const lnglat = [e.lnglat.lng, e.lnglat.lat]
|
||||||
this.setMapMarker(lnglat)
|
this.setMapMarker(lnglat)
|
||||||
this.form.longitude = e.lnglat.lng
|
this.form.longitude = e.lnglat.lng
|
||||||
|
|
@ -500,7 +429,7 @@ export default {
|
||||||
}
|
}
|
||||||
this.marker = new AMap.Marker({
|
this.marker = new AMap.Marker({
|
||||||
position: lnglat,
|
position: lnglat,
|
||||||
map: this.amap,
|
map: this.map,
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
searchMapAddress() {
|
searchMapAddress() {
|
||||||
|
|
@ -516,7 +445,7 @@ export default {
|
||||||
if (status === 'complete' && result.geocodes.length) {
|
if (status === 'complete' && result.geocodes.length) {
|
||||||
const lnglat = result.geocodes[0].location
|
const lnglat = result.geocodes[0].location
|
||||||
this.setMapMarker([lnglat.lng, lnglat.lat])
|
this.setMapMarker([lnglat.lng, lnglat.lat])
|
||||||
this.amap.setCenter([lnglat.lng, lnglat.lat])
|
this.map.setCenter([lnglat.lng, lnglat.lat])
|
||||||
this.form.longitude = lnglat.lng
|
this.form.longitude = lnglat.lng
|
||||||
this.form.latitude = lnglat.lat
|
this.form.latitude = lnglat.lat
|
||||||
this.latlng = `${lnglat.lng},${lnglat.lat}`
|
this.latlng = `${lnglat.lng},${lnglat.lat}`
|
||||||
|
|
@ -533,12 +462,9 @@ export default {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
loadParentOptions() {
|
loadParentOptions() {
|
||||||
// 获取所有可选父级
|
// 这里假设用listDiyCity获取所有可选父级
|
||||||
listDiyCity({parentId: 0, pageSize: 1000}).then(res => {
|
listDiyCity({parentId:0}).then(res => {
|
||||||
this.parentOptions = res.rows || []
|
this.parentOptions = res.rows || []
|
||||||
}).catch(error => {
|
|
||||||
console.error('加载父级选项失败:', error)
|
|
||||||
this.parentOptions = []
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
<div v-if="loading" class="loading-container">
|
<div v-if="loading" class="loading-container">
|
||||||
<el-skeleton :rows="10" animated />
|
<el-skeleton :rows="10" animated />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 订单详情内容 -->
|
<!-- 订单详情内容 -->
|
||||||
<div v-else-if="orderData && Object.keys(orderData).length > 0" class="box">
|
<div v-else-if="orderData && Object.keys(orderData).length > 0" class="box">
|
||||||
<!-- 订单和金额信息卡片 -->
|
<!-- 订单和金额信息卡片 -->
|
||||||
|
|
@ -42,18 +42,6 @@
|
||||||
<label>用户电话:</label>
|
<label>用户电话:</label>
|
||||||
<span class="value">{{ orderData.uphone || "未知" }}</span>
|
<span class="value">{{ orderData.uphone || "未知" }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="info-item">
|
|
||||||
<label>订单单号:</label>
|
|
||||||
<span class="value">{{ orderData.mainOrderId || "未知" }}</span>
|
|
||||||
</div>
|
|
||||||
<div class="info-item">
|
|
||||||
<label>下单时间:</label>
|
|
||||||
<span class="value">{{ orderData.createdAt || "未知" }}</span>
|
|
||||||
</div>
|
|
||||||
<!-- <div class="info-item">-->
|
|
||||||
<!-- <label>下单商品:</label>-->
|
|
||||||
<!-- <span class="value">{{ orderData.productName || "未知" }}</span>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- 基础金额信息 -->
|
<!-- 基础金额信息 -->
|
||||||
|
|
@ -103,17 +91,7 @@
|
||||||
}}</span
|
}}</span
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="info-item">
|
|
||||||
<label>商品数量:</label>
|
|
||||||
<span class="value amount-good"
|
|
||||||
>¥{{
|
|
||||||
orderData.num
|
|
||||||
? orderData.num.toFixed(2)
|
|
||||||
: "0.00"
|
|
||||||
}}</span
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
|
@ -160,16 +138,7 @@
|
||||||
}}</span
|
}}</span
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="info-item">
|
|
||||||
<label>退款金额:</label>
|
|
||||||
<span class="value amount-coupon"
|
|
||||||
>¥{{
|
|
||||||
orderData.returnmoney
|
|
||||||
? orderData.returnmoney.toFixed(2)
|
|
||||||
: "0.00"
|
|
||||||
}}</span
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -216,7 +185,7 @@
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<div class="info-item">
|
<div class="info-item">
|
||||||
<label>地图位置:</label>
|
<label>地图位置:</label>
|
||||||
|
|
||||||
<AddressSelector
|
<AddressSelector
|
||||||
:longitude="orderData.longitude"
|
:longitude="orderData.longitude"
|
||||||
:latitude="orderData.latitude"
|
:latitude="orderData.latitude"
|
||||||
|
|
@ -271,7 +240,7 @@
|
||||||
<span class="value logistics-number">{{ orderData.deliveryNum || '未设置' }}</span>
|
<span class="value logistics-number">{{ orderData.deliveryNum || '未设置' }}</span>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row :gutter="24" v-if="orderData.mark">
|
<el-row :gutter="24" v-if="orderData.mark">
|
||||||
|
|
@ -516,7 +485,7 @@ export default {
|
||||||
if (response.code === 200) {
|
if (response.code === 200) {
|
||||||
this.orderData = response.data;
|
this.orderData = response.data;
|
||||||
console.log("获取到的订单详情:", this.orderData);
|
console.log("获取到的订单详情:", this.orderData);
|
||||||
|
|
||||||
// 如果订单有主订单ID,则获取子订单
|
// 如果订单有主订单ID,则获取子订单
|
||||||
if (this.orderData.mainOrderId) {
|
if (this.orderData.mainOrderId) {
|
||||||
await this.fetchChildrenOrders(this.orderData.mainOrderId);
|
await this.fetchChildrenOrders(this.orderData.mainOrderId);
|
||||||
|
|
@ -749,17 +718,17 @@ export default {
|
||||||
console.warn("SKU数据解析失败:", e);
|
console.warn("SKU数据解析失败:", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 其次使用商品图片
|
// 其次使用商品图片
|
||||||
if (row.productImage) {
|
if (row.productImage) {
|
||||||
return row.productImage;
|
return row.productImage;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 最后使用pic字段
|
// 最后使用pic字段
|
||||||
if (row.pic) {
|
if (row.pic) {
|
||||||
return row.pic;
|
return row.pic;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 都没有则返回空字符串
|
// 都没有则返回空字符串
|
||||||
return '';
|
return '';
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
@keyup.enter.native="handleQuery"
|
@keyup.enter.native="handleQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||||
|
|
@ -49,7 +49,7 @@
|
||||||
v-hasPermi="['system:IntegralCate:remove']"
|
v-hasPermi="['system:IntegralCate:remove']"
|
||||||
>删除</el-button>
|
>删除</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
|
|
@ -252,7 +252,7 @@ export default {
|
||||||
// 任务状态修改
|
// 任务状态修改
|
||||||
handleStatusChange(row) {
|
handleStatusChange(row) {
|
||||||
let text = row.status === "0" ? "启用" : "停用"
|
let text = row.status === "0" ? "启用" : "停用"
|
||||||
this.$modal.confirm('确认要操作' + row.title + '状态吗?').then(function() {
|
this.$modal.confirm('确认要"' + text + '""' + row.title + '"状态吗?').then(function() {
|
||||||
return changetypeStatus(row.id, row.status)
|
return changetypeStatus(row.id, row.status)
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$modal.msgSuccess(text + "成功")
|
this.$modal.msgSuccess(text + "成功")
|
||||||
|
|
|
||||||
|
|
@ -661,7 +661,7 @@ export default {
|
||||||
handleStatusChange(row) {
|
handleStatusChange(row) {
|
||||||
let text = row.status === "0" ? "启用" : "停用";
|
let text = row.status === "0" ? "启用" : "停用";
|
||||||
this.$modal
|
this.$modal
|
||||||
.confirm('确认要操作' + row.title + '状态吗?')
|
.confirm('确认要"' + text + '""' + row.title + '"状态吗?')
|
||||||
.then(function () {
|
.then(function () {
|
||||||
return changetypeStatus(row.id, row.status);
|
return changetypeStatus(row.id, row.status);
|
||||||
})
|
})
|
||||||
|
|
@ -706,7 +706,7 @@ export default {
|
||||||
submitForm() {
|
submitForm() {
|
||||||
// 设置规格类型
|
// 设置规格类型
|
||||||
this.form.skuType = this.skuType;
|
this.form.skuType = this.skuType;
|
||||||
|
|
||||||
// 处理规格信息
|
// 处理规格信息
|
||||||
if (this.skuType === 2) {
|
if (this.skuType === 2) {
|
||||||
// 多规格模式
|
// 多规格模式
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -297,7 +297,7 @@ export default {
|
||||||
// 任务状态修改
|
// 任务状态修改
|
||||||
handleStatusChange(row) {
|
handleStatusChange(row) {
|
||||||
let text = row.status === "0" ? "启用" : "停用"
|
let text = row.status === "0" ? "启用" : "停用"
|
||||||
this.$modal.confirm('确认要操作' + row.title + '状态吗?').then(function() {
|
this.$modal.confirm('确认要"' + text + '""' + row.title + '"状态吗?').then(function() {
|
||||||
return changetypeStatus(row.id, row.status)
|
return changetypeStatus(row.id, row.status)
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$modal.msgSuccess(text + "成功")
|
this.$modal.msgSuccess(text + "成功")
|
||||||
|
|
|
||||||
|
|
@ -273,7 +273,7 @@ export default {
|
||||||
// 任务状态修改
|
// 任务状态修改
|
||||||
handleStatusChange(row) {
|
handleStatusChange(row) {
|
||||||
let text = row.status === "0" ? "启用" : "停用"
|
let text = row.status === "0" ? "启用" : "停用"
|
||||||
this.$modal.confirm('确认要操作' + row.title + '状态吗?').then(function() {
|
this.$modal.confirm('确认要"' + text + '""' + row.title + '"状态吗?').then(function() {
|
||||||
return changetypeStatus(row.id, row.status)
|
return changetypeStatus(row.id, row.status)
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$modal.msgSuccess(text + "成功")
|
this.$modal.msgSuccess(text + "成功")
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,7 @@
|
||||||
<el-form :model="timeForm" label-width="120px" class="tab-form">
|
<el-form :model="timeForm" label-width="120px" class="tab-form">
|
||||||
<el-form-item label="每月提现时间">
|
<el-form-item label="每月提现时间">
|
||||||
<el-select v-model="timeForm.withdrawDays" multiple placeholder="请选择日期" style="width: 300px">
|
<el-select v-model="timeForm.withdrawDays" multiple placeholder="请选择日期" style="width: 300px">
|
||||||
<el-option v-for="d in 31" :key="d" :label="d + '号'" :value="d.toString()" />
|
<el-option v-for="d in 31" :key="d" :label="d + '号'" :value="d + '号'" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="定时接单时长">
|
<el-form-item label="定时接单时长">
|
||||||
|
|
@ -1051,7 +1051,7 @@ export default {
|
||||||
this.$message.success('提交成功(模拟)')
|
this.$message.success('提交成功(模拟)')
|
||||||
},
|
},
|
||||||
resetTime() {
|
resetTime() {
|
||||||
this.timeForm = { withdrawDays: ['8', '18', '28'], autoOrderMinutes: 10, cancelOrderDays: 7 }
|
this.timeForm = { withdrawDays: ['8号', '18号', '28号'], autoOrderMinutes: 10, cancelOrderDays: 7 }
|
||||||
},
|
},
|
||||||
resetMember() {
|
resetMember() {
|
||||||
this.memberForm = { member: '', memberRule: '', recharge: '' }
|
this.memberForm = { member: '', memberRule: '', recharge: '' }
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,8 @@
|
||||||
@keyup.enter.native="handleQuery"
|
@keyup.enter.native="handleQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||||
|
|
@ -77,7 +77,7 @@
|
||||||
<el-table-column label="名称" align="center" prop="title" />
|
<el-table-column label="名称" align="center" prop="title" />
|
||||||
<el-table-column label="编号" align="center" prop="code" />
|
<el-table-column label="编号" align="center" prop="code" />
|
||||||
<el-table-column label="排序" align="center" prop="sort" />
|
<el-table-column label="排序" align="center" prop="sort" />
|
||||||
|
|
||||||
<el-table-column label="状态" width="85" align="center">
|
<el-table-column label="状态" width="85" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-switch
|
<el-switch
|
||||||
|
|
@ -117,7 +117,7 @@
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<pagination
|
<pagination
|
||||||
v-show="total>0"
|
v-show="total>0"
|
||||||
:total="total"
|
:total="total"
|
||||||
|
|
@ -244,7 +244,7 @@ export default {
|
||||||
// 任务状态修改
|
// 任务状态修改
|
||||||
handlefenleiStatusChange(row) {
|
handlefenleiStatusChange(row) {
|
||||||
let text = row.status === "0" ? "启用" : "停用"
|
let text = row.status === "0" ? "启用" : "停用"
|
||||||
this.$modal.confirm('确认要操作' + row.title + '状态吗?').then(function() {
|
this.$modal.confirm('确认要"' + text + '""' + row.title + '"状态吗?').then(function() {
|
||||||
return changefenleiStatus(row.id, row.status)
|
return changefenleiStatus(row.id, row.status)
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$modal.msgSuccess(text + "成功")
|
this.$modal.msgSuccess(text + "成功")
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@
|
||||||
<el-table-column label="ID" align="center" width="55" prop="id" />
|
<el-table-column label="ID" align="center" width="55" prop="id" />
|
||||||
<el-table-column label="名称" align="center" prop="title" />
|
<el-table-column label="名称" align="center" prop="title" />
|
||||||
<el-table-column label="排序" align="center" prop="sort" />
|
<el-table-column label="排序" align="center" prop="sort" />
|
||||||
|
|
||||||
<el-table-column label="状态" width="85" align="center">
|
<el-table-column label="状态" width="85" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-switch
|
<el-switch
|
||||||
|
|
@ -140,7 +140,7 @@
|
||||||
<div class="dialog-footer custom-footer">
|
<div class="dialog-footer custom-footer">
|
||||||
<el-button @click="resetForm">重置</el-button>
|
<el-button @click="resetForm">重置</el-button>
|
||||||
<div class="footer-right">
|
<div class="footer-right">
|
||||||
|
|
||||||
<el-button type="primary" @click="submitForm">提交</el-button>
|
<el-button type="primary" @click="submitForm">提交</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -258,7 +258,7 @@ export default {
|
||||||
// 任务状态修改
|
// 任务状态修改
|
||||||
handlefenleiStatusChange(row) {
|
handlefenleiStatusChange(row) {
|
||||||
let text = row.status === "0" ? "启用" : "停用"
|
let text = row.status === "0" ? "启用" : "停用"
|
||||||
this.$modal.confirm('确认要操作' + row.title + '状态吗?').then(function() {
|
this.$modal.confirm('确认要"' + text + '""' + row.title + '"状态吗?').then(function() {
|
||||||
return changefenleiStatus(row.id, row.status)
|
return changefenleiStatus(row.id, row.status)
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$modal.msgSuccess(text + "成功")
|
this.$modal.msgSuccess(text + "成功")
|
||||||
|
|
|
||||||
|
|
@ -373,7 +373,6 @@
|
||||||
<el-dialog :title="'师傅质保金明细'" :visible.sync="workerMarginLogDialogVisible" width="70%" top="5vh" append-to-body>
|
<el-dialog :title="'师傅质保金明细'" :visible.sync="workerMarginLogDialogVisible" width="70%" top="5vh" append-to-body>
|
||||||
<worker-margin-log-detail-table
|
<worker-margin-log-detail-table
|
||||||
:worker-id="currentWorkerId"
|
:worker-id="currentWorkerId"
|
||||||
:worker-margin="currentWorkerMargin"
|
|
||||||
@close="workerMarginLogDialogVisible = false"
|
@close="workerMarginLogDialogVisible = false"
|
||||||
@margin-changed="handleMarginChanged"
|
@margin-changed="handleMarginChanged"
|
||||||
v-if="workerMarginLogDialogVisible"
|
v-if="workerMarginLogDialogVisible"
|
||||||
|
|
@ -506,7 +505,6 @@ export default {
|
||||||
workerMoneyLogDialogVisible: false,
|
workerMoneyLogDialogVisible: false,
|
||||||
currentWorkerId: null,
|
currentWorkerId: null,
|
||||||
workerMarginLogDialogVisible: false,
|
workerMarginLogDialogVisible: false,
|
||||||
currentWorkerMargin: 0, // 当前师傅质保金余额
|
|
||||||
workerLevelDialogVisible: false,
|
workerLevelDialogVisible: false,
|
||||||
workerLevelUserId: null,
|
workerLevelUserId: null,
|
||||||
workerLevelUserName: '',
|
workerLevelUserName: '',
|
||||||
|
|
@ -675,30 +673,14 @@ export default {
|
||||||
},
|
},
|
||||||
// 状态修改
|
// 状态修改
|
||||||
handleStatusChange(row) {
|
handleStatusChange(row) {
|
||||||
// 获取当前的新状态
|
let text = row.status === "0" ? "启用" : "停用"
|
||||||
const newStatus = row.status;
|
this.$modal.confirm('确认要"' + text + '""' + row.name + '"状态吗?').then(function() {
|
||||||
|
return changetypeStatus(row.id, row.status)
|
||||||
// 根据新状态判断操作类型:1表示启用,0表示停用
|
|
||||||
const operation = newStatus === "1" ? "启用" : "停用";
|
|
||||||
|
|
||||||
console.log("-------------------------新状态: " + newStatus);
|
|
||||||
console.log("-------------------------操作类型: " + operation);
|
|
||||||
|
|
||||||
// 显示确认对话框
|
|
||||||
this.$modal.confirm(`确认要操作${row.name}的状态吗?`).then(() => {
|
|
||||||
// 调用API更新状态
|
|
||||||
return changetypeStatus(row.id, newStatus);
|
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
// 成功提示
|
this.$modal.msgSuccess(text + "成功")
|
||||||
this.$modal.msgSuccess(`${operation}成功`);
|
}).catch(function() {
|
||||||
// 刷新列表以获取最新数据
|
row.status = row.status === "0" ? "1" : "0"
|
||||||
this.getList();
|
})
|
||||||
}).catch((error) => {
|
|
||||||
console.error('状态更新失败:', error);
|
|
||||||
// 如果更新失败,恢复原状态
|
|
||||||
row.status = newStatus === "1" ? "0" : "1";
|
|
||||||
this.$message.error(`${operation}失败,请重试`);
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
/** 提交按钮 */
|
/** 提交按钮 */
|
||||||
submitForm() {
|
submitForm() {
|
||||||
|
|
@ -769,7 +751,6 @@ export default {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.currentWorkerId = row.id;
|
this.currentWorkerId = row.id;
|
||||||
this.currentWorkerMargin = parseFloat(row.margin) || 0;
|
|
||||||
this.workerMarginLogDialogVisible = true;
|
this.workerMarginLogDialogVisible = true;
|
||||||
},
|
},
|
||||||
showWorkerLevelDialog(row) {
|
showWorkerLevelDialog(row) {
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||||
<!-- <el-button type="info" icon="el-icon-view" size="mini" @click="handleViewPending">查看待审核</el-button>-->
|
<el-button type="info" icon="el-icon-view" size="mini" @click="handleViewPending">查看待审核</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
|
|
@ -136,20 +136,20 @@
|
||||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
</el-row> -->
|
</el-row> -->
|
||||||
|
|
||||||
<!-- <el-row :gutter="10" class="mb8">-->
|
<el-row :gutter="10" class="mb8">
|
||||||
<!-- <el-col :span="1.5">-->
|
<el-col :span="1.5">
|
||||||
<!-- <el-button-->
|
<el-button
|
||||||
<!-- type="success"-->
|
type="success"
|
||||||
<!-- plain-->
|
plain
|
||||||
<!-- icon="el-icon-check"-->
|
icon="el-icon-check"
|
||||||
<!-- size="mini"-->
|
size="mini"
|
||||||
<!-- :disabled="multiple"-->
|
:disabled="multiple"
|
||||||
<!-- @click="handleBatchAudit"-->
|
@click="handleBatchAudit"
|
||||||
<!-- v-hasPermi="['system:WorkerApply:audit']"-->
|
v-hasPermi="['system:WorkerApply:audit']"
|
||||||
<!-- >批量审核</el-button>-->
|
>批量审核</el-button>
|
||||||
<!-- </el-col>-->
|
</el-col>
|
||||||
<!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
<!-- </el-row>-->
|
</el-row>
|
||||||
|
|
||||||
<el-table v-loading="loading" :data="WorkerApplyList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="WorkerApplyList" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,6 @@
|
||||||
plain
|
plain
|
||||||
icon="el-icon-lock"
|
icon="el-icon-lock"
|
||||||
size="mini"
|
size="mini"
|
||||||
:disabled="!canLock"
|
|
||||||
@click="handleLockMoney"
|
@click="handleLockMoney"
|
||||||
v-hasPermi="['system:workerMoneyLog:lock']"
|
v-hasPermi="['system:workerMoneyLog:lock']"
|
||||||
>锁住收益</el-button>
|
>锁住收益</el-button>
|
||||||
|
|
@ -52,7 +51,6 @@
|
||||||
plain
|
plain
|
||||||
icon="el-icon-unlock"
|
icon="el-icon-unlock"
|
||||||
size="mini"
|
size="mini"
|
||||||
:disabled="!canLock"
|
|
||||||
@click="handleUnlockMoney"
|
@click="handleUnlockMoney"
|
||||||
v-hasPermi="['system:workerMoneyLog:unlock']"
|
v-hasPermi="['system:workerMoneyLog:unlock']"
|
||||||
>解锁收益</el-button>
|
>解锁收益</el-button>
|
||||||
|
|
@ -63,7 +61,6 @@
|
||||||
plain
|
plain
|
||||||
icon="el-icon-edit-outline"
|
icon="el-icon-edit-outline"
|
||||||
size="mini"
|
size="mini"
|
||||||
:disabled="!canAdjust"
|
|
||||||
@click="handleAdjustMoney"
|
@click="handleAdjustMoney"
|
||||||
v-hasPermi="['system:workerMoneyLog:adjust']"
|
v-hasPermi="['system:workerMoneyLog:adjust']"
|
||||||
>调整收益</el-button>
|
>调整收益</el-button>
|
||||||
|
|
@ -159,126 +156,15 @@
|
||||||
:limit.sync="queryParams.pageSize"
|
:limit.sync="queryParams.pageSize"
|
||||||
@pagination="getList"
|
@pagination="getList"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 空数据提示 -->
|
<!-- 空数据提示 -->
|
||||||
<div v-if="!loading && workerMoneyLogList.length === 0" style="text-align: center; padding: 40px; color: #909399;">
|
<div v-if="!loading && workerMoneyLogList.length === 0" style="text-align: center; padding: 40px; color: #909399;">
|
||||||
<i class="el-icon-warning" style="font-size: 48px; margin-bottom: 16px;"></i>
|
<i class="el-icon-warning" style="font-size: 48px; margin-bottom: 16px;"></i>
|
||||||
<p>暂无师傅佣金明细数据</p>
|
<p>暂无师傅佣金明细数据</p>
|
||||||
<p v-if="queryParams.workerId">师傅ID: {{ queryParams.workerId }}</p>
|
<p v-if="queryParams.workerId">师傅ID: {{ queryParams.workerId }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 锁住收益、解锁收益、调整收益弹窗可复用index.vue逻辑 -->
|
||||||
<!-- 操作提示 -->
|
<!-- 这里省略弹窗代码,实际实现时可直接复制index.vue相关弹窗和方法 -->
|
||||||
<div v-if="!loading && workerMoneyLogList.length > 0 && ids.length === 0" style="text-align: center; padding: 20px; color: #909399; background: #f8f9fa; border-radius: 4px; margin-bottom: 20px;">
|
|
||||||
<i class="el-icon-info" style="margin-right: 8px;"></i>
|
|
||||||
请选择一条记录进行操作。锁住收益:未锁定状态 | 解锁收益:已锁定状态 | 调整收益:已锁定状态
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 锁住收益弹窗 -->
|
|
||||||
<el-dialog title="锁住收益" :visible.sync="lockDialogVisible" width="500px" append-to-body>
|
|
||||||
<el-form ref="lockForm" :model="lockForm" :rules="lockRules" label-width="100px">
|
|
||||||
<el-form-item label="锁住金额">
|
|
||||||
<el-input v-model="lockForm.price" disabled>
|
|
||||||
<template slot="prepend">¥</template>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="锁住类型" prop="lockType">
|
|
||||||
<el-radio-group v-model="lockForm.lockType">
|
|
||||||
<el-radio label="forever">永久锁住</el-radio>
|
|
||||||
<el-radio label="days">按天数锁住</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item v-if="lockForm.lockType === 'days'" label="锁住天数" prop="lockday">
|
|
||||||
<el-input-number v-model="lockForm.lockday" :min="1" :max="365" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="锁住原因" prop="remark">
|
|
||||||
<el-input
|
|
||||||
v-model="lockForm.remark"
|
|
||||||
type="textarea"
|
|
||||||
:rows="3"
|
|
||||||
placeholder="请输入锁住原因"
|
|
||||||
maxlength="200"
|
|
||||||
show-word-limit
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<div style="color: #909399; font-size: 12px;">
|
|
||||||
将锁住 {{ lockForm.count }} 条记录,总金额 ¥{{ formatMoney(lockForm.total) }}
|
|
||||||
</div>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<div slot="footer" class="dialog-footer">
|
|
||||||
<el-button @click="cancelLockDialog">取消</el-button>
|
|
||||||
<el-button type="primary" @click="confirmLockMoney" :loading="lockLoading">确认锁住</el-button>
|
|
||||||
</div>
|
|
||||||
</el-dialog>
|
|
||||||
|
|
||||||
<!-- 解锁收益弹窗 -->
|
|
||||||
<el-dialog title="解锁收益" :visible.sync="unlockDialogVisible" width="500px" append-to-body>
|
|
||||||
<el-form ref="unlockForm" :model="unlockForm" :rules="unlockRules" label-width="100px">
|
|
||||||
<el-form-item label="解锁原因" prop="remark">
|
|
||||||
<el-input
|
|
||||||
v-model="unlockForm.remark"
|
|
||||||
type="textarea"
|
|
||||||
:rows="3"
|
|
||||||
placeholder="请输入解锁原因"
|
|
||||||
maxlength="200"
|
|
||||||
show-word-limit
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<div style="color: #909399; font-size: 12px;">
|
|
||||||
将解锁 {{ unlockForm.count }} 条记录,总金额 ¥{{ formatMoney(unlockForm.total) }}
|
|
||||||
</div>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<div slot="footer" class="dialog-footer">
|
|
||||||
<el-button @click="cancelUnlockDialog">取消</el-button>
|
|
||||||
<el-button type="primary" @click="confirmUnlockMoney" :loading="unlockLoading">确认解锁</el-button>
|
|
||||||
</div>
|
|
||||||
</el-dialog>
|
|
||||||
|
|
||||||
<!-- 调整收益弹窗 -->
|
|
||||||
<el-dialog title="调整收益" :visible.sync="adjustDialogVisible" width="500px" append-to-body>
|
|
||||||
<el-form ref="adjustForm" :model="adjustForm" :rules="adjustRules" label-width="100px">
|
|
||||||
<el-form-item label="调整类型" prop="type">
|
|
||||||
<el-radio-group v-model="adjustForm.type">
|
|
||||||
<el-radio label="reward">奖励</el-radio>
|
|
||||||
<el-radio label="deduct">扣除</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="调整金额" prop="amount">
|
|
||||||
<el-input-number
|
|
||||||
v-model="adjustForm.amount"
|
|
||||||
:min="0.01"
|
|
||||||
:max="adjustForm.type === 'deduct' ? adjustForm.maxPrice : 99999"
|
|
||||||
:precision="2"
|
|
||||||
:step="0.01"
|
|
||||||
placeholder="请输入调整金额"
|
|
||||||
style="width: 100%;"
|
|
||||||
/>
|
|
||||||
<div v-if="adjustForm.type === 'deduct'" style="color: #909399; font-size: 12px; margin-top: 5px;">
|
|
||||||
当前金额: ¥{{ formatMoney(adjustForm.maxPrice) }},最大可扣除: ¥{{ formatMoney(adjustForm.maxPrice) }}
|
|
||||||
</div>
|
|
||||||
<div v-else style="color: #909399; font-size: 12px; margin-top: 5px;">
|
|
||||||
当前金额: ¥{{ formatMoney(adjustForm.maxPrice) }},奖励后金额: ¥{{ formatMoney(adjustForm.maxPrice + (adjustForm.amount || 0)) }}
|
|
||||||
</div>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="调整原因" prop="remark">
|
|
||||||
<el-input
|
|
||||||
v-model="adjustForm.remark"
|
|
||||||
type="textarea"
|
|
||||||
:rows="3"
|
|
||||||
placeholder="请输入调整原因"
|
|
||||||
maxlength="200"
|
|
||||||
show-word-limit
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<div slot="footer" class="dialog-footer">
|
|
||||||
<el-button @click="cancelAdjustDialog">取消</el-button>
|
|
||||||
<el-button type="primary" @click="confirmAdjustMoney" :loading="adjustLoading">确认调整</el-button>
|
|
||||||
</div>
|
|
||||||
</el-dialog>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -319,15 +205,13 @@ export default {
|
||||||
lockday: 1,
|
lockday: 1,
|
||||||
ids: [],
|
ids: [],
|
||||||
count: 0,
|
count: 0,
|
||||||
total: 0,
|
total: 0
|
||||||
remark: ''
|
|
||||||
},
|
},
|
||||||
unlockDialogVisible: false,
|
unlockDialogVisible: false,
|
||||||
unlockForm: {
|
unlockForm: {
|
||||||
count: 0,
|
count: 0,
|
||||||
total: 0,
|
total: 0,
|
||||||
ids: [],
|
ids: []
|
||||||
remark: ''
|
|
||||||
},
|
},
|
||||||
adjustDialogVisible: false,
|
adjustDialogVisible: false,
|
||||||
adjustForm: {
|
adjustForm: {
|
||||||
|
|
@ -337,45 +221,6 @@ export default {
|
||||||
remark: '',
|
remark: '',
|
||||||
maxPrice: 0
|
maxPrice: 0
|
||||||
},
|
},
|
||||||
lockLoading: false,
|
|
||||||
unlockLoading: false,
|
|
||||||
adjustLoading: false,
|
|
||||||
lockRules: {
|
|
||||||
lockType: [
|
|
||||||
{ required: true, message: '请选择锁住类型', trigger: 'change' }
|
|
||||||
],
|
|
||||||
lockday: [
|
|
||||||
{
|
|
||||||
validator: (rule, value, callback) => {
|
|
||||||
if (this.lockForm.lockType === 'days' && (!value || value < 1)) {
|
|
||||||
callback(new Error('按天锁住时必须输入锁住天数'));
|
|
||||||
} else {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
remark: [
|
|
||||||
{ required: true, message: '请输入锁住原因', trigger: 'blur' }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
unlockRules: {
|
|
||||||
remark: [
|
|
||||||
{ required: true, message: '请输入解锁原因', trigger: 'blur' }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
adjustRules: {
|
|
||||||
type: [
|
|
||||||
{ required: true, message: '请选择调整类型', trigger: 'change' }
|
|
||||||
],
|
|
||||||
amount: [
|
|
||||||
{ required: true, message: '请输入调整金额', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
remark: [
|
|
||||||
{ required: true, message: '请输入调整原因', trigger: 'blur' }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
|
|
@ -440,20 +285,9 @@ export default {
|
||||||
this.ids = selection.map(item => item.id)
|
this.ids = selection.map(item => item.id)
|
||||||
this.single = selection.length!==1
|
this.single = selection.length!==1
|
||||||
this.multiple = !selection.length
|
this.multiple = !selection.length
|
||||||
|
this.canAdjust = selection.length === 1 && selection[0].status === 1;
|
||||||
if (selection.length === 1) {
|
this.canLock = selection.length === 1 && selection[0].status === 1;
|
||||||
const selectedItem = selection[0];
|
this.canUnlock = selection.length === 1 && selection[0].status === 1;
|
||||||
// 调整收益:只能操作已锁定的数据(status === 1)
|
|
||||||
this.canAdjust = selectedItem.status === 1;
|
|
||||||
// 锁住收益:只能操作未锁定的数据(status !== 1)
|
|
||||||
this.canLock = selectedItem.status !== 1;
|
|
||||||
// 解锁收益:只能操作已锁定的数据(status === 1)
|
|
||||||
this.canUnlock = selectedItem.status === 1;
|
|
||||||
} else {
|
|
||||||
this.canAdjust = false;
|
|
||||||
this.canLock = false;
|
|
||||||
this.canUnlock = false;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
handleLockMoney() {
|
handleLockMoney() {
|
||||||
if (this.ids.length !== 1) {
|
if (this.ids.length !== 1) {
|
||||||
|
|
@ -461,8 +295,8 @@ export default {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const row = this.workerMoneyLogList.find(item => item.id === this.ids[0]);
|
const row = this.workerMoneyLogList.find(item => item.id === this.ids[0]);
|
||||||
if (!row || row.status === 1) {
|
if (!row || row.status !== 1) {
|
||||||
this.$message.warning('只能锁住未锁定状态的数据');
|
this.$message.warning('只能操作冻结中的数据');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.lockForm.count = 1;
|
this.lockForm.count = 1;
|
||||||
|
|
@ -471,7 +305,6 @@ export default {
|
||||||
this.lockForm.lockType = 'forever';
|
this.lockForm.lockType = 'forever';
|
||||||
this.lockForm.lockday = 1;
|
this.lockForm.lockday = 1;
|
||||||
this.lockForm.ids = [row.id];
|
this.lockForm.ids = [row.id];
|
||||||
this.lockForm.remark = '';
|
|
||||||
this.lockDialogVisible = true;
|
this.lockDialogVisible = true;
|
||||||
},
|
},
|
||||||
handleUnlockMoney() {
|
handleUnlockMoney() {
|
||||||
|
|
@ -479,17 +312,14 @@ export default {
|
||||||
this.$message.warning('请选择一条要解锁收益的数据');
|
this.$message.warning('请选择一条要解锁收益的数据');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
console.log('开始解锁收益数据,ids:', this.ids)
|
|
||||||
const row = this.workerMoneyLogList.find(item => item.id === this.ids[0]);
|
const row = this.workerMoneyLogList.find(item => item.id === this.ids[0]);
|
||||||
console.log('开始解锁收益数据,ids:', row.status)
|
if (!row || row.status !== 1) {
|
||||||
if (!row || row.status === 1) {
|
|
||||||
this.$message.warning('只能操作冻结中的数据');
|
this.$message.warning('只能操作冻结中的数据');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.unlockForm.count = 1;
|
this.unlockForm.count = 1;
|
||||||
this.unlockForm.total = row.price;
|
this.unlockForm.total = row.price;
|
||||||
this.unlockForm.ids = [row.id];
|
this.unlockForm.ids = [row.id];
|
||||||
this.unlockForm.remark = '';
|
|
||||||
this.unlockDialogVisible = true;
|
this.unlockDialogVisible = true;
|
||||||
},
|
},
|
||||||
handleAdjustMoney() {
|
handleAdjustMoney() {
|
||||||
|
|
@ -508,125 +338,7 @@ export default {
|
||||||
this.adjustForm.remark = '';
|
this.adjustForm.remark = '';
|
||||||
this.adjustForm.maxPrice = parseFloat(row.price) || 0;
|
this.adjustForm.maxPrice = parseFloat(row.price) || 0;
|
||||||
this.adjustDialogVisible = true;
|
this.adjustDialogVisible = true;
|
||||||
},
|
|
||||||
// 确认锁住收益
|
|
||||||
confirmLockMoney() {
|
|
||||||
this.$refs.lockForm.validate(valid => {
|
|
||||||
if (valid) {
|
|
||||||
this.lockLoading = true;
|
|
||||||
const lockData = {
|
|
||||||
ids: this.lockForm.ids,
|
|
||||||
lockType: this.lockForm.lockType,
|
|
||||||
lockday: this.lockForm.lockType === 'days' ? this.lockForm.lockday : null,
|
|
||||||
remark: this.lockForm.remark
|
|
||||||
};
|
|
||||||
|
|
||||||
lockWorkerMoney(lockData).then(response => {
|
|
||||||
this.$message.success('锁住收益成功');
|
|
||||||
this.lockDialogVisible = false;
|
|
||||||
this.getList(); // 刷新列表
|
|
||||||
// 重置表单
|
|
||||||
this.$nextTick(() => {
|
|
||||||
if (this.$refs.lockForm) {
|
|
||||||
this.$refs.lockForm.resetFields();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}).catch(error => {
|
|
||||||
console.error('锁住收益失败:', error);
|
|
||||||
this.$message.error('锁住收益失败: ' + (error.message || '未知错误'));
|
|
||||||
}).finally(() => {
|
|
||||||
this.lockLoading = false;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 确认解锁收益
|
|
||||||
confirmUnlockMoney() {
|
|
||||||
this.$refs.unlockForm.validate(valid => {
|
|
||||||
if (valid) {
|
|
||||||
this.unlockLoading = true;
|
|
||||||
const unlockData = {
|
|
||||||
ids: this.unlockForm.ids,
|
|
||||||
remark: this.unlockForm.remark
|
|
||||||
};
|
|
||||||
|
|
||||||
unlockWorkerMoney(unlockData).then(response => {
|
|
||||||
this.$message.success('解锁收益成功');
|
|
||||||
this.unlockDialogVisible = false;
|
|
||||||
this.getList(); // 刷新列表
|
|
||||||
// 重置表单
|
|
||||||
this.$nextTick(() => {
|
|
||||||
if (this.$refs.unlockForm) {
|
|
||||||
this.$refs.unlockForm.resetFields();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}).catch(error => {
|
|
||||||
console.error('解锁收益失败:', error);
|
|
||||||
this.$message.error('解锁收益失败: ' + (error.message || '未知错误'));
|
|
||||||
}).finally(() => {
|
|
||||||
this.unlockLoading = false;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 确认调整收益
|
|
||||||
confirmAdjustMoney() {
|
|
||||||
this.$refs.adjustForm.validate(valid => {
|
|
||||||
if (valid) {
|
|
||||||
this.adjustLoading = true;
|
|
||||||
const adjustData = {
|
|
||||||
id: this.adjustForm.id,
|
|
||||||
type: this.adjustForm.type,
|
|
||||||
amount: this.adjustForm.amount,
|
|
||||||
remark: this.adjustForm.remark
|
|
||||||
};
|
|
||||||
|
|
||||||
adjustWorkerMoney(adjustData).then(response => {
|
|
||||||
this.$message.success('调整收益成功');
|
|
||||||
this.adjustDialogVisible = false;
|
|
||||||
this.getList(); // 刷新列表
|
|
||||||
// 重置表单
|
|
||||||
this.$nextTick(() => {
|
|
||||||
if (this.$refs.adjustForm) {
|
|
||||||
this.$refs.adjustForm.resetFields();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}).catch(error => {
|
|
||||||
console.error('调整收益失败:', error);
|
|
||||||
this.$message.error('调整收益失败: ' + (error.message || '未知错误'));
|
|
||||||
}).finally(() => {
|
|
||||||
this.adjustLoading = false;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 取消锁住收益弹窗
|
|
||||||
cancelLockDialog() {
|
|
||||||
this.lockDialogVisible = false;
|
|
||||||
this.$nextTick(() => {
|
|
||||||
if (this.$refs.lockForm) {
|
|
||||||
this.$refs.lockForm.resetFields();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 取消解锁收益弹窗
|
|
||||||
cancelUnlockDialog() {
|
|
||||||
this.unlockDialogVisible = false;
|
|
||||||
this.$nextTick(() => {
|
|
||||||
if (this.$refs.unlockForm) {
|
|
||||||
this.$refs.unlockForm.resetFields();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 取消调整收益弹窗
|
|
||||||
cancelAdjustDialog() {
|
|
||||||
this.adjustDialogVisible = false;
|
|
||||||
this.$nextTick(() => {
|
|
||||||
if (this.$refs.adjustForm) {
|
|
||||||
this.$refs.adjustForm.resetFields();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
Loading…
Reference in New Issue