Commit 583bd56b authored by 刘帅's avatar 刘帅

1.优化

parent b740dc54
...@@ -3,6 +3,7 @@ package com.propertyManagement; ...@@ -3,6 +3,7 @@ package com.propertyManagement;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup; import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup;
import org.springframework.scheduling.annotation.EnableScheduling;
/** /**
* 启动程序 * 启动程序
...@@ -10,6 +11,7 @@ import org.springframework.boot.context.metrics.buffering.BufferingApplicationSt ...@@ -10,6 +11,7 @@ import org.springframework.boot.context.metrics.buffering.BufferingApplicationSt
* @author propertymanagement * @author propertymanagement
*/ */
@EnableScheduling
@SpringBootApplication @SpringBootApplication
public class PropertyManagementApplication { public class PropertyManagementApplication {
......
...@@ -52,6 +52,15 @@ public class WxAccountController extends BaseController { ...@@ -52,6 +52,15 @@ public class WxAccountController extends BaseController {
return iWxAccountService.queryPageList(bo, pageQuery); return iWxAccountService.queryPageList(bo, pageQuery);
} }
/**
* 查询员工账号列表
*/
@SaCheckPermission("business:account:list")
@GetMapping("/listAll")
public R<List<WxAccountVo>> listAll(WxAccountBo bo) {
return R.ok(iWxAccountService.queryList(bo));
}
/** /**
* 导出员工账号列表 * 导出员工账号列表
*/ */
......
...@@ -56,6 +56,9 @@ public class WxCommunityController extends BaseController { ...@@ -56,6 +56,9 @@ public class WxCommunityController extends BaseController {
*/ */
@GetMapping("/listAll") @GetMapping("/listAll")
public R<List<WxCommunityVo>> listAll(WxCommunityBo bo) { public R<List<WxCommunityVo>> listAll(WxCommunityBo bo) {
if (!LoginHelper.isAdmin()) {
bo.setCommunityId(LoginHelper.getLoginUser().getCommunityId());
}
return R.ok(iWxCommunityService.queryList(bo)); return R.ok(iWxCommunityService.queryList(bo));
} }
......
...@@ -102,6 +102,7 @@ public class ApiWxCommunityController extends BaseController { ...@@ -102,6 +102,7 @@ public class ApiWxCommunityController extends BaseController {
wxUser.setName(proprietorLedger.getName()); wxUser.setName(proprietorLedger.getName());
wxUser.setIdentityCard(proprietorLedger.getIdentityCard()); wxUser.setIdentityCard(proprietorLedger.getIdentityCard());
wxUser.setSqm(proprietorLedger.getSqm()); wxUser.setSqm(proprietorLedger.getSqm());
wxUser.setDayMoney(proprietorLedger.getDayMoney());
wxUser.setMonthMoney(proprietorLedger.getMonthMoney()); wxUser.setMonthMoney(proprietorLedger.getMonthMoney());
/** /**
* 查询车位信息 * 查询车位信息
......
...@@ -37,10 +37,11 @@ public class ApiWxFamilyMemberController extends BaseController { ...@@ -37,10 +37,11 @@ public class ApiWxFamilyMemberController extends BaseController {
* 根据户主查询家庭成员列表 * 根据户主查询家庭成员列表
*/ */
@GetMapping("/listAllByUserId") @GetMapping("/listAllByUserId")
public R<List<WxFamilyMemberVo>> listAllByUserId() { public R<List<WxFamilyMemberVo>> listAllByUserId(Integer type) {
LoginWxUser wxUser = AuthUtil.getWxUser(); LoginWxUser wxUser = AuthUtil.getWxUser();
WxFamilyMemberBo familyMemberBo = new WxFamilyMemberBo(); WxFamilyMemberBo familyMemberBo = new WxFamilyMemberBo();
familyMemberBo.setProprietorId(wxUser.getProprietorId()); familyMemberBo.setProprietorId(wxUser.getProprietorId());
familyMemberBo.setType(type);
List<WxFamilyMemberVo> memberVoList = iWxFamilyMemberService.queryList(familyMemberBo); List<WxFamilyMemberVo> memberVoList = iWxFamilyMemberService.queryList(familyMemberBo);
return R.ok(memberVoList); return R.ok(memberVoList);
} }
......
...@@ -2,6 +2,8 @@ package com.propertyManagement.business.domain; ...@@ -2,6 +2,8 @@ package com.propertyManagement.business.domain;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.propertyManagement.common.annotation.ExcelDictFormat;
import com.propertyManagement.common.convert.ExcelDictConvert;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.io.Serializable; import java.io.Serializable;
...@@ -83,4 +85,9 @@ public class WxComment extends BaseEntity { ...@@ -83,4 +85,9 @@ public class WxComment extends BaseEntity {
*/ */
private Date closeTime; private Date closeTime;
/**
* 是否匿名(0否 1是)
*/
private Integer isAnon;
} }
...@@ -72,5 +72,9 @@ public class WxFamilyMember extends BaseEntity { ...@@ -72,5 +72,9 @@ public class WxFamilyMember extends BaseEntity {
* 状态 * 状态
*/ */
private Integer state; private Integer state;
/**
* 类型(1家人 2租客)
*/
private Integer type;
} }
...@@ -90,6 +90,14 @@ public class WxLiveBill extends BaseEntity { ...@@ -90,6 +90,14 @@ public class WxLiveBill extends BaseEntity {
* 缴费月份 * 缴费月份
*/ */
private Date month; private Date month;
/**
* 开始日期
*/
private Date startTime;
/**
* 结束日期
*/
private Date endTime;
/** /**
* 单价 * 单价
*/ */
......
...@@ -100,5 +100,13 @@ public class WxPayRecord extends BaseEntity { ...@@ -100,5 +100,13 @@ public class WxPayRecord extends BaseEntity {
* 平台支付流水号 * 平台支付流水号
*/ */
private String outTradeNo; private String outTradeNo;
/**
* 缴费开始日期
*/
private Date startTime;
/**
* 缴费结束日期
*/
private Date endTime;
} }
...@@ -63,6 +63,10 @@ public class WxProprietorLedger extends BaseEntity { ...@@ -63,6 +63,10 @@ public class WxProprietorLedger extends BaseEntity {
* 面积单价(元) * 面积单价(元)
*/ */
private BigDecimal sqmPrice; private BigDecimal sqmPrice;
/**
* 物业天费
*/
private BigDecimal dayMoney;
/** /**
* 物业月费 * 物业月费
*/ */
...@@ -119,5 +123,9 @@ public class WxProprietorLedger extends BaseEntity { ...@@ -119,5 +123,9 @@ public class WxProprietorLedger extends BaseEntity {
* 备注 * 备注
*/ */
private String remark; private String remark;
/**
* 是否预警(0否 1是)
*/
private Integer isWarn;
} }
...@@ -95,5 +95,11 @@ public class WxCommentBo extends BaseEntity { ...@@ -95,5 +95,11 @@ public class WxCommentBo extends BaseEntity {
*/ */
private Date closeTime; private Date closeTime;
/**
* 是否匿名(0否 1是)
*/
@NotNull(message = "是否匿名不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer isAnon;
} }
...@@ -81,5 +81,10 @@ public class WxFamilyMemberBo extends BaseEntity { ...@@ -81,5 +81,10 @@ public class WxFamilyMemberBo extends BaseEntity {
*/ */
private Integer state; private Integer state;
/**
* 类型(1家人 2租客)
*/
private Integer type;
} }
package com.propertyManagement.business.domain.bo; package com.propertyManagement.business.domain.bo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.propertyManagement.common.core.domain.BaseEntity; import com.propertyManagement.common.core.domain.BaseEntity;
import lombok.Data; import lombok.Data;
...@@ -101,6 +104,18 @@ public class WxLiveBillBo extends BaseEntity { ...@@ -101,6 +104,18 @@ public class WxLiveBillBo extends BaseEntity {
@JsonFormat(pattern = "yyyy-MM") @JsonFormat(pattern = "yyyy-MM")
private Date month; private Date month;
/**
* 开始日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date startTime;
/**
* 结束日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endTime;
/** /**
* 单价 * 单价
*/ */
......
...@@ -147,4 +147,14 @@ public class WxPayRecordBo extends BaseEntity { ...@@ -147,4 +147,14 @@ public class WxPayRecordBo extends BaseEntity {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createEndTime; private Date createEndTime;
/**
* 缴费开始日期
*/
private Date startTime;
/**
* 缴费结束日期
*/
private Date endTime;
} }
...@@ -80,6 +80,12 @@ public class WxProprietorLedgerBo extends BaseEntity { ...@@ -80,6 +80,12 @@ public class WxProprietorLedgerBo extends BaseEntity {
@NotNull(message = "面积单价(元)不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "面积单价(元)不能为空", groups = { AddGroup.class, EditGroup.class })
private BigDecimal sqmPrice; private BigDecimal sqmPrice;
/**
* 物业天费
*/
@NotNull(message = "物业天费(元)不能为空", groups = { AddGroup.class, EditGroup.class })
private BigDecimal dayMoney;
/** /**
* 物业月费 * 物业月费
*/ */
...@@ -161,5 +167,10 @@ public class WxProprietorLedgerBo extends BaseEntity { ...@@ -161,5 +167,10 @@ public class WxProprietorLedgerBo extends BaseEntity {
*/ */
private String remark; private String remark;
/**
* 是否预警(0否 1是)
*/
private Integer isWarn;
} }
...@@ -53,6 +53,9 @@ public class LoginWxUser implements Serializable { ...@@ -53,6 +53,9 @@ public class LoginWxUser implements Serializable {
/** 房间面积 */ /** 房间面积 */
private BigDecimal sqm; private BigDecimal sqm;
/** 物业天费 */
private BigDecimal dayMoney;
/** 物业月费 */ /** 物业月费 */
private BigDecimal monthMoney; private BigDecimal monthMoney;
......
...@@ -96,6 +96,13 @@ public class WxCommentVo implements Serializable { ...@@ -96,6 +96,13 @@ public class WxCommentVo implements Serializable {
@ExcelProperty(value = "关闭时间") @ExcelProperty(value = "关闭时间")
private Date closeTime; private Date closeTime;
/**
* 是否匿名(0否 1是)
*/
@ExcelProperty(value = "是否匿名", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sys_is_enable")
private Integer isAnon;
/** /**
* 创建时间 * 创建时间
*/ */
......
...@@ -90,5 +90,12 @@ public class WxFamilyMemberVo implements Serializable { ...@@ -90,5 +90,12 @@ public class WxFamilyMemberVo implements Serializable {
@ExcelDictFormat(dictType = "wx_family_member_state") @ExcelDictFormat(dictType = "wx_family_member_state")
private Integer state; private Integer state;
/**
* 类型(1家人 2租客)
*/
@ExcelProperty(value = "类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "wx_family_member_type")
private Integer type;
} }
...@@ -112,6 +112,16 @@ public class WxLiveBillVo implements Serializable { ...@@ -112,6 +112,16 @@ public class WxLiveBillVo implements Serializable {
@ColumnWidth(18) @ColumnWidth(18)
private Date month; private Date month;
/**
* 开始日期
*/
private Date startTime;
/**
* 结束日期
*/
private Date endTime;
/** /**
* 单价 * 单价
*/ */
......
...@@ -3,6 +3,7 @@ package com.propertyManagement.business.domain.vo; ...@@ -3,6 +3,7 @@ package com.propertyManagement.business.domain.vo;
import java.math.BigDecimal; import java.math.BigDecimal;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
...@@ -132,5 +133,16 @@ public class WxPayRecordVo implements Serializable { ...@@ -132,5 +133,16 @@ public class WxPayRecordVo implements Serializable {
*/ */
private Date updateTime; private Date updateTime;
/**
* 缴费开始日期
*/
private Date startTime;
/**
* 缴费结束日期
*/
private Date endTime;
} }
...@@ -58,7 +58,6 @@ public class WxProprietorLedgerVo implements Serializable { ...@@ -58,7 +58,6 @@ public class WxProprietorLedgerVo implements Serializable {
/** /**
* 房间户型 * 房间户型
*/ */
@ExcelProperty(value = "房间户型")
private String houseType; private String houseType;
/** /**
...@@ -79,6 +78,12 @@ public class WxProprietorLedgerVo implements Serializable { ...@@ -79,6 +78,12 @@ public class WxProprietorLedgerVo implements Serializable {
@ExcelProperty(value = "物业费用面积单价(元)") @ExcelProperty(value = "物业费用面积单价(元)")
private BigDecimal sqmPrice; private BigDecimal sqmPrice;
/**
* 物业天费
*/
@ExcelProperty(value = "物业天费")
private BigDecimal dayMoney;
/** /**
* 物业月费 * 物业月费
*/ */
...@@ -106,8 +111,6 @@ public class WxProprietorLedgerVo implements Serializable { ...@@ -106,8 +111,6 @@ public class WxProprietorLedgerVo implements Serializable {
/** /**
* 户籍地 * 户籍地
*/ */
@ExcelProperty(value = "户籍地")
@ColumnWidth(20)
private String registerAddress; private String registerAddress;
/** /**
...@@ -163,5 +166,10 @@ public class WxProprietorLedgerVo implements Serializable { ...@@ -163,5 +166,10 @@ public class WxProprietorLedgerVo implements Serializable {
@ExcelProperty(value = "备注") @ExcelProperty(value = "备注")
private String remark; private String remark;
/**
* 是否预警(0否 1是)
*/
private Integer isWarn;
} }
package com.propertyManagement.business.scheduled;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.propertyManagement.business.domain.WxPayRecord;
import com.propertyManagement.business.domain.WxProprietorLedger;
import com.propertyManagement.business.mapper.WxPayRecordMapper;
import com.propertyManagement.business.mapper.WxProprietorLedgerMapper;
import com.propertyManagement.common.core.domain.BaseEntity;
import com.propertyManagement.common.enums.IsEnableType;
import com.propertyManagement.common.enums.LiveBillType;
import com.propertyManagement.common.enums.PayState;
import com.propertyManagement.common.utils.spring.SpringUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@Component
public class RecordWarnTask {
private final WxPayRecordMapper wxPayRecordMapper;
private final WxProprietorLedgerMapper wxProprietorLedgerMapper;
public RecordWarnTask() {
this.wxProprietorLedgerMapper = SpringUtils.getBean(WxProprietorLedgerMapper.class);
this.wxPayRecordMapper = SpringUtils.getBean(WxPayRecordMapper.class);
}
/**
* cron:自定义规则
* 每天凌晨一点执行
* 功能:检查即将在一个月内到期的支付记录
*/
@Scheduled(cron = "0 59 23 * * ?")
// @Scheduled(cron = "0/30 * * * * ?")
private void checkExpiringPayments() {
Date currentDate = new Date();
List<WxProprietorLedger> proprietorLedgerList = wxProprietorLedgerMapper.selectList();
for (WxProprietorLedger ledger : proprietorLedgerList) {
WxPayRecord payRecord = wxPayRecordMapper.selectOne(new LambdaQueryWrapper<WxPayRecord>()
.eq(WxPayRecord::getProprietorId, ledger.getProprietorId())
.eq(WxPayRecord::getOrderType, LiveBillType.property.getCode())
.eq(WxPayRecord::getPayState, PayState.YES.getCode())
.orderByDesc(WxPayRecord::getCreateTime)
.last("limit 1")
);
if (null != payRecord && null != payRecord.getEndTime()) {
// 3.2 使用Hutool计算日期差
long daysRemaining = DateUtil.betweenDay(
DateUtil.date(payRecord.getEndTime()), // 转换为Hutool DateTime
currentDate,
false
);
// 未过期记录:检查是否在一个月内到期
if (daysRemaining >= 0 && daysRemaining <= 30) {
ledger.setIsWarn(IsEnableType.YES.getCode());
wxProprietorLedgerMapper.updateById(ledger);
}
}
}
}
}
...@@ -78,6 +78,7 @@ public class WxCarportServiceImpl implements IWxCarportService { ...@@ -78,6 +78,7 @@ public class WxCarportServiceImpl implements IWxCarportService {
lqw.eq(StringUtils.isNotBlank(bo.getCarportPhone()), WxCarport::getCarportPhone, bo.getCarportPhone()); lqw.eq(StringUtils.isNotBlank(bo.getCarportPhone()), WxCarport::getCarportPhone, bo.getCarportPhone());
lqw.eq(StringUtils.isNotBlank(bo.getCarportNumber()), WxCarport::getCarportNumber, bo.getCarportNumber()); lqw.eq(StringUtils.isNotBlank(bo.getCarportNumber()), WxCarport::getCarportNumber, bo.getCarportNumber());
lqw.eq(bo.getType() != null, WxCarport::getType, bo.getType()); lqw.eq(bo.getType() != null, WxCarport::getType, bo.getType());
lqw.orderByDesc(WxCarport::getCreateTime);
return lqw; return lqw;
} }
......
...@@ -103,6 +103,7 @@ public class WxCommentServiceImpl implements IWxCommentService { ...@@ -103,6 +103,7 @@ public class WxCommentServiceImpl implements IWxCommentService {
lqw.like(StringUtils.isNotBlank(bo.getDisposeUserName()), WxComment::getDisposeUserName, bo.getDisposeUserName()); lqw.like(StringUtils.isNotBlank(bo.getDisposeUserName()), WxComment::getDisposeUserName, bo.getDisposeUserName());
lqw.eq(bo.getCompleteTime() != null, WxComment::getCompleteTime, bo.getCompleteTime()); lqw.eq(bo.getCompleteTime() != null, WxComment::getCompleteTime, bo.getCompleteTime());
lqw.eq(bo.getCloseTime() != null, WxComment::getCloseTime, bo.getCloseTime()); lqw.eq(bo.getCloseTime() != null, WxComment::getCloseTime, bo.getCloseTime());
lqw.eq(bo.getIsAnon() != null, WxComment::getIsAnon, bo.getIsAnon());
lqw.orderByDesc(WxComment::getCreateTime); lqw.orderByDesc(WxComment::getCreateTime);
return lqw; return lqw;
} }
......
...@@ -14,6 +14,7 @@ import com.propertyManagement.business.mapper.WxProprietorLedgerMapper; ...@@ -14,6 +14,7 @@ import com.propertyManagement.business.mapper.WxProprietorLedgerMapper;
import com.propertyManagement.business.mapper.WxUserCommunityLedgerMapper; import com.propertyManagement.business.mapper.WxUserCommunityLedgerMapper;
import com.propertyManagement.business.service.IWxFamilyMemberService; import com.propertyManagement.business.service.IWxFamilyMemberService;
import com.propertyManagement.business.support.util.AuthUtil; import com.propertyManagement.business.support.util.AuthUtil;
import com.propertyManagement.common.core.domain.BaseEntity;
import com.propertyManagement.common.core.domain.PageQuery; import com.propertyManagement.common.core.domain.PageQuery;
import com.propertyManagement.common.core.page.TableDataInfo; import com.propertyManagement.common.core.page.TableDataInfo;
import com.propertyManagement.common.utils.StringUtils; import com.propertyManagement.common.utils.StringUtils;
...@@ -78,6 +79,8 @@ public class WxFamilyMemberServiceImpl implements IWxFamilyMemberService { ...@@ -78,6 +79,8 @@ public class WxFamilyMemberServiceImpl implements IWxFamilyMemberService {
lqw.eq(StringUtils.isNotBlank(bo.getPhone()), WxFamilyMember::getPhone, bo.getPhone()); lqw.eq(StringUtils.isNotBlank(bo.getPhone()), WxFamilyMember::getPhone, bo.getPhone());
lqw.eq(bo.getRelation() != null, WxFamilyMember::getRelation, bo.getRelation()); lqw.eq(bo.getRelation() != null, WxFamilyMember::getRelation, bo.getRelation());
lqw.eq(bo.getState() != null, WxFamilyMember::getState, bo.getState()); lqw.eq(bo.getState() != null, WxFamilyMember::getState, bo.getState());
lqw.eq(bo.getType() != null, WxFamilyMember::getType, bo.getType());
lqw.orderByDesc(BaseEntity::getCreateTime);
return lqw; return lqw;
} }
......
...@@ -100,6 +100,8 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { ...@@ -100,6 +100,8 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService {
Long orderId = null; Long orderId = null;
BigDecimal payAmount = BigDecimal.ZERO; BigDecimal payAmount = BigDecimal.ZERO;
Integer orderType = null; Integer orderType = null;
Date startTime = null;
Date endTime = null;
switch (payBiz) { switch (payBiz) {
case PRESTORE: case PRESTORE:
WxLiveBill wxLiveBill = liveBillMapper.selectById(reqModel.getOrderId()); WxLiveBill wxLiveBill = liveBillMapper.selectById(reqModel.getOrderId());
...@@ -115,6 +117,8 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { ...@@ -115,6 +117,8 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService {
orderId = wxLiveBill.getBillId(); orderId = wxLiveBill.getBillId();
payAmount = wxLiveBill.getMoney(); payAmount = wxLiveBill.getMoney();
orderType = wxLiveBill.getType(); orderType = wxLiveBill.getType();
startTime = wxLiveBill.getStartTime();
endTime = wxLiveBill.getEndTime();
break; break;
case MAINTAIN: case MAINTAIN:
WxRepairs wxRepairs = repairsMapper.selectById(reqModel.getOrderId()); WxRepairs wxRepairs = repairsMapper.selectById(reqModel.getOrderId());
...@@ -134,7 +138,7 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { ...@@ -134,7 +138,7 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService {
default: default:
throw new RuntimeException("支付失败,类型错误"); throw new RuntimeException("支付失败,类型错误");
} }
WxPayRecord record = createPayRecord(orderId, payAmount, orderType); WxPayRecord record = createPayRecord(orderId, payAmount, orderType, startTime, endTime);
IPayment payment = CmsUnipayProvider.getPayment(orderId, "WX", "1717814777", "LILONG", reqModel.getPayBizCode()); IPayment payment = CmsUnipayProvider.getPayment(orderId, "WX", "1717814777", "LILONG", reqModel.getPayBizCode());
PayModel payModel = getPayModel(record); PayModel payModel = getPayModel(record);
return payment.pay(payModel); return payment.pay(payModel);
...@@ -203,7 +207,7 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { ...@@ -203,7 +207,7 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService {
} }
} }
private WxPayRecord createPayRecord(Long orderId, BigDecimal payAmount, Integer orderType) { private WxPayRecord createPayRecord(Long orderId, BigDecimal payAmount, Integer orderType, Date startTime, Date endTime) {
LoginWxUser wxUser = AuthUtil.getWxUser(); LoginWxUser wxUser = AuthUtil.getWxUser();
WxPayRecord record = new WxPayRecord(); WxPayRecord record = new WxPayRecord();
record.setOrderId(orderId); record.setOrderId(orderId);
...@@ -217,6 +221,10 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { ...@@ -217,6 +221,10 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService {
record.setCommunityId(wxUser.getCommunityId()); record.setCommunityId(wxUser.getCommunityId());
record.setCommunityName(wxUser.getCommunityName()); record.setCommunityName(wxUser.getCommunityName());
record.setOrderType(orderType); record.setOrderType(orderType);
if (null != startTime && null != endTime) {
record.setStartTime(startTime);
record.setEndTime(endTime);
}
/** /**
* 生成外部订单号 * 生成外部订单号
*/ */
......
...@@ -72,6 +72,7 @@ public class WxProprietorLedgerServiceImpl implements IWxProprietorLedgerService ...@@ -72,6 +72,7 @@ public class WxProprietorLedgerServiceImpl implements IWxProprietorLedgerService
private LambdaQueryWrapper<WxProprietorLedger> buildQueryWrapper(WxProprietorLedgerBo bo) { private LambdaQueryWrapper<WxProprietorLedger> buildQueryWrapper(WxProprietorLedgerBo bo) {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WxProprietorLedger> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<WxProprietorLedger> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getIsWarn() != null, WxProprietorLedger::getIsWarn, bo.getIsWarn());
lqw.eq(bo.getUserId() != null, WxProprietorLedger::getUserId, bo.getUserId()); lqw.eq(bo.getUserId() != null, WxProprietorLedger::getUserId, bo.getUserId());
lqw.eq(bo.getCommunityId() != null, WxProprietorLedger::getCommunityId, bo.getCommunityId()); lqw.eq(bo.getCommunityId() != null, WxProprietorLedger::getCommunityId, bo.getCommunityId());
lqw.like(StringUtils.isNotBlank(bo.getCommunityName()), WxProprietorLedger::getCommunityName, bo.getCommunityName()); lqw.like(StringUtils.isNotBlank(bo.getCommunityName()), WxProprietorLedger::getCommunityName, bo.getCommunityName());
......
...@@ -6,7 +6,7 @@ spring.boot.admin.client: ...@@ -6,7 +6,7 @@ spring.boot.admin.client:
url: http://localhost:9090/admin url: http://localhost:9090/admin
instance: instance:
service-host-type: IP service-host-type: IP
username: propertymanagement username: admin
password: 123456 password: 123456
--- # 数据库配置 --- # 数据库配置
......
...@@ -9,6 +9,15 @@ export function listAccount(query) { ...@@ -9,6 +9,15 @@ export function listAccount(query) {
}) })
} }
// 查询员工账号列表
export function listAccountAll(query) {
return request({
url: '/business/account/listAll',
method: 'get',
params: query
})
}
// 查询员工账号详细 // 查询员工账号详细
export function getAccount(accountId) { export function getAccount(accountId) {
return request({ return request({
......
...@@ -104,6 +104,13 @@ ...@@ -104,6 +104,13 @@
margin-left: 1px; margin-left: 1px;
} }
} }
.el-table__body-wrapper::-webkit-scrollbar {
height: 20px; /* 加粗滚动条(默认是 6px) */
}
.el-table__body-wrapper::-webkit-scrollbar-thumb {
background: #c1c1c1; /* 滚动条颜色 */
border-radius: 5px; /* 圆角 */
}
} }
/** 表单布局 **/ /** 表单布局 **/
......
...@@ -395,7 +395,7 @@ export default { ...@@ -395,7 +395,7 @@ export default {
// 设置上传的请求头部 // 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() }, headers: { Authorization: "Bearer " + getToken() },
// 上传的地址 // 上传的地址
url: process.env.VUE_APP_BASE_API + "business/carport/importData" url: process.env.VUE_APP_BASE_API + "/business/carport/importData"
}, },
// 表单参数 // 表单参数
form: {}, form: {},
......
...@@ -26,6 +26,16 @@ ...@@ -26,6 +26,16 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="是否匿名" prop="isAnon">
<el-select v-model="queryParams.isAnon" placeholder="是否匿名" clearable>
<el-option
v-for="dict in dict.type.sys_is_enable"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="负责人" prop="disposeUserName">--> <!-- <el-form-item label="负责人" prop="disposeUserName">-->
<!-- <el-input--> <!-- <el-input-->
<!-- v-model="queryParams.disposeUserName"--> <!-- v-model="queryParams.disposeUserName"-->
...@@ -108,6 +118,11 @@ ...@@ -108,6 +118,11 @@
<dict-tag :options="dict.type.wx_comment_type" :value="scope.row.type"/> <dict-tag :options="dict.type.wx_comment_type" :value="scope.row.type"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="是否匿名" align="center" prop="isAnon" width="80">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_is_enable" :value="scope.row.isAnon"/>
</template>
</el-table-column>
<!-- <el-table-column label="负责人" align="center" prop="disposeUserName" />--> <!-- <el-table-column label="负责人" align="center" prop="disposeUserName" />-->
<el-table-column label="创建时间" align="center" prop="createTime" width="150"> <el-table-column label="创建时间" align="center" prop="createTime" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -224,7 +239,7 @@ import {listCommunityAll} from "@/api/business/community"; ...@@ -224,7 +239,7 @@ import {listCommunityAll} from "@/api/business/community";
export default { export default {
name: "Comment", name: "Comment",
dicts: ['wx_comment_state', 'wx_comment_type'], dicts: ['wx_comment_state', 'wx_comment_type', 'sys_is_enable'],
data() { data() {
return { return {
username: undefined, username: undefined,
...@@ -259,6 +274,7 @@ export default { ...@@ -259,6 +274,7 @@ export default {
communityName: undefined, communityName: undefined,
state: undefined, state: undefined,
type: undefined, type: undefined,
isAnon: undefined,
disposeUserId: undefined, disposeUserId: undefined,
disposeUserName: undefined, disposeUserName: undefined,
completeTime: undefined, completeTime: undefined,
...@@ -343,6 +359,7 @@ export default { ...@@ -343,6 +359,7 @@ export default {
communityName: undefined, communityName: undefined,
state: undefined, state: undefined,
type: undefined, type: undefined,
isAnon: undefined,
disposeUserId: undefined, disposeUserId: undefined,
disposeUserName: undefined, disposeUserName: undefined,
completeTime: undefined, completeTime: undefined,
......
...@@ -115,6 +115,11 @@ ...@@ -115,6 +115,11 @@
</el-table-column> </el-table-column>
<el-table-column label="姓名" align="center" prop="name" /> <el-table-column label="姓名" align="center" prop="name" />
<el-table-column label="电话" align="center" prop="phone" /> <el-table-column label="电话" align="center" prop="phone" />
<el-table-column label="类型" align="center" prop="type">
<template slot-scope="scope">
<dict-tag :options="dict.type.wx_family_member_type" :value="scope.row.type"/>
</template>
</el-table-column>
<!-- <el-table-column label="关系" align="center" prop="relation">--> <!-- <el-table-column label="关系" align="center" prop="relation">-->
<!-- <template slot-scope="scope">--> <!-- <template slot-scope="scope">-->
<!-- <dict-tag :options="dict.type.wx_family_member_relation" :value="scope.row.relation"/>--> <!-- <dict-tag :options="dict.type.wx_family_member_relation" :value="scope.row.relation"/>-->
...@@ -154,22 +159,51 @@ ...@@ -154,22 +159,51 @@
/> />
<!-- 添加或修改家庭成员对话框 --> <!-- 添加或修改家庭成员对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="业主" prop="proprietorId"> <el-row>
<el-select v-model="form.proprietorId" filterable style="width: 100%" placeholder="请选择业主"> <el-col :span="24">
<el-option v-for="item in proprietorList" :key="item.proprietorId" :value="item.proprietorId" :label="`${item.communityName}-${item.name}`"/> <el-form-item label="业主" prop="proprietorId">
</el-select> <el-select v-model="form.proprietorId" filterable style="width: 100%" placeholder="请选择业主">
</el-form-item> <el-option v-for="item in proprietorList" :key="item.proprietorId" :value="item.proprietorId" :label="`${item.communityName}-${item.name}`"/>
<el-form-item label="头像" prop="avatar"> </el-select>
<image-upload v-model="form.avatar" :limit="1" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="姓名" prop="name"> </el-row>
<el-input v-model="form.name" placeholder="请输入姓名" /> <el-row>
</el-form-item> <el-col :span="12">
<el-form-item label="电话" prop="phone"> <el-form-item label="姓名" prop="name">
<el-input v-model="form.phone" placeholder="请输入电话" /> <el-input v-model="form.name" placeholder="请输入姓名" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="电话" prop="phone">
<el-input v-model="form.phone" placeholder="请输入电话" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="头像" prop="avatar">
<image-upload v-model="form.avatar" :limit="1" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="类型" prop="type">
<el-radio-group v-model="form.type" style="width: 100%">
<el-radio
v-for="dict in dict.type.wx_family_member_type"
:key="dict.value"
:label="parseInt(dict.value)"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<!-- <el-form-item label="关系" prop="relation">--> <!-- <el-form-item label="关系" prop="relation">-->
<!-- <el-select v-model="form.relation" placeholder="请选择关系">--> <!-- <el-select v-model="form.relation" placeholder="请选择关系">-->
<!-- <el-option--> <!-- <el-option-->
...@@ -196,7 +230,7 @@ import {listProprietorLedgerAll} from "@/api/business/proprietorLedger"; ...@@ -196,7 +230,7 @@ import {listProprietorLedgerAll} from "@/api/business/proprietorLedger";
export default { export default {
name: "FamilyMember", name: "FamilyMember",
dicts: ['wx_family_member_state', 'wx_family_member_relation'], dicts: ['wx_family_member_state', 'wx_family_member_relation', 'wx_family_member_type'],
data() { data() {
return { return {
username: undefined, username: undefined,
...@@ -236,6 +270,7 @@ export default { ...@@ -236,6 +270,7 @@ export default {
phone: undefined, phone: undefined,
relation: undefined, relation: undefined,
state: undefined, state: undefined,
type: undefined,
}, },
// 表单参数 // 表单参数
form: {}, form: {},
...@@ -250,6 +285,9 @@ export default { ...@@ -250,6 +285,9 @@ export default {
phone: [ phone: [
{ required: true, message: "电话不能为空", trigger: "blur" } { required: true, message: "电话不能为空", trigger: "blur" }
], ],
type: [
{ required: true, message: "类型不能为空", trigger: "blur" }
],
} }
}; };
}, },
...@@ -305,6 +343,7 @@ export default { ...@@ -305,6 +343,7 @@ export default {
phone: undefined, phone: undefined,
relation: undefined, relation: undefined,
state: undefined, state: undefined,
type: 1,
createBy: undefined, createBy: undefined,
createTime: undefined, createTime: undefined,
updateBy: undefined, updateBy: undefined,
......
...@@ -65,16 +65,16 @@ ...@@ -65,16 +65,16 @@
</el-form> </el-form>
<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="primary" <!-- type="primary"-->
plain <!-- plain-->
icon="el-icon-plus" <!-- icon="el-icon-plus"-->
size="mini" <!-- size="mini"-->
@click="handleAdd" <!-- @click="handleAdd"-->
v-hasPermi="['business:liveBill:add']" <!-- v-hasPermi="['business:liveBill:add']"-->
>新增</el-button> <!-- >新增</el-button>-->
</el-col> <!-- </el-col>-->
<!-- <el-col :span="1.5">--> <!-- <el-col :span="1.5">-->
<!-- <el-button--> <!-- <el-button-->
<!-- type="success"--> <!-- type="success"-->
...@@ -86,17 +86,17 @@ ...@@ -86,17 +86,17 @@
<!-- v-hasPermi="['business:liveBill:edit']"--> <!-- v-hasPermi="['business:liveBill:edit']"-->
<!-- >修改</el-button>--> <!-- >修改</el-button>-->
<!-- </el-col>--> <!-- </el-col>-->
<el-col :span="1.5"> <!-- <el-col :span="1.5">-->
<el-button <!-- <el-button-->
type="danger" <!-- type="danger"-->
plain <!-- plain-->
icon="el-icon-edit" <!-- icon="el-icon-edit"-->
size="mini" <!-- size="mini"-->
:disabled="multiple" <!-- :disabled="multiple"-->
@click="handleConfirm" <!-- @click="handleConfirm"-->
v-hasPermi="['business:liveBill:confirm']" <!-- v-hasPermi="['business:liveBill:confirm']"-->
>确认缴纳</el-button> <!-- >确认缴纳</el-button>-->
</el-col> <!-- </el-col>-->
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="warning" type="warning"
...@@ -114,10 +114,10 @@ ...@@ -114,10 +114,10 @@
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="账单主键" align="center" prop="billId" v-if="false"/>--> <!-- <el-table-column label="账单主键" align="center" prop="billId" v-if="false"/>-->
<!-- <el-table-column label="用户名称" align="center" prop="userName" />--> <!-- <el-table-column label="用户名称" align="center" prop="userName" />-->
<el-table-column label="小区" align="center" prop="communityName" /> <el-table-column label="小区" align="center" prop="communityName" fixed="left"/>
<el-table-column label="姓名" align="center" prop="proprietorName" width="70"/> <el-table-column label="姓名" align="center" prop="proprietorName" fixed="left" width="70"/>
<el-table-column label="户号" align="center" prop="room" width="150" fixed="left"/>
<el-table-column label="电话" align="center" prop="proprietorPhone" width="110"/> <el-table-column label="电话" align="center" prop="proprietorPhone" width="110"/>
<el-table-column label="户号" align="center" prop="room" width="150"/>
<el-table-column label="面积㎡" align="center" prop="sqm" /> <el-table-column label="面积㎡" align="center" prop="sqm" />
<el-table-column label="车位号" align="center" prop="carportNumber" /> <el-table-column label="车位号" align="center" prop="carportNumber" />
<el-table-column label="登记车牌" align="center" prop="plateNumber" width="95"/> <el-table-column label="登记车牌" align="center" prop="plateNumber" width="95"/>
...@@ -128,43 +128,53 @@ ...@@ -128,43 +128,53 @@
<span>{{ parseTime(scope.row.month, '{y}-{m}') }}</span> <span>{{ parseTime(scope.row.month, '{y}-{m}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="单价" align="center" prop="price" /> <el-table-column label="缴费开始日期" align="center" prop="startTime" width="110">
<el-table-column label="金额" align="center" prop="money" />
<el-table-column label="类型" align="center" prop="type">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.wx_live_bill_type" :value="scope.row.type"/> <span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="状态" align="center" prop="state"> <el-table-column label="缴费结束日期" align="center" prop="endTime" width="110">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.wx_live_bill_state" :value="scope.row.state"/> <span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="单价" align="center" prop="price" />
<el-table-column label="金额" align="center" prop="money" />
<el-table-column label="创建时间" align="center" prop="createTime" width="140"> <el-table-column label="创建时间" align="center" prop="createTime" width="140">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span> <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width"> <el-table-column label="类型" align="center" prop="type" fixed="right" width="100px">
<template slot-scope="scope">
<dict-tag :options="dict.type.wx_live_bill_type" :value="scope.row.type"/>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="state" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <dict-tag :options="dict.type.wx_live_bill_state" :value="scope.row.state"/>
size="mini"
type="text"
icon="el-icon-edit"
v-if="scope.row.state === 1"
@click="handleUpdate(scope.row)"
v-hasPermi="['business:liveBill:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
v-if="scope.row.state === 1"
@click="handleDelete(scope.row)"
v-hasPermi="['business:liveBill:remove']"
>删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- v-if="scope.row.state === 1"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['business:liveBill:edit']"-->
<!-- >修改</el-button>-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- v-if="scope.row.state === 1"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['business:liveBill:remove']"-->
<!-- >删除</el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table> </el-table>
<pagination <pagination
...@@ -189,8 +199,17 @@ ...@@ -189,8 +199,17 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="缴费月份" prop="month"> <el-form-item label="缴费日期" prop="date">
<el-date-picker v-model="form.month" type="month" value-format="yyyy-MM" style="width: 100%" placeholder="选择月" /> <!-- <el-date-picker v-model="form.month" type="month" value-format="yyyy-MM" style="width: 100%" placeholder="选择月" />-->
<el-date-picker
style="width: 100%"
v-model="date"
type="daterange"
range-separator=""
start-placeholder="缴费开始日期"
end-placeholder="缴费结束日期"
value-format="yyyy-MM-dd"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
...@@ -318,6 +337,7 @@ export default { ...@@ -318,6 +337,7 @@ export default {
communityList: [], communityList: [],
proprietorLedgerList: [], proprietorLedgerList: [],
carportList: [], carportList: [],
date: [],
// 弹出层标题 // 弹出层标题
title: "", title: "",
// 是否显示弹出层 // 是否显示弹出层
...@@ -442,6 +462,8 @@ export default { ...@@ -442,6 +462,8 @@ export default {
sqm: undefined, sqm: undefined,
plateNumber: undefined, plateNumber: undefined,
month: undefined, month: undefined,
startTime: undefined,
endTime: undefined,
price: undefined, price: undefined,
money: undefined, money: undefined,
type: undefined, type: undefined,
...@@ -452,6 +474,7 @@ export default { ...@@ -452,6 +474,7 @@ export default {
updateBy: undefined, updateBy: undefined,
updateTime: undefined updateTime: undefined
}; };
this.date = []
this.resetForm("form"); this.resetForm("form");
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
...@@ -493,6 +516,9 @@ export default { ...@@ -493,6 +516,9 @@ export default {
this.typeChange(response.data.type) this.typeChange(response.data.type)
this.loading = false; this.loading = false;
this.form = response.data; this.form = response.data;
if (this.form.startTime != null && this.form.endTime != null) {
this.date = [this.form.startTime, this.form.endTime]
}
this.open = true; this.open = true;
this.title = "修改生活缴费账单"; this.title = "修改生活缴费账单";
}); });
...@@ -501,6 +527,13 @@ export default { ...@@ -501,6 +527,13 @@ export default {
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
if (this.date.length > 1) {
this.form.startTime = this.date[0]
this.form.endTime = this.date[1]
}else {
this.$modal.msgError('缴费日期不能为空')
return
}
this.buttonLoading = true; this.buttonLoading = true;
if (this.form.billId != null) { if (this.form.billId != null) {
updateLiveBill(this.form).then(response => { updateLiveBill(this.form).then(response => {
......
...@@ -22,10 +22,10 @@ ...@@ -22,10 +22,10 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="房间号" prop="room"> <el-form-item label="号" prop="room">
<el-input <el-input
v-model="queryParams.room" v-model="queryParams.room"
placeholder="请输入房间号" placeholder="请输入号"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
...@@ -46,13 +46,23 @@ ...@@ -46,13 +46,23 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="户籍地" prop="registerAddress"> <!-- <el-form-item label="户籍地" prop="registerAddress">-->
<el-input <!-- <el-input-->
v-model="queryParams.registerAddress" <!-- v-model="queryParams.registerAddress"-->
placeholder="请输入户籍地" <!-- placeholder="请输入户籍地"-->
clearable <!-- clearable-->
@keyup.enter.native="handleQuery" <!-- @keyup.enter.native="handleQuery"-->
/> <!-- />-->
<!-- </el-form-item>-->
<el-form-item label="是否预警" prop="isWarn">
<el-select v-model="queryParams.isWarn" placeholder="请选择是否预警" clearable>
<el-option
v-for="dict in dict.type.sys_is_enable"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</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>
...@@ -116,15 +126,16 @@ ...@@ -116,15 +126,16 @@
<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="proprietorLedgerList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="proprietorLedgerList" :row-style="setRowStyle" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="小区名称" align="center" prop="communityName" /> <el-table-column label="小区名称" align="center" prop="communityName" />
<el-table-column label="业主姓名" align="center" prop="name" /> <el-table-column label="业主姓名" align="center" prop="name" />
<el-table-column label="联系电话" align="center" prop="phone" /> <el-table-column label="联系电话" align="center" prop="phone" />
<el-table-column label="房间户型" align="center" prop="houseType" /> <el-table-column label="房间户型" align="center" prop="houseType" />
<el-table-column label="房间号" align="center" prop="room" /> <el-table-column label="号" align="center" prop="room" />
<el-table-column label="房间面积" align="center" prop="sqm" /> <el-table-column label="房间面积" align="center" prop="sqm" />
<el-table-column label="物业费面积单价" align="center" prop="sqmPrice" /> <el-table-column label="物业费面积单价" align="center" prop="sqmPrice" />
<el-table-column label="物业天费" align="center" prop="dayMoney" />
<el-table-column label="物业月费" align="center" prop="monthMoney" /> <el-table-column label="物业月费" align="center" prop="monthMoney" />
<el-table-column label="物业年费" align="center" prop="yearMoney" /> <el-table-column label="物业年费" align="center" prop="yearMoney" />
<el-table-column label="出生日期" align="center" prop="birthDate" width="180"> <el-table-column label="出生日期" align="center" prop="birthDate" width="180">
...@@ -140,6 +151,11 @@ ...@@ -140,6 +151,11 @@
<el-table-column label="物业预存余额" align="center" prop="propertyPrepaidMoney" /> <el-table-column label="物业预存余额" align="center" prop="propertyPrepaidMoney" />
<el-table-column label="车位管理预存余额" align="center" prop="carportManagePrestoreMoney" /> <el-table-column label="车位管理预存余额" align="center" prop="carportManagePrestoreMoney" />
<el-table-column label="备注" align="center" prop="remark" /> <el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="是否预警" align="center" prop="isWarn">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_is_enable" :value="scope.row.isWarn"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
...@@ -192,8 +208,8 @@ ...@@ -192,8 +208,8 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="房间" prop="room"> <el-form-item label="" prop="room">
<el-input v-model="form.room" placeholder="请输入房间" /> <el-input v-model="form.room" placeholder="请输入" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -215,6 +231,11 @@ ...@@ -215,6 +231,11 @@
<el-input v-model="form.houseType" placeholder="请输入房间户型" /> <el-input v-model="form.houseType" placeholder="请输入房间户型" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item label="物业天费" prop="dayMoney">
<el-input-number v-model="form.dayMoney" :min="0" precision="2" style="width: 100%;" placeholder="请输入物业天费" />
</el-form-item>
</el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
...@@ -360,6 +381,7 @@ import {getToken} from "@/utils/auth"; ...@@ -360,6 +381,7 @@ import {getToken} from "@/utils/auth";
export default { export default {
name: "ProprietorLedger", name: "ProprietorLedger",
dicts: ['sys_is_enable'],
data() { data() {
return { return {
username: undefined, username: undefined,
...@@ -388,6 +410,7 @@ export default { ...@@ -388,6 +410,7 @@ export default {
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
isWarn: undefined,
userId: undefined, userId: undefined,
communityId: undefined, communityId: undefined,
communityName: undefined, communityName: undefined,
...@@ -419,7 +442,7 @@ export default { ...@@ -419,7 +442,7 @@ export default {
// 设置上传的请求头部 // 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() }, headers: { Authorization: "Bearer " + getToken() },
// 上传的地址 // 上传的地址
url: process.env.VUE_APP_BASE_API + "business/proprietorLedger/importData" url: process.env.VUE_APP_BASE_API + "/business/proprietorLedger/importData"
}, },
// 表单参数 // 表单参数
form: {}, form: {},
...@@ -435,7 +458,7 @@ export default { ...@@ -435,7 +458,7 @@ export default {
{ required: true, message: "联系电话不能为空", trigger: "blur" } { required: true, message: "联系电话不能为空", trigger: "blur" }
], ],
room: [ room: [
{ required: true, message: "房间号不能为空", trigger: "blur" } { required: true, message: "号不能为空", trigger: "blur" }
], ],
sqm: [ sqm: [
{ required: true, message: "房间面积不能为空", trigger: "blur" } { required: true, message: "房间面积不能为空", trigger: "blur" }
...@@ -443,12 +466,15 @@ export default { ...@@ -443,12 +466,15 @@ export default {
sqmPrice: [ sqmPrice: [
{ required: true, message: "面积单价不能为空", trigger: "blur" } { required: true, message: "面积单价不能为空", trigger: "blur" }
], ],
monthMoney: [ dayMoney: [
{ required: true, message: "物业月费不能为空", trigger: "blur" } { required: true, message: "物业天费不能为空", trigger: "blur" }
],
yearMoney: [
{ required: true, message: "物业年费不能为空", trigger: "blur" }
], ],
// monthMoney: [
// { required: true, message: "物业月费不能为空", trigger: "blur" }
// ],
// yearMoney: [
// { required: true, message: "物业年费不能为空", trigger: "blur" }
// ],
// birthDate: [ // birthDate: [
// { required: true, message: "出生日期不能为空", trigger: "blur" } // { required: true, message: "出生日期不能为空", trigger: "blur" }
// ], // ],
...@@ -473,6 +499,16 @@ export default { ...@@ -473,6 +499,16 @@ export default {
this.getCommunityListAll(); this.getCommunityListAll();
}, },
methods: { methods: {
// 设置行样式方法
setRowStyle({row}) {
if (row.isWarn === '1' || row.isWarn === 1) { // 判断是否为预警状态
return {
backgroundColor: 'rgba(255, 0, 0, 0.1)', // 浅红色背景
// 也可以设置其他样式
};
}
return {}; // 默认样式
},
/** 查询小区业主台账信息列表 */ /** 查询小区业主台账信息列表 */
getList() { getList() {
this.loading = true; this.loading = true;
...@@ -506,6 +542,7 @@ export default { ...@@ -506,6 +542,7 @@ export default {
room: undefined, room: undefined,
sqm: 0, sqm: 0,
sqmPrice: 0, sqmPrice: 0,
dayMoney: 0,
monthMoney: 0, monthMoney: 0,
yearMoney: 0, yearMoney: 0,
birthDate: undefined, birthDate: undefined,
......
...@@ -114,10 +114,10 @@ ...@@ -114,10 +114,10 @@
<!-- <el-table-column type="selection" width="55" align="center" />--> <!-- <el-table-column type="selection" width="55" align="center" />-->
<!-- <el-table-column label="报修主键" align="center" prop="repairsId" v-if="false"/>--> <!-- <el-table-column label="报修主键" align="center" prop="repairsId" v-if="false"/>-->
<!-- <el-table-column label="用户名称" align="center" prop="userName" />--> <!-- <el-table-column label="用户名称" align="center" prop="userName" />-->
<el-table-column label="小区名称" align="center" prop="communityName" /> <el-table-column label="小区名称" align="center" prop="communityName" fixed="left"/>
<el-table-column label="业主名称" align="center" prop="proprietorName" /> <el-table-column label="业主名称" align="center" prop="proprietorName" fixed="left" />
<el-table-column label="业主户号" align="center" prop="room" fixed="left" />
<el-table-column label="业主电话" align="center" prop="proprietorPhone" /> <el-table-column label="业主电话" align="center" prop="proprietorPhone" />
<el-table-column label="业主房间" align="center" prop="room" />
<el-table-column label="报修时间" align="center" prop="repairsTime" width="150"> <el-table-column label="报修时间" align="center" prop="repairsTime" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.repairsTime, '{y}-{m}-{d} {h}:{i}') }}</span> <span>{{ parseTime(scope.row.repairsTime, '{y}-{m}-{d} {h}:{i}') }}</span>
...@@ -151,24 +151,17 @@ ...@@ -151,24 +151,17 @@
<span>{{ parseTime(scope.row.closeTime, '{y}-{m}-{d} {h}:{i}') }}</span> <span>{{ parseTime(scope.row.closeTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">--> <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
<!-- <template slot-scope="scope">--> <template slot-scope="scope">
<!-- <el-button--> <el-button
<!-- size="mini"--> size="mini"
<!-- type="text"--> type="text"
<!-- icon="el-icon-edit"--> icon="el-icon-edit"
<!-- @click="handleUpdate(scope.row)"--> @click="handleUpdate(scope.row)"
<!-- v-hasPermi="['business:repairs:edit']"--> v-hasPermi="['business:repairs:edit']"
<!-- >修改</el-button>--> >工单转交</el-button>
<!-- <el-button--> </template>
<!-- size="mini"--> </el-table-column>
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['business:repairs:remove']"-->
<!-- >删除</el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table> </el-table>
<pagination <pagination
...@@ -182,83 +175,11 @@ ...@@ -182,83 +175,11 @@
<!-- 添加或修改报修对话框 --> <!-- 添加或修改报修对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="用户主键" prop="userId"> <el-form-item label="维修人员" prop="accountId">
<el-input v-model="form.userId" placeholder="请输入用户主键" /> <el-select v-model="form.accountId" filterable placeholder="请选择维修人员" clearable>
</el-form-item> <el-option v-for="item in accountList" :key="item.accountId" :value="item.accountId" :label="item.name" />
<el-form-item label="用户名称" prop="userName">
<el-input v-model="form.userName" placeholder="请输入用户名称" />
</el-form-item>
<el-form-item label="小区主键" prop="communityId">
<el-input v-model="form.communityId" placeholder="请输入小区主键" />
</el-form-item>
<el-form-item label="小区名称" prop="communityName">
<el-input v-model="form.communityName" placeholder="请输入小区名称" />
</el-form-item>
<el-form-item label="业主名称" prop="proprietorName">
<el-input v-model="form.proprietorName" placeholder="请输入业主名称" />
</el-form-item>
<el-form-item label="业主电话" prop="proprietorPhone">
<el-input v-model="form.proprietorPhone" placeholder="请输入业主电话" />
</el-form-item>
<el-form-item label="业主房间" prop="room">
<el-input v-model="form.room" placeholder="请输入业主房间" />
</el-form-item>
<el-form-item label="报修描述" prop="repairsDescription">
<el-input v-model="form.repairsDescription" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="报修图片" prop="repairsImg">
<el-input v-model="form.repairsImg" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="报修时间" prop="repairsTime">
<el-date-picker clearable
v-model="form.repairsTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择报修时间">
</el-date-picker>
</el-form-item>
<el-form-item label="完成时间" prop="completeTime">
<el-date-picker clearable
v-model="form.completeTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择完成时间">
</el-date-picker>
</el-form-item>
<el-form-item label="关闭时间" prop="closeTime">
<el-date-picker clearable
v-model="form.closeTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择关闭时间">
</el-date-picker>
</el-form-item>
<el-form-item label="报修状态" prop="state">
<el-select v-model="form.state" placeholder="请选择报修状态">
<el-option
v-for="dict in dict.type.wx_repairs_state"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="报修类型" prop="type">
<el-select v-model="form.type" placeholder="请选择报修类型">
<el-option
v-for="dict in dict.type.wx_repairs_type"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="维修人员ID" prop="maintainUserId">
<el-input v-model="form.maintainUserId" placeholder="请输入维修人员ID" />
</el-form-item>
<el-form-item label="维修人员" prop="maintainUserName">
<el-input v-model="form.maintainUserName" placeholder="请输入维修人员" />
</el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button> <el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
...@@ -271,6 +192,7 @@ ...@@ -271,6 +192,7 @@
<script> <script>
import { listRepairs, getRepairs, delRepairs, addRepairs, updateRepairs } from "@/api/business/repairs"; import { listRepairs, getRepairs, delRepairs, addRepairs, updateRepairs } from "@/api/business/repairs";
import {listCommunityAll} from "@/api/business/community"; import {listCommunityAll} from "@/api/business/community";
import {listAccount, listAccountAll} from "@/api/business/account";
export default { export default {
name: "Repairs", name: "Repairs",
...@@ -295,6 +217,7 @@ export default { ...@@ -295,6 +217,7 @@ export default {
// 报修表格数据 // 报修表格数据
repairsList: [], repairsList: [],
communityList: [], communityList: [],
accountList: [],
// 弹出层标题 // 弹出层标题
title: "", title: "",
// 是否显示弹出层 // 是否显示弹出层
...@@ -463,12 +386,19 @@ export default { ...@@ -463,12 +386,19 @@ export default {
handleUpdate(row) { handleUpdate(row) {
this.loading = true; this.loading = true;
this.reset(); this.reset();
this.getAccountList(row.communityId)
const repairsId = row.repairsId || this.ids const repairsId = row.repairsId || this.ids
getRepairs(repairsId).then(response => { getRepairs(repairsId).then(response => {
this.loading = false; this.loading = false;
this.form = response.data; this.form = response.data;
this.open = true; this.open = true;
this.title = "修改报修"; this.title = "转交维修人";
});
},
/** 查询员工账号列表 */
getAccountList(communityId) {
listAccountAll({communityId, type: 3}).then(response => {
this.accountList = response.data;
}); });
}, },
/** 提交按钮 */ /** 提交按钮 */
...@@ -478,7 +408,7 @@ export default { ...@@ -478,7 +408,7 @@ export default {
this.buttonLoading = true; this.buttonLoading = true;
if (this.form.repairsId != null) { if (this.form.repairsId != null) {
updateRepairs(this.form).then(response => { updateRepairs(this.form).then(response => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("操作成功");
this.open = false; this.open = false;
this.getList(); this.getList();
}).finally(() => { }).finally(() => {
......
...@@ -119,26 +119,26 @@ ...@@ -119,26 +119,26 @@
v-hasPermi="['system:user:remove']" v-hasPermi="['system:user:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <!-- <el-col :span="1.5">-->
<el-button <!-- <el-button-->
type="info" <!-- type="info"-->
plain <!-- plain-->
icon="el-icon-upload2" <!-- icon="el-icon-upload2"-->
size="mini" <!-- size="mini"-->
@click="handleImport" <!-- @click="handleImport"-->
v-hasPermi="['system:user:import']" <!-- v-hasPermi="['system:user:import']"-->
>导入</el-button> <!-- >导入</el-button>-->
</el-col> <!-- </el-col>-->
<el-col :span="1.5"> <!-- <el-col :span="1.5">-->
<el-button <!-- <el-button-->
type="warning" <!-- type="warning"-->
plain <!-- plain-->
icon="el-icon-download" <!-- icon="el-icon-download"-->
size="mini" <!-- size="mini"-->
@click="handleExport" <!-- @click="handleExport"-->
v-hasPermi="['system:user:export']" <!-- v-hasPermi="['system:user:export']"-->
>导出</el-button> <!-- >导出</el-button>-->
</el-col> <!-- </el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row> </el-row>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment