<template> 
 | 
    <TableLayout :permissions="['business:taxes:query']"> 
 | 
        <!-- 搜索表单 --> 
 | 
        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> 
 | 
            <el-form-item label="开票状态" prop="status"> 
 | 
                <el-select v-model="searchForm.status" placeholder="请选择" @keypress.enter.native="search"> 
 | 
                    <el-option label="待处理" value="0"></el-option> 
 | 
                    <el-option label="已开票" value="1"></el-option> 
 | 
                    <el-option label="平台撤回" value="2"></el-option> 
 | 
                    <el-option label="已冲红" value="3"></el-option> 
 | 
                </el-select> 
 | 
            </el-form-item> 
 | 
            <el-form-item label="申请日期" prop="status"> 
 | 
                <el-date-picker 
 | 
                    v-model="searchForm.status" 
 | 
                    type="daterange" 
 | 
                    range-separator="至" 
 | 
                    start-placeholder="开始日期" 
 | 
                    end-placeholder="结束日期"> 
 | 
                </el-date-picker> 
 | 
            </el-form-item> 
 | 
            <el-form-item label="申请开票企业" prop="companyId" v-if="userInfo.type === 0"> 
 | 
              <el-select v-model="searchForm.companyId" placeholder="请选择" @change="search"> 
 | 
                <el-option 
 | 
                    v-for="item in companyList" 
 | 
                    :key="item.id" 
 | 
                    :label="item.name" 
 | 
                    :value="item.id"> 
 | 
                </el-option> 
 | 
              </el-select> 
 | 
            </el-form-item> 
 | 
            <section> 
 | 
                <el-button type="primary" @click="search">搜索</el-button> 
 | 
                <el-button @click="reset">重置</el-button> 
 | 
            </section> 
 | 
        </el-form> 
 | 
        <!-- 表格和分页 --> 
 | 
        <template v-slot:table-wrap> 
 | 
            <el-table 
 | 
                v-loading="isWorking.search" 
 | 
                :data="tableData.list" 
 | 
                stripe 
 | 
            > 
 | 
                <el-table-column label="序号" width="80px"> 
 | 
                    <template slot-scope="scope"> 
 | 
                        <span>{{scope.$index + 1}}</span> 
 | 
                    </template> 
 | 
                </el-table-column> 
 | 
                <el-table-column label="开票状态" min-width="100px"> 
 | 
                    <template slot-scope="{row}"> 
 | 
                        <span :class="'tax-status'+row.status" v-if="row.status === 0">待处理</span> 
 | 
                        <span :class="'tax-status'+row.status"  v-if="row.status === 1">已开票</span> 
 | 
                        <span :class="'tax-status'+row.status"  v-if="row.status === 2">平台撤回</span> 
 | 
                        <span :class="'tax-status'+row.status"  v-if="row.status === 3">已冲红</span> 
 | 
                    </template> 
 | 
                </el-table-column> 
 | 
                <el-table-column prop="companyName" label="申请企业" min-width="100px" v-if="userInfo.type === 0"></el-table-column> 
 | 
                <el-table-column prop="createDate" label="申请开票时间" min-width="100px"></el-table-column> 
 | 
                <el-table-column prop="creatorName" label="申请人" min-width="100px"></el-table-column> 
 | 
                <el-table-column prop="price" label="开票金额(元)" min-width="100px"></el-table-column> 
 | 
                <el-table-column label="投保类型" min-width="100px"> 
 | 
                    <template slot-scope="{row}"> 
 | 
                        <span v-if="row.applyType === 0">委托开票</span> 
 | 
                        <span v-if="row.applyType === 1">直保</span> 
 | 
                    </template> 
 | 
                </el-table-column> 
 | 
                <el-table-column prop="type" label="接收方式" min-width="100px"> 
 | 
                    <template slot-scope="{row}"> 
 | 
                        <span v-if="row.type === 0">电子发票</span> 
 | 
                        <span v-if="row.type === 1">纸质发票</span> 
 | 
                    </template> 
 | 
                </el-table-column> 
 | 
                <el-table-column prop="type" label="发票电子版" min-width="100px"> 
 | 
                    <template slot-scope="{row}"> 
 | 
                        <el-image 
 | 
                            v-if="row.imgurlFull!=null" 
 | 
                            style="width: 40px; height: 40px" 
 | 
                            :src="row.imgurlFull" 
 | 
                            :preview-src-list="[row.imgurlFull]"> 
 | 
                        </el-image> 
 | 
                    </template> 
 | 
                </el-table-column> 
 | 
                <el-table-column label="操作" min-width="180px"> 
 | 
                    <template slot-scope="{row}"> 
 | 
                        <el-button v-if="row.status == 0" type="text" @click="$refs.OperaTaxesUploadWindow.open('上传发票',row)">上传发票</el-button> 
 | 
                        <el-button v-if="row.status == 1 && userInfo.type === 0" type="text" @click="$refs.OperaTaxesUploadWindow.open('修改发票',row)">修改发票</el-button> 
 | 
                        <el-button type="text" @click="$refs.OperaTaxesWindow.open('开票申请详情',row)">申请详情</el-button> 
 | 
                    </template> 
 | 
                </el-table-column> 
 | 
            </el-table> 
 | 
            <pagination 
 | 
                @size-change="handleSizeChange" 
 | 
                @current-change="handlePageChange" 
 | 
                :pagination="tableData.pagination" 
 | 
            > 
 | 
            </pagination> 
 | 
        </template> 
 | 
        <el-dialog 
 | 
            title="上传发票" 
 | 
            :visible.sync="visible" 
 | 
            width="500px" 
 | 
            :show-close="false" 
 | 
            :close-on-click-modal="false" 
 | 
            center> 
 | 
            <div class="form"> 
 | 
                <div class="form_item"> 
 | 
                    <div class="form_item_label">发票号:</div> 
 | 
                    <div class="form_item_val"> 
 | 
                        <input v-model="form.doneCode" type="text" placeholder="请输入" /> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form_item"> 
 | 
                    <div class="form_item_label">上传发票:</div> 
 | 
                    <div class="form_item_val"> 
 | 
                    <UploadAvatarImage :uploadData="{ folder: 'taxes' }" :file="form.file" @uploadSuccess="result3" /> 
 | 
                    </div> 
 | 
                </div> 
 | 
            </div> 
 | 
            <span slot="footer" class="dialog-footer"> 
 | 
                <el-button @click="visible = false">取 消</el-button> 
 | 
                <el-button type="primary" @click="doneApplyDo">提 交</el-button> 
 | 
            </span> 
 | 
        </el-dialog> 
 | 
        <OperaTaxesWindow ref="OperaTaxesWindow" @success="handlePageChange"/> 
 | 
        <OperaTaxesUploadWindow ref="OperaTaxesUploadWindow" @success="handlePageChange"/> 
 | 
    </TableLayout> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import BaseTable from '@/components/base/BaseTable' 
 | 
import TableLayout from '@/layouts/TableLayout' 
 | 
import Pagination from '@/components/common/Pagination' 
 | 
import OperaTaxesWindow from '@/components/business/OperaTaxesWindow' 
 | 
import OperaTaxesUploadWindow from '@/components/business/OperaTaxesUploadWindow' 
 | 
import { all as solutionAll } from '@/api/business/solutions' 
 | 
import { pageAll as companyAll } from '@/api/business/company' 
 | 
import { doneApply } from '@/api/business/taxes' 
 | 
import UploadAvatarImage from '@/components/common/UploadAvatarImage' 
 | 
import { mapState } from 'vuex' 
 | 
export default { 
 | 
  name: 'Taxes', 
 | 
  extends: BaseTable, 
 | 
  components: { TableLayout, Pagination, OperaTaxesWindow, OperaTaxesUploadWindow, UploadAvatarImage }, 
 | 
  data () { 
 | 
    return { 
 | 
      // 搜索 
 | 
      form: { 
 | 
        id: null, 
 | 
        doneCode: null, 
 | 
        imgurl: null, 
 | 
        file:{ }, 
 | 
      }, 
 | 
      companyList: [], 
 | 
      searchForm: { 
 | 
        status: '', 
 | 
        companyId: '' 
 | 
      }, 
 | 
      visible: false 
 | 
    } 
 | 
  }, 
 | 
    computed: { 
 | 
      ...mapState(['userInfo']) 
 | 
    }, 
 | 
  created () { 
 | 
    this.config({ 
 | 
      module: '发票信息表', 
 | 
      api: '/business/taxes', 
 | 
      'field.id': 'id', 
 | 
      'field.main': 'id' 
 | 
    }) 
 | 
    this.search() 
 | 
    this.loadSelectList() 
 | 
  }, 
 | 
  methods: { 
 | 
    handleRemove (file, fileList) { 
 | 
      console.log(file, fileList) 
 | 
    }, 
 | 
    uploadImg (row) { 
 | 
      this.form = { 
 | 
        id: row.id, 
 | 
        doneCode: row.doneCode, 
 | 
        imgurl:null 
 | 
      }, 
 | 
      this.form.file= {imgurl: row.imgurl, imgurlfull: row.imgurlFull } 
 | 
      this.visible = true 
 | 
    }, 
 | 
    result3 (data) { 
 | 
      this.form.imgurl = null 
 | 
      this.form.imgurl = data.imgurl 
 | 
    }, 
 | 
    doneApplyDo () { 
 | 
      doneApply(this.form) 
 | 
        .then(response => { 
 | 
          this.visible = false 
 | 
          this.search() 
 | 
        }).catch(err => { 
 | 
          console.log(err) 
 | 
          this.$tip.apiFailed(err) 
 | 
        }).finally(() => { 
 | 
          this.isWorking = false 
 | 
        }) 
 | 
    }, 
 | 
    loadSelectList () { 
 | 
      solutionAll({ dataType: 0 }).then(res => { 
 | 
        this.solutionList = res 
 | 
      }).catch(err => { 
 | 
      }) 
 | 
      companyAll({}).then(res => { 
 | 
        this.companyList = res 
 | 
      }).catch(err => { 
 | 
      }) 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</script> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
    .form { 
 | 
        width: 100%; 
 | 
        display: flex; 
 | 
        flex-direction: column; 
 | 
        .form_item { 
 | 
            width: 100%; 
 | 
            display: flex; 
 | 
            align-items: center; 
 | 
            margin-bottom: 20px; 
 | 
            &:last-child { 
 | 
                margin-bottom: 0 !important; 
 | 
            } 
 | 
            .form_item_label { 
 | 
                width: 100px; 
 | 
                flex-shrink: 0; 
 | 
                font-size: 14px; 
 | 
                color: black; 
 | 
            } 
 | 
            .form_item_val { 
 | 
                flex: 1; 
 | 
                min-height: 35px; 
 | 
                display: flex; 
 | 
                align-items: center; 
 | 
                input { 
 | 
                    width: 100%; 
 | 
                    height: 100%; 
 | 
                    font-size: 14px; 
 | 
                    color: black; 
 | 
                    padding: 5px 10px; 
 | 
                    outline: none; 
 | 
                    box-sizing: border-box; 
 | 
                    border: 1px solid #ececec; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
</style> 
 |