<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-divider
|
><span style="font-weight:bold;font-size:16px;"
|
>订单主体</span
|
></el-divider
|
>
|
<div>
|
<el-form
|
:model="dataForm"
|
:rules="dataRule"
|
ref="dataForm"
|
label-width="100px"
|
class="l-mes"
|
>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="合同号" prop="contractNo">
|
<el-input
|
v-model="dataForm.contractNo"
|
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"
|
placeholder=""
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="工程名称" prop="entityName">
|
<el-input v-model="dataForm.entityName" placeholder=""></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="事业部" prop="salesDepartment">
|
<el-input
|
v-model="dataForm.salesDepartment"
|
placeholder=""
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="省份" prop="province">
|
<el-input v-model="dataForm.province" placeholder=""></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="业务员" prop="salesMan">
|
<el-input v-model="dataForm.salesMan" placeholder=""></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="正本状态" prop="originalContractStatus">
|
<el-input
|
v-model="dataForm.originalContractStatus"
|
placeholder=""
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="项目性质" prop="isCp">
|
<el-input v-model="dataForm.isCp" placeholder=""></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" placeholder=""></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="合同正本状态" prop="returnStatus">
|
<el-input
|
v-model="dataForm.returnStatus"
|
placeholder=""
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="下单日期" prop="placeOrderDate">
|
<el-date-picker
|
v-model="dataForm.placeOrderDate"
|
style="width: 100%"
|
type="datetime"
|
value-format="yyyy-MM-dd HH:mm:ss"
|
>
|
</el-date-picker>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="工厂下单日期" prop="factoryPlaceOrderDate">
|
<el-date-picker
|
v-model="dataForm.factoryPlaceOrderDate"
|
style="width: 100%"
|
type="datetime"
|
value-format="yyyy-MM-dd HH:mm:ss"
|
>
|
</el-date-picker>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
</div>
|
|
<el-divider>
|
<span style="font-weight:bold;font-size:16px;">订单行</span>
|
</el-divider>
|
<div class="l-mes normal-form">
|
<avue-crud ref="crud"
|
show-hide="false"
|
:option="option"
|
:data="tableData">
|
<template slot="partNo" slot-scope="scope">
|
<el-input v-model="scope.row.partNo" placeholder="查询零件号" readonly>
|
<el-button slot="append" icon="el-icon-search" @click="openPartDialog(scope.row.$index)"></el-button>
|
</el-input>
|
</template>
|
<template slot="otcUnit" slot-scope="scope">
|
<el-select v-model="scope.row.otcUnit" placeholder="请选择单位" style="width: 100%">
|
<el-option
|
v-for="item in units"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value" />
|
</el-select>
|
</template>
|
<template slot="menu" slot-scope="scope">
|
<el-button :disabled="tableData.length<2" @click="delRow(scope.row,scope.$index)"
|
icon="el-icon-circle-close" type="text" size="small">取消</el-button>
|
</template>
|
</avue-crud>
|
</div>
|
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="visible = false">取消</el-button>
|
<el-button
|
type="primary"
|
:disabled="buttonDisable"
|
v-thinclick="`dataFormSubmit`"
|
>确定</el-button
|
>
|
</span>
|
|
<part-dialog
|
:currshowlist.sync="showPart"
|
@listenToPartEvent="selectPart"
|
/>
|
</el-dialog>
|
</template>
|
<style>
|
.normal-form .el-input-group__append,
|
.normal-form .el-input-group__prepend {
|
padding: 0;
|
border-top: none;
|
border-right: none;
|
border-left: none;
|
border-radius: 0;
|
background-color: transparent;
|
}
|
.normal-form .el-input-group__append .el-button,
|
.normal-form .el-input-group__prepend .el-button {
|
padding: 0;
|
width: 25px;
|
border: none !important;
|
line-height: 28px;
|
color: #c0c4cc;
|
margin: -1px 0;
|
}
|
</style>
|
<script>
|
import { addObj } from '@/api/plan/customer'
|
import { remote } from '@/api/admin/dict'
|
import PartDialog from '@/views/common/part.vue'
|
import { validateSixDecimal } from '@/util/validate'
|
import { tableOption } from '@/const/crud/customerOrder/customerOrderForm'
|
|
export default {
|
components: {
|
PartDialog
|
},
|
data() {
|
return {
|
currentSelectRow: null,
|
option: tableOption,
|
tableData: [{
|
"$cellEdit": true,
|
"$index": 0,
|
"partNo": "",
|
"customerPartSpec": "",
|
"manufactureAttr": "",
|
"productName": "",
|
"productType": "",
|
"otcUnit": "",
|
"buyQtyDue": "",
|
"shippingAddress": "",
|
"remark": "",
|
"isTrusted": true
|
}],
|
title: '',
|
isFullScreen: false,
|
visible: false,
|
buttonDisable: false,
|
showPart: false,
|
dataForm: {
|
id: 0,
|
contractNo: null,
|
customerName: null,
|
entityName: null,
|
salesDepartment: null,
|
province: null,
|
salesMan: null,
|
originalContractStatus: null,
|
isCp: null,
|
customerNo: null,
|
returnStatus: null,
|
placeOrderDate: null,
|
factoryPlaceOrderDate: null,
|
customerOrder: {
|
partNo: null,
|
unit: null,
|
buyQtyDue: null,
|
voltAgeClass: null,
|
productName: null,
|
manufactureAttr: 'S',
|
outerColor: null,
|
customerPartSpec: null,
|
printType: null,
|
printingRequirements: null,
|
packageRequire: null,
|
qualityRequire: null,
|
otherProductRequire: null,
|
divisionSystem: null,
|
shippingAddress: null,
|
salesmanName: null,
|
lengthRequirement: null,
|
remark: null
|
}
|
},
|
dataRule: {},
|
units: [],
|
manufactureAttrs: []
|
}
|
},
|
mounted: function() {
|
this.getDicUnit('unit') // 获取单位
|
this.getManufactureAttrs('manufacture_attr_type')
|
},
|
methods: {
|
delRow(row,index) {
|
this.tableData.splice(index,1)
|
},
|
init(id) {
|
this.initDataForm()
|
this.visible = true
|
this.$nextTick(() => {
|
this.title = '新增'
|
})
|
},
|
initDataForm() {
|
this.dataForm.id = 0
|
this.dataForm.contractNo = null
|
this.dataForm.customerName = null
|
this.dataForm.entityName = null
|
this.dataForm.salesDepartment = null
|
this.dataForm.province = null
|
this.dataForm.salesMan = null
|
this.dataForm.originalContractStatus = null
|
this.dataForm.isCp = null
|
this.dataForm.customerNo = null
|
this.dataForm.returnStatus = null
|
this.dataForm.placeOrderDate = null
|
this.dataForm.factoryPlaceOrderDate = null
|
this.dataForm.customerOrder.partNo = null
|
this.dataForm.customerOrder.unit = null
|
this.dataForm.customerOrder.buyQtyDue = null
|
this.dataForm.customerOrder.voltAgeClass = null
|
this.dataForm.customerOrder.productName = null
|
this.dataForm.customerOrder.manufactureAttr = 'S'
|
this.dataForm.customerOrder.outerColor = null
|
this.dataForm.customerOrder.customerPartSpec = null
|
this.dataForm.customerOrder.printType = null
|
this.dataForm.customerOrder.printingRequirements = null
|
this.dataForm.customerOrder.packageRequire = null
|
this.dataForm.customerOrder.qualityRequire = null
|
this.dataForm.customerOrder.otherProductRequire = null
|
this.dataForm.customerOrder.divisionSystem = null
|
this.dataForm.customerOrder.shippingAddress = null
|
this.dataForm.customerOrder.salesmanName = null
|
this.dataForm.customerOrder.lengthRequirement = null
|
this.dataForm.customerOrder.remark = null
|
},
|
// 表单提交
|
dataFormSubmit() {
|
this.buttonDisable = true
|
this.$refs.dataForm.validate((valid) => {
|
if (valid) {
|
addObj(this.dataForm)
|
.then((data) => {
|
this.$message.success('添加成功')
|
this.visible = false
|
this.buttonDisable = false
|
this.$emit('refreshDataList', 1)
|
})
|
.catch((error) => {
|
this.buttonDisable = false
|
})
|
} else {
|
this.buttonDisable = false
|
}
|
})
|
},
|
// 零件选择
|
openPartDialog(index) {
|
this.currentSelectRow = index
|
this.showPart = true
|
},
|
selectPart(part) {
|
if (part) {
|
this.dataForm.customerOrder.partNo = part.partNo
|
const index = this.currentSelectRow
|
this.tableData[index].partNo = part.partNo
|
this.tableData[index].customerPartSpec = part.specs
|
this.tableData[index].productName = part.partName
|
}
|
},
|
// 全屏
|
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
|
}
|
})
|
}
|
}
|
}
|
</script>
|