From b417a422c08ceabd31fa7feaba42fd8a7b1e86d2 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期六, 18 一月 2025 09:14:08 +0800
Subject: [PATCH] 1
---
admin/src/views/contract/components/pendingBills.vue | 45 ++++-
admin/src/api/ywContractBill.js | 34 ++++
admin/src/components/common/GlobalWindow.vue | 9 +
admin/src/views/finance/components/batchCall.vue | 90 +++++++++++
admin/src/views/finance/collectionSettings.vue | 32 ++-
admin/src/views/finance/overdueBills.vue | 33 ++-
admin/src/api/ywTempConfig.js | 7
admin/src/views/finance/components/bullDetail.vue | 2
admin/src/views/contract/components/terminationAgreement.vue | 71 +++++---
admin/src/views/contract/components/contractDetail.vue | 20 ++
admin/src/views/finance/components/call.vue | 89 ++++++----
11 files changed, 329 insertions(+), 103 deletions(-)
diff --git a/admin/src/api/ywContractBill.js b/admin/src/api/ywContractBill.js
index be95d5e..024b344 100644
--- a/admin/src/api/ywContractBill.js
+++ b/admin/src/api/ywContractBill.js
@@ -6,3 +6,37 @@
trim: true
})
}
+
+// 鑾峰彇鎵归噺鍌即鏁版嵁
+export function getNoticeCustomerData (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywContractBill/getNoticeCustomerData', data, {
+ trim: true
+ })
+}
+
+// 鍙戦�佸偓缂存暟鎹�
+export function sendNoticeCustomerData (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywContractBill/sendNoticeCustomerData', data, {
+ trim: true
+ })
+}
+
+// 涓嬭浇鍌垂鏂囦欢
+export function downloadCallFeeDoc (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywContractBill/downloadCallFeeDoc', data, {
+ download: true,
+ trim: true
+ })
+}
+
+// 鍙戦�佺煭淇′笌閭欢
+export function sendSmsEmail (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywContractBill/sendSmsEmail', data, {
+ trim: true
+ })
+}
+
+// 鑾峰彇寰呭鐞嗚处鍗�
+export function getWaitDealList (contractId) {
+ return request.get(`/visitsAdmin/cloudService/business/ywContractBill/getWaitDealList?contractId=${contractId}`)
+}
diff --git a/admin/src/api/ywTempConfig.js b/admin/src/api/ywTempConfig.js
index a167130..c0947e0 100644
--- a/admin/src/api/ywTempConfig.js
+++ b/admin/src/api/ywTempConfig.js
@@ -6,3 +6,10 @@
trim: true
})
}
+
+// 鏇存柊閰嶇疆妯℃澘淇℃伅
+export function updTempConfig (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywTempConfig/updTempConfig', data, {
+ trim: true
+ })
+}
diff --git a/admin/src/components/common/GlobalWindow.vue b/admin/src/components/common/GlobalWindow.vue
index b734be2..504f62f 100644
--- a/admin/src/components/common/GlobalWindow.vue
+++ b/admin/src/components/common/GlobalWindow.vue
@@ -22,6 +22,7 @@
<slot name="footer">
<el-button v-if="showConfirm" @click="confirm" :loading="confirmWorking" type="primary">{{text}}</el-button>
<slot name="btns" />
+ <el-button type="primary" v-if="isDownload" @click="downloadFile">涓嬭浇鍌即閫氱煡鍗�</el-button>
<el-button @click="close">{{ backText }}</el-button>
</slot>
</div>
@@ -68,6 +69,11 @@
visible: {
type: Boolean,
required: true
+ },
+ // 鏄惁鏄剧ず涓嬭浇鎸夐挳
+ isDownload: {
+ type: Boolean,
+ required: false
}
},
methods: {
@@ -77,6 +83,9 @@
close () {
this.$emit('close')
this.$emit('update:visible', false)
+ },
+ downloadFile() {
+ this.$emit('downloadFile')
}
}
}
diff --git a/admin/src/views/contract/components/contractDetail.vue b/admin/src/views/contract/components/contractDetail.vue
index 64cb0d9..5683288 100644
--- a/admin/src/views/contract/components/contractDetail.vue
+++ b/admin/src/views/contract/components/contractDetail.vue
@@ -17,8 +17,8 @@
<el-tag type="info" v-if="info.status === 4">宸查��绉�</el-tag>
</div>
<div>
- <el-button type="primary" @click="$refs.pendingBills.open('寰呭鐞嗚处鍗�')">鏌ョ湅寰呭鐞嗚处鍗�</el-button>
- <el-button @click="$refs.terminationAgreement.open('閫�绉熷崗璁�')">鏌ョ湅閫�绉熷崗璁�</el-button>
+ <el-button type="primary" @click="$refs.pendingBills.open('寰呭鐞嗚处鍗�', id)" v-if="info.status === 3">鏌ョ湅寰呭鐞嗚处鍗�</el-button>
+ <el-button @click="$refs.terminationAgreement.open('閫�绉熷崗璁�', id)" v-if="[3,4].includes(info.status)">鏌ョ湅閫�绉熷崗璁�</el-button>
<el-button plain type="danger" v-if="[0, 1, 2].includes(info.status)" @click="refund">閫�绉�</el-button>
</div>
</div>
@@ -197,6 +197,13 @@
v-loading="loading"
style="width: 100%">
<el-table-column
+ width="150"
+ label="璐﹀崟缂栧彿">
+ <template slot-scope="{row}">
+ <el-button type="text" @click="openBill(row.id)">{{row.code}}</el-button>
+ </template>
+ </el-table-column>
+ <el-table-column
label="璐圭敤绫诲瀷">
<template slot-scope="{row}">
<span v-if="row.costType === 0">绉熻祦璐�</span>
@@ -327,6 +334,8 @@
<PendingBills ref="pendingBills" />
<!-- 閫�绉熷崗璁� -->
<TerminationAgreement ref="terminationAgreement" />
+ <!-- 璐﹀崟璇︽儏 -->
+ <BullDetail ref="bullDetail" />
</GlobalWindow>
</template>
@@ -336,6 +345,7 @@
import TerminateLease from './terminateLease'
import PendingBills from './pendingBills'
import TerminationAgreement from './terminationAgreement'
+import BullDetail from '../../finance/components/bullDetail'
import { getById } from '@/api/contract'
import { fetchList } from '@/api/bill'
export default {
@@ -343,7 +353,8 @@
GlobalWindow,
TerminateLease,
PendingBills,
- TerminationAgreement
+ TerminationAgreement,
+ BullDetail
},
extends: BaseOpera,
data() {
@@ -375,6 +386,9 @@
xiazai (url) {
window.open(url)
},
+ openBill(id) {
+ this.$refs.bullDetail.open('璐﹀崟璇︽儏', id)
+ },
returnUnit (type) {
switch (type) {
case 0:
diff --git a/admin/src/views/contract/components/pendingBills.vue b/admin/src/views/contract/components/pendingBills.vue
index 1ecd98f..b694d96 100644
--- a/admin/src/views/contract/components/pendingBills.vue
+++ b/admin/src/views/contract/components/pendingBills.vue
@@ -10,19 +10,19 @@
<div class="zd_list">
<div class="zd_list_row">
<span>寰呮敹娆捐处鍗曟暟</span>
- <span>2</span>
+ <span>{{info.inAmount || 0}}</span>
</div>
<div class="zd_list_row">
<span>寰呮敹娆鹃噾棰�</span>
- <span>锟�247.00</span>
+ <span>锟{info.inFee || 0}}</span>
</div>
<div class="zd_list_row">
<span>寰呬粯娆捐处鍗曟暟</span>
- <span>3</span>
+ <span>{{info.payAmount || 0}}</span>
</div>
<div class="zd_list_row">
<span>寰呬粯娆鹃噾棰�</span>
- <span>锟�247.00</span>
+ <span>锟{info.payFee || 0}}</span>
</div>
</div>
<div class="zd_content">
@@ -30,7 +30,7 @@
<span>璐﹀崟</span>
</div>
<el-table
- :data="tableData"
+ :data="info.ywContractBillList"
border
style="width: 100%">
<el-table-column
@@ -38,27 +38,38 @@
label="璐﹀崟缂栧彿">
</el-table-column>
<el-table-column
- prop="name"
label="璐圭敤绫诲瀷">
+ <template slot-scope="{row}">
+ <span v-if="row.costType === 0">绉熻祦璐�</span>
+ <span v-if="row.costType === 1">鐗╀笟璐�</span>
+ <span v-if="row.costType === 2">绉熻祦鎶奸噾</span>
+ <span v-if="row.costType === 3">鐗╀笟鎶奸噾</span>
+ <span v-if="row.costType === 4">姘寸數璐�</span>
+ <span v-if="row.costType === 5">鏉傞」璐�</span>
+ <span v-if="row.costType === 6">鍏朵粬</span>
+ <span v-if="row.costType === 7">淇濊瘉閲�</span>
+ </template>
</el-table-column>
<el-table-column
- prop="address"
label="璁¤垂鍛ㄦ湡">
+ <template slot-scope="{row}">
+ {{row.startDate}}~{{row.endDate}}
+ </template>
</el-table-column>
<el-table-column
- prop="address"
+ prop="receivableFee"
label="搴旀敹浠橀噾棰�/鍘熷搴旀敹浠�">
</el-table-column>
<el-table-column
- prop="address"
+ prop="actReceivableFee"
label="瀹炴敹/浠橀噾棰�">
</el-table-column>
<el-table-column
- prop="address"
+ prop="needReceivableFee"
label="闇�鏀�/浠橀噾棰�">
</el-table-column>
<el-table-column
- prop="address"
+ prop="receivableFee"
label="搴旀敹/浠樻棩鏈�">
</el-table-column>
</el-table>
@@ -70,6 +81,7 @@
<script>
import GlobalWindow from '@/components/common/GlobalWindow'
import BaseOpera from '@/components/base/BaseOpera'
+ import { getWaitDealList } from '@/api/ywContractBill'
export default {
name: 'pendingBills',
components: {
@@ -78,11 +90,18 @@
extends: BaseOpera,
data () {
return {
- tableData: []
+ info: []
}
},
methods: {
-
+ open (title, contractId) {
+ this.title = title
+ getWaitDealList(contractId)
+ .then(res => {
+ this.info = res
+ this.visible = true
+ })
+ }
}
}
</script>
diff --git a/admin/src/views/contract/components/terminationAgreement.vue b/admin/src/views/contract/components/terminationAgreement.vue
index 9b02d5c..d9d9280 100644
--- a/admin/src/views/contract/components/terminationAgreement.vue
+++ b/admin/src/views/contract/components/terminationAgreement.vue
@@ -8,40 +8,43 @@
@confirm="confirm">
<div class="main">
<div class="main_head">
- <span>绉熷锛氫箳涔撶悆淇变箰閮�</span>
- <span>鍚堝悓缂栧彿锛� 2024-04-001-202405-0019</span>
- </div>
- <div class="title">閫�绉熶俊鎭�</div>
- <div class="list">
- <div class="item">
- <div class="la">閫�绉熺被鍨�</div>
- <div class="val">{{ info.code }}</div>
- </div>
- <div class="item">
- <div class="la">閫�绉熸棩鏈�</div>
- <div class="val">{{ info.userName }}</div>
- </div>
- <div class="item">
- <div class="la">缁忓姙浜�</div>
- <div class="val">{{ info.creatorName }}</div>
- </div>
- <div class="item">
- <div class="la">鍗忚绛捐鏃ユ湡</div>
- <div class="val">{{ info.totalArea }}銕�</div>
- </div>
- <div class="item">
- <div class="la">閫�绉熷師鍥�</div>
- <div class="val">{{ info.companyName }}</div>
- </div>
+ <span>绉熷锛歿{info.renterName}}</span>
+ <span>鍚堝悓缂栧彿锛� {{info.code}}</span>
</div>
<div class="title">鎴挎簮淇℃伅</div>
<div class="list">
- <el-table :data="roomList" stripe>
+ <el-table :data="info.roomList" stripe>
<el-table-column prop="projectName" label="椤圭洰鍚嶇О" show-overflow-tooltip />
<el-table-column prop="buildingName" label="妤煎畤鍚嶇О" show-overflow-tooltip />
<el-table-column prop="buildingName" label="妤煎眰/鎴垮彿" show-overflow-tooltip></el-table-column>
<el-table-column prop="area" label="闈㈢Н" show-overflow-tooltip></el-table-column>
</el-table>
+ </div>
+ <div class="title">閫�绉熶俊鎭�</div>
+ <div class="list">
+ <div class="item">
+ <div class="la">閫�绉熺被鍨�</div>
+ <div class="val" v-if="info.btType === 0">鍒版湡閫�绉�</div>
+ <div class="val" v-if="info.btType === 1">鎹㈡埧閫�绉�</div>
+ <div class="val" v-if="info.btType === 2">杩濈害閫�绉�</div>
+ <div class="val" v-if="info.btType === 3">鍗忓晢閫�绉�</div>
+ </div>
+ <div class="item">
+ <div class="la">閫�绉熸棩鏈�</div>
+ <div class="val">{{ info.btDate }}</div>
+ </div>
+ <div class="item">
+ <div class="la">缁忓姙浜�</div>
+ <div class="val">{{ info.userName }}</div>
+ </div>
+ <div class="item">
+ <div class="la">鍗忚绛捐鏃ユ湡</div>
+ <div class="val">{{ info.signDate }}銕�</div>
+ </div>
+ <div class="item">
+ <div class="la">閫�绉熷師鍥�</div>
+ <div class="val">{{ info.btInfo }}</div>
+ </div>
</div>
</div>
</GlobalWindow>
@@ -50,6 +53,7 @@
<script>
import GlobalWindow from '@/components/common/GlobalWindow'
import BaseOpera from '@/components/base/BaseOpera'
+ import { getById } from '@/api/contract'
export default {
name: "terminationAgreement",
components: {
@@ -58,12 +62,23 @@
extends: BaseOpera,
data() {
return {
- roomList: [],
+ id: null,
info: {}
}
},
methods: {
-
+ open (title, id) {
+ this.title = title
+ this.id = id
+ this.getData()
+ },
+ getData () {
+ getById(this.id)
+ .then(res => {
+ this.info = res
+ this.visible = true
+ })
+ },
}
}
</script>
diff --git a/admin/src/views/finance/collectionSettings.vue b/admin/src/views/finance/collectionSettings.vue
index 1df43de..9a1ec04 100644
--- a/admin/src/views/finance/collectionSettings.vue
+++ b/admin/src/views/finance/collectionSettings.vue
@@ -5,13 +5,13 @@
<el-form ref="form" :model="form" label-width="120px">
<el-form-item label="鐭俊妯℃澘">
<div style="display: flex; align-items: self-start;">
- <el-input type="textarea" rows="5" v-model="form.smsTemp"></el-input>
+ <el-input type="textarea" rows="5" v-model="form.smsTemp.title"></el-input>
<!-- <el-button type="primary" style="margin-left: 10px;">淇濆瓨</el-button>-->
</div>
</el-form-item>
<el-form-item label="閭妯℃澘">
<div style="display: flex; align-items: self-start;">
- <el-input type="textarea" rows="5" v-model="form.emailTemp"></el-input>
+ <el-input type="textarea" rows="5" v-model="form.emailTemp.title"></el-input>
<!-- <el-button type="primary" style="margin-left: 10px;">淇濆瓨</el-button>-->
</div>
</el-form-item>
@@ -44,7 +44,7 @@
</el-upload>
</el-form-item>
<el-form-item>
- <el-button type="primary" @click="submit">淇濆瓨</el-button>
+ <el-button type="primary" @click="submit" :disabled="loading" :loading="loading">淇濆瓨</el-button>
</el-form-item>
</el-form>
</div>
@@ -56,7 +56,7 @@
<script>
import templateKeywords from './components/templateKeywords'
- import { getCallTemp } from '@/api/ywTempConfig'
+ import { getCallTemp, updTempConfig } from '@/api/ywTempConfig'
export default {
name: 'collectionSettings',
data() {
@@ -66,11 +66,12 @@
folder: 'TEMP_CONFIG'
},
form: {
- emailTemp: '',
- smsTemp: '',
+ emailTemp: {},
+ smsTemp: {},
leaseTemp: [],
otherTemp: []
- }
+ },
+ loading: false
}
},
components: { templateKeywords },
@@ -79,7 +80,18 @@
},
methods: {
submit() {
-
+ this.loading = true
+ updTempConfig({
+ emailTemp: this.form.emailTemp,
+ smsTemp: this.form.smsTemp,
+ leaseTemp: this.form.leaseTemp[0],
+ otherTemp: this.form.otherTemp[0]
+ }).then(res => {
+ this.$message.success('鏇存柊鎴愬姛锛�')
+ this.getCallTempVal()
+ }).finally(() => {
+ this.loading = false
+ })
},
handleRemove(e) {
this.form.leaseTemp = []
@@ -98,8 +110,8 @@
getCallTempVal() {
getCallTemp({})
.then(res => {
- this.form.smsTemp = res.smsTemp.title
- this.form.emailTemp = res.emailTemp.title
+ this.form.smsTemp = res.smsTemp
+ this.form.emailTemp = res.emailTemp
this.form.leaseTemp = [{ url: res.leaseTemp.url, name: res.leaseTemp.title }]
this.form.otherTemp = [{ url: res.otherTemp.url, name: res.otherTemp.title }]
})
diff --git a/admin/src/views/finance/components/batchCall.vue b/admin/src/views/finance/components/batchCall.vue
new file mode 100644
index 0000000..adeab27
--- /dev/null
+++ b/admin/src/views/finance/components/batchCall.vue
@@ -0,0 +1,90 @@
+<template>
+ <GlobalWindow
+ :title="title"
+ :visible.sync="visible"
+ :isDownload="true"
+ width="100%"
+ @downloadFile="downloadFile"
+ @confirm="confirm">
+ <el-form :model="form" label-position="top" ref="paramRef">
+ <el-form-item label="閫氱煡鏂瑰紡">
+ <el-checkbox-group v-model="form.type">
+ <el-checkbox label="鐭俊"></el-checkbox>
+ <el-checkbox label="閭欢"></el-checkbox>
+ </el-checkbox-group>
+ </el-form-item>
+ <el-form-item label="閫氱煡鎺ユ敹浜�">
+ <div style="display: flex; align-items: center; margin-bottom: 10px;" v-for="(item, index) in userList" :key="index">
+ <span style="margin-right: 15px; font-size: 15px; color: #222222;">{{item.customerName}}</span>
+ <el-select v-model="item.userId" placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="(item, index) in item.memberList"
+ :key="index"
+ :label="item.name"
+ :value="item.id" />
+ </el-select>
+ </div>
+ </el-form-item>
+ </el-form>
+ </GlobalWindow>
+</template>
+
+<script>
+ import GlobalWindow from '@/components/common/GlobalWindow'
+ import BaseOpera from '@/components/base/BaseOpera'
+ import { getNoticeCustomerData, downloadCallFeeDoc, sendSmsEmail } from '@/api/ywContractBill'
+ export default {
+ name: "batchCall",
+ components: { GlobalWindow },
+ extends: BaseOpera,
+ data() {
+ return {
+ ids: null,
+ form: {
+ type: []
+ },
+ userList: []
+ }
+ },
+ methods: {
+ open (title, ids) {
+ this.title = title
+ this.ids = ids
+ this.form.type = []
+ this.userList = []
+ this.visible = true
+ this.getUser()
+ },
+ downloadFile() {
+ downloadCallFeeDoc(this.ids)
+ .then(response => {
+ this.download(response)
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ },
+ getUser() {
+ getNoticeCustomerData(this.ids)
+ .then(res => {
+ this.userList = res
+ })
+ },
+ confirm() {
+ if (this.form.type.length === 0) return this.$message.warning('閫氱煡鏂瑰紡涓嶈兘涓虹┖')
+ let arr = this.userList.map(item => {
+ return {
+ billId: item.billId,
+ sendEmail: this.form.type.includes('閭欢') ? 1 : 0,
+ sendSms: this.form.type.includes('鐭俊') ? 1 : 0,
+ userId: item.userId
+ }
+ })
+ sendSmsEmail(arr).then(res => {
+ this.$message.success('鍙戦�佹垚鍔燂紒')
+ this.visible = false
+ })
+ }
+ }
+ }
+</script>
diff --git a/admin/src/views/finance/components/bullDetail.vue b/admin/src/views/finance/components/bullDetail.vue
index b40909b..976f0a0 100644
--- a/admin/src/views/finance/components/bullDetail.vue
+++ b/admin/src/views/finance/components/bullDetail.vue
@@ -9,7 +9,7 @@
<el-tag type="info" v-if="info.status === 1">鍏抽棴</el-tag>
</div>
<div style="display: flex; align-items: center;">
- <el-button @click="$refs.call.open('鍙戦�佸偓缂撮�氱煡', info)">鍙戦�佺即璐归�氱煡</el-button>
+ <el-button @click="$refs.call.open('鍙戦�佸偓缂撮�氱煡', [info.id])">鍙戦�佺即璐归�氱煡</el-button>
<el-button plain type="primary" v-if="![1].includes(info.payStatus)" @click="$refs.flowingWater.open('鍒涘缓鏀舵敮娴佹按', {
billType: returnBillType(),
billId: info.id,
diff --git a/admin/src/views/finance/components/call.vue b/admin/src/views/finance/components/call.vue
index d2504cc..2660506 100644
--- a/admin/src/views/finance/components/call.vue
+++ b/admin/src/views/finance/components/call.vue
@@ -1,24 +1,29 @@
<template>
<GlobalWindow
- :title="title"
- :visible.sync="visible"
- width="100%"
- @confirm="confirm">
- <el-form :model="form" label-position="top" ref="paramRef" :rules="rules">
- <el-form-item label="閫氱煡鏂瑰紡" prop="type">
+ :title="title"
+ :visible.sync="visible"
+ :isDownload="true"
+ width="100%"
+ @downloadFile="downloadFile"
+ @confirm="confirm">
+ <el-form :model="form" label-position="top" ref="paramRef">
+ <el-form-item label="閫氱煡鏂瑰紡">
<el-checkbox-group v-model="form.type">
<el-checkbox label="鐭俊"></el-checkbox>
<el-checkbox label="閭欢"></el-checkbox>
</el-checkbox-group>
</el-form-item>
- <el-form-item label="閫氱煡鎺ユ敹浜�" prop="userId">
- <el-select v-model="form.userId" placeholder="璇烽�夋嫨">
- <el-option
- v-for="(item, index) in userList"
- :key="index"
- :label="item.realname"
- :value="item.id" />
- </el-select>
+ <el-form-item label="閫氱煡鎺ユ敹浜�">
+ <div style="display: flex; align-items: center; margin-bottom: 10px;" v-for="(item, index) in userList" :key="index">
+ <span style="margin-right: 15px; font-size: 15px; color: #222222;">{{item.customerName}}</span>
+ <el-select v-model="item.userId" placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="(item, index) in item.memberList"
+ :key="index"
+ :label="item.name"
+ :value="item.id" />
+ </el-select>
+ </div>
</el-form-item>
</el-form>
</GlobalWindow>
@@ -27,46 +32,58 @@
<script>
import GlobalWindow from '@/components/common/GlobalWindow'
import BaseOpera from '@/components/base/BaseOpera'
- import { getUserList } from '@/api/system/user'
+ import { getNoticeCustomerData, downloadCallFeeDoc, sendSmsEmail } from '@/api/ywContractBill'
export default {
name: "call",
components: { GlobalWindow },
extends: BaseOpera,
data() {
return {
- info: null,
+ ids: null,
form: {
- type: [],
- userId: ''
- },
- rules: {
- type: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
- userId: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }]
+ type: []
},
userList: []
}
},
- created () {
- this.getUser()
- },
methods: {
- open (title, target) {
+ open (title, ids) {
this.title = title
- this.info = target
+ this.ids = ids
+ this.form.type = []
+ this.userList = []
this.visible = true
+ this.getUser()
},
- getUser() {
- getUserList({})
- .then(res => {
- this.userList = res
- })
- },
+ downloadFile() {
+ downloadCallFeeDoc(this.ids)
+ .then(response => {
+ this.download(response)
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ },
+ getUser() {
+ getNoticeCustomerData(this.ids)
+ .then(res => {
+ this.userList = res
+ })
+ },
confirm() {
- this.$refs.paramRef.validate((valid) => {
- if (!valid) {
- return
+ if (this.form.type.length === 0) return this.$message.warning('閫氱煡鏂瑰紡涓嶈兘涓虹┖')
+ let arr = this.userList.map(item => {
+ return {
+ billId: item.billId,
+ sendEmail: this.form.type.includes('閭欢') ? 1 : 0,
+ sendSms: this.form.type.includes('鐭俊') ? 1 : 0,
+ userId: item.userId
}
})
+ sendSmsEmail(arr).then(res => {
+ this.$message.success('鍙戦�佹垚鍔燂紒')
+ this.visible = false
+ })
}
}
}
diff --git a/admin/src/views/finance/overdueBills.vue b/admin/src/views/finance/overdueBills.vue
index fd8ad9a..41c000b 100644
--- a/admin/src/views/finance/overdueBills.vue
+++ b/admin/src/views/finance/overdueBills.vue
@@ -7,10 +7,14 @@
<div class="tab" :class="{ active: billType === 1 }" @click="tabsClick(1)">閫炬湡浠樻璐﹀崟</div>
</div>
<div class="btns">
- <el-button @click="$refs.call.open('鎵归噺鍌即')">鎵归噺鍌即</el-button>
+ <el-button :disabled="ids.length === 0" @click="batchCall">鎵归噺鍌即</el-button>
</div>
</div>
- <el-table v-loading="loading" :data="list" stripe>
+ <el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange" stripe>
+ <el-table-column
+ type="selection"
+ width="55">
+ </el-table-column>
<el-table-column prop="customerName" label="瀹㈡埛鍚嶇О" min-width="100" show-overflow-tooltip />
<el-table-column label="鎴块棿" min-width="170" show-overflow-tooltip>
<template slot-scope="{row}">
@@ -64,14 +68,14 @@
</el-table-column>
<el-table-column label="鐭俊鍙戦�佺姸鎬�" min-width="100" fixed="right" show-overflow-tooltip>
<template slot-scope="{row}">
- <span v-if="row.status === 0">寮�鍚�</span>
- <span v-if="row.status === 1" style="color: red;">鍏抽棴</span>
+ <span v-if="row.isSendSms === 0">鍚�</span>
+ <span v-if="row.isSendSms === 1">鏄�</span>
</template>
</el-table-column>
<el-table-column label="閭欢鍙戦�佺姸鎬�" min-width="100" fixed="right" show-overflow-tooltip>
<template slot-scope="{row}">
- <span v-if="row.status === 0">寮�鍚�</span>
- <span v-if="row.status === 1" style="color: red;">鍏抽棴</span>
+ <span v-if="row.isSendEmail === 0">鍚�</span>
+ <span v-if="row.isSendEmail === 1">鏄�</span>
</template>
</el-table-column>
<el-table-column label="鎿嶄綔" min-width="120" fixed="right">
@@ -86,7 +90,7 @@
<Edit ref="EditRef" @success="getList" />
<Detail ref="DetailRef" @success="getList" />
<BullEditFu ref="BullEditFu" @success="getList" />
- <Call ref="call" @success="getList" />
+ <BatchCall ref="batchCall" @success="getList" />
</div>
</template>
@@ -96,7 +100,7 @@
import Edit from './components/bullEdit.vue'
import BullEditFu from './components/bullEditFu.vue'
import Detail from './components/bullDetail.vue'
- import Call from './components/call.vue'
+ import BatchCall from './components/batchCall.vue'
import { fetchList } from '@/api/ywContractBill'
export default {
components: {
@@ -105,7 +109,7 @@
Edit,
Detail,
BullEditFu,
- Call
+ BatchCall
},
data () {
return {
@@ -115,6 +119,7 @@
page: 1,
total: 0
},
+ ids: [],
billType: 0,
filters: {
status: 0
@@ -153,6 +158,13 @@
this.getList()
},
methods: {
+ batchCall() {
+ if (!this.ids) return this.$message.warning('璇峰厛閫夋嫨璐﹀崟')
+ this.$refs.batchCall.open('鎵归噺鍌即', this.ids)
+ },
+ handleSelectionChange(e) {
+ this.ids = e.map(item => item.id)
+ },
addOpen () {
if (this.billType === 0) {
this.$refs.EditRef.open('鍒涘缓鏀舵璐﹀崟')
@@ -178,9 +190,6 @@
}).then(res => {
this.loading = false
this.list = res.records || []
- this.list.forEach(item => {
- item.statusName = item.status === 1 ? '鎹熷潖' : item.status === 2 ? '鎶ュ簾' : '姝e父'
- })
this.pagination.total = res.total || 0
}, () => {
this.loading = false
--
Gitblit v1.9.3