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