优化费用详情页面

This commit is contained in:
wuxw 2025-03-09 18:01:32 +08:00
parent bf505e36eb
commit 0ddb8e8a86
22 changed files with 1259 additions and 7 deletions

View File

@ -11,6 +11,7 @@
ownerId: '',
ownerName:'',
carNum: '',
memberId:'',
}
},
_initMethod: function () {
@ -18,6 +19,7 @@
_initEvent: function () {
vc.on('aRoomDetailCar', 'switch', function (_data) {
$that.aRoomDetailCarInfo.ownerId = _data.ownerId;
$that.aRoomDetailCarInfo.memberId = _data.carId;
$that.aRoomDetailCarInfo.ownerName = _data.ownerName;
$that._loadARoomDetailCarData(DEFAULT_PAGE, DEFAULT_ROWS);
@ -36,6 +38,7 @@
params: {
ownerId: $that.aRoomDetailCarInfo.ownerId,
carNum: $that.aRoomDetailCarInfo.carNum,
memberId: $that.aRoomDetailCarInfo.memberId,
page: _page,
row: _row
}

View File

@ -10,7 +10,8 @@
total: 0,
records: 1,
feeDetails: [],
ownerId: ''
ownerId: '',
feeId:'',
}
},
_initMethod: function () {
@ -41,6 +42,7 @@
page: _page,
row: _row,
ownerId: $that.aRoomDetailHisFeeInfo.ownerId,
feeId:$that.aRoomDetailHisFeeInfo.feeId,
}
};
@ -69,7 +71,8 @@
total: 0,
records: 1,
feeDetails: [],
ownerId: ''
ownerId: '',
feeId:''
}
},
}

View File

@ -12,6 +12,7 @@
total: 0,
records: 1,
roomId: '',
feeId: '',
roomName: '',
ownerName: '',
floorNum: '',
@ -43,7 +44,9 @@
params: {
page: _page,
row: _row,
objId: $that.aRoomDetailMeterWaterLogInfo.roomId
objId: $that.aRoomDetailMeterWaterLogInfo.roomId,
feeId: $that.aRoomDetailMeterWaterLogInfo.feeId,
}
};
//发送get请求
@ -78,6 +81,7 @@
total: 0,
records: 1,
roomId: '',
feeId: '',
ownerName: '',
roomName: '',
floorNum: '',

View File

@ -24,7 +24,7 @@
});
vc.on('aRoomDetailOwner', 'paginationPlus', 'page_event',
function (_currentPage) {
vc.component._loadARoomDetailOwnerData(_currentPage, DEFAULT_ROWS);
$that._loadARoomDetailOwnerData(_currentPage, DEFAULT_ROWS);
});
},
methods: {

View File

@ -9,6 +9,7 @@
aRoomDetailReceiptInfo: {
feeReceipts: [],
payObjId: '',
feeId:'',
total: '',
records: '',
selectReceipts: [],
@ -24,6 +25,7 @@
return;
}
$that.aRoomDetailReceiptInfo.payObjId = _param.ownerId;
$that.aRoomDetailReceiptInfo.feeId = _param.feeId;
$that._listARoomDetailReceipt(DEFAULT_PAGE, DEFAULT_ROWS);
});
vc.on('aRoomDetailReceipt', 'paginationPlus', 'page_event',
@ -40,6 +42,7 @@
page: _page,
row: _rows,
payObjId: $that.aRoomDetailReceiptInfo.payObjId,
feeId: $that.aRoomDetailReceiptInfo.feeId,
}
};
//发送get请求

View File

@ -9,6 +9,7 @@
aRoomDetailRoomInfo: {
rooms: [],
ownerId: '',
roomId:'',
roomNum: '',
allOweFeeAmount: '0'
}
@ -18,6 +19,7 @@
_initEvent: function () {
vc.on('aRoomDetailRoom', 'switch', function (_data) {
$that.aRoomDetailRoomInfo.ownerId = _data.ownerId;
$that.aRoomDetailRoomInfo.roomId = _data.roomId;
$that._loadARoomDetailRoomData(DEFAULT_PAGE, DEFAULT_ROWS);
});
vc.on('aRoomDetailRoom', 'paginationPlus', 'page_event',
@ -37,6 +39,7 @@
params: {
ownerId: $that.aRoomDetailRoomInfo.ownerId,
roomNum: $that.aRoomDetailRoomInfo.roomNum,
roomId: $that.aRoomDetailRoomInfo.roomId,
page: _page,
row: _row
}

View File

@ -9,7 +9,7 @@
</select>
</div>
<div class="col-lg-7 text-right">
</div>
</div>
<div class="margin-top">
@ -84,7 +84,9 @@
</td>
<td class="text-center">{{fee.stateName}}</td>
<td class="text-center">
<button type="button" class="btn btn-white btn-sm" style="margin-left:10px"
v-on:click="_toAdminFeeDetail(fee)">详情
</button>
</td>
</tr>
</tbody>

View File

@ -101,7 +101,9 @@
_changeContractConfigId:function() {
$that._loadARoomDetailRoomFeeData(DEFAULT_PAGE, DEFAULT_ROWS);
},
_toAdminFeeDetail:function(_fee){
vc.jumpToPage('/#/pages/fee/adminFeeDetail?feeId='+_fee.feeId);
}
}

View File

@ -0,0 +1,82 @@
<div class="">
<div class="margin-top">
<table class="footable table table-stripped toggle-arrow-tiny" data-page-size="15">
<thead>
<tr>
<th class="text-center">
<vc:i18n name="费用类型" namespace="aFeeDetailConfig"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="收费项目" namespace="aFeeDetailConfig"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="费用标识" namespace="aFeeDetailConfig"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="催缴类型" namespace="aFeeDetailConfig"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="付费类型" namespace="aFeeDetailConfig"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="缴费周期" namespace="aFeeDetailConfig"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="单位" namespace="aFeeDetailConfig"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="公式" namespace="aFeeDetailConfig"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="计费单价" namespace="aFeeDetailConfig"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="附加/固定费用" namespace="aFeeDetailConfig"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="账户抵扣" namespace="aFeeDetailConfig"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="手机缴费" namespace="aFeeDetailConfig"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="保留小数位" namespace="aFeeDetailConfig"></vc:i18n>
</th>
</tr>
</thead>
<tbody>
<tr v-for="feeConfig in aFeeDetailConfigInfo.feeConfigs">
<td class="text-center">{{feeConfig.feeTypeCdName}}</td>
<td class="text-center">{{feeConfig.feeName}}</td>
<td class="text-center">{{feeConfig.feeFlagName}}</td>
<td class="text-center">{{feeConfig.billTypeName}}</td>
<td class="text-center">{{feeConfig.paymentCd == '1200' ? '预付费':'后付费'}}</td>
<td class="text-center">{{feeConfig.paymentCycle}}</td>
<td class="text-center">{{feeConfig.units}}
</td>
<td class="text-center">{{feeConfig.computingFormulaName}}
</td>
<td class="text-center">{{feeConfig.computingFormula == '2002' ?
'-':feeConfig.squarePrice}}
</td>
<td class="text-center">{{feeConfig.additionalAmount}}</td>
<td class="text-center">{{feeConfig.deductFrom == 'Y' ? '是':'否'}}</td>
<td class="text-center">{{feeConfig.payOnline == 'Y' ? '是':'否'}}</td>
<td class="text-center">{{feeConfig.scale}}</td>
</tr>
</tbody>
</table>
<!-- 分页 -->
<div class="row">
<div class="col-sm-4">
</div>
<div class="col-sm-8">
<vc:create namespace="aFeeDetailConfig" path="frame/paginationPlus"></vc:create>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,62 @@
/**
入驻小区
**/
(function (vc) {
var DEFAULT_PAGE = 1;
var DEFAULT_ROWS = 10;
vc.extends({
data: {
aFeeDetailConfigInfo: {
feeConfigs: [],
configId:'',
}
},
_initMethod: function () {
},
_initEvent: function () {
vc.on('aFeeDetailConfig', 'switch', function (_data) {
$that.aFeeDetailConfigInfo.configId = _data.configId;
$that._loadAFeeDetailConfigData(DEFAULT_PAGE, DEFAULT_ROWS);
});
vc.on('aFeeDetailConfig', 'paginationPlus', 'page_event',
function (_currentPage) {
$that._loadAFeeDetailConfigData(_currentPage, DEFAULT_ROWS);
});
vc.on('aFeeDetailConfig', 'notify', function (_data) {
$that._loadAFeeDetailConfigData(DEFAULT_PAGE,DEFAULT_ROWS);
})
},
methods: {
_loadAFeeDetailConfigData: function (_page, _row) {
let param = {
params: {
configId:$that.aFeeDetailConfigInfo.configId,
page:_page,
row:_row
}
};
//发送get请求
vc.http.apiGet('/feeConfig.queryAdminFeeConfigs',
param,
function (json) {
let _json = JSON.parse(json);
$that.aFeeDetailConfigInfo.feeConfigs = _json.feeConfigs;
vc.emit('aFeeDetailConfig', 'paginationPlus', 'init', {
total: _json.records,
dataCount: _json.total,
currentPage: _page
});
},
function () {
console.log('请求失败处理');
}
);
},
//查询
_qureyAFeeDetailConfig: function () {
$that._loadAFeeDetailConfigData(DEFAULT_PAGE, DEFAULT_ROWS);
},
}
});
})(window.vc);

View File

@ -0,0 +1,79 @@
<div class="">
<div class="margin-top">
<table class="footable table table-stripped toggle-arrow-tiny" data-page-size="15">
<thead>
<tr>
<th class="text-center">
<vc:i18n name="房屋(楼栋-单元-房屋)" namespace="aFeeDetailDiscount"></vc:i18n>
<th class="text-center">
<vc:i18n name="折扣ID" namespace="aFeeDetailDiscount"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="折扣名称" namespace="aFeeDetailDiscount"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="申请类型" namespace="aFeeDetailDiscount"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="申请人" namespace="aFeeDetailDiscount"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="申请电话" namespace="aFeeDetailDiscount"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="开始时间" namespace="aFeeDetailDiscount"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="结束时间" namespace="aFeeDetailDiscount"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="状态" namespace="aFeeDetailDiscount"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="创建时间" namespace="aFeeDetailDiscount"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="使用状态" namespace="aFeeDetailDiscount"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="返还类型" namespace="aFeeDetailDiscount"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="返还金额" namespace="aFeeDetailDiscount"></vc:i18n>
</th>
</tr>
</thead>
<tbody>
<tr v-for="applyRoomDiscount in aFeeDetailDiscountInfo.applyRoomDiscounts">
<td class="text-center">{{applyRoomDiscount.roomName}}</td>
<td class="text-center">{{applyRoomDiscount.discountId}}</td>
<td class="text-center">{{applyRoomDiscount.discountName}}</td>
<td class="text-center">{{applyRoomDiscount.applyTypeName}}</td>
<td class="text-center">{{applyRoomDiscount.createUserName}}</td>
<td class="text-center">{{applyRoomDiscount.createUserTel}}</td>
<td class="text-center">{{applyRoomDiscount.startTime}}</td>
<td class="text-center">{{applyRoomDiscount.endTime}}</td>
<td class="text-center">{{applyRoomDiscount.stateName}}</td>
<td class="text-center">{{applyRoomDiscount.createTime}}</td>
<td class="text-center">{{applyRoomDiscount.inUse == '0' ? '未使用' : '已使用'}}</td>
<td class="text-center" v-if="applyRoomDiscount.discountId">
{{applyRoomDiscount.returnWay == '1002' ? '账户余额' : '折扣'}}
</td>
<td class="text-center" v-if="!applyRoomDiscount.discountId">-</td>
<td class="text-center">
{{applyRoomDiscount.returnAmount ? applyRoomDiscount.returnAmount : '-'}}
</td>
</tr>
</tbody>
</table>
<!-- 分页 -->
<div class="row">
<div class="col-sm-4">
</div>
<div class="col-sm-8">
<vc:create namespace="aFeeDetailDiscount" path="frame/paginationPlus"></vc:create>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,59 @@
/**
入驻小区
**/
(function (vc) {
var DEFAULT_PAGE = 1;
var DEFAULT_ROWS = 10;
vc.extends({
data: {
aFeeDetailDiscountInfo: {
applyRoomDiscounts: [],
feeId: '',
}
},
_initMethod: function () {
},
_initEvent: function () {
vc.on('aFeeDetailDiscount', 'switch', function (_data) {
$that.aFeeDetailDiscountInfo.feeId = _data.feeId;
$that._loadAFeeDetailDiscountData(DEFAULT_PAGE, DEFAULT_ROWS);
});
vc.on('aFeeDetailDiscount', 'paginationPlus', 'page_event',
function (_currentPage) {
$that._loadAFeeDetailDiscountData(_currentPage, DEFAULT_ROWS);
});
},
methods: {
_loadAFeeDetailDiscountData: function (_page, _row) {
let param = {
params: {
feeId: $that.aFeeDetailDiscountInfo.feeId,
page: _page,
row: _row
}
};
//发送get请求
vc.http.apiGet('/fee.queryAdminApplyRoomDiscount',
param,
function (json) {
var _roomInfo = JSON.parse(json);
$that.aFeeDetailDiscountInfo.applyRoomDiscounts = _roomInfo.data;
vc.emit('aFeeDetailDiscount', 'paginationPlus', 'init', {
total: _roomInfo.records,
dataCount: _roomInfo.total,
currentPage: _page
});
},
function () {
console.log('请求失败处理');
}
);
},
//查询
_qureyAFeeDetailDiscount: function () {
$that._loadAFeeDetailDiscountData(DEFAULT_PAGE, DEFAULT_ROWS);
},
}
});
})(window.vc);

View File

@ -0,0 +1,82 @@
<div class="">
<div class="row margin-top">
<div class="col-lg-2 ">
<select class="custom-select custom-select-sm" v-model="aFeeDetailFeeObjInfo.payerObjType">
<option selected value="">{{vc.i18n('请选择费用对象','aFeeDetailFeeObj')}}</option>
<option value="3333">{{vc.i18n('房屋','aFeeDetailFeeObj')}}</option>
<option value="6666">{{vc.i18n('车辆','aFeeDetailFeeObj')}}</option>
<option value="7777">{{vc.i18n('合同','aFeeDetailFeeObj')}}</option>
</select>
</div>
<div class="col-lg-2 padding-lr-xs">
<button type="button" class="btn btn-primary btn-sm" style="margin-left:10px"
v-on:click="_qureyAFeeDetailFeeObj()">
查询
</button>
</div>
</div>
<div>
<table class="footable table table-stripped toggle-arrow-tiny" data-page-size="15">
<thead>
<tr>
<th class="text-center">
<vc:i18n name="费用编号" namespace="aFeeDetailFeeObj"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="对象类型" namespace="aFeeDetailFeeObj"></vc:i18n>
</th>
<th data-hide="phone" class="text-center">
<vc:i18n name="对象名称" namespace="aFeeDetailFeeObj"></vc:i18n>
</th>
<th data-hide="phone" class="text-center">
<vc:i18n name="业主名称" namespace="aFeeDetailFeeObj"></vc:i18n>
</th>
<th data-hide="phone" class="text-center">
<vc:i18n name="手机号" namespace="aFeeDetailFeeObj"></vc:i18n>
</th>
<th data-hide="phone" class="text-center">
<vc:i18n name="创建时间" namespace="aFeeDetailFeeObj"></vc:i18n>
</th>
</tr>
</thead>
<tbody>
<tr v-for="feeObj in aFeeDetailFeeObjInfo.feeObjs">
<td class="text-center">
{{feeObj.feeId}}
</td>
<td class="text-center" v-if="feeObj.payerObjType == '3333'">
房屋
</td>
<td class="text-center" v-else-if="feeObj.payerObjType == '6666'">
车辆
</td>
<td class="text-center" v-else>
合同
</td>
<td class="text-center">
{{feeObj.payerObjName}}
</td>
<td class="text-center">
{{feeObj.ownerName}}
</td>
<td class="text-center">
{{feeObj.ownerTel}}
</td>
<td class="text-center">
{{feeObj.createTime}}
</td>
</tr>
</tbody>
</table>
<!-- 分页 -->
<div class="row">
<div class="col-sm-4">
</div>
<div class="col-sm-8">
<vc:create namespace="aFeeDetailFeeObj" path="frame/paginationPlus"></vc:create>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,61 @@
/**
入驻小区
**/
(function (vc) {
var DEFAULT_PAGE = 1;
var DEFAULT_ROWS = 10;
vc.extends({
data: {
aFeeDetailFeeObjInfo: {
feeObjs: [],
configId:'',
payerObjType:''
}
},
_initMethod: function () {
},
_initEvent: function () {
vc.on('aFeeDetailFeeObj', 'switch', function (_data) {
$that.aFeeDetailFeeObjInfo.configId = _data.configId;
$that._loadAFeeDetailFeeObjData(DEFAULT_PAGE, DEFAULT_ROWS);
});
vc.on('aFeeDetailFeeObj', 'paginationPlus', 'page_event',
function (_currentPage) {
$that._loadAFeeDetailFeeObjData(_currentPage, DEFAULT_ROWS);
});
},
methods: {
_loadAFeeDetailFeeObjData: function (_page, _row) {
let param = {
params: {
configId:$that.aFeeDetailFeeObjInfo.configId,
payerObjType:$that.aFeeDetailFeeObjInfo.payerObjType,
page:_page,
row:_row
}
};
//发送get请求
vc.http.apiGet('/feeConfig.listAdminConfigFeeObjs',
param,
function (json) {
var _roomInfo = JSON.parse(json);
$that.aFeeDetailFeeObjInfo.feeObjs = _roomInfo.data;
vc.emit('aFeeDetailFeeObj', 'paginationPlus', 'init', {
total: _roomInfo.records,
dataCount: _roomInfo.total,
currentPage: _page
});
},
function () {
console.log('请求失败处理');
}
);
},
//查询
_qureyAFeeDetailFeeObj: function () {
$that._loadAFeeDetailFeeObjData(DEFAULT_PAGE, DEFAULT_ROWS);
},
}
});
})(window.vc);

View File

@ -0,0 +1,62 @@
<div class="">
<div class="row ">
<div class="col-lg-12 text-right"></div>
</div>
<div class="margin-top">
<table class="footable table table-stripped toggle-arrow-tiny" data-page-size="15">
<thead>
<tr>
<tr>
<th class="text-center">
<vc:i18n name="费用项" namespace="aFeeDetailHis"></vc:i18n>
</th>
<th data-hide="phone" class="text-center">
<vc:i18n name="建账时间" namespace="aFeeDetailHis"></vc:i18n>
</th>
<th data-hide="phone" class="text-center">
<vc:i18n name="计费起始时间" namespace="aFeeDetailHis"></vc:i18n>
</th>
<th data-hide="phone" class="text-center">
<vc:i18n name="动作" namespace="aFeeDetailHis"></vc:i18n>
</th>
<th data-hide="phone" class="text-center">
<vc:i18n name="操作人" namespace="aFeeDetailHis"></vc:i18n>
</th>
<th data-hide="phone" class="text-center">
<vc:i18n name="操作时间" namespace="aFeeDetailHis"></vc:i18n>
</th>
</tr>
</tr>
</thead>
<tbody>
<tr v-for="fee in aFeeDetailHisInfo.fees">
<td class="text-center">{{fee.feeName}}
<span v-if="fee.payerObjName">({{fee.payerObjName}})</span>
</td>
<td class="text-center">
{{fee.startTime || '-'}}
</td>
<td class="text-center">
{{fee.endTime || '-'}}
</td>
<td class="text-center">
{{_getFeeHisOperate(fee)}}
</td>
<td class="text-center">
{{fee.userName || '-'}}
</td>
<td class="text-center">
{{fee.createTime}}
</td>
</tr>
</tbody>
</table>
<!-- 分页 -->
<div class="row">
<div class="col-sm-4"></div>
<div class="col-sm-8">
<vc:create namespace="aFeeDetailHis" path="frame/paginationPlus"></vc:create>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,101 @@
/**
入驻小区
**/
(function (vc) {
var DEFAULT_PAGE = 1;
var DEFAULT_ROWS = 10;
vc.extends({
data: {
aFeeDetailHisInfo: {
fees: [],
feeId: '',
staffNameLike: '',
feeNameLike: '',
payerObjName: '',
logStartTime: '',
logEndTime: '',
}
},
_initMethod: function () {
},
_initEvent: function () {
vc.on('aFeeDetailHis', 'switch', function (_data) {
$that.aFeeDetailHisInfo.feeId = _data.feeId;
$that.aFeeDetailHisInfo.staffNameLike = _data.staffNameLike;
$that.aFeeDetailHisInfo.feeNameLike = _data.feeNameLike;
$that.aFeeDetailHisInfo.payerObjName = _data.payerObjName;
$that.aFeeDetailHisInfo.logStartTime = _data.logStartTime;
$that.aFeeDetailHisInfo.logEndTime = _data.logEndTime;
$that._loadAFeeDetailHisData(DEFAULT_PAGE, DEFAULT_ROWS);
});
vc.on('aFeeDetailHis', 'notify',
function (_data) {
$that._loadAFeeDetailHisData(DEFAULT_PAGE, DEFAULT_ROWS);
});
vc.on('aFeeDetailHis', 'paginationPlus', 'page_event',
function (_currentPage) {
vc.component._loadAFeeDetailHisData(_currentPage, DEFAULT_ROWS);
});
},
methods: {
_loadAFeeDetailHisData: function (_page, _row) {
let param = {
params: {
feeId: $that.aFeeDetailHisInfo.feeId,
staffNameLike: $that.aFeeDetailHisInfo.staffNameLike,
feeNameLike: $that.aFeeDetailHisInfo.feeNameLike,
payerObjName: $that.aFeeDetailHisInfo.payerObjName,
logStartTime: $that.aFeeDetailHisInfo.logStartTime,
logEndTime: $that.aFeeDetailHisInfo.logEndTime,
page: _page,
row: _row
}
};
//发送get请求
vc.http.apiGet('/fee.queryAdminHisFee',
param,
function (json) {
let _roomInfo = JSON.parse(json);
vc.component.aFeeDetailHisInfo.fees = _roomInfo.data;
vc.emit('aFeeDetailHis', 'paginationPlus', 'init', {
total: _roomInfo.records,
dataCount: _roomInfo.total,
currentPage: _page
});
},
function () {
console.log('请求失败处理');
}
);
},
//查询
_qureyAFeeDetailHis: function () {
$that._loadAFeeDetailHisData(DEFAULT_PAGE, DEFAULT_ROWS);
},
_getFeeHisOperate: function (_fee) {
let _feeCount = 0;
$that.aFeeDetailHisInfo.fees.forEach(item => {
if (_fee.bId == item.bId) {
_feeCount += 1;
}
});
if (_feeCount <= 1) {
if (_fee.operate == 'ADD') {
return '添加';
}
if (_fee.operate == 'DEL') {
return '删除';
}
return "-"
}
if (_fee.operate == 'ADD') {
return '修改(新)';
}
if (_fee.operate == 'DEL') {
return '修改(旧)';
}
return "-"
}
}
});
})(window.vc);

View File

@ -0,0 +1,62 @@
<div class="">
<div class="margin-top">
<table class="footable table table-stripped toggle-arrow-tiny" data-page-size="15">
<thead>
<tr>
<th class="text-center">
<vc:i18n name="楼栋编号" namespace="aFeeDetailImport"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="单元编号" namespace="aFeeDetailImport"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="房屋编号" namespace="aFeeDetailImport"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="费用名称" namespace="aFeeDetailImport"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="开始时间" namespace="aFeeDetailImport"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="结束时间" namespace="aFeeDetailImport"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="总金额" namespace="aFeeDetailImport"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="备注" namespace="aFeeDetailImport"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="状态" namespace="aFeeDetailImport"></vc:i18n>
</th>
</tr>
</thead>
<tbody>
<tr v-for="detail in aFeeDetailImportInfo.importFeeDetails">
<td class="text-center">{{detail.floorNum}}</td>
<td class="text-center">{{detail.unitNum}}</td>
<td class="text-center">{{detail.roomNum}}</td>
<td class="text-center">{{detail.feeName}}</td>
<td class="text-center">{{detail.startTime}}</td>
<td class="text-center">{{detail.endTime}}</td>
<td class="text-center">{{detail.amount}}</td>
<td class="text-center">{{detail.remark}}</td>
<td class="text-center">
<span class="badge badge-success" v-if="detail.state == '1000'">导入成功</span>
<span class="badge badge-danger" v-else>导入失败</span>
</td>
</tr>
</tbody>
</table>
<!-- 分页 -->
<div class="row">
<div class="col-sm-4">
</div>
<div class="col-sm-8">
<vc:create namespace="aFeeDetailImport" path="frame/paginationPlus"></vc:create>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,59 @@
/**
入驻小区
**/
(function (vc) {
var DEFAULT_PAGE = 1;
var DEFAULT_ROWS = 10;
vc.extends({
data: {
aFeeDetailImportInfo: {
importFeeDetails: [],
feeId: '',
}
},
_initMethod: function () {
},
_initEvent: function () {
vc.on('aFeeDetailImport', 'switch', function (_data) {
$that.aFeeDetailImportInfo.feeId = _data.feeId;
$that._loadAFeeDetailImportData(DEFAULT_PAGE, DEFAULT_ROWS);
});
vc.on('aFeeDetailImport', 'paginationPlus', 'page_event',
function (_currentPage) {
vc.component._loadAFeeDetailImportData(_currentPage, DEFAULT_ROWS);
});
},
methods: {
_loadAFeeDetailImportData: function (_page, _row) {
let param = {
params: {
feeId: $that.aFeeDetailImportInfo.feeId,
page: _page,
row: _row
}
};
//发送get请求
vc.http.apiGet('/fee.queryAdminImportFeeDetail',
param,
function (json) {
var _roomInfo = JSON.parse(json);
vc.component.aFeeDetailImportInfo.importFeeDetails = _roomInfo.data;
vc.emit('aFeeDetailImport', 'paginationPlus', 'init', {
total: _roomInfo.records,
dataCount: _roomInfo.total,
currentPage: _page
});
},
function () {
console.log('请求失败处理');
}
);
},
//查询
_qureyAFeeDetailImport: function () {
$that._loadAFeeDetailImportData(DEFAULT_PAGE, DEFAULT_ROWS);
},
}
});
})(window.vc);

View File

@ -0,0 +1,57 @@
<div>
<div >
<div class="col-lg-12 text-right">
</div>
<table class="footable table table-stripped toggle-arrow-tiny margin-top" data-page-size="15">
<thead>
<tr>
<th class="text-center">
<vc:i18n name="父费用ID" namespace="aFeeDetailSub"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="子费用ID" namespace="aFeeDetailSub"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="费用名称" namespace="aFeeDetailSub"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="费用对象" namespace="aFeeDetailSub"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="计费时间段" namespace="aFeeDetailSub"></vc:i18n>
</th>
<th class="text-center">
<vc:i18n name="拆分时间" namespace="aFeeDetailSub"></vc:i18n>
</th>
</tr>
</thead>
<tbody>
<tr v-for="sub in aFeeDetailSubInfo.subs">
<td class="text-center">
<a target="_blank" :href="'/#/pages/fee/adminFeeDetail?feeId='+sub.preFeeId">{{sub.preFeeId}}</a>
</td>
<td class="text-center">
<a target="_blank" :href="'/#/pages/fee/adminFeeDetail?feeId='+sub.feeId">{{sub.feeId}}</a>
</td>
<td class="text-center">{{sub.feeName}}</td>
<td class="text-center">{{sub.payerObjName}}</td>
<td class="text-center">{{vc.dateFormat(sub.endTime)}}</br>
~{{vc.dateFormat(sub.maxTime)}}
</td>
<td class="text-center">{{sub.createTime}}</td>
</tr>
</tbody>
</table>
<div class="row">
<div class="col-sm-12 float-right">
<vc:create namespace="aFeeDetailSub" path="frame/paginationPlus"></vc:create>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,95 @@
/**
入驻小区
**/
(function(vc) {
var DEFAULT_PAGE = 1;
var DEFAULT_ROWS = 10;
vc.extends({
data: {
aFeeDetailSubInfo: {
subs: [],
feeId: '',
total: '',
records: '',
fee:{}
}
},
_initMethod: function() {},
_initEvent: function() {
//切换 至费用页面
vc.on('aFeeDetailSub', 'switch', function(_param) {
if (_param.feeId == '') {
return;
}
vc.copyObject(_param, $that.aFeeDetailSubInfo);
$that._listAFeeDetailSub(DEFAULT_PAGE, DEFAULT_ROWS);
$that._loadAFeeDetailSubFeeInfo();
});
vc.on('aFeeDetailSub', 'loadSub', function() {
$that._listAFeeDetailSub(DEFAULT_PAGE, DEFAULT_ROWS);
$that._loadAFeeDetailSubFeeInfo();
});
vc.on('aFeeDetailSub', 'paginationPlus', 'page_event',
function(_currentPage) {
$that._listAFeeDetailSub(_currentPage, DEFAULT_ROWS);
});
},
methods: {
_listAFeeDetailSub: function(_page, _rows) {
let param = {
params: {
page: _page,
row: _rows,
pcFeeId: $that.aFeeDetailSubInfo.feeId,
}
};
//发送get请求
vc.http.apiGet('/feeSub.listAdminPayFeeSub',
param,
function(json, res) {
let _json = JSON.parse(json);
$that.aFeeDetailSubInfo.total = _json.total;
$that.aFeeDetailSubInfo.records = _json.records;
$that.aFeeDetailSubInfo.subs = _json.data;
vc.emit('aFeeDetailSub', 'paginationPlus', 'init', {
total: $that.aFeeDetailSubInfo.records,
dataCount: $that.aFeeDetailSubInfo.total,
currentPage: _page
});
},
function(errInfo, error) {
console.log('请求失败处理');
}
);
},
_loadAFeeDetailSubFeeInfo: function () {
let param = {
params: {
page: 1,
row: 1,
feeId: $that.aFeeDetailSubInfo.feeId,
}
};
//发送get请求
vc.http.apiGet('/fee.listAdminFee',
param,
function (json) {
let _feeInfo = JSON.parse(json);
// 员工列表 和 岗位列表匹配
$that.aFeeDetailSubInfo.fee = _feeInfo.fees[0];
},
function () {
console.log('请求失败处理');
}
);
},
_mergeFee:function(_fee){
vc.emit('mergeFee', 'openMergeFeeModal',_fee);
},
_splitPayFee: function (_fee) {
vc.emit('splitFee', 'openSplitFeeModal', $that.aFeeDetailSubInfo.fee);
}
}
});
})(window.vc);

View File

@ -0,0 +1,267 @@
<div class="">
<div class="white-bg padding-left padding-right padding-top border-radius-top">
<div class="flex justify-between">
<div class="text-title">
费用信息
</div>
<div>
</div>
</div>
<!-- 业主信息 -->
<div class="margin-top">
<div class="row">
<div class="col-sm-12">
<div class="row">
<div class="col-sm-3">
<div class="form-group">
<label class="col-form-label">
<vc:i18n name="费用ID" namespace="adminFeeDetailInfo"></vc:i18n>
</label>
<label class="">{{adminFeeDetailInfo.feeId}}</label>
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
<label class="col-form-label">
<vc:i18n name="费用标识:" namespace="adminFeeDetailInfo"></vc:i18n>
</label>
<label class="">{{adminFeeDetailInfo.feeFlagName || '-'}}</label>
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
<label class="col-form-label">
<vc:i18n name="费用类型:" namespace="adminFeeDetailInfo"></vc:i18n>
</label>
<label class="">{{adminFeeDetailInfo.feeTypeCdName}}</label>
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
<label class="col-form-label">
<vc:i18n name="付费对象:" namespace="adminFeeDetailInfo"></vc:i18n>
</label>
<label class="">{{adminFeeDetailInfo.payerObjName || '-'}}</label>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-3">
<div class="form-group">
<label class="col-form-label">
<vc:i18n name="费用项:" namespace="adminFeeDetailInfo"></vc:i18n>
</label>
<label class="">{{adminFeeDetailInfo.feeName}}</label>
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
<label class="col-form-label">
<vc:i18n name="费用状态:" namespace="adminFeeDetailInfo"></vc:i18n>
</label>
<label class="">{{adminFeeDetailInfo.stateName}}</label>
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
<label class="col-form-label">
<vc:i18n name="建账时间:" namespace="adminFeeDetailInfo"></vc:i18n>
</label>
<label class="">{{adminFeeDetailInfo.startTime}}</label>
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
<label class="col-form-label">
<vc:i18n name="批次:" namespace="adminFeeDetailInfo"></vc:i18n>
</label>
<label class="">{{adminFeeDetailInfo.batchId}}</label>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-3">
<div class="form-group">
<label class="col-form-label">
<vc:i18n name="应收开始时间:" namespace="adminFeeDetailInfo"></vc:i18n>
</label>
<label class="">{{_getEndTime(adminFeeDetailInfo)}}</label>
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
<label class="col-form-label">
<vc:i18n name="应收结束时间:" namespace="adminFeeDetailInfo"></vc:i18n>
</label>
<label class="">{{_getDeadlineTime(adminFeeDetailInfo)}}</label>
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
<label class="col-form-label">
<vc:i18n name="欠费金额:" namespace="adminFeeDetailInfo"></vc:i18n>
</label>
<label class="">{{adminFeeDetailInfo.amountOwed}}</label>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-3" v-for="(item,index) in adminFeeDetailInfo.attrs">
<div class="form-group">
<label class="col-form-label">
{{item.specCdName}}:
</label>
<label class="">{{item.value}}</label>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="vc-line-primary margin-top"></div>
<div class="margin-top-sm">
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link" v-bind:class="{active:adminFeeDetailInfo._currentTab == 'aRoomDetailHisFee'}" v-on:click="changeTab('aRoomDetailHisFee')">
<vc:i18n name="缴费记录" namespace="adminFeeDetail"></vc:i18n>
</a>
</li>
<li class="nav-item" v-if="adminFeeDetailInfo.payerObjType == '3333'">
<a class="nav-link" v-bind:class="{active:adminFeeDetailInfo._currentTab == 'aRoomDetailRoom'}" v-on:click="changeTab('aRoomDetailRoom')">
<vc:i18n name="关联房屋" namespace="adminFeeDetail"></vc:i18n>
</a>
</li>
<li class="nav-item" v-if="adminFeeDetailInfo.payerObjType == '6666'">
<a class="nav-link" v-bind:class="{active:adminFeeDetailInfo._currentTab == 'aRoomDetailCar'}" v-on:click="changeTab('aRoomDetailCar')">
<vc:i18n name="关联车辆" namespace="adminFeeDetail"></vc:i18n>
</a>
</li>
<li class="nav-item" v-if="adminFeeDetailInfo.payerObjType == '7777'">
<a class="nav-link" v-bind:class="{active:adminFeeDetailInfo._currentTab == 'adminFeeDetailContract'}" v-on:click="changeTab('adminFeeDetailContract')">
<vc:i18n name="关联合同" namespace="adminFeeDetail"></vc:i18n>
</a>
</li>
<li class="nav-item">
<a class="nav-link" v-bind:class="{active:adminFeeDetailInfo._currentTab == 'aFeeDetailHis'}" v-on:click="changeTab('aFeeDetailHis')">
<vc:i18n name="修改记录" namespace="adminFeeDetail"></vc:i18n>
</a>
</li>
<li class="nav-item">
<a class="nav-link" v-bind:class="{active:adminFeeDetailInfo._currentTab == 'aFeeDetailConfig'}" v-on:click="changeTab('aFeeDetailConfig')">
<vc:i18n name="费用项" namespace="adminFeeDetail"></vc:i18n>
</a>
</li>
<li class="nav-item">
<a class="nav-link" v-bind:class="{active:adminFeeDetailInfo._currentTab == 'aRoomDetailOwner'}" v-on:click="changeTab('aRoomDetailOwner')">
<vc:i18n name="业主" namespace="adminFeeDetail"></vc:i18n>
</a>
</li>
<li class="nav-item">
<a class="nav-link" v-bind:class="{active:adminFeeDetailInfo._currentTab == 'aFeeDetailFeeObj'}" v-on:click="changeTab('aFeeDetailFeeObj')">
<vc:i18n name="同费用对象" namespace="adminFeeDetail"></vc:i18n>
</a>
</li>
<li class="nav-item">
<a class="nav-link" v-bind:class="{active:adminFeeDetailInfo._currentTab == 'aRoomDetailMeterWaterLog'}" v-on:click="changeTab('aRoomDetailMeterWaterLog')">
<vc:i18n name="关联抄表" namespace="adminFeeDetail"></vc:i18n>
</a>
</li>
<li class="nav-item">
<a class="nav-link" v-bind:class="{active:adminFeeDetailInfo._currentTab == 'aFeeDetailImport'}" v-on:click="changeTab('aFeeDetailImport')">
<vc:i18n name="关联导入" namespace="adminFeeDetail"></vc:i18n>
</a>
</li>
<li class="nav-item">
<a class="nav-link" v-bind:class="{active:adminFeeDetailInfo._currentTab == 'aFeeDetailDiscount'}" v-on:click="changeTab('aFeeDetailDiscount')">
<vc:i18n name="优惠申请" namespace="adminFeeDetail"></vc:i18n>
</a>
</li>
<li class="nav-item">
<a class="nav-link" v-bind:class="{active:adminFeeDetailInfo._currentTab == 'aRoomDetailReceipt'}" v-on:click="changeTab('aRoomDetailReceipt')">
<vc:i18n name="补打收据" namespace="adminFeeDetail"></vc:i18n>
</a>
</li>
<li class="nav-item" v-if="adminFeeDetailInfo.feeFlag != '2006012'">
<a class="nav-link" v-bind:class="{active:adminFeeDetailInfo._currentTab == 'aFeeDetailSub'}" v-on:click="changeTab('aFeeDetailSub')">
<vc:i18n name="费用拆分" namespace="adminFeeDetail"></vc:i18n>
</a>
</li>
<!-- <li class="nav-item" v-if="adminFeeDetailInfo.feeFlag == '2006012'">
<a class="nav-link" v-bind:class="{active:adminFeeDetailInfo._currentTab == 'adminFeeDetailFeeRule'}" v-on:click="changeTab('adminFeeDetailFeeRule')">
<vc:i18n name="账单规则" namespace="adminFeeDetail"></vc:i18n>
</a>
</li>
<li class="nav-item" v-if="adminFeeDetailInfo.feeFlag == '2006012'">
<a class="nav-link" v-bind:class="{active:adminFeeDetailInfo._currentTab == 'adminFeeDetailRuleBill'}" v-on:click="changeTab('adminFeeDetailRuleBill')">
<vc:i18n name="费用账单" namespace="adminFeeDetail"></vc:i18n>
</a>
</li> -->
</ul>
</div>
</div>
<div class="white-bg padding-left padding-right padding-top border-radius-bottom">
<div v-if="adminFeeDetailInfo._currentTab == 'aRoomDetailHisFee'">
<vc:create path="community/aRoomDetailHisFee"></vc:create>
</div>
<div v-if="adminFeeDetailInfo._currentTab == 'aRoomDetailRoom'">
<vc:create path="community/aRoomDetailRoom"></vc:create>
</div>
<div v-if="adminFeeDetailInfo._currentTab == 'aRoomDetailCar'">
<vc:create path="community/aRoomDetailCar"></vc:create>
</div>
<!-- <div v-if="adminFeeDetailInfo._currentTab == 'adminFeeDetailContract'">
<vc:create path="fee/adminFeeDetailContract"></vc:create>
</div> -->
<div v-if="adminFeeDetailInfo._currentTab == 'aFeeDetailHis'">
<vc:create path="fee/aFeeDetailHis"></vc:create>
</div>
<div v-if="adminFeeDetailInfo._currentTab == 'aFeeDetailConfig'">
<vc:create path="fee/aFeeDetailConfig"></vc:create>
</div>
<div v-if="adminFeeDetailInfo._currentTab == 'aRoomDetailOwner'">
<vc:create path="community/aRoomDetailOwner"></vc:create>
</div>
<div v-if="adminFeeDetailInfo._currentTab == 'aFeeDetailFeeObj'">
<vc:create path="fee/aFeeDetailFeeObj"></vc:create>
</div>
<div v-if="adminFeeDetailInfo._currentTab == 'aRoomDetailMeterWaterLog'">
<vc:create path="community/aRoomDetailMeterWaterLog"></vc:create>
</div>
<div v-if="adminFeeDetailInfo._currentTab == 'aFeeDetailImport'">
<vc:create path="fee/aFeeDetailImport"></vc:create>
</div>
<div v-if="adminFeeDetailInfo._currentTab == 'aFeeDetailDiscount'">
<vc:create path="fee/aFeeDetailDiscount"></vc:create>
</div>
<div v-if="adminFeeDetailInfo._currentTab == 'aRoomDetailReceipt'">
<vc:create path="community/aRoomDetailReceipt"></vc:create>
</div>
<div v-if="adminFeeDetailInfo._currentTab == 'aFeeDetailSub'">
<vc:create path="fee/aFeeDetailSub"></vc:create>
</div>
<!--
<div v-if="adminFeeDetailInfo._currentTab == 'adminFeeDetailFeeRule'">
<vc:create path="fee/adminFeeDetailFeeRule"></vc:create>
</div>
<div v-if="adminFeeDetailInfo._currentTab == 'adminFeeDetailRuleBill'">
<vc:create path="fee/adminFeeDetailRuleBill"></vc:create>
</div>
-->
</div>
</div>

View File

@ -0,0 +1,104 @@
/**
业主详情页面
**/
(function (vc) {
vc.extends({
data: {
adminFeeDetailInfo: {
feeId: '',
configId: '',
feeFlag:'',
feeFlagName: '',
feeTypeCdName: '',
payerObjName: '',
payerObjId: '',
payerObjType:'',
feeName: '',
stateName: '',
state: '',
startTime: '',
batchId: '',
endTime: '',
deadlineTime: '',
amountOwed: '',
attrs: [],
_currentTab: 'aRoomDetailHisFee',
needBack: false,
}
},
_initMethod: function () {
$that.adminFeeDetailInfo.feeId = vc.getParam('feeId');
if (!vc.notNull($that.adminFeeDetailInfo.feeId)) {
return;
}
$that._loadAdminFeeDetailInfo();
},
_initEvent: function () {
vc.on('adminFeeDetail', 'listCarData', function (_info) {
//$that._loadAdminFeeDetailInfo();
$that.changeTab($that.adminFeeDetailInfo._currentTab);
});
},
methods: {
_loadAdminFeeDetailInfo: function () {
let param = {
params: {
page: 1,
row: 1,
feeId: $that.adminFeeDetailInfo.feeId,
}
};
//发送get请求
vc.http.apiGet('/fee.listAdminFee',
param,
function (json) {
let _feeInfo = JSON.parse(json);
// 员工列表 和 岗位列表匹配
vc.copyObject(_feeInfo.fees[0], $that.adminFeeDetailInfo);
$that.adminFeeDetailInfo.attrs = _feeInfo.fees[0].feeAttrs;
$that.changeTab($that.adminFeeDetailInfo._currentTab);
},
function () {
console.log('请求失败处理');
}
);
},
changeTab: function (_tab) {
$that.adminFeeDetailInfo._currentTab = _tab;
let _ownerId = "";
$that.adminFeeDetailInfo.attrs.forEach(item => {
if(item.specCd=='390007'){
_ownerId = item.value;
}
});
vc.emit(_tab, 'switch', {
feeId: $that.adminFeeDetailInfo.feeId,
payerObjId: $that.adminFeeDetailInfo.payerObjId,
roomId: $that.adminFeeDetailInfo.payerObjId,
carId: $that.adminFeeDetailInfo.payerObjId,
configId:$that.adminFeeDetailInfo.configId,
state:$that.adminFeeDetailInfo.state,
ownerId:_ownerId
});
},
_getDeadlineTime: function (_fee) {
if (_fee.amountOwed == 0 && _fee.endTime == _fee.deadlineTime) {
return "-";
}
if (_fee.state == '2009001') {
return "-";
}
return _fee.deadlineTime;
},
_getEndTime: function (_fee) {
if (_fee.state == '2009001') {
return "-";
}
return _fee.endTime;
},
}
});
})(window.vc);