1
MrShi
2025-01-18 b417a422c08ceabd31fa7feaba42fd8a7b1e86d2
1
已添加1个文件
已修改10个文件
432 ■■■■ 文件已修改
admin/src/api/ywContractBill.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/ywTempConfig.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/GlobalWindow.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/contract/components/contractDetail.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/contract/components/pendingBills.vue 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/contract/components/terminationAgreement.vue 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/finance/collectionSettings.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/finance/components/batchCall.vue 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/finance/components/bullDetail.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/finance/components/call.vue 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/finance/overdueBills.vue 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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}`)
}
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
  })
}
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')
    }
  }
}
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:
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>
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>
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 }]
            })
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>
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,
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
        })
      }
    }
  }
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 ? '报废' : '正常'
          })
          this.pagination.total = res.total || 0
        }, () => {
          this.loading = false