You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

240 lines
8.4 KiB

<template>
<div class="app-container">
<div class="filter-container">
<sticky style="margin-bottom: 10px;">
<div class="sub-navbar">
<el-input ref="seaialNumberF" v-model="listQuery.serialNumber" placeholder="收费单号" clearable style="width: 260px" @keyup.enter.native="handleFilter" />
<el-input v-model="listQuery.inspectedUnit" placeholder="缴款单位" clearable style="width: 360px" @keyup.enter.native="handleFilter" />
<el-button type="primary" icon="el-icon-search" @click="handleFilter">
查询
</el-button>
<el-button type="success" @click="updateJfState">
<svg-icon icon-class="charge" />确认收费
</el-button>
<el-button type="warning" @click="bohuiSfd">
驳回
</el-button>
</div>
</sticky>
</div>
<el-table
ref="list"
v-adaptive="{bottomOffset: 50}"
height="0"
:data="list"
element-loading-text="拼命加载中"
border
fit
highlight-current-row
stripe
width="100%"
:row-class-name="tableRowFileState"
@row-click="onRowClick"
@selection-change="handleSelectionChange"
@sort-change="sortChange"
>
<el-table-column fixed="left" type="selection" width="40" />
<el-table-column fixed="left" align="center" label="序号" width="60" type="index" />
<el-table-column align="center" label="最后修改日期" prop="updateTime" width="160" />
<el-table-column align="center" label="设备种类" :formatter="formatter.formatEquipment" prop="shebeizhongleidaima" width="100" />
<el-table-column align="center" label="收费单号" prop="serialNumber" width="160" />
<el-table-column align="center" label="缴款码单号" prop="paymentCode" width="160" />
<el-table-column align="center" label="使用单位" prop="inspectedUnit" sortable="custom" />
<el-table-column align="center" label="缴款单位" prop="invoiceHeader" sortable="custom" />
<el-table-column align="center" label="缴费方式" prop="payMode" width="155" />
<el-table-column align="center" label="备注" prop="record" />
<el-table-column :formatter="formatter.moneyFormat" align="center" label="缴款金额" prop="totalAmount" width="140">
<template slot-scope="{row}">
{{ row.supplyState ? '补交:' + row.supplyAmount : row.totalAmount }}
</template>
</el-table-column>
<el-table-column align="center" label="补交状态" prop="supplyState" width="120">
<template slot-scope="scope">
<el-tag v-if="scope.row.supplyState" type="danger">
</el-tag>
<el-tag v-else type="success">
</el-tag>
</template>
</el-table-column>
<el-table-column align="center" label="当前状态" prop="fileState" width="120">
<template slot-scope="scope">
<el-tag v-if="scope.row.fileState === 0" type="info">
待资料上传
</el-tag>
<el-tag v-else-if="scope.row.fileState === 1" type="primary">
待审核
</el-tag>
<el-tag v-else-if="scope.row.fileState === 2" type="danger">
已驳回
</el-tag>
<el-tag v-else-if="scope.row.fileState === 3" type="success">
已通过
</el-tag>
</template>
</el-table-column>
<el-table-column fixed="right" align="center" label="操作" width="140">
<template slot-scope="scope">
<el-button type="success" size="small" circle icon="el-icon-view" title="预览缴费凭证" @click="viewJFPZ(scope.row.fileName)" />
</template>
</el-table-column>
</el-table>
<pagination v-show="totalCount>0" :total="totalCount" :page-num.sync="listQuery.pageNum" :page-row.sync="listQuery.pageSize" @pagination="getList" />
<el-dialog title="驳回当前收费单" :modal-append-to-body="false" :visible.sync="dialogFileStateVisible" width="450px" @close="dialogFileStateVisible = false">
<el-form ref="form" :model="bill" label-width="80px">
<el-form-item label="驳回原因">
<el-input v-model="bill.record" type="textarea" placeholder="请填写驳回的原因" />
</el-form-item>
</el-form>
<div style="text-align: right">
<el-button type="primary" @click="updateFileState">
提交
</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import Sticky from '@/components/Sticky'
import Pagination from '@/components/Pagination'
import axios from 'axios'
export default {
name: 'JiaoFeiDanDaiShouFei', // 待收费单位
components: { Sticky, Pagination },
data() {
return {
totalCount: 0,
listQuery: {
pageNum: 1, // 页码
pageSize: 20, // 每页条数
paymentCodeIsNull: false, // 是否查看缴款码为空的数据
isUploadCredential: false, // 是否已经上传缴费凭证
jfState: false,
order: 'updateTime', // 排序字段
sort: 'desc' // 排序方式
},
bill: {
record: ''
},
multipleSelection: [],
dialogFileStateVisible: false,
list: [],
bjd: []
}
},
created() {
this.getList()
},
mounted() {
this.$refs.seaialNumberF.focus()
},
methods: {
handleFilter() {
// 查询事件
this.listQuery.pageNum = 1
this.getList()
},
getList() {
this.apibjd({
url: '/charge/pageList',
method: 'get',
params: this.listQuery
}).then(data => {
this.list = data.list
this.totalCount = data.total
this.common.switchInspection(this.list)
})
},
onRowClick(row) {
this.$refs.list.toggleRowSelection(row)
},
handleSelectionChange: function(val) {
this.multipleSelection = val
},
sortChange(column) {
this.listQuery.order = column.prop
this.listQuery.sort = column.order.replace('ending', '')
this.getList()
},
viewJFPZ(fileName) {
// 缴费凭证预览查看
if (fileName) {
const path = process.env.VUE_APP_BASE_API + 'showImage/voucher/' + fileName
this.$router.push({ name: 'ImagePreview', params: { src: path }})
} else {
this.$message.warning('暂无上传交费凭据!')
}
},
updateJfState() {
if (this.multipleSelection.length !== 1) {
this.$message({ message: '只允许一条缴费单进行确认。', type: 'warning' })
return false
}
this.$confirm('确认要将该收费单设置为已收费吗?', '提示', {
confirmButtonText: '确定',
showCancelButton: true,
type: 'warning'
}).then(() => {
this.apibjd({
url: '/charge/updateRenwuSfStateByBillId',
method: 'get',
params: {
billId: this.multipleSelection[0].id
}
}).then(data => {
this.getList()
this.$message({ message: '收费成功。', type: 'success' })
})
})
},
bohuiSfd() {
if (this.multipleSelection.length !== 1) {
this.$message({ message: '只允许一条缴费单进行驳回。', type: 'warning' })
return false
}
this.dialogFileStateVisible = true
},
updateFileState() { // 驳回
if (this.multipleSelection.length !== 1) {
this.$message({ message: '只允许一条缴费单进行驳回。', type: 'warning' })
return false
}
this.apibjd({
url: '/charge/updateRenwuFileStateByBillId',
method: 'get',
params: {
billId: this.multipleSelection[0].id,
record: this.bill.record
}
}).then(data => {
this.getList()
this.dialogFileStateVisible = false
this.$message({ message: '驳回成功。', type: 'success' })
this.sendSmsReject(this.multipleSelection[0].inspectionPhone, this.bill.record)
})
},
tableRowFileState({ row, rowIndex }) {
if (row.fileState === 2) {
return 'bohui-row'
}
return ''
},
sendSmsReject(phone, reason) {
axios.defaults.headers.common['area'] = 'jinan'
axios.get(`${process.env.VUE_APP_SMS_PAY_REJECT_URL}` + phone + `?reason=` + reason).then((response) => {
console.log(response)
}).catch(() => {
this.$message.warning('短信发送失败!!!')
})
}
}
}
</script>
<style>
.el-table .bohui-row {
color: #ff0913;
}
</style>