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/finance/components/bullDetail.vue | 309 +++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 223 insertions(+), 86 deletions(-) diff --git a/admin/src/views/finance/components/bullDetail.vue b/admin/src/views/finance/components/bullDetail.vue index 8eec8dd..70cfe50 100644 --- a/admin/src/views/finance/components/bullDetail.vue +++ b/admin/src/views/finance/components/bullDetail.vue @@ -1,145 +1,276 @@ <template> - <GlobalWindow :title="'璐﹀崟璇︽儏'" :visible.sync="visible" :confirm-working="isWorking" @close="close" + <GlobalWindow :title="'璐﹀崟璇︽儏'" :withFooter="false" :visible.sync="visible" :confirm-working="isWorking" @close="close" @confirm="confirm"> - <div class="home_title"> - <div class="left"> - <span class="mr10">浠樻鏂癸細xxx</span> - <span class="status">status</span> + <div style="width: 100%; position: sticky; top: 0; left: 0; z-index: 999; background: #ffffff;"> + <div class="home_title"> + <div class="left"> + <span class="mr10">{{info.billType === 0 ? '鏀舵鏂�' : '浠樻鏂�'}}锛歿{info.customerName}}</span> + <el-tag type="success" v-if="info.status === 0">寮�鍚�</el-tag> + <el-tag type="info" v-if="info.status === 1">鍏抽棴</el-tag> + </div> + <div style="display: flex; align-items: center;"> + <el-button @click="$refs.call.open('鍙戦�佸偓缂撮�氱煡', [info.id])" v-if="info.isOverdue === 1 && info.billType === 0">鍙戦�佺即璐归�氱煡</el-button> + <el-button plain type="primary" v-if="![1].includes(info.payStatus)" @click="$refs.flowingWater.open('鍒涘缓鏀舵敮娴佹按', { + billType: returnBillType(), + billId: info.id, + costType: info.costType, + receivableFee: Math.abs(info.needReceivableFee), + costTypeName: returnText(info.costType), + contractCode: info.contractCode, + contractId: info.contractId, + startDate: info.startDate, + endDate: info.endDate, + multifileList: [], + date: `${info.startDate} ~ ${info.endDate}`, + companyId: info.companyId, + companyName: info.companyName, + actReceivableFee: Math.abs(info.needReceivableFee), + needReceivableFeeCopy: info.needReceivableFee + })">鏂板缓鏀舵敮娴佹按</el-button> + </div> </div> - <el-button plain type="primary">鏂板缓鏀舵敮娴佹按</el-button> - </div> - <div class="remark"> - <div class="item"> - <div class="la">璐﹀崟鐘舵��</div> - <div class="val">宸茬粨娓�</div> + <div class="line"></div> + <div class="main"> + <div class="list" style="background: rgba(0,0,0,0); padding: 0; margin-bottom: 0;"> + <div class="item" style="flex: 1;"> + <div class="la">缁撴竻鐘舵��</div> + <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 0">寰呮敹娆�</div> + <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 1">宸茬粨娓�</div> + <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 2">閮ㄥ垎缁撴竻</div> + <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 3">寰呬粯娆�</div> + <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 4">寰呴��娆�</div> + <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 5">宸插叧闂�</div> + </div> + <div class="item" style="flex: 1;"> + <div class="la">搴攞{info.billType === 0 ? '鏀�' : '浠�'}}閲戦锛堝厓锛�</div> + <div class="val" style="margin-top: 10px;">{{info.receivableFee}}</div> + </div> + <div class="item" style="flex: 1;"> + <div class="la">瀹瀧{info.billType === 0 ? '鏀�' : '浠�'}}閲戦锛堝厓锛�</div> + <div class="val" style="margin-top: 10px;">{{info.actReceivableFee}}</div> + </div> + <div class="item" style="flex: 1;"> + <template v-if="info.billType === 1"> + <div class="la">闇�浠橀噾棰濓紙鍏冿級</div> + </template> + <div class="la" v-else>闇�{{info.needReceivableFee > 0 ? '鏀�' : '浠�'}}閲戦锛堝厓锛�</div> + <div class="val" style="margin-top: 10px;">{{Math.abs(info.needReceivableFee)}}</div> + </div> + <div class="item" style="flex: 1;"> + <div class="la">搴攞{info.billType === 0 ? '鏀�' : '浠�'}}鏃ユ湡</div> + <div class="val" style="margin-top: 10px;">{{info.planPayDate}}</div> + </div> + </div> </div> - </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="tabs"> + <div class="tab" :class="{ active: activeTabs == 0 }" @click="tabsClick(0)">鍩虹淇℃伅</div> + <div class="tab" :class="{ active: activeTabs == 2 }" @click="tabsClick(2)">鏀舵敮娴佹按</div> + </div> </div> <div class="main"> <div class="title">鍩虹淇℃伅</div> - <div class="list"> + <div class="list" style="background: rgba(0,0,0,0); padding: 0;"> <div class="item"> - <div class="la">璐﹀崟绫诲瀷</div> - <div class="val">{{ info.aaa }}</div> + <div class="la">璐圭敤绫诲瀷</div> + <div class="val">{{returnText(info.costType)}}</div> </div> <div class="item"> <div class="la">璁¤垂鍛ㄦ湡</div> - <div class="val">{{ info.aaa }}</div> + <div class="val">{{info.startDate}} ~ {{info.endDate}}</div> </div> <div class="item"> <div class="la">璐﹀崟閲戦(鍏�)</div> - <div class="val">{{ info.aaa }}</div> + <div class="val">{{info.totleFee}}</div> </div> <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" style="color: #2080f7; cursor: pointer;" @click="handleDetail(info.contractId)">{{info.contractCode}}</div> </div> <div class="item"> <div class="la">鍒涘缓鏃堕棿</div> - <div class="val">{{ info.aaa }}</div> + <div class="val">{{info.createDate}}</div> </div> <div class="item"> <div class="la">浠樻鏂�</div> - <div class="val">{{ info.aaa }}</div> + <div class="val">{{info.customerName}}</div> </div> <div class="item"> <div class="la">缁忓姙浜�</div> - <div class="val">{{ info.aaa }}</div> + <div class="val">{{info.realname}}</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.remark}}</div> </div> + <div class="item"></div> + <div class="item"></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> + <div class="list" style="background: rgba(0,0,0,0); padding: 0;"> + <el-table + :data="info.ywContractRoomList" + border + style="width: 100%"> + <el-table-column + prop="projectName" + label="椤圭洰鍚嶇О"> + </el-table-column> + <el-table-column + prop="floorName" + label="妤煎畤鍚嶇О"> + </el-table-column> + <el-table-column + label="妤煎眰/鎴垮彿"> + <template slot-scope="{row}"> + {{row.buildingName}}/{{row.roomName}} + </template> + </el-table-column> + <el-table-column + label="闈㈢Н"> + <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> - <div class="item"> - <div class="la">缁忓姙浜�</div> - <div class="val">{{ info.aaa }}</div> - </div> + <div class="title">鏀舵敮娴佹按</div> + <div class="list" style="background: rgba(0,0,0,0); padding: 0;"> + <el-table + :data="info.ywContractRevenueList" + border + style="width: 100%"> + <el-table-column + label="娴佹按绫诲瀷"> + <template slot-scope="{row}"> + <span v-if="row.revenueType === 0">鏀跺叆</span> + <span v-if="row.revenueType === 1">鏀嚭</span> + </template> + </el-table-column> + <el-table-column + prop="customerName" + label="瀵规柟鍗曚綅鍚嶇О"> + </el-table-column> + <el-table-column + label="璐圭敤绫诲瀷"> + <template slot-scope="{row}"> + <span v-if="row.payType === 0">鐜伴噾</span> + <span v-if="row.payType === 1">缃戦摱杞处</span> + <span v-if="row.payType === 2">POS鏈�</span> + <span v-if="row.payType === 3">鏀粯瀹�</span> + <span v-if="row.payType === 4">寰俊</span> + <span v-if="row.payType === 5">杞处鏀エ</span> + <span v-if="row.payType === 6">鍏朵粬</span> + </template> + </el-table-column> + <el-table-column + prop="actPayDate" + label="鍏ヨ处鏃ユ湡"> + </el-table-column> + <el-table-column + prop="actReceivableFee" + label="鍙戠敓棰�"> + </el-table-column> + <el-table-column + prop="createDate" + label="鍒涘缓鏃堕棿"> + </el-table-column> + <el-table-column + prop="remark" + label="澶囨敞"> + </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> - <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> - <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> </div> + <!-- 鍒涘缓娴佹按 --> + <FlowingWater ref="flowingWater" @success="getDetails" @refresh="Refresh" /> + <!-- 鍚堝悓璇︽儏 --> + <ContractDetail ref="ContractDetailRef" /> + <!-- 鍙戦�佺即璐归�氱煡 --> + <Call ref="call" /> </GlobalWindow> </template> <script> import GlobalWindow from '@/components/common/GlobalWindow' import BaseOpera from '@/components/base/BaseOpera' +import FlowingWater from './flowingWater' +import Call from './call' +import ContractDetail from '../../contract/components/contractDetail' +import { getYwContractBillById } from '@/api/contract' export default { components: { - GlobalWindow + GlobalWindow, + FlowingWater, + ContractDetail, + Call }, extends: BaseOpera, data() { return { id: '', - visible: true, + visible: false, activeTabs: '', - info: {} + info: {}, + tableData: [] } }, methods: { + open (title, id) { + this.title = title + this.id = id + this.getDetails() + }, + handleDetail (id) { + this.$refs.ContractDetailRef.open('鍚堝悓璇︽儏', id) + }, + getDetails () { + getYwContractBillById(this.id) + .then(res => { + this.info = res + this.visible = true + }) + }, + returnBillType () { + if (this.info.payStatus === 0) { + return 0 + } else if (this.info.payStatus === 2) { + return this.info.billType + } else if ([3,4].includes(this.info.payStatus)) { + return 1 + } + }, + Refresh () { + this.$emit('success') + }, tabsClick(val) { this.activeTabs = val }, - getDetail() { - + returnText (e) { + if (e === 0) { + return '绉熻祦璐�' + } else if (e === 1) { + return '鐗╀笟璐�' + } else if (e === 2) { + return '绉熻祦鎶奸噾' + } else if (e === 3) { + return '鐗╀笟鎶奸噾' + } else if (e === 4) { + return '姘寸數璐�' + } else if (e === 5) { + return '鏉傞」璐�' + } else if (e === 6) { + return '鍏朵粬' + } else if (e === 7) { + return '淇濊瘉閲�' + } } } } @@ -201,6 +332,12 @@ } } +.line { + width: 100%; + margin: 15px 0; + border-bottom: 1px dashed #eaeaea; +} + .main { .title { font-weight: 500; @@ -212,18 +349,18 @@ .list { display: flex; flex-wrap: wrap; - background: #F7F7F7; + /*background: #F7F7F7;*/ border-radius: 2px; - padding: 15px 20px; + padding: 0 20px; margin-bottom: 20px; .item { - width: 25%; - margin-bottom: 16px; + flex: 25%; + margin-bottom: 20px; .la { color: #7f7f7f; - margin-top: 2px; + margin-bottom: 5px; } } } -- Gitblit v1.9.3