提交 2c47334f authored 作者: 宋雄's avatar 宋雄

解决bug

上级 d818f5c3
NODE_ENV=development
# VUE_APP_API_BASE_URL='http://192.168.0.119:9999'
# VUE_APP_API_BASE_URL='http://192.168.0.113:9999'
# VUE_APP_API_BASE_URL='http://192.168.0.101:9999'
VUE_APP_API_BASE_URL='http://220.203.25.212:9999'
VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
......
......@@ -69,7 +69,7 @@ const deleteLog = (params)=>deleteAction("/sys/log/delete",params);
const deleteLogList = (params)=>deleteAction("/sys/log/deleteBatch",params);
//收费类型列表
const getChargeListApi = (params)=>getAction("/property-community/system/chargeType/chargeTypelist",params);
const getChargeListApi = (params)=>getAction("/property-company/system/chargeType/chargeTypelist",params);
const addReceiptTemplate = (params)=>postAction("/property-community/system/receiptTemplate/add",params);
// 楼栋列表、单元列表、房间列表
const getBuildingListApi = (params)=>getAction("/property-community/building/communityBuilding/buildingList",params);
......@@ -108,9 +108,14 @@ const auditCommunityComplaintApi = (params)=>postAction("/property-community/pro
const auditMoveComplaintApi = (params)=>getAction("/property-community/property/communityComplaint/moveComplaint",params);
// 对账管理
const auditPropertyApi = (params)=>postAction("/property-central/property/propertySettled/audit",params);
const freezeOrPropertyApi = (params)=>getAction(`/property-central/property/propertySettled/freezeOrThaw/${params.id}/${params.status}`,{});
const getPropertyChargruleListApi = (params)=>getAction("/property-central/property/propertyChargrule/propertyChargruleList",params);
const addCommunityAccountPageApi = (params)=>postAction("/property-community/property/communityReconciliation/add",params);
const getDetailReconciliationApi = (params)=>getAction("/property-community/property/communityReconciliation/queryById",params);
const getAccountListByIdApi = (params)=>getAction("/property-community/property/communityReconciliation/getAccountListById",params);
const communityAuditAccountPageApi = (params)=>postAction("/property-community/property/communityReconciliation/communityAudit",params);
const getCommunityRecordListApi = (params)=>getAction("/property-central/property/auditRecord/getRecordList",params);
const communitySubCompanyApi = (params)=>postAction("/property-community/property/communityReconciliation/communitySubCompany",params);
//数据字典
const addDict = (params)=>postAction("/sys/dict/add",params);
......@@ -244,7 +249,12 @@ export {
auditCommunityComplaintApi,
auditMoveComplaintApi,
getPropertyChargruleListApi,
auditPropertyApi,
addCommunityAccountPageApi,
getDetailReconciliationApi,
getAccountListByIdApi,
communityAuditAccountPageApi,
getCommunityRecordListApi,
communitySubCompanyApi,
freezeOrPropertyApi,
setOwnerLabelApi,
editOwnerLabelApi,
......
......@@ -77,6 +77,29 @@ export const OWNER_LEBEL = [
{label: '残', value: 'labelDestituteCan'}
]
// 付费周期
export const CHARGING_CYCLE = [
{label: '每月', value: '1'},
{label: '每季度', value: '2'},
{label: '每年', value: '3'},
{label: '一次性付清', value: '4'},
{label: '预付', value: '5'}
]
// 小区对账审核状态
export const RECONCILIATION_STATUS = [
{label: '小区待审核', value: 'communityWaitAudit'},
{label: '小区审核通过', value: 'communityAuditPass'},
{label: '小区审核驳回', value: 'communityRefuse'}
]
// 物业对账审核状态
export const COMPANY_AUDIT_STATUS = [
{label: '物业待审核', value: 'companyWaitAudit'},
{label: '物业审核通过', value: 'companyAuditPass'},
{label: '物业审核驳回', value: 'companyRefuse'}
]
/**
* 翻译字段值对应的文本
* @param children
......
......@@ -78,7 +78,7 @@
</div>
<!-- table区域-end -->
<notice-modal ref="modalForm" @ok="modalFormOk"></notice-modal>
<notice-modal ref="modalForm" @ok="searchQuery"></notice-modal>
</a-card>
</template>
......
......@@ -20,11 +20,6 @@
<a-input v-model="model.roomAllName" placeholder="请输入"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="业主" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="ownerName">
<a-input v-model="model.ownerName" placeholder="请输入"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="与业主关系" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="relationShip">
<!-- <a-input v-model="model.relationShip" placeholder="请输入"></a-input> -->
......@@ -220,7 +215,6 @@ export default {
roomId: '',
roomName: '',
floorSpace: '',
ownerName: '',
ownerPhone: '',
residentName: '',
residentPhone: '',
......
......@@ -5,8 +5,8 @@
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="业主姓名">
<j-input placeholder="请输入业主姓名" v-model="queryParam.ownerName"></j-input>
<a-form-item label="住户姓名">
<j-input placeholder="请输入住户姓名" v-model="queryParam.residentName"></j-input>
</a-form-item>
</a-col>
......@@ -62,9 +62,6 @@
onChange: onSelectChange,
getCheckboxProps: onCheckboxProps
}" class="j-table-force-nowrap" @change="handleTableChange">
<span slot="ownerId" slot-scope="text, record">
<span>{{record.ownerName}}{{record.ownerPhone}}</span>
</span>
<span slot="residentPhone" slot-scope="text, record">
<span>{{record.residentName}}{{record.residentPhone}}</span>
</span>
......@@ -87,7 +84,7 @@
</div>
</div>
<notice-modal ref="modalForm" @ok="modalFormOk"></notice-modal>
<notice-modal ref="modalForm" @ok="searchQuery"></notice-modal>
</a-card>
</template>
......@@ -111,14 +108,6 @@ const columns = [
key: 'chargeItem',
align: 'center',
},
{
title: '业主',
dataIndex: 'ownerId',
key: 'ownerId',
scopedSlots: { customRender: 'ownerId' },
align: 'center',
ellipsis: true
},
{
title: '与业主关系',
dataIndex: 'relationShip',
......
......@@ -42,13 +42,13 @@
</a-row>
<a-row>
<a-col :span="12">
<a-form-model-item label="业主" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="ownerName">
<a-input v-model="model.ownerName" placeholder="请输入" disabled></a-input>
<a-form-model-item label="住户" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="residentName">
<a-input v-model="model.residentName" placeholder="请输入" disabled></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="住户" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="residentName">
<a-input v-model="model.residentName" placeholder="请输入" disabled></a-input>
<a-form-model-item label="电话" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="residentPhone">
<a-input v-model="model.residentPhone" placeholder="请输入" disabled></a-input>
</a-form-model-item>
</a-col>
......@@ -143,8 +143,6 @@
roomId: '',
roomName: '',
floorSpace: '',
ownerName: '',
ownerPhone: '',
residentName: '',
residentPhone: '',
relationShip: '',
......@@ -254,7 +252,7 @@
}
},
async onqueryLastDegreesById() {
let res = await queryLastDegreesByIdApi({ownerId: this.model.ownerId,chargeTypeId: this.model.chargeTypeId})
let res = await queryLastDegreesByIdApi({roomId: this.model.roomId,chargeTypeId: this.model.chargeTypeId})
this.model.lastDegrees = res.result
if(this.model.currentDegrees) {
this.onDegreesChange(this.model.currentDegrees)
......@@ -263,12 +261,12 @@
async onqueryByRoomId() {
let res = await queryByRoomIdApi({roomId: this.model.roomId})
if(res.code === 200) {
this.model.ownerName = res.result.ownerName
this.model.ownerPhone = res.result.ownerPhone
this.model.residentName = res.result.residentName
this.model.residentPhone = res.result.residentPhone
this.model.relationShip = res.result.relationShip
this.model.ownerId = res.result.id
let ownerRow = res.result.find(item=>item.relationShip === 'self')
if(!ownerRow) ownerRow = {...res.result[0]}
this.model.residentName = ownerRow.residentName
this.model.residentPhone = ownerRow.residentPhone
this.model.relationShip = ownerRow.relationShip
this.model.ownerId = ownerRow.id
if(this.model.designFormulas === 3 && this.model.chargeTypeId) {
this.onqueryLastDegreesById()
}
......
......@@ -3,13 +3,20 @@
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="24">
<a-form-model-item label="收费标准" :labelCol="{ xs: { span: 24 }, sm: { span: 2 } }" :wrapperCol="wrapperCol" prop="chargingStandardId">
<a-select style="width:50%" v-model="model.chargingStandardId" placeholder="请选择收费标准" @change="onStandardChange">
<a-col :span="12">
<a-form-model-item label="收费标准" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chargingStandardId">
<a-select v-model="model.chargingStandardId" placeholder="请选择收费标准" @change="onStandardChange">
<a-select-option v-for="item in ruleList" :key="item.id" :value="item.id">{{item.chargeTypeCodeName}}</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="收费周期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chargeCycle">
<a-select v-model="model.chargeCycle" placeholder="请选择收费周期" disabled>
<a-select-option v-for="item in chargingCycle" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="收费类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chargeTypeName">
<a-input v-model="model.chargeTypeName" placeholder="请输入" disabled></a-input>
......@@ -42,13 +49,13 @@
</a-row>
<a-row>
<a-col :span="12">
<a-form-model-item label="业主" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="ownerName">
<a-input v-model="model.ownerName" placeholder="请输入" disabled></a-input>
<a-form-model-item label="住户" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="residentName">
<a-input v-model="model.residentName" placeholder="请输入" disabled></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="住户" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="residentName">
<a-input v-model="model.residentName" placeholder="请输入" disabled></a-input>
<a-form-model-item label="电话" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="residentPhone">
<a-input v-model="model.residentPhone" placeholder="请输入" disabled></a-input>
</a-form-model-item>
</a-col>
......@@ -107,6 +114,7 @@
import { httpAction, getAction } from '@/api/manage'
import { formatDate } from '@/utils/util'
import { getBuildingListApi, getUnitListApi, getRoomListApi, companyPropertyChargerulesApi, queryByRoomIdApi, queryLastDegreesByIdApi} from '@/api/api'
import { CHARGING_CYCLE } from '@/assets/static.js'
export default {
name: 'PropertyChargruleForm',
......@@ -123,6 +131,7 @@
data () {
return {
ruleList: [],
chargingCycle: CHARGING_CYCLE,
treeData: [],
amount: 0,
model:{
......@@ -143,8 +152,6 @@
roomId: '',
roomName: '',
floorSpace: '',
ownerName: '',
ownerPhone: '',
residentName: '',
residentPhone: '',
relationShip: '',
......@@ -219,11 +226,17 @@
this.model.designFormulas = row.designFormulas
this.amount = row.amount
this.model.unitPrice = this.model.designFormulas === 1 ? '' : row.amount
if(this.model.designFormulas === 1) {
if(this.model.designFormulas === 1) { // 固定金额
this.model.totalAmount = this.amount.toFixed(2)
}
if(this.model.designFormulas === 2 && this.model.roomId) { // 获取上期度数
this.model.totalAmount = (this.model.unitPrice * this.model.floorSpace).toFixed(2)
if(this.model.designFormulas === 2 && this.model.roomId) { // 建面 * 单价
if(this.model.chargeCycle === '2') { // 每季度
this.model.totalAmount = (this.model.unitPrice * this.model.floorSpace * 3).toFixed(2)
} else if(this.model.chargeCycle === '3') { // 每年
this.model.totalAmount = (this.model.unitPrice * this.model.floorSpace * 12).toFixed(2)
} else {
this.model.totalAmount = (this.model.unitPrice * this.model.floorSpace).toFixed(2)
}
}
if(this.model.designFormulas === 3 && this.model.roomId) { // 获取上期度数
this.onqueryLastDegreesById()
......@@ -250,7 +263,13 @@
this.model.buildingName = data.parent.parent.label
this.onqueryByRoomId()
if(this.model.designFormulas === 2) {
this.model.totalAmount = (this.model.unitPrice * this.model.floorSpace).toFixed(2)
if(this.model.chargeCycle === '2') { // 每季度
this.model.totalAmount = (this.model.unitPrice * this.model.floorSpace * 3).toFixed(2)
} else if(this.model.chargeCycle === '3') { // 每年
this.model.totalAmount = (this.model.unitPrice * this.model.floorSpace * 12).toFixed(2)
} else {
this.model.totalAmount = (this.model.unitPrice * this.model.floorSpace).toFixed(2)
}
}
},
async onqueryLastDegreesById() {
......@@ -263,12 +282,12 @@
async onqueryByRoomId() {
let res = await queryByRoomIdApi({roomId: this.model.roomId})
if(res.code === 200) {
this.model.ownerName = res.result.ownerName
this.model.ownerPhone = res.result.ownerPhone
this.model.residentName = res.result.residentName
this.model.residentPhone = res.result.residentPhone
this.model.relationShip = res.result.relationShip
this.model.ownerId = res.result.id
let ownerRow = res.result.find(item=>item.relationShip === 'self')
if(!ownerRow) ownerRow = {...res.result[0]}
this.model.residentName = ownerRow.residentName
this.model.residentPhone = ownerRow.residentPhone
this.model.relationShip = ownerRow.relationShip
this.model.ownerId = ownerRow.id
if(this.model.designFormulas === 3 && this.model.chargeTypeId) {
this.onqueryLastDegreesById()
}
......
......@@ -20,11 +20,11 @@
<a-input v-model="model.roomAllName" placeholder="请输入"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="业主" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="ownerName">
<a-input v-model="model.ownerName" placeholder="请输入"></a-input>
<!-- <a-col :span="12">
<a-form-model-item label="业主" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="residentName">
<a-input v-model="model.residentName" placeholder="请输入"></a-input>
</a-form-model-item>
</a-col>
</a-col> -->
<a-col :span="12">
<a-form-model-item label="与业主关系" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="relationShip">
<!-- <a-input v-model="model.relationShip" placeholder="请输入"></a-input> -->
......@@ -220,8 +220,6 @@ export default {
roomId: '',
roomName: '',
floorSpace: '',
ownerName: '',
ownerPhone: '',
residentName: '',
residentPhone: '',
relationShip: '',
......
......@@ -5,8 +5,8 @@
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="业主姓名">
<j-input placeholder="请输入业主姓名" v-model="queryParam.ownerName"></j-input>
<a-form-item label="住户姓名">
<j-input placeholder="请输入住户姓名" v-model="queryParam.residentName"></j-input>
</a-form-item>
</a-col>
......@@ -62,9 +62,6 @@
onChange: onSelectChange,
getCheckboxProps: onCheckboxProps
}" class="j-table-force-nowrap" @change="handleTableChange">
<span slot="ownerId" slot-scope="text, record">
<span>{{record.ownerName}}{{record.ownerPhone}}</span>
</span>
<span slot="residentPhone" slot-scope="text, record">
<span>{{record.residentName}}{{record.residentPhone}}</span>
</span>
......@@ -87,7 +84,7 @@
</div>
</div>
<notice-modal ref="modalForm" @ok="modalFormOk"></notice-modal>
<notice-modal ref="modalForm" @ok="searchQuery"></notice-modal>
</a-card>
</template>
......@@ -113,14 +110,6 @@ const columns = [
width: 220,
align: 'center',
},
{
title: '业主',
dataIndex: 'ownerId',
key: 'ownerId',
width: 160,
scopedSlots: { customRender: 'ownerId' },
align: 'center',
},
{
title: '与业主关系',
dataIndex: 'relationShip',
......@@ -199,7 +188,7 @@ const columns = [
align: 'center',
width: 150,
fixed: 'right',
},
}
]
export default {
......
......@@ -14,8 +14,8 @@
</a-form-model-item>
</a-col> -->
<a-col :span="12">
<a-form-model-item label="业主" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="ownerName">
<a-input v-model="model.ownerName" placeholder="请输入业主"></a-input>
<a-form-model-item label="住户" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="residentName">
<a-input v-model="model.residentName" placeholder="请输入住户"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
......@@ -35,7 +35,10 @@
</a-col>
<a-col :span="12">
<a-form-model-item label="缴费周期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chargeCycle">
<a-input v-model="model.chargeCycle" placeholder="请输入缴费周期"></a-input>
<!-- <a-input v-model="model.chargeCycle" placeholder="请输入缴费周期"></a-input> -->
<a-select v-model="model.chargeCycle" placeholder="请选择缴费周期">
<a-select-option v-for="item in chargingCycle" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
......@@ -64,9 +67,9 @@
<script>
import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
import { httpAction } from '@/api/manage'
import {ajaxGetDictItems,getDictItemsFromCache} from '@/api/api'
import { CHARGING_CYCLE } from '@/assets/static.js'
export default {
name: 'PropertyChargruleForm',
......@@ -82,6 +85,7 @@
},
data () {
return {
chargingCycle: CHARGING_CYCLE,
dictOptions: [],
model:{
employeeName: '',
......
......@@ -71,8 +71,8 @@
<span slot="roomName" slot-scope="text, record">
<span>{{record.buildingName}}{{record.unitName}}{{record.roomName}}</span>
</span>
<span slot="ownerName" slot-scope="text, record">
<span>{{record.ownerName}}{{record.ownerPhone}}</span>
<span slot="residentName" slot-scope="text, record">
<span>{{record.residentName}}{{record.residentPhone}}</span>
</span>
<span slot="receiptStatus" slot-scope="text, record">
<span :style="{'color': record.receiptStatus === '1' ? 'green' : 'red'}">{{record.receiptStatus === '1' ? '是' : '否'}}</span>
......@@ -80,7 +80,10 @@
<span slot="action" slot-scope="text, record">
<!-- <a @click="handleEdit(record)">编辑</a> -->
<a @click="handleDetail(record)">查看</a>
<a @click="onIssueReceipt(record)" style="margin-left: 10px;">开收据</a>
<template v-if="record.receiptStatus !== '1'">
<a-divider type="vertical" />
<a @click="onIssueReceipt(record)">开收据</a>
</template>
</span>
</a-table>
......@@ -107,10 +110,10 @@
align: 'center'
},
{
title: '业主',
dataIndex: 'ownerName',
scopedSlots: { customRender: 'ownerName' },
key: 'ownerName',
title: '住户',
dataIndex: 'residentName',
scopedSlots: { customRender: 'residentName' },
key: 'residentName',
align: 'center'
},
{
......@@ -188,8 +191,7 @@
},
methods: {
onIssueReceipt(row) {
console.log(this.$refs.templateModal)
this.$refs.templateModal.onLoadTemplate()
this.$refs.templateModal.onLoadTemplate(row)
},
handleOk() {},
handleCancel() {},
......
<template>
<j-modal
title="收据模板"
width="70%"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': false} }"
@cancel="handleCancel"
>
<template slot="footer">
<a-button key="back" @click="handleCancel">关闭</a-button>
</template>
<div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
class="j-table-force-nowrap"
>
<span slot="receiptStatus" slot-scope="text, record">
<span :style="{'color': record.receiptStatus === '1' ? 'green' : 'red'}">{{record.receiptStatus === '1' ? '是' : '否'}}</span>
</span>
<span slot="action" slot-scope="text, record">
<!-- <a @click="handleEdit(record)">编辑</a> -->
<a @click="handleDetail(record)">预览</a>
<a @click="onIssueReceipt(record)" style="margin-left: 10px;">下载</a>
</span>
</a-table>
</div>
</j-modal>
<div>
<j-modal
title="收据模板"
width="70%"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': false} }"
@cancel="handleCancel"
>
<template slot="footer">
<a-button key="back" @click="handleCancel">关闭</a-button>
</template>
<div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
class="j-table-force-nowrap"
>
<span slot="receiptStatus" slot-scope="text, record">
<span :style="{'color': record.receiptStatus === '1' ? 'green' : 'red'}">{{record.receiptStatus === '1' ? '是' : '否'}}</span>
</span>
<span slot="action" slot-scope="text, record">
<a @click="handlePreviewPdf(record)">预览</a>
<a-divider type="vertical" />
<a @click="handleSaveToPdf(record)">下载</a>
</span>
</a-table>
</div>
</j-modal>
<vue-html2pdf
:show-layout="false"
:float-layout="true"
:enable-download="true"
:preview-modal="false"
:html-to-pdf-options="pdfOptions"
:paginate-elements-by-height="1400"
filename="tempFileName"
:pdf-quality="2"
:manual-pagination="false"
pdf-format="a4"
pdf-orientation="landscape"
pdf-content-width="98%"
@progress="onProgress"
ref="html2PdfDownLoad"
>
<section slot="pdf-content">
<!-- PDF Content Here -->
<span id="report" v-html="content"></span>
</section>
</vue-html2pdf>
<vue-html2pdf
:show-layout="false"
:float-layout="true"
:enable-download="false"
:preview-modal="true"
:html-to-pdf-options="pdfOptions"
:paginate-elements-by-height="1400"
filename="tempFileName"
:pdf-quality="2"
:manual-pagination="false"
pdf-format="a4"
pdf-orientation="landscape"
pdf-content-width="98%"
@progress="onProgress"
ref="html2PdfPreview"
>
<section slot="pdf-content">
<!-- PDF Content Here -->
<span id="report" v-html="content"></span>
</section>
</vue-html2pdf>
</div>
</template>
<script>
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import VueHtml2pdf from "vue-html2pdf";
// const content = '<h3 style="text-align: center;"><span data-w-e-type="mention" data-w-e-is-void="" data-w-e-is-inline="" data-value="收据名称" data-info="%7B%22id%22%3A%22a%22%7D">@收据名称</span></h3><p style="text-align: center;">单号:<span data-w-e-type="mention" data-w-e-is-void="" data-w-e-is-inline="" data-value="单号" data-info="%7B%22id%22%3A%22b%22%7D">@单号</span></p><p style="text-align: left;">业主:<span data-w-e-type="mention" data-w-e-is-void="" data-w-e-is-inline="" data-value="业主名称" data-info="%7B%22id%22%3A%22c%22%7D">@业主名称</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;缴费时间:<span data-w-e-type="mention" data-w-e-is-void="" data-w-e-is-inline="" data-value="缴费时间" data-info="%7B%22id%22%3A%22d%22%7D">@缴费时间</span></p><hr/><p style="line-height: 2.5;">今收到 <u> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </u> 金额(大写)<u> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</u><span data-w-e-type="mention" data-w-e-is-void="" data-w-e-is-inline="" data-value="大写金额" data-info="%7B%22id%22%3A%22e%22%7D">@大写金额</span><u> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</u></p><p style="line-height: 2.5;">收款单位(盖章) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;¥:<u> &nbsp; &nbsp;</u><span data-w-e-type="mention" data-w-e-is-void="" data-w-e-is-inline="" data-value="小写金额" data-info="%7B%22id%22%3A%22f%22%7D">@小写金额</span><u> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</u></p><hr/><p>开票人:<span data-w-e-type="mention" data-w-e-is-void data-w-e-is-inline data-value="审核人" data-info="%7B%22id%22%3A%22g%22%7D">@审核人</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 收款人:<span data-w-e-type="mention" data-w-e-is-void data-w-e-is-inline data-value="审核人" data-info="%7B%22id%22%3A%22g%22%7D">@审核人</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;客户:<span data-w-e-type="mention" data-w-e-is-void data-w-e-is-inline data-value="业主名称" data-info="%7B%22id%22%3A%22c%22%7D">@业主名称</span></p>'
let receiptObj = {}
const columns = [
{
......@@ -84,6 +133,9 @@
export default {
name: 'PropertySettledModal',
mixins: [JeecgListMixin],
components: {
VueHtml2pdf
},
data () {
return {
columns: columns,
......@@ -91,19 +143,21 @@
list: "/property-company/system/receiptTemplate/list"
},
visible: false,
content: '',
// previewModal: false,
pdfOptions: {
margin: [20, 10, 20, 10],
filename: ''
}
}
},
methods: {
onLoadTemplate() {
onLoadTemplate(receipt) {
receiptObj = {...receipt}
this.visible=true
this.loadData()
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
})
},
close () {
this.$emit('close');
this.visible = false;
......@@ -111,12 +165,53 @@
handleOk () {
this.$refs.realForm.submitForm();
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleCancel () {
this.close()
},
onProgress(e) {
console.log(e)
},
dealBigMoney(number) {
if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(number)) return "数据非法";
let unit = "仟佰拾亿仟佰拾万仟佰拾元角分", str = "";
let n = number + "00";
let p = n.indexOf('.');
if (p >= 0){
n = n.substring(0, p) + n.substr(p+1, 2);
unit = unit.substr(unit.length - n.length);
}
for (var i=0; i < n.length; i++) {
str += '零壹贰叁肆伍陆柒捌玖'.charAt(n.charAt(i)) + unit.charAt(i);
}
return str.replace(/零(仟|佰|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元整");
},
handleSaveToPdf(row) {
this.pdfOptions.filename = '收费模板'
let content = row.templateStyle
let capitalizationAmont = this.dealBigMoney(receiptObj.totalAmount)
content = content.replace(/@收据名称/g, row.templateName)
content = content.replace(/@单号/g, receiptObj.paymentNum)
content = content.replace(/@业主名称/g, receiptObj.residentName)
content = content.replace(/@缴费时间/g, receiptObj.paymentTime)
content = content.replace(/@大写金额/g, capitalizationAmont)
content = content.replace(/@小写金额/g, receiptObj.totalAmount)
content = content.replace(/@审核人/g, receiptObj.updateBy)
this.$refs.html2PdfDownLoad.generatePdf();
},
handlePreviewPdf(row) {
let content = row.templateStyle
let capitalizationAmont = this.dealBigMoney(receiptObj.totalAmount)
content = content.replace(/@收据名称/g, row.templateName)
content = content.replace(/@单号/g, receiptObj.paymentNum)
content = content.replace(/@业主名称/g, receiptObj.residentName)
content = content.replace(/@缴费时间/g, receiptObj.paymentTime)
content = content.replace(/@大写金额/g, capitalizationAmont)
content = content.replace(/@小写金额/g, receiptObj.totalAmount)
content = content.replace(/@审核人/g, receiptObj.updateBy)
// content = content.replace(/<p style="line-height: 2.5;">/g, '<p style="line-height: 2.5;border-bottom:1px solid #333;">')
this.content = content
this.$refs.html2PdfPreview.generatePdf()
}
}
}
......
......@@ -10,144 +10,267 @@
</div>
</div>
<a-card title="请选择对账" v-if="pageType === '3'">
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="住户">
<j-input placeholder="请输入住户" v-model="queryParam.residentName"></j-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-model-item label="收费类型">
<a-select style="width: 100%" v-model="queryParam.chargeTypeName" placeholder="请选择收费类型">
<a-select-option v-for="item in chargeTypeOptions" :key="item.typeCode" :value="item.typeName">{{item.typeName}}</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery">查询</a-button>
<a-button style="margin-left: 8px" @click="searchReset">重置</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
已选择 <a style="font-weight: 600"> {{ selectionRows.length }}</a>个缴费单,共计<span style="color:red">{{totalMoney}}</span>
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div>
<a-row>
<a-table ref="table" size="middle" :scroll="{ x: true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="ipagination" :loading="loading" :rowSelection="{
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
getCheckboxProps: onCheckboxProps
}" class="j-table-force-nowrap" @change="handleTableChange">
<span slot="residentPhone" slot-scope="text, record">
<span>{{record.residentName}}{{record.residentPhone}}</span>
</span>
<span slot="roomId" slot-scope="text, record">
<span>{{record.buildingName}}{{record.unitName}}{{record.roomName}}</span>
</span>
</a-table>
</a-row>
</a-card>
<j-form-container :disabled="pageType !== '3'">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-card title="对账信息">
<a-form-model ref="form" :model="model" slot="detail">
<a-card title="对账信息" v-if="pageType !== '3'">
<a-row>
<a-col :span="12">
<a-form-model-item label="对账单号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="propertyName">
<a-input v-model="model.propertyName" placeholder="请输入对账单号"></a-input>
<a-form-model-item label="对账单号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="id">
<a-input v-model="model.id" placeholder="请输入对账单号"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="对账开始时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="creditCode">
<a-input v-model="model.creditCode" placeholder="请输入对账开始时间"></a-input>
<a-form-model-item label="对账开始时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reconciliationBeginDate">
<a-input v-model="model.reconciliationBeginDate" placeholder="请输入对账开始时间"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="对账结束时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="legalName">
<a-input v-model="model.legalName" placeholder="请输入对账结束时间"></a-input>
<a-form-model-item label="对账结束时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reconciliationEndDate">
<a-input v-model="model.reconciliationEndDate" placeholder="请输入对账结束时间"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="操作人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="registCapital">
<a-input-number v-model="model.registCapital" :min="1" placeholder="请输入操作人" style="width: 100%" />
<a-form-model-item label="操作人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createBy">
<a-input-number v-model="model.createBy" :min="1" placeholder="请输入操作人" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="操作日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="contactName">
<a-input v-model="model.contactName" placeholder="请输入操作日期"></a-input>
<a-form-model-item label="操作日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createTime">
<a-input v-model="model.createTime" placeholder="请输入操作日期"></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
<a-card title="对账明细">
<a-row>
<div>
<a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" :pagination="ipagination" :loading="loading" class="j-table-force-nowrap" @change="handleTableChange">
</a-table>
</div>
<!-- <a-col :span="12">
<a-form-model-item label="小区审核状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="communityAuditStatus">
<a-select v-model="model.communityAuditStatus" style="width:100%">
<a-select-option v-for="item in communityAuditStatusList" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-model-item>
</a-col> -->
</a-row>
</a-card>
</a-form-model>
</j-form-container>
<a-card title="对账明细" v-if="pageType !== '3'">
<p>已添加{{dataSource.length}}个缴费单,共计<span style="color:red">{{model.reconciliationAmount}}</span></p>
<a-row>
<div>
<a-table ref="table" size="middle" :scroll="{ x: true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="ipagination" :loading="loading" class="j-table-force-nowrap">
<span slot="residentPhone" slot-scope="text, record">
<span>{{record.residentName}}{{record.residentPhone}}</span>
</span>
<span slot="roomId" slot-scope="text, record">
<span>{{record.buildingName}}{{record.unitName}}{{record.roomName}}</span>
</span>
</a-table>
</div>
</a-row>
</a-card>
<a-card title="审核记录" v-if="pageType === '1'">
<a-row>
<div>
<a-table ref="table" size="middle" :scroll="{ x: 600}" bordered rowKey="id" :columns="recordColumns"
:dataSource="recordList" class="j-table-force-nowrap">
</a-table>
</div>
</a-row>
</a-card>
<a-card title="审核说明" v-if="pageType === '2'">
<a-textarea placeholder="请输入审核说明" v-model="auditDescription" />
</a-card>
</a-spin>
</template>
<script>
import { httpAction, getAction } from '@/api/manage'
import { isMobile } from '@/utils/validate'
import { addCommunityAccountPageApi, getCommunityRecordListApi, getDetailReconciliationApi, getAccountListByIdApi, communityAuditAccountPageApi, getChargeListApi } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { PAYMENT_STATUS, RELATION_SHIP, filterDictTextByStatic, RECONCILIATION_STATUS } from '@/assets/static.js'
const columns = [
{
title: '所属小区',
dataIndex: 'propertyName',
key: 'propertyName',
title: '收费类型',
dataIndex: 'chargeTypeName',
key: 'chargeTypeName',
width: 120,
align: 'center',
},
{
title: '费用项目',
dataIndex: 'creditCode',
key: 'creditCode',
align: 'center',
},
{
title: '业主',
dataIndex: 'reconciliationBeginDate',
key: 'reconciliationBeginDate',
title: '收费项目',
dataIndex: 'chargeItem',
key: 'chargeItem',
width: 220,
align: 'center',
},
{
title: '与业主关系',
dataIndex: 'reaship',
key: 'reaship',
dataIndex: 'relationShip',
key: 'relationShip',
width: 120,
align: 'center',
customRender: function (text) {
return filterDictTextByStatic(RELATION_SHIP, text)
},
},
{
title: '住户',
dataIndex: 'reconcilname',
key: 'reconcilname',
dataIndex: 'residentPhone',
key: 'residentPhone',
width: 160,
scopedSlots: { customRender: 'residentPhone' },
align: 'center',
},
{
title: '房屋编号',
dataIndex: 'reconciliationEndDate',
key: 'reconciliationEndDate',
dataIndex: 'roomId',
scopedSlots: { customRender: 'roomId' },
key: 'roomId',
width: 140,
align: 'center',
},
{
title: '费用',
dataIndex: 'reconciliationAmount',
key: 'reconciliationAmount',
title: '金额(元)',
dataIndex: 'totalAmount',
key: 'totalAmount',
width: 120,
align: 'center',
},
{
title: '缴费日期',
dataIndex: 'updateTime',
key: 'updateTime',
title: '本期读表时间',
dataIndex: 'meterReadingTime',
key: 'meterReadingTime',
width: 150,
align: 'center',
},
// {
// title: '缴费状态',
// dataIndex: 'paymentStatus',
// key: 'paymentStatus',
// width: 120,
// align: 'center',
// customRender: function (text) {
// return filterDictTextByStatic(PAYMENT_STATUS, text)
// },
// },
{
title: '缴费单号',
dataIndex: 'empowerCommunityNum',
key: 'empowerCommunityNum',
// customRender: function (text) {
// return filterDictTextByCache('companyAuditStatus', text)
// },
dataIndex: 'paymentNum',
key: 'paymentNum',
width: 120,
align: 'center',
},
{
title: '缴费日期',
dataIndex: 'paymentTime',
key: 'paymentTime',
width: 150,
align: 'center',
},
{
title: '创建日期',
dataIndex: 'createTime',
key: 'createTime',
width: 150,
align: 'center',
}
]
const recordColumns = [
{
title: '审核平台',
dataIndex: 'platformName',
key: 'platformName',
width: 100,
align: 'center',
},
{
title: '审核状态',
dataIndex: 'auditStatus',
key: 'auditStatus',
width: 100,
align: 'center',
// customRender: (text)=> {
// return filterDictTextByStatic(RECONCILIATION_STATUS, text)
// },
},
{
title: '审核说明',
dataIndex: 'refuseDesc',
key: 'refuseDesc',
width: 200,
align: 'center',
ellipsis: true
},
{
title: '审核人',
dataIndex: 'createBy',
key: 'createBy',
width: 100,
align: 'center'
},
{
title: '审核时间',
dataIndex: 'createTime',
key: 'createTime',
width: 100,
align: 'center',
}
]
export default {
name: 'PropertySettledForm',
inject: ['closeCurrent'],
mixins: [JeecgListMixin],
data() {
const validateToNextPhone = (rule, value, callback) => {
if (value && isMobile(value)) {
callback()
} else {
callback('请输入正确的联系人电话!')
}
}
return {
communityAuditStatusList: RECONCILIATION_STATUS,
title: '',
pageType: '',
pcaa: this.$Jpcaa,
model: {
propertyName: '234234234',
creditCode: '2023-03-22',
legalName: '2023-06-22',
registCapital: 'ADMIN',
contactName: '2023-06-23',
image: ''
},
model: {},
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
......@@ -157,58 +280,46 @@ export default {
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {
propertyName: [{ required: true, message: '请输入物业集团名称', trigger: 'blur' }],
creditCode: [{ required: true, message: '请输入统一信用代码', trigger: 'blur' }],
legalName: [{ required: true, message: '请输入法人代表', trigger: 'blur' }],
registCapital: [{ required: true, message: '请输入注册资本', trigger: 'blur' }],
contactName: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
contactPhone: [
{ required: true, message: '请输入联系人电话', trigger: 'blur' },
{ validator: validateToNextPhone },
],
registAdress: [{ required: true, message: '请选择注册地址', trigger: 'change' }],
addressInfo: [{ required: true, message: '请输入详细地址', trigger: 'blur' }],
logoUrl: [{ required: true, message: '请上传集团LOGO', trigger: 'change' }],
empowerBeginDate: [{ required: true, message: '请选择授权开始日期', trigger: 'change' }],
empowerEndDate: [{ required: true, message: '请选择权结束日期', trigger: 'change' }],
empowerCommunityNum: [{ required: true, message: '请输入授权小区数量', trigger: 'blur' }],
chargingStandardId: [{ required: true, message: '请选择收费标准', trigger: 'change' }],
adminLoginName: [{ required: true, message: '请输入管理员账号', trigger: 'blur' }],
adminPassword: [{ required: true, message: '请输入管理员密码', trigger: 'blur' }],
contractUrl: [{ required: true, message: '请上传合同附件', trigger: 'change' }],
},
url: {
add: '/property-central/property/propertySettled/add',
edit: '/property-central/property/propertySettled/edit',
queryById: '/property-central/property/propertySettled/queryById',
list: '/property-central/property/communityReconciliation/communityAccountPage'
list: '/property-community/property/communityReconciliation/communityAccountPage'
},
chargeTypeOptions: [],
auditDescription: '',
columns: columns,
loading: false,
dataSource: [
{id: 'DSF3453534',propertyName: '汉江之星小区', creditCode: '物业费', reconciliationBeginDate: '张飒,15198765634',reaship: '租户', reconcilname: '李白,15165245634', reconciliationEndDate: '2栋2单元101', reconciliationAmount: '345.23', updateTime: '2023-04-05', empowerCommunityNum: 'LD23423843223', auditStatus: '2023-05-06'},
{id: 'DSF32342334',propertyName: '汉江之星小区', creditCode: '水费', reconciliationBeginDate: '李生,1515235634',reaship: '本人', reconcilname: '李生,1515235634', reconciliationEndDate: '1栋2单元301', reconciliationAmount: '1345.45', updateTime: '2023-05-05', empowerCommunityNum: 'DFG2342342323', auditStatus: '2023-05-16'},
{id: 'DSF23423434',propertyName: '汉江之星小区', creditCode: '电费', reconciliationBeginDate: '李丽,19812348976',reaship: '租户', reconcilname: '张飒,15198765634', reconciliationEndDate: '9栋1单元401', reconciliationAmount: '34234', updateTime: '2023-02-06', empowerCommunityNum: 'JTR323422', auditStatus: '2023-03-06'},
{id: 'DSF36783434',propertyName: '汉江之星小区', creditCode: '水费', reconciliationBeginDate: '张盛,1890987567',reaship: '本人', reconcilname: '张盛,1890987567', reconciliationEndDate: '4栋2单元403', reconciliationAmount: '34', updateTime: '2023-06-07', empowerCommunityNum: 'DFGD32423423', auditStatus: '2023-04-23'},
{id: 'DS235345534',propertyName: '汉江之星小区', creditCode: '燃气费', reconciliationBeginDate: '李婷婷,18809875634',reaship: '租户', reconcilname: '话梅,15198765634', reconciliationEndDate: '9栋2单元1201', reconciliationAmount: '654', updateTime: '2023-05-06', empowerCommunityNum: 'FDBEWRW2342342', auditStatus: '2023-06-26'},
]
disableMixinCreated: true,
recordColumns: recordColumns,
recordList: []
}
},
computed: {
totalMoney() {
return this.selectionRows.reduce((prev,cur,index,arr)=> {
return parseFloat((prev + cur.totalAmount).toFixed(1))
}, 0)
}
},
methods: {
async getPageDetail() {
// let { result } = await getPropertyDetailApi({ id: this.$route.query.id })
// this.edit(result)
// if (result.provinceName) {
// this.getLongitude(
// result.provinceName,
// result.provinceName + result.cityName + result.countyName + result.addressInfo,
// mapZoom[3]
// )
// }
onCheckboxProps(record) {
let props = {
disabled: record.paymentStatus === 'paid',
name: record.chargeTypeName,
}
return props
},
async getCommunityReconciliation() {
let formModel = await getDetailReconciliationApi({
id: this.$route.query.id
})
this.model = {...formModel.result}
let formList = await getAccountListByIdApi({
reconciliationId: this.$route.query.id
})
this.dataSource = [...formList.result.records]
let record = await getCommunityRecordListApi({
dataId: this.$route.query.id,
auditType: 'reconciliation'
})
this.recordList = [...record.result]
},
onCancel() {
this.closeCurrent()
......@@ -224,7 +335,28 @@ export default {
this.visible = true
},
onExamine(type) {
this.closeCurrent()
if(type === 3) {
this.confirmLoading = true
addCommunityAccountPageApi({
// paymentIds: this.selectionRows.map(item=>item.id).join(',')
payments: this.selectionRows
}).then(res=> {
this.confirmLoading = false
this.$message.success(res.message)
this.closeCurrent()
})
} else {
this.confirmLoading = true
communityAuditAccountPageApi({
auditStatus: type === 1 ? 'auditPass' : 'refuse',
id: this.$route.query.id,
refuseDesc: this.auditDescription
}).then(res=> {
this.confirmLoading = false
this.$message.success(`${type === 1 ? '审核' : '驳回'}成功!`)
this.closeCurrent()
})
}
},
submitForm() {
const that = this
......@@ -249,7 +381,7 @@ export default {
that.$emit('ok')
this.closeCurrent()
} else {
that.$message.warning(res.message)
that.$message.success(res.message)
}
})
.finally(() => {
......@@ -258,8 +390,9 @@ export default {
}
})
},
loadData() {
console.log('不请求')
async getChargeList() {
let {result} = await getChargeListApi()
this.chargeTypeOptions = result
}
},
mounted() {
......@@ -268,16 +401,15 @@ export default {
this.pageType = this.$route.query.type
if (this.$route.query.type == '1') {
this.title = '详情'
this.getCommunityReconciliation()
} else if (this.$route.query.type == '2') {
this.title = '审核'
this.getCommunityReconciliation()
} else if (this.$route.query.type == '3') {
this.title = '新增对账'
this.loadData()
this.getChargeList()
}
console.log(this.title)
console.log(this.pageType)
// if (this.$route.query.id) {
// this.getPageDetail()
// }
}
}
</script>
......
......@@ -14,9 +14,14 @@
<j-input placeholder="请输入小区名称" v-model="queryParam.propertyName"></j-input>
</a-form-item>
</a-col>
<a-col :md="8" :sm="10">
<a-form-item label="缴费日期">
<a-range-picker @change="onChange" />
<a-col :md="6" :sm="8">
<a-form-item label="缴费开始时间">
<a-date-picker placeholder="缴费开始时间" valueFormat="YYYY-MM-DD" v-model="queryParam.reconciliationBeginDate"></a-date-picker>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="缴费结束时间">
<a-date-picker placeholder="缴费结束时间" valueFormat="YYYY-MM-DD" v-model="queryParam.reconciliationEndDate"></a-date-picker>
</a-form-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
......@@ -33,12 +38,12 @@
<div class="table-operator">
<a-button @click="propertyDetails(3)" type="primary" icon="plus">新增对账</a-button>
<!-- <a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button> -->
<!-- <a-dropdown v-if="selectedRowKeys.length > 0">
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete" />删除</a-menu-item>
<a-menu-item key="1" @click="onReconciliation()"><a-icon type="audit" />申请对账</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown> -->
</a-dropdown>
</div>
<!-- table区域-begin -->
......@@ -49,38 +54,24 @@
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div> -->
<a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="columns"
<a-table ref="table" size="middle" :scroll="{x:true}" :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, getCheckboxProps: onCheckboxProps}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="ipagination" :loading="loading" class="j-table-force-nowrap" @change="handleTableChange">
<span slot="empowerEndDate" slot-scope="text, record">
<span v-if="record.empowerEndDate">{{record.empowerBeginDate}}{{record.empowerEndDate}} </span>
</span>
<span slot="propertyStatus" slot-scope="text, record">
<span>{{record.propertyStatus === 'normal' ? '正常' : '冻结'}}</span>
</span>
<span slot="expirationStatus" slot-scope="text, record">
<a-tag>{{record.expirationStatus === 'notStarted' ? '未开始' :record.expirationStatus === 'normal' ? '正常' :record.expirationStatus === 'soonExpired' ? '即将到期' :record.expirationStatus === 'expire' ? '已过期' : ''}}</a-tag>
</span>
<span slot="action" slot-scope="text, record">
<a href="javascript:;" @click="propertyDetails(1, record.id)">详情</a>
<template v-if="record.auditStatus === '待审核'">
<template v-if="record.communityAuditStatus === 'communityWaitAudit'">
<a-divider type="vertical" />
<a href="javascript:;" @click="propertyDetails(2, record.id)">审核</a>
</template>
<!-- <a-dropdown>
<a class="ant-dropdown-link">
更多 <a-icon type="down" />
</a>
<a-menu slot="overlay">
<a-menu-item>
<a href="javascript:;" @click="propertyDetails(2, record.id)">审核</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;" @click="propertyDetails(3, record.id)">拨款</a>
</a-menu-item>
</a-menu>
</a-dropdown> -->
<template v-if="record.communityAuditStatus === 'communityRefuse' || record.companyAuditStatus === 'companyRefuse'">
<a-divider type="vertical" />
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)" placement="topLeft">
<a>删除</a>
</a-popconfirm>
</template>
<template v-if="record.communityAuditStatus === 'communityAuditPass' && !record.companyAuditStatus">
<a-divider type="vertical" />
<a href="javascript:;" @click="onReconciliation(record.id)">申请对账</a>
</template>
</span>
</a-table>
......@@ -90,9 +81,9 @@
</template>
<script>
import { auditPropertyApi, freezeOrPropertyApi } from '@/api/api'
import { communitySubCompanyApi } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { filterDictTextByCache } from '@/components/dict/JDictSelectUtil'
import { filterDictTextByStatic, RECONCILIATION_STATUS, COMPANY_AUDIT_STATUS } from '@/assets/static.js'
const columns = [
{
......@@ -121,30 +112,33 @@ const columns = [
},
{
title: '操作日期',
dataIndex: 'updateTime',
key: 'updateTime',
dataIndex: 'createTime',
key: 'createTime',
align: 'center',
},
{
title: '操作人',
dataIndex: 'empowerCommunityNum',
key: 'empowerCommunityNum',
dataIndex: 'createBy',
key: 'createBy',
align: 'center',
},
{
title: '审核状态',
dataIndex: 'auditStatus',
scopedSlots: { customRender: 'auditStatus' },
dataIndex: 'communityAuditStatus',
key: 'communityAuditStatus',
align: 'center',
customRender: function (text) {
return filterDictTextByStatic(RECONCILIATION_STATUS, text)
}
},
{
title: '公司审核状态',
dataIndex: 'companyAuditStatus',
key: 'companyAuditStatus',
align: 'center',
// customRender: function (text) {
// return filterDictTextByCache('companyAuditStatus', text)
// },
customRender: function (text) {
return filterDictTextByStatic(COMPANY_AUDIT_STATUS, text)
}
},
{
title: '操作',
......@@ -163,96 +157,44 @@ export default {
return {
// 表头
columns: columns,
loading: false,
url: {
// list: '/property-central/property/communityReconciliation/list',
list: '/property-community/property/communityReconciliation/communityAccountPage',
// list: '/property-community/property/communityReconciliation/communityAccountPage',
list: '/property-community/property/communityReconciliation/list',
delete: '/property-community/property/communityReconciliation/delete',
deleteBatch: '/property-community/property/communityReconciliation/deleteBatch',
},
dataSource: [
{id: 'JD239423', creditCode: '汉江之星小区', propertyName: '汉江之星物业集团', reconciliationBeginDate: '2023-01-01', reconciliationEndDate: '2023-02-03', reconciliationAmount: '345.23', updateTime: '2023-04-05', empowerCommunityNum: 'admin', auditStatus: '审核通过', companyAuditStatus: '待审核'},
{id: 'JD453454', creditCode: '汉江之星小区', propertyName: '汉江之星物业集团', reconciliationBeginDate: '2023-04-06', reconciliationEndDate: '2023-06-03', reconciliationAmount: '1345.45', updateTime: '2023-05-05', empowerCommunityNum: 'admin', auditStatus: '审核通过', companyAuditStatus: '审核通过'},
{id: 'JD567454', creditCode: '汉江之星小区', propertyName: '汉江之星物业集团', reconciliationBeginDate: '2023-02-05', reconciliationEndDate: '2023-02-23', reconciliationAmount: '34234', updateTime: '2023-02-06', empowerCommunityNum: 'admin', auditStatus: '待审核', companyAuditStatus: '待审核'},
{id: 'KF343455', creditCode: '汉江之星小区', propertyName: '汉江之星物业集团', reconciliationBeginDate: '2022-11-01', reconciliationEndDate: '2023-01-03', reconciliationAmount: '34', updateTime: '2023-06-07', empowerCommunityNum: 'admin', auditStatus: '审核通过', companyAuditStatus: '审核通过'},
{id: 'KD435345', creditCode: '汉江之星小区', propertyName: '汉江之星物业集团', reconciliationBeginDate: '2022-01-21', reconciliationEndDate: '2022-10-03', reconciliationAmount: '654', updateTime: '2023-05-06', empowerCommunityNum: 'admin', auditStatus: '待审核', companyAuditStatus: '待审核'},
{id: 'LG345352', creditCode: '汉江之星小区', propertyName: '汉江之星物业集团', reconciliationBeginDate: '2022-01-10', reconciliationEndDate: '2022-02-03', reconciliationAmount: '897.98', updateTime: '2023-05-08', empowerCommunityNum: 'admin', auditStatus: '待审核', companyAuditStatus: '待审核'},
{id: 'MG345354', creditCode: '汉江之星小区', propertyName: '汉江之星物业集团', reconciliationBeginDate: '2023-01-04', reconciliationEndDate: '2023-06-03', reconciliationAmount: '234', updateTime: '2023-05-05', empowerCommunityNum: 'admin', auditStatus: '审核通过', companyAuditStatus: '待审核'},
{id: 'LB345353', creditCode: '汉江之星小区', propertyName: '汉江之星物业集团', reconciliationBeginDate: '2023-02-01', reconciliationEndDate: '2023-05-03', reconciliationAmount: '1000', updateTime: '2023-04-04', empowerCommunityNum: 'admin', auditStatus: '审核通过', companyAuditStatus: '待审核'},
{id: 'LC234234', creditCode: '汉江之星小区', propertyName: '汉江之星物业集团', reconciliationBeginDate: '2023-01-23', reconciliationEndDate: '2023-02-03', reconciliationAmount: '3443', updateTime: '2023-01-02', empowerCommunityNum: 'admin', auditStatus: '审核通过', companyAuditStatus: '审核通过'},
]
}
}
},
methods: {
propertyDetails(type, id) {
this.$router.push({
path: '/property/RecordDetails?type=' + type +'&id=' + id
})
},
onLoadDetail(record, type) {
record['registAdress'] = [record.provinceCode, record.cityCode, record.countyCode]
if (type === 'edit') {
this.handleEdit(record)
} else {
this.handleDetail(record)
}
},
onChange(date, dateString) {
if (dateString.length > 0) {
this.queryParam.createTime_begin = dateString[0]
this.queryParam.createTime_end = dateString[1]
} else {
this.queryParam.createTime_begin = ''
this.queryParam.createTime_end = ''
onCheckboxProps: record=> {
let props = {
disabled: record.communityAuditStatus !== 'communityAuditPass',
name: record.id
}
return props
},
onExamine(record) {
let that = this
this.$confirm({
title: '确认审核此物业?',
closable: true,
okText: '审核通过',
cancelText: '审核驳回',
onOk() {
return auditPropertyApi({
id: record.id,
auditStatus: 'auditPass',
}).then((res) => {
that.searchQuery()
})
},
onCancel() {
return auditPropertyApi({
id: record.id,
auditStatus: 'refuse',
}).then((res) => {
that.searchQuery()
})
},
propertyDetails(type, id) {
let params = id ? `?type=${type}&id=${id}` : `?type=${type}`
this.$router.push({
path: '/property/RecordDetails' + params
})
},
onStatus(record) {
onReconciliation(id) {
let ids = id || this.selectedRowKeys.join(',')
let that = this
this.$confirm({
title: `确认${record.propertyStatus === 'normal' ? '冻结' : '解冻'}此物业?`,
title: '确认要申请当前对账吗?',
closable: true,
okText: `${record.propertyStatus === 'normal' ? '冻结' : '解冻'}`,
okText: '确认',
onOk() {
return freezeOrPropertyApi({
id: record.id,
status: `${record.propertyStatus === 'normal' ? 'freeze' : 'normal'}`,
return communitySubCompanyApi({
id: ids
}).then((res) => {
that.$message.success('申请对账成功!')
that.searchQuery()
})
},
onCancel() {},
}
})
},
handlePerssion(roleId) {
this.$refs.modalUserRole.show(roleId)
},
loadData() {
console.log('不请求')
}
},
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论