<template> 
 | 
  <GlobalWindow width="1000px" :title="title" :visible.sync="showModal" :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> 
 | 
    <template v-if="activeTabs == 0"> 
 | 
      <div class="main"> 
 | 
        <div class="main_content"> 
 | 
          <el-form :model="param" ref="paramRef" :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> 
 | 
              </el-form-item> 
 | 
              <el-form-item label="合同编号" prop="code"> 
 | 
                <el-input v-model="param.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-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> 
 | 
              <el-form-item label="合同开始日期" prop=""> 
 | 
                <el-date-picker type="date" v-model="param.getDate" 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> 
 | 
              <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-select> 
 | 
              </el-form-item> 
 | 
              <el-form-item label="结果取整(四舍五入)" prop=""> 
 | 
                <el-select v-model="param.aaa" placeholder="请选择" clearable> 
 | 
                  <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-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> 
 | 
              <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> 
 | 
            </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 /> 
 | 
        </div> 
 | 
      </div> 
 | 
      <div class="file_wrap"> 
 | 
        <div class="head"> 
 | 
          <div>合同附件</div> 
 | 
          <el-upload class="upload-demo" :show-file-list="false" :data="uploadData" :action="uploadImgUrl" 
 | 
            :on-success="uploadAvatarSuccess" :before-upload="beforeUpload" :on-error="uploadError"> 
 | 
            <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> 
 | 
            </template> 
 | 
          </el-table-column> 
 | 
        </el-table> 
 | 
      </div> 
 | 
    </template> 
 | 
    <template v-if="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> 
 | 
      <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> 
 | 
                  </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> 
 | 
        </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> 
 | 
    </template> 
 | 
    <!--  --> 
 | 
    <MemberSearch ref="MemberSearchRef" /> 
 | 
  </GlobalWindow> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import GlobalWindow from '@/components/common/GlobalWindow' 
 | 
import BaseOpera from '@/components/base/BaseOpera' 
 | 
import MemberSearch from '@/components/common/MemberSearch' 
 | 
import { rules } from './config' 
 | 
import { Message, Loading } from 'element-ui' 
 | 
export default { 
 | 
  components: { 
 | 
    GlobalWindow, 
 | 
    MemberSearch 
 | 
  }, 
 | 
  extends: BaseOpera, 
 | 
  data() { 
 | 
    return { 
 | 
      showModal: false, 
 | 
      title: '创建合同', 
 | 
      activeTabs: '0', 
 | 
      param: {}, 
 | 
      rules, 
 | 
  
 | 
      loadingInstance: null, 
 | 
      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch', 
 | 
      fileList: [], 
 | 
      uploadData: { 
 | 
        folder: 'HIDDEN_DANGER_FILE' 
 | 
      }, 
 | 
  
 | 
      types: [ 
 | 
        { name: '物业+租赁合同', value: 0 }, 
 | 
        { name: '租赁合同', value: 1 }, 
 | 
        { name: '物业合同', value: 2 }, 
 | 
      ], 
 | 
      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: '克拉玛依' } 
 | 
            ] 
 | 
          }] 
 | 
        } 
 | 
      ], 
 | 
      cactiveTabs: 0, 
 | 
      paramCost: {}, 
 | 
      payMethods: [ 
 | 
        { name: '一次性付款', value: 0 }, 
 | 
        { name: '3个月一付', value: 1 }, 
 | 
        { name: '6个月一付', value: 2 }, 
 | 
        { name: '1年一付', value: 2 }, 
 | 
      ], 
 | 
      unitOps: [ 
 | 
        { name: '元/m²·天', value: 0 }, 
 | 
        { name: '元/m²·月', value: 1 }, 
 | 
        { name: '元/天', value: 2 }, 
 | 
        { name: '元/月', value: 3 }, 
 | 
        { name: '元/年', value: 4 }, 
 | 
        { name: '元/m²·年', value: 5 }, 
 | 
        { name: '元/场', value: 6 }, 
 | 
      ], 
 | 
    } 
 | 
  }, 
 | 
  methods: { 
 | 
    tabsClick(val) { 
 | 
      this.activeTabs = val 
 | 
    }, 
 | 
    ctabsClick(val) { 
 | 
      this.cactiveTabs = val 
 | 
    }, 
 | 
    getDetail() { 
 | 
  
 | 
    }, 
 | 
    handleRent() { 
 | 
      this.$refs.MemberSearchRef.openModal() 
 | 
    }, 
 | 
    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 
 | 
      // } 
 | 
      this.loadingInstance = Loading.service({ 
 | 
        lock: true, 
 | 
        text: 'Loading', 
 | 
        spinner: 'el-icon-loading', 
 | 
        background: 'rgba(0, 0, 0, 0.7)' 
 | 
      }) 
 | 
    }, 
 | 
    uploadError() { 
 | 
      this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭 
 | 
        if (this.loadingInstance) { 
 | 
          this.loadingInstance.close() 
 | 
        } 
 | 
      }) 
 | 
    }, 
 | 
    uploadAvatarSuccess(file) { 
 | 
      this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭 
 | 
        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) 
 | 
    }, 
 | 
    close() { 
 | 
      this.showModal = false 
 | 
      this.$emit('close') 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</script> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
@import '@/assets/style/variables.scss'; 
 | 
  
 | 
.tabs { 
 | 
  border-bottom: 1px solid #DFE2E8; 
 | 
  display: flex; 
 | 
  margin-bottom: 20px; 
 | 
  display: flex; 
 | 
  justify-content: center; 
 | 
  
 | 
  .tab { 
 | 
    height: 58px; 
 | 
    line-height: 58px; 
 | 
    font-size: 16px; 
 | 
    color: #666666; 
 | 
    margin: 0 30px; 
 | 
    cursor: pointer; 
 | 
  } 
 | 
  
 | 
  .active { 
 | 
    font-weight: 500; 
 | 
    color: $primary-color; 
 | 
    border-bottom: 2px solid $primary-color; 
 | 
  } 
 | 
} 
 | 
  
 | 
.cost_tabs { 
 | 
  justify-content: flex-start; 
 | 
  border: none; 
 | 
  
 | 
  .tab { 
 | 
    height: 36px; 
 | 
    line-height: 36px; 
 | 
    font-size: 14px; 
 | 
  } 
 | 
} 
 | 
  
 | 
.main { 
 | 
  display: flex; 
 | 
  margin-bottom: 20px; 
 | 
  
 | 
  .main_content { 
 | 
    flex: 1; 
 | 
    margin-right: 20px; 
 | 
  
 | 
    .list { 
 | 
      display: flex; 
 | 
      flex-wrap: wrap; 
 | 
  
 | 
      .el-form-item { 
 | 
        width: 33.33%; 
 | 
        box-sizing: border-box; 
 | 
        padding: 0 12px; 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
  
 | 
  .main_house { 
 | 
    width: 320px; 
 | 
    padding: 24px 12px; 
 | 
    border: 1px solid #c3c6cd; 
 | 
    border-radius: 2px; 
 | 
  
 | 
    .title { 
 | 
      font-size: 16px; 
 | 
      font-weight: 500; 
 | 
      margin-bottom: 30px; 
 | 
    } 
 | 
  } 
 | 
  
 | 
} 
 | 
  
 | 
.total { 
 | 
  display: flex; 
 | 
  justify-content: space-between; 
 | 
  align-items: center; 
 | 
  height: 32px; 
 | 
  background-color: #e7e9f5; 
 | 
  
 | 
  span { 
 | 
    width: 160px; 
 | 
    text-align: center; 
 | 
  } 
 | 
} 
 | 
  
 | 
.file_wrap { 
 | 
  padding: 20px 16px; 
 | 
  border: 1px solid #c3c6cd; 
 | 
  border-radius: 2px; 
 | 
  
 | 
  .head { 
 | 
    display: flex; 
 | 
    justify-content: space-between; 
 | 
    align-items: center; 
 | 
  } 
 | 
} 
 | 
  
 | 
.m_title { 
 | 
  font-weight: 500; 
 | 
  font-size: 14px; 
 | 
  margin-bottom: 15px; 
 | 
  margin-top: 10px; 
 | 
} 
 | 
</style> 
 |