Commit d87c07ef authored by 邓春圆's avatar 邓春圆

佣金付款单模块

parent 9cf4fdbf
...@@ -273,6 +273,14 @@ export function getPayableInfoByIds(query) { ...@@ -273,6 +273,14 @@ export function getPayableInfoByIds(query) {
params: query params: query
}) })
} }
//获取佣金应付款详情
export function getCommissionPayable(params){
return request({
url:'/ecw/commission-payable/get',
method:"get",
params
})
}
// 创建付款单 // 创建付款单
export function createPayment(data) { export function createPayment(data) {
...@@ -282,6 +290,14 @@ export function createPayment(data) { ...@@ -282,6 +290,14 @@ export function createPayment(data) {
data: data data: data
}) })
} }
// 创建佣金订单
export function commissionPayment(data){
return request({
url:'/ecw/commission-payment/create',
method:'post',
data
})
}
// 获取付款单列表 // 获取付款单列表
export function getPaymentList(query) { export function getPaymentList(query) {
...@@ -318,6 +334,14 @@ export function updatePayment(data) { ...@@ -318,6 +334,14 @@ export function updatePayment(data) {
data: data data: data
}) })
} }
// 更新佣金付款单
export function commissionPaymentUpdate(data){
return request({
url:'/ecw/commission-payment/update',
method:'put',
data
})
}
// 删除付款单 // 删除付款单
export function deletePayment(id) { export function deletePayment(id) {
...@@ -360,6 +384,24 @@ export function paymentVerifyCancel(id) { ...@@ -360,6 +384,24 @@ export function paymentVerifyCancel(id) {
}) })
} }
//获取佣金应付款
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) { export function getPaymentApprove(id) {
return request({ return request({
...@@ -465,4 +507,94 @@ export function cancelFinanceReceiptItemWriteOffNo(query) { ...@@ -465,4 +507,94 @@ export function cancelFinanceReceiptItemWriteOffNo(query) {
data: query 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,
})
}
<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>
<template>
<div class="app-container">
<el-card>
<div slot="header" class="card-title">{{ $t('请款单') }}</div>
<el-form
ref="form"
:model="form"
label-width="120px"
label-position="left"
>
<el-descriptions :column="3" class="card" border>
<el-descriptions-item :label="$t('客户')">
<el-form-item
label=""
label-width="0"
style="margin-bottom: 0"
prop="customerId"
:rules="{ required: true, trigger: ['blur', 'change'] }"
:error="$t('客户不能为空')"
>
<customer-selector v-model="form.customerId" @change="consignor = $event" />
<!-- <el-select-->
<!-- v-model="form.customerId"-->
<!-- :placeholder="$t('请选择客户')"-->
<!-- filterable-->
<!-- @change="selectChange(form.customerId)"-->
<!-- :filter-method="getUserList"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="supplier in allSupplier"-->
<!-- :key="supplier.id"-->
<!-- :label="supplier.name"-->
<!-- :value="supplier.id"-->
<!-- ></el-option>-->
<!-- </el-select>-->
</el-form-item>
</el-descriptions-item>
<el-descriptions-item :label="$t('部门')">
<el-form-item
label=""
label-width="0"
style="margin-bottom: 0"
prop="departmentId"
required
:error="$t('部门不能为空')"
>
<el-select
v-model="form.departmentId"
style="width: 300px"
:placeholder="$t('请选择部门')"
>
<el-option
v-for="item in deptData"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item :label="$t('业务员')">
<el-form-item
label=""
label-width="0"
style="margin-bottom: 0"
prop="salesmanName"
required
:error="$t('业务员不能为空')"
>
<el-select v-model="form.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-descriptions-item>
<el-descriptions-item :label="$t('申请日期')">
<el-form-item
label=""
label-width="0"
style="margin-bottom: 0"
prop="applicationAt"
required
:error="$t('申请日期不能为空')"
>
<el-date-picker
clearable
v-model="form.applicationAt"
value-format="yyyy-MM-dd HH:mm:ss"
format="yyyy-MM-dd HH:mm:ss"
type="datetime"
:placeholder="$t('选择申请日期')"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item :label="$t('账户名称')" >
<el-form-item label-width="0" :rules="{message:$t('账户名称不能为空'),required:true,}" prop="customerBankAccountName">
<el-input v-model="form.customerBankAccountName" ></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item :label="$t('银行名称')" >
<el-form-item label-width="0" :rules="{ required:true,message:$t('银行名称不能为空')}" prop="customerBank" >
<el-input v-model="form.customerBank"></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item :label="$t('银行账户')" >
<el-form-item label-width="0" :rules="{required:true, message:$t('银行账户不能为空'),}" prop="customerBankAccount" >
<el-input v-model="form.customerBankAccount" ></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item :label="$t('银行代码')" >
<el-form-item label-width="0" >
<el-input></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item :label="$t('账户类型')" >
<el-form-item label-width="0">
<el-input></el-input>
</el-form-item>
</el-descriptions-item>
<!-- <el-descriptions-item :label="$t('客户银行账号')" style="width: 50%">-->
<!-- <el-form-item-->
<!-- label=""-->
<!-- label-width="0"-->
<!-- style="margin-bottom: 0"-->
<!-- prop="customerBankAccount"-->
<!-- >-->
<!-- <el-input style="width: 50%;" v-model="form.customerBankAccount">-->
<!-- </el-input>-->
<!--&lt;!&ndash; <el-select v-model="form.supplierBankAccount" @change="selectChangeBank"&ndash;&gt;-->
<!--&lt;!&ndash; :placeholder="$t('请选择收款账户')">&ndash;&gt;-->
<!--&lt;!&ndash; <el-option&ndash;&gt;-->
<!--&lt;!&ndash; v-for="item in bankData"&ndash;&gt;-->
<!--&lt;!&ndash; :key="item.id"&ndash;&gt;-->
<!--&lt;!&ndash; :label="item.bankName + '(' + item.bankAccount+ ')'"&ndash;&gt;-->
<!--&lt;!&ndash; :value="item.bankAccount"&ndash;&gt;-->
<!--&lt;!&ndash; />&ndash;&gt;-->
<!--&lt;!&ndash; </el-select>&ndash;&gt;-->
<!-- </el-form-item>-->
<!-- </el-descriptions-item>-->
</el-descriptions>
<el-descriptions :column="3" class="card" border>
<el-descriptions-item :label="$t('最后付款日期')">
<el-form-item
label=""
label-width="0"
style="margin-bottom: 0"
prop="latestPayAt"
required
:error="$t('最后付款日期不能为空')"
>
<el-date-picker
clearable
v-model="form.latestPayAt"
value-format="yyyy-MM-dd HH:mm:ss"
format="yyyy-MM-dd HH:mm:ss"
type="datetime"
:placeholder="$t('选择最后付款日期')"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item :label="$t('结算方式')">
<el-form-item
label=""
label-width="0"
style="margin-bottom: 0"
required
:error="$t('选择结算方式')"
prop="settlementType"
>
<dict-selector
:type="DICT_TYPE.CUSTOMER_BALANCE"
v-model="form.settlementType"
/>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
</el-form>
</el-card>
<el-card class="card">
<div slot="header" class="card-title">{{ $t('费用信息') }}</div>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
style="padding: 10px; margin-bottom: 10px"
>{{ $t('添加未付供应商款项') }}
</el-button
>
</el-col>
<el-table v-loading="loadings" :data="list" border :show-summary="!!list.length" :summary-method="getSummaries">
<el-table-column :label="$t('自编号')" align="center" prop="payableNo"/>
<el-table-column :label="$t('佣金类型')" align="center" prop="feeType">
<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('发票号码')" align="center" prop="invoiceNumber">
<template slot-scope="scope">
<el-input v-model="scope.row.invoiceNumber"></el-input>
</template>
</el-table-column>
<el-table-column :label="$t('应付金额')" align="center" prop="totalAmount"/>
<el-table-column :label="$t('币种')" align="center" prop="currencyId">
<template slot-scope="scope">
{{ getCurrencyLabel(scope.row.currencyId) }}
<!-- <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="exchangeRate">
<template slot-scope="scope">
<el-input v-model="scope.row.exchangeRate"></el-input>
</template>
</el-table-column>
<el-table-column :label="$t('税率')+'%'" align="center" prop="taxRate">
<template slot-scope="scope">
<el-input v-model="scope.row.taxRate"
@keyup.native="scope.row.taxRate = oninput(scope.row.taxRate)"></el-input>
</template>
</el-table-column>
<el-table-column :label="$t('价税合计(RMB)')" align="center" prop="total">
<template slot-scope="scope">
<span>{{
scope.row.total = ((scope.row.totalAmount * scope.row.exchangeRate) + (scope.row.totalAmount * scope.row.exchangeRate) * (scope.row.taxRate / 100)).toFixed(2)
}}</span>
<!-- <span>{{scope.row.total}}</span> -->
</template>
</el-table-column>
</el-table>
<el-form
ref="forms"
:model="form"
label-width="120px"
label-position="left"
style="width: 50%"
>
<el-descriptions :column="1" class="card" border>
<el-descriptions-item :label="$t('账单号')">
<el-form-item
label=""
label-width="0"
style="margin-bottom: 0"
prop="accountNumber"
:rules="[
{ required: true, message:$t('账单号不能为空'), trigger: 'blur' },
]"
>
<el-input
v-model="form.accountNumber"
:placeholder="$t('请输入账单号')"
></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item :label="$t('发票')">
<el-form-item
label=""
label-width="0"
style="margin-bottom: 0"
prop="invoiceStatus"
required
:error="$t('请选择是否开票')"
>
<el-select
v-model="form.invoiceStatus"
:placeholder="$t('请选择是否开票')"
>
<el-option :label="$t('未开票')" value="0"/>
<el-option :label="$t('已开票')" value="1"/>
</el-select>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
</el-form>
</el-card>
<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(1)">{{ $t('提交申请') }}</el-button>
<el-button type="primary" @click="submitForm(0)">{{ $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>
</div>
<el-dialog
:visible.sync="open"
:title="$t('添加未付客户款项')"
width="80%"
append-to-body
@open="openDialog"
>
<div>
<!-- <div slot="header" class="card-title">{{ $t('添加未收客户款项') }}</div> -->
<!-- 搜索工作栏 -->
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
label-width="80px"
>
<!-- <el-row> -->
<el-form-item :label="$t('客户')">
<customer-selector
v-model="queryParams.customerId"
@change="consignor = $event"
/>
</el-form-item>
<el-form-item :label="$t('始发仓')">
<el-select
v-model="queryParams.departureId"
: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-form-item :label="$t('目的仓')">
<el-select
v-model="queryParams.objectiveId"
: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-form-item :label="$t('运输方式')">
<dict-selector
:type="DICT_TYPE.ECW_TRANSPORT_TYPE"
v-model="queryParams.transportId"
formatter="number"
/>
</el-form-item>
<!-- </el-row> -->
<el-form-item :label="$t('出货渠道')">
<el-select
v-model="queryParams.channelId"
:placeholder="$t('请选择出货渠道')"
>
<el-option
v-for="item in channelList"
:label="item.nameZh"
:value="item.channelId"
:key="item.channelId"
></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('订单号')" prop="orderNo">
<el-input
v-model="queryParams.orderNo"
:placeholder="$t('请输入订单号')"
clearable
/>
</el-form-item>
<el-form-item :label="$t('业务编号')" prop="selfNo">
<el-input
v-model="queryParams.selfNo"
:placeholder="$t('请输入业务编号')"
clearable
@blur="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery"
>{{ $t('查询') }}
</el-button
>
</el-form-item>
</el-form>
<el-table
ref="multipleTable"
v-loading="loading"
:data="orderData"
border
@selection-change="handleSelectionChange"
row-key="id"
>
<el-table-column type="selection" width="55" :reserve-selection="true"></el-table-column>
<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('金额')" align="center" prop="totalAmount">
<template slot-scope="scope">
<span>{{ scope.row.totalAmount }}{{ getCurrencyLabel(scope.row.currencyId) }}</span>
<!-- <dict-tag :type="DICT_TYPE.BOX_SHIPPING_PRICE_UNIT" :value="scope.row.currencyId" /> -->
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.rows"
@pagination="getList"
/>
<!-- </el-card> -->
<div slot="footer" style="margin: 20px 0; text-align: center;">
<el-button type="primary" @click="saveSelectList">{{ $t('确认添加') }}</el-button>
<el-button @click="hiddenDialog">{{ $t('取消') }}</el-button>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
import {listSimpleUsers} from "@/api/system/user";
import {DICT_TYPE} from "@/utils/dict";
import {getToken} from "@/utils/auth";
import {getChannelList} from "@/api/ecw/channel";
import CustomerSelector from "@/components/CustomerSelector";
import {listSimpleDepts} from "@/api/system/dept";
import {getTradeCityList} from "@/api/ecw/region";
import {getSupplierPage, getSupplier} from "@/api/ecw/supplier";
import {
getPayableList,
getPayableInfoByIds,
getPaymentInfoByIds,
getPaymentItem,
updatePayment,
payablePage, commissionPayment, commissionPaymentUpdate, getCommissionPayable
} from "@/api/ecw/financial"
import {getCurrencyPage} from "@/api/ecw/currency";
import NP from 'number-precision'
import {getWarehouseList} from '@/api/ecw/warehouse'
import WorkFlow from '@/components/WorkFlow/'
import {getCustomer, getCustomerPage} from "@/api/ecw/customer";
export default {
name: "commission-requestFunds",
components: {
CustomerSelector, WorkFlow
},
data() {
return {
id: 0,
payableId: 0,
orderData: [],
total: 0,
loadings: false,
open: false,
form: {},
creatorData: [],
list: [],
defaultList: [],
channelList: [],
loading: "",
bankData: [],
params: {
page: 1,
rows: 20,
},
deptData: [],
deptArr: [],
queryParams: {
page: 1,
rows: 20,
},
multipleSelection: [],
tradeCityList: [],
allSupplier: [],
currencyList: [],
warehouseList: [],
selectedUsers: [],
dialogVisible: false,
};
},
async created() {
await getCurrencyPage(this.params).then(res => this.currencyList = res.data.list)
getWarehouseList().then(res => this.warehouseList = res.data)
let that = this;
if (that.$route.query.payableId && that.$route.query.payableId !== '0') {
this.payableId = this.$route.query.payableId;
// 获取详情
getCommissionPayable({id: this.payableId}).then(res => {
this.handleSelectionChange([res.data])
this.selectChange(this.form.customerId)
this.list = this.multipleSelection
this.$set(this.form, 'customerId', res.data.customerId)
})
}
if (that.$route.query.id && that.$route.query.id !== '0') {
this.id = this.$route.query.id;
getPaymentInfoByIds({id: this.id}).then(res => {
this.form = {
copyUserList:[],
...res.data,
latestPayAt: this.parseTime(res.data.latestPayAt, '{y}-{m}-{d}'),
applicationAt: this.parseTime(res.data.applicationAt, '{y}-{m}-{d}'),
invoiceStatus: String(res.data.invoiceStatus),
}
this.$set(this.form, 'customerBankAccount', res.data.customerBankAccount)
})
getPaymentItem({id: this.id}).then(res => {
this.list = [...res.data]
this.defaultList = [...res.data]
})
}
listSimpleUsers().then((res) => (that.creatorData = res.data));
getChannelList().then((res) => (that.channelList = res.data));
getTradeCityList().then((res) => (that.tradeCityList = res.data));
// getBankAccountPage(that.params).then(
// (res) => (that.bankData = res.data.list)
// );
// getSupplierPage({ pageNo: "1", pageSize: "10000" }).then((res) => {
// const { data } = res;
// this.allSupplier = data.list;
// this.selectChange(this.form.supplierId)
// });
listSimpleDepts().then((res) => {
res.data.forEach((item) => {
if (item.parentId == 0) {
that.deptArr.push(item);
} else {
that.deptData.push(item);
}
});
that.deptData.forEach((value) => {
var dept = that.deptArr.filter((itt) => itt.id == value.parentId);
if (dept.length > 0) {
value.name = dept[0].name + " | " + value.name;
}
});
});
this.getUserList();
},
computed: {
expoerCityList() {
return this.tradeCityList.filter((item) => item.type == 2);
},
importCityList() {
return this.tradeCityList.filter((item) => item.type == 1);
},
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: {
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 ''
},
getList() {
this.loading = true;
// 处理查询参数
let params = {...this.queryParams};
this.addBeginAndEndTime(params, this.dateRangeCreateTime, "createTime");
// 执行查询
payablePage(params).then((response) => {
this.orderData = response.data.list;
this.total = response.data.total;
this.loading = false;
this.$nextTick(() => {
this.list.forEach(itm => {
const t = this.orderData.find(v => v.id == itm.id)
t && this.$refs.multipleTable.toggleRowSelection(t, true)
})
})
});
},
getUserList(val) {
getCustomerPage({pageNo: 1, pageSize: 20, name: val}).then(r => {
this.allSupplier = r.data.list
})
},
getSummaries(param) {
console.log(param)
const {columns, data} = param;
const sums = new Array(columns.length).map(v => '');
const index = sums.length - 1
sums[index - 1] = this.$t('价税合计大写')
const t = data.map(v => v.total).reduce((prev, curr) => {
return parseFloat(prev) + parseFloat(curr);
}, 0)
sums[index] = this.convertCurrency(t)
return sums;
},
/** 新增按钮操作 */
handleAdd() {
this.open = true;
},
submitForm(val) {
this.form.addType = val;
this.$refs.form.validate((valid) => {
if (valid) {
this.$refs.forms.validate((val) => {
if (val) {
const params = {...this.form}
if (this.list && this.list.length > 0) {
params.commissionPayableReqVOList = [...this.list]
} else {
this.$modal.msgError(this.$t('请选择客户未付款项'));
return
}
if (!params.customerBankAccount) {
this.$modal.msgError(this.$t('请前往客户档案编辑银行账号!'));
return
}
if (this.id && this.id !== '0') {
commissionPaymentUpdate(params).then(res => {
this.$modal.msgSuccess(this.$t('修改成功'));
// this.$router.back();
})
} else {
commissionPayment(params).then(res => {
this.$modal.msgSuccess(this.$t('新增成功'));
// this.$router.back();
})
}
}
})
}
})
},
selectChangeBank(val) {
this.$forceUpdate()
// var bank = this.bankData.find(item => item.bankAccount == this.form.supplierBankAccount)
// this.form.supplierBank = bank.bankName
// this.form.supplierBankAccountName = bank.accountName
},
selectChange(val) {
if(val){
getCustomer(val).then(r => {
this.$set(this.form, 'customerBank',r.data.bank )
this.$set(this.form, 'customerBankAccount',r.data.bankNumber )
this.$set(this.form, 'customerBankAccountName',r.data.name )
})
}
// this.bankData = []
// // this.form.supplierBankAccount=''
// if (val) {
// getSupplier(val).then((res) => {
// this.bankData = res.data.bankList
// var bank = this.bankData.find(item => item.bankAccount == this.form.supplierBankAccount)
// if (this.bankData.length == 0 || !bank) this.form.supplierBankAccount = ''
// })
// }
//
// const t = this.allSupplier.find(v => v.id == val)
//
// t && (this.form.supplierName = t.companyZh)
// t && (this.bankData = t.bankList)
},
handleQuery() {
this.queryParams.page = 1;
this.getList()
},
UStoRMB() {
return NP.divide(this.currencyList.find(v => v.titleEn === 'USD').huilv, 100).toFixed(6)
},
NANtoRMB() {
return NP.divide(this.currencyList.find(v => v.titleEn === 'NGN').huilv, 100).toFixed(6)
},
handleSelectionChange(val) {
this.multipleSelection = val.map(v => {
var rate = NP.divide(this.currencyList.find(vs => vs.id === v.currencyId).huilv, 100).toFixed(6)
return Object.assign(v, {exchangeRate: rate})
});
},
hiddenDialog() {
this.open = false;
},
saveSelectList() {
if (this.id && this.id !== '0') {
this.list = [...this.defaultList, ...this.multipleSelection]
} else {
this.list = this.multipleSelection
}
this.open = false;
},
convertCurrency(money) {
//汉字的数字
var cnNums = new Array('', this.$t(''), this.$t(''), this.$t(''), this.$t(''), this.$t(''), this.$t(''), this.$t(''), this.$t(''), '');
//基本单位
var cnIntRadice = new Array('', this.$t(''), this.$t(''), '');
//对应整数部分扩展单位
var cnIntUnits = new Array('', this.$t(''), this.$t('亿'), '');
//对应小数部分单位
var cnDecUnits = new Array('', this.$t(''), this.$t(''), '');
//整数金额时后面跟的字符
var cnInteger = this.$t('');
//整型完以后的单位
var cnIntLast = this.$t('');
//最大处理的数字
var maxNum = 999999999999999.9999;
//金额整数部分
var integerNum;
//金额小数部分
var decimalNum;
//输出的中文金额字符串
var chineseStr = '';
//分离金额后用的数组,预定义
var parts;
// 传入的参数为空情况
if (money === '') {
return '';
}
money = parseFloat(money)
if (money >= maxNum) {
return ''
}
// 传入的参数为0情况
if (money === 0) {
chineseStr = cnNums[0] + cnIntLast + cnInteger;
return chineseStr
}
// 转为字符串
money = money.toString();
// indexOf 检测某字符在字符串中首次出现的位置 返回索引值(从0 开始) -1 代表无
if (money.indexOf('.') == -1) {
integerNum = money;
decimalNum = ''
} else {
parts = money.split('.');
integerNum = parts[0];
decimalNum = parts[1].substr(0, 4);
}
//转换整数部分
if (parseInt(integerNum, 10) > 0) {
let zeroCount = 0;
let IntLen = integerNum.length
for (let i = 0; i < IntLen; i++) {
let n = integerNum.substr(i, 1);
let p = IntLen - i - 1;
let q = p / 4;
let m = p % 4;
if (n == '0') {
zeroCount++;
} else {
if (zeroCount > 0) {
chineseStr += cnNums[0]
}
zeroCount = 0;
chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
}
if (m == 0 && zeroCount < 4) {
chineseStr += cnIntUnits[q];
}
}
// 最后+ 元
chineseStr += cnIntLast;
}
// 转换小数部分
if (decimalNum != '') {
let decLen = decimalNum.length;
for (let i = 0; i < decLen; i++) {
let n = decimalNum.substr(i, 1);
if (n != '0') {
chineseStr += cnNums[Number(n)] + cnDecUnits[i]
}
}
}
if (chineseStr == '') {
chineseStr += cnNums[0] + cnIntLast + cnInteger;
} else if (decimalNum == '') {
chineseStr += cnInteger;
}
return chineseStr
},
openDialog() {
this.getList()
},
oninput(num) {
let str = num
let len1 = str.substr(0, 1)
let len2 = str.substr(1, 1)
//如果第一位是0,第二位不是点,就用数字把点替换掉
if (str.length > 1 && len1 == 0 && len2 != '.') {
str = str.substr(1, 1)
}
//第一位不能是.
if (len1 == '.') {
str = ''
}
//限制只能输入一个小数点
if (str.indexOf('.') != -1) {
let str_ = str.substr(str.indexOf('.') + 1)
if (str_.indexOf('.') != -1) {
str = str.substr(0, str.indexOf('.') + str_.indexOf('.') + 1)
} else {
// if (str_.length > 2) {
// str = str.substr(0, str.indexOf('.') + 1) + str_.substr(0, 2)
// }
}
}
//正则替换
str = str.replace(/[^\d^\.]+/g, '') // 保留数字和小数点
// str = str.replace(/\.\d\d\d$/,'') // 小数点后只能输两位
return str
}
},
watch:{
'form.customerId'(val){
this.selectChange(val)
}
}
};
</script>
<style scoped>
.card {
margin-top: 20px;
}
.dialog-footer {
padding: 40px;
}
.card-title {
font-size: 18px;
font-weight: bold;
}
.bpm-title {
font-size: 20px;
font-weight: bold;
color: #666;
margin: 20px 0;
}
</style>
...@@ -53,20 +53,21 @@ ...@@ -53,20 +53,21 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('状态')"> <el-form-item :label="$t('状态')">
<dict-selector :type="DICT_TYPE.ECW_PAYMENT_STATE" v-model="queryParams.state" /> <dict-selector :type="DICT_TYPE.PAYMENT_STATE" v-model="queryParams.state"/>
</el-form-item> </el-form-item>
</el-row> </el-row>
<el-row :span="24"> <el-row :span="24">
<el-form-item :label="$t('业务员')"> <el-form-item :label="$t('业务员')">
<!-- <el-select v-model="form.salesmanId" :placeholder="$t('请选择业务员')"> <!-- <el-select v-model="form.salesmanId" :placeholder="$t('请选择业务员')">
<el-option <el-option
v-for="item in creatorData" v-for="item in creatorData"
:key="item.id" :key="item.id"
:label="item.nickname" :label="item.nickname"
:value="item.id" :value="item.id"
/> />
</el-select> --> </el-select> -->
<el-select v-model="form.salesmanId" filterable :placeholder="$t('请选择业务员')" @change="v => form.salesmanName = creatorData.find(t => t.id === v).nickname"> <el-select v-model="form.salesmanId" filterable :placeholder="$t('请选择业务员')"
@change="v => form.salesmanName = creatorData.find(t => t.id === v).nickname">
<el-option <el-option
v-for="item in creatorData" v-for="item in creatorData"
:key="item.id" :key="item.id"
...@@ -90,8 +91,8 @@ ...@@ -90,8 +91,8 @@
v-model="queryParams.invoiceStatus" v-model="queryParams.invoiceStatus"
:placeholder="$t('请选择是否开票')" :placeholder="$t('请选择是否开票')"
> >
<el-option :label="$t('未开票')" value="0" /> <el-option :label="$t('未开票')" value="0"/>
<el-option :label="$t('已开票')" value="1" /> <el-option :label="$t('已开票')" value="1"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
...@@ -106,12 +107,12 @@ ...@@ -106,12 +107,12 @@
<span>{{ scope.$index + 1 }}</span> <span>{{ scope.$index + 1 }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('付款单号')" align="center" prop="paymentNo" > <el-table-column :label="$t('付款单号')" align="center" prop="paymentNo">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="color: #1890ff;" @click="paymentDetail(scope.row)">{{scope.row.paymentNo}}</span> <span style="color: #1890ff;" @click="paymentDetail(scope.row)">{{ scope.row.paymentNo }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('供应商')" align="center" prop="supplierName" /> <el-table-column :label="$t('供应商')" align="center" prop="supplierName"/>
<el-table-column :label="$t('创建时间')" align="center" prop="createTime"> <el-table-column :label="$t('创建时间')" align="center" prop="createTime">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
...@@ -140,18 +141,37 @@ ...@@ -140,18 +141,37 @@
align="center" align="center"
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
> >
<template slot-scope="scope"> <template v-slot="{row}">
<el-button v-if="scope.row.state == 0 ||scope.row.state == 1 || scope.row.state == 3" size="mini" @click="handleAdd(scope.row.id)" v-hasPermi="['ecw:paymentVoucher:edit']" type="text">{{ $t('编辑') }}</el-button> <el-button v-if="[0,2].includes(row.state)" size="mini" @click="handleAdd(row.id)"
<el-button v-if="scope.row.state == 1 || scope.row.state == 3" size="mini" v-hasPermi="['ecw:paymentVoucher:process']" type="text" @click="examineClick(scope.row.id)">{{ $t('审核') }}</el-button> v-hasPermi="['ecw:paymentVoucher:edit']" type="text">{{ $t('编辑') }}
</el-button>
<!-- <el-button v-if="[1,3].includes(row.state)" size="mini" v-hasPermi="['ecw:paymentVoucher:process']" type="text" @click="examineClick(scope.row.id)">{{ $t('审核') }}</el-button>-->
<el-button type="text" v-if="[1].includes(row.state)" @click="bridgeFn(1, '取消审核',row)">
{{ $t('取消审核') }}
</el-button>
<el-button type="text" v-if="[1,7].includes(row.state)">{{ $t('审核详情') }}</el-button>
<el-button type="text" v-if="[4,7].includes(row.state)" @click="bridgeFn(2, '取消付款单反审核',row)" >{{ $t('取消反审核') }}</el-button>
<el-button type="text" v-if="[5].includes(row.state)" @click="bridgeFn(3, '取消付款单核销',row)" >{{ $t('取消核销审核') }}</el-button>
<el-button v-if="scope.row.state == 2" size="mini" type="text" v-hasPermi="['ecw:paymentVoucher:print']" @click="verifyCancelClick(scope.row)">{{ $t('反审核') }}</el-button> <el-button v-if="[4].includes(row.state)" size="mini" type="text" v-hasPermi="['ecw:paymentVoucher:print']"
<el-button v-if="scope.row.state == 2" size="mini" type="text" v-hasPermi="['ecw:paymentVoucher:writeOff']" @click="verificationClick(scope.row)">{{ $t('核销') }}</el-button> @click="verifyCancelClick(row)">{{ $t('反审核') }}
</el-button>
<el-button v-if="[4].includes(row.state)" size="mini" type="text" v-hasPermi="['ecw:paymentVoucher:writeOff']"
@click="verificationClick(row)">{{ $t('核销') }}
</el-button>
<el-button v-if="scope.row.state == 4" size="mini" type="text" v-hasPermi="['ecw:paymentVoucher:cancelWriteOff']" @click="verificationCancelClick(scope.row)">{{ $t('反核销') }}</el-button> <el-button v-if="[6].includes(row.state)" size="mini" type="text"
v-hasPermi="['ecw:paymentVoucher:cancelWriteOff']" @click="verificationCancelClick(row)">
{{ $t('反核销') }}
</el-button>
<!-- <el-button v-if="scope.row.state == 3" size="mini" type="text">{{ $t('开票') }}</el-button> --> <!-- <el-button v-if="scope.row.state == 3" size="mini" type="text">{{ $t('开票') }}</el-button> -->
<el-button size="mini" type="text" @click="toprint(scope.row.id)" v-hasPermi="['ecw:paymentVoucher:print']">{{ $t('打印') }}</el-button> <el-button v-if="[6,4].includes(row.state)" size="mini" type="text" @click="toprint(row.id)"
<el-button v-if="scope.row.state == 1 || scope.row.state == 3" size="mini" type="text" v-hasPermi="['ecw:paymentVoucher:delete']" @click="deleteClick(scope.row)">{{ $t('删除') }}</el-button> v-hasPermi="['ecw:paymentVoucher:print']">{{ $t('打印') }}
</el-button>
<el-button v-if="[0,2].includes(row.state)" size="mini" type="text" v-hasPermi="['ecw:paymentVoucher:delete']"
@click="deleteClick(row)">{{ $t('删除') }}
</el-button>
<!-- <el-button size="mini" type="text" @click="open = true">{{ $t('导出订单') }}</el-button> --> <!-- <el-button size="mini" type="text" @click="open = true">{{ $t('导出订单') }}</el-button> -->
</template> </template>
</el-table-column> </el-table-column>
...@@ -182,26 +202,50 @@ ...@@ -182,26 +202,50 @@
</div> </div>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button type="primary" style="width: 130px" @click="submitForm" <el-button type="primary" style="width: 130px" @click="submitForm"
>{{ $t('国内账单') }}</el-button >{{ $t('国内账单') }}
</el-button
> >
<el-button <el-button
plain plain
type="primary" type="primary"
style="width: 130px; margin: 0" style="width: 130px; margin: 0"
@click="submitForm" @click="submitForm"
>Debite note</el-button >Debite note
</el-button
> >
</div> </div>
</el-dialog> </el-dialog>
<!--对话框 审核 -->
<el-dialog width="30%" :title="examineTitle" :visible.sync="examineShow">
<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="examineShow = false">{{ $t('取消') }}</el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { userList,listSimpleUsers } from "@/api/system/user"; import {userList, listSimpleUsers} from "@/api/system/user";
import { DICT_TYPE } from "@/utils/dict"; import {DICT_TYPE} from "@/utils/dict";
import CustomerSelector from "@/components/CustomerSelector"; import CustomerSelector from "@/components/CustomerSelector";
import { getSupplierPage } from "@/api/ecw/supplier"; import {getSupplierPage} from "@/api/ecw/supplier";
import { getPaymentList, deletePayment, paymentVerification, paymentVerificationCancel, paymentVerifyCancel } from "@/api/ecw/financial" import {
getPaymentList,
deletePayment,
paymentVerification,
paymentVerificationCancel,
paymentVerifyCancel,
cancelFinancePaymentApproval,
cancelFinancePaymentApprovalNo,
cancelFinancePaymentWriteOff,
cancelFinancePaymentWriteOffNo
} from "@/api/ecw/financial"
export default { export default {
name: "EcwFinancialPaymentvoucher", name: "EcwFinancialPaymentvoucher",
...@@ -210,6 +254,11 @@ export default { ...@@ -210,6 +254,11 @@ export default {
}, },
data() { data() {
return { return {
examineShow: false,
examineTitle: '',
examineIndex: 0,
examineData: {},
cancelReason: '',
open: false, open: false,
showSearch: true, showSearch: true,
loadings: false, loadings: false,
...@@ -245,15 +294,15 @@ export default { ...@@ -245,15 +294,15 @@ export default {
}, },
}; };
}, },
activated(){ activated() {
this.handleQuery() this.handleQuery()
}, },
created() { created() {
let that = this; let that = this;
listSimpleUsers().then((res) => (that.creatorData = res.data)); listSimpleUsers().then((res) => (that.creatorData = res.data));
// userList("salesman").then((res) => (that.creatorData = res.data)); // userList("salesman").then((res) => (that.creatorData = res.data));
getSupplierPage({ pageNo: "1", pageSize: "10000" }).then((res) => { getSupplierPage({pageNo: "1", pageSize: "10000"}).then((res) => {
const { data } = res; const {data} = res;
this.allSupplier = data.list; this.allSupplier = data.list;
}); });
this.getList() this.getList()
...@@ -263,7 +312,7 @@ export default { ...@@ -263,7 +312,7 @@ export default {
getList() { getList() {
this.loading = true; this.loading = true;
// 处理查询参数 // 处理查询参数
let params = { ...this.queryParams }; let params = {...this.queryParams};
this.addBeginAndEndTime(params, this.queryParams.beginCreateTime, "createTime"); this.addBeginAndEndTime(params, this.queryParams.beginCreateTime, "createTime");
// 执行查询 // 执行查询
getPaymentList(params).then((response) => { getPaymentList(params).then((response) => {
...@@ -272,7 +321,7 @@ export default { ...@@ -272,7 +321,7 @@ export default {
this.loading = false; this.loading = false;
}); });
}, },
paymentDetail(row){ paymentDetail(row) {
const id = row.id; const id = row.id;
return this.$router.push("paymentDetail?id=" + id); return this.$router.push("paymentDetail?id=" + id);
}, },
...@@ -302,39 +351,43 @@ export default { ...@@ -302,39 +351,43 @@ export default {
}, },
deleteClick(row) { deleteClick(row) {
const id = row.id; const id = row.id;
this.$modal.confirm(this.$t('是否确认删除该付款单')+'?').then(function() { this.$modal.confirm(this.$t('是否确认删除该付款单') + '?').then(function () {
return deletePayment(id); return deletePayment(id);
}).then(() => { }).then(() => {
this.getList(); this.getList();
this.$modal.msgSuccess(this.$t('删除成功')); this.$modal.msgSuccess(this.$t('删除成功'));
}).catch(() => {}); }).catch(() => {
});
}, },
verificationClick(row) { verificationClick(row) {
const id = row.id; const id = row.id;
this.$modal.confirm(this.$t('您确认要核销吗')+'?').then(function() { this.$modal.confirm(this.$t('您确认要核销吗') + '?').then(function () {
return paymentVerification(id); return paymentVerification(id);
}).then(() => { }).then(() => {
this.getList(); this.getList();
this.$modal.msgSuccess(this.$t('核销成功')); this.$modal.msgSuccess(this.$t('核销成功'));
}).catch(() => {}); }).catch(() => {
});
}, },
verificationCancelClick(row) { verificationCancelClick(row) {
const id = row.id; const id = row.id;
this.$modal.confirm(this.$t('您确认要反核销吗')+'?').then(function() { this.$modal.confirm(this.$t('您确认要反核销吗') + '?').then(function () {
return paymentVerificationCancel(id); return paymentVerificationCancel(id);
}).then(() => { }).then(() => {
this.getList(); this.getList();
this.$modal.msgSuccess(this.$t('反核销成功')); this.$modal.msgSuccess(this.$t('反核销成功'));
}).catch(() => {}); }).catch(() => {
});
}, },
verifyCancelClick(row) { verifyCancelClick(row) {
const id = row.id; const id = row.id;
this.$modal.confirm(this.$t('您确认要反审核吗')+'?').then(function() { this.$modal.confirm(this.$t('您确认要反审核吗') + '?').then(function () {
return paymentVerifyCancel(id); return paymentVerifyCancel(id);
}).then(() => { }).then(() => {
this.getList(); this.getList();
this.$modal.msgSuccess(this.$t('反审核成功')); this.$modal.msgSuccess(this.$t('反审核成功'));
}).catch(() => {}); }).catch(() => {
});
}, },
toprint(id) { toprint(id) {
return this.$router.push("printPaymentVoucher?id=" + id); return this.$router.push("printPaymentVoucher?id=" + id);
...@@ -346,14 +399,50 @@ export default { ...@@ -346,14 +399,50 @@ export default {
cancel() { cancel() {
this.open = false; this.open = false;
}, },
bridgeFn(index, title, row) {
this.examineIndex = index;
this.examineTitle = title;
this.examineData = row;
this.examineShow = true;
},
cancelWriteOffClick() {
if(!this.cancelReason){
return this.$message.warning(this.$t('请输入申请理由!'))
}
let successFn = () => {
this.getList();
this.$message('取消成功');
this.examineShow = false;
}
let loserFn = () => {
this.examineShow = false;
}
let {id: paymentId} = this.examineData
let p = {paymentId, remark: this.cancelReason}
switch (this.examineIndex) {
case 1:
// 取消审核
cancelFinancePaymentApproval(p).then(successFn,loserFn)
break
case 2:
// 取消付款单反审核
cancelFinancePaymentApprovalNo(p).then(successFn,loserFn)
break
case 3:
//取消付款单核销
cancelFinancePaymentWriteOffNo(p).then(successFn,loserFn)
case 4:
}
}
}, },
}; };
</script> </script>
<style scoped> <style scoped>
.card { .card {
margin-top: 20px; margin-top: 20px;
} }
.dialog-footer { .dialog-footer {
padding: 30px; padding: 30px;
display: flex; display: flex;
...@@ -362,6 +451,7 @@ export default { ...@@ -362,6 +451,7 @@ export default {
justify-content: space-between; justify-content: space-between;
height: 160px; height: 160px;
} }
.card-title { .card-title {
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
......
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