提交 a92047ee authored 作者: 宋雄's avatar 宋雄

功能优化

上级 642a9455
NODE_ENV=development NODE_ENV=development
# VUE_APP_API_BASE_URL='http://192.168.0.119:9999' VUE_APP_API_BASE_URL='http://192.168.0.104:9999'
VUE_APP_API_BASE_URL='http://220.203.25.212:9999' # VUE_APP_API_BASE_URL='http://220.203.25.212:9999'
VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview
......
...@@ -74,6 +74,13 @@ const callAssetSubmitApi = (params)=>postAction("/property-community/asset/prope ...@@ -74,6 +74,13 @@ const callAssetSubmitApi = (params)=>postAction("/property-community/asset/prope
// 公告详情 // 公告详情
const queryNoticeCommunityApi = (params)=>getAction("/property-company/notice/companyNotice/queryNoticeCommunityRefByMainId",params); const queryNoticeCommunityApi = (params)=>getAction("/property-company/notice/companyNotice/queryNoticeCommunityRefByMainId",params);
// 对账管理
const getDetailReconciliationApi = (params)=>getAction("/property-community/property/communityReconciliation/queryById",params);
const getAccountListByIdApi = (params)=>getAction("/property-community/property/communityReconciliation/getAccountListById",params);
const companyAuditAccountPageApi = (params)=>postAction("/property-community/property/communityReconciliation/companyAudit",params);
const getCommunityRecordListApi = (params)=>getAction("/property-central/property/auditRecord/getRecordList",params);
const companySubCentralApi = (params)=>getAction("/property-community/property/communityReconciliation/companySubCentral",params);
//数据字典 //数据字典
const addDict = (params)=>postAction("/sys/dict/add",params); const addDict = (params)=>postAction("/sys/dict/add",params);
const editDict = (params)=>putAction("/sys/dict/edit",params); const editDict = (params)=>putAction("/sys/dict/edit",params);
...@@ -183,7 +190,12 @@ export { ...@@ -183,7 +190,12 @@ export {
getCommunityListApi, getCommunityListApi,
getCapitalCommunityListApi, getCapitalCommunityListApi,
callAssetSubmitApi, callAssetSubmitApi,
queryNoticeCommunityApi queryNoticeCommunityApi,
getDetailReconciliationApi,
getAccountListByIdApi,
companyAuditAccountPageApi,
getCommunityRecordListApi,
companySubCentralApi,
} }
......
// 与业主关系
export const RELATION_SHIP = [
{label: '业主', value: 'self'},
{label: '租户', value: 'tenant'},
{label: '亲人', value: 'relative'},
{label: '朋友', value: 'friend'},
{label: '其他', value: 'other'}
]
// 紧急程度 // 紧急程度
export const URGENT_DEGREE = [ export const URGENT_DEGREE = [
{label: '一般', value: 'usual'}, {label: '一般', value: 'usual'},
...@@ -16,6 +25,29 @@ export const NOTICE_STATUS = [ ...@@ -16,6 +25,29 @@ export const NOTICE_STATUS = [
{label: '待发布', value: 'waitPublish'} {label: '待发布', value: 'waitPublish'}
] ]
// 付费周期
export const CHARGING_CYCLE = [
{label: '每月', value: '1'},
{label: '每季度', value: '2'},
{label: '每年', value: '3'},
{label: '一次性付清', value: '4'},
{label: '预付', value: '5'}
]
// 物业对账审核状态
export const COMPANY_AUDIT_STATUS = [
{label: '物业待审核', value: 'companyWaitAudit'},
{label: '物业审核通过', value: 'companyAuditPass'},
{label: '物业审核驳回', value: 'companyRefuse'}
]
// 总平台对账审核状态
export const CENTRAL_AUDIT_STATUS = [
{label: '总平台待审核', value: 'centralWaitAudit'},
{label: '总平台审核通过', value: 'centralAuditPass'},
{label: '总平台审核驳回', value: 'centralRefuse'}
]
/** /**
* 翻译字段值对应的文本 * 翻译字段值对应的文本
* @param children * @param children
...@@ -25,5 +57,6 @@ export function filterDictTextByStatic(dictList, value) { ...@@ -25,5 +57,6 @@ export function filterDictTextByStatic(dictList, value) {
if(!dictList || dictList.length === 0){ if(!dictList || dictList.length === 0){
return; return;
} }
return dictList.find(item=>item.value === value).label let obj = dictList.find(item=>item.value == value)
return obj ? obj.label : ''
} }
\ No newline at end of file
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
:collapsible="collapsible" :collapsible="collapsible"
v-model="collapsed" v-model="collapsed"
:trigger="null"> :trigger="null">
<logo :showTitle="false" /> <logo :showTitle="true" />
<s-menu <s-menu
:collapsed="collapsed" :collapsed="collapsed"
:menu="menus" :menu="menus"
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
props: { props: {
title: { title: {
type: String, type: String,
default: '汉星科技', default: '物业集团管理后台',
required: false required: false
}, },
showTitle: { showTitle: {
......
...@@ -6,156 +6,216 @@ ...@@ -6,156 +6,216 @@
<a-button @click="onCancel">返回</a-button> <a-button @click="onCancel">返回</a-button>
<a-button type="danger" @click="onExamine(2)" v-if="pageType == '2'">审核驳回</a-button> <a-button type="danger" @click="onExamine(2)" v-if="pageType == '2'">审核驳回</a-button>
<a-button type="primary" @click="onExamine(1)" v-if="pageType == '2'">审核通过</a-button> <a-button type="primary" @click="onExamine(1)" v-if="pageType == '2'">审核通过</a-button>
<a-button type="primary" @click="onExamine(3)" v-if="pageType == '3'">确认</a-button>
</div> </div>
</div> </div>
<j-form-container :disabled="pageType !== '3'"> <j-form-container :disabled="true">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail"> <a-form-model ref="form" :model="model" slot="detail">
<a-card title="对账信息"> <a-card title="对账信息">
<a-row> <a-row>
<a-col :span="12"> <a-col :span="12">
<a-form-model-item label="对账单号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="propertyName"> <a-form-model-item label="对账单号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="id">
<a-input v-model="model.propertyName" placeholder="请输入对账单号"></a-input> <a-input v-model="model.id" placeholder="请输入对账单号"></a-input>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-model-item label="对账开始时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="creditCode"> <a-form-model-item label="对账开始时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reconciliationBeginDate">
<a-input v-model="model.creditCode" placeholder="请输入对账开始时间"></a-input> <a-input v-model="model.reconciliationBeginDate" placeholder="请输入对账开始时间"></a-input>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-model-item label="对账结束时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="legalName"> <a-form-model-item label="对账结束时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reconciliationEndDate">
<a-input v-model="model.legalName" placeholder="请输入对账结束时间"></a-input> <a-input v-model="model.reconciliationEndDate" placeholder="请输入对账结束时间"></a-input>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-model-item label="操作人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="registCapital"> <a-form-model-item label="操作人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createBy">
<a-input-number v-model="model.registCapital" :min="1" placeholder="请输入操作人" style="width: 100%" /> <a-input-number v-model="model.createBy" :min="1" placeholder="请输入操作人" style="width: 100%" />
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-model-item label="操作日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="contactName"> <a-form-model-item label="操作日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createTime">
<a-input v-model="model.contactName" placeholder="请输入操作日期"></a-input> <a-input v-model="model.createTime" placeholder="请输入操作日期"></a-input>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
</a-card> </a-card>
</a-form-model>
</j-form-container>
<a-card title="对账明细"> <a-card title="对账明细">
<p>已选择{{dataSource.length}}个缴费单,共计<span style="color:red">{{model.reconciliationAmount}}</span></p>
<a-row> <a-row>
<div> <div>
<a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="columns" <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"> :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> </a-table>
</div> </div>
</a-row> </a-row>
</a-card> </a-card>
</a-form-model> <a-card title="审核记录">
</j-form-container> <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> </a-spin>
</template> </template>
<script> <script>
import { getPropertyChargruleListApi, getPropertyDetailApi, auditPropertyApi } from '@/api/api' import { getDetailReconciliationApi, getAccountListByIdApi, getCommunityRecordListApi, companyAuditAccountPageApi } from '@/api/api'
import { httpAction, getAction } from '@/api/manage' import { httpAction, getAction } from '@/api/manage'
import { isMobile, validateCreditCode } from '@/utils/validate'
import { JeecgListMixin } from '@/mixins/JeecgListMixin' import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { PAYMENT_STATUS, RELATION_SHIP, filterDictTextByStatic, } from '@/assets/static.js'
const columns = [ const columns = [
{ {
title: '所属小区', title: '收费类型',
dataIndex: 'propertyName', dataIndex: 'chargeTypeName',
key: 'propertyName', key: 'chargeTypeName',
width: 120,
align: 'center', align: 'center',
}, },
{ {
title: '费用项目', title: '收费项目',
dataIndex: 'creditCode', dataIndex: 'chargeItem',
key: 'creditCode', key: 'chargeItem',
align: 'center', width: 220,
},
{
title: '业主',
dataIndex: 'reconciliationBeginDate',
key: 'reconciliationBeginDate',
align: 'center', align: 'center',
}, },
{ {
title: '与业主关系', title: '与业主关系',
dataIndex: 'reaship', dataIndex: 'relationShip',
key: 'reaship', key: 'relationShip',
width: 120,
align: 'center', align: 'center',
customRender: function (text) {
return filterDictTextByStatic(RELATION_SHIP, text)
},
}, },
{ {
title: '住户', title: '住户',
dataIndex: 'reconcilname', dataIndex: 'residentPhone',
key: 'reconcilname', key: 'residentPhone',
width: 160,
scopedSlots: { customRender: 'residentPhone' },
align: 'center', align: 'center',
}, },
{ {
title: '房屋编号', title: '房屋编号',
dataIndex: 'reconciliationEndDate', dataIndex: 'roomId',
key: 'reconciliationEndDate', scopedSlots: { customRender: 'roomId' },
key: 'roomId',
width: 140,
align: 'center', align: 'center',
}, },
{ {
title: '费用', title: '金额(元)',
dataIndex: 'reconciliationAmount', dataIndex: 'totalAmount',
key: 'reconciliationAmount', key: 'totalAmount',
width: 120,
align: 'center', align: 'center',
}, },
{ {
title: '缴费日期', title: '本期读表时间',
dataIndex: 'updateTime', dataIndex: 'meterReadingTime',
key: 'updateTime', key: 'meterReadingTime',
width: 150,
align: 'center', align: 'center',
}, },
{ // {
title: '缴费单号', // title: '缴费状态',
dataIndex: 'empowerCommunityNum', // dataIndex: 'paymentStatus',
key: 'empowerCommunityNum', // key: 'paymentStatus',
// width: 120,
// align: 'center',
// customRender: function (text) { // customRender: function (text) {
// return filterDictTextByCache('companyAuditStatus', text) // return filterDictTextByStatic(PAYMENT_STATUS, text)
// },
// }, // },
{
title: '缴费单号',
dataIndex: 'paymentNum',
key: 'paymentNum',
width: 120,
align: 'center',
},
{
title: '缴费日期',
dataIndex: 'paymentTime',
key: 'paymentTime',
width: 150,
align: 'center',
}, },
{ {
title: '创建日期', title: '创建日期',
dataIndex: 'createTime',
key: 'createTime',
width: 150,
align: 'center',
}
]
const recordColumns = [
{
title: '审核平台',
dataIndex: 'platformName',
key: 'platformName',
width: 100,
align: 'center',
},
{
title: '审核状态',
dataIndex: 'auditStatus', dataIndex: 'auditStatus',
key: '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 { export default {
name: 'PropertySettledForm', name: 'PropertySettledForm',
inject: ['closeCurrent'], inject: ['closeCurrent'],
mixins: [JeecgListMixin], mixins: [JeecgListMixin],
data() { data() {
const validateToNextPhone = (rule, value, callback) => {
if (value && isMobile(value)) {
callback()
} else {
callback('请输入正确的联系人电话!')
}
}
const validateCode = (rule, value, callback) => {
if (value && validateCreditCode(value)) {
callback()
} else {
callback('社会统一信用代码输入错误')
}
}
return { return {
title: '', title: '',
pageType: '', pageType: '',
pcaa: this.$Jpcaa, model: {},
model: {
propertyName: '234234234',
creditCode: '2023-03-22',
legalName: '2023-06-22',
registCapital: 'ADMIN',
contactName: '2023-06-23',
image: ''
},
labelCol: { labelCol: {
xs: { span: 24 }, xs: { span: 24 },
sm: { span: 6 }, sm: { span: 6 },
...@@ -165,64 +225,31 @@ export default { ...@@ -165,64 +225,31 @@ export default {
sm: { span: 16 }, sm: { span: 16 },
}, },
confirmLoading: false, confirmLoading: false,
validatorRules: {
propertyName: [{ required: true, message: '请输入物业集团名称', trigger: 'blur' }],
creditCode: [{ required: true, message: '请输入统一信用代码', trigger: 'blur' }, { validator: validateCode }],
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: { url: {
add: '/property-central/property/propertySettled/add',
edit: '/property-central/property/propertySettled/edit',
queryById: '/property-central/property/propertySettled/queryById', queryById: '/property-central/property/propertySettled/queryById',
list: '/property-central/property/communityReconciliation/communityAccountPage' list: '/property-central/property/communityReconciliation/communityAccountPage'
}, },
costList: [],
mapRef: null,
columns: columns, columns: columns,
loading: false, recordColumns: recordColumns,
dataSource: [ recordList: [],
{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'}, auditDescription: ''
{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'},
]
} }
}, },
methods: { methods: {
async onLoadCostList() { async getCommunityReconciliation() {
let data = await getPropertyChargruleListApi() let formModel = await getDetailReconciliationApi({
this.costList = data.result id: this.$route.query.id
}, })
async getPageDetail() { this.model = {...formModel.result}
let { result } = await getPropertyDetailApi({ id: this.$route.query.id }) let formList = await getAccountListByIdApi({
this.edit(result) reconciliationId: this.$route.query.id
if (result.provinceName) { })
this.getLongitude( this.dataSource = [...formList.result.records]
result.provinceName, let record = await getCommunityRecordListApi({
result.provinceName + result.cityName + result.countyName + result.addressInfo, dataId: this.$route.query.id,
mapZoom[3] auditType: 'reconciliation'
) })
} this.recordList = [...record.result]
}, },
onCancel() { onCancel() {
this.closeCurrent() this.closeCurrent()
...@@ -238,116 +265,14 @@ export default { ...@@ -238,116 +265,14 @@ export default {
this.visible = true this.visible = true
}, },
onExamine(type) { onExamine(type) {
companyAuditAccountPageApi({
auditStatus: type === 1 ? 'auditPass' : 'refuse',
id: this.$route.query.id,
refuseDesc: this.auditDescription
}).then(res=> {
this.$message.success(`${type === 1 ? '审核' : '驳回'}成功!`)
this.closeCurrent() this.closeCurrent()
// const that = this
// if (type == 1) {
// return auditPropertyApi({
// id: this.$route.query.id,
// auditStatus: 'auditPass',
// }).then((res) => {
// that.$message.success('审核通过成功')
// that.$emit('ok')
// this.closeCurrent()
// })
// } else if (type == 2) {
// return auditPropertyApi({
// id: this.$route.query.id,
// auditStatus: 'refuse',
// }).then((res) => {
// that.$message.success('审核驳回成功')
// this.closeCurrent()
// })
// }
},
addressChange(val) {
const province = Object.keys(val[0])[0]
const city = Object.keys(val[1])[0]
const county = Object.keys(val[2])[0]
this.model.provinceName = val[0][province]
this.model.provinceCode = province
this.model.cityName = val[1][city]
this.model.cityCode = city
this.model.countyName = val[2][county]
this.model.countyCode = county
if (this.model.addressInfo) {
this.getLongitude(
this.model.provinceName,
this.model.provinceName + this.model.cityName + this.model.countyName + this.model.addressInfo,
mapZoom[3]
)
}
},
addressBlur(val) {
if (this.model.provinceName) {
this.getLongitude(
this.model.provinceName,
this.model.provinceName + this.model.cityName + this.model.countyName + val.target.value,
mapZoom[3]
)
}
},
getAddress(e) {
let _this = this
// 创建地理编码实例
var myGeo = new BMapGL.Geocoder()
// 根据坐标得到地址描述
myGeo.getLocation(new BMapGL.Point(e.latlng.lng, e.latlng.lat), function (result) {
if (result) {
_this.mapRef.clearOverlays()
_this.model.registAdress = [
result.addressComponents.province,
result.addressComponents.city,
result.addressComponents.district,
]
_this.model.addressInfo = result.addressComponents.street + result.addressComponents.streetNumber
_this.model.longitude = result.point.lng
_this.model.latitude = result.point.lat
_this.positionMap(e.latlng.lng, e.latlng.lat, mapZoom[3], result.address)
console.log(result)
}
})
},
positionMap(mapCenterLng, mapCenterLat, mapzoom, address) {
var point = new BMapGL.Point(mapCenterLng, mapCenterLat) // 创建点坐标
this.mapRef.centerAndZoom(point, mapzoom)
var marker = new BMapGL.Marker(point, { title: address }) // 创建标注
this.mapRef.addOverlay(marker) // 将标注添加到地图中
let _this = this
// marker.addEventListener("click", function(){
var label = new BMapGL.Label(address, {
// 创建文本标注
position: point, // 设置标注的地理位置
offset: new BMapGL.Size(0, -55), // 设置标注的偏移量
})
_this.mapRef.addOverlay(label) // 将标注添加到地图中
label.setStyle({
// 设置label的样式
color: '#333',
fontSize: '14px',
padding: '4px 10px',
border: '1px solid #1E90FF',
borderRadius: '4px',
transform: 'translateX(-40%)',
}) })
// });
},
getLongitude(city, address, zoom) {
let _this = this
var myGeo = new BMapGL.Geocoder()
myGeo.getPoint(
address,
function (point) {
if (point) {
_this.mapRef.clearOverlays()
_this.model.longitude = point.lng
_this.model.latitude = point.lat
_this.positionMap(point.lng, point.lat, zoom, address)
} else {
console.log('您选择的地址没有解析到结果!')
}
},
city
)
}, },
submitForm() { submitForm() {
const that = this const that = this
...@@ -386,22 +311,13 @@ export default { ...@@ -386,22 +311,13 @@ export default {
} }
}, },
mounted() { mounted() {
//备份model原始值
//this.modelDefault = JSON.parse(JSON.stringify(this.model))
// this.onLoadCostList()
this.pageType = this.$route.query.type this.pageType = this.$route.query.type
if (this.$route.query.type == '1') { if (this.$route.query.type == '1') {
this.title = '详情' this.title = '详情'
} else if (this.$route.query.type == '2') { } else{
this.title = '审核' this.title = '审核'
} else if (this.$route.query.type == '3') {
this.title = '新增对账'
} }
console.log(this.title) this.getCommunityReconciliation()
console.log(this.pageType)
// if (this.$route.query.id) {
// this.getPageDetail()
// }
} }
} }
</script> </script>
......
...@@ -6,19 +6,31 @@ ...@@ -6,19 +6,31 @@
<a-row :gutter="24"> <a-row :gutter="24">
<a-col :md="6" :sm="8"> <a-col :md="6" :sm="8">
<a-form-item label="对账单号"> <a-form-item label="对账单号">
<j-input placeholder="请输入对账单号" v-model="queryParam.propertyName"></j-input> <j-input placeholder="请输入对账单号" v-model="queryParam.id"></j-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :md="6" :sm="8"> <a-col :md="6" :sm="8">
<a-form-item label="小区名称"> <a-form-item label="小区名称">
<j-input placeholder="请输入小区名称" v-model="queryParam.propertyName"></j-input> <j-input placeholder="请输入小区名称" v-model="queryParam.platformName"></j-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :md="8" :sm="10"> <a-col :md="6" :sm="8">
<a-form-item label="缴费日期"> <a-form-item label="对账开始时间">
<a-range-picker @change="onChange" /> <a-date-picker placeholder="对账开始时间" valueFormat="YYYY-MM-DD 00:00:00" v-model="queryParam.beginDate"></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 23:59:59" v-model="queryParam.endDate"></a-date-picker>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :md="6" :sm="8">
<a-form-model-item label="对账状态">
<a-select style="width: 100%" v-model="queryParam.companyAuditStatus" placeholder="请选择对账状态">
<a-select-option v-for="item in audioStatusList" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24"> <a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery">查询</a-button> <a-button type="primary" @click="searchQuery">查询</a-button>
...@@ -31,67 +43,34 @@ ...@@ -31,67 +43,34 @@
<!-- 操作按钮区域 --> <!-- 操作按钮区域 -->
<div class="table-operator"> <div class="table-operator">
<a-button @click="propertyDetails(3)" type="primary" icon="plus">新增对账</a-button> <a-button :disabled="selectedRowKeys.length === 0" @click="onReconciliation()" type="primary" icon="audit">申请对账</a-button>
<!-- <a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button> -->
<!-- <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>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown> -->
</div> </div>
<!-- table区域-begin --> <!-- table区域-begin -->
<div> <div>
<!-- <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> <a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="columns" :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
<i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{
selectedRowKeys.length }}</a>&nbsp;&nbsp;
<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"
:dataSource="dataSource" :pagination="ipagination" :loading="loading" class="j-table-force-nowrap" @change="handleTableChange"> :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"> <span slot="action" slot-scope="text, record">
<a href="javascript:;" @click="propertyDetails(1, record.id)">详情</a> <a href="javascript:;" @click="propertyDetails(1, record.id)">详情</a>
<template v-if="record.companyAuditStatus === 'companyWaitAudit'">
<a-divider type="vertical" /> <a-divider type="vertical" />
<a href="javascript:;" @click="propertyDetails(2, record.id)">审核</a>
<!-- <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 href="javascript:;" @click="propertyDetails(2, record.id)">审核</a>
</a-menu-item> </template>
<a-menu-item> <template v-if="record.companyAuditStatus === 'companyAuditPass' && !record.centralAuditStatus">
<a href="javascript:;" @click="propertyDetails(3, record.id)">拨款</a> <a-divider type="vertical" />
</a-menu-item> <a href="javascript:;" @click="onReconciliation(record.id)">申请对账</a>
</a-menu> </template>
</a-dropdown> -->
</span> </span>
</a-table> </a-table>
</div> </div>
<!-- table区域-end --> <!-- table区域-end -->
</a-card> </a-card>
</template> </template>
<script> <script>
import { auditPropertyApi, freezeOrPropertyApi } from '@/api/api' import { companySubCentralApi } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin' import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { filterDictTextByCache } from '@/components/dict/JDictSelectUtil' import { filterDictTextByStatic, COMPANY_AUDIT_STATUS, CENTRAL_AUDIT_STATUS } from '@/assets/static.js'
const columns = [ const columns = [
{ {
...@@ -102,8 +81,8 @@ const columns = [ ...@@ -102,8 +81,8 @@ const columns = [
}, },
{ {
title: '所属小区', title: '所属小区',
dataIndex: 'creditCode', dataIndex: 'platformName',
key: 'creditCode', key: 'platformName',
align: 'center', align: 'center',
}, },
{ {
...@@ -126,30 +105,33 @@ const columns = [ ...@@ -126,30 +105,33 @@ const columns = [
}, },
{ {
title: '操作日期', title: '操作日期',
dataIndex: 'updateTime', dataIndex: 'createTime',
key: 'updateTime', key: 'createTime',
align: 'center', align: 'center',
}, },
{ {
title: '操作人', title: '操作人',
dataIndex: 'empowerCommunityNum', dataIndex: 'createBy',
key: 'empowerCommunityNum', key: 'createBy',
align: 'center', align: 'center',
}, },
{ {
title: '审核状态', title: '审核状态',
dataIndex: 'auditStatus', dataIndex: 'companyAuditStatus',
scopedSlots: { customRender: 'auditStatus' }, key: 'companyAuditStatus',
align: 'center', align: 'center',
customRender: function (text) {
return filterDictTextByStatic(COMPANY_AUDIT_STATUS, text)
}
}, },
{ {
title: '公司审核状态', title: '总平台审核状态',
dataIndex: 'companyAuditStatus', dataIndex: 'centralAuditStatus',
key: 'companyAuditStatus', key: 'centralAuditStatus',
align: 'center', align: 'center',
// customRender: function (text) { customRender: function (text) {
// return filterDictTextByCache('companyAuditStatus', text) return filterDictTextByStatic(CENTRAL_AUDIT_STATUS, text)
// }, },
}, },
{ {
title: '操作', title: '操作',
...@@ -166,25 +148,13 @@ export default { ...@@ -166,25 +148,13 @@ export default {
mixins: [JeecgListMixin], mixins: [JeecgListMixin],
data() { data() {
return { return {
// 表头 audioStatusList: COMPANY_AUDIT_STATUS,
columns: columns, columns: columns,
loading: false,
url: { url: {
list: '/property-central/property/communityReconciliation/list', list: '/property-community/property/communityReconciliation/companyAuditList',
delete: '/property-central/property/communityReconciliation/delete', delete: '/property-central/property/communityReconciliation/delete',
deleteBatch: '/property-central/property/communityReconciliation/deleteBatch', deleteBatch: '/property-central/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: { methods: {
...@@ -201,64 +171,24 @@ export default { ...@@ -201,64 +171,24 @@ export default {
this.handleDetail(record) this.handleDetail(record)
} }
}, },
onChange(date, dateString) { onReconciliation(id) {
if (dateString.length > 0) { let ids = id || this.selectedRowKeys.join(',')
this.queryParam.createTime_begin = dateString[0]
this.queryParam.createTime_end = dateString[1]
} else {
this.queryParam.createTime_begin = ''
this.queryParam.createTime_end = ''
}
},
onExamine(record) {
let that = this let that = this
this.$confirm({ this.$confirm({
title: '确认审核此物业?', title: '确认要申请当前对账吗?',
closable: true, closable: true,
okText: '审核通过', okText: '确认',
cancelText: '审核驳回',
onOk() { onOk() {
return auditPropertyApi({ return companySubCentralApi({
id: record.id, ids
auditStatus: 'auditPass',
}).then((res) => {
that.searchQuery()
})
},
onCancel() {
return auditPropertyApi({
id: record.id,
auditStatus: 'refuse',
}).then((res) => { }).then((res) => {
that.$message.success('申请对账成功!')
that.searchQuery() that.searchQuery()
}) })
}, }
})
},
onStatus(record) {
let that = this
this.$confirm({
title: `确认${record.propertyStatus === 'normal' ? '冻结' : '解冻'}此物业?`,
closable: true,
okText: `${record.propertyStatus === 'normal' ? '冻结' : '解冻'}`,
onOk() {
return freezeOrPropertyApi({
id: record.id,
status: `${record.propertyStatus === 'normal' ? 'freeze' : 'normal'}`,
}).then((res) => {
that.searchQuery()
})
},
onCancel() {},
}) })
},
handlePerssion(roleId) {
this.$refs.modalUserRole.show(roleId)
},
loadData() {
console.log('不请求')
} }
}, }
} }
</script> </script>
<style scoped> <style scoped>
......
...@@ -79,7 +79,6 @@ ...@@ -79,7 +79,6 @@
import {getChargeListApi, addReceiptTemplate} from '@/api/api' import {getChargeListApi, addReceiptTemplate} from '@/api/api'
import MyEditorWithMention from './components/MyEditorWithMention' import MyEditorWithMention from './components/MyEditorWithMention'
import VueHtml2pdf from "vue-html2pdf"; import VueHtml2pdf from "vue-html2pdf";
const tableHtml = '<table border="1" cellspacing="0" style="width: 100%;"><tbody><tr><th colSpan="1" rowSpan="1">序号</th><th colSpan="1" rowSpan="1">品名</th><th colSpan="1" rowSpan="1">产地品牌</th><th colSpan="1" rowSpan="1">规格型号</th><th colSpan="1" rowSpan="1">数量</th><th colSpan="1" rowSpan="1">税率</th><th colSpan="1" rowSpan="1">单位</th><th colSpan="1" rowSpan="1">单价</th><th colSpan="1" rowSpan="1">总金额(不含税)</th><th colSpan="1" rowSpan="1">税额</th><th colSpan="1" rowSpan="1">总金额(含税)</th><th colSpan="1" rowSpan="1">备注</th></tr><tr><td colspan="1" rowspan="1" style="text-align: center;">1</td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td></tr><tr><td colSpan="1" rowSpan="1">合计</td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td></tr><tr><td colSpan="3" rowSpan="1" style="text-align: center;">合同金额(大写):</td><td colSpan="9" rowSpan="1"></td></tr></tbody></table>'
export default { export default {
name: 'templateContractAdd', name: 'templateContractAdd',
...@@ -139,7 +138,7 @@ export default { ...@@ -139,7 +138,7 @@ export default {
typeName: this.model.templateType.label, typeName: this.model.templateType.label,
templateStyle: this.content templateStyle: this.content
}).then(res=> { }).then(res=> {
this.$message.warning(res.message); this.$message.success(res.message);
this.backbtn() this.backbtn()
}).finally(() => { }).finally(() => {
this.confirmLoading = false; this.confirmLoading = false;
...@@ -149,12 +148,11 @@ export default { ...@@ -149,12 +148,11 @@ export default {
}, },
handleSaveToPdf() { handleSaveToPdf() {
this.pdfOptions.filename = '收费模板' this.pdfOptions.filename = '收费模板'
this.content = this.$refs.editorHtml.curHtml.replace('<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%22e%22%7D">@产品列表</span></p>', tableHtml) // this.content = this.$refs.editorHtml.curHtml.replace('<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%22e%22%7D">@产品列表</span></p>', tableHtml)
console.log(this.content)
this.$refs.html2PdfDownLoad.generatePdf(); this.$refs.html2PdfDownLoad.generatePdf();
}, },
handlePreviewPdf() { handlePreviewPdf() {
this.content = this.$refs.editorHtml.curHtml.replace('<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%22e%22%7D">@产品列表</span></p>', tableHtml) // this.content = this.$refs.editorHtml.curHtml.replace('<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%22e%22%7D">@产品列表</span></p>', tableHtml)
// this.downloadFile = false // this.downloadFile = false
// this.previewModal = true // this.previewModal = true
this.$refs.html2PdfPreview.generatePdf() this.$refs.html2PdfPreview.generatePdf()
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
<a-menu slot="overlay"> <a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete" />删除</a-menu-item> <a-menu-item key="1" @click="batchDel"><a-icon type="delete" />删除</a-menu-item>
</a-menu> </a-menu>
<a-button style="margin-left: 8px">批量操作 <a-icon type="down" /></a-button> <a-button type="primary" style="margin-left: 8px">批量操作 <a-icon type="down" /></a-button>
</a-dropdown> </a-dropdown>
</div> </div>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论