Browse Source

2024-1-2 plm报价

master
zelian_wu 2 years ago
parent
commit
fe2167e5e7
  1. 8
      src/api/base/personnelLevel.js
  2. 6
      src/api/quotation/quotationHeader.js
  3. 19
      src/views/modules/quotation/sellForQuotation.vue
  4. 308
      src/views/modules/quotation/sellForQuotation/quotationDetail.vue

8
src/api/base/personnelLevel.js

@ -0,0 +1,8 @@
import {createAPI} from "../../utils/httpRequest";
/**
* 根据site查询人员等级
* @param data
* @returns {*}
*/
export const getPersonnelLevelList = (data)=>createAPI(`/level/list/${data}`,'get')

6
src/api/quotation/quotationHeader.js

@ -22,6 +22,12 @@ export const saveQuotationHeader = (data) => createAPI('/plm/quotationHeader/sav
export const saveBatchQuotationHeader = (data) => createAPI('/plm/quotationHeader/saveBatchQuotationHeader','post',data);
export const deleteByQuotationHeaderId = (data) => createAPI('/plm/quotationHeader/deleteByQuotationHeaderId','post',data);
/**
* 重新报价
* @param data
* @returns {*}
*/
export const quotationAgain = (data) => createAPI(`/plm/quotationHeader/quotationAgain`,'post',data);
/**
* 查询 报价工具列表 page

19
src/views/modules/quotation/sellForQuotation.vue

@ -110,7 +110,7 @@
<el-link style="cursor: pointer">下达</el-link>
<el-link style="cursor: pointer" @click="editQuotationHeader(scope.row)">编辑</el-link>
<el-link style="cursor: pointer" @click="deleteQuotationHeader(scope.row)">删除</el-link>
<el-link style="cursor: pointer" v-if="false">重新报价</el-link>
<el-link style="cursor: pointer" @click="quotationAgain(scope.row)">重新报价</el-link>
</template>
</el-table-column>
<el-table-column
@ -370,6 +370,7 @@ import {
getQuotationHeaderByPage,
saveQuotationHeader,
deleteByQuotationHeaderId,
quotationAgain,
} from '@/api/quotation/quotationHeader.js';
import {
searchQuotationByQuotationNo,
@ -784,7 +785,21 @@ export default {
this.insertData.currency=row.customerCurrency;//
//
this.quotationNoDialogFlag = false;
}
},
quotationAgain(row){
quotationAgain(row).then(({data})=>{
if (data && data.code === 0){
this.$message.success(data.msg)
this.initData();
}else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
}).catch((error)=>{
this.$message.error(error)
})
},
},
computed:{

308
src/views/modules/quotation/sellForQuotation/quotationDetail.vue

@ -44,58 +44,58 @@
<el-table-column label="计算后成本" align="center">
<el-table-column show-overflow-tooltip
label="材料成本" prop="computePartCost"
width="80" align="right" header-align="center">
width="120" align="right" header-align="center">
</el-table-column>
<el-table-column show-overflow-tooltip
label="机器成本" prop="computeMachineCost"
width="80" align="right" header-align="center">
width="120" align="right" header-align="center">
</el-table-column>
<el-table-column show-overflow-tooltip
label="人工成本" prop="computeLabourCost"
width="80" align="right" header-align="center">
width="120" align="right" header-align="center">
</el-table-column>
<el-table-column show-overflow-tooltip
label="制造费用" prop="computeFabricateCost"
width="80" align="right" header-align="center">
width="120" align="right" header-align="center">
</el-table-column>
<el-table-column show-overflow-tooltip
label="工具成本" prop="computeToolCost"
width="80" align="right" header-align="center">
width="120" align="right" header-align="center">
</el-table-column>
</el-table-column>
<el-table-column label="调整后成本" align="center">
<el-table-column show-overflow-tooltip
label="材料成本" prop="adjustPartCost"
width="80" align="right" header-align="center">
width="120" align="right" header-align="center">
</el-table-column>
<el-table-column show-overflow-tooltip
label="机器成本" prop="adjustMachineCost"
width="80" align="right" header-align="center">
width="120" align="right" header-align="center">
</el-table-column>
<el-table-column show-overflow-tooltip
label="人工成本" prop="adjustLabourCost"
width="80" align="right" header-align="center">
width="120" align="right" header-align="center">
</el-table-column>
<el-table-column show-overflow-tooltip
label="制造费用" prop="adjustFabricateCost"
width="80" align="right" header-align="center">
width="120" align="right" header-align="center">
</el-table-column>
<el-table-column show-overflow-tooltip
label="工具成本" prop="adjustToolCost"
width="80" align="right" header-align="center">
width="120" align="right" header-align="center">
</el-table-column>
</el-table-column>
<el-table-column show-overflow-tooltip
label="其他成本" prop="detailOtherCost"
width="80" align="right" header-align="center">
width="120" align="right" header-align="center">
</el-table-column>
<el-table-column show-overflow-tooltip
label="管理成本" prop="detailManageCost"
width="80" align="right" header-align="center">
width="120" align="right" header-align="center">
</el-table-column>
<el-table-column show-overflow-tooltip
label="总成本" prop="detailTotalCost"
width="80" align="right" header-align="center">
width="120" align="right" header-align="center">
</el-table-column>
<el-table-column show-overflow-tooltip
label="利润率%" prop="detailProfitRate"
@ -103,15 +103,15 @@
</el-table-column>
<el-table-column show-overflow-tooltip
label="利润额" prop="detailProfitAmount"
width="80" align="right" header-align="center">
width="120" align="right" header-align="center">
</el-table-column>
<el-table-column show-overflow-tooltip
label="未税单价" prop="finalUntaxedPrice"
width="90" align="right" header-align="center">
width="120" align="right" header-align="center">
</el-table-column>
<el-table-column show-overflow-tooltip
label="未税总价" prop="systemComputeAmount"
width="90" align="right" header-align="center">
width="120" align="right" header-align="center">
</el-table-column>
<el-table-column show-overflow-tooltip
label="税率%" prop="taxRate"
@ -119,11 +119,11 @@
</el-table-column>
<el-table-column show-overflow-tooltip
label="含税单价" prop="finalTaxedPrice"
width="90" align="right" header-align="center">
width="120" align="right" header-align="center">
</el-table-column>
<el-table-column show-overflow-tooltip
label="含税总价" prop="systemComputePrice"
width="90" align="right" header-align="center">
width="120" align="right" header-align="center">
</el-table-column>
<el-table-column show-overflow-tooltip
label="状态" prop="quotationDetailStatus"
@ -687,21 +687,24 @@
<!--quotationRouting新增-->
<el-dialog title="报价工艺" @open="openQuotationRoutingDialog" @close="closeQuotationRoutingDialog" :visible.sync="quotationRoutingDialogFlag" width="40%" top="15vh" :close-on-click-modal="false">
<el-form :rules="quotationRoutingRules" ref="quotationRoutingForm" :model="quotationRouting" label-position="top">
<el-row>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="工序名称" prop="quotationRoutingDesc">
<el-input v-model="quotationRouting.quotationRoutingDesc" clearable/>
</el-form-item>
</el-col>
<el-col :span="12" :offset="2">
<el-col :span="8">
<el-form-item label="序号" prop="itemNo">
<div class="right"><!--value=value.replace(/[\d]/g,'')-->
<el-input v-model="quotationRouting.itemNo" type="number" step="10" @change="changeRegValue" onKeypress="return (/[\d]/g.test(String.fromCharCode(event.keyCode)))"/>
<el-input class="inlineNumber" v-model="quotationRouting.itemNo" type="number" step="10" @change="changeRegValue" onKeypress="return (/[\d]/g.test(String.fromCharCode(event.keyCode)))"/>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label=" ">
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="加工中心编码" prop="machiningCenterNo">
<el-select v-model="quotationRouting.machiningCenterNo" filterable style="width: 100%" @change="changeWorkCenterSelect" placeholder="请选择">
@ -723,7 +726,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" :offset="2">
<el-col :span="8">
<el-form-item label="加工中心名称" prop="machiningCenterDesc">
<el-input :disabled="quotationRouting.machiningCenterNo !== '*'" v-model="quotationRouting.machiningCenterDesc" clearable/>
</el-form-item>
@ -733,38 +736,64 @@
<el-input :disabled="quotationRouting.machiningCenterNo !== '*'" v-model="quotationRouting.machiningCenterType" clearable/>
</el-form-item>
</el-col>
<el-col :span="12" :offset="2">
<el-col :span="8">
<el-form-item label="加工中心机器成本" prop="machineryCenterCost">
<div class="right">
<el-input :disabled="quotationRouting.machiningCenterNo !== '*'" v-model="quotationRouting.machineryCenterCost" @input="changeRoutingCost" type="number" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))"/>
<el-input class="inlineNumber" :disabled="quotationRouting.machiningCenterNo !== '*'" v-model="quotationRouting.machineryCenterCost" @input="changeRoutingCost" type="number" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))"/>
</div>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="加工中心人工成本" prop="laborCenterCost">
<!-- <el-col :span="8" >-->
<!-- <el-form-item label="加工中心人工成本" prop="laborCenterCost">-->
<!-- <div class="right">-->
<!-- <el-input :disabled="quotationRouting.machiningCenterNo !== '*'" v-model="quotationRouting.laborCenterCost" @input="changeRoutingCost" type="number" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))"/>-->
<!-- </div>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="8">
<el-form-item label="加工制造费用" prop="manufacturingCenterCost">
<div class="right">
<el-input :disabled="quotationRouting.machiningCenterNo !== '*'" v-model="quotationRouting.laborCenterCost" @input="changeRoutingCost" type="number" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))"/>
<el-input class="inlineNumber" :disabled="quotationRouting.machiningCenterNo !== '*'" v-model="quotationRouting.manufacturingCenterCost" @input="changeRoutingCost" type="number" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))"/>
</div>
</el-form-item>
</el-col>
<el-col :span="12" :offset="2">
<el-form-item label="加工制造费用" prop="manufacturingCenterCost">
<el-col :span="8">
<el-form-item label=" ">
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="调机时间" prop="machiningSetupTime">
<div class="right">
<el-input :disabled="quotationRouting.machiningCenterNo !== '*'" v-model="quotationRouting.manufacturingCenterCost" @input="changeRoutingCost" type="number" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))"/>
<el-input class="inlineNumber" v-model="quotationRouting.machiningSetupTime" @input="changeRoutingCost" type="number" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))"/>
</div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="调机时间" prop="machiningSetupTime">
<el-form-item label="调机过程中人数" prop="tuneInNumber">
<div class="right">
<el-input v-model="quotationRouting.machiningSetupTime" @input="changeRoutingCost" type="number" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))"/>
<el-input class="inlineNumber" v-model="quotationRouting.tuneInNumber" @input="changeRoutingCost" type="number" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))"/>
</div>
</el-form-item>
</el-col>
<el-col :span="12" :offset="2">
<el-col :span="8">
<el-form-item label="调机人员等级" prop="tuneInLevel">
<el-select v-model="quotationRouting.tuneInLevel" style="width: 100%" filterable placeholder="请选择">
<el-option
v-for="item in personnelLevelList"
:key="item.levelId"
:label="item.levelDesc"
:value="item.levelId">
<span style="float: left">{{ item.levelDesc }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.levelCost }}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="单位产出量" prop="unitOutputQuantity">
<div class="right">
<el-input v-model="quotationRouting.unitOutputQuantity" @input="changeRoutingCost" type="number" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))"/>
<el-input class="inlineNumber" v-model="quotationRouting.unitOutputQuantity" @input="changeRoutingCost" type="number" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))"/>
</div>
</el-form-item>
</el-col>
@ -781,55 +810,73 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" :offset="2" >
<el-col :span="8">
<el-form-item label=" ">
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="效率%" prop="routingEfficiency">
<div class="right">
<el-input v-model="quotationRouting.routingEfficiency" min="0" @input="value=>inputRule(value,2)" type="number" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))"/>
<el-input class="inlineNumber" v-model="quotationRouting.routingEfficiency" min="0" @input="value=>inputRule(value,2)" type="number" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))"/>
</div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="操作人数" prop="operatorsNumber">
<el-form-item label="操作过程人数" prop="operatorsNumber">
<div class="right">
<el-input v-model="quotationRouting.operatorsNumber" @input="changeRoutingCost" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))" type="number"/>
<el-input class="inlineNumber" v-model="quotationRouting.operatorsNumber" @input="changeRoutingCost" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))" type="number"/>
</div>
</el-form-item>
</el-col>
<el-col :span="12" :offset="2" >
<el-col :span="8">
<el-form-item label="操作人员等级" prop="operatorsLevel">
<el-select v-model="quotationRouting.operatorsLevel" style="width: 100%" filterable placeholder="请选择">
<el-option
v-for="item in personnelLevelList"
:key="item.levelId"
:label="item.levelDesc"
:value="item.levelId">
<span style="float: left">{{ item.levelDesc }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.levelCost }}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="单位机器成本" prop="unitMachineryCost">
<div class="right">
<el-input disabled v-model="quotationRouting.unitMachineryCost" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))" type="number"/>
<el-input class="inlineNumber" disabled v-model="quotationRouting.unitMachineryCost" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))" type="number"/>
</div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="单位人工成本" prop="unitLaborCost">
<div class="right">
<el-input disabled v-model="quotationRouting.unitLaborCost" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))" type="number"/>
<el-input class="inlineNumber" disabled v-model="quotationRouting.unitLaborCost" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))" type="number"/>
</div>
</el-form-item>
</el-col>
<el-col :span="12" :offset="2" >
<el-col :span="8">
<el-form-item label="单位制造费用" prop="unitManufacturingCost">
<div class="right">
<el-input disabled v-model="quotationRouting.unitManufacturingCost" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))" type="number"/>
<el-input class="inlineNumber" disabled v-model="quotationRouting.unitManufacturingCost" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))" type="number"/>
</div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="单位报价成本" prop="unitQuotedCost">
<div class="right">
<el-input disabled type="number" v-model="quotationRouting.unitQuotedCost" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))"/>
<el-input class="inlineNumber" disabled type="number" v-model="quotationRouting.unitQuotedCost" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))"/>
</div>
</el-form-item>
</el-col>
<el-col :span="22">
<el-col :span="24">
<el-form-item label="备注" prop="remark" style="display: block;min-height: 90px">
<el-input type="textarea" resize="none" v-model="quotationRouting.remark" :autosize="{minRows: 3, maxRows: 3}"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer" style="margin-top: 5px">
<el-button type="primary" :loading="saveQuotationRoutingLoading" @click="saveQuotationRoutingBtn"> </el-button>
@ -1380,6 +1427,7 @@ import {getProjectPart, getProjectPartList} from '@/api/project/project.js';
import {queryOperationList,} from '@/api/part/routingManagement.js'
import {propertiesItemList} from "@/api/base/properties.js"
import {Decimal} from "decimal.js";
import {getPersonnelLevelList} from '@/api/base/personnelLevel.js'
export default {
props: ['quotationHeader'],
@ -1466,6 +1514,7 @@ export default {
quotationToolFormTable:{
quotationToolList: [],//
},
personnelLevelList:[],//
selectionQuotationToolList:[],//
toolHeaderList:[],//
selectionToolHeaderList:[],//
@ -1654,11 +1703,14 @@ export default {
machiningCenterNo:undefined,//
machiningCenterDesc:undefined,//
machiningCenterType:undefined,//
tuneInNumber:1,//
tuneInLevel:undefined,//
machiningSetupTime:0,//
unitOutputQuantity:1,//
outputUnit:'小时',//
routingEfficiency:100,//
operatorsNumber:1,//
operatorsLevel:undefined,//
unitMachineryCost:0,//
unitLaborCost:0,//
unitManufacturingCost:0,//
@ -1881,87 +1933,48 @@ export default {
productDesc: [{required: true, message: ' ', trigger: ['change','blur']}],
quotationDetailStatus: [{required: true, message: ' ', trigger: 'change'}],
internalInquiryNo: [{required: true, message: ' ', trigger: ['change','blur']}],
itemNo:[{required: true, pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: ' ', trigger: ['change','blur']}],
quotationDetailQuantity: [{required: true, pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: ' ', trigger: ['change','blur']}],
itemNo:[{required: true, message: ' ', trigger: ['change','blur']}],
quotationDetailQuantity: [{required: true, message: ' ', trigger: ['change','blur']}],
},
//
quotationToolRules: {
toolNo: [{required: true, validator:validateToolNo,message:" ", trigger: 'change'}],
toolDescription: [{required: true, message: ' ', trigger: ['change','blur']}],
toolQuantity: [{required: true, pattern: /^([1-9]\d*(\.\d*[1-9][0-9])?)|(0\.\d*[1-9][0-9])|(0\.\d*[1-9])$/, message: ' ', trigger: ['change','blur']}],
unitCost: [{required: true, pattern: /^([1-9]\d*(\.\d*[1-9][0-9])?)|(0\.\d*[1-9][0-9])|(0\.\d*[1-9])$/, message: ' ', trigger: ['change','blur']}],
expectedServiceLife: [{required: true, pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: ' ', trigger: ['change','blur']}],
toolQuantity: [{required: true,pattern:/^[1-9]\d{0,14}(\.\d{1,16})?$|^0(\.\d{1,16})?$/, message: ' ', trigger: ['change','blur']}],
unitCost: [{required: true,pattern:/^[1-9]\d{0,14}(\.\d{1,16})?$|^0(\.\d{1,16})?$/, message: ' ', trigger: ['change','blur']}],
expectedServiceLife: [{required: true,pattern:/^[1-9]\d{0,14}(\.\d{1,16})?$|^0(\.\d{1,16})?$/, message: ' ', trigger: ['change','blur']}],
},
//
rules: {
detailProfitRate: [{required: true, pattern: /^([1-9]\d*|[0]{1,1})$/, message: ' ', trigger: ['change','blur']}],
adjustPartCost: [{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: ['change','blur']}],
adjustMachineCost: [{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: ['change','blur']}],
adjustFabricateCost: [{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: ['change','blur']}],
adjustLabourCost: [{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: ['change','blur']}],
adjustToolCost: [{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: ['change','blur']}],
detailManageCost: [{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: ['change','blur']}],
detailOtherCost: [{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: ['change','blur']}],
taxRate: [{required: true, pattern: /^([1-9]\d*|[0]{1,1})$/, message: ' ', trigger: ['change','blur']}],
detailProfitRate: [{required: true, pattern:/^[1-9]\d{0,14}(\.\d{1,16})?$|^0(\.\d{1,16})?$/, message: ' ', trigger: ['change','blur']}],
adjustPartCost: [{required: true, pattern:/^[1-9]\d{0,14}(\.\d{1,16})?$|^0(\.\d{1,16})?$/, message: ' ', trigger: ['change','blur']}],
adjustMachineCost: [{required: true,pattern:/^[1-9]\d{0,14}(\.\d{1,16})?$|^0(\.\d{1,16})?$/, message: ' ', trigger: ['change','blur']}],
adjustFabricateCost: [{required: true,pattern:/^[1-9]\d{0,14}(\.\d{1,16})?$|^0(\.\d{1,16})?$/, message: ' ', trigger: ['change','blur']}],
adjustLabourCost: [{required: true,pattern:/^[1-9]\d{0,14}(\.\d{1,16})?$|^0(\.\d{1,16})?$/, message: ' ', trigger: ['change','blur']}],
adjustToolCost: [{required: true,pattern:/^[1-9]\d{0,14}(\.\d{1,16})?$|^0(\.\d{1,16})?$/, message: ' ', trigger: ['change','blur']}],
detailManageCost: [{required: true,pattern:/^[1-9]\d{0,14}(\.\d{1,16})?$|^0(\.\d{1,16})?$/, message: ' ', trigger: ['change','blur']}],
detailOtherCost: [{required: true,pattern:/^[1-9]\d{0,14}(\.\d{1,16})?$|^0(\.\d{1,16})?$/, message: ' ', trigger: ['change','blur']}],
taxRate: [{required: true, message: ' ', trigger: ['change','blur']}],
},
//
quotationRoutingRules:{
quotationRoutingNo: [
{required: true, message: ' ', trigger: 'change'},
{required: true, message: ' ', trigger: 'blur'},
],
quotationRoutingDesc: [
{required: true, message: ' ', trigger: 'change'},
{required: true, message: ' ', trigger: 'blur'},
],
itemNo: [
{required: true, message: ' ', trigger: 'change'},
{required: true, message: ' ', trigger: 'blur'},
],
machiningCenterNo: [
{required: true, message: ' ', trigger: 'change'},
{required: true, message: ' ', trigger: 'blur'},
],
machiningSetupTime: [
{required: true, pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: ' ', trigger: 'change'},
{required: true, pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: ' ', trigger: 'blur'},
],
unitOutputQuantity: [
{required: true, pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: ' ', trigger: 'change'},
{required: true, pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: ' ', trigger: 'blur'},
],
outputUnit: [
{required: true, message: ' ', trigger: 'change'},
{required: true, message: ' ', trigger: 'blur'},
],
machiningCenterType: [
{required: true, message: ' ', trigger: 'change'},
{required: true, message: ' ', trigger: 'blur'},
],
machiningCenterDesc: [
{required: true, message: ' ', trigger: 'change'},
{required: true, message: ' ', trigger: 'blur'},
],
routingEfficiency: [
{required: true, pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: ' ', trigger: 'change'},
{required: true, pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: ' ', trigger: 'blur'},
],
operatorsNumber: [
{required: true, pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: ' ', trigger: 'change'},
{required: true, pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: ' ', trigger: 'blur'},
],
unitMachineryCost: [
{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: 'change'},
{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: 'blur'},
],
unitLaborCost: [
{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: 'change'},
{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: 'blur'},
],
unitManufacturingCost: [
{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: 'change'},
{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: 'blur'},
],
quotationRoutingNo:[{required: true, message: ' ', trigger: ['change','blur']}],
quotationRoutingDesc:[{required: true, message: ' ', trigger: ['change','blur']}],
itemNo: [{required: true, message: ' ', trigger: ['change','blur']}],
machiningCenterNo: [{required: true, message: ' ', trigger: ['change','blur']}],
machiningSetupTime: [{required: true, pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: ' ', trigger: ['change','blur']}],
unitOutputQuantity: [{required: true, pattern: /^[1-9]\d{0,14}(\.\d{1,16})?$|^0(\.\d{1,16})?$/,message: ' ', trigger: ['change','blur']}],
outputUnit: [{required: true, message: ' ', trigger: ['change','blur']}],
machiningCenterType:[{required: true, message: ' ', trigger: ['change','blur']}],
machiningCenterDesc: [{required: true, message: ' ', trigger: ['change','blur']}],
tuneInLevel: [{required: true, message: ' ', trigger: ['change','blur']}],
operatorsLevel: [{required: true, message: ' ', trigger: ['change','blur']}],
routingEfficiency: [{required: true, pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: ' ', trigger: ['change','blur']}],
tuneInNumber: [{required: true, pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: ' ', trigger: ['change','blur']}],
operatorsNumber: [{required: true, pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: ' ', trigger: ['change','blur']}],
unitMachineryCost: [{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: ['change','blur']}],
unitLaborCost: [{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: ['change','blur']}],
unitManufacturingCost: [{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: ['change','blur']}],
unitQuotedCost: [{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: ['change','blur']}],
machineryCenterCost: [{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: ['change','blur']}],
laborCenterCost: [{required: true, pattern: /^[0-9]+(.[0-9]{1,4})?$/, message: ' ', trigger: ['change','blur']}],
@ -1972,18 +1985,18 @@ export default {
quotationPartNo:[{required: true,validator:validatePartNo,message:'', trigger: ['change']}],
quotationPartDesc:[{required: true, message: ' ', trigger: ['change','blur']}],
umId:[{required: true, message: ' ', trigger: ['change','blur']}],
unitDosage:[{required: true, pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: ' ', trigger: ['change','blur']}],
attritionRate:[{required: true, pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: ' ', trigger: ['change','blur']},],
transferAmount: [{required: true, pattern: /^[0-9]+(.[0-9]{1,2})?$/, message: ' ', trigger: ['change','blur']}],
unitCost:[{required: true, pattern: /^([1-9]\d*(\.\d*[1-9][0-9])?)|(0\.\d*[1-9][0-9])|(0\.\d*[1-9])$/, message: ' ', trigger: ['change','blur']}],
unitDosage:[{required: true,pattern:/^[1-9]\d{0,14}(\.\d{1,16})?$|^0(\.\d{1,16})?$/, message: ' ', trigger: ['change','blur']}],
attritionRate:[{required: true, message: ' ', trigger: ['change','blur']},],
transferAmount: [{required: true, message: ' ', trigger: ['change','blur']}],
unitCost:[{required: true,pattern:/^[1-9]\d{0,14}(\.\d{1,16})?$|^0(\.\d{1,16})?$/, message: ' ', trigger: ['change','blur']}],
},
quotationProductRule:{
itemNo:[{required: true,message: ' ',trigger: ['change','blur']}],
itemDesc:[{required: true,message: ' ',trigger: ['change','blur']}],
valueTypeDb:[{required: true,message: ' ',trigger: ['change','blur']}],
defaultValue:[{type: 'number',message:' ', trigger: ['change','blur'],transform: (value) => Number(value)}],
maxValue:[{type: 'number',message:' ', trigger: ['change','blur'],transform: (value) => Number(value)}],
minValue:[{type: 'number',message:' ',trigger: ['change','blur'],transform: (value) => Number(value)}],
defaultValue:[{type: 'number',message:' ', trigger: ['change','blur']}],
maxValue:[{type: 'number',message:' ', trigger: ['change','blur']}],
minValue:[{type: 'number',message:' ',trigger: ['change','blur']}],
itemType:[{required: true,message: ' ',trigger: ['change','blur']}],
valueChooseFlag:[{required: true,message: ' ',trigger: ['change','blur']}],
},
@ -2034,7 +2047,10 @@ export default {
{label: "unitOutputQuantity", value: "单位产出量"},
{label: "outputUnit", value: "产出单位"},
{label: "routingEfficiency", value: "效率"},
{label: "operatorsNumber", value: "操作工人数"},
{label: "operatorsNumber", value: "操作人员人数"},
{label: "tuneInLevel", value: "调机人员等级"},
{label: "tuneInNumber", value: "调机人数"},
{label: "operatorsLevel", value: "操作人员等级"},
{label: "unitMachineryCost", value: "单位机器成本"},
{label: "unitLaborCost", value: "单位人工成本"},
{label: "unitManufacturingCost", value: "单位制造费用"},
@ -2772,6 +2788,23 @@ export default {
this.quotationDetailFlag = true;
},
// ==============================================================================================
//
getPersonnelLevelList(){
getPersonnelLevelList(this.$store.state.user.site).then(({data})=>{
if (data && data.code === 0){
this.personnelLevelList = data.data;
if (!this.quotationRouting.operatorsLevel){
this.quotationRouting.operatorsLevel = this.personnelLevelList[0].levelId
}
if (!this.quotationRouting.tuneInLevel){
this.quotationRouting.tuneInLevel = this.personnelLevelList[0].levelId
}
}
this.changeWorkCenterSelect(this.quotationRouting.machiningCenterNo)
}).catch((error)=>{
})
},
//
searchQuotationPropertiesItem(){
//
@ -3077,7 +3110,9 @@ export default {
//
openQuotationRoutingDialog(){
// this.queryOperationList()
this.changeWorkCenterSelect(this.quotationRouting.machiningCenterNo)
//
this.getPersonnelLevelList();
},
//
openPartDialog(){
@ -3189,11 +3224,14 @@ export default {
machiningCenterNo:undefined,//
machiningCenterDesc:undefined,//
machiningCenterType:undefined,//
tuneInLevel:undefined,
tuneInNumber:1,//
machiningSetupTime:0,//
unitOutputQuantity:1,//
outputUnit:'小时',//
routingEfficiency:100,//
operatorsNumber:1,//
operatorsLevel:undefined,//:
unitMachineryCost:0,//
unitLaborCost:0,//
unitManufacturingCost:0,//
@ -3454,13 +3492,13 @@ export default {
// /
this.quotationDetailData.systemComputePrice = new Decimal(1).add(new Decimal(this.quotationDetailData.taxRate).div(new Decimal(100))).mul(new Decimal(this.quotationDetailData.systemComputeAmount)).toSignificantDigits().toNumber();
this.quotationDetailData.finalTaxedPrice = +this.quotationDetailData.systemComputePrice / +this.quotationDetailData.quotationDetailQuantity;
this.quotationDetailData.systemComputePrice = new Decimal(new Decimal(this.quotationDetailData.systemComputePrice).toFixed(4,Decimal.ROUND_HALF_UP)).toSignificantDigits().toNumber();
this.quotationDetailData.finalTaxedPrice = new Decimal(new Decimal(this.quotationDetailData.finalTaxedPrice).toFixed(4,Decimal.ROUND_HALF_UP)).toSignificantDigits().toNumber();
this.quotationDetailData.systemComputePrice = new Decimal(new Decimal(this.quotationDetailData.systemComputePrice).toFixed(16,Decimal.ROUND_HALF_UP)).toSignificantDigits().toNumber();
this.quotationDetailData.finalTaxedPrice = new Decimal(new Decimal(this.quotationDetailData.finalTaxedPrice).toFixed(16,Decimal.ROUND_HALF_UP)).toSignificantDigits().toNumber();
},
//
computeProfitAmount(){
this.quotationDetailData.detailProfitAmount = new Decimal(this.quotationDetailData.detailTotalCost).mul(new Decimal(this.quotationDetailData.detailProfitRate).div(new Decimal(100))).toSignificantDigits().toNumber();
this.quotationDetailData.detailProfitAmount = new Decimal(new Decimal(this.quotationDetailData.detailProfitAmount).toFixed(4,Decimal.ROUND_HALF_UP)).toSignificantDigits().toNumber();
this.quotationDetailData.detailProfitAmount = new Decimal(new Decimal(this.quotationDetailData.detailProfitAmount).toFixed(16,Decimal.ROUND_HALF_UP)).toSignificantDigits().toNumber();
},
//
computeAmount(){
@ -3489,7 +3527,7 @@ export default {
let transferAmountNumber = new Decimal(row.transferAmount).div(new Decimal(this.quotationDetailData.quotationDetailQuantity));
let needNumber =transferAmountNumber.add(new Decimal(1).mul(new Decimal(row.unitDosage).mul(new Decimal(1).sub(new Decimal(row.attritionRate).div(new Decimal(100))))));
// = *
row.quotationUnitCost = new Decimal(new Decimal(row.unitCost).mul(needNumber).toFixed(4,Decimal.ROUND_HALF_UP)).toSignificantDigits().toNumber();
row.quotationUnitCost = new Decimal(new Decimal(row.unitCost).mul(needNumber).toFixed(16,Decimal.ROUND_HALF_UP)).toSignificantDigits().toNumber();
},
computeToolQuotationUnitCost(row){
// = * / 使寿
@ -3506,7 +3544,7 @@ export default {
row.quotationUnitCost = 0;
return
}
row.quotationUnitCost = new Decimal(new Decimal(row.unitCost).mul(new Decimal(row.toolQuantity)).div(new Decimal(row.expectedServiceLife)).toFixed(4,Decimal.ROUND_HALF_UP)).toSignificantDigits().toNumber();
row.quotationUnitCost = new Decimal(new Decimal(row.unitCost).mul(new Decimal(row.toolQuantity)).div(new Decimal(row.expectedServiceLife)).toFixed(16,Decimal.ROUND_HALF_UP)).toSignificantDigits().toNumber();
},
// ==================================================== =============================================
changeWorkCenterSelect(val){
@ -3558,7 +3596,7 @@ export default {
total = total.add(new Decimal(0));
}
}
this.quotationRouting.unitMachineryCost = new Decimal(total.toFixed(4,Decimal.ROUND_HALF_UP)).toSignificantDigits().toNumber();
this.quotationRouting.unitMachineryCost = new Decimal(total.toFixed(16,Decimal.ROUND_HALF_UP)).toSignificantDigits().toNumber();
},
//
computeManufacturingCenterCost(){
@ -3590,7 +3628,7 @@ export default {
total = total.add(new Decimal(0));
}
}
this.quotationRouting.unitManufacturingCost = new Decimal(total.toFixed(4,Decimal.ROUND_HALF_UP)).toSignificantDigits().toNumber();
this.quotationRouting.unitManufacturingCost = new Decimal(total.toFixed(16,Decimal.ROUND_HALF_UP)).toSignificantDigits().toNumber();
},
computeLaborCenterCost(){
let laborCenterCost = this.quotationRouting.laborCenterCost;
@ -3618,7 +3656,7 @@ export default {
}
//
total = total.add(LaborUnitTime.mul(new Decimal(this.quotationRouting.operatorsNumber)).mul(efficiency)).mul(new Decimal(laborCenterCost));
this.quotationRouting.unitLaborCost = new Decimal(total.toFixed(4,Decimal.ROUND_HALF_UP)).toSignificantDigits().toNumber();
this.quotationRouting.unitLaborCost = new Decimal(total.toFixed(16,Decimal.ROUND_HALF_UP)).toSignificantDigits().toNumber();
},
//
changeRoutingCost(){

Loading…
Cancel
Save