From a2107782b73b26a07252d6a1ee507e3fd1a366c2 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 08 一月 2025 18:26:44 +0800
Subject: [PATCH] 页面
---
admin/src/views/finance/collectionSettings.vue | 10 +
admin/src/views/finance/overdueBills.vue | 233 ++++++++++++++++++++++++++++++++++++++
admin/src/views/finance/components/call.vue | 60 ++++++++++
3 files changed, 303 insertions(+), 0 deletions(-)
diff --git a/admin/src/views/finance/collectionSettings.vue b/admin/src/views/finance/collectionSettings.vue
new file mode 100644
index 0000000..891f73a
--- /dev/null
+++ b/admin/src/views/finance/collectionSettings.vue
@@ -0,0 +1,10 @@
+<template>
+
+</template>
+
+<script>
+ export default {
+ name: 'collectionSettings'
+ }
+</script>
+
diff --git a/admin/src/views/finance/components/call.vue b/admin/src/views/finance/components/call.vue
new file mode 100644
index 0000000..7bf84c1
--- /dev/null
+++ b/admin/src/views/finance/components/call.vue
@@ -0,0 +1,60 @@
+<template>
+ <GlobalWindow
+ :title="title"
+ :visible.sync="visible"
+ width="100%">
+ <el-form :model="form" label-position="top" ref="paramRef" :rules="rules">
+ <el-form-item label="閫氱煡鏂瑰紡" prop="title">
+ <el-checkbox-group v-model="form.title">
+ <el-checkbox label="缇庨/椁愬巺绾夸笂娲诲姩" name="1"></el-checkbox>
+ <el-checkbox label="鍦版帹娲诲姩" name="2"></el-checkbox>
+ <el-checkbox label="绾夸笅涓婚娲诲姩" name="3"></el-checkbox>
+ <el-checkbox label="鍗曠函鍝佺墝鏇濆厜" name="4"></el-checkbox>
+ </el-checkbox-group>
+ </el-form-item>
+ <el-form-item label="閫氱煡鎺ユ敹浜�" prop="companyId">
+ <div style="display: flex; flex-direction: column;">
+ <div style="display: flex; align-items: center; margin-bottom: 20px;">
+ <span style="font-size: 14px; color: black; margin-right: 10px;">寮犱笁</span>
+ <el-select v-model="form.companyId" placeholder="璇烽�夋嫨">
+ <el-option label="鍖哄煙涓�" value="0"></el-option>
+ <el-option label="鍖哄煙浜�" value="1"></el-option>
+ </el-select>
+ </div>
+ <div style="display: flex; align-items: center;">
+ <span style="font-size: 14px; color: black; margin-right: 10px;">XXXX鍏徃</span>
+ <el-select v-model="form.companyId" placeholder="璇烽�夋嫨">
+ <el-option label="鍖哄煙涓�" value="0"></el-option>
+ <el-option label="鍖哄煙浜�" value="1"></el-option>
+ </el-select>
+ </div>
+ </div>
+ </el-form-item>
+ </el-form>
+ </GlobalWindow>
+</template>
+
+<script>
+ import GlobalWindow from '@/components/common/GlobalWindow'
+ import BaseOpera from '@/components/base/BaseOpera'
+ export default {
+ name: "call",
+ components: { GlobalWindow },
+ extends: BaseOpera,
+ data() {
+ return {
+ form: {
+ title: '1',
+ companyId: '0'
+ },
+ rules: {
+ title: [{ required: true, message: '璇疯緭鍏�' }],
+ companyId: [{ required: true, message: '璇烽�夋嫨' }],
+ }
+ }
+ },
+ methods: {
+
+ }
+ }
+</script>
diff --git a/admin/src/views/finance/overdueBills.vue b/admin/src/views/finance/overdueBills.vue
new file mode 100644
index 0000000..8d64cc1
--- /dev/null
+++ b/admin/src/views/finance/overdueBills.vue
@@ -0,0 +1,233 @@
+<template>
+ <div class="main_app">
+ <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" />
+ <div class="df_sb mt20">
+ <div class="tabs">
+ <div class="tab" :class="{ active: billType === 0 }" @click="tabsClick(0)">閫炬湡鏀舵璐﹀崟</div>
+ <div class="tab" :class="{ active: billType === 1 }" @click="tabsClick(1)">閫炬湡浠樻璐﹀崟</div>
+ </div>
+ <div class="btns">
+ <el-button @click="$refs.call.open('鎵归噺鍌即')">鎵归噺鍌即</el-button>
+ </div>
+ </div>
+ <el-table v-loading="loading" :data="list" stripe>
+ <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}">
+ <div style="display: flex; flex-direction: column;" v-if="row.roomPathName">
+ <span v-for="(item, index) in row.roomPathName.split(';')" :key="index">{{item}}</span>
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="contractCode" label="鍚堝悓缂栧彿" min-width="100" show-overflow-tooltip />
+ <el-table-column label="缁撴竻鐘舵��" min-width="100" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ <span v-if="row.payStatus === 0">寰呮敹娆�</span>
+ <span v-if="row.payStatus === 1">宸茬粨娓�</span>
+ <span v-if="row.payStatus === 2">閮ㄥ垎缁撴竻</span>
+ <span v-if="row.payStatus === 3">寰呬粯娆�</span>
+ <span v-if="row.payStatus === 4">寰呴��娆�</span>
+ <span v-if="row.payStatus === 5">宸插叧闂�</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="totleFee" label="璐﹀崟閲戦" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="receivableFee" :label="`搴�${billType === 0 ? '鏀�' : '浠�'}閲戦`" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="actReceivableFee" :label="`瀹�${billType === 0 ? '鏀�' : '浠�'}閲戦`" min-width="100" show-overflow-tooltip />
+ <el-table-column :label="`闇�鏀�/浠橀噾棰漙" min-width="100" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ {{Math.abs(row.needReceivableFee)}}
+ </template>
+ </el-table-column>
+ <el-table-column label="璐圭敤绫诲瀷" min-width="100" show-overflow-tooltip>
+ <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 label="璁¤垂鍛ㄦ湡" min-width="200" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ {{ row.startDate }} ~ {{ row.endDate }}
+ </template>
+ </el-table-column>
+ <el-table-column prop="planPayDate" :label="`搴�${billType === 0 ? '鏀�' : '浠�'}鏃ユ湡`" min-width="100" show-overflow-tooltip />
+ <el-table-column label="璐﹀崟鏉ユ簮" min-width="100" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ <span v-if="row.type === 0">鍚堝悓璐﹀崟</span>
+ <span v-if="row.type === 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>
+ </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>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" min-width="120" fixed="right">
+ <template slot-scope="{row}">
+ <el-button type="text" @click="handleDetail(row)" icon="el-icon-edit" v-permissions="['business:category:update']">鏌ョ湅璇︽儏</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <div class="mt20">
+ <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
+ </div>
+ <Edit ref="EditRef" @success="getList" />
+ <Detail ref="DetailRef" @success="getList" />
+ <BullEditFu ref="BullEditFu" @success="getList" />
+ <Call ref="call" @success="getList" />
+ </div>
+</template>
+
+<script>
+ import Pagination from '@/components/common/Pagination'
+ import QueryForm from '@/components/common/QueryForm'
+ 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 { fetchList } from '@/api/bill'
+ export default {
+ components: {
+ Pagination,
+ QueryForm,
+ Edit,
+ Detail,
+ BullEditFu,
+ Call
+ },
+ data () {
+ return {
+ loading: false,
+ pagination: {
+ pageSize: 10,
+ page: 1,
+ total: 0
+ },
+ billType: 0,
+ filters: {
+ status: 0
+ },
+ list: [],
+ total: 0,
+ queryFormConfig: {
+ formItems: [
+ {
+ filed: 'customerName',
+ type: 'input',
+ label: '瀹㈡埛鍚嶇О'
+ },
+ {
+ filed: 'payStatus',
+ type: 'select',
+ label: '缁撴竻鐘舵��',
+ options: [
+ { value: 0, label: '寰呮敹娆�' },
+ { value: 1, label: '宸茬粨娓�' },
+ { value: 2, label: '閮ㄥ垎缁撴竻' },
+ { value: 3, label: '寰呬粯娆�' },
+ { value: 4, label: '寰呴��娆�' }
+ ]
+ },
+ {
+ filed: 'selDate',
+ type: 'daterange',
+ label: '搴旀敹/浠樻棩鏈�'
+ }
+ ]
+ }
+ }
+ },
+ created () {
+ this.getList()
+ },
+ methods: {
+ addOpen () {
+ if (this.billType === 0) {
+ this.$refs.EditRef.open('鍒涘缓鏀舵璐﹀崟')
+ } else {
+ this.$refs.BullEditFu.open('鍒涘缓浠樻璐﹀崟')
+ }
+ },
+ getList (page) {
+ const { pagination, filters } = this
+ let form = JSON.parse(JSON.stringify(filters))
+ if (form && form.selDate && form.selDate.length > 0) {
+ form.planPayDateStart = form.payDate[0]
+ form.planPayDateEnd = form.payDate[1]
+ }
+ this.loading = true
+ fetchList({
+ model: {
+ ...filters,
+ billType: this.billType
+ },
+ capacity: pagination.pageSize,
+ page: page || pagination.page
+ }).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
+ })
+ },
+ tabsClick (val) {
+ this.billType = val
+ this.getList()
+ },
+ handleDetail (row) {
+ this.$refs.DetailRef.open('璐﹀崟璇︽儏', row.id)
+ },
+ clear () {
+ this.filters = {}
+ this.pagination.pageSize = 10
+ this.pagination.page = 1
+ this.getList()
+ },
+ handleSizeChange (capacity) {
+ this.pagination.pageSize = capacity
+ this.getList()
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import '@/assets/style/variables.scss';
+
+ .tabs {
+ display: flex;
+ margin-bottom: 20px;
+ justify-content: center;
+
+ .tab {
+ height: 58px;
+ line-height: 58px;
+ font-size: 16px;
+ color: #666666;
+ margin: 0 30px;
+ cursor: pointer;
+ }
+
+ .active {
+ font-weight: 500;
+ color: $primary-color;
+ border-bottom: 2px solid $primary-color;
+ }
+ }
+</style>
--
Gitblit v1.9.3