Commit efb37c3a authored by wanghf's avatar wanghf

feature--线上发包任务,发票信息管理功能

parent a76aab3c
import request from '@/utils/request'
// 查询申请发票信息列表
export function listInvoiceApply(query) {
return request({
url: '/business/invoiceApply/list',
method: 'get',
params: query
})
}
// 查询申请发票信息所有列表
export function listAllInvoiceApply(query) {
return request({
url: '/business/invoiceApply/listAll',
method: 'get',
params: query
})
}
// 查询申请发票信息详细
export function getInvoiceApply(id) {
return request({
url: '/business/invoiceApply/getInfo/' + id,
method: 'get'
})
}
export function getInvoiceApplyDetail(id) {
return request({
url: '/business/invoiceApply/detail/' + id,
method: 'get'
})
}
// 新增申请发票信息
export function addInvoiceApply(data) {
return request({
url: '/business/invoiceApply/add',
method: 'post',
data: data
})
}
// 新增申请发票信息--申请开票
export function addApplyInvoice(data) {
return request({
url: '/business/invoiceApply/applyInvoice',
method: 'post',
data: data
})
}
// 修改申请发票信息
export function updateInvoiceApply(data) {
return request({
url: '/business/invoiceApply/edit',
method: 'post',
data: data
})
}
// 删除申请发票信息
export function delInvoiceApply(id) {
return request({
url: '/business/invoiceApply/remove/' + id,
method: 'get'
})
}
/// 上传发票
export function uploadInvoiceFile(data) {
return request({
url: '/business/invoiceApply/uploadInvoice',
method: 'post',
data: data
})
}
// 更新发票状态
export function updateInvoiceStatus(data) {
return request({
url: '/business/invoiceApply/updateInvoiceStatus',
method: 'post',
data: data
})
}
import request from '@/utils/request'
// 查询发票日志列表
export function listInvoiceApplyLog(query) {
return request({
url: '/business/invoiceApplyLog/list',
method: 'get',
params: query
})
}
// 查询发票日志所有列表
export function listAllInvoiceApplyLog(query) {
return request({
url: '/business/invoiceApplyLog/listAll',
method: 'get',
params: query
})
}
// 查询发票日志详细
export function getInvoiceApplyLog(id) {
return request({
url: '/business/invoiceApplyLog/getInfo/' + id,
method: 'get'
})
}
// 新增发票日志
export function addInvoiceApplyLog(data) {
return request({
url: '/business/invoiceApplyLog/add',
method: 'post',
data: data
})
}
// 修改发票日志
export function updateInvoiceApplyLog(data) {
return request({
url: '/business/invoiceApplyLog/edit',
method: 'post',
data: data
})
}
// 删除发票日志
export function delInvoiceApplyLog(id) {
return request({
url: '/business/invoiceApplyLog/remove/' + id,
method: 'get'
})
}
import request from '@/utils/request'
// 查询开票信息列表
export function listInvoiceInfo(query) {
return request({
url: '/business/invoiceInfo/list',
method: 'get',
params: query
})
}
// 查询开票信息所有列表
export function listAllInvoiceInfo(query) {
return request({
url: '/business/invoiceInfo/listAll',
method: 'get',
params: query
})
}
// 查询开票信息详细
export function getInvoiceInfo(id) {
return request({
url: '/business/invoiceInfo/getInfo/' + id,
method: 'get'
})
}
export function getInvoiceInfoByCompanyId(id) {
return request({
url: '/business/invoiceInfo/getInfoByCompanyId/' + id,
method: 'get'
})
}
export function getInfoByTaxUnitId(id) {
return request({
url: '/business/invoiceInfo/getInfoByTaxUnitId/' + id,
method: 'get'
})
}
// 新增开票信息
export function addInvoiceInfo(data) {
return request({
url: '/business/invoiceInfo/add',
method: 'post',
data: data
})
}
// 修改开票信息
export function updateInvoiceInfo(data) {
return request({
url: '/business/invoiceInfo/edit',
method: 'post',
data: data
})
}
// 删除开票信息
export function delInvoiceInfo(id) {
return request({
url: '/business/invoiceInfo/remove/' + id,
method: 'get'
})
}
import request from '@/utils/request'
// 查询线上任务信息列表
export function listOnlineTaskInfo(query) {
return request({
url: '/business/onlineTaskInfo/list',
method: 'get',
params: query
})
}
// 查询线上任务信息所有列表
export function listAllOnlineTaskInfo(query) {
return request({
url: '/business/onlineTaskInfo/listAll',
method: 'get',
params: query
})
}
// 查询线上任务信息详细
export function getOnlineTaskInfo(id) {
return request({
url: '/business/onlineTaskInfo/getInfo/' + id,
method: 'get'
})
}
// 新增线上任务信息
export function addOnlineTaskInfo(data) {
return request({
url: '/business/onlineTaskInfo/add',
method: 'post',
data: data
})
}
// 修改线上任务信息
export function updateOnlineTaskInfo(data) {
return request({
url: '/business/onlineTaskInfo/edit',
method: 'post',
data: data
})
}
// 新增线上任务信息 第一步
export function addOnlineTaskInfoFirst(data) {
return request({
url: '/business/onlineTaskInfo/addFirst',
method: 'post',
data: data
})
}
// 修改线上任务信息 第二步
export function addOnlineTaskInfoSecond(data) {
return request({
url: '/business/onlineTaskInfo/addSecond',
method: 'post',
data: data
})
}
//更新状态
export function updateStatus(data) {
return request({
url: '/business/onlineTaskInfo/updateStatus',
method: 'post',
data: data
})
}
// 删除线上任务信息
export function delOnlineTaskInfo(id) {
return request({
url: '/business/onlineTaskInfo/remove/' + id,
method: 'get'
})
}
......@@ -9,6 +9,15 @@ export function listPayOrder(query) {
})
}
// 查询批量支付列表--待开票
export function listPayOrderToInvoice(query) {
return request({
url: '/business/payOrder/listToInvoice',
method: 'get',
params: query
})
}
// 查询批量支付所有列表
export function listAllPayOrder(query) {
return request({
......
<template>
<div class="if-container">
<!-- :src="`/pdf/web/viewer.html?file=${pdfUrl}`" -->
<iframe
name="fd-jspdf"
id="fd-jspdf"
:src="pdfUrl"
frameborder="0"
:style="`width: 100%; height: ${height}px; border: none`"
></iframe>
</div>
</template>
<script>
export default {
name: "Pdf",
props: {
pdfUrl: {
type: String,
default: "",
},
height: {
type: Number,
default: 600,
},
},
};
</script>
<style>
.if-container {
width: 100%;
height: 100%;
}
</style>
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="采购方企业" prop="applyCompanyId">
<el-select v-model="queryParams.applyCompanyId" placeholder="请选择企业" clearable>
<el-option v-for="item in companyInfoList" :key="item.id" :label="item.companyName" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="销售方企业" prop="taxCompanyId">
<el-select v-model="queryParams.taxCompanyId" placeholder="请选择企业" clearable>
<el-option v-for="item in taxCompanyList" :key="item.id" :label="item.companyName" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="开票类型" prop="invoieType">
<el-select v-model="queryParams.invoieType" placeholder="请选择开票类型" clearable filterable>
<el-option
v-for="dict in dict.type.tax_invoice_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="开票状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择开票状态" clearable filterable>
<el-option
v-for="dict in dict.type.invoice_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="申请时间">
<el-date-picker
v-model="daterangeApplyTime"
style="width: 240px"
value-format="yyyy-MM-dd HH:mm:ss"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="success"
icon="el-icon-plus"
size="mini"
@click="handleDetail"
v-hasPermi="['business:invoiceApply:add']"
>详情</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['business:invoiceApply:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5" v-if="false">
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['business:invoiceApply:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5" v-if="false">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['business:invoiceApply:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['business:invoiceApply:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="invoiceApplyList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="采购方企业名称" align="center" prop="applyCompanyName" />
<el-table-column label="销售方企业名称" align="center" prop="taxCompanyName" />
<el-table-column label="价税合计/元" align="center" prop="totalAmountTax" />
<el-table-column label="不含税金额/元" align="center" prop="totalAmount" />
<el-table-column label="税额/元" align="center" prop="totalTax" />
<el-table-column label="开票类型" align="center" prop="invoieType">
<template slot-scope="scope">
<dict-tag :options="dict.type.tax_invoice_type" :value="scope.row.invoieType"/>
</template>
</el-table-column>
<el-table-column label="开票状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.invoice_status" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="申请时间" align="center" prop="applyTime" >
<template slot-scope="scope">
<span>{{ parseTime(scope.row.applyTime) }}</span>
</template>
</el-table-column>
<el-table-column label="开票时间" align="center" prop="uploadTime" >
<template slot-scope="scope">
<span>{{ parseTime(scope.row.uploadTime) }}</span>
</template>
</el-table-column>
<el-table-column label="收票时间" align="center" prop="revicedTime" >
<template slot-scope="scope">
<span>{{ parseTime(scope.row.revicedTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-view"
@click="viewDetail(scope.row)"
v-hasPermi="['business:invoiceApply:view']"
>查看详情</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-connection"
@click="viewInvoiceFile(scope.row)"
v-hasPermi="['business:invoiceApply:remove']"
>查看发票</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-upload"
v-hasPermi="['business:invoiceApply:uploadInvoiceFile']"
@click="uploadInvoiceDailog(scope.row)"
>上传发票</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-receiving"
@click="confirmInvoiceFile(scope.row)"
v-hasPermi="['business:invoiceApply:confirmRecived']"
>接收收票</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改申请发票信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<!-- <el-form-item label="采购方企业id" prop="applyCompanyId">-->
<!-- <el-input v-model="form.applyCompanyId" placeholder="请输入采购方企业id" />-->
<!-- </el-form-item>-->
<el-form-item label="采购方企业名称" prop="applyCompanyName">
<el-input v-model="form.applyCompanyName" placeholder="请输入采购方企业名称" />
</el-form-item>
<!-- <el-form-item label="销售方企业id" prop="taxCompanyId">-->
<!-- <el-input v-model="form.taxCompanyId" placeholder="请输入销售方企业id" />-->
<!-- </el-form-item>-->
<el-form-item label="销售方企业名称" prop="taxCompanyName">
<el-input v-model="form.taxCompanyName" placeholder="请输入销售方企业名称" />
</el-form-item>
<el-form-item label="价税合计/元" prop="totalAmountTax">
<el-input v-model="form.totalAmountTax" placeholder="请输入价税合计/元" />
</el-form-item>
<el-form-item label="不含税金额/元" prop="totalAmount">
<el-input v-model="form.totalAmount" placeholder="请输入不含税金额/元" />
</el-form-item>
<el-form-item label="税额/元" prop="totalTax">
<el-input v-model="form.totalTax" placeholder="请输入税额/元" />
</el-form-item>
<el-form-item label="开票类型" prop="invoieType">
<el-select v-model="form.invoieType" placeholder="请选择开票类型" filterable>
<el-option
v-for="dict in dict.type.tax_invoice_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="开票状态" prop="status">
<el-select v-model="form.status" placeholder="请选择开票状态" filterable>
<el-option
v-for="dict in dict.type.invoice_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="申请时间" prop="applyTime">
<el-date-picker clearable
v-model="form.applyTime"
type="date"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择申请时间">
</el-date-picker>
</el-form-item>
<el-form-item label="开票时间" prop="uploadTime">
<el-date-picker clearable
v-model="form.uploadTime"
type="date"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择开票时间">
</el-date-picker>
</el-form-item>
<el-form-item label="收票时间" prop="revicedTime">
<el-date-picker clearable
v-model="form.revicedTime"
type="date"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择收票时间">
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
<!-- 开票详情 -->
<el-dialog title="开票详情" :visible.sync="detailOpen" width="1200px" append-to-body>
<el-card shadow="hover" class="invoice-info-card">
<div>
<h3 class="title-bold" strong >发票状态</h3>
<el-divider></el-divider>
<p>申请发票类型:<dict-tag style="display: inline;" :options="dict.type.invoice_status" :value="form.status"/></p>
</div>
</el-card>
<el-card shadow="hover" class="invoice-info-card">
<div>
<h3 class="title-bold" strong >采购方信息</h3>
<el-divider></el-divider>
<el-row>
<el-col :span="8">
<p>名称:{{form.applyCompanyInvoice.invoiceTitle || '--'}}</p>
</el-col>
<el-col :span="8">
<p>纳税人识别号:{{form.applyCompanyInvoice.taxRegistrationNumber || '--'}}</p>
</el-col>
<el-col :span="8">
<p>开户银行:{{form.applyCompanyInvoice.bankName || '--'}}</p>
</el-col>
<el-col :span="8">
<p>开户账号:{{form.applyCompanyInvoice.bankAccount || '--'}}</p>
</el-col>
<el-col :span="8">
<p>地址:{{form.applyCompanyInvoice.address || '--'}}</p>
</el-col>
<el-col :span="8">
<p>电话:{{form.applyCompanyInvoice.phone || '--'}}</p>
</el-col>
</el-row>
</div>
</el-card>
<el-card shadow="hover" class="invoice-info-card">
<div>
<h3 class="title-bold" strong >销售方信息</h3>
<el-divider></el-divider>
<el-row>
<el-col :span="8">
<p>名称:{{form.taxCompanyInvoice.invoiceTitle || '--'}}</p>
</el-col>
<el-col :span="8">
<p>纳税人识别号:{{form.taxCompanyInvoice.taxRegistrationNumber || '--'}}</p>
</el-col>
<el-col :span="8">
<p>开户银行:{{form.taxCompanyInvoice.bankName || '--'}}</p>
</el-col>
<el-col :span="8">
<p>开户账号:{{form.taxCompanyInvoice.bankAccount || '--'}}</p>
</el-col>
<el-col :span="8">
<p>地址:{{form.taxCompanyInvoice.address || '--'}}</p>
</el-col>
<el-col :span="8">
<p>电话:{{form.taxCompanyInvoice.phone || '--'}}</p>
</el-col>
</el-row>
</div>
</el-card>
<el-card shadow="hover" class="invoice-info-card">
<div>
<h3 class="title-bold" strong >备注信息</h3>
<el-divider></el-divider>
<p>备注信息:{{form.remark || '--'}}</p>
</div>
</el-card>
<el-card shadow="hover" class="invoice-info-card">
<div>
<h3 class="title-bold" strong >发票信息</h3>
<el-divider></el-divider>
<h4 style="font-weight: bold;">申请信息:</h4>
<el-row>
<el-col :span="8">
<p>申请发票类型:<dict-tag style="display: inline;" :options="dict.type.tax_invoice_type" :value="form.invoieType"/></p>
</el-col>
<el-col :span="16">
<p>申请时间:{{form.applyTime || '--'}}</p>
</el-col>
<el-col :span="8">
<p>价税合计/元:{{form.totalAmountTax || '--'}}</p>
</el-col>
<el-col :span="8">
<p>不含税金额/元:{{form.totalAmount || '--'}}</p>
</el-col>
<el-col :span="8">
<p>税额/元:{{form.totalTax || '--'}}</p>
</el-col>
</el-row>
<el-divider></el-divider>
<div style="display: flex; justify-content: space-between; align-items: center;">
<h4 style="font-weight: bold;">开票信息:</h4>
<el-button v-if="form.invocieUrl" type="primary">查看发票</el-button>
</div>
<el-row>
<el-col :span="8">
<p>申请发票类型:<dict-tag style="display: inline;" :options="dict.type.tax_invoice_type" :value="form.invoieType"/></p>
</el-col>
<el-col :span="16">
<p>申请时间:{{form.applyTime || '--'}}</p>
</el-col>
<el-col :span="8">
<p>价税合计/元:{{form.totalAmountTax || '--'}}</p>
</el-col>
<el-col :span="8">
<p>不含税金额/元:{{form.totalAmount || '--'}}</p>
</el-col>
<el-col :span="8">
<p>税额/元:{{form.totalTax || '--'}}</p>
</el-col>
<el-col :span="8">
<p>发票号码:{{form.invoiceCode || '--'}}</p>
</el-col>
<el-col :span="8">
<p>开票方式:{{form.invocieMethod || '--'}}</p>
</el-col>
</el-row>
<el-divider></el-divider>
<h4 style="font-weight: bold;">总计:</h4>
<el-row>
<el-col :span="8">
<p>价税合计/元:{{form.totalAmountTax || '--'}}</p>
</el-col>
<el-col :span="8">
<p>不含税金额/元:{{form.totalAmount || '--'}}</p>
</el-col>
<el-col :span="8">
<p>税额/元:{{form.totalTax || '--'}}</p>
</el-col>
</el-row>
</div>
</el-card>
<el-card shadow="hover" class="invoice-info-card">
<div>
<h3 class="title-bold" strong >发票关联信息</h3>
<el-divider></el-divider>
<el-table v-loading="loading" :data="form.payOrderList" height="200px">
<el-table-column label="序号" align="center" prop="index" width="60">
<template slot-scope="scope">
{{ scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column label="流水号" align="center" prop="batchNo" />
<el-table-column label="业务名称" align="center" prop="batchPayName" />
<el-table-column label="付款账户" align="center">
<template slot-scope="scope">
{{ scope.row.payerAccName }}
<div>{{ scope.row.payerAccNo }}</div>
</template>
</el-table-column>
<el-table-column label="开票金额/元" align="center" prop="successAmount" />
</el-table>
</div>
</el-card>
<el-card shadow="hover" class="invoice-info-card">
<div>
<h3 class="title-bold" strong >发票日志信息</h3>
<el-divider></el-divider>
<el-table v-loading="loading" :data="form.applyLogList" height="180px">
<el-table-column prop="title" label="操作"></el-table-column>
<el-table-column prop="operateTime" label="操作时间"></el-table-column>
<el-table-column prop="operateCompany" label="操作方"></el-table-column>
<el-table-column prop="operateUsername" label="操作用户"></el-table-column>
</el-table>
</div>
</el-card>
</el-dialog>
<!-- 上传发票对话框 -->
<el-dialog title="上传发票" :visible.sync="uploadInvoiceOpen">
<file-upload :limit="1" :fileType="['pdf']" v-model="uploadInvoieFile" />
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="uploadInvoiceFile">确 定</el-button>
<el-button @click="uploadInvoiceOpen = false">取 消</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {
listInvoiceApply,
getInvoiceApply,
delInvoiceApply,
addInvoiceApply,
updateInvoiceApply,
uploadInvoiceFile, updateInvoiceStatus, getInvoiceApplyDetail
} from '@/api/business/invoiceApply'
import { listCompanyInfo } from '@/api/business/companyInfo'
import fa from 'element-ui/src/locale/lang/fa'
import { querySignList } from '@/api/business/unitInfo'
export default {
name: "InvoiceApply",
computed: {
fa() {
return fa
}
},
dicts: ['invoice_status', 'tax_invoice_type'],
data() {
return {
//上传发票
applyInvoiceId: null,
viewInvoiceFileOpen : false,
uploadInvoiceOpen : false,
uploadInvoieFile: null,
//人力公司list
companyInfoList: [],
//税源地公司
taxCompanyList: [],
detailOpen: false,
// 根路径
baseURL: process.env.VUE_APP_BASE_API,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 申请发票信息表格数据
invoiceApplyList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 收票时间时间范围
daterangeApplyTime: [],
// 收票时间时间范围
daterangeUploadTime: [],
// 收票时间时间范围
daterangeRevicedTime: [],
// 收票时间时间范围
daterangeCreateTime: [],
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
applyCompanyId: null,
applyCompanyName: null,
taxCompanyId: null,
taxCompanyName: null,
invoieType: null,
status: null,
applyTime: null,
uploadTime: null,
revicedTime: null,
createTime: null,
},
// 表单参数
form: {
id: null,
deptId: null,
batchPayOrderIds: [],
applyCompanyId: null,
applyCompanyName: null,
taxCompanyId: null,
taxCompanyName: null,
applyCompanyInvoice: {
invoiceTitle: null,
taxRegistrationNumber: null,
bankName: null,
bankAccount: null,
address: null,
phone: null,
},
taxCompanyInvoice: {
invoiceTitle: null,
taxRegistrationNumber: null,
bankName: null,
bankAccount: null,
address: null,
phone: null,
},
payOrderList: [],
applyLogList: [],
},
// 表单校验
rules: {
id: [
{ required: true, message: "主键id不能为空", trigger: "blur" }
],
deptId: [
{ required: true, message: "部门id不能为空", trigger: "blur" }
],
batchPayOrderIds: [
{ required: true, message: "关联批量支付ids不能为空", trigger: "blur" }
],
applyCompanyId: [
{ required: true, message: "采购方企业id不能为空", trigger: "blur" }
],
applyCompanyName: [
{ required: true, message: "采购方企业名称不能为空", trigger: "blur" }
],
taxCompanyId: [
{ required: true, message: "销售方企业id不能为空", trigger: "blur" }
],
taxCompanyName: [
{ required: true, message: "销售方企业名称不能为空", trigger: "blur" }
],
totalAmountTax: [
{ required: true, message: "价税合计/元不能为空", trigger: "blur" }
],
totalAmount: [
{ required: true, message: "不含税金额/元不能为空", trigger: "blur" }
],
totalTax: [
{ required: true, message: "税额/元不能为空", trigger: "blur" }
],
invoieType: [
{ required: true, message: "开票类型不能为空", trigger: "change" }
],
status: [
{ required: true, message: "开票状态不能为空", trigger: "change" }
],
applyTime: [
{ required: true, message: "申请时间不能为空", trigger: "blur" }
],
uploadTime: [
{ required: true, message: "开票时间不能为空", trigger: "blur" }
],
revicedTime: [
{ required: true, message: "收票时间不能为空", trigger: "blur" }
],
invocieUrl: [
{ required: true, message: "发票文件地址不能为空", trigger: "blur" }
],
}
};
},
created() {
this.getList();
this.getListgetCompanyList(1);
// this.getListgetCompanyList(2);
},
methods: {
//获取企业信息数据
getListgetCompanyList(bindType) {
this.loading = true;
const queryParams = {
bindType: bindType,
pageNum: 1,
pageSize: 1000
}
listCompanyInfo(queryParams).then(response => {
if (bindType == 1) {
this.companyInfoList = response.rows;
}else if (bindType == 2) {
this.taxCompanyList = response.rows;
}
this.loading = false;
});
},
//查询合作机构list
queryTaxCompanyList(){
const queryParams = {
signStatus: 2,
pageNum: 1,
pageSize: 1000
}
querySignList(queryParams).then(response => {
if (response.code == 200) {
this.taxCompanyList = response.rows;
}
})
},
/** 查询申请发票信息列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
if (null != this.daterangeApplyTime && '' != this.daterangeApplyTime) {
this.queryParams.params["beginApplyTime"] = this.daterangeApplyTime[0];
this.queryParams.params["endApplyTime"] = this.daterangeApplyTime[1];
}
if (null != this.daterangeUploadTime && '' != this.daterangeUploadTime) {
this.queryParams.params["beginUploadTime"] = this.daterangeUploadTime[0];
this.queryParams.params["endUploadTime"] = this.daterangeUploadTime[1];
}
if (null != this.daterangeRevicedTime && '' != this.daterangeRevicedTime) {
this.queryParams.params["beginRevicedTime"] = this.daterangeRevicedTime[0];
this.queryParams.params["endRevicedTime"] = this.daterangeRevicedTime[1];
}
if (null != this.daterangeCreateTime && '' != this.daterangeCreateTime) {
this.queryParams.params["beginCreateTime"] = this.daterangeCreateTime[0];
this.queryParams.params["endCreateTime"] = this.daterangeCreateTime[1];
}
listInvoiceApply(this.queryParams).then(response => {
this.invoiceApplyList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
id: null,
deptId: null,
batchPayOrderIds: null,
applyCompanyId: null,
applyCompanyName: null,
taxCompanyId: null,
taxCompanyName: null,
totalAmountTax: null,
totalAmount: null,
totalTax: null,
invoieType: null,
status: null,
applyTime: null,
uploadTime: null,
revicedTime: null,
invocieUrl: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.daterangeApplyTime = [];
this.daterangeUploadTime = [];
this.daterangeRevicedTime = [];
this.daterangeCreateTime = [];
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加申请发票信息";
},
/** 查看详情按钮操作 */
handleDetail() {
this.reset();
this.detailOpen = true;
this.title = "查看发票详情信息";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getInvoiceApply(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改申请发票信息";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateInvoiceApply(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addInvoiceApply(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除申请发票信息编号为"' + ids + '"的数据项?').then(function() {
return delInvoiceApply(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('business/invoiceApply/export', {
...this.queryParams
}, `invoiceApply_${new Date().getTime()}.xlsx`)
},
uploadInvoiceDailog(row){
this.uploadInvoiceOpen = true;
this.applyInvoiceId = row.id;
},
uploadInvoiceFile() {
this.loading = true;
const obj = {
id: this.applyInvoiceId,
invocieUrl: this.uploadInvoieFile,
};
uploadInvoiceFile(obj).then((res) => {
if (res.code === 200) {
this.$message.success("上传成功!");
this.uploadInvoiceOpen = false;
this.uploadInvoieFile = null;
this.getList();
}else {
this.$message.error(res.msg);
}
}).finally(() => {
this.loading = false;
});
},
//确认收到发票
confirmInvoiceFile(row){
this.$confirm('是否确认已收到发票?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.loading = true;
const obj = {
id: row.id,
status: 'RECEIVED',
};
updateInvoiceStatus(obj).then((res) => {
if (res.code === 200) {
this.$message.success("确认成功!");
}
}).finally(() => {
this.loading = false;
});
})
},
//查看发票
viewInvoiceFile(row) {
//新标签页打开
// window.open(`${this.baseURL}${row.invocieUrl}`);
window.open(`${row.invocieUrl}`);
},
//查看详情
viewDetail(row) {
getInvoiceApplyDetail(row.id).then(response => {
this.detailOpen = true;
this.form = response.data;
});
},
},
};
</script>
<style>
.invoice-info-card {
margin-bottom: 10px;
}
.title-bold {
text-align: center;
font-weight: bold;
}
</style>
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="流水号" prop="batchNo">
<el-input v-model="queryParams.batchNo" placeholder="流水号" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="业务名称" prop="batchPayName">
<el-input v-model="queryParams.batchPayName" placeholder="请输入支付名称" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="付款账户名" prop="payerAccName">
<el-input v-model="queryParams.payerAccName" placeholder="请输入付款账户名" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="付款账号" prop="payerAccNo">
<el-input v-model="queryParams.payerAccNo" placeholder="请输入付款账号" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="开票状态" prop="payStatus">
<el-select v-model="queryParams.invoiceStatus" placeholder="请选择开票状态" @change="handleQuery" clearable>
<el-option v-for="dict in dict.type.batch_pay_order_invoice_status" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="batchApplyInvoice"
:disabled="multiple" v-hasPermi="['business:invoiceApply:apply']" >批量申请开票</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" icon="el-icon-download" size="mini" @click="handleExport"
:disabled="multiple" v-hasPermi="['business:payOrder:export']">批量导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="payOrderList" height="700px" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="流水号" align="center" prop="batchNo" />
<el-table-column label="业务名称" align="center" prop="batchPayName" />
<el-table-column label="付款账户" align="center">
<template slot-scope="scope">
{{ scope.row.payerAccName }}
<div>{{ scope.row.payerAccNo }}</div>
</template>
</el-table-column>
<el-table-column label="支付状态" align="center" prop="payStatus">
<template slot-scope="scope">
<dict-tag :options="dict.type.pay_status" :value="scope.row.payStatus" />
</template>
</el-table-column>
<el-table-column label="开票状态" align="center" prop="invoiceStatus">
<template slot-scope="scope">
<dict-tag :options="dict.type.batch_pay_order_invoice_status" :value="scope.row.invoiceStatus" />
</template>
</el-table-column>
<el-table-column label="可开票金额/元" align="center" prop="successAmount" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-s-order" v-show="showInvoiceButton(scope.row)"
v-hasPermi="['business:invoiceApply:apply']" @click="applyInvoice(scope.row)">申请开票</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
<el-dialog title="申请开票" :visible.sync="openApply" width="1000px">
<el-form ref="formApply" :model="formApply" :rules="rulesApply" label-width="130px">
<el-card shadow="hover" class="invoice-info-card">
<div>
<h3 class="title-bold" strong >开票金额</h3>
<el-divider></el-divider>
<el-row>
<el-col :span="24">
<el-form-item label="价税合计金额/元" prop="totalAmountTax">
<el-input v-model="formApply.totalAmountTax" placeholder="请输入价税合计金额/元" disabled/>
</el-form-item>
<el-form-item label="发票类型" prop="invoieType">
<el-radio-group v-model="formApply.invoieType">
<el-radio v-for="dict in dict.type.tax_invoice_type" :key="dict.value" :label="dict.value" >{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</div>
</el-card>
<el-card shadow="hover" class="invoice-info-card">
<div>
<h3 class="title-bold" strong >采购方信息</h3>
<el-divider></el-divider>
<!-- 采购企业选择 -->
<el-row>
<el-col :span="24">
<el-form-item label="采购方" prop="applyCompanyId">
<el-select v-model="formApply.applyCompanyId" placeholder="请选择采购方" clearable @change="applyCompanyChange">
<el-option v-for="item in applyCompanyList" :key="item.id" :label="item.companyName" :value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<p>名称:{{formApply.applyCompanyInvoice.invoiceTitle}}</p>
</el-col>
<el-col :span="8">
<p>纳税人识别号:{{formApply.applyCompanyInvoice.taxRegistrationNumber}}</p>
</el-col>
<el-col :span="8">
<p>开户银行:{{formApply.applyCompanyInvoice.bankName}}</p>
</el-col>
<el-col :span="8">
<p>开户账号:{{formApply.applyCompanyInvoice.bankAccount}}</p>
</el-col>
<el-col :span="8">
<p>地址:{{formApply.applyCompanyInvoice.address}}</p>
</el-col>
<el-col :span="8">
<p>电话:{{formApply.applyCompanyInvoice.phone}}</p>
</el-col>
</el-row>
</div>
</el-card>
<el-card shadow="hover" class="invoice-info-card">
<div>
<h3 class="title-bold" strong >销售方信息</h3>
<el-divider></el-divider>
<el-form-item label="销售方" prop="taxCompanyId">
<el-select v-model="formApply.taxCompanyId" placeholder="请选择销售方" clearable @change="taxCompanyChange">
<el-option v-for="item in taxCompanyList" :key="item.id" :label="item.taxUnitName" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-row>
<el-col :span="8">
<p>名称:{{formApply.taxCompanyInvoice.invoiceTitle}}</p>
</el-col>
<el-col :span="8">
<p>纳税人识别号:{{formApply.taxCompanyInvoice.taxRegistrationNumber}}</p>
</el-col>
<el-col :span="8">
<p>开户银行:{{formApply.taxCompanyInvoice.bankName}}</p>
</el-col>
<el-col :span="8">
<p>开户账号:{{formApply.taxCompanyInvoice.bankAccount}}</p>
</el-col>
<el-col :span="8">
<p>地址:{{formApply.taxCompanyInvoice.address}}</p>
</el-col>
<el-col :span="8">
<p>电话:{{formApply.taxCompanyInvoice.phone}}</p>
</el-col>
</el-row>
</div>
</el-card>
<!-- <el-card shadow="hover" class="invoice-info-card">
<div>
<h3 class="title-bold" strong >开票信息</h3>
<el-divider></el-divider>
<el-form-item label="价税合计金额/元" prop="invoiceTitle">
<el-input v-model="formApply.totalAmountTax" placeholder="请输入价税合计金额/元" disabled/>
</el-form-item>
<el-form-item label="发票类型">
<el-radio-group v-model="formApply.invoieType">
<el-radio v-for="dict in dict.type.tax_invoice_type" :key="dict.value" :label="dict.value" >{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="开票类目" prop="invoiceTitle">
<el-input v-model="formApply.invoiceTitle" placeholder="请输入发票抬头"/>
</el-form-item>
<el-form-item label="税率" prop="invoiceTitle">
<el-input v-model="formApply.invoiceTitle" placeholder="请输入税率"/>
</el-form-item>
<el-form-item label="税额" prop="invoiceTitle">
<el-input v-model="formApply.invoiceTitle" placeholder="请输入税额"/>
</el-form-item>
<el-form-item label="票面名称" prop="bankName">
<el-input v-model="formApply.bankName" placeholder="请输入票面名称" />
</el-form-item>
<el-form-item label="票面规格型号" prop="bankName">
<el-input v-model="formApply.bankName" placeholder="请输入票面规格型号" />
</el-form-item>
<el-form-item label="票面单位" prop="bankAccount">
<el-input v-model="formApply.bankAccount" placeholder="请输入票面单位" />
</el-form-item>
<el-form-item label="票面数量" prop="address">
<el-input v-model="formApply.address" placeholder="请输入票面数量"/>
</el-form-item>
<el-form-item label="票面备注" prop="phone">
<el-input v-model="formApply.phone" placeholder="请输入电话" />
</el-form-item>
</div>
</el-card>-->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitApply">确认申请开票</el-button>
<el-button @click="openApply = false">取消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { addPayOrder, doPay, listPayOrder, listPayOrderToInvoice } from '@/api/business/payOrder'
import RePay from '@/views/business/payDetail/rePay.vue'
import { listCompanyInfo } from '@/api/business/companyInfo'
import {
delInvoiceInfo,
getInfoByTaxUnitId,
getInvoiceInfo,
getInvoiceInfoByCompanyId
} from '@/api/business/invoiceInfo'
import { addApplyInvoice } from '@/api/business/invoiceApply'
import { querySignList } from '@/api/business/unitInfo'
export default {
name: "PayOrder",
components: { RePay },
dicts: ['pay_status', 'batch_pay_order_invoice_status', 'pay_type_title','tax_invoice_type'],
data() {
return {
//人力公司list
applyCompanyList: [],
//税源地公司
taxCompanyList: [],
rePayObj: {},
// 根路径
baseURL: process.env.VUE_APP_BASE_API,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 选中流水号数组
batchNos: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 批量支付表格数据
payOrderList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
batchPayName: null,
payerCompanyId: null,
payerAccName: null,
payerAccNo: null,
batchNo: null,
outBatchNo: null,
payTitle: null,
payRemark: null,
transactionTime: null,
totalCount: null,
totalAmount: null,
successCount: null,
failCount: null,
successAmount: null,
failAmount: null,
transFee: null,
payStatus: null,
voucher: null,
upateTime: null,
deptId: null,
},
//申请开票窗口
openApply: false,
// 表单参数
formApply: {
invoieType: 'NORMAL_TAX',
applyCompanyInvoice: {},
taxCompanyInvoice: {},
},
// 表单校验
rulesApply: {
applyCompanyId: [
{ required: true, message: "请选择采购方", trigger: "change" }
],
taxCompanyId: [
{ required: true, message: "请选择销售方", trigger: "change" }
],
totalAmountTax: [
{ required: true, message: "价税合计金额不能为空", trigger: "blur" }
],
invoieType: [
{ required: true, message: "请选择发票类型", trigger: "change" }
]
}
};
},
created() {
this.getList();
this.getListgetCompanyList(1);
// this.getListgetCompanyList(2);
},
methods: {
//获取企业信息数据
getListgetCompanyList(bindType) {
this.loading = true;
const queryParams = {
bindType: bindType,
pageNum: 1,
pageSize: 1000
}
listCompanyInfo(queryParams).then(response => {
if (bindType == 1) {
this.applyCompanyList = response.rows;
}else if (bindType == 2) {
this.taxCompanyList = response.rows;
}
this.loading = false;
});
},
//查询合作机构list
queryTaxCompanyList(applyCompanyId){
const queryParams = {
inviterId: applyCompanyId,
signStatus: 2,
pageNum: 1,
pageSize: 1000
}
querySignList(queryParams).then(response => {
if (response.code == 200) {
this.taxCompanyList = response.rows;
}
})
},
/** 查询批量支付列表 */
getList() {
this.loading = true;
listPayOrderToInvoice(this.queryParams).then(response => {
this.payOrderList = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.batchNos = selection.map(item => item.batchNo)
this.single = selection.length!==1
this.multiple = !selection.length
console.log(this.ids);
console.log(this.batchNos);
},
/** 导出按钮操作 */
handleExport() {
this.download('business/payOrder/export', {
...this.queryParams
}, `payOrder_${new Date().getTime()}.xlsx`)
},
viewDetail(row) {
this.$router.push({ path: "/business/payDetails", query: { orderId: row.id, batchNo: row.batchNo } });
},
// 判断是否显示开票按钮
showInvoiceButton(row) {
let invoicueFlag = false;
let payFlag = false;
//未开票 或 开票失败
if (row.invoiceStatus === 1 || row.invoiceStatus === 3) {
invoicueFlag = true;
}
// 支付成功 或 部分成功
if (row.payStatus === 3 || row.payStatus === 5) {
payFlag = true;
}
return (invoicueFlag && payFlag);
},
// 申请开票
applyInvoice(row) {
this.openApply = true;
this.formApply.totalAmountTax = row.successAmount;
this.formApply.batchPayIds =[row.id];
this.formApply.batchPayOrderIds = row.id;
console.log(this.formApply);
return;
},
//采购方选择
applyCompanyChange(val) {
this.loading = true;
this.formApply.applyCompanyInvoice = {};
this.applyCompanyList.forEach(item => {
if (item.id == val) {
this.formApply.applyCompanyName = item.companyName;
getInvoiceInfoByCompanyId(val).then(response => {
this.formApply.applyCompanyInvoice = response.data;
//查询合作机构list
this.queryTaxCompanyList(val);
this.loading = false;
}).finally(() => {
this.loading = false;
});
}
})
},
//销售方选择
taxCompanyChange(val) {
this.formApply.taxCompanyInvoice = {};
this.taxCompanyList.forEach(item => {
if (item.id == val) {
this.formApply.taxCompanyName = item.taxUnitName;
getInfoByTaxUnitId(val).then(response => {
this.formApply.taxCompanyInvoice = response.data;
this.loading = false;
}).finally(() => {
this.loading = false;
});
}
})
},
//确认申请开票
submitApply() {
this.$refs.formApply.validate(valid => {
if (valid) {
this.loading = true;
this.$confirm('是否确认申请开票?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
addApplyInvoice(this.formApply).then(response => {
this.loading = false;
if (response.code == 200) {
this.$message.success('申请开票成功!');
this.openApply = false;
this.getList();
} else {
this.$message.error(response.msg);
}
})
})
}
}).finally(() => {
this.loading = false;
});
},
// 批量申请开票
batchApplyInvoice(row) {
const ids = row.id || this.ids;
const batchNos = row.batchNo || this.batchNos;
this.$confirm('是否确认为流水号[' + batchNos + ']的数据项申请开票?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.openApply = true;
//ids转字符串,逗号隔开
this.formApply.batchPayIds = ids;
this.formApply.batchPayOrderIds = ids.join(',');
const selectItemList = this.payOrderList.filter(item => ids.includes(item.id));
let sumSuccessAmount = 0;
selectItemList.forEach(item => {
sumSuccessAmount += Number(item.successAmount);
});
this.formApply.totalAmountTax = sumSuccessAmount;
})
},
}
};
</script>
<style scoped lang="scss">
.dialogIp ::v-deep {
.el-dialog__body {
padding: 0 !important;
}
}
.invoice-info-card {
margin-bottom: 10px;
}
.title-bold {
text-align: left;
font-weight: bold;
}
</style>
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="80px">
<el-form-item label="申请开票信息id" prop="applyId">
<el-input
v-model="queryParams.applyId"
placeholder="请输入申请开票信息id"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="标题" prop="title">
<el-input
v-model="queryParams.title"
placeholder="请输入标题"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="操作时间" prop="operateTime">
<el-date-picker clearable
v-model="queryParams.operateTime"
type="date"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择操作时间">
</el-date-picker>
</el-form-item>
<el-form-item label="操作方" prop="operateCompany">
<el-input
v-model="queryParams.operateCompany"
placeholder="请输入操作方"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="操作用户" prop="operateUsername">
<el-input
v-model="queryParams.operateUsername"
placeholder="请输入操作用户"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="操作用户id" prop="operateUserid">
<el-input
v-model="queryParams.operateUserid"
placeholder="请输入操作用户id"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input
v-model="queryParams.sort"
placeholder="请输入排序"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['business:invoiceApplyLog:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['business:invoiceApplyLog:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['business:invoiceApplyLog:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['business:invoiceApplyLog:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="invoiceApplyLogList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键id" align="center" prop="id" />
<el-table-column label="申请开票信息id" align="center" prop="applyId" />
<el-table-column label="标题" align="center" prop="title" />
<el-table-column label="操作时间" align="center" prop="operateTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.operateTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作方" align="center" prop="operateCompany" />
<el-table-column label="操作用户" align="center" prop="operateUsername" />
<el-table-column label="操作用户id" align="center" prop="operateUserid" />
<el-table-column label="排序" align="center" prop="sort" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['business:invoiceApplyLog:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['business:invoiceApplyLog:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改发票日志对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="申请开票信息id" prop="applyId">
<el-input v-model="form.applyId" placeholder="请输入申请开票信息id" />
</el-form-item>
<el-form-item label="标题" prop="title">
<el-input v-model="form.title" placeholder="请输入标题" />
</el-form-item>
<el-form-item label="操作时间" prop="operateTime">
<el-date-picker clearable
v-model="form.operateTime"
type="date"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择操作时间">
</el-date-picker>
</el-form-item>
<el-form-item label="操作方" prop="operateCompany">
<el-input v-model="form.operateCompany" placeholder="请输入操作方" />
</el-form-item>
<el-form-item label="操作用户" prop="operateUsername">
<el-input v-model="form.operateUsername" placeholder="请输入操作用户" />
</el-form-item>
<el-form-item label="操作用户id" prop="operateUserid">
<el-input v-model="form.operateUserid" placeholder="请输入操作用户id" />
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input v-model="form.sort" placeholder="请输入排序" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listInvoiceApplyLog, getInvoiceApplyLog, delInvoiceApplyLog, addInvoiceApplyLog, updateInvoiceApplyLog } from "@/api/business/invoiceApplyLog";
export default {
name: "InvoiceApplyLog",
data() {
return {
// 根路径
baseURL: process.env.VUE_APP_BASE_API,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 发票日志表格数据
invoiceApplyLogList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
applyId: null,
title: null,
operateTime: null,
operateCompany: null,
operateUsername: null,
operateUserid: null,
sort: null
},
// 表单参数
form: {},
// 表单校验
rules: {
id: [
{ required: true, message: "主键id不能为空", trigger: "blur" }
],
applyId: [
{ required: true, message: "申请开票信息id不能为空", trigger: "blur" }
],
title: [
{ required: true, message: "标题不能为空", trigger: "blur" }
],
operateTime: [
{ required: true, message: "操作时间不能为空", trigger: "blur" }
],
operateCompany: [
{ required: true, message: "操作方不能为空", trigger: "blur" }
],
operateUsername: [
{ required: true, message: "操作用户不能为空", trigger: "blur" }
],
operateUserid: [
{ required: true, message: "操作用户id不能为空", trigger: "blur" }
],
sort: [
{ required: true, message: "排序不能为空", trigger: "blur" }
]
}
};
},
created() {
this.getList();
},
methods: {
/** 查询发票日志列表 */
getList() {
this.loading = true;
listInvoiceApplyLog(this.queryParams).then(response => {
this.invoiceApplyLogList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
id: null,
applyId: null,
title: null,
operateTime: null,
operateCompany: null,
operateUsername: null,
operateUserid: null,
sort: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加发票日志";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getInvoiceApplyLog(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改发票日志";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateInvoiceApplyLog(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addInvoiceApplyLog(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除发票日志编号为"' + ids + '"的数据项?').then(function() {
return delInvoiceApplyLog(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('business/invoiceApplyLog/export', {
...this.queryParams
}, `invoiceApplyLog_${new Date().getTime()}.xlsx`)
}
}
};
</script>
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<!-- <el-form-item label="企业id" prop="companyId">-->
<!-- <el-input-->
<!-- v-model="queryParams.companyId"-->
<!-- placeholder="请输入企业id"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- 企业下下拉选择 -->
<el-form-item label="企业" prop="companyId">
<el-select v-model="queryParams.companyId" placeholder="请选择企业" clearable>
<el-option v-for="item in companyInfoList" :key="item.id" :label="item.companyName" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="税务登记证号" prop="taxRegistrationNumber">
<el-input
v-model="queryParams.taxRegistrationNumber"
placeholder="请输入税务登记证号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="受票类型" prop="invoiceType">
<el-select v-model="queryParams.invoiceType" placeholder="请选择收票类型" clearable>
<el-option v-for="item in dict.type.tax_invoice_type" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker
v-model="daterangeCreateTime"
style="width: 240px"
value-format="yyyy-MM-dd HH:mm:ss"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['business:invoiceInfo:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['business:invoiceInfo:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['business:invoiceInfo:remove']"
>删除</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="warning"-->
<!-- icon="el-icon-download"-->
<!-- size="mini"-->
<!-- @click="handleExport"-->
<!-- v-hasPermi="['business:invoiceInfo:export']"-->
<!-- >导出</el-button>-->
<!-- </el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="invoiceInfoList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="企业名称" align="center" prop="companyName" />
<el-table-column label="发票抬头" align="center" prop="invoiceTitle" />
<el-table-column label="税务登记证号" align="center" prop="taxRegistrationNumber" />
<el-table-column label="开户行" align="center" prop="bankName" />
<el-table-column label="开户账号" align="center" prop="bankAccount" />
<el-table-column label="地址" align="center" prop="address" />
<el-table-column label="电话" align="center" prop="phone" />
<el-table-column label="受票类型" align="center" prop="invoiceType">
<template slot-scope="scope">
<dict-tag :options="dict.type.tax_invoice_type" :value="scope.row.invoiceType"/>
</template>
</el-table-column>
<!-- <el-table-column label="默认发票" align="center" prop="defaultFlag">-->
<!-- <template slot-scope="scope">-->
<!-- <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.defaultFlag"/>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['business:invoiceInfo:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['business:invoiceInfo:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改开票信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<!-- 企业信息下拉框 -->
<el-form-item label="企业信息" prop="companyId">
<el-select v-model="form.companyId" placeholder="请选择企业信息" style="width: 100%;" @change="companyChange">
<el-option v-for="item in companyInfoList" :key="item.id" :label="item.companyName" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="发票抬头" prop="invoiceTitle">
<el-input v-model="form.invoiceTitle" placeholder="请输入发票抬头" disabled/>
</el-form-item>
<el-form-item label="税务登记证号" prop="taxRegistrationNumber">
<el-input v-model="form.taxRegistrationNumber" placeholder="请输入税务登记证号" disabled/>
</el-form-item>
<el-form-item label="开户行" prop="bankName">
<el-input v-model="form.bankName" placeholder="请输入开户行" />
</el-form-item>
<el-form-item label="开户账号" prop="bankAccount">
<el-input v-model="form.bankAccount" placeholder="请输入开户账号" />
</el-form-item>
<el-form-item label="地址" prop="address">
<el-input v-model="form.address" placeholder="请输入地址" />
</el-form-item>
<el-form-item label="电话" prop="phone">
<el-input v-model="form.phone" placeholder="请输入电话" />
</el-form-item>
<el-form-item label="受票类型">
<el-radio-group v-model="form.invoiceType">
<el-radio v-for="dict in dict.type.tax_invoice_type" :key="dict.value" :label="dict.value" >{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
<!-- <el-form-item label="默认发票">-->
<!-- <el-radio-group v-model="form.defaultFlag">-->
<!-- <el-radio v-for="dict in dict.type.sys_user_sex" :key="dict.value" :label="parseInt(dict.value)" >{{dict.label}}</el-radio>-->
<!-- </el-radio-group>-->
<!-- </el-form-item>-->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listInvoiceInfo, getInvoiceInfo, delInvoiceInfo, addInvoiceInfo, updateInvoiceInfo } from "@/api/business/invoiceInfo";
import { listCompanyInfo } from '@/api/business/companyInfo'
export default {
name: "InvoiceInfo",
dicts: ['sys_user_sex' , 'tax_invoice_type'],
data() {
return {
// 企业信息
companyInfoList: [],
// 根路径
baseURL: process.env.VUE_APP_BASE_API,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 开票信息表格数据
invoiceInfoList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 是否默认发票:1是 0否时间范围
daterangeCreateTime: [],
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
companyId: null,
companyName: null,
invoiceTitle: null,
taxRegistrationNumber: null,
createTime: null,
},
// 表单参数
form: {},
// 表单校验
rules: {
id: [
{ required: true, message: "主键id不能为空", trigger: "blur" }
],
deptId: [
{ required: true, message: "部门id不能为空", trigger: "blur" }
],
companyId: [
{ required: true, message: "企业id不能为空", trigger: "blur" }
],
companyName: [
{ required: true, message: "企业名称不能为空", trigger: "blur" }
],
invoiceTitle: [
{ required: true, message: "发票抬头不能为空", trigger: "blur" }
],
taxRegistrationNumber: [
{ required: true, message: "税务登记证号不能为空", trigger: "blur" }
],
bankName: [
{ required: true, message: "开户行不能为空", trigger: "blur" }
],
bankAccount: [
{ required: true, message: "开户账号不能为空", trigger: "blur" },
{
pattern: /^[1-9]{1}[0-9]{14}$|^[1-9]{1}[0-9]{16}([0-9]|[xX])$/,
message: "请输入正确的开户账号",
trigger: "blur"
}
],
address: [
{ required: true, message: "地址不能为空", trigger: "blur" }
],
phone: [
{ required: true, message: "电话不能为空", trigger: "blur" },
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号码",
trigger: "blur"
}
],
invoiceType: [
{ required: true, message: "类型:VALUE_ADDED_TAX增值税专用发票 NORMAL_TAX增值税普通发票不能为空", trigger: "change" }
],
defaultFlag: [
{ required: true, message: "是否默认发票:1是 0否不能为空", trigger: "blur" }
],
}
};
},
created() {
this.getList();
this.getListgetCompanyList();
},
methods: {
/** 查询开票信息列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
if (null != this.daterangeCreateTime && '' != this.daterangeCreateTime) {
this.queryParams.params["beginCreateTime"] = this.daterangeCreateTime[0];
this.queryParams.params["endCreateTime"] = this.daterangeCreateTime[1];
}
listInvoiceInfo(this.queryParams).then(response => {
this.invoiceInfoList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
id: null,
deptId: null,
companyId: null,
companyName: null,
invoiceTitle: null,
taxRegistrationNumber: null,
bankName: null,
bankAccount: null,
address: null,
phone: null,
// invoiceType: 'VALUE_ADDED_TAX',
invoiceType: 'NORMAL_TAX',
defaultFlag: 0,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.daterangeCreateTime = [];
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加开票信息";
// this.getListgetCompanyList();
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getInvoiceInfo(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改开票信息";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateInvoiceInfo(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addInvoiceInfo(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除开票信息编号为"' + ids + '"的数据项?').then(function() {
return delInvoiceInfo(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('business/invoiceInfo/export', {
...this.queryParams
}, `invoiceInfo_${new Date().getTime()}.xlsx`)
},
//获取企业信息数据
getListgetCompanyList() {
this.loading = true;
const queryParams = {
bindType: '1',
pageNum: 1,
pageSize: 1000
}
listCompanyInfo(queryParams).then(response => {
this.companyInfoList = response.rows;
this.loading = false;
});
},
companyChange(val) {
console.log(val)
this.companyInfoList.forEach(item => {
if (item.id == val) {
console.log(item)
this.form.companyId = item.id;
this.form.companyName = item.companyName;
this.form.invoiceTitle = item.companyName;
this.form.taxRegistrationNumber = item.companyCode;
}
})
}
}
};
</script>
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="auto">
<el-form-item label="任务编号" prop="taskNo">
<el-input
v-model="queryParams.taskNo"
placeholder="请输入任务编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="任务名称" prop="taskName">
<el-input
v-model="queryParams.taskName"
placeholder="请输入任务名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="发起企业名称" prop="companyName">
<el-input
v-model="queryParams.companyName"
placeholder="请输入发起企业名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="代发企业名称" prop="taxCompanyName">
<el-input
v-model="queryParams.taxCompanyName"
placeholder="请输入代发企业名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="发布时间">
<el-date-picker
v-model="daterangeReleaseTime"
style="width: 240px"
value-format="yyyy-MM-dd HH:mm:ss"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['business:onlineTaskInfo:add']"
>发布任务</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['business:onlineTaskInfo:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['business:onlineTaskInfo:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['business:onlineTaskInfo:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="onlineTaskInfoList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="任务编号" align="center" prop="taskNo" />
<el-table-column label="任务名称" align="center" prop="taskName" />
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.task_status" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="所属行业" align="center" prop="industry" />
<el-table-column label="发起企业名称" align="center" prop="companyName" />
<el-table-column label="代发企业名称" align="center" prop="taxCompanyName" />
<el-table-column label="所在区域" align="center" prop="area" />
<!-- <el-table-column label="详细地址" align="center" prop="address" />-->
<el-table-column label="服务时间" align="center" prop="serviceTime"/>
<el-table-column label="零工人数" align="center" prop="needNum" />
<!-- <el-table-column label="计费说明" align="center" prop="billDesc" />-->
<!-- <el-table-column label="计费详情" align="center" prop="billDetail" />-->
<el-table-column label="发布时间" align="center" prop="releaseTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.releaseTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-view"
@click="prviewPdfUrl(scope.row)"
>查看合同</el-button>
<el-button
v-if="scope.row.status == 10"
size="mini"
type="text"
icon="el-icon-s-promotion"
v-hasPermi="['business:onlineTaskInfo:release']"
@click="handleRelease(scope.row)"
>发布任务</el-button>
<el-button
v-if="scope.row.status == 11"
size="mini"
type="text"
icon="el-icon-s-promotion"
v-hasPermi="['business:onlineTaskInfo:recived']"
@click="handleRecived(scope.row)"
>接收任务</el-button>
<el-button
v-if="scope.row.status == 21"
size="mini"
type="text"
icon="el-icon-upload"
v-hasPermi="['business:onlineTaskInfo:importPayInfo']"
@click="importPayInfo(scope.row)"
>导入名单</el-button>
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['business:onlineTaskInfo:edit']"-->
<!-- >修改</el-button>-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['business:onlineTaskInfo:remove']"-->
<!-- >删除</el-button>-->
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改线上任务信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-steps :active="active" finish-status="success" simple style="margin-top: 20px">
<el-step title="1、基础信息" ></el-step>
<el-step title="2、确认合同" ></el-step>
</el-steps>
<div style="margin-top: 20px;" v-if="active == 1">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item label="任务编号" prop="taskNo">
<el-input v-model="form.taskNo" placeholder="请输入任务编号" />
</el-form-item>
<el-form-item label="发起企业" prop="companyId">
<el-select v-model="form.companyId" placeholder="请选择采购方" clearable @change="applyCompanyChange">
<el-option v-for="item in applyCompanyList" :key="item.id" :label="item.companyName" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="任务名称" prop="taskName">
<el-input v-model="form.taskName" placeholder="请输入任务名称" />
</el-form-item>
<el-form-item label="所属行业" prop="industry">
<el-input v-model="form.industry" placeholder="请输入所属行业" />
</el-form-item>
<el-form-item label="代发企业" prop="taxCompanyId">
<el-select v-model="form.taxCompanyId" placeholder="请选择销售方" clearable @change="taxCompanyChange">
<el-option v-for="item in taxCompanyList" :key="item.id" :label="item.taxUnitName" :value="item.id"></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="地区code" prop="araeCode">-->
<!-- <el-input v-model="form.araeCode" placeholder="请输入地区code" />-->
<!-- </el-form-item>-->
<el-form-item label="所在区域" prop="area">
<el-input v-model="form.area" placeholder="请输入所在区域" />
</el-form-item>
<!-- <el-form-item label="详细地址" prop="address">-->
<!-- <el-input v-model="form.address" placeholder="请输入详细地址" />-->
<!-- </el-form-item>-->
<el-form-item label="服务时间" prop="serviceTime">
<el-date-picker
clearable
placeholder="请选择服务时间"
v-model="form.serviceTimeArr"
@change="changeServiceTime"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="零工人数" prop="needNum">
<el-input v-model="form.needNum" type="number" placeholder="请输入零工人数" />
</el-form-item>
<el-form-item label="计费说明" prop="billDesc">
<el-input v-model="form.billDesc" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="计费详情" prop="billDetail">
<el-input v-model="form.billDetail" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="任务备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入任务备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleNext(10)">下一步</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</div>
<div class="demo-form" v-if="active == 2">
<!-- TODO 待优化 pdf预览 -->
<div style="margin: 20px;padding: 20px;">
<el-button type="success" @click="handleLook">查看合同</el-button>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handlePrev">上一步</el-button>
<el-button type="primary" @click="submitFormUp(10)">提 交</el-button>
<el-button type="primary" @click="submitFormUp(11)">提交并发布</el-button>
</div>
</div>
</el-dialog>
<!-- 导入名单对话框 -->
<el-dialog title="导入名单选择" :visible.sync="payVisible" width="38%" center>
<div class="salarySelectionStyle">
<div class="salarySelectionMain" @click="toLinkBankCard">
<div class="salarySelectionImageDiv">
<img class="salarySelectionImage" src="../../../assets/images/yhk.png" alt="">
</div>
<p class="salarySelectionText">批量到银行卡</p>
</div>
<div class="salarySelectionMain" @click="toLinkAlipay">
<div class="salarySelectionImageDiv">
<img class="salarySelectionImage" src="../../../assets/images/zfb.png" alt="">
</div>
<p class="salarySelectionText">批量到支付宝</p>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listOnlineTaskInfo,
getOnlineTaskInfo,
delOnlineTaskInfo,
addOnlineTaskInfo,
updateOnlineTaskInfo,
addOnlineTaskInfoFirst, addOnlineTaskInfoSecond, updateStatus
} from '@/api/business/onlineTaskInfo'
import { listCompanyInfo } from '@/api/business/companyInfo'
import { getInvoiceInfoByCompanyId } from '@/api/business/invoiceInfo'
import { querySignList } from '@/api/business/unitInfo'
export default {
name: "OnlineTaskInfo",
dicts: ['task_status'],
data() {
return {
// 任务名称
batchPayName : '',
// 支付方式
payType: '',
payVisible: false,
// 合同url
contractUrl: 'https://files.openbanks.cn/07/E3/rB7J6GdfiJqABWEzAAGKBP4eDZU392.pdf',
// 步骤条
active: 1,
//人力公司list
applyCompanyList: [],
//税源地公司
taxCompanyList: [],
// 根路径
baseURL: process.env.VUE_APP_BASE_API,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 线上任务信息表格数据
onlineTaskInfoList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 发布时间时间范围
daterangeReleaseTime: [],
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
taskNo: null,
taskName: null,
status: null,
companyId: null,
companyName: null,
taxCompanyId: null,
taxCompanyName: null,
araeCode: null,
area: null,
releaseTime: null,
},
// 表单参数
form: {
serviceTimeArr: [],
},
// 表单校验
rules: {
id: [
{ required: true, message: "不能为空", trigger: "blur" }
],
deptId: [
{ required: true, message: "部门id不能为空", trigger: "blur" }
],
taskNo: [
{ required: true, message: "任务编号不能为空", trigger: "blur" }
],
taskName: [
{ required: true, message: "任务名称不能为空", trigger: "blur" }
],
status: [
{ required: true, message: "状态不能为空", trigger: "blur" }
],
industry: [
{ required: true, message: "所属行业不能为空", trigger: "blur" }
],
companyId: [
{ required: true, message: "发起企业id不能为空", trigger: "blur" }
],
companyName: [
{ required: true, message: "发起企业名称不能为空", trigger: "blur" }
],
taxCompanyId: [
{ required: true, message: "代发企业id不能为空", trigger: "blur" }
],
taxCompanyName: [
{ required: true, message: "代发企业名称不能为空", trigger: "blur" }
],
araeCode: [
{ required: true, message: "地区code不能为空", trigger: "blur" }
],
area: [
{ required: true, message: "所在区域不能为空", trigger: "blur" }
],
address: [
{ required: true, message: "详细地址不能为空", trigger: "blur" }
],
serviceTime: [
{ required: true, message: "服务时间不能为空", trigger: "blur" }
],
serviceTimeStart: [
{ required: true, message: "服务时间-开始不能为空", trigger: "blur" }
],
serviceTimeEnd: [
{ required: true, message: "服务时间-结束不能为空", trigger: "blur" }
],
needNum: [
{ required: true, message: "零工人数不能为空", trigger: "blur" }
],
billDesc: [
{ required: true, message: "计费说明不能为空", trigger: "blur" }
],
billDetail: [
{ required: true, message: "计费详情不能为空", trigger: "blur" }
],
reason: [
{ required: true, message: "拒绝原因不能为空", trigger: "blur" }
],
// remark: [
// { required: true, message: "任务备注不能为空", trigger: "blur" }
// ],
contactName: [
{ required: true, message: "合同名称不能为空", trigger: "blur" }
],
contractUrl: [
{ required: true, message: "合同地址不能为空", trigger: "blur" }
],
batchPayOrderId: [
{ required: true, message: "关联批量支付id不能为空", trigger: "blur" }
],
releaseTime: [
{ required: true, message: "发布时间不能为空", trigger: "blur" }
],
}
};
},
created() {
this.getList();
this.getListgetCompanyList(1);
// this.getListgetCompanyList(2);
},
methods: {
//获取企业信息数据
getListgetCompanyList(bindType) {
this.loading = true;
const queryParams = {
bindType: bindType,
pageNum: 1,
pageSize: 1000
}
listCompanyInfo(queryParams).then(response => {
if (bindType == 1) {
this.applyCompanyList = response.rows;
}else if (bindType == 2) {
this.taxCompanyList = response.rows;
}
this.loading = false;
});
},
//查询合作机构list
queryTaxCompanyList(applyCompanyId){
const queryParams = {
inviterId: applyCompanyId,
signStatus: 2,
pageNum: 1,
pageSize: 1000
}
querySignList(queryParams).then(response => {
if (response.code == 200) {
this.taxCompanyList = response.rows;
}
})
},
/** 查询线上任务信息列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
if (null != this.daterangeReleaseTime && '' != this.daterangeReleaseTime) {
this.queryParams.params["beginReleaseTime"] = this.daterangeReleaseTime[0];
this.queryParams.params["endReleaseTime"] = this.daterangeReleaseTime[1];
}
listOnlineTaskInfo(this.queryParams).then(response => {
this.onlineTaskInfoList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
id: null,
deptId: null,
taskNo: null,
taskName: null,
status: "0",
industry: null,
companyId: null,
companyName: null,
taxCompanyId: null,
taxCompanyName: null,
araeCode: null,
area: null,
address: null,
serviceTime: null,
serviceTimeStart: null,
serviceTimeEnd: null,
needNum: null,
billDesc: null,
billDetail: null,
reason: null,
remark: null,
contactName: null,
contractUrl: null,
batchPayOrderId: null,
releaseTime: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.daterangeReleaseTime = [];
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加线上任务信息";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getOnlineTaskInfo(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改线上任务信息";
});
},
/** 提交按钮 */
submitForm() {
console.log(this.form)
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateOnlineTaskInfo(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addOnlineTaskInfo(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
submitFormUp(status) {
// console.log(this.form)
this.form.status = status;
addOnlineTaskInfoSecond(this.form).then(response => {
this.open = false;
this.getList();
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除线上任务信息编号为"' + ids + '"的数据项?').then(function() {
return delOnlineTaskInfo(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('business/onlineTaskInfo/export', {
...this.queryParams
}, `onlineTaskInfo_${new Date().getTime()}.xlsx`)
},
//采购方选择
applyCompanyChange(val) {
this.loading = true;
this.form.companyInvoice = {};
this.applyCompanyList.forEach(item => {
if (item.id == val) {
this.form.companyName = item.companyName;
//查询合作机构list
this.queryTaxCompanyList(val);
}
})
},
//销售方选择
taxCompanyChange(val) {
this.form.taxCompanyInvoice = {};
this.taxCompanyList.forEach(item => {
if (item.id == val) {
this.formApply.taxCompanyName = item.taxUnitName;
}
})
},
changeServiceTime(val) {
this.form.serviceTime = val[0] + '~' + val[1];
this.form.serviceTimeStart = val[0];
this.form.serviceTimeEnd = val[1];
},
//上一步
handlePrev() {
this.active = 1;
},
//下一步
handleNext(status) {
console.log(this.form)
this.$refs["form"].validate(valid => {
if (valid) {
this.form.status = status;
addOnlineTaskInfoFirst(this.form).then(response => {
if (response.code == 200) {
this.contractUrl = response.data.contractUrl;
this.form = response.data;
this.active = 2;
}
});
}
});
},
//查看合同
handleLook() {
console.log(this.contractUrl)
if (this.contractUrl) {
window.open(this.contractUrl, '_blank');
} else {
this.$message.warning('合同URL无效');
}
},
//发布任务
handleRelease(row) {
this.$confirm('是否确认发布任务?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const obj = { id: row.id, status: 11 }
updateStatus(obj).then(response => {
if (response.code == 200) {
this.$modal.msgSuccess("发布成功");
this.getList();
}
})
}).catch(() => {});
},
//接收任务
handleRecived(row) {
this.$confirm('是否确认接收任务?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const obj = { id: row.id, status: 21 }
updateStatus(obj).then(response => {
if (response.code == 200) {
this.$modal.msgSuccess("接收成功");
this.getList();
}
})
}).catch(() => {});
},
//查看合同
prviewPdfUrl(row) {
if (row.contractUrl) {
window.open(row.contractUrl, '_blank');
} else {
this.$message.warning('合同URL无效');
}
},
// 导入名单
importPayInfo(row) {
this.payVisible = true;
this.batchPayName = "发包任务-"+row.taskName+"-"+row.id;
console.log(this.batchPayName)
},
// 跳转到批量到支付宝
toLinkAlipay() {
console.log(this.batchPayName)
this.$router.push({ path: "/transfer/batchToAli", query: { batchPayName: this.batchPayName,number:123 } });
this.payVisible = false
},
// 跳转到批量到银行卡
toLinkBankCard() {
console.log(this.batchPayName)
this.$router.push({ path: "/transfer/batchToBank", query: { batchPayName: this.batchPayName,number:123 } });
this.payVisible = false
},
}
};
</script>
<style lang="scss" scoped>
.app-container ::v-deep {
// 表单部分样式
.formMain {
padding-left: 12px;
// 操作按钮样式
.buttonOperate {
text-align: right;
padding-right: 20px;
}
}
// 卡片样式
.box-card {
margin-top: 12px;
// 公司信息部分样式
.companyConterMain {
width: 100%;
height: 140px;
display: flex;
align-items: center;
justify-content: space-between;
// 公司图标样式
.enterpriseImageMain {
width: 200px;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
.enterpriseImage {
width: 120px;
height: 68px;
}
}
// 公司信息内容部分样式
.companyConterInformation {
width: calc(100% - 180px);
height: 90%;
display: flex;
flex-direction: column;
flex-wrap: wrap;
align-content: center;
justify-content: space-evenly;
}
}
// 操作按钮部分样式
.operateConterMain {
width: 90%;
height: 120px;
display: flex;
flex-direction: column;
flex-wrap: wrap;
align-content: center;
justify-content: space-evenly;
}
}
// 去发薪-发薪选择对话框样式
.salarySelectionStyle {
width: 90%;
margin: 0 auto;
height: 200px;
display: flex;
justify-content: space-evenly;
align-items: center;
.salarySelectionMain {
width: 40%;
height: 90%;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
background-color: rgba(117, 190, 245, .1);
border-radius: 12px;
padding: 12px;
.salarySelectionImageDiv {
width: 100%;
display: flex;
align-items: center;
justify-content: center;
.salarySelectionImage {
width: 120px;
height: 120px;
z-index: 9999;
}
}
.salarySelectionText {
text-align: center;
width: 100%;
font-size: 18px;
font-weight: bold;
}
}
}
// 自有充值选中对话框样式-选择充值方式
.ownRechargeMain {
height: 160px;
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: space-around;
align-content: center;
.ownRechargeImage {
width: 100px;
height: 100px;
}
.ownRechargeButton {
width: 32%;
border-radius: 16px;
}
}
}
</style>
......@@ -264,6 +264,9 @@ export default {
this.defaultPayerAccNo = String(this.$route.query.number)
this.batchForm.payerAccNo = String(this.$route.query.number)
}
if (this.$route.query.batchPayName) {
this.batchForm.batchPayName = this.$route.query.batchPayName;
}
},
methods: {
// 新增明细
......
......@@ -5,7 +5,7 @@
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="业务名称" prop="batchPayName">
<el-input v-model="batchForm.batchPayName" placeholder="请输入业务名称" />
<el-input v-model="batchForm.batchPayName" placeholder="请输入业务名称"/>
</el-form-item>
</el-col>
<el-col :span="8">
......@@ -185,6 +185,9 @@ export default {
dicts: ['pay_type_title', 'payee_acc_type'],
data() {
return {
//发包任务名称
defaultBatchPayName: null,
page: {
search: '',
rows: [],
......@@ -263,6 +266,10 @@ export default {
this.defaultPayerAccNo = String(this.$route.query.number)
this.batchForm.payerAccNo = String(this.$route.query.number)
}
if (this.$route.query.batchPayName) {
this.defaultBatchPayName = this.$route.query.batchPayName;
this.batchForm.batchPayName = this.$route.query.batchPayName;
}
},
methods: {
chaheuhashjs() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment