外协结算接口联调

dev-scheduling
jinna 1 month ago
parent 72bf7a44a0
commit c1b457f624
  1. 36
      src/api/outsourcingManagement/oemOrderSettlement.js
  2. 77
      src/views/oem/oemOrderSettlement/components/inReview.vue
  3. 84
      src/views/oem/oemOrderSettlement/components/proofreadingAndReview.vue
  4. 11
      src/views/oem/oemOrderSettlement/components/settlementAnomaly.vue
  5. 77
      src/views/oem/oemOrderSettlement/components/settlementCompleted.vue
  6. 36
      src/views/oem/oemOrderSettlement/components/underReview.vue

@ -95,4 +95,40 @@ export const confirmSettlement = params => {
method: 'post',
data: params,
});
};
// 发送审批
export const sendApproval = params => {
return request({
url: '/api/blade-desk/mesOemStatement/submitApproval',
method: 'post',
data: params,
});
};
// 审批列表
export const approvalList = params => {
return request({
url: '/api/blade-desk/oemSettlementApproval/page',
method: 'get',
params: params,
});
};
// 审批明细列表
export const approvalDetailList = params => {
return request({
url: '/api/blade-desk/oemSettlementApproval/detailList',
method: 'get',
params: params,
});
};
// 提交审批
export const approvalSubmit = params => {
return request({
url: '/api/blade-desk/oemSettlementApproval/submit',
method: 'post',
data: params,
});
};

@ -7,17 +7,24 @@
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange">
<template #menu="scope">
<el-button type="primary" text @click="handleProofread(scope.row)">校对</el-button>
<el-button type="primary" text @click="handleCheck(scope.row)">审核</el-button>
<el-button type="primary" text v-if="(scope.row.approvalStatus == 1 || scope.row.approvalStatus == 2) && permission.inReview_proofread" @click="handleProofread(scope.row)">校对</el-button>
<el-button type="primary" text v-if="scope.row.approvalStatus == 5 && permission.inReview_check" @click="handleCheck(scope.row)">审核</el-button>
</template>
</avue-crud>
<proofreadingAndReview v-if="showDialog" :showDialog="showDialog" @closeDialog="closeDialog"></proofreadingAndReview>
<proofreadingAndReview
v-if="showDialog"
:showDialog="showDialog"
:checkId="checkId"
@closeDialog="closeDialog"
:approvalType="approvalType"
></proofreadingAndReview>
</div>
</template>
<script>
import proofreadingAndReview from './proofreadingAndReview.vue';
import {getStatement} from "@/api/outsourcingManagement/oemOrderSettlement"
import {approvalList} from "@/api/outsourcingManagement/oemOrderSettlement"
import { mapGetters } from 'vuex';
export default {
components:{
proofreadingAndReview
@ -30,12 +37,14 @@ export default {
query:{
rosStatusList:'6',
},
checkId:'',
selectionList:[],
page:{
pageSize: 10,
currentPage: 1,
total: 0,
},
approvalType:1,
showDialog:false,
searchParams:{},
selectionList:[],
@ -88,7 +97,7 @@ export default {
column: [
{
label: '审核编号',
prop: 'checkNo',
prop: 'approvalNo',
sortable: true,
filter: true,
span: 24,
@ -96,7 +105,7 @@ export default {
},
{
label: '结算总批数',
prop: 'num',
prop: 'totalCount',
sortable: true,
filter: true,
span: 24,
@ -104,7 +113,7 @@ export default {
},
{
label: '结算总面积(dm²)',
prop: 'area',
prop: 'totalArea',
sortable: true,
filter: true,
span: 24,
@ -112,7 +121,7 @@ export default {
},
{
label: '结算总金额(元)',
prop: 'area',
prop: 'totalAmount',
sortable: true,
filter: true,
span: 24,
@ -120,7 +129,7 @@ export default {
},
{
label: '结算说明',
prop: 'area',
prop: 'settlementMemo',
sortable: true,
filter: true,
span: 24,
@ -128,7 +137,7 @@ export default {
},
{
label: '审核状态',
prop: 'checkStatus',
prop: 'approvalStatus',
sortable: true,
filter: true,
span: 24,
@ -146,17 +155,21 @@ export default {
},
{
label:"待审核",
value:'3'
value:'5'
},
{
label:"审核通过",
value:'3'
},
{
label:"审核不通过",
value:'4'
},
]
},
{
label: '提交人',
prop: 'area',
prop: 'createUserName',
sortable: true,
filter: true,
span: 24,
@ -164,15 +177,15 @@ export default {
},
{
label: '提交时间',
prop: 'area',
prop: 'submitTime',
sortable: true,
filter: true,
span: 24,
width: 120,
width: 150,
},
{
label: '校对人1',
prop: 'area',
prop: 'proofreader1Name',
sortable: true,
filter: true,
span: 24,
@ -180,15 +193,15 @@ export default {
},
{
label: '校对时间1',
prop: 'area',
prop: 'proofreadTime1',
sortable: true,
filter: true,
span: 24,
width: 120,
width: 150,
},
{
label: '校对人2',
prop: 'area',
prop: 'proofreader2Name',
sortable: true,
filter: true,
span: 24,
@ -196,15 +209,15 @@ export default {
},
{
label: '校对时间2',
prop: 'area',
prop: 'proofreadTime2',
sortable: true,
filter: true,
span: 24,
width: 120,
width: 150,
},
{
label: '审核人',
prop: 'area',
prop: 'approvalUserName',
sortable: true,
filter: true,
span: 24,
@ -212,31 +225,30 @@ export default {
},
{
label: '审核时间',
prop: 'area',
prop: 'approvalTime',
sortable: true,
filter: true,
span: 24,
width: 120,
width: 150,
},
]
}
}
},
computed: {
...mapGetters(['permission']),
},
mounted() {
},
methods:{
searchChange(params, done){
this.query = {
...params,
rosStatusList:'6',
};
this.query = params;
this.page.currentPage = 1;
this.onLoad()
done()
},
searchReset(){
this.query = {
rosStatusList:'6',
}
this.onLoad()
},
@ -255,9 +267,13 @@ export default {
this.onLoad()
},
handleProofread(row){
this.checkId = row.id
this.approvalType = 1
this.showDialog = true
},
handleCheck(row){
this.checkId = row.id
this.approvalType = 2
this.showDialog = true
},
closeDialog(val){
@ -273,11 +289,8 @@ export default {
current:this.page.currentPage,
size:this.page.pageSize,
...this.query,
postPlatingStorageTimeStart:this.query && this.query.putStoreTime && this.query.putStoreTime.length != 0 && this.query.putStoreTime[0],
postPlatingStorageTimeEnd:this.query && this.query.putStoreTime && this.query.putStoreTime.length != 0 && this.query.putStoreTime[1],
}
if(params.putStoreTime) delete params.putStoreTime
getStatement(params).then(res =>{
approvalList(params).then(res =>{
this.data = res.data.data.records
this.page.total = res.data.data.total
this.loading = false

@ -6,7 +6,7 @@
<div>
<el-radio-group v-model="formData.result">
<el-radio label="1">通过</el-radio>
<el-radio label="0">不通过</el-radio>
<el-radio label="2">不通过</el-radio>
</el-radio-group>
</div>
</div>
@ -20,26 +20,26 @@
</div>
<div class="tip_box">
<div style="margin-left:10px;margin-right:30px;">结算总批数{{totalCount}}</div>
<div style="margin-right:30px;">结算总面积(dm²){{totalArea}}</div>
<div style="margin-right:30px;" v-if="checkBtn == 2">结算总面积(dm²){{totalArea}}</div>
<div>结算总金额(){{totalMoney}}</div>
</div>
<el-table :data="factoryData" v-if="checkBtn == '1'">
<el-table :data="factoryData" v-if="checkBtn == '1'" v-loading="loading">
<el-table-column label="#" type="index" width="55px" align="center"></el-table-column>
<el-table-column label="厂家代码" prop="ocCode" align="center"></el-table-column>
<el-table-column label="厂家名称" prop="ocName" align="center"></el-table-column>
<el-table-column label="结算批数" prop="ocName" align="center"></el-table-column>
<el-table-column label="结算金额(元)" prop="money" align="center"></el-table-column>
<el-table-column label="结算批数" prop="batchCount" align="center"></el-table-column>
<el-table-column label="结算金额(元)" prop="monthAmount" align="center"></el-table-column>
</el-table>
<el-table :data="factoryTypeData" v-if="checkBtn == '2'">
<el-table-column label="#" type="index" width="55px" align="center"></el-table-column>
<el-table-column label="厂家代码" prop="ocCode" align="center"></el-table-column>
<el-table-column label="厂家名称" prop="ocName" align="center"></el-table-column>
<el-table-column label="结算批数" prop="ocName" align="center"></el-table-column>
<el-table-column label="结算金额(元)" prop="money" align="center"></el-table-column>
<el-table-column label="总面积(dm²)" prop="area" align="center"></el-table-column>
<el-table-column label="面积月占比(%)" prop="area" align="center"></el-table-column>
<el-table-column label="月结算金额(元)" prop="area" align="center"></el-table-column>
<el-table-column label="金额月占比(%)" prop="area" align="center"></el-table-column>
<el-table-column label="结算大类" prop="statementCategory" align="center"></el-table-column>
<el-table-column label="结算批数" prop="batchCount" align="center"></el-table-column>
<el-table-column label="总面积(dm²)" prop="totalArea" align="center"></el-table-column>
<el-table-column label="面积月占比(%)" prop="areaMonthRatio" align="center"></el-table-column>
<el-table-column label="月结算金额(元)" prop="monthAmount" align="center"></el-table-column>
<el-table-column label="金额月占比(%)" prop="amountMonthRatio" align="center"></el-table-column>
</el-table>
<template #footer>
<span class="dialog-footer">
@ -51,11 +51,20 @@
</template>
<script>
import {approvalDetailList,approvalSubmit} from '@/api/outsourcingManagement/oemOrderSettlement'
export default {
props:{
showDialog:{
type: Boolean,
default: false
},
checkId:{
type: String,
default: ''
},
approvalType:{
type: Number,
default: 1
}
},
data(){
@ -64,16 +73,20 @@ export default {
formData:{
result:'1'
},
loading:false,
checkBtn:'1',
totalCount:90,
totalArea:90.111,
totalMoney:352,
totalCount:0,
totalArea:0,
totalMoney:0,
factoryData:[],
factoryTypeData:[],
}
},
mounted(){
this.openShow = this.showDialog
if(this.checkId){
this.getDetailList()
}
},
methods:{
closeDialog(val){
@ -82,9 +95,50 @@ export default {
},
changeView(val){
this.checkBtn = val
this.getDetailList()
},
getDetailList(){
this.loading = true
let params = {
approvalId:this.checkId,
groupByOc:this.checkBtn == 1 ? true : false
}
approvalDetailList(params).then(res =>{
console.log('res--------------',res)
if(this.checkBtn == 1){
this.factoryData = res.data.data
this.totalCount = res.data.data.reduce((total, item) => {
// 使(+) Number() value
return total + +item.batchCount;
}, 0);
this.totalArea = res.data.data.reduce((total, item) => {
// 使(+) Number() value
return total + +item.totalArea;
}, 0);
this.totalMoney = res.data.data.reduce((total, item) => {
// 使(+) Number() value
return total + +item.monthAmount;
}, 0);
this.loading = false
}else{
this.factoryTypeData = res.data.data
this.loading = false
}
})
},
submit(){
this.closeDialog()
let params = {
approvalType:this.approvalType,
approvalId:this.checkId,
approvalResult:this.formData.result,
}
approvalSubmit(params).then(res =>{
if(res.data.code == 200){
this.$message.success(this.approvalType == 1 ? '校对成功' : '审核成功');
this.closeDialog(true)
}
})
},
}
}

@ -11,13 +11,13 @@
<el-input v-model="form.price"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="settlementFnNum">结算</el-button>
<el-button type="primary" @click="settlementFnNum" v-if="permission.settlementAnomaly_settlement">结算</el-button>
</el-form-item>
</el-form>
</template>
<template #menu-right>
<el-button type="primary" @click="handleMatch">匹配标准工序代码</el-button>
<el-button type="primary" @click="handleUpdate">更新数据</el-button>
<el-button type="primary" @click="handleMatch" v-if="permission.settlementAnomaly_matchingStandard">匹配标准工序代码</el-button>
<el-button type="primary" @click="handleUpdate" v-if="permission.settlementAnomaly_updateData">更新数据</el-button>
</template>
<template #menu>
@ -30,7 +30,7 @@
<script>
import settlementDailog from './SettlementDailog.vue'
import {getStatement,calculate,matchStandard,updateData} from "@/api/outsourcingManagement/oemOrderSettlement"
import { mapGetters } from 'vuex';
export default {
components: {
settlementDailog
@ -491,6 +491,9 @@ export default {
settlementType: 'settle',
}
},
computed: {
...mapGetters(['permission']),
},
methods: {
refreshTable() {
this.onLoad();

@ -1,11 +1,12 @@
<template>
<div>
<avue-crud :option="option" :table-loading="loading" :data="data" v-model="form" v-model:page="page" ref="crud"
<avue-crud :option="option" :table-loading="loading" :data="data" v-model="form"
v-model:page="page" ref="crud" v-model:search="searchParams"
@row-del="rowDel" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" @on-load="onLoad">
@refresh-change="refreshChange">
<template #menu-left>
<el-button type="primary" @click="pushERP">推送ERP</el-button>
<el-button type="primary" @click="pushERP" v-if="permission.settlementCompleted_pushERP">推送ERP</el-button>
</template>
<template #menu-right>
@ -19,6 +20,7 @@
</template>
<script>
import {getStatement} from "@/api/outsourcingManagement/oemOrderSettlement"
import { mapGetters } from 'vuex';
export default {
components: {
@ -28,7 +30,12 @@ export default {
selectionList: [],
data:[],
loading:false,
query:{},
query:{
rosStatusList:7,
},
searchParams:{
rosStatusList:7,
},
option: {
height: 'auto',
calcHeight: 32,
@ -367,11 +374,11 @@ export default {
},
{
label: '结算状态',
prop: 'rosStatus',
prop: 'rosStatusName',
sortable: true,
filter: true,
span: 24,
search: true,
search: false,
width: 120,
searchOrder:2,
},
@ -431,6 +438,48 @@ export default {
value:"id"
}
},
{
label: '结算状态',
prop: 'rosStatusList',
sortable: true,
filter: true,
span: 24,
hide: true,
search: true,
width: 120,
type:'select',
searchOrder:12,
clearable:false,
dicData:[
// 1234567
{
label:'结算完成',
value:4
},
{
label:'待推送',
value:7
}
]
},
{
label: '外协厂商',
prop: 'ocIds',
sortable: true,
filter: true,
span: 24,
hide: true,
search: true,
width: 120,
type:'select',
searchOrder:10,
dicUrl:"/api/blade-desk/BA/Oem/listForSelect",
props:{
label:'ocName',
value:"id"
}
},
@ -489,6 +538,9 @@ export default {
isOpen: false,
}
},
computed: {
...mapGetters(['permission']),
},
methods: {
batchMaintain() {
this.isOpen = true
@ -521,13 +573,21 @@ export default {
this.selectionList = list;
},
searchChange(params, done) {
this.query = params;
this.query = {
...params,
rosStatusList:'7',
};
this.page.currentPage = 1;
this.onLoad();
done && done();
},
searchReset() {
this.query = {};
this.query = {
rosStatusList:'7',
};
this.searchParams = {
rosStatusList:7,
}
this.page.currentPage = 1;
this.onLoad();
},
@ -547,7 +607,6 @@ export default {
getStatement({
current:this.page.currentPage,
size:this.page.pageSize,
rosStatusList:'4,5',
...this.query
}).then(res =>{
this.data = res.data.data.records

@ -7,8 +7,8 @@
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange">
<template #menu-left>
<el-button type="primary" @click="settleConfirm">结算确认</el-button>
<el-button type="primary" @click="initiateReview">发起审核</el-button>
<el-button type="primary" @click="settleConfirm" v-if="permission.underReview_settlementConfirm">结算确认</el-button>
<el-button type="primary" @click="initiateReview" v-if="permission.underReview_initiateCheck">发起审核</el-button>
</template>
</avue-crud>
<!-- 结算确认 -->
@ -52,7 +52,8 @@
</template>
<script>
import {getStatement,confirmSettlement} from "@/api/outsourcingManagement/oemOrderSettlement"
import {getStatement,confirmSettlement,sendApproval} from "@/api/outsourcingManagement/oemOrderSettlement"
import { mapGetters } from 'vuex';
export default {
data(){
return{
@ -193,7 +194,7 @@ export default {
},
{
label: '工序',
prop: 'psId',
prop: 'ppsId',
sortable: true,
filter: true,
span: 24,
@ -210,7 +211,7 @@ export default {
},
{
label: '工艺能力',
prop: 'caId',
prop: 'caName',
sortable: true,
filter: true,
span: 24,
@ -476,6 +477,9 @@ export default {
}
}
},
computed: {
...mapGetters(['permission']),
},
mounted() {
},
methods:{
@ -525,9 +529,31 @@ export default {
this.$message.error('请先查询数据!')
return
}
let tmp = this.data.find(item => item.rosStatus != 5)
if(tmp){
this.$message.error('请先查询状态为【待审核】的数据!')
return
}
this.reviewForm = {}
this.isReview = true
},
summitReview(){
this.$refs.reviewForm.validate(valid => {
if(valid){
let params = {
settlementMemo:this.reviewForm.reason
}
sendApproval(params).then(res => {
if(res.data.code == 200){
this.$message.success('发送成功')
this.isReview = false
this.onLoad()
}
})
}
})
},
changeResult(val){
console.log('val-----------------',val)
if(val == 0){

Loading…
Cancel
Save