Merge branch 'dev-scheduling' of http://42.192.7.176:3000/suojin/jonhon-mes-web into dev-scheduling

dev-scheduling
zhangdi 4 weeks ago
commit bef4f2a389
  1. 27
      src/views/oem/oemOrderSettlement/components/reviewDailog.vue
  2. 83
      src/views/oem/oemOrderSettlement/components/settlementAnomaly.vue
  3. 30
      src/views/oem/oemOrderSettlement/components/settlementCompleted.vue
  4. 119
      src/views/oem/oemOrderSettlement/components/settlementDailog.vue
  5. 30
      src/views/oem/oemOrderSettlement/components/settlementIn.vue
  6. 124
      src/views/oem/oemOrderSettlement/components/unsettled.vue

@ -31,7 +31,19 @@ export default {
submitBtn: false, submitBtn: false,
emptyBtn: false, emptyBtn: false,
column: [ column: [
{
label: '审批结果',
prop: 'approvalStatus',
span: 24,
type: 'radio',
dicData: [
{ label: '审批通过', value: 2 },
{ label: '审批不通过', value: 3 },
],
rules: [
{ required: true, message: '请选择审批结果', trigger: 'change' }
]
},
{ {
label: '审批意见', label: '审批意见',
prop: 'reason', prop: 'reason',
@ -50,19 +62,6 @@ export default {
rules: [ rules: [
{ required: true, message: '请选择审批意见', trigger: 'change' } { required: true, message: '请选择审批意见', trigger: 'change' }
] ]
},{
label: '审批结果',
prop: 'approvalStatus',
span: 24,
type: 'radio',
dicData: [
{ label: '待审批', value: 1 },
{ label: '审批通过', value: 2 },
{ label: '审批不通过', value: 3 },
],
rules: [
{ required: true, message: '请选择审批结果', trigger: 'change' }
]
}, },
] ]
} }

@ -5,10 +5,12 @@
@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" @on-load="onLoad">
<template #menu-left> <template #menu-left>
<el-form ref="form" :model="formValue" label-width="100px" :inline="true"> <el-form ref="form" :model="form" label-width="100px" :inline="true">
<el-form-item label="现执行价格:">
<el-input v-model="form.price"></el-input>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="settlementFn('settle')">结算</el-button> <el-button type="primary" @click="settlementFnNum">结算</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
@ -20,12 +22,12 @@
</template> </template>
</avue-crud> </avue-crud>
<settlementDailog v-if="isOpen" :showDialog="isOpen" :type="settlementType" :statementList="selectionList" @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>
<script> <script>
import settlementDailog from './SettlementDailog.vue' import settlementDailog from './SettlementDailog.vue'
import {getStatement} from "@/api/outsourcingManagement/oemOrderSettlement" import {getStatement,oemSettleAccountsItem} from "@/api/outsourcingManagement/oemOrderSettlement"
export default { export default {
components: { components: {
@ -158,11 +160,13 @@ export default {
search: true, search: true,
width: 120, width: 120,
type:'select', type:'select',
dicUrl:"/api/blade-desk/bsProcessSet/getProcessSetList", dicUrl:"/api/blade-desk/mesOemProcess/page?current=1&&size=99999",
props:{ props:{
label: 'name', label: 'paName',
value: 'code', value: 'oemProcessCode',
res: 'data.records',
}, },
}, },
{ {
label: '工艺能力', label: '工艺能力',
@ -328,13 +332,13 @@ export default {
] ]
}, },
form: {}, form: {},
formValue:{},
page: { page: {
pageSize: 10, pageSize: 10,
currentPage: 1, currentPage: 1,
total: 0, total: 0,
}, },
isOpen: false, isOpen: false,
settleResult: null,
settlementType: 'settle', settlementType: 'settle',
} }
}, },
@ -345,16 +349,43 @@ export default {
closeDialog() { closeDialog() {
this.isOpen = false this.isOpen = false
}, },
settlementFn(type) { settlementFnNum() {
if (this.selectionList.length === 0) { if (this.selectionList.length === 0) {
this.$message.warning('请选择至少一条数据'); this.$message.error('请选择至少一条数据');
return; return;
} }
this.settlementType = type; if (!this.form.price) {
this.$message.error('请输入现执行价格');
return;
}
this.$confirm('确定要进行结算吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'error',
}).then(() => {
//
const params = {
statementList: this.selectionList,
price: this.form.price
};
oemSettleAccountsItem(params).then(res => {
//
if (res.data && res.data.data) {
this.settleResult = res.data.data;
// settlementDailog
this.isOpen = true; this.isOpen = true;
}, } else {
closeDialog() { this.$message.success('结算成功');
this.isOpen = false this.onLoad();
}
}).catch(() => {
this.$message.error('结算失败');
});
}).catch(() => {
//
});
}, },
handleDelete() { handleDelete() {
if (this.selectionList.length === 0) { if (this.selectionList.length === 0) {
@ -372,6 +403,28 @@ export default {
selectionChange(list) { selectionChange(list) {
this.selectionList = list; this.selectionList = list;
}, },
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad();
done && done();
},
searchReset() {
this.query = {};
this.page.currentPage = 1;
this.onLoad();
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
this.onLoad();
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
this.onLoad();
},
refreshChange() {
this.onLoad();
},
onLoad() { onLoad() {
this.loading = true this.loading = true
getStatement({ getStatement({

@ -149,11 +149,13 @@ export default {
search: true, search: true,
width: 120, width: 120,
type:'select', type:'select',
dicUrl:"/api/blade-desk/bsProcessSet/getProcessSetList", dicUrl:"/api/blade-desk/mesOemProcess/page?current=1&&size=99999",
props:{ props:{
label: 'name', label: 'paName',
value: 'code', value: 'oemProcessCode',
res: 'data.records',
}, },
}, },
{ {
label: '工艺能力', label: '工艺能力',
@ -375,6 +377,28 @@ export default {
selectionChange(list) { selectionChange(list) {
this.selectionList = list; this.selectionList = list;
}, },
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad();
done && done();
},
searchReset() {
this.query = {};
this.page.currentPage = 1;
this.onLoad();
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
this.onLoad();
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
this.onLoad();
},
refreshChange() {
this.onLoad();
},
onLoad() { onLoad() {
this.loading = true this.loading = true
getStatement({ getStatement({

@ -1,62 +1,48 @@
<template> <template>
<el-dialog title="计算" append-to-body :modelValue="openShow" width="30%" @close="closeDialog"> <el-dialog title="计算" append-to-body :modelValue="openShow" width="30%" @close="closeDialog">
<avue-form :option="option" v-model="form"></avue-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="closeDialog"> </el-button>
<el-button type="primary" @click="submit"> </el-button>
</span>
</template>
<div v-if="calculationIn" class="box"> <div v-if="calculationIn" class="box">
<div v-loading="isLoading" style="height:100px"></div> <div v-loading="isLoading" style="height:100px"></div>
<h3>计算中</h3> <h3>计算中</h3>
<div>正在计算(80/100),请勿关闭</div> <div>正在计算(80/100),请勿关闭</div>
</div> </div>
<div v-if="!calculationIn" class="box"> <div v-if="!calculationIn">
<div class="box">
<el-icon style="font-size: 48px;"> <el-icon style="font-size: 48px;">
<DocumentChecked /> <DocumentChecked />
</el-icon> </el-icon>
<h3>计算完成</h3> <h3>计算完成</h3>
</div> </div>
<div v-if="!calculationIn"> <div>
<h4>计算结果</h4> <h4>计算结果</h4>
<div class="box-txt"> <div class="box-txt">
<el-icon style="color:#67c23a;margin-right: 4px;margin-top: 2px;"> <el-icon style="color:#67c23a;margin-right: 4px;margin-top: 2px;">
<SuccessFilled /> <SuccessFilled />
</el-icon>结算成功{{ result.successCount }}条,<i style="color: blue;">待审核></i> </el-icon>{{ successCount }}
</div> </div>
<div class="box-txt"> <div class="box-txt">
<el-icon style="color:#f56c6c;margin-right: 4px;margin-top: 2px;"> <el-icon style="color:#f56c6c;margin-right: 4px;margin-top: 2px;">
<CircleCloseFilled /> <CircleCloseFilled />
</el-icon>结算异常{{ result.exceptionCount }}条,<i style="color: blue;">待审核></i> </el-icon>{{ exceptionCount }}
</div> </div>
</div> </div>
</div>
<template #footer>
<!-- <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="closeDialog"> </el-button> <el-button @click="closeDialog"> </el-button>
<el-button type="primary" @click="submit"> </el-button>
</span> </span>
</template> --> </template>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import {oemSettleAccountsItem,preSettlementItem} from "@/api/outsourcingManagement/oemOrderSettlement"
export default { export default {
props: { props: {
showDialog: { showDialog: {
type: Boolean, type: Boolean,
default: false default: false
}, },
type: { settleResult: {
type: String, type: Object,
default: 'settle' default: null
},
statementList: {
type: Array,
default: () => []
} }
}, },
data() { data() {
@ -64,91 +50,32 @@ export default {
isLoading: true, isLoading: true,
openShow: false, openShow: false,
calculationIn: true, calculationIn: true,
form: {},
result: {
successCount: 0, successCount: 0,
exceptionCount: 0 exceptionCount: 0
},
option: {
submitBtn: false,
emptyBtn: false,
column: [
{
label: '镀后入库时间',
prop: 'putStoreDate',
span: 24,
type: "date",
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
placeholder: '请选择镀后入库时间',
rules: [
{
required: true,
message: "请选择镀后入库时间",
trigger: "change"
} }
]
},
{
label: '现执行价格',
prop: 'price',
type: 'number',
span: 24,
placeholder: '请输入现执行价格',
min: 0,
precision: 2,
}, },
watch: {
] showDialog(val) {
} this.openShow = val;
} }
}, },
mounted() { mounted() {
this.openShow = this.showDialog this.openShow = this.showDialog
//
if (this.settleResult) {
this.calculationIn = true;
setTimeout(() => { setTimeout(() => {
this.calculationIn = false this.calculationIn = false;
}, 2000) this.successCount = this.settleResult.success || 0;
this.exceptionCount = this.settleResult.error || 0;
}, 2000);
}
}, },
methods: { methods: {
closeDialog() { closeDialog() {
this.openShow = false this.openShow = false
this.$emit('closeDialog'); this.$emit('closeDialog');
this.$emit('refresh'); this.$emit('refresh');
},
submit() {
//
if (!this.form.putStoreDate) {
this.$message.warning('请选择镀后入库时间');
return;
}
if (!this.form.price) {
this.$message.warning('请输入现执行价格');
return;
}
const params = {
putStoreDate: this.form.putStoreDate,
price: this.form.price,
statementList: this.statementList
};
const requestFn = this.type === 'pre' ? preSettlementItem : oemSettleAccountsItem;
requestFn(params).then(res => {
this.$message.success(this.type === 'pre' ? '预结算成功' : '结算成功');
//
if (res.data) {
console.log(res.data.data,'resqqqqqqqqqqqq');
this.result.successCount = res.data.data.success || 0;
this.result.exceptionCount = res.data.data.error || 0;
}
// this.closeDialog();
// this.$emit('refresh');
}).catch(() => {
this.$message.error(this.type === 'pre' ? '预结算失败' : '结算失败');
});
} }
} }
} }

@ -152,11 +152,13 @@ export default {
search: true, search: true,
width: 120, width: 120,
type:'select', type:'select',
dicUrl:"/api/blade-desk/bsProcessSet/getProcessSetList", dicUrl:"/api/blade-desk/mesOemProcess/page?current=1&&size=99999",
props:{ props:{
label: 'name', label: 'paName',
value: 'code', value: 'oemProcessCode',
res: 'data.records',
}, },
}, },
{ {
label: '工艺能力', label: '工艺能力',
@ -350,6 +352,28 @@ export default {
selectionChange(list) { selectionChange(list) {
this.selectionList = list; this.selectionList = list;
}, },
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad();
done && done();
},
searchReset() {
this.query = {};
this.page.currentPage = 1;
this.onLoad();
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
this.onLoad();
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
this.onLoad();
},
refreshChange() {
this.onLoad();
},
onLoad() { onLoad() {
this.loading = true this.loading = true
getStatement({ getStatement({

@ -6,10 +6,12 @@
@refresh-change="refreshChange" @on-load="onLoad"> @refresh-change="refreshChange" @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">
<el-form-item label="现执行价格:">
<el-input v-model="form.price"></el-input>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="settlementFn('pre')">预结算</el-button> <el-button type="primary" @click="settlementFn">预结算</el-button>
<el-button type="primary" @click="settlementFn('settle')">结算</el-button> <el-button type="primary" @click="settlementFnNum">结算</el-button>
<el-button type="danger" @click="onSubmit">无需结算</el-button> <el-button type="danger" @click="onSubmit">无需结算</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -22,12 +24,12 @@
</template> </template>
</avue-crud> </avue-crud>
<settlementDailog v-if="isOpen" :showDialog="isOpen" :type="settlementType" :statementList="selectionList" @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>
<script> <script>
import settlementDailog from './SettlementDailog.vue' import settlementDailog from './SettlementDailog.vue'
import {getStatement,noSettlementItem} from "@/api/outsourcingManagement/oemOrderSettlement" import {getStatement,noSettlementItem,oemSettleAccountsItem,preSettlementItem} from "@/api/outsourcingManagement/oemOrderSettlement"
export default { export default {
components: { components: {
settlementDailog settlementDailog
@ -161,22 +163,12 @@ export default {
search: true, search: true,
width: 120, width: 120,
type:'select', type:'select',
dicUrl:"/api/blade-desk/bsProcessSet/getProcessSetList", dicUrl:"/api/blade-desk/mesOemProcess/page?current=1&&size=99999",
props:{ props:{
label: 'name', label: 'paName',
value: 'code', value: 'oemProcessCode',
// res: 'data.records', res: 'data.records',
}, },
// dicData:[
// {
// label:'1',
// value:1
// },
// {
// label:'2',
// value:2
// },
// ]
}, },
{ {
@ -326,17 +318,103 @@ export default {
total: 0, total: 0,
}, },
isOpen: false, isOpen: false,
settlementType: 'settle', settleResult: null,
} }
}, },
methods: { methods: {
settlementFn(type) { searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad();
done && done();
},
searchReset() {
this.query = {};
this.page.currentPage = 1;
this.onLoad();
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
this.onLoad();
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
this.onLoad();
},
refreshChange() {
this.onLoad();
},
//
settlementFnNum() {
if (this.selectionList.length === 0) { if (this.selectionList.length === 0) {
this.$message.warning('请选择至少一条数据'); this.$message.error('请选择至少一条数据');
return;
}
if (!this.form.price) {
this.$message.error('请输入现执行价格');
return; return;
} }
this.settlementType = type;
this.$confirm('确定要进行结算吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'error',
}).then(() => {
//
const params = {
statementList: this.selectionList,
price: this.form.price
};
oemSettleAccountsItem(params).then(res => {
//
if (res.data && res.data.data) {
this.settleResult = res.data.data;
// settlementDailog
this.isOpen = true; this.isOpen = true;
} else {
this.$message.success('结算成功');
this.onLoad();
}
}).catch(() => {
this.$message.error('结算失败');
});
}).catch(() => {
//
});
},
//
settlementFn() {
if (this.selectionList.length === 0) {
this.$message.error('请选择至少一条数据');
return;
}
if (!this.form.price) {
this.$message.error('请输入现执行价格');
return;
}
this.$confirm('确定要进行预结算吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'error',
}).then(() => {
//
const params = {
statementList: this.selectionList,
price: this.form.price
};
preSettlementItem(params).then(() => {
this.$message.success('预结算成功');
this.onLoad();
}).catch(() => {
this.$message.error('预结算失败');
});
}).catch(() => {
//
});
}, },
closeDialog() { closeDialog() {
this.isOpen = false; this.isOpen = false;

Loading…
Cancel
Save