外协修改

dev-scheduling
jinna 1 month ago
parent 8e49e6417b
commit a27a2e2f3a
  1. 16
      src/views/exemption/components/checkDialog.vue
  2. 219
      src/views/oem/oemOrderSettlement/components/settlementAnomaly.vue
  3. 285
      src/views/oem/oemOrderSettlement/components/settlementCompleted.vue
  4. 496
      src/views/oem/oemOrderSettlement/components/underReview.vue
  5. 219
      src/views/oem/oemOrderSettlement/components/unsettled.vue
  6. 10
      src/views/oem/oemOrderSettlement/index.vue
  7. 6
      src/views/personnelEfficiencyManagement/performanceManagement/components/prefDetail.vue
  8. 47
      src/views/personnelEfficiencyManagement/salaryManagement/salaryStandard.vue

@ -50,11 +50,18 @@ export default {
rules: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
change: (val) => {
console.log('val---------',val)
if(val.value == 0){
this.option.column.find(item => item.prop == 'nextUserId').rules[0].required = false
}else{
this.option.column.find(item => item.prop == 'nextUserId').rules[0].required = true
if(val.value !== ''){
console.log('11111111111111111')
if(val.value == 0){
console.log('column---------',this.option.column.find(item => item.prop == 'reason'))
this.option.column.find(item => item.prop == 'nextUserId').rules[0].required = false
this.option.column.find(item => item.prop == 'reason').display = true
}else{
this.option.column.find(item => item.prop == 'nextUserId').rules[0].required = true
this.option.column.find(item => item.prop == 'reason').display = false
}
}
},
},
{
@ -68,6 +75,7 @@ export default {
value: 'id',
// res: 'data.records',
},
display:false,
// dicData: [
// {
// label: '',

@ -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" @on-load="onLoad">
@refresh-change="refreshChange">
<template #menu-left>
<el-form ref="form" :model="form" label-width="100px" :inline="true">
<el-form-item label="现执行价格:">
@ -15,7 +15,8 @@
</el-form>
</template>
<template #menu-right>
<el-button type="primary">匹配标准工序代码</el-button>
<el-button type="primary">更新数据</el-button>
</template>
<template #menu>
@ -63,6 +64,7 @@ export default {
editBtnIcon: ' ',
viewBtnText: '详情',
labelWidth: 120,
searchLabelWidth: 90,
menuWidth: 180,
dialogWidth: 640,
dialogClickModal: false,
@ -86,14 +88,14 @@ export default {
align: 'center',
column: [
{
label: '外协单号',
prop: 'oemCode',
label: '计划单号',
prop: 'ypCode',
sortable: true,
filter: true,
span: 24,
search: true,
width: 120,
searchOrder:18,
searchOrder:5,
},
{
label: '车间订单单号',
@ -103,8 +105,7 @@ export default {
span: 24,
search: true,
width: 140,
searchLabelWidth: 110,
searchOrder:19,
searchOrder:4,
},
{
label: '零件号',
@ -114,7 +115,7 @@ export default {
span: 24,
search: true,
width: 120,
searchOrder:17,
searchOrder:8,
},
{
label: '零件名称',
@ -131,12 +132,12 @@ export default {
sortable: true,
filter: true,
span: 24,
search: true,
search: false,
width: 120,
searchOrder:15,
},
{
label: '生产标识',
label: '质量等级',
prop: 'prodIdent',
sortable: true,
filter: true,
@ -144,7 +145,7 @@ export default {
search: true,
width: 120,
type:'select',
searchOrder:16,
searchOrder:6,
dicUrl:"/api/blade-scheduling/qualityGrade/getGrades",
props:{
label:'qualityGrade',
@ -153,7 +154,7 @@ export default {
},
{
label: '工序',
prop: 'psCode',
prop: 'psId',
sortable: true,
filter: true,
span: 24,
@ -166,37 +167,55 @@ export default {
value: 'oemProcessCode',
res: 'data.records',
},
searchOrder:10,
},
{
label: '工艺能力',
prop: 'caName',
prop: 'caId',
sortable: true,
filter: true,
span: 24,
search: false,
search: true,
searchOrder:9,
width: 120,
dicUrl:"/api/blade-desk/BA/craftAbility/findList",
props:{
label:"caName",
value:"id"
},
},
{
label: '镀后入库时间',
prop: 'putStoreTime',
label: '流程卡号',
prop: 'ocCode',
sortable: true,
filter: true,
span: 24,
hide: true,
search: true,
width: 140,
searchLabelWidth: 110,
type: "date",
searchRange: true,
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
startPlaceholder: '开始时间',
endPlaceholder: '结束时间',
searchOrder:20,
width: 120,
searchOrder:3,
},
{
label: '生产数量',
label: '厂家代码',
prop: 'ocCode',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '厂家名称',
prop: 'ocName',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '结算数量',
prop: 'makeQty',
sortable: true,
filter: true,
@ -205,7 +224,7 @@ export default {
width: 120,
},
{
label: '单面积(d㎡)',
label: '单面积(d㎡)',
prop: 'ypArea',
sortable: true,
filter: true,
@ -223,24 +242,18 @@ export default {
width: 140,
},
{
label: '外协厂商',
prop: 'ocId',
label: '镀种',
prop: 'plate',
sortable: true,
filter: true,
span: 24,
search: true,
width: 120,
type:'select',
searchOrder:18,
dicUrl:"/api/blade-desk/BA/Oem/listForSelect",
props:{
label:'ocName',
value:"id"
}
searchOrder:7,
},
{
label: '镀',
prop: 'plate',
label: '镀层厚度',
prop: 'plateThickness',
sortable: true,
filter: true,
span: 24,
@ -248,8 +261,8 @@ export default {
width: 120,
},
{
label: '镀层厚度',
prop: 'plateThickness',
label: '工序标准代码',
prop: 'standardProcessCode',
sortable: true,
filter: true,
span: 24,
@ -284,8 +297,8 @@ export default {
width: 120,
},
{
label: '结算单价',
prop: 'settlePrice',
label: '计划部门编号',
prop: 'planDeptcode',
sortable: true,
filter: true,
span: 24,
@ -293,8 +306,8 @@ export default {
width: 120,
},
{
label: '计量单位',
prop: 'settleUnit',
label: '使用部门编号',
prop: 'useDeptCode',
sortable: true,
filter: true,
span: 24,
@ -302,8 +315,34 @@ export default {
width: 120,
},
{
label: '结算金额',
prop: 'settleAmount',
label: '镀后入库时间',
prop: 'putStoreTime',
sortable: true,
filter: true,
span: 24,
search: true,
width: 140,
type: "date",
searchRange: true,
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
startPlaceholder: '开始时间',
endPlaceholder: '结束时间',
searchOrder:12,
},
{
label: '异常原因',
prop: 'memo',
sortable: true,
filter: true,
span: 24,
search: true,
width: 120,
searchOrder:2,
},
{
label: '结算时间',
prop: 'settleDate',
sortable: true,
filter: true,
span: 24,
@ -311,24 +350,82 @@ export default {
width: 120,
},
{
label: '报价单号',
prop: 'quoteCode',
label: '结算状态',
prop: 'rosStatus',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
// {
// label: '',
// prop: 'makeQty',
// sortable: true,
// filter: true,
// span: 24,
// search: false,
// width: 120,
// },
{
label: '异常原因',
prop: 'abnormalReason',
label: '外协厂商',
prop: 'ocId',
sortable: true,
filter: true,
span: 24,
search: true,
hide: true,
width: 120,
searchOrder:14,
type:'select',
searchOrder:18,
dicUrl:"/api/blade-desk/BA/Oem/listForSelect",
props:{
label:'ocName',
value:"id"
},
searchOrder:11,
},
// {
// label: '',
// prop: 'settlePrice',
// sortable: true,
// filter: true,
// span: 24,
// search: false,
// width: 120,
// },
// {
// label: '',
// prop: 'settleUnit',
// sortable: true,
// filter: true,
// span: 24,
// search: false,
// width: 120,
// },
// {
// label: '',
// prop: 'settleAmount',
// sortable: true,
// filter: true,
// span: 24,
// search: false,
// width: 120,
// },
// {
// label: '',
// prop: 'quoteCode',
// sortable: true,
// filter: true,
// span: 24,
// search: false,
// width: 120,
// },
]
},
form: {},
@ -350,19 +447,19 @@ export default {
this.isOpen = false
},
settlementFnNum() {
if (this.selectionList.length === 0) {
this.$message.error('请选择至少一条数据');
return;
}
if (!this.form.price) {
this.$message.error('请输入现执行价格');
return;
}
// if (this.selectionList.length === 0) {
// this.$message.error('');
// return;
// }
// if (!this.form.price) {
// this.$message.error('');
// return;
// }
this.$confirm('确定要进行结算吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'error',
type: 'warning',
}).then(() => {
//
const params = {

@ -5,6 +5,7 @@
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" @on-load="onLoad">
<template #menu-left>
<el-button type="primary" @click="pushERP">推送ERP</el-button>
</template>
<template #menu-right>
@ -52,6 +53,7 @@ export default {
editBtnIcon: ' ',
viewBtnText: '详情',
labelWidth: 120,
searchLabelWidth:90,
menuWidth: 180,
dialogWidth: 640,
dialogClickModal: false,
@ -75,14 +77,14 @@ export default {
align: 'center',
column: [
{
label: '外协单号',
prop: 'oemCode',
label: '计划单号',
prop: 'ypCode',
sortable: true,
filter: true,
span: 24,
search: true,
width: 120,
searchOrder:18,
searchOrder:5,
},
{
label: '车间订单单号',
@ -92,8 +94,7 @@ export default {
span: 24,
search: true,
width: 140,
searchLabelWidth: 110,
searchOrder:19,
searchOrder:4,
},
{
label: '零件号',
@ -103,7 +104,7 @@ export default {
span: 24,
search: true,
width: 120,
searchOrder:17,
searchOrder:8,
},
{
label: '零件名称',
@ -120,12 +121,11 @@ export default {
sortable: true,
filter: true,
span: 24,
search: true,
search: false,
width: 120,
searchOrder:15,
},
{
label: '生产标识',
label: '质量等级',
prop: 'prodIdent',
sortable: true,
filter: true,
@ -133,7 +133,7 @@ export default {
search: true,
width: 120,
type:'select',
searchOrder:16,
searchOrder:6,
dicUrl:"/api/blade-scheduling/qualityGrade/getGrades",
props:{
label:'qualityGrade',
@ -142,7 +142,7 @@ export default {
},
{
label: '工序',
prop: 'psCode',
prop: 'psId',
sortable: true,
filter: true,
span: 24,
@ -155,11 +155,28 @@ export default {
value: 'oemProcessCode',
res: 'data.records',
},
searchOrder:10,
},
{
label: '工艺能力',
prop: 'caName',
prop: 'caId',
type:"select",
sortable: true,
filter: true,
span: 24,
search: true,
width: 120,
dicUrl:"/api/blade-desk/BA/craftAbility/findList",
props:{
label:"caName",
value:"id"
},
searchOrder:9,
},
{
label: '厂家代码',
prop: 'ocCode',
sortable: true,
filter: true,
span: 24,
@ -167,25 +184,27 @@ export default {
width: 120,
},
{
label: '镀后入库时间',
prop: 'putStoreTime',
label: '厂家名称',
prop: 'ocName',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '流程卡号',
prop: 'ocName',
sortable: true,
filter: true,
hide: true,
span: 24,
search: true,
width: 140,
searchLabelWidth: 110,
type: "date",
searchRange: true,
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
startPlaceholder: '开始时间',
endPlaceholder: '结束时间',
searchOrder:20,
width: 120,
searchOrder:3,
},
{
label: '生产数量',
label: '结算数量',
prop: 'makeQty',
sortable: true,
filter: true,
@ -194,7 +213,7 @@ export default {
width: 120,
},
{
label: '单面积(d㎡)',
label: '单面积(d㎡)',
prop: 'ypArea',
sortable: true,
filter: true,
@ -212,24 +231,18 @@ export default {
width: 140,
},
{
label: '外协厂商',
prop: 'ocId',
label: '镀种',
prop: 'plate',
sortable: true,
filter: true,
span: 24,
search: true,
width: 120,
type:'select',
searchOrder:18,
dicUrl:"/api/blade-desk/BA/Oem/listForSelect",
props:{
label:'ocName',
value:"id"
}
searchOrder:7,
},
{
label: '镀',
prop: 'plate',
label: '镀层厚度',
prop: 'plateThickness',
sortable: true,
filter: true,
span: 24,
@ -237,8 +250,8 @@ export default {
width: 120,
},
{
label: '镀层厚度',
prop: 'plateThickness',
label: '工序标准代码',
prop: 'standardProcessCode',
sortable: true,
filter: true,
span: 24,
@ -273,8 +286,43 @@ export default {
width: 120,
},
{
label: '结算单价',
prop: 'settlePrice',
label: '计划部门编号',
prop: 'planDeptcode',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '使用部门编号',
prop: 'useDeptCode',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '镀后入库时间',
prop: 'putStoreTime',
sortable: true,
filter: true,
span: 24,
search: true,
width: 140,
type: "date",
searchRange: true,
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
startPlaceholder: '开始时间',
endPlaceholder: '结束时间',
searchOrder:12,
},
{
label: '报价单号',
prop: 'quotation',
sortable: true,
filter: true,
span: 24,
@ -283,7 +331,16 @@ export default {
},
{
label: '计量单位',
prop: 'settleUnit',
prop: 'unit',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '结算单价',
prop: 'unitPrice',
sortable: true,
filter: true,
span: 24,
@ -292,7 +349,7 @@ export default {
},
{
label: '结算金额',
prop: 'settleAmount',
prop: 'totalPrice',
sortable: true,
filter: true,
span: 24,
@ -300,8 +357,8 @@ export default {
width: 120,
},
{
label: '报价单号',
prop: 'quoteCode',
label: '结算时间',
prop: 'settleDate',
sortable: true,
filter: true,
span: 24,
@ -310,37 +367,115 @@ export default {
},
{
label: '结算状态',
prop: 'settleStatus',
prop: 'rosStatus',
sortable: true,
filter: true,
span: 24,
search: true,
width: 120,
type: 'select',
searchOrder:12,
dicData: [
{
label: '已推送',
value: '1'
},
{
label: '已审批',
value: '2'
},
{
label: '已结算',
value: '3'
},
{
label: '已确认',
value: '4'
},
{
label: '已挂账',
value: '5'
},
]
}
searchOrder:2,
},
{
label: '审核完成时间',
prop: 'approvalDate',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '推送时间',
prop: 'pushDate',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '结算单号',
prop: 'statementNo',
sortable: true,
filter: true,
span: 24,
search: true,
width: 120,
searchOrder:1
},
// {
// label: '',
// prop: 'makeQty',
// sortable: true,
// filter: true,
// span: 24,
// search: false,
// width: 120,
// },
{
label: '外协厂商',
prop: 'ocId',
sortable: true,
filter: true,
span: 24,
search: true,
hide: true,
width: 120,
type:'select',
searchOrder:11,
dicUrl:"/api/blade-desk/BA/Oem/listForSelect",
props:{
label:'ocName',
value:"id"
}
},
// {
// label: '',
// prop: 'quoteCode',
// sortable: true,
// filter: true,
// span: 24,
// search: false,
// width: 120,
// },
// {
// label: '',
// prop: 'settleStatus',
// sortable: true,
// filter: true,
// span: 24,
// search: true,
// width: 120,
// type: 'select',
// searchOrder:12,
// dicData: [
// {
// label: '',
// value: '1'
// },
// {
// label: '',
// value: '2'
// },
// {
// label: '',
// value: '3'
// },
// {
// label: '',
// value: '4'
// },
// {
// label: '',
// value: '5'
// },
// ]
// }
]
},
form: {
@ -373,6 +508,14 @@ export default {
}).then(() => {
})
},
pushERP(){
this.$confirm('确认将所有待推送数据同步至ERP??', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
})
},
//
selectionChange(list) {
this.selectionList = list;

@ -0,0 +1,496 @@
<template>
<div>
<!-- 待审核 -->
<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">
<template #menu-left>
<el-button type="primary" @click="settleConfirm">结算确认</el-button>
</template>
</avue-crud>
<el-dialog title="结算确认" :modelValue="isConfirm" append-to-body width="30%">
<el-form :model="settleForm" :rules="settleRules" ref="settleForm">
<el-form-item label="确认结果" prop="confirmResult">
<el-radio-group v-model="settleForm.confirmResult" @change="changeResult">
<el-radio label="1">结算正确</el-radio>
<el-radio label="2">结算异常</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="异常原因" prop="confirmReason" v-if="settleForm.confirmResult == 2">
<el-select v-model="settleForm.confirmReason">
<el-option label="订单数据错误" value="1"></el-option>
<el-option label="无需结算" value="2"></el-option>
</el-select>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="isConfirm = false">取消</el-button>
<el-button type="primary" @click="summitSettle">确定</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script>
export default {
data(){
return{
loading:false,
data:[],
form:{},
query:{},
page: {
pageSize: 10,
currentPage: 1,
total: 0,
},
selectionList:[],
isConfirm:false,
settleForm:{},
settleRules:{
confirmResult:[{required: true, message: '请选择结算结果',trigger:'blur'}],
confirmReason:[{required: false, message: '请填写异常原因',trigger:'blur'}],
},
option:{
height: 'auto',
calcHeight: 32,
tip: false,
simplePage: true,
searchShow: true,
searchMenuSpan: 6,
searchIcon: true,
searchIndex: 3,
tree: false,
border: true,
index: false,
selection: true,
rowKey: 'id',
editBtn: false,
viewBtn: false,
delBtn: false,
addBtn: false,
editBtnText: '修改',
viewBtnIcon: ' ',
delBtnIcon: ' ',
editBtnIcon: ' ',
viewBtnText: '详情',
labelWidth: 120,
searchLabelWidth:90,
menuWidth: 180,
dialogWidth: 640,
dialogClickModal: false,
searchEnter: true,
excelBtn: true,
filterBtn: true,
searchShowBtn: false,
columnSort: true,
showOverflowTooltip: true,
menu: false,
searchLabelPosition: 'left',
searchGutter: 24,
searchSpan: 6,
menuAlign: 'left',
gridBtn: false,
searchMenuPosition: 'right',
addBtnIcon: ' ',
viewBtnIcon: ' ',
delBtnIcon: ' ',
editBtnIcon: ' ',
align: 'center',
column: [
{
label: '计划单号',
prop: 'ypCode',
sortable: true,
filter: true,
span: 24,
search: true,
width: 120,
searchOrder:4,
},
{
label: '车间订单单号',
prop: 'woCode',
sortable: true,
filter: true,
span: 24,
search: true,
width: 140,
searchOrder:3,
},
{
label: '零件号',
prop: 'partCode',
sortable: true,
filter: true,
span: 24,
search: true,
width: 120,
searchOrder:7,
},
{
label: '零件名称',
prop: 'partName',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '批次号',
prop: 'batchNo',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '质量等级',
prop: 'prodIdent',
sortable: true,
filter: true,
span: 24,
search: true,
width: 120,
type:'select',
searchOrder:5,
dicUrl:"/api/blade-scheduling/qualityGrade/getGrades",
props:{
label:'qualityGrade',
value:"id"
}
},
{
label: '工序',
prop: 'psId',
sortable: true,
filter: true,
span: 24,
search: true,
width: 120,
type:'select',
dicUrl:"/api/blade-desk/mesOemProcess/page?current=1&&size=99999",
props:{
label: 'paName',
value: 'oemProcessCode',
res: 'data.records',
},
searchOrder:9,
},
{
label: '工艺能力',
prop: 'caId',
sortable: true,
filter: true,
span: 24,
search: true,
searchOrder:8,
width: 120,
dicUrl:"/api/blade-desk/BA/craftAbility/findList",
props:{
label:"caName",
value:"id"
},
},
{
label: '厂家代码',
prop: 'ocCode',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '厂家名称',
prop: 'ocName',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '结算数量',
prop: 'makeQty',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '单件面积(d㎡)',
prop: 'ypArea',
sortable: true,
filter: true,
span: 24,
search: false,
width: 140,
},
{
label: '总面积(d㎡)',
prop: 'totalArea',
sortable: true,
filter: true,
span: 24,
search: false,
width: 140,
},
{
label: '镀种',
prop: 'plate',
sortable: true,
filter: true,
span: 24,
search: true,
width: 120,
searchOrder:6,
},
{
label: '镀层厚度',
prop: 'plateThickness',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '流程卡号',
prop: 'cardNo',
sortable: true,
filter: true,
span: 24,
search: true,
width: 120,
searchOrder:1
},
{
label: '工序标准代码',
prop: 'standardProcessCode',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '涂色标个数',
prop: 'tsbNum',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '涂色带个数',
prop: 'tsdNum',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '涂箭头个数',
prop: 'tjtNum',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '计划部门编号',
prop: 'planDeptcode',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '使用部门编号',
prop: 'useDeptCode',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '镀后入库时间',
prop: 'putStoreTime',
sortable: true,
filter: true,
span: 24,
search: true,
width: 140,
type: "date",
searchRange: true,
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
startPlaceholder: '开始时间',
endPlaceholder: '结束时间',
searchOrder:11,
},
{
label: '报价单号',
prop: 'quotation',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '计量单位',
prop: 'unit',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '结算单价',
prop: 'unitPrice',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '结算金额',
prop: 'totalPrice',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
// {
// label: '',
// prop: 'abnormalReason',
// sortable: true,
// filter: true,
// span: 24,
// search: true,
// width: 120,
// searchOrder:14,
// },
{
label: '结算时间',
prop: 'settleDate',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '结算状态',
prop: 'rosStatusName',
sortable: true,
filter: true,
span: 24,
search: true,
width: 120,
},
{
label: '外协厂商',
prop: 'ocId',
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"
}
},
]
}
}
},
mounted() {
},
methods:{
searchChange(params, done){
this.query = params;
this.page.currentPage = 1;
this.onLoad();
done()
},
searchReset(){
this.query = {}
this.onLoad()
},
selectionChange(list){
this.selectionList = list;
},
currentChange(currentPage){
this.page.currentPage = currentPage;
},
sizeChange(pageSize){
this.page.pageSize = pageSize;
},
refreshChange(){
this.onLoad();
},
settleConfirm(){
if(this.selectionList.length == 0){
this.$message.error('请至少选择一条数据')
return
}
let tmp = this.selectionList.find(item => item.rosStatus != 2)
if(tmp){
this.$message.error('请选择状态为【待确认】的数据!')
return
}
this.isConfirm = true
},
changeResult(val){
console.log('val-----------------',val)
if(val == 2){
this.settleRules.confirmReason[0].required = true
}else{
this.settleRules.confirmReason[0].required = false
}
},
summitSettle(){
this.$refs.settleForm.validate(valid => {
if(valid){
this.$message.success('结算成功!')
this.isConfirm = false
}
})
},
onLoad(){
this.loading = true
this.data = [
{rosStatus:2}
]
this.page.total = this.data.length
this.loading = false
},
}
}
</script>
<style>
</style>

@ -17,20 +17,43 @@
</el-form-item>
</el-form>
</template>
<template #menu-right>
</template>
<template #menu>
<template #menu-right></template>
<template #menu></template>
</avue-crud>
<!-- 预结算弹窗 -->
<el-dialog title="预结算" append-to-body :modelValue="openSettle" width="30%" @close="closeDialog">
<el-form :model="settleForm" :rules="settleRules" ref="settleForm">
<el-form-item label="镀后入库时间" prop="putStoreTime">
<el-date-picker
v-model="settleForm.putStoreTime"
type="daterange"
></el-date-picker>
</el-form-item>
<el-form-item label="结算数据状态" prop="settleStatus">
<el-checkbox-group v-model="settleForm.settleStatus">
<el-checkbox label="未结算" value="1"></el-checkbox>
<el-checkbox label="结算异常" value="2"></el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="openSettle = false">取消</el-button>
<el-button type="primary" @click="summitSettle">确定</el-button>
</span>
</template>
</el-dialog>
</avue-crud>
<settlementDailog v-if="isOpen" :showDialog="isOpen" :type="settlementType" :statementList="selectionList" :settleResult="settleResult" @closeDialog="closeDialog" @refresh="refreshTable"></settlementDailog>
</div>
</template>
<script>
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';
export default {
components: {
settlementDailog
@ -65,6 +88,7 @@ export default {
editBtnIcon: ' ',
viewBtnText: '详情',
labelWidth: 120,
searchLabelWidth:90,
menuWidth: 180,
dialogWidth: 640,
dialogClickModal: false,
@ -90,14 +114,13 @@ export default {
{
// label: '',
label: '计划单号',
prop: 'oemCode',
prop: 'ypCode',
sortable: true,
filter: true,
span: 24,
search: true,
width: 120,
searchOrder:18,
searchOrder:3,
},
{
label: '车间订单单号',
@ -107,8 +130,7 @@ export default {
span: 24,
search: true,
width: 140,
searchLabelWidth: 110,
searchOrder:19,
searchOrder:2,
},
{
label: '零件号',
@ -118,7 +140,7 @@ export default {
span: 24,
search: true,
width: 120,
searchOrder:17,
searchOrder:7,
},
{
label: '零件名称',
@ -135,12 +157,11 @@ export default {
sortable: true,
filter: true,
span: 24,
search: true,
search: false,
width: 120,
searchOrder:15,
},
{
label: '生产标识',
label: '质量等级',
prop: 'prodIdent',
sortable: true,
filter: true,
@ -148,17 +169,25 @@ export default {
search: true,
width: 120,
type:'select',
searchOrder:16,
searchOrder:5,
dicUrl:"/api/blade-scheduling/qualityGrade/getGrades",
props:{
label:'qualityGrade',
value:"id"
}
},
{
label:"流程卡号",
prop:"cardNo",
sortable: true,
span:24,
search:true,
width: 120,
searchOrder:1,
},
{
label: '工序',
prop: 'psCode',
prop: 'psId',
sortable: true,
filter: true,
span: 24,
@ -171,20 +200,28 @@ export default {
value: 'oemProcessCode',
res: 'data.records',
},
searchOrder:9,
},
{
label: '工艺能力',
prop: 'caName',
prop: 'caId',
type:"select",
sortable: true,
filter: true,
span: 24,
search: false,
search: true,
width: 120,
dicUrl:"/api/blade-desk/BA/craftAbility/findList",
props:{
label:"caName",
value:"id"
},
searchOrder:8,
},
{
label: '厂家代码',
prop: 'caName',
prop: 'ocCode',
sortable: true,
filter: true,
span: 24,
@ -193,7 +230,7 @@ export default {
},
{
label: '厂家名称',
prop: 'caName',
prop: 'ocName',
sortable: true,
filter: true,
span: 24,
@ -202,7 +239,7 @@ export default {
},
{
label: '结算数量',
prop: 'caName',
prop: 'makeQty',
sortable: true,
filter: true,
span: 24,
@ -235,9 +272,9 @@ export default {
sortable: true,
filter: true,
span: 24,
search: false,
search: true,
width: 120,
searchOrder:6,
},
{
label: '镀层厚度',
@ -251,7 +288,7 @@ export default {
},
{
label: '工序标准代码',
prop: 'plateThickness',
prop: 'standardProcessCode',
sortable: true,
filter: true,
span: 24,
@ -291,7 +328,7 @@ export default {
},
{
label: '计划部门编号',
prop: 'tjtNum',
prop: 'planDeptcode',
sortable: true,
filter: true,
span: 24,
@ -300,7 +337,7 @@ export default {
},
{
label: '使用部门编号',
prop: 'tjtNum',
prop: 'useDeptCode',
sortable: true,
filter: true,
span: 24,
@ -315,18 +352,17 @@ export default {
span: 24,
search: true,
width: 140,
searchLabelWidth: 110,
type: "date",
searchRange: true,
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
startPlaceholder: '开始时间',
endPlaceholder: '结束时间',
searchOrder:20,
searchOrder:11,
},
{
label: '结算状态',
prop: 'tjtNum',
prop: 'rosStatusName',
sortable: true,
filter: true,
span: 24,
@ -344,32 +380,23 @@ export default {
// },
// {
// label: '',
// prop: 'ocId',
// sortable: true,
// filter: true,
// span: 24,
// search: true,
// width: 120,
// type:'select',
// dicUrl:"/api/blade-desk/BA/Oem/listForSelect",
// props:{
// label:'ocName',
// value:"id"
// }
// // dicData:[
// // {
// // label:'1',
// // value:1
// // },
// // {
// // label:'2',
// // value:2
// // },
// // ]
// },
{
label: '外协厂商',
prop: 'ocId',
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"
}
},
@ -385,7 +412,11 @@ export default {
},
isOpen: false,
settleResult: null,
openSettle:false,
settleForm:{},
settleRules:{
settleStatus:[{required: true, message: '请选择结算状态', trigger: 'change'}]
}
}
},
methods: {
@ -417,15 +448,15 @@ export default {
// this.$message.error('');
// return;
// }
if (!this.form.price) {
this.$message.error('请输入现执行价格');
return;
}
// if (!this.form.price) {
// this.$message.error('');
// return;
// }
this.$confirm('确定要进行结算吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'error',
type: 'warning',
}).then(() => {
//
const params = {
@ -452,35 +483,51 @@ export default {
},
//
settlementFn() {
this.openSettle = true
// if (this.selectionList.length === 0) {
// this.$message.error('');
// return;
// }
if (!this.form.price) {
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
};
// 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(() => {
//
});
// preSettlementItem(params).then(() => {
// this.$message.success('');
// this.onLoad();
// }).catch(() => {
// this.$message.error('');
// });
// }).catch(() => {
// //
// });
},
//
summitSettle(){
this.$refs.settleForm.validate(valid =>{
if(valid){
console.log('settleForm----------',this.settleForm)
this.openSettle = false
// NProgress.start();
// exportExcel(validData).then(res =>{
// downloadXls(res.data, `${this.$dayjs().format('YYYY-MM-DD')}.xlsx`);
// NProgress.done();
// })
}
})
},
closeDialog() {
this.isOpen = false;

@ -2,14 +2,16 @@
<basic-container>
<el-tabs v-model="activeName" class="demo-tabs" @tab-change="tabPositionChange">
<el-tab-pane label="未结算" name="1"></el-tab-pane>
<el-tab-pane label="结算中" name="2"></el-tab-pane>
<el-tab-pane label="待确认" name="2"></el-tab-pane>
<!-- <el-tab-pane label="结算中" name="2"></el-tab-pane> -->
<el-tab-pane label="结算异常" name="3"></el-tab-pane>
<el-tab-pane label="结算完成" name="4"></el-tab-pane>
</el-tabs>
<unsettled v-if="activeName=='1'"></unsettled>
<settlementIn v-if="activeName=='2'"></settlementIn>
<!-- <settlementIn v-if="activeName=='2'"></settlementIn> -->
<settlementAnomaly v-if="activeName=='3'"></settlementAnomaly>
<settlementCompleted v-if="activeName=='4'"></settlementCompleted>
<underReview v-if="activeName=='2'"></underReview>
</basic-container>
</template>
@ -18,12 +20,14 @@ import unsettled from './components/unsettled.vue'
import settlementIn from './components/settlementIn.vue'
import settlementAnomaly from './components/settlementAnomaly.vue'
import settlementCompleted from './components/settlementCompleted.vue'
import underReview from './components/underReview.vue'
export default {
components:{
unsettled,
settlementIn,
settlementAnomaly,
settlementCompleted
settlementCompleted,
underReview
},
data() {
return {

@ -13,6 +13,7 @@
:table-loading="loading"
:data="data"
v-model="form"
v-model:search="searchForm"
v-model:page="page"
ref="crud"
@search-change="searchChange"
@ -61,6 +62,7 @@ export default {
loading: false,
form: {},
query: {},
searchForm:{},
option: {
height: 'auto',
align: 'center',
@ -122,6 +124,7 @@ export default {
console.log('option==============',this.option)
if (this.type === '2') {
this.query = { yearMonth: this.row.yearMonth || '' };
this.searchForm = { yearMonth: this.row.yearMonth || '' };
}
this.onLoad();
},
@ -140,7 +143,8 @@ export default {
done();
},
searchReset() {
this.query = {};
this.query = {yearMonth: this.row.yearMonth || ''};
this.searchForm = { yearMonth: this.row.yearMonth || '' };
this.onLoad();
},
currentChange(currentPage) {

@ -56,6 +56,12 @@
<template #partNo-form="{ type, disabled}">
<el-input v-model="form.partNo" placeholder="多个零件号以空格分隔"></el-input>
</template>
<!-- 工人结算价 -->
<template #settlementPrice-form="{ type, disabled}">
<el-input v-model="form.settlementPrice" placeholder="请输入工人结算价" @input="validatePrice">
<template #append></template>
</el-input>
</template>
<!-- 阶梯上下限 -->
<template #step-form="{type,disabled}">
<el-select v-model="form.stepType" style="width:30%;" @change="changeType">
@ -68,7 +74,9 @@
<!-- 阶梯结算价 -->
<template #stepSettlementPrice-form="{type,disabled}">
<!-- <el-select></el-select> -->
<el-input v-model="form.stepSettlementPrice" :disabled="form.stepType == 1" placeholder="结算价以空格分隔,如:5 10 15 20"></el-input>
<el-input v-model="form.stepSettlementPrice" :disabled="form.stepType == 1" placeholder="结算价以空格分隔,如:5 10 15 20">
<template #append></template>
</el-input>
</template>
<!-- 阶梯结算单位 -->
<template #stepSettlementUnit-form="{type,disabled}">
@ -255,6 +263,7 @@ export default {
trigger: "blur",
},
],
controls: false
},
{
label: "工人结算单位",
@ -271,6 +280,7 @@ export default {
trigger: "blur",
},
],
clearable: false,
dicData: [
{ label: "件", value: '1' },
{ label: "批", value: '2' },
@ -398,6 +408,41 @@ export default {
this.option.editBtn = this.permission.salaryStandard_edit ? true : false;
},
methods: {
validateValue(value) {
if (value == null) return '';
// 1
let filterVal = value.replace(/[^\d.]/g, '');
// 2
filterVal = filterVal.replace(/(\.\d*)\./g, '$1');
// 35
filterVal = filterVal.replace(/(\.\d{2})\d+/g, '$1');
// 40
// 1>100123 00
// 200.123
if (filterVal.startsWith('0') && filterVal.length > 1 && !filterVal.startsWith('0.')) {
// 00
filterVal = filterVal.replace(/^0+/, '0');
// 00123012301230
if (filterVal === '0' && val.length > 1) {
filterVal = '0';
} else {
// 012300123400.123
filterVal = filterVal.replace(/^0(?!\.)/, '');
// 010
if (!filterVal) {
filterVal = '0';
}
}
}
return filterVal;
},
validatePrice(){
this.form.settlementPrice = this.validateValue(this.form.settlementPrice);
},
//
sortChange({ prop, order }) {
console.log('prop-------------',prop)

Loading…
Cancel
Save