外协结算接口联调

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

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

@ -6,7 +6,7 @@
<div> <div>
<el-radio-group v-model="formData.result"> <el-radio-group v-model="formData.result">
<el-radio label="1">通过</el-radio> <el-radio label="1">通过</el-radio>
<el-radio label="0">不通过</el-radio> <el-radio label="2">不通过</el-radio>
</el-radio-group> </el-radio-group>
</div> </div>
</div> </div>
@ -20,26 +20,26 @@
</div> </div>
<div class="tip_box"> <div class="tip_box">
<div style="margin-left:10px;margin-right:30px;">结算总批数{{totalCount}}</div> <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>结算总金额(){{totalMoney}}</div>
</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="#" 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="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="ocName" align="center"></el-table-column> <el-table-column label="结算批数" prop="batchCount" align="center"></el-table-column>
<el-table-column label="结算金额(元)" prop="money" align="center"></el-table-column> <el-table-column label="结算金额(元)" prop="monthAmount" align="center"></el-table-column>
</el-table> </el-table>
<el-table :data="factoryTypeData" v-if="checkBtn == '2'"> <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="#" 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="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="ocName" align="center"></el-table-column> <el-table-column label="结算大类" prop="statementCategory" 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="总面积(dm²)" prop="area" align="center"></el-table-column> <el-table-column label="总面积(dm²)" prop="totalArea" align="center"></el-table-column>
<el-table-column label="面积月占比(%)" prop="area" align="center"></el-table-column> <el-table-column label="面积月占比(%)" prop="areaMonthRatio" align="center"></el-table-column>
<el-table-column label="月结算金额(元)" prop="area" align="center"></el-table-column> <el-table-column label="月结算金额(元)" prop="monthAmount" align="center"></el-table-column>
<el-table-column label="金额月占比(%)" prop="area" align="center"></el-table-column> <el-table-column label="金额月占比(%)" prop="amountMonthRatio" align="center"></el-table-column>
</el-table> </el-table>
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
@ -51,11 +51,20 @@
</template> </template>
<script> <script>
import {approvalDetailList,approvalSubmit} from '@/api/outsourcingManagement/oemOrderSettlement'
export default { export default {
props:{ props:{
showDialog:{ showDialog:{
type: Boolean, type: Boolean,
default: false default: false
},
checkId:{
type: String,
default: ''
},
approvalType:{
type: Number,
default: 1
} }
}, },
data(){ data(){
@ -64,16 +73,20 @@ export default {
formData:{ formData:{
result:'1' result:'1'
}, },
loading:false,
checkBtn:'1', checkBtn:'1',
totalCount:90, totalCount:0,
totalArea:90.111, totalArea:0,
totalMoney:352, totalMoney:0,
factoryData:[], factoryData:[],
factoryTypeData:[], factoryTypeData:[],
} }
}, },
mounted(){ mounted(){
this.openShow = this.showDialog this.openShow = this.showDialog
if(this.checkId){
this.getDetailList()
}
}, },
methods:{ methods:{
closeDialog(val){ closeDialog(val){
@ -82,9 +95,50 @@ export default {
}, },
changeView(val){ changeView(val){
this.checkBtn = 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(){ 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-input v-model="form.price"></el-input>
</el-form-item> </el-form-item>
<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-item>
</el-form> </el-form>
</template> </template>
<template #menu-right> <template #menu-right>
<el-button type="primary" @click="handleMatch">匹配标准工序代码</el-button> <el-button type="primary" @click="handleMatch" v-if="permission.settlementAnomaly_matchingStandard">匹配标准工序代码</el-button>
<el-button type="primary" @click="handleUpdate">更新数据</el-button> <el-button type="primary" @click="handleUpdate" v-if="permission.settlementAnomaly_updateData">更新数据</el-button>
</template> </template>
<template #menu> <template #menu>
@ -30,7 +30,7 @@
<script> <script>
import settlementDailog from './SettlementDailog.vue' import settlementDailog from './SettlementDailog.vue'
import {getStatement,calculate,matchStandard,updateData} from "@/api/outsourcingManagement/oemOrderSettlement" import {getStatement,calculate,matchStandard,updateData} from "@/api/outsourcingManagement/oemOrderSettlement"
import { mapGetters } from 'vuex';
export default { export default {
components: { components: {
settlementDailog settlementDailog
@ -491,6 +491,9 @@ export default {
settlementType: 'settle', settlementType: 'settle',
} }
}, },
computed: {
...mapGetters(['permission']),
},
methods: { methods: {
refreshTable() { refreshTable() {
this.onLoad(); this.onLoad();

@ -1,11 +1,12 @@
<template> <template>
<div> <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" @row-del="rowDel" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange" @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" @on-load="onLoad"> @refresh-change="refreshChange">
<template #menu-left> <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>
<template #menu-right> <template #menu-right>
@ -19,6 +20,7 @@
</template> </template>
<script> <script>
import {getStatement} from "@/api/outsourcingManagement/oemOrderSettlement" import {getStatement} from "@/api/outsourcingManagement/oemOrderSettlement"
import { mapGetters } from 'vuex';
export default { export default {
components: { components: {
@ -28,7 +30,12 @@ export default {
selectionList: [], selectionList: [],
data:[], data:[],
loading:false, loading:false,
query:{}, query:{
rosStatusList:7,
},
searchParams:{
rosStatusList:7,
},
option: { option: {
height: 'auto', height: 'auto',
calcHeight: 32, calcHeight: 32,
@ -367,11 +374,11 @@ export default {
}, },
{ {
label: '结算状态', label: '结算状态',
prop: 'rosStatus', prop: 'rosStatusName',
sortable: true, sortable: true,
filter: true, filter: true,
span: 24, span: 24,
search: true, search: false,
width: 120, width: 120,
searchOrder:2, searchOrder:2,
}, },
@ -432,6 +439,48 @@ export default {
} }
}, },
{
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, isOpen: false,
} }
}, },
computed: {
...mapGetters(['permission']),
},
methods: { methods: {
batchMaintain() { batchMaintain() {
this.isOpen = true this.isOpen = true
@ -521,13 +573,21 @@ export default {
this.selectionList = list; this.selectionList = list;
}, },
searchChange(params, done) { searchChange(params, done) {
this.query = params; this.query = {
...params,
rosStatusList:'7',
};
this.page.currentPage = 1; this.page.currentPage = 1;
this.onLoad(); this.onLoad();
done && done(); done && done();
}, },
searchReset() { searchReset() {
this.query = {}; this.query = {
rosStatusList:'7',
};
this.searchParams = {
rosStatusList:7,
}
this.page.currentPage = 1; this.page.currentPage = 1;
this.onLoad(); this.onLoad();
}, },
@ -547,7 +607,6 @@ export default {
getStatement({ getStatement({
current:this.page.currentPage, current:this.page.currentPage,
size:this.page.pageSize, size:this.page.pageSize,
rosStatusList:'4,5',
...this.query ...this.query
}).then(res =>{ }).then(res =>{
this.data = res.data.data.records this.data = res.data.data.records

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

Loading…
Cancel
Save