| New file |
| | |
| | | package com.java110.api.listener.fee; |
| | | |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.java110.api.listener.AbstractServiceApiDataFlowListener; |
| | | import com.java110.common.constant.ResponseConstant; |
| | | import com.java110.common.constant.ServiceCodeConstant; |
| | | import com.java110.common.exception.ListenerExecuteException; |
| | | import com.java110.common.util.Assert; |
| | | import com.java110.common.util.BeanConvertUtil; |
| | | import com.java110.core.annotation.Java110Listener; |
| | | import com.java110.core.context.DataFlowContext; |
| | | import com.java110.core.smo.fee.IFeeInnerServiceSMO; |
| | | import com.java110.core.smo.floor.IFloorInnerServiceSMO; |
| | | import com.java110.core.smo.owner.IOwnerCarInnerServiceSMO; |
| | | import com.java110.core.smo.owner.IOwnerInnerServiceSMO; |
| | | import com.java110.core.smo.owner.IOwnerRoomRelInnerServiceSMO; |
| | | import com.java110.core.smo.parkingSpace.IParkingSpaceInnerServiceSMO; |
| | | import com.java110.core.smo.room.IRoomInnerServiceSMO; |
| | | import com.java110.core.smo.unit.IUnitInnerServiceSMO; |
| | | import com.java110.dto.FeeDto; |
| | | import com.java110.dto.OwnerCarDto; |
| | | import com.java110.dto.OwnerDto; |
| | | import com.java110.dto.OwnerRoomRelDto; |
| | | import com.java110.dto.ParkingSpaceDto; |
| | | import com.java110.dto.RoomDto; |
| | | import com.java110.event.service.api.ServiceDataFlowEvent; |
| | | import com.java110.vo.api.ApiFeeVo; |
| | | import com.java110.vo.api.ApiParkingSpaceFeeVo; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpMethod; |
| | | import org.springframework.http.HttpStatus; |
| | | import org.springframework.http.ResponseEntity; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @ClassName FloorDto |
| | | * @Description 小区楼数据层侦听类 |
| | | * @Author wuxw |
| | | * @Date 2019/4/24 8:52 |
| | | * @Version 1.0 |
| | | * add by wuxw 2019/4/24 |
| | | **/ |
| | | @Java110Listener("queryFeeByParkingSpace") |
| | | public class QueryFeeByParkingSpaceListener extends AbstractServiceApiDataFlowListener { |
| | | |
| | | @Autowired |
| | | private IFeeInnerServiceSMO feeInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl; |
| | | |
| | | |
| | | @Autowired |
| | | private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl; |
| | | |
| | | @Override |
| | | public String getServiceCode() { |
| | | return ServiceCodeConstant.SERVICE_CODE_QUERY_FEE_BY_PARKING_SPACE; |
| | | } |
| | | |
| | | @Override |
| | | public HttpMethod getHttpMethod() { |
| | | return HttpMethod.GET; |
| | | } |
| | | |
| | | /** |
| | | * 业务层数据处理 |
| | | * |
| | | * @param event 时间对象 |
| | | */ |
| | | @Override |
| | | public void soService(ServiceDataFlowEvent event) { |
| | | DataFlowContext dataFlowContext = event.getDataFlowContext(); |
| | | //获取请求数据 |
| | | JSONObject reqJson = dataFlowContext.getReqJson(); |
| | | validateFeeData(reqJson); |
| | | FeeDto feeDtoParamIn = BeanConvertUtil.covertBean(reqJson, FeeDto.class); |
| | | feeDtoParamIn.setPayerObjId(reqJson.getString("psId")); |
| | | |
| | | List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDtoParamIn); |
| | | ResponseEntity<String> responseEntity = null; |
| | | if (feeDtos == null || feeDtos.size() == 0) { |
| | | responseEntity = new ResponseEntity<String>("{}", HttpStatus.OK); |
| | | } |
| | | |
| | | FeeDto feeDto = feeDtos.get(0); |
| | | |
| | | ApiParkingSpaceFeeVo apiFeeVo = BeanConvertUtil.covertBean(feeDto, ApiParkingSpaceFeeVo.class); |
| | | |
| | | //停车位信息 |
| | | ParkingSpaceDto parkingSpaceDto = BeanConvertUtil.covertBean(reqJson, ParkingSpaceDto.class); |
| | | List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto); |
| | | |
| | | Assert.listOnlyOne(parkingSpaceDtos, "未查询到或查询多条 车位信息"); |
| | | |
| | | parkingSpaceDto = parkingSpaceDtos.get(0); |
| | | |
| | | BeanConvertUtil.covertBean(parkingSpaceDto, apiFeeVo); |
| | | |
| | | //查询车辆信息 |
| | | OwnerCarDto ownerCarDto = BeanConvertUtil.covertBean(feeDto, OwnerCarDto.class); |
| | | |
| | | List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto); |
| | | Assert.listOnlyOne(ownerCarDtos, "未查询到或查询多条 车辆信息"); |
| | | ownerCarDto = ownerCarDtos.get(0); |
| | | |
| | | BeanConvertUtil.covertBean(ownerCarDto, apiFeeVo); |
| | | |
| | | |
| | | responseEntity = new ResponseEntity<String>(JSONObject.toJSONString(apiFeeVo), HttpStatus.OK); |
| | | |
| | | |
| | | dataFlowContext.setResponseEntity(responseEntity); |
| | | } |
| | | |
| | | /** |
| | | * 校验查询条件是否满足条件 |
| | | * |
| | | * @param reqJson 包含查询条件 |
| | | */ |
| | | private void validateFeeData(JSONObject reqJson) { |
| | | Assert.jsonObjectHaveKey(reqJson, "communityId", "请求中未包含communityId信息"); |
| | | Assert.jsonObjectHaveKey(reqJson, "psId", "请求中未包含psId信息"); |
| | | |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public int getOrder() { |
| | | return super.DEFAULT_ORDER; |
| | | } |
| | | |
| | | public IFeeInnerServiceSMO getFeeInnerServiceSMOImpl() { |
| | | return feeInnerServiceSMOImpl; |
| | | } |
| | | |
| | | public void setFeeInnerServiceSMOImpl(IFeeInnerServiceSMO feeInnerServiceSMOImpl) { |
| | | this.feeInnerServiceSMOImpl = feeInnerServiceSMOImpl; |
| | | } |
| | | |
| | | |
| | | public IParkingSpaceInnerServiceSMO getParkingSpaceInnerServiceSMOImpl() { |
| | | return parkingSpaceInnerServiceSMOImpl; |
| | | } |
| | | |
| | | public void setParkingSpaceInnerServiceSMOImpl(IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl) { |
| | | this.parkingSpaceInnerServiceSMOImpl = parkingSpaceInnerServiceSMOImpl; |
| | | } |
| | | |
| | | |
| | | public IOwnerCarInnerServiceSMO getOwnerCarInnerServiceSMOImpl() { |
| | | return ownerCarInnerServiceSMOImpl; |
| | | } |
| | | |
| | | public void setOwnerCarInnerServiceSMOImpl(IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl) { |
| | | this.ownerCarInnerServiceSMOImpl = ownerCarInnerServiceSMOImpl; |
| | | } |
| | | } |
| | |
| | | apiFeeVo.setRoomNum(roomDto.getRoomNum());*/ |
| | | apiFeeVo = BeanConvertUtil.covertBean(roomDto,apiFeeVo); |
| | | |
| | | //查询单元信息 |
| | | /*UnitDto unitDto = new UnitDto(); |
| | | unitDto.setUnitId(roomDto.getUnitId()); |
| | | List<UnitDto> unitDtos = unitInnerServiceSMOImpl.queryUnits(unitDto); |
| | | |
| | | if (unitDtos == null || unitDtos.size() != 1) { |
| | | throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "数据错误,未找到单元信息 unitId" + roomDto.getUnitId()); |
| | | } |
| | | |
| | | unitDto = unitDtos.get(0); |
| | | |
| | | apiFeeVo.setUnitId(unitDto.getUnitId()); |
| | | apiFeeVo.setUnitNum(unitDto.getUnitNum());*/ |
| | | |
| | | /* //查询 小区楼信息 |
| | | FloorDto floorDto = new FloorDto(); |
| | | floorDto.setFloorId(unitDto.getFloorId()); |
| | | List<FloorDto> floorDtos = floorInnerServiceSMOImpl.queryFloors(floorDto); |
| | | |
| | | if (floorDtos == null || floorDtos.size() != 1) { |
| | | throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "数据错误,未找到小区楼信息 floorId" + unitDto.getFloorId()); |
| | | } |
| | | |
| | | floorDto = floorDtos.get(0); |
| | | apiFeeVo.setFloorNum(floorDto.getFloorNum()); |
| | | apiFeeVo.setFloorId(floorDto.getFloorId());*/ |
| | | |
| | | // 业主信息 |
| | | OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto(); |
| | | ownerRoomRelDto.setRoomId(roomDto.getRoomId()); |
| | |
| | | JSONObject reqJson = dataFlowContext.getReqJson(); |
| | | validateParkingSpaceData(reqJson); |
| | | |
| | | refreshReqJson(reqJson); |
| | | |
| | | |
| | | int row = reqJson.getInteger("row"); |
| | | |
| | |
| | | dataFlowContext.setResponseEntity(responseEntity); |
| | | } |
| | | |
| | | /** |
| | | * 请求数据处理 |
| | | * |
| | | * @param reqJson 请求数据对象 |
| | | */ |
| | | private void refreshReqJson(JSONObject reqJson) { |
| | | |
| | | if (!reqJson.containsKey("state")) { |
| | | return; |
| | | } |
| | | |
| | | if("SH".equals(reqJson.getString("state"))){ |
| | | reqJson.put("states", new String[] {"S","H"}); |
| | | reqJson.remove("state"); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 校验查询条件是否满足条件 |
| New file |
| | |
| | | package com.java110.web.components.fee; |
| | | |
| | | import com.java110.core.context.IPageData; |
| | | import com.java110.web.smo.IFeeServiceSMO; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | | * @ClassName ViewPropertyFeeConfigComponent |
| | | * @Description 查询主费用信息 |
| | | * @Author wuxw |
| | | * @Date 2019/6/1 14:33 |
| | | * @Version 1.0 |
| | | * add by wuxw 2019/6/1 |
| | | **/ |
| | | @Component("viewMainParkingSpaceFee") |
| | | public class ViewMainParkingSpaceFeeComponent { |
| | | |
| | | @Autowired |
| | | private IFeeServiceSMO feeServiceSMOImpl; |
| | | |
| | | public ResponseEntity<String> getFee(IPageData pd) { |
| | | return feeServiceSMOImpl.loadFeeByPsId(pd); |
| | | } |
| | | |
| | | |
| | | public IFeeServiceSMO getFeeServiceSMOImpl() { |
| | | return feeServiceSMOImpl; |
| | | } |
| | | |
| | | public void setFeeServiceSMOImpl(IFeeServiceSMO feeServiceSMOImpl) { |
| | | this.feeServiceSMOImpl = feeServiceSMOImpl; |
| | | } |
| | | } |
| | |
| | | */ |
| | | ResponseEntity<String> loadFeeByRoomId(IPageData pd); |
| | | |
| | | |
| | | /** |
| | | * 查询主费用 |
| | | * |
| | | * @param pd 页面数据封装对象 |
| | | * @return 返回 ResponseEntity对象包含 http状态 信息 body信息 |
| | | */ |
| | | ResponseEntity<String> loadFeeByPsId(IPageData pd); |
| | | |
| | | /** |
| | | * 查询费用明细 |
| | | * |
| | |
| | | return responseEntity; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 查询主费用 |
| | | * |
| | | * @param pd 页面数据封装对象 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public ResponseEntity<String> loadFeeByPsId(IPageData pd) { |
| | | validateLoadParkingSpaceFee(pd); |
| | | |
| | | //校验员工是否有权限操作 |
| | | super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.PRIVILEGE_PARKING_SPACE); |
| | | |
| | | JSONObject paramIn = JSONObject.parseObject(pd.getReqData()); |
| | | String communityId = paramIn.getString("communityId"); |
| | | ResponseEntity responseEntity = super.getStoreInfo(pd, restTemplate); |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | return responseEntity; |
| | | } |
| | | Assert.jsonObjectHaveKey(responseEntity.getBody().toString(), "storeId", "根据用户ID查询商户ID失败,未包含storeId节点"); |
| | | Assert.jsonObjectHaveKey(responseEntity.getBody().toString(), "storeTypeCd", "根据用户ID查询商户类型失败,未包含storeTypeCd节点"); |
| | | |
| | | String storeId = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeId"); |
| | | String storeTypeCd = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeTypeCd"); |
| | | //数据校验是否 商户是否入驻该小区 |
| | | super.checkStoreEnterCommunity(pd, storeId, storeTypeCd, communityId, restTemplate); |
| | | responseEntity = this.callCenterService(restTemplate, pd, "", |
| | | ServiceConstant.SERVICE_API_URL + "/api/fee.queryFeeByParkingSpace" + mapToUrlParam(paramIn), |
| | | HttpMethod.GET); |
| | | return responseEntity; |
| | | } |
| | | |
| | | @Override |
| | | public ResponseEntity<String> loadFeeDetail(IPageData pd) { |
| | | validateLoadFeeDetail(pd); |
| | |
| | | Assert.hasLength(paramIn.getString("feeTypeCd"), "费用类型不能为空"); |
| | | } |
| | | |
| | | |
| | | private void validateLoadParkingSpaceFee(IPageData pd) { |
| | | Assert.jsonObjectHaveKey(pd.getReqData(), "communityId", "请求报文中未包含communityId节点"); |
| | | Assert.jsonObjectHaveKey(pd.getReqData(), "psId", "请求报文中未包含psId节点"); |
| | | |
| | | JSONObject paramIn = JSONObject.parseObject(pd.getReqData()); |
| | | Assert.hasLength(paramIn.getString("communityId"), "小区ID不能为空"); |
| | | Assert.hasLength(paramIn.getString("psId"), "停车位ID不能为空"); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 校验缴费参数 |
| | | * |
| New file |
| | |
| | | <div id="component" class="wrapper wrapper-content animated fadeInRight ecommerce"> |
| | | <vc:create name="viewMainParkingSpaceFee" |
| | | feeName="停车费" |
| | | payName="propertyPay" |
| | | ></vc:create> |
| | | <div class="row"> |
| | | <div class="col-lg-12"> |
| | | <div class="ibox"> |
| | | <div class="ibox-title"> |
| | | <h5>缴费历史</h5> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | |
| | | <div class="row"> |
| | | <div class="col-sm-3 input-group"> |
| | | <input size="16" type="text" placeholder="请选择开始时间" readonly class="form-control form-control-sm start_time"> |
| | | </div> |
| | | <div class="col-sm-2"> |
| | | |
| | | </div> |
| | | <div class="col-sm-3 input-group"> |
| | | <input size="16" type="text" placeholder="请选择结束时间" readonly class="form-control form-control-sm end_time"> |
| | | </div> |
| | | |
| | | <div class="col-sm-2"> |
| | | |
| | | </div> |
| | | |
| | | <div class="col-sm-2"> |
| | | <button type="button" class="btn btn-primary btn-sm" v-on:click="queryFeeDetailMethod()"> |
| | | <i class="glyphicon glyphicon-search"></i> 马上查询</button> |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | <table class="footable table table-stripped toggle-arrow-tiny" style="margin-top:10px" data-page-size="10"> |
| | | <thead> |
| | | <tr> |
| | | <th>缴费ID</th> |
| | | <th data-hide="phone">周期</th> |
| | | <th data-hide="phone">应收金额</th> |
| | | <th data-hide="phone">实收金额</th> |
| | | <th data-hide="phone">打折率</th> |
| | | <th data-hide="phone" >备注</th> |
| | | <th data-hide="phone">缴费时间</th> |
| | | </tr> |
| | | </thead> |
| | | <tbody> |
| | | <tr v-for="feeDetail in feeDetailInfo.feeDetails"> |
| | | <td> |
| | | {{feeDetail.detailId}} |
| | | </td> |
| | | <td> |
| | | {{feeDetail.cycles}} 月 |
| | | </td> |
| | | <td> |
| | | {{feeDetail.receivableAmount}} 元 |
| | | </td> |
| | | <td> |
| | | {{feeDetail.receivedAmount}} 元 |
| | | </td> |
| | | <td> |
| | | {{feeDetail.primeRate}} |
| | | </td> |
| | | <td> |
| | | {{feeDetail.remark}} |
| | | </td> |
| | | <td> |
| | | {{feeDetail.createTime}} |
| | | </td> |
| | | </tr> |
| | | </tbody> |
| | | <tfoot> |
| | | <tr> |
| | | <td colspan="7"> |
| | | <ul class="pagination float-right"></ul> |
| | | </td> |
| | | </tr> |
| | | </tfoot> |
| | | </table> |
| | | <!-- 分页 --> |
| | | <vc:create name="pagination"></vc:create> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| New file |
| | |
| | | /** |
| | | 入驻小区 |
| | | **/ |
| | | (function(vc){ |
| | | var DEFAULT_PAGE = 1; |
| | | var DEFAULT_ROW = 10; |
| | | vc.extends({ |
| | | data:{ |
| | | feeDetailInfo:{ |
| | | feeDetails:[], |
| | | total:0, |
| | | records:1, |
| | | feeId:'', |
| | | startTime:'', |
| | | endTime:'' |
| | | } |
| | | }, |
| | | _initMethod:function(){ |
| | | vc.component.initDate(); |
| | | }, |
| | | _initEvent:function(){ |
| | | vc.on('propertyFee','listFeeDetail',function(_param){ |
| | | vc.component.feeDetailInfo.feeId = _param.feeId; |
| | | vc.component.listFeeDetail(DEFAULT_PAGE,DEFAULT_ROW); |
| | | }); |
| | | |
| | | vc.on('pagination','page_event',function(_currentPage){ |
| | | vc.component.listRoom(_currentPage,DEFAULT_ROW); |
| | | }); |
| | | }, |
| | | methods:{ |
| | | initDate:function(){ |
| | | $(".start_time").datetimepicker({format: 'yyyy-mm-dd', language: 'zh-CN',minView: "day"}); |
| | | $(".end_time").datetimepicker({format: 'yyyy-mm-dd', language: 'zh-CN',minView: "hour"}); |
| | | $('.start_time').datetimepicker() |
| | | .on('changeDate', function (ev) { |
| | | var value = $(".start_time").val(); |
| | | vc.component.feeDetailInfo.startTime = value ; |
| | | }); |
| | | $('.end_time').datetimepicker() |
| | | .on('changeDate', function (ev) { |
| | | var value = $(".end_time").val(); |
| | | vc.component.feeDetailInfo.endTime = value ; |
| | | }); |
| | | }, |
| | | listFeeDetail:function(_page,_row){ |
| | | var param = { |
| | | params:{ |
| | | page:_page, |
| | | row:_row, |
| | | communityId:vc.getCurrentCommunity().communityId, |
| | | feeId:vc.component.feeDetailInfo.feeId, |
| | | startTime:vc.component.feeDetailInfo.startTime, |
| | | endTime:vc.component.feeDetailInfo.endTime |
| | | } |
| | | } |
| | | //发送get请求 |
| | | vc.http.get('propertyFee', |
| | | 'listFeeDetail', |
| | | param, |
| | | function(json,res){ |
| | | var listFeeDetailData =JSON.parse(json); |
| | | |
| | | vc.component.feeDetailInfo.total = listFeeDetailData.total; |
| | | vc.component.feeDetailInfo.records = listFeeDetailData.records; |
| | | vc.component.feeDetailInfo.feeDetails = listFeeDetailData.feeDetails; |
| | | |
| | | vc.emit('pagination','init',{ |
| | | total:vc.component.feeDetailInfo.records, |
| | | currentPage:_page |
| | | }); |
| | | },function(errInfo,error){ |
| | | console.log('请求失败处理'); |
| | | } |
| | | ); |
| | | }, |
| | | queryFeeDetailMethod:function(){ |
| | | vc.component.listFeeDetail(DEFAULT_PAGE,DEFAULT_ROW); |
| | | } |
| | | } |
| | | }); |
| | | })(window.vc); |
| | |
| | | vc.component.listFeeDetail(DEFAULT_PAGE,DEFAULT_ROW); |
| | | }); |
| | | |
| | | vc.on('propertyFee','listParkingSpaceData',function(_param){ |
| | | vc.component.feeDetailInfo.feeId = _param.feeId; |
| | | vc.component.listFeeDetail(DEFAULT_PAGE,DEFAULT_ROW); |
| | | }); |
| | | |
| | | vc.on('pagination','page_event',function(_currentPage){ |
| | | vc.component.listRoom(_currentPage,DEFAULT_ROW); |
| | | }); |
| | |
| | | <div class="row"> |
| | | |
| | | <div class="col-sm-6 m-b-xs"> |
| | | |
| | | <div class="input-group" v-if="searchParkingSpaceInfo.psFlag == 'SH'"> |
| | | <input placeholder="输入车牌号" type="text" v-model="searchParkingSpaceInfo.carNum" class="form-control form-control-sm"> |
| | | </div> |
| | | </div> |
| | | <div class="col-sm-6"> |
| | | <div class="input-group"> |
| | |
| | | propTypes: { |
| | | emitChooseParkingSpace:vc.propTypes.string, |
| | | emitLoadData:vc.propTypes.string, |
| | | parkingSpaceFlag:vc.propTypes.string // 如果 S 表示查询售卖停车位 H 出租停车位 F 表示查询未售卖未出租停车位 |
| | | parkingSpaceFlag:vc.propTypes.string // 如果 S 表示查询售卖停车位 H 出租停车位 SH 查询出租和出售车位 F 表示查询未售卖未出租停车位 |
| | | }, |
| | | data:{ |
| | | searchParkingSpaceInfo:{ |
| | | parkingSpaces:[], |
| | | total:0, |
| | | records:1, |
| | | num:'' |
| | | num:'', |
| | | carNum:'', |
| | | psFlag:$props.parkingSpaceFlag |
| | | } |
| | | }, |
| | | _initMethod:function(){ |
| | |
| | | row:_row, |
| | | communityId:vc.getCurrentCommunity().communityId, |
| | | num:vc.component.searchParkingSpaceInfo.num, |
| | | carNum:vc.component.searchParkingSpaceInfo.carNum, |
| | | state:$props.parkingSpaceFlag |
| | | } |
| | | }; |
| New file |
| | |
| | | <div class="row"> |
| | | <div class="col-lg-12"> |
| | | <div class="ibox "> |
| | | <div class="ibox-title"> |
| | | <h5>{{mainParkingSpaceFeeInfo.feeName}}信息</h5> |
| | | <div class="ibox-tools" style="top:10px;"> |
| | | <button type="button" class="btn btn-primary btn-sm" v-on:click="openSearchRoomModel()"> |
| | | <i class="glyphicon glyphicon-search"></i> 选择停车位</button> |
| | | <button type="button" class="btn btn-primary btn-sm" |
| | | v-if="mainParkingSpaceFeeInfo.feeId != null && mainParkingSpaceFeeInfo.feeId != ''" |
| | | style="margin-left:10px" v-on:click="openPayModel()"> |
| | | <i class="glyphicon glyphicon-plus" ></i> 缴费</button> |
| | | </div> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <div class="row"> |
| | | <div class="col-sm-4"> |
| | | <div class="form-group"> |
| | | <label class="col-form-label" >费用ID:</label> |
| | | <label class="">{{mainParkingSpaceFeeInfo.feeId}}</label> |
| | | </div> |
| | | </div> |
| | | <div class="col-sm-4"> |
| | | <div class="form-group"> |
| | | <label class="col-form-label">停车位编号:</label> |
| | | <label class="">{{mainParkingSpaceFeeInfo.num}}</label> |
| | | </div> |
| | | </div> |
| | | <div class="col-sm-4"> |
| | | <div class="form-group"> |
| | | <label class="col-form-label" >车位类型:</label> |
| | | <label class="">{{mainParkingSpaceFeeInfo.typeCd}}</label> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | <div class="row"> |
| | | <div class="col-sm-4"> |
| | | <div class="form-group"> |
| | | <label class="col-form-label" >车牌号:</label> |
| | | <label class="">{{mainParkingSpaceFeeInfo.carNum}}</label> |
| | | </div> |
| | | </div> |
| | | <div class="col-sm-4"> |
| | | <div class="form-group"> |
| | | <label class="col-form-label" >车品牌:</label> |
| | | <label class="">{{mainParkingSpaceFeeInfo.carBrand}}</label> |
| | | </div> |
| | | </div> |
| | | <div class="col-sm-4"> |
| | | <div class="form-group"> |
| | | <label class="col-form-label">车类型:</label> |
| | | <label class="">{{mainParkingSpaceFeeInfo.carType}}</label> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="row"> |
| | | <div class="col-sm-4"> |
| | | <div class="form-group"> |
| | | <label class="col-form-label" >费用开始时间:</label> |
| | | <label class="">{{mainParkingSpaceFeeInfo.startTime}}</label> |
| | | </div> |
| | | </div> |
| | | <div class="col-sm-4"> |
| | | <div class="form-group"> |
| | | <label class="col-form-label" >费用到期时间:</label> |
| | | <label class="">{{mainParkingSpaceFeeInfo.endTime}}</label> |
| | | </div> |
| | | </div> |
| | | <div class="col-sm-4"> |
| | | <div class="form-group" v-if="mainParkingSpaceFeeInfo.amount != '-1.00'"> |
| | | <label class="col-form-label">费用金额:</label> |
| | | <label class="">{{mainParkingSpaceFeeInfo.amount}}</label> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <vc:create name="searchParkingSpace" |
| | | emitChooseRoom="viewMainParkingSpaceFee" |
| | | emitLoadData="propertyFee" |
| | | parkingSpaceFlag="SH" |
| | | ></vc:create> |
| | | <vc:create name="propertyPay"></vc:create> |
| | | </div> |
| New file |
| | |
| | | /** |
| | | 权限组 |
| | | **/ |
| | | (function(vc){ |
| | | |
| | | vc.extends({ |
| | | propTypes: { |
| | | feeName:vc.propTypes.string, |
| | | payName:vc.propTypes.string |
| | | }, |
| | | data:{ |
| | | mainParkingSpaceFeeInfo:{ |
| | | feeName:$props.feeName, |
| | | feeId:"", |
| | | psId:"", |
| | | num:"", |
| | | typeCd:"", |
| | | carNum:"", |
| | | carBrand:"", |
| | | carType:"", |
| | | startTime:"", |
| | | endTime:"", |
| | | amount:"-1.00" |
| | | } |
| | | }, |
| | | _initMethod:function(){ |
| | | |
| | | }, |
| | | _initEvent:function(){ |
| | | vc.on('viewMainParkingSpaceFee','chooseParkingSpace',function(_parkingSPace){ |
| | | vc.component.loadMainParkingSpaceFeeInfo(_parkingSPace); |
| | | }); |
| | | |
| | | vc.on('viewMainFee','reloadFee',function(_room){ |
| | | if(vc.component.mainParkingSpaceFeeInfo.roomId != ''){ |
| | | vc.component.loadMainFeeInfo({ |
| | | roomId:vc.component.mainParkingSpaceFeeInfo.roomId |
| | | }); |
| | | |
| | | } |
| | | }); |
| | | }, |
| | | methods:{ |
| | | |
| | | openSearchRoomModel:function(){ |
| | | vc.emit('searchRoom','openSearchRoomModel',{}); |
| | | }, |
| | | openPayModel:function(){ |
| | | vc.emit($props.payName,'openPayModel',{ |
| | | feeId:vc.component.mainParkingSpaceFeeInfo.feeId |
| | | }); |
| | | }, |
| | | loadMainParkingSpaceFeeInfo:function(_parkingSPace){ |
| | | //vc.copyObject(_fee,vc.component.mainParkingSpaceFeeInfo); |
| | | var param = { |
| | | params:{ |
| | | communityId:vc.getCurrentCommunity().communityId, |
| | | psId:_parkingSPace.psId, |
| | | } |
| | | }; |
| | | |
| | | //发送get请求 |
| | | vc.http.get('viewMainParkingSpaceFee', |
| | | 'getFee', |
| | | param, |
| | | function(json,res){ |
| | | var _fee =JSON.parse(json); |
| | | vc.copyObject(_fee,vc.component.mainParkingSpaceFeeInfo); |
| | | vc.emit('propertyFee','listFeeDetail',{ |
| | | feeId:_fee.feeId |
| | | }); |
| | | },function(errInfo,error){ |
| | | console.log('请求失败处理'); |
| | | } |
| | | ); |
| | | } |
| | | |
| | | } |
| | | }); |
| | | |
| | | })(window.vc); |
| New file |
| | |
| | | <!DOCTYPE html> |
| | | <html lang="en" |
| | | xmlns="http://www.w3.org/1999/xhtml" |
| | | xmlns:th="http://www.thymeleaf.org" |
| | | xmlns:vc="http://www.thymeleaf.org"> |
| | | <head> |
| | | <meta charset="UTF-8"/> |
| | | <title>物业费 |java110</title> |
| | | <vc:create name="commonTop"></vc:create> |
| | | <link rel="stylesheet" href="/css/bootstrap/bootstrap-datetimepicker.min.css"/> |
| | | </head> |
| | | <body> |
| | | <vc:create name="bodyTop"></vc:create> |
| | | <div id="wrapper"> |
| | | <vc:create name="menu"></vc:create> |
| | | |
| | | |
| | | <div id="page-wrapper" class="gray-bg dashbard-1"> |
| | | <div class="row border-bottom"> |
| | | <vc:create name="nav"></vc:create> |
| | | </div> |
| | | <!-- id="component" --> |
| | | <div class="wrapper wrapper-content animated fadeInRight"> |
| | | <vc:create name="parkingSpaceFee"></vc:create> |
| | | </div> |
| | | |
| | | <vc:create name="copyright"></vc:create> |
| | | |
| | | </div> |
| | | </div> |
| | | <script src="/js/bootstrap/bootstrap-datetimepicker.min.js"></script> |
| | | <vc:create name="commonBottom"></vc:create> |
| | | </body> |
| | | </html> |
| | |
| | | * @Version 1.0 |
| | | * add by wuxw 2019/6/2 |
| | | **/ |
| | | public class ApiFeeVo extends Vo { |
| | | public class ApiFeeVo extends ApiMainFeeVo { |
| | | |
| | | |
| | | private String feeId; |
| | | |
| | | private String floorNum; |
| | | private String floorId; |
| | | private String unitId; |
| | |
| | | private String ownerId; |
| | | private String ownerName; |
| | | private String link; |
| | | private String startTime; |
| | | private String endTime; |
| | | private String amount; |
| | | private String builtUpArea; |
| | | |
| | | |
| | | public String getFeeId() { |
| | | return feeId; |
| | | } |
| | | |
| | | public void setFeeId(String feeId) { |
| | | this.feeId = feeId; |
| | | } |
| | | |
| | | public String getFloorNum() { |
| | | return floorNum; |
| | |
| | | this.link = link; |
| | | } |
| | | |
| | | public String getStartTime() { |
| | | return startTime; |
| | | } |
| | | |
| | | public void setStartTime(String startTime) { |
| | | this.startTime = startTime; |
| | | } |
| | | |
| | | public String getEndTime() { |
| | | return endTime; |
| | | } |
| | | |
| | | public void setEndTime(String endTime) { |
| | | this.endTime = endTime; |
| | | } |
| | | |
| | | public String getAmount() { |
| | | return amount; |
| | | } |
| | | |
| | | public void setAmount(String amount) { |
| | | this.amount = amount; |
| | | } |
| | | |
| | | public String getUnitId() { |
| | | return unitId; |
| | |
| | | public void setBuiltUpArea(String builtUpArea) { |
| | | this.builtUpArea = builtUpArea; |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | package com.java110.vo.api; |
| | | |
| | | import com.java110.vo.Vo; |
| | | |
| | | /** |
| | | * @ClassName ApiMainFeeVo |
| | | * @Description TODO |
| | | * @Author wuxw |
| | | * @Date 2019/6/12 21:59 |
| | | * @Version 1.0 |
| | | * add by wuxw 2019/6/12 |
| | | **/ |
| | | public class ApiMainFeeVo extends Vo { |
| | | |
| | | private String feeId; |
| | | |
| | | private String startTime; |
| | | private String endTime; |
| | | private String amount; |
| | | |
| | | public String getFeeId() { |
| | | return feeId; |
| | | } |
| | | |
| | | public void setFeeId(String feeId) { |
| | | this.feeId = feeId; |
| | | } |
| | | |
| | | |
| | | public String getStartTime() { |
| | | return startTime; |
| | | } |
| | | |
| | | public void setStartTime(String startTime) { |
| | | this.startTime = startTime; |
| | | } |
| | | |
| | | public String getEndTime() { |
| | | return endTime; |
| | | } |
| | | |
| | | public void setEndTime(String endTime) { |
| | | this.endTime = endTime; |
| | | } |
| | | |
| | | public String getAmount() { |
| | | return amount; |
| | | } |
| | | |
| | | public void setAmount(String amount) { |
| | | this.amount = amount; |
| | | } |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | package com.java110.vo.api; |
| | | |
| | | /** |
| | | * @ClassName ApiFeeVo |
| | | * @Description TODO |
| | | * @Author wuxw |
| | | * @Date 2019/6/2 18:05 |
| | | * @Version 1.0 |
| | | * add by wuxw 2019/6/2 |
| | | **/ |
| | | public class ApiParkingSpaceFeeVo extends ApiMainFeeVo { |
| | | |
| | | |
| | | |
| | | |
| | | private String psId; |
| | | private String num; |
| | | private String typeCd; |
| | | private String carNum; |
| | | private String carBrand; |
| | | private String carType; |
| | | |
| | | |
| | | public String getPsId() { |
| | | return psId; |
| | | } |
| | | |
| | | public void setPsId(String psId) { |
| | | this.psId = psId; |
| | | } |
| | | |
| | | public String getNum() { |
| | | return num; |
| | | } |
| | | |
| | | public void setNum(String num) { |
| | | this.num = num; |
| | | } |
| | | |
| | | public String getTypeCd() { |
| | | return typeCd; |
| | | } |
| | | |
| | | public void setTypeCd(String typeCd) { |
| | | this.typeCd = typeCd; |
| | | } |
| | | |
| | | public String getCarNum() { |
| | | return carNum; |
| | | } |
| | | |
| | | public void setCarNum(String carNum) { |
| | | this.carNum = carNum; |
| | | } |
| | | |
| | | public String getCarBrand() { |
| | | return carBrand; |
| | | } |
| | | |
| | | public void setCarBrand(String carBrand) { |
| | | this.carBrand = carBrand; |
| | | } |
| | | |
| | | public String getCarType() { |
| | | return carType; |
| | | } |
| | | |
| | | public void setCarType(String carType) { |
| | | this.carType = carType; |
| | | } |
| | | } |
| | |
| | | public static final String SERVICE_CODE_QUERY_FEE_CONFIG = "fee.queryFeeConfig"; |
| | | public static final String SERVICE_CODE_QUERY_FEE_DETAIL = "fee.queryFeeDetail"; |
| | | |
| | | |
| | | |
| | | //查询费用配置 |
| | | public static final String SERVICE_CODE_QUERY_FEE = "fee.queryFee"; |
| | | |
| | | //查询费用配置 根据停车位 |
| | | public static final String SERVICE_CODE_QUERY_FEE_BY_PARKING_SPACE = "fee.queryFeeByParkingSpace"; |
| | | |
| | | //保存费用配置 |
| | | public static final String SERVICE_CODE_SAVE_FEE_CONFIG = "fee.saveFeeConfig"; |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 数组只有一条数据 |
| | | * |
| | | * @param jsonArray |
| | | * @param message |
| | | */ |
| | | public static void listOnlyOne(List jsonArray, String message) { |
| | | |
| | | Assert.notNull(jsonArray, message); |
| | | |
| | | if (jsonArray.size() != 1) { |
| | | throw new IllegalArgumentException(message); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 判断list 是否为空 |
| | | * |
| | |
| | | </if> |
| | | <if test="state !=null and state != ''"> |
| | | and t.state= #{state} |
| | | </if> |
| | | </if> |
| | | |
| | | <if test="communityId !=null and communityId != ''"> |
| | | and t.community_id= #{communityId} |
| | | </if> |
| | |
| | | </if> |
| | | <if test="state !=null and state != ''"> |
| | | and t.state= #{state} |
| | | </if> |
| | | </if> |
| | | <if test="states != null and states != null"> |
| | | and t.state in |
| | | <foreach collection="states" item="item" open="(" close=")" separator=","> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | <if test="communityId !=null and communityId != ''"> |
| | | and t.community_id= #{communityId} |
| | | </if> |
| | |
| | | </if> |
| | | <if test="userId !=null and userId != ''"> |
| | | and t.user_id= #{userId} |
| | | </if> |
| | | </if> |
| | | |
| | | <if test="page != -1 and page != null "> |
| | | limit #{page}, #{row} |
| | | </if> |
| | |
| | | </if> |
| | | <if test="state !=null and state != ''"> |
| | | and t.state= #{state} |
| | | </if> |
| | | </if> |
| | | <if test="states != null and states != null"> |
| | | and t.state in |
| | | <foreach collection="states" item="item" open="(" close=")" separator=","> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | <if test="communityId !=null and communityId != ''"> |
| | | and t.community_id= #{communityId} |
| | | </if> |