From 7470ad6bfa2f7d7be9c7d1e2d9c991094a3ad367 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期四, 28 十一月 2024 18:43:24 +0800
Subject: [PATCH] 提交

---
 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