From 2288061f2d0afd7bd29660a5b724d8c69cb844a9 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期二, 04 三月 2025 09:11:51 +0800
Subject: [PATCH] 改bug
---
admin/src/views/contract/components/contractEdit.vue | 509 ++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 349 insertions(+), 160 deletions(-)
diff --git a/admin/src/views/contract/components/contractEdit.vue b/admin/src/views/contract/components/contractEdit.vue
index 66c0851..6867919 100644
--- a/admin/src/views/contract/components/contractEdit.vue
+++ b/admin/src/views/contract/components/contractEdit.vue
@@ -1,12 +1,6 @@
<template>
- <GlobalWindow
- width="100%"
- :title="title"
- :withFooter="false"
- :visible.sync="visible"
- :confirm-working="isWorking"
- @confirm="confirm"
- @close="close">
+ <GlobalWindow width="100%" :title="title" :withFooter="false" :visible.sync="visible" :confirm-working="isWorking"
+ @confirm="confirm" @close="close">
<div class="tabs fixed">
<div class="tab" :class="{ active: activeTabs === 0 }">1銆佸熀鏈俊鎭�</div>
<div class="tab" :class="{ active: activeTabs === 1 }">2銆佽垂鐢ㄦ潯娆�</div>
@@ -19,7 +13,8 @@
<div class="list">
<el-form-item label="鍚堝悓绫诲瀷" prop="type">
<el-select v-model="form.type" placeholder="璇烽�夋嫨" @change="changeType">
- <el-option v-for="(item, index) in types" :key="index" :value="item.value" :label="item.name"></el-option>
+ <el-option v-for="(item, index) in types" :key="index" :value="item.value"
+ :label="item.name"></el-option>
</el-select>
</el-form-item>
<el-form-item label="鍚堝悓缂栧彿" prop="code">
@@ -27,21 +22,26 @@
</el-form-item>
<el-form-item label="缁忓姙浜�" prop="userId">
<el-select v-model="form.userId" filterable placeholder="璇烽�夋嫨">
- <el-option v-for="(item, index) in agentList" :key="index" :value="item.id" :label="item.realname"></el-option>
+ <el-option v-for="(item, index) in agentList" :key="index" :value="item.id"
+ :label="item.realname"></el-option>
</el-select>
</el-form-item>
<el-form-item label="鍚堝悓绛捐鏃ユ湡" prop="signDate">
- <el-date-picker type="date" v-model="form.signDate" value-format="yyyy-MM-dd" :clearable="false" placeholder="璇烽�夋嫨" />
+ <el-date-picker type="date" v-model="form.signDate" value-format="yyyy-MM-dd" :clearable="false"
+ placeholder="璇烽�夋嫨" />
</el-form-item>
<el-form-item label="鍚堝悓寮�濮嬫棩鏈�" prop="startDate">
- <el-date-picker type="date" v-model="form.startDate" @change="getHouseData" :clearable="false" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+ <el-date-picker type="date" v-model="form.startDate" @change="getHouseData" :clearable="false"
+ value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
</el-form-item>
<el-form-item label="鍚堝悓缁撴潫鏃ユ湡" prop="endDate">
- <el-date-picker type="date" v-model="form.endDate" @change="getHouseData" :clearable="false" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+ <el-date-picker type="date" v-model="form.endDate" @change="getHouseData" :clearable="false"
+ value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
</el-form-item>
<el-form-item label="褰掑睘椤圭洰" prop="projectId">
<el-select v-model="form.projectId" @change="getHouseTree" placeholder="璇烽�夋嫨">
- <el-option v-for="(item, index) in projectList" :key="index" :value="item.id" :label="item.name"></el-option>
+ <el-option v-for="(item, index) in projectList" :key="index" :value="item.id"
+ :label="item.name"></el-option>
</el-select>
</el-form-item>
<el-form-item label="缁撴灉鍙栨暣(鍥涜垗浜斿叆)" prop="roundedUp">
@@ -52,7 +52,8 @@
</el-form-item>
<el-form-item label="鎵�灞炲叕鍙�" prop="companyId">
<el-select v-model="form.companyId" placeholder="璇烽�夋嫨">
- <el-option v-for="(item, index) in comparyList" :key="index" :value="item.id" :label="item.name"></el-option>
+ <el-option v-for="(item, index) in comparyList" :key="index" :value="item.id"
+ :label="item.name"></el-option>
</el-select>
</el-form-item>
</div>
@@ -65,24 +66,21 @@
</el-form-item>
<el-form-item label="鑱旂郴浜�" prop="memberId">
<el-select v-model="form.memberId" placeholder="璇烽�夋嫨">
- <el-option v-for="(item, index) in contactsList" :key="index" :value="item.id" :label="item.name"></el-option>
+ <el-option v-for="(item, index) in contactsList" :key="index" :value="item.id"
+ :label="item.name"></el-option>
</el-select>
-<!-- <el-input v-model="form.memberName" readonly placeholder="璇风偣鍑婚�夋嫨绉熷" />-->
+ <!-- <el-input v-model="form.memberName" readonly placeholder="璇风偣鍑婚�夋嫨绉熷" />-->
</el-form-item>
</div>
</el-form>
</div>
<div class="main_house">
<div class="title">璇烽�夋嫨鎴挎簮</div>
- <el-tree
- :data="houseList"
- show-checkbox
- node-key="idd"
- @check="checkHouseRoom"
- :default-expanded-keys="ids"
- :default-checked-keys="ids"
- :props="{ children: 'projectDataVOList', label: 'name' }">
- <span class="custom-tree-node" style="width: 100%; display: flex; align-items: center; justify-content: space-between;" slot-scope="{ node, data }">
+ <el-tree :data="houseList" show-checkbox node-key="idd" @check="checkHouseRoom" :default-expanded-keys="ids"
+ :default-checked-keys="ids" :props="{ children: 'projectDataVOList', label: 'name' }">
+ <span class="custom-tree-node"
+ style="width: 100%; display: flex; align-items: center; justify-content: space-between;"
+ slot-scope="{ node, data }">
<span>{{ data.name }}</span>
<span style="color: #2080f7;" v-if="data.lv === 3">
{{ data.area }}銕�
@@ -113,8 +111,12 @@
</div>
<div v-show="activeTabs === 1">
<div class="tabs cost_tabs">
- <div class="tab" :class="{ active: cactiveTabs === 0 }" @click="ctabsClick(0)" v-if="[0,2].includes(form.type)">绉熻祦鏉℃</div>
- <div class="tab" :class="{ active: cactiveTabs === 1 }" @click="ctabsClick(1)" v-if="[0,1].includes(form.type)">鐗╀笟鏉℃</div>
+ <div class="tab" :class="{ active: cactiveTabs === 0 }" @click="ctabsClick(0)" v-if="[0, 2].includes(form.type)">
+ 绉熻祦鏉℃
+ </div>
+ <div class="tab" :class="{ active: cactiveTabs === 1 }" @click="ctabsClick(1)" v-if="[0, 1].includes(form.type)">
+ 鐗╀笟鏉℃
+ </div>
</div>
<!-- 绉熻祦鏉℃ -->
<div v-show="cactiveTabs === 0">
@@ -124,11 +126,12 @@
<div class="m_title">绉熻祦淇℃伅</div>
<div class="list">
<el-form-item label="鎶奸噾閲戦(鍏�)" prop="zlDeposit">
- <el-input v-model="form.zlDeposit" placeholder="璇疯緭鍏�" v-trim />
+ <el-input v-model="form.zlDeposit" @input="clearzl" placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
<el-form-item label="浠樻鏂瑰紡" prop="zlPayType">
- <el-select v-model="form.zlPayType" placeholder="璇烽�夋嫨">
- <el-option v-for="(item, index) in payMethods" :key="index" :value="item.value" :label="item.name"></el-option>
+ <el-select v-model="form.zlPayType" @change="changePayType" placeholder="璇烽�夋嫨">
+ <el-option v-for="(item, index) in payMethods" :key="index" :value="item.value"
+ :label="item.name"></el-option>
</el-select>
</el-form-item>
<el-form-item label="鍏嶇鏈�" prop="zlDate">
@@ -141,21 +144,32 @@
<el-button type="text" size="medium" @click="addZl">澧炲姞</el-button>
</div>
<div class="list">
- <div style="width: 100%; display: flex; flex-wrap: wrap;" v-for="(item, index) in form.zlDetailList" :key="index">
- <el-form-item label="璧峰鏃ユ湡" prop="time">
- <el-date-picker type="daterange" v-model="item.time" @change="getDate1($event, index)" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+ <div style="width: 100%; display: flex; flex-wrap: wrap;"
+ v-for="(zlDetailList, index) in form.zlDetailList" :key="index">
+ <el-form-item label="璧峰鏃ユ湡" :prop="'zlDetailList.' + index + '.time'" :rules="{
+ required: true, message: '璇烽�夋嫨', trigger: 'blur'
+ }">
+ <el-date-picker type="daterange" v-model="zlDetailList.time" @change="getDate1($event, index)"
+ value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
</el-form-item>
- <el-form-item label="鍚堝悓鍗曚环" prop="price">
- <el-input placeholder="璇疯緭鍏�" v-model="item.price" class="input-with-select">
- <el-select v-model="item.circleType" style="width: 150px;" slot="append" placeholder="璇烽�夋嫨">
- <el-option v-for="(item, index) in unitOps" :key="index" :value="item.value" :label="item.name"></el-option>
+ <el-form-item label="鍚堝悓鍗曚环" :prop="'zlDetailList.' + index + '.price'" :rules="{
+ required: true, message: '璇疯緭鍏�', trigger: 'blur'
+ }">
+ <el-input placeholder="璇疯緭鍏�" v-model="zlDetailList.price" @input="clearzl" class="input-with-select">
+ <el-select v-model="zlDetailList.circleType" @change="clearzl" style="width: 150px;" slot="append"
+ placeholder="璇烽�夋嫨">
+ <el-option v-for="(item, index) in unitOps" :key="index" :value="item.value"
+ :label="item.name"></el-option>
</el-select>
</el-input>
</el-form-item>
- <el-form-item label="浠樻鎻愬墠澶╂暟" prop="advanceDays">
+ <el-form-item label="浠樻鎻愬墠澶╂暟" :prop="'zlDetailList.' + index + '.advanceDays'" :rules="{
+ required: true, message: '璇疯緭鍏�', trigger: 'blur'
+ }">
<div style="display: flex; align-items: center; justify-content: space-between;">
- <el-input v-model="item.advanceDays" placeholder="璇疯緭鍏�" v-trim />
- <el-link :underline="false" type="danger" @click="deleZl(index)" style="margin-left: 20px; flex-shrink: 0;">鍒犻櫎</el-link>
+ <el-input v-model="zlDetailList.advanceDays" @input="clearzl" placeholder="璇疯緭鍏�" v-trim />
+ <el-link :underline="false" type="danger" @click="deleZl(index)"
+ style="margin-left: 20px; flex-shrink: 0;">鍒犻櫎</el-link>
</div>
</el-form-item>
</div>
@@ -164,8 +178,15 @@
</div>
</div>
<el-button style="width: 100%;height: 48px;" type="primary" plain @click="generateZL">鐢熸垚璐﹀崟鏄庣粏</el-button>
+ <div style="width: 100%; text-align: right; margin-bottom: 10px; margin-top: 15px;" v-if="zlList.length > 0">
+ <el-button icon="el-icon-edit" v-if="!isShow" @click="changeEdit(1)">缂栬緫</el-button>
+ <el-popconfirm v-if="isShow" title="鏄惁鏀惧純鎵嬪姩淇敼鎵�濉殑鏁版嵁锛�" @confirm="isShow = false">
+ <el-button slot="reference" style="margin-right: 15px;">鍙栨秷</el-button>
+ </el-popconfirm>
+ <el-button type="primary" v-if="isShow" @click="changeNum(1)">淇濆瓨</el-button>
+ </div>
<el-table :data="zlList" class="mt20" stripe>
- <el-table-column label="璐圭敤绫诲瀷" align="center" show-overflow-tooltip>
+ <el-table-column label="璐圭敤绫诲瀷" align="center" :key="Date.now()" show-overflow-tooltip>
<template slot-scope="{row}">
<span v-if="row.costType === 0">绉熻祦璐�</span>
<span v-if="row.costType === 1">鐗╀笟璐�</span>
@@ -177,26 +198,32 @@
<span v-if="row.costType === 7">淇濊瘉閲�</span>
</template>
</el-table-column>
- <el-table-column label="鏈熸暟" align="center" show-overflow-tooltip>
+ <el-table-column label="鏈熸暟" align="center" :key="Date.now()" show-overflow-tooltip>
<template slot-scope="{row}">
- <el-tag type="success" v-if="row.sortnum > 0">{{row.sortnum}}</el-tag>
+ <el-tag type="success" v-if="row.sortnum > 0">{{ row.sortnum }}</el-tag>
</template>
</el-table-column>
- <el-table-column label="鍖洪棿" align="center" show-overflow-tooltip>
+ <el-table-column label="鍖洪棿" align="center" :key="Date.now()" show-overflow-tooltip>
<template slot-scope="{row}">
- {{row.startDate}} ~ {{row.endDate}}
+ {{ row.startDate }} ~ {{ row.endDate }}
</template>
</el-table-column>
- <el-table-column prop="planPayDate" label="浠樻鏃�" align="center" show-overflow-tooltip />
- <el-table-column label="搴旀敹" align="center" show-overflow-tooltip>
+ <el-table-column prop="planPayDate" label="浠樻鏃�" align="center" :key="Date.now()" show-overflow-tooltip />
+ <el-table-column label="搴旀敹" align="center" :key="Date.now()" show-overflow-tooltip>
<template slot-scope="{row}">
- {{row.receivableFee}}鍏�
+ <span v-if="[2,3].includes(row.costType)">{{ row.totleFee }}鍏�</span>
+ <template v-else>
+ <span v-if="!isShow">{{ row.totleFee }}鍏�</span>
+ <div style="display: flex; align-items: center;" v-if="isShow">
+ <el-input v-model="row.totleFeeCopy" placeholder="璇疯緭鍏�"></el-input>鍏�
+ </div>
+ </template>
</template>
</el-table-column>
</el-table>
<div class="total">
<span>鎬昏</span>
- <div>璐圭敤搴旀敹鎬昏锛歿{zlPrice}}鍏冿紝鎶奸噾搴旀敹鎬昏锛歿{form.zlDeposit}}鍏�</div>
+ <div>璐圭敤搴旀敹鎬昏锛歿{ zlPrice }}鍏冿紝鎶奸噾搴旀敹鎬昏锛歿{ form.zlDeposit }}鍏�</div>
</div>
</div>
<!-- 鐗╀笟鏉℃ -->
@@ -207,11 +234,12 @@
<div class="m_title">鐗╀笟淇℃伅</div>
<div class="list">
<el-form-item label="鐗╀笟鎶奸噾" prop="wyDeposit">
- <el-input v-model="form.wyDeposit" placeholder="璇疯緭鍏�" v-trim />
+ <el-input v-model="form.wyDeposit" @input="clearwy" placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
<el-form-item label="浠樻鏂瑰紡" prop="wyPayType">
- <el-select v-model="form.wyPayType" placeholder="璇烽�夋嫨">
- <el-option v-for="(item, index) in payMethods" :key="index" :value="item.value" :label="item.name"></el-option>
+ <el-select v-model="form.wyPayType" @change="changePayType1" placeholder="璇烽�夋嫨">
+ <el-option v-for="(item, index) in payMethods" :key="index" :value="item.value"
+ :label="item.name"></el-option>
</el-select>
</el-form-item>
<el-form-item label="鍏嶇鏈�" prop="wyDate">
@@ -224,21 +252,32 @@
<el-button type="text" size="medium" @click="addWy">澧炲姞</el-button>
</div>
<div class="list">
- <div style="width: 100%; display: flex; flex-wrap: wrap;" v-for="(item, index) in form.wyDetailList" :key="index">
- <el-form-item label="璧峰鏃ユ湡" prop="time">
- <el-date-picker type="daterange" v-model="item.time" @change="getDate2($event, index)" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+ <div style="width: 100%; display: flex; flex-wrap: wrap;"
+ v-for="(wyDetailList, index) in form.wyDetailList" :key="index">
+ <el-form-item label="璧峰鏃ユ湡" :prop="'wyDetailList.' + index + '.time'" :rules="{
+ required: true, message: '璇疯緭鍏�', trigger: 'blur'
+ }">
+ <el-date-picker type="daterange" v-model="wyDetailList.time" @change="getDate2($event, index)"
+ value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
</el-form-item>
- <el-form-item label="鍚堝悓鍗曚环" prop="price">
- <el-input placeholder="璇疯緭鍏�" v-model="item.price">
- <el-select v-model="item.circleType" style="width: 150px;" slot="append" placeholder="璇烽�夋嫨">
- <el-option v-for="(item, index) in unitOps" :key="index" :value="item.value" :label="item.name"></el-option>
+ <el-form-item label="鍚堝悓鍗曚环" :prop="'wyDetailList.' + index + '.price'" :rules="{
+ required: true, message: '璇疯緭鍏�', trigger: 'blur'
+ }">
+ <el-input placeholder="璇疯緭鍏�" @input="clearwy" v-model="wyDetailList.price">
+ <el-select v-model="wyDetailList.circleType" @change="clearwy" style="width: 150px;" slot="append"
+ placeholder="璇烽�夋嫨">
+ <el-option v-for="(item, index) in unitOps1" :key="index" :value="item.value"
+ :label="item.name"></el-option>
</el-select>
</el-input>
</el-form-item>
- <el-form-item label="浠樻鎻愬墠澶╂暟" prop="advanceDays">
+ <el-form-item label="浠樻鎻愬墠澶╂暟" :prop="'wyDetailList.' + index + '.advanceDays'" :rules="{
+ required: true, message: '璇疯緭鍏�', trigger: 'blur'
+ }">
<div style="display: flex; align-items: center; justify-content: space-between;">
- <el-input v-model="item.advanceDays" placeholder="璇疯緭鍏�" v-trim />
- <el-link :underline="false" type="danger" @click="deleWy(index)" style="margin-left: 20px; flex-shrink: 0;">鍒犻櫎</el-link>
+ <el-input v-model="wyDetailList.advanceDays" @input="clearwy" placeholder="璇疯緭鍏�" v-trim />
+ <el-link :underline="false" type="danger" @click="deleWy(index)"
+ style="margin-left: 20px; flex-shrink: 0;">鍒犻櫎</el-link>
</div>
</el-form-item>
</div>
@@ -247,8 +286,15 @@
</div>
</div>
<el-button style="width: 100%;height: 48px;" type="primary" plain @click="generateWY">鐢熸垚璐﹀崟鏄庣粏</el-button>
+ <div style="width: 100%; text-align: right; margin-bottom: 10px; margin-top: 15px;">
+ <el-button icon="el-icon-edit" v-if="!isShow" @click="changeEdit(1)">缂栬緫</el-button>
+ <el-popconfirm v-if="isShow" title="鏄惁鏀惧純鎵嬪姩淇敼鎵�濉殑鏁版嵁锛�" @confirm="isShow = false">
+ <el-button slot="reference" style="margin-right: 15px;">鍙栨秷</el-button>
+ </el-popconfirm>
+ <el-button type="primary" v-if="isShow" @click="changeNum(2)">淇濆瓨</el-button>
+ </div>
<el-table :data="wyList" class="mt20" stripe>
- <el-table-column label="璐圭敤绫诲瀷" align="center" show-overflow-tooltip>
+ <el-table-column label="璐圭敤绫诲瀷" align="center" :key="Date.now()" show-overflow-tooltip>
<template slot-scope="{row}">
<span v-if="row.costType === 0">绉熻祦璐�</span>
<span v-if="row.costType === 1">鐗╀笟璐�</span>
@@ -260,34 +306,42 @@
<span v-if="row.costType === 7">淇濊瘉閲�</span>
</template>
</el-table-column>
- <el-table-column label="鏈熸暟" align="center" show-overflow-tooltip>
+ <el-table-column label="鏈熸暟" align="center" :key="Date.now()" show-overflow-tooltip>
<template slot-scope="{row}">
- <el-tag type="success" v-if="row.sortnum > 0">{{row.sortnum}}</el-tag>
+ <el-tag type="success" v-if="row.sortnum > 0">{{ row.sortnum }}</el-tag>
</template>
</el-table-column>
- <el-table-column label="鍖洪棿" align="center" show-overflow-tooltip>
+ <el-table-column label="鍖洪棿" align="center" :key="Date.now()" show-overflow-tooltip>
<template slot-scope="{row}">
- {{row.startDate}} ~ {{row.endDate}}
+ {{ row.startDate }} ~ {{ row.endDate }}
</template>
</el-table-column>
- <el-table-column prop="planPayDate" label="浠樻鏃�" align="center" show-overflow-tooltip />
- <el-table-column prop="receivableFee" label="搴旀敹" align="center" show-overflow-tooltip>
+ <el-table-column prop="planPayDate" label="浠樻鏃�" :key="Date.now()" align="center" show-overflow-tooltip />
+ <el-table-column label="搴旀敹" :key="Date.now()" align="center" show-overflow-tooltip>
<template slot-scope="{row}">
- {{row.receivableFee}}鍏�
+ <span v-if="[2,3].includes(row.costType)">{{ row.totleFee }}鍏�</span>
+ <template v-else>
+ <span v-if="!isShow">{{ row.totleFee }}鍏�</span>
+ <div style="display: flex; align-items: center;" v-if="isShow">
+ <el-input v-model="row.totleFeeCopy" placeholder="璇疯緭鍏�"></el-input>鍏�
+ </div>
+ </template>
</template>
</el-table-column>
</el-table>
<div class="total">
<span>鎬昏</span>
- <div>璐圭敤搴旀敹鎬昏锛歿{wyPrice}}鍏冿紝鎶奸噾搴旀敹鎬昏锛歿{form.wyDeposit}}鍏�</div>
+ <div>璐圭敤搴旀敹鎬昏锛歿{ wyPrice }}鍏冿紝鎶奸噾搴旀敹鎬昏锛歿{ form.wyDeposit }}鍏�</div>
</div>
</div>
</div>
- <div class="window__footer" style="position: sticky; bottom: 0; left: 0; z-index: 9; background: #ffffff;">
+ <div style="width: 100%; height: 50px;"></div>
+ <div class="window__footer">
<slot name="footer">
- <el-button @click="confirm" :loading="confirmWorking" type="primary">{{activeTabs === 0 ? '涓嬩竴姝�' : '鎻愪氦'}}</el-button>
+ <el-button @click="confirm" :loading="confirmWorking" type="primary">{{ activeTabs === 0 ? '涓嬩竴姝�' :
+ '鎻愪氦'}}</el-button>
<slot name="btns" />
- <el-button @click="close">{{activeTabs === 0 ? '杩斿洖' : '涓婁竴姝�'}}</el-button>
+ <el-button @click="close">{{ activeTabs === 0 ? '杩斿洖' : '涓婁竴姝�' }}</el-button>
</slot>
</div>
<!-- 閫夋嫨绉熷 -->
@@ -304,7 +358,7 @@
import { ywList } from '@/api/customer'
import { getUserList } from '@/api/system/user'
import { getProjectList, tree } from '@/api/project/ywProject'
-import { companyList } from '@/api/company'
+import {companyListConstract as companyList } from '@/api/company'
import { Message, Loading } from 'element-ui'
import { mapState } from 'vuex'
export default {
@@ -316,7 +370,7 @@
computed: {
...mapState(['userInfo'])
},
- data () {
+ data() {
return {
title: '鍒涘缓鍚堝悓',
activeTabs: 0,
@@ -328,14 +382,14 @@
startDate: '',
endDate: '',
projectId: '',
- roundedUp: '',
+ roundedUp: 0,
companyId: '',
renterId: '',
renterName: '',
memberId: '',
memberName: '',
fileList: [],
-
+
zlDeposit: '',
zlPayType: '',
zlFreeStartDate: '',
@@ -351,7 +405,7 @@
advanceDays: ''
}
],
-
+
wyDeposit: '',
wyPayType: '',
wyFreeStartDate: '',
@@ -367,17 +421,17 @@
advanceDays: ''
}
],
-
+
roomIds: []
},
-
+
ids: [],
-
+
zlList: [],
wyList: [],
-
+
rules,
-
+
contactsList: [],
loadingInstance: null,
@@ -411,15 +465,28 @@
{ name: '鍏�/m虏路骞�', value: 2 },
{ name: '鍏�/鍦�', value: 6 },
],
-
- houseLvThree: []
+ unitOps1: [
+ { name: '鍏�/m虏路澶�', value: 0 },
+ { name: '鍏�/m虏路鏈�', value: 1 },
+ { name: '鍏�/澶�', value: 3 },
+ { name: '鍏�/鏈�', value: 4 },
+ { name: '鍏�/骞�', value: 5 },
+ { name: '鍏�/m虏路骞�', value: 2 },
+ { name: '鍏�/鍦�', value: 6 },
+ ],
+
+
+ houseLvThree: [],
+ isShow: false
}
},
methods: {
- open (title, target) {
+ open(title, target) {
this.title = title
this.ids = []
this.houseList = []
+ this.zlPrice = ''
+ this.wyPrice = ''
this.getUser()
this.getProject()
this.getCompany()
@@ -433,6 +500,12 @@
this.form[key] = ''
}
}
+ this.wyList = []
+ this.zlList = []
+ this.form.userId = this.userInfo.id
+ this.form.signDate = this.getDayTime()
+ this.form.startDate = this.getDayTime()
+ this.form.endDate = this.getDayTime(1)
this.form.zlDetailList = [
{
circleType: 0,
@@ -453,74 +526,154 @@
advanceDays: ''
}
]
- this.wyList = []
- this.zlList = []
- this.form.userId = this.userInfo.id
- this.form.signDate = this.getDayTime()
- this.form.startDate = this.getDayTime()
- this.form.endDate = this.getDayTime(1)
+ this.form.roundedUp = 0
// this.getHouseTree()
})
},
+ changeEdit(type) {
+ if (type === 1) {
+ this.zlList.forEach(item => {
+ item.totleFeeCopy = JSON.parse(JSON.stringify(item.totleFee))
+ })
+ this.isShow = true
+ } else if (type === 2) {
+ this.isShow = false
+ }
+ },
+ changeNum(type) {
+ // 绉熻祦璁$畻
+ if (type === 1) {
+ let num = 0
+ this.zlList.forEach(item => {
+ if (item.costType !== 2) {
+ num += Number(item.totleFeeCopy)
+ item.totleFee = JSON.parse(JSON.stringify(item.totleFeeCopy))
+ }
+ })
+ this.zlPrice = num
+ } else if (type === 2) {
+ let num = 0
+ this.wyList.forEach(item => {
+ if (item.costType !== 3) {
+ num += Number(item.totleFeeCopy)
+ item.totleFee = JSON.parse(JSON.stringify(item.totleFeeCopy))
+ }
+ })
+ this.wyPrice = num
+ }
+ this.isShow = false
+ },
+ changePayType(e) {
+ if (e === 0) {
+ this.unitOps = [
+ { name: '鍏�/m虏路澶�', value: 0 },
+ { name: '鍏�/m虏路鏈�', value: 1 },
+ { name: '鍏�/澶�', value: 3 },
+ { name: '鍏�/鏈�', value: 4 },
+ { name: '鍏�/骞�', value: 5 },
+ { name: '鍏�/m虏路骞�', value: 2 },
+ { name: '鍏�/鍦�', value: 6 },
+ ]
+ } else {
+ this.form.zlDetailList.forEach(item => {
+ if (item.circleType === 6) {
+ item.circleType = 0
+ }
+ })
+ this.unitOps = [
+ { name: '鍏�/m虏路澶�', value: 0 },
+ { name: '鍏�/m虏路鏈�', value: 1 },
+ { name: '鍏�/澶�', value: 3 },
+ { name: '鍏�/鏈�', value: 4 },
+ { name: '鍏�/骞�', value: 5 },
+ { name: '鍏�/m虏路骞�', value: 2 }
+ ]
+ }
+ this.clearzl()
+ },
+ changePayType1(e) {
+ if (e === 0) {
+ this.unitOps1 = [
+ { name: '鍏�/m虏路澶�', value: 0 },
+ { name: '鍏�/m虏路鏈�', value: 1 },
+ { name: '鍏�/澶�', value: 3 },
+ { name: '鍏�/鏈�', value: 4 },
+ { name: '鍏�/骞�', value: 5 },
+ { name: '鍏�/m虏路骞�', value: 2 },
+ { name: '鍏�/鍦�', value: 6 },
+ ]
+ } else {
+ this.form.wyDetailList.forEach(item => {
+ if (item.circleType === 6) {
+ item.circleType = 0
+ }
+ })
+ this.unitOps1 = [
+ { name: '鍏�/m虏路澶�', value: 0 },
+ { name: '鍏�/m虏路鏈�', value: 1 },
+ { name: '鍏�/澶�', value: 3 },
+ { name: '鍏�/鏈�', value: 4 },
+ { name: '鍏�/骞�', value: 5 },
+ { name: '鍏�/m虏路骞�', value: 2 }
+ ]
+ }
+ this.clearwy()
+ },
// 鑾峰彇鑱旂郴浜�
- getYwList () {
+ getYwList() {
ywList({
customerId: this.form.renterId
}).then(res => {
this.contactsList = res
})
},
- getHouseData () {
+ getHouseData() {
if (this.form.startDate && this.form.endDate) {
this.getHouseTree()
+ if (this.form.zlDetailList.length === 1) {
+ this.form.zlDetailList[0].startDate = this.form.startDate
+ this.form.zlDetailList[0].endDate = this.form.endDate
+ this.form.zlDetailList[0].time = [this.form.startDate, this.form.endDate]
+ }
+ if (this.form.wyDetailList.length === 1) {
+ this.form.wyDetailList[0].startDate = this.form.startDate
+ this.form.wyDetailList[0].endDate = this.form.endDate
+ this.form.wyDetailList[0].time = [this.form.startDate, this.form.endDate]
+ }
}
},
- changeType (e) {
+ changeType(e) {
if (e === 0 || e === 2) {
this.cactiveTabs = 0
} else if (e === 0 || e === 1) {
this.cactiveTabs = 1
}
},
- getDayTime (num) {
- const today = new Date();
- const year = today.getFullYear();
- const month = today.getMonth() + 1; // 鏈堜唤鏄粠 0 寮�濮嬬殑锛屽洜姝ら渶瑕佸姞 1
- const day = today.getDate();
+ getDayTime(num) {
+ const today = new Date()
+ const year = today.getFullYear()
+ const month = today.getMonth() + 1
+ const day = today.getDate()
if (!num) {
- return `${year}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`;
+ return `${year}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`
} else {
- return `${year + 1}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day - 1 : day - 1}`;
+ return `${year + 1}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day - 1 : day - 1}`
}
},
- clearData () {
- this.form.zlDetailList = [
- {
- circleType: 0,
- startDate: this.form.startDate,
- endDate: this.form.endDate,
- time: [this.form.startDate, this.form.endDate],
- price: '',
- advanceDays: ''
- }
- ]
- this.form.wyDetailList = [
- {
- circleType: 0,
- startDate: this.form.startDate,
- endDate: this.form.endDate,
- time: [this.form.startDate, this.form.endDate],
- price: '',
- advanceDays: ''
- }
- ]
+ clearzl() {
+ this.zlList = []
+ this.zlPrice = ''
},
- confirm () {
+ clearwy() {
+ this.wyList = []
+ this.wyPrice = ''
+ },
+ confirm() {
+ var that = this
if (this.activeTabs === 0) {
this.$refs.form.validate((valid) => {
if (!valid) return
if (this.form.roomIds.length === 0) return this.$message.warning('璇烽�夋嫨鎴挎簮锛�')
- this.clearData()
this.activeTabs = 1
})
} else if (this.activeTabs === 1) {
@@ -533,6 +686,8 @@
if (!valid2) {
return
}
+ if (that.zlList.length === 0) return that.$message.warning('璇峰厛鐢熸垚绉熻祦璐﹀崟锛�')
+ if (that.wyList.length === 0) return that.$message.warning('璇峰厛鐢熸垚鐗╀笟璐﹀崟锛�')
this.submit()
})
})
@@ -541,6 +696,7 @@
if (!valid1) {
return
}
+ if (that.zlList.length === 0) return that.$message.warning('璇峰厛鐢熸垚绉熻祦璐﹀崟锛�')
this.submit()
})
} else if (this.form.type === 1) {
@@ -548,15 +704,16 @@
if (!valid2) {
return
}
+ if (that.wyList.length === 0) return that.$message.warning('璇峰厛鐢熸垚鐗╀笟璐﹀崟锛�')
this.submit()
})
}
}
},
- submit () {
+ submit() {
// 璋冪敤鏂板缓鎺ュ彛
this.isWorking = true
- create({ ...this.form })
+ create({ ...this.form, ywContractBillDTOList: [...this.wyList, ...this.zlList] })
.then(res => {
this.visible = false
this.$tip.apiSuccess('鍒涘缓鎴愬姛')
@@ -566,24 +723,26 @@
this.isWorking = false
})
},
- getDate1 (e, index) {
+ getDate1(e, index) {
this.form.zlDetailList[index].startDate = e[0]
this.form.zlDetailList[index].endDate = e[1]
+ this.clearzl()
},
- getDate2 (e, index) {
+ getDate2(e, index) {
this.form.wyDetailList[index].startDate = e[0]
this.form.wyDetailList[index].endDate = e[1]
+ this.clearwy()
},
- checkHouseRoom (a, b) {
+ checkHouseRoom(a, b) {
this.ids = b.checkedKeys
let arr = b.checkedKeys.map(item => {
if (item.split('-')[0] == 3) {
return Number(item.split('-')[1])
}
})
- this.form.roomIds = arr.filter(item => item !== undefined);
+ this.form.roomIds = arr.filter(item => item !== undefined)
},
- getHouseTree () {
+ getHouseTree() {
tree({
startDate: this.form.startDate,
endDate: this.form.endDate,
@@ -599,21 +758,22 @@
},
addParamToArray(arr) {
for (let i = 0; i < arr.length; i++) {
- const currentItem = arr[i].projectDataVOList;
+ const currentItem = arr[i].projectDataVOList
arr[i].idd = arr[i].lv + '-' + arr[i].id
if (currentItem.length > 0) {
- this.addParamToArray(currentItem);
+ this.addParamToArray(currentItem)
}
}
},
- generateZL () {
+ generateZL() {
getBillList({ ...this.form, billType: 0 })
.then(res => {
let zlPrice = 0
let arr = []
res.forEach(item => {
+ item.totleFeeCopy = JSON.parse(JSON.stringify(item.totleFee))
if (item.costType === 0) {
- zlPrice += item.receivableFee
+ zlPrice += item.totleFee
}
arr.push(item)
})
@@ -621,14 +781,16 @@
this.zlList = arr
})
},
- generateWY () {
+ generateWY() {
getBillList({ ...this.form, billType: 1 })
.then(res => {
+ this.wy = true
let zlPrice = 0
let arr = []
res.forEach(item => {
if (item.costType === 1) {
- zlPrice += item.receivableFee
+ zlPrice += item.totleFee
+ item.totleFeeCopy = JSON.parse(JSON.stringify(item.totleFee))
}
arr.push(item)
})
@@ -636,7 +798,7 @@
this.wyList = arr
})
},
- addZl () {
+ addZl() {
this.form.zlDetailList.push({
circleType: 0,
startDate: this.form.startDate,
@@ -646,7 +808,7 @@
advanceDays: ''
})
},
- addWy () {
+ addWy() {
this.form.wyDetailList.push({
circleType: 0,
startDate: this.form.startDate,
@@ -659,65 +821,74 @@
deleZl(index) {
if (this.form.zlDetailList.length === 1) return Message.warning('鑷冲皯淇濈暀涓�鏉★紒')
this.form.zlDetailList.splice(index, 1)
+ this.clearzl()
},
deleWy(index) {
if (this.form.wyDetailList.length === 1) return Message.warning('鑷冲皯淇濈暀涓�鏉★紒')
this.form.wyDetailList.splice(index, 1)
+ this.clearwy()
},
- getZLDate (e) {
+ getZLDate(e) {
this.form.zlFreeStartDate = e[0]
this.form.zlFreeEndDate = e[1]
+ this.clearzl()
},
- getWYDate (e) {
+ getWYDate(e) {
this.form.wyFreeStartDate = e[0]
this.form.wyFreeEndDate = e[1]
+ this.clearwy()
},
- getTenant (row) {
+ getTenant(row) {
this.form.renterId = row.id
this.form.renterName = row.name
this.form.memberId = ''
this.form.memberName = ''
this.getYwList()
},
- dele (imgaddr) {
+ dele(imgaddr) {
this.form.fileList.forEach((item, index) => {
if (imgaddr === item.imgaddr) {
this.form.fileList.splice(index, 1)
}
})
},
- getUser () {
+ getUser() {
getUserList({})
.then(res => {
this.agentList = res
})
},
- getProject () {
+ getProject() {
getProjectList({})
.then(res => {
- this.projectList = res
+ this.projectList = res || []
+ if (this.projectList.length > 0) {
+ this.$set(this.form, 'projectId', this.projectList[0].id)
+ this.getHouseTree()
+ }
})
},
- getCompany () {
+ getCompany() {
companyList({ type: 2 })
.then(res => {
this.comparyList = res
this.form.companyId = res[0].id
})
},
- tabsClick (val) {
+ tabsClick(val) {
this.activeTabs = val
},
- ctabsClick (val) {
+ ctabsClick(val) {
+ this.isShow = false
this.cactiveTabs = val
},
- handleRent () {
+ handleRent() {
this.$refs.MemberSearchRef.open()
},
- houseChange (e) {
+ houseChange(e) {
console.log(e)
},
- beforeUpload (file) {
+ beforeUpload(file) {
this.loadingInstance = Loading.service({
lock: true,
text: 'Loading',
@@ -725,14 +896,14 @@
background: 'rgba(0, 0, 0, 0.7)'
})
},
- uploadError () {
+ uploadError() {
this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
if (this.loadingInstance) {
this.loadingInstance.close()
}
})
},
- getDay () {
+ getDay() {
const now = new Date()
const year = now.getFullYear()
const month = now.getMonth() + 1 // 鍔�1浣垮叾浠�1寮�濮�
@@ -740,9 +911,9 @@
const hours = now.getHours()
const minutes = now.getMinutes()
const seconds = now.getSeconds()
- return `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')} ${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
+ return `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')} ${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`
},
- uploadAvatarSuccess (file) {
+ uploadAvatarSuccess(file) {
this.$nextTick(() => {
if (this.loadingInstance) {
this.loadingInstance.close()
@@ -751,11 +922,14 @@
const item = file.data[0]
this.form.fileList.push({ ...item, fileurl: item.imgaddr, name: item.originname, userName: this.userInfo.realname, createTime: this.getDay() })
},
- close () {
+ close() {
if (this.activeTabs === 0) {
this.$emit('close')
+ this.visible = false
} else {
this.activeTabs = 0
+ this.zlList = []
+ this.wyList = []
}
}
}
@@ -764,12 +938,26 @@
<style lang="scss" scoped>
@import '@/assets/style/variables.scss';
+
.fixed {
background: #ffffff;
position: sticky;
top: 0;
left: 0;
z-index: 999;
+}
+.window__footer {
+ position: absolute;
+ width: 100%;
+ bottom: 0;
+ left: 0;
+ z-index: 9;
+ background: #ffffff;
+ user-select: none;
+ border-top: 1px solid #eee;
+ height: 60px;
+ line-height: 60px;
+ text-align: center;
}
.tabs {
border-bottom: 1px solid #DFE2E8;
@@ -873,6 +1061,7 @@
display: flex;
align-items: center;
justify-content: space-between;
+
span {
font-weight: 500;
font-size: 14px;
--
Gitblit v1.9.3