外协结算修改

dev-scheduling
jinna 2 weeks ago
parent 0245c7d168
commit bccb0abda7
  1. 28
      src/api/outsourcingManagement/oemOrderSettlement.js
  2. 47
      src/views/oem/oemOrderSettlement/components/underReview.vue
  3. 232
      src/views/oem/oemOrderSettlement/components/unsettled.vue

@ -41,3 +41,31 @@ export const approvalItem = params => {
data: params,
});
};
// 预结算(新)
export const preSettlement = params => {
return request({
url: '/api/blade-desk/mesOemStatement/export-preSettlement',
method: 'post',
data: params,
responseType: "blob",
});
};
// 计算(新)
export const calculate = params => {
return request({
url: '/api/blade-desk/mesOemStatement/oemManualSettlement',
method: 'post',
data: params,
});
};
// 补充结算
export const supplement = params => {
return request({
url: '/api/blade-desk/mesOemStatement/oemSupSettlement',
method: 'post',
data: params,
});
};

@ -1,7 +1,8 @@
<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"
v-model:search="searchParams" ref="crud"
@row-del="rowDel" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange">
@ -35,12 +36,16 @@
</template>
<script>
import {getStatement} from "@/api/outsourcingManagement/oemOrderSettlement"
export default {
data(){
return{
loading:false,
data:[],
form:{},
searchParams:{
rosStatusList:2,
},
query:{},
page: {
pageSize: 10,
@ -402,8 +407,32 @@ export default {
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '结算状态',
prop: 'rosStatusList',
sortable: true,
filter: true,
span: 24,
hide: true,
search: true,
width: 120,
type:'select',
searchOrder:10,
clearable:false,
dicData:[
// 1234567
{
label:'待确认',
value:2
},
{
label:'待审核',
value:5
}
]
},
{
label: '外协厂商',
@ -481,11 +510,19 @@ export default {
},
onLoad(){
this.loading = true
this.data = [
{rosStatus:2}
]
this.page.total = this.data.length
let params = {
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 =>{
this.data = res.data.data.records
this.page.total = res.data.data.total
this.loading = false
})
},
}
}

@ -3,7 +3,7 @@
<avue-crud :option="option" :table-loading="loading" :data="data" v-model="form" v-model:page="page" ref="crud"
@row-del="rowDel" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" >
@refresh-change="refreshChange" @sort-change="sortChange">
<!-- @on-load="onLoad" -->
<template #menu-left>
<el-form ref="form" :model="form" label-width="100px" :inline="true">
@ -17,16 +17,20 @@
</el-form-item>
</el-form>
</template>
<template #menu-right></template>
<template #menu-right>
<el-button type="primary" @click="handleSupplement">补充结算</el-button>
</template>
<template #menu></template>
</avue-crud>
<!-- 预结算弹窗 -->
<el-dialog title="预结算" append-to-body :modelValue="openSettle" width="30%" @close="closeDialog">
<el-dialog title="预结算" append-to-body :modelValue="openSettle" width="30%">
<el-form :model="settleForm" :rules="settleRules" ref="settleForm">
<el-form-item label="镀后入库时间" prop="putStoreTime">
<el-date-picker
v-model="settleForm.putStoreTime"
type="daterange"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
></el-date-picker>
</el-form-item>
<el-form-item label="结算数据状态" prop="settleStatus">
@ -44,6 +48,44 @@
</template>
</el-dialog>
<!-- 补充结算弹窗 -->
<el-dialog title="预结算" append-to-body :modelValue="openSupplement" width="30%">
<el-form :model="supplementForm" :rules="supplementRules" ref="supplementForm" label-width="100px">
<el-form-item label="镀后入库时间" prop="putStoreTime">
<el-date-picker
v-model="supplementForm.putStoreTime"
type="daterange"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
></el-date-picker>
</el-form-item>
<el-form-item label="工序" prop="ppsId">
<jhSelect
:value="supplementForm.ppsId"
@input="val => (supplementForm.ppsId = val)"
placeholder="请搜索选择"
api-url="/api/blade-desk/mesOemProcess/page"
echo-api="/api/blade-desk/mesOemProcess/page"
echoParamsKey="ids"
echo-method="get"
api-method="get"
list-key="records"
total-key="total"
label-key="paName"
value-key="id"
search-key="paName"
:debounce-time="200"
/>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="openSupplement = false">取消</el-button>
<el-button type="primary" @click="summitSupplement">确定</el-button>
</span>
</template>
</el-dialog>
<settlementDailog v-if="isOpen" :showDialog="isOpen" :type="settlementType" :statementList="selectionList" :settleResult="settleResult" @closeDialog="closeDialog" @refresh="refreshTable"></settlementDailog>
</div>
</template>
@ -52,8 +94,7 @@ import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
import { downloadXls } from '@/utils/util';
import settlementDailog from './SettlementDailog.vue'
import {getStatement,noSettlementItem,oemSettleAccountsItem,preSettlementItem} from "@/api/outsourcingManagement/oemOrderSettlement"
import { tr } from 'element-plus/es/locales.mjs';
import {getStatement,noSettlementItem,calculate,preSettlement,supplement} from "@/api/outsourcingManagement/oemOrderSettlement"
export default {
components: {
settlementDailog
@ -63,7 +104,9 @@ export default {
selectionList: [],
data:[],
loading:false,
query:{},
query:{
rosStatusList:'1',
},
option: {
height: 'auto',
calcHeight: 32,
@ -115,7 +158,7 @@ export default {
// label: '',
label: '计划单号',
prop: 'ypCode',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: true,
@ -125,7 +168,7 @@ export default {
{
label: '车间订单单号',
prop: 'woCode',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: true,
@ -135,7 +178,7 @@ export default {
{
label: '零件号',
prop: 'partCode',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: true,
@ -145,7 +188,7 @@ export default {
{
label: '零件名称',
prop: 'partName',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: false,
@ -154,7 +197,7 @@ export default {
{
label: '批次号',
prop: 'batchNo',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: false,
@ -163,7 +206,7 @@ export default {
{
label: '质量等级',
prop: 'prodIdent',
sortable: true,
// sortable: 'custom',
filter: true,
span: 24,
search: true,
@ -179,7 +222,7 @@ export default {
{
label:"流程卡号",
prop:"cardNo",
sortable: true,
// sortable: 'custom',
span:24,
search:true,
width: 120,
@ -187,8 +230,8 @@ export default {
},
{
label: '工序',
prop: 'psId',
sortable: true,
prop: 'ppsId',
// sortable: 'custom',
filter: true,
span: 24,
search: true,
@ -207,7 +250,7 @@ export default {
label: '工艺能力',
prop: 'caId',
type:"select",
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: true,
@ -222,7 +265,7 @@ export default {
{
label: '厂家代码',
prop: 'ocCode',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: false,
@ -231,7 +274,7 @@ export default {
{
label: '厂家名称',
prop: 'ocName',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: false,
@ -240,7 +283,7 @@ export default {
{
label: '结算数量',
prop: 'makeQty',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: false,
@ -249,7 +292,7 @@ export default {
{
label: '单位面积(d㎡)',
prop: 'ypArea',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: false,
@ -259,7 +302,7 @@ export default {
{
label: '总面积(d㎡)',
prop: 'totalArea',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: false,
@ -269,7 +312,7 @@ export default {
{
label: '镀种',
prop: 'plate',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: true,
@ -279,7 +322,7 @@ export default {
{
label: '镀层厚度',
prop: 'plateThickness',
sortable: true,
// sortable: 'custom',
filter: true,
span: 24,
search: false,
@ -289,7 +332,7 @@ export default {
{
label: '工序标准代码',
prop: 'standardProcessCode',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: false,
@ -299,7 +342,7 @@ export default {
{
label: '涂色标个数',
prop: 'tsbNum',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: false,
@ -309,7 +352,7 @@ export default {
{
label: '涂色带个数',
prop: 'tsdNum',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: false,
@ -319,7 +362,7 @@ export default {
{
label: '涂箭头个数',
prop: 'tjtNum',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: false,
@ -329,7 +372,7 @@ export default {
{
label: '计划部门编号',
prop: 'planDeptcode',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: false,
@ -338,7 +381,7 @@ export default {
{
label: '使用部门编号',
prop: 'useDeptCode',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: false,
@ -347,7 +390,7 @@ export default {
{
label: '镀后入库时间',
prop: 'putStoreTime',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
search: true,
@ -363,7 +406,7 @@ export default {
{
label: '结算状态',
prop: 'rosStatusName',
sortable: true,
// sortable: 'custom',
filter: true,
span: 24,
search: false,
@ -372,7 +415,7 @@ export default {
// {
// label: '',
// prop: 'makeQty',
// sortable: true,
// sortable: 'custom',
// filter: true,
// span: 24,
// search: false,
@ -383,7 +426,7 @@ export default {
{
label: '外协厂商',
prop: 'ocId',
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
hide: true,
@ -413,6 +456,12 @@ export default {
isOpen: false,
settleResult: null,
openSettle:false,
openSupplement:false,
supplementForm:{},
supplementRules:{
putStoreTime:[{required: true, message: '请选择镀后入库时间', trigger: 'change'}],
ppsId:[{required: true, message: '请选择工序', trigger: ['change','blur']}]
},
settleForm:{},
settleRules:{
settleStatus:[{required: true, message: '请选择结算状态', trigger: 'change'}]
@ -420,14 +469,31 @@ export default {
}
},
methods: {
//
sortChange({ prop, order }) {
console.log('prop----------',prop)
console.log('order----------',order)
this.query.ascs = undefined;
this.query.descs = undefined;
const orderByFieldKey = order === 'ascending' ? 'ascs' : 'descs';
const orderByField = prop.replace(/([a-z])([A-Z0-9])/g, '$1_$2').toUpperCase();
this.query[orderByFieldKey] = orderByField;
// //
this.onLoad(this.page, this.query);
},
searchChange(params, done) {
this.query = params;
this.query = {
...params,
rosStatusList:'1',
};
this.page.currentPage = 1;
this.onLoad();
done && done();
},
searchReset() {
this.query = {};
this.query = {
rosStatusList:'1',
};
this.page.currentPage = 1;
this.onLoad();
},
@ -453,6 +519,11 @@ export default {
// return;
// }
if(this.data.length == 0){
this.$message.error('请先查询数据!');
return;
}
this.$confirm('确定要进行结算吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
@ -460,29 +531,43 @@ export default {
}).then(() => {
//
const params = {
statementList: this.selectionList,
price: this.form.price
...this.query,
price: this.form && this.form.price,
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;
console.log('params',params)
oemSettleAccountsItem(params).then(res => {
//
if (res.data && res.data.data) {
this.settleResult = res.data.data;
// settlementDailog
this.isOpen = true;
} else {
calculate(params).then(res => {
if(res.data.code == 200){
this.$message.success('结算成功');
this.onLoad();
}
}).catch(() => {
this.$message.error('结算失败');
// this.$message.error('');
});
// oemSettleAccountsItem(params).then(res => {
// //
// if (res.data && res.data.data) {
// this.settleResult = res.data.data;
// // settlementDailog
// this.isOpen = true;
// } else {
// this.$message.success('');
// this.onLoad();
// }
// }).catch(() => {
// this.$message.error('');
// });
}).catch(() => {
//
});
},
//
settlementFn() {
this.settleForm = {}
this.openSettle = true
// if (this.selectionList.length === 0) {
@ -520,21 +605,57 @@ export default {
this.$refs.settleForm.validate(valid =>{
if(valid){
console.log('settleForm----------',this.settleForm)
let params = {
postPlatingStorageTimeStart:this.settleForm && this.settleForm.putStoreTime && this.settleForm.putStoreTime[0],
postPlatingStorageTimeEnd:this.settleForm && this.settleForm.putStoreTime && this.settleForm.putStoreTime[1],
rosStatusList:this.settleForm.settleStatus.join(','),
}
console.log('params----------',params)
preSettlement(params).then(res =>{
console.log('res----------',res)
if(res.data){
this.$message.success('预结算成功')
this.openSettle = false
// NProgress.start();
// exportExcel(validData).then(res =>{
// downloadXls(res.data, `${this.$dayjs().format('YYYY-MM-DD')}.xlsx`);
// NProgress.done();
// })
NProgress.start();
downloadXls(res.data, `预结算数据表${this.$dayjs().format('YYYY-MM-DD')}.xlsx`);
NProgress.done();
}
})
}
})
},
closeDialog() {
this.isOpen = false;
},
refreshTable() {
this.onLoad();
},
//
handleSupplement(){
this.supplementForm = {}
this.openSupplement = true
},
//
summitSupplement(){
this.$refs.supplementForm.validate(valid =>{
if(valid){
let params = {
...this.supplementForm,
postPlatingStorageTimeStart:this.supplementForm && this.supplementForm.putStoreTime && this.supplementForm.putStoreTime[0],
postPlatingStorageTimeEnd:this.supplementForm && this.supplementForm.putStoreTime && this.supplementForm.putStoreTime[1],
}
if(params.putStoreTime) delete params.putStoreTime;
console.log('params----------',params)
supplement(params).then(res =>{
if(res.data.code == 200){
this.$message.success('补充结算成功');
this.onLoad()
}
})
}
})
},
onSubmit() {
// if (this.selectionList.length === 0) {
// this.$message.warning('');
@ -580,12 +701,15 @@ export default {
if (this.$refs.crud) {
this.$refs.crud.clearSelection()
}
getStatement({
let params = {
current:this.page.currentPage,
size:this.page.pageSize,
rosStatusList:'1',
...this.query
}).then(res =>{
...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 =>{
this.data = res.data.data.records
this.page.total = res.data.data.total
console.log('返回的数据:', this.data)

Loading…
Cancel
Save