| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444 | 
							- {extend name="common/common2" /}
 
- {block name="main"}
 
- <style>
 
-     a.list-group-item.active, a.list-group-item.active:hover, a.list-group-item.active:focus{
 
-         background-color: #148d8f !important;
 
-         border-color: #148d8f !important;
 
-     }
 
- </style>
 
- <div id="feeapp">
 
-     <div class="panel panel-default">
 
-         <div class="panel-heading">
 
-             收费科目
 
-             <div class="btn-group pull-right">
 
-                 <a href="javascript:history.go(-1);">返回</a>
 
-             </div>
 
-         </div>
 
-         <div class="panel-body">
 
-             <div class="row">
 
-                 <div class="col-xs-12" style="padding-bottom: 20px;">
 
-                     业主:{$owner['name']}   
 
-                     联系电话:{$owner['phone']}   
 
-                     类型:{if $owner['type'] == 1}住户{else}租户{/if}
 
-                 </div>
 
-                 <div class="col-xs-3" style="min-height: 200px">
 
-                     <div class="list-group">
 
-                         <a v-for="(item,index) in lists" :key="index" href="javascript:;" @click="selectData(item)" class="list-group-item" :class="curData&&curData.type == item.type&&curData.id == item.id?'active':''">
 
-                             <span v-if="item.cate == 1">[住房] </span>
 
-                             <span v-if="item.cate == 2">[商铺] </span>
 
-                             <span v-if="item.cate == 3">[营业房] </span>
 
-                             <span v-if="item.cate == 4">[储藏室] </span>
 
-                             <span v-if="item.cate == 5">[停车位] </span>
 
-                             {{item.title}}
 
-                             <span v-if="item.c_type > 0">({{item.c_type_name}})</span>
 
-                         </a>
 
-                     </div>
 
-                 </div>
 
-                 <div class="col-xs-3" style="min-height: 200px">
 
-                     <div class="list-group" v-if="curData && curData.fee.length > 0">
 
-                         <a v-for="(item,index) in curData.fee" :key="index" href="javascript:;" @click="selectFee(item)" class="list-group-item"  :class="curFee&&curFee.id == item.id?'active':''">
 
-                             [{{item.parent_title}}] {{item.title}}
 
-                         </a>
 
-                     </div>
 
-                 </div>
 
-                 <div class="col-xs-6" style="min-height: 200px">
 
-                     <!--                <p><strong>收费详情</strong></p>-->
 
-                     <table class="table" v-if="curData && curFee">
 
-                         <tr v-if="curFee.area == 1">
 
-                             <td style="width: 100px;">产权面积</td>
 
-                             <td>{{curData.area}}</td>
 
-                         </tr>
 
-                         <tr>
 
-                             <td>基本单价</td>
 
-                             <td>{{curFee.price}}元</td>
 
-                         </tr>
 
-                         <tr v-if="curFee.area != 0 || curFee.cycle != 0">
 
-                             <td>计算公式</td>
 
-                             <td v-if="curFee.area == 1">基本单价*产权面积</td>
 
-                             <td v-if="curFee.area == 0">基本单价</td>
 
-                         </tr>
 
-                         <tr v-if="curFee.cycle == 1 && curFee.end">
 
-                             <td>最近缴费日期</td>
 
-                             <td>
 
-                                 {{curFee.start}} ~ {{curFee.start}}
 
-                             </td>
 
-                         </tr>
 
-                         <tr v-if="curFee.cycle == 1 && curFee.end">
 
-                             <td>历史收费金额</td>
 
-                             <td>
 
-                                 {{curFee.tmoney}}
 
-                             </td>
 
-                         </tr>
 
-                         <tr v-if="curFee.cycle == 1">
 
-                             <td>起止日期</td>
 
-                             <td>
 
-                                 <input type="date" v-model="start" max="2100-01-01"> ~ <input type="date" v-model="end" max="2100-01-01">
 
-                                 <!--<el-date-picker
 
-                                     v-model="date"
 
-                                     type="daterange"
 
-                                     size="small"
 
-                                     value-format="yyyy-MM-dd"
 
-                                     @change="changeDate"
 
-                                     range-separator="至"
 
-                                     start-placeholder="开始日期"
 
-                                     end-placeholder="结束日期">
 
-                                 </el-date-picker>-->
 
-                             </td>
 
-                         </tr>
 
-                         <tr>
 
-                             <td>总金额</td>
 
-                             <td>{{totalPrice}}元</td>
 
-                         </tr>
 
-                         <tr>
 
-                             <td>备注</td>
 
-                             <td>
 
-                                 <el-input
 
-                                         type="textarea"
 
-                                         :rows="2"
 
-                                         placeholder="请输入"
 
-                                         v-model="remark">
 
-                                 </el-input>
 
-                             </td>
 
-                         </tr>
 
-                         <tr>
 
-                             <td></td>
 
-                             <td>
 
-                                 <button type="button" @click="saveBtn" class="btn btn-sm btn-primary">保存数据</button>
 
-                             </td>
 
-                         </tr>
 
-                     </table>
 
-                 </div>
 
-             </div>
 
-         </div>
 
-     </div>
 
-     <div class="panel panel-default">
 
-         <div class="panel-heading">收费明细</div>
 
-         <div class="panel-body">
 
-             <div class="row">
 
-                 <div class="col-xs-12">
 
-                     <table class="table">
 
-                         <tr>
 
-                             <th>资源名称</th>
 
-                             <th>科目名称</th>
 
-                             <th>应收金额</th>
 
-                             <th>起止日期</th>
 
-                             <th>备注</th>
 
-                             <th>操作</th>
 
-                         </tr>
 
-                         <tr v-for="(item,index) in selData" :key="index">
 
-                             <td>
 
-                                 <span v-if="item.cate == 1">[住房] </span>
 
-                                 <span v-if="item.cate == 2">[商铺] </span>
 
-                                 <span v-if="item.cate == 3">[营业房] </span>
 
-                                 <span v-if="item.cate == 4">[储藏室] </span>
 
-                                 <span v-if="item.cate == 5">[停车位] </span>
 
-                                 {{item.title}}
 
-                             </td>
 
-                             <td>[{{item.fee_parent_title}}] {{item.fee_title}}</td>
 
-                             <td>{{item.total_price}}</td>
 
-                             <td v-if="item.start">{{item.start}} ~ {{item.end}}</td>
 
-                             <td v-if="!item.start"></td>
 
-                             <td>{{item.remark}}</td>
 
-                             <td>
 
-                                 <button type="button" @click="delSelectData(index)" class="btn btn-xs btn-danger">删除</button>
 
-                             </td>
 
-                         </tr>
 
-                     </table>
 
-                     <div>
 
-                         <form class="form-inline">
 
-                             <div class="form-group">
 
-                                 <label>最晚缴费日期 <span class="text-danger">*</span></label>
 
-                                 <el-date-picker
 
-                                         v-model="lastDate"
 
-                                         type="date"
 
-                                         size="small"
 
-                                         value-format="yyyy-MM-dd"
 
-                                         placeholder="选择日期">
 
-                                 </el-date-picker>
 
-                             </div>
 
-                             <button type="button" @click="submitOrder" class="btn btn-sm btn-primary">生成缴费单</button>
 
-                         </form>
 
-                     </div>
 
-                 </div>
 
-             </div>
 
-         </div>
 
-     </div>
 
- </div>
 
- {/block}
 
- {block name="script"}
 
- <script>
 
-     var lists = {:json_encode($lists)};
 
-     var houseId = "{$houseId}";
 
-     var vm = new Vue({
 
-         el: '#feeapp',
 
-         data: {
 
-             lists: lists,
 
-             curData: null,
 
-             curFee: null,
 
-             curRet: null,
 
-             date: '',
 
-             remark: '',
 
-             totalPrice: 0,
 
-             selData: [],
 
-             lastDate: '',
 
-             flag: false,
 
-             houseId: houseId,
 
-             start: '',
 
-             end: '',
 
-         },
 
-         computed: {
 
-         },
 
-         watch: {
 
-             start(val,oldVal){
 
-                 this.calculationPrice();
 
-             },
 
-             end(val, oldVal){
 
-                 this.calculationPrice();
 
-             }
 
-         },
 
-         created: function () {
 
-             this.initDate();
 
-         },
 
-         methods: {
 
-             initDate(){
 
-                 var nowDate = new Date();
 
-                 var fullYear = nowDate.getFullYear();
 
-                 var month = nowDate.getMonth() + 1; // getMonth 方法返回 0-11,代表1-12月
 
-                 var endOfMonth = new Date(fullYear, month, 0).getDate(); // 获取本月最后一天
 
-                 var endDate = this.getFullDate(nowDate.setDate(endOfMonth));//当月最后一天
 
-                 var startDate = this.getFullDate(nowDate.setDate(1));//当月第一天
 
-                 this.date = [startDate,endDate];
 
-                 this.start = startDate;
 
-                 this.end = endDate;
 
-             },
 
-             calculationPrice(){ // 计算总金额
 
-                 this.date = [this.start,this.end];
 
-                 let price = Number(this.curFee.price);
 
-                 let tPrice = price;
 
-                 this.curFee.MONTHS = [];
 
-                 if(this.curFee.cycle == 1){ //按周期算
 
-                     tPrice = 0;
 
-                     if(this.date){
 
-                         let months = this.getMonthBetween(this.date[0],this.date[1]);
 
-                         console.log('months',months);
 
-                         if(months.length == 1){ //不跨月
 
-                             let day = this.getDaysBetween(this.date[0],this.date[1]);
 
-                             tPrice = Number(tPrice) + (Number(price)/months[0].days) * day;
 
-                             this.curFee.MONTHS.push({
 
-                                 year: months[0].year,
 
-                                 month: months[0].month,
 
-                                 money: (Number(price)/months[0].days) * day
 
-                             });
 
-                         }else{
 
-                             for (let o in months){
 
-                                 let start = this.date[0];
 
-                                 let end = this.date[1];
 
-                                 let pri = 0;
 
-                                 if(start >= months[o].start){
 
-                                     let sarr = start.split('-');
 
-                                     let day = months[o].days - Number(sarr[2]) + 1;
 
-                                     tPrice = Number(tPrice) + (Number(price)/months[o].days) * day;
 
-                                     pri = (Number(price)/months[o].days) * day;
 
-                                 }
 
-                                 if(end <= months[o].end){
 
-                                     let earr = end.split('-');
 
-                                     let day = Number(earr[2]);
 
-                                     tPrice = Number(tPrice) + (Number(price)/months[o].days) * day;
 
-                                     pri = (Number(price)/months[o].days) * day;
 
-                                 }
 
-                                 if(start < months[o].start && end > months[o].end){
 
-                                     tPrice = Number(tPrice) + Number(price);
 
-                                     pri = Number(price);
 
-                                 }
 
-                                 this.curFee.MONTHS.push({
 
-                                     year: months[o].year,
 
-                                     month: months[o].month,
 
-                                     money: pri.toFixed(2)
 
-                                 });
 
-                             }
 
-                         }
 
-                     }else{
 
-                         tPrice = 0;
 
-                     }
 
-                 }
 
-                 if(this.curFee.area == 1){ //按面积算
 
-                     tPrice = Number(tPrice) * Number(this.curData.area);
 
-                     for(let o in this.curFee.MONTHS){
 
-                         this.curFee.MONTHS[o].money = (Number(this.curFee.MONTHS[o].money) * Number(this.curData.area)).toFixed(2);
 
-                     }
 
-                 }
 
-                 if(this.curFee.cycle == 0 && this.curFee.area == 0){
 
-                     tPrice = price;
 
-                 }
 
-                 this.totalPrice = Number(tPrice).toFixed(2);
 
-                 console.log('change',this.totalPrice,this.curFee);
 
-             },
 
-             selectData(item){
 
-                 this.curData = item;
 
-                 this.curFee = null;
 
-                 this.curRet = null;
 
-             },
 
-             selectFee(item){
 
-                 this.curFee = item;
 
-                 this.curRet = null;
 
-                 this.remark = '';
 
-                 if(item.cycle == 1){
 
-                     this.initDate();
 
-                 }else{
 
-                     this.date = '';
 
-                 }
 
-                 this.calculationPrice();
 
-             },
 
-             changeDate(){
 
-                 this.calculationPrice();
 
-             },
 
-             saveBtn(){
 
-                 // 先检查是否有该科目的单子,有提示错误
 
-                 for(let o in this.selData){
 
-                     if(this.curData.type == this.selData[o].type && this.curData.id == this.selData[o].id && this.curFee.id == this.selData[o].fee_id){
 
-                         this.$message.error('该科目已存在记录');
 
-                         return false;
 
-                     }
 
-                 }
 
-                 this.selData.push({
 
-                     type: this.curData.type,
 
-                     cate: this.curData.cate,
 
-                     id: this.curData.id,
 
-                     title: this.curData.title,
 
-                     area: this.curData.area,
 
-                     fee_id: this.curFee.id,
 
-                     fee_title: this.curFee.title,
 
-                     fee_parent_title: this.curFee.parent_title,
 
-                     price: this.curFee.price,
 
-                     months: this.curFee.MONTHS,
 
-                     total_price: this.totalPrice,
 
-                     start: this.start,
 
-                     end: this.end,
 
-                     remark: this.remark
 
-                 });
 
-             },
 
-             delSelectData(index){
 
-                 let oldoptions = JSON.parse(JSON.stringify(this.selData));
 
-                 let newoptions = [];
 
-                 for(let o in oldoptions){
 
-                     if(o != index){
 
-                         newoptions.push(oldoptions[o]);
 
-                     }
 
-                 }
 
-                 this.selData = JSON.parse(JSON.stringify(newoptions));
 
-             },
 
-             submitOrder(){ //生成欠费单
 
-                 if(this.selData.length == 0){
 
-                     this.$message.error('请选择收费科目');
 
-                     return false;
 
-                 }
 
-                 if(!this.lastDate){
 
-                     this.$message.error('请选择最晚缴费日期');
 
-                     return false;
 
-                 }
 
-                 if(this.flag){
 
-                     return false;
 
-                 }
 
-                 this.flag = true;
 
-                 let that = this;
 
-                 $.ajax({
 
-                     type: 'POST',
 
-                     url: '{:url("feeSave")}',
 
-                     dataType: 'json',
 
-                     data:{
 
-                         houseId: this.houseId,
 
-                         lastDate: this.lastDate,
 
-                         order: JSON.stringify(this.selData)
 
-                     },
 
-                     success: function(res){
 
-                         if(res.code == 1){
 
-                             window.location.href = '{:url("HousePay/detail",[],"")}/id/'+res.data.id;
 
-                         }else{
 
-                             that.$message.error(res.msg);
 
-                             that.flag = false;
 
-                         }
 
-                     },
 
-                     error: function(){
 
-                         that.$message.error('操作失败');
 
-                         that.flag = false;
 
-                         return false;
 
-                     }
 
-                 });
 
-             },
 
-             getFullDate(targetDate) { // 获取时间
 
-                 var D, y, m, d;
 
-                 if (targetDate) {
 
-                     D = new Date(targetDate);
 
-                     y = D.getFullYear();
 
-                     m = D.getMonth() + 1;
 
-                     d = D.getDate();
 
-                 } else {
 
-                     y = fullYear;
 
-                     m = month;
 
-                     d = date;
 
-                 }
 
-                 m = m > 9 ? m : '0' + m;
 
-                 d = d > 9 ? d : '0' + d;
 
-                 return y + '-' + m + '-' + d;
 
-             },
 
-             getDaysBetween(dateString1,dateString2){ // 获取两个日期之间的天数
 
-                 var  startDate = Date.parse(dateString1);
 
-                 var  endDate = Date.parse(dateString2);
 
-                 if (startDate>endDate){
 
-                     return 0;
 
-                 }
 
-                 if (startDate==endDate){
 
-                     return 1;
 
-                 }
 
-                 var days=(endDate - startDate)/(1*24*60*60*1000);
 
-                 return  days + 1;
 
-             },
 
-             getMonthBetween (start, end) {
 
-                 var result = [];
 
-                 var s = start.split("-");
 
-                 var e = end.split("-");
 
-                 var min = new Date();
 
-                 var max = new Date();
 
-                 min.setFullYear(s[0], s[1] * 1 - 1, 1);//开始日期
 
-                 max.setFullYear(e[0], e[1] * 1 - 1, 1);//结束日期
 
-                 var curr = min;
 
-                 while (curr <= max) {
 
-                     let month = curr.getMonth() + 1;
 
-                     let year = curr.getFullYear();
 
-                     let endOfMonth = new Date(year, month, 0).getDate(); // 获取本月最后一天
 
-                     let endDate = this.getFullDate(curr.setDate(endOfMonth));//当月最后一天
 
-                     let startDate = this.getFullDate(curr.setDate(1));//当月第一天
 
-                     result.push({
 
-                         year: year,
 
-                         month: month,
 
-                         days: this.getMonthDay(year,month),
 
-                         start: startDate,
 
-                         end: endDate
 
-                     });
 
-                     curr.setMonth(month);
 
-                 }
 
-                 return result;
 
-             },
 
-             getMonthDay(year, month){
 
-                 var d = new Date(year, month, 0);
 
-                 return d.getDate();
 
-             },
 
-         }
 
-     });
 
- </script>
 
- {/block}
 
 
  |