From d7dca690cedd12e271f0ee0b9050679d73796f5c Mon Sep 17 00:00:00 2001 From: MrShi <1878285526@qq.com> Date: 星期一, 06 一月 2025 09:28:10 +0800 Subject: [PATCH] 1 --- admin/src/views/contract/components/contractEdit.vue | 424 ++++++++++++++++++++++++++++++++++------------------ 1 files changed, 278 insertions(+), 146 deletions(-) diff --git a/admin/src/views/contract/components/contractEdit.vue b/admin/src/views/contract/components/contractEdit.vue index e7c7356..84a9fe8 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,23 +66,26 @@ </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' }"> + <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 }}銕� + </span> + </span> </el-tree> </div> </div> @@ -107,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"> @@ -118,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"> @@ -135,21 +144,32 @@ <el-button type="text" size="medium" @click="addZl">澧炲姞</el-button> </div> <div class="list"> - <div 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> @@ -173,24 +193,24 @@ </el-table-column> <el-table-column label="鏈熸暟" align="center" show-overflow-tooltip> <template slot-scope="{row}"> - <el-tag type="success">{{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> <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> <template slot-scope="{row}"> - {{row.receivableFee}}鍏� + {{ row.receivableFee }}鍏� </template> </el-table-column> </el-table> <div class="total"> <span>鎬昏</span> - <div>璐圭敤搴旀敹鎬昏锛歿{zlPrice}}鍏冿紝鎶奸噾搴旀敹鎬昏锛歿{form.zlDeposit}}鍏�</div> + <div>璐圭敤搴旀敹鎬昏锛歿{ zlPrice }}鍏冿紝鎶奸噾搴旀敹鎬昏锛歿{ form.zlDeposit }}鍏�</div> </div> </div> <!-- 鐗╀笟鏉℃ --> @@ -201,11 +221,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"> @@ -218,21 +239,32 @@ <el-button type="text" size="medium" @click="addWy">澧炲姞</el-button> </div> <div class="list"> - <div 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> @@ -256,32 +288,33 @@ </el-table-column> <el-table-column label="鏈熸暟" align="center" show-overflow-tooltip> <template slot-scope="{row}"> - <el-tag type="success">{{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> <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> <template slot-scope="{row}"> - {{row.receivableFee}}鍏� + {{ row.receivableFee }}鍏� </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 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> <!-- 閫夋嫨绉熷 --> @@ -298,7 +331,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 { @@ -310,7 +343,7 @@ computed: { ...mapState(['userInfo']) }, - data () { + data() { return { title: '鍒涘缓鍚堝悓', activeTabs: 0, @@ -322,14 +355,14 @@ startDate: '', endDate: '', projectId: '', - roundedUp: '', + roundedUp: 0, companyId: '', renterId: '', renterName: '', memberId: '', memberName: '', fileList: [], - + zlDeposit: '', zlPayType: '', zlFreeStartDate: '', @@ -345,7 +378,8 @@ advanceDays: '' } ], - + + wyDeposit: '', wyPayType: '', wyFreeStartDate: '', @@ -361,17 +395,17 @@ advanceDays: '' } ], - + roomIds: [] }, - + ids: [], - + zlList: [], wyList: [], - + rules, - + contactsList: [], loadingInstance: null, @@ -394,7 +428,7 @@ { name: '涓�娆℃�т粯娆�', value: 0 }, { name: '3涓湀涓�浠�', value: 1 }, { name: '6涓湀涓�浠�', value: 2 }, - { name: '1骞翠竴浠�', value: 2 }, + { name: '1骞翠竴浠�', value: 3 }, ], unitOps: [ { name: '鍏�/m虏路澶�', value: 0 }, @@ -405,15 +439,27 @@ { name: '鍏�/m虏路骞�', value: 2 }, { name: '鍏�/鍦�', value: 6 }, ], - + 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: [] } }, methods: { - open (title, target) { + open(title, target) { this.title = title this.ids = [] this.houseList = [] + this.zlPrice = '' + this.wyPrice = '' this.getUser() this.getProject() this.getCompany() @@ -427,6 +473,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, @@ -447,74 +499,121 @@ 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() }) }, + 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 : day}`; + 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) { @@ -527,6 +626,8 @@ if (!valid2) { return } + if (that.zlList.length === 0) return that.$message.warning('璇峰厛鐢熸垚绉熻祦璐﹀崟锛�') + if (that.wyList.length === 0) return that.$message.warning('璇峰厛鐢熸垚鐗╀笟璐﹀崟锛�') this.submit() }) }) @@ -535,6 +636,7 @@ if (!valid1) { return } + if (that.zlList.length === 0) return that.$message.warning('璇峰厛鐢熸垚绉熻祦璐﹀崟锛�') this.submit() }) } else if (this.form.type === 1) { @@ -542,12 +644,13 @@ if (!valid2) { return } + if (that.wyList.length === 0) return that.$message.warning('璇峰厛鐢熸垚鐗╀笟璐﹀崟锛�') this.submit() }) } } }, - submit () { + submit() { // 璋冪敤鏂板缓鎺ュ彛 this.isWorking = true create({ ...this.form }) @@ -560,24 +663,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, @@ -593,14 +698,14 @@ }, 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 @@ -615,9 +720,10 @@ this.zlList = arr }) }, - generateWY () { + generateWY() { getBillList({ ...this.form, billType: 1 }) .then(res => { + this.wy = true let zlPrice = 0 let arr = [] res.forEach(item => { @@ -630,7 +736,7 @@ this.wyList = arr }) }, - addZl () { + addZl() { this.form.zlDetailList.push({ circleType: 0, startDate: this.form.startDate, @@ -640,7 +746,7 @@ advanceDays: '' }) }, - addWy () { + addWy() { this.form.wyDetailList.push({ circleType: 0, startDate: this.form.startDate, @@ -653,65 +759,73 @@ 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.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', @@ -719,14 +833,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寮�濮� @@ -734,9 +848,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() @@ -745,11 +859,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 = [] } } } @@ -758,12 +875,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; @@ -867,6 +998,7 @@ display: flex; align-items: center; justify-content: space-between; + span { font-weight: 500; font-size: 14px; -- Gitblit v1.9.3