Commit 69a4a752 authored by 我在何方's avatar 我在何方

Merge branch 'dev-financial' into dev1.6

parents 179f418c eb14cecc
......@@ -273,6 +273,14 @@ export function getPayableInfoByIds(query) {
params: query
})
}
//获取佣金应付款详情
export function getCommissionPayable(params){
return request({
url:'/ecw/commission-payable/get',
method:"get",
params
})
}
// 创建付款单
export function createPayment(data) {
......@@ -282,6 +290,14 @@ export function createPayment(data) {
data: data
})
}
// 创建佣金订单
export function commissionPayment(data){
return request({
url:'/ecw/commission-payment/create',
method:'post',
data
})
}
// 获取付款单列表
export function getPaymentList(query) {
......@@ -318,6 +334,14 @@ export function updatePayment(data) {
data: data
})
}
// 更新佣金付款单
export function commissionPaymentUpdate(data){
return request({
url:'/ecw/commission-payment/update',
method:'put',
data
})
}
// 删除付款单
export function deletePayment(id) {
......@@ -359,3 +383,218 @@ export function paymentVerifyCancel(id) {
method: 'GET'
})
}
//获取佣金应付款
export function payablePage(params){
return request({
url:'/ecw/commission-payable/page',
method:'get',
params
})
}
//获取佣金付款单
export function commissionPaymentPage(params){
return request({
url:'/ecw/commission-payment/page',
method:'get',
params
})
}
// 根据流程主键获取付款单流程审核信息
export function getPaymentApprove(id) {
return request({
url: '/ecw/payment/getPaymentApprove?id='+id,
method: 'GET'
})
}
// 根据流程主键获取收款单流程审核信息
export function getReceiptApprove(id) {
return request({
url: '/ecw/receipt/getReceiptApprove?id='+id,
method: 'GET'
})
}
// 收款单核销
export function financeReceiptWriteOff(query) {
return request({
url: '/ecw/receipt/financeReceiptWriteOff',
method: 'POST',
data: query
})
}
// 收款单银行明细核销
export function financeReceiptItemWriteOff(query) {
return request({
url: '/ecw/receipt-item/financeReceiptItemWriteOff',
method: 'POST',
data: query
})
}
// 收款单银行明细核销反审核
export function financeReceiptItemWriteOffNo(query) {
return request({
url: '/ecw/receipt-item/financeReceiptItemWriteOffNo',
method: 'POST',
data: query
})
}
// 收款单反审核
export function financeApproveNo(query) {
return request({
url: '/ecw/receipt/financeApproveNo',
method: 'POST',
data: query
})
}
// 收款单反核销
export function financeReceiptWriteOffNo(query) {
return request({
url: '/ecw/receipt/financeReceiptWriteOffNo',
method: 'POST',
data: query
})
}
// 收款单取消审核
export function cancelFinanceReceiptApproval(query) {
return request({
url: '/ecw/receipt/cancelFinanceReceiptApproval',
method: 'POST',
data: query
})
}
// 取消收款单反审核
export function cancelFinanceReceiptApprovalNo(query) {
return request({
url: '/ecw/receipt/cancelFinanceReceiptApprovalNo',
method: 'POST',
data: query
})
}
// 取消收款单反核销
export function cancelFinanceReceiptWriteOffNo(query) {
return request({
url: '/ecw/receipt/cancelFinanceReceiptWriteOffNo',
method: 'POST',
data: query
})
}
// 取消收款明细核销
export function cancelFinanceReceiptItemWriteOff(query) {
return request({
url: '/ecw/receipt-item/cancelFinanceReceiptItemWriteOff',
method: 'POST',
data: query
})
}
// 取消收款明细反核销
export function cancelFinanceReceiptItemWriteOffNo(query) {
return request({
url: '/ecw/receipt-item/cancelFinanceReceiptItemWriteOffNo',
method: 'POST',
data: query
})
}
// 取消审核
export function cancelFinancePaymentApproval(data){
return request({
url:'/ecw/payment/cancelFinancePaymentApproval',
method:'post',
data
})
}
// 取消付款单反审核
export function cancelFinancePaymentApprovalNo(data){
return request({
url:'/ecw/payment/cancelFinancePaymentApprovalNo',
method:'post',
data
})
}
// 取消付款单核销
export function cancelFinancePaymentWriteOff(data){
return request({
url:'/ecw/payment/cancelFinancePaymentWriteOff',
method:'post',
data
})
}
export function cancelFinancePaymentWriteOffNo(data){
return request({
url:'/ecw/payment/cancelFinancePaymentWriteOffNo',
method:'post',
data
})
}
//删除佣金付款单
export function commissionPaymentDelete(params){
return request({
url:'/ecw/commission-payment/delete',
method:'delete',
params
})
}
//反审核佣金付款单
export function commissionPaymentVerifyCancel(data){
return request({
url:'/ecw/commission-payment/verifyCancel',
method:'post',
data
})
}
// 佣金付款单核销
export function commissionPaymentVerification(data){
return request({
url:'/ecw/commission-payment/verification',
method:'post',
data
})
}
//付款单反核销申请
export function commissionPaymentVerificationCancel(data){
return request({
url:'/ecw/commission-payment/verificationCancel',
method:'post',
data
})
}
// 取消付款单反审核
export function commissionPaymentCancelFinancePaymentApprovalNo(data){
return request({
url:'/ecw/commission-payment/cancelFinancePaymentApprovalNo',
method:'post',
data
})
}
// 取消付款单核销
export function commissionPaymentCancelFinancePaymentWriteOff(data){
return request({
url:'/ecw/commission-payment/cancelFinancePaymentWriteOff',
method:'post',
data
})
}
// 取消付款单反核销
export function commissionPaymentCancelFinancePaymentWriteOffNo(data){
return request({
url:'/ecw/commission-payment/cancelFinancePaymentWriteOffNo',
method:'post',
data,
})
}
......@@ -194,6 +194,7 @@ export const DICT_TYPE = {
ORDER_SPECIAL_NEEDS:'order_special_needs', // 订单特殊需求
ORDER_ABNORMAL_STATE:'order_abnormal_state',
TARGET_TYPE:'target_type',//部门业绩目标类型
RECEIPT_ITEM_STATE:'receipt_item_state',//收款单明细状态
// ========== 出货模块 ==========
BOX_SHIPPING_TRAILER_STATUS: 'shipping_trailer_status', // 拖车状态
BOX_SHIPPING_CUSTOMS_TYPE: 'shipping_customs_type', // 报关方式
......
......@@ -339,6 +339,48 @@ export default {
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
//付款单审核
finance_payment_approve:{
component: () => import('@/views/ecw/financial/components/PaymentApproval'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
//收款单审核
finance_receipt_approve:{
component: () => import('@/views/ecw/financial/components/CollectionApproval'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
//收款单核销
finance_receipt_write_off:{
component: () => import('@/views/ecw/financial/components/CollectionWriteoff'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
//收款单反核销审核
finance_receipt_write_off_no:{
component: () => import('@/views/ecw/financial/components/CollectionApproval'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
//收款单核销反审核
finance_receipt_approve_no:{
component: () => import('@/views/ecw/financial/components/CollectionApproval'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
//收款单银行实收明细核销
finance_receipt_item_write_off:{
component: () => import('@/views/ecw/financial/components/CollectionBankDetail'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
//收款单银行实收反核销
finance_receipt_item_write_off_no:{
component: () => import('@/views/ecw/financial/components/CollectionBankDetail'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
}
console.log('formCustomViewPath', this.processInstance.processDefinition.formCustomViewPath.trim())
return map[this.processInstance.processDefinition.formCustomViewPath.trim()]
......
......@@ -69,7 +69,7 @@
</template>
<script>
import { getReceivableItem ,getInvoicingItem,getReceiptAccountList,getReceiptInfoByIds} from "@/api/ecw/financial";
import { getReceivableItem ,getInvoicingItem,getReceiptAccountList,getReceiptInfoByIds,financeReceiptItemWriteOff} from "@/api/ecw/financial";
import { getCurrencyPage } from "@/api/ecw/currency";
import WorkFlow from '@/components/WorkFlow/'
import NP from 'number-precision'
......@@ -134,6 +134,17 @@
if(label.length>0) return this.$i18n.locale=='zh_CN'?label[0].titleZh:label[0].titleEn
return ''
},
submitForm(){
this.$modal
.confirm(this.$t('您确认要提交审核吗'+'?'))
.then(() => {
financeReceiptItemWriteOff({receiptId:this.id,receiptNo:this.form.receiptNo,receiptItemId:this.bankId}).then(res=>{
this.$message.success(this.$t("提交成功"));
this.$store.dispatch('tagsView/delCurrentView')
});
})
.catch(() => {});
},
handleAddReceiptItem() {
this.surplusData = []
......
<template>
<div style="padding: 20px">
<el-card class="box-card">
<div slot="header" class="clearfix" style="font-size: 20px;">
{{$t('佣金付款单')}}
</div>
<el-form label-width="80px" label-position="left">
<el-row :gutter="30">
<el-col :span="7">
<el-form-item :label="$t('付款单号')">
<el-input></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('客户')">
<el-input v-model="queryParams.searchKey"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('状态')">
<dict-selector :type="DICT_TYPE.ECW_PAYMENT_STATE" v-model="queryParams.state" />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item :label="$t('业务员')">
<el-select v-model="queryParams.salesmanName" :placeholder="$t('请选择业务员')">
<el-option
v-for="item in creatorData"
:key="item.id"
:label="item.nickname"
:value="item.nickname"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="7">
<el-form-item :label="$t('创建时间')">
<el-date-picker
v-model="selectDate"
type="datetimerange"
range-separator="至"
:start-placeholder="$t('开始日期')"
:end-placeholder="$t('结束日期')">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('发票状态')">
<el-select
v-model="queryParams.invoiceStatus"
:placeholder="$t('请选择是否开票')">
<el-option :label="$t('未开票')" value="0" />
<el-option :label="$t('已开票')" value="1" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('订单编号')">
<el-input></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item>
<el-button type="primary" @click="getList">{{$t('查找')}}</el-button>
<el-button type="primary">{{$t('新增请款单')}}</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-table :data="list" style="margin-top: 30px">
<el-table-column type="index" :label="$t('序号')"></el-table-column>
<el-table-column prop="customerId" :label="$t('付款单号')"></el-table-column>
<el-table-column prop="customerName" :label="$t('客户')"></el-table-column>
<el-table-column :label="$t('创建时间')">
<template v-slot="{row}">
{{parseTime(row.createTime)}}
</template>
</el-table-column>
<el-table-column :label="$t('最后付款时间')">
<template v-slot="{row}">
{{parseTime(row.latestPayAt)}}
</template>
</el-table-column>
<el-table-column prop="invoiceStatus" :label="$t('发票')">
<template v-slot="{row}">
{{row.invoiceStatus ? $t('已开票') : $t('未开票')}}
</template>
</el-table-column>
<el-table-column :label="$t('状态')" prop="state" >
<template slot-scope="scope">
<dict-tag
:type="DICT_TYPE.ECW_PAYMENT_STATE"
:value="scope.row.state"
/>
</template>
</el-table-column>
<el-table-column :label="$t('操作')">
<template v-slot="{row}">
<el-button type="text" v-if="[0,2].includes(row.state)" >{{$t('编辑')}}</el-button>
<el-button type="text" @click="deleteFn(row)" v-if="[0,2].includes(row.state)" > {{$t('删除')}}</el-button>
<el-button type="text" v-if="[3,4].includes(row.state)" >{{$t('审核详情')}}</el-button>
<el-button type="text" v-if="[1,3,5].includes(row.state)" @click="bridgeFn('取消审核',7, row, '取消审核' )" >{{$t('取消审核')}}</el-button>
<el-button type="text" v-if="[5,6].includes(row.state)" @click="bridgeFn('付款单反审核', 1, row, '提交反审核',)" >{{$t('反审核')}}</el-button>
<el-button type="text" v-if="[5].includes(row.state)" @click="bridgeFn('付款单核销申请', 2, row, '提交核销')" >{{$t('核销')}}</el-button>
<el-button type="text" v-if="[5,6].includes(row.state)" >{{$t('打印')}}</el-button>
<el-button type="text" v-if="[8].includes(row.state)" @click="bridgeFn('付款单反核销申请', 3, row, '提交方核销')" >{{$t('反核销')}}</el-button>
<el-button type="text" v-if="[4,7].includes(row.state)" @click="bridgeFn('取消反核销',4, row, '提交取消反核销' )" >{{$t('取消反核销')}}</el-button>
<el-button type="text" @click="bridgeFn('取消付款单核销',5, row, '取消付款单核销' )" > {{$t('取消核销')}} </el-button>
<el-button type="text" @click="bridgeFn('取消付款反单核销',6, row, '取消付款反单核销' )" > {{$t('取消反核销')}} </el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.rows"
@pagination="getList"
/>
<!--对话框 审核 -->
<el-dialog width="30%" :title="paymentTitle" :visible.sync="paymentShow">
<div class="cancel_content">
<span>{{ $t('申请理由') }}</span>
<el-input type="textarea" :rows="6" v-model="paymentValue" :placeholder="$t('请输入取消理由')"></el-input>
</div>
<span slot="footer" class="dialog-footers">
<el-button type="primary" @click="cancelWriteOffClick()">{{ $t(butTitle) }}</el-button>
<el-button @click="paymentShow = false">{{ $t('取消') }}</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {listSimpleUsers} from "@/api/system/user";
import {
commissionPaymentCancelFinancePaymentApprovalNo,
commissionPaymentCancelFinancePaymentWriteOff,
commissionPaymentCancelFinancePaymentWriteOffNo,
commissionPaymentDelete,
commissionPaymentPage,
commissionPaymentVerification,
commissionPaymentVerificationCancel,
commissionPaymentVerifyCancel
} from "@/api/ecw/financial";
import {parseTime} from "../../../utils/ruoyi";
export default {
name: "commission-Payment",
created() {
// 业务员
listSimpleUsers().then((res) => (this.creatorData = res.data));
this.getList();
},
data(){
return {
queryParams:{
invoiceStatus:null,
state:null,
salesmanName:null,
searchKey:null,
page:1,
rows:10,
},
selectDate:[],
creatorData:[],
list:[],
total:0,
paymentRow:{},
paymentIndex:0,
paymentTitle:'',
butTitle:'',
paymentShow:false,
paymentValue:''
}
},
methods:{
parseTime,
getList(){
commissionPaymentPage(this.queryParams).then(r => {
this.list = r.data.list
this.total = r.data.total
})
},
// 删除
deleteFn(row){
this.$confirm(this.$t('是否删除此条佣金付款单'), this.$t('提示'), {
confirmButtonText: this.$t('确定'),
cancelButtonText: this.$t('取消'),
type: 'warning'
}).then(() => {
commissionPaymentDelete({id:row.id}).then(r => {
this.$message({
type: 'success',
message:this.$t('删除成功!')
});
this.getList();
})
}).catch(() => {
this.$message({
type: 'info',
message: this.$t('已取消删除')
});
});
},
bridgeFn(title, index ,row, butTitle = '提交'){
this.paymentTitle = title;
this.butTitle = butTitle;
this.paymentIndex = index;
this.paymentRow = row;
this.paymentShow = true;
},
//提交
cancelWriteOffClick(){
if(!this.paymentValue) return this.$message.warning(this.$t('请输入理由!'))
let resolve = ()=>{
this.getList();
this.paymentShow = false;
this.paymentValue = ''
this.$message.success(this.$t('操作成功!'));
}
let reject = ()=>{
this.paymentShow = false;
}
let p = {
"paymentId": this.paymentRow.id,
"paymentNo": this.paymentRow.paymentNo,
"remark":this.paymentValue,
}
switch (this.paymentIndex){
case 1:
commissionPaymentVerifyCancel(p).then(resolve, reject)
break;
case 2:
commissionPaymentVerification(p).then(resolve, reject)
break;
case 3:
commissionPaymentVerificationCancel(p).then(resolve, reject)
break;
case 4:
commissionPaymentCancelFinancePaymentApprovalNo(p).then(resolve, reject)
break;
case 5:
commissionPaymentCancelFinancePaymentWriteOff(p).then(resolve, reject)
break
case 6:
commissionPaymentCancelFinancePaymentWriteOffNo(p).then(resolve, reject)
break
case 7:
}
}
}
}
</script>
<style scoped>
</style>
<template>
<div style="padding: 20px">
<el-card class="box-card">
<div slot="header" class="clearfix" style="font-size: 20px;">
{{$t('应付款佣金')}}
</div>
<el-form label-width="80px" inline>
<el-row :gutter="20">
<el-col :span="6">
<el-form-item :label="$t('订单号')">
<el-input v-model="queryParams.orderNo"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('客户')">
<el-input v-model="queryParams.customerName"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('始发仓')">
<el-select
v-model="queryParams.startWarehouseId"
:placeholder="$t('请选择始发仓')"
clearable
>
<el-option
v-for="item in exportWarehouseList"
:label="$l(item, 'title')"
:value="item.id"
:key="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('目的仓')">
<el-select
v-model="queryParams.destWarehouseId"
:placeholder="$t('请选择目的仓')"
clearable
>
<el-option
v-for="item in importWarehouseList"
:label="$l(item, 'title')"
:value="item.id"
:key="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="6">
<el-form-item :label="$t('运输方式')">
<dict-selector
:type="DICT_TYPE.ECW_TRANSPORT_TYPE"
v-model="queryParams.transportId"
formatter="number"
clearable
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('佣金类型')">
<dict-selector
:type="DICT_TYPE.COMMISSION_TYPE"
v-model="queryParams.feeType"
formatter="number"
clearable
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('状态')">
<el-select clearable v-model="queryParams.state">
<el-option v-for="(item) in STATE" :label="$t(item.title)" :value="item.value" :key="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item>
<el-button type="primary" @click="getList">{{$t('查找')}}</el-button>
<el-button type="primary" @click="$router.push({path:'/financial/commission-requestFunds',query:{payableId:0}})" >{{$t('新增请款单')}}</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-table :data="list" style="margin-top: 30px">
<el-table-column :label="$t('订单编号')" prop="orderNo" ></el-table-column>
<el-table-column :label="$t('客户名称')" prop="customerName" ></el-table-column>
<el-table-column :label="$t('订单编号')" prop="payableNo" ></el-table-column>
<el-table-column :label="$t('佣金类型')">
<template v-slot="{row}">
<dict-tag
:type="DICT_TYPE.COMMISSION_TYPE"
:value="row.feeType"
></dict-tag>
</template>
</el-table-column>
<el-table-column :label="$t('金额')" prop="totalAmount">
</el-table-column>
<el-table-column :label="$t('应付生成时间')"></el-table-column>
<el-table-column :label="$t('状态')">
<template v-slot="{row}">
{{$t(STATE.find(r => r.value === row.state).title)}}
</template>
</el-table-column>
<el-table-column :label="$t('付款单号')" prop="paymentNo"></el-table-column>
<el-table-column :label="$t('备注')" prop="remark" ></el-table-column>
<el-table-column :label="$t('操作')">
<template v-slot="{row}">
<el-button type="text" @click="$router.push({path:'/financial/commission-requestFunds',query:{payableId:row.id}})" >{{$t('请款')}}</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.rows"
@pagination="getList"
/>
</div>
</template>
<script>
import {getWarehouseList} from "@/api/ecw/warehouse";
import item from "@/layout/components/Sidebar/Item.vue";
import {payablePage} from "@/api/ecw/financial";
import Template from "@/views/cms/template/index.vue";
export default {
// 应付款佣金
name: "commission-payable",
components: {Template},
created() {
getWarehouseList().then(res => this.warehouseList = res.data)
this.getList()
},
data(){
return {
STATE:[
{
value:0,
title:'未付款',
},
{
value:1,
title:'付款中',
},
{
value:2,
title:'已付款',
}
],
warehouseList:[],
queryParams:{
rows:10,
page:1,
orderNo:'',
customerName:'',
startWarehouseId:'',
destWarehouseId:'',
feeType:'',
state:''
},
list:[],
total:0
}
},
computed:{
exportWarehouseList(){
/* tradeType 1 进口,2出口,3进出口 */
return this.warehouseList.filter(item => item.tradeType == 2 || item.tradeType == 3)
},
importWarehouseList(){
return this.warehouseList.filter(item => item.tradeType == 1 || item.tradeType == 3)
},
},
methods:{
getList(){
payablePage(this.queryParams).then(r =>{
this.list = r.data.list
this.total = r.data.total
})
}
},
}
</script>
<style scoped>
</style>
This diff is collapsed.
<template>
<div class="app-container">
<el-descriptions :column="5" >
<el-descriptions-item :label="$t('收款单编号')">{{ form.receiptNo }}</el-descriptions-item>
<el-descriptions-item :label="$t('客户')">{{ form.customerName }}</el-descriptions-item>
<el-descriptions-item :label="$t('创建时间')">
<template >
<span>{{ parseTime(form.createTime, '{y}-{m}-{d}') }}</span>
</template></el-descriptions-item>
<el-descriptions-item :label="$t('业务员')">{{ form.salesmanName }}</el-descriptions-item>
<el-descriptions-item :label="$t('期望收款金额')">
<template>
<div v-for="itemAmount in collectionAmount" :key="itemAmount.currencyNameZh">{{ itemAmount.amount}}{{$i18n.locale=='zh_CN'?itemAmount.currencyNameZh:itemAmount.currencyNameEn}}</div>
</template>
</el-descriptions-item>
</el-descriptions>
<div class="btn">
<el-button
size="mini"
type="primary"
@click="$router.push('/financial/receiptDetail?id=' + receiptId)"
>{{ $t('查看收款单')}}</el-button>
</div>
</div>
</template>
<script>
import {
getReceiptInfoByIds,
getInvoicingItem,
getReceiptAccountList,
getReceiptApprove
} from "@/api/ecw/financial";
import { getCurrencyPage } from "@/api/ecw/currency";
import NP from 'number-precision'
export default {
props:{
id: [String, Number]
},
data() {
return {
form: {},
collectionAmount: [],
currencyList:[],
list:[],
receiptId:0
}
},
watch:{
id(){
this.getCurrencyData()
},
currencyList(){
this.getData()
},
form(){
this.getListData()
},
list(){
this.getCollectionData()
}
},
created() {
if(this.id){
this.getCurrencyData()
}
},
methods: {
getData(){
console.log(this.id)
getReceiptApprove(this.id).then(res => {
if(res.data.receiptId){
this.receiptId = res.data.receiptId
this.getReceiptInfo()
}
})
},
// 获取汇率
getCurrencyData(){
getCurrencyPage(this.params).then(res => {this.currencyList = res.data.list})
},
getReceiptInfo(){
getReceiptInfoByIds({ id: this.receiptId }).then(res => {
this.form = res.data
})
},
getListData(){
getInvoicingItem({ id: this.receiptId }).then(res => {
this.list = [...res.data]
})
},
getCollectionData(){
getReceiptAccountList({ id: this.receiptId }).then(res => {
var n
// 收款总计
var amountList =[]
this.currencyList.forEach((item,index)=>{
var nairaListByList = this.list.filter(v => v.currencyId === item.id)
if(nairaListByList.length>0){
var discountNaira = nairaListByList.reduce((total, currentValue) => NP.plus(total, currentValue.discountTotal || 0), 0)
n = res.data.find(v => v.currencyId == item.id)
n && (n.discountTotal = discountNaira)
}
var dollarList = res.data.filter(v => v.collectionCurrencyId == item.id)
if(dollarList.length>0){
var dollar = dollarList.reduce((total, currentValue) => NP.plus(total, currentValue.collectionAmount), 0).toFixed(2)
amountList.push({currencyId:item.id,currencyNameEn:item.titleEn,currencyNameZh:item.titleZh,amount:dollar})
}
})
this.$set(this,'collectionAmount',amountList)
})
}
}
}
</script>
<style scoped lang="scss">
.btn{
margin-top: 20px;
}
.app-container {
::v-deep .el-descriptions-item__label {
font-size:16px;
font-weight:600;
}
::v-deep .el-descriptions-item__content {
font-size:16px;
font-weight:600;
}
}
</style>
This diff is collapsed.
<template>
<div>
<div class="app-container">
<el-descriptions :column="5" >
<el-descriptions-item :label="$t('收款单编号')">{{ form.receiptNo }}</el-descriptions-item>
<el-descriptions-item :label="$t('客户')">{{ form.customerName }}</el-descriptions-item>
<el-descriptions-item :label="$t('创建时间')">
<template >
<span>{{ parseTime(form.createTime, '{y}-{m}-{d}') }}</span>
</template></el-descriptions-item>
<el-descriptions-item :label="$t('业务员')">{{ form.salesmanName }}</el-descriptions-item>
<el-descriptions-item :label="$t('期望收款金额')">
<template>
<div v-for="itemAmount in collectionAmount" :key="itemAmount.currencyNameZh">{{$i18n.locale=='zh_CN'?itemAmount.currencyNameZh:itemAmount.currencyNameEn}}: {{ itemAmount.amount}}</div>
</template>
</el-descriptions-item>
</el-descriptions>
</div>
<el-descriptions :column="3" border>
<el-descriptions-item >
<template slot="label">
{{ $t('实收已核销总金额') }}
<span :title="$t('所有银行收款明细中状态为已核销的实收金额,币种根据实收币种分类统计')"><i class="el-icon-question"></i></span>
</template>
<template v-if="!Object.keys(writeOffTotal).length">
0
</template>
<div v-else>
<div v-for="(amount, currency) in writeOffTotal" :key="currency">
{{amount}}{{getCurrencyLabel(currency)}}
</div>
</div>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
{{ $t('核销基准币种已核销总金额') }}{{getCurrencyLabel(showCurrencyId)}}
<span :title="$t('为了方便统计收款单核销比例,将所有银行收款明细中状态为已核销的实收金额,转换为核销基准币种的金额累加')"><i class="el-icon-question"></i></span>
</template>
{{ writeOffAmount}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
{{ $t('总核销比例') }}{{getCurrencyLabel(showCurrencyId)}}
<span :title="$t('总核销比例=核销基准币种已核销总金额/核销基准币种应收总金额')"><i class="el-icon-question"></i></span>
</template>
{{ WriteOffProportion }}%
</el-descriptions-item>
</el-descriptions>
<div class="btn">
<el-button
size="mini"
type="primary"
@click="$router.push('/financial/receiptDetail?id=' + receiptId)"
>{{ $t('查看收款单')}}</el-button>
</div>
</div>
</template>
<script>
import { getCustomer } from '@/api/ecw/customer'
import {
getReceiptInfoByIds,
getInvoicingItem,
getReceiptAccountList,
getReceivableItem,
getReceiptApprove
} from "@/api/ecw/financial";
import { getCurrencyPage } from "@/api/ecw/currency";
import NP from 'number-precision'
export default {
props:{
id: [String, Number]
},
data() {
return {
form: {},
collectionAmount: [],
currencyList:[],
list:[],
writeOffAmounts:0,
detailed:[],
showCurrencyId:0,
receiptId:0
}
},
watch:{
id(){
this.getCurrencyData()
},
currencyList(){
this.getData()
},
form(){
this.getListData()
},
list(){
this.getList()
this.getCollectionData()
}
},
created() {
if(this.id){
this.getCurrencyData()
}
},
computed: {
// 已核销总金额
writeOffTotal(){
let total = {}
this.detailed.forEach(item => {
if(item.status){
if(!total[item.currencyId]){
total[item.currencyId] = item.amount
}else total[item.currencyId] = NP.plus(total[item.currencyId], item.amount)
}
})
return total
},
// 已核销总金额
writeOffAmount(){
let total = 0
this.detailed.forEach(item => {
if(item.status){
total = NP.plus(total, item.writeOffAmount)
}
})
return total.toFixed(2)
},
WriteOffProportion(){
let total = 0
if(!this.writeOffAmounts) return 0
let amountTotal = this.writeOffAmounts
this.detailed.forEach(item => {
if(item.status){
total = NP.plus(total, item.writeOffAmount)
}
})
let portion = NP.divide(total,amountTotal)
return (portion*100).toFixed(2)
}
},
methods: {
getData(){
getReceiptApprove(this.id).then(res => {
if(res.data.receiptId){
this.receiptId = res.data.receiptId
this.getReceiptInfo()
}
})
},
getList() {
getReceivableItem({ id: this.receiptId }).then(res => {
this.detailed = res.data.map(v => ({
...v,
amountDate: this.parseTime(v.amountDate, '{y}-{m}-{d}'),
accountNo: +v.accountNo,
rate:parseFloat(v.rate).toFixed(6),
attr: v.attr ? v.attr.split(',').map(t => ({ name: t.slice(t.lastIndexOf('/') + 1), url: t })) : []
}))
})
},
// 获取汇率
getCurrencyData(){
getCurrencyPage(this.params).then(res => {this.currencyList = res.data.list})
},
getReceiptInfo(){
getReceiptInfoByIds({ id: this.receiptId }).then(res => {
this.form = res.data
getCustomer(this.form.customerId).then(res => {
this.form.customerName = res?.data?.name
})
})
},
getListData(){
getInvoicingItem({ id: this.receiptId }).then(res => {
this.list = [...res.data]
let fieldList = [];
let groupList=[];
this.list.map((element)=>{
if(fieldList.indexOf(element['currencyId'])===-1){
fieldList.push(element['currencyId'])
}
})
for(let i=0;i<fieldList.length;i++){
let arr = this.list.filter((element)=>{
return element['currencyId']===fieldList[i];
})
groupList.push({
currencyId:arr[0].currencyId,
list:arr
})
}
this.showCurrencyId = 1
if (groupList.length === 1) this.showCurrencyId = groupList[0].currencyId
})
},
getCollectionData(){
getReceiptAccountList({ id: this.receiptId }).then(res => {
var n
// 收款总计
var amountList =[]
this.currencyList.forEach((item,index)=>{
var nairaListByList = this.list.filter(v => v.currencyId === item.id)
if(nairaListByList.length>0){
var discountNaira = nairaListByList.reduce((total, currentValue) => NP.plus(total, currentValue.discountTotal || 0), 0)
n = res.data.find(v => v.currencyId == item.id)
n && (n.discountTotal = discountNaira)
}
var dollarList = res.data.filter(v => v.collectionCurrencyId == item.id)
if(dollarList.length>0){
var dollar = dollarList.reduce((total, currentValue) => NP.plus(total, currentValue.collectionAmount), 0).toFixed(2)
amountList.push({currencyId:item.id,currencyNameEn:item.titleEn,currencyNameZh:item.titleZh,amount:dollar})
}
})
this.writeOffAmounts = res.data.reduce((total, currentValue) => NP.plus(total, currentValue.writeOffAmount || 0), 0),
console.log(this.writeOffAmounts)
this.$set(this,'collectionAmount',amountList)
})
},
getCurrencyLabel(id){
var label = this.currencyList.filter(item=>item.id == id)
if(label.length>0) return this.$i18n.locale=='zh_CN'?label[0].titleZh:label[0].titleEn
return ''
},
}
}
</script>
<style scoped lang="scss">
.btn{
margin-top: 20px;
}
.app-container {
::v-deep .el-descriptions-item__label {
font-size:16px;
font-weight:600;
}
::v-deep .el-descriptions-item__content {
font-size:16px;
font-weight:600;
}
}
</style>
<template>
<div class="app-container">
<el-descriptions :column="5" >
<el-descriptions-item :label="$t('付款单编号')">{{ form.paymentNo }}</el-descriptions-item>
<el-descriptions-item :label="$t('供应商名称')">{{ form.supplierName }}</el-descriptions-item>
<el-descriptions-item :label="$t('创建时间')">
<template >
<span>{{ parseTime(form.createTime, '{y}-{m}-{d}') }}</span>
</template></el-descriptions-item>
<el-descriptions-item :label="$t('业务员')">{{ form.salesmanName }}</el-descriptions-item>
<el-descriptions-item :label="$t('付款金额')">{{paymentMoney}}{{$t('人民币')}}</el-descriptions-item>
</el-descriptions>
<div class="btn">
<el-button
size="mini"
type="primary"
@click="$router.push('/financial/paymentDetail?id=' + paymentId)"
>{{ $t('查看付款单')}}</el-button>
</div>
</div>
</template>
<script>
import {
getPaymentApprove,
getPaymentInfoByIds,
getPaymentItem
} from "@/api/ecw/financial";
export default {
props:{
id: [String, Number]
},
data() {
return {
form: {},
list:[],
paymentId:0,
paymentMoney:0
}
},
watch:{
id(){
this.getData()
},
form(){
this.getListData()
},
},
created() {
if(this.id){
this.getData()
}
},
methods: {
getData(){
getPaymentApprove(this.id).then(res => {
if(res.data.paymentId){
this.paymentId = res.data.paymentId
this.getPayableInfo()
}
})
},
getPayableInfo(){
getPaymentInfoByIds({ id: this.paymentId }).then(res => {
this.form = res.data
})
},
getListData(){
getPaymentItem({ id: this.paymentId }).then(res => {
this.list = [...res.data]
const t = this.list.map(v => v.total).reduce((prev, curr) => {
return parseFloat(prev) + parseFloat(curr);
}, 0)
this.paymentMoney = t
})
},
}
}
</script>
<style scoped lang="scss">
.btn{
margin-top: 20px;
}
.app-container {
::v-deep .el-descriptions-item__label {
font-size:16px;
font-weight:600;
}
::v-deep .el-descriptions-item__content {
font-size:16px;
font-weight:600;
}
}
</style>
......@@ -128,9 +128,19 @@
<!-- <dict-tag :type="DICT_TYPE.BOX_SHIPPING_PRICE_UNIT" :value="scope.row.currencyId" /> -->
</template>
</el-table-column>
<el-table-column :label="$t('总金额')" align="center" prop="totalAmount">
<el-table-column :label="$t('税率%')" align="center" prop="totalAmount">
<template slot-scope="scope">
<el-input v-model="scope.row.taxPoint" @input="changeTaxRate(scope.row,scope.$index)"></el-input>
</template>
</el-table-column>
<el-table-column :label="$t('不含税金额')" align="center" prop="totalAmount">
<template slot-scope="scope">
<span>{{ scope.row.totalAmount }}{{getCurrencyLabel(scope.row.currencyId)}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('含税金额')" align="center" prop="taxAmount">
<template slot-scope="scope">
<span>{{ scope.row.taxAmount }}{{getCurrencyLabel(scope.row.currencyId)}}</span>
<!-- <dict-tag :type="DICT_TYPE.BOX_SHIPPING_PRICE_UNIT" :value="scope.row.currencyId" /> -->
</template>
......@@ -180,6 +190,7 @@
</el-descriptions-item>
</el-descriptions> -->
</el-card>
<el-card v-if="showInvoice" class="card">
<div slot="header" class="card-title">{{ $t('开票资料') }}</div>
<el-descriptions :column="3" border>
......@@ -395,10 +406,21 @@
</el-descriptions>
</el-card>
</el-form>
<div slot="footer" style="margin: 20px 0">
<!-- <div slot="footer" style="margin: 20px 0">
<el-button v-if="id==0||form.state==0" type="primary" :loading="saveBtnLoading" @click="submitForm(1)">{{ $t('保存草稿') }}</el-button>
<el-button v-else type="primary" :loading="saveBtnLoading" @click="$store.dispatch('tagsView/delCurrentView')">{{ $t('返回') }}</el-button>
<el-button type="primary" :loading="saveBtnLoading" @click="submitForm(0)">{{ id&&form.state!=0 ? $t('修改') : $t('新增收款单') }}</el-button>
</div> -->
<div slot="header" class="bpm-title">{{ $t('审核流程') }}</div>
<work-flow xmlkey="merge_order" v-model="form.copyUserList"></work-flow>
<div slot="footer" style="margin: 20px 0">
<el-button type="primary" @click="submitForm(0)">{{$t('提交申请')}}</el-button>
<el-button v-if="id==0||form.state==0" type="primary" :loading="saveBtnLoading" @click="submitForm(1)">{{ $t('保存草稿') }}</el-button>
<el-button v-if="orderData.inWarehouseState==207" type="primary" @click="$router.push(`/bpm/process-instance/detail?id=`+orderApprovalBackVO.applyingFormId)">{{$t('审核中')}}</el-button>
<!-- <el-button v-if="orderData.inWarehouseState==207" plain type="primary" @click="dialogVisible = true">{{$t('取消审核')}}</el-button> -->
<el-button plain type="primary" @click="$store.dispatch('tagsView/delCurrentView')">{{$t('返回')}}</el-button>
<!-- <el-button type="primary" :loading="saveBtnLoading" @click="submitForm(0)">{{ id&&form.state!=0 ? $t('修改') : $t('新增收款单') }}</el-button> -->
</div>
<el-dialog
:visible.sync="open"
......@@ -667,11 +689,12 @@ import ret from "bluebird/js/release/util";
import dayjs from "dayjs";
import { getUserProfile } from "@/api/system/user";
import {getWarehouseList} from '@/api/ecw/warehouse'
import WorkFlow from '@/components/WorkFlow/'
export default {
name: "CreatCollection",
components: {
CustomerSelector,
CustomerSelector,WorkFlow
},
data() {
return {
......@@ -718,7 +741,9 @@ export default {
selectListRow: {},
selectListIndex: 0,
flag: false,
warehouseList:[]
warehouseList:[],
selectedUsers:[],
dialogVisible:false
};
},
async created() {
......@@ -732,6 +757,11 @@ export default {
if (that.$route.query.orderId) {
await getFirstReceivableListByOrderId({id:that.$route.query.orderId}).then(response => {
this.list = [...response.data]
this.list.map(v=>{
if(v.taxPoint==0){
v.taxAmount = v.totalAmount
}
})
getOrder(that.$route.query.orderId).then(response => {
// console.log(response.data)
if(response.data.customerId) this.$set(this.form,'customerId',response.data.customerId)
......@@ -743,11 +773,16 @@ export default {
this.id = this.$route.query.id;
console.log(this.id)
getReceiptInfoByIds({ id: this.id }).then(res => {
res.data.rateValidateDate = dayjs(res.data.rateValidateDate).format('YYYY-MM-DD HH:mm:ss')
if(res.data.rateValidateDate) res.data.rateValidateDate = dayjs(res.data.rateValidateDate).format('YYYY-MM-DD HH:mm:ss')
this.form = Object.assign({}, this.form, res.data)
})
await getInvoicingItem({ id: this.id }).then(res => {
this.list = [...res.data]
this.list.map(v=>{
if(v.taxPoint==0){
v.taxAmount = v.totalAmount
}
})
})
getReceiptAccountList({ id: this.id }).then(res => {
if (res.data.length > 0) {
......@@ -786,6 +821,11 @@ export default {
this.receiptId = this.$route.query.receiptId;
getReceivableInfoByIds({ id: this.receiptId }).then(res => {
this.list = [{...res.data}]
this.list.map(v=>{
if(v.taxPoint==0){
v.taxAmount = v.totalAmount
}
})
this.calculation()
getOrder(res.data.orderId).then(response => {
......@@ -919,6 +959,17 @@ export default {
this.$set(this.form, 'receiptAccountList', [...this.form.receiptAccountList])
}, 100)
},
//明细改变税率
changeTaxRate(row,index){
var regs=/^\d+$/;
if(row.taxPoint&&!regs.test(row.taxPoint)){
row.taxPoint = 0
this.$modal.msgError(this.$t('输入税率格式不对'));
}
row.taxAmount = row.totalAmount*(1+row.taxPoint/100).toFixed(2)
this.list[index] = {...row}
this.$set(this,'list',this.list)
},
calculation() {
const copyList = this.form.receiptAccountList
this.form.receiptAccountList = []
......@@ -1244,8 +1295,9 @@ export default {
this.saveBtnLoading = true
params.receiptAccountList.splice(params.receiptAccountList.length - 1,1)
if (this.id && this.id != 0) {
params.updateType = 0
updateReceipt(params).then(res => {
this.$modal.msgSuccess(this.$t('修改成功'));
this.$modal.msgSuccess(this.$t('提交成功'));
this.$store.dispatch('tagsView/delCurrentView')
}).finally(() => {
this.saveBtnLoading = false
......@@ -1268,7 +1320,8 @@ export default {
this.saveBtnLoading = true
params.receiptAccountList.splice(params.receiptAccountList.length - 1,1)
if (this.id && this.id != 0) {
if(params.state==0) params.state = 1
// if(params.state==0) params.state = 1
params.updateType = 1
updateReceipt(params).then(res => {
this.$modal.msgSuccess(this.$t('修改成功'));
this.$store.dispatch('tagsView/delCurrentView')
......@@ -1332,4 +1385,10 @@ export default {
width: 30%;
}
}
.bpm-title{
font-size: 20px;
font-weight: bold;
color:#666;
margin:20px 0;
}
</style>
......@@ -248,17 +248,35 @@
</el-descriptions>
</el-form>
</el-card>
<!-- <div slot="header" class="bpm-title">{{ $t('审核流程') }}</div>
<work-flow xmlkey="merge_order" v-model="selectedUsers"></work-flow>
<div slot="header" class="bpm-title">{{ $t('审核流程') }}</div>
<work-flow xmlkey="merge_order" v-model="form.copyUserList"></work-flow>
<div slot="footer" style="margin: 20px 0">
<el-button type="primary" @click="submitForm(0)">{{$t('提交审核')}}</el-button>
<el-button type="primary" @click="$store.dispatch('tagsView/delCurrentView')">{{ $t('关闭') }}</el-button>
</div> -->
<div slot="footer" style="margin: 20px 0">
<el-button v-if="id==0||form.state==0" type="primary" @click="submitForm(1)">{{$t('提交申请')}}</el-button>
<el-button v-if="id==0||form.state==0" type="primary" @click="submitForm(0)">{{ $t('保存草稿') }}</el-button>
<el-button v-if="form.state==1" type="primary" @click="$router.push(`/bpm/process-instance/detail?id=`+bpmId)">{{$t('审核中')}}</el-button>
<!-- <el-button v-if="form.state==1" plain type="primary" @click="dialogVisible = true">{{$t('取消审核')}}</el-button> -->
<el-button plain type="primary" @click="$store.dispatch('tagsView/delCurrentView')">{{$t('返回')}}</el-button>
</div>
<!-- <div slot="footer" style="margin: 20px 0">
<el-button type="primary" @click="submitDraft">{{ $t('保 存') }}</el-button>
<el-button type="primary" @click="submitForm">{{id==0?$t('新增'):$t('编辑')}}</el-button>
</div> -->
<el-dialog
:title="$t('提示')"
:visible.sync="dialogVisible"
width="30%">
<span class="cancel_notice">{{$t('付款单申请正在审核中,你确定取消付款单申请吗?')}}</span>
<div class="cancel_content">
<span>{{$t('取消原因:')}}</span>
<el-input v-model="reason" :placeholder="$t('请输入取消原因')"></el-input>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">{{$t('取消')}}</el-button>
<el-button type="primary" @click="cancelApproval">{{$t('确定')}}</el-button>
</span>
</el-dialog>
<el-dialog
:visible.sync="open"
:title="$t('添加未付供应商款项')"
......@@ -455,6 +473,7 @@ export default {
channelList: [],
loading: "",
bankData: [],
reason:'',
params: {
page: 1,
rows: 20,
......@@ -470,7 +489,8 @@ export default {
allSupplier: [],
currencyList: [],
warehouseList:[],
selectedUsers:[]
selectedUsers:[],
dialogVisible:false
};
},
async created() {
......@@ -587,12 +607,13 @@ export default {
handleAdd() {
this.open = true;
},
submitForm() {
submitForm(addType) {
this.$refs.form.validate ((valid)=>{
if (valid) {
this.$refs.forms.validate((val) => {
if (val) {
const params = {...this.form}
params.addType = addType
if (this.list && this.list.length > 0) {
params.payableReqVOList = [...this.list]
}else{
......@@ -605,7 +626,7 @@ export default {
}
if (this.id && this.id !== '0') {
updatePayment(params).then(res => {
this.$modal.msgSuccess(this.$t('修改成功'));
this.$modal.msgSuccess(this.$t('申请成功'));
this.$router.back();
})
} else {
......@@ -696,6 +717,9 @@ export default {
this.list = this.multipleSelection
}
this.open = false;
},
cancelApproval(){
},
convertCurrency(money) {
//汉字的数字
......
This diff is collapsed.
......@@ -180,7 +180,7 @@
<span v-if="scope.row.type !== 'total'">{{ scope.row.collectionRate }}</span>
<span v-else>{{ $t('期望收费金额') }}
<span :title="$t('导出账单给客户时显示的收款金额与币种')"><i class="el-icon-question"></i></span>
</span>
</span>
</template>
</el-table-column>
......@@ -251,16 +251,22 @@
</el-table-column>
<el-table-column :label="$t('状态')" align="center" prop="status">
<template slot-scope="scope">
<span>{{ scope.row.status == 0 ? $t('待核销') : $t('已核销') }}</span>
<dict-tag
:type="DICT_TYPE.RECEIPT_ITEM_STATE"
:value="scope.row.status"
/>
</template>
</el-table-column>
<el-table-column :label="$t('操作')" align="center" width="200">
<template slot-scope="scope">
<el-button v-if="scope.row.status == 0" v-hasPermi="['ecw:payment:detail:delete']" type="text" @click="deleteClick(scope.row)">{{ $t('删除') }}</el-button>
<el-button type="text" @click="detailClick(scope.row)" v-hasPermi="['ecw:payment:detail:detail']">{{ $t('详情') }}</el-button>
<el-button v-if="scope.row.status == 0" type="text" @click="verificationClick(scope.row)" v-hasPermi="['ecw:payment:detail:writeOff']">{{ $t('核销') }}</el-button>
<el-button v-if="scope.row.status == 1" type="text" @click="verificationCancelClick(scope.row)" v-hasPermi="['ecw:payment:detail:cancelWriteOff']">{{ $t('反核销') }}</el-button>
<el-button v-if="scope.row.status == 0 || scope.row.status == 1" v-hasPermi="['ecw:payment:detail:delete']" type="text" @click="deleteClick(scope.row)">{{ $t('删除') }}</el-button>
<el-button v-if="scope.row.status == 0" type="text" @click="detailClick(scope.row)" v-hasPermi="['ecw:payment:detail:detail']">{{ $t('详情') }}</el-button>
<el-button v-if="scope.row.status == 0" type="text" @click="$router.push(`bankDetail?id=`+id+`&bankId=`+scope.row.id)" v-hasPermi="['ecw:payment:detail:writeOff']">{{ $t('核销') }}</el-button>
<el-button v-if="scope.row.status == 1" type="text" @click="showCancel(scope.$index)" v-hasPermi="['ecw:payment:detail:cancelWriteOff']">{{ $t('反核销') }}</el-button>
<el-button v-if="scope.row.status == 0" type="text" @click="editClick(scope.row)" v-hasPermi="['ecw:payment:detail:bankEdit']">{{ $t('编辑') }}</el-button>
<el-button v-if="scope.row.status == 2" type="text" @click="cancelClick(scope.$index,1)" v-hasPermi="['ecw:payment:detail:cancelDetailApproval']">{{ $t('取消审核') }}</el-button>
<el-button v-if="scope.row.status == 3" type="text" @click="cancelClick(scope.$index,2)" v-hasPermi="['ecw:payment:detail:cancelWriteOffNo']">{{ $t('取消反核销审核') }}</el-button>
<el-button v-if="scope.row.status == 3 || scope.row.status == 2" type="text" @click="$router.push(`/bpm/process-instance/detail?id=`+scope.row.bmpId)" v-hasPermi="['ecw:payment:detail:writeOff']">{{ $t('审核详情') }}</el-button>
</template>
</el-table-column>
</el-table>
......@@ -309,6 +315,7 @@
<el-button type="primary" @click="toEdit" v-hasPermi="['ecw:payment:detail:edit']">{{ $t('编辑') }}</el-button>
<el-button type="primary" @click="verificationAll" v-hasPermi="['ecw:payment:detail:allWriteOff']">{{ $t('全部核销') }}</el-button>
</div>
<el-dialog v-if="openAddDialog" :visible.sync="openAddDialog" :title="dialogTitle" width="50%" append-to-body>
<div style="padding: 0 24px">
<el-form ref="addForm" :model="addForm" label-width="250px">
......@@ -437,6 +444,32 @@
</div>
</div>
</el-dialog>
<el-dialog
:title="$t('收款单银行实收明细反核销-未提交')"
:visible.sync="dialogVisible"
width="30%">
<div class="cancel_content">
<span>{{$t('申请理由')}}</span>
<el-input type="textarea" :rows ="6" v-model="reason" :placeholder="$t('请输入理由')"></el-input>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="verificationCancelClick()">{{$t('提交反核销')}}</el-button>
<el-button @click="dialogVisible = false">{{$t('取消')}}</el-button>
</span>
</el-dialog>
<el-dialog
:title="$t('取消审核')"
:visible.sync="cancelShow"
width="30%">
<div class="cancel_content">
<span>{{$t('申请理由')}}</span>
<el-input type="textarea" :rows ="6" v-model="cancelReason" :placeholder="$t('请输入取消审核理由')"></el-input>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancelWriteOffClick()">{{$t('提交')}}</el-button>
<el-button @click="cancelShow = false">{{$t('取消')}}</el-button>
</span>
</el-dialog>
</div>
</template>
......@@ -446,6 +479,7 @@ import { getBankAccountPage } from "@/api/ecw/bankAccount";
import { getToken } from "@/utils/auth";
import { listSimpleDepts } from "@/api/system/dept";
import { getCustomer } from '@/api/ecw/customer'
import {
getReceiptInfoByIds,
getInvoicingItem,
......@@ -457,13 +491,18 @@ import {
updateReceiptItem,
receiptItemBatchVerification,
receiptItemAllVerification,
getReceiptAccountList
getReceiptAccountList,
financeReceiptWriteOff,
financeReceiptItemWriteOffNo,
cancelFinanceReceiptItemWriteOff,
cancelFinanceReceiptItemWriteOffNo
} from "@/api/ecw/financial";
import { getCurrencyPage } from "@/api/ecw/currency";
import NP from 'number-precision'
export default {
data() {
return {
uploadFileUrl: process.env.VUE_APP_BASE_API + "/app-api/file/upload", // 上传的图片服务器地址
......@@ -501,7 +540,13 @@ export default {
rmbAmount: 0,
nairaAmount: 0
},
surplusData:[]
surplusData:[],
dialogVisible:false,
reason:'',
cancelShow:false,
cancelTitle:'',
cancelReason:'',
cancelType:1
}
},
computed: {
......@@ -790,6 +835,43 @@ export default {
NANtoRMB() {
return NP.divide(this.currencyList.find(v => v.titleEn === 'NGN').huilv, 100)
},
//显示反核销弹窗
showCancel(index){
this.selectIndex = index
this.reason = ''
this.dialogVisible = true
},
//取消审核弹窗
cancelClick(index,type){
this.selectIndex = index
this.cancelType = type
this.cancelReason = ''
this.cancelShow = true
},
//取消审核
cancelWriteOffClick(){
if(!this.cancelReason){
this.$modal.msgError(this.$t('请输入申请理由'));
return
}
var receiptItemId = this.detailed[this.selectIndex].id
if(this.cancelType==1){
cancelFinanceReceiptItemWriteOff({receiptItemId:receiptItemId,remark:this.cancelReason}).then(res=>{
this.cancelShow = false
this.getList()
this.$message.success(this.$t("提交成功"));
});
}else{
cancelFinanceReceiptItemWriteOffNo({receiptItemId:receiptItemId,remark:this.cancelReason}).then(res=>{
this.cancelShow = false
this.getList()
this.$message.success(this.$t("提交成功"));
});
}
},
currencyIdChange(val) {
val = Number(val)
let rate
......@@ -887,18 +969,23 @@ export default {
})
.catch(() => {});
},
verificationCancelClick(row) {
const id = row.id;
//银行明细反核销
verificationCancelClick() {
if(!this.reason){
this.$modal.msgError(this.$t('请输入申请理由'));
return
}
const id = this.detailed[this.selectIndex].id
this.$modal
.confirm(this.$t('您确认要反核销吗')+'?')
.then(function () {
return receiptItemVerificationCancel(id);
})
.then(() => {
.then(()=>{
financeReceiptItemWriteOffNo({receiptId:this.id,receiptNo:this.form.receiptNo,receiptItemId:id,remark:this.reason}).then(res=>{
this.getList();
this.$modal.msgSuccess(this.$t('反核销成功'));
this.$message.success(this.$t("提交成功"));
this.dialogVisible = false
});
})
.catch(() => {});
.catch(() => {this.dialogVisible = false});
},
handleSelectionChange(val) {
this.multipleSelection = val;
......@@ -931,7 +1018,7 @@ export default {
this.$modal
.confirm(this.$t('您确认要全部核销吗'+'?'))
.then(() => {
return receiptItemAllVerification(this.id);
return financeReceiptWriteOff({receiptId:this.id,receiptNo:this.form.receiptNo});
})
.then(() => {
this.$modal.msgSuccess(this.$t('核销成功'));
......@@ -1064,4 +1151,15 @@ export default {
width: 22%;
}
}
.cancel_content{
display: flex;
// align-items: center;
flex-direction: column;
// padding-top: 20px;
}
.cancel_content span{
font-size: 16px;
font-weight:600;
margin-bottom:10px
}
</style>
......@@ -245,6 +245,7 @@
:limit.sync="queryParams.rows"
@pagination="getList"
/>
</div>
</template>
......@@ -260,7 +261,7 @@ import {getWarehouseList} from '@/api/ecw/warehouse'
export default {
name: "EcwFinancialReceivable",
components: {
CustomerSelector,
CustomerSelector
},
data() {
return {
......
......@@ -97,6 +97,7 @@
:type="DICT_TYPE.ECW_RECEIPT_STATE"
:value="scope.row.state"
/>
<span v-if="scope.row.state==1 || scope.row.state ==3 || scope.row.state==8" :title="scope.row.remark"><i class="el-icon-question"></i></span>
</template>
</el-table-column>
<el-table-column :label="$t('是否开票')" align="center">
......@@ -117,7 +118,7 @@
@click="verificationCancelClick(scope.row)"
>{{ $t('查看')}}</el-button>
<el-button
v-if="scope.row.state === 0 || scope.row.state == 1 || scope.row.state == 2 || scope.row.state == 3"
v-if="scope.row.state === 0 || scope.row.state == 1 || scope.row.state == 2 || scope.row.state == 3|| scope.row.state == 8"
size="mini"
type="text"
v-hasPermi="['ecw:voucher:edit']"
......@@ -136,9 +137,49 @@
size="mini"
type="text"
v-hasPermi="['ecw:voucher:cancelWriteOff']"
@click="verificationCancelClick(scope.row)"
@click="writeOffShow(2,scope.$index)"
>{{ $t('反核销') }}</el-button
>
<el-button
v-if="scope.row.state == 1"
size="mini"
type="text"
v-hasPermi="['ecw:voucher:cancelWriteOff']"
@click="writeOffShow(1,scope.$index)"
>{{ $t('反审核') }}</el-button
>
<el-button
v-if="scope.row.state == 7"
size="mini"
type="text"
v-hasPermi="['ecw:vocher:cancelAppoval']"
@click="cancelClick(scope.$index,1)"
>{{ $t('取消审核') }}</el-button
>
<el-button
v-if="scope.row.state == 11"
size="mini"
type="text"
v-hasPermi="['ecw:vocher:cancelWriteOfflNo']"
@click="cancelClick(scope.$index,3)"
>{{ $t('取消反核销审核') }}</el-button
>
<el-button
v-if="scope.row.state == 9"
size="mini"
type="text"
v-hasPermi="['ecw:vocher:cancelAppovalNo']"
@click="cancelClick(scope.$index,2)"
>{{ $t('取消反审核') }}</el-button
>
<el-button
size="mini"
type="text"
v-if="scope.row.state == 9 || scope.row.state == 7 || scope.row.state == 11|| scope.row.state == 10"
v-hasPermi="['ecw:voucher:cancelWriteOff']"
@click="$router.push(`/bpm/process-instance/detail?id=`+scope.row.bmpId)"
>{{ $t('审核详情') }}</el-button
>
<el-button
v-if="scope.row.state == 5"
size="mini"
......@@ -148,9 +189,9 @@
>{{ $t('开票') }}</el-button
>
<el-button v-if="scope.row.state == 1 || scope.row.state == 2 || scope.row.state == 3" v-hasPermi="['ecw:voucher:payment']" size="mini" type="text" @click="verificationCancelClick(scope.row)">{{ $t('收款') }}</el-button>
<el-button v-if="[0,1,2].indexOf(scope.row.state) > -1" size="mini" type="text" v-hasPermi="['ecw:voucher:delete']" @click="deleteClick(scope.row)">{{ $t('删除') }}</el-button>
<el-button v-if="[0,1,8].indexOf(scope.row.state) > -1" size="mini" type="text" v-hasPermi="['ecw:voucher:delete']" @click="deleteClick(scope.row)">{{ $t('删除') }}</el-button>
<el-button
v-if="scope.row.state != 0"
v-if="scope.row.state != 0 && scope.row.state != 7 && scope.row.state != 11 && scope.row.state != 8 && scope.row.state != 9"
size="mini"
type="text"
@click="toprint(scope.row.id)"
......@@ -158,7 +199,7 @@
>{{ $t('打印') }}</el-button
>
<el-button
v-if="scope.row.state != 0"
v-if="scope.row.state != 0 && scope.row.state != 7 && scope.row.state != 11 && scope.row.state != 8 && scope.row.state != 9"
size="mini"
type="text"
v-hasPermi="['ecw:voucher:derive']"
......@@ -201,6 +242,33 @@
>
</div>
</el-dialog>
<el-dialog
:title="writeOffType==1?$t('收款单反审核'):$t('收款单反核销')"
:visible.sync="dialogVisible"
width="30%">
<div class="cancel_content">
<span>{{$t('申请理由')}}</span>
<el-input type="textarea" :rows ="6" v-model="reason" :placeholder="$t('请输入理由')"></el-input>
</div>
<span slot="footer" class="dialog-footers">
<el-button v-if="writeOffType==1" type="primary" @click="writeOffClick()">{{$t('提交反审核')}}</el-button>
<el-button v-else type="primary" @click="writeOffClick()">{{$t('提交反核销')}}</el-button>
<el-button @click="dialogVisible = false">{{$t('取消')}}</el-button>
</span>
</el-dialog>
<el-dialog
:title="cancelTitle"
:visible.sync="cancelShow"
width="30%">
<div class="cancel_content">
<span>{{$t('申请理由')}}</span>
<el-input type="textarea" :rows ="6" v-model="cancelReason" :placeholder="$t('请输入取消理由')"></el-input>
</div>
<span slot="footer" class="dialog-footers">
<el-button type="primary" @click="cancelWriteOffClick()">{{$t('提交')}}</el-button>
<el-button @click="cancelShow = false">{{$t('取消')}}</el-button>
</span>
</el-dialog>
</div>
</template>
......@@ -213,7 +281,12 @@ import {
// receiptVerification,
// receiptVerificationCancel,
receiptExportExcel,
deleteReceipt
deleteReceipt,
financeReceiptWriteOffNo,
financeApproveNo,
cancelFinanceReceiptApproval,
cancelFinanceReceiptApprovalNo,
cancelFinanceReceiptWriteOffNo
} from "@/api/ecw/financial";
export default {
......@@ -258,6 +331,15 @@ export default {
},
dateFilter:[],
downloading: false, // 导出状态
dialogVisible:false,
reason:'',
writeOffType:1,
writeOffIndex:0,
cancelShow:false,
cancelTitle:'',
cancelReason:'',
cancelIndex:0,
selectIndex:0
};
},
activated(){
......@@ -313,6 +395,84 @@ export default {
// })
// .catch(() => {});
},
//显示取消审核弹窗
cancelClick(index,type){
this.selectIndex = index
this.cancelIndex = type
this.cancelReason = ''
if(this.cancelIndex==1){
this.cancelTitle = this.$t('取消审核')
}else if(this.cancelIndex == 2){
this.cancelTitle = this.$t('取消反审核')
}else{
this.cancelTitle = this.$t('取消反核销审核')
}
this.cancelShow = true
},
//取消审核
cancelWriteOffClick(){
if(!this.cancelReason){
this.$modal.msgError(this.$t('请输入申请理由'));
return
}
var receiptId = this.list[this.selectIndex].id
if(this.cancelIndex==1){
cancelFinanceReceiptApproval({receiptId:receiptId,remark:this.cancelReason}).then(res=>{
this.cancelShow = false
this.getList();
this.$message.success(this.$t("提交成功"));
});
}else if(this.cancelIndex ==2){
cancelFinanceReceiptApprovalNo({receiptId:receiptId,remark:this.cancelReason}).then(res=>{
this.cancelShow = false
this.getList();
this.$message.success(this.$t("提交成功"));
});
}else{
cancelFinanceReceiptWriteOffNo({receiptId:receiptId,remark:this.cancelReason}).then(res=>{
this.cancelShow = false
this.getList();
this.$message.success(this.$t("提交成功"));
});
}
},
writeOffClick(){
if(!this.reason){
this.$modal.msgError(this.$t('请输入申请理由'));
return
}
const receiptIdData = this.list[this.writeOffIndex]
if(this.writeOffType==1){
this.$modal
.confirm(this.$t('您确认要反审核吗')+'?')
.then(()=>{
financeApproveNo({receiptId:receiptIdData.id,receiptNo:receiptIdData.receiptNo,remark:this.reason}).then(res=>{
this.getList();
this.$message.success(this.$t("提交成功"));
this.dialogVisible = false
// this.$store.dispatch('tagsView/delCurrentView')
});
})
.catch(() => {this.dialogVisible = false});
}else{
this.$modal
.confirm(this.$t('您确认要反核销吗')+'?')
.then(()=>{
financeReceiptWriteOffNo({receiptId:receiptIdData.id,receiptNo:receiptIdData.receiptNo,remark:this.reason}).then(res=>{
this.getList();
this.$message.success(this.$t("提交成功"));
this.dialogVisible = false
// this.$store.dispatch('tagsView/delCurrentView')
});
})
.catch(() => {this.dialogVisible = false});
}
},
deleteClick(row) {
const id = row.id;
this.$modal.confirm(this.$t('是否确认删除该收款单')+'?').then(function() {
......@@ -349,6 +509,13 @@ export default {
this.open = true;
this.exportId = id;
},
//显示反审核反核销弹窗
writeOffShow(type,index){
this.writeOffType = type
this.writeOffIndex = index
this.reason = ''
this.dialogVisible = true
},
submitForm(type) {
this.downloading = true
receiptExportExcel({ id: this.exportId, billType: type }).then((response) => {
......@@ -377,8 +544,22 @@ export default {
justify-content: space-between;
height: 160px;
}
.dialog-footers{
display: flex;
align-items: center;
justify-content: space-between;
}
.card-title {
font-size: 18px;
font-weight: bold;
}
.cancel_content{
display: flex;
flex-direction: column;
}
.cancel_content span{
font-size: 16px;
font-weight:600;
margin-bottom:10px
}
</style>
......@@ -26,7 +26,7 @@
</el-form-item>
<el-form-item :label="$t('创建时间')">
<el-date-picker v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" />
type="daterange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{ $t('搜索') }}</el-button>
......
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