外协结算修改

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

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

Loading…
Cancel
Save