提交 107189c3 authored 作者: 宋雄's avatar 宋雄

完善流程

......@@ -166,7 +166,9 @@
</a-col>
</a-row>
<a-modal :title="noticeTitle" :visible="visible" @cancel="handleCancel" :footer="null" width="40%">
<div class="notice-content">
<p v-html="noticeContent "></p>
</div>
</a-modal>
</div>
</template>
......@@ -452,4 +454,10 @@ export default {
}
}
}
.notice-content{
img{
width: 100%;
height: auto;
}
}
</style>
\ No newline at end of file
......@@ -30,28 +30,38 @@
<a-input v-model="model.createTime" placeholder="请输入"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="complaintImg">
<j-image-upload bizPath="scott/pic" accept="image/png, image/jpeg"
v-model="model.complaintImg"></j-image-upload>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="问题描述" :labelCol="{ xs: { span: 24 }, sm: { span: 2 } }" :wrapperCol="wrapperCol" prop="problemDesc">
<a-form-model-item label="问题描述" :labelCol="{ xs: { span: 24 }, sm: { span: 2 } }" :wrapperCol="wrapperCol"
prop="problemDesc">
<a-textarea v-model="model.problemDesc" placeholder="请输入" style="width:80%" />
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
<j-form-container v-if="!formDisabled">
<a-form-model ref="form" :model="form" :rules="validatorRules" slot="detail">
<j-form-container v-if="!formDisabled || model.handleStatus == 'finish'"
:disabled="model.handleStatus == 'finish'">
<a-form-model ref="form" :model="form" slot="detail">
<a-row>
<a-col :span="24">
<a-form-model-item label="处理状态" :labelCol="{ xs: { span: 24 }, sm: { span: 2 } }" :wrapperCol="wrapperCol" prop="handleStatus">
<a-select v-model="form.handleStatus" placeholder="请选择与业主关系" style="width:50%">
<a-select-option value="pending" v-if="model.handleStatus !== 'pending'">处理中</a-select-option>
<a-form-model-item label="处理状态" :labelCol="{ xs: { span: 24 }, sm: { span: 2 } }" :wrapperCol="wrapperCol"
prop="handleStatus">
<a-select v-model="form.handleStatus" placeholder="请选择处理状态" style="width:50%">
<a-select-option value="pending">处理中</a-select-option>
<a-select-option value="finish">处理完成</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="24" v-if="model.handleStatus === 'pending'">
<a-form-model-item label="处理结果" :labelCol="{ xs: { span: 24 }, sm: { span: 2 } }" :wrapperCol="wrapperCol" prop="handleResult">
<a-textarea v-model="model.handleResult" placeholder="请输入" style="width:80%" />
<a-col :span="24">
<a-form-model-item label="处理结果" :labelCol="{ xs: { span: 24 }, sm: { span: 2 } }" :wrapperCol="wrapperCol"
prop="handleResult">
<a-textarea v-model="form.handleResult" placeholder="请输入" style="width:80%" />
</a-form-model-item>
</a-col>
</a-row>
......@@ -67,17 +77,17 @@
</template>
<script>
import { querycommunityComplaintApi, auditCommunityComplaintApi} from '@/api/api'
export default {
import { querycommunityComplaintApi, auditCommunityComplaintApi } from '@/api/api'
export default {
name: 'PropertyChargruleForm',
inject:['closeCurrent'],
data () {
inject: ['closeCurrent'],
data() {
return {
currentStep: 1,
model:{},
model: {},
form: {
handleStatus: 'pending',
auditOpinion: ''
handleResult: '',
},
labelCol: {
xs: { span: 24 },
......@@ -87,50 +97,45 @@
xs: { span: 24 },
sm: { span: 20 },
},
validatorRules: {
handleStatus: [{ required: true, message: '请选择处理状态', trigger: 'change' }],
handleResult: [{ required: true, message: '请输入处理结果', trigger: 'blur' }]
},
confirmLoading: false,
}
},
computed: {
formDisabled(){
formDisabled() {
return this.$route.query.type === '1'
},
},
created () {
created() {
//备份model原始值
this.getDetail()
},
methods: {
async getDetail() {
this.confirmLoading = true
let {result} = await querycommunityComplaintApi({id: this.$route.query.id})
if(result.handleStatus === 'pending') {
this.form.handleStatus = 'finish'
let { result } = await querycommunityComplaintApi({ id: this.$route.query.id })
this.model = { ...result }
if (this.model.handleStatus == 'finish') {
this.form.handleStatus = this.model.handleStatus
this.form.handleResult = this.model.handleResult
}
this.model = {...result}
this.confirmLoading = false
},
onReturn() {
this.closeCurrent()
this.$store.dispatch('tags/delView', this.$route.path)
this.$router.go(-1)
},
onSubmit() {
this.$refs.form.validate(async valid => {
if (valid) {
async onSubmit() {
let res = await auditCommunityComplaintApi({
...this.model,
id: this.$route.query.id,
handleStatus: this.form.handleStatus
})
this.$message.success(res.message);
this.closeCurrent()
}
handleStatus: this.form.handleStatus,
handleResult: this.form.handleResult,
})
}
}
}
this.$message.success(res.message)
this.$store.dispatch('tags/delView', this.$route.path)
this.$router.go(-1)
},
},
}
</script>
<style scoped lang="less">
......
......@@ -6,7 +6,7 @@
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="业主姓名">
<a-input placeholder="请输入业主姓名" v-model="queryParam.employeeName"></a-input>
<a-input placeholder="请输入业主姓名" v-model="queryParam.ownerName"></a-input>
</a-form-item>
</a-col>
......@@ -29,11 +29,16 @@
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="onMeterReading" type="primary" icon="plus">抄表</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button>
<a-button icon="download" @click="downloadExportXls()">模板下载</a-button>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader"
:action="importExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import">导入</a-button>
</a-upload>
<a-button type="primary" icon="download" @click="handleExportXls('生活缴费')">导出</a-button>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="onBatchCallpay"><a-icon type="message"/>催缴</a-menu-item>
<a-menu-item key="2" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
<a-menu-item key="1" @click="onBatchCallpay"><a-icon type="message" />催缴</a-menu-item>
<a-menu-item key="2" @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>
......@@ -47,24 +52,12 @@
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div>
<a-table
ref="table"
size="middle"
:scroll="{ x: 1500, y: 300 }"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{
<a-table ref="table" size="middle" :scroll="{ x: 1500}" 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"
>
}" class="j-table-force-nowrap" @change="handleTableChange">
<span slot="ownerId" slot-scope="text, record">
<span>{{record.ownerName}}{{record.ownerPhone}}</span>
</span>
......@@ -77,9 +70,9 @@
<span slot="action" slot-scope="text, record">
<a @click="onDetail(record.id)">查看</a>
<template v-if="record.paymentStatus === 'unPaid'">
<a-divider type="vertical"/>
<a-divider type="vertical" />
<a @click="onCallPay(record.id)">催缴</a>
<a-divider type="vertical"/>
<a-divider type="vertical" />
<a @click="handleDelete(record)">删除</a>
</template>
</span>
......@@ -95,25 +88,26 @@
</template>
<script>
import { getBuildingListApi, getUnitListApi, getRoomListApi, callPayMentApi } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import NoticeModal from './modules/NoticeModal'
import {PAYMENT_STATUS, RELATION_SHIP, filterDictTextByStatic} from '@/assets/static.js'
import { getBuildingListApi, getUnitListApi, getRoomListApi, callPayMentApi } from '@/api/api'
import { downFile } from '@/api/manage'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import NoticeModal from './modules/NoticeModal'
import { PAYMENT_STATUS, RELATION_SHIP, filterDictTextByStatic } from '@/assets/static.js'
const columns = [
const columns = [
{
title: '收费类型',
dataIndex: 'chargeTypeName',
key: 'chargeTypeName',
width: 120,
align: 'center'
align: 'center',
},
{
title: '收费项目',
dataIndex: 'chargeItem',
key: 'chargeItem',
width: 120,
align: 'center'
align: 'center',
},
{
title: '业主',
......@@ -121,7 +115,7 @@
key: 'ownerId',
width: 160,
scopedSlots: { customRender: 'ownerId' },
align: 'center'
align: 'center',
},
{
title: '与业主关系',
......@@ -129,9 +123,9 @@
key: 'relationShip',
width: 120,
align: 'center',
customRender: function(text) {
return filterDictTextByStatic(RELATION_SHIP, text);
}
customRender: function (text) {
return filterDictTextByStatic(RELATION_SHIP, text)
},
},
{
title: '住户',
......@@ -139,7 +133,7 @@
key: 'residentPhone',
width: 160,
scopedSlots: { customRender: 'residentPhone' },
align: 'center'
align: 'center',
},
{
title: '房屋编号',
......@@ -147,21 +141,21 @@
scopedSlots: { customRender: 'roomId' },
key: 'roomId',
width: 140,
align: 'center'
align: 'center',
},
{
title: '金额(元)',
dataIndex: 'totalAmount',
key: 'totalAmount',
width: 120,
align: 'center'
align: 'center',
},
{
title: '本期读表时间',
dataIndex: 'meterReadingTime',
key: 'meterReadingTime',
width: 150,
align: 'center'
align: 'center',
},
{
title: '缴费状态',
......@@ -169,30 +163,30 @@
key: 'paymentStatus',
width: 120,
align: 'center',
customRender: function(text) {
return filterDictTextByStatic(PAYMENT_STATUS, text);
}
customRender: function (text) {
return filterDictTextByStatic(PAYMENT_STATUS, text)
},
},
{
title: '缴费单号',
dataIndex: 'paymentNum',
key: 'paymentNum',
width: 120,
align: 'center'
align: 'center',
},
{
title: '缴费日期',
dataIndex: 'paymentTime',
key: 'paymentTime',
width: 150,
align: 'center'
align: 'center',
},
{
title: '创建日期',
dataIndex: 'createTime',
key: 'createTime',
width: 150,
align: 'center'
align: 'center',
},
{
title: '操作',
......@@ -200,84 +194,109 @@
scopedSlots: { customRender: 'action' },
align: 'center',
width: 150,
fixed: 'right'
}
]
fixed: 'right',
},
]
export default {
export default {
name: 'PermissionListAsync',
mixins: [JeecgListMixin],
components: {NoticeModal},
components: { NoticeModal },
data() {
return {
// 表头
columns: columns,
url: {
list: "/property-community/payment/communityPayment/list",
list: '/property-community/payment/communityPayment/list',
delete: '/property-community/payment/communityPayment/delete',
deleteBatch: '/property-community/payment/communityPayment/deleteBatch'
deleteBatch: '/property-community/payment/communityPayment/deleteBatch',
exportXlsUrl: '/property-community/payment/communityPayment/exportXls',
importExcelUrl: 'property-community/payment/communityPayment/importExcel',
downloadExcelUrl: '/property-community/payment/communityPayment/downloadPaymentTemplate',
},
treeData: []
treeData: [],
}
},
created () {
created() {
this.getBuildingList()
// this.initDictData()
},
computed: {
importExcelUrl: function () {
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
},
},
methods: {
onCheckboxProps(record) {
let props = {
disabled: record.paymentStatus === 'paid',
name: record.chargeTypeName
name: record.chargeTypeName,
}
return props
},
async getBuildingList() {
let {result} = await getBuildingListApi()
this.treeData = result.map(item=> {
let { result } = await getBuildingListApi()
this.treeData = result.map((item) => {
return {
title: item.buildingName,
key: item.id
key: item.id,
}
})
},
onClickTree(value, optios) {
console.log(value, optios)
onClickTree(value, option) {
console.log(value, option)
let level = option.node.pos.split('-').length
if (level === 2) {
this.queryParam['buildingId'] = value[0]
this.queryParam['unitId'] = undefined
this.queryParam['roomId'] = undefined
}
if (level === 3) {
this.queryParam['buildingId'] = undefined
this.queryParam['unitId'] = value[0]
this.queryParam['roomId'] = undefined
}
if (level === 4) {
this.queryParam['buildingId'] = undefined
this.queryParam['unitId'] = undefined
this.queryParam['roomId'] = value[0]
}
this.searchQuery()
},
onLoadData(treeNode) {
return new Promise(async resolve => {
return new Promise(async (resolve) => {
if (treeNode.dataRef.children) {
resolve();
return;
resolve()
return
}
if(treeNode.pos.split('-').length === 2) {
let {result} = await getUnitListApi({id: treeNode.eventKey})
treeNode.dataRef.children = result.map(item=> {
if (treeNode.pos.split('-').length === 2) {
let { result } = await getUnitListApi({ id: treeNode.eventKey })
treeNode.dataRef.children = result.map((item) => {
return {
title: item.unitName,
key: item.id
key: item.id,
}
})
this.treeData = [...this.treeData];
resolve();
this.treeData = [...this.treeData]
resolve()
} else {
let {result} = await getRoomListApi({id: treeNode.eventKey})
treeNode.dataRef.children = result.map(item=> {
let { result } = await getRoomListApi({ id: treeNode.eventKey })
treeNode.dataRef.children = result.map((item) => {
return {
title: item.roomNum,
key: item.id,
isLeaf: true
isLeaf: true,
}
})
this.treeData = [...this.treeData];
resolve();
this.treeData = [...this.treeData]
resolve()
}
});
})
},
onMeterReading() {
this.$refs.modalForm.add();
this.$refs.modalForm.title = "抄表";
this.$refs.modalForm.disableSubmit = false;
this.$refs.modalForm.add()
this.$refs.modalForm.title = '抄表'
this.$refs.modalForm.disableSubmit = false
},
onBatchCallpay() {
// console.log(this.selectionRows)
......@@ -286,34 +305,58 @@
},
onDetail(id) {
this.$router.push({
path: '/property/living-detail?id=' + id
});
path: '/property/living-detail?id=' + id,
})
},
onCallPay(chooseIds) {
let that = this
this.$confirm({
title: "催缴账单",
content: "是否催缴当前选择的账单发送给对应业主?",
title: '催缴账单',
content: '是否催缴当前选择的账单发送给对应业主?',
onOk: function () {
that.loading = true;
callPayMentApi({chooseIds}).then((res) => {
that.loading = true
callPayMentApi({ chooseIds })
.then((res) => {
if (res.success) {
//重新计算分页问题
that.$message.success(res.message);
that.$message.success(res.message)
// that.searchQuery();
that.onClearSelected();
that.onClearSelected()
} else {
that.$message.warning(res.message);
}
}).finally(() => {
that.loading = false;
});
}
});
that.$message.warning(res.message)
}
})
.finally(() => {
that.loading = false
})
},
})
},
downloadExportXls() {
let fileName = '生活缴费模板'
downFile(this.url.downloadExcelUrl, '').then((data) => {
if (!data) {
this.$message.warning('文件下载失败')
return
}
if (typeof window.navigator.msSaveBlob !== 'undefined') {
window.navigator.msSaveBlob(new Blob([data], { type: 'application/vnd.ms-excel' }), fileName + '.xls')
} else {
let url = window.URL.createObjectURL(new Blob([data], { type: 'application/vnd.ms-excel' }))
let link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', fileName + '.xls')
document.body.appendChild(link)
link.click()
document.body.removeChild(link) //下载完成移除元素
window.URL.revokeObjectURL(url) //释放掉blob对象
}
})
},
},
}
</script>
<style scoped>
@import '~@assets/less/common.less';
@import '~@assets/less/common.less';
</style>
\ No newline at end of file
......@@ -11,7 +11,7 @@
</a-col>
<a-col :md="6" :sm="8">
<a-form-model-item label="工单状态">
<a-select style="width: 100%" v-model="queryParam.useTo" placeholder="请选择工单状态">
<a-select style="width: 100%" v-model="queryParam.repairStatus" placeholder="请选择工单状态">
<a-select-option v-for="item in repairStatus" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-model-item>
......
......@@ -4,15 +4,15 @@
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="12">
<a-form-model-item label="支付订单号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderNo">
<a-input v-model="model.orderNo" placeholder="请输入支付订单号"></a-input>
<a-form-model-item label="支付订单号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="paymentNum">
<a-input v-model="model.paymentNum" placeholder="请输入支付订单号"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="支付金额" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chargeMoney">
<a-input v-model="model.chargeMoney" placeholder="请输入支付金额"></a-input>
<!-- <a-col :span="12">
<a-form-model-item label="支付金额" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="totalAmount">
<a-input v-model="model.totalAmount" 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="ownerName">
<a-input v-model="model.ownerName" placeholder="请输入业主"></a-input>
......@@ -24,15 +24,13 @@
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="缴费类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chargeType">
<a-select style="width: 100%" v-model="model.chargeType" placeholder="请选择缴费类型">
<a-select-option v-for="item in dictOptions" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-select>
<a-form-model-item label="缴费类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chargeItem">
<a-input v-model="model.chargeItem" placeholder="请输入房屋编号"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="缴费金额" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chargeMoney">
<a-input v-model="model.chargeMoney" placeholder="请输入缴费金额"></a-input>
<a-form-model-item label="缴费金额" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="totalAmount">
<a-input v-model="model.totalAmount" placeholder="请输入缴费金额"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
......@@ -41,16 +39,13 @@
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="缴费时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="updateTime">
<a-input v-model="model.updateTime" placeholder="请输入缴费时间"></a-input>
<a-form-model-item label="缴费时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="paymentTime">
<a-input v-model="model.paymentTime" placeholder="请输入缴费时间"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="收据状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="receiptStatus">
<a-select style="width: 100%" v-model="model.receiptStatus" placeholder="请选择收据状态">
<a-select-option value="1">在职</a-select-option>
<a-select-option value="0">离职</a-select-option>
</a-select>
<span :style="{'color': model.receiptStatus === '1' ? 'green' : 'red'}">{{model.receiptStatus === '1' ? '是' : '否'}}</span>
</a-form-model-item>
</a-col>
</a-row>
......
......@@ -6,7 +6,7 @@
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="订单编号">
<a-input placeholder="请输入订单编号" v-model="queryParam.orderNo"></a-input>
<a-input placeholder="请输入订单编号" v-model="queryParam.paymentNum"></a-input>
</a-form-item>
</a-col>
<!-- <a-col :md="6" :sm="8">
......@@ -68,13 +68,13 @@
class="j-table-force-nowrap"
@change="handleTableChange"
>
<span slot="employeeStatus" slot-scope="text, record">
<span :style="{'color': record.employeeStatus === '1' ? 'green' : 'red'}">{{record.employeeStatus === '1' ? '在职' : '离职'}}</span>
<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)">开收据</a>
<a @click="onIssueReceipt(record)" style="margin-left: 10px;">开收据</a>
<!-- <a-divider type="vertical"/>
<a-dropdown>
......@@ -117,14 +117,14 @@
},
{
title: '业主',
dataIndex: 'ownerId',
key: 'ownerId',
dataIndex: 'ownerName',
key: 'ownerName',
align: 'center'
},
{
title: '订单编号',
dataIndex: 'orderNo',
key: 'orderNo',
dataIndex: 'paymentNum',
key: 'paymentNum',
align: 'center',
// customRender: function(text) {
// return filterDictTextByCache('duties', text);
......@@ -132,8 +132,8 @@
},
{
title: '缴费类型',
dataIndex: 'chargeType',
key: 'chargeType',
dataIndex: 'chargeItem',
key: 'chargeItem',
// scopedSlots: { customRender: 'employeeStatus' },
align: 'center'
},
......@@ -145,19 +145,20 @@
},
{
title: '缴费金额',
dataIndex: 'chargeMoney',
key: 'chargeMoney',
dataIndex: 'totalAmount',
key: 'totalAmount',
align: 'center'
},
{
title: '缴费时间',
dataIndex: 'createTime',
key: 'createTime',
dataIndex: 'paymentTime',
key: 'paymentTime',
align: 'center'
},
{
title: '收据状态',
dataIndex: 'receiptStatus',
scopedSlots: { customRender: 'receiptStatus' },
key: 'receiptStatus',
align: 'center'
},
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论