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