<template> 
 | 
  <div class="main_app"> 
 | 
    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear"> 
 | 
      <template #btns> 
 | 
<!--        <el-button @click="exportData">导出</el-button>--> 
 | 
      </template> 
 | 
    </QueryForm> 
 | 
    <div class="mt10"> 
 | 
      <el-button @click="$refs.ContractEditRef.open('创建合同')" icon="el-icon-plus" type="primary">新建</el-button> 
 | 
    </div> 
 | 
    <el-table v-loading="loading" :data="list" stripe> 
 | 
      <el-table-column prop="renterName" label="客户名称" min-width="100" show-overflow-tooltip /> 
 | 
      <el-table-column prop="startDate" label="开始日期" min-width="100" show-overflow-tooltip /> 
 | 
      <el-table-column prop="endDate" label="结束日期" min-width="100" show-overflow-tooltip /> 
 | 
        <el-table-column prop="zlFirstPrice" label="租赁单价" min-width="100" show-overflow-tooltip> 
 | 
            <template slot-scope="{row}"> 
 | 
                <div style="display: flex; align-items: center;"> 
 | 
                    <span>{{row.zlFirstPrice || row.wyFirstPrice}}</span> 
 | 
                    <span>{{row.zlFirstCircleStr || row.wyFirstCircleStr}}</span> 
 | 
                </div> 
 | 
            </template> 
 | 
        </el-table-column> 
 | 
        <el-table-column label="租赁面积" min-width="100" show-overflow-tooltip> 
 | 
            <template slot-scope="{row}"> 
 | 
                {{row.totalArea}}㎡ 
 | 
            </template> 
 | 
        </el-table-column> 
 | 
      <el-table-column prop="signDate" label="签订日" min-width="100" show-overflow-tooltip /> 
 | 
      <el-table-column prop="code" label="合同编号" min-width="100" show-overflow-tooltip /> 
 | 
      <el-table-column label="合同状态" min-width="90" fixed="right" show-overflow-tooltip> 
 | 
        <template slot-scope="{row}"> 
 | 
          <span class="primaryColor" v-if="row.status === 0">待执行</span> 
 | 
          <span class="green" v-if="row.status === 1">正常执行中</span> 
 | 
          <span class="gary" v-if="row.status === 2">已到期</span> 
 | 
          <span class="gary" v-if="row.status === 3">退租结算中</span> 
 | 
          <span class="gary" v-if="row.status === 4">已退租</span> 
 | 
        </template> 
 | 
      </el-table-column> 
 | 
      <el-table-column label="操作" min-width="90" fixed="right" show-overflow-tooltip> 
 | 
        <template v-slot="scope"> 
 | 
          <span class="primaryColor cu" @click="handleDetail(scope.row.id)">查看详情</span> 
 | 
        </template> 
 | 
      </el-table-column> 
 | 
    </el-table> 
 | 
    <div class="mt20"> 
 | 
      <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" /> 
 | 
    </div> 
 | 
    <ContractDetail ref="ContractDetailRef" /> 
 | 
    <ContractEdit ref="ContractEditRef" @success="getList(1)" /> 
 | 
  </div> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import Pagination from '@/components/common/Pagination' 
 | 
import QueryForm from '@/components/common/QueryForm' 
 | 
import ContractDetail from './components/contractDetail' 
 | 
import ContractEdit from './components/contractEdit.vue' 
 | 
import { fetchList } from '@/api/contract' 
 | 
import dayjs from 'dayjs' 
 | 
import duration from 'dayjs/plugin/duration' 
 | 
dayjs.extend(duration) 
 | 
  
 | 
export default { 
 | 
  components: { 
 | 
    Pagination, 
 | 
    QueryForm, 
 | 
    ContractEdit, 
 | 
    ContractDetail 
 | 
  }, 
 | 
  data () { 
 | 
    return { 
 | 
      loading: false, 
 | 
      pagination: { 
 | 
        pageSize: 10, 
 | 
        page: 1, 
 | 
        total: 0 
 | 
      }, 
 | 
      filters: {}, 
 | 
      list: [], 
 | 
      total: 0, 
 | 
      queryFormConfig: { 
 | 
        formItems: [ 
 | 
          { 
 | 
            filed: 'renterName', 
 | 
            type: 'input', 
 | 
            label: '客户名称' 
 | 
          }, 
 | 
          { 
 | 
            filed: 'code', 
 | 
            type: 'input', 
 | 
            label: '合同编号' 
 | 
          }, 
 | 
          { 
 | 
            filed: 'status', 
 | 
            type: 'select', 
 | 
            label: '合同状态', 
 | 
            options: [ 
 | 
              { value: 0, label: '待执行' }, 
 | 
              { value: 1, label: '正常执行中' }, 
 | 
              { value: 2, label: '已到期' }, 
 | 
              { value: 3, label: '退租结算中' }, 
 | 
              { value: 4, label: '已退租' }, 
 | 
            ] 
 | 
          }, 
 | 
          { 
 | 
            filed: 'selDate', 
 | 
            type: 'datetimerange', 
 | 
            label: '合同日期', 
 | 
            placeholder: '合同日期' 
 | 
          } 
 | 
        ], 
 | 
        online: true 
 | 
      } 
 | 
    } 
 | 
  }, 
 | 
  created () { 
 | 
    this.getList() 
 | 
  }, 
 | 
  methods: { 
 | 
    handleDetail (id) { 
 | 
      this.$refs.ContractDetailRef.open('合同详情', id) 
 | 
    }, 
 | 
    getList (page) { 
 | 
      const { pagination, filters } = this 
 | 
      this.loading = true 
 | 
      fetchList({ 
 | 
        model: { 
 | 
          ...filters 
 | 
        }, 
 | 
        sorts: [{ direction: 'DESC', property: 'param1' }], 
 | 
        capacity: pagination.pageSize, 
 | 
        page: page || pagination.page 
 | 
      }).then(res => { 
 | 
        this.loading = false 
 | 
        this.list = res.records || [] 
 | 
        this.pagination.total = res.total || 0 
 | 
      }, () => { 
 | 
        this.loading = false 
 | 
      }) 
 | 
    }, 
 | 
    clear () { 
 | 
      this.filters = {} 
 | 
      this.pagination.pageSize = 10 
 | 
      this.pagination.page = 1 
 | 
      this.getList() 
 | 
    }, 
 | 
    handleSizeChange (capacity) { 
 | 
      this.pagination.pageSize = capacity 
 | 
    }, 
 | 
    exportData () { 
 | 
     
 | 
    } 
 | 
  } 
 | 
} 
 | 
</script> 
 |