<template>
|
<el-dialog
|
width="75%"
|
top="10vh"
|
:fullscreen="isFullScreen"
|
:close-on-click-modal="false"
|
:visible.sync="visible"
|
>
|
<template slot="title">
|
<i
|
:class="isFullScreen ? 'icon-zuixiaohua' : 'icon-quanpingzuidahua'"
|
style="position: absolute; right: 52px; float: right"
|
@click="fullscreen"
|
>
|
</i>
|
<span>{{ title }}</span>
|
</template>
|
|
<el-form
|
:model="dataForm"
|
:rules="dataRule"
|
ref="dataForm"
|
label-width="100px"
|
class="l-mes"
|
:disabled="!editable"
|
>
|
<el-tabs type="border-card" ref="tabs">
|
<el-tab-pane label="主要" type="card">
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="同步数据来源" prop="sourceId">
|
<el-input
|
v-model="dataForm.sourceId"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="订单号" prop="customerOrderNo">
|
<el-input
|
v-model="dataForm.customerOrderNo"
|
@blur="dataForm.customerOrderNo = $event.target.value.trim()"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="OTC行号" prop="otcLineNo">
|
<el-input
|
v-model="dataForm.otcLineNo"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="GSM行号" prop="coLineNo">
|
<el-input
|
v-model="dataForm.coLineNo"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="客户编号" prop="customerNo">
|
<el-input
|
v-model="dataForm.customerNo"
|
@blur="dataForm.customerNo = $event.target.value.trim()"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="客户名称" prop="customerName">
|
<el-input
|
v-model="dataForm.customerName"
|
@blur="dataForm.customerName = $event.target.value.trim()"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="客户的零件号" prop="customerPartNo">
|
<el-input
|
v-model="dataForm.customerPartNo"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="IFS行号" prop="ifsLineNo">
|
<el-input
|
v-model="dataForm.ifsLineNo"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="客户订单状态" prop="coState">
|
<el-select
|
v-model="dataForm.coState"
|
placeholder=""
|
filterable
|
style="width: 100%"
|
disabled
|
>
|
<el-option
|
v-for="item in coStates"
|
:key="item.id"
|
:label="item.label"
|
:value="item.value"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="行号" prop="coLineNo">
|
<el-input
|
v-model="dataForm.coLineNo"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="客户的零件规格" prop="customerPartName">
|
<el-input
|
v-model="dataForm.customerPartName"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="IFS交货号" prop="ifsDeliveryNo">
|
<el-input
|
v-model="dataForm.ifsDeliveryNo"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="零件号" prop="partNo">
|
<el-input v-model="dataForm.partNo" placeholder="" disabled>
|
</el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="销售数量" prop="otcQuantity">
|
<el-input
|
v-model="dataForm.otcQuantity"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="客户零件名称" prop="productName">
|
<el-input
|
v-model="dataForm.productName"
|
placeholder=""
|
disabled
|
>
|
</el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="IFS行项号" prop="ifsLineItemNo">
|
<el-input
|
v-model="dataForm.ifsLineItemNo"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="销售件号" prop="salesPartNo">
|
<el-input
|
v-model="dataForm.salesPartNo"
|
placeholder=""
|
disabled
|
>
|
</el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="销售件描述" prop="salesPartName">
|
<el-input
|
v-model="dataForm.salesPartName"
|
placeholder=""
|
disabled
|
>
|
</el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="制造属性" prop="manufactureAttr">
|
<el-select
|
v-model="dataForm.manufactureAttr"
|
placeholder=""
|
style="width: 100%"
|
disabled
|
>
|
<el-option
|
v-for="item in manufactureAttrs"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="工艺文件号" prop="docNumber">
|
<el-input
|
v-model="dataForm.docNumber"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="期望交货时间" prop="wantedDeliveryDate">
|
<el-date-picker
|
v-model="dataForm.wantedDeliveryDate"
|
style="width: 100%"
|
type="datetime"
|
value-format="yyyy-MM-dd HH:mm:ss"
|
disabled
|
>
|
</el-date-picker>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="计划交货时间" prop="plannedDeliveryDate">
|
<el-date-picker
|
v-model="dataForm.plannedDeliveryDate"
|
style="width: 100%"
|
type="datetime"
|
value-format="yyyy-MM-dd HH:mm:ss"
|
disabled
|
>
|
</el-date-picker>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="客户零件规格" prop="customerPartSpec">
|
<el-input
|
v-model="dataForm.customerPartSpec"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="事业部" prop="division">
|
<el-input
|
v-model="dataForm.division"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="印字方式" prop="printType">
|
<el-input
|
v-model="dataForm.printType"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="印字要求" prop="printingRequirements">
|
<el-input
|
v-model="dataForm.printingRequirements"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="印字内容" prop="printContent">
|
<el-input
|
v-model="dataForm.printContent"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="包装要求" prop="packageRequire">
|
<el-input
|
v-model="dataForm.packageRequire"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="质量要求" prop="qualityRequire">
|
<el-input
|
v-model="dataForm.qualityRequire"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="生产需求说明" prop="otherProductRequire">
|
<el-input
|
v-model="dataForm.otherProductRequire"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="系统" prop="divisionSystem">
|
<el-input
|
v-model="dataForm.divisionSystem"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="收货地址" prop="shippingAddress">
|
<el-input
|
v-model="dataForm.shippingAddress"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="业务员" prop="salesmanName">
|
<el-input
|
v-model="dataForm.salesmanName"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="盘长要求" prop="lengthRequirement">
|
<el-input
|
v-model="dataForm.lengthRequirement"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="最终客户" prop="remark">
|
<el-input
|
v-model="dataForm.finalCustomerName"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="产品分组" prop="remark">
|
<el-input
|
v-model="dataForm.productGroup"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="产品类型" prop="remark">
|
<el-input
|
v-model="dataForm.productType"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="采集性质" prop="centralizedMiningProperty">
|
<el-input
|
v-model="dataForm.centralizedMiningProperty"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="订单行备注" prop="remark">
|
<el-input
|
v-model="dataForm.remark"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="订单头备注" prop="comment">
|
<el-input
|
v-model="dataForm.comment"
|
placeholder=""
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="OTC推送状态" prop="remark">
|
<span>{{
|
dataForm.otcPartSync != null
|
? dataForm.otcPartSync
|
? '已同步'
|
: '未同步'
|
: ''
|
}}</span>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24">
|
<el-form-item label="订单说明" prop="orderDescription">
|
<el-input
|
type="textarea"
|
:rows="3"
|
placeholder=""
|
v-model="dataForm.orderDescription"
|
maxlength="500"
|
show-word-limit
|
>
|
</el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-card header="订单参数" shadow="never">
|
<el-row>
|
<el-form-item
|
style="float:left;width: 50%"
|
v-for="(item, index) in orderParamList"
|
:property="item.renameField"
|
:label="item.item"
|
:key="index"
|
><el-input
|
v-model="dataForm[item.renameField]"
|
placeholder=""
|
disabled
|
></el-input
|
></el-form-item>
|
</el-row>
|
</el-card>
|
</el-tab-pane>
|
</el-tabs>
|
</el-form>
|
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="visible = false">取消</el-button>
|
<el-button
|
type="primary"
|
:disabled="buttonDisable"
|
v-thinclick="`dataFormSubmit`"
|
v-if="editable"
|
>确定</el-button
|
>
|
</span>
|
|
<part-dialog
|
:currshowlist.sync="showPart"
|
@listenToPartEvent="selectPart"
|
/>
|
<SalesPartDialog
|
:currshowlist.sync="showSalesPart"
|
:customerOrderInfo="customerOrderInfo"
|
@listenToPartEvent="selectSalesPart"
|
/>
|
</el-dialog>
|
</template>
|
|
<script>
|
import {
|
getCustomerOrder,
|
addCustomerOrder,
|
putCustomerOrder,
|
download,
|
getOtcCustomerOrderFileList,
|
otcDownload,
|
updateOrderDescription
|
} from '@/api/plan/customerorder'
|
import { remote } from '@/api/admin/dict'
|
import PartDialog from '@/views/common/part.vue'
|
import SalesPartDialog from './sales-part.vue'
|
import { validateSixDecimal } from '@/util/validate'
|
|
export default {
|
components: {
|
PartDialog,
|
SalesPartDialog
|
},
|
data() {
|
return {
|
fileList: [],
|
title: '',
|
orderParamList: [],
|
isFullScreen: false,
|
visible: false,
|
buttonDisable: false,
|
showPart: false,
|
dataForm: {
|
id: 0,
|
sourceId: '',
|
customerOrderNo: '',
|
customerNo: '',
|
customerName: '',
|
coState: '',
|
coLineNo: '',
|
partNo: '',
|
customerPartName: '',
|
buyQtyDue: '',
|
wantedDeliveryDate: '',
|
plannedDeliveryDate: '',
|
customerPoNo: '',
|
customerPoLineNo: '',
|
customerPoRelNo: '',
|
customerPartNo: '',
|
customerPartBuyQty: '',
|
customerPartUnitMeas: '',
|
custPartConvFactor: '',
|
custPartInvertConvFactor: '',
|
salesPartNo: null,
|
salesPartName: null,
|
ifsSalesUnit: null,
|
ifsConvFactor: null,
|
unit: null,
|
otcUnit: null,
|
otcQuantity: null,
|
docNumber: null,
|
manufactureAttr: 'N',
|
customerPartSpec: null,
|
division: null,
|
printType: null,
|
printingRequirements: null,
|
printContent: null,
|
packageRequire: null,
|
qualityRequire: null,
|
otherProductRequire: null,
|
divisionSystem: null,
|
shippingAddress: null,
|
salesmanName: null,
|
lengthRequirement: null,
|
remark: null,
|
otcPartSync: null,
|
finalCustomerName: null,
|
productGroup: null,
|
productType: null,
|
centralizedMiningProperty: null,
|
orderDescription: null
|
},
|
dataRule: {},
|
units: [],
|
coStates: [
|
{
|
value: '01partUnCheck',
|
label: '零件待选'
|
},
|
{
|
value: '02technologyUnCheck',
|
label: '工艺文件待选'
|
},
|
{
|
value: '03plan',
|
label: '待计划'
|
},
|
{
|
value: '04planed',
|
label: '已下发'
|
},
|
{
|
value: '05cancel',
|
label: '已作废'
|
},
|
{
|
value: '06unedit',
|
label: '订单编辑'
|
}
|
],
|
showSalesPart: false,
|
customerOrderInfo: null,
|
manufactureAttrs: [],
|
outputBatchTableData: []
|
}
|
},
|
computed: {
|
editable: function() {
|
if (!this.dataForm.id) {
|
return true
|
}
|
if (this.dataForm.id && this.dataForm.coState !== '04complete') {
|
return true
|
}
|
return false
|
},
|
ediSource: function() {
|
if (!this.dataForm.id) {
|
return true
|
}
|
if (this.dataForm.id && this.dataForm.sourceId !== 'GSM') {
|
return true
|
}
|
return false
|
}
|
},
|
mounted: function() {
|
this.getDicUnit('unit') // 获取单位
|
this.getManufactureAttrs('manufacture_attr_type')
|
},
|
methods: {
|
init(id) {
|
this.orderParamList = []
|
this.dataForm.id = id || 0
|
this.visible = true
|
this.dataForm.coState = '01partUnCheck'
|
this.$nextTick(() => {
|
this.$refs.dataForm.resetFields()
|
if (this.dataForm.id) {
|
getCustomerOrder(this.dataForm.id).then((response) => {
|
if (response.data.data.customerOrderList != null) {
|
this.dataForm = response.data.data.customerOrderList
|
if (this.dataForm.OrderOrContract) {
|
// 将订单还是合同转义
|
if (this.dataForm.OrderOrContract == '0') {
|
this.dataForm.OrderOrContract = '合同'
|
} else if (this.dataForm.OrderOrContract == '1') {
|
this.dataForm.OrderOrContract = '订单'
|
}
|
}
|
} else {
|
this.dataForm = response.data.data
|
}
|
// this.fileList = response.data.data.customerOrderAttachmentList
|
this.getFileList()
|
this.orderParamList = response.data.data.orderParamList
|
this.title =
|
this.dataForm.customerName + this.dataForm.customerOrderNo
|
// 产出批次
|
this.outputBatchTableData = response.data.data.outPutBatchList
|
})
|
} else {
|
this.title = '新增'
|
this.$refs.tabs.currentName = '0'
|
}
|
})
|
},
|
getFileList() {
|
this.fileList = []
|
const queryParam = { orderNumber: this.dataForm.customerOrderNo }
|
getOtcCustomerOrderFileList(queryParam).then((response) => {
|
const resData = response.data
|
if (resData.code === 0) {
|
const datas = resData.data
|
if (datas.length > 0) {
|
this.fileList = datas
|
}
|
} else {
|
this.$message.error('获取附件失败')
|
}
|
})
|
},
|
uploadFile(row) {
|
otcDownload(row.id).then((response) => {
|
const blob = new Blob([response.data], {
|
type: 'application/force-download'
|
})
|
const filename = decodeURI(row.original)
|
// 创建一个超链接,将文件流赋进去,然后实现这个超链接的单击事件
|
const elink = document.createElement('a')
|
elink.download = filename
|
elink.style.display = 'none'
|
elink.href = URL.createObjectURL(blob)
|
document.body.appendChild(elink)
|
elink.click()
|
URL.revokeObjectURL(elink.href) // 释放URL 对象
|
document.body.removeChild(elink)
|
})
|
},
|
// 附件的点击
|
handlePreview(file) {
|
download(file.name, this.dataForm.id).then((response) => {
|
const blob = new Blob([response.data], {
|
type: 'application/force-download'
|
})
|
const filename = decodeURI(file.name)
|
// 创建一个超链接,将文件流赋进去,然后实现这个超链接的单击事件
|
const elink = document.createElement('a')
|
elink.download = filename
|
elink.style.display = 'none'
|
elink.href = URL.createObjectURL(blob)
|
document.body.appendChild(elink)
|
elink.click()
|
URL.revokeObjectURL(elink.href) // 释放URL 对象
|
document.body.removeChild(elink)
|
})
|
},
|
// 表单提交
|
dataFormSubmit() {
|
this.buttonDisable = true
|
if (this.dataForm.id) {
|
const orderDescParam = {
|
id: this.dataForm.id,
|
orderDescription: this.dataForm.orderDescription
|
}
|
updateOrderDescription(orderDescParam)
|
.then((data) => {
|
this.$message.success('修改成功')
|
this.visible = false
|
this.buttonDisable = false
|
this.$emit('refreshDataList', 1)
|
})
|
.catch((error) => {
|
this.buttonDisable = false
|
})
|
} else {
|
addCustomerOrder(this.dataForm)
|
.then((data) => {
|
this.$message.success('添加成功')
|
this.visible = false
|
this.buttonDisable = false
|
this.$emit('refreshDataList', 1)
|
})
|
.catch((error) => {
|
this.buttonDisable = false
|
})
|
}
|
},
|
// 零件选择
|
openPartDialog() {
|
if (
|
this.dataForm.coState === '01partUnCheck' ||
|
this.dataForm.coState === '02technologyUnCheck'
|
) {
|
this.showPart = true
|
} else {
|
this.$message.warning(
|
'订单只有在【零件待选】、【工艺文件待选】状态下,才能进行零件修改'
|
)
|
}
|
},
|
selectPart(part) {
|
if (part) {
|
this.dataForm.partNo = part.partNo
|
this.$refs.dataForm.validateField('partNo', (valid) => {})
|
}
|
},
|
// 全屏
|
fullscreen() {
|
this.isFullScreen = !this.isFullScreen
|
},
|
// 获取字典显示名称并缓存
|
getDicUnit(type) {
|
remote(type).then((response) => {
|
const code = response.data.code
|
if (code === 0) {
|
const _data = response.data.data
|
this.units = _data
|
}
|
})
|
},
|
getManufactureAttrs(type) {
|
remote(type).then((response) => {
|
const code = response.data.code
|
if (code === 0) {
|
const _data = response.data.data
|
this.manufactureAttrs = _data
|
}
|
})
|
},
|
// 打开销售件的弹出框
|
openSalesPartDialog() {
|
if (
|
this.dataForm.coState === '01partUnCheck' ||
|
this.dataForm.coState === '02technologyUnCheck'
|
) {
|
this.customerOrderInfo = {
|
id: this.dataForm.id,
|
unit: this.dataForm.unit,
|
otcUnit: this.dataForm.otcUnit
|
}
|
this.showSalesPart = true
|
} else {
|
this.$message.warning(
|
'订单只有在【零件待选】、【工艺文件待选】状态下,才能进行销售件修改'
|
)
|
}
|
},
|
// 选择销售件后的回调
|
selectSalesPart(row) {
|
this.dataForm.partNo = row.partNo
|
this.dataForm.salesPartNo = row.salesPartNo
|
this.dataForm.salesPartName = row.salesPartName
|
this.dataForm.ifsSalesUnit = row.ifsSalesUnit
|
this.dataForm.ifsConvFactor = row.ifsConvFactor
|
this.dataForm.unit = row.unit
|
},
|
updateOutPutBatch(row) {
|
row.edit = false
|
},
|
delOutPutBatch(row) {},
|
addOutPutBatch() {}
|
}
|
}
|
</script>
|