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

dev-scheduling
zhangdi 1 month ago
commit e77c22e2b7
  1. 30
      src/views/costManagement/subjectFeeMaintenance.vue
  2. 7
      src/views/costStatistics/index.vue
  3. 8
      src/views/exemption/components/checkDialog.vue
  4. 26
      src/views/oem/baseTemplate/index.vue
  5. 49
      src/views/oem/facInnerApproval/index.vue
  6. 49
      src/views/oem/oemApproval/index.vue
  7. 90
      src/views/oem/oemOrder/index.vue
  8. 219
      src/views/oem/oemOrderSettlement/components/settlementAnomaly.vue
  9. 267
      src/views/oem/oemOrderSettlement/components/settlementCompleted.vue
  10. 496
      src/views/oem/oemOrderSettlement/components/underReview.vue
  11. 219
      src/views/oem/oemOrderSettlement/components/unsettled.vue
  12. 10
      src/views/oem/oemOrderSettlement/index.vue
  13. 38
      src/views/oem/oemProcess/index.vue
  14. 6
      src/views/personnelEfficiencyManagement/performanceManagement/components/prefDetail.vue
  15. 47
      src/views/personnelEfficiencyManagement/salaryManagement/salaryStandard.vue
  16. 22
      src/views/productionManagement/components/addQuantity.vue
  17. 15
      src/views/productionTesting/productionQuality.vue
  18. 4
      src/views/qualityManagement/tankSolutionSystem/components/addEditInfoDialog.vue
  19. 6
      src/views/qualityManagement/tankSolutionSystem/components/batchDialog.vue

@ -39,10 +39,16 @@
@update:model-value="val => (showAdd = val)"
width="25%"
>
<el-form ref="addForm" :model="addForm" :rules="addRules">
<el-form ref="addForm" :model="addForm" :rules="addRules" label-width="70px">
<el-form-item label="费用科目" prop="expenseAccount">
<el-input v-model="addForm.expenseAccount" placeholder="请输入费用科目"></el-input>
</el-form-item>
<el-form-item label="类型" prop="subjectType">
<el-radio-group v-model="addForm.subjectType">
<el-radio label="0">制造费用</el-radio>
<el-radio label="1">作业中心材料费用</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
@ -182,7 +188,9 @@ export default {
isShowImport: false,
data: [],
form: {},
query:{},
query:{
descs:'update_time',
},
distributeType: '',
loading: false,
showAdd: false,
@ -282,6 +290,17 @@ export default {
],
minWidth:100
},
{
label:"类型",
prop:"subjectType",
sortable: 'custom',
overHidden:true,
type:"select",
dicData: [
{ label: '制造费用', value: '0' },
{ label: '作业中心材料费用', value: '1' },
],
},
{
label:"费用时间",
prop: 'month',
@ -449,7 +468,9 @@ export default {
},
//
handleAdd() {
this.addForm = {}
this.addForm = {
subjectType:'0'
}
this.showAdd = true;
},
//
@ -458,7 +479,8 @@ export default {
if (valid) {
// this.showAdd = false;
addSubjectFee({
subjectName:this.addForm.expenseAccount
subjectName:this.addForm.expenseAccount,
subjectType:this.addForm.subjectType,
}).then(res =>{
if(res.data.code == 200){
this.$message.success('新增成功')

@ -86,10 +86,11 @@ export default {
data:[],
form:{},
query:{
ascs:'work_center_code'
ascs:'work_center_code',
month:this.$dayjs().subtract(1, 'month').format('YYYY-MM')
},
searchForm:{
// month:
month:this.$dayjs().subtract(1, 'month').format('YYYY-MM')
},
page:{
pageSize: 10,
@ -460,7 +461,7 @@ export default {
});
},
handleCost(){
this.costForm.month = this.$dayjs().format('YYYY-MM');
this.costForm.month = this.$dayjs().subtract(1, 'month').format('YYYY-MM');
this.openShow = true
},
//

@ -50,11 +50,18 @@ export default {
rules: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
change: (val) => {
console.log('val---------',val)
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,14 +3,14 @@
<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" @on-load="onLoad" @sort-change="sortChange">
<template #menu-left>
</template>
<template #menu-right>
<el-button type="primary" @click="maintenanceFn()">维护
<el-button type="primary" @click="maintenanceFn()" v-if="permission.baseTemplate_maintain">维护
</el-button>
<el-button type="primary" @click="handleImport()">导入
<el-button type="primary" @click="handleImport()" v-if="permission.baseTemplate_import">导入
</el-button>
</template>
<!-- <template #ocName="scope">
@ -32,6 +32,7 @@
import {getList,} from "@/api/outsourcingManagement/baseTemplate"
import maintenanceDialog from './components/maintenanceDialog.vue'
import basicImport from '@/components/basic-import/main.vue'
import { mapGetters } from "vuex";
export default {
components: {
maintenanceDialog,
@ -95,7 +96,7 @@ export default {
{
label: '工艺能力',
prop: 'caId',
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: true,
@ -118,7 +119,7 @@ export default {
label: '厂家',
prop: 'oemName',
// bind: 'bsOemCustomer.ocName',
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: true,
@ -142,7 +143,22 @@ export default {
]
}
},
computed: {
...mapGetters(["permission"]),
},
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);
},
//
handleImport() {
this.isShowImport = true

@ -16,13 +16,14 @@
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad"
@sort-change="sortChange"
>
<template #menu-left>
<el-button type="primary" @click="handleApproval('batch')">批量审批</el-button>
<el-button type="primary" @click="handleApproval('batch')" v-if="permission.facInnerApproval_examine">批量审批</el-button>
</template>
<template #menu-right> </template>
<template #menu="scope">
<el-button type="text" v-if="scope.row.approvalStatus == 2" @click="handleApproval('one',scope.row)">审批</el-button>
<el-button type="text" v-if="scope.row.approvalStatus == 2 && permission.facInnerApproval_examine" @click="handleApproval('one',scope.row)">审批</el-button>
</template>
</avue-crud>
@ -37,6 +38,7 @@
<script>
import {getList,oemApproval} from "@/api/outsourcingManagement/oemApproval"
import approvalDialog from "./approvalDialog.vue";
import { mapGetters } from "vuex";
export default {
components: {
approvalDialog,
@ -100,7 +102,7 @@ export default {
{
label: "车间订单号",
prop: "woCode",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: true,
@ -111,7 +113,7 @@ export default {
label: "零件号",
prop: "partCode",
// bind: "prWorkOrder.pjYieldOrder.partCode",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: true,
@ -121,7 +123,7 @@ export default {
label: "批次号",
prop: "batchNo",
// bind: "prWorkOrder.batchNo",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: true,
@ -131,7 +133,7 @@ export default {
label: "产品名称",
prop: "partName",
// bind: "prWorkOrder.pjYieldOrder.partName",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: false,
@ -141,7 +143,7 @@ export default {
label: "生产标识",
prop: "productIdent",
// bind: "prWorkOrder.pjYieldOrder.prodIdent",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: false,
@ -151,7 +153,7 @@ export default {
label: "生产数量",
prop: "makeQty",
// bind: "prWorkOrder.makeQty",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: false,
@ -161,7 +163,7 @@ export default {
label: "面积(d㎡)",
prop: "totalArea",
// bind: "prWorkOrder.pjYieldOrder.poArea",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: false,
@ -174,7 +176,7 @@ export default {
searchRange: true,
format: "YYYY-MM-DD",
valueFormat: "YYYY-MM-DD",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: true,
@ -183,7 +185,7 @@ export default {
{
label: "备注",
prop: "memo",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: false,
@ -192,7 +194,7 @@ export default {
{
label: "审核状态",
prop: "approvalStatus",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: true,
@ -219,7 +221,7 @@ export default {
label: "申请人",
prop: "proposer",
// bind: "createMan.userName",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: true,
@ -229,7 +231,7 @@ export default {
label: "审批人",
prop: "approver",
// bind: "approvalMan.userName",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: false,
@ -238,7 +240,7 @@ export default {
{
label: "审批时间",
prop: "approvalTime",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: false,
@ -247,7 +249,7 @@ export default {
{
label: "处理意见",
prop: "approvalMemo",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: false,
@ -264,11 +266,26 @@ export default {
isOpen: false,
};
},
computed: {
...mapGetters(["permission"]),
},
created(){
this.search.approvalStatus = 2
this.query = this.search;
},
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.page.currentPage = 1

@ -16,13 +16,14 @@
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad"
@sort-change="sortChange"
>
<template #menu-left>
<el-button type="primary" @click="handleApproval('batch')">批量审批</el-button>
<el-button type="primary" @click="handleApproval('batch')" v-if="permission.oemApproval_examine">批量审批</el-button>
</template>
<template #menu-right> </template>
<template #menu="scope">
<el-button type="text" v-if="scope.row.approvalStatus == 2" @click="handleApproval('one',scope.row)"
<el-button type="text" v-if="scope.row.approvalStatus == 2 && permission.oemApproval_examine" @click="handleApproval('one',scope.row)"
>审批</el-button
>
</template>
@ -39,6 +40,7 @@
<script>
import {getList,oemApproval} from "@/api/outsourcingManagement/oemApproval"
import approvalDialog from "./approvalDialog.vue";
import { mapGetters } from "vuex";
export default {
components: {
approvalDialog,
@ -96,7 +98,7 @@ export default {
{
label: "车间订单号",
prop: "woCode",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: true,
@ -107,7 +109,7 @@ export default {
label: "零件号",
prop: "partCode",
// bind: "prWorkOrder.pjYieldOrder.partCode",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: true,
@ -117,7 +119,7 @@ export default {
label: "批次号",
prop: "batchNo",
// bind: "prWorkOrder.batchNo",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: true,
@ -127,7 +129,7 @@ export default {
label: "产品名称",
prop: "partName",
// bind: "prWorkOrder.pjYieldOrder.partName",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: false,
@ -137,7 +139,7 @@ export default {
label: "生产标识",
prop: "productIdent",
// bind: "prWorkOrder.pjYieldOrder.prodIdent",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: false,
@ -147,7 +149,7 @@ export default {
label: "生产数量",
prop: "makeQty",
// bind: "prWorkOrder.makeQty",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: false,
@ -157,7 +159,7 @@ export default {
label: "面积(d㎡)",
prop: "totalArea",
// bind: "prWorkOrder.pjYieldOrder.poArea",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: false,
@ -170,7 +172,7 @@ export default {
searchRange:true,
format: "YYYY-MM-DD",
valueFormat: "YYYY-MM-DD",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: true,
@ -179,7 +181,7 @@ export default {
{
label: "备注",
prop: "memo",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: false,
@ -188,7 +190,7 @@ export default {
{
label: "审核状态",
prop: "approvalStatus",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: true,
@ -214,7 +216,7 @@ export default {
label: "申请人",
prop: "proposer",
// bind: "createMan.userName",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: true,
@ -224,7 +226,7 @@ export default {
label: "审批人",
prop: "approver",
// bind: "approvalMan.userName",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: false,
@ -233,7 +235,7 @@ export default {
{
label: "审批时间",
prop: "approvalTime",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: false,
@ -242,7 +244,7 @@ export default {
{
label: "处理意见",
prop: "approvalMemo",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: false,
@ -263,11 +265,26 @@ export default {
woId:'',
};
},
computed: {
...mapGetters(["permission"]),
},
created(){
this.search.approvalStatus = 2
this.query = this.search;
},
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.page.currentPage = 1

@ -17,6 +17,7 @@
@refresh-change="refreshChange"
@on-load="onLoad"
:row-class-name="rowCLassName"
@sort-change="sortChange"
>
<template #menu-left>
<!-- <el-button type="primary" @click="materialFormPrint">领料单打印</el-button> -->
@ -24,23 +25,23 @@
<template #menu-right="{ size }">
<!-- 加工中 -->
<el-button type="warning" @click="filterFun('3')" plain
<el-button type="warning" @click="filterFun('3')" plain v-if="permission.oemOrder_processing"
>加工中</el-button
>
<!-- 检验中 -->
<el-button type="danger" @click="filterFun('4')" plain
<el-button type="danger" @click="filterFun('4')" plain v-if="permission.oemOrder_inspection"
>检验中</el-button
>
<!-- 已下达 -->
<el-button type="success" @click="filterFun('2')" plain
<el-button type="success" @click="filterFun('2')" plain v-if="permission.oemOrder_issued"
>已下达</el-button
>
<!-- 已完成 -->
<el-button type="success" plain @click="filterFun('15')"
<el-button type="success" plain @click="filterFun('15')" v-if="permission.oemOrder_completed"
>已完成</el-button
>
<!-- 全部 -->
<el-button type="primary" @click="filterFun()" plain
<el-button type="primary" @click="filterFun()" plain v-if="permission.oemOrder_all"
>全部</el-button
>
</template>
@ -50,21 +51,21 @@
<!-- <el-button type="primary" link @click="takeBack(scope.row)"
>领料单打印</el-button
> -->
<el-button type="primary" link @click="changeFn(scope.row)">厂家更改</el-button>
<el-button type="primary" link @click="changeFn(scope.row)" v-if="permission.oemOrder_change_factiry">厂家更改</el-button>
<!-- </template> -->
<template
v-if="scope.row.approvalStatus != 2 && scope.row.runStatus < 15"
>
<el-button type="text" @click="takeBack(scope.row)">收回</el-button>
<el-button type="text" v-if="scope.row.oemStatus == 1 " @click="turnFacInner(scope.row)" >转厂内</el-button>
<el-button type="text" @click="inBatches(scope.row)" >分批</el-button>
<el-button type="text" @click="takeBack(scope.row)" v-if="permission.oemOrder_takeBack">收回</el-button>
<el-button type="text" v-if="scope.row.oemStatus == 1 && permission.oemOrder_turnFacInner" @click="turnFacInner(scope.row)" >转厂内</el-button>
<el-button type="text" @click="inBatches(scope.row)" v-if="permission.oemOrder_batch">分批</el-button>
</template>
<template
v-if="scope.row.approvalStatus != 2 && scope.row.runStatus >= 15">
<!-- <span style="color: red">订单{{ scope.row.runStatusTitle }}</span> -->
<el-button type="text" @click="qualityRecords(scope.row)">质量记录</el-button>
<el-button type="text" @click="certificate(scope.row)">合格证</el-button>
<el-button type="text" @click="qualityRecords(scope.row)" v-if="permission.oemOrder_quality">质量记录</el-button>
<el-button type="text" @click="certificate(scope.row)" v-if="permission.oemOrder_certificate">合格证</el-button>
</template>
</template>
<!-- <template #virtualMac="scope">
@ -211,14 +212,14 @@ export default {
prop: "planNumber",
// bind: "prWorkOrder.pjYieldOrder.poCode",
search: false,
sortable: true,
sortable: 'custom',
overHidden: true,
width: 170,
},
{
label: "订单单号",
prop: "woCode",
sortable: true,
sortable: 'custom',
search: true,
overHidden: true,
width: 190,
@ -227,7 +228,7 @@ export default {
label: "零件号",
prop: "partCode",
// bind: "prWorkOrder.pjYieldOrder.partCode",
sortable: true,
sortable: 'custom',
search: true,
overHidden: true,
hide: false,
@ -238,7 +239,7 @@ export default {
label: "计划下达时间",
prop: "planIssuanceTime",
// bind: "prWorkOrder.pjYieldOrder.failureTime",
sortable: true,
sortable: 'custom',
search: true,
overHidden: true,
width: 170,
@ -254,7 +255,7 @@ export default {
label: "镀后入库时间",
prop: "postPlatingStorageTime",
// bind: "prWorkOrder.putStoreTime",
sortable: true,
sortable: 'custom',
search: true,
overHidden: true,
width: 150,
@ -270,7 +271,7 @@ export default {
label: "订单状态",
prop: "orderStatus",
// bind: 'prWorkOrder.runStatus',
sortable: true,
sortable: 'custom',
search: true,
overHidden: true,
width: 120,
@ -320,7 +321,7 @@ export default {
prop: "oemStatusList",
type:"select",
// bind: 'prWorkOrder.runStatus',
sortable: true,
sortable: 'custom',
hide: true,
search: true,
dicData:[
@ -333,7 +334,7 @@ export default {
label: "订单状态",
prop: "runStatusName",
// bind: 'prWorkOrder.runStatus',
sortable: true,
sortable: 'custom',
search: false,
overHidden: true,
width: 120,
@ -378,12 +379,14 @@ export default {
label:'外协状态',
prop:"oemStatusTitle",
search:false,
width:100,
sortable: 'custom',
},
{
label: "批次号",
prop: "batchNo",
// bind: "prWorkOrder.batchNo",
sortable: true,
sortable: 'custom',
search: true,
overHidden: true,
width: 120,
@ -393,7 +396,7 @@ export default {
label: "产品名称",
prop: "partName",
// bind: "prWorkOrder.pjYieldOrder.partName",
sortable: true,
sortable: 'custom',
search: true,
overHidden: true,
width: 120,
@ -404,7 +407,7 @@ export default {
label: "流程卡号",
prop: "cardNo",
// bind: "prWorkOrder.cardNo",
sortable: true,
sortable: 'custom',
search: true,
overHidden: true,
width: 120,
@ -415,6 +418,7 @@ export default {
// bind: "prWorkOrder.mesCardNo",
display: true,
search: false,
sortable: 'custom',
overHidden: true,
width: 120,
},
@ -422,7 +426,7 @@ export default {
label: "镀种信息",
prop: "plate",
// bind: "prWorkOrder.pjYieldOrder.plate",
sortable: true,
sortable: 'custom',
search: true,
overHidden: true,
width: 120,
@ -431,7 +435,7 @@ export default {
label: "生产标识",
prop: "productIdent",
// bind: "prWorkOrder.pjYieldOrder.prodIdent",
sortable: true,
sortable: 'custom',
search: true,
overHidden: true,
width: 120,
@ -440,7 +444,7 @@ export default {
label: "优先级",
prop: "priority",
// bind: "prWorkOrder.priority",
sortable: true,
sortable: 'custom',
search: true,
overHidden: true,
width: 120,
@ -479,7 +483,7 @@ export default {
label: "使用部门",
prop: "deptName",
// bind: "prWorkOrder.pjYieldOrder.useDept",
sortable: true,
sortable: 'custom',
search: true,
overHidden: true,
width: 120,
@ -490,7 +494,7 @@ export default {
label: "数量",
prop: "makeQty",
// bind: "prWorkOrder.makeQty",
sortable: true,
sortable: 'custom',
search: false,
overHidden: true,
width: 120,
@ -499,7 +503,7 @@ export default {
label: "面积(d㎡)",
prop: "totalArea",
// bind: "prWorkOrder.pjYieldOrder.poArea",
sortable: true,
sortable: 'custom',
search: false,
overHidden: true,
width: 120,
@ -508,7 +512,7 @@ export default {
label: "单批次面积",
prop: "area",
// bind: "prWorkOrder.batchArea",
sortable: true,
sortable: 'custom',
search: false,
overHidden: true,
width: 120,
@ -517,7 +521,7 @@ export default {
label: "需求交期",
prop: "demandDate",
// bind: "prWorkOrder.demandDate",
sortable: true,
sortable: 'custom',
search: true,
type: "date",
format: "YYYY-MM-DD",
@ -530,7 +534,7 @@ export default {
label: "外协代码/简称",
prop: "oemCode",
// bind: "inCustomer.codeAndName",
sortable: true,
sortable: 'custom',
search: true,
overHidden: true,
width: 150,
@ -540,7 +544,7 @@ export default {
label: "计划员",
prop: "planner",
// bind: "prWorkOrder.pjYieldOrder.planUser",
sortable: true,
sortable: 'custom',
search: true,
overHidden: true,
width: 120,
@ -549,7 +553,7 @@ export default {
label: "调度员",
prop: "dispatcher",
// bind: "prWorkOrder.dispatcher.userName",
sortable: true,
sortable: 'custom',
search: true,
overHidden: true,
width: 120,
@ -557,7 +561,7 @@ export default {
// {
// label: '',
// prop: 'memo',
// sortable: true,
// sortable: 'custom',
// search: false,
// width: 120,
// },
@ -565,7 +569,7 @@ export default {
label: "已交件数量",
prop: "submittedNum",
// bind: 'prWorkOrder.inventoryQty',
sortable: true,
sortable: 'custom',
search: false,
overHidden: true,
width: 120,
@ -574,7 +578,7 @@ export default {
label: "未交件数量",
prop: "unsubmittedNum",
// bind: 'notInQty',
sortable: true,
sortable: 'custom',
search: false,
overHidden: true,
width: 120,
@ -582,7 +586,7 @@ export default {
{
label: "工艺路线",
prop: "craftWay",
sortable: true,
sortable: 'custom',
search: false,
overHidden: true,
width: 120,
@ -620,6 +624,18 @@ 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);
},
//
changeFn(row) {
this.worId = row.woId

@ -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: '厂家代码',
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: '生产数量',
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'
searchOrder:2,
},
{
label: '已审批',
value: '2'
label: '审核完成时间',
prop: 'approvalDate',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '已结算',
value: '3'
label: '推送时间',
prop: 'pushDate',
sortable: true,
filter: true,
span: 24,
search: false,
width: 120,
},
{
label: '已确认',
value: '4'
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: '已挂账',
value: '5'
},
]
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 {

@ -18,12 +18,13 @@
@refresh-change="refreshChange"
@on-load="onLoad"
:before-open="beforeOpen"
@sort-change="sortChange"
>
<template #menu-left>
<el-button type="danger" @click="handleDelete">删除</el-button>
<el-button type="danger" @click="handleDelete" v-if="permission.out_oemProcess_delete">删除</el-button>
</template>
<template #menu-right>
<el-button type="primary" @click="handleImport">导入</el-button>
<el-button type="primary" @click="handleImport" v-if="permission.out_oemProcess_import">导入</el-button>
</template>
</avue-crud>
<!-- 导入 -->
@ -37,6 +38,7 @@
<script>
import basicImport from '@/components/basic-import/main.vue'
import {getList,addOutProcess,updateOutProcess,deleteOutProcess} from "@/api/outsourcingManagement/oemProcess"
import { mapGetters } from 'vuex';
export default {
components: {
basicImport
@ -97,7 +99,7 @@ export default {
{
label: "工序编码",
prop: "oemProcessCode",
sortable: true,
sortable: 'custom',
filter: true,
span: 12,
search: true,
@ -107,7 +109,7 @@ export default {
label: "工序",
prop: "processIdStr",
search: false,
sortable: true,
// sortable: 'custom',
filter: true,
span: 24,
searchLabelWidth: 50,
@ -134,7 +136,7 @@ export default {
label: "工艺能力",
prop: "craftIds",
search: false,
sortable: true,
sortable: 'custom',
filter: true,
span: 24,
type: "select",
@ -157,6 +159,7 @@ export default {
label:'手动结算',
prop:"manual",
type:'switch',
sortable: 'custom',
span: 24,
dicData:[
{
@ -186,7 +189,32 @@ export default {
},
};
},
computed:{
...mapGetters(['permission']),
permissionList() {
return {
addBtn: this.validData(this.permission.out_oemProcess_add, false),
delBtn: this.validData(this.permission.out_oemProcess_delete, false),
editBtn: this.validData(this.permission.out_oemProcess_edit, false),
};
},
},
created(){
console.log('this.permission',this.permission)
},
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);
},
//
handleImport() {
this.isShowImport = true

@ -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)

@ -97,11 +97,11 @@ export default {
},
rules: {
wcId: [
{ required: true, message: '请选择', trigger: 'blur' },
{ required: true, message: '请选择作业中心', trigger: 'blur' },
],
dayRange: [
{ required: true, message: '请选择', trigger: 'blur' },
]
// dayRange: [
// { required: true, message: '', trigger: 'blur' },
// ]
},
materialNeedsData: [
@ -110,6 +110,8 @@ export default {
}
},
mounted() {
this.ruleForm.wcId = null
console.log('ruleForm------------',this.ruleForm)
this.getWorkCenter();
},
methods: {
@ -120,17 +122,24 @@ export default {
},
async handleSearch(){
console.log('rule------------',this.ruleForm)
this.$refs.ruleFormRef.validate(async valid =>{
if(valid){
let params = {
workCenterId:this.ruleForm.wcId,
dayRange:this.ruleForm.dayRange
}
try {
const res1 = await getTestValueList(params)
const res2 = await getAddRequireList(this.ruleForm)
this.materialNeedsData = res1.data.data
this.tableData = res2.data.data
console.log('res1------------',res1)
console.log('res2------------',res2)
} catch (error) {
console.log('error------------',error)
}
}
})
},
getSummaries (param){
const { columns, data } = param;
@ -167,7 +176,10 @@ export default {
},
open() {
this.addForm = {}
this.ruleForm = {}
console.log('11111111',this.ruleForm)
this.tableData = []
this.materialNeedsData = []
},
closeDialog(val) {
this.$emit('closeDialog',val);

@ -184,7 +184,7 @@
></el-input>
</template>
</el-table-column>
<!-- <el-table-column label="量具" prop="actMtId" align="center">
<el-table-column label="量具" prop="actMtId" align="center">
<template #header>
<span><i style="color: red">*</i>量具</span>
</template>
@ -207,14 +207,15 @@
:labelCustom="true"
:clearable="false"
:debounce-time="500"
:disabled="scope.row.checkUserRealName != null && scope.row.checkUserRealName != '' "
@change="(val,item) => changeMeasure(val,item,scope1.row)"
:title="'修改'"
/>
</template>
</el-table-column>
<el-table-column label="尺寸" prop="ruleSize" align="center"></el-table-column>
<el-table-column label="有效期" prop="dueDate" align="center"></el-table-column> -->
<el-table-column label="尺寸" prop="ruleSize" align="center">
<el-table-column label="有效期" prop="dueDate" align="center"></el-table-column>
<!-- <el-table-column label="尺寸" prop="ruleSize" align="center">
<template #default="scope1">
<el-input v-model="scope1.row.ruleSize"
:disabled="scope.row.checkUserRealName != null && scope.row.checkUserRealName != '' "
@ -232,7 +233,7 @@
<el-option v-for="item in measureList" :key="item.id" :label="item.mcName" :value="item.id" />
</el-select>
</template>
</el-table-column>
</el-table-column> -->
<el-table-column label="测量值1" prop="gaugeValue1" align="center">
<template #default="scope1">
<el-input v-model="scope1.row.gaugeValue1" :disabled="scope.row.checkUserRealName != null && scope.row.checkUserRealName != '' "></el-input>
@ -1101,8 +1102,10 @@ export default {
console.log('val',val)
console.log('item',item)
console.log('row',row)
row.ruleSize = val && item.norms
row.dueDate = val && item.dueDate
row.actMtId = val
row.actMtName = val && item && item.mcName
row.ruleSize = val && item && item.norms
row.dueDate = val && item && item.dueDate
},
cellClassName({ row, column, rowIndex, columnIndex }) {

@ -393,6 +393,7 @@ export default {
teamId:res.data.data.teamId + '',
drugMaterialId:res.data.data.drugMaterialId + '',
workCenterId:res.data.data.workCenterId + '',
testUserId:res.data.data.testUserId + '',
}
if(this.form.jobType == 1){
this.form = {
@ -449,6 +450,9 @@ export default {
//
getPersonList(){
getPerson().then(res =>{
res.data.data.map(item =>{
item.id = item.id + ''
})
this.personList = res.data.data
})
},

@ -75,7 +75,9 @@
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
:disabled="scope.row.status == 8"
placeholder="">
placeholder=""
style="height: 32px;"
>
</el-date-picker>
</div>
</template>
@ -837,7 +839,7 @@ export default {
// margin-top: 9px;
}
.el-date-editor.el-input, .el-date-editor.el-input__wrapper {
.el-date-editor.el-input, .el-date-editor.el-input__wrapper .el-input__inner {
height: var(--el-input-height,var(--el-component-size)) !important;
}

Loading…
Cancel
Save