From 0527684883bc620febe0a1360f661cc2a7f16e00 Mon Sep 17 00:00:00 2001 From: liukangdong <898885815@qq.com> Date: 星期五, 29 十一月 2024 17:21:35 +0800 Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/funingyunwei --- admin/src/views/contract/components/contractEdit.vue | 714 ++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 515 insertions(+), 199 deletions(-) diff --git a/admin/src/views/contract/components/contractEdit.vue b/admin/src/views/contract/components/contractEdit.vue index 13e6378..d98469e 100644 --- a/admin/src/views/contract/components/contractEdit.vue +++ b/admin/src/views/contract/components/contractEdit.vue @@ -1,75 +1,79 @@ <template> - <GlobalWindow width="1000px" :title="title" :visible.sync="showModal" :confirm-working="isWorking" @close="close" + <GlobalWindow width="100%" :title="title" :visible.sync="visible" :confirm-working="isWorking" @close="close" @confirm="confirm"> <div class="tabs"> - <div class="tab" :class="{ active: activeTabs == 0 }" @click="tabsClick(0)">1銆佸熀鏈俊鎭�</div> - <div class="tab" :class="{ active: activeTabs == 1 }" @click="tabsClick(1)">2銆佽垂鐢ㄦ潯娆�</div> + <div class="tab" :class="{ active: activeTabs === 0 }" @click="tabsClick(0)">1銆佸熀鏈俊鎭�</div> + <div class="tab" :class="{ active: activeTabs === 1 }" @click="tabsClick(1)">2銆佽垂鐢ㄦ潯娆�</div> </div> - <template v-if="activeTabs == 0"> + <div v-show="activeTabs === 0"> <div class="main"> <div class="main_content"> - <el-form :model="param" ref="paramRef" :rules="rules"> + <el-form :model="form" ref="form" :rules="rules"> <div class="m_title">鍩虹淇℃伅</div> <div class="list"> <el-form-item label="鍚堝悓绫诲瀷" prop="type"> - <el-select v-model="param.type" placeholder="璇烽�夋嫨" clearable> - <el-option v-for="item in types" :value="item.value" :label="item.name"></el-option> + <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-select> </el-form-item> <el-form-item label="鍚堝悓缂栧彿" prop="code"> - <el-input v-model="param.code" placeholder="璇疯緭鍏ュ悎鍚岀紪鍙�" v-trim /> + <el-input v-model="form.code" placeholder="璇疯緭鍏ュ悎鍚岀紪鍙�" v-trim /> </el-form-item> - <el-form-item label="缁忓姙浜�" prop="aaa"> - <el-select v-model="param.aaa" placeholder="璇烽�夋嫨" clearable> - <el-option v-for="item in agentList" :value="item.id" :label="item.name"></el-option> + <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-select> </el-form-item> - <el-form-item label="鍚堝悓绛捐鏃ユ湡" prop=""> - <el-date-picker type="date" v-model="param.getDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" /> + <el-form-item label="鍚堝悓绛捐鏃ユ湡" prop="signDate"> + <el-date-picker type="date" v-model="form.signDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" /> </el-form-item> - <el-form-item label="鍚堝悓寮�濮嬫棩鏈�" prop=""> - <el-date-picker type="date" v-model="param.getDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" /> + <el-form-item label="鍚堝悓寮�濮嬫棩鏈�" prop="startDate"> + <el-date-picker type="date" v-model="form.startDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" /> </el-form-item> - <el-form-item label="鍚堝悓缁撴潫鏃ユ湡" prop=""> - <el-date-picker type="date" v-model="param.getDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" /> + <el-form-item label="鍚堝悓缁撴潫鏃ユ湡" prop="endDate"> + <el-date-picker type="date" v-model="form.endDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" /> </el-form-item> - <el-form-item label="褰掑睘椤圭洰" prop=""> - <el-select v-model="param.aaa" placeholder="璇烽�夋嫨" clearable> - <el-option v-for="item in projectList" :value="item.id" :label="item.name"></el-option> + <el-form-item label="褰掑睘椤圭洰" prop="projectId"> + <el-select v-model="form.projectId" placeholder="璇烽�夋嫨"> + <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=""> - <el-select v-model="param.aaa" placeholder="璇烽�夋嫨" clearable> + <el-form-item label="缁撴灉鍙栨暣(鍥涜垗浜斿叆)" prop="roundedUp"> + <el-select v-model="form.roundedUp" placeholder="璇烽�夋嫨"> <el-option :value="0" label="鍚�"></el-option> <el-option :value="1" label="鏄�"></el-option> </el-select> </el-form-item> - <el-form-item label="鎵�灞炲叕鍙�" prop=""> - <el-select v-model="param.aaa" placeholder="璇烽�夋嫨" clearable> - <el-option v-for="item in comparyList" :value="item.id" :label="item.name"></el-option> + <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-select> </el-form-item> </div> <div class="m_title">绉熷淇℃伅</div> <div class="list"> - <el-form-item label="绉熷" prop=""> - <el-button @click="handleRent" type="primary">閫夋嫨绉熷</el-button> - <el-select v-model="param.aaa" placeholder="璇烽�夋嫨" clearable> - <el-option v-for="item in renterList" :value="item.id" :label="item.name"></el-option> - </el-select> + <el-form-item label="绉熷" prop="renterName"> + <div @click="handleRent"> + <el-input v-model="form.renterName" readonly placeholder="璇风偣鍑婚�夋嫨绉熷" /> + </div> </el-form-item> - <el-form-item label="鑱旂郴浜�" prop=""> - <el-select v-model="param.aaa" placeholder="璇烽�夋嫨" clearable> - <el-option v-for="item in contacts" :value="item.id" :label="item.name"></el-option> - </el-select> + <el-form-item label="鑱旂郴浜�" prop="memberName"> + <el-input v-model="form.memberName" readonly placeholder="璇风偣鍑婚�夋嫨绉熷" /> </el-form-item> </div> </el-form> </div> <div class="main_house"> <div class="title">璇烽�夋嫨鎴挎簮</div> - <el-cascader style="width: 300px" v-model="value" @change="houseChange" :options="options" - :props="{ multiple: true }" collapse-tags clearable /> + <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> </div> </div> <div class="file_wrap"> @@ -80,75 +84,184 @@ <el-button icon="el-icon-plus" plain>娣诲姞闄勪欢</el-button> </el-upload> </div> - <el-table :data="param.list" stripe> - <el-table-column prop="" label="闄勪欢鍚嶇О" align="center" min-width="100" show-overflow-tooltip /> - <el-table-column prop="" label="鎿嶄綔浜�" align="center" min-width="100" show-overflow-tooltip /> - <el-table-column prop="" label="鎿嶄綔鏃堕棿" align="center" min-width="100" show-overflow-tooltip /> - <el-table-column prop="" label="鎿嶄綔" align="center" min-width="100"> - <template v-slot="scope"> - <span class="cu red">鍒犻櫎</span> + <el-table :data="form.fileList" stripe> + <el-table-column prop="originname" label="闄勪欢鍚嶇О" align="center" min-width="100" show-overflow-tooltip /> + <el-table-column prop="userName" label="鎿嶄綔浜�" align="center" min-width="100" show-overflow-tooltip /> + <el-table-column prop="createTime" label="鎿嶄綔鏃堕棿" align="center" min-width="100" show-overflow-tooltip /> + <el-table-column label="鎿嶄綔" align="center" min-width="100"> + <template slot-scope="{ row }"> + <span class="cu red" @click="dele(row.imgaddr)">鍒犻櫎</span> </template> </el-table-column> </el-table> </div> - </template> - <template v-if="activeTabs == 1"> + </div> + <div v-show="activeTabs === 1"> <div class="tabs cost_tabs"> - <div class="tab" :class="{ active: cactiveTabs == 0 }" @click="ctabsClick(0)">绉熻祦鏉℃</div> - <div class="tab" :class="{ active: cactiveTabs == 1 }" @click="ctabsClick(1)">鐗╀笟鏉℃</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 class="main"> - <div class="main_content"> - <el-form :model="paramCost" ref="paramCostRef" :rules="rules"> - <div class="m_title">绉熻祦淇℃伅</div> - <div class="list"> - <el-form-item label="鎶奸噾閲戦(鍏�)" prop="type"> - <el-input v-model="paramCost.code" placeholder="璇疯緭鍏�" v-trim /> - </el-form-item> - <el-form-item label="浠樻鏂瑰紡" prop="code"> - <el-select v-model="paramCost.type" placeholder="璇烽�夋嫨" clearable> - <el-option v-for="item in payMethods" :value="item.value" :label="item.name"></el-option> - </el-select> - </el-form-item> - <el-form-item label="鍏嶇鏈�" prop="aaa"> - <el-date-picker type="daterange" v-model="paramCost.getDate" value-format="yyyy-MM-dd" - placeholder="璇烽�夋嫨" /> - </el-form-item> - </div> - <div class="m_title">绉熻祦鏉℃</div> - <div class="list"> - <el-form-item label="璧峰鏃ユ湡" prop=""> - <el-date-picker type="date" v-model="paramCost.getDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" /> - </el-form-item> - <el-form-item label="鍚堝悓鍗曚环" prop=""> - <el-input placeholder="璇疯緭鍏ュ唴瀹�" v-model="paramCost.aaa"> - <el-select v-model="paramCost.ddd" slot="append" placeholder="璇烽�夋嫨" clearable> - <el-option v-for="item in unitOps" :value="item.value" :label="item.name"></el-option> + <!-- 绉熻祦鏉℃ --> + <div v-show="cactiveTabs === 0"> + <div class="main"> + <div class="main_content"> + <el-form :model="form" ref="paramCostRef" :rules="rules"> + <div class="m_title">绉熻祦淇℃伅</div> + <div class="list"> + <el-form-item label="鎶奸噾閲戦(鍏�)" prop="zlDeposit"> + <el-input v-model="form.zlDeposit" 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> - </el-input> - </el-form-item> - <el-form-item label="浠樻鎻愬墠澶╂暟" prop=""> - <el-input v-model="paramCost.aaa" placeholder="璇疯緭鍏�" v-trim /> - </el-form-item> - </div> - </el-form> + </el-form-item> + <el-form-item label="鍏嶇鏈�" prop="zlDate"> + <el-date-picker type="daterange" v-model="form.zlDate" @change="getZLDate" value-format="yyyy-MM-dd" + placeholder="璇烽�夋嫨" /> + </el-form-item> + </div> + <div class="m_title"> + <span>绉熻祦鏉℃</span> + <el-button type="text" size="medium" @click="addZl">澧炲姞</el-button> + </div> + <div class="list"> + <template 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="璇烽�夋嫨" /> + </el-form-item> + <el-form-item label="鍚堝悓鍗曚环" prop="price"> + <el-input placeholder="璇疯緭鍏�" v-model="item.price"> + <el-select v-model="item.circleType" 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"> + <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> + </div> + </el-form-item> + </template> + </div> + </el-form> + </div> + </div> + <el-button style="width: 100%;height: 48px;" type="primary" plain @click="generateZL">鐢熸垚璐﹀崟鏄庣粏</el-button> + <el-table :data="zlList" class="mt20" stripe> + <el-table-column label="璐圭敤绫诲瀷" align="center" show-overflow-tooltip> + <template slot-scope="{row}"> + <span v-if="row.costType === 0">绉熻祦璐�</span> + <span v-if="row.costType === 1">鐗╀笟璐�</span> + <span v-if="row.costType === 2">绉熻祦鎶奸噾</span> + <span v-if="row.costType === 3">鐗╀笟鎶奸噾</span> + <span v-if="row.costType === 4">姘寸數璐�</span> + <span v-if="row.costType === 5">鏉傞」璐�</span> + <span v-if="row.costType === 6">鍏朵粬</span> + <span v-if="row.costType === 7">淇濊瘉閲�</span> + </template> + </el-table-column> + <el-table-column label="鏈熸暟" align="center" show-overflow-tooltip> + <template slot-scope="{row}"> + <el-tag type="success">{{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}} + </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> + <div class="total"> + <span>鎬昏</span> + <div>璐圭敤搴旀敹鎬昏锛歿{zlPrice}}锛屾娂閲戝簲鏀舵�昏锛歿{form.zlDeposit}}</div> </div> </div> - <el-button style="width: 100%;height: 48px;" type="primary" plain>鐢熸垚璐﹀崟鏄庣粏</el-button> - <el-table :data="paramCost.list" class="mt20" stripe> - <el-table-column prop="" label="璐圭敤绫诲瀷" align="center" width="160px" show-overflow-tooltip /> - <el-table-column prop="" label="鎸囨暟" align="center" min-width="100" show-overflow-tooltip /> - <el-table-column prop="" label="鍖洪棿" align="center" min-width="100" show-overflow-tooltip /> - <el-table-column prop="" label="浠樻鏃�" align="center" min-width="100" show-overflow-tooltip /> - <el-table-column prop="" label="搴旀敹" align="center" min-width="100" show-overflow-tooltip /> - </el-table> - <div class="total"> - <span>鎬昏</span> - <div>璐圭敤搴旀敹鎬昏锛氾紝鎶奸噾搴旀敹鎬昏锛�</div> + <!-- 鐗╀笟鏉℃ --> + <div v-show="cactiveTabs === 1"> + <div class="main"> + <div class="main_content"> + <el-form :model="form" ref="paramCostRef1" :rules="rules"> + <div class="m_title">鐗╀笟淇℃伅</div> + <div class="list"> + <el-form-item label="鐗╀笟鎶奸噾" prop="wyDeposit"> + <el-input v-model="form.wyDeposit" 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> + </el-form-item> + <el-form-item label="鍏嶇鏈�" prop="wyDate"> + <el-date-picker type="daterange" v-model="form.wyDate" @change="getWYDate" value-format="yyyy-MM-dd" + placeholder="璇烽�夋嫨" /> + </el-form-item> + </div> + <div class="m_title"> + <span>鐗╀笟鏉℃</span> + <el-button type="text" size="medium" @click="addWy">澧炲姞</el-button> + </div> + <div class="list"> + <template 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="璇烽�夋嫨" /> + </el-form-item> + <el-form-item label="鍚堝悓鍗曚环" prop="price"> + <el-input placeholder="璇疯緭鍏�" v-model="item.price"> + <el-select v-model="item.circleType" 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"> + <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> + </div> + </el-form-item> + </template> + </div> + </el-form> + </div> + </div> + <el-button style="width: 100%;height: 48px;" type="primary" plain @click="generateWY">鐢熸垚璐﹀崟鏄庣粏</el-button> + <el-table :data="wyList" class="mt20" stripe> + <el-table-column label="璐圭敤绫诲瀷" align="center" show-overflow-tooltip> + <template slot-scope="{row}"> + <span v-if="row.costType === 0">绉熻祦璐�</span> + <span v-if="row.costType === 1">鐗╀笟璐�</span> + <span v-if="row.costType === 2">绉熻祦鎶奸噾</span> + <span v-if="row.costType === 3">鐗╀笟鎶奸噾</span> + <span v-if="row.costType === 4">姘寸數璐�</span> + <span v-if="row.costType === 5">鏉傞」璐�</span> + <span v-if="row.costType === 6">鍏朵粬</span> + <span v-if="row.costType === 7">淇濊瘉閲�</span> + </template> + </el-table-column> + <el-table-column label="鏈熸暟" align="center" show-overflow-tooltip> + <template slot-scope="{row}"> + <el-tag type="success">{{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}} + </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> + <div class="total"> + <span>鎬昏</span> + <div>璐圭敤搴旀敹鎬昏锛歿{wyPrice}}锛屾娂閲戝簲鏀舵�昏锛歿{form.wyDeposit}}</div> + </div> </div> - </template> - <!-- --> - <MemberSearch ref="MemberSearchRef" /> + </div> + <!-- 閫夋嫨绉熷 --> + <MemberSearch ref="MemberSearchRef" @select="getTenant" /> </GlobalWindow> </template> @@ -157,91 +270,97 @@ import BaseOpera from '@/components/base/BaseOpera' import MemberSearch from '@/components/common/MemberSearch' import { rules } from './config' +import { create, getBillList } from '@/api/contract' +import { getUserList } from '@/api/system/user' +import { getProjectList, tree } from '@/api/project/ywProject' +import { companyList } from '@/api/company' import { Message, Loading } from 'element-ui' +import { mapState } from 'vuex' export default { components: { GlobalWindow, MemberSearch }, extends: BaseOpera, - data() { + computed: { + ...mapState(['userInfo']) + }, + data () { return { - showModal: false, title: '鍒涘缓鍚堝悓', - activeTabs: '0', - param: {}, + activeTabs: 0, + form: { + type: '', + code: '', + userId: '', + signDate: '', + startDate: '', + endDate: '', + projectId: '', + roundedUp: '', + companyId: '', + renterId: '', + renterName: '', + memberId: '', + memberName: '', + fileList: [], + + zlDeposit: '', + zlPayType: '', + zlFreeStartDate: '', + zlFreeEndDate: '', + zlDate: [], + zlDetailList: [ + { + startDate: '', + endDate: '', + time: [], + price: '', + advanceDays: '' + } + ], + + wyDeposit: '', + wyPayType: '', + wyFreeStartDate: '', + wyFreeEndDate: '', + wyDate: [], + wyDetailList: [ + { + startDate: '', + endDate: '', + time: [], + price: '', + advanceDays: '' + } + ], + + roomIds: [] + }, + + ids: [], + + zlList: [], + wyList: [], + rules, loadingInstance: null, uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch', - fileList: [], uploadData: { - folder: 'HIDDEN_DANGER_FILE' + folder: 'YW_CONTRACT_FILE' }, types: [ { name: '鐗╀笟+绉熻祦鍚堝悓', value: 0 }, - { name: '绉熻祦鍚堝悓', value: 1 }, - { name: '鐗╀笟鍚堝悓', value: 2 }, + { name: '绉熻祦鍚堝悓', value: 2 }, + { name: '鐗╀笟鍚堝悓', value: 1 } ], - agentList: [], //缁忓姙浜� + agentList: [], // 缁忓姙浜� projectList: [], comparyList: [], // 鍏徃 - renterList: [], // 绉熷 - contacts: [], // 鑱旂郴浜� - value: [], - options: [ - { - value: 1, - label: '涓滃崡', - children: [{ - value: 2, - label: '涓婃捣', - children: [ - { value: 3, label: '鏅檧' }, - { value: 4, label: '榛勫煍' }, - { value: 5, label: '寰愭眹' } - ] - }, { - value: 7, - label: '姹熻嫃', - children: [ - { value: 8, label: '鍗椾含' }, - { value: 9, label: '鑻忓窞' }, - { value: 10, label: '鏃犻敗' } - ] - }, { - value: 12, - label: '娴欐睙', - children: [ - { value: 13, label: '鏉窞' }, - { value: 14, label: '瀹佹尝' }, - { value: 15, label: '鍢夊叴' } - ] - }] - }, - { - value: 17, - label: '瑗垮寳', - children: [{ - value: 18, - label: '闄曡タ', - children: [ - { value: 19, label: '瑗垮畨' }, - { value: 20, label: '寤跺畨' } - ] - }, { - value: 21, - label: '鏂扮枂缁村惥灏旀棌鑷不鍖�', - children: [ - { value: 22, label: '涔岄瞾鏈ㄩ綈' }, - { value: 23, label: '鍏嬫媺鐜涗緷' } - ] - }] - } - ], + houseList: [], cactiveTabs: 0, - paramCost: {}, payMethods: [ { name: '涓�娆℃�т粯娆�', value: 0 }, { name: '3涓湀涓�浠�', value: 1 }, @@ -251,37 +370,233 @@ unitOps: [ { name: '鍏�/m虏路澶�', value: 0 }, { name: '鍏�/m虏路鏈�', value: 1 }, - { name: '鍏�/澶�', value: 2 }, - { name: '鍏�/鏈�', value: 3 }, - { name: '鍏�/骞�', value: 4 }, - { name: '鍏�/m虏路骞�', value: 5 }, + { name: '鍏�/澶�', value: 3 }, + { name: '鍏�/鏈�', value: 4 }, + { name: '鍏�/骞�', value: 5 }, + { name: '鍏�/m虏路骞�', value: 2 }, { name: '鍏�/鍦�', value: 6 }, ], + + houseLvThree: [] } }, methods: { - tabsClick(val) { + open (title, target) { + this.title = title + this.ids = [] + this.getUser() + this.getProject() + this.getCompany() + this.getHouseTree() + this.visible = true + this.$nextTick(() => { + for (const key in this.form) { + if (['roomIds', 'fileList', 'wyDate', 'zlDate'].includes(key)) { + this.form[key] = [] + } else { + this.form[key] = target[key] + } + } + }) + }, + changeType (e) { + if (e === 0 || e === 2) { + this.cactiveTabs = 0 + } else if (e === 0 || e === 1) { + this.cactiveTabs = 1 + } + }, + confirm () { + this.$refs.form.validate((valid) => { + if (!valid) { + return + } + if (this.form.type === 0) { + this.$refs.paramCostRef.validate((valid1) => { + if (!valid1) { + return + } + this.$refs.paramCostRef1.validate((valid2) => { + if (!valid2) { + return + } + this.submit() + }) + }) + } else if (this.form.type === 2) { + this.$refs.paramCostRef.validate((valid1) => { + if (!valid1) { + return + } + this.submit() + }) + } else if (this.form.type === 1) { + this.$refs.paramCostRef1.validate((valid2) => { + if (!valid2) { + return + } + this.submit() + }) + } + }) + }, + submit () { + // 璋冪敤鏂板缓鎺ュ彛 + this.isWorking = true + create({ ...this.form }) + .then(res => { + this.visible = false + this.$tip.apiSuccess('鍒涘缓鎴愬姛') + this.$emit('success') + }) + .finally(() => { + this.isWorking = false + }) + }, + getDate1 (e, index) { + this.form.zlDetailList[index].startDate = e[0] + this.form.zlDetailList[index].endDate = e[1] + }, + getDate2 (e, index) { + this.form.wyDetailList[index].startDate = e[0] + this.form.wyDetailList[index].endDate = e[1] + }, + 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); + }, + getHouseTree () { + tree({}) + .then(res => { + res.forEach(item => { + item.disabled = true + }) + this.addParamToArray(res) + this.houseList = res + }) + }, + addParamToArray(arr) { + for (let i = 0; i < arr.length; i++) { + const currentItem = arr[i].projectDataVOList; + arr[i].idd = arr[i].lv + '-' + arr[i].id + if (currentItem.length > 0) { + this.addParamToArray(currentItem); + } + } + }, + generateZL () { + getBillList({ ...this.form }) + .then(res => { + let zlPrice = 0 + let arr = [] + res.forEach(item => { + if (item.costType === 0) { + zlPrice += item.receivableFee + arr.push(item) + } + }) + this.zlPrice = zlPrice + this.zlList = arr + }) + }, + generateWY () { + getBillList({ ...this.form }) + .then(res => { + let zlPrice = 0 + let arr = [] + res.forEach(item => { + if (item.costType === 1) { + zlPrice += item.receivableFee + arr.push(item) + } + }) + this.wyPrice = zlPrice + this.wyList = arr + }) + }, + addZl () { + this.form.zlDetailList.push({ + startDate: '', + endDate: '', + time: [], + price: '', + advanceDays: '' + }) + }, + addWy () { + this.form.wyDetailList.push({ + startDate: '', + endDate: '', + time: [], + price: '', + advanceDays: '' + }) + }, + deleZl(index) { + if (this.form.zlDetailList.length === 1) return Message.warning('鑷冲皯淇濈暀涓�鏉★紒') + this.form.zlDetailList.splice(index, 1) + }, + deleWy(index) { + if (this.form.wyDetailList.length === 1) return Message.warning('鑷冲皯淇濈暀涓�鏉★紒') + this.form.wyDetailList.splice(index, 1) + }, + getZLDate (e) { + this.form.zlFreeStartDate = e[0] + this.form.zlFreeEndDate = e[1] + }, + getWYDate (e) { + this.form.wyFreeStartDate = e[0] + this.form.wyFreeEndDate = e[1] + }, + getTenant (row) { + this.form.renterId = row.id + this.form.renterName = row.name + this.form.memberId = row.memberId + this.form.memberName = row.memberName + }, + dele (imgaddr) { + this.form.fileList.forEach((item, index) => { + if (imgaddr === item.imgaddr) { + this.form.fileList.splice(index, 1) + } + }) + }, + getUser () { + getUserList({}) + .then(res => { + this.agentList = res + }) + }, + getProject () { + getProjectList({}) + .then(res => { + this.projectList = res + }) + }, + getCompany () { + companyList({ type: 2 }) + .then(res => { + this.comparyList = res + }) + }, + tabsClick (val) { this.activeTabs = val }, - ctabsClick(val) { + ctabsClick (val) { this.cactiveTabs = val }, - getDetail() { - + handleRent () { + this.$refs.MemberSearchRef.open() }, - handleRent() { - this.$refs.MemberSearchRef.openModal() - }, - houseChange(e) { + houseChange (e) { console.log(e) - console.log(this.value) - }, - beforeUpload(file) { - // if (['video/mp4', 'video/ogg', 'video/flv', 'video/avi', 'video/wmv', 'video/rmvb', 'image/jpeg', 'image/jpg', 'image/png', 'image/gif'].indexOf(file.type) == -1) { - // this.$message.error('璇蜂笂浼犳纭殑瑙嗛/鍥剧墖鏍煎紡') - // return false - // } + beforeUpload (file) { this.loadingInstance = Loading.service({ lock: true, text: 'Loading', @@ -289,40 +604,33 @@ background: 'rgba(0, 0, 0, 0.7)' }) }, - uploadError() { + uploadError () { this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� if (this.loadingInstance) { this.loadingInstance.close() } }) }, - uploadAvatarSuccess(file) { - this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� + getDay () { + const now = new Date() + const year = now.getFullYear() + const month = now.getMonth() + 1 // 鍔�1浣垮叾浠�1寮�濮� + const day = now.getDate() + 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')}`; + }, + uploadAvatarSuccess (file) { + this.$nextTick(() => { if (this.loadingInstance) { this.loadingInstance.close() } }) - console.log('file', file) const item = file.data[0] - if (['.mp4', '.avi', '.flv', '.wmv'].some(char => item.imgaddr.includes(char))) { - this.fileList.push({ - type: 1, - fileurl: item.imgaddr, - fileurlFull: item.url - }) - } else { - this.fileList.push({ - type: 0, - fileurl: item.imgaddr, - fileurlFull: item.url - }) - } - console.log('file', this.fileList) - // this.$set(this.param, 'faceImg', file.imgurl) - // this.$set(this.param, 'faceImgUrl', file.imgurlfull) + this.form.fileList.push({ ...item, fileurl: item.imgaddr, name: item.originname, userName: this.userInfo.realname, createTime: this.getDay() }) }, - close() { - this.showModal = false + close () { this.$emit('close') } } @@ -431,5 +739,13 @@ font-size: 14px; margin-bottom: 15px; margin-top: 10px; + display: flex; + align-items: center; + justify-content: space-between; + span { + font-weight: 500; + font-size: 14px; + margin-bottom: 15px; + } } </style> -- Gitblit v1.9.3