Commit c2e447c1 authored by 许珑标's avatar 许珑标

开票人信息、开票申请

parent 0d2a1dc9
...@@ -83,3 +83,12 @@ export function updateInvoiceStatus(data) { ...@@ -83,3 +83,12 @@ export function updateInvoiceStatus(data) {
data: data data: data
}) })
} }
// 通过外部付款卡号获取销售方开票信息
export function getSellerInvoiceInfo(cardNo) {
return request({
url: `/business/laborSign/getSellerInvoiceInfo/${cardNo}`,
method: 'get',
})
}
import request from '@/utils/request'
// 查询办税人信息列表
export function listLoginUser(query) {
return request({
url: '/business/loginUser/list',
method: 'get',
params: query
})
}
// 查询办税人信息所有列表
export function listAllLoginUser(query) {
return request({
url: '/business/loginUser/listAll',
method: 'get',
params: query
})
}
// 查询办税人信息详细
export function getLoginUser(id) {
return request({
url: '/business/loginUser/getInfo/' + id,
method: 'get'
})
}
// 新增办税人信息
export function addLoginUser(data) {
return request({
url: '/business/loginUser/add',
method: 'post',
data: data
})
}
// 修改办税人信息
export function updateLoginUser(data) {
return request({
url: '/business/loginUser/edit',
method: 'post',
data: data
})
}
// 删除办税人信息
export function delLoginUser(id) {
return request({
url: '/business/loginUser/remove/' + id,
method: 'get'
})
}
...@@ -201,6 +201,7 @@ export default { ...@@ -201,6 +201,7 @@ export default {
/** 查询付款主体信息列表 */ /** 查询付款主体信息列表 */
getList() { getList() {
this.loading = true; this.loading = true;
this.queryParams.bindType = 1
listCompanyInfo(this.queryParams).then(response => { listCompanyInfo(this.queryParams).then(response => {
this.companyInfoList = response.rows; this.companyInfoList = response.rows;
this.total = response.total; this.total = response.total;
......
...@@ -155,6 +155,13 @@ ...@@ -155,6 +155,13 @@
v-hasPermi="['business:invoiceApply:uploadInvoiceFile']" v-hasPermi="['business:invoiceApply:uploadInvoiceFile']"
@click="uploadInvoiceDailog(scope.row)" @click="uploadInvoiceDailog(scope.row)"
>上传发票</el-button> >上传发票</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-s-help"
v-hasPermi="['business:invoiceApply:uploadInvoiceFile']"
@click="onlineInvoice(scope.row)"
>一键开票</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
...@@ -426,7 +433,18 @@ ...@@ -426,7 +433,18 @@
<el-button @click="uploadInvoiceOpen = false">取 消</el-button> <el-button @click="uploadInvoiceOpen = false">取 消</el-button>
</span> </span>
</el-dialog> </el-dialog>
<!-- 一键发票对话框 -->
<el-dialog title="上传发票" :visible.sync="onlineInvoiceForm.panel">
<el-form :model="onlineInvoiceForm" ref="onlineInvoiceForm" size="small" label-width="100px">
<el-select v-model="onlineInvoiceForm.taxpayerId" placeholder="请选择开票员" clearable>
<el-option v-for="item in taxpayerList" :key="item.loginUserIdCard" :label="item.loginName" :value="item.id" />
</el-select>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="uploadInvoiceFile">确 定</el-button>
<el-button @click="onlineInvoiceForm.panel = false">取 消</el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
...@@ -442,6 +460,7 @@ import { ...@@ -442,6 +460,7 @@ import {
import { listCompanyInfo } from '@/api/business/companyInfo' import { listCompanyInfo } from '@/api/business/companyInfo'
import fa from 'element-ui/src/locale/lang/fa' import fa from 'element-ui/src/locale/lang/fa'
import { laborSign, querySignList } from '@/api/business/unitInfo' import { laborSign, querySignList } from '@/api/business/unitInfo'
import { listAllLoginUser } from '@/api/business/taxUser'
export default { export default {
name: "InvoiceApply", name: "InvoiceApply",
...@@ -453,6 +472,11 @@ export default { ...@@ -453,6 +472,11 @@ export default {
dicts: ['invoice_status', 'tax_invoice_type'], dicts: ['invoice_status', 'tax_invoice_type'],
data() { data() {
return { return {
// 一键开票
onlineInvoiceForm: {
panel: false,
taxpayerId: ''
},
//上传发票 //上传发票
applyInvoiceId: null, applyInvoiceId: null,
viewInvoiceFileOpen : false, viewInvoiceFileOpen : false,
...@@ -586,7 +610,8 @@ export default { ...@@ -586,7 +610,8 @@ export default {
invocieUrl: [ invocieUrl: [
{ required: true, message: "发票文件地址不能为空", trigger: "blur" } { required: true, message: "发票文件地址不能为空", trigger: "blur" }
], ],
} },
taxpayerList: [],
}; };
}, },
created() { created() {
...@@ -816,6 +841,18 @@ export default { ...@@ -816,6 +841,18 @@ export default {
this.form = response.data; this.form = response.data;
}); });
}, },
onlineInvoice(row) {
let taxpayerQuery = {
// companyType: 2,
// companyId: row.taxCompanyId
}
listAllLoginUser(taxpayerQuery).then(resp => {
if (200 === resp.code) {
this.taxpayerList = resp.data
}
})
this.onlineInvoiceForm.panel = true
},
}, },
}; };
</script> </script>
......
...@@ -69,11 +69,63 @@ ...@@ -69,11 +69,63 @@
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> <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-dialog title="申请开票" :visible.sync="openApply" width="70%">
<el-form ref="formApply" :model="formApply" :rules="rulesApply" label-width="130px"> <el-form ref="formApply" :model="formApply" :rules="rulesApply" label-width="130px">
<el-row>
<el-col :span="10">
<el-descriptions title="购买方信息" :column="1" size="medium">
<el-descriptions-item label="名称" :contentStyle="{'font-size': '14px'}">
{{formApply.applyCompanyInvoice.invoiceTitle}}
</el-descriptions-item>
<el-descriptions-item label="纳税人识别号" :contentStyle="{'font-size': '14px'}">
{{formApply.applyCompanyInvoice.taxRegistrationNumber}}
</el-descriptions-item>
</el-descriptions>
</el-col>
<el-col :span="10">
<el-descriptions title="销售方信息" :column="1" size="medium">
<el-descriptions-item label="名称" :contentStyle="{'font-size': '14px'}">
{{formApply.taxCompanyInvoice.invoiceTitle}}
</el-descriptions-item>
<el-descriptions-item label="纳税人识别号" :contentStyle="{'font-size': '14px'}">
{{formApply.taxCompanyInvoice.taxRegistrationNumber}}
</el-descriptions-item>
</el-descriptions>
</el-col>
</el-row>
<el-divider content-position="left">开票类目</el-divider>
<el-row style="text-align: right; margin-bottom: 5px">
<el-button type="primary" size="mini" @click="addItemClick" >新增类目</el-button>
</el-row>
<el-row style="margin-bottom: 10px">
<el-form-item prop="items" label-width="0px">
<el-table
:data="formApply.items"
style="width: 100%">
<el-table-column prop="goodsName" label="项目名称" width="180" />
<el-table-column prop="goodsSize" label="规格型号" />
<el-table-column prop="goodsUnit" label="单位"/>
<el-table-column prop="taxClassifyRate" label="税率" width="80" />
<el-table-column label="免税类型" prop="freeType">
<template slot-scope="scope">
<dict-tag :options="dict.type.tax_free_type" :value="scope.row.freeType" />
</template>
</el-table-column>
<el-table-column prop="goodsCount" label="数量" />
<el-table-column prop="goodsPrice" label="单价" width="180"/>
<el-table-column prop="amount" label="金额(不含税)" />
<el-table-column prop="taxAmount" label="税额" />
<el-table-column prop="id" label="操作" width="80">
<template slot-scope="scope">
<el-button size="mini" style="float: right; margin-bottom: 5px" @click="removeItem(scope.$index)">移除</el-button>
</template>
</el-table-column>
</el-table>
</el-form-item>
</el-row>
<el-card shadow="hover" class="invoice-info-card"> <el-card shadow="hover" class="invoice-info-card">
<div> <div>
<h3 class="title-bold" strong >开票金额</h3> <h3 class="title-bold">开票金额</h3>
<el-divider></el-divider> <el-divider></el-divider>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
...@@ -89,117 +141,73 @@ ...@@ -89,117 +141,73 @@
</el-row> </el-row>
</div> </div>
</el-card> </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> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitApply">确认申请开票</el-button> <el-button type="primary" @click="submitApply">确认申请开票</el-button>
<el-button @click="openApply = false">取消</el-button> <el-button @click="openApply = false">取消</el-button>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :title="taxCategoryPanel.title" :visible.sync="taxCategoryPanel.open" width="600px" append-to-body>
<el-table :data="taxCategoryPanel.data" stripe style="width: 100%">
<el-table-column prop="goodsName" label="类目名称" width="180" />
<el-table-column prop="code" label="类目编码" width="180" />
<el-table-column prop="vatRate" label="税率" />
<el-table-column prop="vatRate" label="操作" >
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="addItem(scope.row)">选择</el-button>
</template>
</el-table-column>
</el-table>
<div slot="footer" class="dialog-footer">
<el-button @click="taxCategoryPanel.open = false">关 闭</el-button>
</div>
</el-dialog>
<el-dialog title="添加商品" :visible.sync="classifyRateFormPanel" width="600px" append-to-body>
<el-form :model="classifyRateForm" label-width="130px">
<el-form-item label="类目名称">
<el-input v-model="classifyRateForm.goodsName" disabled></el-input>
</el-form-item>
<el-form-item label="规格">
<el-input v-model="classifyRateForm.goodsSize" placeholder="规格/型号"></el-input>
</el-form-item>
<el-form-item label="单位">
<el-input v-model="classifyRateForm.goodsUnit" placeholder="单位"></el-input>
</el-form-item>
<el-form-item label="费率">
<el-select v-model="classifyRateForm.taxClassifyRate" placeholder="请选择费率">
<el-option v-for="(item, index) in classifyRates" :label="item" :value="item" />
</el-select>
</el-form-item>
<el-form-item label="免税类型">
<el-select :disabled="!classifyRateForm.taxClassifyRate || classifyRateForm.taxClassifyRate > 0"
v-model.trim="classifyRateForm.freeType"
size="small" placeholder="请选择免税类型">
<el-option v-for="dict in dict.type.tax_free_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="数量">
<el-input-number v-model="classifyRateForm.goodsCount" :precision="0" :step="1" :min="1" style="width: 100%"></el-input-number>
</el-form-item>
<el-form-item label="单价(含税)">
<el-input-number v-model="classifyRateForm.goodsPrice" :precision="2" :step="0.1" :min="0.1" style="width: 150px"></el-input-number>
</el-form-item>
<el-form-item label="单价(不含税)">
<el-input-number v-model="classifyRateForm.goodsPrice" :precision="2" :step="0.1" :min="0.1" style="width: 150px"></el-input-number>
</el-form-item>
<el-form-item label="金额(不含税)">
<el-input-number disabled v-model="classifyRateForm.amount" :precision="0" :step="1" :min="1" style="width: 100%"></el-input-number>
</el-form-item>
<el-form-item label="税额">
<el-input-number disabled v-model="classifyRateForm.taxAmount" :precision="0" :step="1" :min="1" style="width: 100%"></el-input-number>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitItem">确认</el-button>
<el-button @click="classifyRateFormPanel = false">取消</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
...@@ -213,12 +221,12 @@ import { ...@@ -213,12 +221,12 @@ import {
getInvoiceInfo, getInvoiceInfo,
getInvoiceInfoByCompanyId getInvoiceInfoByCompanyId
} from '@/api/business/invoiceInfo' } from '@/api/business/invoiceInfo'
import { addApplyInvoice } from '@/api/business/invoiceApply' import { addApplyInvoice, getSellerInvoiceInfo } from '@/api/business/invoiceApply'
import { laborSign, querySignList } from '@/api/business/unitInfo' import { getUnitTaxCategories, laborSign, querySignList } from '@/api/business/unitInfo'
export default { export default {
name: "PayOrder", name: "PayOrder",
components: { RePay }, components: { RePay },
dicts: ['pay_status', 'batch_pay_order_invoice_status', 'pay_type_title','tax_invoice_type'], dicts: ['pay_status', 'batch_pay_order_invoice_status', 'pay_type_title','tax_invoice_type', 'tax_free_type'],
data() { data() {
return { return {
//人力公司list //人力公司list
...@@ -280,8 +288,15 @@ export default { ...@@ -280,8 +288,15 @@ export default {
// 表单参数 // 表单参数
formApply: { formApply: {
invoieType: 'NORMAL_TAX', invoieType: 'NORMAL_TAX',
applyCompanyInvoice: {}, applyCompanyInvoice: {
taxCompanyInvoice: {}, invoiceTitle: '',
taxRegistrationNumber: ''
},
taxCompanyInvoice: {
invoiceTitle: '',
taxRegistrationNumber: ''
},
items: []
}, },
// 表单校验 // 表单校验
rulesApply: { rulesApply: {
...@@ -297,6 +312,25 @@ export default { ...@@ -297,6 +312,25 @@ export default {
invoieType: [ invoieType: [
{ required: true, message: "请选择发票类型", trigger: "change" } { required: true, message: "请选择发票类型", trigger: "change" }
] ]
},
taxCategoryPanel: {
title: '支持的税收分类编码列表',
open: false,
data: []
},
classifyRates: [],
classifyRateFormPanel: false,
classifyRateForm: {
freeType: '',
taxClassifyCode: '',
goodsName: '',
taxClassifyRate: '',
goodsPrice: '',
goodsSize: '',
goodsUnit: '',
goodsCount: '',
amount: '',
taxAmount: ''
} }
}; };
}, },
...@@ -395,11 +429,30 @@ export default { ...@@ -395,11 +429,30 @@ export default {
}, },
// 申请开票 // 申请开票
applyInvoice(row) { applyInvoice(row) {
this.openApply = true; this.openApply = true
this.formApply.totalAmountTax = row.successAmount; this.formApply.totalAmountTax = row.successAmount
this.formApply.batchPayIds =[row.id]; this.formApply.batchPayIds = [row.id]
this.formApply.batchPayOrderIds = row.id; this.formApply.batchPayOrderIds = row.id
console.log(this.formApply); getSellerInvoiceInfo(row.payerAccNo).then(resp => {
if (200 === resp.code) {
this.formApply.taxCompanyId = resp.data.taxUnitId
this.formApply.taxCompanyInvoice.companyId = resp.data.taxUnitId
this.formApply.taxCompanyInvoice.invoiceTitle = resp.data.taxUnitName
this.formApply.taxCompanyInvoice.companyName = resp.data.taxUnitName
this.formApply.taxCompanyInvoice.taxRegistrationNumber = resp.data.taxUnitCode
this.formApply.applyCompanyId = resp.data.inviterId
this.formApply.applyCompanyInvoice.companyId = resp.data.inviterId
this.formApply.applyCompanyInvoice.companyName = resp.data.inviterName
this.formApply.applyCompanyInvoice.invoiceTitle = resp.data.inviterName
this.formApply.applyCompanyInvoice.taxRegistrationNumber = resp.data.inviterCode
// 不需要额外的开票信息
// getInvoiceInfoByCompanyId(resp.data.inviterId).then(response => {
// this.formApply.applyCompanyInvoice = response.data;
// }).finally(() => {
// this.loading = false;
// });
}
})
return; return;
}, },
//采购方选择 //采购方选择
...@@ -445,6 +498,7 @@ export default { ...@@ -445,6 +498,7 @@ export default {
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
console.log(this.formApply)
addApplyInvoice(this.formApply).then(response => { addApplyInvoice(this.formApply).then(response => {
this.loading = false; this.loading = false;
if (response.code == 200) { if (response.code == 200) {
...@@ -482,6 +536,52 @@ export default { ...@@ -482,6 +536,52 @@ export default {
this.formApply.totalAmountTax = Number.parseFloat(sumSuccessAmount).toFixed(2); this.formApply.totalAmountTax = Number.parseFloat(sumSuccessAmount).toFixed(2);
}) })
}, },
addItemClick() {
/** 查看企业可开票类目 **/
getUnitTaxCategories(this.formApply.taxCompanyId).then(resp => {
if (200 === resp.code) {
this.taxCategoryPanel.data = resp.data
this.taxCategoryPanel.open = true
this.taxCategoryPanel.title = `[${this.formApply.taxCompanyInvoice.invoiceTitle}]支持的税收分类编码列表`
}
})
},
addItem(classify) {
this.taxCategoryPanel.open = false
let rate = classify.vatRate.split(",")
if (rate.length > 1) {
this.classifyRateFormPanel = true
this.classifyRateForm = {
goodsName: classify.goodsName,
taxClassifyCode: classify.code,
taxClassifyRate: ''
}
this.classifyRates = rate
} else {
this.formApply.items.push({
taxClassifyCode: classify.code,
goodsName: classify.goodsName,
taxClassifyRate: rate[0]
})
}
},
removeItem(index) {
this.formApply.items.splice(index, 1)
},
submitItem() {
this.classifyRateFormPanel = false
this.formApply.items.push({
taxClassifyCode: this.classifyRateForm.taxClassifyCode,
goodsName: this.classifyRateForm.goodsName,
taxClassifyRate: this.classifyRateForm.taxClassifyRate,
freeType: this.classifyRateForm.freeType,
goodsSize: this.classifyRateForm.goodsSize,
goodsCount: this.classifyRateForm.goodsCount,
goodsUnit: this.classifyRateForm.goodsUnit,
amount: this.classifyRateForm.amount,
taxAmount: this.classifyRateForm.taxAmount
})
}
} }
}; };
</script> </script>
......
...@@ -61,7 +61,11 @@ ...@@ -61,7 +61,11 @@
<el-table-column type="selection" width="55" align="center"/> <el-table-column type="selection" width="55" align="center"/>
<el-table-column label="企业名称" align="center" prop="unitName" fixed/> <el-table-column label="企业名称" align="center" prop="unitName" fixed/>
<el-table-column label="信用代码" align="center" prop="unitCode" fixed/> <el-table-column label="信用代码" align="center" prop="unitCode" fixed/>
<el-table-column label="所属行业" align="center" prop="sectorDictDataVal"/> <el-table-column label="所属行业" align="center" prop="sectorDictDataVal">
<template slot-scope="scope">
<dict-tag :options="dict.type.unit_business_type" :value="scope.row.sectorDictDataVal"/>
</template>
</el-table-column>
<el-table-column label="法人姓名" align="center" prop="legalPersonName"/> <el-table-column label="法人姓名" align="center" prop="legalPersonName"/>
<el-table-column label="法人联系电话" align="center" prop="legalPersonMobile"/> <el-table-column label="法人联系电话" align="center" prop="legalPersonMobile"/>
<el-table-column label="所属地址" align="center" prop="address"/> <el-table-column label="所属地址" align="center" prop="address"/>
...@@ -162,7 +166,7 @@ import { listUnitInfo, delUnitInfo, getUnitTaxCategories, updateUnitInfo } from ...@@ -162,7 +166,7 @@ import { listUnitInfo, delUnitInfo, getUnitTaxCategories, updateUnitInfo } from
export default { export default {
name: 'UnitInfo', name: 'UnitInfo',
dicts: ['tax_invoice_status', 'tax_invoice_type'], dicts: ['tax_invoice_status', 'tax_invoice_type', 'unit_business_type'],
data() { data() {
return { return {
taxCategoryPanel: { taxCategoryPanel: {
......
<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="企业名称" prop="taxpayerName">
<el-input
v-model="queryParams.taxpayerName"
placeholder="请输入企业名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="税务账号" prop="loginAccount">
<el-input
v-model="queryParams.loginAccount"
placeholder="请输入登录账号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="办税人姓名" prop="loginName" label-width="120px">
<el-input
v-model="queryParams.loginName"
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"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
>删除</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="loginUserList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="办税地区" align="center" prop="areaCode">
<template slot-scope="scope">
<dict-tag :options="dict.type.area_code_taxes" :value="scope.row.areaCode" />
</template>
</el-table-column>
<el-table-column label="企业名称" align="center" prop="taxpayerName" />
<el-table-column label="企业信用代码" align="center" prop="taxpayerNumber" />
<el-table-column label="办税人姓名" align="center" prop="loginName" />
<el-table-column label="角色" align="center" prop="loginIdentity">
<template slot-scope="scope">
<dict-tag :options="dict.type.taxpayer_role" :value="scope.row.loginIdentity" />
</template>
</el-table-column>
<el-table-column label="登录账号" align="center" prop="loginAccount" />
<el-table-column label="身份证号" align="center" prop="loginUserIdCard" />
<el-table-column label="联系方式" align="center" prop="loginUserMobile" />
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.taxpayer_status" :value="scope.row.status" />
</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)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-s-check"
@click="doAuth(scope.row)"
v-if="scope.row.status === 'saved'"
>认证</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(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="title" :visible.sync="open" width="800px" 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="请选择所属企业">
<el-option v-for="item in unitList" :key="item.unitCode" :label="item.unitName"
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="所属地区" prop="areaCode">
<el-select v-model="form.areaCode" placeholder="请选择办税地区">
<el-option v-for="dict in dict.type.area_code_taxes" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="办税人姓名" prop="loginName">
<el-input v-model="form.loginName" placeholder="请输入办税人姓名" />
</el-form-item>
<el-form-item label="身份证号" prop="loginUserIdCard">
<el-input v-model="form.loginUserIdCard" placeholder="请输入办税人身份证号" />
</el-form-item>
<el-form-item label="联系方式" prop="loginUserMobile">
<el-input v-model="form.loginUserMobile" placeholder="请输入办税人联系方式" />
</el-form-item>
<el-form-item label="办税人角色" prop="loginIdentity">
<el-select v-model="form.loginIdentity" placeholder="请选择办税人角色">
<el-option v-for="dict in dict.type.taxpayer_role" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="登录账号" prop="loginAccount">
<el-input v-model="form.loginAccount" placeholder="请输入登录账号" />
</el-form-item>
<el-form-item label="登录密码" prop="loginPwd">
<el-input type="password" v-model="form.loginPwd" 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 { listLoginUser, getLoginUser, delLoginUser, addLoginUser, updateLoginUser } from "@/api/business/taxUser";
import { listAllUnitInfo } from '@/api/business/unitInfo'
export default {
name: "LoginUser",
dicts: ['taxpayer_role', 'area_code_taxes', 'taxpayer_status'],
data() {
return {
// 根路径
baseURL: process.env.VUE_APP_BASE_API,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 办税人信息表格数据
loginUserList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
areaCode: null,
taxpayerName: null,
taxpayerNumber: null,
loginName: null,
loginIdentity: null,
loginAccount: null,
loginPwd: null,
loginType: null,
loginUserIdCard: null,
loginUserMobile: null,
companyType: null,
companyId: null,
isDefault: null,
status: null,
deptId: null,
},
unitList: [],
// 表单参数
form: {},
// 表单校验
rules: {
loginName: [
{ required: true, message: "办税人姓名不能为空", trigger: "blur" }
],
loginIdentity: [
{ required: true, message: "登录身份不能为空", trigger: "blur" }
],
loginAccount: [
{ required: true, message: "登录账号不能为空", trigger: "blur" }
],
loginPwd: [
{ required: true, message: "登录密码不能为空", trigger: "blur" }
],
loginUserIdCard: [
{ required: true, message: "登录人身份证号不能为空", trigger: "blur" }
],
loginUserMobile: [
{ required: true, message: "登录人联系方式不能为空", trigger: "blur" }
],
}
};
},
created() {
this.getList();
},
methods: {
/** 查询办税人信息列表 */
getList() {
this.loading = true;
listLoginUser(this.queryParams).then(response => {
this.loginUserList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
id: null,
areaCode: null,
taxpayerName: null,
taxpayerNumber: null,
loginName: null,
loginIdentity: null,
loginAccount: null,
loginPwd: null,
loginType: null,
loginUserIdCard: null,
loginUserMobile: null,
companyType: null,
companyId: null,
isDefault: null,
status: "0",
deptId: 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.getAllUnit()
this.open = true;
this.title = "添加办税人信息";
},
getAllUnit() {
console.log(this.unitList)
if (!this.unitList || this.unitList.length < 1) {
listAllUnitInfo().then(resp => {
if (200 === resp.code) {
this.unitList = resp.data
}
})
}
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.getAllUnit()
const id = row.id || this.ids
getLoginUser(id).then(response => {
this.form = response.data;
this.form.loginPwd = atob(response.data.loginPwd)
console.log(this.form.loginPwd)
this.open = true;
this.title = "修改办税人信息";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateLoginUser(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addLoginUser(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 开票员登录认证 **/
doAuth(row) {
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除办税人信息编号为"' + ids + '"的数据项?').then(function() {
return delLoginUser(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('business/loginUser/export', {
...this.queryParams
}, `loginUser_${new Date().getTime()}.xlsx`)
}
}
};
</script>
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