From bbcade0aa73354bf775fe91f88dd618bab6ea4a4 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期二, 03 十二月 2024 19:14:15 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/funingyunwei
---
admin/src/views/contract/components/contractDetail.vue | 345 ++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 291 insertions(+), 54 deletions(-)
diff --git a/admin/src/views/contract/components/contractDetail.vue b/admin/src/views/contract/components/contractDetail.vue
index f8504a5..f13cf9a 100644
--- a/admin/src/views/contract/components/contractDetail.vue
+++ b/admin/src/views/contract/components/contractDetail.vue
@@ -1,140 +1,377 @@
<template>
- <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @close="close"
+ <GlobalWindow
+ :title="title"
+ :visible.sync="visible"
+ :withFooter="false"
+ :confirm-working="isWorking"
+ @close="close"
@confirm="confirm">
- <div class="home_title">
+ <div class="home_title" v-if="info">
<div class="left">
- <span class="mr10">鍗曚綅鍚嶇О锛歺xx</span>
- <span class="status">status</span>
+ <span class="mr10">鍗曚綅鍚嶇О锛歿{info.renterName}}</span>
+ <el-tag type="success" v-if="info.status === 0">寰呮墽琛�</el-tag>
+ <el-tag type="success" v-if="info.status === 1">姝e父鎵ц涓�</el-tag>
+ <el-tag type="info" v-if="info.status === 2">宸插埌鏈�</el-tag>
+ <el-tag type="info" v-if="info.status === 3">閫�绉熺粨绠椾腑</el-tag>
+ <el-tag type="info" v-if="info.status === 4">宸查��绉�</el-tag>
</div>
- <el-button plain type="danger">閫�绉�</el-button>
+ <el-button plain type="danger" v-if="[0, 1, 2].includes(info.status)" @click="refund">閫�绉�</el-button>
</div>
- <div class="remark">鍚堝悓鎽樿锛歺xxx</div>
+ <div class="remark" v-if="info">{{info.remark}}</div>
<div class="tabs">
- <div class="tab" :class="{ active: activeTabs == 0 }" @click="tabsClick(0)">鍚堝悓淇℃伅</div>
- <div class="tab" :class="{ active: activeTabs == 1 }" @click="tabsClick(1)">鍏宠仈璐﹀崟</div>
- <div class="tab" :class="{ active: activeTabs == 2 }" @click="tabsClick(2)">鎿嶄綔璁板綍</div>
+ <div class="tab" :class="{ active: activeTabs === 0 }" @click="tabsClick(0)">鍚堝悓淇℃伅</div>
+ <div class="tab" :class="{ active: activeTabs === 1 }" @click="tabsClick(1)">鍏宠仈璐﹀崟</div>
+ <div class="tab" :class="{ active: activeTabs === 2 }" @click="tabsClick(2)">鎿嶄綔璁板綍</div>
</div>
- <div class="main">
+ <div class="main" v-if="activeTabs === 0 && info">
<div class="title">鍩虹淇℃伅</div>
<div class="list">
<div class="item">
<div class="la">鍚堝悓缂栧彿</div>
- <div class="val">{{ info.aaa }}</div>
+ <div class="val">{{ info.code }}</div>
</div>
<div class="item">
<div class="la">缁忓姙浜�</div>
- <div class="val">{{ info.aaa }}</div>
+ <div class="val">{{ info.userName }}</div>
</div>
<div class="item">
<div class="la">鍒涘缓浜�</div>
- <div class="val">{{ info.aaa }}</div>
+ <div class="val">{{ info.creatorName }}</div>
</div>
<div class="item">
<div class="la">鍚堝悓绉熻祦鏁�</div>
- <div class="val">{{ info.aaa }}</div>
+ <div class="val">{{ info.totalArea }}</div>
</div>
<div class="item">
<div class="la">鎵�灞炲叕鍙�</div>
- <div class="val">{{ info.aaa }}</div>
+ <div class="val">{{ info.companyName }}</div>
</div>
<div class="item">
<div class="la">绛捐鏃ユ湡</div>
- <div class="val">{{ info.aaa }}</div>
+ <div class="val">{{ info.signDate }}</div>
</div>
<div class="item">
<div class="la">寮�濮嬫棩鏈�</div>
- <div class="val">{{ info.aaa }}</div>
+ <div class="val">{{ info.startDate }}</div>
</div>
<div class="item">
<div class="la">缁撴潫鏃ユ湡</div>
- <div class="val">{{ info.aaa }}</div>
+ <div class="val">{{ info.endDate }}</div>
</div>
<div class="item">
<div class="la">鎵�灞為」鐩�</div>
- <div class="val">{{ info.aaa }}</div>
+ <div class="val">{{ info.projectName }}</div>
</div>
<div class="item">
<div class="la">缁撴灉鍙栨暣(鍥涜垗浜斿叆)</div>
- <div class="val">{{ info.aaa }}</div>
+ <div class="val">{{ info.roundedUp === 1 ? '鏄�' : '鍚�' }}</div>
</div>
</div>
<div class="title">鎴挎簮淇℃伅</div>
<div class="list">
- <div class="item">
- <div class="la">椤圭洰鍚嶇О</div>
- <div class="val">{{ info.aaa }}</div>
- </div>
- <div class="item">
- <div class="la">妤煎畤鍚嶇О</div>
- <div class="val">{{ info.aaa }}</div>
- </div>
- <div class="item">
- <div class="la">妤煎眰/鎴垮彿</div>
- <div class="val">{{ info.aaa }}</div>
- </div>
- <div class="item">
- <div class="la">闈㈢Н</div>
- <div class="val">{{ info.aaa }}</div>
- </div>
+ <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="" label="妤煎眰/鎴垮彿" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ {{row.floorName}}/{{row.code}}
+ </template>
+ </el-table-column>
+ <el-table-column prop="area" label="闈㈢Н" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ {{row.area}}銕�
+ </template>
+ </el-table-column>
+ </el-table>
</div>
<div class="title">绉熷淇℃伅</div>
<div class="list">
<div class="item">
<div class="la">绉熷</div>
- <div class="val">{{ info.aaa }}</div>
+ <div class="val">{{ info.renterName }}</div>
</div>
<div class="item">
<div class="la">缁忓姙浜�</div>
- <div class="val">{{ info.aaa }}</div>
+ <div class="val">{{ info.userName }}</div>
</div>
</div>
- <div class="title">绉熻祦鏉℃</div>
- <div class="list">
+ <div class="title" v-if="info.type === 2 || info.type === 0">绉熻祦鏉℃</div>
+ <div class="list" style="background: #F7F7F7; padding: 15px 20px;" v-if="info.type === 2 || info.type === 0">
<div class="item">
<div class="la">鎶奸噾閲戦</div>
- <div class="val">{{ info.aaa }}</div>
+ <div class="val">{{ info.zlDeposit }}</div>
</div>
<div class="item">
<div class="la">浠樻鏂瑰紡</div>
- <div class="val">{{ info.aaa }}</div>
+ <div class="val" v-if="info.zlPayType === 0">涓�娆℃�т粯娆�</div>
+ <div class="val" v-if="info.zlPayType === 1">姣忎笁涓湀涓�浠�</div>
+ <div class="val" v-if="info.zlPayType === 2">鍏釜鏈堜竴浠�</div>
+ <div class="val" v-if="info.zlPayType === 3">涓�骞翠竴浠�</div>
</div>
<div class="item">
<div class="la">鍏嶇鏈�</div>
- <div class="val">{{ info.aaa }}</div>
+ <div class="val">{{ info.zlFreeStartDate }} ~ {{ info.zlFreeEndDate }}</div>
</div>
</div>
- <el-table :data="info.list" stripe>
- <el-table-column prop="" label="寮�濮嬫棩鏈�" min-width="100" show-overflow-tooltip />
- <el-table-column prop="" label="缁撴潫鏃ユ湡" min-width="100" show-overflow-tooltip />
- <el-table-column prop="" label="鍚堝悓鍗曚环" min-width="100" show-overflow-tooltip />
- <el-table-column prop="" label="浠樻鎻愬墠澶╂暟" min-width="100" show-overflow-tooltip />
+ <el-table :data="info.zlDetailList" stripe style="margin-bottom: 20px;" v-if="info.type === 2 || info.type === 0">
+ <el-table-column prop="startDate" label="寮�濮嬫棩鏈�" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="endDate" label="缁撴潫鏃ユ湡" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="price" label="鍚堝悓鍗曚环" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="advanceDays" label="浠樻鎻愬墠澶╂暟" min-width="100" show-overflow-tooltip />
+ </el-table>
+ <div class="title" v-if="info.type === 1 || info.type === 0">鐗╀笟璐规潯娆�</div>
+ <div class="list" style="background: #F7F7F7; padding: 15px 20px;" v-if="info.type === 1 || info.type === 0">
+ <div class="item">
+ <div class="la">鎶奸噾閲戦</div>
+ <div class="val">{{ info.wyDeposit }}</div>
+ </div>
+ <div class="item">
+ <div class="la">浠樻鏂瑰紡</div>
+ <div class="val" v-if="info.wyPayType === 0">涓�娆℃�т粯娆�</div>
+ <div class="val" v-if="info.wyPayType === 1">姣忎笁涓湀涓�浠�</div>
+ <div class="val" v-if="info.wyPayType === 2">鍏釜鏈堜竴浠�</div>
+ <div class="val" v-if="info.wyPayType === 3">涓�骞翠竴浠�</div>
+ </div>
+ <div class="item">
+ <div class="la">鍏嶇鏈�</div>
+ <div class="val">{{ info.wyFreeStartDate }} ~ {{ info.wyFreeEndDate }}</div>
+ </div>
+ </div>
+ <el-table :data="info.wyDetailList" stripe style="margin-bottom: 20px;" v-if="info.type === 1 || info.type === 0">
+ <el-table-column prop="startDate" label="寮�濮嬫棩鏈�" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="endDate" label="缁撴潫鏃ユ湡" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="price" label="鍚堝悓鍗曚环" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="advanceDays" label="浠樻鎻愬墠澶╂暟" min-width="100" show-overflow-tooltip />
+ </el-table>
+ <div class="title">鍚堝悓闄勪欢</div>
+ <div class="list">
+ <el-table :data="info.fileList" stripe>
+ <el-table-column prop="name" label="闄勪欢鍚嶇О" show-overflow-tooltip />
+ <el-table-column prop="userName" label="鎿嶄綔浜�" show-overflow-tooltip />
+ <el-table-column prop="createDate" label="鎿嶄綔鏃堕棿" show-overflow-tooltip />
+ </el-table>
+ </div>
+ </div>
+ <div class="main" v-if="activeTabs === 1 && info">
+ <el-radio-group v-model="type" @change="changeType" style="margin-bottom: 20px;">
+ <el-radio-button :label="0">鏀舵璐﹀崟</el-radio-button>
+ <el-radio-button :label="1">浠樻璐﹀崟</el-radio-button>
+ </el-radio-group>
+ <el-table
+ :data="tableData"
+ border
+ v-loading="loading"
+ style="width: 100%">
+ <el-table-column
+ 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="totleFee"
+ label="璐﹀崟閲戦">
+ </el-table-column>
+ <el-table-column
+ :key="Date.now()"
+ prop="receivableFee"
+ label="搴旀敹閲戦">
+ </el-table-column>
+ <el-table-column
+ prop="actReceivableFee"
+ label="瀹炴敹閲戦">
+ </el-table-column>
+ <el-table-column
+ prop="needReceivableFee"
+ label="闇�鏀堕噾棰�">
+ <template slot-scope="{row}">
+ <el-tag type="success" v-if="row.needReceivableFee > 0">鏀�</el-tag>
+ <el-tag type="warning" v-else>浠�</el-tag>
+ <span style="margin-left: 10px;">{{Math.abs(row.needReceivableFee)}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="璐﹀崟鏉ユ簮">
+ <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="璁¤垂鍛ㄦ湡">
+ <template slot-scope="{row}">
+ {{ row.startDate }} ~ {{ row.endDate }}
+ </template>
+ </el-table-column>
+ <el-table-column
+ prop="planPayDate"
+ label="搴旀敹鏃ユ湡">
+ </el-table-column>
+ <el-table-column
+ label="鏄惁閫炬湡">
+ <template slot-scope="{row}">
+ <span v-if="row.isOverdue === 0">鍚�</span>
+ <span v-if="row.isOverdue === 1">鏄�</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ fixed="right"
+ label="鐘舵��">
+ <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>
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="page"
+ :page-sizes="[10, 15, 20, 25]"
+ :page-size="pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total">
+ </el-pagination>
+ </div>
+ <div class="main" v-if="activeTabs === 2 && info">
+ <div class="title">鎿嶄綔璁板綍</div>
+ <el-table
+ :data="info.logList"
+ border
+ style="width: 100%">
+ <el-table-column
+ :key="Date.now()"
+ width="200"
+ prop="param1"
+ label="鎿嶄綔浜�">
+ </el-table-column>
+ <el-table-column
+ :key="Date.now()"
+ width="200"
+ prop="createDate"
+ label="鎿嶄綔鏃堕棿">
+ </el-table-column>
+ <el-table-column
+ :key="Date.now()"
+ width="150"
+ label="鎿嶄綔">
+ <template slot-scope="{row}">
+ <span v-if="row.objType === 0">宸ュ崟鍒涘缓</span>
+ <span v-if="row.objType === 1">鎸囨淳</span>
+ <span v-if="row.objType === 2">澶勭悊</span>
+ <span v-if="row.objType === 3">鍚堝悓鍒涘缓</span>
+ <span v-if="row.objType === 4">鍚堝悓鍙樻洿</span>
+ <span v-if="row.objType === 5">鍚堝悓閫�绉�</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ :key="Date.now()"
+ prop="content"
+ label="鎿嶄綔鍐呭">
+ </el-table-column>
</el-table>
</div>
+ <!-- 閫�绉� -->
+ <TerminateLease ref="terminateLease" @success="getData" />
</GlobalWindow>
</template>
<script>
import GlobalWindow from '@/components/common/GlobalWindow'
import BaseOpera from '@/components/base/BaseOpera'
+import TerminateLease from './terminateLease'
+import { getById } from '@/api/contract'
+import { fetchList } from '@/api/bill'
export default {
components: {
- GlobalWindow
+ GlobalWindow,
+ TerminateLease
},
extends: BaseOpera,
data() {
return {
id: '',
visible: false,
- activeTabs: '',
- info: {}
+ activeTabs: 0,
+ type: 0,
+ info: null,
+ pageSize: 10,
+ page: 1,
+ total: 0,
+ tableData: [],
+
+ loading: false
}
},
methods: {
+ open (title, id) {
+ this.title = title
+ this.activeTabs = 0
+ this.type = 0
+ this.page = 1
+ this.pageSize = 10
+ this.tableData = []
+ this.id = id
+ this.getData()
+ },
+ getData () {
+ getById(this.id)
+ .then(res => {
+ this.info = res
+ this.getList()
+ this.visible = true
+ })
+ },
+ refund () {
+ this.$refs.terminateLease.open('鏂板缓閫�绉熷崗璁�', JSON.parse(JSON.stringify(this.info)))
+ },
+ getList () {
+ this.loading = true
+ fetchList({
+ capacity: this.pageSize,
+ page: this.page,
+ model: {
+ billType: this.type,
+ contractId: this.info.id
+ }
+ }).then(res => {
+ this.loading = false
+ this.tableData = res.records
+ this.total = res.total
+ })
+ },
+ changeType (e) {
+ console.log(e)
+ this.type = e
+ this.page = 1
+ this.pageSize = 10
+ this.tableData = []
+ this.getList()
+ },
tabsClick(val) {
this.activeTabs = val
},
getDetail() {
+ },
+ handleSizeChange (e) {
+ this.pageSize = e
+ this.getList()
+ },
+ handleCurrentChange (e) {
+ this.page = e
+ this.getList()
}
}
}
@@ -207,9 +444,9 @@
.list {
display: flex;
flex-wrap: wrap;
- background: #F7F7F7;
+ /*background: #F7F7F7;*/
border-radius: 2px;
- padding: 15px 20px;
+ /*padding: 15px 20px;*/
margin-bottom: 20px;
.item {
@@ -218,7 +455,7 @@
.la {
color: #7f7f7f;
- margin-top: 2px;
+ margin-bottom: 10px;
}
}
}
--
Gitblit v1.9.3