Ver código fonte

no message

develop
pai
commit
bf51277e43
3 arquivos alterados com 906 adições e 1 exclusões
  1. +783
    -0
      src/pages/order/detail.vue
  2. +122
    -0
      src/pages/order/list.vue
  3. +1
    -1
      src/services/order/Order.js

+ 783
- 0
src/pages/order/detail.vue Ver arquivo

@@ -0,0 +1,783 @@
<template>
<div class="boxMain">
<a-spin :spinning="loadPage">
<div class="boxFilter bn">
<bnOrderLogList :order-id="orderId" />
<a-button type="primary" @click="fnShowOrderCheck(1)">审核订单</a-button>
<a-button v-if="isOutFactory == 1" type="primary" @click="fnShowOrderCheck(2)">复审</a-button>
<a-button v-if="!ifEdit" type="primary" :loading="loadOE" @click="BeforeOrderEdit">修改订单</a-button>
<a-button v-else @click="ifEdit=false">退出修改</a-button>
<a-button type="primary" @click="fnAdjustAmount">调整订单金额</a-button>
<a-button type="primary" v-if="orderStatus<70 && orderStatus>=0 && isOutFactory == 1" :loading="loadOffer" @click="fnPcbOffer">申请外发报价</a-button>
<bn-set-purchase-status :order-id="orderId" :order-status="orderDetail.orderPurchaseStatus" :getList="getOrderDetail"/>
<bnOrderCancel :order-id="orderId" />
</div>
<template v-if="ifEdit">
<div class="titsc"><b>修改PCB订单 No:{{orderDetail.orderNo}}</b></div>
<template v-if="orderDetail">
<table class="tablesc">
<tr>
<td class="t">板材品牌</td><td class="n" colspan="3">
<a-radio-group v-model="formPQ.coreType">
<a-radio-button v-for="(item,index) in typeList.CoreType" :key="index" :value="item.dataValue">{{item.caption}}</a-radio-button>
</a-radio-group></td>
<td class="t">TG值</td><td class="n" colspan="3">
<a-radio-group v-model="formPQ.coreTg">
<a-radio-button v-for="(item,index) in typeList.CoreTg" :key="index" :value="item.dataValue">{{item.caption}}</a-radio-button>
</a-radio-group></td>
</tr>
<tr>
<td class="t">宽x高</td><td class="n" colspan="3"><a-input v-model="formPQ.boardWidth" style="width:70px" /> x <a-input v-model="formPQ.boardHeight" style="width:70px" /> mm</td>
<td class="t">数量({{formPQ.boardType}})</td><td class="n" colspan="3"><a-input v-model="formPQ.num"/><span>(小于30必须5的倍数,大于30必须10的倍数)</span></td>
</tr>
<tr>
<td class="t">板层</td>
<td class="n" colspan="7">
<a-radio-group v-model="formPQ.boardLayers">
<a-radio-button v-for="(item,index) in typeList.BoardLayers" :key="index" :value="Number(item.dataValue)">{{item.caption}}</a-radio-button>
</a-radio-group>
</td>
</tr>
<tr>
<td class="t">板厚</td>
<td class="n" colspan="7">
<a-radio-group v-model="formPQ.boardThickness">
<a-radio-button v-for="(item,index) in typeList.BoardThickness" :key="index" :value="Number(item.dataValue)">{{item.caption}}</a-radio-button>
</a-radio-group>
</td>
</tr>
<tr>
<td class="t">阻焊颜色</td>
<td class="n" colspan="3">
<a-radio-group v-model="formPQ.solderColor">
<a-radio-button v-for="(item,index) in typeList.SolderColor" :key="index" :value="item.dataValue">{{item.caption}}</a-radio-button>
</a-radio-group>
</td>
<td class="t">字符颜色</td>
<td class="n" colspan="3">
<a-radio-group v-model="formPQ.fontColor">
<a-radio-button v-for="(item,index) in typeList.FontColor" :key="index" :value="item.dataValue">{{item.caption}}</a-radio-button>
</a-radio-group>
</td>
</tr>
<tr>
<td class="t">底层阻焊颜色</td>
<td class="n" colspan="3">
<a-radio-group v-model="formPQ.solderColorBottom">
<a-radio-button v-for="(item,index) in typeList.SolderColor" :key="index" :value="item.dataValue">{{item.caption}}</a-radio-button>
</a-radio-group>
</td>
<td class="t">底层字符颜色</td>
<td class="n" colspan="3">
<a-radio-group v-model="formPQ.fontColorBottom">
<a-radio-button v-for="(item,index) in typeList.FontColor" :key="index" :value="item.dataValue">{{item.caption}}</a-radio-button>
</a-radio-group>
</td>
</tr>
<tr>
<td class="t">阻焊覆盖</td><td class="n" colspan="3">
<a-radio-group v-model="formPQ.solderCover">
<a-radio-button v-for="(item,index) in typeList.SolderCover" :key="index" :value="item.dataValue">{{item.caption}}</a-radio-button>
</a-radio-group>
</td>
<td class="t">拼板XY</td><td class="n">
<a-input v-model="formPQ.pinBanX" style="width:70px" /> x <a-input v-model="formPQ.pinBanY" style="width:70px" />
</td>
<td class="t">拼板数量</td><td class="n">
<a-input v-model="formPQ.pinBanNum" style="width:70px" />
</td>
</tr>
<tr>
<td class="t">工艺边</td><td class="n" colspan="3">
<a-radio-group v-model="formPQ.processEdges">
<a-radio-button v-for="(item,index) in typeList.ProcessEdges" :key="index" :value="item.dataValue">{{item.caption}}</a-radio-button>
</a-radio-group></td>
<td class="t">工艺边宽</td><td class="n" colspan="3"><a-input v-model="formPQ.processEdgesWidth" style="width:70px" /></td>
</tr>
<tr>
<td class="t">V割方式</td><td class="n" colspan="3">
<a-radio-group v-model="formPQ.vCut">
<a-radio-button v-for="(item,index) in typeList.VCut" :key="index" :value="item.dataValue">{{item.caption}}</a-radio-button>
</a-radio-group></td>
<td class="t">槽间距(高x宽)</td><td class="n" colspan="3"><a-input v-model="formPQ.grooveHeight" style="width:70px" /> x <a-input v-model="formPQ.grooveWidth" style="width:70px" /></td>
</tr>
<tr>
<td class="t">铜厚(外层)</td><td class="n" colspan="3">
<a-radio-group v-model="formPQ.copperThickness">
<a-radio-button v-for="(item,index) in typeList.CopperThickness" :key="index" :value="Number(item.dataValue)">{{item.caption}}</a-radio-button>
</a-radio-group></td>
<td class="t">焊盘表面处理</td><td class="n" colspan="3">
<a-radio-group v-model="formPQ.surfaceFinish">
<a-radio-button v-for="(item,index) in typeList.SurfaceFinish" :key="index" :value="item.dataValue">{{item.caption}}</a-radio-button>
</a-radio-group></td>
</tr>
<tr>
<td class="t">铜厚(内层)</td><td class="n" colspan="3">
<a-radio-group v-model="formPQ.innerCopperThickness">
<a-radio-button v-for="(item,index) in typeList.InnerCopperThickness" :key="index" :value="Number(item.dataValue)">{{item.caption}}</a-radio-button>
</a-radio-group></td>
<td class="t">沉金厚度</td><td class="n" colspan="3">
<a-radio-group v-model="formPQ.imGoldThinckness">
<a-radio-button v-for="(item,index) in typeList.ImGoldThinckness" :key="index" :value="Number(item.dataValue)">{{item.caption}}</a-radio-button>
</a-radio-group></td>
</tr>
<tr>
<td class="t">最小孔径</td><td class="n" colspan="7">
<a-radio-group v-model="formPQ.vias">
<a-radio-button v-for="(item,index) in typeList.Vias" :key="index" :value="Number(item.dataValue)">{{item.caption}}</a-radio-button>
</a-radio-group></td>
</tr>
<tr>
<td class="t">最小线宽/线距</td><td class="n" colspan="7">
<a-radio-group v-model="formPQ.lineWeight">
<a-radio-button v-for="(item,index) in typeList.LineWeight" :key="index" :value="Number(item.dataValue)">{{item.caption}}</a-radio-button>
</a-radio-group></td>
</tr>
<tr>
<td class="t">出货类型</td><td class="n">
<a-radio-group v-model="formPQ.boardType">
<a-radio-button v-for="(item,index) in typeList.BoardType" :key="index" :value="item.dataValue">{{item.caption}}</a-radio-button>
</a-radio-group></td>
<td class="t">是否接受打叉版</td><td class="n">
<a-radio-group v-model="formPQ.acceptCrossed">
<a-radio-button v-for="(item,index) in typeList.AcceptCrossed" :key="index" :value="Number(item.dataValue)">{{item.caption}}</a-radio-button>
</a-radio-group></td>
<td class="t">BGA数量</td><td class="n"><a-input v-model="formPQ.bgaNum" style="width:70px" /></td>
<td class="t">BGA尺寸</td><td class="n"><a-input v-model="formPQ.bgaSize" style="width:70px" /></td>
</tr>
<tr>
<td class="t">测试方式</td><td class="n" colspan="3">
<a-radio-group v-model="formPQ.flyingProbe">
<a-radio-button v-for="(item,index) in typeList.FlyingProbe" :key="index" :value="item.dataValue">{{item.caption}}</a-radio-button>
</a-radio-group></td>
<td class="t">阻抗</td><td class="n">
<a-radio-group v-model="formPQ.isImpedance">
<a-radio-button v-for="(item,index) in typeList.IsImpedance" :key="index" :value="Number(item.dataValue)">{{item.caption}}</a-radio-button>
</a-radio-group></td>
<td class="t">阻抗报告</td><td class="n">
<a-radio-group v-model="formPQ.impedanceReport">
<a-radio-button v-for="(item,index) in typeList.ImpedanceReport" :key="index" :value="Number(item.dataValue)">{{item.caption}}</a-radio-button>
</a-radio-group></td>
</tr>
<tr>
<td class="t">孔密度</td><td class="n"><a-input v-model="formPQ.boardHoleNum" style="width:70px" /></td>
<td class="t">IPCLevel 出货标准</td><td class="n">
<a-radio-group v-model="formPQ.ipcLevel">
<a-radio-button v-for="(item,index) in typeList.IPCLevel" :key="index" :value="Number(item.dataValue)">{{item.caption}}</a-radio-button>
</a-radio-group></td>
<td class="t">确认生产稿</td><td class="n">
<a-radio-group v-model="formPQ.productFileSure">
<a-radio-button v-for="(item,index) in typeList.ProductFileSure" :key="index" :value="Number(item.dataValue)">{{item.caption}}</a-radio-button>
</a-radio-group></td>
<td class="t">成型方式</td><td class="n">
<a-radio-group v-model="formPQ.formingType">
<a-radio-button v-for="(item,index) in typeList.FormingType" :key="index" :value="item.dataValue">{{item.caption}}</a-radio-button>
</a-radio-group></td>
</tr>
<tr>
<td class="t">出货报告</td><td class="n" colspan="5">
<a-checkbox-group v-model="formPQ.needReportList">
<a-checkbox v-for="(item,index) in typeList.NeedReportList" :key="index" :value="item.dataValue">{{item.caption}}</a-checkbox>
</a-checkbox-group></td>
<td class="t">CAM高端个性化</td><td class="n">
<a-radio-group v-model="formPQ.camEngineer">
<a-radio-button v-for="(item,index) in typeList.CamEngineer" :key="index" :value="Number(item.dataValue)">{{item.caption}}</a-radio-button>
</a-radio-group></td>
</tr>
<tr>
<td class="t">锣程</td><td class="n"><a-input v-model="formPQ.routLength" style="width:70px" /></td>
<td class="t">电镀前工艺</td><td class="n">
<a-radio-group v-model="formPQ.beforePlating">
<a-radio-button v-for="(item,index) in typeList.BeforePlating" :key="index" :value="item.dataValue">{{item.caption}}</a-radio-button>
</a-radio-group></td>
<td class="t">更改料号</td><td class="n"><a-input v-model="formPQ.changeItemNum" /></td>
<td class="t">更改周期标识</td><td class="n"><a-input v-model="formPQ.changePeriod" /></td>
</tr>
<tr>
<td class="t">线路工艺</td><td class="n">
<a-radio-group v-model="formPQ.imageTranster">
<a-radio-button v-for="(item,index) in typeList.ImageTranster" :key="index" :value="item.dataValue">{{item.caption}}</a-radio-button>
</a-radio-group></td>
<td class="t">阻焊工艺</td><td class="n">
<a-radio-group v-model="formPQ.solderTransfer">
<a-radio-button v-for="(item,index) in typeList.SolderTransfer" :key="index" :value="item.dataValue">{{item.caption}}</a-radio-button>
</a-radio-group></td>
<td class="t">出货报告材质</td><td class="n">
<a-radio-group v-model="formPQ.reportMaterial">
<a-radio-button v-for="(item,index) in typeList.ReportMaterial" :key="index" :value="Number(item.dataValue)">{{item.caption}}</a-radio-button>
</a-radio-group></td>
<td class="t">是否外发</td><td class="n">
<a-radio-group v-model="formPQ.isOutFactory">
<a-radio-button :value="0">否</a-radio-button>
<a-radio-button :value="1">是</a-radio-button>
</a-radio-group></td>
</tr>
<tr>
<td class="t">订单备注</td><td class="n" colspan="7"><a-input v-model="formPQ.Note"/></td>
</tr>
<tr>
<td class="t">特殊工艺</td>
<td class="n" colspan="7">
<template v-for="(item,index) in arrSpecialList">
<div class="boxListSpecials" :key="item.typeNo" v-if="item.valueType==1"><div class="t">{{item.caption}}<em>{{selSL[index].typeName}}</em></div><a-input v-model="selSL[index].typeValue" style="width:100px"/></div>
<div class="boxListSpecials" :key="item.typeNo" v-else><div class="t">{{item.caption}}<em>{{selSL[index].typeName}}</em></div>
<a-radio-group v-model="selSL[index].typeValue">
<a-radio-button v-for="(item,index) in item.processDataList" :key="index" :value="item.dataValue">{{item.caption}}</a-radio-button>
</a-radio-group>
</div>
</template>
</td>
</tr>
</table>
</template>
<!-- <a-spin :spinning="loadEdit">-->
<div class="boxBn" v-if="ifEdit"><a-button @click="ifEdit=false">退出修改</a-button><a-button :loading="loadEdit" type="danger" @click="upOrderEdit">保存修改</a-button></div>
<!-- </a-spin>-->
</template>
<template v-else>
<div class="titsc"><b>基本信息</b></div>
<table class="tablesc">
<template v-if="orderDetail">
<tr>
<td class="t">订单编号</td><td class="n">{{orderDetail.orderNo}}</td>
<td class="t">订单状态</td><td class="n">{{orderDetail.orderPurchaseStatusValue}}</td>
<td class="t">包裹单号</td><td class="n">{{orderDetail.packageNo}}</td>
<td class="t">产品类型</td><td class="n">{{orderDetail.proTypeValue}}</td>
</tr>
<tr>
<td class="t">客编</td><td class="n">{{orderDetail.memberCode}}</td>
<td class="t">业务员</td><td class="n">{{orderDetail.adminName}}</td>
<td class="t">订单备注</td><td class="n">{{orderDetail.note}}</td>
<td class="t">调整金额(浮动金额)</td><td class="n">{{orderDetail.adjustmentAmount}}</td>
</tr>
<tr>
<td class="t">销售价</td><td class="n">{{orderDetail.salePrice}}</td>
<td class="t">运费</td><td class="n">{{orderDetail.shipAmount}}</td>
<td class="t">物流方式</td><td class="n">{{orderDetail.shipType}}</td>
<td class="t">调整运费</td><td class="n">{{orderDetail.adjustmentShipAmount}}</td>
</tr>
<tr>
<td class="t">总金额</td><td class="n">{{orderDetail.totalAmount}}</td>
<td class="t">实际支付金额</td><td class="n">{{orderDetail.payAmount}}</td>
<td class="t">最后支付时间</td><td class="n">{{formatDateTime(orderDetail.payTime)}}</td>
<td class="t">PCBA关联单号</td><td class="n">{{orderDetail.pcbaNo}}</td>
</tr>
<tr>
<td class="t">返单号</td><td class="n">{{orderDetail.reOrderNo}}</td>
<td class="t">根单号</td><td class="n">{{orderDetail.rootOrderNo}}</td>
<td class="t">创建时间</td><td class="n">{{formatDateTime(orderDetail.creationTime)}}</td>
<td class="t">附件列表</td>
<td class="n">
<ul class="listFiles">
<li v-for="(file,fid) in orderDetail.files" :key="fid"><a :href="file.url" target="_blank"><a-icon type="link" /> {{file.name}}</a></li>
</ul>
</td>
</tr>
<tr>
<td class="t">是否外发</td><td class="n">{{isOutFactory===0?'非外发':(isOutFactory===1?'外发':'')}}</td>
</tr>
</template>
</table>
<div class="titsc"><b>PCB信息</b></div>
<table class="tablesc">
<template v-if="pcbDetail.pcbBaseData">
<tr>
<td class="t">租户Id:</td>
<td class="n">{{pcbDetail.pcbBaseData.tenantId}}</td>
<td class="t">订单id:</td>
<td class="n">{{pcbDetail.pcbBaseData.orderId}}</td>
<td class="t">订单编号:</td>
<td class="n">{{pcbDetail.pcbBaseData.orderNo}}</td>
<td class="t">板材大类:</td>
<td class="n">{{pcbDetail.pcbBaseData.proType}}</td>
</tr>
<tr>
<td class="t">板材:</td>
<td class="n">{{pcbDetail.pcbBaseData.coreType}}</td>
<td class="t">板材tg值:</td>
<td class="n">{{pcbDetail.pcbBaseData.coreTg}}</td>
<td class="t">板材code:</td>
<td class="n">{{pcbDetail.pcbBaseData.coreTypeCode}}</td>
<td class="t">重量:</td>
<td class="n">{{pcbDetail.pcbBaseData.totalWeight}}</td>
</tr>
<tr>
<td class="t">面积:</td>
<td class="n">{{pcbDetail.pcbBaseData.boardArea}}</td>
<td class="t">板材品牌:</td>
<td class="n">{{pcbDetail.pcbBaseData.boardBrand}}</td>
<td class="t">是否为返单:</td>
<td class="n">{{pcbDetail.pcbBaseData.isReOrder}}</td>
<td class="t">返单编号:</td>
<td class="n">{{pcbDetail.pcbBaseData.reOrderNo}}</td>
</tr>
<tr>
<td class="t">交期类别:</td>
<td class="n">{{pcbDetail.pcbBaseData.deliveryType}}</td>
<td class="t">交期天数:</td>
<td class="n">{{pcbDetail.pcbBaseData.deliveryDays}}</td>
<td class="t">交期:</td>
<td class="n">{{formatDateTime(pcbDetail.pcbBaseData.deliveryDate)}}</td>
<td class="t">生产单号:</td>
<td class="n">{{pcbDetail.pcbBaseData.proOrderNo}}</td>
</tr>
</template>
<template v-if="pcbDetail.areaProcessData">
<tr>
<td class="t">宽 x 高:</td>
<td class="n">{{pcbDetail.areaProcessData.boardWidth}} x {{pcbDetail.areaProcessData.boardHeight}}</td>
<td class="t">数量:</td>
<td class="n">{{pcbDetail.areaProcessData.num}}</td>
<td class="t">pcs数:</td>
<td class="n">{{pcbDetail.areaProcessData.pcsNum}}</td>
<td class="t">set数:</td>
<td class="n">{{pcbDetail.areaProcessData.setNum}}</td>
</tr>
<tr>
<td class="t">拼版类别:</td>
<td class="n">{{pcbDetail.areaProcessData.boardType}}</td>
<td class="t">是否接受打叉板:</td>
<td class="n">{{pcbDetail.areaProcessData.acceptCrossed}}</td>
<td class="t">拼版:</td>
<td class="n">{{pcbDetail.areaProcessData.pinBanX}} x {{pcbDetail.areaProcessData.pinBanY}}</td>
<td class="t">拼版数:</td>
<td class="n">{{pcbDetail.areaProcessData.pinBanNum}}</td>
</tr>
<tr>
<td class="t">工艺边:</td>
<td class="n">{{pcbDetail.areaProcessData.processEdges}}</td>
<td class="t">工艺边宽:</td>
<td class="n">{{pcbDetail.areaProcessData.processEdgesWidth}}</td>
<td class="t">v割方式:</td>
<td class="n">{{pcbDetail.areaProcessData.vCut}}</td>
<td class="t">槽间距-高x宽:</td>
<td class="n">{{pcbDetail.areaProcessData.grooveHeight}} x {{pcbDetail.areaProcessData.grooveWidth}}</td>
</tr>
<tr>
<td class="t">单Set出货尺寸宽x高:</td>
<td class="n" colspan="7">{{pcbDetail.areaProcessData.deliverWidth}} x {{pcbDetail.areaProcessData.deliverHeight}}</td>
</tr>
</template>
<template v-if="pcbDetail.areaProcessData">
<tr>
<td class="t">是否需要阻焊:</td>
<td class="n">{{pcbDetail.personalizedProcessData.isImpedance}}</td>
<td class="t">阻焊报告:</td>
<td class="n">{{pcbDetail.personalizedProcessData.impedanceReport}}</td>
<td class="t">确认文件信息:</td>
<td class="n">{{pcbDetail.personalizedProcessData.productFileSure}}</td>
<td class="t">CAM工程师等级:</td>
<td class="n">{{pcbDetail.personalizedProcessData.camEngineer}}</td>
</tr>
<tr>
<td class="t">IPC标准等级:</td>
<td class="n">{{pcbDetail.personalizedProcessData.ipcLevel}}</td>
<td class="t">出货报告:</td>
<td class="n">{{pcbDetail.personalizedProcessData.needReportList}}</td>
<td class="t">报告材质:</td>
<td class="n">{{pcbDetail.personalizedProcessData.reportMaterial}}</td>
<td class="t">BGA数量:</td>
<td class="n">{{pcbDetail.personalizedProcessData.bgaNum}}</td>
</tr>
<tr>
<td class="t">BGA尺寸:</td>
<td class="n" colspan="7">{{pcbDetail.areaProcessData.bgaSize}}</td>
</tr>
</template>
<template v-if="pcbDetail.pcbProductionProcessData">
<tr>
<td class="t">更改料号:</td>
<td class="n">{{pcbDetail.pcbProductionProcessData.changeItemNum}}</td>
<td class="t">更改周期标识:</td>
<td class="n">{{pcbDetail.pcbProductionProcessData.changePeriod}}</td>
<td class="t">拼板利用率:</td>
<td class="n">{{pcbDetail.pcbProductionProcessData.utilizationRate}}</td>
<td class="t">沉金面积:</td>
<td class="n">{{pcbDetail.pcbProductionProcessData.immersionGoldArea}}</td>
</tr>
<tr>
<td class="t">锣程:</td>
<td class="n">{{pcbDetail.pcbProductionProcessData.routLength}}</td>
<td class="t">孔密度:</td>
<td class="n" colspan="5">{{pcbDetail.pcbProductionProcessData.boardHoleNum}}</td>
</tr>
</template>
<template v-if="pcbDetail.pcbStandardProcessData">
<tr>
<td class="t">板厚:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.boardThickness}}</td>
<td class="t">板层:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.boardLayers}}</td>
<td class="t">铜厚:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.copperThickness}}</td>
<td class="t">内层铜厚:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.innerCopperThickness}}</td>
</tr>
<tr>
<td class="t">测试方式:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.flyingProbe}}</td>
<td class="t">最小孔径:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.vias}}</td>
<td class="t">线宽线距:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.lineWeight}}</td>
<td class="t">阻焊颜色:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.solderColor}}</td>
</tr>
<tr>
<td class="t">底层阻焊颜色:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.solderColorBottom}}</td>
<td class="t">字符颜色:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.fontColor}}</td>
<td class="t">底层字符颜色:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.fontColorBottom}}</td>
<td class="t">过孔处理:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.solderCover}}</td>
</tr>
<tr>
<td class="t">线路工艺:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.imageTranster}}</td>
<td class="t">阻焊工艺:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.solderTransfer}}</td>
<td class="t">表面处理:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.surfaceFinish}}</td>
<td class="t">沉金厚度:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.imGoldThinckness}}</td>
</tr>
<tr>
<td class="t">电镀前工艺:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.beforePlating}}</td>
<td class="t">板材耐压值:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.withstandVoltage}}</td>
<td class="t">成型方式:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.formingType}}</td>
<td class="t">耐压测试:</td>
<td class="n">{{pcbDetail.pcbStandardProcessData.wvTest}}</td>
</tr>
</template>
</table>
<div class="boxKH20"></div>
<div class="titsc"><b>特殊工艺信息</b></div>
<table class="tablesa">
<tr v-for="(item,index) in pcbDetail.pcbSpecialProcessData" :key="index">
<td class="t">{{item.typeName}}</td>
<td colspan="7">{{item.typeValue}}</td>
</tr>
</table>
</template>
</a-spin>
<a-modal :title="formOrderCheck.OCType===1?'审核订单':'复审订单'" :visible="showOrderCheck" :confirm-loading="confirmSubmit" @ok="fnOrderCheck" @cancel="showOrderCheck=false">
<a-form-model v-model="formOrderCheck" v-bind="layout">
<a-form-model-item label="审核操作">
<a-radio-group v-model="formOrderCheck.isPass">
<a-radio :value="1">审核通过</a-radio>
<a-radio :value="0">审核不通过驳回</a-radio>
</a-radio-group>
</a-form-model-item>
<!-- <a-form-model-item label="备注"><a-textarea v-model="formOrderCheck.remark" placeholder="" :rows="3" /></a-form-model-item>-->
</a-form-model>
</a-modal>
</div>
</template>

<script>
import {
OrderPcbDetail,
OrderPcbCheck,
QuotePcbProcessType,
OrderPcbEditDetail,
putOrderPcb,
OrderPcbOffer
} from "@/services/order/Order";
import {formatDate} from "@/services/Common";
import bnOrderLogList from "@/pages/Common/bnOrderLogList";
import bnOrderCancel from "@/pages/Common/bnOrderCancel";
import BnSetPurchaseStatus from "@/pages/Common/bnSetPurchaseStatus";

export default {
name: 'PcbDetail',
components: {bnOrderLogList,bnOrderCancel,BnSetPurchaseStatus},
data(){
return{
loadPage:true,showOrderCheck:false,confirmSubmit:false,loadOE:false,ifEdit:false,loadEdit:false,loadOffer:false,
orderId:'',orderStatus:0,orderDetail:{},pcbDetail:{},isOutFactory:'',
formOrderCheck:{orderId:'',isPass:1,remark:'',OCType:''},
layout: {
labelCol: { span:7 },
wrapperCol: { span:15 },
},
formPQ:{},typeList:{},arrSpecialList:[],selSL:[],
PcbProcessType:{},

// formPQ:{
// orderId:'',
// boardWidth:0,
// boardHeight:0,
// boardThickness:0,
// boardLayers:0,
// num:0,
// solderColor:'',
// solderColorBottom:'',
// fontColor:'',
// fontColorBottom:'',
// solderCover:'',
// pinBanX:0,
// pinBanY:0,
// pinBanNum:0,
// processEdges:'',
// processEdgesWidth:0,
// vCut:'',
// grooveHeight:0,
// grooveWidth:0,
// copperThickness:0,
// innerCopperThickness:0,
// surfaceFinish:'',
// flyingProbe:'',
// vias:0,
// lineWeight:'',
// coreType:'',
// coreTg:'',
// boardType:'',
// acceptCrossed:'',
// bgaNum:0,
// bgaSize:0,
// imGoldThinckness:0,
// impedanceReport:0,
// isImpedance:0,
// boardHoleNum:0,
// ipcLevel:0,
// needReportList:'',
// productFileSure:0,
// camEngineer:0,
// aluminumType:'',
// withstandVoltage:'',
// formingType:'',
// routLength:0,
// beforePlating:'',
// changeItemNum:0,
// changePeriod:0,
// imageTranster:'',
// utilizationRate:0,
// solderTransfer:'',
// wvTest:'',
// halfHole:0,
// reportMaterial:0,
// Note:'',
// SpecialProcess:[],
// }
}
},
mounted() {
this.orderId = this.$route.query.id;
this.getOrderDetail();
},
methods:{
async getOrderDetail(){
this.loadPage = true;
let res = await OrderPcbDetail(this.orderId);
this.pcbDetail = res.pcbDetail;
this.isOutFactory = res.pcbDetail.pcbBaseData.isOutFactory;
this.orderDetail = res.orderDetail;
this.orderStatus = res.orderDetail.orderPurchaseStatus;
this.loadPage = false;
},
formatDateTime(time){
return formatDate(time,'yyyy-MM-dd hh:mm');
},
fnShowOrderCheck(key){
this.formOrderCheck.OCType = key;
this.showOrderCheck = true;
},
//审核订单
fnOrderCheck(){
this.confirmSubmit = true;
this.formOrderCheck.orderId = this.orderId;
OrderPcbCheck(this.formOrderCheck).then(res=>{
this.$message.success('设置成功!');
this.showOrderCheck = false;
this.confirmSubmit = false;
this.getOrderDetail()
}).catch(err=>{
this.confirmSubmit = false;
});

},
//修改订单
async BeforeOrderEdit(){
this.loadOE = true;

this.PcbProcessType = await QuotePcbProcessType(this.orderDetail.tenantId);
let resOPED = await OrderPcbEditDetail(this.orderId);
this.typeList={
BoardLayers:this.resEditPP('BoardLayers'),
BoardThickness:this.resEditPP('BoardThickness'),
SolderColor:this.resEditPP('SolderColor'),
FontColor:this.resEditPP('FontColor'),
SolderCover:this.resEditPP('SolderCover'),
ProcessEdges:this.resEditPP('ProcessEdges'),
VCut:this.resEditPP('VCut'),
CopperThickness:this.resEditPP('CopperThickness'),
InnerCopperThickness:this.resEditPP('InnerCopperThickness'),
SurfaceFinish:this.resEditPP('SurfaceFinish'),
FlyingProbe:this.resEditPP('FlyingProbe'),
Vias:this.resEditPP('Vias'),
LineWeight:this.resEditPP('LineWeight'),
CoreType:this.resEditPP('CoreType'),
CoreTg:this.resEditPP('CoreTg'),
BoardType:this.resEditPP('BoardType'),
AcceptCrossed:this.resEditPP('AcceptCrossed'),
ImGoldThinckness:this.resEditPP('ImGoldThinckness'),
IsImpedance:this.resEditPP('IsImpedance'),
ImpedanceReport:this.resEditPP('ImpedanceReport'),
IPCLevel:this.resEditPP('IPCLevel'),
NeedReportList:this.resEditPP('NeedReportList'),
ProductFileSure:this.resEditPP('ProductFileSure'),
CamEngineer:this.resEditPP('CamEngineer'),
FormingType:this.resEditPP('FormingType'),
BeforePlating:this.resEditPP('BeforePlating'),
ImageTranster:this.resEditPP('ImageTranster'),
SolderTransfer:this.resEditPP('SolderTransfer'),
ReportMaterial:this.resEditPP('ReportMaterial'),
}
this.loadOE = false;
this.formPQ={
orderId:this.orderId,
boardWidth:resOPED.areaProcessData.boardWidth,
boardHeight:resOPED.areaProcessData.boardHeight,
boardThickness:resOPED.pcbStandardProcessData.boardThickness,
boardLayers:resOPED.pcbStandardProcessData.boardLayers,
num:resOPED.areaProcessData.num,
solderColor:resOPED.pcbStandardProcessData.solderColor,
solderColorBottom:resOPED.pcbStandardProcessData.solderColorBottom,
fontColor:resOPED.pcbStandardProcessData.fontColor,
fontColorBottom:resOPED.pcbStandardProcessData.fontColorBottom,
solderCover:resOPED.pcbStandardProcessData.solderCover,
pinBanX:resOPED.areaProcessData.pinBanX,
pinBanY:resOPED.areaProcessData.pinBanY,
pinBanNum:resOPED.areaProcessData.pinBanNum,
processEdges:resOPED.areaProcessData.processEdges,
processEdgesWidth:resOPED.areaProcessData.processEdgesWidth,
vCut:resOPED.areaProcessData.vCut,
grooveHeight:resOPED.areaProcessData.grooveHeight,
grooveWidth:resOPED.areaProcessData.grooveWidth,
copperThickness:resOPED.pcbStandardProcessData.copperThickness,
innerCopperThickness:resOPED.pcbStandardProcessData.innerCopperThickness,
surfaceFinish:resOPED.pcbStandardProcessData.surfaceFinish,
flyingProbe:resOPED.pcbStandardProcessData.flyingProbe,
vias:resOPED.pcbStandardProcessData.vias,
lineWeight:resOPED.pcbStandardProcessData.lineWeight,
coreType:resOPED.pcbBaseData.coreType,
coreTg:resOPED.pcbBaseData.coreTg,
boardType:resOPED.areaProcessData.boardType,
acceptCrossed:resOPED.areaProcessData.acceptCrossed,
bgaNum:resOPED.personalizedProcessData.bgaNum,
bgaSize:resOPED.personalizedProcessData.bgaSize,
imGoldThinckness:resOPED.pcbStandardProcessData.imGoldThinckness,
impedanceReport:resOPED.personalizedProcessData.impedanceReport,
// impedanceSize:resOPED.personalizedProcessData.impedanceSize,
isImpedance:resOPED.personalizedProcessData.isImpedance,
boardHoleNum:resOPED.pcbProductionProcessData.boardHoleNum,
ipcLevel:resOPED.personalizedProcessData.ipcLevel,
needReportList:resOPED.personalizedProcessData.needReportList.split(','),
productFileSure:resOPED.personalizedProcessData.productFileSure,
camEngineer:resOPED.personalizedProcessData.camEngineer,
// aluminumType:resOPED.areaProcessData.aluminumType,
withstandVoltage:resOPED.pcbStandardProcessData.withstandVoltage,
formingType:resOPED.pcbStandardProcessData.formingType,
routLength:resOPED.pcbProductionProcessData.routLength,
beforePlating:resOPED.pcbStandardProcessData.beforePlating,
changeItemNum:resOPED.pcbProductionProcessData.changeItemNum,
changePeriod:resOPED.pcbProductionProcessData.changePeriod,
imageTranster:resOPED.pcbStandardProcessData.imageTranster,
utilizationRate:resOPED.pcbProductionProcessData.utilizationRate,
solderTransfer:resOPED.pcbStandardProcessData.solderTransfer,
wvTest:resOPED.pcbStandardProcessData.wvTest,
// halfHole:resOPED.areaProcessData.halfHole,
reportMaterial:resOPED.personalizedProcessData.reportMaterial,
IsOutFactory:resOPED.pcbBaseData.isOutFactory,
// Note:resOPED.orderDetail.note,
Note:'',
SpecialProcess:[],
}
//特殊工艺取类
let arrSpecial = [];
for (let i in this.PcbProcessType){
let ppt = this.PcbProcessType[i];
if(ppt.isSpecial === 1){
arrSpecial.push(ppt);
}
}
this.arrSpecialList = arrSpecial;
let fmSP = [];
for (let i in arrSpecial){
fmSP.push({typeName:arrSpecial[i].typeName,typeValue:''});
}
for(let i in fmSP){
let rSP = resOPED.pcbSpecialProcessData;
for (let rid in rSP){
if(fmSP[i].typeName==rSP[rid].typeName){
fmSP[i].typeValue = rSP[rid].typeValue;
continue;
}
}
}
this.selSL = fmSP;
this.ifEdit = true;
},
upOrderEdit(){
let selSL = this.selSL;
let selSLDB = {};
for (let i in selSL){
let ts = selSL[i];
if (ts.typeValue!='' && ts.typeValue!='0'){
selSLDB[ts.typeName] = ts.typeValue.toString();
// selSLDB.push(obj);
}
}
this.formPQ.SpecialProcess = selSLDB;
this.loadEdit = true;
let params = {...this.formPQ}
params.needReportList = params.needReportList.toString();
putOrderPcb(params).then(res=>{
this.$message.success('修改成功!');
this.ifEdit = false;
this.loadEdit = false;
this.getOrderDetail()
}).catch(err=>{
this.loadEdit = false;
})
},
//申请外发报价
async fnPcbOffer(){
this.loadOffer = true;
try{
await OrderPcbOffer(this.orderId)
this.$message.success('提交成功!');
}catch (e) {
console.log(e);
}finally {
this.loadOffer = false;
}
},
//调整价格
fnAdjustAmount(){
this.$message.warning('emmm.. 暂不支持调价!');
},
//参数获取返回解析
resEditPP(key){
for (let i in this.PcbProcessType){
let ppt = this.PcbProcessType[i];
if(ppt.typeName==key){
let arr = ppt.processDataList.sort((a,b)=>a.dataValue - b.dataValue);
return arr;
}
}
}
}
}
</script>

<style scoped>
td.t{color:#000}
.ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background-color:#f90; color:#fff}
.ant-radio-button-wrapper{padding:0 10px;}
</style>

+ 122
- 0
src/pages/order/list.vue Ver arquivo

@@ -0,0 +1,122 @@
<template>
<div class="boxMain">
<inc-search :listInput="listInput" :loadSoBn="tableLoad" :onSearch="filterSearch" :orderType="orderType"></inc-search>
<a-table class="tablesa" :columns="tableColumns" :data-source="tableData" :rowKey="lists => lists.orderNo" :pagination="pagination" :loading="tableLoad" @change="filterSearch">
<div slot="orderNo" slot-scope="text,record">
<router-link :to="'detail?Id='+record.orderNo"><a-icon type="file-text" /> {{text}}</router-link>
</div>
<span class="amount" slot="amount" slot-scope="text,record">金额:<span>${{ text }}</span><br>已付:<span>${{record.paidAmount||0}}</span></span>
<span slot="status" slot-scope="text">{{getSelTxt('orderStatus',text)}}</span>
<span slot="parsingStatus" slot-scope="text">{{getSelTxt('parseStatue',text)}}</span>
<span slot="creationTime" slot-scope="text">{{formatDateTime(text)}}</span>
<div class="files" slot="files" slot-scope="text">
<ul>
<li v-for="(file,fid) in text" :key="fid"><a :href="file.url" :title="file.name" target="_blank"><a-icon type="link" /> {{file.name}}</a></li>
</ul>
</div>
</a-table>
</div>
</template>

<script>
import IncSearch from "@/pages/Common/search";
import {formatDate, resSelects} from "@/services/Common";
import {OrderList} from "@/services/order/Order";
export default {
name: 'OrderList',
components: {IncSearch},

data(){
return{
orderType:[],
listInput:[
{type:'select',name:'OrderType',title:'订单类型',value:'', width:'120px',
option:resSelects('orderType'),
},
{type:'select',name:'Status',title:'订单状态',value:'', width:'120px',
option:resSelects('orderStatus'),
},
{type:'select',name:'ParseStatue',title:'解析状态',value:'', width:'120px',
option:resSelects('parseStatue'),
},
{type:'input',name:'OrderNo',title:'订单号',value:''},
{type:'input',name:'GroupNo',title:'订单包号',value:''},
{type:'input',name:'MemberNo',title:'客户编号',value:''},
{type:'input',name:'FollowAccount',title:'跟单人员账号',value:''},
{type:'input',name:'CheckAccount',title:'审核人员账号',value:''},
],
pagination: {
pageSize: 10,
current: 1,
showQuickJumper: true,
showTotal: (total) => `总计 ${total} 条`,
},
tableLoad: false,
tableColumns:[
{title: '订单编号',dataIndex: 'orderNo',key: 'orderNo',width:'260px',scopedSlots: { customRender: 'orderNo' },},
{title: '状态',dataIndex: 'status',key: 'status',width:'100px',scopedSlots: { customRender: 'status' },},
{title: '解析状态',dataIndex: 'parsingStatus',key: 'parsingStatus',width:'100px',scopedSlots: { customRender: 'parsingStatus' },},
{title: '创建时间',dataIndex: 'creationTime',key: 'creationTime',width:'160px',scopedSlots: { customRender: 'creationTime' },},
{title: '下单时间',dataIndex: 'orderTime',key: 'orderTime',width:'160px'},
{title: '时效',dataIndex: 'deliveryTime',key: 'deliveryTime',width:'120px'},
{title: '数量',dataIndex: 'qty',key: 'qty',width:'80px'},
{title: '文件',dataIndex: 'files',key: 'files',width:'300px',scopedSlots: { customRender: 'files' },},
{title: '金额',dataIndex: 'amount',key: 'amount',scopedSlots: { customRender: 'amount' }},
],
tableData:[],
}
},
mounted() {
// var reg = /\/order\/((\w|-|\s)+)\//ig;
// let routePath = this.$route.path.replace(reg, function() {
// return arguments[1];
// });
// this.orderType = resProTypes(routePath);
this.filterSearch()
},
methods:{
getSelTxt(type,key){
return resSelects(type,key);
},
filterSearch(page){
// console.log(this.listInput)
if(typeof(page)=='object'){
this.pagination.current = page.current;
}else if (typeof (page) == 'number'){
this.pagination.current = page;
}
let params={
PageIndex:this.pagination.current,
PageSize:this.pagination.pageSize,
}
for (let i in this.listInput){
let ts = this.listInput[i];
if (ts.value!=='') params[ts.name] = ts.value;
}
this.fetch(params);
},
fetch(params = {}) {
this.tableLoad = true;
OrderList(params).then(data=>{
if (data.success){
data = data.data;
const pagination = { ...this.pagination};
pagination.total = data.totalCount;
this.tableLoad = false;
this.tableData = data.items;
this.pagination = pagination;
}else this.$message.error('获取失败!'+data.message);
}).finally(()=>{
this.tableLoad = false;
})
},
formatDateTime(time){
return formatDate(time,'yyyy-MM-dd hh:mm');
},
}
}
</script>

<style scoped>

</style>

+ 1
- 1
src/services/order/Order.js Ver arquivo

@@ -2,7 +2,7 @@ import {requestApi, METHOD, requestOss} from '@/utils/request';

//获取订单列表
export function OrderList(params) {
return requestApi('/api/admin/orders/purchase', METHOD.GET, params)
return requestApi('/api/app/order/page-list', METHOD.GET, params)
}

//获取SMT订单详情


Carregando…
Cancelar
Salvar