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 |  164 +++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 123 insertions(+), 41 deletions(-)

diff --git a/admin/src/views/contract/components/contractDetail.vue b/admin/src/views/contract/components/contractDetail.vue
index f13cf9a..47292ea 100644
--- a/admin/src/views/contract/components/contractDetail.vue
+++ b/admin/src/views/contract/components/contractDetail.vue
@@ -6,22 +6,29 @@
     :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">姝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 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>
@@ -39,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>
@@ -74,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>
@@ -99,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>
@@ -110,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>
@@ -138,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>
@@ -162,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}">
@@ -182,18 +223,22 @@
         <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}">
-            <el-tag type="success" v-if="row.needReceivableFee > 0">鏀�</el-tag>
-            <el-tag type="warning" v-else>浠�</el-tag>
+            <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>
@@ -201,10 +246,11 @@
           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 }}
@@ -284,6 +330,12 @@
     </div>
     <!--  閫�绉�  -->
     <TerminateLease ref="terminateLease" @success="getData" />
+    <!--  寰呭鐞嗚处鍗�  -->
+    <PendingBills ref="pendingBills" />
+    <!--  閫�绉熷崗璁�  -->
+    <TerminationAgreement ref="terminationAgreement" />
+    <!--  璐﹀崟璇︽儏  -->
+    <BullDetail ref="bullDetail" />
   </GlobalWindow>
 </template>
 
@@ -291,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() {
@@ -310,7 +368,7 @@
       page: 1,
       total: 0,
       tableData: [],
-      
+
       loading: false
     }
   },
@@ -324,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)
@@ -342,6 +424,7 @@
         capacity: this.pageSize,
         page: this.page,
         model: {
+          status: 0,
           billType: this.type,
           contractId: this.info.id
         }
@@ -352,7 +435,6 @@
       })
     },
     changeType (e) {
-      console.log(e)
       this.type = e
       this.page = 1
       this.pageSize = 10

--
Gitblit v1.9.3