From a2299a6d4a6f99e9c11132138f5d3e9ec68f03ea Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期五, 06 六月 2025 19:19:34 +0800 Subject: [PATCH] 开发更新 --- admin/src/views/contract/components/contractDetail.vue | 173 +++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 135 insertions(+), 38 deletions(-) diff --git a/admin/src/views/contract/components/contractDetail.vue b/admin/src/views/contract/components/contractDetail.vue index d7beef3..47292ea 100644 --- a/admin/src/views/contract/components/contractDetail.vue +++ b/admin/src/views/contract/components/contractDetail.vue @@ -2,24 +2,33 @@ <GlobalWindow :title="title" :visible.sync="visible" + :withFooter="false" :confirm-working="isWorking" @close="close" @confirm="confirm"> - <div class="home_title" v-if="info"> - <div class="left"> - <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 style="width: 100%; position: sticky; top: 0; left: 0; z-index: 999; background: #ffffff;"> + <div class="home_title" v-if="info"> + <div class="left"> + <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> + <div> + <el-button type="primary" @click="$refs.pendingBills.open('寰呭鐞嗚处鍗�', id)" v-if="info.status === 3">鏌ョ湅寰呭鐞嗚处鍗�</el-button> + <el-button @click="$refs.terminationAgreement.open('閫�绉熷崗璁�', id)" v-if="[3,4].includes(info.status)">鏌ョ湅閫�绉熷崗璁�</el-button> + <el-button plain type="danger" v-if="[0, 1, 2].includes(info.status)" @click="refund">閫�绉�</el-button> + </div> </div> - <el-button plain type="danger" v-if="[0, 1, 2].includes(info.status)" @click="refund">閫�绉�</el-button> - </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="remark" v-if="info">{{info.remark}}</div> + <div class="remark" v-if="info && info.status === 3">{{info.btRemark}}</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> </div> <div class="main" v-if="activeTabs === 0 && info"> <div class="title">鍩虹淇℃伅</div> @@ -37,8 +46,8 @@ <div class="val">{{ info.creatorName }}</div> </div> <div class="item"> - <div class="la">鍚堝悓绉熻祦鏁�</div> - <div class="val">{{ info.totalArea }}</div> + <div class="la">鍚堝悓绉熻祦闈㈢Н</div> + <div class="val">{{ info.totalArea }}銕�</div> </div> <div class="item"> <div class="la">鎵�灞炲叕鍙�</div> @@ -72,12 +81,12 @@ <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}} + {{row.floorName}}/{{row.roomNum}} </template> </el-table-column> <el-table-column prop="area" label="闈㈢Н" show-overflow-tooltip> <template slot-scope="{row}"> - {{row.area}}銕� + {{row.rentArea}}銕� </template> </el-table-column> </el-table> @@ -97,7 +106,7 @@ <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.zlDeposit }}</div> + <div class="val">{{ info.zlDeposit }}鍏�</div> </div> <div class="item"> <div class="la">浠樻鏂瑰紡</div> @@ -108,20 +117,35 @@ </div> <div class="item"> <div class="la">鍏嶇鏈�</div> - <div class="val">{{ info.zlFreeStartDate }} ~ {{ info.zlFreeEndDate }}</div> + <div class="val" v-if="info.zlFreeStartDate && info.zlFreeEndDate"> + {{ info.zlFreeStartDate }} ~ {{ info.zlFreeEndDate }} + </div> + <div class="val" v-else> + - + </div> </div> </div> <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-column prop="startDate" label="寮�濮嬫棩鏈�" :key="Date.now()" min-width="100" show-overflow-tooltip /> + <el-table-column prop="endDate" label="缁撴潫鏃ユ湡" :key="Date.now()" min-width="100" show-overflow-tooltip /> + <el-table-column label="鍚堝悓鍗曚环" min-width="100" show-overflow-tooltip> + <template slot-scope="{row}"> + {{row.price}} {{returnUnit(row.circleType)}} + </template> + </el-table-column> + <el-table-column label="浠樻鎻愬墠澶╂暟" min-width="100" show-overflow-tooltip> + <template slot-scope="{row}"> + <template v-if="row.advanceDays"> + {{row.advanceDays}}澶� + </template> + </template> + </el-table-column> </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 class="val">{{ info.wyDeposit }}鍏�</div> </div> <div class="item"> <div class="la">浠樻鏂瑰紡</div> @@ -136,15 +160,27 @@ </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-column prop="startDate" label="寮�濮嬫棩鏈�" :key="Date.now()" min-width="100" show-overflow-tooltip /> + <el-table-column prop="endDate" label="缁撴潫鏃ユ湡" :key="Date.now()" min-width="100" show-overflow-tooltip /> + <el-table-column label="鍚堝悓鍗曚环" min-width="100" show-overflow-tooltip> + <template slot-scope="{row}"> + {{row.price}} {{returnUnit(row.circleType)}} + </template> + </el-table-column> + <el-table-column label="浠樻鎻愬墠澶╂暟" min-width="100" show-overflow-tooltip> + <template slot-scope="{row}"> + {{row.advanceDays}}澶� + </template> + </el-table-column> </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 label="闄勪欢鍚嶇О" show-overflow-tooltip> + <template slot-scope="{row}"> + <u style="color: #0c6ce3; cursor: pointer;" @click="xiazai(row.fileurlFull)">{{row.name}}</u> + </template> + </el-table-column> <el-table-column prop="userName" label="鎿嶄綔浜�" show-overflow-tooltip /> <el-table-column prop="createDate" label="鎿嶄綔鏃堕棿" show-overflow-tooltip /> </el-table> @@ -160,6 +196,13 @@ border v-loading="loading" style="width: 100%"> + <el-table-column + width="150" + label="璐﹀崟缂栧彿"> + <template slot-scope="{row}"> + <el-button type="text" @click="openBill(row.id)">{{row.code}}</el-button> + </template> + </el-table-column> <el-table-column label="璐圭敤绫诲瀷"> <template slot-scope="{row}"> @@ -178,25 +221,36 @@ label="璐﹀崟閲戦"> </el-table-column> <el-table-column + :key="Date.now()" prop="receivableFee" - label="搴旀敹閲戦"> + :label="`搴�${type === 0 ? '鏀�' : '浠�'}閲戦`"> </el-table-column> <el-table-column prop="actReceivableFee" - label="瀹炴敹閲戦"> + :label="`瀹�${type === 0 ? '鏀�' : '浠�'}閲戦`"> </el-table-column> <el-table-column - prop="needReceivableFee" - label="闇�鏀堕噾棰�"> + :label="`闇�${type === 0 ? '鏀�' : '浠�'}閲戦`"> + <template slot-scope="{row}"> + <template v-if="type === 0"> + <el-tag type="success" v-if="row.needReceivableFee > 0">鏀�</el-tag> + <el-tag type="warning" v-else-if="row.needReceivableFee < 0">浠�</el-tag> + </template> + <template v-else> + <el-tag type="warning" v-if="row.needReceivableFee !== 0">浠�</el-tag> + </template> + <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> + <span v-else>鑷缓璐﹀崟</span> </template> </el-table-column> <el-table-column + width="200" label="璁¤垂鍛ㄦ湡"> <template slot-scope="{row}"> {{ row.startDate }} ~ {{ row.endDate }} @@ -243,14 +297,20 @@ 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> @@ -262,6 +322,7 @@ </template> </el-table-column> <el-table-column + :key="Date.now()" prop="content" label="鎿嶄綔鍐呭"> </el-table-column> @@ -269,6 +330,12 @@ </div> <!-- 閫�绉� --> <TerminateLease ref="terminateLease" @success="getData" /> + <!-- 寰呭鐞嗚处鍗� --> + <PendingBills ref="pendingBills" /> + <!-- 閫�绉熷崗璁� --> + <TerminationAgreement ref="terminationAgreement" /> + <!-- 璐﹀崟璇︽儏 --> + <BullDetail ref="bullDetail" /> </GlobalWindow> </template> @@ -276,12 +343,18 @@ import GlobalWindow from '@/components/common/GlobalWindow' import BaseOpera from '@/components/base/BaseOpera' import TerminateLease from './terminateLease' +import PendingBills from './pendingBills' +import TerminationAgreement from './terminationAgreement' +import BullDetail from '../../finance/components/bullDetail' import { getById } from '@/api/contract' import { fetchList } from '@/api/bill' export default { components: { GlobalWindow, - TerminateLease + TerminateLease, + PendingBills, + TerminationAgreement, + BullDetail }, extends: BaseOpera, data() { @@ -295,7 +368,7 @@ page: 1, total: 0, tableData: [], - + loading: false } }, @@ -309,6 +382,30 @@ this.tableData = [] this.id = id this.getData() + }, + xiazai (url) { + window.open(url) + }, + openBill(id) { + this.$refs.bullDetail.open('璐﹀崟璇︽儏', id) + }, + returnUnit (type) { + switch (type) { + case 0: + return '鍏�/m虏路澶�' + case 1: + return '鍏�/m虏路鏈�' + case 2: + return '鍏�/m虏路骞�' + case 3: + return '鍏�/澶�' + case 4: + return '鍏�/鏈�' + case 5: + return '鍏�/骞�' + case 6: + return '鍏�/鍦�' + } }, getData () { getById(this.id) @@ -327,6 +424,7 @@ capacity: this.pageSize, page: this.page, model: { + status: 0, billType: this.type, contractId: this.info.id } @@ -337,7 +435,6 @@ }) }, changeType (e) { - console.log(e) this.type = e this.page = 1 this.pageSize = 10 -- Gitblit v1.9.3