@@ -332,7 +332,7 @@ a.link{font-size:16px; line-height:2em; display: inline-block} | |||||
.tabbn .ant-btn{padding:0 .5em; color:#f90} | .tabbn .ant-btn{padding:0 .5em; color:#f90} | ||||
.tabbn .ant-btn:hover{opacity:.4} | .tabbn .ant-btn:hover{opacity:.4} | ||||
.boxMain{background-color:#fff; padding:30px} | .boxMain{background-color:#fff; padding:30px} | ||||
.boxFilter{padding-bottom:1em} | |||||
.boxFilter,.boxFilter>*{margin-bottom:.5em} | |||||
.boxFilter.bn>*{margin:0 1em 0 0; display: inline-block} | .boxFilter.bn>*{margin:0 1em 0 0; display: inline-block} | ||||
.boxFilter.bn>.ant-btn-link{padding:0 .5em} | .boxFilter.bn>.ant-btn-link{padding:0 .5em} | ||||
.ant-table-placeholder{background-color:#fff} | .ant-table-placeholder{background-color:#fff} | ||||
@@ -8,7 +8,7 @@ | |||||
<a-select-option v-for="(op,oid) in e.option" :key="oid" :value="op.value">{{op.text}}</a-select-option> | <a-select-option v-for="(op,oid) in e.option" :key="oid" :value="op.value">{{op.text}}</a-select-option> | ||||
</a-select> | </a-select> | ||||
</div> | </div> | ||||
<div><a-button :loading="loadSoBn" type="primary" @click="onSearch()">搜索</a-button></div> | |||||
<div><a-button :loading="loadSoBn" type="primary" @click="onSearch(1)">搜索</a-button></div> | |||||
<div><a-button @click="filterReset()">重置</a-button></div> | <div><a-button @click="filterReset()">重置</a-button></div> | ||||
<template v-for="e in listInput"> | <template v-for="e in listInput"> | ||||
<a-button :key="e.name" v-if="e.type=='button'" type="primary" @click="isFn(e,'fn')">{{e.title}}</a-button> | <a-button :key="e.name" v-if="e.type=='button'" type="primary" @click="isFn(e,'fn')">{{e.title}}</a-button> | ||||
@@ -268,22 +268,21 @@ export default { | |||||
filterOption(input, option) {return (option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0);}, | filterOption(input, option) {return (option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0);}, | ||||
//列表 | //列表 | ||||
filterSearch(page){ | filterSearch(page){ | ||||
// console.log(page) | |||||
// console.log(this.listInput) | |||||
if(typeof(page)=='object'){ | if(typeof(page)=='object'){ | ||||
this.pagination.current = page.current; | this.pagination.current = page.current; | ||||
} | } | ||||
let count = (this.pagination.current-1)*this.pagination.pageSize; | let count = (this.pagination.current-1)*this.pagination.pageSize; | ||||
let params={ | let params={ | ||||
roleId:this.listInput[0].value, | |||||
userName:this.listInput[1].value, | |||||
emailAddress:this.listInput[2].value, | |||||
phoneNumber:this.listInput[3].value, | |||||
notActive:this.listInput[4].value===0?false:(this.listInput[4].value===1?true:''), | |||||
isLockedOut:this.listInput[5].value===0?false:(this.listInput[5].value===1?true:''), | |||||
skipCount:count, | skipCount:count, | ||||
maxResultCount:this.pagination.pageSize, | maxResultCount:this.pagination.pageSize, | ||||
} | } | ||||
for (let i in this.listInput){ | |||||
let ts = this.listInput[i]; | |||||
if (ts.value!==''){ | |||||
if (ts.name==='notActive' || ts.name==='isLockedOut') params[ts.name] = ts.value===0?false:(ts.value===1?true:''); | |||||
else params[ts.name] = ts.value; | |||||
} | |||||
} | |||||
// console.log(params) | // console.log(params) | ||||
this.fetch(params); | this.fetch(params); | ||||
}, | }, | ||||
@@ -126,6 +126,8 @@ export default { | |||||
// console.log(this.listInput) | // console.log(this.listInput) | ||||
if(typeof(page)=='object'){ | if(typeof(page)=='object'){ | ||||
this.pagination.current = page.current; | this.pagination.current = page.current; | ||||
}else if (typeof (page) == 'number'){ | |||||
this.pagination.current = page; | |||||
} | } | ||||
let count = (this.pagination.current-1)*this.pagination.pageSize; | let count = (this.pagination.current-1)*this.pagination.pageSize; | ||||
let params={ | let params={ | ||||
@@ -1,106 +0,0 @@ | |||||
<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.id" :pagination="pagination" :loading="tableLoad" @change="filterSearch"> | |||||
<router-link slot="orderNo" slot-scope="text,record" :to="'detail?id='+record.orderId"><a-icon type="file-text" /> {{text}}</router-link> | |||||
<span class="amount" slot="amount" slot-scope="text,record">金额:<span>${{ text }}</span><br>已付:<span>${{record.paidAmount||0}}</span></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, resOrderStatus, resProTypes} from "@/services/Common"; | |||||
import {OrderList} from "@/services/order/Order"; | |||||
export default { | |||||
name: 'OrderList', | |||||
components: {IncSearch}, | |||||
data(){ | |||||
return{ | |||||
orderType:[], | |||||
listInput:[ | |||||
{type:'input',name:'OrderNo',title:'订单编号',value:''}, | |||||
{type:'select',name:'orderStatus',title:'订单状态',value:'', width:'120px', | |||||
option:resOrderStatus(), | |||||
}, | |||||
], | |||||
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: 'orderStatusValue',key: 'orderStatusValue',width:'100px'}, | |||||
{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:{ | |||||
getOrderStatus(key){ | |||||
return resOrderStatus(key); | |||||
}, | |||||
filterSearch(page){ | |||||
// console.log(page) | |||||
// console.log(this.listInput) | |||||
if(typeof(page)=='object'){ | |||||
this.pagination.current = page.current; | |||||
} | |||||
let count = (this.pagination.current-1)*this.pagination.pageSize; | |||||
let params={ | |||||
orderType:this.orderType.proType, | |||||
orderNo:this.listInput[0].value, | |||||
orderStatus:this.listInput[1].value, | |||||
// sorting:this.listInput[2].value, | |||||
skipCount:count, | |||||
maxResultCount:this.pagination.pageSize, | |||||
} | |||||
// console.log(params) | |||||
this.fetch(params); | |||||
}, | |||||
fetch(params = {}) { | |||||
this.tableLoad = true; | |||||
OrderList(params).then(data=>{ | |||||
const pagination = { ...this.pagination}; | |||||
pagination.total = data.totalCount; | |||||
this.tableLoad = false; | |||||
this.tableData = data.items; | |||||
this.pagination = pagination; | |||||
}).catch(err=>{ | |||||
this.tableLoad = false; | |||||
}) | |||||
}, | |||||
formatDateTime(time){ | |||||
return formatDate(time,'yyyy-MM-dd hh:mm'); | |||||
}, | |||||
} | |||||
} | |||||
</script> | |||||
<style scoped> | |||||
</style> |
@@ -1,531 +0,0 @@ | |||||
<template> | |||||
<div class="boxMain"> | |||||
<a-spin :spinning="loadPage"> | |||||
<div class="boxFilter bn"> | |||||
<bnOrderLogList :order-id="orderId" /> | |||||
<a-button type="primary" :loading="loadQB" @click="fnQuoteBom">BOM报价</a-button> | |||||
<!-- <a-button type="primary" :loading="loadBomCheck" @click="fnShowOrderCheck(1)">审核</a-button>--> | |||||
<a-button type="primary" :loading="loadRecheckBom" @click="fnShowOrderCheck(2)">提交复审</a-button> | |||||
<!-- <a-button type="primary" :loading="loadBomSure" @click="fnBomSure">确认订单</a-button>--> | |||||
<a-button type="primary" :loading="loadProduceBom" @click="fnProduceBom">BOM投产</a-button> | |||||
<a-button type="primary" @click="fnBeforeBomSmtNum">更改元器件套数</a-button> | |||||
<bn-set-purchase-status v-if="detail.orderBase" :order-id="orderId" :order-status="detail.orderBase.orderPurchaseStatus" :getList="getOrderDetail"/> | |||||
<bnOrderCancel :order-id="orderId" /> | |||||
</div> | |||||
<template v-if="detail.orderBase"> | |||||
<div class="titsc"><b>基础信息</b></div> | |||||
<table class="tablesc"> | |||||
<tr> | |||||
<!-- <td class="t">订单id:</td>--> | |||||
<!-- <td class="n">{{detail.orderBase.id}}</td>--> | |||||
<!-- <td class="t">用户Id:</td>--> | |||||
<!-- <td class="n">{{detail.orderBase.memberId}}</td>--> | |||||
<td class="t">订单编号:</td> | |||||
<td class="n">{{detail.orderBase.orderNo}}</td> | |||||
<td class="t">订单类型:</td> | |||||
<td class="n">{{getProTypes(detail.orderBase.proType).title}}</td> | |||||
<td class="t">订单状态:</td> | |||||
<td class="n">{{detail.orderBase.orderPurchaseStatusValue}}</td> | |||||
<td class="t">包裹编号:</td> | |||||
<td class="n">{{detail.orderBase.packageNo}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">套数:</td> | |||||
<td class="n">{{detail.orderBase.qty}}</td> | |||||
<td class="t">订单备注:</td> | |||||
<td class="n">{{detail.orderBase.note}}</td> | |||||
<td class="t">复制订单编号:</td> | |||||
<td class="n">{{detail.orderBase.copyOrderNo}}</td> | |||||
<td class="t">返单订单编号:</td> | |||||
<td class="n">{{detail.orderBase.reOrderNo}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">币种:</td> | |||||
<td class="n">{{detail.orderBase.currency}}</td> | |||||
<td class="t">系统计价:</td> | |||||
<td class="n">{{detail.orderBase.boardBrand}}</td> | |||||
<td class="t">成本价:</td> | |||||
<td class="n">{{detail.orderBase.isReOrder}}</td> | |||||
<td class="t">产品费:</td> | |||||
<td class="n">{{detail.orderBase.reOrderNo}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">调整金额:</td> | |||||
<td class="n">{{detail.orderBase.adjustmentAmount}}</td> | |||||
<td class="t">优惠券金额:</td> | |||||
<td class="n">{{detail.orderBase.couponAmount}}</td> | |||||
<td class="t">销售价:</td> | |||||
<td class="n">{{detail.orderBase.salePrice}}</td> | |||||
<td class="t">总重:</td> | |||||
<td class="n">{{detail.orderBase.weight}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">物流方式:</td> | |||||
<td class="n">{{detail.orderBase.shipType}}</td> | |||||
<td class="t">运费:</td> | |||||
<td class="n">{{detail.orderBase.shipAmount}}</td> | |||||
<td class="t">手续费:</td> | |||||
<td class="n">{{detail.orderBase.serviceCharge}}</td> | |||||
<td class="t">总金额:</td> | |||||
<td class="n">{{detail.orderBase.totalAmount}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">支付金额:</td> | |||||
<td class="n">{{detail.orderBase.payAmount}}</td> | |||||
<td class="t">支付时间:</td> | |||||
<td class="n">{{formatDateTime(detail.orderBase.payTime)}}</td> | |||||
<td class="t">交期天数:</td> | |||||
<td class="n">{{detail.orderBase.deliveryDays}}</td> | |||||
<td class="t">交期:</td> | |||||
<td class="n">{{formatDateTime(detail.orderBase.date)}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">创建日期:</td> | |||||
<td class="n" colspan="7">{{formatDateTime(detail.orderBase.creationTime)}}</td> | |||||
</tr> | |||||
<!-- <tr>--> | |||||
<!-- <td class="t"></td>--> | |||||
<!-- <td class="n"></td>--> | |||||
<!-- <td class="t"></td>--> | |||||
<!-- <td class="n"></td>--> | |||||
<!-- </tr>--> | |||||
</table> | |||||
</template> | |||||
<template v-if="detail.bomOrder"> | |||||
<div class="titsc"><b>BOM订单信息</b></div> | |||||
<table class="tablesc"> | |||||
<tr> | |||||
<td class="t">Bom订单Id:</td> | |||||
<td class="n">{{detail.bomOrder.bomId}}</td> | |||||
<td class="t">Smt套数:</td> | |||||
<td class="n">{{detail.bomOrder.smtNum}}</td> | |||||
<td class="t">Smt订单编号:</td> | |||||
<td class="n">{{detail.bomOrder.smtOrderNo}}</td> | |||||
<td class="t">元器件种类数:</td> | |||||
<td class="n">{{detail.bomOrder.proNum}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">Bom名称:</td> | |||||
<td class="n">{{detail.bomOrder.bomName}}</td> | |||||
<td class="t">文件地址:</td> | |||||
<td class="n"><a v-if="detail.bomOrder.saveFilePath" :href="detail.bomOrder.saveFilePath" :title="detail.bomOrder.saveFilePath" target="_blank">预览下载</a></td> | |||||
<td class="t">是否显示给客户:</td> | |||||
<td class="n">{{detail.bomOrder.isShowToCus}}</td> | |||||
<td class="t">客供代购比:</td> | |||||
<td class="n">{{detail.bomOrder.customerPurchase}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">交期:</td> | |||||
<td class="n">{{formatDateTime(detail.bomOrder.customerDeliveryDate)}}</td> | |||||
<td class="t">代购物料交期:</td> | |||||
<td class="n">{{formatDateTime(detail.bomOrder.agentDeliveryDate)}}</td> | |||||
<td class="t">是否是补料:</td> | |||||
<td class="n">{{detail.bomOrder.isSupplement}}</td> | |||||
<td class="t">复审人员:</td> | |||||
<td class="n">{{detail.bomOrder.reCheckerName}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">审核原因:</td> | |||||
<td class="n">{{detail.bomOrder.checkedReason}}</td> | |||||
<td class="t">内部调度费:</td> | |||||
<td class="n">{{detail.bomOrder.transportPrice}}</td> | |||||
<td class="t">元器件成本总价:</td> | |||||
<td class="n">{{detail.bomOrder.qrgTotalMoney}}</td> | |||||
<td class="t">结算总价:</td> | |||||
<td class="n">{{detail.bomOrder.settleTotalMoney}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">代理商成本总价:</td> | |||||
<td class="n">{{detail.bomOrder.totalMoney}}</td> | |||||
<td class="t">代理商销售总价:</td> | |||||
<td class="n">{{detail.bomOrder.agentSaleTotalMoney}}</td> | |||||
<td class="t"></td> | |||||
<td class="n"></td> | |||||
<td class="t"></td> | |||||
<td class="n"></td> | |||||
</tr> | |||||
</table> | |||||
</template> | |||||
<template v-if="detail.bomRelaions"> | |||||
<div class="titsc"><b>元器件信息</b> | |||||
<a-button style="margin-left:2em" type="primary" :loading="loadRelationsBom" @click="showRelationsBom=true">新增BOM元器件</a-button> | |||||
</div> | |||||
<a-table class="tablesa c" :columns="tableBRColumns" :data-source="detail.bomRelaions" :scroll="{x:5000,y:600}" :rowKey="lists => lists.id" :pagination="false"> | |||||
<span class="tableEdit" slot="id" slot-scope="text,record,index"> | |||||
<a-spin :spinning="record.loadEdit"> | |||||
<em>{{index+1}}</em> | |||||
<a-button type="link" @click="showBDBR(text,index)">删除</a-button> | |||||
<a-button v-if="!record.edit" type="link" @click="showBEBR(text,index)">编辑</a-button> | |||||
<a-button v-if="record.edit" type="link" @click="fnEditBomRelatioin(text,index)">保存</a-button> | |||||
</a-spin> | |||||
</span> | |||||
<span slot="bitName" slot-scope="text,record"><span v-if="!record.edit">{{text}}</span><a-input v-else v-model="record.bitName" /></span> | |||||
<span slot="singleDosage" slot-scope="text,record"><span v-if="!record.edit">{{text}}</span><a-input v-else v-model="record.singleDosage" /></span> | |||||
<span slot="buyNum" slot-scope="text,record"><span v-if="!record.edit">{{text}}</span><a-input v-else v-model="record.buyNum" /></span> | |||||
<span slot="feedWay" slot-scope="text,record"><span v-if="!record.edit">{{resStatus(text,listArrCf.feedWay)}}</span> | |||||
<a-select v-else v-model="record.feedWay" style="min-width:80px"> | |||||
<a-select-option v-for="(li,i) in listArrCf.feedWay" :disabled="i==0" :key="i" :title="li" :value="i">{{li}}</a-select-option> | |||||
</a-select> | |||||
</span> | |||||
<span slot="status" slot-scope="text,record"><span v-if="!record.edit">{{resStatus(text,listArrCf.status)}}</span> | |||||
<a-select v-else v-model="record.status" style="min-width:80px"> | |||||
<a-select-option v-for="(li,i) in listArrCf.status" :key="i" :title="li" :value="i">{{li}}</a-select-option> | |||||
</a-select> | |||||
</span> | |||||
<span slot="adminRemark" slot-scope="text,record"><span v-if="!record.edit">{{text}}</span><a-input v-else v-model="record.adminRemark" /></span> | |||||
<span slot="updateStatus" slot-scope="text">{{resStatus(text,listArrCf.updateStatus)}}</span> | |||||
</a-table> | |||||
<div class="tableOFAT" style="display: none"> | |||||
<table class="tablesc c" style="width:4600px"> | |||||
<tr> | |||||
<td class="t" style="width:140px">操作:</td> | |||||
<td class="t">名称:</td> | |||||
<td class="t">元器件报价状态:</td> | |||||
<td class="t">重量:</td> | |||||
<td class="t">需求数:</td> | |||||
<td class="t">单片用量:</td> | |||||
<td class="t">实际到料数:</td> | |||||
<td class="t">备料数:</td> | |||||
<td class="t">供料方式:</td> | |||||
<td class="t">位号:</td> | |||||
<td class="t">型号:</td> | |||||
<td class="t">品牌:</td> | |||||
<td class="t">参数:</td> | |||||
<td class="t">批号:</td> | |||||
<td class="t">封装:</td> | |||||
<td class="t">料号类别:</td> | |||||
<td class="t">产品编号:</td> | |||||
<td class="t">修改状态:</td> | |||||
<td class="t">类目名称类型:</td> | |||||
<td class="t">报价有效期:</td> | |||||
<td class="t">交期天数:</td> | |||||
<td class="t">客户备注:</td> | |||||
<td class="t">业务员备注:</td> | |||||
<td class="t">报价员备注:</td> | |||||
<td class="t">最终供应商:</td> | |||||
<td class="t">最终供应商key:</td> | |||||
<td class="t">最终供应商备注:</td> | |||||
<td class="t">SMT套数:</td> | |||||
<td class="t">规格书地址:</td> | |||||
<td class="t">单价:</td> | |||||
<td class="t">报价成本:</td> | |||||
<td class="t">最终采购价:</td> | |||||
<td class="t">结算价格:</td> | |||||
<td class="t">指导销售价:</td> | |||||
<td class="t">代理商指导销售价:</td> | |||||
<td class="t">代理商实际销售价:</td> | |||||
<td class="t">元器件成本总价:</td> | |||||
<td class="t">结算总价:</td> | |||||
<td class="t">代理商指导销售价:</td> | |||||
<td class="t">代理商实际销售价:</td> | |||||
</tr> | |||||
<!-- <tr v-for="(br,bid) in detail.bomRelaions" :key="bid">--> | |||||
<!-- <td class="n">删除 编辑</td>--> | |||||
<!-- </tr>--> | |||||
</table> | |||||
</div> | |||||
<!-- <div class="boxBn">--> | |||||
<!-- <a-button type="danger" @click="fnBeforeDelBomRelation">删除选中元器件</a-button>--> | |||||
<!-- </div>--> | |||||
<a-modal title="新增BOM元器件" width="600px" :visible="showRelationsBom" :confirm-loading="confirmSubmit" @cancel="showRelationsBom=false" @ok="fnRelationsBom"> | |||||
<a-spin :spinning="loadForm"> | |||||
<a-form-model v-model="formRelationsBom" v-bind="layout"> | |||||
<a-form-model-item label="上传文件地址"> | |||||
<a-spin :spinning="loadUp"> | |||||
<a-input-group compact> | |||||
<a-input style="width:60%" v-model="formRelationsBom.saveFilePath" /> | |||||
<a-upload name="file" :showUploadList="false" :customRequest="(file)=>{fnToOssUpfile(file,'gerber')}" accept=".xls,.xlsx,.csv"> | |||||
<a-button type="primary"><a-icon type="upload" /> 上传文件</a-button> | |||||
</a-upload> | |||||
</a-input-group> | |||||
</a-spin> | |||||
</a-form-model-item> | |||||
</a-form-model> | |||||
</a-spin> | |||||
</a-modal> | |||||
<a-modal title="删除元器件" :width="300" :visible="showDelBR" :confirm-loading="confirmLoading" @ok="fnDelBomRelation" @cancel="showDelBR = false"> | |||||
<p>备注:<a-input style="width:200px" v-model="delBRRemark" /></p> | |||||
</a-modal> | |||||
</template> | |||||
</a-spin> | |||||
<a-modal title="更改元器件套数" :width="300" :visible="showBomSmtNum" :confirm-loading="confirmLoading" @ok="fnBomSmtNum" @cancel="showBomSmtNum = false"> | |||||
<p>修改套数:<a-input style="width:100px" v-model="bomSmtNum" /></p> | |||||
</a-modal> | |||||
<a-modal :title="formOrderCheck.OCType===1?'审核订单':'复审订单'" :visible="showOrderCheck" :confirm-loading="confirmSubmit" @ok="fnBomCheck" @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 { | |||||
resOrderBomDetail, | |||||
OrderBomQuote, | |||||
OrderBomRelations, | |||||
OrderReadBomFile, | |||||
OrderBomProduce, | |||||
DelBomRelation, | |||||
putBomRelation, | |||||
putBomSmtNum, | |||||
OrderBomSure, | |||||
OrderBOMCheck | |||||
} from "@/services/order/Order"; | |||||
import {formatDate,resProTypes,resOrderStatus} from "@/services/Common"; | |||||
import bnOrderLogList from "@/pages/Common/bnOrderLogList"; | |||||
import bnOrderCancel from "@/pages/Common/bnOrderCancel"; | |||||
import {upFileToOSS} from "@/services/uploadFile"; | |||||
import BnSetPurchaseStatus from "@/pages/Common/bnSetPurchaseStatus"; | |||||
export default { | |||||
name: 'PcbDetail', | |||||
components: {bnOrderLogList,bnOrderCancel,BnSetPurchaseStatus}, | |||||
data(){ | |||||
return{ | |||||
loadPage:true,orderId:'',detail: {},loadQB:false,loadRecheckBom:false,loadRelationsBom:false,loadProduceBom:false,loadUp:false,loadForm:false,confirmLoading:false,showDelBR:false,showRelationsBom:false,confirmSubmit:false,selBRID:'',delBRRemark:'',showBomSmtNum:false,loadBomCheck:false,loadBomSure:false, | |||||
formRelationsBom:{bomId:'',saveFilePath:''},bomSmtNum:0, | |||||
listArrCf:{ | |||||
status:['未核价','报价中','已报价','需重新报价','作废','驳回'], | |||||
feedWay:['供料方式','代购','客供','代购不贴','客供不贴','其他'], | |||||
updateStatus:['无','无修改','修改过'], | |||||
}, | |||||
layout: { | |||||
labelCol: { span:5 }, | |||||
wrapperCol: { span:17 }, | |||||
}, | |||||
formOrderCheck:{orderId:'',isPass:1,remark:'',OCType:''},showOrderCheck:false, | |||||
tableBRColumns:[ | |||||
{title:'操作',align:'center',dataIndex: 'id',key: 'id',fixed: 'left',width:'170px',scopedSlots: { customRender: 'id' }}, | |||||
{title:'名称',align:'center',dataIndex: 'bomName',key: 'bomName',}, | |||||
{title:'业务员备注',align:'center',dataIndex: 'adminRemark',key: 'adminRemark',scopedSlots: { customRender: 'adminRemark' }}, | |||||
{title:'报价状态',align:'center',dataIndex: 'status',key: 'status',scopedSlots: { customRender: 'status' }}, | |||||
{title:'位号',align:'center',dataIndex: 'bitName',key: 'bitName',scopedSlots: { customRender: 'bitName' }}, | |||||
{title:'单片用量',align:'center',dataIndex: 'singleDosage',key: 'singleDosage',scopedSlots: { customRender: 'singleDosage' }}, | |||||
{title:'需求数',align:'center',dataIndex: 'buyNum',key: 'buyNum',scopedSlots: { customRender: 'buyNum' }}, | |||||
{title:'供料方式',align:'center',dataIndex: 'feedWay',key: 'feedWay',scopedSlots: { customRender: 'feedWay' }}, | |||||
{title:'重量',align:'center',dataIndex: 'unitWeight',key: 'unitWeight',}, | |||||
{title:'实际到料数',align:'center',dataIndex: 'realReceiveNum',key: 'realReceiveNum',}, | |||||
{title:'备料数',align:'center',dataIndex: 'reBuyNum',key: 'reBuyNum',}, | |||||
{title:'型号',align:'center',dataIndex: 'partNo',key: 'partNo',}, | |||||
{title:'品牌',align:'center',dataIndex: 'mfg',key: 'mfg',}, | |||||
{title:'参数',align:'center',dataIndex: 'parameter',key: 'parameter',}, | |||||
{title:'批号',align:'center',dataIndex: 'batchNum',key: 'batchNum',}, | |||||
{title:'封装',align:'center',dataIndex: 'pack',key: 'pack',}, | |||||
{title:'料号类别',align:'center',dataIndex: 'bomClass',key: 'bomClass',}, | |||||
{title:'产品编号',align:'center',dataIndex: 'productNo',key: 'productNo',}, | |||||
{title:'修改状态',align:'center',dataIndex: 'updateStatus',key: 'updateStatus',scopedSlots: { customRender: 'updateStatus' }}, | |||||
{title:'类目名称类型',align:'center',dataIndex: 'categoryName',key: 'categoryName',}, | |||||
{title:'报价有效期',align:'center',dataIndex: 'validTime',key: 'validTime',}, | |||||
{title:'交期天数',align:'center',dataIndex: 'deliveryDays',key: 'deliveryDays',}, | |||||
{title:'客户备注',align:'center',dataIndex: 'cusRemark',key: 'cusRemark',}, | |||||
{title:'报价员备注',align:'center',dataIndex: 'supplierRemark',key: 'supplierRemark',}, | |||||
{title:'最终供应商',align:'center',dataIndex: 'finallySupplier',key: 'finallySupplier',}, | |||||
{title:'供应商key',align:'center',dataIndex: 'finallySupplierKey',key: 'finallySupplierKey',}, | |||||
{title:'供应商备注',align:'center',dataIndex: 'finallySupplierRemark',key: 'finallySupplierRemark',}, | |||||
{title:'SMT套数',align:'center',dataIndex: 'smtNum',key: 'smtNum',}, | |||||
{title:'规格书地址',align:'center',dataIndex: 'pdfPath',key: 'pdfPath',}, | |||||
{title:'单价',align:'center',dataIndex: 'unitPrice',key: 'unitPrice',}, | |||||
{title:'报价成本',align:'center',dataIndex: 'qrgUnitPrice',key: 'qrgUnitPrice',}, | |||||
{title:'最终采购价',align:'center',dataIndex: 'finallyOrgPrice',key: 'finallyOrgPrice',}, | |||||
{title:'结算价格',align:'center',dataIndex: 'settlePrice',key: 'settlePrice',}, | |||||
{title:'指导销售价',align:'center',dataIndex: 'guidePrice',key: 'guidePrice',}, | |||||
{title:'指导销售价',align:'center',dataIndex: 'agentGuidePrice',key: 'agentGuidePrice',}, | |||||
{title:'实际销售价',align:'center',dataIndex: 'agentSalePrice',key: 'agentSalePrice',}, | |||||
{title:'成本总价',align:'center',dataIndex: 'qrgTotalMoney',key: 'qrgTotalMoney',}, | |||||
{title:'结算总价',align:'center',dataIndex: 'settleTotalMoney',key: 'settleTotalMoney',}, | |||||
{title:'指导销售价',align:'center',dataIndex: 'totalMoney',key: 'totalMoney',}, | |||||
{title:'实际销售价',align:'center',dataIndex: 'agentSaleTotalMoney',key: 'agentSaleTotalMoney',}, | |||||
], | |||||
} | |||||
}, | |||||
mounted() { | |||||
this.orderId = this.$route.query.id; | |||||
this.getOrderDetail(); | |||||
}, | |||||
methods:{ | |||||
async getOrderDetail(){ | |||||
this.loadPage = true; | |||||
let res = await resOrderBomDetail(this.orderId); | |||||
for (let i in res.bomRelaions){ | |||||
res.bomRelaions[i].edit = false; | |||||
res.bomRelaions[i].loadEdit = false; | |||||
} | |||||
this.detail = res; | |||||
this.loadPage = false; | |||||
}, | |||||
getProTypes(key){ | |||||
return resProTypes(key); | |||||
}, | |||||
getOrderStatus(key){ | |||||
return resOrderStatus(key); | |||||
}, | |||||
formatDateTime(time){ | |||||
return formatDate(time,'yyyy-MM-dd hh:mm'); | |||||
}, | |||||
fnShowOrderCheck(key){ | |||||
this.formOrderCheck.OCType = key; | |||||
this.showOrderCheck = true; | |||||
}, | |||||
//BOM审核 | |||||
fnBomCheck(){ | |||||
this.confirmSubmit = true; | |||||
this.formOrderCheck.orderId = this.orderId; | |||||
OrderBOMCheck(this.formOrderCheck).then(res=>{ | |||||
this.$message.success('审核成功!'); | |||||
this.getOrderDetail(); | |||||
this.showOrderCheck = false; | |||||
}).catch(err=>{ | |||||
console.log(err) | |||||
}).finally(res=>{ | |||||
this.confirmSubmit = false; | |||||
}) | |||||
}, | |||||
//BOM提交复审 | |||||
// fnRecheckBom(){ | |||||
// this.loadRecheckBom = true; | |||||
// OrderBomRecheck(this.orderId).then(res=>{ | |||||
// this.$message.success('提交成功!'); | |||||
// this.loadRecheckBom = false; | |||||
// }).catch(err=>{ | |||||
// this.loadRecheckBom = false; | |||||
// }); | |||||
// }, | |||||
//Bom确认 | |||||
fnBomSure(){ | |||||
this.loadBomSure = true; | |||||
OrderBomSure(this.orderId).then(res=>{ | |||||
this.$message.success('确认成功!'); | |||||
this.getOrderDetail(); | |||||
this.loadBomSure = false; | |||||
}).catch(err=>{ | |||||
this.loadBomSure = false; | |||||
}) | |||||
}, | |||||
//BOM报价 | |||||
fnQuoteBom(){ | |||||
this.loadQB = true; | |||||
OrderBomQuote(this.orderId).then(res=>{ | |||||
this.$message.success('报价成功!'); | |||||
this.loadQB = false; | |||||
}).catch(err=>{ | |||||
this.loadQB = false; | |||||
}); | |||||
}, | |||||
//新增BOM元器件 | |||||
fnRelationsBom(){ | |||||
this.loadRelationsBom = true; | |||||
this.formRelationsBom.bomId = this.detail.bomOrder.bomId; | |||||
OrderBomRelations(this.formRelationsBom).then(res=>{ | |||||
this.$message.success('提交成功!'); | |||||
this.loadRelationsBom = false; | |||||
this.showRelationsBom = false; | |||||
this.getOrderDetail(); | |||||
}).catch(err=>{ | |||||
this.loadRelationsBom = false; | |||||
this.showRelationsBom = false; | |||||
}); | |||||
}, | |||||
//上传OSS | |||||
async fnToOssUpfile(file,type){ | |||||
this.loadUp = true; | |||||
let resUpInfo = await upFileToOSS(file); | |||||
// let resUpInfo = {url:'https://test-jpfile1.oss-cn-shenzhen.aliyuncs.com/allpcb/2022/7/30/1659151521423/NLmr2gve.xls'}; | |||||
if(resUpInfo.url){ | |||||
this.formRelationsBom.saveFilePath = resUpInfo.url; | |||||
let res = await OrderReadBomFile('filePath',resUpInfo.url) | |||||
this.$message.success('文件上传成功!'); | |||||
// this.fnReadBomFile({filePath:resUpInfo.url}) | |||||
} | |||||
this.loadUp = false; | |||||
}, | |||||
//编辑BOM元器件 | |||||
showBEBR(id,index){ | |||||
this.detail.bomRelaions[index].edit=true; | |||||
}, | |||||
fnEditBomRelatioin(id,index){ | |||||
this.detail.bomRelaions[index].loadEdit=true; | |||||
let br = this.detail.bomRelaions[index]; | |||||
let pm = { | |||||
bitNum:br.bitName, | |||||
singleDosage:br.singleDosage, | |||||
buyNum:br.buyNum, | |||||
feedWay:br.feedWay, | |||||
status:br.status, | |||||
remark:br.adminRemark | |||||
} | |||||
putBomRelation(id,pm).then(res=>{ | |||||
this.$message.success('修改成功'); | |||||
this.detail.bomRelaions[index].loadEdit=false; | |||||
this.getOrderDetail(); | |||||
}).catch(err=>{ | |||||
this.detail.bomRelaions[index].loadEdit=false; | |||||
this.detail.bomRelaions[index].edit=true; | |||||
}) | |||||
// console.log(id,index) | |||||
}, | |||||
//删除BOM元器件 | |||||
showBDBR(id,index){ | |||||
// this.detail.bomRelaions[index].edit=true; | |||||
this.selBRID = id; | |||||
this.showDelBR = true; | |||||
}, | |||||
fnDelBomRelation(){ | |||||
let pm = { | |||||
id:this.selBRID, | |||||
remark:this.delBRRemark, | |||||
} | |||||
this.confirmLoading = true; | |||||
DelBomRelation(pm).then(res=>{ | |||||
this.$message.success('删除成功!'); | |||||
this.confirmLoading = false; | |||||
this.showDelBR = false; | |||||
this.getOrderDetail(); | |||||
}).catch(err=>{ | |||||
this.confirmLoading = false; | |||||
this.showDelBR = false; | |||||
}) | |||||
}, | |||||
//BOM投产 | |||||
fnProduceBom(){ | |||||
this.loadProduceBom = true; | |||||
OrderBomProduce(this.orderId).then(res=>{ | |||||
this.$message.success('投产成功!'); | |||||
this.loadProduceBom = false; | |||||
}).catch(err=>{ | |||||
this.loadProduceBom = false; | |||||
}) | |||||
}, | |||||
//更改元器件套数 | |||||
fnBeforeBomSmtNum(){ | |||||
this.bomSmtNum = this.detail.bomOrder.smtNum | |||||
this.showBomSmtNum=true | |||||
}, | |||||
fnBomSmtNum(){ | |||||
this.confirmLoading = true; | |||||
putBomSmtNum(this.orderId,this.bomSmtNum).then(res=>{ | |||||
this.$message.success('修改成功'); | |||||
this.showBomSmtNum = false; | |||||
this.confirmLoading = false; | |||||
this.getOrderDetail(); | |||||
}).catch(err=>{ | |||||
this.confirmLoading = false; | |||||
}); | |||||
}, | |||||
//返回状态 | |||||
resStatus(key,list){ | |||||
return list[key]; | |||||
}, | |||||
} | |||||
} | |||||
</script> | |||||
<style scoped> | |||||
</style> |
@@ -1,783 +0,0 @@ | |||||
<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> |
@@ -1,644 +0,0 @@ | |||||
<template> | |||||
<div class="boxMain"> | |||||
<a-spin :spinning="loadPage"> | |||||
<div class="boxFilter bn"> | |||||
<bnOrderLogList :order-id="orderId" /> | |||||
<a-button type="primary" :loading="loadBindList" @click="fnBeforeBindList">关联订单PCB/BOM</a-button> | |||||
<a-button type="primary" v-if="ifEdit==false" @click="ifEdit=true">编辑</a-button> | |||||
<a-button v-else @click="ifEdit=false">取消编辑</a-button> | |||||
<a-button type="primary" :loading="loadSmtCheck" @click="fnShowOrderCheck(1)">审核</a-button> | |||||
<a-button type="primary" :loading="loadSmtCheck2" @click="fnShowOrderCheck(2)">复审</a-button> | |||||
<!-- <a-button type="primary" :loading="loadSmtSure" @click="fnSmtSure">确认订单</a-button>--> | |||||
<a-button type="primary" :loading="loadSmtProduction" @click="fnSmtProduction">投产</a-button> | |||||
<a-button type="primary" @click="showSmtApplyBack=true">申请打回</a-button> | |||||
<bn-set-purchase-status :order-id="orderId" :order-status="orderStatus" :getList="getOrderDetail"/> | |||||
<bnOrderCancel :order-id="orderId" /> | |||||
</div> | |||||
<template v-if="ifEdit"> | |||||
<div class="titsc"><b>编辑SMT订单 ID:{{formEdit.orderId}}</b></div> | |||||
<table class="tablesc"> | |||||
<tr> | |||||
<td class="t">生产数量</td><td class="n"><a-input v-model="formEdit.productNum" style="width:70px" /></td> | |||||
<td class="t">单双面</td><td class="n"><a-input v-model="formEdit.layer" style="width:70px" /></td> | |||||
<td class="t">物料种类</td><td class="n"><a-input v-model="formEdit.patchElementType" style="width:70px" /></td> | |||||
<td class="t">贴片点数</td><td class="n"><a-input v-model="formEdit.patchElementPointNum" style="width:70px" /></td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">插件点数</td><td class="n"><a-input v-model="formEdit.dipPointNum" style="width:70px" /></td> | |||||
<td class="t">PCB高x长</td><td class="n"><a-input v-model="formEdit.pcbSizeX" style="width:70px" /> x <a-input v-model="formEdit.pcbSizeY" style="width:70px" /></td> | |||||
<td class="t">Set中Pcs数</td><td class="n"><a-input v-model="formEdit.setPcsNum" style="width:70px" /></td> | |||||
<td class="t">PCB供料方式</td> | |||||
<td class="n"> | |||||
<a-radio-group v-model="formEdit.productPCBType" button-style="solid"> | |||||
<a-radio-button v-for="(item,index) in arrDB.productPCBType" :key="index" :value="item.v">{{item.t}}</a-radio-button> | |||||
</a-radio-group> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">BOM供料方式</td> | |||||
<td class="n"> | |||||
<a-radio-group v-model="formEdit.purchaseGoodsType" button-style="solid"> | |||||
<a-radio-button v-for="(item,index) in arrDB.purchaseGoodsType" :key="index" :value="item.v">{{item.t}}</a-radio-button> | |||||
</a-radio-group> | |||||
</td> | |||||
<td class="t">工艺要求</td> | |||||
<td class="n"> | |||||
<a-radio-group v-model="formEdit.hasLead" button-style="solid"> | |||||
<a-radio-button v-for="(item,index) in arrDB.hasLead" :key="index" :value="item.v">{{item.t}}</a-radio-button> | |||||
</a-radio-group> | |||||
</td> | |||||
<td class="t">锡膏</td> | |||||
<td class="n"> | |||||
<a-radio-group v-model="formEdit.solderPaste" button-style="solid"> | |||||
<a-radio-button v-for="(item,index) in arrDB.solderPaste" :key="index" :value="item.v">{{item.t}}</a-radio-button> | |||||
</a-radio-group> | |||||
</td> | |||||
<td class="t">PCBA出货品质</td> | |||||
<td class="n"> | |||||
<a-radio-group v-model="formEdit.isHighQuality" button-style="solid"> | |||||
<a-radio-button v-for="(item,index) in arrDB.isHighQuality" :key="index" :value="item.v">{{item.t}}</a-radio-button> | |||||
</a-radio-group> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">一体化装配服务</td> | |||||
<td class="n"> | |||||
<a-radio-group v-model="formEdit.assemblyService" button-style="solid"> | |||||
<a-radio-button v-for="(item,index) in arrDB.need" :key="index" :value="item.v">{{item.t}}</a-radio-button> | |||||
</a-radio-group> | |||||
</td> | |||||
<td class="t">PCBA出货包装</td> | |||||
<td class="n"> | |||||
<a-radio-group v-model="formEdit.pcbaPackageType" button-style="solid"> | |||||
<a-radio-button v-for="(item,index) in arrDB.pcbaPackageType" :key="index" :value="item.v">{{item.t}}</a-radio-button> | |||||
</a-radio-group> | |||||
</td> | |||||
<td class="t">PCB拼版方式</td> | |||||
<td class="n"> | |||||
<a-radio-group v-model="formEdit.pcbIsPinban" button-style="solid"> | |||||
<a-radio-button v-for="(item,index) in arrDB.pcbIsPinban" :key="index" :value="item.v">{{item.t}}</a-radio-button> | |||||
</a-radio-group> | |||||
</td> | |||||
<td class="t">PCBA确认</td> | |||||
<td class="n"> | |||||
<a-radio-group v-model="formEdit.firstSure" button-style="solid"> | |||||
<a-radio-button v-for="(item,index) in arrDB.need" :key="index" :value="item.v">{{item.t}}</a-radio-button> | |||||
</a-radio-group> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">项目名称</td><td class="n"><a-input v-model="formEdit.projectName"/></td> | |||||
<td class="t">应用领域</td><td class="n"><a-input v-model="formEdit.applicationArea"/></td> | |||||
<td class="t">PCB产品类别</td> | |||||
<td class="n" colspan="3"> | |||||
<a-radio-group v-model="formEdit.pcbProductType" button-style="solid"> | |||||
<a-radio-button v-for="(item,index) in arrDB.pcbProductType" :key="index" :value="item.v">{{item.t}}</a-radio-button> | |||||
</a-radio-group> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">自定义编号1</td><td class="n"><a-input v-model="formEdit.autoField1"/></td> | |||||
<td class="t">自定义编号2</td><td class="n"><a-input v-model="formEdit.autoField2"/></td> | |||||
<td class="t">钢网随货发货</td> | |||||
<td class="n" colspan="3"> | |||||
<a-radio-group v-model="formEdit.isMergeDelivery" button-style="solid"> | |||||
<a-radio-button v-for="(item,index) in arrDB.yesNo" :key="index" :value="item.v">{{item.t}}</a-radio-button> | |||||
</a-radio-group> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
<div class="boxBn"><a-button @click="ifEdit=false">退出修改</a-button><a-button :loading="loadEdit" type="danger" @click="upOrderEdit">保存修改</a-button></div> | |||||
</template> | |||||
<template v-else> | |||||
<div class="titsc"><b>基础信息</b></div> | |||||
<table class="tablesc"> | |||||
<tbody> | |||||
<tr> | |||||
<td class="t">订单号:</td><td class="n">{{detail.orderNo}}</td> | |||||
<td class="t">订单状态:</td><td class="n">{{detail.orderPurchaseStatusValue}}</td> | |||||
<td class="t">订单包:</td><td class="n">{{detail.packageNo}}</td> | |||||
<td class="t">订单类型:</td><td class="n">{{detail.proType}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">订单类型名称:</td><td class="n">{{detail.proTypeValue}}</td> | |||||
<td class="t">客编:</td><td class="n">{{detail.memberCode}}</td> | |||||
<td class="t">业务员:</td><td class="n">{{detail.adminName}}</td> | |||||
<td class="t">生产数量:</td><td class="n">{{detail.qty}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">浮动金额:</td><td class="n">{{detail.adjustmentAmount}}</td> | |||||
<td class="t">折扣:</td><td class="n">{{detail.discount}}</td> | |||||
<td class="t">优惠券金额:</td><td class="n">{{detail.couponAmount}}</td> | |||||
<td class="t">销售价:</td><td class="n">{{detail.salePrice}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">运费:</td><td class="n">{{detail.shipAmount}}</td> | |||||
<td class="t">调整运费:</td><td class="n">{{detail.adjustmentShipAmount}}</td> | |||||
<td class="t">手续费:</td><td class="n">{{detail.serviceCharge}}</td> | |||||
<td class="t">总金额:</td><td class="n">{{detail.totalAmount}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">实际支付金额:</td><td class="n">{{detail.payAmount}}</td> | |||||
<td class="t">重量:</td><td class="n">{{detail.weight}}</td> | |||||
<td class="t">物流方式:</td><td class="n">{{detail.shipType}}</td> | |||||
<td class="t">交期天数:</td><td class="n">{{detail.deliveryDays}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">创建时间:</td><td class="n">{{formatDateTime(detail.creationTime)}}</td> | |||||
<td class="t">下单时间:</td><td class="n">{{formatDateTime(detail.orderTime)}}</td> | |||||
<td class="t">最后支付时间:</td><td class="n">{{formatDateTime(detail.payTime)}}</td> | |||||
<td class="t">预计交货时间:</td><td class="n">{{formatDateTime(detail.deliveryDate)}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">发货时间:</td><td class="n">{{formatDateTime(detail.shipTime)}}</td> | |||||
<td class="t">PCBA关联单号:</td><td class="n">{{detail.pcbaNo}}</td> | |||||
<td class="t">复制单号:</td><td class="n">{{detail.copyOrderNo}}</td> | |||||
<td class="t">返单号:</td><td class="n">{{detail.reOrderNo}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">原始单号:</td><td class="n">{{detail.rootOrderNo}}</td> | |||||
<td class="t">订单备注:</td><td class="n" colspan="3">{{detail.note}}</td> | |||||
<td class="t">附件列表:</td> | |||||
<td class="n"> | |||||
<ul class="listFiles"> | |||||
<li v-for="(file,fid) in detail.files" :key="fid"><a :href="file.url" target="_blank"><a-icon type="link" /> {{file.name}}</a></li> | |||||
</ul> | |||||
</td> | |||||
</tr> | |||||
</tbody> | |||||
</table> | |||||
<div class="titsc"><b>贴片参数</b></div> | |||||
<table class="tablesc"> | |||||
<tbody> | |||||
<tr> | |||||
<td class="t">创建人:</td> | |||||
<td class="n">{{smtDto.creatorId}}</td> | |||||
<td class="t">租户:</td> | |||||
<td class="n" colspan="5">{{smtDto.tenantId}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">套数:</td> | |||||
<td class="n">{{smtDto.productNum}}</td> | |||||
<td class="t">单双面:</td> | |||||
<td class="n">{{smtDto.layer}}</td> | |||||
<td class="t">物料种类:</td> | |||||
<td class="n">{{smtDto.patchElementType}}</td> | |||||
<td class="t">贴片点数:</td> | |||||
<td class="n">{{smtDto.patchElementPointNum}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">插件点数:</td> | |||||
<td class="n">{{smtDto.dipPointNum}}</td> | |||||
<td class="t">宽x长:</td> | |||||
<td class="n">{{smtDto.pcbSizeX}} x {{smtDto.pcbSizeY}}</td> | |||||
<td class="t">Set中Pcs数:</td> | |||||
<td class="n">{{smtDto.setPcsNum}}</td> | |||||
<td class="t">PCB物料供料方式:</td> | |||||
<td class="n">{{resArrays('productPCBType',smtDto.productPCBType)}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">BOM物料供料方式:</td> | |||||
<td class="n">{{resArrays('purchaseGoodsType',smtDto.purchaseGoodsType)}}</td> | |||||
<td class="t">工艺要求:</td> | |||||
<td class="n">{{resArrays('hasLead',smtDto.hasLead)}}</td> | |||||
<td class="t">锡膏:</td> | |||||
<td class="n">{{resArrays('solderPaste',smtDto.solderPaste)}}</td> | |||||
<td class="t">PCBA出货品质:</td> | |||||
<td class="n">{{resArrays('isHighQuality',smtDto.isHighQuality)}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">一体化装配服务:</td> | |||||
<td class="n">{{resArrays('need',smtDto.isHighQuality)}}</td> | |||||
<td class="t">PCBA板出货包装:</td> | |||||
<td class="n">{{resArrays('pcbaPackageType',smtDto.pcbaPackageType)}}</td> | |||||
<td class="t">PCB拼版方式:</td> | |||||
<td class="n">{{resArrays('pcbIsPinban',smtDto.pcbIsPinban)}}</td> | |||||
<td class="t">PCBA确认:</td> | |||||
<td class="n">{{resArrays('need',smtDto.isHighQuality)}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">项目名称:</td> | |||||
<td class="n">{{smtDto.projectName}}</td> | |||||
<td class="t">应用领域:</td> | |||||
<td class="n">{{smtDto.applicationArea}}</td> | |||||
<td class="t">PCB产品类别:</td> | |||||
<td class="n">{{resArrays('pcbProductType',smtDto.pcbProductType)}}</td> | |||||
<td class="t">自定义编号1 # 2:</td> | |||||
<td class="n">{{smtDto.autoField1}} # {{smtDto.autoField2}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">供应商ID:</td> | |||||
<td class="n">{{smtDto.supplyId}}</td> | |||||
<td class="t">PCBA生产端客服:</td> | |||||
<td class="n">{{smtDto.smtServiceName}}</td> | |||||
<td class="t">修改贴片订单标识:</td> | |||||
<td class="n">{{resArrays('hasUpdateSMT',smtDto.hasUpdateSMT)}}</td> | |||||
<td class="t">修改贴片具体信息:</td> | |||||
<td class="n">{{smtDto.updateSMTStr}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">钢网随货发货:</td> | |||||
<td class="n">{{resArrays('yesNo',smtDto.isMergeDelivery)}}</td> | |||||
<td class="t">样品图片:</td> | |||||
<td class="n">{{smtDto.sampleImagePath}}</td> | |||||
<td class="t">PCBA审核不通过原因:</td> | |||||
<td class="n" colspan="3">{{smtDto.unPassReason}}</td> | |||||
</tr> | |||||
</tbody> | |||||
</table> | |||||
<div class="boxKH20"></div> | |||||
<div class="titsc"><b>金额</b></div> | |||||
<table class="tablesc" v-if="smtDto.orderSmtPriceDto"> | |||||
<tbody> | |||||
<tr> | |||||
<td class="t">销售价:</td> | |||||
<td class="n">{{detail.systemPrice}}</td> | |||||
<td class="t">成本价:</td> | |||||
<td class="n">{{detail.systemPrice}}</td> | |||||
<td class="t">工程费:</td> | |||||
<td class="n">{{smtDto.orderSmtPriceDto.layerMoney}}</td> | |||||
<td class="t">BOM物料种类费用:</td> | |||||
<td class="n">{{smtDto.orderSmtPriceDto.patchElementTypeMoney}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">PCBA贴片元件个数费用:</td> | |||||
<td class="n">{{smtDto.orderSmtPriceDto.patchElementNumMoney}}</td> | |||||
<td class="t">BGA数量费用:</td> | |||||
<td class="n">{{smtDto.orderSmtPriceDto.bgaNumMoney}}</td> | |||||
<td class="t">PCB拼版费用:</td> | |||||
<td class="n">{{smtDto.orderSmtPriceDto.pcbPinbanMoney}}</td> | |||||
<td class="t">其他费用:</td> | |||||
<td class="n">{{smtDto.orderSmtPriceDto.otherMoney}}</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="t">插件费用:</td> | |||||
<td class="n">{{smtDto.orderSmtPriceDto.dipMoney}}</td> | |||||
<td class="t">测试费用:</td> | |||||
<td class="n">{{smtDto.orderSmtPriceDto.testMoney}}</td> | |||||
<td class="t">包装费用:</td> | |||||
<td class="n">{{smtDto.orderSmtPriceDto.packageMoney}}</td> | |||||
<td class="t">特殊工艺费:</td> | |||||
<td class="n">{{smtDto.orderSmtPriceDto.specialCraftMoney}}</td> | |||||
</tr> | |||||
</tbody></table> | |||||
<div class="boxKH20"></div> | |||||
<div class="titsc"><b>特殊工艺信息</b></div> | |||||
<a-table class="tablesa" :columns="tableSmtCraftDto" :data-source="smtDto.orderSmtCraftDto" :pagination="false" :rowKey="(record,index)=>{return index}"> | |||||
<span slot="createTime" slot-scope="text">{{ formatDateTime(text) }}</span> | |||||
</a-table> | |||||
<div class="boxKH20"></div> | |||||
<div class="titsc"><b>关联订单</b></div> | |||||
<a-table class="tablesa" :columns="tableBindList" :data-source="smtDto.bindList" :rowKey="lists => lists.orderId" :pagination="false"> | |||||
<span slot="proType" slot-scope="text">{{ getProTypes(text,'title') }}</span> | |||||
<span slot="orderNo" slot-scope="text,record"> | |||||
<router-link v-if="record.proType==1" :to="'/order/pcb/detail?id='+record.orderId"><a-icon type="link" /> {{text}}</router-link> | |||||
<router-link v-if="record.proType==2" :to="'/order/bom/detail?id='+record.orderId"><a-icon type="link" /> {{text}}</router-link> | |||||
</span> | |||||
<span slot="createTime" slot-scope="text">{{formatDateTime(text)}}</span> | |||||
</a-table> | |||||
</template> | |||||
<a-modal v-model="showBindList" title="添加 PCB/BOM" :confirm-loading="confirmLoading" :width="800" @ok="setBindSMT()"> | |||||
<div class="boxShowSmtBindList"> | |||||
<template v-for="(item,index) in listBindSmt"> | |||||
<div :key="index" v-if="item.list.length>=1"> | |||||
<p class="title"><b>{{ item.title }}</b></p> | |||||
<a-table :columns="smtBindHead" :data-source="item.list" :scroll="{y:180}" :rowKey="(record,index)=>{return index}" :pagination="false" :rowSelection="{type:'radio',onChange:onSelectChange}" :locale="{emptyText:'No data'}"> | |||||
<span slot="orderNo" slot-scope="text">{{ text }}</span> | |||||
<span slot="qty" slot-scope="text,record">{{ text }} {{ record.proType==2?'line':'pcs' }}</span> | |||||
<span slot="deliveryDays" slot-scope="text">Lead Time: {{ text }} days</span> | |||||
<span slot="creationTime" slot-scope="text">{{ text }}</span> | |||||
</a-table> | |||||
</div> | |||||
</template> | |||||
</div> | |||||
</a-modal> | |||||
<a-modal title="申请打回" :width="800" :visible="showSmtApplyBack" :confirm-loading="confirmLoading" @ok="fnSmtApplyBack" @cancel="showSmtApplyBack = false"> | |||||
<a-form-model v-model="formAB" v-bind="layout"> | |||||
<a-form-model-item label="申请原因"> | |||||
<a-radio-group v-model="formAB.applyType" button-style="solid"> | |||||
<a-radio-button :value="1">补料打回</a-radio-button> | |||||
<a-radio-button :value="2">订单打回</a-radio-button> | |||||
</a-radio-group> | |||||
</a-form-model-item> | |||||
<a-form-model-item label="申请原因"> | |||||
<a-textarea v-model="formAB.applyReason" placeholder="申请原因" :auto-size="{ minRows: 3, maxRows: 5 }" /> | |||||
</a-form-model-item> | |||||
<a-form-model-item label="上传文件地址"> | |||||
<a-spin :spinning="loadUp"> | |||||
<a-input-group compact> | |||||
<a-upload name="file" :showUploadList="false" :customRequest="(file)=>{fnToOssUpfile(file,'gerber')}" accept=".zip,.rar,.jpg,.png,.gif"> | |||||
<a-button type="primary"><a-icon type="upload" /> 上传文件</a-button> | |||||
</a-upload> | |||||
</a-input-group> | |||||
</a-spin> | |||||
<ul class="listFiles"> | |||||
<li v-for="(file,fid) in upFilesAB" :key="fid"><a-icon type="delete" @click="delUpFiles(fid)" /> <a :href="file" target="_blank"><a-icon type="link" /> {{file}}</a></li> | |||||
</ul> | |||||
</a-form-model-item> | |||||
</a-form-model> | |||||
</a-modal> | |||||
</a-spin> | |||||
<a-modal :title="formOrderCheck.OCType===1?'审核订单':'复审订单'" :visible="showOrderCheck" :confirm-loading="confirmSubmit" @ok="fnSmtCheck" @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 { | |||||
OrderSmtBind, | |||||
OrderSmtBindList, | |||||
OrderSmtDetail, | |||||
OrderSmtSure, | |||||
OrderSmtCheck, | |||||
OrderSmtProduction, | |||||
OrderSmtApplyBack, OrderSmtEdit, | |||||
} from '@/services/order/Order'; | |||||
import {formatDate, resProTypes} from '@/services/Common'; | |||||
import bnOrderLogList from "@/pages/Common/bnOrderLogList"; | |||||
import bnOrderCancel from "@/pages/Common/bnOrderCancel"; | |||||
import bnSetPurchaseStatus from "@/pages/Common/bnSetPurchaseStatus"; | |||||
import {upFileToOSS} from "@/services/uploadFile"; | |||||
import BnSetPurchaseStatus from "@/pages/Common/bnSetPurchaseStatus"; | |||||
export default { | |||||
name: 'SmtDetail', | |||||
components: {BnSetPurchaseStatus, bnOrderLogList,bnOrderCancel}, | |||||
data(){ | |||||
return{ | |||||
loadPage:true,loadBindList:false,showBindList:false,loadSmtSure:false,loadSmtCheck:false,loadSmtCheck2:false,loadSmtProduction:false,confirmLoading:false,showSmtApplyBack:false,loadUp:false,ifEdit:false,loadEdit:false, | |||||
orderId:'',detail: {},smtDto:{},listBindSmt:[],listProType:resProTypes(), | |||||
tableSmtCraftDto:[ | |||||
{title: '特殊工艺类别',dataIndex: 'craftType',key: 'craftType',}, | |||||
{title: '特殊工艺项目名称',dataIndex: 'craftName',key: 'craftName',}, | |||||
{title: '特殊工艺对应值',dataIndex: 'quantity',key: 'quantity',}, | |||||
{title: '特殊工艺对应金额',dataIndex: 'amount',key: 'amount',}, | |||||
{title: '创建时间',dataIndex: 'createTime',key: 'createTime',scopedSlots: { customRender: 'createTime' }}, | |||||
{title: '是否客选',dataIndex: 'isUserSelect',key: 'isUserSelect',}, | |||||
], | |||||
formOrderCheck:{orderId:'',isPass:1,remark:'',OCType:''},showOrderCheck:false,confirmSubmit:false, | |||||
upFilesAB:[],orderStatus:0,orderStatusValue:'', | |||||
formAB:{orderId:'',applyType:1,applyReason:'',businessImages:''}, | |||||
arrDB:{ | |||||
productPCBType:[{v:1,t:'代工'},{v:2,t:'客供'}], | |||||
purchaseGoodsType:[{v:1,t:'代购'},{v:2,t:'客供'},{v:3,t:'部分代购'}], | |||||
hasLead:[{v:0,t:'无铅'},{v:1,t:'有铅'}], | |||||
solderPaste:[{v:0,t:'国产千住'},{v:1,t:'日本千住'}], | |||||
isHighQuality:[{v:1,t:'标品'},{v:2,t:'优品'}], | |||||
need:[{v:0,t:'不需要'},{v:1,t:'需要'}], | |||||
yesNo:[{v:0,t:'否'},{v:1,t:'是'}], | |||||
pcbaPackageType:[{v:1,t:'泡泡袋包装'},{v:2,t:'屏蔽袋包装'}], | |||||
pcbIsPinban:[{v:0,t:'无拼版'},{v:1,t:'有拼版'}], | |||||
pcbProductType:[{v:0,t:'PCB硬板'},{v:1,t:'PCB软板'},{v:2,t:'软硬'}], | |||||
hasUpdateSMT: [{v:0,t:'无'},{v:1,t:'无修改'},{v:2,t:'修改过'}], | |||||
}, | |||||
formEdit:{ | |||||
// id:'',orderId:'', | |||||
// productNum:'', | |||||
// layer:'', | |||||
// patchElementType:'', | |||||
// patchElementPointNum:'', | |||||
// dipPointNum:'', | |||||
// pcbSizeX:'', | |||||
// pcbSizeY:'', | |||||
// setPcsNum:'', | |||||
// productPCBType:'', | |||||
// purchaseGoodsType:'', | |||||
// hasLead:'', | |||||
// solderPaste:'', | |||||
// isHighQuality:'', | |||||
// assemblyService:'', | |||||
// pcbaPackageType:'', | |||||
// pcbIsPinban:'', | |||||
// firstSure:'', | |||||
// projectName:'', | |||||
// applicationArea:'', | |||||
// pcbProductType:'', | |||||
// autoField1:'', | |||||
// autoField2:'', | |||||
// isMergeDelivery:'', | |||||
}, | |||||
tableBindList:[ | |||||
{title: '订单类型',width:'100px',dataIndex: 'proType',key: 'proType',scopedSlots: { customRender: 'proType' }}, | |||||
{title: '订单编号',width:'260px',dataIndex: 'orderNo',key: 'orderNo',scopedSlots: { customRender: 'orderNo' }}, | |||||
{title: '套数',dataIndex: 'qty',key: 'qty',}, | |||||
{title: '创建时间',dataIndex: 'creationTime',key: 'creationTime',scopedSlots: { customRender: 'createTime' }}, | |||||
{title: '交期天数',dataIndex: 'deliveryDays',key: 'deliveryDays'}, | |||||
], | |||||
smtBindHead:[ | |||||
{title:'订单编号',width:'35%',dataIndex:'orderNo',key:'orderNo',scopedSlots: { customRender: 'orderNo' },}, | |||||
{title:'套数',width:'15%',dataIndex:'qty',key:'qty',scopedSlots: { customRender: 'qty' },}, | |||||
{title:'交期天数',dataIndex:'deliveryDays',key:'deliveryDays',scopedSlots: { customRender: 'deliveryDays' },}, | |||||
{title:'创建时间',dataIndex:'creationTime2',key:'creationTime2'}, | |||||
], | |||||
layout: { | |||||
labelCol: { span:5 }, | |||||
wrapperCol: { span:17 }, | |||||
}, | |||||
} | |||||
}, | |||||
mounted() { | |||||
this.orderId = this.$route.query.id; | |||||
this.getOrderDetail(); | |||||
}, | |||||
methods:{ | |||||
async getOrderDetail(){ | |||||
this.loadPage = true; | |||||
let res = await OrderSmtDetail(this.orderId); | |||||
this.orderStatus = res.orderDetailDto.orderPurchaseStatus; | |||||
this.orderStatusValue = res.orderDetailDto.orderPurchaseStatusValue; | |||||
this.detail = res.orderDetailDto; | |||||
this.smtDto = res.orderSmtDto; | |||||
this.loadPage = false; | |||||
this.formEdit={ | |||||
id:res.orderSmtDto.id, | |||||
orderId:res.orderSmtDto.orderId, | |||||
productNum:res.orderSmtDto.productNum, | |||||
layer:res.orderSmtDto.layer, | |||||
patchElementType:res.orderSmtDto.patchElementType, | |||||
patchElementPointNum:res.orderSmtDto.patchElementPointNum, | |||||
dipPointNum:res.orderSmtDto.dipPointNum, | |||||
pcbSizeX:res.orderSmtDto.pcbSizeX, | |||||
pcbSizeY:res.orderSmtDto.pcbSizeY, | |||||
setPcsNum:res.orderSmtDto.setPcsNum, | |||||
productPCBType:res.orderSmtDto.productPCBType, | |||||
purchaseGoodsType:res.orderSmtDto.purchaseGoodsType, | |||||
hasLead:res.orderSmtDto.hasLead, | |||||
solderPaste:res.orderSmtDto.solderPaste, | |||||
isHighQuality:res.orderSmtDto.isHighQuality, | |||||
assemblyService:res.orderSmtDto.assemblyService, | |||||
pcbaPackageType:res.orderSmtDto.pcbaPackageType, | |||||
pcbIsPinban:res.orderSmtDto.pcbIsPinban, | |||||
firstSure:res.orderSmtDto.firstSure, | |||||
projectName:res.orderSmtDto.projectName, | |||||
applicationArea:res.orderSmtDto.applicationArea, | |||||
pcbProductType:res.orderSmtDto.pcbProductType, | |||||
autoField1:res.orderSmtDto.autoField1, | |||||
autoField2:res.orderSmtDto.autoField2, | |||||
isMergeDelivery:res.orderSmtDto.isMergeDelivery, | |||||
} | |||||
}, | |||||
//SMT确认 | |||||
fnSmtSure(){ | |||||
this.loadSmtSure = true; | |||||
OrderSmtSure(this.orderId).then(res=>{ | |||||
this.$message.success('确认成功!'); | |||||
this.getOrderDetail(); | |||||
this.loadSmtSure = false; | |||||
}).catch(err=>{ | |||||
this.loadSmtSure = false; | |||||
}) | |||||
}, | |||||
//SMT投产 | |||||
fnSmtProduction(){ | |||||
this.loadSmtProduction = true; | |||||
OrderSmtProduction(this.orderId).then(res=>{ | |||||
this.$message.success('确认成功!'); | |||||
this.getOrderDetail(); | |||||
this.showSmtApplyBack = false; | |||||
this.loadSmtProduction = false; | |||||
}).catch(err=>{ | |||||
this.loadSmtProduction = false; | |||||
}) | |||||
}, | |||||
//SMT申请打回 | |||||
fnSmtApplyBack(){ | |||||
this.confirmLoading = true; | |||||
this.formAB.orderId = this.orderId; | |||||
this.formAB.businessImages = this.upFilesAB.toString() | |||||
OrderSmtApplyBack(this.formAB).then(res=>{ | |||||
this.$message.success('申请成功!'); | |||||
this.getOrderDetail(); | |||||
this.confirmLoading = false; | |||||
}).catch(err=>{ | |||||
this.confirmLoading = false; | |||||
}) | |||||
}, | |||||
//SMT编辑 | |||||
upOrderEdit(){ | |||||
this.loadEdit = true; | |||||
OrderSmtEdit(this.formEdit).then(res=>{ | |||||
this.$message.success('修改成功!'); | |||||
this.ifEdit = false; | |||||
this.loadEdit = false; | |||||
this.getOrderDetail(); | |||||
}).catch(err=>{ | |||||
this.loadEdit = false; | |||||
}) | |||||
}, | |||||
fnShowOrderCheck(key){ | |||||
this.formOrderCheck.OCType = key; | |||||
this.showOrderCheck = true; | |||||
}, | |||||
//SMT审核 | |||||
fnSmtCheck(){ | |||||
this.formOrderCheck.OCType===1?this.loadSmtCheck = true:this.loadSmtCheck2 = true; | |||||
this.formOrderCheck.orderId = this.orderId; | |||||
OrderSmtCheck(this.formOrderCheck).then(res=>{ | |||||
this.$message.success('审核成功!'); | |||||
this.getOrderDetail(); | |||||
}).catch(err=>{ | |||||
console.log(err) | |||||
}).finally(res=>{ | |||||
this.loadSmtCheck = false; | |||||
this.loadSmtCheck2 = false; | |||||
this.showOrderCheck = false; | |||||
}) | |||||
}, | |||||
//获取关联订单 | |||||
async fnBeforeBindList(){ | |||||
this.loadBindList = true; | |||||
let res = await OrderSmtBindList({orderId:this.orderId}); | |||||
for (let i in this.listProType){ | |||||
let type = this.listProType[i]; | |||||
let resli = []; | |||||
for (let bid in res){ | |||||
if(type.proType == res[bid].proType){ | |||||
resli.push(res[bid]); | |||||
} | |||||
} | |||||
this.listBindSmt[i] ={title:type.title,list:resli,bindOrderId:'',proType:type.proType}; | |||||
} | |||||
this.showBindList = true; | |||||
this.loadBindList = false; | |||||
}, | |||||
//勾选绑定赋值 | |||||
onSelectChange(index,arr) { | |||||
arr = arr[0]; | |||||
for (let i in this.listBindSmt){ | |||||
let liBS = this.listBindSmt[i]; | |||||
if(liBS.proType == arr.proType){ | |||||
liBS.bindOrderId = arr.orderId; | |||||
} | |||||
} | |||||
}, | |||||
//提交SMT绑定 | |||||
setBindSMT(){ | |||||
let bindID = []; | |||||
for (let i in this.listBindSmt){ | |||||
if(this.listBindSmt[i].bindOrderId){ | |||||
bindID = bindID.concat(this.listBindSmt[i].bindOrderId); | |||||
} | |||||
} | |||||
if(bindID.length<=0){ | |||||
this.$message.warning('Please Choose PCB/BOM Order'); | |||||
return false; | |||||
} | |||||
this.confirmLoading = true; | |||||
let params = { | |||||
SmtOrderId:this.orderId, | |||||
bindOrderIds:bindID.toString() | |||||
} | |||||
console.log(params) | |||||
OrderSmtBind(params).then(res=>{ | |||||
this.getOrderDetail(); | |||||
this.showBindSMT = false; | |||||
this.confirmLoading = false; | |||||
}).catch(err=>{ | |||||
this.confirmLoading = false; | |||||
}) | |||||
}, | |||||
//上传OSS | |||||
async fnToOssUpfile(file){ | |||||
this.loadUp = true; | |||||
let resUpInfo = await upFileToOSS(file); | |||||
if(resUpInfo.url){ | |||||
this.upFilesAB.push(resUpInfo.url); | |||||
this.$message.success('文件上传成功!'); | |||||
} | |||||
this.loadUp = false; | |||||
}, | |||||
delUpFiles(i){ | |||||
this.upFilesAB.splice(i,1); | |||||
}, | |||||
formatDateTime(time){ | |||||
return formatDate(time,'yyyy-MM-dd hh:mm'); | |||||
}, | |||||
getProTypes(id,key){ | |||||
return resProTypes(id)[key]; | |||||
}, | |||||
resArrays(arrName,key){ | |||||
let arr = this.arrDB[arrName]; | |||||
for (let i in arr){ | |||||
let ts = arr[i]; | |||||
if (ts.v==key) return ts.t; | |||||
} | |||||
}, | |||||
} | |||||
} | |||||
</script> | |||||
<style scoped> | |||||
/deep/ .ant-table-header{background-color:#f5f5f5} | |||||
/deep/ .ant-table-thead>tr>th{background-color:#f5f5f5; padding:5px} | |||||
/deep/ .ant-table-tbody>tr>td{padding:5px} | |||||
/deep/ .ant-radio-inner::after{display: inline-block} | |||||
.ant-form .listFiles li{padding:1em 0 0} | |||||
</style> |
@@ -108,14 +108,13 @@ export default { | |||||
newRoles(this.formNA).then(res=>{ | newRoles(this.formNA).then(res=>{ | ||||
if(res.id) { | if(res.id) { | ||||
this.$message.success(this.altTitNE?'角色添加成功!':'编辑修改成功!'); | this.$message.success(this.altTitNE?'角色添加成功!':'编辑修改成功!'); | ||||
this.filterSearch(); | |||||
// this.$refs['formNA'].resetFields(); | // this.$refs['formNA'].resetFields(); | ||||
this.formNA={name:'',isDefault:false,isPublic:false}; | |||||
// this.formNA={name:'',isDefault:false,isPublic:false}; | |||||
} | } | ||||
this.showNA = false; | this.showNA = false; | ||||
}).finally(()=>{ | |||||
this.confirmLoad = false; | this.confirmLoad = false; | ||||
}).catch(err=>{ | |||||
this.confirmLoad = false; | |||||
this.filterSearch(); | |||||
}); | }); | ||||
}, | }, | ||||
//权限分配 | //权限分配 | ||||
@@ -230,13 +229,18 @@ export default { | |||||
// console.log(this.listInput) | // console.log(this.listInput) | ||||
if(typeof(page)=='object'){ | if(typeof(page)=='object'){ | ||||
this.pagination.current = page.current; | this.pagination.current = page.current; | ||||
}else if (typeof (page) == 'number'){ | |||||
this.pagination.current = page; | |||||
} | } | ||||
let count = (this.pagination.current-1)*this.pagination.pageSize; | let count = (this.pagination.current-1)*this.pagination.pageSize; | ||||
let params={ | let params={ | ||||
filter:this.listInput[0].value, | |||||
skipCount:count, | skipCount:count, | ||||
maxResultCount:this.pagination.pageSize, | maxResultCount:this.pagination.pageSize, | ||||
} | } | ||||
for (let i in this.listInput){ | |||||
let ts = this.listInput[i]; | |||||
if (ts.value!=='') params[ts.name] = ts.value; | |||||
} | |||||
// console.log(params) | // console.log(params) | ||||
this.fetch(params); | this.fetch(params); | ||||
}, | }, | ||||
@@ -57,49 +57,71 @@ const options = { | |||||
}, | }, | ||||
{ | { | ||||
path: 'order', | path: 'order', | ||||
name: '订单', | |||||
meta: {icon: 'icon-xiangmu'}, | |||||
name: '订单管理', | |||||
meta: {icon: 'icon-xiangmu',type: 'link',}, | |||||
redirect: '/order/list', | |||||
component: BlankView, | component: BlankView, | ||||
// component: () => import('@/pages/agent/list'), | |||||
children: [ | children: [ | ||||
{ | { | ||||
path: 'pcb/', | |||||
name: 'PCB订单管理', | |||||
meta: {icon: 'profile'}, | |||||
component: () => import('@/pages/order/OrderList'), | |||||
}, | |||||
{ | |||||
path: 'pcb/detail', | |||||
name: 'Pcb订单详情', | |||||
meta: {invisible: true}, | |||||
component: () => import('@/pages/order/pcbOrder/PcbDetail'), | |||||
}, | |||||
{ | |||||
path: 'smt/', | |||||
name: 'SMT订单管理', | |||||
meta: {icon: 'profile'}, | |||||
component: () => import('@/pages/order/OrderList'), | |||||
}, | |||||
{ | |||||
path: 'smt/detail', | |||||
name: 'SMT订单详情', | |||||
meta: {invisible: true}, | |||||
component: () => import('@/pages/order/smtOrder/SmtDetail'), | |||||
}, | |||||
{ | |||||
path: 'bom/', | |||||
name: 'BOM订单管理', | |||||
meta: {icon: 'profile'}, | |||||
component: () => import('@/pages/order/OrderList'), | |||||
path: 'list', | |||||
name: '订单列表', | |||||
// meta: {invisible: true}, | |||||
component: () => import('@/pages/order/list'), | |||||
}, | }, | ||||
{ | { | ||||
path: 'bom/detail', | |||||
name: 'BOM订单详情', | |||||
meta: {invisible: true}, | |||||
component: () => import('@/pages/order/bomOrder/BomDetail'), | |||||
path: 'detail', | |||||
name: '订单详情', | |||||
// meta: {invisible: true}, | |||||
component: () => import('@/pages/order/detail'), | |||||
}, | }, | ||||
], | |||||
] | |||||
}, | }, | ||||
// { | // { | ||||
// path: 'order', | |||||
// name: '订单', | |||||
// meta: {icon: 'icon-xiangmu'}, | |||||
// component: BlankView, | |||||
// children: [ | |||||
// { | |||||
// path: 'pcb/', | |||||
// name: 'PCB订单管理', | |||||
// meta: {icon: 'profile'}, | |||||
// component: () => import('@/pages/order/OrderList'), | |||||
// }, | |||||
// { | |||||
// path: 'pcb/detail', | |||||
// name: 'Pcb订单详情', | |||||
// meta: {invisible: true}, | |||||
// component: () => import('@/pages/order/pcbOrder/PcbDetail'), | |||||
// }, | |||||
// { | |||||
// path: 'smt/', | |||||
// name: 'SMT订单管理', | |||||
// meta: {icon: 'profile'}, | |||||
// component: () => import('@/pages/order/OrderList'), | |||||
// }, | |||||
// { | |||||
// path: 'smt/detail', | |||||
// name: 'SMT订单详情', | |||||
// meta: {invisible: true}, | |||||
// component: () => import('@/pages/order/smtOrder/SmtDetail'), | |||||
// }, | |||||
// { | |||||
// path: 'bom/', | |||||
// name: 'BOM订单管理', | |||||
// meta: {icon: 'profile'}, | |||||
// component: () => import('@/pages/order/OrderList'), | |||||
// }, | |||||
// { | |||||
// path: 'bom/detail', | |||||
// name: 'BOM订单详情', | |||||
// meta: {invisible: true}, | |||||
// component: () => import('@/pages/order/bomOrder/BomDetail'), | |||||
// }, | |||||
// ], | |||||
// }, | |||||
// { | |||||
// path: 'delivery', | // path: 'delivery', | ||||
// name: '单证物流', | // name: '单证物流', | ||||
// meta: {icon: 'icon-DCC'}, | // meta: {icon: 'icon-DCC'}, | ||||
@@ -58,31 +58,44 @@ function padLeftZero (str) { | |||||
return ('00' + str).substr(str.length); | return ('00' + str).substr(str.length); | ||||
} | } | ||||
//返回订单状态 | |||||
export function resOrderStatus(status,key){ | |||||
let list = [ | |||||
{value:'-10',text:'取消',en:'Cancelled'}, | |||||
{value:'0',text:'待审核',en:'Audit'}, | |||||
{value:'10',text:'审核中',en:'Auditing'}, | |||||
{value:'20',text:'审核不通过',en:'Audit Failed'}, | |||||
{value:'30',text:'审核通过',en:'Pass'}, | |||||
{value:'35',text:'复审中',en:'Auditing'}, | |||||
{value:'40',text:'复审不通过',en:'Audit Failed'}, | |||||
{value:'50',text:'复审通过',en:'Pass'}, | |||||
{value:'60',text:'待付款',en:'Pending Payment'}, | |||||
{value:'65',text:'待投产',en:'Pending Production'}, | |||||
{value:'70',text:'生产中',en:'In Production'}, | |||||
{value:'80',text:'待发货',en:'Pending Delivery'}, | |||||
{value:'90',text:'已发货',en:'Shipped'}, | |||||
{value:'100',text:'交易完成',en:'Completed'}, | |||||
] | |||||
if(typeof status=='number'){ | |||||
//返回选择/解析 | |||||
//订单类型:orderType | |||||
//订单状态:orderStatus | |||||
//解析状态:parseStatue | |||||
export function resSelects(type='',val=''){ | |||||
// console.log(type,val) | |||||
let list = []; | |||||
if (type==='orderType'){ | |||||
list = [ | |||||
{value:'1',text:'打样'}, | |||||
{value:'2',text:'批量'}, | |||||
] | |||||
} | |||||
else if (type==='orderStatus'){ | |||||
list = [ | |||||
{value:'0',text:'待审核'}, | |||||
{value:'1',text:'审核中'}, | |||||
{value:'2',text:'审核通过'}, | |||||
{value:'3',text:'审核不通过'}, | |||||
{value:'4',text:'订单取消'}, | |||||
] | |||||
} | |||||
else if (type==='parseStatue'){ | |||||
list = [ | |||||
{value:'0',text:'带解析'}, | |||||
{value:'1',text:'锁定中'}, | |||||
{value:'2',text:'解析成功'}, | |||||
{value:'3',text:'解析失败'}, | |||||
] | |||||
} | |||||
else return false; | |||||
//返回内容 | |||||
if(val!=='' && typeof val=='number'){ | |||||
for(let i in list){ | for(let i in list){ | ||||
if (status== list[i].value) return list[i]; | |||||
if (val.toString() === list[i].value) return list[i].text; | |||||
} | } | ||||
}else{ | |||||
return list; | |||||
} | } | ||||
else return list; | |||||
} | } | ||||
//邮箱地址 | //邮箱地址 | ||||
@@ -19,8 +19,8 @@ export function delRoles(id) { | |||||
//新增角色 | //新增角色 | ||||
export function newRoles(params) { | export function newRoles(params) { | ||||
return new Promise((resolve, reject) => { | return new Promise((resolve, reject) => { | ||||
if(params.id){ | |||||
requestApi('/api/identity/roles/'+params.id, METHOD.PUT, params).then(res => {resolve(res);}).catch(err=>{reject(err);}) | |||||
if(params.Id){ | |||||
requestApi('/api/identity/roles/'+params.Id, METHOD.PUT, params).then(res => {resolve(res);}).catch(err=>{reject(err);}) | |||||
}else { | }else { | ||||
requestApi('/api/identity/roles/', METHOD.POST, params).then(res => {resolve(res);}).catch(err=>{reject(err);}) | requestApi('/api/identity/roles/', METHOD.POST, params).then(res => {resolve(res);}).catch(err=>{reject(err);}) | ||||
} | } | ||||
@@ -26,8 +26,8 @@ const resp401 = { | |||||
if (error.response && error.response.status == 401) { | if (error.response && error.response.status == 401) { | ||||
message.error('认证 token 已过期,请重新登录'); | message.error('认证 token 已过期,请重新登录'); | ||||
Cookie.remove(xsrfHeaderName); | Cookie.remove(xsrfHeaderName); | ||||
//router.push('/login'); | |||||
router.push('/loginOA'); | |||||
router.push('/loginjmp'); | |||||
// router.push('/loginOA'); | |||||
return Promise.reject(error); | return Promise.reject(error); | ||||
} | } | ||||
let msg = ''; | let msg = ''; | ||||