From 0527684883bc620febe0a1360f661cc2a7f16e00 Mon Sep 17 00:00:00 2001 From: liukangdong <898885815@qq.com> Date: 星期五, 29 十一月 2024 17:21:35 +0800 Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/funingyunwei --- admin/src/views/contract/components/contractDetail.vue | 330 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 276 insertions(+), 54 deletions(-) diff --git a/admin/src/views/contract/components/contractDetail.vue b/admin/src/views/contract/components/contractDetail.vue index f8504a5..d7beef3 100644 --- a/admin/src/views/contract/components/contractDetail.vue +++ b/admin/src/views/contract/components/contractDetail.vue @@ -1,140 +1,362 @@ <template> - <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @close="close" + <GlobalWindow + :title="title" + :visible.sync="visible" + :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">鎵ц涓�</el-tag> + <el-tag type="success" v-if="info.status === 2">宸插埌鏈�</el-tag> + <el-tag type="success" v-if="info.status === 3">宸查��绉�</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 + prop="receivableFee" + label="搴旀敹閲戦"> + </el-table-column> + <el-table-column + prop="actReceivableFee" + label="瀹炴敹閲戦"> + </el-table-column> + <el-table-column + prop="needReceivableFee" + label="闇�鏀堕噾棰�"> + </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 + prop="param1" + label="鎿嶄綔浜�"> + </el-table-column> + <el-table-column + prop="createDate" + label="鎿嶄綔鏃堕棿"> + </el-table-column> + <el-table-column + 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 + 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 +429,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 +440,7 @@ .la { color: #7f7f7f; - margin-top: 2px; + margin-bottom: 10px; } } } -- Gitblit v1.9.3