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

1.优化

parent b740dc54
......@@ -3,6 +3,7 @@ package com.propertyManagement;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
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
* @author propertymanagement
*/
@EnableScheduling
@SpringBootApplication
public class PropertyManagementApplication {
......
......@@ -52,6 +52,15 @@ public class WxAccountController extends BaseController {
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 {
*/
@GetMapping("/listAll")
public R<List<WxCommunityVo>> listAll(WxCommunityBo bo) {
if (!LoginHelper.isAdmin()) {
bo.setCommunityId(LoginHelper.getLoginUser().getCommunityId());
}
return R.ok(iWxCommunityService.queryList(bo));
}
......
......@@ -102,6 +102,7 @@ public class ApiWxCommunityController extends BaseController {
wxUser.setName(proprietorLedger.getName());
wxUser.setIdentityCard(proprietorLedger.getIdentityCard());
wxUser.setSqm(proprietorLedger.getSqm());
wxUser.setDayMoney(proprietorLedger.getDayMoney());
wxUser.setMonthMoney(proprietorLedger.getMonthMoney());
/**
* 查询车位信息
......
......@@ -37,10 +37,11 @@ public class ApiWxFamilyMemberController extends BaseController {
* 根据户主查询家庭成员列表
*/
@GetMapping("/listAllByUserId")
public R<List<WxFamilyMemberVo>> listAllByUserId() {
public R<List<WxFamilyMemberVo>> listAllByUserId(Integer type) {
LoginWxUser wxUser = AuthUtil.getWxUser();
WxFamilyMemberBo familyMemberBo = new WxFamilyMemberBo();
familyMemberBo.setProprietorId(wxUser.getProprietorId());
familyMemberBo.setType(type);
List<WxFamilyMemberVo> memberVoList = iWxFamilyMemberService.queryList(familyMemberBo);
return R.ok(memberVoList);
}
......
......@@ -2,6 +2,8 @@ package com.propertyManagement.business.domain;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import com.propertyManagement.common.annotation.ExcelDictFormat;
import com.propertyManagement.common.convert.ExcelDictConvert;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
......@@ -83,4 +85,9 @@ public class WxComment extends BaseEntity {
*/
private Date closeTime;
/**
* 是否匿名(0否 1是)
*/
private Integer isAnon;
}
......@@ -72,5 +72,9 @@ public class WxFamilyMember extends BaseEntity {
* 状态
*/
private Integer state;
/**
* 类型(1家人 2租客)
*/
private Integer type;
}
......@@ -90,6 +90,14 @@ public class WxLiveBill extends BaseEntity {
* 缴费月份
*/
private Date month;
/**
* 开始日期
*/
private Date startTime;
/**
* 结束日期
*/
private Date endTime;
/**
* 单价
*/
......
......@@ -100,5 +100,13 @@ public class WxPayRecord extends BaseEntity {
* 平台支付流水号
*/
private String outTradeNo;
/**
* 缴费开始日期
*/
private Date startTime;
/**
* 缴费结束日期
*/
private Date endTime;
}
......@@ -63,6 +63,10 @@ public class WxProprietorLedger extends BaseEntity {
* 面积单价(元)
*/
private BigDecimal sqmPrice;
/**
* 物业天费
*/
private BigDecimal dayMoney;
/**
* 物业月费
*/
......@@ -119,5 +123,9 @@ public class WxProprietorLedger extends BaseEntity {
* 备注
*/
private String remark;
/**
* 是否预警(0否 1是)
*/
private Integer isWarn;
}
......@@ -95,5 +95,11 @@ public class WxCommentBo extends BaseEntity {
*/
private Date closeTime;
/**
* 是否匿名(0否 1是)
*/
@NotNull(message = "是否匿名不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer isAnon;
}
......@@ -81,5 +81,10 @@ public class WxFamilyMemberBo extends BaseEntity {
*/
private Integer state;
/**
* 类型(1家人 2租客)
*/
private Integer type;
}
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.propertyManagement.common.core.domain.BaseEntity;
import lombok.Data;
......@@ -101,6 +104,18 @@ public class WxLiveBillBo extends BaseEntity {
@JsonFormat(pattern = "yyyy-MM")
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 {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createEndTime;
/**
* 缴费开始日期
*/
private Date startTime;
/**
* 缴费结束日期
*/
private Date endTime;
}
......@@ -80,6 +80,12 @@ public class WxProprietorLedgerBo extends BaseEntity {
@NotNull(message = "面积单价(元)不能为空", groups = { AddGroup.class, EditGroup.class })
private BigDecimal sqmPrice;
/**
* 物业天费
*/
@NotNull(message = "物业天费(元)不能为空", groups = { AddGroup.class, EditGroup.class })
private BigDecimal dayMoney;
/**
* 物业月费
*/
......@@ -161,5 +167,10 @@ public class WxProprietorLedgerBo extends BaseEntity {
*/
private String remark;
/**
* 是否预警(0否 1是)
*/
private Integer isWarn;
}
......@@ -53,6 +53,9 @@ public class LoginWxUser implements Serializable {
/** 房间面积 */
private BigDecimal sqm;
/** 物业天费 */
private BigDecimal dayMoney;
/** 物业月费 */
private BigDecimal monthMoney;
......
......@@ -96,6 +96,13 @@ public class WxCommentVo implements Serializable {
@ExcelProperty(value = "关闭时间")
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 {
@ExcelDictFormat(dictType = "wx_family_member_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 {
@ColumnWidth(18)
private Date month;
/**
* 开始日期
*/
private Date startTime;
/**
* 结束日期
*/
private Date endTime;
/**
* 单价
*/
......
......@@ -3,6 +3,7 @@ package com.propertyManagement.business.domain.vo;
import java.math.BigDecimal;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
......@@ -132,5 +133,16 @@ public class WxPayRecordVo implements Serializable {
*/
private Date updateTime;
/**
* 缴费开始日期
*/
private Date startTime;
/**
* 缴费结束日期
*/
private Date endTime;
}
......@@ -58,7 +58,6 @@ public class WxProprietorLedgerVo implements Serializable {
/**
* 房间户型
*/
@ExcelProperty(value = "房间户型")
private String houseType;
/**
......@@ -79,6 +78,12 @@ public class WxProprietorLedgerVo implements Serializable {
@ExcelProperty(value = "物业费用面积单价(元)")
private BigDecimal sqmPrice;
/**
* 物业天费
*/
@ExcelProperty(value = "物业天费")
private BigDecimal dayMoney;
/**
* 物业月费
*/
......@@ -106,8 +111,6 @@ public class WxProprietorLedgerVo implements Serializable {
/**
* 户籍地
*/
@ExcelProperty(value = "户籍地")
@ColumnWidth(20)
private String registerAddress;
/**
......@@ -163,5 +166,10 @@ public class WxProprietorLedgerVo implements Serializable {
@ExcelProperty(value = "备注")
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 {
lqw.eq(StringUtils.isNotBlank(bo.getCarportPhone()), WxCarport::getCarportPhone, bo.getCarportPhone());
lqw.eq(StringUtils.isNotBlank(bo.getCarportNumber()), WxCarport::getCarportNumber, bo.getCarportNumber());
lqw.eq(bo.getType() != null, WxCarport::getType, bo.getType());
lqw.orderByDesc(WxCarport::getCreateTime);
return lqw;
}
......
......@@ -103,6 +103,7 @@ public class WxCommentServiceImpl implements IWxCommentService {
lqw.like(StringUtils.isNotBlank(bo.getDisposeUserName()), WxComment::getDisposeUserName, bo.getDisposeUserName());
lqw.eq(bo.getCompleteTime() != null, WxComment::getCompleteTime, bo.getCompleteTime());
lqw.eq(bo.getCloseTime() != null, WxComment::getCloseTime, bo.getCloseTime());
lqw.eq(bo.getIsAnon() != null, WxComment::getIsAnon, bo.getIsAnon());
lqw.orderByDesc(WxComment::getCreateTime);
return lqw;
}
......
......@@ -14,6 +14,7 @@ import com.propertyManagement.business.mapper.WxProprietorLedgerMapper;
import com.propertyManagement.business.mapper.WxUserCommunityLedgerMapper;
import com.propertyManagement.business.service.IWxFamilyMemberService;
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.page.TableDataInfo;
import com.propertyManagement.common.utils.StringUtils;
......@@ -78,6 +79,8 @@ public class WxFamilyMemberServiceImpl implements IWxFamilyMemberService {
lqw.eq(StringUtils.isNotBlank(bo.getPhone()), WxFamilyMember::getPhone, bo.getPhone());
lqw.eq(bo.getRelation() != null, WxFamilyMember::getRelation, bo.getRelation());
lqw.eq(bo.getState() != null, WxFamilyMember::getState, bo.getState());
lqw.eq(bo.getType() != null, WxFamilyMember::getType, bo.getType());
lqw.orderByDesc(BaseEntity::getCreateTime);
return lqw;
}
......
......@@ -100,6 +100,8 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService {
Long orderId = null;
BigDecimal payAmount = BigDecimal.ZERO;
Integer orderType = null;
Date startTime = null;
Date endTime = null;
switch (payBiz) {
case PRESTORE:
WxLiveBill wxLiveBill = liveBillMapper.selectById(reqModel.getOrderId());
......@@ -115,6 +117,8 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService {
orderId = wxLiveBill.getBillId();
payAmount = wxLiveBill.getMoney();
orderType = wxLiveBill.getType();
startTime = wxLiveBill.getStartTime();
endTime = wxLiveBill.getEndTime();
break;
case MAINTAIN:
WxRepairs wxRepairs = repairsMapper.selectById(reqModel.getOrderId());
......@@ -134,7 +138,7 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService {
default:
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());
PayModel payModel = getPayModel(record);
return payment.pay(payModel);
......@@ -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();
WxPayRecord record = new WxPayRecord();
record.setOrderId(orderId);
......@@ -217,6 +221,10 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService {
record.setCommunityId(wxUser.getCommunityId());
record.setCommunityName(wxUser.getCommunityName());
record.setOrderType(orderType);
if (null != startTime && null != endTime) {
record.setStartTime(startTime);
record.setEndTime(endTime);
}
/**
* 生成外部订单号
*/
......
......@@ -72,6 +72,7 @@ public class WxProprietorLedgerServiceImpl implements IWxProprietorLedgerService
private LambdaQueryWrapper<WxProprietorLedger> buildQueryWrapper(WxProprietorLedgerBo bo) {
Map<String, Object> params = bo.getParams();
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.getCommunityId() != null, WxProprietorLedger::getCommunityId, bo.getCommunityId());
lqw.like(StringUtils.isNotBlank(bo.getCommunityName()), WxProprietorLedger::getCommunityName, bo.getCommunityName());
......
......@@ -6,7 +6,7 @@ spring.boot.admin.client:
url: http://localhost:9090/admin
instance:
service-host-type: IP
username: propertymanagement
username: admin
password: 123456
--- # 数据库配置
......
......@@ -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) {
return request({
......
......@@ -104,6 +104,13 @@
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 {
// 设置上传的请求头部
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: {},
......
......@@ -26,6 +26,16 @@
/>
</el-select>
</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-input-->
<!-- v-model="queryParams.disposeUserName"-->
......@@ -108,6 +118,11 @@
<dict-tag :options="dict.type.wx_comment_type" :value="scope.row.type"/>
</template>
</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="createTime" width="150">
<template slot-scope="scope">
......@@ -224,7 +239,7 @@ import {listCommunityAll} from "@/api/business/community";
export default {
name: "Comment",
dicts: ['wx_comment_state', 'wx_comment_type'],
dicts: ['wx_comment_state', 'wx_comment_type', 'sys_is_enable'],
data() {
return {
username: undefined,
......@@ -259,6 +274,7 @@ export default {
communityName: undefined,
state: undefined,
type: undefined,
isAnon: undefined,
disposeUserId: undefined,
disposeUserName: undefined,
completeTime: undefined,
......@@ -343,6 +359,7 @@ export default {
communityName: undefined,
state: undefined,
type: undefined,
isAnon: undefined,
disposeUserId: undefined,
disposeUserName: undefined,
completeTime: undefined,
......
......@@ -115,6 +115,11 @@
</el-table-column>
<el-table-column label="姓名" align="center" prop="name" />
<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">-->
<!-- <template slot-scope="scope">-->
<!-- <dict-tag :options="dict.type.wx_family_member_relation" :value="scope.row.relation"/>-->
......@@ -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-item label="业主" prop="proprietorId">
<el-select v-model="form.proprietorId" filterable style="width: 100%" placeholder="请选择业主">
<el-option v-for="item in proprietorList" :key="item.proprietorId" :value="item.proprietorId" :label="`${item.communityName}-${item.name}`"/>
</el-select>
</el-form-item>
<el-form-item label="头像" prop="avatar">
<image-upload v-model="form.avatar" :limit="1" />
</el-form-item>
<el-form-item label="姓名" prop="name">
<el-input v-model="form.name" placeholder="请输入姓名" />
</el-form-item>
<el-form-item label="电话" prop="phone">
<el-input v-model="form.phone" placeholder="请输入电话" />
</el-form-item>
<el-row>
<el-col :span="24">
<el-form-item label="业主" prop="proprietorId">
<el-select v-model="form.proprietorId" filterable style="width: 100%" placeholder="请选择业主">
<el-option v-for="item in proprietorList" :key="item.proprietorId" :value="item.proprietorId" :label="`${item.communityName}-${item.name}`"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="姓名" prop="name">
<el-input v-model="form.name" placeholder="请输入姓名" />
</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-select v-model="form.relation" placeholder="请选择关系">-->
<!-- <el-option-->
......@@ -196,7 +230,7 @@ import {listProprietorLedgerAll} from "@/api/business/proprietorLedger";
export default {
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() {
return {
username: undefined,
......@@ -236,6 +270,7 @@ export default {
phone: undefined,
relation: undefined,
state: undefined,
type: undefined,
},
// 表单参数
form: {},
......@@ -250,6 +285,9 @@ export default {
phone: [
{ required: true, message: "电话不能为空", trigger: "blur" }
],
type: [
{ required: true, message: "类型不能为空", trigger: "blur" }
],
}
};
},
......@@ -305,6 +343,7 @@ export default {
phone: undefined,
relation: undefined,
state: undefined,
type: 1,
createBy: undefined,
createTime: undefined,
updateBy: undefined,
......
......@@ -65,16 +65,16 @@
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['business:liveBill:add']"
>新增</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-plus"-->
<!-- size="mini"-->
<!-- @click="handleAdd"-->
<!-- v-hasPermi="['business:liveBill:add']"-->
<!-- >新增</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
......@@ -86,17 +86,17 @@
<!-- v-hasPermi="['business:liveBill:edit']"-->
<!-- >修改</el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-edit"
size="mini"
:disabled="multiple"
@click="handleConfirm"
v-hasPermi="['business:liveBill:confirm']"
>确认缴纳</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-edit"-->
<!-- size="mini"-->
<!-- :disabled="multiple"-->
<!-- @click="handleConfirm"-->
<!-- v-hasPermi="['business:liveBill:confirm']"-->
<!-- >确认缴纳</el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button
type="warning"
......@@ -114,10 +114,10 @@
<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="userName" />-->
<el-table-column label="小区" align="center" prop="communityName" />
<el-table-column label="姓名" align="center" prop="proprietorName" width="70"/>
<el-table-column label="小区" align="center" prop="communityName" fixed="left"/>
<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="room" width="150"/>
<el-table-column label="面积㎡" align="center" prop="sqm" />
<el-table-column label="车位号" align="center" prop="carportNumber" />
<el-table-column label="登记车牌" align="center" prop="plateNumber" width="95"/>
......@@ -128,43 +128,53 @@
<span>{{ parseTime(scope.row.month, '{y}-{m}') }}</span>
</template>
</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="type">
<el-table-column label="缴费开始日期" align="center" prop="startTime" width="110">
<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>
</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">
<dict-tag :options="dict.type.wx_live_bill_state" :value="scope.row.state"/>
<span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}</span>
</template>
</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">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</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">
<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>
<dict-tag :options="dict.type.wx_live_bill_state" :value="scope.row.state"/>
</template>
</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>
<pagination
......@@ -189,8 +199,17 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="缴费月份" prop="month">
<el-date-picker v-model="form.month" type="month" value-format="yyyy-MM" style="width: 100%" placeholder="选择月" />
<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
style="width: 100%"
v-model="date"
type="daterange"
range-separator=""
start-placeholder="缴费开始日期"
end-placeholder="缴费结束日期"
value-format="yyyy-MM-dd"
/>
</el-form-item>
</el-col>
<el-col :span="12">
......@@ -318,6 +337,7 @@ export default {
communityList: [],
proprietorLedgerList: [],
carportList: [],
date: [],
// 弹出层标题
title: "",
// 是否显示弹出层
......@@ -442,6 +462,8 @@ export default {
sqm: undefined,
plateNumber: undefined,
month: undefined,
startTime: undefined,
endTime: undefined,
price: undefined,
money: undefined,
type: undefined,
......@@ -452,6 +474,7 @@ export default {
updateBy: undefined,
updateTime: undefined
};
this.date = []
this.resetForm("form");
},
/** 搜索按钮操作 */
......@@ -493,6 +516,9 @@ export default {
this.typeChange(response.data.type)
this.loading = false;
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.title = "修改生活缴费账单";
});
......@@ -501,6 +527,13 @@ export default {
submitForm() {
this.$refs["form"].validate(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;
if (this.form.billId != null) {
updateLiveBill(this.form).then(response => {
......
......@@ -22,10 +22,10 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="房间号" prop="room">
<el-form-item label="号" prop="room">
<el-input
v-model="queryParams.room"
placeholder="请输入房间号"
placeholder="请输入号"
clearable
@keyup.enter.native="handleQuery"
/>
......@@ -46,13 +46,23 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="户籍地" prop="registerAddress">
<el-input
v-model="queryParams.registerAddress"
placeholder="请输入户籍地"
clearable
@keyup.enter.native="handleQuery"
/>
<!-- <el-form-item label="户籍地" prop="registerAddress">-->
<!-- <el-input-->
<!-- v-model="queryParams.registerAddress"-->
<!-- placeholder="请输入户籍地"-->
<!-- clearable-->
<!-- @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-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
......@@ -116,15 +126,16 @@
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</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 label="小区名称" align="center" prop="communityName" />
<el-table-column label="业主姓名" align="center" prop="name" />
<el-table-column label="联系电话" align="center" prop="phone" />
<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="sqmPrice" />
<el-table-column label="物业天费" align="center" prop="dayMoney" />
<el-table-column label="物业月费" align="center" prop="monthMoney" />
<el-table-column label="物业年费" align="center" prop="yearMoney" />
<el-table-column label="出生日期" align="center" prop="birthDate" width="180">
......@@ -140,6 +151,11 @@
<el-table-column label="物业预存余额" align="center" prop="propertyPrepaidMoney" />
<el-table-column label="车位管理预存余额" align="center" prop="carportManagePrestoreMoney" />
<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">
<template slot-scope="scope">
<el-button
......@@ -192,8 +208,8 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="房间" prop="room">
<el-input v-model="form.room" placeholder="请输入房间" />
<el-form-item label="" prop="room">
<el-input v-model="form.room" placeholder="请输入" />
</el-form-item>
</el-col>
</el-row>
......@@ -215,6 +231,11 @@
<el-input v-model="form.houseType" placeholder="请输入房间户型" />
</el-form-item>
</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-col :span="12">
......@@ -360,6 +381,7 @@ import {getToken} from "@/utils/auth";
export default {
name: "ProprietorLedger",
dicts: ['sys_is_enable'],
data() {
return {
username: undefined,
......@@ -388,6 +410,7 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
isWarn: undefined,
userId: undefined,
communityId: undefined,
communityName: undefined,
......@@ -419,7 +442,7 @@ export default {
// 设置上传的请求头部
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: {},
......@@ -435,7 +458,7 @@ export default {
{ required: true, message: "联系电话不能为空", trigger: "blur" }
],
room: [
{ required: true, message: "房间号不能为空", trigger: "blur" }
{ required: true, message: "号不能为空", trigger: "blur" }
],
sqm: [
{ required: true, message: "房间面积不能为空", trigger: "blur" }
......@@ -443,12 +466,15 @@ export default {
sqmPrice: [
{ required: true, message: "面积单价不能为空", trigger: "blur" }
],
monthMoney: [
{ required: true, message: "物业月费不能为空", trigger: "blur" }
],
yearMoney: [
{ required: true, message: "物业年费不能为空", trigger: "blur" }
dayMoney: [
{ required: true, message: "物业天费不能为空", trigger: "blur" }
],
// monthMoney: [
// { required: true, message: "物业月费不能为空", trigger: "blur" }
// ],
// yearMoney: [
// { required: true, message: "物业年费不能为空", trigger: "blur" }
// ],
// birthDate: [
// { required: true, message: "出生日期不能为空", trigger: "blur" }
// ],
......@@ -473,6 +499,16 @@ export default {
this.getCommunityListAll();
},
methods: {
// 设置行样式方法
setRowStyle({row}) {
if (row.isWarn === '1' || row.isWarn === 1) { // 判断是否为预警状态
return {
backgroundColor: 'rgba(255, 0, 0, 0.1)', // 浅红色背景
// 也可以设置其他样式
};
}
return {}; // 默认样式
},
/** 查询小区业主台账信息列表 */
getList() {
this.loading = true;
......@@ -506,6 +542,7 @@ export default {
room: undefined,
sqm: 0,
sqmPrice: 0,
dayMoney: 0,
monthMoney: 0,
yearMoney: 0,
birthDate: undefined,
......
......@@ -114,10 +114,10 @@
<!-- <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="userName" />-->
<el-table-column label="小区名称" align="center" prop="communityName" />
<el-table-column label="业主名称" align="center" prop="proprietorName" />
<el-table-column label="小区名称" align="center" prop="communityName" fixed="left"/>
<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="room" />
<el-table-column label="报修时间" align="center" prop="repairsTime" width="150">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.repairsTime, '{y}-{m}-{d} {h}:{i}') }}</span>
......@@ -151,24 +151,17 @@
<span>{{ parseTime(scope.row.closeTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['business:repairs:edit']"-->
<!-- >修改</el-button>-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['business:repairs:remove']"-->
<!-- >删除</el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['business:repairs:edit']"
>工单转交</el-button>
</template>
</el-table-column>
</el-table>
<pagination
......@@ -182,83 +175,11 @@
<!-- 添加或修改报修对话框 -->
<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-item label="用户主键" prop="userId">
<el-input v-model="form.userId" placeholder="请输入用户主键" />
</el-form-item>
<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-form-item label="维修人员" prop="accountId">
<el-select v-model="form.accountId" filterable placeholder="请选择维修人员" clearable>
<el-option v-for="item in accountList" :key="item.accountId" :value="item.accountId" :label="item.name" />
</el-select>
</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>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
......@@ -271,6 +192,7 @@
<script>
import { listRepairs, getRepairs, delRepairs, addRepairs, updateRepairs } from "@/api/business/repairs";
import {listCommunityAll} from "@/api/business/community";
import {listAccount, listAccountAll} from "@/api/business/account";
export default {
name: "Repairs",
......@@ -295,6 +217,7 @@ export default {
// 报修表格数据
repairsList: [],
communityList: [],
accountList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
......@@ -463,12 +386,19 @@ export default {
handleUpdate(row) {
this.loading = true;
this.reset();
this.getAccountList(row.communityId)
const repairsId = row.repairsId || this.ids
getRepairs(repairsId).then(response => {
this.loading = false;
this.form = response.data;
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 {
this.buttonLoading = true;
if (this.form.repairsId != null) {
updateRepairs(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.$modal.msgSuccess("操作成功");
this.open = false;
this.getList();
}).finally(() => {
......
......@@ -119,26 +119,26 @@
v-hasPermi="['system:user:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="info"
plain
icon="el-icon-upload2"
size="mini"
@click="handleImport"
v-hasPermi="['system:user:import']"
>导入</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:user:export']"
>导出</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="info"-->
<!-- plain-->
<!-- icon="el-icon-upload2"-->
<!-- size="mini"-->
<!-- @click="handleImport"-->
<!-- v-hasPermi="['system:user:import']"-->
<!-- >导入</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="warning"-->
<!-- plain-->
<!-- icon="el-icon-download"-->
<!-- size="mini"-->
<!-- @click="handleExport"-->
<!-- v-hasPermi="['system:user:export']"-->
<!-- >导出</el-button>-->
<!-- </el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</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